[INFO] cloning repository https://github.com/bonedaddy/pmm [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/bonedaddy/pmm" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fbonedaddy%2Fpmm", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fbonedaddy%2Fpmm'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] eb2b475e0155dea1a12ce43426f6012a6a2ac0ba [INFO] checking bonedaddy/pmm against master#779e19d8baa3e3625bd4fc5c85cbb2ad47b43155 for pr-147589-1 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fbonedaddy%2Fpmm" "/workspace/builds/worker-0-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/bonedaddy/pmm [INFO] finished tweaking git repo https://github.com/bonedaddy/pmm [INFO] tweaked toml for git repo https://github.com/bonedaddy/pmm written to /workspace/builds/worker-0-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/bonedaddy/pmm on toolchain 779e19d8baa3e3625bd4fc5c85cbb2ad47b43155 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+779e19d8baa3e3625bd4fc5c85cbb2ad47b43155" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/bonedaddy/pmm 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" "+779e19d8baa3e3625bd4fc5c85cbb2ad47b43155" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded cfasttext-sys v0.7.8 [INFO] [stderr] Downloaded fasttext v0.7.8 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+779e19d8baa3e3625bd4fc5c85cbb2ad47b43155" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 929653370e6260c148a89eace31de1ffe10f9dab90ddf9409f8cd4c8c9714ace [INFO] running `Command { std: "docker" "start" "-a" "929653370e6260c148a89eace31de1ffe10f9dab90ddf9409f8cd4c8c9714ace", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "929653370e6260c148a89eace31de1ffe10f9dab90ddf9409f8cd4c8c9714ace", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "929653370e6260c148a89eace31de1ffe10f9dab90ddf9409f8cd4c8c9714ace", kill_on_drop: false }` [INFO] [stdout] 929653370e6260c148a89eace31de1ffe10f9dab90ddf9409f8cd4c8c9714ace [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-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" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+779e19d8baa3e3625bd4fc5c85cbb2ad47b43155" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 0f56aab0a013adbb2bc4b17636ce4312810f45468101dd6625520abffd02a2fa [INFO] running `Command { std: "docker" "start" "-a" "0f56aab0a013adbb2bc4b17636ce4312810f45468101dd6625520abffd02a2fa", kill_on_drop: false }` [INFO] [stderr] Compiling syn v2.0.100 [INFO] [stderr] Checking once_cell v1.21.1 [INFO] [stderr] Checking log v0.4.26 [INFO] [stderr] Compiling cc v1.2.17 [INFO] [stderr] Checking parking_lot_core v0.9.10 [INFO] [stderr] Checking socket2 v0.5.8 [INFO] [stderr] Checking mio v1.0.3 [INFO] [stderr] Checking signal-hook-registry v1.4.2 [INFO] [stderr] Compiling openssl v0.10.71 [INFO] [stderr] Checking http v0.2.12 [INFO] [stderr] Checking indexmap v2.8.0 [INFO] [stderr] Checking clap_builder v4.5.32 [INFO] [stderr] Checking itertools v0.14.0 [INFO] [stderr] Checking tracing-core v0.1.33 [INFO] [stderr] Checking thread_local v1.1.8 [INFO] [stderr] Checking parking_lot v0.12.3 [INFO] [stderr] Checking tracing-log v0.2.0 [INFO] [stderr] Checking http-body v0.4.6 [INFO] [stderr] Compiling openssl-sys v0.9.106 [INFO] [stderr] Compiling cfasttext-sys v0.7.8 [INFO] [stderr] Compiling native-tls v0.2.14 [INFO] [stderr] Compiling synstructure v0.13.1 [INFO] [stderr] Compiling zerofrom-derive v0.1.6 [INFO] [stderr] Compiling yoke-derive v0.7.5 [INFO] [stderr] Compiling zerovec-derive v0.10.3 [INFO] [stderr] Compiling displaydoc v0.2.5 [INFO] [stderr] Compiling icu_provider_macros v1.5.0 [INFO] [stderr] Compiling tokio-macros v2.5.0 [INFO] [stderr] Compiling tracing-attributes v0.1.28 [INFO] [stderr] Compiling serde_derive v1.0.219 [INFO] [stderr] Compiling openssl-macros v0.1.1 [INFO] [stderr] Compiling clap_derive v4.5.32 [INFO] [stderr] Checking tokio v1.44.1 [INFO] [stderr] Checking zerofrom v0.1.6 [INFO] [stderr] Checking tracing v0.1.41 [INFO] [stderr] Checking yoke v0.7.5 [INFO] [stderr] Checking zerovec v0.10.4 [INFO] [stderr] Checking clap v4.5.32 [INFO] [stderr] Checking tinystr v0.7.6 [INFO] [stderr] Checking icu_collections v1.5.0 [INFO] [stderr] Checking icu_locid v1.5.0 [INFO] [stderr] Checking serde v1.0.219 [INFO] [stderr] Checking icu_provider v1.5.0 [INFO] [stderr] Checking icu_locid_transform v1.5.0 [INFO] [stderr] Checking icu_properties v1.5.1 [INFO] [stderr] Checking serde_json v1.0.140 [INFO] [stderr] Checking serde_urlencoded v0.7.1 [INFO] [stderr] Checking tracing-serde v0.2.0 [INFO] [stderr] Checking tokio-util v0.7.14 [INFO] [stderr] Checking tokio-native-tls v0.3.1 [INFO] [stderr] Checking tracing-subscriber v0.3.19 [INFO] [stderr] Checking h2 v0.3.26 [INFO] [stderr] Checking icu_normalizer v1.5.0 [INFO] [stderr] Checking idna_adapter v1.2.0 [INFO] [stderr] Checking idna v1.0.3 [INFO] [stderr] Checking url v2.5.4 [INFO] [stderr] Checking hyper v0.14.32 [INFO] [stderr] Checking fasttext v0.7.8 [INFO] [stderr] Checking hyper-tls v0.5.0 [INFO] [stderr] Checking reqwest v0.11.27 [INFO] [stderr] Checking plex-media-manager v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused imports: `HashMap` and `HashSet` [INFO] [stdout] --> src/main.rs:6:19 [INFO] [stdout] | [INFO] [stdout] 6 | collections::{HashMap, HashSet}, [INFO] [stdout] | ^^^^^^^ ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Args` [INFO] [stdout] --> src/embedding_model.rs:1:16 [INFO] [stdout] | [INFO] [stdout] 1 | use fasttext::{Args, FastText}; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around pattern [INFO] [stdout] --> src/embedding_model.rs:128:21 [INFO] [stdout] | [INFO] [stdout] 128 | for ((&e1, &e2)) in embeddings[i].iter().zip(centroid.iter()) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 128 - for ((&e1, &e2)) in embeddings[i].iter().zip(centroid.iter()) { [INFO] [stdout] 128 + for (&e1, &e2) in embeddings[i].iter().zip(centroid.iter()) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `HashMap` and `HashSet` [INFO] [stdout] --> src/main.rs:6:19 [INFO] [stdout] | [INFO] [stdout] 6 | collections::{HashMap, HashSet}, [INFO] [stdout] | ^^^^^^^ ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Args` [INFO] [stdout] --> src/embedding_model.rs:1:16 [INFO] [stdout] | [INFO] [stdout] 1 | use fasttext::{Args, FastText}; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around pattern [INFO] [stdout] --> src/embedding_model.rs:128:21 [INFO] [stdout] | [INFO] [stdout] 128 | for ((&e1, &e2)) in embeddings[i].iter().zip(centroid.iter()) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 128 - for ((&e1, &e2)) in embeddings[i].iter().zip(centroid.iter()) { [INFO] [stdout] 128 + for (&e1, &e2) in embeddings[i].iter().zip(centroid.iter()) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:86:13 [INFO] [stdout] | [INFO] [stdout] 86 | let mut client_builder = Client::builder().timeout(std::time::Duration::from_secs(30)); [INFO] [stdout] | ----^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:86:13 [INFO] [stdout] | [INFO] [stdout] 86 | let mut client_builder = Client::builder().timeout(std::time::Duration::from_secs(30)); [INFO] [stdout] | ----^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `terms` [INFO] [stdout] --> src/main.rs:1304:13 [INFO] [stdout] | [INFO] [stdout] 1304 | terms, [INFO] [stdout] | ^^^^^ help: try ignoring the field: `terms: _` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `terms` [INFO] [stdout] --> src/main.rs:1304:13 [INFO] [stdout] | [INFO] [stdout] 1304 | terms, [INFO] [stdout] | ^^^^^ help: try ignoring the field: `terms: _` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `PlexCollectionManager` is more private than the item `auto_categorize_by_clustering` [INFO] [stdout] --> src/embedding_model.rs:218:1 [INFO] [stdout] | [INFO] [stdout] 218 | / pub async fn auto_categorize_by_clustering( [INFO] [stdout] 219 | | manager: &mut crate::PlexCollectionManager, [INFO] [stdout] 220 | | library_id: &str, [INFO] [stdout] 221 | | base_path: &str, [INFO] [stdout] ... | [INFO] [stdout] 226 | | similarity_threshold: f32, // New parameter to control minimum similarity [INFO] [stdout] 227 | | ) -> Result<(), Box> { [INFO] [stdout] | |_______________________________^ function `auto_categorize_by_clustering` is reachable at visibility `pub` [INFO] [stdout] | [INFO] [stdout] note: but type `PlexCollectionManager` is only usable at visibility `pub(crate)` [INFO] [stdout] --> src/main.rs:77:1 [INFO] [stdout] | [INFO] [stdout] 77 | struct PlexCollectionManager { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = note: `#[warn(private_interfaces)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `PlexCollectionManager` is more private than the item `tag_by_fasttext` [INFO] [stdout] --> src/embedding_model.rs:376:1 [INFO] [stdout] | [INFO] [stdout] 376 | / pub async fn tag_by_fasttext( [INFO] [stdout] 377 | | manager: &mut crate::PlexCollectionManager, [INFO] [stdout] 378 | | library_id: &str, [INFO] [stdout] 379 | | base_path: &str, [INFO] [stdout] ... | [INFO] [stdout] 383 | | model_path: &str, [INFO] [stdout] 384 | | ) -> Result<(), Box> { [INFO] [stdout] | |_______________________________^ function `tag_by_fasttext` is reachable at visibility `pub` [INFO] [stdout] | [INFO] [stdout] note: but type `PlexCollectionManager` is only usable at visibility `pub(crate)` [INFO] [stdout] --> src/main.rs:77:1 [INFO] [stdout] | [INFO] [stdout] 77 | struct PlexCollectionManager { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `get_items_in_library` and `find_similar_directories` are never used [INFO] [stdout] --> src/main.rs:170:14 [INFO] [stdout] | [INFO] [stdout] 84 | impl PlexCollectionManager { [INFO] [stdout] | -------------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 170 | async fn get_items_in_library( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 644 | async fn find_similar_directories( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `dimension` is never read [INFO] [stdout] --> src/embedding_model.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 6 | pub struct FastTextEmbedding { [INFO] [stdout] | ----------------- field in this struct [INFO] [stdout] 7 | model: FastText, [INFO] [stdout] 8 | dimension: usize, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `path` is never read [INFO] [stdout] --> src/embedding_model.rs:79:5 [INFO] [stdout] | [INFO] [stdout] 77 | struct DirectoryEmbedding { [INFO] [stdout] | ------------------ field in this struct [INFO] [stdout] 78 | name: String, [INFO] [stdout] 79 | path: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `DirectoryEmbedding` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `PlexCollectionManager` is more private than the item `auto_categorize_by_clustering` [INFO] [stdout] --> src/embedding_model.rs:218:1 [INFO] [stdout] | [INFO] [stdout] 218 | / pub async fn auto_categorize_by_clustering( [INFO] [stdout] 219 | | manager: &mut crate::PlexCollectionManager, [INFO] [stdout] 220 | | library_id: &str, [INFO] [stdout] 221 | | base_path: &str, [INFO] [stdout] ... | [INFO] [stdout] 226 | | similarity_threshold: f32, // New parameter to control minimum similarity [INFO] [stdout] 227 | | ) -> Result<(), Box> { [INFO] [stdout] | |_______________________________^ function `auto_categorize_by_clustering` is reachable at visibility `pub` [INFO] [stdout] | [INFO] [stdout] note: but type `PlexCollectionManager` is only usable at visibility `pub(crate)` [INFO] [stdout] --> src/main.rs:77:1 [INFO] [stdout] | [INFO] [stdout] 77 | struct PlexCollectionManager { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = note: `#[warn(private_interfaces)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `PlexCollectionManager` is more private than the item `tag_by_fasttext` [INFO] [stdout] --> src/embedding_model.rs:376:1 [INFO] [stdout] | [INFO] [stdout] 376 | / pub async fn tag_by_fasttext( [INFO] [stdout] 377 | | manager: &mut crate::PlexCollectionManager, [INFO] [stdout] 378 | | library_id: &str, [INFO] [stdout] 379 | | base_path: &str, [INFO] [stdout] ... | [INFO] [stdout] 383 | | model_path: &str, [INFO] [stdout] 384 | | ) -> Result<(), Box> { [INFO] [stdout] | |_______________________________^ function `tag_by_fasttext` is reachable at visibility `pub` [INFO] [stdout] | [INFO] [stdout] note: but type `PlexCollectionManager` is only usable at visibility `pub(crate)` [INFO] [stdout] --> src/main.rs:77:1 [INFO] [stdout] | [INFO] [stdout] 77 | struct PlexCollectionManager { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `get_items_in_library` and `find_similar_directories` are never used [INFO] [stdout] --> src/main.rs:170:14 [INFO] [stdout] | [INFO] [stdout] 84 | impl PlexCollectionManager { [INFO] [stdout] | -------------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 170 | async fn get_items_in_library( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 644 | async fn find_similar_directories( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `dimension` is never read [INFO] [stdout] --> src/embedding_model.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 6 | pub struct FastTextEmbedding { [INFO] [stdout] | ----------------- field in this struct [INFO] [stdout] 7 | model: FastText, [INFO] [stdout] 8 | dimension: usize, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `path` is never read [INFO] [stdout] --> src/embedding_model.rs:79:5 [INFO] [stdout] | [INFO] [stdout] 77 | struct DirectoryEmbedding { [INFO] [stdout] | ------------------ field in this struct [INFO] [stdout] 78 | name: String, [INFO] [stdout] 79 | path: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `DirectoryEmbedding` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 32.26s [INFO] running `Command { std: "docker" "inspect" "0f56aab0a013adbb2bc4b17636ce4312810f45468101dd6625520abffd02a2fa", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "0f56aab0a013adbb2bc4b17636ce4312810f45468101dd6625520abffd02a2fa", kill_on_drop: false }` [INFO] [stdout] 0f56aab0a013adbb2bc4b17636ce4312810f45468101dd6625520abffd02a2fa