gameplay: source impulse contract
Browse files- Cargo.lock +4 -0
- Cargo.toml +1 -1
- crates/urt-gameplay/Cargo.toml +5 -0
- crates/urt-gameplay/README.md +12 -0
- crates/urt-gameplay/src/bin/urt-impulse.rs +45 -0
- crates/urt-gameplay/src/lib.rs +146 -0
- docs/ASSET_PIPELINE_TODO.md +6 -0
- docs/FINDINGS.md +6 -0
- docs/PROVISIONAL_TODO.md +6 -0
- docs/RESEARCH_LEDGER.md +13 -0
- docs/REVERSE_ENGINEERING_TODO.md +7 -1
- docs/RUST_BEVY_SOLARI_TODO.md +5 -0
- docs/TESTING.md +3 -3
- docs/research/QVM_CONTACT_HEALTH_BATCH.md +3 -0
- docs/research/QVM_HEALTH_RUST_BATCH.md +51 -0
- docs/research/README.md +6 -0
- docs/research/RUST_HEALTH_IMPULSE.md +7 -0
- docs/research/rust-health-impulse.json +2991 -0
- scripts/analyze_rust_health_impulse.py +16 -0
- scripts/test_rust_health_impulse.py +16 -0
- xtask/checks.tsv +8 -0
- xtask/src/lib.rs +16 -2
Cargo.lock
CHANGED
|
@@ -6,6 +6,10 @@ version = 4
|
|
| 6 |
name = "urt-assets"
|
| 7 |
version = "0.1.0"
|
| 8 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 9 |
[[package]]
|
| 10 |
name = "xtask"
|
| 11 |
version = "0.1.0"
|
|
|
|
| 6 |
name = "urt-assets"
|
| 7 |
version = "0.1.0"
|
| 8 |
|
| 9 |
+
[[package]]
|
| 10 |
+
name = "urt-gameplay"
|
| 11 |
+
version = "0.1.0"
|
| 12 |
+
|
| 13 |
[[package]]
|
| 14 |
name = "xtask"
|
| 15 |
version = "0.1.0"
|
Cargo.toml
CHANGED
|
@@ -1,3 +1,3 @@
|
|
| 1 |
[workspace]
|
| 2 |
-
members = ["crates/urt-assets", "xtask"]
|
| 3 |
resolver = "3"
|
|
|
|
| 1 |
[workspace]
|
| 2 |
+
members = ["crates/urt-assets", "crates/urt-gameplay", "xtask"]
|
| 3 |
resolver = "3"
|
crates/urt-gameplay/Cargo.toml
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
[package]
|
| 2 |
+
name = "urt-gameplay"
|
| 3 |
+
version = "0.1.0"
|
| 4 |
+
edition = "2024"
|
| 5 |
+
publish = false
|
crates/urt-gameplay/README.md
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# urt-gameplay
|
| 2 |
+
|
| 3 |
+
Dependency-free recovered gameplay primitives for the Rust rewrite. The first primitive ports QVM213009 velocity/timer behavior with source-order float32 operations. It accepts a supplied direction and preserves source guards, timer clamp and flag ordering.
|
| 4 |
+
|
| 5 |
+
```sh
|
| 6 |
+
cargo test --offline --package urt-gameplay
|
| 7 |
+
cargo xtask test-group gameplay
|
| 8 |
+
```
|
| 9 |
+
|
| 10 |
+
The CLI `urt-impulse` accepts unsigned words (client, knockback bits, scale bits, timer, flags, direction bits, velocity bits) and emits exact output words. It is a validation tool, not a game executable. Active nonfinite inputs/results and out-of-range integer conversion are rejected; their original runtime semantics remain unverified. Inactive no-client/zero-knockback guards preserve input state.
|
| 11 |
+
|
| 12 |
+
[Original source contract](../../docs/research/QVM_HEALTH_IMPULSE.md) and [Rust/source parity](../../docs/research/RUST_HEALTH_IMPULSE.md) retain the finite fixture scope. No Bevy component adapter, health/death system, native runtime or Solari rendering is included. Local validation is on macOS; Linux execution remains pending.
|
crates/urt-gameplay/src/bin/urt-impulse.rs
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
use urt_gameplay::{Motion, impulse};
|
| 2 |
+
fn main() {
|
| 3 |
+
if let Err(error) = run() {
|
| 4 |
+
eprintln!("{error}");
|
| 5 |
+
std::process::exit(2);
|
| 6 |
+
}
|
| 7 |
+
}
|
| 8 |
+
fn run() -> Result<(), String> {
|
| 9 |
+
let words: Vec<u32> = std::env::args()
|
| 10 |
+
.skip(1)
|
| 11 |
+
.map(|s| s.parse::<u32>().map_err(|e| e.to_string()))
|
| 12 |
+
.collect::<Result<_, _>>()?;
|
| 13 |
+
if words.len() != 11 || words[0] > 1 {
|
| 14 |
+
return Err("expected client(0/1), kb/scale float bits, timer/flags words, three direction and three velocity float words".into());
|
| 15 |
+
}
|
| 16 |
+
let r = impulse(
|
| 17 |
+
words[0] != 0,
|
| 18 |
+
[
|
| 19 |
+
f32::from_bits(words[5]),
|
| 20 |
+
f32::from_bits(words[6]),
|
| 21 |
+
f32::from_bits(words[7]),
|
| 22 |
+
],
|
| 23 |
+
f32::from_bits(words[2]),
|
| 24 |
+
f32::from_bits(words[1]),
|
| 25 |
+
Motion {
|
| 26 |
+
timer: words[3] as i32,
|
| 27 |
+
flags: words[4],
|
| 28 |
+
velocity: [
|
| 29 |
+
f32::from_bits(words[8]),
|
| 30 |
+
f32::from_bits(words[9]),
|
| 31 |
+
f32::from_bits(words[10]),
|
| 32 |
+
],
|
| 33 |
+
},
|
| 34 |
+
)
|
| 35 |
+
.map_err(|e| format!("unsupported input: {e:?}"))?;
|
| 36 |
+
println!(
|
| 37 |
+
"{{\"12\":{},\"16\":{},\"32\":{},\"36\":{},\"40\":{}}}",
|
| 38 |
+
r.flags,
|
| 39 |
+
r.timer as u32,
|
| 40 |
+
r.velocity[0].to_bits(),
|
| 41 |
+
r.velocity[1].to_bits(),
|
| 42 |
+
r.velocity[2].to_bits()
|
| 43 |
+
);
|
| 44 |
+
Ok(())
|
| 45 |
+
}
|
crates/urt-gameplay/src/lib.rs
ADDED
|
@@ -0,0 +1,146 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
//! Recovered finite-domain gameplay contracts; no engine or rendering dependency.
|
| 2 |
+
#[derive(Clone, Copy, Debug, PartialEq)]
|
| 3 |
+
pub struct Motion {
|
| 4 |
+
pub velocity: [f32; 3],
|
| 5 |
+
pub timer: i32,
|
| 6 |
+
pub flags: u32,
|
| 7 |
+
}
|
| 8 |
+
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
|
| 9 |
+
pub enum ImpulseError {
|
| 10 |
+
NonFinite,
|
| 11 |
+
TimerOutOfRange,
|
| 12 |
+
}
|
| 13 |
+
/// QVM213009: direction is supplied, not normalized here. Preserve f32 order.
|
| 14 |
+
/// Active paths reject nonfinite values/results and unsupported CVFI domains.
|
| 15 |
+
pub fn impulse(
|
| 16 |
+
has_client: bool,
|
| 17 |
+
direction: [f32; 3],
|
| 18 |
+
scale: f32,
|
| 19 |
+
knockback: f32,
|
| 20 |
+
state: Motion,
|
| 21 |
+
) -> Result<Motion, ImpulseError> {
|
| 22 |
+
if !has_client || knockback == 0.0 {
|
| 23 |
+
return Ok(state);
|
| 24 |
+
}
|
| 25 |
+
if !direction
|
| 26 |
+
.iter()
|
| 27 |
+
.chain(state.velocity.iter())
|
| 28 |
+
.all(|v| v.is_finite())
|
| 29 |
+
|| !scale.is_finite()
|
| 30 |
+
|| !knockback.is_finite()
|
| 31 |
+
{
|
| 32 |
+
return Err(ImpulseError::NonFinite);
|
| 33 |
+
}
|
| 34 |
+
let coefficient = (scale * knockback) / 200.0;
|
| 35 |
+
let mut next = state;
|
| 36 |
+
for (velocity, component) in next.velocity.iter_mut().zip(direction) {
|
| 37 |
+
*velocity += component * coefficient;
|
| 38 |
+
}
|
| 39 |
+
if !next.velocity.iter().all(|v| v.is_finite()) {
|
| 40 |
+
return Err(ImpulseError::NonFinite);
|
| 41 |
+
}
|
| 42 |
+
if state.timer == 0 {
|
| 43 |
+
let timer = knockback * 2.0;
|
| 44 |
+
if !timer.is_finite()
|
| 45 |
+
|| (timer as f64) < (i32::MIN as f64)
|
| 46 |
+
|| (timer as f64) > (i32::MAX as f64)
|
| 47 |
+
{
|
| 48 |
+
return Err(ImpulseError::TimerOutOfRange);
|
| 49 |
+
}
|
| 50 |
+
next.timer = (timer as i32).clamp(50, 200);
|
| 51 |
+
next.flags |= 64;
|
| 52 |
+
}
|
| 53 |
+
Ok(next)
|
| 54 |
+
}
|
| 55 |
+
#[cfg(test)]
|
| 56 |
+
mod tests {
|
| 57 |
+
use super::*;
|
| 58 |
+
fn state() -> Motion {
|
| 59 |
+
Motion {
|
| 60 |
+
velocity: [1., -2., 3.],
|
| 61 |
+
timer: 0,
|
| 62 |
+
flags: 8,
|
| 63 |
+
}
|
| 64 |
+
}
|
| 65 |
+
#[test]
|
| 66 |
+
fn zero_and_no_client_preserve_state() {
|
| 67 |
+
assert_eq!(
|
| 68 |
+
impulse(true, [1.; 3], 1000., -0., state()).unwrap(),
|
| 69 |
+
state()
|
| 70 |
+
);
|
| 71 |
+
assert_eq!(
|
| 72 |
+
impulse(false, [f32::NAN; 3], f32::NAN, f32::NAN, state()).unwrap(),
|
| 73 |
+
state()
|
| 74 |
+
);
|
| 75 |
+
}
|
| 76 |
+
#[test]
|
| 77 |
+
fn source_order_fixture() {
|
| 78 |
+
let r = impulse(true, [0.6, -0.8, 0.25], 1000., 25., state()).unwrap();
|
| 79 |
+
assert_eq!(
|
| 80 |
+
r,
|
| 81 |
+
Motion {
|
| 82 |
+
velocity: [76., -102., 34.25],
|
| 83 |
+
timer: 50,
|
| 84 |
+
flags: 72
|
| 85 |
+
}
|
| 86 |
+
);
|
| 87 |
+
}
|
| 88 |
+
#[test]
|
| 89 |
+
fn timer_bounds() {
|
| 90 |
+
assert_eq!(impulse(true, [0.; 3], 0., 0.25, state()).unwrap().timer, 50);
|
| 91 |
+
assert_eq!(
|
| 92 |
+
impulse(true, [0.; 3], 0., 101., state()).unwrap().timer,
|
| 93 |
+
200
|
| 94 |
+
);
|
| 95 |
+
}
|
| 96 |
+
#[test]
|
| 97 |
+
fn existing_timer_keeps_flags_but_changes_velocity() {
|
| 98 |
+
let s = Motion {
|
| 99 |
+
timer: -1,
|
| 100 |
+
..state()
|
| 101 |
+
};
|
| 102 |
+
let r = impulse(true, [1., 0., 0.], 1000., 25., s).unwrap();
|
| 103 |
+
assert_eq!(r.timer, -1);
|
| 104 |
+
assert_eq!(r.flags, 8);
|
| 105 |
+
assert_eq!(r.velocity, [126., -2., 3.]);
|
| 106 |
+
}
|
| 107 |
+
#[test]
|
| 108 |
+
fn negative_knockback_is_not_clamped_to_zero() {
|
| 109 |
+
let r = impulse(true, [0., 1., 0.], 1000., -2., state()).unwrap();
|
| 110 |
+
assert_eq!(r.velocity, [1., -12., 3.]);
|
| 111 |
+
assert_eq!(r.timer, 50);
|
| 112 |
+
}
|
| 113 |
+
#[test]
|
| 114 |
+
fn existing_flag_bits_are_preserved() {
|
| 115 |
+
let r = impulse(
|
| 116 |
+
true,
|
| 117 |
+
[0.; 3],
|
| 118 |
+
0.,
|
| 119 |
+
1.,
|
| 120 |
+
Motion {
|
| 121 |
+
flags: 0x80000008,
|
| 122 |
+
..state()
|
| 123 |
+
},
|
| 124 |
+
)
|
| 125 |
+
.unwrap();
|
| 126 |
+
assert_eq!(r.flags, 0x80000048);
|
| 127 |
+
}
|
| 128 |
+
#[test]
|
| 129 |
+
fn active_nonfinite_and_overflow_are_rejected() {
|
| 130 |
+
assert_eq!(
|
| 131 |
+
impulse(true, [f32::NAN; 3], 1., 1., state()),
|
| 132 |
+
Err(ImpulseError::NonFinite)
|
| 133 |
+
);
|
| 134 |
+
assert_eq!(
|
| 135 |
+
impulse(true, [f32::MAX; 3], f32::MAX, 100., state()),
|
| 136 |
+
Err(ImpulseError::NonFinite)
|
| 137 |
+
);
|
| 138 |
+
}
|
| 139 |
+
#[test]
|
| 140 |
+
fn unsupported_integer_conversion_is_rejected() {
|
| 141 |
+
assert_eq!(
|
| 142 |
+
impulse(true, [0.; 3], 0., f32::MAX, state()),
|
| 143 |
+
Err(ImpulseError::TimerOutOfRange)
|
| 144 |
+
);
|
| 145 |
+
}
|
| 146 |
+
}
|
docs/ASSET_PIPELINE_TODO.md
CHANGED
|
@@ -865,3 +865,9 @@ Research progress: RE-732 [report](research/QVM_HEALTH_COMPLETE.md); original as
|
|
| 865 |
|
| 866 |
|
| 867 |
Research progress: RE-733 [report](research/QVM_CONTACT_HEALTH.md); original assets unchanged.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 865 |
|
| 866 |
|
| 867 |
Research progress: RE-733 [report](research/QVM_CONTACT_HEALTH.md); original assets unchanged.
|
| 868 |
+
|
| 869 |
+
|
| 870 |
+
Research progress: RE-734 [report](research/RUST_HEALTH_IMPULSE.md); original assets unchanged.
|
| 871 |
+
|
| 872 |
+
|
| 873 |
+
RE-725–734 batch: [health, contact and Rust impulse findings](research/QVM_HEALTH_RUST_BATCH.md). Complete finite211239/213009 and original-context contact composition now execute with explicit unresolved callback/native boundaries. The Rust impulse primitive matches96 fixtures; full Bevy/Solari/platform gameplay remains open. RE-724 is partially advanced and RE-735 tracks subsequent work.
|
docs/FINDINGS.md
CHANGED
|
@@ -1211,3 +1211,9 @@ RE-714–723 batch complete: [complete contact and health prefixes](research/QVM
|
|
| 1211 |
|
| 1212 |
|
| 1213 |
**RE-733 — Complete original-model contact to actual health:** Original-model contact now executes actual211239 health/impulse effects while preserving contact return, event payload and special-weapon4 bypass behavior; default captured-health reports remain unchanged. [Evidence](research/QVM_CONTACT_HEALTH.md).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1211 |
|
| 1212 |
|
| 1213 |
**RE-733 — Complete original-model contact to actual health:** Original-model contact now executes actual211239 health/impulse effects while preserving contact return, event payload and special-weapon4 bypass behavior; default captured-health reports remain unchanged. [Evidence](research/QVM_CONTACT_HEALTH.md).
|
| 1214 |
+
|
| 1215 |
+
|
| 1216 |
+
**RE-734 — Rust source-order health impulse primitive:** Dependency-free urt-gameplay ports213009 velocity/timer rules; exact word comparisons match all96 source fixtures, with active nonfinite/unsupported integer-conversion domains rejected explicitly. [Evidence](research/RUST_HEALTH_IMPULSE.md).
|
| 1217 |
+
|
| 1218 |
+
|
| 1219 |
+
RE-725–734 batch: [health, contact and Rust impulse findings](research/QVM_HEALTH_RUST_BATCH.md). Complete finite211239/213009 and original-context contact composition now execute with explicit unresolved callback/native boundaries. The Rust impulse primitive matches96 fixtures; full Bevy/Solari/platform gameplay remains open. RE-724 is partially advanced and RE-735 tracks subsequent work.
|
docs/PROVISIONAL_TODO.md
CHANGED
|
@@ -1200,3 +1200,9 @@ Research progress: RE-732 [report](research/QVM_HEALTH_COMPLETE.md); full native
|
|
| 1200 |
|
| 1201 |
|
| 1202 |
Research progress: RE-733 [report](research/QVM_CONTACT_HEALTH.md); full native/platform/game scope remains open.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1200 |
|
| 1201 |
|
| 1202 |
Research progress: RE-733 [report](research/QVM_CONTACT_HEALTH.md); full native/platform/game scope remains open.
|
| 1203 |
+
|
| 1204 |
+
|
| 1205 |
+
Research progress: RE-734 [report](research/RUST_HEALTH_IMPULSE.md); full native/platform/game scope remains open.
|
| 1206 |
+
|
| 1207 |
+
|
| 1208 |
+
RE-725–734 batch: [health, contact and Rust impulse findings](research/QVM_HEALTH_RUST_BATCH.md). Complete finite211239/213009 and original-context contact composition now execute with explicit unresolved callback/native boundaries. The Rust impulse primitive matches96 fixtures; full Bevy/Solari/platform gameplay remains open. RE-724 is partially advanced and RE-735 tracks subsequent work.
|
docs/RESEARCH_LEDGER.md
CHANGED
|
@@ -1308,3 +1308,16 @@ Complete211239 now composes gates, routing, normalization, bookkeeping, special
|
|
| 1308 |
## 2026-10-21 — RE-733 Complete original-model contact to actual health
|
| 1309 |
|
| 1310 |
Original-model contact now executes actual211239 health/impulse effects while preserving contact return, event payload and special-weapon4 bypass behavior; default captured-health reports remain unchanged. Focused `cargo xtask test-group contact` passes (163 Python tests); selected reports regenerate twice byte-identically, with storage, links and whitespace guards. New report: 1079948 bytes. Full-suite validation is deferred to the tenth batch commit. No original assets, Rust runtime or shared VM evaluator changed.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1308 |
## 2026-10-21 — RE-733 Complete original-model contact to actual health
|
| 1309 |
|
| 1310 |
Original-model contact now executes actual211239 health/impulse effects while preserving contact return, event payload and special-weapon4 bypass behavior; default captured-health reports remain unchanged. Focused `cargo xtask test-group contact` passes (163 Python tests); selected reports regenerate twice byte-identically, with storage, links and whitespace guards. New report: 1079948 bytes. Full-suite validation is deferred to the tenth batch commit. No original assets, Rust runtime or shared VM evaluator changed.
|
| 1311 |
+
|
| 1312 |
+
|
| 1313 |
+
## 2026-10-21 — RE-734 Rust source-order health impulse primitive
|
| 1314 |
+
|
| 1315 |
+
Dependency-free urt-gameplay ports213009 velocity/timer rules; exact word comparisons match all96 source fixtures, with active nonfinite/unsupported integer-conversion domains rejected explicitly. Focused `cargo xtask test-group gameplay` passes (4 Python tests); selected reports regenerate twice byte-identically, with storage, links and whitespace guards. New report: 55810 bytes. Full-suite validation is deferred to the tenth batch commit. Adds the Rust impulse primitive; original assets and shared VM evaluator remain unchanged.
|
| 1316 |
+
|
| 1317 |
+
|
| 1318 |
+
RE-734 also passes28 focused xtask unit tests after replacing brittle fixed health-group counts with required-consumer assertions. The [RE-725–734 overview](research/QVM_HEALTH_RUST_BATCH.md) records per-task reduced checks and the full-suite gate scheduled after commit ten. Original assets and the shared VM evaluator are unchanged.
|
| 1319 |
+
|
| 1320 |
+
|
| 1321 |
+
## 2026-10-21 — RE-725–734 batch gate after commit ten
|
| 1322 |
+
|
| 1323 |
+
Exactly ten task commits follow1550ce07. Each task passed focused cargo xtask checks before its commit. The one full `cargo xtask test-full --since 1550ce07` run after commit ten passes all1,383 Python tests and46 Rust tests (10 assets,28 runner,8 gameplay). Twenty affected producers regenerate twice byte-identically; all committed reports remain unchanged after the run. Storage/filter, documentation links and staged/unstaged whitespace guards pass. Only this result documentation is amended into the tenth task commit; no second full run is needed for the metadata update. Original assets/shared VM evaluator remain unchanged; RE-735 records unresolved callback/native/shared-pellet/platform work.
|
docs/REVERSE_ENGINEERING_TODO.md
CHANGED
|
@@ -1215,7 +1215,7 @@ Purpose: turn the supplied installation into an evidence-backed specification of
|
|
| 1215 |
- [x] RE-723 Health normalization and knockback selection ([report](research/QVM_HEALTH_KNOCKBACK.md)).
|
| 1216 |
|
| 1217 |
|
| 1218 |
-
- [ ] RE-724 Complete health211239 and impulse213009, compose actual contact/health/shared-pellet paths with original-model geometry, capture native parity and advance interactive Rust/Bevy/Solari on macOS/Linux. See the [next ten tasks](research/QVM_CONTACT_HEALTH_BATCH.md#remaining-limits-and-next-ten-tasks).
|
| 1219 |
|
| 1220 |
|
| 1221 |
- [x] RE-725 Health pointer fallback and target routing ([report](research/QVM_HEALTH_ROUTING.md)).
|
|
@@ -1243,3 +1243,9 @@ Purpose: turn the supplied installation into an evidence-backed specification of
|
|
| 1243 |
|
| 1244 |
|
| 1245 |
- [x] RE-733 Complete original-model contact to actual health ([report](research/QVM_CONTACT_HEALTH.md)).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1215 |
- [x] RE-723 Health normalization and knockback selection ([report](research/QVM_HEALTH_KNOCKBACK.md)).
|
| 1216 |
|
| 1217 |
|
| 1218 |
+
- [ ] RE-724 Complete health211239 and impulse213009, compose actual contact/health/shared-pellet paths with original-model geometry, capture native parity and advance interactive Rust/Bevy/Solari on macOS/Linux. Partially advanced by RE-725–734: complete finite health/contact and a Rust impulse primitive are recovered; callbacks/shared-pellet/native/platform scope remains open. See the [next ten tasks](research/QVM_CONTACT_HEALTH_BATCH.md#remaining-limits-and-next-ten-tasks).
|
| 1219 |
|
| 1220 |
|
| 1221 |
- [x] RE-725 Health pointer fallback and target routing ([report](research/QVM_HEALTH_ROUTING.md)).
|
|
|
|
| 1243 |
|
| 1244 |
|
| 1245 |
- [x] RE-733 Complete original-model contact to actual health ([report](research/QVM_CONTACT_HEALTH.md)).
|
| 1246 |
+
|
| 1247 |
+
|
| 1248 |
+
- [x] RE-734 Rust source-order health impulse primitive ([report](research/RUST_HEALTH_IMPULSE.md)).
|
| 1249 |
+
|
| 1250 |
+
|
| 1251 |
+
- [ ] RE-735 Resolve actual health callbacks/interception, continue shared/pellet health composition, port additional simulation contracts into Rust and validate native/platform/runtime behavior. See the [next tasks](research/QVM_HEALTH_RUST_BATCH.md#remaining-limits-and-next-tasks).
|
docs/RUST_BEVY_SOLARI_TODO.md
CHANGED
|
@@ -237,3 +237,8 @@ These are design candidates, not files already implemented. Share authoritative
|
|
| 237 |
- [ ] RW-171 Establish signing/notarization policy where applicable, reproducible release manifests, checksums, and permitted asset distribution.
|
| 238 |
- [ ] RW-172 Document installation, controls, conversion, development, server administration, compatibility, hardware, performance, and troubleshooting.
|
| 239 |
- [ ] RW-173 Complete the full final validation gate, close required-content/behavior/rendering blockers, and publish a versioned fidelity/compatibility report.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 237 |
- [ ] RW-171 Establish signing/notarization policy where applicable, reproducible release manifests, checksums, and permitted asset distribution.
|
| 238 |
- [ ] RW-172 Document installation, controls, conversion, development, server administration, compatibility, hardware, performance, and troubleshooting.
|
| 239 |
- [ ] RW-173 Complete the full final validation gate, close required-content/behavior/rendering blockers, and publish a versioned fidelity/compatibility report.
|
| 240 |
+
|
| 241 |
+
|
| 242 |
+
## Recovered gameplay primitive — RE-734
|
| 243 |
+
|
| 244 |
+
The dependency-free [urt-gameplay impulse port](../crates/urt-gameplay/README.md) matches96 source213009 fixtures exactly, with eight Rust unit tests. This is the first finite gameplay primitive; full Rust health/death, Bevy components, native parity, Solari rendering and macOS/Linux gameplay remain open. See the [batch findings](research/QVM_HEALTH_RUST_BATCH.md).
|
docs/TESTING.md
CHANGED
|
@@ -28,7 +28,7 @@ cargo xtask test-full --since <batch-base>
|
|
| 28 |
|
| 29 |
`--path scripts/qvm_health_support.py` adds an explicit changed input to `test-changed` or `test-full`, useful for previews without editing a file. Paths are repository-relative. `--dry-run` prints the selected report producers, test modules, reasons and fallback conditions without executing analyzers/tests/checks. Cargo may still compile the runner.
|
| 30 |
|
| 31 |
-
Use focused validation before each task commit
|
| 32 |
|
| 33 |
Cargo, rustc, Python 3 and Git must be available. Set `RUSTC` if the compiler is outside PATH, and `PYTHON` to override the default `python3` executable. Set up the repository's [storage filters](STORAGE.md) first: every executed validation requires `storage_policy.py check --require-setup`. Asset corpus checks require the local extracted assets. Native analyzers also require their original inputs, pinned reference files and existing native-analysis tools. The runner does not fetch those prerequisites or install dependencies.
|
| 34 |
|
|
@@ -36,13 +36,13 @@ Cargo, rustc, Python 3 and Git must be available. Set `RUSTC` if the compiler is
|
|
| 36 |
|
| 37 |
The graph follows input → consumer edges through local Python imports, report producers/outputs, report readers and imported test oracles. Changes to a generated report also select its producer, so testing cannot silently accept a hand-edited cached report. Changes under `crates/urt-assets/` select its Rust/Python corpus parity producer and downstream consumers, plus Rust workspace tests.
|
| 38 |
|
| 39 |
-
For example, `qvm_health_support.py`
|
| 40 |
|
| 41 |
The graph combines:
|
| 42 |
|
| 43 |
- Current Python syntax, inspected with `ast` without importing repository modules. This handles imports and literal report reads/writes, including test-to-test helper dependencies.
|
| 44 |
- The versioned [registry](../xtask/checks.tsv), which declares report ownership, dynamic path dependencies, reviewed multi-output writers and named groups.
|
| 45 |
-
-
|
| 46 |
|
| 47 |
Groups currently include `health`, `contact`, `damage`, `md3`, `movement`, `native`, `network` and `storage`. A group is a set of graph roots and includes downstream dependents; it is not an isolated folder or a promise to exclude dependent systems. Imports can make a broad native group reach most research tests.
|
| 48 |
|
|
|
|
| 28 |
|
| 29 |
`--path scripts/qvm_health_support.py` adds an explicit changed input to `test-changed` or `test-full`, useful for previews without editing a file. Paths are repository-relative. `--dry-run` prints the selected report producers, test modules, reasons and fallback conditions without executing analyzers/tests/checks. Cargo may still compile the runner.
|
| 30 |
|
| 31 |
+
Use focused validation before each task commit. For ten-commit batches, run `test-full --since <batch-base>` once after the tenth commit and before pushing. If registry/workspace edits would force broad automatic fallback during a batch, use a reviewed explicit group plus relevant package tests, then retain the full batch gate; do not disable fallback or omit affected shared-helper consumers. Full native macOS/Linux runtime, rendering and release validation remain separate project gates; this runner does not execute the original game or establish those milestones.
|
| 32 |
|
| 33 |
Cargo, rustc, Python 3 and Git must be available. Set `RUSTC` if the compiler is outside PATH, and `PYTHON` to override the default `python3` executable. Set up the repository's [storage filters](STORAGE.md) first: every executed validation requires `storage_policy.py check --require-setup`. Asset corpus checks require the local extracted assets. Native analyzers also require their original inputs, pinned reference files and existing native-analysis tools. The runner does not fetch those prerequisites or install dependencies.
|
| 34 |
|
|
|
|
| 36 |
|
| 37 |
The graph follows input → consumer edges through local Python imports, report producers/outputs, report readers and imported test oracles. Changes to a generated report also select its producer, so testing cannot silently accept a hand-edited cached report. Changes under `crates/urt-assets/` select its Rust/Python corpus parity producer and downstream consumers, plus Rust workspace tests.
|
| 38 |
|
| 39 |
+
For example, `qvm_health_support.py` selects the health-gates/knockback analyzers and their growing downstream health, contact and Rust parity consumers. Preview the current scope with `cargo xtask test-group health --dry-run`; group membership is not a fixed test count. A shared QVM evaluator or broad native parser change can correctly select most of the research suite. Selection is conservative at the Python module level, not individual function level.
|
| 40 |
|
| 41 |
The graph combines:
|
| 42 |
|
| 43 |
- Current Python syntax, inspected with `ast` without importing repository modules. This handles imports and literal report reads/writes, including test-to-test helper dependencies.
|
| 44 |
- The versioned [registry](../xtask/checks.tsv), which declares report ownership, dynamic path dependencies, reviewed multi-output writers and named groups.
|
| 45 |
+
- Rust crate-to-corpus validation rules in the runner and registry. The gameplay crate declares its source/manifest dependencies explicitly in the registry.
|
| 46 |
|
| 47 |
Groups currently include `health`, `contact`, `damage`, `md3`, `movement`, `native`, `network` and `storage`. A group is a set of graph roots and includes downstream dependents; it is not an isolated folder or a promise to exclude dependent systems. Imports can make a broad native group reach most research tests.
|
| 48 |
|
docs/research/QVM_CONTACT_HEALTH_BATCH.md
CHANGED
|
@@ -43,3 +43,6 @@ RE-713 is partially advanced: complete contact composition and health prefixes a
|
|
| 43 |
8. Continue shared293732 trace/contact/statistics and successful295018 pellet aggregation using original-model geometry.
|
| 44 |
9. Recover native loader18183 ownership/endian/failure and capture original executable/DLL parity for geometry, math, inventory and live animation/clock domains.
|
| 45 |
10. Port verified asset/interpolation/geometry contracts into Rust, integrate Bevy/Solari, and validate the first interactive macOS/Linux slice with the remaining map/material/texture/audio/network/lifecycle/packaging work.
|
|
|
|
|
|
|
|
|
|
|
|
| 43 |
8. Continue shared293732 trace/contact/statistics and successful295018 pellet aggregation using original-model geometry.
|
| 44 |
9. Recover native loader18183 ownership/endian/failure and capture original executable/DLL parity for geometry, math, inventory and live animation/clock domains.
|
| 45 |
10. Port verified asset/interpolation/geometry contracts into Rust, integrate Bevy/Solari, and validate the first interactive macOS/Linux slice with the remaining map/material/texture/audio/network/lifecycle/packaging work.
|
| 46 |
+
|
| 47 |
+
|
| 48 |
+
Follow-up: [RE-725–734](QVM_HEALTH_RUST_BATCH.md) composes complete finite health/contact flow and ports source213009 into Rust. Concrete callbacks, native parity, shared/pellet callers and playable platforms remain open; RE-735 tracks subsequent work.
|
docs/research/QVM_HEALTH_RUST_BATCH.md
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Health effects, contact composition and Rust impulse: RE-725–734
|
| 2 |
+
|
| 3 |
+
Ten separately committed tasks extend the [contact/health-prefix batch](QVM_CONTACT_HEALTH_BATCH.md). Complete211239 now runs through ordinary/special health changes and actual213009 impulses, and complete292545 composes it with cached original-model contexts. A dependency-free Rust gameplay crate ports the finite impulse contract. Captured callbacks and native/world/platform behavior remain open.
|
| 4 |
+
|
| 5 |
+
| Task | Completed scope | Evidence |
|
| 6 |
+
| --- | --- | --- |
|
| 7 |
+
| RE-725 | Pointer fallback and special target-kind routing | [Routing](QVM_HEALTH_ROUTING.md) |
|
| 8 |
+
| RE-726 | Attacker credit, minimum damage and client damage records | [Bookkeeping](QVM_HEALTH_CREDIT.md) |
|
| 9 |
+
| RE-727 | Magic-checksum classes, method filters and actual RNG | [Special targets](QVM_HEALTH_SPECIAL_TARGET.md) |
|
| 10 |
+
| RE-728 | Mode10 lethal interception and method24 override | [Interception](QVM_HEALTH_INTERCEPTS.md) |
|
| 11 |
+
| RE-729 | Ordinary subtraction, protected floor and actual meter child | [Mutation](QVM_HEALTH_MUTATION.md) |
|
| 12 |
+
| RE-730 | Packed meter cap, pain/death ABI and terminal ordering | [Terminal processing](QVM_HEALTH_TERMINAL.md) |
|
| 13 |
+
| RE-731 | Complete source velocity impulse and movement timer | [Impulse](QVM_HEALTH_IMPULSE.md) |
|
| 14 |
+
| RE-732 | Complete211239 with actual RNG/meter/impulse children | [Complete health](QVM_HEALTH_COMPLETE.md) |
|
| 15 |
+
| RE-733 | Original-model contact composed with actual health | [Contact to health](QVM_CONTACT_HEALTH.md) |
|
| 16 |
+
| RE-734 | Rust impulse library/CLI and exact source-word parity | [Rust port](RUST_HEALTH_IMPULSE.md) |
|
| 17 |
+
|
| 18 |
+
## Recovered behavior
|
| 19 |
+
|
| 20 |
+
Null inflictor/attacker pointers become the world record. Target kind4 with a nonmagic checksum diverts to a callback gated by target656 and object state, then exits. Accepted normal damage updates attacker credit and client damage records, clamps incoming integer damage to at least1 and publishes attacker/method/direction or origin before subtraction.
|
| 21 |
+
|
| 22 |
+
The magic checksum uses an original11-entry class jump table. Method34 forces health−999; other methods can be filtered, halved or replaced by1/2/3 damage using actual36717 seed updates and thresholds50/85. Mode10 can intercept lethal distinct-client damage through206128. Method24/global34066516 can request an impulse without ordinary subtraction. These intercepted/callback effects are captured, not supplied as successful gameplay outcomes.
|
| 23 |
+
|
| 24 |
+
Ordinary damage subtracts selected damage. A protected-client flag floors health at5 and updates flags/meter state before capturing152386. Actual211197 drains client184 by300×selected damage with floor0. Attacker/location and client208 health publish before terminal processing. The terminal entity health floor−999 does not republish client208, so the two fields can differ afterward. Packed client228 low16 values above500 become exactly500, clearing the upper word, except for method26. Pain/death callbacks use distinct argument layouts and ordering.
|
| 25 |
+
|
| 26 |
+
Complete213009 adds supplied direction×(global scale×knockback/200) in source float32 order. It skips null clients and float zero knockback. Velocity can change while an existing nonzero timer remains intact. A zero timer becomes truncating knockback×2 clamped to50–200 and movement flag64 is set. Direction normalization occurs earlier in211239; the impulse helper does not normalize.
|
| 27 |
+
|
| 28 |
+
The complete health oracle checks tracked entity/client fields, direction, attacker credit, seed and tracking state. Contact composition preserves original scalar returns and event payloads while applying actual health/impulse changes afterward. All35 cached contact cases retain their exact report provenance. The nonclient sample reads file-backed VM words104/220, both zero; this finite flat-VM case does not establish native null-pointer or live-world legality. Special weapon4 contact still bypasses ordinary health dispatch.
|
| 29 |
+
|
| 30 |
+
## Rust and validation policy
|
| 31 |
+
|
| 32 |
+
[urt-gameplay](../../crates/urt-gameplay/README.md) contains a dependency-free simulation primitive and word-oriented CLI. All96 source impulse fixtures match exactly; eight Rust unit tests cover guards, timer bounds, bit preservation, negative knockback and explicit domain rejection. Active nonfinite/output-overflow and unsupported float-to-integer domains reject rather than guessing original runtime behavior. No Bevy adapter, renderer or full Rust health/death system is introduced. Host validation is on macOS; Linux execution remains open.
|
| 33 |
+
|
| 34 |
+
Each task uses focused `cargo xtask test-group` validation before its commit, with two-pass affected report regeneration and storage/link/whitespace guards. Focused Python counts grow from12 to41 for the health group; the shared contact-helper change uses the contact group (163 tests). The Rust task uses the gameplay group (four Python parity tests plus its eight package tests) and28 focused xtask unit tests. No full workspace/suite run occurs before the tenth task commit. Registry ownership and groups are updated with each task; the representative xtask health check now requires known consumers without hard-coding a fixed group size.
|
| 35 |
+
|
| 36 |
+
The single full-suite gate ran after commit ten using `cargo xtask test-full --since 1550ce07`: all1,383 Python tests and46 Rust tests passed. Twenty affected report producers regenerated twice byte-identically, leaving the working tree clean. The Python baseline grows1341→1383; Rust now includes10 asset tests,28 runner tests and8 gameplay tests. Final task documentation is amended only to record these results. Original assets and the shared VM evaluator remain unchanged; earlier reports retain their default captured-child behavior.
|
| 37 |
+
|
| 38 |
+
## Remaining limits and next tasks
|
| 39 |
+
|
| 40 |
+
RE-724 is partially advanced. Complete function control flow and finite source contracts do not resolve the original registered callback implementations, native math/link/heap behavior, live-world geometry or platform/game completion. RE-735 tracks subsequent work:
|
| 41 |
+
|
| 42 |
+
1. Recover152386 protected updates and206128 mode10 interception effects beyond captured requests.
|
| 43 |
+
2. Resolve object/pain/death callback registrations and concrete implementations from actual entity/native evidence.
|
| 44 |
+
3. Validate full nonclient health and VM low-page reads, extreme integer/clock domains and native reference parity.
|
| 45 |
+
4. Compose shared293732 firing trace/contact/statistics through actual health and original-model geometry.
|
| 46 |
+
5. Recover successful295018 pellet aggregation and compose its target/location health effects.
|
| 47 |
+
6. Port verified health gates, damage selection and attribution into Rust with exact source fixtures.
|
| 48 |
+
7. Add Rust frame/tag/hierarchy/geometry contracts and explicit Bevy asset/VFS resolution for case and archive variants.
|
| 49 |
+
8. Recover native loader18183 ownership/endian/failure and confirm model lifetime contracts.
|
| 50 |
+
9. Capture original executable/DLL traces for geometry, math, callbacks, inventory and live frame/clock state.
|
| 51 |
+
10. Integrate and validate an interactive macOS/Linux Bevy/Solari slice, continuing maps/materials/textures/audio/network/lifecycle/packaging work.
|
docs/research/README.md
CHANGED
|
@@ -801,3 +801,9 @@ The extension collector adds five focused tests for native tail calls, command-r
|
|
| 801 |
|
| 802 |
|
| 803 |
[RE-733: Complete original-model contact to actual health](QVM_CONTACT_HEALTH.md).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 801 |
|
| 802 |
|
| 803 |
[RE-733: Complete original-model contact to actual health](QVM_CONTACT_HEALTH.md).
|
| 804 |
+
|
| 805 |
+
|
| 806 |
+
[RE-734: Rust source-order health impulse primitive](RUST_HEALTH_IMPULSE.md).
|
| 807 |
+
|
| 808 |
+
|
| 809 |
+
[RE-725–734 batch overview and subsequent tasks](QVM_HEALTH_RUST_BATCH.md).
|
docs/research/RUST_HEALTH_IMPULSE.md
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Rust source-order health impulse primitive
|
| 2 |
+
|
| 3 |
+
RE-734. Reproduce with `python3 scripts/analyze_rust_health_impulse.py`; validate with `cargo xtask test-group gameplay`. See the [machine report](rust-health-impulse.json).
|
| 4 |
+
|
| 5 |
+
The new dependency-free Rust crate urt-gameplay implements the finite213009 impulse contract using source-order float32 arithmetic, short-circuit guards, timer clamp and flag preservation. The CLI accepts/returns exact unsigned words. Eight Rust tests exercise numeric domains, existing timers, negative knockback and unsupported inputs. Python/Rust comparisons retain the source report hash and compare all96 source fixtures, with an independent float32 oracle and explicit nonfinite rejection. The package-scoped report producer keeps crate test ownership independent of the workspace. The xtask representative health test now checks mandatory consumers rather than a fixed count, allowing new health dependents without false failures. This is a headless simulation primitive, not Bevy integration or gameplay completion; native/Linux runtime parity and nonfinite original semantics remain open.
|
| 6 |
+
|
| 7 |
+
No original executable/full VM/native world collision or rendering runs. Supplied callback/native responses and fixture domains remain explicit; complete macOS/Linux Rust/Bevy/Solari gameplay remains open.
|
docs/research/rust-health-impulse.json
ADDED
|
@@ -0,0 +1,2991 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"limits": "Rust/source213009 word parity across96 finite fixtures; no-client preservation additionally checked in Rust. Active nonfinite/unsupported CVFI domains reject explicitly. Host macOS; Linux and full Bevy/Solari gameplay remain open.",
|
| 3 |
+
"probes": [
|
| 4 |
+
{
|
| 5 |
+
"initial_motion": {
|
| 6 |
+
"12": 8,
|
| 7 |
+
"16": 0,
|
| 8 |
+
"32": 1065353216,
|
| 9 |
+
"36": 3221225472,
|
| 10 |
+
"40": 1077936128
|
| 11 |
+
},
|
| 12 |
+
"input": {
|
| 13 |
+
"client": false,
|
| 14 |
+
"direction": [
|
| 15 |
+
0,
|
| 16 |
+
0,
|
| 17 |
+
0
|
| 18 |
+
],
|
| 19 |
+
"knockback": -2,
|
| 20 |
+
"scale": 0,
|
| 21 |
+
"timer": 0
|
| 22 |
+
},
|
| 23 |
+
"rust": {
|
| 24 |
+
"12": 8,
|
| 25 |
+
"16": 0,
|
| 26 |
+
"32": 1065353216,
|
| 27 |
+
"36": 3221225472,
|
| 28 |
+
"40": 1077936128
|
| 29 |
+
},
|
| 30 |
+
"source_final": null
|
| 31 |
+
},
|
| 32 |
+
{
|
| 33 |
+
"initial_motion": {
|
| 34 |
+
"12": 8,
|
| 35 |
+
"16": 0,
|
| 36 |
+
"32": 1065353216,
|
| 37 |
+
"36": 3221225472,
|
| 38 |
+
"40": 1077936128
|
| 39 |
+
},
|
| 40 |
+
"input": {
|
| 41 |
+
"client": false,
|
| 42 |
+
"direction": [
|
| 43 |
+
0.6,
|
| 44 |
+
-0.8,
|
| 45 |
+
0.25
|
| 46 |
+
],
|
| 47 |
+
"knockback": -2,
|
| 48 |
+
"scale": 0,
|
| 49 |
+
"timer": 0
|
| 50 |
+
},
|
| 51 |
+
"rust": {
|
| 52 |
+
"12": 8,
|
| 53 |
+
"16": 0,
|
| 54 |
+
"32": 1065353216,
|
| 55 |
+
"36": 3221225472,
|
| 56 |
+
"40": 1077936128
|
| 57 |
+
},
|
| 58 |
+
"source_final": null
|
| 59 |
+
},
|
| 60 |
+
{
|
| 61 |
+
"initial_motion": {
|
| 62 |
+
"12": 8,
|
| 63 |
+
"16": 10,
|
| 64 |
+
"32": 1065353216,
|
| 65 |
+
"36": 3221225472,
|
| 66 |
+
"40": 1077936128
|
| 67 |
+
},
|
| 68 |
+
"input": {
|
| 69 |
+
"client": false,
|
| 70 |
+
"direction": [
|
| 71 |
+
0,
|
| 72 |
+
0,
|
| 73 |
+
0
|
| 74 |
+
],
|
| 75 |
+
"knockback": -2,
|
| 76 |
+
"scale": 0,
|
| 77 |
+
"timer": 10
|
| 78 |
+
},
|
| 79 |
+
"rust": {
|
| 80 |
+
"12": 8,
|
| 81 |
+
"16": 10,
|
| 82 |
+
"32": 1065353216,
|
| 83 |
+
"36": 3221225472,
|
| 84 |
+
"40": 1077936128
|
| 85 |
+
},
|
| 86 |
+
"source_final": null
|
| 87 |
+
},
|
| 88 |
+
{
|
| 89 |
+
"initial_motion": {
|
| 90 |
+
"12": 8,
|
| 91 |
+
"16": 10,
|
| 92 |
+
"32": 1065353216,
|
| 93 |
+
"36": 3221225472,
|
| 94 |
+
"40": 1077936128
|
| 95 |
+
},
|
| 96 |
+
"input": {
|
| 97 |
+
"client": false,
|
| 98 |
+
"direction": [
|
| 99 |
+
0.6,
|
| 100 |
+
-0.8,
|
| 101 |
+
0.25
|
| 102 |
+
],
|
| 103 |
+
"knockback": -2,
|
| 104 |
+
"scale": 0,
|
| 105 |
+
"timer": 10
|
| 106 |
+
},
|
| 107 |
+
"rust": {
|
| 108 |
+
"12": 8,
|
| 109 |
+
"16": 10,
|
| 110 |
+
"32": 1065353216,
|
| 111 |
+
"36": 3221225472,
|
| 112 |
+
"40": 1077936128
|
| 113 |
+
},
|
| 114 |
+
"source_final": null
|
| 115 |
+
},
|
| 116 |
+
{
|
| 117 |
+
"initial_motion": {
|
| 118 |
+
"12": 8,
|
| 119 |
+
"16": 0,
|
| 120 |
+
"32": 1065353216,
|
| 121 |
+
"36": 3221225472,
|
| 122 |
+
"40": 1077936128
|
| 123 |
+
},
|
| 124 |
+
"input": {
|
| 125 |
+
"client": false,
|
| 126 |
+
"direction": [
|
| 127 |
+
0,
|
| 128 |
+
0,
|
| 129 |
+
0
|
| 130 |
+
],
|
| 131 |
+
"knockback": -2,
|
| 132 |
+
"scale": 1000,
|
| 133 |
+
"timer": 0
|
| 134 |
+
},
|
| 135 |
+
"rust": {
|
| 136 |
+
"12": 8,
|
| 137 |
+
"16": 0,
|
| 138 |
+
"32": 1065353216,
|
| 139 |
+
"36": 3221225472,
|
| 140 |
+
"40": 1077936128
|
| 141 |
+
},
|
| 142 |
+
"source_final": null
|
| 143 |
+
},
|
| 144 |
+
{
|
| 145 |
+
"initial_motion": {
|
| 146 |
+
"12": 8,
|
| 147 |
+
"16": 0,
|
| 148 |
+
"32": 1065353216,
|
| 149 |
+
"36": 3221225472,
|
| 150 |
+
"40": 1077936128
|
| 151 |
+
},
|
| 152 |
+
"input": {
|
| 153 |
+
"client": false,
|
| 154 |
+
"direction": [
|
| 155 |
+
0.6,
|
| 156 |
+
-0.8,
|
| 157 |
+
0.25
|
| 158 |
+
],
|
| 159 |
+
"knockback": -2,
|
| 160 |
+
"scale": 1000,
|
| 161 |
+
"timer": 0
|
| 162 |
+
},
|
| 163 |
+
"rust": {
|
| 164 |
+
"12": 8,
|
| 165 |
+
"16": 0,
|
| 166 |
+
"32": 1065353216,
|
| 167 |
+
"36": 3221225472,
|
| 168 |
+
"40": 1077936128
|
| 169 |
+
},
|
| 170 |
+
"source_final": null
|
| 171 |
+
},
|
| 172 |
+
{
|
| 173 |
+
"initial_motion": {
|
| 174 |
+
"12": 8,
|
| 175 |
+
"16": 10,
|
| 176 |
+
"32": 1065353216,
|
| 177 |
+
"36": 3221225472,
|
| 178 |
+
"40": 1077936128
|
| 179 |
+
},
|
| 180 |
+
"input": {
|
| 181 |
+
"client": false,
|
| 182 |
+
"direction": [
|
| 183 |
+
0,
|
| 184 |
+
0,
|
| 185 |
+
0
|
| 186 |
+
],
|
| 187 |
+
"knockback": -2,
|
| 188 |
+
"scale": 1000,
|
| 189 |
+
"timer": 10
|
| 190 |
+
},
|
| 191 |
+
"rust": {
|
| 192 |
+
"12": 8,
|
| 193 |
+
"16": 10,
|
| 194 |
+
"32": 1065353216,
|
| 195 |
+
"36": 3221225472,
|
| 196 |
+
"40": 1077936128
|
| 197 |
+
},
|
| 198 |
+
"source_final": null
|
| 199 |
+
},
|
| 200 |
+
{
|
| 201 |
+
"initial_motion": {
|
| 202 |
+
"12": 8,
|
| 203 |
+
"16": 10,
|
| 204 |
+
"32": 1065353216,
|
| 205 |
+
"36": 3221225472,
|
| 206 |
+
"40": 1077936128
|
| 207 |
+
},
|
| 208 |
+
"input": {
|
| 209 |
+
"client": false,
|
| 210 |
+
"direction": [
|
| 211 |
+
0.6,
|
| 212 |
+
-0.8,
|
| 213 |
+
0.25
|
| 214 |
+
],
|
| 215 |
+
"knockback": -2,
|
| 216 |
+
"scale": 1000,
|
| 217 |
+
"timer": 10
|
| 218 |
+
},
|
| 219 |
+
"rust": {
|
| 220 |
+
"12": 8,
|
| 221 |
+
"16": 10,
|
| 222 |
+
"32": 1065353216,
|
| 223 |
+
"36": 3221225472,
|
| 224 |
+
"40": 1077936128
|
| 225 |
+
},
|
| 226 |
+
"source_final": null
|
| 227 |
+
},
|
| 228 |
+
{
|
| 229 |
+
"initial_motion": {
|
| 230 |
+
"12": 8,
|
| 231 |
+
"16": 0,
|
| 232 |
+
"32": 1065353216,
|
| 233 |
+
"36": 3221225472,
|
| 234 |
+
"40": 1077936128
|
| 235 |
+
},
|
| 236 |
+
"input": {
|
| 237 |
+
"client": false,
|
| 238 |
+
"direction": [
|
| 239 |
+
0,
|
| 240 |
+
0,
|
| 241 |
+
0
|
| 242 |
+
],
|
| 243 |
+
"knockback": 0,
|
| 244 |
+
"scale": 0,
|
| 245 |
+
"timer": 0
|
| 246 |
+
},
|
| 247 |
+
"rust": {
|
| 248 |
+
"12": 8,
|
| 249 |
+
"16": 0,
|
| 250 |
+
"32": 1065353216,
|
| 251 |
+
"36": 3221225472,
|
| 252 |
+
"40": 1077936128
|
| 253 |
+
},
|
| 254 |
+
"source_final": null
|
| 255 |
+
},
|
| 256 |
+
{
|
| 257 |
+
"initial_motion": {
|
| 258 |
+
"12": 8,
|
| 259 |
+
"16": 0,
|
| 260 |
+
"32": 1065353216,
|
| 261 |
+
"36": 3221225472,
|
| 262 |
+
"40": 1077936128
|
| 263 |
+
},
|
| 264 |
+
"input": {
|
| 265 |
+
"client": false,
|
| 266 |
+
"direction": [
|
| 267 |
+
0.6,
|
| 268 |
+
-0.8,
|
| 269 |
+
0.25
|
| 270 |
+
],
|
| 271 |
+
"knockback": 0,
|
| 272 |
+
"scale": 0,
|
| 273 |
+
"timer": 0
|
| 274 |
+
},
|
| 275 |
+
"rust": {
|
| 276 |
+
"12": 8,
|
| 277 |
+
"16": 0,
|
| 278 |
+
"32": 1065353216,
|
| 279 |
+
"36": 3221225472,
|
| 280 |
+
"40": 1077936128
|
| 281 |
+
},
|
| 282 |
+
"source_final": null
|
| 283 |
+
},
|
| 284 |
+
{
|
| 285 |
+
"initial_motion": {
|
| 286 |
+
"12": 8,
|
| 287 |
+
"16": 10,
|
| 288 |
+
"32": 1065353216,
|
| 289 |
+
"36": 3221225472,
|
| 290 |
+
"40": 1077936128
|
| 291 |
+
},
|
| 292 |
+
"input": {
|
| 293 |
+
"client": false,
|
| 294 |
+
"direction": [
|
| 295 |
+
0,
|
| 296 |
+
0,
|
| 297 |
+
0
|
| 298 |
+
],
|
| 299 |
+
"knockback": 0,
|
| 300 |
+
"scale": 0,
|
| 301 |
+
"timer": 10
|
| 302 |
+
},
|
| 303 |
+
"rust": {
|
| 304 |
+
"12": 8,
|
| 305 |
+
"16": 10,
|
| 306 |
+
"32": 1065353216,
|
| 307 |
+
"36": 3221225472,
|
| 308 |
+
"40": 1077936128
|
| 309 |
+
},
|
| 310 |
+
"source_final": null
|
| 311 |
+
},
|
| 312 |
+
{
|
| 313 |
+
"initial_motion": {
|
| 314 |
+
"12": 8,
|
| 315 |
+
"16": 10,
|
| 316 |
+
"32": 1065353216,
|
| 317 |
+
"36": 3221225472,
|
| 318 |
+
"40": 1077936128
|
| 319 |
+
},
|
| 320 |
+
"input": {
|
| 321 |
+
"client": false,
|
| 322 |
+
"direction": [
|
| 323 |
+
0.6,
|
| 324 |
+
-0.8,
|
| 325 |
+
0.25
|
| 326 |
+
],
|
| 327 |
+
"knockback": 0,
|
| 328 |
+
"scale": 0,
|
| 329 |
+
"timer": 10
|
| 330 |
+
},
|
| 331 |
+
"rust": {
|
| 332 |
+
"12": 8,
|
| 333 |
+
"16": 10,
|
| 334 |
+
"32": 1065353216,
|
| 335 |
+
"36": 3221225472,
|
| 336 |
+
"40": 1077936128
|
| 337 |
+
},
|
| 338 |
+
"source_final": null
|
| 339 |
+
},
|
| 340 |
+
{
|
| 341 |
+
"initial_motion": {
|
| 342 |
+
"12": 8,
|
| 343 |
+
"16": 0,
|
| 344 |
+
"32": 1065353216,
|
| 345 |
+
"36": 3221225472,
|
| 346 |
+
"40": 1077936128
|
| 347 |
+
},
|
| 348 |
+
"input": {
|
| 349 |
+
"client": false,
|
| 350 |
+
"direction": [
|
| 351 |
+
0,
|
| 352 |
+
0,
|
| 353 |
+
0
|
| 354 |
+
],
|
| 355 |
+
"knockback": 0,
|
| 356 |
+
"scale": 1000,
|
| 357 |
+
"timer": 0
|
| 358 |
+
},
|
| 359 |
+
"rust": {
|
| 360 |
+
"12": 8,
|
| 361 |
+
"16": 0,
|
| 362 |
+
"32": 1065353216,
|
| 363 |
+
"36": 3221225472,
|
| 364 |
+
"40": 1077936128
|
| 365 |
+
},
|
| 366 |
+
"source_final": null
|
| 367 |
+
},
|
| 368 |
+
{
|
| 369 |
+
"initial_motion": {
|
| 370 |
+
"12": 8,
|
| 371 |
+
"16": 0,
|
| 372 |
+
"32": 1065353216,
|
| 373 |
+
"36": 3221225472,
|
| 374 |
+
"40": 1077936128
|
| 375 |
+
},
|
| 376 |
+
"input": {
|
| 377 |
+
"client": false,
|
| 378 |
+
"direction": [
|
| 379 |
+
0.6,
|
| 380 |
+
-0.8,
|
| 381 |
+
0.25
|
| 382 |
+
],
|
| 383 |
+
"knockback": 0,
|
| 384 |
+
"scale": 1000,
|
| 385 |
+
"timer": 0
|
| 386 |
+
},
|
| 387 |
+
"rust": {
|
| 388 |
+
"12": 8,
|
| 389 |
+
"16": 0,
|
| 390 |
+
"32": 1065353216,
|
| 391 |
+
"36": 3221225472,
|
| 392 |
+
"40": 1077936128
|
| 393 |
+
},
|
| 394 |
+
"source_final": null
|
| 395 |
+
},
|
| 396 |
+
{
|
| 397 |
+
"initial_motion": {
|
| 398 |
+
"12": 8,
|
| 399 |
+
"16": 10,
|
| 400 |
+
"32": 1065353216,
|
| 401 |
+
"36": 3221225472,
|
| 402 |
+
"40": 1077936128
|
| 403 |
+
},
|
| 404 |
+
"input": {
|
| 405 |
+
"client": false,
|
| 406 |
+
"direction": [
|
| 407 |
+
0,
|
| 408 |
+
0,
|
| 409 |
+
0
|
| 410 |
+
],
|
| 411 |
+
"knockback": 0,
|
| 412 |
+
"scale": 1000,
|
| 413 |
+
"timer": 10
|
| 414 |
+
},
|
| 415 |
+
"rust": {
|
| 416 |
+
"12": 8,
|
| 417 |
+
"16": 10,
|
| 418 |
+
"32": 1065353216,
|
| 419 |
+
"36": 3221225472,
|
| 420 |
+
"40": 1077936128
|
| 421 |
+
},
|
| 422 |
+
"source_final": null
|
| 423 |
+
},
|
| 424 |
+
{
|
| 425 |
+
"initial_motion": {
|
| 426 |
+
"12": 8,
|
| 427 |
+
"16": 10,
|
| 428 |
+
"32": 1065353216,
|
| 429 |
+
"36": 3221225472,
|
| 430 |
+
"40": 1077936128
|
| 431 |
+
},
|
| 432 |
+
"input": {
|
| 433 |
+
"client": false,
|
| 434 |
+
"direction": [
|
| 435 |
+
0.6,
|
| 436 |
+
-0.8,
|
| 437 |
+
0.25
|
| 438 |
+
],
|
| 439 |
+
"knockback": 0,
|
| 440 |
+
"scale": 1000,
|
| 441 |
+
"timer": 10
|
| 442 |
+
},
|
| 443 |
+
"rust": {
|
| 444 |
+
"12": 8,
|
| 445 |
+
"16": 10,
|
| 446 |
+
"32": 1065353216,
|
| 447 |
+
"36": 3221225472,
|
| 448 |
+
"40": 1077936128
|
| 449 |
+
},
|
| 450 |
+
"source_final": null
|
| 451 |
+
},
|
| 452 |
+
{
|
| 453 |
+
"initial_motion": {
|
| 454 |
+
"12": 8,
|
| 455 |
+
"16": 0,
|
| 456 |
+
"32": 1065353216,
|
| 457 |
+
"36": 3221225472,
|
| 458 |
+
"40": 1077936128
|
| 459 |
+
},
|
| 460 |
+
"input": {
|
| 461 |
+
"client": false,
|
| 462 |
+
"direction": [
|
| 463 |
+
0,
|
| 464 |
+
0,
|
| 465 |
+
0
|
| 466 |
+
],
|
| 467 |
+
"knockback": 0.25,
|
| 468 |
+
"scale": 0,
|
| 469 |
+
"timer": 0
|
| 470 |
+
},
|
| 471 |
+
"rust": {
|
| 472 |
+
"12": 8,
|
| 473 |
+
"16": 0,
|
| 474 |
+
"32": 1065353216,
|
| 475 |
+
"36": 3221225472,
|
| 476 |
+
"40": 1077936128
|
| 477 |
+
},
|
| 478 |
+
"source_final": null
|
| 479 |
+
},
|
| 480 |
+
{
|
| 481 |
+
"initial_motion": {
|
| 482 |
+
"12": 8,
|
| 483 |
+
"16": 0,
|
| 484 |
+
"32": 1065353216,
|
| 485 |
+
"36": 3221225472,
|
| 486 |
+
"40": 1077936128
|
| 487 |
+
},
|
| 488 |
+
"input": {
|
| 489 |
+
"client": false,
|
| 490 |
+
"direction": [
|
| 491 |
+
0.6,
|
| 492 |
+
-0.8,
|
| 493 |
+
0.25
|
| 494 |
+
],
|
| 495 |
+
"knockback": 0.25,
|
| 496 |
+
"scale": 0,
|
| 497 |
+
"timer": 0
|
| 498 |
+
},
|
| 499 |
+
"rust": {
|
| 500 |
+
"12": 8,
|
| 501 |
+
"16": 0,
|
| 502 |
+
"32": 1065353216,
|
| 503 |
+
"36": 3221225472,
|
| 504 |
+
"40": 1077936128
|
| 505 |
+
},
|
| 506 |
+
"source_final": null
|
| 507 |
+
},
|
| 508 |
+
{
|
| 509 |
+
"initial_motion": {
|
| 510 |
+
"12": 8,
|
| 511 |
+
"16": 10,
|
| 512 |
+
"32": 1065353216,
|
| 513 |
+
"36": 3221225472,
|
| 514 |
+
"40": 1077936128
|
| 515 |
+
},
|
| 516 |
+
"input": {
|
| 517 |
+
"client": false,
|
| 518 |
+
"direction": [
|
| 519 |
+
0,
|
| 520 |
+
0,
|
| 521 |
+
0
|
| 522 |
+
],
|
| 523 |
+
"knockback": 0.25,
|
| 524 |
+
"scale": 0,
|
| 525 |
+
"timer": 10
|
| 526 |
+
},
|
| 527 |
+
"rust": {
|
| 528 |
+
"12": 8,
|
| 529 |
+
"16": 10,
|
| 530 |
+
"32": 1065353216,
|
| 531 |
+
"36": 3221225472,
|
| 532 |
+
"40": 1077936128
|
| 533 |
+
},
|
| 534 |
+
"source_final": null
|
| 535 |
+
},
|
| 536 |
+
{
|
| 537 |
+
"initial_motion": {
|
| 538 |
+
"12": 8,
|
| 539 |
+
"16": 10,
|
| 540 |
+
"32": 1065353216,
|
| 541 |
+
"36": 3221225472,
|
| 542 |
+
"40": 1077936128
|
| 543 |
+
},
|
| 544 |
+
"input": {
|
| 545 |
+
"client": false,
|
| 546 |
+
"direction": [
|
| 547 |
+
0.6,
|
| 548 |
+
-0.8,
|
| 549 |
+
0.25
|
| 550 |
+
],
|
| 551 |
+
"knockback": 0.25,
|
| 552 |
+
"scale": 0,
|
| 553 |
+
"timer": 10
|
| 554 |
+
},
|
| 555 |
+
"rust": {
|
| 556 |
+
"12": 8,
|
| 557 |
+
"16": 10,
|
| 558 |
+
"32": 1065353216,
|
| 559 |
+
"36": 3221225472,
|
| 560 |
+
"40": 1077936128
|
| 561 |
+
},
|
| 562 |
+
"source_final": null
|
| 563 |
+
},
|
| 564 |
+
{
|
| 565 |
+
"initial_motion": {
|
| 566 |
+
"12": 8,
|
| 567 |
+
"16": 0,
|
| 568 |
+
"32": 1065353216,
|
| 569 |
+
"36": 3221225472,
|
| 570 |
+
"40": 1077936128
|
| 571 |
+
},
|
| 572 |
+
"input": {
|
| 573 |
+
"client": false,
|
| 574 |
+
"direction": [
|
| 575 |
+
0,
|
| 576 |
+
0,
|
| 577 |
+
0
|
| 578 |
+
],
|
| 579 |
+
"knockback": 0.25,
|
| 580 |
+
"scale": 1000,
|
| 581 |
+
"timer": 0
|
| 582 |
+
},
|
| 583 |
+
"rust": {
|
| 584 |
+
"12": 8,
|
| 585 |
+
"16": 0,
|
| 586 |
+
"32": 1065353216,
|
| 587 |
+
"36": 3221225472,
|
| 588 |
+
"40": 1077936128
|
| 589 |
+
},
|
| 590 |
+
"source_final": null
|
| 591 |
+
},
|
| 592 |
+
{
|
| 593 |
+
"initial_motion": {
|
| 594 |
+
"12": 8,
|
| 595 |
+
"16": 0,
|
| 596 |
+
"32": 1065353216,
|
| 597 |
+
"36": 3221225472,
|
| 598 |
+
"40": 1077936128
|
| 599 |
+
},
|
| 600 |
+
"input": {
|
| 601 |
+
"client": false,
|
| 602 |
+
"direction": [
|
| 603 |
+
0.6,
|
| 604 |
+
-0.8,
|
| 605 |
+
0.25
|
| 606 |
+
],
|
| 607 |
+
"knockback": 0.25,
|
| 608 |
+
"scale": 1000,
|
| 609 |
+
"timer": 0
|
| 610 |
+
},
|
| 611 |
+
"rust": {
|
| 612 |
+
"12": 8,
|
| 613 |
+
"16": 0,
|
| 614 |
+
"32": 1065353216,
|
| 615 |
+
"36": 3221225472,
|
| 616 |
+
"40": 1077936128
|
| 617 |
+
},
|
| 618 |
+
"source_final": null
|
| 619 |
+
},
|
| 620 |
+
{
|
| 621 |
+
"initial_motion": {
|
| 622 |
+
"12": 8,
|
| 623 |
+
"16": 10,
|
| 624 |
+
"32": 1065353216,
|
| 625 |
+
"36": 3221225472,
|
| 626 |
+
"40": 1077936128
|
| 627 |
+
},
|
| 628 |
+
"input": {
|
| 629 |
+
"client": false,
|
| 630 |
+
"direction": [
|
| 631 |
+
0,
|
| 632 |
+
0,
|
| 633 |
+
0
|
| 634 |
+
],
|
| 635 |
+
"knockback": 0.25,
|
| 636 |
+
"scale": 1000,
|
| 637 |
+
"timer": 10
|
| 638 |
+
},
|
| 639 |
+
"rust": {
|
| 640 |
+
"12": 8,
|
| 641 |
+
"16": 10,
|
| 642 |
+
"32": 1065353216,
|
| 643 |
+
"36": 3221225472,
|
| 644 |
+
"40": 1077936128
|
| 645 |
+
},
|
| 646 |
+
"source_final": null
|
| 647 |
+
},
|
| 648 |
+
{
|
| 649 |
+
"initial_motion": {
|
| 650 |
+
"12": 8,
|
| 651 |
+
"16": 10,
|
| 652 |
+
"32": 1065353216,
|
| 653 |
+
"36": 3221225472,
|
| 654 |
+
"40": 1077936128
|
| 655 |
+
},
|
| 656 |
+
"input": {
|
| 657 |
+
"client": false,
|
| 658 |
+
"direction": [
|
| 659 |
+
0.6,
|
| 660 |
+
-0.8,
|
| 661 |
+
0.25
|
| 662 |
+
],
|
| 663 |
+
"knockback": 0.25,
|
| 664 |
+
"scale": 1000,
|
| 665 |
+
"timer": 10
|
| 666 |
+
},
|
| 667 |
+
"rust": {
|
| 668 |
+
"12": 8,
|
| 669 |
+
"16": 10,
|
| 670 |
+
"32": 1065353216,
|
| 671 |
+
"36": 3221225472,
|
| 672 |
+
"40": 1077936128
|
| 673 |
+
},
|
| 674 |
+
"source_final": null
|
| 675 |
+
},
|
| 676 |
+
{
|
| 677 |
+
"initial_motion": {
|
| 678 |
+
"12": 8,
|
| 679 |
+
"16": 0,
|
| 680 |
+
"32": 1065353216,
|
| 681 |
+
"36": 3221225472,
|
| 682 |
+
"40": 1077936128
|
| 683 |
+
},
|
| 684 |
+
"input": {
|
| 685 |
+
"client": false,
|
| 686 |
+
"direction": [
|
| 687 |
+
0,
|
| 688 |
+
0,
|
| 689 |
+
0
|
| 690 |
+
],
|
| 691 |
+
"knockback": 25,
|
| 692 |
+
"scale": 0,
|
| 693 |
+
"timer": 0
|
| 694 |
+
},
|
| 695 |
+
"rust": {
|
| 696 |
+
"12": 8,
|
| 697 |
+
"16": 0,
|
| 698 |
+
"32": 1065353216,
|
| 699 |
+
"36": 3221225472,
|
| 700 |
+
"40": 1077936128
|
| 701 |
+
},
|
| 702 |
+
"source_final": null
|
| 703 |
+
},
|
| 704 |
+
{
|
| 705 |
+
"initial_motion": {
|
| 706 |
+
"12": 8,
|
| 707 |
+
"16": 0,
|
| 708 |
+
"32": 1065353216,
|
| 709 |
+
"36": 3221225472,
|
| 710 |
+
"40": 1077936128
|
| 711 |
+
},
|
| 712 |
+
"input": {
|
| 713 |
+
"client": false,
|
| 714 |
+
"direction": [
|
| 715 |
+
0.6,
|
| 716 |
+
-0.8,
|
| 717 |
+
0.25
|
| 718 |
+
],
|
| 719 |
+
"knockback": 25,
|
| 720 |
+
"scale": 0,
|
| 721 |
+
"timer": 0
|
| 722 |
+
},
|
| 723 |
+
"rust": {
|
| 724 |
+
"12": 8,
|
| 725 |
+
"16": 0,
|
| 726 |
+
"32": 1065353216,
|
| 727 |
+
"36": 3221225472,
|
| 728 |
+
"40": 1077936128
|
| 729 |
+
},
|
| 730 |
+
"source_final": null
|
| 731 |
+
},
|
| 732 |
+
{
|
| 733 |
+
"initial_motion": {
|
| 734 |
+
"12": 8,
|
| 735 |
+
"16": 10,
|
| 736 |
+
"32": 1065353216,
|
| 737 |
+
"36": 3221225472,
|
| 738 |
+
"40": 1077936128
|
| 739 |
+
},
|
| 740 |
+
"input": {
|
| 741 |
+
"client": false,
|
| 742 |
+
"direction": [
|
| 743 |
+
0,
|
| 744 |
+
0,
|
| 745 |
+
0
|
| 746 |
+
],
|
| 747 |
+
"knockback": 25,
|
| 748 |
+
"scale": 0,
|
| 749 |
+
"timer": 10
|
| 750 |
+
},
|
| 751 |
+
"rust": {
|
| 752 |
+
"12": 8,
|
| 753 |
+
"16": 10,
|
| 754 |
+
"32": 1065353216,
|
| 755 |
+
"36": 3221225472,
|
| 756 |
+
"40": 1077936128
|
| 757 |
+
},
|
| 758 |
+
"source_final": null
|
| 759 |
+
},
|
| 760 |
+
{
|
| 761 |
+
"initial_motion": {
|
| 762 |
+
"12": 8,
|
| 763 |
+
"16": 10,
|
| 764 |
+
"32": 1065353216,
|
| 765 |
+
"36": 3221225472,
|
| 766 |
+
"40": 1077936128
|
| 767 |
+
},
|
| 768 |
+
"input": {
|
| 769 |
+
"client": false,
|
| 770 |
+
"direction": [
|
| 771 |
+
0.6,
|
| 772 |
+
-0.8,
|
| 773 |
+
0.25
|
| 774 |
+
],
|
| 775 |
+
"knockback": 25,
|
| 776 |
+
"scale": 0,
|
| 777 |
+
"timer": 10
|
| 778 |
+
},
|
| 779 |
+
"rust": {
|
| 780 |
+
"12": 8,
|
| 781 |
+
"16": 10,
|
| 782 |
+
"32": 1065353216,
|
| 783 |
+
"36": 3221225472,
|
| 784 |
+
"40": 1077936128
|
| 785 |
+
},
|
| 786 |
+
"source_final": null
|
| 787 |
+
},
|
| 788 |
+
{
|
| 789 |
+
"initial_motion": {
|
| 790 |
+
"12": 8,
|
| 791 |
+
"16": 0,
|
| 792 |
+
"32": 1065353216,
|
| 793 |
+
"36": 3221225472,
|
| 794 |
+
"40": 1077936128
|
| 795 |
+
},
|
| 796 |
+
"input": {
|
| 797 |
+
"client": false,
|
| 798 |
+
"direction": [
|
| 799 |
+
0,
|
| 800 |
+
0,
|
| 801 |
+
0
|
| 802 |
+
],
|
| 803 |
+
"knockback": 25,
|
| 804 |
+
"scale": 1000,
|
| 805 |
+
"timer": 0
|
| 806 |
+
},
|
| 807 |
+
"rust": {
|
| 808 |
+
"12": 8,
|
| 809 |
+
"16": 0,
|
| 810 |
+
"32": 1065353216,
|
| 811 |
+
"36": 3221225472,
|
| 812 |
+
"40": 1077936128
|
| 813 |
+
},
|
| 814 |
+
"source_final": null
|
| 815 |
+
},
|
| 816 |
+
{
|
| 817 |
+
"initial_motion": {
|
| 818 |
+
"12": 8,
|
| 819 |
+
"16": 0,
|
| 820 |
+
"32": 1065353216,
|
| 821 |
+
"36": 3221225472,
|
| 822 |
+
"40": 1077936128
|
| 823 |
+
},
|
| 824 |
+
"input": {
|
| 825 |
+
"client": false,
|
| 826 |
+
"direction": [
|
| 827 |
+
0.6,
|
| 828 |
+
-0.8,
|
| 829 |
+
0.25
|
| 830 |
+
],
|
| 831 |
+
"knockback": 25,
|
| 832 |
+
"scale": 1000,
|
| 833 |
+
"timer": 0
|
| 834 |
+
},
|
| 835 |
+
"rust": {
|
| 836 |
+
"12": 8,
|
| 837 |
+
"16": 0,
|
| 838 |
+
"32": 1065353216,
|
| 839 |
+
"36": 3221225472,
|
| 840 |
+
"40": 1077936128
|
| 841 |
+
},
|
| 842 |
+
"source_final": null
|
| 843 |
+
},
|
| 844 |
+
{
|
| 845 |
+
"initial_motion": {
|
| 846 |
+
"12": 8,
|
| 847 |
+
"16": 10,
|
| 848 |
+
"32": 1065353216,
|
| 849 |
+
"36": 3221225472,
|
| 850 |
+
"40": 1077936128
|
| 851 |
+
},
|
| 852 |
+
"input": {
|
| 853 |
+
"client": false,
|
| 854 |
+
"direction": [
|
| 855 |
+
0,
|
| 856 |
+
0,
|
| 857 |
+
0
|
| 858 |
+
],
|
| 859 |
+
"knockback": 25,
|
| 860 |
+
"scale": 1000,
|
| 861 |
+
"timer": 10
|
| 862 |
+
},
|
| 863 |
+
"rust": {
|
| 864 |
+
"12": 8,
|
| 865 |
+
"16": 10,
|
| 866 |
+
"32": 1065353216,
|
| 867 |
+
"36": 3221225472,
|
| 868 |
+
"40": 1077936128
|
| 869 |
+
},
|
| 870 |
+
"source_final": null
|
| 871 |
+
},
|
| 872 |
+
{
|
| 873 |
+
"initial_motion": {
|
| 874 |
+
"12": 8,
|
| 875 |
+
"16": 10,
|
| 876 |
+
"32": 1065353216,
|
| 877 |
+
"36": 3221225472,
|
| 878 |
+
"40": 1077936128
|
| 879 |
+
},
|
| 880 |
+
"input": {
|
| 881 |
+
"client": false,
|
| 882 |
+
"direction": [
|
| 883 |
+
0.6,
|
| 884 |
+
-0.8,
|
| 885 |
+
0.25
|
| 886 |
+
],
|
| 887 |
+
"knockback": 25,
|
| 888 |
+
"scale": 1000,
|
| 889 |
+
"timer": 10
|
| 890 |
+
},
|
| 891 |
+
"rust": {
|
| 892 |
+
"12": 8,
|
| 893 |
+
"16": 10,
|
| 894 |
+
"32": 1065353216,
|
| 895 |
+
"36": 3221225472,
|
| 896 |
+
"40": 1077936128
|
| 897 |
+
},
|
| 898 |
+
"source_final": null
|
| 899 |
+
},
|
| 900 |
+
{
|
| 901 |
+
"initial_motion": {
|
| 902 |
+
"12": 8,
|
| 903 |
+
"16": 0,
|
| 904 |
+
"32": 1065353216,
|
| 905 |
+
"36": 3221225472,
|
| 906 |
+
"40": 1077936128
|
| 907 |
+
},
|
| 908 |
+
"input": {
|
| 909 |
+
"client": false,
|
| 910 |
+
"direction": [
|
| 911 |
+
0,
|
| 912 |
+
0,
|
| 913 |
+
0
|
| 914 |
+
],
|
| 915 |
+
"knockback": 100,
|
| 916 |
+
"scale": 0,
|
| 917 |
+
"timer": 0
|
| 918 |
+
},
|
| 919 |
+
"rust": {
|
| 920 |
+
"12": 8,
|
| 921 |
+
"16": 0,
|
| 922 |
+
"32": 1065353216,
|
| 923 |
+
"36": 3221225472,
|
| 924 |
+
"40": 1077936128
|
| 925 |
+
},
|
| 926 |
+
"source_final": null
|
| 927 |
+
},
|
| 928 |
+
{
|
| 929 |
+
"initial_motion": {
|
| 930 |
+
"12": 8,
|
| 931 |
+
"16": 0,
|
| 932 |
+
"32": 1065353216,
|
| 933 |
+
"36": 3221225472,
|
| 934 |
+
"40": 1077936128
|
| 935 |
+
},
|
| 936 |
+
"input": {
|
| 937 |
+
"client": false,
|
| 938 |
+
"direction": [
|
| 939 |
+
0.6,
|
| 940 |
+
-0.8,
|
| 941 |
+
0.25
|
| 942 |
+
],
|
| 943 |
+
"knockback": 100,
|
| 944 |
+
"scale": 0,
|
| 945 |
+
"timer": 0
|
| 946 |
+
},
|
| 947 |
+
"rust": {
|
| 948 |
+
"12": 8,
|
| 949 |
+
"16": 0,
|
| 950 |
+
"32": 1065353216,
|
| 951 |
+
"36": 3221225472,
|
| 952 |
+
"40": 1077936128
|
| 953 |
+
},
|
| 954 |
+
"source_final": null
|
| 955 |
+
},
|
| 956 |
+
{
|
| 957 |
+
"initial_motion": {
|
| 958 |
+
"12": 8,
|
| 959 |
+
"16": 10,
|
| 960 |
+
"32": 1065353216,
|
| 961 |
+
"36": 3221225472,
|
| 962 |
+
"40": 1077936128
|
| 963 |
+
},
|
| 964 |
+
"input": {
|
| 965 |
+
"client": false,
|
| 966 |
+
"direction": [
|
| 967 |
+
0,
|
| 968 |
+
0,
|
| 969 |
+
0
|
| 970 |
+
],
|
| 971 |
+
"knockback": 100,
|
| 972 |
+
"scale": 0,
|
| 973 |
+
"timer": 10
|
| 974 |
+
},
|
| 975 |
+
"rust": {
|
| 976 |
+
"12": 8,
|
| 977 |
+
"16": 10,
|
| 978 |
+
"32": 1065353216,
|
| 979 |
+
"36": 3221225472,
|
| 980 |
+
"40": 1077936128
|
| 981 |
+
},
|
| 982 |
+
"source_final": null
|
| 983 |
+
},
|
| 984 |
+
{
|
| 985 |
+
"initial_motion": {
|
| 986 |
+
"12": 8,
|
| 987 |
+
"16": 10,
|
| 988 |
+
"32": 1065353216,
|
| 989 |
+
"36": 3221225472,
|
| 990 |
+
"40": 1077936128
|
| 991 |
+
},
|
| 992 |
+
"input": {
|
| 993 |
+
"client": false,
|
| 994 |
+
"direction": [
|
| 995 |
+
0.6,
|
| 996 |
+
-0.8,
|
| 997 |
+
0.25
|
| 998 |
+
],
|
| 999 |
+
"knockback": 100,
|
| 1000 |
+
"scale": 0,
|
| 1001 |
+
"timer": 10
|
| 1002 |
+
},
|
| 1003 |
+
"rust": {
|
| 1004 |
+
"12": 8,
|
| 1005 |
+
"16": 10,
|
| 1006 |
+
"32": 1065353216,
|
| 1007 |
+
"36": 3221225472,
|
| 1008 |
+
"40": 1077936128
|
| 1009 |
+
},
|
| 1010 |
+
"source_final": null
|
| 1011 |
+
},
|
| 1012 |
+
{
|
| 1013 |
+
"initial_motion": {
|
| 1014 |
+
"12": 8,
|
| 1015 |
+
"16": 0,
|
| 1016 |
+
"32": 1065353216,
|
| 1017 |
+
"36": 3221225472,
|
| 1018 |
+
"40": 1077936128
|
| 1019 |
+
},
|
| 1020 |
+
"input": {
|
| 1021 |
+
"client": false,
|
| 1022 |
+
"direction": [
|
| 1023 |
+
0,
|
| 1024 |
+
0,
|
| 1025 |
+
0
|
| 1026 |
+
],
|
| 1027 |
+
"knockback": 100,
|
| 1028 |
+
"scale": 1000,
|
| 1029 |
+
"timer": 0
|
| 1030 |
+
},
|
| 1031 |
+
"rust": {
|
| 1032 |
+
"12": 8,
|
| 1033 |
+
"16": 0,
|
| 1034 |
+
"32": 1065353216,
|
| 1035 |
+
"36": 3221225472,
|
| 1036 |
+
"40": 1077936128
|
| 1037 |
+
},
|
| 1038 |
+
"source_final": null
|
| 1039 |
+
},
|
| 1040 |
+
{
|
| 1041 |
+
"initial_motion": {
|
| 1042 |
+
"12": 8,
|
| 1043 |
+
"16": 0,
|
| 1044 |
+
"32": 1065353216,
|
| 1045 |
+
"36": 3221225472,
|
| 1046 |
+
"40": 1077936128
|
| 1047 |
+
},
|
| 1048 |
+
"input": {
|
| 1049 |
+
"client": false,
|
| 1050 |
+
"direction": [
|
| 1051 |
+
0.6,
|
| 1052 |
+
-0.8,
|
| 1053 |
+
0.25
|
| 1054 |
+
],
|
| 1055 |
+
"knockback": 100,
|
| 1056 |
+
"scale": 1000,
|
| 1057 |
+
"timer": 0
|
| 1058 |
+
},
|
| 1059 |
+
"rust": {
|
| 1060 |
+
"12": 8,
|
| 1061 |
+
"16": 0,
|
| 1062 |
+
"32": 1065353216,
|
| 1063 |
+
"36": 3221225472,
|
| 1064 |
+
"40": 1077936128
|
| 1065 |
+
},
|
| 1066 |
+
"source_final": null
|
| 1067 |
+
},
|
| 1068 |
+
{
|
| 1069 |
+
"initial_motion": {
|
| 1070 |
+
"12": 8,
|
| 1071 |
+
"16": 10,
|
| 1072 |
+
"32": 1065353216,
|
| 1073 |
+
"36": 3221225472,
|
| 1074 |
+
"40": 1077936128
|
| 1075 |
+
},
|
| 1076 |
+
"input": {
|
| 1077 |
+
"client": false,
|
| 1078 |
+
"direction": [
|
| 1079 |
+
0,
|
| 1080 |
+
0,
|
| 1081 |
+
0
|
| 1082 |
+
],
|
| 1083 |
+
"knockback": 100,
|
| 1084 |
+
"scale": 1000,
|
| 1085 |
+
"timer": 10
|
| 1086 |
+
},
|
| 1087 |
+
"rust": {
|
| 1088 |
+
"12": 8,
|
| 1089 |
+
"16": 10,
|
| 1090 |
+
"32": 1065353216,
|
| 1091 |
+
"36": 3221225472,
|
| 1092 |
+
"40": 1077936128
|
| 1093 |
+
},
|
| 1094 |
+
"source_final": null
|
| 1095 |
+
},
|
| 1096 |
+
{
|
| 1097 |
+
"initial_motion": {
|
| 1098 |
+
"12": 8,
|
| 1099 |
+
"16": 10,
|
| 1100 |
+
"32": 1065353216,
|
| 1101 |
+
"36": 3221225472,
|
| 1102 |
+
"40": 1077936128
|
| 1103 |
+
},
|
| 1104 |
+
"input": {
|
| 1105 |
+
"client": false,
|
| 1106 |
+
"direction": [
|
| 1107 |
+
0.6,
|
| 1108 |
+
-0.8,
|
| 1109 |
+
0.25
|
| 1110 |
+
],
|
| 1111 |
+
"knockback": 100,
|
| 1112 |
+
"scale": 1000,
|
| 1113 |
+
"timer": 10
|
| 1114 |
+
},
|
| 1115 |
+
"rust": {
|
| 1116 |
+
"12": 8,
|
| 1117 |
+
"16": 10,
|
| 1118 |
+
"32": 1065353216,
|
| 1119 |
+
"36": 3221225472,
|
| 1120 |
+
"40": 1077936128
|
| 1121 |
+
},
|
| 1122 |
+
"source_final": null
|
| 1123 |
+
},
|
| 1124 |
+
{
|
| 1125 |
+
"initial_motion": {
|
| 1126 |
+
"12": 8,
|
| 1127 |
+
"16": 0,
|
| 1128 |
+
"32": 1065353216,
|
| 1129 |
+
"36": 3221225472,
|
| 1130 |
+
"40": 1077936128
|
| 1131 |
+
},
|
| 1132 |
+
"input": {
|
| 1133 |
+
"client": false,
|
| 1134 |
+
"direction": [
|
| 1135 |
+
0,
|
| 1136 |
+
0,
|
| 1137 |
+
0
|
| 1138 |
+
],
|
| 1139 |
+
"knockback": 101,
|
| 1140 |
+
"scale": 0,
|
| 1141 |
+
"timer": 0
|
| 1142 |
+
},
|
| 1143 |
+
"rust": {
|
| 1144 |
+
"12": 8,
|
| 1145 |
+
"16": 0,
|
| 1146 |
+
"32": 1065353216,
|
| 1147 |
+
"36": 3221225472,
|
| 1148 |
+
"40": 1077936128
|
| 1149 |
+
},
|
| 1150 |
+
"source_final": null
|
| 1151 |
+
},
|
| 1152 |
+
{
|
| 1153 |
+
"initial_motion": {
|
| 1154 |
+
"12": 8,
|
| 1155 |
+
"16": 0,
|
| 1156 |
+
"32": 1065353216,
|
| 1157 |
+
"36": 3221225472,
|
| 1158 |
+
"40": 1077936128
|
| 1159 |
+
},
|
| 1160 |
+
"input": {
|
| 1161 |
+
"client": false,
|
| 1162 |
+
"direction": [
|
| 1163 |
+
0.6,
|
| 1164 |
+
-0.8,
|
| 1165 |
+
0.25
|
| 1166 |
+
],
|
| 1167 |
+
"knockback": 101,
|
| 1168 |
+
"scale": 0,
|
| 1169 |
+
"timer": 0
|
| 1170 |
+
},
|
| 1171 |
+
"rust": {
|
| 1172 |
+
"12": 8,
|
| 1173 |
+
"16": 0,
|
| 1174 |
+
"32": 1065353216,
|
| 1175 |
+
"36": 3221225472,
|
| 1176 |
+
"40": 1077936128
|
| 1177 |
+
},
|
| 1178 |
+
"source_final": null
|
| 1179 |
+
},
|
| 1180 |
+
{
|
| 1181 |
+
"initial_motion": {
|
| 1182 |
+
"12": 8,
|
| 1183 |
+
"16": 10,
|
| 1184 |
+
"32": 1065353216,
|
| 1185 |
+
"36": 3221225472,
|
| 1186 |
+
"40": 1077936128
|
| 1187 |
+
},
|
| 1188 |
+
"input": {
|
| 1189 |
+
"client": false,
|
| 1190 |
+
"direction": [
|
| 1191 |
+
0,
|
| 1192 |
+
0,
|
| 1193 |
+
0
|
| 1194 |
+
],
|
| 1195 |
+
"knockback": 101,
|
| 1196 |
+
"scale": 0,
|
| 1197 |
+
"timer": 10
|
| 1198 |
+
},
|
| 1199 |
+
"rust": {
|
| 1200 |
+
"12": 8,
|
| 1201 |
+
"16": 10,
|
| 1202 |
+
"32": 1065353216,
|
| 1203 |
+
"36": 3221225472,
|
| 1204 |
+
"40": 1077936128
|
| 1205 |
+
},
|
| 1206 |
+
"source_final": null
|
| 1207 |
+
},
|
| 1208 |
+
{
|
| 1209 |
+
"initial_motion": {
|
| 1210 |
+
"12": 8,
|
| 1211 |
+
"16": 10,
|
| 1212 |
+
"32": 1065353216,
|
| 1213 |
+
"36": 3221225472,
|
| 1214 |
+
"40": 1077936128
|
| 1215 |
+
},
|
| 1216 |
+
"input": {
|
| 1217 |
+
"client": false,
|
| 1218 |
+
"direction": [
|
| 1219 |
+
0.6,
|
| 1220 |
+
-0.8,
|
| 1221 |
+
0.25
|
| 1222 |
+
],
|
| 1223 |
+
"knockback": 101,
|
| 1224 |
+
"scale": 0,
|
| 1225 |
+
"timer": 10
|
| 1226 |
+
},
|
| 1227 |
+
"rust": {
|
| 1228 |
+
"12": 8,
|
| 1229 |
+
"16": 10,
|
| 1230 |
+
"32": 1065353216,
|
| 1231 |
+
"36": 3221225472,
|
| 1232 |
+
"40": 1077936128
|
| 1233 |
+
},
|
| 1234 |
+
"source_final": null
|
| 1235 |
+
},
|
| 1236 |
+
{
|
| 1237 |
+
"initial_motion": {
|
| 1238 |
+
"12": 8,
|
| 1239 |
+
"16": 0,
|
| 1240 |
+
"32": 1065353216,
|
| 1241 |
+
"36": 3221225472,
|
| 1242 |
+
"40": 1077936128
|
| 1243 |
+
},
|
| 1244 |
+
"input": {
|
| 1245 |
+
"client": false,
|
| 1246 |
+
"direction": [
|
| 1247 |
+
0,
|
| 1248 |
+
0,
|
| 1249 |
+
0
|
| 1250 |
+
],
|
| 1251 |
+
"knockback": 101,
|
| 1252 |
+
"scale": 1000,
|
| 1253 |
+
"timer": 0
|
| 1254 |
+
},
|
| 1255 |
+
"rust": {
|
| 1256 |
+
"12": 8,
|
| 1257 |
+
"16": 0,
|
| 1258 |
+
"32": 1065353216,
|
| 1259 |
+
"36": 3221225472,
|
| 1260 |
+
"40": 1077936128
|
| 1261 |
+
},
|
| 1262 |
+
"source_final": null
|
| 1263 |
+
},
|
| 1264 |
+
{
|
| 1265 |
+
"initial_motion": {
|
| 1266 |
+
"12": 8,
|
| 1267 |
+
"16": 0,
|
| 1268 |
+
"32": 1065353216,
|
| 1269 |
+
"36": 3221225472,
|
| 1270 |
+
"40": 1077936128
|
| 1271 |
+
},
|
| 1272 |
+
"input": {
|
| 1273 |
+
"client": false,
|
| 1274 |
+
"direction": [
|
| 1275 |
+
0.6,
|
| 1276 |
+
-0.8,
|
| 1277 |
+
0.25
|
| 1278 |
+
],
|
| 1279 |
+
"knockback": 101,
|
| 1280 |
+
"scale": 1000,
|
| 1281 |
+
"timer": 0
|
| 1282 |
+
},
|
| 1283 |
+
"rust": {
|
| 1284 |
+
"12": 8,
|
| 1285 |
+
"16": 0,
|
| 1286 |
+
"32": 1065353216,
|
| 1287 |
+
"36": 3221225472,
|
| 1288 |
+
"40": 1077936128
|
| 1289 |
+
},
|
| 1290 |
+
"source_final": null
|
| 1291 |
+
},
|
| 1292 |
+
{
|
| 1293 |
+
"initial_motion": {
|
| 1294 |
+
"12": 8,
|
| 1295 |
+
"16": 10,
|
| 1296 |
+
"32": 1065353216,
|
| 1297 |
+
"36": 3221225472,
|
| 1298 |
+
"40": 1077936128
|
| 1299 |
+
},
|
| 1300 |
+
"input": {
|
| 1301 |
+
"client": false,
|
| 1302 |
+
"direction": [
|
| 1303 |
+
0,
|
| 1304 |
+
0,
|
| 1305 |
+
0
|
| 1306 |
+
],
|
| 1307 |
+
"knockback": 101,
|
| 1308 |
+
"scale": 1000,
|
| 1309 |
+
"timer": 10
|
| 1310 |
+
},
|
| 1311 |
+
"rust": {
|
| 1312 |
+
"12": 8,
|
| 1313 |
+
"16": 10,
|
| 1314 |
+
"32": 1065353216,
|
| 1315 |
+
"36": 3221225472,
|
| 1316 |
+
"40": 1077936128
|
| 1317 |
+
},
|
| 1318 |
+
"source_final": null
|
| 1319 |
+
},
|
| 1320 |
+
{
|
| 1321 |
+
"initial_motion": {
|
| 1322 |
+
"12": 8,
|
| 1323 |
+
"16": 10,
|
| 1324 |
+
"32": 1065353216,
|
| 1325 |
+
"36": 3221225472,
|
| 1326 |
+
"40": 1077936128
|
| 1327 |
+
},
|
| 1328 |
+
"input": {
|
| 1329 |
+
"client": false,
|
| 1330 |
+
"direction": [
|
| 1331 |
+
0.6,
|
| 1332 |
+
-0.8,
|
| 1333 |
+
0.25
|
| 1334 |
+
],
|
| 1335 |
+
"knockback": 101,
|
| 1336 |
+
"scale": 1000,
|
| 1337 |
+
"timer": 10
|
| 1338 |
+
},
|
| 1339 |
+
"rust": {
|
| 1340 |
+
"12": 8,
|
| 1341 |
+
"16": 10,
|
| 1342 |
+
"32": 1065353216,
|
| 1343 |
+
"36": 3221225472,
|
| 1344 |
+
"40": 1077936128
|
| 1345 |
+
},
|
| 1346 |
+
"source_final": null
|
| 1347 |
+
},
|
| 1348 |
+
{
|
| 1349 |
+
"initial_motion": {
|
| 1350 |
+
"12": 8,
|
| 1351 |
+
"16": 0,
|
| 1352 |
+
"32": 1065353216,
|
| 1353 |
+
"36": 3221225472,
|
| 1354 |
+
"40": 1077936128
|
| 1355 |
+
},
|
| 1356 |
+
"input": {
|
| 1357 |
+
"client": true,
|
| 1358 |
+
"direction": [
|
| 1359 |
+
0,
|
| 1360 |
+
0,
|
| 1361 |
+
0
|
| 1362 |
+
],
|
| 1363 |
+
"knockback": -2,
|
| 1364 |
+
"scale": 0,
|
| 1365 |
+
"timer": 0
|
| 1366 |
+
},
|
| 1367 |
+
"rust": {
|
| 1368 |
+
"12": 72,
|
| 1369 |
+
"16": 50,
|
| 1370 |
+
"32": 1065353216,
|
| 1371 |
+
"36": 3221225472,
|
| 1372 |
+
"40": 1077936128
|
| 1373 |
+
},
|
| 1374 |
+
"source_final": {
|
| 1375 |
+
"12": 72,
|
| 1376 |
+
"16": 50,
|
| 1377 |
+
"32": 1065353216,
|
| 1378 |
+
"36": 3221225472,
|
| 1379 |
+
"40": 1077936128
|
| 1380 |
+
}
|
| 1381 |
+
},
|
| 1382 |
+
{
|
| 1383 |
+
"initial_motion": {
|
| 1384 |
+
"12": 8,
|
| 1385 |
+
"16": 0,
|
| 1386 |
+
"32": 1065353216,
|
| 1387 |
+
"36": 3221225472,
|
| 1388 |
+
"40": 1077936128
|
| 1389 |
+
},
|
| 1390 |
+
"input": {
|
| 1391 |
+
"client": true,
|
| 1392 |
+
"direction": [
|
| 1393 |
+
0.6,
|
| 1394 |
+
-0.8,
|
| 1395 |
+
0.25
|
| 1396 |
+
],
|
| 1397 |
+
"knockback": -2,
|
| 1398 |
+
"scale": 0,
|
| 1399 |
+
"timer": 0
|
| 1400 |
+
},
|
| 1401 |
+
"rust": {
|
| 1402 |
+
"12": 72,
|
| 1403 |
+
"16": 50,
|
| 1404 |
+
"32": 1065353216,
|
| 1405 |
+
"36": 3221225472,
|
| 1406 |
+
"40": 1077936128
|
| 1407 |
+
},
|
| 1408 |
+
"source_final": {
|
| 1409 |
+
"12": 72,
|
| 1410 |
+
"16": 50,
|
| 1411 |
+
"32": 1065353216,
|
| 1412 |
+
"36": 3221225472,
|
| 1413 |
+
"40": 1077936128
|
| 1414 |
+
}
|
| 1415 |
+
},
|
| 1416 |
+
{
|
| 1417 |
+
"initial_motion": {
|
| 1418 |
+
"12": 8,
|
| 1419 |
+
"16": 10,
|
| 1420 |
+
"32": 1065353216,
|
| 1421 |
+
"36": 3221225472,
|
| 1422 |
+
"40": 1077936128
|
| 1423 |
+
},
|
| 1424 |
+
"input": {
|
| 1425 |
+
"client": true,
|
| 1426 |
+
"direction": [
|
| 1427 |
+
0,
|
| 1428 |
+
0,
|
| 1429 |
+
0
|
| 1430 |
+
],
|
| 1431 |
+
"knockback": -2,
|
| 1432 |
+
"scale": 0,
|
| 1433 |
+
"timer": 10
|
| 1434 |
+
},
|
| 1435 |
+
"rust": {
|
| 1436 |
+
"12": 8,
|
| 1437 |
+
"16": 10,
|
| 1438 |
+
"32": 1065353216,
|
| 1439 |
+
"36": 3221225472,
|
| 1440 |
+
"40": 1077936128
|
| 1441 |
+
},
|
| 1442 |
+
"source_final": {
|
| 1443 |
+
"12": 8,
|
| 1444 |
+
"16": 10,
|
| 1445 |
+
"32": 1065353216,
|
| 1446 |
+
"36": 3221225472,
|
| 1447 |
+
"40": 1077936128
|
| 1448 |
+
}
|
| 1449 |
+
},
|
| 1450 |
+
{
|
| 1451 |
+
"initial_motion": {
|
| 1452 |
+
"12": 8,
|
| 1453 |
+
"16": 10,
|
| 1454 |
+
"32": 1065353216,
|
| 1455 |
+
"36": 3221225472,
|
| 1456 |
+
"40": 1077936128
|
| 1457 |
+
},
|
| 1458 |
+
"input": {
|
| 1459 |
+
"client": true,
|
| 1460 |
+
"direction": [
|
| 1461 |
+
0.6,
|
| 1462 |
+
-0.8,
|
| 1463 |
+
0.25
|
| 1464 |
+
],
|
| 1465 |
+
"knockback": -2,
|
| 1466 |
+
"scale": 0,
|
| 1467 |
+
"timer": 10
|
| 1468 |
+
},
|
| 1469 |
+
"rust": {
|
| 1470 |
+
"12": 8,
|
| 1471 |
+
"16": 10,
|
| 1472 |
+
"32": 1065353216,
|
| 1473 |
+
"36": 3221225472,
|
| 1474 |
+
"40": 1077936128
|
| 1475 |
+
},
|
| 1476 |
+
"source_final": {
|
| 1477 |
+
"12": 8,
|
| 1478 |
+
"16": 10,
|
| 1479 |
+
"32": 1065353216,
|
| 1480 |
+
"36": 3221225472,
|
| 1481 |
+
"40": 1077936128
|
| 1482 |
+
}
|
| 1483 |
+
},
|
| 1484 |
+
{
|
| 1485 |
+
"initial_motion": {
|
| 1486 |
+
"12": 8,
|
| 1487 |
+
"16": 0,
|
| 1488 |
+
"32": 1065353216,
|
| 1489 |
+
"36": 3221225472,
|
| 1490 |
+
"40": 1077936128
|
| 1491 |
+
},
|
| 1492 |
+
"input": {
|
| 1493 |
+
"client": true,
|
| 1494 |
+
"direction": [
|
| 1495 |
+
0,
|
| 1496 |
+
0,
|
| 1497 |
+
0
|
| 1498 |
+
],
|
| 1499 |
+
"knockback": -2,
|
| 1500 |
+
"scale": 1000,
|
| 1501 |
+
"timer": 0
|
| 1502 |
+
},
|
| 1503 |
+
"rust": {
|
| 1504 |
+
"12": 72,
|
| 1505 |
+
"16": 50,
|
| 1506 |
+
"32": 1065353216,
|
| 1507 |
+
"36": 3221225472,
|
| 1508 |
+
"40": 1077936128
|
| 1509 |
+
},
|
| 1510 |
+
"source_final": {
|
| 1511 |
+
"12": 72,
|
| 1512 |
+
"16": 50,
|
| 1513 |
+
"32": 1065353216,
|
| 1514 |
+
"36": 3221225472,
|
| 1515 |
+
"40": 1077936128
|
| 1516 |
+
}
|
| 1517 |
+
},
|
| 1518 |
+
{
|
| 1519 |
+
"initial_motion": {
|
| 1520 |
+
"12": 8,
|
| 1521 |
+
"16": 0,
|
| 1522 |
+
"32": 1065353216,
|
| 1523 |
+
"36": 3221225472,
|
| 1524 |
+
"40": 1077936128
|
| 1525 |
+
},
|
| 1526 |
+
"input": {
|
| 1527 |
+
"client": true,
|
| 1528 |
+
"direction": [
|
| 1529 |
+
0.6,
|
| 1530 |
+
-0.8,
|
| 1531 |
+
0.25
|
| 1532 |
+
],
|
| 1533 |
+
"knockback": -2,
|
| 1534 |
+
"scale": 1000,
|
| 1535 |
+
"timer": 0
|
| 1536 |
+
},
|
| 1537 |
+
"rust": {
|
| 1538 |
+
"12": 72,
|
| 1539 |
+
"16": 50,
|
| 1540 |
+
"32": 3231711232,
|
| 1541 |
+
"36": 1086324736,
|
| 1542 |
+
"40": 1056964608
|
| 1543 |
+
},
|
| 1544 |
+
"source_final": {
|
| 1545 |
+
"12": 72,
|
| 1546 |
+
"16": 50,
|
| 1547 |
+
"32": 3231711232,
|
| 1548 |
+
"36": 1086324736,
|
| 1549 |
+
"40": 1056964608
|
| 1550 |
+
}
|
| 1551 |
+
},
|
| 1552 |
+
{
|
| 1553 |
+
"initial_motion": {
|
| 1554 |
+
"12": 8,
|
| 1555 |
+
"16": 10,
|
| 1556 |
+
"32": 1065353216,
|
| 1557 |
+
"36": 3221225472,
|
| 1558 |
+
"40": 1077936128
|
| 1559 |
+
},
|
| 1560 |
+
"input": {
|
| 1561 |
+
"client": true,
|
| 1562 |
+
"direction": [
|
| 1563 |
+
0,
|
| 1564 |
+
0,
|
| 1565 |
+
0
|
| 1566 |
+
],
|
| 1567 |
+
"knockback": -2,
|
| 1568 |
+
"scale": 1000,
|
| 1569 |
+
"timer": 10
|
| 1570 |
+
},
|
| 1571 |
+
"rust": {
|
| 1572 |
+
"12": 8,
|
| 1573 |
+
"16": 10,
|
| 1574 |
+
"32": 1065353216,
|
| 1575 |
+
"36": 3221225472,
|
| 1576 |
+
"40": 1077936128
|
| 1577 |
+
},
|
| 1578 |
+
"source_final": {
|
| 1579 |
+
"12": 8,
|
| 1580 |
+
"16": 10,
|
| 1581 |
+
"32": 1065353216,
|
| 1582 |
+
"36": 3221225472,
|
| 1583 |
+
"40": 1077936128
|
| 1584 |
+
}
|
| 1585 |
+
},
|
| 1586 |
+
{
|
| 1587 |
+
"initial_motion": {
|
| 1588 |
+
"12": 8,
|
| 1589 |
+
"16": 10,
|
| 1590 |
+
"32": 1065353216,
|
| 1591 |
+
"36": 3221225472,
|
| 1592 |
+
"40": 1077936128
|
| 1593 |
+
},
|
| 1594 |
+
"input": {
|
| 1595 |
+
"client": true,
|
| 1596 |
+
"direction": [
|
| 1597 |
+
0.6,
|
| 1598 |
+
-0.8,
|
| 1599 |
+
0.25
|
| 1600 |
+
],
|
| 1601 |
+
"knockback": -2,
|
| 1602 |
+
"scale": 1000,
|
| 1603 |
+
"timer": 10
|
| 1604 |
+
},
|
| 1605 |
+
"rust": {
|
| 1606 |
+
"12": 8,
|
| 1607 |
+
"16": 10,
|
| 1608 |
+
"32": 3231711232,
|
| 1609 |
+
"36": 1086324736,
|
| 1610 |
+
"40": 1056964608
|
| 1611 |
+
},
|
| 1612 |
+
"source_final": {
|
| 1613 |
+
"12": 8,
|
| 1614 |
+
"16": 10,
|
| 1615 |
+
"32": 3231711232,
|
| 1616 |
+
"36": 1086324736,
|
| 1617 |
+
"40": 1056964608
|
| 1618 |
+
}
|
| 1619 |
+
},
|
| 1620 |
+
{
|
| 1621 |
+
"initial_motion": {
|
| 1622 |
+
"12": 8,
|
| 1623 |
+
"16": 0,
|
| 1624 |
+
"32": 1065353216,
|
| 1625 |
+
"36": 3221225472,
|
| 1626 |
+
"40": 1077936128
|
| 1627 |
+
},
|
| 1628 |
+
"input": {
|
| 1629 |
+
"client": true,
|
| 1630 |
+
"direction": [
|
| 1631 |
+
0,
|
| 1632 |
+
0,
|
| 1633 |
+
0
|
| 1634 |
+
],
|
| 1635 |
+
"knockback": 0,
|
| 1636 |
+
"scale": 0,
|
| 1637 |
+
"timer": 0
|
| 1638 |
+
},
|
| 1639 |
+
"rust": {
|
| 1640 |
+
"12": 8,
|
| 1641 |
+
"16": 0,
|
| 1642 |
+
"32": 1065353216,
|
| 1643 |
+
"36": 3221225472,
|
| 1644 |
+
"40": 1077936128
|
| 1645 |
+
},
|
| 1646 |
+
"source_final": {
|
| 1647 |
+
"12": 8,
|
| 1648 |
+
"16": 0,
|
| 1649 |
+
"32": 1065353216,
|
| 1650 |
+
"36": 3221225472,
|
| 1651 |
+
"40": 1077936128
|
| 1652 |
+
}
|
| 1653 |
+
},
|
| 1654 |
+
{
|
| 1655 |
+
"initial_motion": {
|
| 1656 |
+
"12": 8,
|
| 1657 |
+
"16": 0,
|
| 1658 |
+
"32": 1065353216,
|
| 1659 |
+
"36": 3221225472,
|
| 1660 |
+
"40": 1077936128
|
| 1661 |
+
},
|
| 1662 |
+
"input": {
|
| 1663 |
+
"client": true,
|
| 1664 |
+
"direction": [
|
| 1665 |
+
0.6,
|
| 1666 |
+
-0.8,
|
| 1667 |
+
0.25
|
| 1668 |
+
],
|
| 1669 |
+
"knockback": 0,
|
| 1670 |
+
"scale": 0,
|
| 1671 |
+
"timer": 0
|
| 1672 |
+
},
|
| 1673 |
+
"rust": {
|
| 1674 |
+
"12": 8,
|
| 1675 |
+
"16": 0,
|
| 1676 |
+
"32": 1065353216,
|
| 1677 |
+
"36": 3221225472,
|
| 1678 |
+
"40": 1077936128
|
| 1679 |
+
},
|
| 1680 |
+
"source_final": {
|
| 1681 |
+
"12": 8,
|
| 1682 |
+
"16": 0,
|
| 1683 |
+
"32": 1065353216,
|
| 1684 |
+
"36": 3221225472,
|
| 1685 |
+
"40": 1077936128
|
| 1686 |
+
}
|
| 1687 |
+
},
|
| 1688 |
+
{
|
| 1689 |
+
"initial_motion": {
|
| 1690 |
+
"12": 8,
|
| 1691 |
+
"16": 10,
|
| 1692 |
+
"32": 1065353216,
|
| 1693 |
+
"36": 3221225472,
|
| 1694 |
+
"40": 1077936128
|
| 1695 |
+
},
|
| 1696 |
+
"input": {
|
| 1697 |
+
"client": true,
|
| 1698 |
+
"direction": [
|
| 1699 |
+
0,
|
| 1700 |
+
0,
|
| 1701 |
+
0
|
| 1702 |
+
],
|
| 1703 |
+
"knockback": 0,
|
| 1704 |
+
"scale": 0,
|
| 1705 |
+
"timer": 10
|
| 1706 |
+
},
|
| 1707 |
+
"rust": {
|
| 1708 |
+
"12": 8,
|
| 1709 |
+
"16": 10,
|
| 1710 |
+
"32": 1065353216,
|
| 1711 |
+
"36": 3221225472,
|
| 1712 |
+
"40": 1077936128
|
| 1713 |
+
},
|
| 1714 |
+
"source_final": {
|
| 1715 |
+
"12": 8,
|
| 1716 |
+
"16": 10,
|
| 1717 |
+
"32": 1065353216,
|
| 1718 |
+
"36": 3221225472,
|
| 1719 |
+
"40": 1077936128
|
| 1720 |
+
}
|
| 1721 |
+
},
|
| 1722 |
+
{
|
| 1723 |
+
"initial_motion": {
|
| 1724 |
+
"12": 8,
|
| 1725 |
+
"16": 10,
|
| 1726 |
+
"32": 1065353216,
|
| 1727 |
+
"36": 3221225472,
|
| 1728 |
+
"40": 1077936128
|
| 1729 |
+
},
|
| 1730 |
+
"input": {
|
| 1731 |
+
"client": true,
|
| 1732 |
+
"direction": [
|
| 1733 |
+
0.6,
|
| 1734 |
+
-0.8,
|
| 1735 |
+
0.25
|
| 1736 |
+
],
|
| 1737 |
+
"knockback": 0,
|
| 1738 |
+
"scale": 0,
|
| 1739 |
+
"timer": 10
|
| 1740 |
+
},
|
| 1741 |
+
"rust": {
|
| 1742 |
+
"12": 8,
|
| 1743 |
+
"16": 10,
|
| 1744 |
+
"32": 1065353216,
|
| 1745 |
+
"36": 3221225472,
|
| 1746 |
+
"40": 1077936128
|
| 1747 |
+
},
|
| 1748 |
+
"source_final": {
|
| 1749 |
+
"12": 8,
|
| 1750 |
+
"16": 10,
|
| 1751 |
+
"32": 1065353216,
|
| 1752 |
+
"36": 3221225472,
|
| 1753 |
+
"40": 1077936128
|
| 1754 |
+
}
|
| 1755 |
+
},
|
| 1756 |
+
{
|
| 1757 |
+
"initial_motion": {
|
| 1758 |
+
"12": 8,
|
| 1759 |
+
"16": 0,
|
| 1760 |
+
"32": 1065353216,
|
| 1761 |
+
"36": 3221225472,
|
| 1762 |
+
"40": 1077936128
|
| 1763 |
+
},
|
| 1764 |
+
"input": {
|
| 1765 |
+
"client": true,
|
| 1766 |
+
"direction": [
|
| 1767 |
+
0,
|
| 1768 |
+
0,
|
| 1769 |
+
0
|
| 1770 |
+
],
|
| 1771 |
+
"knockback": 0,
|
| 1772 |
+
"scale": 1000,
|
| 1773 |
+
"timer": 0
|
| 1774 |
+
},
|
| 1775 |
+
"rust": {
|
| 1776 |
+
"12": 8,
|
| 1777 |
+
"16": 0,
|
| 1778 |
+
"32": 1065353216,
|
| 1779 |
+
"36": 3221225472,
|
| 1780 |
+
"40": 1077936128
|
| 1781 |
+
},
|
| 1782 |
+
"source_final": {
|
| 1783 |
+
"12": 8,
|
| 1784 |
+
"16": 0,
|
| 1785 |
+
"32": 1065353216,
|
| 1786 |
+
"36": 3221225472,
|
| 1787 |
+
"40": 1077936128
|
| 1788 |
+
}
|
| 1789 |
+
},
|
| 1790 |
+
{
|
| 1791 |
+
"initial_motion": {
|
| 1792 |
+
"12": 8,
|
| 1793 |
+
"16": 0,
|
| 1794 |
+
"32": 1065353216,
|
| 1795 |
+
"36": 3221225472,
|
| 1796 |
+
"40": 1077936128
|
| 1797 |
+
},
|
| 1798 |
+
"input": {
|
| 1799 |
+
"client": true,
|
| 1800 |
+
"direction": [
|
| 1801 |
+
0.6,
|
| 1802 |
+
-0.8,
|
| 1803 |
+
0.25
|
| 1804 |
+
],
|
| 1805 |
+
"knockback": 0,
|
| 1806 |
+
"scale": 1000,
|
| 1807 |
+
"timer": 0
|
| 1808 |
+
},
|
| 1809 |
+
"rust": {
|
| 1810 |
+
"12": 8,
|
| 1811 |
+
"16": 0,
|
| 1812 |
+
"32": 1065353216,
|
| 1813 |
+
"36": 3221225472,
|
| 1814 |
+
"40": 1077936128
|
| 1815 |
+
},
|
| 1816 |
+
"source_final": {
|
| 1817 |
+
"12": 8,
|
| 1818 |
+
"16": 0,
|
| 1819 |
+
"32": 1065353216,
|
| 1820 |
+
"36": 3221225472,
|
| 1821 |
+
"40": 1077936128
|
| 1822 |
+
}
|
| 1823 |
+
},
|
| 1824 |
+
{
|
| 1825 |
+
"initial_motion": {
|
| 1826 |
+
"12": 8,
|
| 1827 |
+
"16": 10,
|
| 1828 |
+
"32": 1065353216,
|
| 1829 |
+
"36": 3221225472,
|
| 1830 |
+
"40": 1077936128
|
| 1831 |
+
},
|
| 1832 |
+
"input": {
|
| 1833 |
+
"client": true,
|
| 1834 |
+
"direction": [
|
| 1835 |
+
0,
|
| 1836 |
+
0,
|
| 1837 |
+
0
|
| 1838 |
+
],
|
| 1839 |
+
"knockback": 0,
|
| 1840 |
+
"scale": 1000,
|
| 1841 |
+
"timer": 10
|
| 1842 |
+
},
|
| 1843 |
+
"rust": {
|
| 1844 |
+
"12": 8,
|
| 1845 |
+
"16": 10,
|
| 1846 |
+
"32": 1065353216,
|
| 1847 |
+
"36": 3221225472,
|
| 1848 |
+
"40": 1077936128
|
| 1849 |
+
},
|
| 1850 |
+
"source_final": {
|
| 1851 |
+
"12": 8,
|
| 1852 |
+
"16": 10,
|
| 1853 |
+
"32": 1065353216,
|
| 1854 |
+
"36": 3221225472,
|
| 1855 |
+
"40": 1077936128
|
| 1856 |
+
}
|
| 1857 |
+
},
|
| 1858 |
+
{
|
| 1859 |
+
"initial_motion": {
|
| 1860 |
+
"12": 8,
|
| 1861 |
+
"16": 10,
|
| 1862 |
+
"32": 1065353216,
|
| 1863 |
+
"36": 3221225472,
|
| 1864 |
+
"40": 1077936128
|
| 1865 |
+
},
|
| 1866 |
+
"input": {
|
| 1867 |
+
"client": true,
|
| 1868 |
+
"direction": [
|
| 1869 |
+
0.6,
|
| 1870 |
+
-0.8,
|
| 1871 |
+
0.25
|
| 1872 |
+
],
|
| 1873 |
+
"knockback": 0,
|
| 1874 |
+
"scale": 1000,
|
| 1875 |
+
"timer": 10
|
| 1876 |
+
},
|
| 1877 |
+
"rust": {
|
| 1878 |
+
"12": 8,
|
| 1879 |
+
"16": 10,
|
| 1880 |
+
"32": 1065353216,
|
| 1881 |
+
"36": 3221225472,
|
| 1882 |
+
"40": 1077936128
|
| 1883 |
+
},
|
| 1884 |
+
"source_final": {
|
| 1885 |
+
"12": 8,
|
| 1886 |
+
"16": 10,
|
| 1887 |
+
"32": 1065353216,
|
| 1888 |
+
"36": 3221225472,
|
| 1889 |
+
"40": 1077936128
|
| 1890 |
+
}
|
| 1891 |
+
},
|
| 1892 |
+
{
|
| 1893 |
+
"initial_motion": {
|
| 1894 |
+
"12": 8,
|
| 1895 |
+
"16": 0,
|
| 1896 |
+
"32": 1065353216,
|
| 1897 |
+
"36": 3221225472,
|
| 1898 |
+
"40": 1077936128
|
| 1899 |
+
},
|
| 1900 |
+
"input": {
|
| 1901 |
+
"client": true,
|
| 1902 |
+
"direction": [
|
| 1903 |
+
0,
|
| 1904 |
+
0,
|
| 1905 |
+
0
|
| 1906 |
+
],
|
| 1907 |
+
"knockback": 0.25,
|
| 1908 |
+
"scale": 0,
|
| 1909 |
+
"timer": 0
|
| 1910 |
+
},
|
| 1911 |
+
"rust": {
|
| 1912 |
+
"12": 72,
|
| 1913 |
+
"16": 50,
|
| 1914 |
+
"32": 1065353216,
|
| 1915 |
+
"36": 3221225472,
|
| 1916 |
+
"40": 1077936128
|
| 1917 |
+
},
|
| 1918 |
+
"source_final": {
|
| 1919 |
+
"12": 72,
|
| 1920 |
+
"16": 50,
|
| 1921 |
+
"32": 1065353216,
|
| 1922 |
+
"36": 3221225472,
|
| 1923 |
+
"40": 1077936128
|
| 1924 |
+
}
|
| 1925 |
+
},
|
| 1926 |
+
{
|
| 1927 |
+
"initial_motion": {
|
| 1928 |
+
"12": 8,
|
| 1929 |
+
"16": 0,
|
| 1930 |
+
"32": 1065353216,
|
| 1931 |
+
"36": 3221225472,
|
| 1932 |
+
"40": 1077936128
|
| 1933 |
+
},
|
| 1934 |
+
"input": {
|
| 1935 |
+
"client": true,
|
| 1936 |
+
"direction": [
|
| 1937 |
+
0.6,
|
| 1938 |
+
-0.8,
|
| 1939 |
+
0.25
|
| 1940 |
+
],
|
| 1941 |
+
"knockback": 0.25,
|
| 1942 |
+
"scale": 0,
|
| 1943 |
+
"timer": 0
|
| 1944 |
+
},
|
| 1945 |
+
"rust": {
|
| 1946 |
+
"12": 72,
|
| 1947 |
+
"16": 50,
|
| 1948 |
+
"32": 1065353216,
|
| 1949 |
+
"36": 3221225472,
|
| 1950 |
+
"40": 1077936128
|
| 1951 |
+
},
|
| 1952 |
+
"source_final": {
|
| 1953 |
+
"12": 72,
|
| 1954 |
+
"16": 50,
|
| 1955 |
+
"32": 1065353216,
|
| 1956 |
+
"36": 3221225472,
|
| 1957 |
+
"40": 1077936128
|
| 1958 |
+
}
|
| 1959 |
+
},
|
| 1960 |
+
{
|
| 1961 |
+
"initial_motion": {
|
| 1962 |
+
"12": 8,
|
| 1963 |
+
"16": 10,
|
| 1964 |
+
"32": 1065353216,
|
| 1965 |
+
"36": 3221225472,
|
| 1966 |
+
"40": 1077936128
|
| 1967 |
+
},
|
| 1968 |
+
"input": {
|
| 1969 |
+
"client": true,
|
| 1970 |
+
"direction": [
|
| 1971 |
+
0,
|
| 1972 |
+
0,
|
| 1973 |
+
0
|
| 1974 |
+
],
|
| 1975 |
+
"knockback": 0.25,
|
| 1976 |
+
"scale": 0,
|
| 1977 |
+
"timer": 10
|
| 1978 |
+
},
|
| 1979 |
+
"rust": {
|
| 1980 |
+
"12": 8,
|
| 1981 |
+
"16": 10,
|
| 1982 |
+
"32": 1065353216,
|
| 1983 |
+
"36": 3221225472,
|
| 1984 |
+
"40": 1077936128
|
| 1985 |
+
},
|
| 1986 |
+
"source_final": {
|
| 1987 |
+
"12": 8,
|
| 1988 |
+
"16": 10,
|
| 1989 |
+
"32": 1065353216,
|
| 1990 |
+
"36": 3221225472,
|
| 1991 |
+
"40": 1077936128
|
| 1992 |
+
}
|
| 1993 |
+
},
|
| 1994 |
+
{
|
| 1995 |
+
"initial_motion": {
|
| 1996 |
+
"12": 8,
|
| 1997 |
+
"16": 10,
|
| 1998 |
+
"32": 1065353216,
|
| 1999 |
+
"36": 3221225472,
|
| 2000 |
+
"40": 1077936128
|
| 2001 |
+
},
|
| 2002 |
+
"input": {
|
| 2003 |
+
"client": true,
|
| 2004 |
+
"direction": [
|
| 2005 |
+
0.6,
|
| 2006 |
+
-0.8,
|
| 2007 |
+
0.25
|
| 2008 |
+
],
|
| 2009 |
+
"knockback": 0.25,
|
| 2010 |
+
"scale": 0,
|
| 2011 |
+
"timer": 10
|
| 2012 |
+
},
|
| 2013 |
+
"rust": {
|
| 2014 |
+
"12": 8,
|
| 2015 |
+
"16": 10,
|
| 2016 |
+
"32": 1065353216,
|
| 2017 |
+
"36": 3221225472,
|
| 2018 |
+
"40": 1077936128
|
| 2019 |
+
},
|
| 2020 |
+
"source_final": {
|
| 2021 |
+
"12": 8,
|
| 2022 |
+
"16": 10,
|
| 2023 |
+
"32": 1065353216,
|
| 2024 |
+
"36": 3221225472,
|
| 2025 |
+
"40": 1077936128
|
| 2026 |
+
}
|
| 2027 |
+
},
|
| 2028 |
+
{
|
| 2029 |
+
"initial_motion": {
|
| 2030 |
+
"12": 8,
|
| 2031 |
+
"16": 0,
|
| 2032 |
+
"32": 1065353216,
|
| 2033 |
+
"36": 3221225472,
|
| 2034 |
+
"40": 1077936128
|
| 2035 |
+
},
|
| 2036 |
+
"input": {
|
| 2037 |
+
"client": true,
|
| 2038 |
+
"direction": [
|
| 2039 |
+
0,
|
| 2040 |
+
0,
|
| 2041 |
+
0
|
| 2042 |
+
],
|
| 2043 |
+
"knockback": 0.25,
|
| 2044 |
+
"scale": 1000,
|
| 2045 |
+
"timer": 0
|
| 2046 |
+
},
|
| 2047 |
+
"rust": {
|
| 2048 |
+
"12": 72,
|
| 2049 |
+
"16": 50,
|
| 2050 |
+
"32": 1065353216,
|
| 2051 |
+
"36": 3221225472,
|
| 2052 |
+
"40": 1077936128
|
| 2053 |
+
},
|
| 2054 |
+
"source_final": {
|
| 2055 |
+
"12": 72,
|
| 2056 |
+
"16": 50,
|
| 2057 |
+
"32": 1065353216,
|
| 2058 |
+
"36": 3221225472,
|
| 2059 |
+
"40": 1077936128
|
| 2060 |
+
}
|
| 2061 |
+
},
|
| 2062 |
+
{
|
| 2063 |
+
"initial_motion": {
|
| 2064 |
+
"12": 8,
|
| 2065 |
+
"16": 0,
|
| 2066 |
+
"32": 1065353216,
|
| 2067 |
+
"36": 3221225472,
|
| 2068 |
+
"40": 1077936128
|
| 2069 |
+
},
|
| 2070 |
+
"input": {
|
| 2071 |
+
"client": true,
|
| 2072 |
+
"direction": [
|
| 2073 |
+
0.6,
|
| 2074 |
+
-0.8,
|
| 2075 |
+
0.25
|
| 2076 |
+
],
|
| 2077 |
+
"knockback": 0.25,
|
| 2078 |
+
"scale": 1000,
|
| 2079 |
+
"timer": 0
|
| 2080 |
+
},
|
| 2081 |
+
"rust": {
|
| 2082 |
+
"12": 72,
|
| 2083 |
+
"16": 50,
|
| 2084 |
+
"32": 1071644672,
|
| 2085 |
+
"36": 3225419776,
|
| 2086 |
+
"40": 1079246848
|
| 2087 |
+
},
|
| 2088 |
+
"source_final": {
|
| 2089 |
+
"12": 72,
|
| 2090 |
+
"16": 50,
|
| 2091 |
+
"32": 1071644672,
|
| 2092 |
+
"36": 3225419776,
|
| 2093 |
+
"40": 1079246848
|
| 2094 |
+
}
|
| 2095 |
+
},
|
| 2096 |
+
{
|
| 2097 |
+
"initial_motion": {
|
| 2098 |
+
"12": 8,
|
| 2099 |
+
"16": 10,
|
| 2100 |
+
"32": 1065353216,
|
| 2101 |
+
"36": 3221225472,
|
| 2102 |
+
"40": 1077936128
|
| 2103 |
+
},
|
| 2104 |
+
"input": {
|
| 2105 |
+
"client": true,
|
| 2106 |
+
"direction": [
|
| 2107 |
+
0,
|
| 2108 |
+
0,
|
| 2109 |
+
0
|
| 2110 |
+
],
|
| 2111 |
+
"knockback": 0.25,
|
| 2112 |
+
"scale": 1000,
|
| 2113 |
+
"timer": 10
|
| 2114 |
+
},
|
| 2115 |
+
"rust": {
|
| 2116 |
+
"12": 8,
|
| 2117 |
+
"16": 10,
|
| 2118 |
+
"32": 1065353216,
|
| 2119 |
+
"36": 3221225472,
|
| 2120 |
+
"40": 1077936128
|
| 2121 |
+
},
|
| 2122 |
+
"source_final": {
|
| 2123 |
+
"12": 8,
|
| 2124 |
+
"16": 10,
|
| 2125 |
+
"32": 1065353216,
|
| 2126 |
+
"36": 3221225472,
|
| 2127 |
+
"40": 1077936128
|
| 2128 |
+
}
|
| 2129 |
+
},
|
| 2130 |
+
{
|
| 2131 |
+
"initial_motion": {
|
| 2132 |
+
"12": 8,
|
| 2133 |
+
"16": 10,
|
| 2134 |
+
"32": 1065353216,
|
| 2135 |
+
"36": 3221225472,
|
| 2136 |
+
"40": 1077936128
|
| 2137 |
+
},
|
| 2138 |
+
"input": {
|
| 2139 |
+
"client": true,
|
| 2140 |
+
"direction": [
|
| 2141 |
+
0.6,
|
| 2142 |
+
-0.8,
|
| 2143 |
+
0.25
|
| 2144 |
+
],
|
| 2145 |
+
"knockback": 0.25,
|
| 2146 |
+
"scale": 1000,
|
| 2147 |
+
"timer": 10
|
| 2148 |
+
},
|
| 2149 |
+
"rust": {
|
| 2150 |
+
"12": 8,
|
| 2151 |
+
"16": 10,
|
| 2152 |
+
"32": 1071644672,
|
| 2153 |
+
"36": 3225419776,
|
| 2154 |
+
"40": 1079246848
|
| 2155 |
+
},
|
| 2156 |
+
"source_final": {
|
| 2157 |
+
"12": 8,
|
| 2158 |
+
"16": 10,
|
| 2159 |
+
"32": 1071644672,
|
| 2160 |
+
"36": 3225419776,
|
| 2161 |
+
"40": 1079246848
|
| 2162 |
+
}
|
| 2163 |
+
},
|
| 2164 |
+
{
|
| 2165 |
+
"initial_motion": {
|
| 2166 |
+
"12": 8,
|
| 2167 |
+
"16": 0,
|
| 2168 |
+
"32": 1065353216,
|
| 2169 |
+
"36": 3221225472,
|
| 2170 |
+
"40": 1077936128
|
| 2171 |
+
},
|
| 2172 |
+
"input": {
|
| 2173 |
+
"client": true,
|
| 2174 |
+
"direction": [
|
| 2175 |
+
0,
|
| 2176 |
+
0,
|
| 2177 |
+
0
|
| 2178 |
+
],
|
| 2179 |
+
"knockback": 25,
|
| 2180 |
+
"scale": 0,
|
| 2181 |
+
"timer": 0
|
| 2182 |
+
},
|
| 2183 |
+
"rust": {
|
| 2184 |
+
"12": 72,
|
| 2185 |
+
"16": 50,
|
| 2186 |
+
"32": 1065353216,
|
| 2187 |
+
"36": 3221225472,
|
| 2188 |
+
"40": 1077936128
|
| 2189 |
+
},
|
| 2190 |
+
"source_final": {
|
| 2191 |
+
"12": 72,
|
| 2192 |
+
"16": 50,
|
| 2193 |
+
"32": 1065353216,
|
| 2194 |
+
"36": 3221225472,
|
| 2195 |
+
"40": 1077936128
|
| 2196 |
+
}
|
| 2197 |
+
},
|
| 2198 |
+
{
|
| 2199 |
+
"initial_motion": {
|
| 2200 |
+
"12": 8,
|
| 2201 |
+
"16": 0,
|
| 2202 |
+
"32": 1065353216,
|
| 2203 |
+
"36": 3221225472,
|
| 2204 |
+
"40": 1077936128
|
| 2205 |
+
},
|
| 2206 |
+
"input": {
|
| 2207 |
+
"client": true,
|
| 2208 |
+
"direction": [
|
| 2209 |
+
0.6,
|
| 2210 |
+
-0.8,
|
| 2211 |
+
0.25
|
| 2212 |
+
],
|
| 2213 |
+
"knockback": 25,
|
| 2214 |
+
"scale": 0,
|
| 2215 |
+
"timer": 0
|
| 2216 |
+
},
|
| 2217 |
+
"rust": {
|
| 2218 |
+
"12": 72,
|
| 2219 |
+
"16": 50,
|
| 2220 |
+
"32": 1065353216,
|
| 2221 |
+
"36": 3221225472,
|
| 2222 |
+
"40": 1077936128
|
| 2223 |
+
},
|
| 2224 |
+
"source_final": {
|
| 2225 |
+
"12": 72,
|
| 2226 |
+
"16": 50,
|
| 2227 |
+
"32": 1065353216,
|
| 2228 |
+
"36": 3221225472,
|
| 2229 |
+
"40": 1077936128
|
| 2230 |
+
}
|
| 2231 |
+
},
|
| 2232 |
+
{
|
| 2233 |
+
"initial_motion": {
|
| 2234 |
+
"12": 8,
|
| 2235 |
+
"16": 10,
|
| 2236 |
+
"32": 1065353216,
|
| 2237 |
+
"36": 3221225472,
|
| 2238 |
+
"40": 1077936128
|
| 2239 |
+
},
|
| 2240 |
+
"input": {
|
| 2241 |
+
"client": true,
|
| 2242 |
+
"direction": [
|
| 2243 |
+
0,
|
| 2244 |
+
0,
|
| 2245 |
+
0
|
| 2246 |
+
],
|
| 2247 |
+
"knockback": 25,
|
| 2248 |
+
"scale": 0,
|
| 2249 |
+
"timer": 10
|
| 2250 |
+
},
|
| 2251 |
+
"rust": {
|
| 2252 |
+
"12": 8,
|
| 2253 |
+
"16": 10,
|
| 2254 |
+
"32": 1065353216,
|
| 2255 |
+
"36": 3221225472,
|
| 2256 |
+
"40": 1077936128
|
| 2257 |
+
},
|
| 2258 |
+
"source_final": {
|
| 2259 |
+
"12": 8,
|
| 2260 |
+
"16": 10,
|
| 2261 |
+
"32": 1065353216,
|
| 2262 |
+
"36": 3221225472,
|
| 2263 |
+
"40": 1077936128
|
| 2264 |
+
}
|
| 2265 |
+
},
|
| 2266 |
+
{
|
| 2267 |
+
"initial_motion": {
|
| 2268 |
+
"12": 8,
|
| 2269 |
+
"16": 10,
|
| 2270 |
+
"32": 1065353216,
|
| 2271 |
+
"36": 3221225472,
|
| 2272 |
+
"40": 1077936128
|
| 2273 |
+
},
|
| 2274 |
+
"input": {
|
| 2275 |
+
"client": true,
|
| 2276 |
+
"direction": [
|
| 2277 |
+
0.6,
|
| 2278 |
+
-0.8,
|
| 2279 |
+
0.25
|
| 2280 |
+
],
|
| 2281 |
+
"knockback": 25,
|
| 2282 |
+
"scale": 0,
|
| 2283 |
+
"timer": 10
|
| 2284 |
+
},
|
| 2285 |
+
"rust": {
|
| 2286 |
+
"12": 8,
|
| 2287 |
+
"16": 10,
|
| 2288 |
+
"32": 1065353216,
|
| 2289 |
+
"36": 3221225472,
|
| 2290 |
+
"40": 1077936128
|
| 2291 |
+
},
|
| 2292 |
+
"source_final": {
|
| 2293 |
+
"12": 8,
|
| 2294 |
+
"16": 10,
|
| 2295 |
+
"32": 1065353216,
|
| 2296 |
+
"36": 3221225472,
|
| 2297 |
+
"40": 1077936128
|
| 2298 |
+
}
|
| 2299 |
+
},
|
| 2300 |
+
{
|
| 2301 |
+
"initial_motion": {
|
| 2302 |
+
"12": 8,
|
| 2303 |
+
"16": 0,
|
| 2304 |
+
"32": 1065353216,
|
| 2305 |
+
"36": 3221225472,
|
| 2306 |
+
"40": 1077936128
|
| 2307 |
+
},
|
| 2308 |
+
"input": {
|
| 2309 |
+
"client": true,
|
| 2310 |
+
"direction": [
|
| 2311 |
+
0,
|
| 2312 |
+
0,
|
| 2313 |
+
0
|
| 2314 |
+
],
|
| 2315 |
+
"knockback": 25,
|
| 2316 |
+
"scale": 1000,
|
| 2317 |
+
"timer": 0
|
| 2318 |
+
},
|
| 2319 |
+
"rust": {
|
| 2320 |
+
"12": 72,
|
| 2321 |
+
"16": 50,
|
| 2322 |
+
"32": 1065353216,
|
| 2323 |
+
"36": 3221225472,
|
| 2324 |
+
"40": 1077936128
|
| 2325 |
+
},
|
| 2326 |
+
"source_final": {
|
| 2327 |
+
"12": 72,
|
| 2328 |
+
"16": 50,
|
| 2329 |
+
"32": 1065353216,
|
| 2330 |
+
"36": 3221225472,
|
| 2331 |
+
"40": 1077936128
|
| 2332 |
+
}
|
| 2333 |
+
},
|
| 2334 |
+
{
|
| 2335 |
+
"initial_motion": {
|
| 2336 |
+
"12": 8,
|
| 2337 |
+
"16": 0,
|
| 2338 |
+
"32": 1065353216,
|
| 2339 |
+
"36": 3221225472,
|
| 2340 |
+
"40": 1077936128
|
| 2341 |
+
},
|
| 2342 |
+
"input": {
|
| 2343 |
+
"client": true,
|
| 2344 |
+
"direction": [
|
| 2345 |
+
0.6,
|
| 2346 |
+
-0.8,
|
| 2347 |
+
0.25
|
| 2348 |
+
],
|
| 2349 |
+
"knockback": 25,
|
| 2350 |
+
"scale": 1000,
|
| 2351 |
+
"timer": 0
|
| 2352 |
+
},
|
| 2353 |
+
"rust": {
|
| 2354 |
+
"12": 72,
|
| 2355 |
+
"16": 50,
|
| 2356 |
+
"32": 1117257728,
|
| 2357 |
+
"36": 3268149248,
|
| 2358 |
+
"40": 1107886080
|
| 2359 |
+
},
|
| 2360 |
+
"source_final": {
|
| 2361 |
+
"12": 72,
|
| 2362 |
+
"16": 50,
|
| 2363 |
+
"32": 1117257728,
|
| 2364 |
+
"36": 3268149248,
|
| 2365 |
+
"40": 1107886080
|
| 2366 |
+
}
|
| 2367 |
+
},
|
| 2368 |
+
{
|
| 2369 |
+
"initial_motion": {
|
| 2370 |
+
"12": 8,
|
| 2371 |
+
"16": 10,
|
| 2372 |
+
"32": 1065353216,
|
| 2373 |
+
"36": 3221225472,
|
| 2374 |
+
"40": 1077936128
|
| 2375 |
+
},
|
| 2376 |
+
"input": {
|
| 2377 |
+
"client": true,
|
| 2378 |
+
"direction": [
|
| 2379 |
+
0,
|
| 2380 |
+
0,
|
| 2381 |
+
0
|
| 2382 |
+
],
|
| 2383 |
+
"knockback": 25,
|
| 2384 |
+
"scale": 1000,
|
| 2385 |
+
"timer": 10
|
| 2386 |
+
},
|
| 2387 |
+
"rust": {
|
| 2388 |
+
"12": 8,
|
| 2389 |
+
"16": 10,
|
| 2390 |
+
"32": 1065353216,
|
| 2391 |
+
"36": 3221225472,
|
| 2392 |
+
"40": 1077936128
|
| 2393 |
+
},
|
| 2394 |
+
"source_final": {
|
| 2395 |
+
"12": 8,
|
| 2396 |
+
"16": 10,
|
| 2397 |
+
"32": 1065353216,
|
| 2398 |
+
"36": 3221225472,
|
| 2399 |
+
"40": 1077936128
|
| 2400 |
+
}
|
| 2401 |
+
},
|
| 2402 |
+
{
|
| 2403 |
+
"initial_motion": {
|
| 2404 |
+
"12": 8,
|
| 2405 |
+
"16": 10,
|
| 2406 |
+
"32": 1065353216,
|
| 2407 |
+
"36": 3221225472,
|
| 2408 |
+
"40": 1077936128
|
| 2409 |
+
},
|
| 2410 |
+
"input": {
|
| 2411 |
+
"client": true,
|
| 2412 |
+
"direction": [
|
| 2413 |
+
0.6,
|
| 2414 |
+
-0.8,
|
| 2415 |
+
0.25
|
| 2416 |
+
],
|
| 2417 |
+
"knockback": 25,
|
| 2418 |
+
"scale": 1000,
|
| 2419 |
+
"timer": 10
|
| 2420 |
+
},
|
| 2421 |
+
"rust": {
|
| 2422 |
+
"12": 8,
|
| 2423 |
+
"16": 10,
|
| 2424 |
+
"32": 1117257728,
|
| 2425 |
+
"36": 3268149248,
|
| 2426 |
+
"40": 1107886080
|
| 2427 |
+
},
|
| 2428 |
+
"source_final": {
|
| 2429 |
+
"12": 8,
|
| 2430 |
+
"16": 10,
|
| 2431 |
+
"32": 1117257728,
|
| 2432 |
+
"36": 3268149248,
|
| 2433 |
+
"40": 1107886080
|
| 2434 |
+
}
|
| 2435 |
+
},
|
| 2436 |
+
{
|
| 2437 |
+
"initial_motion": {
|
| 2438 |
+
"12": 8,
|
| 2439 |
+
"16": 0,
|
| 2440 |
+
"32": 1065353216,
|
| 2441 |
+
"36": 3221225472,
|
| 2442 |
+
"40": 1077936128
|
| 2443 |
+
},
|
| 2444 |
+
"input": {
|
| 2445 |
+
"client": true,
|
| 2446 |
+
"direction": [
|
| 2447 |
+
0,
|
| 2448 |
+
0,
|
| 2449 |
+
0
|
| 2450 |
+
],
|
| 2451 |
+
"knockback": 100,
|
| 2452 |
+
"scale": 0,
|
| 2453 |
+
"timer": 0
|
| 2454 |
+
},
|
| 2455 |
+
"rust": {
|
| 2456 |
+
"12": 72,
|
| 2457 |
+
"16": 200,
|
| 2458 |
+
"32": 1065353216,
|
| 2459 |
+
"36": 3221225472,
|
| 2460 |
+
"40": 1077936128
|
| 2461 |
+
},
|
| 2462 |
+
"source_final": {
|
| 2463 |
+
"12": 72,
|
| 2464 |
+
"16": 200,
|
| 2465 |
+
"32": 1065353216,
|
| 2466 |
+
"36": 3221225472,
|
| 2467 |
+
"40": 1077936128
|
| 2468 |
+
}
|
| 2469 |
+
},
|
| 2470 |
+
{
|
| 2471 |
+
"initial_motion": {
|
| 2472 |
+
"12": 8,
|
| 2473 |
+
"16": 0,
|
| 2474 |
+
"32": 1065353216,
|
| 2475 |
+
"36": 3221225472,
|
| 2476 |
+
"40": 1077936128
|
| 2477 |
+
},
|
| 2478 |
+
"input": {
|
| 2479 |
+
"client": true,
|
| 2480 |
+
"direction": [
|
| 2481 |
+
0.6,
|
| 2482 |
+
-0.8,
|
| 2483 |
+
0.25
|
| 2484 |
+
],
|
| 2485 |
+
"knockback": 100,
|
| 2486 |
+
"scale": 0,
|
| 2487 |
+
"timer": 0
|
| 2488 |
+
},
|
| 2489 |
+
"rust": {
|
| 2490 |
+
"12": 72,
|
| 2491 |
+
"16": 200,
|
| 2492 |
+
"32": 1065353216,
|
| 2493 |
+
"36": 3221225472,
|
| 2494 |
+
"40": 1077936128
|
| 2495 |
+
},
|
| 2496 |
+
"source_final": {
|
| 2497 |
+
"12": 72,
|
| 2498 |
+
"16": 200,
|
| 2499 |
+
"32": 1065353216,
|
| 2500 |
+
"36": 3221225472,
|
| 2501 |
+
"40": 1077936128
|
| 2502 |
+
}
|
| 2503 |
+
},
|
| 2504 |
+
{
|
| 2505 |
+
"initial_motion": {
|
| 2506 |
+
"12": 8,
|
| 2507 |
+
"16": 10,
|
| 2508 |
+
"32": 1065353216,
|
| 2509 |
+
"36": 3221225472,
|
| 2510 |
+
"40": 1077936128
|
| 2511 |
+
},
|
| 2512 |
+
"input": {
|
| 2513 |
+
"client": true,
|
| 2514 |
+
"direction": [
|
| 2515 |
+
0,
|
| 2516 |
+
0,
|
| 2517 |
+
0
|
| 2518 |
+
],
|
| 2519 |
+
"knockback": 100,
|
| 2520 |
+
"scale": 0,
|
| 2521 |
+
"timer": 10
|
| 2522 |
+
},
|
| 2523 |
+
"rust": {
|
| 2524 |
+
"12": 8,
|
| 2525 |
+
"16": 10,
|
| 2526 |
+
"32": 1065353216,
|
| 2527 |
+
"36": 3221225472,
|
| 2528 |
+
"40": 1077936128
|
| 2529 |
+
},
|
| 2530 |
+
"source_final": {
|
| 2531 |
+
"12": 8,
|
| 2532 |
+
"16": 10,
|
| 2533 |
+
"32": 1065353216,
|
| 2534 |
+
"36": 3221225472,
|
| 2535 |
+
"40": 1077936128
|
| 2536 |
+
}
|
| 2537 |
+
},
|
| 2538 |
+
{
|
| 2539 |
+
"initial_motion": {
|
| 2540 |
+
"12": 8,
|
| 2541 |
+
"16": 10,
|
| 2542 |
+
"32": 1065353216,
|
| 2543 |
+
"36": 3221225472,
|
| 2544 |
+
"40": 1077936128
|
| 2545 |
+
},
|
| 2546 |
+
"input": {
|
| 2547 |
+
"client": true,
|
| 2548 |
+
"direction": [
|
| 2549 |
+
0.6,
|
| 2550 |
+
-0.8,
|
| 2551 |
+
0.25
|
| 2552 |
+
],
|
| 2553 |
+
"knockback": 100,
|
| 2554 |
+
"scale": 0,
|
| 2555 |
+
"timer": 10
|
| 2556 |
+
},
|
| 2557 |
+
"rust": {
|
| 2558 |
+
"12": 8,
|
| 2559 |
+
"16": 10,
|
| 2560 |
+
"32": 1065353216,
|
| 2561 |
+
"36": 3221225472,
|
| 2562 |
+
"40": 1077936128
|
| 2563 |
+
},
|
| 2564 |
+
"source_final": {
|
| 2565 |
+
"12": 8,
|
| 2566 |
+
"16": 10,
|
| 2567 |
+
"32": 1065353216,
|
| 2568 |
+
"36": 3221225472,
|
| 2569 |
+
"40": 1077936128
|
| 2570 |
+
}
|
| 2571 |
+
},
|
| 2572 |
+
{
|
| 2573 |
+
"initial_motion": {
|
| 2574 |
+
"12": 8,
|
| 2575 |
+
"16": 0,
|
| 2576 |
+
"32": 1065353216,
|
| 2577 |
+
"36": 3221225472,
|
| 2578 |
+
"40": 1077936128
|
| 2579 |
+
},
|
| 2580 |
+
"input": {
|
| 2581 |
+
"client": true,
|
| 2582 |
+
"direction": [
|
| 2583 |
+
0,
|
| 2584 |
+
0,
|
| 2585 |
+
0
|
| 2586 |
+
],
|
| 2587 |
+
"knockback": 100,
|
| 2588 |
+
"scale": 1000,
|
| 2589 |
+
"timer": 0
|
| 2590 |
+
},
|
| 2591 |
+
"rust": {
|
| 2592 |
+
"12": 72,
|
| 2593 |
+
"16": 200,
|
| 2594 |
+
"32": 1065353216,
|
| 2595 |
+
"36": 3221225472,
|
| 2596 |
+
"40": 1077936128
|
| 2597 |
+
},
|
| 2598 |
+
"source_final": {
|
| 2599 |
+
"12": 72,
|
| 2600 |
+
"16": 200,
|
| 2601 |
+
"32": 1065353216,
|
| 2602 |
+
"36": 3221225472,
|
| 2603 |
+
"40": 1077936128
|
| 2604 |
+
}
|
| 2605 |
+
},
|
| 2606 |
+
{
|
| 2607 |
+
"initial_motion": {
|
| 2608 |
+
"12": 8,
|
| 2609 |
+
"16": 0,
|
| 2610 |
+
"32": 1065353216,
|
| 2611 |
+
"36": 3221225472,
|
| 2612 |
+
"40": 1077936128
|
| 2613 |
+
},
|
| 2614 |
+
"input": {
|
| 2615 |
+
"client": true,
|
| 2616 |
+
"direction": [
|
| 2617 |
+
0.6,
|
| 2618 |
+
-0.8,
|
| 2619 |
+
0.25
|
| 2620 |
+
],
|
| 2621 |
+
"knockback": 100,
|
| 2622 |
+
"scale": 1000,
|
| 2623 |
+
"timer": 0
|
| 2624 |
+
},
|
| 2625 |
+
"rust": {
|
| 2626 |
+
"12": 72,
|
| 2627 |
+
"16": 200,
|
| 2628 |
+
"32": 1133936640,
|
| 2629 |
+
"36": 3284729856,
|
| 2630 |
+
"40": 1124073472
|
| 2631 |
+
},
|
| 2632 |
+
"source_final": {
|
| 2633 |
+
"12": 72,
|
| 2634 |
+
"16": 200,
|
| 2635 |
+
"32": 1133936640,
|
| 2636 |
+
"36": 3284729856,
|
| 2637 |
+
"40": 1124073472
|
| 2638 |
+
}
|
| 2639 |
+
},
|
| 2640 |
+
{
|
| 2641 |
+
"initial_motion": {
|
| 2642 |
+
"12": 8,
|
| 2643 |
+
"16": 10,
|
| 2644 |
+
"32": 1065353216,
|
| 2645 |
+
"36": 3221225472,
|
| 2646 |
+
"40": 1077936128
|
| 2647 |
+
},
|
| 2648 |
+
"input": {
|
| 2649 |
+
"client": true,
|
| 2650 |
+
"direction": [
|
| 2651 |
+
0,
|
| 2652 |
+
0,
|
| 2653 |
+
0
|
| 2654 |
+
],
|
| 2655 |
+
"knockback": 100,
|
| 2656 |
+
"scale": 1000,
|
| 2657 |
+
"timer": 10
|
| 2658 |
+
},
|
| 2659 |
+
"rust": {
|
| 2660 |
+
"12": 8,
|
| 2661 |
+
"16": 10,
|
| 2662 |
+
"32": 1065353216,
|
| 2663 |
+
"36": 3221225472,
|
| 2664 |
+
"40": 1077936128
|
| 2665 |
+
},
|
| 2666 |
+
"source_final": {
|
| 2667 |
+
"12": 8,
|
| 2668 |
+
"16": 10,
|
| 2669 |
+
"32": 1065353216,
|
| 2670 |
+
"36": 3221225472,
|
| 2671 |
+
"40": 1077936128
|
| 2672 |
+
}
|
| 2673 |
+
},
|
| 2674 |
+
{
|
| 2675 |
+
"initial_motion": {
|
| 2676 |
+
"12": 8,
|
| 2677 |
+
"16": 10,
|
| 2678 |
+
"32": 1065353216,
|
| 2679 |
+
"36": 3221225472,
|
| 2680 |
+
"40": 1077936128
|
| 2681 |
+
},
|
| 2682 |
+
"input": {
|
| 2683 |
+
"client": true,
|
| 2684 |
+
"direction": [
|
| 2685 |
+
0.6,
|
| 2686 |
+
-0.8,
|
| 2687 |
+
0.25
|
| 2688 |
+
],
|
| 2689 |
+
"knockback": 100,
|
| 2690 |
+
"scale": 1000,
|
| 2691 |
+
"timer": 10
|
| 2692 |
+
},
|
| 2693 |
+
"rust": {
|
| 2694 |
+
"12": 8,
|
| 2695 |
+
"16": 10,
|
| 2696 |
+
"32": 1133936640,
|
| 2697 |
+
"36": 3284729856,
|
| 2698 |
+
"40": 1124073472
|
| 2699 |
+
},
|
| 2700 |
+
"source_final": {
|
| 2701 |
+
"12": 8,
|
| 2702 |
+
"16": 10,
|
| 2703 |
+
"32": 1133936640,
|
| 2704 |
+
"36": 3284729856,
|
| 2705 |
+
"40": 1124073472
|
| 2706 |
+
}
|
| 2707 |
+
},
|
| 2708 |
+
{
|
| 2709 |
+
"initial_motion": {
|
| 2710 |
+
"12": 8,
|
| 2711 |
+
"16": 0,
|
| 2712 |
+
"32": 1065353216,
|
| 2713 |
+
"36": 3221225472,
|
| 2714 |
+
"40": 1077936128
|
| 2715 |
+
},
|
| 2716 |
+
"input": {
|
| 2717 |
+
"client": true,
|
| 2718 |
+
"direction": [
|
| 2719 |
+
0,
|
| 2720 |
+
0,
|
| 2721 |
+
0
|
| 2722 |
+
],
|
| 2723 |
+
"knockback": 101,
|
| 2724 |
+
"scale": 0,
|
| 2725 |
+
"timer": 0
|
| 2726 |
+
},
|
| 2727 |
+
"rust": {
|
| 2728 |
+
"12": 72,
|
| 2729 |
+
"16": 200,
|
| 2730 |
+
"32": 1065353216,
|
| 2731 |
+
"36": 3221225472,
|
| 2732 |
+
"40": 1077936128
|
| 2733 |
+
},
|
| 2734 |
+
"source_final": {
|
| 2735 |
+
"12": 72,
|
| 2736 |
+
"16": 200,
|
| 2737 |
+
"32": 1065353216,
|
| 2738 |
+
"36": 3221225472,
|
| 2739 |
+
"40": 1077936128
|
| 2740 |
+
}
|
| 2741 |
+
},
|
| 2742 |
+
{
|
| 2743 |
+
"initial_motion": {
|
| 2744 |
+
"12": 8,
|
| 2745 |
+
"16": 0,
|
| 2746 |
+
"32": 1065353216,
|
| 2747 |
+
"36": 3221225472,
|
| 2748 |
+
"40": 1077936128
|
| 2749 |
+
},
|
| 2750 |
+
"input": {
|
| 2751 |
+
"client": true,
|
| 2752 |
+
"direction": [
|
| 2753 |
+
0.6,
|
| 2754 |
+
-0.8,
|
| 2755 |
+
0.25
|
| 2756 |
+
],
|
| 2757 |
+
"knockback": 101,
|
| 2758 |
+
"scale": 0,
|
| 2759 |
+
"timer": 0
|
| 2760 |
+
},
|
| 2761 |
+
"rust": {
|
| 2762 |
+
"12": 72,
|
| 2763 |
+
"16": 200,
|
| 2764 |
+
"32": 1065353216,
|
| 2765 |
+
"36": 3221225472,
|
| 2766 |
+
"40": 1077936128
|
| 2767 |
+
},
|
| 2768 |
+
"source_final": {
|
| 2769 |
+
"12": 72,
|
| 2770 |
+
"16": 200,
|
| 2771 |
+
"32": 1065353216,
|
| 2772 |
+
"36": 3221225472,
|
| 2773 |
+
"40": 1077936128
|
| 2774 |
+
}
|
| 2775 |
+
},
|
| 2776 |
+
{
|
| 2777 |
+
"initial_motion": {
|
| 2778 |
+
"12": 8,
|
| 2779 |
+
"16": 10,
|
| 2780 |
+
"32": 1065353216,
|
| 2781 |
+
"36": 3221225472,
|
| 2782 |
+
"40": 1077936128
|
| 2783 |
+
},
|
| 2784 |
+
"input": {
|
| 2785 |
+
"client": true,
|
| 2786 |
+
"direction": [
|
| 2787 |
+
0,
|
| 2788 |
+
0,
|
| 2789 |
+
0
|
| 2790 |
+
],
|
| 2791 |
+
"knockback": 101,
|
| 2792 |
+
"scale": 0,
|
| 2793 |
+
"timer": 10
|
| 2794 |
+
},
|
| 2795 |
+
"rust": {
|
| 2796 |
+
"12": 8,
|
| 2797 |
+
"16": 10,
|
| 2798 |
+
"32": 1065353216,
|
| 2799 |
+
"36": 3221225472,
|
| 2800 |
+
"40": 1077936128
|
| 2801 |
+
},
|
| 2802 |
+
"source_final": {
|
| 2803 |
+
"12": 8,
|
| 2804 |
+
"16": 10,
|
| 2805 |
+
"32": 1065353216,
|
| 2806 |
+
"36": 3221225472,
|
| 2807 |
+
"40": 1077936128
|
| 2808 |
+
}
|
| 2809 |
+
},
|
| 2810 |
+
{
|
| 2811 |
+
"initial_motion": {
|
| 2812 |
+
"12": 8,
|
| 2813 |
+
"16": 10,
|
| 2814 |
+
"32": 1065353216,
|
| 2815 |
+
"36": 3221225472,
|
| 2816 |
+
"40": 1077936128
|
| 2817 |
+
},
|
| 2818 |
+
"input": {
|
| 2819 |
+
"client": true,
|
| 2820 |
+
"direction": [
|
| 2821 |
+
0.6,
|
| 2822 |
+
-0.8,
|
| 2823 |
+
0.25
|
| 2824 |
+
],
|
| 2825 |
+
"knockback": 101,
|
| 2826 |
+
"scale": 0,
|
| 2827 |
+
"timer": 10
|
| 2828 |
+
},
|
| 2829 |
+
"rust": {
|
| 2830 |
+
"12": 8,
|
| 2831 |
+
"16": 10,
|
| 2832 |
+
"32": 1065353216,
|
| 2833 |
+
"36": 3221225472,
|
| 2834 |
+
"40": 1077936128
|
| 2835 |
+
},
|
| 2836 |
+
"source_final": {
|
| 2837 |
+
"12": 8,
|
| 2838 |
+
"16": 10,
|
| 2839 |
+
"32": 1065353216,
|
| 2840 |
+
"36": 3221225472,
|
| 2841 |
+
"40": 1077936128
|
| 2842 |
+
}
|
| 2843 |
+
},
|
| 2844 |
+
{
|
| 2845 |
+
"initial_motion": {
|
| 2846 |
+
"12": 8,
|
| 2847 |
+
"16": 0,
|
| 2848 |
+
"32": 1065353216,
|
| 2849 |
+
"36": 3221225472,
|
| 2850 |
+
"40": 1077936128
|
| 2851 |
+
},
|
| 2852 |
+
"input": {
|
| 2853 |
+
"client": true,
|
| 2854 |
+
"direction": [
|
| 2855 |
+
0,
|
| 2856 |
+
0,
|
| 2857 |
+
0
|
| 2858 |
+
],
|
| 2859 |
+
"knockback": 101,
|
| 2860 |
+
"scale": 1000,
|
| 2861 |
+
"timer": 0
|
| 2862 |
+
},
|
| 2863 |
+
"rust": {
|
| 2864 |
+
"12": 72,
|
| 2865 |
+
"16": 200,
|
| 2866 |
+
"32": 1065353216,
|
| 2867 |
+
"36": 3221225472,
|
| 2868 |
+
"40": 1077936128
|
| 2869 |
+
},
|
| 2870 |
+
"source_final": {
|
| 2871 |
+
"12": 72,
|
| 2872 |
+
"16": 200,
|
| 2873 |
+
"32": 1065353216,
|
| 2874 |
+
"36": 3221225472,
|
| 2875 |
+
"40": 1077936128
|
| 2876 |
+
}
|
| 2877 |
+
},
|
| 2878 |
+
{
|
| 2879 |
+
"initial_motion": {
|
| 2880 |
+
"12": 8,
|
| 2881 |
+
"16": 0,
|
| 2882 |
+
"32": 1065353216,
|
| 2883 |
+
"36": 3221225472,
|
| 2884 |
+
"40": 1077936128
|
| 2885 |
+
},
|
| 2886 |
+
"input": {
|
| 2887 |
+
"client": true,
|
| 2888 |
+
"direction": [
|
| 2889 |
+
0.6,
|
| 2890 |
+
-0.8,
|
| 2891 |
+
0.25
|
| 2892 |
+
],
|
| 2893 |
+
"knockback": 101,
|
| 2894 |
+
"scale": 1000,
|
| 2895 |
+
"timer": 0
|
| 2896 |
+
},
|
| 2897 |
+
"rust": {
|
| 2898 |
+
"12": 72,
|
| 2899 |
+
"16": 200,
|
| 2900 |
+
"32": 1134034944,
|
| 2901 |
+
"36": 3284860928,
|
| 2902 |
+
"40": 1124155392
|
| 2903 |
+
},
|
| 2904 |
+
"source_final": {
|
| 2905 |
+
"12": 72,
|
| 2906 |
+
"16": 200,
|
| 2907 |
+
"32": 1134034944,
|
| 2908 |
+
"36": 3284860928,
|
| 2909 |
+
"40": 1124155392
|
| 2910 |
+
}
|
| 2911 |
+
},
|
| 2912 |
+
{
|
| 2913 |
+
"initial_motion": {
|
| 2914 |
+
"12": 8,
|
| 2915 |
+
"16": 10,
|
| 2916 |
+
"32": 1065353216,
|
| 2917 |
+
"36": 3221225472,
|
| 2918 |
+
"40": 1077936128
|
| 2919 |
+
},
|
| 2920 |
+
"input": {
|
| 2921 |
+
"client": true,
|
| 2922 |
+
"direction": [
|
| 2923 |
+
0,
|
| 2924 |
+
0,
|
| 2925 |
+
0
|
| 2926 |
+
],
|
| 2927 |
+
"knockback": 101,
|
| 2928 |
+
"scale": 1000,
|
| 2929 |
+
"timer": 10
|
| 2930 |
+
},
|
| 2931 |
+
"rust": {
|
| 2932 |
+
"12": 8,
|
| 2933 |
+
"16": 10,
|
| 2934 |
+
"32": 1065353216,
|
| 2935 |
+
"36": 3221225472,
|
| 2936 |
+
"40": 1077936128
|
| 2937 |
+
},
|
| 2938 |
+
"source_final": {
|
| 2939 |
+
"12": 8,
|
| 2940 |
+
"16": 10,
|
| 2941 |
+
"32": 1065353216,
|
| 2942 |
+
"36": 3221225472,
|
| 2943 |
+
"40": 1077936128
|
| 2944 |
+
}
|
| 2945 |
+
},
|
| 2946 |
+
{
|
| 2947 |
+
"initial_motion": {
|
| 2948 |
+
"12": 8,
|
| 2949 |
+
"16": 10,
|
| 2950 |
+
"32": 1065353216,
|
| 2951 |
+
"36": 3221225472,
|
| 2952 |
+
"40": 1077936128
|
| 2953 |
+
},
|
| 2954 |
+
"input": {
|
| 2955 |
+
"client": true,
|
| 2956 |
+
"direction": [
|
| 2957 |
+
0.6,
|
| 2958 |
+
-0.8,
|
| 2959 |
+
0.25
|
| 2960 |
+
],
|
| 2961 |
+
"knockback": 101,
|
| 2962 |
+
"scale": 1000,
|
| 2963 |
+
"timer": 10
|
| 2964 |
+
},
|
| 2965 |
+
"rust": {
|
| 2966 |
+
"12": 8,
|
| 2967 |
+
"16": 10,
|
| 2968 |
+
"32": 1134034944,
|
| 2969 |
+
"36": 3284860928,
|
| 2970 |
+
"40": 1124155392
|
| 2971 |
+
},
|
| 2972 |
+
"source_final": {
|
| 2973 |
+
"12": 8,
|
| 2974 |
+
"16": 10,
|
| 2975 |
+
"32": 1134034944,
|
| 2976 |
+
"36": 3284860928,
|
| 2977 |
+
"40": 1124155392
|
| 2978 |
+
}
|
| 2979 |
+
}
|
| 2980 |
+
],
|
| 2981 |
+
"rejections": [
|
| 2982 |
+
{
|
| 2983 |
+
"case": "active-nan-direction",
|
| 2984 |
+
"error": "unsupported input: NonFinite",
|
| 2985 |
+
"exit_code": 2
|
| 2986 |
+
}
|
| 2987 |
+
],
|
| 2988 |
+
"rust_unit_tests": 8,
|
| 2989 |
+
"source_report": "docs/research/qvm-health-impulse.json",
|
| 2990 |
+
"source_report_sha256": "625fd8064004ea6dbdf398d51d0af844d9c635ff04c0a0790886dddb6ab81e71"
|
| 2991 |
+
}
|
scripts/analyze_rust_health_impulse.py
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/usr/bin/env python3
|
| 2 |
+
"""Rust impulse contract against every source213009 fixture with exact words."""
|
| 3 |
+
import hashlib,json,os,re,subprocess
|
| 4 |
+
from pathlib import Path
|
| 5 |
+
from analyze_qvm import write_json
|
| 6 |
+
from analyze_qvm_acceleration import word
|
| 7 |
+
|
| 8 |
+
def main():
|
| 9 |
+
test=subprocess.run(['cargo','test','--offline','--package','urt-gameplay'],capture_output=True,text=True,check=True);count=sum(int(v) for v in re.findall(r'test result: ok\. (\d+) passed',test.stdout))
|
| 10 |
+
subprocess.run(['cargo','build','--offline','--package','urt-gameplay','--bin','urt-impulse'],capture_output=True,text=True,check=True)
|
| 11 |
+
binary=Path(os.environ.get('CARGO_TARGET_DIR','target'))/'debug'/'urt-impulse';path=Path('docs/research/qvm-health-impulse.json');data=path.read_bytes();rows=[]
|
| 12 |
+
for p in json.loads(data)['probes']:
|
| 13 |
+
a=p['input'];initial=p['initial'] or {'12':8,'16':a['timer'],'32':word(1),'36':word(-2),'40':word(3)};args=[int(a['client']),word(a['knockback']),word(a['scale']),initial['16'],initial['12'],*map(word,a['direction']),initial['32'],initial['36'],initial['40']];r=subprocess.run([str(binary),*map(str,args)],capture_output=True,text=True,check=True);rows.append({'input':a,'initial_motion':initial,'source_final':p['final'],'rust':json.loads(r.stdout)})
|
| 14 |
+
bad=[1,word(1),word(1),0,8,0x7fc00000,0,0,0,0,0];r=subprocess.run([str(binary),*map(str,bad)],capture_output=True,text=True);assert r.returncode!=0
|
| 15 |
+
write_json(Path('docs/research/rust-health-impulse.json'),{'source_report':str(path),'source_report_sha256':hashlib.sha256(data).hexdigest(),'rust_unit_tests':count,'probes':rows,'rejections':[{'case':'active-nan-direction','exit_code':r.returncode,'error':r.stderr.strip()}],'limits':'Rust/source213009 word parity across96 finite fixtures; no-client preservation additionally checked in Rust. Active nonfinite/unsupported CVFI domains reject explicitly. Host macOS; Linux and full Bevy/Solari gameplay remain open.'})
|
| 16 |
+
if __name__=='__main__':main()
|
scripts/test_rust_health_impulse.py
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import hashlib,json,unittest
|
| 2 |
+
from pathlib import Path
|
| 3 |
+
from test_qvm_health_impulse import expected
|
| 4 |
+
class RustHealthImpulseTests(unittest.TestCase):
|
| 5 |
+
@classmethod
|
| 6 |
+
def setUpClass(cls):cls.r=json.loads(Path('docs/research/rust-health-impulse.json').read_text())
|
| 7 |
+
def test_all_source_fixture_words_and_inactive_state(self):
|
| 8 |
+
self.assertEqual(len(self.r['probes']),96)
|
| 9 |
+
for p in self.r['probes']:self.assertEqual(p['rust'],p['source_final'] if p['input']['client'] else p['initial_motion'])
|
| 10 |
+
def test_independent_float32_oracle(self):
|
| 11 |
+
for p in self.r['probes']:
|
| 12 |
+
q={'input':p['input'],'initial':p['initial_motion']};self.assertEqual(p['rust'],expected(q) if p['input']['client'] else p['initial_motion'])
|
| 13 |
+
def test_source_identity_and_test_ownership(self):
|
| 14 |
+
self.assertEqual(hashlib.sha256(Path(self.r['source_report']).read_bytes()).hexdigest(),self.r['source_report_sha256']);self.assertEqual(self.r['rust_unit_tests'],8)
|
| 15 |
+
def test_nonfinite_rejection_is_explicit(self):self.assertEqual(self.r['rejections'][0]['case'],'active-nan-direction');self.assertNotEqual(self.r['rejections'][0]['exit_code'],0)
|
| 16 |
+
if __name__=='__main__':unittest.main()
|
xtask/checks.tsv
CHANGED
|
@@ -1162,3 +1162,11 @@ edge docs/research/qvm-health-complete.json scripts/test_qvm_health_complete.py
|
|
| 1162 |
report scripts/analyze_qvm_contact_health.py docs/research/qvm-contact-health.json
|
| 1163 |
edge docs/research/qvm-contact-health.json scripts/test_qvm_contact_health.py
|
| 1164 |
group contact scripts/analyze_qvm_contact_health.py
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1162 |
report scripts/analyze_qvm_contact_health.py docs/research/qvm-contact-health.json
|
| 1163 |
edge docs/research/qvm-contact-health.json scripts/test_qvm_contact_health.py
|
| 1164 |
group contact scripts/analyze_qvm_contact_health.py
|
| 1165 |
+
edge Cargo.toml scripts/analyze_rust_health_impulse.py
|
| 1166 |
+
edge Cargo.lock scripts/analyze_rust_health_impulse.py
|
| 1167 |
+
edge crates/urt-gameplay/Cargo.toml scripts/analyze_rust_health_impulse.py
|
| 1168 |
+
edge crates/urt-gameplay/src/lib.rs scripts/analyze_rust_health_impulse.py
|
| 1169 |
+
edge crates/urt-gameplay/src/bin/urt-impulse.rs scripts/analyze_rust_health_impulse.py
|
| 1170 |
+
report scripts/analyze_rust_health_impulse.py docs/research/rust-health-impulse.json
|
| 1171 |
+
edge docs/research/rust-health-impulse.json scripts/test_rust_health_impulse.py
|
| 1172 |
+
group gameplay scripts/analyze_rust_health_impulse.py
|
xtask/src/lib.rs
CHANGED
|
@@ -1011,8 +1011,22 @@ mod integration_tests {
|
|
| 1011 |
root,
|
| 1012 |
)
|
| 1013 |
.unwrap();
|
| 1014 |
-
|
| 1015 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1016 |
assert!(health.fallback.is_empty());
|
| 1017 |
// Validate the entire registry DAG, including multi-output native/QVM writers.
|
| 1018 |
g.producers_in_order(&g.outputs.keys().cloned().collect())
|
|
|
|
| 1011 |
root,
|
| 1012 |
)
|
| 1013 |
.unwrap();
|
| 1014 |
+
assert!(health.tests.contains("scripts/test_qvm_health_gates.py"));
|
| 1015 |
+
assert!(
|
| 1016 |
+
health
|
| 1017 |
+
.tests
|
| 1018 |
+
.contains("scripts/test_qvm_health_knockback.py")
|
| 1019 |
+
);
|
| 1020 |
+
assert!(
|
| 1021 |
+
health
|
| 1022 |
+
.producers
|
| 1023 |
+
.contains(&"scripts/analyze_qvm_health_gates.py".into())
|
| 1024 |
+
);
|
| 1025 |
+
assert!(
|
| 1026 |
+
health
|
| 1027 |
+
.producers
|
| 1028 |
+
.contains(&"scripts/analyze_qvm_health_knockback.py".into())
|
| 1029 |
+
);
|
| 1030 |
assert!(health.fallback.is_empty());
|
| 1031 |
// Validate the entire registry DAG, including multi-output native/QVM writers.
|
| 1032 |
g.producers_in_order(&g.outputs.keys().cloned().collect())
|