Date: Thu, 3 May 2018 22:23:52 +0200 From: "O. Hartmann" <ohartmann@walstatt.org> To: "K. Macy" <kmacy@freebsd.org> Cc: "O. Hartmann" <ohartmann@walstatt.org>, Stephen Hurd <shurd@freebsd.org>, svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers <src-committers@freebsd.org> Subject: Re: svn commit: r333175 - in head/sys: kern net netinet netinet6 sys Message-ID: <20180503222419.4228e8e8@thor.intern.walstatt.dynvpn.de> In-Reply-To: <CAHM0Q_OeFG5bKiUMqi5G3roGNnjUHJ_W2KmQeCCkSnW8zCW_RQ@mail.gmail.com> References: <201805021936.w42JaTlq039053@repo.freebsd.org> <20180503213206.7fba052c@thor.intern.walstatt.dynvpn.de> <CAHM0Q_OeFG5bKiUMqi5G3roGNnjUHJ_W2KmQeCCkSnW8zCW_RQ@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
LS0tLS1CRUdJTiBQR1AgU0lHTkVEIE1FU1NBR0UtLS0tLQ0KSGFzaDogU0hBNTEyDQoNCkFtIFRo dSwgMyBNYXkgMjAxOCAxMjo1MzowNSAtMDcwMA0KIksuIE1hY3kiIDxrbWFjeUBmcmVlYnNkLm9y Zz4gc2NocmllYjoNCg0KPiBDYW4geW91IGdpdmUgYW55IGNvbnRleHQgb24gd2hhdCB0aGV5J3Jl IGRvaW5nPyBJbiBhZGRpdGlvbiAtIGV2ZW4gb24NCj4gYSBwcm9kdWN0aW9uIGtlcm5lbCBpdCdz IHBvc3NpYmxlIHRvIGNvbXBpbGUgaW4gRERCIHRvIGF0IGxlYXN0IGdldCBhDQo+IGJhY2t0cmFj ZS4gWW91ciByZXBvcnQgb25seSBnaXZlcyB1cyBlbm91Z2ggaW5mb3JtYXRpb24gdG8ga25vdyB0 aGF0DQoNCk5vdCBhdCB0aGUgbW9tZW50LiBUaGUgaW1tZWRpYXRlIGNyYXNoIGNvcnJ1cHRlZCB0 aGUgL3Vzci9zcmMgZmlsZXN5c3RlbSBzbyBJIGNhbiBub3QNCnJlY29tcGlsZSBhIGtlcm5lbC4g RXZlcnkgYXR0ZW1wdCB0byAvZXRjL25ldHN0YXJ0IHRoZSBuZXR3b3JrIG9uIHRoZSBidWdneSBr ZXJuZWwgZW5kcw0KdXAgaW4gYSBmdXJ0aGVyIGRlc3RydWN0aW9uLCBzbyBJIHN0b3BwZWQgYXQg dGhpcyB2ZXJ5IG1vbWVudCBhbmQgaG9wZWZ1bGx5IEkgY2FuDQpjb3B5IC91c3Ivc3JjIGZyb20g YSByMzMxNTMgYm94IChyMzMzMTUzIGlzIGZvciBtZSB0aGUgbGFzdCB3b3JraW5nIHJldmlzaW9u KSB2aWEgVVNCDQpmbGFzaCBkcml2ZSBhbmQgcmVjb21waWxlIHRoZSBrZXJuZWwuIEJ1dCBJJ2xs IGdvIGZvciByMzMzMTUzIGZpcnN0IHNpbmNlIEkgbmVlZCB0aGUNCnNlcnZlciB1cCB0b21vcnJv dyBhbmQgSSdsbCB0cnkgb24gdGhlIG90aGVyIGJveCB3aGljaCBpcyBhbHNvIGFmZmVjdGVkLCBi dXQgYWxzbw0KZXF1aXB0ZWQgd2l0aCB0aGUgaTM1MCBOSUMgb24gd2hpY2ggdGhlIHByb2JsZW0g b2NjdXJzIHZlcnkgcXVpY2tseS4NCg0KPiB0aGVyZSBpcyBfYW5fIGlzc3VlLiBJdCdzIGRpZmZp Y3VsdCB0byBwcm9jZWVkIG9uIHRoaXMgYWxvbmUuIEkgZG8NCj4gaGF2ZSBhIHJlcG9ydCBmcm9t IHRoZSBGcmVlQlNEIENJIGluZnJhc3RydWN0dXJlIHRoYXQgd2UncmUgbG9va2luZyBpbg0KPiB0 byBub3cuICBXaXRoIGx1Y2sgdGhhdCBpcyB0aGUgc2FtZSBpc3N1ZS4NCj4gDQo+IC1NDQo+IA0K PiBPbiBUaHUsIE1heSAzLCAyMDE4IGF0IDEyOjMxIFBNLCBPLiBIYXJ0bWFubiA8b2hhcnRtYW5u QHdhbHN0YXR0Lm9yZz4gd3JvdGU6DQo+ID4gLS0tLS1CRUdJTiBQR1AgU0lHTkVEIE1FU1NBR0Ut LS0tLQ0KPiA+IEhhc2g6IFNIQTUxMg0KPiA+DQo+ID4gQW0gV2VkLCAyIE1heSAyMDE4IDE5OjM2 OjI5ICswMDAwIChVVEMpDQo+ID4gU3RlcGhlbiBIdXJkIDxzaHVyZEBGcmVlQlNELm9yZz4gc2No cmllYjoNCj4gPiAgDQo+ID4+IEF1dGhvcjogc2h1cmQNCj4gPj4gRGF0ZTogV2VkIE1heSAgMiAx OTozNjoyOSAyMDE4DQo+ID4+IE5ldyBSZXZpc2lvbjogMzMzMTc1DQo+ID4+IFVSTDogaHR0cHM6 Ly9zdm53ZWIuZnJlZWJzZC5vcmcvY2hhbmdlc2V0L2Jhc2UvMzMzMTc1DQo+ID4+DQo+ID4+IExv ZzoNCj4gPj4gICBTZXBhcmF0ZSBsaXN0IG1hbmlwdWxhdGlvbiBsb2NraW5nIGZyb20gc3RhdGUg Y2hhbmdlIGluIG11bHRpY2FzdA0KPiA+Pg0KPiA+PiAgIE11bHRpY2FzdCBpbmNvcnJlY3RseSBj YWxscyBpbiB0byBkcml2ZXJzIHdpdGggYSBtdXRleCBoZWxkIGNhdXNpbmcgZHJpdmVycw0KPiA+ PiAgIHRvIGhhdmUgdG8gZ28gdGhyb3VnaCBhbGwgbWFubmVyIG9mIGNvbnRvcnRpb25zIHRvIHVz ZSBhIG5vbiBzbGVlcGFibGUgbG9jay4NCj4gPj4gICBTZXJpYWxpemUgbXVsdGljYXN0IHVwZGF0 ZXMgaW5zdGVhZC4NCj4gPj4NCj4gPj4gICBTdWJtaXR0ZWQgYnk6ICAgICAgIG1tYWN5IDxtbWFj eUBtYXR0bWFjeS5pbz4NCj4gPj4gICBSZXZpZXdlZCBieTogICAgICAgIHNodXJkLCBzYnJ1bm8N Cj4gPj4gICBTcG9uc29yZWQgYnk6ICAgICAgIExpbWVsaWdodCBOZXR3b3Jrcw0KPiA+PiAgIERp ZmZlcmVudGlhbCBSZXZpc2lvbjogICAgICBodHRwczovL3Jldmlld3MuZnJlZWJzZC5vcmcvRDE0 OTY5DQo+ID4+DQo+ID4+IE1vZGlmaWVkOg0KPiA+PiAgIGhlYWQvc3lzL2tlcm4vc3Vicl9ndGFz a3F1ZXVlLmMNCj4gPj4gICBoZWFkL3N5cy9rZXJuL3N1YnJfd2l0bmVzcy5jDQo+ID4+ICAgaGVh ZC9zeXMvbmV0L2lmLmMNCj4gPj4gICBoZWFkL3N5cy9uZXRpbmV0L2lnbXAuYw0KPiA+PiAgIGhl YWQvc3lzL25ldGluZXQvaWdtcF92YXIuaA0KPiA+PiAgIGhlYWQvc3lzL25ldGluZXQvaW4uYw0K PiA+PiAgIGhlYWQvc3lzL25ldGluZXQvaW5fbWNhc3QuYw0KPiA+PiAgIGhlYWQvc3lzL25ldGlu ZXQvaW5fcGNiLmMNCj4gPj4gICBoZWFkL3N5cy9uZXRpbmV0L2luX3Zhci5oDQo+ID4+ICAgaGVh ZC9zeXMvbmV0aW5ldC9pcF9jYXJwLmMNCj4gPj4gICBoZWFkL3N5cy9uZXRpbmV0Ni9pbjYuYw0K PiA+PiAgIGhlYWQvc3lzL25ldGluZXQ2L2luNl9pZmF0dGFjaC5jDQo+ID4+ICAgaGVhZC9zeXMv bmV0aW5ldDYvaW42X21jYXN0LmMNCj4gPj4gICBoZWFkL3N5cy9uZXRpbmV0Ni9pbjZfcGNiLmMN Cj4gPj4gICBoZWFkL3N5cy9uZXRpbmV0Ni9pbjZfdmFyLmgNCj4gPj4gICBoZWFkL3N5cy9uZXRp bmV0Ni9tbGQ2LmMNCj4gPj4gICBoZWFkL3N5cy9uZXRpbmV0Ni9tbGQ2X3Zhci5oDQo+ID4+ICAg aGVhZC9zeXMvc3lzL2d0YXNrcXVldWUuaA0KPiA+Pg0KPiA+PiBNb2RpZmllZDogaGVhZC9zeXMv a2Vybi9zdWJyX2d0YXNrcXVldWUuYw0KPiA+PiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCj4gPj4g LS0tIGhlYWQvc3lzL2tlcm4vc3Vicl9ndGFza3F1ZXVlLmMgICBXZWQgTWF5ICAyIDE3OjQxOjAw IDIwMTggICAgICAgIChyMzMzMTc0KQ0KPiA+PiArKysgaGVhZC9zeXMva2Vybi9zdWJyX2d0YXNr cXVldWUuYyAgIFdlZCBNYXkgIDIgMTk6MzY6MjkgMjAxOCAgICAgICAgKHIzMzMxNzUpDQo+ID4+ IEBAIC01Myw2ICs1Myw3IEBAIHN0YXRpYyB2b2lkIGd0YXNrcXVldWVfdGhyZWFkX2VucXVldWUo dm9pZCAqKTsNCj4gPj4gIHN0YXRpYyB2b2lkICBndGFza3F1ZXVlX3RocmVhZF9sb29wKHZvaWQg KmFyZyk7DQo+ID4+DQo+ID4+ICBUQVNLUUdST1VQX0RFRklORShzb2Z0aXJxLCBtcF9uY3B1cywg MSk7DQo+ID4+ICtUQVNLUUdST1VQX0RFRklORShjb25maWcsIDEsIDEpOw0KPiA+Pg0KPiA+PiAg c3RydWN0IGd0YXNrcXVldWVfYnVzeSB7DQo+ID4+ICAgICAgIHN0cnVjdCBndGFzayAgICAqdGJf cnVubmluZzsNCj4gPj4gQEAgLTY2Miw3ICs2NjMsNyBAQCBTWVNJTklUKHRxZ19yZWNvcmRfc21w X3N0YXJ0ZWQsIFNJX1NVQl9TTVAsIFNJX09SREVSX0YNCj4gPj4NCj4gPj4gIHZvaWQNCj4gPj4g IHRhc2txZ3JvdXBfYXR0YWNoKHN0cnVjdCB0YXNrcWdyb3VwICpxZ3JvdXAsIHN0cnVjdCBncm91 cHRhc2sgKmd0YXNrLA0KPiA+PiAtICAgIHZvaWQgKnVuaXEsIGludCBpcnEsIGNoYXIgKm5hbWUp DQo+ID4+ICsgICAgdm9pZCAqdW5pcSwgaW50IGlycSwgY29uc3QgY2hhciAqbmFtZSkNCj4gPj4g IHsNCj4gPj4gICAgICAgY3B1c2V0X3QgbWFzazsNCj4gPj4gICAgICAgaW50IHFpZCwgZXJyb3I7 DQo+ID4+IEBAIC05NzYsNCArOTc3LDEzIEBAIHZvaWQNCj4gPj4gIHRhc2txZ3JvdXBfZGVzdHJv eShzdHJ1Y3QgdGFza3Fncm91cCAqcWdyb3VwKQ0KPiA+PiAgew0KPiA+Pg0KPiA+PiArfQ0KPiA+ PiArDQo+ID4+ICt2b2lkDQo+ID4+ICt0YXNrcWdyb3VwX2NvbmZpZ19ndGFza19pbml0KHZvaWQg KmN0eCwgc3RydWN0IGdyb3VwdGFzayAqZ3Rhc2ssIGd0YXNrX2ZuX3QgKmZuLA0KPiA+PiArICAg ICBjb25zdCBjaGFyICpuYW1lKQ0KPiA+PiArew0KPiA+PiArDQo+ID4+ICsgICAgIEdST1VQVEFT S19JTklUKGd0YXNrLCAwLCBmbiwgY3R4KTsNCj4gPj4gKyAgICAgdGFza3Fncm91cF9hdHRhY2go cWdyb3VwX2NvbmZpZywgZ3Rhc2ssIGd0YXNrLCAtMSwgbmFtZSk7DQo+ID4+ICB9DQo+ID4+DQo+ ID4+IE1vZGlmaWVkOiBoZWFkL3N5cy9rZXJuL3N1YnJfd2l0bmVzcy5jDQo+ID4+ID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQ0KPiA+PiAtLS0gaGVhZC9zeXMva2Vybi9zdWJyX3dpdG5lc3MuYyAgICAg IFdlZCBNYXkgIDIgMTc6NDE6MDAgMjAxOCAgICAgICAgKHIzMzMxNzQpDQo+ID4+ICsrKyBoZWFk L3N5cy9rZXJuL3N1YnJfd2l0bmVzcy5jICAgICAgV2VkIE1heSAgMiAxOTozNjoyOSAyMDE4ICAg ICAgICAocjMzMzE3NSkNCj4gPj4gQEAgLTUzMiwxOCArNTMyLDIyIEBAIHN0YXRpYyBzdHJ1Y3Qg d2l0bmVzc19vcmRlcl9saXN0X2VudHJ5IG9yZGVyX2xpc3RzW10gPQ0KPiA+PiAgICAgICAgKiBJ UHY0IG11bHRpY2FzdDoNCj4gPj4gICAgICAgICogcHJvdG9jb2wgbG9ja3MgYmVmb3JlIGludGVy ZmFjZSBsb2NrcywgYWZ0ZXIgVURQIGxvY2tzLg0KPiA+PiAgICAgICAgKi8NCj4gPj4gKyAgICAg eyAiaW5fbXVsdGlfc3giLCAmbG9ja19jbGFzc19zeCB9LA0KPiA+PiAgICAgICB7ICJ1ZHBpbnAi LCAmbG9ja19jbGFzc19ydyB9LA0KPiA+PiAtICAgICB7ICJpbl9tdWx0aV9tdHgiLCAmbG9ja19j bGFzc19tdHhfc2xlZXAgfSwNCj4gPj4gKyAgICAgeyAiaW5fbXVsdGlfbGlzdF9tdHgiLCAmbG9j a19jbGFzc19tdHhfc2xlZXAgfSwNCj4gPj4gICAgICAgeyAiaWdtcF9tdHgiLCAmbG9ja19jbGFz c19tdHhfc2xlZXAgfSwNCj4gPj4gKyAgICAgeyAiaWZuZXRfcnciLCAmbG9ja19jbGFzc19ydyB9 LA0KPiA+PiAgICAgICB7ICJpZl9hZGRyX2xvY2siLCAmbG9ja19jbGFzc19ydyB9LA0KPiA+PiAg ICAgICB7IE5VTEwsIE5VTEwgfSwNCj4gPj4gICAgICAgLyoNCj4gPj4gICAgICAgICogSVB2NiBt dWx0aWNhc3Q6DQo+ID4+ICAgICAgICAqIHByb3RvY29sIGxvY2tzIGJlZm9yZSBpbnRlcmZhY2Ug bG9ja3MsIGFmdGVyIFVEUCBsb2Nrcy4NCj4gPj4gICAgICAgICovDQo+ID4+ICsgICAgIHsgImlu Nl9tdWx0aV9zeCIsICZsb2NrX2NsYXNzX3N4IH0sDQo+ID4+ICAgICAgIHsgInVkcGlucCIsICZs b2NrX2NsYXNzX3J3IH0sDQo+ID4+IC0gICAgIHsgImluNl9tdWx0aV9tdHgiLCAmbG9ja19jbGFz c19tdHhfc2xlZXAgfSwNCj4gPj4gKyAgICAgeyAiaW42X211bHRpX2xpc3RfbXR4IiwgJmxvY2tf Y2xhc3NfbXR4X3NsZWVwIH0sDQo+ID4+ICAgICAgIHsgIm1sZF9tdHgiLCAmbG9ja19jbGFzc19t dHhfc2xlZXAgfSwNCj4gPj4gKyAgICAgeyAiaWZuZXRfcnciLCAmbG9ja19jbGFzc19ydyB9LA0K PiA+PiAgICAgICB7ICJpZl9hZGRyX2xvY2siLCAmbG9ja19jbGFzc19ydyB9LA0KPiA+PiAgICAg ICB7IE5VTEwsIE5VTEwgfSwNCj4gPj4gICAgICAgLyoNCj4gPj4NCj4gPj4gTW9kaWZpZWQ6IGhl YWQvc3lzL25ldC9pZi5jDQo+ID4+ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KPiA+PiAtLS0gaGVh ZC9zeXMvbmV0L2lmLmMgV2VkIE1heSAgMiAxNzo0MTowMCAyMDE4ICAgICAgICAocjMzMzE3NCkN Cj4gPj4gKysrIGhlYWQvc3lzL25ldC9pZi5jIFdlZCBNYXkgIDIgMTk6MzY6MjkgMjAxOCAgICAg ICAgKHIzMzMxNzUpDQo+ID4+IEBAIC05ODUsMTEgKzk4NSwxMyBAQCBzdGF0aWMgdm9pZA0KPiA+ PiAgaWZfcHVyZ2VtYWRkcnMoc3RydWN0IGlmbmV0ICppZnApDQo+ID4+ICB7DQo+ID4+ICAgICAg IHN0cnVjdCBpZm11bHRpYWRkciAqaWZtYTsNCj4gPj4gLSAgICAgc3RydWN0IGlmbXVsdGlhZGRy ICpuZXh0Ow0KPiA+Pg0KPiA+PiAgICAgICBJRl9BRERSX1dMT0NLKGlmcCk7DQo+ID4+IC0gICAg IFRBSUxRX0ZPUkVBQ0hfU0FGRShpZm1hLCAmaWZwLT5pZl9tdWx0aWFkZHJzLCBpZm1hX2xpbmss IG5leHQpDQo+ID4+ICsgICAgIHdoaWxlICghVEFJTFFfRU1QVFkoJmlmcC0+aWZfbXVsdGlhZGRy cykpIHsNCj4gPj4gKyAgICAgICAgICAgICBpZm1hID0gVEFJTFFfRklSU1QoJmlmcC0+aWZfbXVs dGlhZGRycyk7DQo+ID4+ICsgICAgICAgICAgICAgVEFJTFFfUkVNT1ZFKCZpZnAtPmlmX211bHRp YWRkcnMsIGlmbWEsIGlmbWFfbGluayk7DQo+ID4+ICAgICAgICAgICAgICAgaWZfZGVsbXVsdGlf bG9ja2VkKGlmcCwgaWZtYSwgMSk7DQo+ID4+ICsgICAgIH0NCj4gPj4gICAgICAgSUZfQUREUl9X VU5MT0NLKGlmcCk7DQo+ID4+ICB9DQo+ID4+DQo+ID4+IEBAIC0zNDI5LDYgKzM0MzEsMTIgQEAg aWZfYWRkbXVsdGkoc3RydWN0IGlmbmV0ICppZnAsIHN0cnVjdCBzb2NrYWRkciAqc2EsDQo+ID4+ ICAgICAgIHN0cnVjdCBzb2NrYWRkcl9kbCBzZGw7DQo+ID4+ICAgICAgIGludCBlcnJvcjsNCj4g Pj4NCj4gPj4gKyNpZmRlZiBJTkVUDQo+ID4+ICsgICAgIElOX01VTFRJX0xJU1RfVU5MT0NLX0FT U0VSVCgpOw0KPiA+PiArI2VuZGlmDQo+ID4+ICsjaWZkZWYgSU5FVDYNCj4gPj4gKyAgICAgSU42 X01VTFRJX0xJU1RfVU5MT0NLX0FTU0VSVCgpOw0KPiA+PiArI2VuZGlmDQo+ID4+ICAgICAgIC8q DQo+ID4+ICAgICAgICAqIElmIHRoZSBhZGRyZXNzIGlzIGFscmVhZHkgcHJlc2VudCwgcmV0dXJu IGEgbmV3IHJlZmVyZW5jZSB0byBpdDsNCj4gPj4gICAgICAgICogb3RoZXJ3aXNlLCBhbGxvY2F0 ZSBzdG9yYWdlIGFuZCBzZXQgdXAgYSBuZXcgYWRkcmVzcy4NCj4gPj4gQEAgLTM2MTAsNiArMzYx OCw5IEBAIGlmX2RlbG11bHRpX2lmbWEoc3RydWN0IGlmbXVsdGlhZGRyICppZm1hKQ0KPiA+PiAg ICAgICBzdHJ1Y3QgaWZuZXQgKmlmcDsNCj4gPj4gICAgICAgaW50IGxhc3RyZWY7DQo+ID4+DQo+ ID4+ICsjaWZkZWYgSU5FVA0KPiA+PiArICAgICBJTl9NVUxUSV9MSVNUX1VOTE9DS19BU1NFUlQo KTsNCj4gPj4gKyNlbmRpZg0KPiA+PiAgICAgICBpZnAgPSBpZm1hLT5pZm1hX2lmcDsNCj4gPj4g ICNpZmRlZiBESUFHTk9TVElDDQo+ID4+ICAgICAgIGlmIChpZnAgPT0gTlVMTCkgew0KPiA+PiBA QCAtMzcxMSw4ICszNzIyLDcgQEAgaWZfZGVsbXVsdGlfbG9ja2VkKHN0cnVjdCBpZm5ldCAqaWZw LCBzdHJ1Y3QgaWZtdWx0aWFkDQo+ID4+ICAgICAgICAgICAgICAgICAgICAgICBpZl9mcmVlbXVs dGkobGxfaWZtYSk7DQo+ID4+ICAgICAgICAgICAgICAgfQ0KPiA+PiAgICAgICB9DQo+ID4+IC0N Cj4gPj4gLSAgICAgaWYgKGlmcCAhPSBOVUxMKQ0KPiA+PiArICAgICBpZiAoaWZwICE9IE5VTEwg JiYgZGV0YWNoaW5nID09IDApDQo+ID4+ICAgICAgICAgICAgICAgVEFJTFFfUkVNT1ZFKCZpZnAt PmlmX211bHRpYWRkcnMsIGlmbWEsIGlmbWFfbGluayk7DQo+ID4+DQo+ID4+ICAgICAgIGlmX2Zy ZWVtdWx0aShpZm1hKTsNCj4gPj4NCj4gPj4gTW9kaWZpZWQ6IGhlYWQvc3lzL25ldGluZXQvaWdt cC5jDQo+ID4+ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KPiA+PiAtLS0gaGVhZC9zeXMvbmV0aW5l dC9pZ21wLmMgICBXZWQgTWF5ICAyIDE3OjQxOjAwIDIwMTggICAgICAgIChyMzMzMTc0KQ0KPiA+ PiArKysgaGVhZC9zeXMvbmV0aW5ldC9pZ21wLmMgICBXZWQgTWF5ICAyIDE5OjM2OjI5IDIwMTgg ICAgICAgIChyMzMzMTc1KQ0KPiA+PiBAQCAtMTM2LDcgKzEzNiw3IEBAIHN0YXRpYyBpbnQgICAg ICAgIGlnbXBfdjNfZW5xdWV1ZV9ncm91cF9yZWNvcmQoc3RydWN0IG1idWZxICoNCj4gPj4gICAg ICAgICAgICAgICAgICAgc3RydWN0IGluX211bHRpICosIGNvbnN0IGludCwgY29uc3QgaW50LCBj b25zdCBpbnQpOw0KPiA+PiAgc3RhdGljIGludCAgIGlnbXBfdjNfZW5xdWV1ZV9maWx0ZXJfY2hh bmdlKHN0cnVjdCBtYnVmcSAqLA0KPiA+PiAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaW5fbXVs dGkgKik7DQo+ID4+IC1zdGF0aWMgdm9pZCAgaWdtcF92M19wcm9jZXNzX2dyb3VwX3RpbWVycyhz dHJ1Y3QgaWdtcF9pZnNvZnRjICosDQo+ID4+ICtzdGF0aWMgdm9pZCAgaWdtcF92M19wcm9jZXNz X2dyb3VwX3RpbWVycyhzdHJ1Y3QgaW5fbXVsdGlfaGVhZCAqLA0KPiA+PiAgICAgICAgICAgICAg ICAgICBzdHJ1Y3QgbWJ1ZnEgKiwgc3RydWN0IG1idWZxICosIHN0cnVjdCBpbl9tdWx0aSAqLA0K PiA+PiAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQpOw0KPiA+PiAgc3RhdGljIGludCAgIGln bXBfdjNfbWVyZ2Vfc3RhdGVfY2hhbmdlcyhzdHJ1Y3QgaW5fbXVsdGkgKiwNCj4gPj4gQEAgLTE2 MiwxMiArMTYyLDEyIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0aXNyX2hhbmRsZXIgaWdtcF9u aCA9IHsNCj4gPj4gICAqIHRoZW1zZWx2ZXMgYXJlIG5vdCB2aXJ0dWFsaXplZC4NCj4gPj4gICAq DQo+ID4+ICAgKiBMb2NraW5nOg0KPiA+PiAtICogICogVGhlIHBlcm1pdHRlZCBsb2NrIG9yZGVy IGlzOiBJTl9NVUxUSV9MT0NLLCBJR01QX0xPQ0ssIElGX0FERFJfTE9DSy4NCj4gPj4gKyAqICAq IFRoZSBwZXJtaXR0ZWQgbG9jayBvcmRlciBpczogSU5fTVVMVElfTElTVF9MT0NLLCBJR01QX0xP Q0ssIElGX0FERFJfTE9DSy4NCj4gPj4gICAqICAgIEFueSBtYXkgYmUgdGFrZW4gaW5kZXBlbmRl bnRseTsgaWYgYW55IGFyZSBoZWxkIGF0IHRoZSBzYW1lDQo+ID4+ICAgKiAgICB0aW1lLCB0aGUg YWJvdmUgbG9jayBvcmRlciBtdXN0IGJlIGZvbGxvd2VkLg0KPiA+PiAgICogICogQWxsIG91dHB1 dCBpcyBkZWxlZ2F0ZWQgdG8gdGhlIG5ldGlzci4NCj4gPj4gICAqICAgIE5vdyB0aGF0IEdpYW50 IGhhcyBiZWVuIGVsaW1pbmF0ZWQsIHRoZSBuZXRpc3IgbWF5IGJlIGlubGluZWQuDQo+ID4+IC0g KiAgKiBJTl9NVUxUSV9MT0NLIGNvdmVycyBpbl9tdWx0aS4NCj4gPj4gKyAqICAqIElOX01VTFRJ X0xJU1RfTE9DSyBjb3ZlcnMgaW5fbXVsdGkuDQo+ID4+ICAgKiAgKiBJR01QX0xPQ0sgY292ZXJz IGlnbXBfaWZzb2Z0YyBhbmQgYW55IGdsb2JhbCB2YXJpYWJsZXMgaW4gdGhpcyBmaWxlLA0KPiA+ PiAgICogICAgaW5jbHVkaW5nIHRoZSBvdXRwdXQgcXVldWUuDQo+ID4+ICAgKiAgKiBJRl9BRERS X0xPQ0sgY292ZXJzIGlmX211bHRpYWRkcnMsIHdoaWNoIGlzIHVzZWQgZm9yIGEgdmFyaWV0eSBv Zg0KPiA+PiBAQCAtNDQxLDcgKzQ0MSw3IEBAIHN5c2N0bF9pZ21wX2lmaW5mbyhTWVNDVExfSEFO RExFUl9BUkdTKQ0KPiA+PiAgICAgICBpZiAoZXJyb3IpDQo+ID4+ICAgICAgICAgICAgICAgcmV0 dXJuIChlcnJvcik7DQo+ID4+DQo+ID4+IC0gICAgIElOX01VTFRJX0xPQ0soKTsNCj4gPj4gKyAg ICAgSU5fTVVMVElfTElTVF9MT0NLKCk7DQo+ID4+ICAgICAgIElHTVBfTE9DSygpOw0KPiA+Pg0K PiA+PiAgICAgICBpZiAobmFtZVswXSA8PSAwIHx8IG5hbWVbMF0gPiBWX2lmX2luZGV4KSB7DQo+ ID4+IEBAIC00NzUsNyArNDc1LDcgQEAgc3lzY3RsX2lnbXBfaWZpbmZvKFNZU0NUTF9IQU5ETEVS X0FSR1MpDQo+ID4+DQo+ID4+ICBvdXRfbG9ja2VkOg0KPiA+PiAgICAgICBJR01QX1VOTE9DSygp Ow0KPiA+PiAtICAgICBJTl9NVUxUSV9VTkxPQ0soKTsNCj4gPj4gKyAgICAgSU5fTVVMVElfTElT VF9VTkxPQ0soKTsNCj4gPj4gICAgICAgcmV0dXJuIChlcnJvcik7DQo+ID4+ICB9DQo+ID4+DQo+ ID4+IEBAIC01ODYsNyArNTg2LDYgQEAgaWdpX2FsbG9jX2xvY2tlZCgvKmNvbnN0Ki8gc3RydWN0 IGlmbmV0ICppZnApDQo+ID4+ICAgICAgIGlnaS0+aWdpX3FpID0gSUdNUF9RSV9JTklUOw0KPiA+ PiAgICAgICBpZ2ktPmlnaV9xcmkgPSBJR01QX1FSSV9JTklUOw0KPiA+PiAgICAgICBpZ2ktPmln aV91cmkgPSBJR01QX1VSSV9JTklUOw0KPiA+PiAtICAgICBTTElTVF9JTklUKCZpZ2ktPmlnaV9y ZWxpbm1oZWFkKTsNCj4gPj4gICAgICAgbWJ1ZnFfaW5pdCgmaWdpLT5pZ2lfZ3EsIElHTVBfTUFY X1JFU1BPTlNFX1BBQ0tFVFMpOw0KPiA+Pg0KPiA+PiAgICAgICBMSVNUX0lOU0VSVF9IRUFEKCZW X2lnaV9oZWFkLCBpZ2ksIGlnaV9saW5rKTsNCj4gPj4gQEAgLTYxMiwxMSArNjExLDEyIEBAIGln bXBfaWZkZXRhY2goc3RydWN0IGlmbmV0ICppZnApDQo+ID4+ICB7DQo+ID4+ICAgICAgIHN0cnVj dCBpZ21wX2lmc29mdGMgICAgICppZ2k7DQo+ID4+ICAgICAgIHN0cnVjdCBpZm11bHRpYWRkciAg ICAgICppZm1hOw0KPiA+PiAtICAgICBzdHJ1Y3QgaW5fbXVsdGkgICAgICAgICAqaW5tLCAqdGlu bTsNCj4gPj4gLQ0KPiA+PiArICAgICBzdHJ1Y3QgaW5fbXVsdGkgICAgICAgICAqaW5tOw0KPiA+ PiArICAgICBzdHJ1Y3QgaW5fbXVsdGlfaGVhZCBpbm1fZnJlZV90bXA7DQo+ID4+ICAgICAgIENU UjMoS1RSX0lHTVBWMywgIiVzOiBjYWxsZWQgZm9yIGlmcCAlcCglcykiLCBfX2Z1bmNfXywgaWZw LA0KPiA+PiAgICAgICAgICAgaWZwLT5pZl94bmFtZSk7DQo+ID4+DQo+ID4+ICsgICAgIFNMSVNU X0lOSVQoJmlubV9mcmVlX3RtcCk7DQo+ID4+ICAgICAgIElHTVBfTE9DSygpOw0KPiA+Pg0KPiA+ PiAgICAgICBpZ2kgPSAoKHN0cnVjdCBpbl9pZmluZm8gKilpZnAtPmlmX2FmZGF0YVtBRl9JTkVU XSktPmlpX2lnbXA7DQo+ID4+IEBAIC02MzEsMjQgKzYzMSwxNSBAQCBpZ21wX2lmZGV0YWNoKHN0 cnVjdCBpZm5ldCAqaWZwKQ0KPiA+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICgiJXM6IGlm bWFfcHJvdG9zcGVjIGlzIE5VTEwiLCBfX2Z1bmNfXykpOw0KPiA+PiAgI2VuZGlmDQo+ID4+ICAg ICAgICAgICAgICAgICAgICAgICBpbm0gPSAoc3RydWN0IGluX211bHRpICopaWZtYS0+aWZtYV9w cm90b3NwZWM7DQo+ID4+IC0gICAgICAgICAgICAgICAgICAgICBpZiAoaW5tLT5pbm1fc3RhdGUg PT0gSUdNUF9MRUFWSU5HX01FTUJFUikgew0KPiA+PiAtICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBTTElTVF9JTlNFUlRfSEVBRCgmaWdpLT5pZ2lfcmVsaW5taGVhZCwNCj4gPj4gLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlubSwgaW5tX25yZWxlKTsNCj4gPj4gLSAgICAg ICAgICAgICAgICAgICAgIH0NCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgIGlmIChpbm0tPmlu bV9zdGF0ZSA9PSBJR01QX0xFQVZJTkdfTUVNQkVSKQ0KPiA+PiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpbm1fcmVsZV9sb2NrZWQoJmlubV9mcmVlX3RtcCwgaW5tKTsNCj4gPj4gICAg ICAgICAgICAgICAgICAgICAgIGlubV9jbGVhcl9yZWNvcmRlZChpbm0pOw0KPiA+PiAgICAgICAg ICAgICAgIH0NCj4gPj4gICAgICAgICAgICAgICBJRl9BRERSX1JVTkxPQ0soaWZwKTsNCj4gPj4g LSAgICAgICAgICAgICAvKg0KPiA+PiAtICAgICAgICAgICAgICAqIEZyZWUgdGhlIGluX211bHRp IHJlZmVyZW5jZShzKSBmb3IgdGhpcyBJR01QIGxpZmVjeWNsZS4NCj4gPj4gLSAgICAgICAgICAg ICAgKi8NCj4gPj4gLSAgICAgICAgICAgICBTTElTVF9GT1JFQUNIX1NBRkUoaW5tLCAmaWdpLT5p Z2lfcmVsaW5taGVhZCwgaW5tX25yZWxlLA0KPiA+PiAtICAgICAgICAgICAgICAgICB0aW5tKSB7 DQo+ID4+IC0gICAgICAgICAgICAgICAgICAgICBTTElTVF9SRU1PVkVfSEVBRCgmaWdpLT5pZ2lf cmVsaW5taGVhZCwgaW5tX25yZWxlKTsNCj4gPj4gLSAgICAgICAgICAgICAgICAgICAgIGlubV9y ZWxlYXNlX2xvY2tlZChpbm0pOw0KPiA+PiAtICAgICAgICAgICAgIH0NCj4gPj4gKyAgICAgICAg ICAgICBpbm1fcmVsZWFzZV9saXN0X2RlZmVycmVkKCZpbm1fZnJlZV90bXApOw0KPiA+PiAgICAg ICB9DQo+ID4+IC0NCj4gPj4gICAgICAgSUdNUF9VTkxPQ0soKTsNCj4gPj4gKw0KPiA+PiAgfQ0K PiA+Pg0KPiA+PiAgLyoNCj4gPj4gQEAgLTY4NCwxMSArNjc1LDYgQEAgaWdpX2RlbGV0ZV9sb2Nr ZWQoY29uc3Qgc3RydWN0IGlmbmV0ICppZnApDQo+ID4+ICAgICAgICAgICAgICAgICAgICAgICBt YnVmcV9kcmFpbigmaWdpLT5pZ2lfZ3EpOw0KPiA+Pg0KPiA+PiAgICAgICAgICAgICAgICAgICAg ICAgTElTVF9SRU1PVkUoaWdpLCBpZ2lfbGluayk7DQo+ID4+IC0NCj4gPj4gLSAgICAgICAgICAg ICAgICAgICAgIEtBU1NFUlQoU0xJU1RfRU1QVFkoJmlnaS0+aWdpX3JlbGlubWhlYWQpLA0KPiA+ PiAtICAgICAgICAgICAgICAgICAgICAgICAgICgiJXM6IHRoZXJlIGFyZSBkYW5nbGluZyBpbl9t dWx0aSByZWZlcmVuY2VzIiwNCj4gPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICBfX2Z1bmNf XykpOw0KPiA+PiAtDQo+ID4+ICAgICAgICAgICAgICAgICAgICAgICBmcmVlKGlnaSwgTV9JR01Q KTsNCj4gPj4gICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsNCj4gPj4gICAgICAgICAgICAg ICB9DQo+ID4+IEBAIC03MjIsNyArNzA4LDcgQEAgaWdtcF9pbnB1dF92MV9xdWVyeShzdHJ1Y3Qg aWZuZXQgKmlmcCwgY29uc3Qgc3RydWN0IGlwDQo+ID4+ICAgICAgIH0NCj4gPj4gICAgICAgSUdN UFNUQVRfSU5DKGlncHNfcmN2X2dlbl9xdWVyaWVzKTsNCj4gPj4NCj4gPj4gLSAgICAgSU5fTVVM VElfTE9DSygpOw0KPiA+PiArICAgICBJTl9NVUxUSV9MSVNUX0xPQ0soKTsNCj4gPj4gICAgICAg SUdNUF9MT0NLKCk7DQo+ID4+DQo+ID4+ICAgICAgIGlnaSA9ICgoc3RydWN0IGluX2lmaW5mbyAq KWlmcC0+aWZfYWZkYXRhW0FGX0lORVRdKS0+aWlfaWdtcDsNCj4gPj4gQEAgLTc3OCw3ICs3NjQs NyBAQCBpZ21wX2lucHV0X3YxX3F1ZXJ5KHN0cnVjdCBpZm5ldCAqaWZwLCBjb25zdCBzdHJ1Y3Qg aXANCj4gPj4NCj4gPj4gIG91dF9sb2NrZWQ6DQo+ID4+ICAgICAgIElHTVBfVU5MT0NLKCk7DQo+ ID4+IC0gICAgIElOX01VTFRJX1VOTE9DSygpOw0KPiA+PiArICAgICBJTl9NVUxUSV9MSVNUX1VO TE9DSygpOw0KPiA+Pg0KPiA+PiAgICAgICByZXR1cm4gKDApOw0KPiA+PiAgfQ0KPiA+PiBAQCAt ODE2LDcgKzgwMiw3IEBAIGlnbXBfaW5wdXRfdjJfcXVlcnkoc3RydWN0IGlmbmV0ICppZnAsIGNv bnN0IHN0cnVjdCBpcA0KPiA+PiAgICAgICAgICAgICAgIElHTVBTVEFUX0lOQyhpZ3BzX3Jjdl9n cm91cF9xdWVyaWVzKTsNCj4gPj4gICAgICAgfQ0KPiA+Pg0KPiA+PiAtICAgICBJTl9NVUxUSV9M T0NLKCk7DQo+ID4+ICsgICAgIElOX01VTFRJX0xJU1RfTE9DSygpOw0KPiA+PiAgICAgICBJR01Q X0xPQ0soKTsNCj4gPj4NCj4gPj4gICAgICAgaWdpID0gKChzdHJ1Y3QgaW5faWZpbmZvICopaWZw LT5pZl9hZmRhdGFbQUZfSU5FVF0pLT5paV9pZ21wOw0KPiA+PiBAQCAtODcyLDcgKzg1OCw3IEBA IGlnbXBfaW5wdXRfdjJfcXVlcnkoc3RydWN0IGlmbmV0ICppZnAsIGNvbnN0IHN0cnVjdCBpcA0K PiA+Pg0KPiA+PiAgb3V0X2xvY2tlZDoNCj4gPj4gICAgICAgSUdNUF9VTkxPQ0soKTsNCj4gPj4g LSAgICAgSU5fTVVMVElfVU5MT0NLKCk7DQo+ID4+ICsgICAgIElOX01VTFRJX0xJU1RfVU5MT0NL KCk7DQo+ID4+DQo+ID4+ICAgICAgIHJldHVybiAoMCk7DQo+ID4+ICB9DQo+ID4+IEBAIC04OTks NyArODg1LDcgQEAgaWdtcF92Ml91cGRhdGVfZ3JvdXAoc3RydWN0IGluX211bHRpICppbm0sIGNv bnN0IGludCB0DQo+ID4+ICAgICAgIENUUjQoS1RSX0lHTVBWMywgIjB4JTA4eDogJXMvJXMgdGlt ZXI9JWQiLCBfX2Z1bmNfXywNCj4gPj4gICAgICAgICAgIG50b2hsKGlubS0+aW5tX2FkZHIuc19h ZGRyKSwgaW5tLT5pbm1faWZwLT5pZl94bmFtZSwgdGltZXIpOw0KPiA+Pg0KPiA+PiAtICAgICBJ Tl9NVUxUSV9MT0NLX0FTU0VSVCgpOw0KPiA+PiArICAgICBJTl9NVUxUSV9MSVNUX0xPQ0tfQVNT RVJUKCk7DQo+ID4+DQo+ID4+ICAgICAgIHN3aXRjaCAoaW5tLT5pbm1fc3RhdGUpIHsNCj4gPj4g ICAgICAgY2FzZSBJR01QX05PVF9NRU1CRVI6DQo+ID4+IEBAIC0xMDExLDcgKzk5Nyw3IEBAIGln bXBfaW5wdXRfdjNfcXVlcnkoc3RydWN0IGlmbmV0ICppZnAsIGNvbnN0IHN0cnVjdCBpcA0KPiA+ PiAgICAgICAgICAgICAgICAgICAgICAgSUdNUFNUQVRfSU5DKGlncHNfcmN2X2dzcl9xdWVyaWVz KTsNCj4gPj4gICAgICAgfQ0KPiA+Pg0KPiA+PiAtICAgICBJTl9NVUxUSV9MT0NLKCk7DQo+ID4+ ICsgICAgIElOX01VTFRJX0xJU1RfTE9DSygpOw0KPiA+PiAgICAgICBJR01QX0xPQ0soKTsNCj4g Pj4NCj4gPj4gICAgICAgaWdpID0gKChzdHJ1Y3QgaW5faWZpbmZvICopaWZwLT5pZl9hZmRhdGFb QUZfSU5FVF0pLT5paV9pZ21wOw0KPiA+PiBAQCAtMTA5Miw3ICsxMDc4LDcgQEAgaWdtcF9pbnB1 dF92M19xdWVyeShzdHJ1Y3QgaWZuZXQgKmlmcCwgY29uc3Qgc3RydWN0IGlwDQo+ID4+DQo+ID4+ ICBvdXRfbG9ja2VkOg0KPiA+PiAgICAgICBJR01QX1VOTE9DSygpOw0KPiA+PiAtICAgICBJTl9N VUxUSV9VTkxPQ0soKTsNCj4gPj4gKyAgICAgSU5fTVVMVElfTElTVF9VTkxPQ0soKTsNCj4gPj4N Cj4gPj4gICAgICAgcmV0dXJuICgwKTsNCj4gPj4gIH0NCj4gPj4gQEAgLTExMDksNyArMTA5NSw3 IEBAIGlnbXBfaW5wdXRfdjNfZ3JvdXBfcXVlcnkoc3RydWN0IGluX211bHRpICppbm0sIHN0cnVj dA0KPiA+PiAgICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgcmV0dmFsOw0KPiA+PiAgICAg ICB1aW50MTZfdCAgICAgICAgICAgICAgICAgbnNyYzsNCj4gPj4NCj4gPj4gLSAgICAgSU5fTVVM VElfTE9DS19BU1NFUlQoKTsNCj4gPj4gKyAgICAgSU5fTVVMVElfTElTVF9MT0NLX0FTU0VSVCgp Ow0KPiA+PiAgICAgICBJR01QX0xPQ0tfQVNTRVJUKCk7DQo+ID4+DQo+ID4+ICAgICAgIHJldHZh bCA9IDA7DQo+ID4+IEBAIC0xMjQ2LDcgKzEyMzIsNyBAQCBpZ21wX2lucHV0X3YxX3JlcG9ydChz dHJ1Y3QgaWZuZXQgKmlmcCwgLypjb25zdCovIHN0cnUNCj4gPj4gICAgICAgICogSWYgd2UgYXJl IGEgbWVtYmVyIG9mIHRoaXMgZ3JvdXAsIGFuZCBvdXIgbWVtYmVyc2hpcCBzaG91bGQgYmUNCj4g Pj4gICAgICAgICogcmVwb3J0ZWQsIHN0b3Agb3VyIGdyb3VwIHRpbWVyIGFuZCB0cmFuc2l0aW9u IHRvIHRoZSAnbGF6eScgc3RhdGUuDQo+ID4+ICAgICAgICAqLw0KPiA+PiAtICAgICBJTl9NVUxU SV9MT0NLKCk7DQo+ID4+ICsgICAgIElOX01VTFRJX0xJU1RfTE9DSygpOw0KPiA+PiAgICAgICBp bm0gPSBpbm1fbG9va3VwKGlmcCwgaWdtcC0+aWdtcF9ncm91cCk7DQo+ID4+ICAgICAgIGlmIChp bm0gIT0gTlVMTCkgew0KPiA+PiAgICAgICAgICAgICAgIHN0cnVjdCBpZ21wX2lmc29mdGMgKmln aTsNCj4gPj4gQEAgLTEzMDUsNyArMTI5MSw3IEBAIGlnbXBfaW5wdXRfdjFfcmVwb3J0KHN0cnVj dCBpZm5ldCAqaWZwLCAvKmNvbnN0Ki8gc3RydQ0KPiA+PiAgICAgICB9DQo+ID4+DQo+ID4+ICBv dXRfbG9ja2VkOg0KPiA+PiAtICAgICBJTl9NVUxUSV9VTkxPQ0soKTsNCj4gPj4gKyAgICAgSU5f TVVMVElfTElTVF9VTkxPQ0soKTsNCj4gPj4NCj4gPj4gICAgICAgcmV0dXJuICgwKTsNCj4gPj4g IH0NCj4gPj4gQEAgLTEzNzMsNyArMTM1OSw3IEBAIGlnbXBfaW5wdXRfdjJfcmVwb3J0KHN0cnVj dCBpZm5ldCAqaWZwLCAvKmNvbnN0Ki8gc3RydQ0KPiA+PiAgICAgICAgKiByZXBvcnRlZCwgYW5k IG91ciBncm91cCB0aW1lciBpcyBwZW5kaW5nIG9yIGFib3V0IHRvIGJlIHJlc2V0LA0KPiA+PiAg ICAgICAgKiBzdG9wIG91ciBncm91cCB0aW1lciBieSB0cmFuc2l0aW9uaW5nIHRvIHRoZSAnbGF6 eScgc3RhdGUuDQo+ID4+ICAgICAgICAqLw0KPiA+PiAtICAgICBJTl9NVUxUSV9MT0NLKCk7DQo+ ID4+ICsgICAgIElOX01VTFRJX0xJU1RfTE9DSygpOw0KPiA+PiAgICAgICBpbm0gPSBpbm1fbG9v a3VwKGlmcCwgaWdtcC0+aWdtcF9ncm91cCk7DQo+ID4+ICAgICAgIGlmIChpbm0gIT0gTlVMTCkg ew0KPiA+PiAgICAgICAgICAgICAgIHN0cnVjdCBpZ21wX2lmc29mdGMgKmlnaTsNCj4gPj4gQEAg LTE0MTgsNyArMTQwNCw3IEBAIGlnbXBfaW5wdXRfdjJfcmVwb3J0KHN0cnVjdCBpZm5ldCAqaWZw LCAvKmNvbnN0Ki8gc3RydQ0KPiA+PiAgICAgICB9DQo+ID4+DQo+ID4+ICBvdXRfbG9ja2VkOg0K PiA+PiAtICAgICBJTl9NVUxUSV9VTkxPQ0soKTsNCj4gPj4gKyAgICAgSU5fTVVMVElfTElTVF9V TkxPQ0soKTsNCj4gPj4NCj4gPj4gICAgICAgcmV0dXJuICgwKTsNCj4gPj4gIH0NCj4gPj4gQEAg LTE2NDcsNiArMTYzMyw3IEBAIGlnbXBfZmFzdHRpbW9fdm5ldCh2b2lkKQ0KPiA+PiAgICAgICBz dHJ1Y3QgaWdtcF9pZnNvZnRjICAgICAqaWdpOw0KPiA+PiAgICAgICBzdHJ1Y3QgaWZtdWx0aWFk ZHIgICAgICAqaWZtYTsNCj4gPj4gICAgICAgc3RydWN0IGluX211bHRpICAgICAgICAgKmlubTsN Cj4gPj4gKyAgICAgc3RydWN0IGluX211bHRpX2hlYWQgaW5tX2ZyZWVfdG1wOw0KPiA+PiAgICAg ICBpbnQgICAgICAgICAgICAgICAgICAgICAgbG9vcCwgdXJpX2Zhc3RoejsNCj4gPj4NCj4gPj4g ICAgICAgbG9vcCA9IDA7DQo+ID4+IEBAIC0xNjYyLDcgKzE2NDksOCBAQCBpZ21wX2Zhc3R0aW1v X3ZuZXQodm9pZCkNCj4gPj4gICAgICAgICAgICFWX3N0YXRlX2NoYW5nZV90aW1lcnNfcnVubmlu ZykNCj4gPj4gICAgICAgICAgICAgICByZXR1cm47DQo+ID4+DQo+ID4+IC0gICAgIElOX01VTFRJ X0xPQ0soKTsNCj4gPj4gKyAgICAgU0xJU1RfSU5JVCgmaW5tX2ZyZWVfdG1wKTsNCj4gPj4gKyAg ICAgSU5fTVVMVElfTElTVF9MT0NLKCk7DQo+ID4+ICAgICAgIElHTVBfTE9DSygpOw0KPiA+Pg0K PiA+PiAgICAgICAvKg0KPiA+PiBAQCAtMTcyMCw3ICsxNzA4LDcgQEAgaWdtcF9mYXN0dGltb192 bmV0KHZvaWQpDQo+ID4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ2ktPmln aV92ZXJzaW9uKTsNCj4gPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQo+ ID4+ICAgICAgICAgICAgICAgICAgICAgICBjYXNlIElHTVBfVkVSU0lPTl8zOg0KPiA+PiAtICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpZ21wX3YzX3Byb2Nlc3NfZ3JvdXBfdGltZXJzKGln aSwgJnFycSwNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWdtcF92M19wcm9j ZXNzX2dyb3VwX3RpbWVycygmaW5tX2ZyZWVfdG1wLCAmcXJxLA0KPiA+PiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJnNjcSwgaW5tLCB1cmlfZmFzdGh6KTsNCj4gPj4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQo+ID4+ICAgICAgICAgICAgICAgICAgICAg ICB9DQo+ID4+IEBAIC0xNzI4LDggKzE3MTYsNiBAQCBpZ21wX2Zhc3R0aW1vX3ZuZXQodm9pZCkN Cj4gPj4gICAgICAgICAgICAgICBJRl9BRERSX1JVTkxPQ0soaWZwKTsNCj4gPj4NCj4gPj4gICAg ICAgICAgICAgICBpZiAoaWdpLT5pZ2lfdmVyc2lvbiA9PSBJR01QX1ZFUlNJT05fMykgew0KPiA+ PiAtICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGluX211bHRpICAgICAgICAgKnRpbm07DQo+ ID4+IC0NCj4gPj4gICAgICAgICAgICAgICAgICAgICAgIGlnbXBfZGlzcGF0Y2hfcXVldWUoJnFy cSwgMCwgbG9vcCk7DQo+ID4+ICAgICAgICAgICAgICAgICAgICAgICBpZ21wX2Rpc3BhdGNoX3F1 ZXVlKCZzY3EsIDAsIGxvb3ApOw0KPiA+Pg0KPiA+PiBAQCAtMTczNywxOCArMTcyMywxMyBAQCBp Z21wX2Zhc3R0aW1vX3ZuZXQodm9pZCkNCj4gPj4gICAgICAgICAgICAgICAgICAgICAgICAqIEZy ZWUgdGhlIGluX211bHRpIHJlZmVyZW5jZShzKSBmb3IgdGhpcw0KPiA+PiAgICAgICAgICAgICAg ICAgICAgICAgICogSUdNUCBsaWZlY3ljbGUuDQo+ID4+ICAgICAgICAgICAgICAgICAgICAgICAg Ki8NCj4gPj4gLSAgICAgICAgICAgICAgICAgICAgIFNMSVNUX0ZPUkVBQ0hfU0FGRShpbm0sICZp Z2ktPmlnaV9yZWxpbm1oZWFkLA0KPiA+PiAtICAgICAgICAgICAgICAgICAgICAgICAgIGlubV9u cmVsZSwgdGlubSkgew0KPiA+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTElTVF9S RU1PVkVfSEVBRCgmaWdpLT5pZ2lfcmVsaW5taGVhZCwNCj4gPj4gLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGlubV9ucmVsZSk7DQo+ID4+IC0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGlubV9yZWxlYXNlX2xvY2tlZChpbm0pOw0KPiA+PiAtICAgICAgICAgICAgICAgICAg ICAgfQ0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgaW5tX3JlbGVhc2VfbGlzdF9kZWZlcnJl ZCgmaW5tX2ZyZWVfdG1wKTsNCj4gPj4gICAgICAgICAgICAgICB9DQo+ID4+ICAgICAgIH0NCj4g Pj4NCj4gPj4gIG91dF9sb2NrZWQ6DQo+ID4+ICAgICAgIElHTVBfVU5MT0NLKCk7DQo+ID4+IC0g ICAgIElOX01VTFRJX1VOTE9DSygpOw0KPiA+PiArICAgICBJTl9NVUxUSV9MSVNUX1VOTE9DSygp Ow0KPiA+PiAgfQ0KPiA+Pg0KPiA+PiAgLyoNCj4gPj4gQEAgLTE3NjAsNyArMTc0MSw3IEBAIGln bXBfdjF2Ml9wcm9jZXNzX2dyb3VwX3RpbWVyKHN0cnVjdCBpbl9tdWx0aSAqaW5tLCBjbw0KPiA+ PiAgew0KPiA+PiAgICAgICBpbnQgcmVwb3J0X3RpbWVyX2V4cGlyZWQ7DQo+ID4+DQo+ID4+IC0g ICAgIElOX01VTFRJX0xPQ0tfQVNTRVJUKCk7DQo+ID4+ICsgICAgIElOX01VTFRJX0xJU1RfTE9D S19BU1NFUlQoKTsNCj4gPj4gICAgICAgSUdNUF9MT0NLX0FTU0VSVCgpOw0KPiA+Pg0KPiA+PiAg ICAgICBpZiAoaW5tLT5pbm1fdGltZXIgPT0gMCkgew0KPiA+PiBAQCAtMTgwMiwxNCArMTc4Mywx NCBAQCBpZ21wX3YxdjJfcHJvY2Vzc19ncm91cF90aW1lcihzdHJ1Y3QgaW5fbXVsdGkgKmlubSwg Y28NCj4gPj4gICAqIE5vdGU6IFVubG9ja2VkIHJlYWQgZnJvbSBpZ2kuDQo+ID4+ICAgKi8NCj4g Pj4gIHN0YXRpYyB2b2lkDQo+ID4+IC1pZ21wX3YzX3Byb2Nlc3NfZ3JvdXBfdGltZXJzKHN0cnVj dCBpZ21wX2lmc29mdGMgKmlnaSwNCj4gPj4gK2lnbXBfdjNfcHJvY2Vzc19ncm91cF90aW1lcnMo c3RydWN0IGluX211bHRpX2hlYWQgKmlubWgsDQo+ID4+ICAgICAgc3RydWN0IG1idWZxICpxcnEs IHN0cnVjdCBtYnVmcSAqc2NxLA0KPiA+PiAgICAgIHN0cnVjdCBpbl9tdWx0aSAqaW5tLCBjb25z dCBpbnQgdXJpX2Zhc3RoeikNCj4gPj4gIHsNCj4gPj4gICAgICAgaW50IHF1ZXJ5X3Jlc3BvbnNl X3RpbWVyX2V4cGlyZWQ7DQo+ID4+ICAgICAgIGludCBzdGF0ZV9jaGFuZ2VfcmV0cmFuc21pdF90 aW1lcl9leHBpcmVkOw0KPiA+Pg0KPiA+PiAtICAgICBJTl9NVUxUSV9MT0NLX0FTU0VSVCgpOw0K PiA+PiArICAgICBJTl9NVUxUSV9MSVNUX0xPQ0tfQVNTRVJUKCk7DQo+ID4+ICAgICAgIElHTVBf TE9DS19BU1NFUlQoKTsNCj4gPj4NCj4gPj4gICAgICAgcXVlcnlfcmVzcG9uc2VfdGltZXJfZXhw aXJlZCA9IDA7DQo+ID4+IEBAIC0xOTA3LDggKzE4ODgsNyBAQCBpZ21wX3YzX3Byb2Nlc3NfZ3Jv dXBfdGltZXJzKHN0cnVjdCBpZ21wX2lmc29mdGMgKmlnaSwNCj4gPj4gICAgICAgICAgICAgICAg ICAgICAgIGlmIChpbm0tPmlubV9zdGF0ZSA9PSBJR01QX0xFQVZJTkdfTUVNQkVSICYmDQo+ID4+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5tLT5pbm1fc2NydiA9PSAwKSB7DQo+ID4+ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlubS0+aW5tX3N0YXRlID0gSUdNUF9OT1RfTUVN QkVSOw0KPiA+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTElTVF9JTlNFUlRfSEVB RCgmaWdpLT5pZ2lfcmVsaW5taGVhZCwNCj4gPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGlubSwgaW5tX25yZWxlKTsNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgaW5tX3JlbGVfbG9ja2VkKGlubWgsIGlubSk7DQo+ID4+ICAgICAgICAgICAgICAgICAgICAg ICB9DQo+ID4+ICAgICAgICAgICAgICAgfQ0KPiA+PiAgICAgICAgICAgICAgIGJyZWFrOw0KPiA+ PiBAQCAtMTkyOSw3ICsxOTA5LDcgQEAgc3RhdGljIHZvaWQNCj4gPj4gIGlnbXBfdjNfc3VwcHJl c3NfZ3JvdXBfcmVjb3JkKHN0cnVjdCBpbl9tdWx0aSAqaW5tKQ0KPiA+PiAgew0KPiA+Pg0KPiA+ PiAtICAgICBJTl9NVUxUSV9MT0NLX0FTU0VSVCgpOw0KPiA+PiArICAgICBJTl9NVUxUSV9MSVNU X0xPQ0tfQVNTRVJUKCk7DQo+ID4+DQo+ID4+ICAgICAgIEtBU1NFUlQoaW5tLT5pbm1faWdpLT5p Z2lfdmVyc2lvbiA9PSBJR01QX1ZFUlNJT05fMywNCj4gPj4gICAgICAgICAgICAgICAoIiVzOiBu b3QgSUdNUHYzIG1vZGUgb24gbGluayIsIF9fZnVuY19fKSk7DQo+ID4+IEBAIC0yMDAzLDEzICsx OTgzLDE1IEBAIGlnbXBfdjNfY2FuY2VsX2xpbmtfdGltZXJzKHN0cnVjdCBpZ21wX2lmc29mdGMg KmlnaSkNCj4gPj4gIHsNCj4gPj4gICAgICAgc3RydWN0IGlmbXVsdGlhZGRyICAgICAgKmlmbWE7 DQo+ID4+ICAgICAgIHN0cnVjdCBpZm5ldCAgICAgICAgICAgICppZnA7DQo+ID4+IC0gICAgIHN0 cnVjdCBpbl9tdWx0aSAgICAgICAgICppbm0sICp0aW5tOw0KPiA+PiArICAgICBzdHJ1Y3QgaW5f bXVsdGkgICAgICAgICAqaW5tOw0KPiA+PiArICAgICBzdHJ1Y3QgaW5fbXVsdGlfaGVhZCBpbm1f ZnJlZV90bXA7DQo+ID4+DQo+ID4+ICAgICAgIENUUjMoS1RSX0lHTVBWMywgIiVzOiBjYW5jZWwg djMgdGltZXJzIG9uIGlmcCAlcCglcykiLCBfX2Z1bmNfXywNCj4gPj4gICAgICAgICAgIGlnaS0+ aWdpX2lmcCwgaWdpLT5pZ2lfaWZwLT5pZl94bmFtZSk7DQo+ID4+DQo+ID4+IC0gICAgIElOX01V TFRJX0xPQ0tfQVNTRVJUKCk7DQo+ID4+ICsgICAgIElOX01VTFRJX0xJU1RfTE9DS19BU1NFUlQo KTsNCj4gPj4gICAgICAgSUdNUF9MT0NLX0FTU0VSVCgpOw0KPiA+PiArICAgICBTTElTVF9JTklU KCZpbm1fZnJlZV90bXApOw0KPiA+Pg0KPiA+PiAgICAgICAvKg0KPiA+PiAgICAgICAgKiBTdG9w IHRoZSB2MyBHZW5lcmFsIFF1ZXJ5IFJlc3BvbnNlIG9uIHRoaXMgbGluayBzdG9uZSBkZWFkLg0K PiA+PiBAQCAtMjA1MCw3ICsyMDMyLDcgQEAgaWdtcF92M19jYW5jZWxfbGlua190aW1lcnMoc3Ry dWN0IGlnbXBfaWZzb2Z0YyAqaWdpKQ0KPiA+PiAgICAgICAgICAgICAgICAgICAgICAgICogbWVz c2FnZSBpcyBzZW50IHVwc3RyZWFtIHRvIHRoZSBvbGQgcXVlcmllciAtLQ0KPiA+PiAgICAgICAg ICAgICAgICAgICAgICAgICogdHJhbnNpdGlvbiB0byBOT1Qgd291bGQgbG9zZSB0aGUgbGVhdmUg YW5kIHJhY2UuDQo+ID4+ICAgICAgICAgICAgICAgICAgICAgICAgKi8NCj4gPj4gLSAgICAgICAg ICAgICAgICAgICAgIFNMSVNUX0lOU0VSVF9IRUFEKCZpZ2ktPmlnaV9yZWxpbm1oZWFkLCBpbm0s IGlubV9ucmVsZSk7DQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICBpbm1fcmVsZV9sb2NrZWQo JmlubV9mcmVlX3RtcCwgaW5tKTsNCj4gPj4gICAgICAgICAgICAgICAgICAgICAgIC8qIEZBTExU SFJPVUdIICovDQo+ID4+ICAgICAgICAgICAgICAgY2FzZSBJR01QX0dfUVVFUllfUEVORElOR19N RU1CRVI6DQo+ID4+ICAgICAgICAgICAgICAgY2FzZSBJR01QX1NHX1FVRVJZX1BFTkRJTkdfTUVN QkVSOg0KPiA+PiBAQCAtMjA2OSwxMCArMjA1MSw4IEBAIGlnbXBfdjNfY2FuY2VsX2xpbmtfdGlt ZXJzKHN0cnVjdCBpZ21wX2lmc29mdGMgKmlnaSkNCj4gPj4gICAgICAgICAgICAgICBtYnVmcV9k cmFpbigmaW5tLT5pbm1fc2NxKTsNCj4gPj4gICAgICAgfQ0KPiA+PiAgICAgICBJRl9BRERSX1JV TkxPQ0soaWZwKTsNCj4gPj4gLSAgICAgU0xJU1RfRk9SRUFDSF9TQUZFKGlubSwgJmlnaS0+aWdp X3JlbGlubWhlYWQsIGlubV9ucmVsZSwgdGlubSkgew0KPiA+PiAtICAgICAgICAgICAgIFNMSVNU X1JFTU9WRV9IRUFEKCZpZ2ktPmlnaV9yZWxpbm1oZWFkLCBpbm1fbnJlbGUpOw0KPiA+PiAtICAg ICAgICAgICAgIGlubV9yZWxlYXNlX2xvY2tlZChpbm0pOw0KPiA+PiAtICAgICB9DQo+ID4+ICsN Cj4gPj4gKyAgICAgaW5tX3JlbGVhc2VfbGlzdF9kZWZlcnJlZCgmaW5tX2ZyZWVfdG1wKTsNCj4g Pj4gIH0NCj4gPj4NCj4gPj4gIC8qDQo+ID4+IEBAIC0yMTk5LDcgKzIxNzksNyBAQCBpZ21wX3Yx djJfcXVldWVfcmVwb3J0KHN0cnVjdCBpbl9tdWx0aSAqaW5tLCBjb25zdCBpbnQNCj4gPj4gICAg ICAgc3RydWN0IGlwICAgICAgICAgICAgICAgKmlwOw0KPiA+PiAgICAgICBzdHJ1Y3QgbWJ1ZiAg ICAgICAgICAgICAqbTsNCj4gPj4NCj4gPj4gLSAgICAgSU5fTVVMVElfTE9DS19BU1NFUlQoKTsN Cj4gPj4gKyAgICAgSU5fTVVMVElfTElTVF9MT0NLX0FTU0VSVCgpOw0KPiA+PiAgICAgICBJR01Q X0xPQ0tfQVNTRVJUKCk7DQo+ID4+DQo+ID4+ICAgICAgIGlmcCA9IGlubS0+aW5tX2lmcDsNCj4g Pj4gQEAgLTIyNzYsMTAgKzIyNTYsOCBAQCBpZ21wX2NoYW5nZV9zdGF0ZShzdHJ1Y3QgaW5fbXVs dGkgKmlubSkNCj4gPj4gICAgICAgc3RydWN0IGlmbmV0ICppZnA7DQo+ID4+ICAgICAgIGludCBl cnJvcjsNCj4gPj4NCj4gPj4gLSAgICAgSU5fTVVMVElfTE9DS19BU1NFUlQoKTsNCj4gPj4gLQ0K PiA+PiAgICAgICBlcnJvciA9IDA7DQo+ID4+IC0NCj4gPj4gKyAgICAgSU5fTVVMVElfTE9DS19B U1NFUlQoKTsNCj4gPj4gICAgICAgLyoNCj4gPj4gICAgICAgICogVHJ5IHRvIGRldGVjdCBpZiB0 aGUgdXBwZXIgbGF5ZXIganVzdCBhc2tlZCB1cyB0byBjaGFuZ2Ugc3RhdGUNCj4gPj4gICAgICAg ICogZm9yIGFuIGludGVyZmFjZSB3aGljaCBoYXMgbm93IGdvbmUgYXdheS4NCj4gPj4gQEAgLTIz NzksOSArMjM1NywxMCBAQCBpZ21wX2luaXRpYWxfam9pbihzdHJ1Y3QgaW5fbXVsdGkgKmlubSwg c3RydWN0IGlnbXBfaWYNCj4gPj4gICAgICAgICAgICAgICAgKiBncm91cCBhcm91bmQgZm9yIHRo ZSBmaW5hbCBJTkNMVURFIHt9IGVucXVldWUuDQo+ID4+ICAgICAgICAgICAgICAgICovDQo+ID4+ ICAgICAgICAgICAgICAgaWYgKGlnaS0+aWdpX3ZlcnNpb24gPT0gSUdNUF9WRVJTSU9OXzMgJiYN Cj4gPj4gLSAgICAgICAgICAgICAgICAgaW5tLT5pbm1fc3RhdGUgPT0gSUdNUF9MRUFWSU5HX01F TUJFUikNCj4gPj4gLSAgICAgICAgICAgICAgICAgICAgIGlubV9yZWxlYXNlX2xvY2tlZChpbm0p Ow0KPiA+PiAtDQo+ID4+ICsgICAgICAgICAgICAgICAgIGlubS0+aW5tX3N0YXRlID09IElHTVBf TEVBVklOR19NRU1CRVIpIHsNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgIE1QQVNTKGlubS0+ aW5tX3JlZmNvdW50ID4gMSk7DQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICBpbm1fcmVsZV9s b2NrZWQoTlVMTCwgaW5tKTsNCj4gPj4gKyAgICAgICAgICAgICB9DQo+ID4+ICAgICAgICAgICAg ICAgaW5tLT5pbm1fc3RhdGUgPSBJR01QX1JFUE9SVElOR19NRU1CRVI7DQo+ID4+DQo+ID4+ICAg ICAgICAgICAgICAgc3dpdGNoIChpZ2ktPmlnaV92ZXJzaW9uKSB7DQo+ID4+IEBAIC0yNDczLDcg KzI0NTIsNyBAQCBpZ21wX2hhbmRsZV9zdGF0ZV9jaGFuZ2Uoc3RydWN0IGluX211bHRpICppbm0s IHN0cnVjdA0KPiA+Pg0KPiA+PiAgICAgICBpZnAgPSBpbm0tPmlubV9pZnA7DQo+ID4+DQo+ID4+ IC0gICAgIElOX01VTFRJX0xPQ0tfQVNTRVJUKCk7DQo+ID4+ICsgICAgIElOX01VTFRJX0xJU1Rf TE9DS19BU1NFUlQoKTsNCj4gPj4gICAgICAgSUdNUF9MT0NLX0FTU0VSVCgpOw0KPiA+Pg0KPiA+ PiAgICAgICBLQVNTRVJUKGlnaSAmJiBpZ2ktPmlnaV9pZnAgPT0gaWZwLCAoIiVzOiBpbmNvbnNp c3RlbnQgaWZwIiwgX19mdW5jX18pKTsNCj4gPj4gQEAgLTI1MzEsNyArMjUxMCw3IEBAIGlnbXBf ZmluYWxfbGVhdmUoc3RydWN0IGluX211bHRpICppbm0sIHN0cnVjdCBpZ21wX2lmcw0KPiA+PiAg ICAgICAgICAgX19mdW5jX18sIG50b2hsKGlubS0+aW5tX2FkZHIuc19hZGRyKSwgaW5tLT5pbm1f aWZwLA0KPiA+PiAgICAgICAgICAgaW5tLT5pbm1faWZwLT5pZl94bmFtZSk7DQo+ID4+DQo+ID4+ IC0gICAgIElOX01VTFRJX0xPQ0tfQVNTRVJUKCk7DQo+ID4+ICsgICAgIElOX01VTFRJX0xJU1Rf TE9DS19BU1NFUlQoKTsNCj4gPj4gICAgICAgSUdNUF9MT0NLX0FTU0VSVCgpOw0KPiA+Pg0KPiA+ PiAgICAgICBzd2l0Y2ggKGlubS0+aW5tX3N0YXRlKSB7DQo+ID4+IEBAIC0yNjU4LDcgKzI2Mzcs NyBAQCBpZ21wX3YzX2VucXVldWVfZ3JvdXBfcmVjb3JkKHN0cnVjdCBtYnVmcSAqbXEsIHN0cnVj dA0KPiA+PiAgICAgICBpbl9hZGRyX3QgICAgICAgICAgICAgICAgbmFkZHI7DQo+ID4+ICAgICAg IHVpbnQ4X3QgICAgICAgICAgICAgICAgICBtb2RlOw0KPiA+Pg0KPiA+PiAtICAgICBJTl9NVUxU SV9MT0NLX0FTU0VSVCgpOw0KPiA+PiArICAgICBJTl9NVUxUSV9MSVNUX0xPQ0tfQVNTRVJUKCk7 DQo+ID4+DQo+ID4+ICAgICAgIGVycm9yID0gMDsNCj4gPj4gICAgICAgaWZwID0gaW5tLT5pbm1f aWZwOw0KPiA+PiBAQCAtMzAxOCw3ICsyOTk3LDcgQEAgaWdtcF92M19lbnF1ZXVlX2ZpbHRlcl9j aGFuZ2Uoc3RydWN0IG1idWZxICptcSwgc3RydWN0DQo+ID4+ICAgICAgIHVpbnQ4X3QgICAgICAg ICAgICAgICAgICBtb2RlLCBub3csIHRoZW47DQo+ID4+ICAgICAgIHJlY3R5cGVfdCAgICAgICAg ICAgICAgICBjcnQsIGRydCwgbnJ0Ow0KPiA+Pg0KPiA+PiAtICAgICBJTl9NVUxUSV9MT0NLX0FT U0VSVCgpOw0KPiA+PiArICAgICBJTl9NVUxUSV9MSVNUX0xPQ0tfQVNTRVJUKCk7DQo+ID4+DQo+ ID4+ICAgICAgIGlmIChpbm0tPmlubV9uc3JjID09IDAgfHwNCj4gPj4gICAgICAgICAgIChpbm0t PmlubV9zdFswXS5pc3NfYXNtID4gMCAmJiBpbm0tPmlubV9zdFsxXS5pc3NfYXNtID4gMCkpDQo+ ID4+IEBAIC0zMjIxLDcgKzMyMDAsNyBAQCBpZ21wX3YzX21lcmdlX3N0YXRlX2NoYW5nZXMoc3Ry dWN0IGluX211bHRpICppbm0sIHN0cnUNCj4gPj4gICAgICAgZG9tZXJnZSA9IDA7DQo+ID4+ICAg ICAgIHJlY3NsZW4gPSAwOw0KPiA+Pg0KPiA+PiAtICAgICBJTl9NVUxUSV9MT0NLX0FTU0VSVCgp Ow0KPiA+PiArICAgICBJTl9NVUxUSV9MSVNUX0xPQ0tfQVNTRVJUKCk7DQo+ID4+ICAgICAgIElH TVBfTE9DS19BU1NFUlQoKTsNCj4gPj4NCj4gPj4gICAgICAgLyoNCj4gPj4gQEAgLTMzMjAsNyAr MzI5OSw3IEBAIGlnbXBfdjNfZGlzcGF0Y2hfZ2VuZXJhbF9xdWVyeShzdHJ1Y3QgaWdtcF9pZnNv ZnRjICppZw0KPiA+PiAgICAgICBzdHJ1Y3QgaW5fbXVsdGkgICAgICAgICAqaW5tOw0KPiA+PiAg ICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgcmV0dmFsLCBsb29wOw0KPiA+Pg0KPiA+PiAt ICAgICBJTl9NVUxUSV9MT0NLX0FTU0VSVCgpOw0KPiA+PiArICAgICBJTl9NVUxUSV9MSVNUX0xP Q0tfQVNTRVJUKCk7DQo+ID4+ICAgICAgIElHTVBfTE9DS19BU1NFUlQoKTsNCj4gPj4NCj4gPj4g ICAgICAgS0FTU0VSVChpZ2ktPmlnaV92ZXJzaW9uID09IElHTVBfVkVSU0lPTl8zLA0KPiA+PiBA QCAtMzYzMiw3ICszNjExLDYgQEAgREJfU0hPV19DT01NQU5EKGlnaV9saXN0LCBkYl9zaG93X2ln aV9saXN0KQ0KPiA+PiAgICAgICAgICAgICAgIGRiX3ByaW50ZigiICAgIHFpICV1XG4iLCBpZ2kt PmlnaV9xaSk7DQo+ID4+ICAgICAgICAgICAgICAgZGJfcHJpbnRmKCIgICAgcXJpICV1XG4iLCBp Z2ktPmlnaV9xcmkpOw0KPiA+PiAgICAgICAgICAgICAgIGRiX3ByaW50ZigiICAgIHVyaSAldVxu IiwgaWdpLT5pZ2lfdXJpKTsNCj4gPj4gLSAgICAgICAgICAgICAvKiBTTElTVF9IRUFEKCxpbl9t dWx0aSkgICBpZ2lfcmVsaW5taGVhZCAqLw0KPiA+PiAgICAgICAgICAgICAgIC8qIHN0cnVjdCBt YnVmcSAgICBpZ2lfZ3E7ICovDQo+ID4+ICAgICAgICAgICAgICAgZGJfcHJpbnRmKCJcbiIpOw0K PiA+PiAgICAgICB9DQo+ID4+DQo+ID4+IE1vZGlmaWVkOiBoZWFkL3N5cy9uZXRpbmV0L2lnbXBf dmFyLmgNCj4gPj4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQo+ID4+IC0tLSBoZWFkL3N5cy9uZXRp bmV0L2lnbXBfdmFyLmggICAgICAgV2VkIE1heSAgMiAxNzo0MTowMCAyMDE4ICAgICAgICAocjMz MzE3NCkNCj4gPj4gKysrIGhlYWQvc3lzL25ldGluZXQvaWdtcF92YXIuaCAgICAgICBXZWQgTWF5 ICAyIDE5OjM2OjI5IDIwMTggICAgICAgIChyMzMzMTc1KQ0KPiA+PiBAQCAtMjE0LDcgKzIxNCw2 IEBAIHN0cnVjdCBpZ21wX2lmc29mdGMgew0KPiA+PiAgICAgICB1aW50MzJfdCBpZ2lfcWk7ICAg ICAgICAvKiBJR01QdjMgUXVlcnkgSW50ZXJ2YWwgKHMpICovDQo+ID4+ICAgICAgIHVpbnQzMl90 IGlnaV9xcmk7ICAgICAgIC8qIElHTVB2MyBRdWVyeSBSZXNwb25zZSBJbnRlcnZhbCAocykgKi8N Cj4gPj4gICAgICAgdWludDMyX3QgaWdpX3VyaTsgICAgICAgLyogSUdNUHYzIFVuc29saWNpdGVk IFJlcG9ydCBJbnRlcnZhbCAocykgKi8NCj4gPj4gLSAgICAgU0xJU1RfSEVBRCgsaW5fbXVsdGkp ICAgaWdpX3JlbGlubWhlYWQ7IC8qIHJlbGVhc2VkIGdyb3VwcyAqLw0KPiA+PiAgICAgICBzdHJ1 Y3QgbWJ1ZnEgICAgaWdpX2dxOyAgICAgICAgIC8qIGdlbmVyYWwgcXVlcnkgcmVzcG9uc2VzIHF1 ZXVlICovDQo+ID4+ICB9Ow0KPiA+Pg0KPiA+Pg0KPiA+PiBNb2RpZmllZDogaGVhZC9zeXMvbmV0 aW5ldC9pbi5jDQo+ID4+ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KPiA+PiAtLS0gaGVhZC9zeXMv bmV0aW5ldC9pbi5jICAgICBXZWQgTWF5ICAyIDE3OjQxOjAwIDIwMTggICAgICAgIChyMzMzMTc0 KQ0KPiA+PiArKysgaGVhZC9zeXMvbmV0aW5ldC9pbi5jICAgICBXZWQgTWF5ICAyIDE5OjM2OjI5 IDIwMTggICAgICAgIChyMzMzMTc1KQ0KPiA+PiBAQCAtNjMyLDEyICs2MzIsMTAgQEAgaW5fZGlm YWRkcl9pb2N0bCh1X2xvbmcgY21kLCBjYWRkcl90IGRhdGEsIHN0cnVjdCBpZm5lDQo+ID4+ICAg ICAgICAgICAgICAgc3RydWN0IGluX2lmaW5mbyAqaWk7DQo+ID4+DQo+ID4+ICAgICAgICAgICAg ICAgaWkgPSAoKHN0cnVjdCBpbl9pZmluZm8gKilpZnAtPmlmX2FmZGF0YVtBRl9JTkVUXSk7DQo+ ID4+IC0gICAgICAgICAgICAgSU5fTVVMVElfTE9DSygpOw0KPiA+PiAgICAgICAgICAgICAgIGlm IChpaS0+aWlfYWxsaG9zdHMpIHsNCj4gPj4gLSAgICAgICAgICAgICAgICAgICAgICh2b2lkKWlu X2xlYXZlZ3JvdXBfbG9ja2VkKGlpLT5paV9hbGxob3N0cywgTlVMTCk7DQo+ID4+ICsgICAgICAg ICAgICAgICAgICAgICAodm9pZClpbl9sZWF2ZWdyb3VwKGlpLT5paV9hbGxob3N0cywgTlVMTCk7 DQo+ID4+ICAgICAgICAgICAgICAgICAgICAgICBpaS0+aWlfYWxsaG9zdHMgPSBOVUxMOw0KPiA+ PiAgICAgICAgICAgICAgIH0NCj4gPj4gLSAgICAgICAgICAgICBJTl9NVUxUSV9VTkxPQ0soKTsN Cj4gPj4gICAgICAgfQ0KPiA+Pg0KPiA+PiAgICAgICBJRl9BRERSX1dMT0NLKGlmcCk7DQo+ID4+ IEBAIC05OTQsMTEgKzk5MiwxMiBAQCBpbl9icm9hZGNhc3Qoc3RydWN0IGluX2FkZHIgaW4sIHN0 cnVjdCBpZm5ldCAqaWZwKQ0KPiA+PiAgdm9pZA0KPiA+PiAgaW5faWZkZXRhY2goc3RydWN0IGlm bmV0ICppZnApDQo+ID4+ICB7DQo+ID4+IC0NCj4gPj4gKyAgICAgSU5fTVVMVElfTE9DSygpOw0K PiA+PiAgICAgICBpbl9wY2JwdXJnZWlmMCgmVl9yaXBjYmluZm8sIGlmcCk7DQo+ID4+ICAgICAg IGluX3BjYnB1cmdlaWYwKCZWX3VkYmluZm8sIGlmcCk7DQo+ID4+ICAgICAgIGluX3BjYnB1cmdl aWYwKCZWX3VsaXRlY2JpbmZvLCBpZnApOw0KPiA+PiAgICAgICBpbl9wdXJnZW1hZGRycyhpZnAp Ow0KPiA+PiArICAgICBJTl9NVUxUSV9VTkxPQ0soKTsNCj4gPj4gIH0NCj4gPj4NCj4gPj4gIC8q DQo+ID4+IEBAIC0xMDExLDEyICsxMDEwLDEyIEBAIGluX2lmZGV0YWNoKHN0cnVjdCBpZm5ldCAq aWZwKQ0KPiA+PiAgc3RhdGljIHZvaWQNCj4gPj4gIGluX3B1cmdlbWFkZHJzKHN0cnVjdCBpZm5l dCAqaWZwKQ0KPiA+PiAgew0KPiA+PiAtICAgICBMSVNUX0hFQUQoLGluX211bHRpKSBwdXJnZWlu bXM7DQo+ID4+IC0gICAgIHN0cnVjdCBpbl9tdWx0aSAgICAgICAgICppbm0sICp0aW5tOw0KPiA+ PiArICAgICBzdHJ1Y3QgaW5fbXVsdGlfaGVhZCBwdXJnZWlubXM7DQo+ID4+ICsgICAgIHN0cnVj dCBpbl9tdWx0aSAgICAgICAgICppbm07DQo+ID4+ICAgICAgIHN0cnVjdCBpZm11bHRpYWRkciAg ICAgICppZm1hOw0KPiA+Pg0KPiA+PiAtICAgICBMSVNUX0lOSVQoJnB1cmdlaW5tcyk7DQo+ID4+ IC0gICAgIElOX01VTFRJX0xPQ0soKTsNCj4gPj4gKyAgICAgU0xJU1RfSU5JVCgmcHVyZ2Vpbm1z KTsNCj4gPj4gKyAgICAgSU5fTVVMVElfTElTVF9MT0NLKCk7DQo+ID4+DQo+ID4+ICAgICAgIC8q DQo+ID4+ICAgICAgICAqIEV4dHJhY3QgbGlzdCBvZiBpbl9tdWx0aSBhc3NvY2lhdGVkIHdpdGgg dGhlIGRldGFjaGluZyBpZnANCj4gPj4gQEAgLTEwMzQsMTcgKzEwMzMsMTMgQEAgaW5fcHVyZ2Vt YWRkcnMoc3RydWN0IGlmbmV0ICppZnApDQo+ID4+ICAgICAgICAgICAgICAgICAgICgiJXM6IGlm bWFfcHJvdG9zcGVjIGlzIE5VTEwiLCBfX2Z1bmNfXykpOw0KPiA+PiAgI2VuZGlmDQo+ID4+ICAg ICAgICAgICAgICAgaW5tID0gKHN0cnVjdCBpbl9tdWx0aSAqKWlmbWEtPmlmbWFfcHJvdG9zcGVj Ow0KPiA+PiAtICAgICAgICAgICAgIExJU1RfSU5TRVJUX0hFQUQoJnB1cmdlaW5tcywgaW5tLCBp bm1fbGluayk7DQo+ID4+ICsgICAgICAgICAgICAgaW5tX3JlbGVfbG9ja2VkKCZwdXJnZWlubXMs IGlubSk7DQo+ID4+ICAgICAgIH0NCj4gPj4gICAgICAgSUZfQUREUl9SVU5MT0NLKGlmcCk7DQo+ ID4+DQo+ID4+IC0gICAgIExJU1RfRk9SRUFDSF9TQUZFKGlubSwgJnB1cmdlaW5tcywgaW5tX2xp bmssIHRpbm0pIHsNCj4gPj4gLSAgICAgICAgICAgICBMSVNUX1JFTU9WRShpbm0sIGlubV9saW5r KTsNCj4gPj4gLSAgICAgICAgICAgICBpbm1fcmVsZWFzZV9sb2NrZWQoaW5tKTsNCj4gPj4gLSAg ICAgfQ0KPiA+PiArICAgICBpbm1fcmVsZWFzZV9saXN0X2RlZmVycmVkKCZwdXJnZWlubXMpOw0K PiA+PiAgICAgICBpZ21wX2lmZGV0YWNoKGlmcCk7DQo+ID4+IC0NCj4gPj4gLSAgICAgSU5fTVVM VElfVU5MT0NLKCk7DQo+ID4+ICsgICAgIElOX01VTFRJX0xJU1RfVU5MT0NLKCk7DQo+ID4+ICB9 DQo+ID4+DQo+ID4+ICBzdHJ1Y3QgaW5fbGxlbnRyeSB7DQo+ID4+DQo+ID4+IE1vZGlmaWVkOiBo ZWFkL3N5cy9uZXRpbmV0L2luX21jYXN0LmMNCj4gPj4gPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQo+ ID4+IC0tLSBoZWFkL3N5cy9uZXRpbmV0L2luX21jYXN0LmMgICAgICAgV2VkIE1heSAgMiAxNzo0 MTowMCAyMDE4ICAgICAgICAocjMzMzE3NCkNCj4gPj4gKysrIGhlYWQvc3lzL25ldGluZXQvaW5f bWNhc3QuYyAgICAgICBXZWQgTWF5ICAyIDE5OjM2OjI5IDIwMTggICAgICAgIChyMzMzMTc1KQ0K PiA+PiBAQCAtNTEsNiArNTEsNyBAQCBfX0ZCU0RJRCgiJEZyZWVCU0QkIik7DQo+ID4+ICAjaW5j bHVkZSA8c3lzL3N5c2N0bC5oPg0KPiA+PiAgI2luY2x1ZGUgPHN5cy9rdHIuaD4NCj4gPj4gICNp bmNsdWRlIDxzeXMvdGFza3F1ZXVlLmg+DQo+ID4+ICsjaW5jbHVkZSA8c3lzL2d0YXNrcXVldWUu aD4NCj4gPj4gICNpbmNsdWRlIDxzeXMvdHJlZS5oPg0KPiA+Pg0KPiA+PiAgI2luY2x1ZGUgPG5l dC9pZi5oPg0KPiA+PiBAQCAtNTksNiArNjAsOCBAQCBfX0ZCU0RJRCgiJEZyZWVCU0QkIik7DQo+ ID4+ICAjaW5jbHVkZSA8bmV0L3JvdXRlLmg+DQo+ID4+ICAjaW5jbHVkZSA8bmV0L3ZuZXQuaD4N Cj4gPj4NCj4gPj4gKyNpbmNsdWRlIDxuZXQvZXRoZXJuZXQuaD4NCj4gPj4gKw0KPiA+PiAgI2lu Y2x1ZGUgPG5ldGluZXQvaW4uaD4NCj4gPj4gICNpbmNsdWRlIDxuZXRpbmV0L2luX3N5c3RtLmg+ DQo+ID4+ICAjaW5jbHVkZSA8bmV0aW5ldC9pbl9maWIuaD4NCj4gPj4gQEAgLTkxLDE4ICs5NCwy NCBAQCBzdGF0aWMgTUFMTE9DX0RFRklORShNX0lQTVNPVVJDRSwgImlwX21zb3VyY2UiLA0KPiA+ Pg0KPiA+PiAgLyoNCj4gPj4gICAqIExvY2tpbmc6DQo+ID4+IC0gKiAtIExvY2sgb3JkZXIgaXM6 IEdpYW50LCBJTlBfV0xPQ0ssIElOX01VTFRJX0xPQ0ssIElHTVBfTE9DSywgSUZfQUREUl9MT0NL Lg0KPiA+PiArICogLSBMb2NrIG9yZGVyIGlzOiBHaWFudCwgSU5QX1dMT0NLLCBJTl9NVUxUSV9M SVNUX0xPQ0ssIElHTVBfTE9DSywgSUZfQUREUl9MT0NLLg0KPiA+PiAgICogLSBUaGUgSUZfQURE Ul9MT0NLIGlzIGltcGxpY2l0bHkgdGFrZW4gYnkgaW5tX2xvb2t1cCgpIGVhcmxpZXIsIGhvd2V2 ZXINCj4gPj4gICAqICAgaXQgY2FuIGJlIHRha2VuIGJ5IGNvZGUgaW4gbmV0L2lmLmMgYWxzby4N Cj4gPj4gICAqIC0gaXBfbW9wdGlvbnMgYW5kIGluX21maWx0ZXIgYXJlIGNvdmVyZWQgYnkgdGhl IElOUF9XTE9DSy4NCj4gPj4gICAqDQo+ID4+IC0gKiBzdHJ1Y3QgaW5fbXVsdGkgaXMgY292ZXJl ZCBieSBJTl9NVUxUSV9MT0NLLiBUaGVyZSBpc24ndCBzdHJpY3RseQ0KPiA+PiArICogc3RydWN0 IGluX211bHRpIGlzIGNvdmVyZWQgYnkgSU5fTVVMVElfTElTVF9MT0NLLiBUaGVyZSBpc24ndCBz dHJpY3RseQ0KPiA+PiAgICogYW55IG5lZWQgZm9yIGluX211bHRpIGl0c2VsZiB0byBiZSB2aXJ0 dWFsaXplZCAtLSBpdCBpcyBib3VuZCB0byBhbiBpZnANCj4gPj4gICAqIGFueXdheSBubyBtYXR0 ZXIgd2hhdCBoYXBwZW5zLg0KPiA+PiAgICovDQo+ID4+IC1zdHJ1Y3QgbXR4IGluX211bHRpX210 eDsNCj4gPj4gLU1UWF9TWVNJTklUKGluX211bHRpX210eCwgJmluX211bHRpX210eCwgImluX211 bHRpX210eCIsIE1UWF9ERUYpOw0KPiA+PiArc3RydWN0IG10eCBpbl9tdWx0aV9saXN0X210eDsN Cj4gPj4gK01UWF9TWVNJTklUKGluX211bHRpX210eCwgJmluX211bHRpX2xpc3RfbXR4LCAiaW5f bXVsdGlfbGlzdF9tdHgiLCBNVFhfREVGKTsNCj4gPj4NCj4gPj4gK3N0cnVjdCBtdHggaW5fbXVs dGlfZnJlZV9tdHg7DQo+ID4+ICtNVFhfU1lTSU5JVChpbl9tdWx0aV9mcmVlX210eCwgJmluX211 bHRpX2ZyZWVfbXR4LCAiaW5fbXVsdGlfZnJlZV9tdHgiLCBNVFhfREVGKTsNCj4gPj4gKw0KPiA+ PiArc3RydWN0IHN4IGluX211bHRpX3N4Ow0KPiA+PiArU1hfU1lTSU5JVChpbl9tdWx0aV9zeCwg JmluX211bHRpX3N4LCAiaW5fbXVsdGlfc3giKTsNCj4gPj4gKw0KPiA+PiAgLyoNCj4gPj4gICAq IEZ1bmN0aW9ucyB3aXRoIG5vbi1zdGF0aWMgbGlua2FnZSBkZWZpbmVkIGluIHRoaXMgZmlsZSBz aG91bGQgYmUNCj4gPj4gICAqIGRlY2xhcmVkIGluIGluX3Zhci5oOg0KPiA+PiBAQCAtMTUxLDYg KzE2MCw3IEBAIHN0YXRpYyBpbnQgICAgICAgIGlubV9pc19pZnBfZGV0YWNoZWQoY29uc3Qgc3Ry dWN0IGluX211bHRpICoNCj4gPj4gIHN0YXRpYyBpbnQgICBpbm1fbWVyZ2Uoc3RydWN0IGluX211 bHRpICosIC8qY29uc3QqLyBzdHJ1Y3QgaW5fbWZpbHRlciAqKTsNCj4gPj4gIHN0YXRpYyB2b2lk ICBpbm1fcHVyZ2Uoc3RydWN0IGluX211bHRpICopOw0KPiA+PiAgc3RhdGljIHZvaWQgIGlubV9y ZWFwKHN0cnVjdCBpbl9tdWx0aSAqKTsNCj4gPj4gK3N0YXRpYyB2b2lkIGlubV9yZWxlYXNlKHN0 cnVjdCBpbl9tdWx0aSAqKTsNCj4gPj4gIHN0YXRpYyBzdHJ1Y3QgaXBfbW9wdGlvbnMgKg0KPiA+ PiAgICAgICAgICAgICAgIGlucF9maW5kbW9wdGlvbnMoc3RydWN0IGlucGNiICopOw0KPiA+PiAg c3RhdGljIHZvaWQgIGlucF9mcmVlbW9wdGlvbnNfaW50ZXJuYWwoc3RydWN0IGlwX21vcHRpb25z ICopOw0KPiA+PiBAQCAtMjE2LDYgKzIyNiw2NSBAQCBpbm1faXNfaWZwX2RldGFjaGVkKGNvbnN0 IHN0cnVjdCBpbl9tdWx0aSAqaW5tKQ0KPiA+PiAgfQ0KPiA+PiAgI2VuZGlmDQo+ID4+DQo+ID4+ ICtzdGF0aWMgc3RydWN0IGdyb3VwdGFzayBmcmVlX2d0YXNrOw0KPiA+PiArc3RhdGljIHN0cnVj dCBpbl9tdWx0aV9oZWFkIGlubV9mcmVlX2xpc3Q7DQo+ID4+ICtzdGF0aWMgdm9pZCBpbm1fcmVs ZWFzZV90YXNrKHZvaWQgKmFyZyBfX3VudXNlZCk7DQo+ID4+ICtzdGF0aWMgdm9pZCBpbm1faW5p dCh2b2lkKQ0KPiA+PiArew0KPiA+PiArICAgICBTTElTVF9JTklUKCZpbm1fZnJlZV9saXN0KTsN Cj4gPj4gKyAgICAgdGFza3Fncm91cF9jb25maWdfZ3Rhc2tfaW5pdChOVUxMLCAmZnJlZV9ndGFz aywgaW5tX3JlbGVhc2VfdGFzaywgImlubSByZWxlYXNlDQo+ID4+IHRhc2siKTsgK30NCj4gPj4g Kw0KPiA+PiArU1lTSU5JVChpbm1faW5pdCwgU0lfU1VCX1NNUCArIDEsIFNJX09SREVSX0ZJUlNU LA0KPiA+PiArICAgICBpbm1faW5pdCwgTlVMTCk7DQo+ID4+ICsNCj4gPj4gKw0KPiA+PiArdm9p ZA0KPiA+PiAraW5tX3JlbGVhc2VfbGlzdF9kZWZlcnJlZChzdHJ1Y3QgaW5fbXVsdGlfaGVhZCAq aW5taCkNCj4gPj4gK3sNCj4gPj4gKw0KPiA+PiArICAgICBpZiAoU0xJU1RfRU1QVFkoaW5taCkp DQo+ID4+ICsgICAgICAgICAgICAgcmV0dXJuOw0KPiA+PiArICAgICBtdHhfbG9jaygmaW5fbXVs dGlfZnJlZV9tdHgpOw0KPiA+PiArICAgICBTTElTVF9DT05DQVQoJmlubV9mcmVlX2xpc3QsIGlu bWgsIGluX211bHRpLCBpbm1fbnJlbGUpOw0KPiA+PiArICAgICBtdHhfdW5sb2NrKCZpbl9tdWx0 aV9mcmVlX210eCk7DQo+ID4+ICsgICAgIEdST1VQVEFTS19FTlFVRVVFKCZmcmVlX2d0YXNrKTsN Cj4gPj4gK30NCj4gPj4gKw0KPiA+PiArdm9pZA0KPiA+PiAraW5tX3JlbGVhc2VfZGVmZXJyZWQo c3RydWN0IGluX211bHRpICppbm0pDQo+ID4+ICt7DQo+ID4+ICsgICAgIHN0cnVjdCBpbl9tdWx0 aV9oZWFkIHRtcDsNCj4gPj4gKw0KPiA+PiArICAgICBJTl9NVUxUSV9MSVNUX0xPQ0tfQVNTRVJU KCk7DQo+ID4+ICsgICAgIE1QQVNTKGlubS0+aW5tX3JlZmNvdW50ID4gMCk7DQo+ID4+ICsgICAg IGlmICgtLWlubS0+aW5tX3JlZmNvdW50ID09IDApIHsNCj4gPj4gKyAgICAgICAgICAgICBTTElT VF9JTklUKCZ0bXApOw0KPiA+PiArICAgICAgICAgICAgIGlubS0+aW5tX2lmbWEtPmlmbWFfcHJv dG9zcGVjID0gTlVMTDsNCj4gPj4gKyAgICAgICAgICAgICBTTElTVF9JTlNFUlRfSEVBRCgmdG1w LCBpbm0sIGlubV9ucmVsZSk7DQo+ID4+ICsgICAgICAgICAgICAgaW5tX3JlbGVhc2VfbGlzdF9k ZWZlcnJlZCgmdG1wKTsNCj4gPj4gKyAgICAgfQ0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ICtzdGF0 aWMgdm9pZA0KPiA+PiAraW5tX3JlbGVhc2VfdGFzayh2b2lkICphcmcgX191bnVzZWQpDQo+ID4+ ICt7DQo+ID4+ICsgICAgIHN0cnVjdCBpbl9tdWx0aV9oZWFkIGlubV9mcmVlX3RtcDsNCj4gPj4g KyAgICAgc3RydWN0IGluX211bHRpICppbm0sICp0aW5tOw0KPiA+PiArDQo+ID4+ICsgICAgIFNM SVNUX0lOSVQoJmlubV9mcmVlX3RtcCk7DQo+ID4+ICsgICAgIG10eF9sb2NrKCZpbl9tdWx0aV9m cmVlX210eCk7DQo+ID4+ICsgICAgIFNMSVNUX0NPTkNBVCgmaW5tX2ZyZWVfdG1wLCAmaW5tX2Zy ZWVfbGlzdCwgaW5fbXVsdGksIGlubV9ucmVsZSk7DQo+ID4+ICsgICAgIG10eF91bmxvY2soJmlu X211bHRpX2ZyZWVfbXR4KTsNCj4gPj4gKyAgICAgSU5fTVVMVElfTE9DSygpOw0KPiA+PiArICAg ICBTTElTVF9GT1JFQUNIX1NBRkUoaW5tLCAmaW5tX2ZyZWVfdG1wLCBpbm1fbnJlbGUsIHRpbm0p IHsNCj4gPj4gKyAgICAgICAgICAgICBTTElTVF9SRU1PVkVfSEVBRCgmaW5tX2ZyZWVfdG1wLCBp bm1fbnJlbGUpOw0KPiA+PiArICAgICAgICAgICAgIE1QQVNTKGlubSk7DQo+ID4+ICsgICAgICAg ICAgICAgaW5tX3JlbGVhc2UoaW5tKTsNCj4gPj4gKyAgICAgfQ0KPiA+PiArICAgICBJTl9NVUxU SV9VTkxPQ0soKTsNCj4gPj4gK30NCj4gPj4gKw0KPiA+PiAgLyoNCj4gPj4gICAqIEluaXRpYWxp emUgYW4gaW5fbWZpbHRlciBzdHJ1Y3R1cmUgdG8gYSBrbm93biBzdGF0ZSBhdCB0MCwgdDENCj4g Pj4gICAqIHdpdGggYW4gZW1wdHkgc291cmNlIGZpbHRlciBsaXN0Lg0KPiA+PiBAQCAtMjMyLDcg KzMwMSw3IEBAIGltZl9pbml0KHN0cnVjdCBpbl9tZmlsdGVyICppbWYsIGNvbnN0IGludCBzdDAs IGNvbnN0DQo+ID4+ICAvKg0KPiA+PiAgICogRnVuY3Rpb24gZm9yIGxvb2tpbmcgdXAgYW4gaW5f bXVsdGkgcmVjb3JkIGZvciBhbiBJUHY0IG11bHRpY2FzdCBhZGRyZXNzDQo+ID4+ICAgKiBvbiBh IGdpdmVuIGludGVyZmFjZS4gaWZwIG11c3QgYmUgdmFsaWQuIElmIG5vIHJlY29yZCBmb3VuZCwg cmV0dXJuIE5VTEwuDQo+ID4+IC0gKiBUaGUgSU5fTVVMVElfTE9DSyBhbmQgSUZfQUREUl9MT0NL IG9uIGlmcCBtdXN0IGJlIGhlbGQuDQo+ID4+ICsgKiBUaGUgSU5fTVVMVElfTElTVF9MT0NLIGFu ZCBJRl9BRERSX0xPQ0sgb24gaWZwIG11c3QgYmUgaGVsZC4NCj4gPj4gICAqLw0KPiA+PiAgc3Ry dWN0IGluX211bHRpICoNCj4gPj4gIGlubV9sb29rdXBfbG9ja2VkKHN0cnVjdCBpZm5ldCAqaWZw LCBjb25zdCBzdHJ1Y3QgaW5fYWRkciBpbmEpDQo+ID4+IEBAIC0yNDAsNyArMzA5LDcgQEAgaW5t X2xvb2t1cF9sb2NrZWQoc3RydWN0IGlmbmV0ICppZnAsIGNvbnN0IHN0cnVjdCBpbl9hDQo+ID4+ ICAgICAgIHN0cnVjdCBpZm11bHRpYWRkciAqaWZtYTsNCj4gPj4gICAgICAgc3RydWN0IGluX211 bHRpICppbm07DQo+ID4+DQo+ID4+IC0gICAgIElOX01VTFRJX0xPQ0tfQVNTRVJUKCk7DQo+ID4+ ICsgICAgIElOX01VTFRJX0xJU1RfTE9DS19BU1NFUlQoKTsNCj4gPj4gICAgICAgSUZfQUREUl9M T0NLX0FTU0VSVChpZnApOw0KPiA+Pg0KPiA+PiAgICAgICBpbm0gPSBOVUxMOw0KPiA+PiBAQCAt MjY0LDcgKzMzMyw3IEBAIGlubV9sb29rdXAoc3RydWN0IGlmbmV0ICppZnAsIGNvbnN0IHN0cnVj dCBpbl9hZGRyIGluYQ0KPiA+PiAgew0KPiA+PiAgICAgICBzdHJ1Y3QgaW5fbXVsdGkgKmlubTsN Cj4gPj4NCj4gPj4gLSAgICAgSU5fTVVMVElfTE9DS19BU1NFUlQoKTsNCj4gPj4gKyAgICAgSU5f TVVMVElfTElTVF9MT0NLX0FTU0VSVCgpOw0KPiA+PiAgICAgICBJRl9BRERSX1JMT0NLKGlmcCk7 DQo+ID4+ICAgICAgIGlubSA9IGlubV9sb29rdXBfbG9ja2VkKGlmcCwgaW5hKTsNCj4gPj4gICAg ICAgSUZfQUREUl9SVU5MT0NLKGlmcCk7DQo+ID4+IEBAIC00NTEsNyArNTIwLDcgQEAgaW5fZ2V0 bXVsdGkoc3RydWN0IGlmbmV0ICppZnAsIGNvbnN0IHN0cnVjdCBpbl9hZGRyICpnDQo+ID4+ICAg ICAgIElOX01VTFRJX0xPQ0tfQVNTRVJUKCk7DQo+ID4+DQo+ID4+ICAgICAgIGlpID0gKHN0cnVj dCBpbl9pZmluZm8gKilpZnAtPmlmX2FmZGF0YVtBRl9JTkVUXTsNCj4gPj4gLQ0KPiA+PiArICAg ICBJTl9NVUxUSV9MSVNUX0xPQ0soKTsNCj4gPj4gICAgICAgaW5tID0gaW5tX2xvb2t1cChpZnAs ICpncm91cCk7DQo+ID4+ICAgICAgIGlmIChpbm0gIT0gTlVMTCkgew0KPiA+PiAgICAgICAgICAg ICAgIC8qDQo+ID4+IEBAIC00NjAsMTEgKzUyOSwxMyBAQCBpbl9nZXRtdWx0aShzdHJ1Y3QgaWZu ZXQgKmlmcCwgY29uc3Qgc3RydWN0IGluX2FkZHIgKmcNCj4gPj4gICAgICAgICAgICAgICAgKi8N Cj4gPj4gICAgICAgICAgICAgICBLQVNTRVJUKGlubS0+aW5tX3JlZmNvdW50ID49IDEsDQo+ID4+ ICAgICAgICAgICAgICAgICAgICgiJXM6IGJhZCByZWZjb3VudCAlZCIsIF9fZnVuY19fLCBpbm0t PmlubV9yZWZjb3VudCkpOw0KPiA+PiAtICAgICAgICAgICAgICsraW5tLT5pbm1fcmVmY291bnQ7 DQo+ID4+ICsgICAgICAgICAgICAgaW5tX2FjcXVpcmVfbG9ja2VkKGlubSk7DQo+ID4+ICAgICAg ICAgICAgICAgKnBpbm0gPSBpbm07DQo+ID4+IC0gICAgICAgICAgICAgcmV0dXJuICgwKTsNCj4g Pj4gICAgICAgfQ0KPiA+PiAtDQo+ID4+ICsgICAgIElOX01VTFRJX0xJU1RfVU5MT0NLKCk7DQo+ ID4+ICsgICAgIGlmIChpbm0gIT0gTlVMTCkNCj4gPj4gKyAgICAgICAgICAgICByZXR1cm4gKDAp Ow0KPiA+PiArDQo+ID4+ICAgICAgIG1lbXNldCgmZ3NpbiwgMCwgc2l6ZW9mKGdzaW4pKTsNCj4g Pj4gICAgICAgZ3Npbi5zaW5fZmFtaWx5ID0gQUZfSU5FVDsNCj4gPj4gICAgICAgZ3Npbi5zaW5f bGVuID0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbik7DQo+ID4+IEBAIC00NzksNiArNTUwLDcg QEAgaW5fZ2V0bXVsdGkoc3RydWN0IGlmbmV0ICppZnAsIGNvbnN0IHN0cnVjdCBpbl9hZGRyICpn DQo+ID4+ICAgICAgICAgICAgICAgcmV0dXJuIChlcnJvcik7DQo+ID4+DQo+ID4+ICAgICAgIC8q IFhYWCBpZm1hX3Byb3Rvc3BlYyBtdXN0IGJlIGNvdmVyZWQgYnkgSUZfQUREUl9MT0NLICovDQo+ ID4+ICsgICAgIElOX01VTFRJX0xJU1RfTE9DSygpOw0KPiA+PiAgICAgICBJRl9BRERSX1dMT0NL KGlmcCk7DQo+ID4+DQo+ID4+ICAgICAgIC8qDQo+ID4+IEBAIC01MDQsMTAgKzU3Niw5IEBAIGlu X2dldG11bHRpKHN0cnVjdCBpZm5ldCAqaWZwLCBjb25zdCBzdHJ1Y3QgaW5fYWRkciAqZw0KPiA+ PiAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZnVuY19fLCBpZm1hLCBpbm0sIGluZXRfbnRv YV9yKCpncm91cCwgYWRkcmJ1ZikpOw0KPiA+PiAgICAgICAgICAgICAgIH0NCj4gPj4gICNlbmRp Zg0KPiA+PiAtICAgICAgICAgICAgICsraW5tLT5pbm1fcmVmY291bnQ7DQo+ID4+ICsgICAgICAg ICAgICAgaW5tX2FjcXVpcmVfbG9ja2VkKGlubSk7DQo+ID4+ICAgICAgICAgICAgICAgKnBpbm0g PSBpbm07DQo+ID4+IC0gICAgICAgICAgICAgSUZfQUREUl9XVU5MT0NLKGlmcCk7DQo+ID4+IC0g ICAgICAgICAgICAgcmV0dXJuICgwKTsNCj4gPj4gKyAgICAgICAgICAgICBnb3RvIG91dF9sb2Nr ZWQ7DQo+ID4+ICAgICAgIH0NCj4gPj4NCj4gPj4gICAgICAgSUZfQUREUl9XTE9DS19BU1NFUlQo aWZwKTsNCj4gPj4gQEAgLTUyMiw2ICs1OTMsNyBAQCBpbl9nZXRtdWx0aShzdHJ1Y3QgaWZuZXQg KmlmcCwgY29uc3Qgc3RydWN0IGluX2FkZHIgKmcNCj4gPj4gICAgICAgaW5tID0gbWFsbG9jKHNp emVvZigqaW5tKSwgTV9JUE1BRERSLCBNX05PV0FJVCB8IE1fWkVSTyk7DQo+ID4+ICAgICAgIGlm IChpbm0gPT0gTlVMTCkgew0KPiA+PiAgICAgICAgICAgICAgIElGX0FERFJfV1VOTE9DSyhpZnAp Ow0KPiA+PiArICAgICAgICAgICAgIElOX01VTFRJX0xJU1RfVU5MT0NLKCk7DQo+ID4+ICAgICAg ICAgICAgICAgaWZfZGVsbXVsdGlfaWZtYShpZm1hKTsNCj4gPj4gICAgICAgICAgICAgICByZXR1 cm4gKEVOT01FTSk7DQo+ID4+ICAgICAgIH0NCj4gPj4gQEAgLTUzOSw4ICs2MTEsOSBAQCBpbl9n ZXRtdWx0aShzdHJ1Y3QgaWZuZXQgKmlmcCwgY29uc3Qgc3RydWN0IGluX2FkZHIgKmcNCj4gPj4g ICAgICAgaWZtYS0+aWZtYV9wcm90b3NwZWMgPSBpbm07DQo+ID4+DQo+ID4+ICAgICAgICpwaW5t ID0gaW5tOw0KPiA+PiAtDQo+ID4+ICsgb3V0X2xvY2tlZDoNCj4gPj4gICAgICAgSUZfQUREUl9X VU5MT0NLKGlmcCk7DQo+ID4+ICsgICAgIElOX01VTFRJX0xJU1RfVU5MT0NLKCk7DQo+ID4+ICAg ICAgIHJldHVybiAoMCk7DQo+ID4+ICB9DQo+ID4+DQo+ID4+IEBAIC01NTAsMzYgKzYyMywyOSBA QCBpbl9nZXRtdWx0aShzdHJ1Y3QgaWZuZXQgKmlmcCwgY29uc3Qgc3RydWN0IGluX2FkZHIgKmcN Cj4gPj4gICAqIElmIHRoZSByZWZjb3VudCBkcm9wcyB0byAwLCBmcmVlIHRoZSBpbl9tdWx0aSBy ZWNvcmQgYW5kDQo+ID4+ICAgKiBkZWxldGUgdGhlIHVuZGVybHlpbmcgbGluay1sYXllciBtZW1i ZXJzaGlwLg0KPiA+PiAgICovDQo+ID4+IC12b2lkDQo+ID4+IC1pbm1fcmVsZWFzZV9sb2NrZWQo c3RydWN0IGluX211bHRpICppbm0pDQo+ID4+ICtzdGF0aWMgdm9pZA0KPiA+PiAraW5tX3JlbGVh c2Uoc3RydWN0IGluX211bHRpICppbm0pDQo+ID4+ICB7DQo+ID4+ICAgICAgIHN0cnVjdCBpZm11 bHRpYWRkciAqaWZtYTsNCj4gPj4gKyAgICAgc3RydWN0IGlmbmV0ICppZnA7DQo+ID4+DQo+ID4+ IC0gICAgIElOX01VTFRJX0xPQ0tfQVNTRVJUKCk7DQo+ID4+IC0NCj4gPj4gICAgICAgQ1RSMihL VFJfSUdNUFYzLCAiJXM6IHJlZmNvdW50IGlzICVkIiwgX19mdW5jX18sIGlubS0+aW5tX3JlZmNv dW50KTsNCj4gPj4gLQ0KPiA+PiAtICAgICBpZiAoLS1pbm0tPmlubV9yZWZjb3VudCA+IDApIHsN Cj4gPj4gLSAgICAgICAgICAgICBDVFIyKEtUUl9JR01QVjMsICIlczogcmVmY291bnQgaXMgbm93 ICVkIiwgX19mdW5jX18sDQo+ID4+IC0gICAgICAgICAgICAgICAgIGlubS0+aW5tX3JlZmNvdW50 KTsNCj4gPj4gLSAgICAgICAgICAgICByZXR1cm47DQo+ID4+IC0gICAgIH0NCj4gPj4gLQ0KPiA+ PiArICAgICBNUEFTUyhpbm0tPmlubV9yZWZjb3VudCA9PSAwKTsNCj4gPj4gICAgICAgQ1RSMihL VFJfSUdNUFYzLCAiJXM6IGZyZWVpbmcgaW5tICVwIiwgX19mdW5jX18sIGlubSk7DQo+ID4+DQo+ ID4+ICAgICAgIGlmbWEgPSBpbm0tPmlubV9pZm1hOw0KPiA+PiArICAgICBpZnAgPSBpbm0tPmlu bV9pZnA7DQo+ID4+DQo+ID4+ICAgICAgIC8qIFhYWCB0aGlzIGFjY2VzcyBpcyBub3QgY292ZXJl ZCBieSBJRl9BRERSX0xPQ0sgKi8NCj4gPj4gICAgICAgQ1RSMihLVFJfSUdNUFYzLCAiJXM6IHB1 cmdpbmcgaWZtYSAlcCIsIF9fZnVuY19fLCBpZm1hKTsNCj4gPj4gLSAgICAgS0FTU0VSVChpZm1h LT5pZm1hX3Byb3Rvc3BlYyA9PSBpbm0sDQo+ID4+IC0gICAgICAgICAoIiVzOiBpZm1hX3Byb3Rv c3BlYyAhPSBpbm0iLCBfX2Z1bmNfXykpOw0KPiA+PiAtICAgICBpZm1hLT5pZm1hX3Byb3Rvc3Bl YyA9IE5VTEw7DQo+ID4+IC0NCj4gPj4gKyAgICAgaWYgKGlmcCkNCj4gPj4gKyAgICAgICAgICAg ICBDVVJWTkVUX1NFVChpZnAtPmlmX3ZuZXQpOw0KPiA+PiAgICAgICBpbm1fcHVyZ2UoaW5tKTsN Cj4gPj4gLQ0KPiA+PiAgICAgICBmcmVlKGlubSwgTV9JUE1BRERSKTsNCj4gPj4NCj4gPj4gICAg ICAgaWZfZGVsbXVsdGlfaWZtYShpZm1hKTsNCj4gPj4gKyAgICAgaWYgKGlmcCkNCj4gPj4gKyAg ICAgICAgICAgICBDVVJWTkVUX1JFU1RPUkUoKTsNCj4gPj4gIH0NCj4gPj4NCj4gPj4gIC8qDQo+ ID4+IEBAIC01OTIsNyArNjU4LDcgQEAgaW5tX2NsZWFyX3JlY29yZGVkKHN0cnVjdCBpbl9tdWx0 aSAqaW5tKQ0KPiA+PiAgew0KPiA+PiAgICAgICBzdHJ1Y3QgaXBfbXNvdXJjZSAgICAgICAqaW1z Ow0KPiA+Pg0KPiA+PiAtICAgICBJTl9NVUxUSV9MT0NLX0FTU0VSVCgpOw0KPiA+PiArICAgICBJ Tl9NVUxUSV9MSVNUX0xPQ0tfQVNTRVJUKCk7DQo+ID4+DQo+ID4+ICAgICAgIFJCX0ZPUkVBQ0go aW1zLCBpcF9tc291cmNlX3RyZWUsICZpbm0tPmlubV9zcmNzKSB7DQo+ID4+ICAgICAgICAgICAg ICAgaWYgKGltcy0+aW1zX3N0cCkgew0KPiA+PiBAQCAtNjMyLDcgKzY5OCw3IEBAIGlubV9yZWNv cmRfc291cmNlKHN0cnVjdCBpbl9tdWx0aSAqaW5tLCBjb25zdCBpbl9hZGRyXw0KPiA+PiAgICAg ICBzdHJ1Y3QgaXBfbXNvdXJjZSAgICAgICAgZmluZDsNCj4gPj4gICAgICAgc3RydWN0IGlwX21z b3VyY2UgICAgICAgKmltcywgKm5pbXM7DQo+ID4+DQo+ID4+IC0gICAgIElOX01VTFRJX0xPQ0tf QVNTRVJUKCk7DQo+ID4+ICsgICAgIElOX01VTFRJX0xJU1RfTE9DS19BU1NFUlQoKTsNCj4gPj4N Cj4gPj4gICAgICAgZmluZC5pbXNfaGFkZHIgPSBudG9obChuYWRkcik7DQo+ID4+ICAgICAgIGlt cyA9IFJCX0ZJTkQoaXBfbXNvdXJjZV90cmVlLCAmaW5tLT5pbm1fc3JjcywgJmZpbmQpOw0KPiA+ PiBAQCAtOTU5LDYgKzEwMjUsNyBAQCBpbm1fbWVyZ2Uoc3RydWN0IGluX211bHRpICppbm0sIC8q Y29uc3QqLyBzdHJ1Y3QgaW5fbWYNCj4gPj4gICAgICAgc2NoYW5nZWQgPSAwOw0KPiA+PiAgICAg ICBlcnJvciA9IDA7DQo+ID4+ICAgICAgIG5zcmMxID0gbnNyYzAgPSAwOw0KPiA+PiArICAgICBJ Tl9NVUxUSV9MSVNUX0xPQ0tfQVNTRVJUKCk7DQo+ID4+DQo+ID4+ICAgICAgIC8qDQo+ID4+ICAg ICAgICAqIFVwZGF0ZSB0aGUgc291cmNlIGZpbHRlcnMgZmlyc3QsIGFzIHRoaXMgbWF5IGZhaWwu DQo+ID4+IEBAIC0xMTY1LDYgKzEyMzIsNyBAQCBpbl9qb2luZ3JvdXBfbG9ja2VkKHN0cnVjdCBp Zm5ldCAqaWZwLCBjb25zdCBzdHJ1Y3QgaW4NCj4gPj4gICAgICAgaW50ICAgICAgICAgICAgICAg ICAgICAgIGVycm9yOw0KPiA+Pg0KPiA+PiAgICAgICBJTl9NVUxUSV9MT0NLX0FTU0VSVCgpOw0K PiA+PiArICAgICBJTl9NVUxUSV9MSVNUX1VOTE9DS19BU1NFUlQoKTsNCj4gPj4NCj4gPj4gICAg ICAgQ1RSNChLVFJfSUdNUFYzLCAiJXM6IGpvaW4gMHglMDh4IG9uICVwKCVzKSkiLCBfX2Z1bmNf XywNCj4gPj4gICAgICAgICAgIG50b2hsKGdpbmEtPnNfYWRkciksIGlmcCwgaWZwLT5pZl94bmFt ZSk7DQo+ID4+IEBAIC0xMTg2LDcgKzEyNTQsNyBAQCBpbl9qb2luZ3JvdXBfbG9ja2VkKHN0cnVj dCBpZm5ldCAqaWZwLCBjb25zdCBzdHJ1Y3QgaW4NCj4gPj4gICAgICAgICAgICAgICBDVFIxKEtU Ul9JR01QVjMsICIlczogaW5fZ2V0bXVsdGkoKSBmYWlsdXJlIiwgX19mdW5jX18pOw0KPiA+PiAg ICAgICAgICAgICAgIHJldHVybiAoZXJyb3IpOw0KPiA+PiAgICAgICB9DQo+ID4+IC0NCj4gPj4g KyAgICAgSU5fTVVMVElfTElTVF9MT0NLKCk7DQo+ID4+ICAgICAgIENUUjEoS1RSX0lHTVBWMywg IiVzOiBtZXJnZSBpbm0gc3RhdGUiLCBfX2Z1bmNfXyk7DQo+ID4+ICAgICAgIGVycm9yID0gaW5t X21lcmdlKGlubSwgaW1mKTsNCj4gPj4gICAgICAgaWYgKGVycm9yKSB7DQo+ID4+IEBAIC0xMjAx LDEwICsxMjY5LDEyIEBAIGluX2pvaW5ncm91cF9sb2NrZWQoc3RydWN0IGlmbmV0ICppZnAsIGNv bnN0IHN0cnVjdCBpbg0KPiA+PiAgICAgICAgICAgICAgIGdvdG8gb3V0X2lubV9yZWxlYXNlOw0K PiA+PiAgICAgICB9DQo+ID4+DQo+ID4+IC1vdXRfaW5tX3JlbGVhc2U6DQo+ID4+ICsgb3V0X2lu bV9yZWxlYXNlOg0KPiA+PiArICAgICBJTl9NVUxUSV9MSVNUX1VOTE9DSygpOw0KPiA+PiAgICAg ICBpZiAoZXJyb3IpIHsNCj4gPj4gKw0KPiA+PiAgICAgICAgICAgICAgIENUUjIoS1RSX0lHTVBW MywgIiVzOiBkcm9wcGluZyByZWYgb24gJXAiLCBfX2Z1bmNfXywgaW5tKTsNCj4gPj4gLSAgICAg ICAgICAgICBpbm1fcmVsZWFzZV9sb2NrZWQoaW5tKTsNCj4gPj4gKyAgICAgICAgICAgICBpbm1f cmVsZWFzZV9kZWZlcnJlZChpbm0pOw0KPiA+PiAgICAgICB9IGVsc2Ugew0KPiA+PiAgICAgICAg ICAgICAgICpwaW5tID0gaW5tOw0KPiA+PiAgICAgICB9DQo+ID4+IEBAIC0xMjQ5LDYgKzEzMTks NyBAQCBpbl9sZWF2ZWdyb3VwX2xvY2tlZChzdHJ1Y3QgaW5fbXVsdGkgKmlubSwgLypjb25zdCov IHMNCj4gPj4gICAgICAgZXJyb3IgPSAwOw0KPiA+Pg0KPiA+PiAgICAgICBJTl9NVUxUSV9MT0NL X0FTU0VSVCgpOw0KPiA+PiArICAgICBJTl9NVUxUSV9MSVNUX1VOTE9DS19BU1NFUlQoKTsNCj4g Pj4NCj4gPj4gICAgICAgQ1RSNShLVFJfSUdNUFYzLCAiJXM6IGxlYXZlIGlubSAlcCwgMHglMDh4 LyVzLCBpbWYgJXAiLCBfX2Z1bmNfXywNCj4gPj4gICAgICAgICAgIGlubSwgbnRvaGwoaW5tLT5p bm1fYWRkci5zX2FkZHIpLA0KPiA+PiBAQCAtMTI3MiwxOCArMTM0MywyMCBAQCBpbl9sZWF2ZWdy b3VwX2xvY2tlZChzdHJ1Y3QgaW5fbXVsdGkgKmlubSwgLypjb25zdCovIHMNCj4gPj4gICAgICAg ICogdGhlIHRyYW5zYWN0aW9uLCBpdCBNVVNUIE5PVCBmYWlsLg0KPiA+PiAgICAgICAgKi8NCj4g Pj4gICAgICAgQ1RSMShLVFJfSUdNUFYzLCAiJXM6IG1lcmdlIGlubSBzdGF0ZSIsIF9fZnVuY19f KTsNCj4gPj4gKyAgICAgSU5fTVVMVElfTElTVF9MT0NLKCk7DQo+ID4+ICAgICAgIGVycm9yID0g aW5tX21lcmdlKGlubSwgaW1mKTsNCj4gPj4gICAgICAgS0FTU0VSVChlcnJvciA9PSAwLCAoIiVz OiBmYWlsZWQgdG8gbWVyZ2UgaW5tIHN0YXRlIiwgX19mdW5jX18pKTsNCj4gPj4NCj4gPj4gICAg ICAgQ1RSMShLVFJfSUdNUFYzLCAiJXM6IGRvaW5nIGlnbXAgZG93bmNhbGwiLCBfX2Z1bmNfXyk7 DQo+ID4+ICAgICAgIENVUlZORVRfU0VUKGlubS0+aW5tX2lmcC0+aWZfdm5ldCk7DQo+ID4+ICAg ICAgIGVycm9yID0gaWdtcF9jaGFuZ2Vfc3RhdGUoaW5tKTsNCj4gPj4gKyAgICAgaW5tX3JlbGVh c2VfZGVmZXJyZWQoaW5tKTsNCj4gPj4gKyAgICAgSU5fTVVMVElfTElTVF9VTkxPQ0soKTsNCj4g Pj4gICAgICAgQ1VSVk5FVF9SRVNUT1JFKCk7DQo+ID4+ICAgICAgIGlmIChlcnJvcikNCj4gPj4g ICAgICAgICAgICAgICBDVFIxKEtUUl9JR01QVjMsICIlczogZmFpbGVkIGlnbXAgZG93bmNhbGwi LCBfX2Z1bmNfXyk7DQo+ID4+DQo+ID4+ICAgICAgIENUUjIoS1RSX0lHTVBWMywgIiVzOiBkcm9w cGluZyByZWYgb24gJXAiLCBfX2Z1bmNfXywgaW5tKTsNCj4gPj4gLSAgICAgaW5tX3JlbGVhc2Vf bG9ja2VkKGlubSk7DQo+ID4+DQo+ID4+ICAgICAgIHJldHVybiAoZXJyb3IpOw0KPiA+PiAgfQ0K PiA+PiBAQCAtMTMxNSwxOCArMTM4OCw2IEBAIGluX2FkZG11bHRpKHN0cnVjdCBpbl9hZGRyICph cCwgc3RydWN0IGlmbmV0ICppZnApDQo+ID4+ICB9DQo+ID4+DQo+ID4+ICAvKg0KPiA+PiAtICog TGVhdmUgYW4gSVB2NCBtdWx0aWNhc3QgZ3JvdXAsIGFzc3VtZWQgdG8gYmUgaW4gZXhjbHVzaXZl ICgqLEcpIG1vZGUuDQo+ID4+IC0gKiBUaGlzIEtQSSBpcyBmb3IgbGVnYWN5IGtlcm5lbCBjb25z dW1lcnMgb25seS4NCj4gPj4gLSAqLw0KPiA+Pg0KPiA+PiAqKiogRElGRiBPVVRQVVQgVFJVTkNB VEVEIEFUIDEwMDAgTElORVMgKioqDQo+ID4+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fDQo+ID4+IHN2bi1zcmMtaGVhZEBmcmVlYnNkLm9yZyBtYWlsaW5n IGxpc3QNCj4gPj4gaHR0cHM6Ly9saXN0cy5mcmVlYnNkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL3N2 bi1zcmMtaGVhZA0KPiA+PiBUbyB1bnN1YnNjcmliZSwgc2VuZCBhbnkgbWFpbCB0byAic3ZuLXNy Yy1oZWFkLXVuc3Vic2NyaWJlQGZyZWVic2Qub3JnIiAgDQo+ID4NCj4gPg0KPiA+IEFmdGVyIChh cm91bmQhKSB0aGlzIHVwZGF0ZSwgc29tZSBib3hlcyB3aXRoIGkzNTAgZHVhbCBwb3J0IE5JQ3Mg aW1tZWRpYXRlbHkgY3Jhc2gNCj4gPiB3aXRoIEZhdGFsIHRyYXAgMTI6IHBhZ2UgZmF1bHQgYW5k IHNvbWV0aGluZyB3aXRoDQo+ID4NCj4gPiBjdXJyZW50IHByb2Nlc3M6IChpc2Mtd29ya2VyMDAw NikNCj4gPg0KPiA+IC4uLi4NCj4gPg0KPiA+IFRob3NlIGJveGVzIGRvIG5vdCBoYXZlIGRlYnVn Z2luZyBrZXJuZWwuIFRoZSBzeW1wdG9tYnMgYXJlIHRoZSBzYW1lLiBTaW5nbGUgdXNlcg0KPiA+ IGtlcm5lbCB3b3JrcywgYnV0IHRoZSBtb21lbnQgSSBwZXJmb3JtIC9ldGMvbmV0c3RhcnQgYW5k IGFueSBraW5kIG9mIG5ldCB0cmFmZmljDQo+ID4gZXN0YWJsaXNoZXMsIHRoaXMgY3JhcCBiYWls cyBvdXQuDQo+ID4NCj4gPg0KPiA+IC0gLS0NCj4gPiBPLiBIYXJ0bWFubg0KPiA+DQo+ID4gSWNo IHdpZGVyc3ByZWNoZSBkZXIgTnV0enVuZyBvZGVyIMOcYmVybWl0dGx1bmcgbWVpbmVyIERhdGVu IGbDvHINCj4gPiBXZXJiZXp3ZWNrZSBvZGVyIGbDvHIgZGllIE1hcmt0LSBvZGVyIE1laW51bmdz Zm9yc2NodW5nICjCpyAyOCBBYnMuIDQgQkRTRykuDQo+ID4gLS0tLS1CRUdJTiBQR1AgU0lHTkFU VVJFLS0tLS0NCj4gPg0KPiA+IGlMVUVBUk1LQUIwV0lRUVpWWk16QXR3QzJULzg2VHJTNTI4ZnlG aFlsQVVDV3V0anRnQUtDUkRTNTI4ZnlGaFkNCj4gPiBsQWt6QWY5UGhhRlR3TmhRRDJ6Rjd4U0hK Mndmdkx0b1VFalpsekdzdXNBQ3AxcGE3SkFmejBQeXYrbG0rWE5KDQo+ID4gdkxFbHJJZjFDbUR6 dUE4eWJsWi94L3dPVlNKa0FmOUMrNTBEVkV0R3E1SC9iSFNETnd6bXFyajhZZ0I3WHBTcw0KPiA+ IFBNUlhjK0l3SWExSmdpMnlNKzZUQ1NOU3MxTjViRVVoVTlCaThlWHk2WTBGU2tBWmVWK3MNCj4g PiA9UzBiQw0KPiA+IC0tLS0tRU5EIFBHUCBTSUdOQVRVUkUtLS0tLQ0KPiA+IF9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQo+ID4gc3ZuLXNyYy1oZWFkQGZy ZWVic2Qub3JnIG1haWxpbmcgbGlzdA0KPiA+IGh0dHBzOi8vbGlzdHMuZnJlZWJzZC5vcmcvbWFp bG1hbi9saXN0aW5mby9zdm4tc3JjLWhlYWQNCj4gPiBUbyB1bnN1YnNjcmliZSwgc2VuZCBhbnkg bWFpbCB0byAic3ZuLXNyYy1oZWFkLXVuc3Vic2NyaWJlQGZyZWVic2Qub3JnIiAgDQoNCg0KDQot IC0tIA0KTy4gSGFydG1hbm4NCg0KSWNoIHdpZGVyc3ByZWNoZSBkZXIgTnV0enVuZyBvZGVyIMOc YmVybWl0dGx1bmcgbWVpbmVyIERhdGVuIGbDvHINCldlcmJlendlY2tlIG9kZXIgZsO8ciBkaWUg TWFya3QtIG9kZXIgTWVpbnVuZ3Nmb3JzY2h1bmcgKMKnIDI4IEFicy4gNCBCRFNHKS4NCi0tLS0t QkVHSU4gUEdQIFNJR05BVFVSRS0tLS0tDQoNCmlMVUVBUk1LQUIwV0lRUVpWWk16QXR3QzJULzg2 VHJTNTI4ZnlGaFlsQVVDV3V0djh3QUtDUkRTNTI4ZnlGaFkNCmxJZTFBZndPQ0FpZ3BYYXdaN0tB akxOcFdqUlQ0RHNyemZxY0M1N01vemlWUXlLK1g5cW9RQTJ2MHBsVk5wUDANCkZMcWg1ZGtSWGlp T0xyeXI5YXVJTFVLeUxDTnlBZndMN2NGZTFZUlg3Vm5zSzV3Ly84WG0yNXRKNzRDWEM4UDANCmdh b1NxdkRxQ0tXVGo2aU4rUS9Qam9Ob2hXb0lLNzZ0aVpBV1Bqa2FIZXVGYnlwUGEyRysNCj1FcEph DQotLS0tLUVORCBQR1AgU0lHTkFUVVJFLS0tLS0NCg==
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20180503222419.4228e8e8>