[INFO] cloning repository https://github.com/anas-cyber-net/Hazeveil
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/anas-cyber-net/Hazeveil" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fanas-cyber-net%2FHazeveil", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fanas-cyber-net%2FHazeveil'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] d41d326d8e97c934ed447bb73ebeebcb0aef7ca4
[INFO] checking anas-cyber-net/Hazeveil against eca445e5ae4a6679cc27d3a09106ce245e13a5a6 for pr-162478
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fanas-cyber-net%2FHazeveil" "/workspace/builds/worker-6-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc1/source'...
[INFO] [stderr] done.
[INFO] [stderr] Updating files:  24% (741/2987)
Updating files:  25% (747/2987)
Updating files:  26% (777/2987)
Updating files:  27% (807/2987)
Updating files:  28% (837/2987)
Updating files:  28% (857/2987)
Updating files:  29% (867/2987)
Updating files:  30% (897/2987)
Updating files:  31% (926/2987)
Updating files:  31% (935/2987)
Updating files:  32% (956/2987)
Updating files:  33% (986/2987)
Updating files:  34% (1016/2987)
Updating files:  35% (1046/2987)
Updating files:  36% (1076/2987)
Updating files:  37% (1106/2987)
Updating files:  38% (1136/2987)
Updating files:  39% (1165/2987)
Updating files:  40% (1195/2987)
Updating files:  41% (1225/2987)
Updating files:  42% (1255/2987)
Updating files:  43% (1285/2987)
Updating files:  44% (1315/2987)
Updating files:  45% (1345/2987)
Updating files:  46% (1375/2987)
Updating files:  47% (1404/2987)
Updating files:  48% (1434/2987)
Updating files:  49% (1464/2987)
Updating files:  50% (1494/2987)
Updating files:  51% (1524/2987)
Updating files:  52% (1554/2987)
Updating files:  53% (1584/2987)
Updating files:  54% (1613/2987)
Updating files:  55% (1643/2987)
Updating files:  56% (1673/2987)
Updating files:  57% (1703/2987)
Updating files:  58% (1733/2987)
Updating files:  59% (1763/2987)
Updating files:  60% (1793/2987)
Updating files:  61% (1823/2987)
Updating files:  62% (1852/2987)
Updating files:  63% (1882/2987)
Updating files:  64% (1912/2987)
Updating files:  65% (1942/2987)
Updating files:  66% (1972/2987)
Updating files:  67% (2002/2987)
Updating files:  68% (2032/2987)
Updating files:  69% (2062/2987)
Updating files:  70% (2091/2987)
Updating files:  71% (2121/2987)
Updating files:  72% (2151/2987)
Updating files:  73% (2181/2987)
Updating files:  74% (2211/2987)
Updating files:  75% (2241/2987)
Updating files:  76% (2271/2987)
Updating files:  77% (2300/2987)
Updating files:  78% (2330/2987)
Updating files:  79% (2360/2987)
Updating files:  80% (2390/2987)
Updating files:  81% (2420/2987)
Updating files:  82% (2450/2987)
Updating files:  83% (2480/2987)
Updating files:  84% (2510/2987)
Updating files:  85% (2539/2987)
Updating files:  86% (2569/2987)
Updating files:  87% (2599/2987)
Updating files:  88% (2629/2987)
Updating files:  89% (2659/2987)
Updating files:  90% (2689/2987)
Updating files:  91% (2719/2987)
Updating files:  92% (2749/2987)
Updating files:  93% (2778/2987)
Updating files:  94% (2808/2987)
Updating files:  95% (2838/2987)
Updating files:  96% (2868/2987)
Updating files:  97% (2898/2987)
Updating files:  98% (2928/2987)
Updating files:  99% (2958/2987)
Updating files: 100% (2987/2987)
Updating files: 100% (2987/2987), done.
[INFO] started tweaking git repo https://github.com/anas-cyber-net/Hazeveil
[INFO] finished tweaking git repo https://github.com/anas-cyber-net/Hazeveil
[INFO] tweaked toml for git repo https://github.com/anas-cyber-net/Hazeveil written to /workspace/builds/worker-6-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/anas-cyber-net/Hazeveil on toolchain eca445e5ae4a6679cc27d3a09106ce245e13a5a6
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+eca445e5ae4a6679cc27d3a09106ce245e13a5a6" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/anas-cyber-net/Hazeveil already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+eca445e5ae4a6679cc27d3a09106ce245e13a5a6" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded ctrlc v3.5.1
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:8683fc1fc2eb5c9ac98e0d076ab094b2ffac7f99da555d2b6a2e27f346de2ec7" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 4414227a4bb38232fdb5e50713e9b4acabea965ee88ee42f57856a75142431fe
[INFO] running `Command { std: "docker" "start" "4414227a4bb38232fdb5e50713e9b4acabea965ee88ee42f57856a75142431fe", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "4414227a4bb38232fdb5e50713e9b4acabea965ee88ee42f57856a75142431fe", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "4414227a4bb38232fdb5e50713e9b4acabea965ee88ee42f57856a75142431fe" "/opt/rustwide/cargo-home/bin/cargo" "+eca445e5ae4a6679cc27d3a09106ce245e13a5a6" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "4414227a4bb38232fdb5e50713e9b4acabea965ee88ee42f57856a75142431fe", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-w" "/opt/rustwide/workdir" "--user" "0:0" "4414227a4bb38232fdb5e50713e9b4acabea965ee88ee42f57856a75142431fe" "/opt/rustwide/cargo-home/bin/cargo" "+eca445e5ae4a6679cc27d3a09106ce245e13a5a6" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]     Checking getrandom v0.2.17
[INFO] [stderr]    Compiling nix v0.30.1
[INFO] [stderr]     Checking regex-automata v0.4.14
[INFO] [stderr]     Checking parking_lot_core v0.9.12
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]     Checking inout v0.1.4
[INFO] [stderr]     Checking dirs-sys v0.4.1
[INFO] [stderr]     Checking jiff v0.2.21
[INFO] [stderr]    Compiling hazeveil v1.0.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Checking nix v0.27.1
[INFO] [stderr]     Checking serde_json v1.0.149
[INFO] [stderr]     Checking once_cell v1.21.3
[INFO] [stderr]     Checking getrandom v0.4.1
[INFO] [stderr]     Checking dirs v5.0.1
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]     Checking crypto-common v0.1.7
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking password-hash v0.5.0
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]     Checking universal-hash v0.5.1
[INFO] [stderr]     Checking digest v0.10.7
[INFO] [stderr]     Checking aead v0.5.2
[INFO] [stderr] warning: hazeveil@1.0.0: Building on kernel: 6.17.0-1013-gcp
[INFO] [stderr] warning: hazeveil@1.0.0: Kernel 6: OK.
[INFO] [stderr]     Checking poly1305 v0.8.0
[INFO] [stderr]     Checking tempfile v3.26.0
[INFO] [stderr]     Checking blake2 v0.10.6
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]     Checking argon2 v0.5.3
[INFO] [stderr]     Checking ctrlc v3.5.1
[INFO] [stderr]     Checking regex v1.12.3
[INFO] [stderr]     Checking env_filter v1.0.0
[INFO] [stderr]     Checking env_logger v0.11.9
[INFO] [stderr]    Compiling zeroize_derive v1.4.3
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling tokio-macros v2.6.0
[INFO] [stderr]    Compiling clap_derive v4.5.55
[INFO] [stderr]     Checking zeroize v1.8.2
[INFO] [stderr]     Checking tokio v1.49.0
[INFO] [stderr]     Checking cipher v0.4.4
[INFO] [stderr]     Checking chacha20 v0.9.1
[INFO] [stderr]     Checking chacha20poly1305 v0.10.1
[INFO] [stderr]     Checking clap v4.5.60
[INFO] [stderr]     Checking serde v1.0.228
[INFO] [stdout] warning: field `level` is never read
[INFO] [stdout]   --> src/touchpad_engine.rs:16:44
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct TouchpadEngine { rng: SmallRng, level: u8 }
[INFO] [stdout]    |            --------------                  ^^^^^
[INFO] [stdout]    |            |
[INFO] [stdout]    |            field in this struct
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `level` is never read
[INFO] [stdout]   --> src/touchpad_engine.rs:16:44
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct TouchpadEngine { rng: SmallRng, level: u8 }
[INFO] [stdout]    |            --------------                  ^^^^^
[INFO] [stdout]    |            |
[INFO] [stdout]    |            field in this struct
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_configured` is never used
[INFO] [stdout]   --> src/config.rs:59:8
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub fn is_configured() -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mark_configured` is never used
[INFO] [stdout]   --> src/config.rs:63:8
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub fn mark_configured() -> Result<()> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `interactive_config` is never used
[INFO] [stdout]   --> src/config.rs:69:8
[INFO] [stdout]    |
[INFO] [stdout] 69 | pub fn interactive_config() -> Result<()> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `stop` is never used
[INFO] [stdout]    --> src/core_engine.rs:103:12
[INFO] [stdout]     |
[INFO] [stdout]  33 | impl CoreEngine {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 103 |     pub fn stop(&self) { self.running.store(false, Ordering::SeqCst); }
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `keycode` and `delay_us` are never read
[INFO] [stdout]  --> src/keyboard_engine.rs:8:13
[INFO] [stdout]   |
[INFO] [stdout] 8 |     Press { keycode: u32, delay_us: u64 },
[INFO] [stdout]   |     -----   ^^^^^^^       ^^^^^^^^
[INFO] [stdout]   |     |
[INFO] [stdout]   |     fields in this variant
[INFO] [stdout]   |
[INFO] [stdout]   = note: `KeyEvent` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `keycode` and `dwell_us` are never read
[INFO] [stdout]  --> src/keyboard_engine.rs:9:15
[INFO] [stdout]   |
[INFO] [stdout] 9 |     Release { keycode: u32, dwell_us: u64 },
[INFO] [stdout]   |     -------   ^^^^^^^       ^^^^^^^^
[INFO] [stdout]   |     |
[INFO] [stdout]   |     fields in this variant
[INFO] [stdout]   |
[INFO] [stdout]   = note: `KeyEvent` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `keycode` is never read
[INFO] [stdout]   --> src/keyboard_engine.rs:10:13
[INFO] [stdout]    |
[INFO] [stdout] 10 |     Ghost { keycode: u32 },
[INFO] [stdout]    |     -----   ^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `KeyEvent` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `id`, `x`, `y`, and `pressure` are never read
[INFO] [stdout]  --> src/touchpad_engine.rs:6:29
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct TouchPoint { pub id: u8, pub x: f64, pub y: f64, pub pressure: f64 }
[INFO] [stdout]   |            ----------       ^^          ^           ^           ^^^^^^^^
[INFO] [stdout]   |            |
[INFO] [stdout]   |            fields in this struct
[INFO] [stdout]   |
[INFO] [stdout]   = note: `TouchPoint` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/touchpad_engine.rs:10:15
[INFO] [stdout]    |
[INFO] [stdout] 10 |     SingleTap(TouchPoint),
[INFO] [stdout]    |     --------- ^^^^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Gesture` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 10 -     SingleTap(TouchPoint),
[INFO] [stdout] 10 +     SingleTap(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `dx`, `dy`, and `pressure` are never read
[INFO] [stdout]   --> src/touchpad_engine.rs:11:23
[INFO] [stdout]    |
[INFO] [stdout] 11 |     TwoFingerScroll { dx: f64, dy: f64, pressure: f64 },
[INFO] [stdout]    |     ---------------   ^^       ^^       ^^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     fields in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Gesture` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `scale` and `center` are never read
[INFO] [stdout]   --> src/touchpad_engine.rs:12:13
[INFO] [stdout]    |
[INFO] [stdout] 12 |     Pinch { scale: f64, center: (f64, f64) },
[INFO] [stdout]    |     -----   ^^^^^       ^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     fields in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Gesture` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `dx` and `dy` are never read
[INFO] [stdout]   --> src/touchpad_engine.rs:13:24
[INFO] [stdout]    |
[INFO] [stdout] 13 |     ThreeFingerSwipe { dx: f64, dy: f64 },
[INFO] [stdout]    |     ----------------   ^^       ^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     fields in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Gesture` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `level` is never read
[INFO] [stdout]   --> src/touchpad_engine.rs:16:44
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct TouchpadEngine { rng: SmallRng, level: u8 }
[INFO] [stdout]    |            --------------                  ^^^^^
[INFO] [stdout]    |            |
[INFO] [stdout]    |            field in this struct
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `dx` and `dy` are never read
[INFO] [stdout]  --> src/scroll_engine.rs:7:30
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct ScrollEvent { pub dx: f64, pub dy: f64, pub velocity: f64 }
[INFO] [stdout]   |            -----------       ^^           ^^
[INFO] [stdout]   |            |
[INFO] [stdout]   |            fields in this struct
[INFO] [stdout]   |
[INFO] [stdout]   = note: `ScrollEvent` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `poisson_delay` and `level` are never used
[INFO] [stdout]   --> src/timing_engine.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl TimingEngine {
[INFO] [stdout]    | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub fn poisson_delay(&mut self) -> Duration {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub fn level(&self) -> u8 { self.level }
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `focus_delay` is never used
[INFO] [stdout]   --> src/window_engine.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl WindowEngine {
[INFO] [stdout]    | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 12 |     pub fn focus_delay(&mut self, pattern: &BehaviorPattern) -> Duration {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `delay_ms` is never read
[INFO] [stdout]  --> src/clipboard_engine.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 |     Copy { delay_ms: u64 },
[INFO] [stdout]   |     ----   ^^^^^^^^
[INFO] [stdout]   |     |
[INFO] [stdout]   |     field in this variant
[INFO] [stdout]   |
[INFO] [stdout]   = note: `ClipboardOp` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `delay_ms` is never read
[INFO] [stdout]  --> src/clipboard_engine.rs:9:13
[INFO] [stdout]   |
[INFO] [stdout] 9 |     Paste { delay_ms: u64 },
[INFO] [stdout]   |     -----   ^^^^^^^^
[INFO] [stdout]   |     |
[INFO] [stdout]   |     field in this variant
[INFO] [stdout]   |
[INFO] [stdout]   = note: `ClipboardOp` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `delay_ms` is never read
[INFO] [stdout]   --> src/clipboard_engine.rs:10:11
[INFO] [stdout]    |
[INFO] [stdout] 10 |     Cut { delay_ms: u64 },
[INFO] [stdout]    |     ---   ^^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ClipboardOp` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Banking`, `Game`, `VideoEditor`, `TextEditor`, and `Other` are never constructed
[INFO] [stdout]  --> src/context_detector.rs:7:23
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub enum AppContext { Banking, Browser, Terminal, Game, VideoEditor, TextEditor, Other(String) }
[INFO] [stdout]   |          ----------   ^^^^^^^                     ^^^^  ^^^^^^^^^^^  ^^^^^^^^^^  ^^^^^
[INFO] [stdout]   |          |
[INFO] [stdout]   |          variants in this enum
[INFO] [stdout]   |
[INFO] [stdout]   = note: `AppContext` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `display_server` and `app_context` are never read
[INFO] [stdout]   --> src/context_detector.rs:10:9
[INFO] [stdout]    |
[INFO] [stdout]  9 | pub struct ContextDetector {
[INFO] [stdout]    |            --------------- fields in this struct
[INFO] [stdout] 10 |     pub display_server: DisplayServer,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 11 |     pub app_context: AppContext,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `display_server` is never used
[INFO] [stdout]   --> src/context_detector.rs:59:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl ContextDetector {
[INFO] [stdout]    | -------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 59 |     pub fn display_server(&self) -> &DisplayServer { &self.display_server }
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `secure_zero` is never used
[INFO] [stdout]   --> src/utils.rs:52:8
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub fn secure_zero(data: &mut Vec<u8>) {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PerfTimer` is never constructed
[INFO] [stdout]   --> src/utils.rs:56:12
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub struct PerfTimer {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `elapsed_us` are never used
[INFO] [stdout]   --> src/utils.rs:61:12
[INFO] [stdout]    |
[INFO] [stdout] 60 | impl PerfTimer {
[INFO] [stdout]    | -------------- associated items in this implementation
[INFO] [stdout] 61 |     pub fn new() -> Self { Self { start: std::time::Instant::now() } }
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 62 |     pub fn elapsed_us(&self) -> u128 { self.start.elapsed().as_micros() }
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CONFIG_FILENAME` is never used
[INFO] [stdout]  --> src/config.rs:7:7
[INFO] [stdout]   |
[INFO] [stdout] 7 | const CONFIG_FILENAME: &str = "config.enc";
[INFO] [stdout]   |       ^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SALT_FILENAME` is never used
[INFO] [stdout]  --> src/config.rs:8:7
[INFO] [stdout]   |
[INFO] [stdout] 8 | const SALT_FILENAME: &str = "salt.bin";
[INFO] [stdout]   |       ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEFAULT_PASSWORD` is never used
[INFO] [stdout]  --> src/config.rs:9:7
[INFO] [stdout]   |
[INFO] [stdout] 9 | const DEFAULT_PASSWORD: &[u8] = b"hazeveil-default-local-key-v1";
[INFO] [stdout]   |       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HazeVeilConfig` is never constructed
[INFO] [stdout]   --> src/config.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct HazeVeilConfig {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load` is never used
[INFO] [stdout]   --> src/config.rs:38:8
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub fn load() -> Result<HazeVeilConfig> {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `save` is never used
[INFO] [stdout]   --> src/config.rs:49:8
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub fn save(cfg: &HazeVeilConfig) -> Result<()> {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_configured` is never used
[INFO] [stdout]   --> src/config.rs:59:8
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub fn is_configured() -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mark_configured` is never used
[INFO] [stdout]   --> src/config.rs:63:8
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub fn mark_configured() -> Result<()> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `interactive_config` is never used
[INFO] [stdout]   --> src/config.rs:69:8
[INFO] [stdout]    |
[INFO] [stdout] 69 | pub fn interactive_config() -> Result<()> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `config_path` is never used
[INFO] [stdout]   --> src/config.rs:78:4
[INFO] [stdout]    |
[INFO] [stdout] 78 | fn config_path() -> Result<PathBuf> { Ok(config_dir()?.join(CONFIG_FILENAME)) }
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `salt_path` is never used
[INFO] [stdout]   --> src/config.rs:79:4
[INFO] [stdout]    |
[INFO] [stdout] 79 | fn salt_path() -> Result<PathBuf> { Ok(config_dir()?.join(SALT_FILENAME)) }
[INFO] [stdout]    |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_salt` is never used
[INFO] [stdout]   --> src/config.rs:81:4
[INFO] [stdout]    |
[INFO] [stdout] 81 | fn load_salt() -> Result<[u8; 16]> {
[INFO] [stdout]    |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_or_create_salt` is never used
[INFO] [stdout]   --> src/config.rs:89:4
[INFO] [stdout]    |
[INFO] [stdout] 89 | fn load_or_create_salt() -> Result<[u8; 16]> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `stop` is never used
[INFO] [stdout]    --> src/core_engine.rs:103:12
[INFO] [stdout]     |
[INFO] [stdout]  33 | impl CoreEngine {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 103 |     pub fn stop(&self) { self.running.store(false, Ordering::SeqCst); }
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `keycode` and `delay_us` are never read
[INFO] [stdout]  --> src/keyboard_engine.rs:8:13
[INFO] [stdout]   |
[INFO] [stdout] 8 |     Press { keycode: u32, delay_us: u64 },
[INFO] [stdout]   |     -----   ^^^^^^^       ^^^^^^^^
[INFO] [stdout]   |     |
[INFO] [stdout]   |     fields in this variant
[INFO] [stdout]   |
[INFO] [stdout]   = note: `KeyEvent` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `keycode` and `dwell_us` are never read
[INFO] [stdout]  --> src/keyboard_engine.rs:9:15
[INFO] [stdout]   |
[INFO] [stdout] 9 |     Release { keycode: u32, dwell_us: u64 },
[INFO] [stdout]   |     -------   ^^^^^^^       ^^^^^^^^
[INFO] [stdout]   |     |
[INFO] [stdout]   |     fields in this variant
[INFO] [stdout]   |
[INFO] [stdout]   = note: `KeyEvent` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `keycode` is never read
[INFO] [stdout]   --> src/keyboard_engine.rs:10:13
[INFO] [stdout]    |
[INFO] [stdout] 10 |     Ghost { keycode: u32 },
[INFO] [stdout]    |     -----   ^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `KeyEvent` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `id`, `x`, `y`, and `pressure` are never read
[INFO] [stdout]  --> src/touchpad_engine.rs:6:29
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct TouchPoint { pub id: u8, pub x: f64, pub y: f64, pub pressure: f64 }
[INFO] [stdout]   |            ----------       ^^          ^           ^           ^^^^^^^^
[INFO] [stdout]   |            |
[INFO] [stdout]   |            fields in this struct
[INFO] [stdout]   |
[INFO] [stdout]   = note: `TouchPoint` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/touchpad_engine.rs:10:15
[INFO] [stdout]    |
[INFO] [stdout] 10 |     SingleTap(TouchPoint),
[INFO] [stdout]    |     --------- ^^^^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Gesture` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 10 -     SingleTap(TouchPoint),
[INFO] [stdout] 10 +     SingleTap(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `dx`, `dy`, and `pressure` are never read
[INFO] [stdout]   --> src/touchpad_engine.rs:11:23
[INFO] [stdout]    |
[INFO] [stdout] 11 |     TwoFingerScroll { dx: f64, dy: f64, pressure: f64 },
[INFO] [stdout]    |     ---------------   ^^       ^^       ^^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     fields in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Gesture` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `scale` and `center` are never read
[INFO] [stdout]   --> src/touchpad_engine.rs:12:13
[INFO] [stdout]    |
[INFO] [stdout] 12 |     Pinch { scale: f64, center: (f64, f64) },
[INFO] [stdout]    |     -----   ^^^^^       ^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     fields in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Gesture` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `dx` and `dy` are never read
[INFO] [stdout]   --> src/touchpad_engine.rs:13:24
[INFO] [stdout]    |
[INFO] [stdout] 13 |     ThreeFingerSwipe { dx: f64, dy: f64 },
[INFO] [stdout]    |     ----------------   ^^       ^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     fields in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Gesture` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `level` is never read
[INFO] [stdout]   --> src/touchpad_engine.rs:16:44
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct TouchpadEngine { rng: SmallRng, level: u8 }
[INFO] [stdout]    |            --------------                  ^^^^^
[INFO] [stdout]    |            |
[INFO] [stdout]    |            field in this struct
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `pressure_curve` is never used
[INFO] [stdout]   --> src/touchpad_engine.rs:21:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl TouchpadEngine {
[INFO] [stdout]    | ------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 21 |     pub fn pressure_curve(&mut self) -> Vec<f64> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `dx`, `dy`, and `velocity` are never read
[INFO] [stdout]  --> src/scroll_engine.rs:7:30
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct ScrollEvent { pub dx: f64, pub dy: f64, pub velocity: f64 }
[INFO] [stdout]   |            -----------       ^^           ^^           ^^^^^^^^
[INFO] [stdout]   |            |
[INFO] [stdout]   |            fields in this struct
[INFO] [stdout]   |
[INFO] [stdout]   = note: `ScrollEvent` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `poisson_delay`, `gaussian_jitter_us`, and `level` are never used
[INFO] [stdout]   --> src/timing_engine.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl TimingEngine {
[INFO] [stdout]    | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub fn poisson_delay(&mut self) -> Duration {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 43 |     pub fn gaussian_jitter_us(&mut self, sigma: f64) -> f64 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub fn level(&self) -> u8 { self.level }
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `focus_delay` is never used
[INFO] [stdout]   --> src/window_engine.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl WindowEngine {
[INFO] [stdout]    | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 12 |     pub fn focus_delay(&mut self, pattern: &BehaviorPattern) -> Duration {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `delay_ms` is never read
[INFO] [stdout]  --> src/clipboard_engine.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 |     Copy { delay_ms: u64 },
[INFO] [stdout]   |     ----   ^^^^^^^^
[INFO] [stdout]   |     |
[INFO] [stdout]   |     field in this variant
[INFO] [stdout]   |
[INFO] [stdout]   = note: `ClipboardOp` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `delay_ms` is never read
[INFO] [stdout]  --> src/clipboard_engine.rs:9:13
[INFO] [stdout]   |
[INFO] [stdout] 9 |     Paste { delay_ms: u64 },
[INFO] [stdout]   |     -----   ^^^^^^^^
[INFO] [stdout]   |     |
[INFO] [stdout]   |     field in this variant
[INFO] [stdout]   |
[INFO] [stdout]   = note: `ClipboardOp` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `delay_ms` is never read
[INFO] [stdout]   --> src/clipboard_engine.rs:10:11
[INFO] [stdout]    |
[INFO] [stdout] 10 |     Cut { delay_ms: u64 },
[INFO] [stdout]    |     ---   ^^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ClipboardOp` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Banking`, `Game`, `VideoEditor`, `TextEditor`, and `Other` are never constructed
[INFO] [stdout]  --> src/context_detector.rs:7:23
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub enum AppContext { Banking, Browser, Terminal, Game, VideoEditor, TextEditor, Other(String) }
[INFO] [stdout]   |          ----------   ^^^^^^^                     ^^^^  ^^^^^^^^^^^  ^^^^^^^^^^  ^^^^^
[INFO] [stdout]   |          |
[INFO] [stdout]   |          variants in this enum
[INFO] [stdout]   |
[INFO] [stdout]   = note: `AppContext` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `display_server` and `app_context` are never read
[INFO] [stdout]   --> src/context_detector.rs:10:9
[INFO] [stdout]    |
[INFO] [stdout]  9 | pub struct ContextDetector {
[INFO] [stdout]    |            --------------- fields in this struct
[INFO] [stdout] 10 |     pub display_server: DisplayServer,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 11 |     pub app_context: AppContext,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `display_server` is never used
[INFO] [stdout]   --> src/context_detector.rs:59:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl ContextDetector {
[INFO] [stdout]    | -------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 59 |     pub fn display_server(&self) -> &DisplayServer { &self.display_server }
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `derive_key` is never used
[INFO] [stdout]   --> src/utils.rs:17:8
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub fn derive_key(password: &[u8], salt: &[u8; 16]) -> Result<Vec<u8>> {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `encrypt` is never used
[INFO] [stdout]   --> src/utils.rs:27:8
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub fn encrypt(key: &[u8], plaintext: &[u8]) -> Result<Vec<u8>> {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `decrypt` is never used
[INFO] [stdout]   --> src/utils.rs:40:8
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub fn decrypt(key: &[u8], data: &[u8]) -> Result<Vec<u8>> {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `secure_zero` is never used
[INFO] [stdout]   --> src/utils.rs:52:8
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub fn secure_zero(data: &mut Vec<u8>) {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PerfTimer` is never constructed
[INFO] [stdout]   --> src/utils.rs:56:12
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub struct PerfTimer {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `elapsed_us` are never used
[INFO] [stdout]   --> src/utils.rs:61:12
[INFO] [stdout]    |
[INFO] [stdout] 60 | impl PerfTimer {
[INFO] [stdout]    | -------------- associated items in this implementation
[INFO] [stdout] 61 |     pub fn new() -> Self { Self { start: std::time::Instant::now() } }
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 62 |     pub fn elapsed_us(&self) -> u128 { self.start.elapsed().as_micros() }
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 19.32s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: nix v0.30.1
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 4`
[INFO] running `Command { std: "docker" "inspect" "4414227a4bb38232fdb5e50713e9b4acabea965ee88ee42f57856a75142431fe", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "4414227a4bb38232fdb5e50713e9b4acabea965ee88ee42f57856a75142431fe", kill_on_drop: false }`
[INFO] [stdout] 4414227a4bb38232fdb5e50713e9b4acabea965ee88ee42f57856a75142431fe
