diff --git a/.agents/feature-matrix.md b/.agents/feature-matrix.md index aeee2e732..4bf3af7e1 100644 --- a/.agents/feature-matrix.md +++ b/.agents/feature-matrix.md @@ -277,7 +277,7 @@ evidence. | `BACKEND-CPU` | production CPU | `PARTIAL` | persistent threadpool + chunked GEMM/row dispatch is 1/3/20-thread bit-identical and TSAN-clean; idle-host performance/RSS gate and compute-in-quant remain open | [backend matrix](backend-matrix.md) | | `BACKEND-ROCM` | ROCm | `INVENTORIED` | source/dispatch spike required; no "one flag" support claim | [backend matrix](backend-matrix.md) | | `BACKEND-MLX` | Apple Metal through MLX | `ACTIVE` | Metal/MLX skeleton ACTIVE: two models (OPT-125m, Qwen3-0.6B) run e2e + pass correctness, native-MSL GEMM, batched command buffers 1.50x (compute-bound at 98%+); optional MLX GEMM provider | [backend matrix](backend-matrix.md) | -| `BACKEND-VULKAN` | Vulkan | `ACTIVE` | **16 NATIVE kernels**; **opt-125m RUNS END TO END, STRICT token-exact 6/6 prompts / 96/96 tokens vs the vLLM 0.25.0 oracle, 0 provider declines** of the CPU backend's 87 registered ops (GEMM both orientations, embedding, greedy argmax, block-paged attention + KV write, QKV split, rotary apply, elementwise/norm/fusion); the other 71 served by the portable reference tier (CPU kernel, unified memory). No model run e2e, no speed number owed | [backend matrix](backend-matrix.md), [campaign spec](specs/vulkan-full-support.md) | +| `BACKEND-VULKAN` | Vulkan | `ACTIVE` | **22 NATIVE kernels**; **opt-125m RUNS END TO END, STRICT token-exact 6/6 prompts / 96/96 tokens vs the vLLM 0.25.0 oracle, 0 provider declines** of the CPU backend's 87 registered ops (GEMM both orientations, embedding, greedy argmax, block-paged attention + KV write, QKV split, rotary apply, elementwise/norm/fusion, and the GDN/conv1d glue: sigmoid gate, gated RMSNorm, state gather/scatter, decode conv1d update, fused post-conv); the other 65 served by the portable reference tier (CPU kernel, unified memory). `kGdnPrefill`/`kGdnDecode`/`kCausalConv1dFwd` deliberately still host-tier; `kRopeCosSinCache` stays host by design (double-precision table, mirrors vLLM). No speed number owed | [backend matrix](backend-matrix.md), [campaign spec](specs/vulkan-full-support.md) | | `BACKEND-XPU` | Intel XPU | `INVENTORIED` | loyal upstream-platform port, runtime absent | [backend matrix](backend-matrix.md) | | `BACKEND-ANE` | encoder/pooling accelerator | `INVENTORIED` | specialized CoreML route only | [backend matrix](backend-matrix.md) | diff --git a/docs/BENCHMARKS.md b/docs/BENCHMARKS.md index c08de4de2..d1de70845 100644 --- a/docs/BENCHMARKS.md +++ b/docs/BENCHMARKS.md @@ -335,7 +335,7 @@ built on it rather than keeping the flattering one. | Memory footprint vs declared workload (`ROAD-V1-MEM`, #83) | **Never measured, and not measurable today**: there is no auto-sizing to compare against, because the KV pool is a hand-typed `--num-blocks`, so "what the run actually needed" has no number | Once M1's `MemoryBudget` lands: predicted-vs-actual bytes per allocation class, then peak footprint ours-auto vs vLLM at its 0.9 default on the same model and config | | Startup latency (cold to first `/health`) | **36.51 s vs vLLM 0.25.0's 221.51 s = 6.07x** (medians of 3, 27B-NVFP4, GB10). PROVISIONAL: 3 of 6 legs contended, repeat killed by a host reboot. [Detail](../.agents/benchmark-record.md) | Uncontended 3-rep re-run on a quiet box | | Speculation depth (`ROAD-V1-D3-SPEC-K`, #81) | **Never measured, MTP is k=1** (our port covers vLLM's k=1 branch only), so no acceptance-vs-depth curve exists | k=2..4 three-way greedy gate, then the c1/c>1 A/B + the per-workload (prose vs code) acceptance-vs-depth curve any dynamic or adaptive depth policy needs | -| Vulkan vs llama.cpp Vulkan (`BENCH-VK-LLAMA`) | **NOT APPLICABLE: nothing measured, claimed or owed.** 16 NATIVE kernels; 71 on the host tier. opt-125m runs e2e token-exact on llvmpipe; no speed measured. [Detail](../.agents/specs/vulkan-full-support.md) | `VK-C` coopmat A/B on Thor (`VT_VULKAN_COOPMAT=0` A/Bs it): **11.1x-32.9x** vs our UNTILED scalar kernel, not vs a competent GEMM. `VK-E`: llama.cpp `-DGGML_VULKAN=ON` at `237ad9b96` on dgx, same GGUF, three columns | +| Vulkan vs llama.cpp Vulkan (`BENCH-VK-LLAMA`) | **NOT APPLICABLE: nothing measured, claimed or owed.** 22 NATIVE kernels (+6 GDN glue, CPU-oracle gated, no speed); 65 host-tier. opt-125m e2e token-exact on llvmpipe. [Detail](../.agents/specs/vulkan-full-support.md) | `VK-C` coopmat A/B on Thor (`VT_VULKAN_COOPMAT=0` A/Bs it): **11.1x-32.9x** vs our UNTILED scalar kernel, not vs a competent GEMM. `VK-E`: llama.cpp `-DGGML_VULKAN=ON` at `237ad9b96` on dgx, same GGUF, three columns | | ROCm (`BACKEND-GATE-ROCM-VLLM` / `-SGLANG`) | **NOT APPLICABLE: no number measured, claimed or owed.** The W0 skeleton registers 1 of 106 ops and its HIP sources have never been compiled by anyone; no AMD hardware here | A contributor's first `-DVLLM_CPP_HIP=ON` build ([#41](https://github.com/mudler/vllm.cpp/issues/41)). Only once a model runs does a same-box vLLM-ROCm oracle become the gate; the floor is vLLM, quant-matched | | SGLang floor arms | Never ran | Both arms of the SGLang comparison | | Parakeet/FastConformer ASR (P1-P4 + ONE-SURFACE fold ROW 1) | **NO number measured, claimed or owed.** Correctness-gated only, CPU f32; the 2026-08-07 surface fold (`vllm_transcribe`, `/v1/audio/transcriptions`) is transcript-byte-identical plumbing, no speed claim. | Floor is `parakeet.cpp`, same clip and box; needs a CUDA provider and a pretrained checkpoint | diff --git a/docs/FEATURES.md b/docs/FEATURES.md index 467829960..bbedc7219 100644 --- a/docs/FEATURES.md +++ b/docs/FEATURES.md @@ -212,8 +212,10 @@ kernels for it. Vulkan **runs a model end to end**: `opt-125m` greedy is STRICT token-exact, 6/6 prompts / 96/96 tokens vs the vLLM 0.25.0 oracle, all nine of that model's ops dispatched natively with **zero provider declines**, on llvmpipe (no Vulkan GPU is -reachable here). Still partial: **16 native kernels**, the other 71 ops fall back -to the portable CPU tier, and quant/MoE/MLA/linear-attention have none at all (MLA +reachable here). Still partial: **22 native kernels**, the other 65 ops fall back +to the portable CPU tier. Six of the 22 are the **GDN / conv1d glue** a GDN hybrid +(Qwen3.6) hits every step, gated against the CPU oracle; the GDN recurrences +themselves are still on the host tier, and quant/MoE/MLA have none at all (MLA is refused at the platform seam, not mis-routed). **No speed number is owed.** Build with `-DVLLM_CPP_VULKAN=ON`; off by default. diff --git a/docs/STATUS.md b/docs/STATUS.md index e6b692110..70c2cbcb8 100644 --- a/docs/STATUS.md +++ b/docs/STATUS.md @@ -410,8 +410,8 @@ Parakeet ASR (2026-08-07): *CPU-correct, ON THE ONE SURFACE (ROW 1)*. Ids exact ## Not supported yet LoRA (W1 CPU runtime brick landed; not yet usable end-to-end), multi-GPU, -Vulkan (opt-125m exact, GEMV 1.8x, -decode 8.59->91.7 t/s (10.7x), 1.75x off llama.cpp; qwen3_5 host-ptr bug fixed (#125), unrun off-CUDA +Vulkan (opt-125m exact, GEMV 1.8x; 22 native, +6 GDN glue gated, +recurrences host-tier; qwen3_5 host-ptr fixed (#125), unrun off-CUDA [campaign](../.agents/specs/vulkan-full-support.md)), ROCm (W0 skeleton: backend, platform, 1 of 106 ops; **its HIP sources have never been compiled by anyone** — weaker than "build-supported", since no AMD board is here; diff --git a/src/vt/vulkan/shaders/vt_causal_conv1d_update.comp b/src/vt/vulkan/shaders/vt_causal_conv1d_update.comp new file mode 100644 index 000000000..415401ddb --- /dev/null +++ b/src/vt/vulkan/shaders/vt_causal_conv1d_update.comp @@ -0,0 +1,94 @@ +#version 450 +// vt::CausalConv1dUpdate — the GDN decode-step depthwise causal conv +// (gdn-semantics.md §3, `causal_conv1d_update` at seqlen == 1): read the OLD +// K-1 taps, emit one output token, then roll the window left and append the RAW +// x sample. +// Ported 1:1 from src/vt/cpu/cpu_ops.cpp:1081-1127 CausalConv1dUpdateKernel. +// +// ONE INVOCATION PER (token, channel), which is exactly the CPU kernel's +// row-chunking unit (cpu_ops.cpp:1096 `ForRows(batch * c_dim, ...)`) and is what +// makes the read-old-then-roll safe WITHOUT any barrier: each (bt, c) pair owns +// its own conv_state row slice and its own output element, so the roll at the end +// races with nothing. Batch rows map to DISTINCT cache slots by contract +// (src/vt/ops.cpp:1687-1696), so two invocations never share a row. +// +// THE STATE ROW IS f32 AND BOUND THROUGH THE 32-BIT VIEW ONLY. On this backend +// conv_state is f32 by contract (src/vt/ops.cpp: bf16 conv_state is CUDA-only), +// so a dtype-erased load would be a branch that can never take its other side. +// +// THE ROW MAY BE PHYSICALLY WIDER THAN THE WINDOW. For spec-decode rollback the +// row is widened to (K-1) + num_spec taps; the non-spec update operates on the +// LEADING K-1 taps at the row's PHYSICAL stride `state_len` +// (cpu_ops.cpp:1088-1092, mirroring vLLM causal_conv1d.py:66-69). At num_spec == 0 +// state_len == width and the addressing is byte-identical. +// +// A NEGATIVE conv_state_index IS NOT AN ERROR: it is upstream's NULL block and +// the token is SKIPPED (cpu_ops.cpp:1103), leaving both the output element and +// the cache row untouched. +// +// ACCUMULATION ORDER IS THE CPU'S: bias, then taps j = 0..K-2 in order, then the +// x term. Kept sequential on one invocation rather than tree-reduced across +// lanes precisely so this kernel stays in the bit-comparable tier with its +// reference instead of only the NMSE tier. +#extension GL_GOOGLE_include_directive : require +#include "vt_common.glsl" + +layout(local_size_x = 128, local_size_y = 1, local_size_z = 1) in; + +layout(binding = 0) buffer Ob32 { uint v[]; } O32; +layout(binding = 1) buffer Ob16 { uint16_t v[]; } O16; +layout(binding = 2) readonly buffer Xb32 { uint v[]; } X32; +layout(binding = 3) readonly buffer Xb16 { uint16_t v[]; } X16; +layout(binding = 4) readonly buffer Wb32 { uint v[]; } W32; +layout(binding = 5) readonly buffer Wb16 { uint16_t v[]; } W16; +// bias; aliases the weight when the caller passed none (p.has_bias == 0). +layout(binding = 6) readonly buffer Bb32 { uint v[]; } B32; +layout(binding = 7) readonly buffer Bb16 { uint16_t v[]; } B16; +layout(binding = 8) buffer Sb { uint v[]; } ST; // conv_state, f32 +// conv_state_indices, i32; aliases conv_state when absent (p.has_idx == 0). +layout(binding = 9) readonly buffer Ib { uint v[]; } IDX; + +layout(push_constant) uniform Params { + uint batch; // x.shape[0] + uint c_dim; // x.shape[1] + uint k; // weight.shape[1] + uint width; // k - 1 + uint state_len; // conv_state.shape[2] — the PHYSICAL row width + uint x_rs; // x.stride[0], in elements (x may be a padded-row view) + uint n_state_rows; // conv_state.shape[0], for the bounds guard + uint has_bias, has_idx, silu; + uint out_dt, x_dt, w_dt, bias_dt; + uint out_off, x_off, w_off, bias_off, st_off, idx_off; +} p; + +void main() { + uint gid = gl_GlobalInvocationID.x; + if (gid >= p.batch * p.c_dim) { return; } + uint bt = gid / p.c_dim; + uint c = gid % p.c_dim; + + uint srow_row = bt; + if (p.has_idx != 0u) { + int ci = int(IDX.v[(p.idx_off >> 2) + bt]); + if (ci < 0) { return; } // NULL block, skip + if (uint(ci) >= p.n_state_rows) { return; } // device analogue of the + srow_row = uint(ci); // host-side range VT_CHECK + } + // cpu_ops.cpp:1109-1111 — raw pointer arithmetic over the f32 state, so the + // row base is srow_row * c_dim * state_len + c * state_len. + uint srow = (p.st_off >> 2) + (srow_row * p.c_dim + c) * p.state_len; + + float xt = VT_LOAD(X32, X16, p.x_dt, p.x_off, bt * p.x_rs + c); + float acc = p.has_bias != 0u ? VT_LOAD(B32, B16, p.bias_dt, p.bias_off, c) : 0.0; + for (uint j = 0u; j < p.width; ++j) { + acc += VT_LOAD(W32, W16, p.w_dt, p.w_off, c * p.k + j) * uintBitsToFloat(ST.v[srow + j]); + } + acc += VT_LOAD(W32, W16, p.w_dt, p.w_off, c * p.k + p.width) * xt; + // Silu spelled `acc / (1 + exp(-acc))`, the CPU reference's spelling + // (cpu_ops.cpp:916) — `acc * sigmoid(acc)` is a different rounding. + VT_STORE(O32, O16, p.out_dt, p.out_off, bt * p.c_dim + c, + p.silu != 0u ? (acc / (1.0 + exp(-acc))) : acc); + + for (uint j = 0u; j + 1u < p.width; ++j) { ST.v[srow + j] = ST.v[srow + j + 1u]; } + if (p.width > 0u) { ST.v[srow + p.width - 1u] = floatBitsToUint(xt); } +} diff --git a/src/vt/vulkan/shaders/vt_gdn_post_conv.comp b/src/vt/vulkan/shaders/vt_gdn_post_conv.comp new file mode 100644 index 000000000..70630a7ca --- /dev/null +++ b/src/vt/vulkan/shaders/vt_gdn_post_conv.comp @@ -0,0 +1,136 @@ +#version 450 +// vt::GdnPostConv — the fused GDN post-convolution preamble: split the mixed +// q|k|v conv output, L2-normalize q and k per head, copy v, and derive the decay +// g and the gate beta from the raw a/b projections. ONE launch in place of +// GdnConvSplit + L2Norm(q) + L2Norm(k) + GdnGBeta. +// Ported 1:1 from src/vt/cpu/cpu_ops.cpp:2337-2417 GdnPostConvKernel; the fusion +// itself mirrors upstream +// vllm/model_executor/layers/fla/ops/fused_gdn_prefill_post_conv.py +// `_fused_post_conv_kernel`, whose grid is (L, H + HV). +// +// THE GRID IS UPSTREAM'S, and that is what makes one dispatch cover four +// different shapes of work: workgroup (i, j) with j < Hk does the q/k L2-norm for +// head j of token i, and j >= Hk does the v copy AND the g/beta gating for head +// j - Hk. `j` is derived from gl_WorkGroupID, so it is UNIFORM across the +// workgroup — which is required, because both branches contain barriers +// (vt_tg_sum) and a barrier reached by only part of a workgroup is undefined. +// +// FOUR OPERANDS ARE BOUND THROUGH THE 32-BIT VIEW ONLY. g_out, beta_out, a_log +// and dt_bias are f32 BY CONTRACT (src/vt/ops.cpp:3459-3463), so a dtype-erased +// pair of bindings would be a branch that can never take its other side; the +// three axes that genuinely vary — conv, the q/k/v triple, and the a/b pair — +// are specialization constants. +// +// SOFTPLUS IS COMPUTED WITH A REAL log1p. GLSL has no log1p and +// `log(1.0 + exp(x))` loses the whole value once exp(x) drops below 2^-24: the +// CPU reference is `std::log1p(std::exp(x))` (cpu_ops.cpp:2410) and a shader that +// returned 0 where the oracle returns 9e-14 would be wrong in the only regime +// this branch exists for. The identity below is the standard cancellation-free +// form (Goldberg): scale log(u) by y/(u-1), which is exactly 1 in the regime +// where u-1 == y and corrects the rounding of `1 + y` otherwise. +// +// The reduction is a workgroup tree, so the L2 sum-of-squares does NOT share the +// CPU's accumulation order: NMSE tier, like every other reducing kernel here. +// The scale is `1.0 / sqrt(ss + eps)` — a PLAIN sum of squares, not a mean +// (gdn-semantics.md §4) — and not `inversesqrt` +// (vt_common.glsl § DELIBERATE DIVERGENCES). +#extension GL_GOOGLE_include_directive : require +#include "vt_common.glsl" + +layout(local_size_x = 128, local_size_y = 1, local_size_z = 1) in; + +layout(binding = 0) readonly buffer Cb32 { uint v[]; } C32; // conv +layout(binding = 1) readonly buffer Cb16 { uint16_t v[]; } C16; +layout(binding = 2) buffer Qb32 { uint v[]; } Q32; +layout(binding = 3) buffer Qb16 { uint16_t v[]; } Q16; +layout(binding = 4) buffer Kb32 { uint v[]; } K32; +layout(binding = 5) buffer Kb16 { uint16_t v[]; } K16; +layout(binding = 6) buffer Vb32 { uint v[]; } V32; +layout(binding = 7) buffer Vb16 { uint16_t v[]; } V16; +layout(binding = 8) readonly buffer Ab32 { uint v[]; } A32; // araw +layout(binding = 9) readonly buffer Ab16 { uint16_t v[]; } A16; +layout(binding = 10) readonly buffer Bb32 { uint v[]; } B32; // braw +layout(binding = 11) readonly buffer Bb16 { uint16_t v[]; } B16; +layout(binding = 12) buffer Gb { uint v[]; } G; // g_out, f32 +layout(binding = 13) buffer Eb { uint v[]; } BETA; // beta_out, f32 +layout(binding = 14) readonly buffer Lb { uint v[]; } ALOG; // a_log, f32 +layout(binding = 15) readonly buffer Tb { uint v[]; } DTB; // dt_bias, f32 + +layout(constant_id = 0) const uint VT_PC_CONV_DT = VT_DT_F32; +layout(constant_id = 1) const uint VT_PC_QKV_DT = VT_DT_F32; +layout(constant_id = 2) const uint VT_PC_AB_DT = VT_DT_F32; + +layout(push_constant) uniform Params { + uint t; + uint hk, dk; + uint hv, dv; + uint key_dim; // hk * dk + uint value_dim; // hv * dv + uint conv_dim; // 2 * key_dim + value_dim + uint a_rs, b_rs; // araw/braw stride[0], in elements (may be padded) + uint conv_off, q_off, k_off, v_off, a_off, b_off; + uint g_off, beta_off, alog_off, dtb_off; + float eps; +} p; + +// log1p(y) for y >= 0, cancellation-free. See the header note. +float vt_log1p(float y) { + float u = 1.0 + y; + return u == 1.0 ? y : log(u) * (y / (u - 1.0)); +} + +void main() { + uint tid = gl_LocalInvocationID.x; + uint lanes = p.hk + p.hv; + uint i = gl_WorkGroupID.x / lanes; // token + uint j = gl_WorkGroupID.x % lanes; // head slot, UNIFORM per workgroup + uint row = i * p.conv_dim; + + if (j < p.hk) { + // q/k: split then L2-norm over Dk, per head (cpu_ops.cpp:2350-2366). + uint h = j; + uint qbase = row + h * p.dk; + uint kbase = row + p.key_dim + h * p.dk; + float qp = 0.0; + float kp = 0.0; + for (uint e = tid; e < p.dk; e += VT_TG) { + float qv = VT_LOAD(C32, C16, VT_PC_CONV_DT, p.conv_off, qbase + e); + float kv = VT_LOAD(C32, C16, VT_PC_CONV_DT, p.conv_off, kbase + e); + qp += qv * qv; + kp += kv * kv; + } + float qss = vt_tg_sum(tid, qp); + float kss = vt_tg_sum(tid, kp); + float qinv = 1.0 / sqrt(qss + p.eps); + float kinv = 1.0 / sqrt(kss + p.eps); + for (uint e = tid; e < p.dk; e += VT_TG) { + uint o = (i * p.hk + h) * p.dk + e; + VT_STORE(Q32, Q16, VT_PC_QKV_DT, p.q_off, o, + VT_LOAD(C32, C16, VT_PC_CONV_DT, p.conv_off, qbase + e) * qinv); + VT_STORE(K32, K16, VT_PC_QKV_DT, p.k_off, o, + VT_LOAD(C32, C16, VT_PC_CONV_DT, p.conv_off, kbase + e) * kinv); + } + return; + } + + uint h = j - p.hk; + // v: plain copy of this head's slice (cpu_ops.cpp:2368-2370). + for (uint e = tid; e < p.dv; e += VT_TG) { + VT_STORE(V32, V16, VT_PC_QKV_DT, p.v_off, i * p.value_dim + h * p.dv + e, + VT_LOAD(C32, C16, VT_PC_CONV_DT, p.conv_off, + row + 2u * p.key_dim + h * p.dv + e)); + } + // g/beta from a/b + A_log/dt_bias (gdn-semantics.md §6, cpu_ops.cpp:2372-2381). + // One element per head, so one lane does it; the rest of the workgroup is + // already busy with the v copy above. + if (tid == 0u) { + uint idx = i * p.hv + h; + float x = VT_LOAD(A32, A16, VT_PC_AB_DT, p.a_off, i * p.a_rs + h) + + uintBitsToFloat(DTB.v[(p.dtb_off >> 2) + h]); + float sp = x > 20.0 ? x : vt_log1p(exp(x)); // softplus, threshold 20 + float alog = uintBitsToFloat(ALOG.v[(p.alog_off >> 2) + h]); + G.v[(p.g_off >> 2) + idx] = floatBitsToUint(-exp(alog) * sp); + float braw = VT_LOAD(B32, B16, VT_PC_AB_DT, p.b_off, i * p.b_rs + h); + BETA.v[(p.beta_off >> 2) + idx] = floatBitsToUint(vt_sigmoid(braw)); + } +} diff --git a/src/vt/vulkan/shaders/vt_gdn_state_gather.comp b/src/vt/vulkan/shaders/vt_gdn_state_gather.comp new file mode 100644 index 000000000..899f16965 --- /dev/null +++ b/src/vt/vulkan/shaders/vt_gdn_state_gather.comp @@ -0,0 +1,81 @@ +#version 450 +// vt::GdnStateGather — pull the per-request GDN conv/SSM state rows named by +// state_idx out of the paged cache into a compact f32 working buffer, zeroing +// the rows whose request has no initial state. +// Ported 1:1 from src/vt/cpu/cpu_ops.cpp:1666-1707 GdnStateGatherKernel. +// +// ONE INDEXING PATH, NOT TWO. The CPU kernel splits into a "contiguous fast +// path" (cache_inner == work_inner) and a widened-cache path that walks the +// `mid` channels with the cache row's PHYSICAL stride. The widened form is a +// strict generalization — at cache_inner == work_inner it computes the same +// addresses, because mid * work_inner == work_row — so this shader implements +// only that one and the split disappears. The fast path exists on the CPU to +// avoid a division in the inner loop; here the division is already paid by the +// flat gid decomposition. +// +// THE CPU'S RANGE CHECK CANNOT BE REPRODUCED AS A THROW. cpu_ops.cpp:1671-1675 +// VT_CHECKs every index against cache.shape[0] before copying, which needs a +// HOST read of state_idx — and on this backend a host read of device memory is +// only correct after draining the dispatch batch (vulkan_context.h § FlushBatch), +// so validating that way would serialize every call. The device analogue is the +// bounds guard below: an out-of-range or negative index makes the invocation +// write NOTHING, which is the safe direction (a stale working row) rather than a +// wild write into another request's cache page. n_cache_rows travels in the push +// constants precisely so the guard is a real bound and not a formality. +#extension GL_GOOGLE_include_directive : require +#include "vt_common.glsl" + +layout(local_size_x = 128, local_size_y = 1, local_size_z = 1) in; + +layout(binding = 0) buffer Wb32 { uint v[]; } WK32; // working (f32 out) +layout(binding = 1) buffer Wb16 { uint16_t v[]; } WK16; +layout(binding = 2) readonly buffer Cb32 { uint v[]; } C32; // cache +layout(binding = 3) readonly buffer Cb16 { uint16_t v[]; } C16; +layout(binding = 4) readonly buffer Ib { uint v[]; } IDX; // state_idx, i32 +// has_initial_state, i8 OR i32, read through the 32-bit view. Aliases IDX when +// the caller passed none (p.his_mode == 0) — a descriptor a shader statically +// uses must be valid even on the path that never reads it, the same arrangement +// vt_rms_norm uses for its optional residual. +layout(binding = 5) readonly buffer Hb { uint v[]; } HIS; + +layout(push_constant) uniform Params { + uint rows; // state_idx.shape[0] + uint work_row; // working.Numel() / rows + uint work_inner; // working.shape[rank-1] + uint cache_inner; // cache.shape[rank-1] (>= work_inner) + uint cache_row; // mid * cache_inner — the PHYSICAL cache row width + uint n_cache_rows; // cache.shape[0], for the bounds guard + uint work_dt, cache_dt; + uint his_mode; // 0 = absent, 1 = i8, 2 = i32 + uint work_off, cache_off, idx_off, his_off; +} p; + +void main() { + uint gid = gl_GlobalInvocationID.x; + if (gid >= p.rows * p.work_row) { return; } + uint r = gid / p.work_row; + uint e = gid % p.work_row; + + int ci = int(IDX.v[(p.idx_off >> 2) + r]); + if (ci < 0 || uint(ci) >= p.n_cache_rows) { return; } // see the header note + + bool keep = true; + if (p.his_mode == 1u) { + // i8: byte r of the buffer. Indexing the 32-bit view by BYTE ADDRESS is + // exact here because every buffer is bound WHOLE at offset 0 + // (vt_common.glsl § STORAGE MODEL), so no 4-byte alignment of his_off is + // assumed — an i8 [N] tensor may legitimately start at any byte. + uint byte_addr = p.his_off + r; + keep = ((HIS.v[byte_addr >> 2] >> (8u * (byte_addr & 3u))) & 0xFFu) != 0u; + } else if (p.his_mode == 2u) { + keep = HIS.v[(p.his_off >> 2) + r] != 0u; + } + + uint m = e / p.work_inner; // channel / head within the row + uint ee = e % p.work_inner; // element within the channel's sub-window + uint src = uint(ci) * p.cache_row + m * p.cache_inner + ee; + uint dst = r * p.work_row + e; + + VT_STORE(WK32, WK16, p.work_dt, p.work_off, dst, + keep ? VT_LOAD(C32, C16, p.cache_dt, p.cache_off, src) : 0.0); +} diff --git a/src/vt/vulkan/shaders/vt_gdn_state_scatter.comp b/src/vt/vulkan/shaders/vt_gdn_state_scatter.comp new file mode 100644 index 000000000..4f71a0ca8 --- /dev/null +++ b/src/vt/vulkan/shaders/vt_gdn_state_scatter.comp @@ -0,0 +1,56 @@ +#version 450 +// vt::GdnStateScatter — write the compact f32 working state rows back into the +// paged GDN cache slots named by state_idx. The inverse of vt_gdn_state_gather. +// Ported 1:1 from src/vt/cpu/cpu_ops.cpp:1709-1745 GdnStateScatterKernel. +// +// Same two structural notes as the gather, for the same reasons: +// * ONE indexing path. The CPU's contiguous fast path is the widened path with +// cache_inner == work_inner, so only the general form is written here. +// * the CPU's per-index VT_CHECK against cache.shape[0] would need a host read +// of device memory, which on this backend is only correct after draining the +// dispatch batch; the device analogue is the bounds guard, and here it +// matters MORE than in the gather — this kernel WRITES the cache, so an +// unguarded out-of-range index would corrupt another request's page rather +// than merely produce a stale local row. +// +// Note there is no has_initial_state here and no zeroing: a scatter always +// writes what the working buffer holds (cpu_ops.cpp:1725-1743). +#extension GL_GOOGLE_include_directive : require +#include "vt_common.glsl" + +layout(local_size_x = 128, local_size_y = 1, local_size_z = 1) in; + +layout(binding = 0) buffer Cb32 { uint v[]; } C32; // cache (dest) +layout(binding = 1) buffer Cb16 { uint16_t v[]; } C16; +layout(binding = 2) readonly buffer Wb32 { uint v[]; } WK32; // working (f32 src) +layout(binding = 3) readonly buffer Wb16 { uint16_t v[]; } WK16; +layout(binding = 4) readonly buffer Ib { uint v[]; } IDX; // state_idx, i32 + +layout(push_constant) uniform Params { + uint rows; + uint work_row; + uint work_inner; + uint cache_inner; + uint cache_row; + uint n_cache_rows; + uint work_dt, cache_dt; + uint cache_off, work_off, idx_off; +} p; + +void main() { + uint gid = gl_GlobalInvocationID.x; + if (gid >= p.rows * p.work_row) { return; } + uint r = gid / p.work_row; + uint e = gid % p.work_row; + + int ci = int(IDX.v[(p.idx_off >> 2) + r]); + if (ci < 0 || uint(ci) >= p.n_cache_rows) { return; } // see the header note + + uint m = e / p.work_inner; + uint ee = e % p.work_inner; + uint src = r * p.work_row + e; + uint dst = uint(ci) * p.cache_row + m * p.cache_inner + ee; + + VT_STORE(C32, C16, p.cache_dt, p.cache_off, dst, + VT_LOAD(WK32, WK16, p.work_dt, p.work_off, src)); +} diff --git a/src/vt/vulkan/shaders/vt_rms_norm_gated.comp b/src/vt/vulkan/shaders/vt_rms_norm_gated.comp new file mode 100644 index 000000000..de7970b2e --- /dev/null +++ b/src/vt/vulkan/shaders/vt_rms_norm_gated.comp @@ -0,0 +1,77 @@ +#version 450 +// vt::RmsNormGated — the GDN output norm (gdn-semantics.md §5, +// norm_before_gate=True, group_size=None): +// out = x * rsqrt(mean(x^2) + eps) * w * act(gate), act = silu | sigmoid +// Ported 1:1 from src/vt/cpu/cpu_ops.cpp:1210-1235 RmsNormGatedKernel. +// +// SILU IS SPELLED `z / (1 + exp(-z))`, not `z * sigmoid(z)`. That is the CPU +// reference's spelling (cpu_ops.cpp:916 `Silu`) and the two differ by a rounding +// step, so writing the other one would put this kernel a ulp off its own oracle +// for no reason. +// +// THE GATE MAY BE A PADDED-ROW rank-3 view. On the merged-qkvz path the gate is +// the `z` slice of one fused projection viewed as [T,Hv,D], so its token stride +// exceeds Hv*D while the inner [Hv,D] block stays contiguous +// (src/vt/ops.cpp:1798-1810). The CPU kernel maps super-row i to +// (token = i / gate_group, head = i % gate_group) and honours that outer stride; +// a contiguous rank-2 gate degenerates to gate_group == 1 and +// gate_outer == d, which reproduces the flat indexing byte-for-byte. +// +// Dispatch shape: ONE WORKGROUP PER ROW with a shared-memory tree reduction, +// exactly like vt_rms_norm (llama.cpp `vulkan-shaders/rms_norm.comp:37-83` +// @ 237ad9b96). The tree changes the ACCUMULATION ORDER of the mean-square +// relative to the CPU's sequential loop, so this kernel is in the NMSE tier, not +// the bit-exact tier — the same trade vt_rms_norm already makes. The scale is +// `1.0 / sqrt(...)`, NOT `inversesqrt` (vt_common.glsl § DELIBERATE DIVERGENCES). +#extension GL_GOOGLE_include_directive : require +#include "vt_common.glsl" + +layout(local_size_x = 128, local_size_y = 1, local_size_z = 1) in; + +layout(binding = 0) readonly buffer Xb32 { uint v[]; } X32; +layout(binding = 1) readonly buffer Xb16 { uint16_t v[]; } X16; +layout(binding = 2) readonly buffer Zb32 { uint v[]; } Z32; +layout(binding = 3) readonly buffer Zb16 { uint16_t v[]; } Z16; +layout(binding = 4) readonly buffer Wb32 { uint v[]; } W32; +layout(binding = 5) readonly buffer Wb16 { uint16_t v[]; } W16; +layout(binding = 6) buffer Db32 { uint v[]; } D32; +layout(binding = 7) buffer Db16 { uint16_t v[]; } D16; + +layout(push_constant) uniform Params { + uint rows; // x.Numel() / d (T for rank-2, T*Hv for rank-3) + uint d; // the normalized (innermost) dim + uint x_dt, z_dt, w_dt, out_dt; + uint sigmoid_gate; // 0 = silu, 1 = sigmoid (RmsNormGatedArgs::sigmoid_gate) + uint gate_group; // gate.rank == 3 ? gate.shape[1] : 1 + uint gate_outer; // gate.stride[0], in ELEMENTS + uint x_off, z_off, w_off, out_off; + float eps; +} p; + +void main() { + uint row = gl_WorkGroupID.x; + uint tid = gl_LocalInvocationID.x; + uint rbase = row * p.d; + + float partial = 0.0; + for (uint j = tid; j < p.d; j += VT_TG) { + float v = VT_LOAD(X32, X16, p.x_dt, p.x_off, rbase + j); + partial += v * v; + } + float sumsq = vt_tg_sum(tid, partial); + float inv = 1.0 / sqrt(sumsq / float(p.d) + p.eps); + + // cpu_ops.cpp:1228 — (i / gate_group) * gate_outer + (i % gate_group) * d. + uint gbase = (row / p.gate_group) * p.gate_outer + (row % p.gate_group) * p.d; + + for (uint j = tid; j < p.d; j += VT_TG) { + float z = VT_LOAD(Z32, Z16, p.z_dt, p.z_off, gbase + j); + float act = p.sigmoid_gate != 0u ? (1.0 / (1.0 + exp(-z))) // Sigmoid + : (z / (1.0 + exp(-z))); // Silu + // Multiplication ORDER matches cpu_ops.cpp:1232 left to right: + // ((x * inv) * w) * act. + float xv = VT_LOAD(X32, X16, p.x_dt, p.x_off, rbase + j); + float wj = VT_LOAD(W32, W16, p.w_dt, p.w_off, j); + VT_STORE(D32, D16, p.out_dt, p.out_off, rbase + j, xv * inv * wj * act); + } +} diff --git a/src/vt/vulkan/shaders/vt_sigmoid_gate_bf16.comp b/src/vt/vulkan/shaders/vt_sigmoid_gate_bf16.comp new file mode 100644 index 000000000..042959fde --- /dev/null +++ b/src/vt/vulkan/shaders/vt_sigmoid_gate_bf16.comp @@ -0,0 +1,46 @@ +#version 450 +// vt::SigmoidGateBf16 — out[i] = bf16(attn[i] * sigmoid(gate[i])), the sigmoid +// output-gate applied to the attention result before o_proj. +// Ported 1:1 from src/vt/cpu/cpu_ops.cpp:2272-2279 SigmoidGateBf16Kernel, whose +// body is `StoreF32(out, i, LoadF32(attn, i) * Sigmoid(LoadF32(gate, i)))` with +// Sigmoid = 1/(1+exp(-x)) (cpu_ops.cpp:2222). vt_sigmoid in vt_common.glsl is +// that expression verbatim. +// +// TWO OF THE THREE DTYPES ARE FIXED BY THE OP CONTRACT, not by this shader: +// `out` is bf16 and `gate` is f32 (src/vt/ops.cpp:3327-3334 — the sigmoid INPUT +// must not be rounded). Only `attn` varies (f32 from the fallback attention, +// bf16 from the FA-2 prefill path), so it is the single specialization axis and +// the other two are compile-time constants here. Writing them as constants is +// not a shortcut: it means a caller that violated the contract would fail the +// host-side VT_CHECK rather than silently get a shader that quietly obliged. +// +// Flat: one invocation per element, the same shape as vt_relu / vt_silu_and_mul. +#extension GL_GOOGLE_include_directive : require +#include "vt_common.glsl" + +layout(local_size_x = 128, local_size_y = 1, local_size_z = 1) in; + +layout(binding = 0) readonly buffer Ab32 { uint v[]; } A32; +layout(binding = 1) readonly buffer Ab16 { uint16_t v[]; } A16; +layout(binding = 2) readonly buffer Gb32 { uint v[]; } G32; +layout(binding = 3) readonly buffer Gb16 { uint16_t v[]; } G16; +layout(binding = 4) buffer Ob32 { uint v[]; } O32; +layout(binding = 5) buffer Ob16 { uint16_t v[]; } O16; + +// The attention operand's storage dtype (VT_DT_F32 or VT_DT_BF16). One module +// serves both; the branch folds away at pipeline creation. +layout(constant_id = 0) const uint VT_SG_ATTN_DT = VT_DT_F32; + +layout(push_constant) uniform Params { + uint n; + uint a_off, g_off, o_off; +} p; + +void main() { + uint i = gl_GlobalInvocationID.x; + if (i >= p.n) { return; } + float a = VT_LOAD(A32, A16, VT_SG_ATTN_DT, p.a_off, i); + float g = VT_LOAD(G32, G16, VT_DT_F32, p.g_off, i); + // Round to bf16 exactly ONCE, on store, like the CPU reference's StoreF32. + VT_STORE(O32, O16, VT_DT_BF16, p.o_off, i, a * vt_sigmoid(g)); +} diff --git a/src/vt/vulkan/vulkan_context.cpp b/src/vt/vulkan/vulkan_context.cpp index 5f2fb3db1..406e74dbf 100644 --- a/src/vt/vulkan/vulkan_context.cpp +++ b/src/vt/vulkan/vulkan_context.cpp @@ -636,10 +636,35 @@ VulkanContext& VulkanContext::Get() { void* VulkanContext::AllocBuffer(size_t bytes, void** out_buffer, void** out_memory) { const VulkanApi& vk = Api(); auto device = Unpack(device_); - // A zero-length VkBuffer is invalid; round up so a 0-byte request still yields - // a distinct freeable pointer (the CPU backend's contract, which vt::StepArena - // relies on). Same treatment as the Metal skeleton. - const VkDeviceSize len = bytes == 0 ? 1 : static_cast(bytes); + // ROUNDED UP TO A WHOLE 32-BIT WORD, and that is a CORRECTNESS requirement of + // this backend's storage model, not tidiness. + // + // Every operand is bound as a `uint32_t[]` view (and, for float operands, also + // as a `uint16_t[]` one) over the WHOLE buffer — vt_common.glsl § STORAGE + // MODEL. An array of `uint` over a buffer of N bytes has floor(N/4) elements, + // so a buffer whose length is not a multiple of 4 has a TRUNCATED 32-bit view + // and its last partial word is unreachable. Under robustBufferAccess that read + // returns zero; without it, it is undefined. Either way it is silent. + // + // MEASURED (BACKEND-VULKAN-GDN): a 3-byte i8 `has_initial_state[3]` — the GDN + // per-request "does this row have a prior state" flag, which the gather shader + // reads byte-wise through the 32-bit view precisely so it need not require + // VK_KHR_8bit_storage — produced a 0-element view, every flag read back as + // false, and the gather ZEROED rows it should have copied. The gate caught it + // as a memcmp mismatch against the CPU oracle. + // + // Nothing before that read a non-multiple-of-4 buffer through the 32-bit view + // (f32/i32/i64 lengths are multiples of 4 by construction, and 16-bit dtypes go + // through the 16-bit view), which is why the skeleton lived with it. The fix + // belongs HERE rather than in one shader: any future byte- or word-granular + // read of a small operand would hit the same edge. + // + // A zero-length VkBuffer is also invalid, and the rounding covers that too: a + // 0-byte request still yields a distinct freeable pointer, which is the CPU + // backend's contract and what vt::StepArena relies on. Only the BUFFER LENGTH + // grows; the mapped pointer and every byte the caller wrote are untouched, so + // Copy/Memset stay bit-exact. + const VkDeviceSize len = bytes == 0 ? 4 : static_cast((bytes + 3) & ~size_t{3}); VkBufferCreateInfo bci{}; bci.sType = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO; diff --git a/src/vt/vulkan/vulkan_ops.cpp b/src/vt/vulkan/vulkan_ops.cpp index dfcd14cdb..f16b37c0d 100644 --- a/src/vt/vulkan/vulkan_ops.cpp +++ b/src/vt/vulkan/vulkan_ops.cpp @@ -12,11 +12,18 @@ // It matches the Metal skeleton's set exactly, so the two backends are directly // comparable through tests/vt/test_backend_cross_device.cpp. // -// WHAT IS STILL STUBBED: everything else. `kMatmul`/`kMatmulBT`, -// `kPagedAttention`, `kReshapeAndCache`, the whole quant tier and the sampler -// ops are NOT registered, so `vt::GetOp` throws its normal "no kernel for op N -// on device type 3" for them (src/vt/ops.cpp:104-111 — a partial backend is a -// supported, tested state). NO MODEL RUNS ON THIS BACKEND. +// SINCE THEN this TU has grown the dense path (both GEMM orientations plus the +// decode GEMV and coopmat tactics), the attention block (paged attention, the KV +// write, the QKV split, the rotary apply), the two ends of the model (embedding +// and greedy argmax), and — this row, BACKEND-VULKAN-GDN — six of the GDN / +// conv1d glue ops that Qwen3.6-27B needs. +// +// WHAT IS STILL NOT REGISTERED: the quant tier, MoE, the sampler beyond greedy +// argmax, the GDN recurrences themselves, and the ops listed in the +// BACKEND-VULKAN-GDN block comment further down. None of them THROW any more: +// since the portable reference tier landed, a missed GetOp on this +// unified-memory device installs the CPU kernel as a priority -1000 provider, so +// an unregistered op is CORRECT AND SLOW rather than fatal. // // BINDING MODEL: every tensor operand occupies TWO consecutive descriptor // bindings onto the SAME VkBuffer — a uint32_t view and a uint16_t view — and @@ -82,6 +89,20 @@ class Binder { return r.offset; } + // A tensor bound through the uint32_t view ONLY, for BYTE-granular reads: an + // i8 operand (GDN's has_initial_state) may legitimately start at any byte, so + // AddU32Only's 4-byte assertion would reject a valid tensor. The shader + // recovers the byte with a shift, which is exact because every buffer is bound + // WHOLE at offset 0 and the returned offset is therefore a plain byte address + // into it (vt_common.glsl § STORAGE MODEL). Deliberately NOT VK_KHR_8bit_storage: + // this backend does not probe for it, and requiring it would narrow the set of + // devices the backend registers on for the sake of one boolean array. + uint32_t AddByteView(const Tensor& t, const char* what) { + Resolved r = Resolve(t.data, what); + buffers_.push_back(r.buffer); + return r.offset; + } + const void* const* data() const { return buffers_.data(); } uint32_t count() const { return static_cast(buffers_.size()); } @@ -154,6 +175,38 @@ struct FcParams { uint32_t t, h, nsteps, x_dt, w_dt, res_dt, out_dt, x_off, w_off, res_off, out_off; float eps; }; +// --- The GDN / conv1d family (BACKEND-VULKAN-GDN). Same rule as above: field +// order and types must match the GLSL push-constant blocks EXACTLY. +struct SigmoidGateParams { + uint32_t n, a_off, g_off, o_off; +}; +struct RmsNormGatedParams { + uint32_t rows, d, x_dt, z_dt, w_dt, out_dt, sigmoid_gate, gate_group, gate_outer; + uint32_t x_off, z_off, w_off, out_off; + float eps; +}; +struct GdnStateGatherParams { + uint32_t rows, work_row, work_inner, cache_inner, cache_row, n_cache_rows; + uint32_t work_dt, cache_dt, his_mode; + uint32_t work_off, cache_off, idx_off, his_off; +}; +struct GdnStateScatterParams { + uint32_t rows, work_row, work_inner, cache_inner, cache_row, n_cache_rows; + uint32_t work_dt, cache_dt; + uint32_t cache_off, work_off, idx_off; +}; +struct ConvUpdateParams { + uint32_t batch, c_dim, k, width, state_len, x_rs, n_state_rows; + uint32_t has_bias, has_idx, silu; + uint32_t out_dt, x_dt, w_dt, bias_dt; + uint32_t out_off, x_off, w_off, bias_off, st_off, idx_off; +}; +struct GdnPostConvParams { + uint32_t t, hk, dk, hv, dv, key_dim, value_dim, conv_dim, a_rs, b_rs; + uint32_t conv_off, q_off, k_off, v_off, a_off, b_off; + uint32_t g_off, beta_off, alog_off, dtb_off; + float eps; +}; // Vulkan only GUARANTEES 128 bytes of push-constant space (maxPushConstantsSize); // staying inside it is what keeps this backend portable without a probe. @@ -162,6 +215,17 @@ static_assert(sizeof(LayerNormParams) <= 128, "push constants must fit the guara static_assert(sizeof(FcParams) <= 128, "push constants must fit the guaranteed 128 bytes"); static_assert(sizeof(PagedAttnParams) <= 128, "push constants must fit the guaranteed 128 bytes"); +static_assert(sizeof(ConvUpdateParams) <= 128, + "push constants must fit the guaranteed 128 bytes"); +// The widest block in the backend at 84 bytes: the fused post-conv carries ten +// operand offsets. If it ever needs an eleventh, the step list has to move to the +// scratch buffer the way vt_fused_chain's does. +static_assert(sizeof(GdnPostConvParams) <= 128, + "push constants must fit the guaranteed 128 bytes"); +static_assert(sizeof(RmsNormGatedParams) <= 128, + "push constants must fit the guaranteed 128 bytes"); +static_assert(sizeof(GdnStateGatherParams) <= 128, + "push constants must fit the guaranteed 128 bytes"); template void Go(const char* name, const Binder& b, const P& p, uint32_t groups, @@ -768,6 +832,262 @@ void QkvSplitKernel(Queue&, Tensor& q_out, Tensor& k_out, Tensor& v_out, const T Go("vt_qkv_split", bind, p, FlatGroupCount(t * (q_dim + k_dim + v_dim)), spec, 2); } +// =========================================================================== +// The GDN / conv1d family (BACKEND-VULKAN-GDN). Qwen3.6-27B is a GDN hybrid, so +// before this row every one of these ops fell to the PORTABLE CPU REFERENCE TIER +// on Vulkan — correct, and running on the host against shared memory. +// +// WHAT IS DELIBERATELY NOT HERE, so a later row does not have to re-derive it: +// * kGdnPrefill / kGdnDecode — the chunked gated-delta recurrences. They are +// not glue; they are the model's linear-attention core and a project of +// their own. They stay on the reference tier. +// * kRopeCosSinCache — the rotary TABLE BUILD, which constructs its angles in +// `double` (cpu_ops.cpp RopeCosSinCacheKernel). GLSL has no f64 here and +// emulating it would be a numerics divergence in the one place vLLM itself +// keeps the work off the device (its RotaryEmbedding builds the cache once in +// __init__). Leaving it on the host MIRRORS upstream; "implementing" it would +// be a regression, and the assertion in tests/vt/test_vulkan_backend.cpp says +// so out loud. +// * kCausalConv1dFwd — the PREFILL conv. It is the same arithmetic as the +// update below but its state write-back reads the OLD state row while other +// tokens of the same sequence are still reading it, so it needs either a +// per-(sequence, channel) serial invocation over the whole token range or a +// buffered old row; that is a different dispatch shape, not a wider push +// block, and it is left for a follow-up rather than guessed at here. +// =========================================================================== + +// cpu_ops.cpp:2272-2279 SigmoidGateBf16Kernel. Flat, one invocation per element. +void SigmoidGateBf16Kernel(Queue&, Tensor& out, const Tensor& attn, const Tensor& gate) { + const int64_t n = out.Numel(); + if (n == 0) return; + Binder bind; + const uint32_t a_off = bind.Add(attn, "sigmoid_gate_bf16: attn"); + const uint32_t g_off = bind.Add(gate, "sigmoid_gate_bf16: gate"); + const uint32_t o_off = bind.Add(out, "sigmoid_gate_bf16: out"); + // Only the attention operand varies; `gate` is f32 and `out` is bf16 by the op + // contract (src/vt/ops.cpp:3327-3334) and are compile-time constants in the + // shader, so a violation fails the host VT_CHECK rather than silently working. + const uint32_t spec[1] = {DtypeCode(attn.dtype)}; + SigmoidGateParams p{static_cast(n), a_off, g_off, o_off}; + Go("vt_sigmoid_gate_bf16", bind, p, FlatGroupCount(n), spec, 1); +} + +// cpu_ops.cpp:1210-1235 RmsNormGatedKernel. ONE WORKGROUP PER ROW (the workgroup +// tree-reduces the mean square), not FlatGroupCount — same convention as +// vt_rms_norm. +void RmsNormGatedKernel(Queue&, Tensor& out, const Tensor& x, const Tensor& gate, + const Tensor& w, const RmsNormGatedArgs& args) { + const int64_t d = x.shape[x.rank - 1]; + const int64_t rows = d == 0 ? 0 : x.Numel() / d; + if (rows == 0 || d == 0) return; + // The rank-3 gate is a padded-row [T,Hv,D] view of the merged qkvz z slice; + // rank-2 degenerates to group 1 with outer stride d (cpu_ops.cpp:1218-1219). + const int64_t gate_group = gate.rank == 3 ? gate.shape[1] : 1; + const int64_t gate_outer = gate.stride[0]; + Binder bind; + const uint32_t x_off = bind.Add(x, "rmsnorm_gated: x"); + const uint32_t z_off = bind.Add(gate, "rmsnorm_gated: gate"); + const uint32_t w_off = bind.Add(w, "rmsnorm_gated: weight"); + const uint32_t out_off = bind.Add(out, "rmsnorm_gated: out"); + RmsNormGatedParams p{static_cast(rows), + static_cast(d), + DtypeCode(x.dtype), + DtypeCode(gate.dtype), + DtypeCode(w.dtype), + DtypeCode(out.dtype), + args.sigmoid_gate ? 1u : 0u, + static_cast(gate_group), + static_cast(gate_outer), + x_off, + z_off, + w_off, + out_off, + args.eps}; + Go("vt_rms_norm_gated", bind, p, static_cast(rows)); +} + +// Shared geometry of the two state-cache ops (cpu_ops.cpp:1676-1682 and +// :1723-1727 compute it identically). `mid` is the channels/heads per row and +// `cache_row` the row's PHYSICAL width, which exceeds work_row when the conv +// state has been widened for spec-decode rollback. +struct GdnStateGeom { + int64_t rows, work_row, work_inner, cache_inner, cache_row; +}; +GdnStateGeom GdnStateGeometry(const Tensor& working, const Tensor& cache, + const Tensor& state_idx) { + GdnStateGeom g{}; + g.rows = state_idx.shape[0]; + if (g.rows == 0) return g; + g.work_inner = working.shape[working.rank - 1]; + g.cache_inner = cache.shape[cache.rank - 1]; + g.work_row = working.Numel() / g.rows; + const int64_t mid = g.work_inner == 0 ? 0 : g.work_row / g.work_inner; + g.cache_row = mid * g.cache_inner; + return g; +} + +// cpu_ops.cpp:1666-1707 GdnStateGatherKernel. +void GdnStateGatherKernel(Queue&, Tensor& working, const Tensor& cache, + const Tensor& state_idx, const Tensor* has_initial_state) { + const GdnStateGeom g = GdnStateGeometry(working, cache, state_idx); + if (g.rows == 0 || g.work_row == 0) return; + Binder bind; + const uint32_t work_off = bind.Add(working, "gdn_state_gather: working"); + const uint32_t cache_off = bind.Add(cache, "gdn_state_gather: cache"); + const uint32_t idx_off = bind.AddU32Only(state_idx, "gdn_state_gather: state_idx"); + // Binding 5 is always written: a descriptor a shader statically uses must be + // valid even on the path that never reads it. With his_mode == 0 it aliases + // state_idx and is dead — the same arrangement vt_rms_norm uses for its + // optional residual. + const uint32_t his_off = + has_initial_state != nullptr + ? bind.AddByteView(*has_initial_state, "gdn_state_gather: has_initial_state") + : bind.AddByteView(state_idx, "gdn_state_gather: state_idx"); + uint32_t his_mode = 0; + if (has_initial_state != nullptr) { + his_mode = has_initial_state->dtype == DType::kI8 ? 1u : 2u; + } + GdnStateGatherParams p{static_cast(g.rows), + static_cast(g.work_row), + static_cast(g.work_inner), + static_cast(g.cache_inner), + static_cast(g.cache_row), + static_cast(cache.shape[0]), + DtypeCode(working.dtype), + DtypeCode(cache.dtype), + his_mode, + work_off, + cache_off, + idx_off, + his_off}; + Go("vt_gdn_state_gather", bind, p, FlatGroupCount(g.rows * g.work_row)); +} + +// cpu_ops.cpp:1709-1745 GdnStateScatterKernel. +void GdnStateScatterKernel(Queue&, Tensor& cache, const Tensor& working, + const Tensor& state_idx) { + const GdnStateGeom g = GdnStateGeometry(working, cache, state_idx); + if (g.rows == 0 || g.work_row == 0) return; + Binder bind; + const uint32_t cache_off = bind.Add(cache, "gdn_state_scatter: cache"); + const uint32_t work_off = bind.Add(working, "gdn_state_scatter: working"); + const uint32_t idx_off = bind.AddU32Only(state_idx, "gdn_state_scatter: state_idx"); + GdnStateScatterParams p{static_cast(g.rows), + static_cast(g.work_row), + static_cast(g.work_inner), + static_cast(g.cache_inner), + static_cast(g.cache_row), + static_cast(cache.shape[0]), + DtypeCode(working.dtype), + DtypeCode(cache.dtype), + cache_off, + work_off, + idx_off}; + Go("vt_gdn_state_scatter", bind, p, FlatGroupCount(g.rows * g.work_row)); +} + +// cpu_ops.cpp:1081-1127 CausalConv1dUpdateKernel. One invocation per +// (token, channel) — the CPU kernel's own row-chunking unit, and what makes the +// read-old-then-roll safe with no barrier. +void CausalConv1dUpdateKernel(Queue&, Tensor& out, const Tensor& x, const Tensor& w, + const Tensor* bias, Tensor& conv_state, + const Tensor* conv_state_indices, + const CausalConv1dArgs& args) { + const int64_t batch = x.shape[0], c_dim = x.shape[1], k = w.shape[1]; + if (batch == 0 || c_dim == 0) return; + // bf16 conv_state is a CUDA-only extension of the contract + // (src/vt/ops.cpp CheckConvCommon), so on this backend the state is f32 and the + // shader reads it through the 32-bit view directly. + VT_CHECK(conv_state.dtype == DType::kF32, + "vulkan causal_conv1d_update: conv_state must be f32"); + Binder bind; + const uint32_t out_off = bind.Add(out, "causal_conv1d_update: out"); + const uint32_t x_off = bind.Add(x, "causal_conv1d_update: x"); + const uint32_t w_off = bind.Add(w, "causal_conv1d_update: weight"); + // Bindings 6/7 alias the weight when there is no bias; see the note above. + const uint32_t bias_off = bias != nullptr ? bind.Add(*bias, "causal_conv1d_update: bias") + : bind.Add(w, "causal_conv1d_update: weight"); + const uint32_t st_off = bind.AddU32Only(conv_state, "causal_conv1d_update: conv_state"); + const uint32_t idx_off = + conv_state_indices != nullptr + ? bind.AddU32Only(*conv_state_indices, "causal_conv1d_update: conv_state_indices") + : bind.AddU32Only(conv_state, "causal_conv1d_update: conv_state"); + ConvUpdateParams p{static_cast(batch), + static_cast(c_dim), + static_cast(k), + static_cast(k - 1), + static_cast(conv_state.shape[2]), + static_cast(x.stride[0]), + static_cast(conv_state.shape[0]), + bias != nullptr ? 1u : 0u, + conv_state_indices != nullptr ? 1u : 0u, + args.silu_activation ? 1u : 0u, + DtypeCode(out.dtype), + DtypeCode(x.dtype), + DtypeCode(w.dtype), + bias != nullptr ? DtypeCode(bias->dtype) : DtypeCode(w.dtype), + out_off, + x_off, + w_off, + bias_off, + st_off, + idx_off}; + Go("vt_causal_conv1d_update", bind, p, FlatGroupCount(batch * c_dim)); +} + +// cpu_ops.cpp:2337-2417 GdnPostConvKernel. ONE WORKGROUP PER (token, head slot) +// over Hk + Hv slots — upstream's own (L, H+HV) grid — not FlatGroupCount: the +// q/k slots tree-reduce an L2 norm across the workgroup's lanes. +void GdnPostConvKernel(Queue&, Tensor& q_out, Tensor& k_out, Tensor& v_out, Tensor& g_out, + Tensor& beta_out, const Tensor& conv, const Tensor& araw, + const Tensor& braw, const Tensor& a_log, const Tensor& dt_bias, + const L2NormArgs& args) { + const int64_t t = conv.shape[0]; + const int64_t hk = q_out.shape[1], dk = q_out.shape[2]; + const int64_t hv = v_out.shape[1], dv = v_out.shape[2]; + if (t == 0 || hk + hv == 0) return; + const int64_t key_dim = hk * dk, value_dim = hv * dv; + Binder bind; + const uint32_t conv_off = bind.Add(conv, "gdn_post_conv: conv"); + const uint32_t q_off = bind.Add(q_out, "gdn_post_conv: q_out"); + const uint32_t k_off = bind.Add(k_out, "gdn_post_conv: k_out"); + const uint32_t v_off = bind.Add(v_out, "gdn_post_conv: v_out"); + const uint32_t a_off = bind.Add(araw, "gdn_post_conv: araw"); + const uint32_t b_off = bind.Add(braw, "gdn_post_conv: braw"); + // f32 BY CONTRACT (src/vt/ops.cpp:3459-3463), so one binding each rather than a + // dtype-erased pair whose 16-bit half could never be taken. + const uint32_t g_off = bind.AddU32Only(g_out, "gdn_post_conv: g_out"); + const uint32_t beta_off = bind.AddU32Only(beta_out, "gdn_post_conv: beta_out"); + const uint32_t alog_off = bind.AddU32Only(a_log, "gdn_post_conv: a_log"); + const uint32_t dtb_off = bind.AddU32Only(dt_bias, "gdn_post_conv: dt_bias"); + // Ascending constantID order: conv dtype, the shared q/k/v dtype, the shared + // araw/braw dtype. + const uint32_t spec[3] = {DtypeCode(conv.dtype), DtypeCode(q_out.dtype), + DtypeCode(araw.dtype)}; + GdnPostConvParams p{static_cast(t), + static_cast(hk), + static_cast(dk), + static_cast(hv), + static_cast(dv), + static_cast(key_dim), + static_cast(value_dim), + static_cast(2 * key_dim + value_dim), + static_cast(araw.stride[0]), + static_cast(braw.stride[0]), + conv_off, + q_off, + k_off, + v_off, + a_off, + b_off, + g_off, + beta_off, + alog_off, + dtb_off, + args.eps}; + Go("vt_gdn_post_conv", bind, p, static_cast(t * (hk + hv)), spec, 3); +} + struct Registrar { Registrar() { // Same guard as the backend registrar: a Vulkan-enabled build on a host with @@ -808,6 +1128,23 @@ struct Registrar { reinterpret_cast(static_cast(&RmsNormKernel))); RegisterOp(OpId::kFusedChain, DeviceType::kVULKAN, reinterpret_cast(static_cast(&FusedChainKernel))); + // BACKEND-VULKAN-GDN: the GDN glue family. kGdnPrefill/kGdnDecode (the + // recurrences), kCausalConv1dFwd (the prefill conv) and kRopeCosSinCache (the + // double-precision rotary table, deliberately host-side) stay on the portable + // reference tier; see the block comment above these kernels. + RegisterOp(OpId::kSigmoidGateBf16, DeviceType::kVULKAN, + reinterpret_cast(static_cast(&SigmoidGateBf16Kernel))); + RegisterOp(OpId::kRmsNormGated, DeviceType::kVULKAN, + reinterpret_cast(static_cast(&RmsNormGatedKernel))); + RegisterOp(OpId::kGdnStateGather, DeviceType::kVULKAN, + reinterpret_cast(static_cast(&GdnStateGatherKernel))); + RegisterOp(OpId::kGdnStateScatter, DeviceType::kVULKAN, + reinterpret_cast(static_cast(&GdnStateScatterKernel))); + RegisterOp( + OpId::kCausalConv1dUpdate, DeviceType::kVULKAN, + reinterpret_cast(static_cast(&CausalConv1dUpdateKernel))); + RegisterOp(OpId::kGdnPostConv, DeviceType::kVULKAN, + reinterpret_cast(static_cast(&GdnPostConvKernel))); } } registrar; diff --git a/src/vt/vulkan/vulkan_spirv.cpp b/src/vt/vulkan/vulkan_spirv.cpp index c0ca1724c..ea3e78903 100644 --- a/src/vt/vulkan/vulkan_spirv.cpp +++ b/src/vt/vulkan/vulkan_spirv.cpp @@ -638,6 +638,511 @@ constexpr uint32_t kSpv_vt_cast[] = { 0x000200feu, 0x0000014au, 0x00010038u, }; +constexpr uint32_t kSpv_vt_causal_conv1d_update[] = { + 0x07230203u, 0x00010300u, 0x0008000bu, 0x000002f9u, 0x00000000u, 0x00020011u, 0x00000001u, 0x00020011u, + 0x00001151u, 0x0006000bu, 0x00000001u, 0x4c534c47u, 0x6474732eu, 0x3035342eu, 0x00000000u, 0x0003000eu, + 0x00000000u, 0x00000001u, 0x0006000fu, 0x00000005u, 0x00000004u, 0x6e69616du, 0x00000000u, 0x00000150u, + 0x00060010u, 0x00000004u, 0x00000011u, 0x00000080u, 0x00000001u, 0x00000001u, 0x00040047u, 0x00000150u, + 0x0000000bu, 0x0000001cu, 0x00030047u, 0x00000155u, 0x00000002u, 0x00050048u, 0x00000155u, 0x00000000u, + 0x00000023u, 0x00000000u, 0x00050048u, 0x00000155u, 0x00000001u, 0x00000023u, 0x00000004u, 0x00050048u, + 0x00000155u, 0x00000002u, 0x00000023u, 0x00000008u, 0x00050048u, 0x00000155u, 0x00000003u, 0x00000023u, + 0x0000000cu, 0x00050048u, 0x00000155u, 0x00000004u, 0x00000023u, 0x00000010u, 0x00050048u, 0x00000155u, + 0x00000005u, 0x00000023u, 0x00000014u, 0x00050048u, 0x00000155u, 0x00000006u, 0x00000023u, 0x00000018u, + 0x00050048u, 0x00000155u, 0x00000007u, 0x00000023u, 0x0000001cu, 0x00050048u, 0x00000155u, 0x00000008u, + 0x00000023u, 0x00000020u, 0x00050048u, 0x00000155u, 0x00000009u, 0x00000023u, 0x00000024u, 0x00050048u, + 0x00000155u, 0x0000000au, 0x00000023u, 0x00000028u, 0x00050048u, 0x00000155u, 0x0000000bu, 0x00000023u, + 0x0000002cu, 0x00050048u, 0x00000155u, 0x0000000cu, 0x00000023u, 0x00000030u, 0x00050048u, 0x00000155u, + 0x0000000du, 0x00000023u, 0x00000034u, 0x00050048u, 0x00000155u, 0x0000000eu, 0x00000023u, 0x00000038u, + 0x00050048u, 0x00000155u, 0x0000000fu, 0x00000023u, 0x0000003cu, 0x00050048u, 0x00000155u, 0x00000010u, + 0x00000023u, 0x00000040u, 0x00050048u, 0x00000155u, 0x00000011u, 0x00000023u, 0x00000044u, 0x00050048u, + 0x00000155u, 0x00000012u, 0x00000023u, 0x00000048u, 0x00050048u, 0x00000155u, 0x00000013u, 0x00000023u, + 0x0000004cu, 0x00040047u, 0x00000175u, 0x00000006u, 0x00000004u, 0x00030047u, 0x00000176u, 0x00000002u, + 0x00040048u, 0x00000176u, 0x00000000u, 0x00000018u, 0x00050048u, 0x00000176u, 0x00000000u, 0x00000023u, + 0x00000000u, 0x00030047u, 0x00000178u, 0x00000018u, 0x00040047u, 0x00000178u, 0x00000021u, 0x00000009u, + 0x00040047u, 0x00000178u, 0x00000022u, 0x00000000u, 0x00040047u, 0x000001acu, 0x00000006u, 0x00000004u, + 0x00030047u, 0x000001adu, 0x00000002u, 0x00040048u, 0x000001adu, 0x00000000u, 0x00000018u, 0x00050048u, + 0x000001adu, 0x00000000u, 0x00000023u, 0x00000000u, 0x00030047u, 0x000001afu, 0x00000018u, 0x00040047u, + 0x000001afu, 0x00000021u, 0x00000002u, 0x00040047u, 0x000001afu, 0x00000022u, 0x00000000u, 0x00040047u, + 0x000001c0u, 0x00000006u, 0x00000002u, 0x00030047u, 0x000001c1u, 0x00000002u, 0x00040048u, 0x000001c1u, + 0x00000000u, 0x00000018u, 0x00050048u, 0x000001c1u, 0x00000000u, 0x00000023u, 0x00000000u, 0x00030047u, + 0x000001c3u, 0x00000018u, 0x00040047u, 0x000001c3u, 0x00000021u, 0x00000003u, 0x00040047u, 0x000001c3u, + 0x00000022u, 0x00000000u, 0x00040047u, 0x000001e6u, 0x00000006u, 0x00000004u, 0x00030047u, 0x000001e7u, + 0x00000002u, 0x00040048u, 0x000001e7u, 0x00000000u, 0x00000018u, 0x00050048u, 0x000001e7u, 0x00000000u, + 0x00000023u, 0x00000000u, 0x00030047u, 0x000001e9u, 0x00000018u, 0x00040047u, 0x000001e9u, 0x00000021u, + 0x00000006u, 0x00040047u, 0x000001e9u, 0x00000022u, 0x00000000u, 0x00040047u, 0x000001f4u, 0x00000006u, + 0x00000002u, 0x00030047u, 0x000001f5u, 0x00000002u, 0x00040048u, 0x000001f5u, 0x00000000u, 0x00000018u, + 0x00050048u, 0x000001f5u, 0x00000000u, 0x00000023u, 0x00000000u, 0x00030047u, 0x000001f7u, 0x00000018u, + 0x00040047u, 0x000001f7u, 0x00000021u, 0x00000007u, 0x00040047u, 0x000001f7u, 0x00000022u, 0x00000000u, + 0x00040047u, 0x0000021bu, 0x00000006u, 0x00000004u, 0x00030047u, 0x0000021cu, 0x00000002u, 0x00040048u, + 0x0000021cu, 0x00000000u, 0x00000018u, 0x00050048u, 0x0000021cu, 0x00000000u, 0x00000023u, 0x00000000u, + 0x00030047u, 0x0000021eu, 0x00000018u, 0x00040047u, 0x0000021eu, 0x00000021u, 0x00000004u, 0x00040047u, + 0x0000021eu, 0x00000022u, 0x00000000u, 0x00040047u, 0x0000022du, 0x00000006u, 0x00000002u, 0x00030047u, + 0x0000022eu, 0x00000002u, 0x00040048u, 0x0000022eu, 0x00000000u, 0x00000018u, 0x00050048u, 0x0000022eu, + 0x00000000u, 0x00000023u, 0x00000000u, 0x00030047u, 0x00000230u, 0x00000018u, 0x00040047u, 0x00000230u, + 0x00000021u, 0x00000005u, 0x00040047u, 0x00000230u, 0x00000022u, 0x00000000u, 0x00040047u, 0x00000244u, + 0x00000006u, 0x00000004u, 0x00030047u, 0x00000245u, 0x00000002u, 0x00050048u, 0x00000245u, 0x00000000u, + 0x00000023u, 0x00000000u, 0x00040047u, 0x00000247u, 0x00000021u, 0x00000008u, 0x00040047u, 0x00000247u, + 0x00000022u, 0x00000000u, 0x00040047u, 0x00000289u, 0x00000006u, 0x00000004u, 0x00030047u, 0x0000028au, + 0x00000002u, 0x00050048u, 0x0000028au, 0x00000000u, 0x00000023u, 0x00000000u, 0x00040047u, 0x0000028cu, + 0x00000021u, 0x00000000u, 0x00040047u, 0x0000028cu, 0x00000022u, 0x00000000u, 0x00040047u, 0x000002abu, + 0x00000006u, 0x00000002u, 0x00030047u, 0x000002acu, 0x00000002u, 0x00050048u, 0x000002acu, 0x00000000u, + 0x00000023u, 0x00000000u, 0x00040047u, 0x000002aeu, 0x00000021u, 0x00000001u, 0x00040047u, 0x000002aeu, + 0x00000022u, 0x00000000u, 0x00040047u, 0x000002f8u, 0x0000000bu, 0x00000019u, 0x00020013u, 0x00000002u, + 0x00030021u, 0x00000003u, 0x00000002u, 0x00040015u, 0x00000006u, 0x00000020u, 0x00000000u, 0x00040020u, + 0x00000007u, 0x00000007u, 0x00000006u, 0x00030016u, 0x00000008u, 0x00000020u, 0x00040021u, 0x00000009u, + 0x00000008u, 0x00000007u, 0x00040020u, 0x0000000du, 0x00000007u, 0x00000008u, 0x00040021u, 0x0000000eu, + 0x00000006u, 0x0000000du, 0x00050021u, 0x00000018u, 0x00000008u, 0x00000007u, 0x00000007u, 0x00050021u, + 0x0000001du, 0x00000006u, 0x0000000du, 0x00000007u, 0x00040015u, 0x00000023u, 0x00000020u, 0x00000001u, + 0x0004002bu, 0x00000023u, 0x00000024u, 0x00000010u, 0x00020014u, 0x0000002cu, 0x0004002bu, 0x00000006u, + 0x0000002eu, 0x7f800000u, 0x0004002bu, 0x00000006u, 0x00000034u, 0x007fffffu, 0x0004002bu, 0x00000006u, + 0x00000036u, 0x00000000u, 0x0004002bu, 0x00000006u, 0x0000003du, 0x00000040u, 0x0004002bu, 0x00000006u, + 0x0000003fu, 0x0000ffffu, 0x0004002bu, 0x00000006u, 0x00000043u, 0x00007fffu, 0x0004002bu, 0x00000006u, + 0x00000046u, 0x00000001u, 0x0004002bu, 0x00000006u, 0x00000052u, 0x00008000u, 0x0004002bu, 0x00000023u, + 0x00000057u, 0x0000000au, 0x0004002bu, 0x00000006u, 0x00000059u, 0x0000001fu, 0x0004002bu, 0x00000006u, + 0x0000005du, 0x000003ffu, 0x0004002bu, 0x00000023u, 0x00000066u, 0x0000000du, 0x0004002bu, 0x00000006u, + 0x0000007du, 0x00000400u, 0x0004002bu, 0x00000023u, 0x00000080u, 0x00000001u, 0x0004002bu, 0x00000006u, + 0x00000088u, 0x00000071u, 0x0004002bu, 0x00000023u, 0x0000008bu, 0x00000017u, 0x0004002bu, 0x00000006u, + 0x00000095u, 0x00000070u, 0x0004002bu, 0x00000006u, 0x000000a9u, 0x000000ffu, 0x00040020u, 0x000000abu, + 0x00000007u, 0x00000023u, 0x0004002bu, 0x00000023u, 0x000000afu, 0x0000007fu, 0x0004002bu, 0x00000023u, + 0x000000b1u, 0x0000000fu, 0x0004002bu, 0x00000006u, 0x000000bbu, 0x00007c00u, 0x0004002bu, 0x00000006u, + 0x000000c2u, 0x00000200u, 0x0004002bu, 0x00000023u, 0x000000cbu, 0x0000001fu, 0x0004002bu, 0x00000023u, + 0x000000d3u, 0x00000000u, 0x0004002bu, 0x00000023u, 0x000000d8u, 0xfffffff6u, 0x0004002bu, 0x00000006u, + 0x000000deu, 0x00800000u, 0x0004002bu, 0x00000023u, 0x000000e2u, 0x0000000eu, 0x0004002bu, 0x00000006u, + 0x00000115u, 0x00001fffu, 0x0004002bu, 0x00000006u, 0x00000118u, 0x00001000u, 0x00040017u, 0x0000014eu, + 0x00000006u, 0x00000003u, 0x00040020u, 0x0000014fu, 0x00000001u, 0x0000014eu, 0x0004003bu, 0x0000014fu, + 0x00000150u, 0x00000001u, 0x00040020u, 0x00000151u, 0x00000001u, 0x00000006u, 0x0016001eu, 0x00000155u, + 0x00000006u, 0x00000006u, 0x00000006u, 0x00000006u, 0x00000006u, 0x00000006u, 0x00000006u, 0x00000006u, + 0x00000006u, 0x00000006u, 0x00000006u, 0x00000006u, 0x00000006u, 0x00000006u, 0x00000006u, 0x00000006u, + 0x00000006u, 0x00000006u, 0x00000006u, 0x00000006u, 0x00040020u, 0x00000156u, 0x00000009u, 0x00000155u, + 0x0004003bu, 0x00000156u, 0x00000157u, 0x00000009u, 0x00040020u, 0x00000158u, 0x00000009u, 0x00000006u, + 0x0004002bu, 0x00000023u, 0x0000016eu, 0x00000008u, 0x0003001du, 0x00000175u, 0x00000006u, 0x0003001eu, + 0x00000176u, 0x00000175u, 0x00040020u, 0x00000177u, 0x0000000cu, 0x00000176u, 0x0004003bu, 0x00000177u, + 0x00000178u, 0x0000000cu, 0x0004002bu, 0x00000023u, 0x00000179u, 0x00000013u, 0x0004002bu, 0x00000023u, + 0x0000017cu, 0x00000002u, 0x00040020u, 0x00000180u, 0x0000000cu, 0x00000006u, 0x0004002bu, 0x00000023u, + 0x0000018bu, 0x00000006u, 0x0004002bu, 0x00000023u, 0x00000195u, 0x00000012u, 0x0004002bu, 0x00000023u, + 0x0000019fu, 0x00000004u, 0x0004002bu, 0x00000023u, 0x000001a5u, 0x0000000bu, 0x0003001du, 0x000001acu, + 0x00000006u, 0x0003001eu, 0x000001adu, 0x000001acu, 0x00040020u, 0x000001aeu, 0x0000000cu, 0x000001adu, + 0x0004003bu, 0x000001aeu, 0x000001afu, 0x0000000cu, 0x0004002bu, 0x00000023u, 0x000001b4u, 0x00000005u, + 0x00040015u, 0x000001bfu, 0x00000010u, 0x00000000u, 0x0003001du, 0x000001c0u, 0x000001bfu, 0x0003001eu, + 0x000001c1u, 0x000001c0u, 0x00040020u, 0x000001c2u, 0x0000000cu, 0x000001c1u, 0x0004003bu, 0x000001c2u, + 0x000001c3u, 0x0000000cu, 0x00040020u, 0x000001ceu, 0x0000000cu, 0x000001bfu, 0x0004002bu, 0x00000023u, + 0x000001d9u, 0x00000007u, 0x0003001du, 0x000001e6u, 0x00000006u, 0x0003001eu, 0x000001e7u, 0x000001e6u, + 0x00040020u, 0x000001e8u, 0x0000000cu, 0x000001e7u, 0x0004003bu, 0x000001e8u, 0x000001e9u, 0x0000000cu, + 0x0004002bu, 0x00000023u, 0x000001eau, 0x00000011u, 0x0003001du, 0x000001f4u, 0x000001bfu, 0x0003001eu, + 0x000001f5u, 0x000001f4u, 0x00040020u, 0x000001f6u, 0x0000000cu, 0x000001f5u, 0x0004003bu, 0x000001f6u, + 0x000001f7u, 0x0000000cu, 0x0004002bu, 0x00000008u, 0x00000207u, 0x00000000u, 0x0004002bu, 0x00000023u, + 0x00000210u, 0x00000003u, 0x0004002bu, 0x00000023u, 0x00000214u, 0x0000000cu, 0x0003001du, 0x0000021bu, + 0x00000006u, 0x0003001eu, 0x0000021cu, 0x0000021bu, 0x00040020u, 0x0000021du, 0x0000000cu, 0x0000021cu, + 0x0004003bu, 0x0000021du, 0x0000021eu, 0x0000000cu, 0x0003001du, 0x0000022du, 0x000001bfu, 0x0003001eu, + 0x0000022eu, 0x0000022du, 0x00040020u, 0x0000022fu, 0x0000000cu, 0x0000022eu, 0x0004003bu, 0x0000022fu, + 0x00000230u, 0x0000000cu, 0x0003001du, 0x00000244u, 0x00000006u, 0x0003001eu, 0x00000245u, 0x00000244u, + 0x00040020u, 0x00000246u, 0x0000000cu, 0x00000245u, 0x0004003bu, 0x00000246u, 0x00000247u, 0x0000000cu, + 0x0003001du, 0x00000289u, 0x00000006u, 0x0003001eu, 0x0000028au, 0x00000289u, 0x00040020u, 0x0000028bu, + 0x0000000cu, 0x0000028au, 0x0004003bu, 0x0000028bu, 0x0000028cu, 0x0000000cu, 0x0004002bu, 0x00000023u, + 0x00000297u, 0x00000009u, 0x0004002bu, 0x00000008u, 0x0000029fu, 0x3f800000u, 0x0003001du, 0x000002abu, + 0x000001bfu, 0x0003001eu, 0x000002acu, 0x000002abu, 0x00040020u, 0x000002adu, 0x0000000cu, 0x000002acu, + 0x0004003bu, 0x000002adu, 0x000002aeu, 0x0000000cu, 0x0003002au, 0x0000002cu, 0x000002cfu, 0x0004002bu, + 0x00000006u, 0x000002f4u, 0x00000080u, 0x0004001cu, 0x000002f5u, 0x00000008u, 0x000002f4u, 0x00040020u, + 0x000002f6u, 0x00000004u, 0x000002f5u, 0x0004003bu, 0x000002f6u, 0x000002f7u, 0x00000004u, 0x0006002cu, + 0x0000014eu, 0x000002f8u, 0x000002f4u, 0x00000046u, 0x00000046u, 0x00050036u, 0x00000002u, 0x00000004u, + 0x00000000u, 0x00000003u, 0x000200f8u, 0x00000005u, 0x0004003bu, 0x00000007u, 0x0000014du, 0x00000007u, + 0x0004003bu, 0x00000007u, 0x00000162u, 0x00000007u, 0x0004003bu, 0x00000007u, 0x00000167u, 0x00000007u, + 0x0004003bu, 0x00000007u, 0x0000016cu, 0x00000007u, 0x0004003bu, 0x000000abu, 0x00000174u, 0x00000007u, + 0x0004003bu, 0x00000007u, 0x00000194u, 0x00000007u, 0x0004003bu, 0x0000000du, 0x000001a4u, 0x00000007u, + 0x0004003bu, 0x0000000du, 0x000001a9u, 0x00000007u, 0x0004003bu, 0x00000007u, 0x000001d2u, 0x00000007u, + 0x0004003bu, 0x00000007u, 0x000001d3u, 0x00000007u, 0x0004003bu, 0x0000000du, 0x000001d8u, 0x00000007u, + 0x0004003bu, 0x0000000du, 0x000001ddu, 0x00000007u, 0x0004003bu, 0x0000000du, 0x000001e3u, 0x00000007u, + 0x0004003bu, 0x00000007u, 0x00000200u, 0x00000007u, 0x0004003bu, 0x00000007u, 0x00000201u, 0x00000007u, + 0x0004003bu, 0x00000007u, 0x00000209u, 0x00000007u, 0x0004003bu, 0x0000000du, 0x00000218u, 0x00000007u, + 0x0004003bu, 0x00000007u, 0x0000023eu, 0x00000007u, 0x0004003bu, 0x00000007u, 0x0000023fu, 0x00000007u, + 0x0004003bu, 0x0000000du, 0x00000256u, 0x00000007u, 0x0004003bu, 0x00000007u, 0x00000276u, 0x00000007u, + 0x0004003bu, 0x00000007u, 0x00000277u, 0x00000007u, 0x0004003bu, 0x0000000du, 0x0000029bu, 0x00000007u, + 0x0004003bu, 0x0000000du, 0x000002bcu, 0x00000007u, 0x0004003bu, 0x0000000du, 0x000002c7u, 0x00000007u, + 0x0004003bu, 0x00000007u, 0x000002c9u, 0x00000007u, 0x0004003bu, 0x00000007u, 0x000002d0u, 0x00000007u, + 0x00050041u, 0x00000151u, 0x00000152u, 0x00000150u, 0x00000036u, 0x0004003du, 0x00000006u, 0x00000153u, + 0x00000152u, 0x0003003eu, 0x0000014du, 0x00000153u, 0x0004003du, 0x00000006u, 0x00000154u, 0x0000014du, + 0x00050041u, 0x00000158u, 0x00000159u, 0x00000157u, 0x000000d3u, 0x0004003du, 0x00000006u, 0x0000015au, + 0x00000159u, 0x00050041u, 0x00000158u, 0x0000015bu, 0x00000157u, 0x00000080u, 0x0004003du, 0x00000006u, + 0x0000015cu, 0x0000015bu, 0x00050084u, 0x00000006u, 0x0000015du, 0x0000015au, 0x0000015cu, 0x000500aeu, + 0x0000002cu, 0x0000015eu, 0x00000154u, 0x0000015du, 0x000300f7u, 0x00000160u, 0x00000000u, 0x000400fau, + 0x0000015eu, 0x0000015fu, 0x00000160u, 0x000200f8u, 0x0000015fu, 0x000100fdu, 0x000200f8u, 0x00000160u, + 0x0004003du, 0x00000006u, 0x00000163u, 0x0000014du, 0x00050041u, 0x00000158u, 0x00000164u, 0x00000157u, + 0x00000080u, 0x0004003du, 0x00000006u, 0x00000165u, 0x00000164u, 0x00050086u, 0x00000006u, 0x00000166u, + 0x00000163u, 0x00000165u, 0x0003003eu, 0x00000162u, 0x00000166u, 0x0004003du, 0x00000006u, 0x00000168u, + 0x0000014du, 0x00050041u, 0x00000158u, 0x00000169u, 0x00000157u, 0x00000080u, 0x0004003du, 0x00000006u, + 0x0000016au, 0x00000169u, 0x00050089u, 0x00000006u, 0x0000016bu, 0x00000168u, 0x0000016au, 0x0003003eu, + 0x00000167u, 0x0000016bu, 0x0004003du, 0x00000006u, 0x0000016du, 0x00000162u, 0x0003003eu, 0x0000016cu, + 0x0000016du, 0x00050041u, 0x00000158u, 0x0000016fu, 0x00000157u, 0x0000016eu, 0x0004003du, 0x00000006u, + 0x00000170u, 0x0000016fu, 0x000500abu, 0x0000002cu, 0x00000171u, 0x00000170u, 0x00000036u, 0x000300f7u, + 0x00000173u, 0x00000000u, 0x000400fau, 0x00000171u, 0x00000172u, 0x00000173u, 0x000200f8u, 0x00000172u, + 0x00050041u, 0x00000158u, 0x0000017au, 0x00000157u, 0x00000179u, 0x0004003du, 0x00000006u, 0x0000017bu, + 0x0000017au, 0x000500c2u, 0x00000006u, 0x0000017du, 0x0000017bu, 0x0000017cu, 0x0004003du, 0x00000006u, + 0x0000017eu, 0x00000162u, 0x00050080u, 0x00000006u, 0x0000017fu, 0x0000017du, 0x0000017eu, 0x00060041u, + 0x00000180u, 0x00000181u, 0x00000178u, 0x000000d3u, 0x0000017fu, 0x0004003du, 0x00000006u, 0x00000182u, + 0x00000181u, 0x0004007cu, 0x00000023u, 0x00000183u, 0x00000182u, 0x0003003eu, 0x00000174u, 0x00000183u, + 0x0004003du, 0x00000023u, 0x00000184u, 0x00000174u, 0x000500b1u, 0x0000002cu, 0x00000185u, 0x00000184u, + 0x000000d3u, 0x000300f7u, 0x00000187u, 0x00000000u, 0x000400fau, 0x00000185u, 0x00000186u, 0x00000187u, + 0x000200f8u, 0x00000186u, 0x000100fdu, 0x000200f8u, 0x00000187u, 0x0004003du, 0x00000023u, 0x00000189u, + 0x00000174u, 0x0004007cu, 0x00000006u, 0x0000018au, 0x00000189u, 0x00050041u, 0x00000158u, 0x0000018cu, + 0x00000157u, 0x0000018bu, 0x0004003du, 0x00000006u, 0x0000018du, 0x0000018cu, 0x000500aeu, 0x0000002cu, + 0x0000018eu, 0x0000018au, 0x0000018du, 0x000300f7u, 0x00000190u, 0x00000000u, 0x000400fau, 0x0000018eu, + 0x0000018fu, 0x00000190u, 0x000200f8u, 0x0000018fu, 0x000100fdu, 0x000200f8u, 0x00000190u, 0x0004003du, + 0x00000023u, 0x00000192u, 0x00000174u, 0x0004007cu, 0x00000006u, 0x00000193u, 0x00000192u, 0x0003003eu, + 0x0000016cu, 0x00000193u, 0x000200f9u, 0x00000173u, 0x000200f8u, 0x00000173u, 0x00050041u, 0x00000158u, + 0x00000196u, 0x00000157u, 0x00000195u, 0x0004003du, 0x00000006u, 0x00000197u, 0x00000196u, 0x000500c2u, + 0x00000006u, 0x00000198u, 0x00000197u, 0x0000017cu, 0x0004003du, 0x00000006u, 0x00000199u, 0x0000016cu, + 0x00050041u, 0x00000158u, 0x0000019au, 0x00000157u, 0x00000080u, 0x0004003du, 0x00000006u, 0x0000019bu, + 0x0000019au, 0x00050084u, 0x00000006u, 0x0000019cu, 0x00000199u, 0x0000019bu, 0x0004003du, 0x00000006u, + 0x0000019du, 0x00000167u, 0x00050080u, 0x00000006u, 0x0000019eu, 0x0000019cu, 0x0000019du, 0x00050041u, + 0x00000158u, 0x000001a0u, 0x00000157u, 0x0000019fu, 0x0004003du, 0x00000006u, 0x000001a1u, 0x000001a0u, + 0x00050084u, 0x00000006u, 0x000001a2u, 0x0000019eu, 0x000001a1u, 0x00050080u, 0x00000006u, 0x000001a3u, + 0x00000198u, 0x000001a2u, 0x0003003eu, 0x00000194u, 0x000001a3u, 0x00050041u, 0x00000158u, 0x000001a6u, + 0x00000157u, 0x000001a5u, 0x0004003du, 0x00000006u, 0x000001a7u, 0x000001a6u, 0x000500aau, 0x0000002cu, + 0x000001a8u, 0x000001a7u, 0x00000036u, 0x000300f7u, 0x000001abu, 0x00000000u, 0x000400fau, 0x000001a8u, + 0x000001aau, 0x000001beu, 0x000200f8u, 0x000001aau, 0x00050041u, 0x00000158u, 0x000001b0u, 0x00000157u, + 0x000000b1u, 0x0004003du, 0x00000006u, 0x000001b1u, 0x000001b0u, 0x000500c2u, 0x00000006u, 0x000001b2u, + 0x000001b1u, 0x0000017cu, 0x0004003du, 0x00000006u, 0x000001b3u, 0x00000162u, 0x00050041u, 0x00000158u, + 0x000001b5u, 0x00000157u, 0x000001b4u, 0x0004003du, 0x00000006u, 0x000001b6u, 0x000001b5u, 0x00050084u, + 0x00000006u, 0x000001b7u, 0x000001b3u, 0x000001b6u, 0x0004003du, 0x00000006u, 0x000001b8u, 0x00000167u, + 0x00050080u, 0x00000006u, 0x000001b9u, 0x000001b7u, 0x000001b8u, 0x00050080u, 0x00000006u, 0x000001bau, + 0x000001b2u, 0x000001b9u, 0x00060041u, 0x00000180u, 0x000001bbu, 0x000001afu, 0x000000d3u, 0x000001bau, + 0x0004003du, 0x00000006u, 0x000001bcu, 0x000001bbu, 0x0004007cu, 0x00000008u, 0x000001bdu, 0x000001bcu, + 0x0003003eu, 0x000001a9u, 0x000001bdu, 0x000200f9u, 0x000001abu, 0x000200f8u, 0x000001beu, 0x00050041u, + 0x00000158u, 0x000001c4u, 0x00000157u, 0x000000b1u, 0x0004003du, 0x00000006u, 0x000001c5u, 0x000001c4u, + 0x000500c2u, 0x00000006u, 0x000001c6u, 0x000001c5u, 0x00000080u, 0x0004003du, 0x00000006u, 0x000001c7u, + 0x00000162u, 0x00050041u, 0x00000158u, 0x000001c8u, 0x00000157u, 0x000001b4u, 0x0004003du, 0x00000006u, + 0x000001c9u, 0x000001c8u, 0x00050084u, 0x00000006u, 0x000001cau, 0x000001c7u, 0x000001c9u, 0x0004003du, + 0x00000006u, 0x000001cbu, 0x00000167u, 0x00050080u, 0x00000006u, 0x000001ccu, 0x000001cau, 0x000001cbu, + 0x00050080u, 0x00000006u, 0x000001cdu, 0x000001c6u, 0x000001ccu, 0x00060041u, 0x000001ceu, 0x000001cfu, + 0x000001c3u, 0x000000d3u, 0x000001cdu, 0x0004003du, 0x000001bfu, 0x000001d0u, 0x000001cfu, 0x00040071u, + 0x00000006u, 0x000001d1u, 0x000001d0u, 0x0003003eu, 0x000001d2u, 0x000001d1u, 0x00050041u, 0x00000158u, + 0x000001d4u, 0x00000157u, 0x000001a5u, 0x0004003du, 0x00000006u, 0x000001d5u, 0x000001d4u, 0x0003003eu, + 0x000001d3u, 0x000001d5u, 0x00060039u, 0x00000008u, 0x000001d6u, 0x0000001bu, 0x000001d2u, 0x000001d3u, + 0x0003003eu, 0x000001a9u, 0x000001d6u, 0x000200f9u, 0x000001abu, 0x000200f8u, 0x000001abu, 0x0004003du, + 0x00000008u, 0x000001d7u, 0x000001a9u, 0x0003003eu, 0x000001a4u, 0x000001d7u, 0x00050041u, 0x00000158u, + 0x000001dau, 0x00000157u, 0x000001d9u, 0x0004003du, 0x00000006u, 0x000001dbu, 0x000001dau, 0x000500abu, + 0x0000002cu, 0x000001dcu, 0x000001dbu, 0x00000036u, 0x000300f7u, 0x000001dfu, 0x00000000u, 0x000400fau, + 0x000001dcu, 0x000001deu, 0x00000206u, 0x000200f8u, 0x000001deu, 0x00050041u, 0x00000158u, 0x000001e0u, + 0x00000157u, 0x00000066u, 0x0004003du, 0x00000006u, 0x000001e1u, 0x000001e0u, 0x000500aau, 0x0000002cu, + 0x000001e2u, 0x000001e1u, 0x00000036u, 0x000300f7u, 0x000001e5u, 0x00000000u, 0x000400fau, 0x000001e2u, + 0x000001e4u, 0x000001f3u, 0x000200f8u, 0x000001e4u, 0x00050041u, 0x00000158u, 0x000001ebu, 0x00000157u, + 0x000001eau, 0x0004003du, 0x00000006u, 0x000001ecu, 0x000001ebu, 0x000500c2u, 0x00000006u, 0x000001edu, + 0x000001ecu, 0x0000017cu, 0x0004003du, 0x00000006u, 0x000001eeu, 0x00000167u, 0x00050080u, 0x00000006u, + 0x000001efu, 0x000001edu, 0x000001eeu, 0x00060041u, 0x00000180u, 0x000001f0u, 0x000001e9u, 0x000000d3u, + 0x000001efu, 0x0004003du, 0x00000006u, 0x000001f1u, 0x000001f0u, 0x0004007cu, 0x00000008u, 0x000001f2u, + 0x000001f1u, 0x0003003eu, 0x000001e3u, 0x000001f2u, 0x000200f9u, 0x000001e5u, 0x000200f8u, 0x000001f3u, + 0x00050041u, 0x00000158u, 0x000001f8u, 0x00000157u, 0x000001eau, 0x0004003du, 0x00000006u, 0x000001f9u, + 0x000001f8u, 0x000500c2u, 0x00000006u, 0x000001fau, 0x000001f9u, 0x00000080u, 0x0004003du, 0x00000006u, + 0x000001fbu, 0x00000167u, 0x00050080u, 0x00000006u, 0x000001fcu, 0x000001fau, 0x000001fbu, 0x00060041u, + 0x000001ceu, 0x000001fdu, 0x000001f7u, 0x000000d3u, 0x000001fcu, 0x0004003du, 0x000001bfu, 0x000001feu, + 0x000001fdu, 0x00040071u, 0x00000006u, 0x000001ffu, 0x000001feu, 0x0003003eu, 0x00000200u, 0x000001ffu, + 0x00050041u, 0x00000158u, 0x00000202u, 0x00000157u, 0x00000066u, 0x0004003du, 0x00000006u, 0x00000203u, + 0x00000202u, 0x0003003eu, 0x00000201u, 0x00000203u, 0x00060039u, 0x00000008u, 0x00000204u, 0x0000001bu, + 0x00000200u, 0x00000201u, 0x0003003eu, 0x000001e3u, 0x00000204u, 0x000200f9u, 0x000001e5u, 0x000200f8u, + 0x000001e5u, 0x0004003du, 0x00000008u, 0x00000205u, 0x000001e3u, 0x0003003eu, 0x000001ddu, 0x00000205u, + 0x000200f9u, 0x000001dfu, 0x000200f8u, 0x00000206u, 0x0003003eu, 0x000001ddu, 0x00000207u, 0x000200f9u, + 0x000001dfu, 0x000200f8u, 0x000001dfu, 0x0004003du, 0x00000008u, 0x00000208u, 0x000001ddu, 0x0003003eu, + 0x000001d8u, 0x00000208u, 0x0003003eu, 0x00000209u, 0x00000036u, 0x000200f9u, 0x0000020au, 0x000200f8u, + 0x0000020au, 0x000400f6u, 0x0000020cu, 0x0000020du, 0x00000000u, 0x000200f9u, 0x0000020eu, 0x000200f8u, + 0x0000020eu, 0x0004003du, 0x00000006u, 0x0000020fu, 0x00000209u, 0x00050041u, 0x00000158u, 0x00000211u, + 0x00000157u, 0x00000210u, 0x0004003du, 0x00000006u, 0x00000212u, 0x00000211u, 0x000500b0u, 0x0000002cu, + 0x00000213u, 0x0000020fu, 0x00000212u, 0x000400fau, 0x00000213u, 0x0000020bu, 0x0000020cu, 0x000200f8u, + 0x0000020bu, 0x00050041u, 0x00000158u, 0x00000215u, 0x00000157u, 0x00000214u, 0x0004003du, 0x00000006u, + 0x00000216u, 0x00000215u, 0x000500aau, 0x0000002cu, 0x00000217u, 0x00000216u, 0x00000036u, 0x000300f7u, + 0x0000021au, 0x00000000u, 0x000400fau, 0x00000217u, 0x00000219u, 0x0000022cu, 0x000200f8u, 0x00000219u, + 0x00050041u, 0x00000158u, 0x0000021fu, 0x00000157u, 0x00000024u, 0x0004003du, 0x00000006u, 0x00000220u, + 0x0000021fu, 0x000500c2u, 0x00000006u, 0x00000221u, 0x00000220u, 0x0000017cu, 0x0004003du, 0x00000006u, + 0x00000222u, 0x00000167u, 0x00050041u, 0x00000158u, 0x00000223u, 0x00000157u, 0x0000017cu, 0x0004003du, + 0x00000006u, 0x00000224u, 0x00000223u, 0x00050084u, 0x00000006u, 0x00000225u, 0x00000222u, 0x00000224u, + 0x0004003du, 0x00000006u, 0x00000226u, 0x00000209u, 0x00050080u, 0x00000006u, 0x00000227u, 0x00000225u, + 0x00000226u, 0x00050080u, 0x00000006u, 0x00000228u, 0x00000221u, 0x00000227u, 0x00060041u, 0x00000180u, + 0x00000229u, 0x0000021eu, 0x000000d3u, 0x00000228u, 0x0004003du, 0x00000006u, 0x0000022au, 0x00000229u, + 0x0004007cu, 0x00000008u, 0x0000022bu, 0x0000022au, 0x0003003eu, 0x00000218u, 0x0000022bu, 0x000200f9u, + 0x0000021au, 0x000200f8u, 0x0000022cu, 0x00050041u, 0x00000158u, 0x00000231u, 0x00000157u, 0x00000024u, + 0x0004003du, 0x00000006u, 0x00000232u, 0x00000231u, 0x000500c2u, 0x00000006u, 0x00000233u, 0x00000232u, + 0x00000080u, 0x0004003du, 0x00000006u, 0x00000234u, 0x00000167u, 0x00050041u, 0x00000158u, 0x00000235u, + 0x00000157u, 0x0000017cu, 0x0004003du, 0x00000006u, 0x00000236u, 0x00000235u, 0x00050084u, 0x00000006u, + 0x00000237u, 0x00000234u, 0x00000236u, 0x0004003du, 0x00000006u, 0x00000238u, 0x00000209u, 0x00050080u, + 0x00000006u, 0x00000239u, 0x00000237u, 0x00000238u, 0x00050080u, 0x00000006u, 0x0000023au, 0x00000233u, + 0x00000239u, 0x00060041u, 0x000001ceu, 0x0000023bu, 0x00000230u, 0x000000d3u, 0x0000023au, 0x0004003du, + 0x000001bfu, 0x0000023cu, 0x0000023bu, 0x00040071u, 0x00000006u, 0x0000023du, 0x0000023cu, 0x0003003eu, + 0x0000023eu, 0x0000023du, 0x00050041u, 0x00000158u, 0x00000240u, 0x00000157u, 0x00000214u, 0x0004003du, + 0x00000006u, 0x00000241u, 0x00000240u, 0x0003003eu, 0x0000023fu, 0x00000241u, 0x00060039u, 0x00000008u, + 0x00000242u, 0x0000001bu, 0x0000023eu, 0x0000023fu, 0x0003003eu, 0x00000218u, 0x00000242u, 0x000200f9u, + 0x0000021au, 0x000200f8u, 0x0000021au, 0x0004003du, 0x00000008u, 0x00000243u, 0x00000218u, 0x0004003du, + 0x00000006u, 0x00000248u, 0x00000194u, 0x0004003du, 0x00000006u, 0x00000249u, 0x00000209u, 0x00050080u, + 0x00000006u, 0x0000024au, 0x00000248u, 0x00000249u, 0x00060041u, 0x00000180u, 0x0000024bu, 0x00000247u, + 0x000000d3u, 0x0000024au, 0x0004003du, 0x00000006u, 0x0000024cu, 0x0000024bu, 0x0004007cu, 0x00000008u, + 0x0000024du, 0x0000024cu, 0x00050085u, 0x00000008u, 0x0000024eu, 0x00000243u, 0x0000024du, 0x0004003du, + 0x00000008u, 0x0000024fu, 0x000001d8u, 0x00050081u, 0x00000008u, 0x00000250u, 0x0000024fu, 0x0000024eu, + 0x0003003eu, 0x000001d8u, 0x00000250u, 0x000200f9u, 0x0000020du, 0x000200f8u, 0x0000020du, 0x0004003du, + 0x00000006u, 0x00000251u, 0x00000209u, 0x00050080u, 0x00000006u, 0x00000252u, 0x00000251u, 0x00000080u, + 0x0003003eu, 0x00000209u, 0x00000252u, 0x000200f9u, 0x0000020au, 0x000200f8u, 0x0000020cu, 0x00050041u, + 0x00000158u, 0x00000253u, 0x00000157u, 0x00000214u, 0x0004003du, 0x00000006u, 0x00000254u, 0x00000253u, + 0x000500aau, 0x0000002cu, 0x00000255u, 0x00000254u, 0x00000036u, 0x000300f7u, 0x00000258u, 0x00000000u, + 0x000400fau, 0x00000255u, 0x00000257u, 0x00000267u, 0x000200f8u, 0x00000257u, 0x00050041u, 0x00000158u, + 0x00000259u, 0x00000157u, 0x00000024u, 0x0004003du, 0x00000006u, 0x0000025au, 0x00000259u, 0x000500c2u, + 0x00000006u, 0x0000025bu, 0x0000025au, 0x0000017cu, 0x0004003du, 0x00000006u, 0x0000025cu, 0x00000167u, + 0x00050041u, 0x00000158u, 0x0000025du, 0x00000157u, 0x0000017cu, 0x0004003du, 0x00000006u, 0x0000025eu, + 0x0000025du, 0x00050084u, 0x00000006u, 0x0000025fu, 0x0000025cu, 0x0000025eu, 0x00050041u, 0x00000158u, + 0x00000260u, 0x00000157u, 0x00000210u, 0x0004003du, 0x00000006u, 0x00000261u, 0x00000260u, 0x00050080u, + 0x00000006u, 0x00000262u, 0x0000025fu, 0x00000261u, 0x00050080u, 0x00000006u, 0x00000263u, 0x0000025bu, + 0x00000262u, 0x00060041u, 0x00000180u, 0x00000264u, 0x0000021eu, 0x000000d3u, 0x00000263u, 0x0004003du, + 0x00000006u, 0x00000265u, 0x00000264u, 0x0004007cu, 0x00000008u, 0x00000266u, 0x00000265u, 0x0003003eu, + 0x00000256u, 0x00000266u, 0x000200f9u, 0x00000258u, 0x000200f8u, 0x00000267u, 0x00050041u, 0x00000158u, + 0x00000268u, 0x00000157u, 0x00000024u, 0x0004003du, 0x00000006u, 0x00000269u, 0x00000268u, 0x000500c2u, + 0x00000006u, 0x0000026au, 0x00000269u, 0x00000080u, 0x0004003du, 0x00000006u, 0x0000026bu, 0x00000167u, + 0x00050041u, 0x00000158u, 0x0000026cu, 0x00000157u, 0x0000017cu, 0x0004003du, 0x00000006u, 0x0000026du, + 0x0000026cu, 0x00050084u, 0x00000006u, 0x0000026eu, 0x0000026bu, 0x0000026du, 0x00050041u, 0x00000158u, + 0x0000026fu, 0x00000157u, 0x00000210u, 0x0004003du, 0x00000006u, 0x00000270u, 0x0000026fu, 0x00050080u, + 0x00000006u, 0x00000271u, 0x0000026eu, 0x00000270u, 0x00050080u, 0x00000006u, 0x00000272u, 0x0000026au, + 0x00000271u, 0x00060041u, 0x000001ceu, 0x00000273u, 0x00000230u, 0x000000d3u, 0x00000272u, 0x0004003du, + 0x000001bfu, 0x00000274u, 0x00000273u, 0x00040071u, 0x00000006u, 0x00000275u, 0x00000274u, 0x0003003eu, + 0x00000276u, 0x00000275u, 0x00050041u, 0x00000158u, 0x00000278u, 0x00000157u, 0x00000214u, 0x0004003du, + 0x00000006u, 0x00000279u, 0x00000278u, 0x0003003eu, 0x00000277u, 0x00000279u, 0x00060039u, 0x00000008u, + 0x0000027au, 0x0000001bu, 0x00000276u, 0x00000277u, 0x0003003eu, 0x00000256u, 0x0000027au, 0x000200f9u, + 0x00000258u, 0x000200f8u, 0x00000258u, 0x0004003du, 0x00000008u, 0x0000027bu, 0x00000256u, 0x0004003du, + 0x00000008u, 0x0000027cu, 0x000001a4u, 0x00050085u, 0x00000008u, 0x0000027du, 0x0000027bu, 0x0000027cu, + 0x0004003du, 0x00000008u, 0x0000027eu, 0x000001d8u, 0x00050081u, 0x00000008u, 0x0000027fu, 0x0000027eu, + 0x0000027du, 0x0003003eu, 0x000001d8u, 0x0000027fu, 0x000200f9u, 0x00000280u, 0x000200f8u, 0x00000280u, + 0x000400f6u, 0x00000282u, 0x00000283u, 0x00000000u, 0x000200f9u, 0x00000281u, 0x000200f8u, 0x00000281u, + 0x00050041u, 0x00000158u, 0x00000284u, 0x00000157u, 0x00000057u, 0x0004003du, 0x00000006u, 0x00000285u, + 0x00000284u, 0x000500aau, 0x0000002cu, 0x00000286u, 0x00000285u, 0x00000036u, 0x000300f7u, 0x00000288u, + 0x00000000u, 0x000400fau, 0x00000286u, 0x00000287u, 0x000002aau, 0x000200f8u, 0x00000287u, 0x00050041u, + 0x00000158u, 0x0000028du, 0x00000157u, 0x000000e2u, 0x0004003du, 0x00000006u, 0x0000028eu, 0x0000028du, + 0x000500c2u, 0x00000006u, 0x0000028fu, 0x0000028eu, 0x0000017cu, 0x0004003du, 0x00000006u, 0x00000290u, + 0x00000162u, 0x00050041u, 0x00000158u, 0x00000291u, 0x00000157u, 0x00000080u, 0x0004003du, 0x00000006u, + 0x00000292u, 0x00000291u, 0x00050084u, 0x00000006u, 0x00000293u, 0x00000290u, 0x00000292u, 0x0004003du, + 0x00000006u, 0x00000294u, 0x00000167u, 0x00050080u, 0x00000006u, 0x00000295u, 0x00000293u, 0x00000294u, + 0x00050080u, 0x00000006u, 0x00000296u, 0x0000028fu, 0x00000295u, 0x00050041u, 0x00000158u, 0x00000298u, + 0x00000157u, 0x00000297u, 0x0004003du, 0x00000006u, 0x00000299u, 0x00000298u, 0x000500abu, 0x0000002cu, + 0x0000029au, 0x00000299u, 0x00000036u, 0x000300f7u, 0x0000029du, 0x00000000u, 0x000400fau, 0x0000029au, + 0x0000029cu, 0x000002a5u, 0x000200f8u, 0x0000029cu, 0x0004003du, 0x00000008u, 0x0000029eu, 0x000001d8u, + 0x0004003du, 0x00000008u, 0x000002a0u, 0x000001d8u, 0x0004007fu, 0x00000008u, 0x000002a1u, 0x000002a0u, + 0x0006000cu, 0x00000008u, 0x000002a2u, 0x00000001u, 0x0000001bu, 0x000002a1u, 0x00050081u, 0x00000008u, + 0x000002a3u, 0x0000029fu, 0x000002a2u, 0x00050088u, 0x00000008u, 0x000002a4u, 0x0000029eu, 0x000002a3u, + 0x0003003eu, 0x0000029bu, 0x000002a4u, 0x000200f9u, 0x0000029du, 0x000200f8u, 0x000002a5u, 0x0004003du, + 0x00000008u, 0x000002a6u, 0x000001d8u, 0x0003003eu, 0x0000029bu, 0x000002a6u, 0x000200f9u, 0x0000029du, + 0x000200f8u, 0x0000029du, 0x0004003du, 0x00000008u, 0x000002a7u, 0x0000029bu, 0x0004007cu, 0x00000006u, + 0x000002a8u, 0x000002a7u, 0x00060041u, 0x00000180u, 0x000002a9u, 0x0000028cu, 0x000000d3u, 0x00000296u, + 0x0003003eu, 0x000002a9u, 0x000002a8u, 0x000200f9u, 0x00000288u, 0x000200f8u, 0x000002aau, 0x00050041u, + 0x00000158u, 0x000002afu, 0x00000157u, 0x000000e2u, 0x0004003du, 0x00000006u, 0x000002b0u, 0x000002afu, + 0x000500c2u, 0x00000006u, 0x000002b1u, 0x000002b0u, 0x00000080u, 0x0004003du, 0x00000006u, 0x000002b2u, + 0x00000162u, 0x00050041u, 0x00000158u, 0x000002b3u, 0x00000157u, 0x00000080u, 0x0004003du, 0x00000006u, + 0x000002b4u, 0x000002b3u, 0x00050084u, 0x00000006u, 0x000002b5u, 0x000002b2u, 0x000002b4u, 0x0004003du, + 0x00000006u, 0x000002b6u, 0x00000167u, 0x00050080u, 0x00000006u, 0x000002b7u, 0x000002b5u, 0x000002b6u, + 0x00050080u, 0x00000006u, 0x000002b8u, 0x000002b1u, 0x000002b7u, 0x00050041u, 0x00000158u, 0x000002b9u, + 0x00000157u, 0x00000297u, 0x0004003du, 0x00000006u, 0x000002bau, 0x000002b9u, 0x000500abu, 0x0000002cu, + 0x000002bbu, 0x000002bau, 0x00000036u, 0x000300f7u, 0x000002beu, 0x00000000u, 0x000400fau, 0x000002bbu, + 0x000002bdu, 0x000002c5u, 0x000200f8u, 0x000002bdu, 0x0004003du, 0x00000008u, 0x000002bfu, 0x000001d8u, + 0x0004003du, 0x00000008u, 0x000002c0u, 0x000001d8u, 0x0004007fu, 0x00000008u, 0x000002c1u, 0x000002c0u, + 0x0006000cu, 0x00000008u, 0x000002c2u, 0x00000001u, 0x0000001bu, 0x000002c1u, 0x00050081u, 0x00000008u, + 0x000002c3u, 0x0000029fu, 0x000002c2u, 0x00050088u, 0x00000008u, 0x000002c4u, 0x000002bfu, 0x000002c3u, + 0x0003003eu, 0x000002bcu, 0x000002c4u, 0x000200f9u, 0x000002beu, 0x000200f8u, 0x000002c5u, 0x0004003du, + 0x00000008u, 0x000002c6u, 0x000001d8u, 0x0003003eu, 0x000002bcu, 0x000002c6u, 0x000200f9u, 0x000002beu, + 0x000200f8u, 0x000002beu, 0x0004003du, 0x00000008u, 0x000002c8u, 0x000002bcu, 0x0003003eu, 0x000002c7u, + 0x000002c8u, 0x00050041u, 0x00000158u, 0x000002cau, 0x00000157u, 0x00000057u, 0x0004003du, 0x00000006u, + 0x000002cbu, 0x000002cau, 0x0003003eu, 0x000002c9u, 0x000002cbu, 0x00060039u, 0x00000006u, 0x000002ccu, + 0x00000020u, 0x000002c7u, 0x000002c9u, 0x00040071u, 0x000001bfu, 0x000002cdu, 0x000002ccu, 0x00060041u, + 0x000001ceu, 0x000002ceu, 0x000002aeu, 0x000000d3u, 0x000002b8u, 0x0003003eu, 0x000002ceu, 0x000002cdu, + 0x000200f9u, 0x00000288u, 0x000200f8u, 0x00000288u, 0x000200f9u, 0x00000283u, 0x000200f8u, 0x00000283u, + 0x000400fau, 0x000002cfu, 0x00000280u, 0x00000282u, 0x000200f8u, 0x00000282u, 0x0003003eu, 0x000002d0u, + 0x00000036u, 0x000200f9u, 0x000002d1u, 0x000200f8u, 0x000002d1u, 0x000400f6u, 0x000002d3u, 0x000002d4u, + 0x00000000u, 0x000200f9u, 0x000002d5u, 0x000200f8u, 0x000002d5u, 0x0004003du, 0x00000006u, 0x000002d6u, + 0x000002d0u, 0x00050080u, 0x00000006u, 0x000002d7u, 0x000002d6u, 0x00000046u, 0x00050041u, 0x00000158u, + 0x000002d8u, 0x00000157u, 0x00000210u, 0x0004003du, 0x00000006u, 0x000002d9u, 0x000002d8u, 0x000500b0u, + 0x0000002cu, 0x000002dau, 0x000002d7u, 0x000002d9u, 0x000400fau, 0x000002dau, 0x000002d2u, 0x000002d3u, + 0x000200f8u, 0x000002d2u, 0x0004003du, 0x00000006u, 0x000002dbu, 0x00000194u, 0x0004003du, 0x00000006u, + 0x000002dcu, 0x000002d0u, 0x00050080u, 0x00000006u, 0x000002ddu, 0x000002dbu, 0x000002dcu, 0x0004003du, + 0x00000006u, 0x000002deu, 0x00000194u, 0x0004003du, 0x00000006u, 0x000002dfu, 0x000002d0u, 0x00050080u, + 0x00000006u, 0x000002e0u, 0x000002deu, 0x000002dfu, 0x00050080u, 0x00000006u, 0x000002e1u, 0x000002e0u, + 0x00000046u, 0x00060041u, 0x00000180u, 0x000002e2u, 0x00000247u, 0x000000d3u, 0x000002e1u, 0x0004003du, + 0x00000006u, 0x000002e3u, 0x000002e2u, 0x00060041u, 0x00000180u, 0x000002e4u, 0x00000247u, 0x000000d3u, + 0x000002ddu, 0x0003003eu, 0x000002e4u, 0x000002e3u, 0x000200f9u, 0x000002d4u, 0x000200f8u, 0x000002d4u, + 0x0004003du, 0x00000006u, 0x000002e5u, 0x000002d0u, 0x00050080u, 0x00000006u, 0x000002e6u, 0x000002e5u, + 0x00000080u, 0x0003003eu, 0x000002d0u, 0x000002e6u, 0x000200f9u, 0x000002d1u, 0x000200f8u, 0x000002d3u, + 0x00050041u, 0x00000158u, 0x000002e7u, 0x00000157u, 0x00000210u, 0x0004003du, 0x00000006u, 0x000002e8u, + 0x000002e7u, 0x000500acu, 0x0000002cu, 0x000002e9u, 0x000002e8u, 0x00000036u, 0x000300f7u, 0x000002ebu, + 0x00000000u, 0x000400fau, 0x000002e9u, 0x000002eau, 0x000002ebu, 0x000200f8u, 0x000002eau, 0x0004003du, + 0x00000006u, 0x000002ecu, 0x00000194u, 0x00050041u, 0x00000158u, 0x000002edu, 0x00000157u, 0x00000210u, + 0x0004003du, 0x00000006u, 0x000002eeu, 0x000002edu, 0x00050080u, 0x00000006u, 0x000002efu, 0x000002ecu, + 0x000002eeu, 0x00050082u, 0x00000006u, 0x000002f0u, 0x000002efu, 0x00000046u, 0x0004003du, 0x00000008u, + 0x000002f1u, 0x000001a4u, 0x0004007cu, 0x00000006u, 0x000002f2u, 0x000002f1u, 0x00060041u, 0x00000180u, + 0x000002f3u, 0x00000247u, 0x000000d3u, 0x000002f0u, 0x0003003eu, 0x000002f3u, 0x000002f2u, 0x000200f9u, + 0x000002ebu, 0x000200f8u, 0x000002ebu, 0x000100fdu, 0x00010038u, 0x00050036u, 0x00000008u, 0x0000000bu, + 0x00000000u, 0x00000009u, 0x00030037u, 0x00000007u, 0x0000000au, 0x000200f8u, 0x0000000cu, 0x0004003du, + 0x00000006u, 0x00000022u, 0x0000000au, 0x000500c4u, 0x00000006u, 0x00000025u, 0x00000022u, 0x00000024u, + 0x0004007cu, 0x00000008u, 0x00000026u, 0x00000025u, 0x000200feu, 0x00000026u, 0x00010038u, 0x00050036u, + 0x00000006u, 0x00000010u, 0x00000000u, 0x0000000eu, 0x00030037u, 0x0000000du, 0x0000000fu, 0x000200f8u, + 0x00000011u, 0x0004003bu, 0x00000007u, 0x00000029u, 0x00000007u, 0x0004003bu, 0x00000007u, 0x00000042u, + 0x00000007u, 0x0004003du, 0x00000008u, 0x0000002au, 0x0000000fu, 0x0004007cu, 0x00000006u, 0x0000002bu, + 0x0000002au, 0x0003003eu, 0x00000029u, 0x0000002bu, 0x0004003du, 0x00000006u, 0x0000002du, 0x00000029u, + 0x000500c7u, 0x00000006u, 0x0000002fu, 0x0000002du, 0x0000002eu, 0x000500aau, 0x0000002cu, 0x00000030u, + 0x0000002fu, 0x0000002eu, 0x000300f7u, 0x00000032u, 0x00000000u, 0x000400fau, 0x00000030u, 0x00000031u, + 0x00000032u, 0x000200f8u, 0x00000031u, 0x0004003du, 0x00000006u, 0x00000033u, 0x00000029u, 0x000500c7u, + 0x00000006u, 0x00000035u, 0x00000033u, 0x00000034u, 0x000500abu, 0x0000002cu, 0x00000037u, 0x00000035u, + 0x00000036u, 0x000200f9u, 0x00000032u, 0x000200f8u, 0x00000032u, 0x000700f5u, 0x0000002cu, 0x00000038u, + 0x00000030u, 0x00000011u, 0x00000037u, 0x00000031u, 0x000300f7u, 0x0000003au, 0x00000000u, 0x000400fau, + 0x00000038u, 0x00000039u, 0x0000003au, 0x000200f8u, 0x00000039u, 0x0004003du, 0x00000006u, 0x0000003bu, + 0x00000029u, 0x000500c2u, 0x00000006u, 0x0000003cu, 0x0000003bu, 0x00000024u, 0x000500c5u, 0x00000006u, + 0x0000003eu, 0x0000003cu, 0x0000003du, 0x000500c7u, 0x00000006u, 0x00000040u, 0x0000003eu, 0x0000003fu, + 0x000200feu, 0x00000040u, 0x000200f8u, 0x0000003au, 0x0004003du, 0x00000006u, 0x00000044u, 0x00000029u, + 0x000500c2u, 0x00000006u, 0x00000045u, 0x00000044u, 0x00000024u, 0x000500c7u, 0x00000006u, 0x00000047u, + 0x00000045u, 0x00000046u, 0x00050080u, 0x00000006u, 0x00000048u, 0x00000043u, 0x00000047u, 0x0003003eu, + 0x00000042u, 0x00000048u, 0x0004003du, 0x00000006u, 0x00000049u, 0x00000029u, 0x0004003du, 0x00000006u, + 0x0000004au, 0x00000042u, 0x00050080u, 0x00000006u, 0x0000004bu, 0x00000049u, 0x0000004au, 0x000500c2u, + 0x00000006u, 0x0000004cu, 0x0000004bu, 0x00000024u, 0x000500c7u, 0x00000006u, 0x0000004du, 0x0000004cu, + 0x0000003fu, 0x000200feu, 0x0000004du, 0x00010038u, 0x00050036u, 0x00000008u, 0x00000013u, 0x00000000u, + 0x00000009u, 0x00030037u, 0x00000007u, 0x00000012u, 0x000200f8u, 0x00000014u, 0x0004003bu, 0x00000007u, + 0x00000050u, 0x00000007u, 0x0004003bu, 0x00000007u, 0x00000055u, 0x00000007u, 0x0004003bu, 0x00000007u, + 0x0000005bu, 0x00000007u, 0x0004003bu, 0x00000007u, 0x00000076u, 0x00000007u, 0x0004003du, 0x00000006u, + 0x00000051u, 0x00000012u, 0x000500c7u, 0x00000006u, 0x00000053u, 0x00000051u, 0x00000052u, 0x000500c4u, + 0x00000006u, 0x00000054u, 0x00000053u, 0x00000024u, 0x0003003eu, 0x00000050u, 0x00000054u, 0x0004003du, + 0x00000006u, 0x00000056u, 0x00000012u, 0x000500c2u, 0x00000006u, 0x00000058u, 0x00000056u, 0x00000057u, + 0x000500c7u, 0x00000006u, 0x0000005au, 0x00000058u, 0x00000059u, 0x0003003eu, 0x00000055u, 0x0000005au, + 0x0004003du, 0x00000006u, 0x0000005cu, 0x00000012u, 0x000500c7u, 0x00000006u, 0x0000005eu, 0x0000005cu, + 0x0000005du, 0x0003003eu, 0x0000005bu, 0x0000005eu, 0x0004003du, 0x00000006u, 0x0000005fu, 0x00000055u, + 0x000500aau, 0x0000002cu, 0x00000060u, 0x0000005fu, 0x00000059u, 0x000300f7u, 0x00000062u, 0x00000000u, + 0x000400fau, 0x00000060u, 0x00000061u, 0x00000062u, 0x000200f8u, 0x00000061u, 0x0004003du, 0x00000006u, + 0x00000063u, 0x00000050u, 0x000500c5u, 0x00000006u, 0x00000064u, 0x00000063u, 0x0000002eu, 0x0004003du, + 0x00000006u, 0x00000065u, 0x0000005bu, 0x000500c4u, 0x00000006u, 0x00000067u, 0x00000065u, 0x00000066u, + 0x000500c5u, 0x00000006u, 0x00000068u, 0x00000064u, 0x00000067u, 0x0004007cu, 0x00000008u, 0x00000069u, + 0x00000068u, 0x000200feu, 0x00000069u, 0x000200f8u, 0x00000062u, 0x0004003du, 0x00000006u, 0x0000006bu, + 0x00000055u, 0x000500aau, 0x0000002cu, 0x0000006cu, 0x0000006bu, 0x00000036u, 0x000300f7u, 0x0000006eu, + 0x00000000u, 0x000400fau, 0x0000006cu, 0x0000006du, 0x0000006eu, 0x000200f8u, 0x0000006du, 0x0004003du, + 0x00000006u, 0x0000006fu, 0x0000005bu, 0x000500aau, 0x0000002cu, 0x00000070u, 0x0000006fu, 0x00000036u, + 0x000300f7u, 0x00000072u, 0x00000000u, 0x000400fau, 0x00000070u, 0x00000071u, 0x00000072u, 0x000200f8u, + 0x00000071u, 0x0004003du, 0x00000006u, 0x00000073u, 0x00000050u, 0x0004007cu, 0x00000008u, 0x00000074u, + 0x00000073u, 0x000200feu, 0x00000074u, 0x000200f8u, 0x00000072u, 0x0003003eu, 0x00000076u, 0x00000036u, + 0x000200f9u, 0x00000077u, 0x000200f8u, 0x00000077u, 0x000400f6u, 0x00000079u, 0x0000007au, 0x00000000u, + 0x000200f9u, 0x0000007bu, 0x000200f8u, 0x0000007bu, 0x0004003du, 0x00000006u, 0x0000007cu, 0x0000005bu, + 0x000500c7u, 0x00000006u, 0x0000007eu, 0x0000007cu, 0x0000007du, 0x000500aau, 0x0000002cu, 0x0000007fu, + 0x0000007eu, 0x00000036u, 0x000400fau, 0x0000007fu, 0x00000078u, 0x00000079u, 0x000200f8u, 0x00000078u, + 0x0004003du, 0x00000006u, 0x00000081u, 0x0000005bu, 0x000500c4u, 0x00000006u, 0x00000082u, 0x00000081u, + 0x00000080u, 0x0003003eu, 0x0000005bu, 0x00000082u, 0x0004003du, 0x00000006u, 0x00000083u, 0x00000076u, + 0x00050080u, 0x00000006u, 0x00000084u, 0x00000083u, 0x00000046u, 0x0003003eu, 0x00000076u, 0x00000084u, + 0x000200f9u, 0x0000007au, 0x000200f8u, 0x0000007au, 0x000200f9u, 0x00000077u, 0x000200f8u, 0x00000079u, + 0x0004003du, 0x00000006u, 0x00000085u, 0x0000005bu, 0x000500c7u, 0x00000006u, 0x00000086u, 0x00000085u, + 0x0000005du, 0x0003003eu, 0x0000005bu, 0x00000086u, 0x0004003du, 0x00000006u, 0x00000087u, 0x00000050u, + 0x0004003du, 0x00000006u, 0x00000089u, 0x00000076u, 0x00050082u, 0x00000006u, 0x0000008au, 0x00000088u, + 0x00000089u, 0x000500c4u, 0x00000006u, 0x0000008cu, 0x0000008au, 0x0000008bu, 0x000500c5u, 0x00000006u, + 0x0000008du, 0x00000087u, 0x0000008cu, 0x0004003du, 0x00000006u, 0x0000008eu, 0x0000005bu, 0x000500c4u, + 0x00000006u, 0x0000008fu, 0x0000008eu, 0x00000066u, 0x000500c5u, 0x00000006u, 0x00000090u, 0x0000008du, + 0x0000008fu, 0x0004007cu, 0x00000008u, 0x00000091u, 0x00000090u, 0x000200feu, 0x00000091u, 0x000200f8u, + 0x0000006eu, 0x0004003du, 0x00000006u, 0x00000093u, 0x00000050u, 0x0004003du, 0x00000006u, 0x00000094u, + 0x00000055u, 0x00050080u, 0x00000006u, 0x00000096u, 0x00000094u, 0x00000095u, 0x000500c4u, 0x00000006u, + 0x00000097u, 0x00000096u, 0x0000008bu, 0x000500c5u, 0x00000006u, 0x00000098u, 0x00000093u, 0x00000097u, + 0x0004003du, 0x00000006u, 0x00000099u, 0x0000005bu, 0x000500c4u, 0x00000006u, 0x0000009au, 0x00000099u, + 0x00000066u, 0x000500c5u, 0x00000006u, 0x0000009bu, 0x00000098u, 0x0000009au, 0x0004007cu, 0x00000008u, + 0x0000009cu, 0x0000009bu, 0x000200feu, 0x0000009cu, 0x00010038u, 0x00050036u, 0x00000006u, 0x00000016u, + 0x00000000u, 0x0000000eu, 0x00030037u, 0x0000000du, 0x00000015u, 0x000200f8u, 0x00000017u, 0x0004003bu, + 0x00000007u, 0x0000009fu, 0x00000007u, 0x0004003bu, 0x00000007u, 0x000000a2u, 0x00000007u, 0x0004003bu, + 0x00000007u, 0x000000a6u, 0x00000007u, 0x0004003bu, 0x000000abu, 0x000000acu, 0x00000007u, 0x0004003bu, + 0x00000007u, 0x000000b3u, 0x00000007u, 0x0004003bu, 0x00000007u, 0x000000bfu, 0x00000007u, 0x0004003bu, + 0x00000007u, 0x000000e1u, 0x00000007u, 0x0004003bu, 0x00000007u, 0x000000e6u, 0x00000007u, 0x0004003bu, + 0x00000007u, 0x000000eau, 0x00000007u, 0x0004003bu, 0x00000007u, 0x000000f0u, 0x00000007u, 0x0004003bu, + 0x00000007u, 0x0000010cu, 0x00000007u, 0x0004003bu, 0x00000007u, 0x00000113u, 0x00000007u, 0x0004003du, + 0x00000008u, 0x000000a0u, 0x00000015u, 0x0004007cu, 0x00000006u, 0x000000a1u, 0x000000a0u, 0x0003003eu, + 0x0000009fu, 0x000000a1u, 0x0004003du, 0x00000006u, 0x000000a3u, 0x0000009fu, 0x000500c2u, 0x00000006u, + 0x000000a4u, 0x000000a3u, 0x00000024u, 0x000500c7u, 0x00000006u, 0x000000a5u, 0x000000a4u, 0x00000052u, + 0x0003003eu, 0x000000a2u, 0x000000a5u, 0x0004003du, 0x00000006u, 0x000000a7u, 0x0000009fu, 0x000500c2u, + 0x00000006u, 0x000000a8u, 0x000000a7u, 0x0000008bu, 0x000500c7u, 0x00000006u, 0x000000aau, 0x000000a8u, + 0x000000a9u, 0x0003003eu, 0x000000a6u, 0x000000aau, 0x0004003du, 0x00000006u, 0x000000adu, 0x000000a6u, + 0x0004007cu, 0x00000023u, 0x000000aeu, 0x000000adu, 0x00050082u, 0x00000023u, 0x000000b0u, 0x000000aeu, + 0x000000afu, 0x00050080u, 0x00000023u, 0x000000b2u, 0x000000b0u, 0x000000b1u, 0x0003003eu, 0x000000acu, + 0x000000b2u, 0x0004003du, 0x00000006u, 0x000000b4u, 0x0000009fu, 0x000500c7u, 0x00000006u, 0x000000b5u, + 0x000000b4u, 0x00000034u, 0x0003003eu, 0x000000b3u, 0x000000b5u, 0x0004003du, 0x00000006u, 0x000000b6u, + 0x000000a6u, 0x000500aau, 0x0000002cu, 0x000000b7u, 0x000000b6u, 0x000000a9u, 0x000300f7u, 0x000000b9u, + 0x00000000u, 0x000400fau, 0x000000b7u, 0x000000b8u, 0x000000b9u, 0x000200f8u, 0x000000b8u, 0x0004003du, + 0x00000006u, 0x000000bau, 0x000000a2u, 0x000500c5u, 0x00000006u, 0x000000bcu, 0x000000bau, 0x000000bbu, + 0x0004003du, 0x00000006u, 0x000000bdu, 0x000000b3u, 0x000500abu, 0x0000002cu, 0x000000beu, 0x000000bdu, + 0x00000036u, 0x000300f7u, 0x000000c1u, 0x00000000u, 0x000400fau, 0x000000beu, 0x000000c0u, 0x000000c6u, + 0x000200f8u, 0x000000c0u, 0x0004003du, 0x00000006u, 0x000000c3u, 0x000000b3u, 0x000500c2u, 0x00000006u, + 0x000000c4u, 0x000000c3u, 0x00000066u, 0x000500c5u, 0x00000006u, 0x000000c5u, 0x000000c2u, 0x000000c4u, + 0x0003003eu, 0x000000bfu, 0x000000c5u, 0x000200f9u, 0x000000c1u, 0x000200f8u, 0x000000c6u, 0x0003003eu, + 0x000000bfu, 0x00000036u, 0x000200f9u, 0x000000c1u, 0x000200f8u, 0x000000c1u, 0x0004003du, 0x00000006u, + 0x000000c7u, 0x000000bfu, 0x000500c5u, 0x00000006u, 0x000000c8u, 0x000000bcu, 0x000000c7u, 0x000200feu, + 0x000000c8u, 0x000200f8u, 0x000000b9u, 0x0004003du, 0x00000023u, 0x000000cau, 0x000000acu, 0x000500afu, + 0x0000002cu, 0x000000ccu, 0x000000cau, 0x000000cbu, 0x000300f7u, 0x000000ceu, 0x00000000u, 0x000400fau, + 0x000000ccu, 0x000000cdu, 0x000000ceu, 0x000200f8u, 0x000000cdu, 0x0004003du, 0x00000006u, 0x000000cfu, + 0x000000a2u, 0x000500c5u, 0x00000006u, 0x000000d0u, 0x000000cfu, 0x000000bbu, 0x000200feu, 0x000000d0u, + 0x000200f8u, 0x000000ceu, 0x0004003du, 0x00000023u, 0x000000d2u, 0x000000acu, 0x000500b3u, 0x0000002cu, + 0x000000d4u, 0x000000d2u, 0x000000d3u, 0x000300f7u, 0x000000d6u, 0x00000000u, 0x000400fau, 0x000000d4u, + 0x000000d5u, 0x000000d6u, 0x000200f8u, 0x000000d5u, 0x0004003du, 0x00000023u, 0x000000d7u, 0x000000acu, + 0x000500b1u, 0x0000002cu, 0x000000d9u, 0x000000d7u, 0x000000d8u, 0x000300f7u, 0x000000dbu, 0x00000000u, + 0x000400fau, 0x000000d9u, 0x000000dau, 0x000000dbu, 0x000200f8u, 0x000000dau, 0x0004003du, 0x00000006u, + 0x000000dcu, 0x000000a2u, 0x000200feu, 0x000000dcu, 0x000200f8u, 0x000000dbu, 0x0004003du, 0x00000006u, + 0x000000dfu, 0x000000b3u, 0x000500c5u, 0x00000006u, 0x000000e0u, 0x000000dfu, 0x000000deu, 0x0003003eu, + 0x000000b3u, 0x000000e0u, 0x0004003du, 0x00000023u, 0x000000e3u, 0x000000acu, 0x00050082u, 0x00000023u, + 0x000000e4u, 0x000000e2u, 0x000000e3u, 0x0004007cu, 0x00000006u, 0x000000e5u, 0x000000e4u, 0x0003003eu, + 0x000000e1u, 0x000000e5u, 0x0004003du, 0x00000006u, 0x000000e7u, 0x000000b3u, 0x0004003du, 0x00000006u, + 0x000000e8u, 0x000000e1u, 0x000500c2u, 0x00000006u, 0x000000e9u, 0x000000e7u, 0x000000e8u, 0x0003003eu, + 0x000000e6u, 0x000000e9u, 0x0004003du, 0x00000006u, 0x000000ebu, 0x000000b3u, 0x0004003du, 0x00000006u, + 0x000000ecu, 0x000000e1u, 0x000500c4u, 0x00000006u, 0x000000edu, 0x00000046u, 0x000000ecu, 0x00050082u, + 0x00000006u, 0x000000eeu, 0x000000edu, 0x00000046u, 0x000500c7u, 0x00000006u, 0x000000efu, 0x000000ebu, + 0x000000eeu, 0x0003003eu, 0x000000eau, 0x000000efu, 0x0004003du, 0x00000006u, 0x000000f1u, 0x000000e1u, + 0x00050082u, 0x00000006u, 0x000000f2u, 0x000000f1u, 0x00000046u, 0x000500c4u, 0x00000006u, 0x000000f3u, + 0x00000046u, 0x000000f2u, 0x0003003eu, 0x000000f0u, 0x000000f3u, 0x0004003du, 0x00000006u, 0x000000f4u, + 0x000000eau, 0x0004003du, 0x00000006u, 0x000000f5u, 0x000000f0u, 0x000500acu, 0x0000002cu, 0x000000f6u, + 0x000000f4u, 0x000000f5u, 0x000400a8u, 0x0000002cu, 0x000000f7u, 0x000000f6u, 0x000300f7u, 0x000000f9u, + 0x00000000u, 0x000400fau, 0x000000f7u, 0x000000f8u, 0x000000f9u, 0x000200f8u, 0x000000f8u, 0x0004003du, + 0x00000006u, 0x000000fau, 0x000000eau, 0x0004003du, 0x00000006u, 0x000000fbu, 0x000000f0u, 0x000500aau, + 0x0000002cu, 0x000000fcu, 0x000000fau, 0x000000fbu, 0x000300f7u, 0x000000feu, 0x00000000u, 0x000400fau, + 0x000000fcu, 0x000000fdu, 0x000000feu, 0x000200f8u, 0x000000fdu, 0x0004003du, 0x00000006u, 0x000000ffu, + 0x000000e6u, 0x000500c7u, 0x00000006u, 0x00000100u, 0x000000ffu, 0x00000046u, 0x000500abu, 0x0000002cu, + 0x00000101u, 0x00000100u, 0x00000036u, 0x000200f9u, 0x000000feu, 0x000200f8u, 0x000000feu, 0x000700f5u, + 0x0000002cu, 0x00000102u, 0x000000fcu, 0x000000f8u, 0x00000101u, 0x000000fdu, 0x000200f9u, 0x000000f9u, + 0x000200f8u, 0x000000f9u, 0x000700f5u, 0x0000002cu, 0x00000103u, 0x000000f6u, 0x000000dbu, 0x00000102u, + 0x000000feu, 0x000300f7u, 0x00000105u, 0x00000000u, 0x000400fau, 0x00000103u, 0x00000104u, 0x00000105u, + 0x000200f8u, 0x00000104u, 0x0004003du, 0x00000006u, 0x00000106u, 0x000000e6u, 0x00050080u, 0x00000006u, + 0x00000107u, 0x00000106u, 0x00000046u, 0x0003003eu, 0x000000e6u, 0x00000107u, 0x000200f9u, 0x00000105u, + 0x000200f8u, 0x00000105u, 0x0004003du, 0x00000006u, 0x00000108u, 0x000000a2u, 0x0004003du, 0x00000006u, + 0x00000109u, 0x000000e6u, 0x000500c5u, 0x00000006u, 0x0000010au, 0x00000108u, 0x00000109u, 0x000200feu, + 0x0000010au, 0x000200f8u, 0x000000d6u, 0x0004003du, 0x00000023u, 0x0000010du, 0x000000acu, 0x0004007cu, + 0x00000006u, 0x0000010eu, 0x0000010du, 0x000500c4u, 0x00000006u, 0x0000010fu, 0x0000010eu, 0x00000057u, + 0x0004003du, 0x00000006u, 0x00000110u, 0x000000b3u, 0x000500c2u, 0x00000006u, 0x00000111u, 0x00000110u, + 0x00000066u, 0x000500c5u, 0x00000006u, 0x00000112u, 0x0000010fu, 0x00000111u, 0x0003003eu, 0x0000010cu, + 0x00000112u, 0x0004003du, 0x00000006u, 0x00000114u, 0x000000b3u, 0x000500c7u, 0x00000006u, 0x00000116u, + 0x00000114u, 0x00000115u, 0x0003003eu, 0x00000113u, 0x00000116u, 0x0004003du, 0x00000006u, 0x00000117u, + 0x00000113u, 0x000500acu, 0x0000002cu, 0x00000119u, 0x00000117u, 0x00000118u, 0x000400a8u, 0x0000002cu, + 0x0000011au, 0x00000119u, 0x000300f7u, 0x0000011cu, 0x00000000u, 0x000400fau, 0x0000011au, 0x0000011bu, + 0x0000011cu, 0x000200f8u, 0x0000011bu, 0x0004003du, 0x00000006u, 0x0000011du, 0x00000113u, 0x000500aau, + 0x0000002cu, 0x0000011eu, 0x0000011du, 0x00000118u, 0x000300f7u, 0x00000120u, 0x00000000u, 0x000400fau, + 0x0000011eu, 0x0000011fu, 0x00000120u, 0x000200f8u, 0x0000011fu, 0x0004003du, 0x00000006u, 0x00000121u, + 0x0000010cu, 0x000500c7u, 0x00000006u, 0x00000122u, 0x00000121u, 0x00000046u, 0x000500abu, 0x0000002cu, + 0x00000123u, 0x00000122u, 0x00000036u, 0x000200f9u, 0x00000120u, 0x000200f8u, 0x00000120u, 0x000700f5u, + 0x0000002cu, 0x00000124u, 0x0000011eu, 0x0000011bu, 0x00000123u, 0x0000011fu, 0x000200f9u, 0x0000011cu, + 0x000200f8u, 0x0000011cu, 0x000700f5u, 0x0000002cu, 0x00000125u, 0x00000119u, 0x000000d6u, 0x00000124u, + 0x00000120u, 0x000300f7u, 0x00000127u, 0x00000000u, 0x000400fau, 0x00000125u, 0x00000126u, 0x00000127u, + 0x000200f8u, 0x00000126u, 0x0004003du, 0x00000006u, 0x00000128u, 0x0000010cu, 0x00050080u, 0x00000006u, + 0x00000129u, 0x00000128u, 0x00000046u, 0x0003003eu, 0x0000010cu, 0x00000129u, 0x000200f9u, 0x00000127u, + 0x000200f8u, 0x00000127u, 0x0004003du, 0x00000006u, 0x0000012au, 0x000000a2u, 0x0004003du, 0x00000006u, + 0x0000012bu, 0x0000010cu, 0x000500c5u, 0x00000006u, 0x0000012cu, 0x0000012au, 0x0000012bu, 0x000200feu, + 0x0000012cu, 0x00010038u, 0x00050036u, 0x00000008u, 0x0000001bu, 0x00000000u, 0x00000018u, 0x00030037u, + 0x00000007u, 0x00000019u, 0x00030037u, 0x00000007u, 0x0000001au, 0x000200f8u, 0x0000001cu, 0x0004003bu, + 0x0000000du, 0x00000131u, 0x00000007u, 0x0004003bu, 0x00000007u, 0x00000134u, 0x00000007u, 0x0004003bu, + 0x00000007u, 0x00000138u, 0x00000007u, 0x0004003du, 0x00000006u, 0x0000012fu, 0x0000001au, 0x000500aau, + 0x0000002cu, 0x00000130u, 0x0000012fu, 0x00000046u, 0x000300f7u, 0x00000133u, 0x00000000u, 0x000400fau, + 0x00000130u, 0x00000132u, 0x00000137u, 0x000200f8u, 0x00000132u, 0x0004003du, 0x00000006u, 0x00000135u, + 0x00000019u, 0x0003003eu, 0x00000134u, 0x00000135u, 0x00050039u, 0x00000008u, 0x00000136u, 0x00000013u, + 0x00000134u, 0x0003003eu, 0x00000131u, 0x00000136u, 0x000200f9u, 0x00000133u, 0x000200f8u, 0x00000137u, + 0x0004003du, 0x00000006u, 0x00000139u, 0x00000019u, 0x0003003eu, 0x00000138u, 0x00000139u, 0x00050039u, + 0x00000008u, 0x0000013au, 0x0000000bu, 0x00000138u, 0x0003003eu, 0x00000131u, 0x0000013au, 0x000200f9u, + 0x00000133u, 0x000200f8u, 0x00000133u, 0x0004003du, 0x00000008u, 0x0000013bu, 0x00000131u, 0x000200feu, + 0x0000013bu, 0x00010038u, 0x00050036u, 0x00000006u, 0x00000020u, 0x00000000u, 0x0000001du, 0x00030037u, + 0x0000000du, 0x0000001eu, 0x00030037u, 0x00000007u, 0x0000001fu, 0x000200f8u, 0x00000021u, 0x0004003bu, + 0x00000007u, 0x00000140u, 0x00000007u, 0x0004003bu, 0x0000000du, 0x00000143u, 0x00000007u, 0x0004003bu, + 0x0000000du, 0x00000147u, 0x00000007u, 0x0004003du, 0x00000006u, 0x0000013eu, 0x0000001fu, 0x000500aau, + 0x0000002cu, 0x0000013fu, 0x0000013eu, 0x00000046u, 0x000300f7u, 0x00000142u, 0x00000000u, 0x000400fau, + 0x0000013fu, 0x00000141u, 0x00000146u, 0x000200f8u, 0x00000141u, 0x0004003du, 0x00000008u, 0x00000144u, + 0x0000001eu, 0x0003003eu, 0x00000143u, 0x00000144u, 0x00050039u, 0x00000006u, 0x00000145u, 0x00000016u, + 0x00000143u, 0x0003003eu, 0x00000140u, 0x00000145u, 0x000200f9u, 0x00000142u, 0x000200f8u, 0x00000146u, + 0x0004003du, 0x00000008u, 0x00000148u, 0x0000001eu, 0x0003003eu, 0x00000147u, 0x00000148u, 0x00050039u, + 0x00000006u, 0x00000149u, 0x00000010u, 0x00000147u, 0x0003003eu, 0x00000140u, 0x00000149u, 0x000200f9u, + 0x00000142u, 0x000200f8u, 0x00000142u, 0x0004003du, 0x00000006u, 0x0000014au, 0x00000140u, 0x000200feu, + 0x0000014au, 0x00010038u, +}; + constexpr uint32_t kSpv_vt_embedding[] = { 0x07230203u, 0x00010300u, 0x0008000bu, 0x000001e9u, 0x00000000u, 0x00020011u, 0x00000001u, 0x00020011u, 0x00001151u, 0x0006000bu, 0x00000001u, 0x4c534c47u, 0x6474732eu, 0x3035342eu, 0x00000000u, 0x0003000eu, @@ -2103,54 +2608,1566 @@ constexpr uint32_t kSpv_vt_fused_chain[] = { 0x00000006u, 0x00000134u, 0x00000115u, 0x000500c5u, 0x00000006u, 0x00000135u, 0x00000133u, 0x00000134u, 0x000200feu, 0x00000135u, 0x00010038u, 0x00050036u, 0x00000008u, 0x0000001bu, 0x00000000u, 0x00000018u, 0x00030037u, 0x00000007u, 0x00000019u, 0x00030037u, 0x00000007u, 0x0000001au, 0x000200f8u, 0x0000001cu, - 0x0004003bu, 0x0000000du, 0x0000013au, 0x00000007u, 0x0004003bu, 0x00000007u, 0x0000013du, 0x00000007u, - 0x0004003bu, 0x00000007u, 0x00000141u, 0x00000007u, 0x0004003du, 0x00000006u, 0x00000138u, 0x0000001au, - 0x000500aau, 0x00000035u, 0x00000139u, 0x00000138u, 0x0000004fu, 0x000300f7u, 0x0000013cu, 0x00000000u, - 0x000400fau, 0x00000139u, 0x0000013bu, 0x00000140u, 0x000200f8u, 0x0000013bu, 0x0004003du, 0x00000006u, - 0x0000013eu, 0x00000019u, 0x0003003eu, 0x0000013du, 0x0000013eu, 0x00050039u, 0x00000008u, 0x0000013fu, - 0x00000013u, 0x0000013du, 0x0003003eu, 0x0000013au, 0x0000013fu, 0x000200f9u, 0x0000013cu, 0x000200f8u, - 0x00000140u, 0x0004003du, 0x00000006u, 0x00000142u, 0x00000019u, 0x0003003eu, 0x00000141u, 0x00000142u, - 0x00050039u, 0x00000008u, 0x00000143u, 0x0000000bu, 0x00000141u, 0x0003003eu, 0x0000013au, 0x00000143u, - 0x000200f9u, 0x0000013cu, 0x000200f8u, 0x0000013cu, 0x0004003du, 0x00000008u, 0x00000144u, 0x0000013au, - 0x000200feu, 0x00000144u, 0x00010038u, 0x00050036u, 0x00000006u, 0x00000020u, 0x00000000u, 0x0000001du, + 0x0004003bu, 0x0000000du, 0x0000013au, 0x00000007u, 0x0004003bu, 0x00000007u, 0x0000013du, 0x00000007u, + 0x0004003bu, 0x00000007u, 0x00000141u, 0x00000007u, 0x0004003du, 0x00000006u, 0x00000138u, 0x0000001au, + 0x000500aau, 0x00000035u, 0x00000139u, 0x00000138u, 0x0000004fu, 0x000300f7u, 0x0000013cu, 0x00000000u, + 0x000400fau, 0x00000139u, 0x0000013bu, 0x00000140u, 0x000200f8u, 0x0000013bu, 0x0004003du, 0x00000006u, + 0x0000013eu, 0x00000019u, 0x0003003eu, 0x0000013du, 0x0000013eu, 0x00050039u, 0x00000008u, 0x0000013fu, + 0x00000013u, 0x0000013du, 0x0003003eu, 0x0000013au, 0x0000013fu, 0x000200f9u, 0x0000013cu, 0x000200f8u, + 0x00000140u, 0x0004003du, 0x00000006u, 0x00000142u, 0x00000019u, 0x0003003eu, 0x00000141u, 0x00000142u, + 0x00050039u, 0x00000008u, 0x00000143u, 0x0000000bu, 0x00000141u, 0x0003003eu, 0x0000013au, 0x00000143u, + 0x000200f9u, 0x0000013cu, 0x000200f8u, 0x0000013cu, 0x0004003du, 0x00000008u, 0x00000144u, 0x0000013au, + 0x000200feu, 0x00000144u, 0x00010038u, 0x00050036u, 0x00000006u, 0x00000020u, 0x00000000u, 0x0000001du, + 0x00030037u, 0x0000000du, 0x0000001eu, 0x00030037u, 0x00000007u, 0x0000001fu, 0x000200f8u, 0x00000021u, + 0x0004003bu, 0x00000007u, 0x00000149u, 0x00000007u, 0x0004003bu, 0x0000000du, 0x0000014cu, 0x00000007u, + 0x0004003bu, 0x0000000du, 0x00000150u, 0x00000007u, 0x0004003du, 0x00000006u, 0x00000147u, 0x0000001fu, + 0x000500aau, 0x00000035u, 0x00000148u, 0x00000147u, 0x0000004fu, 0x000300f7u, 0x0000014bu, 0x00000000u, + 0x000400fau, 0x00000148u, 0x0000014au, 0x0000014fu, 0x000200f8u, 0x0000014au, 0x0004003du, 0x00000008u, + 0x0000014du, 0x0000001eu, 0x0003003eu, 0x0000014cu, 0x0000014du, 0x00050039u, 0x00000006u, 0x0000014eu, + 0x00000016u, 0x0000014cu, 0x0003003eu, 0x00000149u, 0x0000014eu, 0x000200f9u, 0x0000014bu, 0x000200f8u, + 0x0000014fu, 0x0004003du, 0x00000008u, 0x00000151u, 0x0000001eu, 0x0003003eu, 0x00000150u, 0x00000151u, + 0x00050039u, 0x00000006u, 0x00000152u, 0x00000010u, 0x00000150u, 0x0003003eu, 0x00000149u, 0x00000152u, + 0x000200f9u, 0x0000014bu, 0x000200f8u, 0x0000014bu, 0x0004003du, 0x00000006u, 0x00000153u, 0x00000149u, + 0x000200feu, 0x00000153u, 0x00010038u, 0x00050036u, 0x00000008u, 0x00000024u, 0x00000000u, 0x00000022u, + 0x00030037u, 0x0000000du, 0x00000023u, 0x000200f8u, 0x00000025u, 0x0004003du, 0x00000008u, 0x00000157u, + 0x00000023u, 0x0004007fu, 0x00000008u, 0x00000158u, 0x00000157u, 0x0006000cu, 0x00000008u, 0x00000159u, + 0x00000001u, 0x0000001bu, 0x00000158u, 0x00050081u, 0x00000008u, 0x0000015au, 0x00000156u, 0x00000159u, + 0x00050088u, 0x00000008u, 0x0000015bu, 0x00000156u, 0x0000015au, 0x000200feu, 0x0000015bu, 0x00010038u, + 0x00050036u, 0x00000008u, 0x00000029u, 0x00000000u, 0x00000026u, 0x00030037u, 0x00000007u, 0x00000027u, + 0x00030037u, 0x0000000du, 0x00000028u, 0x000200f8u, 0x0000002au, 0x0004003bu, 0x00000007u, 0x00000168u, + 0x00000007u, 0x000400e0u, 0x0000015eu, 0x0000015eu, 0x0000015fu, 0x0004003du, 0x00000006u, 0x00000164u, + 0x00000027u, 0x0004003du, 0x00000008u, 0x00000165u, 0x00000028u, 0x00050041u, 0x00000166u, 0x00000167u, + 0x00000163u, 0x00000164u, 0x0003003eu, 0x00000167u, 0x00000165u, 0x000400e0u, 0x0000015eu, 0x0000015eu, + 0x0000015fu, 0x0003003eu, 0x00000168u, 0x00000046u, 0x000200f9u, 0x00000169u, 0x000200f8u, 0x00000169u, + 0x000400f6u, 0x0000016bu, 0x0000016cu, 0x00000000u, 0x000200f9u, 0x0000016du, 0x000200f8u, 0x0000016du, + 0x0004003du, 0x00000006u, 0x0000016eu, 0x00000168u, 0x000500acu, 0x00000035u, 0x0000016fu, 0x0000016eu, + 0x0000003fu, 0x000400fau, 0x0000016fu, 0x0000016au, 0x0000016bu, 0x000200f8u, 0x0000016au, 0x0004003du, + 0x00000006u, 0x00000170u, 0x00000027u, 0x0004003du, 0x00000006u, 0x00000171u, 0x00000168u, 0x000500b0u, + 0x00000035u, 0x00000172u, 0x00000170u, 0x00000171u, 0x000300f7u, 0x00000174u, 0x00000000u, 0x000400fau, + 0x00000172u, 0x00000173u, 0x00000174u, 0x000200f8u, 0x00000173u, 0x0004003du, 0x00000006u, 0x00000175u, + 0x00000027u, 0x0004003du, 0x00000006u, 0x00000176u, 0x00000027u, 0x0004003du, 0x00000006u, 0x00000177u, + 0x00000168u, 0x00050080u, 0x00000006u, 0x00000178u, 0x00000176u, 0x00000177u, 0x00050041u, 0x00000166u, + 0x00000179u, 0x00000163u, 0x00000178u, 0x0004003du, 0x00000008u, 0x0000017au, 0x00000179u, 0x00050041u, + 0x00000166u, 0x0000017bu, 0x00000163u, 0x00000175u, 0x0004003du, 0x00000008u, 0x0000017cu, 0x0000017bu, + 0x00050081u, 0x00000008u, 0x0000017du, 0x0000017cu, 0x0000017au, 0x00050041u, 0x00000166u, 0x0000017eu, + 0x00000163u, 0x00000175u, 0x0003003eu, 0x0000017eu, 0x0000017du, 0x000200f9u, 0x00000174u, 0x000200f8u, + 0x00000174u, 0x000400e0u, 0x0000015eu, 0x0000015eu, 0x0000015fu, 0x000200f9u, 0x0000016cu, 0x000200f8u, + 0x0000016cu, 0x0004003du, 0x00000006u, 0x0000017fu, 0x00000168u, 0x000500c2u, 0x00000006u, 0x00000180u, + 0x0000017fu, 0x00000089u, 0x0003003eu, 0x00000168u, 0x00000180u, 0x000200f9u, 0x00000169u, 0x000200f8u, + 0x0000016bu, 0x00050041u, 0x00000166u, 0x00000181u, 0x00000163u, 0x000000dcu, 0x0004003du, 0x00000008u, + 0x00000182u, 0x00000181u, 0x000200feu, 0x00000182u, 0x00010038u, +}; + +constexpr uint32_t kSpv_vt_gdn_post_conv[] = { + 0x07230203u, 0x00010300u, 0x0008000bu, 0x0000048bu, 0x00000000u, 0x00020011u, 0x00000001u, 0x00020011u, + 0x00001151u, 0x0006000bu, 0x00000001u, 0x4c534c47u, 0x6474732eu, 0x3035342eu, 0x00000000u, 0x0003000eu, + 0x00000000u, 0x00000001u, 0x0007000fu, 0x00000005u, 0x00000004u, 0x6e69616du, 0x00000000u, 0x0000019fu, + 0x000001afu, 0x00060010u, 0x00000004u, 0x00000011u, 0x00000080u, 0x00000001u, 0x00000001u, 0x00040047u, + 0x0000019fu, 0x0000000bu, 0x0000001bu, 0x00030047u, 0x000001a4u, 0x00000002u, 0x00050048u, 0x000001a4u, + 0x00000000u, 0x00000023u, 0x00000000u, 0x00050048u, 0x000001a4u, 0x00000001u, 0x00000023u, 0x00000004u, + 0x00050048u, 0x000001a4u, 0x00000002u, 0x00000023u, 0x00000008u, 0x00050048u, 0x000001a4u, 0x00000003u, + 0x00000023u, 0x0000000cu, 0x00050048u, 0x000001a4u, 0x00000004u, 0x00000023u, 0x00000010u, 0x00050048u, + 0x000001a4u, 0x00000005u, 0x00000023u, 0x00000014u, 0x00050048u, 0x000001a4u, 0x00000006u, 0x00000023u, + 0x00000018u, 0x00050048u, 0x000001a4u, 0x00000007u, 0x00000023u, 0x0000001cu, 0x00050048u, 0x000001a4u, + 0x00000008u, 0x00000023u, 0x00000020u, 0x00050048u, 0x000001a4u, 0x00000009u, 0x00000023u, 0x00000024u, + 0x00050048u, 0x000001a4u, 0x0000000au, 0x00000023u, 0x00000028u, 0x00050048u, 0x000001a4u, 0x0000000bu, + 0x00000023u, 0x0000002cu, 0x00050048u, 0x000001a4u, 0x0000000cu, 0x00000023u, 0x00000030u, 0x00050048u, + 0x000001a4u, 0x0000000du, 0x00000023u, 0x00000034u, 0x00050048u, 0x000001a4u, 0x0000000eu, 0x00000023u, + 0x00000038u, 0x00050048u, 0x000001a4u, 0x0000000fu, 0x00000023u, 0x0000003cu, 0x00050048u, 0x000001a4u, + 0x00000010u, 0x00000023u, 0x00000040u, 0x00050048u, 0x000001a4u, 0x00000011u, 0x00000023u, 0x00000044u, + 0x00050048u, 0x000001a4u, 0x00000012u, 0x00000023u, 0x00000048u, 0x00050048u, 0x000001a4u, 0x00000013u, + 0x00000023u, 0x0000004cu, 0x00050048u, 0x000001a4u, 0x00000014u, 0x00000023u, 0x00000050u, 0x00040047u, + 0x000001afu, 0x0000000bu, 0x0000001au, 0x00040047u, 0x000001e9u, 0x00000001u, 0x00000000u, 0x00040047u, + 0x000001eeu, 0x00000006u, 0x00000004u, 0x00030047u, 0x000001efu, 0x00000002u, 0x00040048u, 0x000001efu, + 0x00000000u, 0x00000018u, 0x00050048u, 0x000001efu, 0x00000000u, 0x00000023u, 0x00000000u, 0x00030047u, + 0x000001f1u, 0x00000018u, 0x00040047u, 0x000001f1u, 0x00000021u, 0x00000000u, 0x00040047u, 0x000001f1u, + 0x00000022u, 0x00000000u, 0x00040047u, 0x000001ffu, 0x00000006u, 0x00000002u, 0x00030047u, 0x00000200u, + 0x00000002u, 0x00040048u, 0x00000200u, 0x00000000u, 0x00000018u, 0x00050048u, 0x00000200u, 0x00000000u, + 0x00000023u, 0x00000000u, 0x00030047u, 0x00000202u, 0x00000018u, 0x00040047u, 0x00000202u, 0x00000021u, + 0x00000001u, 0x00040047u, 0x00000202u, 0x00000022u, 0x00000000u, 0x00040047u, 0x00000273u, 0x00000001u, + 0x00000001u, 0x00040047u, 0x00000277u, 0x00000006u, 0x00000004u, 0x00030047u, 0x00000278u, 0x00000002u, + 0x00050048u, 0x00000278u, 0x00000000u, 0x00000023u, 0x00000000u, 0x00040047u, 0x0000027au, 0x00000021u, + 0x00000002u, 0x00040047u, 0x0000027au, 0x00000022u, 0x00000000u, 0x00040047u, 0x000002a3u, 0x00000006u, + 0x00000002u, 0x00030047u, 0x000002a4u, 0x00000002u, 0x00050048u, 0x000002a4u, 0x00000000u, 0x00000023u, + 0x00000000u, 0x00040047u, 0x000002a6u, 0x00000021u, 0x00000003u, 0x00040047u, 0x000002a6u, 0x00000022u, + 0x00000000u, 0x00040047u, 0x000002d8u, 0x00000006u, 0x00000004u, 0x00030047u, 0x000002d9u, 0x00000002u, + 0x00050048u, 0x000002d9u, 0x00000000u, 0x00000023u, 0x00000000u, 0x00040047u, 0x000002dbu, 0x00000021u, + 0x00000004u, 0x00040047u, 0x000002dbu, 0x00000022u, 0x00000000u, 0x00040047u, 0x00000304u, 0x00000006u, + 0x00000002u, 0x00030047u, 0x00000305u, 0x00000002u, 0x00050048u, 0x00000305u, 0x00000000u, 0x00000023u, + 0x00000000u, 0x00040047u, 0x00000307u, 0x00000021u, 0x00000005u, 0x00040047u, 0x00000307u, 0x00000022u, + 0x00000000u, 0x00040047u, 0x0000034cu, 0x00000006u, 0x00000004u, 0x00030047u, 0x0000034du, 0x00000002u, + 0x00050048u, 0x0000034du, 0x00000000u, 0x00000023u, 0x00000000u, 0x00040047u, 0x0000034fu, 0x00000021u, + 0x00000006u, 0x00040047u, 0x0000034fu, 0x00000022u, 0x00000000u, 0x00040047u, 0x00000392u, 0x00000006u, + 0x00000002u, 0x00030047u, 0x00000393u, 0x00000002u, 0x00050048u, 0x00000393u, 0x00000000u, 0x00000023u, + 0x00000000u, 0x00040047u, 0x00000395u, 0x00000021u, 0x00000007u, 0x00040047u, 0x00000395u, 0x00000022u, + 0x00000000u, 0x00040047u, 0x000003e7u, 0x00000001u, 0x00000002u, 0x00040047u, 0x000003ecu, 0x00000006u, + 0x00000004u, 0x00030047u, 0x000003edu, 0x00000002u, 0x00040048u, 0x000003edu, 0x00000000u, 0x00000018u, + 0x00050048u, 0x000003edu, 0x00000000u, 0x00000023u, 0x00000000u, 0x00030047u, 0x000003efu, 0x00000018u, + 0x00040047u, 0x000003efu, 0x00000021u, 0x00000008u, 0x00040047u, 0x000003efu, 0x00000022u, 0x00000000u, + 0x00040047u, 0x000003ffu, 0x00000006u, 0x00000002u, 0x00030047u, 0x00000400u, 0x00000002u, 0x00040048u, + 0x00000400u, 0x00000000u, 0x00000018u, 0x00050048u, 0x00000400u, 0x00000000u, 0x00000023u, 0x00000000u, + 0x00030047u, 0x00000402u, 0x00000018u, 0x00040047u, 0x00000402u, 0x00000021u, 0x00000009u, 0x00040047u, + 0x00000402u, 0x00000022u, 0x00000000u, 0x00040047u, 0x00000414u, 0x00000006u, 0x00000004u, 0x00030047u, + 0x00000415u, 0x00000002u, 0x00040048u, 0x00000415u, 0x00000000u, 0x00000018u, 0x00050048u, 0x00000415u, + 0x00000000u, 0x00000023u, 0x00000000u, 0x00030047u, 0x00000417u, 0x00000018u, 0x00040047u, 0x00000417u, + 0x00000021u, 0x0000000fu, 0x00040047u, 0x00000417u, 0x00000022u, 0x00000000u, 0x00040047u, 0x00000431u, + 0x00000006u, 0x00000004u, 0x00030047u, 0x00000432u, 0x00000002u, 0x00040048u, 0x00000432u, 0x00000000u, + 0x00000018u, 0x00050048u, 0x00000432u, 0x00000000u, 0x00000023u, 0x00000000u, 0x00030047u, 0x00000434u, + 0x00000018u, 0x00040047u, 0x00000434u, 0x00000021u, 0x0000000eu, 0x00040047u, 0x00000434u, 0x00000022u, + 0x00000000u, 0x00040047u, 0x0000043eu, 0x00000006u, 0x00000004u, 0x00030047u, 0x0000043fu, 0x00000002u, + 0x00050048u, 0x0000043fu, 0x00000000u, 0x00000023u, 0x00000000u, 0x00040047u, 0x00000441u, 0x00000021u, + 0x0000000cu, 0x00040047u, 0x00000441u, 0x00000022u, 0x00000000u, 0x00040047u, 0x00000453u, 0x00000006u, + 0x00000004u, 0x00030047u, 0x00000454u, 0x00000002u, 0x00040048u, 0x00000454u, 0x00000000u, 0x00000018u, + 0x00050048u, 0x00000454u, 0x00000000u, 0x00000023u, 0x00000000u, 0x00030047u, 0x00000456u, 0x00000018u, + 0x00040047u, 0x00000456u, 0x00000021u, 0x0000000au, 0x00040047u, 0x00000456u, 0x00000022u, 0x00000000u, + 0x00040047u, 0x00000466u, 0x00000006u, 0x00000002u, 0x00030047u, 0x00000467u, 0x00000002u, 0x00040048u, + 0x00000467u, 0x00000000u, 0x00000018u, 0x00050048u, 0x00000467u, 0x00000000u, 0x00000023u, 0x00000000u, + 0x00030047u, 0x00000469u, 0x00000018u, 0x00040047u, 0x00000469u, 0x00000021u, 0x0000000bu, 0x00040047u, + 0x00000469u, 0x00000022u, 0x00000000u, 0x00040047u, 0x0000047bu, 0x00000006u, 0x00000004u, 0x00030047u, + 0x0000047cu, 0x00000002u, 0x00050048u, 0x0000047cu, 0x00000000u, 0x00000023u, 0x00000000u, 0x00040047u, + 0x0000047eu, 0x00000021u, 0x0000000du, 0x00040047u, 0x0000047eu, 0x00000022u, 0x00000000u, 0x00040047u, + 0x0000048au, 0x0000000bu, 0x00000019u, 0x00020013u, 0x00000002u, 0x00030021u, 0x00000003u, 0x00000002u, + 0x00040015u, 0x00000006u, 0x00000020u, 0x00000000u, 0x00040020u, 0x00000007u, 0x00000007u, 0x00000006u, + 0x00030016u, 0x00000008u, 0x00000020u, 0x00040021u, 0x00000009u, 0x00000008u, 0x00000007u, 0x00040020u, + 0x0000000du, 0x00000007u, 0x00000008u, 0x00040021u, 0x0000000eu, 0x00000006u, 0x0000000du, 0x00050021u, + 0x00000018u, 0x00000008u, 0x00000007u, 0x00000007u, 0x00050021u, 0x0000001du, 0x00000006u, 0x0000000du, + 0x00000007u, 0x00040021u, 0x00000022u, 0x00000008u, 0x0000000du, 0x00050021u, 0x00000026u, 0x00000008u, + 0x00000007u, 0x0000000du, 0x00040015u, 0x0000002fu, 0x00000020u, 0x00000001u, 0x0004002bu, 0x0000002fu, + 0x00000030u, 0x00000010u, 0x00020014u, 0x00000038u, 0x0004002bu, 0x00000006u, 0x0000003au, 0x7f800000u, + 0x0004002bu, 0x00000006u, 0x00000040u, 0x007fffffu, 0x0004002bu, 0x00000006u, 0x00000042u, 0x00000000u, + 0x0004002bu, 0x00000006u, 0x00000049u, 0x00000040u, 0x0004002bu, 0x00000006u, 0x0000004bu, 0x0000ffffu, + 0x0004002bu, 0x00000006u, 0x0000004fu, 0x00007fffu, 0x0004002bu, 0x00000006u, 0x00000052u, 0x00000001u, + 0x0004002bu, 0x00000006u, 0x0000005eu, 0x00008000u, 0x0004002bu, 0x0000002fu, 0x00000063u, 0x0000000au, + 0x0004002bu, 0x00000006u, 0x00000065u, 0x0000001fu, 0x0004002bu, 0x00000006u, 0x00000069u, 0x000003ffu, + 0x0004002bu, 0x0000002fu, 0x00000072u, 0x0000000du, 0x0004002bu, 0x00000006u, 0x00000089u, 0x00000400u, + 0x0004002bu, 0x0000002fu, 0x0000008cu, 0x00000001u, 0x0004002bu, 0x00000006u, 0x00000094u, 0x00000071u, + 0x0004002bu, 0x0000002fu, 0x00000097u, 0x00000017u, 0x0004002bu, 0x00000006u, 0x000000a1u, 0x00000070u, + 0x0004002bu, 0x00000006u, 0x000000b5u, 0x000000ffu, 0x00040020u, 0x000000b7u, 0x00000007u, 0x0000002fu, + 0x0004002bu, 0x0000002fu, 0x000000bbu, 0x0000007fu, 0x0004002bu, 0x0000002fu, 0x000000bdu, 0x0000000fu, + 0x0004002bu, 0x00000006u, 0x000000c7u, 0x00007c00u, 0x0004002bu, 0x00000006u, 0x000000ceu, 0x00000200u, + 0x0004002bu, 0x0000002fu, 0x000000d7u, 0x0000001fu, 0x0004002bu, 0x0000002fu, 0x000000dfu, 0x00000000u, + 0x0004002bu, 0x0000002fu, 0x000000e4u, 0xfffffff6u, 0x0004002bu, 0x00000006u, 0x000000eau, 0x00800000u, + 0x0004002bu, 0x0000002fu, 0x000000eeu, 0x0000000eu, 0x0004002bu, 0x00000006u, 0x00000121u, 0x00001fffu, + 0x0004002bu, 0x00000006u, 0x00000124u, 0x00001000u, 0x0004002bu, 0x00000008u, 0x00000159u, 0x3f800000u, + 0x0004002bu, 0x00000006u, 0x00000161u, 0x00000002u, 0x0004002bu, 0x00000006u, 0x00000162u, 0x00000108u, + 0x0004002bu, 0x00000006u, 0x00000163u, 0x00000080u, 0x0004001cu, 0x00000164u, 0x00000008u, 0x00000163u, + 0x00040020u, 0x00000165u, 0x00000004u, 0x00000164u, 0x0004003bu, 0x00000165u, 0x00000166u, 0x00000004u, + 0x00040020u, 0x00000169u, 0x00000004u, 0x00000008u, 0x00040017u, 0x0000019du, 0x00000006u, 0x00000003u, + 0x00040020u, 0x0000019eu, 0x00000001u, 0x0000019du, 0x0004003bu, 0x0000019eu, 0x0000019fu, 0x00000001u, + 0x00040020u, 0x000001a0u, 0x00000001u, 0x00000006u, 0x0017001eu, 0x000001a4u, 0x00000006u, 0x00000006u, + 0x00000006u, 0x00000006u, 0x00000006u, 0x00000006u, 0x00000006u, 0x00000006u, 0x00000006u, 0x00000006u, + 0x00000006u, 0x00000006u, 0x00000006u, 0x00000006u, 0x00000006u, 0x00000006u, 0x00000006u, 0x00000006u, + 0x00000006u, 0x00000006u, 0x00000008u, 0x00040020u, 0x000001a5u, 0x00000009u, 0x000001a4u, 0x0004003bu, + 0x000001a5u, 0x000001a6u, 0x00000009u, 0x00040020u, 0x000001a7u, 0x00000009u, 0x00000006u, 0x0004002bu, + 0x0000002fu, 0x000001aau, 0x00000003u, 0x0004003bu, 0x0000019eu, 0x000001afu, 0x00000001u, 0x0004002bu, + 0x0000002fu, 0x000001bbu, 0x00000007u, 0x0004002bu, 0x0000002fu, 0x000001cau, 0x00000002u, 0x0004002bu, + 0x0000002fu, 0x000001d1u, 0x00000005u, 0x0004002bu, 0x00000008u, 0x000001dbu, 0x00000000u, 0x00040032u, + 0x00000006u, 0x000001e9u, 0x00000000u, 0x00060034u, 0x00000038u, 0x000001eau, 0x000000aau, 0x000001e9u, + 0x00000042u, 0x0003001du, 0x000001eeu, 0x00000006u, 0x0003001eu, 0x000001efu, 0x000001eeu, 0x00040020u, + 0x000001f0u, 0x0000000cu, 0x000001efu, 0x0004003bu, 0x000001f0u, 0x000001f1u, 0x0000000cu, 0x00040020u, + 0x000001f9u, 0x0000000cu, 0x00000006u, 0x00040015u, 0x000001feu, 0x00000010u, 0x00000000u, 0x0003001du, + 0x000001ffu, 0x000001feu, 0x0003001eu, 0x00000200u, 0x000001ffu, 0x00040020u, 0x00000201u, 0x0000000cu, + 0x00000200u, 0x0004003bu, 0x00000201u, 0x00000202u, 0x0000000cu, 0x00040020u, 0x0000020au, 0x0000000cu, + 0x000001feu, 0x00060034u, 0x00000038u, 0x00000213u, 0x000000aau, 0x000001e9u, 0x00000042u, 0x0004002bu, + 0x0000002fu, 0x0000024au, 0x00000014u, 0x00040020u, 0x0000024bu, 0x00000009u, 0x00000008u, 0x00040032u, + 0x00000006u, 0x00000273u, 0x00000000u, 0x00060034u, 0x00000038u, 0x00000274u, 0x000000aau, 0x00000273u, + 0x00000042u, 0x0003001du, 0x00000277u, 0x00000006u, 0x0003001eu, 0x00000278u, 0x00000277u, 0x00040020u, + 0x00000279u, 0x0000000cu, 0x00000278u, 0x0004003bu, 0x00000279u, 0x0000027au, 0x0000000cu, 0x0004002bu, + 0x0000002fu, 0x0000027bu, 0x0000000bu, 0x00060034u, 0x00000038u, 0x00000281u, 0x000000aau, 0x000001e9u, + 0x00000042u, 0x0003001du, 0x000002a3u, 0x000001feu, 0x0003001eu, 0x000002a4u, 0x000002a3u, 0x00040020u, + 0x000002a5u, 0x0000000cu, 0x000002a4u, 0x0004003bu, 0x000002a5u, 0x000002a6u, 0x0000000cu, 0x00060034u, + 0x00000038u, 0x000002acu, 0x000000aau, 0x000001e9u, 0x00000042u, 0x0003002au, 0x00000038u, 0x000002d0u, + 0x00060034u, 0x00000038u, 0x000002d5u, 0x000000aau, 0x00000273u, 0x00000042u, 0x0003001du, 0x000002d8u, + 0x00000006u, 0x0003001eu, 0x000002d9u, 0x000002d8u, 0x00040020u, 0x000002dau, 0x0000000cu, 0x000002d9u, + 0x0004003bu, 0x000002dau, 0x000002dbu, 0x0000000cu, 0x0004002bu, 0x0000002fu, 0x000002dcu, 0x0000000cu, + 0x00060034u, 0x00000038u, 0x000002e2u, 0x000000aau, 0x000001e9u, 0x00000042u, 0x0003001du, 0x00000304u, + 0x000001feu, 0x0003001eu, 0x00000305u, 0x00000304u, 0x00040020u, 0x00000306u, 0x0000000cu, 0x00000305u, + 0x0004003bu, 0x00000306u, 0x00000307u, 0x0000000cu, 0x00060034u, 0x00000038u, 0x0000030du, 0x000000aau, + 0x000001e9u, 0x00000042u, 0x0004002bu, 0x0000002fu, 0x00000341u, 0x00000004u, 0x00060034u, 0x00000038u, + 0x00000349u, 0x000000aau, 0x00000273u, 0x00000042u, 0x0003001du, 0x0000034cu, 0x00000006u, 0x0003001eu, + 0x0000034du, 0x0000034cu, 0x00040020u, 0x0000034eu, 0x0000000cu, 0x0000034du, 0x0004003bu, 0x0000034eu, + 0x0000034fu, 0x0000000cu, 0x0004002bu, 0x0000002fu, 0x00000354u, 0x00000006u, 0x00060034u, 0x00000038u, + 0x00000360u, 0x000000aau, 0x000001e9u, 0x00000042u, 0x0003001du, 0x00000392u, 0x000001feu, 0x0003001eu, + 0x00000393u, 0x00000392u, 0x00040020u, 0x00000394u, 0x0000000cu, 0x00000393u, 0x0004003bu, 0x00000394u, + 0x00000395u, 0x0000000cu, 0x00060034u, 0x00000038u, 0x000003a5u, 0x000000aau, 0x000001e9u, 0x00000042u, + 0x00040032u, 0x00000006u, 0x000003e7u, 0x00000000u, 0x00060034u, 0x00000038u, 0x000003e8u, 0x000000aau, + 0x000003e7u, 0x00000042u, 0x0003001du, 0x000003ecu, 0x00000006u, 0x0003001eu, 0x000003edu, 0x000003ecu, + 0x00040020u, 0x000003eeu, 0x0000000cu, 0x000003edu, 0x0004003bu, 0x000003eeu, 0x000003efu, 0x0000000cu, + 0x0004002bu, 0x0000002fu, 0x000003f4u, 0x00000008u, 0x0003001du, 0x000003ffu, 0x000001feu, 0x0003001eu, + 0x00000400u, 0x000003ffu, 0x00040020u, 0x00000401u, 0x0000000cu, 0x00000400u, 0x0004003bu, 0x00000401u, + 0x00000402u, 0x0000000cu, 0x0003001du, 0x00000414u, 0x00000006u, 0x0003001eu, 0x00000415u, 0x00000414u, + 0x00040020u, 0x00000416u, 0x0000000cu, 0x00000415u, 0x0004003bu, 0x00000416u, 0x00000417u, 0x0000000cu, + 0x0004002bu, 0x0000002fu, 0x00000418u, 0x00000013u, 0x0004002bu, 0x00000008u, 0x00000424u, 0x41a00000u, + 0x0003001du, 0x00000431u, 0x00000006u, 0x0003001eu, 0x00000432u, 0x00000431u, 0x00040020u, 0x00000433u, + 0x0000000cu, 0x00000432u, 0x0004003bu, 0x00000433u, 0x00000434u, 0x0000000cu, 0x0004002bu, 0x0000002fu, + 0x00000435u, 0x00000012u, 0x0003001du, 0x0000043eu, 0x00000006u, 0x0003001eu, 0x0000043fu, 0x0000043eu, + 0x00040020u, 0x00000440u, 0x0000000cu, 0x0000043fu, 0x0004003bu, 0x00000440u, 0x00000441u, 0x0000000cu, + 0x00060034u, 0x00000038u, 0x0000044fu, 0x000000aau, 0x000003e7u, 0x00000042u, 0x0003001du, 0x00000453u, + 0x00000006u, 0x0003001eu, 0x00000454u, 0x00000453u, 0x00040020u, 0x00000455u, 0x0000000cu, 0x00000454u, + 0x0004003bu, 0x00000455u, 0x00000456u, 0x0000000cu, 0x0004002bu, 0x0000002fu, 0x0000045bu, 0x00000009u, + 0x0003001du, 0x00000466u, 0x000001feu, 0x0003001eu, 0x00000467u, 0x00000466u, 0x00040020u, 0x00000468u, + 0x0000000cu, 0x00000467u, 0x0004003bu, 0x00000468u, 0x00000469u, 0x0000000cu, 0x0003001du, 0x0000047bu, + 0x00000006u, 0x0003001eu, 0x0000047cu, 0x0000047bu, 0x00040020u, 0x0000047du, 0x0000000cu, 0x0000047cu, + 0x0004003bu, 0x0000047du, 0x0000047eu, 0x0000000cu, 0x0004002bu, 0x0000002fu, 0x0000047fu, 0x00000011u, + 0x0006002cu, 0x0000019du, 0x0000048au, 0x00000163u, 0x00000052u, 0x00000052u, 0x00050036u, 0x00000002u, + 0x00000004u, 0x00000000u, 0x00000003u, 0x000200f8u, 0x00000005u, 0x0004003bu, 0x00000007u, 0x0000019cu, + 0x00000007u, 0x0004003bu, 0x00000007u, 0x000001a3u, 0x00000007u, 0x0004003bu, 0x00000007u, 0x000001aeu, + 0x00000007u, 0x0004003bu, 0x00000007u, 0x000001b4u, 0x00000007u, 0x0004003bu, 0x00000007u, 0x000001b9u, + 0x00000007u, 0x0004003bu, 0x00000007u, 0x000001c5u, 0x00000007u, 0x0004003bu, 0x00000007u, 0x000001c7u, + 0x00000007u, 0x0004003bu, 0x00000007u, 0x000001cfu, 0x00000007u, 0x0004003bu, 0x0000000du, 0x000001dau, + 0x00000007u, 0x0004003bu, 0x0000000du, 0x000001dcu, 0x00000007u, 0x0004003bu, 0x00000007u, 0x000001ddu, + 0x00000007u, 0x0004003bu, 0x0000000du, 0x000001e8u, 0x00000007u, 0x0004003bu, 0x0000000du, 0x000001ebu, + 0x00000007u, 0x0004003bu, 0x00000007u, 0x0000020eu, 0x00000007u, 0x0004003bu, 0x00000007u, 0x0000020fu, + 0x00000007u, 0x0004003bu, 0x0000000du, 0x00000212u, 0x00000007u, 0x0004003bu, 0x0000000du, 0x00000214u, + 0x00000007u, 0x0004003bu, 0x00000007u, 0x0000022cu, 0x00000007u, 0x0004003bu, 0x00000007u, 0x0000022du, + 0x00000007u, 0x0004003bu, 0x0000000du, 0x0000023cu, 0x00000007u, 0x0004003bu, 0x00000007u, 0x0000023du, + 0x00000007u, 0x0004003bu, 0x0000000du, 0x0000023fu, 0x00000007u, 0x0004003bu, 0x0000000du, 0x00000242u, + 0x00000007u, 0x0004003bu, 0x00000007u, 0x00000243u, 0x00000007u, 0x0004003bu, 0x0000000du, 0x00000245u, + 0x00000007u, 0x0004003bu, 0x0000000du, 0x00000248u, 0x00000007u, 0x0004003bu, 0x0000000du, 0x00000251u, + 0x00000007u, 0x0004003bu, 0x00000007u, 0x00000258u, 0x00000007u, 0x0004003bu, 0x00000007u, 0x00000263u, + 0x00000007u, 0x0004003bu, 0x0000000du, 0x00000282u, 0x00000007u, 0x0004003bu, 0x00000007u, 0x0000029au, + 0x00000007u, 0x0004003bu, 0x00000007u, 0x0000029bu, 0x00000007u, 0x0004003bu, 0x0000000du, 0x000002adu, + 0x00000007u, 0x0004003bu, 0x00000007u, 0x000002c5u, 0x00000007u, 0x0004003bu, 0x00000007u, 0x000002c6u, + 0x00000007u, 0x0004003bu, 0x0000000du, 0x000002cbu, 0x00000007u, 0x0004003bu, 0x00000007u, 0x000002ccu, + 0x00000007u, 0x0004003bu, 0x0000000du, 0x000002e3u, 0x00000007u, 0x0004003bu, 0x00000007u, 0x000002fbu, + 0x00000007u, 0x0004003bu, 0x00000007u, 0x000002fcu, 0x00000007u, 0x0004003bu, 0x0000000du, 0x0000030eu, + 0x00000007u, 0x0004003bu, 0x00000007u, 0x00000326u, 0x00000007u, 0x0004003bu, 0x00000007u, 0x00000327u, + 0x00000007u, 0x0004003bu, 0x0000000du, 0x0000032cu, 0x00000007u, 0x0004003bu, 0x00000007u, 0x0000032du, + 0x00000007u, 0x0004003bu, 0x00000007u, 0x00000334u, 0x00000007u, 0x0004003bu, 0x00000007u, 0x00000339u, + 0x00000007u, 0x0004003bu, 0x0000000du, 0x00000361u, 0x00000007u, 0x0004003bu, 0x00000007u, 0x0000038bu, + 0x00000007u, 0x0004003bu, 0x00000007u, 0x0000038cu, 0x00000007u, 0x0004003bu, 0x0000000du, 0x000003a6u, + 0x00000007u, 0x0004003bu, 0x00000007u, 0x000003d0u, 0x00000007u, 0x0004003bu, 0x00000007u, 0x000003d1u, + 0x00000007u, 0x0004003bu, 0x0000000du, 0x000003d3u, 0x00000007u, 0x0004003bu, 0x00000007u, 0x000003d5u, + 0x00000007u, 0x0004003bu, 0x00000007u, 0x000003dfu, 0x00000007u, 0x0004003bu, 0x0000000du, 0x000003e6u, + 0x00000007u, 0x0004003bu, 0x0000000du, 0x000003e9u, 0x00000007u, 0x0004003bu, 0x00000007u, 0x00000410u, + 0x00000007u, 0x0004003bu, 0x00000007u, 0x00000411u, 0x00000007u, 0x0004003bu, 0x0000000du, 0x00000422u, + 0x00000007u, 0x0004003bu, 0x0000000du, 0x00000426u, 0x00000007u, 0x0004003bu, 0x0000000du, 0x0000042du, + 0x00000007u, 0x0004003bu, 0x0000000du, 0x00000430u, 0x00000007u, 0x0004003bu, 0x0000000du, 0x0000044eu, + 0x00000007u, 0x0004003bu, 0x0000000du, 0x00000450u, 0x00000007u, 0x0004003bu, 0x00000007u, 0x00000477u, + 0x00000007u, 0x0004003bu, 0x00000007u, 0x00000478u, 0x00000007u, 0x0004003bu, 0x0000000du, 0x00000485u, + 0x00000007u, 0x00050041u, 0x000001a0u, 0x000001a1u, 0x0000019fu, 0x00000042u, 0x0004003du, 0x00000006u, + 0x000001a2u, 0x000001a1u, 0x0003003eu, 0x0000019cu, 0x000001a2u, 0x00050041u, 0x000001a7u, 0x000001a8u, + 0x000001a6u, 0x0000008cu, 0x0004003du, 0x00000006u, 0x000001a9u, 0x000001a8u, 0x00050041u, 0x000001a7u, + 0x000001abu, 0x000001a6u, 0x000001aau, 0x0004003du, 0x00000006u, 0x000001acu, 0x000001abu, 0x00050080u, + 0x00000006u, 0x000001adu, 0x000001a9u, 0x000001acu, 0x0003003eu, 0x000001a3u, 0x000001adu, 0x00050041u, + 0x000001a0u, 0x000001b0u, 0x000001afu, 0x00000042u, 0x0004003du, 0x00000006u, 0x000001b1u, 0x000001b0u, + 0x0004003du, 0x00000006u, 0x000001b2u, 0x000001a3u, 0x00050086u, 0x00000006u, 0x000001b3u, 0x000001b1u, + 0x000001b2u, 0x0003003eu, 0x000001aeu, 0x000001b3u, 0x00050041u, 0x000001a0u, 0x000001b5u, 0x000001afu, + 0x00000042u, 0x0004003du, 0x00000006u, 0x000001b6u, 0x000001b5u, 0x0004003du, 0x00000006u, 0x000001b7u, + 0x000001a3u, 0x00050089u, 0x00000006u, 0x000001b8u, 0x000001b6u, 0x000001b7u, 0x0003003eu, 0x000001b4u, + 0x000001b8u, 0x0004003du, 0x00000006u, 0x000001bau, 0x000001aeu, 0x00050041u, 0x000001a7u, 0x000001bcu, + 0x000001a6u, 0x000001bbu, 0x0004003du, 0x00000006u, 0x000001bdu, 0x000001bcu, 0x00050084u, 0x00000006u, + 0x000001beu, 0x000001bau, 0x000001bdu, 0x0003003eu, 0x000001b9u, 0x000001beu, 0x0004003du, 0x00000006u, + 0x000001bfu, 0x000001b4u, 0x00050041u, 0x000001a7u, 0x000001c0u, 0x000001a6u, 0x0000008cu, 0x0004003du, + 0x00000006u, 0x000001c1u, 0x000001c0u, 0x000500b0u, 0x00000038u, 0x000001c2u, 0x000001bfu, 0x000001c1u, + 0x000300f7u, 0x000001c4u, 0x00000000u, 0x000400fau, 0x000001c2u, 0x000001c3u, 0x000001c4u, 0x000200f8u, + 0x000001c3u, 0x0004003du, 0x00000006u, 0x000001c6u, 0x000001b4u, 0x0003003eu, 0x000001c5u, 0x000001c6u, + 0x0004003du, 0x00000006u, 0x000001c8u, 0x000001b9u, 0x0004003du, 0x00000006u, 0x000001c9u, 0x000001c5u, + 0x00050041u, 0x000001a7u, 0x000001cbu, 0x000001a6u, 0x000001cau, 0x0004003du, 0x00000006u, 0x000001ccu, + 0x000001cbu, 0x00050084u, 0x00000006u, 0x000001cdu, 0x000001c9u, 0x000001ccu, 0x00050080u, 0x00000006u, + 0x000001ceu, 0x000001c8u, 0x000001cdu, 0x0003003eu, 0x000001c7u, 0x000001ceu, 0x0004003du, 0x00000006u, + 0x000001d0u, 0x000001b9u, 0x00050041u, 0x000001a7u, 0x000001d2u, 0x000001a6u, 0x000001d1u, 0x0004003du, + 0x00000006u, 0x000001d3u, 0x000001d2u, 0x00050080u, 0x00000006u, 0x000001d4u, 0x000001d0u, 0x000001d3u, + 0x0004003du, 0x00000006u, 0x000001d5u, 0x000001c5u, 0x00050041u, 0x000001a7u, 0x000001d6u, 0x000001a6u, + 0x000001cau, 0x0004003du, 0x00000006u, 0x000001d7u, 0x000001d6u, 0x00050084u, 0x00000006u, 0x000001d8u, + 0x000001d5u, 0x000001d7u, 0x00050080u, 0x00000006u, 0x000001d9u, 0x000001d4u, 0x000001d8u, 0x0003003eu, + 0x000001cfu, 0x000001d9u, 0x0003003eu, 0x000001dau, 0x000001dbu, 0x0003003eu, 0x000001dcu, 0x000001dbu, + 0x0004003du, 0x00000006u, 0x000001deu, 0x0000019cu, 0x0003003eu, 0x000001ddu, 0x000001deu, 0x000200f9u, + 0x000001dfu, 0x000200f8u, 0x000001dfu, 0x000400f6u, 0x000001e1u, 0x000001e2u, 0x00000000u, 0x000200f9u, + 0x000001e3u, 0x000200f8u, 0x000001e3u, 0x0004003du, 0x00000006u, 0x000001e4u, 0x000001ddu, 0x00050041u, + 0x000001a7u, 0x000001e5u, 0x000001a6u, 0x000001cau, 0x0004003du, 0x00000006u, 0x000001e6u, 0x000001e5u, + 0x000500b0u, 0x00000038u, 0x000001e7u, 0x000001e4u, 0x000001e6u, 0x000400fau, 0x000001e7u, 0x000001e0u, + 0x000001e1u, 0x000200f8u, 0x000001e0u, 0x000300f7u, 0x000001edu, 0x00000000u, 0x000400fau, 0x000001eau, + 0x000001ecu, 0x000001fdu, 0x000200f8u, 0x000001ecu, 0x00050041u, 0x000001a7u, 0x000001f2u, 0x000001a6u, + 0x00000063u, 0x0004003du, 0x00000006u, 0x000001f3u, 0x000001f2u, 0x000500c2u, 0x00000006u, 0x000001f4u, + 0x000001f3u, 0x000001cau, 0x0004003du, 0x00000006u, 0x000001f5u, 0x000001c7u, 0x0004003du, 0x00000006u, + 0x000001f6u, 0x000001ddu, 0x00050080u, 0x00000006u, 0x000001f7u, 0x000001f5u, 0x000001f6u, 0x00050080u, + 0x00000006u, 0x000001f8u, 0x000001f4u, 0x000001f7u, 0x00060041u, 0x000001f9u, 0x000001fau, 0x000001f1u, + 0x000000dfu, 0x000001f8u, 0x0004003du, 0x00000006u, 0x000001fbu, 0x000001fau, 0x0004007cu, 0x00000008u, + 0x000001fcu, 0x000001fbu, 0x0003003eu, 0x000001ebu, 0x000001fcu, 0x000200f9u, 0x000001edu, 0x000200f8u, + 0x000001fdu, 0x00050041u, 0x000001a7u, 0x00000203u, 0x000001a6u, 0x00000063u, 0x0004003du, 0x00000006u, + 0x00000204u, 0x00000203u, 0x000500c2u, 0x00000006u, 0x00000205u, 0x00000204u, 0x0000008cu, 0x0004003du, + 0x00000006u, 0x00000206u, 0x000001c7u, 0x0004003du, 0x00000006u, 0x00000207u, 0x000001ddu, 0x00050080u, + 0x00000006u, 0x00000208u, 0x00000206u, 0x00000207u, 0x00050080u, 0x00000006u, 0x00000209u, 0x00000205u, + 0x00000208u, 0x00060041u, 0x0000020au, 0x0000020bu, 0x00000202u, 0x000000dfu, 0x00000209u, 0x0004003du, + 0x000001feu, 0x0000020cu, 0x0000020bu, 0x00040071u, 0x00000006u, 0x0000020du, 0x0000020cu, 0x0003003eu, + 0x0000020eu, 0x0000020du, 0x0003003eu, 0x0000020fu, 0x000001e9u, 0x00060039u, 0x00000008u, 0x00000210u, + 0x0000001bu, 0x0000020eu, 0x0000020fu, 0x0003003eu, 0x000001ebu, 0x00000210u, 0x000200f9u, 0x000001edu, + 0x000200f8u, 0x000001edu, 0x0004003du, 0x00000008u, 0x00000211u, 0x000001ebu, 0x0003003eu, 0x000001e8u, + 0x00000211u, 0x000300f7u, 0x00000216u, 0x00000000u, 0x000400fau, 0x00000213u, 0x00000215u, 0x00000221u, + 0x000200f8u, 0x00000215u, 0x00050041u, 0x000001a7u, 0x00000217u, 0x000001a6u, 0x00000063u, 0x0004003du, + 0x00000006u, 0x00000218u, 0x00000217u, 0x000500c2u, 0x00000006u, 0x00000219u, 0x00000218u, 0x000001cau, + 0x0004003du, 0x00000006u, 0x0000021au, 0x000001cfu, 0x0004003du, 0x00000006u, 0x0000021bu, 0x000001ddu, + 0x00050080u, 0x00000006u, 0x0000021cu, 0x0000021au, 0x0000021bu, 0x00050080u, 0x00000006u, 0x0000021du, + 0x00000219u, 0x0000021cu, 0x00060041u, 0x000001f9u, 0x0000021eu, 0x000001f1u, 0x000000dfu, 0x0000021du, + 0x0004003du, 0x00000006u, 0x0000021fu, 0x0000021eu, 0x0004007cu, 0x00000008u, 0x00000220u, 0x0000021fu, + 0x0003003eu, 0x00000214u, 0x00000220u, 0x000200f9u, 0x00000216u, 0x000200f8u, 0x00000221u, 0x00050041u, + 0x000001a7u, 0x00000222u, 0x000001a6u, 0x00000063u, 0x0004003du, 0x00000006u, 0x00000223u, 0x00000222u, + 0x000500c2u, 0x00000006u, 0x00000224u, 0x00000223u, 0x0000008cu, 0x0004003du, 0x00000006u, 0x00000225u, + 0x000001cfu, 0x0004003du, 0x00000006u, 0x00000226u, 0x000001ddu, 0x00050080u, 0x00000006u, 0x00000227u, + 0x00000225u, 0x00000226u, 0x00050080u, 0x00000006u, 0x00000228u, 0x00000224u, 0x00000227u, 0x00060041u, + 0x0000020au, 0x00000229u, 0x00000202u, 0x000000dfu, 0x00000228u, 0x0004003du, 0x000001feu, 0x0000022au, + 0x00000229u, 0x00040071u, 0x00000006u, 0x0000022bu, 0x0000022au, 0x0003003eu, 0x0000022cu, 0x0000022bu, + 0x0003003eu, 0x0000022du, 0x000001e9u, 0x00060039u, 0x00000008u, 0x0000022eu, 0x0000001bu, 0x0000022cu, + 0x0000022du, 0x0003003eu, 0x00000214u, 0x0000022eu, 0x000200f9u, 0x00000216u, 0x000200f8u, 0x00000216u, + 0x0004003du, 0x00000008u, 0x0000022fu, 0x00000214u, 0x0003003eu, 0x00000212u, 0x0000022fu, 0x0004003du, + 0x00000008u, 0x00000230u, 0x000001e8u, 0x0004003du, 0x00000008u, 0x00000231u, 0x000001e8u, 0x00050085u, + 0x00000008u, 0x00000232u, 0x00000230u, 0x00000231u, 0x0004003du, 0x00000008u, 0x00000233u, 0x000001dau, + 0x00050081u, 0x00000008u, 0x00000234u, 0x00000233u, 0x00000232u, 0x0003003eu, 0x000001dau, 0x00000234u, + 0x0004003du, 0x00000008u, 0x00000235u, 0x00000212u, 0x0004003du, 0x00000008u, 0x00000236u, 0x00000212u, + 0x00050085u, 0x00000008u, 0x00000237u, 0x00000235u, 0x00000236u, 0x0004003du, 0x00000008u, 0x00000238u, + 0x000001dcu, 0x00050081u, 0x00000008u, 0x00000239u, 0x00000238u, 0x00000237u, 0x0003003eu, 0x000001dcu, + 0x00000239u, 0x000200f9u, 0x000001e2u, 0x000200f8u, 0x000001e2u, 0x0004003du, 0x00000006u, 0x0000023au, + 0x000001ddu, 0x00050080u, 0x00000006u, 0x0000023bu, 0x0000023au, 0x00000163u, 0x0003003eu, 0x000001ddu, + 0x0000023bu, 0x000200f9u, 0x000001dfu, 0x000200f8u, 0x000001e1u, 0x0004003du, 0x00000006u, 0x0000023eu, + 0x0000019cu, 0x0003003eu, 0x0000023du, 0x0000023eu, 0x0004003du, 0x00000008u, 0x00000240u, 0x000001dau, + 0x0003003eu, 0x0000023fu, 0x00000240u, 0x00060039u, 0x00000008u, 0x00000241u, 0x00000029u, 0x0000023du, + 0x0000023fu, 0x0003003eu, 0x0000023cu, 0x00000241u, 0x0004003du, 0x00000006u, 0x00000244u, 0x0000019cu, + 0x0003003eu, 0x00000243u, 0x00000244u, 0x0004003du, 0x00000008u, 0x00000246u, 0x000001dcu, 0x0003003eu, + 0x00000245u, 0x00000246u, 0x00060039u, 0x00000008u, 0x00000247u, 0x00000029u, 0x00000243u, 0x00000245u, + 0x0003003eu, 0x00000242u, 0x00000247u, 0x0004003du, 0x00000008u, 0x00000249u, 0x0000023cu, 0x00050041u, + 0x0000024bu, 0x0000024cu, 0x000001a6u, 0x0000024au, 0x0004003du, 0x00000008u, 0x0000024du, 0x0000024cu, + 0x00050081u, 0x00000008u, 0x0000024eu, 0x00000249u, 0x0000024du, 0x0006000cu, 0x00000008u, 0x0000024fu, + 0x00000001u, 0x0000001fu, 0x0000024eu, 0x00050088u, 0x00000008u, 0x00000250u, 0x00000159u, 0x0000024fu, + 0x0003003eu, 0x00000248u, 0x00000250u, 0x0004003du, 0x00000008u, 0x00000252u, 0x00000242u, 0x00050041u, + 0x0000024bu, 0x00000253u, 0x000001a6u, 0x0000024au, 0x0004003du, 0x00000008u, 0x00000254u, 0x00000253u, + 0x00050081u, 0x00000008u, 0x00000255u, 0x00000252u, 0x00000254u, 0x0006000cu, 0x00000008u, 0x00000256u, + 0x00000001u, 0x0000001fu, 0x00000255u, 0x00050088u, 0x00000008u, 0x00000257u, 0x00000159u, 0x00000256u, + 0x0003003eu, 0x00000251u, 0x00000257u, 0x0004003du, 0x00000006u, 0x00000259u, 0x0000019cu, 0x0003003eu, + 0x00000258u, 0x00000259u, 0x000200f9u, 0x0000025au, 0x000200f8u, 0x0000025au, 0x000400f6u, 0x0000025cu, + 0x0000025du, 0x00000000u, 0x000200f9u, 0x0000025eu, 0x000200f8u, 0x0000025eu, 0x0004003du, 0x00000006u, + 0x0000025fu, 0x00000258u, 0x00050041u, 0x000001a7u, 0x00000260u, 0x000001a6u, 0x000001cau, 0x0004003du, + 0x00000006u, 0x00000261u, 0x00000260u, 0x000500b0u, 0x00000038u, 0x00000262u, 0x0000025fu, 0x00000261u, + 0x000400fau, 0x00000262u, 0x0000025bu, 0x0000025cu, 0x000200f8u, 0x0000025bu, 0x0004003du, 0x00000006u, + 0x00000264u, 0x000001aeu, 0x00050041u, 0x000001a7u, 0x00000265u, 0x000001a6u, 0x0000008cu, 0x0004003du, + 0x00000006u, 0x00000266u, 0x00000265u, 0x00050084u, 0x00000006u, 0x00000267u, 0x00000264u, 0x00000266u, + 0x0004003du, 0x00000006u, 0x00000268u, 0x000001c5u, 0x00050080u, 0x00000006u, 0x00000269u, 0x00000267u, + 0x00000268u, 0x00050041u, 0x000001a7u, 0x0000026au, 0x000001a6u, 0x000001cau, 0x0004003du, 0x00000006u, + 0x0000026bu, 0x0000026au, 0x00050084u, 0x00000006u, 0x0000026cu, 0x00000269u, 0x0000026bu, 0x0004003du, + 0x00000006u, 0x0000026du, 0x00000258u, 0x00050080u, 0x00000006u, 0x0000026eu, 0x0000026cu, 0x0000026du, + 0x0003003eu, 0x00000263u, 0x0000026eu, 0x000200f9u, 0x0000026fu, 0x000200f8u, 0x0000026fu, 0x000400f6u, + 0x00000271u, 0x00000272u, 0x00000000u, 0x000200f9u, 0x00000270u, 0x000200f8u, 0x00000270u, 0x000300f7u, + 0x00000276u, 0x00000000u, 0x000400fau, 0x00000274u, 0x00000275u, 0x000002a2u, 0x000200f8u, 0x00000275u, + 0x00050041u, 0x000001a7u, 0x0000027cu, 0x000001a6u, 0x0000027bu, 0x0004003du, 0x00000006u, 0x0000027du, + 0x0000027cu, 0x000500c2u, 0x00000006u, 0x0000027eu, 0x0000027du, 0x000001cau, 0x0004003du, 0x00000006u, + 0x0000027fu, 0x00000263u, 0x00050080u, 0x00000006u, 0x00000280u, 0x0000027eu, 0x0000027fu, 0x000300f7u, + 0x00000284u, 0x00000000u, 0x000400fau, 0x00000281u, 0x00000283u, 0x0000028fu, 0x000200f8u, 0x00000283u, + 0x00050041u, 0x000001a7u, 0x00000285u, 0x000001a6u, 0x00000063u, 0x0004003du, 0x00000006u, 0x00000286u, + 0x00000285u, 0x000500c2u, 0x00000006u, 0x00000287u, 0x00000286u, 0x000001cau, 0x0004003du, 0x00000006u, + 0x00000288u, 0x000001c7u, 0x0004003du, 0x00000006u, 0x00000289u, 0x00000258u, 0x00050080u, 0x00000006u, + 0x0000028au, 0x00000288u, 0x00000289u, 0x00050080u, 0x00000006u, 0x0000028bu, 0x00000287u, 0x0000028au, + 0x00060041u, 0x000001f9u, 0x0000028cu, 0x000001f1u, 0x000000dfu, 0x0000028bu, 0x0004003du, 0x00000006u, + 0x0000028du, 0x0000028cu, 0x0004007cu, 0x00000008u, 0x0000028eu, 0x0000028du, 0x0003003eu, 0x00000282u, + 0x0000028eu, 0x000200f9u, 0x00000284u, 0x000200f8u, 0x0000028fu, 0x00050041u, 0x000001a7u, 0x00000290u, + 0x000001a6u, 0x00000063u, 0x0004003du, 0x00000006u, 0x00000291u, 0x00000290u, 0x000500c2u, 0x00000006u, + 0x00000292u, 0x00000291u, 0x0000008cu, 0x0004003du, 0x00000006u, 0x00000293u, 0x000001c7u, 0x0004003du, + 0x00000006u, 0x00000294u, 0x00000258u, 0x00050080u, 0x00000006u, 0x00000295u, 0x00000293u, 0x00000294u, + 0x00050080u, 0x00000006u, 0x00000296u, 0x00000292u, 0x00000295u, 0x00060041u, 0x0000020au, 0x00000297u, + 0x00000202u, 0x000000dfu, 0x00000296u, 0x0004003du, 0x000001feu, 0x00000298u, 0x00000297u, 0x00040071u, + 0x00000006u, 0x00000299u, 0x00000298u, 0x0003003eu, 0x0000029au, 0x00000299u, 0x0003003eu, 0x0000029bu, + 0x000001e9u, 0x00060039u, 0x00000008u, 0x0000029cu, 0x0000001bu, 0x0000029au, 0x0000029bu, 0x0003003eu, + 0x00000282u, 0x0000029cu, 0x000200f9u, 0x00000284u, 0x000200f8u, 0x00000284u, 0x0004003du, 0x00000008u, + 0x0000029du, 0x00000282u, 0x0004003du, 0x00000008u, 0x0000029eu, 0x00000248u, 0x00050085u, 0x00000008u, + 0x0000029fu, 0x0000029du, 0x0000029eu, 0x0004007cu, 0x00000006u, 0x000002a0u, 0x0000029fu, 0x00060041u, + 0x000001f9u, 0x000002a1u, 0x0000027au, 0x000000dfu, 0x00000280u, 0x0003003eu, 0x000002a1u, 0x000002a0u, + 0x000200f9u, 0x00000276u, 0x000200f8u, 0x000002a2u, 0x00050041u, 0x000001a7u, 0x000002a7u, 0x000001a6u, + 0x0000027bu, 0x0004003du, 0x00000006u, 0x000002a8u, 0x000002a7u, 0x000500c2u, 0x00000006u, 0x000002a9u, + 0x000002a8u, 0x0000008cu, 0x0004003du, 0x00000006u, 0x000002aau, 0x00000263u, 0x00050080u, 0x00000006u, + 0x000002abu, 0x000002a9u, 0x000002aau, 0x000300f7u, 0x000002afu, 0x00000000u, 0x000400fau, 0x000002acu, + 0x000002aeu, 0x000002bau, 0x000200f8u, 0x000002aeu, 0x00050041u, 0x000001a7u, 0x000002b0u, 0x000001a6u, + 0x00000063u, 0x0004003du, 0x00000006u, 0x000002b1u, 0x000002b0u, 0x000500c2u, 0x00000006u, 0x000002b2u, + 0x000002b1u, 0x000001cau, 0x0004003du, 0x00000006u, 0x000002b3u, 0x000001c7u, 0x0004003du, 0x00000006u, + 0x000002b4u, 0x00000258u, 0x00050080u, 0x00000006u, 0x000002b5u, 0x000002b3u, 0x000002b4u, 0x00050080u, + 0x00000006u, 0x000002b6u, 0x000002b2u, 0x000002b5u, 0x00060041u, 0x000001f9u, 0x000002b7u, 0x000001f1u, + 0x000000dfu, 0x000002b6u, 0x0004003du, 0x00000006u, 0x000002b8u, 0x000002b7u, 0x0004007cu, 0x00000008u, + 0x000002b9u, 0x000002b8u, 0x0003003eu, 0x000002adu, 0x000002b9u, 0x000200f9u, 0x000002afu, 0x000200f8u, + 0x000002bau, 0x00050041u, 0x000001a7u, 0x000002bbu, 0x000001a6u, 0x00000063u, 0x0004003du, 0x00000006u, + 0x000002bcu, 0x000002bbu, 0x000500c2u, 0x00000006u, 0x000002bdu, 0x000002bcu, 0x0000008cu, 0x0004003du, + 0x00000006u, 0x000002beu, 0x000001c7u, 0x0004003du, 0x00000006u, 0x000002bfu, 0x00000258u, 0x00050080u, + 0x00000006u, 0x000002c0u, 0x000002beu, 0x000002bfu, 0x00050080u, 0x00000006u, 0x000002c1u, 0x000002bdu, + 0x000002c0u, 0x00060041u, 0x0000020au, 0x000002c2u, 0x00000202u, 0x000000dfu, 0x000002c1u, 0x0004003du, + 0x000001feu, 0x000002c3u, 0x000002c2u, 0x00040071u, 0x00000006u, 0x000002c4u, 0x000002c3u, 0x0003003eu, + 0x000002c5u, 0x000002c4u, 0x0003003eu, 0x000002c6u, 0x000001e9u, 0x00060039u, 0x00000008u, 0x000002c7u, + 0x0000001bu, 0x000002c5u, 0x000002c6u, 0x0003003eu, 0x000002adu, 0x000002c7u, 0x000200f9u, 0x000002afu, + 0x000200f8u, 0x000002afu, 0x0004003du, 0x00000008u, 0x000002c8u, 0x000002adu, 0x0004003du, 0x00000008u, + 0x000002c9u, 0x00000248u, 0x00050085u, 0x00000008u, 0x000002cau, 0x000002c8u, 0x000002c9u, 0x0003003eu, + 0x000002cbu, 0x000002cau, 0x0003003eu, 0x000002ccu, 0x00000273u, 0x00060039u, 0x00000006u, 0x000002cdu, + 0x00000020u, 0x000002cbu, 0x000002ccu, 0x00040071u, 0x000001feu, 0x000002ceu, 0x000002cdu, 0x00060041u, + 0x0000020au, 0x000002cfu, 0x000002a6u, 0x000000dfu, 0x000002abu, 0x0003003eu, 0x000002cfu, 0x000002ceu, + 0x000200f9u, 0x00000276u, 0x000200f8u, 0x00000276u, 0x000200f9u, 0x00000272u, 0x000200f8u, 0x00000272u, + 0x000400fau, 0x000002d0u, 0x0000026fu, 0x00000271u, 0x000200f8u, 0x00000271u, 0x000200f9u, 0x000002d1u, + 0x000200f8u, 0x000002d1u, 0x000400f6u, 0x000002d3u, 0x000002d4u, 0x00000000u, 0x000200f9u, 0x000002d2u, + 0x000200f8u, 0x000002d2u, 0x000300f7u, 0x000002d7u, 0x00000000u, 0x000400fau, 0x000002d5u, 0x000002d6u, + 0x00000303u, 0x000200f8u, 0x000002d6u, 0x00050041u, 0x000001a7u, 0x000002ddu, 0x000001a6u, 0x000002dcu, + 0x0004003du, 0x00000006u, 0x000002deu, 0x000002ddu, 0x000500c2u, 0x00000006u, 0x000002dfu, 0x000002deu, + 0x000001cau, 0x0004003du, 0x00000006u, 0x000002e0u, 0x00000263u, 0x00050080u, 0x00000006u, 0x000002e1u, + 0x000002dfu, 0x000002e0u, 0x000300f7u, 0x000002e5u, 0x00000000u, 0x000400fau, 0x000002e2u, 0x000002e4u, + 0x000002f0u, 0x000200f8u, 0x000002e4u, 0x00050041u, 0x000001a7u, 0x000002e6u, 0x000001a6u, 0x00000063u, + 0x0004003du, 0x00000006u, 0x000002e7u, 0x000002e6u, 0x000500c2u, 0x00000006u, 0x000002e8u, 0x000002e7u, + 0x000001cau, 0x0004003du, 0x00000006u, 0x000002e9u, 0x000001cfu, 0x0004003du, 0x00000006u, 0x000002eau, + 0x00000258u, 0x00050080u, 0x00000006u, 0x000002ebu, 0x000002e9u, 0x000002eau, 0x00050080u, 0x00000006u, + 0x000002ecu, 0x000002e8u, 0x000002ebu, 0x00060041u, 0x000001f9u, 0x000002edu, 0x000001f1u, 0x000000dfu, + 0x000002ecu, 0x0004003du, 0x00000006u, 0x000002eeu, 0x000002edu, 0x0004007cu, 0x00000008u, 0x000002efu, + 0x000002eeu, 0x0003003eu, 0x000002e3u, 0x000002efu, 0x000200f9u, 0x000002e5u, 0x000200f8u, 0x000002f0u, + 0x00050041u, 0x000001a7u, 0x000002f1u, 0x000001a6u, 0x00000063u, 0x0004003du, 0x00000006u, 0x000002f2u, + 0x000002f1u, 0x000500c2u, 0x00000006u, 0x000002f3u, 0x000002f2u, 0x0000008cu, 0x0004003du, 0x00000006u, + 0x000002f4u, 0x000001cfu, 0x0004003du, 0x00000006u, 0x000002f5u, 0x00000258u, 0x00050080u, 0x00000006u, + 0x000002f6u, 0x000002f4u, 0x000002f5u, 0x00050080u, 0x00000006u, 0x000002f7u, 0x000002f3u, 0x000002f6u, + 0x00060041u, 0x0000020au, 0x000002f8u, 0x00000202u, 0x000000dfu, 0x000002f7u, 0x0004003du, 0x000001feu, + 0x000002f9u, 0x000002f8u, 0x00040071u, 0x00000006u, 0x000002fau, 0x000002f9u, 0x0003003eu, 0x000002fbu, + 0x000002fau, 0x0003003eu, 0x000002fcu, 0x000001e9u, 0x00060039u, 0x00000008u, 0x000002fdu, 0x0000001bu, + 0x000002fbu, 0x000002fcu, 0x0003003eu, 0x000002e3u, 0x000002fdu, 0x000200f9u, 0x000002e5u, 0x000200f8u, + 0x000002e5u, 0x0004003du, 0x00000008u, 0x000002feu, 0x000002e3u, 0x0004003du, 0x00000008u, 0x000002ffu, + 0x00000251u, 0x00050085u, 0x00000008u, 0x00000300u, 0x000002feu, 0x000002ffu, 0x0004007cu, 0x00000006u, + 0x00000301u, 0x00000300u, 0x00060041u, 0x000001f9u, 0x00000302u, 0x000002dbu, 0x000000dfu, 0x000002e1u, + 0x0003003eu, 0x00000302u, 0x00000301u, 0x000200f9u, 0x000002d7u, 0x000200f8u, 0x00000303u, 0x00050041u, + 0x000001a7u, 0x00000308u, 0x000001a6u, 0x000002dcu, 0x0004003du, 0x00000006u, 0x00000309u, 0x00000308u, + 0x000500c2u, 0x00000006u, 0x0000030au, 0x00000309u, 0x0000008cu, 0x0004003du, 0x00000006u, 0x0000030bu, + 0x00000263u, 0x00050080u, 0x00000006u, 0x0000030cu, 0x0000030au, 0x0000030bu, 0x000300f7u, 0x00000310u, + 0x00000000u, 0x000400fau, 0x0000030du, 0x0000030fu, 0x0000031bu, 0x000200f8u, 0x0000030fu, 0x00050041u, + 0x000001a7u, 0x00000311u, 0x000001a6u, 0x00000063u, 0x0004003du, 0x00000006u, 0x00000312u, 0x00000311u, + 0x000500c2u, 0x00000006u, 0x00000313u, 0x00000312u, 0x000001cau, 0x0004003du, 0x00000006u, 0x00000314u, + 0x000001cfu, 0x0004003du, 0x00000006u, 0x00000315u, 0x00000258u, 0x00050080u, 0x00000006u, 0x00000316u, + 0x00000314u, 0x00000315u, 0x00050080u, 0x00000006u, 0x00000317u, 0x00000313u, 0x00000316u, 0x00060041u, + 0x000001f9u, 0x00000318u, 0x000001f1u, 0x000000dfu, 0x00000317u, 0x0004003du, 0x00000006u, 0x00000319u, + 0x00000318u, 0x0004007cu, 0x00000008u, 0x0000031au, 0x00000319u, 0x0003003eu, 0x0000030eu, 0x0000031au, + 0x000200f9u, 0x00000310u, 0x000200f8u, 0x0000031bu, 0x00050041u, 0x000001a7u, 0x0000031cu, 0x000001a6u, + 0x00000063u, 0x0004003du, 0x00000006u, 0x0000031du, 0x0000031cu, 0x000500c2u, 0x00000006u, 0x0000031eu, + 0x0000031du, 0x0000008cu, 0x0004003du, 0x00000006u, 0x0000031fu, 0x000001cfu, 0x0004003du, 0x00000006u, + 0x00000320u, 0x00000258u, 0x00050080u, 0x00000006u, 0x00000321u, 0x0000031fu, 0x00000320u, 0x00050080u, + 0x00000006u, 0x00000322u, 0x0000031eu, 0x00000321u, 0x00060041u, 0x0000020au, 0x00000323u, 0x00000202u, + 0x000000dfu, 0x00000322u, 0x0004003du, 0x000001feu, 0x00000324u, 0x00000323u, 0x00040071u, 0x00000006u, + 0x00000325u, 0x00000324u, 0x0003003eu, 0x00000326u, 0x00000325u, 0x0003003eu, 0x00000327u, 0x000001e9u, + 0x00060039u, 0x00000008u, 0x00000328u, 0x0000001bu, 0x00000326u, 0x00000327u, 0x0003003eu, 0x0000030eu, + 0x00000328u, 0x000200f9u, 0x00000310u, 0x000200f8u, 0x00000310u, 0x0004003du, 0x00000008u, 0x00000329u, + 0x0000030eu, 0x0004003du, 0x00000008u, 0x0000032au, 0x00000251u, 0x00050085u, 0x00000008u, 0x0000032bu, + 0x00000329u, 0x0000032au, 0x0003003eu, 0x0000032cu, 0x0000032bu, 0x0003003eu, 0x0000032du, 0x00000273u, + 0x00060039u, 0x00000006u, 0x0000032eu, 0x00000020u, 0x0000032cu, 0x0000032du, 0x00040071u, 0x000001feu, + 0x0000032fu, 0x0000032eu, 0x00060041u, 0x0000020au, 0x00000330u, 0x00000307u, 0x000000dfu, 0x0000030cu, + 0x0003003eu, 0x00000330u, 0x0000032fu, 0x000200f9u, 0x000002d7u, 0x000200f8u, 0x000002d7u, 0x000200f9u, + 0x000002d4u, 0x000200f8u, 0x000002d4u, 0x000400fau, 0x000002d0u, 0x000002d1u, 0x000002d3u, 0x000200f8u, + 0x000002d3u, 0x000200f9u, 0x0000025du, 0x000200f8u, 0x0000025du, 0x0004003du, 0x00000006u, 0x00000331u, + 0x00000258u, 0x00050080u, 0x00000006u, 0x00000332u, 0x00000331u, 0x00000163u, 0x0003003eu, 0x00000258u, + 0x00000332u, 0x000200f9u, 0x0000025au, 0x000200f8u, 0x0000025cu, 0x000100fdu, 0x000200f8u, 0x000001c4u, + 0x0004003du, 0x00000006u, 0x00000335u, 0x000001b4u, 0x00050041u, 0x000001a7u, 0x00000336u, 0x000001a6u, + 0x0000008cu, 0x0004003du, 0x00000006u, 0x00000337u, 0x00000336u, 0x00050082u, 0x00000006u, 0x00000338u, + 0x00000335u, 0x00000337u, 0x0003003eu, 0x00000334u, 0x00000338u, 0x0004003du, 0x00000006u, 0x0000033au, + 0x0000019cu, 0x0003003eu, 0x00000339u, 0x0000033au, 0x000200f9u, 0x0000033bu, 0x000200f8u, 0x0000033bu, + 0x000400f6u, 0x0000033du, 0x0000033eu, 0x00000000u, 0x000200f9u, 0x0000033fu, 0x000200f8u, 0x0000033fu, + 0x0004003du, 0x00000006u, 0x00000340u, 0x00000339u, 0x00050041u, 0x000001a7u, 0x00000342u, 0x000001a6u, + 0x00000341u, 0x0004003du, 0x00000006u, 0x00000343u, 0x00000342u, 0x000500b0u, 0x00000038u, 0x00000344u, + 0x00000340u, 0x00000343u, 0x000400fau, 0x00000344u, 0x0000033cu, 0x0000033du, 0x000200f8u, 0x0000033cu, + 0x000200f9u, 0x00000345u, 0x000200f8u, 0x00000345u, 0x000400f6u, 0x00000347u, 0x00000348u, 0x00000000u, + 0x000200f9u, 0x00000346u, 0x000200f8u, 0x00000346u, 0x000300f7u, 0x0000034bu, 0x00000000u, 0x000400fau, + 0x00000349u, 0x0000034au, 0x00000391u, 0x000200f8u, 0x0000034au, 0x00050041u, 0x000001a7u, 0x00000350u, + 0x000001a6u, 0x00000072u, 0x0004003du, 0x00000006u, 0x00000351u, 0x00000350u, 0x000500c2u, 0x00000006u, + 0x00000352u, 0x00000351u, 0x000001cau, 0x0004003du, 0x00000006u, 0x00000353u, 0x000001aeu, 0x00050041u, + 0x000001a7u, 0x00000355u, 0x000001a6u, 0x00000354u, 0x0004003du, 0x00000006u, 0x00000356u, 0x00000355u, + 0x00050084u, 0x00000006u, 0x00000357u, 0x00000353u, 0x00000356u, 0x0004003du, 0x00000006u, 0x00000358u, + 0x00000334u, 0x00050041u, 0x000001a7u, 0x00000359u, 0x000001a6u, 0x00000341u, 0x0004003du, 0x00000006u, + 0x0000035au, 0x00000359u, 0x00050084u, 0x00000006u, 0x0000035bu, 0x00000358u, 0x0000035au, 0x00050080u, + 0x00000006u, 0x0000035cu, 0x00000357u, 0x0000035bu, 0x0004003du, 0x00000006u, 0x0000035du, 0x00000339u, + 0x00050080u, 0x00000006u, 0x0000035eu, 0x0000035cu, 0x0000035du, 0x00050080u, 0x00000006u, 0x0000035fu, + 0x00000352u, 0x0000035eu, 0x000300f7u, 0x00000363u, 0x00000000u, 0x000400fau, 0x00000360u, 0x00000362u, + 0x00000377u, 0x000200f8u, 0x00000362u, 0x00050041u, 0x000001a7u, 0x00000364u, 0x000001a6u, 0x00000063u, + 0x0004003du, 0x00000006u, 0x00000365u, 0x00000364u, 0x000500c2u, 0x00000006u, 0x00000366u, 0x00000365u, + 0x000001cau, 0x0004003du, 0x00000006u, 0x00000367u, 0x000001b9u, 0x00050041u, 0x000001a7u, 0x00000368u, + 0x000001a6u, 0x000001d1u, 0x0004003du, 0x00000006u, 0x00000369u, 0x00000368u, 0x00050084u, 0x00000006u, + 0x0000036au, 0x00000161u, 0x00000369u, 0x00050080u, 0x00000006u, 0x0000036bu, 0x00000367u, 0x0000036au, + 0x0004003du, 0x00000006u, 0x0000036cu, 0x00000334u, 0x00050041u, 0x000001a7u, 0x0000036du, 0x000001a6u, + 0x00000341u, 0x0004003du, 0x00000006u, 0x0000036eu, 0x0000036du, 0x00050084u, 0x00000006u, 0x0000036fu, + 0x0000036cu, 0x0000036eu, 0x00050080u, 0x00000006u, 0x00000370u, 0x0000036bu, 0x0000036fu, 0x0004003du, + 0x00000006u, 0x00000371u, 0x00000339u, 0x00050080u, 0x00000006u, 0x00000372u, 0x00000370u, 0x00000371u, + 0x00050080u, 0x00000006u, 0x00000373u, 0x00000366u, 0x00000372u, 0x00060041u, 0x000001f9u, 0x00000374u, + 0x000001f1u, 0x000000dfu, 0x00000373u, 0x0004003du, 0x00000006u, 0x00000375u, 0x00000374u, 0x0004007cu, + 0x00000008u, 0x00000376u, 0x00000375u, 0x0003003eu, 0x00000361u, 0x00000376u, 0x000200f9u, 0x00000363u, + 0x000200f8u, 0x00000377u, 0x00050041u, 0x000001a7u, 0x00000378u, 0x000001a6u, 0x00000063u, 0x0004003du, + 0x00000006u, 0x00000379u, 0x00000378u, 0x000500c2u, 0x00000006u, 0x0000037au, 0x00000379u, 0x0000008cu, + 0x0004003du, 0x00000006u, 0x0000037bu, 0x000001b9u, 0x00050041u, 0x000001a7u, 0x0000037cu, 0x000001a6u, + 0x000001d1u, 0x0004003du, 0x00000006u, 0x0000037du, 0x0000037cu, 0x00050084u, 0x00000006u, 0x0000037eu, + 0x00000161u, 0x0000037du, 0x00050080u, 0x00000006u, 0x0000037fu, 0x0000037bu, 0x0000037eu, 0x0004003du, + 0x00000006u, 0x00000380u, 0x00000334u, 0x00050041u, 0x000001a7u, 0x00000381u, 0x000001a6u, 0x00000341u, + 0x0004003du, 0x00000006u, 0x00000382u, 0x00000381u, 0x00050084u, 0x00000006u, 0x00000383u, 0x00000380u, + 0x00000382u, 0x00050080u, 0x00000006u, 0x00000384u, 0x0000037fu, 0x00000383u, 0x0004003du, 0x00000006u, + 0x00000385u, 0x00000339u, 0x00050080u, 0x00000006u, 0x00000386u, 0x00000384u, 0x00000385u, 0x00050080u, + 0x00000006u, 0x00000387u, 0x0000037au, 0x00000386u, 0x00060041u, 0x0000020au, 0x00000388u, 0x00000202u, + 0x000000dfu, 0x00000387u, 0x0004003du, 0x000001feu, 0x00000389u, 0x00000388u, 0x00040071u, 0x00000006u, + 0x0000038au, 0x00000389u, 0x0003003eu, 0x0000038bu, 0x0000038au, 0x0003003eu, 0x0000038cu, 0x000001e9u, + 0x00060039u, 0x00000008u, 0x0000038du, 0x0000001bu, 0x0000038bu, 0x0000038cu, 0x0003003eu, 0x00000361u, + 0x0000038du, 0x000200f9u, 0x00000363u, 0x000200f8u, 0x00000363u, 0x0004003du, 0x00000008u, 0x0000038eu, + 0x00000361u, 0x0004007cu, 0x00000006u, 0x0000038fu, 0x0000038eu, 0x00060041u, 0x000001f9u, 0x00000390u, + 0x0000034fu, 0x000000dfu, 0x0000035fu, 0x0003003eu, 0x00000390u, 0x0000038fu, 0x000200f9u, 0x0000034bu, + 0x000200f8u, 0x00000391u, 0x00050041u, 0x000001a7u, 0x00000396u, 0x000001a6u, 0x00000072u, 0x0004003du, + 0x00000006u, 0x00000397u, 0x00000396u, 0x000500c2u, 0x00000006u, 0x00000398u, 0x00000397u, 0x0000008cu, + 0x0004003du, 0x00000006u, 0x00000399u, 0x000001aeu, 0x00050041u, 0x000001a7u, 0x0000039au, 0x000001a6u, + 0x00000354u, 0x0004003du, 0x00000006u, 0x0000039bu, 0x0000039au, 0x00050084u, 0x00000006u, 0x0000039cu, + 0x00000399u, 0x0000039bu, 0x0004003du, 0x00000006u, 0x0000039du, 0x00000334u, 0x00050041u, 0x000001a7u, + 0x0000039eu, 0x000001a6u, 0x00000341u, 0x0004003du, 0x00000006u, 0x0000039fu, 0x0000039eu, 0x00050084u, + 0x00000006u, 0x000003a0u, 0x0000039du, 0x0000039fu, 0x00050080u, 0x00000006u, 0x000003a1u, 0x0000039cu, + 0x000003a0u, 0x0004003du, 0x00000006u, 0x000003a2u, 0x00000339u, 0x00050080u, 0x00000006u, 0x000003a3u, + 0x000003a1u, 0x000003a2u, 0x00050080u, 0x00000006u, 0x000003a4u, 0x00000398u, 0x000003a3u, 0x000300f7u, + 0x000003a8u, 0x00000000u, 0x000400fau, 0x000003a5u, 0x000003a7u, 0x000003bcu, 0x000200f8u, 0x000003a7u, + 0x00050041u, 0x000001a7u, 0x000003a9u, 0x000001a6u, 0x00000063u, 0x0004003du, 0x00000006u, 0x000003aau, + 0x000003a9u, 0x000500c2u, 0x00000006u, 0x000003abu, 0x000003aau, 0x000001cau, 0x0004003du, 0x00000006u, + 0x000003acu, 0x000001b9u, 0x00050041u, 0x000001a7u, 0x000003adu, 0x000001a6u, 0x000001d1u, 0x0004003du, + 0x00000006u, 0x000003aeu, 0x000003adu, 0x00050084u, 0x00000006u, 0x000003afu, 0x00000161u, 0x000003aeu, + 0x00050080u, 0x00000006u, 0x000003b0u, 0x000003acu, 0x000003afu, 0x0004003du, 0x00000006u, 0x000003b1u, + 0x00000334u, 0x00050041u, 0x000001a7u, 0x000003b2u, 0x000001a6u, 0x00000341u, 0x0004003du, 0x00000006u, + 0x000003b3u, 0x000003b2u, 0x00050084u, 0x00000006u, 0x000003b4u, 0x000003b1u, 0x000003b3u, 0x00050080u, + 0x00000006u, 0x000003b5u, 0x000003b0u, 0x000003b4u, 0x0004003du, 0x00000006u, 0x000003b6u, 0x00000339u, + 0x00050080u, 0x00000006u, 0x000003b7u, 0x000003b5u, 0x000003b6u, 0x00050080u, 0x00000006u, 0x000003b8u, + 0x000003abu, 0x000003b7u, 0x00060041u, 0x000001f9u, 0x000003b9u, 0x000001f1u, 0x000000dfu, 0x000003b8u, + 0x0004003du, 0x00000006u, 0x000003bau, 0x000003b9u, 0x0004007cu, 0x00000008u, 0x000003bbu, 0x000003bau, + 0x0003003eu, 0x000003a6u, 0x000003bbu, 0x000200f9u, 0x000003a8u, 0x000200f8u, 0x000003bcu, 0x00050041u, + 0x000001a7u, 0x000003bdu, 0x000001a6u, 0x00000063u, 0x0004003du, 0x00000006u, 0x000003beu, 0x000003bdu, + 0x000500c2u, 0x00000006u, 0x000003bfu, 0x000003beu, 0x0000008cu, 0x0004003du, 0x00000006u, 0x000003c0u, + 0x000001b9u, 0x00050041u, 0x000001a7u, 0x000003c1u, 0x000001a6u, 0x000001d1u, 0x0004003du, 0x00000006u, + 0x000003c2u, 0x000003c1u, 0x00050084u, 0x00000006u, 0x000003c3u, 0x00000161u, 0x000003c2u, 0x00050080u, + 0x00000006u, 0x000003c4u, 0x000003c0u, 0x000003c3u, 0x0004003du, 0x00000006u, 0x000003c5u, 0x00000334u, + 0x00050041u, 0x000001a7u, 0x000003c6u, 0x000001a6u, 0x00000341u, 0x0004003du, 0x00000006u, 0x000003c7u, + 0x000003c6u, 0x00050084u, 0x00000006u, 0x000003c8u, 0x000003c5u, 0x000003c7u, 0x00050080u, 0x00000006u, + 0x000003c9u, 0x000003c4u, 0x000003c8u, 0x0004003du, 0x00000006u, 0x000003cau, 0x00000339u, 0x00050080u, + 0x00000006u, 0x000003cbu, 0x000003c9u, 0x000003cau, 0x00050080u, 0x00000006u, 0x000003ccu, 0x000003bfu, + 0x000003cbu, 0x00060041u, 0x0000020au, 0x000003cdu, 0x00000202u, 0x000000dfu, 0x000003ccu, 0x0004003du, + 0x000001feu, 0x000003ceu, 0x000003cdu, 0x00040071u, 0x00000006u, 0x000003cfu, 0x000003ceu, 0x0003003eu, + 0x000003d0u, 0x000003cfu, 0x0003003eu, 0x000003d1u, 0x000001e9u, 0x00060039u, 0x00000008u, 0x000003d2u, + 0x0000001bu, 0x000003d0u, 0x000003d1u, 0x0003003eu, 0x000003a6u, 0x000003d2u, 0x000200f9u, 0x000003a8u, + 0x000200f8u, 0x000003a8u, 0x0004003du, 0x00000008u, 0x000003d4u, 0x000003a6u, 0x0003003eu, 0x000003d3u, + 0x000003d4u, 0x0003003eu, 0x000003d5u, 0x00000273u, 0x00060039u, 0x00000006u, 0x000003d6u, 0x00000020u, + 0x000003d3u, 0x000003d5u, 0x00040071u, 0x000001feu, 0x000003d7u, 0x000003d6u, 0x00060041u, 0x0000020au, + 0x000003d8u, 0x00000395u, 0x000000dfu, 0x000003a4u, 0x0003003eu, 0x000003d8u, 0x000003d7u, 0x000200f9u, + 0x0000034bu, 0x000200f8u, 0x0000034bu, 0x000200f9u, 0x00000348u, 0x000200f8u, 0x00000348u, 0x000400fau, + 0x000002d0u, 0x00000345u, 0x00000347u, 0x000200f8u, 0x00000347u, 0x000200f9u, 0x0000033eu, 0x000200f8u, + 0x0000033eu, 0x0004003du, 0x00000006u, 0x000003d9u, 0x00000339u, 0x00050080u, 0x00000006u, 0x000003dau, + 0x000003d9u, 0x00000163u, 0x0003003eu, 0x00000339u, 0x000003dau, 0x000200f9u, 0x0000033bu, 0x000200f8u, + 0x0000033du, 0x0004003du, 0x00000006u, 0x000003dbu, 0x0000019cu, 0x000500aau, 0x00000038u, 0x000003dcu, + 0x000003dbu, 0x00000042u, 0x000300f7u, 0x000003deu, 0x00000000u, 0x000400fau, 0x000003dcu, 0x000003ddu, + 0x000003deu, 0x000200f8u, 0x000003ddu, 0x0004003du, 0x00000006u, 0x000003e0u, 0x000001aeu, 0x00050041u, + 0x000001a7u, 0x000003e1u, 0x000001a6u, 0x000001aau, 0x0004003du, 0x00000006u, 0x000003e2u, 0x000003e1u, + 0x00050084u, 0x00000006u, 0x000003e3u, 0x000003e0u, 0x000003e2u, 0x0004003du, 0x00000006u, 0x000003e4u, + 0x00000334u, 0x00050080u, 0x00000006u, 0x000003e5u, 0x000003e3u, 0x000003e4u, 0x0003003eu, 0x000003dfu, + 0x000003e5u, 0x000300f7u, 0x000003ebu, 0x00000000u, 0x000400fau, 0x000003e8u, 0x000003eau, 0x000003feu, + 0x000200f8u, 0x000003eau, 0x00050041u, 0x000001a7u, 0x000003f0u, 0x000001a6u, 0x000000eeu, 0x0004003du, + 0x00000006u, 0x000003f1u, 0x000003f0u, 0x000500c2u, 0x00000006u, 0x000003f2u, 0x000003f1u, 0x000001cau, + 0x0004003du, 0x00000006u, 0x000003f3u, 0x000001aeu, 0x00050041u, 0x000001a7u, 0x000003f5u, 0x000001a6u, + 0x000003f4u, 0x0004003du, 0x00000006u, 0x000003f6u, 0x000003f5u, 0x00050084u, 0x00000006u, 0x000003f7u, + 0x000003f3u, 0x000003f6u, 0x0004003du, 0x00000006u, 0x000003f8u, 0x00000334u, 0x00050080u, 0x00000006u, + 0x000003f9u, 0x000003f7u, 0x000003f8u, 0x00050080u, 0x00000006u, 0x000003fau, 0x000003f2u, 0x000003f9u, + 0x00060041u, 0x000001f9u, 0x000003fbu, 0x000003efu, 0x000000dfu, 0x000003fau, 0x0004003du, 0x00000006u, + 0x000003fcu, 0x000003fbu, 0x0004007cu, 0x00000008u, 0x000003fdu, 0x000003fcu, 0x0003003eu, 0x000003e9u, + 0x000003fdu, 0x000200f9u, 0x000003ebu, 0x000200f8u, 0x000003feu, 0x00050041u, 0x000001a7u, 0x00000403u, + 0x000001a6u, 0x000000eeu, 0x0004003du, 0x00000006u, 0x00000404u, 0x00000403u, 0x000500c2u, 0x00000006u, + 0x00000405u, 0x00000404u, 0x0000008cu, 0x0004003du, 0x00000006u, 0x00000406u, 0x000001aeu, 0x00050041u, + 0x000001a7u, 0x00000407u, 0x000001a6u, 0x000003f4u, 0x0004003du, 0x00000006u, 0x00000408u, 0x00000407u, + 0x00050084u, 0x00000006u, 0x00000409u, 0x00000406u, 0x00000408u, 0x0004003du, 0x00000006u, 0x0000040au, + 0x00000334u, 0x00050080u, 0x00000006u, 0x0000040bu, 0x00000409u, 0x0000040au, 0x00050080u, 0x00000006u, + 0x0000040cu, 0x00000405u, 0x0000040bu, 0x00060041u, 0x0000020au, 0x0000040du, 0x00000402u, 0x000000dfu, + 0x0000040cu, 0x0004003du, 0x000001feu, 0x0000040eu, 0x0000040du, 0x00040071u, 0x00000006u, 0x0000040fu, + 0x0000040eu, 0x0003003eu, 0x00000410u, 0x0000040fu, 0x0003003eu, 0x00000411u, 0x000003e7u, 0x00060039u, + 0x00000008u, 0x00000412u, 0x0000001bu, 0x00000410u, 0x00000411u, 0x0003003eu, 0x000003e9u, 0x00000412u, + 0x000200f9u, 0x000003ebu, 0x000200f8u, 0x000003ebu, 0x0004003du, 0x00000008u, 0x00000413u, 0x000003e9u, + 0x00050041u, 0x000001a7u, 0x00000419u, 0x000001a6u, 0x00000418u, 0x0004003du, 0x00000006u, 0x0000041au, + 0x00000419u, 0x000500c2u, 0x00000006u, 0x0000041bu, 0x0000041au, 0x000001cau, 0x0004003du, 0x00000006u, + 0x0000041cu, 0x00000334u, 0x00050080u, 0x00000006u, 0x0000041du, 0x0000041bu, 0x0000041cu, 0x00060041u, + 0x000001f9u, 0x0000041eu, 0x00000417u, 0x000000dfu, 0x0000041du, 0x0004003du, 0x00000006u, 0x0000041fu, + 0x0000041eu, 0x0004007cu, 0x00000008u, 0x00000420u, 0x0000041fu, 0x00050081u, 0x00000008u, 0x00000421u, + 0x00000413u, 0x00000420u, 0x0003003eu, 0x000003e6u, 0x00000421u, 0x0004003du, 0x00000008u, 0x00000423u, + 0x000003e6u, 0x000500bau, 0x00000038u, 0x00000425u, 0x00000423u, 0x00000424u, 0x000300f7u, 0x00000428u, + 0x00000000u, 0x000400fau, 0x00000425u, 0x00000427u, 0x0000042au, 0x000200f8u, 0x00000427u, 0x0004003du, + 0x00000008u, 0x00000429u, 0x000003e6u, 0x0003003eu, 0x00000426u, 0x00000429u, 0x000200f9u, 0x00000428u, + 0x000200f8u, 0x0000042au, 0x0004003du, 0x00000008u, 0x0000042bu, 0x000003e6u, 0x0006000cu, 0x00000008u, + 0x0000042cu, 0x00000001u, 0x0000001bu, 0x0000042bu, 0x0003003eu, 0x0000042du, 0x0000042cu, 0x00050039u, + 0x00000008u, 0x0000042eu, 0x0000002cu, 0x0000042du, 0x0003003eu, 0x00000426u, 0x0000042eu, 0x000200f9u, + 0x00000428u, 0x000200f8u, 0x00000428u, 0x0004003du, 0x00000008u, 0x0000042fu, 0x00000426u, 0x0003003eu, + 0x00000422u, 0x0000042fu, 0x00050041u, 0x000001a7u, 0x00000436u, 0x000001a6u, 0x00000435u, 0x0004003du, + 0x00000006u, 0x00000437u, 0x00000436u, 0x000500c2u, 0x00000006u, 0x00000438u, 0x00000437u, 0x000001cau, + 0x0004003du, 0x00000006u, 0x00000439u, 0x00000334u, 0x00050080u, 0x00000006u, 0x0000043au, 0x00000438u, + 0x00000439u, 0x00060041u, 0x000001f9u, 0x0000043bu, 0x00000434u, 0x000000dfu, 0x0000043au, 0x0004003du, + 0x00000006u, 0x0000043cu, 0x0000043bu, 0x0004007cu, 0x00000008u, 0x0000043du, 0x0000043cu, 0x0003003eu, + 0x00000430u, 0x0000043du, 0x00050041u, 0x000001a7u, 0x00000442u, 0x000001a6u, 0x00000030u, 0x0004003du, + 0x00000006u, 0x00000443u, 0x00000442u, 0x000500c2u, 0x00000006u, 0x00000444u, 0x00000443u, 0x000001cau, + 0x0004003du, 0x00000006u, 0x00000445u, 0x000003dfu, 0x00050080u, 0x00000006u, 0x00000446u, 0x00000444u, + 0x00000445u, 0x0004003du, 0x00000008u, 0x00000447u, 0x00000430u, 0x0006000cu, 0x00000008u, 0x00000448u, + 0x00000001u, 0x0000001bu, 0x00000447u, 0x0004007fu, 0x00000008u, 0x00000449u, 0x00000448u, 0x0004003du, + 0x00000008u, 0x0000044au, 0x00000422u, 0x00050085u, 0x00000008u, 0x0000044bu, 0x00000449u, 0x0000044au, + 0x0004007cu, 0x00000006u, 0x0000044cu, 0x0000044bu, 0x00060041u, 0x000001f9u, 0x0000044du, 0x00000441u, + 0x000000dfu, 0x00000446u, 0x0003003eu, 0x0000044du, 0x0000044cu, 0x000300f7u, 0x00000452u, 0x00000000u, + 0x000400fau, 0x0000044fu, 0x00000451u, 0x00000465u, 0x000200f8u, 0x00000451u, 0x00050041u, 0x000001a7u, + 0x00000457u, 0x000001a6u, 0x000000bdu, 0x0004003du, 0x00000006u, 0x00000458u, 0x00000457u, 0x000500c2u, + 0x00000006u, 0x00000459u, 0x00000458u, 0x000001cau, 0x0004003du, 0x00000006u, 0x0000045au, 0x000001aeu, + 0x00050041u, 0x000001a7u, 0x0000045cu, 0x000001a6u, 0x0000045bu, 0x0004003du, 0x00000006u, 0x0000045du, + 0x0000045cu, 0x00050084u, 0x00000006u, 0x0000045eu, 0x0000045au, 0x0000045du, 0x0004003du, 0x00000006u, + 0x0000045fu, 0x00000334u, 0x00050080u, 0x00000006u, 0x00000460u, 0x0000045eu, 0x0000045fu, 0x00050080u, + 0x00000006u, 0x00000461u, 0x00000459u, 0x00000460u, 0x00060041u, 0x000001f9u, 0x00000462u, 0x00000456u, + 0x000000dfu, 0x00000461u, 0x0004003du, 0x00000006u, 0x00000463u, 0x00000462u, 0x0004007cu, 0x00000008u, + 0x00000464u, 0x00000463u, 0x0003003eu, 0x00000450u, 0x00000464u, 0x000200f9u, 0x00000452u, 0x000200f8u, + 0x00000465u, 0x00050041u, 0x000001a7u, 0x0000046au, 0x000001a6u, 0x000000bdu, 0x0004003du, 0x00000006u, + 0x0000046bu, 0x0000046au, 0x000500c2u, 0x00000006u, 0x0000046cu, 0x0000046bu, 0x0000008cu, 0x0004003du, + 0x00000006u, 0x0000046du, 0x000001aeu, 0x00050041u, 0x000001a7u, 0x0000046eu, 0x000001a6u, 0x0000045bu, + 0x0004003du, 0x00000006u, 0x0000046fu, 0x0000046eu, 0x00050084u, 0x00000006u, 0x00000470u, 0x0000046du, + 0x0000046fu, 0x0004003du, 0x00000006u, 0x00000471u, 0x00000334u, 0x00050080u, 0x00000006u, 0x00000472u, + 0x00000470u, 0x00000471u, 0x00050080u, 0x00000006u, 0x00000473u, 0x0000046cu, 0x00000472u, 0x00060041u, + 0x0000020au, 0x00000474u, 0x00000469u, 0x000000dfu, 0x00000473u, 0x0004003du, 0x000001feu, 0x00000475u, + 0x00000474u, 0x00040071u, 0x00000006u, 0x00000476u, 0x00000475u, 0x0003003eu, 0x00000477u, 0x00000476u, + 0x0003003eu, 0x00000478u, 0x000003e7u, 0x00060039u, 0x00000008u, 0x00000479u, 0x0000001bu, 0x00000477u, + 0x00000478u, 0x0003003eu, 0x00000450u, 0x00000479u, 0x000200f9u, 0x00000452u, 0x000200f8u, 0x00000452u, + 0x0004003du, 0x00000008u, 0x0000047au, 0x00000450u, 0x0003003eu, 0x0000044eu, 0x0000047au, 0x00050041u, + 0x000001a7u, 0x00000480u, 0x000001a6u, 0x0000047fu, 0x0004003du, 0x00000006u, 0x00000481u, 0x00000480u, + 0x000500c2u, 0x00000006u, 0x00000482u, 0x00000481u, 0x000001cau, 0x0004003du, 0x00000006u, 0x00000483u, + 0x000003dfu, 0x00050080u, 0x00000006u, 0x00000484u, 0x00000482u, 0x00000483u, 0x0004003du, 0x00000008u, + 0x00000486u, 0x0000044eu, 0x0003003eu, 0x00000485u, 0x00000486u, 0x00050039u, 0x00000008u, 0x00000487u, + 0x00000024u, 0x00000485u, 0x0004007cu, 0x00000006u, 0x00000488u, 0x00000487u, 0x00060041u, 0x000001f9u, + 0x00000489u, 0x0000047eu, 0x000000dfu, 0x00000484u, 0x0003003eu, 0x00000489u, 0x00000488u, 0x000200f9u, + 0x000003deu, 0x000200f8u, 0x000003deu, 0x000100fdu, 0x00010038u, 0x00050036u, 0x00000008u, 0x0000000bu, + 0x00000000u, 0x00000009u, 0x00030037u, 0x00000007u, 0x0000000au, 0x000200f8u, 0x0000000cu, 0x0004003du, + 0x00000006u, 0x0000002eu, 0x0000000au, 0x000500c4u, 0x00000006u, 0x00000031u, 0x0000002eu, 0x00000030u, + 0x0004007cu, 0x00000008u, 0x00000032u, 0x00000031u, 0x000200feu, 0x00000032u, 0x00010038u, 0x00050036u, + 0x00000006u, 0x00000010u, 0x00000000u, 0x0000000eu, 0x00030037u, 0x0000000du, 0x0000000fu, 0x000200f8u, + 0x00000011u, 0x0004003bu, 0x00000007u, 0x00000035u, 0x00000007u, 0x0004003bu, 0x00000007u, 0x0000004eu, + 0x00000007u, 0x0004003du, 0x00000008u, 0x00000036u, 0x0000000fu, 0x0004007cu, 0x00000006u, 0x00000037u, + 0x00000036u, 0x0003003eu, 0x00000035u, 0x00000037u, 0x0004003du, 0x00000006u, 0x00000039u, 0x00000035u, + 0x000500c7u, 0x00000006u, 0x0000003bu, 0x00000039u, 0x0000003au, 0x000500aau, 0x00000038u, 0x0000003cu, + 0x0000003bu, 0x0000003au, 0x000300f7u, 0x0000003eu, 0x00000000u, 0x000400fau, 0x0000003cu, 0x0000003du, + 0x0000003eu, 0x000200f8u, 0x0000003du, 0x0004003du, 0x00000006u, 0x0000003fu, 0x00000035u, 0x000500c7u, + 0x00000006u, 0x00000041u, 0x0000003fu, 0x00000040u, 0x000500abu, 0x00000038u, 0x00000043u, 0x00000041u, + 0x00000042u, 0x000200f9u, 0x0000003eu, 0x000200f8u, 0x0000003eu, 0x000700f5u, 0x00000038u, 0x00000044u, + 0x0000003cu, 0x00000011u, 0x00000043u, 0x0000003du, 0x000300f7u, 0x00000046u, 0x00000000u, 0x000400fau, + 0x00000044u, 0x00000045u, 0x00000046u, 0x000200f8u, 0x00000045u, 0x0004003du, 0x00000006u, 0x00000047u, + 0x00000035u, 0x000500c2u, 0x00000006u, 0x00000048u, 0x00000047u, 0x00000030u, 0x000500c5u, 0x00000006u, + 0x0000004au, 0x00000048u, 0x00000049u, 0x000500c7u, 0x00000006u, 0x0000004cu, 0x0000004au, 0x0000004bu, + 0x000200feu, 0x0000004cu, 0x000200f8u, 0x00000046u, 0x0004003du, 0x00000006u, 0x00000050u, 0x00000035u, + 0x000500c2u, 0x00000006u, 0x00000051u, 0x00000050u, 0x00000030u, 0x000500c7u, 0x00000006u, 0x00000053u, + 0x00000051u, 0x00000052u, 0x00050080u, 0x00000006u, 0x00000054u, 0x0000004fu, 0x00000053u, 0x0003003eu, + 0x0000004eu, 0x00000054u, 0x0004003du, 0x00000006u, 0x00000055u, 0x00000035u, 0x0004003du, 0x00000006u, + 0x00000056u, 0x0000004eu, 0x00050080u, 0x00000006u, 0x00000057u, 0x00000055u, 0x00000056u, 0x000500c2u, + 0x00000006u, 0x00000058u, 0x00000057u, 0x00000030u, 0x000500c7u, 0x00000006u, 0x00000059u, 0x00000058u, + 0x0000004bu, 0x000200feu, 0x00000059u, 0x00010038u, 0x00050036u, 0x00000008u, 0x00000013u, 0x00000000u, + 0x00000009u, 0x00030037u, 0x00000007u, 0x00000012u, 0x000200f8u, 0x00000014u, 0x0004003bu, 0x00000007u, + 0x0000005cu, 0x00000007u, 0x0004003bu, 0x00000007u, 0x00000061u, 0x00000007u, 0x0004003bu, 0x00000007u, + 0x00000067u, 0x00000007u, 0x0004003bu, 0x00000007u, 0x00000082u, 0x00000007u, 0x0004003du, 0x00000006u, + 0x0000005du, 0x00000012u, 0x000500c7u, 0x00000006u, 0x0000005fu, 0x0000005du, 0x0000005eu, 0x000500c4u, + 0x00000006u, 0x00000060u, 0x0000005fu, 0x00000030u, 0x0003003eu, 0x0000005cu, 0x00000060u, 0x0004003du, + 0x00000006u, 0x00000062u, 0x00000012u, 0x000500c2u, 0x00000006u, 0x00000064u, 0x00000062u, 0x00000063u, + 0x000500c7u, 0x00000006u, 0x00000066u, 0x00000064u, 0x00000065u, 0x0003003eu, 0x00000061u, 0x00000066u, + 0x0004003du, 0x00000006u, 0x00000068u, 0x00000012u, 0x000500c7u, 0x00000006u, 0x0000006au, 0x00000068u, + 0x00000069u, 0x0003003eu, 0x00000067u, 0x0000006au, 0x0004003du, 0x00000006u, 0x0000006bu, 0x00000061u, + 0x000500aau, 0x00000038u, 0x0000006cu, 0x0000006bu, 0x00000065u, 0x000300f7u, 0x0000006eu, 0x00000000u, + 0x000400fau, 0x0000006cu, 0x0000006du, 0x0000006eu, 0x000200f8u, 0x0000006du, 0x0004003du, 0x00000006u, + 0x0000006fu, 0x0000005cu, 0x000500c5u, 0x00000006u, 0x00000070u, 0x0000006fu, 0x0000003au, 0x0004003du, + 0x00000006u, 0x00000071u, 0x00000067u, 0x000500c4u, 0x00000006u, 0x00000073u, 0x00000071u, 0x00000072u, + 0x000500c5u, 0x00000006u, 0x00000074u, 0x00000070u, 0x00000073u, 0x0004007cu, 0x00000008u, 0x00000075u, + 0x00000074u, 0x000200feu, 0x00000075u, 0x000200f8u, 0x0000006eu, 0x0004003du, 0x00000006u, 0x00000077u, + 0x00000061u, 0x000500aau, 0x00000038u, 0x00000078u, 0x00000077u, 0x00000042u, 0x000300f7u, 0x0000007au, + 0x00000000u, 0x000400fau, 0x00000078u, 0x00000079u, 0x0000007au, 0x000200f8u, 0x00000079u, 0x0004003du, + 0x00000006u, 0x0000007bu, 0x00000067u, 0x000500aau, 0x00000038u, 0x0000007cu, 0x0000007bu, 0x00000042u, + 0x000300f7u, 0x0000007eu, 0x00000000u, 0x000400fau, 0x0000007cu, 0x0000007du, 0x0000007eu, 0x000200f8u, + 0x0000007du, 0x0004003du, 0x00000006u, 0x0000007fu, 0x0000005cu, 0x0004007cu, 0x00000008u, 0x00000080u, + 0x0000007fu, 0x000200feu, 0x00000080u, 0x000200f8u, 0x0000007eu, 0x0003003eu, 0x00000082u, 0x00000042u, + 0x000200f9u, 0x00000083u, 0x000200f8u, 0x00000083u, 0x000400f6u, 0x00000085u, 0x00000086u, 0x00000000u, + 0x000200f9u, 0x00000087u, 0x000200f8u, 0x00000087u, 0x0004003du, 0x00000006u, 0x00000088u, 0x00000067u, + 0x000500c7u, 0x00000006u, 0x0000008au, 0x00000088u, 0x00000089u, 0x000500aau, 0x00000038u, 0x0000008bu, + 0x0000008au, 0x00000042u, 0x000400fau, 0x0000008bu, 0x00000084u, 0x00000085u, 0x000200f8u, 0x00000084u, + 0x0004003du, 0x00000006u, 0x0000008du, 0x00000067u, 0x000500c4u, 0x00000006u, 0x0000008eu, 0x0000008du, + 0x0000008cu, 0x0003003eu, 0x00000067u, 0x0000008eu, 0x0004003du, 0x00000006u, 0x0000008fu, 0x00000082u, + 0x00050080u, 0x00000006u, 0x00000090u, 0x0000008fu, 0x00000052u, 0x0003003eu, 0x00000082u, 0x00000090u, + 0x000200f9u, 0x00000086u, 0x000200f8u, 0x00000086u, 0x000200f9u, 0x00000083u, 0x000200f8u, 0x00000085u, + 0x0004003du, 0x00000006u, 0x00000091u, 0x00000067u, 0x000500c7u, 0x00000006u, 0x00000092u, 0x00000091u, + 0x00000069u, 0x0003003eu, 0x00000067u, 0x00000092u, 0x0004003du, 0x00000006u, 0x00000093u, 0x0000005cu, + 0x0004003du, 0x00000006u, 0x00000095u, 0x00000082u, 0x00050082u, 0x00000006u, 0x00000096u, 0x00000094u, + 0x00000095u, 0x000500c4u, 0x00000006u, 0x00000098u, 0x00000096u, 0x00000097u, 0x000500c5u, 0x00000006u, + 0x00000099u, 0x00000093u, 0x00000098u, 0x0004003du, 0x00000006u, 0x0000009au, 0x00000067u, 0x000500c4u, + 0x00000006u, 0x0000009bu, 0x0000009au, 0x00000072u, 0x000500c5u, 0x00000006u, 0x0000009cu, 0x00000099u, + 0x0000009bu, 0x0004007cu, 0x00000008u, 0x0000009du, 0x0000009cu, 0x000200feu, 0x0000009du, 0x000200f8u, + 0x0000007au, 0x0004003du, 0x00000006u, 0x0000009fu, 0x0000005cu, 0x0004003du, 0x00000006u, 0x000000a0u, + 0x00000061u, 0x00050080u, 0x00000006u, 0x000000a2u, 0x000000a0u, 0x000000a1u, 0x000500c4u, 0x00000006u, + 0x000000a3u, 0x000000a2u, 0x00000097u, 0x000500c5u, 0x00000006u, 0x000000a4u, 0x0000009fu, 0x000000a3u, + 0x0004003du, 0x00000006u, 0x000000a5u, 0x00000067u, 0x000500c4u, 0x00000006u, 0x000000a6u, 0x000000a5u, + 0x00000072u, 0x000500c5u, 0x00000006u, 0x000000a7u, 0x000000a4u, 0x000000a6u, 0x0004007cu, 0x00000008u, + 0x000000a8u, 0x000000a7u, 0x000200feu, 0x000000a8u, 0x00010038u, 0x00050036u, 0x00000006u, 0x00000016u, + 0x00000000u, 0x0000000eu, 0x00030037u, 0x0000000du, 0x00000015u, 0x000200f8u, 0x00000017u, 0x0004003bu, + 0x00000007u, 0x000000abu, 0x00000007u, 0x0004003bu, 0x00000007u, 0x000000aeu, 0x00000007u, 0x0004003bu, + 0x00000007u, 0x000000b2u, 0x00000007u, 0x0004003bu, 0x000000b7u, 0x000000b8u, 0x00000007u, 0x0004003bu, + 0x00000007u, 0x000000bfu, 0x00000007u, 0x0004003bu, 0x00000007u, 0x000000cbu, 0x00000007u, 0x0004003bu, + 0x00000007u, 0x000000edu, 0x00000007u, 0x0004003bu, 0x00000007u, 0x000000f2u, 0x00000007u, 0x0004003bu, + 0x00000007u, 0x000000f6u, 0x00000007u, 0x0004003bu, 0x00000007u, 0x000000fcu, 0x00000007u, 0x0004003bu, + 0x00000007u, 0x00000118u, 0x00000007u, 0x0004003bu, 0x00000007u, 0x0000011fu, 0x00000007u, 0x0004003du, + 0x00000008u, 0x000000acu, 0x00000015u, 0x0004007cu, 0x00000006u, 0x000000adu, 0x000000acu, 0x0003003eu, + 0x000000abu, 0x000000adu, 0x0004003du, 0x00000006u, 0x000000afu, 0x000000abu, 0x000500c2u, 0x00000006u, + 0x000000b0u, 0x000000afu, 0x00000030u, 0x000500c7u, 0x00000006u, 0x000000b1u, 0x000000b0u, 0x0000005eu, + 0x0003003eu, 0x000000aeu, 0x000000b1u, 0x0004003du, 0x00000006u, 0x000000b3u, 0x000000abu, 0x000500c2u, + 0x00000006u, 0x000000b4u, 0x000000b3u, 0x00000097u, 0x000500c7u, 0x00000006u, 0x000000b6u, 0x000000b4u, + 0x000000b5u, 0x0003003eu, 0x000000b2u, 0x000000b6u, 0x0004003du, 0x00000006u, 0x000000b9u, 0x000000b2u, + 0x0004007cu, 0x0000002fu, 0x000000bau, 0x000000b9u, 0x00050082u, 0x0000002fu, 0x000000bcu, 0x000000bau, + 0x000000bbu, 0x00050080u, 0x0000002fu, 0x000000beu, 0x000000bcu, 0x000000bdu, 0x0003003eu, 0x000000b8u, + 0x000000beu, 0x0004003du, 0x00000006u, 0x000000c0u, 0x000000abu, 0x000500c7u, 0x00000006u, 0x000000c1u, + 0x000000c0u, 0x00000040u, 0x0003003eu, 0x000000bfu, 0x000000c1u, 0x0004003du, 0x00000006u, 0x000000c2u, + 0x000000b2u, 0x000500aau, 0x00000038u, 0x000000c3u, 0x000000c2u, 0x000000b5u, 0x000300f7u, 0x000000c5u, + 0x00000000u, 0x000400fau, 0x000000c3u, 0x000000c4u, 0x000000c5u, 0x000200f8u, 0x000000c4u, 0x0004003du, + 0x00000006u, 0x000000c6u, 0x000000aeu, 0x000500c5u, 0x00000006u, 0x000000c8u, 0x000000c6u, 0x000000c7u, + 0x0004003du, 0x00000006u, 0x000000c9u, 0x000000bfu, 0x000500abu, 0x00000038u, 0x000000cau, 0x000000c9u, + 0x00000042u, 0x000300f7u, 0x000000cdu, 0x00000000u, 0x000400fau, 0x000000cau, 0x000000ccu, 0x000000d2u, + 0x000200f8u, 0x000000ccu, 0x0004003du, 0x00000006u, 0x000000cfu, 0x000000bfu, 0x000500c2u, 0x00000006u, + 0x000000d0u, 0x000000cfu, 0x00000072u, 0x000500c5u, 0x00000006u, 0x000000d1u, 0x000000ceu, 0x000000d0u, + 0x0003003eu, 0x000000cbu, 0x000000d1u, 0x000200f9u, 0x000000cdu, 0x000200f8u, 0x000000d2u, 0x0003003eu, + 0x000000cbu, 0x00000042u, 0x000200f9u, 0x000000cdu, 0x000200f8u, 0x000000cdu, 0x0004003du, 0x00000006u, + 0x000000d3u, 0x000000cbu, 0x000500c5u, 0x00000006u, 0x000000d4u, 0x000000c8u, 0x000000d3u, 0x000200feu, + 0x000000d4u, 0x000200f8u, 0x000000c5u, 0x0004003du, 0x0000002fu, 0x000000d6u, 0x000000b8u, 0x000500afu, + 0x00000038u, 0x000000d8u, 0x000000d6u, 0x000000d7u, 0x000300f7u, 0x000000dau, 0x00000000u, 0x000400fau, + 0x000000d8u, 0x000000d9u, 0x000000dau, 0x000200f8u, 0x000000d9u, 0x0004003du, 0x00000006u, 0x000000dbu, + 0x000000aeu, 0x000500c5u, 0x00000006u, 0x000000dcu, 0x000000dbu, 0x000000c7u, 0x000200feu, 0x000000dcu, + 0x000200f8u, 0x000000dau, 0x0004003du, 0x0000002fu, 0x000000deu, 0x000000b8u, 0x000500b3u, 0x00000038u, + 0x000000e0u, 0x000000deu, 0x000000dfu, 0x000300f7u, 0x000000e2u, 0x00000000u, 0x000400fau, 0x000000e0u, + 0x000000e1u, 0x000000e2u, 0x000200f8u, 0x000000e1u, 0x0004003du, 0x0000002fu, 0x000000e3u, 0x000000b8u, + 0x000500b1u, 0x00000038u, 0x000000e5u, 0x000000e3u, 0x000000e4u, 0x000300f7u, 0x000000e7u, 0x00000000u, + 0x000400fau, 0x000000e5u, 0x000000e6u, 0x000000e7u, 0x000200f8u, 0x000000e6u, 0x0004003du, 0x00000006u, + 0x000000e8u, 0x000000aeu, 0x000200feu, 0x000000e8u, 0x000200f8u, 0x000000e7u, 0x0004003du, 0x00000006u, + 0x000000ebu, 0x000000bfu, 0x000500c5u, 0x00000006u, 0x000000ecu, 0x000000ebu, 0x000000eau, 0x0003003eu, + 0x000000bfu, 0x000000ecu, 0x0004003du, 0x0000002fu, 0x000000efu, 0x000000b8u, 0x00050082u, 0x0000002fu, + 0x000000f0u, 0x000000eeu, 0x000000efu, 0x0004007cu, 0x00000006u, 0x000000f1u, 0x000000f0u, 0x0003003eu, + 0x000000edu, 0x000000f1u, 0x0004003du, 0x00000006u, 0x000000f3u, 0x000000bfu, 0x0004003du, 0x00000006u, + 0x000000f4u, 0x000000edu, 0x000500c2u, 0x00000006u, 0x000000f5u, 0x000000f3u, 0x000000f4u, 0x0003003eu, + 0x000000f2u, 0x000000f5u, 0x0004003du, 0x00000006u, 0x000000f7u, 0x000000bfu, 0x0004003du, 0x00000006u, + 0x000000f8u, 0x000000edu, 0x000500c4u, 0x00000006u, 0x000000f9u, 0x00000052u, 0x000000f8u, 0x00050082u, + 0x00000006u, 0x000000fau, 0x000000f9u, 0x00000052u, 0x000500c7u, 0x00000006u, 0x000000fbu, 0x000000f7u, + 0x000000fau, 0x0003003eu, 0x000000f6u, 0x000000fbu, 0x0004003du, 0x00000006u, 0x000000fdu, 0x000000edu, + 0x00050082u, 0x00000006u, 0x000000feu, 0x000000fdu, 0x00000052u, 0x000500c4u, 0x00000006u, 0x000000ffu, + 0x00000052u, 0x000000feu, 0x0003003eu, 0x000000fcu, 0x000000ffu, 0x0004003du, 0x00000006u, 0x00000100u, + 0x000000f6u, 0x0004003du, 0x00000006u, 0x00000101u, 0x000000fcu, 0x000500acu, 0x00000038u, 0x00000102u, + 0x00000100u, 0x00000101u, 0x000400a8u, 0x00000038u, 0x00000103u, 0x00000102u, 0x000300f7u, 0x00000105u, + 0x00000000u, 0x000400fau, 0x00000103u, 0x00000104u, 0x00000105u, 0x000200f8u, 0x00000104u, 0x0004003du, + 0x00000006u, 0x00000106u, 0x000000f6u, 0x0004003du, 0x00000006u, 0x00000107u, 0x000000fcu, 0x000500aau, + 0x00000038u, 0x00000108u, 0x00000106u, 0x00000107u, 0x000300f7u, 0x0000010au, 0x00000000u, 0x000400fau, + 0x00000108u, 0x00000109u, 0x0000010au, 0x000200f8u, 0x00000109u, 0x0004003du, 0x00000006u, 0x0000010bu, + 0x000000f2u, 0x000500c7u, 0x00000006u, 0x0000010cu, 0x0000010bu, 0x00000052u, 0x000500abu, 0x00000038u, + 0x0000010du, 0x0000010cu, 0x00000042u, 0x000200f9u, 0x0000010au, 0x000200f8u, 0x0000010au, 0x000700f5u, + 0x00000038u, 0x0000010eu, 0x00000108u, 0x00000104u, 0x0000010du, 0x00000109u, 0x000200f9u, 0x00000105u, + 0x000200f8u, 0x00000105u, 0x000700f5u, 0x00000038u, 0x0000010fu, 0x00000102u, 0x000000e7u, 0x0000010eu, + 0x0000010au, 0x000300f7u, 0x00000111u, 0x00000000u, 0x000400fau, 0x0000010fu, 0x00000110u, 0x00000111u, + 0x000200f8u, 0x00000110u, 0x0004003du, 0x00000006u, 0x00000112u, 0x000000f2u, 0x00050080u, 0x00000006u, + 0x00000113u, 0x00000112u, 0x00000052u, 0x0003003eu, 0x000000f2u, 0x00000113u, 0x000200f9u, 0x00000111u, + 0x000200f8u, 0x00000111u, 0x0004003du, 0x00000006u, 0x00000114u, 0x000000aeu, 0x0004003du, 0x00000006u, + 0x00000115u, 0x000000f2u, 0x000500c5u, 0x00000006u, 0x00000116u, 0x00000114u, 0x00000115u, 0x000200feu, + 0x00000116u, 0x000200f8u, 0x000000e2u, 0x0004003du, 0x0000002fu, 0x00000119u, 0x000000b8u, 0x0004007cu, + 0x00000006u, 0x0000011au, 0x00000119u, 0x000500c4u, 0x00000006u, 0x0000011bu, 0x0000011au, 0x00000063u, + 0x0004003du, 0x00000006u, 0x0000011cu, 0x000000bfu, 0x000500c2u, 0x00000006u, 0x0000011du, 0x0000011cu, + 0x00000072u, 0x000500c5u, 0x00000006u, 0x0000011eu, 0x0000011bu, 0x0000011du, 0x0003003eu, 0x00000118u, + 0x0000011eu, 0x0004003du, 0x00000006u, 0x00000120u, 0x000000bfu, 0x000500c7u, 0x00000006u, 0x00000122u, + 0x00000120u, 0x00000121u, 0x0003003eu, 0x0000011fu, 0x00000122u, 0x0004003du, 0x00000006u, 0x00000123u, + 0x0000011fu, 0x000500acu, 0x00000038u, 0x00000125u, 0x00000123u, 0x00000124u, 0x000400a8u, 0x00000038u, + 0x00000126u, 0x00000125u, 0x000300f7u, 0x00000128u, 0x00000000u, 0x000400fau, 0x00000126u, 0x00000127u, + 0x00000128u, 0x000200f8u, 0x00000127u, 0x0004003du, 0x00000006u, 0x00000129u, 0x0000011fu, 0x000500aau, + 0x00000038u, 0x0000012au, 0x00000129u, 0x00000124u, 0x000300f7u, 0x0000012cu, 0x00000000u, 0x000400fau, + 0x0000012au, 0x0000012bu, 0x0000012cu, 0x000200f8u, 0x0000012bu, 0x0004003du, 0x00000006u, 0x0000012du, + 0x00000118u, 0x000500c7u, 0x00000006u, 0x0000012eu, 0x0000012du, 0x00000052u, 0x000500abu, 0x00000038u, + 0x0000012fu, 0x0000012eu, 0x00000042u, 0x000200f9u, 0x0000012cu, 0x000200f8u, 0x0000012cu, 0x000700f5u, + 0x00000038u, 0x00000130u, 0x0000012au, 0x00000127u, 0x0000012fu, 0x0000012bu, 0x000200f9u, 0x00000128u, + 0x000200f8u, 0x00000128u, 0x000700f5u, 0x00000038u, 0x00000131u, 0x00000125u, 0x000000e2u, 0x00000130u, + 0x0000012cu, 0x000300f7u, 0x00000133u, 0x00000000u, 0x000400fau, 0x00000131u, 0x00000132u, 0x00000133u, + 0x000200f8u, 0x00000132u, 0x0004003du, 0x00000006u, 0x00000134u, 0x00000118u, 0x00050080u, 0x00000006u, + 0x00000135u, 0x00000134u, 0x00000052u, 0x0003003eu, 0x00000118u, 0x00000135u, 0x000200f9u, 0x00000133u, + 0x000200f8u, 0x00000133u, 0x0004003du, 0x00000006u, 0x00000136u, 0x000000aeu, 0x0004003du, 0x00000006u, + 0x00000137u, 0x00000118u, 0x000500c5u, 0x00000006u, 0x00000138u, 0x00000136u, 0x00000137u, 0x000200feu, + 0x00000138u, 0x00010038u, 0x00050036u, 0x00000008u, 0x0000001bu, 0x00000000u, 0x00000018u, 0x00030037u, + 0x00000007u, 0x00000019u, 0x00030037u, 0x00000007u, 0x0000001au, 0x000200f8u, 0x0000001cu, 0x0004003bu, + 0x0000000du, 0x0000013du, 0x00000007u, 0x0004003bu, 0x00000007u, 0x00000140u, 0x00000007u, 0x0004003bu, + 0x00000007u, 0x00000144u, 0x00000007u, 0x0004003du, 0x00000006u, 0x0000013bu, 0x0000001au, 0x000500aau, + 0x00000038u, 0x0000013cu, 0x0000013bu, 0x00000052u, 0x000300f7u, 0x0000013fu, 0x00000000u, 0x000400fau, + 0x0000013cu, 0x0000013eu, 0x00000143u, 0x000200f8u, 0x0000013eu, 0x0004003du, 0x00000006u, 0x00000141u, + 0x00000019u, 0x0003003eu, 0x00000140u, 0x00000141u, 0x00050039u, 0x00000008u, 0x00000142u, 0x00000013u, + 0x00000140u, 0x0003003eu, 0x0000013du, 0x00000142u, 0x000200f9u, 0x0000013fu, 0x000200f8u, 0x00000143u, + 0x0004003du, 0x00000006u, 0x00000145u, 0x00000019u, 0x0003003eu, 0x00000144u, 0x00000145u, 0x00050039u, + 0x00000008u, 0x00000146u, 0x0000000bu, 0x00000144u, 0x0003003eu, 0x0000013du, 0x00000146u, 0x000200f9u, + 0x0000013fu, 0x000200f8u, 0x0000013fu, 0x0004003du, 0x00000008u, 0x00000147u, 0x0000013du, 0x000200feu, + 0x00000147u, 0x00010038u, 0x00050036u, 0x00000006u, 0x00000020u, 0x00000000u, 0x0000001du, 0x00030037u, + 0x0000000du, 0x0000001eu, 0x00030037u, 0x00000007u, 0x0000001fu, 0x000200f8u, 0x00000021u, 0x0004003bu, + 0x00000007u, 0x0000014cu, 0x00000007u, 0x0004003bu, 0x0000000du, 0x0000014fu, 0x00000007u, 0x0004003bu, + 0x0000000du, 0x00000153u, 0x00000007u, 0x0004003du, 0x00000006u, 0x0000014au, 0x0000001fu, 0x000500aau, + 0x00000038u, 0x0000014bu, 0x0000014au, 0x00000052u, 0x000300f7u, 0x0000014eu, 0x00000000u, 0x000400fau, + 0x0000014bu, 0x0000014du, 0x00000152u, 0x000200f8u, 0x0000014du, 0x0004003du, 0x00000008u, 0x00000150u, + 0x0000001eu, 0x0003003eu, 0x0000014fu, 0x00000150u, 0x00050039u, 0x00000006u, 0x00000151u, 0x00000016u, + 0x0000014fu, 0x0003003eu, 0x0000014cu, 0x00000151u, 0x000200f9u, 0x0000014eu, 0x000200f8u, 0x00000152u, + 0x0004003du, 0x00000008u, 0x00000154u, 0x0000001eu, 0x0003003eu, 0x00000153u, 0x00000154u, 0x00050039u, + 0x00000006u, 0x00000155u, 0x00000010u, 0x00000153u, 0x0003003eu, 0x0000014cu, 0x00000155u, 0x000200f9u, + 0x0000014eu, 0x000200f8u, 0x0000014eu, 0x0004003du, 0x00000006u, 0x00000156u, 0x0000014cu, 0x000200feu, + 0x00000156u, 0x00010038u, 0x00050036u, 0x00000008u, 0x00000024u, 0x00000000u, 0x00000022u, 0x00030037u, + 0x0000000du, 0x00000023u, 0x000200f8u, 0x00000025u, 0x0004003du, 0x00000008u, 0x0000015au, 0x00000023u, + 0x0004007fu, 0x00000008u, 0x0000015bu, 0x0000015au, 0x0006000cu, 0x00000008u, 0x0000015cu, 0x00000001u, + 0x0000001bu, 0x0000015bu, 0x00050081u, 0x00000008u, 0x0000015du, 0x00000159u, 0x0000015cu, 0x00050088u, + 0x00000008u, 0x0000015eu, 0x00000159u, 0x0000015du, 0x000200feu, 0x0000015eu, 0x00010038u, 0x00050036u, + 0x00000008u, 0x00000029u, 0x00000000u, 0x00000026u, 0x00030037u, 0x00000007u, 0x00000027u, 0x00030037u, + 0x0000000du, 0x00000028u, 0x000200f8u, 0x0000002au, 0x0004003bu, 0x00000007u, 0x0000016bu, 0x00000007u, + 0x000400e0u, 0x00000161u, 0x00000161u, 0x00000162u, 0x0004003du, 0x00000006u, 0x00000167u, 0x00000027u, + 0x0004003du, 0x00000008u, 0x00000168u, 0x00000028u, 0x00050041u, 0x00000169u, 0x0000016au, 0x00000166u, + 0x00000167u, 0x0003003eu, 0x0000016au, 0x00000168u, 0x000400e0u, 0x00000161u, 0x00000161u, 0x00000162u, + 0x0003003eu, 0x0000016bu, 0x00000049u, 0x000200f9u, 0x0000016cu, 0x000200f8u, 0x0000016cu, 0x000400f6u, + 0x0000016eu, 0x0000016fu, 0x00000000u, 0x000200f9u, 0x00000170u, 0x000200f8u, 0x00000170u, 0x0004003du, + 0x00000006u, 0x00000171u, 0x0000016bu, 0x000500acu, 0x00000038u, 0x00000172u, 0x00000171u, 0x00000042u, + 0x000400fau, 0x00000172u, 0x0000016du, 0x0000016eu, 0x000200f8u, 0x0000016du, 0x0004003du, 0x00000006u, + 0x00000173u, 0x00000027u, 0x0004003du, 0x00000006u, 0x00000174u, 0x0000016bu, 0x000500b0u, 0x00000038u, + 0x00000175u, 0x00000173u, 0x00000174u, 0x000300f7u, 0x00000177u, 0x00000000u, 0x000400fau, 0x00000175u, + 0x00000176u, 0x00000177u, 0x000200f8u, 0x00000176u, 0x0004003du, 0x00000006u, 0x00000178u, 0x00000027u, + 0x0004003du, 0x00000006u, 0x00000179u, 0x00000027u, 0x0004003du, 0x00000006u, 0x0000017au, 0x0000016bu, + 0x00050080u, 0x00000006u, 0x0000017bu, 0x00000179u, 0x0000017au, 0x00050041u, 0x00000169u, 0x0000017cu, + 0x00000166u, 0x0000017bu, 0x0004003du, 0x00000008u, 0x0000017du, 0x0000017cu, 0x00050041u, 0x00000169u, + 0x0000017eu, 0x00000166u, 0x00000178u, 0x0004003du, 0x00000008u, 0x0000017fu, 0x0000017eu, 0x00050081u, + 0x00000008u, 0x00000180u, 0x0000017fu, 0x0000017du, 0x00050041u, 0x00000169u, 0x00000181u, 0x00000166u, + 0x00000178u, 0x0003003eu, 0x00000181u, 0x00000180u, 0x000200f9u, 0x00000177u, 0x000200f8u, 0x00000177u, + 0x000400e0u, 0x00000161u, 0x00000161u, 0x00000162u, 0x000200f9u, 0x0000016fu, 0x000200f8u, 0x0000016fu, + 0x0004003du, 0x00000006u, 0x00000182u, 0x0000016bu, 0x000500c2u, 0x00000006u, 0x00000183u, 0x00000182u, + 0x0000008cu, 0x0003003eu, 0x0000016bu, 0x00000183u, 0x000200f9u, 0x0000016cu, 0x000200f8u, 0x0000016eu, + 0x00050041u, 0x00000169u, 0x00000184u, 0x00000166u, 0x000000dfu, 0x0004003du, 0x00000008u, 0x00000185u, + 0x00000184u, 0x000200feu, 0x00000185u, 0x00010038u, 0x00050036u, 0x00000008u, 0x0000002cu, 0x00000000u, + 0x00000022u, 0x00030037u, 0x0000000du, 0x0000002bu, 0x000200f8u, 0x0000002du, 0x0004003bu, 0x0000000du, + 0x00000188u, 0x00000007u, 0x0004003bu, 0x0000000du, 0x0000018du, 0x00000007u, 0x0004003du, 0x00000008u, + 0x00000189u, 0x0000002bu, 0x00050081u, 0x00000008u, 0x0000018au, 0x00000159u, 0x00000189u, 0x0003003eu, + 0x00000188u, 0x0000018au, 0x0004003du, 0x00000008u, 0x0000018bu, 0x00000188u, 0x000500b4u, 0x00000038u, + 0x0000018cu, 0x0000018bu, 0x00000159u, 0x000300f7u, 0x0000018fu, 0x00000000u, 0x000400fau, 0x0000018cu, + 0x0000018eu, 0x00000191u, 0x000200f8u, 0x0000018eu, 0x0004003du, 0x00000008u, 0x00000190u, 0x0000002bu, + 0x0003003eu, 0x0000018du, 0x00000190u, 0x000200f9u, 0x0000018fu, 0x000200f8u, 0x00000191u, 0x0004003du, + 0x00000008u, 0x00000192u, 0x00000188u, 0x0006000cu, 0x00000008u, 0x00000193u, 0x00000001u, 0x0000001cu, + 0x00000192u, 0x0004003du, 0x00000008u, 0x00000194u, 0x0000002bu, 0x0004003du, 0x00000008u, 0x00000195u, + 0x00000188u, 0x00050083u, 0x00000008u, 0x00000196u, 0x00000195u, 0x00000159u, 0x00050088u, 0x00000008u, + 0x00000197u, 0x00000194u, 0x00000196u, 0x00050085u, 0x00000008u, 0x00000198u, 0x00000193u, 0x00000197u, + 0x0003003eu, 0x0000018du, 0x00000198u, 0x000200f9u, 0x0000018fu, 0x000200f8u, 0x0000018fu, 0x0004003du, + 0x00000008u, 0x00000199u, 0x0000018du, 0x000200feu, 0x00000199u, 0x00010038u, +}; + +constexpr uint32_t kSpv_vt_gdn_state_gather[] = { + 0x07230203u, 0x00010300u, 0x0008000bu, 0x00000258u, 0x00000000u, 0x00020011u, 0x00000001u, 0x00020011u, + 0x00001151u, 0x0006000bu, 0x00000001u, 0x4c534c47u, 0x6474732eu, 0x3035342eu, 0x00000000u, 0x0003000eu, + 0x00000000u, 0x00000001u, 0x0006000fu, 0x00000005u, 0x00000004u, 0x6e69616du, 0x00000000u, 0x00000150u, + 0x00060010u, 0x00000004u, 0x00000011u, 0x00000080u, 0x00000001u, 0x00000001u, 0x00040047u, 0x00000150u, + 0x0000000bu, 0x0000001cu, 0x00030047u, 0x00000155u, 0x00000002u, 0x00050048u, 0x00000155u, 0x00000000u, + 0x00000023u, 0x00000000u, 0x00050048u, 0x00000155u, 0x00000001u, 0x00000023u, 0x00000004u, 0x00050048u, + 0x00000155u, 0x00000002u, 0x00000023u, 0x00000008u, 0x00050048u, 0x00000155u, 0x00000003u, 0x00000023u, + 0x0000000cu, 0x00050048u, 0x00000155u, 0x00000004u, 0x00000023u, 0x00000010u, 0x00050048u, 0x00000155u, + 0x00000005u, 0x00000023u, 0x00000014u, 0x00050048u, 0x00000155u, 0x00000006u, 0x00000023u, 0x00000018u, + 0x00050048u, 0x00000155u, 0x00000007u, 0x00000023u, 0x0000001cu, 0x00050048u, 0x00000155u, 0x00000008u, + 0x00000023u, 0x00000020u, 0x00050048u, 0x00000155u, 0x00000009u, 0x00000023u, 0x00000024u, 0x00050048u, + 0x00000155u, 0x0000000au, 0x00000023u, 0x00000028u, 0x00050048u, 0x00000155u, 0x0000000bu, 0x00000023u, + 0x0000002cu, 0x00050048u, 0x00000155u, 0x0000000cu, 0x00000023u, 0x00000030u, 0x00040047u, 0x0000016du, + 0x00000006u, 0x00000004u, 0x00030047u, 0x0000016eu, 0x00000002u, 0x00040048u, 0x0000016eu, 0x00000000u, + 0x00000018u, 0x00050048u, 0x0000016eu, 0x00000000u, 0x00000023u, 0x00000000u, 0x00030047u, 0x00000170u, + 0x00000018u, 0x00040047u, 0x00000170u, 0x00000021u, 0x00000004u, 0x00040047u, 0x00000170u, 0x00000022u, + 0x00000000u, 0x00040047u, 0x0000019au, 0x00000006u, 0x00000004u, 0x00030047u, 0x0000019bu, 0x00000002u, + 0x00040048u, 0x0000019bu, 0x00000000u, 0x00000018u, 0x00050048u, 0x0000019bu, 0x00000000u, 0x00000023u, + 0x00000000u, 0x00030047u, 0x0000019du, 0x00000018u, 0x00040047u, 0x0000019du, 0x00000021u, 0x00000005u, + 0x00040047u, 0x0000019du, 0x00000022u, 0x00000000u, 0x00040047u, 0x000001e3u, 0x00000006u, 0x00000004u, + 0x00030047u, 0x000001e4u, 0x00000002u, 0x00050048u, 0x000001e4u, 0x00000000u, 0x00000023u, 0x00000000u, + 0x00040047u, 0x000001e6u, 0x00000021u, 0x00000000u, 0x00040047u, 0x000001e6u, 0x00000022u, 0x00000000u, + 0x00040047u, 0x000001f8u, 0x00000006u, 0x00000004u, 0x00030047u, 0x000001f9u, 0x00000002u, 0x00040048u, + 0x000001f9u, 0x00000000u, 0x00000018u, 0x00050048u, 0x000001f9u, 0x00000000u, 0x00000023u, 0x00000000u, + 0x00030047u, 0x000001fbu, 0x00000018u, 0x00040047u, 0x000001fbu, 0x00000021u, 0x00000002u, 0x00040047u, + 0x000001fbu, 0x00000022u, 0x00000000u, 0x00040047u, 0x00000206u, 0x00000006u, 0x00000002u, 0x00030047u, + 0x00000207u, 0x00000002u, 0x00040048u, 0x00000207u, 0x00000000u, 0x00000018u, 0x00050048u, 0x00000207u, + 0x00000000u, 0x00000023u, 0x00000000u, 0x00030047u, 0x00000209u, 0x00000018u, 0x00040047u, 0x00000209u, + 0x00000021u, 0x00000003u, 0x00040047u, 0x00000209u, 0x00000022u, 0x00000000u, 0x00040047u, 0x0000021fu, + 0x00000006u, 0x00000002u, 0x00030047u, 0x00000220u, 0x00000002u, 0x00050048u, 0x00000220u, 0x00000000u, + 0x00000023u, 0x00000000u, 0x00040047u, 0x00000222u, 0x00000021u, 0x00000001u, 0x00040047u, 0x00000222u, + 0x00000022u, 0x00000000u, 0x00040047u, 0x00000257u, 0x0000000bu, 0x00000019u, 0x00020013u, 0x00000002u, + 0x00030021u, 0x00000003u, 0x00000002u, 0x00040015u, 0x00000006u, 0x00000020u, 0x00000000u, 0x00040020u, + 0x00000007u, 0x00000007u, 0x00000006u, 0x00030016u, 0x00000008u, 0x00000020u, 0x00040021u, 0x00000009u, + 0x00000008u, 0x00000007u, 0x00040020u, 0x0000000du, 0x00000007u, 0x00000008u, 0x00040021u, 0x0000000eu, + 0x00000006u, 0x0000000du, 0x00050021u, 0x00000018u, 0x00000008u, 0x00000007u, 0x00000007u, 0x00050021u, + 0x0000001du, 0x00000006u, 0x0000000du, 0x00000007u, 0x00040015u, 0x00000023u, 0x00000020u, 0x00000001u, + 0x0004002bu, 0x00000023u, 0x00000024u, 0x00000010u, 0x00020014u, 0x0000002cu, 0x0004002bu, 0x00000006u, + 0x0000002eu, 0x7f800000u, 0x0004002bu, 0x00000006u, 0x00000034u, 0x007fffffu, 0x0004002bu, 0x00000006u, + 0x00000036u, 0x00000000u, 0x0004002bu, 0x00000006u, 0x0000003du, 0x00000040u, 0x0004002bu, 0x00000006u, + 0x0000003fu, 0x0000ffffu, 0x0004002bu, 0x00000006u, 0x00000043u, 0x00007fffu, 0x0004002bu, 0x00000006u, + 0x00000046u, 0x00000001u, 0x0004002bu, 0x00000006u, 0x00000052u, 0x00008000u, 0x0004002bu, 0x00000023u, + 0x00000057u, 0x0000000au, 0x0004002bu, 0x00000006u, 0x00000059u, 0x0000001fu, 0x0004002bu, 0x00000006u, + 0x0000005du, 0x000003ffu, 0x0004002bu, 0x00000023u, 0x00000066u, 0x0000000du, 0x0004002bu, 0x00000006u, + 0x0000007du, 0x00000400u, 0x0004002bu, 0x00000023u, 0x00000080u, 0x00000001u, 0x0004002bu, 0x00000006u, + 0x00000088u, 0x00000071u, 0x0004002bu, 0x00000023u, 0x0000008bu, 0x00000017u, 0x0004002bu, 0x00000006u, + 0x00000095u, 0x00000070u, 0x0004002bu, 0x00000006u, 0x000000a9u, 0x000000ffu, 0x00040020u, 0x000000abu, + 0x00000007u, 0x00000023u, 0x0004002bu, 0x00000023u, 0x000000afu, 0x0000007fu, 0x0004002bu, 0x00000023u, + 0x000000b1u, 0x0000000fu, 0x0004002bu, 0x00000006u, 0x000000bbu, 0x00007c00u, 0x0004002bu, 0x00000006u, + 0x000000c2u, 0x00000200u, 0x0004002bu, 0x00000023u, 0x000000cbu, 0x0000001fu, 0x0004002bu, 0x00000023u, + 0x000000d3u, 0x00000000u, 0x0004002bu, 0x00000023u, 0x000000d8u, 0xfffffff6u, 0x0004002bu, 0x00000006u, + 0x000000deu, 0x00800000u, 0x0004002bu, 0x00000023u, 0x000000e2u, 0x0000000eu, 0x0004002bu, 0x00000006u, + 0x00000115u, 0x00001fffu, 0x0004002bu, 0x00000006u, 0x00000118u, 0x00001000u, 0x00040017u, 0x0000014eu, + 0x00000006u, 0x00000003u, 0x00040020u, 0x0000014fu, 0x00000001u, 0x0000014eu, 0x0004003bu, 0x0000014fu, + 0x00000150u, 0x00000001u, 0x00040020u, 0x00000151u, 0x00000001u, 0x00000006u, 0x000f001eu, 0x00000155u, + 0x00000006u, 0x00000006u, 0x00000006u, 0x00000006u, 0x00000006u, 0x00000006u, 0x00000006u, 0x00000006u, + 0x00000006u, 0x00000006u, 0x00000006u, 0x00000006u, 0x00000006u, 0x00040020u, 0x00000156u, 0x00000009u, + 0x00000155u, 0x0004003bu, 0x00000156u, 0x00000157u, 0x00000009u, 0x00040020u, 0x00000158u, 0x00000009u, + 0x00000006u, 0x0003001du, 0x0000016du, 0x00000006u, 0x0003001eu, 0x0000016eu, 0x0000016du, 0x00040020u, + 0x0000016fu, 0x0000000cu, 0x0000016eu, 0x0004003bu, 0x0000016fu, 0x00000170u, 0x0000000cu, 0x0004002bu, + 0x00000023u, 0x00000171u, 0x0000000bu, 0x0004002bu, 0x00000023u, 0x00000174u, 0x00000002u, 0x00040020u, + 0x00000178u, 0x0000000cu, 0x00000006u, 0x0004002bu, 0x00000023u, 0x00000183u, 0x00000005u, 0x00040020u, + 0x0000018bu, 0x00000007u, 0x0000002cu, 0x00030029u, 0x0000002cu, 0x0000018du, 0x0004002bu, 0x00000023u, + 0x0000018eu, 0x00000008u, 0x0004002bu, 0x00000023u, 0x00000195u, 0x0000000cu, 0x0003001du, 0x0000019au, + 0x00000006u, 0x0003001eu, 0x0000019bu, 0x0000019au, 0x00040020u, 0x0000019cu, 0x0000000cu, 0x0000019bu, + 0x0004003bu, 0x0000019cu, 0x0000019du, 0x0000000cu, 0x0004002bu, 0x00000006u, 0x000001a2u, 0x00000008u, + 0x0004002bu, 0x00000006u, 0x000001a4u, 0x00000003u, 0x0004002bu, 0x00000006u, 0x000001adu, 0x00000002u, + 0x0004002bu, 0x00000023u, 0x000001c6u, 0x00000004u, 0x0004002bu, 0x00000023u, 0x000001cbu, 0x00000003u, + 0x0004002bu, 0x00000023u, 0x000001ddu, 0x00000006u, 0x0003001du, 0x000001e3u, 0x00000006u, 0x0003001eu, + 0x000001e4u, 0x000001e3u, 0x00040020u, 0x000001e5u, 0x0000000cu, 0x000001e4u, 0x0004003bu, 0x000001e5u, + 0x000001e6u, 0x0000000cu, 0x0004002bu, 0x00000023u, 0x000001e7u, 0x00000009u, 0x0004002bu, 0x00000023u, + 0x000001f1u, 0x00000007u, 0x0003001du, 0x000001f8u, 0x00000006u, 0x0003001eu, 0x000001f9u, 0x000001f8u, + 0x00040020u, 0x000001fau, 0x0000000cu, 0x000001f9u, 0x0004003bu, 0x000001fau, 0x000001fbu, 0x0000000cu, + 0x00040015u, 0x00000205u, 0x00000010u, 0x00000000u, 0x0003001du, 0x00000206u, 0x00000205u, 0x0003001eu, + 0x00000207u, 0x00000206u, 0x00040020u, 0x00000208u, 0x0000000cu, 0x00000207u, 0x0004003bu, 0x00000208u, + 0x00000209u, 0x0000000cu, 0x00040020u, 0x0000020fu, 0x0000000cu, 0x00000205u, 0x0004002bu, 0x00000008u, + 0x0000021au, 0x00000000u, 0x0003001du, 0x0000021fu, 0x00000205u, 0x0003001eu, 0x00000220u, 0x0000021fu, + 0x00040020u, 0x00000221u, 0x0000000cu, 0x00000220u, 0x0004003bu, 0x00000221u, 0x00000222u, 0x0000000cu, + 0x0003002au, 0x0000002cu, 0x00000252u, 0x0004002bu, 0x00000006u, 0x00000253u, 0x00000080u, 0x0004001cu, + 0x00000254u, 0x00000008u, 0x00000253u, 0x00040020u, 0x00000255u, 0x00000004u, 0x00000254u, 0x0004003bu, + 0x00000255u, 0x00000256u, 0x00000004u, 0x0006002cu, 0x0000014eu, 0x00000257u, 0x00000253u, 0x00000046u, + 0x00000046u, 0x00050036u, 0x00000002u, 0x00000004u, 0x00000000u, 0x00000003u, 0x000200f8u, 0x00000005u, + 0x0004003bu, 0x00000007u, 0x0000014du, 0x00000007u, 0x0004003bu, 0x00000007u, 0x00000162u, 0x00000007u, + 0x0004003bu, 0x00000007u, 0x00000167u, 0x00000007u, 0x0004003bu, 0x000000abu, 0x0000016cu, 0x00000007u, + 0x0004003bu, 0x0000018bu, 0x0000018cu, 0x00000007u, 0x0004003bu, 0x00000007u, 0x00000194u, 0x00000007u, + 0x0004003bu, 0x00000007u, 0x000001b9u, 0x00000007u, 0x0004003bu, 0x00000007u, 0x000001beu, 0x00000007u, + 0x0004003bu, 0x00000007u, 0x000001c3u, 0x00000007u, 0x0004003bu, 0x00000007u, 0x000001d2u, 0x00000007u, + 0x0004003bu, 0x0000000du, 0x000001eeu, 0x00000007u, 0x0004003bu, 0x0000000du, 0x000001f5u, 0x00000007u, + 0x0004003bu, 0x00000007u, 0x00000213u, 0x00000007u, 0x0004003bu, 0x00000007u, 0x00000214u, 0x00000007u, + 0x0004003bu, 0x0000000du, 0x00000229u, 0x00000007u, 0x0004003bu, 0x0000000du, 0x0000022fu, 0x00000007u, + 0x0004003bu, 0x00000007u, 0x00000243u, 0x00000007u, 0x0004003bu, 0x00000007u, 0x00000244u, 0x00000007u, + 0x0004003bu, 0x0000000du, 0x0000024au, 0x00000007u, 0x0004003bu, 0x00000007u, 0x0000024cu, 0x00000007u, + 0x00050041u, 0x00000151u, 0x00000152u, 0x00000150u, 0x00000036u, 0x0004003du, 0x00000006u, 0x00000153u, + 0x00000152u, 0x0003003eu, 0x0000014du, 0x00000153u, 0x0004003du, 0x00000006u, 0x00000154u, 0x0000014du, + 0x00050041u, 0x00000158u, 0x00000159u, 0x00000157u, 0x000000d3u, 0x0004003du, 0x00000006u, 0x0000015au, + 0x00000159u, 0x00050041u, 0x00000158u, 0x0000015bu, 0x00000157u, 0x00000080u, 0x0004003du, 0x00000006u, + 0x0000015cu, 0x0000015bu, 0x00050084u, 0x00000006u, 0x0000015du, 0x0000015au, 0x0000015cu, 0x000500aeu, + 0x0000002cu, 0x0000015eu, 0x00000154u, 0x0000015du, 0x000300f7u, 0x00000160u, 0x00000000u, 0x000400fau, + 0x0000015eu, 0x0000015fu, 0x00000160u, 0x000200f8u, 0x0000015fu, 0x000100fdu, 0x000200f8u, 0x00000160u, + 0x0004003du, 0x00000006u, 0x00000163u, 0x0000014du, 0x00050041u, 0x00000158u, 0x00000164u, 0x00000157u, + 0x00000080u, 0x0004003du, 0x00000006u, 0x00000165u, 0x00000164u, 0x00050086u, 0x00000006u, 0x00000166u, + 0x00000163u, 0x00000165u, 0x0003003eu, 0x00000162u, 0x00000166u, 0x0004003du, 0x00000006u, 0x00000168u, + 0x0000014du, 0x00050041u, 0x00000158u, 0x00000169u, 0x00000157u, 0x00000080u, 0x0004003du, 0x00000006u, + 0x0000016au, 0x00000169u, 0x00050089u, 0x00000006u, 0x0000016bu, 0x00000168u, 0x0000016au, 0x0003003eu, + 0x00000167u, 0x0000016bu, 0x00050041u, 0x00000158u, 0x00000172u, 0x00000157u, 0x00000171u, 0x0004003du, + 0x00000006u, 0x00000173u, 0x00000172u, 0x000500c2u, 0x00000006u, 0x00000175u, 0x00000173u, 0x00000174u, + 0x0004003du, 0x00000006u, 0x00000176u, 0x00000162u, 0x00050080u, 0x00000006u, 0x00000177u, 0x00000175u, + 0x00000176u, 0x00060041u, 0x00000178u, 0x00000179u, 0x00000170u, 0x000000d3u, 0x00000177u, 0x0004003du, + 0x00000006u, 0x0000017au, 0x00000179u, 0x0004007cu, 0x00000023u, 0x0000017bu, 0x0000017au, 0x0003003eu, + 0x0000016cu, 0x0000017bu, 0x0004003du, 0x00000023u, 0x0000017cu, 0x0000016cu, 0x000500b1u, 0x0000002cu, + 0x0000017du, 0x0000017cu, 0x000000d3u, 0x000400a8u, 0x0000002cu, 0x0000017eu, 0x0000017du, 0x000300f7u, + 0x00000180u, 0x00000000u, 0x000400fau, 0x0000017eu, 0x0000017fu, 0x00000180u, 0x000200f8u, 0x0000017fu, + 0x0004003du, 0x00000023u, 0x00000181u, 0x0000016cu, 0x0004007cu, 0x00000006u, 0x00000182u, 0x00000181u, + 0x00050041u, 0x00000158u, 0x00000184u, 0x00000157u, 0x00000183u, 0x0004003du, 0x00000006u, 0x00000185u, + 0x00000184u, 0x000500aeu, 0x0000002cu, 0x00000186u, 0x00000182u, 0x00000185u, 0x000200f9u, 0x00000180u, + 0x000200f8u, 0x00000180u, 0x000700f5u, 0x0000002cu, 0x00000187u, 0x0000017du, 0x00000160u, 0x00000186u, + 0x0000017fu, 0x000300f7u, 0x00000189u, 0x00000000u, 0x000400fau, 0x00000187u, 0x00000188u, 0x00000189u, + 0x000200f8u, 0x00000188u, 0x000100fdu, 0x000200f8u, 0x00000189u, 0x0003003eu, 0x0000018cu, 0x0000018du, + 0x00050041u, 0x00000158u, 0x0000018fu, 0x00000157u, 0x0000018eu, 0x0004003du, 0x00000006u, 0x00000190u, + 0x0000018fu, 0x000500aau, 0x0000002cu, 0x00000191u, 0x00000190u, 0x00000046u, 0x000300f7u, 0x00000193u, + 0x00000000u, 0x000400fau, 0x00000191u, 0x00000192u, 0x000001aau, 0x000200f8u, 0x00000192u, 0x00050041u, + 0x00000158u, 0x00000196u, 0x00000157u, 0x00000195u, 0x0004003du, 0x00000006u, 0x00000197u, 0x00000196u, + 0x0004003du, 0x00000006u, 0x00000198u, 0x00000162u, 0x00050080u, 0x00000006u, 0x00000199u, 0x00000197u, + 0x00000198u, 0x0003003eu, 0x00000194u, 0x00000199u, 0x0004003du, 0x00000006u, 0x0000019eu, 0x00000194u, + 0x000500c2u, 0x00000006u, 0x0000019fu, 0x0000019eu, 0x00000174u, 0x00060041u, 0x00000178u, 0x000001a0u, + 0x0000019du, 0x000000d3u, 0x0000019fu, 0x0004003du, 0x00000006u, 0x000001a1u, 0x000001a0u, 0x0004003du, + 0x00000006u, 0x000001a3u, 0x00000194u, 0x000500c7u, 0x00000006u, 0x000001a5u, 0x000001a3u, 0x000001a4u, + 0x00050084u, 0x00000006u, 0x000001a6u, 0x000001a2u, 0x000001a5u, 0x000500c2u, 0x00000006u, 0x000001a7u, + 0x000001a1u, 0x000001a6u, 0x000500c7u, 0x00000006u, 0x000001a8u, 0x000001a7u, 0x000000a9u, 0x000500abu, + 0x0000002cu, 0x000001a9u, 0x000001a8u, 0x00000036u, 0x0003003eu, 0x0000018cu, 0x000001a9u, 0x000200f9u, + 0x00000193u, 0x000200f8u, 0x000001aau, 0x00050041u, 0x00000158u, 0x000001abu, 0x00000157u, 0x0000018eu, + 0x0004003du, 0x00000006u, 0x000001acu, 0x000001abu, 0x000500aau, 0x0000002cu, 0x000001aeu, 0x000001acu, + 0x000001adu, 0x000300f7u, 0x000001b0u, 0x00000000u, 0x000400fau, 0x000001aeu, 0x000001afu, 0x000001b0u, + 0x000200f8u, 0x000001afu, 0x00050041u, 0x00000158u, 0x000001b1u, 0x00000157u, 0x00000195u, 0x0004003du, + 0x00000006u, 0x000001b2u, 0x000001b1u, 0x000500c2u, 0x00000006u, 0x000001b3u, 0x000001b2u, 0x00000174u, + 0x0004003du, 0x00000006u, 0x000001b4u, 0x00000162u, 0x00050080u, 0x00000006u, 0x000001b5u, 0x000001b3u, + 0x000001b4u, 0x00060041u, 0x00000178u, 0x000001b6u, 0x0000019du, 0x000000d3u, 0x000001b5u, 0x0004003du, + 0x00000006u, 0x000001b7u, 0x000001b6u, 0x000500abu, 0x0000002cu, 0x000001b8u, 0x000001b7u, 0x00000036u, + 0x0003003eu, 0x0000018cu, 0x000001b8u, 0x000200f9u, 0x000001b0u, 0x000200f8u, 0x000001b0u, 0x000200f9u, + 0x00000193u, 0x000200f8u, 0x00000193u, 0x0004003du, 0x00000006u, 0x000001bau, 0x00000167u, 0x00050041u, + 0x00000158u, 0x000001bbu, 0x00000157u, 0x00000174u, 0x0004003du, 0x00000006u, 0x000001bcu, 0x000001bbu, + 0x00050086u, 0x00000006u, 0x000001bdu, 0x000001bau, 0x000001bcu, 0x0003003eu, 0x000001b9u, 0x000001bdu, + 0x0004003du, 0x00000006u, 0x000001bfu, 0x00000167u, 0x00050041u, 0x00000158u, 0x000001c0u, 0x00000157u, + 0x00000174u, 0x0004003du, 0x00000006u, 0x000001c1u, 0x000001c0u, 0x00050089u, 0x00000006u, 0x000001c2u, + 0x000001bfu, 0x000001c1u, 0x0003003eu, 0x000001beu, 0x000001c2u, 0x0004003du, 0x00000023u, 0x000001c4u, + 0x0000016cu, 0x0004007cu, 0x00000006u, 0x000001c5u, 0x000001c4u, 0x00050041u, 0x00000158u, 0x000001c7u, + 0x00000157u, 0x000001c6u, 0x0004003du, 0x00000006u, 0x000001c8u, 0x000001c7u, 0x00050084u, 0x00000006u, + 0x000001c9u, 0x000001c5u, 0x000001c8u, 0x0004003du, 0x00000006u, 0x000001cau, 0x000001b9u, 0x00050041u, + 0x00000158u, 0x000001ccu, 0x00000157u, 0x000001cbu, 0x0004003du, 0x00000006u, 0x000001cdu, 0x000001ccu, + 0x00050084u, 0x00000006u, 0x000001ceu, 0x000001cau, 0x000001cdu, 0x00050080u, 0x00000006u, 0x000001cfu, + 0x000001c9u, 0x000001ceu, 0x0004003du, 0x00000006u, 0x000001d0u, 0x000001beu, 0x00050080u, 0x00000006u, + 0x000001d1u, 0x000001cfu, 0x000001d0u, 0x0003003eu, 0x000001c3u, 0x000001d1u, 0x0004003du, 0x00000006u, + 0x000001d3u, 0x00000162u, 0x00050041u, 0x00000158u, 0x000001d4u, 0x00000157u, 0x00000080u, 0x0004003du, + 0x00000006u, 0x000001d5u, 0x000001d4u, 0x00050084u, 0x00000006u, 0x000001d6u, 0x000001d3u, 0x000001d5u, + 0x0004003du, 0x00000006u, 0x000001d7u, 0x00000167u, 0x00050080u, 0x00000006u, 0x000001d8u, 0x000001d6u, + 0x000001d7u, 0x0003003eu, 0x000001d2u, 0x000001d8u, 0x000200f9u, 0x000001d9u, 0x000200f8u, 0x000001d9u, + 0x000400f6u, 0x000001dbu, 0x000001dcu, 0x00000000u, 0x000200f9u, 0x000001dau, 0x000200f8u, 0x000001dau, + 0x00050041u, 0x00000158u, 0x000001deu, 0x00000157u, 0x000001ddu, 0x0004003du, 0x00000006u, 0x000001dfu, + 0x000001deu, 0x000500aau, 0x0000002cu, 0x000001e0u, 0x000001dfu, 0x00000036u, 0x000300f7u, 0x000001e2u, + 0x00000000u, 0x000400fau, 0x000001e0u, 0x000001e1u, 0x0000021eu, 0x000200f8u, 0x000001e1u, 0x00050041u, + 0x00000158u, 0x000001e8u, 0x00000157u, 0x000001e7u, 0x0004003du, 0x00000006u, 0x000001e9u, 0x000001e8u, + 0x000500c2u, 0x00000006u, 0x000001eau, 0x000001e9u, 0x00000174u, 0x0004003du, 0x00000006u, 0x000001ebu, + 0x000001d2u, 0x00050080u, 0x00000006u, 0x000001ecu, 0x000001eau, 0x000001ebu, 0x0004003du, 0x0000002cu, + 0x000001edu, 0x0000018cu, 0x000300f7u, 0x000001f0u, 0x00000000u, 0x000400fau, 0x000001edu, 0x000001efu, + 0x00000219u, 0x000200f8u, 0x000001efu, 0x00050041u, 0x00000158u, 0x000001f2u, 0x00000157u, 0x000001f1u, + 0x0004003du, 0x00000006u, 0x000001f3u, 0x000001f2u, 0x000500aau, 0x0000002cu, 0x000001f4u, 0x000001f3u, + 0x00000036u, 0x000300f7u, 0x000001f7u, 0x00000000u, 0x000400fau, 0x000001f4u, 0x000001f6u, 0x00000204u, + 0x000200f8u, 0x000001f6u, 0x00050041u, 0x00000158u, 0x000001fcu, 0x00000157u, 0x00000057u, 0x0004003du, + 0x00000006u, 0x000001fdu, 0x000001fcu, 0x000500c2u, 0x00000006u, 0x000001feu, 0x000001fdu, 0x00000174u, + 0x0004003du, 0x00000006u, 0x000001ffu, 0x000001c3u, 0x00050080u, 0x00000006u, 0x00000200u, 0x000001feu, + 0x000001ffu, 0x00060041u, 0x00000178u, 0x00000201u, 0x000001fbu, 0x000000d3u, 0x00000200u, 0x0004003du, + 0x00000006u, 0x00000202u, 0x00000201u, 0x0004007cu, 0x00000008u, 0x00000203u, 0x00000202u, 0x0003003eu, + 0x000001f5u, 0x00000203u, 0x000200f9u, 0x000001f7u, 0x000200f8u, 0x00000204u, 0x00050041u, 0x00000158u, + 0x0000020au, 0x00000157u, 0x00000057u, 0x0004003du, 0x00000006u, 0x0000020bu, 0x0000020au, 0x000500c2u, + 0x00000006u, 0x0000020cu, 0x0000020bu, 0x00000080u, 0x0004003du, 0x00000006u, 0x0000020du, 0x000001c3u, + 0x00050080u, 0x00000006u, 0x0000020eu, 0x0000020cu, 0x0000020du, 0x00060041u, 0x0000020fu, 0x00000210u, + 0x00000209u, 0x000000d3u, 0x0000020eu, 0x0004003du, 0x00000205u, 0x00000211u, 0x00000210u, 0x00040071u, + 0x00000006u, 0x00000212u, 0x00000211u, 0x0003003eu, 0x00000213u, 0x00000212u, 0x00050041u, 0x00000158u, + 0x00000215u, 0x00000157u, 0x000001f1u, 0x0004003du, 0x00000006u, 0x00000216u, 0x00000215u, 0x0003003eu, + 0x00000214u, 0x00000216u, 0x00060039u, 0x00000008u, 0x00000217u, 0x0000001bu, 0x00000213u, 0x00000214u, + 0x0003003eu, 0x000001f5u, 0x00000217u, 0x000200f9u, 0x000001f7u, 0x000200f8u, 0x000001f7u, 0x0004003du, + 0x00000008u, 0x00000218u, 0x000001f5u, 0x0003003eu, 0x000001eeu, 0x00000218u, 0x000200f9u, 0x000001f0u, + 0x000200f8u, 0x00000219u, 0x0003003eu, 0x000001eeu, 0x0000021au, 0x000200f9u, 0x000001f0u, 0x000200f8u, + 0x000001f0u, 0x0004003du, 0x00000008u, 0x0000021bu, 0x000001eeu, 0x0004007cu, 0x00000006u, 0x0000021cu, + 0x0000021bu, 0x00060041u, 0x00000178u, 0x0000021du, 0x000001e6u, 0x000000d3u, 0x000001ecu, 0x0003003eu, + 0x0000021du, 0x0000021cu, 0x000200f9u, 0x000001e2u, 0x000200f8u, 0x0000021eu, 0x00050041u, 0x00000158u, + 0x00000223u, 0x00000157u, 0x000001e7u, 0x0004003du, 0x00000006u, 0x00000224u, 0x00000223u, 0x000500c2u, + 0x00000006u, 0x00000225u, 0x00000224u, 0x00000080u, 0x0004003du, 0x00000006u, 0x00000226u, 0x000001d2u, + 0x00050080u, 0x00000006u, 0x00000227u, 0x00000225u, 0x00000226u, 0x0004003du, 0x0000002cu, 0x00000228u, + 0x0000018cu, 0x000300f7u, 0x0000022bu, 0x00000000u, 0x000400fau, 0x00000228u, 0x0000022au, 0x00000249u, + 0x000200f8u, 0x0000022au, 0x00050041u, 0x00000158u, 0x0000022cu, 0x00000157u, 0x000001f1u, 0x0004003du, + 0x00000006u, 0x0000022du, 0x0000022cu, 0x000500aau, 0x0000002cu, 0x0000022eu, 0x0000022du, 0x00000036u, + 0x000300f7u, 0x00000231u, 0x00000000u, 0x000400fau, 0x0000022eu, 0x00000230u, 0x0000023au, 0x000200f8u, + 0x00000230u, 0x00050041u, 0x00000158u, 0x00000232u, 0x00000157u, 0x00000057u, 0x0004003du, 0x00000006u, + 0x00000233u, 0x00000232u, 0x000500c2u, 0x00000006u, 0x00000234u, 0x00000233u, 0x00000174u, 0x0004003du, + 0x00000006u, 0x00000235u, 0x000001c3u, 0x00050080u, 0x00000006u, 0x00000236u, 0x00000234u, 0x00000235u, + 0x00060041u, 0x00000178u, 0x00000237u, 0x000001fbu, 0x000000d3u, 0x00000236u, 0x0004003du, 0x00000006u, + 0x00000238u, 0x00000237u, 0x0004007cu, 0x00000008u, 0x00000239u, 0x00000238u, 0x0003003eu, 0x0000022fu, + 0x00000239u, 0x000200f9u, 0x00000231u, 0x000200f8u, 0x0000023au, 0x00050041u, 0x00000158u, 0x0000023bu, + 0x00000157u, 0x00000057u, 0x0004003du, 0x00000006u, 0x0000023cu, 0x0000023bu, 0x000500c2u, 0x00000006u, + 0x0000023du, 0x0000023cu, 0x00000080u, 0x0004003du, 0x00000006u, 0x0000023eu, 0x000001c3u, 0x00050080u, + 0x00000006u, 0x0000023fu, 0x0000023du, 0x0000023eu, 0x00060041u, 0x0000020fu, 0x00000240u, 0x00000209u, + 0x000000d3u, 0x0000023fu, 0x0004003du, 0x00000205u, 0x00000241u, 0x00000240u, 0x00040071u, 0x00000006u, + 0x00000242u, 0x00000241u, 0x0003003eu, 0x00000243u, 0x00000242u, 0x00050041u, 0x00000158u, 0x00000245u, + 0x00000157u, 0x000001f1u, 0x0004003du, 0x00000006u, 0x00000246u, 0x00000245u, 0x0003003eu, 0x00000244u, + 0x00000246u, 0x00060039u, 0x00000008u, 0x00000247u, 0x0000001bu, 0x00000243u, 0x00000244u, 0x0003003eu, + 0x0000022fu, 0x00000247u, 0x000200f9u, 0x00000231u, 0x000200f8u, 0x00000231u, 0x0004003du, 0x00000008u, + 0x00000248u, 0x0000022fu, 0x0003003eu, 0x00000229u, 0x00000248u, 0x000200f9u, 0x0000022bu, 0x000200f8u, + 0x00000249u, 0x0003003eu, 0x00000229u, 0x0000021au, 0x000200f9u, 0x0000022bu, 0x000200f8u, 0x0000022bu, + 0x0004003du, 0x00000008u, 0x0000024bu, 0x00000229u, 0x0003003eu, 0x0000024au, 0x0000024bu, 0x00050041u, + 0x00000158u, 0x0000024du, 0x00000157u, 0x000001ddu, 0x0004003du, 0x00000006u, 0x0000024eu, 0x0000024du, + 0x0003003eu, 0x0000024cu, 0x0000024eu, 0x00060039u, 0x00000006u, 0x0000024fu, 0x00000020u, 0x0000024au, + 0x0000024cu, 0x00040071u, 0x00000205u, 0x00000250u, 0x0000024fu, 0x00060041u, 0x0000020fu, 0x00000251u, + 0x00000222u, 0x000000d3u, 0x00000227u, 0x0003003eu, 0x00000251u, 0x00000250u, 0x000200f9u, 0x000001e2u, + 0x000200f8u, 0x000001e2u, 0x000200f9u, 0x000001dcu, 0x000200f8u, 0x000001dcu, 0x000400fau, 0x00000252u, + 0x000001d9u, 0x000001dbu, 0x000200f8u, 0x000001dbu, 0x000100fdu, 0x00010038u, 0x00050036u, 0x00000008u, + 0x0000000bu, 0x00000000u, 0x00000009u, 0x00030037u, 0x00000007u, 0x0000000au, 0x000200f8u, 0x0000000cu, + 0x0004003du, 0x00000006u, 0x00000022u, 0x0000000au, 0x000500c4u, 0x00000006u, 0x00000025u, 0x00000022u, + 0x00000024u, 0x0004007cu, 0x00000008u, 0x00000026u, 0x00000025u, 0x000200feu, 0x00000026u, 0x00010038u, + 0x00050036u, 0x00000006u, 0x00000010u, 0x00000000u, 0x0000000eu, 0x00030037u, 0x0000000du, 0x0000000fu, + 0x000200f8u, 0x00000011u, 0x0004003bu, 0x00000007u, 0x00000029u, 0x00000007u, 0x0004003bu, 0x00000007u, + 0x00000042u, 0x00000007u, 0x0004003du, 0x00000008u, 0x0000002au, 0x0000000fu, 0x0004007cu, 0x00000006u, + 0x0000002bu, 0x0000002au, 0x0003003eu, 0x00000029u, 0x0000002bu, 0x0004003du, 0x00000006u, 0x0000002du, + 0x00000029u, 0x000500c7u, 0x00000006u, 0x0000002fu, 0x0000002du, 0x0000002eu, 0x000500aau, 0x0000002cu, + 0x00000030u, 0x0000002fu, 0x0000002eu, 0x000300f7u, 0x00000032u, 0x00000000u, 0x000400fau, 0x00000030u, + 0x00000031u, 0x00000032u, 0x000200f8u, 0x00000031u, 0x0004003du, 0x00000006u, 0x00000033u, 0x00000029u, + 0x000500c7u, 0x00000006u, 0x00000035u, 0x00000033u, 0x00000034u, 0x000500abu, 0x0000002cu, 0x00000037u, + 0x00000035u, 0x00000036u, 0x000200f9u, 0x00000032u, 0x000200f8u, 0x00000032u, 0x000700f5u, 0x0000002cu, + 0x00000038u, 0x00000030u, 0x00000011u, 0x00000037u, 0x00000031u, 0x000300f7u, 0x0000003au, 0x00000000u, + 0x000400fau, 0x00000038u, 0x00000039u, 0x0000003au, 0x000200f8u, 0x00000039u, 0x0004003du, 0x00000006u, + 0x0000003bu, 0x00000029u, 0x000500c2u, 0x00000006u, 0x0000003cu, 0x0000003bu, 0x00000024u, 0x000500c5u, + 0x00000006u, 0x0000003eu, 0x0000003cu, 0x0000003du, 0x000500c7u, 0x00000006u, 0x00000040u, 0x0000003eu, + 0x0000003fu, 0x000200feu, 0x00000040u, 0x000200f8u, 0x0000003au, 0x0004003du, 0x00000006u, 0x00000044u, + 0x00000029u, 0x000500c2u, 0x00000006u, 0x00000045u, 0x00000044u, 0x00000024u, 0x000500c7u, 0x00000006u, + 0x00000047u, 0x00000045u, 0x00000046u, 0x00050080u, 0x00000006u, 0x00000048u, 0x00000043u, 0x00000047u, + 0x0003003eu, 0x00000042u, 0x00000048u, 0x0004003du, 0x00000006u, 0x00000049u, 0x00000029u, 0x0004003du, + 0x00000006u, 0x0000004au, 0x00000042u, 0x00050080u, 0x00000006u, 0x0000004bu, 0x00000049u, 0x0000004au, + 0x000500c2u, 0x00000006u, 0x0000004cu, 0x0000004bu, 0x00000024u, 0x000500c7u, 0x00000006u, 0x0000004du, + 0x0000004cu, 0x0000003fu, 0x000200feu, 0x0000004du, 0x00010038u, 0x00050036u, 0x00000008u, 0x00000013u, + 0x00000000u, 0x00000009u, 0x00030037u, 0x00000007u, 0x00000012u, 0x000200f8u, 0x00000014u, 0x0004003bu, + 0x00000007u, 0x00000050u, 0x00000007u, 0x0004003bu, 0x00000007u, 0x00000055u, 0x00000007u, 0x0004003bu, + 0x00000007u, 0x0000005bu, 0x00000007u, 0x0004003bu, 0x00000007u, 0x00000076u, 0x00000007u, 0x0004003du, + 0x00000006u, 0x00000051u, 0x00000012u, 0x000500c7u, 0x00000006u, 0x00000053u, 0x00000051u, 0x00000052u, + 0x000500c4u, 0x00000006u, 0x00000054u, 0x00000053u, 0x00000024u, 0x0003003eu, 0x00000050u, 0x00000054u, + 0x0004003du, 0x00000006u, 0x00000056u, 0x00000012u, 0x000500c2u, 0x00000006u, 0x00000058u, 0x00000056u, + 0x00000057u, 0x000500c7u, 0x00000006u, 0x0000005au, 0x00000058u, 0x00000059u, 0x0003003eu, 0x00000055u, + 0x0000005au, 0x0004003du, 0x00000006u, 0x0000005cu, 0x00000012u, 0x000500c7u, 0x00000006u, 0x0000005eu, + 0x0000005cu, 0x0000005du, 0x0003003eu, 0x0000005bu, 0x0000005eu, 0x0004003du, 0x00000006u, 0x0000005fu, + 0x00000055u, 0x000500aau, 0x0000002cu, 0x00000060u, 0x0000005fu, 0x00000059u, 0x000300f7u, 0x00000062u, + 0x00000000u, 0x000400fau, 0x00000060u, 0x00000061u, 0x00000062u, 0x000200f8u, 0x00000061u, 0x0004003du, + 0x00000006u, 0x00000063u, 0x00000050u, 0x000500c5u, 0x00000006u, 0x00000064u, 0x00000063u, 0x0000002eu, + 0x0004003du, 0x00000006u, 0x00000065u, 0x0000005bu, 0x000500c4u, 0x00000006u, 0x00000067u, 0x00000065u, + 0x00000066u, 0x000500c5u, 0x00000006u, 0x00000068u, 0x00000064u, 0x00000067u, 0x0004007cu, 0x00000008u, + 0x00000069u, 0x00000068u, 0x000200feu, 0x00000069u, 0x000200f8u, 0x00000062u, 0x0004003du, 0x00000006u, + 0x0000006bu, 0x00000055u, 0x000500aau, 0x0000002cu, 0x0000006cu, 0x0000006bu, 0x00000036u, 0x000300f7u, + 0x0000006eu, 0x00000000u, 0x000400fau, 0x0000006cu, 0x0000006du, 0x0000006eu, 0x000200f8u, 0x0000006du, + 0x0004003du, 0x00000006u, 0x0000006fu, 0x0000005bu, 0x000500aau, 0x0000002cu, 0x00000070u, 0x0000006fu, + 0x00000036u, 0x000300f7u, 0x00000072u, 0x00000000u, 0x000400fau, 0x00000070u, 0x00000071u, 0x00000072u, + 0x000200f8u, 0x00000071u, 0x0004003du, 0x00000006u, 0x00000073u, 0x00000050u, 0x0004007cu, 0x00000008u, + 0x00000074u, 0x00000073u, 0x000200feu, 0x00000074u, 0x000200f8u, 0x00000072u, 0x0003003eu, 0x00000076u, + 0x00000036u, 0x000200f9u, 0x00000077u, 0x000200f8u, 0x00000077u, 0x000400f6u, 0x00000079u, 0x0000007au, + 0x00000000u, 0x000200f9u, 0x0000007bu, 0x000200f8u, 0x0000007bu, 0x0004003du, 0x00000006u, 0x0000007cu, + 0x0000005bu, 0x000500c7u, 0x00000006u, 0x0000007eu, 0x0000007cu, 0x0000007du, 0x000500aau, 0x0000002cu, + 0x0000007fu, 0x0000007eu, 0x00000036u, 0x000400fau, 0x0000007fu, 0x00000078u, 0x00000079u, 0x000200f8u, + 0x00000078u, 0x0004003du, 0x00000006u, 0x00000081u, 0x0000005bu, 0x000500c4u, 0x00000006u, 0x00000082u, + 0x00000081u, 0x00000080u, 0x0003003eu, 0x0000005bu, 0x00000082u, 0x0004003du, 0x00000006u, 0x00000083u, + 0x00000076u, 0x00050080u, 0x00000006u, 0x00000084u, 0x00000083u, 0x00000046u, 0x0003003eu, 0x00000076u, + 0x00000084u, 0x000200f9u, 0x0000007au, 0x000200f8u, 0x0000007au, 0x000200f9u, 0x00000077u, 0x000200f8u, + 0x00000079u, 0x0004003du, 0x00000006u, 0x00000085u, 0x0000005bu, 0x000500c7u, 0x00000006u, 0x00000086u, + 0x00000085u, 0x0000005du, 0x0003003eu, 0x0000005bu, 0x00000086u, 0x0004003du, 0x00000006u, 0x00000087u, + 0x00000050u, 0x0004003du, 0x00000006u, 0x00000089u, 0x00000076u, 0x00050082u, 0x00000006u, 0x0000008au, + 0x00000088u, 0x00000089u, 0x000500c4u, 0x00000006u, 0x0000008cu, 0x0000008au, 0x0000008bu, 0x000500c5u, + 0x00000006u, 0x0000008du, 0x00000087u, 0x0000008cu, 0x0004003du, 0x00000006u, 0x0000008eu, 0x0000005bu, + 0x000500c4u, 0x00000006u, 0x0000008fu, 0x0000008eu, 0x00000066u, 0x000500c5u, 0x00000006u, 0x00000090u, + 0x0000008du, 0x0000008fu, 0x0004007cu, 0x00000008u, 0x00000091u, 0x00000090u, 0x000200feu, 0x00000091u, + 0x000200f8u, 0x0000006eu, 0x0004003du, 0x00000006u, 0x00000093u, 0x00000050u, 0x0004003du, 0x00000006u, + 0x00000094u, 0x00000055u, 0x00050080u, 0x00000006u, 0x00000096u, 0x00000094u, 0x00000095u, 0x000500c4u, + 0x00000006u, 0x00000097u, 0x00000096u, 0x0000008bu, 0x000500c5u, 0x00000006u, 0x00000098u, 0x00000093u, + 0x00000097u, 0x0004003du, 0x00000006u, 0x00000099u, 0x0000005bu, 0x000500c4u, 0x00000006u, 0x0000009au, + 0x00000099u, 0x00000066u, 0x000500c5u, 0x00000006u, 0x0000009bu, 0x00000098u, 0x0000009au, 0x0004007cu, + 0x00000008u, 0x0000009cu, 0x0000009bu, 0x000200feu, 0x0000009cu, 0x00010038u, 0x00050036u, 0x00000006u, + 0x00000016u, 0x00000000u, 0x0000000eu, 0x00030037u, 0x0000000du, 0x00000015u, 0x000200f8u, 0x00000017u, + 0x0004003bu, 0x00000007u, 0x0000009fu, 0x00000007u, 0x0004003bu, 0x00000007u, 0x000000a2u, 0x00000007u, + 0x0004003bu, 0x00000007u, 0x000000a6u, 0x00000007u, 0x0004003bu, 0x000000abu, 0x000000acu, 0x00000007u, + 0x0004003bu, 0x00000007u, 0x000000b3u, 0x00000007u, 0x0004003bu, 0x00000007u, 0x000000bfu, 0x00000007u, + 0x0004003bu, 0x00000007u, 0x000000e1u, 0x00000007u, 0x0004003bu, 0x00000007u, 0x000000e6u, 0x00000007u, + 0x0004003bu, 0x00000007u, 0x000000eau, 0x00000007u, 0x0004003bu, 0x00000007u, 0x000000f0u, 0x00000007u, + 0x0004003bu, 0x00000007u, 0x0000010cu, 0x00000007u, 0x0004003bu, 0x00000007u, 0x00000113u, 0x00000007u, + 0x0004003du, 0x00000008u, 0x000000a0u, 0x00000015u, 0x0004007cu, 0x00000006u, 0x000000a1u, 0x000000a0u, + 0x0003003eu, 0x0000009fu, 0x000000a1u, 0x0004003du, 0x00000006u, 0x000000a3u, 0x0000009fu, 0x000500c2u, + 0x00000006u, 0x000000a4u, 0x000000a3u, 0x00000024u, 0x000500c7u, 0x00000006u, 0x000000a5u, 0x000000a4u, + 0x00000052u, 0x0003003eu, 0x000000a2u, 0x000000a5u, 0x0004003du, 0x00000006u, 0x000000a7u, 0x0000009fu, + 0x000500c2u, 0x00000006u, 0x000000a8u, 0x000000a7u, 0x0000008bu, 0x000500c7u, 0x00000006u, 0x000000aau, + 0x000000a8u, 0x000000a9u, 0x0003003eu, 0x000000a6u, 0x000000aau, 0x0004003du, 0x00000006u, 0x000000adu, + 0x000000a6u, 0x0004007cu, 0x00000023u, 0x000000aeu, 0x000000adu, 0x00050082u, 0x00000023u, 0x000000b0u, + 0x000000aeu, 0x000000afu, 0x00050080u, 0x00000023u, 0x000000b2u, 0x000000b0u, 0x000000b1u, 0x0003003eu, + 0x000000acu, 0x000000b2u, 0x0004003du, 0x00000006u, 0x000000b4u, 0x0000009fu, 0x000500c7u, 0x00000006u, + 0x000000b5u, 0x000000b4u, 0x00000034u, 0x0003003eu, 0x000000b3u, 0x000000b5u, 0x0004003du, 0x00000006u, + 0x000000b6u, 0x000000a6u, 0x000500aau, 0x0000002cu, 0x000000b7u, 0x000000b6u, 0x000000a9u, 0x000300f7u, + 0x000000b9u, 0x00000000u, 0x000400fau, 0x000000b7u, 0x000000b8u, 0x000000b9u, 0x000200f8u, 0x000000b8u, + 0x0004003du, 0x00000006u, 0x000000bau, 0x000000a2u, 0x000500c5u, 0x00000006u, 0x000000bcu, 0x000000bau, + 0x000000bbu, 0x0004003du, 0x00000006u, 0x000000bdu, 0x000000b3u, 0x000500abu, 0x0000002cu, 0x000000beu, + 0x000000bdu, 0x00000036u, 0x000300f7u, 0x000000c1u, 0x00000000u, 0x000400fau, 0x000000beu, 0x000000c0u, + 0x000000c6u, 0x000200f8u, 0x000000c0u, 0x0004003du, 0x00000006u, 0x000000c3u, 0x000000b3u, 0x000500c2u, + 0x00000006u, 0x000000c4u, 0x000000c3u, 0x00000066u, 0x000500c5u, 0x00000006u, 0x000000c5u, 0x000000c2u, + 0x000000c4u, 0x0003003eu, 0x000000bfu, 0x000000c5u, 0x000200f9u, 0x000000c1u, 0x000200f8u, 0x000000c6u, + 0x0003003eu, 0x000000bfu, 0x00000036u, 0x000200f9u, 0x000000c1u, 0x000200f8u, 0x000000c1u, 0x0004003du, + 0x00000006u, 0x000000c7u, 0x000000bfu, 0x000500c5u, 0x00000006u, 0x000000c8u, 0x000000bcu, 0x000000c7u, + 0x000200feu, 0x000000c8u, 0x000200f8u, 0x000000b9u, 0x0004003du, 0x00000023u, 0x000000cau, 0x000000acu, + 0x000500afu, 0x0000002cu, 0x000000ccu, 0x000000cau, 0x000000cbu, 0x000300f7u, 0x000000ceu, 0x00000000u, + 0x000400fau, 0x000000ccu, 0x000000cdu, 0x000000ceu, 0x000200f8u, 0x000000cdu, 0x0004003du, 0x00000006u, + 0x000000cfu, 0x000000a2u, 0x000500c5u, 0x00000006u, 0x000000d0u, 0x000000cfu, 0x000000bbu, 0x000200feu, + 0x000000d0u, 0x000200f8u, 0x000000ceu, 0x0004003du, 0x00000023u, 0x000000d2u, 0x000000acu, 0x000500b3u, + 0x0000002cu, 0x000000d4u, 0x000000d2u, 0x000000d3u, 0x000300f7u, 0x000000d6u, 0x00000000u, 0x000400fau, + 0x000000d4u, 0x000000d5u, 0x000000d6u, 0x000200f8u, 0x000000d5u, 0x0004003du, 0x00000023u, 0x000000d7u, + 0x000000acu, 0x000500b1u, 0x0000002cu, 0x000000d9u, 0x000000d7u, 0x000000d8u, 0x000300f7u, 0x000000dbu, + 0x00000000u, 0x000400fau, 0x000000d9u, 0x000000dau, 0x000000dbu, 0x000200f8u, 0x000000dau, 0x0004003du, + 0x00000006u, 0x000000dcu, 0x000000a2u, 0x000200feu, 0x000000dcu, 0x000200f8u, 0x000000dbu, 0x0004003du, + 0x00000006u, 0x000000dfu, 0x000000b3u, 0x000500c5u, 0x00000006u, 0x000000e0u, 0x000000dfu, 0x000000deu, + 0x0003003eu, 0x000000b3u, 0x000000e0u, 0x0004003du, 0x00000023u, 0x000000e3u, 0x000000acu, 0x00050082u, + 0x00000023u, 0x000000e4u, 0x000000e2u, 0x000000e3u, 0x0004007cu, 0x00000006u, 0x000000e5u, 0x000000e4u, + 0x0003003eu, 0x000000e1u, 0x000000e5u, 0x0004003du, 0x00000006u, 0x000000e7u, 0x000000b3u, 0x0004003du, + 0x00000006u, 0x000000e8u, 0x000000e1u, 0x000500c2u, 0x00000006u, 0x000000e9u, 0x000000e7u, 0x000000e8u, + 0x0003003eu, 0x000000e6u, 0x000000e9u, 0x0004003du, 0x00000006u, 0x000000ebu, 0x000000b3u, 0x0004003du, + 0x00000006u, 0x000000ecu, 0x000000e1u, 0x000500c4u, 0x00000006u, 0x000000edu, 0x00000046u, 0x000000ecu, + 0x00050082u, 0x00000006u, 0x000000eeu, 0x000000edu, 0x00000046u, 0x000500c7u, 0x00000006u, 0x000000efu, + 0x000000ebu, 0x000000eeu, 0x0003003eu, 0x000000eau, 0x000000efu, 0x0004003du, 0x00000006u, 0x000000f1u, + 0x000000e1u, 0x00050082u, 0x00000006u, 0x000000f2u, 0x000000f1u, 0x00000046u, 0x000500c4u, 0x00000006u, + 0x000000f3u, 0x00000046u, 0x000000f2u, 0x0003003eu, 0x000000f0u, 0x000000f3u, 0x0004003du, 0x00000006u, + 0x000000f4u, 0x000000eau, 0x0004003du, 0x00000006u, 0x000000f5u, 0x000000f0u, 0x000500acu, 0x0000002cu, + 0x000000f6u, 0x000000f4u, 0x000000f5u, 0x000400a8u, 0x0000002cu, 0x000000f7u, 0x000000f6u, 0x000300f7u, + 0x000000f9u, 0x00000000u, 0x000400fau, 0x000000f7u, 0x000000f8u, 0x000000f9u, 0x000200f8u, 0x000000f8u, + 0x0004003du, 0x00000006u, 0x000000fau, 0x000000eau, 0x0004003du, 0x00000006u, 0x000000fbu, 0x000000f0u, + 0x000500aau, 0x0000002cu, 0x000000fcu, 0x000000fau, 0x000000fbu, 0x000300f7u, 0x000000feu, 0x00000000u, + 0x000400fau, 0x000000fcu, 0x000000fdu, 0x000000feu, 0x000200f8u, 0x000000fdu, 0x0004003du, 0x00000006u, + 0x000000ffu, 0x000000e6u, 0x000500c7u, 0x00000006u, 0x00000100u, 0x000000ffu, 0x00000046u, 0x000500abu, + 0x0000002cu, 0x00000101u, 0x00000100u, 0x00000036u, 0x000200f9u, 0x000000feu, 0x000200f8u, 0x000000feu, + 0x000700f5u, 0x0000002cu, 0x00000102u, 0x000000fcu, 0x000000f8u, 0x00000101u, 0x000000fdu, 0x000200f9u, + 0x000000f9u, 0x000200f8u, 0x000000f9u, 0x000700f5u, 0x0000002cu, 0x00000103u, 0x000000f6u, 0x000000dbu, + 0x00000102u, 0x000000feu, 0x000300f7u, 0x00000105u, 0x00000000u, 0x000400fau, 0x00000103u, 0x00000104u, + 0x00000105u, 0x000200f8u, 0x00000104u, 0x0004003du, 0x00000006u, 0x00000106u, 0x000000e6u, 0x00050080u, + 0x00000006u, 0x00000107u, 0x00000106u, 0x00000046u, 0x0003003eu, 0x000000e6u, 0x00000107u, 0x000200f9u, + 0x00000105u, 0x000200f8u, 0x00000105u, 0x0004003du, 0x00000006u, 0x00000108u, 0x000000a2u, 0x0004003du, + 0x00000006u, 0x00000109u, 0x000000e6u, 0x000500c5u, 0x00000006u, 0x0000010au, 0x00000108u, 0x00000109u, + 0x000200feu, 0x0000010au, 0x000200f8u, 0x000000d6u, 0x0004003du, 0x00000023u, 0x0000010du, 0x000000acu, + 0x0004007cu, 0x00000006u, 0x0000010eu, 0x0000010du, 0x000500c4u, 0x00000006u, 0x0000010fu, 0x0000010eu, + 0x00000057u, 0x0004003du, 0x00000006u, 0x00000110u, 0x000000b3u, 0x000500c2u, 0x00000006u, 0x00000111u, + 0x00000110u, 0x00000066u, 0x000500c5u, 0x00000006u, 0x00000112u, 0x0000010fu, 0x00000111u, 0x0003003eu, + 0x0000010cu, 0x00000112u, 0x0004003du, 0x00000006u, 0x00000114u, 0x000000b3u, 0x000500c7u, 0x00000006u, + 0x00000116u, 0x00000114u, 0x00000115u, 0x0003003eu, 0x00000113u, 0x00000116u, 0x0004003du, 0x00000006u, + 0x00000117u, 0x00000113u, 0x000500acu, 0x0000002cu, 0x00000119u, 0x00000117u, 0x00000118u, 0x000400a8u, + 0x0000002cu, 0x0000011au, 0x00000119u, 0x000300f7u, 0x0000011cu, 0x00000000u, 0x000400fau, 0x0000011au, + 0x0000011bu, 0x0000011cu, 0x000200f8u, 0x0000011bu, 0x0004003du, 0x00000006u, 0x0000011du, 0x00000113u, + 0x000500aau, 0x0000002cu, 0x0000011eu, 0x0000011du, 0x00000118u, 0x000300f7u, 0x00000120u, 0x00000000u, + 0x000400fau, 0x0000011eu, 0x0000011fu, 0x00000120u, 0x000200f8u, 0x0000011fu, 0x0004003du, 0x00000006u, + 0x00000121u, 0x0000010cu, 0x000500c7u, 0x00000006u, 0x00000122u, 0x00000121u, 0x00000046u, 0x000500abu, + 0x0000002cu, 0x00000123u, 0x00000122u, 0x00000036u, 0x000200f9u, 0x00000120u, 0x000200f8u, 0x00000120u, + 0x000700f5u, 0x0000002cu, 0x00000124u, 0x0000011eu, 0x0000011bu, 0x00000123u, 0x0000011fu, 0x000200f9u, + 0x0000011cu, 0x000200f8u, 0x0000011cu, 0x000700f5u, 0x0000002cu, 0x00000125u, 0x00000119u, 0x000000d6u, + 0x00000124u, 0x00000120u, 0x000300f7u, 0x00000127u, 0x00000000u, 0x000400fau, 0x00000125u, 0x00000126u, + 0x00000127u, 0x000200f8u, 0x00000126u, 0x0004003du, 0x00000006u, 0x00000128u, 0x0000010cu, 0x00050080u, + 0x00000006u, 0x00000129u, 0x00000128u, 0x00000046u, 0x0003003eu, 0x0000010cu, 0x00000129u, 0x000200f9u, + 0x00000127u, 0x000200f8u, 0x00000127u, 0x0004003du, 0x00000006u, 0x0000012au, 0x000000a2u, 0x0004003du, + 0x00000006u, 0x0000012bu, 0x0000010cu, 0x000500c5u, 0x00000006u, 0x0000012cu, 0x0000012au, 0x0000012bu, + 0x000200feu, 0x0000012cu, 0x00010038u, 0x00050036u, 0x00000008u, 0x0000001bu, 0x00000000u, 0x00000018u, + 0x00030037u, 0x00000007u, 0x00000019u, 0x00030037u, 0x00000007u, 0x0000001au, 0x000200f8u, 0x0000001cu, + 0x0004003bu, 0x0000000du, 0x00000131u, 0x00000007u, 0x0004003bu, 0x00000007u, 0x00000134u, 0x00000007u, + 0x0004003bu, 0x00000007u, 0x00000138u, 0x00000007u, 0x0004003du, 0x00000006u, 0x0000012fu, 0x0000001au, + 0x000500aau, 0x0000002cu, 0x00000130u, 0x0000012fu, 0x00000046u, 0x000300f7u, 0x00000133u, 0x00000000u, + 0x000400fau, 0x00000130u, 0x00000132u, 0x00000137u, 0x000200f8u, 0x00000132u, 0x0004003du, 0x00000006u, + 0x00000135u, 0x00000019u, 0x0003003eu, 0x00000134u, 0x00000135u, 0x00050039u, 0x00000008u, 0x00000136u, + 0x00000013u, 0x00000134u, 0x0003003eu, 0x00000131u, 0x00000136u, 0x000200f9u, 0x00000133u, 0x000200f8u, + 0x00000137u, 0x0004003du, 0x00000006u, 0x00000139u, 0x00000019u, 0x0003003eu, 0x00000138u, 0x00000139u, + 0x00050039u, 0x00000008u, 0x0000013au, 0x0000000bu, 0x00000138u, 0x0003003eu, 0x00000131u, 0x0000013au, + 0x000200f9u, 0x00000133u, 0x000200f8u, 0x00000133u, 0x0004003du, 0x00000008u, 0x0000013bu, 0x00000131u, + 0x000200feu, 0x0000013bu, 0x00010038u, 0x00050036u, 0x00000006u, 0x00000020u, 0x00000000u, 0x0000001du, + 0x00030037u, 0x0000000du, 0x0000001eu, 0x00030037u, 0x00000007u, 0x0000001fu, 0x000200f8u, 0x00000021u, + 0x0004003bu, 0x00000007u, 0x00000140u, 0x00000007u, 0x0004003bu, 0x0000000du, 0x00000143u, 0x00000007u, + 0x0004003bu, 0x0000000du, 0x00000147u, 0x00000007u, 0x0004003du, 0x00000006u, 0x0000013eu, 0x0000001fu, + 0x000500aau, 0x0000002cu, 0x0000013fu, 0x0000013eu, 0x00000046u, 0x000300f7u, 0x00000142u, 0x00000000u, + 0x000400fau, 0x0000013fu, 0x00000141u, 0x00000146u, 0x000200f8u, 0x00000141u, 0x0004003du, 0x00000008u, + 0x00000144u, 0x0000001eu, 0x0003003eu, 0x00000143u, 0x00000144u, 0x00050039u, 0x00000006u, 0x00000145u, + 0x00000016u, 0x00000143u, 0x0003003eu, 0x00000140u, 0x00000145u, 0x000200f9u, 0x00000142u, 0x000200f8u, + 0x00000146u, 0x0004003du, 0x00000008u, 0x00000148u, 0x0000001eu, 0x0003003eu, 0x00000147u, 0x00000148u, + 0x00050039u, 0x00000006u, 0x00000149u, 0x00000010u, 0x00000147u, 0x0003003eu, 0x00000140u, 0x00000149u, + 0x000200f9u, 0x00000142u, 0x000200f8u, 0x00000142u, 0x0004003du, 0x00000006u, 0x0000014au, 0x00000140u, + 0x000200feu, 0x0000014au, 0x00010038u, +}; + +constexpr uint32_t kSpv_vt_gdn_state_scatter[] = { + 0x07230203u, 0x00010300u, 0x0008000bu, 0x0000021du, 0x00000000u, 0x00020011u, 0x00000001u, 0x00020011u, + 0x00001151u, 0x0006000bu, 0x00000001u, 0x4c534c47u, 0x6474732eu, 0x3035342eu, 0x00000000u, 0x0003000eu, + 0x00000000u, 0x00000001u, 0x0006000fu, 0x00000005u, 0x00000004u, 0x6e69616du, 0x00000000u, 0x00000150u, + 0x00060010u, 0x00000004u, 0x00000011u, 0x00000080u, 0x00000001u, 0x00000001u, 0x00040047u, 0x00000150u, + 0x0000000bu, 0x0000001cu, 0x00030047u, 0x00000155u, 0x00000002u, 0x00050048u, 0x00000155u, 0x00000000u, + 0x00000023u, 0x00000000u, 0x00050048u, 0x00000155u, 0x00000001u, 0x00000023u, 0x00000004u, 0x00050048u, + 0x00000155u, 0x00000002u, 0x00000023u, 0x00000008u, 0x00050048u, 0x00000155u, 0x00000003u, 0x00000023u, + 0x0000000cu, 0x00050048u, 0x00000155u, 0x00000004u, 0x00000023u, 0x00000010u, 0x00050048u, 0x00000155u, + 0x00000005u, 0x00000023u, 0x00000014u, 0x00050048u, 0x00000155u, 0x00000006u, 0x00000023u, 0x00000018u, + 0x00050048u, 0x00000155u, 0x00000007u, 0x00000023u, 0x0000001cu, 0x00050048u, 0x00000155u, 0x00000008u, + 0x00000023u, 0x00000020u, 0x00050048u, 0x00000155u, 0x00000009u, 0x00000023u, 0x00000024u, 0x00050048u, + 0x00000155u, 0x0000000au, 0x00000023u, 0x00000028u, 0x00040047u, 0x0000016du, 0x00000006u, 0x00000004u, + 0x00030047u, 0x0000016eu, 0x00000002u, 0x00040048u, 0x0000016eu, 0x00000000u, 0x00000018u, 0x00050048u, + 0x0000016eu, 0x00000000u, 0x00000023u, 0x00000000u, 0x00030047u, 0x00000170u, 0x00000018u, 0x00040047u, + 0x00000170u, 0x00000021u, 0x00000004u, 0x00040047u, 0x00000170u, 0x00000022u, 0x00000000u, 0x00040047u, + 0x000001b4u, 0x00000006u, 0x00000004u, 0x00030047u, 0x000001b5u, 0x00000002u, 0x00050048u, 0x000001b5u, + 0x00000000u, 0x00000023u, 0x00000000u, 0x00040047u, 0x000001b7u, 0x00000021u, 0x00000000u, 0x00040047u, + 0x000001b7u, 0x00000022u, 0x00000000u, 0x00040047u, 0x000001c5u, 0x00000006u, 0x00000004u, 0x00030047u, + 0x000001c6u, 0x00000002u, 0x00040048u, 0x000001c6u, 0x00000000u, 0x00000018u, 0x00050048u, 0x000001c6u, + 0x00000000u, 0x00000023u, 0x00000000u, 0x00030047u, 0x000001c8u, 0x00000018u, 0x00040047u, 0x000001c8u, + 0x00000021u, 0x00000002u, 0x00040047u, 0x000001c8u, 0x00000022u, 0x00000000u, 0x00040047u, 0x000001d4u, + 0x00000006u, 0x00000002u, 0x00030047u, 0x000001d5u, 0x00000002u, 0x00040048u, 0x000001d5u, 0x00000000u, + 0x00000018u, 0x00050048u, 0x000001d5u, 0x00000000u, 0x00000023u, 0x00000000u, 0x00030047u, 0x000001d7u, + 0x00000018u, 0x00040047u, 0x000001d7u, 0x00000021u, 0x00000003u, 0x00040047u, 0x000001d7u, 0x00000022u, + 0x00000000u, 0x00040047u, 0x000001eau, 0x00000006u, 0x00000002u, 0x00030047u, 0x000001ebu, 0x00000002u, + 0x00050048u, 0x000001ebu, 0x00000000u, 0x00000023u, 0x00000000u, 0x00040047u, 0x000001edu, 0x00000021u, + 0x00000001u, 0x00040047u, 0x000001edu, 0x00000022u, 0x00000000u, 0x00040047u, 0x0000021cu, 0x0000000bu, + 0x00000019u, 0x00020013u, 0x00000002u, 0x00030021u, 0x00000003u, 0x00000002u, 0x00040015u, 0x00000006u, + 0x00000020u, 0x00000000u, 0x00040020u, 0x00000007u, 0x00000007u, 0x00000006u, 0x00030016u, 0x00000008u, + 0x00000020u, 0x00040021u, 0x00000009u, 0x00000008u, 0x00000007u, 0x00040020u, 0x0000000du, 0x00000007u, + 0x00000008u, 0x00040021u, 0x0000000eu, 0x00000006u, 0x0000000du, 0x00050021u, 0x00000018u, 0x00000008u, + 0x00000007u, 0x00000007u, 0x00050021u, 0x0000001du, 0x00000006u, 0x0000000du, 0x00000007u, 0x00040015u, + 0x00000023u, 0x00000020u, 0x00000001u, 0x0004002bu, 0x00000023u, 0x00000024u, 0x00000010u, 0x00020014u, + 0x0000002cu, 0x0004002bu, 0x00000006u, 0x0000002eu, 0x7f800000u, 0x0004002bu, 0x00000006u, 0x00000034u, + 0x007fffffu, 0x0004002bu, 0x00000006u, 0x00000036u, 0x00000000u, 0x0004002bu, 0x00000006u, 0x0000003du, + 0x00000040u, 0x0004002bu, 0x00000006u, 0x0000003fu, 0x0000ffffu, 0x0004002bu, 0x00000006u, 0x00000043u, + 0x00007fffu, 0x0004002bu, 0x00000006u, 0x00000046u, 0x00000001u, 0x0004002bu, 0x00000006u, 0x00000052u, + 0x00008000u, 0x0004002bu, 0x00000023u, 0x00000057u, 0x0000000au, 0x0004002bu, 0x00000006u, 0x00000059u, + 0x0000001fu, 0x0004002bu, 0x00000006u, 0x0000005du, 0x000003ffu, 0x0004002bu, 0x00000023u, 0x00000066u, + 0x0000000du, 0x0004002bu, 0x00000006u, 0x0000007du, 0x00000400u, 0x0004002bu, 0x00000023u, 0x00000080u, + 0x00000001u, 0x0004002bu, 0x00000006u, 0x00000088u, 0x00000071u, 0x0004002bu, 0x00000023u, 0x0000008bu, + 0x00000017u, 0x0004002bu, 0x00000006u, 0x00000095u, 0x00000070u, 0x0004002bu, 0x00000006u, 0x000000a9u, + 0x000000ffu, 0x00040020u, 0x000000abu, 0x00000007u, 0x00000023u, 0x0004002bu, 0x00000023u, 0x000000afu, + 0x0000007fu, 0x0004002bu, 0x00000023u, 0x000000b1u, 0x0000000fu, 0x0004002bu, 0x00000006u, 0x000000bbu, + 0x00007c00u, 0x0004002bu, 0x00000006u, 0x000000c2u, 0x00000200u, 0x0004002bu, 0x00000023u, 0x000000cbu, + 0x0000001fu, 0x0004002bu, 0x00000023u, 0x000000d3u, 0x00000000u, 0x0004002bu, 0x00000023u, 0x000000d8u, + 0xfffffff6u, 0x0004002bu, 0x00000006u, 0x000000deu, 0x00800000u, 0x0004002bu, 0x00000023u, 0x000000e2u, + 0x0000000eu, 0x0004002bu, 0x00000006u, 0x00000115u, 0x00001fffu, 0x0004002bu, 0x00000006u, 0x00000118u, + 0x00001000u, 0x00040017u, 0x0000014eu, 0x00000006u, 0x00000003u, 0x00040020u, 0x0000014fu, 0x00000001u, + 0x0000014eu, 0x0004003bu, 0x0000014fu, 0x00000150u, 0x00000001u, 0x00040020u, 0x00000151u, 0x00000001u, + 0x00000006u, 0x000d001eu, 0x00000155u, 0x00000006u, 0x00000006u, 0x00000006u, 0x00000006u, 0x00000006u, + 0x00000006u, 0x00000006u, 0x00000006u, 0x00000006u, 0x00000006u, 0x00000006u, 0x00040020u, 0x00000156u, + 0x00000009u, 0x00000155u, 0x0004003bu, 0x00000156u, 0x00000157u, 0x00000009u, 0x00040020u, 0x00000158u, + 0x00000009u, 0x00000006u, 0x0003001du, 0x0000016du, 0x00000006u, 0x0003001eu, 0x0000016eu, 0x0000016du, + 0x00040020u, 0x0000016fu, 0x0000000cu, 0x0000016eu, 0x0004003bu, 0x0000016fu, 0x00000170u, 0x0000000cu, + 0x0004002bu, 0x00000023u, 0x00000173u, 0x00000002u, 0x00040020u, 0x00000177u, 0x0000000cu, 0x00000006u, + 0x0004002bu, 0x00000023u, 0x00000182u, 0x00000005u, 0x0004002bu, 0x00000023u, 0x0000019eu, 0x00000004u, + 0x0004002bu, 0x00000023u, 0x000001a3u, 0x00000003u, 0x0004002bu, 0x00000023u, 0x000001aeu, 0x00000007u, + 0x0003001du, 0x000001b4u, 0x00000006u, 0x0003001eu, 0x000001b5u, 0x000001b4u, 0x00040020u, 0x000001b6u, + 0x0000000cu, 0x000001b5u, 0x0004003bu, 0x000001b6u, 0x000001b7u, 0x0000000cu, 0x0004002bu, 0x00000023u, + 0x000001b8u, 0x00000008u, 0x0004002bu, 0x00000023u, 0x000001beu, 0x00000006u, 0x0003001du, 0x000001c5u, + 0x00000006u, 0x0003001eu, 0x000001c6u, 0x000001c5u, 0x00040020u, 0x000001c7u, 0x0000000cu, 0x000001c6u, + 0x0004003bu, 0x000001c7u, 0x000001c8u, 0x0000000cu, 0x0004002bu, 0x00000023u, 0x000001c9u, 0x00000009u, + 0x00040015u, 0x000001d3u, 0x00000010u, 0x00000000u, 0x0003001du, 0x000001d4u, 0x000001d3u, 0x0003001eu, + 0x000001d5u, 0x000001d4u, 0x00040020u, 0x000001d6u, 0x0000000cu, 0x000001d5u, 0x0004003bu, 0x000001d6u, + 0x000001d7u, 0x0000000cu, 0x00040020u, 0x000001ddu, 0x0000000cu, 0x000001d3u, 0x0003001du, 0x000001eau, + 0x000001d3u, 0x0003001eu, 0x000001ebu, 0x000001eau, 0x00040020u, 0x000001ecu, 0x0000000cu, 0x000001ebu, + 0x0004003bu, 0x000001ecu, 0x000001edu, 0x0000000cu, 0x0003002au, 0x0000002cu, 0x00000217u, 0x0004002bu, + 0x00000006u, 0x00000218u, 0x00000080u, 0x0004001cu, 0x00000219u, 0x00000008u, 0x00000218u, 0x00040020u, + 0x0000021au, 0x00000004u, 0x00000219u, 0x0004003bu, 0x0000021au, 0x0000021bu, 0x00000004u, 0x0006002cu, + 0x0000014eu, 0x0000021cu, 0x00000218u, 0x00000046u, 0x00000046u, 0x00050036u, 0x00000002u, 0x00000004u, + 0x00000000u, 0x00000003u, 0x000200f8u, 0x00000005u, 0x0004003bu, 0x00000007u, 0x0000014du, 0x00000007u, + 0x0004003bu, 0x00000007u, 0x00000162u, 0x00000007u, 0x0004003bu, 0x00000007u, 0x00000167u, 0x00000007u, + 0x0004003bu, 0x000000abu, 0x0000016cu, 0x00000007u, 0x0004003bu, 0x00000007u, 0x0000018au, 0x00000007u, + 0x0004003bu, 0x00000007u, 0x0000018fu, 0x00000007u, 0x0004003bu, 0x00000007u, 0x00000194u, 0x00000007u, + 0x0004003bu, 0x00000007u, 0x0000019bu, 0x00000007u, 0x0004003bu, 0x0000000du, 0x000001c2u, 0x00000007u, + 0x0004003bu, 0x00000007u, 0x000001e1u, 0x00000007u, 0x0004003bu, 0x00000007u, 0x000001e2u, 0x00000007u, + 0x0004003bu, 0x0000000du, 0x000001f6u, 0x00000007u, 0x0004003bu, 0x00000007u, 0x0000020au, 0x00000007u, + 0x0004003bu, 0x00000007u, 0x0000020bu, 0x00000007u, 0x0004003bu, 0x0000000du, 0x0000020fu, 0x00000007u, + 0x0004003bu, 0x00000007u, 0x00000211u, 0x00000007u, 0x00050041u, 0x00000151u, 0x00000152u, 0x00000150u, + 0x00000036u, 0x0004003du, 0x00000006u, 0x00000153u, 0x00000152u, 0x0003003eu, 0x0000014du, 0x00000153u, + 0x0004003du, 0x00000006u, 0x00000154u, 0x0000014du, 0x00050041u, 0x00000158u, 0x00000159u, 0x00000157u, + 0x000000d3u, 0x0004003du, 0x00000006u, 0x0000015au, 0x00000159u, 0x00050041u, 0x00000158u, 0x0000015bu, + 0x00000157u, 0x00000080u, 0x0004003du, 0x00000006u, 0x0000015cu, 0x0000015bu, 0x00050084u, 0x00000006u, + 0x0000015du, 0x0000015au, 0x0000015cu, 0x000500aeu, 0x0000002cu, 0x0000015eu, 0x00000154u, 0x0000015du, + 0x000300f7u, 0x00000160u, 0x00000000u, 0x000400fau, 0x0000015eu, 0x0000015fu, 0x00000160u, 0x000200f8u, + 0x0000015fu, 0x000100fdu, 0x000200f8u, 0x00000160u, 0x0004003du, 0x00000006u, 0x00000163u, 0x0000014du, + 0x00050041u, 0x00000158u, 0x00000164u, 0x00000157u, 0x00000080u, 0x0004003du, 0x00000006u, 0x00000165u, + 0x00000164u, 0x00050086u, 0x00000006u, 0x00000166u, 0x00000163u, 0x00000165u, 0x0003003eu, 0x00000162u, + 0x00000166u, 0x0004003du, 0x00000006u, 0x00000168u, 0x0000014du, 0x00050041u, 0x00000158u, 0x00000169u, + 0x00000157u, 0x00000080u, 0x0004003du, 0x00000006u, 0x0000016au, 0x00000169u, 0x00050089u, 0x00000006u, + 0x0000016bu, 0x00000168u, 0x0000016au, 0x0003003eu, 0x00000167u, 0x0000016bu, 0x00050041u, 0x00000158u, + 0x00000171u, 0x00000157u, 0x00000057u, 0x0004003du, 0x00000006u, 0x00000172u, 0x00000171u, 0x000500c2u, + 0x00000006u, 0x00000174u, 0x00000172u, 0x00000173u, 0x0004003du, 0x00000006u, 0x00000175u, 0x00000162u, + 0x00050080u, 0x00000006u, 0x00000176u, 0x00000174u, 0x00000175u, 0x00060041u, 0x00000177u, 0x00000178u, + 0x00000170u, 0x000000d3u, 0x00000176u, 0x0004003du, 0x00000006u, 0x00000179u, 0x00000178u, 0x0004007cu, + 0x00000023u, 0x0000017au, 0x00000179u, 0x0003003eu, 0x0000016cu, 0x0000017au, 0x0004003du, 0x00000023u, + 0x0000017bu, 0x0000016cu, 0x000500b1u, 0x0000002cu, 0x0000017cu, 0x0000017bu, 0x000000d3u, 0x000400a8u, + 0x0000002cu, 0x0000017du, 0x0000017cu, 0x000300f7u, 0x0000017fu, 0x00000000u, 0x000400fau, 0x0000017du, + 0x0000017eu, 0x0000017fu, 0x000200f8u, 0x0000017eu, 0x0004003du, 0x00000023u, 0x00000180u, 0x0000016cu, + 0x0004007cu, 0x00000006u, 0x00000181u, 0x00000180u, 0x00050041u, 0x00000158u, 0x00000183u, 0x00000157u, + 0x00000182u, 0x0004003du, 0x00000006u, 0x00000184u, 0x00000183u, 0x000500aeu, 0x0000002cu, 0x00000185u, + 0x00000181u, 0x00000184u, 0x000200f9u, 0x0000017fu, 0x000200f8u, 0x0000017fu, 0x000700f5u, 0x0000002cu, + 0x00000186u, 0x0000017cu, 0x00000160u, 0x00000185u, 0x0000017eu, 0x000300f7u, 0x00000188u, 0x00000000u, + 0x000400fau, 0x00000186u, 0x00000187u, 0x00000188u, 0x000200f8u, 0x00000187u, 0x000100fdu, 0x000200f8u, + 0x00000188u, 0x0004003du, 0x00000006u, 0x0000018bu, 0x00000167u, 0x00050041u, 0x00000158u, 0x0000018cu, + 0x00000157u, 0x00000173u, 0x0004003du, 0x00000006u, 0x0000018du, 0x0000018cu, 0x00050086u, 0x00000006u, + 0x0000018eu, 0x0000018bu, 0x0000018du, 0x0003003eu, 0x0000018au, 0x0000018eu, 0x0004003du, 0x00000006u, + 0x00000190u, 0x00000167u, 0x00050041u, 0x00000158u, 0x00000191u, 0x00000157u, 0x00000173u, 0x0004003du, + 0x00000006u, 0x00000192u, 0x00000191u, 0x00050089u, 0x00000006u, 0x00000193u, 0x00000190u, 0x00000192u, + 0x0003003eu, 0x0000018fu, 0x00000193u, 0x0004003du, 0x00000006u, 0x00000195u, 0x00000162u, 0x00050041u, + 0x00000158u, 0x00000196u, 0x00000157u, 0x00000080u, 0x0004003du, 0x00000006u, 0x00000197u, 0x00000196u, + 0x00050084u, 0x00000006u, 0x00000198u, 0x00000195u, 0x00000197u, 0x0004003du, 0x00000006u, 0x00000199u, + 0x00000167u, 0x00050080u, 0x00000006u, 0x0000019au, 0x00000198u, 0x00000199u, 0x0003003eu, 0x00000194u, + 0x0000019au, 0x0004003du, 0x00000023u, 0x0000019cu, 0x0000016cu, 0x0004007cu, 0x00000006u, 0x0000019du, + 0x0000019cu, 0x00050041u, 0x00000158u, 0x0000019fu, 0x00000157u, 0x0000019eu, 0x0004003du, 0x00000006u, + 0x000001a0u, 0x0000019fu, 0x00050084u, 0x00000006u, 0x000001a1u, 0x0000019du, 0x000001a0u, 0x0004003du, + 0x00000006u, 0x000001a2u, 0x0000018au, 0x00050041u, 0x00000158u, 0x000001a4u, 0x00000157u, 0x000001a3u, + 0x0004003du, 0x00000006u, 0x000001a5u, 0x000001a4u, 0x00050084u, 0x00000006u, 0x000001a6u, 0x000001a2u, + 0x000001a5u, 0x00050080u, 0x00000006u, 0x000001a7u, 0x000001a1u, 0x000001a6u, 0x0004003du, 0x00000006u, + 0x000001a8u, 0x0000018fu, 0x00050080u, 0x00000006u, 0x000001a9u, 0x000001a7u, 0x000001a8u, 0x0003003eu, + 0x0000019bu, 0x000001a9u, 0x000200f9u, 0x000001aau, 0x000200f8u, 0x000001aau, 0x000400f6u, 0x000001acu, + 0x000001adu, 0x00000000u, 0x000200f9u, 0x000001abu, 0x000200f8u, 0x000001abu, 0x00050041u, 0x00000158u, + 0x000001afu, 0x00000157u, 0x000001aeu, 0x0004003du, 0x00000006u, 0x000001b0u, 0x000001afu, 0x000500aau, + 0x0000002cu, 0x000001b1u, 0x000001b0u, 0x00000036u, 0x000300f7u, 0x000001b3u, 0x00000000u, 0x000400fau, + 0x000001b1u, 0x000001b2u, 0x000001e9u, 0x000200f8u, 0x000001b2u, 0x00050041u, 0x00000158u, 0x000001b9u, + 0x00000157u, 0x000001b8u, 0x0004003du, 0x00000006u, 0x000001bau, 0x000001b9u, 0x000500c2u, 0x00000006u, + 0x000001bbu, 0x000001bau, 0x00000173u, 0x0004003du, 0x00000006u, 0x000001bcu, 0x0000019bu, 0x00050080u, + 0x00000006u, 0x000001bdu, 0x000001bbu, 0x000001bcu, 0x00050041u, 0x00000158u, 0x000001bfu, 0x00000157u, + 0x000001beu, 0x0004003du, 0x00000006u, 0x000001c0u, 0x000001bfu, 0x000500aau, 0x0000002cu, 0x000001c1u, + 0x000001c0u, 0x00000036u, 0x000300f7u, 0x000001c4u, 0x00000000u, 0x000400fau, 0x000001c1u, 0x000001c3u, + 0x000001d2u, 0x000200f8u, 0x000001c3u, 0x00050041u, 0x00000158u, 0x000001cau, 0x00000157u, 0x000001c9u, + 0x0004003du, 0x00000006u, 0x000001cbu, 0x000001cau, 0x000500c2u, 0x00000006u, 0x000001ccu, 0x000001cbu, + 0x00000173u, 0x0004003du, 0x00000006u, 0x000001cdu, 0x00000194u, 0x00050080u, 0x00000006u, 0x000001ceu, + 0x000001ccu, 0x000001cdu, 0x00060041u, 0x00000177u, 0x000001cfu, 0x000001c8u, 0x000000d3u, 0x000001ceu, + 0x0004003du, 0x00000006u, 0x000001d0u, 0x000001cfu, 0x0004007cu, 0x00000008u, 0x000001d1u, 0x000001d0u, + 0x0003003eu, 0x000001c2u, 0x000001d1u, 0x000200f9u, 0x000001c4u, 0x000200f8u, 0x000001d2u, 0x00050041u, + 0x00000158u, 0x000001d8u, 0x00000157u, 0x000001c9u, 0x0004003du, 0x00000006u, 0x000001d9u, 0x000001d8u, + 0x000500c2u, 0x00000006u, 0x000001dau, 0x000001d9u, 0x00000080u, 0x0004003du, 0x00000006u, 0x000001dbu, + 0x00000194u, 0x00050080u, 0x00000006u, 0x000001dcu, 0x000001dau, 0x000001dbu, 0x00060041u, 0x000001ddu, + 0x000001deu, 0x000001d7u, 0x000000d3u, 0x000001dcu, 0x0004003du, 0x000001d3u, 0x000001dfu, 0x000001deu, + 0x00040071u, 0x00000006u, 0x000001e0u, 0x000001dfu, 0x0003003eu, 0x000001e1u, 0x000001e0u, 0x00050041u, + 0x00000158u, 0x000001e3u, 0x00000157u, 0x000001beu, 0x0004003du, 0x00000006u, 0x000001e4u, 0x000001e3u, + 0x0003003eu, 0x000001e2u, 0x000001e4u, 0x00060039u, 0x00000008u, 0x000001e5u, 0x0000001bu, 0x000001e1u, + 0x000001e2u, 0x0003003eu, 0x000001c2u, 0x000001e5u, 0x000200f9u, 0x000001c4u, 0x000200f8u, 0x000001c4u, + 0x0004003du, 0x00000008u, 0x000001e6u, 0x000001c2u, 0x0004007cu, 0x00000006u, 0x000001e7u, 0x000001e6u, + 0x00060041u, 0x00000177u, 0x000001e8u, 0x000001b7u, 0x000000d3u, 0x000001bdu, 0x0003003eu, 0x000001e8u, + 0x000001e7u, 0x000200f9u, 0x000001b3u, 0x000200f8u, 0x000001e9u, 0x00050041u, 0x00000158u, 0x000001eeu, + 0x00000157u, 0x000001b8u, 0x0004003du, 0x00000006u, 0x000001efu, 0x000001eeu, 0x000500c2u, 0x00000006u, + 0x000001f0u, 0x000001efu, 0x00000080u, 0x0004003du, 0x00000006u, 0x000001f1u, 0x0000019bu, 0x00050080u, + 0x00000006u, 0x000001f2u, 0x000001f0u, 0x000001f1u, 0x00050041u, 0x00000158u, 0x000001f3u, 0x00000157u, + 0x000001beu, 0x0004003du, 0x00000006u, 0x000001f4u, 0x000001f3u, 0x000500aau, 0x0000002cu, 0x000001f5u, + 0x000001f4u, 0x00000036u, 0x000300f7u, 0x000001f8u, 0x00000000u, 0x000400fau, 0x000001f5u, 0x000001f7u, + 0x00000201u, 0x000200f8u, 0x000001f7u, 0x00050041u, 0x00000158u, 0x000001f9u, 0x00000157u, 0x000001c9u, + 0x0004003du, 0x00000006u, 0x000001fau, 0x000001f9u, 0x000500c2u, 0x00000006u, 0x000001fbu, 0x000001fau, + 0x00000173u, 0x0004003du, 0x00000006u, 0x000001fcu, 0x00000194u, 0x00050080u, 0x00000006u, 0x000001fdu, + 0x000001fbu, 0x000001fcu, 0x00060041u, 0x00000177u, 0x000001feu, 0x000001c8u, 0x000000d3u, 0x000001fdu, + 0x0004003du, 0x00000006u, 0x000001ffu, 0x000001feu, 0x0004007cu, 0x00000008u, 0x00000200u, 0x000001ffu, + 0x0003003eu, 0x000001f6u, 0x00000200u, 0x000200f9u, 0x000001f8u, 0x000200f8u, 0x00000201u, 0x00050041u, + 0x00000158u, 0x00000202u, 0x00000157u, 0x000001c9u, 0x0004003du, 0x00000006u, 0x00000203u, 0x00000202u, + 0x000500c2u, 0x00000006u, 0x00000204u, 0x00000203u, 0x00000080u, 0x0004003du, 0x00000006u, 0x00000205u, + 0x00000194u, 0x00050080u, 0x00000006u, 0x00000206u, 0x00000204u, 0x00000205u, 0x00060041u, 0x000001ddu, + 0x00000207u, 0x000001d7u, 0x000000d3u, 0x00000206u, 0x0004003du, 0x000001d3u, 0x00000208u, 0x00000207u, + 0x00040071u, 0x00000006u, 0x00000209u, 0x00000208u, 0x0003003eu, 0x0000020au, 0x00000209u, 0x00050041u, + 0x00000158u, 0x0000020cu, 0x00000157u, 0x000001beu, 0x0004003du, 0x00000006u, 0x0000020du, 0x0000020cu, + 0x0003003eu, 0x0000020bu, 0x0000020du, 0x00060039u, 0x00000008u, 0x0000020eu, 0x0000001bu, 0x0000020au, + 0x0000020bu, 0x0003003eu, 0x000001f6u, 0x0000020eu, 0x000200f9u, 0x000001f8u, 0x000200f8u, 0x000001f8u, + 0x0004003du, 0x00000008u, 0x00000210u, 0x000001f6u, 0x0003003eu, 0x0000020fu, 0x00000210u, 0x00050041u, + 0x00000158u, 0x00000212u, 0x00000157u, 0x000001aeu, 0x0004003du, 0x00000006u, 0x00000213u, 0x00000212u, + 0x0003003eu, 0x00000211u, 0x00000213u, 0x00060039u, 0x00000006u, 0x00000214u, 0x00000020u, 0x0000020fu, + 0x00000211u, 0x00040071u, 0x000001d3u, 0x00000215u, 0x00000214u, 0x00060041u, 0x000001ddu, 0x00000216u, + 0x000001edu, 0x000000d3u, 0x000001f2u, 0x0003003eu, 0x00000216u, 0x00000215u, 0x000200f9u, 0x000001b3u, + 0x000200f8u, 0x000001b3u, 0x000200f9u, 0x000001adu, 0x000200f8u, 0x000001adu, 0x000400fau, 0x00000217u, + 0x000001aau, 0x000001acu, 0x000200f8u, 0x000001acu, 0x000100fdu, 0x00010038u, 0x00050036u, 0x00000008u, + 0x0000000bu, 0x00000000u, 0x00000009u, 0x00030037u, 0x00000007u, 0x0000000au, 0x000200f8u, 0x0000000cu, + 0x0004003du, 0x00000006u, 0x00000022u, 0x0000000au, 0x000500c4u, 0x00000006u, 0x00000025u, 0x00000022u, + 0x00000024u, 0x0004007cu, 0x00000008u, 0x00000026u, 0x00000025u, 0x000200feu, 0x00000026u, 0x00010038u, + 0x00050036u, 0x00000006u, 0x00000010u, 0x00000000u, 0x0000000eu, 0x00030037u, 0x0000000du, 0x0000000fu, + 0x000200f8u, 0x00000011u, 0x0004003bu, 0x00000007u, 0x00000029u, 0x00000007u, 0x0004003bu, 0x00000007u, + 0x00000042u, 0x00000007u, 0x0004003du, 0x00000008u, 0x0000002au, 0x0000000fu, 0x0004007cu, 0x00000006u, + 0x0000002bu, 0x0000002au, 0x0003003eu, 0x00000029u, 0x0000002bu, 0x0004003du, 0x00000006u, 0x0000002du, + 0x00000029u, 0x000500c7u, 0x00000006u, 0x0000002fu, 0x0000002du, 0x0000002eu, 0x000500aau, 0x0000002cu, + 0x00000030u, 0x0000002fu, 0x0000002eu, 0x000300f7u, 0x00000032u, 0x00000000u, 0x000400fau, 0x00000030u, + 0x00000031u, 0x00000032u, 0x000200f8u, 0x00000031u, 0x0004003du, 0x00000006u, 0x00000033u, 0x00000029u, + 0x000500c7u, 0x00000006u, 0x00000035u, 0x00000033u, 0x00000034u, 0x000500abu, 0x0000002cu, 0x00000037u, + 0x00000035u, 0x00000036u, 0x000200f9u, 0x00000032u, 0x000200f8u, 0x00000032u, 0x000700f5u, 0x0000002cu, + 0x00000038u, 0x00000030u, 0x00000011u, 0x00000037u, 0x00000031u, 0x000300f7u, 0x0000003au, 0x00000000u, + 0x000400fau, 0x00000038u, 0x00000039u, 0x0000003au, 0x000200f8u, 0x00000039u, 0x0004003du, 0x00000006u, + 0x0000003bu, 0x00000029u, 0x000500c2u, 0x00000006u, 0x0000003cu, 0x0000003bu, 0x00000024u, 0x000500c5u, + 0x00000006u, 0x0000003eu, 0x0000003cu, 0x0000003du, 0x000500c7u, 0x00000006u, 0x00000040u, 0x0000003eu, + 0x0000003fu, 0x000200feu, 0x00000040u, 0x000200f8u, 0x0000003au, 0x0004003du, 0x00000006u, 0x00000044u, + 0x00000029u, 0x000500c2u, 0x00000006u, 0x00000045u, 0x00000044u, 0x00000024u, 0x000500c7u, 0x00000006u, + 0x00000047u, 0x00000045u, 0x00000046u, 0x00050080u, 0x00000006u, 0x00000048u, 0x00000043u, 0x00000047u, + 0x0003003eu, 0x00000042u, 0x00000048u, 0x0004003du, 0x00000006u, 0x00000049u, 0x00000029u, 0x0004003du, + 0x00000006u, 0x0000004au, 0x00000042u, 0x00050080u, 0x00000006u, 0x0000004bu, 0x00000049u, 0x0000004au, + 0x000500c2u, 0x00000006u, 0x0000004cu, 0x0000004bu, 0x00000024u, 0x000500c7u, 0x00000006u, 0x0000004du, + 0x0000004cu, 0x0000003fu, 0x000200feu, 0x0000004du, 0x00010038u, 0x00050036u, 0x00000008u, 0x00000013u, + 0x00000000u, 0x00000009u, 0x00030037u, 0x00000007u, 0x00000012u, 0x000200f8u, 0x00000014u, 0x0004003bu, + 0x00000007u, 0x00000050u, 0x00000007u, 0x0004003bu, 0x00000007u, 0x00000055u, 0x00000007u, 0x0004003bu, + 0x00000007u, 0x0000005bu, 0x00000007u, 0x0004003bu, 0x00000007u, 0x00000076u, 0x00000007u, 0x0004003du, + 0x00000006u, 0x00000051u, 0x00000012u, 0x000500c7u, 0x00000006u, 0x00000053u, 0x00000051u, 0x00000052u, + 0x000500c4u, 0x00000006u, 0x00000054u, 0x00000053u, 0x00000024u, 0x0003003eu, 0x00000050u, 0x00000054u, + 0x0004003du, 0x00000006u, 0x00000056u, 0x00000012u, 0x000500c2u, 0x00000006u, 0x00000058u, 0x00000056u, + 0x00000057u, 0x000500c7u, 0x00000006u, 0x0000005au, 0x00000058u, 0x00000059u, 0x0003003eu, 0x00000055u, + 0x0000005au, 0x0004003du, 0x00000006u, 0x0000005cu, 0x00000012u, 0x000500c7u, 0x00000006u, 0x0000005eu, + 0x0000005cu, 0x0000005du, 0x0003003eu, 0x0000005bu, 0x0000005eu, 0x0004003du, 0x00000006u, 0x0000005fu, + 0x00000055u, 0x000500aau, 0x0000002cu, 0x00000060u, 0x0000005fu, 0x00000059u, 0x000300f7u, 0x00000062u, + 0x00000000u, 0x000400fau, 0x00000060u, 0x00000061u, 0x00000062u, 0x000200f8u, 0x00000061u, 0x0004003du, + 0x00000006u, 0x00000063u, 0x00000050u, 0x000500c5u, 0x00000006u, 0x00000064u, 0x00000063u, 0x0000002eu, + 0x0004003du, 0x00000006u, 0x00000065u, 0x0000005bu, 0x000500c4u, 0x00000006u, 0x00000067u, 0x00000065u, + 0x00000066u, 0x000500c5u, 0x00000006u, 0x00000068u, 0x00000064u, 0x00000067u, 0x0004007cu, 0x00000008u, + 0x00000069u, 0x00000068u, 0x000200feu, 0x00000069u, 0x000200f8u, 0x00000062u, 0x0004003du, 0x00000006u, + 0x0000006bu, 0x00000055u, 0x000500aau, 0x0000002cu, 0x0000006cu, 0x0000006bu, 0x00000036u, 0x000300f7u, + 0x0000006eu, 0x00000000u, 0x000400fau, 0x0000006cu, 0x0000006du, 0x0000006eu, 0x000200f8u, 0x0000006du, + 0x0004003du, 0x00000006u, 0x0000006fu, 0x0000005bu, 0x000500aau, 0x0000002cu, 0x00000070u, 0x0000006fu, + 0x00000036u, 0x000300f7u, 0x00000072u, 0x00000000u, 0x000400fau, 0x00000070u, 0x00000071u, 0x00000072u, + 0x000200f8u, 0x00000071u, 0x0004003du, 0x00000006u, 0x00000073u, 0x00000050u, 0x0004007cu, 0x00000008u, + 0x00000074u, 0x00000073u, 0x000200feu, 0x00000074u, 0x000200f8u, 0x00000072u, 0x0003003eu, 0x00000076u, + 0x00000036u, 0x000200f9u, 0x00000077u, 0x000200f8u, 0x00000077u, 0x000400f6u, 0x00000079u, 0x0000007au, + 0x00000000u, 0x000200f9u, 0x0000007bu, 0x000200f8u, 0x0000007bu, 0x0004003du, 0x00000006u, 0x0000007cu, + 0x0000005bu, 0x000500c7u, 0x00000006u, 0x0000007eu, 0x0000007cu, 0x0000007du, 0x000500aau, 0x0000002cu, + 0x0000007fu, 0x0000007eu, 0x00000036u, 0x000400fau, 0x0000007fu, 0x00000078u, 0x00000079u, 0x000200f8u, + 0x00000078u, 0x0004003du, 0x00000006u, 0x00000081u, 0x0000005bu, 0x000500c4u, 0x00000006u, 0x00000082u, + 0x00000081u, 0x00000080u, 0x0003003eu, 0x0000005bu, 0x00000082u, 0x0004003du, 0x00000006u, 0x00000083u, + 0x00000076u, 0x00050080u, 0x00000006u, 0x00000084u, 0x00000083u, 0x00000046u, 0x0003003eu, 0x00000076u, + 0x00000084u, 0x000200f9u, 0x0000007au, 0x000200f8u, 0x0000007au, 0x000200f9u, 0x00000077u, 0x000200f8u, + 0x00000079u, 0x0004003du, 0x00000006u, 0x00000085u, 0x0000005bu, 0x000500c7u, 0x00000006u, 0x00000086u, + 0x00000085u, 0x0000005du, 0x0003003eu, 0x0000005bu, 0x00000086u, 0x0004003du, 0x00000006u, 0x00000087u, + 0x00000050u, 0x0004003du, 0x00000006u, 0x00000089u, 0x00000076u, 0x00050082u, 0x00000006u, 0x0000008au, + 0x00000088u, 0x00000089u, 0x000500c4u, 0x00000006u, 0x0000008cu, 0x0000008au, 0x0000008bu, 0x000500c5u, + 0x00000006u, 0x0000008du, 0x00000087u, 0x0000008cu, 0x0004003du, 0x00000006u, 0x0000008eu, 0x0000005bu, + 0x000500c4u, 0x00000006u, 0x0000008fu, 0x0000008eu, 0x00000066u, 0x000500c5u, 0x00000006u, 0x00000090u, + 0x0000008du, 0x0000008fu, 0x0004007cu, 0x00000008u, 0x00000091u, 0x00000090u, 0x000200feu, 0x00000091u, + 0x000200f8u, 0x0000006eu, 0x0004003du, 0x00000006u, 0x00000093u, 0x00000050u, 0x0004003du, 0x00000006u, + 0x00000094u, 0x00000055u, 0x00050080u, 0x00000006u, 0x00000096u, 0x00000094u, 0x00000095u, 0x000500c4u, + 0x00000006u, 0x00000097u, 0x00000096u, 0x0000008bu, 0x000500c5u, 0x00000006u, 0x00000098u, 0x00000093u, + 0x00000097u, 0x0004003du, 0x00000006u, 0x00000099u, 0x0000005bu, 0x000500c4u, 0x00000006u, 0x0000009au, + 0x00000099u, 0x00000066u, 0x000500c5u, 0x00000006u, 0x0000009bu, 0x00000098u, 0x0000009au, 0x0004007cu, + 0x00000008u, 0x0000009cu, 0x0000009bu, 0x000200feu, 0x0000009cu, 0x00010038u, 0x00050036u, 0x00000006u, + 0x00000016u, 0x00000000u, 0x0000000eu, 0x00030037u, 0x0000000du, 0x00000015u, 0x000200f8u, 0x00000017u, + 0x0004003bu, 0x00000007u, 0x0000009fu, 0x00000007u, 0x0004003bu, 0x00000007u, 0x000000a2u, 0x00000007u, + 0x0004003bu, 0x00000007u, 0x000000a6u, 0x00000007u, 0x0004003bu, 0x000000abu, 0x000000acu, 0x00000007u, + 0x0004003bu, 0x00000007u, 0x000000b3u, 0x00000007u, 0x0004003bu, 0x00000007u, 0x000000bfu, 0x00000007u, + 0x0004003bu, 0x00000007u, 0x000000e1u, 0x00000007u, 0x0004003bu, 0x00000007u, 0x000000e6u, 0x00000007u, + 0x0004003bu, 0x00000007u, 0x000000eau, 0x00000007u, 0x0004003bu, 0x00000007u, 0x000000f0u, 0x00000007u, + 0x0004003bu, 0x00000007u, 0x0000010cu, 0x00000007u, 0x0004003bu, 0x00000007u, 0x00000113u, 0x00000007u, + 0x0004003du, 0x00000008u, 0x000000a0u, 0x00000015u, 0x0004007cu, 0x00000006u, 0x000000a1u, 0x000000a0u, + 0x0003003eu, 0x0000009fu, 0x000000a1u, 0x0004003du, 0x00000006u, 0x000000a3u, 0x0000009fu, 0x000500c2u, + 0x00000006u, 0x000000a4u, 0x000000a3u, 0x00000024u, 0x000500c7u, 0x00000006u, 0x000000a5u, 0x000000a4u, + 0x00000052u, 0x0003003eu, 0x000000a2u, 0x000000a5u, 0x0004003du, 0x00000006u, 0x000000a7u, 0x0000009fu, + 0x000500c2u, 0x00000006u, 0x000000a8u, 0x000000a7u, 0x0000008bu, 0x000500c7u, 0x00000006u, 0x000000aau, + 0x000000a8u, 0x000000a9u, 0x0003003eu, 0x000000a6u, 0x000000aau, 0x0004003du, 0x00000006u, 0x000000adu, + 0x000000a6u, 0x0004007cu, 0x00000023u, 0x000000aeu, 0x000000adu, 0x00050082u, 0x00000023u, 0x000000b0u, + 0x000000aeu, 0x000000afu, 0x00050080u, 0x00000023u, 0x000000b2u, 0x000000b0u, 0x000000b1u, 0x0003003eu, + 0x000000acu, 0x000000b2u, 0x0004003du, 0x00000006u, 0x000000b4u, 0x0000009fu, 0x000500c7u, 0x00000006u, + 0x000000b5u, 0x000000b4u, 0x00000034u, 0x0003003eu, 0x000000b3u, 0x000000b5u, 0x0004003du, 0x00000006u, + 0x000000b6u, 0x000000a6u, 0x000500aau, 0x0000002cu, 0x000000b7u, 0x000000b6u, 0x000000a9u, 0x000300f7u, + 0x000000b9u, 0x00000000u, 0x000400fau, 0x000000b7u, 0x000000b8u, 0x000000b9u, 0x000200f8u, 0x000000b8u, + 0x0004003du, 0x00000006u, 0x000000bau, 0x000000a2u, 0x000500c5u, 0x00000006u, 0x000000bcu, 0x000000bau, + 0x000000bbu, 0x0004003du, 0x00000006u, 0x000000bdu, 0x000000b3u, 0x000500abu, 0x0000002cu, 0x000000beu, + 0x000000bdu, 0x00000036u, 0x000300f7u, 0x000000c1u, 0x00000000u, 0x000400fau, 0x000000beu, 0x000000c0u, + 0x000000c6u, 0x000200f8u, 0x000000c0u, 0x0004003du, 0x00000006u, 0x000000c3u, 0x000000b3u, 0x000500c2u, + 0x00000006u, 0x000000c4u, 0x000000c3u, 0x00000066u, 0x000500c5u, 0x00000006u, 0x000000c5u, 0x000000c2u, + 0x000000c4u, 0x0003003eu, 0x000000bfu, 0x000000c5u, 0x000200f9u, 0x000000c1u, 0x000200f8u, 0x000000c6u, + 0x0003003eu, 0x000000bfu, 0x00000036u, 0x000200f9u, 0x000000c1u, 0x000200f8u, 0x000000c1u, 0x0004003du, + 0x00000006u, 0x000000c7u, 0x000000bfu, 0x000500c5u, 0x00000006u, 0x000000c8u, 0x000000bcu, 0x000000c7u, + 0x000200feu, 0x000000c8u, 0x000200f8u, 0x000000b9u, 0x0004003du, 0x00000023u, 0x000000cau, 0x000000acu, + 0x000500afu, 0x0000002cu, 0x000000ccu, 0x000000cau, 0x000000cbu, 0x000300f7u, 0x000000ceu, 0x00000000u, + 0x000400fau, 0x000000ccu, 0x000000cdu, 0x000000ceu, 0x000200f8u, 0x000000cdu, 0x0004003du, 0x00000006u, + 0x000000cfu, 0x000000a2u, 0x000500c5u, 0x00000006u, 0x000000d0u, 0x000000cfu, 0x000000bbu, 0x000200feu, + 0x000000d0u, 0x000200f8u, 0x000000ceu, 0x0004003du, 0x00000023u, 0x000000d2u, 0x000000acu, 0x000500b3u, + 0x0000002cu, 0x000000d4u, 0x000000d2u, 0x000000d3u, 0x000300f7u, 0x000000d6u, 0x00000000u, 0x000400fau, + 0x000000d4u, 0x000000d5u, 0x000000d6u, 0x000200f8u, 0x000000d5u, 0x0004003du, 0x00000023u, 0x000000d7u, + 0x000000acu, 0x000500b1u, 0x0000002cu, 0x000000d9u, 0x000000d7u, 0x000000d8u, 0x000300f7u, 0x000000dbu, + 0x00000000u, 0x000400fau, 0x000000d9u, 0x000000dau, 0x000000dbu, 0x000200f8u, 0x000000dau, 0x0004003du, + 0x00000006u, 0x000000dcu, 0x000000a2u, 0x000200feu, 0x000000dcu, 0x000200f8u, 0x000000dbu, 0x0004003du, + 0x00000006u, 0x000000dfu, 0x000000b3u, 0x000500c5u, 0x00000006u, 0x000000e0u, 0x000000dfu, 0x000000deu, + 0x0003003eu, 0x000000b3u, 0x000000e0u, 0x0004003du, 0x00000023u, 0x000000e3u, 0x000000acu, 0x00050082u, + 0x00000023u, 0x000000e4u, 0x000000e2u, 0x000000e3u, 0x0004007cu, 0x00000006u, 0x000000e5u, 0x000000e4u, + 0x0003003eu, 0x000000e1u, 0x000000e5u, 0x0004003du, 0x00000006u, 0x000000e7u, 0x000000b3u, 0x0004003du, + 0x00000006u, 0x000000e8u, 0x000000e1u, 0x000500c2u, 0x00000006u, 0x000000e9u, 0x000000e7u, 0x000000e8u, + 0x0003003eu, 0x000000e6u, 0x000000e9u, 0x0004003du, 0x00000006u, 0x000000ebu, 0x000000b3u, 0x0004003du, + 0x00000006u, 0x000000ecu, 0x000000e1u, 0x000500c4u, 0x00000006u, 0x000000edu, 0x00000046u, 0x000000ecu, + 0x00050082u, 0x00000006u, 0x000000eeu, 0x000000edu, 0x00000046u, 0x000500c7u, 0x00000006u, 0x000000efu, + 0x000000ebu, 0x000000eeu, 0x0003003eu, 0x000000eau, 0x000000efu, 0x0004003du, 0x00000006u, 0x000000f1u, + 0x000000e1u, 0x00050082u, 0x00000006u, 0x000000f2u, 0x000000f1u, 0x00000046u, 0x000500c4u, 0x00000006u, + 0x000000f3u, 0x00000046u, 0x000000f2u, 0x0003003eu, 0x000000f0u, 0x000000f3u, 0x0004003du, 0x00000006u, + 0x000000f4u, 0x000000eau, 0x0004003du, 0x00000006u, 0x000000f5u, 0x000000f0u, 0x000500acu, 0x0000002cu, + 0x000000f6u, 0x000000f4u, 0x000000f5u, 0x000400a8u, 0x0000002cu, 0x000000f7u, 0x000000f6u, 0x000300f7u, + 0x000000f9u, 0x00000000u, 0x000400fau, 0x000000f7u, 0x000000f8u, 0x000000f9u, 0x000200f8u, 0x000000f8u, + 0x0004003du, 0x00000006u, 0x000000fau, 0x000000eau, 0x0004003du, 0x00000006u, 0x000000fbu, 0x000000f0u, + 0x000500aau, 0x0000002cu, 0x000000fcu, 0x000000fau, 0x000000fbu, 0x000300f7u, 0x000000feu, 0x00000000u, + 0x000400fau, 0x000000fcu, 0x000000fdu, 0x000000feu, 0x000200f8u, 0x000000fdu, 0x0004003du, 0x00000006u, + 0x000000ffu, 0x000000e6u, 0x000500c7u, 0x00000006u, 0x00000100u, 0x000000ffu, 0x00000046u, 0x000500abu, + 0x0000002cu, 0x00000101u, 0x00000100u, 0x00000036u, 0x000200f9u, 0x000000feu, 0x000200f8u, 0x000000feu, + 0x000700f5u, 0x0000002cu, 0x00000102u, 0x000000fcu, 0x000000f8u, 0x00000101u, 0x000000fdu, 0x000200f9u, + 0x000000f9u, 0x000200f8u, 0x000000f9u, 0x000700f5u, 0x0000002cu, 0x00000103u, 0x000000f6u, 0x000000dbu, + 0x00000102u, 0x000000feu, 0x000300f7u, 0x00000105u, 0x00000000u, 0x000400fau, 0x00000103u, 0x00000104u, + 0x00000105u, 0x000200f8u, 0x00000104u, 0x0004003du, 0x00000006u, 0x00000106u, 0x000000e6u, 0x00050080u, + 0x00000006u, 0x00000107u, 0x00000106u, 0x00000046u, 0x0003003eu, 0x000000e6u, 0x00000107u, 0x000200f9u, + 0x00000105u, 0x000200f8u, 0x00000105u, 0x0004003du, 0x00000006u, 0x00000108u, 0x000000a2u, 0x0004003du, + 0x00000006u, 0x00000109u, 0x000000e6u, 0x000500c5u, 0x00000006u, 0x0000010au, 0x00000108u, 0x00000109u, + 0x000200feu, 0x0000010au, 0x000200f8u, 0x000000d6u, 0x0004003du, 0x00000023u, 0x0000010du, 0x000000acu, + 0x0004007cu, 0x00000006u, 0x0000010eu, 0x0000010du, 0x000500c4u, 0x00000006u, 0x0000010fu, 0x0000010eu, + 0x00000057u, 0x0004003du, 0x00000006u, 0x00000110u, 0x000000b3u, 0x000500c2u, 0x00000006u, 0x00000111u, + 0x00000110u, 0x00000066u, 0x000500c5u, 0x00000006u, 0x00000112u, 0x0000010fu, 0x00000111u, 0x0003003eu, + 0x0000010cu, 0x00000112u, 0x0004003du, 0x00000006u, 0x00000114u, 0x000000b3u, 0x000500c7u, 0x00000006u, + 0x00000116u, 0x00000114u, 0x00000115u, 0x0003003eu, 0x00000113u, 0x00000116u, 0x0004003du, 0x00000006u, + 0x00000117u, 0x00000113u, 0x000500acu, 0x0000002cu, 0x00000119u, 0x00000117u, 0x00000118u, 0x000400a8u, + 0x0000002cu, 0x0000011au, 0x00000119u, 0x000300f7u, 0x0000011cu, 0x00000000u, 0x000400fau, 0x0000011au, + 0x0000011bu, 0x0000011cu, 0x000200f8u, 0x0000011bu, 0x0004003du, 0x00000006u, 0x0000011du, 0x00000113u, + 0x000500aau, 0x0000002cu, 0x0000011eu, 0x0000011du, 0x00000118u, 0x000300f7u, 0x00000120u, 0x00000000u, + 0x000400fau, 0x0000011eu, 0x0000011fu, 0x00000120u, 0x000200f8u, 0x0000011fu, 0x0004003du, 0x00000006u, + 0x00000121u, 0x0000010cu, 0x000500c7u, 0x00000006u, 0x00000122u, 0x00000121u, 0x00000046u, 0x000500abu, + 0x0000002cu, 0x00000123u, 0x00000122u, 0x00000036u, 0x000200f9u, 0x00000120u, 0x000200f8u, 0x00000120u, + 0x000700f5u, 0x0000002cu, 0x00000124u, 0x0000011eu, 0x0000011bu, 0x00000123u, 0x0000011fu, 0x000200f9u, + 0x0000011cu, 0x000200f8u, 0x0000011cu, 0x000700f5u, 0x0000002cu, 0x00000125u, 0x00000119u, 0x000000d6u, + 0x00000124u, 0x00000120u, 0x000300f7u, 0x00000127u, 0x00000000u, 0x000400fau, 0x00000125u, 0x00000126u, + 0x00000127u, 0x000200f8u, 0x00000126u, 0x0004003du, 0x00000006u, 0x00000128u, 0x0000010cu, 0x00050080u, + 0x00000006u, 0x00000129u, 0x00000128u, 0x00000046u, 0x0003003eu, 0x0000010cu, 0x00000129u, 0x000200f9u, + 0x00000127u, 0x000200f8u, 0x00000127u, 0x0004003du, 0x00000006u, 0x0000012au, 0x000000a2u, 0x0004003du, + 0x00000006u, 0x0000012bu, 0x0000010cu, 0x000500c5u, 0x00000006u, 0x0000012cu, 0x0000012au, 0x0000012bu, + 0x000200feu, 0x0000012cu, 0x00010038u, 0x00050036u, 0x00000008u, 0x0000001bu, 0x00000000u, 0x00000018u, + 0x00030037u, 0x00000007u, 0x00000019u, 0x00030037u, 0x00000007u, 0x0000001au, 0x000200f8u, 0x0000001cu, + 0x0004003bu, 0x0000000du, 0x00000131u, 0x00000007u, 0x0004003bu, 0x00000007u, 0x00000134u, 0x00000007u, + 0x0004003bu, 0x00000007u, 0x00000138u, 0x00000007u, 0x0004003du, 0x00000006u, 0x0000012fu, 0x0000001au, + 0x000500aau, 0x0000002cu, 0x00000130u, 0x0000012fu, 0x00000046u, 0x000300f7u, 0x00000133u, 0x00000000u, + 0x000400fau, 0x00000130u, 0x00000132u, 0x00000137u, 0x000200f8u, 0x00000132u, 0x0004003du, 0x00000006u, + 0x00000135u, 0x00000019u, 0x0003003eu, 0x00000134u, 0x00000135u, 0x00050039u, 0x00000008u, 0x00000136u, + 0x00000013u, 0x00000134u, 0x0003003eu, 0x00000131u, 0x00000136u, 0x000200f9u, 0x00000133u, 0x000200f8u, + 0x00000137u, 0x0004003du, 0x00000006u, 0x00000139u, 0x00000019u, 0x0003003eu, 0x00000138u, 0x00000139u, + 0x00050039u, 0x00000008u, 0x0000013au, 0x0000000bu, 0x00000138u, 0x0003003eu, 0x00000131u, 0x0000013au, + 0x000200f9u, 0x00000133u, 0x000200f8u, 0x00000133u, 0x0004003du, 0x00000008u, 0x0000013bu, 0x00000131u, + 0x000200feu, 0x0000013bu, 0x00010038u, 0x00050036u, 0x00000006u, 0x00000020u, 0x00000000u, 0x0000001du, 0x00030037u, 0x0000000du, 0x0000001eu, 0x00030037u, 0x00000007u, 0x0000001fu, 0x000200f8u, 0x00000021u, - 0x0004003bu, 0x00000007u, 0x00000149u, 0x00000007u, 0x0004003bu, 0x0000000du, 0x0000014cu, 0x00000007u, - 0x0004003bu, 0x0000000du, 0x00000150u, 0x00000007u, 0x0004003du, 0x00000006u, 0x00000147u, 0x0000001fu, - 0x000500aau, 0x00000035u, 0x00000148u, 0x00000147u, 0x0000004fu, 0x000300f7u, 0x0000014bu, 0x00000000u, - 0x000400fau, 0x00000148u, 0x0000014au, 0x0000014fu, 0x000200f8u, 0x0000014au, 0x0004003du, 0x00000008u, - 0x0000014du, 0x0000001eu, 0x0003003eu, 0x0000014cu, 0x0000014du, 0x00050039u, 0x00000006u, 0x0000014eu, - 0x00000016u, 0x0000014cu, 0x0003003eu, 0x00000149u, 0x0000014eu, 0x000200f9u, 0x0000014bu, 0x000200f8u, - 0x0000014fu, 0x0004003du, 0x00000008u, 0x00000151u, 0x0000001eu, 0x0003003eu, 0x00000150u, 0x00000151u, - 0x00050039u, 0x00000006u, 0x00000152u, 0x00000010u, 0x00000150u, 0x0003003eu, 0x00000149u, 0x00000152u, - 0x000200f9u, 0x0000014bu, 0x000200f8u, 0x0000014bu, 0x0004003du, 0x00000006u, 0x00000153u, 0x00000149u, - 0x000200feu, 0x00000153u, 0x00010038u, 0x00050036u, 0x00000008u, 0x00000024u, 0x00000000u, 0x00000022u, - 0x00030037u, 0x0000000du, 0x00000023u, 0x000200f8u, 0x00000025u, 0x0004003du, 0x00000008u, 0x00000157u, - 0x00000023u, 0x0004007fu, 0x00000008u, 0x00000158u, 0x00000157u, 0x0006000cu, 0x00000008u, 0x00000159u, - 0x00000001u, 0x0000001bu, 0x00000158u, 0x00050081u, 0x00000008u, 0x0000015au, 0x00000156u, 0x00000159u, - 0x00050088u, 0x00000008u, 0x0000015bu, 0x00000156u, 0x0000015au, 0x000200feu, 0x0000015bu, 0x00010038u, - 0x00050036u, 0x00000008u, 0x00000029u, 0x00000000u, 0x00000026u, 0x00030037u, 0x00000007u, 0x00000027u, - 0x00030037u, 0x0000000du, 0x00000028u, 0x000200f8u, 0x0000002au, 0x0004003bu, 0x00000007u, 0x00000168u, - 0x00000007u, 0x000400e0u, 0x0000015eu, 0x0000015eu, 0x0000015fu, 0x0004003du, 0x00000006u, 0x00000164u, - 0x00000027u, 0x0004003du, 0x00000008u, 0x00000165u, 0x00000028u, 0x00050041u, 0x00000166u, 0x00000167u, - 0x00000163u, 0x00000164u, 0x0003003eu, 0x00000167u, 0x00000165u, 0x000400e0u, 0x0000015eu, 0x0000015eu, - 0x0000015fu, 0x0003003eu, 0x00000168u, 0x00000046u, 0x000200f9u, 0x00000169u, 0x000200f8u, 0x00000169u, - 0x000400f6u, 0x0000016bu, 0x0000016cu, 0x00000000u, 0x000200f9u, 0x0000016du, 0x000200f8u, 0x0000016du, - 0x0004003du, 0x00000006u, 0x0000016eu, 0x00000168u, 0x000500acu, 0x00000035u, 0x0000016fu, 0x0000016eu, - 0x0000003fu, 0x000400fau, 0x0000016fu, 0x0000016au, 0x0000016bu, 0x000200f8u, 0x0000016au, 0x0004003du, - 0x00000006u, 0x00000170u, 0x00000027u, 0x0004003du, 0x00000006u, 0x00000171u, 0x00000168u, 0x000500b0u, - 0x00000035u, 0x00000172u, 0x00000170u, 0x00000171u, 0x000300f7u, 0x00000174u, 0x00000000u, 0x000400fau, - 0x00000172u, 0x00000173u, 0x00000174u, 0x000200f8u, 0x00000173u, 0x0004003du, 0x00000006u, 0x00000175u, - 0x00000027u, 0x0004003du, 0x00000006u, 0x00000176u, 0x00000027u, 0x0004003du, 0x00000006u, 0x00000177u, - 0x00000168u, 0x00050080u, 0x00000006u, 0x00000178u, 0x00000176u, 0x00000177u, 0x00050041u, 0x00000166u, - 0x00000179u, 0x00000163u, 0x00000178u, 0x0004003du, 0x00000008u, 0x0000017au, 0x00000179u, 0x00050041u, - 0x00000166u, 0x0000017bu, 0x00000163u, 0x00000175u, 0x0004003du, 0x00000008u, 0x0000017cu, 0x0000017bu, - 0x00050081u, 0x00000008u, 0x0000017du, 0x0000017cu, 0x0000017au, 0x00050041u, 0x00000166u, 0x0000017eu, - 0x00000163u, 0x00000175u, 0x0003003eu, 0x0000017eu, 0x0000017du, 0x000200f9u, 0x00000174u, 0x000200f8u, - 0x00000174u, 0x000400e0u, 0x0000015eu, 0x0000015eu, 0x0000015fu, 0x000200f9u, 0x0000016cu, 0x000200f8u, - 0x0000016cu, 0x0004003du, 0x00000006u, 0x0000017fu, 0x00000168u, 0x000500c2u, 0x00000006u, 0x00000180u, - 0x0000017fu, 0x00000089u, 0x0003003eu, 0x00000168u, 0x00000180u, 0x000200f9u, 0x00000169u, 0x000200f8u, - 0x0000016bu, 0x00050041u, 0x00000166u, 0x00000181u, 0x00000163u, 0x000000dcu, 0x0004003du, 0x00000008u, - 0x00000182u, 0x00000181u, 0x000200feu, 0x00000182u, 0x00010038u, + 0x0004003bu, 0x00000007u, 0x00000140u, 0x00000007u, 0x0004003bu, 0x0000000du, 0x00000143u, 0x00000007u, + 0x0004003bu, 0x0000000du, 0x00000147u, 0x00000007u, 0x0004003du, 0x00000006u, 0x0000013eu, 0x0000001fu, + 0x000500aau, 0x0000002cu, 0x0000013fu, 0x0000013eu, 0x00000046u, 0x000300f7u, 0x00000142u, 0x00000000u, + 0x000400fau, 0x0000013fu, 0x00000141u, 0x00000146u, 0x000200f8u, 0x00000141u, 0x0004003du, 0x00000008u, + 0x00000144u, 0x0000001eu, 0x0003003eu, 0x00000143u, 0x00000144u, 0x00050039u, 0x00000006u, 0x00000145u, + 0x00000016u, 0x00000143u, 0x0003003eu, 0x00000140u, 0x00000145u, 0x000200f9u, 0x00000142u, 0x000200f8u, + 0x00000146u, 0x0004003du, 0x00000008u, 0x00000148u, 0x0000001eu, 0x0003003eu, 0x00000147u, 0x00000148u, + 0x00050039u, 0x00000006u, 0x00000149u, 0x00000010u, 0x00000147u, 0x0003003eu, 0x00000140u, 0x00000149u, + 0x000200f9u, 0x00000142u, 0x000200f8u, 0x00000142u, 0x0004003du, 0x00000006u, 0x0000014au, 0x00000140u, + 0x000200feu, 0x0000014au, 0x00010038u, }; constexpr uint32_t kSpv_vt_greedy_argmax[] = { @@ -6139,6 +8156,473 @@ constexpr uint32_t kSpv_vt_rms_norm[] = { 0x00000176u, 0x00010038u, }; +constexpr uint32_t kSpv_vt_rms_norm_gated[] = { + 0x07230203u, 0x00010300u, 0x0008000bu, 0x000002c7u, 0x00000000u, 0x00020011u, 0x00000001u, 0x00020011u, + 0x00001151u, 0x0006000bu, 0x00000001u, 0x4c534c47u, 0x6474732eu, 0x3035342eu, 0x00000000u, 0x0003000eu, + 0x00000000u, 0x00000001u, 0x0007000fu, 0x00000005u, 0x00000004u, 0x6e69616du, 0x00000000u, 0x0000017cu, + 0x00000181u, 0x00060010u, 0x00000004u, 0x00000011u, 0x00000080u, 0x00000001u, 0x00000001u, 0x00040047u, + 0x0000017cu, 0x0000000bu, 0x0000001au, 0x00040047u, 0x00000181u, 0x0000000bu, 0x0000001bu, 0x00030047u, + 0x00000186u, 0x00000002u, 0x00050048u, 0x00000186u, 0x00000000u, 0x00000023u, 0x00000000u, 0x00050048u, + 0x00000186u, 0x00000001u, 0x00000023u, 0x00000004u, 0x00050048u, 0x00000186u, 0x00000002u, 0x00000023u, + 0x00000008u, 0x00050048u, 0x00000186u, 0x00000003u, 0x00000023u, 0x0000000cu, 0x00050048u, 0x00000186u, + 0x00000004u, 0x00000023u, 0x00000010u, 0x00050048u, 0x00000186u, 0x00000005u, 0x00000023u, 0x00000014u, + 0x00050048u, 0x00000186u, 0x00000006u, 0x00000023u, 0x00000018u, 0x00050048u, 0x00000186u, 0x00000007u, + 0x00000023u, 0x0000001cu, 0x00050048u, 0x00000186u, 0x00000008u, 0x00000023u, 0x00000020u, 0x00050048u, + 0x00000186u, 0x00000009u, 0x00000023u, 0x00000024u, 0x00050048u, 0x00000186u, 0x0000000au, 0x00000023u, + 0x00000028u, 0x00050048u, 0x00000186u, 0x0000000bu, 0x00000023u, 0x0000002cu, 0x00050048u, 0x00000186u, + 0x0000000cu, 0x00000023u, 0x00000030u, 0x00050048u, 0x00000186u, 0x0000000du, 0x00000023u, 0x00000034u, + 0x00040047u, 0x000001a2u, 0x00000006u, 0x00000004u, 0x00030047u, 0x000001a3u, 0x00000002u, 0x00040048u, + 0x000001a3u, 0x00000000u, 0x00000018u, 0x00050048u, 0x000001a3u, 0x00000000u, 0x00000023u, 0x00000000u, + 0x00030047u, 0x000001a5u, 0x00000018u, 0x00040047u, 0x000001a5u, 0x00000021u, 0x00000000u, 0x00040047u, + 0x000001a5u, 0x00000022u, 0x00000000u, 0x00040047u, 0x000001b4u, 0x00000006u, 0x00000002u, 0x00030047u, + 0x000001b5u, 0x00000002u, 0x00040048u, 0x000001b5u, 0x00000000u, 0x00000018u, 0x00050048u, 0x000001b5u, + 0x00000000u, 0x00000023u, 0x00000000u, 0x00030047u, 0x000001b7u, 0x00000018u, 0x00040047u, 0x000001b7u, + 0x00000021u, 0x00000001u, 0x00040047u, 0x000001b7u, 0x00000022u, 0x00000000u, 0x00040047u, 0x00000208u, + 0x00000006u, 0x00000004u, 0x00030047u, 0x00000209u, 0x00000002u, 0x00040048u, 0x00000209u, 0x00000000u, + 0x00000018u, 0x00050048u, 0x00000209u, 0x00000000u, 0x00000023u, 0x00000000u, 0x00030047u, 0x0000020bu, + 0x00000018u, 0x00040047u, 0x0000020bu, 0x00000021u, 0x00000002u, 0x00040047u, 0x0000020bu, 0x00000022u, + 0x00000000u, 0x00040047u, 0x00000217u, 0x00000006u, 0x00000002u, 0x00030047u, 0x00000218u, 0x00000002u, + 0x00040048u, 0x00000218u, 0x00000000u, 0x00000018u, 0x00050048u, 0x00000218u, 0x00000000u, 0x00000023u, + 0x00000000u, 0x00030047u, 0x0000021au, 0x00000018u, 0x00040047u, 0x0000021au, 0x00000021u, 0x00000003u, + 0x00040047u, 0x0000021au, 0x00000022u, 0x00000000u, 0x00040047u, 0x0000026au, 0x00000006u, 0x00000004u, + 0x00030047u, 0x0000026bu, 0x00000002u, 0x00040048u, 0x0000026bu, 0x00000000u, 0x00000018u, 0x00050048u, + 0x0000026bu, 0x00000000u, 0x00000023u, 0x00000000u, 0x00030047u, 0x0000026du, 0x00000018u, 0x00040047u, + 0x0000026du, 0x00000021u, 0x00000004u, 0x00040047u, 0x0000026du, 0x00000022u, 0x00000000u, 0x00040047u, + 0x00000278u, 0x00000006u, 0x00000002u, 0x00030047u, 0x00000279u, 0x00000002u, 0x00040048u, 0x00000279u, + 0x00000000u, 0x00000018u, 0x00050048u, 0x00000279u, 0x00000000u, 0x00000023u, 0x00000000u, 0x00030047u, + 0x0000027bu, 0x00000018u, 0x00040047u, 0x0000027bu, 0x00000021u, 0x00000005u, 0x00040047u, 0x0000027bu, + 0x00000022u, 0x00000000u, 0x00040047u, 0x00000294u, 0x00000006u, 0x00000004u, 0x00030047u, 0x00000295u, + 0x00000002u, 0x00050048u, 0x00000295u, 0x00000000u, 0x00000023u, 0x00000000u, 0x00040047u, 0x00000297u, + 0x00000021u, 0x00000006u, 0x00040047u, 0x00000297u, 0x00000022u, 0x00000000u, 0x00040047u, 0x000002aau, + 0x00000006u, 0x00000002u, 0x00030047u, 0x000002abu, 0x00000002u, 0x00050048u, 0x000002abu, 0x00000000u, + 0x00000023u, 0x00000000u, 0x00040047u, 0x000002adu, 0x00000021u, 0x00000007u, 0x00040047u, 0x000002adu, + 0x00000022u, 0x00000000u, 0x00040047u, 0x000002c6u, 0x0000000bu, 0x00000019u, 0x00020013u, 0x00000002u, + 0x00030021u, 0x00000003u, 0x00000002u, 0x00040015u, 0x00000006u, 0x00000020u, 0x00000000u, 0x00040020u, + 0x00000007u, 0x00000007u, 0x00000006u, 0x00030016u, 0x00000008u, 0x00000020u, 0x00040021u, 0x00000009u, + 0x00000008u, 0x00000007u, 0x00040020u, 0x0000000du, 0x00000007u, 0x00000008u, 0x00040021u, 0x0000000eu, + 0x00000006u, 0x0000000du, 0x00050021u, 0x00000018u, 0x00000008u, 0x00000007u, 0x00000007u, 0x00050021u, + 0x0000001du, 0x00000006u, 0x0000000du, 0x00000007u, 0x00050021u, 0x00000022u, 0x00000008u, 0x00000007u, + 0x0000000du, 0x00040015u, 0x00000028u, 0x00000020u, 0x00000001u, 0x0004002bu, 0x00000028u, 0x00000029u, + 0x00000010u, 0x00020014u, 0x00000031u, 0x0004002bu, 0x00000006u, 0x00000033u, 0x7f800000u, 0x0004002bu, + 0x00000006u, 0x00000039u, 0x007fffffu, 0x0004002bu, 0x00000006u, 0x0000003bu, 0x00000000u, 0x0004002bu, + 0x00000006u, 0x00000042u, 0x00000040u, 0x0004002bu, 0x00000006u, 0x00000044u, 0x0000ffffu, 0x0004002bu, + 0x00000006u, 0x00000048u, 0x00007fffu, 0x0004002bu, 0x00000006u, 0x0000004bu, 0x00000001u, 0x0004002bu, + 0x00000006u, 0x00000057u, 0x00008000u, 0x0004002bu, 0x00000028u, 0x0000005cu, 0x0000000au, 0x0004002bu, + 0x00000006u, 0x0000005eu, 0x0000001fu, 0x0004002bu, 0x00000006u, 0x00000062u, 0x000003ffu, 0x0004002bu, + 0x00000028u, 0x0000006bu, 0x0000000du, 0x0004002bu, 0x00000006u, 0x00000082u, 0x00000400u, 0x0004002bu, + 0x00000028u, 0x00000085u, 0x00000001u, 0x0004002bu, 0x00000006u, 0x0000008du, 0x00000071u, 0x0004002bu, + 0x00000028u, 0x00000090u, 0x00000017u, 0x0004002bu, 0x00000006u, 0x0000009au, 0x00000070u, 0x0004002bu, + 0x00000006u, 0x000000aeu, 0x000000ffu, 0x00040020u, 0x000000b0u, 0x00000007u, 0x00000028u, 0x0004002bu, + 0x00000028u, 0x000000b4u, 0x0000007fu, 0x0004002bu, 0x00000028u, 0x000000b6u, 0x0000000fu, 0x0004002bu, + 0x00000006u, 0x000000c0u, 0x00007c00u, 0x0004002bu, 0x00000006u, 0x000000c7u, 0x00000200u, 0x0004002bu, + 0x00000028u, 0x000000d0u, 0x0000001fu, 0x0004002bu, 0x00000028u, 0x000000d8u, 0x00000000u, 0x0004002bu, + 0x00000028u, 0x000000ddu, 0xfffffff6u, 0x0004002bu, 0x00000006u, 0x000000e3u, 0x00800000u, 0x0004002bu, + 0x00000028u, 0x000000e7u, 0x0000000eu, 0x0004002bu, 0x00000006u, 0x0000011au, 0x00001fffu, 0x0004002bu, + 0x00000006u, 0x0000011du, 0x00001000u, 0x0004002bu, 0x00000006u, 0x00000152u, 0x00000002u, 0x0004002bu, + 0x00000006u, 0x00000153u, 0x00000108u, 0x0004002bu, 0x00000006u, 0x00000154u, 0x00000080u, 0x0004001cu, + 0x00000155u, 0x00000008u, 0x00000154u, 0x00040020u, 0x00000156u, 0x00000004u, 0x00000155u, 0x0004003bu, + 0x00000156u, 0x00000157u, 0x00000004u, 0x00040020u, 0x0000015au, 0x00000004u, 0x00000008u, 0x00040017u, + 0x0000017au, 0x00000006u, 0x00000003u, 0x00040020u, 0x0000017bu, 0x00000001u, 0x0000017au, 0x0004003bu, + 0x0000017bu, 0x0000017cu, 0x00000001u, 0x00040020u, 0x0000017du, 0x00000001u, 0x00000006u, 0x0004003bu, + 0x0000017bu, 0x00000181u, 0x00000001u, 0x0010001eu, 0x00000186u, 0x00000006u, 0x00000006u, 0x00000006u, + 0x00000006u, 0x00000006u, 0x00000006u, 0x00000006u, 0x00000006u, 0x00000006u, 0x00000006u, 0x00000006u, + 0x00000006u, 0x00000006u, 0x00000008u, 0x00040020u, 0x00000187u, 0x00000009u, 0x00000186u, 0x0004003bu, + 0x00000187u, 0x00000188u, 0x00000009u, 0x00040020u, 0x00000189u, 0x00000009u, 0x00000006u, 0x0004002bu, + 0x00000008u, 0x0000018eu, 0x00000000u, 0x0004002bu, 0x00000028u, 0x0000019bu, 0x00000002u, 0x0003001du, + 0x000001a2u, 0x00000006u, 0x0003001eu, 0x000001a3u, 0x000001a2u, 0x00040020u, 0x000001a4u, 0x0000000cu, + 0x000001a3u, 0x0004003bu, 0x000001a4u, 0x000001a5u, 0x0000000cu, 0x0004002bu, 0x00000028u, 0x000001a6u, + 0x00000009u, 0x00040020u, 0x000001aeu, 0x0000000cu, 0x00000006u, 0x00040015u, 0x000001b3u, 0x00000010u, + 0x00000000u, 0x0003001du, 0x000001b4u, 0x000001b3u, 0x0003001eu, 0x000001b5u, 0x000001b4u, 0x00040020u, + 0x000001b6u, 0x0000000cu, 0x000001b5u, 0x0004003bu, 0x000001b6u, 0x000001b7u, 0x0000000cu, 0x00040020u, + 0x000001bfu, 0x0000000cu, 0x000001b3u, 0x0004002bu, 0x00000008u, 0x000001d7u, 0x3f800000u, 0x00040020u, + 0x000001ddu, 0x00000009u, 0x00000008u, 0x0004002bu, 0x00000028u, 0x000001e5u, 0x00000007u, 0x0004002bu, + 0x00000028u, 0x000001e9u, 0x00000008u, 0x0004002bu, 0x00000028u, 0x00000201u, 0x00000003u, 0x0003001du, + 0x00000208u, 0x00000006u, 0x0003001eu, 0x00000209u, 0x00000208u, 0x00040020u, 0x0000020au, 0x0000000cu, + 0x00000209u, 0x0004003bu, 0x0000020au, 0x0000020bu, 0x0000000cu, 0x0003001du, 0x00000217u, 0x000001b3u, + 0x0003001eu, 0x00000218u, 0x00000217u, 0x00040020u, 0x00000219u, 0x0000000cu, 0x00000218u, 0x0004003bu, + 0x00000219u, 0x0000021au, 0x0000000cu, 0x0004002bu, 0x00000028u, 0x0000022cu, 0x00000006u, 0x0004002bu, + 0x00000028u, 0x00000263u, 0x00000004u, 0x0003001du, 0x0000026au, 0x00000006u, 0x0003001eu, 0x0000026bu, + 0x0000026au, 0x00040020u, 0x0000026cu, 0x0000000cu, 0x0000026bu, 0x0004003bu, 0x0000026cu, 0x0000026du, + 0x0000000cu, 0x0004002bu, 0x00000028u, 0x0000026eu, 0x0000000bu, 0x0003001du, 0x00000278u, 0x000001b3u, + 0x0003001eu, 0x00000279u, 0x00000278u, 0x00040020u, 0x0000027au, 0x0000000cu, 0x00000279u, 0x0004003bu, + 0x0000027au, 0x0000027bu, 0x0000000cu, 0x0004002bu, 0x00000028u, 0x0000028eu, 0x00000005u, 0x0003001du, + 0x00000294u, 0x00000006u, 0x0003001eu, 0x00000295u, 0x00000294u, 0x00040020u, 0x00000296u, 0x0000000cu, + 0x00000295u, 0x0004003bu, 0x00000296u, 0x00000297u, 0x0000000cu, 0x0004002bu, 0x00000028u, 0x00000298u, + 0x0000000cu, 0x0003001du, 0x000002aau, 0x000001b3u, 0x0003001eu, 0x000002abu, 0x000002aau, 0x00040020u, + 0x000002acu, 0x0000000cu, 0x000002abu, 0x0004003bu, 0x000002acu, 0x000002adu, 0x0000000cu, 0x0003002au, + 0x00000031u, 0x000002c3u, 0x0006002cu, 0x0000017au, 0x000002c6u, 0x00000154u, 0x0000004bu, 0x0000004bu, + 0x00050036u, 0x00000002u, 0x00000004u, 0x00000000u, 0x00000003u, 0x000200f8u, 0x00000005u, 0x0004003bu, + 0x00000007u, 0x00000179u, 0x00000007u, 0x0004003bu, 0x00000007u, 0x00000180u, 0x00000007u, 0x0004003bu, + 0x00000007u, 0x00000184u, 0x00000007u, 0x0004003bu, 0x0000000du, 0x0000018du, 0x00000007u, 0x0004003bu, + 0x00000007u, 0x0000018fu, 0x00000007u, 0x0004003bu, 0x0000000du, 0x0000019au, 0x00000007u, 0x0004003bu, + 0x0000000du, 0x0000019fu, 0x00000007u, 0x0004003bu, 0x00000007u, 0x000001c3u, 0x00000007u, 0x0004003bu, + 0x00000007u, 0x000001c4u, 0x00000007u, 0x0004003bu, 0x0000000du, 0x000001d0u, 0x00000007u, 0x0004003bu, + 0x00000007u, 0x000001d1u, 0x00000007u, 0x0004003bu, 0x0000000du, 0x000001d3u, 0x00000007u, 0x0004003bu, + 0x0000000du, 0x000001d6u, 0x00000007u, 0x0004003bu, 0x00000007u, 0x000001e3u, 0x00000007u, 0x0004003bu, + 0x00000007u, 0x000001f5u, 0x00000007u, 0x0004003bu, 0x0000000du, 0x00000200u, 0x00000007u, 0x0004003bu, + 0x0000000du, 0x00000205u, 0x00000007u, 0x0004003bu, 0x00000007u, 0x00000225u, 0x00000007u, 0x0004003bu, + 0x00000007u, 0x00000226u, 0x00000007u, 0x0004003bu, 0x0000000du, 0x0000022bu, 0x00000007u, 0x0004003bu, + 0x0000000du, 0x00000230u, 0x00000007u, 0x0004003bu, 0x0000000du, 0x00000240u, 0x00000007u, 0x0004003bu, + 0x0000000du, 0x00000244u, 0x00000007u, 0x0004003bu, 0x00000007u, 0x0000025cu, 0x00000007u, 0x0004003bu, + 0x00000007u, 0x0000025du, 0x00000007u, 0x0004003bu, 0x0000000du, 0x00000262u, 0x00000007u, 0x0004003bu, + 0x0000000du, 0x00000267u, 0x00000007u, 0x0004003bu, 0x00000007u, 0x00000284u, 0x00000007u, 0x0004003bu, + 0x00000007u, 0x00000285u, 0x00000007u, 0x0004003bu, 0x0000000du, 0x000002bcu, 0x00000007u, 0x0004003bu, + 0x00000007u, 0x000002bdu, 0x00000007u, 0x00050041u, 0x0000017du, 0x0000017eu, 0x0000017cu, 0x0000003bu, + 0x0004003du, 0x00000006u, 0x0000017fu, 0x0000017eu, 0x0003003eu, 0x00000179u, 0x0000017fu, 0x00050041u, + 0x0000017du, 0x00000182u, 0x00000181u, 0x0000003bu, 0x0004003du, 0x00000006u, 0x00000183u, 0x00000182u, + 0x0003003eu, 0x00000180u, 0x00000183u, 0x0004003du, 0x00000006u, 0x00000185u, 0x00000179u, 0x00050041u, + 0x00000189u, 0x0000018au, 0x00000188u, 0x00000085u, 0x0004003du, 0x00000006u, 0x0000018bu, 0x0000018au, + 0x00050084u, 0x00000006u, 0x0000018cu, 0x00000185u, 0x0000018bu, 0x0003003eu, 0x00000184u, 0x0000018cu, + 0x0003003eu, 0x0000018du, 0x0000018eu, 0x0004003du, 0x00000006u, 0x00000190u, 0x00000180u, 0x0003003eu, + 0x0000018fu, 0x00000190u, 0x000200f9u, 0x00000191u, 0x000200f8u, 0x00000191u, 0x000400f6u, 0x00000193u, + 0x00000194u, 0x00000000u, 0x000200f9u, 0x00000195u, 0x000200f8u, 0x00000195u, 0x0004003du, 0x00000006u, + 0x00000196u, 0x0000018fu, 0x00050041u, 0x00000189u, 0x00000197u, 0x00000188u, 0x00000085u, 0x0004003du, + 0x00000006u, 0x00000198u, 0x00000197u, 0x000500b0u, 0x00000031u, 0x00000199u, 0x00000196u, 0x00000198u, + 0x000400fau, 0x00000199u, 0x00000192u, 0x00000193u, 0x000200f8u, 0x00000192u, 0x00050041u, 0x00000189u, + 0x0000019cu, 0x00000188u, 0x0000019bu, 0x0004003du, 0x00000006u, 0x0000019du, 0x0000019cu, 0x000500aau, + 0x00000031u, 0x0000019eu, 0x0000019du, 0x0000003bu, 0x000300f7u, 0x000001a1u, 0x00000000u, 0x000400fau, + 0x0000019eu, 0x000001a0u, 0x000001b2u, 0x000200f8u, 0x000001a0u, 0x00050041u, 0x00000189u, 0x000001a7u, + 0x00000188u, 0x000001a6u, 0x0004003du, 0x00000006u, 0x000001a8u, 0x000001a7u, 0x000500c2u, 0x00000006u, + 0x000001a9u, 0x000001a8u, 0x0000019bu, 0x0004003du, 0x00000006u, 0x000001aau, 0x00000184u, 0x0004003du, + 0x00000006u, 0x000001abu, 0x0000018fu, 0x00050080u, 0x00000006u, 0x000001acu, 0x000001aau, 0x000001abu, + 0x00050080u, 0x00000006u, 0x000001adu, 0x000001a9u, 0x000001acu, 0x00060041u, 0x000001aeu, 0x000001afu, + 0x000001a5u, 0x000000d8u, 0x000001adu, 0x0004003du, 0x00000006u, 0x000001b0u, 0x000001afu, 0x0004007cu, + 0x00000008u, 0x000001b1u, 0x000001b0u, 0x0003003eu, 0x0000019fu, 0x000001b1u, 0x000200f9u, 0x000001a1u, + 0x000200f8u, 0x000001b2u, 0x00050041u, 0x00000189u, 0x000001b8u, 0x00000188u, 0x000001a6u, 0x0004003du, + 0x00000006u, 0x000001b9u, 0x000001b8u, 0x000500c2u, 0x00000006u, 0x000001bau, 0x000001b9u, 0x00000085u, + 0x0004003du, 0x00000006u, 0x000001bbu, 0x00000184u, 0x0004003du, 0x00000006u, 0x000001bcu, 0x0000018fu, + 0x00050080u, 0x00000006u, 0x000001bdu, 0x000001bbu, 0x000001bcu, 0x00050080u, 0x00000006u, 0x000001beu, + 0x000001bau, 0x000001bdu, 0x00060041u, 0x000001bfu, 0x000001c0u, 0x000001b7u, 0x000000d8u, 0x000001beu, + 0x0004003du, 0x000001b3u, 0x000001c1u, 0x000001c0u, 0x00040071u, 0x00000006u, 0x000001c2u, 0x000001c1u, + 0x0003003eu, 0x000001c3u, 0x000001c2u, 0x00050041u, 0x00000189u, 0x000001c5u, 0x00000188u, 0x0000019bu, + 0x0004003du, 0x00000006u, 0x000001c6u, 0x000001c5u, 0x0003003eu, 0x000001c4u, 0x000001c6u, 0x00060039u, + 0x00000008u, 0x000001c7u, 0x0000001bu, 0x000001c3u, 0x000001c4u, 0x0003003eu, 0x0000019fu, 0x000001c7u, + 0x000200f9u, 0x000001a1u, 0x000200f8u, 0x000001a1u, 0x0004003du, 0x00000008u, 0x000001c8u, 0x0000019fu, + 0x0003003eu, 0x0000019au, 0x000001c8u, 0x0004003du, 0x00000008u, 0x000001c9u, 0x0000019au, 0x0004003du, + 0x00000008u, 0x000001cau, 0x0000019au, 0x00050085u, 0x00000008u, 0x000001cbu, 0x000001c9u, 0x000001cau, + 0x0004003du, 0x00000008u, 0x000001ccu, 0x0000018du, 0x00050081u, 0x00000008u, 0x000001cdu, 0x000001ccu, + 0x000001cbu, 0x0003003eu, 0x0000018du, 0x000001cdu, 0x000200f9u, 0x00000194u, 0x000200f8u, 0x00000194u, + 0x0004003du, 0x00000006u, 0x000001ceu, 0x0000018fu, 0x00050080u, 0x00000006u, 0x000001cfu, 0x000001ceu, + 0x00000154u, 0x0003003eu, 0x0000018fu, 0x000001cfu, 0x000200f9u, 0x00000191u, 0x000200f8u, 0x00000193u, + 0x0004003du, 0x00000006u, 0x000001d2u, 0x00000180u, 0x0003003eu, 0x000001d1u, 0x000001d2u, 0x0004003du, + 0x00000008u, 0x000001d4u, 0x0000018du, 0x0003003eu, 0x000001d3u, 0x000001d4u, 0x00060039u, 0x00000008u, + 0x000001d5u, 0x00000025u, 0x000001d1u, 0x000001d3u, 0x0003003eu, 0x000001d0u, 0x000001d5u, 0x0004003du, + 0x00000008u, 0x000001d8u, 0x000001d0u, 0x00050041u, 0x00000189u, 0x000001d9u, 0x00000188u, 0x00000085u, + 0x0004003du, 0x00000006u, 0x000001dau, 0x000001d9u, 0x00040070u, 0x00000008u, 0x000001dbu, 0x000001dau, + 0x00050088u, 0x00000008u, 0x000001dcu, 0x000001d8u, 0x000001dbu, 0x00050041u, 0x000001ddu, 0x000001deu, + 0x00000188u, 0x0000006bu, 0x0004003du, 0x00000008u, 0x000001dfu, 0x000001deu, 0x00050081u, 0x00000008u, + 0x000001e0u, 0x000001dcu, 0x000001dfu, 0x0006000cu, 0x00000008u, 0x000001e1u, 0x00000001u, 0x0000001fu, + 0x000001e0u, 0x00050088u, 0x00000008u, 0x000001e2u, 0x000001d7u, 0x000001e1u, 0x0003003eu, 0x000001d6u, + 0x000001e2u, 0x0004003du, 0x00000006u, 0x000001e4u, 0x00000179u, 0x00050041u, 0x00000189u, 0x000001e6u, + 0x00000188u, 0x000001e5u, 0x0004003du, 0x00000006u, 0x000001e7u, 0x000001e6u, 0x00050086u, 0x00000006u, + 0x000001e8u, 0x000001e4u, 0x000001e7u, 0x00050041u, 0x00000189u, 0x000001eau, 0x00000188u, 0x000001e9u, + 0x0004003du, 0x00000006u, 0x000001ebu, 0x000001eau, 0x00050084u, 0x00000006u, 0x000001ecu, 0x000001e8u, + 0x000001ebu, 0x0004003du, 0x00000006u, 0x000001edu, 0x00000179u, 0x00050041u, 0x00000189u, 0x000001eeu, + 0x00000188u, 0x000001e5u, 0x0004003du, 0x00000006u, 0x000001efu, 0x000001eeu, 0x00050089u, 0x00000006u, + 0x000001f0u, 0x000001edu, 0x000001efu, 0x00050041u, 0x00000189u, 0x000001f1u, 0x00000188u, 0x00000085u, + 0x0004003du, 0x00000006u, 0x000001f2u, 0x000001f1u, 0x00050084u, 0x00000006u, 0x000001f3u, 0x000001f0u, + 0x000001f2u, 0x00050080u, 0x00000006u, 0x000001f4u, 0x000001ecu, 0x000001f3u, 0x0003003eu, 0x000001e3u, + 0x000001f4u, 0x0004003du, 0x00000006u, 0x000001f6u, 0x00000180u, 0x0003003eu, 0x000001f5u, 0x000001f6u, + 0x000200f9u, 0x000001f7u, 0x000200f8u, 0x000001f7u, 0x000400f6u, 0x000001f9u, 0x000001fau, 0x00000000u, + 0x000200f9u, 0x000001fbu, 0x000200f8u, 0x000001fbu, 0x0004003du, 0x00000006u, 0x000001fcu, 0x000001f5u, + 0x00050041u, 0x00000189u, 0x000001fdu, 0x00000188u, 0x00000085u, 0x0004003du, 0x00000006u, 0x000001feu, + 0x000001fdu, 0x000500b0u, 0x00000031u, 0x000001ffu, 0x000001fcu, 0x000001feu, 0x000400fau, 0x000001ffu, + 0x000001f8u, 0x000001f9u, 0x000200f8u, 0x000001f8u, 0x00050041u, 0x00000189u, 0x00000202u, 0x00000188u, + 0x00000201u, 0x0004003du, 0x00000006u, 0x00000203u, 0x00000202u, 0x000500aau, 0x00000031u, 0x00000204u, + 0x00000203u, 0x0000003bu, 0x000300f7u, 0x00000207u, 0x00000000u, 0x000400fau, 0x00000204u, 0x00000206u, + 0x00000216u, 0x000200f8u, 0x00000206u, 0x00050041u, 0x00000189u, 0x0000020cu, 0x00000188u, 0x0000005cu, + 0x0004003du, 0x00000006u, 0x0000020du, 0x0000020cu, 0x000500c2u, 0x00000006u, 0x0000020eu, 0x0000020du, + 0x0000019bu, 0x0004003du, 0x00000006u, 0x0000020fu, 0x000001e3u, 0x0004003du, 0x00000006u, 0x00000210u, + 0x000001f5u, 0x00050080u, 0x00000006u, 0x00000211u, 0x0000020fu, 0x00000210u, 0x00050080u, 0x00000006u, + 0x00000212u, 0x0000020eu, 0x00000211u, 0x00060041u, 0x000001aeu, 0x00000213u, 0x0000020bu, 0x000000d8u, + 0x00000212u, 0x0004003du, 0x00000006u, 0x00000214u, 0x00000213u, 0x0004007cu, 0x00000008u, 0x00000215u, + 0x00000214u, 0x0003003eu, 0x00000205u, 0x00000215u, 0x000200f9u, 0x00000207u, 0x000200f8u, 0x00000216u, + 0x00050041u, 0x00000189u, 0x0000021bu, 0x00000188u, 0x0000005cu, 0x0004003du, 0x00000006u, 0x0000021cu, + 0x0000021bu, 0x000500c2u, 0x00000006u, 0x0000021du, 0x0000021cu, 0x00000085u, 0x0004003du, 0x00000006u, + 0x0000021eu, 0x000001e3u, 0x0004003du, 0x00000006u, 0x0000021fu, 0x000001f5u, 0x00050080u, 0x00000006u, + 0x00000220u, 0x0000021eu, 0x0000021fu, 0x00050080u, 0x00000006u, 0x00000221u, 0x0000021du, 0x00000220u, + 0x00060041u, 0x000001bfu, 0x00000222u, 0x0000021au, 0x000000d8u, 0x00000221u, 0x0004003du, 0x000001b3u, + 0x00000223u, 0x00000222u, 0x00040071u, 0x00000006u, 0x00000224u, 0x00000223u, 0x0003003eu, 0x00000225u, + 0x00000224u, 0x00050041u, 0x00000189u, 0x00000227u, 0x00000188u, 0x00000201u, 0x0004003du, 0x00000006u, + 0x00000228u, 0x00000227u, 0x0003003eu, 0x00000226u, 0x00000228u, 0x00060039u, 0x00000008u, 0x00000229u, + 0x0000001bu, 0x00000225u, 0x00000226u, 0x0003003eu, 0x00000205u, 0x00000229u, 0x000200f9u, 0x00000207u, + 0x000200f8u, 0x00000207u, 0x0004003du, 0x00000008u, 0x0000022au, 0x00000205u, 0x0003003eu, 0x00000200u, + 0x0000022au, 0x00050041u, 0x00000189u, 0x0000022du, 0x00000188u, 0x0000022cu, 0x0004003du, 0x00000006u, + 0x0000022eu, 0x0000022du, 0x000500abu, 0x00000031u, 0x0000022fu, 0x0000022eu, 0x0000003bu, 0x000300f7u, + 0x00000232u, 0x00000000u, 0x000400fau, 0x0000022fu, 0x00000231u, 0x00000238u, 0x000200f8u, 0x00000231u, + 0x0004003du, 0x00000008u, 0x00000233u, 0x00000200u, 0x0004007fu, 0x00000008u, 0x00000234u, 0x00000233u, + 0x0006000cu, 0x00000008u, 0x00000235u, 0x00000001u, 0x0000001bu, 0x00000234u, 0x00050081u, 0x00000008u, + 0x00000236u, 0x000001d7u, 0x00000235u, 0x00050088u, 0x00000008u, 0x00000237u, 0x000001d7u, 0x00000236u, + 0x0003003eu, 0x00000230u, 0x00000237u, 0x000200f9u, 0x00000232u, 0x000200f8u, 0x00000238u, 0x0004003du, + 0x00000008u, 0x00000239u, 0x00000200u, 0x0004003du, 0x00000008u, 0x0000023au, 0x00000200u, 0x0004007fu, + 0x00000008u, 0x0000023bu, 0x0000023au, 0x0006000cu, 0x00000008u, 0x0000023cu, 0x00000001u, 0x0000001bu, + 0x0000023bu, 0x00050081u, 0x00000008u, 0x0000023du, 0x000001d7u, 0x0000023cu, 0x00050088u, 0x00000008u, + 0x0000023eu, 0x00000239u, 0x0000023du, 0x0003003eu, 0x00000230u, 0x0000023eu, 0x000200f9u, 0x00000232u, + 0x000200f8u, 0x00000232u, 0x0004003du, 0x00000008u, 0x0000023fu, 0x00000230u, 0x0003003eu, 0x0000022bu, + 0x0000023fu, 0x00050041u, 0x00000189u, 0x00000241u, 0x00000188u, 0x0000019bu, 0x0004003du, 0x00000006u, + 0x00000242u, 0x00000241u, 0x000500aau, 0x00000031u, 0x00000243u, 0x00000242u, 0x0000003bu, 0x000300f7u, + 0x00000246u, 0x00000000u, 0x000400fau, 0x00000243u, 0x00000245u, 0x00000251u, 0x000200f8u, 0x00000245u, + 0x00050041u, 0x00000189u, 0x00000247u, 0x00000188u, 0x000001a6u, 0x0004003du, 0x00000006u, 0x00000248u, + 0x00000247u, 0x000500c2u, 0x00000006u, 0x00000249u, 0x00000248u, 0x0000019bu, 0x0004003du, 0x00000006u, + 0x0000024au, 0x00000184u, 0x0004003du, 0x00000006u, 0x0000024bu, 0x000001f5u, 0x00050080u, 0x00000006u, + 0x0000024cu, 0x0000024au, 0x0000024bu, 0x00050080u, 0x00000006u, 0x0000024du, 0x00000249u, 0x0000024cu, + 0x00060041u, 0x000001aeu, 0x0000024eu, 0x000001a5u, 0x000000d8u, 0x0000024du, 0x0004003du, 0x00000006u, + 0x0000024fu, 0x0000024eu, 0x0004007cu, 0x00000008u, 0x00000250u, 0x0000024fu, 0x0003003eu, 0x00000244u, + 0x00000250u, 0x000200f9u, 0x00000246u, 0x000200f8u, 0x00000251u, 0x00050041u, 0x00000189u, 0x00000252u, + 0x00000188u, 0x000001a6u, 0x0004003du, 0x00000006u, 0x00000253u, 0x00000252u, 0x000500c2u, 0x00000006u, + 0x00000254u, 0x00000253u, 0x00000085u, 0x0004003du, 0x00000006u, 0x00000255u, 0x00000184u, 0x0004003du, + 0x00000006u, 0x00000256u, 0x000001f5u, 0x00050080u, 0x00000006u, 0x00000257u, 0x00000255u, 0x00000256u, + 0x00050080u, 0x00000006u, 0x00000258u, 0x00000254u, 0x00000257u, 0x00060041u, 0x000001bfu, 0x00000259u, + 0x000001b7u, 0x000000d8u, 0x00000258u, 0x0004003du, 0x000001b3u, 0x0000025au, 0x00000259u, 0x00040071u, + 0x00000006u, 0x0000025bu, 0x0000025au, 0x0003003eu, 0x0000025cu, 0x0000025bu, 0x00050041u, 0x00000189u, + 0x0000025eu, 0x00000188u, 0x0000019bu, 0x0004003du, 0x00000006u, 0x0000025fu, 0x0000025eu, 0x0003003eu, + 0x0000025du, 0x0000025fu, 0x00060039u, 0x00000008u, 0x00000260u, 0x0000001bu, 0x0000025cu, 0x0000025du, + 0x0003003eu, 0x00000244u, 0x00000260u, 0x000200f9u, 0x00000246u, 0x000200f8u, 0x00000246u, 0x0004003du, + 0x00000008u, 0x00000261u, 0x00000244u, 0x0003003eu, 0x00000240u, 0x00000261u, 0x00050041u, 0x00000189u, + 0x00000264u, 0x00000188u, 0x00000263u, 0x0004003du, 0x00000006u, 0x00000265u, 0x00000264u, 0x000500aau, + 0x00000031u, 0x00000266u, 0x00000265u, 0x0000003bu, 0x000300f7u, 0x00000269u, 0x00000000u, 0x000400fau, + 0x00000266u, 0x00000268u, 0x00000277u, 0x000200f8u, 0x00000268u, 0x00050041u, 0x00000189u, 0x0000026fu, + 0x00000188u, 0x0000026eu, 0x0004003du, 0x00000006u, 0x00000270u, 0x0000026fu, 0x000500c2u, 0x00000006u, + 0x00000271u, 0x00000270u, 0x0000019bu, 0x0004003du, 0x00000006u, 0x00000272u, 0x000001f5u, 0x00050080u, + 0x00000006u, 0x00000273u, 0x00000271u, 0x00000272u, 0x00060041u, 0x000001aeu, 0x00000274u, 0x0000026du, + 0x000000d8u, 0x00000273u, 0x0004003du, 0x00000006u, 0x00000275u, 0x00000274u, 0x0004007cu, 0x00000008u, + 0x00000276u, 0x00000275u, 0x0003003eu, 0x00000267u, 0x00000276u, 0x000200f9u, 0x00000269u, 0x000200f8u, + 0x00000277u, 0x00050041u, 0x00000189u, 0x0000027cu, 0x00000188u, 0x0000026eu, 0x0004003du, 0x00000006u, + 0x0000027du, 0x0000027cu, 0x000500c2u, 0x00000006u, 0x0000027eu, 0x0000027du, 0x00000085u, 0x0004003du, + 0x00000006u, 0x0000027fu, 0x000001f5u, 0x00050080u, 0x00000006u, 0x00000280u, 0x0000027eu, 0x0000027fu, + 0x00060041u, 0x000001bfu, 0x00000281u, 0x0000027bu, 0x000000d8u, 0x00000280u, 0x0004003du, 0x000001b3u, + 0x00000282u, 0x00000281u, 0x00040071u, 0x00000006u, 0x00000283u, 0x00000282u, 0x0003003eu, 0x00000284u, + 0x00000283u, 0x00050041u, 0x00000189u, 0x00000286u, 0x00000188u, 0x00000263u, 0x0004003du, 0x00000006u, + 0x00000287u, 0x00000286u, 0x0003003eu, 0x00000285u, 0x00000287u, 0x00060039u, 0x00000008u, 0x00000288u, + 0x0000001bu, 0x00000284u, 0x00000285u, 0x0003003eu, 0x00000267u, 0x00000288u, 0x000200f9u, 0x00000269u, + 0x000200f8u, 0x00000269u, 0x0004003du, 0x00000008u, 0x00000289u, 0x00000267u, 0x0003003eu, 0x00000262u, + 0x00000289u, 0x000200f9u, 0x0000028au, 0x000200f8u, 0x0000028au, 0x000400f6u, 0x0000028cu, 0x0000028du, + 0x00000000u, 0x000200f9u, 0x0000028bu, 0x000200f8u, 0x0000028bu, 0x00050041u, 0x00000189u, 0x0000028fu, + 0x00000188u, 0x0000028eu, 0x0004003du, 0x00000006u, 0x00000290u, 0x0000028fu, 0x000500aau, 0x00000031u, + 0x00000291u, 0x00000290u, 0x0000003bu, 0x000300f7u, 0x00000293u, 0x00000000u, 0x000400fau, 0x00000291u, + 0x00000292u, 0x000002a9u, 0x000200f8u, 0x00000292u, 0x00050041u, 0x00000189u, 0x00000299u, 0x00000188u, + 0x00000298u, 0x0004003du, 0x00000006u, 0x0000029au, 0x00000299u, 0x000500c2u, 0x00000006u, 0x0000029bu, + 0x0000029au, 0x0000019bu, 0x0004003du, 0x00000006u, 0x0000029cu, 0x00000184u, 0x0004003du, 0x00000006u, + 0x0000029du, 0x000001f5u, 0x00050080u, 0x00000006u, 0x0000029eu, 0x0000029cu, 0x0000029du, 0x00050080u, + 0x00000006u, 0x0000029fu, 0x0000029bu, 0x0000029eu, 0x0004003du, 0x00000008u, 0x000002a0u, 0x00000240u, + 0x0004003du, 0x00000008u, 0x000002a1u, 0x000001d6u, 0x00050085u, 0x00000008u, 0x000002a2u, 0x000002a0u, + 0x000002a1u, 0x0004003du, 0x00000008u, 0x000002a3u, 0x00000262u, 0x00050085u, 0x00000008u, 0x000002a4u, + 0x000002a2u, 0x000002a3u, 0x0004003du, 0x00000008u, 0x000002a5u, 0x0000022bu, 0x00050085u, 0x00000008u, + 0x000002a6u, 0x000002a4u, 0x000002a5u, 0x0004007cu, 0x00000006u, 0x000002a7u, 0x000002a6u, 0x00060041u, + 0x000001aeu, 0x000002a8u, 0x00000297u, 0x000000d8u, 0x0000029fu, 0x0003003eu, 0x000002a8u, 0x000002a7u, + 0x000200f9u, 0x00000293u, 0x000200f8u, 0x000002a9u, 0x00050041u, 0x00000189u, 0x000002aeu, 0x00000188u, + 0x00000298u, 0x0004003du, 0x00000006u, 0x000002afu, 0x000002aeu, 0x000500c2u, 0x00000006u, 0x000002b0u, + 0x000002afu, 0x00000085u, 0x0004003du, 0x00000006u, 0x000002b1u, 0x00000184u, 0x0004003du, 0x00000006u, + 0x000002b2u, 0x000001f5u, 0x00050080u, 0x00000006u, 0x000002b3u, 0x000002b1u, 0x000002b2u, 0x00050080u, + 0x00000006u, 0x000002b4u, 0x000002b0u, 0x000002b3u, 0x0004003du, 0x00000008u, 0x000002b5u, 0x00000240u, + 0x0004003du, 0x00000008u, 0x000002b6u, 0x000001d6u, 0x00050085u, 0x00000008u, 0x000002b7u, 0x000002b5u, + 0x000002b6u, 0x0004003du, 0x00000008u, 0x000002b8u, 0x00000262u, 0x00050085u, 0x00000008u, 0x000002b9u, + 0x000002b7u, 0x000002b8u, 0x0004003du, 0x00000008u, 0x000002bau, 0x0000022bu, 0x00050085u, 0x00000008u, + 0x000002bbu, 0x000002b9u, 0x000002bau, 0x0003003eu, 0x000002bcu, 0x000002bbu, 0x00050041u, 0x00000189u, + 0x000002beu, 0x00000188u, 0x0000028eu, 0x0004003du, 0x00000006u, 0x000002bfu, 0x000002beu, 0x0003003eu, + 0x000002bdu, 0x000002bfu, 0x00060039u, 0x00000006u, 0x000002c0u, 0x00000020u, 0x000002bcu, 0x000002bdu, + 0x00040071u, 0x000001b3u, 0x000002c1u, 0x000002c0u, 0x00060041u, 0x000001bfu, 0x000002c2u, 0x000002adu, + 0x000000d8u, 0x000002b4u, 0x0003003eu, 0x000002c2u, 0x000002c1u, 0x000200f9u, 0x00000293u, 0x000200f8u, + 0x00000293u, 0x000200f9u, 0x0000028du, 0x000200f8u, 0x0000028du, 0x000400fau, 0x000002c3u, 0x0000028au, + 0x0000028cu, 0x000200f8u, 0x0000028cu, 0x000200f9u, 0x000001fau, 0x000200f8u, 0x000001fau, 0x0004003du, + 0x00000006u, 0x000002c4u, 0x000001f5u, 0x00050080u, 0x00000006u, 0x000002c5u, 0x000002c4u, 0x00000154u, + 0x0003003eu, 0x000001f5u, 0x000002c5u, 0x000200f9u, 0x000001f7u, 0x000200f8u, 0x000001f9u, 0x000100fdu, + 0x00010038u, 0x00050036u, 0x00000008u, 0x0000000bu, 0x00000000u, 0x00000009u, 0x00030037u, 0x00000007u, + 0x0000000au, 0x000200f8u, 0x0000000cu, 0x0004003du, 0x00000006u, 0x00000027u, 0x0000000au, 0x000500c4u, + 0x00000006u, 0x0000002au, 0x00000027u, 0x00000029u, 0x0004007cu, 0x00000008u, 0x0000002bu, 0x0000002au, + 0x000200feu, 0x0000002bu, 0x00010038u, 0x00050036u, 0x00000006u, 0x00000010u, 0x00000000u, 0x0000000eu, + 0x00030037u, 0x0000000du, 0x0000000fu, 0x000200f8u, 0x00000011u, 0x0004003bu, 0x00000007u, 0x0000002eu, + 0x00000007u, 0x0004003bu, 0x00000007u, 0x00000047u, 0x00000007u, 0x0004003du, 0x00000008u, 0x0000002fu, + 0x0000000fu, 0x0004007cu, 0x00000006u, 0x00000030u, 0x0000002fu, 0x0003003eu, 0x0000002eu, 0x00000030u, + 0x0004003du, 0x00000006u, 0x00000032u, 0x0000002eu, 0x000500c7u, 0x00000006u, 0x00000034u, 0x00000032u, + 0x00000033u, 0x000500aau, 0x00000031u, 0x00000035u, 0x00000034u, 0x00000033u, 0x000300f7u, 0x00000037u, + 0x00000000u, 0x000400fau, 0x00000035u, 0x00000036u, 0x00000037u, 0x000200f8u, 0x00000036u, 0x0004003du, + 0x00000006u, 0x00000038u, 0x0000002eu, 0x000500c7u, 0x00000006u, 0x0000003au, 0x00000038u, 0x00000039u, + 0x000500abu, 0x00000031u, 0x0000003cu, 0x0000003au, 0x0000003bu, 0x000200f9u, 0x00000037u, 0x000200f8u, + 0x00000037u, 0x000700f5u, 0x00000031u, 0x0000003du, 0x00000035u, 0x00000011u, 0x0000003cu, 0x00000036u, + 0x000300f7u, 0x0000003fu, 0x00000000u, 0x000400fau, 0x0000003du, 0x0000003eu, 0x0000003fu, 0x000200f8u, + 0x0000003eu, 0x0004003du, 0x00000006u, 0x00000040u, 0x0000002eu, 0x000500c2u, 0x00000006u, 0x00000041u, + 0x00000040u, 0x00000029u, 0x000500c5u, 0x00000006u, 0x00000043u, 0x00000041u, 0x00000042u, 0x000500c7u, + 0x00000006u, 0x00000045u, 0x00000043u, 0x00000044u, 0x000200feu, 0x00000045u, 0x000200f8u, 0x0000003fu, + 0x0004003du, 0x00000006u, 0x00000049u, 0x0000002eu, 0x000500c2u, 0x00000006u, 0x0000004au, 0x00000049u, + 0x00000029u, 0x000500c7u, 0x00000006u, 0x0000004cu, 0x0000004au, 0x0000004bu, 0x00050080u, 0x00000006u, + 0x0000004du, 0x00000048u, 0x0000004cu, 0x0003003eu, 0x00000047u, 0x0000004du, 0x0004003du, 0x00000006u, + 0x0000004eu, 0x0000002eu, 0x0004003du, 0x00000006u, 0x0000004fu, 0x00000047u, 0x00050080u, 0x00000006u, + 0x00000050u, 0x0000004eu, 0x0000004fu, 0x000500c2u, 0x00000006u, 0x00000051u, 0x00000050u, 0x00000029u, + 0x000500c7u, 0x00000006u, 0x00000052u, 0x00000051u, 0x00000044u, 0x000200feu, 0x00000052u, 0x00010038u, + 0x00050036u, 0x00000008u, 0x00000013u, 0x00000000u, 0x00000009u, 0x00030037u, 0x00000007u, 0x00000012u, + 0x000200f8u, 0x00000014u, 0x0004003bu, 0x00000007u, 0x00000055u, 0x00000007u, 0x0004003bu, 0x00000007u, + 0x0000005au, 0x00000007u, 0x0004003bu, 0x00000007u, 0x00000060u, 0x00000007u, 0x0004003bu, 0x00000007u, + 0x0000007bu, 0x00000007u, 0x0004003du, 0x00000006u, 0x00000056u, 0x00000012u, 0x000500c7u, 0x00000006u, + 0x00000058u, 0x00000056u, 0x00000057u, 0x000500c4u, 0x00000006u, 0x00000059u, 0x00000058u, 0x00000029u, + 0x0003003eu, 0x00000055u, 0x00000059u, 0x0004003du, 0x00000006u, 0x0000005bu, 0x00000012u, 0x000500c2u, + 0x00000006u, 0x0000005du, 0x0000005bu, 0x0000005cu, 0x000500c7u, 0x00000006u, 0x0000005fu, 0x0000005du, + 0x0000005eu, 0x0003003eu, 0x0000005au, 0x0000005fu, 0x0004003du, 0x00000006u, 0x00000061u, 0x00000012u, + 0x000500c7u, 0x00000006u, 0x00000063u, 0x00000061u, 0x00000062u, 0x0003003eu, 0x00000060u, 0x00000063u, + 0x0004003du, 0x00000006u, 0x00000064u, 0x0000005au, 0x000500aau, 0x00000031u, 0x00000065u, 0x00000064u, + 0x0000005eu, 0x000300f7u, 0x00000067u, 0x00000000u, 0x000400fau, 0x00000065u, 0x00000066u, 0x00000067u, + 0x000200f8u, 0x00000066u, 0x0004003du, 0x00000006u, 0x00000068u, 0x00000055u, 0x000500c5u, 0x00000006u, + 0x00000069u, 0x00000068u, 0x00000033u, 0x0004003du, 0x00000006u, 0x0000006au, 0x00000060u, 0x000500c4u, + 0x00000006u, 0x0000006cu, 0x0000006au, 0x0000006bu, 0x000500c5u, 0x00000006u, 0x0000006du, 0x00000069u, + 0x0000006cu, 0x0004007cu, 0x00000008u, 0x0000006eu, 0x0000006du, 0x000200feu, 0x0000006eu, 0x000200f8u, + 0x00000067u, 0x0004003du, 0x00000006u, 0x00000070u, 0x0000005au, 0x000500aau, 0x00000031u, 0x00000071u, + 0x00000070u, 0x0000003bu, 0x000300f7u, 0x00000073u, 0x00000000u, 0x000400fau, 0x00000071u, 0x00000072u, + 0x00000073u, 0x000200f8u, 0x00000072u, 0x0004003du, 0x00000006u, 0x00000074u, 0x00000060u, 0x000500aau, + 0x00000031u, 0x00000075u, 0x00000074u, 0x0000003bu, 0x000300f7u, 0x00000077u, 0x00000000u, 0x000400fau, + 0x00000075u, 0x00000076u, 0x00000077u, 0x000200f8u, 0x00000076u, 0x0004003du, 0x00000006u, 0x00000078u, + 0x00000055u, 0x0004007cu, 0x00000008u, 0x00000079u, 0x00000078u, 0x000200feu, 0x00000079u, 0x000200f8u, + 0x00000077u, 0x0003003eu, 0x0000007bu, 0x0000003bu, 0x000200f9u, 0x0000007cu, 0x000200f8u, 0x0000007cu, + 0x000400f6u, 0x0000007eu, 0x0000007fu, 0x00000000u, 0x000200f9u, 0x00000080u, 0x000200f8u, 0x00000080u, + 0x0004003du, 0x00000006u, 0x00000081u, 0x00000060u, 0x000500c7u, 0x00000006u, 0x00000083u, 0x00000081u, + 0x00000082u, 0x000500aau, 0x00000031u, 0x00000084u, 0x00000083u, 0x0000003bu, 0x000400fau, 0x00000084u, + 0x0000007du, 0x0000007eu, 0x000200f8u, 0x0000007du, 0x0004003du, 0x00000006u, 0x00000086u, 0x00000060u, + 0x000500c4u, 0x00000006u, 0x00000087u, 0x00000086u, 0x00000085u, 0x0003003eu, 0x00000060u, 0x00000087u, + 0x0004003du, 0x00000006u, 0x00000088u, 0x0000007bu, 0x00050080u, 0x00000006u, 0x00000089u, 0x00000088u, + 0x0000004bu, 0x0003003eu, 0x0000007bu, 0x00000089u, 0x000200f9u, 0x0000007fu, 0x000200f8u, 0x0000007fu, + 0x000200f9u, 0x0000007cu, 0x000200f8u, 0x0000007eu, 0x0004003du, 0x00000006u, 0x0000008au, 0x00000060u, + 0x000500c7u, 0x00000006u, 0x0000008bu, 0x0000008au, 0x00000062u, 0x0003003eu, 0x00000060u, 0x0000008bu, + 0x0004003du, 0x00000006u, 0x0000008cu, 0x00000055u, 0x0004003du, 0x00000006u, 0x0000008eu, 0x0000007bu, + 0x00050082u, 0x00000006u, 0x0000008fu, 0x0000008du, 0x0000008eu, 0x000500c4u, 0x00000006u, 0x00000091u, + 0x0000008fu, 0x00000090u, 0x000500c5u, 0x00000006u, 0x00000092u, 0x0000008cu, 0x00000091u, 0x0004003du, + 0x00000006u, 0x00000093u, 0x00000060u, 0x000500c4u, 0x00000006u, 0x00000094u, 0x00000093u, 0x0000006bu, + 0x000500c5u, 0x00000006u, 0x00000095u, 0x00000092u, 0x00000094u, 0x0004007cu, 0x00000008u, 0x00000096u, + 0x00000095u, 0x000200feu, 0x00000096u, 0x000200f8u, 0x00000073u, 0x0004003du, 0x00000006u, 0x00000098u, + 0x00000055u, 0x0004003du, 0x00000006u, 0x00000099u, 0x0000005au, 0x00050080u, 0x00000006u, 0x0000009bu, + 0x00000099u, 0x0000009au, 0x000500c4u, 0x00000006u, 0x0000009cu, 0x0000009bu, 0x00000090u, 0x000500c5u, + 0x00000006u, 0x0000009du, 0x00000098u, 0x0000009cu, 0x0004003du, 0x00000006u, 0x0000009eu, 0x00000060u, + 0x000500c4u, 0x00000006u, 0x0000009fu, 0x0000009eu, 0x0000006bu, 0x000500c5u, 0x00000006u, 0x000000a0u, + 0x0000009du, 0x0000009fu, 0x0004007cu, 0x00000008u, 0x000000a1u, 0x000000a0u, 0x000200feu, 0x000000a1u, + 0x00010038u, 0x00050036u, 0x00000006u, 0x00000016u, 0x00000000u, 0x0000000eu, 0x00030037u, 0x0000000du, + 0x00000015u, 0x000200f8u, 0x00000017u, 0x0004003bu, 0x00000007u, 0x000000a4u, 0x00000007u, 0x0004003bu, + 0x00000007u, 0x000000a7u, 0x00000007u, 0x0004003bu, 0x00000007u, 0x000000abu, 0x00000007u, 0x0004003bu, + 0x000000b0u, 0x000000b1u, 0x00000007u, 0x0004003bu, 0x00000007u, 0x000000b8u, 0x00000007u, 0x0004003bu, + 0x00000007u, 0x000000c4u, 0x00000007u, 0x0004003bu, 0x00000007u, 0x000000e6u, 0x00000007u, 0x0004003bu, + 0x00000007u, 0x000000ebu, 0x00000007u, 0x0004003bu, 0x00000007u, 0x000000efu, 0x00000007u, 0x0004003bu, + 0x00000007u, 0x000000f5u, 0x00000007u, 0x0004003bu, 0x00000007u, 0x00000111u, 0x00000007u, 0x0004003bu, + 0x00000007u, 0x00000118u, 0x00000007u, 0x0004003du, 0x00000008u, 0x000000a5u, 0x00000015u, 0x0004007cu, + 0x00000006u, 0x000000a6u, 0x000000a5u, 0x0003003eu, 0x000000a4u, 0x000000a6u, 0x0004003du, 0x00000006u, + 0x000000a8u, 0x000000a4u, 0x000500c2u, 0x00000006u, 0x000000a9u, 0x000000a8u, 0x00000029u, 0x000500c7u, + 0x00000006u, 0x000000aau, 0x000000a9u, 0x00000057u, 0x0003003eu, 0x000000a7u, 0x000000aau, 0x0004003du, + 0x00000006u, 0x000000acu, 0x000000a4u, 0x000500c2u, 0x00000006u, 0x000000adu, 0x000000acu, 0x00000090u, + 0x000500c7u, 0x00000006u, 0x000000afu, 0x000000adu, 0x000000aeu, 0x0003003eu, 0x000000abu, 0x000000afu, + 0x0004003du, 0x00000006u, 0x000000b2u, 0x000000abu, 0x0004007cu, 0x00000028u, 0x000000b3u, 0x000000b2u, + 0x00050082u, 0x00000028u, 0x000000b5u, 0x000000b3u, 0x000000b4u, 0x00050080u, 0x00000028u, 0x000000b7u, + 0x000000b5u, 0x000000b6u, 0x0003003eu, 0x000000b1u, 0x000000b7u, 0x0004003du, 0x00000006u, 0x000000b9u, + 0x000000a4u, 0x000500c7u, 0x00000006u, 0x000000bau, 0x000000b9u, 0x00000039u, 0x0003003eu, 0x000000b8u, + 0x000000bau, 0x0004003du, 0x00000006u, 0x000000bbu, 0x000000abu, 0x000500aau, 0x00000031u, 0x000000bcu, + 0x000000bbu, 0x000000aeu, 0x000300f7u, 0x000000beu, 0x00000000u, 0x000400fau, 0x000000bcu, 0x000000bdu, + 0x000000beu, 0x000200f8u, 0x000000bdu, 0x0004003du, 0x00000006u, 0x000000bfu, 0x000000a7u, 0x000500c5u, + 0x00000006u, 0x000000c1u, 0x000000bfu, 0x000000c0u, 0x0004003du, 0x00000006u, 0x000000c2u, 0x000000b8u, + 0x000500abu, 0x00000031u, 0x000000c3u, 0x000000c2u, 0x0000003bu, 0x000300f7u, 0x000000c6u, 0x00000000u, + 0x000400fau, 0x000000c3u, 0x000000c5u, 0x000000cbu, 0x000200f8u, 0x000000c5u, 0x0004003du, 0x00000006u, + 0x000000c8u, 0x000000b8u, 0x000500c2u, 0x00000006u, 0x000000c9u, 0x000000c8u, 0x0000006bu, 0x000500c5u, + 0x00000006u, 0x000000cau, 0x000000c7u, 0x000000c9u, 0x0003003eu, 0x000000c4u, 0x000000cau, 0x000200f9u, + 0x000000c6u, 0x000200f8u, 0x000000cbu, 0x0003003eu, 0x000000c4u, 0x0000003bu, 0x000200f9u, 0x000000c6u, + 0x000200f8u, 0x000000c6u, 0x0004003du, 0x00000006u, 0x000000ccu, 0x000000c4u, 0x000500c5u, 0x00000006u, + 0x000000cdu, 0x000000c1u, 0x000000ccu, 0x000200feu, 0x000000cdu, 0x000200f8u, 0x000000beu, 0x0004003du, + 0x00000028u, 0x000000cfu, 0x000000b1u, 0x000500afu, 0x00000031u, 0x000000d1u, 0x000000cfu, 0x000000d0u, + 0x000300f7u, 0x000000d3u, 0x00000000u, 0x000400fau, 0x000000d1u, 0x000000d2u, 0x000000d3u, 0x000200f8u, + 0x000000d2u, 0x0004003du, 0x00000006u, 0x000000d4u, 0x000000a7u, 0x000500c5u, 0x00000006u, 0x000000d5u, + 0x000000d4u, 0x000000c0u, 0x000200feu, 0x000000d5u, 0x000200f8u, 0x000000d3u, 0x0004003du, 0x00000028u, + 0x000000d7u, 0x000000b1u, 0x000500b3u, 0x00000031u, 0x000000d9u, 0x000000d7u, 0x000000d8u, 0x000300f7u, + 0x000000dbu, 0x00000000u, 0x000400fau, 0x000000d9u, 0x000000dau, 0x000000dbu, 0x000200f8u, 0x000000dau, + 0x0004003du, 0x00000028u, 0x000000dcu, 0x000000b1u, 0x000500b1u, 0x00000031u, 0x000000deu, 0x000000dcu, + 0x000000ddu, 0x000300f7u, 0x000000e0u, 0x00000000u, 0x000400fau, 0x000000deu, 0x000000dfu, 0x000000e0u, + 0x000200f8u, 0x000000dfu, 0x0004003du, 0x00000006u, 0x000000e1u, 0x000000a7u, 0x000200feu, 0x000000e1u, + 0x000200f8u, 0x000000e0u, 0x0004003du, 0x00000006u, 0x000000e4u, 0x000000b8u, 0x000500c5u, 0x00000006u, + 0x000000e5u, 0x000000e4u, 0x000000e3u, 0x0003003eu, 0x000000b8u, 0x000000e5u, 0x0004003du, 0x00000028u, + 0x000000e8u, 0x000000b1u, 0x00050082u, 0x00000028u, 0x000000e9u, 0x000000e7u, 0x000000e8u, 0x0004007cu, + 0x00000006u, 0x000000eau, 0x000000e9u, 0x0003003eu, 0x000000e6u, 0x000000eau, 0x0004003du, 0x00000006u, + 0x000000ecu, 0x000000b8u, 0x0004003du, 0x00000006u, 0x000000edu, 0x000000e6u, 0x000500c2u, 0x00000006u, + 0x000000eeu, 0x000000ecu, 0x000000edu, 0x0003003eu, 0x000000ebu, 0x000000eeu, 0x0004003du, 0x00000006u, + 0x000000f0u, 0x000000b8u, 0x0004003du, 0x00000006u, 0x000000f1u, 0x000000e6u, 0x000500c4u, 0x00000006u, + 0x000000f2u, 0x0000004bu, 0x000000f1u, 0x00050082u, 0x00000006u, 0x000000f3u, 0x000000f2u, 0x0000004bu, + 0x000500c7u, 0x00000006u, 0x000000f4u, 0x000000f0u, 0x000000f3u, 0x0003003eu, 0x000000efu, 0x000000f4u, + 0x0004003du, 0x00000006u, 0x000000f6u, 0x000000e6u, 0x00050082u, 0x00000006u, 0x000000f7u, 0x000000f6u, + 0x0000004bu, 0x000500c4u, 0x00000006u, 0x000000f8u, 0x0000004bu, 0x000000f7u, 0x0003003eu, 0x000000f5u, + 0x000000f8u, 0x0004003du, 0x00000006u, 0x000000f9u, 0x000000efu, 0x0004003du, 0x00000006u, 0x000000fau, + 0x000000f5u, 0x000500acu, 0x00000031u, 0x000000fbu, 0x000000f9u, 0x000000fau, 0x000400a8u, 0x00000031u, + 0x000000fcu, 0x000000fbu, 0x000300f7u, 0x000000feu, 0x00000000u, 0x000400fau, 0x000000fcu, 0x000000fdu, + 0x000000feu, 0x000200f8u, 0x000000fdu, 0x0004003du, 0x00000006u, 0x000000ffu, 0x000000efu, 0x0004003du, + 0x00000006u, 0x00000100u, 0x000000f5u, 0x000500aau, 0x00000031u, 0x00000101u, 0x000000ffu, 0x00000100u, + 0x000300f7u, 0x00000103u, 0x00000000u, 0x000400fau, 0x00000101u, 0x00000102u, 0x00000103u, 0x000200f8u, + 0x00000102u, 0x0004003du, 0x00000006u, 0x00000104u, 0x000000ebu, 0x000500c7u, 0x00000006u, 0x00000105u, + 0x00000104u, 0x0000004bu, 0x000500abu, 0x00000031u, 0x00000106u, 0x00000105u, 0x0000003bu, 0x000200f9u, + 0x00000103u, 0x000200f8u, 0x00000103u, 0x000700f5u, 0x00000031u, 0x00000107u, 0x00000101u, 0x000000fdu, + 0x00000106u, 0x00000102u, 0x000200f9u, 0x000000feu, 0x000200f8u, 0x000000feu, 0x000700f5u, 0x00000031u, + 0x00000108u, 0x000000fbu, 0x000000e0u, 0x00000107u, 0x00000103u, 0x000300f7u, 0x0000010au, 0x00000000u, + 0x000400fau, 0x00000108u, 0x00000109u, 0x0000010au, 0x000200f8u, 0x00000109u, 0x0004003du, 0x00000006u, + 0x0000010bu, 0x000000ebu, 0x00050080u, 0x00000006u, 0x0000010cu, 0x0000010bu, 0x0000004bu, 0x0003003eu, + 0x000000ebu, 0x0000010cu, 0x000200f9u, 0x0000010au, 0x000200f8u, 0x0000010au, 0x0004003du, 0x00000006u, + 0x0000010du, 0x000000a7u, 0x0004003du, 0x00000006u, 0x0000010eu, 0x000000ebu, 0x000500c5u, 0x00000006u, + 0x0000010fu, 0x0000010du, 0x0000010eu, 0x000200feu, 0x0000010fu, 0x000200f8u, 0x000000dbu, 0x0004003du, + 0x00000028u, 0x00000112u, 0x000000b1u, 0x0004007cu, 0x00000006u, 0x00000113u, 0x00000112u, 0x000500c4u, + 0x00000006u, 0x00000114u, 0x00000113u, 0x0000005cu, 0x0004003du, 0x00000006u, 0x00000115u, 0x000000b8u, + 0x000500c2u, 0x00000006u, 0x00000116u, 0x00000115u, 0x0000006bu, 0x000500c5u, 0x00000006u, 0x00000117u, + 0x00000114u, 0x00000116u, 0x0003003eu, 0x00000111u, 0x00000117u, 0x0004003du, 0x00000006u, 0x00000119u, + 0x000000b8u, 0x000500c7u, 0x00000006u, 0x0000011bu, 0x00000119u, 0x0000011au, 0x0003003eu, 0x00000118u, + 0x0000011bu, 0x0004003du, 0x00000006u, 0x0000011cu, 0x00000118u, 0x000500acu, 0x00000031u, 0x0000011eu, + 0x0000011cu, 0x0000011du, 0x000400a8u, 0x00000031u, 0x0000011fu, 0x0000011eu, 0x000300f7u, 0x00000121u, + 0x00000000u, 0x000400fau, 0x0000011fu, 0x00000120u, 0x00000121u, 0x000200f8u, 0x00000120u, 0x0004003du, + 0x00000006u, 0x00000122u, 0x00000118u, 0x000500aau, 0x00000031u, 0x00000123u, 0x00000122u, 0x0000011du, + 0x000300f7u, 0x00000125u, 0x00000000u, 0x000400fau, 0x00000123u, 0x00000124u, 0x00000125u, 0x000200f8u, + 0x00000124u, 0x0004003du, 0x00000006u, 0x00000126u, 0x00000111u, 0x000500c7u, 0x00000006u, 0x00000127u, + 0x00000126u, 0x0000004bu, 0x000500abu, 0x00000031u, 0x00000128u, 0x00000127u, 0x0000003bu, 0x000200f9u, + 0x00000125u, 0x000200f8u, 0x00000125u, 0x000700f5u, 0x00000031u, 0x00000129u, 0x00000123u, 0x00000120u, + 0x00000128u, 0x00000124u, 0x000200f9u, 0x00000121u, 0x000200f8u, 0x00000121u, 0x000700f5u, 0x00000031u, + 0x0000012au, 0x0000011eu, 0x000000dbu, 0x00000129u, 0x00000125u, 0x000300f7u, 0x0000012cu, 0x00000000u, + 0x000400fau, 0x0000012au, 0x0000012bu, 0x0000012cu, 0x000200f8u, 0x0000012bu, 0x0004003du, 0x00000006u, + 0x0000012du, 0x00000111u, 0x00050080u, 0x00000006u, 0x0000012eu, 0x0000012du, 0x0000004bu, 0x0003003eu, + 0x00000111u, 0x0000012eu, 0x000200f9u, 0x0000012cu, 0x000200f8u, 0x0000012cu, 0x0004003du, 0x00000006u, + 0x0000012fu, 0x000000a7u, 0x0004003du, 0x00000006u, 0x00000130u, 0x00000111u, 0x000500c5u, 0x00000006u, + 0x00000131u, 0x0000012fu, 0x00000130u, 0x000200feu, 0x00000131u, 0x00010038u, 0x00050036u, 0x00000008u, + 0x0000001bu, 0x00000000u, 0x00000018u, 0x00030037u, 0x00000007u, 0x00000019u, 0x00030037u, 0x00000007u, + 0x0000001au, 0x000200f8u, 0x0000001cu, 0x0004003bu, 0x0000000du, 0x00000136u, 0x00000007u, 0x0004003bu, + 0x00000007u, 0x00000139u, 0x00000007u, 0x0004003bu, 0x00000007u, 0x0000013du, 0x00000007u, 0x0004003du, + 0x00000006u, 0x00000134u, 0x0000001au, 0x000500aau, 0x00000031u, 0x00000135u, 0x00000134u, 0x0000004bu, + 0x000300f7u, 0x00000138u, 0x00000000u, 0x000400fau, 0x00000135u, 0x00000137u, 0x0000013cu, 0x000200f8u, + 0x00000137u, 0x0004003du, 0x00000006u, 0x0000013au, 0x00000019u, 0x0003003eu, 0x00000139u, 0x0000013au, + 0x00050039u, 0x00000008u, 0x0000013bu, 0x00000013u, 0x00000139u, 0x0003003eu, 0x00000136u, 0x0000013bu, + 0x000200f9u, 0x00000138u, 0x000200f8u, 0x0000013cu, 0x0004003du, 0x00000006u, 0x0000013eu, 0x00000019u, + 0x0003003eu, 0x0000013du, 0x0000013eu, 0x00050039u, 0x00000008u, 0x0000013fu, 0x0000000bu, 0x0000013du, + 0x0003003eu, 0x00000136u, 0x0000013fu, 0x000200f9u, 0x00000138u, 0x000200f8u, 0x00000138u, 0x0004003du, + 0x00000008u, 0x00000140u, 0x00000136u, 0x000200feu, 0x00000140u, 0x00010038u, 0x00050036u, 0x00000006u, + 0x00000020u, 0x00000000u, 0x0000001du, 0x00030037u, 0x0000000du, 0x0000001eu, 0x00030037u, 0x00000007u, + 0x0000001fu, 0x000200f8u, 0x00000021u, 0x0004003bu, 0x00000007u, 0x00000145u, 0x00000007u, 0x0004003bu, + 0x0000000du, 0x00000148u, 0x00000007u, 0x0004003bu, 0x0000000du, 0x0000014cu, 0x00000007u, 0x0004003du, + 0x00000006u, 0x00000143u, 0x0000001fu, 0x000500aau, 0x00000031u, 0x00000144u, 0x00000143u, 0x0000004bu, + 0x000300f7u, 0x00000147u, 0x00000000u, 0x000400fau, 0x00000144u, 0x00000146u, 0x0000014bu, 0x000200f8u, + 0x00000146u, 0x0004003du, 0x00000008u, 0x00000149u, 0x0000001eu, 0x0003003eu, 0x00000148u, 0x00000149u, + 0x00050039u, 0x00000006u, 0x0000014au, 0x00000016u, 0x00000148u, 0x0003003eu, 0x00000145u, 0x0000014au, + 0x000200f9u, 0x00000147u, 0x000200f8u, 0x0000014bu, 0x0004003du, 0x00000008u, 0x0000014du, 0x0000001eu, + 0x0003003eu, 0x0000014cu, 0x0000014du, 0x00050039u, 0x00000006u, 0x0000014eu, 0x00000010u, 0x0000014cu, + 0x0003003eu, 0x00000145u, 0x0000014eu, 0x000200f9u, 0x00000147u, 0x000200f8u, 0x00000147u, 0x0004003du, + 0x00000006u, 0x0000014fu, 0x00000145u, 0x000200feu, 0x0000014fu, 0x00010038u, 0x00050036u, 0x00000008u, + 0x00000025u, 0x00000000u, 0x00000022u, 0x00030037u, 0x00000007u, 0x00000023u, 0x00030037u, 0x0000000du, + 0x00000024u, 0x000200f8u, 0x00000026u, 0x0004003bu, 0x00000007u, 0x0000015cu, 0x00000007u, 0x000400e0u, + 0x00000152u, 0x00000152u, 0x00000153u, 0x0004003du, 0x00000006u, 0x00000158u, 0x00000023u, 0x0004003du, + 0x00000008u, 0x00000159u, 0x00000024u, 0x00050041u, 0x0000015au, 0x0000015bu, 0x00000157u, 0x00000158u, + 0x0003003eu, 0x0000015bu, 0x00000159u, 0x000400e0u, 0x00000152u, 0x00000152u, 0x00000153u, 0x0003003eu, + 0x0000015cu, 0x00000042u, 0x000200f9u, 0x0000015du, 0x000200f8u, 0x0000015du, 0x000400f6u, 0x0000015fu, + 0x00000160u, 0x00000000u, 0x000200f9u, 0x00000161u, 0x000200f8u, 0x00000161u, 0x0004003du, 0x00000006u, + 0x00000162u, 0x0000015cu, 0x000500acu, 0x00000031u, 0x00000163u, 0x00000162u, 0x0000003bu, 0x000400fau, + 0x00000163u, 0x0000015eu, 0x0000015fu, 0x000200f8u, 0x0000015eu, 0x0004003du, 0x00000006u, 0x00000164u, + 0x00000023u, 0x0004003du, 0x00000006u, 0x00000165u, 0x0000015cu, 0x000500b0u, 0x00000031u, 0x00000166u, + 0x00000164u, 0x00000165u, 0x000300f7u, 0x00000168u, 0x00000000u, 0x000400fau, 0x00000166u, 0x00000167u, + 0x00000168u, 0x000200f8u, 0x00000167u, 0x0004003du, 0x00000006u, 0x00000169u, 0x00000023u, 0x0004003du, + 0x00000006u, 0x0000016au, 0x00000023u, 0x0004003du, 0x00000006u, 0x0000016bu, 0x0000015cu, 0x00050080u, + 0x00000006u, 0x0000016cu, 0x0000016au, 0x0000016bu, 0x00050041u, 0x0000015au, 0x0000016du, 0x00000157u, + 0x0000016cu, 0x0004003du, 0x00000008u, 0x0000016eu, 0x0000016du, 0x00050041u, 0x0000015au, 0x0000016fu, + 0x00000157u, 0x00000169u, 0x0004003du, 0x00000008u, 0x00000170u, 0x0000016fu, 0x00050081u, 0x00000008u, + 0x00000171u, 0x00000170u, 0x0000016eu, 0x00050041u, 0x0000015au, 0x00000172u, 0x00000157u, 0x00000169u, + 0x0003003eu, 0x00000172u, 0x00000171u, 0x000200f9u, 0x00000168u, 0x000200f8u, 0x00000168u, 0x000400e0u, + 0x00000152u, 0x00000152u, 0x00000153u, 0x000200f9u, 0x00000160u, 0x000200f8u, 0x00000160u, 0x0004003du, + 0x00000006u, 0x00000173u, 0x0000015cu, 0x000500c2u, 0x00000006u, 0x00000174u, 0x00000173u, 0x00000085u, + 0x0003003eu, 0x0000015cu, 0x00000174u, 0x000200f9u, 0x0000015du, 0x000200f8u, 0x0000015fu, 0x00050041u, + 0x0000015au, 0x00000175u, 0x00000157u, 0x000000d8u, 0x0004003du, 0x00000008u, 0x00000176u, 0x00000175u, + 0x000200feu, 0x00000176u, 0x00010038u, +}; + constexpr uint32_t kSpv_vt_rope_from_cache[] = { 0x07230203u, 0x00010300u, 0x0008000bu, 0x0000036du, 0x00000000u, 0x00020011u, 0x00000001u, 0x00020011u, 0x00001151u, 0x0006000bu, 0x00000001u, 0x4c534c47u, 0x6474732eu, 0x3035342eu, 0x00000000u, 0x0003000eu, @@ -6710,6 +9194,318 @@ constexpr uint32_t kSpv_vt_rope_from_cache[] = { 0x00010038u, }; +constexpr uint32_t kSpv_vt_sigmoid_gate_bf16[] = { + 0x07230203u, 0x00010300u, 0x0008000bu, 0x000001e6u, 0x00000000u, 0x00020011u, 0x00000001u, 0x00020011u, + 0x00001151u, 0x0006000bu, 0x00000001u, 0x4c534c47u, 0x6474732eu, 0x3035342eu, 0x00000000u, 0x0003000eu, + 0x00000000u, 0x00000001u, 0x0006000fu, 0x00000005u, 0x00000004u, 0x6e69616du, 0x00000000u, 0x0000015cu, + 0x00060010u, 0x00000004u, 0x00000011u, 0x00000080u, 0x00000001u, 0x00000001u, 0x00040047u, 0x0000015cu, + 0x0000000bu, 0x0000001cu, 0x00030047u, 0x00000161u, 0x00000002u, 0x00050048u, 0x00000161u, 0x00000000u, + 0x00000023u, 0x00000000u, 0x00050048u, 0x00000161u, 0x00000001u, 0x00000023u, 0x00000004u, 0x00050048u, + 0x00000161u, 0x00000002u, 0x00000023u, 0x00000008u, 0x00050048u, 0x00000161u, 0x00000003u, 0x00000023u, + 0x0000000cu, 0x00040047u, 0x0000016cu, 0x00000001u, 0x00000000u, 0x00040047u, 0x00000171u, 0x00000006u, + 0x00000004u, 0x00030047u, 0x00000172u, 0x00000002u, 0x00040048u, 0x00000172u, 0x00000000u, 0x00000018u, + 0x00050048u, 0x00000172u, 0x00000000u, 0x00000023u, 0x00000000u, 0x00030047u, 0x00000174u, 0x00000018u, + 0x00040047u, 0x00000174u, 0x00000021u, 0x00000000u, 0x00040047u, 0x00000174u, 0x00000022u, 0x00000000u, + 0x00040047u, 0x00000181u, 0x00000006u, 0x00000002u, 0x00030047u, 0x00000182u, 0x00000002u, 0x00040048u, + 0x00000182u, 0x00000000u, 0x00000018u, 0x00050048u, 0x00000182u, 0x00000000u, 0x00000023u, 0x00000000u, + 0x00030047u, 0x00000184u, 0x00000018u, 0x00040047u, 0x00000184u, 0x00000021u, 0x00000001u, 0x00040047u, + 0x00000184u, 0x00000022u, 0x00000000u, 0x00040047u, 0x00000197u, 0x00000006u, 0x00000004u, 0x00030047u, + 0x00000198u, 0x00000002u, 0x00040048u, 0x00000198u, 0x00000000u, 0x00000018u, 0x00050048u, 0x00000198u, + 0x00000000u, 0x00000023u, 0x00000000u, 0x00030047u, 0x0000019au, 0x00000018u, 0x00040047u, 0x0000019au, + 0x00000021u, 0x00000002u, 0x00040047u, 0x0000019au, 0x00000022u, 0x00000000u, 0x00040047u, 0x000001a4u, + 0x00000006u, 0x00000002u, 0x00030047u, 0x000001a5u, 0x00000002u, 0x00040048u, 0x000001a5u, 0x00000000u, + 0x00000018u, 0x00050048u, 0x000001a5u, 0x00000000u, 0x00000023u, 0x00000000u, 0x00030047u, 0x000001a7u, + 0x00000018u, 0x00040047u, 0x000001a7u, 0x00000021u, 0x00000003u, 0x00040047u, 0x000001a7u, 0x00000022u, + 0x00000000u, 0x00040047u, 0x000001bbu, 0x00000006u, 0x00000004u, 0x00030047u, 0x000001bcu, 0x00000002u, + 0x00050048u, 0x000001bcu, 0x00000000u, 0x00000023u, 0x00000000u, 0x00040047u, 0x000001beu, 0x00000021u, + 0x00000004u, 0x00040047u, 0x000001beu, 0x00000022u, 0x00000000u, 0x00040047u, 0x000001cdu, 0x00000006u, + 0x00000002u, 0x00030047u, 0x000001ceu, 0x00000002u, 0x00050048u, 0x000001ceu, 0x00000000u, 0x00000023u, + 0x00000000u, 0x00040047u, 0x000001d0u, 0x00000021u, 0x00000005u, 0x00040047u, 0x000001d0u, 0x00000022u, + 0x00000000u, 0x00040047u, 0x000001e5u, 0x0000000bu, 0x00000019u, 0x00020013u, 0x00000002u, 0x00030021u, + 0x00000003u, 0x00000002u, 0x00040015u, 0x00000006u, 0x00000020u, 0x00000000u, 0x00040020u, 0x00000007u, + 0x00000007u, 0x00000006u, 0x00030016u, 0x00000008u, 0x00000020u, 0x00040021u, 0x00000009u, 0x00000008u, + 0x00000007u, 0x00040020u, 0x0000000du, 0x00000007u, 0x00000008u, 0x00040021u, 0x0000000eu, 0x00000006u, + 0x0000000du, 0x00050021u, 0x00000018u, 0x00000008u, 0x00000007u, 0x00000007u, 0x00050021u, 0x0000001du, + 0x00000006u, 0x0000000du, 0x00000007u, 0x00040021u, 0x00000022u, 0x00000008u, 0x0000000du, 0x00040015u, + 0x00000027u, 0x00000020u, 0x00000001u, 0x0004002bu, 0x00000027u, 0x00000028u, 0x00000010u, 0x00020014u, + 0x00000030u, 0x0004002bu, 0x00000006u, 0x00000032u, 0x7f800000u, 0x0004002bu, 0x00000006u, 0x00000038u, + 0x007fffffu, 0x0004002bu, 0x00000006u, 0x0000003au, 0x00000000u, 0x0004002bu, 0x00000006u, 0x00000041u, + 0x00000040u, 0x0004002bu, 0x00000006u, 0x00000043u, 0x0000ffffu, 0x0004002bu, 0x00000006u, 0x00000047u, + 0x00007fffu, 0x0004002bu, 0x00000006u, 0x0000004au, 0x00000001u, 0x0004002bu, 0x00000006u, 0x00000056u, + 0x00008000u, 0x0004002bu, 0x00000027u, 0x0000005bu, 0x0000000au, 0x0004002bu, 0x00000006u, 0x0000005du, + 0x0000001fu, 0x0004002bu, 0x00000006u, 0x00000061u, 0x000003ffu, 0x0004002bu, 0x00000027u, 0x0000006au, + 0x0000000du, 0x0004002bu, 0x00000006u, 0x00000081u, 0x00000400u, 0x0004002bu, 0x00000027u, 0x00000084u, + 0x00000001u, 0x0004002bu, 0x00000006u, 0x0000008cu, 0x00000071u, 0x0004002bu, 0x00000027u, 0x0000008fu, + 0x00000017u, 0x0004002bu, 0x00000006u, 0x00000099u, 0x00000070u, 0x0004002bu, 0x00000006u, 0x000000adu, + 0x000000ffu, 0x00040020u, 0x000000afu, 0x00000007u, 0x00000027u, 0x0004002bu, 0x00000027u, 0x000000b3u, + 0x0000007fu, 0x0004002bu, 0x00000027u, 0x000000b5u, 0x0000000fu, 0x0004002bu, 0x00000006u, 0x000000bfu, + 0x00007c00u, 0x0004002bu, 0x00000006u, 0x000000c6u, 0x00000200u, 0x0004002bu, 0x00000027u, 0x000000cfu, + 0x0000001fu, 0x0004002bu, 0x00000027u, 0x000000d7u, 0x00000000u, 0x0004002bu, 0x00000027u, 0x000000dcu, + 0xfffffff6u, 0x0004002bu, 0x00000006u, 0x000000e2u, 0x00800000u, 0x0004002bu, 0x00000027u, 0x000000e6u, + 0x0000000eu, 0x0004002bu, 0x00000006u, 0x00000119u, 0x00001fffu, 0x0004002bu, 0x00000006u, 0x0000011cu, + 0x00001000u, 0x0004002bu, 0x00000008u, 0x00000151u, 0x3f800000u, 0x00040017u, 0x0000015au, 0x00000006u, + 0x00000003u, 0x00040020u, 0x0000015bu, 0x00000001u, 0x0000015au, 0x0004003bu, 0x0000015bu, 0x0000015cu, + 0x00000001u, 0x00040020u, 0x0000015du, 0x00000001u, 0x00000006u, 0x0006001eu, 0x00000161u, 0x00000006u, + 0x00000006u, 0x00000006u, 0x00000006u, 0x00040020u, 0x00000162u, 0x00000009u, 0x00000161u, 0x0004003bu, + 0x00000162u, 0x00000163u, 0x00000009u, 0x00040020u, 0x00000164u, 0x00000009u, 0x00000006u, 0x00040032u, + 0x00000006u, 0x0000016cu, 0x00000000u, 0x00060034u, 0x00000030u, 0x0000016du, 0x000000aau, 0x0000016cu, + 0x0000003au, 0x0003001du, 0x00000171u, 0x00000006u, 0x0003001eu, 0x00000172u, 0x00000171u, 0x00040020u, + 0x00000173u, 0x0000000cu, 0x00000172u, 0x0004003bu, 0x00000173u, 0x00000174u, 0x0000000cu, 0x0004002bu, + 0x00000027u, 0x00000177u, 0x00000002u, 0x00040020u, 0x0000017bu, 0x0000000cu, 0x00000006u, 0x00040015u, + 0x00000180u, 0x00000010u, 0x00000000u, 0x0003001du, 0x00000181u, 0x00000180u, 0x0003001eu, 0x00000182u, + 0x00000181u, 0x00040020u, 0x00000183u, 0x0000000cu, 0x00000182u, 0x0004003bu, 0x00000183u, 0x00000184u, + 0x0000000cu, 0x00040020u, 0x0000018au, 0x0000000cu, 0x00000180u, 0x00030029u, 0x00000030u, 0x00000193u, + 0x0003001du, 0x00000197u, 0x00000006u, 0x0003001eu, 0x00000198u, 0x00000197u, 0x00040020u, 0x00000199u, + 0x0000000cu, 0x00000198u, 0x0004003bu, 0x00000199u, 0x0000019au, 0x0000000cu, 0x0003001du, 0x000001a4u, + 0x00000180u, 0x0003001eu, 0x000001a5u, 0x000001a4u, 0x00040020u, 0x000001a6u, 0x0000000cu, 0x000001a5u, + 0x0004003bu, 0x000001a6u, 0x000001a7u, 0x0000000cu, 0x0003002au, 0x00000030u, 0x000001b8u, 0x0003001du, + 0x000001bbu, 0x00000006u, 0x0003001eu, 0x000001bcu, 0x000001bbu, 0x00040020u, 0x000001bdu, 0x0000000cu, + 0x000001bcu, 0x0004003bu, 0x000001bdu, 0x000001beu, 0x0000000cu, 0x0004002bu, 0x00000027u, 0x000001bfu, + 0x00000003u, 0x0003001du, 0x000001cdu, 0x00000180u, 0x0003001eu, 0x000001ceu, 0x000001cdu, 0x00040020u, + 0x000001cfu, 0x0000000cu, 0x000001ceu, 0x0004003bu, 0x000001cfu, 0x000001d0u, 0x0000000cu, 0x0004002bu, + 0x00000006u, 0x000001dbu, 0x00000002u, 0x0004002bu, 0x00000006u, 0x000001e1u, 0x00000080u, 0x0004001cu, + 0x000001e2u, 0x00000008u, 0x000001e1u, 0x00040020u, 0x000001e3u, 0x00000004u, 0x000001e2u, 0x0004003bu, + 0x000001e3u, 0x000001e4u, 0x00000004u, 0x0006002cu, 0x0000015au, 0x000001e5u, 0x000001e1u, 0x0000004au, + 0x0000004au, 0x00050036u, 0x00000002u, 0x00000004u, 0x00000000u, 0x00000003u, 0x000200f8u, 0x00000005u, + 0x0004003bu, 0x00000007u, 0x00000159u, 0x00000007u, 0x0004003bu, 0x0000000du, 0x0000016bu, 0x00000007u, + 0x0004003bu, 0x0000000du, 0x0000016eu, 0x00000007u, 0x0004003bu, 0x00000007u, 0x0000018eu, 0x00000007u, + 0x0004003bu, 0x00000007u, 0x0000018fu, 0x00000007u, 0x0004003bu, 0x0000000du, 0x00000192u, 0x00000007u, + 0x0004003bu, 0x0000000du, 0x00000194u, 0x00000007u, 0x0004003bu, 0x00000007u, 0x000001b0u, 0x00000007u, + 0x0004003bu, 0x00000007u, 0x000001b1u, 0x00000007u, 0x0004003bu, 0x0000000du, 0x000001c6u, 0x00000007u, + 0x0004003bu, 0x0000000du, 0x000001d7u, 0x00000007u, 0x0004003bu, 0x0000000du, 0x000001dcu, 0x00000007u, + 0x0004003bu, 0x00000007u, 0x000001ddu, 0x00000007u, 0x00050041u, 0x0000015du, 0x0000015eu, 0x0000015cu, + 0x0000003au, 0x0004003du, 0x00000006u, 0x0000015fu, 0x0000015eu, 0x0003003eu, 0x00000159u, 0x0000015fu, + 0x0004003du, 0x00000006u, 0x00000160u, 0x00000159u, 0x00050041u, 0x00000164u, 0x00000165u, 0x00000163u, + 0x000000d7u, 0x0004003du, 0x00000006u, 0x00000166u, 0x00000165u, 0x000500aeu, 0x00000030u, 0x00000167u, + 0x00000160u, 0x00000166u, 0x000300f7u, 0x00000169u, 0x00000000u, 0x000400fau, 0x00000167u, 0x00000168u, + 0x00000169u, 0x000200f8u, 0x00000168u, 0x000100fdu, 0x000200f8u, 0x00000169u, 0x000300f7u, 0x00000170u, + 0x00000000u, 0x000400fau, 0x0000016du, 0x0000016fu, 0x0000017fu, 0x000200f8u, 0x0000016fu, 0x00050041u, + 0x00000164u, 0x00000175u, 0x00000163u, 0x00000084u, 0x0004003du, 0x00000006u, 0x00000176u, 0x00000175u, + 0x000500c2u, 0x00000006u, 0x00000178u, 0x00000176u, 0x00000177u, 0x0004003du, 0x00000006u, 0x00000179u, + 0x00000159u, 0x00050080u, 0x00000006u, 0x0000017au, 0x00000178u, 0x00000179u, 0x00060041u, 0x0000017bu, + 0x0000017cu, 0x00000174u, 0x000000d7u, 0x0000017au, 0x0004003du, 0x00000006u, 0x0000017du, 0x0000017cu, + 0x0004007cu, 0x00000008u, 0x0000017eu, 0x0000017du, 0x0003003eu, 0x0000016eu, 0x0000017eu, 0x000200f9u, + 0x00000170u, 0x000200f8u, 0x0000017fu, 0x00050041u, 0x00000164u, 0x00000185u, 0x00000163u, 0x00000084u, + 0x0004003du, 0x00000006u, 0x00000186u, 0x00000185u, 0x000500c2u, 0x00000006u, 0x00000187u, 0x00000186u, + 0x00000084u, 0x0004003du, 0x00000006u, 0x00000188u, 0x00000159u, 0x00050080u, 0x00000006u, 0x00000189u, + 0x00000187u, 0x00000188u, 0x00060041u, 0x0000018au, 0x0000018bu, 0x00000184u, 0x000000d7u, 0x00000189u, + 0x0004003du, 0x00000180u, 0x0000018cu, 0x0000018bu, 0x00040071u, 0x00000006u, 0x0000018du, 0x0000018cu, + 0x0003003eu, 0x0000018eu, 0x0000018du, 0x0003003eu, 0x0000018fu, 0x0000016cu, 0x00060039u, 0x00000008u, + 0x00000190u, 0x0000001bu, 0x0000018eu, 0x0000018fu, 0x0003003eu, 0x0000016eu, 0x00000190u, 0x000200f9u, + 0x00000170u, 0x000200f8u, 0x00000170u, 0x0004003du, 0x00000008u, 0x00000191u, 0x0000016eu, 0x0003003eu, + 0x0000016bu, 0x00000191u, 0x000300f7u, 0x00000196u, 0x00000000u, 0x000400fau, 0x00000193u, 0x00000195u, + 0x000001a3u, 0x000200f8u, 0x00000195u, 0x00050041u, 0x00000164u, 0x0000019bu, 0x00000163u, 0x00000177u, + 0x0004003du, 0x00000006u, 0x0000019cu, 0x0000019bu, 0x000500c2u, 0x00000006u, 0x0000019du, 0x0000019cu, + 0x00000177u, 0x0004003du, 0x00000006u, 0x0000019eu, 0x00000159u, 0x00050080u, 0x00000006u, 0x0000019fu, + 0x0000019du, 0x0000019eu, 0x00060041u, 0x0000017bu, 0x000001a0u, 0x0000019au, 0x000000d7u, 0x0000019fu, + 0x0004003du, 0x00000006u, 0x000001a1u, 0x000001a0u, 0x0004007cu, 0x00000008u, 0x000001a2u, 0x000001a1u, + 0x0003003eu, 0x00000194u, 0x000001a2u, 0x000200f9u, 0x00000196u, 0x000200f8u, 0x000001a3u, 0x00050041u, + 0x00000164u, 0x000001a8u, 0x00000163u, 0x00000177u, 0x0004003du, 0x00000006u, 0x000001a9u, 0x000001a8u, + 0x000500c2u, 0x00000006u, 0x000001aau, 0x000001a9u, 0x00000084u, 0x0004003du, 0x00000006u, 0x000001abu, + 0x00000159u, 0x00050080u, 0x00000006u, 0x000001acu, 0x000001aau, 0x000001abu, 0x00060041u, 0x0000018au, + 0x000001adu, 0x000001a7u, 0x000000d7u, 0x000001acu, 0x0004003du, 0x00000180u, 0x000001aeu, 0x000001adu, + 0x00040071u, 0x00000006u, 0x000001afu, 0x000001aeu, 0x0003003eu, 0x000001b0u, 0x000001afu, 0x0003003eu, + 0x000001b1u, 0x0000003au, 0x00060039u, 0x00000008u, 0x000001b2u, 0x0000001bu, 0x000001b0u, 0x000001b1u, + 0x0003003eu, 0x00000194u, 0x000001b2u, 0x000200f9u, 0x00000196u, 0x000200f8u, 0x00000196u, 0x0004003du, + 0x00000008u, 0x000001b3u, 0x00000194u, 0x0003003eu, 0x00000192u, 0x000001b3u, 0x000200f9u, 0x000001b4u, + 0x000200f8u, 0x000001b4u, 0x000400f6u, 0x000001b6u, 0x000001b7u, 0x00000000u, 0x000200f9u, 0x000001b5u, + 0x000200f8u, 0x000001b5u, 0x000300f7u, 0x000001bau, 0x00000000u, 0x000400fau, 0x000001b8u, 0x000001b9u, + 0x000001ccu, 0x000200f8u, 0x000001b9u, 0x00050041u, 0x00000164u, 0x000001c0u, 0x00000163u, 0x000001bfu, + 0x0004003du, 0x00000006u, 0x000001c1u, 0x000001c0u, 0x000500c2u, 0x00000006u, 0x000001c2u, 0x000001c1u, + 0x00000177u, 0x0004003du, 0x00000006u, 0x000001c3u, 0x00000159u, 0x00050080u, 0x00000006u, 0x000001c4u, + 0x000001c2u, 0x000001c3u, 0x0004003du, 0x00000008u, 0x000001c5u, 0x0000016bu, 0x0004003du, 0x00000008u, + 0x000001c7u, 0x00000192u, 0x0003003eu, 0x000001c6u, 0x000001c7u, 0x00050039u, 0x00000008u, 0x000001c8u, + 0x00000024u, 0x000001c6u, 0x00050085u, 0x00000008u, 0x000001c9u, 0x000001c5u, 0x000001c8u, 0x0004007cu, + 0x00000006u, 0x000001cau, 0x000001c9u, 0x00060041u, 0x0000017bu, 0x000001cbu, 0x000001beu, 0x000000d7u, + 0x000001c4u, 0x0003003eu, 0x000001cbu, 0x000001cau, 0x000200f9u, 0x000001bau, 0x000200f8u, 0x000001ccu, + 0x00050041u, 0x00000164u, 0x000001d1u, 0x00000163u, 0x000001bfu, 0x0004003du, 0x00000006u, 0x000001d2u, + 0x000001d1u, 0x000500c2u, 0x00000006u, 0x000001d3u, 0x000001d2u, 0x00000084u, 0x0004003du, 0x00000006u, + 0x000001d4u, 0x00000159u, 0x00050080u, 0x00000006u, 0x000001d5u, 0x000001d3u, 0x000001d4u, 0x0004003du, + 0x00000008u, 0x000001d6u, 0x0000016bu, 0x0004003du, 0x00000008u, 0x000001d8u, 0x00000192u, 0x0003003eu, + 0x000001d7u, 0x000001d8u, 0x00050039u, 0x00000008u, 0x000001d9u, 0x00000024u, 0x000001d7u, 0x00050085u, + 0x00000008u, 0x000001dau, 0x000001d6u, 0x000001d9u, 0x0003003eu, 0x000001dcu, 0x000001dau, 0x0003003eu, + 0x000001ddu, 0x000001dbu, 0x00060039u, 0x00000006u, 0x000001deu, 0x00000020u, 0x000001dcu, 0x000001ddu, + 0x00040071u, 0x00000180u, 0x000001dfu, 0x000001deu, 0x00060041u, 0x0000018au, 0x000001e0u, 0x000001d0u, + 0x000000d7u, 0x000001d5u, 0x0003003eu, 0x000001e0u, 0x000001dfu, 0x000200f9u, 0x000001bau, 0x000200f8u, + 0x000001bau, 0x000200f9u, 0x000001b7u, 0x000200f8u, 0x000001b7u, 0x000400fau, 0x000001b8u, 0x000001b4u, + 0x000001b6u, 0x000200f8u, 0x000001b6u, 0x000100fdu, 0x00010038u, 0x00050036u, 0x00000008u, 0x0000000bu, + 0x00000000u, 0x00000009u, 0x00030037u, 0x00000007u, 0x0000000au, 0x000200f8u, 0x0000000cu, 0x0004003du, + 0x00000006u, 0x00000026u, 0x0000000au, 0x000500c4u, 0x00000006u, 0x00000029u, 0x00000026u, 0x00000028u, + 0x0004007cu, 0x00000008u, 0x0000002au, 0x00000029u, 0x000200feu, 0x0000002au, 0x00010038u, 0x00050036u, + 0x00000006u, 0x00000010u, 0x00000000u, 0x0000000eu, 0x00030037u, 0x0000000du, 0x0000000fu, 0x000200f8u, + 0x00000011u, 0x0004003bu, 0x00000007u, 0x0000002du, 0x00000007u, 0x0004003bu, 0x00000007u, 0x00000046u, + 0x00000007u, 0x0004003du, 0x00000008u, 0x0000002eu, 0x0000000fu, 0x0004007cu, 0x00000006u, 0x0000002fu, + 0x0000002eu, 0x0003003eu, 0x0000002du, 0x0000002fu, 0x0004003du, 0x00000006u, 0x00000031u, 0x0000002du, + 0x000500c7u, 0x00000006u, 0x00000033u, 0x00000031u, 0x00000032u, 0x000500aau, 0x00000030u, 0x00000034u, + 0x00000033u, 0x00000032u, 0x000300f7u, 0x00000036u, 0x00000000u, 0x000400fau, 0x00000034u, 0x00000035u, + 0x00000036u, 0x000200f8u, 0x00000035u, 0x0004003du, 0x00000006u, 0x00000037u, 0x0000002du, 0x000500c7u, + 0x00000006u, 0x00000039u, 0x00000037u, 0x00000038u, 0x000500abu, 0x00000030u, 0x0000003bu, 0x00000039u, + 0x0000003au, 0x000200f9u, 0x00000036u, 0x000200f8u, 0x00000036u, 0x000700f5u, 0x00000030u, 0x0000003cu, + 0x00000034u, 0x00000011u, 0x0000003bu, 0x00000035u, 0x000300f7u, 0x0000003eu, 0x00000000u, 0x000400fau, + 0x0000003cu, 0x0000003du, 0x0000003eu, 0x000200f8u, 0x0000003du, 0x0004003du, 0x00000006u, 0x0000003fu, + 0x0000002du, 0x000500c2u, 0x00000006u, 0x00000040u, 0x0000003fu, 0x00000028u, 0x000500c5u, 0x00000006u, + 0x00000042u, 0x00000040u, 0x00000041u, 0x000500c7u, 0x00000006u, 0x00000044u, 0x00000042u, 0x00000043u, + 0x000200feu, 0x00000044u, 0x000200f8u, 0x0000003eu, 0x0004003du, 0x00000006u, 0x00000048u, 0x0000002du, + 0x000500c2u, 0x00000006u, 0x00000049u, 0x00000048u, 0x00000028u, 0x000500c7u, 0x00000006u, 0x0000004bu, + 0x00000049u, 0x0000004au, 0x00050080u, 0x00000006u, 0x0000004cu, 0x00000047u, 0x0000004bu, 0x0003003eu, + 0x00000046u, 0x0000004cu, 0x0004003du, 0x00000006u, 0x0000004du, 0x0000002du, 0x0004003du, 0x00000006u, + 0x0000004eu, 0x00000046u, 0x00050080u, 0x00000006u, 0x0000004fu, 0x0000004du, 0x0000004eu, 0x000500c2u, + 0x00000006u, 0x00000050u, 0x0000004fu, 0x00000028u, 0x000500c7u, 0x00000006u, 0x00000051u, 0x00000050u, + 0x00000043u, 0x000200feu, 0x00000051u, 0x00010038u, 0x00050036u, 0x00000008u, 0x00000013u, 0x00000000u, + 0x00000009u, 0x00030037u, 0x00000007u, 0x00000012u, 0x000200f8u, 0x00000014u, 0x0004003bu, 0x00000007u, + 0x00000054u, 0x00000007u, 0x0004003bu, 0x00000007u, 0x00000059u, 0x00000007u, 0x0004003bu, 0x00000007u, + 0x0000005fu, 0x00000007u, 0x0004003bu, 0x00000007u, 0x0000007au, 0x00000007u, 0x0004003du, 0x00000006u, + 0x00000055u, 0x00000012u, 0x000500c7u, 0x00000006u, 0x00000057u, 0x00000055u, 0x00000056u, 0x000500c4u, + 0x00000006u, 0x00000058u, 0x00000057u, 0x00000028u, 0x0003003eu, 0x00000054u, 0x00000058u, 0x0004003du, + 0x00000006u, 0x0000005au, 0x00000012u, 0x000500c2u, 0x00000006u, 0x0000005cu, 0x0000005au, 0x0000005bu, + 0x000500c7u, 0x00000006u, 0x0000005eu, 0x0000005cu, 0x0000005du, 0x0003003eu, 0x00000059u, 0x0000005eu, + 0x0004003du, 0x00000006u, 0x00000060u, 0x00000012u, 0x000500c7u, 0x00000006u, 0x00000062u, 0x00000060u, + 0x00000061u, 0x0003003eu, 0x0000005fu, 0x00000062u, 0x0004003du, 0x00000006u, 0x00000063u, 0x00000059u, + 0x000500aau, 0x00000030u, 0x00000064u, 0x00000063u, 0x0000005du, 0x000300f7u, 0x00000066u, 0x00000000u, + 0x000400fau, 0x00000064u, 0x00000065u, 0x00000066u, 0x000200f8u, 0x00000065u, 0x0004003du, 0x00000006u, + 0x00000067u, 0x00000054u, 0x000500c5u, 0x00000006u, 0x00000068u, 0x00000067u, 0x00000032u, 0x0004003du, + 0x00000006u, 0x00000069u, 0x0000005fu, 0x000500c4u, 0x00000006u, 0x0000006bu, 0x00000069u, 0x0000006au, + 0x000500c5u, 0x00000006u, 0x0000006cu, 0x00000068u, 0x0000006bu, 0x0004007cu, 0x00000008u, 0x0000006du, + 0x0000006cu, 0x000200feu, 0x0000006du, 0x000200f8u, 0x00000066u, 0x0004003du, 0x00000006u, 0x0000006fu, + 0x00000059u, 0x000500aau, 0x00000030u, 0x00000070u, 0x0000006fu, 0x0000003au, 0x000300f7u, 0x00000072u, + 0x00000000u, 0x000400fau, 0x00000070u, 0x00000071u, 0x00000072u, 0x000200f8u, 0x00000071u, 0x0004003du, + 0x00000006u, 0x00000073u, 0x0000005fu, 0x000500aau, 0x00000030u, 0x00000074u, 0x00000073u, 0x0000003au, + 0x000300f7u, 0x00000076u, 0x00000000u, 0x000400fau, 0x00000074u, 0x00000075u, 0x00000076u, 0x000200f8u, + 0x00000075u, 0x0004003du, 0x00000006u, 0x00000077u, 0x00000054u, 0x0004007cu, 0x00000008u, 0x00000078u, + 0x00000077u, 0x000200feu, 0x00000078u, 0x000200f8u, 0x00000076u, 0x0003003eu, 0x0000007au, 0x0000003au, + 0x000200f9u, 0x0000007bu, 0x000200f8u, 0x0000007bu, 0x000400f6u, 0x0000007du, 0x0000007eu, 0x00000000u, + 0x000200f9u, 0x0000007fu, 0x000200f8u, 0x0000007fu, 0x0004003du, 0x00000006u, 0x00000080u, 0x0000005fu, + 0x000500c7u, 0x00000006u, 0x00000082u, 0x00000080u, 0x00000081u, 0x000500aau, 0x00000030u, 0x00000083u, + 0x00000082u, 0x0000003au, 0x000400fau, 0x00000083u, 0x0000007cu, 0x0000007du, 0x000200f8u, 0x0000007cu, + 0x0004003du, 0x00000006u, 0x00000085u, 0x0000005fu, 0x000500c4u, 0x00000006u, 0x00000086u, 0x00000085u, + 0x00000084u, 0x0003003eu, 0x0000005fu, 0x00000086u, 0x0004003du, 0x00000006u, 0x00000087u, 0x0000007au, + 0x00050080u, 0x00000006u, 0x00000088u, 0x00000087u, 0x0000004au, 0x0003003eu, 0x0000007au, 0x00000088u, + 0x000200f9u, 0x0000007eu, 0x000200f8u, 0x0000007eu, 0x000200f9u, 0x0000007bu, 0x000200f8u, 0x0000007du, + 0x0004003du, 0x00000006u, 0x00000089u, 0x0000005fu, 0x000500c7u, 0x00000006u, 0x0000008au, 0x00000089u, + 0x00000061u, 0x0003003eu, 0x0000005fu, 0x0000008au, 0x0004003du, 0x00000006u, 0x0000008bu, 0x00000054u, + 0x0004003du, 0x00000006u, 0x0000008du, 0x0000007au, 0x00050082u, 0x00000006u, 0x0000008eu, 0x0000008cu, + 0x0000008du, 0x000500c4u, 0x00000006u, 0x00000090u, 0x0000008eu, 0x0000008fu, 0x000500c5u, 0x00000006u, + 0x00000091u, 0x0000008bu, 0x00000090u, 0x0004003du, 0x00000006u, 0x00000092u, 0x0000005fu, 0x000500c4u, + 0x00000006u, 0x00000093u, 0x00000092u, 0x0000006au, 0x000500c5u, 0x00000006u, 0x00000094u, 0x00000091u, + 0x00000093u, 0x0004007cu, 0x00000008u, 0x00000095u, 0x00000094u, 0x000200feu, 0x00000095u, 0x000200f8u, + 0x00000072u, 0x0004003du, 0x00000006u, 0x00000097u, 0x00000054u, 0x0004003du, 0x00000006u, 0x00000098u, + 0x00000059u, 0x00050080u, 0x00000006u, 0x0000009au, 0x00000098u, 0x00000099u, 0x000500c4u, 0x00000006u, + 0x0000009bu, 0x0000009au, 0x0000008fu, 0x000500c5u, 0x00000006u, 0x0000009cu, 0x00000097u, 0x0000009bu, + 0x0004003du, 0x00000006u, 0x0000009du, 0x0000005fu, 0x000500c4u, 0x00000006u, 0x0000009eu, 0x0000009du, + 0x0000006au, 0x000500c5u, 0x00000006u, 0x0000009fu, 0x0000009cu, 0x0000009eu, 0x0004007cu, 0x00000008u, + 0x000000a0u, 0x0000009fu, 0x000200feu, 0x000000a0u, 0x00010038u, 0x00050036u, 0x00000006u, 0x00000016u, + 0x00000000u, 0x0000000eu, 0x00030037u, 0x0000000du, 0x00000015u, 0x000200f8u, 0x00000017u, 0x0004003bu, + 0x00000007u, 0x000000a3u, 0x00000007u, 0x0004003bu, 0x00000007u, 0x000000a6u, 0x00000007u, 0x0004003bu, + 0x00000007u, 0x000000aau, 0x00000007u, 0x0004003bu, 0x000000afu, 0x000000b0u, 0x00000007u, 0x0004003bu, + 0x00000007u, 0x000000b7u, 0x00000007u, 0x0004003bu, 0x00000007u, 0x000000c3u, 0x00000007u, 0x0004003bu, + 0x00000007u, 0x000000e5u, 0x00000007u, 0x0004003bu, 0x00000007u, 0x000000eau, 0x00000007u, 0x0004003bu, + 0x00000007u, 0x000000eeu, 0x00000007u, 0x0004003bu, 0x00000007u, 0x000000f4u, 0x00000007u, 0x0004003bu, + 0x00000007u, 0x00000110u, 0x00000007u, 0x0004003bu, 0x00000007u, 0x00000117u, 0x00000007u, 0x0004003du, + 0x00000008u, 0x000000a4u, 0x00000015u, 0x0004007cu, 0x00000006u, 0x000000a5u, 0x000000a4u, 0x0003003eu, + 0x000000a3u, 0x000000a5u, 0x0004003du, 0x00000006u, 0x000000a7u, 0x000000a3u, 0x000500c2u, 0x00000006u, + 0x000000a8u, 0x000000a7u, 0x00000028u, 0x000500c7u, 0x00000006u, 0x000000a9u, 0x000000a8u, 0x00000056u, + 0x0003003eu, 0x000000a6u, 0x000000a9u, 0x0004003du, 0x00000006u, 0x000000abu, 0x000000a3u, 0x000500c2u, + 0x00000006u, 0x000000acu, 0x000000abu, 0x0000008fu, 0x000500c7u, 0x00000006u, 0x000000aeu, 0x000000acu, + 0x000000adu, 0x0003003eu, 0x000000aau, 0x000000aeu, 0x0004003du, 0x00000006u, 0x000000b1u, 0x000000aau, + 0x0004007cu, 0x00000027u, 0x000000b2u, 0x000000b1u, 0x00050082u, 0x00000027u, 0x000000b4u, 0x000000b2u, + 0x000000b3u, 0x00050080u, 0x00000027u, 0x000000b6u, 0x000000b4u, 0x000000b5u, 0x0003003eu, 0x000000b0u, + 0x000000b6u, 0x0004003du, 0x00000006u, 0x000000b8u, 0x000000a3u, 0x000500c7u, 0x00000006u, 0x000000b9u, + 0x000000b8u, 0x00000038u, 0x0003003eu, 0x000000b7u, 0x000000b9u, 0x0004003du, 0x00000006u, 0x000000bau, + 0x000000aau, 0x000500aau, 0x00000030u, 0x000000bbu, 0x000000bau, 0x000000adu, 0x000300f7u, 0x000000bdu, + 0x00000000u, 0x000400fau, 0x000000bbu, 0x000000bcu, 0x000000bdu, 0x000200f8u, 0x000000bcu, 0x0004003du, + 0x00000006u, 0x000000beu, 0x000000a6u, 0x000500c5u, 0x00000006u, 0x000000c0u, 0x000000beu, 0x000000bfu, + 0x0004003du, 0x00000006u, 0x000000c1u, 0x000000b7u, 0x000500abu, 0x00000030u, 0x000000c2u, 0x000000c1u, + 0x0000003au, 0x000300f7u, 0x000000c5u, 0x00000000u, 0x000400fau, 0x000000c2u, 0x000000c4u, 0x000000cau, + 0x000200f8u, 0x000000c4u, 0x0004003du, 0x00000006u, 0x000000c7u, 0x000000b7u, 0x000500c2u, 0x00000006u, + 0x000000c8u, 0x000000c7u, 0x0000006au, 0x000500c5u, 0x00000006u, 0x000000c9u, 0x000000c6u, 0x000000c8u, + 0x0003003eu, 0x000000c3u, 0x000000c9u, 0x000200f9u, 0x000000c5u, 0x000200f8u, 0x000000cau, 0x0003003eu, + 0x000000c3u, 0x0000003au, 0x000200f9u, 0x000000c5u, 0x000200f8u, 0x000000c5u, 0x0004003du, 0x00000006u, + 0x000000cbu, 0x000000c3u, 0x000500c5u, 0x00000006u, 0x000000ccu, 0x000000c0u, 0x000000cbu, 0x000200feu, + 0x000000ccu, 0x000200f8u, 0x000000bdu, 0x0004003du, 0x00000027u, 0x000000ceu, 0x000000b0u, 0x000500afu, + 0x00000030u, 0x000000d0u, 0x000000ceu, 0x000000cfu, 0x000300f7u, 0x000000d2u, 0x00000000u, 0x000400fau, + 0x000000d0u, 0x000000d1u, 0x000000d2u, 0x000200f8u, 0x000000d1u, 0x0004003du, 0x00000006u, 0x000000d3u, + 0x000000a6u, 0x000500c5u, 0x00000006u, 0x000000d4u, 0x000000d3u, 0x000000bfu, 0x000200feu, 0x000000d4u, + 0x000200f8u, 0x000000d2u, 0x0004003du, 0x00000027u, 0x000000d6u, 0x000000b0u, 0x000500b3u, 0x00000030u, + 0x000000d8u, 0x000000d6u, 0x000000d7u, 0x000300f7u, 0x000000dau, 0x00000000u, 0x000400fau, 0x000000d8u, + 0x000000d9u, 0x000000dau, 0x000200f8u, 0x000000d9u, 0x0004003du, 0x00000027u, 0x000000dbu, 0x000000b0u, + 0x000500b1u, 0x00000030u, 0x000000ddu, 0x000000dbu, 0x000000dcu, 0x000300f7u, 0x000000dfu, 0x00000000u, + 0x000400fau, 0x000000ddu, 0x000000deu, 0x000000dfu, 0x000200f8u, 0x000000deu, 0x0004003du, 0x00000006u, + 0x000000e0u, 0x000000a6u, 0x000200feu, 0x000000e0u, 0x000200f8u, 0x000000dfu, 0x0004003du, 0x00000006u, + 0x000000e3u, 0x000000b7u, 0x000500c5u, 0x00000006u, 0x000000e4u, 0x000000e3u, 0x000000e2u, 0x0003003eu, + 0x000000b7u, 0x000000e4u, 0x0004003du, 0x00000027u, 0x000000e7u, 0x000000b0u, 0x00050082u, 0x00000027u, + 0x000000e8u, 0x000000e6u, 0x000000e7u, 0x0004007cu, 0x00000006u, 0x000000e9u, 0x000000e8u, 0x0003003eu, + 0x000000e5u, 0x000000e9u, 0x0004003du, 0x00000006u, 0x000000ebu, 0x000000b7u, 0x0004003du, 0x00000006u, + 0x000000ecu, 0x000000e5u, 0x000500c2u, 0x00000006u, 0x000000edu, 0x000000ebu, 0x000000ecu, 0x0003003eu, + 0x000000eau, 0x000000edu, 0x0004003du, 0x00000006u, 0x000000efu, 0x000000b7u, 0x0004003du, 0x00000006u, + 0x000000f0u, 0x000000e5u, 0x000500c4u, 0x00000006u, 0x000000f1u, 0x0000004au, 0x000000f0u, 0x00050082u, + 0x00000006u, 0x000000f2u, 0x000000f1u, 0x0000004au, 0x000500c7u, 0x00000006u, 0x000000f3u, 0x000000efu, + 0x000000f2u, 0x0003003eu, 0x000000eeu, 0x000000f3u, 0x0004003du, 0x00000006u, 0x000000f5u, 0x000000e5u, + 0x00050082u, 0x00000006u, 0x000000f6u, 0x000000f5u, 0x0000004au, 0x000500c4u, 0x00000006u, 0x000000f7u, + 0x0000004au, 0x000000f6u, 0x0003003eu, 0x000000f4u, 0x000000f7u, 0x0004003du, 0x00000006u, 0x000000f8u, + 0x000000eeu, 0x0004003du, 0x00000006u, 0x000000f9u, 0x000000f4u, 0x000500acu, 0x00000030u, 0x000000fau, + 0x000000f8u, 0x000000f9u, 0x000400a8u, 0x00000030u, 0x000000fbu, 0x000000fau, 0x000300f7u, 0x000000fdu, + 0x00000000u, 0x000400fau, 0x000000fbu, 0x000000fcu, 0x000000fdu, 0x000200f8u, 0x000000fcu, 0x0004003du, + 0x00000006u, 0x000000feu, 0x000000eeu, 0x0004003du, 0x00000006u, 0x000000ffu, 0x000000f4u, 0x000500aau, + 0x00000030u, 0x00000100u, 0x000000feu, 0x000000ffu, 0x000300f7u, 0x00000102u, 0x00000000u, 0x000400fau, + 0x00000100u, 0x00000101u, 0x00000102u, 0x000200f8u, 0x00000101u, 0x0004003du, 0x00000006u, 0x00000103u, + 0x000000eau, 0x000500c7u, 0x00000006u, 0x00000104u, 0x00000103u, 0x0000004au, 0x000500abu, 0x00000030u, + 0x00000105u, 0x00000104u, 0x0000003au, 0x000200f9u, 0x00000102u, 0x000200f8u, 0x00000102u, 0x000700f5u, + 0x00000030u, 0x00000106u, 0x00000100u, 0x000000fcu, 0x00000105u, 0x00000101u, 0x000200f9u, 0x000000fdu, + 0x000200f8u, 0x000000fdu, 0x000700f5u, 0x00000030u, 0x00000107u, 0x000000fau, 0x000000dfu, 0x00000106u, + 0x00000102u, 0x000300f7u, 0x00000109u, 0x00000000u, 0x000400fau, 0x00000107u, 0x00000108u, 0x00000109u, + 0x000200f8u, 0x00000108u, 0x0004003du, 0x00000006u, 0x0000010au, 0x000000eau, 0x00050080u, 0x00000006u, + 0x0000010bu, 0x0000010au, 0x0000004au, 0x0003003eu, 0x000000eau, 0x0000010bu, 0x000200f9u, 0x00000109u, + 0x000200f8u, 0x00000109u, 0x0004003du, 0x00000006u, 0x0000010cu, 0x000000a6u, 0x0004003du, 0x00000006u, + 0x0000010du, 0x000000eau, 0x000500c5u, 0x00000006u, 0x0000010eu, 0x0000010cu, 0x0000010du, 0x000200feu, + 0x0000010eu, 0x000200f8u, 0x000000dau, 0x0004003du, 0x00000027u, 0x00000111u, 0x000000b0u, 0x0004007cu, + 0x00000006u, 0x00000112u, 0x00000111u, 0x000500c4u, 0x00000006u, 0x00000113u, 0x00000112u, 0x0000005bu, + 0x0004003du, 0x00000006u, 0x00000114u, 0x000000b7u, 0x000500c2u, 0x00000006u, 0x00000115u, 0x00000114u, + 0x0000006au, 0x000500c5u, 0x00000006u, 0x00000116u, 0x00000113u, 0x00000115u, 0x0003003eu, 0x00000110u, + 0x00000116u, 0x0004003du, 0x00000006u, 0x00000118u, 0x000000b7u, 0x000500c7u, 0x00000006u, 0x0000011au, + 0x00000118u, 0x00000119u, 0x0003003eu, 0x00000117u, 0x0000011au, 0x0004003du, 0x00000006u, 0x0000011bu, + 0x00000117u, 0x000500acu, 0x00000030u, 0x0000011du, 0x0000011bu, 0x0000011cu, 0x000400a8u, 0x00000030u, + 0x0000011eu, 0x0000011du, 0x000300f7u, 0x00000120u, 0x00000000u, 0x000400fau, 0x0000011eu, 0x0000011fu, + 0x00000120u, 0x000200f8u, 0x0000011fu, 0x0004003du, 0x00000006u, 0x00000121u, 0x00000117u, 0x000500aau, + 0x00000030u, 0x00000122u, 0x00000121u, 0x0000011cu, 0x000300f7u, 0x00000124u, 0x00000000u, 0x000400fau, + 0x00000122u, 0x00000123u, 0x00000124u, 0x000200f8u, 0x00000123u, 0x0004003du, 0x00000006u, 0x00000125u, + 0x00000110u, 0x000500c7u, 0x00000006u, 0x00000126u, 0x00000125u, 0x0000004au, 0x000500abu, 0x00000030u, + 0x00000127u, 0x00000126u, 0x0000003au, 0x000200f9u, 0x00000124u, 0x000200f8u, 0x00000124u, 0x000700f5u, + 0x00000030u, 0x00000128u, 0x00000122u, 0x0000011fu, 0x00000127u, 0x00000123u, 0x000200f9u, 0x00000120u, + 0x000200f8u, 0x00000120u, 0x000700f5u, 0x00000030u, 0x00000129u, 0x0000011du, 0x000000dau, 0x00000128u, + 0x00000124u, 0x000300f7u, 0x0000012bu, 0x00000000u, 0x000400fau, 0x00000129u, 0x0000012au, 0x0000012bu, + 0x000200f8u, 0x0000012au, 0x0004003du, 0x00000006u, 0x0000012cu, 0x00000110u, 0x00050080u, 0x00000006u, + 0x0000012du, 0x0000012cu, 0x0000004au, 0x0003003eu, 0x00000110u, 0x0000012du, 0x000200f9u, 0x0000012bu, + 0x000200f8u, 0x0000012bu, 0x0004003du, 0x00000006u, 0x0000012eu, 0x000000a6u, 0x0004003du, 0x00000006u, + 0x0000012fu, 0x00000110u, 0x000500c5u, 0x00000006u, 0x00000130u, 0x0000012eu, 0x0000012fu, 0x000200feu, + 0x00000130u, 0x00010038u, 0x00050036u, 0x00000008u, 0x0000001bu, 0x00000000u, 0x00000018u, 0x00030037u, + 0x00000007u, 0x00000019u, 0x00030037u, 0x00000007u, 0x0000001au, 0x000200f8u, 0x0000001cu, 0x0004003bu, + 0x0000000du, 0x00000135u, 0x00000007u, 0x0004003bu, 0x00000007u, 0x00000138u, 0x00000007u, 0x0004003bu, + 0x00000007u, 0x0000013cu, 0x00000007u, 0x0004003du, 0x00000006u, 0x00000133u, 0x0000001au, 0x000500aau, + 0x00000030u, 0x00000134u, 0x00000133u, 0x0000004au, 0x000300f7u, 0x00000137u, 0x00000000u, 0x000400fau, + 0x00000134u, 0x00000136u, 0x0000013bu, 0x000200f8u, 0x00000136u, 0x0004003du, 0x00000006u, 0x00000139u, + 0x00000019u, 0x0003003eu, 0x00000138u, 0x00000139u, 0x00050039u, 0x00000008u, 0x0000013au, 0x00000013u, + 0x00000138u, 0x0003003eu, 0x00000135u, 0x0000013au, 0x000200f9u, 0x00000137u, 0x000200f8u, 0x0000013bu, + 0x0004003du, 0x00000006u, 0x0000013du, 0x00000019u, 0x0003003eu, 0x0000013cu, 0x0000013du, 0x00050039u, + 0x00000008u, 0x0000013eu, 0x0000000bu, 0x0000013cu, 0x0003003eu, 0x00000135u, 0x0000013eu, 0x000200f9u, + 0x00000137u, 0x000200f8u, 0x00000137u, 0x0004003du, 0x00000008u, 0x0000013fu, 0x00000135u, 0x000200feu, + 0x0000013fu, 0x00010038u, 0x00050036u, 0x00000006u, 0x00000020u, 0x00000000u, 0x0000001du, 0x00030037u, + 0x0000000du, 0x0000001eu, 0x00030037u, 0x00000007u, 0x0000001fu, 0x000200f8u, 0x00000021u, 0x0004003bu, + 0x00000007u, 0x00000144u, 0x00000007u, 0x0004003bu, 0x0000000du, 0x00000147u, 0x00000007u, 0x0004003bu, + 0x0000000du, 0x0000014bu, 0x00000007u, 0x0004003du, 0x00000006u, 0x00000142u, 0x0000001fu, 0x000500aau, + 0x00000030u, 0x00000143u, 0x00000142u, 0x0000004au, 0x000300f7u, 0x00000146u, 0x00000000u, 0x000400fau, + 0x00000143u, 0x00000145u, 0x0000014au, 0x000200f8u, 0x00000145u, 0x0004003du, 0x00000008u, 0x00000148u, + 0x0000001eu, 0x0003003eu, 0x00000147u, 0x00000148u, 0x00050039u, 0x00000006u, 0x00000149u, 0x00000016u, + 0x00000147u, 0x0003003eu, 0x00000144u, 0x00000149u, 0x000200f9u, 0x00000146u, 0x000200f8u, 0x0000014au, + 0x0004003du, 0x00000008u, 0x0000014cu, 0x0000001eu, 0x0003003eu, 0x0000014bu, 0x0000014cu, 0x00050039u, + 0x00000006u, 0x0000014du, 0x00000010u, 0x0000014bu, 0x0003003eu, 0x00000144u, 0x0000014du, 0x000200f9u, + 0x00000146u, 0x000200f8u, 0x00000146u, 0x0004003du, 0x00000006u, 0x0000014eu, 0x00000144u, 0x000200feu, + 0x0000014eu, 0x00010038u, 0x00050036u, 0x00000008u, 0x00000024u, 0x00000000u, 0x00000022u, 0x00030037u, + 0x0000000du, 0x00000023u, 0x000200f8u, 0x00000025u, 0x0004003du, 0x00000008u, 0x00000152u, 0x00000023u, + 0x0004007fu, 0x00000008u, 0x00000153u, 0x00000152u, 0x0006000cu, 0x00000008u, 0x00000154u, 0x00000001u, + 0x0000001bu, 0x00000153u, 0x00050081u, 0x00000008u, 0x00000155u, 0x00000151u, 0x00000154u, 0x00050088u, + 0x00000008u, 0x00000156u, 0x00000151u, 0x00000155u, 0x000200feu, 0x00000156u, 0x00010038u, +}; + constexpr uint32_t kSpv_vt_silu_and_mul[] = { 0x07230203u, 0x00010300u, 0x0008000bu, 0x0000021bu, 0x00000000u, 0x00020011u, 0x00000001u, 0x00020011u, 0x00001151u, 0x0006000bu, 0x00000001u, 0x4c534c47u, 0x6474732eu, 0x3035342eu, 0x00000000u, 0x0003000eu, @@ -7057,6 +9853,10 @@ constexpr uint32_t kSpecIds_vt_embedding[] = { 0u, 1u, 2u, }; +constexpr uint32_t kSpecIds_vt_gdn_post_conv[] = { + 0u, 1u, 2u, +}; + constexpr uint32_t kSpecIds_vt_matmul[] = { 0u, 1u, 2u, 3u, }; @@ -7085,13 +9885,21 @@ constexpr uint32_t kSpecIds_vt_rope_from_cache[] = { 0u, 1u, 2u, 3u, 4u, }; +constexpr uint32_t kSpecIds_vt_sigmoid_gate_bf16[] = { + 0u, +}; + } // namespace const SpirvModule kSpirvModules[] = { {"vt_add", kSpv_vt_add, sizeof(kSpv_vt_add) / sizeof(uint32_t), nullptr, 0}, {"vt_cast", kSpv_vt_cast, sizeof(kSpv_vt_cast) / sizeof(uint32_t), kSpecIds_vt_cast, 2}, + {"vt_causal_conv1d_update", kSpv_vt_causal_conv1d_update, sizeof(kSpv_vt_causal_conv1d_update) / sizeof(uint32_t), nullptr, 0}, {"vt_embedding", kSpv_vt_embedding, sizeof(kSpv_vt_embedding) / sizeof(uint32_t), kSpecIds_vt_embedding, 3}, {"vt_fused_chain", kSpv_vt_fused_chain, sizeof(kSpv_vt_fused_chain) / sizeof(uint32_t), nullptr, 0}, + {"vt_gdn_post_conv", kSpv_vt_gdn_post_conv, sizeof(kSpv_vt_gdn_post_conv) / sizeof(uint32_t), kSpecIds_vt_gdn_post_conv, 3}, + {"vt_gdn_state_gather", kSpv_vt_gdn_state_gather, sizeof(kSpv_vt_gdn_state_gather) / sizeof(uint32_t), nullptr, 0}, + {"vt_gdn_state_scatter", kSpv_vt_gdn_state_scatter, sizeof(kSpv_vt_gdn_state_scatter) / sizeof(uint32_t), nullptr, 0}, {"vt_greedy_argmax", kSpv_vt_greedy_argmax, sizeof(kSpv_vt_greedy_argmax) / sizeof(uint32_t), nullptr, 0}, {"vt_layer_norm", kSpv_vt_layer_norm, sizeof(kSpv_vt_layer_norm) / sizeof(uint32_t), nullptr, 0}, {"vt_matmul", kSpv_vt_matmul, sizeof(kSpv_vt_matmul) / sizeof(uint32_t), kSpecIds_vt_matmul, 4}, @@ -7102,7 +9910,9 @@ const SpirvModule kSpirvModules[] = { {"vt_relu", kSpv_vt_relu, sizeof(kSpv_vt_relu) / sizeof(uint32_t), nullptr, 0}, {"vt_reshape_and_cache", kSpv_vt_reshape_and_cache, sizeof(kSpv_vt_reshape_and_cache) / sizeof(uint32_t), kSpecIds_vt_reshape_and_cache, 1}, {"vt_rms_norm", kSpv_vt_rms_norm, sizeof(kSpv_vt_rms_norm) / sizeof(uint32_t), nullptr, 0}, + {"vt_rms_norm_gated", kSpv_vt_rms_norm_gated, sizeof(kSpv_vt_rms_norm_gated) / sizeof(uint32_t), nullptr, 0}, {"vt_rope_from_cache", kSpv_vt_rope_from_cache, sizeof(kSpv_vt_rope_from_cache) / sizeof(uint32_t), kSpecIds_vt_rope_from_cache, 5}, + {"vt_sigmoid_gate_bf16", kSpv_vt_sigmoid_gate_bf16, sizeof(kSpv_vt_sigmoid_gate_bf16) / sizeof(uint32_t), kSpecIds_vt_sigmoid_gate_bf16, 1}, {"vt_silu_and_mul", kSpv_vt_silu_and_mul, sizeof(kSpv_vt_silu_and_mul) / sizeof(uint32_t), nullptr, 0}, }; const size_t kSpirvModuleCount = sizeof(kSpirvModules) / sizeof(kSpirvModules[0]); diff --git a/tests/vt/test_vulkan_backend.cpp b/tests/vt/test_vulkan_backend.cpp index 1d388072a..de116b107 100644 --- a/tests/vt/test_vulkan_backend.cpp +++ b/tests/vt/test_vulkan_backend.cpp @@ -56,22 +56,26 @@ TEST_CASE("the committed SPIR-V table is present and well-formed") { // point of the split: at the target shader surface the words must not be // re-parsed by every TU that merely needs the table. const size_t n = vt::vulkan::kSpirvModuleCount; - CHECK(n == 16); + CHECK(n == 22); for (size_t mi = 0; mi < n; ++mi) { const auto& m = vt::vulkan::kSpirvModules[mi]; CAPTURE(m.name); REQUIRE(m.word_count > 5); // a SPIR-V header alone is 5 words CHECK(m.words[0] == 0x07230203u); // SPIR-V magic } - // The eight registered ops are served by exactly these seven modules (kCastBf16 - // and kCastF32 share vt_cast), so a rename in either direction breaks here - // rather than at pipeline-creation time on a device we might not have. + // Every registered op is served by one of these modules (kCastBf16 and kCastF32 + // share vt_cast), so a rename in either direction breaks here rather than at + // pipeline-creation time on a device we might not have. for (const char* want : {"vt_add", "vt_cast", "vt_embedding", "vt_fused_chain", "vt_greedy_argmax", "vt_layer_norm", "vt_matmul", "vt_matmul_coopmat", "vt_matmul_vec", "vt_paged_attn", "vt_qkv_split", "vt_relu", "vt_reshape_and_cache", "vt_rms_norm", - "vt_rope_from_cache", "vt_silu_and_mul"}) { + "vt_rope_from_cache", "vt_silu_and_mul", + // BACKEND-VULKAN-GDN: the GDN / conv1d glue family. + "vt_causal_conv1d_update", "vt_gdn_post_conv", + "vt_gdn_state_gather", "vt_gdn_state_scatter", + "vt_rms_norm_gated", "vt_sigmoid_gate_bf16"}) { bool found = false; for (size_t mi = 0; mi < vt::vulkan::kSpirvModuleCount; ++mi) { if (std::strcmp(vt::vulkan::kSpirvModules[mi].name, want) == 0) found = true; @@ -150,6 +154,18 @@ TEST_CASE("the committed SPIR-V table records each module's specialization const // over llama.cpp's module-per-#define in miniature. REQUIRE(m.spec_id_count == 4); for (uint32_t want = 0; want < 4; ++want) CHECK(m.spec_ids[want] == want); + } else if (std::strcmp(m.name, "vt_sigmoid_gate_bf16") == 0) { + // ONE axis, and the count is the assertion: the gate is f32 and the output + // bf16 by the op contract (src/vt/ops.cpp:3327-3334), so only the attention + // operand varies. A second constant appearing here would mean someone + // widened the shader past what the op actually promises. + REQUIRE(m.spec_id_count == 1); + CHECK(m.spec_ids[0] == 0u); + } else if (std::strcmp(m.name, "vt_gdn_post_conv") == 0) { + // conv dtype, the shared q/k/v dtype, the shared araw/braw dtype. g/beta, + // a_log and dt_bias are f32 by contract and are therefore NOT axes. + REQUIRE(m.spec_id_count == 3); + for (uint32_t want = 0; want < 3; ++want) CHECK(m.spec_ids[want] == want); } else { CHECK(m.spec_id_count == 0); } @@ -381,15 +397,29 @@ TEST_CASE("Vulkan registers the W0 op set and NOT the unimplemented rest") { // with no llama.cpp Vulkan counterpart), the KV write, the // QKV split and the rotary APPLY. vt::OpId::kPagedAttention, vt::OpId::kReshapeAndCache, - vt::OpId::kQkvSplit, vt::OpId::kRopeFromCache}) { + vt::OpId::kQkvSplit, vt::OpId::kRopeFromCache, + // BACKEND-VULKAN-GDN: the GDN / conv1d glue family that a + // GDN hybrid (Qwen3.6-27B) hits on every step. + vt::OpId::kSigmoidGateBf16, vt::OpId::kRmsNormGated, + vt::OpId::kGdnStateGather, vt::OpId::kGdnStateScatter, + vt::OpId::kCausalConv1dUpdate, vt::OpId::kGdnPostConv}) { CHECK(vt::OpRegistered(op, DeviceType::kVULKAN)); } // No NATIVE Vulkan kernel yet for the rotary TABLE BUILD (kRopeCosSinCache and // kRopeNeox both construct the angle in double -- deliberately left on the // portable tier, mirroring vLLM's own split), quant, MoE, or the sampler beyond // greedy argmax. + // + // kGdnPrefill / kGdnDecode are ALSO deliberately absent and stay listed here: + // they are the chunked gated-delta recurrences, the model's linear-attention + // core rather than glue, and BACKEND-VULKAN-GDN scoped them out rather than + // ship them unverified. kCausalConv1dFwd (the prefill conv) is out for a + // narrower reason -- its state write-back needs a different dispatch shape than + // the decode update, see src/vt/vulkan/vulkan_ops.cpp. for (vt::OpId op : {vt::OpId::kRopeNeox, vt::OpId::kRopeCosSinCache, - vt::OpId::kApplyTemperature, vt::OpId::kMoeRouterTopK}) { + vt::OpId::kApplyTemperature, vt::OpId::kMoeRouterTopK, + vt::OpId::kGdnPrefill, vt::OpId::kGdnDecode, + vt::OpId::kCausalConv1dFwd}) { CHECK_FALSE(vt::OpRegistered(op, DeviceType::kVULKAN)); } // ...but they no longer THROW, and this assertion used to say they did. @@ -968,3 +998,547 @@ TEST_CASE("Vulkan float-controls are PROBED and reported, not assumed") { // skeleton makes (one workgroup per row). CHECK(ctx.max_workgroup_count_x() >= 65535u); } + +// =========================================================================== +// BACKEND-VULKAN-GDN — numeric gates for the GDN / conv1d glue family. +// +// THE ORACLE IS OUR OWN CPU BACKEND, evaluated in the SAME binary on the SAME +// inputs, which is the contract tests/vt/test_backend_cross_device.cpp already +// states. It is used here rather than there because these ops need shapes with +// structure — padded gate strides, widened cache rows, NULL cache indices — that +// the generic harness does not generate. +// +// EVERY CASE ALSO ASSERTS THE MECHANISM, not only the numbers. On a unified +// device an unregistered op silently resolves to the portable CPU reference tier +// and produces answers that are not merely close to the oracle but IDENTICAL to +// it, so a numbers-only gate would pass just as green with no shader written at +// all. `PipelineExistsFor` proves a Vulkan pipeline for the intended module was +// built, and the provider's `last_selected` name proves the call did not fall +// through to the host. Both, because either alone has a hole: a pipeline can +// exist from an earlier case in the same process, and a provider can be selected +// for a shape whose kernel then declines. +// =========================================================================== +namespace { + +// Deterministic, library-independent filler. A fixed LCG rather than +// std::mt19937 so both backends see byte-identical inputs regardless of standard +// library version, spread over a range that actually exercises sigmoid and +// softplus instead of sitting in their linear middle. +std::vector Spread(size_t n, float scale, uint32_t seed) { + std::vector v(n); + uint32_t s = seed | 1u; + for (size_t i = 0; i < n; ++i) { + s = s * 1664525u + 1013904223u; + v[i] = (static_cast(s >> 8) / 8388608.0f - 1.0f) * scale; + } + return v; +} + +double NmseOf(const std::vector& ref, const std::vector& got) { + REQUIRE(ref.size() == got.size()); + double num = 0.0, den = 0.0; + for (size_t i = 0; i < ref.size(); ++i) { + const double dd = static_cast(ref[i]) - static_cast(got[i]); + num += dd * dd; + den += static_cast(ref[i]) * static_cast(ref[i]); + } + return den == 0.0 ? num : num / den; +} + +// The already-ported bar for reducing / arithmetic kernels +// (tests/vt/test_backend_cross_device.cpp, itself from llama.cpp +// test-quantize-fns:17-28). NOT bit-exactness: a workgroup tree reduction does +// not preserve the CPU tier's fixed sequential accumulation order. +constexpr double kGdnNmseTol = 5e-4; + +// Owns one allocation on a backend. Deliberately not retrofitted onto the cases +// above, which predate this row — rewriting them would put unrelated churn in +// this change. +class Buf { + public: + Buf(Backend& b, size_t elems, size_t elem_bytes) : b_(b), p_(b.Alloc(elems * elem_bytes)) {} + ~Buf() { b_.Free(p_); } + Buf(const Buf&) = delete; + Buf& operator=(const Buf&) = delete; + void* p() const { return p_; } + template + T* as() const { return static_cast(p_); } + + private: + Backend& b_; + void* p_; +}; + +// Was this op served by the NATIVE Vulkan kernel on its last call, BY NAME? The +// reference tier registers under a different name, so this is what separates +// "the shader ran" from "the host kernel ran and the numbers matched". +bool RanNative(vt::OpId op) { + const auto stats = vt::GetOpProviderStats(op, DeviceType::kVULKAN); + return stats.last_selected != nullptr && + std::string(stats.last_selected) == std::string(vt::kNativeProviderName); +} + +} // namespace + +TEST_CASE("GDN sigmoid output-gate runs NATIVELY on Vulkan and matches the CPU oracle") { + if (!VulkanPresent()) return; + auto& ctx = vt::vulkan::VulkanContext::Get(); + Backend& vk = vt::GetBackend(DeviceType::kVULKAN); + Backend& cpu = vt::GetBackend(DeviceType::kCPU); + Queue vq = vk.CreateQueue(); + Queue cq = cpu.CreateQueue(); + const Device vd{DeviceType::kVULKAN, 0}; + const Device cd{DeviceType::kCPU, 0}; + + // 300 is deliberately NOT a multiple of the 128-wide workgroup, so the tail + // guard is exercised rather than assumed. + constexpr int64_t kN = 300; + const std::vector attn = Spread(kN, 3.0f, 11u); + const std::vector gate = Spread(kN, 6.0f, 29u); // wide: sigmoid saturates + + Buf va(vk, kN, 4), vg(vk, kN, 4), vo(vk, kN, 2); + Buf ca(cpu, kN, 4), cg(cpu, kN, 4), co(cpu, kN, 2); + vk.Copy(vq, va.p(), attn.data(), kN * 4); + vk.Copy(vq, vg.p(), gate.data(), kN * 4); + std::memcpy(ca.p(), attn.data(), kN * 4); + std::memcpy(cg.p(), gate.data(), kN * 4); + vk.Synchronize(vq); + + Tensor vat = Tensor::Contiguous(va.p(), vt::DType::kF32, vd, {kN}); + Tensor vgt = Tensor::Contiguous(vg.p(), vt::DType::kF32, vd, {kN}); + Tensor vot = Tensor::Contiguous(vo.p(), vt::DType::kBF16, vd, {kN}); + Tensor cat = Tensor::Contiguous(ca.p(), vt::DType::kF32, cd, {kN}); + Tensor cgt = Tensor::Contiguous(cg.p(), vt::DType::kF32, cd, {kN}); + Tensor cot = Tensor::Contiguous(co.p(), vt::DType::kBF16, cd, {kN}); + + vt::SigmoidGateBf16(cq, cot, cat, cgt); + vt::SigmoidGateBf16(vq, vot, vat, vgt); + vk.Synchronize(vq); + + CHECK(ctx.PipelineExistsFor("vt_sigmoid_gate_bf16")); + CHECK(RanNative(vt::OpId::kSigmoidGateBf16)); + + std::vector got(kN); + vk.Copy(vq, got.data(), vo.p(), kN * 2); + vk.Synchronize(vq); + std::vector ref_f(kN), got_f(kN); + for (int64_t i = 0; i < kN; ++i) { + ref_f[i] = vt::BF16ToF32(co.as()[i]); + got_f[i] = vt::BF16ToF32(got[i]); + } + const double nmse = NmseOf(ref_f, got_f); + MESSAGE("sigmoid_gate_bf16 NMSE vs the CPU oracle: " << nmse); + CHECK(nmse <= kGdnNmseTol); + + vk.DestroyQueue(vq); + cpu.DestroyQueue(cq); +} + +TEST_CASE("gated RMSNorm runs NATIVELY on Vulkan: silu, sigmoid, and a padded gate") { + if (!VulkanPresent()) return; + auto& ctx = vt::vulkan::VulkanContext::Get(); + Backend& vk = vt::GetBackend(DeviceType::kVULKAN); + Backend& cpu = vt::GetBackend(DeviceType::kCPU); + Queue vq = vk.CreateQueue(); + Queue cq = cpu.CreateQueue(); + const Device vd{DeviceType::kVULKAN, 0}; + const Device cd{DeviceType::kCPU, 0}; + + // D = 300 > the 128-wide workgroup, so each lane walks the row in a strided + // loop and the tree reduction is genuinely over partial sums. + constexpr int64_t kRows = 5, kD = 300; + const std::vector x = Spread(kRows * kD, 2.0f, 7u); + const std::vector z = Spread(kRows * kD, 4.0f, 13u); + const std::vector w = Spread(kD, 1.5f, 17u); + + Buf vx(vk, kRows * kD, 4), vz(vk, kRows * kD, 4), vw(vk, kD, 4), vo(vk, kRows * kD, 4); + Buf cx(cpu, kRows * kD, 4), cz(cpu, kRows * kD, 4), cw(cpu, kD, 4), co(cpu, kRows * kD, 4); + vk.Copy(vq, vx.p(), x.data(), x.size() * 4); + vk.Copy(vq, vz.p(), z.data(), z.size() * 4); + vk.Copy(vq, vw.p(), w.data(), w.size() * 4); + std::memcpy(cx.p(), x.data(), x.size() * 4); + std::memcpy(cz.p(), z.data(), z.size() * 4); + std::memcpy(cw.p(), w.data(), w.size() * 4); + vk.Synchronize(vq); + + Tensor vxt = Tensor::Contiguous(vx.p(), vt::DType::kF32, vd, {kRows, kD}); + Tensor vzt = Tensor::Contiguous(vz.p(), vt::DType::kF32, vd, {kRows, kD}); + Tensor vwt = Tensor::Contiguous(vw.p(), vt::DType::kF32, vd, {kD}); + Tensor vot = Tensor::Contiguous(vo.p(), vt::DType::kF32, vd, {kRows, kD}); + Tensor cxt = Tensor::Contiguous(cx.p(), vt::DType::kF32, cd, {kRows, kD}); + Tensor czt = Tensor::Contiguous(cz.p(), vt::DType::kF32, cd, {kRows, kD}); + Tensor cwt = Tensor::Contiguous(cw.p(), vt::DType::kF32, cd, {kD}); + Tensor cot = Tensor::Contiguous(co.p(), vt::DType::kF32, cd, {kRows, kD}); + + for (bool sigmoid_gate : {false, true}) { + vt::RmsNormGatedArgs args; + args.eps = 1e-6f; + args.sigmoid_gate = sigmoid_gate; + vt::RmsNormGated(cq, cot, cxt, czt, cwt, args); + vt::RmsNormGated(vq, vot, vxt, vzt, vwt, args); + vk.Synchronize(vq); + std::vector got(kRows * kD), ref(kRows * kD); + vk.Copy(vq, got.data(), vo.p(), got.size() * 4); + vk.Synchronize(vq); + std::memcpy(ref.data(), co.p(), ref.size() * 4); + const double nmse = NmseOf(ref, got); + // Assembled OUTSIDE the macro: MESSAGE(x << y) hands the expression to the + // doctest MessageBuilder, so a flag written inside renders as "1". + const std::string line = std::string("rmsnorm_gated (") + + (sigmoid_gate ? "sigmoid" : "silu") + + ") NMSE vs the CPU oracle: " + std::to_string(nmse); + MESSAGE(line); + CHECK(nmse <= kGdnNmseTol); + } + CHECK(ctx.PipelineExistsFor("vt_rms_norm_gated")); + CHECK(RanNative(vt::OpId::kRmsNormGated)); + + // THE PADDED-ROW rank-3 GATE, which is the shape the merged-qkvz path actually + // produces: the gate is the `z` slice of one fused projection, so its TOKEN + // stride exceeds Hv*D while the inner block stays contiguous. A shader that + // ignored gate.stride[0] would still pass the rank-2 case above, so this is the + // assertion that the stride is honoured at all. + constexpr int64_t kT = 3, kHv = 2, kDv = 64, kPad = 16; + constexpr int64_t kZStride = kHv * kDv + kPad; + const std::vector x3 = Spread(kT * kHv * kDv, 2.0f, 23u); + const std::vector z3 = Spread(kT * kZStride, 4.0f, 31u); + const std::vector w3 = Spread(kDv, 1.5f, 37u); + + Buf vx3(vk, kT * kHv * kDv, 4), vz3(vk, kT * kZStride, 4), vw3(vk, kDv, 4), + vo3(vk, kT * kHv * kDv, 4); + Buf cx3(cpu, kT * kHv * kDv, 4), cz3(cpu, kT * kZStride, 4), cw3(cpu, kDv, 4), + co3(cpu, kT * kHv * kDv, 4); + vk.Copy(vq, vx3.p(), x3.data(), x3.size() * 4); + vk.Copy(vq, vz3.p(), z3.data(), z3.size() * 4); + vk.Copy(vq, vw3.p(), w3.data(), w3.size() * 4); + std::memcpy(cx3.p(), x3.data(), x3.size() * 4); + std::memcpy(cz3.p(), z3.data(), z3.size() * 4); + std::memcpy(cw3.p(), w3.data(), w3.size() * 4); + vk.Synchronize(vq); + + auto padded_gate = [](void* p, Device dev) { + Tensor t = Tensor::Contiguous(p, vt::DType::kF32, dev, {kT, kHv, kDv}); + t.stride[0] = kZStride; // the padded TOKEN stride; inner dims stay packed + return t; + }; + Tensor vx3t = Tensor::Contiguous(vx3.p(), vt::DType::kF32, vd, {kT, kHv, kDv}); + Tensor vo3t = Tensor::Contiguous(vo3.p(), vt::DType::kF32, vd, {kT, kHv, kDv}); + Tensor vw3t = Tensor::Contiguous(vw3.p(), vt::DType::kF32, vd, {kDv}); + Tensor cx3t = Tensor::Contiguous(cx3.p(), vt::DType::kF32, cd, {kT, kHv, kDv}); + Tensor co3t = Tensor::Contiguous(co3.p(), vt::DType::kF32, cd, {kT, kHv, kDv}); + Tensor cw3t = Tensor::Contiguous(cw3.p(), vt::DType::kF32, cd, {kDv}); + Tensor vz3t = padded_gate(vz3.p(), vd); + Tensor cz3t = padded_gate(cz3.p(), cd); + + vt::RmsNormGatedArgs args3; + args3.eps = 1e-6f; + vt::RmsNormGated(cq, co3t, cx3t, cz3t, cw3t, args3); + vt::RmsNormGated(vq, vo3t, vx3t, vz3t, vw3t, args3); + vk.Synchronize(vq); + std::vector got3(kT * kHv * kDv), ref3(kT * kHv * kDv); + vk.Copy(vq, got3.data(), vo3.p(), got3.size() * 4); + vk.Synchronize(vq); + std::memcpy(ref3.data(), co3.p(), ref3.size() * 4); + const double nmse3 = NmseOf(ref3, got3); + MESSAGE("rmsnorm_gated (padded rank-3 gate) NMSE vs the CPU oracle: " << nmse3); + CHECK(nmse3 <= kGdnNmseTol); + + vk.DestroyQueue(vq); + cpu.DestroyQueue(cq); +} + +TEST_CASE("GDN state gather/scatter run NATIVELY on Vulkan and are BIT-EXACT") { + if (!VulkanPresent()) return; + auto& ctx = vt::vulkan::VulkanContext::Get(); + Backend& vk = vt::GetBackend(DeviceType::kVULKAN); + Backend& cpu = vt::GetBackend(DeviceType::kCPU); + Queue vq = vk.CreateQueue(); + Queue cq = cpu.CreateQueue(); + const Device vd{DeviceType::kVULKAN, 0}; + const Device cd{DeviceType::kCPU, 0}; + + // BIT-EXACT, not NMSE: these two ops move f32 words and compute nothing, so + // anything short of equality would be hiding a bug (the tier + // vt_reshape_and_cache is already gated in). + // + // The cache inner dim is WIDER than the working one (6 vs 4) — the + // spec-decode-widened conv row. That shape is the whole reason the kernel walks + // channels at the cache's physical stride, and a shader that assumed the + // contiguous fast path would pass a same-width test and corrupt this one. + constexpr int64_t kCacheRows = 5, kC = 3, kCacheInner = 6, kWorkInner = 4; + constexpr int64_t kRows = 3; + constexpr int64_t kCacheElems = kCacheRows * kC * kCacheInner; + constexpr int64_t kWorkElems = kRows * kC * kWorkInner; + const std::vector cache_init = Spread(kCacheElems, 5.0f, 41u); + const std::vector idx = {4, 0, 2}; + // Request 1 has NO initial state: its working row must come back ZEROED, not + // copied. i8 is the interesting width — it is why the shader reads the flag + // byte-wise through the 32-bit view instead of needing VK_KHR_8bit_storage. + // + // THREE ELEMENTS IS ALSO THREE BYTES, and that is deliberate: it is the shape + // that caught the sub-word allocation bug this row fixed. A 3-byte VkBuffer's + // `uint[]` view has ZERO elements, so every flag read back as false and the + // gather zeroed rows it should have copied — silently, because the read is + // robust rather than faulting. AllocBuffer now rounds every buffer up to a + // whole 32-bit word (src/vt/vulkan/vulkan_context.cpp), and keeping this length + // at 3 is what keeps that fix gated. Do not "tidy" it to 4. + const std::vector his = {1, 0, 1}; + + Buf vc(vk, kCacheElems, 4), vw(vk, kWorkElems, 4), vi(vk, kRows, 4), vh(vk, kRows, 1); + Buf cc(cpu, kCacheElems, 4), cw(cpu, kWorkElems, 4), ci(cpu, kRows, 4), ch(cpu, kRows, 1); + vk.Copy(vq, vc.p(), cache_init.data(), kCacheElems * 4); + vk.Copy(vq, vi.p(), idx.data(), kRows * 4); + vk.Copy(vq, vh.p(), his.data(), kRows); + std::memcpy(cc.p(), cache_init.data(), kCacheElems * 4); + std::memcpy(ci.p(), idx.data(), kRows * 4); + std::memcpy(ch.p(), his.data(), kRows); + vk.Synchronize(vq); + + auto cache_t = [](void* p, Device dev) { + return Tensor::Contiguous(p, vt::DType::kF32, dev, {kCacheRows, kC, kCacheInner}); + }; + auto work_t = [](void* p, Device dev) { + return Tensor::Contiguous(p, vt::DType::kF32, dev, {kRows, kC, kWorkInner}); + }; + Tensor vct = cache_t(vc.p(), vd), vwt = work_t(vw.p(), vd); + Tensor cct = cache_t(cc.p(), cd), cwt = work_t(cw.p(), cd); + Tensor vit = Tensor::Contiguous(vi.p(), vt::DType::kI32, vd, {kRows}); + Tensor cit = Tensor::Contiguous(ci.p(), vt::DType::kI32, cd, {kRows}); + Tensor vht = Tensor::Contiguous(vh.p(), vt::DType::kI8, vd, {kRows}); + Tensor cht = Tensor::Contiguous(ch.p(), vt::DType::kI8, cd, {kRows}); + + vt::GdnStateGather(cq, cwt, cct, cit, &cht); + vt::GdnStateGather(vq, vwt, vct, vit, &vht); + vk.Synchronize(vq); + CHECK(ctx.PipelineExistsFor("vt_gdn_state_gather")); + CHECK(RanNative(vt::OpId::kGdnStateGather)); + + std::vector got(kWorkElems); + vk.Copy(vq, got.data(), vw.p(), kWorkElems * 4); + vk.Synchronize(vq); + CHECK(std::memcmp(got.data(), cw.p(), kWorkElems * 4) == 0); + // The zeroing is asserted DIRECTLY, not left to the memcmp: if both kernels + // wrongly copied row 1, the comparison above would still be green. + bool row1_zero = true; + for (int64_t e = 0; e < kC * kWorkInner; ++e) { + if (got[kC * kWorkInner + e] != 0.0f) row1_zero = false; + } + CHECK(row1_zero); + + // Scatter new working rows back and compare the WHOLE cache, so an over-wide + // write into the widened row's tail columns is caught. + const std::vector work_new = Spread(kWorkElems, 9.0f, 43u); + vk.Copy(vq, vw.p(), work_new.data(), kWorkElems * 4); + std::memcpy(cw.p(), work_new.data(), kWorkElems * 4); + vk.Synchronize(vq); + vt::GdnStateScatter(cq, cct, cwt, cit); + vt::GdnStateScatter(vq, vct, vwt, vit); + vk.Synchronize(vq); + CHECK(ctx.PipelineExistsFor("vt_gdn_state_scatter")); + CHECK(RanNative(vt::OpId::kGdnStateScatter)); + + std::vector cache_got(kCacheElems); + vk.Copy(vq, cache_got.data(), vc.p(), kCacheElems * 4); + vk.Synchronize(vq); + CHECK(std::memcmp(cache_got.data(), cc.p(), kCacheElems * 4) == 0); + // And cache row 1, which no index names, still holds its ORIGINAL bytes — + // proof the scatter wrote only where it was told to. + CHECK(std::memcmp(cache_got.data() + kC * kCacheInner, + cache_init.data() + kC * kCacheInner, + static_cast(kC * kCacheInner) * 4) == 0); + + vk.DestroyQueue(vq); + cpu.DestroyQueue(cq); +} + +TEST_CASE("the decode causal conv1d update runs NATIVELY on Vulkan, state roll included") { + if (!VulkanPresent()) return; + auto& ctx = vt::vulkan::VulkanContext::Get(); + Backend& vk = vt::GetBackend(DeviceType::kVULKAN); + Backend& cpu = vt::GetBackend(DeviceType::kCPU); + Queue vq = vk.CreateQueue(); + Queue cq = cpu.CreateQueue(); + const Device vd{DeviceType::kVULKAN, 0}; + const Device cd{DeviceType::kCPU, 0}; + + // conv_state has MORE rows than the batch and is addressed through + // conv_state_indices — the in-place indexed decode path the model takes. A + // NEGATIVE index is upstream's NULL block and must leave both the output + // element and the cache row alone. + constexpr int64_t kBatch = 4, kC = 5, kK = 4, kWidth = kK - 1; + constexpr int64_t kStateRows = 6, kStateLen = kWidth; + const std::vector x = Spread(kBatch * kC, 2.0f, 53u); + const std::vector w = Spread(kC * kK, 1.0f, 59u); + const std::vector bias = Spread(kC, 0.5f, 61u); + const std::vector state0 = Spread(kStateRows * kC * kStateLen, 3.0f, 67u); + const std::vector cidx = {5, 1, -1, 0}; // token 2 -> NULL block + + Buf vx(vk, kBatch * kC, 4), vw(vk, kC * kK, 4), vb(vk, kC, 4), vo(vk, kBatch * kC, 4), + vs(vk, kStateRows * kC * kStateLen, 4), vi(vk, kBatch, 4); + Buf cx(cpu, kBatch * kC, 4), cw(cpu, kC * kK, 4), cb(cpu, kC, 4), co(cpu, kBatch * kC, 4), + cs(cpu, kStateRows * kC * kStateLen, 4), cci(cpu, kBatch, 4); + vk.Copy(vq, vx.p(), x.data(), x.size() * 4); + vk.Copy(vq, vw.p(), w.data(), w.size() * 4); + vk.Copy(vq, vb.p(), bias.data(), bias.size() * 4); + vk.Copy(vq, vs.p(), state0.data(), state0.size() * 4); + vk.Copy(vq, vi.p(), cidx.data(), cidx.size() * 4); + // The output buffer is pre-seeded so the NULL-block token's element can be + // checked for having been LEFT ALONE rather than merely being plausible. + const std::vector out_seed(kBatch * kC, -12345.0f); + vk.Copy(vq, vo.p(), out_seed.data(), out_seed.size() * 4); + std::memcpy(cx.p(), x.data(), x.size() * 4); + std::memcpy(cw.p(), w.data(), w.size() * 4); + std::memcpy(cb.p(), bias.data(), bias.size() * 4); + std::memcpy(cs.p(), state0.data(), state0.size() * 4); + std::memcpy(cci.p(), cidx.data(), cidx.size() * 4); + std::memcpy(co.p(), out_seed.data(), out_seed.size() * 4); + vk.Synchronize(vq); + + Tensor vxt = Tensor::Contiguous(vx.p(), vt::DType::kF32, vd, {kBatch, kC}); + Tensor vwt = Tensor::Contiguous(vw.p(), vt::DType::kF32, vd, {kC, kK}); + Tensor vbt = Tensor::Contiguous(vb.p(), vt::DType::kF32, vd, {kC}); + Tensor vot = Tensor::Contiguous(vo.p(), vt::DType::kF32, vd, {kBatch, kC}); + Tensor vst = Tensor::Contiguous(vs.p(), vt::DType::kF32, vd, {kStateRows, kC, kStateLen}); + Tensor vit = Tensor::Contiguous(vi.p(), vt::DType::kI32, vd, {kBatch}); + Tensor cxt = Tensor::Contiguous(cx.p(), vt::DType::kF32, cd, {kBatch, kC}); + Tensor cwt = Tensor::Contiguous(cw.p(), vt::DType::kF32, cd, {kC, kK}); + Tensor cbt = Tensor::Contiguous(cb.p(), vt::DType::kF32, cd, {kC}); + Tensor cot = Tensor::Contiguous(co.p(), vt::DType::kF32, cd, {kBatch, kC}); + Tensor cst = Tensor::Contiguous(cs.p(), vt::DType::kF32, cd, {kStateRows, kC, kStateLen}); + Tensor citt = Tensor::Contiguous(cci.p(), vt::DType::kI32, cd, {kBatch}); + + vt::CausalConv1dArgs args; // silu_activation defaults true, as Qwen GDN uses + vt::CausalConv1dUpdate(cq, cot, cxt, cwt, &cbt, cst, args, &citt); + vt::CausalConv1dUpdate(vq, vot, vxt, vwt, &vbt, vst, args, &vit); + vk.Synchronize(vq); + + CHECK(ctx.PipelineExistsFor("vt_causal_conv1d_update")); + CHECK(RanNative(vt::OpId::kCausalConv1dUpdate)); + + std::vector got(kBatch * kC), ref(kBatch * kC); + vk.Copy(vq, got.data(), vo.p(), got.size() * 4); + vk.Synchronize(vq); + std::memcpy(ref.data(), co.p(), ref.size() * 4); + const double nmse = NmseOf(ref, got); + MESSAGE("causal_conv1d_update NMSE vs the CPU oracle: " << nmse); + CHECK(nmse <= kGdnNmseTol); + // The NULL-block token kept its seed. + for (int64_t c = 0; c < kC; ++c) { + CAPTURE(c); + CHECK(got[2 * kC + c] == -12345.0f); + } + + // THE ROLLED STATE IS THE HALF A NUMBERS-ONLY OUTPUT CHECK MISSES: the output + // reads the OLD taps, so a kernel that never rolled the window would produce a + // perfect first step and diverge from the second one onward. + std::vector state_got(kStateRows * kC * kStateLen); + vk.Copy(vq, state_got.data(), vs.p(), state_got.size() * 4); + vk.Synchronize(vq); + const std::vector state_ref(cs.as(), cs.as() + state_got.size()); + CHECK(std::memcmp(state_got.data(), state_ref.data(), state_got.size() * 4) == 0); + // Spelled out independently of the oracle: the roll writes the RAW x sample + // into the last tap, so if BOTH kernels skipped the roll the memcmp above + // would still be green. + for (int64_t bt = 0; bt < kBatch; ++bt) { + if (cidx[static_cast(bt)] < 0) continue; + for (int64_t c = 0; c < kC; ++c) { + CAPTURE(bt); + CAPTURE(c); + const int64_t slot = cidx[static_cast(bt)]; + const int64_t last = (slot * kC + c) * kStateLen + kWidth - 1; + CHECK(state_got[static_cast(last)] == x[static_cast(bt * kC + c)]); + } + } + + vk.DestroyQueue(vq); + cpu.DestroyQueue(cq); +} + +TEST_CASE("the fused GDN post-conv preamble runs NATIVELY on Vulkan, all five outputs") { + if (!VulkanPresent()) return; + auto& ctx = vt::vulkan::VulkanContext::Get(); + Backend& vk = vt::GetBackend(DeviceType::kVULKAN); + Backend& cpu = vt::GetBackend(DeviceType::kCPU); + Queue vq = vk.CreateQueue(); + Queue cq = cpu.CreateQueue(); + const Device vd{DeviceType::kVULKAN, 0}; + const Device cd{DeviceType::kCPU, 0}; + + constexpr int64_t kT = 3, kHk = 2, kDk = 64, kHv = 2, kDv = 32; + constexpr int64_t kKeyDim = kHk * kDk, kValDim = kHv * kDv; + constexpr int64_t kConvDim = 2 * kKeyDim + kValDim; + const std::vector conv = Spread(kT * kConvDim, 2.0f, 71u); + // araw is spread WIDE on purpose: softplus has two branches (the > 20 + // pass-through and the log1p one) and a narrow range would only ever reach one. + const std::vector araw = Spread(kT * kHv, 25.0f, 73u); + const std::vector braw = Spread(kT * kHv, 4.0f, 79u); + const std::vector a_log = Spread(kHv, 1.0f, 83u); + const std::vector dt_bias = Spread(kHv, 1.0f, 89u); + + Buf vconv(vk, kT * kConvDim, 4), va(vk, kT * kHv, 4), vb(vk, kT * kHv, 4), val(vk, kHv, 4), + vdt(vk, kHv, 4); + Buf vqo(vk, kT * kKeyDim, 4), vko(vk, kT * kKeyDim, 4), vvo(vk, kT * kValDim, 4), + vgo(vk, kT * kHv, 4), vbo(vk, kT * kHv, 4); + Buf cconv(cpu, kT * kConvDim, 4), ca(cpu, kT * kHv, 4), cb(cpu, kT * kHv, 4), + cal(cpu, kHv, 4), cdt(cpu, kHv, 4); + Buf cqo(cpu, kT * kKeyDim, 4), cko(cpu, kT * kKeyDim, 4), cvo(cpu, kT * kValDim, 4), + cgo(cpu, kT * kHv, 4), cbo(cpu, kT * kHv, 4); + + vk.Copy(vq, vconv.p(), conv.data(), conv.size() * 4); + vk.Copy(vq, va.p(), araw.data(), araw.size() * 4); + vk.Copy(vq, vb.p(), braw.data(), braw.size() * 4); + vk.Copy(vq, val.p(), a_log.data(), a_log.size() * 4); + vk.Copy(vq, vdt.p(), dt_bias.data(), dt_bias.size() * 4); + std::memcpy(cconv.p(), conv.data(), conv.size() * 4); + std::memcpy(ca.p(), araw.data(), araw.size() * 4); + std::memcpy(cb.p(), braw.data(), braw.size() * 4); + std::memcpy(cal.p(), a_log.data(), a_log.size() * 4); + std::memcpy(cdt.p(), dt_bias.data(), dt_bias.size() * 4); + vk.Synchronize(vq); + + auto run = [&](Queue& q, Device dev, const Buf& bconv, const Buf& ba, const Buf& bb, + const Buf& bal, const Buf& bdt, const Buf& bq, const Buf& bk, const Buf& bv, + const Buf& bg, const Buf& bbeta) { + Tensor tconv = Tensor::Contiguous(bconv.p(), vt::DType::kF32, dev, {kT, kConvDim}); + Tensor ta = Tensor::Contiguous(ba.p(), vt::DType::kF32, dev, {kT, kHv}); + Tensor tb = Tensor::Contiguous(bb.p(), vt::DType::kF32, dev, {kT, kHv}); + Tensor tal = Tensor::Contiguous(bal.p(), vt::DType::kF32, dev, {kHv}); + Tensor tdt = Tensor::Contiguous(bdt.p(), vt::DType::kF32, dev, {kHv}); + Tensor tq = Tensor::Contiguous(bq.p(), vt::DType::kF32, dev, {kT, kHk, kDk}); + Tensor tk = Tensor::Contiguous(bk.p(), vt::DType::kF32, dev, {kT, kHk, kDk}); + Tensor tv = Tensor::Contiguous(bv.p(), vt::DType::kF32, dev, {kT, kHv, kDv}); + Tensor tg = Tensor::Contiguous(bg.p(), vt::DType::kF32, dev, {kT, kHv}); + Tensor tbeta = Tensor::Contiguous(bbeta.p(), vt::DType::kF32, dev, {kT, kHv}); + vt::L2NormArgs l2args; + vt::GdnPostConv(q, tq, tk, tv, tg, tbeta, tconv, ta, tb, tal, tdt, l2args); + }; + run(cq, cd, cconv, ca, cb, cal, cdt, cqo, cko, cvo, cgo, cbo); + run(vq, vd, vconv, va, vb, val, vdt, vqo, vko, vvo, vgo, vbo); + vk.Synchronize(vq); + + CHECK(ctx.PipelineExistsFor("vt_gdn_post_conv")); + CHECK(RanNative(vt::OpId::kGdnPostConv)); + + // ALL FIVE outputs are compared. The kernel writes them from two different + // branches of one dispatch (q/k from the head-slot branch, v/g/beta from the + // other), so checking a subset would leave a whole branch unasserted. + auto compare = [&](const char* what, const Buf& dev_buf, const Buf& host_buf, int64_t n) { + std::vector got(static_cast(n)); + vk.Copy(vq, got.data(), dev_buf.p(), got.size() * 4); + vk.Synchronize(vq); + const std::vector ref(host_buf.as(), host_buf.as() + n); + const double nmse = NmseOf(ref, got); + const std::string line = + std::string("gdn_post_conv ") + what + " NMSE vs the CPU oracle: " + std::to_string(nmse); + MESSAGE(line); + CHECK(nmse <= kGdnNmseTol); + }; + compare("q_out", vqo, cqo, kT * kKeyDim); + compare("k_out", vko, cko, kT * kKeyDim); + compare("v_out", vvo, cvo, kT * kValDim); + compare("g_out", vgo, cgo, kT * kHv); + compare("beta_out", vbo, cbo, kT * kHv); + + vk.DestroyQueue(vq); + cpu.DestroyQueue(cq); +}