nmarshall commited on
Commit
2a8d5eb
·
1 Parent(s): b6edd41

gameplay: port unsigned admission string comparison

Browse files
crates/urt-gameplay/src/bin/urt-native-policy.rs CHANGED
@@ -773,6 +773,16 @@ fn run() -> Result<String, String> {
773
  out.ring_advance
774
  ))
775
  }
 
 
 
 
 
 
 
 
 
 
776
  _ => Err("unknown command".into()),
777
  }
778
  }
 
773
  out.ring_advance
774
  ))
775
  }
776
+ "byte-compare" => {
777
+ let mut p = 0;
778
+ let a = input_blob(&w, &mut p)?.ok_or("null left")?;
779
+ let b = input_blob(&w, &mut p)?.ok_or("null right")?;
780
+ if p != w.len() {
781
+ return Err("trailing compare words".into());
782
+ }
783
+ let r = byte_compare(&a, &b).map_err(|e| format!("{e:?}"))?;
784
+ Ok(format!("{{\"result\":{r}}}"))
785
+ }
786
  _ => Err("unknown command".into()),
787
  }
788
  }
crates/urt-gameplay/src/native_policy.rs CHANGED
@@ -2092,3 +2092,36 @@ mod connect_tests {
2092
  assert_eq!(client[6332..], [0; 4]);
2093
  }
2094
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2092
  assert_eq!(client[6332..], [0; 4]);
2093
  }
2094
  }
2095
+
2096
+ /// Original36306 logical-string result: first unsigned byte difference.
2097
+ pub fn byte_compare(left: &[u8], right: &[u8]) -> Result<i32, Error> {
2098
+ if left.len() > 8192 || right.len() > 8192 {
2099
+ return Err(Error::InvalidInput);
2100
+ }
2101
+ let mut j = 0;
2102
+ loop {
2103
+ let a = *left.get(j).unwrap_or(&0);
2104
+ let b = *right.get(j).unwrap_or(&0);
2105
+ if a != b {
2106
+ return Ok(a as i32 - b as i32);
2107
+ }
2108
+ if a == 0 {
2109
+ return Ok(0);
2110
+ }
2111
+ j += 1;
2112
+ }
2113
+ }
2114
+ #[cfg(test)]
2115
+ mod byte_compare_tests {
2116
+ use super::*;
2117
+ #[test]
2118
+ fn high_bytes_unsigned_and_nul_stops() {
2119
+ assert_eq!(byte_compare(b"\xff", b"a"), Ok(158));
2120
+ assert_eq!(byte_compare(b"a\0suffix", b"a"), Ok(0));
2121
+ assert_eq!(byte_compare(b"A", b"a"), Ok(-32));
2122
+ }
2123
+ #[test]
2124
+ fn input_guard() {
2125
+ assert_eq!(byte_compare(&vec![1; 8193], b"x"), Err(Error::InvalidInput));
2126
+ }
2127
+ }
docs/FINDINGS.md CHANGED
@@ -1742,3 +1742,6 @@ RE-813–822 replaces the scoreboard decimal assumption with actual37914 executi
1742
 
1743
 
1744
  **RE-914:** 256 actual36306 cases recover the word-at-a-time comparison used by admission/password filtering. Result is the exact unsigned-byte difference at the first mismatch, with NUL termination, case sensitivity, high bytes and all four synthetic pointer alignments checked. Guard bytes are explicit fixture memory; native pointer validity and aliases remain open. [Evidence](research/QVM_BYTE_COMPARE.md).
 
 
 
 
1742
 
1743
 
1744
  **RE-914:** 256 actual36306 cases recover the word-at-a-time comparison used by admission/password filtering. Result is the exact unsigned-byte difference at the first mismatch, with NUL termination, case sensitivity, high bytes and all four synthetic pointer alignments checked. Guard bytes are explicit fixture memory; native pointer validity and aliases remain open. [Evidence](research/QVM_BYTE_COMPARE.md).
1745
+
1746
+
1747
+ **RE-915:** Rust matches256 original36306 fixtures across alignment/case/NUL/high-byte domains, preserving the exact byte difference rather than only its sign. Typed logical strings reject oversized inputs. Raw word lookahead, invalid pointers and aliases remain outside the portable contract. [Evidence](research/RUST_BYTE_COMPARE.md).
docs/PROVISIONAL_TODO.md CHANGED
@@ -1782,3 +1782,6 @@ RE-904–913 completed bounded initialization, full persistence, in-memory round
1782
 
1783
 
1784
  RE-914: 256 actual36306 cases recover the word-at-a-time comparison used by admission/password filtering. Result is the exact unsigned-byte difference at the first mismatch, with NUL termination, case sensitivity, high bytes and all four synthetic pointer alignments checked. Guard bytes are explicit fixture memory; native pointer validity and aliases remain open. Full runtime completion remains open. [Evidence](research/QVM_BYTE_COMPARE.md).
 
 
 
 
1782
 
1783
 
1784
  RE-914: 256 actual36306 cases recover the word-at-a-time comparison used by admission/password filtering. Result is the exact unsigned-byte difference at the first mismatch, with NUL termination, case sensitivity, high bytes and all four synthetic pointer alignments checked. Guard bytes are explicit fixture memory; native pointer validity and aliases remain open. Full runtime completion remains open. [Evidence](research/QVM_BYTE_COMPARE.md).
1785
+
1786
+
1787
+ RE-915: Rust matches256 original36306 fixtures across alignment/case/NUL/high-byte domains, preserving the exact byte difference rather than only its sign. Typed logical strings reject oversized inputs. Raw word lookahead, invalid pointers and aliases remain outside the portable contract. Full runtime completion remains open. [Evidence](research/RUST_BYTE_COMPARE.md).
docs/RESEARCH_LEDGER.md CHANGED
@@ -2295,3 +2295,8 @@ At the tenth-commit boundary, the first full attempt exposed a helper filename c
2295
  ## 2026-10-28 — RE-914 Original unsigned byte string comparison
2296
 
2297
  256 actual36306 cases recover the word-at-a-time comparison used by admission/password filtering. Result is the exact unsigned-byte difference at the first mismatch, with NUL termination, case sensitivity, high bytes and all four synthetic pointer alignments checked. Guard bytes are explicit fixture memory; native pointer validity and aliases remain open. Focused `cargo xtask test-group qvm-byte-compare` passes (4 Python tests); selected reports regenerate twice deterministically, with storage, documentation links and whitespace guards. Full suite deferred to task ten. Original assets unchanged; source fixtures do not establish complete native/runtime parity.
 
 
 
 
 
 
2295
  ## 2026-10-28 — RE-914 Original unsigned byte string comparison
2296
 
2297
  256 actual36306 cases recover the word-at-a-time comparison used by admission/password filtering. Result is the exact unsigned-byte difference at the first mismatch, with NUL termination, case sensitivity, high bytes and all four synthetic pointer alignments checked. Guard bytes are explicit fixture memory; native pointer validity and aliases remain open. Focused `cargo xtask test-group qvm-byte-compare` passes (4 Python tests); selected reports regenerate twice deterministically, with storage, documentation links and whitespace guards. Full suite deferred to task ten. Original assets unchanged; source fixtures do not establish complete native/runtime parity.
2298
+
2299
+
2300
+ ## 2026-10-28 — RE-915 Rust unsigned comparison for admission
2301
+
2302
+ Rust matches256 original36306 fixtures across alignment/case/NUL/high-byte domains, preserving the exact byte difference rather than only its sign. Typed logical strings reject oversized inputs. Raw word lookahead, invalid pointers and aliases remain outside the portable contract. Focused `cargo xtask test-group rust-byte-compare` passes (9 Python tests); selected reports regenerate twice deterministically, with storage, documentation links and whitespace guards. Full suite deferred to task ten. Original assets unchanged; source fixtures do not establish complete native/runtime parity.
docs/REVERSE_ENGINEERING_TODO.md CHANGED
@@ -1819,3 +1819,6 @@ Purpose: turn the supplied installation into an evidence-backed specification of
1819
 
1820
 
1821
  - [x] RE-914 Original unsigned byte string comparison ([evidence](research/QVM_BYTE_COMPARE.md)).
 
 
 
 
1819
 
1820
 
1821
  - [x] RE-914 Original unsigned byte string comparison ([evidence](research/QVM_BYTE_COMPARE.md)).
1822
+
1823
+
1824
+ - [x] RE-915 Rust unsigned comparison for admission ([evidence](research/RUST_BYTE_COMPARE.md)).
docs/research/README.md CHANGED
@@ -1354,3 +1354,6 @@ The extension collector adds five focused tests for native tail calls, command-r
1354
 
1355
 
1356
  [RE-914: Original unsigned byte string comparison](QVM_BYTE_COMPARE.md).
 
 
 
 
1354
 
1355
 
1356
  [RE-914: Original unsigned byte string comparison](QVM_BYTE_COMPARE.md).
1357
+
1358
+
1359
+ [RE-915: Rust unsigned comparison for admission](RUST_BYTE_COMPARE.md).
docs/research/RUST_BYTE_COMPARE.md ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ # Rust unsigned comparison for admission
2
+
3
+ RE-915. Reproduce with `python3 scripts/analyze_rust_byte_compare.py`; focused validation: `cargo xtask test-group rust-byte-compare`. [Machine report](rust-byte-compare.json).
4
+
5
+ Rust matches256 original36306 fixtures across alignment/case/NUL/high-byte domains, preserving the exact byte difference rather than only its sign. Typed logical strings reject oversized inputs. Raw word lookahead, invalid pointers and aliases remain outside the portable contract.
6
+
7
+ Original executable/native runtime and complete Linux/macOS Rust/Bevy/Solari acceptance remain unverified.
docs/research/rust-byte-compare.json ADDED
@@ -0,0 +1,2055 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "limits": "Rust matches256 original36306 fixtures across alignment/case/NUL/high-byte domains, preserving the exact byte difference rather than only its sign. Typed logical strings reject oversized inputs. Raw word lookahead, invalid pointers and aliases remain outside the portable contract.",
3
+ "probes": [
4
+ {
5
+ "rust": {
6
+ "result": 0
7
+ },
8
+ "source": {
9
+ "result": 0
10
+ }
11
+ },
12
+ {
13
+ "rust": {
14
+ "result": 0
15
+ },
16
+ "source": {
17
+ "result": 0
18
+ }
19
+ },
20
+ {
21
+ "rust": {
22
+ "result": 0
23
+ },
24
+ "source": {
25
+ "result": 0
26
+ }
27
+ },
28
+ {
29
+ "rust": {
30
+ "result": 0
31
+ },
32
+ "source": {
33
+ "result": 0
34
+ }
35
+ },
36
+ {
37
+ "rust": {
38
+ "result": -97
39
+ },
40
+ "source": {
41
+ "result": -97
42
+ }
43
+ },
44
+ {
45
+ "rust": {
46
+ "result": -97
47
+ },
48
+ "source": {
49
+ "result": -97
50
+ }
51
+ },
52
+ {
53
+ "rust": {
54
+ "result": -97
55
+ },
56
+ "source": {
57
+ "result": -97
58
+ }
59
+ },
60
+ {
61
+ "rust": {
62
+ "result": -97
63
+ },
64
+ "source": {
65
+ "result": -97
66
+ }
67
+ },
68
+ {
69
+ "rust": {
70
+ "result": -65
71
+ },
72
+ "source": {
73
+ "result": -65
74
+ }
75
+ },
76
+ {
77
+ "rust": {
78
+ "result": -65
79
+ },
80
+ "source": {
81
+ "result": -65
82
+ }
83
+ },
84
+ {
85
+ "rust": {
86
+ "result": -65
87
+ },
88
+ "source": {
89
+ "result": -65
90
+ }
91
+ },
92
+ {
93
+ "rust": {
94
+ "result": -65
95
+ },
96
+ "source": {
97
+ "result": -65
98
+ }
99
+ },
100
+ {
101
+ "rust": {
102
+ "result": -97
103
+ },
104
+ "source": {
105
+ "result": -97
106
+ }
107
+ },
108
+ {
109
+ "rust": {
110
+ "result": -97
111
+ },
112
+ "source": {
113
+ "result": -97
114
+ }
115
+ },
116
+ {
117
+ "rust": {
118
+ "result": -97
119
+ },
120
+ "source": {
121
+ "result": -97
122
+ }
123
+ },
124
+ {
125
+ "rust": {
126
+ "result": -97
127
+ },
128
+ "source": {
129
+ "result": -97
130
+ }
131
+ },
132
+ {
133
+ "rust": {
134
+ "result": -97
135
+ },
136
+ "source": {
137
+ "result": -97
138
+ }
139
+ },
140
+ {
141
+ "rust": {
142
+ "result": -97
143
+ },
144
+ "source": {
145
+ "result": -97
146
+ }
147
+ },
148
+ {
149
+ "rust": {
150
+ "result": -97
151
+ },
152
+ "source": {
153
+ "result": -97
154
+ }
155
+ },
156
+ {
157
+ "rust": {
158
+ "result": -97
159
+ },
160
+ "source": {
161
+ "result": -97
162
+ }
163
+ },
164
+ {
165
+ "rust": {
166
+ "result": -97
167
+ },
168
+ "source": {
169
+ "result": -97
170
+ }
171
+ },
172
+ {
173
+ "rust": {
174
+ "result": -97
175
+ },
176
+ "source": {
177
+ "result": -97
178
+ }
179
+ },
180
+ {
181
+ "rust": {
182
+ "result": -97
183
+ },
184
+ "source": {
185
+ "result": -97
186
+ }
187
+ },
188
+ {
189
+ "rust": {
190
+ "result": -97
191
+ },
192
+ "source": {
193
+ "result": -97
194
+ }
195
+ },
196
+ {
197
+ "rust": {
198
+ "result": -128
199
+ },
200
+ "source": {
201
+ "result": -128
202
+ }
203
+ },
204
+ {
205
+ "rust": {
206
+ "result": -128
207
+ },
208
+ "source": {
209
+ "result": -128
210
+ }
211
+ },
212
+ {
213
+ "rust": {
214
+ "result": -128
215
+ },
216
+ "source": {
217
+ "result": -128
218
+ }
219
+ },
220
+ {
221
+ "rust": {
222
+ "result": -128
223
+ },
224
+ "source": {
225
+ "result": -128
226
+ }
227
+ },
228
+ {
229
+ "rust": {
230
+ "result": -97
231
+ },
232
+ "source": {
233
+ "result": -97
234
+ }
235
+ },
236
+ {
237
+ "rust": {
238
+ "result": -97
239
+ },
240
+ "source": {
241
+ "result": -97
242
+ }
243
+ },
244
+ {
245
+ "rust": {
246
+ "result": -97
247
+ },
248
+ "source": {
249
+ "result": -97
250
+ }
251
+ },
252
+ {
253
+ "rust": {
254
+ "result": -97
255
+ },
256
+ "source": {
257
+ "result": -97
258
+ }
259
+ },
260
+ {
261
+ "rust": {
262
+ "result": 97
263
+ },
264
+ "source": {
265
+ "result": 97
266
+ }
267
+ },
268
+ {
269
+ "rust": {
270
+ "result": 97
271
+ },
272
+ "source": {
273
+ "result": 97
274
+ }
275
+ },
276
+ {
277
+ "rust": {
278
+ "result": 97
279
+ },
280
+ "source": {
281
+ "result": 97
282
+ }
283
+ },
284
+ {
285
+ "rust": {
286
+ "result": 97
287
+ },
288
+ "source": {
289
+ "result": 97
290
+ }
291
+ },
292
+ {
293
+ "rust": {
294
+ "result": 0
295
+ },
296
+ "source": {
297
+ "result": 0
298
+ }
299
+ },
300
+ {
301
+ "rust": {
302
+ "result": 0
303
+ },
304
+ "source": {
305
+ "result": 0
306
+ }
307
+ },
308
+ {
309
+ "rust": {
310
+ "result": 0
311
+ },
312
+ "source": {
313
+ "result": 0
314
+ }
315
+ },
316
+ {
317
+ "rust": {
318
+ "result": 0
319
+ },
320
+ "source": {
321
+ "result": 0
322
+ }
323
+ },
324
+ {
325
+ "rust": {
326
+ "result": 32
327
+ },
328
+ "source": {
329
+ "result": 32
330
+ }
331
+ },
332
+ {
333
+ "rust": {
334
+ "result": 32
335
+ },
336
+ "source": {
337
+ "result": 32
338
+ }
339
+ },
340
+ {
341
+ "rust": {
342
+ "result": 32
343
+ },
344
+ "source": {
345
+ "result": 32
346
+ }
347
+ },
348
+ {
349
+ "rust": {
350
+ "result": 32
351
+ },
352
+ "source": {
353
+ "result": 32
354
+ }
355
+ },
356
+ {
357
+ "rust": {
358
+ "result": -98
359
+ },
360
+ "source": {
361
+ "result": -98
362
+ }
363
+ },
364
+ {
365
+ "rust": {
366
+ "result": -98
367
+ },
368
+ "source": {
369
+ "result": -98
370
+ }
371
+ },
372
+ {
373
+ "rust": {
374
+ "result": -98
375
+ },
376
+ "source": {
377
+ "result": -98
378
+ }
379
+ },
380
+ {
381
+ "rust": {
382
+ "result": -98
383
+ },
384
+ "source": {
385
+ "result": -98
386
+ }
387
+ },
388
+ {
389
+ "rust": {
390
+ "result": -98
391
+ },
392
+ "source": {
393
+ "result": -98
394
+ }
395
+ },
396
+ {
397
+ "rust": {
398
+ "result": -98
399
+ },
400
+ "source": {
401
+ "result": -98
402
+ }
403
+ },
404
+ {
405
+ "rust": {
406
+ "result": -98
407
+ },
408
+ "source": {
409
+ "result": -98
410
+ }
411
+ },
412
+ {
413
+ "rust": {
414
+ "result": -98
415
+ },
416
+ "source": {
417
+ "result": -98
418
+ }
419
+ },
420
+ {
421
+ "rust": {
422
+ "result": -98
423
+ },
424
+ "source": {
425
+ "result": -98
426
+ }
427
+ },
428
+ {
429
+ "rust": {
430
+ "result": -98
431
+ },
432
+ "source": {
433
+ "result": -98
434
+ }
435
+ },
436
+ {
437
+ "rust": {
438
+ "result": -98
439
+ },
440
+ "source": {
441
+ "result": -98
442
+ }
443
+ },
444
+ {
445
+ "rust": {
446
+ "result": -98
447
+ },
448
+ "source": {
449
+ "result": -98
450
+ }
451
+ },
452
+ {
453
+ "rust": {
454
+ "result": -31
455
+ },
456
+ "source": {
457
+ "result": -31
458
+ }
459
+ },
460
+ {
461
+ "rust": {
462
+ "result": -31
463
+ },
464
+ "source": {
465
+ "result": -31
466
+ }
467
+ },
468
+ {
469
+ "rust": {
470
+ "result": -31
471
+ },
472
+ "source": {
473
+ "result": -31
474
+ }
475
+ },
476
+ {
477
+ "rust": {
478
+ "result": -31
479
+ },
480
+ "source": {
481
+ "result": -31
482
+ }
483
+ },
484
+ {
485
+ "rust": {
486
+ "result": 0
487
+ },
488
+ "source": {
489
+ "result": 0
490
+ }
491
+ },
492
+ {
493
+ "rust": {
494
+ "result": 0
495
+ },
496
+ "source": {
497
+ "result": 0
498
+ }
499
+ },
500
+ {
501
+ "rust": {
502
+ "result": 0
503
+ },
504
+ "source": {
505
+ "result": 0
506
+ }
507
+ },
508
+ {
509
+ "rust": {
510
+ "result": 0
511
+ },
512
+ "source": {
513
+ "result": 0
514
+ }
515
+ },
516
+ {
517
+ "rust": {
518
+ "result": 65
519
+ },
520
+ "source": {
521
+ "result": 65
522
+ }
523
+ },
524
+ {
525
+ "rust": {
526
+ "result": 65
527
+ },
528
+ "source": {
529
+ "result": 65
530
+ }
531
+ },
532
+ {
533
+ "rust": {
534
+ "result": 65
535
+ },
536
+ "source": {
537
+ "result": 65
538
+ }
539
+ },
540
+ {
541
+ "rust": {
542
+ "result": 65
543
+ },
544
+ "source": {
545
+ "result": 65
546
+ }
547
+ },
548
+ {
549
+ "rust": {
550
+ "result": -32
551
+ },
552
+ "source": {
553
+ "result": -32
554
+ }
555
+ },
556
+ {
557
+ "rust": {
558
+ "result": -32
559
+ },
560
+ "source": {
561
+ "result": -32
562
+ }
563
+ },
564
+ {
565
+ "rust": {
566
+ "result": -32
567
+ },
568
+ "source": {
569
+ "result": -32
570
+ }
571
+ },
572
+ {
573
+ "rust": {
574
+ "result": -32
575
+ },
576
+ "source": {
577
+ "result": -32
578
+ }
579
+ },
580
+ {
581
+ "rust": {
582
+ "result": 0
583
+ },
584
+ "source": {
585
+ "result": 0
586
+ }
587
+ },
588
+ {
589
+ "rust": {
590
+ "result": 0
591
+ },
592
+ "source": {
593
+ "result": 0
594
+ }
595
+ },
596
+ {
597
+ "rust": {
598
+ "result": 0
599
+ },
600
+ "source": {
601
+ "result": 0
602
+ }
603
+ },
604
+ {
605
+ "rust": {
606
+ "result": 0
607
+ },
608
+ "source": {
609
+ "result": 0
610
+ }
611
+ },
612
+ {
613
+ "rust": {
614
+ "result": -32
615
+ },
616
+ "source": {
617
+ "result": -32
618
+ }
619
+ },
620
+ {
621
+ "rust": {
622
+ "result": -32
623
+ },
624
+ "source": {
625
+ "result": -32
626
+ }
627
+ },
628
+ {
629
+ "rust": {
630
+ "result": -32
631
+ },
632
+ "source": {
633
+ "result": -32
634
+ }
635
+ },
636
+ {
637
+ "rust": {
638
+ "result": -32
639
+ },
640
+ "source": {
641
+ "result": -32
642
+ }
643
+ },
644
+ {
645
+ "rust": {
646
+ "result": -32
647
+ },
648
+ "source": {
649
+ "result": -32
650
+ }
651
+ },
652
+ {
653
+ "rust": {
654
+ "result": -32
655
+ },
656
+ "source": {
657
+ "result": -32
658
+ }
659
+ },
660
+ {
661
+ "rust": {
662
+ "result": -32
663
+ },
664
+ "source": {
665
+ "result": -32
666
+ }
667
+ },
668
+ {
669
+ "rust": {
670
+ "result": -32
671
+ },
672
+ "source": {
673
+ "result": -32
674
+ }
675
+ },
676
+ {
677
+ "rust": {
678
+ "result": -32
679
+ },
680
+ "source": {
681
+ "result": -32
682
+ }
683
+ },
684
+ {
685
+ "rust": {
686
+ "result": -32
687
+ },
688
+ "source": {
689
+ "result": -32
690
+ }
691
+ },
692
+ {
693
+ "rust": {
694
+ "result": -32
695
+ },
696
+ "source": {
697
+ "result": -32
698
+ }
699
+ },
700
+ {
701
+ "rust": {
702
+ "result": -32
703
+ },
704
+ "source": {
705
+ "result": -32
706
+ }
707
+ },
708
+ {
709
+ "rust": {
710
+ "result": -63
711
+ },
712
+ "source": {
713
+ "result": -63
714
+ }
715
+ },
716
+ {
717
+ "rust": {
718
+ "result": -63
719
+ },
720
+ "source": {
721
+ "result": -63
722
+ }
723
+ },
724
+ {
725
+ "rust": {
726
+ "result": -63
727
+ },
728
+ "source": {
729
+ "result": -63
730
+ }
731
+ },
732
+ {
733
+ "rust": {
734
+ "result": -63
735
+ },
736
+ "source": {
737
+ "result": -63
738
+ }
739
+ },
740
+ {
741
+ "rust": {
742
+ "result": -32
743
+ },
744
+ "source": {
745
+ "result": -32
746
+ }
747
+ },
748
+ {
749
+ "rust": {
750
+ "result": -32
751
+ },
752
+ "source": {
753
+ "result": -32
754
+ }
755
+ },
756
+ {
757
+ "rust": {
758
+ "result": -32
759
+ },
760
+ "source": {
761
+ "result": -32
762
+ }
763
+ },
764
+ {
765
+ "rust": {
766
+ "result": -32
767
+ },
768
+ "source": {
769
+ "result": -32
770
+ }
771
+ },
772
+ {
773
+ "rust": {
774
+ "result": 97
775
+ },
776
+ "source": {
777
+ "result": 97
778
+ }
779
+ },
780
+ {
781
+ "rust": {
782
+ "result": 97
783
+ },
784
+ "source": {
785
+ "result": 97
786
+ }
787
+ },
788
+ {
789
+ "rust": {
790
+ "result": 97
791
+ },
792
+ "source": {
793
+ "result": 97
794
+ }
795
+ },
796
+ {
797
+ "rust": {
798
+ "result": 97
799
+ },
800
+ "source": {
801
+ "result": 97
802
+ }
803
+ },
804
+ {
805
+ "rust": {
806
+ "result": 98
807
+ },
808
+ "source": {
809
+ "result": 98
810
+ }
811
+ },
812
+ {
813
+ "rust": {
814
+ "result": 98
815
+ },
816
+ "source": {
817
+ "result": 98
818
+ }
819
+ },
820
+ {
821
+ "rust": {
822
+ "result": 98
823
+ },
824
+ "source": {
825
+ "result": 98
826
+ }
827
+ },
828
+ {
829
+ "rust": {
830
+ "result": 98
831
+ },
832
+ "source": {
833
+ "result": 98
834
+ }
835
+ },
836
+ {
837
+ "rust": {
838
+ "result": 32
839
+ },
840
+ "source": {
841
+ "result": 32
842
+ }
843
+ },
844
+ {
845
+ "rust": {
846
+ "result": 32
847
+ },
848
+ "source": {
849
+ "result": 32
850
+ }
851
+ },
852
+ {
853
+ "rust": {
854
+ "result": 32
855
+ },
856
+ "source": {
857
+ "result": 32
858
+ }
859
+ },
860
+ {
861
+ "rust": {
862
+ "result": 32
863
+ },
864
+ "source": {
865
+ "result": 32
866
+ }
867
+ },
868
+ {
869
+ "rust": {
870
+ "result": 0
871
+ },
872
+ "source": {
873
+ "result": 0
874
+ }
875
+ },
876
+ {
877
+ "rust": {
878
+ "result": 0
879
+ },
880
+ "source": {
881
+ "result": 0
882
+ }
883
+ },
884
+ {
885
+ "rust": {
886
+ "result": 0
887
+ },
888
+ "source": {
889
+ "result": 0
890
+ }
891
+ },
892
+ {
893
+ "rust": {
894
+ "result": 0
895
+ },
896
+ "source": {
897
+ "result": 0
898
+ }
899
+ },
900
+ {
901
+ "rust": {
902
+ "result": -101
903
+ },
904
+ "source": {
905
+ "result": -101
906
+ }
907
+ },
908
+ {
909
+ "rust": {
910
+ "result": -101
911
+ },
912
+ "source": {
913
+ "result": -101
914
+ }
915
+ },
916
+ {
917
+ "rust": {
918
+ "result": -101
919
+ },
920
+ "source": {
921
+ "result": -101
922
+ }
923
+ },
924
+ {
925
+ "rust": {
926
+ "result": -101
927
+ },
928
+ "source": {
929
+ "result": -101
930
+ }
931
+ },
932
+ {
933
+ "rust": {
934
+ "result": -156
935
+ },
936
+ "source": {
937
+ "result": -156
938
+ }
939
+ },
940
+ {
941
+ "rust": {
942
+ "result": -156
943
+ },
944
+ "source": {
945
+ "result": -156
946
+ }
947
+ },
948
+ {
949
+ "rust": {
950
+ "result": -156
951
+ },
952
+ "source": {
953
+ "result": -156
954
+ }
955
+ },
956
+ {
957
+ "rust": {
958
+ "result": -156
959
+ },
960
+ "source": {
961
+ "result": -156
962
+ }
963
+ },
964
+ {
965
+ "rust": {
966
+ "result": -31
967
+ },
968
+ "source": {
969
+ "result": -31
970
+ }
971
+ },
972
+ {
973
+ "rust": {
974
+ "result": -31
975
+ },
976
+ "source": {
977
+ "result": -31
978
+ }
979
+ },
980
+ {
981
+ "rust": {
982
+ "result": -31
983
+ },
984
+ "source": {
985
+ "result": -31
986
+ }
987
+ },
988
+ {
989
+ "rust": {
990
+ "result": -31
991
+ },
992
+ "source": {
993
+ "result": -31
994
+ }
995
+ },
996
+ {
997
+ "rust": {
998
+ "result": 98
999
+ },
1000
+ "source": {
1001
+ "result": 98
1002
+ }
1003
+ },
1004
+ {
1005
+ "rust": {
1006
+ "result": 98
1007
+ },
1008
+ "source": {
1009
+ "result": 98
1010
+ }
1011
+ },
1012
+ {
1013
+ "rust": {
1014
+ "result": 98
1015
+ },
1016
+ "source": {
1017
+ "result": 98
1018
+ }
1019
+ },
1020
+ {
1021
+ "rust": {
1022
+ "result": 98
1023
+ },
1024
+ "source": {
1025
+ "result": 98
1026
+ }
1027
+ },
1028
+ {
1029
+ "rust": {
1030
+ "result": 97
1031
+ },
1032
+ "source": {
1033
+ "result": 97
1034
+ }
1035
+ },
1036
+ {
1037
+ "rust": {
1038
+ "result": 97
1039
+ },
1040
+ "source": {
1041
+ "result": 97
1042
+ }
1043
+ },
1044
+ {
1045
+ "rust": {
1046
+ "result": 97
1047
+ },
1048
+ "source": {
1049
+ "result": 97
1050
+ }
1051
+ },
1052
+ {
1053
+ "rust": {
1054
+ "result": 97
1055
+ },
1056
+ "source": {
1057
+ "result": 97
1058
+ }
1059
+ },
1060
+ {
1061
+ "rust": {
1062
+ "result": 98
1063
+ },
1064
+ "source": {
1065
+ "result": 98
1066
+ }
1067
+ },
1068
+ {
1069
+ "rust": {
1070
+ "result": 98
1071
+ },
1072
+ "source": {
1073
+ "result": 98
1074
+ }
1075
+ },
1076
+ {
1077
+ "rust": {
1078
+ "result": 98
1079
+ },
1080
+ "source": {
1081
+ "result": 98
1082
+ }
1083
+ },
1084
+ {
1085
+ "rust": {
1086
+ "result": 98
1087
+ },
1088
+ "source": {
1089
+ "result": 98
1090
+ }
1091
+ },
1092
+ {
1093
+ "rust": {
1094
+ "result": 32
1095
+ },
1096
+ "source": {
1097
+ "result": 32
1098
+ }
1099
+ },
1100
+ {
1101
+ "rust": {
1102
+ "result": 32
1103
+ },
1104
+ "source": {
1105
+ "result": 32
1106
+ }
1107
+ },
1108
+ {
1109
+ "rust": {
1110
+ "result": 32
1111
+ },
1112
+ "source": {
1113
+ "result": 32
1114
+ }
1115
+ },
1116
+ {
1117
+ "rust": {
1118
+ "result": 32
1119
+ },
1120
+ "source": {
1121
+ "result": 32
1122
+ }
1123
+ },
1124
+ {
1125
+ "rust": {
1126
+ "result": 101
1127
+ },
1128
+ "source": {
1129
+ "result": 101
1130
+ }
1131
+ },
1132
+ {
1133
+ "rust": {
1134
+ "result": 101
1135
+ },
1136
+ "source": {
1137
+ "result": 101
1138
+ }
1139
+ },
1140
+ {
1141
+ "rust": {
1142
+ "result": 101
1143
+ },
1144
+ "source": {
1145
+ "result": 101
1146
+ }
1147
+ },
1148
+ {
1149
+ "rust": {
1150
+ "result": 101
1151
+ },
1152
+ "source": {
1153
+ "result": 101
1154
+ }
1155
+ },
1156
+ {
1157
+ "rust": {
1158
+ "result": 0
1159
+ },
1160
+ "source": {
1161
+ "result": 0
1162
+ }
1163
+ },
1164
+ {
1165
+ "rust": {
1166
+ "result": 0
1167
+ },
1168
+ "source": {
1169
+ "result": 0
1170
+ }
1171
+ },
1172
+ {
1173
+ "rust": {
1174
+ "result": 0
1175
+ },
1176
+ "source": {
1177
+ "result": 0
1178
+ }
1179
+ },
1180
+ {
1181
+ "rust": {
1182
+ "result": 0
1183
+ },
1184
+ "source": {
1185
+ "result": 0
1186
+ }
1187
+ },
1188
+ {
1189
+ "rust": {
1190
+ "result": -156
1191
+ },
1192
+ "source": {
1193
+ "result": -156
1194
+ }
1195
+ },
1196
+ {
1197
+ "rust": {
1198
+ "result": -156
1199
+ },
1200
+ "source": {
1201
+ "result": -156
1202
+ }
1203
+ },
1204
+ {
1205
+ "rust": {
1206
+ "result": -156
1207
+ },
1208
+ "source": {
1209
+ "result": -156
1210
+ }
1211
+ },
1212
+ {
1213
+ "rust": {
1214
+ "result": -156
1215
+ },
1216
+ "source": {
1217
+ "result": -156
1218
+ }
1219
+ },
1220
+ {
1221
+ "rust": {
1222
+ "result": -31
1223
+ },
1224
+ "source": {
1225
+ "result": -31
1226
+ }
1227
+ },
1228
+ {
1229
+ "rust": {
1230
+ "result": -31
1231
+ },
1232
+ "source": {
1233
+ "result": -31
1234
+ }
1235
+ },
1236
+ {
1237
+ "rust": {
1238
+ "result": -31
1239
+ },
1240
+ "source": {
1241
+ "result": -31
1242
+ }
1243
+ },
1244
+ {
1245
+ "rust": {
1246
+ "result": -31
1247
+ },
1248
+ "source": {
1249
+ "result": -31
1250
+ }
1251
+ },
1252
+ {
1253
+ "rust": {
1254
+ "result": 98
1255
+ },
1256
+ "source": {
1257
+ "result": 98
1258
+ }
1259
+ },
1260
+ {
1261
+ "rust": {
1262
+ "result": 98
1263
+ },
1264
+ "source": {
1265
+ "result": 98
1266
+ }
1267
+ },
1268
+ {
1269
+ "rust": {
1270
+ "result": 98
1271
+ },
1272
+ "source": {
1273
+ "result": 98
1274
+ }
1275
+ },
1276
+ {
1277
+ "rust": {
1278
+ "result": 98
1279
+ },
1280
+ "source": {
1281
+ "result": 98
1282
+ }
1283
+ },
1284
+ {
1285
+ "rust": {
1286
+ "result": 97
1287
+ },
1288
+ "source": {
1289
+ "result": 97
1290
+ }
1291
+ },
1292
+ {
1293
+ "rust": {
1294
+ "result": 97
1295
+ },
1296
+ "source": {
1297
+ "result": 97
1298
+ }
1299
+ },
1300
+ {
1301
+ "rust": {
1302
+ "result": 97
1303
+ },
1304
+ "source": {
1305
+ "result": 97
1306
+ }
1307
+ },
1308
+ {
1309
+ "rust": {
1310
+ "result": 97
1311
+ },
1312
+ "source": {
1313
+ "result": 97
1314
+ }
1315
+ },
1316
+ {
1317
+ "rust": {
1318
+ "result": 98
1319
+ },
1320
+ "source": {
1321
+ "result": 98
1322
+ }
1323
+ },
1324
+ {
1325
+ "rust": {
1326
+ "result": 98
1327
+ },
1328
+ "source": {
1329
+ "result": 98
1330
+ }
1331
+ },
1332
+ {
1333
+ "rust": {
1334
+ "result": 98
1335
+ },
1336
+ "source": {
1337
+ "result": 98
1338
+ }
1339
+ },
1340
+ {
1341
+ "rust": {
1342
+ "result": 98
1343
+ },
1344
+ "source": {
1345
+ "result": 98
1346
+ }
1347
+ },
1348
+ {
1349
+ "rust": {
1350
+ "result": 32
1351
+ },
1352
+ "source": {
1353
+ "result": 32
1354
+ }
1355
+ },
1356
+ {
1357
+ "rust": {
1358
+ "result": 32
1359
+ },
1360
+ "source": {
1361
+ "result": 32
1362
+ }
1363
+ },
1364
+ {
1365
+ "rust": {
1366
+ "result": 32
1367
+ },
1368
+ "source": {
1369
+ "result": 32
1370
+ }
1371
+ },
1372
+ {
1373
+ "rust": {
1374
+ "result": 32
1375
+ },
1376
+ "source": {
1377
+ "result": 32
1378
+ }
1379
+ },
1380
+ {
1381
+ "rust": {
1382
+ "result": 156
1383
+ },
1384
+ "source": {
1385
+ "result": 156
1386
+ }
1387
+ },
1388
+ {
1389
+ "rust": {
1390
+ "result": 156
1391
+ },
1392
+ "source": {
1393
+ "result": 156
1394
+ }
1395
+ },
1396
+ {
1397
+ "rust": {
1398
+ "result": 156
1399
+ },
1400
+ "source": {
1401
+ "result": 156
1402
+ }
1403
+ },
1404
+ {
1405
+ "rust": {
1406
+ "result": 156
1407
+ },
1408
+ "source": {
1409
+ "result": 156
1410
+ }
1411
+ },
1412
+ {
1413
+ "rust": {
1414
+ "result": 156
1415
+ },
1416
+ "source": {
1417
+ "result": 156
1418
+ }
1419
+ },
1420
+ {
1421
+ "rust": {
1422
+ "result": 156
1423
+ },
1424
+ "source": {
1425
+ "result": 156
1426
+ }
1427
+ },
1428
+ {
1429
+ "rust": {
1430
+ "result": 156
1431
+ },
1432
+ "source": {
1433
+ "result": 156
1434
+ }
1435
+ },
1436
+ {
1437
+ "rust": {
1438
+ "result": 156
1439
+ },
1440
+ "source": {
1441
+ "result": 156
1442
+ }
1443
+ },
1444
+ {
1445
+ "rust": {
1446
+ "result": 0
1447
+ },
1448
+ "source": {
1449
+ "result": 0
1450
+ }
1451
+ },
1452
+ {
1453
+ "rust": {
1454
+ "result": 0
1455
+ },
1456
+ "source": {
1457
+ "result": 0
1458
+ }
1459
+ },
1460
+ {
1461
+ "rust": {
1462
+ "result": 0
1463
+ },
1464
+ "source": {
1465
+ "result": 0
1466
+ }
1467
+ },
1468
+ {
1469
+ "rust": {
1470
+ "result": 0
1471
+ },
1472
+ "source": {
1473
+ "result": 0
1474
+ }
1475
+ },
1476
+ {
1477
+ "rust": {
1478
+ "result": -31
1479
+ },
1480
+ "source": {
1481
+ "result": -31
1482
+ }
1483
+ },
1484
+ {
1485
+ "rust": {
1486
+ "result": -31
1487
+ },
1488
+ "source": {
1489
+ "result": -31
1490
+ }
1491
+ },
1492
+ {
1493
+ "rust": {
1494
+ "result": -31
1495
+ },
1496
+ "source": {
1497
+ "result": -31
1498
+ }
1499
+ },
1500
+ {
1501
+ "rust": {
1502
+ "result": -31
1503
+ },
1504
+ "source": {
1505
+ "result": -31
1506
+ }
1507
+ },
1508
+ {
1509
+ "rust": {
1510
+ "result": 98
1511
+ },
1512
+ "source": {
1513
+ "result": 98
1514
+ }
1515
+ },
1516
+ {
1517
+ "rust": {
1518
+ "result": 98
1519
+ },
1520
+ "source": {
1521
+ "result": 98
1522
+ }
1523
+ },
1524
+ {
1525
+ "rust": {
1526
+ "result": 98
1527
+ },
1528
+ "source": {
1529
+ "result": 98
1530
+ }
1531
+ },
1532
+ {
1533
+ "rust": {
1534
+ "result": 98
1535
+ },
1536
+ "source": {
1537
+ "result": 98
1538
+ }
1539
+ },
1540
+ {
1541
+ "rust": {
1542
+ "result": 128
1543
+ },
1544
+ "source": {
1545
+ "result": 128
1546
+ }
1547
+ },
1548
+ {
1549
+ "rust": {
1550
+ "result": 128
1551
+ },
1552
+ "source": {
1553
+ "result": 128
1554
+ }
1555
+ },
1556
+ {
1557
+ "rust": {
1558
+ "result": 128
1559
+ },
1560
+ "source": {
1561
+ "result": 128
1562
+ }
1563
+ },
1564
+ {
1565
+ "rust": {
1566
+ "result": 128
1567
+ },
1568
+ "source": {
1569
+ "result": 128
1570
+ }
1571
+ },
1572
+ {
1573
+ "rust": {
1574
+ "result": 31
1575
+ },
1576
+ "source": {
1577
+ "result": 31
1578
+ }
1579
+ },
1580
+ {
1581
+ "rust": {
1582
+ "result": 31
1583
+ },
1584
+ "source": {
1585
+ "result": 31
1586
+ }
1587
+ },
1588
+ {
1589
+ "rust": {
1590
+ "result": 31
1591
+ },
1592
+ "source": {
1593
+ "result": 31
1594
+ }
1595
+ },
1596
+ {
1597
+ "rust": {
1598
+ "result": 31
1599
+ },
1600
+ "source": {
1601
+ "result": 31
1602
+ }
1603
+ },
1604
+ {
1605
+ "rust": {
1606
+ "result": 63
1607
+ },
1608
+ "source": {
1609
+ "result": 63
1610
+ }
1611
+ },
1612
+ {
1613
+ "rust": {
1614
+ "result": 63
1615
+ },
1616
+ "source": {
1617
+ "result": 63
1618
+ }
1619
+ },
1620
+ {
1621
+ "rust": {
1622
+ "result": 63
1623
+ },
1624
+ "source": {
1625
+ "result": 63
1626
+ }
1627
+ },
1628
+ {
1629
+ "rust": {
1630
+ "result": 63
1631
+ },
1632
+ "source": {
1633
+ "result": 63
1634
+ }
1635
+ },
1636
+ {
1637
+ "rust": {
1638
+ "result": 31
1639
+ },
1640
+ "source": {
1641
+ "result": 31
1642
+ }
1643
+ },
1644
+ {
1645
+ "rust": {
1646
+ "result": 31
1647
+ },
1648
+ "source": {
1649
+ "result": 31
1650
+ }
1651
+ },
1652
+ {
1653
+ "rust": {
1654
+ "result": 31
1655
+ },
1656
+ "source": {
1657
+ "result": 31
1658
+ }
1659
+ },
1660
+ {
1661
+ "rust": {
1662
+ "result": 31
1663
+ },
1664
+ "source": {
1665
+ "result": 31
1666
+ }
1667
+ },
1668
+ {
1669
+ "rust": {
1670
+ "result": 31
1671
+ },
1672
+ "source": {
1673
+ "result": 31
1674
+ }
1675
+ },
1676
+ {
1677
+ "rust": {
1678
+ "result": 31
1679
+ },
1680
+ "source": {
1681
+ "result": 31
1682
+ }
1683
+ },
1684
+ {
1685
+ "rust": {
1686
+ "result": 31
1687
+ },
1688
+ "source": {
1689
+ "result": 31
1690
+ }
1691
+ },
1692
+ {
1693
+ "rust": {
1694
+ "result": 31
1695
+ },
1696
+ "source": {
1697
+ "result": 31
1698
+ }
1699
+ },
1700
+ {
1701
+ "rust": {
1702
+ "result": 31
1703
+ },
1704
+ "source": {
1705
+ "result": 31
1706
+ }
1707
+ },
1708
+ {
1709
+ "rust": {
1710
+ "result": 31
1711
+ },
1712
+ "source": {
1713
+ "result": 31
1714
+ }
1715
+ },
1716
+ {
1717
+ "rust": {
1718
+ "result": 31
1719
+ },
1720
+ "source": {
1721
+ "result": 31
1722
+ }
1723
+ },
1724
+ {
1725
+ "rust": {
1726
+ "result": 31
1727
+ },
1728
+ "source": {
1729
+ "result": 31
1730
+ }
1731
+ },
1732
+ {
1733
+ "rust": {
1734
+ "result": 0
1735
+ },
1736
+ "source": {
1737
+ "result": 0
1738
+ }
1739
+ },
1740
+ {
1741
+ "rust": {
1742
+ "result": 0
1743
+ },
1744
+ "source": {
1745
+ "result": 0
1746
+ }
1747
+ },
1748
+ {
1749
+ "rust": {
1750
+ "result": 0
1751
+ },
1752
+ "source": {
1753
+ "result": 0
1754
+ }
1755
+ },
1756
+ {
1757
+ "rust": {
1758
+ "result": 0
1759
+ },
1760
+ "source": {
1761
+ "result": 0
1762
+ }
1763
+ },
1764
+ {
1765
+ "rust": {
1766
+ "result": 31
1767
+ },
1768
+ "source": {
1769
+ "result": 31
1770
+ }
1771
+ },
1772
+ {
1773
+ "rust": {
1774
+ "result": 31
1775
+ },
1776
+ "source": {
1777
+ "result": 31
1778
+ }
1779
+ },
1780
+ {
1781
+ "rust": {
1782
+ "result": 31
1783
+ },
1784
+ "source": {
1785
+ "result": 31
1786
+ }
1787
+ },
1788
+ {
1789
+ "rust": {
1790
+ "result": 31
1791
+ },
1792
+ "source": {
1793
+ "result": 31
1794
+ }
1795
+ },
1796
+ {
1797
+ "rust": {
1798
+ "result": 97
1799
+ },
1800
+ "source": {
1801
+ "result": 97
1802
+ }
1803
+ },
1804
+ {
1805
+ "rust": {
1806
+ "result": 97
1807
+ },
1808
+ "source": {
1809
+ "result": 97
1810
+ }
1811
+ },
1812
+ {
1813
+ "rust": {
1814
+ "result": 97
1815
+ },
1816
+ "source": {
1817
+ "result": 97
1818
+ }
1819
+ },
1820
+ {
1821
+ "rust": {
1822
+ "result": 97
1823
+ },
1824
+ "source": {
1825
+ "result": 97
1826
+ }
1827
+ },
1828
+ {
1829
+ "rust": {
1830
+ "result": 0
1831
+ },
1832
+ "source": {
1833
+ "result": 0
1834
+ }
1835
+ },
1836
+ {
1837
+ "rust": {
1838
+ "result": 0
1839
+ },
1840
+ "source": {
1841
+ "result": 0
1842
+ }
1843
+ },
1844
+ {
1845
+ "rust": {
1846
+ "result": 0
1847
+ },
1848
+ "source": {
1849
+ "result": 0
1850
+ }
1851
+ },
1852
+ {
1853
+ "rust": {
1854
+ "result": 0
1855
+ },
1856
+ "source": {
1857
+ "result": 0
1858
+ }
1859
+ },
1860
+ {
1861
+ "rust": {
1862
+ "result": 32
1863
+ },
1864
+ "source": {
1865
+ "result": 32
1866
+ }
1867
+ },
1868
+ {
1869
+ "rust": {
1870
+ "result": 32
1871
+ },
1872
+ "source": {
1873
+ "result": 32
1874
+ }
1875
+ },
1876
+ {
1877
+ "rust": {
1878
+ "result": 32
1879
+ },
1880
+ "source": {
1881
+ "result": 32
1882
+ }
1883
+ },
1884
+ {
1885
+ "rust": {
1886
+ "result": 32
1887
+ },
1888
+ "source": {
1889
+ "result": 32
1890
+ }
1891
+ },
1892
+ {
1893
+ "rust": {
1894
+ "result": -98
1895
+ },
1896
+ "source": {
1897
+ "result": -98
1898
+ }
1899
+ },
1900
+ {
1901
+ "rust": {
1902
+ "result": -98
1903
+ },
1904
+ "source": {
1905
+ "result": -98
1906
+ }
1907
+ },
1908
+ {
1909
+ "rust": {
1910
+ "result": -98
1911
+ },
1912
+ "source": {
1913
+ "result": -98
1914
+ }
1915
+ },
1916
+ {
1917
+ "rust": {
1918
+ "result": -98
1919
+ },
1920
+ "source": {
1921
+ "result": -98
1922
+ }
1923
+ },
1924
+ {
1925
+ "rust": {
1926
+ "result": -98
1927
+ },
1928
+ "source": {
1929
+ "result": -98
1930
+ }
1931
+ },
1932
+ {
1933
+ "rust": {
1934
+ "result": -98
1935
+ },
1936
+ "source": {
1937
+ "result": -98
1938
+ }
1939
+ },
1940
+ {
1941
+ "rust": {
1942
+ "result": -98
1943
+ },
1944
+ "source": {
1945
+ "result": -98
1946
+ }
1947
+ },
1948
+ {
1949
+ "rust": {
1950
+ "result": -98
1951
+ },
1952
+ "source": {
1953
+ "result": -98
1954
+ }
1955
+ },
1956
+ {
1957
+ "rust": {
1958
+ "result": -98
1959
+ },
1960
+ "source": {
1961
+ "result": -98
1962
+ }
1963
+ },
1964
+ {
1965
+ "rust": {
1966
+ "result": -98
1967
+ },
1968
+ "source": {
1969
+ "result": -98
1970
+ }
1971
+ },
1972
+ {
1973
+ "rust": {
1974
+ "result": -98
1975
+ },
1976
+ "source": {
1977
+ "result": -98
1978
+ }
1979
+ },
1980
+ {
1981
+ "rust": {
1982
+ "result": -98
1983
+ },
1984
+ "source": {
1985
+ "result": -98
1986
+ }
1987
+ },
1988
+ {
1989
+ "rust": {
1990
+ "result": -31
1991
+ },
1992
+ "source": {
1993
+ "result": -31
1994
+ }
1995
+ },
1996
+ {
1997
+ "rust": {
1998
+ "result": -31
1999
+ },
2000
+ "source": {
2001
+ "result": -31
2002
+ }
2003
+ },
2004
+ {
2005
+ "rust": {
2006
+ "result": -31
2007
+ },
2008
+ "source": {
2009
+ "result": -31
2010
+ }
2011
+ },
2012
+ {
2013
+ "rust": {
2014
+ "result": -31
2015
+ },
2016
+ "source": {
2017
+ "result": -31
2018
+ }
2019
+ },
2020
+ {
2021
+ "rust": {
2022
+ "result": 0
2023
+ },
2024
+ "source": {
2025
+ "result": 0
2026
+ }
2027
+ },
2028
+ {
2029
+ "rust": {
2030
+ "result": 0
2031
+ },
2032
+ "source": {
2033
+ "result": 0
2034
+ }
2035
+ },
2036
+ {
2037
+ "rust": {
2038
+ "result": 0
2039
+ },
2040
+ "source": {
2041
+ "result": 0
2042
+ }
2043
+ },
2044
+ {
2045
+ "rust": {
2046
+ "result": 0
2047
+ },
2048
+ "source": {
2049
+ "result": 0
2050
+ }
2051
+ }
2052
+ ],
2053
+ "source_report": "docs/research/qvm-byte-compare.json",
2054
+ "source_report_sha256": "faf97bc50018dda9a03b0602b93552b8d14dd8b30db937aec95cffc8e3421ee1"
2055
+ }
docs/research/rust-health-impulse.json CHANGED
@@ -2985,7 +2985,7 @@
2985
  "exit_code": 2
2986
  }
2987
  ],
2988
- "rust_unit_tests": 167,
2989
  "source_report": "docs/research/qvm-health-impulse.json",
2990
  "source_report_sha256": "625fd8064004ea6dbdf398d51d0af844d9c635ff04c0a0790886dddb6ab81e71"
2991
  }
 
2985
  "exit_code": 2
2986
  }
2987
  ],
2988
+ "rust_unit_tests": 169,
2989
  "source_report": "docs/research/qvm-health-impulse.json",
2990
  "source_report_sha256": "625fd8064004ea6dbdf398d51d0af844d9c635ff04c0a0790886dddb6ab81e71"
2991
  }
scripts/analyze_rust_byte_compare.py ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/bin/env python3
2
+ import hashlib,json
3
+ from pathlib import Path
4
+ from rust_native_policy_support import binary,result,invoke
5
+ from analyze_qvm import write_json
6
+ def encode(s):
7
+ a=s['input'];left=bytes.fromhex(a['left']);right=bytes.fromhex(a['right']);return [len(left),*left,len(right),*right]
8
+ def project(s):return {'result':s['result']}
9
+
10
+ def main():
11
+ b=binary();p=Path('docs/research/qvm-byte-compare.json');data=p.read_bytes();rows=[]
12
+ for s in json.loads(data)['probes']:rows.append({'source':project(s),'rust':result(b,'byte-compare',encode(s))})
13
+ write_json(Path('docs/research/rust-byte-compare.json'),{'source_report':str(p),'source_report_sha256':hashlib.sha256(data).hexdigest(),'probes':rows,'limits':'Rust matches256 original36306 fixtures across alignment/case/NUL/high-byte domains, preserving the exact byte difference rather than only its sign. Typed logical strings reject oversized inputs. Raw word lookahead, invalid pointers and aliases remain outside the portable contract.'})
14
+ if __name__=='__main__':main()
scripts/test_rust_byte_compare.py ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ import hashlib,json,unittest
2
+ from pathlib import Path
3
+ class PortTests(unittest.TestCase):
4
+ def test_all_original_cases(self):
5
+ r=json.loads(Path('docs/research/rust-byte-compare.json').read_text());src=json.loads(Path(r['source_report']).read_text());self.assertEqual(len(r['probes']),len(src['probes']));self.assertGreater(len(r['probes']),20)
6
+ for p in r['probes']:self.assertEqual(p['rust'],p['source'])
7
+ def test_source_identity(self):
8
+ r=json.loads(Path('docs/research/rust-byte-compare.json').read_text());self.assertEqual(hashlib.sha256(Path(r['source_report']).read_bytes()).hexdigest(),r['source_report_sha256'])
9
+ if __name__=='__main__':unittest.main()
xtask/checks.tsv CHANGED
@@ -2910,3 +2910,16 @@ edge docs/research/qvm-byte-compare.json scripts/test_qvm_byte_compare.py
2910
  group qvm-byte-compare scripts/analyze_qvm_byte_compare.py
2911
  edge scripts/analyze_qvm_byte_compare.py scripts/analyze_qvm_resumer_audit.py
2912
  edge scripts/qvm_connect_policy_support.py scripts/analyze_qvm_resumer_audit.py
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2910
  group qvm-byte-compare scripts/analyze_qvm_byte_compare.py
2911
  edge scripts/analyze_qvm_byte_compare.py scripts/analyze_qvm_resumer_audit.py
2912
  edge scripts/qvm_connect_policy_support.py scripts/analyze_qvm_resumer_audit.py
2913
+ edge Cargo.toml scripts/analyze_rust_byte_compare.py
2914
+ edge Cargo.lock scripts/analyze_rust_byte_compare.py
2915
+ edge crates/urt-gameplay/Cargo.toml scripts/analyze_rust_byte_compare.py
2916
+ edge crates/urt-gameplay/src/lib.rs scripts/analyze_rust_byte_compare.py
2917
+ edge crates/urt-gameplay/src/native_policy.rs scripts/analyze_rust_byte_compare.py
2918
+ edge crates/urt-gameplay/src/bin/urt-native-policy.rs scripts/analyze_rust_byte_compare.py
2919
+ edge docs/research/qvm-byte-compare.json scripts/analyze_rust_byte_compare.py
2920
+ group rust-byte-compare scripts/analyze_rust_health_impulse.py
2921
+ group gameplay scripts/analyze_rust_byte_compare.py
2922
+ report scripts/analyze_rust_byte_compare.py docs/research/rust-byte-compare.json
2923
+ edge docs/research/rust-byte-compare.json scripts/test_rust_byte_compare.py
2924
+ group rust-byte-compare scripts/analyze_rust_byte_compare.py
2925
+ edge scripts/analyze_rust_byte_compare.py scripts/analyze_qvm_resumer_audit.py