getprop("ro.product.device") == "apollo" || abort("E3004: This package is for \"apollo\" devices; this is a \"" + getprop("ro.product.device") + "\".");
ui_print("Source: Redmi/apollo/apollo:11/RKQ1.200826.002/V12.5.7.0.RJDCNXM:user/release-keys");
ui_print("Target: Redmi/apollo/apollo:11/RKQ1.200826.002/V12.5.8.0.RJDCNXM:user/release-keys");
ui_print("Verifying current system...");
getprop("ro.build.fingerprint") == "Redmi/apollo/apollo:11/RKQ1.200826.002/V12.5.7.0.RJDCNXM:user/release-keys" ||
    getprop("ro.build.fingerprint") == "Redmi/apollo/apollo:11/RKQ1.200826.002/V12.5.8.0.RJDCNXM:user/release-keys" ||
    abort("E3001: Package expects build fingerprint of Redmi/apollo/apollo:11/RKQ1.200826.002/V12.5.7.0.RJDCNXM:user/release-keys or Redmi/apollo/apollo:11/RKQ1.200826.002/V12.5.8.0.RJDCNXM:user/release-keys; this device has " + getprop("ro.build.fingerprint") + ".");
patch_partition_check(concat("EMMC:","/dev/block/bootdevice/by-name/boot",":134217728:78b75b61adc97d9e63b4211af688764437e53053"),
                      concat("EMMC:","/dev/block/bootdevice/by-name/boot",":134217728:d93c7d9f82004fe1a42332aeee2fc7fd8b8c0e4a")) ||
    abort(concat("E3005: \"",concat("EMMC:","/dev/block/bootdevice/by-name/boot",":134217728:78b75b61adc97d9e63b4211af688764437e53053"),"\" or \"",concat("EMMC:","/dev/block/bootdevice/by-name/boot",":134217728:d93c7d9f82004fe1a42332aeee2fc7fd8b8c0e4a"),"\" has unexpected contents."));
apply_patch_space(134217728) || abort("E3006: Not enough free space on /cache to apply patches.");
if (range_sha1(map_partition("system"), "1796,1,29,40,50,52,56,1989,1990,2035,2036,2060,2061,23318,23319,24037,24038,25176,25177,31341,31342,31490,31491,32432,32433,32768,32783,36713,36714,37552,37553,38907,38908,39343,39344,40582,40583,40831,40832,42252,42253,42347,42348,42544,42545,42755,53762,64768,68415,68422,68423,69606,69607,69924,69926,70285,70289,70302,70303,70467,70471,70479,70480,70489,70493,70497,70498,71759,71765,71799,71800,71806,71812,71813,71814,71819,71825,71826,71827,72792,72793,73443,73444,75375,75376,75377,75378,75386,75387,75409,75410,75414,75415,75848,75849,75860,75866,75867,75868,76064,76068,76076,76077,76080,76081,76101,76107,76108,77373,80110,80111,80174,80175,80808,80812,80852,80870,80877,80883,80884,80885,86932,86933,88970,88974,89037,89038,89167,89171,89177,89178,89311,89315,89322,89323,92935,92936,93646,93650,93716,93717,94080,94081,94085,94091,94092,94093,94124,94130,94131,94132,95587,95591,95616,95617,95641,95642,95644,95645,95646,95647,95648,95649,95679,95680,98304,98319,98815,98819,98850,98851,100910,100914,100940,100941,102696,102697,106893,106895,112962,112963,112968,112974,112975,112976,113908,113910,113911,113912,113922,113928,113929,113930,113944,113948,113965,113966,113971,113972,114600,114604,114620,114621,117331,117335,117382,117383,117398,117399,117557,117561,117566,117567,117835,117836,118247,118251,118264,118265,122662,122663,123197,123198,127035,127036,127038,127039,131072,131085,140888,140890,140892,140893,140897,140898,140900,140902,141322,141323,144075,144076,145540,145544,145571,145572,149435,149439,149464,149465,151776,151777,152522,152526,152582,152583,163756,163757,163840,163855,169733,169734,169842,169843,169844,169863,169864,169870,172865,172869,172955,172956,173014,173015,173721,173722,174140,174141,176708,176709,178469,178473,178511,178512,178553,178559,178565,178566,181169,181170,181457,181463,181504,181505,184865,184866,185059,185060,186189,186195,186218,186219,186396,186397,187091,187092,187720,187724,187746,187747,188569,188570,192401,192402,194366,194370,194398,194399,196608,196621,196683,196684,197499,197503,197532,197533,197726,197730,197736,197737,204305,204306,204309,204310,215148,215149,217382,217383,224210,224211,225444,225448,225659,225660,225795,225796,226602,226608,226630,226631,229376,229391,231141,231142,231677,231683,231760,231761,233473,233474,234506,234510,234535,234536,234550,234551,234584,234590,234591,234592,234595,234601,234606,234607,234944,234945,238129,238130,238192,238196,238201,238202,238246,238254,238255,238256,239912,239918,239959,239960,240209,240215,240225,240226,240245,240251,240252,240253,240296,240302,240303,240304,242682,242683,243000,243004,243043,243044,243161,243165,243170,243171,243240,243244,243248,243249,243500,243504,243513,243514,252946,252947,254711,254715,258312,258313,259498,259499,259510,259516,259517,259518,260030,260034,260049,260050,262144,262157,263051,263052,264180,264184,270458,270464,270574,270575,274778,274779,276809,276813,276870,276871,276906,276907,276915,276921,276922,276923,277574,277575,278219,278223,278245,278246,278980,278984,279001,279002,279013,279019,279020,279021,280803,280804,281291,281295,282162,282163,283219,283220,284855,284859,284887,284888,294912,294927,297546,297547,303829,303831,303838,303839,305769,305770,312846,312847,312897,312898,321335,321337,322793,322794,324165,324166,325056,325060,325086,325087,325153,325157,325162,325163,325168,325172,325177,325178,325182,325183,325198,325204,325205,325206,325608,325612,325616,325617,325641,325647,325648,325649,327680,327693,327951,327952,329100,329104,329174,329175,329178,329184,329188,329189,329537,329541,329553,329554,330493,330499,330521,330522,330548,330554,330558,330559,332020,332024,332051,332052,333525,333526,334619,334623,334662,334663,334669,334670,335508,335511,339968,339972,342169,342170,347001,347002,348037,348038,349162,349163,350814,350818,350901,350902,350938,350942,353148,353152,353166,353167,353562,353566,353573,353574,354534,354535,357265,357272,357307,357308,357667,357668,358319,358337,358408,358409,360104,360105,360448,360461,363408,363409,366052,366057,366058,366059,366060,366061,366062,366063,366064,366065,366066,366067,366068,366070,367534,367535,368282,368283,370211,370213,370320,370322,373698,373699,374332,374333,375950,375953,378915,378916,381326,381327,384301,384302,390078,390079,390441,390442,390748,390749,393216,393229,394797,394798,395817,395818,396679,396683,396720,396721,399342,399343,399690,399691,399853,399855,416654,416655,420466,420467,420669,420670,425984,425997,426240,426241,427721,427722,427726,427727,433493,433494,434077,434078,458147,458148,458752,458765,459582,459583,461958,461959,465344,465345,467337,467338,469983,469984,469985,469986,471222,471223,475835,475836,478247,478248,478596,478597,485163,485164,487448,487449,490417,490418,490419,490420,490960,490961,491520,491533,491769,491770,492360,492361,497465,497718,501126,501135,502534,502545,511276,511277,511374,511375,515919,515920,518035,518036,521608,521609,524288,524301,526966,526967,546225,546226,546228,546229,546799,546800,557056,557069,561825,561826,562514,562515,586234,586235,586986,586987,586996,586997,587012,587013,589824,589837,609170,609171,609513,609514,618422,618423,618425,618447,618459,618460,618467,618468,618498,618499,618521,618522,618585,618586,618590,618591,618594,618595,618658,618659,618662,618667,618668,618669,618670,618671,618672,618673,619467,619468,619474,619475,620028,620032,620033,620034,620035,620036,620037,620038,620039,620040,620041,620042,620043,620044,620045,620046,620047,620050,621508,621510,621649,621650,621653,621655,621913,621914,621916,621918,622462,622464,622478,622479,622592,622605,622810,622811,622957,622958,622967,622969,624285,624286,629226,629228,638093,638094,645961,645962,648048,648049,648679,648682,648688,648689,648694,648695,648700,648701,648706,648755,648762,652097,652102,652109,652123,652129,652145,652258,652270,652271,652275,652319,652328,652330,652336,652337,652342,652343,652348,652349,652354,652407,652414,656212,656217,656224,656236,656241,656255,656372,656377,656378,656382,656428,656450,656461,657585,657586,659978,659979,660571,668960,669589,670099,670171,670452,670481,670485,670489,670493,670494,670498,670499,670501,670506,670508,670825,670826,670857,670859,670944,670945,670955,670959,670960,670964,670965,670969,670970,670974,670975,670979,670980,670984,670985,670989,670990,670994,670995,670999,671000,671002,671016,671020,671021,671023,671027,671028,671032,671036,671037,671041,671042,671046,671047,671051,671052,671054,671059,671063,671064,671068,671069,671073,671074,671076,671139,671141,671145,671149,671150,671154,671155,671159,671160,671164,671165,671169,671170,671172,671176,671178,671187,671191,671192,671196,671197,671201,671202,671204,671269,671270,671278,671282,671283,671285,671289,671293,671294,671296,671297,671301,671302,671304,671310,671314,671315,671319,671320,671324,671325,671327,671332,671336,671337,671341,671342,671346,671347,671349,671353,671357,671358,671362,671363,671367,671368,671372,671373,671375,671376,671380,671381,671385,671386,671390,671391,671396,671397,671399,671403,671405,671409,671429,671802,671803,671830,671832,671936,671937,671947,671984,671987,671993,671998,671999,672001,672019,672022,672032,672047,672048,672053,672059,672131,672133,672136,672180,672256,672257,672263,681519,681522,681558,681561,681566,681984,686347,687854,687855,688128,688141,688280,688281,688483,688484,688512,688513,688537,688538,688810,688811,690674,690675,691101,691102,691668,691782,694927,694928,696186,696187,699089,699090,699616,699617,699915,699916,701193,701194,705323,705324,705482,705483,706326,706327,706677,706678,707569,707570,711221,711222,714015,714016,714071,714072,714132,714133,717488,717490,717682,717683,717787,717788,720896,720909,722452,722453,722514,722515,724557,724558,725241,725242,725261,725262,726538,726539,730006,730007,730266,730431,737733,737734,738075,738138,744953,744954,750890,750891,752205,752206,753664,753677,756469,756470,756473,756475,756476,756477,756819,756820,758078,758608,760754,760755,761089,761100,761114,761125,761162,761163,761175,761176,766370,766371,766542,766543,770248,770249,770255,770257,770264,770265,779285,779286,779291,779292,779299,779300,781084,781085,786432,786445,788464,788465,788757,788758,790761,790762,790764,790765,791037,791038,791083,791084,792204,792205,792596,792597,793171,793172,793181,793183,796161,796162,798574,798575,798634,798635,798639,798640,800319,800320,801970,801971,801993,801994,808841,808842,812676,812677,814247,814248,814484,814485,814630,814631,818500,818501,818664,818667,819200,819215,820544,820545,820737,820738,824637,824639,824795,824796,824874,824875,825047,825048,825340,825341,825474,825475,829150,829154,829173,829174,829177,829178,829201,829202,829273,829274,829288,829289,829298,829300,829313,829314,829335,829336,829381,829383,829384,829385,829386,829387,829388,829389,829390,829391,829393,829394,829398,829399,829400,829401,829403,829404,829405,829406,829407,829408,829410,829411,829412,829413,829414,829415,829416,829417,829418,829419,829420,829421,829422,829423,829424,829425,829426,829427,829429,829430,829432,829433,829434,829437,829439,829441,829449,829450,829456,829458,829464,829466,829470,829471,830692,830693,830798,830800,830810,830812,830830,830832,830872,830873,830875,834916,834921,835168,835376,835409,835410,835411,835627,835629,835642,835643,835649,835650,835656,835657,835671,835672,835678,835679,835682,835683,835688,835689,835691,835692,835696,835697,835701,835702,835712,835713,835716,835717,835727,835729,835743,835745,835758,835759,835768,835769,835771,835772,835777,835778,835780,835781,835785,835786,835791,835792,835796,835797,835802,835803,835807,835808,835813,835814,835818,835819,835822,835823,835830,835831,835835,835836,835847,835848,835852,835853,835857,835858,835863,835864,835866,835867,835868,835869,835874,835875,835878,835879,835891,835892,835898,835899,835902,835903,835904,835905,835909,835910,835911,835912,835927,835928,835930,835931,835932,835933,835936,835937,835942,835943,835955,835956,835957,835958,835960,835961,835962,835963,835964,835965,835966,835967,835968,835969,835970,835971,835972,835973,835975,835976,835977,835978,835980,835981,835983,835984,835985,835986,835987,835988,835990,835991,835994,835995,835996,835997,835998,835999,836001,836002,836003,836004,836006,836007,836008,836009,836010,836011,836014,836015,836019,836020,836023,836024,836026,836027,836029,836030,836032,836033,836034,836035,836037,836038,836041,836042,836045,836046,836048,836049,836056,836057,836071,836072,836076,836077,836079,836080,836086,836087,836097,836098,836105,836106,836108,836109,836114,836115,836120,836121,836124,836125,836142,836143,836145,836146,836151,836152,836159,836160,836161,836162,836164,836165,836170,836171,836176,836177,836183,836184,836195,836196,836198,836199,836203,836204,836213,836214,836224,836225,836229,836230,836233,836234,836248,836249,836252,836253,836266,836267,836269,836270,836274,836275,836278,836279,836282,836283,836286,836287,836289,836290,836300,836301,836304,836305,836310,836311,836322,836323,836335,836336,836347,836349,836363,836364,836375,836376,836377,836378,836380,836381,836385,836386,836393,836394,836395,836396,836397,836398,836412,836413,836416,836417,836421,836422,836425,836426,836429,836430,836445,836446,836448,836449,836454,836455,836457,836458,836461,836462,836467,836468,836475,836476,836480,836481,836485,836486,836490,836491,836494,836495,836498,836499,836507,836508,836518,836519,836528,836529,836534,836535,836543,836544,836552,836553,836556,836557,836559,836560,836568,836569,836580,836581,836593,836594,836596,836597,836602,836603,836608,836609,845693,845695,850865,850867,850948,850951,851022,851024,851968,852039,855365,855366,863157,863158,863162,863163,863417,863420,877625,877627,877634,877638,880561,880563,884736,884783,884816,884818,886737,886741,886808,886809,886845,886846,887000,887004,887010,887011,887016,887022,887023,887024,887315,887319,887329,887330,887360,887366,887367,887368,888223,888224,888921,888925,888951,888952,889005,889009,889013,889014,892972,892973,897025,897029,897120,897121,897396,897400,899201,899202,901982,901984,905048,905050,906345,906346,907543,907545,907597,907601,907610,907614,908658,908660,908688,908690,909125,909127,909340,909342,909372,909374,909385,909389,909390,1015816,1015821,1048577,1048589,1063224,1066440,1083338,1083557,1083558") == "09ca281c0687735ca9f595d02a886eec047f1987" || 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"), "1796,1,29,40,50,52,56,1989,1990,2035,2036,2060,2061,23318,23319,24037,24038,25176,25177,31341,31342,31490,31491,32432,32433,32768,32783,36713,36714,37552,37553,38907,38908,39343,39344,40582,40583,40831,40832,42252,42253,42347,42348,42544,42545,42755,53762,64768,68415,68422,68423,69606,69607,69924,69926,70285,70289,70302,70303,70467,70471,70479,70480,70489,70493,70497,70498,71759,71765,71799,71800,71806,71812,71813,71814,71819,71825,71826,71827,72792,72793,73443,73444,75375,75376,75377,75378,75386,75387,75409,75410,75414,75415,75848,75849,75860,75866,75867,75868,76064,76068,76076,76077,76080,76081,76101,76107,76108,77373,80110,80111,80174,80175,80808,80812,80852,80870,80877,80883,80884,80885,86932,86933,88970,88974,89037,89038,89167,89171,89177,89178,89311,89315,89322,89323,92935,92936,93646,93650,93716,93717,94080,94081,94085,94091,94092,94093,94124,94130,94131,94132,95587,95591,95616,95617,95641,95642,95644,95645,95646,95647,95648,95649,95679,95680,98304,98319,98815,98819,98850,98851,100910,100914,100940,100941,102696,102697,106893,106895,112962,112963,112968,112974,112975,112976,113908,113910,113911,113912,113922,113928,113929,113930,113944,113948,113965,113966,113971,113972,114600,114604,114620,114621,117331,117335,117382,117383,117398,117399,117557,117561,117566,117567,117835,117836,118247,118251,118264,118265,122662,122663,123197,123198,127035,127036,127038,127039,131072,131085,140888,140890,140892,140893,140897,140898,140900,140902,141322,141323,144075,144076,145540,145544,145571,145572,149435,149439,149464,149465,151776,151777,152522,152526,152582,152583,163756,163757,163840,163855,169733,169734,169842,169843,169844,169863,169864,169870,172865,172869,172955,172956,173014,173015,173721,173722,174140,174141,176708,176709,178469,178473,178511,178512,178553,178559,178565,178566,181169,181170,181457,181463,181504,181505,184865,184866,185059,185060,186189,186195,186218,186219,186396,186397,187091,187092,187720,187724,187746,187747,188569,188570,192401,192402,194366,194370,194398,194399,196608,196621,196683,196684,197499,197503,197532,197533,197726,197730,197736,197737,204305,204306,204309,204310,215148,215149,217382,217383,224210,224211,225444,225448,225659,225660,225795,225796,226602,226608,226630,226631,229376,229391,231141,231142,231677,231683,231760,231761,233473,233474,234506,234510,234535,234536,234550,234551,234584,234590,234591,234592,234595,234601,234606,234607,234944,234945,238129,238130,238192,238196,238201,238202,238246,238254,238255,238256,239912,239918,239959,239960,240209,240215,240225,240226,240245,240251,240252,240253,240296,240302,240303,240304,242682,242683,243000,243004,243043,243044,243161,243165,243170,243171,243240,243244,243248,243249,243500,243504,243513,243514,252946,252947,254711,254715,258312,258313,259498,259499,259510,259516,259517,259518,260030,260034,260049,260050,262144,262157,263051,263052,264180,264184,270458,270464,270574,270575,274778,274779,276809,276813,276870,276871,276906,276907,276915,276921,276922,276923,277574,277575,278219,278223,278245,278246,278980,278984,279001,279002,279013,279019,279020,279021,280803,280804,281291,281295,282162,282163,283219,283220,284855,284859,284887,284888,294912,294927,297546,297547,303829,303831,303838,303839,305769,305770,312846,312847,312897,312898,321335,321337,322793,322794,324165,324166,325056,325060,325086,325087,325153,325157,325162,325163,325168,325172,325177,325178,325182,325183,325198,325204,325205,325206,325608,325612,325616,325617,325641,325647,325648,325649,327680,327693,327951,327952,329100,329104,329174,329175,329178,329184,329188,329189,329537,329541,329553,329554,330493,330499,330521,330522,330548,330554,330558,330559,332020,332024,332051,332052,333525,333526,334619,334623,334662,334663,334669,334670,335508,335511,339968,339972,342169,342170,347001,347002,348037,348038,349162,349163,350814,350818,350901,350902,350938,350942,353148,353152,353166,353167,353562,353566,353573,353574,354534,354535,357265,357272,357307,357308,357667,357668,358319,358337,358408,358409,360104,360105,360448,360461,363408,363409,366052,366057,366058,366059,366060,366061,366062,366063,366064,366065,366066,366067,366068,366070,367534,367535,368282,368283,370211,370213,370320,370322,373698,373699,374332,374333,375950,375953,378915,378916,381326,381327,384301,384302,390078,390079,390441,390442,390748,390749,393216,393229,394797,394798,395817,395818,396679,396683,396720,396721,399342,399343,399690,399691,399853,399855,416654,416655,420466,420467,420669,420670,425984,425997,426240,426241,427721,427722,427726,427727,433493,433494,434077,434078,458147,458148,458752,458765,459582,459583,461958,461959,465344,465345,467337,467338,469983,469984,469985,469986,471222,471223,475835,475836,478247,478248,478596,478597,485163,485164,487448,487449,490417,490418,490419,490420,490960,490961,491520,491533,491769,491770,492360,492361,497465,497718,501126,501135,502534,502545,511276,511277,511374,511375,515919,515920,518035,518036,521608,521609,524288,524301,526966,526967,546225,546226,546228,546229,546799,546800,557056,557069,561825,561826,562514,562515,586234,586235,586986,586987,586996,586997,587012,587013,589824,589837,609170,609171,609513,609514,618422,618423,618425,618447,618459,618460,618467,618468,618498,618499,618521,618522,618585,618586,618590,618591,618594,618595,618658,618659,618662,618667,618668,618669,618670,618671,618672,618673,619467,619468,619474,619475,620028,620032,620033,620034,620035,620036,620037,620038,620039,620040,620041,620042,620043,620044,620045,620046,620047,620050,621508,621510,621649,621650,621653,621655,621913,621914,621916,621918,622462,622464,622478,622479,622592,622605,622810,622811,622957,622958,622967,622969,624285,624286,629226,629228,638093,638094,645961,645962,648048,648049,648679,648682,648688,648689,648694,648695,648700,648701,648706,648755,648762,652097,652102,652109,652123,652129,652145,652258,652270,652271,652275,652319,652328,652330,652336,652337,652342,652343,652348,652349,652354,652407,652414,656212,656217,656224,656236,656241,656255,656372,656377,656378,656382,656428,656450,656461,657585,657586,659978,659979,660571,668960,669589,670099,670171,670452,670481,670485,670489,670493,670494,670498,670499,670501,670506,670508,670825,670826,670857,670859,670944,670945,670955,670959,670960,670964,670965,670969,670970,670974,670975,670979,670980,670984,670985,670989,670990,670994,670995,670999,671000,671002,671016,671020,671021,671023,671027,671028,671032,671036,671037,671041,671042,671046,671047,671051,671052,671054,671059,671063,671064,671068,671069,671073,671074,671076,671139,671141,671145,671149,671150,671154,671155,671159,671160,671164,671165,671169,671170,671172,671176,671178,671187,671191,671192,671196,671197,671201,671202,671204,671269,671270,671278,671282,671283,671285,671289,671293,671294,671296,671297,671301,671302,671304,671310,671314,671315,671319,671320,671324,671325,671327,671332,671336,671337,671341,671342,671346,671347,671349,671353,671357,671358,671362,671363,671367,671368,671372,671373,671375,671376,671380,671381,671385,671386,671390,671391,671396,671397,671399,671403,671405,671409,671429,671802,671803,671830,671832,671936,671937,671947,671984,671987,671993,671998,671999,672001,672019,672022,672032,672047,672048,672053,672059,672131,672133,672136,672180,672256,672257,672263,681519,681522,681558,681561,681566,681984,686347,687854,687855,688128,688141,688280,688281,688483,688484,688512,688513,688537,688538,688810,688811,690674,690675,691101,691102,691668,691782,694927,694928,696186,696187,699089,699090,699616,699617,699915,699916,701193,701194,705323,705324,705482,705483,706326,706327,706677,706678,707569,707570,711221,711222,714015,714016,714071,714072,714132,714133,717488,717490,717682,717683,717787,717788,720896,720909,722452,722453,722514,722515,724557,724558,725241,725242,725261,725262,726538,726539,730006,730007,730266,730431,737733,737734,738075,738138,744953,744954,750890,750891,752205,752206,753664,753677,756469,756470,756473,756475,756476,756477,756819,756820,758078,758608,760754,760755,761089,761100,761114,761125,761162,761163,761175,761176,766370,766371,766542,766543,770248,770249,770255,770257,770264,770265,779285,779286,779291,779292,779299,779300,781084,781085,786432,786445,788464,788465,788757,788758,790761,790762,790764,790765,791037,791038,791083,791084,792204,792205,792596,792597,793171,793172,793181,793183,796161,796162,798574,798575,798634,798635,798639,798640,800319,800320,801970,801971,801993,801994,808841,808842,812676,812677,814247,814248,814484,814485,814630,814631,818500,818501,818664,818667,819200,819215,820544,820545,820737,820738,824637,824639,824795,824796,824874,824875,825047,825048,825340,825341,825474,825475,829150,829154,829173,829174,829177,829178,829201,829202,829273,829274,829288,829289,829298,829300,829313,829314,829335,829336,829381,829383,829384,829385,829386,829387,829388,829389,829390,829391,829393,829394,829398,829399,829400,829401,829403,829404,829405,829406,829407,829408,829410,829411,829412,829413,829414,829415,829416,829417,829418,829419,829420,829421,829422,829423,829424,829425,829426,829427,829429,829430,829432,829433,829434,829437,829439,829441,829449,829450,829456,829458,829464,829466,829470,829471,830692,830693,830798,830800,830810,830812,830830,830832,830872,830873,830875,834916,834921,835168,835376,835409,835410,835411,835627,835629,835642,835643,835649,835650,835656,835657,835671,835672,835678,835679,835682,835683,835688,835689,835691,835692,835696,835697,835701,835702,835712,835713,835716,835717,835727,835729,835743,835745,835758,835759,835768,835769,835771,835772,835777,835778,835780,835781,835785,835786,835791,835792,835796,835797,835802,835803,835807,835808,835813,835814,835818,835819,835822,835823,835830,835831,835835,835836,835847,835848,835852,835853,835857,835858,835863,835864,835866,835867,835868,835869,835874,835875,835878,835879,835891,835892,835898,835899,835902,835903,835904,835905,835909,835910,835911,835912,835927,835928,835930,835931,835932,835933,835936,835937,835942,835943,835955,835956,835957,835958,835960,835961,835962,835963,835964,835965,835966,835967,835968,835969,835970,835971,835972,835973,835975,835976,835977,835978,835980,835981,835983,835984,835985,835986,835987,835988,835990,835991,835994,835995,835996,835997,835998,835999,836001,836002,836003,836004,836006,836007,836008,836009,836010,836011,836014,836015,836019,836020,836023,836024,836026,836027,836029,836030,836032,836033,836034,836035,836037,836038,836041,836042,836045,836046,836048,836049,836056,836057,836071,836072,836076,836077,836079,836080,836086,836087,836097,836098,836105,836106,836108,836109,836114,836115,836120,836121,836124,836125,836142,836143,836145,836146,836151,836152,836159,836160,836161,836162,836164,836165,836170,836171,836176,836177,836183,836184,836195,836196,836198,836199,836203,836204,836213,836214,836224,836225,836229,836230,836233,836234,836248,836249,836252,836253,836266,836267,836269,836270,836274,836275,836278,836279,836282,836283,836286,836287,836289,836290,836300,836301,836304,836305,836310,836311,836322,836323,836335,836336,836347,836349,836363,836364,836375,836376,836377,836378,836380,836381,836385,836386,836393,836394,836395,836396,836397,836398,836412,836413,836416,836417,836421,836422,836425,836426,836429,836430,836445,836446,836448,836449,836454,836455,836457,836458,836461,836462,836467,836468,836475,836476,836480,836481,836485,836486,836490,836491,836494,836495,836498,836499,836507,836508,836518,836519,836528,836529,836534,836535,836543,836544,836552,836553,836556,836557,836559,836560,836568,836569,836580,836581,836593,836594,836596,836597,836602,836603,836608,836609,845693,845695,850865,850867,850948,850951,851022,851024,851968,852039,855365,855366,863157,863158,863162,863163,863417,863420,877625,877627,877634,877638,880561,880563,884736,884783,884816,884818,886737,886741,886808,886809,886845,886846,887000,887004,887010,887011,887016,887022,887023,887024,887315,887319,887329,887330,887360,887366,887367,887368,888223,888224,888921,888925,888951,888952,889005,889009,889013,889014,892972,892973,897025,897029,897120,897121,897396,897400,899201,899202,901982,901984,905048,905050,906345,906346,907543,907545,907597,907601,907610,907614,908658,908660,908688,908690,909125,909127,909340,909342,909372,909374,909385,909389,909390,1015816,1015821,1048577,1048589,1063224,1066440,1083338,1083557,1083558") && 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"), "1108,1,26,36,40,45,46,124,132,138,139,1813,1817,2294,2295,2300,2304,2308,2309,2315,2321,2322,2323,2328,2329,2573,2577,2582,2583,2585,2589,2591,2592,2615,2616,2652,2656,2706,2707,2842,2843,2846,2852,2853,2854,2857,2858,2863,2864,4524,4525,7705,7706,8148,8149,17017,17018,18108,18110,18111,18112,18114,18117,18118,18119,18121,18123,18124,18125,18127,18129,18130,18131,18133,18135,18136,18137,18139,18141,18142,18143,18145,18147,18152,18154,18157,18159,18162,18164,18172,18174,18177,18179,18180,18181,18183,18185,18186,18187,18190,18192,18193,18194,18196,18198,18199,18200,18202,18204,18205,18206,18208,18210,18211,18212,18214,18216,18217,18218,18227,18228,18247,18248,18249,18250,18254,18255,18256,18257,18260,18261,18262,18263,18266,18267,18268,18269,18272,18273,18274,18275,18279,18280,18281,18282,18285,18286,18287,18288,18292,18293,18297,18298,18302,18303,18307,18308,18312,18313,18314,18315,18324,18325,18326,18327,18330,18331,18332,18333,18336,18337,18338,18339,18342,18343,18344,18345,18347,18349,18641,18642,18757,18758,19824,19830,32768,32788,65536,65560,65561,65562,66802,67358,67359,67497,73393,73394,75849,75850,79729,79730,82505,82506,83685,83686,83750,83751,83848,83849,98304,98323,106885,106886,115329,115330,115619,115621,115694,115695,116229,116234,116327,116328,124693,124695,124751,124752,129461,129463,130123,130124,130217,130218,131072,131089,133764,133765,134381,134382,136109,136110,151545,151546,151559,151560,151564,151566,151583,151584,151619,151620,151629,151630,151773,151774,151824,151825,151831,151832,152537,152538,152548,152549,154888,154889,154914,154915,154950,154951,155059,155060,155168,155169,155645,155646,159875,159876,159891,159892,159945,159946,160013,160014,160016,160018,160082,160083,160153,160154,160221,160222,160224,160225,160227,160228,160287,160289,160291,160292,160356,160357,160427,160428,160495,160496,160498,160499,160501,160507,160509,160510,160512,160514,160516,160527,160587,160588,160590,160591,160601,160602,160668,160669,160746,160747,160757,160758,160824,160825,160901,160902,160981,160982,161058,161059,161135,161136,161212,161213,161223,161224,161227,161228,161291,161292,161367,161368,161378,161379,161445,161446,161522,161523,161595,161596,161598,161599,161611,161617,161676,161677,161679,161681,161747,161748,161750,161751,161754,161755,161820,161821,161823,161824,161896,161897,161899,161900,161973,161974,161976,161977,162045,162046,162048,162049,162119,162120,162194,162195,162197,162198,162263,162264,162266,162267,162333,162334,162336,162337,162405,162406,162408,162409,162474,162475,162477,162478,162547,162548,162550,162552,162620,162621,162623,162624,162695,162696,162698,162699,162762,162763,162765,162766,162834,162835,162837,162838,162904,162905,162907,162908,162978,162979,162981,162982,163045,163046,163048,163049,163113,163114,163116,163117,163182,163183,163261,163262,163338,163339,163415,163416,163418,163419,163482,163483,163485,163486,163550,163551,163553,163554,163617,163618,163620,163621,163685,163686,163753,163754,163821,163822,163823,163824,163840,163859,163910,163911,163980,163981,164049,164050,164117,164118,164187,164188,164252,164253,164255,164256,164322,164323,164325,164326,164394,164395,164397,164398,164467,164468,164470,164471,164542,164543,164545,164546,164615,164616,164618,164619,164692,164693,164694,164695,164701,164702,164767,164768,164769,164770,164844,164845,164847,164848,164917,164918,164920,164921,165016,165017,165029,165030,165507,165509,165561,165562,165678,165679,165681,165682,165839,165840,168969,168970,168971,168972,169024,169025,169440,169441,169450,169451,169476,169477,169594,169595,169694,169695,170100,170101,170162,170163,170302,170303,170424,170425,170493,170494,170679,170680,170795,170796,170841,170842,171060,171061,171102,171103,171140,171141,171318,171319,171452,171453,171645,171646,171653,171654,171776,171777,171989,171990,172097,172098,172155,172156,172206,172207,172305,172306,172395,172396,172397,172398,172500,172501,172532,172533,172582,172584,172591,172593,172594,172595,172602,172603,173371,173372,173394,173396,173446,173447,173449,173451,173599,173605,173658,173659,173661,173662,174313,174314,174488,174489,174494,174495,174587,174589,174640,174641,174644,174645,174650,174652,174653,174656,174663,174664,174666,174667,174672,174673,174877,174878,175050,175051,175052,175053,175055,175056,175061,175062,175064,175065,175079,175080,175135,175136,175153,175154,175216,175218,175220,175222,175229,175230,175456,175457,175607,175608,175610,175611,175619,175620,175622,175623,175627,175628,175711,175712,175713,175714,175861,175862,175864,175865,176011,176016,176170,176171,176203,176204,176402,176403,176689,176691,176696,176697,176736,176737,176836,176837,177932,177933,178101,178102,178192,178195,178244,178245,178246,178247,178250,178251,178277,178278,178675,178676,178810,178812,178814,178820,179297,179298,181083,181084,181606,181609,181855,181856,182073,182074,182076,182077,182554,182555,184110,184111,184234,184235,184451,184452,184453,184454,184457,184458,184459,184460,184465,184467,184469,184470,184471,184472,184473,184474,184477,184479,184481,184484,184783,184784,184792,184793,184795,184796,184839,184840,185104,185105,185764,185765,185774,185775,186346,186347,186349,186351,187309,187311,187323,187325,187331,187332,187334,187338,187340,187341,187785,187786,187788,187789,187795,187796,188120,188121,188122,188123,188394,188395,188397,188398,188400,188401,188403,188404,188406,188407,188409,188411,188412,188413,188414,188415,188416,188417,188420,188421,188422,188423,188426,188427,188428,188429,188516,188522,188705,188706,188711,188712,188714,188715,188720,188721,188723,188724,188729,188730,188757,188759,189081,189082,189083,189084,189085,189086,189106,189107,189109,189110,189119,189121,189125,189126,189128,189129,190495,190499,190506,190507,190509,190512,190518,190519,190521,190524,191092,191093,191263,191264,191936,191937,192875,192876,192878,192879,192881,192882,192894,192895,193531,193532,195100,195101,195175,195176,195185,195186,195310,195312,195322,195323,195336,195337,195342,195343,195376,195378,195746,195747,195749,195750,195767,195768,195770,195771,196064,196084,196210,196211,196327,196328,196332,196334,196491,196492,196499,196507,196608,196634,196706,196708,196740,196741,196743,196744,196748,196749,196758,196759,196762,196763,196767,196768,196770,196772,196781,196782,196869,196871,197172,197173,197211,197213,197214,197219,197278,197279,197281,197282,197292,197293,197476,197477,197479,197480,197491,197492,197500,197501,197684,197685,197741,197745,197752,197755,197883,197884,197956,197957,197959,197960,197962,197963,197965,197966,198114,198115,198117,198118,198313,198320,198536,198537,198713,198714,198721,198722,198738,198739,198741,198742,198744,198745,199177,199178,199284,199286,199295,199297,199618,199619,199641,199644,200708,200709,200717,200718,200732,200733,200741,200742,200744,200745,201096,201097,201370,201371,201379,201380,201873,201874,202380,202381,202383,202384,202563,202564,202565,202567,202568,202573,202971,202972,203001,203010,203371,203372,203932,203933,203935,203936,203938,203939,204232,204233,206700,206701,206782,206783,209271,209272,210311,210312,211146,213576,217133,217134,217672,217687,217988,217989,219360,219361,223632,223634,226957,226958,226961,226962,229376,229395,230924,230925,230927,230928,236616,236617,237927,237928,238106,238114,238841,238842,241713,241714,242859,242860,247062,249204,249210,458767,458769,474750,474757,474768,476210,483759,483865,483866") == "18c0d29ee7dba8c1709bccde632d8d8724c0b389" || 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"), "1108,1,26,36,40,45,46,124,132,138,139,1813,1817,2294,2295,2300,2304,2308,2309,2315,2321,2322,2323,2328,2329,2573,2577,2582,2583,2585,2589,2591,2592,2615,2616,2652,2656,2706,2707,2842,2843,2846,2852,2853,2854,2857,2858,2863,2864,4524,4525,7705,7706,8148,8149,17017,17018,18108,18110,18111,18112,18114,18117,18118,18119,18121,18123,18124,18125,18127,18129,18130,18131,18133,18135,18136,18137,18139,18141,18142,18143,18145,18147,18152,18154,18157,18159,18162,18164,18172,18174,18177,18179,18180,18181,18183,18185,18186,18187,18190,18192,18193,18194,18196,18198,18199,18200,18202,18204,18205,18206,18208,18210,18211,18212,18214,18216,18217,18218,18227,18228,18247,18248,18249,18250,18254,18255,18256,18257,18260,18261,18262,18263,18266,18267,18268,18269,18272,18273,18274,18275,18279,18280,18281,18282,18285,18286,18287,18288,18292,18293,18297,18298,18302,18303,18307,18308,18312,18313,18314,18315,18324,18325,18326,18327,18330,18331,18332,18333,18336,18337,18338,18339,18342,18343,18344,18345,18347,18349,18641,18642,18757,18758,19824,19830,32768,32788,65536,65560,65561,65562,66802,67358,67359,67497,73393,73394,75849,75850,79729,79730,82505,82506,83685,83686,83750,83751,83848,83849,98304,98323,106885,106886,115329,115330,115619,115621,115694,115695,116229,116234,116327,116328,124693,124695,124751,124752,129461,129463,130123,130124,130217,130218,131072,131089,133764,133765,134381,134382,136109,136110,151545,151546,151559,151560,151564,151566,151583,151584,151619,151620,151629,151630,151773,151774,151824,151825,151831,151832,152537,152538,152548,152549,154888,154889,154914,154915,154950,154951,155059,155060,155168,155169,155645,155646,159875,159876,159891,159892,159945,159946,160013,160014,160016,160018,160082,160083,160153,160154,160221,160222,160224,160225,160227,160228,160287,160289,160291,160292,160356,160357,160427,160428,160495,160496,160498,160499,160501,160507,160509,160510,160512,160514,160516,160527,160587,160588,160590,160591,160601,160602,160668,160669,160746,160747,160757,160758,160824,160825,160901,160902,160981,160982,161058,161059,161135,161136,161212,161213,161223,161224,161227,161228,161291,161292,161367,161368,161378,161379,161445,161446,161522,161523,161595,161596,161598,161599,161611,161617,161676,161677,161679,161681,161747,161748,161750,161751,161754,161755,161820,161821,161823,161824,161896,161897,161899,161900,161973,161974,161976,161977,162045,162046,162048,162049,162119,162120,162194,162195,162197,162198,162263,162264,162266,162267,162333,162334,162336,162337,162405,162406,162408,162409,162474,162475,162477,162478,162547,162548,162550,162552,162620,162621,162623,162624,162695,162696,162698,162699,162762,162763,162765,162766,162834,162835,162837,162838,162904,162905,162907,162908,162978,162979,162981,162982,163045,163046,163048,163049,163113,163114,163116,163117,163182,163183,163261,163262,163338,163339,163415,163416,163418,163419,163482,163483,163485,163486,163550,163551,163553,163554,163617,163618,163620,163621,163685,163686,163753,163754,163821,163822,163823,163824,163840,163859,163910,163911,163980,163981,164049,164050,164117,164118,164187,164188,164252,164253,164255,164256,164322,164323,164325,164326,164394,164395,164397,164398,164467,164468,164470,164471,164542,164543,164545,164546,164615,164616,164618,164619,164692,164693,164694,164695,164701,164702,164767,164768,164769,164770,164844,164845,164847,164848,164917,164918,164920,164921,165016,165017,165029,165030,165507,165509,165561,165562,165678,165679,165681,165682,165839,165840,168969,168970,168971,168972,169024,169025,169440,169441,169450,169451,169476,169477,169594,169595,169694,169695,170100,170101,170162,170163,170302,170303,170424,170425,170493,170494,170679,170680,170795,170796,170841,170842,171060,171061,171102,171103,171140,171141,171318,171319,171452,171453,171645,171646,171653,171654,171776,171777,171989,171990,172097,172098,172155,172156,172206,172207,172305,172306,172395,172396,172397,172398,172500,172501,172532,172533,172582,172584,172591,172593,172594,172595,172602,172603,173371,173372,173394,173396,173446,173447,173449,173451,173599,173605,173658,173659,173661,173662,174313,174314,174488,174489,174494,174495,174587,174589,174640,174641,174644,174645,174650,174652,174653,174656,174663,174664,174666,174667,174672,174673,174877,174878,175050,175051,175052,175053,175055,175056,175061,175062,175064,175065,175079,175080,175135,175136,175153,175154,175216,175218,175220,175222,175229,175230,175456,175457,175607,175608,175610,175611,175619,175620,175622,175623,175627,175628,175711,175712,175713,175714,175861,175862,175864,175865,176011,176016,176170,176171,176203,176204,176402,176403,176689,176691,176696,176697,176736,176737,176836,176837,177932,177933,178101,178102,178192,178195,178244,178245,178246,178247,178250,178251,178277,178278,178675,178676,178810,178812,178814,178820,179297,179298,181083,181084,181606,181609,181855,181856,182073,182074,182076,182077,182554,182555,184110,184111,184234,184235,184451,184452,184453,184454,184457,184458,184459,184460,184465,184467,184469,184470,184471,184472,184473,184474,184477,184479,184481,184484,184783,184784,184792,184793,184795,184796,184839,184840,185104,185105,185764,185765,185774,185775,186346,186347,186349,186351,187309,187311,187323,187325,187331,187332,187334,187338,187340,187341,187785,187786,187788,187789,187795,187796,188120,188121,188122,188123,188394,188395,188397,188398,188400,188401,188403,188404,188406,188407,188409,188411,188412,188413,188414,188415,188416,188417,188420,188421,188422,188423,188426,188427,188428,188429,188516,188522,188705,188706,188711,188712,188714,188715,188720,188721,188723,188724,188729,188730,188757,188759,189081,189082,189083,189084,189085,189086,189106,189107,189109,189110,189119,189121,189125,189126,189128,189129,190495,190499,190506,190507,190509,190512,190518,190519,190521,190524,191092,191093,191263,191264,191936,191937,192875,192876,192878,192879,192881,192882,192894,192895,193531,193532,195100,195101,195175,195176,195185,195186,195310,195312,195322,195323,195336,195337,195342,195343,195376,195378,195746,195747,195749,195750,195767,195768,195770,195771,196064,196084,196210,196211,196327,196328,196332,196334,196491,196492,196499,196507,196608,196634,196706,196708,196740,196741,196743,196744,196748,196749,196758,196759,196762,196763,196767,196768,196770,196772,196781,196782,196869,196871,197172,197173,197211,197213,197214,197219,197278,197279,197281,197282,197292,197293,197476,197477,197479,197480,197491,197492,197500,197501,197684,197685,197741,197745,197752,197755,197883,197884,197956,197957,197959,197960,197962,197963,197965,197966,198114,198115,198117,198118,198313,198320,198536,198537,198713,198714,198721,198722,198738,198739,198741,198742,198744,198745,199177,199178,199284,199286,199295,199297,199618,199619,199641,199644,200708,200709,200717,200718,200732,200733,200741,200742,200744,200745,201096,201097,201370,201371,201379,201380,201873,201874,202380,202381,202383,202384,202563,202564,202565,202567,202568,202573,202971,202972,203001,203010,203371,203372,203932,203933,203935,203936,203938,203939,204232,204233,206700,206701,206782,206783,209271,209272,210311,210312,211146,213576,217133,217134,217672,217687,217988,217989,219360,219361,223632,223634,226957,226958,226961,226962,229376,229395,230924,230925,230927,230928,236616,236617,237927,237928,238106,238114,238841,238842,241713,241714,242859,242860,247062,249204,249210,458767,458769,474750,474757,474768,476210,483759,483865,483866") && 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"), "134,1,21,26,27,29,30,146,150,154,155,167,173,174,175,3238,3240,16053,16054,16121,16122,18187,18189,32768,32782,33691,33692,33740,33741,34280,34281,36140,36141,38669,38670,38793,38931,39455,39456,43297,43298,47635,47636,47861,47863,47873,47875,47921,47923,47933,47935,47944,47945,49763,49764,49767,49769,49932,49933,49934,49935,49937,49938,49953,49954,49957,49959,49960,49962,49980,49981,49987,49988,50026,50030,50034,50038,50039,50051,50466,50467,50838,50839,52324,52325,59417,59420,61369,61370,63226,63227,65307,65308,65536,65547,65548,65591,67287,67289,69006,69007,69022,69023,70080,70081,77908,77910,78960,78962,79460,79461,81375,81379,81425,81426,81443,81444,81725,81726,83613,83615,85284,85285,87028,87032,87125,87126,87175,87176,87813,87817,88097,89496,89529,89530") == "2e2aad1d3a372a8bb5eaba5e41bb1fea935c94b1" || 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"), "134,1,21,26,27,29,30,146,150,154,155,167,173,174,175,3238,3240,16053,16054,16121,16122,18187,18189,32768,32782,33691,33692,33740,33741,34280,34281,36140,36141,38669,38670,38793,38931,39455,39456,43297,43298,47635,47636,47861,47863,47873,47875,47921,47923,47933,47935,47944,47945,49763,49764,49767,49769,49932,49933,49934,49935,49937,49938,49953,49954,49957,49959,49960,49962,49980,49981,49987,49988,50026,50030,50034,50038,50039,50051,50466,50467,50838,50839,52324,52325,59417,59420,61369,61370,63226,63227,65307,65308,65536,65547,65548,65591,67287,67289,69006,69007,69022,69023,70080,70081,77908,77910,78960,78962,79460,79461,81375,81379,81425,81426,81443,81444,81725,81726,83613,83615,85284,85285,87028,87032,87125,87126,87175,87176,87813,87817,88097,89496,89529,89530") && 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,6,2019,2025,2026,2027,2035,2036,32231,32745,32767,32768") == "10edbcbd9a82ba0b4b6c238ba23a1a3e4e3f34e5" || 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,6,2019,2025,2026,2027,2035,2036,32231,32745,32767,32768") && 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"), "318,1,35,42,46,50,51,57,63,64,65,79,85,86,87,145,149,154,155,161,167,168,169,363,367,371,372,375,379,384,385,388,389,395,401,402,403,425,431,432,433,1144,1148,1166,1167,1171,1177,1178,1179,1181,1182,1193,1199,1200,1201,1211,1212,1217,1221,1225,1226,1230,1236,1240,1241,1248,1254,1255,1256,1268,1274,1275,1276,1278,1285,1291,1298,1303,1310,1340,1347,1366,1373,1391,1396,1413,1420,1436,1437,1532,1534,1537,1538,1550,1551,1552,1553,1554,1555,1563,1564,1587,1588,1633,1638,1641,1644,1647,1650,1653,1655,1659,1660,1664,1667,1672,1673,1676,1678,1759,1760,1761,1762,1770,1771,2155,2161,2166,2168,2173,2175,2179,2183,2184,2188,2189,2193,2194,2198,2199,2203,2204,2208,2209,2211,2218,2222,2223,2227,2228,2232,2233,2237,2238,2242,2243,2247,2248,2252,2253,2255,2256,2260,2261,2265,2266,2270,2271,2275,2276,2280,2281,2285,2286,2290,2291,2293,2297,2301,2302,2304,2305,2307,2308,2312,2313,2317,2318,2320,2321,2325,2326,2330,2331,2335,2336,2340,2341,2343,2344,2348,2349,2351,2355,2364,2369,2399,2402,2510,4941,4942,6001,6002,8061,8062,8120,8121,8661,8662,8712,8713,9022,9023,14204,14205,14277,14278,14286,14287,14422,14423,14427,14428,14481,14482,14492,14493,14526,14527,14546,14547,14599,14600,14745,14746,14821,14822,14968,14969,19719,19721,19860,19861,19886,19887,19983,19984,20035,20036,20047,20048,20098,20099,20174,20175,20238,20239,20501,20502,21006,21007,24881,24882,24938,24939,25363,25364,32768,32804,33224,33225,34811,34812,39894,39895,40773,40774,40825,40826,41144,41145,43205,43206,48863,48867,49642,49644,49703,49705,51289,51291,57531,57532,57534,57535,58458,58460,63673,63675,64599,64601,64625,65561,65562,93449,93738,95227,95261,95262") == "7c8da9a51e66e4bfccb8ba987caf9de352874257" || 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"), "318,1,35,42,46,50,51,57,63,64,65,79,85,86,87,145,149,154,155,161,167,168,169,363,367,371,372,375,379,384,385,388,389,395,401,402,403,425,431,432,433,1144,1148,1166,1167,1171,1177,1178,1179,1181,1182,1193,1199,1200,1201,1211,1212,1217,1221,1225,1226,1230,1236,1240,1241,1248,1254,1255,1256,1268,1274,1275,1276,1278,1285,1291,1298,1303,1310,1340,1347,1366,1373,1391,1396,1413,1420,1436,1437,1532,1534,1537,1538,1550,1551,1552,1553,1554,1555,1563,1564,1587,1588,1633,1638,1641,1644,1647,1650,1653,1655,1659,1660,1664,1667,1672,1673,1676,1678,1759,1760,1761,1762,1770,1771,2155,2161,2166,2168,2173,2175,2179,2183,2184,2188,2189,2193,2194,2198,2199,2203,2204,2208,2209,2211,2218,2222,2223,2227,2228,2232,2233,2237,2238,2242,2243,2247,2248,2252,2253,2255,2256,2260,2261,2265,2266,2270,2271,2275,2276,2280,2281,2285,2286,2290,2291,2293,2297,2301,2302,2304,2305,2307,2308,2312,2313,2317,2318,2320,2321,2325,2326,2330,2331,2335,2336,2340,2341,2343,2344,2348,2349,2351,2355,2364,2369,2399,2402,2510,4941,4942,6001,6002,8061,8062,8120,8121,8661,8662,8712,8713,9022,9023,14204,14205,14277,14278,14286,14287,14422,14423,14427,14428,14481,14482,14492,14493,14526,14527,14546,14547,14599,14600,14745,14746,14821,14822,14968,14969,19719,19721,19860,19861,19886,19887,19983,19984,20035,20036,20047,20048,20098,20099,20174,20175,20238,20239,20501,20502,21006,21007,24881,24882,24938,24939,25363,25364,32768,32804,33224,33225,34811,34812,39894,39895,40773,40774,40825,40826,41144,41145,43205,43206,48863,48867,49642,49644,49703,49705,51289,51291,57531,57532,57534,57535,58458,58460,63673,63675,64599,64601,64625,65561,65562,93449,93738,95227,95261,95262") && 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/abl.elf", "/dev/block/bootdevice/by-name/abl");
package_extract_file("firmware-update/abl.elf", "/dev/block/bootdevice/by-name/ablbak");

# --- 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:78b75b61adc97d9e63b4211af688764437e53053"),
                concat("EMMC:","/dev/block/bootdevice/by-name/boot",":134217728:d93c7d9f82004fe1a42332aeee2fc7fd8b8c0e4a"),
                package_extract_file("boot.img.p")) ||
    abort(concat(        "E3008: Failed to apply patch to ",concat("EMMC:","/dev/block/bootdevice/by-name/boot",":134217728:d93c7d9f82004fe1a42332aeee2fc7fd8b8c0e4a")));

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

# ---- update tasks: exaid part 2----


package_extract_file("exaid.img", "/dev/block/bootdevice/by-name/exaid");
    
set_progress(1.000000);
