[INFO] cloning repository https://github.com/hikaru4gz/nes
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/hikaru4gz/nes" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fhikaru4gz%2Fnes", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fhikaru4gz%2Fnes'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 1195f5f654d4e36426f9b638de24e13c6bc24eeb
[INFO] checking hikaru4gz/nes/1195f5f654d4e36426f9b638de24e13c6bc24eeb against 018018e881e2db0956f229dbb543e21f058d1ce7 for pr-162597
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fhikaru4gz%2Fnes" "/workspace/builds/worker-5-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/hikaru4gz/nes
[INFO] finished tweaking git repo https://github.com/hikaru4gz/nes
[INFO] tweaked toml for git repo https://github.com/hikaru4gz/nes written to /workspace/builds/worker-5-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/hikaru4gz/nes on toolchain 018018e881e2db0956f229dbb543e21f058d1ce7
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+018018e881e2db0956f229dbb543e21f058d1ce7" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/hikaru4gz/nes 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" "+018018e881e2db0956f229dbb543e21f058d1ce7" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded sdl2 v0.36.0
[INFO] [stderr]   Downloaded sdl2-sys v0.36.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:8683fc1fc2eb5c9ac98e0d076ab094b2ffac7f99da555d2b6a2e27f346de2ec7" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] da74b8a5e16836d0ab9f4dd37f1627a4171cdee79c07c3015ffcfc2bdf6abf3d
[INFO] running `Command { std: "docker" "start" "da74b8a5e16836d0ab9f4dd37f1627a4171cdee79c07c3015ffcfc2bdf6abf3d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "da74b8a5e16836d0ab9f4dd37f1627a4171cdee79c07c3015ffcfc2bdf6abf3d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "da74b8a5e16836d0ab9f4dd37f1627a4171cdee79c07c3015ffcfc2bdf6abf3d" "/opt/rustwide/cargo-home/bin/cargo" "+018018e881e2db0956f229dbb543e21f058d1ce7" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "da74b8a5e16836d0ab9f4dd37f1627a4171cdee79c07c3015ffcfc2bdf6abf3d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-w" "/opt/rustwide/workdir" "--user" "0:0" "da74b8a5e16836d0ab9f4dd37f1627a4171cdee79c07c3015ffcfc2bdf6abf3d" "/opt/rustwide/cargo-home/bin/cargo" "+018018e881e2db0956f229dbb543e21f058d1ce7" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling cfg-if v1.0.1
[INFO] [stderr]    Compiling version-compare v0.1.1
[INFO] [stderr]    Compiling sdl2 v0.36.0
[INFO] [stderr]    Compiling getrandom v0.1.16
[INFO] [stderr]    Compiling sdl2-sys v0.36.0
[INFO] [stderr]     Checking rand_core v0.5.1
[INFO] [stderr]     Checking rand_chacha v0.2.2
[INFO] [stderr]     Checking rand v0.7.3
[INFO] [stderr]     Checking nes v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `crate::rom::Rom`
[INFO] [stdout]  --> src/cpu.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::rom::Rom;
[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 imports: `cpu` and `rom`
[INFO] [stdout]  --> src/cpu.rs:2:13
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::{cpu, opcodes, rom};
[INFO] [stdout]   |             ^^^           ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt::format`
[INFO] [stdout]  --> src/cpu.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::fmt::format;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::ops::Add`
[INFO] [stdout]  --> src/cpu.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::ops::Add;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `num::NonZero`
[INFO] [stdout]  --> src/cpu.rs:6:33
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::{collections::HashMap, num::NonZero};
[INFO] [stdout]   |                                 ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `print`
[INFO] [stdout]  --> src/bus.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{print, println};
[INFO] [stdout]   |           ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `FOUR_SCREEN` should have an upper camel case name
[INFO] [stdout]  --> src/rom.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 |     FOUR_SCREEN,
[INFO] [stdout]   |     ^^^^^^^^^^^ help: convert the identifier to upper camel case: `FourScreen`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(non_camel_case_types)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ops::Add` and `task::ready`
[INFO] [stdout]  --> src/ppu.rs:2:11
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::{ops::Add, println, task::ready};
[INFO] [stdout]   |           ^^^^^^^^           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `lazy_static::lazy_static`
[INFO] [stdout]   --> src/main.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use lazy_static::lazy_static;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::Rng`
[INFO] [stdout]   --> src/main.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use rand::Rng;
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::cartridge::test::test_rom`
[INFO] [stdout]   --> src/main.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | use crate::cartridge::test::test_rom;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::cartridge::test::alter_ego_rom`
[INFO] [stdout]   --> src/main.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | use crate::cartridge::test::alter_ego_rom;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fs`
[INFO] [stdout]   --> src/main.rs:28:5
[INFO] [stdout]    |
[INFO] [stdout] 28 | use std::fs;
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]   --> src/main.rs:29:5
[INFO] [stdout]    |
[INFO] [stdout] 29 | use std::time::Duration;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fs::File`
[INFO] [stdout]   --> src/main.rs:31:5
[INFO] [stdout]    |
[INFO] [stdout] 31 | use std::fs::File;
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::Read`
[INFO] [stdout]   --> src/main.rs:32:5
[INFO] [stdout]    |
[INFO] [stdout] 32 | use std::io::Read;
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::cpu::trace`
[INFO] [stdout]   --> src/main.rs:33:5
[INFO] [stdout]    |
[INFO] [stdout] 33 | use crate::cpu::trace;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `#[macro_use]` import
[INFO] [stdout]   --> src/main.rs:35:1
[INFO] [stdout]    |
[INFO] [stdout] 35 | #[macro_use]
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::rom::Rom`
[INFO] [stdout]  --> src/cpu.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::rom::Rom;
[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 imports: `cpu` and `rom`
[INFO] [stdout]  --> src/cpu.rs:2:13
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::{cpu, opcodes, rom};
[INFO] [stdout]   |             ^^^           ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt::format`
[INFO] [stdout]  --> src/cpu.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::fmt::format;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::ops::Add`
[INFO] [stdout]  --> src/cpu.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::ops::Add;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `num::NonZero`
[INFO] [stdout]  --> src/cpu.rs:6:33
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::{collections::HashMap, num::NonZero};
[INFO] [stdout]   |                                 ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `print`
[INFO] [stdout]  --> src/bus.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{print, println};
[INFO] [stdout]   |           ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `FOUR_SCREEN` should have an upper camel case name
[INFO] [stdout]  --> src/rom.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 |     FOUR_SCREEN,
[INFO] [stdout]   |     ^^^^^^^^^^^ help: convert the identifier to upper camel case: `FourScreen`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(non_camel_case_types)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ops::Add` and `task::ready`
[INFO] [stdout]  --> src/ppu.rs:2:11
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::{ops::Add, println, task::ready};
[INFO] [stdout]   |           ^^^^^^^^           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `lazy_static::lazy_static`
[INFO] [stdout]   --> src/main.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use lazy_static::lazy_static;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::Rng`
[INFO] [stdout]   --> src/main.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use rand::Rng;
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::cartridge::test::test_rom`
[INFO] [stdout]   --> src/main.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | use crate::cartridge::test::test_rom;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::cartridge::test::alter_ego_rom`
[INFO] [stdout]   --> src/main.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | use crate::cartridge::test::alter_ego_rom;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fs`
[INFO] [stdout]   --> src/main.rs:28:5
[INFO] [stdout]    |
[INFO] [stdout] 28 | use std::fs;
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]   --> src/main.rs:29:5
[INFO] [stdout]    |
[INFO] [stdout] 29 | use std::time::Duration;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fs::File`
[INFO] [stdout]   --> src/main.rs:31:5
[INFO] [stdout]    |
[INFO] [stdout] 31 | use std::fs::File;
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::Read`
[INFO] [stdout]   --> src/main.rs:32:5
[INFO] [stdout]    |
[INFO] [stdout] 32 | use std::io::Read;
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::cpu::trace`
[INFO] [stdout]   --> src/main.rs:33:5
[INFO] [stdout]    |
[INFO] [stdout] 33 | use crate::cpu::trace;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `#[macro_use]` import
[INFO] [stdout]   --> src/main.rs:35:1
[INFO] [stdout]    |
[INFO] [stdout] 35 | #[macro_use]
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Mem`
[INFO] [stdout]   --> src/main.rs:27:23
[INFO] [stdout]    |
[INFO] [stdout] 27 | use crate::bus::{Bus, Mem};
[INFO] [stdout]    |                       ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mode`
[INFO] [stdout]    --> src/cpu.rs:680:23
[INFO] [stdout]     |
[INFO] [stdout] 680 |     fn txs(&mut self, mode: &AddressingMode){
[INFO] [stdout]     |                       ^^^^ help: if this is intentional, prefix it with an underscore: `_mode`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mode`
[INFO] [stdout]    --> src/cpu.rs:684:23
[INFO] [stdout]     |
[INFO] [stdout] 684 |     fn tsx(&mut self, mode: &AddressingMode){
[INFO] [stdout]     |                       ^^^^ help: if this is intentional, prefix it with an underscore: `_mode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mode`
[INFO] [stdout]    --> src/cpu.rs:689:23
[INFO] [stdout]     |
[INFO] [stdout] 689 |     fn tya(&mut self, mode: &AddressingMode){
[INFO] [stdout]     |                       ^^^^ help: if this is intentional, prefix it with an underscore: `_mode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mode`
[INFO] [stdout]    --> src/cpu.rs:694:23
[INFO] [stdout]     |
[INFO] [stdout] 694 |     fn tay(&mut self, mode: &AddressingMode){
[INFO] [stdout]     |                       ^^^^ help: if this is intentional, prefix it with an underscore: `_mode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mode`
[INFO] [stdout]    --> src/cpu.rs:699:23
[INFO] [stdout]     |
[INFO] [stdout] 699 |     fn txa(&mut self, mode: &AddressingMode){
[INFO] [stdout]     |                       ^^^^ help: if this is intentional, prefix it with an underscore: `_mode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mode`
[INFO] [stdout]    --> src/cpu.rs:704:23
[INFO] [stdout]     |
[INFO] [stdout] 704 |     fn tax(&mut self, mode: &AddressingMode){
[INFO] [stdout]     |                       ^^^^ help: if this is intentional, prefix it with an underscore: `_mode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mode`
[INFO] [stdout]    --> src/cpu.rs:724:23
[INFO] [stdout]     |
[INFO] [stdout] 724 |     fn rti(&mut self, mode: &AddressingMode){
[INFO] [stdout]     |                       ^^^^ help: if this is intentional, prefix it with an underscore: `_mode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mode`
[INFO] [stdout]    --> src/cpu.rs:728:23
[INFO] [stdout]     |
[INFO] [stdout] 728 |     fn plp(&mut self, mode: &AddressingMode){
[INFO] [stdout]     |                       ^^^^ help: if this is intentional, prefix it with an underscore: `_mode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mode`
[INFO] [stdout]    --> src/cpu.rs:732:23
[INFO] [stdout]     |
[INFO] [stdout] 732 |     fn php(&mut self, mode: &AddressingMode){
[INFO] [stdout]     |                       ^^^^ help: if this is intentional, prefix it with an underscore: `_mode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mode`
[INFO] [stdout]    --> src/cpu.rs:736:23
[INFO] [stdout]     |
[INFO] [stdout] 736 |     fn pla(&mut self, mode: &AddressingMode){
[INFO] [stdout]     |                       ^^^^ help: if this is intentional, prefix it with an underscore: `_mode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mode`
[INFO] [stdout]    --> src/cpu.rs:741:23
[INFO] [stdout]     |
[INFO] [stdout] 741 |     fn pha(&mut self, mode: &AddressingMode){
[INFO] [stdout]     |                       ^^^^ help: if this is intentional, prefix it with an underscore: `_mode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mode`
[INFO] [stdout]    --> src/cpu.rs:745:23
[INFO] [stdout]     |
[INFO] [stdout] 745 |     fn nop(&mut self, mode: &AddressingMode){
[INFO] [stdout]     |                       ^^^^ help: if this is intentional, prefix it with an underscore: `_mode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mode`
[INFO] [stdout]    --> src/cpu.rs:773:23
[INFO] [stdout]     |
[INFO] [stdout] 773 |     fn rts(&mut self, mode: &AddressingMode){
[INFO] [stdout]     |                       ^^^^ help: if this is intentional, prefix it with an underscore: `_mode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mode`
[INFO] [stdout]    --> src/cpu.rs:817:23
[INFO] [stdout]     |
[INFO] [stdout] 817 |     fn iny(&mut self, mode: &AddressingMode){
[INFO] [stdout]     |                       ^^^^ help: if this is intentional, prefix it with an underscore: `_mode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mode`
[INFO] [stdout]    --> src/cpu.rs:822:23
[INFO] [stdout]     |
[INFO] [stdout] 822 |     fn inx(&mut self, mode: &AddressingMode){
[INFO] [stdout]     |                       ^^^^ help: if this is intentional, prefix it with an underscore: `_mode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mode`
[INFO] [stdout]    --> src/cpu.rs:835:23
[INFO] [stdout]     |
[INFO] [stdout] 835 |     fn dey(&mut self, mode: &AddressingMode){
[INFO] [stdout]     |                       ^^^^ help: if this is intentional, prefix it with an underscore: `_mode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mode`
[INFO] [stdout]    --> src/cpu.rs:841:23
[INFO] [stdout]     |
[INFO] [stdout] 841 |     fn dex(&mut self, mode: &AddressingMode){
[INFO] [stdout]     |                       ^^^^ help: if this is intentional, prefix it with an underscore: `_mode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mode`
[INFO] [stdout]    --> src/cpu.rs:880:23
[INFO] [stdout]     |
[INFO] [stdout] 880 |     fn clv(&mut self, mode: &AddressingMode){
[INFO] [stdout]     |                       ^^^^ help: if this is intentional, prefix it with an underscore: `_mode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mode`
[INFO] [stdout]    --> src/cpu.rs:884:23
[INFO] [stdout]     |
[INFO] [stdout] 884 |     fn sei(&mut self, mode: &AddressingMode){
[INFO] [stdout]     |                       ^^^^ help: if this is intentional, prefix it with an underscore: `_mode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mode`
[INFO] [stdout]    --> src/cpu.rs:888:23
[INFO] [stdout]     |
[INFO] [stdout] 888 |     fn cli(&mut self, mode: &AddressingMode){
[INFO] [stdout]     |                       ^^^^ help: if this is intentional, prefix it with an underscore: `_mode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mode`
[INFO] [stdout]    --> src/cpu.rs:892:23
[INFO] [stdout]     |
[INFO] [stdout] 892 |     fn sed(&mut self, mode: &AddressingMode){
[INFO] [stdout]     |                       ^^^^ help: if this is intentional, prefix it with an underscore: `_mode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mode`
[INFO] [stdout]    --> src/cpu.rs:896:23
[INFO] [stdout]     |
[INFO] [stdout] 896 |     fn cld(&mut self, mode: &AddressingMode){
[INFO] [stdout]     |                       ^^^^ help: if this is intentional, prefix it with an underscore: `_mode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mode`
[INFO] [stdout]    --> src/cpu.rs:900:23
[INFO] [stdout]     |
[INFO] [stdout] 900 |     fn clc(&mut self, mode: &AddressingMode){
[INFO] [stdout]     |                       ^^^^ help: if this is intentional, prefix it with an underscore: `_mode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mode`
[INFO] [stdout]    --> src/cpu.rs:904:23
[INFO] [stdout]     |
[INFO] [stdout] 904 |     fn sec(&mut self, mode: &AddressingMode){
[INFO] [stdout]     |                       ^^^^ help: if this is intentional, prefix it with an underscore: `_mode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mode`
[INFO] [stdout]    --> src/cpu.rs:908:23
[INFO] [stdout]     |
[INFO] [stdout] 908 |     fn brk(&mut self, mode: &AddressingMode){
[INFO] [stdout]     |                       ^^^^ help: if this is intentional, prefix it with an underscore: `_mode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Mem`
[INFO] [stdout]   --> src/main.rs:27:23
[INFO] [stdout]    |
[INFO] [stdout] 27 | use crate::bus::{Bus, Mem};
[INFO] [stdout]    |                       ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cpu`
[INFO] [stdout]  --> src/trace.rs:3:18
[INFO] [stdout]   |
[INFO] [stdout] 3 |     pub fn trace(cpu: &CPU) -> String {
[INFO] [stdout]   |                  ^^^ help: if this is intentional, prefix it with an underscore: `_cpu`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `path`
[INFO] [stdout]  --> src/cartridge.rs:5:17
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn load_rom(path: &str) -> Rom {
[INFO] [stdout]   |                 ^^^^ help: if this is intentional, prefix it with an underscore: `_path`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/ppu.rs:75:21
[INFO] [stdout]    |
[INFO] [stdout] 75 |                 let mut palette_addr = ((addr - 0x3f00) % 32) as usize;
[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: `mode`
[INFO] [stdout]    --> src/cpu.rs:680:23
[INFO] [stdout]     |
[INFO] [stdout] 680 |     fn txs(&mut self, mode: &AddressingMode){
[INFO] [stdout]     |                       ^^^^ help: if this is intentional, prefix it with an underscore: `_mode`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mode`
[INFO] [stdout]    --> src/cpu.rs:684:23
[INFO] [stdout]     |
[INFO] [stdout] 684 |     fn tsx(&mut self, mode: &AddressingMode){
[INFO] [stdout]     |                       ^^^^ help: if this is intentional, prefix it with an underscore: `_mode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mode`
[INFO] [stdout]    --> src/cpu.rs:689:23
[INFO] [stdout]     |
[INFO] [stdout] 689 |     fn tya(&mut self, mode: &AddressingMode){
[INFO] [stdout]     |                       ^^^^ help: if this is intentional, prefix it with an underscore: `_mode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mode`
[INFO] [stdout]    --> src/cpu.rs:694:23
[INFO] [stdout]     |
[INFO] [stdout] 694 |     fn tay(&mut self, mode: &AddressingMode){
[INFO] [stdout]     |                       ^^^^ help: if this is intentional, prefix it with an underscore: `_mode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mode`
[INFO] [stdout]    --> src/cpu.rs:699:23
[INFO] [stdout]     |
[INFO] [stdout] 699 |     fn txa(&mut self, mode: &AddressingMode){
[INFO] [stdout]     |                       ^^^^ help: if this is intentional, prefix it with an underscore: `_mode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mode`
[INFO] [stdout]    --> src/cpu.rs:704:23
[INFO] [stdout]     |
[INFO] [stdout] 704 |     fn tax(&mut self, mode: &AddressingMode){
[INFO] [stdout]     |                       ^^^^ help: if this is intentional, prefix it with an underscore: `_mode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mode`
[INFO] [stdout]    --> src/cpu.rs:724:23
[INFO] [stdout]     |
[INFO] [stdout] 724 |     fn rti(&mut self, mode: &AddressingMode){
[INFO] [stdout]     |                       ^^^^ help: if this is intentional, prefix it with an underscore: `_mode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mode`
[INFO] [stdout]    --> src/cpu.rs:728:23
[INFO] [stdout]     |
[INFO] [stdout] 728 |     fn plp(&mut self, mode: &AddressingMode){
[INFO] [stdout]     |                       ^^^^ help: if this is intentional, prefix it with an underscore: `_mode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mode`
[INFO] [stdout]    --> src/cpu.rs:732:23
[INFO] [stdout]     |
[INFO] [stdout] 732 |     fn php(&mut self, mode: &AddressingMode){
[INFO] [stdout]     |                       ^^^^ help: if this is intentional, prefix it with an underscore: `_mode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mode`
[INFO] [stdout]    --> src/cpu.rs:736:23
[INFO] [stdout]     |
[INFO] [stdout] 736 |     fn pla(&mut self, mode: &AddressingMode){
[INFO] [stdout]     |                       ^^^^ help: if this is intentional, prefix it with an underscore: `_mode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mode`
[INFO] [stdout]    --> src/cpu.rs:741:23
[INFO] [stdout]     |
[INFO] [stdout] 741 |     fn pha(&mut self, mode: &AddressingMode){
[INFO] [stdout]     |                       ^^^^ help: if this is intentional, prefix it with an underscore: `_mode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mode`
[INFO] [stdout]    --> src/cpu.rs:745:23
[INFO] [stdout]     |
[INFO] [stdout] 745 |     fn nop(&mut self, mode: &AddressingMode){
[INFO] [stdout]     |                       ^^^^ help: if this is intentional, prefix it with an underscore: `_mode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mode`
[INFO] [stdout]    --> src/cpu.rs:773:23
[INFO] [stdout]     |
[INFO] [stdout] 773 |     fn rts(&mut self, mode: &AddressingMode){
[INFO] [stdout]     |                       ^^^^ help: if this is intentional, prefix it with an underscore: `_mode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mode`
[INFO] [stdout]    --> src/cpu.rs:817:23
[INFO] [stdout]     |
[INFO] [stdout] 817 |     fn iny(&mut self, mode: &AddressingMode){
[INFO] [stdout]     |                       ^^^^ help: if this is intentional, prefix it with an underscore: `_mode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mode`
[INFO] [stdout]    --> src/cpu.rs:822:23
[INFO] [stdout]     |
[INFO] [stdout] 822 |     fn inx(&mut self, mode: &AddressingMode){
[INFO] [stdout]     |                       ^^^^ help: if this is intentional, prefix it with an underscore: `_mode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mode`
[INFO] [stdout]    --> src/cpu.rs:835:23
[INFO] [stdout]     |
[INFO] [stdout] 835 |     fn dey(&mut self, mode: &AddressingMode){
[INFO] [stdout]     |                       ^^^^ help: if this is intentional, prefix it with an underscore: `_mode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mode`
[INFO] [stdout]    --> src/cpu.rs:841:23
[INFO] [stdout]     |
[INFO] [stdout] 841 |     fn dex(&mut self, mode: &AddressingMode){
[INFO] [stdout]     |                       ^^^^ help: if this is intentional, prefix it with an underscore: `_mode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mode`
[INFO] [stdout]    --> src/cpu.rs:880:23
[INFO] [stdout]     |
[INFO] [stdout] 880 |     fn clv(&mut self, mode: &AddressingMode){
[INFO] [stdout]     |                       ^^^^ help: if this is intentional, prefix it with an underscore: `_mode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mode`
[INFO] [stdout]    --> src/cpu.rs:884:23
[INFO] [stdout]     |
[INFO] [stdout] 884 |     fn sei(&mut self, mode: &AddressingMode){
[INFO] [stdout]     |                       ^^^^ help: if this is intentional, prefix it with an underscore: `_mode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mode`
[INFO] [stdout]    --> src/cpu.rs:888:23
[INFO] [stdout]     |
[INFO] [stdout] 888 |     fn cli(&mut self, mode: &AddressingMode){
[INFO] [stdout]     |                       ^^^^ help: if this is intentional, prefix it with an underscore: `_mode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mode`
[INFO] [stdout]    --> src/cpu.rs:892:23
[INFO] [stdout]     |
[INFO] [stdout] 892 |     fn sed(&mut self, mode: &AddressingMode){
[INFO] [stdout]     |                       ^^^^ help: if this is intentional, prefix it with an underscore: `_mode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mode`
[INFO] [stdout]    --> src/cpu.rs:896:23
[INFO] [stdout]     |
[INFO] [stdout] 896 |     fn cld(&mut self, mode: &AddressingMode){
[INFO] [stdout]     |                       ^^^^ help: if this is intentional, prefix it with an underscore: `_mode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mode`
[INFO] [stdout]    --> src/cpu.rs:900:23
[INFO] [stdout]     |
[INFO] [stdout] 900 |     fn clc(&mut self, mode: &AddressingMode){
[INFO] [stdout]     |                       ^^^^ help: if this is intentional, prefix it with an underscore: `_mode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mode`
[INFO] [stdout]    --> src/cpu.rs:904:23
[INFO] [stdout]     |
[INFO] [stdout] 904 |     fn sec(&mut self, mode: &AddressingMode){
[INFO] [stdout]     |                       ^^^^ help: if this is intentional, prefix it with an underscore: `_mode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mode`
[INFO] [stdout]    --> src/cpu.rs:908:23
[INFO] [stdout]     |
[INFO] [stdout] 908 |     fn brk(&mut self, mode: &AddressingMode){
[INFO] [stdout]     |                       ^^^^ help: if this is intentional, prefix it with an underscore: `_mode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cpu`
[INFO] [stdout]  --> src/trace.rs:3:18
[INFO] [stdout]   |
[INFO] [stdout] 3 |     pub fn trace(cpu: &CPU) -> String {
[INFO] [stdout]   |                  ^^^ help: if this is intentional, prefix it with an underscore: `_cpu`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `path`
[INFO] [stdout]  --> src/cartridge.rs:5:17
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn load_rom(path: &str) -> Rom {
[INFO] [stdout]   |                 ^^^^ help: if this is intentional, prefix it with an underscore: `_path`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/ppu.rs:75:21
[INFO] [stdout]    |
[INFO] [stdout] 75 |                 let mut palette_addr = ((addr - 0x3f00) % 32) as usize;
[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: function `handle_user_input` is never used
[INFO] [stdout]    --> src/main.rs:122:8
[INFO] [stdout]     |
[INFO] [stdout] 122 |     fn handle_user_input(cpu: &mut CPU, event_pump: &mut EventPump){
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `color` is never used
[INFO] [stdout]    --> src/main.rs:145:8
[INFO] [stdout]     |
[INFO] [stdout] 145 |     fn color(byte: u8) -> Color{
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_screen_state` is never used
[INFO] [stdout]    --> src/main.rs:158:8
[INFO] [stdout]     |
[INFO] [stdout] 158 |     fn read_screen_state(cpu: &mut CPU, frame: &mut [u8; 32 * 3 * 32]) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PPU_REGISTERS` is never used
[INFO] [stdout]  --> src/bus.rs:7:7
[INFO] [stdout]   |
[INFO] [stdout] 7 | const PPU_REGISTERS: u16 = 0x2000;
[INFO] [stdout]   |       ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `find_Ops` should have a snake case name
[INFO] [stdout]    --> src/cpu.rs:641:8
[INFO] [stdout]     |
[INFO] [stdout] 641 |     fn find_Ops(&mut self, opcodes: u8) -> Option<OpCode> {
[INFO] [stdout]     |        ^^^^^^^^ help: convert the identifier to snake case (notice the capitalization): `find_ops`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `handle_user_input` is never used
[INFO] [stdout]    --> src/main.rs:122:8
[INFO] [stdout]     |
[INFO] [stdout] 122 |     fn handle_user_input(cpu: &mut CPU, event_pump: &mut EventPump){
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `color` is never used
[INFO] [stdout]    --> src/main.rs:145:8
[INFO] [stdout]     |
[INFO] [stdout] 145 |     fn color(byte: u8) -> Color{
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_screen_state` is never used
[INFO] [stdout]    --> src/main.rs:158:8
[INFO] [stdout]     |
[INFO] [stdout] 158 |     fn read_screen_state(cpu: &mut CPU, frame: &mut [u8; 32 * 3 * 32]) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PPU_REGISTERS` is never used
[INFO] [stdout]  --> src/bus.rs:7:7
[INFO] [stdout]   |
[INFO] [stdout] 7 | const PPU_REGISTERS: u16 = 0x2000;
[INFO] [stdout]   |       ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `find_Ops` should have a snake case name
[INFO] [stdout]    --> src/cpu.rs:641:8
[INFO] [stdout]     |
[INFO] [stdout] 641 |     fn find_Ops(&mut self, opcodes: u8) -> Option<OpCode> {
[INFO] [stdout]     |        ^^^^^^^^ help: convert the identifier to snake case (notice the capitalization): `find_ops`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 2.94s
[INFO] running `Command { std: "docker" "inspect" "da74b8a5e16836d0ab9f4dd37f1627a4171cdee79c07c3015ffcfc2bdf6abf3d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "da74b8a5e16836d0ab9f4dd37f1627a4171cdee79c07c3015ffcfc2bdf6abf3d", kill_on_drop: false }`
[INFO] [stdout] da74b8a5e16836d0ab9f4dd37f1627a4171cdee79c07c3015ffcfc2bdf6abf3d
