From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by mx.groups.io with SMTP id smtpd.web11.99.1615913413780397372 for ; Tue, 16 Mar 2021 09:50:14 -0700 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: intel.com, ip: 134.134.136.65, mailfrom: anuj.mittal@intel.com) IronPort-SDR: oKlt8lv58bOfgfmT19YhFHtYcBxk7p7CtuAl8xnqoiDKAXmckzOl4nDZdJ/Py8oOB5tND+0390 Zr6G6btULAvA== X-IronPort-AV: E=McAfee;i="6000,8403,9925"; a="189344162" X-IronPort-AV: E=Sophos;i="5.81,254,1610438400"; d="scan'208";a="189344162" Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Mar 2021 09:50:11 -0700 IronPort-SDR: znFq6K5vjavyWWOI+SXH+OmxTwYSdovdRKB2LEg+6T0i+9bjHYMSVWJEXse79wkpfI7oKAXtYd SdMsp/+51xmA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.81,254,1610438400"; d="scan'208";a="601893058" Received: from pgsmsx603.gar.corp.intel.com ([10.108.199.138]) by fmsmga006.fm.intel.com with ESMTP; 16 Mar 2021 09:50:07 -0700 Received: from pgsmsx601.gar.corp.intel.com (10.108.199.136) by pgsmsx603.gar.corp.intel.com (10.108.199.138) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2106.2; Wed, 17 Mar 2021 00:50:06 +0800 Received: from pgsmsx601.gar.corp.intel.com ([10.108.199.136]) by pgsmsx601.gar.corp.intel.com ([10.108.199.136]) with mapi id 15.01.2106.013; Wed, 17 Mar 2021 00:50:06 +0800 From: "Anuj Mittal" To: "Saini, Naveen Kumar" , "alex.kanavin@gmail.com" CC: "openembedded-core@lists.openembedded.org" Subject: Re: [OE-core] [PATCH] grub: upgrade 2.04 -> 2.06-rc1 Thread-Topic: [OE-core] [PATCH] grub: upgrade 2.04 -> 2.06-rc1 Thread-Index: AQHXGhZQHcPwc/LxX0ylZYBZuT7Nq6qFtrOAgACX2IA= Date: Tue, 16 Mar 2021 16:50:05 +0000 Message-ID: <999f8cae4d12de651a267d7aef360a10690d7687.camel@intel.com> References: <20210316035243.6637-1-naveen.kumar.saini@intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.108.32.68] MIME-Version: 1.0 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-ID: <0608816466FA6B4EA5772E2D70EB1A68@intel.com> Content-Transfer-Encoding: base64 SSB0aGluayB0aGUgYW5ub3VuY2VtZW50IHNhaWQgdGhlIGZpbmFsIHJlbGVhc2UgbWlnaHQgdGFr ZSBhIG1vbnRoIG9yDQpzby7CoFRoaXMgdmVyc2lvbiBpbmNsdWRlcyBzb21lIGltcG9ydGFudCBz ZWN1cml0eSBmaXhlcy4gSWYgd2UgZG9uJ3QNCnRha2UgdGhpcyB2ZXJzaW9uLCB3ZSBtaWdodCBo YXZlIHRvIGJhY2twb3J0IG1vcmUgdGhhbiBhIGh1bmRyZWQNCmNvbW1pdHM6DQoNCmh0dHBzOi8v c2Fsc2EuZGViaWFuLm9yZy9ncnViLXRlYW0vZ3J1Yi8tL2NvbW1pdC8zN2MyYTU5NDYyNWVmYmE4 YjdmMTBkMThhNDQ0MzkzOTgyZDJlMzFmDQoNClRoYW5rcywNCg0KQW51ag0KDQpPbiBUdWUsIDIw MjEtMDMtMTYgYXQgMDg6NDYgKzAxMDAsIEFsZXhhbmRlciBLYW5hdmluIHdyb3RlOg0KPiBvZS1j b3JlIGdlbmVyYWxseSB3YWl0cyBmb3IgdGhlIGZpbmFsIHJlbGVhc2VzLCBhbmQgZG9lcyBub3Qg cHJvdmlkZQ0KPiBhbHBoYXMsIGJldGFzIG9yIHJjcy4gSXMgdGhlIGZpbmFsIHJlbGVhc2UgY29t aW5nIHNvb24/DQo+IA0KPiBBbGV4DQo+IA0KPiBPbiBUdWUsIDE2IE1hciAyMDIxIGF0IDA0OjQx LCBOYXZlZW4gU2FpbmkNCj4gPG5hdmVlbi5rdW1hci5zYWluaUBpbnRlbC5jb20+IHdyb3RlOg0K PiA+IDIuMDYgUkMxIHJlbGVhc2UgaGF2ZSBhIG51bWJlciBvZiBDVkVzIGZpeGVkOg0KPiA+IENW RS0yMDIwLTE1NzA1DQo+ID4gQ1ZFLTIwMjEtMzQxOA0KPiA+IENWRS0yMDIwLTI3NzQ5DQo+ID4g Q1ZFLTIwMjEtMjAyMzMNCj4gPiBDVkUtMjAyMS0yMDIyNQ0KPiA+IENWRS0yMDIwLTI1NjQ3DQo+ ID4gQ1ZFLTIwMjAtMjU2MzINCj4gPiBDVkUtMjAyMC0yNzc3OQ0KPiA+IENWRS0yMDIwLTE0Mzcy DQo+ID4gQ1ZFLTIwMjAtMTU3MDcNCj4gPiBDVkUtMjAyMC0xNTcwNg0KPiA+IENWRS0yMDIwLTE0 MzA5DQo+ID4gQ1ZFLTIwMjAtMTQzMTANCj4gPiBDVkUtMjAyMC0xNDMxMQ0KPiA+IENWRS0yMDIw LTE0MzA4DQo+ID4gQ1ZFLTIwMjAtMTA3MTMNCj4gPiBDVkUtMjAxNC00NjA3DQo+ID4gDQo+ID4g RHJvcHBlZCBiYWNrcG9ydGVkIHBhdGNoZXMuDQo+ID4gDQo+ID4gT2ZmaWNpYWwgdGFyIGZpbGUg Zm9yIDIuMDYtcmMxIGlzIG5vdCBhdmFpbGFibGUsIHNvIG5lZWQgdG8gZG93bmxvYWQNCj4gPiBn bnVibGliDQo+ID4gbW9kdWxlIGFkZGl0aW9uYWxseSBpbiBvcmRlciB0byBidWlsZCBmcm9tIGdp dCByZXBvLg0KPiA+IA0KPiA+IFNpZ25lZC1vZmYtYnk6IE5hdmVlbiBTYWluaSA8bmF2ZWVuLmt1 bWFyLnNhaW5pQGludGVsLmNvbT4NCj4gPiAtLS0NCj4gPiDCoC4uLjUwN2NlMzBmNzc1MDA4ZTA5 MzU4MGYwYzk0OTlkZmIyYzQ4NS5wYXRjaCB8wqAgwqA0NyAtDQo+ID4gwqAuLi4vZ3J1Yi9maWxl cy9DVkUtMjAyMC0xMDcxMy5wYXRjaMKgIMKgIMKgIMKgIMKgIMKgfMKgIMKgNzMgLQ0KPiA+IMKg Li4uMzA4LWNhbGxvYy1Vc2UtY2FsbG9jLWF0LW1vc3QtcGxhY2VzLnBhdGNoIHwgMTg2MyAtLS0t LS0tLS0tLS0tLS0NCj4gPiAtLQ0KPiA+IMKgLi4ubG93LWNoZWNraW5nLXByaW1pdGl2ZXMtd2hl cmUtd2UtZG8tLnBhdGNoIHwgMTMzMCAtLS0tLS0tLS0tLS0NCj4gPiDCoC4uLnNlLWFmdGVyLWZy ZWUtd2hlbi1yZWRlZmluaW5nLWEtZnVuYy5wYXRjaCB8wqAgMTE3IC0tDQo+ID4gwqAuLi5lci1v dmVyZmxvd3MtaW4taW5pdHJkLXNpemUtaGFuZGxpbmcucGF0Y2ggfMKgIDE3NyAtLQ0KPiA+IMKg Li4uL2dydWIvZmlsZXMvYXV0b2dlbi5zaC1leGNsdWRlLXBjLnBhdGNowqAgwqAgfMKgIMKgMTUg Ky0NCj4gPiDCoC4uLi13ZS1hbHdheXMtaGF2ZS1hbi1vdmVyZmxvdy1jaGVja2luZy5wYXRjaCB8 wqAgMjQ2IC0tLQ0KPiA+IMKgbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzL2RldGVybWluaXNt LnBhdGNoIHzCoCDCoDU4ICstDQo+ID4gwqAuLi5kZC1MVk0tY2FjaGUtbG9naWNhbC12b2x1bWUt aGFuZGxpbmcucGF0Y2ggfMKgIDI4NyAtLS0NCj4gPiDCoC4uLmUtYXJpdGhtZXRpYy1wcmltaXRp dmVzLXRoYXQtY2hlY2stZi5wYXRjaCB8wqAgwqA5NCAtDQo+ID4gwqAuLi51c2VkLWZpZWxkcy1m cm9tLWdydWJfc2NyaXB0X2Z1bmN0aW8ucGF0Y2ggfMKgIMKgMzcgLQ0KPiA+IMKgLi4ue2dydWIt ZWZpXzIuMDQuYmIgPT4gZ3J1Yi1lZmlfMi4wNi1yYzEuYmJ9IHzCoCDCoCAyIC0NCj4gPiDCoG1l dGEvcmVjaXBlcy1ic3AvZ3J1Yi9ncnViMi5pbmPCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHzCoCDC oDIyICstDQo+ID4gwqAuLi4vZ3J1Yi97Z3J1Yl8yLjA0LmJiID0+IGdydWJfMi4wNi1yYzEuYmJ9 wqAgwqB8wqAgwqAgMA0KPiA+IMKgMTUgZmlsZXMgY2hhbmdlZCwgNTIgaW5zZXJ0aW9ucygrKSwg NDMxNiBkZWxldGlvbnMoLSkNCj4gPiDCoGRlbGV0ZSBtb2RlIDEwMDY0NCBtZXRhL3JlY2lwZXMt DQo+ID4gYnNwL2dydWIvZmlsZXMvNjY0MzUwN2NlMzBmNzc1MDA4ZTA5MzU4MGYwYzk0OTlkZmIy YzQ4NS5wYXRjaA0KPiA+IMKgZGVsZXRlIG1vZGUgMTAwNjQ0IG1ldGEvcmVjaXBlcy1ic3AvZ3J1 Yi9maWxlcy9DVkUtMjAyMC0xMDcxMy5wYXRjaA0KPiA+IMKgZGVsZXRlIG1vZGUgMTAwNjQ0IG1l dGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy9DVkUtMjAyMC0xNDMwOC0NCj4gPiBjYWxsb2MtVXNl LWNhbGxvYy1hdC1tb3N0LXBsYWNlcy5wYXRjaA0KPiA+IMKgZGVsZXRlIG1vZGUgMTAwNjQ0IG1l dGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy9DVkUtMjAyMC0xNDMwOS1DVkUtDQo+ID4gMjAyMC0x NDMxMC1DVkUtMjAyMC0xNDMxMS1tYWxsb2MtVXNlLW92ZXJmbG93LWNoZWNraW5nLXByaW1pdGl2 ZXMtDQo+ID4gd2hlcmUtd2UtZG8tLnBhdGNoDQo+ID4gwqBkZWxldGUgbW9kZSAxMDA2NDQgbWV0 YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzL0NWRS0yMDIwLTE1NzA2LQ0KPiA+IHNjcmlwdC1Bdm9p ZC1hLXVzZS1hZnRlci1mcmVlLXdoZW4tcmVkZWZpbmluZy1hLWZ1bmMucGF0Y2gNCj4gPiDCoGRl bGV0ZSBtb2RlIDEwMDY0NCBtZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvQ1ZFLTIwMjAtMTU3 MDctbGludXgtDQo+ID4gRml4LWludGVnZXItb3ZlcmZsb3dzLWluLWluaXRyZC1zaXplLWhhbmRs aW5nLnBhdGNoDQo+ID4gwqBkZWxldGUgbW9kZSAxMDA2NDQgbWV0YS9yZWNpcGVzLWJzcC9ncnVi L2ZpbGVzL2NhbGxvYy1NYWtlLXN1cmUtd2UtDQo+ID4gYWx3YXlzLWhhdmUtYW4tb3ZlcmZsb3ct Y2hlY2tpbmcucGF0Y2gNCj4gPiDCoGRlbGV0ZSBtb2RlIDEwMDY0NCBtZXRhL3JlY2lwZXMtYnNw L2dydWIvZmlsZXMvbHZtLUFkZC1MVk0tY2FjaGUtDQo+ID4gbG9naWNhbC12b2x1bWUtaGFuZGxp bmcucGF0Y2gNCj4gPiDCoGRlbGV0ZSBtb2RlIDEwMDY0NCBtZXRhL3JlY2lwZXMtYnNwL2dydWIv ZmlsZXMvc2FmZW1hdGgtQWRkLXNvbWUtDQo+ID4gYXJpdGhtZXRpYy1wcmltaXRpdmVzLXRoYXQt Y2hlY2stZi5wYXRjaA0KPiA+IMKgZGVsZXRlIG1vZGUgMTAwNjQ0IG1ldGEvcmVjaXBlcy1ic3Av Z3J1Yi9maWxlcy9zY3JpcHQtUmVtb3ZlLXVudXNlZC0NCj4gPiBmaWVsZHMtZnJvbS1ncnViX3Nj cmlwdF9mdW5jdGlvLnBhdGNoDQo+ID4gwqByZW5hbWUgbWV0YS9yZWNpcGVzLWJzcC9ncnViL3tn cnViLWVmaV8yLjA0LmJiID0+DQo+ID4gZ3J1Yi1lZmlfMi4wNi1yYzEuYmJ9ICg5OCUpDQo+ID4g wqByZW5hbWUgbWV0YS9yZWNpcGVzLWJzcC9ncnViL3tncnViXzIuMDQuYmIgPT4gZ3J1Yl8yLjA2 LXJjMS5iYn0NCj4gPiAoMTAwJSkNCj4gPiANCj4gPiBkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVz LQ0KPiA+IGJzcC9ncnViL2ZpbGVzLzY2NDM1MDdjZTMwZjc3NTAwOGUwOTM1ODBmMGM5NDk5ZGZi MmM0ODUucGF0Y2gNCj4gPiBiL21ldGEvcmVjaXBlcy0NCj4gPiBic3AvZ3J1Yi9maWxlcy82NjQz NTA3Y2UzMGY3NzUwMDhlMDkzNTgwZjBjOTQ5OWRmYjJjNDg1LnBhdGNoDQo+ID4gZGVsZXRlZCBm aWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggOGFhMjA5MTQ0NC4uMDAwMDAwMDAwMA0KPiA+IC0t LSBhL21ldGEvcmVjaXBlcy0NCj4gPiBic3AvZ3J1Yi9maWxlcy82NjQzNTA3Y2UzMGY3NzUwMDhl MDkzNTgwZjBjOTQ5OWRmYjJjNDg1LnBhdGNoDQo+ID4gKysrIC9kZXYvbnVsbA0KPiA+IEBAIC0x LDQ3ICswLDAgQEANCj4gPiAtRnJvbSA2NjQzNTA3Y2UzMGY3NzUwMDhlMDkzNTgwZjBjOTQ5OWRm YjJjNDg1IE1vbiBTZXAgMTcgMDA6MDA6MDANCj4gPiAyMDAxDQo+ID4gLUZyb206IFNpbW9uIEhh cmR5IDxzaW1vbi5oYXJkeUBpdGRldi5jby51az4NCj4gPiAtRGF0ZTogVHVlLCAyNCBNYXIgMjAy MCAxMzoyOToxMiArMDAwMA0KPiA+IC1TdWJqZWN0OiBidWlsZDogRml4IEdSVUIgaTM4Ni1wYyBi dWlsZCB3aXRoIFVidW50dSBnY2MNCj4gPiAtDQo+ID4gLVdpdGggcmVjZW50IHZlcnNpb25zIG9m IGdjYyBvbiBVYnVudHUgYSB2ZXJ5IGxhcmdlDQo+ID4gbHptYV9kZWNvbXByZXNzLmltZyBmaWxl IGlzDQo+ID4gLW91dHB1dC4gKGUuZy4gMTM0NDc5NjAwIGJ5dGVzIGluc3RlYWQgb2YgMjg2NC4p IFRoaXMgY2F1c2VzIGdydWItDQo+ID4gbWtpbWFnZSB0bw0KPiA+IC1mYWlsIHdpdGg6ICJlcnJv cjogRGVjb21wcmVzc29yIGlzIHRvbyBiaWcuIg0KPiA+IC0NCj4gPiAtVGhpcyBzZWVtcyB0byBi ZSBjYXVzZWQgYnkgYSBzZWN0aW9uIC5ub3RlLmdudS5wcm9wZXJ0eSB0aGF0IGlzDQo+ID4gcGxh Y2VkIGF0IGFuDQo+ID4gLW9mZnNldCBzdWNoIHRoYXQgb2JqY29weSBuZWVkcyB0byBwYWQgdGhl IGltZyBmaWxlIHdpdGggemVyb3MuDQo+ID4gLQ0KPiA+IC1UaGlzIGlzc3VlIGlzIHByZXNlbnQg b246DQo+ID4gLVVidW50dSAxOS4xMCB3aXRoIGdjYyAoVWJ1bnR1IDguMy4wLTI2dWJ1bnR1MX4x OS4xMCkgOC4zLjANCj4gPiAtVWJ1bnR1IDE5LjEwIHdpdGggZ2NjIChVYnVudHUgOS4yLjEtOXVi dW50dTIpIDkuMi4xIDIwMTkxMDA4DQo+ID4gLQ0KPiA+IC1UaGlzIGlzc3VlIGlzIG5vdCBwcmVz ZW50IG9uOg0KPiA+IC1VYnVudHUgMTkuMTAgd2l0aCBnY2MgKFVidW50dSA3LjUuMC0zdWJ1bnR1 MX4xOS4xMCkgNy41LjANCj4gPiAtUkhFTCA4LjAgd2l0aCBnY2MgOC4zLjEgMjAxOTA1MDcgKFJl ZCBIYXQgOC4zLjEtNCkNCj4gPiAtDQo+ID4gLVRoZSBpc3N1ZSBjYW4gYmUgZml4ZWQgYnkgcmVt b3ZpbmcgdGhlIHNlY3Rpb24gdXNpbmcgb2JqY29weSBhcw0KPiA+IHNob3duIGluDQo+ID4gLXRo aXMgcGF0Y2guDQo+ID4gLQ0KPiA+IC1TaWduZWQtb2ZmLWJ5OiBTaW1vbiBIYXJkeSA8c2ltb24u aGFyZHlAaXRkZXYuY28udWs+DQo+ID4gLVJldmlld2VkLWJ5OiBEYW5pZWwgS2lwZXIgPGRhbmll bC5raXBlckBvcmFjbGUuY29tPg0KPiA+IC0tLS0NCj4gPiAtIGdlbnRwbC5weSB8IDIgKy0NCj4g PiAtIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQ0KPiA+IC0N Cj4gPiAtVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydA0KPiA+IC0NCj4gPiAtZGlmZiAtLWdpdCBh L2dlbnRwbC5weSBiL2dlbnRwbC5weQ0KPiA+IC1pbmRleCAzODc1ODhjMDUuLmM4NjU1MGQ0ZiAx MDA2NDQNCj4gPiAtLS0tIGEvZ2VudHBsLnB5DQo+ID4gLSsrKyBiL2dlbnRwbC5weQ0KPiA+IC1A QCAtNzY2LDcgKzc2Niw3IEBAIGRlZiBpbWFnZShkZWZuLCBwbGF0Zm9ybSk6DQo+ID4gLSBpZiB0 ZXN0IHgkKFRBUkdFVF9BUFBMRV9MSU5LRVIpID0geDE7IHRoZW4gXA0KPiA+IC3CoCDCoCQoTUFD SE8ySU1HKSAkPCAkQDsgXA0KPiA+IC0gZWxzZSBcDQo+ID4gLS3CoCAkKFRBUkdFVF9PQkpDT1BZ KSAkKCIiIiArIGNuYW1lKGRlZm4pICsgIiIiX09CSkNPUFlGTEFHUykgLS0NCj4gPiBzdHJpcC11 bm5lZWRlZCAtUiAubm90ZSAtUiAuY29tbWVudCAtUiAubm90ZS5nbnUuYnVpbGQtaWQgLVINCj4g PiAuTUlQUy5hYmlmbGFncyAtUiAucmVnaW5mbyAtUiAucmVsLmR5biAtUiAubm90ZS5nbnUuZ29s ZC12ZXJzaW9uIC1SDQo+ID4gLkFSTS5leGlkeCAkPCAkQDsgXA0KPiA+IC0rwqAgJChUQVJHRVRf T0JKQ09QWSkgJCgiIiIgKyBjbmFtZShkZWZuKSArICIiIl9PQkpDT1BZRkxBR1MpIC0tDQo+ID4g c3RyaXAtdW5uZWVkZWQgLVIgLm5vdGUgLVIgLmNvbW1lbnQgLVIgLm5vdGUuZ251LmJ1aWxkLWlk IC1SDQo+ID4gLk1JUFMuYWJpZmxhZ3MgLVIgLnJlZ2luZm8gLVIgLnJlbC5keW4gLVIgLm5vdGUu Z251LmdvbGQtdmVyc2lvbiAtUg0KPiA+IC5ub3RlLmdudS5wcm9wZXJ0eSAtUiAuQVJNLmV4aWR4 ICQ8ICRAOyBcDQo+ID4gLSBmaQ0KPiA+IC0gIiIiKQ0KPiA+IC0gDQo+ID4gLS0tIA0KPiA+IC1j Z2l0IHYxLjIuMQ0KPiA+IC0NCj4gPiBkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWJzcC9ncnVi L2ZpbGVzL0NWRS0yMDIwLTEwNzEzLnBhdGNoDQo+ID4gYi9tZXRhL3JlY2lwZXMtYnNwL2dydWIv ZmlsZXMvQ1ZFLTIwMjAtMTA3MTMucGF0Y2gNCj4gPiBkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQN Cj4gPiBpbmRleCBjNTA3ZWQzZWE4Li4wMDAwMDAwMDAwDQo+ID4gLS0tIGEvbWV0YS9yZWNpcGVz LWJzcC9ncnViL2ZpbGVzL0NWRS0yMDIwLTEwNzEzLnBhdGNoDQo+ID4gKysrIC9kZXYvbnVsbA0K PiA+IEBAIC0xLDczICswLDAgQEANCj4gPiAtRnJvbSBhNGQzZmJkZmYxZTNjYThmODc2NDJhZjJh Yzg3NTJjMzBjNjE3YTNlIE1vbiBTZXAgMTcgMDA6MDA6MDANCj4gPiAyMDAxDQo+ID4gLUZyb206 IFBldGVyIEpvbmVzIDxwam9uZXNAcmVkaGF0LmNvbT4NCj4gPiAtRGF0ZTogV2VkLCAxNSBBcHIg MjAyMCAxNTo0NTowMiAtMDQwMA0KPiA+IC1TdWJqZWN0OiB5eWxleDogTWFrZSBsZXhlciBmYXRh bCBlcnJvcnMgYWN0dWFsbHkgYmUgZmF0YWwNCj4gPiAtDQo+ID4gLVdoZW4gcHJlc2VudGVkIHdp dGggYSBjb21tYW5kIHRoYXQgY2FuJ3QgYmUgdG9rZW5pemVkIHRvIGFueXRoaW5nDQo+ID4gLXNt YWxsZXIgdGhhbiBZWUxNQVggY2hhcmFjdGVycywgdGhlIHBhcnNlciBjYWxscw0KPiA+IFlZX0ZB VEFMX0VSUk9SKGVycm1zZyksDQo+ID4gLWV4cGVjdGluZyB0aGF0IHdpbGwgc3RvcCBmdXJ0aGVy IHByb2Nlc3NpbmcsIGFzIHN1Y2g6DQo+ID4gLQ0KPiA+IC3CoCAjZGVmaW5lIFlZX0RPX0JFRk9S RV9BQ1RJT04gXA0KPiA+IC3CoCDCoCDCoCDCoCB5eWctPnl5dGV4dF9wdHIgPSB5eV9icDsgXA0K PiA+IC3CoCDCoCDCoCDCoCB5eWxlbmcgPSAoaW50KSAoeXlfY3AgLSB5eV9icCk7IFwNCj4gPiAt wqAgwqAgwqAgwqAgeXlnLT55eV9ob2xkX2NoYXIgPSAqeXlfY3A7IFwNCj4gPiAtwqAgwqAgwqAg wqAgKnl5X2NwID0gJ1wwJzsgXA0KPiA+IC3CoCDCoCDCoCDCoCBpZiAoIHl5bGVuZyA+PSBZWUxN QVggKSBcDQo+ID4gLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIFlZX0ZBVEFMX0VSUk9SKCAidG9r ZW4gdG9vIGxhcmdlLCBleGNlZWRzIFlZTE1BWCIgKTsNCj4gPiBcDQo+ID4gLcKgIMKgIMKgIMKg IHl5X2ZsZXhfc3RybmNweSggeXl0ZXh0LCB5eWctPnl5dGV4dF9wdHIsIHl5bGVuZyArIDEgLA0K PiA+IHl5c2Nhbm5lcik7IFwNCj4gPiAtwqAgwqAgwqAgwqAgeXlnLT55eV9jX2J1Zl9wID0geXlf Y3A7DQo+ID4gLQ0KPiA+IC1UaGUgY29kZSBmbGV4IGdlbmVyYXRlcyBleHBlY3RzIHRoYXQgWVlf RkFUQUxfRVJST1IoKSB3aWxsIGVpdGhlcg0KPiA+IHJldHVybg0KPiA+IC1mb3IgaXQgb3IgZG8g c29tZSBmb3JtIG9mIGxvbmdqbXAoKSwgb3IgaGFuZGxlIHRoZSBlcnJvciBpbiBzb21lIHdheQ0K PiA+IGF0DQo+ID4gLWxlYXN0LCBhbmQgc28gdGhlIHN0cm5jcHkoKSBjYWxsIGlzbid0IGluIGFu ICJlbHNlIiBjbGF1c2UsIGFuZCB0aHVzDQo+ID4gaWYNCj4gPiAtWVlfRkFUQUxfRVJST1IoKSBp cyAqbm90KiBhY3R1YWxseSBmYXRhbCwgaXQgZG9lcyB0aGUgY2FsbCB3aXRoIHRoZQ0KPiA+IC1x dWVzdGlvbmFibGUgbGltaXQsIGFuZCBwcmVkaWN0YWJsZSByZXN1bHRzIGVuc3VlLg0KPiA+IC0N Cj4gPiAtVW5mb3J0dW5hdGVseSwgb3VyIGltcGxlbWVudGF0aW9uIG9mIFlZX0ZBVEFMX0VSUk9S KCkgaXM6DQo+ID4gLQ0KPiA+IC3CoCDCoCNkZWZpbmUgWVlfRkFUQUxfRVJST1IobXNnKcKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgXA0KPiA+IC3CoCDCoCDCoGRvIHvCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBcDQo+ ID4gLcKgIMKgIMKgIMKgZ3J1Yl9wcmludGYgKF8oImZhdGFsIGVycm9yOiAlc1xuIiksIF8obXNn KSk7wqAgwqAgwqBcDQo+ID4gLcKgIMKgIMKgfSB3aGlsZSAoMCkNCj4gPiAtDQo+ID4gLVRoZSBz YW1lIHBhdHRlcm4gZXhpc3RzIGluIHl5bGVzcygpLCBhbmQgc2ltaWxhciBwcm9ibGVtcyBleGlz dCBpbg0KPiA+IHVzZXJzDQo+ID4gLW9mIFlZX0lOUFVUKCksIHNldmVyYWwgcGxhY2VzIGluIHRo ZSBtYWluIHBhcnNpbmcgbG9vcCwNCj4gPiAteXlfZ2V0X25leHRfYnVmZmVyKCksIHl5X2xvYWRf YnVmZmVyX3N0YXRlKCksIHl5ZW5zdXJlX2J1ZmZlcl9zdGFjaywNCj4gPiAteXlfc2Nhbl9idWZm ZXIoKSwgZXRjLg0KPiA+IC0NCj4gPiAtQWxsIG9mIHRoZXNlIGNhbGxlcnMgZXhwZWN0IFlZX0ZB VEFMX0VSUk9SKCkgdG8gYWN0dWFsbHkgYmUgZmF0YWwsDQo+ID4gYW5kDQo+ID4gLXRoZSB0aGlu Z3MgdGhleSBkbyBpZiBpdCByZXR1cm5zIGFmdGVyIGNhbGxpbmcgaXQgYXJlIHdpbGRseSB1bnNh ZmUuDQo+ID4gLQ0KPiA+IC1GaXhlczogQ1ZFLTIwMjAtMTA3MTMNCj4gPiAtDQo+ID4gLVNpZ25l ZC1vZmYtYnk6IFBldGVyIEpvbmVzIDxwam9uZXNAcmVkaGF0LmNvbT4NCj4gPiAtUmV2aWV3ZWQt Ynk6IERhbmllbCBLaXBlciA8ZGFuaWVsLmtpcGVyQG9yYWNsZS5jb20+DQo+ID4gLQ0KPiA+IC1V cHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0DQo+ID4gW2h0dHBzOi8vZ2l0LnNhdmFubmFoLmdudS5v cmcvY2dpdC9ncnViLmdpdC9jb21taXQvP2lkPWE0ZDNmYmRmZjFlM2NhOGY4NzY0MmFmMmFjODc1 MmMzMGM2MTdhM2UNCj4gPiBdDQo+ID4gLUNWRTogQ1ZFLTIwMjAtMTA3MTMNCj4gPiAtU2lnbmVk LW9mZi1ieTogQ2hlZSBZYW5nIExlZSA8Y2hlZS55YW5nLmxlZUBpbnRlbC5jb20+DQo+ID4gLS0t LQ0KPiA+IC0gZ3J1Yi1jb3JlL3NjcmlwdC95eWxleC5sIHwgNCArKy0tDQo+ID4gLSAxIGZpbGUg Y2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQ0KPiA+IC0NCj4gPiAtZGlm ZiAtLWdpdCBhL2dydWItY29yZS9zY3JpcHQveXlsZXgubCBiL2dydWItY29yZS9zY3JpcHQveXls ZXgubA0KPiA+IC1pbmRleCA3YjQ0YzM3YjcuLmI3MjAzYzgyMyAxMDA2NDQNCj4gPiAtLS0tIGEv Z3J1Yi1jb3JlL3NjcmlwdC95eWxleC5sDQo+ID4gLSsrKyBiL2dydWItY29yZS9zY3JpcHQveXls ZXgubA0KPiA+IC1AQCAtMzcsMTEgKzM3LDExIEBADQo+ID4gLSANCj4gPiAtIC8qIA0KPiA+IC3C oCAqIEFzIHdlIGRvbid0IGhhdmUgYWNjZXNzIHRvIHl5c2Nhbm5lciwgd2UgY2Fubm90IGRvIG11 Y2ggZXhjZXB0DQo+ID4gdG8NCj4gPiAtLSAqIHByaW50IHRoZSBmYXRhbCBlcnJvci4NCj4gPiAt KyAqIHByaW50IHRoZSBmYXRhbCBlcnJvciBhbmQgZXhpdC4NCj4gPiAtwqAgKi8NCj4gPiAtICNk ZWZpbmUgWVlfRkFUQUxfRVJST1IobXNnKcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg XA0KPiA+IC3CoCDCoGRvIHvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBcDQo+ID4gLS3CoCDCoCBncnViX3ByaW50ZiAoXygiZmF0 YWwgZXJyb3I6ICVzXG4iKSwgXyhtc2cpKTvCoCDCoCDCoFwNCj4gPiAtK8KgIMKgIGdydWJfZmF0 YWwgKF8oImZhdGFsIGVycm9yOiAlc1xuIiksIF8obXNnKSk7XA0KPiA+IC3CoCDCoH0gd2hpbGUg KDApDQo+ID4gLSANCj4gPiAtICNkZWZpbmUgQ09QWShzdHIsIGhpbnQpwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBcDQo+ID4gLS0tIA0KPiA+IC1jZ2l0IHYxLjIuMQ0KPiA+ IC0NCj4gPiBkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzL0NWRS0yMDIw LTE0MzA4LWNhbGxvYy1Vc2UtDQo+ID4gY2FsbG9jLWF0LW1vc3QtcGxhY2VzLnBhdGNoIGIvbWV0 YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzL0NWRS0yMDIwLQ0KPiA+IDE0MzA4LWNhbGxvYy1Vc2Ut Y2FsbG9jLWF0LW1vc3QtcGxhY2VzLnBhdGNoDQo+ID4gZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0 DQo+ID4gaW5kZXggNjM3ZTM2OGNiMC4uMDAwMDAwMDAwMA0KPiA+IC0tLSBhL21ldGEvcmVjaXBl cy1ic3AvZ3J1Yi9maWxlcy9DVkUtMjAyMC0xNDMwOC1jYWxsb2MtVXNlLWNhbGxvYy0NCj4gPiBh dC1tb3N0LXBsYWNlcy5wYXRjaA0KPiA+ICsrKyAvZGV2L251bGwNCj4gPiBAQCAtMSwxODYzICsw LDAgQEANCj4gPiAtRnJvbSBiY2RkNmE1NTk1MjIyMmVjOTgyOWE1OTM0ODI0MGE0Zjk4M2IwYjU2 IE1vbiBTZXAgMTcgMDA6MDA6MDANCj4gPiAyMDAxDQo+ID4gLUZyb206IFBldGVyIEpvbmVzIDxw am9uZXNAcmVkaGF0LmNvbT4NCj4gPiAtRGF0ZTogTW9uLCAxNSBKdW4gMjAyMCAxMjoyNjowMSAt MDQwMA0KPiA+IC1TdWJqZWN0OiBbUEFUQ0ggNC85XSBjYWxsb2M6IFVzZSBjYWxsb2MoKSBhdCBt b3N0IHBsYWNlcw0KPiA+IC0NCj4gPiAtVGhpcyBtb2RpZmllcyBtb3N0IG9mIHRoZSBwbGFjZXMg d2UgZG8gc29tZSBmb3JtIG9mOg0KPiA+IC0NCj4gPiAtwqAgWCA9IG1hbGxvYyhZICogWik7DQo+ ID4gLQ0KPiA+IC10byB1c2UgY2FsbG9jKFksIFopIGluc3RlYWQuDQo+ID4gLQ0KPiA+IC1BbW9u ZyBvdGhlciBpc3N1ZXMsIHRoaXMgZml4ZXM6DQo+ID4gLcKgIC0gYWxsb2NhdGlvbiBvZiBpbnRl Z2VyIG92ZXJmbG93IGluIGdydWJfcG5nX2RlY29kZV9pbWFnZV9oZWFkZXIoKQ0KPiA+IC3CoCDC oCByZXBvcnRlZCBieSBDaHJpcyBDb3Vsc29uLA0KPiA+IC3CoCAtIGFsbG9jYXRpb24gb2YgaW50 ZWdlciBvdmVyZmxvdyBpbiBsdWtzX3JlY292ZXJfa2V5KCkNCj4gPiAtwqAgwqAgcmVwb3J0ZWQg YnkgQ2hyaXMgQ291bHNvbiwNCj4gPiAtwqAgLSBhbGxvY2F0aW9uIG9mIGludGVnZXIgb3ZlcmZs b3cgaW4gZ3J1Yl9sdm1fZGV0ZWN0KCkNCj4gPiAtwqAgwqAgcmVwb3J0ZWQgYnkgQ2hyaXMgQ291 bHNvbi4NCj4gPiAtDQo+ID4gLUZpeGVzOiBDVkUtMjAyMC0xNDMwOA0KPiA+IC0NCj4gPiAtU2ln bmVkLW9mZi1ieTogUGV0ZXIgSm9uZXMgPHBqb25lc0ByZWRoYXQuY29tPg0KPiA+IC1SZXZpZXdl ZC1ieTogRGFuaWVsIEtpcGVyIDxkYW5pZWwua2lwZXJAb3JhY2xlLmNvbT4NCj4gPiAtDQo+ID4g LVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQNCj4gPiAtQ1ZFOiBDVkUtMjAyMC0xNDMwOA0KPiA+ IC0NCj4gPiAtUmVmZXJlbmNlIHRvIHVwc3RyZWFtIHBhdGNoOg0KPiA+IC0NCj4gPiBodHRwczov L2dpdC5zYXZhbm5haC5nbnUub3JnL2NnaXQvZ3J1Yi5naXQvY29tbWl0Lz9pZD1mNzI1ZmE3Y2Iy ZWNlNTQ3YzVhZjAxZWVlZWNmZThkOTU4MDJlZDQxDQo+ID4gLQ0KPiA+IC1bWUw6IGRvbid0IHBh dGNoIG9uIGdydWItY29yZS9saWIvanNvbi9qc29uLmMsIHdoaWNoIGlzIG5vdCBleGlzdGluZw0K PiA+IGluIGdydWIgMi4wNF0NCj4gPiAtU2lnbmVkLW9mZi1ieTogWW9uZ3hpbiBMaXUgPHlvbmd4 aW4ubGl1QHdpbmRyaXZlci5jb20+DQo+ID4gLS0tLQ0KPiA+IC0gZ3J1Yi1jb3JlL2J1cy91c2Iv dXNiaHViLmPCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB8wqAgOCArKysrLS0tLQ0KPiA+IC0gZ3J1 Yi1jb3JlL2NvbW1hbmRzL2VmaS9sc2VmaXN5c3RhYi5jwqAgwqAgwqAgfMKgIDMgKystDQo+ID4g LSBncnViLWNvcmUvY29tbWFuZHMvbGVnYWN5Y2ZnLmPCoCDCoCDCoCDCoCDCoCDCoCB8wqAgNiAr KystLS0NCj4gPiAtIGdydWItY29yZS9jb21tYW5kcy9tZW51ZW50cnkuY8KgIMKgIMKgIMKgIMKg IMKgIHzCoCAyICstDQo+ID4gLSBncnViLWNvcmUvY29tbWFuZHMvbmF0aXZlZGlzay5jwqAgwqAg wqAgwqAgwqAgwqB8wqAgMiArLQ0KPiA+IC0gZ3J1Yi1jb3JlL2NvbW1hbmRzL3BhcnR0b29sLmPC oCDCoCDCoCDCoCDCoCDCoCDCoHwgMTIgKysrKysrKysrLS0tDQo+ID4gLSBncnViLWNvcmUvY29t bWFuZHMvcmVnZXhwLmPCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHzCoCAyICstDQo+ID4gLSBncnVi LWNvcmUvY29tbWFuZHMvc2VhcmNoX3dyYXAuY8KgIMKgIMKgIMKgIMKgIHzCoCAyICstDQo+ID4g LSBncnViLWNvcmUvZGlzay9kaXNrZmlsdGVyLmPCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHzCoCA0 ICsrLS0NCj4gPiAtIGdydWItY29yZS9kaXNrL2llZWUxMjc1L29mZGlzay5jwqAgwqAgwqAgwqAg wqAgfMKgIDIgKy0NCj4gPiAtIGdydWItY29yZS9kaXNrL2xkbS5jwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgfCAxNCArKysrKysrLS0tLS0tLQ0KPiA+IC0gZ3J1Yi1jb3JlL2Rpc2sv bHVrcy5jwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB8wqAgMiArLQ0KPiA+IC0gZ3J1 Yi1jb3JlL2Rpc2svbHZtLmPCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB8IDEyICsr KysrKy0tLS0tLQ0KPiA+IC0gZ3J1Yi1jb3JlL2Rpc2sveGVuL3hlbmRpc2suY8KgIMKgIMKgIMKg IMKgIMKgIMKgIHzCoCAyICstDQo+ID4gLSBncnViLWNvcmUvZWZpZW11L2xvYWRjb3JlLmPCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoHzCoCAyICstDQo+ID4gLSBncnViLWNvcmUvZWZpZW11L21tLmPC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHzCoCA2ICsrKy0tLQ0KPiA+IC0gZ3J1Yi1j b3JlL2ZvbnQvZm9udC5jwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB8wqAgMyArLS0N Cj4gPiAtIGdydWItY29yZS9mcy9hZmZzLmPCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoHzCoCA2ICsrKy0tLQ0KPiA+IC0gZ3J1Yi1jb3JlL2ZzL2J0cmZzLmPCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCB8wqAgNiArKystLS0NCj4gPiAtIGdydWItY29yZS9mcy9oZnMu Y8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHzCoCAyICstDQo+ID4gLSBncnVi LWNvcmUvZnMvaGZzcGx1cy5jwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfMKgIDYgKysr LS0tDQo+ID4gLSBncnViLWNvcmUvZnMvaXNvOTY2MC5jwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgfMKgIDIgKy0NCj4gPiAtIGdydWItY29yZS9mcy9udGZzLmPCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoHzCoCA0ICsrLS0NCj4gPiAtIGdydWItY29yZS9mcy9zZnMuY8Kg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHzCoCAyICstDQo+ID4gLSBncnViLWNv cmUvZnMvdGFyLmPCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB8wqAgMiArLQ0K PiA+IC0gZ3J1Yi1jb3JlL2ZzL3VkZi5jwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgfMKgIDQgKystLQ0KPiA+IC0gZ3J1Yi1jb3JlL2ZzL3pmcy96ZnMuY8KgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIHzCoCA0ICsrLS0NCj4gPiAtIGdydWItY29yZS9nZnhtZW51L2d1aV9z dHJpbmdfdXRpbC5jwqAgwqAgwqAgwqB8wqAgMiArLQ0KPiA+IC0gZ3J1Yi1jb3JlL2dmeG1lbnUv d2lkZ2V0LWJveC5jwqAgwqAgwqAgwqAgwqAgwqAgfMKgIDQgKystLQ0KPiA+IC0gZ3J1Yi1jb3Jl L2lvL2d6aW8uY8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgfMKgIDIgKy0NCj4g PiAtIGdydWItY29yZS9rZXJuL2VmaS9lZmkuY8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHzC oCA2ICsrKy0tLQ0KPiA+IC0gZ3J1Yi1jb3JlL2tlcm4vZW11L2hvc3RkaXNrLmPCoCDCoCDCoCDC oCDCoCDCoCDCoHzCoCAyICstDQo+ID4gLSBncnViLWNvcmUva2Vybi9mcy5jwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB8wqAgMiArLQ0KPiA+IC0gZ3J1Yi1jb3JlL2tlcm4vbWlz Yy5jwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB8wqAgMiArLQ0KPiA+IC0gZ3J1Yi1j b3JlL2tlcm4vcGFyc2VyLmPCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHzCoCAyICstDQo+ ID4gLSBncnViLWNvcmUva2Vybi91Ym9vdC91Ym9vdC5jwqAgwqAgwqAgwqAgwqAgwqAgwqAgfMKg IDIgKy0NCj4gPiAtIGdydWItY29yZS9saWIvbGliZ2NyeXB0L2NpcGhlci9hYy5jwqAgwqAgwqAg wqB8wqAgOCArKysrLS0tLQ0KPiA+IC0gZ3J1Yi1jb3JlL2xpYi9saWJnY3J5cHQvY2lwaGVyL3By aW1lZ2VuLmMgfMKgIDQgKystLQ0KPiA+IC0gZ3J1Yi1jb3JlL2xpYi9saWJnY3J5cHQvY2lwaGVy L3B1YmtleS5jwqAgwqB8wqAgNCArKy0tDQo+ID4gLSBncnViLWNvcmUvbGliL3ByaW9yaXR5X3F1 ZXVlLmPCoCDCoCDCoCDCoCDCoCDCoCB8wqAgMiArLQ0KPiA+IC0gZ3J1Yi1jb3JlL2xpYi9yZWVk X3NvbG9tb24uY8KgIMKgIMKgIMKgIMKgIMKgIMKgIHzCoCA3ICsrKy0tLS0NCj4gPiAtIGdydWIt Y29yZS9saWIvcmVsb2NhdG9yLmPCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHwgMTAgKysrKyst LS0tLQ0KPiA+IC0gZ3J1Yi1jb3JlL2xpYi96c3RkL2ZzZV9kZWNvbXByZXNzLmPCoCDCoCDCoCDC oHzCoCAyICstDQo+ID4gLSBncnViLWNvcmUvbG9hZGVyL2FybS9saW51eC5jwqAgwqAgwqAgwqAg wqAgwqAgwqAgfMKgIDIgKy0NCj4gPiAtIGdydWItY29yZS9sb2FkZXIvZWZpL2NoYWlubG9hZGVy LmPCoCDCoCDCoCDCoCB8wqAgMiArLQ0KPiA+IC0gZ3J1Yi1jb3JlL2xvYWRlci9pMzg2L2JzZFhY LmPCoCDCoCDCoCDCoCDCoCDCoCDCoHzCoCAyICstDQo+ID4gLSBncnViLWNvcmUvbG9hZGVyL2kz ODYveG51LmPCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHzCoCA0ICsrLS0NCj4gPiAtIGdydWItY29y ZS9sb2FkZXIvbWFjaG8uY8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHzCoCAyICstDQo+ID4g LSBncnViLWNvcmUvbG9hZGVyL211bHRpYm9vdF9lbGZ4eC5jwqAgwqAgwqAgwqAgfMKgIDIgKy0N Cj4gPiAtIGdydWItY29yZS9sb2FkZXIveG51LmPCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCB8wqAgMiArLQ0KPiA+IC0gZ3J1Yi1jb3JlL21tYXAvbW1hcC5jwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqB8wqAgNCArKy0tDQo+ID4gLSBncnViLWNvcmUvbmV0L2Jvb3RwLmPCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHzCoCAyICstDQo+ID4gLSBncnViLWNvcmUvbmV0 L2Rucy5jwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB8IDEwICsrKysrLS0tLS0N Cj4gPiAtIGdydWItY29yZS9uZXQvbmV0LmPCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoHzCoCA0ICsrLS0NCj4gPiAtIGdydWItY29yZS9ub3JtYWwvY2hhcnNldC5jwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgfCAxMCArKysrKy0tLS0tDQo+ID4gLSBncnViLWNvcmUvbm9ybWFsL2Nt ZGxpbmUuY8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHwgMTQgKysrKysrKy0tLS0tLS0NCj4gPiAt IGdydWItY29yZS9ub3JtYWwvbWVudV9lbnRyeS5jwqAgwqAgwqAgwqAgwqAgwqAgwqB8IDE0ICsr KysrKystLS0tLS0tDQo+ID4gLSBncnViLWNvcmUvbm9ybWFsL21lbnVfdGV4dC5jwqAgwqAgwqAg wqAgwqAgwqAgwqAgfMKgIDQgKystLQ0KPiA+IC0gZ3J1Yi1jb3JlL25vcm1hbC90ZXJtLmPCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHzCoCA0ICsrLS0NCj4gPiAtIGdydWItY29yZS9vc2Rl cC9saW51eC9nZXRyb290LmPCoCDCoCDCoCDCoCDCoCDCoHzCoCA2ICsrKy0tLQ0KPiA+IC0gZ3J1 Yi1jb3JlL29zZGVwL3VuaXgvY29uZmlnLmPCoCDCoCDCoCDCoCDCoCDCoCDCoHzCoCAyICstDQo+ ID4gLSBncnViLWNvcmUvb3NkZXAvd2luZG93cy9nZXRyb290LmPCoCDCoCDCoCDCoCDCoHzCoCAy ICstDQo+ID4gLSBncnViLWNvcmUvb3NkZXAvd2luZG93cy9ob3N0ZGlzay5jwqAgwqAgwqAgwqAg fMKgIDQgKystLQ0KPiA+IC0gZ3J1Yi1jb3JlL29zZGVwL3dpbmRvd3MvaW5pdC5jwqAgwqAgwqAg wqAgwqAgwqAgfMKgIDIgKy0NCj4gPiAtIGdydWItY29yZS9vc2RlcC93aW5kb3dzL3BsYXRmb3Jt LmPCoCDCoCDCoCDCoCB8wqAgNCArKy0tDQo+ID4gLSBncnViLWNvcmUvb3NkZXAvd2luZG93cy9y ZWxwYXRoLmPCoCDCoCDCoCDCoCDCoHzCoCAyICstDQo+ID4gLSBncnViLWNvcmUvcGFydG1hcC9n cHQuY8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgfMKgIDIgKy0NCj4gPiAtIGdydWItY29y ZS9wYXJ0bWFwL21zZG9zLmPCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHzCoCAyICstDQo+ID4g LSBncnViLWNvcmUvc2NyaXB0L2V4ZWN1dGUuY8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHzCoCAy ICstDQo+ID4gLSBncnViLWNvcmUvdGVzdHMvZmFrZV9pbnB1dC5jwqAgwqAgwqAgwqAgwqAgwqAg wqAgfMKgIDIgKy0NCj4gPiAtIGdydWItY29yZS90ZXN0cy92aWRlb19jaGVja3N1bS5jwqAgwqAg wqAgwqAgwqAgfMKgIDYgKysrLS0tDQo+ID4gLSBncnViLWNvcmUvdmlkZW8vY2FwdHVyZS5jwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB8wqAgMiArLQ0KPiA+IC0gZ3J1Yi1jb3JlL3ZpZGVvL2Vt dS9zZGwuY8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgfMKgIDIgKy0NCj4gPiAtIGdydWItY29y ZS92aWRlby9pMzg2L3BjL3ZnYS5jwqAgwqAgwqAgwqAgwqAgwqAgwqB8wqAgMiArLQ0KPiA+IC0g Z3J1Yi1jb3JlL3ZpZGVvL3JlYWRlcnMvcG5nLmPCoCDCoCDCoCDCoCDCoCDCoCDCoHzCoCAyICst DQo+ID4gLSBpbmNsdWRlL2dydWIvdW5pY29kZS5owqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgfMKgIDQgKystLQ0KPiA+IC0gdXRpbC9nZXRyb290LmPCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCB8wqAgMiArLQ0KPiA+IC0gdXRpbC9ncnViLWZpbGUuY8KgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHzCoCAyICstDQo+ID4gLSB1dGlsL2dy dWItZnN0ZXN0LmPCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB8wqAgNCArKy0t DQo+ID4gLSB1dGlsL2dydWItaW5zdGFsbC1jb21tb24uY8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IHzCoCAyICstDQo+ID4gLSB1dGlsL2dydWItaW5zdGFsbC5jwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqB8wqAgNCArKy0tDQo+ID4gLSB1dGlsL2dydWItbWtpbWFnZXh4LmPCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHzCoCA2ICsrLS0tLQ0KPiA+IC0gdXRpbC9ncnVi LW1rcmVzY3VlLmPCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB8wqAgNCArKy0tDQo+ ID4gLSB1dGlsL2dydWItbWtzdGFuZGFsb25lLmPCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB8 wqAgMiArLQ0KPiA+IC0gdXRpbC9ncnViLXBlMmVsZi5jwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgfCAxMiArKysrKy0tLS0tLS0NCj4gPiAtIHV0aWwvZ3J1Yi1wcm9iZS5jwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB8wqAgNCArKy0tDQo+ID4gLSA4NiBm aWxlcyBjaGFuZ2VkLCAxNzggaW5zZXJ0aW9ucygrKSwgMTc3IGRlbGV0aW9ucygtKQ0KPiA+IC0N Cj4gPiAtZGlmZiAtLWdpdCBhL2dydWItY29yZS9idXMvdXNiL3VzYmh1Yi5jIGIvZ3J1Yi1jb3Jl L2J1cy91c2IvdXNiaHViLmMNCj4gPiAtaW5kZXggMzRhN2ZmMS4uYTA2Y2NlMyAxMDA2NDQNCj4g PiAtLS0tIGEvZ3J1Yi1jb3JlL2J1cy91c2IvdXNiaHViLmMNCj4gPiAtKysrIGIvZ3J1Yi1jb3Jl L2J1cy91c2IvdXNiaHViLmMNCj4gPiAtQEAgLTE0OSw4ICsxNDksOCBAQCBncnViX3VzYl9hZGRf aHViIChncnViX3VzYl9kZXZpY2VfdCBkZXYpDQo+ID4gLcKgIMKgZ3J1Yl91c2Jfc2V0X2NvbmZp Z3VyYXRpb24gKGRldiwgMSk7DQo+ID4gLSANCj4gPiAtwqAgwqBkZXYtPm5wb3J0cyA9IGh1YmRl c2MucG9ydGNudDsNCj4gPiAtLcKgIGRldi0+Y2hpbGRyZW4gPSBncnViX3phbGxvYyAoaHViZGVz Yy5wb3J0Y250ICogc2l6ZW9mIChkZXYtDQo+ID4gPiBjaGlsZHJlblswXSkpOw0KPiA+IC0twqAg ZGV2LT5wb3J0cyA9IGdydWJfemFsbG9jIChkZXYtPm5wb3J0cyAqIHNpemVvZiAoZGV2LT5wb3J0 c1swXSkpOw0KPiA+IC0rwqAgZGV2LT5jaGlsZHJlbiA9IGdydWJfY2FsbG9jIChodWJkZXNjLnBv cnRjbnQsIHNpemVvZiAoZGV2LQ0KPiA+ID4gY2hpbGRyZW5bMF0pKTsNCj4gPiAtK8KgIGRldi0+ cG9ydHMgPSBncnViX2NhbGxvYyAoZGV2LT5ucG9ydHMsIHNpemVvZiAoZGV2LT5wb3J0c1swXSkp Ow0KPiA+IC3CoCDCoGlmICghZGV2LT5jaGlsZHJlbiB8fCAhZGV2LT5wb3J0cykNCj4gPiAtwqAg wqAgwqB7DQo+ID4gLcKgIMKgIMKgIMKgZ3J1Yl9mcmVlIChkZXYtPmNoaWxkcmVuKTsNCj4gPiAt QEAgLTI2OCw4ICsyNjgsOCBAQCBncnViX3VzYl9jb250cm9sbGVyX2Rldl9yZWdpc3Rlcl9pdGVy DQo+ID4gKGdydWJfdXNiX2NvbnRyb2xsZXJfdCBjb250cm9sbGVyLCB2b2lkICpkDQo+ID4gLSAN Cj4gPiAtwqAgwqAvKiBRdWVyeSB0aGUgbnVtYmVyIG9mIHBvcnRzIHRoZSByb290IEh1YiBoYXMu wqAgKi8NCj4gPiAtwqAgwqBodWItPm5wb3J0cyA9IGNvbnRyb2xsZXItPmRldi0+aHVicG9ydHMg KGNvbnRyb2xsZXIpOw0KPiA+IC0twqAgaHViLT5kZXZpY2VzID0gZ3J1Yl96YWxsb2MgKHNpemVv ZiAoaHViLT5kZXZpY2VzWzBdKSAqIGh1Yi0NCj4gPiA+IG5wb3J0cyk7DQo+ID4gLS3CoCBodWIt PnBvcnRzID0gZ3J1Yl96YWxsb2MgKHNpemVvZiAoaHViLT5wb3J0c1swXSkgKiBodWItPm5wb3J0 cyk7DQo+ID4gLSvCoCBodWItPmRldmljZXMgPSBncnViX2NhbGxvYyAoaHViLT5ucG9ydHMsIHNp emVvZiAoaHViLQ0KPiA+ID4gZGV2aWNlc1swXSkpOw0KPiA+IC0rwqAgaHViLT5wb3J0cyA9IGdy dWJfY2FsbG9jIChodWItPm5wb3J0cywgc2l6ZW9mIChodWItPnBvcnRzWzBdKSk7DQo+ID4gLcKg IMKgaWYgKCFodWItPmRldmljZXMgfHwgIWh1Yi0+cG9ydHMpDQo+ID4gLcKgIMKgIMKgew0KPiA+ IC3CoCDCoCDCoCDCoGdydWJfZnJlZSAoaHViLT5kZXZpY2VzKTsNCj4gPiAtZGlmZiAtLWdpdCBh L2dydWItY29yZS9jb21tYW5kcy9lZmkvbHNlZmlzeXN0YWIuYyBiL2dydWItDQo+ID4gY29yZS9j b21tYW5kcy9lZmkvbHNlZmlzeXN0YWIuYw0KPiA+IC1pbmRleCBkZjEwMzAyLi5jZDgxNTA3IDEw MDY0NA0KPiA+IC0tLS0gYS9ncnViLWNvcmUvY29tbWFuZHMvZWZpL2xzZWZpc3lzdGFiLmMNCj4g PiAtKysrIGIvZ3J1Yi1jb3JlL2NvbW1hbmRzL2VmaS9sc2VmaXN5c3RhYi5jDQo+ID4gLUBAIC03 MSw3ICs3MSw4IEBAIGdydWJfY21kX2xzZWZpc3lzdGFiIChzdHJ1Y3QgZ3J1Yl9jb21tYW5kICpj bWQNCj4gPiBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSksDQo+ID4gLcKgIMKgIMKgZ3J1Yl9wcmlu dGYgKCJWZW5kb3I6ICIpOw0KPiA+IC3CoCDCoCDCoA0KPiA+IC3CoCDCoCDCoGZvciAodmVuZG9y X3V0ZjE2ID0gc3QtPmZpcm13YXJlX3ZlbmRvcjsgKnZlbmRvcl91dGYxNjsNCj4gPiB2ZW5kb3Jf dXRmMTYrKyk7DQo+ID4gLS3CoCDCoCB2ZW5kb3IgPSBncnViX21hbGxvYyAoNCAqICh2ZW5kb3Jf dXRmMTYgLSBzdC0+ZmlybXdhcmVfdmVuZG9yKQ0KPiA+ICsgMSk7DQo+ID4gLSvCoCDCoCAvKiBB bGxvY2F0ZSBleHRyYSAzIGJ5dGVzIHRvIHNpbXBsaWZ5IG1hdGguICovDQo+ID4gLSvCoCDCoCB2 ZW5kb3IgPSBncnViX2NhbGxvYyAoNCwgdmVuZG9yX3V0ZjE2IC0gc3QtPmZpcm13YXJlX3ZlbmRv ciArDQo+ID4gMSk7DQo+ID4gLcKgIMKgIMKgaWYgKCF2ZW5kb3IpDQo+ID4gLcKgIMKgIMKgIMKg cmV0dXJuIGdydWJfZXJybm87DQo+ID4gLcKgIMKgIMKgKmdydWJfdXRmMTZfdG9fdXRmOCAoKGdy dWJfdWludDhfdCAqKSB2ZW5kb3IsIHN0LQ0KPiA+ID4gZmlybXdhcmVfdmVuZG9yLA0KPiA+IC1k aWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL2NvbW1hbmRzL2xlZ2FjeWNmZy5jIGIvZ3J1Yi0NCj4gPiBj b3JlL2NvbW1hbmRzL2xlZ2FjeWNmZy5jDQo+ID4gLWluZGV4IGRiN2E4ZjAuLjVlM2VjMGQgMTAw NjQ0DQo+ID4gLS0tLSBhL2dydWItY29yZS9jb21tYW5kcy9sZWdhY3ljZmcuYw0KPiA+IC0rKysg Yi9ncnViLWNvcmUvY29tbWFuZHMvbGVnYWN5Y2ZnLmMNCj4gPiAtQEAgLTMxNCw3ICszMTQsNyBA QCBncnViX2NtZF9sZWdhY3lfa2VybmVsIChzdHJ1Y3QgZ3J1Yl9jb21tYW5kDQo+ID4gKm15Y21k IF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwNCj4gPiAtwqAgwqBpZiAoYXJnYyA8IDIpDQo+ID4g LcKgIMKgIMKgcmV0dXJuIGdydWJfZXJyb3IgKEdSVUJfRVJSX0JBRF9BUkdVTUVOVCwgTl8oImZp bGVuYW1lDQo+ID4gZXhwZWN0ZWQiKSk7DQo+ID4gLSANCj4gPiAtLcKgIGN1dGFyZ3MgPSBncnVi X21hbGxvYyAoc2l6ZW9mIChjdXRhcmdzWzBdKSAqIChhcmdjIC0gMSkpOw0KPiA+IC0rwqAgY3V0 YXJncyA9IGdydWJfY2FsbG9jIChhcmdjIC0gMSwgc2l6ZW9mIChjdXRhcmdzWzBdKSk7DQo+ID4g LcKgIMKgaWYgKCFjdXRhcmdzKQ0KPiA+IC3CoCDCoCDCoHJldHVybiBncnViX2Vycm5vOw0KPiA+ IC3CoCDCoGN1dGFyZ2MgPSBhcmdjIC0gMTsNCj4gPiAtQEAgLTQzNiw3ICs0MzYsNyBAQCBncnVi X2NtZF9sZWdhY3lfa2VybmVsIChzdHJ1Y3QgZ3J1Yl9jb21tYW5kDQo+ID4gKm15Y21kIF9fYXR0 cmlidXRlX18gKCh1bnVzZWQpKSwNCj4gPiAtwqAgwqAgwqAgwqAgwqAgwqB7DQo+ID4gLcKgIMKg IMKgIMKgIMKgIMKgIMKgY2hhciByYnVmWzNdID0gIi1yIjsNCj4gPiAtwqAgwqAgwqAgwqAgwqAg wqAgwqBic2RhcmdjID0gY3V0YXJnYyArIDI7DQo+ID4gLS3CoCDCoCDCoCDCoCDCoCDCoCBic2Rh cmdzID0gZ3J1Yl9tYWxsb2MgKHNpemVvZiAoYnNkYXJnc1swXSkgKiBic2RhcmdjKTsNCj4gPiAt K8KgIMKgIMKgIMKgIMKgIMKgIGJzZGFyZ3MgPSBncnViX2NhbGxvYyAoYnNkYXJnYywgc2l6ZW9m IChic2RhcmdzWzBdKSk7DQo+ID4gLcKgIMKgIMKgIMKgIMKgIMKgIMKgaWYgKCFic2RhcmdzKQ0K PiA+IC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHsNCj4gPiAtwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqBlcnIgPSBncnViX2Vycm5vOw0KPiA+IC1AQCAtNTU5LDcgKzU1OSw3IEBAIGdydWJfY21k X2xlZ2FjeV9pbml0cmRub3VuemlwIChzdHJ1Y3QNCj4gPiBncnViX2NvbW1hbmQgKm15Y21kIF9f YXR0cmlidXRlX18gKCh1bnVzZWQNCj4gPiAtwqAgwqAgwqAgwqByZXR1cm4gZ3J1Yl9lcnJvciAo R1JVQl9FUlJfQkFEX0FSR1VNRU5ULCBOXygiY2FuJ3QgZmluZA0KPiA+IGNvbW1hbmQgYCVzJyIp LA0KPiA+IC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAibW9kdWxlIik7 DQo+ID4gLSANCj4gPiAtLcKgIMKgIMKgIG5ld2FyZ3MgPSBncnViX21hbGxvYyAoKGFyZ2MgKyAx KSAqIHNpemVvZiAobmV3YXJnc1swXSkpOw0KPiA+IC0rwqAgwqAgwqAgbmV3YXJncyA9IGdydWJf Y2FsbG9jIChhcmdjICsgMSwgc2l6ZW9mIChuZXdhcmdzWzBdKSk7DQo+ID4gLcKgIMKgIMKgIMKg aWYgKCFuZXdhcmdzKQ0KPiA+IC3CoCDCoCDCoCDCoHJldHVybiBncnViX2Vycm5vOw0KPiA+IC3C oCDCoCDCoCDCoGdydWJfbWVtY3B5IChuZXdhcmdzICsgMSwgYXJncywgYXJnYyAqIHNpemVvZiAo bmV3YXJnc1swXSkpOw0KPiA+IC1kaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL2NvbW1hbmRzL21lbnVl bnRyeS5jIGIvZ3J1Yi0NCj4gPiBjb3JlL2NvbW1hbmRzL21lbnVlbnRyeS5jDQo+ID4gLWluZGV4 IDJjNTM2M2QuLjkxNjRkZjcgMTAwNjQ0DQo+ID4gLS0tLSBhL2dydWItY29yZS9jb21tYW5kcy9t ZW51ZW50cnkuYw0KPiA+IC0rKysgYi9ncnViLWNvcmUvY29tbWFuZHMvbWVudWVudHJ5LmMNCj4g PiAtQEAgLTE1NCw3ICsxNTQsNyBAQCBncnViX25vcm1hbF9hZGRfbWVudV9lbnRyeSAoaW50IGFy Z2MsIGNvbnN0IGNoYXINCj4gPiAqKmFyZ3MsDQo+ID4gLcKgIMKgIMKgZ290byBmYWlsOw0KPiA+ IC0gDQo+ID4gLcKgIMKgLyogU2F2ZSBhcmdjLCBhcmdzIHRvIHBhc3MgYXMgcGFyYW1ldGVycyB0 byBibG9jayBhcmcgbGF0ZXIuICovDQo+ID4gLS3CoCBtZW51X2FyZ3MgPSBncnViX21hbGxvYyAo c2l6ZW9mIChjaGFyKikgKiAoYXJnYyArIDEpKTsNCj4gPiAtK8KgIG1lbnVfYXJncyA9IGdydWJf Y2FsbG9jIChhcmdjICsgMSwgc2l6ZW9mIChjaGFyICopKTsNCj4gPiAtwqAgwqBpZiAoISBtZW51 X2FyZ3MpDQo+ID4gLcKgIMKgIMKgZ290byBmYWlsOw0KPiA+IC0gDQo+ID4gLWRpZmYgLS1naXQg YS9ncnViLWNvcmUvY29tbWFuZHMvbmF0aXZlZGlzay5jIGIvZ3J1Yi0NCj4gPiBjb3JlL2NvbW1h bmRzL25hdGl2ZWRpc2suYw0KPiA+IC1pbmRleCA2OTk0NDdkLi43YzhmOTdmIDEwMDY0NA0KPiA+ IC0tLS0gYS9ncnViLWNvcmUvY29tbWFuZHMvbmF0aXZlZGlzay5jDQo+ID4gLSsrKyBiL2dydWIt Y29yZS9jb21tYW5kcy9uYXRpdmVkaXNrLmMNCj4gPiAtQEAgLTE5NSw3ICsxOTUsNyBAQCBncnVi X2NtZF9uYXRpdmVkaXNrIChncnViX2NvbW1hbmRfdCBjbWQNCj4gPiBfX2F0dHJpYnV0ZV9fICgo dW51c2VkKSksDQo+ID4gLcKgIMKgZWxzZQ0KPiA+IC3CoCDCoCDCoHBhdGhfcHJlZml4ID0gcHJl Zml4Ow0KPiA+IC0gDQo+ID4gLS3CoCBtb2RzID0gZ3J1Yl9tYWxsb2MgKGFyZ2MgKiBzaXplb2Yg KG1vZHNbMF0pKTsNCj4gPiAtK8KgIG1vZHMgPSBncnViX2NhbGxvYyAoYXJnYywgc2l6ZW9mICht b2RzWzBdKSk7DQo+ID4gLcKgIMKgaWYgKCFtb2RzKQ0KPiA+IC3CoCDCoCDCoHJldHVybiBncnVi X2Vycm5vOw0KPiA+IC0gDQo+ID4gLWRpZmYgLS1naXQgYS9ncnViLWNvcmUvY29tbWFuZHMvcGFy dHRvb2wuYyBiL2dydWItDQo+ID4gY29yZS9jb21tYW5kcy9wYXJ0dG9vbC5jDQo+ID4gLWluZGV4 IDIyYjQ2YjEuLjA1MWUzMTMgMTAwNjQ0DQo+ID4gLS0tLSBhL2dydWItY29yZS9jb21tYW5kcy9w YXJ0dG9vbC5jDQo+ID4gLSsrKyBiL2dydWItY29yZS9jb21tYW5kcy9wYXJ0dG9vbC5jDQo+ID4g LUBAIC01OSw3ICs1OSwxMyBAQCBncnViX3BhcnR0b29sX3JlZ2lzdGVyKGNvbnN0IGNoYXIgKnBh cnRfbmFtZSwNCj4gPiAtwqAgwqBmb3IgKG5hcmdzID0gMDsgYXJnc1tuYXJnc10ubmFtZSAhPSAw OyBuYXJncysrKTsNCj4gPiAtwqAgwqBjdXItPm5hcmdzID0gbmFyZ3M7DQo+ID4gLcKgIMKgY3Vy LT5hcmdzID0gKHN0cnVjdCBncnViX3BhcnR0b29sX2FyZ2Rlc2MgKikNCj4gPiAtLcKgIMKgIGdy dWJfbWFsbG9jICgobmFyZ3MgKyAxKSAqIHNpemVvZiAoc3RydWN0DQo+ID4gZ3J1Yl9wYXJ0dG9v bF9hcmdkZXNjKSk7DQo+ID4gLSvCoCDCoCBncnViX2NhbGxvYyAobmFyZ3MgKyAxLCBzaXplb2Yg KHN0cnVjdCBncnViX3BhcnR0b29sX2FyZ2Rlc2MpKTsNCj4gPiAtK8KgIGlmICghY3VyLT5hcmdz KQ0KPiA+IC0rwqAgwqAgew0KPiA+IC0rwqAgwqAgwqAgZ3J1Yl9mcmVlIChjdXIpOw0KPiA+IC0r wqAgwqAgwqAgY3VyaGFuZGxlLS07DQo+ID4gLSvCoCDCoCDCoCByZXR1cm4gLTE7DQo+ID4gLSvC oCDCoCB9DQo+ID4gLcKgIMKgZ3J1Yl9tZW1jcHkgKGN1ci0+YXJncywgYXJncywNCj4gPiAtwqAg wqAgwqAgwqAgwqAgwqAgwqAgKG5hcmdzICsgMSkgKiBzaXplb2YgKHN0cnVjdCBncnViX3BhcnR0 b29sX2FyZ2Rlc2MpKTsNCj4gPiAtIA0KPiA+IC1AQCAtMjU3LDcgKzI2Myw3IEBAIGdydWJfY21k X3BhcnR0b29sIChncnViX2NvbW1hbmRfdCBjbWQNCj4gPiBfX2F0dHJpYnV0ZV9fICgodW51c2Vk KSksDQo+ID4gLcKgIMKgIMKgIMKgcmV0dXJuIGVycjsNCj4gPiAtwqAgwqAgwqAgwqB9DQo+ID4g LSANCj4gPiAtLcKgIHBhcnNlZCA9IChpbnQgKikgZ3J1Yl96YWxsb2MgKGFyZ2MgKiBzaXplb2Yg KGludCkpOw0KPiA+IC0rwqAgcGFyc2VkID0gKGludCAqKSBncnViX2NhbGxvYyAoYXJnYywgc2l6 ZW9mIChpbnQpKTsNCj4gPiAtIA0KPiA+IC3CoCDCoGZvciAoaSA9IDE7IGkgPCBhcmdjOyBpKysp DQo+ID4gLcKgIMKgIMKgaWYgKCEgcGFyc2VkW2ldKQ0KPiA+IC1AQCAtMjkwLDcgKzI5Niw3IEBA IGdydWJfY21kX3BhcnR0b29sIChncnViX2NvbW1hbmRfdCBjbWQNCj4gPiBfX2F0dHJpYnV0ZV9f ICgodW51c2VkKSksDQo+ID4gLcKgIMKgIMKgIMKgIMKgfQ0KPiA+IC3CoCDCoCDCoCDCoHB0b29s ID0gY3VyOw0KPiA+IC3CoCDCoCDCoCDCoHBhcmdzID0gKHN0cnVjdCBncnViX3BhcnR0b29sX2Fy Z3MgKikNCj4gPiAtLcKgIMKgIMKgIMKgIGdydWJfemFsbG9jIChwdG9vbC0+bmFyZ3MgKiBzaXpl b2YgKHN0cnVjdA0KPiA+IGdydWJfcGFydHRvb2xfYXJncykpOw0KPiA+IC0rwqAgwqAgwqAgwqAg Z3J1Yl9jYWxsb2MgKHB0b29sLT5uYXJncywgc2l6ZW9mIChzdHJ1Y3QNCj4gPiBncnViX3BhcnR0 b29sX2FyZ3MpKTsNCj4gPiAtwqAgwqAgwqAgwqBmb3IgKGogPSBpOyBqIDwgYXJnYzsgaisrKQ0K PiA+IC3CoCDCoCDCoCDCoCDCoGlmICghIHBhcnNlZFtqXSkNCj4gPiAtwqAgwqAgwqAgwqAgwqAg wqB7DQo+ID4gLWRpZmYgLS1naXQgYS9ncnViLWNvcmUvY29tbWFuZHMvcmVnZXhwLmMgYi9ncnVi LQ0KPiA+IGNvcmUvY29tbWFuZHMvcmVnZXhwLmMNCj4gPiAtaW5kZXggZjAwYjE4NC4uNDAxOTE2 NCAxMDA2NDQNCj4gPiAtLS0tIGEvZ3J1Yi1jb3JlL2NvbW1hbmRzL3JlZ2V4cC5jDQo+ID4gLSsr KyBiL2dydWItY29yZS9jb21tYW5kcy9yZWdleHAuYw0KPiA+IC1AQCAtMTE2LDcgKzExNiw3IEBA IGdydWJfY21kX3JlZ2V4cCAoZ3J1Yl9leHRjbWRfY29udGV4dF90IGN0eHQsIGludA0KPiA+IGFy Z2MsIGNoYXIgKiphcmdzKQ0KPiA+IC3CoCDCoGlmIChyZXQpDQo+ID4gLcKgIMKgIMKgZ290byBm YWlsOw0KPiA+IC0gDQo+ID4gLS3CoCBtYXRjaGVzID0gZ3J1Yl96YWxsb2MgKHNpemVvZiAoKm1h dGNoZXMpICogKHJlZ2V4LnJlX25zdWIgKyAxKSk7DQo+ID4gLSvCoCBtYXRjaGVzID0gZ3J1Yl9j YWxsb2MgKHJlZ2V4LnJlX25zdWIgKyAxLCBzaXplb2YgKCptYXRjaGVzKSk7DQo+ID4gLcKgIMKg aWYgKCEgbWF0Y2hlcykNCj4gPiAtwqAgwqAgwqBnb3RvIGZhaWw7DQo+ID4gLSANCj4gPiAtZGlm ZiAtLWdpdCBhL2dydWItY29yZS9jb21tYW5kcy9zZWFyY2hfd3JhcC5jIGIvZ3J1Yi0NCj4gPiBj b3JlL2NvbW1hbmRzL3NlYXJjaF93cmFwLmMNCj4gPiAtaW5kZXggZDdmZDI2Yi4uNDdmYzhlYiAx MDA2NDQNCj4gPiAtLS0tIGEvZ3J1Yi1jb3JlL2NvbW1hbmRzL3NlYXJjaF93cmFwLmMNCj4gPiAt KysrIGIvZ3J1Yi1jb3JlL2NvbW1hbmRzL3NlYXJjaF93cmFwLmMNCj4gPiAtQEAgLTEyMiw3ICsx MjIsNyBAQCBncnViX2NtZF9zZWFyY2ggKGdydWJfZXh0Y21kX2NvbnRleHRfdCBjdHh0LCBpbnQN Cj4gPiBhcmdjLCBjaGFyICoqYXJncykNCj4gPiAtwqAgwqAgwqBmb3IgKGkgPSAwOyBzdGF0ZVtT RUFSQ0hfSElOVF9CQVJFTUVUQUxdLmFyZ3NbaV07IGkrKykNCj4gPiAtwqAgwqAgwqAgwqBuaGlu dHMrKzsNCj4gPiAtIA0KPiA+IC0twqAgaGludHMgPSBncnViX21hbGxvYyAoc2l6ZW9mIChoaW50 c1swXSkgKiBuaGludHMpOw0KPiA+IC0rwqAgaGludHMgPSBncnViX2NhbGxvYyAobmhpbnRzLCBz aXplb2YgKGhpbnRzWzBdKSk7DQo+ID4gLcKgIMKgaWYgKCFoaW50cykNCj4gPiAtwqAgwqAgwqBy ZXR1cm4gZ3J1Yl9lcnJubzsNCj4gPiAtwqAgwqBqID0gMDsNCj4gPiAtZGlmZiAtLWdpdCBhL2dy dWItY29yZS9kaXNrL2Rpc2tmaWx0ZXIuYyBiL2dydWItDQo+ID4gY29yZS9kaXNrL2Rpc2tmaWx0 ZXIuYw0KPiA+IC1pbmRleCBjM2I1NzhhLi42OGNhOWUwIDEwMDY0NA0KPiA+IC0tLS0gYS9ncnVi LWNvcmUvZGlzay9kaXNrZmlsdGVyLmMNCj4gPiAtKysrIGIvZ3J1Yi1jb3JlL2Rpc2svZGlza2Zp bHRlci5jDQo+ID4gLUBAIC0xMTM0LDcgKzExMzQsNyBAQCBncnViX2Rpc2tmaWx0ZXJfbWFrZV9y YWlkIChncnViX3NpemVfdA0KPiA+IHV1aWRsZW4sIGNoYXIgKnV1aWQsIGludCBubWVtYiwNCj4g PiAtwqAgwqBhcnJheS0+bHZzLT5zZWdtZW50cy0+bm9kZV9jb3VudCA9IG5tZW1iOw0KPiA+IC3C oCDCoGFycmF5LT5sdnMtPnNlZ21lbnRzLT5yYWlkX21lbWJlcl9zaXplID0gZGlza19zaXplOw0K PiA+IC3CoCDCoGFycmF5LT5sdnMtPnNlZ21lbnRzLT5ub2Rlcw0KPiA+IC0twqAgwqAgPSBncnVi X3phbGxvYyAobm1lbWIgKiBzaXplb2YgKGFycmF5LT5sdnMtPnNlZ21lbnRzLQ0KPiA+ID4gbm9k ZXNbMF0pKTsNCj4gPiAtK8KgIMKgID0gZ3J1Yl9jYWxsb2MgKG5tZW1iLCBzaXplb2YgKGFycmF5 LT5sdnMtPnNlZ21lbnRzLT5ub2Rlc1swXSkpOw0KPiA+IC3CoCDCoGFycmF5LT5sdnMtPnNlZ21l bnRzLT5zdHJpcGVfc2l6ZSA9IHN0cmlwZV9zaXplOw0KPiA+IC3CoCDCoGZvciAoaSA9IDA7IGkg PCBubWVtYjsgaSsrKQ0KPiA+IC3CoCDCoCDCoHsNCj4gPiAtQEAgLTEyMjYsNyArMTIyNiw3IEBA IGluc2VydF9hcnJheSAoZ3J1Yl9kaXNrX3QgZGlzaywgY29uc3Qgc3RydWN0DQo+ID4gZ3J1Yl9k aXNrZmlsdGVyX3B2X2lkICppZCwNCj4gPiAtwqAgwqAgwqAgwqAgwqBncnViX3BhcnRpdGlvbl90 IHA7DQo+ID4gLcKgIMKgIMKgIMKgIMKgZm9yIChwID0gZGlzay0+cGFydGl0aW9uOyBwOyBwID0g cC0+cGFyZW50KQ0KPiA+IC3CoCDCoCDCoCDCoCDCoCDCoHMrKzsNCj4gPiAtLcKgIMKgIMKgIMKg IHB2LT5wYXJ0bWFwcyA9IHhtYWxsb2MgKHMgKiBzaXplb2YgKHB2LT5wYXJ0bWFwc1swXSkpOw0K PiA+IC0rwqAgwqAgwqAgwqAgcHYtPnBhcnRtYXBzID0geGNhbGxvYyAocywgc2l6ZW9mIChwdi0+ cGFydG1hcHNbMF0pKTsNCj4gPiAtwqAgwqAgwqAgwqAgwqBzID0gMDsNCj4gPiAtwqAgwqAgwqAg wqAgwqBmb3IgKHAgPSBkaXNrLT5wYXJ0aXRpb247IHA7IHAgPSBwLT5wYXJlbnQpDQo+ID4gLcKg IMKgIMKgIMKgIMKgIMKgcHYtPnBhcnRtYXBzW3MrK10gPSB4c3RyZHVwIChwLT5wYXJ0bWFwLT5u YW1lKTsNCj4gPiAtZGlmZiAtLWdpdCBhL2dydWItY29yZS9kaXNrL2llZWUxMjc1L29mZGlzay5j IGIvZ3J1Yi0NCj4gPiBjb3JlL2Rpc2svaWVlZTEyNzUvb2ZkaXNrLmMNCj4gPiAtaW5kZXggZjcz MjU3ZS4uMDM2NzRjYiAxMDA2NDQNCj4gPiAtLS0tIGEvZ3J1Yi1jb3JlL2Rpc2svaWVlZTEyNzUv b2ZkaXNrLmMNCj4gPiAtKysrIGIvZ3J1Yi1jb3JlL2Rpc2svaWVlZTEyNzUvb2ZkaXNrLmMNCj4g PiAtQEAgLTI5Nyw3ICsyOTcsNyBAQCBkZXZfaXRlcmF0ZSAoY29uc3Qgc3RydWN0IGdydWJfaWVl ZTEyNzVfZGV2YWxpYXMNCj4gPiAqYWxpYXMpDQo+ID4gLcKgIMKgIMKgIMKgLyogUG93ZXIgbWFj aGluZXMgZG9jdW1lbnRhdGlvbiBzcGVjaWZ5IDY3MiBhcyBtYXhpbXVtIFNBUw0KPiA+IGRpc2tz IGluDQo+ID4gLcKgIMKgIMKgIMKgIMKgIG9uZSBzeXN0ZW0uIFVzaW5nIGEgc2xpZ2h0bHkgbGFy Z2VyIHZhbHVlIHRvIGJlIHNhZmUuICovDQo+ID4gLcKgIMKgIMKgIMKgdGFibGVfc2l6ZSA9IDc2 ODsNCj4gPiAtLcKgIMKgIMKgIHRhYmxlID0gZ3J1Yl9tYWxsb2MgKHRhYmxlX3NpemUgKiBzaXpl b2YgKGdydWJfdWludDY0X3QpKTsNCj4gPiAtK8KgIMKgIMKgIHRhYmxlID0gZ3J1Yl9jYWxsb2Mg KHRhYmxlX3NpemUsIHNpemVvZiAoZ3J1Yl91aW50NjRfdCkpOw0KPiA+IC0gDQo+ID4gLcKgIMKg IMKgIMKgaWYgKCF0YWJsZSkNCj4gPiAtwqAgwqAgwqAgwqAgwqB7DQo+ID4gLWRpZmYgLS1naXQg YS9ncnViLWNvcmUvZGlzay9sZG0uYyBiL2dydWItY29yZS9kaXNrL2xkbS5jDQo+ID4gLWluZGV4 IDJhMjJkMmQuLmU2MzIzNzAgMTAwNjQ0DQo+ID4gLS0tLSBhL2dydWItY29yZS9kaXNrL2xkbS5j DQo+ID4gLSsrKyBiL2dydWItY29yZS9kaXNrL2xkbS5jDQo+ID4gLUBAIC0zMjMsOCArMzIzLDgg QEAgbWFrZV92ZyAoZ3J1Yl9kaXNrX3QgZGlzaywNCj4gPiAtwqAgwqAgwqAgwqAgwqBsdi0+c2Vn bWVudHMtPnR5cGUgPSBHUlVCX0RJU0tGSUxURVJfTUlSUk9SOw0KPiA+IC3CoCDCoCDCoCDCoCDC oGx2LT5zZWdtZW50cy0+bm9kZV9jb3VudCA9IDA7DQo+ID4gLcKgIMKgIMKgIMKgIMKgbHYtPnNl Z21lbnRzLT5ub2RlX2FsbG9jID0gODsNCj4gPiAtLcKgIMKgIMKgIMKgIGx2LT5zZWdtZW50cy0+ bm9kZXMgPSBncnViX3phbGxvYyAoc2l6ZW9mICgqbHYtPnNlZ21lbnRzLQ0KPiA+ID4gbm9kZXMp DQo+ID4gLS3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCogbHYtPnNlZ21lbnRzLQ0KPiA+ID4gbm9kZV9hbGxvYyk7DQo+ID4g LSvCoCDCoCDCoCDCoCBsdi0+c2VnbWVudHMtPm5vZGVzID0gZ3J1Yl9jYWxsb2MgKGx2LT5zZWdt ZW50cy0NCj4gPiA+IG5vZGVfYWxsb2MsDQo+ID4gLSvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHNpemVvZiAoKmx2LT5zZWdt ZW50cy0NCj4gPiA+IG5vZGVzKSk7DQo+ID4gLcKgIMKgIMKgIMKgIMKgaWYgKCFsdi0+c2VnbWVu dHMtPm5vZGVzKQ0KPiA+IC3CoCDCoCDCoCDCoCDCoCDCoGdvdG8gZmFpbDI7DQo+ID4gLcKgIMKg IMKgIMKgIMKgcHRyID0gdmJsa1tpXS5keW5hbWljOw0KPiA+IC1AQCAtNTQzLDggKzU0Myw4IEBA IG1ha2VfdmcgKGdydWJfZGlza190IGRpc2ssDQo+ID4gLcKgIMKgIMKgIMKgIMKgIMKgew0KPiA+ IC3CoCDCoCDCoCDCoCDCoCDCoCDCoGNvbXAtPnNlZ21lbnRfYWxsb2MgPSA4Ow0KPiA+IC3CoCDC oCDCoCDCoCDCoCDCoCDCoGNvbXAtPnNlZ21lbnRfY291bnQgPSAwOw0KPiA+IC0twqAgwqAgwqAg wqAgwqAgwqAgY29tcC0+c2VnbWVudHMgPSBncnViX21hbGxvYyAoc2l6ZW9mICgqY29tcC0+c2Vn bWVudHMpDQo+ID4gLS3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCAqIGNvbXAtPnNlZ21lbnRfYWxsb2MpOw0KPiA+IC0rwqAgwqAg wqAgwqAgwqAgwqAgY29tcC0+c2VnbWVudHMgPSBncnViX2NhbGxvYyAoY29tcC0+c2VnbWVudF9h bGxvYywNCj4gPiAtK8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIHNpemVvZiAoKmNvbXAtDQo+ID4gPiBzZWdtZW50cykpOw0KPiA+ IC3CoCDCoCDCoCDCoCDCoCDCoCDCoGlmICghY29tcC0+c2VnbWVudHMpDQo+ID4gLcKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgZ290byBmYWlsMjsNCj4gPiAtwqAgwqAgwqAgwqAgwqAgwqB9DQo+ID4g LUBAIC01OTAsOCArNTkwLDggQEAgbWFrZV92ZyAoZ3J1Yl9kaXNrX3QgZGlzaywNCj4gPiAtwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqB9DQo+ID4gLcKgIMKgIMKgIMKgIMKgIMKgIMKgY29tcC0+c2Vn bWVudHMtPm5vZGVfY291bnQgPSByZWFkX2ludCAocHRyICsgMSwgKnB0cik7DQo+ID4gLcKgIMKg IMKgIMKgIMKgIMKgIMKgY29tcC0+c2VnbWVudHMtPm5vZGVfYWxsb2MgPSBjb21wLT5zZWdtZW50 cy0NCj4gPiA+IG5vZGVfY291bnQ7DQo+ID4gLS3CoCDCoCDCoCDCoCDCoCDCoCBjb21wLT5zZWdt ZW50cy0+bm9kZXMgPSBncnViX3phbGxvYyAoc2l6ZW9mICgqY29tcC0NCj4gPiA+IHNlZ21lbnRz LT5ub2RlcykNCj4gPiAtLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgKiBjb21wLT5zZWdtZW50cy0NCj4gPiA+ IG5vZGVfYWxsb2MpOw0KPiA+IC0rwqAgwqAgwqAgwqAgwqAgwqAgY29tcC0+c2VnbWVudHMtPm5v ZGVzID0gZ3J1Yl9jYWxsb2MgKGNvbXAtPnNlZ21lbnRzLQ0KPiA+ID4gbm9kZV9hbGxvYywNCj4g PiAtK8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgc2l6ZW9mICgqY29tcC0NCj4gPiA+IHNlZ21lbnRzLT5ub2Rl cykpOw0KPiA+IC3CoCDCoCDCoCDCoCDCoCDCoCDCoGlmICghbHYtPnNlZ21lbnRzLT5ub2RlcykN Cj4gPiAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBnb3RvIGZhaWwyOw0KPiA+IC3CoCDCoCDCoCDC oCDCoCDCoH0NCj4gPiAtQEAgLTEwMTcsNyArMTAxNyw3IEBAIGdydWJfdXRpbF9sZG1fZW1iZWQg KHN0cnVjdCBncnViX2Rpc2sgKmRpc2ssDQo+ID4gdW5zaWduZWQgaW50ICpuc2VjdG9ycywNCj4g PiAtwqAgwqAgwqAgwqAqbnNlY3RvcnMgPSBsdi0+c2l6ZTsNCj4gPiAtwqAgwqAgwqAgwqBpZiAo Km5zZWN0b3JzID4gbWF4X25zZWN0b3JzKQ0KPiA+IC3CoCDCoCDCoCDCoCpuc2VjdG9ycyA9IG1h eF9uc2VjdG9yczsNCj4gPiAtLcKgIMKgIMKgICpzZWN0b3JzID0gZ3J1Yl9tYWxsb2MgKCpuc2Vj dG9ycyAqIHNpemVvZiAoKipzZWN0b3JzKSk7DQo+ID4gLSvCoCDCoCDCoCAqc2VjdG9ycyA9IGdy dWJfY2FsbG9jICgqbnNlY3RvcnMsIHNpemVvZiAoKipzZWN0b3JzKSk7DQo+ID4gLcKgIMKgIMKg IMKgaWYgKCEqc2VjdG9ycykNCj4gPiAtwqAgwqAgwqAgwqByZXR1cm4gZ3J1Yl9lcnJubzsNCj4g PiAtwqAgwqAgwqAgwqBmb3IgKGkgPSAwOyBpIDwgKm5zZWN0b3JzOyBpKyspDQo+ID4gLWRpZmYg LS1naXQgYS9ncnViLWNvcmUvZGlzay9sdWtzLmMgYi9ncnViLWNvcmUvZGlzay9sdWtzLmMNCj4g PiAtaW5kZXggODZjNTBjNi4uMThiM2E4YiAxMDA2NDQNCj4gPiAtLS0tIGEvZ3J1Yi1jb3JlL2Rp c2svbHVrcy5jDQo+ID4gLSsrKyBiL2dydWItY29yZS9kaXNrL2x1a3MuYw0KPiA+IC1AQCAtMzM2 LDcgKzMzNiw3IEBAIGx1a3NfcmVjb3Zlcl9rZXkgKGdydWJfZGlza190IHNvdXJjZSwNCj4gPiAt wqAgwqAgwqAgwqAmJiBncnViX2JlX3RvX2NwdTMyIChoZWFkZXIua2V5YmxvY2tbaV0uc3RyaXBl cykgPg0KPiA+IG1heF9zdHJpcGVzKQ0KPiA+IC3CoCDCoCDCoCDCoG1heF9zdHJpcGVzID0gZ3J1 Yl9iZV90b19jcHUzMiAoaGVhZGVyLmtleWJsb2NrW2ldLnN0cmlwZXMpOw0KPiA+IC0gDQo+ID4g LS3CoCBzcGxpdF9rZXkgPSBncnViX21hbGxvYyAoa2V5c2l6ZSAqIG1heF9zdHJpcGVzKTsNCj4g PiAtK8KgIHNwbGl0X2tleSA9IGdydWJfY2FsbG9jIChrZXlzaXplLCBtYXhfc3RyaXBlcyk7DQo+ ID4gLcKgIMKgaWYgKCFzcGxpdF9rZXkpDQo+ID4gLcKgIMKgIMKgcmV0dXJuIGdydWJfZXJybm87 DQo+ID4gLSANCj4gPiAtZGlmZiAtLWdpdCBhL2dydWItY29yZS9kaXNrL2x2bS5jIGIvZ3J1Yi1j b3JlL2Rpc2svbHZtLmMNCj4gPiAtaW5kZXggZGM2YjgzYi4uN2I1ZmJiYyAxMDA2NDQNCj4gPiAt LS0tIGEvZ3J1Yi1jb3JlL2Rpc2svbHZtLmMNCj4gPiAtKysrIGIvZ3J1Yi1jb3JlL2Rpc2svbHZt LmMNCj4gPiAtQEAgLTIwOSw3ICsyMDksNyBAQCBncnViX2x2bV9kZXRlY3QgKGdydWJfZGlza190 IGRpc2ssDQo+ID4gLcKgIMKgIMKgIGZpcnN0IG9uZS7CoCAqLw0KPiA+IC0gDQo+ID4gLcKgIMKg LyogQWxsb2NhdGUgYnVmZmVyIHNwYWNlIGZvciB0aGUgY2lyY3VsYXIgd29yc3QtY2FzZSBzY2Vu YXJpby4gKi8NCj4gPiAtLcKgIG1ldGFkYXRhYnVmID0gZ3J1Yl9tYWxsb2MgKDIgKiBtZGFfc2l6 ZSk7DQo+ID4gLSvCoCBtZXRhZGF0YWJ1ZiA9IGdydWJfY2FsbG9jICgyLCBtZGFfc2l6ZSk7DQo+ ID4gLcKgIMKgaWYgKCEgbWV0YWRhdGFidWYpDQo+ID4gLcKgIMKgIMKgZ290byBmYWlsOw0KPiA+ IC0gDQo+ID4gLUBAIC00NjQsNyArNDY0LDcgQEAgZ3J1Yl9sdm1fZGV0ZWN0IChncnViX2Rpc2tf dCBkaXNrLA0KPiA+IC0gI2VuZGlmDQo+ID4gLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgZ290 byBsdnNfZmFpbDsNCj4gPiAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB9DQo+ID4gLS3CoCDCoCDC oCDCoCDCoCDCoCBsdi0+c2VnbWVudHMgPSBncnViX3phbGxvYyAoc2l6ZW9mICgqc2VnKSAqIGx2 LQ0KPiA+ID4gc2VnbWVudF9jb3VudCk7DQo+ID4gLSvCoCDCoCDCoCDCoCDCoCDCoCBsdi0+c2Vn bWVudHMgPSBncnViX2NhbGxvYyAobHYtPnNlZ21lbnRfY291bnQsIHNpemVvZg0KPiA+ICgqc2Vn KSk7DQo+ID4gLcKgIMKgIMKgIMKgIMKgIMKgIMKgc2VnID0gbHYtPnNlZ21lbnRzOw0KPiA+IC0g DQo+ID4gLcKgIMKgIMKgIMKgIMKgIMKgIMKgZm9yIChpID0gMDsgaSA8IGx2LT5zZWdtZW50X2Nv dW50OyBpKyspDQo+ID4gLUBAIC01MjEsOCArNTIxLDggQEAgZ3J1Yl9sdm1fZGV0ZWN0IChncnVi X2Rpc2tfdCBkaXNrLA0KPiA+IC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGlmIChz ZWctPm5vZGVfY291bnQgIT0gMSkNCj4gPiAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqBzZWctPnN0cmlwZV9zaXplID0gZ3J1Yl9sdm1fZ2V0dmFsdWUgKCZwLA0KPiA+ICJzdHJp cGVfc2l6ZSA9ICIpOw0KPiA+IC0gDQo+ID4gLS3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCBzZWctPm5vZGVzID0gZ3J1Yl96YWxsb2MgKHNpemVvZiAoKnN0cmlwZSkNCj4gPiAtLcKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgICogc2VnLT5ub2RlX2NvdW50KTsNCj4gPiAtK8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIHNlZy0+bm9kZXMgPSBncnViX2NhbGxvYyAoc2VnLT5ub2RlX2NvdW50LA0KPiA+IC0r wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgc2l6ZW9mICgqc3RyaXBlKSk7DQo+ID4gLcKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgc3RyaXBlID0gc2VnLT5ub2RlczsNCj4gPiAtIA0KPiA+IC3CoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoHAgPSBncnViX3N0cnN0ciAocCwgInN0cmlwZXMgPSBbIik7 DQo+ID4gLUBAIC04OTgsNyArODk4LDcgQEAgZ3J1Yl9sdm1fZGV0ZWN0IChncnViX2Rpc2tfdCBk aXNrLA0KPiA+IC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGJyZWFrOw0KPiA+IC3CoCDCoCDCoCDC oCDCoCDCoGlmIChsdikNCj4gPiAtwqAgwqAgwqAgwqAgwqAgwqAgwqB7DQo+ID4gLS3CoCDCoCDC oCDCoCDCoCDCoCDCoCBjYWNoZS0+bHYtPnNlZ21lbnRzID0gZ3J1Yl9tYWxsb2MgKGx2LT5zZWdt ZW50X2NvdW50DQo+ID4gKiBzaXplb2YgKCpsdi0+c2VnbWVudHMpKTsNCj4gPiAtK8KgIMKgIMKg IMKgIMKgIMKgIMKgIGNhY2hlLT5sdi0+c2VnbWVudHMgPSBncnViX2NhbGxvYyAobHYtPnNlZ21l bnRfY291bnQsDQo+ID4gc2l6ZW9mICgqbHYtPnNlZ21lbnRzKSk7DQo+ID4gLcKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgaWYgKCFjYWNoZS0+bHYtPnNlZ21lbnRzKQ0KPiA+IC3CoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoHsNCj4gPiAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBncnViX2x2 bV9mcmVlX2NhY2hlX2x2cyAoY2FjaGVfbHZzKTsNCj4gPiAtQEAgLTkxMSw3ICs5MTEsNyBAQCBn cnViX2x2bV9kZXRlY3QgKGdydWJfZGlza190IGRpc2ssDQo+ID4gLcKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgc3RydWN0IGdydWJfZGlza2ZpbHRlcl9ub2RlICpub2RlcyA9IGx2LQ0KPiA+ ID4gc2VnbWVudHNbaV0ubm9kZXM7DQo+ID4gLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg Z3J1Yl9zaXplX3Qgbm9kZV9jb3VudCA9IGx2LQ0KPiA+ID4gc2VnbWVudHNbaV0ubm9kZV9jb3Vu dDsNCj4gPiAtIA0KPiA+IC0twqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY2FjaGUtPmx2LT5z ZWdtZW50c1tpXS5ub2RlcyA9IGdydWJfbWFsbG9jDQo+ID4gKG5vZGVfY291bnQgKiBzaXplb2Yg KCpub2RlcykpOw0KPiA+IC0rwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY2FjaGUtPmx2LT5z ZWdtZW50c1tpXS5ub2RlcyA9IGdydWJfY2FsbG9jDQo+ID4gKG5vZGVfY291bnQsIHNpemVvZiAo Km5vZGVzKSk7DQo+ID4gLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgaWYgKCFjYWNoZS0+ bHYtPnNlZ21lbnRzW2ldLm5vZGVzKQ0KPiA+IC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoHsNCj4gPiAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBmb3IgKGogPSAw OyBqIDwgaTsgKytqKQ0KPiA+IC1kaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL2Rpc2sveGVuL3hlbmRp c2suYyBiL2dydWItDQo+ID4gY29yZS9kaXNrL3hlbi94ZW5kaXNrLmMNCj4gPiAtaW5kZXggNDg0 NzZjYi4uZDY2MTJlZSAxMDA2NDQNCj4gPiAtLS0tIGEvZ3J1Yi1jb3JlL2Rpc2sveGVuL3hlbmRp c2suYw0KPiA+IC0rKysgYi9ncnViLWNvcmUvZGlzay94ZW4veGVuZGlzay5jDQo+ID4gLUBAIC00 MjYsNyArNDI2LDcgQEAgZ3J1Yl94ZW5kaXNrX2luaXQgKHZvaWQpDQo+ID4gLcKgIMKgaWYgKCFj dHIpDQo+ID4gLcKgIMKgIMKgcmV0dXJuOw0KPiA+IC0gDQo+ID4gLS3CoCB2aXJ0ZGlza3MgPSBn cnViX21hbGxvYyAoY3RyICogc2l6ZW9mICh2aXJ0ZGlza3NbMF0pKTsNCj4gPiAtK8KgIHZpcnRk aXNrcyA9IGdydWJfY2FsbG9jIChjdHIsIHNpemVvZiAodmlydGRpc2tzWzBdKSk7DQo+ID4gLcKg IMKgaWYgKCF2aXJ0ZGlza3MpDQo+ID4gLcKgIMKgIMKgcmV0dXJuOw0KPiA+IC3CoCDCoGlmIChn cnViX3hlbnN0b3JlX2RpciAoImRldmljZS92YmQiLCBmaWxsLCAmY3RyKSkNCj4gPiAtZGlmZiAt LWdpdCBhL2dydWItY29yZS9lZmllbXUvbG9hZGNvcmUuYyBiL2dydWItDQo+ID4gY29yZS9lZmll bXUvbG9hZGNvcmUuYw0KPiA+IC1pbmRleCA0NDA4NWVmLi4yYjkyNDYyIDEwMDY0NA0KPiA+IC0t LS0gYS9ncnViLWNvcmUvZWZpZW11L2xvYWRjb3JlLmMNCj4gPiAtKysrIGIvZ3J1Yi1jb3JlL2Vm aWVtdS9sb2FkY29yZS5jDQo+ID4gLUBAIC0yMDEsNyArMjAxLDcgQEAgZ3J1Yl9lZmllbXVfY291 bnRfc3ltYm9scyAoY29uc3QgRWxmX0VoZHIgKmUpDQo+ID4gLSANCj4gPiAtwqAgwqBncnViX2Vm aWVtdV9uZWxmc3ltcyA9ICh1bnNpZ25lZCkgcy0+c2hfc2l6ZSAvICh1bnNpZ25lZCkgcy0NCj4g PiA+IHNoX2VudHNpemU7DQo+ID4gLcKgIMKgZ3J1Yl9lZmllbXVfZWxmc3ltcyA9IChzdHJ1Y3Qg Z3J1Yl9lZmllbXVfZWxmX3N5bSAqKQ0KPiA+IC0twqAgwqAgZ3J1Yl9tYWxsb2MgKHNpemVvZiAo c3RydWN0IGdydWJfZWZpZW11X2VsZl9zeW0pICoNCj4gPiBncnViX2VmaWVtdV9uZWxmc3ltcyk7 DQo+ID4gLSvCoCDCoCBncnViX2NhbGxvYyAoZ3J1Yl9lZmllbXVfbmVsZnN5bXMsIHNpemVvZiAo c3RydWN0DQo+ID4gZ3J1Yl9lZmllbXVfZWxmX3N5bSkpOw0KPiA+IC0gDQo+ID4gLcKgIMKgLyog UmVsb2NhdG9ycyAqLw0KPiA+IC3CoCDCoGZvciAoaSA9IDAsIHMgPSAoRWxmX1NoZHIgKikgKChj aGFyICopIGUgKyBlLT5lX3Nob2ZmKTsNCj4gPiAtZGlmZiAtLWdpdCBhL2dydWItY29yZS9lZmll bXUvbW0uYyBiL2dydWItY29yZS9lZmllbXUvbW0uYw0KPiA+IC1pbmRleCA1MmEwMzJmLi45Yjhl MGQwIDEwMDY0NA0KPiA+IC0tLS0gYS9ncnViLWNvcmUvZWZpZW11L21tLmMNCj4gPiAtKysrIGIv Z3J1Yi1jb3JlL2VmaWVtdS9tbS5jDQo+ID4gLUBAIC01NTQsMTEgKzU1NCwxMSBAQCBncnViX2Vm aWVtdV9tbWFwX3NvcnRfYW5kX3VuaXEgKHZvaWQpDQo+ID4gLcKgIMKgLyogSW5pdGlhbGl6ZSB2 YXJpYWJsZXMqLw0KPiA+IC3CoCDCoGdydWJfbWVtc2V0IChwcmVzZW50LCAwLCBzaXplb2YgKGlu dCkgKg0KPiA+IEdSVUJfRUZJX01BWF9NRU1PUllfVFlQRSk7DQo+ID4gLcKgIMKgc2NhbmxpbmVf ZXZlbnRzID0gKHN0cnVjdCBncnViX2VmaWVtdV9tbWFwX3NjYW4gKikNCj4gPiAtLcKgIMKgIGdy dWJfbWFsbG9jIChzaXplb2YgKHN0cnVjdCBncnViX2VmaWVtdV9tbWFwX3NjYW4pICogMiAqDQo+ ID4gbW1hcF9udW0pOw0KPiA+IC0rwqAgwqAgZ3J1Yl9jYWxsb2MgKG1tYXBfbnVtLCBzaXplb2Yg KHN0cnVjdCBncnViX2VmaWVtdV9tbWFwX3NjYW4pICoNCj4gPiAyKTsNCj4gPiAtIA0KPiA+IC3C oCDCoC8qIE51bWJlciBvZiBjaHVua3MgY2FuJ3QgaW5jcmVhc2UgbW9yZSB0aGFuIGJ5IGZhY3Rv ciBvZiAyICovDQo+ID4gLcKgIMKgcmVzdWx0ID0gKGdydWJfZWZpX21lbW9yeV9kZXNjcmlwdG9y X3QgKikNCj4gPiAtLcKgIMKgIGdydWJfbWFsbG9jIChzaXplb2YgKGdydWJfZWZpX21lbW9yeV9k ZXNjcmlwdG9yX3QpICogMiAqDQo+ID4gbW1hcF9udW0pOw0KPiA+IC0rwqAgwqAgZ3J1Yl9jYWxs b2MgKG1tYXBfbnVtLCBzaXplb2YgKGdydWJfZWZpX21lbW9yeV9kZXNjcmlwdG9yX3QpICoNCj4g PiAyKTsNCj4gPiAtwqAgwqBpZiAoIXJlc3VsdCB8fCAhc2NhbmxpbmVfZXZlbnRzKQ0KPiA+IC3C oCDCoCDCoHsNCj4gPiAtwqAgwqAgwqAgwqBncnViX2ZyZWUgKHJlc3VsdCk7DQo+ID4gLUBAIC02 NjAsNyArNjYwLDcgQEAgZ3J1Yl9lZmllbXVfbW1fZG9fYWxsb2MgKHZvaWQpDQo+ID4gLSANCj4g PiAtwqAgwqAvKiBQcmVhbGxvY2F0ZSBtbWFwICovDQo+ID4gLcKgIMKgZWZpZW11X21tYXAgPSAo Z3J1Yl9lZmlfbWVtb3J5X2Rlc2NyaXB0b3JfdCAqKQ0KPiA+IC0twqAgwqAgZ3J1Yl9tYWxsb2Mg KG1tYXBfcmVzZXJ2ZWRfc2l6ZSAqIHNpemVvZg0KPiA+IChncnViX2VmaV9tZW1vcnlfZGVzY3Jp cHRvcl90KSk7DQo+ID4gLSvCoCDCoCBncnViX2NhbGxvYyAobW1hcF9yZXNlcnZlZF9zaXplLCBz aXplb2YNCj4gPiAoZ3J1Yl9lZmlfbWVtb3J5X2Rlc2NyaXB0b3JfdCkpOw0KPiA+IC3CoCDCoGlm ICghZWZpZW11X21tYXApDQo+ID4gLcKgIMKgIMKgew0KPiA+IC3CoCDCoCDCoCDCoGdydWJfZWZp ZW11X3VubG9hZCAoKTsNCj4gPiAtZGlmZiAtLWdpdCBhL2dydWItY29yZS9mb250L2ZvbnQuYyBi L2dydWItY29yZS9mb250L2ZvbnQuYw0KPiA+IC1pbmRleCA4NWEyOTI1Li44ZTExOGIzIDEwMDY0 NA0KPiA+IC0tLS0gYS9ncnViLWNvcmUvZm9udC9mb250LmMNCj4gPiAtKysrIGIvZ3J1Yi1jb3Jl L2ZvbnQvZm9udC5jDQo+ID4gLUBAIC0yOTMsOCArMjkzLDcgQEAgbG9hZF9mb250X2luZGV4IChn cnViX2ZpbGVfdCBmaWxlLCBncnViX3VpbnQzMl90DQo+ID4gc2VjdF9sZW5ndGgsIHN0cnVjdA0K PiA+IC3CoCDCoGZvbnQtPm51bV9jaGFycyA9IHNlY3RfbGVuZ3RoIC8gRk9OVF9DSEFSX0lOREVY X0VOVFJZX1NJWkU7DQo+ID4gLSANCj4gPiAtwqAgwqAvKiBBbGxvY2F0ZSB0aGUgY2hhcmFjdGVy IGluZGV4IGFycmF5LsKgICovDQo+ID4gLS3CoCBmb250LT5jaGFyX2luZGV4ID0gZ3J1Yl9tYWxs b2MgKGZvbnQtPm51bV9jaGFycw0KPiA+IC0twqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgKiBzaXplb2YgKHN0cnVjdA0KPiA+IGNoYXJfaW5kZXhfZW50cnkp KTsNCj4gPiAtK8KgIGZvbnQtPmNoYXJfaW5kZXggPSBncnViX2NhbGxvYyAoZm9udC0+bnVtX2No YXJzLCBzaXplb2YgKHN0cnVjdA0KPiA+IGNoYXJfaW5kZXhfZW50cnkpKTsNCj4gPiAtwqAgwqBp ZiAoIWZvbnQtPmNoYXJfaW5kZXgpDQo+ID4gLcKgIMKgIMKgcmV0dXJuIDE7DQo+ID4gLcKgIMKg Zm9udC0+Ym1wX2lkeCA9IGdydWJfbWFsbG9jICgweDEwMDAwICogc2l6ZW9mIChncnViX3VpbnQx Nl90KSk7DQo+ID4gLWRpZmYgLS1naXQgYS9ncnViLWNvcmUvZnMvYWZmcy5jIGIvZ3J1Yi1jb3Jl L2ZzL2FmZnMuYw0KPiA+IC1pbmRleCA2YjZhMmJjLi4yMjBiMzcxIDEwMDY0NA0KPiA+IC0tLS0g YS9ncnViLWNvcmUvZnMvYWZmcy5jDQo+ID4gLSsrKyBiL2dydWItY29yZS9mcy9hZmZzLmMNCj4g PiAtQEAgLTMwMSw3ICszMDEsNyBAQCBncnViX2FmZnNfcmVhZF9zeW1saW5rIChncnViX2ZzaGVs cF9ub2RlX3Qgbm9kZSkNCj4gPiAtwqAgwqAgwqAgwqByZXR1cm4gMDsNCj4gPiAtwqAgwqAgwqB9 DQo+ID4gLcKgIMKgbGF0aW4xW3N5bWxpbmtfc2l6ZV0gPSAwOw0KPiA+IC0twqAgdXRmOCA9IGdy dWJfbWFsbG9jIChzeW1saW5rX3NpemUgKiBHUlVCX01BWF9VVEY4X1BFUl9MQVRJTjEgKyAxKTsN Cj4gPiAtK8KgIHV0ZjggPSBncnViX2NhbGxvYyAoR1JVQl9NQVhfVVRGOF9QRVJfTEFUSU4xICsg MSwgc3ltbGlua19zaXplKTsNCj4gPiAtwqAgwqBpZiAoIXV0ZjgpDQo+ID4gLcKgIMKgIMKgew0K PiA+IC3CoCDCoCDCoCDCoGdydWJfZnJlZSAobGF0aW4xKTsNCj4gPiAtQEAgLTQyMiw3ICs0MjIs NyBAQCBncnViX2FmZnNfaXRlcmF0ZV9kaXIgKGdydWJfZnNoZWxwX25vZGVfdCBkaXIsDQo+ID4g LcKgIMKgIMKgIMKgcmV0dXJuIDE7DQo+ID4gLcKgIMKgIMKgfQ0KPiA+IC0gDQo+ID4gLS3CoCBo YXNodGFibGUgPSBncnViX3phbGxvYyAoZGF0YS0+aHRzaXplICogc2l6ZW9mICgqaGFzaHRhYmxl KSk7DQo+ID4gLSvCoCBoYXNodGFibGUgPSBncnViX2NhbGxvYyAoZGF0YS0+aHRzaXplLCBzaXpl b2YgKCpoYXNodGFibGUpKTsNCj4gPiAtwqAgwqBpZiAoIWhhc2h0YWJsZSkNCj4gPiAtwqAgwqAg wqByZXR1cm4gMTsNCj4gPiAtIA0KPiA+IC1AQCAtNjI4LDcgKzYyOCw3IEBAIGdydWJfYWZmc19s YWJlbCAoZ3J1Yl9kZXZpY2VfdCBkZXZpY2UsIGNoYXINCj4gPiAqKmxhYmVsKQ0KPiA+IC3CoCDC oCDCoCDCoGxlbiA9IGZpbGUubmFtZWxlbjsNCj4gPiAtwqAgwqAgwqAgwqBpZiAobGVuID4gc2l6 ZW9mIChmaWxlLm5hbWUpKQ0KPiA+IC3CoCDCoCDCoCDCoGxlbiA9IHNpemVvZiAoZmlsZS5uYW1l KTsNCj4gPiAtLcKgIMKgIMKgICpsYWJlbCA9IGdydWJfbWFsbG9jIChsZW4gKiBHUlVCX01BWF9V VEY4X1BFUl9MQVRJTjEgKyAxKTsNCj4gPiAtK8KgIMKgIMKgICpsYWJlbCA9IGdydWJfY2FsbG9j IChHUlVCX01BWF9VVEY4X1BFUl9MQVRJTjEgKyAxLCBsZW4pOw0KPiA+IC3CoCDCoCDCoCDCoGlm ICgqbGFiZWwpDQo+ID4gLcKgIMKgIMKgIMKgKmdydWJfbGF0aW4xX3RvX3V0ZjggKChncnViX3Vp bnQ4X3QgKikgKmxhYmVsLCBmaWxlLm5hbWUsDQo+ID4gbGVuKSA9ICdcMCc7DQo+ID4gLcKgIMKg IMKgfQ0KPiA+IC1kaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL2ZzL2J0cmZzLmMgYi9ncnViLWNvcmUv ZnMvYnRyZnMuYw0KPiA+IC1pbmRleCA0OGJkM2QwLi4xMTI3MmVmIDEwMDY0NA0KPiA+IC0tLS0g YS9ncnViLWNvcmUvZnMvYnRyZnMuYw0KPiA+IC0rKysgYi9ncnViLWNvcmUvZnMvYnRyZnMuYw0K PiA+IC1AQCAtNDEzLDcgKzQxMyw3IEBAIGxvd2VyX2JvdW5kIChzdHJ1Y3QgZ3J1Yl9idHJmc19k YXRhICpkYXRhLA0KPiA+IC3CoCDCoCDCoHsNCj4gPiAtwqAgwqAgwqAgwqBkZXNjLT5hbGxvY2F0 ZWQgPSAxNjsNCj4gPiAtwqAgwqAgwqAgwqBkZXNjLT5kZXB0aCA9IDA7DQo+ID4gLS3CoCDCoCDC oCBkZXNjLT5kYXRhID0gZ3J1Yl9tYWxsb2MgKHNpemVvZiAoZGVzYy0+ZGF0YVswXSkgKiBkZXNj LQ0KPiA+ID4gYWxsb2NhdGVkKTsNCj4gPiAtK8KgIMKgIMKgIGRlc2MtPmRhdGEgPSBncnViX2Nh bGxvYyAoZGVzYy0+YWxsb2NhdGVkLCBzaXplb2YgKGRlc2MtDQo+ID4gPiBkYXRhWzBdKSk7DQo+ ID4gLcKgIMKgIMKgIMKgaWYgKCFkZXNjLT5kYXRhKQ0KPiA+IC3CoCDCoCDCoCDCoHJldHVybiBn cnViX2Vycm5vOw0KPiA+IC3CoCDCoCDCoH0NCj4gPiAtQEAgLTc1Miw3ICs3NTIsNyBAQCByYWlk NTZfcmVhZF9yZXRyeSAoc3RydWN0IGdydWJfYnRyZnNfZGF0YSAqZGF0YSwNCj4gPiAtwqAgwqBn cnViX2Vycl90IHJldCA9IEdSVUJfRVJSX09VVF9PRl9NRU1PUlk7DQo+ID4gLcKgIMKgZ3J1Yl91 aW50NjRfdCBpLCBmYWlsZWRfZGV2aWNlczsNCj4gPiAtIA0KPiA+IC0twqAgYnVmZmVycyA9IGdy dWJfemFsbG9jIChzaXplb2YoKmJ1ZmZlcnMpICogbnN0cmlwZXMpOw0KPiA+IC0rwqAgYnVmZmVy cyA9IGdydWJfY2FsbG9jIChuc3RyaXBlcywgc2l6ZW9mICgqYnVmZmVycykpOw0KPiA+IC3CoCDC oGlmICghYnVmZmVycykNCj4gPiAtwqAgwqAgwqBnb3RvIGNsZWFudXA7DQo+ID4gLSANCj4gPiAt QEAgLTIxNjAsNyArMjE2MCw3IEBAIGdydWJfYnRyZnNfZW1iZWQgKGdydWJfZGV2aWNlX3QgZGV2 aWNlDQo+ID4gX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpLA0KPiA+IC3CoCDCoCpuc2VjdG9ycyA9 IDY0ICogMiAtIDE7DQo+ID4gLcKgIMKgaWYgKCpuc2VjdG9ycyA+IG1heF9uc2VjdG9ycykNCj4g PiAtwqAgwqAgwqAqbnNlY3RvcnMgPSBtYXhfbnNlY3RvcnM7DQo+ID4gLS3CoCAqc2VjdG9ycyA9 IGdydWJfbWFsbG9jICgqbnNlY3RvcnMgKiBzaXplb2YgKCoqc2VjdG9ycykpOw0KPiA+IC0rwqAg KnNlY3RvcnMgPSBncnViX2NhbGxvYyAoKm5zZWN0b3JzLCBzaXplb2YgKCoqc2VjdG9ycykpOw0K PiA+IC3CoCDCoGlmICghKnNlY3RvcnMpDQo+ID4gLcKgIMKgIMKgcmV0dXJuIGdydWJfZXJybm87 DQo+ID4gLcKgIMKgZm9yIChpID0gMDsgaSA8ICpuc2VjdG9yczsgaSsrKQ0KPiA+IC1kaWZmIC0t Z2l0IGEvZ3J1Yi1jb3JlL2ZzL2hmcy5jIGIvZ3J1Yi1jb3JlL2ZzL2hmcy5jDQo+ID4gLWluZGV4 IGFjMGE0MDkuLjNmZTg0MmIgMTAwNjQ0DQo+ID4gLS0tLSBhL2dydWItY29yZS9mcy9oZnMuYw0K PiA+IC0rKysgYi9ncnViLWNvcmUvZnMvaGZzLmMNCj4gPiAtQEAgLTEzNjAsNyArMTM2MCw3IEBA IGdydWJfaGZzX2xhYmVsIChncnViX2RldmljZV90IGRldmljZSwgY2hhcg0KPiA+ICoqbGFiZWwp DQo+ID4gLcKgIMKgIMKgIMKgZ3J1Yl9zaXplX3QgbGVuID0gZGF0YS0+c2Jsb2NrLnZvbG5hbWVb MF07DQo+ID4gLcKgIMKgIMKgIMKgaWYgKGxlbiA+IHNpemVvZiAoZGF0YS0+c2Jsb2NrLnZvbG5h bWUpIC0gMSkNCj4gPiAtwqAgwqAgwqAgwqBsZW4gPSBzaXplb2YgKGRhdGEtPnNibG9jay52b2xu YW1lKSAtIDE7DQo+ID4gLS3CoCDCoCDCoCAqbGFiZWwgPSBncnViX21hbGxvYyAobGVuICogTUFY X1VURjhfUEVSX01BQ19ST01BTiArIDEpOw0KPiA+IC0rwqAgwqAgwqAgKmxhYmVsID0gZ3J1Yl9j YWxsb2MgKE1BWF9VVEY4X1BFUl9NQUNfUk9NQU4gKyAxLCBsZW4pOw0KPiA+IC3CoCDCoCDCoCDC oGlmICgqbGFiZWwpDQo+ID4gLcKgIMKgIMKgIMKgbWFjcm9tYW5fdG9fdXRmOCAoKmxhYmVsLCBk YXRhLT5zYmxvY2sudm9sbmFtZSArIDEsDQo+ID4gLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgbGVuICsgMSwgMCk7DQo+ID4gLWRpZmYgLS1naXQgYS9ncnViLWNvcmUvZnMv aGZzcGx1cy5jIGIvZ3J1Yi1jb3JlL2ZzL2hmc3BsdXMuYw0KPiA+IC1pbmRleCA1NDc4NmJiLi5k YWU0M2JlIDEwMDY0NA0KPiA+IC0tLS0gYS9ncnViLWNvcmUvZnMvaGZzcGx1cy5jDQo+ID4gLSsr KyBiL2dydWItY29yZS9mcy9oZnNwbHVzLmMNCj4gPiAtQEAgLTcyMCw3ICs3MjAsNyBAQCBsaXN0 X25vZGVzICh2b2lkICpyZWNvcmQsIHZvaWQgKmhvb2tfYXJnKQ0KPiA+IC3CoCDCoGlmICghIGZp bGVuYW1lKQ0KPiA+IC3CoCDCoCDCoHJldHVybiAwOw0KPiA+IC0gDQo+ID4gLS3CoCBrZXluYW1l ID0gZ3J1Yl9tYWxsb2MgKGdydWJfYmVfdG9fY3B1MTYgKGNhdGtleS0+bmFtZWxlbikgKg0KPiA+ IHNpemVvZiAoKmtleW5hbWUpKTsNCj4gPiAtK8KgIGtleW5hbWUgPSBncnViX2NhbGxvYyAoZ3J1 Yl9iZV90b19jcHUxNiAoY2F0a2V5LT5uYW1lbGVuKSwgc2l6ZW9mDQo+ID4gKCprZXluYW1lKSk7 DQo+ID4gLcKgIMKgaWYgKCFrZXluYW1lKQ0KPiA+IC3CoCDCoCDCoHsNCj4gPiAtwqAgwqAgwqAg wqBncnViX2ZyZWUgKGZpbGVuYW1lKTsNCj4gPiAtQEAgLTEwMDcsNyArMTAwNyw3IEBAIGdydWJf aGZzcGx1c19sYWJlbCAoZ3J1Yl9kZXZpY2VfdCBkZXZpY2UsIGNoYXINCj4gPiAqKmxhYmVsKQ0K PiA+IC3CoCDCoCDCoGdydWJfaGZzcGx1c19idHJlZV9yZWNwdHIgKCZkYXRhLT5jYXRhbG9nX3Ry ZWUsIG5vZGUsIHB0cik7DQo+ID4gLSANCj4gPiAtwqAgwqBsYWJlbF9sZW4gPSBncnViX2JlX3Rv X2NwdTE2IChjYXRrZXktPm5hbWVsZW4pOw0KPiA+IC0twqAgbGFiZWxfbmFtZSA9IGdydWJfbWFs bG9jIChsYWJlbF9sZW4gKiBzaXplb2YgKCpsYWJlbF9uYW1lKSk7DQo+ID4gLSvCoCBsYWJlbF9u YW1lID0gZ3J1Yl9jYWxsb2MgKGxhYmVsX2xlbiwgc2l6ZW9mICgqbGFiZWxfbmFtZSkpOw0KPiA+ IC3CoCDCoGlmICghbGFiZWxfbmFtZSkNCj4gPiAtwqAgwqAgwqB7DQo+ID4gLcKgIMKgIMKgIMKg Z3J1Yl9mcmVlIChub2RlKTsNCj4gPiAtQEAgLTEwMjksNyArMTAyOSw3IEBAIGdydWJfaGZzcGx1 c19sYWJlbCAoZ3J1Yl9kZXZpY2VfdCBkZXZpY2UsIGNoYXINCj4gPiAqKmxhYmVsKQ0KPiA+IC3C oCDCoCDCoCDCoH0NCj4gPiAtwqAgwqAgwqB9DQo+ID4gLSANCj4gPiAtLcKgICpsYWJlbCA9IGdy dWJfbWFsbG9jIChsYWJlbF9sZW4gKiBHUlVCX01BWF9VVEY4X1BFUl9VVEYxNiArIDEpOw0KPiA+ IC0rwqAgKmxhYmVsID0gZ3J1Yl9jYWxsb2MgKGxhYmVsX2xlbiwgR1JVQl9NQVhfVVRGOF9QRVJf VVRGMTYgKyAxKTsNCj4gPiAtwqAgwqBpZiAoISAqbGFiZWwpDQo+ID4gLcKgIMKgIMKgew0KPiA+ IC3CoCDCoCDCoCDCoGdydWJfZnJlZSAobGFiZWxfbmFtZSk7DQo+ID4gLWRpZmYgLS1naXQgYS9n cnViLWNvcmUvZnMvaXNvOTY2MC5jIGIvZ3J1Yi1jb3JlL2ZzL2lzbzk2NjAuYw0KPiA+IC1pbmRl eCA0OWMwYzYzLi40ZjFiNTJhIDEwMDY0NA0KPiA+IC0tLS0gYS9ncnViLWNvcmUvZnMvaXNvOTY2 MC5jDQo+ID4gLSsrKyBiL2dydWItY29yZS9mcy9pc285NjYwLmMNCj4gPiAtQEAgLTMzMSw3ICsz MzEsNyBAQCBncnViX2lzbzk2NjBfY29udmVydF9zdHJpbmcgKGdydWJfdWludDhfdCAqdXMsDQo+ ID4gaW50IGxlbikNCj4gPiAtwqAgwqBpbnQgaTsNCj4gPiAtwqAgwqBncnViX3VpbnQxNl90IHRb TUFYX05BTUVMRU4gLyAyICsgMV07DQo+ID4gLSANCj4gPiAtLcKgIHAgPSBncnViX21hbGxvYyAo bGVuICogR1JVQl9NQVhfVVRGOF9QRVJfVVRGMTYgKyAxKTsNCj4gPiAtK8KgIHAgPSBncnViX2Nh bGxvYyAobGVuLCBHUlVCX01BWF9VVEY4X1BFUl9VVEYxNiArIDEpOw0KPiA+IC3CoCDCoGlmICgh IHApDQo+ID4gLcKgIMKgIMKgcmV0dXJuIE5VTEw7DQo+ID4gLSANCj4gPiAtZGlmZiAtLWdpdCBh L2dydWItY29yZS9mcy9udGZzLmMgYi9ncnViLWNvcmUvZnMvbnRmcy5jDQo+ID4gLWluZGV4IGZj NGUxZjYuLjJmMzRmNzYgMTAwNjQ0DQo+ID4gLS0tLSBhL2dydWItY29yZS9mcy9udGZzLmMNCj4g PiAtKysrIGIvZ3J1Yi1jb3JlL2ZzL250ZnMuYw0KPiA+IC1AQCAtNTU2LDggKzU1Niw4IEBAIGdl dF91dGY4IChncnViX3VpbnQ4X3QgKmluLCBncnViX3NpemVfdCBsZW4pDQo+ID4gLcKgIMKgZ3J1 Yl91aW50MTZfdCAqdG1wOw0KPiA+IC3CoCDCoGdydWJfc2l6ZV90IGk7DQo+ID4gLSANCj4gPiAt LcKgIGJ1ZiA9IGdydWJfbWFsbG9jIChsZW4gKiBHUlVCX01BWF9VVEY4X1BFUl9VVEYxNiArIDEp Ow0KPiA+IC0twqAgdG1wID0gZ3J1Yl9tYWxsb2MgKGxlbiAqIHNpemVvZiAodG1wWzBdKSk7DQo+ ID4gLSvCoCBidWYgPSBncnViX2NhbGxvYyAobGVuLCBHUlVCX01BWF9VVEY4X1BFUl9VVEYxNiAr IDEpOw0KPiA+IC0rwqAgdG1wID0gZ3J1Yl9jYWxsb2MgKGxlbiwgc2l6ZW9mICh0bXBbMF0pKTsN Cj4gPiAtwqAgwqBpZiAoIWJ1ZiB8fCAhdG1wKQ0KPiA+IC3CoCDCoCDCoHsNCj4gPiAtwqAgwqAg wqAgwqBncnViX2ZyZWUgKGJ1Zik7DQo+ID4gLWRpZmYgLS1naXQgYS9ncnViLWNvcmUvZnMvc2Zz LmMgYi9ncnViLWNvcmUvZnMvc2ZzLmMNCj4gPiAtaW5kZXggNTBjMWZlNy4uOTBmN2ZiMyAxMDA2 NDQNCj4gPiAtLS0tIGEvZ3J1Yi1jb3JlL2ZzL3Nmcy5jDQo+ID4gLSsrKyBiL2dydWItY29yZS9m cy9zZnMuYw0KPiA+IC1AQCAtMjY2LDcgKzI2Niw3IEBAIGdydWJfc2ZzX3JlYWRfYmxvY2sgKGdy dWJfZnNoZWxwX25vZGVfdCBub2RlLA0KPiA+IGdydWJfZGlza19hZGRyX3QgZmlsZWJsb2NrKQ0K PiA+IC3CoCDCoCDCoCDCoG5vZGUtPm5leHRfZXh0ZW50ID0gbm9kZS0+YmxvY2s7DQo+ID4gLcKg IMKgIMKgIMKgbm9kZS0+Y2FjaGVfc2l6ZSA9IDA7DQo+ID4gLSANCj4gPiAtLcKgIMKgIMKgIG5v ZGUtPmNhY2hlID0gZ3J1Yl9tYWxsb2MgKHNpemVvZiAobm9kZS0+Y2FjaGVbMF0pICoNCj4gPiBj YWNoZV9zaXplKTsNCj4gPiAtK8KgIMKgIMKgIG5vZGUtPmNhY2hlID0gZ3J1Yl9jYWxsb2MgKGNh Y2hlX3NpemUsIHNpemVvZiAobm9kZS0NCj4gPiA+IGNhY2hlWzBdKSk7DQo+ID4gLcKgIMKgIMKg IMKgaWYgKCFub2RlLT5jYWNoZSkNCj4gPiAtwqAgwqAgwqAgwqB7DQo+ID4gLcKgIMKgIMKgIMKg IMKgZ3J1Yl9lcnJubyA9IDA7DQo+ID4gLWRpZmYgLS1naXQgYS9ncnViLWNvcmUvZnMvdGFyLmMg Yi9ncnViLWNvcmUvZnMvdGFyLmMNCj4gPiAtaW5kZXggN2Q2M2UwYy4uYzU1MWVkNiAxMDA2NDQN Cj4gPiAtLS0tIGEvZ3J1Yi1jb3JlL2ZzL3Rhci5jDQo+ID4gLSsrKyBiL2dydWItY29yZS9mcy90 YXIuYw0KPiA+IC1AQCAtMTIwLDcgKzEyMCw3IEBAIGdydWJfY3Bpb19maW5kX2ZpbGUgKHN0cnVj dCBncnViX2FyY2hlbHBfZGF0YQ0KPiA+ICpkYXRhLCBjaGFyICoqbmFtZSwNCj4gPiAtwqAgwqAg wqAgwqAgwqBpZiAoZGF0YS0+bGlua25hbWVfYWxsb2MgPCBsaW5rc2l6ZSArIDEpDQo+ID4gLcKg IMKgIMKgIMKgIMKgIMKgew0KPiA+IC3CoCDCoCDCoCDCoCDCoCDCoCDCoGNoYXIgKm47DQo+ID4g LS3CoCDCoCDCoCDCoCDCoCDCoCBuID0gZ3J1Yl9tYWxsb2MgKDIgKiAobGlua3NpemUgKyAxKSk7 DQo+ID4gLSvCoCDCoCDCoCDCoCDCoCDCoCBuID0gZ3J1Yl9jYWxsb2MgKDIsIGxpbmtzaXplICsg MSk7DQo+ID4gLcKgIMKgIMKgIMKgIMKgIMKgIMKgaWYgKCFuKQ0KPiA+IC3CoCDCoCDCoCDCoCDC oCDCoCDCoCDCoHJldHVybiBncnViX2Vycm5vOw0KPiA+IC3CoCDCoCDCoCDCoCDCoCDCoCDCoGdy dWJfZnJlZSAoZGF0YS0+bGlua25hbWUpOw0KPiA+IC1kaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL2Zz L3VkZi5jIGIvZ3J1Yi1jb3JlL2ZzL3VkZi5jDQo+ID4gLWluZGV4IGRjOGI2ZTIuLmE4Mzc2MTYg MTAwNjQ0DQo+ID4gLS0tLSBhL2dydWItY29yZS9mcy91ZGYuYw0KPiA+IC0rKysgYi9ncnViLWNv cmUvZnMvdWRmLmMNCj4gPiAtQEAgLTg3Myw3ICs4NzMsNyBAQCByZWFkX3N0cmluZyAoY29uc3Qg Z3J1Yl91aW50OF90ICpyYXcsDQo+ID4gZ3J1Yl9zaXplX3Qgc3osIGNoYXIgKm91dGJ1ZikNCj4g PiAtwqAgwqAgwqB7DQo+ID4gLcKgIMKgIMKgIMKgdW5zaWduZWQgaTsNCj4gPiAtwqAgwqAgwqAg wqB1dGYxNmxlbiA9IHN6IC0gMTsNCj4gPiAtLcKgIMKgIMKgIHV0ZjE2ID0gZ3J1Yl9tYWxsb2Mg KHV0ZjE2bGVuICogc2l6ZW9mICh1dGYxNlswXSkpOw0KPiA+IC0rwqAgwqAgwqAgdXRmMTYgPSBn cnViX2NhbGxvYyAodXRmMTZsZW4sIHNpemVvZiAodXRmMTZbMF0pKTsNCj4gPiAtwqAgwqAgwqAg wqBpZiAoIXV0ZjE2KQ0KPiA+IC3CoCDCoCDCoCDCoHJldHVybiBOVUxMOw0KPiA+IC3CoCDCoCDC oCDCoGZvciAoaSA9IDA7IGkgPCB1dGYxNmxlbjsgaSsrKQ0KPiA+IC1AQCAtODgzLDcgKzg4Myw3 IEBAIHJlYWRfc3RyaW5nIChjb25zdCBncnViX3VpbnQ4X3QgKnJhdywNCj4gPiBncnViX3NpemVf dCBzeiwgY2hhciAqb3V0YnVmKQ0KPiA+IC3CoCDCoCDCoHsNCj4gPiAtwqAgwqAgwqAgwqB1bnNp Z25lZCBpOw0KPiA+IC3CoCDCoCDCoCDCoHV0ZjE2bGVuID0gKHN6IC0gMSkgLyAyOw0KPiA+IC0t wqAgwqAgwqAgdXRmMTYgPSBncnViX21hbGxvYyAodXRmMTZsZW4gKiBzaXplb2YgKHV0ZjE2WzBd KSk7DQo+ID4gLSvCoCDCoCDCoCB1dGYxNiA9IGdydWJfY2FsbG9jICh1dGYxNmxlbiwgc2l6ZW9m ICh1dGYxNlswXSkpOw0KPiA+IC3CoCDCoCDCoCDCoGlmICghdXRmMTYpDQo+ID4gLcKgIMKgIMKg IMKgcmV0dXJuIE5VTEw7DQo+ID4gLcKgIMKgIMKgIMKgZm9yIChpID0gMDsgaSA8IHV0ZjE2bGVu OyBpKyspDQo+ID4gLWRpZmYgLS1naXQgYS9ncnViLWNvcmUvZnMvemZzL3pmcy5jIGIvZ3J1Yi1j b3JlL2ZzL3pmcy96ZnMuYw0KPiA+IC1pbmRleCAyZjcyZTQyLi4zODFkZGU1IDEwMDY0NA0KPiA+ IC0tLS0gYS9ncnViLWNvcmUvZnMvemZzL3pmcy5jDQo+ID4gLSsrKyBiL2dydWItY29yZS9mcy96 ZnMvemZzLmMNCj4gPiAtQEAgLTMzMjUsNyArMzMyNSw3IEBAIGRub2RlX2dldF9mdWxscGF0aCAo Y29uc3QgY2hhciAqZnVsbHBhdGgsDQo+ID4gc3RydWN0IHN1YnZvbHVtZSAqc3Vidm9sLA0KPiA+ IC3CoCDCoCDCoCDCoH0NCj4gPiAtwqAgwqAgwqAgwqBzdWJ2b2wtPm5rZXlzID0gMDsNCj4gPiAt wqAgwqAgwqAgwqB6YXBfaXRlcmF0ZSAoJmtleWNoYWluX2RuLCA4LCBjb3VudF96YXBfa2V5cywg JmN0eCwgZGF0YSk7DQo+ID4gLS3CoCDCoCDCoCBzdWJ2b2wtPmtleXJpbmcgPSBncnViX3phbGxv YyAoc3Vidm9sLT5ua2V5cyAqIHNpemVvZg0KPiA+IChzdWJ2b2wtPmtleXJpbmdbMF0pKTsNCj4g PiAtK8KgIMKgIMKgIHN1YnZvbC0+a2V5cmluZyA9IGdydWJfY2FsbG9jIChzdWJ2b2wtPm5rZXlz LCBzaXplb2YgKHN1YnZvbC0NCj4gPiA+IGtleXJpbmdbMF0pKTsNCj4gPiAtwqAgwqAgwqAgwqBp ZiAoIXN1YnZvbC0+a2V5cmluZykNCj4gPiAtwqAgwqAgwqAgwqB7DQo+ID4gLcKgIMKgIMKgIMKg IMKgZ3J1Yl9mcmVlIChmc25hbWUpOw0KPiA+IC1AQCAtNDMzNiw3ICs0MzM2LDcgQEAgZ3J1Yl96 ZnNfZW1iZWQgKGdydWJfZGV2aWNlX3QgZGV2aWNlDQo+ID4gX19hdHRyaWJ1dGVfXyAoKHVudXNl ZCkpLA0KPiA+IC3CoCDCoCpuc2VjdG9ycyA9IChWREVWX0JPT1RfU0laRSA+PiBHUlVCX0RJU0tf U0VDVE9SX0JJVFMpOw0KPiA+IC3CoCDCoGlmICgqbnNlY3RvcnMgPiBtYXhfbnNlY3RvcnMpDQo+ ID4gLcKgIMKgIMKgKm5zZWN0b3JzID0gbWF4X25zZWN0b3JzOw0KPiA+IC0twqAgKnNlY3RvcnMg PSBncnViX21hbGxvYyAoKm5zZWN0b3JzICogc2l6ZW9mICgqKnNlY3RvcnMpKTsNCj4gPiAtK8Kg ICpzZWN0b3JzID0gZ3J1Yl9jYWxsb2MgKCpuc2VjdG9ycywgc2l6ZW9mICgqKnNlY3RvcnMpKTsN Cj4gPiAtwqAgwqBpZiAoISpzZWN0b3JzKQ0KPiA+IC3CoCDCoCDCoHJldHVybiBncnViX2Vycm5v Ow0KPiA+IC3CoCDCoGZvciAoaSA9IDA7IGkgPCAqbnNlY3RvcnM7IGkrKykNCj4gPiAtZGlmZiAt LWdpdCBhL2dydWItY29yZS9nZnhtZW51L2d1aV9zdHJpbmdfdXRpbC5jIGIvZ3J1Yi0NCj4gPiBj b3JlL2dmeG1lbnUvZ3VpX3N0cmluZ191dGlsLmMNCj4gPiAtaW5kZXggYTlhNDE1ZS4uYmExZTFl YSAxMDA2NDQNCj4gPiAtLS0tIGEvZ3J1Yi1jb3JlL2dmeG1lbnUvZ3VpX3N0cmluZ191dGlsLmMN Cj4gPiAtKysrIGIvZ3J1Yi1jb3JlL2dmeG1lbnUvZ3VpX3N0cmluZ191dGlsLmMNCj4gPiAtQEAg LTU1LDcgKzU1LDcgQEAgY2Fub25pY2FsaXplX3BhdGggKGNvbnN0IGNoYXIgKnBhdGgpDQo+ID4g LcKgIMKgIMKgaWYgKCpwID09ICcvJykNCj4gPiAtwqAgwqAgwqAgwqBjb21wb25lbnRzKys7DQo+ ID4gLSANCj4gPiAtLcKgIGNoYXIgKipwYXRoX2FycmF5ID0gZ3J1Yl9tYWxsb2MgKGNvbXBvbmVu dHMgKiBzaXplb2YNCj4gPiAoKnBhdGhfYXJyYXkpKTsNCj4gPiAtK8KgIGNoYXIgKipwYXRoX2Fy cmF5ID0gZ3J1Yl9jYWxsb2MgKGNvbXBvbmVudHMsIHNpemVvZg0KPiA+ICgqcGF0aF9hcnJheSkp Ow0KPiA+IC3CoCDCoGlmICghIHBhdGhfYXJyYXkpDQo+ID4gLcKgIMKgIMKgcmV0dXJuIDA7DQo+ ID4gLSANCj4gPiAtZGlmZiAtLWdpdCBhL2dydWItY29yZS9nZnhtZW51L3dpZGdldC1ib3guYyBi L2dydWItDQo+ID4gY29yZS9nZnhtZW51L3dpZGdldC1ib3guYw0KPiA+IC1pbmRleCBiNjA2MDI4 Li40NzA1OTdkIDEwMDY0NA0KPiA+IC0tLS0gYS9ncnViLWNvcmUvZ2Z4bWVudS93aWRnZXQtYm94 LmMNCj4gPiAtKysrIGIvZ3J1Yi1jb3JlL2dmeG1lbnUvd2lkZ2V0LWJveC5jDQo+ID4gLUBAIC0z MDMsMTAgKzMwMywxMCBAQCBncnViX2dmeG1lbnVfY3JlYXRlX2JveCAoY29uc3QgY2hhcg0KPiA+ ICpwaXhtYXBzX3ByZWZpeCwNCj4gPiAtwqAgwqBib3gtPmNvbnRlbnRfaGVpZ2h0ID0gMDsNCj4g PiAtwqAgwqBib3gtPnJhd19waXhtYXBzID0NCj4gPiAtwqAgwqAgwqAoc3RydWN0IGdydWJfdmlk ZW9fYml0bWFwICoqKQ0KPiA+IC0twqAgwqAgZ3J1Yl9tYWxsb2MgKEJPWF9OVU1fUElYTUFQUyAq IHNpemVvZiAoc3RydWN0IGdydWJfdmlkZW9fYml0bWFwDQo+ID4gKikpOw0KPiA+IC0rwqAgwqAg Z3J1Yl9jYWxsb2MgKEJPWF9OVU1fUElYTUFQUywgc2l6ZW9mIChzdHJ1Y3QgZ3J1Yl92aWRlb19i aXRtYXANCj4gPiAqKSk7DQo+ID4gLcKgIMKgYm94LT5zY2FsZWRfcGl4bWFwcyA9DQo+ID4gLcKg IMKgIMKgKHN0cnVjdCBncnViX3ZpZGVvX2JpdG1hcCAqKikNCj4gPiAtLcKgIMKgIGdydWJfbWFs bG9jIChCT1hfTlVNX1BJWE1BUFMgKiBzaXplb2YgKHN0cnVjdCBncnViX3ZpZGVvX2JpdG1hcA0K PiA+ICopKTsNCj4gPiAtK8KgIMKgIGdydWJfY2FsbG9jIChCT1hfTlVNX1BJWE1BUFMsIHNpemVv ZiAoc3RydWN0IGdydWJfdmlkZW9fYml0bWFwDQo+ID4gKikpOw0KPiA+IC0gDQo+ID4gLcKgIMKg LyogSW5pdGlhbGl6ZSBhbGwgcGl4bWFwIHBvaW50ZXJzIHRvIE5VTEwgc28gdGhhdCBwcm9wZXIN Cj4gPiBkZXN0cnVjdGlvbiBjYW4NCj4gPiAtwqAgwqAgwqAgYmUgcGVyZm9ybWVkIGlmIGFuIGVy cm9yIGlzIGVuY291bnRlcmVkIHBhcnR3YXkgdGhyb3VnaA0KPiA+IGNvbnN0cnVjdGlvbi7CoCAq Lw0KPiA+IC1kaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL2lvL2d6aW8uYyBiL2dydWItY29yZS9pby9n emlvLmMNCj4gPiAtaW5kZXggNjIwOGE5Ny4uNDNkOThhNyAxMDA2NDQNCj4gPiAtLS0tIGEvZ3J1 Yi1jb3JlL2lvL2d6aW8uYw0KPiA+IC0rKysgYi9ncnViLWNvcmUvaW8vZ3ppby5jDQo+ID4gLUBA IC01NTQsNyArNTU0LDcgQEAgaHVmdF9idWlsZCAodW5zaWduZWQgKmIswqAgwqAvKiBjb2RlIGxl bmd0aHMgaW4NCj4gPiBiaXRzIChhbGwgYXNzdW1lZCA8PSBCTUFYKSAqLw0KPiA+IC3CoCDCoCDC oCDCoCDCoCDCoCDCoHogPSAxIDw8IGo7wqAgwqAgwqAgwqAvKiB0YWJsZSBlbnRyaWVzIGZvciBq LWJpdCB0YWJsZSAqLw0KPiA+IC0gDQo+ID4gLcKgIMKgIMKgIMKgIMKgIMKgIMKgLyogYWxsb2Nh dGUgYW5kIGxpbmsgaW4gbmV3IHRhYmxlICovDQo+ID4gLS3CoCDCoCDCoCDCoCDCoCDCoCBxID0g KHN0cnVjdCBodWZ0ICopIGdydWJfemFsbG9jICgoeiArIDEpICogc2l6ZW9mDQo+ID4gKHN0cnVj dCBodWZ0KSk7DQo+ID4gLSvCoCDCoCDCoCDCoCDCoCDCoCBxID0gKHN0cnVjdCBodWZ0ICopIGdy dWJfY2FsbG9jICh6ICsgMSwgc2l6ZW9mIChzdHJ1Y3QNCj4gPiBodWZ0KSk7DQo+ID4gLcKgIMKg IMKgIMKgIMKgIMKgIMKgaWYgKCEgcSkNCj4gPiAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB7DQo+ ID4gLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgaWYgKGgpDQo+ID4gLWRpZmYgLS1naXQgYS9n cnViLWNvcmUva2Vybi9lZmkvZWZpLmMgYi9ncnViLWNvcmUva2Vybi9lZmkvZWZpLmMNCj4gPiAt aW5kZXggNmUxY2ViOS4uZGMzMWNhYSAxMDA2NDQNCj4gPiAtLS0tIGEvZ3J1Yi1jb3JlL2tlcm4v ZWZpL2VmaS5jDQo+ID4gLSsrKyBiL2dydWItY29yZS9rZXJuL2VmaS9lZmkuYw0KPiA+IC1AQCAt MjAyLDcgKzIwMiw3IEBAIGdydWJfZWZpX3NldF92YXJpYWJsZShjb25zdCBjaGFyICp2YXIsIGNv bnN0DQo+ID4gZ3J1Yl9lZmlfZ3VpZF90ICpndWlkLA0KPiA+IC0gDQo+ID4gLcKgIMKgbGVuID0g Z3J1Yl9zdHJsZW4gKHZhcik7DQo+ID4gLcKgIMKgbGVuMTYgPSBsZW4gKiBHUlVCX01BWF9VVEYx Nl9QRVJfVVRGODsNCj4gPiAtLcKgIHZhcjE2ID0gZ3J1Yl9tYWxsb2MgKChsZW4xNiArIDEpICog c2l6ZW9mICh2YXIxNlswXSkpOw0KPiA+IC0rwqAgdmFyMTYgPSBncnViX2NhbGxvYyAobGVuMTYg KyAxLCBzaXplb2YgKHZhcjE2WzBdKSk7DQo+ID4gLcKgIMKgaWYgKCF2YXIxNikNCj4gPiAtwqAg wqAgwqByZXR1cm4gZ3J1Yl9lcnJubzsNCj4gPiAtwqAgwqBsZW4xNiA9IGdydWJfdXRmOF90b191 dGYxNiAodmFyMTYsIGxlbjE2LCAoZ3J1Yl91aW50OF90ICopIHZhciwNCj4gPiBsZW4sIE5VTEwp Ow0KPiA+IC1AQCAtMjM3LDcgKzIzNyw3IEBAIGdydWJfZWZpX2dldF92YXJpYWJsZSAoY29uc3Qg Y2hhciAqdmFyLCBjb25zdA0KPiA+IGdydWJfZWZpX2d1aWRfdCAqZ3VpZCwNCj4gPiAtIA0KPiA+ IC3CoCDCoGxlbiA9IGdydWJfc3RybGVuICh2YXIpOw0KPiA+IC3CoCDCoGxlbjE2ID0gbGVuICog R1JVQl9NQVhfVVRGMTZfUEVSX1VURjg7DQo+ID4gLS3CoCB2YXIxNiA9IGdydWJfbWFsbG9jICgo bGVuMTYgKyAxKSAqIHNpemVvZiAodmFyMTZbMF0pKTsNCj4gPiAtK8KgIHZhcjE2ID0gZ3J1Yl9j YWxsb2MgKGxlbjE2ICsgMSwgc2l6ZW9mICh2YXIxNlswXSkpOw0KPiA+IC3CoCDCoGlmICghdmFy MTYpDQo+ID4gLcKgIMKgIMKgcmV0dXJuIE5VTEw7DQo+ID4gLcKgIMKgbGVuMTYgPSBncnViX3V0 ZjhfdG9fdXRmMTYgKHZhcjE2LCBsZW4xNiwgKGdydWJfdWludDhfdCAqKSB2YXIsDQo+ID4gbGVu LCBOVUxMKTsNCj4gPiAtQEAgLTM4Myw3ICszODMsNyBAQCBncnViX2VmaV9nZXRfZmlsZW5hbWUg KGdydWJfZWZpX2RldmljZV9wYXRoX3QNCj4gPiAqZHAwKQ0KPiA+IC3CoCDCoCDCoCDCoCDCoHdo aWxlIChsZW4gPiAwICYmIGZwLT5wYXRoX25hbWVbbGVuIC0gMV0gPT0gMCkNCj4gPiAtwqAgwqAg wqAgwqAgwqAgwqBsZW4tLTsNCj4gPiAtIA0KPiA+IC0twqAgwqAgwqAgwqAgZHVwX25hbWUgPSBn cnViX21hbGxvYyAobGVuICogc2l6ZW9mICgqZHVwX25hbWUpKTsNCj4gPiAtK8KgIMKgIMKgIMKg IGR1cF9uYW1lID0gZ3J1Yl9jYWxsb2MgKGxlbiwgc2l6ZW9mICgqZHVwX25hbWUpKTsNCj4gPiAt wqAgwqAgwqAgwqAgwqBpZiAoIWR1cF9uYW1lKQ0KPiA+IC3CoCDCoCDCoCDCoCDCoCDCoHsNCj4g PiAtwqAgwqAgwqAgwqAgwqAgwqAgwqBncnViX2ZyZWUgKG5hbWUpOw0KPiA+IC1kaWZmIC0tZ2l0 IGEvZ3J1Yi1jb3JlL2tlcm4vZW11L2hvc3RkaXNrLmMgYi9ncnViLQ0KPiA+IGNvcmUva2Vybi9l bXUvaG9zdGRpc2suYw0KPiA+IC1pbmRleCBlOWVjNjgwLi5kOTc1MjY1IDEwMDY0NA0KPiA+IC0t LS0gYS9ncnViLWNvcmUva2Vybi9lbXUvaG9zdGRpc2suYw0KPiA+IC0rKysgYi9ncnViLWNvcmUv a2Vybi9lbXUvaG9zdGRpc2suYw0KPiA+IC1AQCAtNjE1LDcgKzYxNSw3IEBAIHN0YXRpYyBjaGFy ICoNCj4gPiAtIGdydWJfdXRpbF9wYXRoX2NvbmNhdF9yZWFsIChzaXplX3QgbiwgaW50IGV4dCwg dmFfbGlzdCBhcCkNCj4gPiAtIHsNCj4gPiAtwqAgwqBzaXplX3QgdG90bGVuID0gMDsNCj4gPiAt LcKgIGNoYXIgKipsID0geG1hbGxvYyAoKG4gKyBleHQpICogc2l6ZW9mIChsWzBdKSk7DQo+ID4g LSvCoCBjaGFyICoqbCA9IHhjYWxsb2MgKG4gKyBleHQsIHNpemVvZiAobFswXSkpOw0KPiA+IC3C oCDCoGNoYXIgKnIsICpwLCAqcGk7DQo+ID4gLcKgIMKgc2l6ZV90IGk7DQo+ID4gLcKgIMKgaW50 IGZpcnN0ID0gMTsNCj4gPiAtZGlmZiAtLWdpdCBhL2dydWItY29yZS9rZXJuL2ZzLmMgYi9ncnVi LWNvcmUva2Vybi9mcy5jDQo+ID4gLWluZGV4IDJiODVmNDkuLmY5MGJlNjUgMTAwNjQ0DQo+ID4g LS0tLSBhL2dydWItY29yZS9rZXJuL2ZzLmMNCj4gPiAtKysrIGIvZ3J1Yi1jb3JlL2tlcm4vZnMu Yw0KPiA+IC1AQCAtMTUxLDcgKzE1MSw3IEBAIGdydWJfZnNfYmxvY2tsaXN0X29wZW4gKGdydWJf ZmlsZV90IGZpbGUsIGNvbnN0DQo+ID4gY2hhciAqbmFtZSkNCj4gPiAtwqAgwqB3aGlsZSAocCk7 DQo+ID4gLSANCj4gPiAtwqAgwqAvKiBBbGxvY2F0ZSBhIGJsb2NrIGxpc3QuwqAgKi8NCj4gPiAt LcKgIGJsb2NrcyA9IGdydWJfemFsbG9jIChzaXplb2YgKHN0cnVjdCBncnViX2ZzX2Jsb2NrKSAq IChudW0gKyAxKSk7DQo+ID4gLSvCoCBibG9ja3MgPSBncnViX2NhbGxvYyAobnVtICsgMSwgc2l6 ZW9mIChzdHJ1Y3QgZ3J1Yl9mc19ibG9jaykpOw0KPiA+IC3CoCDCoGlmICghIGJsb2NrcykNCj4g PiAtwqAgwqAgwqByZXR1cm4gMDsNCj4gPiAtIA0KPiA+IC1kaWZmIC0tZ2l0IGEvZ3J1Yi1jb3Jl L2tlcm4vbWlzYy5jIGIvZ3J1Yi1jb3JlL2tlcm4vbWlzYy5jDQo+ID4gLWluZGV4IDNiNjMzZDUu LmE3YWJkMzYgMTAwNjQ0DQo+ID4gLS0tLSBhL2dydWItY29yZS9rZXJuL21pc2MuYw0KPiA+IC0r KysgYi9ncnViLWNvcmUva2Vybi9taXNjLmMNCj4gPiAtQEAgLTY5MCw3ICs2OTAsNyBAQCBwYXJz ZV9wcmludGZfYXJncyAoY29uc3QgY2hhciAqZm10MCwgc3RydWN0DQo+ID4gcHJpbnRmX2FyZ3Mg KmFyZ3MsDQo+ID4gLcKgIMKgIMKgYXJncy0+cHRyID0gYXJncy0+cHJlYWxsb2M7DQo+ID4gLcKg IMKgZWxzZQ0KPiA+IC3CoCDCoCDCoHsNCj4gPiAtLcKgIMKgIMKgIGFyZ3MtPnB0ciA9IGdydWJf bWFsbG9jIChhcmdzLT5jb3VudCAqIHNpemVvZiAoYXJncy0NCj4gPiA+IHB0clswXSkpOw0KPiA+ IC0rwqAgwqAgwqAgYXJncy0+cHRyID0gZ3J1Yl9jYWxsb2MgKGFyZ3MtPmNvdW50LCBzaXplb2Yg KGFyZ3MtPnB0clswXSkpOw0KPiA+IC3CoCDCoCDCoCDCoGlmICghYXJncy0+cHRyKQ0KPiA+IC3C oCDCoCDCoCDCoHsNCj4gPiAtwqAgwqAgwqAgwqAgwqBncnViX2Vycm5vID0gR1JVQl9FUlJfTk9O RTsNCj4gPiAtZGlmZiAtLWdpdCBhL2dydWItY29yZS9rZXJuL3BhcnNlci5jIGIvZ3J1Yi1jb3Jl L2tlcm4vcGFyc2VyLmMNCj4gPiAtaW5kZXggNzgxNzVhYS4uNjE5ZGIzMSAxMDA2NDQNCj4gPiAt LS0tIGEvZ3J1Yi1jb3JlL2tlcm4vcGFyc2VyLmMNCj4gPiAtKysrIGIvZ3J1Yi1jb3JlL2tlcm4v cGFyc2VyLmMNCj4gPiAtQEAgLTIxMyw3ICsyMTMsNyBAQCBncnViX3BhcnNlcl9zcGxpdF9jbWRs aW5lIChjb25zdCBjaGFyICpjbWRsaW5lLA0KPiA+IC3CoCDCoCDCoHJldHVybiBncnViX2Vycm5v Ow0KPiA+IC3CoCDCoGdydWJfbWVtY3B5IChhcmdzLCBidWZmZXIsIGJwIC0gYnVmZmVyKTsNCj4g PiAtIA0KPiA+IC0twqAgKmFyZ3YgPSBncnViX21hbGxvYyAoc2l6ZW9mIChjaGFyICopICogKCph cmdjICsgMSkpOw0KPiA+IC0rwqAgKmFyZ3YgPSBncnViX2NhbGxvYyAoKmFyZ2MgKyAxLCBzaXpl b2YgKGNoYXIgKikpOw0KPiA+IC3CoCDCoGlmICghKmFyZ3YpDQo+ID4gLcKgIMKgIMKgew0KPiA+ IC3CoCDCoCDCoCDCoGdydWJfZnJlZSAoYXJncyk7DQo+ID4gLWRpZmYgLS1naXQgYS9ncnViLWNv cmUva2Vybi91Ym9vdC91Ym9vdC5jIGIvZ3J1Yi0NCj4gPiBjb3JlL2tlcm4vdWJvb3QvdWJvb3Qu Yw0KPiA+IC1pbmRleCBiZTQ4MTZmLi5hYWM4ZjlhIDEwMDY0NA0KPiA+IC0tLS0gYS9ncnViLWNv cmUva2Vybi91Ym9vdC91Ym9vdC5jDQo+ID4gLSsrKyBiL2dydWItY29yZS9rZXJuL3Vib290L3Vi b290LmMNCj4gPiAtQEAgLTEzMyw3ICsxMzMsNyBAQCBncnViX3Vib290X2Rldl9lbnVtICh2b2lk KQ0KPiA+IC3CoCDCoCDCoHJldHVybiBudW1fZGV2aWNlczsNCj4gPiAtIA0KPiA+IC3CoCDCoG1h eF9kZXZpY2VzID0gMjsNCj4gPiAtLcKgIGVudW1fZGV2aWNlcyA9IGdydWJfbWFsbG9jIChzaXpl b2Yoc3RydWN0IGRldmljZV9pbmZvKSAqDQo+ID4gbWF4X2RldmljZXMpOw0KPiA+IC0rwqAgZW51 bV9kZXZpY2VzID0gZ3J1Yl9jYWxsb2MgKG1heF9kZXZpY2VzLCBzaXplb2Yoc3RydWN0DQo+ID4g ZGV2aWNlX2luZm8pKTsNCj4gPiAtwqAgwqBpZiAoIWVudW1fZGV2aWNlcykNCj4gPiAtwqAgwqAg wqByZXR1cm4gMDsNCj4gPiAtIA0KPiA+IC1kaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL2xpYi9saWJn Y3J5cHQvY2lwaGVyL2FjLmMgYi9ncnViLQ0KPiA+IGNvcmUvbGliL2xpYmdjcnlwdC9jaXBoZXIv YWMuYw0KPiA+IC1pbmRleCBmNWU5NDZhLi42M2Y2ZmNkIDEwMDY0NA0KPiA+IC0tLS0gYS9ncnVi LWNvcmUvbGliL2xpYmdjcnlwdC9jaXBoZXIvYWMuYw0KPiA+IC0rKysgYi9ncnViLWNvcmUvbGli L2xpYmdjcnlwdC9jaXBoZXIvYWMuYw0KPiA+IC1AQCAtMTg1LDcgKzE4NSw3IEBAIGFjX2RhdGFf bXBpX2NvcHkgKGdjcnlfYWNfbXBpX3QgKmRhdGFfbXBpcywNCj4gPiB1bnNpZ25lZCBpbnQgZGF0 YV9tcGlzX24sDQo+ID4gLcKgIMKgZ2NyeV9tcGlfdCBtcGk7DQo+ID4gLcKgIMKgY2hhciAqbGFi ZWw7DQo+ID4gLSANCj4gPiAtLcKgIGRhdGFfbXBpc19uZXcgPSBnY3J5X21hbGxvYyAoc2l6ZW9m ICgqZGF0YV9tcGlzX25ldykgKg0KPiA+IGRhdGFfbXBpc19uKTsNCj4gPiAtK8KgIGRhdGFfbXBp c19uZXcgPSBnY3J5X2NhbGxvYyAoZGF0YV9tcGlzX24sIHNpemVvZg0KPiA+ICgqZGF0YV9tcGlz X25ldykpOw0KPiA+IC3CoCDCoGlmICghIGRhdGFfbXBpc19uZXcpDQo+ID4gLcKgIMKgIMKgew0K PiA+IC3CoCDCoCDCoCDCoGVyciA9IGdjcnlfZXJyb3JfZnJvbV9lcnJubyAoZXJybm8pOw0KPiA+ IC1AQCAtNTcyLDcgKzU3Miw3IEBAIF9nY3J5X2FjX2RhdGFfdG9fc2V4cCAoZ2NyeV9hY19kYXRh X3QgZGF0YSwNCj4gPiBnY3J5X3NleHBfdCAqc2V4cCwNCj4gPiAtwqAgwqAgwqB9DQo+ID4gLSAN Cj4gPiAtwqAgwqAvKiBBZGQgTVBJIGxpc3QuwqAgKi8NCj4gPiAtLcKgIGFyZ19saXN0ID0gZ2Ny eV9tYWxsb2MgKHNpemVvZiAoKmFyZ19saXN0KSAqIChkYXRhX24gKyAxKSk7DQo+ID4gLSvCoCBh cmdfbGlzdCA9IGdjcnlfY2FsbG9jIChkYXRhX24gKyAxLCBzaXplb2YgKCphcmdfbGlzdCkpOw0K PiA+IC3CoCDCoGlmICghIGFyZ19saXN0KQ0KPiA+IC3CoCDCoCDCoHsNCj4gPiAtwqAgwqAgwqAg wqBlcnIgPSBnY3J5X2Vycm9yX2Zyb21fZXJybm8gKGVycm5vKTsNCj4gPiAtQEAgLTEyODMsNyAr MTI4Myw3IEBAIGFjX2RhdGFfY29uc3RydWN0IChjb25zdCBjaGFyICppZGVudGlmaWVyLCBpbnQN Cj4gPiBpbmNsdWRlX2ZsYWdzLA0KPiA+IC3CoCDCoC8qIFdlIGJ1aWxkIGEgbGlzdCBvZiBhcmd1 bWVudHMgdG8gcGFzcyB0bw0KPiA+IC3CoCDCoCDCoCBnY3J5X3NleHBfYnVpbGRfYXJyYXkoKS7C oCAqLw0KPiA+IC3CoCDCoGRhdGFfbGVuZ3RoID0gX2djcnlfYWNfZGF0YV9sZW5ndGggKGRhdGEp Ow0KPiA+IC0twqAgYXJnX2xpc3QgPSBnY3J5X21hbGxvYyAoc2l6ZW9mICgqYXJnX2xpc3QpICog KGRhdGFfbGVuZ3RoICogMikpOw0KPiA+IC0rwqAgYXJnX2xpc3QgPSBnY3J5X2NhbGxvYyAoZGF0 YV9sZW5ndGgsIHNpemVvZiAoKmFyZ19saXN0KSAqIDIpOw0KPiA+IC3CoCDCoGlmICghIGFyZ19s aXN0KQ0KPiA+IC3CoCDCoCDCoHsNCj4gPiAtwqAgwqAgwqAgwqBlcnIgPSBnY3J5X2Vycm9yX2Zy b21fZXJybm8gKGVycm5vKTsNCj4gPiAtQEAgLTE1OTMsNyArMTU5Myw3IEBAIF9nY3J5X2FjX2tl eV9wYWlyX2dlbmVyYXRlIChnY3J5X2FjX2hhbmRsZV90DQo+ID4gaGFuZGxlLCB1bnNpZ25lZCBp bnQgbmJpdHMsDQo+ID4gLcKgIMKgIMKgIMKgYXJnX2xpc3RfbiArPSAyOw0KPiA+IC0gDQo+ID4g LcKgIMKgLyogQWxsb2NhdGUgbGlzdC7CoCAqLw0KPiA+IC0twqAgYXJnX2xpc3QgPSBnY3J5X21h bGxvYyAoc2l6ZW9mICgqYXJnX2xpc3QpICogYXJnX2xpc3Rfbik7DQo+ID4gLSvCoCBhcmdfbGlz dCA9IGdjcnlfY2FsbG9jIChhcmdfbGlzdF9uLCBzaXplb2YgKCphcmdfbGlzdCkpOw0KPiA+IC3C oCDCoGlmICghIGFyZ19saXN0KQ0KPiA+IC3CoCDCoCDCoHsNCj4gPiAtwqAgwqAgwqAgwqBlcnIg PSBnY3J5X2Vycm9yX2Zyb21fZXJybm8gKGVycm5vKTsNCj4gPiAtZGlmZiAtLWdpdCBhL2dydWIt Y29yZS9saWIvbGliZ2NyeXB0L2NpcGhlci9wcmltZWdlbi5jIGIvZ3J1Yi0NCj4gPiBjb3JlL2xp Yi9saWJnY3J5cHQvY2lwaGVyL3ByaW1lZ2VuLmMNCj4gPiAtaW5kZXggMjc4OGUzNC4uYjEyZTc5 YiAxMDA2NDQNCj4gPiAtLS0tIGEvZ3J1Yi1jb3JlL2xpYi9saWJnY3J5cHQvY2lwaGVyL3ByaW1l Z2VuLmMNCj4gPiAtKysrIGIvZ3J1Yi1jb3JlL2xpYi9saWJnY3J5cHQvY2lwaGVyL3ByaW1lZ2Vu LmMNCj4gPiAtQEAgLTM4Myw3ICszODMsNyBAQCBwcmltZV9nZW5lcmF0ZV9pbnRlcm5hbCAoaW50 IG5lZWRfcV9mYWN0b3IsDQo+ID4gLcKgIMKgIMKgfQ0KPiA+IC0gDQo+ID4gLcKgIMKgLyogQWxs b2NhdGUgYW4gYXJyYXkgdG8gdHJhY2sgcG9vbCB1c2FnZS4gKi8NCj4gPiAtLcKgIHBvb2xfaW5f dXNlID0gZ2NyeV9tYWxsb2MgKG4gKiBzaXplb2YgKnBvb2xfaW5fdXNlKTsNCj4gPiAtK8KgIHBv b2xfaW5fdXNlID0gZ2NyeV9jYWxsb2MgKG4sIHNpemVvZiAqcG9vbF9pbl91c2UpOw0KPiA+IC3C oCDCoGlmICghcG9vbF9pbl91c2UpDQo+ID4gLcKgIMKgIMKgew0KPiA+IC3CoCDCoCDCoCDCoGVy ciA9IGdwZ19lcnJfY29kZV9mcm9tX2Vycm5vIChlcnJubyk7DQo+ID4gLUBAIC03NjUsNyArNzY1 LDcgQEAgZ2VuX3ByaW1lICh1bnNpZ25lZCBpbnQgbmJpdHMsIGludCBzZWNyZXQsIGludA0KPiA+ IHJhbmRvbWxldmVsLA0KPiA+IC3CoCDCoGlmIChuYml0cyA8IDE2KQ0KPiA+IC3CoCDCoCDCoGxv Z19mYXRhbCAoImNhbid0IGdlbmVyYXRlIGEgcHJpbWUgd2l0aCBsZXNzIHRoYW4gJWQgYml0c1xu IiwNCj4gPiAxNik7DQo+ID4gLSANCj4gPiAtLcKgIG1vZHMgPSBnY3J5X3htYWxsb2MoIG5vX29m X3NtYWxsX3ByaW1lX251bWJlcnMgKiBzaXplb2YgKm1vZHMgKTsNCj4gPiAtK8KgIG1vZHMgPSBn Y3J5X3hjYWxsb2MoIG5vX29mX3NtYWxsX3ByaW1lX251bWJlcnMsIHNpemVvZiAqbW9kcyk7DQo+ ID4gLcKgIMKgLyogTWFrZSBuYml0cyBmaXQgaW50byBnY3J5X21waV90IGltcGxlbWVudGF0aW9u LiAqLw0KPiA+IC3CoCDCoHZhbF8ywqAgPSBtcGlfYWxsb2Nfc2V0X3VpKCAyICk7DQo+ID4gLcKg IMKgdmFsXzMgPSBtcGlfYWxsb2Nfc2V0X3VpKCAzKTsNCj4gPiAtZGlmZiAtLWdpdCBhL2dydWIt Y29yZS9saWIvbGliZ2NyeXB0L2NpcGhlci9wdWJrZXkuYyBiL2dydWItDQo+ID4gY29yZS9saWIv bGliZ2NyeXB0L2NpcGhlci9wdWJrZXkuYw0KPiA+IC1pbmRleCA5MTA5ODIxLi5jYTA4N2FkIDEw MDY0NA0KPiA+IC0tLS0gYS9ncnViLWNvcmUvbGliL2xpYmdjcnlwdC9jaXBoZXIvcHVia2V5LmMN Cj4gPiAtKysrIGIvZ3J1Yi1jb3JlL2xpYi9saWJnY3J5cHQvY2lwaGVyL3B1YmtleS5jDQo+ID4g LUBAIC0yOTQxLDcgKzI5NDEsNyBAQCBnY3J5X3BrX2VuY3J5cHQgKGdjcnlfc2V4cF90ICpyX2Np cGgsDQo+ID4gZ2NyeV9zZXhwX3Qgc19kYXRhLCBnY3J5X3NleHBfdCBzX3BrZXkpDQo+ID4gLcKg IMKgIMKgIMKgICogYXJyYXkgdG8gYSBmb3JtYXQgc3RyaW5nLCBzbyB3ZSBoYXZlIHRvIGRvIGl0 IHRoaXMgd2F5IDotDQo+ID4gKC7CoCAqLw0KPiA+IC3CoCDCoCDCoCDCoC8qIEZJWE1FOiBUaGVy ZSBpcyBub3cgc3VjaCBhIGZvcm1hdCBzcGVjaWZpZXIsIHNvIHdlIGNhbg0KPiA+IC3CoCDCoCDC oCDCoCDCoCBjaGFuZ2UgdGhlIGNvZGUgdG8gYmUgbW9yZSBjbGVhci4gKi8NCj4gPiAtLcKgIMKg IMKgIGFyZ19saXN0ID0gbWFsbG9jIChuZWxlbSAqIHNpemVvZiAqYXJnX2xpc3QpOw0KPiA+IC0r wqAgwqAgwqAgYXJnX2xpc3QgPSBjYWxsb2MgKG5lbGVtLCBzaXplb2YgKmFyZ19saXN0KTsNCj4g PiAtwqAgwqAgwqAgwqBpZiAoIWFyZ19saXN0KQ0KPiA+IC3CoCDCoCDCoCDCoCDCoHsNCj4gPiAt wqAgwqAgwqAgwqAgwqAgwqByYyA9IGdwZ19lcnJfY29kZV9mcm9tX3N5c2Vycm9yICgpOw0KPiA+ IC1AQCAtMzIzMyw3ICszMjMzLDcgQEAgZ2NyeV9wa19zaWduIChnY3J5X3NleHBfdCAqcl9zaWcs IGdjcnlfc2V4cF90DQo+ID4gc19oYXNoLCBnY3J5X3NleHBfdCBzX3NrZXkpDQo+ID4gLcKgIMKg IMKgIMKgIMKgfQ0KPiA+IC3CoCDCoCDCoCDCoHN0cmNweSAocCwgIikpIik7DQo+ID4gLSANCj4g PiAtLcKgIMKgIMKgIGFyZ19saXN0ID0gbWFsbG9jIChuZWxlbSAqIHNpemVvZiAqYXJnX2xpc3Qp Ow0KPiA+IC0rwqAgwqAgwqAgYXJnX2xpc3QgPSBjYWxsb2MgKG5lbGVtLCBzaXplb2YgKmFyZ19s aXN0KTsNCj4gPiAtwqAgwqAgwqAgwqBpZiAoIWFyZ19saXN0KQ0KPiA+IC3CoCDCoCDCoCDCoCDC oHsNCj4gPiAtwqAgwqAgwqAgwqAgwqAgwqByYyA9IGdwZ19lcnJfY29kZV9mcm9tX3N5c2Vycm9y ICgpOw0KPiA+IC1kaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL2xpYi9wcmlvcml0eV9xdWV1ZS5jIGIv Z3J1Yi0NCj4gPiBjb3JlL2xpYi9wcmlvcml0eV9xdWV1ZS5jDQo+ID4gLWluZGV4IDY1OWJlMGIu LjdkNWU3YzAgMTAwNjQ0DQo+ID4gLS0tLSBhL2dydWItY29yZS9saWIvcHJpb3JpdHlfcXVldWUu Yw0KPiA+IC0rKysgYi9ncnViLWNvcmUvbGliL3ByaW9yaXR5X3F1ZXVlLmMNCj4gPiAtQEAgLTky LDcgKzkyLDcgQEAgZ3J1Yl9wcmlvcml0eV9xdWV1ZV9uZXcgKGdydWJfc2l6ZV90IGVsc2l6ZSwN Cj4gPiAtIHsNCj4gPiAtwqAgwqBzdHJ1Y3QgZ3J1Yl9wcmlvcml0eV9xdWV1ZSAqcmV0Ow0KPiA+ IC3CoCDCoHZvaWQgKmVsczsNCj4gPiAtLcKgIGVscyA9IGdydWJfbWFsbG9jIChlbHNpemUgKiA4 KTsNCj4gPiAtK8KgIGVscyA9IGdydWJfY2FsbG9jICg4LCBlbHNpemUpOw0KPiA+IC3CoCDCoGlm ICghZWxzKQ0KPiA+IC3CoCDCoCDCoHJldHVybiAwOw0KPiA+IC3CoCDCoHJldCA9IChzdHJ1Y3Qg Z3J1Yl9wcmlvcml0eV9xdWV1ZSAqKSBncnViX21hbGxvYyAoc2l6ZW9mICgqcmV0KSk7DQo+ID4g LWRpZmYgLS1naXQgYS9ncnViLWNvcmUvbGliL3JlZWRfc29sb21vbi5jIGIvZ3J1Yi0NCj4gPiBj b3JlL2xpYi9yZWVkX3NvbG9tb24uYw0KPiA+IC1pbmRleCBlZTlmYTdiLi40NjczMDViIDEwMDY0 NA0KPiA+IC0tLS0gYS9ncnViLWNvcmUvbGliL3JlZWRfc29sb21vbi5jDQo+ID4gLSsrKyBiL2dy dWItY29yZS9saWIvcmVlZF9zb2xvbW9uLmMNCj4gPiAtQEAgLTIwLDYgKzIwLDcgQEANCj4gPiAt ICNpbmNsdWRlIDxzdGRpby5oPg0KPiA+IC0gI2luY2x1ZGUgPHN0cmluZy5oPg0KPiA+IC0gI2lu Y2x1ZGUgPHN0ZGxpYi5oPg0KPiA+IC0rI2RlZmluZSB4Y2FsbG9jIGNhbGxvYw0KPiA+IC0gI2Rl ZmluZSB4bWFsbG9jIG1hbGxvYw0KPiA+IC0gI2RlZmluZSBncnViX21lbXNldCBtZW1zZXQNCj4g PiAtICNkZWZpbmUgZ3J1Yl9tZW1jcHkgbWVtY3B5DQo+ID4gLUBAIC0xNTgsMTEgKzE1OSw5IEBA IHJzX2VuY29kZSAoZ2Zfc2luZ2xlX3QgKmRhdGEsIGdydWJfc2l6ZV90IHMsDQo+ID4gZ3J1Yl9z aXplX3QgcnMpDQo+ID4gLcKgIMKgZ2Zfc2luZ2xlX3QgKnJzX3BvbHlub21pYWw7DQo+ID4gLcKg IMKgaW50IGksIGo7DQo+ID4gLcKgIMKgZ2Zfc2luZ2xlX3QgKm07DQo+ID4gLS3CoCBtID0geG1h bGxvYyAoKHMgKyBycykgKiBzaXplb2YgKGdmX3NpbmdsZV90KSk7DQo+ID4gLSvCoCBtID0geGNh bGxvYyAocyArIHJzLCBzaXplb2YgKGdmX3NpbmdsZV90KSk7DQo+ID4gLcKgIMKgZ3J1Yl9tZW1j cHkgKG0sIGRhdGEsIHMgKiBzaXplb2YgKGdmX3NpbmdsZV90KSk7DQo+ID4gLS3CoCBncnViX21l bXNldCAobSArIHMsIDAsIHJzICogc2l6ZW9mIChnZl9zaW5nbGVfdCkpOw0KPiA+IC0twqAgcnNf cG9seW5vbWlhbCA9IHhtYWxsb2MgKChycyArIDEpICogc2l6ZW9mIChnZl9zaW5nbGVfdCkpOw0K PiA+IC0twqAgZ3J1Yl9tZW1zZXQgKHJzX3BvbHlub21pYWwsIDAsIChycyArIDEpICogc2l6ZW9m IChnZl9zaW5nbGVfdCkpOw0KPiA+IC0rwqAgcnNfcG9seW5vbWlhbCA9IHhjYWxsb2MgKHJzICsg MSwgc2l6ZW9mIChnZl9zaW5nbGVfdCkpOw0KPiA+IC3CoCDCoHJzX3BvbHlub21pYWxbcnNdID0g MTsNCj4gPiAtwqAgwqAvKiBNdWx0aXBseSB3aXRoIFggLSBhXnIgKi8NCj4gPiAtwqAgwqBmb3Ig KGogPSAwOyBqIDwgcnM7IGorKykNCj4gPiAtZGlmZiAtLWdpdCBhL2dydWItY29yZS9saWIvcmVs b2NhdG9yLmMgYi9ncnViLWNvcmUvbGliL3JlbG9jYXRvci5jDQo+ID4gLWluZGV4IGVhM2ViYzcu LjU4NDdhYWMgMTAwNjQ0DQo+ID4gLS0tLSBhL2dydWItY29yZS9saWIvcmVsb2NhdG9yLmMNCj4g PiAtKysrIGIvZ3J1Yi1jb3JlL2xpYi9yZWxvY2F0b3IuYw0KPiA+IC1AQCAtNDk1LDkgKzQ5NSw5 IEBAIG1hbGxvY19pbl9yYW5nZSAoc3RydWN0IGdydWJfcmVsb2NhdG9yICpyZWwsDQo+ID4gLcKg IMKgfQ0KPiA+IC0gI2VuZGlmDQo+ID4gLSANCj4gPiAtLcKgIGV2ZW50dCA9IGdydWJfbWFsbG9j IChtYXhldmVudHMgKiBzaXplb2YgKGV2ZW50c1swXSkpOw0KPiA+IC0rwqAgZXZlbnR0ID0gZ3J1 Yl9jYWxsb2MgKG1heGV2ZW50cywgc2l6ZW9mIChldmVudHNbMF0pKTsNCj4gPiAtwqAgwqBjb3Vu dGVyID0gZ3J1Yl9tYWxsb2MgKChESUdJVFNPUlRfTUFTSyArIDIpICogc2l6ZW9mDQo+ID4gKGNv dW50ZXJbMF0pKTsNCj4gPiAtLcKgIGV2ZW50cyA9IGdydWJfbWFsbG9jIChtYXhldmVudHMgKiBz aXplb2YgKGV2ZW50c1swXSkpOw0KPiA+IC0rwqAgZXZlbnRzID0gZ3J1Yl9jYWxsb2MgKG1heGV2 ZW50cywgc2l6ZW9mIChldmVudHNbMF0pKTsNCj4gPiAtwqAgwqBpZiAoIWV2ZW50cyB8fCAhZXZl bnR0IHx8ICFjb3VudGVyKQ0KPiA+IC3CoCDCoCDCoHsNCj4gPiAtwqAgwqAgwqAgwqBncnViX2Rw cmludGYgKCJyZWxvY2F0b3IiLCAiZXZlbnRzIG9yIGNvdW50ZXIgYWxsb2NhdGlvbg0KPiA+IGZh aWxlZCAlZFxuIiwNCj4gPiAtQEAgLTk2Myw3ICs5NjMsNyBAQCBtYWxsb2NfaW5fcmFuZ2UgKHN0 cnVjdCBncnViX3JlbG9jYXRvciAqcmVsLA0KPiA+IC0gI2VuZGlmDQo+ID4gLcKgIMKgIMKgdW5z aWduZWQgY3VyYWwgPSAwOw0KPiA+IC3CoCDCoCDCoGludCBvb20gPSAwOw0KPiA+IC0twqAgwqAg cmVzLT5zdWJjaHVua3MgPSBncnViX21hbGxvYyAoc2l6ZW9mIChyZXMtPnN1YmNodW5rc1swXSkg Kg0KPiA+IG5hbGxvY3MpOw0KPiA+IC0rwqAgwqAgcmVzLT5zdWJjaHVua3MgPSBncnViX2NhbGxv YyAobmFsbG9jcywgc2l6ZW9mIChyZXMtDQo+ID4gPiBzdWJjaHVua3NbMF0pKTsNCj4gPiAtwqAg wqAgwqBpZiAoIXJlcy0+c3ViY2h1bmtzKQ0KPiA+IC3CoCDCoCDCoCDCoG9vbSA9IDE7DQo+ID4g LcKgIMKgIMKgcmVzLT5uc3ViY2h1bmtzID0gbmFsbG9jczsNCj4gPiAtQEAgLTE1NjIsOCArMTU2 Miw4IEBAIGdydWJfcmVsb2NhdG9yX3ByZXBhcmVfcmVsb2NzIChzdHJ1Y3QNCj4gPiBncnViX3Jl bG9jYXRvciAqcmVsLCBncnViX2FkZHJfdCBhZGRyLA0KPiA+IC3CoCDCoCDCoCDCoCDCoCDCoGNv dW50WyhjaHVuay0+c3JjICYgMHhmZikgKyAxXSsrOw0KPiA+IC3CoCDCoCDCoCDCoCDCoH0NCj4g PiAtwqAgwqAgwqB9DQo+ID4gLS3CoCDCoCBmcm9tID0gZ3J1Yl9tYWxsb2MgKG5jaHVua3MgKiBz aXplb2YgKHNvcnRlZFswXSkpOw0KPiA+IC0twqAgwqAgdG8gPSBncnViX21hbGxvYyAobmNodW5r cyAqIHNpemVvZiAoc29ydGVkWzBdKSk7DQo+ID4gLSvCoCDCoCBmcm9tID0gZ3J1Yl9jYWxsb2Mg KG5jaHVua3MsIHNpemVvZiAoc29ydGVkWzBdKSk7DQo+ID4gLSvCoCDCoCB0byA9IGdydWJfY2Fs bG9jIChuY2h1bmtzLCBzaXplb2YgKHNvcnRlZFswXSkpOw0KPiA+IC3CoCDCoCDCoGlmICghZnJv bSB8fCAhdG8pDQo+ID4gLcKgIMKgIMKgIMKgew0KPiA+IC3CoCDCoCDCoCDCoGdydWJfZnJlZSAo ZnJvbSk7DQo+ID4gLWRpZmYgLS1naXQgYS9ncnViLWNvcmUvbGliL3pzdGQvZnNlX2RlY29tcHJl c3MuYyBiL2dydWItDQo+ID4gY29yZS9saWIvenN0ZC9mc2VfZGVjb21wcmVzcy5jDQo+ID4gLWlu ZGV4IDcyYmJlYWQuLjIyMjdiODQgMTAwNjQ0DQo+ID4gLS0tLSBhL2dydWItY29yZS9saWIvenN0 ZC9mc2VfZGVjb21wcmVzcy5jDQo+ID4gLSsrKyBiL2dydWItY29yZS9saWIvenN0ZC9mc2VfZGVj b21wcmVzcy5jDQo+ID4gLUBAIC04Miw3ICs4Miw3IEBADQo+ID4gLSBGU0VfRFRhYmxlKiBGU0Vf Y3JlYXRlRFRhYmxlICh1bnNpZ25lZCB0YWJsZUxvZykNCj4gPiAtIHsNCj4gPiAtwqAgwqAgwqBp ZiAodGFibGVMb2cgPiBGU0VfVEFCTEVMT0dfQUJTT0xVVEVfTUFYKSB0YWJsZUxvZyA9DQo+ID4g RlNFX1RBQkxFTE9HX0FCU09MVVRFX01BWDsNCj4gPiAtLcKgIMKgIHJldHVybiAoRlNFX0RUYWJs ZSopbWFsbG9jKCBGU0VfRFRBQkxFX1NJWkVfVTMyKHRhYmxlTG9nKSAqDQo+ID4gc2l6ZW9mIChV MzIpICk7DQo+ID4gLSvCoCDCoCByZXR1cm4gKEZTRV9EVGFibGUqKWNhbGxvYyggRlNFX0RUQUJM RV9TSVpFX1UzMih0YWJsZUxvZyksDQo+ID4gc2l6ZW9mIChVMzIpICk7DQo+ID4gLSB9DQo+ID4g LSANCj4gPiAtIHZvaWQgRlNFX2ZyZWVEVGFibGUgKEZTRV9EVGFibGUqIGR0KQ0KPiA+IC1kaWZm IC0tZ2l0IGEvZ3J1Yi1jb3JlL2xvYWRlci9hcm0vbGludXguYyBiL2dydWItDQo+ID4gY29yZS9s b2FkZXIvYXJtL2xpbnV4LmMNCj4gPiAtaW5kZXggNTE2ODQ5MS4uZDcwYzE3NCAxMDA2NDQNCj4g PiAtLS0tIGEvZ3J1Yi1jb3JlL2xvYWRlci9hcm0vbGludXguYw0KPiA+IC0rKysgYi9ncnViLWNv cmUvbG9hZGVyL2FybS9saW51eC5jDQo+ID4gLUBAIC03OCw3ICs3OCw3IEBAIGxpbnV4X3ByZXBh cmVfYXRhZyAodm9pZCAqdGFyZ2V0X2F0YWcpDQo+ID4gLSANCj4gPiAtwqAgwqAvKiBzb21lIHBs YWNlIGZvciBjbWRsaW5lLCBpbml0cmQgYW5kIHRlcm1pbmF0b3IuwqAgKi8NCj4gPiAtwqAgwqB0 bXBfc2l6ZSA9IGdldF9hdGFnX3NpemUgKGF0YWdfb3JpZykgKyAyMCArIChhcmdfc2l6ZSkgLyA0 Ow0KPiA+IC0twqAgdG1wX2F0YWcgPSBncnViX21hbGxvYyAodG1wX3NpemUgKiBzaXplb2YgKGdy dWJfdWludDMyX3QpKTsNCj4gPiAtK8KgIHRtcF9hdGFnID0gZ3J1Yl9jYWxsb2MgKHRtcF9zaXpl LCBzaXplb2YgKGdydWJfdWludDMyX3QpKTsNCj4gPiAtwqAgwqBpZiAoIXRtcF9hdGFnKQ0KPiA+ IC3CoCDCoCDCoHJldHVybiBncnViX2Vycm5vOw0KPiA+IC0gDQo+ID4gLWRpZmYgLS1naXQgYS9n cnViLWNvcmUvbG9hZGVyL2VmaS9jaGFpbmxvYWRlci5jIGIvZ3J1Yi0NCj4gPiBjb3JlL2xvYWRl ci9lZmkvY2hhaW5sb2FkZXIuYw0KPiA+IC1pbmRleCBjZDkyZWEzLi5kYWY4YzZiIDEwMDY0NA0K PiA+IC0tLS0gYS9ncnViLWNvcmUvbG9hZGVyL2VmaS9jaGFpbmxvYWRlci5jDQo+ID4gLSsrKyBi L2dydWItY29yZS9sb2FkZXIvZWZpL2NoYWlubG9hZGVyLmMNCj4gPiAtQEAgLTExNiw3ICsxMTYs NyBAQCBjb3B5X2ZpbGVfcGF0aCAoZ3J1Yl9lZmlfZmlsZV9wYXRoX2RldmljZV9wYXRoX3QNCj4g PiAqZnAsDQo+ID4gLcKgIMKgZnAtPmhlYWRlci50eXBlID0gR1JVQl9FRklfTUVESUFfREVWSUNF X1BBVEhfVFlQRTsNCj4gPiAtwqAgwqBmcC0+aGVhZGVyLnN1YnR5cGUgPSBHUlVCX0VGSV9GSUxF X1BBVEhfREVWSUNFX1BBVEhfU1VCVFlQRTsNCj4gPiAtIA0KPiA+IC0twqAgcGF0aF9uYW1lID0g Z3J1Yl9tYWxsb2MgKGxlbiAqIEdSVUJfTUFYX1VURjE2X1BFUl9VVEY4ICogc2l6ZW9mDQo+ID4g KCpwYXRoX25hbWUpKTsNCj4gPiAtK8KgIHBhdGhfbmFtZSA9IGdydWJfY2FsbG9jIChsZW4sIEdS VUJfTUFYX1VURjE2X1BFUl9VVEY4ICogc2l6ZW9mDQo+ID4gKCpwYXRoX25hbWUpKTsNCj4gPiAt wqAgwqBpZiAoIXBhdGhfbmFtZSkNCj4gPiAtwqAgwqAgwqByZXR1cm47DQo+ID4gLSANCj4gPiAt ZGlmZiAtLWdpdCBhL2dydWItY29yZS9sb2FkZXIvaTM4Ni9ic2RYWC5jIGIvZ3J1Yi0NCj4gPiBj b3JlL2xvYWRlci9pMzg2L2JzZFhYLmMNCj4gPiAtaW5kZXggYWY2NzQxZC4uYThkOGJmNyAxMDA2 NDQNCj4gPiAtLS0tIGEvZ3J1Yi1jb3JlL2xvYWRlci9pMzg2L2JzZFhYLmMNCj4gPiAtKysrIGIv Z3J1Yi1jb3JlL2xvYWRlci9pMzg2L2JzZFhYLmMNCj4gPiAtQEAgLTQ4LDcgKzQ4LDcgQEAgcmVh ZF9oZWFkZXJzIChncnViX2ZpbGVfdCBmaWxlLCBjb25zdCBjaGFyDQo+ID4gKmZpbGVuYW1lLCBF bGZfRWhkciAqZSwgY2hhciAqKnNoZHIpDQo+ID4gLcKgIMKgaWYgKGUtPmVfaWRlbnRbRUlfQ0xB U1NdICE9IFNVRkZJWCAoRUxGQ0xBU1MpKQ0KPiA+IC3CoCDCoCDCoHJldHVybiBncnViX2Vycm9y IChHUlVCX0VSUl9CQURfT1MsIE5fKCJpbnZhbGlkIGFyY2gtZGVwZW5kZW50DQo+ID4gRUxGIG1h Z2ljIikpOw0KPiA+IC0gDQo+ID4gLS3CoCAqc2hkciA9IGdydWJfbWFsbG9jICgoZ3J1Yl91aW50 MzJfdCkgZS0+ZV9zaG51bSAqIGUtDQo+ID4gPiBlX3NoZW50c2l6ZSk7DQo+ID4gLSvCoCAqc2hk ciA9IGdydWJfY2FsbG9jIChlLT5lX3NobnVtLCBlLT5lX3NoZW50c2l6ZSk7DQo+ID4gLcKgIMKg aWYgKCEgKnNoZHIpDQo+ID4gLcKgIMKgIMKgcmV0dXJuIGdydWJfZXJybm87DQo+ID4gLSANCj4g PiAtZGlmZiAtLWdpdCBhL2dydWItY29yZS9sb2FkZXIvaTM4Ni94bnUuYyBiL2dydWItDQo+ID4g Y29yZS9sb2FkZXIvaTM4Ni94bnUuYw0KPiA+IC1pbmRleCBlNjRlZDA4Li5iN2QxNzZiIDEwMDY0 NA0KPiA+IC0tLS0gYS9ncnViLWNvcmUvbG9hZGVyL2kzODYveG51LmMNCj4gPiAtKysrIGIvZ3J1 Yi1jb3JlL2xvYWRlci9pMzg2L3hudS5jDQo+ID4gLUBAIC0yOTUsNyArMjk1LDcgQEAgZ3J1Yl94 bnVfZGV2cHJvcF9hZGRfcHJvcGVydHlfdXRmOCAoc3RydWN0DQo+ID4gZ3J1Yl94bnVfZGV2cHJv cF9kZXZpY2VfZGVzY3JpcHRvciAqZA0KPiA+IC3CoCDCoCDCoHJldHVybiBncnViX2Vycm5vOw0K PiA+IC0gDQo+ID4gLcKgIMKgbGVuID0gZ3J1Yl9zdHJsZW4gKG5hbWUpOw0KPiA+IC0twqAgdXRm MTYgPSBncnViX21hbGxvYyAoc2l6ZW9mIChncnViX3VpbnQxNl90KSAqIGxlbik7DQo+ID4gLSvC oCB1dGYxNiA9IGdydWJfY2FsbG9jIChsZW4sIHNpemVvZiAoZ3J1Yl91aW50MTZfdCkpOw0KPiA+ IC3CoCDCoGlmICghdXRmMTYpDQo+ID4gLcKgIMKgIMKgew0KPiA+IC3CoCDCoCDCoCDCoGdydWJf ZnJlZSAodXRmOCk7DQo+ID4gLUBAIC0zMzEsNyArMzMxLDcgQEAgZ3J1Yl94bnVfZGV2cHJvcF9h ZGRfcHJvcGVydHlfdXRmMTYgKHN0cnVjdA0KPiA+IGdydWJfeG51X2RldnByb3BfZGV2aWNlX2Rl c2NyaXB0b3IgKg0KPiA+IC3CoCDCoGdydWJfdWludDE2X3QgKnV0ZjE2Ow0KPiA+IC3CoCDCoGdy dWJfZXJyX3QgZXJyOw0KPiA+IC0gDQo+ID4gLS3CoCB1dGYxNiA9IGdydWJfbWFsbG9jIChzaXpl b2YgKGdydWJfdWludDE2X3QpICogbmFtZWxlbik7DQo+ID4gLSvCoCB1dGYxNiA9IGdydWJfY2Fs bG9jIChuYW1lbGVuLCBzaXplb2YgKGdydWJfdWludDE2X3QpKTsNCj4gPiAtwqAgwqBpZiAoIXV0 ZjE2KQ0KPiA+IC3CoCDCoCDCoHJldHVybiBncnViX2Vycm5vOw0KPiA+IC3CoCDCoGdydWJfbWVt Y3B5ICh1dGYxNiwgbmFtZSwgc2l6ZW9mIChncnViX3VpbnQxNl90KSAqIG5hbWVsZW4pOw0KPiA+ IC1kaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL2xvYWRlci9tYWNoby5jIGIvZ3J1Yi1jb3JlL2xvYWRl ci9tYWNoby5jDQo+ID4gLWluZGV4IDA4NWY5YzYuLjA1NzEwYzQgMTAwNjQ0DQo+ID4gLS0tLSBh L2dydWItY29yZS9sb2FkZXIvbWFjaG8uYw0KPiA+IC0rKysgYi9ncnViLWNvcmUvbG9hZGVyL21h Y2hvLmMNCj4gPiAtQEAgLTk3LDcgKzk3LDcgQEAgZ3J1Yl9tYWNob19maWxlIChncnViX2ZpbGVf dCBmaWxlLCBjb25zdCBjaGFyDQo+ID4gKmZpbGVuYW1lLCBpbnQgaXNfNjRiaXQpDQo+ID4gLcKg IMKgIMKgIMKgaWYgKGdydWJfZmlsZV9zZWVrIChtYWNoby0+ZmlsZSwgc2l6ZW9mIChzdHJ1Y3QN Cj4gPiBncnViX21hY2hvX2ZhdF9oZWFkZXIpKQ0KPiA+IC3CoCDCoCDCoCDCoCDCoD09IChncnVi X29mZl90KSAtMSkNCj4gPiAtwqAgwqAgwqAgwqBnb3RvIGZhaWw7DQo+ID4gLS3CoCDCoCDCoCBh cmNocyA9IGdydWJfbWFsbG9jIChzaXplb2YgKHN0cnVjdCBncnViX21hY2hvX2ZhdF9hcmNoKSAq DQo+ID4gbmFyY2hzKTsNCj4gPiAtK8KgIMKgIMKgIGFyY2hzID0gZ3J1Yl9jYWxsb2MgKG5hcmNo cywgc2l6ZW9mIChzdHJ1Y3QNCj4gPiBncnViX21hY2hvX2ZhdF9hcmNoKSk7DQo+ID4gLcKgIMKg IMKgIMKgaWYgKCFhcmNocykNCj4gPiAtwqAgwqAgwqAgwqBnb3RvIGZhaWw7DQo+ID4gLcKgIMKg IMKgIMKgaWYgKGdydWJfZmlsZV9yZWFkIChtYWNoby0+ZmlsZSwgYXJjaHMsDQo+ID4gLWRpZmYg LS1naXQgYS9ncnViLWNvcmUvbG9hZGVyL211bHRpYm9vdF9lbGZ4eC5jIGIvZ3J1Yi0NCj4gPiBj b3JlL2xvYWRlci9tdWx0aWJvb3RfZWxmeHguYw0KPiA+IC1pbmRleCA3MGNkMWRiLi5jYzY4NTM2 IDEwMDY0NA0KPiA+IC0tLS0gYS9ncnViLWNvcmUvbG9hZGVyL211bHRpYm9vdF9lbGZ4eC5jDQo+ ID4gLSsrKyBiL2dydWItY29yZS9sb2FkZXIvbXVsdGlib290X2VsZnh4LmMNCj4gPiAtQEAgLTIx Nyw3ICsyMTcsNyBAQCBDT05DQVQoZ3J1Yl9tdWx0aWJvb3RfbG9hZF9lbGYsIFhYKQ0KPiA+ICht YmlfbG9hZF9kYXRhX3QgKm1sZCkNCj4gPiAtwqAgwqAgwqB7DQo+ID4gLcKgIMKgIMKgIMKgZ3J1 Yl91aW50OF90ICpzaGRyLCAqc2hkcnB0cjsNCj4gPiAtIA0KPiA+IC0twqAgwqAgwqAgc2hkciA9 IGdydWJfbWFsbG9jICgoZ3J1Yl91aW50MzJfdCkgZWhkci0+ZV9zaG51bSAqIGVoZHItDQo+ID4g PiBlX3NoZW50c2l6ZSk7DQo+ID4gLSvCoCDCoCDCoCBzaGRyID0gZ3J1Yl9jYWxsb2MgKGVoZHIt PmVfc2hudW0sIGVoZHItPmVfc2hlbnRzaXplKTsNCj4gPiAtwqAgwqAgwqAgwqBpZiAoIXNoZHIp DQo+ID4gLcKgIMKgIMKgIMKgcmV0dXJuIGdydWJfZXJybm87DQo+ID4gLcKgIMKgIMKgIMKgDQo+ ID4gLWRpZmYgLS1naXQgYS9ncnViLWNvcmUvbG9hZGVyL3hudS5jIGIvZ3J1Yi1jb3JlL2xvYWRl ci94bnUuYw0KPiA+IC1pbmRleCA3Zjc0ZDFkLi43N2Q3MDYwIDEwMDY0NA0KPiA+IC0tLS0gYS9n cnViLWNvcmUvbG9hZGVyL3hudS5jDQo+ID4gLSsrKyBiL2dydWItY29yZS9sb2FkZXIveG51LmMN Cj4gPiAtQEAgLTgwMCw3ICs4MDAsNyBAQCBncnViX2NtZF94bnVfbWtleHQgKGdydWJfY29tbWFu ZF90IGNtZA0KPiA+IF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwNCj4gPiAtwqAgwqBpZiAoZ3J1 Yl9iZV90b19jcHUzMiAoaGVhZC5tYWdpYykgPT0gR1JVQl9NQUNIT19GQVRfTUFHSUMpDQo+ID4g LcKgIMKgIMKgew0KPiA+IC3CoCDCoCDCoCDCoG5hcmNocyA9IGdydWJfYmVfdG9fY3B1MzIgKGhl YWQubmZhdF9hcmNoKTsNCj4gPiAtLcKgIMKgIMKgIGFyY2hzID0gZ3J1Yl9tYWxsb2MgKHNpemVv ZiAoc3RydWN0IGdydWJfbWFjaG9fZmF0X2FyY2gpICoNCj4gPiBuYXJjaHMpOw0KPiA+IC0rwqAg wqAgwqAgYXJjaHMgPSBncnViX2NhbGxvYyAobmFyY2hzLCBzaXplb2YgKHN0cnVjdA0KPiA+IGdy dWJfbWFjaG9fZmF0X2FyY2gpKTsNCj4gPiAtwqAgwqAgwqAgwqBpZiAoISBhcmNocykNCj4gPiAt wqAgwqAgwqAgwqB7DQo+ID4gLcKgIMKgIMKgIMKgIMKgZ3J1Yl9maWxlX2Nsb3NlIChmaWxlKTsN Cj4gPiAtZGlmZiAtLWdpdCBhL2dydWItY29yZS9tbWFwL21tYXAuYyBiL2dydWItY29yZS9tbWFw L21tYXAuYw0KPiA+IC1pbmRleCA2YTMxY2JhLi41N2I0ZTlhIDEwMDY0NA0KPiA+IC0tLS0gYS9n cnViLWNvcmUvbW1hcC9tbWFwLmMNCj4gPiAtKysrIGIvZ3J1Yi1jb3JlL21tYXAvbW1hcC5jDQo+ ID4gLUBAIC0xNDMsOSArMTQzLDkgQEAgZ3J1Yl9tbWFwX2l0ZXJhdGUgKGdydWJfbWVtb3J5X2hv b2tfdCBob29rLCB2b2lkDQo+ID4gKmhvb2tfZGF0YSkNCj4gPiAtIA0KPiA+IC3CoCDCoC8qIElu aXRpYWxpemUgdmFyaWFibGVzLiAqLw0KPiA+IC3CoCDCoGN0eC5zY2FubGluZV9ldmVudHMgPSAo c3RydWN0IGdydWJfbW1hcF9zY2FuICopDQo+ID4gLS3CoCDCoCBncnViX21hbGxvYyAoc2l6ZW9m IChzdHJ1Y3QgZ3J1Yl9tbWFwX3NjYW4pICogMiAqIG1tYXBfbnVtKTsNCj4gPiAtK8KgIMKgIGdy dWJfY2FsbG9jIChtbWFwX251bSwgc2l6ZW9mIChzdHJ1Y3QgZ3J1Yl9tbWFwX3NjYW4pICogMik7 DQo+ID4gLSANCj4gPiAtLcKgIHByZXNlbnQgPSBncnViX3phbGxvYyAoc2l6ZW9mIChwcmVzZW50 WzBdKSAqIGN1cnJlbnRfcHJpb3JpdHkpOw0KPiA+IC0rwqAgcHJlc2VudCA9IGdydWJfY2FsbG9j IChjdXJyZW50X3ByaW9yaXR5LCBzaXplb2YgKHByZXNlbnRbMF0pKTsNCj4gPiAtIA0KPiA+IC3C oCDCoGlmICghIGN0eC5zY2FubGluZV9ldmVudHMgfHwgIXByZXNlbnQpDQo+ID4gLcKgIMKgIMKg ew0KPiA+IC1kaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL25ldC9ib290cC5jIGIvZ3J1Yi1jb3JlL25l dC9ib290cC5jDQo+ID4gLWluZGV4IDA0Y2ZiYjAuLjY1Mzk1NzIgMTAwNjQ0DQo+ID4gLS0tLSBh L2dydWItY29yZS9uZXQvYm9vdHAuYw0KPiA+IC0rKysgYi9ncnViLWNvcmUvbmV0L2Jvb3RwLmMN Cj4gPiAtQEAgLTc2Niw3ICs3NjYsNyBAQCBncnViX2NtZF9ib290cCAoc3RydWN0IGdydWJfY29t bWFuZCAqY21kDQo+ID4gX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpLA0KPiA+IC3CoCDCoGlmIChu Y2FyZHMgPT0gMCkNCj4gPiAtwqAgwqAgwqByZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfTkVU X05PX0NBUkQsIE5fKCJubyBuZXR3b3JrIGNhcmQNCj4gPiBmb3VuZCIpKTsNCj4gPiAtIA0KPiA+ IC0twqAgaWZhY2VzID0gZ3J1Yl96YWxsb2MgKG5jYXJkcyAqIHNpemVvZiAoaWZhY2VzWzBdKSk7 DQo+ID4gLSvCoCBpZmFjZXMgPSBncnViX2NhbGxvYyAobmNhcmRzLCBzaXplb2YgKGlmYWNlc1sw XSkpOw0KPiA+IC3CoCDCoGlmICghaWZhY2VzKQ0KPiA+IC3CoCDCoCDCoHJldHVybiBncnViX2Vy cm5vOw0KPiA+IC0gDQo+ID4gLWRpZmYgLS1naXQgYS9ncnViLWNvcmUvbmV0L2Rucy5jIGIvZ3J1 Yi1jb3JlL25ldC9kbnMuYw0KPiA+IC1pbmRleCA1ZDlhZmUwLi5lMzMyZDVlIDEwMDY0NA0KPiA+ IC0tLS0gYS9ncnViLWNvcmUvbmV0L2Rucy5jDQo+ID4gLSsrKyBiL2dydWItY29yZS9uZXQvZG5z LmMNCj4gPiAtQEAgLTI4NSw4ICsyODUsOCBAQCByZWN2X2hvb2sgKGdydWJfbmV0X3VkcF9zb2Nr ZXRfdCBzb2NrDQo+ID4gX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpLA0KPiA+IC3CoCDCoCDCoCDC oHB0cisrOw0KPiA+IC3CoCDCoCDCoCDCoHB0ciArPSA0Ow0KPiA+IC3CoCDCoCDCoH0NCj4gPiAt LcKgICpkYXRhLT5hZGRyZXNzZXMgPSBncnViX21hbGxvYyAoc2l6ZW9mICgoKmRhdGEtPmFkZHJl c3NlcylbMF0pDQo+ID4gLS3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCogZ3J1Yl9iZV90b19jcHUxNiAoaGVhZC0+YW5jb3VudCkpOw0KPiA+IC0rwqAgKmRh dGEtPmFkZHJlc3NlcyA9IGdydWJfY2FsbG9jIChncnViX2JlX3RvX2NwdTE2IChoZWFkLT5hbmNv dW50KSwNCj4gPiAtK8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIHNpemVvZiAoKCpkYXRhLT5hZGRyZXNzZXMpWzBdKSk7DQo+ID4gLcKgIMKgaWYgKCEqZGF0 YS0+YWRkcmVzc2VzKQ0KPiA+IC3CoCDCoCDCoHsNCj4gPiAtwqAgwqAgwqAgwqBncnViX2Vycm5v ID0gR1JVQl9FUlJfTk9ORTsNCj4gPiAtQEAgLTQwNiw4ICs0MDYsOCBAQCByZWN2X2hvb2sgKGdy dWJfbmV0X3VkcF9zb2NrZXRfdCBzb2NrDQo+ID4gX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpLA0K PiA+IC3CoCDCoCDCoCDCoGRuc19jYWNoZVtoXS5hZGRyZXNzZXMgPSAwOw0KPiA+IC3CoCDCoCDC oCDCoGRuc19jYWNoZVtoXS5uYW1lID0gZ3J1Yl9zdHJkdXAgKGRhdGEtPm9uYW1lKTsNCj4gPiAt wqAgwqAgwqAgwqBkbnNfY2FjaGVbaF0ubmFkZHJlc3NlcyA9ICpkYXRhLT5uYWRkcmVzc2VzOw0K PiA+IC0twqAgwqAgwqAgZG5zX2NhY2hlW2hdLmFkZHJlc3NlcyA9IGdydWJfbWFsbG9jICgqZGF0 YS0+bmFkZHJlc3Nlcw0KPiA+IC0twqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgKiBzaXplb2YNCj4gPiAoZG5zX2NhY2hlW2hdLmFk ZHJlc3Nlc1swXSkpOw0KPiA+IC0rwqAgwqAgwqAgZG5zX2NhY2hlW2hdLmFkZHJlc3NlcyA9IGdy dWJfY2FsbG9jICgqZGF0YS0+bmFkZHJlc3NlcywNCj4gPiAtK8KgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHNpemVvZg0KPiA+IChk bnNfY2FjaGVbaF0uYWRkcmVzc2VzWzBdKSk7DQo+ID4gLcKgIMKgIMKgIMKgZG5zX2NhY2hlW2hd LmxpbWl0X3RpbWUgPSBncnViX2dldF90aW1lX21zICgpICsgMTAwMCAqDQo+ID4gdHRsX2FsbDsN Cj4gPiAtwqAgwqAgwqAgwqBpZiAoIWRuc19jYWNoZVtoXS5hZGRyZXNzZXMgfHwgIWRuc19jYWNo ZVtoXS5uYW1lKQ0KPiA+IC3CoCDCoCDCoCDCoHsNCj4gPiAtQEAgLTQ3OSw3ICs0NzksNyBAQCBn cnViX25ldF9kbnNfbG9va3VwIChjb25zdCBjaGFyICpuYW1lLA0KPiA+IC3CoCDCoCDCoCDCoH0N Cj4gPiAtwqAgwqAgwqB9DQo+ID4gLSANCj4gPiAtLcKgIHNvY2tldHMgPSBncnViX21hbGxvYyAo c2l6ZW9mIChzb2NrZXRzWzBdKSAqIG5fc2VydmVycyk7DQo+ID4gLSvCoCBzb2NrZXRzID0gZ3J1 Yl9jYWxsb2MgKG5fc2VydmVycywgc2l6ZW9mIChzb2NrZXRzWzBdKSk7DQo+ID4gLcKgIMKgaWYg KCFzb2NrZXRzKQ0KPiA+IC3CoCDCoCDCoHJldHVybiBncnViX2Vycm5vOw0KPiA+IC0gDQo+ID4g LWRpZmYgLS1naXQgYS9ncnViLWNvcmUvbmV0L25ldC5jIGIvZ3J1Yi1jb3JlL25ldC9uZXQuYw0K PiA+IC1pbmRleCBkNWQ3MjZhLi4zOGYxOWRmIDEwMDY0NA0KPiA+IC0tLS0gYS9ncnViLWNvcmUv bmV0L25ldC5jDQo+ID4gLSsrKyBiL2dydWItY29yZS9uZXQvbmV0LmMNCj4gPiAtQEAgLTMzMyw4 ICszMzMsOCBAQCBncnViX2NtZF9pcHY2X2F1dG9jb25mIChzdHJ1Y3QgZ3J1Yl9jb21tYW5kICpj bWQNCj4gPiBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSksDQo+ID4gLcKgIMKgIMKgbmNhcmRzKys7 DQo+ID4gLcKgIMKgfQ0KPiA+IC0gDQo+ID4gLS3CoCBpZmFjZXMgPSBncnViX3phbGxvYyAobmNh cmRzICogc2l6ZW9mIChpZmFjZXNbMF0pKTsNCj4gPiAtLcKgIHNsYWFjcyA9IGdydWJfemFsbG9j IChuY2FyZHMgKiBzaXplb2YgKHNsYWFjc1swXSkpOw0KPiA+IC0rwqAgaWZhY2VzID0gZ3J1Yl9j YWxsb2MgKG5jYXJkcywgc2l6ZW9mIChpZmFjZXNbMF0pKTsNCj4gPiAtK8KgIHNsYWFjcyA9IGdy dWJfY2FsbG9jIChuY2FyZHMsIHNpemVvZiAoc2xhYWNzWzBdKSk7DQo+ID4gLcKgIMKgaWYgKCFp ZmFjZXMgfHwgIXNsYWFjcykNCj4gPiAtwqAgwqAgwqB7DQo+ID4gLcKgIMKgIMKgIMKgZ3J1Yl9m cmVlIChpZmFjZXMpOw0KPiA+IC1kaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL25vcm1hbC9jaGFyc2V0 LmMgYi9ncnViLWNvcmUvbm9ybWFsL2NoYXJzZXQuYw0KPiA+IC1pbmRleCBiMGFiNDdkLi5kNTdm YjcyIDEwMDY0NA0KPiA+IC0tLS0gYS9ncnViLWNvcmUvbm9ybWFsL2NoYXJzZXQuYw0KPiA+IC0r KysgYi9ncnViLWNvcmUvbm9ybWFsL2NoYXJzZXQuYw0KPiA+IC1AQCAtMjAzLDcgKzIwMyw3IEBA IGdydWJfdXRmOF90b191Y3M0X2FsbG9jIChjb25zdCBjaGFyICptc2csDQo+ID4gZ3J1Yl91aW50 MzJfdCAqKnVuaWNvZGVfbXNnLA0KPiA+IC0gew0KPiA+IC3CoCDCoGdydWJfc2l6ZV90IG1zZ19s ZW4gPSBncnViX3N0cmxlbiAobXNnKTsNCj4gPiAtIA0KPiA+IC0twqAgKnVuaWNvZGVfbXNnID0g Z3J1Yl9tYWxsb2MgKG1zZ19sZW4gKiBzaXplb2YgKGdydWJfdWludDMyX3QpKTsNCj4gPiAtK8Kg ICp1bmljb2RlX21zZyA9IGdydWJfY2FsbG9jIChtc2dfbGVuLCBzaXplb2YgKGdydWJfdWludDMy X3QpKTsNCj4gPiAtwqAgDQo+ID4gLcKgIMKgaWYgKCEqdW5pY29kZV9tc2cpDQo+ID4gLcKgIMKg IMKgcmV0dXJuIC0xOw0KPiA+IC1AQCAtNDg4LDcgKzQ4OCw3IEBAIGdydWJfdW5pY29kZV9hZ2xv bWVyYXRlX2NvbWIgKGNvbnN0DQo+ID4gZ3J1Yl91aW50MzJfdCAqaW4sIGdydWJfc2l6ZV90IGlu bGVuLA0KPiA+IC3CoCDCoCDCoCDCoCDCoCDCoH0NCj4gPiAtwqAgwqAgwqAgwqAgwqBlbHNlDQo+ ID4gLcKgIMKgIMKgIMKgIMKgIMKgew0KPiA+IC0twqAgwqAgwqAgwqAgwqAgwqAgbiA9IGdydWJf bWFsbG9jIChzaXplb2YgKG5bMF0pICogKG91dC0+bmNvbWIgKyAxKSk7DQo+ID4gLSvCoCDCoCDC oCDCoCDCoCDCoCBuID0gZ3J1Yl9jYWxsb2MgKG91dC0+bmNvbWIgKyAxLCBzaXplb2YgKG5bMF0p KTsNCj4gPiAtwqAgwqAgwqAgwqAgwqAgwqAgwqBpZiAoIW4pDQo+ID4gLcKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgew0KPiA+IC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGdydWJfZXJybm8gPSBH UlVCX0VSUl9OT05FOw0KPiA+IC1AQCAtODQyLDcgKzg0Miw3IEBAIGdydWJfYmlkaV9saW5lX2xv Z2ljYWxfdG9fdmlzdWFsIChjb25zdA0KPiA+IGdydWJfdWludDMyX3QgKmxvZ2ljYWwsDQo+ID4g LcKgIMKgIMKgIMKgfcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgXA0KPiA+IC3CoCDCoH0NCj4g PiAtIA0KPiA+IC0twqAgdmlzdWFsID0gZ3J1Yl9tYWxsb2MgKHNpemVvZiAodmlzdWFsWzBdKSAq IGxvZ2ljYWxfbGVuKTsNCj4gPiAtK8KgIHZpc3VhbCA9IGdydWJfY2FsbG9jIChsb2dpY2FsX2xl biwgc2l6ZW9mICh2aXN1YWxbMF0pKTsNCj4gPiAtwqAgwqBpZiAoIXZpc3VhbCkNCj4gPiAtwqAg wqAgwqByZXR1cm4gLTE7DQo+ID4gLSANCj4gPiAtQEAgLTExNjUsOCArMTE2NSw4IEBAIGdydWJf YmlkaV9sb2dpY2FsX3RvX3Zpc3VhbCAoY29uc3QNCj4gPiBncnViX3VpbnQzMl90ICpsb2dpY2Fs LA0KPiA+IC0gew0KPiA+IC3CoCDCoGNvbnN0IGdydWJfdWludDMyX3QgKmxpbmVfc3RhcnQgPSBs b2dpY2FsLCAqcHRyOw0KPiA+IC3CoCDCoHN0cnVjdCBncnViX3VuaWNvZGVfZ2x5cGggKnZpc3Vh bF9wdHI7DQo+ID4gLS3CoCAqdmlzdWFsX291dCA9IHZpc3VhbF9wdHIgPSBncnViX21hbGxvYyAo MyAqIHNpemVvZg0KPiA+ICh2aXN1YWxfcHRyWzBdKQ0KPiA+IC0twqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgKiAobG9naWNhbF9sZW4g KyAyKSk7DQo+ID4gLSvCoCAqdmlzdWFsX291dCA9IHZpc3VhbF9wdHIgPSBncnViX2NhbGxvYyAo bG9naWNhbF9sZW4gKyAyLA0KPiA+IC0rwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgMyAqIHNpemVvZg0KPiA+ICh2aXN1YWxfcHRyWzBd KSk7DQo+ID4gLcKgIMKgaWYgKCF2aXN1YWxfcHRyKQ0KPiA+IC3CoCDCoCDCoHJldHVybiAtMTsN Cj4gPiAtwqAgwqBmb3IgKHB0ciA9IGxvZ2ljYWw7IHB0ciA8PSBsb2dpY2FsICsgbG9naWNhbF9s ZW47IHB0cisrKQ0KPiA+IC1kaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL25vcm1hbC9jbWRsaW5lLmMg Yi9ncnViLWNvcmUvbm9ybWFsL2NtZGxpbmUuYw0KPiA+IC1pbmRleCBjMDM3ZDUwLi5jNTcyNDJl IDEwMDY0NA0KPiA+IC0tLS0gYS9ncnViLWNvcmUvbm9ybWFsL2NtZGxpbmUuYw0KPiA+IC0rKysg Yi9ncnViLWNvcmUvbm9ybWFsL2NtZGxpbmUuYw0KPiA+IC1AQCAtNDEsNyArNDEsNyBAQCBncnVi X2Vycl90DQo+ID4gLSBncnViX3NldF9oaXN0b3J5IChpbnQgbmV3c2l6ZSkNCj4gPiAtIHsNCj4g PiAtwqAgwqBncnViX3VpbnQzMl90ICoqb2xkX2hpc3RfbGluZXMgPSBoaXN0X2xpbmVzOw0KPiA+ IC0twqAgaGlzdF9saW5lcyA9IGdydWJfbWFsbG9jIChzaXplb2YgKGdydWJfdWludDMyX3QgKikg KiBuZXdzaXplKTsNCj4gPiAtK8KgIGhpc3RfbGluZXMgPSBncnViX2NhbGxvYyAobmV3c2l6ZSwg c2l6ZW9mIChncnViX3VpbnQzMl90ICopKTsNCj4gPiAtIA0KPiA+IC3CoCDCoC8qIENvcHkgdGhl IG9sZCBsaW5lcyBpbnRvIHRoZSBuZXcgYnVmZmVyLsKgICovDQo+ID4gLcKgIMKgaWYgKG9sZF9o aXN0X2xpbmVzKQ0KPiA+IC1AQCAtMTE0LDcgKzExNCw3IEBAIHN0YXRpYyB2b2lkDQo+ID4gLSBn cnViX2hpc3Rvcnlfc2V0IChpbnQgcG9zLCBncnViX3VpbnQzMl90ICpzLCBncnViX3NpemVfdCBs ZW4pDQo+ID4gLSB7DQo+ID4gLcKgIMKgZ3J1Yl9mcmVlIChoaXN0X2xpbmVzW3Bvc10pOw0KPiA+ IC0twqAgaGlzdF9saW5lc1twb3NdID0gZ3J1Yl9tYWxsb2MgKChsZW4gKyAxKSAqIHNpemVvZg0K PiA+IChncnViX3VpbnQzMl90KSk7DQo+ID4gLSvCoCBoaXN0X2xpbmVzW3Bvc10gPSBncnViX2Nh bGxvYyAobGVuICsgMSwgc2l6ZW9mIChncnViX3VpbnQzMl90KSk7DQo+ID4gLcKgIMKgaWYgKCFo aXN0X2xpbmVzW3Bvc10pDQo+ID4gLcKgIMKgIMKgew0KPiA+IC3CoCDCoCDCoCDCoGdydWJfcHJp bnRfZXJyb3IgKCk7DQo+ID4gLUBAIC0zNDksNyArMzQ5LDcgQEAgZ3J1Yl9jbWRsaW5lX2dldCAo Y29uc3QgY2hhciAqcHJvbXB0X3RyYW5zbGF0ZWQpDQo+ID4gLcKgIMKgY2hhciAqcmV0Ow0KPiA+ IC3CoCDCoHVuc2lnbmVkIG50ZXJtczsNCj4gPiAtIA0KPiA+IC0twqAgYnVmID0gZ3J1Yl9tYWxs b2MgKG1heF9sZW4gKiBzaXplb2YgKGdydWJfdWludDMyX3QpKTsNCj4gPiAtK8KgIGJ1ZiA9IGdy dWJfY2FsbG9jIChtYXhfbGVuLCBzaXplb2YgKGdydWJfdWludDMyX3QpKTsNCj4gPiAtwqAgwqBp ZiAoIWJ1ZikNCj4gPiAtwqAgwqAgwqByZXR1cm4gMDsNCj4gPiAtIA0KPiA+IC1AQCAtMzc3LDcg KzM3Nyw3IEBAIGdydWJfY21kbGluZV9nZXQgKGNvbnN0IGNoYXIgKnByb21wdF90cmFuc2xhdGVk KQ0KPiA+IC3CoCDCoCDCoEZPUl9BQ1RJVkVfVEVSTV9PVVRQVVRTKGN1cikNCj4gPiAtwqAgwqAg wqAgwqBudGVybXMrKzsNCj4gPiAtIA0KPiA+IC0twqAgwqAgY2xfdGVybXMgPSBncnViX21hbGxv YyAoc2l6ZW9mIChjbF90ZXJtc1swXSkgKiBudGVybXMpOw0KPiA+IC0rwqAgwqAgY2xfdGVybXMg PSBncnViX2NhbGxvYyAobnRlcm1zLCBzaXplb2YgKGNsX3Rlcm1zWzBdKSk7DQo+ID4gLcKgIMKg IMKgaWYgKCFjbF90ZXJtcykNCj4gPiAtwqAgwqAgwqAgwqB7DQo+ID4gLcKgIMKgIMKgIMKgZ3J1 Yl9mcmVlIChidWYpOw0KPiA+IC1AQCAtMzg1LDcgKzM4NSw3IEBAIGdydWJfY21kbGluZV9nZXQg KGNvbnN0IGNoYXIgKnByb21wdF90cmFuc2xhdGVkKQ0KPiA+IC3CoCDCoCDCoCDCoH0NCj4gPiAt wqAgwqAgwqBjbF90ZXJtX2N1ciA9IGNsX3Rlcm1zOw0KPiA+IC0gDQo+ID4gLS3CoCDCoCB1bmlj b2RlX21zZyA9IGdydWJfbWFsbG9jIChtc2dfbGVuICogc2l6ZW9mIChncnViX3VpbnQzMl90KSk7 DQo+ID4gLSvCoCDCoCB1bmljb2RlX21zZyA9IGdydWJfY2FsbG9jIChtc2dfbGVuLCBzaXplb2Yg KGdydWJfdWludDMyX3QpKTsNCj4gPiAtwqAgwqAgwqBpZiAoIXVuaWNvZGVfbXNnKQ0KPiA+IC3C oCDCoCDCoCDCoHsNCj4gPiAtwqAgwqAgwqAgwqBncnViX2ZyZWUgKGJ1Zik7DQo+ID4gLUBAIC00 OTUsNyArNDk1LDcgQEAgZ3J1Yl9jbWRsaW5lX2dldCAoY29uc3QgY2hhciAqcHJvbXB0X3RyYW5z bGF0ZWQpDQo+ID4gLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgZ3J1Yl91aW50MzJfdCAqaW5zZXJ0 Ow0KPiA+IC0gDQo+ID4gLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgaW5zZXJ0bGVuID0gZ3J1Yl9z dHJsZW4gKGluc2VydHU4KTsNCj4gPiAtLcKgIMKgIMKgIMKgIMKgIMKgIMKgIGluc2VydCA9IGdy dWJfbWFsbG9jICgoaW5zZXJ0bGVuICsgMSkgKiBzaXplb2YNCj4gPiAoZ3J1Yl91aW50MzJfdCkp Ow0KPiA+IC0rwqAgwqAgwqAgwqAgwqAgwqAgwqAgaW5zZXJ0ID0gZ3J1Yl9jYWxsb2MgKGluc2Vy dGxlbiArIDEsIHNpemVvZg0KPiA+IChncnViX3VpbnQzMl90KSk7DQo+ID4gLcKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgaWYgKCFpbnNlcnQpDQo+ID4gLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg ew0KPiA+IC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGdydWJfZnJlZSAoaW5zZXJ0dTgp Ow0KPiA+IC1AQCAtNjAyLDcgKzYwMiw3IEBAIGdydWJfY21kbGluZV9nZXQgKGNvbnN0IGNoYXIg KnByb21wdF90cmFuc2xhdGVkKQ0KPiA+IC0gDQo+ID4gLcKgIMKgIMKgIMKgIMKgIMKgIMKgZ3J1 Yl9mcmVlIChraWxsX2J1Zik7DQo+ID4gLSANCj4gPiAtLcKgIMKgIMKgIMKgIMKgIMKgIGtpbGxf YnVmID0gZ3J1Yl9tYWxsb2MgKChuICsgMSkgKg0KPiA+IHNpemVvZihncnViX3VpbnQzMl90KSk7 DQo+ID4gLSvCoCDCoCDCoCDCoCDCoCDCoCBraWxsX2J1ZiA9IGdydWJfY2FsbG9jIChuICsgMSwg c2l6ZW9mIChncnViX3VpbnQzMl90KSk7DQo+ID4gLcKgIMKgIMKgIMKgIMKgIMKgIMKgaWYgKGdy dWJfZXJybm8pDQo+ID4gLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgew0KPiA+IC3CoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoGdydWJfcHJpbnRfZXJyb3IgKCk7DQo+ID4gLWRpZmYgLS1naXQgYS9n cnViLWNvcmUvbm9ybWFsL21lbnVfZW50cnkuYyBiL2dydWItDQo+ID4gY29yZS9ub3JtYWwvbWVu dV9lbnRyeS5jDQo+ID4gLWluZGV4IGNkZjM1OTAuLjE5OTM5OTUgMTAwNjQ0DQo+ID4gLS0tLSBh L2dydWItY29yZS9ub3JtYWwvbWVudV9lbnRyeS5jDQo+ID4gLSsrKyBiL2dydWItY29yZS9ub3Jt YWwvbWVudV9lbnRyeS5jDQo+ID4gLUBAIC05NSw4ICs5NSw4IEBAIGluaXRfbGluZSAoc3RydWN0 IHNjcmVlbiAqc2NyZWVuLCBzdHJ1Y3QgbGluZQ0KPiA+ICpsaW5lcCkNCj4gPiAtIHsNCj4gPiAt wqAgwqBsaW5lcC0+bGVuID0gMDsNCj4gPiAtwqAgwqBsaW5lcC0+bWF4X2xlbiA9IDgwOw0KPiA+ IC0twqAgbGluZXAtPmJ1ZiA9IGdydWJfbWFsbG9jICgobGluZXAtPm1heF9sZW4gKyAxKSAqIHNp emVvZiAobGluZXAtDQo+ID4gPiBidWZbMF0pKTsNCj4gPiAtLcKgIGxpbmVwLT5wb3MgPSBncnVi X3phbGxvYyAoc2NyZWVuLT5udGVybXMgKiBzaXplb2YgKGxpbmVwLQ0KPiA+ID4gcG9zWzBdKSk7 DQo+ID4gLSvCoCBsaW5lcC0+YnVmID0gZ3J1Yl9jYWxsb2MgKGxpbmVwLT5tYXhfbGVuICsgMSwg c2l6ZW9mIChsaW5lcC0NCj4gPiA+IGJ1ZlswXSkpOw0KPiA+IC0rwqAgbGluZXAtPnBvcyA9IGdy dWJfY2FsbG9jIChzY3JlZW4tPm50ZXJtcywgc2l6ZW9mIChsaW5lcC0NCj4gPiA+IHBvc1swXSkp Ow0KPiA+IC3CoCDCoGlmICghIGxpbmVwLT5idWYgfHwgIWxpbmVwLT5wb3MpDQo+ID4gLcKgIMKg IMKgew0KPiA+IC3CoCDCoCDCoCDCoGdydWJfZnJlZSAobGluZXAtPmJ1Zik7DQo+ID4gLUBAIC0y ODcsNyArMjg3LDcgQEAgdXBkYXRlX3NjcmVlbiAoc3RydWN0IHNjcmVlbiAqc2NyZWVuLCBzdHJ1 Y3QNCj4gPiBwZXJfdGVybV9zY3JlZW4gKnRlcm1fc2NyZWVuLA0KPiA+IC3CoCDCoCDCoCDCoCDC oHBvcyA9IGxpbmVwLT5wb3MgKyAodGVybV9zY3JlZW4gLSBzY3JlZW4tPnRlcm1zKTsNCj4gPiAt IA0KPiA+IC3CoCDCoCDCoCDCoCDCoGlmICghKnBvcykNCj4gPiAtLcKgIMKgIMKgIMKgIMKgICpw b3MgPSBncnViX3phbGxvYyAoKGxpbmVwLT5sZW4gKyAxKSAqIHNpemVvZiAoKipwb3MpKTsNCj4g PiAtK8KgIMKgIMKgIMKgIMKgICpwb3MgPSBncnViX2NhbGxvYyAobGluZXAtPmxlbiArIDEsIHNp emVvZiAoKipwb3MpKTsNCj4gPiAtIA0KPiA+IC3CoCDCoCDCoCDCoCDCoGlmIChpID09IHJlZ2lv bl9zdGFydCB8fCBsaW5lcCA9PSBzY3JlZW4tPmxpbmVzICsgc2NyZWVuLQ0KPiA+ID4gbGluZQ0K PiA+IC3CoCDCoCDCoCDCoCDCoCDCoCDCoHx8IChpID4gcmVnaW9uX3N0YXJ0ICYmIG1vZGUgPT0g QUxMX0xJTkVTKSkNCj4gPiAtQEAgLTQ3MSw3ICs0NzEsNyBAQCBpbnNlcnRfc3RyaW5nIChzdHJ1 Y3Qgc2NyZWVuICpzY3JlZW4sIGNvbnN0IGNoYXINCj4gPiAqcywgaW50IHVwZGF0ZSkNCj4gPiAt IA0KPiA+IC3CoCDCoCDCoCDCoCDCoC8qIEluc2VydCB0aGUgc3RyaW5nLsKgICovDQo+ID4gLcKg IMKgIMKgIMKgIMKgY3VycmVudF9saW5lcCA9IHNjcmVlbi0+bGluZXMgKyBzY3JlZW4tPmxpbmU7 DQo+ID4gLS3CoCDCoCDCoCDCoCB1bmljb2RlX21zZyA9IGdydWJfbWFsbG9jICgocCAtIHMpICog c2l6ZW9mDQo+ID4gKGdydWJfdWludDMyX3QpKTsNCj4gPiAtK8KgIMKgIMKgIMKgIHVuaWNvZGVf bXNnID0gZ3J1Yl9jYWxsb2MgKHAgLSBzLCBzaXplb2YgKGdydWJfdWludDMyX3QpKTsNCj4gPiAt IA0KPiA+IC3CoCDCoCDCoCDCoCDCoGlmICghdW5pY29kZV9tc2cpDQo+ID4gLcKgIMKgIMKgIMKg IMKgIMKgcmV0dXJuIDA7DQo+ID4gLUBAIC0xMDIzLDcgKzEwMjMsNyBAQCBjb21wbGV0ZSAoc3Ry dWN0IHNjcmVlbiAqc2NyZWVuLCBpbnQNCj4gPiBjb250aW51b3VzLCBpbnQgdXBkYXRlKQ0KPiA+ IC3CoCDCoGlmIChjb21wbGV0aW9uX2J1ZmZlci5idWYpDQo+ID4gLcKgIMKgIMKgew0KPiA+IC3C oCDCoCDCoCDCoGJ1ZmxlbiA9IGdydWJfc3RybGVuIChjb21wbGV0aW9uX2J1ZmZlci5idWYpOw0K PiA+IC0twqAgwqAgwqAgdWNzNCA9IGdydWJfbWFsbG9jIChzaXplb2YgKGdydWJfdWludDMyX3Qp ICogKGJ1ZmxlbiArIDEpKTsNCj4gPiAtK8KgIMKgIMKgIHVjczQgPSBncnViX2NhbGxvYyAoYnVm bGVuICsgMSwgc2l6ZW9mIChncnViX3VpbnQzMl90KSk7DQo+ID4gLcKgIMKgIMKgIMKgDQo+ID4g LcKgIMKgIMKgIMKgaWYgKCF1Y3M0KQ0KPiA+IC3CoCDCoCDCoCDCoHsNCj4gPiAtQEAgLTEyNjgs NyArMTI2OCw3IEBAIGdydWJfbWVudV9lbnRyeV9ydW4gKGdydWJfbWVudV9lbnRyeV90IGVudHJ5 KQ0KPiA+IC3CoCDCoGZvciAoaSA9IDA7IGkgPCAodW5zaWduZWQpIHNjcmVlbi0+bnVtX2xpbmVz OyBpKyspDQo+ID4gLcKgIMKgIMKgew0KPiA+IC3CoCDCoCDCoCDCoGdydWJfZnJlZSAoc2NyZWVu LT5saW5lc1tpXS5wb3MpOw0KPiA+IC0twqAgwqAgwqAgc2NyZWVuLT5saW5lc1tpXS5wb3MgPSBn cnViX3phbGxvYyAoc2NyZWVuLT5udGVybXMgKiBzaXplb2YNCj4gPiAoc2NyZWVuLT5saW5lc1tp XS5wb3NbMF0pKTsNCj4gPiAtK8KgIMKgIMKgIHNjcmVlbi0+bGluZXNbaV0ucG9zID0gZ3J1Yl9j YWxsb2MgKHNjcmVlbi0+bnRlcm1zLCBzaXplb2YNCj4gPiAoc2NyZWVuLT5saW5lc1tpXS5wb3Nb MF0pKTsNCj4gPiAtwqAgwqAgwqAgwqBpZiAoISBzY3JlZW4tPmxpbmVzW2ldLnBvcykNCj4gPiAt wqAgwqAgwqAgwqB7DQo+ID4gLcKgIMKgIMKgIMKgIMKgZ3J1Yl9wcmludF9lcnJvciAoKTsNCj4g PiAtQEAgLTEyNzgsNyArMTI3OCw3IEBAIGdydWJfbWVudV9lbnRyeV9ydW4gKGdydWJfbWVudV9l bnRyeV90IGVudHJ5KQ0KPiA+IC3CoCDCoCDCoCDCoH0NCj4gPiAtwqAgwqAgwqB9DQo+ID4gLSAN Cj4gPiAtLcKgIHNjcmVlbi0+dGVybXMgPSBncnViX3phbGxvYyAoc2NyZWVuLT5udGVybXMgKiBz aXplb2YgKHNjcmVlbi0NCj4gPiA+IHRlcm1zWzBdKSk7DQo+ID4gLSvCoCBzY3JlZW4tPnRlcm1z ID0gZ3J1Yl9jYWxsb2MgKHNjcmVlbi0+bnRlcm1zLCBzaXplb2YgKHNjcmVlbi0NCj4gPiA+IHRl cm1zWzBdKSk7DQo+ID4gLcKgIMKgaWYgKCFzY3JlZW4tPnRlcm1zKQ0KPiA+IC3CoCDCoCDCoHsN Cj4gPiAtwqAgwqAgwqAgwqBncnViX3ByaW50X2Vycm9yICgpOw0KPiA+IC1kaWZmIC0tZ2l0IGEv Z3J1Yi1jb3JlL25vcm1hbC9tZW51X3RleHQuYyBiL2dydWItDQo+ID4gY29yZS9ub3JtYWwvbWVu dV90ZXh0LmMNCj4gPiAtaW5kZXggZTIyYmI5MS4uMTgyNDBlNyAxMDA2NDQNCj4gPiAtLS0tIGEv Z3J1Yi1jb3JlL25vcm1hbC9tZW51X3RleHQuYw0KPiA+IC0rKysgYi9ncnViLWNvcmUvbm9ybWFs L21lbnVfdGV4dC5jDQo+ID4gLUBAIC03OCw3ICs3OCw3IEBAIGdydWJfcHJpbnRfbWVzc2FnZV9p bmRlbnRlZF9yZWFsIChjb25zdCBjaGFyICptc2csDQo+ID4gaW50IG1hcmdpbl9sZWZ0LA0KPiA+ IC3CoCDCoGdydWJfc2l6ZV90IG1zZ19sZW4gPSBncnViX3N0cmxlbiAobXNnKSArIDI7DQo+ID4g LcKgIMKgaW50IHJldCA9IDA7DQo+ID4gLSANCj4gPiAtLcKgIHVuaWNvZGVfbXNnID0gZ3J1Yl9t YWxsb2MgKG1zZ19sZW4gKiBzaXplb2YgKGdydWJfdWludDMyX3QpKTsNCj4gPiAtK8KgIHVuaWNv ZGVfbXNnID0gZ3J1Yl9jYWxsb2MgKG1zZ19sZW4sIHNpemVvZiAoZ3J1Yl91aW50MzJfdCkpOw0K PiA+IC3CoCANCj4gPiAtwqAgwqBpZiAoIXVuaWNvZGVfbXNnKQ0KPiA+IC3CoCDCoCDCoHJldHVy biAwOw0KPiA+IC1AQCAtMjExLDcgKzIxMSw3IEBAIHByaW50X2VudHJ5IChpbnQgeSwgaW50IGhp Z2hsaWdodCwNCj4gPiBncnViX21lbnVfZW50cnlfdCBlbnRyeSwNCj4gPiAtIA0KPiA+IC3CoCDC oHRpdGxlID0gZW50cnkgPyBlbnRyeS0+dGl0bGUgOiAiIjsNCj4gPiAtwqAgwqB0aXRsZV9sZW4g PSBncnViX3N0cmxlbiAodGl0bGUpOw0KPiA+IC0twqAgdW5pY29kZV90aXRsZSA9IGdydWJfbWFs bG9jICh0aXRsZV9sZW4gKiBzaXplb2YNCj4gPiAoKnVuaWNvZGVfdGl0bGUpKTsNCj4gPiAtK8Kg IHVuaWNvZGVfdGl0bGUgPSBncnViX2NhbGxvYyAodGl0bGVfbGVuLCBzaXplb2YgKCp1bmljb2Rl X3RpdGxlKSk7DQo+ID4gLcKgIMKgaWYgKCEgdW5pY29kZV90aXRsZSkNCj4gPiAtwqAgwqAgwqAv KiBYWFggSG93IHRvIHNob3cgdGhpcyBlcnJvcj/CoCAqLw0KPiA+IC3CoCDCoCDCoHJldHVybjsN Cj4gPiAtZGlmZiAtLWdpdCBhL2dydWItY29yZS9ub3JtYWwvdGVybS5jIGIvZ3J1Yi1jb3JlL25v cm1hbC90ZXJtLmMNCj4gPiAtaW5kZXggYTFlNWM1YS4uY2M4YzE3MyAxMDA2NDQNCj4gPiAtLS0t IGEvZ3J1Yi1jb3JlL25vcm1hbC90ZXJtLmMNCj4gPiAtKysrIGIvZ3J1Yi1jb3JlL25vcm1hbC90 ZXJtLmMNCj4gPiAtQEAgLTI2NCw3ICsyNjQsNyBAQCBncnViX3Rlcm1fc2F2ZV9wb3MgKHZvaWQp DQo+ID4gLcKgIMKgRk9SX0FDVElWRV9URVJNX09VVFBVVFMoY3VyKQ0KPiA+IC3CoCDCoCDCoGNu dCsrOw0KPiA+IC0gDQo+ID4gLS3CoCByZXQgPSBncnViX21hbGxvYyAoY250ICogc2l6ZW9mIChy ZXRbMF0pKTsNCj4gPiAtK8KgIHJldCA9IGdydWJfY2FsbG9jIChjbnQsIHNpemVvZiAocmV0WzBd KSk7DQo+ID4gLcKgIMKgaWYgKCFyZXQpDQo+ID4gLcKgIMKgIMKgcmV0dXJuIE5VTEw7DQo+ID4g LSANCj4gPiAtQEAgLTEwMTMsNyArMTAxMyw3IEBAIGdydWJfeG5wdXRzIChjb25zdCBjaGFyICpz dHIsIGdydWJfc2l6ZV90DQo+ID4gbXNnX2xlbikNCj4gPiAtIA0KPiA+IC3CoCDCoGdydWJfZXJy b3JfcHVzaCAoKTsNCj4gPiAtIA0KPiA+IC0twqAgdW5pY29kZV9zdHIgPSBncnViX21hbGxvYyAo bXNnX2xlbiAqIHNpemVvZiAoZ3J1Yl91aW50MzJfdCkpOw0KPiA+IC0rwqAgdW5pY29kZV9zdHIg PSBncnViX2NhbGxvYyAobXNnX2xlbiwgc2l6ZW9mIChncnViX3VpbnQzMl90KSk7DQo+ID4gLcKg IA0KPiA+IC3CoCDCoGdydWJfZXJyb3JfcG9wICgpOw0KPiA+IC0gDQo+ID4gLWRpZmYgLS1naXQg YS9ncnViLWNvcmUvb3NkZXAvbGludXgvZ2V0cm9vdC5jIGIvZ3J1Yi0NCj4gPiBjb3JlL29zZGVw L2xpbnV4L2dldHJvb3QuYw0KPiA+IC1pbmRleCA5MGQ5MmQzLi41YjQxYWQwIDEwMDY0NA0KPiA+ IC0tLS0gYS9ncnViLWNvcmUvb3NkZXAvbGludXgvZ2V0cm9vdC5jDQo+ID4gLSsrKyBiL2dydWIt Y29yZS9vc2RlcC9saW51eC9nZXRyb290LmMNCj4gPiAtQEAgLTE2OCw3ICsxNjgsNyBAQCBncnVi X3V0aWxfcmFpZF9nZXRtZW1iZXJzIChjb25zdCBjaGFyICpuYW1lLCBpbnQNCj4gPiBib290YWJs ZSkNCj4gPiAtwqAgwqBpZiAocmV0ICE9IDApDQo+ID4gLcKgIMKgIMKgZ3J1Yl91dGlsX2Vycm9y IChfKCJpb2N0bCBHRVRfQVJSQVlfSU5GTyBlcnJvcjogJXMiKSwgc3RyZXJyb3INCj4gPiAoZXJy bm8pKTsNCj4gPiAtIA0KPiA+IC0twqAgZGV2aWNlbGlzdCA9IHhtYWxsb2MgKChpbmZvLm5yX2Rp c2tzICsgMSkgKiBzaXplb2YgKGNoYXIgKikpOw0KPiA+IC0rwqAgZGV2aWNlbGlzdCA9IHhjYWxs b2MgKGluZm8ubnJfZGlza3MgKyAxLCBzaXplb2YgKGNoYXIgKikpOw0KPiA+IC0gDQo+ID4gLcKg IMKgZm9yIChpID0gMCwgaiA9IDA7IGogPCBpbmZvLm5yX2Rpc2tzOyBpKyspDQo+ID4gLcKgIMKg IMKgew0KPiA+IC1AQCAtMjQxLDcgKzI0MSw3IEBAIGdydWJfZmluZF9yb290X2RldmljZXNfZnJv bV9idHJmcyAoY29uc3QgY2hhcg0KPiA+ICpkaXIpDQo+ID4gLcKgIMKgIMKgIMKgcmV0dXJuIE5V TEw7DQo+ID4gLcKgIMKgIMKgfQ0KPiA+IC0gDQo+ID4gLS3CoCByZXQgPSB4bWFsbG9jICgoZnNp Lm51bV9kZXZpY2VzICsgMSkgKiBzaXplb2YgKHJldFswXSkpOw0KPiA+IC0rwqAgcmV0ID0geGNh bGxvYyAoZnNpLm51bV9kZXZpY2VzICsgMSwgc2l6ZW9mIChyZXRbMF0pKTsNCj4gPiAtIA0KPiA+ IC3CoCDCoGZvciAoaSA9IDE7IGkgPD0gZnNpLm1heF9pZCAmJiBqIDwgZnNpLm51bV9kZXZpY2Vz OyBpKyspDQo+ID4gLcKgIMKgIMKgew0KPiA+IC1AQCAtMzk2LDcgKzM5Niw3IEBAIGdydWJfZmlu ZF9yb290X2RldmljZXNfZnJvbV9tb3VudGluZm8gKGNvbnN0DQo+ID4gY2hhciAqZGlyLCBjaGFy ICoqcmVscm9vdCkNCj4gPiAtwqAgwqBpZiAocmVscm9vdCkNCj4gPiAtwqAgwqAgwqAqcmVscm9v dCA9IE5VTEw7DQo+ID4gLSANCj4gPiAtLcKgIGVudHJpZXMgPSB4bWFsbG9jIChlbnRyeV9tYXgg KiBzaXplb2YgKCplbnRyaWVzKSk7DQo+ID4gLSvCoCBlbnRyaWVzID0geGNhbGxvYyAoZW50cnlf bWF4LCBzaXplb2YgKCplbnRyaWVzKSk7DQo+ID4gLSANCj4gPiAtIGFnYWluOg0KPiA+IC3CoCDC oGZwID0gZ3J1Yl91dGlsX2ZvcGVuICgiL3Byb2Mvc2VsZi9tb3VudGluZm8iLCAiciIpOw0KPiA+ IC1kaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL29zZGVwL3VuaXgvY29uZmlnLmMgYi9ncnViLQ0KPiA+ IGNvcmUvb3NkZXAvdW5peC9jb25maWcuYw0KPiA+IC1pbmRleCA2NWVmZmE5Li43ZDYzMjUxIDEw MDY0NA0KPiA+IC0tLS0gYS9ncnViLWNvcmUvb3NkZXAvdW5peC9jb25maWcuYw0KPiA+IC0rKysg Yi9ncnViLWNvcmUvb3NkZXAvdW5peC9jb25maWcuYw0KPiA+IC1AQCAtODksNyArODksNyBAQCBn cnViX3V0aWxfbG9hZF9jb25maWcgKHN0cnVjdCBncnViX3V0aWxfY29uZmlnDQo+ID4gKmNmZykN Cj4gPiAtwqAgwqBhcmd2WzBdID0gInNoIjsNCj4gPiAtwqAgwqBhcmd2WzFdID0gIi1jIjsNCj4g PiAtIA0KPiA+IC0twqAgc2NyaXB0ID0geG1hbGxvYyAoNCAqIHN0cmxlbiAoY2ZnZmlsZSkgKyAz MDApOw0KPiA+IC0rwqAgc2NyaXB0ID0geGNhbGxvYyAoNCwgc3RybGVuIChjZmdmaWxlKSArIDMw MCk7DQo+ID4gLSANCj4gPiAtwqAgwqBwdHIgPSBzY3JpcHQ7DQo+ID4gLcKgIMKgbWVtY3B5IChw dHIsICIuICciLCAzKTsNCj4gPiAtZGlmZiAtLWdpdCBhL2dydWItY29yZS9vc2RlcC93aW5kb3dz L2dldHJvb3QuYyBiL2dydWItDQo+ID4gY29yZS9vc2RlcC93aW5kb3dzL2dldHJvb3QuYw0KPiA+ IC1pbmRleCA2NjFkOTU0Li5lYWRhNjYzIDEwMDY0NA0KPiA+IC0tLS0gYS9ncnViLWNvcmUvb3Nk ZXAvd2luZG93cy9nZXRyb290LmMNCj4gPiAtKysrIGIvZ3J1Yi1jb3JlL29zZGVwL3dpbmRvd3Mv Z2V0cm9vdC5jDQo+ID4gLUBAIC01OSw3ICs1OSw3IEBAIGdydWJfZ2V0X21vdW50X3BvaW50IChj b25zdCBUQ0hBUiAqcGF0aCkNCj4gPiAtIA0KPiA+IC3CoCDCoGZvciAocHRyID0gcGF0aDsgKnB0 cjsgcHRyKyspOw0KPiA+IC3CoCDCoGFsbG9jc2l6ZSA9IChwdHIgLSBwYXRoICsgMTApICogMjsN Cj4gPiAtLcKgIG91dCA9IHhtYWxsb2MgKGFsbG9jc2l6ZSAqIHNpemVvZiAob3V0WzBdKSk7DQo+ ID4gLSvCoCBvdXQgPSB4Y2FsbG9jIChhbGxvY3NpemUsIHNpemVvZiAob3V0WzBdKSk7DQo+ID4g LSANCj4gPiAtwqAgwqAvKiBXaGVuIHBvaW50aW5nIHRvIEVGSSBzeXN0ZW0gcGFydGl0aW9uIEdl dFZvbHVtZVBhdGhOYW1lIGZhaWxzDQo+ID4gLcKgIMKgIMKgIGZvciBFU1Agcm9vdCBhbmQgcmV0 dXJucyBhYmJlcmFudCBpbmZvcm1hdGlvbiBmb3IgZXZlcnl0aGluZw0KPiA+IC1kaWZmIC0tZ2l0 IGEvZ3J1Yi1jb3JlL29zZGVwL3dpbmRvd3MvaG9zdGRpc2suYyBiL2dydWItDQo+ID4gY29yZS9v c2RlcC93aW5kb3dzL2hvc3RkaXNrLmMNCj4gPiAtaW5kZXggMzU1MTAwNy4uMGJlMzI3MyAxMDA2 NDQNCj4gPiAtLS0tIGEvZ3J1Yi1jb3JlL29zZGVwL3dpbmRvd3MvaG9zdGRpc2suYw0KPiA+IC0r KysgYi9ncnViLWNvcmUvb3NkZXAvd2luZG93cy9ob3N0ZGlzay5jDQo+ID4gLUBAIC0xMTEsNyAr MTExLDcgQEAgZ3J1Yl91dGlsX2dldF93aW5kb3dzX3BhdGhfcmVhbCAoY29uc3QgY2hhcg0KPiA+ ICpwYXRoKQ0KPiA+IC0gDQo+ID4gLcKgIMKgd2hpbGUgKDEpDQo+ID4gLcKgIMKgIMKgew0KPiA+ IC0twqAgwqAgwqAgZnBhID0geG1hbGxvYyAoYWxsb2MgKiBzaXplb2YgKGZwYVswXSkpOw0KPiA+ IC0rwqAgwqAgwqAgZnBhID0geGNhbGxvYyAoYWxsb2MsIHNpemVvZiAoZnBhWzBdKSk7DQo+ID4g LSANCj4gPiAtwqAgwqAgwqAgwqBsZW4gPSBHZXRGdWxsUGF0aE5hbWUgKHRwYXRoLCBhbGxvYywg ZnBhLCBOVUxMKTsNCj4gPiAtwqAgwqAgwqAgwqBpZiAobGVuID49IGFsbG9jKQ0KPiA+IC1AQCAt Mzk5LDcgKzM5OSw3IEBAIGdydWJfdXRpbF9mZF9vcGVuZGlyIChjb25zdCBjaGFyICpuYW1lKQ0K PiA+IC3CoCDCoGZvciAobCA9IDA7IG5hbWVfd2luZG93c1tsXTsgbCsrKTsNCj4gPiAtwqAgwqBm b3IgKGwtLTsgbCA+PSAwICYmIChuYW1lX3dpbmRvd3NbbF0gPT0gJ1xcJyB8fCBuYW1lX3dpbmRv d3NbbF0NCj4gPiA9PSAnLycpOyBsLS0pOw0KPiA+IC3CoCDCoGwrKzsNCj4gPiAtLcKgIHBhdHRl cm4gPSB4bWFsbG9jICgobCArIDMpICogc2l6ZW9mIChwYXR0ZXJuWzBdKSk7DQo+ID4gLSvCoCBw YXR0ZXJuID0geGNhbGxvYyAobCArIDMsIHNpemVvZiAocGF0dGVyblswXSkpOw0KPiA+IC3CoCDC oG1lbWNweSAocGF0dGVybiwgbmFtZV93aW5kb3dzLCBsICogc2l6ZW9mIChwYXR0ZXJuWzBdKSk7 DQo+ID4gLcKgIMKgcGF0dGVybltsXSA9ICdcXCc7DQo+ID4gLcKgIMKgcGF0dGVybltsICsgMV0g PSAnKic7DQo+ID4gLWRpZmYgLS1naXQgYS9ncnViLWNvcmUvb3NkZXAvd2luZG93cy9pbml0LmMg Yi9ncnViLQ0KPiA+IGNvcmUvb3NkZXAvd2luZG93cy9pbml0LmMNCj4gPiAtaW5kZXggZThmZmQ2 Mi4uNjI5N2RlNiAxMDA2NDQNCj4gPiAtLS0tIGEvZ3J1Yi1jb3JlL29zZGVwL3dpbmRvd3MvaW5p dC5jDQo+ID4gLSsrKyBiL2dydWItY29yZS9vc2RlcC93aW5kb3dzL2luaXQuYw0KPiA+IC1AQCAt MTYxLDcgKzE2MSw3IEBAIGdydWJfdXRpbF9ob3N0X2luaXQgKGludCAqYXJnYyBfX2F0dHJpYnV0 ZV9fDQo+ID4gKCh1bnVzZWQpKSwNCj4gPiAtwqAgwqBMUFdTVFIgKnRhcmd2Ow0KPiA+IC0gDQo+ ID4gLcKgIMKgdGFyZ3YgPSBDb21tYW5kTGluZVRvQXJndlcgKHRjbWRsaW5lLCBhcmdjKTsNCj4g PiAtLcKgICphcmd2ID0geG1hbGxvYyAoKCphcmdjICsgMSkgKiBzaXplb2YgKGFyZ3ZbMF0pKTsN Cj4gPiAtK8KgICphcmd2ID0geGNhbGxvYyAoKmFyZ2MgKyAxLCBzaXplb2YgKGFyZ3ZbMF0pKTsN Cj4gPiAtIA0KPiA+IC3CoCDCoGZvciAoaSA9IDA7IGkgPCAqYXJnYzsgaSsrKQ0KPiA+IC3CoCDC oCDCoCgqYXJndilbaV0gPSBncnViX3V0aWxfdGNoYXJfdG9fdXRmOCAodGFyZ3ZbaV0pOyANCj4g PiAtZGlmZiAtLWdpdCBhL2dydWItY29yZS9vc2RlcC93aW5kb3dzL3BsYXRmb3JtLmMgYi9ncnVi LQ0KPiA+IGNvcmUvb3NkZXAvd2luZG93cy9wbGF0Zm9ybS5jDQo+ID4gLWluZGV4IDdlYjUzZmUu LjFlZjg2YmYgMTAwNjQ0DQo+ID4gLS0tLSBhL2dydWItY29yZS9vc2RlcC93aW5kb3dzL3BsYXRm b3JtLmMNCj4gPiAtKysrIGIvZ3J1Yi1jb3JlL29zZGVwL3dpbmRvd3MvcGxhdGZvcm0uYw0KPiA+ IC1AQCAtMjI1LDggKzIyNSw4IEBAIGdydWJfaW5zdGFsbF9yZWdpc3Rlcl9lZmkgKGdydWJfZGV2 aWNlX3QNCj4gPiBlZmlkaXJfZ3J1Yl9kZXYsDQo+ID4gLcKgIMKgIMKgZ3J1Yl91dGlsX2Vycm9y ICgiJXMiLCBfKCJubyBFRkkgcm91dGluZXMgYXJlIGF2YWlsYWJsZSB3aGVuDQo+ID4gcnVubmlu ZyBpbiBCSU9TIG1vZGUiKSk7DQo+ID4gLSANCj4gPiAtwqAgwqBkaXN0cmliOF9sZW4gPSBncnVi X3N0cmxlbiAoZWZpX2Rpc3RyaWJ1dG9yKTsNCj4gPiAtLcKgIGRpc3RyaWJ1dG9yMTYgPSB4bWFs bG9jICgoZGlzdHJpYjhfbGVuICsgMSkgKg0KPiA+IEdSVUJfTUFYX1VURjE2X1BFUl9VVEY4DQo+ ID4gLS3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCogc2l6ZW9mIChncnVi X3VpbnQxNl90KSk7DQo+ID4gLSvCoCBkaXN0cmlidXRvcjE2ID0geGNhbGxvYyAoZGlzdHJpYjhf bGVuICsgMSwNCj4gPiAtK8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgR1JV Ql9NQVhfVVRGMTZfUEVSX1VURjggKiBzaXplb2YNCj4gPiAoZ3J1Yl91aW50MTZfdCkpOw0KPiA+ IC3CoCDCoGRpc3RyaWIxNl9sZW4gPSBncnViX3V0ZjhfdG9fdXRmMTYgKGRpc3RyaWJ1dG9yMTYs IGRpc3RyaWI4X2xlbiAqDQo+ID4gR1JVQl9NQVhfVVRGMTZfUEVSX1VURjgsDQo+ID4gLcKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgKGNvbnN0 IGdydWJfdWludDhfdCAqKQ0KPiA+IGVmaV9kaXN0cmlidXRvciwNCj4gPiAtwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBkaXN0cmliOF9sZW4s IDApOw0KPiA+IC1kaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL29zZGVwL3dpbmRvd3MvcmVscGF0aC5j IGIvZ3J1Yi0NCj4gPiBjb3JlL29zZGVwL3dpbmRvd3MvcmVscGF0aC5jDQo+ID4gLWluZGV4IGNi MDg2MTcuLjQ3OGU4ZWYgMTAwNjQ0DQo+ID4gLS0tLSBhL2dydWItY29yZS9vc2RlcC93aW5kb3dz L3JlbHBhdGguYw0KPiA+IC0rKysgYi9ncnViLWNvcmUvb3NkZXAvd2luZG93cy9yZWxwYXRoLmMN Cj4gPiAtQEAgLTcyLDcgKzcyLDcgQEAgZ3J1Yl9tYWtlX3N5c3RlbV9wYXRoX3JlbGF0aXZlX3Rv X2l0c19yb290IChjb25zdA0KPiA+IGNoYXIgKnBhdGgpDQo+ID4gLcKgIMKgIMKgIMKgaWYgKGRp cndpbmRvd3NbMF0gJiYgZGlyd2luZG93c1sxXSA9PSAnOicpDQo+ID4gLcKgIMKgIMKgIMKgb2Zm c2V0ID0gMjsNCj4gPiAtwqAgwqAgwqB9DQo+ID4gLS3CoCByZXQgPSB4bWFsbG9jIChzaXplb2Yg KHJldFswXSkgKiAoZmxlbiAtIG9mZnNldCArIDIpKTsNCj4gPiAtK8KgIHJldCA9IHhjYWxsb2Mg KGZsZW4gLSBvZmZzZXQgKyAyLCBzaXplb2YgKHJldFswXSkpOw0KPiA+IC3CoCDCoGlmIChkaXJ3 aW5kb3dzW29mZnNldF0gIT0gJ1xcJw0KPiA+IC3CoCDCoCDCoCDCoCYmIGRpcndpbmRvd3Nbb2Zm c2V0XSAhPSAnLycNCj4gPiAtwqAgwqAgwqAgwqAmJiBkaXJ3aW5kb3dzW29mZnNldF0pDQo+ID4g LWRpZmYgLS1naXQgYS9ncnViLWNvcmUvcGFydG1hcC9ncHQuYyBiL2dydWItY29yZS9wYXJ0bWFw L2dwdC5jDQo+ID4gLWluZGV4IDEwM2Y2NzkuLjcyYTJlMzcgMTAwNjQ0DQo+ID4gLS0tLSBhL2dy dWItY29yZS9wYXJ0bWFwL2dwdC5jDQo+ID4gLSsrKyBiL2dydWItY29yZS9wYXJ0bWFwL2dwdC5j DQo+ID4gLUBAIC0xOTksNyArMTk5LDcgQEAgZ3B0X3BhcnRpdGlvbl9tYXBfZW1iZWQgKHN0cnVj dCBncnViX2Rpc2sgKmRpc2ssDQo+ID4gdW5zaWduZWQgaW50ICpuc2VjdG9ycywNCj4gPiAtwqAg wqAqbnNlY3RvcnMgPSBjdHgubGVuOw0KPiA+IC3CoCDCoGlmICgqbnNlY3RvcnMgPiBtYXhfbnNl Y3RvcnMpDQo+ID4gLcKgIMKgIMKgKm5zZWN0b3JzID0gbWF4X25zZWN0b3JzOw0KPiA+IC0twqAg KnNlY3RvcnMgPSBncnViX21hbGxvYyAoKm5zZWN0b3JzICogc2l6ZW9mICgqKnNlY3RvcnMpKTsN Cj4gPiAtK8KgICpzZWN0b3JzID0gZ3J1Yl9jYWxsb2MgKCpuc2VjdG9ycywgc2l6ZW9mICgqKnNl Y3RvcnMpKTsNCj4gPiAtwqAgwqBpZiAoISpzZWN0b3JzKQ0KPiA+IC3CoCDCoCDCoHJldHVybiBn cnViX2Vycm5vOw0KPiA+IC3CoCDCoGZvciAoaSA9IDA7IGkgPCAqbnNlY3RvcnM7IGkrKykNCj4g PiAtZGlmZiAtLWdpdCBhL2dydWItY29yZS9wYXJ0bWFwL21zZG9zLmMgYi9ncnViLWNvcmUvcGFy dG1hcC9tc2Rvcy5jDQo+ID4gLWluZGV4IDdiOGU0NTAuLmVlM2YyNDkgMTAwNjQ0DQo+ID4gLS0t LSBhL2dydWItY29yZS9wYXJ0bWFwL21zZG9zLmMNCj4gPiAtKysrIGIvZ3J1Yi1jb3JlL3BhcnRt YXAvbXNkb3MuYw0KPiA+IC1AQCAtMzM3LDcgKzMzNyw3IEBAIHBjX3BhcnRpdGlvbl9tYXBfZW1i ZWQgKHN0cnVjdCBncnViX2Rpc2sgKmRpc2ssDQo+ID4gdW5zaWduZWQgaW50ICpuc2VjdG9ycywN Cj4gPiAtwqAgwqAgwqAgwqBhdmFpbF9uc2VjdG9ycyA9ICpuc2VjdG9yczsNCj4gPiAtwqAgwqAg wqAgwqBpZiAoKm5zZWN0b3JzID4gbWF4X25zZWN0b3JzKQ0KPiA+IC3CoCDCoCDCoCDCoCpuc2Vj dG9ycyA9IG1heF9uc2VjdG9yczsNCj4gPiAtLcKgIMKgIMKgICpzZWN0b3JzID0gZ3J1Yl9tYWxs b2MgKCpuc2VjdG9ycyAqIHNpemVvZiAoKipzZWN0b3JzKSk7DQo+ID4gLSvCoCDCoCDCoCAqc2Vj dG9ycyA9IGdydWJfY2FsbG9jICgqbnNlY3RvcnMsIHNpemVvZiAoKipzZWN0b3JzKSk7DQo+ID4g LcKgIMKgIMKgIMKgaWYgKCEqc2VjdG9ycykNCj4gPiAtwqAgwqAgwqAgwqByZXR1cm4gZ3J1Yl9l cnJubzsNCj4gPiAtwqAgwqAgwqAgwqBmb3IgKGkgPSAwOyBpIDwgKm5zZWN0b3JzOyBpKyspDQo+ ID4gLWRpZmYgLS1naXQgYS9ncnViLWNvcmUvc2NyaXB0L2V4ZWN1dGUuYyBiL2dydWItY29yZS9z Y3JpcHQvZXhlY3V0ZS5jDQo+ID4gLWluZGV4IGVlMjk5ZmQuLmM4ZDY4MDYgMTAwNjQ0DQo+ID4g LS0tLSBhL2dydWItY29yZS9zY3JpcHQvZXhlY3V0ZS5jDQo+ID4gLSsrKyBiL2dydWItY29yZS9z Y3JpcHQvZXhlY3V0ZS5jDQo+ID4gLUBAIC01NTMsNyArNTUzLDcgQEAgZ2V0dGV4dF9hcHBlbmQg KHN0cnVjdCBncnViX3NjcmlwdF9hcmd2ICpyZXN1bHQsDQo+ID4gY29uc3QgY2hhciAqb3JpZ19z dHIpDQo+ID4gLcKgIMKgZm9yIChpcHRyID0gb3JpZ19zdHI7ICppcHRyOyBpcHRyKyspDQo+ID4g LcKgIMKgIMKgaWYgKCppcHRyID09ICckJykNCj4gPiAtwqAgwqAgwqAgwqBkb2xsYXJfY250Kys7 DQo+ID4gLS3CoCBjdHguYWxsb3dlZF9zdHJpbmdzID0gZ3J1Yl9tYWxsb2MgKHNpemVvZg0KPiA+ IChjdHguYWxsb3dlZF9zdHJpbmdzWzBdKSAqIGRvbGxhcl9jbnQpOw0KPiA+IC0rwqAgY3R4LmFs bG93ZWRfc3RyaW5ncyA9IGdydWJfY2FsbG9jIChkb2xsYXJfY250LCBzaXplb2YNCj4gPiAoY3R4 LmFsbG93ZWRfc3RyaW5nc1swXSkpOw0KPiA+IC0gDQo+ID4gLcKgIMKgaWYgKHBhcnNlX3N0cmlu ZyAob3JpZ19zdHIsIGdldHRleHRfc2F2ZV9hbGxvdywgJmN0eCwgMCkpDQo+ID4gLcKgIMKgIMKg Z290byBmYWlsOw0KPiA+IC1kaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL3Rlc3RzL2Zha2VfaW5wdXQu YyBiL2dydWItDQo+ID4gY29yZS90ZXN0cy9mYWtlX2lucHV0LmMNCj4gPiAtaW5kZXggMmQ2MDg1 Mi4uYjVlYjUxNiAxMDA2NDQNCj4gPiAtLS0tIGEvZ3J1Yi1jb3JlL3Rlc3RzL2Zha2VfaW5wdXQu Yw0KPiA+IC0rKysgYi9ncnViLWNvcmUvdGVzdHMvZmFrZV9pbnB1dC5jDQo+ID4gLUBAIC00OSw3 ICs0OSw3IEBAIGdydWJfdGVybWluYWxfaW5wdXRfZmFrZV9zZXF1ZW5jZSAoaW50ICpzZXFfaW4s DQo+ID4gaW50IG5zZXFfaW4pDQo+ID4gLcKgIMKgIMKgc2F2ZWQgPSBncnViX3Rlcm1faW5wdXRz Ow0KPiA+IC3CoCDCoGlmIChzZXEpDQo+ID4gLcKgIMKgIMKgZ3J1Yl9mcmVlIChzZXEpOw0KPiA+ IC0twqAgc2VxID0gZ3J1Yl9tYWxsb2MgKG5zZXFfaW4gKiBzaXplb2YgKHNlcVswXSkpOw0KPiA+ IC0rwqAgc2VxID0gZ3J1Yl9jYWxsb2MgKG5zZXFfaW4sIHNpemVvZiAoc2VxWzBdKSk7DQo+ID4g LcKgIMKgaWYgKCFzZXEpDQo+ID4gLcKgIMKgIMKgcmV0dXJuOw0KPiA+IC0gDQo+ID4gLWRpZmYg LS1naXQgYS9ncnViLWNvcmUvdGVzdHMvdmlkZW9fY2hlY2tzdW0uYyBiL2dydWItDQo+ID4gY29y ZS90ZXN0cy92aWRlb19jaGVja3N1bS5jDQo+ID4gLWluZGV4IDc0ZDViNjUuLjQ0ZDA4MTAgMTAw NjQ0DQo+ID4gLS0tLSBhL2dydWItY29yZS90ZXN0cy92aWRlb19jaGVja3N1bS5jDQo+ID4gLSsr KyBiL2dydWItY29yZS90ZXN0cy92aWRlb19jaGVja3N1bS5jDQo+ID4gLUBAIC0zMzYsNyArMzM2 LDcgQEAgZ3J1Yl92aWRlb19jYXB0dXJlX3dyaXRlX2JtcCAoY29uc3QgY2hhciAqZm5hbWUsDQo+ ID4gLcKgIMKgIMKgew0KPiA+IC3CoCDCoCDCoGNhc2UgNDoNCj4gPiAtwqAgwqAgwqAgwqB7DQo+ ID4gLS3CoCDCoCDCoCBncnViX3VpbnQ4X3QgKmJ1ZmZlciA9IHhtYWxsb2MgKG1vZGVfaW5mby0+ d2lkdGggKiAzKTsNCj4gPiAtK8KgIMKgIMKgIGdydWJfdWludDhfdCAqYnVmZmVyID0geGNhbGxv YyAoMywgbW9kZV9pbmZvLT53aWR0aCk7DQo+ID4gLcKgIMKgIMKgIMKgZ3J1Yl91aW50MzJfdCBy bWFzayA9ICgoMSA8PCBtb2RlX2luZm8tPnJlZF9tYXNrX3NpemUpIC0gMSk7DQo+ID4gLcKgIMKg IMKgIMKgZ3J1Yl91aW50MzJfdCBnbWFzayA9ICgoMSA8PCBtb2RlX2luZm8tPmdyZWVuX21hc2tf c2l6ZSkgLQ0KPiA+IDEpOw0KPiA+IC3CoCDCoCDCoCDCoGdydWJfdWludDMyX3QgYm1hc2sgPSAo KDEgPDwgbW9kZV9pbmZvLT5ibHVlX21hc2tfc2l6ZSkgLSAxKTsNCj4gPiAtQEAgLTM2Nyw3ICsz NjcsNyBAQCBncnViX3ZpZGVvX2NhcHR1cmVfd3JpdGVfYm1wIChjb25zdCBjaGFyICpmbmFtZSwN Cj4gPiAtwqAgwqAgwqAgwqB9DQo+ID4gLcKgIMKgIMKgY2FzZSAzOg0KPiA+IC3CoCDCoCDCoCDC oHsNCj4gPiAtLcKgIMKgIMKgIGdydWJfdWludDhfdCAqYnVmZmVyID0geG1hbGxvYyAobW9kZV9p bmZvLT53aWR0aCAqIDMpOw0KPiA+IC0rwqAgwqAgwqAgZ3J1Yl91aW50OF90ICpidWZmZXIgPSB4 Y2FsbG9jICgzLCBtb2RlX2luZm8tPndpZHRoKTsNCj4gPiAtwqAgwqAgwqAgwqBncnViX3VpbnQz Ml90IHJtYXNrID0gKCgxIDw8IG1vZGVfaW5mby0+cmVkX21hc2tfc2l6ZSkgLSAxKTsNCj4gPiAt wqAgwqAgwqAgwqBncnViX3VpbnQzMl90IGdtYXNrID0gKCgxIDw8IG1vZGVfaW5mby0+Z3JlZW5f bWFza19zaXplKSAtDQo+ID4gMSk7DQo+ID4gLcKgIMKgIMKgIMKgZ3J1Yl91aW50MzJfdCBibWFz ayA9ICgoMSA8PCBtb2RlX2luZm8tPmJsdWVfbWFza19zaXplKSAtIDEpOw0KPiA+IC1AQCAtNDA3 LDcgKzQwNyw3IEBAIGdydWJfdmlkZW9fY2FwdHVyZV93cml0ZV9ibXAgKGNvbnN0IGNoYXIgKmZu YW1lLA0KPiA+IC3CoCDCoCDCoCDCoH0NCj4gPiAtwqAgwqAgwqBjYXNlIDI6DQo+ID4gLcKgIMKg IMKgIMKgew0KPiA+IC0twqAgwqAgwqAgZ3J1Yl91aW50OF90ICpidWZmZXIgPSB4bWFsbG9jICht b2RlX2luZm8tPndpZHRoICogMyk7DQo+ID4gLSvCoCDCoCDCoCBncnViX3VpbnQ4X3QgKmJ1ZmZl ciA9IHhjYWxsb2MgKDMsIG1vZGVfaW5mby0+d2lkdGgpOw0KPiA+IC3CoCDCoCDCoCDCoGdydWJf dWludDE2X3Qgcm1hc2sgPSAoKDEgPDwgbW9kZV9pbmZvLT5yZWRfbWFza19zaXplKSAtIDEpOw0K PiA+IC3CoCDCoCDCoCDCoGdydWJfdWludDE2X3QgZ21hc2sgPSAoKDEgPDwgbW9kZV9pbmZvLT5n cmVlbl9tYXNrX3NpemUpIC0NCj4gPiAxKTsNCj4gPiAtwqAgwqAgwqAgwqBncnViX3VpbnQxNl90 IGJtYXNrID0gKCgxIDw8IG1vZGVfaW5mby0+Ymx1ZV9tYXNrX3NpemUpIC0gMSk7DQo+ID4gLWRp ZmYgLS1naXQgYS9ncnViLWNvcmUvdmlkZW8vY2FwdHVyZS5jIGIvZ3J1Yi1jb3JlL3ZpZGVvL2Nh cHR1cmUuYw0KPiA+IC1pbmRleCA0ZjgzYzc0Li40ZDMxOTVlIDEwMDY0NA0KPiA+IC0tLS0gYS9n cnViLWNvcmUvdmlkZW8vY2FwdHVyZS5jDQo+ID4gLSsrKyBiL2dydWItY29yZS92aWRlby9jYXB0 dXJlLmMNCj4gPiAtQEAgLTg5LDcgKzg5LDcgQEAgZ3J1Yl92aWRlb19jYXB0dXJlX3N0YXJ0IChj b25zdCBzdHJ1Y3QNCj4gPiBncnViX3ZpZGVvX21vZGVfaW5mbyAqbW9kZV9pbmZvLA0KPiA+IC3C oCDCoGZyYW1lYnVmZmVyLm1vZGVfaW5mbyA9ICptb2RlX2luZm87DQo+ID4gLcKgIMKgZnJhbWVi dWZmZXIubW9kZV9pbmZvLmJsaXRfZm9ybWF0ID0gZ3J1Yl92aWRlb19nZXRfYmxpdF9mb3JtYXQN Cj4gPiAoJmZyYW1lYnVmZmVyLm1vZGVfaW5mbyk7DQo+ID4gLSANCj4gPiAtLcKgIGZyYW1lYnVm ZmVyLnB0ciA9IGdydWJfbWFsbG9jIChmcmFtZWJ1ZmZlci5tb2RlX2luZm8uaGVpZ2h0ICoNCj4g PiBmcmFtZWJ1ZmZlci5tb2RlX2luZm8ucGl0Y2gpOw0KPiA+IC0rwqAgZnJhbWVidWZmZXIucHRy ID0gZ3J1Yl9jYWxsb2MgKGZyYW1lYnVmZmVyLm1vZGVfaW5mby5oZWlnaHQsDQo+ID4gZnJhbWVi dWZmZXIubW9kZV9pbmZvLnBpdGNoKTsNCj4gPiAtwqAgwqBpZiAoIWZyYW1lYnVmZmVyLnB0cikN Cj4gPiAtwqAgwqAgwqByZXR1cm4gZ3J1Yl9lcnJubzsNCj4gPiAtwqAgwqANCj4gPiAtZGlmZiAt LWdpdCBhL2dydWItY29yZS92aWRlby9lbXUvc2RsLmMgYi9ncnViLWNvcmUvdmlkZW8vZW11L3Nk bC5jDQo+ID4gLWluZGV4IGEyZjYzOWYuLjBlYmFiNmYgMTAwNjQ0DQo+ID4gLS0tLSBhL2dydWIt Y29yZS92aWRlby9lbXUvc2RsLmMNCj4gPiAtKysrIGIvZ3J1Yi1jb3JlL3ZpZGVvL2VtdS9zZGwu Yw0KPiA+IC1AQCAtMTcyLDcgKzE3Miw3IEBAIGdydWJfdmlkZW9fc2RsX3NldF9wYWxldHRlICh1 bnNpZ25lZCBpbnQgc3RhcnQsDQo+ID4gdW5zaWduZWQgaW50IGNvdW50LA0KPiA+IC3CoCDCoCDC oCDCoGlmIChzdGFydCArIGNvdW50ID4gbW9kZV9pbmZvLm51bWJlcl9vZl9jb2xvcnMpDQo+ID4g LcKgIMKgIMKgIMKgY291bnQgPSBtb2RlX2luZm8ubnVtYmVyX29mX2NvbG9ycyAtIHN0YXJ0Ow0K PiA+IC0gDQo+ID4gLS3CoCDCoCDCoCB0bXAgPSBncnViX21hbGxvYyAoY291bnQgKiBzaXplb2Yg KHRtcFswXSkpOw0KPiA+IC0rwqAgwqAgwqAgdG1wID0gZ3J1Yl9jYWxsb2MgKGNvdW50LCBzaXpl b2YgKHRtcFswXSkpOw0KPiA+IC3CoCDCoCDCoCDCoGZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsr KQ0KPiA+IC3CoCDCoCDCoCDCoHsNCj4gPiAtwqAgwqAgwqAgwqAgwqB0bXBbaV0uciA9IHBhbGV0 dGVfZGF0YVtpXS5yOw0KPiA+IC1kaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL3ZpZGVvL2kzODYvcGMv dmdhLmMgYi9ncnViLQ0KPiA+IGNvcmUvdmlkZW8vaTM4Ni9wYy92Z2EuYw0KPiA+IC1pbmRleCAw MWY0NzExLi5iMmY3NzZjIDEwMDY0NA0KPiA+IC0tLS0gYS9ncnViLWNvcmUvdmlkZW8vaTM4Ni9w Yy92Z2EuYw0KPiA+IC0rKysgYi9ncnViLWNvcmUvdmlkZW8vaTM4Ni9wYy92Z2EuYw0KPiA+IC1A QCAtMTI3LDcgKzEyNyw3IEBAIGdydWJfdmlkZW9fdmdhX3NldHVwICh1bnNpZ25lZCBpbnQgd2lk dGgsDQo+ID4gdW5zaWduZWQgaW50IGhlaWdodCwNCj4gPiAtIA0KPiA+IC3CoCDCoHZnYV9oZWln aHQgPSBoZWlnaHQgPyA6IDQ4MDsNCj4gPiAtIA0KPiA+IC0twqAgZnJhbWVidWZmZXIudGVtcG9y YXJ5X2J1ZmZlciA9IGdydWJfbWFsbG9jICh2Z2FfaGVpZ2h0ICoNCj4gPiBWR0FfV0lEVEgpOw0K PiA+IC0rwqAgZnJhbWVidWZmZXIudGVtcG9yYXJ5X2J1ZmZlciA9IGdydWJfY2FsbG9jICh2Z2Ff aGVpZ2h0LA0KPiA+IFZHQV9XSURUSCk7DQo+ID4gLcKgIMKgZnJhbWVidWZmZXIuZnJvbnRfcGFn ZSA9IDA7DQo+ID4gLcKgIMKgZnJhbWVidWZmZXIuYmFja19wYWdlID0gMDsNCj4gPiAtwqAgwqBp ZiAoIWZyYW1lYnVmZmVyLnRlbXBvcmFyeV9idWZmZXIpDQo+ID4gLWRpZmYgLS1naXQgYS9ncnVi LWNvcmUvdmlkZW8vcmVhZGVycy9wbmcuYyBiL2dydWItDQo+ID4gY29yZS92aWRlby9yZWFkZXJz L3BuZy5jDQo+ID4gLWluZGV4IDc3N2U3MTMuLjYxYmQ2NDUgMTAwNjQ0DQo+ID4gLS0tLSBhL2dy dWItY29yZS92aWRlby9yZWFkZXJzL3BuZy5jDQo+ID4gLSsrKyBiL2dydWItY29yZS92aWRlby9y ZWFkZXJzL3BuZy5jDQo+ID4gLUBAIC0zMDksNyArMzA5LDcgQEAgZ3J1Yl9wbmdfZGVjb2RlX2lt YWdlX2hlYWRlciAoc3RydWN0DQo+ID4gZ3J1Yl9wbmdfZGF0YSAqZGF0YSkNCj4gPiAtwqAgwqBp ZiAoZGF0YS0+aXNfMTZiaXQgfHwgZGF0YS0+aXNfZ3JheSB8fCBkYXRhLT5pc19wYWxldHRlKQ0K PiA+IC0gI2VuZGlmDQo+ID4gLcKgIMKgIMKgew0KPiA+IC0twqAgwqAgwqAgZGF0YS0+aW1hZ2Vf ZGF0YSA9IGdydWJfbWFsbG9jIChkYXRhLT5pbWFnZV9oZWlnaHQgKiBkYXRhLQ0KPiA+ID4gcm93 X2J5dGVzKTsNCj4gPiAtK8KgIMKgIMKgIGRhdGEtPmltYWdlX2RhdGEgPSBncnViX2NhbGxvYyAo ZGF0YS0+aW1hZ2VfaGVpZ2h0LCBkYXRhLQ0KPiA+ID4gcm93X2J5dGVzKTsNCj4gPiAtwqAgwqAg wqAgwqBpZiAoZ3J1Yl9lcnJubykNCj4gPiAtwqAgwqAgwqAgwqAgwqByZXR1cm4gZ3J1Yl9lcnJu bzsNCj4gPiAtIA0KPiA+IC1kaWZmIC0tZ2l0IGEvaW5jbHVkZS9ncnViL3VuaWNvZGUuaCBiL2lu Y2x1ZGUvZ3J1Yi91bmljb2RlLmgNCj4gPiAtaW5kZXggYTA0MDNlOS4uNGRlOTg2YSAxMDA2NDQN Cj4gPiAtLS0tIGEvaW5jbHVkZS9ncnViL3VuaWNvZGUuaA0KPiA+IC0rKysgYi9pbmNsdWRlL2dy dWIvdW5pY29kZS5oDQo+ID4gLUBAIC0yOTMsNyArMjkzLDcgQEAgZ3J1Yl91bmljb2RlX2dseXBo X2R1cCAoY29uc3Qgc3RydWN0DQo+ID4gZ3J1Yl91bmljb2RlX2dseXBoICppbikNCj4gPiAtwqAg wqBncnViX21lbWNweSAob3V0LCBpbiwgc2l6ZW9mICgqaW4pKTsNCj4gPiAtwqAgwqBpZiAoaW4t Pm5jb21iID4gQVJSQVlfU0laRSAob3V0LT5jb21iaW5pbmdfaW5saW5lKSkNCj4gPiAtwqAgwqAg wqB7DQo+ID4gLS3CoCDCoCDCoCBvdXQtPmNvbWJpbmluZ19wdHIgPSBncnViX21hbGxvYyAoaW4t Pm5jb21iICogc2l6ZW9mIChvdXQtDQo+ID4gPiBjb21iaW5pbmdfcHRyWzBdKSk7DQo+ID4gLSvC oCDCoCDCoCBvdXQtPmNvbWJpbmluZ19wdHIgPSBncnViX2NhbGxvYyAoaW4tPm5jb21iLCBzaXpl b2YgKG91dC0NCj4gPiA+IGNvbWJpbmluZ19wdHJbMF0pKTsNCj4gPiAtwqAgwqAgwqAgwqBpZiAo IW91dC0+Y29tYmluaW5nX3B0cikNCj4gPiAtwqAgwqAgwqAgwqB7DQo+ID4gLcKgIMKgIMKgIMKg IMKgZ3J1Yl9mcmVlIChvdXQpOw0KPiA+IC1AQCAtMzE1LDcgKzMxNSw3IEBAIGdydWJfdW5pY29k ZV9zZXRfZ2x5cGggKHN0cnVjdA0KPiA+IGdydWJfdW5pY29kZV9nbHlwaCAqb3V0LA0KPiA+IC3C oCDCoGdydWJfbWVtY3B5IChvdXQsIGluLCBzaXplb2YgKCppbikpOw0KPiA+IC3CoCDCoGlmIChp bi0+bmNvbWIgPiBBUlJBWV9TSVpFIChvdXQtPmNvbWJpbmluZ19pbmxpbmUpKQ0KPiA+IC3CoCDC oCDCoHsNCj4gPiAtLcKgIMKgIMKgIG91dC0+Y29tYmluaW5nX3B0ciA9IGdydWJfbWFsbG9jIChp bi0+bmNvbWIgKiBzaXplb2YgKG91dC0NCj4gPiA+IGNvbWJpbmluZ19wdHJbMF0pKTsNCj4gPiAt K8KgIMKgIMKgIG91dC0+Y29tYmluaW5nX3B0ciA9IGdydWJfY2FsbG9jIChpbi0+bmNvbWIsIHNp emVvZiAob3V0LQ0KPiA+ID4gY29tYmluaW5nX3B0clswXSkpOw0KPiA+IC3CoCDCoCDCoCDCoGlm ICghb3V0LT5jb21iaW5pbmdfcHRyKQ0KPiA+IC3CoCDCoCDCoCDCoHJldHVybjsNCj4gPiAtwqAg wqAgwqAgwqBncnViX21lbWNweSAob3V0LT5jb21iaW5pbmdfcHRyLCBpbi0+Y29tYmluaW5nX3B0 ciwNCj4gPiAtZGlmZiAtLWdpdCBhL3V0aWwvZ2V0cm9vdC5jIGIvdXRpbC9nZXRyb290LmMNCj4g PiAtaW5kZXggODQ3NDA2Zi4uYTVlYWE2NCAxMDA2NDQNCj4gPiAtLS0tIGEvdXRpbC9nZXRyb290 LmMNCj4gPiAtKysrIGIvdXRpbC9nZXRyb290LmMNCj4gPiAtQEAgLTIwMCw3ICsyMDAsNyBAQCBt YWtlX2RldmljZV9uYW1lIChjb25zdCBjaGFyICpkcml2ZSkNCj4gPiAtwqAgwqBjaGFyICpyZXQs ICpwdHI7DQo+ID4gLcKgIMKgY29uc3QgY2hhciAqaXB0cjsNCj4gPiAtIA0KPiA+IC0twqAgcmV0 ID0geG1hbGxvYyAoc3RybGVuIChkcml2ZSkgKiAyKTsNCj4gPiAtK8KgIHJldCA9IHhjYWxsb2Mg KDIsIHN0cmxlbiAoZHJpdmUpKTsNCj4gPiAtwqAgwqBwdHIgPSByZXQ7DQo+ID4gLcKgIMKgZm9y IChpcHRyID0gZHJpdmU7ICppcHRyOyBpcHRyKyspDQo+ID4gLcKgIMKgIMKgew0KPiA+IC1kaWZm IC0tZ2l0IGEvdXRpbC9ncnViLWZpbGUuYyBiL3V0aWwvZ3J1Yi1maWxlLmMNCj4gPiAtaW5kZXgg NTBjMThiNi4uYjJlN2RkNiAxMDA2NDQNCj4gPiAtLS0tIGEvdXRpbC9ncnViLWZpbGUuYw0KPiA+ IC0rKysgYi91dGlsL2dydWItZmlsZS5jDQo+ID4gLUBAIC01NCw3ICs1NCw3IEBAIG1haW4gKGlu dCBhcmdjLCBjaGFyICphcmd2W10pDQo+ID4gLSANCj4gPiAtwqAgwqBncnViX3V0aWxfaG9zdF9p bml0ICgmYXJnYywgJmFyZ3YpOw0KPiA+IC0gDQo+ID4gLS3CoCBhcmd2MiA9IHhtYWxsb2MgKGFy Z2MgKiBzaXplb2YgKGFyZ3YyWzBdKSk7DQo+ID4gLSvCoCBhcmd2MiA9IHhjYWxsb2MgKGFyZ2Ms IHNpemVvZiAoYXJndjJbMF0pKTsNCj4gPiAtIA0KPiA+IC3CoCDCoGlmIChhcmdjID09IDIgJiYg c3RyY21wIChhcmd2WzFdLCAiLS12ZXJzaW9uIikgPT0gMCkNCj4gPiAtwqAgwqAgwqB7DQo+ID4g LWRpZmYgLS1naXQgYS91dGlsL2dydWItZnN0ZXN0LmMgYi91dGlsL2dydWItZnN0ZXN0LmMNCj4g PiAtaW5kZXggZjE0ZTAyZC4uNTcyNDZhZiAxMDA2NDQNCj4gPiAtLS0tIGEvdXRpbC9ncnViLWZz dGVzdC5jDQo+ID4gLSsrKyBiL3V0aWwvZ3J1Yi1mc3Rlc3QuYw0KPiA+IC1AQCAtNjUwLDcgKzY1 MCw3IEBAIGFyZ3BfcGFyc2VyIChpbnQga2V5LCBjaGFyICphcmcsIHN0cnVjdA0KPiA+IGFyZ3Bf c3RhdGUgKnN0YXRlKQ0KPiA+IC3CoCDCoGlmIChhcmdzX2NvdW50IDwgbnVtX2Rpc2tzKQ0KPiA+ IC3CoCDCoCDCoHsNCj4gPiAtwqAgwqAgwqAgwqBpZiAoYXJnc19jb3VudCA9PSAwKQ0KPiA+IC0t wqAgwqAgwqAgaW1hZ2VzID0geG1hbGxvYyAobnVtX2Rpc2tzICogc2l6ZW9mIChpbWFnZXNbMF0p KTsNCj4gPiAtK8KgIMKgIMKgIGltYWdlcyA9IHhjYWxsb2MgKG51bV9kaXNrcywgc2l6ZW9mIChp bWFnZXNbMF0pKTsNCj4gPiAtwqAgwqAgwqAgwqBpbWFnZXNbYXJnc19jb3VudF0gPSBncnViX2Nh bm9uaWNhbGl6ZV9maWxlX25hbWUgKGFyZyk7DQo+ID4gLcKgIMKgIMKgIMKgYXJnc19jb3VudCsr Ow0KPiA+IC3CoCDCoCDCoCDCoHJldHVybiAwOw0KPiA+IC1AQCAtNzM0LDcgKzczNCw3IEBAIG1h aW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pDQo+ID4gLSANCj4gPiAtwqAgwqBncnViX3V0aWxf aG9zdF9pbml0ICgmYXJnYywgJmFyZ3YpOw0KPiA+IC0gDQo+ID4gLS3CoCBhcmdzID0geG1hbGxv YyAoYXJnYyAqIHNpemVvZiAoYXJnc1swXSkpOw0KPiA+IC0rwqAgYXJncyA9IHhjYWxsb2MgKGFy Z2MsIHNpemVvZiAoYXJnc1swXSkpOw0KPiA+IC0gDQo+ID4gLcKgIMKgYXJncF9wYXJzZSAoJmFy Z3AsIGFyZ2MsIGFyZ3YsIDAsIDAsIDApOw0KPiA+IC0gDQo+ID4gLWRpZmYgLS1naXQgYS91dGls L2dydWItaW5zdGFsbC1jb21tb24uYyBiL3V0aWwvZ3J1Yi1pbnN0YWxsLWNvbW1vbi5jDQo+ID4g LWluZGV4IGNhMGFjNjEuLjAyOTVkNDAgMTAwNjQ0DQo+ID4gLS0tLSBhL3V0aWwvZ3J1Yi1pbnN0 YWxsLWNvbW1vbi5jDQo+ID4gLSsrKyBiL3V0aWwvZ3J1Yi1pbnN0YWxsLWNvbW1vbi5jDQo+ID4g LUBAIC0yODYsNyArMjg2LDcgQEAgaGFuZGxlX2luc3RhbGxfbGlzdCAoc3RydWN0IGluc3RhbGxf bGlzdCAqaWwsDQo+ID4gY29uc3QgY2hhciAqdmFsLA0KPiA+IC3CoCDCoCDCoCDCoGlsLT5uX2Vu dHJpZXMrKzsNCj4gPiAtwqAgwqAgwqB9DQo+ID4gLcKgIMKgaWwtPm5fYWxsb2MgPSBpbC0+bl9l bnRyaWVzICsgMTsNCj4gPiAtLcKgIGlsLT5lbnRyaWVzID0geG1hbGxvYyAoaWwtPm5fYWxsb2Mg KiBzaXplb2YgKGlsLT5lbnRyaWVzWzBdKSk7DQo+ID4gLSvCoCBpbC0+ZW50cmllcyA9IHhjYWxs b2MgKGlsLT5uX2FsbG9jLCBzaXplb2YgKGlsLT5lbnRyaWVzWzBdKSk7DQo+ID4gLcKgIMKgcHRy ID0gdmFsOw0KPiA+IC3CoCDCoGZvciAoY2UgPSBpbC0+ZW50cmllczsgOyBjZSsrKQ0KPiA+IC3C oCDCoCDCoHsNCj4gPiAtZGlmZiAtLWdpdCBhL3V0aWwvZ3J1Yi1pbnN0YWxsLmMgYi91dGlsL2dy dWItaW5zdGFsbC5jDQo+ID4gLWluZGV4IDhhNTVhZDQuLmE4MjcyNWYgMTAwNjQ0DQo+ID4gLS0t LSBhL3V0aWwvZ3J1Yi1pbnN0YWxsLmMNCj4gPiAtKysrIGIvdXRpbC9ncnViLWluc3RhbGwuYw0K PiA+IC1AQCAtNjI2LDcgKzYyNiw3IEBAIGRldmljZV9tYXBfY2hlY2tfZHVwbGljYXRlcyAoY29u c3QgY2hhcg0KPiA+ICpkZXZfbWFwKQ0KPiA+IC3CoCDCoGlmICghIGZwKQ0KPiA+IC3CoCDCoCDC oHJldHVybjsNCj4gPiAtIA0KPiA+IC0twqAgZCA9IHhtYWxsb2MgKGFsbG9jZWQgKiBzaXplb2Yg KGRbMF0pKTsNCj4gPiAtK8KgIGQgPSB4Y2FsbG9jIChhbGxvY2VkLCBzaXplb2YgKGRbMF0pKTsN Cj4gPiAtIA0KPiA+IC3CoCDCoHdoaWxlIChmZ2V0cyAoYnVmLCBzaXplb2YgKGJ1ZiksIGZwKSkN Cj4gPiAtwqAgwqAgwqB7DQo+ID4gLUBAIC0xMjYwLDcgKzEyNjAsNyBAQCBtYWluIChpbnQgYXJn YywgY2hhciAqYXJndltdKQ0KPiA+IC3CoCDCoCDCoCDCoG5kZXYrKzsNCj4gPiAtwqAgwqAgwqB9 DQo+ID4gLSANCj4gPiAtLcKgIGdydWJfZHJpdmVzID0geG1hbGxvYyAoc2l6ZW9mIChncnViX2Ry aXZlc1swXSkgKiAobmRldiArIDEpKTsgDQo+ID4gLSvCoCBncnViX2RyaXZlcyA9IHhjYWxsb2Mg KG5kZXYgKyAxLCBzaXplb2YgKGdydWJfZHJpdmVzWzBdKSk7DQo+ID4gLSANCj4gPiAtwqAgwqBm b3IgKGN1cmRldiA9IGdydWJfZGV2aWNlcywgY3VyZHJpdmUgPSBncnViX2RyaXZlczsgKmN1cmRl djsNCj4gPiBjdXJkZXYrKywNCj4gPiAtwqAgwqAgwqAgwqAgY3VyZHJpdmUrKykNCj4gPiAtZGlm ZiAtLWdpdCBhL3V0aWwvZ3J1Yi1ta2ltYWdleHguYyBiL3V0aWwvZ3J1Yi1ta2ltYWdleHguYw0K PiA+IC1pbmRleCBiYzA4N2MyLi5kOTdkMGU3IDEwMDY0NA0KPiA+IC0tLS0gYS91dGlsL2dydWIt bWtpbWFnZXh4LmMNCj4gPiAtKysrIGIvdXRpbC9ncnViLW1raW1hZ2V4eC5jDQo+ID4gLUBAIC0y Mjk0LDEwICsyMjk0LDggQEAgU1VGRklYIChncnViX21raW1hZ2VfbG9hZF9pbWFnZSkgKGNvbnN0 IGNoYXINCj4gPiAqa2VybmVsX3BhdGgsDQo+ID4gLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgKyBncnViX2hvc3RfdG9fdGFyZ2V0MTYgKGUtPmVfc2hzdHJuZHgpICoNCj4gPiBzbWQu c2VjdGlvbl9lbnRzaXplKTsNCj4gPiAtwqAgwqBzbWQuc3RydGFiID0gKGNoYXIgKikgZSArIGdy dWJfaG9zdF90b190YXJnZXRfYWRkciAocy0NCj4gPiA+IHNoX29mZnNldCk7DQo+ID4gLSANCj4g PiAtLcKgIHNtZC5hZGRycyA9IHhtYWxsb2MgKHNpemVvZiAoKnNtZC5hZGRycykgKiBzbWQubnVt X3NlY3Rpb25zKTsNCj4gPiAtLcKgIG1lbXNldCAoc21kLmFkZHJzLCAwLCBzaXplb2YgKCpzbWQu YWRkcnMpICogc21kLm51bV9zZWN0aW9ucyk7DQo+ID4gLS3CoCBzbWQudmFkZHJzID0geG1hbGxv YyAoc2l6ZW9mICgqc21kLnZhZGRycykgKiBzbWQubnVtX3NlY3Rpb25zKTsNCj4gPiAtLcKgIG1l bXNldCAoc21kLnZhZGRycywgMCwgc2l6ZW9mICgqc21kLnZhZGRycykgKiBzbWQubnVtX3NlY3Rp b25zKTsNCj4gPiAtK8KgIHNtZC5hZGRycyA9IHhjYWxsb2MgKHNtZC5udW1fc2VjdGlvbnMsIHNp emVvZiAoKnNtZC5hZGRycykpOw0KPiA+IC0rwqAgc21kLnZhZGRycyA9IHhjYWxsb2MgKHNtZC5u dW1fc2VjdGlvbnMsIHNpemVvZiAoKnNtZC52YWRkcnMpKTsNCj4gPiAtIA0KPiA+IC3CoCDCoFNV RkZJWCAobG9jYXRlX3NlY3Rpb25zKSAoZSwga2VybmVsX3BhdGgsICZzbWQsIGxheW91dCwNCj4g PiBpbWFnZV90YXJnZXQpOw0KPiA+IC0gDQo+ID4gLWRpZmYgLS1naXQgYS91dGlsL2dydWItbWty ZXNjdWUuYyBiL3V0aWwvZ3J1Yi1ta3Jlc2N1ZS5jDQo+ID4gLWluZGV4IGNlMmNiYzQuLjUxODMx MDIgMTAwNjQ0DQo+ID4gLS0tLSBhL3V0aWwvZ3J1Yi1ta3Jlc2N1ZS5jDQo+ID4gLSsrKyBiL3V0 aWwvZ3J1Yi1ta3Jlc2N1ZS5jDQo+ID4gLUBAIC00NDEsOCArNDQxLDggQEAgbWFpbiAoaW50IGFy Z2MsIGNoYXIgKmFyZ3ZbXSkNCj4gPiAtwqAgwqB4b3JyaXNvID0geHN0cmR1cCAoInhvcnJpc28i KTsNCj4gPiAtwqAgwqBsYWJlbF9mb250ID0gZ3J1Yl91dGlsX3BhdGhfY29uY2F0ICgyLCBwa2dk YXRhZGlyLA0KPiA+ICJ1bmljb2RlLnBmMiIpOw0KPiA+IC0gDQo+ID4gLS3CoCBhcmdwX2FyZ3Yg PSB4bWFsbG9jIChzaXplb2YgKGFyZ3BfYXJndlswXSkgKiBhcmdjKTsNCj4gPiAtLcKgIHhvcnJp c29fdGFpbF9hcmd2ID0geG1hbGxvYyAoc2l6ZW9mIChhcmdwX2FyZ3ZbMF0pICogYXJnYyk7DQo+ ID4gLSvCoCBhcmdwX2FyZ3YgPSB4Y2FsbG9jIChhcmdjLCBzaXplb2YgKGFyZ3BfYXJndlswXSkp Ow0KPiA+IC0rwqAgeG9ycmlzb190YWlsX2FyZ3YgPSB4Y2FsbG9jIChhcmdjLCBzaXplb2YgKGFy Z3BfYXJndlswXSkpOw0KPiA+IC0gDQo+ID4gLcKgIMKgeG9ycmlzb190YWlsX2FyZ2MgPSAwOw0K PiA+IC3CoCDCoC8qIFByb2dyYW0gbmFtZSAqLw0KPiA+IC1kaWZmIC0tZ2l0IGEvdXRpbC9ncnVi LW1rc3RhbmRhbG9uZS5jIGIvdXRpbC9ncnViLW1rc3RhbmRhbG9uZS5jDQo+ID4gLWluZGV4IDQ5 MDdkNDQuLmVkZjMwOTcgMTAwNjQ0DQo+ID4gLS0tLSBhL3V0aWwvZ3J1Yi1ta3N0YW5kYWxvbmUu Yw0KPiA+IC0rKysgYi91dGlsL2dydWItbWtzdGFuZGFsb25lLmMNCj4gPiAtQEAgLTI5Niw3ICsy OTYsNyBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQ0KPiA+IC3CoCDCoGdydWJfdXRp bF9ob3N0X2luaXQgKCZhcmdjLCAmYXJndik7DQo+ID4gLcKgIMKgZ3J1Yl91dGlsX2Rpc2FibGVf ZmRfc3luY3MgKCk7DQo+ID4gLSANCj4gPiAtLcKgIGZpbGVzID0geG1hbGxvYyAoKGFyZ2MgKyAx KSAqIHNpemVvZiAoZmlsZXNbMF0pKTsNCj4gPiAtK8KgIGZpbGVzID0geGNhbGxvYyAoYXJnYyAr IDEsIHNpemVvZiAoZmlsZXNbMF0pKTsNCj4gPiAtIA0KPiA+IC3CoCDCoGFyZ3BfcGFyc2UgKCZh cmdwLCBhcmdjLCBhcmd2LCAwLCAwLCAwKTsNCj4gPiAtIA0KPiA+IC1kaWZmIC0tZ2l0IGEvdXRp bC9ncnViLXBlMmVsZi5jIGIvdXRpbC9ncnViLXBlMmVsZi5jDQo+ID4gLWluZGV4IDBkNDA4NGEu LjExMzMxMjkgMTAwNjQ0DQo+ID4gLS0tLSBhL3V0aWwvZ3J1Yi1wZTJlbGYuYw0KPiA+IC0rKysg Yi91dGlsL2dydWItcGUyZWxmLmMNCj4gPiAtQEAgLTEwMCw5ICsxMDAsOSBAQCB3cml0ZV9zZWN0 aW9uX2RhdGEgKEZJTEUqIGZwLCBjb25zdCBjaGFyICpuYW1lLA0KPiA+IGNoYXIgKmltYWdlLA0K PiA+IC3CoCDCoGNoYXIgKnBlX3N0cnRhYiA9IChpbWFnZSArIHBlX2NoZHItPnN5bXRhYl9vZmZz ZXQNCj4gPiAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgKyBwZV9jaGRyLT5udW1fc3lt Ym9scyAqIHNpemVvZiAoc3RydWN0DQo+ID4gZ3J1Yl9wZTMyX3N5bWJvbCkpOw0KPiA+IC0gDQo+ ID4gLS3CoCBzZWN0aW9uX21hcCA9IHhtYWxsb2MgKCgyICogcGVfY2hkci0+bnVtX3NlY3Rpb25z ICsgNSkgKiBzaXplb2YNCj4gPiAoaW50KSk7DQo+ID4gLSvCoCBzZWN0aW9uX21hcCA9IHhjYWxs b2MgKDIgKiBwZV9jaGRyLT5udW1fc2VjdGlvbnMgKyA1LCBzaXplb2YNCj4gPiAoaW50KSk7DQo+ ID4gLcKgIMKgc2VjdGlvbl9tYXBbMF0gPSAwOw0KPiA+IC0twqAgc2hkciA9IHhtYWxsb2MgKCgy ICogcGVfY2hkci0+bnVtX3NlY3Rpb25zICsgNSkgKiBzaXplb2YNCj4gPiAoc2hkclswXSkpOw0K PiA+IC0rwqAgc2hkciA9IHhjYWxsb2MgKDIgKiBwZV9jaGRyLT5udW1fc2VjdGlvbnMgKyA1LCBz aXplb2YgKHNoZHJbMF0pKTsNCj4gPiAtwqAgwqBpZHggPSAxOw0KPiA+IC3CoCDCoGlkeF9yZWxv YyA9IHBlX2NoZHItPm51bV9zZWN0aW9ucyArIDE7DQo+ID4gLSANCj4gPiAtQEAgLTIzMyw3ICsy MzMsNyBAQCB3cml0ZV9yZWxvY19zZWN0aW9uIChGSUxFKiBmcCwgY29uc3QgY2hhciAqbmFtZSwN Cj4gPiBjaGFyICppbWFnZSwNCj4gPiAtIA0KPiA+IC3CoCDCoCDCoCDCoHBlX3NlYyA9IHBlX3No ZHIgKyBzaGRyW2ldLnNoX2xpbms7DQo+ID4gLcKgIMKgIMKgIMKgcGVfcmVsID0gKHN0cnVjdCBn cnViX3BlMzJfcmVsb2MgKikgKGltYWdlICsgcGVfc2VjLQ0KPiA+ID4gcmVsb2NhdGlvbnNfb2Zm c2V0KTsNCj4gPiAtLcKgIMKgIMKgIHJlbCA9IChlbGZfcmVsb2NfdCAqKSB4bWFsbG9jIChwZV9z ZWMtPm51bV9yZWxvY2F0aW9ucyAqDQo+ID4gc2l6ZW9mIChlbGZfcmVsb2NfdCkpOw0KPiA+IC0r wqAgwqAgwqAgcmVsID0gKGVsZl9yZWxvY190ICopIHhjYWxsb2MgKHBlX3NlYy0+bnVtX3JlbG9j YXRpb25zLA0KPiA+IHNpemVvZiAoZWxmX3JlbG9jX3QpKTsNCj4gPiAtwqAgwqAgwqAgwqBudW1f cmVscyA9IDA7DQo+ID4gLcKgIMKgIMKgIMKgbW9kaWZpZWQgPSAwOw0KPiA+IC0gDQo+ID4gLUBA IC0zNjUsMTIgKzM2NSwxMCBAQCB3cml0ZV9zeW1ib2xfdGFibGUgKEZJTEUqIGZwLCBjb25zdCBj aGFyDQo+ID4gKm5hbWUsIGNoYXIgKmltYWdlLA0KPiA+IC3CoCDCoHBlX3N5bXRhYiA9IChzdHJ1 Y3QgZ3J1Yl9wZTMyX3N5bWJvbCAqKSAoaW1hZ2UgKyBwZV9jaGRyLQ0KPiA+ID4gc3ltdGFiX29m ZnNldCk7DQo+ID4gLcKgIMKgcGVfc3RydGFiID0gKGNoYXIgKikgKHBlX3N5bXRhYiArIHBlX2No ZHItPm51bV9zeW1ib2xzKTsNCj4gPiAtIA0KPiA+IC0twqAgc3ltdGFiID0gKEVsZl9TeW0gKikg eG1hbGxvYyAoKHBlX2NoZHItPm51bV9zeW1ib2xzICsgMSkgKg0KPiA+IC0twqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgc2l6ZW9mIChFbGZfU3ltKSk7DQo+ID4g LS3CoCBtZW1zZXQgKHN5bXRhYiwgMCwgKHBlX2NoZHItPm51bV9zeW1ib2xzICsgMSkgKiBzaXpl b2YNCj4gPiAoRWxmX1N5bSkpOw0KPiA+IC0rwqAgc3ltdGFiID0gKEVsZl9TeW0gKikgeGNhbGxv YyAocGVfY2hkci0+bnVtX3N5bWJvbHMgKyAxLCBzaXplb2YNCj4gPiAoRWxmX1N5bSkpOw0KPiA+ IC3CoCDCoG51bV9zeW1zID0gMTsNCj4gPiAtIA0KPiA+IC0twqAgc3ltdGFiX21hcCA9IChpbnQg KikgeG1hbGxvYyAocGVfY2hkci0+bnVtX3N5bWJvbHMgKiBzaXplb2YNCj4gPiAoaW50KSk7DQo+ ID4gLSvCoCBzeW10YWJfbWFwID0gKGludCAqKSB4Y2FsbG9jIChwZV9jaGRyLT5udW1fc3ltYm9s cywgc2l6ZW9mDQo+ID4gKGludCkpOw0KPiA+IC0gDQo+ID4gLcKgIMKgZm9yIChpID0gMDsgaSA8 IChpbnQpIHBlX2NoZHItPm51bV9zeW1ib2xzOw0KPiA+IC3CoCDCoCDCoCDCoCBpICs9IHBlX3N5 bXRhYi0+bnVtX2F1eCArIDEsIHBlX3N5bXRhYiArPSBwZV9zeW10YWItPm51bV9hdXgNCj4gPiAr IDEpDQo+ID4gLWRpZmYgLS1naXQgYS91dGlsL2dydWItcHJvYmUuYyBiL3V0aWwvZ3J1Yi1wcm9i ZS5jDQo+ID4gLWluZGV4IDgxZDI3ZWUuLmNiZTZlZDkgMTAwNjQ0DQo+ID4gLS0tLSBhL3V0aWwv Z3J1Yi1wcm9iZS5jDQo+ID4gLSsrKyBiL3V0aWwvZ3J1Yi1wcm9iZS5jDQo+ID4gLUBAIC0zNjEs OCArMzYxLDggQEAgcHJvYmUgKGNvbnN0IGNoYXIgKnBhdGgsIGNoYXIgKipkZXZpY2VfbmFtZXMs DQo+ID4gY2hhciBkZWxpbSkNCj4gPiAtwqAgwqAgwqAgwqBncnViX3V0aWxfcHVsbF9kZXZpY2Ug KCpjdXJkZXYpOw0KPiA+IC3CoCDCoCDCoCDCoG5kZXYrKzsNCj4gPiAtwqAgwqAgwqB9DQo+ID4g LS3CoCANCj4gPiAtKw0KPiA+IC0rwqAgZHJpdmVzX25hbWVzID0geGNhbGxvYyAobmRldiArIDEs IHNpemVvZiAoZHJpdmVzX25hbWVzWzBdKSk7DQo+ID4gLSANCj4gPiAtwqAgwqBmb3IgKGN1cmRl diA9IGRldmljZV9uYW1lcywgY3VyZHJpdmUgPSBkcml2ZXNfbmFtZXM7ICpjdXJkZXY7DQo+ID4g Y3VyZGV2KyssDQo+ID4gLcKgIMKgIMKgIMKgIGN1cmRyaXZlKyspDQo+ID4gLS0tIA0KPiA+IC0y LjE0LjQNCj4gPiAtDQo+ID4gZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxl cy9DVkUtMjAyMC0xNDMwOS1DVkUtMjAyMC0NCj4gPiAxNDMxMC1DVkUtMjAyMC0xNDMxMS1tYWxs b2MtVXNlLW92ZXJmbG93LWNoZWNraW5nLXByaW1pdGl2ZXMtd2hlcmUtDQo+ID4gd2UtZG8tLnBh dGNoIGIvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzL0NWRS0yMDIwLTE0MzA5LUNWRS0yMDIw LQ0KPiA+IDE0MzEwLUNWRS0yMDIwLTE0MzExLW1hbGxvYy1Vc2Utb3ZlcmZsb3ctY2hlY2tpbmct cHJpbWl0aXZlcy13aGVyZS0NCj4gPiB3ZS1kby0ucGF0Y2gNCj4gPiBkZWxldGVkIGZpbGUgbW9k ZSAxMDA2NDQNCj4gPiBpbmRleCA3MjE0ZWFkOWE3Li4wMDAwMDAwMDAwDQo+ID4gLS0tIGEvbWV0 YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzL0NWRS0yMDIwLTE0MzA5LUNWRS0yMDIwLTE0MzEwLUNW RS0NCj4gPiAyMDIwLTE0MzExLW1hbGxvYy1Vc2Utb3ZlcmZsb3ctY2hlY2tpbmctcHJpbWl0aXZl cy13aGVyZS13ZS1kby0ucGF0Y2gNCj4gPiArKysgL2Rldi9udWxsDQo+ID4gQEAgLTEsMTMzMCAr MCwwIEBADQo+ID4gLUZyb20gZWI3N2QxZWY2NWUyNTc0NmFjZmY0MzU0NWY2MmE3MTM2MGIxNWVl YyBNb24gU2VwIDE3IDAwOjAwOjAwDQo+ID4gMjAwMQ0KPiA+IC1Gcm9tOiBQZXRlciBKb25lcyA8 cGpvbmVzQHJlZGhhdC5jb20+DQo+ID4gLURhdGU6IE1vbiwgMTUgSnVuIDIwMjAgMTI6Mjg6Mjcg LTA0MDANCj4gPiAtU3ViamVjdDogW1BBVENIIDYvOV0gbWFsbG9jOiBVc2Ugb3ZlcmZsb3cgY2hl Y2tpbmcgcHJpbWl0aXZlcyB3aGVyZQ0KPiA+IHdlIGRvDQo+ID4gLSBjb21wbGV4IGFsbG9jYXRp b25zDQo+ID4gLQ0KPiA+IC1UaGlzIGF0dGVtcHRzIHRvIGZpeCB0aGUgcGxhY2VzIHdoZXJlIHdl IGRvIHRoZSBmb2xsb3dpbmcgd2hlcmUNCj4gPiAtYXJpdGhtZXRpY19leHByIG1heSBpbmNsdWRl IHVudmFsaWRhdGVkIGRhdGE6DQo+ID4gLQ0KPiA+IC3CoCBYID0gZ3J1Yl9tYWxsb2MoYXJpdGht ZXRpY19leHByKTsNCj4gPiAtDQo+ID4gLUl0IGFjY29tcGxpc2hlcyB0aGlzIGJ5IGRvaW5nIHRo ZSBhcml0aG1ldGljIGFoZWFkIG9mIHRpbWUgdXNpbmcNCj4gPiBncnViX2FkZCgpLA0KPiA+IC1n cnViX3N1YigpLCBncnViX211bCgpIGFuZCB0ZXN0aW5nIGZvciBvdmVyZmxvdyBiZWZvcmUgcHJv Y2VlZGluZy4NCj4gPiAtDQo+ID4gLUFtb25nIG90aGVyIGlzc3VlcywgdGhpcyBmaXhlczoNCj4g PiAtwqAgLSBhbGxvY2F0aW9uIG9mIGludGVnZXIgb3ZlcmZsb3cgaW4gZ3J1Yl92aWRlb19iaXRt YXBfY3JlYXRlKCkNCj4gPiAtwqAgwqAgcmVwb3J0ZWQgYnkgQ2hyaXMgQ291bHNvbiwNCj4gPiAt wqAgLSBhbGxvY2F0aW9uIG9mIGludGVnZXIgb3ZlcmZsb3cgaW4gZ3J1Yl9wbmdfZGVjb2RlX2lt YWdlX2hlYWRlcigpDQo+ID4gLcKgIMKgIHJlcG9ydGVkIGJ5IENocmlzIENvdWxzb24sDQo+ID4g LcKgIC0gYWxsb2NhdGlvbiBvZiBpbnRlZ2VyIG92ZXJmbG93IGluIGdydWJfc3F1YXNoX3JlYWRf c3ltbGluaygpDQo+ID4gLcKgIMKgIHJlcG9ydGVkIGJ5IENocmlzIENvdWxzb24sDQo+ID4gLcKg IC0gYWxsb2NhdGlvbiBvZiBpbnRlZ2VyIG92ZXJmbG93IGluIGdydWJfZXh0Ml9yZWFkX3N5bWxp bmsoKQ0KPiA+IC3CoCDCoCByZXBvcnRlZCBieSBDaHJpcyBDb3Vsc29uLA0KPiA+IC3CoCAtIGFs bG9jYXRpb24gb2YgaW50ZWdlciBvdmVyZmxvdyBpbiByZWFkX3NlY3Rpb25fYXNfc3RyaW5nKCkN Cj4gPiAtwqAgwqAgcmVwb3J0ZWQgYnkgQ2hyaXMgQ291bHNvbi4NCj4gPiAtDQo+ID4gLUZpeGVz OiBDVkUtMjAyMC0xNDMwOSwgQ1ZFLTIwMjAtMTQzMTAsIENWRS0yMDIwLTE0MzExDQo+ID4gLQ0K PiA+IC1TaWduZWQtb2ZmLWJ5OiBQZXRlciBKb25lcyA8cGpvbmVzQHJlZGhhdC5jb20+DQo+ID4g LVJldmlld2VkLWJ5OiBEYW5pZWwgS2lwZXIgPGRhbmllbC5raXBlckBvcmFjbGUuY29tPg0KPiA+ IC0NCj4gPiAtVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydA0KPiA+IC1DVkU6IENWRS0yMDIwLTE0 MzA5IENWRS0yMDIwLTE0MzEwIENWRS0yMDIwLTE0MzExDQo+ID4gLQ0KPiA+IC1SZWZlcmVuY2Ug dG8gdXBzdHJlYW0gcGF0Y2g6DQo+ID4gLQ0KPiA+IGh0dHBzOi8vZ2l0LnNhdmFubmFoLmdudS5v cmcvY2dpdC9ncnViLmdpdC9jb21taXQvP2lkPTNmMDVkNjkzZDEyNzQ5NjVmZmJlNGJhOTkwODBk YzJjNTcwOTQ0YzYNCj4gPiAtDQo+ID4gLVNpZ25lZC1vZmYtYnk6IFlvbmd4aW4gTGl1IDx5b25n eGluLmxpdUB3aW5kcml2ZXIuY29tPg0KPiA+IC0tLS0NCj4gPiAtIGdydWItY29yZS9jb21tYW5k cy9sZWdhY3ljZmcuYyB8IDI5ICsrKysrKysrKysrKysrKysrKystLS0tLQ0KPiA+IC0gZ3J1Yi1j b3JlL2NvbW1hbmRzL3dpbGRjYXJkLmPCoCB8IDM2ICsrKysrKysrKysrKysrKysrKysrKysrKy0t LS0tDQo+ID4gLSBncnViLWNvcmUvZGlzay9sZG0uY8KgIMKgIMKgIMKgIMKgIMKgfCAzMiArKysr KysrKysrKysrKysrKystLS0tLS0tLQ0KPiA+IC0gZ3J1Yi1jb3JlL2ZvbnQvZm9udC5jwqAgwqAg wqAgwqAgwqAgfMKgIDcgKysrKystDQo+ID4gLSBncnViLWNvcmUvZnMvYnRyZnMuY8KgIMKgIMKg IMKgIMKgIMKgfCAyOCArKysrKysrKysrKysrKystLS0tLS0tLQ0KPiA+IC0gZ3J1Yi1jb3JlL2Zz L2V4dDIuY8KgIMKgIMKgIMKgIMKgIMKgIHwgMTAgKysrKysrKystDQo+ID4gLSBncnViLWNvcmUv ZnMvaXNvOTY2MC5jwqAgwqAgwqAgwqAgwqB8IDUxICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrLS0NCj4gPiAtLS0tLS0tLS0tLQ0KPiA+IC0gZ3J1Yi1jb3JlL2ZzL3Nmcy5jwqAgwqAgwqAg wqAgwqAgwqAgwqB8IDI3ICsrKysrKysrKysrKysrKysrLS0tLS0NCj4gPiAtIGdydWItY29yZS9m cy9zcXVhc2g0LmPCoCDCoCDCoCDCoCDCoHwgNDUgKysrKysrKysrKysrKysrKysrKysrKysrKysr Ky0tLQ0KPiA+IC0tLS0tLQ0KPiA+IC0gZ3J1Yi1jb3JlL2ZzL3VkZi5jwqAgwqAgwqAgwqAgwqAg wqAgwqB8IDQxICsrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0NCj4gPiAtLQ0KPiA+IC0g Z3J1Yi1jb3JlL2ZzL3hmcy5jwqAgwqAgwqAgwqAgwqAgwqAgwqB8IDExICsrKysrLS0tLQ0KPiA+ IC0gZ3J1Yi1jb3JlL2ZzL3pmcy96ZnMuY8KgIMKgIMKgIMKgIMKgfCAyMiArKysrKysrKysrKyst LS0tLS0NCj4gPiAtIGdydWItY29yZS9mcy96ZnMvemZzY3J5cHQuY8KgIMKgIHzCoCA3ICsrKysr LQ0KPiA+IC0gZ3J1Yi1jb3JlL2xpYi9hcmcuY8KgIMKgIMKgIMKgIMKgIMKgIHwgMjAgKysrKysr KysrKysrKysrLS0NCj4gPiAtIGdydWItY29yZS9sb2FkZXIvaTM4Ni9ic2QuY8KgIMKgIHzCoCA4 ICsrKysrKy0NCj4gPiAtIGdydWItY29yZS9uZXQvZG5zLmPCoCDCoCDCoCDCoCDCoCDCoCB8wqAg OSArKysrKysrLQ0KPiA+IC0gZ3J1Yi1jb3JlL25vcm1hbC9jaGFyc2V0LmPCoCDCoCDCoHwgMTAg KysrKysrKy0tDQo+ID4gLSBncnViLWNvcmUvbm9ybWFsL2NtZGxpbmUuY8KgIMKgIMKgfCAxNCAr KysrKysrKysrLS0NCj4gPiAtIGdydWItY29yZS9ub3JtYWwvbWVudV9lbnRyeS5jwqAgfCAxMyAr KysrKysrKystLQ0KPiA+IC0gZ3J1Yi1jb3JlL3NjcmlwdC9hcmd2LmPCoCDCoCDCoCDCoCB8IDE2 ICsrKysrKysrKysrLS0NCj4gPiAtIGdydWItY29yZS9zY3JpcHQvbGV4ZXIuY8KgIMKgIMKgIMKg fCAyMSArKysrKysrKysrKysrKy0tLQ0KPiA+IC0gZ3J1Yi1jb3JlL3ZpZGVvL2JpdG1hcC5jwqAg wqAgwqAgwqB8IDI1ICsrKysrKysrKysrKystLS0tLS0tLQ0KPiA+IC0gZ3J1Yi1jb3JlL3ZpZGVv L3JlYWRlcnMvcG5nLmPCoCB8IDEzICsrKysrKysrKy0tDQo+ID4gLSAyMyBmaWxlcyBjaGFuZ2Vk LCAzODIgaW5zZXJ0aW9ucygrKSwgMTEzIGRlbGV0aW9ucygtKQ0KPiA+IC0NCj4gPiAtZGlmZiAt LWdpdCBhL2dydWItY29yZS9jb21tYW5kcy9sZWdhY3ljZmcuYyBiL2dydWItDQo+ID4gY29yZS9j b21tYW5kcy9sZWdhY3ljZmcuYw0KPiA+IC1pbmRleCA1ZTNlYzBkLi5jYzU5NzFmIDEwMDY0NA0K PiA+IC0tLS0gYS9ncnViLWNvcmUvY29tbWFuZHMvbGVnYWN5Y2ZnLmMNCj4gPiAtKysrIGIvZ3J1 Yi1jb3JlL2NvbW1hbmRzL2xlZ2FjeWNmZy5jDQo+ID4gLUBAIC0zMiw2ICszMiw3IEBADQo+ID4g LSAjaW5jbHVkZSA8Z3J1Yi9hdXRoLmg+DQo+ID4gLSAjaW5jbHVkZSA8Z3J1Yi9kaXNrLmg+DQo+ ID4gLSAjaW5jbHVkZSA8Z3J1Yi9wYXJ0aXRpb24uaD4NCj4gPiAtKyNpbmNsdWRlIDxncnViL3Nh ZmVtYXRoLmg+DQo+ID4gLSANCj4gPiAtIEdSVUJfTU9EX0xJQ0VOU0UgKCJHUEx2MysiKTsNCj4g PiAtIA0KPiA+IC1AQCAtMTA0LDEzICsxMDUsMjIgQEAgbGVnYWN5X2ZpbGUgKGNvbnN0IGNoYXIg KmZpbGVuYW1lKQ0KPiA+IC3CoCDCoCDCoCDCoGlmIChuZXdzdWZmaXgpDQo+ID4gLcKgIMKgIMKg IMKgIMKgew0KPiA+IC3CoCDCoCDCoCDCoCDCoCDCoGNoYXIgKnQ7DQo+ID4gLS3CoCDCoCDCoCDC oCDCoCANCj4gPiAtK8KgIMKgIMKgIMKgIMKgIGdydWJfc2l6ZV90IHN6Ow0KPiA+IC0rDQo+ID4g LSvCoCDCoCDCoCDCoCDCoCBpZiAoZ3J1Yl9hZGQgKGdydWJfc3RybGVuIChzdWZmaXgpLCBncnVi X3N0cmxlbg0KPiA+IChuZXdzdWZmaXgpLCAmc3opIHx8DQo+ID4gLSvCoCDCoCDCoCDCoCDCoCDC oCDCoCBncnViX2FkZCAoc3osIDEsICZzeikpDQo+ID4gLSvCoCDCoCDCoCDCoCDCoCDCoCB7DQo+ ID4gLSvCoCDCoCDCoCDCoCDCoCDCoCDCoCBncnViX2Vycm5vID0gR1JVQl9FUlJfT1VUX09GX1JB TkdFOw0KPiA+IC0rwqAgwqAgwqAgwqAgwqAgwqAgwqAgZ290byBmYWlsXzA7DQo+ID4gLSvCoCDC oCDCoCDCoCDCoCDCoCB9DQo+ID4gLSsNCj4gPiAtwqAgwqAgwqAgwqAgwqAgwqB0ID0gc3VmZml4 Ow0KPiA+IC0twqAgwqAgwqAgwqAgwqAgc3VmZml4ID0gZ3J1Yl9yZWFsbG9jIChzdWZmaXgsIGdy dWJfc3RybGVuIChzdWZmaXgpDQo+ID4gLS3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCsgZ3J1Yl9zdHJsZW4gKG5ld3N1ZmZpeCkgKyAxKTsNCj4gPiAt K8KgIMKgIMKgIMKgIMKgIHN1ZmZpeCA9IGdydWJfcmVhbGxvYyAoc3VmZml4LCBzeik7DQo+ID4g LcKgIMKgIMKgIMKgIMKgIMKgaWYgKCFzdWZmaXgpDQo+ID4gLcKgIMKgIMKgIMKgIMKgIMKgIMKg ew0KPiA+IC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGdydWJfZnJlZSAodCk7DQo+ID4gLSsNCj4g PiAtKyBmYWlsXzA6DQo+ID4gLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgZ3J1Yl9mcmVlIChlbnRy eXNyYyk7DQo+ID4gLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgZ3J1Yl9mcmVlIChwYXJzZWQpOw0K PiA+IC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGdydWJfZnJlZSAobmV3c3VmZml4KTsNCj4gPiAt QEAgLTE1NCwxMyArMTY0LDIyIEBAIGxlZ2FjeV9maWxlIChjb25zdCBjaGFyICpmaWxlbmFtZSkN Cj4gPiAtwqAgwqAgwqAgwqAgwqBlbHNlDQo+ID4gLcKgIMKgIMKgIMKgIMKgIMKgew0KPiA+IC3C oCDCoCDCoCDCoCDCoCDCoCDCoGNoYXIgKnQ7DQo+ID4gLSvCoCDCoCDCoCDCoCDCoCDCoCBncnVi X3NpemVfdCBzejsNCj4gPiAtKw0KPiA+IC0rwqAgwqAgwqAgwqAgwqAgwqAgaWYgKGdydWJfYWRk IChncnViX3N0cmxlbiAoZW50cnlzcmMpLCBncnViX3N0cmxlbg0KPiA+IChwYXJzZWQpLCAmc3op IHx8DQo+ID4gLSvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBncnViX2FkZCAoc3osIDEsICZzeikp DQo+ID4gLSvCoCDCoCDCoCDCoCDCoCDCoCDCoCB7DQo+ID4gLSvCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCBncnViX2Vycm5vID0gR1JVQl9FUlJfT1VUX09GX1JBTkdFOw0KPiA+IC0rwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgZ290byBmYWlsXzE7DQo+ID4gLSvCoCDCoCDCoCDCoCDCoCDCoCDCoCB9 DQo+ID4gLSANCj4gPiAtwqAgwqAgwqAgwqAgwqAgwqAgwqB0ID0gZW50cnlzcmM7DQo+ID4gLS3C oCDCoCDCoCDCoCDCoCDCoCBlbnRyeXNyYyA9IGdydWJfcmVhbGxvYyAoZW50cnlzcmMsIGdydWJf c3RybGVuDQo+ID4gKGVudHJ5c3JjKQ0KPiA+IC0twqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqArIGdydWJfc3RybGVuIChwYXJzZWQpICsgMSk7 DQo+ID4gLSvCoCDCoCDCoCDCoCDCoCDCoCBlbnRyeXNyYyA9IGdydWJfcmVhbGxvYyAoZW50cnlz cmMsIHN6KTsNCj4gPiAtwqAgwqAgwqAgwqAgwqAgwqAgwqBpZiAoIWVudHJ5c3JjKQ0KPiA+IC3C oCDCoCDCoCDCoCDCoCDCoCDCoCDCoHsNCj4gPiAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBn cnViX2ZyZWUgKHQpOw0KPiA+IC0rDQo+ID4gLSsgZmFpbF8xOg0KPiA+IC3CoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoGdydWJfZnJlZSAocGFyc2VkKTsNCj4gPiAtwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqBncnViX2ZyZWUgKHN1ZmZpeCk7DQo+ID4gLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgcmV0dXJuIGdydWJfZXJybm87DQo+ID4gLWRpZmYgLS1naXQgYS9ncnViLWNvcmUvY29tbWFu ZHMvd2lsZGNhcmQuYyBiL2dydWItDQo+ID4gY29yZS9jb21tYW5kcy93aWxkY2FyZC5jDQo+ID4g LWluZGV4IDRhMTA2Y2EuLmNjMzI5MDMgMTAwNjQ0DQo+ID4gLS0tLSBhL2dydWItY29yZS9jb21t YW5kcy93aWxkY2FyZC5jDQo+ID4gLSsrKyBiL2dydWItY29yZS9jb21tYW5kcy93aWxkY2FyZC5j DQo+ID4gLUBAIC0yMyw2ICsyMyw3IEBADQo+ID4gLSAjaW5jbHVkZSA8Z3J1Yi9maWxlLmg+DQo+ ID4gLSAjaW5jbHVkZSA8Z3J1Yi9kZXZpY2UuaD4NCj4gPiAtICNpbmNsdWRlIDxncnViL3Njcmlw dF9zaC5oPg0KPiA+IC0rI2luY2x1ZGUgPGdydWIvc2FmZW1hdGguaD4NCj4gPiAtIA0KPiA+IC0g I2luY2x1ZGUgPHJlZ2V4Lmg+DQo+ID4gLSANCj4gPiAtQEAgLTQ4LDYgKzQ5LDcgQEAgbWVyZ2Ug KGNoYXIgKipkZXN0LCBjaGFyICoqcHMpDQo+ID4gLcKgIMKgaW50IGk7DQo+ID4gLcKgIMKgaW50 IGo7DQo+ID4gLcKgIMKgY2hhciAqKnA7DQo+ID4gLSvCoCBncnViX3NpemVfdCBzejsNCj4gPiAt IA0KPiA+IC3CoCDCoGlmICghIGRlc3QpDQo+ID4gLcKgIMKgIMKgcmV0dXJuIHBzOw0KPiA+IC1A QCAtNjAsNyArNjIsMTIgQEAgbWVyZ2UgKGNoYXIgKipkZXN0LCBjaGFyICoqcHMpDQo+ID4gLcKg IMKgZm9yIChqID0gMDsgcHNbal07IGorKykNCj4gPiAtwqAgwqAgwqA7DQo+ID4gLSANCj4gPiAt LcKgIHAgPSBncnViX3JlYWxsb2MgKGRlc3QsIHNpemVvZiAoY2hhciopICogKGkgKyBqICsgMSkp Ow0KPiA+IC0rwqAgaWYgKGdydWJfYWRkIChpLCBqLCAmc3opIHx8DQo+ID4gLSvCoCDCoCDCoCBn cnViX2FkZCAoc3osIDEsICZzeikgfHwNCj4gPiAtK8KgIMKgIMKgIGdydWJfbXVsIChzeiwgc2l6 ZW9mIChjaGFyICopLCAmc3opKQ0KPiA+IC0rwqAgwqAgcmV0dXJuIGRlc3Q7DQo+ID4gLSsNCj4g PiAtK8KgIHAgPSBncnViX3JlYWxsb2MgKGRlc3QsIHN6KTsNCj4gPiAtwqAgwqBpZiAoISBwKQ0K PiA+IC3CoCDCoCDCoHsNCj4gPiAtwqAgwqAgwqAgwqBncnViX2ZyZWUgKGRlc3QpOw0KPiA+IC1A QCAtMTE1LDggKzEyMiwxNSBAQCBtYWtlX3JlZ2V4IChjb25zdCBjaGFyICpzdGFydCwgY29uc3Qg Y2hhciAqZW5kLA0KPiA+IHJlZ2V4X3QgKnJlZ2V4cCkNCj4gPiAtwqAgwqBjaGFyIGNoOw0KPiA+ IC3CoCDCoGludCBpID0gMDsNCj4gPiAtwqAgwqB1bnNpZ25lZCBsZW4gPSBlbmQgLSBzdGFydDsN Cj4gPiAtLcKgIGNoYXIgKmJ1ZmZlciA9IGdydWJfbWFsbG9jIChsZW4gKiAyICsgMiArIDEpOyAv KiB3b3JzdCBjYXNlIHNpemUuDQo+ID4gKi8NCj4gPiAtK8KgIGNoYXIgKmJ1ZmZlcjsNCj4gPiAt K8KgIGdydWJfc2l6ZV90IHN6Ow0KPiA+IC0gDQo+ID4gLSvCoCAvKiBXb3JzdCBjYXNlIHNpemUg aXMgKGxlbiAqIDIgKyAyICsgMSkuICovDQo+ID4gLSvCoCBpZiAoZ3J1Yl9tdWwgKGxlbiwgMiwg JnN6KSB8fA0KPiA+IC0rwqAgwqAgwqAgZ3J1Yl9hZGQgKHN6LCAzLCAmc3opKQ0KPiA+IC0rwqAg wqAgcmV0dXJuIDE7DQo+ID4gLSsNCj4gPiAtK8KgIGJ1ZmZlciA9IGdydWJfbWFsbG9jIChzeik7 DQo+ID4gLcKgIMKgaWYgKCEgYnVmZmVyKQ0KPiA+IC3CoCDCoCDCoHJldHVybiAxOw0KPiA+IC0g DQo+ID4gLUBAIC0yMjYsNiArMjQwLDcgQEAgbWF0Y2hfZGV2aWNlc19pdGVyIChjb25zdCBjaGFy ICpuYW1lLCB2b2lkDQo+ID4gKmRhdGEpDQo+ID4gLcKgIMKgc3RydWN0IG1hdGNoX2RldmljZXNf Y3R4ICpjdHggPSBkYXRhOw0KPiA+IC3CoCDCoGNoYXIgKip0Ow0KPiA+IC3CoCDCoGNoYXIgKmJ1 ZmZlcjsNCj4gPiAtK8KgIGdydWJfc2l6ZV90IHN6Ow0KPiA+IC0gDQo+ID4gLcKgIMKgLyogc2tp cCBwYXJ0aXRpb25zIGlmIGFza2VkIHRvLiAqLw0KPiA+IC3CoCDCoGlmIChjdHgtPm5vcGFydHMg JiYgZ3J1Yl9zdHJjaHIgKG5hbWUsICcsJykpDQo+ID4gLUBAIC0yMzksMTEgKzI1NCwxNiBAQCBt YXRjaF9kZXZpY2VzX2l0ZXIgKGNvbnN0IGNoYXIgKm5hbWUsIHZvaWQNCj4gPiAqZGF0YSkNCj4g PiAtwqAgwqBpZiAocmVnZXhlYyAoY3R4LT5yZWdleHAsIGJ1ZmZlciwgMCwgMCwgMCkpDQo+ID4g LcKgIMKgIMKgew0KPiA+IC3CoCDCoCDCoCDCoGdydWJfZHByaW50ZiAoImV4cGFuZCIsICJub3Qg bWF0Y2hlZFxuIik7DQo+ID4gLSsgZmFpbDoNCj4gPiAtwqAgwqAgwqAgwqBncnViX2ZyZWUgKGJ1 ZmZlcik7DQo+ID4gLcKgIMKgIMKgIMKgcmV0dXJuIDA7DQo+ID4gLcKgIMKgIMKgfQ0KPiA+IC0g DQo+ID4gLS3CoCB0ID0gZ3J1Yl9yZWFsbG9jIChjdHgtPmRldnMsIHNpemVvZiAoY2hhciopICog KGN0eC0+bmRldiArIDIpKTsNCj4gPiAtK8KgIGlmIChncnViX2FkZCAoY3R4LT5uZGV2LCAyLCAm c3opIHx8DQo+ID4gLSvCoCDCoCDCoCBncnViX211bCAoc3osIHNpemVvZiAoY2hhciAqKSwgJnN6 KSkNCj4gPiAtK8KgIMKgIGdvdG8gZmFpbDsNCj4gPiAtKw0KPiA+IC0rwqAgdCA9IGdydWJfcmVh bGxvYyAoY3R4LT5kZXZzLCBzeik7DQo+ID4gLcKgIMKgaWYgKCEgdCkNCj4gPiAtwqAgwqAgwqB7 DQo+ID4gLcKgIMKgIMKgIMKgZ3J1Yl9mcmVlIChidWZmZXIpOw0KPiA+IC1AQCAtMzAwLDYgKzMy MCw3IEBAIG1hdGNoX2ZpbGVzX2l0ZXIgKGNvbnN0IGNoYXIgKm5hbWUsDQo+ID4gLcKgIMKgc3Ry dWN0IG1hdGNoX2ZpbGVzX2N0eCAqY3R4ID0gZGF0YTsNCj4gPiAtwqAgwqBjaGFyICoqdDsNCj4g PiAtwqAgwqBjaGFyICpidWZmZXI7DQo+ID4gLSvCoCBncnViX3NpemVfdCBzejsNCj4gPiAtIA0K PiA+IC3CoCDCoC8qIHNraXAgLiBhbmQgLi4gbmFtZXMgKi8NCj4gPiAtwqAgwqBpZiAoZ3J1Yl9z dHJjbXAoIi4iLCBuYW1lKSA9PSAwIHx8IGdydWJfc3RyY21wKCIuLiIsIG5hbWUpID09IDApDQo+ ID4gLUBAIC0zMTUsOSArMzM2LDE0IEBAIG1hdGNoX2ZpbGVzX2l0ZXIgKGNvbnN0IGNoYXIgKm5h bWUsDQo+ID4gLcKgIMKgaWYgKCEgYnVmZmVyKQ0KPiA+IC3CoCDCoCDCoHJldHVybiAxOw0KPiA+ IC0gDQo+ID4gLS3CoCB0ID0gZ3J1Yl9yZWFsbG9jIChjdHgtPmZpbGVzLCBzaXplb2YgKGNoYXIq KSAqIChjdHgtPm5maWxlICsgMikpOw0KPiA+IC0twqAgaWYgKCEgdCkNCj4gPiAtK8KgIGlmIChn cnViX2FkZCAoY3R4LT5uZmlsZSwgMiwgJnN6KSB8fA0KPiA+IC0rwqAgwqAgwqAgZ3J1Yl9tdWwg KHN6LCBzaXplb2YgKGNoYXIgKiksICZzeikpDQo+ID4gLSvCoCDCoCBnb3RvIGZhaWw7DQo+ID4g LSsNCj4gPiAtK8KgIHQgPSBncnViX3JlYWxsb2MgKGN0eC0+ZmlsZXMsIHN6KTsNCj4gPiAtK8Kg IGlmICghdCkNCj4gPiAtwqAgwqAgwqB7DQo+ID4gLSsgZmFpbDoNCj4gPiAtwqAgwqAgwqAgwqBn cnViX2ZyZWUgKGJ1ZmZlcik7DQo+ID4gLcKgIMKgIMKgIMKgcmV0dXJuIDE7DQo+ID4gLcKgIMKg IMKgfQ0KPiA+IC1kaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL2Rpc2svbGRtLmMgYi9ncnViLWNvcmUv ZGlzay9sZG0uYw0KPiA+IC1pbmRleCBlNjMyMzcwLi41OGY4YTUzIDEwMDY0NA0KPiA+IC0tLS0g YS9ncnViLWNvcmUvZGlzay9sZG0uYw0KPiA+IC0rKysgYi9ncnViLWNvcmUvZGlzay9sZG0uYw0K PiA+IC1AQCAtMjUsNiArMjUsNyBAQA0KPiA+IC0gI2luY2x1ZGUgPGdydWIvbXNkb3NfcGFydGl0 aW9uLmg+DQo+ID4gLSAjaW5jbHVkZSA8Z3J1Yi9ncHRfcGFydGl0aW9uLmg+DQo+ID4gLSAjaW5j bHVkZSA8Z3J1Yi9pMThuLmg+DQo+ID4gLSsjaW5jbHVkZSA8Z3J1Yi9zYWZlbWF0aC5oPg0KPiA+ IC0gDQo+ID4gLSAjaWZkZWYgR1JVQl9VVElMDQo+ID4gLSAjaW5jbHVkZSA8Z3J1Yi9lbXUvbWlz Yy5oPg0KPiA+IC1AQCAtMjg5LDYgKzI5MCw3IEBAIG1ha2VfdmcgKGdydWJfZGlza190IGRpc2ss DQo+ID4gLcKgIMKgIMKgIMKgc3RydWN0IGdydWJfbGRtX3ZibGsgdmJsa1tHUlVCX0RJU0tfU0VD VE9SX1NJWkUNCj4gPiAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAvIHNpemVvZiAoc3RydWN0IGdydWJfbGRtX3ZibGspXTsNCj4gPiAtwqAgwqAgwqAgwqB1 bnNpZ25lZCBpOw0KPiA+IC0rwqAgwqAgwqAgZ3J1Yl9zaXplX3Qgc3o7DQo+ID4gLcKgIMKgIMKg IMKgZXJyID0gZ3J1Yl9kaXNrX3JlYWQgKGRpc2ssIGN1cnNlYywgMCwNCj4gPiAtwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBzaXplb2YodmJsayksICZ2YmxrKTsNCj4g PiAtwqAgwqAgwqAgwqBpZiAoZXJyKQ0KPiA+IC1AQCAtMzUwLDcgKzM1MiwxMyBAQCBtYWtlX3Zn IChncnViX2Rpc2tfdCBkaXNrLA0KPiA+IC3CoCDCoCDCoCDCoCDCoCDCoCDCoGdydWJfZnJlZSAo bHYpOw0KPiA+IC3CoCDCoCDCoCDCoCDCoCDCoCDCoGdvdG8gZmFpbDI7DQo+ID4gLcKgIMKgIMKg IMKgIMKgIMKgfQ0KPiA+IC0twqAgwqAgwqAgwqAgbHYtPm5hbWUgPSBncnViX21hbGxvYyAoKnB0 ciArIDEpOw0KPiA+IC0rwqAgwqAgwqAgwqAgaWYgKGdydWJfYWRkICgqcHRyLCAxLCAmc3opKQ0K PiA+IC0rwqAgwqAgwqAgwqAgwqAgew0KPiA+IC0rwqAgwqAgwqAgwqAgwqAgwqAgZ3J1Yl9mcmVl IChsdi0+aW50ZXJuYWxfaWQpOw0KPiA+IC0rwqAgwqAgwqAgwqAgwqAgwqAgZ3J1Yl9mcmVlIChs dik7DQo+ID4gLSvCoCDCoCDCoCDCoCDCoCDCoCBnb3RvIGZhaWwyOw0KPiA+IC0rwqAgwqAgwqAg wqAgwqAgfQ0KPiA+IC0rwqAgwqAgwqAgwqAgbHYtPm5hbWUgPSBncnViX21hbGxvYyAoc3opOw0K PiA+IC3CoCDCoCDCoCDCoCDCoGlmICghbHYtPm5hbWUpDQo+ID4gLcKgIMKgIMKgIMKgIMKgIMKg ew0KPiA+IC3CoCDCoCDCoCDCoCDCoCDCoCDCoGdydWJfZnJlZSAobHYtPmludGVybmFsX2lkKTsN Cj4gPiAtQEAgLTU5OSwxMCArNjA3LDEzIEBAIG1ha2VfdmcgKGdydWJfZGlza190IGRpc2ssDQo+ ID4gLcKgIMKgIMKgIMKgIMKgaWYgKGx2LT5zZWdtZW50cy0+bm9kZV9hbGxvYyA9PSBsdi0+c2Vn bWVudHMtPm5vZGVfY291bnQpDQo+ID4gLcKgIMKgIMKgIMKgIMKgIMKgew0KPiA+IC3CoCDCoCDC oCDCoCDCoCDCoCDCoHZvaWQgKnQ7DQo+ID4gLS3CoCDCoCDCoCDCoCDCoCDCoCBsdi0+c2VnbWVu dHMtPm5vZGVfYWxsb2MgKj0gMjsgDQo+ID4gLS3CoCDCoCDCoCDCoCDCoCDCoCB0ID0gZ3J1Yl9y ZWFsbG9jIChsdi0+c2VnbWVudHMtPm5vZGVzLA0KPiA+IC0twqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgc2l6ZW9mICgqbHYtPnNlZ21lbnRzLT5ub2RlcykNCj4g PiAtLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgICogbHYtPnNl Z21lbnRzLT5ub2RlX2FsbG9jKTsNCj4gPiAtK8KgIMKgIMKgIMKgIMKgIMKgIGdydWJfc2l6ZV90 IHN6Ow0KPiA+IC0rDQo+ID4gLSvCoCDCoCDCoCDCoCDCoCDCoCBpZiAoZ3J1Yl9tdWwgKGx2LT5z ZWdtZW50cy0+bm9kZV9hbGxvYywgMiwgJmx2LQ0KPiA+ID4gc2VnbWVudHMtPm5vZGVfYWxsb2Mp IHx8DQo+ID4gLSvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBncnViX211bCAobHYtPnNlZ21lbnRz LT5ub2RlX2FsbG9jLCBzaXplb2YgKCpsdi0NCj4gPiA+IHNlZ21lbnRzLT5ub2RlcyksICZzeikp DQo+ID4gLSvCoCDCoCDCoCDCoCDCoCDCoCDCoCBnb3RvIGZhaWwyOw0KPiA+IC0rDQo+ID4gLSvC oCDCoCDCoCDCoCDCoCDCoCB0ID0gZ3J1Yl9yZWFsbG9jIChsdi0+c2VnbWVudHMtPm5vZGVzLCBz eik7DQo+ID4gLcKgIMKgIMKgIMKgIMKgIMKgIMKgaWYgKCF0KQ0KPiA+IC3CoCDCoCDCoCDCoCDC oCDCoCDCoCDCoGdvdG8gZmFpbDI7DQo+ID4gLcKgIMKgIMKgIMKgIMKgIMKgIMKgbHYtPnNlZ21l bnRzLT5ub2RlcyA9IHQ7DQo+ID4gLUBAIC03MjMsMTAgKzczNCwxMyBAQCBtYWtlX3ZnIChncnVi X2Rpc2tfdCBkaXNrLA0KPiA+IC3CoCDCoCDCoCDCoCDCoCDCoCDCoGlmIChjb21wLT5zZWdtZW50 X2FsbG9jID09IGNvbXAtPnNlZ21lbnRfY291bnQpDQo+ID4gLcKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgew0KPiA+IC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHZvaWQgKnQ7DQo+ID4gLS3CoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCBjb21wLT5zZWdtZW50X2FsbG9jICo9IDI7DQo+ID4gLS3CoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCB0ID0gZ3J1Yl9yZWFsbG9jIChjb21wLT5zZWdtZW50cywNCj4g PiAtLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGNv bXAtPnNlZ21lbnRfYWxsb2MNCj4gPiAtLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgICogc2l6ZW9mICgqY29tcC0+c2VnbWVudHMpKTsNCj4gPiAtK8Kg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIGdydWJfc2l6ZV90IHN6Ow0KPiA+IC0rDQo+ID4gLSvCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCBpZiAoZ3J1Yl9tdWwgKGNvbXAtPnNlZ21lbnRfYWxsb2MsIDIs ICZjb21wLQ0KPiA+ID4gc2VnbWVudF9hbGxvYykgfHwNCj4gPiAtK8KgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIGdydWJfbXVsIChjb21wLT5zZWdtZW50X2FsbG9jLCBzaXplb2YgKCpjb21w LQ0KPiA+ID4gc2VnbWVudHMpLCAmc3opKQ0KPiA+IC0rwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgZ290byBmYWlsMjsNCj4gPiAtKw0KPiA+IC0rwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdCA9 IGdydWJfcmVhbGxvYyAoY29tcC0+c2VnbWVudHMsIHN6KTsNCj4gPiAtwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqBpZiAoIXQpDQo+ID4gLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgZ290 byBmYWlsMjsNCj4gPiAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBjb21wLT5zZWdtZW50cyA9 IHQ7DQo+ID4gLWRpZmYgLS1naXQgYS9ncnViLWNvcmUvZm9udC9mb250LmMgYi9ncnViLWNvcmUv Zm9udC9mb250LmMNCj4gPiAtaW5kZXggOGUxMThiMy4uNWVkYjQ3NyAxMDA2NDQNCj4gPiAtLS0t IGEvZ3J1Yi1jb3JlL2ZvbnQvZm9udC5jDQo+ID4gLSsrKyBiL2dydWItY29yZS9mb250L2ZvbnQu Yw0KPiA+IC1AQCAtMzAsNiArMzAsNyBAQA0KPiA+IC0gI2luY2x1ZGUgPGdydWIvdW5pY29kZS5o Pg0KPiA+IC0gI2luY2x1ZGUgPGdydWIvZm9udGZvcm1hdC5oPg0KPiA+IC0gI2luY2x1ZGUgPGdy dWIvZW52Lmg+DQo+ID4gLSsjaW5jbHVkZSA8Z3J1Yi9zYWZlbWF0aC5oPg0KPiA+IC0gDQo+ID4g LSBHUlVCX01PRF9MSUNFTlNFICgiR1BMdjMrIik7DQo+ID4gLSANCj4gPiAtQEAgLTM2MCw5ICsz NjEsMTMgQEAgc3RhdGljIGNoYXIgKg0KPiA+IC0gcmVhZF9zZWN0aW9uX2FzX3N0cmluZyAoc3Ry dWN0IGZvbnRfZmlsZV9zZWN0aW9uICpzZWN0aW9uKQ0KPiA+IC0gew0KPiA+IC3CoCDCoGNoYXIg KnN0cjsNCj4gPiAtK8KgIGdydWJfc2l6ZV90IHN6Ow0KPiA+IC3CoCDCoGdydWJfc3NpemVfdCBy ZXQ7DQo+ID4gLSANCj4gPiAtLcKgIHN0ciA9IGdydWJfbWFsbG9jIChzZWN0aW9uLT5sZW5ndGgg KyAxKTsNCj4gPiAtK8KgIGlmIChncnViX2FkZCAoc2VjdGlvbi0+bGVuZ3RoLCAxLCAmc3opKQ0K PiA+IC0rwqAgwqAgcmV0dXJuIE5VTEw7DQo+ID4gLSsNCj4gPiAtK8KgIHN0ciA9IGdydWJfbWFs bG9jIChzeik7DQo+ID4gLcKgIMKgaWYgKCFzdHIpDQo+ID4gLcKgIMKgIMKgcmV0dXJuIDA7DQo+ ID4gLSANCj4gPiAtZGlmZiAtLWdpdCBhL2dydWItY29yZS9mcy9idHJmcy5jIGIvZ3J1Yi1jb3Jl L2ZzL2J0cmZzLmMNCj4gPiAtaW5kZXggMTEyNzJlZi4uMmI2NWJkNSAxMDA2NDQNCj4gPiAtLS0t IGEvZ3J1Yi1jb3JlL2ZzL2J0cmZzLmMNCj4gPiAtKysrIGIvZ3J1Yi1jb3JlL2ZzL2J0cmZzLmMN Cj4gPiAtQEAgLTQwLDYgKzQwLDcgQEANCj4gPiAtICNpbmNsdWRlIDxncnViL2J0cmZzLmg+DQo+ ID4gLSAjaW5jbHVkZSA8Z3J1Yi9jcnlwdG8uaD4NCj4gPiAtICNpbmNsdWRlIDxncnViL2Rpc2tm aWx0ZXIuaD4NCj4gPiAtKyNpbmNsdWRlIDxncnViL3NhZmVtYXRoLmg+DQo+ID4gLSANCj4gPiAt IEdSVUJfTU9EX0xJQ0VOU0UgKCJHUEx2MysiKTsNCj4gPiAtIA0KPiA+IC1AQCAtMzI5LDkgKzMz MCwxMyBAQCBzYXZlX3JlZiAoc3RydWN0IGdydWJfYnRyZnNfbGVhZl9kZXNjcmlwdG9yDQo+ID4g KmRlc2MsDQo+ID4gLcKgIMKgaWYgKGRlc2MtPmFsbG9jYXRlZCA8IGRlc2MtPmRlcHRoKQ0KPiA+ IC3CoCDCoCDCoHsNCj4gPiAtwqAgwqAgwqAgwqB2b2lkICpuZXdkYXRhOw0KPiA+IC0twqAgwqAg wqAgZGVzYy0+YWxsb2NhdGVkICo9IDI7DQo+ID4gLS3CoCDCoCDCoCBuZXdkYXRhID0gZ3J1Yl9y ZWFsbG9jIChkZXNjLT5kYXRhLCBzaXplb2YgKGRlc2MtPmRhdGFbMF0pDQo+ID4gLS3CoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAqIGRlc2MtPmFsbG9jYXRlZCk7DQo+ ID4gLSvCoCDCoCDCoCBncnViX3NpemVfdCBzejsNCj4gPiAtKw0KPiA+IC0rwqAgwqAgwqAgaWYg KGdydWJfbXVsIChkZXNjLT5hbGxvY2F0ZWQsIDIsICZkZXNjLT5hbGxvY2F0ZWQpIHx8DQo+ID4g LSvCoCDCoCDCoCDCoCBncnViX211bCAoZGVzYy0+YWxsb2NhdGVkLCBzaXplb2YgKGRlc2MtPmRh dGFbMF0pLCAmc3opKQ0KPiA+IC0rwqAgwqAgwqAgcmV0dXJuIEdSVUJfRVJSX09VVF9PRl9SQU5H RTsNCj4gPiAtKw0KPiA+IC0rwqAgwqAgwqAgbmV3ZGF0YSA9IGdydWJfcmVhbGxvYyAoZGVzYy0+ ZGF0YSwgc3opOw0KPiA+IC3CoCDCoCDCoCDCoGlmICghbmV3ZGF0YSkNCj4gPiAtwqAgwqAgwqAg wqByZXR1cm4gZ3J1Yl9lcnJubzsNCj4gPiAtwqAgwqAgwqAgwqBkZXNjLT5kYXRhID0gbmV3ZGF0 YTsNCj4gPiAtQEAgLTYyMiwxNiArNjI3LDIxIEBAIGZpbmRfZGV2aWNlIChzdHJ1Y3QgZ3J1Yl9i dHJmc19kYXRhICpkYXRhLA0KPiA+IGdydWJfdWludDY0X3QgaWQpDQo+ID4gLcKgIMKgaWYgKGRh dGEtPm5fZGV2aWNlc19hdHRhY2hlZCA+IGRhdGEtPm5fZGV2aWNlc19hbGxvY2F0ZWQpDQo+ID4g LcKgIMKgIMKgew0KPiA+IC3CoCDCoCDCoCDCoHZvaWQgKnRtcDsNCj4gPiAtLcKgIMKgIMKgIGRh dGEtPm5fZGV2aWNlc19hbGxvY2F0ZWQgPSAyICogZGF0YS0+bl9kZXZpY2VzX2F0dGFjaGVkICsg MTsNCj4gPiAtLcKgIMKgIMKgIGRhdGEtPmRldmljZXNfYXR0YWNoZWQNCj4gPiAtLcKgIMKgIMKg ID0gZ3J1Yl9yZWFsbG9jICh0bXAgPSBkYXRhLT5kZXZpY2VzX2F0dGFjaGVkLA0KPiA+IC0twqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZGF0YS0+bl9kZXZpY2VzX2FsbG9jYXRlZA0K PiA+IC0twqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgKiBzaXplb2YgKGRhdGEtPmRl dmljZXNfYXR0YWNoZWRbMF0pKTsNCj4gPiAtK8KgIMKgIMKgIGdydWJfc2l6ZV90IHN6Ow0KPiA+ IC0rDQo+ID4gLSvCoCDCoCDCoCBpZiAoZ3J1Yl9tdWwgKGRhdGEtPm5fZGV2aWNlc19hdHRhY2hl ZCwgMiwgJmRhdGEtDQo+ID4gPiBuX2RldmljZXNfYWxsb2NhdGVkKSB8fA0KPiA+IC0rwqAgwqAg wqAgwqAgZ3J1Yl9hZGQgKGRhdGEtPm5fZGV2aWNlc19hbGxvY2F0ZWQsIDEsICZkYXRhLQ0KPiA+ ID4gbl9kZXZpY2VzX2FsbG9jYXRlZCkgfHwNCj4gPiAtK8KgIMKgIMKgIMKgIGdydWJfbXVsIChk YXRhLT5uX2RldmljZXNfYWxsb2NhdGVkLCBzaXplb2YgKGRhdGEtDQo+ID4gPiBkZXZpY2VzX2F0 dGFjaGVkWzBdKSwgJnN6KSkNCj4gPiAtK8KgIMKgIMKgIGdvdG8gZmFpbDsNCj4gPiAtKw0KPiA+ IC0rwqAgwqAgwqAgZGF0YS0+ZGV2aWNlc19hdHRhY2hlZCA9IGdydWJfcmVhbGxvYyAodG1wID0g ZGF0YS0NCj4gPiA+IGRldmljZXNfYXR0YWNoZWQsIHN6KTsNCj4gPiAtwqAgwqAgwqAgwqBpZiAo IWRhdGEtPmRldmljZXNfYXR0YWNoZWQpDQo+ID4gLcKgIMKgIMKgIMKgew0KPiA+IC0rwqAgwqAg wqAgwqAgZGF0YS0+ZGV2aWNlc19hdHRhY2hlZCA9IHRtcDsNCj4gPiAtKw0KPiA+IC0rIGZhaWw6 DQo+ID4gLcKgIMKgIMKgIMKgIMKgaWYgKGN0eC5kZXZfZm91bmQpDQo+ID4gLcKgIMKgIMKgIMKg IMKgIMKgZ3J1Yl9kZXZpY2VfY2xvc2UgKGN0eC5kZXZfZm91bmQpOw0KPiA+IC0twqAgwqAgwqAg wqAgZGF0YS0+ZGV2aWNlc19hdHRhY2hlZCA9IHRtcDsNCj4gPiAtwqAgwqAgwqAgwqAgwqByZXR1 cm4gTlVMTDsNCj4gPiAtwqAgwqAgwqAgwqB9DQo+ID4gLcKgIMKgIMKgfQ0KPiA+IC1kaWZmIC0t Z2l0IGEvZ3J1Yi1jb3JlL2ZzL2V4dDIuYyBiL2dydWItY29yZS9mcy9leHQyLmMNCj4gPiAtaW5k ZXggOWIzODk4MC4uYWMzM2JjZCAxMDA2NDQNCj4gPiAtLS0tIGEvZ3J1Yi1jb3JlL2ZzL2V4dDIu Yw0KPiA+IC0rKysgYi9ncnViLWNvcmUvZnMvZXh0Mi5jDQo+ID4gLUBAIC00Niw2ICs0Niw3IEBA DQo+ID4gLSAjaW5jbHVkZSA8Z3J1Yi9kbC5oPg0KPiA+IC0gI2luY2x1ZGUgPGdydWIvdHlwZXMu aD4NCj4gPiAtICNpbmNsdWRlIDxncnViL2ZzaGVscC5oPg0KPiA+IC0rI2luY2x1ZGUgPGdydWIv c2FmZW1hdGguaD4NCj4gPiAtIA0KPiA+IC0gR1JVQl9NT0RfTElDRU5TRSAoIkdQTHYzKyIpOw0K PiA+IC0gDQo+ID4gLUBAIC03MDMsNiArNzA0LDcgQEAgZ3J1Yl9leHQyX3JlYWRfc3ltbGluayAo Z3J1Yl9mc2hlbHBfbm9kZV90IG5vZGUpDQo+ID4gLSB7DQo+ID4gLcKgIMKgY2hhciAqc3ltbGlu azsNCj4gPiAtwqAgwqBzdHJ1Y3QgZ3J1Yl9mc2hlbHBfbm9kZSAqZGlybyA9IG5vZGU7DQo+ID4g LSvCoCBncnViX3NpemVfdCBzejsNCj4gPiAtIA0KPiA+IC3CoCDCoGlmICghIGRpcm8tPmlub2Rl X3JlYWQpDQo+ID4gLcKgIMKgIMKgew0KPiA+IC1AQCAtNzE3LDcgKzcxOSwxMyBAQCBncnViX2V4 dDJfcmVhZF9zeW1saW5rIChncnViX2ZzaGVscF9ub2RlX3QNCj4gPiBub2RlKQ0KPiA+IC3CoCDC oCDCoCDCoCB9DQo+ID4gLcKgIMKgIMKgfQ0KPiA+IC0gDQo+ID4gLS3CoCBzeW1saW5rID0gZ3J1 Yl9tYWxsb2MgKGdydWJfbGVfdG9fY3B1MzIgKGRpcm8tPmlub2RlLnNpemUpICsgMSk7DQo+ID4g LSvCoCBpZiAoZ3J1Yl9hZGQgKGdydWJfbGVfdG9fY3B1MzIgKGRpcm8tPmlub2RlLnNpemUpLCAx LCAmc3opKQ0KPiA+IC0rwqAgwqAgew0KPiA+IC0rwqAgwqAgwqAgZ3J1Yl9lcnJvciAoR1JVQl9F UlJfT1VUX09GX1JBTkdFLCBOXygib3ZlcmZsb3cgaXMNCj4gPiBkZXRlY3RlZCIpKTsNCj4gPiAt K8KgIMKgIMKgIHJldHVybiBOVUxMOw0KPiA+IC0rwqAgwqAgfQ0KPiA+IC0rDQo+ID4gLSvCoCBz eW1saW5rID0gZ3J1Yl9tYWxsb2MgKHN6KTsNCj4gPiAtwqAgwqBpZiAoISBzeW1saW5rKQ0KPiA+ IC3CoCDCoCDCoHJldHVybiAwOw0KPiA+IC0gDQo+ID4gLWRpZmYgLS1naXQgYS9ncnViLWNvcmUv ZnMvaXNvOTY2MC5jIGIvZ3J1Yi1jb3JlL2ZzL2lzbzk2NjAuYw0KPiA+IC1pbmRleCA0ZjFiNTJh Li43YmE1YjMwIDEwMDY0NA0KPiA+IC0tLS0gYS9ncnViLWNvcmUvZnMvaXNvOTY2MC5jDQo+ID4g LSsrKyBiL2dydWItY29yZS9mcy9pc285NjYwLmMNCj4gPiAtQEAgLTI4LDYgKzI4LDcgQEANCj4g PiAtICNpbmNsdWRlIDxncnViL2ZzaGVscC5oPg0KPiA+IC0gI2luY2x1ZGUgPGdydWIvY2hhcnNl dC5oPg0KPiA+IC0gI2luY2x1ZGUgPGdydWIvZGF0ZXRpbWUuaD4NCj4gPiAtKyNpbmNsdWRlIDxn cnViL3NhZmVtYXRoLmg+DQo+ID4gLSANCj4gPiAtIEdSVUJfTU9EX0xJQ0VOU0UgKCJHUEx2Mysi KTsNCj4gPiAtIA0KPiA+IC1AQCAtNTMxLDggKzUzMiwxMyBAQCBhZGRfcGFydCAoc3RydWN0IGl0 ZXJhdGVfZGlyX2N0eCAqY3R4LA0KPiA+IC3CoCDCoCDCoCDCoCDCoGludCBsZW4yKQ0KPiA+IC0g ew0KPiA+IC3CoCDCoGludCBzaXplID0gY3R4LT5zeW1saW5rID8gZ3J1Yl9zdHJsZW4gKGN0eC0+ c3ltbGluaykgOiAwOw0KPiA+IC0rwqAgZ3J1Yl9zaXplX3Qgc3o7DQo+ID4gLSANCj4gPiAtLcKg IGN0eC0+c3ltbGluayA9IGdydWJfcmVhbGxvYyAoY3R4LT5zeW1saW5rLCBzaXplICsgbGVuMiAr IDEpOw0KPiA+IC0rwqAgaWYgKGdydWJfYWRkIChzaXplLCBsZW4yLCAmc3opIHx8DQo+ID4gLSvC oCDCoCDCoCBncnViX2FkZCAoc3osIDEsICZzeikpDQo+ID4gLSvCoCDCoCByZXR1cm47DQo+ID4g LSsNCj4gPiAtK8KgIGN0eC0+c3ltbGluayA9IGdydWJfcmVhbGxvYyAoY3R4LT5zeW1saW5rLCBz eik7DQo+ID4gLcKgIMKgaWYgKCEgY3R4LT5zeW1saW5rKQ0KPiA+IC3CoCDCoCDCoHJldHVybjsN Cj4gPiAtIA0KPiA+IC1AQCAtNTYwLDE3ICs1NjYsMjQgQEAgc3VzcF9pdGVyYXRlX2RpciAoc3Ry dWN0DQo+ID4gZ3J1Yl9pc285NjYwX3N1c3BfZW50cnkgKmVudHJ5LA0KPiA+IC3CoCDCoCDCoCDC oHsNCj4gPiAtwqAgwqAgwqAgwqAgwqBncnViX3NpemVfdCBvZmYgPSAwLCBjc2l6ZSA9IDE7DQo+ ID4gLcKgIMKgIMKgIMKgIMKgY2hhciAqb2xkOw0KPiA+IC0rwqAgwqAgwqAgwqAgZ3J1Yl9zaXpl X3Qgc3o7DQo+ID4gLSsNCj4gPiAtwqAgwqAgwqAgwqAgwqBjc2l6ZSA9IGVudHJ5LT5sZW4gLSA1 Ow0KPiA+IC3CoCDCoCDCoCDCoCDCoG9sZCA9IGN0eC0+ZmlsZW5hbWU7DQo+ID4gLcKgIMKgIMKg IMKgIMKgaWYgKGN0eC0+ZmlsZW5hbWVfYWxsb2MpDQo+ID4gLcKgIMKgIMKgIMKgIMKgIMKgew0K PiA+IC3CoCDCoCDCoCDCoCDCoCDCoCDCoG9mZiA9IGdydWJfc3RybGVuIChjdHgtPmZpbGVuYW1l KTsNCj4gPiAtLcKgIMKgIMKgIMKgIMKgIMKgIGN0eC0+ZmlsZW5hbWUgPSBncnViX3JlYWxsb2Mg KGN0eC0+ZmlsZW5hbWUsIGNzaXplICsNCj4gPiBvZmYgKyAxKTsNCj4gPiAtK8KgIMKgIMKgIMKg IMKgIMKgIGlmIChncnViX2FkZCAoY3NpemUsIG9mZiwgJnN6KSB8fA0KPiA+IC0rwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgZ3J1Yl9hZGQgKHN6LCAxLCAmc3opKQ0KPiA+IC0rwqAgwqAgwqAgwqAg wqAgwqAgwqAgcmV0dXJuIEdSVUJfRVJSX09VVF9PRl9SQU5HRTsNCj4gPiAtK8KgIMKgIMKgIMKg IMKgIMKgIGN0eC0+ZmlsZW5hbWUgPSBncnViX3JlYWxsb2MgKGN0eC0+ZmlsZW5hbWUsIHN6KTsN Cj4gPiAtwqAgwqAgwqAgwqAgwqAgwqB9DQo+ID4gLcKgIMKgIMKgIMKgIMKgZWxzZQ0KPiA+IC3C oCDCoCDCoCDCoCDCoCDCoHsNCj4gPiAtwqAgwqAgwqAgwqAgwqAgwqAgwqBvZmYgPSAwOw0KPiA+ IC0twqAgwqAgwqAgwqAgwqAgwqAgY3R4LT5maWxlbmFtZSA9IGdydWJfemFsbG9jIChjc2l6ZSAr IDEpOw0KPiA+IC0rwqAgwqAgwqAgwqAgwqAgwqAgaWYgKGdydWJfYWRkIChjc2l6ZSwgMSwgJnN6 KSkNCj4gPiAtK8KgIMKgIMKgIMKgIMKgIMKgIMKgIHJldHVybiBHUlVCX0VSUl9PVVRfT0ZfUkFO R0U7DQo+ID4gLSvCoCDCoCDCoCDCoCDCoCDCoCBjdHgtPmZpbGVuYW1lID0gZ3J1Yl96YWxsb2Mg KHN6KTsNCj4gPiAtwqAgwqAgwqAgwqAgwqAgwqB9DQo+ID4gLcKgIMKgIMKgIMKgIMKgaWYgKCFj dHgtPmZpbGVuYW1lKQ0KPiA+IC3CoCDCoCDCoCDCoCDCoCDCoHsNCj4gPiAtQEAgLTc3NiwxNCAr Nzg5LDE4IEBAIGdydWJfaXNvOTY2MF9pdGVyYXRlX2RpciAoZ3J1Yl9mc2hlbHBfbm9kZV90DQo+ ID4gZGlyLA0KPiA+IC3CoCDCoCDCoCDCoCDCoCDCoGlmIChub2RlLT5oYXZlX2RpcmVudHMgPj0g bm9kZS0+YWxsb2NfZGlyZW50cykNCj4gPiAtwqAgwqAgwqAgwqAgwqAgwqAgwqB7DQo+ID4gLcKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgc3RydWN0IGdydWJfZnNoZWxwX25vZGUgKm5ld19ub2RlOw0K PiA+IC0twqAgwqAgwqAgwqAgwqAgwqAgwqAgbm9kZS0+YWxsb2NfZGlyZW50cyAqPSAyOw0KPiA+ IC0twqAgwqAgwqAgwqAgwqAgwqAgwqAgbmV3X25vZGUgPSBncnViX3JlYWxsb2MgKG5vZGUsIA0K PiA+IC0twqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqBzaXplb2YgKHN0cnVjdA0KPiA+IGdydWJfZnNoZWxwX25vZGUpDQo+ID4gLS3CoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCsg KChub2RlLT5hbGxvY19kaXJlbnRzDQo+ID4gLS3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoC0gQVJSQVlfU0laRSAobm9kZS0N Cj4gPiA+IGRpcmVudHMpKQ0KPiA+IC0twqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgKiBzaXplb2YgKG5vZGUtDQo+ID4gPiBkaXJl bnRzWzBdKSkpOw0KPiA+IC0rwqAgwqAgwqAgwqAgwqAgwqAgwqAgZ3J1Yl9zaXplX3Qgc3o7DQo+ ID4gLSsNCj4gPiAtK8KgIMKgIMKgIMKgIMKgIMKgIMKgIGlmIChncnViX211bCAobm9kZS0+YWxs b2NfZGlyZW50cywgMiwgJm5vZGUtDQo+ID4gPiBhbGxvY19kaXJlbnRzKSB8fA0KPiA+IC0rwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZ3J1Yl9zdWIgKG5vZGUtPmFsbG9jX2RpcmVudHMsIEFS UkFZX1NJWkUgKG5vZGUtDQo+ID4gPiBkaXJlbnRzKSwgJnN6KSB8fA0KPiA+IC0rwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgZ3J1Yl9tdWwgKHN6LCBzaXplb2YgKG5vZGUtPmRpcmVudHNbMF0p LCAmc3opIHx8DQo+ID4gLSvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBncnViX2FkZCAoc3os IHNpemVvZiAoc3RydWN0IGdydWJfZnNoZWxwX25vZGUpLA0KPiA+ICZzeikpDQo+ID4gLSvCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCBnb3RvIGZhaWxfMDsNCj4gPiAtKw0KPiA+IC0rwqAgwqAgwqAg wqAgwqAgwqAgwqAgbmV3X25vZGUgPSBncnViX3JlYWxsb2MgKG5vZGUsIHN6KTsNCj4gPiAtwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqBpZiAoIW5ld19ub2RlKQ0KPiA+IC3CoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoHsNCj4gPiAtKyBmYWlsXzA6DQo+ID4gLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgaWYgKGN0eC5maWxlbmFtZV9hbGxvYykNCj4gPiAtwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqBncnViX2ZyZWUgKGN0eC5maWxlbmFtZSk7DQo+ID4gLcKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgZ3J1Yl9mcmVlIChub2RlKTsNCj4gPiAtQEAgLTc5OSwxNCArODE2LDE4 IEBAIGdydWJfaXNvOTY2MF9pdGVyYXRlX2RpciAoZ3J1Yl9mc2hlbHBfbm9kZV90DQo+ID4gZGly LA0KPiA+IC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCogc2l6ZW9mIChub2RlLT5kaXJlbnRzWzBd KSA8IGdydWJfc3RybGVuDQo+ID4gKGN0eC5zeW1saW5rKSArIDEpDQo+ID4gLcKgIMKgIMKgIMKg IMKgIMKgIMKgew0KPiA+IC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHN0cnVjdCBncnViX2ZzaGVs cF9ub2RlICpuZXdfbm9kZTsNCj4gPiAtLcKgIMKgIMKgIMKgIMKgIMKgIMKgIG5ld19ub2RlID0g Z3J1Yl9yZWFsbG9jIChub2RlLA0KPiA+IC0twqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBzaXplb2YgKHN0cnVjdA0KPiA+IGdydWJfZnNo ZWxwX25vZGUpDQo+ID4gLS3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCsgKChub2RlLT5hbGxvY19kaXJlbnRzDQo+ID4gLS3CoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oC0gQVJSQVlfU0laRSAobm9kZS0NCj4gPiA+IGRpcmVudHMpKQ0KPiA+IC0twqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgKiBzaXpl b2YgKG5vZGUtDQo+ID4gPiBkaXJlbnRzWzBdKSkNCj4gPiAtLcKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgKyBncnViX3N0cmxlbiAoY3R4 LnN5bWxpbmspDQo+ID4gKyAxKTsNCj4gPiAtK8KgIMKgIMKgIMKgIMKgIMKgIMKgIGdydWJfc2l6 ZV90IHN6Ow0KPiA+IC0rDQo+ID4gLSvCoCDCoCDCoCDCoCDCoCDCoCDCoCBpZiAoZ3J1Yl9zdWIg KG5vZGUtPmFsbG9jX2RpcmVudHMsIEFSUkFZX1NJWkUgKG5vZGUtDQo+ID4gPiBkaXJlbnRzKSwg JnN6KSB8fA0KPiA+IC0rwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZ3J1Yl9tdWwgKHN6LCBz aXplb2YgKG5vZGUtPmRpcmVudHNbMF0pLCAmc3opIHx8DQo+ID4gLSvCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCBncnViX2FkZCAoc3osIHNpemVvZiAoc3RydWN0IGdydWJfZnNoZWxwX25vZGUp ICsNCj4gPiAxLCAmc3opIHx8DQo+ID4gLSvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBncnVi X2FkZCAoc3osIGdydWJfc3RybGVuIChjdHguc3ltbGluayksICZzeikpDQo+ID4gLSvCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCBnb3RvIGZhaWxfMTsNCj4gPiAtKw0KPiA+IC0rwqAgwqAgwqAgwqAg wqAgwqAgwqAgbmV3X25vZGUgPSBncnViX3JlYWxsb2MgKG5vZGUsIHN6KTsNCj4gPiAtwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqBpZiAoIW5ld19ub2RlKQ0KPiA+IC3CoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoHsNCj4gPiAtKyBmYWlsXzE6DQo+ID4gLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgaWYgKGN0eC5maWxlbmFtZV9hbGxvYykNCj4gPiAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqBncnViX2ZyZWUgKGN0eC5maWxlbmFtZSk7DQo+ID4gLcKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgZ3J1Yl9mcmVlIChub2RlKTsNCj4gPiAtZGlmZiAtLWdpdCBhL2dydWItY29y ZS9mcy9zZnMuYyBiL2dydWItY29yZS9mcy9zZnMuYw0KPiA+IC1pbmRleCA5MGY3ZmIzLi5kZTJi MTA3IDEwMDY0NA0KPiA+IC0tLS0gYS9ncnViLWNvcmUvZnMvc2ZzLmMNCj4gPiAtKysrIGIvZ3J1 Yi1jb3JlL2ZzL3Nmcy5jDQo+ID4gLUBAIC0yNiw2ICsyNiw3IEBADQo+ID4gLSAjaW5jbHVkZSA8 Z3J1Yi90eXBlcy5oPg0KPiA+IC0gI2luY2x1ZGUgPGdydWIvZnNoZWxwLmg+DQo+ID4gLSAjaW5j bHVkZSA8Z3J1Yi9jaGFyc2V0Lmg+DQo+ID4gLSsjaW5jbHVkZSA8Z3J1Yi9zYWZlbWF0aC5oPg0K PiA+IC0gDQo+ID4gLSBHUlVCX01PRF9MSUNFTlNFICgiR1BMdjMrIik7DQo+ID4gLSANCj4gPiAt QEAgLTMwNywxMCArMzA4LDE1IEBAIGdydWJfc2ZzX3JlYWRfYmxvY2sgKGdydWJfZnNoZWxwX25v ZGVfdCBub2RlLA0KPiA+IGdydWJfZGlza19hZGRyX3QgZmlsZWJsb2NrKQ0KPiA+IC3CoCDCoCDC oCDCoGlmIChub2RlLT5jYWNoZSAmJiBub2RlLT5jYWNoZV9zaXplID49IG5vZGUtPmNhY2hlX2Fs bG9jYXRlZCkNCj4gPiAtwqAgwqAgwqAgwqB7DQo+ID4gLcKgIMKgIMKgIMKgIMKgc3RydWN0IGNh Y2hlX2VudHJ5ICplID0gbm9kZS0+Y2FjaGU7DQo+ID4gLS3CoCDCoCDCoCDCoCBlID0gZ3J1Yl9y ZWFsbG9jIChub2RlLT5jYWNoZSxub2RlLT5jYWNoZV9hbGxvY2F0ZWQgKiAyDQo+ID4gLS3CoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAqIHNpemVvZiAoZVswXSkpOw0KPiA+ IC0rwqAgwqAgwqAgwqAgZ3J1Yl9zaXplX3Qgc3o7DQo+ID4gLSsNCj4gPiAtK8KgIMKgIMKgIMKg IGlmIChncnViX211bCAobm9kZS0+Y2FjaGVfYWxsb2NhdGVkLCAyICogc2l6ZW9mIChlWzBdKSwN Cj4gPiAmc3opKQ0KPiA+IC0rwqAgwqAgwqAgwqAgwqAgZ290byBmYWlsOw0KPiA+IC0rDQo+ID4g LSvCoCDCoCDCoCDCoCBlID0gZ3J1Yl9yZWFsbG9jIChub2RlLT5jYWNoZSwgc3opOw0KPiA+IC3C oCDCoCDCoCDCoCDCoGlmICghZSkNCj4gPiAtwqAgwqAgwqAgwqAgwqAgwqB7DQo+ID4gLSsgZmFp bDoNCj4gPiAtwqAgwqAgwqAgwqAgwqAgwqAgwqBncnViX2Vycm5vID0gMDsNCj4gPiAtwqAgwqAg wqAgwqAgwqAgwqAgwqBncnViX2ZyZWUgKG5vZGUtPmNhY2hlKTsNCj4gPiAtwqAgwqAgwqAgwqAg wqAgwqAgwqBub2RlLT5jYWNoZSA9IDA7DQo+ID4gLUBAIC00NzcsMTAgKzQ4MywxNiBAQCBncnVi X3Nmc19jcmVhdGVfbm9kZSAoc3RydWN0IGdydWJfZnNoZWxwX25vZGUNCj4gPiAqKm5vZGUsDQo+ ID4gLcKgIMKgZ3J1Yl9zaXplX3QgbGVuID0gZ3J1Yl9zdHJsZW4gKG5hbWUpOw0KPiA+IC3CoCDC oGdydWJfdWludDhfdCAqbmFtZV91ODsNCj4gPiAtwqAgwqBpbnQgcmV0Ow0KPiA+IC0rwqAgZ3J1 Yl9zaXplX3Qgc3o7DQo+ID4gLSsNCj4gPiAtK8KgIGlmIChncnViX211bCAobGVuLCBHUlVCX01B WF9VVEY4X1BFUl9MQVRJTjEsICZzeikgfHwNCj4gPiAtK8KgIMKgIMKgIGdydWJfYWRkIChzeiwg MSwgJnN6KSkNCj4gPiAtK8KgIMKgIHJldHVybiAxOw0KPiA+IC0rDQo+ID4gLcKgIMKgKm5vZGUg PSBncnViX21hbGxvYyAoc2l6ZW9mICgqKm5vZGUpKTsNCj4gPiAtwqAgwqBpZiAoISpub2RlKQ0K PiA+IC3CoCDCoCDCoHJldHVybiAxOw0KPiA+IC0twqAgbmFtZV91OCA9IGdydWJfbWFsbG9jIChs ZW4gKiBHUlVCX01BWF9VVEY4X1BFUl9MQVRJTjEgKyAxKTsNCj4gPiAtK8KgIG5hbWVfdTggPSBn cnViX21hbGxvYyAoc3opOw0KPiA+IC3CoCDCoGlmICghbmFtZV91OCkNCj4gPiAtwqAgwqAgwqB7 DQo+ID4gLcKgIMKgIMKgIMKgZ3J1Yl9mcmVlICgqbm9kZSk7DQo+ID4gLUBAIC03MjQsOCArNzM2 LDEzIEBAIGdydWJfc2ZzX2xhYmVsIChncnViX2RldmljZV90IGRldmljZSwgY2hhcg0KPiA+ICoq bGFiZWwpDQo+ID4gLcKgIMKgZGF0YSA9IGdydWJfc2ZzX21vdW50IChkaXNrKTsNCj4gPiAtwqAg wqBpZiAoZGF0YSkNCj4gPiAtwqAgwqAgwqB7DQo+ID4gLS3CoCDCoCDCoCBncnViX3NpemVfdCBs ZW4gPSBncnViX3N0cmxlbiAoZGF0YS0+bGFiZWwpOw0KPiA+IC0twqAgwqAgwqAgKmxhYmVsID0g Z3J1Yl9tYWxsb2MgKGxlbiAqIEdSVUJfTUFYX1VURjhfUEVSX0xBVElOMSArIDEpOw0KPiA+IC0r wqAgwqAgwqAgZ3J1Yl9zaXplX3Qgc3osIGxlbiA9IGdydWJfc3RybGVuIChkYXRhLT5sYWJlbCk7 DQo+ID4gLSsNCj4gPiAtK8KgIMKgIMKgIGlmIChncnViX211bCAobGVuLCBHUlVCX01BWF9VVEY4 X1BFUl9MQVRJTjEsICZzeikgfHwNCj4gPiAtK8KgIMKgIMKgIMKgIGdydWJfYWRkIChzeiwgMSwg JnN6KSkNCj4gPiAtK8KgIMKgIMKgIHJldHVybiBHUlVCX0VSUl9PVVRfT0ZfUkFOR0U7DQo+ID4g LSsNCj4gPiAtK8KgIMKgIMKgICpsYWJlbCA9IGdydWJfbWFsbG9jIChzeik7DQo+ID4gLcKgIMKg IMKgIMKgaWYgKCpsYWJlbCkNCj4gPiAtwqAgwqAgwqAgwqAqZ3J1Yl9sYXRpbjFfdG9fdXRmOCAo KGdydWJfdWludDhfdCAqKSAqbGFiZWwsDQo+ID4gLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgKGNvbnN0IGdydWJfdWludDhfdCAqKSBkYXRhLT5sYWJlbCwNCj4g PiAtZGlmZiAtLWdpdCBhL2dydWItY29yZS9mcy9zcXVhc2g0LmMgYi9ncnViLWNvcmUvZnMvc3F1 YXNoNC5jDQo+ID4gLWluZGV4IDk1ZDVjMWUuLjc4NTEyMzggMTAwNjQ0DQo+ID4gLS0tLSBhL2dy dWItY29yZS9mcy9zcXVhc2g0LmMNCj4gPiAtKysrIGIvZ3J1Yi1jb3JlL2ZzL3NxdWFzaDQuYw0K PiA+IC1AQCAtMjYsNiArMjYsNyBAQA0KPiA+IC0gI2luY2x1ZGUgPGdydWIvdHlwZXMuaD4NCj4g PiAtICNpbmNsdWRlIDxncnViL2ZzaGVscC5oPg0KPiA+IC0gI2luY2x1ZGUgPGdydWIvZGVmbGF0 ZS5oPg0KPiA+IC0rI2luY2x1ZGUgPGdydWIvc2FmZW1hdGguaD4NCj4gPiAtICNpbmNsdWRlIDxt aW5pbHpvLmg+DQo+ID4gLSANCj4gPiAtICNpbmNsdWRlICJ4ei5oIg0KPiA+IC1AQCAtNDU5LDcg KzQ2MCwxNyBAQCBncnViX3NxdWFzaF9yZWFkX3N5bWxpbmsgKGdydWJfZnNoZWxwX25vZGVfdA0K PiA+IG5vZGUpDQo+ID4gLSB7DQo+ID4gLcKgIMKgY2hhciAqcmV0Ow0KPiA+IC3CoCDCoGdydWJf ZXJyX3QgZXJyOw0KPiA+IC0twqAgcmV0ID0gZ3J1Yl9tYWxsb2MgKGdydWJfbGVfdG9fY3B1MzIg KG5vZGUtPmluby5zeW1saW5rLm5hbWVsZW4pICsNCj4gPiAxKTsNCj4gPiAtK8KgIGdydWJfc2l6 ZV90IHN6Ow0KPiA+IC0rDQo+ID4gLSvCoCBpZiAoZ3J1Yl9hZGQgKGdydWJfbGVfdG9fY3B1MzIg KG5vZGUtPmluby5zeW1saW5rLm5hbWVsZW4pLCAxLA0KPiA+ICZzeikpDQo+ID4gLSvCoCDCoCB7 DQo+ID4gLSvCoCDCoCDCoCBncnViX2Vycm9yIChHUlVCX0VSUl9PVVRfT0ZfUkFOR0UsIE5fKCJv dmVyZmxvdyBpcw0KPiA+IGRldGVjdGVkIikpOw0KPiA+IC0rwqAgwqAgwqAgcmV0dXJuIE5VTEw7 DQo+ID4gLSvCoCDCoCB9DQo+ID4gLSsNCj4gPiAtK8KgIHJldCA9IGdydWJfbWFsbG9jIChzeik7 DQo+ID4gLSvCoCBpZiAoIXJldCkNCj4gPiAtK8KgIMKgIHJldHVybiBOVUxMOw0KPiA+IC0gDQo+ ID4gLcKgIMKgZXJyID0gcmVhZF9jaHVuayAobm9kZS0+ZGF0YSwgcmV0LA0KPiA+IC3CoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoGdydWJfbGVfdG9fY3B1MzIgKG5vZGUtPmluby5zeW1saW5r Lm5hbWVsZW4pLA0KPiA+IC1AQCAtNTA2LDExICs1MTcsMTYgQEAgZ3J1Yl9zcXVhc2hfaXRlcmF0 ZV9kaXIgKGdydWJfZnNoZWxwX25vZGVfdA0KPiA+IGRpciwNCj4gPiAtIA0KPiA+IC3CoCDCoHsN Cj4gPiAtwqAgwqAgwqBncnViX2ZzaGVscF9ub2RlX3Qgbm9kZTsNCj4gPiAtLcKgIMKgIG5vZGUg PSBncnViX21hbGxvYyAoc2l6ZW9mICgqbm9kZSkgKyBkaXItPnN0c2l6ZSAqIHNpemVvZiAoZGly LQ0KPiA+ID4gc3RhY2tbMF0pKTsNCj4gPiAtK8KgIMKgIGdydWJfc2l6ZV90IHN6Ow0KPiA+IC0r DQo+ID4gLSvCoCDCoCBpZiAoZ3J1Yl9tdWwgKGRpci0+c3RzaXplLCBzaXplb2YgKGRpci0+c3Rh Y2tbMF0pLCAmc3opIHx8DQo+ID4gLSvCoCDCoCDCoCBncnViX2FkZCAoc3osIHNpemVvZiAoKm5v ZGUpLCAmc3opKQ0KPiA+IC0rwqAgwqAgwqAgcmV0dXJuIDA7DQo+ID4gLSsNCj4gPiAtK8KgIMKg IG5vZGUgPSBncnViX21hbGxvYyAoc3opOw0KPiA+IC3CoCDCoCDCoGlmICghbm9kZSkNCj4gPiAt wqAgwqAgwqAgwqByZXR1cm4gMDsNCj4gPiAtLcKgIMKgIGdydWJfbWVtY3B5IChub2RlLCBkaXIs DQo+ID4gLS3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHNpemVvZiAoKm5vZGUpICsgZGlyLT5zdHNp emUgKiBzaXplb2YgKGRpci0NCj4gPiA+IHN0YWNrWzBdKSk7DQo+ID4gLSvCoCDCoCBncnViX21l bWNweSAobm9kZSwgZGlyLCBzeik7DQo+ID4gLcKgIMKgIMKgaWYgKGhvb2sgKCIuIiwgR1JVQl9G U0hFTFBfRElSLCBub2RlLCBob29rX2RhdGEpKQ0KPiA+IC3CoCDCoCDCoCDCoHJldHVybiAxOw0K PiA+IC0gDQo+ID4gLUBAIC01MTgsMTIgKzUzNCwxNSBAQCBncnViX3NxdWFzaF9pdGVyYXRlX2Rp ciAoZ3J1Yl9mc2hlbHBfbm9kZV90DQo+ID4gZGlyLA0KPiA+IC3CoCDCoCDCoCDCoHsNCj4gPiAt wqAgwqAgwqAgwqBncnViX2Vycl90IGVycjsNCj4gPiAtIA0KPiA+IC0twqAgwqAgwqAgbm9kZSA9 IGdydWJfbWFsbG9jIChzaXplb2YgKCpub2RlKSArIGRpci0+c3RzaXplICogc2l6ZW9mDQo+ID4g KGRpci0+c3RhY2tbMF0pKTsNCj4gPiAtK8KgIMKgIMKgIGlmIChncnViX211bCAoZGlyLT5zdHNp emUsIHNpemVvZiAoZGlyLT5zdGFja1swXSksICZzeikgfHwNCj4gPiAtK8KgIMKgIMKgIMKgIMKg IGdydWJfYWRkIChzeiwgc2l6ZW9mICgqbm9kZSksICZzeikpDQo+ID4gLSvCoCDCoCDCoCDCoCBy ZXR1cm4gMDsNCj4gPiAtKw0KPiA+IC0rwqAgwqAgwqAgbm9kZSA9IGdydWJfbWFsbG9jIChzeik7 DQo+ID4gLcKgIMKgIMKgIMKgaWYgKCFub2RlKQ0KPiA+IC3CoCDCoCDCoCDCoCDCoHJldHVybiAw Ow0KPiA+IC0gDQo+ID4gLS3CoCDCoCDCoCBncnViX21lbWNweSAobm9kZSwgZGlyLA0KPiA+IC0t wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBzaXplb2YgKCpub2RlKSArIGRpci0+c3RzaXpl ICogc2l6ZW9mIChkaXItDQo+ID4gPiBzdGFja1swXSkpOw0KPiA+IC0rwqAgwqAgwqAgZ3J1Yl9t ZW1jcHkgKG5vZGUsIGRpciwgc3opOw0KPiA+IC0gDQo+ID4gLcKgIMKgIMKgIMKgbm9kZS0+c3Rz aXplLS07DQo+ID4gLcKgIMKgIMKgIMKgZXJyID0gcmVhZF9jaHVuayAoZGlyLT5kYXRhLCAmbm9k ZS0+aW5vLCBzaXplb2YgKG5vZGUtPmlubyksDQo+ID4gLUBAIC01NTcsNiArNTc2LDcgQEAgZ3J1 Yl9zcXVhc2hfaXRlcmF0ZV9kaXIgKGdydWJfZnNoZWxwX25vZGVfdCBkaXIsDQo+ID4gLcKgIMKg IMKgIMKgIMKgZW51bSBncnViX2ZzaGVscF9maWxldHlwZSBmaWxldHlwZSA9IEdSVUJfRlNIRUxQ X1JFRzsNCj4gPiAtwqAgwqAgwqAgwqAgwqBzdHJ1Y3QgZ3J1Yl9zcXVhc2hfZGlyZW50IGRpOw0K PiA+IC3CoCDCoCDCoCDCoCDCoHN0cnVjdCBncnViX3NxdWFzaF9pbm9kZSBpbm87DQo+ID4gLSvC oCDCoCDCoCDCoCBncnViX3NpemVfdCBzejsNCj4gPiAtIA0KPiA+IC3CoCDCoCDCoCDCoCDCoGVy ciA9IHJlYWRfY2h1bmsgKGRpci0+ZGF0YSwgJmRpLCBzaXplb2YgKGRpKSwNCj4gPiAtwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBncnViX2xlX3RvX2NwdTY0IChkaXIt PmRhdGEtDQo+ID4gPiBzYi5kaXJvZmZzZXQpDQo+ID4gLUBAIC01ODksMTMgKzYwOSwxNiBAQCBn cnViX3NxdWFzaF9pdGVyYXRlX2RpciAoZ3J1Yl9mc2hlbHBfbm9kZV90DQo+ID4gZGlyLA0KPiA+ IC3CoCDCoCDCoCDCoCDCoGlmIChncnViX2xlX3RvX2NwdTE2IChkaS50eXBlKSA9PSBTUVVBU0hf VFlQRV9TWU1MSU5LKQ0KPiA+IC3CoCDCoCDCoCDCoCDCoCDCoGZpbGV0eXBlID0gR1JVQl9GU0hF TFBfU1lNTElOSzsNCj4gPiAtIA0KPiA+IC0twqAgwqAgwqAgwqAgbm9kZSA9IGdydWJfbWFsbG9j IChzaXplb2YgKCpub2RlKQ0KPiA+IC0twqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgKyAoZGlyLT5zdHNpemUgKyAxKSAqIHNpemVvZiAoZGlyLQ0KPiA+ID4gc3RhY2tb MF0pKTsNCj4gPiAtK8KgIMKgIMKgIMKgIGlmIChncnViX2FkZCAoZGlyLT5zdHNpemUsIDEsICZz eikgfHwNCj4gPiAtK8KgIMKgIMKgIMKgIMKgIMKgIGdydWJfbXVsIChzeiwgc2l6ZW9mIChkaXIt PnN0YWNrWzBdKSwgJnN6KSB8fA0KPiA+IC0rwqAgwqAgwqAgwqAgwqAgwqAgZ3J1Yl9hZGQgKHN6 LCBzaXplb2YgKCpub2RlKSwgJnN6KSkNCj4gPiAtK8KgIMKgIMKgIMKgIMKgIHJldHVybiAwOw0K PiA+IC0rDQo+ID4gLSvCoCDCoCDCoCDCoCBub2RlID0gZ3J1Yl9tYWxsb2MgKHN6KTsNCj4gPiAt wqAgwqAgwqAgwqAgwqBpZiAoISBub2RlKQ0KPiA+IC3CoCDCoCDCoCDCoCDCoCDCoHJldHVybiAw Ow0KPiA+IC0gDQo+ID4gLS3CoCDCoCDCoCDCoCBncnViX21lbWNweSAobm9kZSwgZGlyLA0KPiA+ IC0twqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBzaXplb2YgKCpub2RlKSArIGRpci0+ c3RzaXplICogc2l6ZW9mIChkaXItDQo+ID4gPiBzdGFja1swXSkpOw0KPiA+IC0rwqAgwqAgwqAg wqAgZ3J1Yl9tZW1jcHkgKG5vZGUsIGRpciwgc3ogLSBzaXplb2YoZGlyLT5zdGFja1swXSkpOw0K PiA+IC0gDQo+ID4gLcKgIMKgIMKgIMKgIMKgbm9kZS0+aW5vID0gaW5vOw0KPiA+IC3CoCDCoCDC oCDCoCDCoG5vZGUtPnN0YWNrW25vZGUtPnN0c2l6ZV0uaW5vX2NodW5rID0gZ3J1Yl9sZV90b19j cHUzMg0KPiA+IChkaC5pbm9fY2h1bmspOw0KPiA+IC1kaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL2Zz L3VkZi5jIGIvZ3J1Yi1jb3JlL2ZzL3VkZi5jDQo+ID4gLWluZGV4IGE4Mzc2MTYuLjIxYWM3ZjQg MTAwNjQ0DQo+ID4gLS0tLSBhL2dydWItY29yZS9mcy91ZGYuYw0KPiA+IC0rKysgYi9ncnViLWNv cmUvZnMvdWRmLmMNCj4gPiAtQEAgLTI4LDYgKzI4LDcgQEANCj4gPiAtICNpbmNsdWRlIDxncnVi L2NoYXJzZXQuaD4NCj4gPiAtICNpbmNsdWRlIDxncnViL2RhdGV0aW1lLmg+DQo+ID4gLSAjaW5j bHVkZSA8Z3J1Yi91ZGYuaD4NCj4gPiAtKyNpbmNsdWRlIDxncnViL3NhZmVtYXRoLmg+DQo+ID4g LSANCj4gPiAtIEdSVUJfTU9EX0xJQ0VOU0UgKCJHUEx2MysiKTsNCj4gPiAtIA0KPiA+IC1AQCAt ODkwLDkgKzg5MSwxOSBAQCByZWFkX3N0cmluZyAoY29uc3QgZ3J1Yl91aW50OF90ICpyYXcsDQo+ ID4gZ3J1Yl9zaXplX3Qgc3osIGNoYXIgKm91dGJ1ZikNCj4gPiAtwqAgwqAgwqAgwqB1dGYxNltp XSA9IChyYXdbMiAqIGkgKyAxXSA8PCA4KSB8IHJhd1syKmkgKyAyXTsNCj4gPiAtwqAgwqAgwqB9 DQo+ID4gLcKgIMKgaWYgKCFvdXRidWYpDQo+ID4gLS3CoCDCoCBvdXRidWYgPSBncnViX21hbGxv YyAodXRmMTZsZW4gKiBHUlVCX01BWF9VVEY4X1BFUl9VVEYxNiArIDEpOw0KPiA+IC0rwqAgwqAg ew0KPiA+IC0rwqAgwqAgwqAgZ3J1Yl9zaXplX3Qgc2l6ZTsNCj4gPiAtKw0KPiA+IC0rwqAgwqAg wqAgaWYgKGdydWJfbXVsICh1dGYxNmxlbiwgR1JVQl9NQVhfVVRGOF9QRVJfVVRGMTYsICZzaXpl KSB8fA0KPiA+IC0rwqAgwqAgwqAgwqAgZ3J1Yl9hZGQgKHNpemUsIDEsICZzaXplKSkNCj4gPiAt K8KgIMKgIMKgIGdvdG8gZmFpbDsNCj4gPiAtKw0KPiA+IC0rwqAgwqAgwqAgb3V0YnVmID0gZ3J1 Yl9tYWxsb2MgKHNpemUpOw0KPiA+IC0rwqAgwqAgfQ0KPiA+IC3CoCDCoGlmIChvdXRidWYpDQo+ ID4gLcKgIMKgIMKgKmdydWJfdXRmMTZfdG9fdXRmOCAoKGdydWJfdWludDhfdCAqKSBvdXRidWYs IHV0ZjE2LCB1dGYxNmxlbikNCj4gPiA9ICdcMCc7DQo+ID4gLSsNCj4gPiAtKyBmYWlsOg0KPiA+ IC3CoCDCoGdydWJfZnJlZSAodXRmMTYpOw0KPiA+IC3CoCDCoHJldHVybiBvdXRidWY7DQo+ID4g LSB9DQo+ID4gLUBAIC0xMDA1LDcgKzEwMTYsNyBAQCBncnViX3VkZl9yZWFkX3N5bWxpbmsgKGdy dWJfZnNoZWxwX25vZGVfdA0KPiA+IG5vZGUpDQo+ID4gLcKgIMKgZ3J1Yl9zaXplX3Qgc3ogPSBV NjQgKG5vZGUtPmJsb2NrLmZlLmZpbGVfc2l6ZSk7DQo+ID4gLcKgIMKgZ3J1Yl91aW50OF90ICpy YXc7DQo+ID4gLcKgIMKgY29uc3QgZ3J1Yl91aW50OF90ICpwdHI7DQo+ID4gLS3CoCBjaGFyICpv dXQsICpvcHRyOw0KPiA+IC0rwqAgY2hhciAqb3V0ID0gTlVMTCwgKm9wdHI7DQo+ID4gLSANCj4g PiAtwqAgwqBpZiAoc3ogPCA0KQ0KPiA+IC3CoCDCoCDCoHJldHVybiBOVUxMOw0KPiA+IC1AQCAt MTAxMywxNCArMTAyNCwxNiBAQCBncnViX3VkZl9yZWFkX3N5bWxpbmsgKGdydWJfZnNoZWxwX25v ZGVfdA0KPiA+IG5vZGUpDQo+ID4gLcKgIMKgaWYgKCFyYXcpDQo+ID4gLcKgIMKgIMKgcmV0dXJu IE5VTEw7DQo+ID4gLcKgIMKgaWYgKGdydWJfdWRmX3JlYWRfZmlsZSAobm9kZSwgTlVMTCwgTlVM TCwgMCwgc3osIChjaGFyICopIHJhdykgPA0KPiA+IDApDQo+ID4gLS3CoCDCoCB7DQo+ID4gLS3C oCDCoCDCoCBncnViX2ZyZWUgKHJhdyk7DQo+ID4gLS3CoCDCoCDCoCByZXR1cm4gTlVMTDsNCj4g PiAtLcKgIMKgIH0NCj4gPiAtK8KgIMKgIGdvdG8gZmFpbF8xOw0KPiA+IC0gDQo+ID4gLS3CoCBv dXQgPSBncnViX21hbGxvYyAoc3ogKiAyICsgMSk7DQo+ID4gLSvCoCBpZiAoZ3J1Yl9tdWwgKHN6 LCAyLCAmc3opIHx8DQo+ID4gLSvCoCDCoCDCoCBncnViX2FkZCAoc3osIDEsICZzeikpDQo+ID4g LSvCoCDCoCBnb3RvIGZhaWxfMDsNCj4gPiAtKw0KPiA+IC0rwqAgb3V0ID0gZ3J1Yl9tYWxsb2Mg KHN6KTsNCj4gPiAtwqAgwqBpZiAoIW91dCkNCj4gPiAtwqAgwqAgwqB7DQo+ID4gLSsgZmFpbF8w Og0KPiA+IC3CoCDCoCDCoCDCoGdydWJfZnJlZSAocmF3KTsNCj4gPiAtwqAgwqAgwqAgwqByZXR1 cm4gTlVMTDsNCj4gPiAtwqAgwqAgwqB9DQo+ID4gLUBAIC0xMDMxLDE3ICsxMDQ0LDE3IEBAIGdy dWJfdWRmX3JlYWRfc3ltbGluayAoZ3J1Yl9mc2hlbHBfbm9kZV90DQo+ID4gbm9kZSkNCj4gPiAt wqAgwqAgwqB7DQo+ID4gLcKgIMKgIMKgIMKgZ3J1Yl9zaXplX3QgczsNCj4gPiAtwqAgwqAgwqAg wqBpZiAoKGdydWJfc2l6ZV90KSAocHRyIC0gcmF3ICsgNCkgPiBzeikNCj4gPiAtLcKgIMKgIMKg IGdvdG8gZmFpbDsNCj4gPiAtK8KgIMKgIMKgIGdvdG8gZmFpbF8xOw0KPiA+IC3CoCDCoCDCoCDC oGlmICghKHB0clsyXSA9PSAwICYmIHB0clszXSA9PSAwKSkNCj4gPiAtLcKgIMKgIMKgIGdvdG8g ZmFpbDsNCj4gPiAtK8KgIMKgIMKgIGdvdG8gZmFpbF8xOw0KPiA+IC3CoCDCoCDCoCDCoHMgPSA0 ICsgcHRyWzFdOw0KPiA+IC3CoCDCoCDCoCDCoGlmICgoZ3J1Yl9zaXplX3QpIChwdHIgLSByYXcg KyBzKSA+IHN6KQ0KPiA+IC0twqAgwqAgwqAgZ290byBmYWlsOw0KPiA+IC0rwqAgwqAgwqAgZ290 byBmYWlsXzE7DQo+ID4gLcKgIMKgIMKgIMKgc3dpdGNoICgqcHRyKQ0KPiA+IC3CoCDCoCDCoCDC oHsNCj4gPiAtwqAgwqAgwqAgwqBjYXNlIDE6DQo+ID4gLcKgIMKgIMKgIMKgIMKgaWYgKHB0clsx XSkNCj4gPiAtLcKgIMKgIMKgIMKgIMKgIGdvdG8gZmFpbDsNCj4gPiAtK8KgIMKgIMKgIMKgIMKg IGdvdG8gZmFpbF8xOw0KPiA+IC3CoCDCoCDCoCDCoCDCoC8qIEZhbGx0aHJvdWdoLsKgICovDQo+ ID4gLcKgIMKgIMKgIMKgY2FzZSAyOg0KPiA+IC3CoCDCoCDCoCDCoCDCoC8qIGluIDQgYnl0ZXMu IG91dDogMSBieXRlLsKgICovDQo+ID4gLUBAIC0xMDY2LDExICsxMDc5LDExIEBAIGdydWJfdWRm X3JlYWRfc3ltbGluayAoZ3J1Yl9mc2hlbHBfbm9kZV90DQo+ID4gbm9kZSkNCj4gPiAtwqAgwqAg wqAgwqAgwqBpZiAob3B0ciAhPSBvdXQpDQo+ID4gLcKgIMKgIMKgIMKgIMKgIMKgKm9wdHIrKyA9 ICcvJzsNCj4gPiAtwqAgwqAgwqAgwqAgwqBpZiAoIXJlYWRfc3RyaW5nIChwdHIgKyA0LCBzIC0g NCwgb3B0cikpDQo+ID4gLS3CoCDCoCDCoCDCoCDCoCBnb3RvIGZhaWw7DQo+ID4gLSvCoCDCoCDC oCDCoCDCoCBnb3RvIGZhaWxfMTsNCj4gPiAtwqAgwqAgwqAgwqAgwqBvcHRyICs9IGdydWJfc3Ry bGVuIChvcHRyKTsNCj4gPiAtwqAgwqAgwqAgwqAgwqBicmVhazsNCj4gPiAtwqAgwqAgwqAgwqBk ZWZhdWx0Og0KPiA+IC0twqAgwqAgwqAgwqAgZ290byBmYWlsOw0KPiA+IC0rwqAgwqAgwqAgwqAg Z290byBmYWlsXzE7DQo+ID4gLcKgIMKgIMKgIMKgfQ0KPiA+IC3CoCDCoCDCoCDCoHB0ciArPSBz Ow0KPiA+IC3CoCDCoCDCoH0NCj4gPiAtQEAgLTEwNzgsNyArMTA5MSw3IEBAIGdydWJfdWRmX3Jl YWRfc3ltbGluayAoZ3J1Yl9mc2hlbHBfbm9kZV90DQo+ID4gbm9kZSkNCj4gPiAtwqAgwqBncnVi X2ZyZWUgKHJhdyk7DQo+ID4gLcKgIMKgcmV0dXJuIG91dDsNCj4gPiAtIA0KPiA+IC0tIGZhaWw6 DQo+ID4gLSsgZmFpbF8xOg0KPiA+IC3CoCDCoGdydWJfZnJlZSAocmF3KTsNCj4gPiAtwqAgwqBn cnViX2ZyZWUgKG91dCk7DQo+ID4gLcKgIMKgZ3J1Yl9lcnJvciAoR1JVQl9FUlJfQkFEX0ZTLCAi aW52YWxpZCBzeW1saW5rIik7DQo+ID4gLWRpZmYgLS1naXQgYS9ncnViLWNvcmUvZnMveGZzLmMg Yi9ncnViLWNvcmUvZnMveGZzLmMNCj4gPiAtaW5kZXggOTZmZmVjYi4uZWE2NTkwMiAxMDA2NDQN Cj4gPiAtLS0tIGEvZ3J1Yi1jb3JlL2ZzL3hmcy5jDQo+ID4gLSsrKyBiL2dydWItY29yZS9mcy94 ZnMuYw0KPiA+IC1AQCAtMjUsNiArMjUsNyBAQA0KPiA+IC0gI2luY2x1ZGUgPGdydWIvZGwuaD4N Cj4gPiAtICNpbmNsdWRlIDxncnViL3R5cGVzLmg+DQo+ID4gLSAjaW5jbHVkZSA8Z3J1Yi9mc2hl bHAuaD4NCj4gPiAtKyNpbmNsdWRlIDxncnViL3NhZmVtYXRoLmg+DQo+ID4gLSANCj4gPiAtIEdS VUJfTU9EX0xJQ0VOU0UgKCJHUEx2MysiKTsNCj4gPiAtIA0KPiA+IC1AQCAtODk5LDYgKzkwMCw3 IEBAIHN0YXRpYyBzdHJ1Y3QgZ3J1Yl94ZnNfZGF0YSAqDQo+ID4gLSBncnViX3hmc19tb3VudCAo Z3J1Yl9kaXNrX3QgZGlzaykNCj4gPiAtIHsNCj4gPiAtwqAgwqBzdHJ1Y3QgZ3J1Yl94ZnNfZGF0 YSAqZGF0YSA9IDA7DQo+ID4gLSvCoCBncnViX3NpemVfdCBzejsNCj4gPiAtIA0KPiA+IC3CoCDC oGRhdGEgPSBncnViX3phbGxvYyAoc2l6ZW9mIChzdHJ1Y3QgZ3J1Yl94ZnNfZGF0YSkpOw0KPiA+ IC3CoCDCoGlmICghZGF0YSkNCj4gPiAtQEAgLTkxMywxMCArOTE1LDExIEBAIGdydWJfeGZzX21v dW50IChncnViX2Rpc2tfdCBkaXNrKQ0KPiA+IC3CoCDCoGlmICghZ3J1Yl94ZnNfc2JfdmFsaWQo ZGF0YSkpDQo+ID4gLcKgIMKgIMKgZ290byBmYWlsOw0KPiA+IC0gDQo+ID4gLS3CoCBkYXRhID0g Z3J1Yl9yZWFsbG9jIChkYXRhLA0KPiA+IC0twqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqBzaXplb2YgKHN0cnVjdCBncnViX3hmc19kYXRhKQ0KPiA+IC0twqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAtIHNpemVvZiAoc3RydWN0IGdydWJfeGZzX2lub2RlKQ0KPiA+IC0twqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqArIGdydWJfeGZzX2lub2RlX3NpemUoZGF0YSkg KyAxKTsNCj4gPiAtK8KgIGlmIChncnViX2FkZCAoZ3J1Yl94ZnNfaW5vZGVfc2l6ZSAoZGF0YSks DQo+ID4gLSvCoCDCoCDCoCBzaXplb2YgKHN0cnVjdCBncnViX3hmc19kYXRhKSAtIHNpemVvZiAo c3RydWN0DQo+ID4gZ3J1Yl94ZnNfaW5vZGUpICsgMSwgJnN6KSkNCj4gPiAtK8KgIMKgIGdvdG8g ZmFpbDsNCj4gPiAtKw0KPiA+IC0rwqAgZGF0YSA9IGdydWJfcmVhbGxvYyAoZGF0YSwgc3opOw0K PiA+IC0gDQo+ID4gLcKgIMKgaWYgKCEgZGF0YSkNCj4gPiAtwqAgwqAgwqBnb3RvIGZhaWw7DQo+ ID4gLWRpZmYgLS1naXQgYS9ncnViLWNvcmUvZnMvemZzL3pmcy5jIGIvZ3J1Yi1jb3JlL2ZzL3pm cy96ZnMuYw0KPiA+IC1pbmRleCAzODFkZGU1Li4zNmQwMzczIDEwMDY0NA0KPiA+IC0tLS0gYS9n cnViLWNvcmUvZnMvemZzL3pmcy5jDQo+ID4gLSsrKyBiL2dydWItY29yZS9mcy96ZnMvemZzLmMN Cj4gPiAtQEAgLTU1LDYgKzU1LDcgQEANCj4gPiAtICNpbmNsdWRlIDxncnViL2RlZmxhdGUuaD4N Cj4gPiAtICNpbmNsdWRlIDxncnViL2NyeXB0by5oPg0KPiA+IC0gI2luY2x1ZGUgPGdydWIvaTE4 bi5oPg0KPiA+IC0rI2luY2x1ZGUgPGdydWIvc2FmZW1hdGguaD4NCj4gPiAtIA0KPiA+IC0gR1JV Ql9NT0RfTElDRU5TRSAoIkdQTHYzKyIpOw0KPiA+IC0gDQo+ID4gLUBAIC03NzMsMTEgKzc3NCwx NCBAQCBmaWxsX3ZkZXZfaW5mbyAoc3RydWN0IGdydWJfemZzX2RhdGEgKmRhdGEsDQo+ID4gLcKg IMKgaWYgKGRhdGEtPm5fZGV2aWNlc19hdHRhY2hlZCA+IGRhdGEtPm5fZGV2aWNlc19hbGxvY2F0 ZWQpDQo+ID4gLcKgIMKgIMKgew0KPiA+IC3CoCDCoCDCoCDCoHZvaWQgKnRtcDsNCj4gPiAtLcKg IMKgIMKgIGRhdGEtPm5fZGV2aWNlc19hbGxvY2F0ZWQgPSAyICogZGF0YS0+bl9kZXZpY2VzX2F0 dGFjaGVkICsgMTsNCj4gPiAtLcKgIMKgIMKgIGRhdGEtPmRldmljZXNfYXR0YWNoZWQNCj4gPiAt LcKgIMKgIMKgID0gZ3J1Yl9yZWFsbG9jICh0bXAgPSBkYXRhLT5kZXZpY2VzX2F0dGFjaGVkLA0K PiA+IC0twqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZGF0YS0+bl9kZXZpY2VzX2Fs bG9jYXRlZA0KPiA+IC0twqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgKiBzaXplb2Yg KGRhdGEtPmRldmljZXNfYXR0YWNoZWRbMF0pKTsNCj4gPiAtK8KgIMKgIMKgIGdydWJfc2l6ZV90 IHN6Ow0KPiA+IC0rDQo+ID4gLSvCoCDCoCDCoCBpZiAoZ3J1Yl9tdWwgKGRhdGEtPm5fZGV2aWNl c19hdHRhY2hlZCwgMiwgJmRhdGEtDQo+ID4gPiBuX2RldmljZXNfYWxsb2NhdGVkKSB8fA0KPiA+ IC0rwqAgwqAgwqAgwqAgZ3J1Yl9hZGQgKGRhdGEtPm5fZGV2aWNlc19hbGxvY2F0ZWQsIDEsICZk YXRhLQ0KPiA+ID4gbl9kZXZpY2VzX2FsbG9jYXRlZCkgfHwNCj4gPiAtK8KgIMKgIMKgIMKgIGdy dWJfbXVsIChkYXRhLT5uX2RldmljZXNfYWxsb2NhdGVkLCBzaXplb2YgKGRhdGEtDQo+ID4gPiBk ZXZpY2VzX2F0dGFjaGVkWzBdKSwgJnN6KSkNCj4gPiAtK8KgIMKgIMKgIHJldHVybiBHUlVCX0VS Ul9PVVRfT0ZfUkFOR0U7DQo+ID4gLSsNCj4gPiAtK8KgIMKgIMKgIGRhdGEtPmRldmljZXNfYXR0 YWNoZWQgPSBncnViX3JlYWxsb2MgKHRtcCA9IGRhdGEtDQo+ID4gPiBkZXZpY2VzX2F0dGFjaGVk LCBzeik7DQo+ID4gLcKgIMKgIMKgIMKgaWYgKCFkYXRhLT5kZXZpY2VzX2F0dGFjaGVkKQ0KPiA+ IC3CoCDCoCDCoCDCoHsNCj4gPiAtwqAgwqAgwqAgwqAgwqBkYXRhLT5kZXZpY2VzX2F0dGFjaGVk ID0gdG1wOw0KPiA+IC1AQCAtMzQ2OCwxNCArMzQ3MiwxOCBAQCBncnViX3pmc19udmxpc3RfbG9v a3VwX252bGlzdCAoY29uc3QgY2hhcg0KPiA+ICpudmxpc3QsIGNvbnN0IGNoYXIgKm5hbWUpDQo+ ID4gLSB7DQo+ID4gLcKgIMKgY2hhciAqbnZwYWlyOw0KPiA+IC3CoCDCoGNoYXIgKnJldDsNCj4g PiAtLcKgIGdydWJfc2l6ZV90IHNpemU7DQo+ID4gLSvCoCBncnViX3NpemVfdCBzaXplLCBzejsN Cj4gPiAtwqAgwqBpbnQgZm91bmQ7DQo+ID4gLSANCj4gPiAtwqAgwqBmb3VuZCA9IG52bGlzdF9m aW5kX3ZhbHVlIChudmxpc3QsIG5hbWUsIERBVEFfVFlQRV9OVkxJU1QsDQo+ID4gJm52cGFpciwN Cj4gPiAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgJnNpemUsIDAp Ow0KPiA+IC3CoCDCoGlmICghZm91bmQpDQo+ID4gLcKgIMKgIMKgcmV0dXJuIDA7DQo+ID4gLS3C oCByZXQgPSBncnViX3phbGxvYyAoc2l6ZSArIDMgKiBzaXplb2YgKGdydWJfdWludDMyX3QpKTsN Cj4gPiAtKw0KPiA+IC0rwqAgaWYgKGdydWJfYWRkIChzaXplLCAzICogc2l6ZW9mIChncnViX3Vp bnQzMl90KSwgJnN6KSkNCj4gPiAtK8KgIMKgIMKgIHJldHVybiAwOw0KPiA+IC0rDQo+ID4gLSvC oCByZXQgPSBncnViX3phbGxvYyAoc3opOw0KPiA+IC3CoCDCoGlmICghcmV0KQ0KPiA+IC3CoCDC oCDCoHJldHVybiAwOw0KPiA+IC3CoCDCoGdydWJfbWVtY3B5IChyZXQsIG52bGlzdCwgc2l6ZW9m IChncnViX3VpbnQzMl90KSk7DQo+ID4gLWRpZmYgLS1naXQgYS9ncnViLWNvcmUvZnMvemZzL3pm c2NyeXB0LmMgYi9ncnViLQ0KPiA+IGNvcmUvZnMvemZzL3pmc2NyeXB0LmMNCj4gPiAtaW5kZXgg MTQwMmUwYi4uZGUzYjAxNSAxMDA2NDQNCj4gPiAtLS0tIGEvZ3J1Yi1jb3JlL2ZzL3pmcy96ZnNj cnlwdC5jDQo+ID4gLSsrKyBiL2dydWItY29yZS9mcy96ZnMvemZzY3J5cHQuYw0KPiA+IC1AQCAt MjIsNiArMjIsNyBAQA0KPiA+IC0gI2luY2x1ZGUgPGdydWIvbWlzYy5oPg0KPiA+IC0gI2luY2x1 ZGUgPGdydWIvZGlzay5oPg0KPiA+IC0gI2luY2x1ZGUgPGdydWIvcGFydGl0aW9uLmg+DQo+ID4g LSsjaW5jbHVkZSA8Z3J1Yi9zYWZlbWF0aC5oPg0KPiA+IC0gI2luY2x1ZGUgPGdydWIvZGwuaD4N Cj4gPiAtICNpbmNsdWRlIDxncnViL3R5cGVzLmg+DQo+ID4gLSAjaW5jbHVkZSA8Z3J1Yi96ZnMv emZzLmg+DQo+ID4gLUBAIC04Miw5ICs4MywxMyBAQCBncnViX3pmc19hZGRfa2V5IChncnViX3Vp bnQ4X3QgKmtleV9pbiwNCj4gPiAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBpbnQgcGFzc3Bo cmFzZSkNCj4gPiAtIHsNCj4gPiAtwqAgwqBzdHJ1Y3QgZ3J1Yl96ZnNfd3JhcF9rZXkgKmtleTsN Cj4gPiAtK8KgIGdydWJfc2l6ZV90IHN6Ow0KPiA+IC0rDQo+ID4gLcKgIMKgaWYgKCFwYXNzcGhy YXNlICYmIGtleWxlbiA+IDMyKQ0KPiA+IC3CoCDCoCDCoGtleWxlbiA9IDMyOw0KPiA+IC0twqAg a2V5ID0gZ3J1Yl9tYWxsb2MgKHNpemVvZiAoKmtleSkgKyBrZXlsZW4pOw0KPiA+IC0rwqAgaWYg KGdydWJfYWRkIChzaXplb2YgKCprZXkpLCBrZXlsZW4sICZzeikpDQo+ID4gLSvCoCDCoCByZXR1 cm4gR1JVQl9FUlJfT1VUX09GX1JBTkdFOw0KPiA+IC0rwqAga2V5ID0gZ3J1Yl9tYWxsb2MgKHN6 KTsNCj4gPiAtwqAgwqBpZiAoIWtleSkNCj4gPiAtwqAgwqAgwqByZXR1cm4gZ3J1Yl9lcnJubzsN Cj4gPiAtwqAgwqBrZXktPmlzX3Bhc3NwaHJhc2UgPSBwYXNzcGhyYXNlOw0KPiA+IC1kaWZmIC0t Z2l0IGEvZ3J1Yi1jb3JlL2xpYi9hcmcuYyBiL2dydWItY29yZS9saWIvYXJnLmMNCj4gPiAtaW5k ZXggZmQ3NzQ0YS4uMzI4ODYwOSAxMDA2NDQNCj4gPiAtLS0tIGEvZ3J1Yi1jb3JlL2xpYi9hcmcu Yw0KPiA+IC0rKysgYi9ncnViLWNvcmUvbGliL2FyZy5jDQo+ID4gLUBAIC0yMyw2ICsyMyw3IEBA DQo+ID4gLSAjaW5jbHVkZSA8Z3J1Yi90ZXJtLmg+DQo+ID4gLSAjaW5jbHVkZSA8Z3J1Yi9leHRj bWQuaD4NCj4gPiAtICNpbmNsdWRlIDxncnViL2kxOG4uaD4NCj4gPiAtKyNpbmNsdWRlIDxncnVi L3NhZmVtYXRoLmg+DQo+ID4gLSANCj4gPiAtIC8qIEJ1aWx0LWluIHBhcnNlciBmb3IgZGVmYXVs dCBvcHRpb25zLsKgICovDQo+ID4gLSBzdGF0aWMgY29uc3Qgc3RydWN0IGdydWJfYXJnX29wdGlv biBoZWxwX29wdGlvbnNbXSA9DQo+ID4gLUBAIC0yMTYsNyArMjE3LDEzIEBAIHN0YXRpYyBpbmxp bmUgZ3J1Yl9lcnJfdA0KPiA+IC0gYWRkX2FyZyAoY2hhciAqKiphcmdsLCBpbnQgKm51bSwgY2hh ciAqcykNCj4gPiAtIHsNCj4gPiAtwqAgwqBjaGFyICoqcCA9ICphcmdsOw0KPiA+IC0twqAgKmFy Z2wgPSBncnViX3JlYWxsb2MgKCphcmdsLCAoKysoKm51bSkgKyAxKSAqIHNpemVvZiAoY2hhciAq KSk7DQo+ID4gLSvCoCBncnViX3NpemVfdCBzejsNCj4gPiAtKw0KPiA+IC0rwqAgaWYgKGdydWJf YWRkICgrKygqbnVtKSwgMSwgJnN6KSB8fA0KPiA+IC0rwqAgwqAgwqAgZ3J1Yl9tdWwgKHN6LCBz aXplb2YgKGNoYXIgKiksICZzeikpDQo+ID4gLSvCoCDCoCByZXR1cm4gZ3J1Yl9lcnJvciAoR1JV Ql9FUlJfT1VUX09GX1JBTkdFLCBOXygib3ZlcmZsb3cgaXMNCj4gPiBkZXRlY3RlZCIpKTsNCj4g PiAtKw0KPiA+IC0rwqAgKmFyZ2wgPSBncnViX3JlYWxsb2MgKCphcmdsLCBzeik7DQo+ID4gLcKg IMKgaWYgKCEgKmFyZ2wpDQo+ID4gLcKgIMKgIMKgew0KPiA+IC3CoCDCoCDCoCDCoGdydWJfZnJl ZSAocCk7DQo+ID4gLUBAIC00MzEsNiArNDM4LDcgQEAgZ3J1Yl9hcmdfbGlzdF9hbGxvYyhncnVi X2V4dGNtZF90IGV4dGNtZCwgaW50DQo+ID4gYXJnYywNCj4gPiAtwqAgwqBncnViX3NpemVfdCBh cmdjbnQ7DQo+ID4gLcKgIMKgc3RydWN0IGdydWJfYXJnX2xpc3QgKmxpc3Q7DQo+ID4gLcKgIMKg Y29uc3Qgc3RydWN0IGdydWJfYXJnX29wdGlvbiAqb3B0aW9uczsNCj4gPiAtK8KgIGdydWJfc2l6 ZV90IHN6MCwgc3oxOw0KPiA+IC0gDQo+ID4gLcKgIMKgb3B0aW9ucyA9IGV4dGNtZC0+b3B0aW9u czsNCj4gPiAtwqAgwqBpZiAoISBvcHRpb25zKQ0KPiA+IC1AQCAtNDQzLDcgKzQ1MSwxNSBAQCBn cnViX2FyZ19saXN0X2FsbG9jKGdydWJfZXh0Y21kX3QgZXh0Y21kLCBpbnQNCj4gPiBhcmdjLA0K PiA+IC3CoCDCoCDCoCDCoGFyZ2NudCArPSAoKGdydWJfc2l6ZV90KSBhcmdjICsgMSkgLyAyICsg MTsgLyogbWF4IHBvc3NpYmxlDQo+ID4gZm9yIGFueSBvcHRpb24gKi8NCj4gPiAtwqAgwqAgwqB9 DQo+ID4gLSANCj4gPiAtLcKgIGxpc3QgPSBncnViX3phbGxvYyAoc2l6ZW9mICgqbGlzdCkgKiBp ICsgc2l6ZW9mIChjaGFyKikgKg0KPiA+IGFyZ2NudCk7DQo+ID4gLSvCoCBpZiAoZ3J1Yl9tdWwg KHNpemVvZiAoKmxpc3QpLCBpLCAmc3owKSB8fA0KPiA+IC0rwqAgwqAgwqAgZ3J1Yl9tdWwgKHNp emVvZiAoY2hhciAqKSwgYXJnY250LCAmc3oxKSB8fA0KPiA+IC0rwqAgwqAgwqAgZ3J1Yl9hZGQg KHN6MCwgc3oxLCAmc3owKSkNCj4gPiAtK8KgIMKgIHsNCj4gPiAtK8KgIMKgIMKgIGdydWJfZXJy b3IgKEdSVUJfRVJSX09VVF9PRl9SQU5HRSwgTl8oIm92ZXJmbG93IGlzDQo+ID4gZGV0ZWN0ZWQi KSk7DQo+ID4gLSvCoCDCoCDCoCByZXR1cm4gMDsNCj4gPiAtK8KgIMKgIH0NCj4gPiAtKw0KPiA+ IC0rwqAgbGlzdCA9IGdydWJfemFsbG9jIChzejApOw0KPiA+IC3CoCDCoGlmICghIGxpc3QpDQo+ ID4gLcKgIMKgIMKgcmV0dXJuIDA7DQo+ID4gLSANCj4gPiAtZGlmZiAtLWdpdCBhL2dydWItY29y ZS9sb2FkZXIvaTM4Ni9ic2QuYyBiL2dydWItDQo+ID4gY29yZS9sb2FkZXIvaTM4Ni9ic2QuYw0K PiA+IC1pbmRleCAzNzMwZWQzLi5iOTJjYmU5IDEwMDY0NA0KPiA+IC0tLS0gYS9ncnViLWNvcmUv bG9hZGVyL2kzODYvYnNkLmMNCj4gPiAtKysrIGIvZ3J1Yi1jb3JlL2xvYWRlci9pMzg2L2JzZC5j DQo+ID4gLUBAIC0zNSw2ICszNSw3IEBADQo+ID4gLSAjaW5jbHVkZSA8Z3J1Yi9uczgyNTAuaD4N Cj4gPiAtICNpbmNsdWRlIDxncnViL2JzZGxhYmVsLmg+DQo+ID4gLSAjaW5jbHVkZSA8Z3J1Yi9j cnlwdG8uaD4NCj4gPiAtKyNpbmNsdWRlIDxncnViL3NhZmVtYXRoLmg+DQo+ID4gLSAjaW5jbHVk ZSA8Z3J1Yi92ZXJpZnkuaD4NCj4gPiAtICNpZmRlZiBHUlVCX01BQ0hJTkVfUENCSU9TDQo+ID4g LSAjaW5jbHVkZSA8Z3J1Yi9tYWNoaW5lL2ludC5oPg0KPiA+IC1AQCAtMTAxMiwxMSArMTAxMywx NiBAQCBncnViX25ldGJzZF9hZGRfbW9kdWxlcyAodm9pZCkNCj4gPiAtwqAgwqBzdHJ1Y3QgZ3J1 Yl9uZXRic2RfYnRpbmZvX21vZHVsZXMgKm1vZHM7DQo+ID4gLcKgIMKgdW5zaWduZWQgaTsNCj4g PiAtwqAgwqBncnViX2Vycl90IGVycjsNCj4gPiAtK8KgIGdydWJfc2l6ZV90IHN6Ow0KPiA+IC0g DQo+ID4gLcKgIMKgZm9yIChtb2QgPSBuZXRic2RfbW9kczsgbW9kOyBtb2QgPSBtb2QtPm5leHQp DQo+ID4gLcKgIMKgIMKgbW9kY250Kys7DQo+ID4gLSANCj4gPiAtLcKgIG1vZHMgPSBncnViX21h bGxvYyAoc2l6ZW9mICgqbW9kcykgKyBzaXplb2YgKG1vZHMtPm1vZHNbMF0pICoNCj4gPiBtb2Rj bnQpOw0KPiA+IC0rwqAgaWYgKGdydWJfbXVsIChtb2RjbnQsIHNpemVvZiAobW9kcy0+bW9kc1sw XSksICZzeikgfHwNCj4gPiAtK8KgIMKgIMKgIGdydWJfYWRkIChzeiwgc2l6ZW9mICgqbW9kcyks ICZzeikpDQo+ID4gLSvCoCDCoCByZXR1cm4gR1JVQl9FUlJfT1VUX09GX1JBTkdFOw0KPiA+IC0r DQo+ID4gLSvCoCBtb2RzID0gZ3J1Yl9tYWxsb2MgKHN6KTsNCj4gPiAtwqAgwqBpZiAoIW1vZHMp DQo+ID4gLcKgIMKgIMKgcmV0dXJuIGdydWJfZXJybm87DQo+ID4gLSANCj4gPiAtZGlmZiAtLWdp dCBhL2dydWItY29yZS9uZXQvZG5zLmMgYi9ncnViLWNvcmUvbmV0L2Rucy5jDQo+ID4gLWluZGV4 IGUzMzJkNWUuLjkwNmVjN2QgMTAwNjQ0DQo+ID4gLS0tLSBhL2dydWItY29yZS9uZXQvZG5zLmMN Cj4gPiAtKysrIGIvZ3J1Yi1jb3JlL25ldC9kbnMuYw0KPiA+IC1AQCAtMjIsNiArMjIsNyBAQA0K PiA+IC0gI2luY2x1ZGUgPGdydWIvaTE4bi5oPg0KPiA+IC0gI2luY2x1ZGUgPGdydWIvZXJyLmg+ DQo+ID4gLSAjaW5jbHVkZSA8Z3J1Yi90aW1lLmg+DQo+ID4gLSsjaW5jbHVkZSA8Z3J1Yi9zYWZl bWF0aC5oPg0KPiA+IC0gDQo+ID4gLSBzdHJ1Y3QgZG5zX2NhY2hlX2VsZW1lbnQNCj4gPiAtIHsN Cj4gPiAtQEAgLTUxLDkgKzUyLDE1IEBAIGdydWJfbmV0X2FkZF9kbnNfc2VydmVyIChjb25zdCBz dHJ1Y3QNCj4gPiBncnViX25ldF9uZXR3b3JrX2xldmVsX2FkZHJlc3MgKnMpDQo+ID4gLcKgIMKg IMKgew0KPiA+IC3CoCDCoCDCoCDCoGludCBuYSA9IGRuc19zZXJ2ZXJzX2FsbG9jICogMjsNCj4g PiAtwqAgwqAgwqAgwqBzdHJ1Y3QgZ3J1Yl9uZXRfbmV0d29ya19sZXZlbF9hZGRyZXNzICpuczsN Cj4gPiAtK8KgIMKgIMKgIGdydWJfc2l6ZV90IHN6Ow0KPiA+IC0rDQo+ID4gLcKgIMKgIMKgIMKg aWYgKG5hIDwgOCkNCj4gPiAtwqAgwqAgwqAgwqBuYSA9IDg7DQo+ID4gLS3CoCDCoCDCoCBucyA9 IGdydWJfcmVhbGxvYyAoZG5zX3NlcnZlcnMsIG5hICogc2l6ZW9mIChuc1swXSkpOw0KPiA+IC0r DQo+ID4gLSvCoCDCoCDCoCBpZiAoZ3J1Yl9tdWwgKG5hLCBzaXplb2YgKG5zWzBdKSwgJnN6KSkN Cj4gPiAtK8KgIMKgIMKgIHJldHVybiBHUlVCX0VSUl9PVVRfT0ZfUkFOR0U7DQo+ID4gLSsNCj4g PiAtK8KgIMKgIMKgIG5zID0gZ3J1Yl9yZWFsbG9jIChkbnNfc2VydmVycywgc3opOw0KPiA+IC3C oCDCoCDCoCDCoGlmICghbnMpDQo+ID4gLcKgIMKgIMKgIMKgcmV0dXJuIGdydWJfZXJybm87DQo+ ID4gLcKgIMKgIMKgIMKgZG5zX3NlcnZlcnNfYWxsb2MgPSBuYTsNCj4gPiAtZGlmZiAtLWdpdCBh L2dydWItY29yZS9ub3JtYWwvY2hhcnNldC5jIGIvZ3J1Yi1jb3JlL25vcm1hbC9jaGFyc2V0LmMN Cj4gPiAtaW5kZXggZDU3ZmI3Mi4uNGRmY2MzMSAxMDA2NDQNCj4gPiAtLS0tIGEvZ3J1Yi1jb3Jl L25vcm1hbC9jaGFyc2V0LmMNCj4gPiAtKysrIGIvZ3J1Yi1jb3JlL25vcm1hbC9jaGFyc2V0LmMN Cj4gPiAtQEAgLTQ4LDYgKzQ4LDcgQEANCj4gPiAtICNpbmNsdWRlIDxncnViL3VuaWNvZGUuaD4N Cj4gPiAtICNpbmNsdWRlIDxncnViL3Rlcm0uaD4NCj4gPiAtICNpbmNsdWRlIDxncnViL25vcm1h bC5oPg0KPiA+IC0rI2luY2x1ZGUgPGdydWIvc2FmZW1hdGguaD4NCj4gPiAtIA0KPiA+IC0gI2lm IEhBVkVfRk9OVF9TT1VSQ0UNCj4gPiAtICNpbmNsdWRlICJ3aWR0aHNwZWMuaCINCj4gPiAtQEAg LTQ2NCw2ICs0NjUsNyBAQCBncnViX3VuaWNvZGVfYWdsb21lcmF0ZV9jb21iIChjb25zdA0KPiA+ IGdydWJfdWludDMyX3QgKmluLCBncnViX3NpemVfdCBpbmxlbiwNCj4gPiAtwqAgwqAgwqAgwqB7 DQo+ID4gLcKgIMKgIMKgIMKgIMKgc3RydWN0IGdydWJfdW5pY29kZV9jb21iaW5pbmcgKm47DQo+ ID4gLcKgIMKgIMKgIMKgIMKgdW5zaWduZWQgajsNCj4gPiAtK8KgIMKgIMKgIMKgIGdydWJfc2l6 ZV90IHN6Ow0KPiA+IC0gDQo+ID4gLcKgIMKgIMKgIMKgIMKgaWYgKCFoYXZlb3V0KQ0KPiA+IC3C oCDCoCDCoCDCoCDCoCDCoGNvbnRpbnVlOw0KPiA+IC1AQCAtNDc3LDEwICs0NzksMTQgQEAgZ3J1 Yl91bmljb2RlX2FnbG9tZXJhdGVfY29tYiAoY29uc3QNCj4gPiBncnViX3VpbnQzMl90ICppbiwg Z3J1Yl9zaXplX3QgaW5sZW4sDQo+ID4gLcKgIMKgIMKgIMKgIMKgIMKgbiA9IG91dC0+Y29tYmlu aW5nX2lubGluZTsNCj4gPiAtwqAgwqAgwqAgwqAgwqBlbHNlIGlmIChvdXQtPm5jb21iID4gKGlu dCkgQVJSQVlfU0laRSAob3V0LQ0KPiA+ID4gY29tYmluaW5nX2lubGluZSkpDQo+ID4gLcKgIMKg IMKgIMKgIMKgIMKgew0KPiA+IC0twqAgwqAgwqAgwqAgwqAgwqAgbiA9IGdydWJfcmVhbGxvYyAo b3V0LT5jb21iaW5pbmdfcHRyLA0KPiA+IC0twqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgc2l6ZW9mIChuWzBdKSAqIChvdXQtPm5jb21iICsgMSkpOw0KPiA+IC0r wqAgwqAgwqAgwqAgwqAgwqAgaWYgKGdydWJfYWRkIChvdXQtPm5jb21iLCAxLCAmc3opIHx8DQo+ ID4gLSvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBncnViX211bCAoc3osIHNpemVvZiAoblswXSks ICZzeikpDQo+ID4gLSvCoCDCoCDCoCDCoCDCoCDCoCDCoCBnb3RvIGZhaWw7DQo+ID4gLSsNCj4g PiAtK8KgIMKgIMKgIMKgIMKgIMKgIG4gPSBncnViX3JlYWxsb2MgKG91dC0+Y29tYmluaW5nX3B0 ciwgc3opOw0KPiA+IC3CoCDCoCDCoCDCoCDCoCDCoCDCoGlmICghbikNCj4gPiAtwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqB7DQo+ID4gLSsgZmFpbDoNCj4gPiAtwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqBncnViX2Vycm5vID0gR1JVQl9FUlJfTk9ORTsNCj4gPiAtwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqBjb250aW51ZTsNCj4gPiAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB9DQo+ID4gLWRp ZmYgLS1naXQgYS9ncnViLWNvcmUvbm9ybWFsL2NtZGxpbmUuYyBiL2dydWItY29yZS9ub3JtYWwv Y21kbGluZS5jDQo+ID4gLWluZGV4IGM1NzI0MmUuLmRlMDNmZTYgMTAwNjQ0DQo+ID4gLS0tLSBh L2dydWItY29yZS9ub3JtYWwvY21kbGluZS5jDQo+ID4gLSsrKyBiL2dydWItY29yZS9ub3JtYWwv Y21kbGluZS5jDQo+ID4gLUBAIC0yOCw2ICsyOCw3IEBADQo+ID4gLSAjaW5jbHVkZSA8Z3J1Yi9l bnYuaD4NCj4gPiAtICNpbmNsdWRlIDxncnViL2kxOG4uaD4NCj4gPiAtICNpbmNsdWRlIDxncnVi L2NoYXJzZXQuaD4NCj4gPiAtKyNpbmNsdWRlIDxncnViL3NhZmVtYXRoLmg+DQo+ID4gLSANCj4g PiAtIHN0YXRpYyBncnViX3VpbnQzMl90ICpraWxsX2J1ZjsNCj4gPiAtIA0KPiA+IC1AQCAtMzA3 LDEyICszMDgsMjEgQEAgY2xfaW5zZXJ0IChzdHJ1Y3QgY21kbGluZV90ZXJtICpjbF90ZXJtcywN Cj4gPiB1bnNpZ25lZCBudGVybXMsDQo+ID4gLcKgIMKgaWYgKGxlbiArICgqbGxlbikgPj0gKCpt YXhfbGVuKSkNCj4gPiAtwqAgwqAgwqB7DQo+ID4gLcKgIMKgIMKgIMKgZ3J1Yl91aW50MzJfdCAq bmJ1ZjsNCj4gPiAtLcKgIMKgIMKgICgqbWF4X2xlbikgKj0gMjsNCj4gPiAtLcKgIMKgIMKgIG5i dWYgPSBncnViX3JlYWxsb2MgKCgqYnVmKSwgc2l6ZW9mIChncnViX3VpbnQzMl90KSAqDQo+ID4g KCptYXhfbGVuKSk7DQo+ID4gLSvCoCDCoCDCoCBncnViX3NpemVfdCBzejsNCj4gPiAtKw0KPiA+ IC0rwqAgwqAgwqAgaWYgKGdydWJfbXVsICgqbWF4X2xlbiwgMiwgbWF4X2xlbikgfHwNCj4gPiAt K8KgIMKgIMKgIMKgIGdydWJfbXVsICgqbWF4X2xlbiwgc2l6ZW9mIChncnViX3VpbnQzMl90KSwg JnN6KSkNCj4gPiAtK8KgIMKgIMKgIHsNCj4gPiAtK8KgIMKgIMKgIMKgIGdydWJfZXJybm8gPSBH UlVCX0VSUl9PVVRfT0ZfUkFOR0U7DQo+ID4gLSvCoCDCoCDCoCDCoCBnb3RvIGZhaWw7DQo+ID4g LSvCoCDCoCDCoCB9DQo+ID4gLSsNCj4gPiAtK8KgIMKgIMKgIG5idWYgPSBncnViX3JlYWxsb2Mg KCgqYnVmKSwgc3opOw0KPiA+IC3CoCDCoCDCoCDCoGlmIChuYnVmKQ0KPiA+IC3CoCDCoCDCoCDC oCgqYnVmKSA9IG5idWY7DQo+ID4gLcKgIMKgIMKgIMKgZWxzZQ0KPiA+IC3CoCDCoCDCoCDCoHsN Cj4gPiAtKyBmYWlsOg0KPiA+IC3CoCDCoCDCoCDCoCDCoGdydWJfcHJpbnRfZXJyb3IgKCk7DQo+ ID4gLcKgIMKgIMKgIMKgIMKgZ3J1Yl9lcnJubyA9IEdSVUJfRVJSX05PTkU7DQo+ID4gLcKgIMKg IMKgIMKgIMKgKCptYXhfbGVuKSAvPSAyOw0KPiA+IC1kaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL25v cm1hbC9tZW51X2VudHJ5LmMgYi9ncnViLQ0KPiA+IGNvcmUvbm9ybWFsL21lbnVfZW50cnkuYw0K PiA+IC1pbmRleCAxOTkzOTk1Li41MGVlZjkxIDEwMDY0NA0KPiA+IC0tLS0gYS9ncnViLWNvcmUv bm9ybWFsL21lbnVfZW50cnkuYw0KPiA+IC0rKysgYi9ncnViLWNvcmUvbm9ybWFsL21lbnVfZW50 cnkuYw0KPiA+IC1AQCAtMjcsNiArMjcsNyBAQA0KPiA+IC0gI2luY2x1ZGUgPGdydWIvYXV0aC5o Pg0KPiA+IC0gI2luY2x1ZGUgPGdydWIvaTE4bi5oPg0KPiA+IC0gI2luY2x1ZGUgPGdydWIvY2hh cnNldC5oPg0KPiA+IC0rI2luY2x1ZGUgPGdydWIvc2FmZW1hdGguaD4NCj4gPiAtIA0KPiA+IC0g ZW51bSB1cGRhdGVfbW9kZQ0KPiA+IC3CoCDCoHsNCj4gPiAtQEAgLTExMywxMCArMTE0LDE4IEBA IGVuc3VyZV9zcGFjZSAoc3RydWN0IGxpbmUgKmxpbmVwLCBpbnQgZXh0cmEpDQo+ID4gLSB7DQo+ ID4gLcKgIMKgaWYgKGxpbmVwLT5tYXhfbGVuIDwgbGluZXAtPmxlbiArIGV4dHJhKQ0KPiA+IC3C oCDCoCDCoHsNCj4gPiAtLcKgIMKgIMKgIGxpbmVwLT5tYXhfbGVuID0gMiAqIChsaW5lcC0+bGVu ICsgZXh0cmEpOw0KPiA+IC0twqAgwqAgwqAgbGluZXAtPmJ1ZiA9IGdydWJfcmVhbGxvYyAobGlu ZXAtPmJ1ZiwgKGxpbmVwLT5tYXhfbGVuICsgMSkgKg0KPiA+IHNpemVvZiAobGluZXAtPmJ1Zlsw XSkpOw0KPiA+IC0rwqAgwqAgwqAgZ3J1Yl9zaXplX3Qgc3owLCBzejE7DQo+ID4gLSsNCj4gPiAt K8KgIMKgIMKgIGlmIChncnViX2FkZCAobGluZXAtPmxlbiwgZXh0cmEsICZzejApIHx8DQo+ID4g LSvCoCDCoCDCoCDCoCBncnViX211bCAoc3owLCAyLCAmc3owKSB8fA0KPiA+IC0rwqAgwqAgwqAg wqAgZ3J1Yl9hZGQgKHN6MCwgMSwgJnN6MSkgfHwNCj4gPiAtK8KgIMKgIMKgIMKgIGdydWJfbXVs IChzejEsIHNpemVvZiAobGluZXAtPmJ1ZlswXSksICZzejEpKQ0KPiA+IC0rwqAgwqAgwqAgcmV0 dXJuIDA7DQo+ID4gLSsNCj4gPiAtK8KgIMKgIMKgIGxpbmVwLT5idWYgPSBncnViX3JlYWxsb2Mg KGxpbmVwLT5idWYsIHN6MSk7DQo+ID4gLcKgIMKgIMKgIMKgaWYgKCEgbGluZXAtPmJ1ZikNCj4g PiAtwqAgwqAgwqAgwqByZXR1cm4gMDsNCj4gPiAtK8KgIMKgIMKgIGxpbmVwLT5tYXhfbGVuID0g c3owOw0KPiA+IC3CoCDCoCDCoH0NCj4gPiAtIA0KPiA+IC3CoCDCoHJldHVybiAxOw0KPiA+IC1k aWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL3NjcmlwdC9hcmd2LmMgYi9ncnViLWNvcmUvc2NyaXB0L2Fy Z3YuYw0KPiA+IC1pbmRleCAyMTdlYzVkLi41NzUxZmRkIDEwMDY0NA0KPiA+IC0tLS0gYS9ncnVi LWNvcmUvc2NyaXB0L2FyZ3YuYw0KPiA+IC0rKysgYi9ncnViLWNvcmUvc2NyaXB0L2FyZ3YuYw0K PiA+IC1AQCAtMjAsNiArMjAsNyBAQA0KPiA+IC0gI2luY2x1ZGUgPGdydWIvbW0uaD4NCj4gPiAt ICNpbmNsdWRlIDxncnViL21pc2MuaD4NCj4gPiAtICNpbmNsdWRlIDxncnViL3NjcmlwdF9zaC5o Pg0KPiA+IC0rI2luY2x1ZGUgPGdydWIvc2FmZW1hdGguaD4NCj4gPiAtIA0KPiA+IC0gLyogUmV0 dXJuIG5lYXJlc3QgcG93ZXIgb2YgdHdvIHRoYXQgaXMgPj0gdi7CoCAqLw0KPiA+IC0gc3RhdGlj IHVuc2lnbmVkDQo+ID4gLUBAIC04MSwxMSArODIsMTYgQEAgaW50DQo+ID4gLSBncnViX3Njcmlw dF9hcmd2X25leHQgKHN0cnVjdCBncnViX3NjcmlwdF9hcmd2ICphcmd2KQ0KPiA+IC0gew0KPiA+ IC3CoCDCoGNoYXIgKipwID0gYXJndi0+YXJnczsNCj4gPiAtK8KgIGdydWJfc2l6ZV90IHN6Ow0K PiA+IC0gDQo+ID4gLcKgIMKgaWYgKGFyZ3YtPmFyZ3MgJiYgYXJndi0+YXJnYyAmJiBhcmd2LT5h cmdzW2FyZ3YtPmFyZ2MgLSAxXSA9PSAwKQ0KPiA+IC3CoCDCoCDCoHJldHVybiAwOw0KPiA+IC0g DQo+ID4gLS3CoCBwID0gZ3J1Yl9yZWFsbG9jIChwLCByb3VuZF91cF9leHAgKChhcmd2LT5hcmdj ICsgMikgKiBzaXplb2YNCj4gPiAoY2hhciAqKSkpOw0KPiA+IC0rwqAgaWYgKGdydWJfYWRkIChh cmd2LT5hcmdjLCAyLCAmc3opIHx8DQo+ID4gLSvCoCDCoCDCoCBncnViX211bCAoc3osIHNpemVv ZiAoY2hhciAqKSwgJnN6KSkNCj4gPiAtK8KgIMKgIHJldHVybiAxOw0KPiA+IC0rDQo+ID4gLSvC oCBwID0gZ3J1Yl9yZWFsbG9jIChwLCByb3VuZF91cF9leHAgKHN6KSk7DQo+ID4gLcKgIMKgaWYg KCEgcCkNCj4gPiAtwqAgwqAgwqByZXR1cm4gMTsNCj4gPiAtIA0KPiA+IC1AQCAtMTA1LDEzICsx MTEsMTkgQEAgZ3J1Yl9zY3JpcHRfYXJndl9hcHBlbmQgKHN0cnVjdA0KPiA+IGdydWJfc2NyaXB0 X2FyZ3YgKmFyZ3YsIGNvbnN0IGNoYXIgKnMsDQo+ID4gLSB7DQo+ID4gLcKgIMKgZ3J1Yl9zaXpl X3QgYTsNCj4gPiAtwqAgwqBjaGFyICpwID0gYXJndi0+YXJnc1thcmd2LT5hcmdjIC0gMV07DQo+ ID4gLSvCoCBncnViX3NpemVfdCBzejsNCj4gPiAtIA0KPiA+IC3CoCDCoGlmICghIHMpDQo+ID4g LcKgIMKgIMKgcmV0dXJuIDA7DQo+ID4gLSANCj4gPiAtwqAgwqBhID0gcCA/IGdydWJfc3RybGVu IChwKSA6IDA7DQo+ID4gLSANCj4gPiAtLcKgIHAgPSBncnViX3JlYWxsb2MgKHAsIHJvdW5kX3Vw X2V4cCAoKGEgKyBzbGVuICsgMSkgKiBzaXplb2YNCj4gPiAoY2hhcikpKTsNCj4gPiAtK8KgIGlm IChncnViX2FkZCAoYSwgc2xlbiwgJnN6KSB8fA0KPiA+IC0rwqAgwqAgwqAgZ3J1Yl9hZGQgKHN6 LCAxLCAmc3opIHx8DQo+ID4gLSvCoCDCoCDCoCBncnViX211bCAoc3osIHNpemVvZiAoY2hhciks ICZzeikpDQo+ID4gLSvCoCDCoCByZXR1cm4gMTsNCj4gPiAtKw0KPiA+IC0rwqAgcCA9IGdydWJf cmVhbGxvYyAocCwgcm91bmRfdXBfZXhwIChzeikpOw0KPiA+IC3CoCDCoGlmICghIHApDQo+ID4g LcKgIMKgIMKgcmV0dXJuIDE7DQo+ID4gLSANCj4gPiAtZGlmZiAtLWdpdCBhL2dydWItY29yZS9z Y3JpcHQvbGV4ZXIuYyBiL2dydWItY29yZS9zY3JpcHQvbGV4ZXIuYw0KPiA+IC1pbmRleCBjNmJk MzE3Li41ZmIwY2JkIDEwMDY0NA0KPiA+IC0tLS0gYS9ncnViLWNvcmUvc2NyaXB0L2xleGVyLmMN Cj4gPiAtKysrIGIvZ3J1Yi1jb3JlL3NjcmlwdC9sZXhlci5jDQo+ID4gLUBAIC0yNCw2ICsyNCw3 IEBADQo+ID4gLSAjaW5jbHVkZSA8Z3J1Yi9tbS5oPg0KPiA+IC0gI2luY2x1ZGUgPGdydWIvc2Ny aXB0X3NoLmg+DQo+ID4gLSAjaW5jbHVkZSA8Z3J1Yi9pMThuLmg+DQo+ID4gLSsjaW5jbHVkZSA8 Z3J1Yi9zYWZlbWF0aC5oPg0KPiA+IC0gDQo+ID4gLSAjZGVmaW5lIHl5dGV4dF9wdHIgY2hhciAq DQo+ID4gLSAjaW5jbHVkZSAiZ3J1Yl9zY3JpcHQudGFiLmgiDQo+ID4gLUBAIC0xMTAsMTAgKzEx MSwxNCBAQCBncnViX3NjcmlwdF9sZXhlcl9yZWNvcmQgKHN0cnVjdA0KPiA+IGdydWJfcGFyc2Vy X3BhcmFtICpwYXJzZXIsIGNoYXIgKnN0cikNCj4gPiAtwqAgwqAgwqAgwqBvbGQgPSBsZXhlci0+ cmVjb3JkaW5nOw0KPiA+IC3CoCDCoCDCoCDCoGlmIChsZXhlci0+cmVjb3JkbGVuIDwgbGVuKQ0K PiA+IC3CoCDCoCDCoCDCoGxleGVyLT5yZWNvcmRsZW4gPSBsZW47DQo+ID4gLS3CoCDCoCDCoCBs ZXhlci0+cmVjb3JkbGVuICo9IDI7DQo+ID4gLSsNCj4gPiAtK8KgIMKgIMKgIGlmIChncnViX211 bCAobGV4ZXItPnJlY29yZGxlbiwgMiwgJmxleGVyLT5yZWNvcmRsZW4pKQ0KPiA+IC0rwqAgwqAg wqAgZ290byBmYWlsOw0KPiA+IC0rDQo+ID4gLcKgIMKgIMKgIMKgbGV4ZXItPnJlY29yZGluZyA9 IGdydWJfcmVhbGxvYyAobGV4ZXItPnJlY29yZGluZywgbGV4ZXItDQo+ID4gPiByZWNvcmRsZW4p Ow0KPiA+IC3CoCDCoCDCoCDCoGlmICghbGV4ZXItPnJlY29yZGluZykNCj4gPiAtwqAgwqAgwqAg wqB7DQo+ID4gLSsgZmFpbDoNCj4gPiAtwqAgwqAgwqAgwqAgwqBncnViX2ZyZWUgKG9sZCk7DQo+ ID4gLcKgIMKgIMKgIMKgIMKgbGV4ZXItPnJlY29yZHBvcyA9IDA7DQo+ID4gLcKgIMKgIMKgIMKg IMKgbGV4ZXItPnJlY29yZGxlbiA9IDA7DQo+ID4gLUBAIC0xMzAsNyArMTM1LDcgQEAgaW50DQo+ ID4gLSBncnViX3NjcmlwdF9sZXhlcl95eXdyYXAgKHN0cnVjdCBncnViX3BhcnNlcl9wYXJhbSAq cGFyc2Vyc3RhdGUsDQo+ID4gLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg Y29uc3QgY2hhciAqaW5wdXQpDQo+ID4gLSB7DQo+ID4gLS3CoCBncnViX3NpemVfdCBsZW4gPSAw Ow0KPiA+IC0rwqAgZ3J1Yl9zaXplX3QgbGVuID0gMCwgc3o7DQo+ID4gLcKgIMKgY2hhciAqcCA9 IDA7DQo+ID4gLcKgIMKgY2hhciAqbGluZSA9IDA7DQo+ID4gLcKgIMKgWVlfQlVGRkVSX1NUQVRF IGJ1ZmZlcjsNCj4gPiAtQEAgLTE2OCwxMiArMTczLDIyIEBAIGdydWJfc2NyaXB0X2xleGVyX3l5 d3JhcCAoc3RydWN0DQo+ID4gZ3J1Yl9wYXJzZXJfcGFyYW0gKnBhcnNlcnN0YXRlLA0KPiA+IC3C oCDCoCDCoH0NCj4gPiAtwqAgwqBlbHNlIGlmIChsZW4gJiYgbGluZVtsZW4gLSAxXSAhPSAnXG4n KQ0KPiA+IC3CoCDCoCDCoHsNCj4gPiAtLcKgIMKgIMKgIHAgPSBncnViX3JlYWxsb2MgKGxpbmUs IGxlbiArIDIpOw0KPiA+IC0rwqAgwqAgwqAgaWYgKGdydWJfYWRkIChsZW4sIDIsICZzeikpDQo+ ID4gLSvCoCDCoCDCoCB7DQo+ID4gLSvCoCDCoCDCoCDCoCBncnViX2ZyZWUgKGxpbmUpOw0KPiA+ IC0rwqAgwqAgwqAgwqAgZ3J1Yl9zY3JpcHRfeXllcnJvciAocGFyc2Vyc3RhdGUsIE5fKCJvdmVy ZmxvdyBpcw0KPiA+IGRldGVjdGVkIikpOw0KPiA+IC0rwqAgwqAgwqAgwqAgcmV0dXJuIDE7DQo+ ID4gLSvCoCDCoCDCoCB9DQo+ID4gLSsNCj4gPiAtK8KgIMKgIMKgIHAgPSBncnViX3JlYWxsb2Mg KGxpbmUsIHN6KTsNCj4gPiAtwqAgwqAgwqAgwqBpZiAocCkNCj4gPiAtwqAgwqAgwqAgwqB7DQo+ ID4gLcKgIMKgIMKgIMKgIMKgcFtsZW4rK10gPSAnXG4nOw0KPiA+IC3CoCDCoCDCoCDCoCDCoHBb bGVuXSA9ICdcMCc7DQo+ID4gLcKgIMKgIMKgIMKgfQ0KPiA+IC0rwqAgwqAgwqAgZWxzZQ0KPiA+ IC0rwqAgwqAgwqAgZ3J1Yl9mcmVlIChsaW5lKTsNCj4gPiAtKw0KPiA+IC3CoCDCoCDCoCDCoGxp bmUgPSBwOw0KPiA+IC3CoCDCoCDCoH0NCj4gPiAtIA0KPiA+IC1kaWZmIC0tZ2l0IGEvZ3J1Yi1j b3JlL3ZpZGVvL2JpdG1hcC5jIGIvZ3J1Yi1jb3JlL3ZpZGVvL2JpdG1hcC5jDQo+ID4gLWluZGV4 IGIyZTAzMTUuLjYyNTZlMjAgMTAwNjQ0DQo+ID4gLS0tLSBhL2dydWItY29yZS92aWRlby9iaXRt YXAuYw0KPiA+IC0rKysgYi9ncnViLWNvcmUvdmlkZW8vYml0bWFwLmMNCj4gPiAtQEAgLTIzLDYg KzIzLDcgQEANCj4gPiAtICNpbmNsdWRlIDxncnViL21tLmg+DQo+ID4gLSAjaW5jbHVkZSA8Z3J1 Yi9taXNjLmg+DQo+ID4gLSAjaW5jbHVkZSA8Z3J1Yi9pMThuLmg+DQo+ID4gLSsjaW5jbHVkZSA8 Z3J1Yi9zYWZlbWF0aC5oPg0KPiA+IC0gDQo+ID4gLSBHUlVCX01PRF9MSUNFTlNFICgiR1BMdjMr Iik7DQo+ID4gLSANCj4gPiAtQEAgLTU4LDcgKzU5LDcgQEAgZ3J1Yl92aWRlb19iaXRtYXBfY3Jl YXRlIChzdHJ1Y3QgZ3J1Yl92aWRlb19iaXRtYXANCj4gPiAqKmJpdG1hcCwNCj4gPiAtwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBlbnVtIGdydWJfdmlkZW9fYmxpdF9m b3JtYXQgYmxpdF9mb3JtYXQpDQo+ID4gLSB7DQo+ID4gLcKgIMKgc3RydWN0IGdydWJfdmlkZW9f bW9kZV9pbmZvICptb2RlX2luZm87DQo+ID4gLS3CoCB1bnNpZ25lZCBpbnQgc2l6ZTsNCj4gPiAt K8KgIGdydWJfc2l6ZV90IHNpemU7DQo+ID4gLSANCj4gPiAtwqAgwqBpZiAoIWJpdG1hcCkNCj4g PiAtwqAgwqAgwqByZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfQlVHLCAiaW52YWxpZCBhcmd1 bWVudCIpOw0KPiA+IC1AQCAtMTM3LDE5ICsxMzgsMjUgQEAgZ3J1Yl92aWRlb19iaXRtYXBfY3Jl YXRlIChzdHJ1Y3QNCj4gPiBncnViX3ZpZGVvX2JpdG1hcCAqKmJpdG1hcCwNCj4gPiAtIA0KPiA+ IC3CoCDCoG1vZGVfaW5mby0+cGl0Y2ggPSB3aWR0aCAqIG1vZGVfaW5mby0+Ynl0ZXNfcGVyX3Bp eGVsOw0KPiA+IC0gDQo+ID4gLS3CoCAvKiBDYWxjdWxhdGUgc2l6ZSBuZWVkZWQgZm9yIHRoZSBk YXRhLsKgICovDQo+ID4gLS3CoCBzaXplID0gKHdpZHRoICogbW9kZV9pbmZvLT5ieXRlc19wZXJf cGl4ZWwpICogaGVpZ2h0Ow0KPiA+IC0rwqAgLyogQ2FsY3VsYXRlIHNpemUgbmVlZGVkIGZvciB0 aGUgZGF0YS4gKi8NCj4gPiAtK8KgIGlmIChncnViX211bCAod2lkdGgsIG1vZGVfaW5mby0+Ynl0 ZXNfcGVyX3BpeGVsLCAmc2l6ZSkgfHwNCj4gPiAtK8KgIMKgIMKgIGdydWJfbXVsIChzaXplLCBo ZWlnaHQsICZzaXplKSkNCj4gPiAtK8KgIMKgIHsNCj4gPiAtK8KgIMKgIMKgIGdydWJfZXJyb3Ig KEdSVUJfRVJSX09VVF9PRl9SQU5HRSwgTl8oIm92ZXJmbG93IGlzDQo+ID4gZGV0ZWN0ZWQiKSk7 DQo+ID4gLSvCoCDCoCDCoCBnb3RvIGZhaWw7DQo+ID4gLSvCoCDCoCB9DQo+ID4gLSANCj4gPiAt wqAgwqAoKmJpdG1hcCktPmRhdGEgPSBncnViX3phbGxvYyAoc2l6ZSk7DQo+ID4gLcKgIMKgaWYg KCEgKCpiaXRtYXApLT5kYXRhKQ0KPiA+IC0twqAgwqAgew0KPiA+IC0twqAgwqAgwqAgZ3J1Yl9m cmVlICgqYml0bWFwKTsNCj4gPiAtLcKgIMKgIMKgICpiaXRtYXAgPSAwOw0KPiA+IC0tDQo+ID4g LS3CoCDCoCDCoCByZXR1cm4gZ3J1Yl9lcnJubzsNCj4gPiAtLcKgIMKgIH0NCj4gPiAtK8KgIMKg IGdvdG8gZmFpbDsNCj4gPiAtIA0KPiA+IC3CoCDCoHJldHVybiBHUlVCX0VSUl9OT05FOw0KPiA+ IC0rDQo+ID4gLSsgZmFpbDoNCj4gPiAtK8KgIGdydWJfZnJlZSAoKmJpdG1hcCk7DQo+ID4gLSvC oCAqYml0bWFwID0gTlVMTDsNCj4gPiAtKw0KPiA+IC0rwqAgcmV0dXJuIGdydWJfZXJybm87DQo+ ID4gLSB9DQo+ID4gLSANCj4gPiAtIC8qIEZyZWVzIGFsbCByZXNvdXJjZXMgYWxsb2NhdGVkIGJ5 IGJpdG1hcC7CoCAqLw0KPiA+IC1kaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL3ZpZGVvL3JlYWRlcnMv cG5nLmMgYi9ncnViLQ0KPiA+IGNvcmUvdmlkZW8vcmVhZGVycy9wbmcuYw0KPiA+IC1pbmRleCA2 MWJkNjQ1Li4wMTU3ZmY3IDEwMDY0NA0KPiA+IC0tLS0gYS9ncnViLWNvcmUvdmlkZW8vcmVhZGVy cy9wbmcuYw0KPiA+IC0rKysgYi9ncnViLWNvcmUvdmlkZW8vcmVhZGVycy9wbmcuYw0KPiA+IC1A QCAtMjMsNiArMjMsNyBAQA0KPiA+IC0gI2luY2x1ZGUgPGdydWIvbW0uaD4NCj4gPiAtICNpbmNs dWRlIDxncnViL21pc2MuaD4NCj4gPiAtICNpbmNsdWRlIDxncnViL2J1ZmlvLmg+DQo+ID4gLSsj aW5jbHVkZSA8Z3J1Yi9zYWZlbWF0aC5oPg0KPiA+IC0gDQo+ID4gLSBHUlVCX01PRF9MSUNFTlNF ICgiR1BMdjMrIik7DQo+ID4gLSANCj4gPiAtQEAgLTMwMSw5ICszMDIsMTcgQEAgZ3J1Yl9wbmdf ZGVjb2RlX2ltYWdlX2hlYWRlciAoc3RydWN0DQo+ID4gZ3J1Yl9wbmdfZGF0YSAqZGF0YSkNCj4g PiAtwqAgwqAgwqAgwqBkYXRhLT5icHAgPDw9IDE7DQo+ID4gLSANCj4gPiAtwqAgwqBkYXRhLT5j b2xvcl9iaXRzID0gY29sb3JfYml0czsNCj4gPiAtLcKgIGRhdGEtPnJvd19ieXRlcyA9IGRhdGEt PmltYWdlX3dpZHRoICogZGF0YS0+YnBwOw0KPiA+IC0rDQo+ID4gLSvCoCBpZiAoZ3J1Yl9tdWwg KGRhdGEtPmltYWdlX3dpZHRoLCBkYXRhLT5icHAsICZkYXRhLT5yb3dfYnl0ZXMpKQ0KPiA+IC0r wqAgwqAgcmV0dXJuIGdydWJfZXJyb3IgKEdSVUJfRVJSX09VVF9PRl9SQU5HRSwgTl8oIm92ZXJm bG93IGlzDQo+ID4gZGV0ZWN0ZWQiKSk7DQo+ID4gLSsNCj4gPiAtwqAgwqBpZiAoZGF0YS0+Y29s b3JfYml0cyA8PSA0KQ0KPiA+IC0twqAgwqAgZGF0YS0+cm93X2J5dGVzID0gKGRhdGEtPmltYWdl X3dpZHRoICogZGF0YS0+Y29sb3JfYml0cyArIDcpIC8NCj4gPiA4Ow0KPiA+IC0rwqAgwqAgew0K PiA+IC0rwqAgwqAgwqAgaWYgKGdydWJfbXVsIChkYXRhLT5pbWFnZV93aWR0aCwgZGF0YS0+Y29s b3JfYml0cyArIDcsICZkYXRhLQ0KPiA+ID4gcm93X2J5dGVzKSkNCj4gPiAtK8KgIMKgIMKgIHJl dHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9PVVRfT0ZfUkFOR0UsIE5fKCJvdmVyZmxvdyBpcw0K PiA+IGRldGVjdGVkIikpOw0KPiA+IC0rDQo+ID4gLSvCoCDCoCDCoCBkYXRhLT5yb3dfYnl0ZXMg Pj49IDM7DQo+ID4gLSvCoCDCoCB9DQo+ID4gLSANCj4gPiAtICNpZm5kZWYgR1JVQl9DUFVfV09S RFNfQklHRU5ESUFODQo+ID4gLcKgIMKgaWYgKGRhdGEtPmlzXzE2Yml0IHx8IGRhdGEtPmlzX2dy YXkgfHwgZGF0YS0+aXNfcGFsZXR0ZSkNCj4gPiAtLS0gDQo+ID4gLTIuMTQuNA0KPiA+IC0NCj4g PiBkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzL0NWRS0yMDIwLTE1NzA2 LXNjcmlwdC1Bdm9pZC0NCj4gPiBhLXVzZS1hZnRlci1mcmVlLXdoZW4tcmVkZWZpbmluZy1hLWZ1 bmMucGF0Y2ggYi9tZXRhL3JlY2lwZXMtDQo+ID4gYnNwL2dydWIvZmlsZXMvQ1ZFLTIwMjAtMTU3 MDYtc2NyaXB0LUF2b2lkLWEtdXNlLWFmdGVyLWZyZWUtd2hlbi0NCj4gPiByZWRlZmluaW5nLWEt ZnVuYy5wYXRjaA0KPiA+IGRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDMyOWU1 NTRhNjguLjAwMDAwMDAwMDANCj4gPiAtLS0gYS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMv Q1ZFLTIwMjAtMTU3MDYtc2NyaXB0LUF2b2lkLWEtdXNlLQ0KPiA+IGFmdGVyLWZyZWUtd2hlbi1y ZWRlZmluaW5nLWEtZnVuYy5wYXRjaA0KPiA+ICsrKyAvZGV2L251bGwNCj4gPiBAQCAtMSwxMTcg KzAsMCBAQA0KPiA+IC1Gcm9tIGM2NWZjN2U3NWI3YjdlODgwZDkwNzY2MDU3MDQwMDExNzAxZTk3 ZjQgTW9uIFNlcCAxNyAwMDowMDowMA0KPiA+IDIwMDENCj4gPiAtRnJvbTogQ2hyaXMgQ291bHNv biA8Y2hyaXMuY291bHNvbkBjYW5vbmljYWwuY29tPg0KPiA+IC1EYXRlOiBGcmksIDEwIEp1bCAy MDIwIDE0OjQxOjQ1ICswMTAwDQo+ID4gLVN1YmplY3Q6IFtQQVRDSCA4LzldIHNjcmlwdDogQXZv aWQgYSB1c2UtYWZ0ZXItZnJlZSB3aGVuIHJlZGVmaW5pbmcNCj4gPiBhIGZ1bmN0aW9uDQo+ID4g LSBkdXJpbmcgZXhlY3V0aW9uDQo+ID4gLQ0KPiA+IC1EZWZpbmluZyBhIG5ldyBmdW5jdGlvbiB3 aXRoIHRoZSBzYW1lIG5hbWUgYXMgYSBwcmV2aW91c2x5IGRlZmluZWQNCj4gPiAtZnVuY3Rpb24g Y2F1c2VzIHRoZSBncnViX3NjcmlwdCBhbmQgYXNzb2NpYXRlZCByZXNvdXJjZXMgZm9yIHRoZQ0K PiA+IC1wcmV2aW91cyBmdW5jdGlvbiB0byBiZSBmcmVlZC4gSWYgdGhlIHByZXZpb3VzIGZ1bmN0 aW9uIGlzIGN1cnJlbnRseQ0KPiA+IC1leGVjdXRpbmcgd2hlbiBhIGZ1bmN0aW9uIHdpdGggdGhl IHNhbWUgbmFtZSBpcyBkZWZpbmVkLCB0aGlzDQo+ID4gcmVzdWx0cw0KPiA+IC1pbiB1c2UtYWZ0 ZXItZnJlZXMgd2hlbiBwcm9jZXNzaW5nIHN1YnNlcXVlbnQgY29tbWFuZHMgaW4gdGhlDQo+ID4g b3JpZ2luYWwNCj4gPiAtZnVuY3Rpb24uDQo+ID4gLQ0KPiA+IC1JbnN0ZWFkLCByZWplY3QgYSBu ZXcgZnVuY3Rpb24gZGVmaW5pdGlvbiBpZiBpdCBoYXMgdGhlIHNhbWUgbmFtZSBhcw0KPiA+IC1h IHByZXZpb3VzbHkgZGVmaW5lZCBmdW5jdGlvbiwgYW5kIHRoYXQgZnVuY3Rpb24gaXMgY3VycmVu dGx5IGJlaW5nDQo+ID4gLWV4ZWN1dGVkLiBBbHRob3VnaCBhIGJlaGF2aW91cmFsIGNoYW5nZSwg dGhpcyBzaG91bGQgYmUgYmFja3dhcmRzDQo+ID4gLWNvbXBhdGlibGUgd2l0aCBleGlzdGluZyBj b25maWd1cmF0aW9ucyBiZWNhdXNlIHRoZXkgY2FuJ3QgYmUNCj4gPiAtZGVwZW5kZW50IG9uIHRo ZSBjdXJyZW50IGJlaGF2aW91ciB3aXRob3V0IGJlaW5nIGJyb2tlbi4NCj4gPiAtDQo+ID4gLUZp eGVzOiBDVkUtMjAyMC0xNTcwNg0KPiA+IC0NCj4gPiAtU2lnbmVkLW9mZi1ieTogQ2hyaXMgQ291 bHNvbiA8Y2hyaXMuY291bHNvbkBjYW5vbmljYWwuY29tPg0KPiA+IC1SZXZpZXdlZC1ieTogRGFu aWVsIEtpcGVyIDxkYW5pZWwua2lwZXJAb3JhY2xlLmNvbT4NCj4gPiAtDQo+ID4gLVVwc3RyZWFt LVN0YXR1czogQmFja3BvcnQNCj4gPiAtQ1ZFOiBDVkUtMjAyMC0xNTcwNg0KPiA+IC0NCj4gPiAt UmVmZXJlbmNlIHRvIHVwc3RyZWFtIHBhdGNoOg0KPiA+IC0NCj4gPiBodHRwczovL2dpdC5zYXZh bm5haC5nbnUub3JnL2NnaXQvZ3J1Yi5naXQvY29tbWl0Lz9pZD00MjZmNTczODNkNjQ3NDA2YWU5 YzYyOGM0NzIwNTljMjdjZDZlMDQwDQo+ID4gLQ0KPiA+IC1TaWduZWQtb2ZmLWJ5OiBZb25neGlu IExpdSA8eW9uZ3hpbi5saXVAd2luZHJpdmVyLmNvbT4NCj4gPiAtLS0tDQo+ID4gLSBncnViLWNv cmUvc2NyaXB0L2V4ZWN1dGUuY8KgIHzCoCAyICsrDQo+ID4gLSBncnViLWNvcmUvc2NyaXB0L2Z1 bmN0aW9uLmMgfCAxNiArKysrKysrKysrKysrLS0tDQo+ID4gLSBncnViLWNvcmUvc2NyaXB0L3Bh cnNlci55wqAgwqB8wqAgMyArKy0NCj4gPiAtIGluY2x1ZGUvZ3J1Yi9zY3JpcHRfc2guaMKgIMKg IHzCoCAyICsrDQo+ID4gLSA0IGZpbGVzIGNoYW5nZWQsIDE5IGluc2VydGlvbnMoKyksIDQgZGVs ZXRpb25zKC0pDQo+ID4gLQ0KPiA+IC1kaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL3NjcmlwdC9leGVj dXRlLmMgYi9ncnViLWNvcmUvc2NyaXB0L2V4ZWN1dGUuYw0KPiA+IC1pbmRleCBjOGQ2ODA2Li43 ZTAyOGUxIDEwMDY0NA0KPiA+IC0tLS0gYS9ncnViLWNvcmUvc2NyaXB0L2V4ZWN1dGUuYw0KPiA+ IC0rKysgYi9ncnViLWNvcmUvc2NyaXB0L2V4ZWN1dGUuYw0KPiA+IC1AQCAtODM4LDcgKzgzOCw5 IEBAIGdydWJfc2NyaXB0X2Z1bmN0aW9uX2NhbGwNCj4gPiAoZ3J1Yl9zY3JpcHRfZnVuY3Rpb25f dCBmdW5jLCBpbnQgYXJnYywgY2hhciAqKmFyZ3MpDQo+ID4gLcKgIMKgb2xkX3Njb3BlID0gc2Nv cGU7DQo+ID4gLcKgIMKgc2NvcGUgPSAmbmV3X3Njb3BlOw0KPiA+IC0gDQo+ID4gLSvCoCBmdW5j LT5leGVjdXRpbmcrKzsNCj4gPiAtwqAgwqByZXQgPSBncnViX3NjcmlwdF9leGVjdXRlIChmdW5j LT5mdW5jKTsNCj4gPiAtK8KgIGZ1bmMtPmV4ZWN1dGluZy0tOw0KPiA+IC0gDQo+ID4gLcKgIMKg ZnVuY3Rpb25fcmV0dXJuID0gMDsNCj4gPiAtwqAgwqBhY3RpdmVfbG9vcHMgPSBsb29wczsNCj4g PiAtZGlmZiAtLWdpdCBhL2dydWItY29yZS9zY3JpcHQvZnVuY3Rpb24uYyBiL2dydWItDQo+ID4g Y29yZS9zY3JpcHQvZnVuY3Rpb24uYw0KPiA+IC1pbmRleCBkMzY2NTVlLi4zYWFkMDRiIDEwMDY0 NA0KPiA+IC0tLS0gYS9ncnViLWNvcmUvc2NyaXB0L2Z1bmN0aW9uLmMNCj4gPiAtKysrIGIvZ3J1 Yi1jb3JlL3NjcmlwdC9mdW5jdGlvbi5jDQo+ID4gLUBAIC0zNCw2ICszNCw3IEBAIGdydWJfc2Ny aXB0X2Z1bmN0aW9uX2NyZWF0ZSAoc3RydWN0DQo+ID4gZ3J1Yl9zY3JpcHRfYXJnICpmdW5jdGlv bm5hbWVfYXJnLA0KPiA+IC3CoCDCoGZ1bmMgPSAoZ3J1Yl9zY3JpcHRfZnVuY3Rpb25fdCkgZ3J1 Yl9tYWxsb2MgKHNpemVvZiAoKmZ1bmMpKTsNCj4gPiAtwqAgwqBpZiAoISBmdW5jKQ0KPiA+IC3C oCDCoCDCoHJldHVybiAwOw0KPiA+IC0rwqAgZnVuYy0+ZXhlY3V0aW5nID0gMDsNCj4gPiAtIA0K PiA+IC3CoCDCoGZ1bmMtPm5hbWUgPSBncnViX3N0cmR1cCAoZnVuY3Rpb25uYW1lX2FyZy0+c3Ry KTsNCj4gPiAtwqAgwqBpZiAoISBmdW5jLT5uYW1lKQ0KPiA+IC1AQCAtNjAsMTAgKzYxLDE5IEBA IGdydWJfc2NyaXB0X2Z1bmN0aW9uX2NyZWF0ZSAoc3RydWN0DQo+ID4gZ3J1Yl9zY3JpcHRfYXJn ICpmdW5jdGlvbm5hbWVfYXJnLA0KPiA+IC3CoCDCoCDCoCDCoGdydWJfc2NyaXB0X2Z1bmN0aW9u X3QgcTsNCj4gPiAtIA0KPiA+IC3CoCDCoCDCoCDCoHEgPSAqcDsNCj4gPiAtLcKgIMKgIMKgIGdy dWJfc2NyaXB0X2ZyZWUgKHEtPmZ1bmMpOw0KPiA+IC0twqAgwqAgwqAgcS0+ZnVuYyA9IGNtZDsN Cj4gPiAtwqAgwqAgwqAgwqBncnViX2ZyZWUgKGZ1bmMpOw0KPiA+IC0twqAgwqAgwqAgZnVuYyA9 IHE7DQo+ID4gLSvCoCDCoCDCoCBpZiAocS0+ZXhlY3V0aW5nID4gMCkNCj4gPiAtK8KgIMKgIMKg IMKgIHsNCj4gPiAtK8KgIMKgIMKgIMKgIMKgIGdydWJfZXJyb3IgKEdSVUJfRVJSX0JBRF9BUkdV TUVOVCwNCj4gPiAtK8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIE5fKCJhdHRlbXB0IHRv IHJlZGVmaW5lIGEgZnVuY3Rpb24gYmVpbmcNCj4gPiBleGVjdXRlZCIpKTsNCj4gPiAtK8KgIMKg IMKgIMKgIMKgIGZ1bmMgPSBOVUxMOw0KPiA+IC0rwqAgwqAgwqAgwqAgfQ0KPiA+IC0rwqAgwqAg wqAgZWxzZQ0KPiA+IC0rwqAgwqAgwqAgwqAgew0KPiA+IC0rwqAgwqAgwqAgwqAgwqAgZ3J1Yl9z Y3JpcHRfZnJlZSAocS0+ZnVuYyk7DQo+ID4gLSvCoCDCoCDCoCDCoCDCoCBxLT5mdW5jID0gY21k Ow0KPiA+IC0rwqAgwqAgwqAgwqAgwqAgZnVuYyA9IHE7DQo+ID4gLSvCoCDCoCDCoCDCoCB9DQo+ ID4gLcKgIMKgIMKgfQ0KPiA+IC3CoCDCoGVsc2UNCj4gPiAtwqAgwqAgwqB7DQo+ID4gLWRpZmYg LS1naXQgYS9ncnViLWNvcmUvc2NyaXB0L3BhcnNlci55IGIvZ3J1Yi1jb3JlL3NjcmlwdC9wYXJz ZXIueQ0KPiA+IC1pbmRleCA0ZjBhYjgzLi5mODBiODZiIDEwMDY0NA0KPiA+IC0tLS0gYS9ncnVi LWNvcmUvc2NyaXB0L3BhcnNlci55DQo+ID4gLSsrKyBiL2dydWItY29yZS9zY3JpcHQvcGFyc2Vy LnkNCj4gPiAtQEAgLTI4OSw3ICsyODksOCBAQCBmdW5jdGlvbjogImZ1bmN0aW9uIiAibmFtZSIN Cj4gPiAtwqAgwqAgwqAgwqAgwqAgwqAgwqBncnViX3NjcmlwdF9tZW1fZnJlZSAoc3RhdGUtPmZ1 bmNfbWVtKTsNCj4gPiAtwqAgwqAgwqAgwqAgwqAgwqBlbHNlIHsNCj4gPiAtwqAgwqAgwqAgwqAg wqAgwqAgwqBzY3JpcHQtPmNoaWxkcmVuID0gc3RhdGUtPnNjcmlwdHM7DQo+ID4gLS3CoCDCoCDC oCDCoCDCoCDCoCBncnViX3NjcmlwdF9mdW5jdGlvbl9jcmVhdGUgKCQyLCBzY3JpcHQpOw0KPiA+ IC0rwqAgwqAgwqAgwqAgwqAgwqAgaWYgKCFncnViX3NjcmlwdF9mdW5jdGlvbl9jcmVhdGUgKCQy LCBzY3JpcHQpKQ0KPiA+IC0rwqAgwqAgwqAgwqAgwqAgwqAgwqAgZ3J1Yl9zY3JpcHRfZnJlZSAo c2NyaXB0KTsNCj4gPiAtwqAgwqAgwqAgwqAgwqAgwqB9DQo+ID4gLSANCj4gPiAtwqAgwqAgwqAg wqAgwqAgwqBzdGF0ZS0+c2NyaXB0cyA9ICQ8c2NyaXB0cz4zOw0KPiA+IC1kaWZmIC0tZ2l0IGEv aW5jbHVkZS9ncnViL3NjcmlwdF9zaC5oIGIvaW5jbHVkZS9ncnViL3NjcmlwdF9zaC5oDQo+ID4g LWluZGV4IGIzODJiY2YuLjZjNDhlMDcgMTAwNjQ0DQo+ID4gLS0tLSBhL2luY2x1ZGUvZ3J1Yi9z Y3JpcHRfc2guaA0KPiA+IC0rKysgYi9pbmNsdWRlL2dydWIvc2NyaXB0X3NoLmgNCj4gPiAtQEAg LTM2MSw2ICszNjEsOCBAQCBzdHJ1Y3QgZ3J1Yl9zY3JpcHRfZnVuY3Rpb24NCj4gPiAtIA0KPiA+ IC3CoCDCoC8qIFRoZSBuZXh0IGVsZW1lbnQuwqAgKi8NCj4gPiAtwqAgwqBzdHJ1Y3QgZ3J1Yl9z Y3JpcHRfZnVuY3Rpb24gKm5leHQ7DQo+ID4gLSsNCj4gPiAtK8KgIHVuc2lnbmVkIGV4ZWN1dGlu ZzsNCj4gPiAtIH07DQo+ID4gLSB0eXBlZGVmIHN0cnVjdCBncnViX3NjcmlwdF9mdW5jdGlvbiAq Z3J1Yl9zY3JpcHRfZnVuY3Rpb25fdDsNCj4gPiAtIA0KPiA+IC0tLSANCj4gPiAtMi4xNC40DQo+ ID4gLQ0KPiA+IGRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvQ1ZFLTIw MjAtMTU3MDctbGludXgtRml4LQ0KPiA+IGludGVnZXItb3ZlcmZsb3dzLWluLWluaXRyZC1zaXpl LWhhbmRsaW5nLnBhdGNoIGIvbWV0YS9yZWNpcGVzLQ0KPiA+IGJzcC9ncnViL2ZpbGVzL0NWRS0y MDIwLTE1NzA3LWxpbnV4LUZpeC1pbnRlZ2VyLW92ZXJmbG93cy1pbi1pbml0cmQtDQo+ID4gc2l6 ZS1oYW5kbGluZy5wYXRjaA0KPiA+IGRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4 IGQ0ZjkzMDBjMGEuLjAwMDAwMDAwMDANCj4gPiAtLS0gYS9tZXRhL3JlY2lwZXMtYnNwL2dydWIv ZmlsZXMvQ1ZFLTIwMjAtMTU3MDctbGludXgtRml4LWludGVnZXItDQo+ID4gb3ZlcmZsb3dzLWlu LWluaXRyZC1zaXplLWhhbmRsaW5nLnBhdGNoDQo+ID4gKysrIC9kZXYvbnVsbA0KPiA+IEBAIC0x LDE3NyArMCwwIEBADQo+ID4gLUZyb20gNjhhMDlhNzRmNmQ3MjZkNzk3MDk4NDdmMzY3MWMwYTA4 ZTRmYjVhMCBNb24gU2VwIDE3IDAwOjAwOjAwDQo+ID4gMjAwMQ0KPiA+IC1Gcm9tOiBDb2xpbiBX YXRzb24gPGNqd2F0c29uQGRlYmlhbi5vcmc+DQo+ID4gLURhdGU6IFNhdCwgMjUgSnVsIDIwMjAg MTI6MTU6MzcgKzAxMDANCj4gPiAtU3ViamVjdDogW1BBVENIIDkvOV0gbGludXg6IEZpeCBpbnRl Z2VyIG92ZXJmbG93cyBpbiBpbml0cmQgc2l6ZQ0KPiA+IGhhbmRsaW5nDQo+ID4gLQ0KPiA+IC1U aGVzZSBjb3VsZCBiZSB0cmlnZ2VyZWQgYnkgYSBjcmFmdGVkIGZpbGVzeXN0ZW0gd2l0aCB2ZXJ5 IGxhcmdlDQo+ID4gZmlsZXMuDQo+ID4gLQ0KPiA+IC1GaXhlczogQ1ZFLTIwMjAtMTU3MDcNCj4g PiAtDQo+ID4gLVNpZ25lZC1vZmYtYnk6IENvbGluIFdhdHNvbiA8Y2p3YXRzb25AZGViaWFuLm9y Zz4NCj4gPiAtUmV2aWV3ZWQtYnk6IEphbiBTZXRqZS1FaWxlcnMgPGphbi5zZXRqZWVpbGVyc0Bv cmFjbGUuY29tPg0KPiA+IC1SZXZpZXdlZC1ieTogRGFuaWVsIEtpcGVyIDxkYW5pZWwua2lwZXJA b3JhY2xlLmNvbT4NCj4gPiAtDQo+ID4gLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQNCj4gPiAt Q1ZFOiBDVkUtMjAyMC0xNTcwNw0KPiA+IC0NCj4gPiAtUmVmZXJlbmNlIHRvIHVwc3RyZWFtIHBh dGNoOg0KPiA+IC0NCj4gPiBodHRwczovL2dpdC5zYXZhbm5haC5nbnUub3JnL2NnaXQvZ3J1Yi5n aXQvY29tbWl0Lz9pZD1lN2I4ODU2ZjhiZTMyOTJhZmRiMzhkMmU4YzcwYWQ4ZDYyYTYxZTEwDQo+ ID4gLQ0KPiA+IC1TaWduZWQtb2ZmLWJ5OiBZb25neGluIExpdSA8eW9uZ3hpbi5saXVAd2luZHJp dmVyLmNvbT4NCj4gPiAtLS0tDQo+ID4gLSBncnViLWNvcmUvbG9hZGVyL2xpbnV4LmMgfCA3NCAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tDQo+ID4gLS0tLS0tLS0tLS0NCj4g PiAtIDEgZmlsZSBjaGFuZ2VkLCA1NCBpbnNlcnRpb25zKCspLCAyMCBkZWxldGlvbnMoLSkNCj4g PiAtDQo+ID4gLWRpZmYgLS1naXQgYS9ncnViLWNvcmUvbG9hZGVyL2xpbnV4LmMgYi9ncnViLWNv cmUvbG9hZGVyL2xpbnV4LmMNCj4gPiAtaW5kZXggNDcxYjIxNC4uOGM4NTY1YSAxMDA2NDQNCj4g PiAtLS0tIGEvZ3J1Yi1jb3JlL2xvYWRlci9saW51eC5jDQo+ID4gLSsrKyBiL2dydWItY29yZS9s b2FkZXIvbGludXguYw0KPiA+IC1AQCAtNCw2ICs0LDcgQEANCj4gPiAtICNpbmNsdWRlIDxncnVi L21pc2MuaD4NCj4gPiAtICNpbmNsdWRlIDxncnViL2ZpbGUuaD4NCj4gPiAtICNpbmNsdWRlIDxn cnViL21tLmg+DQo+ID4gLSsjaW5jbHVkZSA8Z3J1Yi9zYWZlbWF0aC5oPg0KPiA+IC0gDQo+ID4g LSBzdHJ1Y3QgbmV3Y19oZWFkDQo+ID4gLSB7DQo+ID4gLUBAIC05OCwxMyArOTksMTMgQEAgZnJl ZV9kaXIgKHN0cnVjdCBkaXIgKnJvb3QpDQo+ID4gLcKgIMKgZ3J1Yl9mcmVlIChyb290KTsNCj4g PiAtIH0NCj4gPiAtIA0KPiA+IC0tc3RhdGljIGdydWJfc2l6ZV90DQo+ID4gLStzdGF0aWMgZ3J1 Yl9lcnJfdA0KPiA+IC0gaW5zZXJ0X2RpciAoY29uc3QgY2hhciAqbmFtZSwgc3RydWN0IGRpciAq KnJvb3QsDQo+ID4gLS3CoCDCoCDCoCDCoCDCoCBncnViX3VpbnQ4X3QgKnB0cikNCj4gPiAtK8Kg IMKgIMKgIMKgIMKgIGdydWJfdWludDhfdCAqcHRyLCBncnViX3NpemVfdCAqc2l6ZSkNCj4gPiAt IHsNCj4gPiAtwqAgwqBzdHJ1Y3QgZGlyICpjdXIsICoqaGVhZCA9IHJvb3Q7DQo+ID4gLcKgIMKg Y29uc3QgY2hhciAqY2IsICpjZSA9IG5hbWU7DQo+ID4gLS3CoCBncnViX3NpemVfdCBzaXplID0g MDsNCj4gPiAtK8KgICpzaXplID0gMDsNCj4gPiAtwqAgwqB3aGlsZSAoMSkNCj4gPiAtwqAgwqAg wqB7DQo+ID4gLcKgIMKgIMKgIMKgZm9yIChjYiA9IGNlOyAqY2IgPT0gJy8nOyBjYisrKTsNCj4g PiAtQEAgLTEzMCwxNCArMTMxLDIyIEBAIGluc2VydF9kaXIgKGNvbnN0IGNoYXIgKm5hbWUsIHN0 cnVjdCBkaXINCj4gPiAqKnJvb3QsDQo+ID4gLcKgIMKgIMKgIMKgIMKgIMKgIMKgcHRyID0gbWFr ZV9oZWFkZXIgKHB0ciwgbmFtZSwgY2UgLSBuYW1lLA0KPiA+IC3CoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAwNDA3NzcsIDApOw0KPiA+IC3CoCDCoCDCoCDC oCDCoCDCoH0NCj4gPiAtLcKgIMKgIMKgIMKgIHNpemUgKz0gQUxJR05fVVAgKChjZSAtIChjaGFy ICopIG5hbWUpDQo+ID4gLS3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAr IHNpemVvZiAoc3RydWN0IG5ld2NfaGVhZCksIDQpOw0KPiA+IC0rwqAgwqAgwqAgwqAgaWYgKGdy dWJfYWRkICgqc2l6ZSwNCj4gPiAtK8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIEFM SUdOX1VQICgoY2UgLSAoY2hhciAqKSBuYW1lKQ0KPiA+IC0rwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgKyBzaXplb2YgKHN0cnVjdCBuZXdjX2hlYWQpLCA0 KSwNCj4gPiAtK8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHNpemUpKQ0KPiA+IC0r wqAgwqAgwqAgwqAgwqAgew0KPiA+IC0rwqAgwqAgwqAgwqAgwqAgwqAgZ3J1Yl9lcnJvciAoR1JV Ql9FUlJfT1VUX09GX1JBTkdFLCBOXygib3ZlcmZsb3cgaXMNCj4gPiBkZXRlY3RlZCIpKTsNCj4g PiAtK8KgIMKgIMKgIMKgIMKgIMKgIGdydWJfZnJlZSAobi0+bmFtZSk7DQo+ID4gLSvCoCDCoCDC oCDCoCDCoCDCoCBncnViX2ZyZWUgKG4pOw0KPiA+IC0rwqAgwqAgwqAgwqAgwqAgwqAgcmV0dXJu IGdydWJfZXJybm87DQo+ID4gLSvCoCDCoCDCoCDCoCDCoCB9DQo+ID4gLcKgIMKgIMKgIMKgIMKg KmhlYWQgPSBuOw0KPiA+IC3CoCDCoCDCoCDCoCDCoGN1ciA9IG47DQo+ID4gLcKgIMKgIMKgIMKg fQ0KPiA+IC3CoCDCoCDCoCDCoHJvb3QgPSAmY3VyLT5uZXh0Ow0KPiA+IC3CoCDCoCDCoH0NCj4g PiAtLcKgIHJldHVybiBzaXplOw0KPiA+IC0rwqAgcmV0dXJuIEdSVUJfRVJSX05PTkU7DQo+ID4g LSB9DQo+ID4gLSANCj4gPiAtIGdydWJfZXJyX3QNCj4gPiAtQEAgLTE3MywyNiArMTgyLDMzIEBA IGdydWJfaW5pdHJkX2luaXQgKGludCBhcmdjLCBjaGFyICphcmd2W10sDQo+ID4gLcKgIMKgIMKg IMKgIMKgZXB0ciA9IGdydWJfc3RyY2hyIChwdHIsICc6Jyk7DQo+ID4gLcKgIMKgIMKgIMKgIMKg aWYgKGVwdHIpDQo+ID4gLcKgIMKgIMKgIMKgIMKgIMKgew0KPiA+IC0rwqAgwqAgwqAgwqAgwqAg wqAgZ3J1Yl9zaXplX3QgZGlyX3NpemUsIG5hbWVfbGVuOw0KPiA+IC0rDQo+ID4gLcKgIMKgIMKg IMKgIMKgIMKgIMKgaW5pdHJkX2N0eC0+Y29tcG9uZW50c1tpXS5uZXdjX25hbWUgPSBncnViX3N0 cm5kdXANCj4gPiAocHRyLCBlcHRyIC0gcHRyKTsNCj4gPiAtLcKgIMKgIMKgIMKgIMKgIMKgIGlm ICghaW5pdHJkX2N0eC0+Y29tcG9uZW50c1tpXS5uZXdjX25hbWUpDQo+ID4gLSvCoCDCoCDCoCDC oCDCoCDCoCBpZiAoIWluaXRyZF9jdHgtPmNvbXBvbmVudHNbaV0ubmV3Y19uYW1lIHx8DQo+ID4g LSvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpbnNlcnRfZGlyIChpbml0cmRfY3R4LT5jb21wb25l bnRzW2ldLm5ld2NfbmFtZSwNCj4gPiAmcm9vdCwgMCwNCj4gPiAtK8KgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgICZkaXJfc2l6ZSkpDQo+ID4gLcKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgew0KPiA+IC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGdydWJfaW5pdHJkX2Ns b3NlIChpbml0cmRfY3R4KTsNCj4gPiAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqByZXR1cm4g Z3J1Yl9lcnJubzsNCj4gPiAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB9DQo+ID4gLS3CoCDCoCDC oCDCoCDCoCDCoCBpbml0cmRfY3R4LT5zaXplDQo+ID4gLS3CoCDCoCDCoCDCoCDCoCDCoCDCoCAr PSBBTElHTl9VUCAoc2l6ZW9mIChzdHJ1Y3QgbmV3Y19oZWFkKQ0KPiA+IC0twqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgKyBncnViX3N0cmxlbiAoaW5pdHJkX2N0eC0NCj4g PiA+IGNvbXBvbmVudHNbaV0ubmV3Y19uYW1lKSwNCj4gPiAtLcKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgNCk7DQo+ID4gLS3CoCDCoCDCoCDCoCDCoCDCoCBpbml0cmRf Y3R4LT5zaXplICs9IGluc2VydF9kaXIgKGluaXRyZF9jdHgtDQo+ID4gPiBjb21wb25lbnRzW2ld Lm5ld2NfbmFtZSwNCj4gPiAtLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgICZyb290LCAwKTsNCj4gPiAtK8KgIMKgIMKgIMKg IMKgIMKgIG5hbWVfbGVuID0gZ3J1Yl9zdHJsZW4gKGluaXRyZF9jdHgtDQo+ID4gPiBjb21wb25l bnRzW2ldLm5ld2NfbmFtZSk7DQo+ID4gLSvCoCDCoCDCoCDCoCDCoCDCoCBpZiAoZ3J1Yl9hZGQg KGluaXRyZF9jdHgtPnNpemUsDQo+ID4gLSvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCBBTElHTl9VUCAoc2l6ZW9mIChzdHJ1Y3QgbmV3Y19oZWFkKSArDQo+ID4gbmFtZV9s ZW4sIDQpLA0KPiA+IC0rwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgJmlu aXRyZF9jdHgtPnNpemUpIHx8DQo+ID4gLSvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBncnViX2Fk ZCAoaW5pdHJkX2N0eC0+c2l6ZSwgZGlyX3NpemUsICZpbml0cmRfY3R4LQ0KPiA+ID4gc2l6ZSkp DQo+ID4gLSvCoCDCoCDCoCDCoCDCoCDCoCDCoCBnb3RvIG92ZXJmbG93Ow0KPiA+IC3CoCDCoCDC oCDCoCDCoCDCoCDCoG5ld2MgPSAxOw0KPiA+IC3CoCDCoCDCoCDCoCDCoCDCoCDCoGZuYW1lID0g ZXB0ciArIDE7DQo+ID4gLcKgIMKgIMKgIMKgIMKgIMKgfQ0KPiA+IC3CoCDCoCDCoCDCoH0NCj4g PiAtwqAgwqAgwqAgwqBlbHNlIGlmIChuZXdjKQ0KPiA+IC3CoCDCoCDCoCDCoHsNCj4gPiAtLcKg IMKgIMKgIMKgIGluaXRyZF9jdHgtPnNpemUgKz0gQUxJR05fVVAgKHNpemVvZiAoc3RydWN0IG5l d2NfaGVhZCkNCj4gPiAtLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgICsgc2l6ZW9mICgiVFJBSUxFUiEhISIpIC0gMSwNCj4gPiA0KTsNCj4g PiAtK8KgIMKgIMKgIMKgIGlmIChncnViX2FkZCAoaW5pdHJkX2N0eC0+c2l6ZSwNCj4gPiAtK8Kg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIEFMSUdOX1VQIChzaXplb2YgKHN0cnVjdCBu ZXdjX2hlYWQpDQo+ID4gLSvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCArIHNpemVvZiAoIlRSQUlMRVIhISEiKSAtIDEsIDQpLA0KPiA+IC0rwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgJmluaXRyZF9jdHgtPnNpemUpKQ0KPiA+IC0rwqAgwqAg wqAgwqAgwqAgZ290byBvdmVyZmxvdzsNCj4gPiAtwqAgwqAgwqAgwqAgwqBmcmVlX2RpciAocm9v dCk7DQo+ID4gLcKgIMKgIMKgIMKgIMKgcm9vdCA9IDA7DQo+ID4gLcKgIMKgIMKgIMKgIMKgbmV3 YyA9IDA7DQo+ID4gLUBAIC0yMDgsMTkgKzIyNCwyOSBAQCBncnViX2luaXRyZF9pbml0IChpbnQg YXJnYywgY2hhciAqYXJndltdLA0KPiA+IC3CoCDCoCDCoCDCoGluaXRyZF9jdHgtPm5maWxlcysr Ow0KPiA+IC3CoCDCoCDCoCDCoGluaXRyZF9jdHgtPmNvbXBvbmVudHNbaV0uc2l6ZQ0KPiA+IC3C oCDCoCDCoCDCoD0gZ3J1Yl9maWxlX3NpemUgKGluaXRyZF9jdHgtPmNvbXBvbmVudHNbaV0uZmls ZSk7DQo+ID4gLS3CoCDCoCDCoCBpbml0cmRfY3R4LT5zaXplICs9IGluaXRyZF9jdHgtPmNvbXBv bmVudHNbaV0uc2l6ZTsNCj4gPiAtK8KgIMKgIMKgIGlmIChncnViX2FkZCAoaW5pdHJkX2N0eC0+ c2l6ZSwgaW5pdHJkX2N0eC0NCj4gPiA+IGNvbXBvbmVudHNbaV0uc2l6ZSwNCj4gPiAtK8KgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgICZpbml0cmRfY3R4LT5zaXplKSkNCj4gPiAtK8KgIMKgIMKg IGdvdG8gb3ZlcmZsb3c7DQo+ID4gLcKgIMKgIMKgfQ0KPiA+IC0gDQo+ID4gLcKgIMKgaWYgKG5l d2MpDQo+ID4gLcKgIMKgIMKgew0KPiA+IC3CoCDCoCDCoCDCoGluaXRyZF9jdHgtPnNpemUgPSBB TElHTl9VUCAoaW5pdHJkX2N0eC0+c2l6ZSwgNCk7DQo+ID4gLS3CoCDCoCDCoCBpbml0cmRfY3R4 LT5zaXplICs9IEFMSUdOX1VQIChzaXplb2YgKHN0cnVjdCBuZXdjX2hlYWQpDQo+ID4gLS3CoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCArIHNpemVvZiAo IlRSQUlMRVIhISEiKSAtIDEsIDQpOw0KPiA+IC0rwqAgwqAgwqAgaWYgKGdydWJfYWRkIChpbml0 cmRfY3R4LT5zaXplLA0KPiA+IC0rwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgQUxJR05fVVAg KHNpemVvZiAoc3RydWN0IG5ld2NfaGVhZCkNCj4gPiAtK8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgICsgc2l6ZW9mICgiVFJBSUxFUiEhISIpIC0gMSwgNCksDQo+ID4g LSvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAmaW5pdHJkX2N0eC0+c2l6ZSkpDQo+ID4gLSvC oCDCoCDCoCBnb3RvIG92ZXJmbG93Ow0KPiA+IC3CoCDCoCDCoCDCoGZyZWVfZGlyIChyb290KTsN Cj4gPiAtwqAgwqAgwqAgwqByb290ID0gMDsNCj4gPiAtwqAgwqAgwqB9DQo+ID4gLcKgIMKgDQo+ ID4gLcKgIMKgcmV0dXJuIEdSVUJfRVJSX05PTkU7DQo+ID4gLSsNCj4gPiAtKyBvdmVyZmxvdzoN Cj4gPiAtK8KgIGZyZWVfZGlyIChyb290KTsNCj4gPiAtK8KgIGdydWJfaW5pdHJkX2Nsb3NlIChp bml0cmRfY3R4KTsNCj4gPiAtK8KgIHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9PVVRfT0Zf UkFOR0UsIE5fKCJvdmVyZmxvdyBpcw0KPiA+IGRldGVjdGVkIikpOw0KPiA+IC0gfQ0KPiA+IC0g DQo+ID4gLSBncnViX3NpemVfdA0KPiA+IC1AQCAtMjYxLDggKzI4NywxNiBAQCBncnViX2luaXRy ZF9sb2FkIChzdHJ1Y3QNCj4gPiBncnViX2xpbnV4X2luaXRyZF9jb250ZXh0ICppbml0cmRfY3R4 LA0KPiA+IC0gDQo+ID4gLcKgIMKgIMKgIMKgaWYgKGluaXRyZF9jdHgtPmNvbXBvbmVudHNbaV0u bmV3Y19uYW1lKQ0KPiA+IC3CoCDCoCDCoCDCoHsNCj4gPiAtLcKgIMKgIMKgIMKgIHB0ciArPSBp bnNlcnRfZGlyIChpbml0cmRfY3R4LT5jb21wb25lbnRzW2ldLm5ld2NfbmFtZSwNCj4gPiAtLcKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgJnJvb3QsIHB0cik7DQo+ID4g LSvCoCDCoCDCoCDCoCBncnViX3NpemVfdCBkaXJfc2l6ZTsNCj4gPiAtKw0KPiA+IC0rwqAgwqAg wqAgwqAgaWYgKGluc2VydF9kaXIgKGluaXRyZF9jdHgtPmNvbXBvbmVudHNbaV0ubmV3Y19uYW1l LCAmcm9vdCwNCj4gPiBwdHIsDQo+ID4gLSvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCAmZGlyX3NpemUpKQ0KPiA+IC0rwqAgwqAgwqAgwqAgwqAgew0KPiA+IC0rwqAgwqAgwqAg wqAgwqAgwqAgZnJlZV9kaXIgKHJvb3QpOw0KPiA+IC0rwqAgwqAgwqAgwqAgwqAgwqAgZ3J1Yl9p bml0cmRfY2xvc2UgKGluaXRyZF9jdHgpOw0KPiA+IC0rwqAgwqAgwqAgwqAgwqAgwqAgcmV0dXJu IGdydWJfZXJybm87DQo+ID4gLSvCoCDCoCDCoCDCoCDCoCB9DQo+ID4gLSvCoCDCoCDCoCDCoCBw dHIgKz0gZGlyX3NpemU7DQo+ID4gLcKgIMKgIMKgIMKgIMKgcHRyID0gbWFrZV9oZWFkZXIgKHB0 ciwgaW5pdHJkX2N0eC0NCj4gPiA+IGNvbXBvbmVudHNbaV0ubmV3Y19uYW1lLA0KPiA+IC3CoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBncnViX3N0cmxlbiAoaW5pdHJk X2N0eC0NCj4gPiA+IGNvbXBvbmVudHNbaV0ubmV3Y19uYW1lKSwNCj4gPiAtwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgMDEwMDc3NywNCj4gPiAtLS0gDQo+ID4gLTIu MTQuNA0KPiA+IC0NCj4gPiBkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVz L2F1dG9nZW4uc2gtZXhjbHVkZS1wYy5wYXRjaA0KPiA+IGIvbWV0YS9yZWNpcGVzLWJzcC9ncnVi L2ZpbGVzL2F1dG9nZW4uc2gtZXhjbHVkZS1wYy5wYXRjaA0KPiA+IGluZGV4IGZhYTdmZGUyMzIu LjEzMjNhNTRhNTkgMTAwNjQ0DQo+ID4gLS0tIGEvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVz L2F1dG9nZW4uc2gtZXhjbHVkZS1wYy5wYXRjaA0KPiA+ICsrKyBiL21ldGEvcmVjaXBlcy1ic3Av Z3J1Yi9maWxlcy9hdXRvZ2VuLnNoLWV4Y2x1ZGUtcGMucGF0Y2gNCj4gPiBAQCAtMSw2ICsxLDYg QEANCj4gPiAtRnJvbSA3MmMzMDkyOGQzZDQ2MWUwZTJkMjBjNWZmMzNiZDk2YjY5OTFkNTg1IE1v biBTZXAgMTcgMDA6MDA6MDANCj4gPiAyMDAxDQo+ID4gLUZyb206IFJvYmVydCBZYW5nIDxsaWV6 aGkueWFuZ0B3aW5kcml2ZXIuY29tPg0KPiA+IC1EYXRlOiBTYXQsIDI1IEphbiAyMDE0IDIzOjQ5 OjQ0IC0wNTAwDQo+ID4gK0Zyb20gODc5MGFhOGJlYTczNmY1MjM0MWEwNDMwZmYzZTMxN2QzYmUw Zjk5YiBNb24gU2VwIDE3IDAwOjAwOjAwDQo+ID4gMjAwMQ0KPiA+ICtGcm9tOiBOYXZlZW4gU2Fp bmkgPG5hdmVlbi5rdW1hci5zYWluaUBpbnRlbC5jb20+DQo+ID4gK0RhdGU6IE1vbiwgMTUgTWFy IDIwMjEgMTQ6NDQ6MTUgKzA4MDANCj4gPiDCoFN1YmplY3Q6IFtQQVRDSF0gYXV0b2dlbi5zaDog ZXhjbHVkZSAucGMgZnJvbSBwby9QT1RGSUxFUy5pbg0KPiA+IA0KPiA+IMKgRXhjbHVkZSB0aGUg LnBjIGZyb20gcG8vUE9URklMRVMuaW4gc2luY2UgcXVpbHQgdXNlcyAicGF0Y2ggLS0NCj4gPiBi YWNrdXAiLA0KPiA+IEBAIC0xMywyMyArMTMsMjQgQEAgVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJv cHJpYXRlIFtPRSBzcGVjaWZpY10NCj4gPiANCj4gPiDCoFNpZ25lZC1vZmYtYnk6IFJvYmVydCBZ YW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPg0KPiA+IMKgU2lnbmVkLW9mZi1ieTogQW51 aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4NCj4gPiArU2lnbmVkLW9mZi1ieTogTmF2 ZWVuIFNhaW5pIDxuYXZlZW4ua3VtYXIuc2FpbmlAaW50ZWwuY29tPg0KPiA+IMKgLS0tDQo+ID4g wqAgYXV0b2dlbi5zaCB8IDIgKy0NCj4gPiDCoCAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24o KyksIDEgZGVsZXRpb24oLSkNCj4gPiANCj4gPiDCoGRpZmYgLS1naXQgYS9hdXRvZ2VuLnNoIGIv YXV0b2dlbi5zaA0KPiA+IC1pbmRleCBlZjQzMjcwLi5hNzA2N2E3IDEwMDc1NQ0KPiA+ICtpbmRl eCAzMWIwY2VkN2UuLmM2M2FlNzY2YyAxMDA3NTUNCj4gPiDCoC0tLSBhL2F1dG9nZW4uc2gNCj4g PiDCoCsrKyBiL2F1dG9nZW4uc2gNCj4gPiDCoEBAIC0xMyw3ICsxMyw3IEBAIGZpDQo+ID4gwqAg ZXhwb3J0IExDX0NPTExBVEU9Qw0KPiA+IMKgIHVuc2V0IExDX0FMTA0KPiA+IA0KPiA+IC0tZmlu ZCAuIC1pbmFtZSAnKi5bY2hdJyAhIC1pcGF0aCAnLi9ncnViLWNvcmUvbGliL2xpYmdjcnlwdC1n cnViLyonDQo+ID4gISAtaXBhdGggJy4vYnVpbGQtYXV4LyonICEgLWlwYXRoICcuL2dydWItDQo+ ID4gY29yZS9saWIvbGliZ2NyeXB0L3NyYy9taXNjLmMnICEgLWlwYXRoICcuL2dydWItDQo+ID4g Y29yZS9saWIvbGliZ2NyeXB0L3NyYy9nbG9iYWwuYycgISAtaXBhdGggJy4vZ3J1Yi0NCj4gPiBj b3JlL2xpYi9saWJnY3J5cHQvc3JjL3NlY21lbS5jJ8KgICEgLWlwYXRoICcuL3V0aWwvZ3J1Yi1n ZW4tDQo+ID4gd2lkdGhzcGVjLmMnICEgLWlwYXRoICcuL3V0aWwvZ3J1Yi1nZW4tYXNjaWloLmMn ICEgLWlwYXRoDQo+ID4gJy4vZ251bGliLyonICEgLWluYW1lICcuL2dydWItY29yZS9saWIvZ251 bGliLyonIHxzb3J0ID4NCj4gPiBwby9QT1RGSUxFUy5pbg0KPiA+IC0rZmluZCAuIC1pbmFtZSAn Ki5bY2hdJyAhIC1pcGF0aCAnLi9ncnViLWNvcmUvbGliL2xpYmdjcnlwdC1ncnViLyonDQo+ID4g ISAtaXBhdGggJy4vYnVpbGQtYXV4LyonICEgLWlwYXRoICcuL2dydWItDQo+ID4gY29yZS9saWIv bGliZ2NyeXB0L3NyYy9taXNjLmMnICEgLWlwYXRoICcuL2dydWItDQo+ID4gY29yZS9saWIvbGli Z2NyeXB0L3NyYy9nbG9iYWwuYycgISAtaXBhdGggJy4vZ3J1Yi0NCj4gPiBjb3JlL2xpYi9saWJn Y3J5cHQvc3JjL3NlY21lbS5jJ8KgICEgLWlwYXRoICcuL3V0aWwvZ3J1Yi1nZW4tDQo+ID4gd2lk dGhzcGVjLmMnICEgLWlwYXRoICcuL3V0aWwvZ3J1Yi1nZW4tYXNjaWloLmMnICEgLWlwYXRoDQo+ ID4gJy4vZ251bGliLyonICEgLWluYW1lICcuL2dydWItY29yZS9saWIvZ251bGliLyonICEgLXBh dGggJy4vLnBjLyonDQo+ID4gfHNvcnQgPiBwby9QT1RGSUxFUy5pbg0KPiA+ICstZmluZCAuIC1p bmFtZSAnKi5bY2hdJyAhIC1pcGF0aCAnLi9ncnViLWNvcmUvbGliL2xpYmdjcnlwdC1ncnViLyon DQo+ID4gISAtaXBhdGggJy4vYnVpbGQtYXV4LyonICEgLWlwYXRoICcuL2dydWItDQo+ID4gY29y ZS9saWIvbGliZ2NyeXB0L3NyYy9taXNjLmMnICEgLWlwYXRoICcuL2dydWItDQo+ID4gY29yZS9s aWIvbGliZ2NyeXB0L3NyYy9nbG9iYWwuYycgISAtaXBhdGggJy4vZ3J1Yi0NCj4gPiBjb3JlL2xp Yi9saWJnY3J5cHQvc3JjL3NlY21lbS5jJ8KgICEgLWlwYXRoICcuL3V0aWwvZ3J1Yi1nZW4tDQo+ ID4gd2lkdGhzcGVjLmMnICEgLWlwYXRoICcuL3V0aWwvZ3J1Yi1nZW4tYXNjaWloLmMnICEgLWlw YXRoDQo+ID4gJy4vZ251bGliLyonICEgLWlwYXRoICcuL2dydWItY29yZS9saWIvZ251bGliLyon IHxzb3J0ID4NCj4gPiBwby9QT1RGSUxFUy5pbg0KPiA+ICsrZmluZCAuIC1pbmFtZSAnKi5bY2hd JyAhIC1pcGF0aCAnLi9ncnViLWNvcmUvbGliL2xpYmdjcnlwdC1ncnViLyonDQo+ID4gISAtaXBh dGggJy4vYnVpbGQtYXV4LyonICEgLWlwYXRoICcuL2dydWItDQo+ID4gY29yZS9saWIvbGliZ2Ny eXB0L3NyYy9taXNjLmMnICEgLWlwYXRoICcuL2dydWItDQo+ID4gY29yZS9saWIvbGliZ2NyeXB0 L3NyYy9nbG9iYWwuYycgISAtaXBhdGggJy4vZ3J1Yi0NCj4gPiBjb3JlL2xpYi9saWJnY3J5cHQv c3JjL3NlY21lbS5jJ8KgICEgLWlwYXRoICcuL3V0aWwvZ3J1Yi1nZW4tDQo+ID4gd2lkdGhzcGVj LmMnICEgLWlwYXRoICcuL3V0aWwvZ3J1Yi1nZW4tYXNjaWloLmMnICEgLWlwYXRoDQo+ID4gJy4v Z251bGliLyonICEgLWlwYXRoICcuL2dydWItY29yZS9saWIvZ251bGliLyonICEgLXBhdGggJy4v LnBjLyonDQo+ID4gfHNvcnQgPiBwby9QT1RGSUxFUy5pbg0KPiA+IMKgIGZpbmQgdXRpbCAtaW5h bWUgJyouaW4nICEgLW5hbWUgTWFrZWZpbGUuaW7CoCB8c29ydCA+IHBvL1BPVEZJTEVTLQ0KPiA+ IHNoZWxsLmluDQo+ID4gDQo+ID4gwqAgZWNobyAiSW1wb3J0aW5nIHVuaWNvZGUuLi4iDQo+ID4g wqAtLSANCj4gPiAtMi43LjQNCj4gPiArMi4xNy4xDQo+ID4gDQo+ID4gZGlmZiAtLWdpdCBhL21l dGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy9jYWxsb2MtTWFrZS1zdXJlLXdlLWFsd2F5cy0NCj4g PiBoYXZlLWFuLW92ZXJmbG93LWNoZWNraW5nLnBhdGNoIGIvbWV0YS9yZWNpcGVzLWJzcC9ncnVi L2ZpbGVzL2NhbGxvYy0NCj4gPiBNYWtlLXN1cmUtd2UtYWx3YXlzLWhhdmUtYW4tb3ZlcmZsb3ct Y2hlY2tpbmcucGF0Y2gNCj4gPiBkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCBj OTUzNmU2OGVmLi4wMDAwMDAwMDAwDQo+ID4gLS0tIGEvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2Zp bGVzL2NhbGxvYy1NYWtlLXN1cmUtd2UtYWx3YXlzLWhhdmUtYW4tDQo+ID4gb3ZlcmZsb3ctY2hl Y2tpbmcucGF0Y2gNCj4gPiArKysgL2Rldi9udWxsDQo+ID4gQEAgLTEsMjQ2ICswLDAgQEANCj4g PiAtRnJvbSBjMDA1ZjYyZjVjNGIyNmE3N2I5MTZjOGY3NmE4NTIzMjQ0MzllY2IzIE1vbiBTZXAg MTcgMDA6MDA6MDANCj4gPiAyMDAxDQo+ID4gLUZyb206IFBldGVyIEpvbmVzIDxwam9uZXNAcmVk aGF0LmNvbT4NCj4gPiAtRGF0ZTogTW9uLCAxNSBKdW4gMjAyMCAxMjoxNToyOSAtMDQwMA0KPiA+ IC1TdWJqZWN0OiBbUEFUQ0ggMi85XSBjYWxsb2M6IE1ha2Ugc3VyZSB3ZSBhbHdheXMgaGF2ZSBh biBvdmVyZmxvdy0NCj4gPiBjaGVja2luZw0KPiA+IC0gY2FsbG9jKCkgYXZhaWxhYmxlDQo+ID4g LQ0KPiA+IC1UaGlzIHRyaWVzIHRvIG1ha2Ugc3VyZSB0aGF0IGV2ZXJ5d2hlcmUgaW4gdGhpcyBz b3VyY2UgdHJlZSwgd2UNCj4gPiBhbHdheXMgaGF2ZQ0KPiA+IC1hbiBhcHByb3ByaWF0ZSB2ZXJz aW9uIG9mIGNhbGxvYygpIChpLmUuIGdydWJfY2FsbG9jKCksIHhjYWxsb2MoKSwNCj4gPiBldGMu KQ0KPiA+IC1hdmFpbGFibGUsIGFuZCB0aGF0IHRoZXkgYWxsIHNhZmVseSBjaGVjayBmb3Igb3Zl cmZsb3cgYW5kIHJldHVybg0KPiA+IE5VTEwgd2hlbg0KPiA+IC1pdCB3b3VsZCBvY2N1ci4NCj4g PiAtDQo+ID4gLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2NvbW1pdA0KPiA+IDY0ZTI2MTYy ZWJmZTY4MzE3YzE0M2NhNWVjOTk2Yzg5MjAxOWY4ZjgNCj4gPiAtZnJvbSBodHRwczovL2dpdC5z YXZhbm5haC5nbnUub3JnL2dpdC9ncnViLmdpdF0NCj4gPiAtDQo+ID4gLVNpZ25lZC1vZmYtYnk6 IFBldGVyIEpvbmVzIDxwam9uZXNAcmVkaGF0LmNvbT4NCj4gPiAtUmV2aWV3ZWQtYnk6IERhbmll bCBLaXBlciA8ZGFuaWVsLmtpcGVyQG9yYWNsZS5jb20+DQo+ID4gLVNpZ25lZC1vZmYtYnk6IFlv bmd4aW4gTGl1IDx5b25neGluLmxpdUB3aW5kcml2ZXIuY29tPg0KPiA+IC0tLS0NCj4gPiAtIGdy dWItY29yZS9rZXJuL2VtdS9taXNjLmPCoCDCoCDCoCDCoCDCoCB8IDEyICsrKysrKysrKysrKw0K PiA+IC0gZ3J1Yi1jb3JlL2tlcm4vZW11L21tLmPCoCDCoCDCoCDCoCDCoCDCoCB8IDEwICsrKysr KysrKysNCj4gPiAtIGdydWItY29yZS9rZXJuL21tLmPCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB8 IDQwDQo+ID4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCj4gPiAtIGdy dWItY29yZS9saWIvbGliZ2NyeXB0X3dyYXAvbWVtLmMgfCAxMSArKysrKysrKystLQ0KPiA+IC0g Z3J1Yi1jb3JlL2xpYi9wb3NpeF93cmFwL3N0ZGxpYi5owqAgfMKgIDggKysrKysrKy0NCj4gPiAt IGluY2x1ZGUvZ3J1Yi9lbXUvbWlzYy5owqAgwqAgwqAgwqAgwqAgwqAgfMKgIDEgKw0KPiA+IC0g aW5jbHVkZS9ncnViL21tLmjCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB8wqAgNiArKysrKysN Cj4gPiAtIDcgZmlsZXMgY2hhbmdlZCwgODUgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkN Cj4gPiAtDQo+ID4gLWRpZmYgLS1naXQgYS9ncnViLWNvcmUva2Vybi9lbXUvbWlzYy5jIGIvZ3J1 Yi1jb3JlL2tlcm4vZW11L21pc2MuYw0KPiA+IC1pbmRleCA2NWRiNzliLi5kZmQ4YThlIDEwMDY0 NA0KPiA+IC0tLS0gYS9ncnViLWNvcmUva2Vybi9lbXUvbWlzYy5jDQo+ID4gLSsrKyBiL2dydWIt Y29yZS9rZXJuL2VtdS9taXNjLmMNCj4gPiAtQEAgLTg1LDYgKzg1LDE4IEBAIGdydWJfdXRpbF9l cnJvciAoY29uc3QgY2hhciAqZm10LCAuLi4pDQo+ID4gLcKgIMKgZXhpdCAoMSk7DQo+ID4gLSB9 DQo+ID4gLSANCj4gPiAtK3ZvaWQgKg0KPiA+IC0reGNhbGxvYyAoZ3J1Yl9zaXplX3Qgbm1lbWIs IGdydWJfc2l6ZV90IHNpemUpDQo+ID4gLSt7DQo+ID4gLSvCoCB2b2lkICpwOw0KPiA+IC0rDQo+ ID4gLSvCoCBwID0gY2FsbG9jIChubWVtYiwgc2l6ZSk7DQo+ID4gLSvCoCBpZiAoIXApDQo+ID4g LSvCoCDCoCBncnViX3V0aWxfZXJyb3IgKCIlcyIsIF8oIm91dCBvZiBtZW1vcnkiKSk7DQo+ID4g LSsNCj4gPiAtK8KgIHJldHVybiBwOw0KPiA+IC0rfQ0KPiA+IC0rDQo+ID4gLSB2b2lkICoNCj4g PiAtIHhtYWxsb2MgKGdydWJfc2l6ZV90IHNpemUpDQo+ID4gLSB7DQo+ID4gLWRpZmYgLS1naXQg YS9ncnViLWNvcmUva2Vybi9lbXUvbW0uYyBiL2dydWItY29yZS9rZXJuL2VtdS9tbS5jDQo+ID4g LWluZGV4IGYyNjJlOTUuLjE0NWIwMWQgMTAwNjQ0DQo+ID4gLS0tLSBhL2dydWItY29yZS9rZXJu L2VtdS9tbS5jDQo+ID4gLSsrKyBiL2dydWItY29yZS9rZXJuL2VtdS9tbS5jDQo+ID4gLUBAIC0y NSw2ICsyNSwxNiBAQA0KPiA+IC0gI2luY2x1ZGUgPHN0cmluZy5oPg0KPiA+IC0gI2luY2x1ZGUg PGdydWIvaTE4bi5oPg0KPiA+IC0gDQo+ID4gLSt2b2lkICoNCj4gPiAtK2dydWJfY2FsbG9jIChn cnViX3NpemVfdCBubWVtYiwgZ3J1Yl9zaXplX3Qgc2l6ZSkNCj4gPiAtK3sNCj4gPiAtK8KgIHZv aWQgKnJldDsNCj4gPiAtK8KgIHJldCA9IGNhbGxvYyAobm1lbWIsIHNpemUpOw0KPiA+IC0rwqAg aWYgKCFyZXQpDQo+ID4gLSvCoCDCoCBncnViX2Vycm9yIChHUlVCX0VSUl9PVVRfT0ZfTUVNT1JZ LCBOXygib3V0IG9mIG1lbW9yeSIpKTsNCj4gPiAtK8KgIHJldHVybiByZXQ7DQo+ID4gLSt9DQo+ ID4gLSsNCj4gPiAtIHZvaWQgKg0KPiA+IC0gZ3J1Yl9tYWxsb2MgKGdydWJfc2l6ZV90IHNpemUp DQo+ID4gLSB7DQo+ID4gLWRpZmYgLS1naXQgYS9ncnViLWNvcmUva2Vybi9tbS5jIGIvZ3J1Yi1j b3JlL2tlcm4vbW0uYw0KPiA+IC1pbmRleCBlZTg4ZmY2Li5mMjgyMmE4IDEwMDY0NA0KPiA+IC0t LS0gYS9ncnViLWNvcmUva2Vybi9tbS5jDQo+ID4gLSsrKyBiL2dydWItY29yZS9rZXJuL21tLmMN Cj4gPiAtQEAgLTY3LDggKzY3LDEwIEBADQo+ID4gLSAjaW5jbHVkZSA8Z3J1Yi9kbC5oPg0KPiA+ IC0gI2luY2x1ZGUgPGdydWIvaTE4bi5oPg0KPiA+IC0gI2luY2x1ZGUgPGdydWIvbW1fcHJpdmF0 ZS5oPg0KPiA+IC0rI2luY2x1ZGUgPGdydWIvc2FmZW1hdGguaD4NCj4gPiAtIA0KPiA+IC0gI2lm ZGVmIE1NX0RFQlVHDQo+ID4gLSsjIHVuZGVmIGdydWJfY2FsbG9jDQo+ID4gLSAjIHVuZGVmIGdy dWJfbWFsbG9jDQo+ID4gLSAjIHVuZGVmIGdydWJfemFsbG9jDQo+ID4gLSAjIHVuZGVmIGdydWJf cmVhbGxvYw0KPiA+IC1AQCAtMzc1LDYgKzM3NywzMCBAQCBncnViX21lbWFsaWduIChncnViX3Np emVfdCBhbGlnbiwgZ3J1Yl9zaXplX3QNCj4gPiBzaXplKQ0KPiA+IC3CoCDCoHJldHVybiAwOw0K PiA+IC0gfQ0KPiA+IC0gDQo+ID4gLSsvKg0KPiA+IC0rICogQWxsb2NhdGUgTk1FTUIgaW5zdGFu Y2VzIG9mIFNJWkUgYnl0ZXMgYW5kIHJldHVybiB0aGUgcG9pbnRlciwNCj4gPiBvciBlcnJvciBv bg0KPiA+IC0rICogaW50ZWdlciBvdmVyZmxvdy4NCj4gPiAtKyAqLw0KPiA+IC0rdm9pZCAqDQo+ ID4gLStncnViX2NhbGxvYyAoZ3J1Yl9zaXplX3Qgbm1lbWIsIGdydWJfc2l6ZV90IHNpemUpDQo+ ID4gLSt7DQo+ID4gLSvCoCB2b2lkICpyZXQ7DQo+ID4gLSvCoCBncnViX3NpemVfdCBzeiA9IDA7 DQo+ID4gLSsNCj4gPiAtK8KgIGlmIChncnViX211bCAobm1lbWIsIHNpemUsICZzeikpDQo+ID4g LSvCoCDCoCB7DQo+ID4gLSvCoCDCoCDCoCBncnViX2Vycm9yIChHUlVCX0VSUl9PVVRfT0ZfUkFO R0UsIE5fKCJvdmVyZmxvdyBpcw0KPiA+IGRldGVjdGVkIikpOw0KPiA+IC0rwqAgwqAgwqAgcmV0 dXJuIE5VTEw7DQo+ID4gLSvCoCDCoCB9DQo+ID4gLSsNCj4gPiAtK8KgIHJldCA9IGdydWJfbWVt YWxpZ24gKDAsIHN6KTsNCj4gPiAtK8KgIGlmICghcmV0KQ0KPiA+IC0rwqAgwqAgcmV0dXJuIE5V TEw7DQo+ID4gLSsNCj4gPiAtK8KgIGdydWJfbWVtc2V0IChyZXQsIDAsIHN6KTsNCj4gPiAtK8Kg IHJldHVybiByZXQ7DQo+ID4gLSt9DQo+ID4gLSsNCj4gPiAtIC8qIEFsbG9jYXRlIFNJWkUgYnl0 ZXMgYW5kIHJldHVybiB0aGUgcG9pbnRlci7CoCAqLw0KPiA+IC0gdm9pZCAqDQo+ID4gLSBncnVi X21hbGxvYyAoZ3J1Yl9zaXplX3Qgc2l6ZSkNCj4gPiAtQEAgLTU2MSw2ICs1ODcsMjAgQEAgZ3J1 Yl9tbV9kdW1wICh1bnNpZ25lZCBsaW5lbm8pDQo+ID4gLcKgIMKgZ3J1Yl9wcmludGYgKCJcbiIp Ow0KPiA+IC0gfQ0KPiA+IC0gDQo+ID4gLSt2b2lkICoNCj4gPiAtK2dydWJfZGVidWdfY2FsbG9j IChjb25zdCBjaGFyICpmaWxlLCBpbnQgbGluZSwgZ3J1Yl9zaXplX3Qgbm1lbWIsDQo+ID4gZ3J1 Yl9zaXplX3Qgc2l6ZSkNCj4gPiAtK3sNCj4gPiAtK8KgIHZvaWQgKnB0cjsNCj4gPiAtKw0KPiA+ IC0rwqAgaWYgKGdydWJfbW1fZGVidWcpDQo+ID4gLSvCoCDCoCBncnViX3ByaW50ZiAoIiVzOiVk OiBjYWxsb2MgKDB4JSIgUFJJeEdSVUJfU0laRSAiLCAweCUiDQo+ID4gUFJJeEdSVUJfU0laRSAi KSA9ICIsDQo+ID4gLSvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGZpbGUsIGxpbmUsIHNpemUpOw0K PiA+IC0rwqAgcHRyID0gZ3J1Yl9jYWxsb2MgKG5tZW1iLCBzaXplKTsNCj4gPiAtK8KgIGlmIChn cnViX21tX2RlYnVnKQ0KPiA+IC0rwqAgwqAgZ3J1Yl9wcmludGYgKCIlcFxuIiwgcHRyKTsNCj4g PiAtK8KgIHJldHVybiBwdHI7DQo+ID4gLSt9DQo+ID4gLSsNCj4gPiAtIHZvaWQgKg0KPiA+IC0g Z3J1Yl9kZWJ1Z19tYWxsb2MgKGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lLCBncnViX3NpemVf dCBzaXplKQ0KPiA+IC0gew0KPiA+IC1kaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL2xpYi9saWJnY3J5 cHRfd3JhcC9tZW0uYyBiL2dydWItDQo+ID4gY29yZS9saWIvbGliZ2NyeXB0X3dyYXAvbWVtLmMN Cj4gPiAtaW5kZXggYmVlYjY2MS4uNzRjNmVhZiAxMDA2NDQNCj4gPiAtLS0tIGEvZ3J1Yi1jb3Jl L2xpYi9saWJnY3J5cHRfd3JhcC9tZW0uYw0KPiA+IC0rKysgYi9ncnViLWNvcmUvbGliL2xpYmdj cnlwdF93cmFwL21lbS5jDQo+ID4gLUBAIC00LDYgKzQsNyBAQA0KPiA+IC0gI2luY2x1ZGUgPGdy dWIvY3J5cHRvLmg+DQo+ID4gLSAjaW5jbHVkZSA8Z3J1Yi9kbC5oPg0KPiA+IC0gI2luY2x1ZGUg PGdydWIvZW52Lmg+DQo+ID4gLSsjaW5jbHVkZSA8Z3J1Yi9zYWZlbWF0aC5oPg0KPiA+IC0gDQo+ ID4gLSBHUlVCX01PRF9MSUNFTlNFICgiR1BMdjMrIik7DQo+ID4gLSANCj4gPiAtQEAgLTM2LDcg KzM3LDEwIEBAIHZvaWQgKg0KPiA+IC0gZ2NyeV94Y2FsbG9jIChzaXplX3Qgbiwgc2l6ZV90IG0p DQo+ID4gLSB7DQo+ID4gLcKgIMKgdm9pZCAqcmV0Ow0KPiA+IC0twqAgcmV0ID0gZ3J1Yl96YWxs b2MgKG4gKiBtKTsNCj4gPiAtK8KgIHNpemVfdCBzejsNCj4gPiAtK8KgIGlmIChncnViX211bCAo biwgbSwgJnN6KSkNCj4gPiAtK8KgIMKgIGdydWJfZmF0YWwgKCJnY3J5X3hjYWxsb2Mgd291bGQg b3ZlcmZsb3ciKTsNCj4gPiAtK8KgIHJldCA9IGdydWJfemFsbG9jIChzeik7DQo+ID4gLcKgIMKg aWYgKCFyZXQpDQo+ID4gLcKgIMKgIMKgZ3J1Yl9mYXRhbCAoImdjcnlfeGNhbGxvYyBmYWlsZWQi KTsNCj4gPiAtwqAgwqByZXR1cm4gcmV0Ow0KPiA+IC1AQCAtNTYsNyArNjAsMTAgQEAgdm9pZCAq DQo+ID4gLSBnY3J5X3hjYWxsb2Nfc2VjdXJlIChzaXplX3Qgbiwgc2l6ZV90IG0pDQo+ID4gLSB7 DQo+ID4gLcKgIMKgdm9pZCAqcmV0Ow0KPiA+IC0twqAgcmV0ID0gZ3J1Yl96YWxsb2MgKG4gKiBt KTsNCj4gPiAtK8KgIHNpemVfdCBzejsNCj4gPiAtK8KgIGlmIChncnViX211bCAobiwgbSwgJnN6 KSkNCj4gPiAtK8KgIMKgIGdydWJfZmF0YWwgKCJnY3J5X3hjYWxsb2Mgd291bGQgb3ZlcmZsb3ci KTsNCj4gPiAtK8KgIHJldCA9IGdydWJfemFsbG9jIChzeik7DQo+ID4gLcKgIMKgaWYgKCFyZXQp DQo+ID4gLcKgIMKgIMKgZ3J1Yl9mYXRhbCAoImdjcnlfeGNhbGxvYyBmYWlsZWQiKTsNCj4gPiAt wqAgwqByZXR1cm4gcmV0Ow0KPiA+IC1kaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL2xpYi9wb3NpeF93 cmFwL3N0ZGxpYi5oIGIvZ3J1Yi0NCj4gPiBjb3JlL2xpYi9wb3NpeF93cmFwL3N0ZGxpYi5oDQo+ ID4gLWluZGV4IDNiNDZmNDcuLjdhOGQzODUgMTAwNjQ0DQo+ID4gLS0tLSBhL2dydWItY29yZS9s aWIvcG9zaXhfd3JhcC9zdGRsaWIuaA0KPiA+IC0rKysgYi9ncnViLWNvcmUvbGliL3Bvc2l4X3dy YXAvc3RkbGliLmgNCj4gPiAtQEAgLTIxLDYgKzIxLDcgQEANCj4gPiAtIA0KPiA+IC0gI2luY2x1 ZGUgPGdydWIvbW0uaD4NCj4gPiAtICNpbmNsdWRlIDxncnViL21pc2MuaD4NCj4gPiAtKyNpbmNs dWRlIDxncnViL3NhZmVtYXRoLmg+DQo+ID4gLSANCj4gPiAtIHN0YXRpYyBpbmxpbmUgdm9pZCAN Cj4gPiAtIGZyZWUgKHZvaWQgKnB0cikNCj4gPiAtQEAgLTM3LDcgKzM4LDEyIEBAIG1hbGxvYyAo Z3J1Yl9zaXplX3Qgc2l6ZSkNCj4gPiAtIHN0YXRpYyBpbmxpbmUgdm9pZCAqDQo+ID4gLSBjYWxs b2MgKGdydWJfc2l6ZV90IHNpemUsIGdydWJfc2l6ZV90IG5lbGVtKQ0KPiA+IC0gew0KPiA+IC0t wqAgcmV0dXJuIGdydWJfemFsbG9jIChzaXplICogbmVsZW0pOw0KPiA+IC0rwqAgZ3J1Yl9zaXpl X3Qgc3o7DQo+ID4gLSsNCj4gPiAtK8KgIGlmIChncnViX211bCAoc2l6ZSwgbmVsZW0sICZzeikp DQo+ID4gLSvCoCDCoCByZXR1cm4gTlVMTDsNCj4gPiAtKw0KPiA+IC0rwqAgcmV0dXJuIGdydWJf emFsbG9jIChzeik7DQo+ID4gLSB9DQo+ID4gLSANCj4gPiAtIHN0YXRpYyBpbmxpbmUgdm9pZCAq DQo+ID4gLWRpZmYgLS1naXQgYS9pbmNsdWRlL2dydWIvZW11L21pc2MuaCBiL2luY2x1ZGUvZ3J1 Yi9lbXUvbWlzYy5oDQo+ID4gLWluZGV4IGNlNDY0Y2YuLmZmOWM0OGEgMTAwNjQ0DQo+ID4gLS0t LSBhL2luY2x1ZGUvZ3J1Yi9lbXUvbWlzYy5oDQo+ID4gLSsrKyBiL2luY2x1ZGUvZ3J1Yi9lbXUv bWlzYy5oDQo+ID4gLUBAIC00Nyw2ICs0Nyw3IEBAIGdydWJfdXRpbF9kZXZpY2VfaXNfbWFwcGVk IChjb25zdCBjaGFyICpkZXYpOw0KPiA+IC0gI2RlZmluZSBHUlVCX0hPU1RfUFJJdUxPTkdfTE9O RyAibGx1Ig0KPiA+IC0gI2RlZmluZSBHUlVCX0hPU1RfUFJJeExPTkdfTE9ORyAibGx4Ig0KPiA+ IC0gDQo+ID4gLSt2b2lkICogRVhQT1JUX0ZVTkMoeGNhbGxvYykgKGdydWJfc2l6ZV90IG5tZW1i LCBncnViX3NpemVfdCBzaXplKQ0KPiA+IFdBUk5fVU5VU0VEX1JFU1VMVDsNCj4gPiAtIHZvaWQg KiBFWFBPUlRfRlVOQyh4bWFsbG9jKSAoZ3J1Yl9zaXplX3Qgc2l6ZSkgV0FSTl9VTlVTRURfUkVT VUxUOw0KPiA+IC0gdm9pZCAqIEVYUE9SVF9GVU5DKHhyZWFsbG9jKSAodm9pZCAqcHRyLCBncnVi X3NpemVfdCBzaXplKQ0KPiA+IFdBUk5fVU5VU0VEX1JFU1VMVDsNCj4gPiAtIGNoYXIgKiBFWFBP UlRfRlVOQyh4c3RyZHVwKSAoY29uc3QgY2hhciAqc3RyKSBXQVJOX1VOVVNFRF9SRVNVTFQ7DQo+ ID4gLWRpZmYgLS1naXQgYS9pbmNsdWRlL2dydWIvbW0uaCBiL2luY2x1ZGUvZ3J1Yi9tbS5oDQo+ ID4gLWluZGV4IDI4ZTJlNTMuLjljMzhkZDMgMTAwNjQ0DQo+ID4gLS0tLSBhL2luY2x1ZGUvZ3J1 Yi9tbS5oDQo+ID4gLSsrKyBiL2luY2x1ZGUvZ3J1Yi9tbS5oDQo+ID4gLUBAIC0yOSw2ICsyOSw3 IEBADQo+ID4gLSAjZW5kaWYNCj4gPiAtIA0KPiA+IC0gdm9pZCBncnViX21tX2luaXRfcmVnaW9u ICh2b2lkICphZGRyLCBncnViX3NpemVfdCBzaXplKTsNCj4gPiAtK3ZvaWQgKkVYUE9SVF9GVU5D KGdydWJfY2FsbG9jKSAoZ3J1Yl9zaXplX3Qgbm1lbWIsIGdydWJfc2l6ZV90DQo+ID4gc2l6ZSk7 DQo+ID4gLSB2b2lkICpFWFBPUlRfRlVOQyhncnViX21hbGxvYykgKGdydWJfc2l6ZV90IHNpemUp Ow0KPiA+IC0gdm9pZCAqRVhQT1JUX0ZVTkMoZ3J1Yl96YWxsb2MpIChncnViX3NpemVfdCBzaXpl KTsNCj4gPiAtIHZvaWQgRVhQT1JUX0ZVTkMoZ3J1Yl9mcmVlKSAodm9pZCAqcHRyKTsNCj4gPiAt QEAgLTQ4LDYgKzQ5LDkgQEAgZXh0ZXJuIGludCBFWFBPUlRfVkFSKGdydWJfbW1fZGVidWcpOw0K PiA+IC0gdm9pZCBncnViX21tX2R1bXBfZnJlZSAodm9pZCk7DQo+ID4gLSB2b2lkIGdydWJfbW1f ZHVtcCAodW5zaWduZWQgbGluZW5vKTsNCj4gPiAtIA0KPiA+IC0rI2RlZmluZSBncnViX2NhbGxv YyhubWVtYiwgc2l6ZSnCoCDCoCDCoCBcDQo+ID4gLSvCoCBncnViX2RlYnVnX2NhbGxvYyAoR1JV Ql9GSUxFLCBfX0xJTkVfXywgbm1lbWIsIHNpemUpDQo+ID4gLSsNCj4gPiAtICNkZWZpbmUgZ3J1 Yl9tYWxsb2Moc2l6ZSnCoCDCoCDCoFwNCj4gPiAtwqAgwqBncnViX2RlYnVnX21hbGxvYyAoR1JV Ql9GSUxFLCBfX0xJTkVfXywgc2l6ZSkNCj4gPiAtIA0KPiA+IC1AQCAtNjMsNiArNjcsOCBAQCB2 b2lkIGdydWJfbW1fZHVtcCAodW5zaWduZWQgbGluZW5vKTsNCj4gPiAtICNkZWZpbmUgZ3J1Yl9m cmVlKHB0cinCoCDCoCDCoCDCoCBcDQo+ID4gLcKgIMKgZ3J1Yl9kZWJ1Z19mcmVlIChHUlVCX0ZJ TEUsIF9fTElORV9fLCBwdHIpDQo+ID4gLSANCj4gPiAtK3ZvaWQgKkVYUE9SVF9GVU5DKGdydWJf ZGVidWdfY2FsbG9jKSAoY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUsDQo+ID4gLSvCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBncnViX3NpemVf dCBubWVtYiwgZ3J1Yl9zaXplX3QNCj4gPiBzaXplKTsNCj4gPiAtIHZvaWQgKkVYUE9SVF9GVU5D KGdydWJfZGVidWdfbWFsbG9jKSAoY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUsDQo+ID4gLcKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgZ3J1 Yl9zaXplX3Qgc2l6ZSk7DQo+ID4gLSB2b2lkICpFWFBPUlRfRlVOQyhncnViX2RlYnVnX3phbGxv YykgKGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lLA0KPiA+IC0tLSANCj4gPiAtMi4xNC40DQo+ ID4gLQ0KPiA+IGRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvZGV0ZXJt aW5pc20ucGF0Y2gNCj4gPiBiL21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy9kZXRlcm1pbmlz bS5wYXRjaA0KPiA+IGluZGV4IDNjMWY1NjJjNzEuLjI4MjhlODA5NzUgMTAwNjQ0DQo+ID4gLS0t IGEvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzL2RldGVybWluaXNtLnBhdGNoDQo+ID4gKysr IGIvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzL2RldGVybWluaXNtLnBhdGNoDQo+ID4gQEAg LTEsNiArMSw5IEBADQo+ID4gLVRoZSBvdXRwdXQgaW4gbW9kZGVwLmxzdCBnZW5lcmF0ZWQgZnJv bSBzeW1pbmZvLmxzdCB1c2luZw0KPiA+IGdlbm1vZGRlcC5hd2sgaXMNCj4gPiAtbm90IGRldGVy bWluaXN0aWMgc2luY2UgdGhlIG9yZGVyIG9mIHRoZSBkZXBlbmRlbmNpZXMgb24gZWFjaCBsaW5l DQo+ID4gY2FuIHZhcnkNCj4gPiAtZGVwZW5kaW5nIG9uIGhvdyBhd2sgc29ydHMgdGhlIHZhbHVl cyBpbiB0aGUgYXJyYXkuDQo+ID4gK0Zyb20gYjZmOWIzZjZmYTc4MjgwN2M0YTdlYzE2ZWU4ZWY4 NjhjZGZiZjQ2OCBNb24gU2VwIDE3IDAwOjAwOjAwDQo+ID4gMjAwMQ0KPiA+ICtGcm9tOiBOYXZl ZW4gU2FpbmkgPG5hdmVlbi5rdW1hci5zYWluaUBpbnRlbC5jb20+DQo+ID4gK0RhdGU6IE1vbiwg MTUgTWFyIDIwMjEgMTQ6NTY6MTggKzA4MDANCj4gPiArU3ViamVjdDogW1BBVENIXSBUaGUgb3V0 cHV0IGluIG1vZGRlcC5sc3QgZ2VuZXJhdGVkIGZyb20gc3ltaW5mby5sc3QNCj4gPiB1c2luZw0K PiA+ICsgZ2VubW9kZGVwLmF3ayBpcyBub3QgZGV0ZXJtaW5pc3RpYyBzaW5jZSB0aGUgb3JkZXIg b2YgdGhlDQo+ID4gZGVwZW5kZW5jaWVzIG9uDQo+ID4gKyBlYWNoIGxpbmUgY2FuIHZhcnkgZGVw ZW5kaW5nIG9uIGhvdyBhd2sgc29ydHMgdGhlIHZhbHVlcyBpbiB0aGUNCj4gPiBhcnJheS4NCj4g PiANCj4gPiDCoEJlIGRldGVybWluaXN0aWMgaW4gdGhlIG91dHB1dCBieSBzb3J0aW5nIHRoZSBk ZXBlbmRlbmNpZXMgb24gZWFjaA0KPiA+IGxpbmUuDQo+ID4gDQo+ID4gQEAgLTEzLDExICsxNiwy OSBAQCBrZXlzIG9mIHRoZSBkaWN0Lg0KPiA+IA0KPiA+IMKgVXBzdHJlYW0tU3RhdHVzOiBQZW5k aW5nDQo+ID4gwqBSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9u Lm9yZz4NCj4gPiArU2lnbmVkLW9mZi1ieTogTmF2ZWVuIFNhaW5pIDxuYXZlZW4ua3VtYXIuc2Fp bmlAaW50ZWwuY29tPg0KPiA+ICstLS0NCj4gPiArIGdlbnRwbC5wecKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgfCAxICsNCj4gPiArIGdydWItY29yZS9nZW5tb2RkZXAuYXdrIHwgNCArKystDQo+ID4g KyB1dGlsL2ltcG9ydF91bmljb2RlLnB5wqAgfCAyICstDQo+ID4gKyAzIGZpbGVzIGNoYW5nZWQs IDUgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkNCj4gPiANCj4gPiAtSW5kZXg6IGdydWIt Mi4wNC9ncnViLWNvcmUvZ2VubW9kZGVwLmF3aw0KPiA+IC09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQo+ID4gLS0tLSBn cnViLTIuMDQub3JpZy9ncnViLWNvcmUvZ2VubW9kZGVwLmF3aw0KPiA+IC0rKysgZ3J1Yi0yLjA0 L2dydWItY29yZS9nZW5tb2RkZXAuYXdrDQo+ID4gK2RpZmYgLS1naXQgYS9nZW50cGwucHkgYi9n ZW50cGwucHkNCj4gPiAraW5kZXggYzg2NTUwZDRmLi41ODkyODUxOTIgMTAwNjQ0DQo+ID4gKy0t LSBhL2dlbnRwbC5weQ0KPiA+ICsrKysgYi9nZW50cGwucHkNCj4gPiArQEAgLTU2OCw2ICs1Njgs NyBAQCBkZWYgZm9yZWFjaF9wbGF0Zm9ybV92YWx1ZShkZWZuLCBwbGF0Zm9ybSwNCj4gPiBzdWZm aXgsIGNsb3N1cmUpOg0KPiA+ICvCoCDCoCDCoGZvciBncm91cCBpbiBSTUFQW3BsYXRmb3JtXToN Cj4gPiArwqAgwqAgwqAgwqAgwqBmb3IgdmFsdWUgaW4gZGVmbi5maW5kX2FsbChncm91cCArIHN1 ZmZpeCk6DQo+ID4gK8KgIMKgIMKgIMKgIMKgIMKgIMKgci5hcHBlbmQoY2xvc3VyZSh2YWx1ZSkp DQo+ID4gKyvCoCDCoCByLnNvcnQoKQ0KPiA+ICvCoCDCoCDCoHJldHVybiAnJy5qb2luKHIpDQo+ ID4gKyANCj4gPiArIGRlZiBwbGF0Zm9ybV9jb25kaXRpb25hbChwbGF0Zm9ybSwgY2xvc3VyZSk6 DQo+ID4gK2RpZmYgLS1naXQgYS9ncnViLWNvcmUvZ2VubW9kZGVwLmF3ayBiL2dydWItY29yZS9n ZW5tb2RkZXAuYXdrDQo+ID4gK2luZGV4IDA0YzI4NjNlNS4uMjQ3NDM2MzkyIDEwMDY0NA0KPiA+ ICstLS0gYS9ncnViLWNvcmUvZ2VubW9kZGVwLmF3aw0KPiA+ICsrKysgYi9ncnViLWNvcmUvZ2Vu bW9kZGVwLmF3aw0KPiA+IMKgQEAgLTU5LDcgKzU5LDkgQEAgRU5EIHsNCj4gPiDCoCDCoCDCoCB9 DQo+ID4gwqAgwqAgwqAgbW9kbGlzdCA9ICIiDQo+ID4gQEAgLTI5LDIyICs1MCwxMCBAQCBJbmRl eDogZ3J1Yi0yLjA0L2dydWItY29yZS9nZW5tb2RkZXAuYXdrDQo+ID4gwqAgwqAgwqAgwqAgbW9k bGlzdCA9IG1vZGxpc3QgIiAiIGRlcG1vZDsNCj4gPiDCoCDCoCDCoCDCoCBpbnZlcnNlX2RlcGVu ZGVuY2llc1tkZXBtb2RdID0gaW52ZXJzZV9kZXBlbmRlbmNpZXNbZGVwbW9kXSAiDQo+ID4gIiBt b2QNCj4gPiDCoCDCoCDCoCDCoCBkZXBjb3VudFttb2RdKysNCj4gPiAtSW5kZXg6IGdydWItMi4w NC9nZW50cGwucHkNCj4gPiAtPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KPiA+IC0tLS0gZ3J1Yi0yLjA0Lm9yaWcvZ2Vu dHBsLnB5DQo+ID4gLSsrKyBncnViLTIuMDQvZ2VudHBsLnB5DQo+ID4gLUBAIC01NjgsNiArNTY4 LDcgQEAgZGVmIGZvcmVhY2hfcGxhdGZvcm1fdmFsdWUoZGVmbiwgcGxhdGZvcg0KPiA+IC3CoCDC oCDCoGZvciBncm91cCBpbiBSTUFQW3BsYXRmb3JtXToNCj4gPiAtwqAgwqAgwqAgwqAgwqBmb3Ig dmFsdWUgaW4gZGVmbi5maW5kX2FsbChncm91cCArIHN1ZmZpeCk6DQo+ID4gLcKgIMKgIMKgIMKg IMKgIMKgIMKgci5hcHBlbmQoY2xvc3VyZSh2YWx1ZSkpDQo+ID4gLSvCoCDCoCByLnNvcnQoKQ0K PiA+IC3CoCDCoCDCoHJldHVybiAnJy5qb2luKHIpDQo+ID4gLSANCj4gPiAtIGRlZiBwbGF0Zm9y bV9jb25kaXRpb25hbChwbGF0Zm9ybSwgY2xvc3VyZSk6DQo+ID4gLUluZGV4OiBncnViLTIuMDQv dXRpbC9pbXBvcnRfdW5pY29kZS5weQ0KPiA+IC09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQo+ID4gLS0tLSBncnViLTIu MDQub3JpZy91dGlsL2ltcG9ydF91bmljb2RlLnB5DQo+ID4gLSsrKyBncnViLTIuMDQvdXRpbC9p bXBvcnRfdW5pY29kZS5weQ0KPiA+ICtkaWZmIC0tZ2l0IGEvdXRpbC9pbXBvcnRfdW5pY29kZS5w eSBiL3V0aWwvaW1wb3J0X3VuaWNvZGUucHkNCj4gPiAraW5kZXggMDhmODA1OTFlLi4xZjQzNGEw NjkgMTAwNjQ0DQo+ID4gKy0tLSBhL3V0aWwvaW1wb3J0X3VuaWNvZGUucHkNCj4gPiArKysrIGIv dXRpbC9pbXBvcnRfdW5pY29kZS5weQ0KPiA+IMKgQEAgLTE3NCw3ICsxNzQsNyBAQCBpbmZpbGUu Y2xvc2UgKCkNCj4gPiANCj4gPiDCoCBvdXRmaWxlLndyaXRlICgic3RydWN0IGdydWJfdW5pY29k ZV9hcmFiaWNfc2hhcGUNCj4gPiBncnViX3VuaWNvZGVfYXJhYmljX3NoYXBlc1tdID0ge1xuICIp DQo+ID4gQEAgLTU0LDMgKzYzLDYgQEAgSW5kZXg6IGdydWItMi4wNC91dGlsL2ltcG9ydF91bmlj b2RlLnB5DQo+ID4gwqAgwqAgwqAgdHJ5Og0KPiA+IMKgIMKgIMKgIMKgIMKgIGlmIGFyYWJpY3N1 YnN0W3hdWydqb2luJ10gPT0gIkRVQUwiOg0KPiA+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIG91dGZp bGUud3JpdGUgKCJ7MHgleCwgMHgleCwgMHgleCwgMHgleCwgMHgleH0sXG4gIiAlDQo+ID4gKGFy YWJpY3N1YnN0W3hdWzBdLCBhcmFiaWNzdWJzdFt4XVsxXSwgYXJhYmljc3Vic3RbeF1bMl0sDQo+ ID4gYXJhYmljc3Vic3RbeF1bM10sIGFyYWJpY3N1YnN0W3hdWzRdKSkNCj4gPiArLS0gDQo+ID4g KzIuMTcuMQ0KPiA+ICsNCj4gPiBkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2Zp bGVzL2x2bS1BZGQtTFZNLWNhY2hlLWxvZ2ljYWwtDQo+ID4gdm9sdW1lLWhhbmRsaW5nLnBhdGNo IGIvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzL2x2bS1BZGQtTFZNLQ0KPiA+IGNhY2hlLWxv Z2ljYWwtdm9sdW1lLWhhbmRsaW5nLnBhdGNoDQo+ID4gZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0 DQo+ID4gaW5kZXggMmI4MTU3ZjU5Mi4uMDAwMDAwMDAwMA0KPiA+IC0tLSBhL21ldGEvcmVjaXBl cy1ic3AvZ3J1Yi9maWxlcy9sdm0tQWRkLUxWTS1jYWNoZS1sb2dpY2FsLXZvbHVtZS0NCj4gPiBo YW5kbGluZy5wYXRjaA0KPiA+ICsrKyAvZGV2L251bGwNCj4gPiBAQCAtMSwyODcgKzAsMCBAQA0K PiA+IC1Gcm9tIDhlYjAyYmNiNTg5N2IyMzhiMjlmZjc2MjQwMmJiMGMzMDI4ZjBlYWIgTW9uIFNl cCAxNyAwMDowMDowMA0KPiA+IDIwMDENCj4gPiAtRnJvbTogTWljaGFlbCBDaGFuZyA8bWNoYW5n QHN1c2UuY29tPg0KPiA+IC1EYXRlOiBUaHUsIDE5IE1hciAyMDIwIDEzOjU2OjEzICswODAwDQo+ ID4gLVN1YmplY3Q6IFtQQVRDSCAzLzldIGx2bTogQWRkIExWTSBjYWNoZSBsb2dpY2FsIHZvbHVt ZSBoYW5kbGluZw0KPiA+IC0NCj4gPiAtVGhlIExWTSBjYWNoZSBsb2dpY2FsIHZvbHVtZSBpcyB0 aGUgbG9naWNhbCB2b2x1bWUgY29uc2lzdGluZyBvZiB0aGUNCj4gPiBvcmlnaW5hbA0KPiA+IC1h bmQgdGhlIGNhY2hlIHBvb2wgbG9naWNhbCB2b2x1bWUuIFRoZSBvcmlnaW5hbCBpcyB1c3VhbGx5 IG9uIGENCj4gPiBsYXJnZXIgYW5kDQo+ID4gLXNsb3dlciBzdG9yYWdlIGRldmljZSB3aGlsZSB0 aGUgY2FjaGUgcG9vbCBpcyBvbiBhIHNtYWxsZXIgYW5kDQo+ID4gZmFzdGVyIG9uZS4gVGhlDQo+ ID4gLXBlcmZvcm1hbmNlIG9mIHRoZSBvcmlnaW5hbCB2b2x1bWUgY2FuIGJlIGltcHJvdmVkIGJ5 IHN0b3JpbmcgdGhlDQo+ID4gZnJlcXVlbnRseQ0KPiA+IC11c2VkIGRhdGEgb24gdGhlIGNhY2hl IHBvb2wgdG8gdXRpbGl6ZSB0aGUgZ3JlYXRlciBwZXJmb3JtYW5jZSBvZg0KPiA+IGZhc3Rlcg0K PiA+IC1kZXZpY2UuDQo+ID4gLQ0KPiA+IC1UaGUgZGVmYXVsdCBjYWNoZSBtb2RlICJ3cml0ZXRo cm91Z2giIGVuc3VyZXMgdGhhdCBhbnkgZGF0YSB3cml0dGVuDQo+ID4gd2lsbCBiZQ0KPiA+IC1z dG9yZWQgYm90aCBpbiB0aGUgY2FjaGUgYW5kIG9uIHRoZSBvcmlnaW4gTFYsIHRoZXJlZm9yZSBn cnViIGNhbiBiZQ0KPiA+IHN0cmFpZ2h0DQo+ID4gLXRvIHJlYWQgdGhlIG9yaWdpbmFsIGx2IGFz IG5vIGRhdGEgbG9zcyBpcyBndWFyZW50ZWVkLg0KPiA+IC0NCj4gPiAtVGhlIHNlY29uZCBjYWNo ZSBtb2RlIGlzICJ3cml0ZWJhY2siLCB3aGljaCBkZWxheXMgd3JpdGluZyBmcm9tIHRoZQ0KPiA+ IGNhY2hlIHBvb2wNCj4gPiAtYmFjayB0byB0aGUgb3JpZ2luIExWIHRvIGhhdmUgaW5jcmVhc2Vk IHBlcmZvcm1hbmNlLiBUaGUgZHJhd2JhY2sgaXMNCj4gPiBwb3RlbnRpYWwNCj4gPiAtZGF0YSBs b3NzIGlmIGxvc2luZyB0aGUgYXNzb2NpYXRlZCBjYWNoZSBkZXZpY2UuDQo+ID4gLQ0KPiA+IC1E dXJpbmcgdGhlIGJvb3QgdGltZSBncnViIHJlYWRzIHRoZSBMVk0gb2ZmbGluZSBpLmUuIExWTSB2 b2x1bWVzIGFyZQ0KPiA+IG5vdA0KPiA+IC1hY3RpdmF0ZWQgYW5kIG1vdW50ZWQsIGhlbmNlIGl0 IHNob3VsZCBiZSBmaW5lIHRvIHJlYWQgZGlyZWN0bHkgZnJvbQ0KPiA+IG9yaWdpbmFsDQo+ID4g LWx2IHNpbmNlIGFsbCBjYWNoZWQgZGF0YSBzaG91bGQgaGF2ZSBiZWVuIGZsdXNoZWQgYmFjayBp biB0aGUNCj4gPiBwcm9jZXNzIG9mIHRha2luZw0KPiA+IC1pdCBvZmZsaW5lLg0KPiA+IC0NCj4g PiAtSXQgaXMgYWxzbyBub3QgbXVjaCBoZWxwZnVsIHRvIHRoZSBzaXR1YXRpb24gYnkgYWRkaW5n IGZzeW5jIGNhbGxzDQo+ID4gdG8gdGhlDQo+ID4gLWluc3RhbGwgY29kZS4gVGhlIGZzeW5jIGRp ZCBub3QgZm9yY2UgdG8gd3JpdGUgYmFjayBkaXJ0eSBjYWNoZSB0bw0KPiA+IHRoZSBvcmlnaW5h bA0KPiA+IC1kZXZpY2UgYW5kIHJhdGhlciBpdCB3b3VsZCB1cGRhdGUgYXNzb2NpYXRlZCBjYWNo ZSBtZXRhZGF0YSB0bw0KPiA+IGNvbXBsZXRlIHRoZQ0KPiA+IC13cml0ZSB0cmFuc2FjdGlvbiB3 aXRoIHRoZSBjYWNoZSBkZXZpY2UuIElPVyB0aGUgd3JpdGVzIHRvIGNhY2hlZA0KPiA+IGJsb2Nr cyBzdGlsbA0KPiA+IC1nbyBvbmx5IHRvIHRoZSBjYWNoZSBkZXZpY2UuDQo+ID4gLQ0KPiA+IC1U byB3cml0ZSBiYWNrIGRpcnR5IGNhY2hlLCBhcyBMVk0gY2FjaGUgZGlkIG5vdCBzdXBwb3J0IGRp cnR5IGNhY2hlDQo+ID4gZmx1c2ggcGVyDQo+ID4gLWJsb2NrIHJhbmdlLCB0aGVyZSdubyB3YXkg dG8gZG8gaXQgZm9yIGZpbGUuIE9uIHRoZSBvdGhlciBoYW5kIHRoZQ0KPiA+ICJjbGVhbmVyIg0K PiA+IC1wb2xpY3kgaXMgaW1wbGVtZW50ZWQgYW5kIGNhbiBiZSB1c2VkIHRvIHdyaXRlIGJhY2sg ImFsbCIgZGlydHkNCj4gPiBibG9ja3MgaW4gYQ0KPiA+IC1jYWNoZSwgd2hpY2ggZWZmZWN0aXZl bHkgZHJhaW4gYWxsIGRpcnR5IGNhY2hlIGdyYWR1YWxseSB0byBhdHRhaW4NCj4gPiBhbmQgbGFz dCBpbg0KPiA+IC10aGUgImNsZWFuIiBzdGF0ZSwgd2hpY2ggY2FuIGJlIHVzZWZ1bCBmb3Igc2hy aW5raW5nIG9yDQo+ID4gZGVjb21taXNzaW9uaW5nIGENCj4gPiAtY2FjaGUuIFRoZSByZXN1bHQg YW5kIGVmZmVjdCBpcyBub3Qgd2hhdCB3ZSBhcmUgbG9va2luZyBmb3IgaGVyZS4NCj4gPiAtDQo+ ID4gLUluIGNvbmNsdXNpb24sIGFzIGl0IHNlZW1zIG5vIHdheSB0byBlbmZvcmNlIGZpbGUgd3Jp dGVzIHRvIHRoZQ0KPiA+IG9yaWdpbmFsDQo+ID4gLWRldmljZSwgZ3J1YiBtYXkgc3VmZmVyIGZy b20gcG93ZXIgZmFpbHVyZSBhcyBpdCBjYW5ub3QgYXNzZW1ibGUgdGhlDQo+ID4gY2FjaGUNCj4g PiAtZGV2aWNlIGFuZCByZWFkIHRoZSBkaXJ0eSBkYXRhIGZyb20gaXQuIEhvd2V2ZXIgc2luY2Ug dGhlIGNhc2UgaXMNCj4gPiBvbmx5DQo+ID4gLWFwcGxpY2FibGUgdG8gd3JpdGViYWNrIG1vZGUg d2hpY2ggaXMgc2Vuc2l0aXZlIHRvIGRhdGEgbG9zdCBpbg0KPiA+IG5hdHVyZSwgSSdkDQo+ID4g LXN0aWxsIGxpa2UgdG8gcHJvcG9zZSBteSAocmVsYXRpdmVseSBzaW1wbGUpIHBhdGNoIGFuZCB0 cmVhdCByZWFkaW5nDQo+ID4gZGlydHkNCj4gPiAtY2FjaGUgYXMgaW1wcm92ZW1lbnQuDQo+ID4g LQ0KPiA+IC1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtjb21taXQNCj4gPiAwNDU0YjA0NDUz OTNhYWZjNTYwMGU5MmVmMGMzOTQ5NGUzMzNiMTM1DQo+ID4gLWZyb20gaHR0cHM6Ly9naXQuc2F2 YW5uYWguZ251Lm9yZy9naXQvZ3J1Yi5naXRdDQo+ID4gLQ0KPiA+IC1TaWduZWQtb2ZmLWJ5OiBN aWNoYWVsIENoYW5nIDxtY2hhbmdAc3VzZS5jb20+DQo+ID4gLVJldmlld2VkLWJ5OiBEYW5pZWwg S2lwZXIgPGRhbmllbC5raXBlckBvcmFjbGUuY29tPg0KPiA+IC1TaWduZWQtb2ZmLWJ5OiBZb25n eGluIExpdSA8eW9uZ3hpbi5saXVAd2luZHJpdmVyLmNvbT4NCj4gPiAtLS0tDQo+ID4gLSBncnVi LWNvcmUvZGlzay9sdm0uYyB8IDE5MA0KPiA+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKw0KPiA+IC0gMSBmaWxlIGNoYW5nZWQsIDE5MCBpbnNlcnRp b25zKCspDQo+ID4gLQ0KPiA+IC1kaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL2Rpc2svbHZtLmMgYi9n cnViLWNvcmUvZGlzay9sdm0uYw0KPiA+IC1pbmRleCA3YjI2NWM3Li5kYzZiODNiIDEwMDY0NA0K PiA+IC0tLS0gYS9ncnViLWNvcmUvZGlzay9sdm0uYw0KPiA+IC0rKysgYi9ncnViLWNvcmUvZGlz ay9sdm0uYw0KPiA+IC1AQCAtMzMsNiArMzMsMTQgQEANCj4gPiAtIA0KPiA+IC0gR1JVQl9NT0Rf TElDRU5TRSAoIkdQTHYzKyIpOw0KPiA+IC0gDQo+ID4gLStzdHJ1Y3QgY2FjaGVfbHYNCj4gPiAt K3sNCj4gPiAtK8KgIHN0cnVjdCBncnViX2Rpc2tmaWx0ZXJfbHYgKmx2Ow0KPiA+IC0rwqAgY2hh ciAqY2FjaGVfcG9vbDsNCj4gPiAtK8KgIGNoYXIgKm9yaWdpbjsNCj4gPiAtK8KgIHN0cnVjdCBj YWNoZV9sdiAqbmV4dDsNCj4gPiAtK307DQo+ID4gLSsNCj4gPiAtIA0KPiA+IC0gLyogR28gdGhl IHN0cmluZyBTVFIgYW5kIHJldHVybiB0aGUgbnVtYmVyIGFmdGVyIFNUUi7CoCAqUCB3aWxsDQo+ ID4gcG9pbnQNCj4gPiAtwqAgwqAgYXQgdGhlIG51bWJlci7CoCBJbiBjYXNlIFNUUiBpcyBub3Qg Zm91bmQsICpQIHdpbGwgYmUgTlVMTCBhbmQNCj4gPiB0aGUNCj4gPiAtQEAgLTk1LDYgKzEwMywz NCBAQCBncnViX2x2bV9jaGVja19mbGFnIChjaGFyICpwLCBjb25zdCBjaGFyICpzdHIsDQo+ID4g Y29uc3QgY2hhciAqZmxhZykNCj4gPiAtwqAgwqAgwqB9DQo+ID4gLSB9DQo+ID4gLSANCj4gPiAt K3N0YXRpYyB2b2lkDQo+ID4gLStncnViX2x2bV9mcmVlX2NhY2hlX2x2cyAoc3RydWN0IGNhY2hl X2x2ICpjYWNoZV9sdnMpDQo+ID4gLSt7DQo+ID4gLSvCoCBzdHJ1Y3QgY2FjaGVfbHYgKmNhY2hl Ow0KPiA+IC0rDQo+ID4gLSvCoCB3aGlsZSAoKGNhY2hlID0gY2FjaGVfbHZzKSkNCj4gPiAtK8Kg IMKgIHsNCj4gPiAtK8KgIMKgIMKgIGNhY2hlX2x2cyA9IGNhY2hlX2x2cy0+bmV4dDsNCj4gPiAt Kw0KPiA+IC0rwqAgwqAgwqAgaWYgKGNhY2hlLT5sdikNCj4gPiAtK8KgIMKgIMKgIHsNCj4gPiAt K8KgIMKgIMKgIMKgIHVuc2lnbmVkIGludCBpOw0KPiA+IC0rDQo+ID4gLSvCoCDCoCDCoCDCoCBm b3IgKGkgPSAwOyBpIDwgY2FjaGUtPmx2LT5zZWdtZW50X2NvdW50OyArK2kpDQo+ID4gLSvCoCDC oCDCoCDCoCDCoCBpZiAoY2FjaGUtPmx2LT5zZWdtZW50cykNCj4gPiAtK8KgIMKgIMKgIMKgIMKg IMKgIGdydWJfZnJlZSAoY2FjaGUtPmx2LT5zZWdtZW50c1tpXS5ub2Rlcyk7DQo+ID4gLSvCoCDC oCDCoCDCoCBncnViX2ZyZWUgKGNhY2hlLT5sdi0+c2VnbWVudHMpOw0KPiA+IC0rwqAgwqAgwqAg wqAgZ3J1Yl9mcmVlIChjYWNoZS0+bHYtPmZ1bGxuYW1lKTsNCj4gPiAtK8KgIMKgIMKgIMKgIGdy dWJfZnJlZSAoY2FjaGUtPmx2LT5pZG5hbWUpOw0KPiA+IC0rwqAgwqAgwqAgwqAgZ3J1Yl9mcmVl IChjYWNoZS0+bHYtPm5hbWUpOw0KPiA+IC0rwqAgwqAgwqAgfQ0KPiA+IC0rwqAgwqAgwqAgZ3J1 Yl9mcmVlIChjYWNoZS0+bHYpOw0KPiA+IC0rwqAgwqAgwqAgZ3J1Yl9mcmVlIChjYWNoZS0+b3Jp Z2luKTsNCj4gPiAtK8KgIMKgIMKgIGdydWJfZnJlZSAoY2FjaGUtPmNhY2hlX3Bvb2wpOw0KPiA+ IC0rwqAgwqAgwqAgZ3J1Yl9mcmVlIChjYWNoZSk7DQo+ID4gLSvCoCDCoCB9DQo+ID4gLSt9DQo+ ID4gLSsNCj4gPiAtIHN0YXRpYyBzdHJ1Y3QgZ3J1Yl9kaXNrZmlsdGVyX3ZnICogDQo+ID4gLSBn cnViX2x2bV9kZXRlY3QgKGdydWJfZGlza190IGRpc2ssDQo+ID4gLcKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIHN0cnVjdCBncnViX2Rpc2tmaWx0ZXJfcHZfaWQgKmlkLA0KPiA+IC1AQCAtMjQyLDYg KzI3OCw4IEBAIGdydWJfbHZtX2RldGVjdCAoZ3J1Yl9kaXNrX3QgZGlzaywNCj4gPiAtIA0KPiA+ IC3CoCDCoGlmICghIHZnKQ0KPiA+IC3CoCDCoCDCoHsNCj4gPiAtK8KgIMKgIMKgIHN0cnVjdCBj YWNoZV9sdiAqY2FjaGVfbHZzID0gTlVMTDsNCj4gPiAtKw0KPiA+IC3CoCDCoCDCoCDCoC8qIEZp cnN0IHRpbWUgd2Ugc2VlIHRoaXMgdm9sdW1lIGdyb3VwLiBXZSd2ZSB0byBjcmVhdGUgdGhlDQo+ ID4gLcKgIMKgIMKgIMKgIHdob2xlIHZvbHVtZSBncm91cCBzdHJ1Y3R1cmUuICovDQo+ID4gLcKg IMKgIMKgIMKgdmcgPSBncnViX21hbGxvYyAoc2l6ZW9mICgqdmcpKTsNCj4gPiAtQEAgLTY3MSw2 ICs3MDksMTA2IEBAIGdydWJfbHZtX2RldGVjdCAoZ3J1Yl9kaXNrX3QgZGlzaywNCj4gPiAtwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBzZWctPm5vZGVzW3NlZy0+bm9kZV9j b3VudCAtIDFdLm5hbWUgPSB0bXA7DQo+ID4gLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgfQ0KPiA+IC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoH0NCj4gPiAtK8KgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIGVsc2UgaWYgKGdydWJfbWVtY21wIChwLCAiY2FjaGVcIiIsDQo+ ID4gLSvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHNp emVvZiAoImNhY2hlXCIiKSAtIDEpID09IDApDQo+ID4gLSvCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCB7DQo+ID4gLSvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBzdHJ1Y3QgY2FjaGVf bHYgKmNhY2hlID0gTlVMTDsNCj4gPiAtKw0KPiA+IC0rwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgY2hhciAqcDIsICpwMzsNCj4gPiAtK8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IGdydWJfc2l6ZV90IHN6Ow0KPiA+IC0rDQo+ID4gLSvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCBjYWNoZSA9IGdydWJfemFsbG9jIChzaXplb2YgKCpjYWNoZSkpOw0KPiA+IC0rwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYgKCFjYWNoZSkNCj4gPiAtK8KgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIGdvdG8gY2FjaGVfbHZfZmFpbDsNCj4gPiAtK8KgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIGNhY2hlLT5sdiA9IGdydWJfemFsbG9jIChzaXplb2YgKCpjYWNo ZS0+bHYpKTsNCj4gPiAtK8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGlmICghY2FjaGUt Pmx2KQ0KPiA+IC0rwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZ290byBjYWNoZV9s dl9mYWlsOw0KPiA+IC0rwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZ3J1Yl9tZW1jcHkg KGNhY2hlLT5sdiwgbHYsIHNpemVvZiAoKmNhY2hlLQ0KPiA+ID4gbHYpKTsNCj4gPiAtKw0KPiA+ IC0rwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYgKGx2LT5mdWxsbmFtZSkNCj4gPiAt K8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHsNCj4gPiAtK8KgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIGNhY2hlLT5sdi0+ZnVsbG5hbWUgPSBncnViX3N0cmR1cCAo bHYtDQo+ID4gPiBmdWxsbmFtZSk7DQo+ID4gLSvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCBpZiAoIWNhY2hlLT5sdi0+ZnVsbG5hbWUpDQo+ID4gLSvCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBnb3RvIGNhY2hlX2x2X2ZhaWw7DQo+ID4gLSvCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9DQo+ID4gLSvCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCBpZiAobHYtPmlkbmFtZSkNCj4gPiAtK8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIHsNCj4gPiAtK8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGNhY2hl LT5sdi0+aWRuYW1lID0gZ3J1Yl9zdHJkdXAgKGx2LQ0KPiA+ID4gaWRuYW1lKTsNCj4gPiAtK8Kg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGlmICghY2FjaGUtPmx2LT5pZG5hbWUp DQo+ID4gLSvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBnb3RvIGNhY2hl X2x2X2ZhaWw7DQo+ID4gLSvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9DQo+ID4g LSvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpZiAobHYtPm5hbWUpDQo+ID4gLSvCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB7DQo+ID4gLSvCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCBjYWNoZS0+bHYtPm5hbWUgPSBncnViX3N0cmR1cCAobHYtPm5hbWUp Ow0KPiA+IC0rwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYgKCFjYWNoZS0+ bHYtPm5hbWUpDQo+ID4gLSvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBn b3RvIGNhY2hlX2x2X2ZhaWw7DQo+ID4gLSvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCB9DQo+ID4gLSsNCj4gPiAtK8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHNraXBfbHYg PSAxOw0KPiA+IC0rDQo+ID4gLSvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBwMiA9IGdy dWJfc3Ryc3RyIChwLCAiY2FjaGVfcG9vbCA9IFwiIik7DQo+ID4gLSvCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCBpZiAoIXAyKQ0KPiA+IC0rwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgZ290byBjYWNoZV9sdl9mYWlsOw0KPiA+IC0rDQo+ID4gLSvCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCBwMiA9IGdydWJfc3RyY2hyIChwMiwgJyInKTsNCj4gPiAtK8KgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIGlmICghcDIpDQo+ID4gLSvCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCBnb3RvIGNhY2hlX2x2X2ZhaWw7DQo+ID4gLSsNCj4gPiAtK8KgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIHAzID0gKytwMjsNCj4gPiAtK8KgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIHAzID0gZ3J1Yl9zdHJjaHIgKHAzLCAnIicpOw0KPiA+IC0rwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYgKCFwMykNCj4gPiAtK8KgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIGdvdG8gY2FjaGVfbHZfZmFpbDsNCj4gPiAtKw0KPiA+IC0rwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgc3ogPSBwMyAtIHAyOw0KPiA+IC0rDQo+ID4gLSvCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjYWNoZS0+Y2FjaGVfcG9vbCA9IGdydWJfbWFsbG9jIChz eiArIDEpOw0KPiA+IC0rwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYgKCFjYWNoZS0+ Y2FjaGVfcG9vbCkNCj4gPiAtK8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGdvdG8g Y2FjaGVfbHZfZmFpbDsNCj4gPiAtK8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGdydWJf bWVtY3B5IChjYWNoZS0+Y2FjaGVfcG9vbCwgcDIsIHN6KTsNCj4gPiAtK8KgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIGNhY2hlLT5jYWNoZV9wb29sW3N6XSA9ICdcMCc7DQo+ID4gLSsNCj4g PiAtK8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHAyID0gZ3J1Yl9zdHJzdHIgKHAsICJv cmlnaW4gPSBcIiIpOw0KPiA+IC0rwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYgKCFw MikNCj4gPiAtK8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGdvdG8gY2FjaGVfbHZf ZmFpbDsNCj4gPiAtKw0KPiA+IC0rwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcDIgPSBn cnViX3N0cmNociAocDIsICciJyk7DQo+ID4gLSvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCBpZiAoIXAyKQ0KPiA+IC0rwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZ290byBj YWNoZV9sdl9mYWlsOw0KPiA+IC0rDQo+ID4gLSvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCBwMyA9ICsrcDI7DQo+ID4gLSvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBwMyA9IGdy dWJfc3RyY2hyIChwMywgJyInKTsNCj4gPiAtK8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IGlmICghcDMpDQo+ID4gLSvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBnb3RvIGNh Y2hlX2x2X2ZhaWw7DQo+ID4gLSsNCj4gPiAtK8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IHN6ID0gcDMgLSBwMjsNCj4gPiAtKw0KPiA+IC0rwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgY2FjaGUtPm9yaWdpbiA9IGdydWJfbWFsbG9jIChzeiArIDEpOw0KPiA+IC0rwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYgKCFjYWNoZS0+b3JpZ2luKQ0KPiA+IC0rwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZ290byBjYWNoZV9sdl9mYWlsOw0KPiA+IC0rwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZ3J1Yl9tZW1jcHkgKGNhY2hlLT5vcmlnaW4sIHAyLCBz eik7DQo+ID4gLSvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjYWNoZS0+b3JpZ2luW3N6 XSA9ICdcMCc7DQo+ID4gLSsNCj4gPiAtK8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGNh Y2hlLT5uZXh0ID0gY2FjaGVfbHZzOw0KPiA+IC0rwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgY2FjaGVfbHZzID0gY2FjaGU7DQo+ID4gLSvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCBicmVhazsNCj4gPiAtKw0KPiA+IC0rwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY2FjaGVf bHZfZmFpbDoNCj4gPiAtK8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGlmIChjYWNoZSkN Cj4gPiAtK8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHsNCj4gPiAtK8KgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGdydWJfZnJlZSAoY2FjaGUtPm9yaWdpbik7DQo+ ID4gLSvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBncnViX2ZyZWUgKGNhY2hl LT5jYWNoZV9wb29sKTsNCj4gPiAtK8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IGlmIChjYWNoZS0+bHYpDQo+ID4gLSvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCB7DQo+ID4gLSvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBn cnViX2ZyZWUgKGNhY2hlLT5sdi0+ZnVsbG5hbWUpOw0KPiA+IC0rwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZ3J1Yl9mcmVlIChjYWNoZS0+bHYtPmlkbmFtZSk7DQo+ ID4gLSvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBncnViX2ZyZWUg KGNhY2hlLT5sdi0+bmFtZSk7DQo+ID4gLSvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCB9DQo+ID4gLSvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBncnVi X2ZyZWUgKGNhY2hlLT5sdik7DQo+ID4gLSvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCBncnViX2ZyZWUgKGNhY2hlKTsNCj4gPiAtK8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIH0NCj4gPiAtK8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGdydWJfbHZtX2Zy ZWVfY2FjaGVfbHZzIChjYWNoZV9sdnMpOw0KPiA+IC0rwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgZ290byBmYWlsNDsNCj4gPiAtK8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0NCj4g PiAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBlbHNlDQo+ID4gLcKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgew0KPiA+IC0gI2lmZGVmIEdSVUJfVVRJTA0KPiA+IC1AQCAtNzQ3LDYgKzg4 NSw1OCBAQCBncnViX2x2bV9kZXRlY3QgKGdydWJfZGlza190IGRpc2ssDQo+ID4gLcKgIMKgIMKg IMKgIMKgIMKgIMKgfQ0KPiA+IC3CoCDCoCDCoCDCoA0KPiA+IC3CoCDCoCDCoCDCoH0NCj4gPiAt Kw0KPiA+IC0rwqAgwqAgwqAgew0KPiA+IC0rwqAgwqAgwqAgc3RydWN0IGNhY2hlX2x2ICpjYWNo ZTsNCj4gPiAtKw0KPiA+IC0rwqAgwqAgwqAgZm9yIChjYWNoZSA9IGNhY2hlX2x2czsgY2FjaGU7 IGNhY2hlID0gY2FjaGUtPm5leHQpDQo+ID4gLSvCoCDCoCDCoCDCoCB7DQo+ID4gLSvCoCDCoCDC oCDCoCDCoCBzdHJ1Y3QgZ3J1Yl9kaXNrZmlsdGVyX2x2ICpsdjsNCj4gPiAtKw0KPiA+IC0rwqAg wqAgwqAgwqAgwqAgZm9yIChsdiA9IHZnLT5sdnM7IGx2OyBsdiA9IGx2LT5uZXh0KQ0KPiA+IC0r wqAgwqAgwqAgwqAgwqAgwqAgaWYgKGdydWJfc3RyY21wIChsdi0+bmFtZSwgY2FjaGUtPm9yaWdp bikgPT0gMCkNCj4gPiAtK8KgIMKgIMKgIMKgIMKgIMKgIMKgIGJyZWFrOw0KPiA+IC0rwqAgwqAg wqAgwqAgwqAgaWYgKGx2KQ0KPiA+IC0rwqAgwqAgwqAgwqAgwqAgwqAgew0KPiA+IC0rwqAgwqAg wqAgwqAgwqAgwqAgwqAgY2FjaGUtPmx2LT5zZWdtZW50cyA9IGdydWJfbWFsbG9jIChsdi0+c2Vn bWVudF9jb3VudA0KPiA+ICogc2l6ZW9mICgqbHYtPnNlZ21lbnRzKSk7DQo+ID4gLSvCoCDCoCDC oCDCoCDCoCDCoCDCoCBpZiAoIWNhY2hlLT5sdi0+c2VnbWVudHMpDQo+ID4gLSvCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCB7DQo+ID4gLSvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBncnViX2x2 bV9mcmVlX2NhY2hlX2x2cyAoY2FjaGVfbHZzKTsNCj4gPiAtK8KgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIGdvdG8gZmFpbDQ7DQo+ID4gLSvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9DQo+ID4g LSvCoCDCoCDCoCDCoCDCoCDCoCDCoCBncnViX21lbWNweSAoY2FjaGUtPmx2LT5zZWdtZW50cywg bHYtPnNlZ21lbnRzLCBsdi0NCj4gPiA+IHNlZ21lbnRfY291bnQgKiBzaXplb2YgKCpsdi0+c2Vn bWVudHMpKTsNCj4gPiAtKw0KPiA+IC0rwqAgwqAgwqAgwqAgwqAgwqAgwqAgZm9yIChpID0gMDsg aSA8IGx2LT5zZWdtZW50X2NvdW50OyArK2kpDQo+ID4gLSvCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCB7DQo+ID4gLSvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBzdHJ1Y3QgZ3J1Yl9kaXNrZmls dGVyX25vZGUgKm5vZGVzID0gbHYtDQo+ID4gPiBzZWdtZW50c1tpXS5ub2RlczsNCj4gPiAtK8Kg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGdydWJfc2l6ZV90IG5vZGVfY291bnQgPSBsdi0NCj4g PiA+IHNlZ21lbnRzW2ldLm5vZGVfY291bnQ7DQo+ID4gLSsNCj4gPiAtK8KgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIGNhY2hlLT5sdi0+c2VnbWVudHNbaV0ubm9kZXMgPSBncnViX21hbGxvYw0K PiA+IChub2RlX2NvdW50ICogc2l6ZW9mICgqbm9kZXMpKTsNCj4gPiAtK8KgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIGlmICghY2FjaGUtPmx2LT5zZWdtZW50c1tpXS5ub2RlcykNCj4gPiAtK8Kg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHsNCj4gPiAtK8KgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIGZvciAoaiA9IDA7IGogPCBpOyArK2opDQo+ID4gLSvCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBncnViX2ZyZWUgKGNhY2hlLT5sdi0+c2VnbWVudHNbal0u bm9kZXMpOw0KPiA+IC0rwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZ3J1Yl9mcmVl IChjYWNoZS0+bHYtPnNlZ21lbnRzKTsNCj4gPiAtK8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIGNhY2hlLT5sdi0+c2VnbWVudHMgPSBOVUxMOw0KPiA+IC0rwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgZ3J1Yl9sdm1fZnJlZV9jYWNoZV9sdnMgKGNhY2hlX2x2cyk7DQo+ ID4gLSvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBnb3RvIGZhaWw0Ow0KPiA+IC0r wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfQ0KPiA+IC0rwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgZ3J1Yl9tZW1jcHkgKGNhY2hlLT5sdi0+c2VnbWVudHNbaV0ubm9kZXMsIG5vZGVz LA0KPiA+IG5vZGVfY291bnQgKiBzaXplb2YgKCpub2RlcykpOw0KPiA+IC0rwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgfQ0KPiA+IC0rDQo+ID4gLSvCoCDCoCDCoCDCoCDCoCDCoCDCoCBpZiAoY2Fj aGUtPmx2LT5zZWdtZW50cykNCj4gPiAtK8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHsNCj4gPiAt K8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGNhY2hlLT5sdi0+c2VnbWVudF9jb3VudCA9IGx2 LT5zZWdtZW50X2NvdW50Ow0KPiA+IC0rwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY2FjaGUt Pmx2LT52ZyA9IHZnOw0KPiA+IC0rwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY2FjaGUtPmx2 LT5uZXh0ID0gdmctPmx2czsNCj4gPiAtK8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHZnLT5s dnMgPSBjYWNoZS0+bHY7DQo+ID4gLSvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjYWNoZS0+ bHYgPSBOVUxMOw0KPiA+IC0rwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfQ0KPiA+IC0rwqAgwqAg wqAgwqAgwqAgwqAgfQ0KPiA+IC0rwqAgwqAgwqAgwqAgfQ0KPiA+IC0rwqAgwqAgwqAgfQ0KPiA+ IC0rDQo+ID4gLSvCoCDCoCDCoCBncnViX2x2bV9mcmVlX2NhY2hlX2x2cyAoY2FjaGVfbHZzKTsN Cj4gPiAtwqAgwqAgwqAgwqBpZiAoZ3J1Yl9kaXNrZmlsdGVyX3ZnX3JlZ2lzdGVyICh2ZykpDQo+ ID4gLcKgIMKgIMKgIMKgZ290byBmYWlsNDsNCj4gPiAtwqAgwqAgwqB9DQo+ID4gLS0tIA0KPiA+ IC0yLjE0LjQNCj4gPiAtDQo+ID4gZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9m aWxlcy9zYWZlbWF0aC1BZGQtc29tZS0NCj4gPiBhcml0aG1ldGljLXByaW1pdGl2ZXMtdGhhdC1j aGVjay1mLnBhdGNoIGIvbWV0YS9yZWNpcGVzLQ0KPiA+IGJzcC9ncnViL2ZpbGVzL3NhZmVtYXRo LUFkZC1zb21lLWFyaXRobWV0aWMtcHJpbWl0aXZlcy10aGF0LWNoZWNrLQ0KPiA+IGYucGF0Y2gN Cj4gPiBkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCAyOTAyMWU4ZDhmLi4wMDAw MDAwMDAwDQo+ID4gLS0tIGEvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzL3NhZmVtYXRoLUFk ZC1zb21lLWFyaXRobWV0aWMtDQo+ID4gcHJpbWl0aXZlcy10aGF0LWNoZWNrLWYucGF0Y2gNCj4g PiArKysgL2Rldi9udWxsDQo+ID4gQEAgLTEsOTQgKzAsMCBAQA0KPiA+IC1Gcm9tIDA2YzM2MWE3 MWM0OTk4NjM1NDkzNjEwZTVkNzZkMGQyMjM5MjUyNTEgTW9uIFNlcCAxNyAwMDowMDowMA0KPiA+ IDIwMDENCj4gPiAtRnJvbTogUGV0ZXIgSm9uZXMgPHBqb25lc0ByZWRoYXQuY29tPg0KPiA+IC1E YXRlOiBNb24sIDE1IEp1biAyMDIwIDEwOjU4OjQyIC0wNDAwDQo+ID4gLVN1YmplY3Q6IFtQQVRD SCA1LzldIHNhZmVtYXRoOiBBZGQgc29tZSBhcml0aG1ldGljIHByaW1pdGl2ZXMgdGhhdA0KPiA+ IGNoZWNrIGZvcg0KPiA+IC0gb3ZlcmZsb3cNCj4gPiAtDQo+ID4gLVRoaXMgYWRkcyBhIG5ldyBo ZWFkZXIsIGluY2x1ZGUvZ3J1Yi9zYWZlbWF0aC5oLCB0aGF0IGluY2x1ZGVzIGVhc3kNCj4gPiB0 bw0KPiA+IC11c2Ugd3JhcHBlcnMgZm9yIF9fYnVpbHRpbl97YWRkLHN1YixtdWx9X292ZXJmbG93 KCkgZGVjbGFyZWQgbGlrZToNCj4gPiAtDQo+ID4gLcKgIGJvb2wgT1AoYSwgYiwgcmVzKQ0KPiA+ IC0NCj4gPiAtd2hlcmUgT1AgaXMgZ3J1Yl9hZGQsIGdydWJfc3ViIG9yIGdydWJfbXVsLiBPUCgp IHJldHVybnMgdHJ1ZSBpbiB0aGUNCj4gPiAtY2FzZSB3aGVyZSB0aGUgb3BlcmF0aW9uIHdvdWxk IG92ZXJmbG93IGFuZCByZXMgaXMgbm90IG1vZGlmaWVkLg0KPiA+IC1PdGhlcndpc2UsIGZhbHNl IGlzIHJldHVybmVkIGFuZCB0aGUgb3BlcmF0aW9uIGlzIGV4ZWN1dGVkLg0KPiA+IC0NCj4gPiAt VGhlc2UgYXJpdGhtZXRpYyBwcmltaXRpdmVzIHJlcXVpcmUgbmV3ZXIgY29tcGlsZXIgdmVyc2lv bnMuIFNvLA0KPiA+IGJ1bXANCj4gPiAtdGhlc2UgcmVxdWlyZW1lbnRzIGluIHRoZSBJTlNUQUxM IGZpbGUgdG9vLg0KPiA+IC0NCj4gPiAtVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbY29tbWl0 DQo+ID4gNjg3MDhjNDUwMzAxOGQ2MWRiY2NlN2FjMTFjYmI1MTFkNjQyNWY0ZA0KPiA+IC1mcm9t IGh0dHBzOi8vZ2l0LnNhdmFubmFoLmdudS5vcmcvZ2l0L2dydWIuZ2l0XQ0KPiA+IC0NCj4gPiAt U2lnbmVkLW9mZi1ieTogUGV0ZXIgSm9uZXMgPHBqb25lc0ByZWRoYXQuY29tPg0KPiA+IC1SZXZp ZXdlZC1ieTogRGFuaWVsIEtpcGVyIDxkYW5pZWwua2lwZXJAb3JhY2xlLmNvbT4NCj4gPiAtW1lM OiBvbWl0IHRoZSBjaGFuZ2UgdG8gSU5TVEFMTCBmcm9tIG9yaWdpbmFsIHBhdGNoXQ0KPiA+IC1T aWduZWQtb2ZmLWJ5OiBZb25neGluIExpdSA8eW9uZ3hpbi5saXVAd2luZHJpdmVyLmNvbT4NCj4g PiAtLS0tDQo+ID4gLSBpbmNsdWRlL2dydWIvY29tcGlsZXIuaCB8wqAgOCArKysrKysrKw0KPiA+ IC0gaW5jbHVkZS9ncnViL3NhZmVtYXRoLmggfCAzNyArKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrDQo+ID4gLSAyIGZpbGVzIGNoYW5nZWQsIDQ1IGluc2VydGlvbnMoKykNCj4g PiAtIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL2dydWIvc2FmZW1hdGguaA0KPiA+IC0NCj4g PiAtZGlmZiAtLWdpdCBhL2luY2x1ZGUvZ3J1Yi9jb21waWxlci5oIGIvaW5jbHVkZS9ncnViL2Nv bXBpbGVyLmgNCj4gPiAtaW5kZXggYzllMWQ3YS4uOGYzYmUzYSAxMDA2NDQNCj4gPiAtLS0tIGEv aW5jbHVkZS9ncnViL2NvbXBpbGVyLmgNCj4gPiAtKysrIGIvaW5jbHVkZS9ncnViL2NvbXBpbGVy LmgNCj4gPiAtQEAgLTQ4LDQgKzQ4LDEyIEBADQo+ID4gLSAjwqAgZGVmaW5lIFdBUk5fVU5VU0VE X1JFU1VMVA0KPiA+IC0gI2VuZGlmDQo+ID4gLSANCj4gPiAtKyNpZiBkZWZpbmVkKF9fY2xhbmdf XykgJiYgZGVmaW5lZChfX2NsYW5nX21ham9yX18pICYmDQo+ID4gZGVmaW5lZChfX2NsYW5nX21p bm9yX18pDQo+ID4gLSsjwqAgZGVmaW5lIENMQU5HX1BSRVJFUShtYWosbWluKSBcDQo+ID4gLSvC oCDCoCDCoCDCoCDCoCAoKF9fY2xhbmdfbWFqb3JfXyA+IChtYWopKSB8fCBcDQo+ID4gLSvCoCDC oCDCoCDCoCDCoChfX2NsYW5nX21ham9yX18gPT0gKG1haikgJiYgX19jbGFuZ19taW5vcl9fID49 IChtaW4pKSkNCj4gPiAtKyNlbHNlDQo+ID4gLSsjwqAgZGVmaW5lIENMQU5HX1BSRVJFUShtYWos bWluKSAwDQo+ID4gLSsjZW5kaWYNCj4gPiAtKw0KPiA+IC0gI2VuZGlmIC8qICEgR1JVQl9DT01Q SUxFUl9IRUFERVIgKi8NCj4gPiAtZGlmZiAtLWdpdCBhL2luY2x1ZGUvZ3J1Yi9zYWZlbWF0aC5o IGIvaW5jbHVkZS9ncnViL3NhZmVtYXRoLmgNCj4gPiAtbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4g PiAtaW5kZXggMDAwMDAwMC4uYzE3Yjg5Yg0KPiA+IC0tLS0gL2Rldi9udWxsDQo+ID4gLSsrKyBi L2luY2x1ZGUvZ3J1Yi9zYWZlbWF0aC5oDQo+ID4gLUBAIC0wLDAgKzEsMzcgQEANCj4gPiAtKy8q DQo+ID4gLSsgKsKgIEdSVULCoCAtLcKgIEdSYW5kIFVuaWZpZWQgQm9vdGxvYWRlcg0KPiA+IC0r ICrCoCBDb3B5cmlnaHQgKEMpIDIwMjDCoCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4N Cj4gPiAtKyAqDQo+ID4gLSsgKsKgIEdSVUIgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQ0KPiA+IC0rICrCoCBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzDQo+ID4gcHVibGlzaGVkIGJ5DQo+ ID4gLSsgKsKgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMg b2YgdGhlIExpY2Vuc2UsDQo+ID4gb3INCj4gPiAtKyAqwqAgKGF0IHlvdXIgb3B0aW9uKSBhbnkg bGF0ZXIgdmVyc2lvbi4NCj4gPiAtKyAqDQo+ID4gLSsgKsKgIEdSVUIgaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCj4gPiAtKyAqwqAgYnV0IFdJVEhP VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCj4g PiAtKyAqwqAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLsKgIFNlZSB0aGUNCj4gPiAtKyAqwqAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y IG1vcmUgZGV0YWlscy4NCj4gPiAtKyAqDQo+ID4gLSsgKsKgIFlvdSBzaG91bGQgaGF2ZSByZWNl aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYw0KPiA+IExpY2Vuc2UNCj4gPiAt KyAqwqAgYWxvbmcgd2l0aCBHUlVCLsKgIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcv bGljZW5zZXMvPi4NCj4gPiAtKyAqDQo+ID4gLSsgKsKgIEFyaXRobWV0aWMgb3BlcmF0aW9ucyB0 aGF0IHByb3RlY3QgYWdhaW5zdCBvdmVyZmxvdy4NCj4gPiAtKyAqLw0KPiA+IC0rDQo+ID4gLSsj aWZuZGVmIEdSVUJfU0FGRU1BVEhfSA0KPiA+IC0rI2RlZmluZSBHUlVCX1NBRkVNQVRIX0ggMQ0K PiA+IC0rDQo+ID4gLSsjaW5jbHVkZSA8Z3J1Yi9jb21waWxlci5oPg0KPiA+IC0rDQo+ID4gLSsv KiBUaGVzZSBhcHBlYXIgaW4gZ2NjIDUuMSBhbmQgY2xhbmcgMy44LiAqLw0KPiA+IC0rI2lmIEdO VUNfUFJFUkVRKDUsIDEpIHx8IENMQU5HX1BSRVJFUSgzLCA4KQ0KPiA+IC0rDQo+ID4gLSsjZGVm aW5lIGdydWJfYWRkKGEsIGIsIHJlcynCoCDCoF9fYnVpbHRpbl9hZGRfb3ZlcmZsb3coYSwgYiwg cmVzKQ0KPiA+IC0rI2RlZmluZSBncnViX3N1YihhLCBiLCByZXMpwqAgwqBfX2J1aWx0aW5fc3Vi X292ZXJmbG93KGEsIGIsIHJlcykNCj4gPiAtKyNkZWZpbmUgZ3J1Yl9tdWwoYSwgYiwgcmVzKcKg IMKgX19idWlsdGluX211bF9vdmVyZmxvdyhhLCBiLCByZXMpDQo+ID4gLSsNCj4gPiAtKyNlbHNl DQo+ID4gLSsjZXJyb3IgZ2NjIDUuMSBvciBuZXdlciBvciBjbGFuZyAzLjggb3IgbmV3ZXIgaXMg cmVxdWlyZWQNCj4gPiAtKyNlbmRpZg0KPiA+IC0rDQo+ID4gLSsjZW5kaWYgLyogR1JVQl9TQUZF TUFUSF9IICovDQo+ID4gLS0tIA0KPiA+IC0yLjE0LjQNCj4gPiAtDQo+ID4gZGlmZiAtLWdpdCBh L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy9zY3JpcHQtUmVtb3ZlLXVudXNlZC1maWVsZHMt DQo+ID4gZnJvbS1ncnViX3NjcmlwdF9mdW5jdGlvLnBhdGNoIGIvbWV0YS9yZWNpcGVzLWJzcC9n cnViL2ZpbGVzL3NjcmlwdC0NCj4gPiBSZW1vdmUtdW51c2VkLWZpZWxkcy1mcm9tLWdydWJfc2Ny aXB0X2Z1bmN0aW8ucGF0Y2gNCj4gPiBkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRl eCA4NGE4MGQ1ZmZkLi4wMDAwMDAwMDAwDQo+ID4gLS0tIGEvbWV0YS9yZWNpcGVzLWJzcC9ncnVi L2ZpbGVzL3NjcmlwdC1SZW1vdmUtdW51c2VkLWZpZWxkcy1mcm9tLQ0KPiA+IGdydWJfc2NyaXB0 X2Z1bmN0aW8ucGF0Y2gNCj4gPiArKysgL2Rldi9udWxsDQo+ID4gQEAgLTEsMzcgKzAsMCBAQA0K PiA+IC1Gcm9tIGUyMTliYWQ4Y2VlNjdiMmJiMjE3MTJkZjhmMDU1NzA2ZjhkYTI1ZDIgTW9uIFNl cCAxNyAwMDowMDowMA0KPiA+IDIwMDENCj4gPiAtRnJvbTogQ2hyaXMgQ291bHNvbiA8Y2hyaXMu Y291bHNvbkBjYW5vbmljYWwuY29tPg0KPiA+IC1EYXRlOiBGcmksIDEwIEp1bCAyMDIwIDExOjIx OjE0ICswMTAwDQo+ID4gLVN1YmplY3Q6IFtQQVRDSCA3LzldIHNjcmlwdDogUmVtb3ZlIHVudXNl ZCBmaWVsZHMgZnJvbQ0KPiA+IGdydWJfc2NyaXB0X2Z1bmN0aW9uDQo+ID4gLSBzdHJ1Y3QNCj4g PiAtDQo+ID4gLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2NvbW1pdA0KPiA+IDFhOGQ5Yzli NGFiNmRmNzY2OWI1YWEzNmE1NjQ3N2YyOTc4MjViOTYNCj4gPiAtZnJvbSBodHRwczovL2dpdC5z YXZhbm5haC5nbnUub3JnL2dpdC9ncnViLmdpdF0NCj4gPiAtDQo+ID4gLVNpZ25lZC1vZmYtYnk6 IENocmlzIENvdWxzb24gPGNocmlzLmNvdWxzb25AY2Fub25pY2FsLmNvbT4NCj4gPiAtUmV2aWV3 ZWQtYnk6IERhbmllbCBLaXBlciA8ZGFuaWVsLmtpcGVyQG9yYWNsZS5jb20+DQo+ID4gLVNpZ25l ZC1vZmYtYnk6IFlvbmd4aW4gTGl1IDx5b25neGluLmxpdUB3aW5kcml2ZXIuY29tPg0KPiA+IC0t LS0NCj4gPiAtIGluY2x1ZGUvZ3J1Yi9zY3JpcHRfc2guaCB8IDUgLS0tLS0NCj4gPiAtIDEgZmls ZSBjaGFuZ2VkLCA1IGRlbGV0aW9ucygtKQ0KPiA+IC0NCj4gPiAtZGlmZiAtLWdpdCBhL2luY2x1 ZGUvZ3J1Yi9zY3JpcHRfc2guaCBiL2luY2x1ZGUvZ3J1Yi9zY3JpcHRfc2guaA0KPiA+IC1pbmRl eCAzNjBjMmJlLi5iMzgyYmNmIDEwMDY0NA0KPiA+IC0tLS0gYS9pbmNsdWRlL2dydWIvc2NyaXB0 X3NoLmgNCj4gPiAtKysrIGIvaW5jbHVkZS9ncnViL3NjcmlwdF9zaC5oDQo+ID4gLUBAIC0zNTks MTMgKzM1OSw4IEBAIHN0cnVjdCBncnViX3NjcmlwdF9mdW5jdGlvbg0KPiA+IC3CoCDCoC8qIFRo ZSBzY3JpcHQgZnVuY3Rpb24uwqAgKi8NCj4gPiAtwqAgwqBzdHJ1Y3QgZ3J1Yl9zY3JpcHQgKmZ1 bmM7DQo+ID4gLSANCj4gPiAtLcKgIC8qIFRoZSBmbGFncy7CoCAqLw0KPiA+IC0twqAgdW5zaWdu ZWQgZmxhZ3M7DQo+ID4gLS0NCj4gPiAtwqAgwqAvKiBUaGUgbmV4dCBlbGVtZW50LsKgICovDQo+ ID4gLcKgIMKgc3RydWN0IGdydWJfc2NyaXB0X2Z1bmN0aW9uICpuZXh0Ow0KPiA+IC0tDQo+ID4g LS3CoCBpbnQgcmVmZXJlbmNlczsNCj4gPiAtIH07DQo+ID4gLSB0eXBlZGVmIHN0cnVjdCBncnVi X3NjcmlwdF9mdW5jdGlvbiAqZ3J1Yl9zY3JpcHRfZnVuY3Rpb25fdDsNCj4gPiAtIA0KPiA+IC0t LSANCj4gPiAtMi4xNC40DQo+ID4gLQ0KPiA+IGRpZmYgLS1naXQgYS9tZXRhL3JlY2lwZXMtYnNw L2dydWIvZ3J1Yi1lZmlfMi4wNC5iYiBiL21ldGEvcmVjaXBlcy0NCj4gPiBic3AvZ3J1Yi9ncnVi LWVmaV8yLjA2LXJjMS5iYg0KPiA+IHNpbWlsYXJpdHkgaW5kZXggOTglDQo+ID4gcmVuYW1lIGZy b20gbWV0YS9yZWNpcGVzLWJzcC9ncnViL2dydWItZWZpXzIuMDQuYmINCj4gPiByZW5hbWUgdG8g bWV0YS9yZWNpcGVzLWJzcC9ncnViL2dydWItZWZpXzIuMDYtcmMxLmJiDQo+ID4gaW5kZXggMjg3 ODQ1YzUwNy4uMjQwZmRlN2RiZiAxMDA2NDQNCj4gPiAtLS0gYS9tZXRhL3JlY2lwZXMtYnNwL2dy dWIvZ3J1Yi1lZmlfMi4wNC5iYg0KPiA+ICsrKyBiL21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9ncnVi LWVmaV8yLjA2LXJjMS5iYg0KPiA+IEBAIC0xMSw4ICsxMSw2IEBAIFNSQ19VUkkgKz0gIiBcDQo+ ID4gwqAgwqAgwqAgwqAgwqAgwqAgZmlsZTovL2NmZyBcDQo+ID4gwqAgwqAgwqAgwqAgwqAgwqAi DQo+ID4gDQo+ID4gLVMgPSAiJHtXT1JLRElSfS9ncnViLSR7UFZ9Ig0KPiA+IC0NCj4gPiDCoCMg RGV0ZXJtaW5lIHRoZSB0YXJnZXQgYXJjaCBmb3IgdGhlIGdydWIgbW9kdWxlcw0KPiA+IMKgcHl0 aG9uIF9fYW5vbnltb3VzICgpIHsNCj4gPiDCoCDCoCDCoGltcG9ydCByZQ0KPiA+IGRpZmYgLS1n aXQgYS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZ3J1YjIuaW5jIGIvbWV0YS9yZWNpcGVzLQ0KPiA+ IGJzcC9ncnViL2dydWIyLmluYw0KPiA+IGluZGV4IGY4NzBkNDFmNmEuLjkzMTI0MDRlZDkgMTAw NjQ0DQo+ID4gLS0tIGEvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2dydWIyLmluYw0KPiA+ICsrKyBi L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9ncnViMi5pbmMNCj4gPiBAQCAtMTMsMjUgKzEzLDIwIEBA IExJQ19GSUxFU19DSEtTVU0gPQ0KPiA+ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjcz NDYzYWI4NzRlODBkNDdmYWU1MDQiDQo+ID4gDQo+ID4gwqBDVkVfUFJPRFVDVCA9ICJncnViMiIN Cj4gPiANCj4gPiAtU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L2dydWIvZ3J1Yi0ke1BWfS50YXIu Z3ogXA0KPiA+ICtTUkNfVVJJID0gImdpdDovL2dpdC5zYXZhbm5haC5nbnUub3JnL2dpdC9ncnVi LmdpdDtuYW1lPWdydWIgXA0KPiA+ICvCoCDCoCDCoCDCoCDCoA0KPiA+IMKgZ2l0Oi8vZ2l0LnN2 LmdudS5vcmcvZ251bGliLmdpdDtkZXN0c3VmZml4PWdpdC9ncnViLQ0KPiA+IGNvcmUvbGliL2du dWxpYjtuYW1lPWdudWxpYg0KPiA+IFwNCj4gPiDCoCDCoCDCoCDCoCDCoCDCoCBmaWxlOi8vMDAw MS1EaXNhYmxlLW1mcG1hdGgtc3NlLWFzLXdlbGwtd2hlbi1TU0UtaXMtDQo+ID4gZGlzYWJsZWQu cGF0Y2ggXA0KPiA+IMKgIMKgIMKgIMKgIMKgIMKgIGZpbGU6Ly9hdXRvZ2VuLnNoLWV4Y2x1ZGUt cGMucGF0Y2ggXA0KPiA+IMKgIMKgIMKgIMKgIMKgIMKgIGZpbGU6Ly9ncnViLW1vZHVsZS1leHBs aWNpdGx5LWtlZXBzLXN5bWJvbGUtDQo+ID4gLm1vZHVsZV9saWNlbnNlLnBhdGNoIFwNCj4gPiDC oCDCoCDCoCDCoCDCoCDCoCBmaWxlOi8vMDAwMS1ncnViLmQtMTBfbGludXguaW4tYWRkLW9lLXMt a2VybmVsLW5hbWUucGF0Y2gNCj4gPiBcDQo+ID4gLcKgIMKgIMKgIMKgIMKgIMKgZmlsZTovL0NW RS0yMDIwLTEwNzEzLnBhdGNoIFwNCj4gPiAtwqAgwqAgwqAgwqAgwqAgwqBmaWxlOi8vY2FsbG9j LU1ha2Utc3VyZS13ZS1hbHdheXMtaGF2ZS1hbi1vdmVyZmxvdy0NCj4gPiBjaGVja2luZy5wYXRj aCBcDQo+ID4gLcKgIMKgIMKgIMKgIMKgIMKgZmlsZTovL2x2bS1BZGQtTFZNLWNhY2hlLWxvZ2lj YWwtdm9sdW1lLWhhbmRsaW5nLnBhdGNoIFwNCj4gPiAtwqAgwqAgwqAgwqAgwqAgwqBmaWxlOi8v Q1ZFLTIwMjAtMTQzMDgtY2FsbG9jLVVzZS1jYWxsb2MtYXQtbW9zdC0NCj4gPiBwbGFjZXMucGF0 Y2ggXA0KPiA+IC3CoCDCoCDCoCDCoCDCoCDCoGZpbGU6Ly9zYWZlbWF0aC1BZGQtc29tZS1hcml0 aG1ldGljLXByaW1pdGl2ZXMtdGhhdC0NCj4gPiBjaGVjay1mLnBhdGNoIFwNCj4gPiAtwqAgwqAg wqAgwqAgwqAgwqBmaWxlOi8vQ1ZFLTIwMjAtMTQzMDktQ1ZFLTIwMjAtMTQzMTAtQ1ZFLTIwMjAt MTQzMTEtDQo+ID4gbWFsbG9jLVVzZS1vdmVyZmxvdy1jaGVja2luZy1wcmltaXRpdmVzLXdoZXJl LXdlLWRvLS5wYXRjaCBcDQo+ID4gLcKgIMKgIMKgIMKgIMKgIMKgZmlsZTovL3NjcmlwdC1SZW1v dmUtdW51c2VkLWZpZWxkcy1mcm9tLQ0KPiA+IGdydWJfc2NyaXB0X2Z1bmN0aW8ucGF0Y2ggXA0K PiA+IC3CoCDCoCDCoCDCoCDCoCDCoGZpbGU6Ly9DVkUtMjAyMC0xNTcwNi1zY3JpcHQtQXZvaWQt YS11c2UtYWZ0ZXItZnJlZS13aGVuLQ0KPiA+IHJlZGVmaW5pbmctYS1mdW5jLnBhdGNoIFwNCj4g PiAtwqAgwqAgwqAgwqAgwqAgwqBmaWxlOi8vQ1ZFLTIwMjAtMTU3MDctbGludXgtRml4LWludGVn ZXItb3ZlcmZsb3dzLWluLQ0KPiA+IGluaXRyZC1zaXplLWhhbmRsaW5nLnBhdGNoIFwNCj4gPiAt wqAgwqAgwqAgwqAgwqAgwqBmaWxlOi8vNjY0MzUwN2NlMzBmNzc1MDA4ZTA5MzU4MGYwYzk0OTlk ZmIyYzQ4NS5wYXRjaCBcDQo+ID4gwqAgwqAgwqAgwqAgwqAgwqAgZmlsZTovL2RldGVybWluaXNt LnBhdGNoIFwNCj4gPiDCoCINCj4gPiAtU1JDX1VSSVttZDVzdW1dID0gIjVjZTY3NGNhNmIyNjEy ZDg5MzliOWU2YWJlZDMyOTM0Ig0KPiA+IC1TUkNfVVJJW3NoYTI1NnN1bV0gPQ0KPiA+ICJmMTBj ODVhZTNlMjA0ZGJhZWMzOWFlMjJmYTNjNWU5OWYwNjY1NDE3ZTkxYzJjYjQ5YjdlNTAzMTY1OGJh NmVhIg0KPiA+ICsNCj4gPiArU1JDUkVWX2dydWIgPSAiYTUzZTUzMGY4YWQzNzcwYzNiMDNjMjA4 YzA4YWU0MTYyZjY4ZTNiMSINCj4gPiArU1JDUkVWX2dudWxpYiA9ICJkMjcxZjg2OGE4ZGY5YmJl YzI5MDQ5ZDAxZTA1NjQ4MWI3YTFhMjYzIg0KPiA+ICtTUkNSRVZfRk9STUFUID0gImdydWJfZ251 bGliIg0KPiA+ICsNCj4gPiArUyA9ICIke1dPUktESVJ9L2dpdCINCj4gPiANCj4gPiDCoERFUEVO RFMgPSAiZmxleC1uYXRpdmUgYmlzb24tbmF0aXZlIGdldHRleHQtbmF0aXZlIg0KPiA+IA0KPiA+ IEBAIC03Niw2ICs3MSw3IEBAIGV4cG9ydCBQWVRIT04gPSAicHl0aG9uMyINCj4gPiANCj4gPiDC oGRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgew0KPiA+IMKgIMKgIMKgIMKgIGNkICR7U30NCj4gPiAr wqAgwqAgwqAgwqAke1N9L2Jvb3RzdHJhcCAtLWdudWxpYi1zcmNkaXI9JHtTfS9ncnViLWNvcmUv bGliL2dudWxpYg0KPiA+IMKgIMKgIMKgIMKgIEZST01fQk9PVFNUUkFQPTEgJHtTfS9hdXRvZ2Vu LnNoDQo+ID4gwqAgwqAgwqAgwqAgY2QgJHtCfQ0KPiA+IMKgfQ0KPiA+IGRpZmYgLS1naXQgYS9t ZXRhL3JlY2lwZXMtYnNwL2dydWIvZ3J1Yl8yLjA0LmJiIGIvbWV0YS9yZWNpcGVzLQ0KPiA+IGJz cC9ncnViL2dydWJfMi4wNi1yYzEuYmINCj4gPiBzaW1pbGFyaXR5IGluZGV4IDEwMCUNCj4gPiBy ZW5hbWUgZnJvbSBtZXRhL3JlY2lwZXMtYnNwL2dydWIvZ3J1Yl8yLjA0LmJiDQo+ID4gcmVuYW1l IHRvIG1ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9ncnViXzIuMDYtcmMxLmJiDQo+ID4gDQo+ID4gDQo+ ID4gDQoNCg==