getprop("ro.product.device") == "surya" || abort("E3004: This package is for \"surya\" devices; this is a \"" + getprop("ro.product.device") + "\".");
ui_print("Source: POCO/surya_global/surya:10/QKQ1.200512.002/V12.0.6.0.QJGMIXM:user/release-keys");
ui_print("Target: POCO/surya_global/surya:10/QKQ1.200512.002/V12.0.7.0.QJGMIXM:user/release-keys");
ui_print("Verifying current system...");
getprop("ro.build.fingerprint") == "POCO/surya_global/surya:10/QKQ1.200512.002/V12.0.6.0.QJGMIXM:user/release-keys" ||
    getprop("ro.build.fingerprint") == "POCO/surya_global/surya:10/QKQ1.200512.002/V12.0.7.0.QJGMIXM:user/release-keys" ||
    abort("E3001: Package expects build fingerprint of POCO/surya_global/surya:10/QKQ1.200512.002/V12.0.6.0.QJGMIXM:user/release-keys or POCO/surya_global/surya:10/QKQ1.200512.002/V12.0.7.0.QJGMIXM:user/release-keys; this device has " + getprop("ro.build.fingerprint") + ".");
show_progress(0.100000, 10);
patch_partition_check("EMMC:/dev/block/bootdevice/by-name/boot:134217728:4d2d113ceb1b6e4fe7bc628510c5b6195b3053bf",
                      "EMMC:/dev/block/bootdevice/by-name/boot:134217728:92e9b25b8d4ca75facebdc083175ce4b33846a33") ||
    abort("E3005: \"EMMC:/dev/block/bootdevice/by-name/boot:134217728:4d2d113ceb1b6e4fe7bc628510c5b6195b3053bf\" or \"EMMC:/dev/block/bootdevice/by-name/boot:134217728:92e9b25b8d4ca75facebdc083175ce4b33846a33\" has unexpected contents.");
apply_patch_space(134217728) || abort("E3006: Not enough free space on /cache to apply patches.");
show_progress(0.100000, 70);
if (range_sha1(map_partition("system"), "2112,1,191,219,228,281,282,542,546,558,559,578,579,1896,1897,2326,2327,26231,26232,27599,27600,32768,32770,32925,32945,33004,33005,33219,33221,33381,33385,33393,33394,33402,33406,33411,33412,33632,33633,33645,33649,33653,33654,34883,34889,34921,34922,34928,34934,34935,34936,34941,34947,34948,34949,35069,35075,35081,35082,36638,36639,36704,36705,37230,37234,37263,37264,37334,37336,37429,37433,37437,37438,37469,37475,37476,37477,37576,37582,37583,38951,41743,41747,41775,41776,41790,41796,41797,41798,41800,41801,45049,45053,45098,45099,45469,45473,45481,45482,45569,45575,45580,45581,45709,45713,45719,45720,45982,45983,46175,46179,46194,46195,50812,50816,50910,50911,50916,50922,50923,50924,51611,51615,51637,51638,51696,51697,51768,51772,51776,51777,53060,53064,53089,53090,53561,53567,53568,53569,55331,55335,55378,55379,55383,55389,55390,55391,55413,55417,55441,55442,57134,57138,57162,57163,58009,58013,58036,58037,58120,58124,58129,58130,61437,61439,65225,65226,65536,65556,66191,66192,66816,66820,68982,68983,69302,69306,69319,69320,69352,69356,69378,69379,69829,69833,70236,70237,70920,70924,70940,70941,73326,73330,73377,73378,73774,73778,73791,73792,75592,75593,81128,81132,81215,81216,82143,82147,82172,82173,84233,84234,86830,86831,89220,89224,89342,89343,98304,98306,98461,98481,102028,102032,102055,102056,104449,104453,104503,104504,106259,106263,106297,106298,106336,106342,106346,106347,109688,109689,110225,110229,110267,110268,112878,112879,114080,114084,114107,114108,114472,114478,114492,114493,115608,115612,115638,115639,115652,115658,115659,115660,131072,131092,136301,136302,136774,136775,137647,137651,137881,137882,138270,138276,138290,138291,138301,138305,138312,138313,143064,143065,145900,145904,145987,145988,148547,148551,148591,148592,148643,148647,148651,148652,148655,148661,148665,148666,148671,148677,148678,148679,152552,152556,152623,152624,152708,152712,152717,152718,152720,152726,152727,152728,152772,152778,152779,152780,154590,154596,154638,154639,155039,155045,155055,155056,155252,155256,155260,155261,155264,155268,155272,155273,155928,155934,155957,155958,156367,156371,156381,156382,156419,156425,156426,156427,159502,159506,159545,159546,159838,159842,159851,159852,159922,159926,159930,159931,160668,160672,160690,160691,160794,160798,160803,160804,162020,162024,162050,162051,163840,163842,163997,164017,166981,167057,167059,167060,168820,168824,168945,168946,168954,168960,168961,168962,169588,169592,169607,169608,171096,171100,171115,171116,173443,173447,173474,173475,174368,174372,174398,174399,174403,174409,174410,174411,174433,174439,174440,174441,174445,174449,174457,174458,174482,174488,174489,174490,177553,177557,177605,177606,177891,177895,177904,177905,178263,178269,178278,178279,179763,179767,179795,179796,180773,180777,181711,181712,183920,183924,183964,183967,183991,183992,183994,183995,183996,183997,183998,183999,184029,184030,186504,186508,186522,186523,187043,187047,187054,187055,189677,189682,189698,189699,190034,190035,190263,190264,191205,191214,191542,191543,191979,191980,193700,193701,196491,196496,196497,196498,196499,196500,196501,196502,196503,196504,196505,196506,196507,196508,196509,196510,196511,196512,196513,196514,196515,196516,196517,196518,196519,196520,196521,196522,196523,196524,196525,196526,196527,196528,196529,196530,196531,196532,196533,196534,196535,196536,196537,196538,196539,196540,196541,196542,196543,196544,196545,196546,196547,196548,196549,196550,196551,196552,196553,196554,196555,196556,196557,196558,196559,196560,196561,196562,196563,196564,196565,196566,196567,196568,196569,196570,196571,196572,196573,196574,196575,196576,196577,196578,196579,196580,196581,196582,196583,196584,196585,196586,196587,196588,196589,196590,196591,196592,196593,196594,196595,196596,196597,196598,196599,196600,196601,196602,196603,196604,196605,196606,196607,196628,196629,196630,196631,196632,196633,196634,196635,196636,196637,196638,196639,196640,196641,196642,196643,196644,196645,196646,196647,196648,196649,196650,196651,196652,196653,196654,196655,196656,196657,196658,196659,196660,196661,196662,196663,196664,196665,196666,196667,196668,196669,196670,196671,196672,196673,196674,196675,196676,196677,196678,196679,196680,196681,196682,196683,196684,196685,196686,196687,196688,196689,196690,196691,196692,196693,196694,196695,196696,196697,196698,196699,196700,196701,196702,196703,196704,196705,196706,196707,196708,196709,196710,196711,196712,196713,196714,196715,196716,196717,196718,196719,196720,196721,196722,196723,196724,196725,196726,196727,196728,196729,196730,196731,196732,196733,196734,196735,196736,196737,196738,196739,196740,196741,196742,196743,196744,196745,196746,196747,196748,196749,196750,196751,196752,196753,196754,196755,196756,196757,196758,196759,196760,196761,196762,196763,196764,196765,196766,196767,196768,196769,196770,196771,196772,196773,196774,196775,196776,196777,196778,196779,196780,196781,196782,196783,196784,196785,196786,196787,196788,196789,196790,196791,196792,196793,196794,196795,196796,196797,196798,196799,196800,196801,196802,196803,196804,196805,196806,196807,196808,196809,196810,196811,196812,196813,196814,196815,196816,196817,196818,196819,196820,196821,196822,196823,196824,196825,196826,196827,196828,196829,196830,196831,196832,196833,196834,196835,196836,196837,196838,196839,196840,196841,196842,196843,196844,196845,196846,196847,196848,196849,196850,196851,196852,196853,196854,196855,196856,196857,196858,196859,196860,196861,196862,196863,196864,196865,196866,196867,196868,196869,196870,196871,196872,196873,196874,196875,196876,196877,196878,196879,196880,196881,196882,196883,196884,196885,196886,196887,196888,196889,196890,196891,196892,196893,196894,196895,196896,196897,196898,196899,196900,196901,196902,196903,196904,196905,196906,196907,196908,196909,196910,196911,196912,196913,196914,196915,196916,196917,196918,196919,196920,196921,196922,196923,196924,196925,196926,196927,196928,196929,196930,196931,196932,196933,196934,196935,196936,196937,196938,196939,196940,196941,196942,196943,196944,196945,196946,196947,196948,196949,196950,196951,196952,196953,196954,196955,196956,196957,196958,196959,196961,196967,196968,197264,197265,197277,197278,197288,197291,197292,197293,197294,197295,197297,197298,197331,197332,197337,197338,197426,197429,197431,197432,198539,198540,198760,198761,198784,198785,198853,198854,198857,198862,198863,198864,198865,198866,198867,198868,199798,199799,199806,199807,200360,200364,200365,200366,200367,200368,200369,200370,200371,200372,200373,200374,200375,200376,200378,200379,200380,200383,201150,201152,201153,201154,201238,201239,201241,201242,201245,201247,225288,229378,229533,237920,241120,241636,244389,244390,248155,262905,266856,267542,270560,270570,276347,276348,276624,276625,277021,277022,277099,277100,277101,277102,277727,277728,277729,277730,277731,277732,277733,277734,277735,277736,277737,277738,277739,277740,277741,277742,277744,277745,277746,277747,277748,277749,277750,277751,277752,277753,277754,277755,277756,277757,277758,277759,277760,277761,277762,277763,277764,277765,277766,277767,277768,277769,277770,277771,277772,277773,277774,277775,277776,277777,277778,277779,277780,277781,277782,277783,277785,277786,277787,277788,277789,277790,277791,277792,277793,277794,277795,277796,277797,277798,277799,277800,277801,277802,277803,277804,277807,277808,277809,277810,277811,277812,277813,277814,277815,277816,277817,277818,277819,277820,277821,277822,277823,277824,278003,278004,278049,278050,278093,278094,278095,278096,278165,278166,278191,278193,278218,278219,278329,278330,278561,278562,278630,278632,278643,278644,278645,278646,278684,278686,278697,278698,278699,278700,278712,278713,278724,278725,278738,278740,278751,278752,278753,278754,278760,278761,278937,278938,278961,278962,279040,279041,279042,279043,279066,279067,279068,279069,279080,279081,279281,279283,279757,279758,280458,280459,280911,288531,289126,289628,289700,289980,290009,290011,290015,290019,290020,290024,290025,290029,290030,290032,290410,290412,290517,290521,290522,290526,290527,290531,290532,290536,290537,290541,290542,290546,290547,290551,290552,290556,290557,290561,290562,290564,290578,290582,290583,290585,290594,290598,290599,290603,290604,290608,290609,290614,290619,290623,290624,290626,290631,290635,290636,290640,290641,290645,290646,290648,290716,290718,290722,290726,290727,290731,290732,290736,290737,290741,290742,290746,290747,290749,290753,290755,290764,290768,290769,290773,290774,290778,290779,290781,290861,290865,290866,290868,290872,290876,290877,290879,290880,290884,290885,290889,290890,290894,290895,290897,290903,290907,290908,290912,290913,290917,290918,290920,290924,290928,290929,290933,290934,290938,290939,290943,290944,290948,290949,290953,290954,290956,290961,290963,290967,290985,291419,291421,291545,291591,291600,291625,291628,291638,291659,291665,291743,291745,291748,291792,291882,292261,294912,294914,295069,295093,300065,300096,300099,300124,301966,301976,313506,313507,313939,313949,314339,314340,315602,317082,319759,319764,322406,322407,324138,324139,324534,324535,324686,324689,326742,326743,327680,327709,329937,329938,330255,330256,335754,335755,335850,335851,335855,335856,335904,335905,335954,335955,336011,336012,336014,336015,336271,336272,336376,336377,336427,336428,337139,337140,337145,337146,337180,337181,337185,337186,337213,337214,337238,337239,337242,337243,337256,337257,337270,337271,337284,337285,337294,337295,337304,337305,337456,337457,337462,337463,337467,337468,337474,337475,337500,337501,337504,337505,337572,337573,337578,337579,337585,337586,337591,337592,337598,337599,337609,337610,337619,337620,337625,337626,337669,337670,337675,337676,337707,337708,337718,337719,337725,337726,337788,337789,337793,337794,337803,337804,337810,337811,337818,337819,337822,337823,337826,337827,337832,337833,337838,337839,337844,337845,337851,337852,337928,337929,337935,337936,337941,337942,337946,337947,337952,337953,337987,337988,337993,337994,338002,338003,338012,338013,338018,338019,338028,338029,338036,338037,338041,338042,338047,338048,338075,338076,338081,338082,338094,338095,338166,338167,338172,338173,338187,338188,338202,338203,338218,338219,338234,338235,338250,338251,338283,338284,338289,338290,338383,338384,338416,338417,338473,338474,338610,338611,338616,338617,338622,338623,338628,338629,338633,338634,339578,339579,339588,339589,339629,339630,339658,339659,340335,340336,340354,340355,340359,340360,340391,340392,340562,340563,340568,340569,340639,340640,340641,340642,340646,340647,340688,340689,340691,340692,340696,340697,340705,340706,340719,340720,341216,341217,341218,341219,341235,341236,341240,341241,341246,341247,341282,341283,341531,341532,341568,341569,341578,341579,341584,341585,341590,341591,341596,341597,341610,341611,341616,341617,341656,341657,341741,341742,341758,341759,341945,341946,342141,342142,342237,342238,342244,342245,343280,343281,344300,344301,345398,345399,346152,346153,348907,348908,352042,352044,352309,352310,353700,353702,353809,353810,353811,353812,353820,353821,354121,354122,360448,360468,362009,362020,362576,362577,364668,364669,375207,375208,375549,375612,382104,382105,382419,382420,387476,387482,388517,388518,392741,392742,392744,392745,392858,392859,392862,392863,392864,392865,393216,393243,393259,393260,394518,394541,397533,397540,397554,397565,397602,397603,397615,397616,404006,404007,406415,406416,406422,406424,406431,406432,406898,406899,409098,409099,410396,410398,410402,410403,410894,410895,411362,411365,412084,412085,413090,413091,413557,413558,416769,416770,416872,416873,416884,416885,421881,421882,425984,426014,428966,428967,433749,433750,439870,439871,442586,442587,442589,442590,442724,442725,443001,443002,443115,443116,443122,443123,443129,443130,443142,443143,443156,443157,443167,443168,443188,443189,443386,443387,443393,443394,443399,443400,443404,443405,443414,443415,443810,443811,443814,443815,443873,443874,443886,443887,443893,443894,443899,443900,443935,443936,443940,443941,443944,443945,443968,443969,443973,443974,443980,443981,444012,444013,444065,444066,444071,444072,444077,444078,444090,444091,444220,444221,444233,444234,444237,444238,444332,444333,444336,444337,444349,444350,444371,444372,444436,444437,444454,444455,444501,444502,444574,444575,444619,444620,444737,444738,444822,444823,445997,445998,446003,446004,446005,446006,446017,446018,446034,446035,446160,446161,446711,446712,446714,446715,446716,446717,446757,446758,447002,447003,447094,447095,447096,447097,447106,447107,447118,447119,447122,447123,447132,447133,447134,447135,447141,447142,447869,447870,447920,447921,448362,448363,448370,448371,448374,448375,448379,448380,448387,448388,448392,448393,448399,448400,448403,448404,448454,448455,448528,448529,448562,448563,448579,448580,448642,448643,448769,448770,448820,448821,448888,448889,449017,449018,449020,449021,458752,458772,459747,459760,459765,460680,460779,460812,469071,469073,475254,475256,475410,475414,475492,475494,475696,475698,475711,475715,481648,481650,482756,482758,482837,482839,483176,483178,483890,483892,486666,486668,486741,486745,486759,486763,487141,487143,487161,487163,488920,488921,489246,489248,491520,491543,496901,496903,496955,496959,497427,497429,498910,498912,499026,499028,499092,499094,499103,499107,500084,500085,500910,500912,501052,501054,502598,502599,503589,503591,507905,507907,514178,514180,517256,517258,524288,524352,537410,537411,537465,537466,543671,543672,544777,544779,545073,545077,555024,555025,555318,555319,555492,555493,555744,555745,555841,555842,557056,557148,557413,557415,562770,562771,564395,564396,564413,564414,564436,564437,564556,564557,564579,564580,565468,565470,569315,569316,570112,570113,572612,572614,581007,581008,581383,581384,582916,582918,586790,586794,586832,586836,586864,586868,586880,586883,586886,586888,587405,587406,589100,589102,589113,589117,589179,589181,589185,589190,589824,589950,600064,600065,603214,603218,603308,603309,603382,603386,603483,603484,603488,603494,603495,603496,603586,603590,603594,603595,606380,606384,606431,606432,606447,606453,606454,606455,606612,606616,606623,606624,610352,610353,611152,611153,611679,611683,611722,611723,613344,613348,614527,614528,614684,614690,614700,614704,614747,614751,622592,622609,622612,622619,623551,623555,623635,623636,623664,623670,623674,623675,625836,625840,625879,625880,626653,626657,626682,626683,626770,626774,626780,626781,627090,627094,627107,633280,635237,645303,645442,645443") == "087eda25583b4acbec0b633a8452297f43606a45" || 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"), "2112,1,191,219,228,281,282,542,546,558,559,578,579,1896,1897,2326,2327,26231,26232,27599,27600,32768,32770,32925,32945,33004,33005,33219,33221,33381,33385,33393,33394,33402,33406,33411,33412,33632,33633,33645,33649,33653,33654,34883,34889,34921,34922,34928,34934,34935,34936,34941,34947,34948,34949,35069,35075,35081,35082,36638,36639,36704,36705,37230,37234,37263,37264,37334,37336,37429,37433,37437,37438,37469,37475,37476,37477,37576,37582,37583,38951,41743,41747,41775,41776,41790,41796,41797,41798,41800,41801,45049,45053,45098,45099,45469,45473,45481,45482,45569,45575,45580,45581,45709,45713,45719,45720,45982,45983,46175,46179,46194,46195,50812,50816,50910,50911,50916,50922,50923,50924,51611,51615,51637,51638,51696,51697,51768,51772,51776,51777,53060,53064,53089,53090,53561,53567,53568,53569,55331,55335,55378,55379,55383,55389,55390,55391,55413,55417,55441,55442,57134,57138,57162,57163,58009,58013,58036,58037,58120,58124,58129,58130,61437,61439,65225,65226,65536,65556,66191,66192,66816,66820,68982,68983,69302,69306,69319,69320,69352,69356,69378,69379,69829,69833,70236,70237,70920,70924,70940,70941,73326,73330,73377,73378,73774,73778,73791,73792,75592,75593,81128,81132,81215,81216,82143,82147,82172,82173,84233,84234,86830,86831,89220,89224,89342,89343,98304,98306,98461,98481,102028,102032,102055,102056,104449,104453,104503,104504,106259,106263,106297,106298,106336,106342,106346,106347,109688,109689,110225,110229,110267,110268,112878,112879,114080,114084,114107,114108,114472,114478,114492,114493,115608,115612,115638,115639,115652,115658,115659,115660,131072,131092,136301,136302,136774,136775,137647,137651,137881,137882,138270,138276,138290,138291,138301,138305,138312,138313,143064,143065,145900,145904,145987,145988,148547,148551,148591,148592,148643,148647,148651,148652,148655,148661,148665,148666,148671,148677,148678,148679,152552,152556,152623,152624,152708,152712,152717,152718,152720,152726,152727,152728,152772,152778,152779,152780,154590,154596,154638,154639,155039,155045,155055,155056,155252,155256,155260,155261,155264,155268,155272,155273,155928,155934,155957,155958,156367,156371,156381,156382,156419,156425,156426,156427,159502,159506,159545,159546,159838,159842,159851,159852,159922,159926,159930,159931,160668,160672,160690,160691,160794,160798,160803,160804,162020,162024,162050,162051,163840,163842,163997,164017,166981,167057,167059,167060,168820,168824,168945,168946,168954,168960,168961,168962,169588,169592,169607,169608,171096,171100,171115,171116,173443,173447,173474,173475,174368,174372,174398,174399,174403,174409,174410,174411,174433,174439,174440,174441,174445,174449,174457,174458,174482,174488,174489,174490,177553,177557,177605,177606,177891,177895,177904,177905,178263,178269,178278,178279,179763,179767,179795,179796,180773,180777,181711,181712,183920,183924,183964,183967,183991,183992,183994,183995,183996,183997,183998,183999,184029,184030,186504,186508,186522,186523,187043,187047,187054,187055,189677,189682,189698,189699,190034,190035,190263,190264,191205,191214,191542,191543,191979,191980,193700,193701,196491,196496,196497,196498,196499,196500,196501,196502,196503,196504,196505,196506,196507,196508,196509,196510,196511,196512,196513,196514,196515,196516,196517,196518,196519,196520,196521,196522,196523,196524,196525,196526,196527,196528,196529,196530,196531,196532,196533,196534,196535,196536,196537,196538,196539,196540,196541,196542,196543,196544,196545,196546,196547,196548,196549,196550,196551,196552,196553,196554,196555,196556,196557,196558,196559,196560,196561,196562,196563,196564,196565,196566,196567,196568,196569,196570,196571,196572,196573,196574,196575,196576,196577,196578,196579,196580,196581,196582,196583,196584,196585,196586,196587,196588,196589,196590,196591,196592,196593,196594,196595,196596,196597,196598,196599,196600,196601,196602,196603,196604,196605,196606,196607,196628,196629,196630,196631,196632,196633,196634,196635,196636,196637,196638,196639,196640,196641,196642,196643,196644,196645,196646,196647,196648,196649,196650,196651,196652,196653,196654,196655,196656,196657,196658,196659,196660,196661,196662,196663,196664,196665,196666,196667,196668,196669,196670,196671,196672,196673,196674,196675,196676,196677,196678,196679,196680,196681,196682,196683,196684,196685,196686,196687,196688,196689,196690,196691,196692,196693,196694,196695,196696,196697,196698,196699,196700,196701,196702,196703,196704,196705,196706,196707,196708,196709,196710,196711,196712,196713,196714,196715,196716,196717,196718,196719,196720,196721,196722,196723,196724,196725,196726,196727,196728,196729,196730,196731,196732,196733,196734,196735,196736,196737,196738,196739,196740,196741,196742,196743,196744,196745,196746,196747,196748,196749,196750,196751,196752,196753,196754,196755,196756,196757,196758,196759,196760,196761,196762,196763,196764,196765,196766,196767,196768,196769,196770,196771,196772,196773,196774,196775,196776,196777,196778,196779,196780,196781,196782,196783,196784,196785,196786,196787,196788,196789,196790,196791,196792,196793,196794,196795,196796,196797,196798,196799,196800,196801,196802,196803,196804,196805,196806,196807,196808,196809,196810,196811,196812,196813,196814,196815,196816,196817,196818,196819,196820,196821,196822,196823,196824,196825,196826,196827,196828,196829,196830,196831,196832,196833,196834,196835,196836,196837,196838,196839,196840,196841,196842,196843,196844,196845,196846,196847,196848,196849,196850,196851,196852,196853,196854,196855,196856,196857,196858,196859,196860,196861,196862,196863,196864,196865,196866,196867,196868,196869,196870,196871,196872,196873,196874,196875,196876,196877,196878,196879,196880,196881,196882,196883,196884,196885,196886,196887,196888,196889,196890,196891,196892,196893,196894,196895,196896,196897,196898,196899,196900,196901,196902,196903,196904,196905,196906,196907,196908,196909,196910,196911,196912,196913,196914,196915,196916,196917,196918,196919,196920,196921,196922,196923,196924,196925,196926,196927,196928,196929,196930,196931,196932,196933,196934,196935,196936,196937,196938,196939,196940,196941,196942,196943,196944,196945,196946,196947,196948,196949,196950,196951,196952,196953,196954,196955,196956,196957,196958,196959,196961,196967,196968,197264,197265,197277,197278,197288,197291,197292,197293,197294,197295,197297,197298,197331,197332,197337,197338,197426,197429,197431,197432,198539,198540,198760,198761,198784,198785,198853,198854,198857,198862,198863,198864,198865,198866,198867,198868,199798,199799,199806,199807,200360,200364,200365,200366,200367,200368,200369,200370,200371,200372,200373,200374,200375,200376,200378,200379,200380,200383,201150,201152,201153,201154,201238,201239,201241,201242,201245,201247,225288,229378,229533,237920,241120,241636,244389,244390,248155,262905,266856,267542,270560,270570,276347,276348,276624,276625,277021,277022,277099,277100,277101,277102,277727,277728,277729,277730,277731,277732,277733,277734,277735,277736,277737,277738,277739,277740,277741,277742,277744,277745,277746,277747,277748,277749,277750,277751,277752,277753,277754,277755,277756,277757,277758,277759,277760,277761,277762,277763,277764,277765,277766,277767,277768,277769,277770,277771,277772,277773,277774,277775,277776,277777,277778,277779,277780,277781,277782,277783,277785,277786,277787,277788,277789,277790,277791,277792,277793,277794,277795,277796,277797,277798,277799,277800,277801,277802,277803,277804,277807,277808,277809,277810,277811,277812,277813,277814,277815,277816,277817,277818,277819,277820,277821,277822,277823,277824,278003,278004,278049,278050,278093,278094,278095,278096,278165,278166,278191,278193,278218,278219,278329,278330,278561,278562,278630,278632,278643,278644,278645,278646,278684,278686,278697,278698,278699,278700,278712,278713,278724,278725,278738,278740,278751,278752,278753,278754,278760,278761,278937,278938,278961,278962,279040,279041,279042,279043,279066,279067,279068,279069,279080,279081,279281,279283,279757,279758,280458,280459,280911,288531,289126,289628,289700,289980,290009,290011,290015,290019,290020,290024,290025,290029,290030,290032,290410,290412,290517,290521,290522,290526,290527,290531,290532,290536,290537,290541,290542,290546,290547,290551,290552,290556,290557,290561,290562,290564,290578,290582,290583,290585,290594,290598,290599,290603,290604,290608,290609,290614,290619,290623,290624,290626,290631,290635,290636,290640,290641,290645,290646,290648,290716,290718,290722,290726,290727,290731,290732,290736,290737,290741,290742,290746,290747,290749,290753,290755,290764,290768,290769,290773,290774,290778,290779,290781,290861,290865,290866,290868,290872,290876,290877,290879,290880,290884,290885,290889,290890,290894,290895,290897,290903,290907,290908,290912,290913,290917,290918,290920,290924,290928,290929,290933,290934,290938,290939,290943,290944,290948,290949,290953,290954,290956,290961,290963,290967,290985,291419,291421,291545,291591,291600,291625,291628,291638,291659,291665,291743,291745,291748,291792,291882,292261,294912,294914,295069,295093,300065,300096,300099,300124,301966,301976,313506,313507,313939,313949,314339,314340,315602,317082,319759,319764,322406,322407,324138,324139,324534,324535,324686,324689,326742,326743,327680,327709,329937,329938,330255,330256,335754,335755,335850,335851,335855,335856,335904,335905,335954,335955,336011,336012,336014,336015,336271,336272,336376,336377,336427,336428,337139,337140,337145,337146,337180,337181,337185,337186,337213,337214,337238,337239,337242,337243,337256,337257,337270,337271,337284,337285,337294,337295,337304,337305,337456,337457,337462,337463,337467,337468,337474,337475,337500,337501,337504,337505,337572,337573,337578,337579,337585,337586,337591,337592,337598,337599,337609,337610,337619,337620,337625,337626,337669,337670,337675,337676,337707,337708,337718,337719,337725,337726,337788,337789,337793,337794,337803,337804,337810,337811,337818,337819,337822,337823,337826,337827,337832,337833,337838,337839,337844,337845,337851,337852,337928,337929,337935,337936,337941,337942,337946,337947,337952,337953,337987,337988,337993,337994,338002,338003,338012,338013,338018,338019,338028,338029,338036,338037,338041,338042,338047,338048,338075,338076,338081,338082,338094,338095,338166,338167,338172,338173,338187,338188,338202,338203,338218,338219,338234,338235,338250,338251,338283,338284,338289,338290,338383,338384,338416,338417,338473,338474,338610,338611,338616,338617,338622,338623,338628,338629,338633,338634,339578,339579,339588,339589,339629,339630,339658,339659,340335,340336,340354,340355,340359,340360,340391,340392,340562,340563,340568,340569,340639,340640,340641,340642,340646,340647,340688,340689,340691,340692,340696,340697,340705,340706,340719,340720,341216,341217,341218,341219,341235,341236,341240,341241,341246,341247,341282,341283,341531,341532,341568,341569,341578,341579,341584,341585,341590,341591,341596,341597,341610,341611,341616,341617,341656,341657,341741,341742,341758,341759,341945,341946,342141,342142,342237,342238,342244,342245,343280,343281,344300,344301,345398,345399,346152,346153,348907,348908,352042,352044,352309,352310,353700,353702,353809,353810,353811,353812,353820,353821,354121,354122,360448,360468,362009,362020,362576,362577,364668,364669,375207,375208,375549,375612,382104,382105,382419,382420,387476,387482,388517,388518,392741,392742,392744,392745,392858,392859,392862,392863,392864,392865,393216,393243,393259,393260,394518,394541,397533,397540,397554,397565,397602,397603,397615,397616,404006,404007,406415,406416,406422,406424,406431,406432,406898,406899,409098,409099,410396,410398,410402,410403,410894,410895,411362,411365,412084,412085,413090,413091,413557,413558,416769,416770,416872,416873,416884,416885,421881,421882,425984,426014,428966,428967,433749,433750,439870,439871,442586,442587,442589,442590,442724,442725,443001,443002,443115,443116,443122,443123,443129,443130,443142,443143,443156,443157,443167,443168,443188,443189,443386,443387,443393,443394,443399,443400,443404,443405,443414,443415,443810,443811,443814,443815,443873,443874,443886,443887,443893,443894,443899,443900,443935,443936,443940,443941,443944,443945,443968,443969,443973,443974,443980,443981,444012,444013,444065,444066,444071,444072,444077,444078,444090,444091,444220,444221,444233,444234,444237,444238,444332,444333,444336,444337,444349,444350,444371,444372,444436,444437,444454,444455,444501,444502,444574,444575,444619,444620,444737,444738,444822,444823,445997,445998,446003,446004,446005,446006,446017,446018,446034,446035,446160,446161,446711,446712,446714,446715,446716,446717,446757,446758,447002,447003,447094,447095,447096,447097,447106,447107,447118,447119,447122,447123,447132,447133,447134,447135,447141,447142,447869,447870,447920,447921,448362,448363,448370,448371,448374,448375,448379,448380,448387,448388,448392,448393,448399,448400,448403,448404,448454,448455,448528,448529,448562,448563,448579,448580,448642,448643,448769,448770,448820,448821,448888,448889,449017,449018,449020,449021,458752,458772,459747,459760,459765,460680,460779,460812,469071,469073,475254,475256,475410,475414,475492,475494,475696,475698,475711,475715,481648,481650,482756,482758,482837,482839,483176,483178,483890,483892,486666,486668,486741,486745,486759,486763,487141,487143,487161,487163,488920,488921,489246,489248,491520,491543,496901,496903,496955,496959,497427,497429,498910,498912,499026,499028,499092,499094,499103,499107,500084,500085,500910,500912,501052,501054,502598,502599,503589,503591,507905,507907,514178,514180,517256,517258,524288,524352,537410,537411,537465,537466,543671,543672,544777,544779,545073,545077,555024,555025,555318,555319,555492,555493,555744,555745,555841,555842,557056,557148,557413,557415,562770,562771,564395,564396,564413,564414,564436,564437,564556,564557,564579,564580,565468,565470,569315,569316,570112,570113,572612,572614,581007,581008,581383,581384,582916,582918,586790,586794,586832,586836,586864,586868,586880,586883,586886,586888,587405,587406,589100,589102,589113,589117,589179,589181,589185,589190,589824,589950,600064,600065,603214,603218,603308,603309,603382,603386,603483,603484,603488,603494,603495,603496,603586,603590,603594,603595,606380,606384,606431,606432,606447,606453,606454,606455,606612,606616,606623,606624,610352,610353,611152,611153,611679,611683,611722,611723,613344,613348,614527,614528,614684,614690,614700,614704,614747,614751,622592,622609,622612,622619,623551,623555,623635,623636,623664,623670,623674,623675,625836,625840,625879,625880,626653,626657,626682,626683,626770,626774,626780,626781,627090,627094,627107,633280,635237,645303,645442,645443") && 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"), "266,1,100,110,114,119,120,201,205,210,211,216,217,480,484,488,489,491,492,494,505,517,521,525,526,529,535,536,537,545,549,553,554,1165,1502,1579,1580,12263,12264,12441,12492,12917,12918,12922,12924,12943,12944,12948,12949,12954,12955,12956,12957,12960,12961,12962,12963,12966,12967,12968,12969,12972,12973,12974,12975,12978,12979,12980,12981,12984,12985,12986,12987,12991,12992,12997,12998,13002,13003,13007,13008,13012,13013,13486,13487,14391,14397,25648,25649,25931,25932,28740,28741,32768,32770,32837,32874,33991,33992,34830,34831,34835,34837,34854,34855,34890,34891,34900,34901,34903,34904,34956,34957,35007,35008,35014,35015,35040,35041,35191,35192,35591,35592,35594,35596,35660,35661,35731,35732,35799,35800,35802,35803,35805,35806,35865,35867,35869,35870,35934,35935,36005,36006,36073,36074,36076,36077,36079,36082,36083,36084,36146,36147,36213,36214,36216,36217,36220,36224,36226,36227,36229,36231,36233,38661,38721,38722,38794,38795,38797,38798,38860,38861,38931,38932,38940,38944,38945,38946,39145,39146,39212,39213,39215,39216,39219,39224,46644,46645,46809,46810,47119,47120,47181,47182,47331,47332,47411,47412,47444,47445,47521,47522,47589,47590,47662,47663,47755,47756,47828,47829,47874,47875,47979,47980,48023,48024,48026,48027,48059,48060,48221,48222,48293,48294,48346,48347,48671,48672,48674,48675,48769,48770,48894,48895,48969,48970,49003,49004,49067,49068,49139,49140,49690,49692,49697,49699,49767,49768,49820,49821,50348,50349,50634,98306,98373,163842,163909,229378,229445,262165,262167,276479,277475,281874,281944,281945") == "71122b449e60de2b969751c94f7efb21ab256f37" || 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"), "266,1,100,110,114,119,120,201,205,210,211,216,217,480,484,488,489,491,492,494,505,517,521,525,526,529,535,536,537,545,549,553,554,1165,1502,1579,1580,12263,12264,12441,12492,12917,12918,12922,12924,12943,12944,12948,12949,12954,12955,12956,12957,12960,12961,12962,12963,12966,12967,12968,12969,12972,12973,12974,12975,12978,12979,12980,12981,12984,12985,12986,12987,12991,12992,12997,12998,13002,13003,13007,13008,13012,13013,13486,13487,14391,14397,25648,25649,25931,25932,28740,28741,32768,32770,32837,32874,33991,33992,34830,34831,34835,34837,34854,34855,34890,34891,34900,34901,34903,34904,34956,34957,35007,35008,35014,35015,35040,35041,35191,35192,35591,35592,35594,35596,35660,35661,35731,35732,35799,35800,35802,35803,35805,35806,35865,35867,35869,35870,35934,35935,36005,36006,36073,36074,36076,36077,36079,36082,36083,36084,36146,36147,36213,36214,36216,36217,36220,36224,36226,36227,36229,36231,36233,38661,38721,38722,38794,38795,38797,38798,38860,38861,38931,38932,38940,38944,38945,38946,39145,39146,39212,39213,39215,39216,39219,39224,46644,46645,46809,46810,47119,47120,47181,47182,47331,47332,47411,47412,47444,47445,47521,47522,47589,47590,47662,47663,47755,47756,47828,47829,47874,47875,47979,47980,48023,48024,48026,48027,48059,48060,48221,48222,48293,48294,48346,48347,48671,48672,48674,48675,48769,48770,48894,48895,48969,48970,49003,49004,49067,49068,49139,49140,49690,49692,49697,49699,49767,49768,49820,49821,50348,50349,50634,98306,98373,163842,163909,229378,229445,262165,262167,276479,277475,281874,281944,281945") && 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"), "196,5402,5404,9747,9749,11890,11892,11948,11952,12673,12675,12691,12695,12759,12761,21769,21771,22293,22297,24141,24143,74262,74266,74398,74402,74418,74422,74436,74440,74467,74471,119795,119799,119819,119821,119835,119837,119850,119854,119870,119874,119888,119892,119899,119903,123021,123025,123082,123086,123094,123098,123126,123130,123152,123156,123177,123181,123209,123210,123781,123783,123787,123791,123792,123794,123799,123803,123804,123808,123809,123813,123814,123818,123819,123823,123824,123828,123829,123833,123834,123836,123843,123847,123848,123852,123853,123857,123858,123862,123863,123865,123866,123870,123871,123875,123876,123878,123879,123883,123884,123888,123889,123893,123894,123898,123899,123903,123904,123908,123909,123913,123914,123918,123919,123921,123925,123929,123930,123934,123935,123939,123940,123944,123945,123947,123948,123952,123953,123955,123956,123960,123961,123963,123964,123968,123969,123973,123974,123976,123977,123981,123983,123994,123995,124027,124028,124092,124093,124137,139512,139514,139565,139569,146441,146443,172152,172154,172580,172582,181893,181895,181940,181942,182082,182084,183340,183342,184419,184421,198261,198263,219284,219286,225940,225942,228740,228742,231187,231189,278015,278019,280594,280597,280886,280888,280900,280904,280928,280931,280943,280946,284280,284281,291674,296297,296371,296372") == "6bc0cbb0f66770cd9578dfb4f25af35c1fc2d287" || 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
check_first_block(map_partition("product"));
ifelse (block_image_recover(map_partition("product"), "196,5402,5404,9747,9749,11890,11892,11948,11952,12673,12675,12691,12695,12759,12761,21769,21771,22293,22297,24141,24143,74262,74266,74398,74402,74418,74422,74436,74440,74467,74471,119795,119799,119819,119821,119835,119837,119850,119854,119870,119874,119888,119892,119899,119903,123021,123025,123082,123086,123094,123098,123126,123130,123152,123156,123177,123181,123209,123210,123781,123783,123787,123791,123792,123794,123799,123803,123804,123808,123809,123813,123814,123818,123819,123823,123824,123828,123829,123833,123834,123836,123843,123847,123848,123852,123853,123857,123858,123862,123863,123865,123866,123870,123871,123875,123876,123878,123879,123883,123884,123888,123889,123893,123894,123898,123899,123903,123904,123908,123909,123913,123914,123918,123919,123921,123925,123929,123930,123934,123935,123939,123940,123944,123945,123947,123948,123952,123953,123955,123956,123960,123961,123963,123964,123968,123969,123973,123974,123976,123977,123981,123983,123994,123995,124027,124028,124092,124093,124137,139512,139514,139565,139569,146441,146443,172152,172154,172580,172582,181893,181895,181940,181942,182082,182084,183340,183342,184419,184421,198261,198263,219284,219286,225940,225942,228740,228742,231187,231189,278015,278019,280594,280597,280886,280888,280900,280904,280928,280931,280943,280946,284280,284281,291674,296297,296371,296372") && 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;

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

ui_print("Patching boot image...");
show_progress(0.100000, 10);
patch_partition("EMMC:/dev/block/bootdevice/by-name/boot:134217728:4d2d113ceb1b6e4fe7bc628510c5b6195b3053bf",
                "EMMC:/dev/block/bootdevice/by-name/boot:134217728:92e9b25b8d4ca75facebdc083175ce4b33846a33",
                package_extract_file("boot.img.p")) ||
    abort("E3008: Failed to apply patch to EMMC:/dev/block/bootdevice/by-name/boot:134217728:92e9b25b8d4ca75facebdc083175ce4b33846a33");

# ---- 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");
show_progress(0.600000, 600);

# --- Start patching dynamic partitions ---


# Patch partition vendor

ui_print("Patching vendor image after verification.");
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 system

ui_print("Patching system image after verification.");
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.");

# Update dynamic partition metadata

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

# Patch partition product

ui_print("Patching product image after verification.");
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.");

# --- End patching dynamic partitions ---

show_progress(0.100000, 2);

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

ui_print("Patching vbmeta dtbo logo binimages...");
package_extract_file("firmware-update/vbmeta_system.img", "/dev/block/bootdevice/by-name/vbmeta_system");
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");
