getprop("ro.product.device") == "monet" || abort("E3004: This package is for \"monet\" devices; this is a \"" + getprop("ro.product.device") + "\".");
ui_print("Source: Xiaomi/monet_eea/monet:11/RKQ1.200826.002/V12.5.2.0.RJIEUXM:user/release-keys");
ui_print("Target: Xiaomi/monet_eea/monet:11/RKQ1.200826.002/V12.5.5.0.RJIEUXM:user/release-keys");
ui_print("Verifying current system...");
getprop("ro.build.fingerprint") == "Xiaomi/monet_eea/monet:11/RKQ1.200826.002/V12.5.2.0.RJIEUXM:user/release-keys" ||
    getprop("ro.build.fingerprint") == "Xiaomi/monet_eea/monet:11/RKQ1.200826.002/V12.5.5.0.RJIEUXM:user/release-keys" ||
    abort("E3001: Package expects build fingerprint of Xiaomi/monet_eea/monet:11/RKQ1.200826.002/V12.5.2.0.RJIEUXM:user/release-keys or Xiaomi/monet_eea/monet:11/RKQ1.200826.002/V12.5.5.0.RJIEUXM:user/release-keys; this device has " + getprop("ro.build.fingerprint") + ".");
patch_partition_check(concat("EMMC:","/dev/block/bootdevice/by-name/boot",":134217728:238281123879d95928ceafaef99068981bb93316"),
                      concat("EMMC:","/dev/block/bootdevice/by-name/boot",":134217728:1c993f15f2d7538c277449ca91541f8a1f53943c")) ||
    abort(concat("E3005: \"",concat("EMMC:","/dev/block/bootdevice/by-name/boot",":134217728:238281123879d95928ceafaef99068981bb93316"),"\" or \"",concat("EMMC:","/dev/block/bootdevice/by-name/boot",":134217728:1c993f15f2d7538c277449ca91541f8a1f53943c"),"\" has unexpected contents."));
apply_patch_space(134217728) || abort("E3006: Not enough free space on /cache to apply patches.");
if (range_sha1(map_partition("system"), "1028,1,35,45,55,57,61,89,90,21343,21344,21374,21375,27539,27540,28954,39982,50988,56669,56676,56677,57980,57981,59102,59103,60833,60834,61669,61670,62877,62878,63029,63030,63954,63955,65536,65555,68338,68339,69324,69325,70690,70691,71140,71141,73310,73311,73572,73573,73665,73666,73916,73917,74133,74135,74273,74277,74285,74286,74298,74302,74306,74307,75741,75747,75781,75782,75788,75794,75795,75796,75801,75807,75808,75809,77907,77908,78532,78536,78576,78577,79009,79026,79043,79044,79058,79059,79144,79146,79151,79153,79235,79236,79279,79280,79340,79345,79422,79426,79427,79431,79486,79489,79490,79493,79519,79521,79534,79535,79541,79542,79543,79546,79677,79678,80146,80147,82075,82077,82085,82086,82108,82109,82113,82114,82547,82548,82672,82673,82704,82710,82711,82712,83021,83025,83033,83034,83154,83160,83161,84528,87899,87900,88846,88850,88889,88890,88904,88910,88911,88912,88918,88924,88925,88926,90976,90977,92916,92920,92970,92971,94059,94063,94084,94085,94214,94218,94224,94225,94703,94707,94723,94724,98304,98325,100599,100603,100695,100696,100723,100724,100972,100973,101503,101509,101510,101511,103264,103268,103311,103312,103316,103322,103323,103324,103355,103361,103362,103363,105053,105057,105081,105082,105106,105107,105109,105110,105111,105112,105113,105114,105144,105145,108470,108474,108505,108506,110565,110569,110595,110596,110625,110626,112212,112216,112260,114378,114729,114731,114732,114733,114766,114770,114787,114788,114793,114794,115244,115248,115650,115651,116341,116345,116360,116361,118352,118356,118396,118397,118558,118562,118567,118568,118979,118983,118996,118997,119034,119035,121733,121734,127852,127856,127943,127944,129365,129369,129396,129397,131072,131091,132203,132204,133152,133156,133187,133188,133214,133215,138066,138070,138096,138097,139890,139894,139932,139933,139974,139980,139986,144330,144351,144352,147613,147614,149654,149658,149687,149688,150813,150819,150842,150843,151020,151021,154739,154740,155536,155537,157480,157484,157529,157530,159451,159455,159485,159486,160103,160107,160122,160123,162090,162094,162122,162123,163840,163861,183883,183884,188038,188039,191109,191113,191281,191282,191394,191395,191482,191483,196608,196627,204921,204922,205153,205157,205164,206055,206077,206078,206088,206094,206098,206099,211601,211602,216099,216103,216171,216172,216212,216213,218539,218543,218571,218572,218582,218583,218586,218592,218597,218598,222471,222475,222511,222512,222540,222541,222543,222547,222548,222549,222593,222601,222602,222603,224467,224473,224515,224516,224917,224923,224933,224934,224965,224971,224972,224973,225016,225022,225023,225024,227821,227822,228838,228842,228889,228890,228972,228976,228980,228981,229376,229397,231555,231556,232794,232800,232801,232802,233368,233372,233387,233388,234611,234615,234632,234633,234641,234642,234956,234957,234958,235034,242498,242499,242507,242513,242514,242515,243739,243743,243765,245433,245450,245451,246507,246508,248093,248097,248125,248126,249016,249020,249046,249047,249054,249060,249061,249062,249067,249071,249076,249077,249081,249082,249097,249103,249104,249105,249129,249135,249136,249137,252377,252381,252429,252430,252778,252782,252794,252795,254173,254179,254198,254199,255677,255681,255697,255698,255708,255709,256686,256690,257624,257625,258899,258903,258929,258930,262144,262163,263779,263780,264816,264817,265944,265945,267633,267637,267720,267721,267757,267761,270300,270304,270318,270319,270847,270851,270858,270859,273656,273663,273697,273698,274056,274057,274709,274727,274798,274799,276494,276495,279772,279773,282396,282401,282402,282403,282404,282405,282406,282407,282408,282409,282410,282411,282412,282413,282414,282415,282416,282417,282418,282419,282420,282421,282422,282423,282424,282425,282426,282427,282428,282429,282430,282431,282432,282433,282434,282435,282436,282437,282438,282439,282440,282441,282442,282443,282444,282445,282446,282447,282448,282449,282450,282451,282452,282453,282454,282455,282456,282457,282458,282459,282460,282461,282462,282463,282464,282465,282466,282467,282468,282469,282470,282471,282472,282473,282474,282475,282476,282477,282478,282479,282480,282481,282482,282483,282484,282485,282486,282487,282488,282489,282490,282491,282492,282493,282494,282495,282496,282497,282498,282499,282500,282501,282502,282503,282504,282505,282506,282507,282508,282509,282510,282511,282512,282513,282514,282515,282516,282517,282518,282519,282520,282521,282522,282523,282524,282525,282526,282527,282528,282529,282530,282531,282532,282533,282534,282535,282536,282537,282538,282539,282540,282541,282542,282543,282544,282545,282546,282547,282548,282549,282550,282551,282552,282553,282554,282555,282556,282557,282558,282559,282560,282561,282562,282563,282564,282565,282566,282567,282568,282569,282570,282571,282572,282573,282574,282575,282576,282577,282578,282579,282580,282581,282582,282583,282584,282585,282586,282587,282588,282589,282590,282591,282592,282593,282594,282595,282596,282597,282598,282599,282600,282601,282602,282603,282604,282605,282606,282607,282608,282609,282610,282611,282612,282613,282614,282615,282616,282617,282618,282619,282620,282621,282622,282623,282624,282625,282626,282627,282628,282629,282630,282631,282632,282633,282634,282635,282636,282637,282638,282639,282640,282641,282642,282643,282644,282645,282646,282647,282648,282649,282650,282651,282652,282653,282654,282655,282656,282657,282658,282659,282660,282661,282662,282663,282664,282665,282666,282667,282668,282669,282670,282671,282672,282673,282674,282675,282676,282677,282678,282679,282680,282681,282682,282683,282684,282685,282686,282687,282688,282689,282690,282691,282692,282693,282694,282695,282696,282697,282698,282699,282700,282701,282702,282703,282704,282705,282706,282707,282708,282709,282710,282711,282712,282713,282714,282715,282716,282717,282718,282719,282720,282721,282722,282723,282724,282725,282726,282727,282728,282729,282730,282731,282732,282733,282734,282735,282736,282737,282738,282739,282740,282741,282742,282743,282744,282745,282746,282747,282748,282749,282750,282751,282752,282753,282754,282755,282756,282757,282758,282759,282760,282761,282762,282763,282764,282765,282766,282767,282768,282769,282770,282771,282772,282773,282774,282775,282776,282777,282778,282779,282780,282781,282782,282783,282784,282785,282786,282787,282788,282789,282790,282791,282792,282793,282794,282795,282796,282797,282798,282799,282800,282801,282802,282803,282804,282805,282806,282807,282808,282809,282810,282811,282812,282813,282814,282815,282816,282817,282818,282819,282820,282821,282822,282823,282824,282825,282826,282827,282828,282829,282830,282831,282832,282833,282834,282835,282836,282837,282838,282839,282840,282841,282842,282843,282844,282846,282852,282853,283172,283173,283175,361320,361503,361560,363033,363034,363332,363333,364844,364845,365432,365646,368543,368544,368702,368703,369546,369547,369897,369898,370789,370790,374441,374442,377229,377230,377548,377549,377653,377654,382306,382307,382368,382369,385411,385412,388224,655376,655379,680710,682772,693591,693739,693740") == "981bca8bd016f3aebbef22a3bea83c4053ed2d18" || 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"), "1028,1,35,45,55,57,61,89,90,21343,21344,21374,21375,27539,27540,28954,39982,50988,56669,56676,56677,57980,57981,59102,59103,60833,60834,61669,61670,62877,62878,63029,63030,63954,63955,65536,65555,68338,68339,69324,69325,70690,70691,71140,71141,73310,73311,73572,73573,73665,73666,73916,73917,74133,74135,74273,74277,74285,74286,74298,74302,74306,74307,75741,75747,75781,75782,75788,75794,75795,75796,75801,75807,75808,75809,77907,77908,78532,78536,78576,78577,79009,79026,79043,79044,79058,79059,79144,79146,79151,79153,79235,79236,79279,79280,79340,79345,79422,79426,79427,79431,79486,79489,79490,79493,79519,79521,79534,79535,79541,79542,79543,79546,79677,79678,80146,80147,82075,82077,82085,82086,82108,82109,82113,82114,82547,82548,82672,82673,82704,82710,82711,82712,83021,83025,83033,83034,83154,83160,83161,84528,87899,87900,88846,88850,88889,88890,88904,88910,88911,88912,88918,88924,88925,88926,90976,90977,92916,92920,92970,92971,94059,94063,94084,94085,94214,94218,94224,94225,94703,94707,94723,94724,98304,98325,100599,100603,100695,100696,100723,100724,100972,100973,101503,101509,101510,101511,103264,103268,103311,103312,103316,103322,103323,103324,103355,103361,103362,103363,105053,105057,105081,105082,105106,105107,105109,105110,105111,105112,105113,105114,105144,105145,108470,108474,108505,108506,110565,110569,110595,110596,110625,110626,112212,112216,112260,114378,114729,114731,114732,114733,114766,114770,114787,114788,114793,114794,115244,115248,115650,115651,116341,116345,116360,116361,118352,118356,118396,118397,118558,118562,118567,118568,118979,118983,118996,118997,119034,119035,121733,121734,127852,127856,127943,127944,129365,129369,129396,129397,131072,131091,132203,132204,133152,133156,133187,133188,133214,133215,138066,138070,138096,138097,139890,139894,139932,139933,139974,139980,139986,144330,144351,144352,147613,147614,149654,149658,149687,149688,150813,150819,150842,150843,151020,151021,154739,154740,155536,155537,157480,157484,157529,157530,159451,159455,159485,159486,160103,160107,160122,160123,162090,162094,162122,162123,163840,163861,183883,183884,188038,188039,191109,191113,191281,191282,191394,191395,191482,191483,196608,196627,204921,204922,205153,205157,205164,206055,206077,206078,206088,206094,206098,206099,211601,211602,216099,216103,216171,216172,216212,216213,218539,218543,218571,218572,218582,218583,218586,218592,218597,218598,222471,222475,222511,222512,222540,222541,222543,222547,222548,222549,222593,222601,222602,222603,224467,224473,224515,224516,224917,224923,224933,224934,224965,224971,224972,224973,225016,225022,225023,225024,227821,227822,228838,228842,228889,228890,228972,228976,228980,228981,229376,229397,231555,231556,232794,232800,232801,232802,233368,233372,233387,233388,234611,234615,234632,234633,234641,234642,234956,234957,234958,235034,242498,242499,242507,242513,242514,242515,243739,243743,243765,245433,245450,245451,246507,246508,248093,248097,248125,248126,249016,249020,249046,249047,249054,249060,249061,249062,249067,249071,249076,249077,249081,249082,249097,249103,249104,249105,249129,249135,249136,249137,252377,252381,252429,252430,252778,252782,252794,252795,254173,254179,254198,254199,255677,255681,255697,255698,255708,255709,256686,256690,257624,257625,258899,258903,258929,258930,262144,262163,263779,263780,264816,264817,265944,265945,267633,267637,267720,267721,267757,267761,270300,270304,270318,270319,270847,270851,270858,270859,273656,273663,273697,273698,274056,274057,274709,274727,274798,274799,276494,276495,279772,279773,282396,282401,282402,282403,282404,282405,282406,282407,282408,282409,282410,282411,282412,282413,282414,282415,282416,282417,282418,282419,282420,282421,282422,282423,282424,282425,282426,282427,282428,282429,282430,282431,282432,282433,282434,282435,282436,282437,282438,282439,282440,282441,282442,282443,282444,282445,282446,282447,282448,282449,282450,282451,282452,282453,282454,282455,282456,282457,282458,282459,282460,282461,282462,282463,282464,282465,282466,282467,282468,282469,282470,282471,282472,282473,282474,282475,282476,282477,282478,282479,282480,282481,282482,282483,282484,282485,282486,282487,282488,282489,282490,282491,282492,282493,282494,282495,282496,282497,282498,282499,282500,282501,282502,282503,282504,282505,282506,282507,282508,282509,282510,282511,282512,282513,282514,282515,282516,282517,282518,282519,282520,282521,282522,282523,282524,282525,282526,282527,282528,282529,282530,282531,282532,282533,282534,282535,282536,282537,282538,282539,282540,282541,282542,282543,282544,282545,282546,282547,282548,282549,282550,282551,282552,282553,282554,282555,282556,282557,282558,282559,282560,282561,282562,282563,282564,282565,282566,282567,282568,282569,282570,282571,282572,282573,282574,282575,282576,282577,282578,282579,282580,282581,282582,282583,282584,282585,282586,282587,282588,282589,282590,282591,282592,282593,282594,282595,282596,282597,282598,282599,282600,282601,282602,282603,282604,282605,282606,282607,282608,282609,282610,282611,282612,282613,282614,282615,282616,282617,282618,282619,282620,282621,282622,282623,282624,282625,282626,282627,282628,282629,282630,282631,282632,282633,282634,282635,282636,282637,282638,282639,282640,282641,282642,282643,282644,282645,282646,282647,282648,282649,282650,282651,282652,282653,282654,282655,282656,282657,282658,282659,282660,282661,282662,282663,282664,282665,282666,282667,282668,282669,282670,282671,282672,282673,282674,282675,282676,282677,282678,282679,282680,282681,282682,282683,282684,282685,282686,282687,282688,282689,282690,282691,282692,282693,282694,282695,282696,282697,282698,282699,282700,282701,282702,282703,282704,282705,282706,282707,282708,282709,282710,282711,282712,282713,282714,282715,282716,282717,282718,282719,282720,282721,282722,282723,282724,282725,282726,282727,282728,282729,282730,282731,282732,282733,282734,282735,282736,282737,282738,282739,282740,282741,282742,282743,282744,282745,282746,282747,282748,282749,282750,282751,282752,282753,282754,282755,282756,282757,282758,282759,282760,282761,282762,282763,282764,282765,282766,282767,282768,282769,282770,282771,282772,282773,282774,282775,282776,282777,282778,282779,282780,282781,282782,282783,282784,282785,282786,282787,282788,282789,282790,282791,282792,282793,282794,282795,282796,282797,282798,282799,282800,282801,282802,282803,282804,282805,282806,282807,282808,282809,282810,282811,282812,282813,282814,282815,282816,282817,282818,282819,282820,282821,282822,282823,282824,282825,282826,282827,282828,282829,282830,282831,282832,282833,282834,282835,282836,282837,282838,282839,282840,282841,282842,282843,282844,282846,282852,282853,283172,283173,283175,361320,361503,361560,363033,363034,363332,363333,364844,364845,365432,365646,368543,368544,368702,368703,369546,369547,369897,369898,370789,370790,374441,374442,377229,377230,377548,377549,377653,377654,382306,382307,382368,382369,385411,385412,388224,655376,655379,680710,682772,693591,693739,693740") && 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"), "1016,1,28,38,42,47,48,127,135,141,142,1816,1820,2297,2298,2303,2307,2311,2312,2556,2560,2565,2566,2568,2572,2574,2575,2598,2599,2635,2639,2689,2690,2701,2707,2708,2709,2712,2718,2719,2720,2723,2724,4171,4222,4317,4318,5795,6599,6824,6825,16189,16190,17200,17202,17203,17204,17206,17209,17210,17211,17213,17215,17216,17217,17219,17221,17222,17223,17225,17227,17228,17229,17231,17233,17234,17235,17237,17239,17244,17246,17249,17251,17254,17256,17264,17266,17269,17271,17272,17273,17275,17277,17278,17279,17282,17284,17285,17286,17288,17290,17291,17292,17294,17296,17297,17298,17300,17302,17303,17304,17306,17308,17309,17310,17319,17320,17339,17340,17341,17342,17346,17347,17348,17349,17352,17353,17354,17355,17358,17359,17360,17361,17364,17365,17366,17367,17371,17372,17373,17374,17377,17378,17379,17380,17384,17385,17389,17390,17394,17395,17399,17400,17404,17405,17406,17407,17416,17417,17418,17419,17422,17423,17424,17425,17428,17429,17430,17431,17434,17435,17436,17437,17439,17441,17733,17734,17849,17850,18860,18865,32768,32794,61899,61900,62528,62530,65536,65555,68721,68722,75793,75794,75893,75895,76695,76696,77926,77928,77976,77977,82596,82597,83231,83233,83845,83847,84401,84403,84980,84981,85887,85888,85896,85897,85984,85985,90316,90317,90933,90934,92661,92662,98304,98325,108088,108089,108093,108095,108112,108113,108148,108149,108158,108159,108302,108303,108353,108354,108360,108361,109066,109067,109121,109122,109147,109148,109181,109182,109288,109289,109324,109325,109330,109331,109823,109824,113846,113847,113864,113865,113914,113915,113927,113928,113990,113991,113993,113995,114059,114060,114130,114131,114198,114199,114201,114202,114204,114205,114264,114266,114268,114269,114333,114334,114404,114405,114472,114473,114475,114476,114478,114484,114486,114487,114489,114491,114493,114504,114564,114565,114567,114568,114645,114646,114723,114724,114734,114735,114801,114802,114878,114879,114958,114959,115035,115036,115112,115113,115189,115190,115200,115201,115204,115205,115268,115269,115344,115345,115422,115423,115499,115500,115572,115573,115575,115576,115588,115594,115654,115655,115657,115658,115667,115668,115733,115734,115811,115812,115888,115889,115963,115964,116040,116041,116116,116117,116191,116192,116269,116270,116277,116278,116348,116349,116426,116427,116504,116505,116578,116579,116581,116582,116587,116588,116651,116652,116654,116655,116720,116721,116723,116724,116790,116791,116793,116794,116862,116863,116865,116866,116931,116932,116935,116936,116941,116942,117007,117008,117082,117083,117155,117156,117157,117158,117234,117235,117309,117310,117312,117313,117380,117381,117383,117384,117449,117450,117452,117453,117522,117523,117525,117526,117594,117595,117596,117597,117670,117671,117672,117673,117746,117747,117749,117750,117818,117819,117821,117822,117891,117892,117894,117896,117961,117962,117964,117965,118033,118034,118036,118037,118102,118103,118105,118106,118173,118174,118176,118177,118245,118246,118248,118249,118314,118315,118379,118380,118449,118450,118518,118519,118586,118587,118656,118657,118723,118724,118791,118792,118797,118799,118861,118862,118864,118865,118930,118931,118933,118934,119112,119113,119125,119126,119587,119589,119637,119638,129730,129731,129898,129899,130257,130258,130319,130320,130469,130470,130549,130550,130582,130583,130666,130667,130735,130736,130802,130803,130895,130896,130968,130969,131014,131015,131072,131098,131161,131162,131188,131189,131191,131192,131224,131225,131386,131387,131458,131459,131511,131512,131836,131837,131839,131840,131934,131935,132059,132060,132134,132135,132168,132169,132232,132233,132304,132305,132370,132372,132373,132375,132489,132491,132497,132499,132584,132585,133212,133213,133329,133330,133447,133448,133672,133673,133988,133989,134483,134484,134485,134486,134488,134489,134693,134702,134717,134722,135044,135045,135047,135048,135071,135072,135280,135284,135830,135834,136180,136181,136365,136366,136555,136559,136786,136787,136789,136790,136792,136793,136795,136796,137272,137273,137282,137287,137771,137772,138586,138587,139046,139047,139283,139285,139500,139501,139903,139904,140689,140691,140692,140694,140986,140987,140992,140993,141311,141312,141403,141406,141408,141409,141411,141412,141417,141418,141420,141421,141423,141424,141939,141940,142360,142361,142620,142621,142623,142624,142900,142901,142922,142923,143130,143134,143483,143484,143686,143690,144035,144036,144857,144858,144866,144870,145440,145441,146258,146259,147208,147209,147834,147835,147838,147839,147847,147848,148083,148084,148089,148090,148699,148700,148892,148893,149484,149485,149487,149488,149823,149824,149836,149837,149844,149845,149847,149848,149855,149856,150000,150001,150003,150004,150006,150007,150009,150010,150012,150013,150015,150016,150018,150019,150595,150596,150598,150599,152179,152180,152328,152330,152829,152830,152831,152832,153043,153047,153391,153392,153394,153395,153599,153603,153948,153949,154103,154104,154107,154109,154655,154656,159783,162161,163840,163870,165343,165344,165869,165884,166185,166186,167329,167352,167644,167645,171723,171725,175006,175007,178947,178948,178950,178951,186153,186154,186730,186731,187644,187645,190521,190522,191415,191499,191865,191866,196301,196304,196608,196627,198087,200581,201155,201156,202573,202574,204069,204070,206489,206491,209233,209234,209622,209623,210251,210262,210640,210641,217852,217853,217911,217912,217993,217994,218804,220988,224440,224442,225272,225273,229110,229139,229376,229403,230038,230039,231407,231408,231809,231871,239115,239116,242611,242612,242614,242615,242751,242752,242780,242781,242782,242783,243142,243143,244555,244556,244558,244559,244695,244696,245723,245724,245726,245727,245863,245864,247518,248048,250193,250194,250528,250539,250553,250564,250601,250602,250614,250615,262144,262169,265511,265512,267318,267319,268569,268570,268695,268757,277866,277867,281269,281270,284203,284205,287228,287229,287231,287232,287239,287240,287565,287566,289738,289739,290544,290545,292315,292316,294912,294934,297264,297265,306400,306401,312101,312102,312104,312105,312196,312197,312199,312200,312533,312534,320167,320168,320170,320171,320178,320179,327680,327699,329685,329687,329688,329690,329691,329693,329716,329717,329858,329859,329862,329863,329866,329867,329868,329869,329871,329872,329874,329875,329877,329878,329880,329881,329883,329884,331441,331442,331448,331450,331457,331458,333882,333883,334098,334099,335654,335655,337232,337233,338772,338773,338919,338920,346668,346669,351944,351945,351951,351953,351960,351961,352288,352289,360448,360467,368033,368034,374122,374123,380328,380329,380333,380334,380341,380342,381137,381138,381160,381161,381981,381983,382151,382152,383652,383658,383659,383660,385414,385416,389979,389980,392032,392033,392059,392060,392526,392527,393216,393223,395056,395058,395078,395079,395110,399474,400678,407030,407122,407123") == "da27b616c49ca79bb20d93bcc171b059d4ebb6c1" || 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"), "1016,1,28,38,42,47,48,127,135,141,142,1816,1820,2297,2298,2303,2307,2311,2312,2556,2560,2565,2566,2568,2572,2574,2575,2598,2599,2635,2639,2689,2690,2701,2707,2708,2709,2712,2718,2719,2720,2723,2724,4171,4222,4317,4318,5795,6599,6824,6825,16189,16190,17200,17202,17203,17204,17206,17209,17210,17211,17213,17215,17216,17217,17219,17221,17222,17223,17225,17227,17228,17229,17231,17233,17234,17235,17237,17239,17244,17246,17249,17251,17254,17256,17264,17266,17269,17271,17272,17273,17275,17277,17278,17279,17282,17284,17285,17286,17288,17290,17291,17292,17294,17296,17297,17298,17300,17302,17303,17304,17306,17308,17309,17310,17319,17320,17339,17340,17341,17342,17346,17347,17348,17349,17352,17353,17354,17355,17358,17359,17360,17361,17364,17365,17366,17367,17371,17372,17373,17374,17377,17378,17379,17380,17384,17385,17389,17390,17394,17395,17399,17400,17404,17405,17406,17407,17416,17417,17418,17419,17422,17423,17424,17425,17428,17429,17430,17431,17434,17435,17436,17437,17439,17441,17733,17734,17849,17850,18860,18865,32768,32794,61899,61900,62528,62530,65536,65555,68721,68722,75793,75794,75893,75895,76695,76696,77926,77928,77976,77977,82596,82597,83231,83233,83845,83847,84401,84403,84980,84981,85887,85888,85896,85897,85984,85985,90316,90317,90933,90934,92661,92662,98304,98325,108088,108089,108093,108095,108112,108113,108148,108149,108158,108159,108302,108303,108353,108354,108360,108361,109066,109067,109121,109122,109147,109148,109181,109182,109288,109289,109324,109325,109330,109331,109823,109824,113846,113847,113864,113865,113914,113915,113927,113928,113990,113991,113993,113995,114059,114060,114130,114131,114198,114199,114201,114202,114204,114205,114264,114266,114268,114269,114333,114334,114404,114405,114472,114473,114475,114476,114478,114484,114486,114487,114489,114491,114493,114504,114564,114565,114567,114568,114645,114646,114723,114724,114734,114735,114801,114802,114878,114879,114958,114959,115035,115036,115112,115113,115189,115190,115200,115201,115204,115205,115268,115269,115344,115345,115422,115423,115499,115500,115572,115573,115575,115576,115588,115594,115654,115655,115657,115658,115667,115668,115733,115734,115811,115812,115888,115889,115963,115964,116040,116041,116116,116117,116191,116192,116269,116270,116277,116278,116348,116349,116426,116427,116504,116505,116578,116579,116581,116582,116587,116588,116651,116652,116654,116655,116720,116721,116723,116724,116790,116791,116793,116794,116862,116863,116865,116866,116931,116932,116935,116936,116941,116942,117007,117008,117082,117083,117155,117156,117157,117158,117234,117235,117309,117310,117312,117313,117380,117381,117383,117384,117449,117450,117452,117453,117522,117523,117525,117526,117594,117595,117596,117597,117670,117671,117672,117673,117746,117747,117749,117750,117818,117819,117821,117822,117891,117892,117894,117896,117961,117962,117964,117965,118033,118034,118036,118037,118102,118103,118105,118106,118173,118174,118176,118177,118245,118246,118248,118249,118314,118315,118379,118380,118449,118450,118518,118519,118586,118587,118656,118657,118723,118724,118791,118792,118797,118799,118861,118862,118864,118865,118930,118931,118933,118934,119112,119113,119125,119126,119587,119589,119637,119638,129730,129731,129898,129899,130257,130258,130319,130320,130469,130470,130549,130550,130582,130583,130666,130667,130735,130736,130802,130803,130895,130896,130968,130969,131014,131015,131072,131098,131161,131162,131188,131189,131191,131192,131224,131225,131386,131387,131458,131459,131511,131512,131836,131837,131839,131840,131934,131935,132059,132060,132134,132135,132168,132169,132232,132233,132304,132305,132370,132372,132373,132375,132489,132491,132497,132499,132584,132585,133212,133213,133329,133330,133447,133448,133672,133673,133988,133989,134483,134484,134485,134486,134488,134489,134693,134702,134717,134722,135044,135045,135047,135048,135071,135072,135280,135284,135830,135834,136180,136181,136365,136366,136555,136559,136786,136787,136789,136790,136792,136793,136795,136796,137272,137273,137282,137287,137771,137772,138586,138587,139046,139047,139283,139285,139500,139501,139903,139904,140689,140691,140692,140694,140986,140987,140992,140993,141311,141312,141403,141406,141408,141409,141411,141412,141417,141418,141420,141421,141423,141424,141939,141940,142360,142361,142620,142621,142623,142624,142900,142901,142922,142923,143130,143134,143483,143484,143686,143690,144035,144036,144857,144858,144866,144870,145440,145441,146258,146259,147208,147209,147834,147835,147838,147839,147847,147848,148083,148084,148089,148090,148699,148700,148892,148893,149484,149485,149487,149488,149823,149824,149836,149837,149844,149845,149847,149848,149855,149856,150000,150001,150003,150004,150006,150007,150009,150010,150012,150013,150015,150016,150018,150019,150595,150596,150598,150599,152179,152180,152328,152330,152829,152830,152831,152832,153043,153047,153391,153392,153394,153395,153599,153603,153948,153949,154103,154104,154107,154109,154655,154656,159783,162161,163840,163870,165343,165344,165869,165884,166185,166186,167329,167352,167644,167645,171723,171725,175006,175007,178947,178948,178950,178951,186153,186154,186730,186731,187644,187645,190521,190522,191415,191499,191865,191866,196301,196304,196608,196627,198087,200581,201155,201156,202573,202574,204069,204070,206489,206491,209233,209234,209622,209623,210251,210262,210640,210641,217852,217853,217911,217912,217993,217994,218804,220988,224440,224442,225272,225273,229110,229139,229376,229403,230038,230039,231407,231408,231809,231871,239115,239116,242611,242612,242614,242615,242751,242752,242780,242781,242782,242783,243142,243143,244555,244556,244558,244559,244695,244696,245723,245724,245726,245727,245863,245864,247518,248048,250193,250194,250528,250539,250553,250564,250601,250602,250614,250615,262144,262169,265511,265512,267318,267319,268569,268570,268695,268757,277866,277867,281269,281270,284203,284205,287228,287229,287231,287232,287239,287240,287565,287566,289738,289739,290544,290545,292315,292316,294912,294934,297264,297265,306400,306401,312101,312102,312104,312105,312196,312197,312199,312200,312533,312534,320167,320168,320170,320171,320178,320179,327680,327699,329685,329687,329688,329690,329691,329693,329716,329717,329858,329859,329862,329863,329866,329867,329868,329869,329871,329872,329874,329875,329877,329878,329880,329881,329883,329884,331441,331442,331448,331450,331457,331458,333882,333883,334098,334099,335654,335655,337232,337233,338772,338773,338919,338920,346668,346669,351944,351945,351951,351953,351960,351961,352288,352289,360448,360467,368033,368034,374122,374123,380328,380329,380333,380334,380341,380342,381137,381138,381160,381161,381981,381983,382151,382152,383652,383658,383659,383660,385414,385416,389979,389980,392032,392033,392059,392060,392526,392527,393216,393223,395056,395058,395078,395079,395110,399474,400678,407030,407122,407123") && 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"), "324,1,15,3021,3022,3368,3369,3522,3523,5971,5972,9778,9779,10096,10097,11959,11963,12061,12062,14695,14698,14706,14707,14747,14748,22660,22661,29692,29696,29713,29716,30168,30172,31514,31515,32768,32776,33102,33103,33194,33195,34443,34444,34806,34810,35329,35330,35342,35346,35350,35351,37191,37195,37237,37238,38628,38629,40314,40315,40322,40323,40368,40369,40659,40660,40666,40667,40753,40754,40755,40756,42688,42692,42763,42764,46883,46884,54646,54647,55749,55750,64653,64654,65536,65542,68840,68843,69747,69749,72622,72623,82465,82466,92009,92016,93491,93492,98304,98312,98698,98699,109869,109870,110811,110812,110817,110818,110946,110952,110953,110954,110966,110972,110973,110974,114037,114039,126852,126853,126920,126921,128986,128988,131072,131078,144482,144483,144531,144532,145071,145072,146931,146932,151752,151753,151757,151758,151761,151762,154807,154808,160204,160205,163840,163848,164117,164118,164127,164128,164137,164138,164302,164304,164995,164996,165003,165004,165010,165011,169348,169349,169574,169576,169586,169588,169634,169636,169646,169648,169657,169658,171476,171477,171484,171486,171655,171656,171657,171658,171661,171662,171677,171678,171681,171683,171684,171686,171704,171705,171716,171717,171756,171760,171764,171768,171769,171773,171774,171790,172205,172206,172577,172578,174063,174064,175244,175246,184049,184052,186000,186001,187857,187858,189938,189939,191863,191865,193582,193583,193598,193599,194656,194657,196608,196635,203556,203558,204056,204057,205971,205973,206021,206022,206404,206406,214554,214555,217706,217707,217713,217714,217720,217721,217936,217937,219257,219259,219324,219325,219490,219492,220888,220890,221065,221069,221074,221075,221191,221193,222701,222702,224929,224930,224933,224934,224937,224938,229376,229414,233425,233427,233439,233440,233492,233494,233655,233657,233668,233670,233682,233684,233722,233723,235093,235095,235779,235781,236826,236827,237317,237319,260936,260937,262144,262179,285037,285038,285726,285727,285967,285968,286705,286706,287248,287249,287459,287460,288439,288441,288918,288919,289560,289561,290947,290948,293274,293277,294912,294920,296619,296620,303973,308791,308866,308867") == "21cb25cb7f00bfcad79b6fcf96c4915eb34eb7c9" || 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"), "324,1,15,3021,3022,3368,3369,3522,3523,5971,5972,9778,9779,10096,10097,11959,11963,12061,12062,14695,14698,14706,14707,14747,14748,22660,22661,29692,29696,29713,29716,30168,30172,31514,31515,32768,32776,33102,33103,33194,33195,34443,34444,34806,34810,35329,35330,35342,35346,35350,35351,37191,37195,37237,37238,38628,38629,40314,40315,40322,40323,40368,40369,40659,40660,40666,40667,40753,40754,40755,40756,42688,42692,42763,42764,46883,46884,54646,54647,55749,55750,64653,64654,65536,65542,68840,68843,69747,69749,72622,72623,82465,82466,92009,92016,93491,93492,98304,98312,98698,98699,109869,109870,110811,110812,110817,110818,110946,110952,110953,110954,110966,110972,110973,110974,114037,114039,126852,126853,126920,126921,128986,128988,131072,131078,144482,144483,144531,144532,145071,145072,146931,146932,151752,151753,151757,151758,151761,151762,154807,154808,160204,160205,163840,163848,164117,164118,164127,164128,164137,164138,164302,164304,164995,164996,165003,165004,165010,165011,169348,169349,169574,169576,169586,169588,169634,169636,169646,169648,169657,169658,171476,171477,171484,171486,171655,171656,171657,171658,171661,171662,171677,171678,171681,171683,171684,171686,171704,171705,171716,171717,171756,171760,171764,171768,171769,171773,171774,171790,172205,172206,172577,172578,174063,174064,175244,175246,184049,184052,186000,186001,187857,187858,189938,189939,191863,191865,193582,193583,193598,193599,194656,194657,196608,196635,203556,203558,204056,204057,205971,205973,206021,206022,206404,206406,214554,214555,217706,217707,217713,217714,217720,217721,217936,217937,219257,219259,219324,219325,219490,219492,220888,220890,221065,221069,221074,221075,221191,221193,222701,222702,224929,224930,224933,224934,224937,224938,229376,229414,233425,233427,233439,233440,233492,233494,233655,233657,233668,233670,233682,233684,233722,233723,235093,235095,235779,235781,236826,236827,237317,237319,260936,260937,262144,262179,285037,285038,285726,285727,285967,285968,286705,286706,287248,287249,287459,287460,288439,288441,288918,288919,289560,289561,290947,290948,293274,293277,294912,294920,296619,296620,303973,308791,308866,308867") && 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("odm"), "12,1,12,13,14,22,242,244,245,247,253,272,273") == "159fc3167d42b03c07462eedc49c18dde730a592" || block_image_verify(map_partition("odm"), package_extract_file("odm.transfer.list"), "odm.new.dat", "odm.patch.dat")) then
ui_print("Verified odm image...");
else
ifelse (block_image_recover(map_partition("odm"), "12,1,12,13,14,22,242,244,245,247,253,272,273") && block_image_verify(map_partition("odm"), package_extract_file("odm.transfer.list"), "odm.new.dat", "odm.patch.dat"), ui_print("odm recovered successfully."), abort("E2004: odm partition fails to recover"));
endif;
if (range_sha1(map_partition("system_ext"), "386,1,30,37,41,45,46,52,58,59,60,74,80,81,82,140,144,149,150,234,240,244,245,251,257,258,259,453,457,461,462,465,469,474,475,478,479,485,491,492,493,515,521,522,523,1258,1262,1280,1281,1285,1291,1292,1293,1295,1296,1307,1313,1314,1315,1325,1326,1331,1335,1339,1340,1344,1350,1354,1355,1362,1368,1369,1370,1382,1388,1389,1390,1392,1399,1405,1412,1417,1424,1454,1461,1480,1487,1505,1510,1527,1534,1550,1551,1642,1644,1654,1655,1667,1668,1669,1670,1671,1672,1679,1680,1703,1704,1750,1755,1758,1761,1764,1767,1770,1772,1776,1777,1781,1784,1789,1790,1793,1795,2268,2270,2274,2278,2283,2285,2290,2294,2295,2299,2300,2304,2305,2309,2310,2314,2315,2319,2320,2324,2325,2327,2334,2338,2339,2343,2344,2348,2349,2353,2354,2358,2359,2363,2364,2368,2369,2371,2372,2376,2377,2381,2382,2386,2387,2391,2392,2396,2397,2401,2402,2406,2407,2409,2413,2417,2418,2422,2423,2425,2426,2428,2429,2433,2434,2438,2439,2441,2442,2446,2447,2451,2452,2456,2457,2461,2462,2464,2465,2469,2470,2472,2476,2489,2494,2524,2527,2639,5099,5100,5234,5910,6164,6165,7412,7636,8230,8231,8289,8290,8830,8831,8881,8882,9191,9192,14373,14374,14446,14447,14455,14456,14591,14592,14596,14597,14650,14651,14661,14662,14695,14696,14715,14716,14768,14769,14914,14915,14990,14991,15137,15138,19888,19890,20029,20030,20055,20056,20152,20153,20204,20205,20216,20217,20267,20268,20343,20344,20407,20408,20670,20671,21175,21176,25050,25051,25107,25108,25532,25533,31607,32643,32768,32802,33507,33508,35094,35095,35562,35903,40188,40189,41067,41068,41119,41120,41438,41439,43499,43500,49313,49317,50999,51001,51183,51185,51233,51235,52819,52821,65536,65564,67753,67754,67759,67760,67835,67836,67988,67989,68093,68094,68105,68106,68107,68108,68576,68577,68743,68744,69819,69821,71196,71197,71400,71401,72454,72455,72460,72462,72463,72464,72468,72469,72889,72890,72944,72945,73451,73452,73739,73740,73741,73743,73871,73872,73901,73903,73999,74000,74498,74500,74530,74531,74534,74535,74536,74540,74827,74829,74833,74835,74836,74837,75078,75082,75357,98324,98327,120198,120559,122473,122513,122514") == "dfbf3d869b9f51d9f613d2d37125a0c0e1a52946" || 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"), "386,1,30,37,41,45,46,52,58,59,60,74,80,81,82,140,144,149,150,234,240,244,245,251,257,258,259,453,457,461,462,465,469,474,475,478,479,485,491,492,493,515,521,522,523,1258,1262,1280,1281,1285,1291,1292,1293,1295,1296,1307,1313,1314,1315,1325,1326,1331,1335,1339,1340,1344,1350,1354,1355,1362,1368,1369,1370,1382,1388,1389,1390,1392,1399,1405,1412,1417,1424,1454,1461,1480,1487,1505,1510,1527,1534,1550,1551,1642,1644,1654,1655,1667,1668,1669,1670,1671,1672,1679,1680,1703,1704,1750,1755,1758,1761,1764,1767,1770,1772,1776,1777,1781,1784,1789,1790,1793,1795,2268,2270,2274,2278,2283,2285,2290,2294,2295,2299,2300,2304,2305,2309,2310,2314,2315,2319,2320,2324,2325,2327,2334,2338,2339,2343,2344,2348,2349,2353,2354,2358,2359,2363,2364,2368,2369,2371,2372,2376,2377,2381,2382,2386,2387,2391,2392,2396,2397,2401,2402,2406,2407,2409,2413,2417,2418,2422,2423,2425,2426,2428,2429,2433,2434,2438,2439,2441,2442,2446,2447,2451,2452,2456,2457,2461,2462,2464,2465,2469,2470,2472,2476,2489,2494,2524,2527,2639,5099,5100,5234,5910,6164,6165,7412,7636,8230,8231,8289,8290,8830,8831,8881,8882,9191,9192,14373,14374,14446,14447,14455,14456,14591,14592,14596,14597,14650,14651,14661,14662,14695,14696,14715,14716,14768,14769,14914,14915,14990,14991,15137,15138,19888,19890,20029,20030,20055,20056,20152,20153,20204,20205,20216,20217,20267,20268,20343,20344,20407,20408,20670,20671,21175,21176,25050,25051,25107,25108,25532,25533,31607,32643,32768,32802,33507,33508,35094,35095,35562,35903,40188,40189,41067,41068,41119,41120,41438,41439,43499,43500,49313,49317,50999,51001,51183,51185,51233,51235,52819,52821,65536,65564,67753,67754,67759,67760,67835,67836,67988,67989,68093,68094,68105,68106,68107,68108,68576,68577,68743,68744,69819,69821,71196,71197,71400,71401,72454,72455,72460,72462,72463,72464,72468,72469,72889,72890,72944,72945,73451,73452,73739,73740,73741,73743,73871,73872,73901,73903,73999,74000,74498,74500,74530,74531,74534,74535,74536,74540,74827,74829,74833,74835,74836,74837,75078,75082,75357,98324,98327,120198,120559,122473,122513,122514") && 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/NON-HLOS.bin", "/dev/block/bootdevice/by-name/modem");
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/aop.mbn", "/dev/block/bootdevice/by-name/aop");
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/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/cmnlib64.mbn", "/dev/block/bootdevice/by-name/cmnlib64bak");
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/tz.mbn", "/dev/block/bootdevice/by-name/tzbak");
package_extract_file("firmware-update/aop.mbn", "/dev/block/bootdevice/by-name/aopbak");
package_extract_file("firmware-update/xbl_config.elf", "/dev/block/bootdevice/by-name/xbl_configbak");
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");

# --- 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.500000, 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 odm

ui_print("Patching odm image after verification.");
show_progress(0.100000, 0);
block_image_update(map_partition("odm"), package_extract_file("odm.transfer.list"), "odm.new.dat", "odm.patch.dat") ||
  abort("E2001: Failed to update odm 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",":134217728:238281123879d95928ceafaef99068981bb93316"),
                concat("EMMC:","/dev/block/bootdevice/by-name/boot",":134217728:1c993f15f2d7538c277449ca91541f8a1f53943c"),
                package_extract_file("boot.img.p")) ||
    abort(concat(        "E3008: Failed to apply patch to ",concat("EMMC:","/dev/block/bootdevice/by-name/boot",":134217728:1c993f15f2d7538c277449ca91541f8a1f53943c")));

# ---- 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);
