getprop("ro.product.device") == "citrus" || abort("E3004: This package is for \"citrus\" devices; this is a \"" + getprop("ro.product.device") + "\".");
ui_print("Source: POCO/citrus_in/citrus:11/RKQ1.201004.002/V12.5.4.0.RJFINXM:user/release-keys");
ui_print("Target: POCO/citrus_in/citrus:11/RKQ1.201004.002/V12.5.5.0.RJFINXM:user/release-keys");
ui_print("Verifying current system...");
getprop("ro.build.fingerprint") == "POCO/citrus_in/citrus:11/RKQ1.201004.002/V12.5.4.0.RJFINXM:user/release-keys" ||
    getprop("ro.build.fingerprint") == "POCO/citrus_in/citrus:11/RKQ1.201004.002/V12.5.5.0.RJFINXM:user/release-keys" ||
    abort("E3001: Package expects build fingerprint of POCO/citrus_in/citrus:11/RKQ1.201004.002/V12.5.4.0.RJFINXM:user/release-keys or POCO/citrus_in/citrus:11/RKQ1.201004.002/V12.5.5.0.RJFINXM:user/release-keys; this device has " + getprop("ro.build.fingerprint") + ".");
patch_partition_check(concat("EMMC:","/dev/block/bootdevice/by-name/boot",":100663296:4dce05d87c4055238568f705f4f757eabdaf91ff"),
                      concat("EMMC:","/dev/block/bootdevice/by-name/boot",":100663296:5d8ac76394f16239bc004540db57d9b79724a2da")) ||
    abort(concat("E3005: \"",concat("EMMC:","/dev/block/bootdevice/by-name/boot",":100663296:4dce05d87c4055238568f705f4f757eabdaf91ff"),"\" or \"",concat("EMMC:","/dev/block/bootdevice/by-name/boot",":100663296:5d8ac76394f16239bc004540db57d9b79724a2da"),"\" has unexpected contents."));
apply_patch_space(100663296) || abort("E3006: Not enough free space on /cache to apply patches.");
if (range_sha1(map_partition("system"), "230,1,33,45,55,75,79,107,108,21363,21364,21394,21395,27560,27561,28990,28991,32768,32787,56697,56698,58043,58044,60201,60202,63025,63026,63770,63771,65331,65332,65524,65525,65536,65553,66762,66763,71132,71133,72250,72251,74269,74270,74751,74752,77915,77916,78512,78513,78700,78701,79403,79404,79620,79622,79784,79788,79796,79797,84678,84679,84692,84696,84700,84701,86122,86128,86161,86162,86169,86175,86176,86177,86184,86190,86191,86192,89686,89690,89730,89731,90712,90713,91363,91364,93295,93298,93306,93307,93329,93330,93334,93335,93771,93772,93946,93947,93979,93985,93986,93987,94109,94115,94116,95218,95356,98734,98749,98755,98756,98757,103699,103700,104482,104486,104552,104553,105642,105646,105667,105668,106316,106317,106421,106436,106441,106444,106445,106481,106767,106768,106784,106785,106916,106917,106919,106920,106922,106923,114215,114219,114245,114246,114376,114380,114386,114387,114521,114525,114532,114533,119818,119822,119891,119892,119920,119921,119960,119966,119967,119968,120216,120217,120251,120257,120258,120259,120735,120739,120755,120756,131072,131089,132607,132608,136124,136125,136216,136217,136221,136222,136887,136891,136997,136998,137550,137556,137557,137558,139429,139433,139478,139479,139483,139489,139490,139491,139522,139528,139529,139530,141221,141225,141249,141250,145295,145299,145336,145337,147104,147108,147126,147127,147157,147158,147164,147170,147171,147172,148977,148981,149023,149024,151557,655373,655377,665382,667396,677972,678116,678117") == "70b6dae2289997d1a6cc9417e7868848afd7f773" || block_image_verify(map_partition("system"), package_extract_file("system.transfer.list"), "system.new.dat", "system.patch.dat")) then
ui_print("Verified system image...");
else
check_first_block(map_partition("system"));
ifelse (block_image_recover(map_partition("system"), "230,1,33,45,55,75,79,107,108,21363,21364,21394,21395,27560,27561,28990,28991,32768,32787,56697,56698,58043,58044,60201,60202,63025,63026,63770,63771,65331,65332,65524,65525,65536,65553,66762,66763,71132,71133,72250,72251,74269,74270,74751,74752,77915,77916,78512,78513,78700,78701,79403,79404,79620,79622,79784,79788,79796,79797,84678,84679,84692,84696,84700,84701,86122,86128,86161,86162,86169,86175,86176,86177,86184,86190,86191,86192,89686,89690,89730,89731,90712,90713,91363,91364,93295,93298,93306,93307,93329,93330,93334,93335,93771,93772,93946,93947,93979,93985,93986,93987,94109,94115,94116,95218,95356,98734,98749,98755,98756,98757,103699,103700,104482,104486,104552,104553,105642,105646,105667,105668,106316,106317,106421,106436,106441,106444,106445,106481,106767,106768,106784,106785,106916,106917,106919,106920,106922,106923,114215,114219,114245,114246,114376,114380,114386,114387,114521,114525,114532,114533,119818,119822,119891,119892,119920,119921,119960,119966,119967,119968,120216,120217,120251,120257,120258,120259,120735,120739,120755,120756,131072,131089,132607,132608,136124,136125,136216,136217,136221,136222,136887,136891,136997,136998,137550,137556,137557,137558,139429,139433,139478,139479,139483,139489,139490,139491,139522,139528,139529,139530,141221,141225,141249,141250,145295,145299,145336,145337,147104,147108,147126,147127,147157,147158,147164,147170,147171,147172,148977,148981,149023,149024,151557,655373,655377,665382,667396,677972,678116,678117") && block_image_verify(map_partition("system"), package_extract_file("system.transfer.list"), "system.new.dat", "system.patch.dat"), ui_print("system recovered successfully."), abort("E1004: system partition fails to recover"));
endif;
if (range_sha1(map_partition("vendor"), "390,1,31,42,46,51,52,132,140,146,147,1824,1828,2307,2308,2553,2557,2562,2563,2566,2570,2573,2574,2597,2601,2605,2606,2629,2630,2666,2670,2720,2721,2882,2883,2888,2894,2895,2902,2916,2917,4773,4822,4828,9377,9860,9862,9863,9864,9866,9869,9870,9871,9873,9875,9876,9877,9879,9881,9882,9883,9885,9887,9888,9889,9892,9894,9895,9896,9899,9901,9904,9906,9914,9916,9919,9921,9924,9926,9927,9928,9933,9934,9936,9938,9939,9940,9942,9944,9945,9946,9948,9950,9951,9952,9954,9956,9957,9958,9983,9984,9988,9989,9995,9996,9999,10000,10001,10002,10005,10006,10007,10008,10011,10012,10013,10014,10019,10020,10023,10024,10025,10026,10029,10030,10031,10032,10036,10037,10041,10042,10045,10047,10050,10052,10056,10057,10062,10063,10064,10065,10068,10069,10070,10071,10074,10075,10076,10077,10080,10081,10082,10083,10086,10087,10088,10089,10092,10093,10094,10095,10099,10100,10390,10391,11418,11423,18599,18600,18732,18733,18743,18744,27674,27675,27964,27966,28039,28040,29854,29855,32768,32800,34506,34507,35141,35143,35784,35785,36317,36318,36850,36851,36854,36855,37297,37298,38204,38205,38213,38214,38309,38310,40236,40238,51215,51216,51481,51482,51486,51488,51505,51506,51541,51542,51551,51552,51553,51554,51604,51605,51611,51612,53028,53029,57104,57105,57107,57109,57173,57174,57244,57245,57312,57313,57315,57316,57318,57319,57378,57380,57382,57383,57447,57448,57518,57519,57586,57587,57589,57590,57592,57595,57596,57598,57600,57601,57607,57608,57610,57611,57614,57615,57626,57628,57630,57631,57637,57638,57640,57641,57644,57645,57647,57648,57651,57654,57656,57657,57659,57661,57664,57666,57668,57669,57677,57678,57680,57681,57691,57692,57694,57695,57697,57698,57701,57702,57713,57715,57717,57718,57724,57725,57727,57728,57730,57731,57733,57734,57736,57747,57807,57808,57810,57811,57821,57822,57888,57889,57966,57967,57977,57978,58044,58045,58121,58122,58201,58202,58278,58279,58355,58356,58432,58433,58443,58444,58447,58448,58511,58512,58587,58588,58598,58599,58665,58666,58742,58743,58815,58816,58818,58819,58831,58836,58837,58838,58842,58843,58845,58846,58849,58850,59105,59323,59325,59326,60390,60391,60426,60428,60433,60435,60561,60562,60611,60614,60890,60891,60892,60893,61251,294928,294936,308271,308276,312519,313468,318437,318513,318514") == "0bef2413bc6df5ca173a7fc31ced57ceac91c4ab" || block_image_verify(map_partition("vendor"), package_extract_file("vendor.transfer.list"), "vendor.new.dat", "vendor.patch.dat")) then
ui_print("Verified vendor image...");
else
check_first_block(map_partition("vendor"));
ifelse (block_image_recover(map_partition("vendor"), "390,1,31,42,46,51,52,132,140,146,147,1824,1828,2307,2308,2553,2557,2562,2563,2566,2570,2573,2574,2597,2601,2605,2606,2629,2630,2666,2670,2720,2721,2882,2883,2888,2894,2895,2902,2916,2917,4773,4822,4828,9377,9860,9862,9863,9864,9866,9869,9870,9871,9873,9875,9876,9877,9879,9881,9882,9883,9885,9887,9888,9889,9892,9894,9895,9896,9899,9901,9904,9906,9914,9916,9919,9921,9924,9926,9927,9928,9933,9934,9936,9938,9939,9940,9942,9944,9945,9946,9948,9950,9951,9952,9954,9956,9957,9958,9983,9984,9988,9989,9995,9996,9999,10000,10001,10002,10005,10006,10007,10008,10011,10012,10013,10014,10019,10020,10023,10024,10025,10026,10029,10030,10031,10032,10036,10037,10041,10042,10045,10047,10050,10052,10056,10057,10062,10063,10064,10065,10068,10069,10070,10071,10074,10075,10076,10077,10080,10081,10082,10083,10086,10087,10088,10089,10092,10093,10094,10095,10099,10100,10390,10391,11418,11423,18599,18600,18732,18733,18743,18744,27674,27675,27964,27966,28039,28040,29854,29855,32768,32800,34506,34507,35141,35143,35784,35785,36317,36318,36850,36851,36854,36855,37297,37298,38204,38205,38213,38214,38309,38310,40236,40238,51215,51216,51481,51482,51486,51488,51505,51506,51541,51542,51551,51552,51553,51554,51604,51605,51611,51612,53028,53029,57104,57105,57107,57109,57173,57174,57244,57245,57312,57313,57315,57316,57318,57319,57378,57380,57382,57383,57447,57448,57518,57519,57586,57587,57589,57590,57592,57595,57596,57598,57600,57601,57607,57608,57610,57611,57614,57615,57626,57628,57630,57631,57637,57638,57640,57641,57644,57645,57647,57648,57651,57654,57656,57657,57659,57661,57664,57666,57668,57669,57677,57678,57680,57681,57691,57692,57694,57695,57697,57698,57701,57702,57713,57715,57717,57718,57724,57725,57727,57728,57730,57731,57733,57734,57736,57747,57807,57808,57810,57811,57821,57822,57888,57889,57966,57967,57977,57978,58044,58045,58121,58122,58201,58202,58278,58279,58355,58356,58432,58433,58443,58444,58447,58448,58511,58512,58587,58588,58598,58599,58665,58666,58742,58743,58815,58816,58818,58819,58831,58836,58837,58838,58842,58843,58845,58846,58849,58850,59105,59323,59325,59326,60390,60391,60426,60428,60433,60435,60561,60562,60611,60614,60890,60891,60892,60893,61251,294928,294936,308271,308276,312519,313468,318437,318513,318514") && block_image_verify(map_partition("vendor"), package_extract_file("vendor.transfer.list"), "vendor.new.dat", "vendor.patch.dat"), ui_print("vendor recovered successfully."), abort("E2004: vendor partition fails to recover"));
endif;
if (range_sha1(map_partition("product"), "366,1,16,33,37,41,42,4814,4815,5238,5240,7277,7281,7374,7375,8377,8378,10075,10078,10084,10085,10126,10127,10928,10929,14299,14303,14418,14419,18772,18773,27186,27187,32768,32777,37003,37004,37679,37683,38649,38650,39992,39993,40127,40128,40183,40184,41798,41799,42161,42165,42684,42685,42697,42703,42704,42705,44545,44549,44591,44592,45982,45983,55734,55735,59606,59607,59857,59862,59874,59875,59939,59942,60135,60140,60397,60399,63881,63882,65536,65543,73730,73731,83275,83282,84758,84759,90134,90135,93284,93285,98304,98313,102845,102846,102853,102854,102983,102989,102990,102991,103004,103010,103011,103012,110533,110534,111773,111777,112790,112791,116639,116641,130124,130125,130194,130195,131072,131079,132423,132425,152923,152924,154932,154933,162234,162235,163840,163849,168615,168616,172605,172606,172907,172908,172960,172962,172971,172972,173066,173068,173857,173858,173865,173866,173872,173873,178210,178211,178436,178438,178448,178450,178496,178498,178508,178510,178519,178520,180338,180339,180340,180342,180506,180507,180508,180509,180511,180512,180529,180530,180533,180535,180536,180538,180554,180555,180567,180568,180607,180611,180615,180619,180620,180624,180625,180641,181056,181057,181428,181429,182914,182915,183004,183006,183009,183010,183013,183014,183017,183018,183021,183022,183025,183026,183029,183030,183044,183045,183051,183052,183058,183059,183065,183066,183072,183073,183079,183080,183122,183123,183144,183145,183152,183153,183174,183175,183192,183193,183199,183200,183218,183219,183226,183227,183246,183247,183262,183263,183268,183269,183289,183290,183297,183298,183319,183320,183337,183338,183344,183345,183947,183949,186395,186396,196608,196632,196633,196634,203758,203760,204901,204902,213101,213103,214153,214155,216395,216396,216570,216574,216622,216623,216638,216639,216879,216883,217134,217135,225695,225696,229231,229232,229281,229282,229376,229385,230860,230864,230932,230933,230963,230964,231100,231104,231112,231113,232501,232505,232540,232541,232682,232688,232689,232690,232694,232695,232812,232816,232817,232818,234218,234222,236988,236989,237721,237722,244160,244161,248382,248383,249910,249911,250575,250579,250595,250596,252169,252173,252198,252199,262144,262147,263034,263035,288180,288181,288206,288207,288410,288411,288888,288889,289128,289129,289868,289869,290448,290449,290626,290627,291602,291604,292718,292719,294912,294915,295650,295651,296588,296591,299925,299926,307279,312151,312227,312228") == "0946b1d39ffe0c2ff5462b6196fda506439f0015" || block_image_verify(map_partition("product"), package_extract_file("product.transfer.list"), "product.new.dat", "product.patch.dat")) then
ui_print("Verified product image...");
else
ifelse (block_image_recover(map_partition("product"), "366,1,16,33,37,41,42,4814,4815,5238,5240,7277,7281,7374,7375,8377,8378,10075,10078,10084,10085,10126,10127,10928,10929,14299,14303,14418,14419,18772,18773,27186,27187,32768,32777,37003,37004,37679,37683,38649,38650,39992,39993,40127,40128,40183,40184,41798,41799,42161,42165,42684,42685,42697,42703,42704,42705,44545,44549,44591,44592,45982,45983,55734,55735,59606,59607,59857,59862,59874,59875,59939,59942,60135,60140,60397,60399,63881,63882,65536,65543,73730,73731,83275,83282,84758,84759,90134,90135,93284,93285,98304,98313,102845,102846,102853,102854,102983,102989,102990,102991,103004,103010,103011,103012,110533,110534,111773,111777,112790,112791,116639,116641,130124,130125,130194,130195,131072,131079,132423,132425,152923,152924,154932,154933,162234,162235,163840,163849,168615,168616,172605,172606,172907,172908,172960,172962,172971,172972,173066,173068,173857,173858,173865,173866,173872,173873,178210,178211,178436,178438,178448,178450,178496,178498,178508,178510,178519,178520,180338,180339,180340,180342,180506,180507,180508,180509,180511,180512,180529,180530,180533,180535,180536,180538,180554,180555,180567,180568,180607,180611,180615,180619,180620,180624,180625,180641,181056,181057,181428,181429,182914,182915,183004,183006,183009,183010,183013,183014,183017,183018,183021,183022,183025,183026,183029,183030,183044,183045,183051,183052,183058,183059,183065,183066,183072,183073,183079,183080,183122,183123,183144,183145,183152,183153,183174,183175,183192,183193,183199,183200,183218,183219,183226,183227,183246,183247,183262,183263,183268,183269,183289,183290,183297,183298,183319,183320,183337,183338,183344,183345,183947,183949,186395,186396,196608,196632,196633,196634,203758,203760,204901,204902,213101,213103,214153,214155,216395,216396,216570,216574,216622,216623,216638,216639,216879,216883,217134,217135,225695,225696,229231,229232,229281,229282,229376,229385,230860,230864,230932,230933,230963,230964,231100,231104,231112,231113,232501,232505,232540,232541,232682,232688,232689,232690,232694,232695,232812,232816,232817,232818,234218,234222,236988,236989,237721,237722,244160,244161,248382,248383,249910,249911,250575,250579,250595,250596,252169,252173,252198,252199,262144,262147,263034,263035,288180,288181,288206,288207,288410,288411,288888,288889,289128,289129,289868,289869,290448,290449,290626,290627,291602,291604,292718,292719,294912,294915,295650,295651,296588,296591,299925,299926,307279,312151,312227,312228") && block_image_verify(map_partition("product"), package_extract_file("product.transfer.list"), "product.new.dat", "product.patch.dat"), ui_print("product recovered successfully."), abort("E2004: product partition fails to recover"));
endif;
if (range_sha1(map_partition("system_ext"), "1866,1,31,40,44,48,49,57,63,64,65,81,87,88,89,148,152,157,158,719,721,778,782,797,798,827,833,834,835,1724,1730,1753,1754,1761,1767,1768,1769,1997,2001,2010,2011,2042,2048,2049,2050,2246,2250,2254,2255,2259,2263,2268,2269,2274,2275,2299,2305,2306,2307,2313,2319,2320,2321,2324,2325,2337,2343,2344,2345,2356,2357,2363,2367,2371,2372,2377,2383,2387,2388,2397,2403,2404,2405,2418,2424,2425,2426,2438,2444,2445,2446,2449,2456,2464,2471,2539,2546,2552,2559,2595,2600,2620,2627,2646,2653,2671,2672,2882,2884,2893,2894,2906,2907,2908,2909,2910,2911,2920,2921,2944,2945,2993,2998,3001,3004,3007,3010,3013,3015,3019,3020,3024,3027,3031,3032,3049,3112,3555,3557,3561,3565,3566,3570,3575,3577,3582,3586,3587,3591,3592,3596,3597,3601,3602,3606,3607,3611,3612,3616,3617,3621,3622,3624,3631,3635,3636,3640,3641,3645,3646,3650,3651,3655,3656,3660,3661,3665,3666,3668,3669,3673,3674,3678,3679,3681,3682,3686,3687,3691,3692,3696,3697,3701,3702,3706,3707,3709,3713,3717,3718,3722,3723,3725,3726,3728,3729,3733,3734,3738,3739,3741,3742,3746,3747,3751,3752,3756,3757,3761,3762,3764,3765,3769,3770,3772,3776,3793,3798,3832,3835,3948,6360,6361,6644,7314,7596,7597,8786,8787,9934,9935,11114,11115,11165,11166,11475,11476,16801,16802,16832,16833,17022,17023,17083,17084,17263,17264,17384,17385,17593,17594,22486,22487,22489,22490,22519,22520,22713,22714,22887,22888,22913,22914,22931,22932,23008,23009,23032,23033,23089,23090,23195,23196,28169,28170,28189,28190,28468,28469,28555,28556,28594,28595,28672,28673,28928,28929,32768,32807,35221,36248,37113,37114,44303,44304,45937,45938,45989,45990,46308,46309,48436,48437,54525,54586,56271,56273,56456,56458,56506,56508,58092,58094,65536,65565,66643,66644,66649,66650,66816,66817,66818,66819,66830,66831,66843,66844,66854,66855,66858,66859,66869,66870,66882,66883,66965,66966,67035,67036,67087,67088,67151,67153,67162,67163,67166,67168,67175,67176,67350,67351,67353,67354,67364,67366,67410,67411,67412,67413,67421,67422,67704,67705,68646,68648,69450,69451,69452,69453,69457,69458,69459,69462,69463,69464,69466,69467,69469,69470,69471,69473,69474,69476,69477,69479,69480,69482,69483,69491,69492,69493,69495,69499,69500,69501,69502,69516,69517,69518,69520,69526,69528,69533,69534,69535,69536,69539,69540,69544,69565,69566,69573,69575,69576,69577,69578,69579,69582,69586,69587,69588,69591,69592,69593,69594,69624,69627,69628,69629,69630,69631,69632,69635,69636,69639,69645,69653,69654,69655,69656,69665,69666,69667,69672,69676,69678,69679,69683,69684,69689,69690,69693,69696,69704,69710,69713,69718,69719,69720,69721,69722,69725,69727,69728,69730,69731,69738,69740,69744,69766,69767,69769,69771,69777,69778,69781,69789,69790,69814,69823,69826,69827,69833,69836,69837,69855,69856,69858,69859,69861,69866,69870,69875,69881,69883,69887,69889,69891,69892,69895,69896,69897,69898,69899,69901,69903,69905,69906,69907,69921,69923,69926,69934,69936,69937,69940,69946,69947,69948,69949,69953,69954,69959,69960,69962,69963,69966,69967,69968,69969,69970,69974,69980,69981,69991,69993,69997,69999,70002,70003,70004,70005,70006,70007,70008,70009,70011,70012,70015,70018,70034,70035,70037,70038,70042,70043,70051,70052,70061,70062,70065,70066,70067,70068,70070,70072,70092,70093,70095,70096,70110,70111,70118,70119,70129,70131,70133,70135,70136,70137,70140,70141,70144,70145,70156,70158,70159,70161,70172,70173,70175,70176,70178,70182,70187,70188,70190,70193,70194,70195,70198,70199,70206,70207,70208,70212,70221,70225,70228,70233,70234,70237,70239,70240,70241,70242,70249,70250,70254,70255,70259,70260,70261,70262,70266,70267,70270,70271,70290,70294,70298,70299,70300,70301,70303,70304,70310,70313,70315,70321,70330,70332,70333,70335,70336,70337,70339,70341,70342,70344,70346,70347,70348,70349,70350,70351,70357,70358,70363,70364,70365,70372,70377,70378,70379,70381,70385,70388,70389,70390,70391,70394,70399,70401,70404,70405,70409,70414,70416,70417,70422,70428,70430,70431,70433,70438,70439,70440,70441,70443,70445,70447,70449,70452,70455,70456,70460,70461,70463,70466,70468,70469,70470,70472,70473,70477,70482,70483,70486,70489,70494,70495,70496,70497,70515,70518,70524,70526,70530,70531,70533,70536,70537,70548,70551,70554,70557,70559,70562,70564,70568,70569,70570,70571,70572,70573,70574,70575,70576,70577,70587,70592,70594,70595,70598,70600,70604,70605,70610,70611,70632,70633,70635,70636,70637,70638,70640,70641,70643,70644,70645,70647,70649,70650,70653,70654,70658,70659,70672,70673,70676,70678,70687,70688,70691,70692,70694,70695,70702,70703,70708,70711,70715,70716,70718,70719,70724,70725,70727,70729,70732,70737,70749,70754,70766,70771,70774,70775,70776,70777,70780,70781,70782,70783,70784,70787,70789,70790,70791,70796,70797,70802,70803,70815,70816,70817,70824,70825,70826,70827,70828,70830,70833,70835,70836,70838,70839,70841,70844,70851,70852,70855,70859,70861,70862,70865,70872,70875,70876,70877,70884,70885,70887,70893,70896,70897,70900,70901,70902,70907,70909,70922,70924,70927,70930,70931,70946,70947,70958,70959,70968,70969,70970,70971,70973,70975,70980,70983,70984,70985,70986,70987,70994,70995,71004,71005,71009,71013,71015,71016,71022,71024,71025,71026,71028,71029,71034,71035,71038,71039,71042,71044,71046,71047,71053,71055,71059,71060,71065,71066,71067,71069,71071,71083,71085,71090,71095,71096,71098,71100,71103,71109,71111,71114,71116,71118,71119,71121,71126,71128,71129,71132,71133,71134,71137,71138,71139,71141,71143,71146,71152,71156,71158,71160,71161,71162,71164,71175,71176,71179,71180,71181,71182,71185,71187,71188,71192,71198,71199,71200,71201,71215,71216,71217,71219,71225,71226,71229,71230,71232,71233,71245,71249,71252,71253,71257,71261,71262,71263,71264,71265,71266,71275,71276,71281,71282,71285,71287,71288,71291,71292,71293,71295,71301,71309,71312,71313,71314,71330,71331,71335,71336,71338,71341,71343,71344,71345,71347,71350,71351,71353,71355,71358,71360,71377,71378,71380,71381,71384,71385,71386,71388,71392,71394,71395,71399,71403,71404,71410,71411,71418,71420,71421,71422,71423,71424,71425,71428,71434,71435,71437,71438,71442,71444,71452,71459,71463,71465,71469,71470,71473,71474,71475,71478,71480,71484,71487,71489,71490,71491,71492,71496,71499,71501,71502,71504,71506,71508,71510,71515,71516,71524,71525,71526,71527,71528,71529,71531,71532,71541,71544,71545,71548,71549,71551,71552,71554,71555,71560,71565,71570,71573,71574,71575,71577,71578,71580,71583,71585,71586,71591,71604,71605,71607,71608,71617,71633,71634,71636,71638,71639,71640,71644,71650,71652,71662,71664,71665,71667,71668,71669,71671,71673,71674,71677,71681,71683,71684,71699,71700,71701,71703,71707,71709,71710,71711,71715,71717,71719,71724,71729,71730,71732,71734,71738,71739,71740,71743,71744,71746,71751,71752,71760,71762,71767,71768,71772,71774,71782,71783,71785,71787,71788,71789,71792,71793,71794,71799,71805,71806,71810,71811,71812,71814,71815,71818,71823,71826,71827,71828,71829,71836,71838,71844,71846,71847,71848,71854,71855,71858,71859,71862,71863,71871,71872,71873,71874,71876,71878,71879,71881,71884,71890,71891,71899,71900,71901,71902,71904,71905,71908,71909,71911,71912,71918,71919,71920,71921,71924,71927,71929,71931,71932,71933,71935,71939,71940,71943,71944,71945,71950,71951,71961,71962,71965,71968,71971,71974,71989,71990,71992,71993,71997,71998,71999,72001,72005,72006,72008,72013,72018,72019,72021,72029,72030,72039,72041,72042,72047,72050,72055,72056,72057,72058,72061,72064,72066,72067,72073,72074,72079,72082,72084,72086,72090,72091,72092,72096,72098,72099,72104,72105,72107,72125,72128,72129,72131,72132,72133,72134,72135,72136,72137,72140,72144,72152,72155,72156,72157,72158,72160,72166,72169,72174,72175,72176,72177,72181,72182,72187,72190,72191,72194,72195,72202,72205,72206,72208,72210,72214,72215,72219,72220,72223,72229,72230,72231,72232,72233,72234,72237,72238,72239,72240,72242,72243,72244,72247,72249,72252,72253,72254,72258,72259,72260,72261,72262,72263,72264,72265,72269,72272,72286,72288,72290,72293,72297,72298,72301,72304,72305,72307,72308,72309,72311,72318,72319,72322,72324,72325,72327,72338,72341,72351,72358,72359,72360,72361,72362,72363,72369,72370,72385,72397,72398,72401,72408,72413,72416,72417,72422,72425,72429,72430,72431,72432,72436,72437,72440,72441,72445,72446,72449,72450,72459,72460,72462,72463,72472,72473,72479,72480,72481,72483,72488,72489,72491,72497,72503,72505,72507,72509,72511,72518,72521,72525,72526,72551,72552,72553,72556,72564,72565,72566,72574,72575,72578,72579,72582,72584,72585,72588,72589,72590,72592,72593,72601,72604,72605,72607,72608,72610,72612,72613,72614,72615,72620,72624,72625,72627,72628,72629,72634,72640,72641,72645,72647,72650,72653,72655,72656,72666,72667,72668,72669,72673,72676,72677,72682,72683,72687,72690,72691,72694,72695,72696,72698,72699,72701,72705,72708,72709,72712,72713,72718,72721,72722,72723,72724,72730,72735,72737,72740,72744,72762,72764,72767,72768,72769,72770,72784,72790,72791,72800,72801,72815,72816,72825,72826,72827,72829,72836,72837,72838,72839,72841,72842,72843,72846,72848,72852,72854,72855,72856,72858,72859,72860,72870,72871,72872,72873,72874,72875,72878,72880,72881,72884,72886,72887,72888,72889,72891,72894,72895,72896,72898,72899,72900,72904,72905,72906,72907,72908,72909,72912,72913,72914,72915,72932,72934,72935,72938,72939,72941,72943,72944,72950,72952,72961,72962,72965,72966,72978,72980,72983,72984,72986,72992,72994,72996,73001,73004,73005,73007,73011,73012,73014,73017,73020,73021,73022,73023,73026,73027,73037,73041,73042,73045,73047,73049,73056,73057,73060,73061,73065,73068,73070,73071,73079,73081,73090,73091,73100,73102,73104,73105,73106,73107,73109,73110,73111,73114,73117,73126,73130,73131,73132,73141,73145,73146,73148,73159,73161,73163,73164,73165,73167,73169,73170,73171,73172,73173,73175,73181,73182,73192,73193,73196,73197,73201,73202,73216,73218,73225,73227,73230,73231,73233,73234,73235,73236,73237,73239,73240,73241,73242,73244,73246,73247,73254,73255,73256,73257,73265,73266,73267,73271,73272,73273,73277,73280,73284,73287,73291,73292,73293,73296,73298,73300,73306,73312,73362,73364,73366,73367,73370,73371,73373,73374,73381,73383,73384,73387,73391,73393,73395,73397,73398,73402,73403,73408,73409,73423,73427,73428,73432,73434,73436,73445,73447,73451,73463,73465,73469,73473,73474,73475,73478,73479,73480,73481,73486,73488,73491,73492,73497,73502,73503,73504,73506,73509,73511,73512,73513,73518,73519,73521,73522,73523,73524,73526,73528,73529,73530,73532,73533,73538,73539,73540,73541,73542,73543,73544,73550,73551,73555,73557,73560,73561,73562,73564,73583,73585,73587,73590,73595,73596,73599,73600,73602,73603,73604,73605,73606,73608,73609,73615,73616,73618,73619,73621,73627,73630,73633,73636,73641,73642,73643,73653,73656,73663,73672,73673,73678,73681,73682,73683,73685,73691,73699,73701,73702,73704,73706,73712,73717,73721,73722,73725,73745,73746,73752,73756,73763,73766,73767,73770,73771,73772,73783,73784,73785,73787,73788,73792,73793,73794,73795,73796,73799,73805,73826,73829,73830,73832,73866,73870,74802,74804,74828,98326,98328,118960,119321,121216,121255,121256") == "f7a16ef52b33c75407d1fc81057bc69e187d551e" || block_image_verify(map_partition("system_ext"), package_extract_file("system_ext.transfer.list"), "system_ext.new.dat", "system_ext.patch.dat")) then
ui_print("Verified system_ext image...");
else
check_first_block(map_partition("system_ext"));
ifelse (block_image_recover(map_partition("system_ext"), "1866,1,31,40,44,48,49,57,63,64,65,81,87,88,89,148,152,157,158,719,721,778,782,797,798,827,833,834,835,1724,1730,1753,1754,1761,1767,1768,1769,1997,2001,2010,2011,2042,2048,2049,2050,2246,2250,2254,2255,2259,2263,2268,2269,2274,2275,2299,2305,2306,2307,2313,2319,2320,2321,2324,2325,2337,2343,2344,2345,2356,2357,2363,2367,2371,2372,2377,2383,2387,2388,2397,2403,2404,2405,2418,2424,2425,2426,2438,2444,2445,2446,2449,2456,2464,2471,2539,2546,2552,2559,2595,2600,2620,2627,2646,2653,2671,2672,2882,2884,2893,2894,2906,2907,2908,2909,2910,2911,2920,2921,2944,2945,2993,2998,3001,3004,3007,3010,3013,3015,3019,3020,3024,3027,3031,3032,3049,3112,3555,3557,3561,3565,3566,3570,3575,3577,3582,3586,3587,3591,3592,3596,3597,3601,3602,3606,3607,3611,3612,3616,3617,3621,3622,3624,3631,3635,3636,3640,3641,3645,3646,3650,3651,3655,3656,3660,3661,3665,3666,3668,3669,3673,3674,3678,3679,3681,3682,3686,3687,3691,3692,3696,3697,3701,3702,3706,3707,3709,3713,3717,3718,3722,3723,3725,3726,3728,3729,3733,3734,3738,3739,3741,3742,3746,3747,3751,3752,3756,3757,3761,3762,3764,3765,3769,3770,3772,3776,3793,3798,3832,3835,3948,6360,6361,6644,7314,7596,7597,8786,8787,9934,9935,11114,11115,11165,11166,11475,11476,16801,16802,16832,16833,17022,17023,17083,17084,17263,17264,17384,17385,17593,17594,22486,22487,22489,22490,22519,22520,22713,22714,22887,22888,22913,22914,22931,22932,23008,23009,23032,23033,23089,23090,23195,23196,28169,28170,28189,28190,28468,28469,28555,28556,28594,28595,28672,28673,28928,28929,32768,32807,35221,36248,37113,37114,44303,44304,45937,45938,45989,45990,46308,46309,48436,48437,54525,54586,56271,56273,56456,56458,56506,56508,58092,58094,65536,65565,66643,66644,66649,66650,66816,66817,66818,66819,66830,66831,66843,66844,66854,66855,66858,66859,66869,66870,66882,66883,66965,66966,67035,67036,67087,67088,67151,67153,67162,67163,67166,67168,67175,67176,67350,67351,67353,67354,67364,67366,67410,67411,67412,67413,67421,67422,67704,67705,68646,68648,69450,69451,69452,69453,69457,69458,69459,69462,69463,69464,69466,69467,69469,69470,69471,69473,69474,69476,69477,69479,69480,69482,69483,69491,69492,69493,69495,69499,69500,69501,69502,69516,69517,69518,69520,69526,69528,69533,69534,69535,69536,69539,69540,69544,69565,69566,69573,69575,69576,69577,69578,69579,69582,69586,69587,69588,69591,69592,69593,69594,69624,69627,69628,69629,69630,69631,69632,69635,69636,69639,69645,69653,69654,69655,69656,69665,69666,69667,69672,69676,69678,69679,69683,69684,69689,69690,69693,69696,69704,69710,69713,69718,69719,69720,69721,69722,69725,69727,69728,69730,69731,69738,69740,69744,69766,69767,69769,69771,69777,69778,69781,69789,69790,69814,69823,69826,69827,69833,69836,69837,69855,69856,69858,69859,69861,69866,69870,69875,69881,69883,69887,69889,69891,69892,69895,69896,69897,69898,69899,69901,69903,69905,69906,69907,69921,69923,69926,69934,69936,69937,69940,69946,69947,69948,69949,69953,69954,69959,69960,69962,69963,69966,69967,69968,69969,69970,69974,69980,69981,69991,69993,69997,69999,70002,70003,70004,70005,70006,70007,70008,70009,70011,70012,70015,70018,70034,70035,70037,70038,70042,70043,70051,70052,70061,70062,70065,70066,70067,70068,70070,70072,70092,70093,70095,70096,70110,70111,70118,70119,70129,70131,70133,70135,70136,70137,70140,70141,70144,70145,70156,70158,70159,70161,70172,70173,70175,70176,70178,70182,70187,70188,70190,70193,70194,70195,70198,70199,70206,70207,70208,70212,70221,70225,70228,70233,70234,70237,70239,70240,70241,70242,70249,70250,70254,70255,70259,70260,70261,70262,70266,70267,70270,70271,70290,70294,70298,70299,70300,70301,70303,70304,70310,70313,70315,70321,70330,70332,70333,70335,70336,70337,70339,70341,70342,70344,70346,70347,70348,70349,70350,70351,70357,70358,70363,70364,70365,70372,70377,70378,70379,70381,70385,70388,70389,70390,70391,70394,70399,70401,70404,70405,70409,70414,70416,70417,70422,70428,70430,70431,70433,70438,70439,70440,70441,70443,70445,70447,70449,70452,70455,70456,70460,70461,70463,70466,70468,70469,70470,70472,70473,70477,70482,70483,70486,70489,70494,70495,70496,70497,70515,70518,70524,70526,70530,70531,70533,70536,70537,70548,70551,70554,70557,70559,70562,70564,70568,70569,70570,70571,70572,70573,70574,70575,70576,70577,70587,70592,70594,70595,70598,70600,70604,70605,70610,70611,70632,70633,70635,70636,70637,70638,70640,70641,70643,70644,70645,70647,70649,70650,70653,70654,70658,70659,70672,70673,70676,70678,70687,70688,70691,70692,70694,70695,70702,70703,70708,70711,70715,70716,70718,70719,70724,70725,70727,70729,70732,70737,70749,70754,70766,70771,70774,70775,70776,70777,70780,70781,70782,70783,70784,70787,70789,70790,70791,70796,70797,70802,70803,70815,70816,70817,70824,70825,70826,70827,70828,70830,70833,70835,70836,70838,70839,70841,70844,70851,70852,70855,70859,70861,70862,70865,70872,70875,70876,70877,70884,70885,70887,70893,70896,70897,70900,70901,70902,70907,70909,70922,70924,70927,70930,70931,70946,70947,70958,70959,70968,70969,70970,70971,70973,70975,70980,70983,70984,70985,70986,70987,70994,70995,71004,71005,71009,71013,71015,71016,71022,71024,71025,71026,71028,71029,71034,71035,71038,71039,71042,71044,71046,71047,71053,71055,71059,71060,71065,71066,71067,71069,71071,71083,71085,71090,71095,71096,71098,71100,71103,71109,71111,71114,71116,71118,71119,71121,71126,71128,71129,71132,71133,71134,71137,71138,71139,71141,71143,71146,71152,71156,71158,71160,71161,71162,71164,71175,71176,71179,71180,71181,71182,71185,71187,71188,71192,71198,71199,71200,71201,71215,71216,71217,71219,71225,71226,71229,71230,71232,71233,71245,71249,71252,71253,71257,71261,71262,71263,71264,71265,71266,71275,71276,71281,71282,71285,71287,71288,71291,71292,71293,71295,71301,71309,71312,71313,71314,71330,71331,71335,71336,71338,71341,71343,71344,71345,71347,71350,71351,71353,71355,71358,71360,71377,71378,71380,71381,71384,71385,71386,71388,71392,71394,71395,71399,71403,71404,71410,71411,71418,71420,71421,71422,71423,71424,71425,71428,71434,71435,71437,71438,71442,71444,71452,71459,71463,71465,71469,71470,71473,71474,71475,71478,71480,71484,71487,71489,71490,71491,71492,71496,71499,71501,71502,71504,71506,71508,71510,71515,71516,71524,71525,71526,71527,71528,71529,71531,71532,71541,71544,71545,71548,71549,71551,71552,71554,71555,71560,71565,71570,71573,71574,71575,71577,71578,71580,71583,71585,71586,71591,71604,71605,71607,71608,71617,71633,71634,71636,71638,71639,71640,71644,71650,71652,71662,71664,71665,71667,71668,71669,71671,71673,71674,71677,71681,71683,71684,71699,71700,71701,71703,71707,71709,71710,71711,71715,71717,71719,71724,71729,71730,71732,71734,71738,71739,71740,71743,71744,71746,71751,71752,71760,71762,71767,71768,71772,71774,71782,71783,71785,71787,71788,71789,71792,71793,71794,71799,71805,71806,71810,71811,71812,71814,71815,71818,71823,71826,71827,71828,71829,71836,71838,71844,71846,71847,71848,71854,71855,71858,71859,71862,71863,71871,71872,71873,71874,71876,71878,71879,71881,71884,71890,71891,71899,71900,71901,71902,71904,71905,71908,71909,71911,71912,71918,71919,71920,71921,71924,71927,71929,71931,71932,71933,71935,71939,71940,71943,71944,71945,71950,71951,71961,71962,71965,71968,71971,71974,71989,71990,71992,71993,71997,71998,71999,72001,72005,72006,72008,72013,72018,72019,72021,72029,72030,72039,72041,72042,72047,72050,72055,72056,72057,72058,72061,72064,72066,72067,72073,72074,72079,72082,72084,72086,72090,72091,72092,72096,72098,72099,72104,72105,72107,72125,72128,72129,72131,72132,72133,72134,72135,72136,72137,72140,72144,72152,72155,72156,72157,72158,72160,72166,72169,72174,72175,72176,72177,72181,72182,72187,72190,72191,72194,72195,72202,72205,72206,72208,72210,72214,72215,72219,72220,72223,72229,72230,72231,72232,72233,72234,72237,72238,72239,72240,72242,72243,72244,72247,72249,72252,72253,72254,72258,72259,72260,72261,72262,72263,72264,72265,72269,72272,72286,72288,72290,72293,72297,72298,72301,72304,72305,72307,72308,72309,72311,72318,72319,72322,72324,72325,72327,72338,72341,72351,72358,72359,72360,72361,72362,72363,72369,72370,72385,72397,72398,72401,72408,72413,72416,72417,72422,72425,72429,72430,72431,72432,72436,72437,72440,72441,72445,72446,72449,72450,72459,72460,72462,72463,72472,72473,72479,72480,72481,72483,72488,72489,72491,72497,72503,72505,72507,72509,72511,72518,72521,72525,72526,72551,72552,72553,72556,72564,72565,72566,72574,72575,72578,72579,72582,72584,72585,72588,72589,72590,72592,72593,72601,72604,72605,72607,72608,72610,72612,72613,72614,72615,72620,72624,72625,72627,72628,72629,72634,72640,72641,72645,72647,72650,72653,72655,72656,72666,72667,72668,72669,72673,72676,72677,72682,72683,72687,72690,72691,72694,72695,72696,72698,72699,72701,72705,72708,72709,72712,72713,72718,72721,72722,72723,72724,72730,72735,72737,72740,72744,72762,72764,72767,72768,72769,72770,72784,72790,72791,72800,72801,72815,72816,72825,72826,72827,72829,72836,72837,72838,72839,72841,72842,72843,72846,72848,72852,72854,72855,72856,72858,72859,72860,72870,72871,72872,72873,72874,72875,72878,72880,72881,72884,72886,72887,72888,72889,72891,72894,72895,72896,72898,72899,72900,72904,72905,72906,72907,72908,72909,72912,72913,72914,72915,72932,72934,72935,72938,72939,72941,72943,72944,72950,72952,72961,72962,72965,72966,72978,72980,72983,72984,72986,72992,72994,72996,73001,73004,73005,73007,73011,73012,73014,73017,73020,73021,73022,73023,73026,73027,73037,73041,73042,73045,73047,73049,73056,73057,73060,73061,73065,73068,73070,73071,73079,73081,73090,73091,73100,73102,73104,73105,73106,73107,73109,73110,73111,73114,73117,73126,73130,73131,73132,73141,73145,73146,73148,73159,73161,73163,73164,73165,73167,73169,73170,73171,73172,73173,73175,73181,73182,73192,73193,73196,73197,73201,73202,73216,73218,73225,73227,73230,73231,73233,73234,73235,73236,73237,73239,73240,73241,73242,73244,73246,73247,73254,73255,73256,73257,73265,73266,73267,73271,73272,73273,73277,73280,73284,73287,73291,73292,73293,73296,73298,73300,73306,73312,73362,73364,73366,73367,73370,73371,73373,73374,73381,73383,73384,73387,73391,73393,73395,73397,73398,73402,73403,73408,73409,73423,73427,73428,73432,73434,73436,73445,73447,73451,73463,73465,73469,73473,73474,73475,73478,73479,73480,73481,73486,73488,73491,73492,73497,73502,73503,73504,73506,73509,73511,73512,73513,73518,73519,73521,73522,73523,73524,73526,73528,73529,73530,73532,73533,73538,73539,73540,73541,73542,73543,73544,73550,73551,73555,73557,73560,73561,73562,73564,73583,73585,73587,73590,73595,73596,73599,73600,73602,73603,73604,73605,73606,73608,73609,73615,73616,73618,73619,73621,73627,73630,73633,73636,73641,73642,73643,73653,73656,73663,73672,73673,73678,73681,73682,73683,73685,73691,73699,73701,73702,73704,73706,73712,73717,73721,73722,73725,73745,73746,73752,73756,73763,73766,73767,73770,73771,73772,73783,73784,73785,73787,73788,73792,73793,73794,73795,73796,73799,73805,73826,73829,73830,73832,73866,73870,74802,74804,74828,98326,98328,118960,119321,121216,121255,121256") && block_image_verify(map_partition("system_ext"), package_extract_file("system_ext.transfer.list"), "system_ext.new.dat", "system_ext.patch.dat"), ui_print("system_ext recovered successfully."), abort("E2004: system_ext partition fails to recover"));
endif;

# ---- start making changes here ----


# ---- radio update tasks ----

ui_print("Patching firmware images...");
package_extract_file("firmware-update/cmnlib64.mbn", "/dev/block/bootdevice/by-name/cmnlib64");
package_extract_file("firmware-update/imagefv.elf", "/dev/block/bootdevice/by-name/ImageFv");
package_extract_file("firmware-update/cmnlib.mbn", "/dev/block/bootdevice/by-name/cmnlib");
package_extract_file("firmware-update/hyp.mbn", "/dev/block/bootdevice/by-name/hyp");
package_extract_file("firmware-update/km4.mbn", "/dev/block/bootdevice/by-name/keymaster");
package_extract_file("firmware-update/tz.mbn", "/dev/block/bootdevice/by-name/tz");
package_extract_file("firmware-update/featenabler.mbn", "/dev/block/bootdevice/by-name/featenabler");
package_extract_file("firmware-update/xbl_config.elf", "/dev/block/bootdevice/by-name/xbl_config");
package_extract_file("firmware-update/BTFM.bin", "/dev/block/bootdevice/by-name/bluetooth");
package_extract_file("firmware-update/uefi_sec.mbn", "/dev/block/bootdevice/by-name/uefisecapp");
package_extract_file("firmware-update/NON-HLOS.bin", "/dev/block/bootdevice/by-name/modem");
package_extract_file("firmware-update/qupv3fw.elf", "/dev/block/bootdevice/by-name/qupfw");
package_extract_file("firmware-update/abl.elf", "/dev/block/bootdevice/by-name/abl");
package_extract_file("firmware-update/devcfg.mbn", "/dev/block/bootdevice/by-name/devcfg");
package_extract_file("firmware-update/storsec.mbn", "/dev/block/bootdevice/by-name/storsec");
package_extract_file("firmware-update/xbl.elf", "/dev/block/bootdevice/by-name/xbl");
package_extract_file("firmware-update/rpm.mbn", "/dev/block/bootdevice/by-name/rpm");
package_extract_file("firmware-update/cmnlib64.mbn", "/dev/block/bootdevice/by-name/cmnlib64bak");
package_extract_file("firmware-update/imagefv.elf", "/dev/block/bootdevice/by-name/ImageFvbak");
package_extract_file("firmware-update/cmnlib.mbn", "/dev/block/bootdevice/by-name/cmnlibbak");
package_extract_file("firmware-update/hyp.mbn", "/dev/block/bootdevice/by-name/hypbak");
package_extract_file("firmware-update/km4.mbn", "/dev/block/bootdevice/by-name/keymasterbak");
package_extract_file("firmware-update/tz.mbn", "/dev/block/bootdevice/by-name/tzbak");
package_extract_file("firmware-update/xbl_config.elf", "/dev/block/bootdevice/by-name/xbl_configbak");
package_extract_file("firmware-update/uefi_sec.mbn", "/dev/block/bootdevice/by-name/uefisecappbak");
package_extract_file("firmware-update/qupv3fw.elf", "/dev/block/bootdevice/by-name/qupfwbak");
package_extract_file("firmware-update/abl.elf", "/dev/block/bootdevice/by-name/ablbak");
package_extract_file("firmware-update/devcfg.mbn", "/dev/block/bootdevice/by-name/devcfgbak");
package_extract_file("firmware-update/storsec.mbn", "/dev/block/bootdevice/by-name/storsecbak");
package_extract_file("firmware-update/xbl.elf", "/dev/block/bootdevice/by-name/xblbak");
package_extract_file("firmware-update/rpm.mbn", "/dev/block/bootdevice/by-name/rpmbak");

# --- Start patching dynamic partitions ---


# Update dynamic partition metadata

assert(update_dynamic_partitions(package_extract_file("dynamic_partitions_op_list")));

# Patch partition system

ui_print("Patching system image after verification.");
show_progress(0.600000, 0);
block_image_update(map_partition("system"), package_extract_file("system.transfer.list"), "system.new.dat", "system.patch.dat") ||
  abort("E1001: Failed to update system image.");

# Patch partition vendor

ui_print("Patching vendor image after verification.");
show_progress(0.100000, 0);
block_image_update(map_partition("vendor"), package_extract_file("vendor.transfer.list"), "vendor.new.dat", "vendor.patch.dat") ||
  abort("E2001: Failed to update vendor image.");

# Patch partition product

ui_print("Patching product image after verification.");
show_progress(0.100000, 0);
block_image_update(map_partition("product"), package_extract_file("product.transfer.list"), "product.new.dat", "product.patch.dat") ||
  abort("E2001: Failed to update product image.");

# Patch partition system_ext

ui_print("Patching system_ext image after verification.");
show_progress(0.100000, 0);
block_image_update(map_partition("system_ext"), package_extract_file("system_ext.transfer.list"), "system_ext.new.dat", "system_ext.patch.dat") ||
  abort("E2001: Failed to update system_ext image.");

# --- End patching dynamic partitions ---

ui_print("Patching boot image...");
show_progress(0.100000, 10);
patch_partition(concat("EMMC:","/dev/block/bootdevice/by-name/boot",":100663296:4dce05d87c4055238568f705f4f757eabdaf91ff"),
                concat("EMMC:","/dev/block/bootdevice/by-name/boot",":100663296:5d8ac76394f16239bc004540db57d9b79724a2da"),
                package_extract_file("boot.img.p")) ||
    abort(concat(        "E3008: Failed to apply patch to ",concat("EMMC:","/dev/block/bootdevice/by-name/boot",":100663296:5d8ac76394f16239bc004540db57d9b79724a2da")));

# ---- radio update tasks 2 ----

ui_print("Patching vbmeta dtbo logo binimages...");
package_extract_file("firmware-update/dtbo.img", "/dev/block/bootdevice/by-name/dtbo");
package_extract_file("firmware-update/vbmeta.img", "/dev/block/bootdevice/by-name/vbmeta");
package_extract_file("firmware-update/vbmeta_system.img", "/dev/block/bootdevice/by-name/vbmeta_system");
set_progress(1.000000);
