[INFO] updating cached repository Turbo87/ogn-web-gateway [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/Turbo87/ogn-web-gateway [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/Turbo87/ogn-web-gateway" "work/ex/clippy-test-run/sources/stable/gh/Turbo87/ogn-web-gateway"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/Turbo87/ogn-web-gateway'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/Turbo87/ogn-web-gateway" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/Turbo87/ogn-web-gateway"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/Turbo87/ogn-web-gateway'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 2f758145e66ba1ed2ced387a82dda72571204ac6 [INFO] sha for GitHub repo Turbo87/ogn-web-gateway: 2f758145e66ba1ed2ced387a82dda72571204ac6 [INFO] validating manifest of Turbo87/ogn-web-gateway on toolchain stable [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] validating manifest of Turbo87/ogn-web-gateway on toolchain stable+rustflags=-Dclippy::into_iter_on_array [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started frobbing Turbo87/ogn-web-gateway [INFO] finished frobbing Turbo87/ogn-web-gateway [INFO] frobbed toml for Turbo87/ogn-web-gateway written to work/ex/clippy-test-run/sources/stable/gh/Turbo87/ogn-web-gateway/Cargo.toml [INFO] started frobbing Turbo87/ogn-web-gateway [INFO] finished frobbing Turbo87/ogn-web-gateway [INFO] frobbed toml for Turbo87/ogn-web-gateway written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/Turbo87/ogn-web-gateway/Cargo.toml [INFO] crate Turbo87/ogn-web-gateway has a lockfile. skipping [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting Turbo87/ogn-web-gateway against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-4/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/Turbo87/ogn-web-gateway:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+stable" "clippy" "--frozen" "--all" "--all-targets"` [INFO] [stdout] 66faf5c3c4110685691c54db7ee891e5677a9808f8624fd1547ade822b1721ff [INFO] running `"docker" "start" "-a" "66faf5c3c4110685691c54db7ee891e5677a9808f8624fd1547ade822b1721ff"` [INFO] [stderr] Compiling regex v1.0.3 [INFO] [stderr] Compiling redis v0.9.0 [INFO] [stderr] Checking log v0.4.6 [INFO] [stderr] Checking crossbeam-utils v0.6.1 [INFO] [stderr] Checking socket2 v0.3.5 [INFO] [stderr] Checking uname v0.1.1 [INFO] [stderr] Compiling actix-web v0.7.3 [INFO] [stderr] Compiling openssl-sys v0.9.33 [INFO] [stderr] Compiling ring v0.13.2 [INFO] [stderr] Checking itertools v0.8.0 [INFO] [stderr] Checking crossbeam-epoch v0.5.0 [INFO] [stderr] Checking crossbeam-epoch v0.4.1 [INFO] [stderr] Checking bytes v0.4.7 [INFO] [stderr] Checking futures-cpupool v0.1.8 [INFO] [stderr] Checking resolv-conf v0.6.0 [INFO] [stderr] Checking nom v3.2.1 [INFO] [stderr] Checking mio v0.6.14 [INFO] [stderr] Checking log v0.3.9 [INFO] [stderr] Checking want v0.0.4 [INFO] [stderr] Checking combine v3.5.1 [INFO] [stderr] Checking lock_api v0.1.3 [INFO] [stderr] Checking r2d2 v0.8.2 [INFO] [stderr] Checking tokio-timer v0.2.8 [INFO] [stderr] Checking backoff v0.1.2 [INFO] [stderr] Checking regex v0.2.11 [INFO] [stderr] Checking crossbeam-deque v0.3.1 [INFO] [stderr] Compiling syn v0.15.22 [INFO] [stderr] Compiling syn v0.14.6 [INFO] [stderr] Checking backtrace-sys v0.1.23 [INFO] [stderr] Checking brotli-sys v0.3.2 [INFO] [stderr] Checking miniz-sys v0.1.10 [INFO] [stderr] Compiling im v12.0.0 [INFO] [stderr] Compiling sentry v0.9.0 [INFO] [stderr] Checking approx v0.3.1 [INFO] [stderr] Checking serde_test v1.0.70 [INFO] [stderr] Checking uuid v0.6.5 [INFO] [stderr] Checking bincode v1.0.1 [INFO] [stderr] Checking serde_json v1.0.33 [INFO] [stderr] Checking tokio-io v0.1.7 [INFO] [stderr] Checking http v0.1.8 [INFO] [stderr] Compiling openssl v0.9.24 [INFO] [stderr] Compiling openssl v0.10.10 [INFO] [stderr] Checking backtrace v0.3.9 [INFO] [stderr] Checking mio-uds v0.6.6 [INFO] [stderr] Checking parking_lot v0.5.5 [INFO] [stderr] Checking parking_lot v0.6.2 [INFO] [stderr] Checking tokio-threadpool v0.1.5 [INFO] [stderr] Checking serde_urlencoded v0.5.2 [INFO] [stderr] Checking url_serde v0.2.0 [INFO] [stderr] Checking brotli2 v0.3.2 [INFO] [stderr] Checking flate2 v1.0.2 [INFO] [stderr] Checking chrono v0.4.6 [INFO] [stderr] Checking debugid v0.2.0 [INFO] [stderr] Checking linked-hash-map v0.5.1 [INFO] [stderr] Checking tokio-reactor v0.1.1 [INFO] [stderr] Checking tokio-codec v0.1.0 [INFO] [stderr] Checking crossbeam-channel v0.2.2 [INFO] [stderr] Checking env_logger v0.5.10 [INFO] [stderr] Compiling synstructure v0.10.0 [INFO] [stderr] Compiling serde_derive v1.0.82 [INFO] [stderr] Compiling actix_derive v0.3.0 [INFO] [stderr] Checking h2 v0.1.7 [INFO] [stderr] Checking tokio-fs v0.1.0 [INFO] [stderr] Checking tokio-tcp v0.1.0 [INFO] [stderr] Checking tokio-udp v0.1.0 [INFO] [stderr] Checking tokio-signal v0.2.1 [INFO] [stderr] Checking cookie v0.11.0 [INFO] [stderr] Checking systemstat v0.1.3 [INFO] [stderr] Checking pretty_env_logger v0.2.5 [INFO] [stderr] Compiling failure_derive v0.1.3 [INFO] [stderr] Checking native-tls v0.1.5 [INFO] [stderr] Checking tokio-openssl v0.2.1 [INFO] [stderr] Checking tokio v0.1.7 [INFO] [stderr] Checking failure v0.1.3 [INFO] [stderr] Checking tokio-core v0.1.17 [INFO] [stderr] Checking trust-dns-proto v0.5.0 [INFO] [stderr] Checking sentry-types v0.5.4 [INFO] [stderr] Checking tokio-proto v0.1.1 [INFO] [stderr] Checking tokio-tls v0.1.4 [INFO] [stderr] Checking r2d2_redis v0.8.0 [INFO] [stderr] Checking trust-dns-resolver v0.10.0 [INFO] [stderr] Checking hyper v0.11.27 [INFO] [stderr] Checking actix v0.7.7 [INFO] [stderr] Checking hyper-tls v0.1.3 [INFO] [stderr] Checking actix-ogn v0.2.0 [INFO] [stderr] Checking reqwest v0.8.6 [INFO] [stderr] Checking ogn-web-gateway v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/ogn/time.rs:8:5 [INFO] [stderr] | [INFO] [stderr] 8 | / return DateTime::::from_utc( [INFO] [stderr] 9 | | if dt.num_hours() <= -12 { [INFO] [stderr] 10 | | datetime - Duration::days(1) [INFO] [stderr] 11 | | } else if dt.num_hours() >= 12 { [INFO] [stderr] ... | [INFO] [stderr] 16 | | Utc, [INFO] [stderr] 17 | | ); [INFO] [stderr] | |______^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 8 | DateTime::::from_utc( [INFO] [stderr] 9 | if dt.num_hours() <= -12 { [INFO] [stderr] 10 | datetime - Duration::days(1) [INFO] [stderr] 11 | } else if dt.num_hours() >= 12 { [INFO] [stderr] 12 | datetime + Duration::days(1) [INFO] [stderr] 13 | } else { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded unit return type [INFO] [stderr] --> src/redis/positions.rs:108:79 [INFO] [stderr] | [INFO] [stderr] 108 | fn handle(&mut self, _msg: DropOldOGNPositions, _ctx: &mut Self::Context) -> () { [INFO] [stderr] | ^^^^^ help: remove the `-> ()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unused_unit)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/redis/positions.rs:138:17 [INFO] [stderr] | [INFO] [stderr] 138 | return bucket_time < max; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `bucket_time < max` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/geo.rs:78:39 [INFO] [stderr] | [INFO] [stderr] 78 | assert_relative_eq!(bbox.top, 50.3456789); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `50.345_678_9` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/ogn/time.rs:8:5 [INFO] [stderr] | [INFO] [stderr] 8 | / return DateTime::::from_utc( [INFO] [stderr] 9 | | if dt.num_hours() <= -12 { [INFO] [stderr] 10 | | datetime - Duration::days(1) [INFO] [stderr] 11 | | } else if dt.num_hours() >= 12 { [INFO] [stderr] ... | [INFO] [stderr] 16 | | Utc, [INFO] [stderr] 17 | | ); [INFO] [stderr] | |______^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 8 | DateTime::::from_utc( [INFO] [stderr] 9 | if dt.num_hours() <= -12 { [INFO] [stderr] 10 | datetime - Duration::days(1) [INFO] [stderr] 11 | } else if dt.num_hours() >= 12 { [INFO] [stderr] 12 | datetime + Duration::days(1) [INFO] [stderr] 13 | } else { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded unit return type [INFO] [stderr] --> src/redis/positions.rs:108:79 [INFO] [stderr] | [INFO] [stderr] 108 | fn handle(&mut self, _msg: DropOldOGNPositions, _ctx: &mut Self::Context) -> () { [INFO] [stderr] | ^^^^^ help: remove the `-> ()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unused_unit)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/redis/positions.rs:138:17 [INFO] [stderr] | [INFO] [stderr] 138 | return bucket_time < max; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `bucket_time < max` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/api/records.rs:30:32 [INFO] [stderr] | [INFO] [stderr] 30 | let ids: Vec<_> = id.split(",").map(|s| s.to_owned()).collect(); [INFO] [stderr] | ^^^ help: try using a char instead: `','` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/gateway.rs:150:29 [INFO] [stderr] | [INFO] [stderr] 150 | .or_insert_with(|| Vec::new()) [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove closure as shown: `Vec::new` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/ogn/aprs.rs:15:1 [INFO] [stderr] | [INFO] [stderr] 15 | / pub fn parse<'a>(line: &'a str) -> Option> { [INFO] [stderr] 16 | | // Examples: [INFO] [stderr] 17 | | // FLRDD9612>APRS,qAS,VillaBlau:/141956h4911.18N/00815.93E'126/059/A=003716 !W75! id06DD9612 -355fpm -1.2rot 3.0dB 2e -1.3kHz gps3x3 [INFO] [stderr] 18 | | // ICA4060D7>APRS,qAS,UKDUN2:/141953h5147.03N\00109.00W^210/143/A=003405 !W50! id214060D7 +079fpm +0.0rot 8.0dB 0e -11.9kHz gps3x4 [INFO] [stderr] ... | [INFO] [stderr] 111 | | }) [INFO] [stderr] 112 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/redis/positions.rs:62:33 [INFO] [stderr] | [INFO] [stderr] 62 | .or_insert_with(|| Vec::new()) [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove closure as shown: `Vec::new` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/redis/positions.rs:60:33 [INFO] [stderr] | [INFO] [stderr] 60 | .or_insert_with(|| HashMap::new()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: remove closure as shown: `HashMap::new` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/redis/positions.rs:166:48 [INFO] [stderr] | [INFO] [stderr] 166 | let before = msg.before.unwrap_or_else(|| Utc::now()); [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove closure as shown: `Utc::now` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: casting u16 to i64 may become silently lossy if types change [INFO] [stderr] --> src/redis/positions.rs:215:43 [INFO] [stderr] | [INFO] [stderr] 215 | let timestamp = bucket_time + record.seconds as i64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(record.seconds)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/api/records.rs:30:32 [INFO] [stderr] | [INFO] [stderr] 30 | let ids: Vec<_> = id.split(",").map(|s| s.to_owned()).collect(); [INFO] [stderr] | ^^^ help: try using a char instead: `','` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/gateway.rs:150:29 [INFO] [stderr] | [INFO] [stderr] 150 | .or_insert_with(|| Vec::new()) [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove closure as shown: `Vec::new` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/ogn/aprs.rs:15:1 [INFO] [stderr] | [INFO] [stderr] 15 | / pub fn parse<'a>(line: &'a str) -> Option> { [INFO] [stderr] 16 | | // Examples: [INFO] [stderr] 17 | | // FLRDD9612>APRS,qAS,VillaBlau:/141956h4911.18N/00815.93E'126/059/A=003716 !W75! id06DD9612 -355fpm -1.2rot 3.0dB 2e -1.3kHz gps3x3 [INFO] [stderr] 18 | | // ICA4060D7>APRS,qAS,UKDUN2:/141953h5147.03N\00109.00W^210/143/A=003405 !W50! id214060D7 +079fpm +0.0rot 8.0dB 0e -11.9kHz gps3x4 [INFO] [stderr] ... | [INFO] [stderr] 111 | | }) [INFO] [stderr] 112 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/redis/positions.rs:62:33 [INFO] [stderr] | [INFO] [stderr] 62 | .or_insert_with(|| Vec::new()) [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove closure as shown: `Vec::new` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/redis/positions.rs:60:33 [INFO] [stderr] | [INFO] [stderr] 60 | .or_insert_with(|| HashMap::new()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: remove closure as shown: `HashMap::new` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/redis/positions.rs:166:48 [INFO] [stderr] | [INFO] [stderr] 166 | let before = msg.before.unwrap_or_else(|| Utc::now()); [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove closure as shown: `Utc::now` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: casting u16 to i64 may become silently lossy if types change [INFO] [stderr] --> src/redis/positions.rs:215:43 [INFO] [stderr] | [INFO] [stderr] 215 | let timestamp = bucket_time + record.seconds as i64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(record.seconds)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 2m 50s [INFO] running `"docker" "inspect" "66faf5c3c4110685691c54db7ee891e5677a9808f8624fd1547ade822b1721ff"` [INFO] running `"docker" "rm" "-f" "66faf5c3c4110685691c54db7ee891e5677a9808f8624fd1547ade822b1721ff"` [INFO] [stdout] 66faf5c3c4110685691c54db7ee891e5677a9808f8624fd1547ade822b1721ff