Oct 27 03:33:45.165 INFO checking ijks/piet-rs against master#155510e377ae2a8d8ee0dad1a5f809c9062a5526 for pr-55192-2 Oct 27 03:33:45.167 INFO running `"docker" "create" "-v" "/mnt/big/crater/./work/local/target-dirs/pr-55192-2/worker-5/master#155510e377ae2a8d8ee0dad1a5f809c9062a5526:/target:rw,Z" "-v" "/mnt/big/crater/./work/local/test-source/worker-5/pr-55192-2/master#155510e377ae2a8d8ee0dad1a5f809c9062a5526:/source:ro,Z" "-v" "/mnt/big/crater/./work/local/cargo-home:/cargo-home:ro,Z" "-v" "/mnt/big/crater/./work/local/rustup-home:/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/source" "-e" "USER_ID=1000" "-e" "CMD=cargo +155510e377ae2a8d8ee0dad1a5f809c9062a5526-alt check --frozen --all --all-targets" "-e" "CARGO_TARGET_DIR=/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/cargo-home" "-e" "RUSTUP_HOME=/rustup-home" "-m" "1536M" "--network" "none" "crater"` Oct 27 03:33:45.605 INFO blam! ab82fcbafea79586ef4dcffd4621e249c2b43a604127a77cce12e1b9d6c9ec7f Oct 27 03:33:45.614 INFO running `"docker" "start" "-a" "ab82fcbafea79586ef4dcffd4621e249c2b43a604127a77cce12e1b9d6c9ec7f"` Oct 27 03:33:46.823 INFO kablam! usermod: no changes Oct 27 03:33:47.023 INFO kablam! Compiling backtrace-sys v0.1.16 Oct 27 03:33:47.027 INFO kablam! Checking num-bigint v0.1.40 Oct 27 03:33:51.023 INFO kablam! Checking num-rational v0.1.39 Oct 27 03:33:53.279 INFO kablam! Checking num v0.1.40 Oct 27 03:33:53.279 INFO kablam! Checking image v0.17.0 Oct 27 03:34:06.033 INFO kablam! Checking backtrace v0.3.3 Oct 27 03:34:06.682 INFO kablam! Checking error-chain v0.11.0 Oct 27 03:34:07.615 INFO kablam! Checking piet v0.1.0 (/source) Oct 27 03:34:09.183 INFO kablam! warning: unused import: `std::cmp::Ordering` Oct 27 03:34:09.183 INFO kablam! --> src/interpreter.rs:1:5 Oct 27 03:34:09.183 INFO kablam! | Oct 27 03:34:09.183 INFO kablam! 1 | use std::cmp::Ordering; Oct 27 03:34:09.183 INFO kablam! | ^^^^^^^^^^^^^^^^^^ Oct 27 03:34:09.183 INFO kablam! | Oct 27 03:34:09.185 INFO kablam! = note: #[warn(unused_imports)] on by default Oct 27 03:34:09.185 INFO kablam! Oct 27 03:34:09.313 INFO kablam! warning: unused import: `std::cmp::Ordering` Oct 27 03:34:09.313 INFO kablam! --> src/interpreter.rs:1:5 Oct 27 03:34:09.314 INFO kablam! | Oct 27 03:34:09.314 INFO kablam! 1 | use std::cmp::Ordering; Oct 27 03:34:09.314 INFO kablam! | ^^^^^^^^^^^^^^^^^^ Oct 27 03:34:09.314 INFO kablam! | Oct 27 03:34:09.314 INFO kablam! = note: #[warn(unused_imports)] on by default Oct 27 03:34:09.314 INFO kablam! Oct 27 03:34:09.635 INFO kablam! warning: unused variable: `x` Oct 27 03:34:09.635 INFO kablam! --> src/interpreter.rs:120:29 Oct 27 03:34:09.635 INFO kablam! | Oct 27 03:34:09.635 INFO kablam! 120 | .filter(|&&(x, y)| y == farthest_y) Oct 27 03:34:09.635 INFO kablam! | ^ help: consider using `_x` instead Oct 27 03:34:09.635 INFO kablam! | Oct 27 03:34:09.635 INFO kablam! = note: #[warn(unused_variables)] on by default Oct 27 03:34:09.635 INFO kablam! Oct 27 03:34:09.635 INFO kablam! warning: unused variable: `y` Oct 27 03:34:09.635 INFO kablam! --> src/interpreter.rs:133:32 Oct 27 03:34:09.635 INFO kablam! | Oct 27 03:34:09.635 INFO kablam! 133 | .filter(|&&(x, y)| x == farthest_x) Oct 27 03:34:09.635 INFO kablam! | ^ help: consider using `_y` instead Oct 27 03:34:09.635 INFO kablam! Oct 27 03:34:09.635 INFO kablam! warning: unused variable: `height` Oct 27 03:34:09.635 INFO kablam! --> src/program.rs:78:21 Oct 27 03:34:09.635 INFO kablam! | Oct 27 03:34:09.635 INFO kablam! 78 | let (width, height) = self.size; Oct 27 03:34:09.635 INFO kablam! | ^^^^^^ help: consider using `_height` instead Oct 27 03:34:09.635 INFO kablam! Oct 27 03:34:09.775 INFO kablam! warning: variant is never constructed: `Up` Oct 27 03:34:09.775 INFO kablam! --> src/interpreter.rs:14:5 Oct 27 03:34:09.775 INFO kablam! | Oct 27 03:34:09.775 INFO kablam! 14 | Up, Oct 27 03:34:09.775 INFO kablam! | ^^ Oct 27 03:34:09.775 INFO kablam! | Oct 27 03:34:09.775 INFO kablam! = note: #[warn(dead_code)] on by default Oct 27 03:34:09.775 INFO kablam! Oct 27 03:34:09.775 INFO kablam! warning: variant is never constructed: `Down` Oct 27 03:34:09.775 INFO kablam! --> src/interpreter.rs:16:5 Oct 27 03:34:09.775 INFO kablam! | Oct 27 03:34:09.775 INFO kablam! 16 | Down, Oct 27 03:34:09.775 INFO kablam! | ^^^^ Oct 27 03:34:09.775 INFO kablam! Oct 27 03:34:09.775 INFO kablam! warning: variant is never constructed: `Left` Oct 27 03:34:09.775 INFO kablam! --> src/interpreter.rs:17:5 Oct 27 03:34:09.775 INFO kablam! | Oct 27 03:34:09.775 INFO kablam! 17 | Left, Oct 27 03:34:09.775 INFO kablam! | ^^^^ Oct 27 03:34:09.775 INFO kablam! Oct 27 03:34:09.775 INFO kablam! warning: method is never used: `rotate_clockwise` Oct 27 03:34:09.775 INFO kablam! --> src/interpreter.rs:21:5 Oct 27 03:34:09.775 INFO kablam! | Oct 27 03:34:09.775 INFO kablam! 21 | pub fn rotate_clockwise(&mut self) { Oct 27 03:34:09.775 INFO kablam! | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Oct 27 03:34:09.775 INFO kablam! Oct 27 03:34:09.776 INFO kablam! warning: method is never used: `rotate_counterclockwise` Oct 27 03:34:09.776 INFO kablam! --> src/interpreter.rs:32:5 Oct 27 03:34:09.776 INFO kablam! | Oct 27 03:34:09.776 INFO kablam! 32 | pub fn rotate_counterclockwise(&mut self) { Oct 27 03:34:09.776 INFO kablam! | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Oct 27 03:34:09.776 INFO kablam! Oct 27 03:34:09.776 INFO kablam! warning: variant is never constructed: `Right` Oct 27 03:34:09.776 INFO kablam! --> src/interpreter.rs:47:5 Oct 27 03:34:09.776 INFO kablam! | Oct 27 03:34:09.776 INFO kablam! 47 | Right, Oct 27 03:34:09.776 INFO kablam! | ^^^^^ Oct 27 03:34:09.776 INFO kablam! Oct 27 03:34:09.776 INFO kablam! warning: method is never used: `switch` Oct 27 03:34:09.776 INFO kablam! --> src/interpreter.rs:51:5 Oct 27 03:34:09.776 INFO kablam! | Oct 27 03:34:09.776 INFO kablam! 51 | pub fn switch(&mut self) { Oct 27 03:34:09.776 INFO kablam! | ^^^^^^^^^^^^^^^^^^^^^^^^ Oct 27 03:34:09.776 INFO kablam! Oct 27 03:34:09.776 INFO kablam! warning: method is never used: `current_block` Oct 27 03:34:09.776 INFO kablam! --> src/interpreter.rs:93:5 Oct 27 03:34:09.776 INFO kablam! | Oct 27 03:34:09.776 INFO kablam! 93 | fn current_block(&self) -> HashSet { Oct 27 03:34:09.776 INFO kablam! | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Oct 27 03:34:09.776 INFO kablam! Oct 27 03:34:09.776 INFO kablam! warning: method is never used: `next_coords` Oct 27 03:34:09.776 INFO kablam! --> src/interpreter.rs:97:5 Oct 27 03:34:09.776 INFO kablam! | Oct 27 03:34:09.776 INFO kablam! 97 | fn next_coords(&self) -> Coords { Oct 27 03:34:09.776 INFO kablam! | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Oct 27 03:34:09.776 INFO kablam! Oct 27 03:34:09.776 INFO kablam! warning: function is never used: `x_key` Oct 27 03:34:09.776 INFO kablam! --> src/interpreter.rs:101:9 Oct 27 03:34:09.776 INFO kablam! | Oct 27 03:34:09.776 INFO kablam! 101 | fn x_key(&(x, _): &Coords) -> usize { Oct 27 03:34:09.776 INFO kablam! | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Oct 27 03:34:09.776 INFO kablam! Oct 27 03:34:09.776 INFO kablam! warning: function is never used: `y_key` Oct 27 03:34:09.776 INFO kablam! --> src/interpreter.rs:104:9 Oct 27 03:34:09.776 INFO kablam! | Oct 27 03:34:09.776 INFO kablam! 104 | fn y_key(&(_, y): &Coords) -> usize { Oct 27 03:34:09.776 INFO kablam! | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Oct 27 03:34:09.776 INFO kablam! Oct 27 03:34:09.776 INFO kablam! warning: method is never used: `execute_command` Oct 27 03:34:09.776 INFO kablam! --> src/interpreter.rs:167:5 Oct 27 03:34:09.776 INFO kablam! | Oct 27 03:34:09.776 INFO kablam! 167 | fn execute_command(&mut self, command: &Command) { Oct 27 03:34:09.776 INFO kablam! | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Oct 27 03:34:09.776 INFO kablam! Oct 27 03:34:09.776 INFO kablam! warning: method is never used: `pointer` Oct 27 03:34:09.776 INFO kablam! --> src/interpreter.rs:261:5 Oct 27 03:34:09.776 INFO kablam! | Oct 27 03:34:09.776 INFO kablam! 261 | fn pointer(&mut self, steps: i64) { Oct 27 03:34:09.776 INFO kablam! | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Oct 27 03:34:09.776 INFO kablam! Oct 27 03:34:09.776 INFO kablam! warning: method is never used: `switch` Oct 27 03:34:09.776 INFO kablam! --> src/interpreter.rs:273:5 Oct 27 03:34:09.776 INFO kablam! | Oct 27 03:34:09.776 INFO kablam! 273 | fn switch(&mut self, times: i64) { Oct 27 03:34:09.776 INFO kablam! | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Oct 27 03:34:09.776 INFO kablam! Oct 27 03:34:09.776 INFO kablam! warning: method is never used: `index_to_coords` Oct 27 03:34:09.776 INFO kablam! --> src/program.rs:83:5 Oct 27 03:34:09.776 INFO kablam! | Oct 27 03:34:09.776 INFO kablam! 83 | fn index_to_coords(&self, index: usize) -> Option { Oct 27 03:34:09.776 INFO kablam! | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Oct 27 03:34:09.776 INFO kablam! Oct 27 03:34:09.831 INFO kablam! warning: unused variable: `x` Oct 27 03:34:09.831 INFO kablam! --> src/interpreter.rs:120:29 Oct 27 03:34:09.831 INFO kablam! | Oct 27 03:34:09.831 INFO kablam! 120 | .filter(|&&(x, y)| y == farthest_y) Oct 27 03:34:09.831 INFO kablam! | ^ help: consider using `_x` instead Oct 27 03:34:09.831 INFO kablam! | Oct 27 03:34:09.831 INFO kablam! = note: #[warn(unused_variables)] on by default Oct 27 03:34:09.831 INFO kablam! Oct 27 03:34:09.831 INFO kablam! warning: unused variable: `y` Oct 27 03:34:09.831 INFO kablam! --> src/interpreter.rs:133:32 Oct 27 03:34:09.831 INFO kablam! | Oct 27 03:34:09.831 INFO kablam! 133 | .filter(|&&(x, y)| x == farthest_x) Oct 27 03:34:09.831 INFO kablam! | ^ help: consider using `_y` instead Oct 27 03:34:09.831 INFO kablam! Oct 27 03:34:09.831 INFO kablam! warning: unused variable: `height` Oct 27 03:34:09.831 INFO kablam! --> src/program.rs:78:21 Oct 27 03:34:09.831 INFO kablam! | Oct 27 03:34:09.831 INFO kablam! 78 | let (width, height) = self.size; Oct 27 03:34:09.831 INFO kablam! | ^^^^^^ help: consider using `_height` instead Oct 27 03:34:09.831 INFO kablam! Oct 27 03:34:10.299 INFO kablam! warning: variant is never constructed: `Up` Oct 27 03:34:10.299 INFO kablam! --> src/interpreter.rs:14:5 Oct 27 03:34:10.299 INFO kablam! | Oct 27 03:34:10.299 INFO kablam! 14 | Up, Oct 27 03:34:10.299 INFO kablam! | ^^ Oct 27 03:34:10.299 INFO kablam! | Oct 27 03:34:10.299 INFO kablam! = note: #[warn(dead_code)] on by default Oct 27 03:34:10.299 INFO kablam! Oct 27 03:34:10.299 INFO kablam! warning: variant is never constructed: `Down` Oct 27 03:34:10.299 INFO kablam! --> src/interpreter.rs:16:5 Oct 27 03:34:10.299 INFO kablam! | Oct 27 03:34:10.299 INFO kablam! 16 | Down, Oct 27 03:34:10.299 INFO kablam! | ^^^^ Oct 27 03:34:10.299 INFO kablam! Oct 27 03:34:10.299 INFO kablam! warning: variant is never constructed: `Left` Oct 27 03:34:10.299 INFO kablam! --> src/interpreter.rs:17:5 Oct 27 03:34:10.299 INFO kablam! | Oct 27 03:34:10.299 INFO kablam! 17 | Left, Oct 27 03:34:10.299 INFO kablam! | ^^^^ Oct 27 03:34:10.299 INFO kablam! Oct 27 03:34:10.299 INFO kablam! warning: method is never used: `rotate_clockwise` Oct 27 03:34:10.299 INFO kablam! --> src/interpreter.rs:21:5 Oct 27 03:34:10.299 INFO kablam! | Oct 27 03:34:10.299 INFO kablam! 21 | pub fn rotate_clockwise(&mut self) { Oct 27 03:34:10.299 INFO kablam! | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Oct 27 03:34:10.299 INFO kablam! Oct 27 03:34:10.299 INFO kablam! warning: method is never used: `rotate_counterclockwise` Oct 27 03:34:10.299 INFO kablam! --> src/interpreter.rs:32:5 Oct 27 03:34:10.299 INFO kablam! | Oct 27 03:34:10.299 INFO kablam! 32 | pub fn rotate_counterclockwise(&mut self) { Oct 27 03:34:10.299 INFO kablam! | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Oct 27 03:34:10.299 INFO kablam! Oct 27 03:34:10.299 INFO kablam! warning: variant is never constructed: `Right` Oct 27 03:34:10.299 INFO kablam! --> src/interpreter.rs:47:5 Oct 27 03:34:10.299 INFO kablam! | Oct 27 03:34:10.299 INFO kablam! 47 | Right, Oct 27 03:34:10.299 INFO kablam! | ^^^^^ Oct 27 03:34:10.299 INFO kablam! Oct 27 03:34:10.299 INFO kablam! warning: method is never used: `switch` Oct 27 03:34:10.299 INFO kablam! --> src/interpreter.rs:51:5 Oct 27 03:34:10.299 INFO kablam! | Oct 27 03:34:10.299 INFO kablam! 51 | pub fn switch(&mut self) { Oct 27 03:34:10.299 INFO kablam! | ^^^^^^^^^^^^^^^^^^^^^^^^ Oct 27 03:34:10.299 INFO kablam! Oct 27 03:34:10.299 INFO kablam! warning: method is never used: `current_block` Oct 27 03:34:10.299 INFO kablam! --> src/interpreter.rs:93:5 Oct 27 03:34:10.299 INFO kablam! | Oct 27 03:34:10.299 INFO kablam! 93 | fn current_block(&self) -> HashSet { Oct 27 03:34:10.299 INFO kablam! | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Oct 27 03:34:10.299 INFO kablam! Oct 27 03:34:10.299 INFO kablam! warning: method is never used: `next_coords` Oct 27 03:34:10.299 INFO kablam! --> src/interpreter.rs:97:5 Oct 27 03:34:10.299 INFO kablam! | Oct 27 03:34:10.299 INFO kablam! 97 | fn next_coords(&self) -> Coords { Oct 27 03:34:10.299 INFO kablam! | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Oct 27 03:34:10.299 INFO kablam! Oct 27 03:34:10.299 INFO kablam! warning: function is never used: `x_key` Oct 27 03:34:10.300 INFO kablam! --> src/interpreter.rs:101:9 Oct 27 03:34:10.300 INFO kablam! | Oct 27 03:34:10.300 INFO kablam! 101 | fn x_key(&(x, _): &Coords) -> usize { Oct 27 03:34:10.300 INFO kablam! | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Oct 27 03:34:10.300 INFO kablam! Oct 27 03:34:10.300 INFO kablam! warning: function is never used: `y_key` Oct 27 03:34:10.300 INFO kablam! --> src/interpreter.rs:104:9 Oct 27 03:34:10.300 INFO kablam! | Oct 27 03:34:10.300 INFO kablam! 104 | fn y_key(&(_, y): &Coords) -> usize { Oct 27 03:34:10.300 INFO kablam! | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Oct 27 03:34:10.300 INFO kablam! Oct 27 03:34:10.300 INFO kablam! warning: method is never used: `execute_command` Oct 27 03:34:10.300 INFO kablam! --> src/interpreter.rs:167:5 Oct 27 03:34:10.300 INFO kablam! | Oct 27 03:34:10.300 INFO kablam! 167 | fn execute_command(&mut self, command: &Command) { Oct 27 03:34:10.300 INFO kablam! | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Oct 27 03:34:10.300 INFO kablam! Oct 27 03:34:10.300 INFO kablam! warning: method is never used: `pointer` Oct 27 03:34:10.300 INFO kablam! --> src/interpreter.rs:261:5 Oct 27 03:34:10.300 INFO kablam! | Oct 27 03:34:10.300 INFO kablam! 261 | fn pointer(&mut self, steps: i64) { Oct 27 03:34:10.300 INFO kablam! | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Oct 27 03:34:10.300 INFO kablam! Oct 27 03:34:10.300 INFO kablam! warning: method is never used: `switch` Oct 27 03:34:10.300 INFO kablam! --> src/interpreter.rs:273:5 Oct 27 03:34:10.300 INFO kablam! | Oct 27 03:34:10.300 INFO kablam! 273 | fn switch(&mut self, times: i64) { Oct 27 03:34:10.300 INFO kablam! | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Oct 27 03:34:10.300 INFO kablam! Oct 27 03:34:12.165 INFO kablam! warning: unused variable: `codel_size` Oct 27 03:34:12.166 INFO kablam! --> src/main.rs:23:9 Oct 27 03:34:12.167 INFO kablam! | Oct 27 03:34:12.168 INFO kablam! 23 | let codel_size = matches.value_of("codel_size").map(|_| unimplemented!()); Oct 27 03:34:12.168 INFO kablam! | ^^^^^^^^^^ help: consider using `_codel_size` instead Oct 27 03:34:12.169 INFO kablam! | Oct 27 03:34:12.170 INFO kablam! = note: #[warn(unused_variables)] on by default Oct 27 03:34:12.170 INFO kablam! Oct 27 03:34:12.192 INFO kablam! warning: unused `std::result::Result` that must be used Oct 27 03:34:12.192 INFO kablam! --> src/main.rs:34:5 Oct 27 03:34:12.192 INFO kablam! | Oct 27 03:34:12.193 INFO kablam! 34 | interpreter.run(); Oct 27 03:34:12.193 INFO kablam! | ^^^^^^^^^^^^^^^^^^ Oct 27 03:34:12.194 INFO kablam! | Oct 27 03:34:12.195 INFO kablam! = note: #[warn(unused_must_use)] on by default Oct 27 03:34:12.195 INFO kablam! = note: this `Result` may be an `Err` variant, which should be handled Oct 27 03:34:12.195 INFO kablam! Oct 27 03:34:12.620 INFO kablam! warning: unused variable: `codel_size` Oct 27 03:34:12.621 INFO kablam! --> src/main.rs:23:9 Oct 27 03:34:12.621 INFO kablam! | Oct 27 03:34:12.622 INFO kablam! 23 | let codel_size = matches.value_of("codel_size").map(|_| unimplemented!()); Oct 27 03:34:12.623 INFO kablam! | ^^^^^^^^^^ help: consider using `_codel_size` instead Oct 27 03:34:12.623 INFO kablam! | Oct 27 03:34:12.624 INFO kablam! = note: #[warn(unused_variables)] on by default Oct 27 03:34:12.624 INFO kablam! Oct 27 03:34:12.636 INFO kablam! warning: unused `std::result::Result` that must be used Oct 27 03:34:12.637 INFO kablam! --> src/main.rs:34:5 Oct 27 03:34:12.638 INFO kablam! | Oct 27 03:34:12.638 INFO kablam! 34 | interpreter.run(); Oct 27 03:34:12.639 INFO kablam! | ^^^^^^^^^^^^^^^^^^ Oct 27 03:34:12.640 INFO kablam! | Oct 27 03:34:12.640 INFO kablam! = note: #[warn(unused_must_use)] on by default Oct 27 03:34:12.641 INFO kablam! = note: this `Result` may be an `Err` variant, which should be handled Oct 27 03:34:12.642 INFO kablam! Oct 27 03:34:12.691 INFO kablam! Finished dev [unoptimized + debuginfo] target(s) in 25.84s Oct 27 03:34:12.698 INFO kablam! su: No module specific data is present Oct 27 03:34:14.108 INFO running `"docker" "rm" "-f" "ab82fcbafea79586ef4dcffd4621e249c2b43a604127a77cce12e1b9d6c9ec7f"` Oct 27 03:34:14.503 INFO blam! ab82fcbafea79586ef4dcffd4621e249c2b43a604127a77cce12e1b9d6c9ec7f