nmarshall commited on
Commit
47bc718
·
1 Parent(s): 257262a

gameplay: port movement setup and packed words

Browse files
crates/urt-gameplay/src/bin/urt-client-processing.rs CHANGED
@@ -119,6 +119,38 @@ fn main() {
119
  w[9]
120
  );
121
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
122
  _ => panic!("unknown policy"),
123
  }
124
  }
 
119
  w[9]
120
  );
121
  }
122
+ "movement" => {
123
+ assert_eq!(w.len(), 11);
124
+ let mut state = MovementState {
125
+ pm_type: 99,
126
+ gravity: 111,
127
+ speed: 222,
128
+ controller: w[3] != 0,
129
+ packed: [333, 444],
130
+ event_sequence: w[10],
131
+ };
132
+ let seq = setup_client_movement(
133
+ &mut state,
134
+ MovementInput {
135
+ pause: w[0],
136
+ noclip: w[1],
137
+ health: w[2],
138
+ gravity: w[4],
139
+ factor: w[5],
140
+ packs: w[6..10].try_into().unwrap(),
141
+ },
142
+ )
143
+ .unwrap();
144
+ println!(
145
+ r#"{{"pm_type":{},"gravity_word":{},"speed":{},"controller":{},"packed":{},"event_sequence":{}}}"#,
146
+ state.pm_type,
147
+ state.gravity,
148
+ state.speed,
149
+ u8::from(state.controller),
150
+ list(&state.packed),
151
+ seq
152
+ );
153
+ }
154
  _ => panic!("unknown policy"),
155
  }
156
  }
crates/urt-gameplay/src/client_processing.rs CHANGED
@@ -400,3 +400,118 @@ mod inactivity_tests {
400
  assert_eq!(s.deadline, 19);
401
  }
402
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
400
  assert_eq!(s.deadline, 19);
401
  }
402
  }
403
+
404
+ #[derive(Clone, Copy, Debug, PartialEq, Eq)]
405
+ pub struct MovementState {
406
+ pub pm_type: u32,
407
+ pub gravity: u32,
408
+ pub speed: u32,
409
+ pub controller: bool,
410
+ pub packed: [u32; 2],
411
+ pub event_sequence: u32,
412
+ }
413
+ #[derive(Clone, Copy, Debug, PartialEq, Eq)]
414
+ pub struct MovementInput {
415
+ pub pause: u32,
416
+ pub noclip: u32,
417
+ pub health: u32,
418
+ pub gravity: u32,
419
+ pub factor: u32,
420
+ pub packs: [u32; 4],
421
+ }
422
+ fn trunc_word(value: f32) -> Result<u32, Error> {
423
+ if !value.is_finite() {
424
+ return Err(Error::NonFinite);
425
+ }
426
+ if !(-2147483648.0..2147483648.0).contains(&value) {
427
+ return Err(Error::InvalidInput);
428
+ }
429
+ Ok((value as i32) as u32)
430
+ }
431
+ /// Original154405 finite movement setup through154544. A controller is consumed
432
+ /// only on unpaused paths; raw packed words are not narrowed to bytes.
433
+ pub fn setup_client_movement(
434
+ state: &mut MovementState,
435
+ input: MovementInput,
436
+ ) -> Result<u32, Error> {
437
+ let mut next = *state;
438
+ next.pm_type = if input.noclip != 0 {
439
+ 1
440
+ } else if input.health as i32 <= 0 {
441
+ 3
442
+ } else {
443
+ 0
444
+ };
445
+ if input.pause & 1 != 0 {
446
+ next.gravity = 0;
447
+ next.speed = 0;
448
+ } else {
449
+ let base = f32::from_bits(input.gravity);
450
+ let value = if next.controller {
451
+ base * f32::from_bits(input.factor)
452
+ } else {
453
+ base
454
+ };
455
+ next.gravity = trunc_word(value)?;
456
+ next.speed = 220;
457
+ next.controller = false;
458
+ }
459
+ next.packed = [
460
+ input.packs[0] | input.packs[1].wrapping_shl(8),
461
+ input.packs[2] | input.packs[3].wrapping_shl(8),
462
+ ];
463
+ let old = next.event_sequence;
464
+ *state = next;
465
+ Ok(old)
466
+ }
467
+ #[cfg(test)]
468
+ mod movement_tests {
469
+ use super::*;
470
+ fn state() -> MovementState {
471
+ MovementState {
472
+ pm_type: 99,
473
+ gravity: 111,
474
+ speed: 222,
475
+ controller: true,
476
+ packed: [333, 444],
477
+ event_sequence: 0xdeadbeef,
478
+ }
479
+ }
480
+ fn input() -> MovementInput {
481
+ MovementInput {
482
+ pause: 0,
483
+ noclip: 0,
484
+ health: 1,
485
+ gravity: 800.75f32.to_bits(),
486
+ factor: (-0.5f32).to_bits(),
487
+ packs: [0x1ff, 0x102, 0x80000000, 0xff0001],
488
+ }
489
+ }
490
+ #[test]
491
+ fn truncation_controller_consumption_and_unmasked_packing() {
492
+ let mut s = state();
493
+ assert_eq!(setup_client_movement(&mut s, input()).unwrap(), 0xdeadbeef);
494
+ assert_eq!(s.gravity, (-400i32) as u32);
495
+ assert_eq!(s.speed, 220);
496
+ assert!(!s.controller);
497
+ assert_eq!(s.packed, [0x103ff, 0xff000100]);
498
+ }
499
+ #[test]
500
+ fn paused_path_ignores_float_inputs_and_unsupported_unpaused_input_is_atomic() {
501
+ let mut s = state();
502
+ let i = MovementInput {
503
+ pause: 1,
504
+ noclip: 1,
505
+ health: 0,
506
+ gravity: f32::NAN.to_bits(),
507
+ factor: f32::NAN.to_bits(),
508
+ ..input()
509
+ };
510
+ setup_client_movement(&mut s, i).unwrap();
511
+ assert_eq!([s.pm_type, s.gravity, s.speed], [1, 0, 0]);
512
+ assert!(s.controller);
513
+ let old = s;
514
+ assert!(setup_client_movement(&mut s, MovementInput { pause: 0, ..i }).is_err());
515
+ assert_eq!(s, old);
516
+ }
517
+ }
docs/FINDINGS.md CHANGED
@@ -1893,3 +1893,5 @@ RE-978: A120-case source contract executes actual150382 through all bounded poli
1893
  RE-979: Rust matches120 original inactivity cases, including signed wrap, pause anchoring, negative movement bytes, warning suppression, strict deadlines and mode-specific effect order. Dead-client extension precedes exemption, and activity clears warning state without shortening a later deadline. Unit tests cover warning equality/repetition, team-before-message ordering, pause bits and wrapped extension. Native callbacks remain captured plans. [Evidence](research/RUST_CLIENT_INACTIVITY.md).
1894
 
1895
  RE-980: Ninety-six source setup cases recover movement-type precedence, pause-mask1 handling, finite gravity multiplication/truncation and unpaused speed220. A present controller is consumed only on unpaused paths. Packed words use raw shift/OR without byte masking, and the old event sequence is saved. Execution stops at154544 before scratch initialization and later callbacks; actual movement remains open. [Evidence](research/QVM_CLIENT_MOVEMENT_SETUP.md).
 
 
 
1893
  RE-979: Rust matches120 original inactivity cases, including signed wrap, pause anchoring, negative movement bytes, warning suppression, strict deadlines and mode-specific effect order. Dead-client extension precedes exemption, and activity clears warning state without shortening a later deadline. Unit tests cover warning equality/repetition, team-before-message ordering, pause bits and wrapped extension. Native callbacks remain captured plans. [Evidence](research/RUST_CLIENT_INACTIVITY.md).
1894
 
1895
  RE-980: Ninety-six source setup cases recover movement-type precedence, pause-mask1 handling, finite gravity multiplication/truncation and unpaused speed220. A present controller is consumed only on unpaused paths. Packed words use raw shift/OR without byte masking, and the old event sequence is saved. Execution stops at154544 before scratch initialization and later callbacks; actual movement remains open. [Evidence](research/QVM_CLIENT_MOVEMENT_SETUP.md).
1896
+
1897
+ RE-981: Rust matches96 original movement-setup cases, preserving type precedence, pause-mask1 behavior, f32 multiplication/truncation, controller consumption and unmasked packed words. Unsupported unpaused float/conversion domains reject atomically; the paused path ignores unused float inputs. Unit tests cover negative truncation, high-bit packing, controller retention and rollback. Actual movement callbacks remain open. [Evidence](research/RUST_CLIENT_MOVEMENT_SETUP.md).
docs/PROVISIONAL_TODO.md CHANGED
@@ -1947,3 +1947,5 @@ RE-964–973 completed timer deadline/phase/recovery contracts, whole-body compo
1947
  - [x] RE-979 Rust inactivity deadlines and typed timeout effects ([evidence](research/RUST_CLIENT_INACTIVITY.md)).
1948
 
1949
  - [x] RE-980 Original movement parameter selection and packed words ([evidence](research/QVM_CLIENT_MOVEMENT_SETUP.md)).
 
 
 
1947
  - [x] RE-979 Rust inactivity deadlines and typed timeout effects ([evidence](research/RUST_CLIENT_INACTIVITY.md)).
1948
 
1949
  - [x] RE-980 Original movement parameter selection and packed words ([evidence](research/QVM_CLIENT_MOVEMENT_SETUP.md)).
1950
+
1951
+ - [x] RE-981 Rust finite movement parameters and one-shot controller handling ([evidence](research/RUST_CLIENT_MOVEMENT_SETUP.md)).
docs/RESEARCH_LEDGER.md CHANGED
@@ -2593,3 +2593,7 @@ Rust matches120 original inactivity cases, including signed wrap, pause anchorin
2593
  ## 2026-10-28 — RE-980 Original movement parameter selection and packed words
2594
 
2595
  Ninety-six source setup cases recover movement-type precedence, pause-mask1 handling, finite gravity multiplication/truncation and unpaused speed220. A present controller is consumed only on unpaused paths. Packed words use raw shift/OR without byte masking, and the old event sequence is saved. Execution stops at154544 before scratch initialization and later callbacks; actual movement remains open. Focused `cargo xtask test-group qvm-client-movement-setup` passes with deterministic report regeneration, relevant regressions and storage/documentation/whitespace checks. Full suite deferred to the tenth-commit boundary. Original assets unchanged; native IO effects remain captured.
 
 
 
 
 
2593
  ## 2026-10-28 — RE-980 Original movement parameter selection and packed words
2594
 
2595
  Ninety-six source setup cases recover movement-type precedence, pause-mask1 handling, finite gravity multiplication/truncation and unpaused speed220. A present controller is consumed only on unpaused paths. Packed words use raw shift/OR without byte masking, and the old event sequence is saved. Execution stops at154544 before scratch initialization and later callbacks; actual movement remains open. Focused `cargo xtask test-group qvm-client-movement-setup` passes with deterministic report regeneration, relevant regressions and storage/documentation/whitespace checks. Full suite deferred to the tenth-commit boundary. Original assets unchanged; native IO effects remain captured.
2596
+
2597
+ ## 2026-10-28 — RE-981 Rust finite movement parameters and one-shot controller handling
2598
+
2599
+ Rust matches96 original movement-setup cases, preserving type precedence, pause-mask1 behavior, f32 multiplication/truncation, controller consumption and unmasked packed words. Unsupported unpaused float/conversion domains reject atomically; the paused path ignores unused float inputs. Unit tests cover negative truncation, high-bit packing, controller retention and rollback. Actual movement callbacks remain open. Focused `cargo xtask test-group rust-client-movement-setup` passes with deterministic report regeneration, relevant regressions and storage/documentation/whitespace checks. Full suite deferred to the tenth-commit boundary. Original assets unchanged; native IO effects remain captured.
docs/REVERSE_ENGINEERING_TODO.md CHANGED
@@ -1984,3 +1984,5 @@ RE-964–973 recover the complete bounded timer body and its caller timing prefi
1984
  - [x] RE-979 Rust inactivity deadlines and typed timeout effects ([evidence](research/RUST_CLIENT_INACTIVITY.md)).
1985
 
1986
  - [x] RE-980 Original movement parameter selection and packed words ([evidence](research/QVM_CLIENT_MOVEMENT_SETUP.md)).
 
 
 
1984
  - [x] RE-979 Rust inactivity deadlines and typed timeout effects ([evidence](research/RUST_CLIENT_INACTIVITY.md)).
1985
 
1986
  - [x] RE-980 Original movement parameter selection and packed words ([evidence](research/QVM_CLIENT_MOVEMENT_SETUP.md)).
1987
+
1988
+ - [x] RE-981 Rust finite movement parameters and one-shot controller handling ([evidence](research/RUST_CLIENT_MOVEMENT_SETUP.md)).
docs/research/README.md CHANGED
@@ -1519,3 +1519,5 @@ The extension collector adds five focused tests for native tail calls, command-r
1519
  - [RE-979: Rust inactivity deadlines and typed timeout effects](RUST_CLIENT_INACTIVITY.md).
1520
 
1521
  - [RE-980: Original movement parameter selection and packed words](QVM_CLIENT_MOVEMENT_SETUP.md).
 
 
 
1519
  - [RE-979: Rust inactivity deadlines and typed timeout effects](RUST_CLIENT_INACTIVITY.md).
1520
 
1521
  - [RE-980: Original movement parameter selection and packed words](QVM_CLIENT_MOVEMENT_SETUP.md).
1522
+
1523
+ - [RE-981: Rust finite movement parameters and one-shot controller handling](RUST_CLIENT_MOVEMENT_SETUP.md).
docs/research/RUST_CLIENT_MOVEMENT_SETUP.md ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ # Rust finite movement parameters and one-shot controller handling
2
+
3
+ RE-981. Focused validation: `cargo xtask test-group rust-client-movement-setup`. [Machine report](rust-client-movement-setup.json).
4
+
5
+ Rust matches96 original movement-setup cases, preserving type precedence, pause-mask1 behavior, f32 multiplication/truncation, controller consumption and unmasked packed words. Unsupported unpaused float/conversion domains reject atomically; the paused path ignores unused float inputs. Unit tests cover negative truncation, high-bit packing, controller retention and rollback. Actual movement callbacks remain open.
docs/research/rust-client-movement-setup.json ADDED
@@ -0,0 +1,2311 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "limits": "Finite source/Rust contract parity; native time/file/network replies remain supplied or captured.",
3
+ "probes": [
4
+ {
5
+ "rust": {
6
+ "controller": 0,
7
+ "event_sequence": 3735928559,
8
+ "gravity_word": 800,
9
+ "packed": [
10
+ 66559,
11
+ 4278190336
12
+ ],
13
+ "pm_type": 3,
14
+ "speed": 220
15
+ },
16
+ "source": {
17
+ "controller": 0,
18
+ "event_sequence": 3735928559,
19
+ "gravity_word": 800,
20
+ "packed": [
21
+ 66559,
22
+ 4278190336
23
+ ],
24
+ "pm_type": 3,
25
+ "speed": 220
26
+ }
27
+ },
28
+ {
29
+ "rust": {
30
+ "controller": 0,
31
+ "event_sequence": 3735928559,
32
+ "gravity_word": 800,
33
+ "packed": [
34
+ 66559,
35
+ 4278190336
36
+ ],
37
+ "pm_type": 3,
38
+ "speed": 220
39
+ },
40
+ "source": {
41
+ "controller": 0,
42
+ "event_sequence": 3735928559,
43
+ "gravity_word": 800,
44
+ "packed": [
45
+ 66559,
46
+ 4278190336
47
+ ],
48
+ "pm_type": 3,
49
+ "speed": 220
50
+ }
51
+ },
52
+ {
53
+ "rust": {
54
+ "controller": 0,
55
+ "event_sequence": 3735928559,
56
+ "gravity_word": 4294966496,
57
+ "packed": [
58
+ 66559,
59
+ 4278190336
60
+ ],
61
+ "pm_type": 3,
62
+ "speed": 220
63
+ },
64
+ "source": {
65
+ "controller": 0,
66
+ "event_sequence": 3735928559,
67
+ "gravity_word": 4294966496,
68
+ "packed": [
69
+ 66559,
70
+ 4278190336
71
+ ],
72
+ "pm_type": 3,
73
+ "speed": 220
74
+ }
75
+ },
76
+ {
77
+ "rust": {
78
+ "controller": 0,
79
+ "event_sequence": 3735928559,
80
+ "gravity_word": 4294966496,
81
+ "packed": [
82
+ 66559,
83
+ 4278190336
84
+ ],
85
+ "pm_type": 3,
86
+ "speed": 220
87
+ },
88
+ "source": {
89
+ "controller": 0,
90
+ "event_sequence": 3735928559,
91
+ "gravity_word": 4294966496,
92
+ "packed": [
93
+ 66559,
94
+ 4278190336
95
+ ],
96
+ "pm_type": 3,
97
+ "speed": 220
98
+ }
99
+ },
100
+ {
101
+ "rust": {
102
+ "controller": 0,
103
+ "event_sequence": 3735928559,
104
+ "gravity_word": 400,
105
+ "packed": [
106
+ 66559,
107
+ 4278190336
108
+ ],
109
+ "pm_type": 3,
110
+ "speed": 220
111
+ },
112
+ "source": {
113
+ "controller": 0,
114
+ "event_sequence": 3735928559,
115
+ "gravity_word": 400,
116
+ "packed": [
117
+ 66559,
118
+ 4278190336
119
+ ],
120
+ "pm_type": 3,
121
+ "speed": 220
122
+ }
123
+ },
124
+ {
125
+ "rust": {
126
+ "controller": 0,
127
+ "event_sequence": 3735928559,
128
+ "gravity_word": 4294966896,
129
+ "packed": [
130
+ 66559,
131
+ 4278190336
132
+ ],
133
+ "pm_type": 3,
134
+ "speed": 220
135
+ },
136
+ "source": {
137
+ "controller": 0,
138
+ "event_sequence": 3735928559,
139
+ "gravity_word": 4294966896,
140
+ "packed": [
141
+ 66559,
142
+ 4278190336
143
+ ],
144
+ "pm_type": 3,
145
+ "speed": 220
146
+ }
147
+ },
148
+ {
149
+ "rust": {
150
+ "controller": 0,
151
+ "event_sequence": 3735928559,
152
+ "gravity_word": 4294966896,
153
+ "packed": [
154
+ 66559,
155
+ 4278190336
156
+ ],
157
+ "pm_type": 3,
158
+ "speed": 220
159
+ },
160
+ "source": {
161
+ "controller": 0,
162
+ "event_sequence": 3735928559,
163
+ "gravity_word": 4294966896,
164
+ "packed": [
165
+ 66559,
166
+ 4278190336
167
+ ],
168
+ "pm_type": 3,
169
+ "speed": 220
170
+ }
171
+ },
172
+ {
173
+ "rust": {
174
+ "controller": 0,
175
+ "event_sequence": 3735928559,
176
+ "gravity_word": 400,
177
+ "packed": [
178
+ 66559,
179
+ 4278190336
180
+ ],
181
+ "pm_type": 3,
182
+ "speed": 220
183
+ },
184
+ "source": {
185
+ "controller": 0,
186
+ "event_sequence": 3735928559,
187
+ "gravity_word": 400,
188
+ "packed": [
189
+ 66559,
190
+ 4278190336
191
+ ],
192
+ "pm_type": 3,
193
+ "speed": 220
194
+ }
195
+ },
196
+ {
197
+ "rust": {
198
+ "controller": 0,
199
+ "event_sequence": 3735928559,
200
+ "gravity_word": 800,
201
+ "packed": [
202
+ 66559,
203
+ 4278190336
204
+ ],
205
+ "pm_type": 0,
206
+ "speed": 220
207
+ },
208
+ "source": {
209
+ "controller": 0,
210
+ "event_sequence": 3735928559,
211
+ "gravity_word": 800,
212
+ "packed": [
213
+ 66559,
214
+ 4278190336
215
+ ],
216
+ "pm_type": 0,
217
+ "speed": 220
218
+ }
219
+ },
220
+ {
221
+ "rust": {
222
+ "controller": 0,
223
+ "event_sequence": 3735928559,
224
+ "gravity_word": 800,
225
+ "packed": [
226
+ 66559,
227
+ 4278190336
228
+ ],
229
+ "pm_type": 0,
230
+ "speed": 220
231
+ },
232
+ "source": {
233
+ "controller": 0,
234
+ "event_sequence": 3735928559,
235
+ "gravity_word": 800,
236
+ "packed": [
237
+ 66559,
238
+ 4278190336
239
+ ],
240
+ "pm_type": 0,
241
+ "speed": 220
242
+ }
243
+ },
244
+ {
245
+ "rust": {
246
+ "controller": 0,
247
+ "event_sequence": 3735928559,
248
+ "gravity_word": 4294966496,
249
+ "packed": [
250
+ 66559,
251
+ 4278190336
252
+ ],
253
+ "pm_type": 0,
254
+ "speed": 220
255
+ },
256
+ "source": {
257
+ "controller": 0,
258
+ "event_sequence": 3735928559,
259
+ "gravity_word": 4294966496,
260
+ "packed": [
261
+ 66559,
262
+ 4278190336
263
+ ],
264
+ "pm_type": 0,
265
+ "speed": 220
266
+ }
267
+ },
268
+ {
269
+ "rust": {
270
+ "controller": 0,
271
+ "event_sequence": 3735928559,
272
+ "gravity_word": 4294966496,
273
+ "packed": [
274
+ 66559,
275
+ 4278190336
276
+ ],
277
+ "pm_type": 0,
278
+ "speed": 220
279
+ },
280
+ "source": {
281
+ "controller": 0,
282
+ "event_sequence": 3735928559,
283
+ "gravity_word": 4294966496,
284
+ "packed": [
285
+ 66559,
286
+ 4278190336
287
+ ],
288
+ "pm_type": 0,
289
+ "speed": 220
290
+ }
291
+ },
292
+ {
293
+ "rust": {
294
+ "controller": 0,
295
+ "event_sequence": 3735928559,
296
+ "gravity_word": 400,
297
+ "packed": [
298
+ 66559,
299
+ 4278190336
300
+ ],
301
+ "pm_type": 0,
302
+ "speed": 220
303
+ },
304
+ "source": {
305
+ "controller": 0,
306
+ "event_sequence": 3735928559,
307
+ "gravity_word": 400,
308
+ "packed": [
309
+ 66559,
310
+ 4278190336
311
+ ],
312
+ "pm_type": 0,
313
+ "speed": 220
314
+ }
315
+ },
316
+ {
317
+ "rust": {
318
+ "controller": 0,
319
+ "event_sequence": 3735928559,
320
+ "gravity_word": 4294966896,
321
+ "packed": [
322
+ 66559,
323
+ 4278190336
324
+ ],
325
+ "pm_type": 0,
326
+ "speed": 220
327
+ },
328
+ "source": {
329
+ "controller": 0,
330
+ "event_sequence": 3735928559,
331
+ "gravity_word": 4294966896,
332
+ "packed": [
333
+ 66559,
334
+ 4278190336
335
+ ],
336
+ "pm_type": 0,
337
+ "speed": 220
338
+ }
339
+ },
340
+ {
341
+ "rust": {
342
+ "controller": 0,
343
+ "event_sequence": 3735928559,
344
+ "gravity_word": 4294966896,
345
+ "packed": [
346
+ 66559,
347
+ 4278190336
348
+ ],
349
+ "pm_type": 0,
350
+ "speed": 220
351
+ },
352
+ "source": {
353
+ "controller": 0,
354
+ "event_sequence": 3735928559,
355
+ "gravity_word": 4294966896,
356
+ "packed": [
357
+ 66559,
358
+ 4278190336
359
+ ],
360
+ "pm_type": 0,
361
+ "speed": 220
362
+ }
363
+ },
364
+ {
365
+ "rust": {
366
+ "controller": 0,
367
+ "event_sequence": 3735928559,
368
+ "gravity_word": 400,
369
+ "packed": [
370
+ 66559,
371
+ 4278190336
372
+ ],
373
+ "pm_type": 0,
374
+ "speed": 220
375
+ },
376
+ "source": {
377
+ "controller": 0,
378
+ "event_sequence": 3735928559,
379
+ "gravity_word": 400,
380
+ "packed": [
381
+ 66559,
382
+ 4278190336
383
+ ],
384
+ "pm_type": 0,
385
+ "speed": 220
386
+ }
387
+ },
388
+ {
389
+ "rust": {
390
+ "controller": 0,
391
+ "event_sequence": 3735928559,
392
+ "gravity_word": 800,
393
+ "packed": [
394
+ 66559,
395
+ 4278190336
396
+ ],
397
+ "pm_type": 1,
398
+ "speed": 220
399
+ },
400
+ "source": {
401
+ "controller": 0,
402
+ "event_sequence": 3735928559,
403
+ "gravity_word": 800,
404
+ "packed": [
405
+ 66559,
406
+ 4278190336
407
+ ],
408
+ "pm_type": 1,
409
+ "speed": 220
410
+ }
411
+ },
412
+ {
413
+ "rust": {
414
+ "controller": 0,
415
+ "event_sequence": 3735928559,
416
+ "gravity_word": 800,
417
+ "packed": [
418
+ 66559,
419
+ 4278190336
420
+ ],
421
+ "pm_type": 1,
422
+ "speed": 220
423
+ },
424
+ "source": {
425
+ "controller": 0,
426
+ "event_sequence": 3735928559,
427
+ "gravity_word": 800,
428
+ "packed": [
429
+ 66559,
430
+ 4278190336
431
+ ],
432
+ "pm_type": 1,
433
+ "speed": 220
434
+ }
435
+ },
436
+ {
437
+ "rust": {
438
+ "controller": 0,
439
+ "event_sequence": 3735928559,
440
+ "gravity_word": 4294966496,
441
+ "packed": [
442
+ 66559,
443
+ 4278190336
444
+ ],
445
+ "pm_type": 1,
446
+ "speed": 220
447
+ },
448
+ "source": {
449
+ "controller": 0,
450
+ "event_sequence": 3735928559,
451
+ "gravity_word": 4294966496,
452
+ "packed": [
453
+ 66559,
454
+ 4278190336
455
+ ],
456
+ "pm_type": 1,
457
+ "speed": 220
458
+ }
459
+ },
460
+ {
461
+ "rust": {
462
+ "controller": 0,
463
+ "event_sequence": 3735928559,
464
+ "gravity_word": 4294966496,
465
+ "packed": [
466
+ 66559,
467
+ 4278190336
468
+ ],
469
+ "pm_type": 1,
470
+ "speed": 220
471
+ },
472
+ "source": {
473
+ "controller": 0,
474
+ "event_sequence": 3735928559,
475
+ "gravity_word": 4294966496,
476
+ "packed": [
477
+ 66559,
478
+ 4278190336
479
+ ],
480
+ "pm_type": 1,
481
+ "speed": 220
482
+ }
483
+ },
484
+ {
485
+ "rust": {
486
+ "controller": 0,
487
+ "event_sequence": 3735928559,
488
+ "gravity_word": 400,
489
+ "packed": [
490
+ 66559,
491
+ 4278190336
492
+ ],
493
+ "pm_type": 1,
494
+ "speed": 220
495
+ },
496
+ "source": {
497
+ "controller": 0,
498
+ "event_sequence": 3735928559,
499
+ "gravity_word": 400,
500
+ "packed": [
501
+ 66559,
502
+ 4278190336
503
+ ],
504
+ "pm_type": 1,
505
+ "speed": 220
506
+ }
507
+ },
508
+ {
509
+ "rust": {
510
+ "controller": 0,
511
+ "event_sequence": 3735928559,
512
+ "gravity_word": 4294966896,
513
+ "packed": [
514
+ 66559,
515
+ 4278190336
516
+ ],
517
+ "pm_type": 1,
518
+ "speed": 220
519
+ },
520
+ "source": {
521
+ "controller": 0,
522
+ "event_sequence": 3735928559,
523
+ "gravity_word": 4294966896,
524
+ "packed": [
525
+ 66559,
526
+ 4278190336
527
+ ],
528
+ "pm_type": 1,
529
+ "speed": 220
530
+ }
531
+ },
532
+ {
533
+ "rust": {
534
+ "controller": 0,
535
+ "event_sequence": 3735928559,
536
+ "gravity_word": 4294966896,
537
+ "packed": [
538
+ 66559,
539
+ 4278190336
540
+ ],
541
+ "pm_type": 1,
542
+ "speed": 220
543
+ },
544
+ "source": {
545
+ "controller": 0,
546
+ "event_sequence": 3735928559,
547
+ "gravity_word": 4294966896,
548
+ "packed": [
549
+ 66559,
550
+ 4278190336
551
+ ],
552
+ "pm_type": 1,
553
+ "speed": 220
554
+ }
555
+ },
556
+ {
557
+ "rust": {
558
+ "controller": 0,
559
+ "event_sequence": 3735928559,
560
+ "gravity_word": 400,
561
+ "packed": [
562
+ 66559,
563
+ 4278190336
564
+ ],
565
+ "pm_type": 1,
566
+ "speed": 220
567
+ },
568
+ "source": {
569
+ "controller": 0,
570
+ "event_sequence": 3735928559,
571
+ "gravity_word": 400,
572
+ "packed": [
573
+ 66559,
574
+ 4278190336
575
+ ],
576
+ "pm_type": 1,
577
+ "speed": 220
578
+ }
579
+ },
580
+ {
581
+ "rust": {
582
+ "controller": 0,
583
+ "event_sequence": 3735928559,
584
+ "gravity_word": 800,
585
+ "packed": [
586
+ 66559,
587
+ 4278190336
588
+ ],
589
+ "pm_type": 1,
590
+ "speed": 220
591
+ },
592
+ "source": {
593
+ "controller": 0,
594
+ "event_sequence": 3735928559,
595
+ "gravity_word": 800,
596
+ "packed": [
597
+ 66559,
598
+ 4278190336
599
+ ],
600
+ "pm_type": 1,
601
+ "speed": 220
602
+ }
603
+ },
604
+ {
605
+ "rust": {
606
+ "controller": 0,
607
+ "event_sequence": 3735928559,
608
+ "gravity_word": 800,
609
+ "packed": [
610
+ 66559,
611
+ 4278190336
612
+ ],
613
+ "pm_type": 1,
614
+ "speed": 220
615
+ },
616
+ "source": {
617
+ "controller": 0,
618
+ "event_sequence": 3735928559,
619
+ "gravity_word": 800,
620
+ "packed": [
621
+ 66559,
622
+ 4278190336
623
+ ],
624
+ "pm_type": 1,
625
+ "speed": 220
626
+ }
627
+ },
628
+ {
629
+ "rust": {
630
+ "controller": 0,
631
+ "event_sequence": 3735928559,
632
+ "gravity_word": 4294966496,
633
+ "packed": [
634
+ 66559,
635
+ 4278190336
636
+ ],
637
+ "pm_type": 1,
638
+ "speed": 220
639
+ },
640
+ "source": {
641
+ "controller": 0,
642
+ "event_sequence": 3735928559,
643
+ "gravity_word": 4294966496,
644
+ "packed": [
645
+ 66559,
646
+ 4278190336
647
+ ],
648
+ "pm_type": 1,
649
+ "speed": 220
650
+ }
651
+ },
652
+ {
653
+ "rust": {
654
+ "controller": 0,
655
+ "event_sequence": 3735928559,
656
+ "gravity_word": 4294966496,
657
+ "packed": [
658
+ 66559,
659
+ 4278190336
660
+ ],
661
+ "pm_type": 1,
662
+ "speed": 220
663
+ },
664
+ "source": {
665
+ "controller": 0,
666
+ "event_sequence": 3735928559,
667
+ "gravity_word": 4294966496,
668
+ "packed": [
669
+ 66559,
670
+ 4278190336
671
+ ],
672
+ "pm_type": 1,
673
+ "speed": 220
674
+ }
675
+ },
676
+ {
677
+ "rust": {
678
+ "controller": 0,
679
+ "event_sequence": 3735928559,
680
+ "gravity_word": 400,
681
+ "packed": [
682
+ 66559,
683
+ 4278190336
684
+ ],
685
+ "pm_type": 1,
686
+ "speed": 220
687
+ },
688
+ "source": {
689
+ "controller": 0,
690
+ "event_sequence": 3735928559,
691
+ "gravity_word": 400,
692
+ "packed": [
693
+ 66559,
694
+ 4278190336
695
+ ],
696
+ "pm_type": 1,
697
+ "speed": 220
698
+ }
699
+ },
700
+ {
701
+ "rust": {
702
+ "controller": 0,
703
+ "event_sequence": 3735928559,
704
+ "gravity_word": 4294966896,
705
+ "packed": [
706
+ 66559,
707
+ 4278190336
708
+ ],
709
+ "pm_type": 1,
710
+ "speed": 220
711
+ },
712
+ "source": {
713
+ "controller": 0,
714
+ "event_sequence": 3735928559,
715
+ "gravity_word": 4294966896,
716
+ "packed": [
717
+ 66559,
718
+ 4278190336
719
+ ],
720
+ "pm_type": 1,
721
+ "speed": 220
722
+ }
723
+ },
724
+ {
725
+ "rust": {
726
+ "controller": 0,
727
+ "event_sequence": 3735928559,
728
+ "gravity_word": 4294966896,
729
+ "packed": [
730
+ 66559,
731
+ 4278190336
732
+ ],
733
+ "pm_type": 1,
734
+ "speed": 220
735
+ },
736
+ "source": {
737
+ "controller": 0,
738
+ "event_sequence": 3735928559,
739
+ "gravity_word": 4294966896,
740
+ "packed": [
741
+ 66559,
742
+ 4278190336
743
+ ],
744
+ "pm_type": 1,
745
+ "speed": 220
746
+ }
747
+ },
748
+ {
749
+ "rust": {
750
+ "controller": 0,
751
+ "event_sequence": 3735928559,
752
+ "gravity_word": 400,
753
+ "packed": [
754
+ 66559,
755
+ 4278190336
756
+ ],
757
+ "pm_type": 1,
758
+ "speed": 220
759
+ },
760
+ "source": {
761
+ "controller": 0,
762
+ "event_sequence": 3735928559,
763
+ "gravity_word": 400,
764
+ "packed": [
765
+ 66559,
766
+ 4278190336
767
+ ],
768
+ "pm_type": 1,
769
+ "speed": 220
770
+ }
771
+ },
772
+ {
773
+ "rust": {
774
+ "controller": 0,
775
+ "event_sequence": 3735928559,
776
+ "gravity_word": 0,
777
+ "packed": [
778
+ 66559,
779
+ 4278190336
780
+ ],
781
+ "pm_type": 3,
782
+ "speed": 0
783
+ },
784
+ "source": {
785
+ "controller": 0,
786
+ "event_sequence": 3735928559,
787
+ "gravity_word": 0,
788
+ "packed": [
789
+ 66559,
790
+ 4278190336
791
+ ],
792
+ "pm_type": 3,
793
+ "speed": 0
794
+ }
795
+ },
796
+ {
797
+ "rust": {
798
+ "controller": 0,
799
+ "event_sequence": 3735928559,
800
+ "gravity_word": 0,
801
+ "packed": [
802
+ 66559,
803
+ 4278190336
804
+ ],
805
+ "pm_type": 3,
806
+ "speed": 0
807
+ },
808
+ "source": {
809
+ "controller": 0,
810
+ "event_sequence": 3735928559,
811
+ "gravity_word": 0,
812
+ "packed": [
813
+ 66559,
814
+ 4278190336
815
+ ],
816
+ "pm_type": 3,
817
+ "speed": 0
818
+ }
819
+ },
820
+ {
821
+ "rust": {
822
+ "controller": 0,
823
+ "event_sequence": 3735928559,
824
+ "gravity_word": 0,
825
+ "packed": [
826
+ 66559,
827
+ 4278190336
828
+ ],
829
+ "pm_type": 3,
830
+ "speed": 0
831
+ },
832
+ "source": {
833
+ "controller": 0,
834
+ "event_sequence": 3735928559,
835
+ "gravity_word": 0,
836
+ "packed": [
837
+ 66559,
838
+ 4278190336
839
+ ],
840
+ "pm_type": 3,
841
+ "speed": 0
842
+ }
843
+ },
844
+ {
845
+ "rust": {
846
+ "controller": 0,
847
+ "event_sequence": 3735928559,
848
+ "gravity_word": 0,
849
+ "packed": [
850
+ 66559,
851
+ 4278190336
852
+ ],
853
+ "pm_type": 3,
854
+ "speed": 0
855
+ },
856
+ "source": {
857
+ "controller": 0,
858
+ "event_sequence": 3735928559,
859
+ "gravity_word": 0,
860
+ "packed": [
861
+ 66559,
862
+ 4278190336
863
+ ],
864
+ "pm_type": 3,
865
+ "speed": 0
866
+ }
867
+ },
868
+ {
869
+ "rust": {
870
+ "controller": 1,
871
+ "event_sequence": 3735928559,
872
+ "gravity_word": 0,
873
+ "packed": [
874
+ 66559,
875
+ 4278190336
876
+ ],
877
+ "pm_type": 3,
878
+ "speed": 0
879
+ },
880
+ "source": {
881
+ "controller": 1,
882
+ "event_sequence": 3735928559,
883
+ "gravity_word": 0,
884
+ "packed": [
885
+ 66559,
886
+ 4278190336
887
+ ],
888
+ "pm_type": 3,
889
+ "speed": 0
890
+ }
891
+ },
892
+ {
893
+ "rust": {
894
+ "controller": 1,
895
+ "event_sequence": 3735928559,
896
+ "gravity_word": 0,
897
+ "packed": [
898
+ 66559,
899
+ 4278190336
900
+ ],
901
+ "pm_type": 3,
902
+ "speed": 0
903
+ },
904
+ "source": {
905
+ "controller": 1,
906
+ "event_sequence": 3735928559,
907
+ "gravity_word": 0,
908
+ "packed": [
909
+ 66559,
910
+ 4278190336
911
+ ],
912
+ "pm_type": 3,
913
+ "speed": 0
914
+ }
915
+ },
916
+ {
917
+ "rust": {
918
+ "controller": 1,
919
+ "event_sequence": 3735928559,
920
+ "gravity_word": 0,
921
+ "packed": [
922
+ 66559,
923
+ 4278190336
924
+ ],
925
+ "pm_type": 3,
926
+ "speed": 0
927
+ },
928
+ "source": {
929
+ "controller": 1,
930
+ "event_sequence": 3735928559,
931
+ "gravity_word": 0,
932
+ "packed": [
933
+ 66559,
934
+ 4278190336
935
+ ],
936
+ "pm_type": 3,
937
+ "speed": 0
938
+ }
939
+ },
940
+ {
941
+ "rust": {
942
+ "controller": 1,
943
+ "event_sequence": 3735928559,
944
+ "gravity_word": 0,
945
+ "packed": [
946
+ 66559,
947
+ 4278190336
948
+ ],
949
+ "pm_type": 3,
950
+ "speed": 0
951
+ },
952
+ "source": {
953
+ "controller": 1,
954
+ "event_sequence": 3735928559,
955
+ "gravity_word": 0,
956
+ "packed": [
957
+ 66559,
958
+ 4278190336
959
+ ],
960
+ "pm_type": 3,
961
+ "speed": 0
962
+ }
963
+ },
964
+ {
965
+ "rust": {
966
+ "controller": 0,
967
+ "event_sequence": 3735928559,
968
+ "gravity_word": 0,
969
+ "packed": [
970
+ 66559,
971
+ 4278190336
972
+ ],
973
+ "pm_type": 0,
974
+ "speed": 0
975
+ },
976
+ "source": {
977
+ "controller": 0,
978
+ "event_sequence": 3735928559,
979
+ "gravity_word": 0,
980
+ "packed": [
981
+ 66559,
982
+ 4278190336
983
+ ],
984
+ "pm_type": 0,
985
+ "speed": 0
986
+ }
987
+ },
988
+ {
989
+ "rust": {
990
+ "controller": 0,
991
+ "event_sequence": 3735928559,
992
+ "gravity_word": 0,
993
+ "packed": [
994
+ 66559,
995
+ 4278190336
996
+ ],
997
+ "pm_type": 0,
998
+ "speed": 0
999
+ },
1000
+ "source": {
1001
+ "controller": 0,
1002
+ "event_sequence": 3735928559,
1003
+ "gravity_word": 0,
1004
+ "packed": [
1005
+ 66559,
1006
+ 4278190336
1007
+ ],
1008
+ "pm_type": 0,
1009
+ "speed": 0
1010
+ }
1011
+ },
1012
+ {
1013
+ "rust": {
1014
+ "controller": 0,
1015
+ "event_sequence": 3735928559,
1016
+ "gravity_word": 0,
1017
+ "packed": [
1018
+ 66559,
1019
+ 4278190336
1020
+ ],
1021
+ "pm_type": 0,
1022
+ "speed": 0
1023
+ },
1024
+ "source": {
1025
+ "controller": 0,
1026
+ "event_sequence": 3735928559,
1027
+ "gravity_word": 0,
1028
+ "packed": [
1029
+ 66559,
1030
+ 4278190336
1031
+ ],
1032
+ "pm_type": 0,
1033
+ "speed": 0
1034
+ }
1035
+ },
1036
+ {
1037
+ "rust": {
1038
+ "controller": 0,
1039
+ "event_sequence": 3735928559,
1040
+ "gravity_word": 0,
1041
+ "packed": [
1042
+ 66559,
1043
+ 4278190336
1044
+ ],
1045
+ "pm_type": 0,
1046
+ "speed": 0
1047
+ },
1048
+ "source": {
1049
+ "controller": 0,
1050
+ "event_sequence": 3735928559,
1051
+ "gravity_word": 0,
1052
+ "packed": [
1053
+ 66559,
1054
+ 4278190336
1055
+ ],
1056
+ "pm_type": 0,
1057
+ "speed": 0
1058
+ }
1059
+ },
1060
+ {
1061
+ "rust": {
1062
+ "controller": 1,
1063
+ "event_sequence": 3735928559,
1064
+ "gravity_word": 0,
1065
+ "packed": [
1066
+ 66559,
1067
+ 4278190336
1068
+ ],
1069
+ "pm_type": 0,
1070
+ "speed": 0
1071
+ },
1072
+ "source": {
1073
+ "controller": 1,
1074
+ "event_sequence": 3735928559,
1075
+ "gravity_word": 0,
1076
+ "packed": [
1077
+ 66559,
1078
+ 4278190336
1079
+ ],
1080
+ "pm_type": 0,
1081
+ "speed": 0
1082
+ }
1083
+ },
1084
+ {
1085
+ "rust": {
1086
+ "controller": 1,
1087
+ "event_sequence": 3735928559,
1088
+ "gravity_word": 0,
1089
+ "packed": [
1090
+ 66559,
1091
+ 4278190336
1092
+ ],
1093
+ "pm_type": 0,
1094
+ "speed": 0
1095
+ },
1096
+ "source": {
1097
+ "controller": 1,
1098
+ "event_sequence": 3735928559,
1099
+ "gravity_word": 0,
1100
+ "packed": [
1101
+ 66559,
1102
+ 4278190336
1103
+ ],
1104
+ "pm_type": 0,
1105
+ "speed": 0
1106
+ }
1107
+ },
1108
+ {
1109
+ "rust": {
1110
+ "controller": 1,
1111
+ "event_sequence": 3735928559,
1112
+ "gravity_word": 0,
1113
+ "packed": [
1114
+ 66559,
1115
+ 4278190336
1116
+ ],
1117
+ "pm_type": 0,
1118
+ "speed": 0
1119
+ },
1120
+ "source": {
1121
+ "controller": 1,
1122
+ "event_sequence": 3735928559,
1123
+ "gravity_word": 0,
1124
+ "packed": [
1125
+ 66559,
1126
+ 4278190336
1127
+ ],
1128
+ "pm_type": 0,
1129
+ "speed": 0
1130
+ }
1131
+ },
1132
+ {
1133
+ "rust": {
1134
+ "controller": 1,
1135
+ "event_sequence": 3735928559,
1136
+ "gravity_word": 0,
1137
+ "packed": [
1138
+ 66559,
1139
+ 4278190336
1140
+ ],
1141
+ "pm_type": 0,
1142
+ "speed": 0
1143
+ },
1144
+ "source": {
1145
+ "controller": 1,
1146
+ "event_sequence": 3735928559,
1147
+ "gravity_word": 0,
1148
+ "packed": [
1149
+ 66559,
1150
+ 4278190336
1151
+ ],
1152
+ "pm_type": 0,
1153
+ "speed": 0
1154
+ }
1155
+ },
1156
+ {
1157
+ "rust": {
1158
+ "controller": 0,
1159
+ "event_sequence": 3735928559,
1160
+ "gravity_word": 0,
1161
+ "packed": [
1162
+ 66559,
1163
+ 4278190336
1164
+ ],
1165
+ "pm_type": 1,
1166
+ "speed": 0
1167
+ },
1168
+ "source": {
1169
+ "controller": 0,
1170
+ "event_sequence": 3735928559,
1171
+ "gravity_word": 0,
1172
+ "packed": [
1173
+ 66559,
1174
+ 4278190336
1175
+ ],
1176
+ "pm_type": 1,
1177
+ "speed": 0
1178
+ }
1179
+ },
1180
+ {
1181
+ "rust": {
1182
+ "controller": 0,
1183
+ "event_sequence": 3735928559,
1184
+ "gravity_word": 0,
1185
+ "packed": [
1186
+ 66559,
1187
+ 4278190336
1188
+ ],
1189
+ "pm_type": 1,
1190
+ "speed": 0
1191
+ },
1192
+ "source": {
1193
+ "controller": 0,
1194
+ "event_sequence": 3735928559,
1195
+ "gravity_word": 0,
1196
+ "packed": [
1197
+ 66559,
1198
+ 4278190336
1199
+ ],
1200
+ "pm_type": 1,
1201
+ "speed": 0
1202
+ }
1203
+ },
1204
+ {
1205
+ "rust": {
1206
+ "controller": 0,
1207
+ "event_sequence": 3735928559,
1208
+ "gravity_word": 0,
1209
+ "packed": [
1210
+ 66559,
1211
+ 4278190336
1212
+ ],
1213
+ "pm_type": 1,
1214
+ "speed": 0
1215
+ },
1216
+ "source": {
1217
+ "controller": 0,
1218
+ "event_sequence": 3735928559,
1219
+ "gravity_word": 0,
1220
+ "packed": [
1221
+ 66559,
1222
+ 4278190336
1223
+ ],
1224
+ "pm_type": 1,
1225
+ "speed": 0
1226
+ }
1227
+ },
1228
+ {
1229
+ "rust": {
1230
+ "controller": 0,
1231
+ "event_sequence": 3735928559,
1232
+ "gravity_word": 0,
1233
+ "packed": [
1234
+ 66559,
1235
+ 4278190336
1236
+ ],
1237
+ "pm_type": 1,
1238
+ "speed": 0
1239
+ },
1240
+ "source": {
1241
+ "controller": 0,
1242
+ "event_sequence": 3735928559,
1243
+ "gravity_word": 0,
1244
+ "packed": [
1245
+ 66559,
1246
+ 4278190336
1247
+ ],
1248
+ "pm_type": 1,
1249
+ "speed": 0
1250
+ }
1251
+ },
1252
+ {
1253
+ "rust": {
1254
+ "controller": 1,
1255
+ "event_sequence": 3735928559,
1256
+ "gravity_word": 0,
1257
+ "packed": [
1258
+ 66559,
1259
+ 4278190336
1260
+ ],
1261
+ "pm_type": 1,
1262
+ "speed": 0
1263
+ },
1264
+ "source": {
1265
+ "controller": 1,
1266
+ "event_sequence": 3735928559,
1267
+ "gravity_word": 0,
1268
+ "packed": [
1269
+ 66559,
1270
+ 4278190336
1271
+ ],
1272
+ "pm_type": 1,
1273
+ "speed": 0
1274
+ }
1275
+ },
1276
+ {
1277
+ "rust": {
1278
+ "controller": 1,
1279
+ "event_sequence": 3735928559,
1280
+ "gravity_word": 0,
1281
+ "packed": [
1282
+ 66559,
1283
+ 4278190336
1284
+ ],
1285
+ "pm_type": 1,
1286
+ "speed": 0
1287
+ },
1288
+ "source": {
1289
+ "controller": 1,
1290
+ "event_sequence": 3735928559,
1291
+ "gravity_word": 0,
1292
+ "packed": [
1293
+ 66559,
1294
+ 4278190336
1295
+ ],
1296
+ "pm_type": 1,
1297
+ "speed": 0
1298
+ }
1299
+ },
1300
+ {
1301
+ "rust": {
1302
+ "controller": 1,
1303
+ "event_sequence": 3735928559,
1304
+ "gravity_word": 0,
1305
+ "packed": [
1306
+ 66559,
1307
+ 4278190336
1308
+ ],
1309
+ "pm_type": 1,
1310
+ "speed": 0
1311
+ },
1312
+ "source": {
1313
+ "controller": 1,
1314
+ "event_sequence": 3735928559,
1315
+ "gravity_word": 0,
1316
+ "packed": [
1317
+ 66559,
1318
+ 4278190336
1319
+ ],
1320
+ "pm_type": 1,
1321
+ "speed": 0
1322
+ }
1323
+ },
1324
+ {
1325
+ "rust": {
1326
+ "controller": 1,
1327
+ "event_sequence": 3735928559,
1328
+ "gravity_word": 0,
1329
+ "packed": [
1330
+ 66559,
1331
+ 4278190336
1332
+ ],
1333
+ "pm_type": 1,
1334
+ "speed": 0
1335
+ },
1336
+ "source": {
1337
+ "controller": 1,
1338
+ "event_sequence": 3735928559,
1339
+ "gravity_word": 0,
1340
+ "packed": [
1341
+ 66559,
1342
+ 4278190336
1343
+ ],
1344
+ "pm_type": 1,
1345
+ "speed": 0
1346
+ }
1347
+ },
1348
+ {
1349
+ "rust": {
1350
+ "controller": 0,
1351
+ "event_sequence": 3735928559,
1352
+ "gravity_word": 0,
1353
+ "packed": [
1354
+ 66559,
1355
+ 4278190336
1356
+ ],
1357
+ "pm_type": 1,
1358
+ "speed": 0
1359
+ },
1360
+ "source": {
1361
+ "controller": 0,
1362
+ "event_sequence": 3735928559,
1363
+ "gravity_word": 0,
1364
+ "packed": [
1365
+ 66559,
1366
+ 4278190336
1367
+ ],
1368
+ "pm_type": 1,
1369
+ "speed": 0
1370
+ }
1371
+ },
1372
+ {
1373
+ "rust": {
1374
+ "controller": 0,
1375
+ "event_sequence": 3735928559,
1376
+ "gravity_word": 0,
1377
+ "packed": [
1378
+ 66559,
1379
+ 4278190336
1380
+ ],
1381
+ "pm_type": 1,
1382
+ "speed": 0
1383
+ },
1384
+ "source": {
1385
+ "controller": 0,
1386
+ "event_sequence": 3735928559,
1387
+ "gravity_word": 0,
1388
+ "packed": [
1389
+ 66559,
1390
+ 4278190336
1391
+ ],
1392
+ "pm_type": 1,
1393
+ "speed": 0
1394
+ }
1395
+ },
1396
+ {
1397
+ "rust": {
1398
+ "controller": 0,
1399
+ "event_sequence": 3735928559,
1400
+ "gravity_word": 0,
1401
+ "packed": [
1402
+ 66559,
1403
+ 4278190336
1404
+ ],
1405
+ "pm_type": 1,
1406
+ "speed": 0
1407
+ },
1408
+ "source": {
1409
+ "controller": 0,
1410
+ "event_sequence": 3735928559,
1411
+ "gravity_word": 0,
1412
+ "packed": [
1413
+ 66559,
1414
+ 4278190336
1415
+ ],
1416
+ "pm_type": 1,
1417
+ "speed": 0
1418
+ }
1419
+ },
1420
+ {
1421
+ "rust": {
1422
+ "controller": 0,
1423
+ "event_sequence": 3735928559,
1424
+ "gravity_word": 0,
1425
+ "packed": [
1426
+ 66559,
1427
+ 4278190336
1428
+ ],
1429
+ "pm_type": 1,
1430
+ "speed": 0
1431
+ },
1432
+ "source": {
1433
+ "controller": 0,
1434
+ "event_sequence": 3735928559,
1435
+ "gravity_word": 0,
1436
+ "packed": [
1437
+ 66559,
1438
+ 4278190336
1439
+ ],
1440
+ "pm_type": 1,
1441
+ "speed": 0
1442
+ }
1443
+ },
1444
+ {
1445
+ "rust": {
1446
+ "controller": 1,
1447
+ "event_sequence": 3735928559,
1448
+ "gravity_word": 0,
1449
+ "packed": [
1450
+ 66559,
1451
+ 4278190336
1452
+ ],
1453
+ "pm_type": 1,
1454
+ "speed": 0
1455
+ },
1456
+ "source": {
1457
+ "controller": 1,
1458
+ "event_sequence": 3735928559,
1459
+ "gravity_word": 0,
1460
+ "packed": [
1461
+ 66559,
1462
+ 4278190336
1463
+ ],
1464
+ "pm_type": 1,
1465
+ "speed": 0
1466
+ }
1467
+ },
1468
+ {
1469
+ "rust": {
1470
+ "controller": 1,
1471
+ "event_sequence": 3735928559,
1472
+ "gravity_word": 0,
1473
+ "packed": [
1474
+ 66559,
1475
+ 4278190336
1476
+ ],
1477
+ "pm_type": 1,
1478
+ "speed": 0
1479
+ },
1480
+ "source": {
1481
+ "controller": 1,
1482
+ "event_sequence": 3735928559,
1483
+ "gravity_word": 0,
1484
+ "packed": [
1485
+ 66559,
1486
+ 4278190336
1487
+ ],
1488
+ "pm_type": 1,
1489
+ "speed": 0
1490
+ }
1491
+ },
1492
+ {
1493
+ "rust": {
1494
+ "controller": 1,
1495
+ "event_sequence": 3735928559,
1496
+ "gravity_word": 0,
1497
+ "packed": [
1498
+ 66559,
1499
+ 4278190336
1500
+ ],
1501
+ "pm_type": 1,
1502
+ "speed": 0
1503
+ },
1504
+ "source": {
1505
+ "controller": 1,
1506
+ "event_sequence": 3735928559,
1507
+ "gravity_word": 0,
1508
+ "packed": [
1509
+ 66559,
1510
+ 4278190336
1511
+ ],
1512
+ "pm_type": 1,
1513
+ "speed": 0
1514
+ }
1515
+ },
1516
+ {
1517
+ "rust": {
1518
+ "controller": 1,
1519
+ "event_sequence": 3735928559,
1520
+ "gravity_word": 0,
1521
+ "packed": [
1522
+ 66559,
1523
+ 4278190336
1524
+ ],
1525
+ "pm_type": 1,
1526
+ "speed": 0
1527
+ },
1528
+ "source": {
1529
+ "controller": 1,
1530
+ "event_sequence": 3735928559,
1531
+ "gravity_word": 0,
1532
+ "packed": [
1533
+ 66559,
1534
+ 4278190336
1535
+ ],
1536
+ "pm_type": 1,
1537
+ "speed": 0
1538
+ }
1539
+ },
1540
+ {
1541
+ "rust": {
1542
+ "controller": 0,
1543
+ "event_sequence": 3735928559,
1544
+ "gravity_word": 800,
1545
+ "packed": [
1546
+ 66559,
1547
+ 4278190336
1548
+ ],
1549
+ "pm_type": 3,
1550
+ "speed": 220
1551
+ },
1552
+ "source": {
1553
+ "controller": 0,
1554
+ "event_sequence": 3735928559,
1555
+ "gravity_word": 800,
1556
+ "packed": [
1557
+ 66559,
1558
+ 4278190336
1559
+ ],
1560
+ "pm_type": 3,
1561
+ "speed": 220
1562
+ }
1563
+ },
1564
+ {
1565
+ "rust": {
1566
+ "controller": 0,
1567
+ "event_sequence": 3735928559,
1568
+ "gravity_word": 800,
1569
+ "packed": [
1570
+ 66559,
1571
+ 4278190336
1572
+ ],
1573
+ "pm_type": 3,
1574
+ "speed": 220
1575
+ },
1576
+ "source": {
1577
+ "controller": 0,
1578
+ "event_sequence": 3735928559,
1579
+ "gravity_word": 800,
1580
+ "packed": [
1581
+ 66559,
1582
+ 4278190336
1583
+ ],
1584
+ "pm_type": 3,
1585
+ "speed": 220
1586
+ }
1587
+ },
1588
+ {
1589
+ "rust": {
1590
+ "controller": 0,
1591
+ "event_sequence": 3735928559,
1592
+ "gravity_word": 4294966496,
1593
+ "packed": [
1594
+ 66559,
1595
+ 4278190336
1596
+ ],
1597
+ "pm_type": 3,
1598
+ "speed": 220
1599
+ },
1600
+ "source": {
1601
+ "controller": 0,
1602
+ "event_sequence": 3735928559,
1603
+ "gravity_word": 4294966496,
1604
+ "packed": [
1605
+ 66559,
1606
+ 4278190336
1607
+ ],
1608
+ "pm_type": 3,
1609
+ "speed": 220
1610
+ }
1611
+ },
1612
+ {
1613
+ "rust": {
1614
+ "controller": 0,
1615
+ "event_sequence": 3735928559,
1616
+ "gravity_word": 4294966496,
1617
+ "packed": [
1618
+ 66559,
1619
+ 4278190336
1620
+ ],
1621
+ "pm_type": 3,
1622
+ "speed": 220
1623
+ },
1624
+ "source": {
1625
+ "controller": 0,
1626
+ "event_sequence": 3735928559,
1627
+ "gravity_word": 4294966496,
1628
+ "packed": [
1629
+ 66559,
1630
+ 4278190336
1631
+ ],
1632
+ "pm_type": 3,
1633
+ "speed": 220
1634
+ }
1635
+ },
1636
+ {
1637
+ "rust": {
1638
+ "controller": 0,
1639
+ "event_sequence": 3735928559,
1640
+ "gravity_word": 400,
1641
+ "packed": [
1642
+ 66559,
1643
+ 4278190336
1644
+ ],
1645
+ "pm_type": 3,
1646
+ "speed": 220
1647
+ },
1648
+ "source": {
1649
+ "controller": 0,
1650
+ "event_sequence": 3735928559,
1651
+ "gravity_word": 400,
1652
+ "packed": [
1653
+ 66559,
1654
+ 4278190336
1655
+ ],
1656
+ "pm_type": 3,
1657
+ "speed": 220
1658
+ }
1659
+ },
1660
+ {
1661
+ "rust": {
1662
+ "controller": 0,
1663
+ "event_sequence": 3735928559,
1664
+ "gravity_word": 4294966896,
1665
+ "packed": [
1666
+ 66559,
1667
+ 4278190336
1668
+ ],
1669
+ "pm_type": 3,
1670
+ "speed": 220
1671
+ },
1672
+ "source": {
1673
+ "controller": 0,
1674
+ "event_sequence": 3735928559,
1675
+ "gravity_word": 4294966896,
1676
+ "packed": [
1677
+ 66559,
1678
+ 4278190336
1679
+ ],
1680
+ "pm_type": 3,
1681
+ "speed": 220
1682
+ }
1683
+ },
1684
+ {
1685
+ "rust": {
1686
+ "controller": 0,
1687
+ "event_sequence": 3735928559,
1688
+ "gravity_word": 4294966896,
1689
+ "packed": [
1690
+ 66559,
1691
+ 4278190336
1692
+ ],
1693
+ "pm_type": 3,
1694
+ "speed": 220
1695
+ },
1696
+ "source": {
1697
+ "controller": 0,
1698
+ "event_sequence": 3735928559,
1699
+ "gravity_word": 4294966896,
1700
+ "packed": [
1701
+ 66559,
1702
+ 4278190336
1703
+ ],
1704
+ "pm_type": 3,
1705
+ "speed": 220
1706
+ }
1707
+ },
1708
+ {
1709
+ "rust": {
1710
+ "controller": 0,
1711
+ "event_sequence": 3735928559,
1712
+ "gravity_word": 400,
1713
+ "packed": [
1714
+ 66559,
1715
+ 4278190336
1716
+ ],
1717
+ "pm_type": 3,
1718
+ "speed": 220
1719
+ },
1720
+ "source": {
1721
+ "controller": 0,
1722
+ "event_sequence": 3735928559,
1723
+ "gravity_word": 400,
1724
+ "packed": [
1725
+ 66559,
1726
+ 4278190336
1727
+ ],
1728
+ "pm_type": 3,
1729
+ "speed": 220
1730
+ }
1731
+ },
1732
+ {
1733
+ "rust": {
1734
+ "controller": 0,
1735
+ "event_sequence": 3735928559,
1736
+ "gravity_word": 800,
1737
+ "packed": [
1738
+ 66559,
1739
+ 4278190336
1740
+ ],
1741
+ "pm_type": 0,
1742
+ "speed": 220
1743
+ },
1744
+ "source": {
1745
+ "controller": 0,
1746
+ "event_sequence": 3735928559,
1747
+ "gravity_word": 800,
1748
+ "packed": [
1749
+ 66559,
1750
+ 4278190336
1751
+ ],
1752
+ "pm_type": 0,
1753
+ "speed": 220
1754
+ }
1755
+ },
1756
+ {
1757
+ "rust": {
1758
+ "controller": 0,
1759
+ "event_sequence": 3735928559,
1760
+ "gravity_word": 800,
1761
+ "packed": [
1762
+ 66559,
1763
+ 4278190336
1764
+ ],
1765
+ "pm_type": 0,
1766
+ "speed": 220
1767
+ },
1768
+ "source": {
1769
+ "controller": 0,
1770
+ "event_sequence": 3735928559,
1771
+ "gravity_word": 800,
1772
+ "packed": [
1773
+ 66559,
1774
+ 4278190336
1775
+ ],
1776
+ "pm_type": 0,
1777
+ "speed": 220
1778
+ }
1779
+ },
1780
+ {
1781
+ "rust": {
1782
+ "controller": 0,
1783
+ "event_sequence": 3735928559,
1784
+ "gravity_word": 4294966496,
1785
+ "packed": [
1786
+ 66559,
1787
+ 4278190336
1788
+ ],
1789
+ "pm_type": 0,
1790
+ "speed": 220
1791
+ },
1792
+ "source": {
1793
+ "controller": 0,
1794
+ "event_sequence": 3735928559,
1795
+ "gravity_word": 4294966496,
1796
+ "packed": [
1797
+ 66559,
1798
+ 4278190336
1799
+ ],
1800
+ "pm_type": 0,
1801
+ "speed": 220
1802
+ }
1803
+ },
1804
+ {
1805
+ "rust": {
1806
+ "controller": 0,
1807
+ "event_sequence": 3735928559,
1808
+ "gravity_word": 4294966496,
1809
+ "packed": [
1810
+ 66559,
1811
+ 4278190336
1812
+ ],
1813
+ "pm_type": 0,
1814
+ "speed": 220
1815
+ },
1816
+ "source": {
1817
+ "controller": 0,
1818
+ "event_sequence": 3735928559,
1819
+ "gravity_word": 4294966496,
1820
+ "packed": [
1821
+ 66559,
1822
+ 4278190336
1823
+ ],
1824
+ "pm_type": 0,
1825
+ "speed": 220
1826
+ }
1827
+ },
1828
+ {
1829
+ "rust": {
1830
+ "controller": 0,
1831
+ "event_sequence": 3735928559,
1832
+ "gravity_word": 400,
1833
+ "packed": [
1834
+ 66559,
1835
+ 4278190336
1836
+ ],
1837
+ "pm_type": 0,
1838
+ "speed": 220
1839
+ },
1840
+ "source": {
1841
+ "controller": 0,
1842
+ "event_sequence": 3735928559,
1843
+ "gravity_word": 400,
1844
+ "packed": [
1845
+ 66559,
1846
+ 4278190336
1847
+ ],
1848
+ "pm_type": 0,
1849
+ "speed": 220
1850
+ }
1851
+ },
1852
+ {
1853
+ "rust": {
1854
+ "controller": 0,
1855
+ "event_sequence": 3735928559,
1856
+ "gravity_word": 4294966896,
1857
+ "packed": [
1858
+ 66559,
1859
+ 4278190336
1860
+ ],
1861
+ "pm_type": 0,
1862
+ "speed": 220
1863
+ },
1864
+ "source": {
1865
+ "controller": 0,
1866
+ "event_sequence": 3735928559,
1867
+ "gravity_word": 4294966896,
1868
+ "packed": [
1869
+ 66559,
1870
+ 4278190336
1871
+ ],
1872
+ "pm_type": 0,
1873
+ "speed": 220
1874
+ }
1875
+ },
1876
+ {
1877
+ "rust": {
1878
+ "controller": 0,
1879
+ "event_sequence": 3735928559,
1880
+ "gravity_word": 4294966896,
1881
+ "packed": [
1882
+ 66559,
1883
+ 4278190336
1884
+ ],
1885
+ "pm_type": 0,
1886
+ "speed": 220
1887
+ },
1888
+ "source": {
1889
+ "controller": 0,
1890
+ "event_sequence": 3735928559,
1891
+ "gravity_word": 4294966896,
1892
+ "packed": [
1893
+ 66559,
1894
+ 4278190336
1895
+ ],
1896
+ "pm_type": 0,
1897
+ "speed": 220
1898
+ }
1899
+ },
1900
+ {
1901
+ "rust": {
1902
+ "controller": 0,
1903
+ "event_sequence": 3735928559,
1904
+ "gravity_word": 400,
1905
+ "packed": [
1906
+ 66559,
1907
+ 4278190336
1908
+ ],
1909
+ "pm_type": 0,
1910
+ "speed": 220
1911
+ },
1912
+ "source": {
1913
+ "controller": 0,
1914
+ "event_sequence": 3735928559,
1915
+ "gravity_word": 400,
1916
+ "packed": [
1917
+ 66559,
1918
+ 4278190336
1919
+ ],
1920
+ "pm_type": 0,
1921
+ "speed": 220
1922
+ }
1923
+ },
1924
+ {
1925
+ "rust": {
1926
+ "controller": 0,
1927
+ "event_sequence": 3735928559,
1928
+ "gravity_word": 800,
1929
+ "packed": [
1930
+ 66559,
1931
+ 4278190336
1932
+ ],
1933
+ "pm_type": 1,
1934
+ "speed": 220
1935
+ },
1936
+ "source": {
1937
+ "controller": 0,
1938
+ "event_sequence": 3735928559,
1939
+ "gravity_word": 800,
1940
+ "packed": [
1941
+ 66559,
1942
+ 4278190336
1943
+ ],
1944
+ "pm_type": 1,
1945
+ "speed": 220
1946
+ }
1947
+ },
1948
+ {
1949
+ "rust": {
1950
+ "controller": 0,
1951
+ "event_sequence": 3735928559,
1952
+ "gravity_word": 800,
1953
+ "packed": [
1954
+ 66559,
1955
+ 4278190336
1956
+ ],
1957
+ "pm_type": 1,
1958
+ "speed": 220
1959
+ },
1960
+ "source": {
1961
+ "controller": 0,
1962
+ "event_sequence": 3735928559,
1963
+ "gravity_word": 800,
1964
+ "packed": [
1965
+ 66559,
1966
+ 4278190336
1967
+ ],
1968
+ "pm_type": 1,
1969
+ "speed": 220
1970
+ }
1971
+ },
1972
+ {
1973
+ "rust": {
1974
+ "controller": 0,
1975
+ "event_sequence": 3735928559,
1976
+ "gravity_word": 4294966496,
1977
+ "packed": [
1978
+ 66559,
1979
+ 4278190336
1980
+ ],
1981
+ "pm_type": 1,
1982
+ "speed": 220
1983
+ },
1984
+ "source": {
1985
+ "controller": 0,
1986
+ "event_sequence": 3735928559,
1987
+ "gravity_word": 4294966496,
1988
+ "packed": [
1989
+ 66559,
1990
+ 4278190336
1991
+ ],
1992
+ "pm_type": 1,
1993
+ "speed": 220
1994
+ }
1995
+ },
1996
+ {
1997
+ "rust": {
1998
+ "controller": 0,
1999
+ "event_sequence": 3735928559,
2000
+ "gravity_word": 4294966496,
2001
+ "packed": [
2002
+ 66559,
2003
+ 4278190336
2004
+ ],
2005
+ "pm_type": 1,
2006
+ "speed": 220
2007
+ },
2008
+ "source": {
2009
+ "controller": 0,
2010
+ "event_sequence": 3735928559,
2011
+ "gravity_word": 4294966496,
2012
+ "packed": [
2013
+ 66559,
2014
+ 4278190336
2015
+ ],
2016
+ "pm_type": 1,
2017
+ "speed": 220
2018
+ }
2019
+ },
2020
+ {
2021
+ "rust": {
2022
+ "controller": 0,
2023
+ "event_sequence": 3735928559,
2024
+ "gravity_word": 400,
2025
+ "packed": [
2026
+ 66559,
2027
+ 4278190336
2028
+ ],
2029
+ "pm_type": 1,
2030
+ "speed": 220
2031
+ },
2032
+ "source": {
2033
+ "controller": 0,
2034
+ "event_sequence": 3735928559,
2035
+ "gravity_word": 400,
2036
+ "packed": [
2037
+ 66559,
2038
+ 4278190336
2039
+ ],
2040
+ "pm_type": 1,
2041
+ "speed": 220
2042
+ }
2043
+ },
2044
+ {
2045
+ "rust": {
2046
+ "controller": 0,
2047
+ "event_sequence": 3735928559,
2048
+ "gravity_word": 4294966896,
2049
+ "packed": [
2050
+ 66559,
2051
+ 4278190336
2052
+ ],
2053
+ "pm_type": 1,
2054
+ "speed": 220
2055
+ },
2056
+ "source": {
2057
+ "controller": 0,
2058
+ "event_sequence": 3735928559,
2059
+ "gravity_word": 4294966896,
2060
+ "packed": [
2061
+ 66559,
2062
+ 4278190336
2063
+ ],
2064
+ "pm_type": 1,
2065
+ "speed": 220
2066
+ }
2067
+ },
2068
+ {
2069
+ "rust": {
2070
+ "controller": 0,
2071
+ "event_sequence": 3735928559,
2072
+ "gravity_word": 4294966896,
2073
+ "packed": [
2074
+ 66559,
2075
+ 4278190336
2076
+ ],
2077
+ "pm_type": 1,
2078
+ "speed": 220
2079
+ },
2080
+ "source": {
2081
+ "controller": 0,
2082
+ "event_sequence": 3735928559,
2083
+ "gravity_word": 4294966896,
2084
+ "packed": [
2085
+ 66559,
2086
+ 4278190336
2087
+ ],
2088
+ "pm_type": 1,
2089
+ "speed": 220
2090
+ }
2091
+ },
2092
+ {
2093
+ "rust": {
2094
+ "controller": 0,
2095
+ "event_sequence": 3735928559,
2096
+ "gravity_word": 400,
2097
+ "packed": [
2098
+ 66559,
2099
+ 4278190336
2100
+ ],
2101
+ "pm_type": 1,
2102
+ "speed": 220
2103
+ },
2104
+ "source": {
2105
+ "controller": 0,
2106
+ "event_sequence": 3735928559,
2107
+ "gravity_word": 400,
2108
+ "packed": [
2109
+ 66559,
2110
+ 4278190336
2111
+ ],
2112
+ "pm_type": 1,
2113
+ "speed": 220
2114
+ }
2115
+ },
2116
+ {
2117
+ "rust": {
2118
+ "controller": 0,
2119
+ "event_sequence": 3735928559,
2120
+ "gravity_word": 800,
2121
+ "packed": [
2122
+ 66559,
2123
+ 4278190336
2124
+ ],
2125
+ "pm_type": 1,
2126
+ "speed": 220
2127
+ },
2128
+ "source": {
2129
+ "controller": 0,
2130
+ "event_sequence": 3735928559,
2131
+ "gravity_word": 800,
2132
+ "packed": [
2133
+ 66559,
2134
+ 4278190336
2135
+ ],
2136
+ "pm_type": 1,
2137
+ "speed": 220
2138
+ }
2139
+ },
2140
+ {
2141
+ "rust": {
2142
+ "controller": 0,
2143
+ "event_sequence": 3735928559,
2144
+ "gravity_word": 800,
2145
+ "packed": [
2146
+ 66559,
2147
+ 4278190336
2148
+ ],
2149
+ "pm_type": 1,
2150
+ "speed": 220
2151
+ },
2152
+ "source": {
2153
+ "controller": 0,
2154
+ "event_sequence": 3735928559,
2155
+ "gravity_word": 800,
2156
+ "packed": [
2157
+ 66559,
2158
+ 4278190336
2159
+ ],
2160
+ "pm_type": 1,
2161
+ "speed": 220
2162
+ }
2163
+ },
2164
+ {
2165
+ "rust": {
2166
+ "controller": 0,
2167
+ "event_sequence": 3735928559,
2168
+ "gravity_word": 4294966496,
2169
+ "packed": [
2170
+ 66559,
2171
+ 4278190336
2172
+ ],
2173
+ "pm_type": 1,
2174
+ "speed": 220
2175
+ },
2176
+ "source": {
2177
+ "controller": 0,
2178
+ "event_sequence": 3735928559,
2179
+ "gravity_word": 4294966496,
2180
+ "packed": [
2181
+ 66559,
2182
+ 4278190336
2183
+ ],
2184
+ "pm_type": 1,
2185
+ "speed": 220
2186
+ }
2187
+ },
2188
+ {
2189
+ "rust": {
2190
+ "controller": 0,
2191
+ "event_sequence": 3735928559,
2192
+ "gravity_word": 4294966496,
2193
+ "packed": [
2194
+ 66559,
2195
+ 4278190336
2196
+ ],
2197
+ "pm_type": 1,
2198
+ "speed": 220
2199
+ },
2200
+ "source": {
2201
+ "controller": 0,
2202
+ "event_sequence": 3735928559,
2203
+ "gravity_word": 4294966496,
2204
+ "packed": [
2205
+ 66559,
2206
+ 4278190336
2207
+ ],
2208
+ "pm_type": 1,
2209
+ "speed": 220
2210
+ }
2211
+ },
2212
+ {
2213
+ "rust": {
2214
+ "controller": 0,
2215
+ "event_sequence": 3735928559,
2216
+ "gravity_word": 400,
2217
+ "packed": [
2218
+ 66559,
2219
+ 4278190336
2220
+ ],
2221
+ "pm_type": 1,
2222
+ "speed": 220
2223
+ },
2224
+ "source": {
2225
+ "controller": 0,
2226
+ "event_sequence": 3735928559,
2227
+ "gravity_word": 400,
2228
+ "packed": [
2229
+ 66559,
2230
+ 4278190336
2231
+ ],
2232
+ "pm_type": 1,
2233
+ "speed": 220
2234
+ }
2235
+ },
2236
+ {
2237
+ "rust": {
2238
+ "controller": 0,
2239
+ "event_sequence": 3735928559,
2240
+ "gravity_word": 4294966896,
2241
+ "packed": [
2242
+ 66559,
2243
+ 4278190336
2244
+ ],
2245
+ "pm_type": 1,
2246
+ "speed": 220
2247
+ },
2248
+ "source": {
2249
+ "controller": 0,
2250
+ "event_sequence": 3735928559,
2251
+ "gravity_word": 4294966896,
2252
+ "packed": [
2253
+ 66559,
2254
+ 4278190336
2255
+ ],
2256
+ "pm_type": 1,
2257
+ "speed": 220
2258
+ }
2259
+ },
2260
+ {
2261
+ "rust": {
2262
+ "controller": 0,
2263
+ "event_sequence": 3735928559,
2264
+ "gravity_word": 4294966896,
2265
+ "packed": [
2266
+ 66559,
2267
+ 4278190336
2268
+ ],
2269
+ "pm_type": 1,
2270
+ "speed": 220
2271
+ },
2272
+ "source": {
2273
+ "controller": 0,
2274
+ "event_sequence": 3735928559,
2275
+ "gravity_word": 4294966896,
2276
+ "packed": [
2277
+ 66559,
2278
+ 4278190336
2279
+ ],
2280
+ "pm_type": 1,
2281
+ "speed": 220
2282
+ }
2283
+ },
2284
+ {
2285
+ "rust": {
2286
+ "controller": 0,
2287
+ "event_sequence": 3735928559,
2288
+ "gravity_word": 400,
2289
+ "packed": [
2290
+ 66559,
2291
+ 4278190336
2292
+ ],
2293
+ "pm_type": 1,
2294
+ "speed": 220
2295
+ },
2296
+ "source": {
2297
+ "controller": 0,
2298
+ "event_sequence": 3735928559,
2299
+ "gravity_word": 400,
2300
+ "packed": [
2301
+ 66559,
2302
+ 4278190336
2303
+ ],
2304
+ "pm_type": 1,
2305
+ "speed": 220
2306
+ }
2307
+ }
2308
+ ],
2309
+ "source_report": "docs/research/qvm-client-movement-setup.json",
2310
+ "source_report_sha256": "e23ce451e1fca3e88deb600ee2ec673802b3161d6857b63d56c2604e3de39af9"
2311
+ }
docs/research/rust-health-impulse.json CHANGED
@@ -2985,7 +2985,7 @@
2985
  "exit_code": 2
2986
  }
2987
  ],
2988
- "rust_unit_tests": 236,
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": 238,
2989
  "source_report": "docs/research/qvm-health-impulse.json",
2990
  "source_report_sha256": "625fd8064004ea6dbdf398d51d0af844d9c635ff04c0a0790886dddb6ab81e71"
2991
  }
scripts/analyze_rust_client_movement_setup.py ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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-client-processing'],check=True,capture_output=True)
9
+ binary=Path(os.environ.get('CARGO_TARGET_DIR','target'))/'debug'/'urt-client-processing'
10
+ path=Path('docs/research/qvm-client-movement-setup.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 ['pm_type', 'gravity_word', 'speed', 'controller', 'packed', 'event_sequence']},rust=result(binary,'movement',encode(p['input']))))
13
+ write_json(Path('docs/research/rust-client-movement-setup.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
+ def encode(a):
16
+ from analyze_qvm_acceleration import word
17
+ return [a['pause'],a['noclip'],a['health'],a['controller'],word(a['gravity']),word(a['factor']),*a['packs'],a['event_sequence']]
18
+ if __name__=='__main__':main()
scripts/test_rust_client_movement_setup.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-client-movement-setup.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-client-movement-setup.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
@@ -3622,3 +3622,25 @@ report scripts/analyze_qvm_client_movement_setup.py docs/research/qvm-client-mov
3622
  edge docs/research/qvm-client-movement-setup.json scripts/test_qvm_client_movement_setup.py
3623
  group qvm-client-movement-setup scripts/analyze_qvm_client_movement_setup.py
3624
  edge scripts/analyze_qvm_client_movement_setup.py scripts/analyze_qvm_resumer_audit.py
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3622
  edge docs/research/qvm-client-movement-setup.json scripts/test_qvm_client_movement_setup.py
3623
  group qvm-client-movement-setup scripts/analyze_qvm_client_movement_setup.py
3624
  edge scripts/analyze_qvm_client_movement_setup.py scripts/analyze_qvm_resumer_audit.py
3625
+ report scripts/analyze_rust_client_movement_setup.py docs/research/rust-client-movement-setup.json
3626
+ edge docs/research/rust-client-movement-setup.json scripts/test_rust_client_movement_setup.py
3627
+ group rust-client-movement-setup scripts/analyze_rust_client_movement_setup.py
3628
+ edge scripts/analyze_rust_client_movement_setup.py scripts/analyze_qvm_resumer_audit.py
3629
+ edge Cargo.toml scripts/analyze_rust_client_movement_setup.py
3630
+ edge Cargo.lock scripts/analyze_rust_client_movement_setup.py
3631
+ edge crates/urt-gameplay/Cargo.toml scripts/analyze_rust_client_movement_setup.py
3632
+ edge crates/urt-gameplay/src/lib.rs scripts/analyze_rust_client_movement_setup.py
3633
+ edge crates/urt-gameplay/src/filter_loading.rs scripts/analyze_rust_client_movement_setup.py
3634
+ edge crates/urt-gameplay/src/filter_lifecycle.rs scripts/analyze_rust_client_movement_setup.py
3635
+ edge crates/urt-gameplay/src/native_policy.rs scripts/analyze_rust_client_movement_setup.py
3636
+ edge crates/urt-gameplay/src/bin/urt-filter-loading.rs scripts/analyze_rust_client_movement_setup.py
3637
+ edge crates/urt-gameplay/src/qvm_format.rs scripts/analyze_rust_client_movement_setup.py
3638
+ edge docs/research/qvm-client-movement-setup.json scripts/analyze_rust_client_movement_setup.py
3639
+ group rust-client-movement-setup scripts/analyze_rust_health_impulse.py
3640
+ group gameplay scripts/analyze_rust_client_movement_setup.py
3641
+ edge crates/urt-gameplay/src/filter_commands.rs scripts/analyze_rust_client_movement_setup.py
3642
+ edge crates/urt-gameplay/src/bin/urt-filter-commands.rs scripts/analyze_rust_client_movement_setup.py
3643
+ edge crates/urt-gameplay/src/client_timer.rs scripts/analyze_rust_client_movement_setup.py
3644
+ edge crates/urt-gameplay/src/bin/urt-client-timer.rs scripts/analyze_rust_client_movement_setup.py
3645
+ edge crates/urt-gameplay/src/client_processing.rs scripts/analyze_rust_client_movement_setup.py
3646
+ edge crates/urt-gameplay/src/bin/urt-client-processing.rs scripts/analyze_rust_client_movement_setup.py