assert(getprop("ro.product.device") == "A0001" || getprop("ro.build.product") == "A0001" || abort("This package is for device: A0001; this device is " + getprop("ro.product.device") + "."););
ui_print("Target: oneplus/bacon/A0001:6.0.1/MHC19Q/ZNH2KAS3P0:user/release-keys");
ifelse(is_mounted("/system"), unmount("/system"));
package_extract_dir("install", "/tmp/install");
set_metadata_recursive("/tmp/install", "uid", 0, "gid", 0, "dmode", 0755, "fmode", 0644);
set_metadata_recursive("/tmp/install/bin", "uid", 0, "gid", 0, "dmode", 0755, "fmode", 0755);
if is_mounted("/data") then
package_extract_file("META-INF/org/cyanogenmod/releasekey", "/tmp/releasekey");
run_program("/tmp/install/bin/otasigcheck.sh") != "31744" || abort("Can't install this package on top of incompatible data. Please try another package or run a factory reset");
else
mount("ext4", "EMMC", "/dev/block/platform/msm_sdcc.1/by-name/userdata", "/data", "");
package_extract_file("META-INF/org/cyanogenmod/releasekey", "/tmp/releasekey");
run_program("/tmp/install/bin/otasigcheck.sh") != "31744" || abort("Can't install this package on top of incompatible data. Please try another package or run a factory reset");
unmount("/data");
endif;
show_progress(0.750000, 0);
ui_print("Patching system image unconditionally...");
block_image_update("/dev/block/platform/msm_sdcc.1/by-name/system", package_extract_file("system.transfer.list"), "system.new.dat", "system.patch.dat");
ui_print("Verifying the updated system image...");
if range_sha1("/dev/block/platform/msm_sdcc.1/by-name/system", "50,0,32770,32857,32859,33341,65535,65536,65538,66020,98303,98304,98306,98393,98395,98877,131071,131072,131074,131556,163839,163840,163842,163929,163931,164413,196607,196608,196610,197092,229371,229376,229378,229465,229467,229949,262143,262144,262146,262628,265656,294912,294914,295001,295003,295485,327679,327680,327682,328164,338943") == "44355b1a3f4632f1a506da4b2a0b57669f6d3073" then
if range_sha1("/dev/block/platform/msm_sdcc.1/by-name/system", "52,32770,32857,32859,33341,65535,65536,65538,66020,98303,98304,98306,98393,98395,98877,131071,131072,131074,131556,163839,163840,163842,163929,163931,164413,196607,196608,196610,197092,229371,229376,229378,229465,229467,229949,262143,262144,262146,262628,265656,266168,294400,294912,294914,295001,295003,295485,327679,327680,327682,328164,338943,338944") == "0ebeb5f034f8e503f0a6a91a48d9d7381b0ad045" then
ui_print("Verified the updated system image.");
else
  abort("system partition has unexpected non-zero contents after OTA update");
endif;
else
  abort("system partition has unexpected contents after OTA update");
endif;
show_progress(0.050000, 5);
package_extract_file("boot.img", "/dev/block/platform/msm_sdcc.1/by-name/boot");
show_progress(0.200000, 10);
ui_print("Wiping DDR");
ifelse((sha1_check(read_file("EMMC:/dev/block/platform/msm_sdcc.1/by-name/rpm:190816:e9b687388fce68c0c6b7dc7e15845c15599f5b26")) != ""),ifelse((sha1_check(read_file("EMMC:/dev/block/platform/msm_sdcc.1/by-name/sbl1:280544:7ffe2dd004f1875ca04b2c4d2bb8f0d9952e55c2")) != ""),(ui_print("RPM+SBL Already up to date, not wiping DDR")),(wipe_block_device("/dev/block/platform/msm_sdcc.1/by-name/DDR", 32768))),(wipe_block_device("/dev/block/platform/msm_sdcc.1/by-name/DDR", 32768)));
ifelse(sha1_check(read_file("EMMC:/dev/block/platform/msm_sdcc.1/by-name/DDR:32768:5188431849b4613152fd7bdba6a3ff0a4fd6424b")) != "",ui_print("Verified DDR wipe"),ui_print("DDR wipe failed or not performed"));
ui_print("Writing radio image...");
ifelse((sha1_check(read_file("EMMC:/dev/block/platform/msm_sdcc.1/by-name/aboot:456124:608e59fd769d4eb02ee847bde3d210ff882ec870")) != ""),(ui_print("/dev/block/platform/msm_sdcc.1/by-name/aboot already up to date")),(package_extract_file("emmc_appsboot.mbn", "/dev/block/platform/msm_sdcc.1/by-name/aboot")));
ifelse((sha1_check(read_file("EMMC:/dev/block/platform/msm_sdcc.1/by-name/rpm:190816:e9b687388fce68c0c6b7dc7e15845c15599f5b26")) != ""),(ui_print("/dev/block/platform/msm_sdcc.1/by-name/rpm already up to date")),(package_extract_file("rpm.mbn", "/dev/block/platform/msm_sdcc.1/by-name/rpm")));
ifelse((sha1_check(read_file("EMMC:/dev/block/platform/msm_sdcc.1/by-name/LOGO:336384:aa8b5dae435685ef84128df9c381289e48da1d8f")) != ""),(ui_print("/dev/block/platform/msm_sdcc.1/by-name/LOGO already up to date")),(package_extract_file("logo.bin", "/dev/block/platform/msm_sdcc.1/by-name/LOGO")));
ifelse((sha1_check(read_file("EMMC:/dev/block/platform/msm_sdcc.1/by-name/dbi:11712:44326b92314d447494728742db912cb7d96d5478")) != ""),(ui_print("/dev/block/platform/msm_sdcc.1/by-name/dbi already up to date")),(package_extract_file("sdi.mbn", "/dev/block/platform/msm_sdcc.1/by-name/dbi")));
ifelse((sha1_check(read_file("EMMC:/dev/block/platform/msm_sdcc.1/by-name/tz:333656:05c2cf89fe3b860e61ac6b60b688ce522e4660c9")) != ""),(ui_print("/dev/block/platform/msm_sdcc.1/by-name/tz already up to date")),(package_extract_file("tz.mbn", "/dev/block/platform/msm_sdcc.1/by-name/tz")));
ifelse((sha1_check(read_file("EMMC:/dev/block/platform/msm_sdcc.1/by-name/modem:58836480:4b3d04c97940bf44baab2b91a78ea151798f9b21")) != ""),(ui_print("/dev/block/platform/msm_sdcc.1/by-name/modem already up to date")),(package_extract_file("NON-HLOS.bin", "/dev/block/platform/msm_sdcc.1/by-name/modem")));
ifelse((sha1_check(read_file("EMMC:/dev/block/platform/msm_sdcc.1/by-name/oppostanvbk:10485760:6ccb5652450dea3cef17c6b6a25bd7ec1c77bd0a")) != ""),(ui_print("/dev/block/platform/msm_sdcc.1/by-name/oppostanvbk already up to date")),(package_extract_file("static_nvbk.bin", "/dev/block/platform/msm_sdcc.1/by-name/oppostanvbk")));
ifelse((sha1_check(read_file("EMMC:/dev/block/platform/msm_sdcc.1/by-name/sbl1:280544:7ffe2dd004f1875ca04b2c4d2bb8f0d9952e55c2")) != ""),(ui_print("/dev/block/platform/msm_sdcc.1/by-name/sbl1 already up to date")),(package_extract_file("sbl1.mbn", "/dev/block/platform/msm_sdcc.1/by-name/sbl1")));
