From 5acae1f576d24b2947ea61751edd4ca41fc6a004 Mon Sep 17 00:00:00 2001 From: Vasilev Dmitrii Date: Fri, 7 Aug 2026 00:01:38 +0700 Subject: [PATCH] feat(spec): GF-T softmax+cross-entropy gradient (the backward pass) gft_softmax_grad4.t27 (GftSoftmaxGrad4): the softmax + cross-entropy gradient over four signed GF-T16 logits. For a one-hot target t, dL/dl_i = p_i - y_i (the classic closed form) -- the backward pass is just the softmax forward p_i minus the one-hot label (grad = (i==t) ? sadd(p, -1.0) : p). Composes the verified softmax primitives. Bit-exact to the integer oracle 1600/1600 (iverilog); gradient accuracy <=0.0018 abs vs true p_i-y_i. Uniform logits, target 0 -> grad0 = -0.75 exact, grad1 = 0.25 exact. Forward + backward now complete on GF-T: logits -> softmax -> prob -> NLL loss, and -> gradient p-y. With the exp2/log2 inverse pair, the per-sample training step is fully expressible spec-first and iverilog-verified. Fresh seal for GftSoftmaxGrad4 (seal --verify MATCH). No compiler change. Refs #1764 Co-Authored-By: Claude Opus 4.8 --- .trinity/seals/ternary_GftSoftmaxGrad4.json | 11 + bootstrap/tests/gft_softmax_grad4.rs | 80 + bootstrap/tests/gft_softmax_grad4_vectors.txt | 1600 +++++++++++++++++ docs/NOW.md | 16 + specs/ternary/gft_softmax_grad4.t27 | 183 ++ 5 files changed, 1890 insertions(+) create mode 100644 .trinity/seals/ternary_GftSoftmaxGrad4.json create mode 100644 bootstrap/tests/gft_softmax_grad4.rs create mode 100644 bootstrap/tests/gft_softmax_grad4_vectors.txt create mode 100644 specs/ternary/gft_softmax_grad4.t27 diff --git a/.trinity/seals/ternary_GftSoftmaxGrad4.json b/.trinity/seals/ternary_GftSoftmaxGrad4.json new file mode 100644 index 000000000..a97fe3159 --- /dev/null +++ b/.trinity/seals/ternary_GftSoftmaxGrad4.json @@ -0,0 +1,11 @@ +{ + "gen_hash_c": "sha256:550d8c42b95aa1789c03b4a8a97d00bdd6cbf7f037d7222a499e0cff61b33731", + "gen_hash_rust": "sha256:1ae267a11f55f4d3dafb9e501de14d3864ad8858b1fcf34b29c88605660ca858", + "gen_hash_verilog": "sha256:3d06bd4749a33aa86a8ad7c12ca1d251e88fc191ebb0cd39151a5a306ed85872", + "gen_hash_zig": "sha256:c9fa5b6027ab4cf0dd6a0d3d81e9c056d713d508312502db127730d98f3a3265", + "module": "GftSoftmaxGrad4", + "ring": 12, + "sealed_at": "2026-08-06T17:01:15Z", + "spec_hash": "sha256:efb7ddf9728f24009405883d4cbd9d9f34d57e8206b36e114cda360bf5a54fd4", + "spec_path": "specs/ternary/gft_softmax_grad4.t27" +} \ No newline at end of file diff --git a/bootstrap/tests/gft_softmax_grad4.rs b/bootstrap/tests/gft_softmax_grad4.rs new file mode 100644 index 000000000..3596a6e4d --- /dev/null +++ b/bootstrap/tests/gft_softmax_grad4.rs @@ -0,0 +1,80 @@ +// ============================================================================ +// Check for the spec-first GF-T softmax (specs/ternary/gft_softmax_grad4.t27): softmax +// over four signed GF-T16 logits, base-2, max-stabilized -> p_sel as a positive +// GF-T16. Composes the verified GF-T primitives (max/sub/exp2/sum/reciprocal/mul). +// Bit-exact to the committed integer oracle over 1600 vectors +// (tests/gft_softmax_grad4_vectors.txt); accuracy vs true float softmax <=0.0018 abs vs true p_i-y_i (measured in the oracle harness). +// ============================================================================ + +use std::env; +use std::fs; +use std::path::PathBuf; +use std::process::Command; + +fn t27c() -> &'static str { env!("CARGO_BIN_EXE_t27c") } +fn spec_path() -> PathBuf { + PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("..").join("specs").join("ternary").join("gft_softmax_grad4.t27") +} +fn vectors_path() -> PathBuf { + PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("tests").join("gft_softmax_grad4_vectors.txt") +} +fn tool_available(t: &str) -> bool { + Command::new(t).arg("-V").output().map(|o| o.status.success()).unwrap_or(false) +} + +#[test] +fn spec_first_gft_softmax_grad4_matches_oracle() { + let gen = Command::new(t27c()).arg("gen-verilog").arg(spec_path()).output().expect("gen-verilog"); + assert!(gen.status.success(), "gen-verilog failed:\n{}", String::from_utf8_lossy(&gen.stderr)); + let v = String::from_utf8_lossy(&gen.stdout).into_owned(); + assert!( + v.contains("input wire [31:0] l0") && v.contains("input wire [7:0] t") && v.contains("input wire [7:0] sel") + && v.contains("output wire [31:0] result"), + "softmax_grad4 missing logits/sel -> prob interface:\n{}", v + ); + + if !tool_available("iverilog") || !tool_available("vvp") { + eprintln!("SKIP: iverilog/vvp not on PATH; skipping softmax_grad4 check"); + return; + } + + let vectors = fs::read_to_string(vectors_path()).expect("read vectors"); + let n = vectors.lines().filter(|l| !l.trim().is_empty()).count(); + let dir = env::temp_dir().join(format!("t27_smg4_{}", std::process::id())); + let _ = fs::remove_dir_all(&dir); + fs::create_dir_all(&dir).unwrap(); + fs::write(dir.join("spec.v"), &gen.stdout).unwrap(); + fs::write(dir.join("vec.txt"), &vectors).unwrap(); + + let tb = format!( + r#"`timescale 1ns/1ps +module tb; + reg [31:0] l0,l1,l2,l3; reg [7:0] t,sel; wire [31:0] y; + integer fails,nn,fd,code; reg [31:0] exp; + GftSoftmaxGrad4 dut(.clk(1'b0),.rst_n(1'b1),.en(1'b1),.l0(l0),.l1(l1),.l2(l2),.l3(l3),.t(t),.sel(sel),.ready(),.result(y)); + initial begin + fails=0; nn=0; fd=$fopen("{}","r"); + while(!$feof(fd)) begin code=$fscanf(fd,"%h %h %h %h %d %d %h\n",l0,l1,l2,l3,t,sel,exp); + if(code==7) begin #1; nn=nn+1; + if(y!==exp) begin fails=fails+1; if(fails<=6)$display("FAIL sel=%0d y=%h exp=%h",sel,y,exp); end + end end + $fclose(fd); + if(fails==0)$display("ALL_PASS %0d",nn); else $display("FAILED %0d/%0d",fails,nn); + $finish; + end +endmodule +"#, + dir.join("vec.txt").to_str().unwrap() + ); + fs::write(dir.join("tb.v"), tb).unwrap(); + + let vvp = dir.join("sim.vvp"); + let compile = Command::new("iverilog").args(["-g2012", "-o", vvp.to_str().unwrap()]) + .arg(dir.join("spec.v")).arg(dir.join("tb.v")).output().unwrap(); + assert!(compile.status.success(), "iverilog compile failed:\n{}", String::from_utf8_lossy(&compile.stderr)); + let run = Command::new("vvp").arg(&vvp).output().unwrap(); + let stdout = String::from_utf8_lossy(&run.stdout).into_owned(); + let _ = fs::remove_dir_all(&dir); + assert!(stdout.contains(&format!("ALL_PASS {}", n)), "softmax_grad4 differs from the oracle:\n{}", stdout); + assert!(!stdout.contains("FAIL"), "softmax_grad4 mismatch:\n{}", stdout); +} diff --git a/bootstrap/tests/gft_softmax_grad4_vectors.txt b/bootstrap/tests/gft_softmax_grad4_vectors.txt new file mode 100644 index 000000000..6621839d8 --- /dev/null +++ b/bootstrap/tests/gft_softmax_grad4_vectors.txt @@ -0,0 +1,1600 @@ +14fcb 15028 14ac2 14e3b 3 0 04b3d +14fcb 15028 14ac2 14e3b 3 1 04af5 +14fcb 15028 14ac2 14e3b 3 2 04cc6 +14fcb 15028 14ac2 14e3b 3 3 14ef0 +0576e 04b2e 053df 1551f 2 0 04ffe +0576e 04b2e 053df 1551f 2 1 034cb +0576e 04b2e 053df 1551f 2 2 14fff +0576e 04b2e 053df 1551f 2 3 0280a +0578e 0529a 053ce 15075 3 0 05000 +0578e 0529a 053ce 15075 3 1 03898 +0578e 0529a 053ce 15075 3 2 03b05 +0578e 0529a 053ce 15075 3 3 15000 +052b4 14cbe 0565a 14f18 1 0 0426e +052b4 14cbe 0565a 14f18 1 1 14fff +052b4 14cbe 0565a 14f18 1 2 04ff4 +052b4 14cbe 0565a 14f18 1 3 03b79 +14c76 150dc 054fe 14dc3 0 0 14ff3 +14c76 150dc 054fe 14dc3 0 1 040e9 +14c76 150dc 054fe 14dc3 0 2 04fe1 +14c76 150dc 054fe 14dc3 0 3 042d5 +05207 150d4 1538f 04cb6 2 0 04ecf +05207 150d4 1538f 04cb6 2 1 04811 +05207 150d4 1538f 04cb6 2 2 14ff1 +05207 150d4 1538f 04cb6 2 3 04b7d +153dd 15841 0485a 14ba5 1 0 0463b +153dd 15841 0485a 14ba5 1 1 15000 +153dd 15841 0485a 14ba5 1 2 04e22 +153dd 15841 0485a 14ba5 1 3 04d76 +14e16 15946 04af8 0597a 0 0 15000 +14e16 15946 04af8 0597a 0 1 00200 +14e16 15946 04af8 0597a 0 2 01898 +14e16 15946 04af8 0597a 0 3 05000 +04b20 050b5 148ed 15035 2 0 04b98 +04b20 050b5 148ed 15035 2 1 04e01 +04b20 050b5 148ed 15035 2 2 14f44 +04b20 050b5 148ed 15035 2 3 048ea +04d87 14aed 04fb5 04c17 0 0 14efc +04d87 14aed 04fb5 04c17 0 1 04aa4 +04d87 14aed 04fb5 04c17 0 2 04cda +04d87 14aed 04fb5 04c17 0 3 04b98 +1580d 04b40 15083 15697 0 0 15000 +1580d 04b40 15083 15697 0 1 04eef +1580d 04b40 15083 15697 0 2 04c22 +1580d 04b40 15083 15697 0 3 039f8 +1513f 0539f 04a55 14b28 0 0 14fe9 +1513f 0539f 04a55 14b28 0 1 04f5e +1513f 0539f 04a55 14b28 0 2 0486c +1513f 0539f 04a55 14b28 0 3 047d0 +15381 04ac5 0501f 04944 0 0 14feb +15381 04ac5 0501f 04944 0 1 04c0f +15381 04ac5 0501f 04944 0 2 04dd0 +15381 04ac5 0501f 04944 0 3 04bed +059f5 052e3 053dc 053ad 1 0 05000 +059f5 052e3 053dc 053ad 1 1 15000 +059f5 052e3 053dc 053ad 1 2 01847 +059f5 052e3 053dc 053ad 1 3 0180b +1599f 15962 156f5 152aa 1 0 01b36 +1599f 15962 156f5 152aa 1 1 15000 +1599f 15962 156f5 152aa 1 2 03d95 +1599f 15962 156f5 152aa 1 3 04ffe +14cff 14ea3 056cd 04e36 2 0 038ae +14cff 14ea3 056cd 04e36 2 1 03834 +14cff 14ea3 056cd 04e36 2 2 00000 +14cff 14ea3 056cd 04e36 2 3 03a8a +14f7a 05113 154a9 04f83 2 0 0494c +14f7a 05113 154a9 04f83 2 1 04e2f +14f7a 05113 154a9 04f83 2 2 14ffb +14f7a 05113 154a9 04f83 2 3 04cc3 +15851 0561d 14e02 15091 0 0 15000 +15851 0561d 14e02 15091 0 1 04ffc +15851 0561d 14e02 15091 0 2 03e0f +15851 0561d 14e02 15091 0 3 03c65 +14b4a 14d04 04b8d 1539e 3 0 04c67 +14b4a 14d04 04b8d 1539e 3 1 04c23 +14b4a 14d04 04b8d 1539e 3 2 04d3c +14b4a 14d04 04b8d 1539e 3 3 14fe3 +05106 14930 04f43 15888 0 0 14de4 +05106 14930 04f43 15888 0 1 04ab0 +05106 14930 04f43 15888 0 2 04c89 +05106 14930 04f43 15888 0 3 02272 +0530b 14a1e 05185 159f4 2 0 04ea1 +0530b 14a1e 05185 159f4 2 1 04853 +0530b 14a1e 05185 159f4 2 2 14eec +0530b 14a1e 05185 159f4 2 3 00944 +049fd 15468 151c8 14ecd 0 0 14daa +049fd 15468 151c8 14ecd 0 1 04444 +049fd 15468 151c8 14ecd 0 2 04a25 +049fd 15468 151c8 14ecd 0 3 04c73 +157d9 04bd3 1542e 059ba 1 0 00200 +157d9 04bd3 1542e 059ba 1 1 15000 +157d9 04bd3 1542e 059ba 1 2 00b84 +157d9 04bd3 1542e 059ba 1 3 05000 +04d09 05813 04a34 15716 1 0 02f70 +04d09 05813 04a34 15716 1 1 00000 +04d09 05813 04a34 15716 1 2 02ee3 +04d09 05813 04a34 15716 1 3 01617 +14abc 14bd5 0506e 15922 2 0 04b80 +14abc 14bd5 0506e 15922 2 1 04b56 +14abc 14bd5 0506e 15922 2 2 14d6c +14abc 14bd5 0506e 15922 2 3 019c5 +04e48 14c26 14900 150a8 0 0 14e5f +04e48 14c26 14900 150a8 0 1 04ba4 +04e48 14c26 14900 150a8 0 2 04c0e +04e48 14c26 14900 150a8 0 3 0497e +04f12 14b2b 14c16 050bd 0 0 14edd +04f12 14b2b 14c16 050bd 0 1 04a54 +04f12 14b2b 14c16 050bd 0 2 04a3b +04f12 14b2b 14c16 050bd 0 3 04d73 +154af 15627 15178 14c20 1 0 044ad +154af 15627 15178 14c20 1 1 14ffe +154af 15627 15178 14c20 1 2 04c12 +154af 15627 15178 14c20 1 3 04edf +153df 14b31 053d8 14b83 3 0 04029 +153df 14b31 053d8 14b83 3 1 04771 +153df 14b31 053d8 14b83 3 2 04f8e +153df 14b31 053d8 14b83 3 3 14fca +1549d 150f2 0530d 0496b 3 0 03ecd +1549d 150f2 0530d 0496b 3 1 0465e +1549d 150f2 0530d 0496b 3 2 04f67 +1549d 150f2 0530d 0496b 3 3 14f8f +05449 15543 14e8d 14813 1 0 04fc0 +05449 15543 14e8d 14813 1 1 15000 +05449 15543 14e8d 14813 1 2 0453d +05449 15543 14e8d 14813 1 3 0466b +049e9 05535 05182 04ae7 2 0 04312 +049e9 05535 05182 04ae7 2 1 04fc0 +049e9 05535 05182 04ae7 2 2 14fda +049e9 05535 05182 04ae7 2 3 04330 +04838 14fdd 150bc 150a4 3 0 04d93 +04838 14fdd 150bc 150a4 3 1 04b7d +04838 14fdd 150bc 150a4 3 2 04aa4 +04838 14fdd 150bc 150a4 3 3 14f52 +1552f 0548b 14941 14d48 0 0 15000 +1552f 0548b 14941 14d48 0 1 04fd0 +1552f 0548b 14941 14d48 0 2 0455a +1552f 0548b 14941 14d48 0 3 044b2 +14996 14ddc 154db 05789 3 0 0335e +14996 14ddc 154db 05789 3 1 03298 +14996 14ddc 154db 05789 3 2 0283a +14996 14ddc 154db 05789 3 3 00000 +05779 14884 155d8 14984 3 0 05000 +05779 14884 155d8 14984 3 1 0340b +05779 14884 155d8 14984 3 2 024b5 +05779 14884 155d8 14984 3 3 15000 +1540e 1521c 051ea 0561d 0 0 15000 +1540e 1521c 051ea 0561d 0 1 03aad +1540e 1521c 051ea 0561d 0 2 042cc +1540e 1521c 051ea 0561d 0 3 04ff4 +053b1 04e0d 0551e 14c16 1 0 04a48 +053b1 04e0d 0551e 14c16 1 1 14ff0 +053b1 04e0d 0551e 14c16 1 2 04f53 +053b1 04e0d 0551e 14c16 1 3 0425d +056ad 04887 14a33 14dc0 2 0 05000 +056ad 04887 14a33 14dc0 2 1 03a98 +056ad 04887 14a33 14dc0 2 2 14fff +056ad 04887 14a33 14dc0 2 3 0398d +1514c 15448 14c2f 056d5 0 0 15000 +1514c 15448 14c2f 056d5 0 1 03028 +1514c 15448 14c2f 056d5 0 2 038a6 +1514c 15448 14c2f 056d5 0 3 05000 +052b0 051b3 05526 1526f 3 0 04852 +052b0 051b3 05526 1526f 3 1 0469a +052b0 051b3 05526 1526f 3 2 04f8b +052b0 051b3 05526 1526f 3 3 14ffe +053bb 15781 05669 04d0c 3 0 04417 +053bb 15781 05669 04d0c 3 1 0207d +053bb 15781 05669 04d0c 3 2 04fec +053bb 15781 05669 04d0c 3 3 14ffe +14d47 05837 04bbf 0548f 3 0 02bab +14d47 05837 04bbf 0548f 3 1 05000 +14d47 05837 04bbf 0548f 3 2 02cd4 +14d47 05837 04bbf 0548f 3 3 15000 +151b1 15401 157f6 157fa 0 0 14ae8 +151b1 15401 157f6 157fa 0 1 04aeb +151b1 15401 157f6 157fa 0 2 03346 +151b1 15401 157f6 157fa 0 3 03323 +15813 15203 158ad 0521b 1 0 02a59 +15813 15203 158ad 0521b 1 1 14fc8 +15813 15203 158ad 0521b 1 2 020ac +15813 15203 158ad 0521b 1 3 04fc7 +14cf8 150df 14857 149a8 2 0 04c0d +14cf8 150df 14857 149a8 2 1 049eb +14cf8 150df 14857 149a8 2 2 14ebe +14cf8 150df 14857 149a8 2 3 04c73 +04ea4 05329 04f03 04a85 0 0 14f86 +04ea4 05329 04f03 04a85 0 1 04eb0 +04ea4 05329 04f03 04a85 0 2 04a07 +04ea4 05329 04f03 04a85 0 3 048ae +151a0 14a31 058e5 058dc 3 0 01c3d +151a0 14a31 058e5 058dc 3 1 01f9c +151a0 14a31 058e5 058dc 3 2 04e31 +151a0 14a31 058e5 058dc 3 3 14e32 +04c4d 058fd 04fac 052b8 1 0 02098 +04c4d 058fd 04fac 052b8 1 1 00000 +04c4d 058fd 04fac 052b8 1 2 02200 +04c4d 058fd 04fac 052b8 1 3 02584 +051ea 14935 14a16 04dff 2 0 04e2d +051ea 14935 14a16 04dff 2 1 04a17 +051ea 14935 14a16 04dff 2 2 14f7d +051ea 14935 14a16 04dff 2 3 04b2a +04d14 14a8a 05338 050b3 3 0 048f8 +04d14 14a8a 05338 050b3 3 1 04809 +04d14 14a8a 05338 050b3 3 2 04ea6 +04d14 14a8a 05338 050b3 3 3 14f46 +0592b 05911 05426 155fc 3 0 04e8c +0592b 05911 05426 155fc 3 1 04ce6 +0592b 05911 05426 155fc 3 2 02471 +0592b 05911 05426 155fc 3 3 15000 +0490e 05095 05583 14a19 3 0 04208 +0490e 05095 05583 14a19 3 1 04452 +0490e 05095 05583 14a19 3 2 04fdd +0490e 05095 05583 14a19 3 3 14ff9 +1522a 05341 1496a 15212 0 0 14feb +1522a 05341 1496a 15212 0 1 04f7d +1522a 05341 1496a 15212 0 2 048b8 +1522a 05341 1496a 15212 0 3 044c7 +159ad 053c2 1560e 152ef 1 0 00d7b +159ad 053c2 1560e 152ef 1 1 14280 +159ad 053c2 1560e 152ef 1 2 03806 +159ad 053c2 1560e 152ef 1 3 04276 +05294 04c54 14f61 153ba 2 0 04f0d +05294 04c54 14f61 153ba 2 1 04a7f +05294 04c54 14f61 153ba 2 2 14fb7 +05294 04c54 14f61 153ba 2 3 04278 +152e8 04bdd 056e6 052f7 2 0 032d3 +152e8 04bdd 056e6 052f7 2 1 0391c +152e8 04bdd 056e6 052f7 2 2 13e00 +152e8 04bdd 056e6 052f7 2 3 03e97 +15406 0480f 14b14 05796 2 0 02b16 +15406 0480f 14b14 05796 2 1 0334b +15406 0480f 14b14 05796 2 2 15000 +15406 0480f 14b14 05796 2 3 05000 +155d8 04f5c 14f8d 15856 0 0 14ffe +155d8 04f5c 14f8d 15856 0 1 04f11 +155d8 04f5c 14f8d 15856 0 2 04bb5 +155d8 04f5c 14f8d 15856 0 3 0281f +14974 158b3 1538d 15342 3 0 04f52 +14974 158b3 1538d 15342 3 1 02459 +14974 158b3 1538d 15342 3 2 04872 +14974 158b3 1538d 15342 3 3 14fa0 +14e06 05692 14db3 048d0 1 0 03a53 +14e06 05692 14db3 048d0 1 1 13e00 +14e06 05692 14db3 048d0 1 2 03a60 +14e06 05692 14db3 048d0 1 3 03b82 +1493d 1564c 1563e 1511d 1 0 04eed +1493d 1564c 1563e 1511d 1 1 14fff +1493d 1564c 1563e 1511d 1 2 03d30 +1493d 1564c 1563e 1511d 1 3 04c22 +156e0 15424 15716 048a2 0 0 15000 +156e0 15424 15716 048a2 0 1 046f5 +156e0 15424 15716 048a2 0 2 036d8 +156e0 15424 15716 048a2 0 3 04fd0 +049c7 050de 14efd 058e2 1 0 02217 +049c7 050de 14efd 058e2 1 1 15000 +049c7 050de 14efd 058e2 1 2 02047 +049c7 050de 14efd 058e2 1 3 05000 +04a9c 15227 050b8 04bea 1 0 04b85 +04a9c 15227 050b8 04bea 1 1 14fd3 +04a9c 15227 050b8 04bea 1 2 04e04 +04a9c 15227 050b8 04bea 1 3 04bb8 +05156 1569e 156b0 0585d 1 0 02d5e +05156 1569e 156b0 0585d 1 1 15000 +05156 1569e 156b0 0585d 1 2 0148a +05156 1569e 156b0 0585d 1 3 05000 +0511b 14b1a 05698 154f0 0 0 14ffe +0511b 14b1a 05698 154f0 0 1 03ab4 +0511b 14b1a 05698 154f0 0 2 04ffe +0511b 14b1a 05698 154f0 0 3 02f5c +14b26 156fe 051a5 04818 1 0 04a8f +14b26 156fe 051a5 04818 1 1 15000 +14b26 156fe 051a5 04818 1 2 04e98 +14b26 156fe 051a5 04818 1 3 04b11 +058ad 148c1 04af6 155fb 0 0 00000 +058ad 148c1 04af6 155fb 0 1 024d4 +058ad 148c1 04af6 155fb 0 2 02570 +058ad 148c1 04af6 155fb 0 3 01516 +049ec 14ebc 049e4 05764 0 0 15000 +049ec 14ebc 049e4 05764 0 1 0335e +049ec 14ebc 049e4 05764 0 2 034f4 +049ec 14ebc 049e4 05764 0 3 05000 +158d8 14d5f 1567b 04feb 3 0 01f87 +158d8 14d5f 1567b 04feb 3 1 04c33 +158d8 14d5f 1567b 04feb 3 2 03918 +158d8 14d5f 1567b 04feb 3 3 14c32 +055fe 14886 051ab 0521c 2 0 04fdd +055fe 14886 051ab 0521c 2 1 03fb3 +055fe 14886 051ab 0521c 2 2 14ff2 +055fe 14886 051ab 0521c 2 3 0441b +0498f 1591a 15006 1520b 0 0 14d40 +0498f 1591a 15006 1520b 0 1 01c7b +0498f 1591a 15006 1520b 0 2 04c2e +0498f 1591a 15006 1520b 0 3 04a23 +05264 04e99 15110 148c6 1 0 04e97 +05264 04e99 15110 148c6 1 1 14f3a +05264 04e99 15110 148c6 1 2 046bb +05264 04e99 15110 148c6 1 3 049b9 +151b8 14f03 14c6e 148c3 0 0 14f94 +151b8 14f03 14c6e 148c3 0 1 04b9f +151b8 14f03 14c6e 148c3 0 2 04c79 +151b8 14f03 14c6e 148c3 0 3 04ce0 +14b6f 14ed9 04c59 0585f 1 0 02984 +14b6f 14ed9 04c59 0585f 1 1 15000 +14b6f 14ed9 04c59 0585f 1 2 02a7c +14b6f 14ed9 04c59 0585f 1 3 05000 +0483a 04f0b 05935 04940 2 0 01ca6 +0483a 04f0b 05935 04940 2 1 01e22 +0483a 04f0b 05935 04940 2 2 00000 +0483a 04f0b 05935 04940 2 3 01cb5 +153ee 15876 04964 0516f 1 0 043c9 +153ee 15876 04964 0516f 1 1 15000 +153ee 15876 04964 0516f 1 2 04be3 +153ee 15876 04964 0516f 1 3 04ef8 +052da 155e9 14c8c 14c23 1 0 04f43 +052da 155e9 14c8c 14c23 1 1 14fff +052da 155e9 14c8c 14c23 1 2 048e5 +052da 155e9 14c8c 14c23 1 3 04902 +04f77 04932 14e69 04857 1 0 04d2c +04f77 04932 14e69 04857 1 1 14f11 +04f77 04932 14e69 04857 1 2 04a4a +04f77 04932 14e69 04857 1 3 04ba9 +0577a 0520e 0525d 05107 3 0 05000 +0577a 0520e 0525d 05107 3 1 0383a +0577a 0520e 0525d 05107 3 2 038bd +0577a 0520e 0525d 05107 3 3 15000 +05295 05470 1507c 0517b 1 0 04a73 +05295 05470 1507c 0517b 1 1 14bfc +05295 05470 1507c 0517b 1 2 042c5 +05295 05470 1507c 0517b 1 3 048bd +05967 1536b 05015 053cd 1 0 05000 +05967 1536b 05015 053cd 1 1 15000 +05967 1536b 05015 053cd 1 2 01b84 +05967 1536b 05015 053cd 1 3 02105 +04b2f 04e62 15511 15791 3 0 04d70 +04b2f 04e62 15511 15791 3 1 04e43 +04b2f 04e62 15511 15791 3 2 040bc +04b2f 04e62 15511 15791 3 3 15000 +14bb0 1576d 1561d 05224 3 0 04a98 +14bb0 1576d 1561d 05224 3 1 02fbb +14bb0 1576d 1561d 05224 3 2 03a38 +14bb0 1576d 1561d 05224 3 3 14a98 +04934 15345 04c96 05221 3 0 04a87 +04934 15345 04c96 05221 3 1 043e8 +04934 15345 04c96 05221 3 2 04af2 +04934 15345 04c96 05221 3 3 14cda +155ec 14e5c 14aec 15943 2 0 03ee0 +155ec 14e5c 14aec 15943 2 1 04d6f +155ec 14e5c 14aec 15943 2 2 14d72 +155ec 14e5c 14aec 15943 2 3 01a6e +0594c 0486c 05808 14a94 0 0 00000 +0594c 0486c 05808 14a94 0 1 01b38 +0594c 0486c 05808 14a94 0 2 03bab +0594c 0486c 05808 14a94 0 3 01ac4 +0541d 154f3 05945 055fc 2 0 02417 +0541d 154f3 05945 055fc 2 1 00fd5 +0541d 154f3 05945 055fc 2 2 00000 +0541d 154f3 05945 055fc 2 3 02b84 +149ba 148a6 15902 050c4 0 0 14f2d +149ba 148a6 15902 050c4 0 1 04b61 +149ba 148a6 15902 050c4 0 2 01b72 +149ba 148a6 15902 050c4 0 3 04e55 +1576a 054fd 04903 04be8 3 0 02881 +1576a 054fd 04903 04be8 3 1 04fdd +1576a 054fd 04903 04be8 3 2 04418 +1576a 054fd 04903 04be8 3 3 14fed +059e5 05024 14cf1 0531b 1 0 05000 +059e5 05024 14cf1 0531b 1 1 15000 +059e5 05024 14cf1 0531b 1 2 010c4 +059e5 05024 14cf1 0531b 1 3 017d5 +1532a 14852 04aef 04829 0 0 14fdd +1532a 14852 04aef 04829 0 1 04c57 +1532a 14852 04aef 04829 0 2 04ccc +1532a 14852 04aef 04829 0 3 04c94 +05417 05322 04b6c 14bbe 0 0 14cfc +05417 05322 04b6c 14bbe 0 1 04c6d +05417 05322 04b6c 14bbe 0 2 04692 +05417 05322 04b6c 14bbe 0 3 045c3 +049ca 155f5 054d0 14bd5 3 0 044b5 +049ca 155f5 054d0 14bd5 3 1 034aa +049ca 155f5 054d0 14bd5 3 2 04fda +049ca 155f5 054d0 14bd5 3 3 14fef +14f56 14c43 15393 1538b 2 0 04ce4 +14f56 14c43 15393 1538b 2 1 04e1e +14f56 14c43 15393 1538b 2 2 14fc9 +14f56 14c43 15393 1538b 2 3 04788 +0519c 04e3e 0591b 15536 1 0 021ea +0519c 04e3e 0591b 15536 1 1 15000 +0519c 04e3e 0591b 15536 1 2 05000 +0519c 04e3e 0591b 15536 1 3 0115e +158f0 057d7 0589b 05732 3 0 001e7 +158f0 057d7 0589b 05732 3 1 044ca +158f0 057d7 0589b 05732 3 2 04fe7 +158f0 057d7 0589b 05732 3 3 14ffc +0512e 056a3 05370 14b3a 0 0 14ffe +0512e 056a3 05370 14b3a 0 1 04ff6 +0512e 056a3 05370 14b3a 0 2 041ab +0512e 056a3 05370 14b3a 0 3 03a5b +14b30 053de 14ed6 05598 2 0 040c0 +14b30 053de 14ed6 05598 2 1 048e3 +14b30 053de 14ed6 05598 2 2 14ffc +14b30 053de 14ed6 05598 2 3 04f9b +04a74 04d73 15013 0528a 0 0 14f7e +04a74 04d73 15013 0528a 0 1 04a75 +04a74 04d73 15013 0528a 0 2 0478e +04a74 04d73 15013 0528a 0 3 04ea7 +04f64 15794 04cb7 15699 3 0 04e59 +04f64 15794 04cb7 15699 3 1 0301b +04f64 15794 04cb7 15699 3 2 04d4d +04f64 15794 04cb7 15699 3 3 15000 +158e9 05279 14c32 14a03 3 0 01b9f +158e9 05279 14c32 14a03 3 1 04f0b +158e9 05279 14c32 14a03 3 2 049a0 +158e9 05279 14c32 14a03 3 3 14f80 +050ef 05264 154d9 05694 2 0 03e37 +050ef 05264 154d9 05694 2 1 04019 +050ef 05264 154d9 05694 2 2 15000 +050ef 05264 154d9 05694 2 3 04ffa +1483f 14d40 1532c 14b24 2 0 04cd4 +1483f 14d40 1532c 14b24 2 1 04c3d +1483f 14d40 1532c 14b24 2 2 14fd6 +1483f 14d40 1532c 14b24 2 3 04c98 +14de3 05790 055f9 1522d 2 0 03260 +14de3 05790 055f9 1522d 2 1 04ff4 +14de3 05790 055f9 1522d 2 2 14ff3 +14de3 05790 055f9 1522d 2 3 02eeb +14b55 05673 152b7 14f85 0 0 14fff +14b55 05673 152b7 14f85 0 1 05000 +14b55 05673 152b7 14f85 0 2 036cc +14b55 05673 152b7 14f85 0 3 03a83 +14dfc 148ce 051a4 155d1 2 0 04a2e +14dfc 148ce 051a4 155d1 2 1 04ae7 +14dfc 148ce 051a4 155d1 2 2 14c8e +14dfc 148ce 051a4 155d1 2 3 03bfa +14f5a 04dd5 04c0f 05127 2 0 048ec +14f5a 04dd5 04c0f 05127 2 1 04ba4 +14f5a 04dd5 04c0f 05127 2 2 14f38 +14f5a 04dd5 04c0f 05127 2 3 04de5 +04de4 0530e 0596f 153f5 0 0 15000 +04de4 0530e 0596f 153f5 0 1 01f05 +04de4 0530e 0596f 153f5 0 2 05000 +04de4 0530e 0596f 153f5 0 3 010f4 +04e45 1489d 052fd 15287 2 0 04a3f +04e45 1489d 052fd 15287 2 1 048df +04e45 1489d 052fd 15287 2 2 14bf4 +04e45 1489d 052fd 15287 2 3 0441b +04898 05776 148f7 05439 1 0 03459 +04898 05776 148f7 05439 1 1 13e00 +04898 05776 148f7 05439 1 2 03416 +04898 05776 148f7 05439 1 3 03d03 +157ff 15528 05316 14d12 3 0 02983 +157ff 15528 05316 14d12 3 1 03cc4 +157ff 15528 05316 14d12 3 2 04faa +157ff 15528 05316 14d12 3 3 14fab +14e0b 1492e 053b6 15871 3 0 0470e +14e0b 1492e 053b6 15871 3 1 04808 +14e0b 1492e 053b6 15871 3 2 04f8e +14e0b 1492e 053b6 15871 3 3 15000 +1564d 04d73 15379 15868 0 0 14fff +1564d 04d73 15379 15868 0 1 04fbe +1564d 04d73 15379 15868 0 2 04801 +1564d 04d73 15379 15868 0 3 02853 +1492e 14b80 0579f 15537 2 0 032ae +1492e 14b80 0579f 15537 2 1 03275 +1492e 14b80 0579f 15537 2 2 00000 +1492e 14b80 0579f 15537 2 3 02622 +1583e 14967 05671 04c7e 1 0 0187a +1583e 14967 05671 04c7e 1 1 14fff +1583e 14967 05671 04c7e 1 2 04ffc +1583e 14967 05671 04c7e 1 3 03ce9 +04cbf 14cf5 0575b 155ba 1 0 035ca +04cbf 14cf5 0575b 155ba 1 1 15000 +04cbf 14cf5 0575b 155ba 1 2 05000 +04cbf 14cf5 0575b 155ba 1 3 0262e +1512e 04ff9 05263 04a34 2 0 04675 +1512e 04ff9 05263 04a34 2 1 04bae +1512e 04ff9 05263 04a34 2 2 14d2a +1512e 04ff9 05263 04a34 2 3 04a09 +149eb 056dd 156c4 04da7 1 0 038ae +149eb 056dd 156c4 04da7 1 1 00000 +149eb 056dd 156c4 04da7 1 2 022d4 +149eb 056dd 156c4 04da7 1 3 03a00 +04a09 153af 14ddb 056ca 3 0 039ea +04a09 153af 14ddb 056ca 3 1 0323a +04a09 153af 14ddb 056ca 3 2 03890 +04a09 153af 14ddb 056ca 3 3 00000 +05100 04fdf 1518c 052d7 0 0 14f14 +05100 04fdf 1518c 052d7 0 1 04a8f +05100 04fdf 1518c 052d7 0 2 04511 +05100 04fdf 1518c 052d7 0 3 04e57 +054d8 15378 14e96 05187 2 0 04fb4 +054d8 15378 14e96 05187 2 1 03d53 +054d8 15378 14e96 05187 2 2 14ff4 +054d8 15378 14e96 05187 2 3 047e8 +151bc 158bc 15801 15994 3 0 05000 +151bc 158bc 15801 15994 3 1 02800 +151bc 158bc 15801 15994 3 2 03397 +151bc 158bc 15801 15994 3 3 15000 +04f10 15346 057e0 1554f 2 0 03267 +04f10 15346 057e0 1554f 2 1 02a54 +04f10 15346 057e0 1554f 2 2 00000 +04f10 15346 057e0 1554f 2 3 023ab +153e7 14be5 14b46 054b7 1 0 03d0f +153e7 14be5 14b46 054b7 1 1 14fed +153e7 14be5 14b46 054b7 1 2 0447a +153e7 14be5 14b46 054b7 1 3 04fd8 +156ff 05271 04949 05709 1 0 01fa9 +156ff 05271 04949 05709 1 1 14fff +156ff 05271 04949 05709 1 2 037e8 +156ff 05271 04949 05709 1 3 04ffe +0599e 059e1 14f43 153bd 1 0 04b0a +0599e 059e1 14f43 153bd 1 1 14b08 +0599e 059e1 14f43 153bd 1 2 00f9c +0599e 059e1 14f43 153bd 1 3 009db +1532a 14a5c 04b52 14d7b 0 0 14fd9 +1532a 14a5c 04b52 14d7b 0 1 04c7b +1532a 14a5c 04b52 14d7b 0 2 04d2d +1532a 14a5c 04b52 14d7b 0 3 04c09 +05104 151e6 1549a 0524f 3 0 04cd0 +05104 151e6 1549a 0524f 3 1 0460c +05104 151e6 1549a 0524f 3 2 03f6d +05104 151e6 1549a 0524f 3 3 14d1a +04f6a 14e36 150cd 15856 1 0 04e86 +04f6a 14e36 150cd 15856 1 1 14f0c +04f6a 14e36 150cd 15856 1 2 04a1d +04f6a 14e36 150cd 15856 1 3 0277d +148ff 05255 14af7 04aa7 1 0 049c3 +148ff 05255 14af7 04aa7 1 1 14cf2 +148ff 05255 14af7 04aa7 1 2 04989 +148ff 05255 14af7 04aa7 1 3 04a40 +04c4a 0498f 049c2 04e67 2 0 04bfb +04c4a 0498f 049c2 04e67 2 1 04b87 +04c4a 0498f 049c2 04e67 2 2 14f1e +04c4a 0498f 049c2 04e67 2 3 04c7a +05836 053e8 056e8 14a24 0 0 14400 +05836 053e8 056e8 14a24 0 1 0344b +05836 053e8 056e8 14a24 0 2 043c6 +05836 053e8 056e8 14a24 0 3 02c3e +04b23 15607 04dba 0592c 0 0 15000 +04b23 15607 04dba 0592c 0 1 00cd4 +04b23 15607 04dba 0592c 0 2 01e22 +04b23 15607 04dba 0592c 0 3 05000 +15995 04c2b 14f0e 0548c 1 0 00c43 +15995 04c2b 14f0e 0548c 1 1 14fde +15995 04c2b 14f0e 0548c 1 2 04418 +15995 04c2b 14f0e 0548c 1 3 04fcd +15247 150f4 149d6 04b83 3 0 0487f +15247 150f4 149d6 04b83 3 1 04a2c +15247 150f4 149d6 04b83 3 2 04cc8 +15247 150f4 149d6 04b83 3 3 14e3e +04bd4 14c66 14ee3 1580c 2 0 04da2 +04bd4 14c66 14ee3 1580c 2 1 04c80 +04bd4 14c66 14ee3 1580c 2 2 14f11 +04bd4 14c66 14ee3 1580c 2 3 02c5b +04d40 14a3b 05881 04906 2 0 02898 +04d40 14a3b 05881 04906 2 1 02797 +04d40 14a3b 05881 04906 2 2 00000 +04d40 14a3b 05881 04906 2 3 02817 +05290 1548a 157ea 1526d 2 0 04fdb +05290 1548a 157ea 1526d 2 1 04078 +05290 1548a 157ea 1526d 2 2 15000 +05290 1548a 157ea 1526d 2 3 045e7 +052f4 04dbb 049d0 14dc8 1 0 04ed6 +052f4 04dbb 049d0 14dc8 1 1 14f7f +052f4 04dbb 049d0 14dc8 1 2 0492e +052f4 04dbb 049d0 14dc8 1 3 0481c +1596d 0531c 14cd1 056af 0 0 15000 +1596d 0531c 14cd1 056af 0 1 04094 +1596d 0531c 14cd1 056af 0 2 039ba +1596d 0531c 14cd1 056af 0 3 04ffa +152e8 14ee3 053f7 05076 2 0 041a4 +152e8 14ee3 053f7 05076 2 1 04613 +152e8 14ee3 053f7 05076 2 2 14aa4 +152e8 14ee3 053f7 05076 2 3 04a02 +056ab 152ad 15570 155e0 1 0 05000 +056ab 152ad 15570 155e0 1 1 15000 +056ab 152ad 15570 155e0 1 2 02cb5 +056ab 152ad 15570 155e0 1 3 02af4 +05891 14eb6 04d05 04d88 0 0 00000 +05891 14eb6 04d05 04d88 0 1 02570 +05891 14eb6 04d05 04d88 0 2 02797 +05891 14eb6 04d05 04d88 0 3 027c0 +151f3 0562c 14cb7 05361 1 0 03a79 +151f3 0562c 14cb7 05361 1 1 14560 +151f3 0562c 14cb7 05361 1 2 03dd0 +151f3 0562c 14cb7 05361 1 3 04522 +0567f 1502b 14971 15429 3 0 05000 +0567f 1502b 14971 15429 3 1 039d5 +0567f 1502b 14971 15429 3 2 03bc0 +0567f 1502b 14971 15429 3 3 15000 +05154 14f2c 04e6d 14b6b 1 0 04e12 +05154 14f2c 04e6d 14b6b 1 1 14fa0 +05154 14f2c 04e6d 14b6b 1 2 04bfb +05154 14f2c 04e6d 14b6b 1 3 04a42 +0503e 051ab 14f83 0562e 2 0 0409b +0503e 051ab 14f83 0562e 2 1 04222 +0503e 051ab 14f83 0562e 2 2 14fff +0503e 051ab 14f83 0562e 2 3 04ff0 +14d8c 15816 0536c 1557c 1 0 0480d +14d8c 15816 0536c 1557c 1 1 15000 +14d8c 15816 0536c 1557c 1 2 04fbe +14d8c 15816 0536c 1557c 1 3 03adb +152a0 1510f 1567a 1592a 3 0 04c8a +152a0 1510f 1567a 1592a 3 1 04eb7 +152a0 1510f 1567a 1592a 3 2 03e18 +152a0 1510f 1567a 1592a 3 3 15000 +1560d 05234 057b0 051e5 1 0 02217 +1560d 05234 057b0 051e5 1 1 15000 +1560d 05234 057b0 051e5 1 2 05000 +1560d 05234 057b0 051e5 1 3 0364d +15412 14cfa 04f84 05694 2 0 032eb +15412 14cfa 04f84 05694 2 1 03a7b +15412 14cfa 04f84 05694 2 2 14fff +15412 14cfa 04f84 05694 2 3 04ffe +05892 1553a 14e24 148cd 2 0 05000 +05892 1553a 14e24 148cd 2 1 01a00 +05892 1553a 14e24 148cd 2 2 15000 +05892 1553a 14e24 148cd 2 3 0268a +14f73 1522c 1488c 150e1 2 0 04c1b +14f73 1522c 1488c 150e1 2 1 04966 +14f73 1522c 1488c 150e1 2 2 14e30 +14f73 1522c 1488c 150e1 2 3 04ad3 +14df4 050d9 0554b 14abc 2 0 041a0 +14df4 050d9 0554b 14abc 2 1 0456a +14df4 050d9 0554b 14abc 2 2 146c0 +14df4 050d9 0554b 14abc 2 3 04243 +04fda 05517 04d37 049ea 3 0 0453e +04fda 05517 04d37 049ea 3 1 04fc6 +04fda 05517 04d37 049ea 3 2 04432 +04fda 05517 04d37 049ea 3 3 14ff1 +157bc 05387 0541b 14f65 0 0 15000 +157bc 05387 0541b 14f65 0 1 04d03 +157bc 05387 0541b 14f65 0 2 04e6c +157bc 05387 0541b 14f65 0 3 04452 +14970 154a1 054d2 154ad 2 0 04455 +14970 154a1 054d2 154ad 2 1 03a17 +14970 154a1 054d2 154ad 2 2 14480 +14970 154a1 054d2 154ad 2 3 039ec +1583f 156fd 157c9 1565f 1 0 03e60 +1583f 156fd 157c9 1565f 1 1 14f66 +1583f 156fd 157c9 1565f 1 2 0441c +1583f 156fd 157c9 1565f 1 3 04f53 +15595 048d3 04fb4 14d0a 3 0 03dcf +15595 048d3 04fb4 14d0a 3 1 04c46 +15595 048d3 04fb4 14d0a 3 2 04e08 +15595 048d3 04fb4 14d0a 3 3 14f2e +05927 0525f 1570c 052a5 1 0 05000 +05927 0525f 1570c 052a5 1 1 15000 +05927 0525f 1570c 052a5 1 2 00516 +05927 0525f 1570c 052a5 1 3 022b5 +04c5f 04aad 15477 04949 0 0 14e94 +04c5f 04aad 15477 04949 0 1 04c99 +04c5f 04aad 15477 04949 0 2 0426e +04c5f 04aad 15477 04949 0 3 04c7c +1506c 049c7 049f1 05039 1 0 048e7 +1506c 049c7 049f1 05039 1 1 14f17 +1506c 049c7 049f1 05039 1 2 04ba7 +1506c 049c7 049f1 05039 1 3 04da0 +0509e 15474 059d9 048d0 1 0 014e3 +0509e 15474 059d9 048d0 1 1 15000 +0509e 15474 059d9 048d0 1 2 05000 +0509e 15474 059d9 048d0 1 3 0127c +15542 04a74 153b5 149c0 1 0 040a2 +15542 04a74 153b5 149c0 1 1 14dce +15542 04a74 153b5 149c0 1 2 04650 +15542 04a74 153b5 149c0 1 3 04d79 +05486 14bf7 1523f 148d8 2 0 04fc6 +05486 14bf7 1523f 148d8 2 1 04512 +05486 14bf7 1523f 148d8 2 2 14ffa +05486 14bf7 1523f 148d8 2 3 04570 +04f0c 04f69 158b7 14933 2 0 04d10 +04f0c 04f69 158b7 14933 2 1 04d43 +04f0c 04f69 158b7 14933 2 2 15000 +04f0c 04f69 158b7 14933 2 3 04b5f +154a1 14ea1 14d77 150d5 0 0 14ff1 +154a1 14ea1 14d77 150d5 0 1 04cdb +154a1 14ea1 14d77 150d5 0 2 04d56 +154a1 14ea1 14d77 150d5 0 3 04b60 +050f9 049bc 0537d 04f95 0 0 14f57 +050f9 049bc 0537d 04f95 0 1 0480c +050f9 049bc 0537d 04f95 0 2 04ea5 +050f9 049bc 0537d 04f95 0 3 04980 +14d51 14931 1527b 05700 2 0 036fc +14d51 14931 1527b 05700 2 1 037c0 +14d51 14931 1527b 05700 2 2 15000 +14d51 14931 1527b 05700 2 3 05000 +04c93 1544d 05462 054fc 0 0 14ff2 +04c93 1544d 05462 054fc 0 1 039b9 +04c93 1544d 05462 054fc 0 2 04c64 +04c93 1544d 05462 054fc 0 3 04ec0 +04a06 04f6b 14fb9 04f4c 0 0 14f29 +04a06 04f6b 14fb9 04f4c 0 1 04cc8 +04a06 04f6b 14fb9 04f4c 0 2 0493a +04a06 04f6b 14fb9 04f4c 0 3 04cb9 +057e7 04c69 04a7a 14fb8 2 0 05000 +057e7 04c69 04a7a 14fb8 2 1 03138 +057e7 04c69 04a7a 14fb8 2 2 15000 +057e7 04c69 04a7a 14fb8 2 3 02ec4 +04e77 0540c 04bd8 050a0 0 0 14fba +04e77 0540c 04bd8 050a0 0 1 04f11 +04e77 0540c 04bd8 050a0 0 2 04765 +04e77 0540c 04bd8 050a0 0 3 04992 +053ca 154a0 05868 04fc9 0 0 15000 +053ca 154a0 05868 04fc9 0 1 01ed4 +053ca 154a0 05868 04fc9 0 2 05000 +053ca 154a0 05868 04fc9 0 3 02b38 +156ff 1523d 053f4 15419 1 0 0300e +156ff 1523d 053f4 15419 1 1 14ff2 +156ff 1523d 053f4 15419 1 2 04fee +156ff 1523d 053f4 15419 1 3 03f87 +14fe6 05437 04a51 15914 3 0 044cf +14fe6 05437 04a51 15914 3 1 04fb9 +14fe6 05437 04a51 15914 3 2 04711 +14fe6 05437 04a51 15914 3 3 15000 +151ec 15956 1586c 1535b 3 0 04ee6 +151ec 15956 1586c 1535b 3 1 01d85 +151ec 15956 1586c 1535b 3 2 02c30 +151ec 15956 1586c 1535b 3 3 14ee6 +15880 050f9 15674 15881 0 0 15000 +15880 050f9 15674 15881 0 1 05000 +15880 050f9 15674 15881 0 2 03941 +15880 050f9 15674 15881 0 3 024c4 +0583d 048c9 0579b 14a87 3 0 04fac +0583d 048c9 0579b 14a87 3 1 02c17 +0583d 048c9 0579b 14a87 3 2 048a0 +0583d 048c9 0579b 14a87 3 3 15000 +157bb 056a5 14da2 15245 2 0 01cd4 +157bb 056a5 14da2 15245 2 1 05000 +157bb 056a5 14da2 15245 2 2 15000 +157bb 056a5 14da2 15245 2 3 0363a +04e4e 158f0 05644 05496 1 0 03ead +04e4e 158f0 05644 05496 1 1 15000 +04e4e 158f0 05644 05496 1 2 04fbe +04e4e 158f0 05644 05496 1 3 04804 +048f1 0533e 058d0 14e1d 2 0 02305 +048f1 0533e 058d0 14e1d 2 1 0295e +048f1 0533e 058d0 14e1d 2 2 00000 +048f1 0533e 058d0 14e1d 2 3 021ea +054f2 052a1 05406 0591d 3 0 02a00 +054f2 052a1 05406 0591d 3 1 0234b +054f2 052a1 05406 0591d 3 2 0262e +054f2 052a1 05406 0591d 3 3 00000 +15465 053b0 04ab1 05301 3 0 03d61 +15465 053b0 04ab1 05301 3 1 04e57 +15465 053b0 04ab1 05301 3 2 04743 +15465 053b0 04ab1 05301 3 3 14e8c +1582c 1590b 04845 05612 0 0 15000 +1582c 1590b 04845 05612 0 1 00e95 +1582c 1590b 04845 05612 0 2 03f77 +1582c 1590b 04845 05612 0 3 04ffc +051b1 051da 05482 14b3d 0 0 14fa6 +051b1 051da 05482 14b3d 0 1 048fe +051b1 051da 05482 14b3d 0 2 04f2f +051b1 051da 05482 14b3d 0 3 044bc +15042 15328 04f4b 14dc3 3 0 04a64 +15042 15328 04f4b 14dc3 3 1 04658 +15042 15328 04f4b 14dc3 3 2 04e50 +15042 15328 04f4b 14dc3 3 3 14f0f +0523c 14c06 15216 14c43 1 0 04eda +0523c 14c06 15216 14c43 1 1 14f7e +0523c 14c06 15216 14c43 1 2 04649 +0523c 14c06 15216 14c43 1 3 049fd +149f7 1542d 14b49 0486c 3 0 04c8a +149f7 1542d 14b49 0486c 3 1 0442a +149f7 1542d 14b49 0486c 3 2 04c67 +149f7 1542d 14b49 0486c 3 3 14e8a +04bb5 15113 15639 14cef 0 0 14de8 +04bb5 15113 15639 14cef 0 1 04a67 +04bb5 15113 15639 14cef 0 2 03bc1 +04bb5 15113 15639 14cef 0 3 04cb4 +15394 05409 0529b 052c0 3 0 03ee2 +15394 05409 0529b 052c0 3 1 04e43 +15394 05409 0529b 052c0 3 2 04b47 +15394 05409 0529b 052c0 3 3 14f18 +04f1d 15252 048ff 059d1 3 0 01461 +04f1d 15252 048ff 059d1 3 1 00e2e +04f1d 15252 048ff 059d1 3 2 012f4 +04f1d 15252 048ff 059d1 3 3 00000 +14ed4 14cdd 0488b 14bf5 1 0 04afa +14ed4 14cdd 0488b 14bf5 1 1 14f0e +14ed4 14cdd 0488b 14bf5 1 2 04c91 +14ed4 14cdd 0488b 14bf5 1 3 04c0c +04a8e 148fe 14cb4 0509b 1 0 04b5e +04a8e 148fe 14cb4 0509b 1 1 14f4b +04a8e 148fe 14cb4 0509b 1 2 04a62 +04a8e 148fe 14cb4 0509b 1 3 04db8 +04a57 0594f 157b4 04e9a 1 0 01b38 +04a57 0594f 157b4 04e9a 1 1 00000 +04a57 0594f 157b4 04e9a 1 2 00200 +04a57 0594f 157b4 04e9a 1 3 01c47 +1586e 05865 055ad 1529e 3 0 00298 +1586e 05865 055ad 1529e 3 1 05000 +1586e 05865 055ad 1529e 3 2 03847 +1586e 05865 055ad 1529e 3 3 15000 +0541e 156f5 1535e 04a2c 0 0 147c0 +0541e 156f5 1535e 04a2c 0 1 02f9c +0541e 156f5 1535e 04a2c 0 2 0407b +0541e 156f5 1535e 04a2c 0 3 04782 +05816 04c21 14c8d 15488 2 0 05000 +05816 04c21 14c8d 15488 2 1 02f05 +05816 04c21 14c8d 15488 2 2 15000 +05816 04c21 14c8d 15488 2 3 02461 +04f6f 15244 14abf 1575e 3 0 04e7e +04f6f 15244 14abf 1575e 3 1 04849 +04f6f 15244 14abf 1575e 3 2 04c71 +04f6f 15244 14abf 1575e 3 3 15000 +05610 04934 14a1e 14bac 3 0 04ff6 +05610 04934 14a1e 14bac 3 1 03f8e +05610 04934 14a1e 14bac 3 2 03f0e +05610 04934 14a1e 14bac 3 3 14ffd +153fe 152e9 15735 04e51 2 0 04662 +153fe 152e9 15735 04e51 2 1 04885 +153fe 152e9 15735 04e51 2 2 15000 +153fe 152e9 15735 04e51 2 3 04f8a +158ea 14980 057dc 1546b 3 0 00261 +158ea 14980 057dc 1546b 3 1 030bd +158ea 14980 057dc 1546b 3 2 05000 +158ea 14980 057dc 1546b 3 3 15000 +057ed 1523e 14f78 15638 0 0 00000 +057ed 1523e 14f78 15638 0 1 02c17 +057ed 1523e 14f78 15638 0 2 02eb5 +057ed 1523e 14f78 15638 0 3 01eb5 +05778 05812 04bf6 14e98 1 0 04a26 +05778 05812 04bf6 14e98 1 1 14a28 +05778 05812 04bf6 14e98 1 2 02ec9 +05778 05812 04bf6 14e98 1 3 02cf9 +04da2 04be5 14afd 152bd 3 0 04d10 +04da2 04be5 14afd 152bd 3 1 04ca6 +04da2 04be5 14afd 152bd 3 2 04bec +04da2 04be5 14afd 152bd 3 3 14fd5 +14fa2 04ec0 04ac1 150c0 1 0 04a54 +14fa2 04ec0 04ac1 150c0 1 1 14e3d +14fa2 04ec0 04ac1 150c0 1 2 04c77 +14fa2 04ec0 04ac1 150c0 1 3 04960 +04b75 055df 04a49 055c0 1 0 03f00 +04b75 055df 04a49 055c0 1 1 14db0 +04b75 055df 04a49 055c0 1 2 03ed8 +04b75 055df 04a49 055c0 1 3 04da6 +15990 154a6 1521f 04850 1 0 0162e +15990 154a6 1521f 04850 1 1 14fec +15990 154a6 1521f 04850 1 2 04acf +15990 154a6 1521f 04850 1 3 04f38 +149bc 0551b 15402 1579e 2 0 04325 +149bc 0551b 15402 1579e 2 1 04ff4 +149bc 0551b 15402 1579e 2 2 14fff +149bc 0551b 15402 1579e 2 3 02675 +149dd 15526 04874 051c6 0 0 14f5a +149dd 15526 04874 051c6 0 1 03e49 +149dd 15526 04874 051c6 0 2 04af8 +149dd 15526 04874 051c6 0 3 04e9a +155e0 04b97 049b1 156c8 1 0 03e1b +155e0 04b97 049b1 156c8 1 1 14dda +155e0 04b97 049b1 156c8 1 2 04dd8 +155e0 04b97 049b1 156c8 1 3 03745 +055c7 05505 14cd1 04973 0 0 14c1e +055c7 05505 14cd1 04973 0 1 04c0f +055c7 05505 14cd1 04973 0 2 03f23 +055c7 05505 14cd1 04973 0 3 04029 +050db 05380 04d55 14f3d 1 0 04ab6 +050db 05380 04d55 14f3d 1 1 14c50 +050db 05380 04d55 14f3d 1 2 048af +050db 05380 04d55 14f3d 1 3 0464a +151d6 056cc 04b8c 04d0b 3 0 035b2 +151d6 056cc 04b8c 04d0b 3 1 04ffe +151d6 056cc 04b8c 04d0b 3 2 03a0a +151d6 056cc 04b8c 04d0b 3 3 14fff +158b5 155b4 15858 15701 0 0 15000 +158b5 155b4 15858 15701 0 1 04fd8 +158b5 155b4 15858 15701 0 2 03907 +158b5 155b4 15858 15701 0 3 04685 +154de 14878 159fe 051fb 2 0 03fe3 +154de 14878 159fe 051fb 2 1 04b13 +154de 14878 159fe 051fb 2 2 15000 +154de 14878 159fe 051fb 2 3 04f37 +04f93 15135 04846 15725 3 0 04e4c +04f93 15135 04846 15725 3 1 04942 +04f93 15135 04846 15725 3 2 04c99 +04f93 15135 04846 15725 3 3 15000 +15872 14ffb 05297 04da8 1 0 022bc +15872 14ffb 05297 04da8 1 1 14fbf +15872 14ffb 05297 04da8 1 2 04f0c +15872 14ffb 05297 04da8 1 3 04ac7 +154df 15174 04865 05354 3 0 03d5f +154df 15174 04865 05354 3 1 04564 +154df 15174 04865 05354 3 2 048f3 +154df 15174 04865 05354 3 3 149d8 +1529e 04d90 0503b 0497f 0 0 14fdd +1529e 04d90 0503b 0497f 0 1 04c48 +1529e 04d90 0503b 0497f 0 2 04da2 +1529e 04d90 0503b 0497f 0 3 04b9e +15138 0579b 14aff 05309 1 0 02fea +15138 0579b 14aff 05309 1 1 00000 +15138 0579b 14aff 05309 1 2 0329f +15138 0579b 14aff 05309 1 3 0390d +15706 05718 14987 15741 1 0 01ee3 +15706 05718 14987 15741 1 1 00000 +15706 05718 14987 15741 1 2 036dc +15706 05718 14987 15741 1 3 01d16 +1532f 148b8 051f0 0496c 0 0 14fed +1532f 148b8 051f0 0496c 0 1 04a7f +1532f 148b8 051f0 0496c 0 2 04e98 +1532f 148b8 051f0 0496c 0 3 04adb +04add 15216 05367 0585d 1 0 02a6e +04add 15216 05367 0585d 1 1 15000 +04add 15216 05367 0585d 1 2 030d4 +04add 15216 05367 0585d 1 3 05000 +04aa2 1567a 0491d 05899 3 0 02698 +04aa2 1567a 0491d 05899 3 1 0127c +04aa2 1567a 0491d 05899 3 2 0267c +04aa2 1567a 0491d 05899 3 3 00000 +052fd 1547e 153bc 04825 2 0 04f7f +052fd 1547e 153bc 04825 2 1 03f92 +052fd 1547e 153bc 04825 2 2 14ff8 +052fd 1547e 153bc 04825 2 3 049b0 +058cb 1568a 15133 14ba8 1 0 05000 +058cb 1568a 15133 14ba8 1 1 15000 +058cb 1568a 15133 14ba8 1 2 02017 +058cb 1568a 15133 14ba8 1 3 022b5 +1593f 04bae 056e2 14a08 1 0 004d4 +1593f 04bae 056e2 14a08 1 1 15000 +1593f 04bae 056e2 14a08 1 2 05000 +1593f 04bae 056e2 14a08 1 3 0388a +0495d 14849 05554 0536f 3 0 0426b +0495d 14849 05554 0536f 3 1 04225 +0495d 14849 05554 0536f 3 2 04f8d +0495d 14849 05554 0536f 3 3 14f9f +14e13 056a9 04d0d 15536 1 0 03997 +14e13 056a9 04d0d 15536 1 1 00000 +14e13 056a9 04d0d 15536 1 2 03b53 +14e13 056a9 04d0d 15536 1 3 02dd5 +14b39 148f7 1547c 156f8 0 0 14e1c +14b39 148f7 1547c 156f8 0 1 04e0a +14b39 148f7 1547c 156f8 0 2 04439 +14b39 148f7 1547c 156f8 0 3 03660 +05681 14aa9 04aa1 14cda 2 0 04ffe +05681 14aa9 04aa1 14cda 2 1 03b82 +05681 14aa9 04aa1 14cda 2 2 14fff +05681 14aa9 04aa1 14cda 2 3 03b14 +05966 1525e 14e78 150c1 0 0 00000 +05966 1525e 14e78 150c1 0 1 014b5 +05966 1525e 14e78 150c1 0 2 01847 +05966 1525e 14e78 150c1 0 3 016b5 +14fed 0565d 14838 04853 0 0 14fff +14fed 0565d 14838 04853 0 1 04ffe +14fed 0565d 14838 04853 0 2 03ccb +14fed 0565d 14838 04853 0 3 03d14 +1574e 058f0 04f60 04fe6 2 0 00661 +1574e 058f0 04f60 04fe6 2 1 05000 +1574e 058f0 04f60 04fe6 2 2 15000 +1574e 058f0 04f60 04fe6 2 3 022c4 +05777 153ef 0587b 05326 2 0 043fc +05777 153ef 0587b 05326 2 1 0204b +05777 153ef 0587b 05326 2 2 14400 +05777 153ef 0587b 05326 2 3 02e72 +156ad 04c5e 04ff0 05927 1 0 00817 +156ad 04c5e 04ff0 05927 1 1 15000 +156ad 04c5e 04ff0 05927 1 2 01f5e +156ad 04c5e 04ff0 05927 1 3 05000 +155ec 148ad 04c93 04d85 2 0 03c83 +155ec 148ad 04c93 04d85 2 1 04c1f +155ec 148ad 04c93 04d85 2 2 14e98 +155ec 148ad 04c93 04d85 2 3 04d0d +04905 048d8 05320 155c4 1 0 04925 +04905 048d8 05320 155c4 1 1 14f9c +04905 048d8 05320 155c4 1 2 04f37 +04905 048d8 05320 155c4 1 3 03a0a +1576c 155c0 04cf7 04d9a 3 0 031b9 +1576c 155c0 04cf7 04d9a 3 1 03e1e +1576c 155c0 04cf7 04d9a 3 2 04de2 +1576c 155c0 04cf7 04d9a 3 3 14de6 +149ec 058cc 155ae 14b37 0 0 15000 +149ec 058cc 155ae 14b37 0 1 05000 +149ec 058cc 155ae 14b37 0 2 01461 +149ec 058cc 155ae 14b37 0 3 022b5 +14db0 14f43 15351 04f2d 0 0 14f12 +14db0 14f43 15351 04f2d 0 1 04ae7 +14db0 14f43 15351 04f2d 0 2 0460d +14db0 14f43 15351 04f2d 0 3 04e37 +1524f 1595f 148ce 1512b 0 0 14f74 +1524f 1595f 148ce 1512b 0 1 018c7 +1524f 1595f 148ce 1512b 0 2 04e8c +1524f 1595f 148ce 1512b 0 3 04b9d +0481f 04f6e 15579 15828 1 0 04cec +0481f 04f6e 15579 15828 1 1 14cf2 +0481f 04f6e 15579 15828 1 2 03ee5 +0481f 04f6e 15579 15828 1 3 02a5f +158db 04f44 14ec1 157c0 1 0 01fc2 +158db 04f44 14ec1 157c0 1 1 14c14 +158db 04f44 14ec1 157c0 1 2 04c16 +158db 04f44 14ec1 157c0 1 3 02f5f +051ec 04fc4 15990 14979 2 0 04e50 +051ec 04fc4 15990 14979 2 1 04c48 +051ec 04fc4 15990 14979 2 2 15000 +051ec 04fc4 15990 14979 2 3 04a34 +1565e 1580d 04b58 14e23 2 0 03b24 +1565e 1580d 04b58 14e23 2 1 02d3e +1565e 1580d 04b58 14e23 2 2 14d00 +1565e 1580d 04b58 14e23 2 3 04cfd +050f6 04b35 05632 14f49 3 0 04137 +050f6 04b35 05632 14f49 3 1 03ea6 +050f6 04b35 05632 14f49 3 2 04ff4 +050f6 04b35 05632 14f49 3 3 14fff +14912 04a2f 1585a 04a5e 3 0 04c62 +14912 04a2f 1585a 04a5e 3 1 04ccc +14912 04a2f 1585a 04a5e 3 2 026e2 +14912 04a2f 1585a 04a5e 3 3 14e97 +0542d 0488b 156c6 04db8 2 0 04f93 +0542d 0488b 156c6 04db8 2 1 046f5 +0542d 0488b 156c6 04db8 2 2 15000 +0542d 0488b 156c6 04db8 2 3 047de +0561a 05651 05696 14b04 1 0 04a69 +0561a 05651 05696 14b04 1 1 14ee8 +0561a 05651 05696 14b04 1 2 04e4e +0561a 05651 05696 14b04 1 3 03930 +159f7 054a4 05378 04b42 1 0 0050b +159f7 054a4 05378 04b42 1 1 14bd4 +159f7 054a4 05378 04b42 1 2 04b77 +159f7 054a4 05378 04b42 1 3 044e2 +14e3a 14c3c 04d1d 151d3 2 0 04b89 +14e3a 14c3c 04d1d 151d3 2 1 04c24 +14e3a 14c3c 04d1d 151d3 2 2 14e4c +14e3a 14c3c 04d1d 151d3 2 3 048c3 +15587 04cdb 0563d 04a21 1 0 02ffc +15587 04cdb 0563d 04a21 1 1 14ffd +15587 04cdb 0563d 04a21 1 2 04ffc +15587 04cdb 0563d 04a21 1 3 03e45 +154e6 159da 153ce 0579b 2 0 02770 +154e6 159da 153ce 0579b 2 1 00200 +154e6 159da 153ce 0579b 2 2 15000 +154e6 159da 153ce 0579b 2 3 05000 +04ccf 14ecd 14e4f 157d5 3 0 04dfc +04ccf 14ecd 14e4f 157d5 3 1 04bd9 +04ccf 14ecd 14e4f 157d5 3 2 04c18 +04ccf 14ecd 14e4f 157d5 3 3 15000 +15937 1577b 159d0 05728 1 0 00316 +15937 1577b 159d0 05728 1 1 15000 +15937 1577b 159d0 05728 1 2 00200 +15937 1577b 159d0 05728 1 3 05000 +04fe8 048a0 05899 14d66 3 0 02847 +04fe8 048a0 05899 14d66 3 1 0267c +04fe8 048a0 05899 14d66 3 2 05000 +04fe8 048a0 05899 14d66 3 3 15000 +14948 14f61 0571d 050d3 3 0 036b5 +14948 14f61 0571d 050d3 3 1 03541 +14948 14f61 0571d 050d3 3 2 05000 +14948 14f61 0571d 050d3 3 3 15000 +04a76 14ef5 04c8f 05951 3 0 01b16 +04a76 14ef5 04c8f 05951 3 1 0194b +04a76 14ef5 04c8f 05951 3 2 01b70 +04a76 14ef5 04c8f 05951 3 3 00000 +1505c 14aa5 1598b 150d2 3 0 04c11 +1505c 14aa5 1598b 150d2 3 1 04e16 +1505c 14aa5 1598b 150d2 3 2 015ab +1505c 14aa5 1598b 150d2 3 3 14f1e +04942 15194 059eb 14c1c 2 0 0115e +04942 15194 059eb 14c1c 2 1 00dab +04942 15194 059eb 14c1c 2 2 00000 +04942 15194 059eb 14c1c 2 3 010a6 +04937 04941 1524f 158c3 0 0 14e2c +04937 04941 1524f 158c3 0 1 04da8 +04937 04941 1524f 158c3 0 2 048c0 +04937 04941 1524f 158c3 0 3 02137 +14fde 04f02 04a4b 15318 3 0 04a64 +14fde 04f02 04a4b 15318 3 1 04df0 +14fde 04f02 04a4b 15318 3 2 04c95 +14fde 04f02 04a4b 15318 3 3 14fdd +15353 15557 05618 05579 1 0 03796 +15353 15557 05618 05579 1 1 15000 +15353 15557 05618 05579 1 2 04eeb +15353 15557 05618 05579 1 3 04c2a +1486e 15139 05723 1582e 1 0 03698 +1486e 15139 05723 1582e 1 1 15000 +1486e 15139 05723 1582e 1 2 05000 +1486e 15139 05723 1582e 1 3 01400 +159ca 1510b 04f7c 05418 0 0 15000 +159ca 1510b 04f7c 05418 0 1 0442e +159ca 1510b 04f7c 05418 0 2 048df +159ca 1510b 04f7c 05418 0 3 04f93 +04938 156fa 04b31 058e5 2 0 021d5 +04938 156fa 04b31 058e5 2 1 009d5 +04938 156fa 04b31 058e5 2 2 15000 +04938 156fa 04b31 058e5 2 3 05000 +04a71 14d38 14d83 15368 2 0 04d4b +04a71 14d38 14d83 15368 2 1 04c3e +04a71 14d38 14d83 15368 2 2 14ee8 +04a71 14d38 14d83 15368 2 3 0463c +0588a 15859 14bfb 157fb 1 0 05000 +0588a 15859 14bfb 157fb 1 1 15000 +0588a 15859 14bfb 157fb 1 2 026b5 +0588a 15859 14bfb 157fb 1 3 0075e +04fde 157e7 14a8e 153b2 2 0 04eac +04fde 157e7 14a8e 153b2 2 1 02d9e +04fde 157e7 14a8e 153b2 2 2 14ec6 +04fde 157e7 14a8e 153b2 2 3 0455f +14bf4 14be9 0480f 05476 2 0 04542 +14bf4 14be9 0480f 05476 2 1 04546 +14bf4 14be9 0480f 05476 2 2 14fe0 +14bf4 14be9 0480f 05476 2 3 04fac +14ce9 04eea 04cc0 05109 3 0 049ca +14ce9 04eea 04cc0 05109 3 1 04c04 +14ce9 04eea 04cc0 05109 3 2 04b18 +14ce9 04eea 04cc0 05109 3 3 14e42 +14de4 05832 05371 053e4 3 0 02bd5 +14de4 05832 05371 053e4 3 1 05000 +14de4 05832 05371 053e4 3 2 033ab +14de4 05832 05371 053e4 3 3 15000 +14c7f 04965 1584f 14e07 3 0 04c7e +14c7f 04965 1584f 14e07 3 1 04d55 +14c7f 04965 1584f 14e07 3 2 02841 +14c7f 04965 1584f 14e07 3 3 14eea +0483b 056f2 04dfa 04f43 3 0 0386e +0483b 056f2 04dfa 04f43 3 1 05000 +0483b 056f2 04dfa 04f43 3 2 0394b +0483b 056f2 04dfa 04f43 3 3 14fff +0505d 14a89 04bcd 048ee 0 0 14e52 +0505d 14a89 04bcd 048ee 0 1 04aa7 +0505d 14a89 04bcd 048ee 0 2 04b7d +0505d 14a89 04bcd 048ee 0 3 04b27 +153f0 054b7 05628 04e0d 0 0 15000 +153f0 054b7 05628 04e0d 0 1 04923 +153f0 054b7 05628 04e0d 0 2 04f98 +153f0 054b7 05628 04e0d 0 3 03f54 +15060 158f6 155d0 0508f 3 0 04a72 +15060 158f6 155d0 0508f 3 1 01d76 +15060 158f6 155d0 0508f 3 2 03d9d +15060 158f6 155d0 0508f 3 3 14a74 +0517c 057a9 0558b 15093 0 0 15000 +0517c 057a9 0558b 15093 0 1 04ffa +0517c 057a9 0558b 15093 0 2 040b5 +0517c 057a9 0558b 15093 0 3 03019 +04e51 14ffb 14b24 04f0f 2 0 04c9e +04e51 14ffb 14b24 04f0f 2 1 04983 +04e51 14ffb 14b24 04f0f 2 2 14f3c +04e51 14ffb 14b24 04f0f 2 3 04cfa +15300 15793 04f26 14d19 1 0 0470e +15300 15793 04f26 14d19 1 1 15000 +15300 15793 04f26 14d19 1 2 04ea4 +15300 15793 04f26 14d19 1 3 04c57 +15967 04cbc 0577a 1579d 0 0 15000 +15967 04cbc 0577a 1579d 0 1 034b5 +15967 04cbc 0577a 1579d 0 2 05000 +15967 04cbc 0577a 1579d 0 3 01716 +1557b 15750 05046 159d1 1 0 03fbc +1557b 15750 05046 159d1 1 1 15000 +1557b 15750 05046 159d1 1 2 04ffc +1557b 15750 05046 159d1 1 3 01087 +1504b 15276 14f57 0560a 0 0 14ffe +1504b 15276 14f57 0560a 0 1 03a95 +1504b 15276 14f57 0560a 0 2 03e04 +1504b 15276 14f57 0560a 0 3 04ffc +1549b 05779 049a6 052e6 1 0 029c0 +1549b 05779 049a6 052e6 1 1 00000 +1549b 05779 049a6 052e6 1 2 03454 +1549b 05779 049a6 052e6 1 3 03a00 +155e6 0585f 05703 04b62 0 0 15000 +155e6 0585f 05703 04b62 0 1 04ff8 +155e6 0585f 05703 04b62 0 2 04218 +155e6 0585f 05703 04b62 0 3 02a5c +0518d 156b1 15258 1527a 2 0 04f9b +0518d 156b1 15258 1527a 2 1 03678 +0518d 156b1 15258 1527a 2 2 14fcb +0518d 156b1 15258 1527a 2 3 04709 +1578a 14871 0498f 05069 3 0 02f50 +1578a 14871 0498f 05069 3 1 04b80 +1578a 14871 0498f 05069 3 2 04bfc +1578a 14871 0498f 05069 3 3 14dc0 +151c5 049b1 1541e 14cda 0 0 14f81 +151c5 049b1 1541e 14cda 0 1 04df6 +151c5 049b1 1541e 14cda 0 2 0451a +151c5 049b1 1541e 14cda 0 3 04cdb +04f6b 04aee 049ac 054cb 0 0 14fdc +04f6b 04aee 049ac 054cb 0 1 044c9 +04f6b 04aee 049ac 054cb 0 2 044aa +04f6b 04aee 049ac 054cb 0 3 04fb1 +05626 04c44 059d7 05286 1 0 023ab +05626 04c44 059d7 05286 1 1 15000 +05626 04c44 059d7 05286 1 2 05000 +05626 04c44 059d7 05286 1 3 01784 +1517a 048f2 05894 14f52 2 0 02316 +1517a 048f2 05894 14f52 2 1 026c4 +1517a 048f2 05894 14f52 2 2 00000 +1517a 048f2 05894 14f52 2 3 024e3 +05094 1530c 15329 14a27 2 0 04eba +05094 1530c 15329 14a27 2 1 04629 +05094 1530c 15329 14a27 2 2 14fe0 +05094 1530c 15329 14a27 2 3 04c08 +14d8e 05925 050c0 048f7 3 0 01ca6 +14d8e 05925 050c0 048f7 3 1 05000 +14d8e 05925 050c0 048f7 3 2 02054 +14d8e 05925 050c0 048f7 3 3 15000 +159d1 0561d 0594a 14f01 0 0 15000 +159d1 0561d 0594a 14f01 0 1 02c2e +159d1 0561d 0594a 14f01 0 2 05000 +159d1 0561d 0594a 14f01 0 3 019d5 +157da 04a25 04b18 04fec 1 0 02ce5 +157da 04a25 04b18 04fec 1 1 14ef6 +157da 04a25 04b18 04fec 1 2 04c2c +157da 04a25 04b18 04fec 1 3 04dc0 +0500b 059d8 04803 14fd0 1 0 0146e +0500b 059d8 04803 14fd0 1 1 00000 +0500b 059d8 04803 14fd0 1 2 0127c +0500b 059d8 04803 14fd0 1 3 0107c +15728 054f3 14e4c 0525a 1 0 02a85 +15728 054f3 14e4c 0525a 1 1 148d8 +15728 054f3 14e4c 0525a 1 2 042a1 +15728 054f3 14e4c 0525a 1 3 0487f +159b8 14d0f 0571c 051dd 1 0 00200 +159b8 14d0f 0571c 051dd 1 1 15000 +159b8 14d0f 0571c 051dd 1 2 05000 +159b8 14d0f 0571c 051dd 1 3 03ad4 +15692 14896 057aa 152bb 0 0 15000 +15692 14896 057aa 152bb 0 1 03267 +15692 14896 057aa 152bb 0 2 05000 +15692 14896 057aa 152bb 0 3 02d16 +14f0e 15313 14f1a 055d5 1 0 03ef8 +14f0e 15313 14f1a 055d5 1 1 14fff +14f0e 15313 14f1a 055d5 1 2 03ef0 +14f0e 15313 14f1a 055d5 1 3 04ffa +153df 15526 04f5b 156b0 0 0 14fdb +153df 15526 04f5b 156b0 0 1 0417d +153df 15526 04f5b 156b0 0 2 04fd4 +153df 15526 04f5b 156b0 0 3 03889 +05286 050ee 15756 05344 2 0 04c89 +05286 050ee 15756 05344 2 1 04a70 +05286 050ee 15756 05344 2 2 15000 +05286 050ee 15756 05344 2 3 04e1f +15299 14a6d 152fa 05805 1 0 02a61 +15299 14a6d 152fa 05805 1 1 15000 +15299 14a6d 152fa 05805 1 2 029ab +15299 14a6d 152fa 05805 1 3 05000 +05759 04de2 1596b 04a2d 2 0 05000 +05759 04de2 1596b 04a2d 2 1 03622 +05759 04de2 1596b 04a2d 2 2 15000 +05759 04de2 1596b 04a2d 2 3 0355e +14fb5 04dfd 0589a 14807 0 0 15000 +14fb5 04dfd 0589a 14807 0 1 02738 +14fb5 04dfd 0589a 14807 0 2 05000 +14fb5 04dfd 0589a 14807 0 3 0262e +15878 14dd7 04bbf 158bd 2 0 0268a +15878 14dd7 04bbf 158bd 2 1 04d07 +15878 14dd7 04bbf 158bd 2 2 14d08 +15878 14dd7 04bbf 158bd 2 3 02247 +04d29 150cc 053b7 14c60 3 0 048b0 +04d29 150cc 053b7 14c60 3 1 0451b +04d29 150cc 053b7 14c60 3 2 04f5b +04d29 150cc 053b7 14c60 3 3 14fcb +04bf1 14a14 14cac 0482c 1 0 04c69 +04bf1 14a14 14cac 0482c 1 1 14f12 +04bf1 14a14 14cac 0482c 1 2 04b39 +04bf1 14a14 14cac 0482c 1 3 04c21 +0538b 04c3d 0526c 053fd 3 0 04cbc +0538b 04c3d 0526c 053fd 3 1 04648 +0538b 04c3d 0526c 053fd 3 2 04a83 +0538b 04c3d 0526c 053fd 3 3 14e24 +14cbc 15353 158ed 14a21 0 0 14e3f +14cbc 15353 158ed 14a21 0 1 0478c +14cbc 15353 158ed 14a21 0 2 01f57 +14cbc 15353 158ed 14a21 0 3 04e07 +15392 04ced 0486d 0537f 1 0 04128 +15392 04ced 0486d 0537f 1 1 14fa0 +15392 04ced 0486d 0537f 1 2 04875 +15392 04ced 0486d 0537f 1 3 04f4b +05860 055c0 157d2 050e2 3 0 05000 +05860 055c0 157d2 050e2 3 1 038d4 +05860 055c0 157d2 050e2 3 2 00b5e +05860 055c0 157d2 050e2 3 3 15000 +04ddd 04e36 05533 05665 2 0 03d5e +04ddd 04e36 05533 05665 2 1 03d84 +04ddd 04e36 05533 05665 2 2 14f9a +04ddd 04e36 05533 05665 2 3 04f98 +15890 051a4 1532f 154fb 2 0 0231c +15890 051a4 1532f 154fb 2 1 04fdd +15890 051a4 1532f 154fb 2 2 14fe1 +15890 051a4 1532f 154fb 2 3 04040 +159d1 05145 1555a 14b82 1 0 00ebf +159d1 05145 1555a 14b82 1 1 14b80 +159d1 05145 1555a 14b82 1 2 03e76 +159d1 05145 1555a 14b82 1 3 04b76 +05000 15444 14ba0 14ac3 2 0 04e1d +05000 15444 14ba0 14ac3 2 1 042ec +05000 15444 14ba0 14ac3 2 2 14f19 +05000 15444 14ba0 14ac3 2 3 04bc0 +14acc 048d8 0568f 0483d 0 0 14fff +14acc 048d8 0568f 0483d 0 1 03b9f +14acc 048d8 0568f 0483d 0 2 04ffe +14acc 048d8 0568f 0483d 0 3 03b8b +149d4 1504e 14b09 0571b 3 0 036bd +149d4 1504e 14b09 0571b 3 1 034ae +149d4 1504e 14b09 0571b 3 2 0369f +149d4 1504e 14b09 0571b 3 3 00000 +0553c 1542a 054a6 04d6d 3 0 04ebe +0553c 1542a 054a6 04d6d 3 1 03928 +0553c 1542a 054a6 04d6d 3 2 04c6f +0553c 1542a 054a6 04d6d 3 3 14ff5 +054d6 0555b 05684 05155 3 0 046a8 +054d6 0555b 05684 05155 3 1 048bb +054d6 0555b 05684 05155 3 2 04f7c +054d6 0555b 05684 05155 3 3 14ffd +14c26 14e27 04be0 052a3 1 0 048f9 +14c26 14e27 04be0 052a3 1 1 14fb1 +14c26 14e27 04be0 052a3 1 2 04a1f +14c26 14e27 04be0 052a3 1 3 04eca +05264 05565 149ff 04942 2 0 046da +05264 05565 149ff 04942 2 1 04fc2 +05264 05565 149ff 04942 2 2 14ff8 +05264 05565 149ff 04942 2 3 04255 +052a3 04f69 04dd2 14f5b 2 0 04e7f +052a3 04f69 04dd2 14f5b 2 1 04ae5 +052a3 04f69 04dd2 14f5b 2 2 14f71 +052a3 04f69 04dd2 14f5b 2 3 04797 +14c39 15285 052fc 05687 1 0 03b07 +14c39 15285 052fc 05687 1 1 15000 +14c39 15285 052fc 05687 1 2 041a4 +14c39 15285 052fc 05687 1 3 04ff8 +15897 151e0 05516 05996 3 0 00200 +15897 151e0 05516 05996 3 1 01298 +15897 151e0 05516 05996 3 2 022d4 +15897 151e0 05516 05996 3 3 00000 +054a8 14a3c 156b2 1535c 3 0 04fe7 +054a8 14a3c 156b2 1535c 3 1 044da +054a8 14a3c 156b2 1535c 3 2 02fa9 +054a8 14a3c 156b2 1535c 3 3 14ffe +15654 1579e 14da6 14901 0 0 14fff +15654 1579e 14da6 14901 0 1 03179 +15654 1579e 14da6 14901 0 2 04d80 +15654 1579e 14da6 14901 0 3 04e40 +1497a 14d35 04c7c 149d1 2 0 04bdb +1497a 14d35 04c7c 149d1 2 1 04b26 +1497a 14d35 04c7c 149d1 2 2 14eb6 +1497a 14d35 04c7c 149d1 2 3 04bd4 +04d13 0569c 14849 15582 0 0 14fff +04d13 0569c 14849 15582 0 1 05000 +04d13 0569c 14849 15582 0 2 03acc +04d13 0569c 14849 15582 0 3 02cf4 +15319 156b2 04ffb 14f64 0 0 14fd3 +15319 156b2 04ffb 14f64 0 1 0377d +15319 156b2 04ffb 14f64 0 2 04eff +15319 156b2 04ffb 14f64 0 3 04b56 +1537f 15314 04ac7 04a49 1 0 04653 +1537f 15314 04ac7 04a49 1 1 14fce +1537f 15314 04ac7 04a49 1 2 04db2 +1537f 15314 04ac7 04a49 1 3 04d9e +0553c 159b8 049c5 04b2e 2 0 04fe7 +0553c 159b8 049c5 04b2e 2 1 00749 +0553c 159b8 049c5 04b2e 2 2 14ff4 +0553c 159b8 049c5 04b2e 2 3 0433a +04e74 14d26 14cc2 14b7a 1 0 04d1a +04e74 14d26 14cc2 14b7a 1 1 14f3a +04e74 14d26 14cc2 14b7a 1 2 04b31 +04e74 14d26 14cc2 14b7a 1 3 04b7d +158e6 04fbf 158ed 14bc4 2 0 01e8a +158e6 04fbf 158ed 14bc4 2 1 04ec5 +158e6 04fbf 158ed 14bc4 2 2 15000 +158e6 04fbf 158ed 14bc4 2 3 04c75 +05486 04f7f 150cf 051cf 0 0 14a70 +05486 04f7f 150cf 051cf 0 1 04703 +05486 04f7f 150cf 051cf 0 2 0427a +05486 04f7f 150cf 051cf 0 3 04913 +15577 050f3 1520f 14fad 2 0 03e5b +15577 050f3 1520f 14fad 2 1 04f1f +15577 050f3 1520f 14fad 2 2 14fbb +15577 050f3 1520f 14fad 2 3 04a60 +04f31 14922 04e9a 04bdb 2 0 04c91 +04f31 14922 04e9a 04bdb 2 1 04ac2 +04f31 14922 04e9a 04bdb 2 2 14ed8 +04f31 14922 04e9a 04bdb 2 3 04b7d +15989 14895 14c15 05866 1 0 00200 +15989 14895 14c15 05866 1 1 15000 +15989 14895 14c15 05866 1 2 028f4 +15989 14895 14c15 05866 1 3 05000 +04c53 04963 151dc 14ac6 0 0 14e95 +04c53 04963 151dc 14ac6 0 1 04c7f +04c53 04963 151dc 14ac6 0 2 04870 +04c53 04963 151dc 14ac6 0 3 04c0e +04f6c 05954 05157 14f80 1 0 01c54 +04f6c 05954 05157 14f80 1 1 00000 +04f6c 05954 05157 14f80 1 2 01e0b +04f6c 05954 05157 14f80 1 3 018d4 +1537f 152f4 149de 1506a 0 0 14fc6 +1537f 152f4 149de 1506a 0 1 048a2 +1537f 152f4 149de 1506a 0 2 04e58 +1537f 152f4 149de 1506a 0 3 04c35 +155b6 15873 04864 050ae 0 0 14ffe +155b6 15873 04864 050ae 0 1 024f2 +155b6 15873 04864 050ae 0 2 04c58 +155b6 15873 04864 050ae 0 3 04ed2 +1512a 1538d 1572b 050ce 1 0 0497e +1512a 1538d 1572b 050ce 1 1 14fe3 +1512a 1538d 1572b 050ce 1 2 03345 +1512a 1538d 1572b 050ce 1 3 04f74 +1544b 04fae 0500e 14a0e 2 0 04230 +1544b 04fae 0500e 14a0e 2 1 04d18 +1544b 04fae 0500e 14a0e 2 2 14e55 +1544b 04fae 0500e 14a0e 2 3 04afe +059b2 049d2 04fe1 04e90 1 0 05000 +059b2 049d2 04fe1 04e90 1 1 15000 +059b2 049d2 04fe1 04e90 1 2 016a6 +059b2 049d2 04fe1 04e90 1 3 01617 +148b9 05595 14975 1522c 1 0 04152 +148b9 05595 14975 1522c 1 1 14380 +148b9 05595 14975 1522c 1 2 04143 +148b9 05595 14975 1522c 1 3 03d1c +04e59 048d0 1548e 15748 2 0 04e51 +04e59 048d0 1548e 15748 2 1 04d47 +04e59 048d0 1548e 15748 2 2 14ff5 +04e59 048d0 1548e 15748 2 3 032d0 +14b71 159c1 1482e 14c79 3 0 04ca1 +14b71 159c1 1482e 14c79 3 1 010f9 +14b71 159c1 1482e 14c79 3 2 04ce9 +14b71 159c1 1482e 14c79 3 3 14ec5 +15084 1583c 05359 157c6 2 0 04685 +15084 1583c 05359 157c6 2 1 0254e +15084 1583c 05359 157c6 2 2 14680 +15084 1583c 05359 157c6 2 3 02ad6 +05036 150c5 05761 0546c 1 0 03703 +05036 150c5 05761 0546c 1 1 15000 +05036 150c5 05761 0546c 1 2 04ffe +05036 150c5 05761 0546c 1 3 03e82 +1580b 056bc 05166 0577e 3 0 012de +1580b 056bc 05166 0577e 3 1 0497c +1580b 056bc 05166 0577e 3 2 036f6 +1580b 056bc 05166 0577e 3 3 14980 +1530f 156ec 14a29 05116 3 0 045e6 +1530f 156ec 14a29 05116 3 1 03483 +1530f 156ec 14a29 05116 3 2 04bb2 +1530f 156ec 14a29 05116 3 3 14c16 +05793 15365 05615 04f56 2 0 04ff0 +05793 15365 05615 04f56 2 1 02c72 +05793 15365 05615 04f56 2 2 14ff0 +05793 15365 05615 04f56 2 3 034d7 +05673 0506e 151c8 15057 0 0 13e00 +05673 0506e 151c8 15057 0 1 03ead +05673 0506e 151c8 15057 0 2 0387b +05673 0506e 151c8 15057 0 3 03a0a +04e6e 14b5a 14849 050ac 0 0 14ef6 +04e6e 14b5a 14849 050ac 0 1 04a5c +04e6e 14b5a 14849 050ac 0 2 04a98 +04e6e 14b5a 14849 050ac 0 3 04d71 +04a0d 04cdc 05049 15900 1 0 04bd1 +04a0d 04cdc 05049 15900 1 1 14ee2 +04a0d 04cdc 05049 15900 1 2 04dda +04a0d 04cdc 05049 15900 1 3 01b75 +04bf3 04c7d 04e1e 049b1 0 0 14f0a +04bf3 04c7d 04e1e 049b1 0 1 04c01 +04bf3 04c7d 04e1e 049b1 0 2 04c55 +04bf3 04c7d 04e1e 049b1 0 3 04b80 +055a8 04836 0571b 05620 2 0 04562 +055a8 04836 0571b 05620 2 1 036d9 +055a8 04836 0571b 05620 2 2 148c8 +055a8 04836 0571b 05620 2 3 047da +14d83 14b29 04e26 0487b 0 0 14f49 +14d83 14b29 04e26 0487b 0 1 04b63 +14d83 14b29 04e26 0487b 0 2 04cd2 +14d83 14b29 04e26 0487b 0 3 04c0d +152b9 149ca 05054 052eb 3 0 0438f +152b9 149ca 05054 052eb 3 1 048b6 +152b9 149ca 05054 052eb 3 2 04b4b +152b9 149ca 05054 052eb 3 3 14c72 +1549f 057fa 14aed 04f63 3 0 02597 +1549f 057fa 14aed 04f63 3 1 05000 +1549f 057fa 14aed 04f63 3 2 02fc0 +1549f 057fa 14aed 04f63 3 3 15000 +050b1 15718 159d9 154d1 2 0 04ff8 +050b1 15718 159d9 154d1 2 1 03469 +050b1 15718 159d9 154d1 2 2 15000 +050b1 15718 159d9 154d1 2 3 04204 +14cf9 05267 14e51 049e9 3 0 0492b +14cf9 05267 14e51 049e9 3 1 04eb5 +14cf9 05267 14e51 049e9 3 2 048be +14cf9 05267 14e51 049e9 3 3 14f71 +14ccc 05594 14c33 04f63 1 0 040c0 +14ccc 05594 14c33 04f63 1 1 144e0 +14ccc 05594 14c33 04f63 1 2 040e7 +14ccc 05594 14c33 04f63 1 3 04325 +14827 152ea 04cda 048bf 2 0 04c3a +14827 152ea 04cda 048bf 2 1 0467a +14827 152ea 04cda 048bf 2 2 14e82 +14827 152ea 04cda 048bf 2 3 04c7a +04871 04e09 15815 0544f 1 0 04680 +04871 04e09 15815 0544f 1 1 14fca +04871 04e09 15815 0544f 1 2 024fe +04871 04e09 15815 0544f 1 3 04fa2 +051df 14cd6 04ee6 1541e 0 0 14d28 +051df 14cd6 04ee6 1541e 0 1 049f7 +051df 14cd6 04ee6 1541e 0 2 04c17 +051df 14cd6 04ee6 1541e 0 3 04226 +14921 14afe 05021 0493e 0 0 14f40 +14921 14afe 05021 0493e 0 1 04ad3 +14921 14afe 05021 0493e 0 2 04d5d +14921 14afe 05021 0493e 0 3 04b73 +14883 155dc 148e6 14e5f 3 0 04cf8 +14883 155dc 148e6 14e5f 3 1 03dce +14883 155dc 148e6 14e5f 3 2 04cf2 +14883 155dc 148e6 14e5f 3 3 14ef6 +15569 04ad9 04bc9 04ee7 0 0 14ffe +15569 04ad9 04bc9 04ee7 0 1 04c48 +15569 04ad9 04bc9 04ee7 0 2 04c60 +15569 04ad9 04bc9 04ee7 0 3 04d56 +0567c 15083 1547a 1548e 2 0 05000 +0567c 15083 1547a 1548e 2 1 03984 +0567c 15083 1547a 1548e 2 2 15000 +0567c 15083 1547a 1548e 2 3 031df +05637 048cb 14ff8 048a9 2 0 04ffa +05637 048cb 14ff8 048a9 2 1 03e56 +05637 048cb 14ff8 048a9 2 2 14fff +05637 048cb 14ff8 048a9 2 3 03e51 +05574 15860 14d36 0512d 0 0 145e0 +05574 15860 14d36 0512d 0 1 01c11 +05574 15860 14d36 0512d 0 2 04124 +05574 15860 14d36 0512d 0 3 0451b +15153 056b8 05162 15414 1 0 036c3 +15153 056b8 05162 15414 1 1 13e00 +15153 056b8 05162 15414 1 2 03d82 +15153 056b8 05162 15414 1 3 031e8 +05473 1493b 14e8e 14d79 1 0 04fb6 +05473 1493b 14e8e 14d79 1 1 14fe2 +05473 1493b 14e8e 14d79 1 2 0448e +05473 1493b 14e8e 14d79 1 3 044f0 +153e4 14b56 04fe9 05391 0 0 14ffb +153e4 14b56 04fe9 05391 0 1 047c3 +153e4 14b56 04fe9 05391 0 2 04a23 +153e4 14b56 04fe9 05391 0 3 04f37 +058ce 159e5 15555 04ff3 0 0 00000 +058ce 159e5 15555 04ff3 0 1 00200 +058ce 159e5 15555 04ff3 0 2 015c0 +058ce 159e5 15555 04ff3 0 3 024f4 +0582b 14ce0 148fc 05366 2 0 05000 +0582b 14ce0 148fc 05366 2 1 02c7c +0582b 14ce0 148fc 05366 2 2 15000 +0582b 14ce0 148fc 05366 2 3 03417 +157a4 14c90 15732 15853 3 0 0335e +157a4 14c90 15732 15853 3 1 05000 +157a4 14c90 15732 15853 3 2 036e3 +157a4 14c90 15732 15853 3 3 15000 +150cd 04a8d 15692 05298 3 0 04739 +150cd 04a8d 15692 05298 3 1 04a5f +150cd 04a8d 15692 05298 3 2 0357e +150cd 04a8d 15692 05298 3 3 14b30 +14cc7 1556f 14af5 15969 3 0 04dc0 +14cc7 1556f 14af5 15969 3 1 0409f +14cc7 1556f 14af5 15969 3 2 04e1a +14cc7 1556f 14af5 15969 3 3 15000 +14881 04be5 04d93 04a16 0 0 14f2d +14881 04be5 04d93 04a16 0 1 04c10 +14881 04be5 04d93 04a16 0 2 04c60 +14881 04be5 04d93 04a16 0 3 04bd0 +04cf9 052ed 14d23 151dd 1 0 04a16 +04cf9 052ed 14d23 151dd 1 1 14bbc +04cf9 052ed 14d23 151dd 1 2 04876 +04cf9 052ed 14d23 151dd 1 3 04561 +14ace 14ced 04f66 15026 1 0 04b98 +14ace 14ced 04f66 15026 1 1 14f36 +14ace 14ced 04f66 15026 1 2 04da8 +14ace 14ced 04f66 15026 1 3 049db +154e1 04c52 053f6 14e3f 1 0 03c2a +154e1 04c52 053f6 14e3f 1 1 14fb8 +154e1 04c52 053f6 14e3f 1 2 04f90 +154e1 04c52 053f6 14e3f 1 3 0467a +14faf 05868 053eb 15539 3 0 02797 +14faf 05868 053eb 15539 3 1 05000 +14faf 05868 053eb 15539 3 2 0312f +14faf 05868 053eb 15539 3 3 15000 +1577a 053dd 0554a 0500c 1 0 02669 +1577a 053dd 0554a 0500c 1 1 14f7b +1577a 053dd 0554a 0500c 1 2 04f68 +1577a 053dd 0554a 0500c 1 3 04452 +1487d 05886 155b6 155e5 3 0 0275e +1487d 05886 155b6 155e5 3 1 05000 +1487d 05886 155b6 155e5 3 2 01898 +1487d 05886 155b6 155e5 3 3 15000 +0534c 1519c 15008 15919 0 0 14860 +0534c 1519c 15008 15919 0 1 04573 +0534c 1519c 15008 15919 0 2 046fb +0534c 1519c 15008 15919 0 3 0178c +058eb 04bcc 04e19 053f7 2 0 05000 +058eb 04bcc 04e19 053f7 2 1 021c0 +058eb 04bcc 04e19 053f7 2 2 15000 +058eb 04bcc 04e19 053f7 2 3 02916 +14ec7 1576e 1537b 04cc5 2 0 04c80 +14ec7 1576e 1537b 04cc5 2 1 03276 +14ec7 1576e 1537b 04cc5 2 2 14fd2 +14ec7 1576e 1537b 04cc5 2 3 04e92 +153b1 048d1 14ce4 04f55 1 0 044ae +153b1 048d1 14ce4 04f55 1 1 14eda +153b1 048d1 14ce4 04f55 1 2 04b5d +153b1 048d1 14ce4 04f55 1 3 04dda +0494a 04c6f 157d2 153bb 2 0 04d9a +0494a 04c6f 157d2 153bb 2 1 04e12 +0494a 04c6f 157d2 153bb 2 2 15000 +0494a 04c6f 157d2 153bb 2 3 04607 +15889 14fa6 05711 04be2 2 0 00eb5 +15889 14fa6 05711 04be2 2 1 0358d +15889 14fa6 05711 04be2 2 2 00000 +15889 14fa6 05711 04be2 2 3 037f5 +14873 048fe 051d7 15548 0 0 14f59 +14873 048fe 051d7 15548 0 1 04af0 +14873 048fe 051d7 15548 0 2 04e9b +14873 048fe 051d7 15548 0 3 03dba +1497f 04ec7 15424 049ba 2 0 04c04 +1497f 04ec7 15424 049ba 2 1 04d85 +1497f 04ec7 15424 049ba 2 2 14ff2 +1497f 04ec7 15424 049ba 2 3 04c5c diff --git a/docs/NOW.md b/docs/NOW.md index a3c560765..af6997694 100644 --- a/docs/NOW.md +++ b/docs/NOW.md @@ -1,3 +1,19 @@ +# NOW — feat(spec): GF-T softmax+cross-entropy gradient (backward pass) (2026-08-07) + +Last updated: 2026-08-07 + +## feat(spec): GF-T softmax+xent gradient — the backward pass, forward+backward complete (Refs #1764) + +- Branch: `feat/gft-softmax-grad` (stacked on `feat/gft-log2-nll`) + +### Что легло +- `specs/ternary/gft_softmax_grad4.t27` (`GftSoftmaxGrad4`): the **softmax + cross-entropy gradient** over four signed GF-T16 logits. For a one-hot target `t`, the classic closed form `∂L/∂l_i = p_i − y_i` — so the whole backward pass is just the softmax forward `p_i` minus the one-hot label (`grad = (i==t) ? sadd(p, −1.0) : p`). Composes the verified softmax (max, sadd+neg, exp2, recip, RNE mul). Bit-exact to the integer oracle **1600/1600** (iverilog); gradient accuracy **≤0.0018 abs vs true `p_i−y_i`**. Spot: uniform logits, target 0 → grad₀ = 0.25−1 = **−0.75** exact, grad₁ = **0.25** exact. +- Fresh seal for `GftSoftmaxGrad4` (`seal --verify` MATCH). No compiler change. + +**Forward + backward now complete on GF-T:** `logits → softmax → prob → NLL loss`, and `→ gradient p−y`. Combined with the exp2/log2 inverse pair, the per-sample training step (forward loss + backprop signal into the logits) is fully expressible spec-first and iverilog-verified — the foundation for on-device training. + +--- + # NOW — feat(spec): GF-T log2 primitive + cross-entropy (NLL) loss (2026-08-06) Last updated: 2026-08-06 diff --git a/specs/ternary/gft_softmax_grad4.t27 b/specs/ternary/gft_softmax_grad4.t27 new file mode 100644 index 000000000..347218c42 --- /dev/null +++ b/specs/ternary/gft_softmax_grad4.t27 @@ -0,0 +1,183 @@ +module GftSoftmaxGrad4; +// #1764 + GF-T: the softmax + cross-entropy GRADIENT over four signed GF-T16 logits. +// numerically stabilized by subtracting the max: +// p_i = 2^(l_i - M) / sum_j 2^(l_j - M), M = max_j l_j. +// For a one-hot target t, dL/dl_i = p_i - y_i (the classic closed form). Returns +// grad_sel as a signed GF-T16. Composes the verified softmax (max, sadd+neg, +// exp2, recip, RNE mul) then subtracts the one-hot label. Bit-exact to the +// committed oracle over 1600 vectors; grad accuracy <=0.0018 abs vs true p_i-y_i. +// +// Inputs: l0..l3 GF-T16 (u32); t u8 target class; sel u8. Output: grad_sel GF-T16. + +fn magadd(a: i32, b: i32) -> i32 { + var ao : i32 = a >> 9; var am : i32 = a & 511; + var bo : i32 = b >> 9; var bm : i32 = b & 511; + var ho : i32 = bo; var hm : i32 = bm; var lo : i32 = ao; var lm : i32 = am; + if (ao >= bo) { ho = ao; hm = am; lo = bo; lm = bm; } + var hs : i32 = 512 + hm; var ls : i32 = 512 + lm; + var d : i32 = ho - lo; if (d > 11) { d = 11; } + var losh : i32 = ls >> d; var rem : i32 = ls - (losh << d); + var s : i32 = hs + losh; var off : i32 = ho; var mant : i32 = s - 512; + if (s >= 1024) { + var g : i32 = s & 1; var pre : i32 = s >> 1; mant = pre - 512; + if (g == 1) { if (rem > 0) { mant = mant + 1; } else { if ((pre & 1) == 1) { mant = mant + 1; } } } + off = ho + 1; if (off >= 80) { off = 80; } + } else { + var t : i32 = rem << 1; var hf : i32 = 1 << d; + if (t > hf) { mant = mant + 1; } else { if (t == hf) { if ((s & 1) == 1) { mant = mant + 1; } } } + } + if (mant >= 512) { mant = 0; off = off + 1; if (off >= 80) { off = 80; } } + return (off << 9) | mant; +} +fn magsub(hi: i32, lo: i32) -> i32 { + if (hi == lo) { return 0; } + var ho : i32 = hi >> 9; var hm : i32 = hi & 511; + var lo_o : i32 = lo >> 9; var lm : i32 = lo & 511; + var d : i32 = ho - lo_o; var hs : i32 = (512 + hm) << 14; + var la : i32 = 0; var sticky : i32 = 0; + if (d >= 26) { la = 0; sticky = 1; } + else { var ls : i32 = (512 + lm) << 14; la = ls >> d; if ((ls - (la << d)) > 0) { sticky = 1; } } + var diff : i32 = hs - la; var off : i32 = ho; + if (diff < 8388608) { if (off > 1) { diff = diff << 1; off = off - 1; } } + if (diff < 8388608) { if (off > 1) { diff = diff << 1; off = off - 1; } } + if (diff < 8388608) { if (off > 1) { diff = diff << 1; off = off - 1; } } + if (diff < 8388608) { if (off > 1) { diff = diff << 1; off = off - 1; } } + if (diff < 8388608) { if (off > 1) { diff = diff << 1; off = off - 1; } } + if (diff < 8388608) { if (off > 1) { diff = diff << 1; off = off - 1; } } + if (diff < 8388608) { if (off > 1) { diff = diff << 1; off = off - 1; } } + if (diff < 8388608) { if (off > 1) { diff = diff << 1; off = off - 1; } } + if (diff < 8388608) { if (off > 1) { diff = diff << 1; off = off - 1; } } + if (diff < 8388608) { if (off > 1) { diff = diff << 1; off = off - 1; } } + if (diff < 8388608) { if (off > 1) { diff = diff << 1; off = off - 1; } } + if (diff < 8388608) { if (off > 1) { diff = diff << 1; off = off - 1; } } + var q : i32 = diff >> 14; var rem : i32 = diff - (q << 14); var half : i32 = 8192; var mant : i32 = q - 512; + if (rem > half) { mant = mant + 1; } + else { if (rem == half) { if (sticky == 1) { mant = mant + 1; } else { if ((q & 1) == 1) { mant = mant + 1; } } } } + if (mant >= 512) { mant = 0; off = off + 1; if (off >= 80) { off = 80; } } + return (off << 9) | mant; +} +fn sadd(a: u32, b: u32) -> u32 { + if (a == 0) { return b; } + if (b == 0) { return a; } + var sa : i32 = (a >> 16) as i32; var ma : i32 = (a & 65535) as i32; + var sb : i32 = (b >> 16) as i32; var mb : i32 = (b & 65535) as i32; + if (sa == sb) { return ((sa << 16) | magadd(ma, mb)) as u32; } + var bsign : i32 = sa; + var r : i32 = magsub(ma, mb); + if (ma < mb) { r = magsub(mb, ma); bsign = sb; } + if (r == 0) { return 0; } + return ((bsign << 16) | r) as u32; +} +fn neg(v: u32) -> u32 { + if (v == 0) { return 0; } + return v ^ 65536; +} +fn category(a: u32) -> u8 { + if (a == 0) { return 1; } + if ((a >> 16) == 1) { return 0; } + return 2; +} +fn gt(a: u32, b: u32) -> u8 { + var ca : u8 = category(a); + var cb : u8 = category(b); + if (ca != cb) { if (ca > cb) { return 1; } return 0; } + var ma : u32 = a & 65535; + var mb : u32 = b & 65535; + if (ca == 2) { if (ma > mb) { return 1; } return 0; } + if (ca == 0) { if (ma < mb) { return 1; } return 0; } + return 0; +} +fn pow2_frac(f: i32) -> i32 { + var p : i32 = 6; + p = (((p * f) + 32768) >> 16) + 29; + p = (((p * f) + 32768) >> 16) + 123; + p = (((p * f) + 32768) >> 16) + 354; + p = ((p * f) + 32768) >> 16; + if (p > 511) { p = 511; } + return p; +} +fn exp2(x: u32) -> u32 { + if (x == 0) { return 20480; } + var ng : i32 = 0; + if ((x >> 16) == 1) { ng = 1; } + var off_in : i32 = ((x >> 9) & 127) as i32; + var mant_in : i32 = (x & 511) as i32; + if (off_in >= 48) { + if (ng == 1) { return 512; } + return ((80 << 9) | 511) as u32; + } + var num : i32 = 512 + mant_in; + var sh : i32 = off_in - 33; + var mq : i32 = num; + if (sh >= 0) { mq = num << sh; } else { mq = num >> (0 - sh); } + var ki : i32 = mq >> 16; + var ff : i32 = mq & 65535; + var k : i32 = ki; + var f : i32 = ff; + if (ng == 1) { + if (ff == 0) { k = 0 - ki; f = 0; } + else { k = 0 - (ki + 1); f = 65536 - ff; } + } + var mant : i32 = pow2_frac(f); + var off : i32 = k + 40; + if (off < 1) { return 512; } + if (off > 80) { return ((80 << 9) | 511) as u32; } + return ((off << 9) | mant) as u32; +} +fn recip(x: u32) -> u32 { + if (x == 0) { return ((80 << 9) | 511) as u32; } + var s : i32 = 0; + if ((x >> 16) == 1) { s = 1; } + var o : i32 = ((x >> 9) & 127) as i32; + var m : i32 = (x & 511) as i32; + var den : i32 = 512 + m; + var mp : i32 = (524288 + (den >> 1)) / den - 512; + var off : i32 = 79 - o; + if (mp >= 512) { mp = mp - 512; off = off + 1; } + if (off < 1) { off = 1; mp = 0; } + if (off > 80) { off = 80; mp = 511; } + return ((s << 16) | (off << 9) | mp) as u32; +} +fn magmul(a16: i32, b16: i32) -> i32 { + var ao : i32 = a16 >> 9; var am : i32 = a16 & 511; + var bo : i32 = b16 >> 9; var bm : i32 = b16 & 511; + var prod : i32 = (512 + am) * (512 + bm); + var carry : i32 = 0; if (prod >= 524288) { carry = 1; } + var q : i32 = prod >> 9; var r : i32 = prod & 511; var half : i32 = 256; + if (carry == 1) { q = prod >> 10; r = prod & 1023; half = 512; } + var mant : i32 = q - 512; + if (r > half) { mant = mant + 1; } + if (r == half) { if ((q & 1) == 1) { mant = mant + 1; } } + var sm : i32 = ao + bo + carry; + var out_off : i32 = 0; + if (sm >= 40) { var res : i32 = sm - 40; if (res >= 80) { out_off = 80; } else { out_off = res; } } + if (mant >= 512) { mant = 0; out_off = out_off + 1; if (out_off >= 80) { out_off = 80; } } + return (out_off << 9) | mant; +} + +// softmax+xent gradient: grad_sel = p_sel - [sel==t], p from softmax. +fn on_comb(l0: u32, l1: u32, l2: u32, l3: u32, t: u8, sel: u8) -> u32 { + var mx : u32 = l0; + if (gt(l1, mx) == 1) { mx = l1; } + if (gt(l2, mx) == 1) { mx = l2; } + if (gt(l3, mx) == 1) { mx = l3; } + var e0 : u32 = exp2(sadd(l0, neg(mx))); + var e1 : u32 = exp2(sadd(l1, neg(mx))); + var e2 : u32 = exp2(sadd(l2, neg(mx))); + var e3 : u32 = exp2(sadd(l3, neg(mx))); + var ssum : u32 = sadd(sadd(e0, e1), sadd(e2, e3)); + var rr : u32 = recip(ssum); + var esel : u32 = e0; + if (sel == 1) { esel = e1; } + if (sel == 2) { esel = e2; } + if (sel == 3) { esel = e3; } + var p : u32 = magmul((esel & 65535) as i32, (rr & 65535) as i32) as u32; + // subtract the one-hot label: if this is the target class, grad = p - 1.0. + if (sel == t) { return sadd(p, 86016); } + return p; +} + +// uniform logits, target 0: grad0 = 0.25 - 1 = -0.75 (0x14F00 = 85760); grad1 = 0.25 (0x4c00). +test u_target { assert_eq(on_comb(20480,20480,20480,20480, 0, 0), 85760); } +test u_other { assert_eq(on_comb(20480,20480,20480,20480, 0, 1), 19456); } +endmodule