[INFO] cloning repository https://github.com/guoxingyun/orderBook-rs [INFO] running `"git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/guoxingyun/orderBook-rs" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fguoxingyun%2ForderBook-rs"` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fguoxingyun%2ForderBook-rs'... [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] aea211ae13ad5f13b2f29e9425a5a62f905cb1bf [INFO] checking guoxingyun/orderBook-rs against master#6dee5f1126dfd5c9314ee5ae9d9eb010e35ef257 for pr-70872 [INFO] running `"git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fguoxingyun%2ForderBook-rs" "/workspace/builds/worker-4/source"` [INFO] [stderr] Cloning into '/workspace/builds/worker-4/source'... [INFO] [stderr] done. [INFO] validating manifest of git repo https://github.com/guoxingyun/orderBook-rs on toolchain 6dee5f1126dfd5c9314ee5ae9d9eb010e35ef257 [INFO] running `"/workspace/cargo-home/bin/cargo" "+6dee5f1126dfd5c9314ee5ae9d9eb010e35ef257" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started tweaking git repo https://github.com/guoxingyun/orderBook-rs [INFO] finished tweaking git repo https://github.com/guoxingyun/orderBook-rs [INFO] tweaked toml for git repo https://github.com/guoxingyun/orderBook-rs written to /workspace/builds/worker-4/source/Cargo.toml [INFO] crate git repo https://github.com/guoxingyun/orderBook-rs already has a lockfile, it will not be regenerated [INFO] running `"/workspace/cargo-home/bin/cargo" "+6dee5f1126dfd5c9314ee5ae9d9eb010e35ef257" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] [stderr] warning: unused manifest key: rust [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] running `"docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4/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" "MAP_USER_ID=0" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--network" "none" "rustops/crates-build-env" "/opt/rustwide/cargo-home/bin/cargo" "+6dee5f1126dfd5c9314ee5ae9d9eb010e35ef257" "check" "--frozen" "--all" "--all-targets"` [INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap. [INFO] [stdout] daf08ef132ccfc5f0150f1857d1af6e6b3f642303a5e64ffe3843cd11e5bb928 [INFO] running `"docker" "start" "-a" "daf08ef132ccfc5f0150f1857d1af6e6b3f642303a5e64ffe3843cd11e5bb928"` [INFO] [stderr] warning: unused manifest key: rust [INFO] [stderr] Compiling semver-parser v0.7.0 [INFO] [stderr] Compiling unicode-xid v0.1.0 [INFO] [stderr] Checking siphasher v0.3.2 [INFO] [stderr] Checking rent_to_own v0.1.0 [INFO] [stderr] Checking md5 v0.6.1 [INFO] [stderr] Checking ref_slice v1.2.0 [INFO] [stderr] Compiling backtrace-sys v0.1.34 [INFO] [stderr] Checking tokio-service v0.1.0 [INFO] [stderr] Checking relay v0.1.1 [INFO] [stderr] Checking snap v0.2.5 [INFO] [stderr] Checking want v0.0.4 [INFO] [stderr] Checking stringprep v0.1.2 [INFO] [stderr] Compiling syn v1.0.17 [INFO] [stderr] Checking regex v1.3.5 [INFO] [stderr] Checking slog-async v2.5.0 [INFO] [stderr] Checking chrono v0.4.11 [INFO] [stderr] Checking openssl v0.10.28 [INFO] [stderr] Compiling proc-macro2 v0.4.30 [INFO] [stderr] Checking phf_shared v0.8.0 [INFO] [stderr] Compiling semver v0.9.0 [INFO] [stderr] Checking postgres-protocol v0.5.1 [INFO] [stderr] Checking postgres-protocol v0.4.1 [INFO] [stderr] Checking phf v0.8.0 [INFO] [stderr] Compiling rustc_version v0.2.3 [INFO] [stderr] Compiling quote v0.6.13 [INFO] [stderr] Checking backtrace v0.3.45 [INFO] [stderr] Checking slog-term v2.5.0 [INFO] [stderr] Compiling syn v0.15.44 [INFO] [stderr] Compiling parking_lot_core v0.6.2 [INFO] [stderr] Compiling parking_lot v0.9.0 [INFO] [stderr] Compiling parking_lot_core v0.5.0 [INFO] [stderr] Compiling hyper v0.12.35 [INFO] [stderr] Compiling parking_lot v0.8.0 [INFO] [stderr] Checking postgres-types v0.1.1 [INFO] [stderr] Checking globset v0.4.5 [INFO] [stderr] Checking env_logger v0.7.1 [INFO] [stderr] Checking error-chain v0.12.2 [INFO] [stderr] Checking error-chain v0.10.0 [INFO] [stderr] Checking tokio-reactor v0.1.12 [INFO] [stderr] Checking tokio-uds v0.2.6 [INFO] [stderr] Checking tokio-tcp v0.1.4 [INFO] [stderr] Checking tokio-udp v0.1.6 [INFO] [stderr] Checking kafka v0.8.0 [INFO] [stderr] Checking tokio v0.1.22 [INFO] [stderr] Checking tokio-core v0.1.17 [INFO] [stderr] Checking tokio-proto v0.1.1 [INFO] [stderr] Compiling darling_core v0.8.6 [INFO] [stderr] Checking hyper v0.11.27 [INFO] [stderr] Compiling serde_derive v1.0.105 [INFO] [stderr] Compiling futures-macro v0.3.4 [INFO] [stderr] Compiling tokio-macros v0.2.5 [INFO] [stderr] Compiling async-trait v0.1.26 [INFO] [stderr] Checking tokio v0.2.13 [INFO] [stderr] Compiling darling_macro v0.8.6 [INFO] [stderr] Checking futures-util v0.3.4 [INFO] [stderr] Compiling darling v0.8.6 [INFO] [stderr] Compiling derive_state_machine_future v0.2.0 [INFO] [stderr] Checking futures-executor v0.3.4 [INFO] [stderr] Checking futures v0.3.4 [INFO] [stderr] Checking tokio-util v0.3.1 [INFO] [stderr] Checking tokio-postgres v0.5.3 [INFO] [stderr] Checking serde v1.0.105 [INFO] [stderr] Checking state_machine_future v0.2.0 [INFO] [stderr] Checking postgres v0.17.2 [INFO] [stderr] Checking serde_json v1.0.48 [INFO] [stderr] Checking rust_decimal v1.4.0 [INFO] [stderr] Checking jsonrpc-core v8.0.1 [INFO] [stderr] Checking jsonrpc-core v12.2.0 [INFO] [stderr] Checking tokio-postgres v0.4.0-rc.3 [INFO] [stderr] Checking jsonrpc-client-core v0.5.0 [INFO] [stderr] Checking jsonrpc-server-utils v12.2.0 [INFO] [stderr] Checking jsonrpc-client-http v0.5.0 [INFO] [stderr] Checking jsonrpc-http-server v12.2.0 [INFO] [stderr] Checking postgres v0.16.0-rc.2 [INFO] [stderr] Checking orderBook-rs v0.1.0 (/opt/rustwide/workdir) [INFO] [stderr] warning: unused import: `std::cmp::Ord` [INFO] [stderr] --> src/consume/bridge/mod.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use std::cmp::Ord; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::collections::BTreeMap` [INFO] [stderr] --> src/consume/bridge/mod.rs:2:5 [INFO] [stderr] | [INFO] [stderr] 2 | use std::collections::BTreeMap; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `jsonrpc_http_server::jsonrpc_core::*` [INFO] [stderr] --> src/consume/bridge/mod.rs:4:5 [INFO] [stderr] | [INFO] [stderr] 4 | use jsonrpc_http_server::jsonrpc_core::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `jsonrpc_http_server::*` [INFO] [stderr] --> src/consume/bridge/mod.rs:5:5 [INFO] [stderr] | [INFO] [stderr] 5 | use jsonrpc_http_server::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `serde::Deserialize` [INFO] [stderr] --> src/consume/bridge/mod.rs:6:5 [INFO] [stderr] | [INFO] [stderr] 6 | use serde::Deserialize; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::env` [INFO] [stderr] --> src/consume/bridge/mod.rs:7:5 [INFO] [stderr] | [INFO] [stderr] 7 | use std::env; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::ops::Mul` [INFO] [stderr] --> src/consume/bridge/mod.rs:8:5 [INFO] [stderr] | [INFO] [stderr] 8 | use std::ops::Mul; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::any::Any` [INFO] [stderr] --> src/consume/bridge/mod.rs:9:5 [INFO] [stderr] | [INFO] [stderr] 9 | use std::any::Any; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `kafka::error::Error as KafkaError` [INFO] [stderr] --> src/consume/bridge/mod.rs:10:5 [INFO] [stderr] | [INFO] [stderr] 10 | use kafka::error::Error as KafkaError; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::cmp::Ord` [INFO] [stderr] --> src/consume/mod.rs:5:5 [INFO] [stderr] | [INFO] [stderr] 5 | use std::cmp::Ord; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::collections::BTreeMap` [INFO] [stderr] --> src/consume/mod.rs:6:5 [INFO] [stderr] | [INFO] [stderr] 6 | use std::collections::BTreeMap; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `jsonrpc_http_server::jsonrpc_core::*` [INFO] [stderr] --> src/consume/mod.rs:8:5 [INFO] [stderr] | [INFO] [stderr] 8 | use jsonrpc_http_server::jsonrpc_core::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `jsonrpc_http_server::*` [INFO] [stderr] --> src/consume/mod.rs:9:5 [INFO] [stderr] | [INFO] [stderr] 9 | use jsonrpc_http_server::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `super::models::*` [INFO] [stderr] --> src/consume/mod.rs:12:5 [INFO] [stderr] | [INFO] [stderr] 12 | use super::models::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::env` [INFO] [stderr] --> src/consume/mod.rs:14:5 [INFO] [stderr] | [INFO] [stderr] 14 | use std::env; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::ops::Mul` [INFO] [stderr] --> src/consume/mod.rs:15:5 [INFO] [stderr] | [INFO] [stderr] 15 | use std::ops::Mul; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::any::Any` [INFO] [stderr] --> src/consume/mod.rs:16:5 [INFO] [stderr] | [INFO] [stderr] 16 | use std::any::Any; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Consumer`, `FetchOffset`, `GroupOffsetStorage` [INFO] [stderr] --> src/consume/mod.rs:17:23 [INFO] [stderr] | [INFO] [stderr] 17 | use kafka::consumer::{Consumer, FetchOffset, GroupOffsetStorage}; [INFO] [stderr] | ^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `kafka::error::Error as KafkaError` [INFO] [stderr] --> src/consume/mod.rs:18:5 [INFO] [stderr] | [INFO] [stderr] 18 | use kafka::error::Error as KafkaError; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type `orderFilter` should have an upper camel case name [INFO] [stderr] --> src/consume/mod.rs:31:8 [INFO] [stderr] | [INFO] [stderr] 31 | struct orderFilter { [INFO] [stderr] | ^^^^^^^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `OrderFilter` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(non_camel_case_types)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Client`, `NoTls`, `config::Config`, `error::Error`, `row::SimpleQueryRow` [INFO] [stderr] --> src/models/mod.rs:1:16 [INFO] [stderr] | [INFO] [stderr] 1 | use postgres::{config::Config, error::Error, row::SimpleQueryRow, Client, NoTls}; [INFO] [stderr] | ^^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `rustc_serialize::json` [INFO] [stderr] --> src/models/mod.rs:5:5 [INFO] [stderr] | [INFO] [stderr] 5 | use rustc_serialize::json; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type `tokenInfo` should have an upper camel case name [INFO] [stderr] --> src/models/mod.rs:11:12 [INFO] [stderr] | [INFO] [stderr] 11 | pub struct tokenInfo { [INFO] [stderr] | ^^^^^^^^^ help: convert the identifier to upper camel case: `TokenInfo` [INFO] [stderr] [INFO] [stderr] warning: type `tradeInfo` should have an upper camel case name [INFO] [stderr] --> src/models/mod.rs:19:12 [INFO] [stderr] | [INFO] [stderr] 19 | pub struct tradeInfo { [INFO] [stderr] | ^^^^^^^^^ help: convert the identifier to upper camel case: `TradeInfo` [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::sync::Mutex` [INFO] [stderr] --> src/models/mod.rs:49:5 [INFO] [stderr] | [INFO] [stderr] 49 | use std::sync::Mutex; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::ptr::null` [INFO] [stderr] --> src/models/mod.rs:50:5 [INFO] [stderr] | [INFO] [stderr] 50 | use std::ptr::null; [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::fmt::Write` [INFO] [stderr] --> src/main.rs:7:5 [INFO] [stderr] | [INFO] [stderr] 7 | use std::fmt::Write; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::io::BufReader` [INFO] [stderr] --> src/main.rs:8:5 [INFO] [stderr] | [INFO] [stderr] 8 | use std::io::BufReader; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::fs::OpenOptions` [INFO] [stderr] --> src/main.rs:15:5 [INFO] [stderr] | [INFO] [stderr] 15 | use std::fs::OpenOptions; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::time::Instant` [INFO] [stderr] --> src/main.rs:21:5 [INFO] [stderr] | [INFO] [stderr] 21 | use std::time::Instant; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::ptr::null` [INFO] [stderr] --> src/main.rs:23:5 [INFO] [stderr] | [INFO] [stderr] 23 | use std::ptr::null; [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::cmp::Ord` [INFO] [stderr] --> src/consume/bridge/mod.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use std::cmp::Ord; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::collections::BTreeMap` [INFO] [stderr] --> src/consume/bridge/mod.rs:2:5 [INFO] [stderr] | [INFO] [stderr] 2 | use std::collections::BTreeMap; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `jsonrpc_http_server::jsonrpc_core::*` [INFO] [stderr] --> src/consume/bridge/mod.rs:4:5 [INFO] [stderr] | [INFO] [stderr] 4 | use jsonrpc_http_server::jsonrpc_core::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `jsonrpc_http_server::*` [INFO] [stderr] --> src/consume/bridge/mod.rs:5:5 [INFO] [stderr] | [INFO] [stderr] 5 | use jsonrpc_http_server::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `serde::Deserialize` [INFO] [stderr] --> src/consume/bridge/mod.rs:6:5 [INFO] [stderr] | [INFO] [stderr] 6 | use serde::Deserialize; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::env` [INFO] [stderr] --> src/consume/bridge/mod.rs:7:5 [INFO] [stderr] | [INFO] [stderr] 7 | use std::env; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::ops::Mul` [INFO] [stderr] --> src/consume/bridge/mod.rs:8:5 [INFO] [stderr] | [INFO] [stderr] 8 | use std::ops::Mul; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::any::Any` [INFO] [stderr] --> src/consume/bridge/mod.rs:9:5 [INFO] [stderr] | [INFO] [stderr] 9 | use std::any::Any; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `kafka::error::Error as KafkaError` [INFO] [stderr] --> src/consume/bridge/mod.rs:10:5 [INFO] [stderr] | [INFO] [stderr] 10 | use kafka::error::Error as KafkaError; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::cmp::Ord` [INFO] [stderr] --> src/consume/mod.rs:5:5 [INFO] [stderr] | [INFO] [stderr] 5 | use std::cmp::Ord; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::collections::BTreeMap` [INFO] [stderr] --> src/consume/mod.rs:6:5 [INFO] [stderr] | [INFO] [stderr] 6 | use std::collections::BTreeMap; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `jsonrpc_http_server::jsonrpc_core::*` [INFO] [stderr] --> src/consume/mod.rs:8:5 [INFO] [stderr] | [INFO] [stderr] 8 | use jsonrpc_http_server::jsonrpc_core::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `jsonrpc_http_server::*` [INFO] [stderr] --> src/consume/mod.rs:9:5 [INFO] [stderr] | [INFO] [stderr] 9 | use jsonrpc_http_server::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `super::models::*` [INFO] [stderr] --> src/consume/mod.rs:12:5 [INFO] [stderr] | [INFO] [stderr] 12 | use super::models::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::env` [INFO] [stderr] --> src/consume/mod.rs:14:5 [INFO] [stderr] | [INFO] [stderr] 14 | use std::env; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::ops::Mul` [INFO] [stderr] --> src/consume/mod.rs:15:5 [INFO] [stderr] | [INFO] [stderr] 15 | use std::ops::Mul; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::any::Any` [INFO] [stderr] --> src/consume/mod.rs:16:5 [INFO] [stderr] | [INFO] [stderr] 16 | use std::any::Any; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Consumer`, `FetchOffset`, `GroupOffsetStorage` [INFO] [stderr] --> src/consume/mod.rs:17:23 [INFO] [stderr] | [INFO] [stderr] 17 | use kafka::consumer::{Consumer, FetchOffset, GroupOffsetStorage}; [INFO] [stderr] | ^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `kafka::error::Error as KafkaError` [INFO] [stderr] --> src/consume/mod.rs:18:5 [INFO] [stderr] | [INFO] [stderr] 18 | use kafka::error::Error as KafkaError; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type `orderFilter` should have an upper camel case name [INFO] [stderr] --> src/consume/mod.rs:31:8 [INFO] [stderr] | [INFO] [stderr] 31 | struct orderFilter { [INFO] [stderr] | ^^^^^^^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `OrderFilter` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(non_camel_case_types)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Client`, `NoTls`, `config::Config`, `error::Error`, `row::SimpleQueryRow` [INFO] [stderr] --> src/models/mod.rs:1:16 [INFO] [stderr] | [INFO] [stderr] 1 | use postgres::{config::Config, error::Error, row::SimpleQueryRow, Client, NoTls}; [INFO] [stderr] | ^^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `rustc_serialize::json` [INFO] [stderr] --> src/models/mod.rs:5:5 [INFO] [stderr] | [INFO] [stderr] 5 | use rustc_serialize::json; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type `tokenInfo` should have an upper camel case name [INFO] [stderr] --> src/models/mod.rs:11:12 [INFO] [stderr] | [INFO] [stderr] 11 | pub struct tokenInfo { [INFO] [stderr] | ^^^^^^^^^ help: convert the identifier to upper camel case: `TokenInfo` [INFO] [stderr] [INFO] [stderr] warning: type `tradeInfo` should have an upper camel case name [INFO] [stderr] --> src/models/mod.rs:19:12 [INFO] [stderr] | [INFO] [stderr] 19 | pub struct tradeInfo { [INFO] [stderr] | ^^^^^^^^^ help: convert the identifier to upper camel case: `TradeInfo` [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::sync::Mutex` [INFO] [stderr] --> src/models/mod.rs:49:5 [INFO] [stderr] | [INFO] [stderr] 49 | use std::sync::Mutex; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::ptr::null` [INFO] [stderr] --> src/models/mod.rs:50:5 [INFO] [stderr] | [INFO] [stderr] 50 | use std::ptr::null; [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::fmt::Write` [INFO] [stderr] --> src/main.rs:7:5 [INFO] [stderr] | [INFO] [stderr] 7 | use std::fmt::Write; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::io::BufReader` [INFO] [stderr] --> src/main.rs:8:5 [INFO] [stderr] | [INFO] [stderr] 8 | use std::io::BufReader; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::fs::OpenOptions` [INFO] [stderr] --> src/main.rs:15:5 [INFO] [stderr] | [INFO] [stderr] 15 | use std::fs::OpenOptions; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::time::Instant` [INFO] [stderr] --> src/main.rs:21:5 [INFO] [stderr] | [INFO] [stderr] 21 | use std::time::Instant; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::ptr::null` [INFO] [stderr] --> src/main.rs:23:5 [INFO] [stderr] | [INFO] [stderr] 23 | use std::ptr::null; [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused variable: `message` [INFO] [stderr] --> src/consume/mod.rs:52:25 [INFO] [stderr] | [INFO] [stderr] 52 | let mut message = String::new(); [INFO] [stderr] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_message` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_variables)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `message` [INFO] [stderr] --> src/consume/mod.rs:77:25 [INFO] [stderr] | [INFO] [stderr] 77 | let mut message = String::new(); [INFO] [stderr] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_message` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:74:9 [INFO] [stderr] | [INFO] [stderr] 74 | let mut client; [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_mut)]` on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/consume/mod.rs:52:21 [INFO] [stderr] | [INFO] [stderr] 52 | let mut message = String::new(); [INFO] [stderr] | ----^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/consume/mod.rs:77:21 [INFO] [stderr] | [INFO] [stderr] 77 | let mut message = String::new(); [INFO] [stderr] | ----^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `message` [INFO] [stderr] --> src/consume/mod.rs:52:25 [INFO] [stderr] | [INFO] [stderr] 52 | let mut message = String::new(); [INFO] [stderr] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_message` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_variables)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `message` [INFO] [stderr] --> src/consume/mod.rs:77:25 [INFO] [stderr] | [INFO] [stderr] 77 | let mut message = String::new(); [INFO] [stderr] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_message` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:74:9 [INFO] [stderr] | [INFO] [stderr] 74 | let mut client; [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_mut)]` on by default [INFO] [stderr] [INFO] [stderr] warning: function is never used: `get_change_rate` [INFO] [stderr] --> src/models/mod.rs:53:8 [INFO] [stderr] | [INFO] [stderr] 53 | pub fn get_change_rate(marketID: &str) -> f64 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(dead_code)]` on by default [INFO] [stderr] [INFO] [stderr] warning: function is never used: `get_current_price_marketID` [INFO] [stderr] --> src/models/mod.rs:77:8 [INFO] [stderr] | [INFO] [stderr] 77 | pub fn get_current_price_marketID(id: &str) -> f64 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `list_marketID_volume` [INFO] [stderr] --> src/models/mod.rs:96:8 [INFO] [stderr] | [INFO] [stderr] 96 | pub fn list_marketID_volume() -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `get_marketID_volume` [INFO] [stderr] --> src/models/mod.rs:119:8 [INFO] [stderr] | [INFO] [stderr] 119 | pub fn get_marketID_volume(id: &str) -> f64 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `list_markets` [INFO] [stderr] --> src/models/mod.rs:138:8 [INFO] [stderr] | [INFO] [stderr] 138 | pub fn list_markets() -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `get_active_address_num` [INFO] [stderr] --> src/models/mod.rs:164:8 [INFO] [stderr] | [INFO] [stderr] 164 | pub fn get_active_address_num() -> i32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `get_trades_num` [INFO] [stderr] --> src/models/mod.rs:182:8 [INFO] [stderr] | [INFO] [stderr] 182 | pub fn get_trades_num() -> i32 { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `get_new_address_num` [INFO] [stderr] --> src/models/mod.rs:200:8 [INFO] [stderr] | [INFO] [stderr] 200 | pub fn get_new_address_num() -> i32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/consume/mod.rs:52:21 [INFO] [stderr] | [INFO] [stderr] 52 | let mut message = String::new(); [INFO] [stderr] | ----^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/consume/mod.rs:77:21 [INFO] [stderr] | [INFO] [stderr] 77 | let mut message = String::new(); [INFO] [stderr] | ----^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: unused attribute [INFO] [stderr] --> src/main.rs:12:1 [INFO] [stderr] | [INFO] [stderr] 12 | #[macro_use] [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_attributes)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused attribute [INFO] [stderr] --> src/main.rs:12:1 [INFO] [stderr] | [INFO] [stderr] 12 | #[macro_use] [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: crate `orderBook` should have a snake case name [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(non_snake_case)]` on by default [INFO] [stderr] = help: convert the identifier to snake case: `order_book` [INFO] [stderr] [INFO] [stderr] warning: function `restartDB` should have a snake case name [INFO] [stderr] --> src/main.rs:43:8 [INFO] [stderr] | [INFO] [stderr] 43 | pub fn restartDB() -> bool { [INFO] [stderr] | ^^^^^^^^^ help: convert the identifier to snake case: `restart_db` [INFO] [stderr] [INFO] [stderr] warning: function `connetDB` should have a snake case name [INFO] [stderr] --> src/main.rs:73:4 [INFO] [stderr] | [INFO] [stderr] 73 | fn connetDB() -> Option { [INFO] [stderr] | ^^^^^^^^ help: convert the identifier to snake case: `connet_db` [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/consume/mod.rs:63:9 [INFO] [stderr] | [INFO] [stderr] 63 | crate::ORDER_STREAM.lock().unwrap().commit_consumed(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_must_use)]` on by default [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/consume/mod.rs:89:9 [INFO] [stderr] | [INFO] [stderr] 89 | crate::BRIDGE_STREAM.lock().unwrap().commit_consumed(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: structure field `marketID` should have a snake case name [INFO] [stderr] --> src/models/mod.rs:45:9 [INFO] [stderr] | [INFO] [stderr] 45 | pub marketID: String, [INFO] [stderr] | ^^^^^^^^ help: convert the identifier to snake case: `market_id` [INFO] [stderr] [INFO] [stderr] warning: variable `marketID` should have a snake case name [INFO] [stderr] --> src/models/mod.rs:53:24 [INFO] [stderr] | [INFO] [stderr] 53 | pub fn get_change_rate(marketID: &str) -> f64 { [INFO] [stderr] | ^^^^^^^^ help: convert the identifier to snake case: `market_id` [INFO] [stderr] [INFO] [stderr] warning: function `get_current_price_marketID` should have a snake case name [INFO] [stderr] --> src/models/mod.rs:77:8 [INFO] [stderr] | [INFO] [stderr] 77 | pub fn get_current_price_marketID(id: &str) -> f64 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `get_current_price_market_id` [INFO] [stderr] [INFO] [stderr] warning: function `list_marketID_volume` should have a snake case name [INFO] [stderr] --> src/models/mod.rs:96:8 [INFO] [stderr] | [INFO] [stderr] 96 | pub fn list_marketID_volume() -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `list_market_id_volume` [INFO] [stderr] [INFO] [stderr] warning: function `get_marketID_volume` should have a snake case name [INFO] [stderr] --> src/models/mod.rs:119:8 [INFO] [stderr] | [INFO] [stderr] 119 | pub fn get_marketID_volume(id: &str) -> f64 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `get_market_id_volume` [INFO] [stderr] [INFO] [stderr] warning: function is never used: `get_change_rate` [INFO] [stderr] --> src/models/mod.rs:53:8 [INFO] [stderr] | [INFO] [stderr] 53 | pub fn get_change_rate(marketID: &str) -> f64 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(dead_code)]` on by default [INFO] [stderr] [INFO] [stderr] warning: function is never used: `get_current_price_marketID` [INFO] [stderr] --> src/models/mod.rs:77:8 [INFO] [stderr] | [INFO] [stderr] 77 | pub fn get_current_price_marketID(id: &str) -> f64 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `list_marketID_volume` [INFO] [stderr] --> src/models/mod.rs:96:8 [INFO] [stderr] | [INFO] [stderr] 96 | pub fn list_marketID_volume() -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `get_marketID_volume` [INFO] [stderr] --> src/models/mod.rs:119:8 [INFO] [stderr] | [INFO] [stderr] 119 | pub fn get_marketID_volume(id: &str) -> f64 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `list_markets` [INFO] [stderr] --> src/models/mod.rs:138:8 [INFO] [stderr] | [INFO] [stderr] 138 | pub fn list_markets() -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `get_active_address_num` [INFO] [stderr] --> src/models/mod.rs:164:8 [INFO] [stderr] | [INFO] [stderr] 164 | pub fn get_active_address_num() -> i32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `get_trades_num` [INFO] [stderr] --> src/models/mod.rs:182:8 [INFO] [stderr] | [INFO] [stderr] 182 | pub fn get_trades_num() -> i32 { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `get_new_address_num` [INFO] [stderr] --> src/models/mod.rs:200:8 [INFO] [stderr] | [INFO] [stderr] 200 | pub fn get_new_address_num() -> i32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused attribute [INFO] [stderr] --> src/main.rs:12:1 [INFO] [stderr] | [INFO] [stderr] 12 | #[macro_use] [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_attributes)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused attribute [INFO] [stderr] --> src/main.rs:12:1 [INFO] [stderr] | [INFO] [stderr] 12 | #[macro_use] [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: crate `orderBook` should have a snake case name [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(non_snake_case)]` on by default [INFO] [stderr] = help: convert the identifier to snake case: `order_book` [INFO] [stderr] [INFO] [stderr] warning: function `restartDB` should have a snake case name [INFO] [stderr] --> src/main.rs:43:8 [INFO] [stderr] | [INFO] [stderr] 43 | pub fn restartDB() -> bool { [INFO] [stderr] | ^^^^^^^^^ help: convert the identifier to snake case: `restart_db` [INFO] [stderr] [INFO] [stderr] warning: function `connetDB` should have a snake case name [INFO] [stderr] --> src/main.rs:73:4 [INFO] [stderr] | [INFO] [stderr] 73 | fn connetDB() -> Option { [INFO] [stderr] | ^^^^^^^^ help: convert the identifier to snake case: `connet_db` [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/consume/mod.rs:63:9 [INFO] [stderr] | [INFO] [stderr] 63 | crate::ORDER_STREAM.lock().unwrap().commit_consumed(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_must_use)]` on by default [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/consume/mod.rs:89:9 [INFO] [stderr] | [INFO] [stderr] 89 | crate::BRIDGE_STREAM.lock().unwrap().commit_consumed(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: structure field `marketID` should have a snake case name [INFO] [stderr] --> src/models/mod.rs:45:9 [INFO] [stderr] | [INFO] [stderr] 45 | pub marketID: String, [INFO] [stderr] | ^^^^^^^^ help: convert the identifier to snake case: `market_id` [INFO] [stderr] [INFO] [stderr] warning: variable `marketID` should have a snake case name [INFO] [stderr] --> src/models/mod.rs:53:24 [INFO] [stderr] | [INFO] [stderr] 53 | pub fn get_change_rate(marketID: &str) -> f64 { [INFO] [stderr] | ^^^^^^^^ help: convert the identifier to snake case: `market_id` [INFO] [stderr] [INFO] [stderr] warning: function `get_current_price_marketID` should have a snake case name [INFO] [stderr] --> src/models/mod.rs:77:8 [INFO] [stderr] | [INFO] [stderr] 77 | pub fn get_current_price_marketID(id: &str) -> f64 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `get_current_price_market_id` [INFO] [stderr] [INFO] [stderr] warning: function `list_marketID_volume` should have a snake case name [INFO] [stderr] --> src/models/mod.rs:96:8 [INFO] [stderr] | [INFO] [stderr] 96 | pub fn list_marketID_volume() -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `list_market_id_volume` [INFO] [stderr] [INFO] [stderr] warning: function `get_marketID_volume` should have a snake case name [INFO] [stderr] --> src/models/mod.rs:119:8 [INFO] [stderr] | [INFO] [stderr] 119 | pub fn get_marketID_volume(id: &str) -> f64 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `get_market_id_volume` [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 2m 00s [INFO] running `"docker" "inspect" "daf08ef132ccfc5f0150f1857d1af6e6b3f642303a5e64ffe3843cd11e5bb928"` [INFO] running `"docker" "rm" "-f" "daf08ef132ccfc5f0150f1857d1af6e6b3f642303a5e64ffe3843cd11e5bb928"` [INFO] [stdout] daf08ef132ccfc5f0150f1857d1af6e6b3f642303a5e64ffe3843cd11e5bb928