nmarshall commited on
Commit
959f3e9
·
1 Parent(s): a10771c

gameplay: port timed bomb defuse completion

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