From mboxrd@z Thu Jan 1 00:00:00 1970 From: George Dunlap Subject: Re: [PATCH v2 1/3] x86: remove PVHv1 code Date: Wed, 1 Mar 2017 12:35:34 +0000 Message-ID: References: <20170228173941.69473-1-roger.pau@citrix.com> <20170228173941.69473-2-roger.pau@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cj3Uw-0001mv-0X for xen-devel@lists.xenproject.org; Wed, 01 Mar 2017 12:36:50 +0000 In-Reply-To: <20170228173941.69473-2-roger.pau@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Roger Pau Monne , xen-devel@lists.xenproject.org Cc: Elena Ufimtseva , Kevin Tian , Tamas K Lengyel , Wei Liu , Jun Nakajima , Razvan Cojocaru , George Dunlap , Andrew Cooper , Ian Jackson , Paul Durrant , Jan Beulich List-Id: xen-devel@lists.xenproject.org T24gMjgvMDIvMTcgMTc6MzksIFJvZ2VyIFBhdSBNb25uZSB3cm90ZToKPiBUaGlzIHJlbW92YWwg YXBwbGllcyB0byBib3RoIHRoZSBoeXBlcnZpc29yIGFuZCB0aGUgdG9vbHN0YWNrIHNpZGUgb2Yg UFZIdjEuCj4gCj4gTm90ZSB0aGF0IG9uIHRoZSB0b29sc3RhY2sgc2lkZSB0aGVyZSdzIG9uZSBo aWNjdXA6IG9uIHhsIHRoZSAicHZoIgo+IGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIHRyYW5zbGF0 ZWQgdG8gYnVpbGRlcj0iaHZtIiwKPiBkZXZpY2VfbW9kZWxfdmVyc2lvbj0ibm9uZSIuICBUaGlz IGlzIGRvbmUgYmVjYXVzZSBvdGhlcndpc2UgeGwgd291bGQgc3RhcnQKPiBwYXJzaW5nIFBWIGxp a2Ugb3B0aW9ucywgYW5kIGZpbGxpbmcgdGhlIFBWIHN0cnVjdCBhdCBsaWJ4bF9kb21haW5fYnVp bGRfaW5mbwo+ICh3aGljaCBpbiB0dXJuIHBvbGx1dGVzIHRoZSBIVk0gb25lIGJlY2F1c2UgaXQn cyBhIHVuaW9uKS4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBSb2dlciBQYXUgTW9ubsOpIDxyb2dlci5w YXVAY2l0cml4LmNvbT4KCk1NIGJpdHM6CgpBY2tlZC1ieTogR2VvcmdlIER1bmxhcCA8Z2Vvcmdl LmR1bmxhcEBjaXRyaXguY29tPgoKPiAtLS0KPiBDaGFuZ2VzIHNpbmNlIHYxOgo+ICAtIFJlbW92 ZSBkb20wcHZoIG9wdGlvbiBmcm9tIHRoZSBjb21tYW5kIGxpbmUgZG9jcy4KPiAgLSBCdW1wIGRv bWN0bCBpbnRlcmZhY2UgdmVyc2lvbiBkdWUgdG8gdGhlIHJlbW92ZWQgQ0RGIGZsYWcuCj4gCj4g LS0tCj4gQ2M6IElhbiBKYWNrc29uIDxpYW4uamFja3NvbkBldS5jaXRyaXguY29tPgo+IENjOiBX ZWkgTGl1IDx3ZWkubGl1MkBjaXRyaXguY29tPgo+IENjOiBFbGVuYSBVZmltdHNldmEgPGVsZW5h LnVmaW10c2V2YUBvcmFjbGUuY29tPgo+IENjOiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5j b20+Cj4gQ2M6IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+Cj4gQ2M6 IFBhdWwgRHVycmFudCA8cGF1bC5kdXJyYW50QGNpdHJpeC5jb20+Cj4gQ2M6IEp1biBOYWthamlt YSA8anVuLm5ha2FqaW1hQGludGVsLmNvbT4KPiBDYzogS2V2aW4gVGlhbiA8a2V2aW4udGlhbkBp bnRlbC5jb20+Cj4gQ2M6IEdlb3JnZSBEdW5sYXAgPGdlb3JnZS5kdW5sYXBAZXUuY2l0cml4LmNv bT4KPiBDYzogUmF6dmFuIENvam9jYXJ1IDxyY29qb2NhcnVAYml0ZGVmZW5kZXIuY29tPgo+IENj OiBUYW1hcyBLIExlbmd5ZWwgPHRhbWFzQHRrbGVuZ3llbC5jb20+Cj4gLS0tCj4gIGRvY3MvbWFu L3hsLmNmZy5wb2QuNS5pbiAgICAgICAgICAgIHwgIDEwICstCj4gIGRvY3MvbWlzYy9wdmgtcmVh ZG1lLnR4dCAgICAgICAgICAgIHwgIDYzIC0tLS0tLS0tCj4gIGRvY3MvbWlzYy94ZW4tY29tbWFu ZC1saW5lLm1hcmtkb3duIHwgICA3IC0KPiAgdG9vbHMvZGVidWdnZXIvZ2Ric3gveGcveGdfbWFp bi5jICAgfCAgIDQgKy0KPiAgdG9vbHMvbGlieGMvaW5jbHVkZS94Y19kb20uaCAgICAgICAgfCAg IDEgLQo+ICB0b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmwuaCAgICAgICB8ICAgMiArLQo+ICB0 b29scy9saWJ4Yy94Y19jcHVpZF94ODYuYyAgICAgICAgICB8ICAxMyArLQo+ICB0b29scy9saWJ4 Yy94Y19kb21fY29yZS5jICAgICAgICAgICB8ICAgOSAtLQo+ICB0b29scy9saWJ4Yy94Y19kb21f eDg2LmMgICAgICAgICAgICB8ICA0OSArKystLS0KPiAgdG9vbHMvbGlieGMveGNfZG9tYWluLmMg ICAgICAgICAgICAgfCAgIDEgLQo+ICB0b29scy9saWJ4bC9saWJ4bF9jcmVhdGUuYyAgICAgICAg ICB8ICAzMSArKy0tCj4gIHRvb2xzL2xpYnhsL2xpYnhsX2RvbS5jICAgICAgICAgICAgIHwgICAx IC0KPiAgdG9vbHMvbGlieGwvbGlieGxfaW50ZXJuYWwuaCAgICAgICAgfCAgIDEgLQo+ICB0b29s cy9saWJ4bC9saWJ4bF94ODYuYyAgICAgICAgICAgICB8ICAgNyArLQo+ICB0b29scy94bC94bF9w YXJzZS5jICAgICAgICAgICAgICAgICB8ICAxMCArLQo+ICB4ZW4vYXJjaC94ODYvY3B1L3ZwbXUu YyAgICAgICAgICAgICB8ICAgMyArLQo+ICB4ZW4vYXJjaC94ODYvZG9tYWluLmMgICAgICAgICAg ICAgICB8ICA0MiArLS0tLS0KPiAgeGVuL2FyY2gveDg2L2RvbWFpbl9idWlsZC5jICAgICAgICAg fCAyODcgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gIHhlbi9hcmNoL3g4 Ni9kb21jdGwuYyAgICAgICAgICAgICAgIHwgICA3ICstCj4gIHhlbi9hcmNoL3g4Ni9odm0vaHZt LmMgICAgICAgICAgICAgIHwgIDgxICstLS0tLS0tLS0KPiAgeGVuL2FyY2gveDg2L2h2bS9oeXBl cmNhbGwuYyAgICAgICAgfCAgIDQgKy0KPiAgeGVuL2FyY2gveDg2L2h2bS9pby5jICAgICAgICAg ICAgICAgfCAgIDIgLQo+ICB4ZW4vYXJjaC94ODYvaHZtL2lvcmVxLmMgICAgICAgICAgICB8ICAg MyArLQo+ICB4ZW4vYXJjaC94ODYvaHZtL2lycS5jICAgICAgICAgICAgICB8ICAgMyAtCj4gIHhl bi9hcmNoL3g4Ni9odm0vdm14L3ZtY3MuYyAgICAgICAgIHwgIDM1ICstLS0tCj4gIHhlbi9hcmNo L3g4Ni9odm0vdm14L3ZteC5jICAgICAgICAgIHwgIDEyICstCj4gIHhlbi9hcmNoL3g4Ni9tbS5j ICAgICAgICAgICAgICAgICAgIHwgICAyICstCj4gIHhlbi9hcmNoL3g4Ni9tbS9wMm0tcHQuYyAg ICAgICAgICAgIHwgICAyICstCj4gIHhlbi9hcmNoL3g4Ni9tbS9wMm0uYyAgICAgICAgICAgICAg IHwgICA2ICstCj4gIHhlbi9hcmNoL3g4Ni9waHlzZGV2LmMgICAgICAgICAgICAgIHwgICA4IC0K PiAgeGVuL2FyY2gveDg2L3NldHVwLmMgICAgICAgICAgICAgICAgfCAgIDcgLQo+ICB4ZW4vYXJj aC94ODYvdGltZS5jICAgICAgICAgICAgICAgICB8ICAyNyAtLS0tCj4gIHhlbi9jb21tb24vZG9t YWluLmMgICAgICAgICAgICAgICAgIHwgICAyIC0KPiAgeGVuL2NvbW1vbi9kb21jdGwuYyAgICAg ICAgICAgICAgICAgfCAgMTAgLS0KPiAgeGVuL2NvbW1vbi9rZXJuZWwuYyAgICAgICAgICAgICAg ICAgfCAgIDUgLQo+ICB4ZW4vY29tbW9uL3ZtX2V2ZW50LmMgICAgICAgICAgICAgICB8ICAgOCAr LQo+ICB4ZW4vaW5jbHVkZS9hc20teDg2L2RvbWFpbi5oICAgICAgICB8ICAgMSAtCj4gIHhlbi9p bmNsdWRlL2FzbS14ODYvaHZtL2h2bS5oICAgICAgIHwgICAzIC0KPiAgeGVuL2luY2x1ZGUvcHVi bGljL2RvbWN0bC5oICAgICAgICAgfCAgMTQgKy0KPiAgeGVuL2luY2x1ZGUveGVuL3NjaGVkLmgg ICAgICAgICAgICAgfCAgIDkgKy0KPiAgNDAgZmlsZXMgY2hhbmdlZCwgOTYgaW5zZXJ0aW9ucygr KSwgNjk2IGRlbGV0aW9ucygtKQo+ICBkZWxldGUgbW9kZSAxMDA2NDQgZG9jcy9taXNjL3B2aC1y ZWFkbWUudHh0Cj4gCj4gZGlmZiAtLWdpdCBhL2RvY3MvbWFuL3hsLmNmZy5wb2QuNS5pbiBiL2Rv Y3MvbWFuL3hsLmNmZy5wb2QuNS5pbgo+IGluZGV4IDUwNWMxMTEuLmRhMWZkZDcgMTAwNjQ0Cj4g LS0tIGEvZG9jcy9tYW4veGwuY2ZnLnBvZC41LmluCj4gKysrIGIvZG9jcy9tYW4veGwuY2ZnLnBv ZC41LmluCj4gQEAgLTEwNjQsNiArMTA2NCwxMiBAQCBGSUZPLWJhc2VkIGV2ZW50IGNoYW5uZWwg QUJJIHN1cHBvcnQgdXAgdG8gMTMxLDA3MSBldmVudCBjaGFubmVscy4KPiAgT3RoZXIgZ3Vlc3Rz IGFyZSBsaW1pdGVkIHRvIDQwOTUgKDY0LWJpdCB4ODYgYW5kIEFSTSkgb3IgMTAyMyAoMzItYml0 Cj4gIHg4NikuCj4gIAo+ICs9aXRlbSBCPHB2aD1CT09MRUFOPgo+ICsKPiArU2VsZWN0cyB3aGV0 aGVyIHRvIHJ1biB0aGlzIFBWIGd1ZXN0IGluIGFuIEhWTSBjb250YWluZXIuIERlZmF1bHQgaXMg MC4KPiArTm90ZSB0aGF0IHRoaXMgb3B0aW9uIGlzIGVxdWl2YWxlbnQgdG8gc2V0dGluZyBidWls ZGVyPSJodm0iIGFuZAo+ICtkZXZpY2VfbW9kZWxfdmVyc2lvbj0ibm9uZSIKPiArCj4gID1iYWNr Cj4gIAo+ICA9aGVhZDIgUGFyYXZpcnR1YWxpc2VkIChQVikgR3Vlc3QgU3BlY2lmaWMgT3B0aW9u cwo+IEBAIC0xMTA4LDEwICsxMTE0LDYgQEAgaWYgeW91ciBwYXJ0aWN1bGFyIGd1ZXN0IGtlcm5l bCBkb2VzIG5vdCByZXF1aXJlIHRoaXMgYmVoYXZpb3VyIHRoZW4KPiAgaXQgaXMgc2FmZSB0byBh bGxvdyB0aGlzIHRvIGJlIGVuYWJsZWQgYnV0IHlvdSBtYXkgd2lzaCB0byBkaXNhYmxlIGl0Cj4g IGFueXdheS4KPiAgCj4gLT1pdGVtIEI8cHZoPUJPT0xFQU4+Cj4gLQo+IC1TZWxlY3RzIHdoZXRo ZXIgdG8gcnVuIHRoaXMgUFYgZ3Vlc3QgaW4gYW4gSFZNIGNvbnRhaW5lci4gRGVmYXVsdCBpcyAw Lgo+IC0KPiAgPWJhY2sKPiAgCj4gID1oZWFkMiBGdWxseS12aXJ0dWFsaXNlZCAoSFZNKSBHdWVz dCBTcGVjaWZpYyBPcHRpb25zCj4gZGlmZiAtLWdpdCBhL2RvY3MvbWlzYy9wdmgtcmVhZG1lLnR4 dCBiL2RvY3MvbWlzYy9wdmgtcmVhZG1lLnR4dAo+IGRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAo+ IGluZGV4IGM1YjNkZTQuLjAwMDAwMDAKPiAtLS0gYS9kb2NzL21pc2MvcHZoLXJlYWRtZS50eHQK PiArKysgL2Rldi9udWxsCj4gQEAgLTEsNjMgKzAsMCBAQAo+IC0KPiAtUFZIIDogYW4geDg2IFBW IGd1ZXN0IHJ1bm5pbmcgaW4gYW4gSFZNIGNvbnRhaW5lci4KPiAtCj4gLVNlZTogaHR0cDovL2Js b2cueGVuLm9yZy9pbmRleC5waHAvMjAxMi8xMC8yMy90aGUtcGFyYXZpcnR1YWxpemF0aW9uLXNw ZWN0cnVtLXBhcnQtMS10aGUtZW5kcy1vZi10aGUtc3BlY3RydW0vCj4gLQo+IC1BdCB0aGUgbW9t ZW50IEhBUCBpcyByZXF1aXJlZCBmb3IgUFZILgo+IC0KPiAtQXQgcHJlc2VudCB0aGUgb25seSBQ VkggZ3Vlc3QgaXMgYW4geDg2IDY0Yml0IFBWIGxpbnV4LiBQYXRjaGVzIGFyZSBhdDoKPiAtICAg Z2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2tvbnJhZC94ZW4u Z2l0Cj4gLQo+IC1BIFBWSCBndWVzdCBrZXJuZWwgbXVzdCBzdXBwb3J0IGZvbGxvd2luZyBmZWF0 dXJlcywgYXMgZGVmaW5lZCBmb3IgbGludXgKPiAtaW4gYXJjaC94ODYveGVuL3hlbi1oZWFkLlM6 Cj4gLQo+IC0gICAjZGVmaW5lIEZFQVRVUkVTX1BWSCAifHdyaXRhYmxlX2Rlc2NyaXB0b3JfdGFi bGVzIiBcCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICJ8YXV0b190cmFuc2xhdGVkX3BoeXNt YXAiICAgIFwKPiAtICAgICAgICAgICAgICAgICAgICAgICAgInxzdXBlcnZpc29yX21vZGVfa2Vy bmVsIiAgICAgXAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAifGh2bV9jYWxsYmFja192ZWN0 b3IiCj4gLQo+IC1JbiBhIG51dHNoZWxsOgo+IC0qIHRoZSBndWVzdCB1c2VzIGF1dG8gdHJhbnNs YXRlOgo+IC0gLSBwMm0gaXMgbWFuYWdlZCBieSB4ZW4KPiAtIC0gcGFnZXRhYmxlcyBhcmUgb3du ZWQgYnkgdGhlIGd1ZXN0Cj4gLSAtIG1tdV91cGRhdGUgaHlwZXJjYWxsIG5vdCBhdmFpbGFibGUK PiAtKiBpdCB1c2VzIGV2ZW50IGNhbGxiYWNrIGFuZCBub3QgdmxhcGljIGVtdWxhdGlvbiwKPiAt KiBJRFQgaXMgbmF0aXZlLCBzbyBzZXRfdHJhcF90YWJsZSBoY2FsbCBpcyBhbHNvIE4vQSBmb3Ig YSBQVkggZ3Vlc3QuCj4gLQo+IC1Gb3IgYSBmdWxsIGxpc3Qgb2YgaGNhbGxzIHN1cHBvcnRlZCBm b3IgUFZILCBzZWUgcHZoX2h5cGVyY2FsbDY0X3RhYmxlCj4gLWluIGFyY2gveDg2L2h2bS9odm0u YyBpbiB4ZW4uICBGcm9tIHRoZSBBQkkgcHJlc3BlY3RpdmUsIGl0J3MgbW9zdGx5IGEKPiAtUFYg Z3Vlc3Qgd2l0aCBhdXRvIHRyYW5zbGF0ZSwgYWx0aG91Z2ggaXQgZG9lcyB1c2UgaHZtX29wIGZv ciBzZXR0aW5nCj4gLWNhbGxiYWNrIHZlY3RvciwgYW5kIGhhcyBhIHNwZWNpYWwgdmVyc2lvbiBv ZiBhcmNoX3NldF9ndWVzdF9pbmZvIGZvciBicmluZ2luZwo+IC11cCBzZWNvbmRhcnkgY3B1cy4K PiAtCj4gLVRoZSBpbml0aWFsIHBoYXNlIHRhcmdldHMgdGhlIGJvb3Rpbmcgb2YgYSA2NGJpdCBV UC9TTVAgbGludXggZ3Vlc3QgaW4gUFZICj4gLW1vZGUuIFRoaXMgaXMgZG9uZSBieSBhZGRpbmc6 IHB2aD0xIGluIHRoZSBjb25maWcgZmlsZS4geGwsIGFuZCBub3QgeG0sIGlzCj4gLXN1cHBvcnRl ZC4gUGhhc2UgSSBwYXRjaGVzIGFyZSBicm9rZW4gaW50byB0aHJlZSBwYXJ0czoKPiAtICAgLSB4 ZW4gY2hhbmdlcyBmb3IgYm9vdGluZyBvZiA2NGJpdCBQVkggZ3Vlc3QKPiAtICAgLSB0b29scyBj aGFuZ2VzIGZvciBjcmVhdGluZyBhIFBWSCBndWVzdAo+IC0gICAtIGJvb3Qgb2YgNjRiaXQgZG9t MCBpbiBQVkggbW9kZS4KPiAtCj4gLVRvIGJvb3QgNjRiaXQgZG9tMCBpbiBQVkggbW9kZSwgYWRk IGRvbTBwdmggdG8gZ3J1YiB4ZW4gY29tbWFuZCBsaW5lLgo+IC0KPiAtRm9sbG93aW5nIGZpeG1l J3MgZXhpc3QgaW4gdGhlIGNvZGU6Cj4gLSAgLSBhcmNoL3g4Ni90aW1lLmM6IHN1cHBvcnQgbW9y ZSB0c2MgbW9kZXMuCj4gLQo+IC1Gb2xsb3dpbmcgcmVtYWluIHRvIGJlIGRvbmUgZm9yIFBWSDoK PiAtICAgLSBHZXQgcmlkIG9mIFBWSCBtb2RlLCBtYWtlIGl0IGp1c3QgSFZNIHdpdGggc29tZSBm bGFncyBzZXQKPiAtICAgLSBpbXBsZW1lbnQgYXJjaF9nZXRfaW5mb19ndWVzdCgpIGZvciBwdmgu Cj4gLSAgIC0gSW52ZXN0aWdhdGUgd2hhdCBlbHNlIG5lZWRzIHRvIGJlIGRvbmUgZm9yIFZNSSBz dXBwb3J0Lgo+IC0gICAtIEFNRCBwb3J0Lgo+IC0gICAtIDMyYml0IFBWSCBndWVzdCBzdXBwb3J0 IGluIGJvdGggbGludXggYW5kIHhlbi4gWGVuIGNoYW5nZXMgYXJlIHRhZ2dlZAo+IC0gICAgICIz MmJpdGZpeG1lIi4KPiAtICAgLSBBZGQgc3VwcG9ydCBmb3IgbW9uaXRvcmluZyBndWVzdCBiZWhh dmlvci4gU2VlIGh2bV9tZW1vcnlfZXZlbnQqIGZ1bmN0aW9ucwo+IC0gICAgIGluIGh2bS5jCj4g LSAgIC0gdmNwdSBob3RwbHVnIHN1cHBvcnQKPiAtICAgLSBMaXZlIG1pZ3JhdGlvbiBvZiBQVkgg Z3Vlc3RzLgo+IC0gICAtIEF2YWlsIFBWSCBkb20wIG9mIHBvc3RlZCBpbnRlcnJ1cHRzLiAoVGhp cyB3aWxsIGJlIGEgYmlnIHdpbikuCj4gLQo+IC0KPiAtTm90ZSwgYW55IGVtYWlscyB0byBtZSBt dXN0IGJlIGNjJ2QgdG8geGVuIGRldmVsIG1haWxpbmcgbGlzdC4gT1RPSCwgcGxlYXNlCj4gLWNj IG1lIG9uIFBWSCBlbWFpbHMgdG8gdGhlIHhlbiBkZXZlbCBtYWlsaW5nIGxpc3QuCj4gLQo+IC1N dWtlc2ggUmF0aG9yCj4gLW11a2VzaC5yYXRob3IgW2F0XSBvcmFjbGUgW2RvdF0gY29tCj4gZGlm ZiAtLWdpdCBhL2RvY3MvbWlzYy94ZW4tY29tbWFuZC1saW5lLm1hcmtkb3duIGIvZG9jcy9taXNj L3hlbi1jb21tYW5kLWxpbmUubWFya2Rvd24KPiBpbmRleCAzYWNiYjMzLi5lMDY5NTk0IDEwMDY0 NAo+IC0tLSBhL2RvY3MvbWlzYy94ZW4tY29tbWFuZC1saW5lLm1hcmtkb3duCj4gKysrIGIvZG9j cy9taXNjL3hlbi1jb21tYW5kLWxpbmUubWFya2Rvd24KPiBAQCAtNjc1LDEzICs2NzUsNiBAQCBG bGFnIHRoYXQgbWFrZXMgYSBkb20wIGJvb3QgaW4gUFZIdjIgbW9kZS4KPiAgCj4gIEZsYWcgdGhh dCBtYWtlcyBhIGRvbTAgdXNlIHNoYWRvdyBwYWdpbmcuCj4gIAo+IC0jIyMgZG9tMHB2aAo+IC0+ IGA9IDxib29sZWFuPmAKPiAtCj4gLT4gRGVmYXVsdDogYGZhbHNlYAo+IC0KPiAtRmxhZyB0aGF0 IG1ha2VzIGEgNjRiaXQgZG9tMCBib290IGluIFBWSCBtb2RlLiBObyAzMmJpdCBzdXBwb3J0IGF0 IHByZXNlbnQuCj4gLQo+ICAjIyMgZHR1YXJ0IChBUk0pCj4gID4gYD0gcGF0aCBbOm9wdGlvbnNd YAo+ICAKPiBkaWZmIC0tZ2l0IGEvdG9vbHMvZGVidWdnZXIvZ2Ric3gveGcveGdfbWFpbi5jIGIv dG9vbHMvZGVidWdnZXIvZ2Ric3gveGcveGdfbWFpbi5jCj4gaW5kZXggOGM4YTQwMi4uN2ViZjkx NCAxMDA2NDQKPiAtLS0gYS90b29scy9kZWJ1Z2dlci9nZGJzeC94Zy94Z19tYWluLmMKPiArKysg Yi90b29scy9kZWJ1Z2dlci9nZGJzeC94Zy94Z19tYWluLmMKPiBAQCAtNzksNyArNzksNiBAQCBp bnQgeGd0cmNfb24gPSAwOwo+ICBzdHJ1Y3QgeGVuX2RvbWN0bCBkb21jdGw7ICAgICAgICAgLyog anVzdCB1c2UgYSBnbG9iYWwgZG9tY3RsICovCj4gIAo+ICBzdGF0aWMgaW50ICAgICBfaHZtX2d1 ZXN0OyAgICAgICAgLyogaHZtIGd1ZXN0PyAzMmJpdCBIVk1zIGhhdmUgNjRiaXQgY29udGV4dCAq Lwo+IC1zdGF0aWMgaW50ICAgICBfcHZoX2d1ZXN0OyAgICAgICAgLyogUFYgZ3Vlc3QgaW4gSFZN IGNvbnRhaW5lciAqLwo+ICBzdGF0aWMgZG9taWRfdCBfZG9tX2lkOyAgICAgICAgICAgLyogZ3Vl c3QgZG9taWQgKi8KPiAgc3RhdGljIGludCAgICAgX21heF92Y3B1X2lkOyAgICAgIC8qIHRodXMg bWF4X3ZjcHVfaWQrMSBWQ1BVcyAqLwo+ICBzdGF0aWMgaW50ICAgICBfZG9tMF9mZDsgICAgICAg ICAgLyogZmQgb2YgL2Rldi9wcml2Y21kICovCj4gQEAgLTMwOCw3ICszMDcsNiBAQCB4Z19hdHRh Y2goaW50IGRvbWlkLCBpbnQgZ3Vlc3RfYml0bmVzcykKPiAgCj4gICAgICBfbWF4X3ZjcHVfaWQg PSBkb21jdGwudS5nZXRkb21haW5pbmZvLm1heF92Y3B1X2lkOwo+ICAgICAgX2h2bV9ndWVzdCA9 IChkb21jdGwudS5nZXRkb21haW5pbmZvLmZsYWdzICYgWEVOX0RPTUlORl9odm1fZ3Vlc3QpOwo+ IC0gICAgX3B2aF9ndWVzdCA9IChkb21jdGwudS5nZXRkb21haW5pbmZvLmZsYWdzICYgWEVOX0RP TUlORl9wdmhfZ3Vlc3QpOwo+ICAgICAgcmV0dXJuIF9tYXhfdmNwdV9pZDsKPiAgfQo+ICAKPiBA QCAtMzY5LDcgKzM2Nyw3IEBAIF9jaGFuZ2VfVEYodmNwdWlkX3Qgd2hpY2hfdmNwdSwgaW50IGd1 ZXN0X2JpdG5lc3MsIGludCBzZXRpdCkKPiAgICAgIGludCBzeiA9IHNpemVvZihhbnljKTsKPiAg Cj4gICAgICAvKiBmaXJzdCB0cnkgdGhlIE1URiBmb3IgaHZtIGd1ZXN0LiBvdGhlcndpc2UgZG8g bWFudWFsbHkgKi8KPiAtICAgIGlmIChfaHZtX2d1ZXN0IHx8IF9wdmhfZ3Vlc3QpIHsKPiArICAg IGlmIChfaHZtX2d1ZXN0KSB7Cj4gICAgICAgICAgZG9tY3RsLnUuZGVidWdfb3AudmNwdSA9IHdo aWNoX3ZjcHU7Cj4gICAgICAgICAgZG9tY3RsLnUuZGVidWdfb3Aub3AgPSBzZXRpdCA/IFhFTl9E T01DVExfREVCVUdfT1BfU0lOR0xFX1NURVBfT04gOgo+ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBYRU5fRE9NQ1RMX0RFQlVHX09QX1NJTkdMRV9TVEVQX09GRjsKPiBk aWZmIC0tZ2l0IGEvdG9vbHMvbGlieGMvaW5jbHVkZS94Y19kb20uaCBiL3Rvb2xzL2xpYnhjL2lu Y2x1ZGUveGNfZG9tLmgKPiBpbmRleCA2MDhjYmMyLi5iNDE2ZWI1IDEwMDY0NAo+IC0tLSBhL3Rv b2xzL2xpYnhjL2luY2x1ZGUveGNfZG9tLmgKPiArKysgYi90b29scy9saWJ4Yy9pbmNsdWRlL3hj X2RvbS5oCj4gQEAgLTE2NCw3ICsxNjQsNiBAQCBzdHJ1Y3QgeGNfZG9tX2ltYWdlIHsKPiAgICAg IGRvbWlkX3QgY29uc29sZV9kb21pZDsKPiAgICAgIGRvbWlkX3QgeGVuc3RvcmVfZG9taWQ7Cj4g ICAgICB4ZW5fcGZuX3Qgc2hhcmVkX2luZm9fbWZuOwo+IC0gICAgaW50IHB2aF9lbmFibGVkOwo+ ICAKPiAgICAgIHhjX2ludGVyZmFjZSAqeGNoOwo+ICAgICAgZG9taWRfdCBndWVzdF9kb21pZDsK PiBkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGMvaW5jbHVkZS94ZW5jdHJsLmggYi90b29scy9saWJ4 Yy9pbmNsdWRlL3hlbmN0cmwuaAo+IGluZGV4IGE0ODk4MWEuLmE3MDgzZjggMTAwNjQ0Cj4gLS0t IGEvdG9vbHMvbGlieGMvaW5jbHVkZS94ZW5jdHJsLmgKPiArKysgYi90b29scy9saWJ4Yy9pbmNs dWRlL3hlbmN0cmwuaAo+IEBAIC00NDMsNyArNDQzLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgeGNfZG9t aW5mbyB7Cj4gICAgICB1aW50MzJfdCAgICAgIHNzaWRyZWY7Cj4gICAgICB1bnNpZ25lZCBpbnQg IGR5aW5nOjEsIGNyYXNoZWQ6MSwgc2h1dGRvd246MSwKPiAgICAgICAgICAgICAgICAgICAgcGF1 c2VkOjEsIGJsb2NrZWQ6MSwgcnVubmluZzoxLAo+IC0gICAgICAgICAgICAgICAgICBodm06MSwg ZGVidWdnZWQ6MSwgcHZoOjEsIHhlbnN0b3JlOjEsIGhhcDoxOwo+ICsgICAgICAgICAgICAgICAg ICBodm06MSwgZGVidWdnZWQ6MSwgeGVuc3RvcmU6MSwgaGFwOjE7Cj4gICAgICB1bnNpZ25lZCBp bnQgIHNodXRkb3duX3JlYXNvbjsgLyogb25seSBtZWFuaW5nZnVsIGlmIHNodXRkb3duPT0xICov Cj4gICAgICB1bnNpZ25lZCBsb25nIG5yX3BhZ2VzOyAvKiBjdXJyZW50IG51bWJlciwgbm90IG1h eGltdW0gKi8KPiAgICAgIHVuc2lnbmVkIGxvbmcgbnJfb3V0c3RhbmRpbmdfcGFnZXM7Cj4gZGlm ZiAtLWdpdCBhL3Rvb2xzL2xpYnhjL3hjX2NwdWlkX3g4Ni5jIGIvdG9vbHMvbGlieGMveGNfY3B1 aWRfeDg2LmMKPiBpbmRleCAzNWVjY2ExLi4xYmVkZjA1IDEwMDY0NAo+IC0tLSBhL3Rvb2xzL2xp YnhjL3hjX2NwdWlkX3g4Ni5jCj4gKysrIGIvdG9vbHMvbGlieGMveGNfY3B1aWRfeDg2LmMKPiBA QCAtMTY3LDcgKzE2Nyw2IEBAIHN0cnVjdCBjcHVpZF9kb21haW5faW5mbwo+ICAgICAgfSB2ZW5k b3I7Cj4gIAo+ICAgICAgYm9vbCBodm07Cj4gLSAgICBib29sIHB2aDsKPiAgICAgIHVpbnQ2NF90 IHhmZWF0dXJlX21hc2s7Cj4gIAo+ICAgICAgdWludDMyX3QgKmZlYXR1cmVzZXQ7Cj4gQEAgLTIz MSw3ICsyMzAsNiBAQCBzdGF0aWMgaW50IGdldF9jcHVpZF9kb21haW5faW5mbyh4Y19pbnRlcmZh Y2UgKnhjaCwgZG9taWRfdCBkb21pZCwKPiAgICAgICAgICByZXR1cm4gLUVTUkNIOwo+ICAKPiAg ICAgIGluZm8tPmh2bSA9IGRpLmh2bTsKPiAtICAgIGluZm8tPnB2aCA9IGRpLnB2aDsKPiAgCj4g ICAgICBpbmZvLT5mZWF0dXJlc2V0ID0gY2FsbG9jKGhvc3RfbnJfZmVhdHVyZXMsIHNpemVvZigq aW5mby0+ZmVhdHVyZXNldCkpOwo+ICAgICAgaWYgKCAhaW5mby0+ZmVhdHVyZXNldCApCj4gQEAg LTY4MiwxMyArNjgwLDEwIEBAIHN0YXRpYyB2b2lkIHNhbml0aXNlX2ZlYXR1cmVzZXQoc3RydWN0 IGNwdWlkX2RvbWFpbl9pbmZvICppbmZvKQo+ICAgICAgICAgICAgICAgICAgY2xlYXJfYml0KFg4 Nl9GRUFUVVJFX1NZU0NBTEwsIGluZm8tPmZlYXR1cmVzZXQpOwo+ICAgICAgICAgIH0KPiAgCj4g LSAgICAgICAgaWYgKCAhaW5mby0+cHZoICkKPiAtICAgICAgICB7Cj4gLSAgICAgICAgICAgIGNs ZWFyX2JpdChYODZfRkVBVFVSRV9QU0UsIGluZm8tPmZlYXR1cmVzZXQpOwo+IC0gICAgICAgICAg ICBjbGVhcl9iaXQoWDg2X0ZFQVRVUkVfUFNFMzYsIGluZm8tPmZlYXR1cmVzZXQpOwo+IC0gICAg ICAgICAgICBjbGVhcl9iaXQoWDg2X0ZFQVRVUkVfUEdFLCBpbmZvLT5mZWF0dXJlc2V0KTsKPiAt ICAgICAgICAgICAgY2xlYXJfYml0KFg4Nl9GRUFUVVJFX1BBR0UxR0IsIGluZm8tPmZlYXR1cmVz ZXQpOwo+IC0gICAgICAgIH0KPiArICAgICAgICBjbGVhcl9iaXQoWDg2X0ZFQVRVUkVfUFNFLCBp bmZvLT5mZWF0dXJlc2V0KTsKPiArICAgICAgICBjbGVhcl9iaXQoWDg2X0ZFQVRVUkVfUFNFMzYs IGluZm8tPmZlYXR1cmVzZXQpOwo+ICsgICAgICAgIGNsZWFyX2JpdChYODZfRkVBVFVSRV9QR0Us IGluZm8tPmZlYXR1cmVzZXQpOwo+ICsgICAgICAgIGNsZWFyX2JpdChYODZfRkVBVFVSRV9QQUdF MUdCLCBpbmZvLT5mZWF0dXJlc2V0KTsKPiAgICAgIH0KPiAgCj4gICAgICBpZiAoIGluZm8tPnhm ZWF0dXJlX21hc2sgPT0gMCApCj4gZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhjL3hjX2RvbV9jb3Jl LmMgYi90b29scy9saWJ4Yy94Y19kb21fY29yZS5jCj4gaW5kZXggMzZjZDNjOC4uY2Y0MDM0MyAx MDA2NDQKPiAtLS0gYS90b29scy9saWJ4Yy94Y19kb21fY29yZS5jCj4gKysrIGIvdG9vbHMvbGli eGMveGNfZG9tX2NvcmUuYwo+IEBAIC04OTYsMTUgKzg5Niw2IEBAIGludCB4Y19kb21fcGFyc2Vf aW1hZ2Uoc3RydWN0IHhjX2RvbV9pbWFnZSAqZG9tKQo+ICAgICAgICAgIGdvdG8gZXJyOwo+ICAg ICAgfQo+ICAKPiAtICAgIGlmICggZG9tLT5wdmhfZW5hYmxlZCApCj4gLSAgICB7Cj4gLSAgICAg ICAgY29uc3QgY2hhciAqcHZoX2ZlYXR1cmVzID0gIndyaXRhYmxlX2Rlc2NyaXB0b3JfdGFibGVz fCIKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXV0b190cmFuc2xhdGVk X3BoeXNtYXB8Igo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdXBlcnZp c29yX21vZGVfa2VybmVsfCIKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi aHZtX2NhbGxiYWNrX3ZlY3RvciI7Cj4gLSAgICAgICAgZWxmX3hlbl9wYXJzZV9mZWF0dXJlcyhw dmhfZmVhdHVyZXMsIGRvbS0+Zl9yZXF1ZXN0ZWQsIE5VTEwpOwo+IC0gICAgfQo+IC0KPiAgICAg IC8qIGNoZWNrIGZlYXR1cmVzICovCj4gICAgICBmb3IgKCBpID0gMDsgaSA8IFhFTkZFQVRfTlJf U1VCTUFQUzsgaSsrICkKPiAgICAgIHsKPiBkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGMveGNfZG9t X3g4Ni5jIGIvdG9vbHMvbGlieGMveGNfZG9tX3g4Ni5jCj4gaW5kZXggNjQ5NWU3Zi4uYzE3NmMw MCAxMDA2NDQKPiAtLS0gYS90b29scy9saWJ4Yy94Y19kb21feDg2LmMKPiArKysgYi90b29scy9s aWJ4Yy94Y19kb21feDg2LmMKPiBAQCAtMzczLDcgKzM3Myw3IEBAIHN0YXRpYyB4ODZfcGdlbnRy eV90IGdldF9wZ19wcm90X3g4NihzdHJ1Y3QgeGNfZG9tX2ltYWdlICpkb20sIGludCBsLAo+ICAg ICAgdW5zaWduZWQgbTsKPiAgCj4gICAgICBwcm90ID0gZG9teDg2LT5wYXJhbXMtPmx2bF9wcm90 W2xdOwo+IC0gICAgaWYgKCBsID4gMCB8fCBkb20tPnB2aF9lbmFibGVkICkKPiArICAgIGlmICgg bCA+IDAgKQo+ICAgICAgICAgIHJldHVybiBwcm90Owo+ICAKPiAgICAgIGZvciAoIG0gPSAwOyBt IDwgZG9teDg2LT5uX21hcHBpbmdzOyBtKysgKQo+IEBAIC04NzAsMTggKzg3MCwxNSBAQCBzdGF0 aWMgaW50IHZjcHVfeDg2XzMyKHN0cnVjdCB4Y19kb21faW1hZ2UgKmRvbSkKPiAgICAgIERPTVBS SU5URigiJXM6IGNyMzogcGZuIDB4JSIgUFJJcGZuICIgbWZuIDB4JSIgUFJJcGZuICIiLAo+ICAg ICAgICAgICAgICAgIF9fRlVOQ1RJT05fXywgZG9tLT5wZ3RhYmxlc19zZWcucGZuLCBjcjNfcGZu KTsKPiAgCj4gLSAgICBpZiAoICFkb20tPnB2aF9lbmFibGVkICkKPiAtICAgIHsKPiAtICAgICAg ICBjdHh0LT51c2VyX3JlZ3MuZHMgPSBGTEFUX0tFUk5FTF9EU19YODZfMzI7Cj4gLSAgICAgICAg Y3R4dC0+dXNlcl9yZWdzLmVzID0gRkxBVF9LRVJORUxfRFNfWDg2XzMyOwo+IC0gICAgICAgIGN0 eHQtPnVzZXJfcmVncy5mcyA9IEZMQVRfS0VSTkVMX0RTX1g4Nl8zMjsKPiAtICAgICAgICBjdHh0 LT51c2VyX3JlZ3MuZ3MgPSBGTEFUX0tFUk5FTF9EU19YODZfMzI7Cj4gLSAgICAgICAgY3R4dC0+ dXNlcl9yZWdzLnNzID0gRkxBVF9LRVJORUxfU1NfWDg2XzMyOwo+IC0gICAgICAgIGN0eHQtPnVz ZXJfcmVncy5jcyA9IEZMQVRfS0VSTkVMX0NTX1g4Nl8zMjsKPiAtCj4gLSAgICAgICAgY3R4dC0+ a2VybmVsX3NzID0gY3R4dC0+dXNlcl9yZWdzLnNzOwo+IC0gICAgICAgIGN0eHQtPmtlcm5lbF9z cCA9IGN0eHQtPnVzZXJfcmVncy5lc3A7Cj4gLSAgICB9Cj4gKyAgICBjdHh0LT51c2VyX3JlZ3Mu ZHMgPSBGTEFUX0tFUk5FTF9EU19YODZfMzI7Cj4gKyAgICBjdHh0LT51c2VyX3JlZ3MuZXMgPSBG TEFUX0tFUk5FTF9EU19YODZfMzI7Cj4gKyAgICBjdHh0LT51c2VyX3JlZ3MuZnMgPSBGTEFUX0tF Uk5FTF9EU19YODZfMzI7Cj4gKyAgICBjdHh0LT51c2VyX3JlZ3MuZ3MgPSBGTEFUX0tFUk5FTF9E U19YODZfMzI7Cj4gKyAgICBjdHh0LT51c2VyX3JlZ3Muc3MgPSBGTEFUX0tFUk5FTF9TU19YODZf MzI7Cj4gKyAgICBjdHh0LT51c2VyX3JlZ3MuY3MgPSBGTEFUX0tFUk5FTF9DU19YODZfMzI7Cj4g Kwo+ICsgICAgY3R4dC0+a2VybmVsX3NzID0gY3R4dC0+dXNlcl9yZWdzLnNzOwo+ICsgICAgY3R4 dC0+a2VybmVsX3NwID0gY3R4dC0+dXNlcl9yZWdzLmVzcDsKPiAgCj4gICAgICByYyA9IHhjX3Zj cHVfc2V0Y29udGV4dChkb20tPnhjaCwgZG9tLT5ndWVzdF9kb21pZCwgMCwgJmFueV9jdHgpOwo+ ICAgICAgaWYgKCByYyAhPSAwICkKPiBAQCAtOTE2LDE4ICs5MTMsMTUgQEAgc3RhdGljIGludCB2 Y3B1X3g4Nl82NChzdHJ1Y3QgeGNfZG9tX2ltYWdlICpkb20pCj4gICAgICBET01QUklOVEYoIiVz OiBjcjM6IHBmbiAweCUiIFBSSXBmbiAiIG1mbiAweCUiIFBSSXBmbiAiIiwKPiAgICAgICAgICAg ICAgICBfX0ZVTkNUSU9OX18sIGRvbS0+cGd0YWJsZXNfc2VnLnBmbiwgY3IzX3Bmbik7Cj4gIAo+ IC0gICAgaWYgKCAhZG9tLT5wdmhfZW5hYmxlZCApCj4gLSAgICB7Cj4gLSAgICAgICAgY3R4dC0+ dXNlcl9yZWdzLmRzID0gRkxBVF9LRVJORUxfRFNfWDg2XzY0Owo+IC0gICAgICAgIGN0eHQtPnVz ZXJfcmVncy5lcyA9IEZMQVRfS0VSTkVMX0RTX1g4Nl82NDsKPiAtICAgICAgICBjdHh0LT51c2Vy X3JlZ3MuZnMgPSBGTEFUX0tFUk5FTF9EU19YODZfNjQ7Cj4gLSAgICAgICAgY3R4dC0+dXNlcl9y ZWdzLmdzID0gRkxBVF9LRVJORUxfRFNfWDg2XzY0Owo+IC0gICAgICAgIGN0eHQtPnVzZXJfcmVn cy5zcyA9IEZMQVRfS0VSTkVMX1NTX1g4Nl82NDsKPiAtICAgICAgICBjdHh0LT51c2VyX3JlZ3Mu Y3MgPSBGTEFUX0tFUk5FTF9DU19YODZfNjQ7Cj4gLQo+IC0gICAgICAgIGN0eHQtPmtlcm5lbF9z cyA9IGN0eHQtPnVzZXJfcmVncy5zczsKPiAtICAgICAgICBjdHh0LT5rZXJuZWxfc3AgPSBjdHh0 LT51c2VyX3JlZ3MuZXNwOwo+IC0gICAgfQo+ICsgICAgY3R4dC0+dXNlcl9yZWdzLmRzID0gRkxB VF9LRVJORUxfRFNfWDg2XzY0Owo+ICsgICAgY3R4dC0+dXNlcl9yZWdzLmVzID0gRkxBVF9LRVJO RUxfRFNfWDg2XzY0Owo+ICsgICAgY3R4dC0+dXNlcl9yZWdzLmZzID0gRkxBVF9LRVJORUxfRFNf WDg2XzY0Owo+ICsgICAgY3R4dC0+dXNlcl9yZWdzLmdzID0gRkxBVF9LRVJORUxfRFNfWDg2XzY0 Owo+ICsgICAgY3R4dC0+dXNlcl9yZWdzLnNzID0gRkxBVF9LRVJORUxfU1NfWDg2XzY0Owo+ICsg ICAgY3R4dC0+dXNlcl9yZWdzLmNzID0gRkxBVF9LRVJORUxfQ1NfWDg2XzY0Owo+ICsKPiArICAg IGN0eHQtPmtlcm5lbF9zcyA9IGN0eHQtPnVzZXJfcmVncy5zczsKPiArICAgIGN0eHQtPmtlcm5l bF9zcCA9IGN0eHQtPnVzZXJfcmVncy5lc3A7Cj4gIAo+ICAgICAgcmMgPSB4Y192Y3B1X3NldGNv bnRleHQoZG9tLT54Y2gsIGRvbS0+Z3Vlc3RfZG9taWQsIDAsICZhbnlfY3R4KTsKPiAgICAgIGlm ICggcmMgIT0gMCApCj4gQEAgLTExMDYsNyArMTEwMCw3IEBAIHN0YXRpYyBpbnQgbWVtaW5pdF9w dihzdHJ1Y3QgeGNfZG9tX2ltYWdlICpkb20pCj4gICAgICByYyA9IHg4Nl9jb21wYXQoZG9tLT54 Y2gsIGRvbS0+Z3Vlc3RfZG9taWQsIGRvbS0+Z3Vlc3RfdHlwZSk7Cj4gICAgICBpZiAoIHJjICkK PiAgICAgICAgICByZXR1cm4gcmM7Cj4gLSAgICBpZiAoIHhjX2RvbV9mZWF0dXJlX3RyYW5zbGF0 ZWQoZG9tKSAmJiAhZG9tLT5wdmhfZW5hYmxlZCApCj4gKyAgICBpZiAoIHhjX2RvbV9mZWF0dXJl X3RyYW5zbGF0ZWQoZG9tKSApCj4gICAgICB7Cj4gICAgICAgICAgZG9tLT5zaGFkb3dfZW5hYmxl ZCA9IDE7Cj4gICAgICAgICAgcmMgPSB4ODZfc2hhZG93KGRvbS0+eGNoLCBkb20tPmd1ZXN0X2Rv bWlkKTsKPiBAQCAtMTU5NCw5ICsxNTg4LDYgQEAgc3RhdGljIGludCBtYXBfZ3JhbnRfdGFibGVf ZnJhbWVzKHN0cnVjdCB4Y19kb21faW1hZ2UgKmRvbSkKPiAgewo+ICAgICAgaW50IGksIHJjOwo+ ICAKPiAtICAgIGlmICggZG9tLT5wdmhfZW5hYmxlZCApCj4gLSAgICAgICAgcmV0dXJuIDA7Cj4g LQo+ICAgICAgZm9yICggaSA9IDA7IDsgaSsrICkKPiAgICAgIHsKPiAgICAgICAgICByYyA9IHhj X2RvbWFpbl9hZGRfdG9fcGh5c21hcChkb20tPnhjaCwgZG9tLT5ndWVzdF9kb21pZCwKPiBkaWZm IC0tZ2l0IGEvdG9vbHMvbGlieGMveGNfZG9tYWluLmMgYi90b29scy9saWJ4Yy94Y19kb21haW4u Ywo+IGluZGV4IGQ4NjJlNTMuLmVhM2YxOTMgMTAwNjQ0Cj4gLS0tIGEvdG9vbHMvbGlieGMveGNf ZG9tYWluLmMKPiArKysgYi90b29scy9saWJ4Yy94Y19kb21haW4uYwo+IEBAIC0zNzAsNyArMzcw LDYgQEAgaW50IHhjX2RvbWFpbl9nZXRpbmZvKHhjX2ludGVyZmFjZSAqeGNoLAo+ICAgICAgICAg IGluZm8tPnJ1bm5pbmcgID0gISEoZG9tY3RsLnUuZ2V0ZG9tYWluaW5mby5mbGFncyZYRU5fRE9N SU5GX3J1bm5pbmcpOwo+ICAgICAgICAgIGluZm8tPmh2bSAgICAgID0gISEoZG9tY3RsLnUuZ2V0 ZG9tYWluaW5mby5mbGFncyZYRU5fRE9NSU5GX2h2bV9ndWVzdCk7Cj4gICAgICAgICAgaW5mby0+ ZGVidWdnZWQgPSAhIShkb21jdGwudS5nZXRkb21haW5pbmZvLmZsYWdzJlhFTl9ET01JTkZfZGVi dWdnZWQpOwo+IC0gICAgICAgIGluZm8tPnB2aCAgICAgID0gISEoZG9tY3RsLnUuZ2V0ZG9tYWlu aW5mby5mbGFncyZYRU5fRE9NSU5GX3B2aF9ndWVzdCk7Cj4gICAgICAgICAgaW5mby0+eGVuc3Rv cmUgPSAhIShkb21jdGwudS5nZXRkb21haW5pbmZvLmZsYWdzJlhFTl9ET01JTkZfeHNfZG9tYWlu KTsKPiAgICAgICAgICBpbmZvLT5oYXAgICAgICA9ICEhKGRvbWN0bC51LmdldGRvbWFpbmluZm8u ZmxhZ3MmWEVOX0RPTUlORl9oYXApOwo+ICAKPiBkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwvbGli eGxfY3JlYXRlLmMgYi90b29scy9saWJ4bC9saWJ4bF9jcmVhdGUuYwo+IGluZGV4IGU3NDFiOWEu LmMyM2JhMmYgMTAwNjQ0Cj4gLS0tIGEvdG9vbHMvbGlieGwvbGlieGxfY3JlYXRlLmMKPiArKysg Yi90b29scy9saWJ4bC9saWJ4bF9jcmVhdGUuYwo+IEBAIC0zOCw5ICszOCw2IEBAIGludCBsaWJ4 bF9fZG9tYWluX2NyZWF0ZV9pbmZvX3NldGRlZmF1bHQobGlieGxfX2djICpnYywKPiAgICAgIGlm IChjX2luZm8tPnR5cGUgPT0gTElCWExfRE9NQUlOX1RZUEVfSFZNKSB7Cj4gICAgICAgICAgbGli eGxfZGVmYm9vbF9zZXRkZWZhdWx0KCZjX2luZm8tPmhhcCwgdHJ1ZSk7Cj4gICAgICAgICAgbGli eGxfZGVmYm9vbF9zZXRkZWZhdWx0KCZjX2luZm8tPm9vcywgdHJ1ZSk7Cj4gLSAgICB9IGVsc2Ug ewo+IC0gICAgICAgIGxpYnhsX2RlZmJvb2xfc2V0ZGVmYXVsdCgmY19pbmZvLT5wdmgsIGZhbHNl KTsKPiAtICAgICAgICBsaWJ4bF9kZWZib29sX3NldGRlZmF1bHQoJmNfaW5mby0+aGFwLCBsaWJ4 bF9kZWZib29sX3ZhbChjX2luZm8tPnB2aCkpOwo+ICAgICAgfQo+ICAKPiAgICAgIGxpYnhsX2Rl ZmJvb2xfc2V0ZGVmYXVsdCgmY19pbmZvLT5ydW5faG90cGx1Z19zY3JpcHRzLCB0cnVlKTsKPiBA QCAtNDc1LDggKzQ3Miw2IEBAIGludCBsaWJ4bF9fZG9tYWluX2J1aWxkKGxpYnhsX19nYyAqZ2Ms Cj4gIAo+ICAgICAgICAgIGJyZWFrOwo+ICAgICAgY2FzZSBMSUJYTF9ET01BSU5fVFlQRV9QVjoK PiAtICAgICAgICBzdGF0ZS0+cHZoX2VuYWJsZWQgPSBsaWJ4bF9kZWZib29sX3ZhbChkX2NvbmZp Zy0+Y19pbmZvLnB2aCk7Cj4gLQo+ICAgICAgICAgIHJldCA9IGxpYnhsX19idWlsZF9wdihnYywg ZG9taWQsIGluZm8sIHN0YXRlKTsKPiAgICAgICAgICBpZiAocmV0KQo+ICAgICAgICAgICAgICBn b3RvIG91dDsKPiBAQCAtNTM2LDE0ICs1MzEsNiBAQCBpbnQgbGlieGxfX2RvbWFpbl9tYWtlKGxp YnhsX19nYyAqZ2MsIGxpYnhsX2RvbWFpbl9jb25maWcgKmRfY29uZmlnLAo+ICAgICAgICAgIGZs YWdzIHw9IFhFTl9ET01DVExfQ0RGX2h2bV9ndWVzdDsKPiAgICAgICAgICBmbGFncyB8PSBsaWJ4 bF9kZWZib29sX3ZhbChpbmZvLT5oYXApID8gWEVOX0RPTUNUTF9DREZfaGFwIDogMDsKPiAgICAg ICAgICBmbGFncyB8PSBsaWJ4bF9kZWZib29sX3ZhbChpbmZvLT5vb3MpID8gMCA6IFhFTl9ET01D VExfQ0RGX29vc19vZmY7Cj4gLSAgICB9IGVsc2UgaWYgKGxpYnhsX2RlZmJvb2xfdmFsKGluZm8t PnB2aCkpIHsKPiAtICAgICAgICBmbGFncyB8PSBYRU5fRE9NQ1RMX0NERl9wdmhfZ3Vlc3Q7Cj4g LSAgICAgICAgaWYgKCFsaWJ4bF9kZWZib29sX3ZhbChpbmZvLT5oYXApKSB7Cj4gLSAgICAgICAg ICAgIExPR0QoRVJST1IsICpkb21pZCwgIkhBUCBtdXN0IGJlIG9uIGZvciBQVkgiKTsKPiAtICAg ICAgICAgICAgcmMgPSBFUlJPUl9JTlZBTDsKPiAtICAgICAgICAgICAgZ290byBvdXQ7Cj4gLSAg ICAgICAgfQo+IC0gICAgICAgIGZsYWdzIHw9IFhFTl9ET01DVExfQ0RGX2hhcDsKPiAgICAgIH0K PiAgCj4gICAgICAvKiBVbHRpbWF0ZWx5LCBoYW5kbGUgaXMgYW4gYXJyYXkgb2YgMTYgdWludDhf dCwgc2FtZSBhcyB1dWlkICovCj4gQEAgLTg1OSw2ICs4NDYsMjQgQEAgc3RhdGljIHZvaWQgaW5p dGlhdGVfZG9tYWluX2NyZWF0ZShsaWJ4bF9fZWdjICplZ2MsCj4gICAgICAgICAgZ290byBlcnJv cl9vdXQ7Cj4gICAgICB9Cj4gIAo+ICsgICAgbGlieGxfZGVmYm9vbF9zZXRkZWZhdWx0KCZkX2Nv bmZpZy0+Y19pbmZvLnB2aCwgZmFsc2UpOwo+ICsgICAgaWYgKGxpYnhsX2RlZmJvb2xfdmFsKGRf Y29uZmlnLT5jX2luZm8ucHZoKSkgewo+ICsgICAgICAgIGlmIChkX2NvbmZpZy0+Y19pbmZvLnR5 cGUgIT0gTElCWExfRE9NQUlOX1RZUEVfSFZNKSB7Cj4gKyAgICAgICAgICAgIExPR0QoRVJST1Is IGRvbWlkLCAiSW52YWxpZCBkb21haW4gdHlwZSBmb3IgUFZIOiAlcyIsCj4gKyAgICAgICAgICAg ICAgICAgbGlieGxfZG9tYWluX3R5cGVfdG9fc3RyaW5nKGRfY29uZmlnLT5jX2luZm8udHlwZSkp Owo+ICsgICAgICAgICAgICByZXQgPSBFUlJPUl9JTlZBTDsKPiArICAgICAgICAgICAgZ290byBl cnJvcl9vdXQ7Cj4gKyAgICAgICAgfQo+ICsgICAgICAgIGlmIChkX2NvbmZpZy0+Yl9pbmZvLmRl dmljZV9tb2RlbF92ZXJzaW9uICE9Cj4gKyAgICAgICAgICAgIExJQlhMX0RFVklDRV9NT0RFTF9W RVJTSU9OX05PTkUpIHsKPiArICAgICAgICAgICAgTE9HRChFUlJPUiwgZG9taWQsICJJbnZhbGlk IGRldmljZSBtb2RlbCB2ZXJzaW9uIGZvciBQVkg6ICVzIiwKPiArICAgICAgICAgICAgICAgICBs aWJ4bF9kZXZpY2VfbW9kZWxfdmVyc2lvbl90b19zdHJpbmcoCj4gKyAgICAgICAgICAgICAgICAg ICAgIGRfY29uZmlnLT5iX2luZm8uZGV2aWNlX21vZGVsX3ZlcnNpb24pKTsKPiArICAgICAgICAg ICAgcmV0ID0gRVJST1JfSU5WQUw7Cj4gKyAgICAgICAgICAgIGdvdG8gZXJyb3Jfb3V0Owo+ICsg ICAgICAgIH0KPiArICAgIH0KPiArCj4gICAgICAvKiBJZiB0YXJnZXRfbWVta2IgaXMgc21hbGxl ciB0aGFuIG1heF9tZW1rYiwgdGhlIHN1YnNlcXVlbnQgY2FsbAo+ICAgICAgICogdG8gbGlieGMg d2hlbiBidWlsZGluZyBIVk0gZG9tYWluIHdpbGwgZW5hYmxlIFBvRCBtb2RlLgo+ICAgICAgICov Cj4gZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL2xpYnhsX2RvbS5jIGIvdG9vbHMvbGlieGwvbGli eGxfZG9tLmMKPiBpbmRleCBkNTE5YzhkLi5lMTMzOTYyIDEwMDY0NAo+IC0tLSBhL3Rvb2xzL2xp YnhsL2xpYnhsX2RvbS5jCj4gKysrIGIvdG9vbHMvbGlieGwvbGlieGxfZG9tLmMKPiBAQCAtNjkw LDcgKzY5MCw2IEBAIGludCBsaWJ4bF9fYnVpbGRfcHYobGlieGxfX2djICpnYywgdWludDMyX3Qg ZG9taWQsCj4gICAgICAgICAgcmV0dXJuIEVSUk9SX0ZBSUw7Cj4gICAgICB9Cj4gIAo+IC0gICAg ZG9tLT5wdmhfZW5hYmxlZCA9IHN0YXRlLT5wdmhfZW5hYmxlZDsKPiAgICAgIGRvbS0+Y29udGFp bmVyX3R5cGUgPSBYQ19ET01fUFZfQ09OVEFJTkVSOwo+ICAKPiAgICAgIExPRyhERUJVRywgInB2 IGtlcm5lbCBtYXBwZWQgJWQgcGF0aCAlcyIsIHN0YXRlLT5wdl9rZXJuZWwubWFwcGVkLCBzdGF0 ZS0+cHZfa2VybmVsLnBhdGgpOwo+IGRpZmYgLS1naXQgYS90b29scy9saWJ4bC9saWJ4bF9pbnRl cm5hbC5oIGIvdG9vbHMvbGlieGwvbGlieGxfaW50ZXJuYWwuaAo+IGluZGV4IDViYmVkZTUuLjc3 MjI2NjUgMTAwNjQ0Cj4gLS0tIGEvdG9vbHMvbGlieGwvbGlieGxfaW50ZXJuYWwuaAo+ICsrKyBi L3Rvb2xzL2xpYnhsL2xpYnhsX2ludGVybmFsLmgKPiBAQCAtMTEyOSw3ICsxMTI5LDYgQEAgdHlw ZWRlZiBzdHJ1Y3Qgewo+ICAgICAgbGlieGxfX2ZpbGVfcmVmZXJlbmNlIHB2X2tlcm5lbDsKPiAg ICAgIGxpYnhsX19maWxlX3JlZmVyZW5jZSBwdl9yYW1kaXNrOwo+ICAgICAgY29uc3QgY2hhciAq IHB2X2NtZGxpbmU7Cj4gLSAgICBib29sIHB2aF9lbmFibGVkOwo+ICAKPiAgICAgIHhlbl92bWVt cmFuZ2VfdCAqdm1lbXJhbmdlczsKPiAgICAgIHVpbnQzMl90IG51bV92bWVtcmFuZ2VzOwo+IGRp ZmYgLS1naXQgYS90b29scy9saWJ4bC9saWJ4bF94ODYuYyBiL3Rvb2xzL2xpYnhsL2xpYnhsX3g4 Ni5jCj4gaW5kZXggNWRhNzUwNC4uZWI2YmY2NiAxMDA2NDQKPiAtLS0gYS90b29scy9saWJ4bC9s aWJ4bF94ODYuYwo+ICsrKyBiL3Rvb2xzL2xpYnhsL2xpYnhsX3g4Ni5jCj4gQEAgLTMzOCwxMSAr MzM4LDggQEAgaW50IGxpYnhsX19hcmNoX2RvbWFpbl9jcmVhdGUobGlieGxfX2djICpnYywgbGli eGxfZG9tYWluX2NvbmZpZyAqZF9jb25maWcsCj4gICAgICBpZiAocnRjX3RpbWVvZmZzZXQpCj4g ICAgICAgICAgeGNfZG9tYWluX3NldF90aW1lX29mZnNldChjdHgtPnhjaCwgZG9taWQsIHJ0Y190 aW1lb2Zmc2V0KTsKPiAgCj4gLSAgICBpZiAoZF9jb25maWctPmJfaW5mby50eXBlID09IExJQlhM X0RPTUFJTl9UWVBFX0hWTSB8fAo+IC0gICAgICAgIGxpYnhsX2RlZmJvb2xfdmFsKGRfY29uZmln LT5jX2luZm8ucHZoKSkgewo+IC0KPiAtICAgICAgICB1bnNpZ25lZCBsb25nIHNoYWRvdzsKPiAt ICAgICAgICBzaGFkb3cgPSAoZF9jb25maWctPmJfaW5mby5zaGFkb3dfbWVta2IgKyAxMDIzKSAv IDEwMjQ7Cj4gKyAgICBpZiAoZF9jb25maWctPmJfaW5mby50eXBlID09IExJQlhMX0RPTUFJTl9U WVBFX0hWTSkgewo+ICsgICAgICAgIHVuc2lnbmVkIGxvbmcgc2hhZG93ID0gKGRfY29uZmlnLT5i X2luZm8uc2hhZG93X21lbWtiICsgMTAyMykgLyAxMDI0Owo+ICAgICAgICAgIHhjX3NoYWRvd19j b250cm9sKGN0eC0+eGNoLCBkb21pZCwgWEVOX0RPTUNUTF9TSEFET1dfT1BfU0VUX0FMTE9DQVRJ T04sIE5VTEwsIDAsICZzaGFkb3csIDAsIE5VTEwpOwo+ICAgICAgfQo+ICAKPiBkaWZmIC0tZ2l0 IGEvdG9vbHMveGwveGxfcGFyc2UuYyBiL3Rvb2xzL3hsL3hsX3BhcnNlLmMKPiBpbmRleCAxZWYw YzI3Li5iYWM0MGI3IDEwMDY0NAo+IC0tLSBhL3Rvb2xzL3hsL3hsX3BhcnNlLmMKPiArKysgYi90 b29scy94bC94bF9wYXJzZS5jCj4gQEAgLTc2MCw3ICs3NjAsMTUgQEAgdm9pZCBwYXJzZV9jb25m aWdfZGF0YShjb25zdCBjaGFyICpjb25maWdfc291cmNlLAo+ICAgICAgICAgICFzdHJuY21wKGJ1 ZiwgImh2bSIsIHN0cmxlbihidWYpKSkKPiAgICAgICAgICBjX2luZm8tPnR5cGUgPSBMSUJYTF9E T01BSU5fVFlQRV9IVk07Cj4gIAo+IC0gICAgeGx1X2NmZ19nZXRfZGVmYm9vbChjb25maWcsICJw dmgiLCAmY19pbmZvLT5wdmgsIDApOwo+ICsgICAgaWYgKCF4bHVfY2ZnX2dldF9kZWZib29sKGNv bmZpZywgInB2aCIsICZjX2luZm8tPnB2aCwgMCkpIHsKPiArICAgICAgICAvKiBOQjogd2UgbmVl ZCB0byBzZXQgdGhlIHR5cGUgaGVyZSwgb3IgZWxzZSB3ZSB3aWxsIGZhbGwgaW50bwo+ICsgICAg ICAgICAqIHRoZSBQViBwYXRoLCBhbmQgdGhlIHNldCBvZiBvcHRpb25zIHdpbGwgYmUgY29tcGxl dGVseSB3cm9uZwo+ICsgICAgICAgICAqIChldmVuIG1vcmUgYmVjYXVzZSB0aGUgUFYgYW5kIEhW TSBvcHRpb25zIGFyZSBpbnNpZGUgYW4gdW5pb24pLgo+ICsgICAgICAgICAqLwo+ICsgICAgICAg IGNfaW5mby0+dHlwZSA9IExJQlhMX0RPTUFJTl9UWVBFX0hWTTsKPiArICAgICAgICBiX2luZm8t PmRldmljZV9tb2RlbF92ZXJzaW9uID0gTElCWExfREVWSUNFX01PREVMX1ZFUlNJT05fTk9ORTsK PiArICAgIH0KPiArCj4gICAgICB4bHVfY2ZnX2dldF9kZWZib29sKGNvbmZpZywgImhhcCIsICZj X2luZm8tPmhhcCwgMCk7Cj4gIAo+ICAgICAgaWYgKHhsdV9jZmdfcmVwbGFjZV9zdHJpbmcgKGNv bmZpZywgIm5hbWUiLCAmY19pbmZvLT5uYW1lLCAwKSkgewo+IGRpZmYgLS1naXQgYS94ZW4vYXJj aC94ODYvY3B1L3ZwbXUuYyBiL3hlbi9hcmNoL3g4Ni9jcHUvdnBtdS5jCj4gaW5kZXggYzg2MTVl OC4uZDMxOWRlYSAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYvY3B1L3ZwbXUuYwo+ICsrKyBi L3hlbi9hcmNoL3g4Ni9jcHUvdnBtdS5jCj4gQEAgLTIyNSw4ICsyMjUsNyBAQCB2b2lkIHZwbXVf ZG9faW50ZXJydXB0KHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzKQo+ICAgICAgICAgIGlmICgg IXZwbXUtPnhlbnBtdV9kYXRhICkKPiAgICAgICAgICAgICAgcmV0dXJuOwo+ICAKPiAtICAgICAg ICBpZiAoIGlzX3B2aF92Y3B1KHNhbXBsaW5nKSAmJgo+IC0gICAgICAgICAgICAgISh2cG11X21v ZGUgJiBYRU5QTVVfTU9ERV9BTEwpICYmCj4gKyAgICAgICAgaWYgKCAhKHZwbXVfbW9kZSAmIFhF TlBNVV9NT0RFX0FMTCkgJiYKPiAgICAgICAgICAgICAgICF2cG11LT5hcmNoX3ZwbXVfb3BzLT5k b19pbnRlcnJ1cHQocmVncykgKQo+ICAgICAgICAgICAgICByZXR1cm47Cj4gIAo+IGRpZmYgLS1n aXQgYS94ZW4vYXJjaC94ODYvZG9tYWluLmMgYi94ZW4vYXJjaC94ODYvZG9tYWluLmMKPiBpbmRl eCA3ZDMwNzFlLi43NWRlZDI1IDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9kb21haW4uYwo+ ICsrKyBiL3hlbi9hcmNoL3g4Ni9kb21haW4uYwo+IEBAIC0zMjgsNyArMzI4LDcgQEAgaW50IHN3 aXRjaF9jb21wYXQoc3RydWN0IGRvbWFpbiAqZCkKPiAgCj4gICAgICBpZiAoIGlzX2h2bV9kb21h aW4oZCkgfHwgZC0+dG90X3BhZ2VzICE9IDAgKQo+ICAgICAgICAgIHJldHVybiAtRUFDQ0VTOwo+ IC0gICAgaWYgKCBpc19wdl8zMmJpdF9kb21haW4oZCkgfHwgaXNfcHZoXzMyYml0X2RvbWFpbihk KSApCj4gKyAgICBpZiAoIGlzX3B2XzMyYml0X2RvbWFpbihkKSApCj4gICAgICAgICAgcmV0dXJu IDA7Cj4gIAo+ICAgICAgZC0+YXJjaC5oYXNfMzJiaXRfc2hpbmZvID0gMTsKPiBAQCAtMzM5LDEy ICszMzksNyBAQCBpbnQgc3dpdGNoX2NvbXBhdChzdHJ1Y3QgZG9tYWluICpkKQo+ICAgICAgewo+ ICAgICAgICAgIHJjID0gc2V0dXBfY29tcGF0X2FyZ194bGF0KHYpOwo+ICAgICAgICAgIGlmICgg IXJjICkKPiAtICAgICAgICB7Cj4gLSAgICAgICAgICAgIGlmICggIWlzX3B2aF9kb21haW4oZCkg KQo+IC0gICAgICAgICAgICAgICAgcmMgPSBzZXR1cF9jb21wYXRfbDQodik7Cj4gLSAgICAgICAg ICAgIGVsc2UKPiAtICAgICAgICAgICAgICAgIHJjID0gaHZtX3NldF9tb2RlKHYsIDQpOwo+IC0g ICAgICAgIH0KPiArICAgICAgICAgICAgcmMgPSBzZXR1cF9jb21wYXRfbDQodik7Cj4gIAo+ICAg ICAgICAgIGlmICggcmMgKQo+ICAgICAgICAgICAgICBnb3RvIHVuZG9fYW5kX2ZhaWw7Cj4gQEAg LTM2Myw3ICszNTgsNyBAQCBpbnQgc3dpdGNoX2NvbXBhdChzdHJ1Y3QgZG9tYWluICpkKQo+ICAg ICAgewo+ICAgICAgICAgIGZyZWVfY29tcGF0X2FyZ194bGF0KHYpOwo+ICAKPiAtICAgICAgICBp ZiAoICFpc19wdmhfZG9tYWluKGQpICYmICFwYWdldGFibGVfaXNfbnVsbCh2LT5hcmNoLmd1ZXN0 X3RhYmxlKSApCj4gKyAgICAgICAgaWYgKCAhcGFnZXRhYmxlX2lzX251bGwodi0+YXJjaC5ndWVz dF90YWJsZSkgKQo+ICAgICAgICAgICAgICByZWxlYXNlX2NvbXBhdF9sNCh2KTsKPiAgICAgIH0K PiAgCj4gQEAgLTg3Myw3ICs4NjgsNyBAQCBpbnQgYXJjaF9zZXRfaW5mb19ndWVzdCgKPiAgCj4g ICAgICAvKiBUaGUgY29udGV4dCBpcyBhIGNvbXBhdC1tb2RlIG9uZSBpZiB0aGUgdGFyZ2V0IGRv bWFpbiBpcyBjb21wYXQtbW9kZTsKPiAgICAgICAqIHdlIGV4cGVjdCB0aGUgdG9vbHMgdG8gRFRS VCBldmVuIGluIGNvbXBhdC1tb2RlIGNhbGxlcnMuICovCj4gLSAgICBjb21wYXQgPSBpc19wdl8z MmJpdF9kb21haW4oZCkgfHwgaXNfcHZoXzMyYml0X2RvbWFpbihkKTsKPiArICAgIGNvbXBhdCA9 IGlzX3B2XzMyYml0X2RvbWFpbihkKTsKPiAgCj4gICNkZWZpbmUgYyhmbGQpIChjb21wYXQgPyAo Yy5jbXAtPmZsZCkgOiAoYy5uYXQtPmZsZCkpCj4gICAgICBmbGFncyA9IGMoZmxhZ3MpOwo+IEBA IC05MjUsMTggKzkyMCw2IEBAIGludCBhcmNoX3NldF9pbmZvX2d1ZXN0KAo+ICAgICAgICAgICAg ICAgKGMobGR0X2VudHMpID4gODE5MikgKQo+ICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsK PiAgICAgIH0KPiAtICAgIGVsc2UgaWYgKCBpc19wdmhfZG9tYWluKGQpICkKPiAtICAgIHsKPiAt ICAgICAgICBpZiAoIGMoY3RybHJlZ1swXSkgfHwgYyhjdHJscmVnWzFdKSB8fCBjKGN0cmxyZWdb Ml0pIHx8Cj4gLSAgICAgICAgICAgICBjKGN0cmxyZWdbNF0pIHx8IGMoY3RybHJlZ1s1XSkgfHwg YyhjdHJscmVnWzZdKSB8fAo+IC0gICAgICAgICAgICAgYyhjdHJscmVnWzddKSB8fCAgYyhsZHRf YmFzZSkgfHwgYyhsZHRfZW50cykgfHwKPiAtICAgICAgICAgICAgIGModXNlcl9yZWdzLmNzKSB8 fCBjKHVzZXJfcmVncy5zcykgfHwgYyh1c2VyX3JlZ3MuZXMpIHx8Cj4gLSAgICAgICAgICAgICBj KHVzZXJfcmVncy5kcykgfHwgYyh1c2VyX3JlZ3MuZnMpIHx8IGModXNlcl9yZWdzLmdzKSB8fAo+ IC0gICAgICAgICAgICAgYyhrZXJuZWxfc3MpIHx8IGMoa2VybmVsX3NwKSB8fCBjKGdkdF9lbnRz KSB8fAo+IC0gICAgICAgICAgICAgKCFjb21wYXQgJiYgKGMubmF0LT5nc19iYXNlX2tlcm5lbCB8 fAo+IC0gICAgICAgICAgICAgIGMubmF0LT5mc19iYXNlIHx8IGMubmF0LT5nc19iYXNlX3VzZXIp KSApCj4gLSAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+IC0gICAgfQo+ICAKPiAgICAgIHYt PmZwdV9pbml0aWFsaXNlZCA9ICEhKGZsYWdzICYgVkdDRl9JMzg3X1ZBTElEKTsKPiAgCj4gQEAg LTk5MiwyMSArOTc1LDcgQEAgaW50IGFyY2hfc2V0X2luZm9fZ3Vlc3QoCj4gICAgICAgICAgICAg IHYtPmFyY2guZGVidWdyZWdbaV0gPSBjKGRlYnVncmVnW2ldKTsKPiAgCj4gICAgICAgICAgaHZt X3NldF9pbmZvX2d1ZXN0KHYpOwo+IC0KPiAtICAgICAgICBpZiAoIGlzX2h2bV9kb21haW4oZCkg fHwgdi0+aXNfaW5pdGlhbGlzZWQgKQo+IC0gICAgICAgICAgICBnb3RvIG91dDsKPiAtCj4gLSAg ICAgICAgLyogTkI6IE5vIG5lZWQgdG8gdXNlIFBWIGNyMyB1bi1waWNrbGluZyBtYWNyb3MgKi8K PiAtICAgICAgICBjcjNfZ2ZuID0gYyhjdHJscmVnWzNdKSA+PiBQQUdFX1NISUZUOwo+IC0gICAg ICAgIGNyM19wYWdlID0gZ2V0X3BhZ2VfZnJvbV9nZm4oZCwgY3IzX2dmbiwgTlVMTCwgUDJNX0FM TE9DKTsKPiAtCj4gLSAgICAgICAgdi0+YXJjaC5jcjMgPSBwYWdlX3RvX21hZGRyKGNyM19wYWdl KTsKPiAtICAgICAgICB2LT5hcmNoLmh2bV92Y3B1Lmd1ZXN0X2NyWzNdID0gYyhjdHJscmVnWzNd KTsKPiAtICAgICAgICB2LT5hcmNoLmd1ZXN0X3RhYmxlID0gcGFnZXRhYmxlX2Zyb21fcGFnZShj cjNfcGFnZSk7Cj4gLQo+IC0gICAgICAgIEFTU0VSVChwYWdpbmdfbW9kZV9lbmFibGVkKGQpKTsK PiAtCj4gLSAgICAgICAgZ290byBwdmhfc2tpcF9wdl9zdHVmZjsKPiArICAgICAgICBnb3RvIG91 dDsKPiAgICAgIH0KPiAgCj4gICAgICBpbml0X2ludDgwX2RpcmVjdF90cmFwKHYpOwo+IEBAIC0x MjU5LDcgKzEyMjgsNiBAQCBpbnQgYXJjaF9zZXRfaW5mb19ndWVzdCgKPiAgCj4gICAgICBjbGVh cl9iaXQoX1ZQRl9pbl9yZXNldCwgJnYtPnBhdXNlX2ZsYWdzKTsKPiAgCj4gLSBwdmhfc2tpcF9w dl9zdHVmZjoKPiAgICAgIGlmICggdi0+dmNwdV9pZCA9PSAwICkKPiAgICAgICAgICB1cGRhdGVf ZG9tYWluX3dhbGxjbG9ja190aW1lKGQpOwo+ICAKPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2 L2RvbWFpbl9idWlsZC5jIGIveGVuL2FyY2gveDg2L2RvbWFpbl9idWlsZC5jCj4gaW5kZXggNTA2 NzgwZi4uODhmNjVjYiAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYvZG9tYWluX2J1aWxkLmMK PiArKysgYi94ZW4vYXJjaC94ODYvZG9tYWluX2J1aWxkLmMKPiBAQCAtNDcxLDE0MSArNDcxLDYg QEAgc3RhdGljIHZvaWQgX19pbml0IHByb2Nlc3NfZG9tMF9pb3BvcnRzX2Rpc2FibGUoc3RydWN0 IGRvbWFpbiAqZG9tMCkKPiAgICAgIH0KPiAgfQo+ICAKPiAtc3RhdGljIF9faW5pdCB2b2lkIHB2 aF9hZGRfbWVtX21hcHBpbmcoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBnZm4sCj4g LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbWZu LCB1bnNpZ25lZCBsb25nIG5yX21mbnMpCj4gLXsKPiAtICAgIHVuc2lnbmVkIGxvbmcgaTsKPiAt ICAgIHAybV9hY2Nlc3NfdCBhOwo+IC0gICAgbWZuX3Qgb21mbjsKPiAtICAgIHAybV90eXBlX3Qg dDsKPiAtICAgIGludCByYzsKPiAtCj4gLSAgICBmb3IgKCBpID0gMDsgaSA8IG5yX21mbnM7IGkr KyApCj4gLSAgICB7Cj4gLSAgICAgICAgaWYgKCAhaW9tZW1fYWNjZXNzX3Blcm1pdHRlZChkLCBt Zm4gKyBpLCBtZm4gKyBpKSApCj4gLSAgICAgICAgewo+IC0gICAgICAgICAgICBvbWZuID0gZ2V0 X2dmbl9xdWVyeV91bmxvY2tlZChkLCBnZm4gKyBpLCAmdCk7Cj4gLSAgICAgICAgICAgIGd1ZXN0 X3BoeXNtYXBfcmVtb3ZlX3BhZ2UoZCwgX2dmbihnZm4gKyBpKSwgb21mbiwgUEFHRV9PUkRFUl80 Syk7Cj4gLSAgICAgICAgICAgIGNvbnRpbnVlOwo+IC0gICAgICAgIH0KPiAtCj4gLSAgICAgICAg aWYgKCByYW5nZXNldF9jb250YWluc19zaW5nbGV0b24obW1pb19yb19yYW5nZXMsIG1mbiArIGkp ICkKPiAtICAgICAgICAgICAgYSA9IHAybV9hY2Nlc3NfcjsKPiAtICAgICAgICBlbHNlCj4gLSAg ICAgICAgICAgIGEgPSBwMm1fYWNjZXNzX3J3Owo+IC0KPiAtICAgICAgICBpZiAoIChyYyA9IHNl dF9tbWlvX3AybV9lbnRyeShkLCBnZm4gKyBpLCBfbWZuKG1mbiArIGkpLAo+IC0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBBR0VfT1JERVJfNEssIGEpKSApCj4gLSAgICAg ICAgICAgIHBhbmljKCJwdmhfYWRkX21lbV9tYXBwaW5nOiBnZm46JWx4IG1mbjolbHggaTolbGQg cmM6JWRcbiIsCj4gLSAgICAgICAgICAgICAgICAgIGdmbiwgbWZuLCBpLCByYyk7Cj4gLSAgICAg ICAgaWYgKCAhKGkgJiAweGZmZmZmKSApCj4gLSAgICAgICAgICAgICAgICBwcm9jZXNzX3BlbmRp bmdfc29mdGlycXMoKTsKPiAtICAgIH0KPiAtfQo+IC0KPiAtLyoKPiAtICogU2V0IHRoZSAxOjEg bWFwIGZvciBhbGwgbm9uLVJBTSByZWdpb25zIGZvciBkb20gMC4gVGh1cywgZG9tMCB3aWxsIGhh dmUKPiAtICogdGhlIGVudGlyZSBpbyByZWdpb24gbWFwcGVkIGluIHRoZSBFUFQvTlBULgo+IC0g Kgo+IC0gKiBwdmggZml4bWU6IFRoZSBmb2xsb3dpbmcgZG9lc24ndCBtYXAgTU1JTyByYW5nZXMg d2hlbiB0aGV5IHNpdCBhYm92ZSB0aGUKPiAtICogICAgICAgICAgICBoaWdoZXN0IEU4MjAgY292 ZXJlZCBhZGRyZXNzLgo+IC0gKi8KPiAtc3RhdGljIF9faW5pdCB2b2lkIHB2aF9tYXBfYWxsX2lv bWVtKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMpCj4gLXsKPiAtICAg IHVuc2lnbmVkIGxvbmcgc3RhcnRfcGZuLCBlbmRfcGZuLCBlbmQgPSAwLCBzdGFydCA9IDA7Cj4g LSAgICBjb25zdCBzdHJ1Y3QgZTgyMGVudHJ5ICplbnRyeTsKPiAtICAgIHVuc2lnbmVkIGxvbmcg bnVtcCwgbm1hcCwgbmF2YWlsLCBtZm4sIG5yX2hvbGVzID0gMDsKPiAtICAgIHVuc2lnbmVkIGlu dCBpOwo+IC0gICAgc3RydWN0IHBhZ2VfaW5mbyAqcGFnZTsKPiAtICAgIGludCByYzsKPiAtCj4g LSAgICBmb3IgKCBpID0gMCwgZW50cnkgPSBlODIwLm1hcDsgaSA8IGU4MjAubnJfbWFwOyBpKyss IGVudHJ5KysgKQo+IC0gICAgewo+IC0gICAgICAgIGVuZCA9IGVudHJ5LT5hZGRyICsgZW50cnkt PnNpemU7Cj4gLQo+IC0gICAgICAgIGlmICggZW50cnktPnR5cGUgPT0gRTgyMF9SQU0gfHwgZW50 cnktPnR5cGUgPT0gRTgyMF9VTlVTQUJMRSB8fAo+IC0gICAgICAgICAgICAgaSA9PSBlODIwLm5y X21hcCAtIDEgKQo+IC0gICAgICAgIHsKPiAtICAgICAgICAgICAgc3RhcnRfcGZuID0gUEZOX0RP V04oc3RhcnQpOwo+IC0KPiAtICAgICAgICAgICAgLyogVW51c2VkIFJBTSBhcmVhcyBhcmUgbWFy a2VkIFVOVVNBQkxFLCBzbyBza2lwIHRoZW0gdG9vICovCj4gLSAgICAgICAgICAgIGlmICggZW50 cnktPnR5cGUgPT0gRTgyMF9SQU0gfHwgZW50cnktPnR5cGUgPT0gRTgyMF9VTlVTQUJMRSApCj4g LSAgICAgICAgICAgICAgICBlbmRfcGZuID0gUEZOX1VQKGVudHJ5LT5hZGRyKTsKPiAtICAgICAg ICAgICAgZWxzZQo+IC0gICAgICAgICAgICAgICAgZW5kX3BmbiA9IFBGTl9VUChlbmQpOwo+IC0K PiAtICAgICAgICAgICAgaWYgKCBzdGFydF9wZm4gPCBlbmRfcGZuICkKPiAtICAgICAgICAgICAg ewo+IC0gICAgICAgICAgICAgICAgbnVtcCA9IGVuZF9wZm4gLSBzdGFydF9wZm47Cj4gLSAgICAg ICAgICAgICAgICAvKiBBZGQgcGFnZXMgdG8gdGhlIG1hcHBpbmcgKi8KPiAtICAgICAgICAgICAg ICAgIHB2aF9hZGRfbWVtX21hcHBpbmcoZCwgc3RhcnRfcGZuLCBzdGFydF9wZm4sIG51bXApOwo+ IC0gICAgICAgICAgICAgICAgaWYgKCBzdGFydF9wZm4gPCBucl9wYWdlcyApCj4gLSAgICAgICAg ICAgICAgICAgICAgbnJfaG9sZXMgKz0gKGVuZF9wZm4gPCBucl9wYWdlcykgPwo+IC0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1wIDogKG5yX3BhZ2VzIC0gc3RhcnRfcGZu KTsKPiAtICAgICAgICAgICAgfQo+IC0gICAgICAgICAgICBzdGFydCA9IGVuZDsKPiAtICAgICAg ICB9Cj4gLSAgICB9Cj4gLQo+IC0gICAgLyoKPiAtICAgICAqIFNvbWUgQklPU2VzIG1heSBub3Qg cmVwb3J0IGlvIHNwYWNlIGFib3ZlIHJhbSB0aGF0IGlzIGxlc3MgdGhhbiA0R0IuIFNvCj4gLSAg ICAgKiB3ZSBtYXAgYW55IG5vbi1yYW0gdXB0byA0R0IuCj4gLSAgICAgKi8KPiAtICAgIGlmICgg ZW5kIDwgR0IoNCkgKQo+IC0gICAgewo+IC0gICAgICAgIHN0YXJ0X3BmbiA9IFBGTl9VUChlbmQp Owo+IC0gICAgICAgIGVuZF9wZm4gPSAoR0IoNCkpID4+IFBBR0VfU0hJRlQ7Cj4gLSAgICAgICAg bnVtcCA9IGVuZF9wZm4gLSBzdGFydF9wZm47Cj4gLSAgICAgICAgcHZoX2FkZF9tZW1fbWFwcGlu ZyhkLCBzdGFydF9wZm4sIHN0YXJ0X3BmbiwgbnVtcCk7Cj4gLSAgICB9Cj4gLQo+IC0gICAgLyoK PiAtICAgICAqIEFkZCB0aGUgbWVtb3J5IHJlbW92ZWQgYnkgdGhlIGhvbGVzIGF0IHRoZSBlbmQg b2YgdGhlCj4gLSAgICAgKiBtZW1vcnkgbWFwLgo+IC0gICAgICovCj4gLSAgICBwYWdlID0gcGFn ZV9saXN0X2ZpcnN0KCZkLT5wYWdlX2xpc3QpOwo+IC0gICAgZm9yICggaSA9IDAsIGVudHJ5ID0g ZTgyMC5tYXA7IGkgPCBlODIwLm5yX21hcCAmJiBucl9ob2xlcyA+IDA7Cj4gLSAgICAgICAgICBp KyssIGVudHJ5KysgKQo+IC0gICAgewo+IC0gICAgICAgIGlmICggZW50cnktPnR5cGUgIT0gRTgy MF9SQU0gKQo+IC0gICAgICAgICAgICBjb250aW51ZTsKPiAtCj4gLSAgICAgICAgZW5kX3BmbiA9 IFBGTl9VUChlbnRyeS0+YWRkciArIGVudHJ5LT5zaXplKTsKPiAtICAgICAgICBpZiAoIGVuZF9w Zm4gPD0gbnJfcGFnZXMgKQo+IC0gICAgICAgICAgICBjb250aW51ZTsKPiAtCj4gLSAgICAgICAg bmF2YWlsID0gZW5kX3BmbiAtIG5yX3BhZ2VzOwo+IC0gICAgICAgIG5tYXAgPSBtaW4obmF2YWls LCBucl9ob2xlcyk7Cj4gLSAgICAgICAgbnJfaG9sZXMgLT0gbm1hcDsKPiAtICAgICAgICBzdGFy dF9wZm4gPSBtYXhfdCh1bnNpZ25lZCBsb25nLCBucl9wYWdlcywgUEZOX0RPV04oZW50cnktPmFk ZHIpKTsKPiAtICAgICAgICAvKgo+IC0gICAgICAgICAqIFBvcHVsYXRlIHRoaXMgbWVtb3J5IHJl Z2lvbiB1c2luZyB0aGUgcGFnZXMKPiAtICAgICAgICAgKiBwcmV2aW91c2x5IHJlbW92ZWQgYnkg dGhlIE1NSU8gaG9sZXMuCj4gLSAgICAgICAgICovCj4gLSAgICAgICAgZG8KPiAtICAgICAgICB7 Cj4gLSAgICAgICAgICAgIG1mbiA9IHBhZ2VfdG9fbWZuKHBhZ2UpOwo+IC0gICAgICAgICAgICBp ZiAoIGdldF9ncGZuX2Zyb21fbWZuKG1mbikgIT0gSU5WQUxJRF9NMlBfRU5UUlkgKQo+IC0gICAg ICAgICAgICAgICAgY29udGludWU7Cj4gLQo+IC0gICAgICAgICAgICByYyA9IGd1ZXN0X3BoeXNt YXBfYWRkX3BhZ2UoZCwgX2dmbihzdGFydF9wZm4pLCBfbWZuKG1mbiksIDApOwo+IC0gICAgICAg ICAgICBpZiAoIHJjICE9IDAgKQo+IC0gICAgICAgICAgICAgICAgcGFuaWMoIlVuYWJsZSB0byBh ZGQgZ3BmbiAlI2x4IG1mbiAlI2x4IHRvIERvbTAgcGh5c21hcDogJWQiLAo+IC0gICAgICAgICAg ICAgICAgICAgICAgc3RhcnRfcGZuLCBtZm4sIHJjKTsKPiAtICAgICAgICAgICAgc3RhcnRfcGZu Kys7Cj4gLSAgICAgICAgICAgIG5tYXAtLTsKPiAtICAgICAgICAgICAgaWYgKCAhKG5tYXAgJiAw eGZmZmZmKSApCj4gLSAgICAgICAgICAgICAgICBwcm9jZXNzX3BlbmRpbmdfc29mdGlycXMoKTsK PiAtICAgICAgICB9IHdoaWxlICggKChwYWdlID0gcGFnZV9saXN0X25leHQocGFnZSwgJmQtPnBh Z2VfbGlzdCkpICE9IE5VTEwpCj4gLSAgICAgICAgICAgICAgICAgICYmIG5tYXAgKTsKPiAtICAg ICAgICBBU1NFUlQobm1hcCA9PSAwKTsKPiAtICAgICAgICBpZiAoIHBhZ2UgPT0gTlVMTCApCj4g LSAgICAgICAgICAgIGJyZWFrOwo+IC0gICAgfQo+IC0KPiAtICAgIEFTU0VSVChucl9ob2xlcyA9 PSAwKTsKPiAtfQo+IC0KPiAgc3RhdGljIF9faW5pdCB2b2lkIHB2aF9zZXR1cF9lODIwKHN0cnVj dCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMpCj4gIHsKPiAgICAgIHN0cnVjdCBl ODIwZW50cnkgKmVudHJ5LCAqZW50cnlfZ3Vlc3Q7Cj4gQEAgLTY3NiwxMiArNTQxLDYgQEAgc3Rh dGljIF9faW5pdCB2b2lkIHB2aF9zZXR1cF9lODIwKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVk IGxvbmcgbnJfcGFnZXMpCj4gIHN0YXRpYyBfX2luaXQgdm9pZCBkb20wX3VwZGF0ZV9waHlzbWFw KHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgcGZuLAo+ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbWZuLCB1bnNpZ25lZCBsb25nIHZwaHlz bWFwX3MpCj4gIHsKPiAtICAgIGlmICggaXNfcHZoX2RvbWFpbihkKSApCj4gLSAgICB7Cj4gLSAg ICAgICAgaW50IHJjID0gZ3Vlc3RfcGh5c21hcF9hZGRfcGFnZShkLCBfZ2ZuKHBmbiksIF9tZm4o bWZuKSwgMCk7Cj4gLSAgICAgICAgQlVHX09OKHJjKTsKPiAtICAgICAgICByZXR1cm47Cj4gLSAg ICB9Cj4gICAgICBpZiAoICFpc19wdl8zMmJpdF9kb21haW4oZCkgKQo+ICAgICAgICAgICgodW5z aWduZWQgbG9uZyAqKXZwaHlzbWFwX3MpW3Bmbl0gPSBtZm47Cj4gICAgICBlbHNlCj4gQEAgLTY5 MCw3OCArNTQ5LDYgQEAgc3RhdGljIF9faW5pdCB2b2lkIGRvbTBfdXBkYXRlX3BoeXNtYXAoc3Ry dWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBwZm4sCj4gICAgICBzZXRfZ3Bmbl9mcm9tX21m bihtZm4sIHBmbik7Cj4gIH0KPiAgCj4gLS8qIFJlcGxhY2UgbWZucyB3aXRoIHBmbnMgaW4gZG9t MCBwYWdlIHRhYmxlcyAqLwo+IC1zdGF0aWMgX19pbml0IHZvaWQgcHZoX2ZpeHVwX3BhZ2VfdGFi bGVzX2Zvcl9oYXAoc3RydWN0IHZjcHUgKnYsCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHZfc3RhcnQsCj4gLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHZf ZW5kKQo+IC17Cj4gLSAgICBpbnQgaSwgaiwgazsKPiAtICAgIGw0X3BnZW50cnlfdCAqcGw0ZSwg Kmw0c3RhcnQ7Cj4gLSAgICBsM19wZ2VudHJ5X3QgKnBsM2U7Cj4gLSAgICBsMl9wZ2VudHJ5X3Qg KnBsMmU7Cj4gLSAgICBsMV9wZ2VudHJ5X3QgKnBsMWU7Cj4gLSAgICB1bnNpZ25lZCBsb25nIGNy M19wZm47Cj4gLQo+IC0gICAgQVNTRVJUKHBhZ2luZ19tb2RlX2VuYWJsZWQodi0+ZG9tYWluKSk7 Cj4gLQo+IC0gICAgbDRzdGFydCA9IG1hcF9kb21haW5fcGFnZShfbWZuKHBhZ2V0YWJsZV9nZXRf cGZuKHYtPmFyY2guZ3Vlc3RfdGFibGUpKSk7Cj4gLQo+IC0gICAgLyogQ2xlYXIgZW50cmllcyBw cmlvciB0byBndWVzdCBMNCBzdGFydCAqLwo+IC0gICAgcGw0ZSA9IGw0c3RhcnQgKyBsNF90YWJs ZV9vZmZzZXQodl9zdGFydCk7Cj4gLSAgICBtZW1zZXQobDRzdGFydCwgMCwgKHVuc2lnbmVkIGxv bmcpcGw0ZSAtICh1bnNpZ25lZCBsb25nKWw0c3RhcnQpOwo+IC0KPiAtICAgIGZvciAoIDsgcGw0 ZSA8PSBsNHN0YXJ0ICsgbDRfdGFibGVfb2Zmc2V0KHZfZW5kIC0gMSk7IHBsNGUrKyApCj4gLSAg ICB7Cj4gLSAgICAgICAgcGwzZSA9IG1hcF9sM3RfZnJvbV9sNGUoKnBsNGUpOwo+IC0gICAgICAg IGZvciAoIGkgPSAwOyBpIDwgUEFHRV9TSVpFIC8gc2l6ZW9mKCpwbDNlKTsgaSsrLCBwbDNlKysg KQo+IC0gICAgICAgIHsKPiAtICAgICAgICAgICAgaWYgKCAhKGwzZV9nZXRfZmxhZ3MoKnBsM2Up ICYgX1BBR0VfUFJFU0VOVCkgKQo+IC0gICAgICAgICAgICAgICAgY29udGludWU7Cj4gLQo+IC0g ICAgICAgICAgICBwbDJlID0gbWFwX2wydF9mcm9tX2wzZSgqcGwzZSk7Cj4gLSAgICAgICAgICAg IGZvciAoIGogPSAwOyBqIDwgUEFHRV9TSVpFIC8gc2l6ZW9mKCpwbDJlKTsgaisrLCBwbDJlKysg KQo+IC0gICAgICAgICAgICB7Cj4gLSAgICAgICAgICAgICAgICBpZiAoICEobDJlX2dldF9mbGFn cygqcGwyZSkgICYgX1BBR0VfUFJFU0VOVCkgKQo+IC0gICAgICAgICAgICAgICAgICAgIGNvbnRp bnVlOwo+IC0KPiAtICAgICAgICAgICAgICAgIHBsMWUgPSBtYXBfbDF0X2Zyb21fbDJlKCpwbDJl KTsKPiAtICAgICAgICAgICAgICAgIGZvciAoIGsgPSAwOyBrIDwgUEFHRV9TSVpFIC8gc2l6ZW9m KCpwbDFlKTsgaysrLCBwbDFlKysgKQo+IC0gICAgICAgICAgICAgICAgewo+IC0gICAgICAgICAg ICAgICAgICAgIGlmICggIShsMWVfZ2V0X2ZsYWdzKCpwbDFlKSAmIF9QQUdFX1BSRVNFTlQpICkK PiAtICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Cj4gLQo+IC0gICAgICAgICAgICAg ICAgICAgICpwbDFlID0gbDFlX2Zyb21fcGZuKGdldF9ncGZuX2Zyb21fbWZuKGwxZV9nZXRfcGZu KCpwbDFlKSksCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbDFl X2dldF9mbGFncygqcGwxZSkpOwo+IC0gICAgICAgICAgICAgICAgfQo+IC0gICAgICAgICAgICAg ICAgdW5tYXBfZG9tYWluX3BhZ2UocGwxZSk7Cj4gLSAgICAgICAgICAgICAgICAqcGwyZSA9IGwy ZV9mcm9tX3BmbihnZXRfZ3Bmbl9mcm9tX21mbihsMmVfZ2V0X3BmbigqcGwyZSkpLAo+IC0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbDJlX2dldF9mbGFncygqcGwyZSkpOwo+ IC0gICAgICAgICAgICB9Cj4gLSAgICAgICAgICAgIHVubWFwX2RvbWFpbl9wYWdlKHBsMmUpOwo+ IC0gICAgICAgICAgICAqcGwzZSA9IGwzZV9mcm9tX3BmbihnZXRfZ3Bmbl9mcm9tX21mbihsM2Vf Z2V0X3BmbigqcGwzZSkpLAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsM2Vf Z2V0X2ZsYWdzKCpwbDNlKSk7Cj4gLSAgICAgICAgfQo+IC0gICAgICAgIHVubWFwX2RvbWFpbl9w YWdlKHBsM2UpOwo+IC0gICAgICAgICpwbDRlID0gbDRlX2Zyb21fcGZuKGdldF9ncGZuX2Zyb21f bWZuKGw0ZV9nZXRfcGZuKCpwbDRlKSksCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg bDRlX2dldF9mbGFncygqcGw0ZSkpOwo+IC0gICAgfQo+IC0KPiAtICAgIC8qIENsZWFyIGVudHJp ZXMgcG9zdCBndWVzdCBMNC4gKi8KPiAtICAgIGlmICggKHVuc2lnbmVkIGxvbmcpcGw0ZSAmIChQ QUdFX1NJWkUgLSAxKSApCj4gLSAgICAgICAgbWVtc2V0KHBsNGUsIDAsIFBBR0VfU0laRSAtICgo dW5zaWduZWQgbG9uZylwbDRlICYgKFBBR0VfU0laRSAtIDEpKSk7Cj4gLQo+IC0gICAgdW5tYXBf ZG9tYWluX3BhZ2UobDRzdGFydCk7Cj4gLQo+IC0gICAgY3IzX3BmbiA9IGdldF9ncGZuX2Zyb21f bWZuKHBhZGRyX3RvX3Bmbih2LT5hcmNoLmNyMykpOwo+IC0gICAgdi0+YXJjaC5odm1fdmNwdS5n dWVzdF9jclszXSA9IHBmbl90b19wYWRkcihjcjNfcGZuKTsKPiAtCj4gLSAgICAvKgo+IC0gICAg ICogRmluYWxseSwgd2UgdXBkYXRlIHRoZSBwYWdpbmcgbW9kZXMgKGhhcF91cGRhdGVfcGFnaW5n X21vZGVzKS4gVGhpcyB3aWxsCj4gLSAgICAgKiBjcmVhdGUgbW9uaXRvcl90YWJsZSBmb3IgdXMs IHVwZGF0ZSB2LT5hcmNoLmNyMywgYW5kIHVwZGF0ZSB2bWNzLmNyMy4KPiAtICAgICAqLwo+IC0g ICAgcGFnaW5nX3VwZGF0ZV9wYWdpbmdfbW9kZXModik7Cj4gLX0KPiAtCj4gIHN0YXRpYyBfX2lu aXQgdm9pZCBtYXJrX3B2X3B0X3BhZ2VzX3Jkb25seShzdHJ1Y3QgZG9tYWluICpkLAo+ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbDRfcGdlbnRyeV90ICpsNHN0 YXJ0LAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu ZWQgbG9uZyB2cHRfc3RhcnQsCj4gQEAgLTEwNTMsOCArODQwLDYgQEAgc3RhdGljIGludCBfX2lu aXQgY29uc3RydWN0X2RvbTBfcHYoCj4gICAgICBsM19wZ2VudHJ5X3QgKmwzdGFiID0gTlVMTCwg Kmwzc3RhcnQgPSBOVUxMOwo+ICAgICAgbDJfcGdlbnRyeV90ICpsMnRhYiA9IE5VTEwsICpsMnN0 YXJ0ID0gTlVMTDsKPiAgICAgIGwxX3BnZW50cnlfdCAqbDF0YWIgPSBOVUxMLCAqbDFzdGFydCA9 IE5VTEw7Cj4gLSAgICBwYWRkcl90IHNoYXJlZF9pbmZvX3BhZGRyID0gMDsKPiAtICAgIHUzMiBz YXZlX3B2aF9wZ19tb2RlID0gMDsKPiAgCj4gICAgICAvKgo+ICAgICAgICogVGhpcyBmdWxseSBk ZXNjcmliZXMgdGhlIG1lbW9yeSBsYXlvdXQgb2YgdGhlIGluaXRpYWwgZG9tYWluLiBBbGwgCj4g QEAgLTExMzUsMTMgKzkyMCw2IEBAIHN0YXRpYyBpbnQgX19pbml0IGNvbnN0cnVjdF9kb20wX3B2 KAo+ICAgICAgICAgICAgICByYyA9IC1FSU5WQUw7Cj4gICAgICAgICAgICAgIGdvdG8gb3V0Owo+ ICAgICAgICAgIH0KPiAtICAgICAgICBpZiAoIGlzX3B2aF9kb21haW4oZCkgJiYKPiAtICAgICAg ICAgICAgICF0ZXN0X2JpdChYRU5GRUFUX2h2bV9jYWxsYmFja192ZWN0b3IsIHBhcm1zLmZfc3Vw cG9ydGVkKSApCj4gLSAgICAgICAgewo+IC0gICAgICAgICAgICBwcmludGsoIktlcm5lbCBkb2Vz IG5vdCBzdXBwb3J0IFBWSCBtb2RlXG4iKTsKPiAtICAgICAgICAgICAgcmMgPSAtRUlOVkFMOwo+ IC0gICAgICAgICAgICBnb3RvIG91dDsKPiAtICAgICAgICB9Cj4gICAgICB9Cj4gIAo+ICAgICAg aWYgKCBjb21wYXQzMiApCj4gQEAgLTEyMDcsMTIgKzk4NSw2IEBAIHN0YXRpYyBpbnQgX19pbml0 IGNvbnN0cnVjdF9kb20wX3B2KAo+ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yoc3Ry dWN0IHN0YXJ0X2luZm8pICsKPiAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHN0cnVj dCBkb20wX3ZnYV9jb25zb2xlX2luZm8pKTsKPiAgCj4gLSAgICBpZiAoIGlzX3B2aF9kb21haW4o ZCkgKQo+IC0gICAgewo+IC0gICAgICAgIHNoYXJlZF9pbmZvX3BhZGRyID0gcm91bmRfcGd1cCh2 c3RhcnRpbmZvX2VuZCkgLSB2X3N0YXJ0Owo+IC0gICAgICAgIHZzdGFydGluZm9fZW5kICAgKz0g UEFHRV9TSVpFOwo+IC0gICAgfQo+IC0KPiAgICAgIHZwdF9zdGFydCAgICAgICAgPSByb3VuZF9w Z3VwKHZzdGFydGluZm9fZW5kKTsKPiAgICAgIGZvciAoIG5yX3B0X3BhZ2VzID0gMjsgOyBucl9w dF9wYWdlcysrICkKPiAgICAgIHsKPiBAQCAtMTQ1OCwxMSArMTIzMCw2IEBAIHN0YXRpYyBpbnQg X19pbml0IGNvbnN0cnVjdF9kb20wX3B2KAo+ICAgICAgICAgIHNldHVwX2RvbTBfdmNwdShkLCBp LCBjcHUpOwo+ICAgICAgfQo+ICAKPiAtICAgIC8qCj4gLSAgICAgKiBwdmg6IHdlIHRlbXBvcmFy aWx5IGRpc2FibGUgZC0+YXJjaC5wYWdpbmcubW9kZSBzbyB0aGF0IHdlIGNhbiBidWlsZCBjcjMK PiAtICAgICAqIG5lZWRlZCB0byBydW4gb24gZG9tMCdzIHBhZ2UgdGFibGVzLgo+IC0gICAgICov Cj4gLSAgICBzYXZlX3B2aF9wZ19tb2RlID0gZC0+YXJjaC5wYWdpbmcubW9kZTsKPiAgICAgIGQt PmFyY2gucGFnaW5nLm1vZGUgPSAwOwo+ICAKPiAgICAgIC8qIFNldCB1cCBDUjMgdmFsdWUgZm9y IHdyaXRlX3B0YmFzZSAqLwo+IEBAIC0xNTMyLDI1ICsxMjk5LDYgQEAgc3RhdGljIGludCBfX2lu aXQgY29uc3RydWN0X2RvbTBfcHYoCj4gICAgICAgICAgICAgICAgICAgICAgICAgICBucl9wYWdl cyk7Cj4gICAgICB9Cj4gIAo+IC0gICAgLyoKPiAtICAgICAqIFdlIGVuYWJsZSBwYWdpbmcgbW9k ZSBhZ2FpbiBzbyBndWVzdF9waHlzbWFwX2FkZF9wYWdlIGFuZAo+IC0gICAgICogcGFnaW5nX3Nl dF9hbGxvY2F0aW9uIHdpbGwgZG8gdGhlIHJpZ2h0IHRoaW5nIGZvciB1cy4KPiAtICAgICAqLwo+ IC0gICAgZC0+YXJjaC5wYWdpbmcubW9kZSA9IHNhdmVfcHZoX3BnX21vZGU7Cj4gLQo+IC0gICAg aWYgKCBpc19wdmhfZG9tYWluKGQpICkKPiAtICAgIHsKPiAtICAgICAgICBib29sIHByZWVtcHRl ZDsKPiAtCj4gLSAgICAgICAgZG8gewo+IC0gICAgICAgICAgICBwcmVlbXB0ZWQgPSBmYWxzZTsK PiAtICAgICAgICAgICAgcGFnaW5nX3NldF9hbGxvY2F0aW9uKGQsIGRvbTBfcGFnaW5nX3BhZ2Vz KGQsIG5yX3BhZ2VzKSwKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwcmVl bXB0ZWQpOwo+IC0gICAgICAgICAgICBwcm9jZXNzX3BlbmRpbmdfc29mdGlycXMoKTsKPiAtICAg ICAgICB9IHdoaWxlICggcHJlZW1wdGVkICk7Cj4gLSAgICB9Cj4gLQo+IC0KPiAgICAgIC8qIFdy aXRlIHRoZSBwaHlzLT5tYWNoaW5lIGFuZCBtYWNoaW5lLT5waHlzIHRhYmxlIGVudHJpZXMuICov Cj4gICAgICBmb3IgKCBwZm4gPSAwOyBwZm4gPCBjb3VudDsgcGZuKysgKQo+ICAgICAgewo+IEBA IC0xNjI4LDE1ICsxMzc2LDYgQEAgc3RhdGljIGludCBfX2luaXQgY29uc3RydWN0X2RvbTBfcHYo Cj4gICAgICAgICAgc2ktPmNvbnNvbGUuZG9tMC5pbmZvX3NpemUgPSBzaXplb2Yoc3RydWN0IGRv bTBfdmdhX2NvbnNvbGVfaW5mbyk7Cj4gICAgICB9Cj4gIAo+IC0gICAgLyoKPiAtICAgICAqIFBW SDogV2UgbmVlZCB0byB1cGRhdGUgc2ktPnNoYXJlZF9pbmZvIHdoaWxlIHdlIGFyZSBvbiBkb20w IHBhZ2UgdGFibGVzLAo+IC0gICAgICogYnV0IG5lZWQgdG8gZGVmZXIgdGhlIHAybSB1cGRhdGUg dW50aWwgYWZ0ZXIgd2UgaGF2ZSBmaXhlZCB1cCB0aGUKPiAtICAgICAqIHBhZ2UgdGFibGVzIGZv ciBQVkggc28gdGhhdCB0aGUgbTJwIGZvciB0aGUgc2kgcHRlIGVudHJ5IHJldHVybnMKPiAtICAg ICAqIGNvcnJlY3QgcGZuLgo+IC0gICAgICovCj4gLSAgICBpZiAoIGlzX3B2aF9kb21haW4oZCkg KQo+IC0gICAgICAgIHNpLT5zaGFyZWRfaW5mbyA9IHNoYXJlZF9pbmZvX3BhZGRyOwo+IC0KPiAg ICAgIGlmICggaXNfcHZfMzJiaXRfZG9tYWluKGQpICkKPiAgICAgICAgICB4bGF0X3N0YXJ0X2lu Zm8oc2ksIFhMQVRfc3RhcnRfaW5mb19jb25zb2xlX2RvbTApOwo+ICAKPiBAQCAtMTY3MCwxNiAr MTQwOSw4IEBAIHN0YXRpYyBpbnQgX19pbml0IGNvbnN0cnVjdF9kb20wX3B2KAo+ICAgICAgcmVn cy0+X2VmbGFncyA9IFg4Nl9FRkxBR1NfSUY7Cj4gIAo+ICAjaWZkZWYgQ09ORklHX1NIQURPV19Q QUdJTkcKPiAtICAgIGlmICggb3B0X2RvbTBfc2hhZG93ICkKPiAtICAgIHsKPiAtICAgICAgICBp ZiAoIGlzX3B2aF9kb21haW4oZCkgKQo+IC0gICAgICAgIHsKPiAtICAgICAgICAgICAgcHJpbnRr KCJVbnN1cHBvcnRlZCBvcHRpb24gZG9tMF9zaGFkb3cgZm9yIFBWSFxuIik7Cj4gLSAgICAgICAg ICAgIHJldHVybiAtRUlOVkFMOwo+IC0gICAgICAgIH0KPiAtICAgICAgICBpZiAoIHBhZ2luZ19l bmFibGUoZCwgUEdfU0hfZW5hYmxlKSA9PSAwICkgCj4gLSAgICAgICAgICAgIHBhZ2luZ191cGRh dGVfcGFnaW5nX21vZGVzKHYpOwo+IC0gICAgfQo+ICsgICAgaWYgKCBvcHRfZG9tMF9zaGFkb3cg JiYgcGFnaW5nX2VuYWJsZShkLCBQR19TSF9lbmFibGUpID09IDAgKQo+ICsgICAgICAgIHBhZ2lu Z191cGRhdGVfcGFnaW5nX21vZGVzKHYpOwo+ICAjZW5kaWYKPiAgCj4gICAgICAvKgo+IEBAIC0x Njk2LDIwICsxNDI3LDYgQEAgc3RhdGljIGludCBfX2luaXQgY29uc3RydWN0X2RvbTBfcHYoCj4g ICAgICAgICAgcHJpbnRrKCIgWGVuIHdhcm5pbmc6IGRvbTAga2VybmVsIGJyb2tlbiBFTEY6ICVz XG4iLAo+ICAgICAgICAgICAgICAgICBlbGZfY2hlY2tfYnJva2VuKCZlbGYpKTsKPiAgCj4gLSAg ICBpZiAoIGlzX3B2aF9kb21haW4oZCkgKQo+IC0gICAgewo+IC0gICAgICAgIC8qIGZpbmFsbHks IGZpeHVwIHRoZSBwYWdlIHRhYmxlLCByZXBsYWNpbmcgbWZucyB3aXRoIHBmbnMgKi8KPiAtICAg ICAgICBwdmhfZml4dXBfcGFnZV90YWJsZXNfZm9yX2hhcCh2LCB2X3N0YXJ0LCB2X2VuZCk7Cj4g LQo+IC0gICAgICAgIC8qIHRoZSBwdCBoYXMgY29ycmVjdCBwZm4gZm9yIHNpLCBub3cgdXBkYXRl IHRoZSBtZm4gaW4gdGhlIHAybSAqLwo+IC0gICAgICAgIG1mbiA9IHZpcnRfdG9fbWZuKGQtPnNo YXJlZF9pbmZvKTsKPiAtICAgICAgICBwZm4gPSBzaGFyZWRfaW5mb19wYWRkciA+PiBQQUdFX1NI SUZUOwo+IC0gICAgICAgIGRvbTBfdXBkYXRlX3BoeXNtYXAoZCwgcGZuLCBtZm4sIDApOwo+IC0K PiAtICAgICAgICBwdmhfbWFwX2FsbF9pb21lbShkLCBucl9wYWdlcyk7Cj4gLSAgICAgICAgcHZo X3NldHVwX2U4MjAoZCwgbnJfcGFnZXMpOwo+IC0gICAgfQo+IC0KPiAgICAgIGlmICggZC0+ZG9t YWluX2lkID09IGhhcmR3YXJlX2RvbWlkICkKPiAgICAgICAgICBpb21tdV9od2RvbV9pbml0KGQp Owo+ICAKPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2RvbWN0bC5jIGIveGVuL2FyY2gveDg2 L2RvbWN0bC5jCj4gaW5kZXggYTNkZDI3Ni4uMmMxODkzZCAxMDA2NDQKPiAtLS0gYS94ZW4vYXJj aC94ODYvZG9tY3RsLmMKPiArKysgYi94ZW4vYXJjaC94ODYvZG9tY3RsLmMKPiBAQCAtNjE4LDkg KzYxOCw4IEBAIGxvbmcgYXJjaF9kb19kb21jdGwoCj4gICAgICAgICAgYnJlYWs7Cj4gIAo+ICAg ICAgY2FzZSBYRU5fRE9NQ1RMX2dldF9hZGRyZXNzX3NpemU6Cj4gLSAgICAgICAgZG9tY3RsLT51 LmFkZHJlc3Nfc2l6ZS5zaXplID0KPiAtICAgICAgICAgICAgKGlzX3B2XzMyYml0X2RvbWFpbihk KSB8fCBpc19wdmhfMzJiaXRfZG9tYWluKGQpKSA/Cj4gLSAgICAgICAgICAgIDMyIDogQklUU19Q RVJfTE9ORzsKPiArICAgICAgICBkb21jdGwtPnUuYWRkcmVzc19zaXplLnNpemUgPSBpc19wdl8z MmJpdF9kb21haW4oZCkgPyAzMiA6Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQklUU19QRVJfTE9ORzsKPiAgICAgICAgICBj b3B5YmFjayA9IDE7Cj4gICAgICAgICAgYnJlYWs7Cj4gIAo+IEBAIC0xNDkzLDcgKzE0OTIsNyBA QCB2b2lkIGFyY2hfZ2V0X2luZm9fZ3Vlc3Qoc3RydWN0IHZjcHUgKnYsIHZjcHVfZ3Vlc3RfY29u dGV4dF91IGMpCj4gIHsKPiAgICAgIHVuc2lnbmVkIGludCBpOwo+ICAgICAgY29uc3Qgc3RydWN0 IGRvbWFpbiAqZCA9IHYtPmRvbWFpbjsKPiAtICAgIGJvb2xfdCBjb21wYXQgPSBpc19wdl8zMmJp dF9kb21haW4oZCkgfHwgaXNfcHZoXzMyYml0X2RvbWFpbihkKTsKPiArICAgIGJvb2xfdCBjb21w YXQgPSBpc19wdl8zMmJpdF9kb21haW4oZCk7Cj4gICNkZWZpbmUgYyhmbGQpICghY29tcGF0ID8g KGMubmF0LT5mbGQpIDogKGMuY21wLT5mbGQpKQo+ICAKPiAgICAgIGlmICggIWlzX3B2X2RvbWFp bihkKSApCj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vaHZtLmMgYi94ZW4vYXJjaC94 ODYvaHZtL2h2bS5jCj4gaW5kZXggOWVlYjBhMi4uYjk1YjUwMCAxMDA2NDQKPiAtLS0gYS94ZW4v YXJjaC94ODYvaHZtL2h2bS5jCj4gKysrIGIveGVuL2FyY2gveDg2L2h2bS9odm0uYwo+IEBAIC0x ODAsOSArMTgwLDYgQEAgc3RhdGljIGludCBfX2luaXQgaHZtX2VuYWJsZSh2b2lkKQo+ICAgICAg ICAgIHByaW50aygiXG4iKTsKPiAgICAgIH0KPiAgCj4gLSAgICBpZiAoICFmbnMtPnB2aF9zdXBw b3J0ZWQgKQo+IC0gICAgICAgIHByaW50ayhYRU5MT0dfSU5GTyAiSFZNOiBQVkggbW9kZSBub3Qg c3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm1cbiIpOwo+IC0KPiAgICAgIGlmICggIW9wdF9hbHRw Mm1fZW5hYmxlZCApCj4gICAgICAgICAgaHZtX2Z1bmNzLmFsdHAybV9zdXBwb3J0ZWQgPSAwOwo+ ICAKPiBAQCAtNDMxLDEwICs0MjgsNiBAQCB1NjQgaHZtX2dldF9ndWVzdF90c2NfZml4ZWQoc3Ry dWN0IHZjcHUgKnYsIHVpbnQ2NF90IGF0X3RzYykKPiAgCj4gIHZvaWQgaHZtX21pZ3JhdGVfdGlt ZXJzKHN0cnVjdCB2Y3B1ICp2KQo+ICB7Cj4gLSAgICAvKiBQVkggZG9lc24ndCB1c2UgcnRjIGFu ZCBlbXVsYXRlZCB0aW1lcnMsIGl0IHVzZXMgcHZjbG9jayBtZWNoYW5pc20uICovCj4gLSAgICBp ZiAoIGlzX3B2aF92Y3B1KHYpICkKPiAtICAgICAgICByZXR1cm47Cj4gLQo+ICAgICAgcnRjX21p Z3JhdGVfdGltZXJzKHYpOwo+ICAgICAgcHRfbWlncmF0ZSh2KTsKPiAgfQo+IEBAIC01OTQsMTkg KzU4Nyw2IEBAIHN0YXRpYyBpbnQgaHZtX3ByaW50X2xpbmUoCj4gICAgICByZXR1cm4gWDg2RU1V TF9PS0FZOwo+ICB9Cj4gIAo+IC1zdGF0aWMgaW50IGhhbmRsZV9wdmhfaW8oCj4gLSAgICBpbnQg ZGlyLCB1bnNpZ25lZCBpbnQgcG9ydCwgdW5zaWduZWQgaW50IGJ5dGVzLCB1aW50MzJfdCAqdmFs KQo+IC17Cj4gLSAgICBzdHJ1Y3QgZG9tYWluICpjdXJyZCA9IGN1cnJlbnQtPmRvbWFpbjsKPiAt Cj4gLSAgICBpZiAoIGRpciA9PSBJT1JFUV9XUklURSApCj4gLSAgICAgICAgZ3Vlc3RfaW9fd3Jp dGUocG9ydCwgYnl0ZXMsICp2YWwsIGN1cnJkKTsKPiAtICAgIGVsc2UKPiAtICAgICAgICAqdmFs ID0gZ3Vlc3RfaW9fcmVhZChwb3J0LCBieXRlcywgY3VycmQpOwo+IC0KPiAtICAgIHJldHVybiBY ODZFTVVMX09LQVk7Cj4gLX0KPiAtCj4gIGludCBodm1fZG9tYWluX2luaXRpYWxpc2Uoc3RydWN0 IGRvbWFpbiAqZCkKPiAgewo+ICAgICAgaW50IHJjOwo+IEBAIC02MTgsMjIgKzU5OCw2IEBAIGlu dCBodm1fZG9tYWluX2luaXRpYWxpc2Uoc3RydWN0IGRvbWFpbiAqZCkKPiAgICAgICAgICByZXR1 cm4gLUVJTlZBTDsKPiAgICAgIH0KPiAgCj4gLSAgICBpZiAoIGlzX3B2aF9kb21haW4oZCkgKQo+ IC0gICAgewo+IC0gICAgICAgIGlmICggIWh2bV9mdW5jcy5wdmhfc3VwcG9ydGVkICkKPiAtICAg ICAgICB7Cj4gLSAgICAgICAgICAgIHByaW50ayhYRU5MT0dfR19XQVJOSU5HICJBdHRlbXB0IHRv IGNyZWF0ZSBhIFBWSCBndWVzdCAiCj4gLSAgICAgICAgICAgICAgICAgICAib24gYSBzeXN0ZW0g d2l0aG91dCBuZWNlc3NhcnkgaGFyZHdhcmUgc3VwcG9ydFxuIik7Cj4gLSAgICAgICAgICAgIHJl dHVybiAtRUlOVkFMOwo+IC0gICAgICAgIH0KPiAtICAgICAgICBpZiAoICFoYXBfZW5hYmxlZChk KSApCj4gLSAgICAgICAgewo+IC0gICAgICAgICAgICBwcmludGsoWEVOTE9HX0dfSU5GTyAiUFZI IGd1ZXN0IG11c3QgaGF2ZSBIQVAgb25cbiIpOwo+IC0gICAgICAgICAgICByZXR1cm4gLUVJTlZB TDsKPiAtICAgICAgICB9Cj4gLQo+IC0gICAgfQo+IC0KPiAgICAgIHNwaW5fbG9ja19pbml0KCZk LT5hcmNoLmh2bV9kb21haW4uaXJxX2xvY2spOwo+ICAgICAgc3Bpbl9sb2NrX2luaXQoJmQtPmFy Y2guaHZtX2RvbWFpbi51Y19sb2NrKTsKPiAgICAgIHNwaW5fbG9ja19pbml0KCZkLT5hcmNoLmh2 bV9kb21haW4ud3JpdGVfbWFwLmxvY2spOwo+IEBAIC02NzUsMTIgKzYzOSw2IEBAIGludCBodm1f ZG9tYWluX2luaXRpYWxpc2Uoc3RydWN0IGRvbWFpbiAqZCkKPiAgCj4gICAgICBodm1faW9yZXFf aW5pdChkKTsKPiAgCj4gLSAgICBpZiAoIGlzX3B2aF9kb21haW4oZCkgKQo+IC0gICAgewo+IC0g ICAgICAgIHJlZ2lzdGVyX3BvcnRpb19oYW5kbGVyKGQsIDAsIDB4MTAwMDMsIGhhbmRsZV9wdmhf aW8pOwo+IC0gICAgICAgIHJldHVybiAwOwo+IC0gICAgfQo+IC0KPiAgICAgIGh2bV9pbml0X2d1 ZXN0X3RpbWUoZCk7Cj4gIAo+ICAgICAgZC0+YXJjaC5odm1fZG9tYWluLnBhcmFtc1tIVk1fUEFS QU1fVFJJUExFX0ZBVUxUX1JFQVNPTl0gPSBTSFVURE9XTl9yZWJvb3Q7Cj4gQEAgLTcyMyw5ICs2 ODEsNiBAQCBpbnQgaHZtX2RvbWFpbl9pbml0aWFsaXNlKHN0cnVjdCBkb21haW4gKmQpCj4gIAo+ ICB2b2lkIGh2bV9kb21haW5fcmVsaW5xdWlzaF9yZXNvdXJjZXMoc3RydWN0IGRvbWFpbiAqZCkK PiAgewo+IC0gICAgaWYgKCBpc19wdmhfZG9tYWluKGQpICkKPiAtICAgICAgICByZXR1cm47Cj4g LQo+ICAgICAgaWYgKCBodm1fZnVuY3Mubmh2bV9kb21haW5fcmVsaW5xdWlzaF9yZXNvdXJjZXMg KQo+ICAgICAgICAgIGh2bV9mdW5jcy5uaHZtX2RvbWFpbl9yZWxpbnF1aXNoX3Jlc291cmNlcyhk KTsKPiAgCj4gQEAgLTc1NCw5ICs3MDksNiBAQCB2b2lkIGh2bV9kb21haW5fZGVzdHJveShzdHJ1 Y3QgZG9tYWluICpkKQo+ICAKPiAgICAgIGh2bV9kZXN0cm95X2NhY2hlYXR0cl9yZWdpb25fbGlz dChkKTsKPiAgCj4gLSAgICBpZiAoIGlzX3B2aF9kb21haW4oZCkgKQo+IC0gICAgICAgIHJldHVy bjsKPiAtCj4gICAgICBodm1fZnVuY3MuZG9tYWluX2Rlc3Ryb3koZCk7Cj4gICAgICBydGNfZGVp bml0KGQpOwo+ICAgICAgc3RkdmdhX2RlaW5pdChkKTsKPiBAQCAtMTUyNSwxMyArMTQ3Nyw2IEBA IGludCBodm1fdmNwdV9pbml0aWFsaXNlKHN0cnVjdCB2Y3B1ICp2KQo+ICAKPiAgICAgIHYtPmFy Y2guaHZtX3ZjcHUuaW5qZWN0X2V2ZW50LnZlY3RvciA9IEhWTV9FVkVOVF9WRUNUT1JfVU5TRVQ7 Cj4gIAo+IC0gICAgaWYgKCBpc19wdmhfZG9tYWluKGQpICkKPiAtICAgIHsKPiAtICAgICAgICAv KiBUaGlzIGlzIGZvciBodm1fbG9uZ19tb2RlX2VuYWJsZWQodikuICovCj4gLSAgICAgICAgdi0+ YXJjaC5odm1fdmNwdS5ndWVzdF9lZmVyID0gRUZFUl9MTUEgfCBFRkVSX0xNRTsKPiAtICAgICAg ICByZXR1cm4gMDsKPiAtICAgIH0KPiAtCj4gICAgICByYyA9IHNldHVwX2NvbXBhdF9hcmdfeGxh dCh2KTsgLyogdGVhcmRvd246IGZyZWVfY29tcGF0X2FyZ194bGF0KCkgKi8KPiAgICAgIGlmICgg cmMgIT0gMCApCj4gICAgICAgICAgZ290byBmYWlsNDsKPiBAQCAtMTg2OSw5ICsxODE0LDYgQEAg aW50IGh2bV9oYXBfbmVzdGVkX3BhZ2VfZmF1bHQocGFkZHJfdCBncGEsIHVuc2lnbmVkIGxvbmcg Z2xhLAo+ICAgICAgICAgICAgICBfX3B1dF9nZm4oaG9zdHAybSwgZ2ZuKTsKPiAgCj4gICAgICAg ICAgcmMgPSAwOwo+IC0gICAgICAgIGlmICggdW5saWtlbHkoaXNfcHZoX2RvbWFpbihjdXJyZCkp ICkKPiAtICAgICAgICAgICAgZ290byBvdXQ7Cj4gLQo+ICAgICAgICAgIGlmICggIWhhbmRsZV9t bWlvX3dpdGhfdHJhbnNsYXRpb24oZ2xhLCBncGEgPj4gUEFHRV9TSElGVCwgbnBmZWMpICkKPiAg ICAgICAgICAgICAgaHZtX2luamVjdF9od19leGNlcHRpb24oVFJBUF9ncF9mYXVsdCwgMCk7Cj4g ICAgICAgICAgcmMgPSAxOwo+IEBAIC0yMjExLDE1ICsyMTUzLDYgQEAgaW50IGh2bV9zZXRfY3Iw KHVuc2lnbmVkIGxvbmcgdmFsdWUsIGJvb2xfdCBtYXlfZGVmZXIpCj4gICAgICAgICAgICh2YWx1 ZSAmIChYODZfQ1IwX1BFIHwgWDg2X0NSMF9QRykpID09IFg4Nl9DUjBfUEcgKQo+ICAgICAgICAg IGdvdG8gZ3BmOwo+ICAKPiAtICAgIC8qIEEgcHZoIGlzIG5vdCBleHBlY3RlZCB0byBjaGFuZ2Ug dG8gcmVhbCBtb2RlLiAqLwo+IC0gICAgaWYgKCBpc19wdmhfZG9tYWluKGQpICYmCj4gLSAgICAg ICAgICh2YWx1ZSAmIChYODZfQ1IwX1BFIHwgWDg2X0NSMF9QRykpICE9IChYODZfQ1IwX1BHIHwg WDg2X0NSMF9QRSkgKQo+IC0gICAgewo+IC0gICAgICAgIHByaW50ayhYRU5MT0dfR19XQVJOSU5H Cj4gLSAgICAgICAgICAgICAgICJQVkggYXR0ZW1wdGluZyB0byB0dXJuIG9mZiBQRS9QRy4gQ1Iw OiVseFxuIiwgdmFsdWUpOwo+IC0gICAgICAgIGdvdG8gZ3BmOwo+IC0gICAgfQo+IC0KPiAgICAg IGlmICggbWF5X2RlZmVyICYmIHVubGlrZWx5KHYtPmRvbWFpbi0+YXJjaC5tb25pdG9yLndyaXRl X2N0cmxyZWdfZW5hYmxlZCAmCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb25p dG9yX2N0cmxyZWdfYml0bWFzayhWTV9FVkVOVF9YODZfQ1IwKSkgKQo+ICAgICAgewo+IEBAIC0y Mzg0LDExICsyMzE3LDYgQEAgaW50IGh2bV9zZXRfY3I0KHVuc2lnbmVkIGxvbmcgdmFsdWUsIGJv b2xfdCBtYXlfZGVmZXIpCj4gICAgICAgICAgICAgICAgICAgICAgICAgICJFRkVSLkxNQSBpcyBz ZXQiKTsKPiAgICAgICAgICAgICAgZ290byBncGY7Cj4gICAgICAgICAgfQo+IC0gICAgICAgIGlm ICggaXNfcHZoX3ZjcHUodikgKQo+IC0gICAgICAgIHsKPiAtICAgICAgICAgICAgSFZNX0RCR19M T0coREJHX0xFVkVMXzEsICIzMi1iaXQgUFZIIGd1ZXN0IGNsZWFyZWQgQ1I0LlBBRSIpOwo+IC0g ICAgICAgICAgICBnb3RvIGdwZjsKPiAtICAgICAgICB9Cj4gICAgICB9Cj4gIAo+ICAgICAgb2xk X2NyID0gdi0+YXJjaC5odm1fdmNwdS5ndWVzdF9jcls0XTsKPiBAQCAtMzU0Miw4ICszNDcwLDcg QEAgaW50IGh2bV9tc3Jfd3JpdGVfaW50ZXJjZXB0KHVuc2lnbmVkIGludCBtc3IsIHVpbnQ2NF90 IG1zcl9jb250ZW50LAo+ICAgICAgICAgIGJyZWFrOwo+ICAKPiAgICAgIGNhc2UgTVNSX0lBMzJf QVBJQ0JBU0U6Cj4gLSAgICAgICAgaWYgKCB1bmxpa2VseShpc19wdmhfdmNwdSh2KSkgfHwKPiAt ICAgICAgICAgICAgICF2bGFwaWNfbXNyX3NldCh2Y3B1X3ZsYXBpYyh2KSwgbXNyX2NvbnRlbnQp ICkKPiArICAgICAgICBpZiAoICF2bGFwaWNfbXNyX3NldCh2Y3B1X3ZsYXBpYyh2KSwgbXNyX2Nv bnRlbnQpICkKPiAgICAgICAgICAgICAgZ290byBncF9mYXVsdDsKPiAgICAgICAgICBicmVhazsK PiAgCj4gQEAgLTQwNjYsOCArMzk5Myw3IEBAIHN0YXRpYyBpbnQgaHZtb3Bfc2V0X3BhcmFtKAo+ ICAgICAgICAgIHJldHVybiAtRVNSQ0g7Cj4gIAo+ICAgICAgcmMgPSAtRUlOVkFMOwo+IC0gICAg aWYgKCAhaGFzX2h2bV9jb250YWluZXJfZG9tYWluKGQpIHx8Cj4gLSAgICAgICAgIChpc19wdmhf ZG9tYWluKGQpICYmIChhLmluZGV4ICE9IEhWTV9QQVJBTV9DQUxMQkFDS19JUlEpKSApCj4gKyAg ICBpZiAoICFoYXNfaHZtX2NvbnRhaW5lcl9kb21haW4oZCkgKQo+ICAgICAgICAgIGdvdG8gb3V0 Owo+ICAKPiAgICAgIHJjID0gaHZtX2FsbG93X3NldF9wYXJhbShkLCAmYSk7Cj4gQEAgLTQzMjIs OCArNDI0OCw3IEBAIHN0YXRpYyBpbnQgaHZtb3BfZ2V0X3BhcmFtKAo+ICAgICAgICAgIHJldHVy biAtRVNSQ0g7Cj4gIAo+ICAgICAgcmMgPSAtRUlOVkFMOwo+IC0gICAgaWYgKCAhaGFzX2h2bV9j b250YWluZXJfZG9tYWluKGQpIHx8Cj4gLSAgICAgICAgIChpc19wdmhfZG9tYWluKGQpICYmIChh LmluZGV4ICE9IEhWTV9QQVJBTV9DQUxMQkFDS19JUlEpKSApCj4gKyAgICBpZiAoICFoYXNfaHZt X2NvbnRhaW5lcl9kb21haW4oZCkgKQo+ICAgICAgICAgIGdvdG8gb3V0Owo+ICAKPiAgICAgIHJj ID0gaHZtX2FsbG93X2dldF9wYXJhbShkLCAmYSk7Cj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4 Ni9odm0vaHlwZXJjYWxsLmMgYi94ZW4vYXJjaC94ODYvaHZtL2h5cGVyY2FsbC5jCj4gaW5kZXgg NjQ5OWNhYS4uOGNjN2NjNiAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYvaHZtL2h5cGVyY2Fs bC5jCj4gKysrIGIveGVuL2FyY2gveDg2L2h2bS9oeXBlcmNhbGwuYwo+IEBAIC03OCw3ICs3OCw3 IEBAIHN0YXRpYyBsb25nIGh2bV9waHlzZGV2X29wKGludCBjbWQsIFhFTl9HVUVTVF9IQU5ETEVf UEFSQU0odm9pZCkgYXJnKQo+ICAgICAgc3dpdGNoICggY21kICkKPiAgICAgIHsKPiAgICAgIGRl ZmF1bHQ6Cj4gLSAgICAgICAgaWYgKCAhaXNfcHZoX3ZjcHUoY3VycikgfHwgIWlzX2hhcmR3YXJl X2RvbWFpbihjdXJyLT5kb21haW4pICkKPiArICAgICAgICBpZiAoICFpc19oYXJkd2FyZV9kb21h aW4oY3Vyci0+ZG9tYWluKSApCj4gICAgICAgICAgICAgIHJldHVybiAtRU5PU1lTOwo+ICAgICAg ICAgIC8qIGZhbGwgdGhyb3VnaCAqLwo+ICAgICAgY2FzZSBQSFlTREVWT1BfbWFwX3BpcnE6Cj4g QEAgLTg2LDcgKzg2LDcgQEAgc3RhdGljIGxvbmcgaHZtX3BoeXNkZXZfb3AoaW50IGNtZCwgWEVO X0dVRVNUX0hBTkRMRV9QQVJBTSh2b2lkKSBhcmcpCj4gICAgICBjYXNlIFBIWVNERVZPUF9lb2k6 Cj4gICAgICBjYXNlIFBIWVNERVZPUF9pcnFfc3RhdHVzX3F1ZXJ5Ogo+ICAgICAgY2FzZSBQSFlT REVWT1BfZ2V0X2ZyZWVfcGlycToKPiAtICAgICAgICBpZiAoICFoYXNfcGlycShjdXJyLT5kb21h aW4pICYmICFpc19wdmhfdmNwdShjdXJyKSApCj4gKyAgICAgICAgaWYgKCAhaGFzX3BpcnEoY3Vy ci0+ZG9tYWluKSApCj4gICAgICAgICAgICAgIHJldHVybiAtRU5PU1lTOwo+ICAgICAgICAgIGJy ZWFrOwo+ICAgICAgfQo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL2lvLmMgYi94ZW4v YXJjaC94ODYvaHZtL2lvLmMKPiBpbmRleCAyMDVmYjY4Li41MDE2MzAwIDEwMDY0NAo+IC0tLSBh L3hlbi9hcmNoL3g4Ni9odm0vaW8uYwo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9odm0vaW8uYwo+IEBA IC04NCw4ICs4NCw2IEBAIGJvb2wgaHZtX2VtdWxhdGVfb25lX2luc24oaHZtX2VtdWxhdGVfdmFs aWRhdGVfdCAqdmFsaWRhdGUpCj4gICAgICBzdHJ1Y3QgaHZtX3ZjcHVfaW8gKnZpbyA9ICZjdXJy LT5hcmNoLmh2bV92Y3B1Lmh2bV9pbzsKPiAgICAgIGludCByYzsKPiAgCj4gLSAgICBBU1NFUlQo IWlzX3B2aF92Y3B1KGN1cnIpKTsKPiAtCj4gICAgICBodm1fZW11bGF0ZV9pbml0X29uY2UoJmN0 eHQsIHZhbGlkYXRlLCBndWVzdF9jcHVfdXNlcl9yZWdzKCkpOwo+ICAKPiAgICAgIHJjID0gaHZt X2VtdWxhdGVfb25lKCZjdHh0KTsKPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS9pb3Jl cS5jIGIveGVuL2FyY2gveDg2L2h2bS9pb3JlcS5jCj4gaW5kZXggZWJiM2VjYS4uYWQyZWRhZCAx MDA2NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYvaHZtL2lvcmVxLmMKPiArKysgYi94ZW4vYXJjaC94 ODYvaHZtL2lvcmVxLmMKPiBAQCAtMTM4Nyw4ICsxMzg3LDcgQEAgdm9pZCBodm1faW9yZXFfaW5p dChzdHJ1Y3QgZG9tYWluICpkKQo+ICAgICAgc3Bpbl9sb2NrX2luaXQoJmQtPmFyY2guaHZtX2Rv bWFpbi5pb3JlcV9zZXJ2ZXIubG9jayk7Cj4gICAgICBJTklUX0xJU1RfSEVBRCgmZC0+YXJjaC5o dm1fZG9tYWluLmlvcmVxX3NlcnZlci5saXN0KTsKPiAgCj4gLSAgICBpZiAoICFpc19wdmhfZG9t YWluKGQpICkKPiAtICAgICAgICByZWdpc3Rlcl9wb3J0aW9faGFuZGxlcihkLCAweGNmOCwgNCwg aHZtX2FjY2Vzc19jZjgpOwo+ICsgICAgcmVnaXN0ZXJfcG9ydGlvX2hhbmRsZXIoZCwgMHhjZjgs IDQsIGh2bV9hY2Nlc3NfY2Y4KTsKPiAgfQo+ICAKPiAgLyoKPiBkaWZmIC0tZ2l0IGEveGVuL2Fy Y2gveDg2L2h2bS9pcnEuYyBiL3hlbi9hcmNoL3g4Ni9odm0vaXJxLmMKPiBpbmRleCBmZjdkMjg4 Li43NjA1NDRiIDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vaXJxLmMKPiArKysgYi94 ZW4vYXJjaC94ODYvaHZtL2lycS5jCj4gQEAgLTQyMyw5ICs0MjMsNiBAQCBzdHJ1Y3QgaHZtX2lu dGFjayBodm1fdmNwdV9oYXNfcGVuZGluZ19pcnEoc3RydWN0IHZjcHUgKnYpCj4gICAgICAgICAg ICYmIHZjcHVfaW5mbyh2LCBldnRjaG5fdXBjYWxsX3BlbmRpbmcpICkKPiAgICAgICAgICByZXR1 cm4gaHZtX2ludGFja192ZWN0b3IocGxhdC0+aXJxLmNhbGxiYWNrX3ZpYS52ZWN0b3IpOwo+ICAK PiAtICAgIGlmICggaXNfcHZoX3ZjcHUodikgKQo+IC0gICAgICAgIHJldHVybiBodm1faW50YWNr X25vbmU7Cj4gLQo+ICAgICAgaWYgKCB2bGFwaWNfYWNjZXB0X3BpY19pbnRyKHYpICYmIHBsYXQt PnZwaWNbMF0uaW50X291dHB1dCApCj4gICAgICAgICAgcmV0dXJuIGh2bV9pbnRhY2tfcGljKDAp Owo+ICAKPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS92bXgvdm1jcy5jIGIveGVuL2Fy Y2gveDg2L2h2bS92bXgvdm1jcy5jCj4gaW5kZXggMDNlNjhhZC4uZjk4YThiNyAxMDA2NDQKPiAt LS0gYS94ZW4vYXJjaC94ODYvaHZtL3ZteC92bWNzLmMKPiArKysgYi94ZW4vYXJjaC94ODYvaHZt L3ZteC92bWNzLmMKPiBAQCAtMTA2OCwyMCArMTA2OCw2IEBAIHN0YXRpYyBpbnQgY29uc3RydWN0 X3ZtY3Moc3RydWN0IHZjcHUgKnYpCj4gICAgICAgICAgICAgICAgICAgIHZteF9waW5fYmFzZWRf ZXhlY19jb250cm9sICYgflBJTl9CQVNFRF9QT1NURURfSU5URVJSVVBUKTsKPiAgICAgIH0KPiAg Cj4gLSAgICBpZiAoIGlzX3B2aF9kb21haW4oZCkgKQo+IC0gICAgewo+IC0gICAgICAgIC8qIFVu cmVzdHJpY3RlZCBndWVzdCAocmVhbCBtb2RlIGZvciBFUFQpICovCj4gLSAgICAgICAgdi0+YXJj aC5odm1fdm14LnNlY29uZGFyeV9leGVjX2NvbnRyb2wgJj0KPiAtICAgICAgICAgICAgflNFQ09O REFSWV9FWEVDX1VOUkVTVFJJQ1RFRF9HVUVTVDsKPiAtCj4gLSAgICAgICAgLyogU3RhcnQgaW4g NjQtYml0IG1vZGUuIFBWSCAzMmJpdGZpeG1lLiAqLwo+IC0gICAgICAgIHZtZW50cnlfY3RsIHw9 IFZNX0VOVFJZX0lBMzJFX01PREU7ICAgICAgIC8qIEdVRVNUX0VGRVIuTE1FL0xNQSBpZ25vcmVk ICovCj4gLQo+IC0gICAgICAgIEFTU0VSVCh2LT5hcmNoLmh2bV92bXguZXhlY19jb250cm9sICYg Q1BVX0JBU0VEX0FDVElWQVRFX1NFQ09OREFSWV9DT05UUk9MUyk7Cj4gLSAgICAgICAgQVNTRVJU KHYtPmFyY2guaHZtX3ZteC5leGVjX2NvbnRyb2wgJiBDUFVfQkFTRURfQUNUSVZBVEVfTVNSX0JJ VE1BUCk7Cj4gLSAgICAgICAgQVNTRVJUKCEodi0+YXJjaC5odm1fdm14LmV4ZWNfY29udHJvbCAm IENQVV9CQVNFRF9SRFRTQ19FWElUSU5HKSk7Cj4gLSAgICB9Cj4gLQo+ICAgICAgdm14X3VwZGF0 ZV9jcHVfZXhlY19jb250cm9sKHYpOwo+ICAKPiAgICAgIF9fdm13cml0ZShWTV9FWElUX0NPTlRS T0xTLCB2bWV4aXRfY3RsKTsKPiBAQCAtMTIxNywxMSArMTIwMyw3IEBAIHN0YXRpYyBpbnQgY29u c3RydWN0X3ZtY3Moc3RydWN0IHZjcHUgKnYpCj4gICAgICBfX3Ztd3JpdGUoR1VFU1RfRFNfQVJf QllURVMsIDB4YzA5Myk7Cj4gICAgICBfX3Ztd3JpdGUoR1VFU1RfRlNfQVJfQllURVMsIDB4YzA5 Myk7Cj4gICAgICBfX3Ztd3JpdGUoR1VFU1RfR1NfQVJfQllURVMsIDB4YzA5Myk7Cj4gLSAgICBp ZiAoIGlzX3B2aF9kb21haW4oZCkgKQo+IC0gICAgICAgIC8qIENTLkwgPT0gMSwgZXhlYywgcmVh ZC93cml0ZSwgYWNjZXNzZWQuICovCj4gLSAgICAgICAgX192bXdyaXRlKEdVRVNUX0NTX0FSX0JZ VEVTLCAweGEwOWIpOwo+IC0gICAgZWxzZQo+IC0gICAgICAgIF9fdm13cml0ZShHVUVTVF9DU19B Ul9CWVRFUywgMHhjMDliKTsgLyogZXhlYy9yZWFkLCBhY2Nlc3NlZCAqLwo+ICsgICAgX192bXdy aXRlKEdVRVNUX0NTX0FSX0JZVEVTLCAweGMwOWIpOyAvKiBleGVjL3JlYWQsIGFjY2Vzc2VkICov Cj4gIAo+ICAgICAgLyogR3Vlc3QgSURULiAqLwo+ICAgICAgX192bXdyaXRlKEdVRVNUX0lEVFJf QkFTRSwgMCk7Cj4gQEAgLTEyNTEsMjMgKzEyMzMsMTAgQEAgc3RhdGljIGludCBjb25zdHJ1Y3Rf dm1jcyhzdHJ1Y3QgdmNwdSAqdikKPiAgICAgICAgICAgICAgICB8ICgxVSA8PCBUUkFQX25vX2Rl dmljZSk7Cj4gICAgICB2bXhfdXBkYXRlX2V4Y2VwdGlvbl9iaXRtYXAodik7Cj4gIAo+IC0gICAg LyoKPiAtICAgICAqIEluIEhWTSBkb21haW5zLCB0aGlzIGhhcHBlbnMgb24gdGhlIHJlYWxtb2Rl LT5wYWdpbmcKPiAtICAgICAqIHRyYW5zaXRpb24uICBTaW5jZSBQVkggbmV2ZXIgZ29lcyB0aHJv dWdoIHRoaXMgdHJhbnNpdGlvbiwgd2UKPiAtICAgICAqIG5lZWQgdG8gZG8gaXQgYXQgc3RhcnQt b2YtZGF5Lgo+IC0gICAgICovCj4gLSAgICBpZiAoIGlzX3B2aF9kb21haW4oZCkgKQo+IC0gICAg ICAgIHZteF91cGRhdGVfZGVidWdfc3RhdGUodik7Cj4gLQo+ICAgICAgdi0+YXJjaC5odm1fdmNw dS5ndWVzdF9jclswXSA9IFg4Nl9DUjBfUEUgfCBYODZfQ1IwX0VUOwo+IC0KPiAtICAgIC8qIFBW SCBkb21haW5zIGFsd2F5cyBzdGFydCBpbiBwYWdpbmcgbW9kZSAqLwo+IC0gICAgaWYgKCBpc19w dmhfZG9tYWluKGQpICkKPiAtICAgICAgICB2LT5hcmNoLmh2bV92Y3B1Lmd1ZXN0X2NyWzBdIHw9 IFg4Nl9DUjBfUEc7Cj4gLQo+ICAgICAgaHZtX3VwZGF0ZV9ndWVzdF9jcih2LCAwKTsKPiAgCj4g LSAgICB2LT5hcmNoLmh2bV92Y3B1Lmd1ZXN0X2NyWzRdID0gaXNfcHZoX2RvbWFpbihkKSA/IFg4 Nl9DUjRfUEFFIDogMDsKPiArICAgIHYtPmFyY2guaHZtX3ZjcHUuZ3Vlc3RfY3JbNF0gPSAwOwo+ ICAgICAgaHZtX3VwZGF0ZV9ndWVzdF9jcih2LCA0KTsKPiAgCj4gICAgICBpZiAoIGNwdV9oYXNf dm14X3Rwcl9zaGFkb3cgKQo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL3ZteC92bXgu YyBiL3hlbi9hcmNoL3g4Ni9odm0vdm14L3ZteC5jCj4gaW5kZXggNjBiN2M5Mi4uODQwNGIwMyAx MDA2NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYvaHZtL3ZteC92bXguYwo+ICsrKyBiL3hlbi9hcmNo L3g4Ni9odm0vdm14L3ZteC5jCj4gQEAgLTIwNjMsOSArMjA2Myw2IEBAIHN0YXRpYyBpbnQgdm14 X3NldF9tb2RlKHN0cnVjdCB2Y3B1ICp2LCBpbnQgbW9kZSkKPiAgewo+ICAgICAgdW5zaWduZWQg bG9uZyBhdHRyOwo+ICAKPiAtICAgIGlmICggIWlzX3B2aF92Y3B1KHYpICkKPiAtICAgICAgICBy ZXR1cm4gMDsKPiAtCj4gICAgICBBU1NFUlQoKG1vZGUgPT0gNCkgfHwgKG1vZGUgPT0gOCkpOwo+ ICAKPiAgICAgIGF0dHIgPSAobW9kZSA9PSA0KSA/IDB4YzA5YiA6IDB4YTA5YjsKPiBAQCAtMjMw MCwxMiArMjI5Nyw2IEBAIGNvbnN0IHN0cnVjdCBodm1fZnVuY3Rpb25fdGFibGUgKiBfX2luaXQg c3RhcnRfdm14KHZvaWQpCj4gICAgICAgICAgdm14X2Z1bmN0aW9uX3RhYmxlLnN5bmNfcGlyX3Rv X2lyciA9IE5VTEw7Cj4gICAgICB9Cj4gIAo+IC0gICAgaWYgKCBjcHVfaGFzX3ZteF9lcHQKPiAt ICAgICAgICAgJiYgY3B1X2hhc192bXhfcGF0Cj4gLSAgICAgICAgICYmIGNwdV9oYXNfdm14X21z cl9iaXRtYXAKPiAtICAgICAgICAgJiYgY3B1X2hhc192bXhfc2Vjb25kYXJ5X2V4ZWNfY29udHJv bCApCj4gLSAgICAgICAgdm14X2Z1bmN0aW9uX3RhYmxlLnB2aF9zdXBwb3J0ZWQgPSAxOwo+IC0K PiAgICAgIGlmICggY3B1X2hhc192bXhfdHNjX3NjYWxpbmcgKQo+ICAgICAgICAgIHZteF9mdW5j dGlvbl90YWJsZS50c2Nfc2NhbGluZy5yYXRpb19mcmFjX2JpdHMgPSA0ODsKPiAgCj4gQEAgLTM4 MDAsOCArMzc5MSw3IEBAIHZvaWQgdm14X3ZtZXhpdF9oYW5kbGVyKHN0cnVjdCBjcHVfdXNlcl9y ZWdzICpyZWdzKQo+ICAgICAgICAgIGlmICggZXhpdF9xdWFsaWZpY2F0aW9uICYgMHgxMCApCj4g ICAgICAgICAgewo+ICAgICAgICAgICAgICAvKiBJTlMsIE9VVFMgKi8KPiAtICAgICAgICAgICAg aWYgKCB1bmxpa2VseShpc19wdmhfdmNwdSh2KSkgLyogUFZIIGZpeG1lICovIHx8Cj4gLSAgICAg ICAgICAgICAgICAgIWh2bV9lbXVsYXRlX29uZV9pbnNuKHg4Nl9pbnNuX2lzX3BvcnRpbykgKQo+ ICsgICAgICAgICAgICBpZiAoICFodm1fZW11bGF0ZV9vbmVfaW5zbih4ODZfaW5zbl9pc19wb3J0 aW8pICkKPiAgICAgICAgICAgICAgICAgIGh2bV9pbmplY3RfaHdfZXhjZXB0aW9uKFRSQVBfZ3Bf ZmF1bHQsIDApOwo+ICAgICAgICAgIH0KPiAgICAgICAgICBlbHNlCj4gZGlmZiAtLWdpdCBhL3hl bi9hcmNoL3g4Ni9tbS5jIGIveGVuL2FyY2gveDg2L21tLmMKPiBpbmRleCAxNjYxZTY2Li4xMmRh YmNmIDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9tbS5jCj4gKysrIGIveGVuL2FyY2gveDg2 L21tLmMKPiBAQCAtMzA0MSw3ICszMDQxLDcgQEAgc3RhdGljIHN0cnVjdCBkb21haW4gKmdldF9w Z19vd25lcihkb21pZF90IGRvbWlkKQo+ICAgICAgICAgIGdvdG8gb3V0Owo+ICAgICAgfQo+ICAK PiAtICAgIGlmICggIWlzX3B2aF9kb21haW4oY3VycikgJiYgdW5saWtlbHkocGFnaW5nX21vZGVf dHJhbnNsYXRlKGN1cnIpKSApCj4gKyAgICBpZiAoIHVubGlrZWx5KHBhZ2luZ19tb2RlX3RyYW5z bGF0ZShjdXJyKSkgKQo+ICAgICAgewo+ICAgICAgICAgIE1FTV9MT0coIkNhbm5vdCBtaXggZm9y ZWlnbiBtYXBwaW5ncyB3aXRoIHRyYW5zbGF0ZWQgZG9tYWlucyIpOwo+ICAgICAgICAgIGdvdG8g b3V0Owo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvbW0vcDJtLXB0LmMgYi94ZW4vYXJjaC94 ODYvbW0vcDJtLXB0LmMKPiBpbmRleCBiYmZhNTRlLi4wN2UyY2NkIDEwMDY0NAo+IC0tLSBhL3hl bi9hcmNoL3g4Ni9tbS9wMm0tcHQuYwo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9tbS9wMm0tcHQuYwo+ IEBAIC01MzIsNyArNTMyLDcgQEAgcDJtX3B0X3NldF9lbnRyeShzdHJ1Y3QgcDJtX2RvbWFpbiAq cDJtLCB1bnNpZ25lZCBsb25nIGdmbiwgbWZuX3QgbWZuLAo+ICAKPiAgICAgIGlmICggdW5saWtl bHkocDJtX2lzX2ZvcmVpZ24ocDJtdCkpICkKPiAgICAgIHsKPiAtICAgICAgICAvKiBwdmggZml4 bWU6IGZvcmVpZ24gdHlwZXMgYXJlIG9ubHkgc3VwcG9ydGVkIG9uIGVwdCBhdCBwcmVzZW50ICov Cj4gKyAgICAgICAgLyogaHZtIGZpeG1lOiBmb3JlaWduIHR5cGVzIGFyZSBvbmx5IHN1cHBvcnRl ZCBvbiBlcHQgYXQgcHJlc2VudCAqLwo+ICAgICAgICAgIGdkcHJpbnRrKFhFTkxPR19XQVJOSU5H LCAiVW5pbXBsZW1lbnRlZCBmb3JlaWduIHAybSB0eXBlLlxuIik7Cj4gICAgICAgICAgcmV0dXJu IC1FSU5WQUw7Cj4gICAgICB9Cj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9wMm0uYyBi L3hlbi9hcmNoL3g4Ni9tbS9wMm0uYwo+IGluZGV4IDJlZWU5Y2QuLmE1NjUxYTMgMTAwNjQ0Cj4g LS0tIGEveGVuL2FyY2gveDg2L21tL3AybS5jCj4gKysrIGIveGVuL2FyY2gveDg2L21tL3AybS5j Cj4gQEAgLTU4OSw3ICs1ODksNyBAQCBpbnQgcDJtX2FsbG9jX3RhYmxlKHN0cnVjdCBwMm1fZG9t YWluICpwMm0pCj4gIH0KPiAgCj4gIC8qCj4gLSAqIHB2aCBmaXhtZTogd2hlbiBhZGRpbmcgc3Vw cG9ydCBmb3IgcHZoIG5vbi1oYXJkd2FyZSBkb21haW5zLCB0aGlzIHBhdGggbXVzdAo+ICsgKiBo dm0gZml4bWU6IHdoZW4gYWRkaW5nIHN1cHBvcnQgZm9yIHB2aCBub24taGFyZHdhcmUgZG9tYWlu cywgdGhpcyBwYXRoIG11c3QKPiAgICogY2xlYW51cCBhbnkgZm9yZWlnbiBwMm0gdHlwZXMgKHJl bGVhc2UgcmVmY250cyBvbiB0aGVtKS4KPiAgICovCj4gIHZvaWQgcDJtX3RlYXJkb3duKHN0cnVj dCBwMm1fZG9tYWluICpwMm0pCj4gQEAgLTI0MTEsMTAgKzI0MTEsMTAgQEAgaW50IHAybV9hZGRf Zm9yZWlnbihzdHJ1Y3QgZG9tYWluICp0ZG9tLCB1bnNpZ25lZCBsb25nIGZnZm4sCj4gICAgICBz dHJ1Y3QgZG9tYWluICpmZG9tOwo+ICAKPiAgICAgIEFTU0VSVCh0ZG9tKTsKPiAtICAgIGlmICgg Zm9yZWlnbmRvbSA9PSBET01JRF9TRUxGIHx8ICFpc19wdmhfZG9tYWluKHRkb20pICkKPiArICAg IGlmICggZm9yZWlnbmRvbSA9PSBET01JRF9TRUxGICkKPiAgICAgICAgICByZXR1cm4gLUVJTlZB TDsKPiAgICAgIC8qCj4gLSAgICAgKiBwdmggZml4bWU6IHVudGlsIHN1cHBvcnQgaXMgYWRkZWQg dG8gcDJtIHRlYXJkb3duIGNvZGUgdG8gY2xlYW51cCBhbnkKPiArICAgICAqIGh2bSBmaXhtZTog dW50aWwgc3VwcG9ydCBpcyBhZGRlZCB0byBwMm0gdGVhcmRvd24gY29kZSB0byBjbGVhbnVwIGFu eQo+ICAgICAgICogZm9yZWlnbiBlbnRyaWVzLCBsaW1pdCB0aGlzIHRvIGhhcmR3YXJlIGRvbWFp biBvbmx5Lgo+ICAgICAgICovCj4gICAgICBpZiAoICFpc19oYXJkd2FyZV9kb21haW4odGRvbSkg KQo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvcGh5c2Rldi5jIGIveGVuL2FyY2gveDg2L3Bo eXNkZXYuYwo+IGluZGV4IGZjNDViZmIuLjgxY2Q2YzkgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gv eDg2L3BoeXNkZXYuYwo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9waHlzZGV2LmMKPiBAQCAtNTE3LDEw ICs1MTcsNiBAQCByZXRfdCBkb19waHlzZGV2X29wKGludCBjbWQsIFhFTl9HVUVTVF9IQU5ETEVf UEFSQU0odm9pZCkgYXJnKQo+ICAgICAgICAgIHN0cnVjdCB2Y3B1ICpjdXJyID0gY3VycmVudDsK PiAgICAgICAgICBzdHJ1Y3QgcGh5c2Rldl9zZXRfaW9wbCBzZXRfaW9wbDsKPiAgCj4gLSAgICAg ICAgcmV0ID0gLUVOT1NZUzsKPiAtICAgICAgICBpZiAoIGlzX3B2aF92Y3B1KGN1cnIpICkKPiAt ICAgICAgICAgICAgYnJlYWs7Cj4gLQo+ICAgICAgICAgIHJldCA9IC1FRkFVTFQ7Cj4gICAgICAg ICAgaWYgKCBjb3B5X2Zyb21fZ3Vlc3QoJnNldF9pb3BsLCBhcmcsIDEpICE9IDAgKQo+ICAgICAg ICAgICAgICBicmVhazsKPiBAQCAtNTM2LDEwICs1MzIsNiBAQCByZXRfdCBkb19waHlzZGV2X29w KGludCBjbWQsIFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0odm9pZCkgYXJnKQo+ICAgICAgICAgIHN0 cnVjdCB2Y3B1ICpjdXJyID0gY3VycmVudDsKPiAgICAgICAgICBzdHJ1Y3QgcGh5c2Rldl9zZXRf aW9iaXRtYXAgc2V0X2lvYml0bWFwOwo+ICAKPiAtICAgICAgICByZXQgPSAtRU5PU1lTOwo+IC0g ICAgICAgIGlmICggaXNfcHZoX3ZjcHUoY3VycikgKQo+IC0gICAgICAgICAgICBicmVhazsKPiAt Cj4gICAgICAgICAgcmV0ID0gLUVGQVVMVDsKPiAgICAgICAgICBpZiAoIGNvcHlfZnJvbV9ndWVz dCgmc2V0X2lvYml0bWFwLCBhcmcsIDEpICE9IDAgKQo+ICAgICAgICAgICAgICBicmVhazsKPiBk aWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3NldHVwLmMgYi94ZW4vYXJjaC94ODYvc2V0dXAuYwo+ IGluZGV4IGRhYjY3ZDUuLjRhODA3YjggMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gveDg2L3NldHVw LmMKPiArKysgYi94ZW4vYXJjaC94ODYvc2V0dXAuYwo+IEBAIC02MiwxMCArNjIsNiBAQCBpbnRl Z2VyX3BhcmFtKCJtYXhjcHVzIiwgbWF4X2NwdXMpOwo+ICAKPiAgdW5zaWduZWQgbG9uZyBfX3Jl YWRfbW9zdGx5IGNyNF9wdjMyX21hc2s7Cj4gIAo+IC0vKiBCb290IGRvbTAgaW4gcHZoIG1vZGUg Ki8KPiAtc3RhdGljIGJvb2xfdCBfX2luaXRkYXRhIG9wdF9kb20wcHZoOwo+IC1ib29sZWFuX3Bh cmFtKCJkb20wcHZoIiwgb3B0X2RvbTBwdmgpOwo+IC0KPiAgLyogKioqKiBMaW51eCBjb25maWcg b3B0aW9uOiBwcm9wYWdhdGVkIHRvIGRvbWFpbjAuICovCj4gIC8qICJhY3BpPW9mZiI6ICAgIFNp c2FibGVzIGJvdGggQUNQSSB0YWJsZSBwYXJzaW5nIGFuZCBpbnRlcnByZXRlci4gKi8KPiAgLyog ImFjcGk9Zm9yY2UiOiAgT3ZlcnJpZGUgdGhlIGRpc2FibGUgYmxhY2tsaXN0LiAgICAgICAgICAg ICAgICAgICAqLwo+IEBAIC0xNTQ1LDkgKzE1NDEsNiBAQCB2b2lkIF9faW5pdCBub3JldHVybiBf X3N0YXJ0X3hlbih1bnNpZ25lZCBsb25nIG1iaV9wKQo+ICAKPiAgICAgIGluaXRfZ3Vlc3RfY3B1 aWQoKTsKPiAgCj4gLSAgICBpZiAoIG9wdF9kb20wcHZoICkKPiAtICAgICAgICBkb21jcl9mbGFn cyB8PSBET01DUkZfcHZoIHwgRE9NQ1JGX2hhcDsKPiAtCj4gICAgICBpZiAoIGRvbTBfcHZoICkK PiAgICAgIHsKPiAgICAgICAgICBkb21jcl9mbGFncyB8PSBET01DUkZfaHZtIHwKPiBkaWZmIC0t Z2l0IGEveGVuL2FyY2gveDg2L3RpbWUuYyBiL3hlbi9hcmNoL3g4Ni90aW1lLmMKPiBpbmRleCAz YWQyYWIwLi5iNzM5ZGM4IDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni90aW1lLmMKPiArKysg Yi94ZW4vYXJjaC94ODYvdGltZS5jCj4gQEAgLTIwMTMsMzMgKzIwMTMsNiBAQCB2b2lkIHRzY19z ZXRfaW5mbyhzdHJ1Y3QgZG9tYWluICpkLAo+ICAgICAgICAgIGQtPmFyY2gudnRzYyA9IDA7Cj4g ICAgICAgICAgcmV0dXJuOwo+ICAgICAgfQo+IC0gICAgaWYgKCBpc19wdmhfZG9tYWluKGQpICkK PiAtICAgIHsKPiAtICAgICAgICAvKgo+IC0gICAgICAgICAqIFBWSCBmaXhtZTogc3VwcG9ydCBt b3JlIHRzYyBtb2Rlcy4KPiAtICAgICAgICAgKgo+IC0gICAgICAgICAqIE5COiBUaGUgcmVhc29u IHRoaXMgaXMgZGlzYWJsZWQgaGVyZSBhcHBlYXJzIHRvIGJlIHdpdGgKPiAtICAgICAgICAgKiBh ZGRpdGlvbmFsIHN1cHBvcnQgcmVxdWlyZWQgdG8gZG8gdGhlIFBWIFJEVFNDIGVtdWxhdGlvbi4K PiAtICAgICAgICAgKiBTaW5jZSB3ZSdyZSBubyBsb25nZXIgdGFraW5nIHRoZSBQViBlbXVsYXRp b24gcGF0aCBmb3IKPiAtICAgICAgICAgKiBhbnl0aGluZywgd2UgbWF5IGJlIGFibGUgdG8gcmVt b3ZlIHRoaXMgcmVzdHJpY3Rpb24uCj4gLSAgICAgICAgICoKPiAtICAgICAgICAgKiBwdmhmaXht ZTogRXhwZXJpbWVudHMgc2hvdyB0aGF0ICJkZWZhdWx0IiB3b3JrcyBmb3IgUFZILAo+IC0gICAg ICAgICAqIGJ1dCAiYWx3YXlzX2VtdWxhdGUiIGRvZXMgbm90IGZvciBzb21lIHJlYXNvbi4gIEZp Z3VyZSBvdXQKPiAtICAgICAgICAgKiB3aHkuCj4gLSAgICAgICAgICovCj4gLSAgICAgICAgc3dp dGNoICggdHNjX21vZGUgKQo+IC0gICAgICAgIHsKPiAtICAgICAgICBjYXNlIFRTQ19NT0RFX05F VkVSX0VNVUxBVEU6Cj4gLSAgICAgICAgICAgIGJyZWFrOwo+IC0gICAgICAgIGRlZmF1bHQ6Cj4g LSAgICAgICAgICAgIHByaW50ayhYRU5MT0dfV0FSTklORwo+IC0gICAgICAgICAgICAgICAgICAg IlBWSCBjdXJyZW50bHkgZG9lcyBub3Qgc3VwcG9ydCB0c2MgZW11bGF0aW9uLiBTZXR0aW5nIHRp bWVyX21vZGUgPSBuZXZlcl9lbXVsYXRlXG4iKTsKPiAtICAgICAgICAgICAgLyogRkFMTFRIUlUg Ki8KPiAtICAgICAgICBjYXNlIFRTQ19NT0RFX0RFRkFVTFQ6Cj4gLSAgICAgICAgICAgIHRzY19t b2RlID0gVFNDX01PREVfTkVWRVJfRU1VTEFURTsKPiAtICAgICAgICAgICAgYnJlYWs7Cj4gLSAg ICAgICAgfQo+IC0gICAgfQo+ICAKPiAgICAgIHN3aXRjaCAoIGQtPmFyY2gudHNjX21vZGUgPSB0 c2NfbW9kZSApCj4gICAgICB7Cj4gZGlmZiAtLWdpdCBhL3hlbi9jb21tb24vZG9tYWluLmMgYi94 ZW4vY29tbW9uL2RvbWFpbi5jCj4gaW5kZXggNDQ5MmM5Yy4uYjIyYWFjYyAxMDA2NDQKPiAtLS0g YS94ZW4vY29tbW9uL2RvbWFpbi5jCj4gKysrIGIveGVuL2NvbW1vbi9kb21haW4uYwo+IEBAIC0z MDQsOCArMzA0LDYgQEAgc3RydWN0IGRvbWFpbiAqZG9tYWluX2NyZWF0ZShkb21pZF90IGRvbWlk LCB1bnNpZ25lZCBpbnQgZG9tY3JfZmxhZ3MsCj4gIAo+ICAgICAgaWYgKCBkb21jcl9mbGFncyAm IERPTUNSRl9odm0gKQo+ICAgICAgICAgIGQtPmd1ZXN0X3R5cGUgPSBndWVzdF90eXBlX2h2bTsK PiAtICAgIGVsc2UgaWYgKCBkb21jcl9mbGFncyAmIERPTUNSRl9wdmggKQo+IC0gICAgICAgIGQt Pmd1ZXN0X3R5cGUgPSBndWVzdF90eXBlX3B2aDsKPiAgICAgIGVsc2UKPiAgICAgICAgICBkLT5n dWVzdF90eXBlID0gZ3Vlc3RfdHlwZV9wdjsKPiAgCj4gZGlmZiAtLWdpdCBhL3hlbi9jb21tb24v ZG9tY3RsLmMgYi94ZW4vY29tbW9uL2RvbWN0bC5jCj4gaW5kZXggOTNlMzAyOS4uOTUxYTVkYyAx MDA2NDQKPiAtLS0gYS94ZW4vY29tbW9uL2RvbWN0bC5jCj4gKysrIGIveGVuL2NvbW1vbi9kb21j dGwuYwo+IEBAIC0xOTQsOSArMTk0LDYgQEAgdm9pZCBnZXRkb21haW5pbmZvKHN0cnVjdCBkb21h aW4gKmQsIHN0cnVjdCB4ZW5fZG9tY3RsX2dldGRvbWFpbmluZm8gKmluZm8pCj4gICAgICBjYXNl IGd1ZXN0X3R5cGVfaHZtOgo+ICAgICAgICAgIGluZm8tPmZsYWdzIHw9IFhFTl9ET01JTkZfaHZt X2d1ZXN0Owo+ICAgICAgICAgIGJyZWFrOwo+IC0gICAgY2FzZSBndWVzdF90eXBlX3B2aDoKPiAt ICAgICAgICBpbmZvLT5mbGFncyB8PSBYRU5fRE9NSU5GX3B2aF9ndWVzdDsKPiAtICAgICAgICBi cmVhazsKPiAgICAgIGRlZmF1bHQ6Cj4gICAgICAgICAgYnJlYWs7Cj4gICAgICB9Cj4gQEAgLTUw MSw3ICs0OTgsNiBAQCBsb25nIGRvX2RvbWN0bChYRU5fR1VFU1RfSEFORExFX1BBUkFNKHhlbl9k b21jdGxfdCkgdV9kb21jdGwpCj4gICAgICAgICAgcmV0ID0gLUVJTlZBTDsKPiAgICAgICAgICBp ZiAoIChvcC0+dS5jcmVhdGVkb21haW4uZmxhZ3MgJgo+ICAgICAgICAgICAgICAgfihYRU5fRE9N Q1RMX0NERl9odm1fZ3Vlc3QKPiAtICAgICAgICAgICAgICAgfCBYRU5fRE9NQ1RMX0NERl9wdmhf Z3Vlc3QKPiAgICAgICAgICAgICAgICAgfCBYRU5fRE9NQ1RMX0NERl9oYXAKPiAgICAgICAgICAg ICAgICAgfCBYRU5fRE9NQ1RMX0NERl9zM19pbnRlZ3JpdHkKPiAgICAgICAgICAgICAgICAgfCBY RU5fRE9NQ1RMX0NERl9vb3Nfb2ZmCj4gQEAgLTUzMiwxNSArNTI4LDkgQEAgbG9uZyBkb19kb21j dGwoWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh4ZW5fZG9tY3RsX3QpIHVfZG9tY3RsKQo+ICAgICAg ICAgICAgICByb3ZlciA9IGRvbTsKPiAgICAgICAgICB9Cj4gIAo+IC0gICAgICAgIGlmICggKG9w LT51LmNyZWF0ZWRvbWFpbi5mbGFncyAmIFhFTl9ET01DVExfQ0RGX2h2bV9ndWVzdCkKPiAtICAg ICAgICAgICAgICYmIChvcC0+dS5jcmVhdGVkb21haW4uZmxhZ3MgJiBYRU5fRE9NQ1RMX0NERl9w dmhfZ3Vlc3QpICkKPiAtICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4gLQo+ICAgICAgICAg IGRvbWNyX2ZsYWdzID0gMDsKPiAgICAgICAgICBpZiAoIG9wLT51LmNyZWF0ZWRvbWFpbi5mbGFn cyAmIFhFTl9ET01DVExfQ0RGX2h2bV9ndWVzdCApCj4gICAgICAgICAgICAgIGRvbWNyX2ZsYWdz IHw9IERPTUNSRl9odm07Cj4gLSAgICAgICAgaWYgKCBvcC0+dS5jcmVhdGVkb21haW4uZmxhZ3Mg JiBYRU5fRE9NQ1RMX0NERl9wdmhfZ3Vlc3QgKQo+IC0gICAgICAgICAgICBkb21jcl9mbGFncyB8 PSBET01DUkZfcHZoOwo+ICAgICAgICAgIGlmICggb3AtPnUuY3JlYXRlZG9tYWluLmZsYWdzICYg WEVOX0RPTUNUTF9DREZfaGFwICkKPiAgICAgICAgICAgICAgZG9tY3JfZmxhZ3MgfD0gRE9NQ1JG X2hhcDsKPiAgICAgICAgICBpZiAoIG9wLT51LmNyZWF0ZWRvbWFpbi5mbGFncyAmIFhFTl9ET01D VExfQ0RGX3MzX2ludGVncml0eSApCj4gZGlmZiAtLWdpdCBhL3hlbi9jb21tb24va2VybmVsLmMg Yi94ZW4vY29tbW9uL2tlcm5lbC5jCj4gaW5kZXggNGI4N2M2MC4uYTRhZTYxMiAxMDA2NDQKPiAt LS0gYS94ZW4vY29tbW9uL2tlcm5lbC5jCj4gKysrIGIveGVuL2NvbW1vbi9rZXJuZWwuYwo+IEBA IC0zMjQsMTEgKzMyNCw2IEBAIERPKHhlbl92ZXJzaW9uKShpbnQgY21kLCBYRU5fR1VFU1RfSEFO RExFX1BBUkFNKHZvaWQpIGFyZykKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMVUg PDwgWEVORkVBVF9oaWdobWVtX2Fzc2lzdCkgfAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICgxVSA8PCBYRU5GRUFUX2dudHRhYl9tYXBfYXZhaWxfYml0cyk7Cj4gICAgICAgICAgICAg ICAgICBicmVhazsKPiAtICAgICAgICAgICAgY2FzZSBndWVzdF90eXBlX3B2aDoKPiAtICAgICAg ICAgICAgICAgIGZpLnN1Ym1hcCB8PSAoMVUgPDwgWEVORkVBVF9odm1fc2FmZV9wdmNsb2NrKSB8 Cj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDFVIDw8IFhFTkZFQVRfc3VwZXJ2aXNv cl9tb2RlX2tlcm5lbCkgfAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxVSA8PCBY RU5GRUFUX2h2bV9jYWxsYmFja192ZWN0b3IpOwo+IC0gICAgICAgICAgICAgICAgYnJlYWs7Cj4g ICAgICAgICAgICAgIGNhc2UgZ3Vlc3RfdHlwZV9odm06Cj4gICAgICAgICAgICAgICAgICBmaS5z dWJtYXAgfD0gKDFVIDw8IFhFTkZFQVRfaHZtX3NhZmVfcHZjbG9jaykgfAo+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICgxVSA8PCBYRU5GRUFUX2h2bV9jYWxsYmFja192ZWN0b3IpIHwK PiBkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi92bV9ldmVudC5jIGIveGVuL2NvbW1vbi92bV9ldmVu dC5jCj4gaW5kZXggNDUwNDZkMS4uMGZlOWE1MyAxMDA2NDQKPiAtLS0gYS94ZW4vY29tbW9uL3Zt X2V2ZW50LmMKPiArKysgYi94ZW4vY29tbW9uL3ZtX2V2ZW50LmMKPiBAQCAtNjA2LDggKzYwNiw4 IEBAIGludCB2bV9ldmVudF9kb21jdGwoc3RydWN0IGRvbWFpbiAqZCwgeGVuX2RvbWN0bF92bV9l dmVudF9vcF90ICp2ZWMsCj4gICAgICAgICAgICAgIHN0cnVjdCBwMm1fZG9tYWluICpwMm0gPSBw Mm1fZ2V0X2hvc3RwMm0oZCk7Cj4gIAo+ICAgICAgICAgICAgICByYyA9IC1FT1BOT1RTVVBQOwo+ IC0gICAgICAgICAgICAvKiBwdmggZml4bWU6IHAybV9pc19mb3JlaWduIHR5cGVzIG5lZWQgYWRk cmVzc2luZyAqLwo+IC0gICAgICAgICAgICBpZiAoIGlzX3B2aF92Y3B1KGN1cnJlbnQpIHx8IGlz X3B2aF9kb21haW4oaGFyZHdhcmVfZG9tYWluKSApCj4gKyAgICAgICAgICAgIC8qIGh2bSBmaXht ZTogcDJtX2lzX2ZvcmVpZ24gdHlwZXMgbmVlZCBhZGRyZXNzaW5nICovCj4gKyAgICAgICAgICAg IGlmICggaXNfaHZtX2RvbWFpbihoYXJkd2FyZV9kb21haW4pICkKPiAgICAgICAgICAgICAgICAg IGJyZWFrOwo+ICAKPiAgICAgICAgICAgICAgcmMgPSAtRU5PREVWOwo+IEBAIC03MDcsOCArNzA3 LDggQEAgaW50IHZtX2V2ZW50X2RvbWN0bChzdHJ1Y3QgZG9tYWluICpkLCB4ZW5fZG9tY3RsX3Zt X2V2ZW50X29wX3QgKnZlYywKPiAgICAgICAgICB7Cj4gICAgICAgICAgY2FzZSBYRU5fVk1fRVZF TlRfRU5BQkxFOgo+ICAgICAgICAgICAgICByYyA9IC1FT1BOT1RTVVBQOwo+IC0gICAgICAgICAg ICAvKiBwdmggZml4bWU6IHAybV9pc19mb3JlaWduIHR5cGVzIG5lZWQgYWRkcmVzc2luZyAqLwo+ IC0gICAgICAgICAgICBpZiAoIGlzX3B2aF92Y3B1KGN1cnJlbnQpIHx8IGlzX3B2aF9kb21haW4o aGFyZHdhcmVfZG9tYWluKSApCj4gKyAgICAgICAgICAgIC8qIGh2bSBmaXhtZTogcDJtX2lzX2Zv cmVpZ24gdHlwZXMgbmVlZCBhZGRyZXNzaW5nICovCj4gKyAgICAgICAgICAgIGlmICggaXNfaHZt X2RvbWFpbihoYXJkd2FyZV9kb21haW4pICkKPiAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ICAK PiAgICAgICAgICAgICAgcmMgPSAtRU5PREVWOwo+IGRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9h c20teDg2L2RvbWFpbi5oIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9kb21haW4uaAo+IGluZGV4IDFi ZWVmMmYuLjhmMGVkYWYgMTAwNjQ0Cj4gLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9kb21haW4u aAo+ICsrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvZG9tYWluLmgKPiBAQCAtMTUsNyArMTUsNiBA QAo+ICAjZGVmaW5lIGhhc18zMmJpdF9zaGluZm8oZCkgICAgKChkKS0+YXJjaC5oYXNfMzJiaXRf c2hpbmZvKQo+ICAjZGVmaW5lIGlzX3B2XzMyYml0X2RvbWFpbihkKSAgKChkKS0+YXJjaC5pc18z MmJpdF9wdikKPiAgI2RlZmluZSBpc19wdl8zMmJpdF92Y3B1KHYpICAgIChpc19wdl8zMmJpdF9k b21haW4oKHYpLT5kb21haW4pKQo+IC0jZGVmaW5lIGlzX3B2aF8zMmJpdF9kb21haW4oZCkgKGlz X3B2aF9kb21haW4oZCkgJiYgaGFzXzMyYml0X3NoaW5mbyhkKSkKPiAgCj4gICNkZWZpbmUgaXNf aHZtX3B2X2V2dGNobl9kb21haW4oZCkgKGhhc19odm1fY29udGFpbmVyX2RvbWFpbihkKSAmJiBc Cj4gICAgICAgICAgZC0+YXJjaC5odm1fZG9tYWluLmlycS5jYWxsYmFja192aWFfdHlwZSA9PSBI Vk1JUlFfY2FsbGJhY2tfdmVjdG9yKQo+IGRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2 L2h2bS9odm0uaCBiL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL2h2bS5oCj4gaW5kZXggODdiMjAz YS4uOGM4YzYzMyAxMDA2NDQKPiAtLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9odm0uaAo+ ICsrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL2h2bS5oCj4gQEAgLTkxLDkgKzkxLDYgQEAg c3RydWN0IGh2bV9mdW5jdGlvbl90YWJsZSB7Cj4gICAgICAvKiBTdXBwb3J0IEhhcmR3YXJlLUFz c2lzdGVkIFBhZ2luZz8gKi8KPiAgICAgIGJvb2xfdCBoYXBfc3VwcG9ydGVkOwo+ICAKPiAtICAg IC8qIE5lY2Vzc2FyeSBoYXJkd2FyZSBzdXBwb3J0IGZvciBQVkggbW9kZT8gKi8KPiAtICAgIGJv b2xfdCBwdmhfc3VwcG9ydGVkOwo+IC0KPiAgICAgIC8qIE5lY2Vzc2FyeSBoYXJkd2FyZSBzdXBw b3J0IGZvciBhbHRlcm5hdGUgcDJtJ3M/ICovCj4gICAgICBib29sIGFsdHAybV9zdXBwb3J0ZWQ7 Cj4gIAo+IGRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9wdWJsaWMvZG9tY3RsLmggYi94ZW4vaW5j bHVkZS9wdWJsaWMvZG9tY3RsLmgKPiBpbmRleCA4NWNiYjdjLi45ZTNjZTIxIDEwMDY0NAo+IC0t LSBhL3hlbi9pbmNsdWRlL3B1YmxpYy9kb21jdGwuaAo+ICsrKyBiL3hlbi9pbmNsdWRlL3B1Ymxp Yy9kb21jdGwuaAo+IEBAIC0zNyw3ICszNyw3IEBACj4gICNpbmNsdWRlICJodm0vc2F2ZS5oIgo+ ICAjaW5jbHVkZSAibWVtb3J5LmgiCj4gIAo+IC0jZGVmaW5lIFhFTl9ET01DVExfSU5URVJGQUNF X1ZFUlNJT04gMHgwMDAwMDAwYwo+ICsjZGVmaW5lIFhFTl9ET01DVExfSU5URVJGQUNFX1ZFUlNJ T04gMHgwMDAwMDAwZAo+ICAKPiAgLyoKPiAgICogTkIuIHhlbl9kb21jdGwuZG9tYWluIGlzIGFu IElOL09VVCBwYXJhbWV0ZXIgZm9yIHRoaXMgb3BlcmF0aW9uLgo+IEBAIC02MCwxMSArNjAsOCBA QCBzdHJ1Y3QgeGVuX2RvbWN0bF9jcmVhdGVkb21haW4gewo+ICAgLyogRGlzYWJsZSBvdXQtb2Yt c3luYyBzaGFkb3cgcGFnZSB0YWJsZXM/ICovCj4gICNkZWZpbmUgX1hFTl9ET01DVExfQ0RGX29v c19vZmYgICAgICAgMwo+ICAjZGVmaW5lIFhFTl9ET01DVExfQ0RGX29vc19vZmYgICAgICAgICgx VTw8X1hFTl9ET01DVExfQ0RGX29vc19vZmYpCj4gLSAvKiBJcyB0aGlzIGEgUFZIIGd1ZXN0IChh cyBvcHBvc2VkIHRvIGFuIEhWTSBvciBQViBndWVzdCk/ICovCj4gLSNkZWZpbmUgX1hFTl9ET01D VExfQ0RGX3B2aF9ndWVzdCAgICAgNAo+IC0jZGVmaW5lIFhFTl9ET01DVExfQ0RGX3B2aF9ndWVz dCAgICAgICgxVTw8X1hFTl9ET01DVExfQ0RGX3B2aF9ndWVzdCkKPiAgIC8qIElzIHRoaXMgYSB4 ZW5zdG9yZSBkb21haW4/ICovCj4gLSNkZWZpbmUgX1hFTl9ET01DVExfQ0RGX3hzX2RvbWFpbiAg ICAgNQo+ICsjZGVmaW5lIF9YRU5fRE9NQ1RMX0NERl94c19kb21haW4gICAgIDQKPiAgI2RlZmlu ZSBYRU5fRE9NQ1RMX0NERl94c19kb21haW4gICAgICAoMVU8PF9YRU5fRE9NQ1RMX0NERl94c19k b21haW4pCj4gICAgICB1aW50MzJfdCBmbGFnczsKPiAgICAgIHN0cnVjdCB4ZW5fYXJjaF9kb21h aW5jb25maWcgY29uZmlnOwo+IEBAIC05NywxNCArOTQsMTEgQEAgc3RydWN0IHhlbl9kb21jdGxf Z2V0ZG9tYWluaW5mbyB7Cj4gICAvKiBCZWluZyBkZWJ1Z2dlZC4gICovCj4gICNkZWZpbmUgX1hF Tl9ET01JTkZfZGVidWdnZWQgIDYKPiAgI2RlZmluZSBYRU5fRE9NSU5GX2RlYnVnZ2VkICAgKDFV PDxfWEVOX0RPTUlORl9kZWJ1Z2dlZCkKPiAtLyogZG9tYWluIGlzIFBWSCAqLwo+IC0jZGVmaW5l IF9YRU5fRE9NSU5GX3B2aF9ndWVzdCA3Cj4gLSNkZWZpbmUgWEVOX0RPTUlORl9wdmhfZ3Vlc3Qg ICgxVTw8X1hFTl9ET01JTkZfcHZoX2d1ZXN0KQo+ICAvKiBkb21haW4gaXMgYSB4ZW5zdG9yZSBk b21haW4gKi8KPiAtI2RlZmluZSBfWEVOX0RPTUlORl94c19kb21haW4gOAo+ICsjZGVmaW5lIF9Y RU5fRE9NSU5GX3hzX2RvbWFpbiA3Cj4gICNkZWZpbmUgWEVOX0RPTUlORl94c19kb21haW4gICgx VTw8X1hFTl9ET01JTkZfeHNfZG9tYWluKQo+ICAvKiBkb21haW4gaGFzIGhhcmR3YXJlIGFzc2lz dGVkIHBhZ2luZyAqLwo+IC0jZGVmaW5lIF9YRU5fRE9NSU5GX2hhcCAgICAgICA5Cj4gKyNkZWZp bmUgX1hFTl9ET01JTkZfaGFwICAgICAgIDgKPiAgI2RlZmluZSBYRU5fRE9NSU5GX2hhcCAgICAg ICAgKDFVPDxfWEVOX0RPTUlORl9oYXApCj4gICAvKiBYRU5fRE9NSU5GX3NodXRkb3duIGd1ZXN0 LXN1cHBsaWVkIGNvZGUuICAqLwo+ICAjZGVmaW5lIFhFTl9ET01JTkZfc2h1dGRvd25tYXNrIDI1 NQo+IGRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS94ZW4vc2NoZWQuaCBiL3hlbi9pbmNsdWRlL3hl bi9zY2hlZC5oCj4gaW5kZXggMDkyOWMwYi4uY2MxMTk5OSAxMDA2NDQKPiAtLS0gYS94ZW4vaW5j bHVkZS94ZW4vc2NoZWQuaAo+ICsrKyBiL3hlbi9pbmNsdWRlL3hlbi9zY2hlZC5oCj4gQEAgLTMx Miw3ICszMTIsNyBAQCBzdHJ1Y3QgZXZ0Y2huX3BvcnRfb3BzOwo+ICAgKiB3aWxsIGJlIGZhbHNl LCBidXQgaGFzX2h2bV9jb250YWluZXJfKiBjaGVja3Mgd2lsbCBiZSB0cnVlLgo+ICAgKi8KPiAg ZW51bSBndWVzdF90eXBlIHsKPiAtICAgIGd1ZXN0X3R5cGVfcHYsIGd1ZXN0X3R5cGVfcHZoLCBn dWVzdF90eXBlX2h2bQo+ICsgICAgZ3Vlc3RfdHlwZV9wdiwgZ3Vlc3RfdHlwZV9odm0KPiAgfTsK PiAgCj4gIHN0cnVjdCBkb21haW4KPiBAQCAtNTU1LDExICs1NTUsOCBAQCBzdHJ1Y3QgZG9tYWlu ICpkb21haW5fY3JlYXRlKGRvbWlkX3QgZG9taWQsIHVuc2lnbmVkIGludCBkb21jcl9mbGFncywK PiAgIC8qIERPTUNSRl9vb3Nfb2ZmOiBkb250IHVzZSBvdXQtb2Ytc3luYyBvcHRpbWl6YXRpb24g Zm9yIHNoYWRvdyBwYWdlIHRhYmxlcyAqLwo+ICAjZGVmaW5lIF9ET01DUkZfb29zX29mZiAgICAg ICAgIDQKPiAgI2RlZmluZSBET01DUkZfb29zX29mZiAgICAgICAgICAoMVU8PF9ET01DUkZfb29z X29mZikKPiAtIC8qIERPTUNSRl9wdmg6IENyZWF0ZSBQViBkb21haW4gaW4gSFZNIGNvbnRhaW5l ci4gKi8KPiAtI2RlZmluZSBfRE9NQ1JGX3B2aCAgICAgICAgICAgICA1Cj4gLSNkZWZpbmUgRE9N Q1JGX3B2aCAgICAgICAgICAgICAgKDFVPDxfRE9NQ1JGX3B2aCkKPiAgIC8qIERPTUNSRl94c19k b21haW46IHhlbnN0b3JlIGRvbWFpbiAqLwo+IC0jZGVmaW5lIF9ET01DUkZfeHNfZG9tYWluICAg ICAgIDYKPiArI2RlZmluZSBfRE9NQ1JGX3hzX2RvbWFpbiAgICAgICA1Cj4gICNkZWZpbmUgRE9N Q1JGX3hzX2RvbWFpbiAgICAgICAgKDFVPDxfRE9NQ1JGX3hzX2RvbWFpbikKPiAgCj4gIC8qCj4g QEAgLTg3NSw4ICs4NzIsNiBAQCB2b2lkIHdhdGNoZG9nX2RvbWFpbl9kZXN0cm95KHN0cnVjdCBk b21haW4gKmQpOwo+ICAKPiAgI2RlZmluZSBpc19wdl9kb21haW4oZCkgKChkKS0+Z3Vlc3RfdHlw ZSA9PSBndWVzdF90eXBlX3B2KQo+ICAjZGVmaW5lIGlzX3B2X3ZjcHUodikgICAoaXNfcHZfZG9t YWluKCh2KS0+ZG9tYWluKSkKPiAtI2RlZmluZSBpc19wdmhfZG9tYWluKGQpICgoZCktPmd1ZXN0 X3R5cGUgPT0gZ3Vlc3RfdHlwZV9wdmgpCj4gLSNkZWZpbmUgaXNfcHZoX3ZjcHUodikgICAoaXNf cHZoX2RvbWFpbigodiktPmRvbWFpbikpCj4gICNkZWZpbmUgaXNfaHZtX2RvbWFpbihkKSAoKGQp LT5ndWVzdF90eXBlID09IGd1ZXN0X3R5cGVfaHZtKQo+ICAjZGVmaW5lIGlzX2h2bV92Y3B1KHYp ICAgKGlzX2h2bV9kb21haW4odi0+ZG9tYWluKSkKPiAgI2RlZmluZSBoYXNfaHZtX2NvbnRhaW5l cl9kb21haW4oZCkgKChkKS0+Z3Vlc3RfdHlwZSAhPSBndWVzdF90eXBlX3B2KQo+IAoKCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWls aW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hl bi1kZXZlbAo=