From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by dpdk.org (Postfix) with ESMTP id 72C9C6A80 for ; Mon, 26 Oct 2015 12:58:01 +0100 (CET) Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by orsmga103.jf.intel.com with ESMTP; 26 Oct 2015 04:58:00 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.20,201,1444719600"; d="scan'208";a="588132845" Received: from irsmsx152.ger.corp.intel.com ([163.33.192.66]) by FMSMGA003.fm.intel.com with ESMTP; 26 Oct 2015 04:57:59 -0700 Received: from irsmsx111.ger.corp.intel.com (10.108.20.4) by IRSMSX152.ger.corp.intel.com (163.33.192.66) with Microsoft SMTP Server (TLS) id 14.3.248.2; Mon, 26 Oct 2015 11:57:57 +0000 Received: from irsmsx109.ger.corp.intel.com ([169.254.13.139]) by irsmsx111.ger.corp.intel.com ([169.254.2.212]) with mapi id 14.03.0248.002; Mon, 26 Oct 2015 11:57:56 +0000 From: "Jastrzebski, MichalX K" To: Vladimir Medvedkin Thread-Topic: [dpdk-dev] [PATCH v1 0/3] lpm: increase number of next hops for lpm (ipv4) Thread-Index: AQHRDa78BzrexVJCBE2r2F3R8Ks8yp56GPUAgAJnZACAAS6ogIAAAHjA Date: Mon, 26 Oct 2015 11:57:56 +0000 Message-ID: <60ABE07DBB3A454EB7FAD707B4BB1582139CCBF9@IRSMSX109.ger.corp.intel.com> References: <1445608311-8092-1-git-send-email-michalx.k.jastrzebski@intel.com> <20151023162033.GA10036@mhcomputing.net> <562B209A.6030507@mhcomputing.net> <20151026115519.GA7576@MKJASTRX-MOBL> In-Reply-To: <20151026115519.GA7576@MKJASTRX-MOBL> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [163.33.239.182] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Cc: "dev@dpdk.org" Subject: Re: [dpdk-dev] [PATCH v1 0/3] lpm: increase number of next hops for lpm (ipv4) X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 26 Oct 2015 11:58:02 -0000 PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBNaWNoYWwgSmFzdHJ6ZWJza2kg W21haWx0bzptaWNoYWx4LmsuamFzdHJ6ZWJza2lAaW50ZWwuY29tXQ0KPiBTZW50OiBNb25kYXks IE9jdG9iZXIgMjYsIDIwMTUgMTI6NTUgUE0NCj4gVG86IFZsYWRpbWlyIE1lZHZlZGtpbg0KPiBT dWJqZWN0OiBSZTogW2RwZGstZGV2XSBbUEFUQ0ggdjEgMC8zXSBscG06IGluY3JlYXNlIG51bWJl ciBvZiBuZXh0IGhvcHMNCj4gZm9yIGxwbSAoaXB2NCkNCj4gDQo+IE9uIFN1biwgT2N0IDI1LCAy MDE1IGF0IDA4OjUyOjA0UE0gKzAzMDAsIFZsYWRpbWlyIE1lZHZlZGtpbiB3cm90ZToNCj4gPiBI aSBhbGwsDQo+ID4NCj4gPiBIZXJlIG15IGltcGxlbWVudGF0aW9uDQo+ID4NCj4gPiBTaWduZWQt b2ZmLWJ5OiBWbGFkaW1pciBNZWR2ZWRraW4gPG1lZHZlZGtpbnZAZ21haWwuY29tPg0KPiA+IC0t LQ0KPiA+ICBjb25maWcvY29tbW9uX2JzZGFwcCAgICAgfCAgIDEgKw0KPiA+ICBjb25maWcvY29t bW9uX2xpbnV4YXBwICAgfCAgIDEgKw0KPiA+ICBsaWIvbGlicnRlX2xwbS9ydGVfbHBtLmMgfCAx OTQNCj4gPiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLQ0K PiA+ICBsaWIvbGlicnRlX2xwbS9ydGVfbHBtLmggfCAxNjMgKysrKysrKysrKysrKysrKysrKysr KystLS0tLS0tLS0tLS0tLS0tDQo+ID4gIDQgZmlsZXMgY2hhbmdlZCwgMjE5IGluc2VydGlvbnMo KyksIDE0MCBkZWxldGlvbnMoLSkNCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9jb25maWcvY29tbW9u X2JzZGFwcCBiL2NvbmZpZy9jb21tb25fYnNkYXBwDQo+ID4gaW5kZXggYjM3ZGNmNC4uNDA4Y2My YyAxMDA2NDQNCj4gPiAtLS0gYS9jb25maWcvY29tbW9uX2JzZGFwcA0KPiA+ICsrKyBiL2NvbmZp Zy9jb21tb25fYnNkYXBwDQo+ID4gQEAgLTM0NCw2ICszNDQsNyBAQCBDT05GSUdfUlRFX0xJQlJU RV9KT0JTVEFUUz15DQo+ID4gICMNCj4gPiAgQ09ORklHX1JURV9MSUJSVEVfTFBNPXkNCj4gPiAg Q09ORklHX1JURV9MSUJSVEVfTFBNX0RFQlVHPW4NCj4gPiArQ09ORklHX1JURV9MSUJSVEVfTFBN X0FTTlVNPW4NCj4gPg0KPiA+ICAjDQo+ID4gICMgQ29tcGlsZSBsaWJydGVfYWNsDQo+ID4gZGlm ZiAtLWdpdCBhL2NvbmZpZy9jb21tb25fbGludXhhcHAgYi9jb25maWcvY29tbW9uX2xpbnV4YXBw DQo+ID4gaW5kZXggMGRlNDNkNS4uMWM2MGU2MyAxMDA2NDQNCj4gPiAtLS0gYS9jb25maWcvY29t bW9uX2xpbnV4YXBwDQo+ID4gKysrIGIvY29uZmlnL2NvbW1vbl9saW51eGFwcA0KPiA+IEBAIC0z NTIsNiArMzUyLDcgQEAgQ09ORklHX1JURV9MSUJSVEVfSk9CU1RBVFM9eQ0KPiA+ICAjDQo+ID4g IENPTkZJR19SVEVfTElCUlRFX0xQTT15DQo+ID4gIENPTkZJR19SVEVfTElCUlRFX0xQTV9ERUJV Rz1uDQo+ID4gK0NPTkZJR19SVEVfTElCUlRFX0xQTV9BU05VTT1uDQo+ID4NCj4gPiAgIw0KPiA+ ICAjIENvbXBpbGUgbGlicnRlX2FjbA0KPiA+IGRpZmYgLS1naXQgYS9saWIvbGlicnRlX2xwbS9y dGVfbHBtLmMgYi9saWIvbGlicnRlX2xwbS9ydGVfbHBtLmMNCj4gPiBpbmRleCAxNjNiYTNjLi4z NjNiNDAwIDEwMDY0NA0KPiA+IC0tLSBhL2xpYi9saWJydGVfbHBtL3J0ZV9scG0uYw0KPiA+ICsr KyBiL2xpYi9saWJydGVfbHBtL3J0ZV9scG0uYw0KPiA+IEBAIC0xNTksOSArMTU5LDExIEBAIHJ0 ZV9scG1fY3JlYXRlKGNvbnN0IGNoYXIgKm5hbWUsIGludCBzb2NrZXRfaWQsDQo+IGludA0KPiA+ IG1heF9ydWxlcywNCj4gPg0KPiA+ICAgICAgICAgbHBtX2xpc3QgPSBSVEVfVEFJTFFfQ0FTVChy dGVfbHBtX3RhaWxxLmhlYWQsIHJ0ZV9scG1fbGlzdCk7DQo+ID4NCj4gPiAtICAgICAgIFJURV9C VUlMRF9CVUdfT04oc2l6ZW9mKHN0cnVjdCBydGVfbHBtX3RibDI0X2VudHJ5KSAhPSAyKTsNCj4g PiAtICAgICAgIFJURV9CVUlMRF9CVUdfT04oc2l6ZW9mKHN0cnVjdCBydGVfbHBtX3RibDhfZW50 cnkpICE9IDIpOw0KPiA+IC0NCj4gPiArI2lmZGVmIFJURV9MSUJSVEVfTFBNX0FTTlVNDQo+ID4g KyAgICAgICBSVEVfQlVJTERfQlVHX09OKHNpemVvZihzdHJ1Y3QgcnRlX2xwbV90YmxfZW50cnkp ICE9IDgpOw0KPiA+ICsjZWxzZQ0KPiA+ICsgICAgICAgUlRFX0JVSUxEX0JVR19PTihzaXplb2Yo c3RydWN0IHJ0ZV9scG1fdGJsX2VudHJ5KSAhPSA0KTsNCj4gPiArI2VuZGlmDQo+ID4gICAgICAg ICAvKiBDaGVjayB1c2VyIGFyZ3VtZW50cy4gKi8NCj4gPiAgICAgICAgIGlmICgobmFtZSA9PSBO VUxMKSB8fCAoc29ja2V0X2lkIDwgLTEpIHx8IChtYXhfcnVsZXMgPT0gMCkpew0KPiA+ICAgICAg ICAgICAgICAgICBydGVfZXJybm8gPSBFSU5WQUw7DQo+ID4gQEAgLTI2MSw3ICsyNjMsNyBAQCBy dGVfbHBtX2ZyZWUoc3RydWN0IHJ0ZV9scG0gKmxwbSkNCj4gPiAgICovDQo+ID4gIHN0YXRpYyBp bmxpbmUgaW50MzJfdA0KPiA+ICBydWxlX2FkZChzdHJ1Y3QgcnRlX2xwbSAqbHBtLCB1aW50MzJf dCBpcF9tYXNrZWQsIHVpbnQ4X3QgZGVwdGgsDQo+ID4gLSAgICAgICB1aW50OF90IG5leHRfaG9w KQ0KPiA+ICsgICAgICAgc3RydWN0IHJ0ZV9scG1fcmVzICpyZXMpDQo+ID4gIHsNCj4gPiAgICAg ICAgIHVpbnQzMl90IHJ1bGVfZ2luZGV4LCBydWxlX2luZGV4LCBsYXN0X3J1bGU7DQo+ID4gICAg ICAgICBpbnQgaTsNCj4gPiBAQCAtMjgyLDggKzI4NCwxMSBAQCBydWxlX2FkZChzdHJ1Y3QgcnRl X2xwbSAqbHBtLCB1aW50MzJfdA0KPiBpcF9tYXNrZWQsDQo+ID4gdWludDhfdCBkZXB0aCwNCj4g Pg0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElmIHJ1bGUgYWxyZWFkeSBleGlzdHMg dXBkYXRlIGl0cyBuZXh0X2hvcCBhbmQNCj4gPiByZXR1cm4uICovDQo+ID4gICAgICAgICAgICAg ICAgICAgICAgICAgaWYgKGxwbS0+cnVsZXNfdGJsW3J1bGVfaW5kZXhdLmlwID09IGlwX21hc2tl ZCkgew0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHBtLT5ydWxlc190Ymxb cnVsZV9pbmRleF0ubmV4dF9ob3AgPQ0KPiA+IG5leHRfaG9wOw0KPiA+IC0NCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGxwbS0+cnVsZXNfdGJsW3J1bGVfaW5kZXhdLm5leHRf aG9wID0NCj4gPiByZXMtPm5leHRfaG9wOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbHBtLT5ydWxlc190YmxbcnVsZV9pbmRleF0uZndkX2NsYXNzID0NCj4gPiByZXMtPmZ3 ZF9jbGFzczsNCj4gPiArI2lmZGVmIFJURV9MSUJSVEVfTFBNX0FTTlVNDQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBscG0tPnJ1bGVzX3RibFtydWxlX2luZGV4XS5hc19udW0g PQ0KPiA+IHJlcy0+YXNfbnVtOw0KPiA+ICsjZW5kaWYNCj4gPiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHJldHVybiBydWxlX2luZGV4Ow0KPiA+ICAgICAgICAgICAgICAgICAgICAg ICAgIH0NCj4gPiAgICAgICAgICAgICAgICAgfQ0KPiA+IEBAIC0zMjAsNyArMzI1LDExIEBAIHJ1 bGVfYWRkKHN0cnVjdCBydGVfbHBtICpscG0sIHVpbnQzMl90DQo+IGlwX21hc2tlZCwNCj4gPiB1 aW50OF90IGRlcHRoLA0KPiA+DQo+ID4gICAgICAgICAvKiBBZGQgdGhlIG5ldyBydWxlLiAqLw0K PiA+ICAgICAgICAgbHBtLT5ydWxlc190YmxbcnVsZV9pbmRleF0uaXAgPSBpcF9tYXNrZWQ7DQo+ ID4gLSAgICAgICBscG0tPnJ1bGVzX3RibFtydWxlX2luZGV4XS5uZXh0X2hvcCA9IG5leHRfaG9w Ow0KPiA+ICsgICAgICAgbHBtLT5ydWxlc190YmxbcnVsZV9pbmRleF0ubmV4dF9ob3AgPSByZXMt Pm5leHRfaG9wOw0KPiA+ICsgICAgICAgbHBtLT5ydWxlc190YmxbcnVsZV9pbmRleF0uZndkX2Ns YXNzID0gcmVzLT5md2RfY2xhc3M7DQo+ID4gKyNpZmRlZiBSVEVfTElCUlRFX0xQTV9BU05VTQ0K PiA+ICsgICAgICAgbHBtLT5ydWxlc190YmxbcnVsZV9pbmRleF0uYXNfbnVtID0gcmVzLT5hc19u dW07DQo+ID4gKyNlbmRpZg0KPiA+DQo+ID4gICAgICAgICAvKiBJbmNyZW1lbnQgdGhlIHVzZWQg cnVsZXMgY291bnRlciBmb3IgdGhpcyBydWxlIGdyb3VwLiAqLw0KPiA+ICAgICAgICAgbHBtLT5y dWxlX2luZm9bZGVwdGggLSAxXS51c2VkX3J1bGVzKys7DQo+ID4gQEAgLTM4MiwxMCArMzkxLDEw IEBAIHJ1bGVfZmluZChzdHJ1Y3QgcnRlX2xwbSAqbHBtLCB1aW50MzJfdA0KPiBpcF9tYXNrZWQs DQo+ID4gdWludDhfdCBkZXB0aCkNCj4gPiAgICogRmluZCwgY2xlYW4gYW5kIGFsbG9jYXRlIGEg dGJsOC4NCj4gPiAgICovDQo+ID4gIHN0YXRpYyBpbmxpbmUgaW50MzJfdA0KPiA+IC10Ymw4X2Fs bG9jKHN0cnVjdCBydGVfbHBtX3RibDhfZW50cnkgKnRibDgpDQo+ID4gK3RibDhfYWxsb2Moc3Ry dWN0IHJ0ZV9scG1fdGJsX2VudHJ5ICp0Ymw4KQ0KPiA+ICB7DQo+ID4gICAgICAgICB1aW50MzJf dCB0Ymw4X2dpbmRleDsgLyogdGJsOCBncm91cCBpbmRleC4gKi8NCj4gPiAtICAgICAgIHN0cnVj dCBydGVfbHBtX3RibDhfZW50cnkgKnRibDhfZW50cnk7DQo+ID4gKyAgICAgICBzdHJ1Y3QgcnRl X2xwbV90YmxfZW50cnkgKnRibDhfZW50cnk7DQo+ID4NCj4gPiAgICAgICAgIC8qIFNjYW4gdGhy b3VnaCB0Ymw4IHRvIGZpbmQgYSBmcmVlIChpLmUuIElOVkFMSUQpIHRibDggZ3JvdXAuICovDQo+ ID4gICAgICAgICBmb3IgKHRibDhfZ2luZGV4ID0gMDsgdGJsOF9naW5kZXggPCBSVEVfTFBNX1RC TDhfTlVNX0dST1VQUzsNCj4gPiBAQCAtMzkzLDEyICs0MDIsMTIgQEAgdGJsOF9hbGxvYyhzdHJ1 Y3QgcnRlX2xwbV90Ymw4X2VudHJ5ICp0Ymw4KQ0KPiA+ICAgICAgICAgICAgICAgICB0Ymw4X2Vu dHJ5ID0gJnRibDhbdGJsOF9naW5kZXggKg0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUlRFX0xQTV9UQkw4X0dST1VQX05VTV9FTlRSSUVTXTsNCj4gPiAgICAgICAgICAg ICAgICAgLyogSWYgYSBmcmVlIHRibDggZ3JvdXAgaXMgZm91bmQgY2xlYW4gaXQgYW5kIHNldCBh cyBWQUxJRC4NCj4gPiAqLw0KPiA+IC0gICAgICAgICAgICAgICBpZiAoIXRibDhfZW50cnktPnZh bGlkX2dyb3VwKSB7DQo+ID4gKyAgICAgICAgICAgICAgIGlmICghdGJsOF9lbnRyeS0+ZXh0X3Zh bGlkKSB7DQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgbWVtc2V0KCZ0Ymw4X2VudHJ5WzBd LCAwLA0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSVEVfTFBN X1RCTDhfR1JPVVBfTlVNX0VOVFJJRVMgKg0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzaXplb2YodGJsOF9lbnRyeVswXSkpOw0KPiA+DQo+ID4gLSAgICAgICAg ICAgICAgICAgICAgICAgdGJsOF9lbnRyeS0+dmFsaWRfZ3JvdXAgPSBWQUxJRDsNCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICB0Ymw4X2VudHJ5LT5leHRfdmFsaWQgPSBWQUxJRDsNCj4gPg0K PiA+ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJldHVybiBncm91cCBpbmRleCBmb3IgYWxs b2NhdGVkIHRibDggZ3JvdXAuICovDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu IHRibDhfZ2luZGV4Ow0KPiA+IEBAIC00MTAsNDYgKzQxOSw1MCBAQCB0Ymw4X2FsbG9jKHN0cnVj dCBydGVfbHBtX3RibDhfZW50cnkgKnRibDgpDQo+ID4gIH0NCj4gPg0KPiA+ICBzdGF0aWMgaW5s aW5lIHZvaWQNCj4gPiAtdGJsOF9mcmVlKHN0cnVjdCBydGVfbHBtX3RibDhfZW50cnkgKnRibDgs IHVpbnQzMl90IHRibDhfZ3JvdXBfc3RhcnQpDQo+ID4gK3RibDhfZnJlZShzdHJ1Y3QgcnRlX2xw bV90YmxfZW50cnkgKnRibDgsIHVpbnQzMl90IHRibDhfZ3JvdXBfc3RhcnQpDQo+ID4gIHsNCj4g PiAgICAgICAgIC8qIFNldCB0Ymw4IGdyb3VwIGludmFsaWQqLw0KPiA+IC0gICAgICAgdGJsOFt0 Ymw4X2dyb3VwX3N0YXJ0XS52YWxpZF9ncm91cCA9IElOVkFMSUQ7DQo+ID4gKyAgICAgICB0Ymw4 W3RibDhfZ3JvdXBfc3RhcnRdLmV4dF92YWxpZCA9IElOVkFMSUQ7DQo+ID4gIH0NCj4gPg0KPiA+ ICBzdGF0aWMgaW5saW5lIGludDMyX3QNCj4gPiAgYWRkX2RlcHRoX3NtYWxsKHN0cnVjdCBydGVf bHBtICpscG0sIHVpbnQzMl90IGlwLCB1aW50OF90IGRlcHRoLA0KPiA+IC0gICAgICAgICAgICAg ICB1aW50OF90IG5leHRfaG9wKQ0KPiA+ICsgICAgICAgICAgICAgICBzdHJ1Y3QgcnRlX2xwbV9y ZXMgKnJlcykNCj4gPiAgew0KPiA+ICAgICAgICAgdWludDMyX3QgdGJsMjRfaW5kZXgsIHRibDI0 X3JhbmdlLCB0Ymw4X2luZGV4LCB0Ymw4X2dyb3VwX2VuZCwgaSwgajsNCj4gPg0KPiA+ICAgICAg ICAgLyogQ2FsY3VsYXRlIHRoZSBpbmRleCBpbnRvIFRhYmxlMjQuICovDQo+ID4gICAgICAgICB0 YmwyNF9pbmRleCA9IGlwID4+IDg7DQo+ID4gICAgICAgICB0YmwyNF9yYW5nZSA9IGRlcHRoX3Rv X3JhbmdlKGRlcHRoKTsNCj4gPiArICAgICAgIHN0cnVjdCBydGVfbHBtX3RibF9lbnRyeSBuZXdf dGJsX2VudHJ5ID0gew0KPiA+ICsjaWZkZWYgUlRFX0xJQlJURV9MUE1fQVNOVU0NCj4gPiArICAg ICAgICAgICAgICAgLmFzX251bSA9IHJlcy0+YXNfbnVtLA0KPiA+ICsjZW5kaWYNCj4gPiArICAg ICAgICAgICAgICAgLm5leHRfaG9wID0gcmVzLT5uZXh0X2hvcCwNCj4gPiArICAgICAgICAgICAg ICAgLmZ3ZF9jbGFzcyAgPSByZXMtPmZ3ZF9jbGFzcywNCj4gPiArICAgICAgICAgICAgICAgLmV4 dF92YWxpZCA9IDAsDQo+ID4gKyAgICAgICAgICAgICAgIC5kZXB0aCA9IGRlcHRoLA0KPiA+ICsg ICAgICAgICAgICAgICAudmFsaWQgPSBWQUxJRCwNCj4gPiArICAgICAgIH07DQo+ID4gKw0KPiA+ DQo+ID4gICAgICAgICBmb3IgKGkgPSB0YmwyNF9pbmRleDsgaSA8ICh0YmwyNF9pbmRleCArIHRi bDI0X3JhbmdlKTsgaSsrKSB7DQo+ID4gICAgICAgICAgICAgICAgIC8qDQo+ID4gICAgICAgICAg ICAgICAgICAqIEZvciBpbnZhbGlkIE9SIHZhbGlkIGFuZCBub24tZXh0ZW5kZWQgdGJsIDI0IGVu dHJpZXMgc2V0DQo+ID4gICAgICAgICAgICAgICAgICAqIGVudHJ5Lg0KPiA+ICAgICAgICAgICAg ICAgICAgKi8NCj4gPiAtICAgICAgICAgICAgICAgaWYgKCFscG0tPnRibDI0W2ldLnZhbGlkIHx8 IChscG0tPnRibDI0W2ldLmV4dF9lbnRyeSA9PSAwICYmDQo+ID4gKyAgICAgICAgICAgICAgIGlm ICghbHBtLT50YmwyNFtpXS52YWxpZCB8fCAobHBtLT50YmwyNFtpXS5leHRfdmFsaWQgPT0gMCAm Jg0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHBtLT50YmwyNFtpXS5kZXB0 aCA8PSBkZXB0aCkpIHsNCj4gPg0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBy dGVfbHBtX3RibDI0X2VudHJ5IG5ld190YmwyNF9lbnRyeSA9IHsNCj4gPiAtICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHsgLm5leHRfaG9wID0gbmV4dF9ob3AsIH0sDQo+ID4gLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsaWQgPSBWQUxJRCwNCj4gPiAtICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC5leHRfZW50cnkgPSAwLA0KPiA+IC0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLmRlcHRoID0gZGVwdGgsDQo+ID4gLSAgICAgICAgICAgICAgICAg ICAgICAgfTsNCj4gPiAtDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgLyogU2V0dGluZyB0 YmwyNCBlbnRyeSBpbiBvbmUgZ28gdG8gYXZvaWQgcmFjZQ0KPiA+ICAgICAgICAgICAgICAgICAg ICAgICAgICAqIGNvbmRpdGlvbnMNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCj4g PiAtICAgICAgICAgICAgICAgICAgICAgICBscG0tPnRibDI0W2ldID0gbmV3X3RibDI0X2VudHJ5 Ow0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGxwbS0+dGJsMjRbaV0gPSBuZXdfdGJsX2Vu dHJ5Ow0KPiA+DQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7DQo+ID4gICAg ICAgICAgICAgICAgIH0NCj4gPg0KPiA+IC0gICAgICAgICAgICAgICBpZiAobHBtLT50YmwyNFtp XS5leHRfZW50cnkgPT0gMSkgew0KPiA+ICsgICAgICAgICAgICAgICBpZiAobHBtLT50YmwyNFtp XS5leHRfdmFsaWQgPT0gMSkgew0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElmIHRi bDI0IGVudHJ5IGlzIHZhbGlkIGFuZCBleHRlbmRlZCBjYWxjdWxhdGUNCj4gPiB0aGUNCj4gPiAg ICAgICAgICAgICAgICAgICAgICAgICAgKiAgaW5kZXggaW50byB0Ymw4Lg0KPiA+ICAgICAgICAg ICAgICAgICAgICAgICAgICAqLw0KPiA+IEBAIC00NjEsMTkgKzQ3NCwxNCBAQCBhZGRfZGVwdGhf c21hbGwoc3RydWN0IHJ0ZV9scG0gKmxwbSwgdWludDMyX3QNCj4gaXAsDQo+ID4gdWludDhfdCBk ZXB0aCwNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGogPSB0Ymw4X2luZGV4OyBq IDwgdGJsOF9ncm91cF9lbmQ7IGorKykgew0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaWYgKCFscG0tPnRibDhbal0udmFsaWQgfHwNCj4gPiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBscG0tPnRibDhbal0uZGVwdGggPD0NCj4gPiBk ZXB0aCkgew0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1 Y3QgcnRlX2xwbV90Ymw4X2VudHJ5DQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbmV3X3RibDhfZW50cnkgPSB7DQo+ID4gLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbGlkID0gVkFMSUQsDQo+ID4gLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbGlkX2dyb3Vw ID0gVkFMSUQsDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgLmRlcHRoID0gZGVwdGgsDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLm5leHRfaG9wID0gbmV4dF9ob3AsDQo+ID4gLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07DQo+ID4gKw0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfdGJsX2VudHJ5LmV4dF92YWxpZCA9IFZBTElE Ow0KPiA+DQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qDQo+ ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIFNldHRpbmcgdGJs OCBlbnRyeSBpbiBvbmUgZ28gdG8NCj4gPiBhdm9pZA0KPiA+ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKiByYWNlIGNvbmRpdGlvbnMNCj4gPiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQo+ID4gLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGxwbS0+dGJsOFtqXSA9IG5ld190Ymw4X2VudHJ5Ow0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBscG0tPnRibDhbal0gPSBuZXdf dGJsX2VudHJ5Ow0KPiA+DQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnRpbnVlOw0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KPiA+ IEBAIC00ODYsNyArNDk0LDcgQEAgYWRkX2RlcHRoX3NtYWxsKHN0cnVjdCBydGVfbHBtICpscG0s IHVpbnQzMl90IGlwLA0KPiA+IHVpbnQ4X3QgZGVwdGgsDQo+ID4NCj4gPiAgc3RhdGljIGlubGlu ZSBpbnQzMl90DQo+ID4gIGFkZF9kZXB0aF9iaWcoc3RydWN0IHJ0ZV9scG0gKmxwbSwgdWludDMy X3QgaXBfbWFza2VkLCB1aW50OF90IGRlcHRoLA0KPiA+IC0gICAgICAgICAgICAgICB1aW50OF90 IG5leHRfaG9wKQ0KPiA+ICsgICAgICAgICAgICAgICBzdHJ1Y3QgcnRlX2xwbV9yZXMgKnJlcykN Cj4gPiAgew0KPiA+ICAgICAgICAgdWludDMyX3QgdGJsMjRfaW5kZXg7DQo+ID4gICAgICAgICBp bnQzMl90IHRibDhfZ3JvdXBfaW5kZXgsIHRibDhfZ3JvdXBfc3RhcnQsIHRibDhfZ3JvdXBfZW5k LA0KPiA+IHRibDhfaW5kZXgsDQo+ID4gQEAgLTUxMiw3ICs1MjAsMTEgQEAgYWRkX2RlcHRoX2Jp ZyhzdHJ1Y3QgcnRlX2xwbSAqbHBtLCB1aW50MzJfdA0KPiBpcF9tYXNrZWQsDQo+ID4gdWludDhf dCBkZXB0aCwNCj4gPiAgICAgICAgICAgICAgICAgLyogU2V0IHRibDggZW50cnkuICovDQo+ID4g ICAgICAgICAgICAgICAgIGZvciAoaSA9IHRibDhfaW5kZXg7IGkgPCAodGJsOF9pbmRleCArIHRi bDhfcmFuZ2UpOyBpKyspIHsNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICBscG0tPnRibDhb aV0uZGVwdGggPSBkZXB0aDsNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICBscG0tPnRibDhb aV0ubmV4dF9ob3AgPSBuZXh0X2hvcDsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBscG0t PnRibDhbaV0ubmV4dF9ob3AgPSByZXMtPm5leHRfaG9wOw0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgIGxwbS0+dGJsOFtpXS5md2RfY2xhc3MgPSByZXMtPmZ3ZF9jbGFzczsNCj4gPiArI2lm ZGVmIFJURV9MSUJSVEVfTFBNX0FTTlVNDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgbHBt LT50Ymw4W2ldLmFzX251bSA9IHJlcy0+YXNfbnVtOw0KPiA+ICsjZW5kaWYNCj4gPiAgICAgICAg ICAgICAgICAgICAgICAgICBscG0tPnRibDhbaV0udmFsaWQgPSBWQUxJRDsNCj4gPiAgICAgICAg ICAgICAgICAgfQ0KPiA+DQo+ID4gQEAgLTUyMiwxNyArNTM0LDE3IEBAIGFkZF9kZXB0aF9iaWco c3RydWN0IHJ0ZV9scG0gKmxwbSwgdWludDMyX3QNCj4gPiBpcF9tYXNrZWQsIHVpbnQ4X3QgZGVw dGgsDQo+ID4gICAgICAgICAgICAgICAgICAqIHNvIGFzc2lnbiB3aG9sZSBzdHJ1Y3R1cmUgaW4g b25lIGdvDQo+ID4gICAgICAgICAgICAgICAgICAqLw0KPiA+DQo+ID4gLSAgICAgICAgICAgICAg IHN0cnVjdCBydGVfbHBtX3RibDI0X2VudHJ5IG5ld190YmwyNF9lbnRyeSA9IHsNCj4gPiAtICAg ICAgICAgICAgICAgICAgICAgICB7IC50Ymw4X2dpbmRleCA9ICh1aW50OF90KXRibDhfZ3JvdXBf aW5kZXgsIH0sDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgLnZhbGlkID0gVkFMSUQsDQo+ ID4gLSAgICAgICAgICAgICAgICAgICAgICAgLmV4dF9lbnRyeSA9IDEsDQo+ID4gKyAgICAgICAg ICAgICAgIHN0cnVjdCBydGVfbHBtX3RibF9lbnRyeSBuZXdfdGJsMjRfZW50cnkgPSB7DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgLnRibDhfZ2luZGV4ID0gKHVpbnQxNl90KXRibDhfZ3Jv dXBfaW5kZXgsDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgLmRlcHRoID0gMCwNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAuZXh0X3ZhbGlkID0gMSwNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAudmFsaWQgPSBWQUxJRCwNCj4gPiAgICAgICAgICAgICAgICAgfTsNCj4gPg0K PiA+ICAgICAgICAgICAgICAgICBscG0tPnRibDI0W3RibDI0X2luZGV4XSA9IG5ld190YmwyNF9l bnRyeTsNCj4gPg0KPiA+ICAgICAgICAgfS8qIElmIHZhbGlkIGVudHJ5IGJ1dCBub3QgZXh0ZW5k ZWQgY2FsY3VsYXRlIHRoZSBpbmRleCBpbnRvDQo+ID4gVGFibGU4LiAqLw0KPiA+IC0gICAgICAg ZWxzZSBpZiAobHBtLT50YmwyNFt0YmwyNF9pbmRleF0uZXh0X2VudHJ5ID09IDApIHsNCj4gPiAr ICAgICAgIGVsc2UgaWYgKGxwbS0+dGJsMjRbdGJsMjRfaW5kZXhdLmV4dF92YWxpZCA9PSAwKSB7 DQo+ID4gICAgICAgICAgICAgICAgIC8qIFNlYXJjaCBmb3IgZnJlZSB0Ymw4IGdyb3VwLiAqLw0K PiA+ICAgICAgICAgICAgICAgICB0Ymw4X2dyb3VwX2luZGV4ID0gdGJsOF9hbGxvYyhscG0tPnRi bDgpOw0KPiA+DQo+ID4gQEAgLTU1MSw2ICs1NjMsMTEgQEAgYWRkX2RlcHRoX2JpZyhzdHJ1Y3Qg cnRlX2xwbSAqbHBtLCB1aW50MzJfdA0KPiBpcF9tYXNrZWQsDQo+ID4gdWludDhfdCBkZXB0aCwN Cj4gPiAgICAgICAgICAgICAgICAgICAgICAgICBscG0tPnRibDhbaV0uZGVwdGggPSBscG0tPnRi bDI0W3RibDI0X2luZGV4XS5kZXB0aDsNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICBscG0t PnRibDhbaV0ubmV4dF9ob3AgPQ0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBscG0tPnRibDI0W3RibDI0X2luZGV4XS5uZXh0X2hvcDsNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICBscG0tPnRibDhbaV0uZndkX2NsYXNzID0NCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbHBtLT50YmwyNFt0YmwyNF9pbmRleF0uZndkX2Ns YXNzOw0KPiA+ICsjaWZkZWYgUlRFX0xJQlJURV9MUE1fQVNOVU0NCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICBscG0tPnRibDhbaV0uYXNfbnVtID0NCj4gPiBscG0tPnRibDI0W3RibDI0X2lu ZGV4XS5hc19udW07DQo+ID4gKyNlbmRpZg0KPiA+ICAgICAgICAgICAgICAgICB9DQo+ID4NCj4g PiAgICAgICAgICAgICAgICAgdGJsOF9pbmRleCA9IHRibDhfZ3JvdXBfc3RhcnQgKyAoaXBfbWFz a2VkICYgMHhGRik7DQo+ID4gQEAgLTU2MSw3ICs1NzgsMTEgQEAgYWRkX2RlcHRoX2JpZyhzdHJ1 Y3QgcnRlX2xwbSAqbHBtLCB1aW50MzJfdA0KPiBpcF9tYXNrZWQsDQo+ID4gdWludDhfdCBkZXB0 aCwNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHBtLT50Ymw4 W2ldLmRlcHRoIDw9IGRlcHRoKSB7DQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBscG0tPnRibDhbaV0udmFsaWQgPSBWQUxJRDsNCj4gPiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGxwbS0+dGJsOFtpXS5kZXB0aCA9IGRlcHRoOw0KPiA+IC0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbHBtLT50Ymw4W2ldLm5leHRfaG9wID0gbmV4dF9ob3A7DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBscG0tPnRibDhbaV0ubmV4dF9ob3AgPSBy ZXMtPm5leHRfaG9wOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHBtLT50 Ymw4W2ldLmZ3ZF9jbGFzcyA9IHJlcy0+ZndkX2NsYXNzOw0KPiA+ICsjaWZkZWYgUlRFX0xJQlJU RV9MUE1fQVNOVU0NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxwbS0+dGJs OFtpXS5hc19udW0gPSByZXMtPmFzX251bTsNCj4gPiArI2VuZGlmDQo+ID4NCj4gPiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KPiA+ICAgICAgICAgICAgICAgICAg ICAgICAgIH0NCj4gPiBAQCAtNTczLDExICs1OTQsMTEgQEAgYWRkX2RlcHRoX2JpZyhzdHJ1Y3Qg cnRlX2xwbSAqbHBtLCB1aW50MzJfdA0KPiA+IGlwX21hc2tlZCwgdWludDhfdCBkZXB0aCwNCj4g PiAgICAgICAgICAgICAgICAgICogc28gYXNzaWduIHdob2xlIHN0cnVjdHVyZSBpbiBvbmUgZ28u DQo+ID4gICAgICAgICAgICAgICAgICAqLw0KPiA+DQo+ID4gLSAgICAgICAgICAgICAgIHN0cnVj dCBydGVfbHBtX3RibDI0X2VudHJ5IG5ld190YmwyNF9lbnRyeSA9IHsNCj4gPiAtICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHsgLnRibDhfZ2luZGV4ID0gKHVpbnQ4X3QpdGJsOF9ncm91 cF9pbmRleCwNCj4gPiB9LA0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZh bGlkID0gVkFMSUQsDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZXh0X2Vu dHJ5ID0gMSwNCj4gPiArICAgICAgICAgICAgICAgc3RydWN0IHJ0ZV9scG1fdGJsX2VudHJ5IG5l d190YmwyNF9lbnRyeSA9IHsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50 Ymw4X2dpbmRleCA9ICh1aW50MTZfdCl0Ymw4X2dyb3VwX2luZGV4LA0KPiA+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLmRlcHRoID0gMCwNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC5leHRfdmFsaWQgPSAxLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLnZhbGlkID0gVkFMSUQsDQo+ID4gICAgICAgICAgICAgICAgIH07DQo+ID4NCj4g PiAgICAgICAgICAgICAgICAgbHBtLT50YmwyNFt0YmwyNF9pbmRleF0gPSBuZXdfdGJsMjRfZW50 cnk7DQo+ID4gQEAgLTU5NSwxMSArNjE2LDE1IEBAIGFkZF9kZXB0aF9iaWcoc3RydWN0IHJ0ZV9s cG0gKmxwbSwgdWludDMyX3QNCj4gPiBpcF9tYXNrZWQsIHVpbnQ4X3QgZGVwdGgsDQo+ID4NCj4g PiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWxwbS0+dGJsOFtpXS52YWxpZCB8fA0KPiA+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBscG0tPnRibDhbaV0uZGVw dGggPD0gZGVwdGgpIHsNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVj dCBydGVfbHBtX3RibDhfZW50cnkgbmV3X3RibDhfZW50cnkgPSB7DQo+ID4gLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWxpZCA9IFZBTElELA0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHJ0ZV9scG1fdGJsX2VudHJ5IG5ld190Ymw4 X2VudHJ5ID0gew0KPiA+ICsjaWZkZWYgUlRFX0xJQlJURV9MUE1fQVNOVU0NCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmFzX251bSA9IHJlcy0+YXNfbnVtLA0K PiA+ICsjZW5kaWYNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Lm5leHRfaG9wID0gcmVzLT5uZXh0X2hvcCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLmZ3ZF9jbGFzcyA9IHJlcy0+ZndkX2NsYXNzLA0KPiA+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZGVwdGggPSBkZXB0aCwNCj4gPiAtICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm5leHRfaG9wID0gbmV4dF9ob3As DQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWxpZF9ncm91 cCA9DQo+ID4gbHBtLT50Ymw4W2ldLnZhbGlkX2dyb3VwLA0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAuZXh0X3ZhbGlkID0gbHBtLT50Ymw4W2ldLmV4dF92YWxp ZCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbGlkID0g VkFMSUQsDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ow0KPiA+DQo+ID4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKg0KPiA+IEBAIC02MjEsMTkgKzY0Niwx OSBAQCBhZGRfZGVwdGhfYmlnKHN0cnVjdCBydGVfbHBtICpscG0sIHVpbnQzMl90DQo+ID4gaXBf bWFza2VkLCB1aW50OF90IGRlcHRoLA0KPiA+ICAgKi8NCj4gPiAgaW50DQo+ID4gIHJ0ZV9scG1f YWRkKHN0cnVjdCBydGVfbHBtICpscG0sIHVpbnQzMl90IGlwLCB1aW50OF90IGRlcHRoLA0KPiA+ IC0gICAgICAgICAgICAgICB1aW50OF90IG5leHRfaG9wKQ0KPiA+ICsgICAgICAgICAgICAgICBz dHJ1Y3QgcnRlX2xwbV9yZXMgKnJlcykNCj4gPiAgew0KPiA+ICAgICAgICAgaW50MzJfdCBydWxl X2luZGV4LCBzdGF0dXMgPSAwOw0KPiA+ICAgICAgICAgdWludDMyX3QgaXBfbWFza2VkOw0KPiA+ DQo+ID4gICAgICAgICAvKiBDaGVjayB1c2VyIGFyZ3VtZW50cy4gKi8NCj4gPiAtICAgICAgIGlm ICgobHBtID09IE5VTEwpIHx8IChkZXB0aCA8IDEpIHx8IChkZXB0aCA+IFJURV9MUE1fTUFYX0RF UFRIKSkNCj4gPiArICAgICAgIGlmICgobHBtID09IE5VTEwpIHx8IChyZXMgPT0gTlVMTCkgfHwg KGRlcHRoIDwgMSkgfHwgKGRlcHRoID4NCj4gPiBSVEVfTFBNX01BWF9ERVBUSCkpDQo+ID4gICAg ICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0KPiA+DQo+ID4gICAgICAgICBpcF9tYXNrZWQg PSBpcCAmIGRlcHRoX3RvX21hc2soZGVwdGgpOw0KPiA+DQo+ID4gICAgICAgICAvKiBBZGQgdGhl IHJ1bGUgdG8gdGhlIHJ1bGUgdGFibGUuICovDQo+ID4gLSAgICAgICBydWxlX2luZGV4ID0gcnVs ZV9hZGQobHBtLCBpcF9tYXNrZWQsIGRlcHRoLCBuZXh0X2hvcCk7DQo+ID4gKyAgICAgICBydWxl X2luZGV4ID0gcnVsZV9hZGQobHBtLCBpcF9tYXNrZWQsIGRlcHRoLCByZXMpOw0KPiA+DQo+ID4g ICAgICAgICAvKiBJZiB0aGUgaXMgbm8gc3BhY2UgYXZhaWxhYmxlIGZvciBuZXcgcnVsZSByZXR1 cm4gZXJyb3IuICovDQo+ID4gICAgICAgICBpZiAocnVsZV9pbmRleCA8IDApIHsNCj4gPiBAQCAt NjQxLDEwICs2NjYsMTAgQEAgcnRlX2xwbV9hZGQoc3RydWN0IHJ0ZV9scG0gKmxwbSwgdWludDMy X3QgaXAsDQo+IHVpbnQ4X3QNCj4gPiBkZXB0aCwNCj4gPiAgICAgICAgIH0NCj4gPg0KPiA+ICAg ICAgICAgaWYgKGRlcHRoIDw9IE1BWF9ERVBUSF9UQkwyNCkgew0KPiA+IC0gICAgICAgICAgICAg ICBzdGF0dXMgPSBhZGRfZGVwdGhfc21hbGwobHBtLCBpcF9tYXNrZWQsIGRlcHRoLCBuZXh0X2hv cCk7DQo+ID4gKyAgICAgICAgICAgICAgIHN0YXR1cyA9IGFkZF9kZXB0aF9zbWFsbChscG0sIGlw X21hc2tlZCwgZGVwdGgsIHJlcyk7DQo+ID4gICAgICAgICB9DQo+ID4gICAgICAgICBlbHNlIHsg LyogSWYgZGVwdGggPiBSVEVfTFBNX01BWF9ERVBUSF9UQkwyNCAqLw0KPiA+IC0gICAgICAgICAg ICAgICBzdGF0dXMgPSBhZGRfZGVwdGhfYmlnKGxwbSwgaXBfbWFza2VkLCBkZXB0aCwgbmV4dF9o b3ApOw0KPiA+ICsgICAgICAgICAgICAgICBzdGF0dXMgPSBhZGRfZGVwdGhfYmlnKGxwbSwgaXBf bWFza2VkLCBkZXB0aCwgcmVzKTsNCj4gPg0KPiA+ICAgICAgICAgICAgICAgICAvKg0KPiA+ICAg ICAgICAgICAgICAgICAgKiBJZiBhZGQgZmFpbHMgZHVlIHRvIGV4aGF1c3Rpb24gb2YgdGJsOCBl eHRlbnNpb25zIGRlbGV0ZQ0KPiA+IEBAIC02NjUsMTQgKzY5MCwxNCBAQCBydGVfbHBtX2FkZChz dHJ1Y3QgcnRlX2xwbSAqbHBtLCB1aW50MzJfdCBpcCwNCj4gdWludDhfdA0KPiA+IGRlcHRoLA0K PiA+ICAgKi8NCj4gPiAgaW50DQo+ID4gIHJ0ZV9scG1faXNfcnVsZV9wcmVzZW50KHN0cnVjdCBy dGVfbHBtICpscG0sIHVpbnQzMl90IGlwLCB1aW50OF90IGRlcHRoLA0KPiA+IC11aW50OF90ICpu ZXh0X2hvcCkNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcnRlX2xwbV9yZXMg KnJlcykNCj4gPiAgew0KPiA+ICAgICAgICAgdWludDMyX3QgaXBfbWFza2VkOw0KPiA+ICAgICAg ICAgaW50MzJfdCBydWxlX2luZGV4Ow0KPiA+DQo+ID4gICAgICAgICAvKiBDaGVjayB1c2VyIGFy Z3VtZW50cy4gKi8NCj4gPiAgICAgICAgIGlmICgobHBtID09IE5VTEwpIHx8DQo+ID4gLSAgICAg ICAgICAgICAgIChuZXh0X2hvcCA9PSBOVUxMKSB8fA0KPiA+ICsgICAgICAgICAgICAgICAocmVz ID09IE5VTEwpIHx8DQo+ID4gICAgICAgICAgICAgICAgIChkZXB0aCA8IDEpIHx8IChkZXB0aCA+ IFJURV9MUE1fTUFYX0RFUFRIKSkNCj4gPiAgICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7 DQo+ID4NCj4gPiBAQCAtNjgxLDcgKzcwNiwxMSBAQCB1aW50OF90ICpuZXh0X2hvcCkNCj4gPiAg ICAgICAgIHJ1bGVfaW5kZXggPSBydWxlX2ZpbmQobHBtLCBpcF9tYXNrZWQsIGRlcHRoKTsNCj4g Pg0KPiA+ICAgICAgICAgaWYgKHJ1bGVfaW5kZXggPj0gMCkgew0KPiA+IC0gICAgICAgICAgICAg ICAqbmV4dF9ob3AgPSBscG0tPnJ1bGVzX3RibFtydWxlX2luZGV4XS5uZXh0X2hvcDsNCj4gPiAr ICAgICAgICAgICAgICAgcmVzLT5uZXh0X2hvcCA9IGxwbS0+cnVsZXNfdGJsW3J1bGVfaW5kZXhd Lm5leHRfaG9wOw0KPiA+ICsgICAgICAgICAgICAgICByZXMtPmZ3ZF9jbGFzcyA9IGxwbS0+cnVs ZXNfdGJsW3J1bGVfaW5kZXhdLmZ3ZF9jbGFzczsNCj4gPiArI2lmZGVmIFJURV9MSUJSVEVfTFBN X0FTTlVNDQo+ID4gKyAgICAgICAgICAgICAgIHJlcy0+YXNfbnVtID0gbHBtLT5ydWxlc190Ymxb cnVsZV9pbmRleF0uYXNfbnVtOw0KPiA+ICsjZW5kaWYNCj4gPiAgICAgICAgICAgICAgICAgcmV0 dXJuIDE7DQo+ID4gICAgICAgICB9DQo+ID4NCj4gPiBAQCAtNzMxLDcgKzc2MCw3IEBAIGRlbGV0 ZV9kZXB0aF9zbWFsbChzdHJ1Y3QgcnRlX2xwbSAqbHBtLCB1aW50MzJfdA0KPiA+IGlwX21hc2tl ZCwNCj4gPiAgICAgICAgICAgICAgICAgICovDQo+ID4gICAgICAgICAgICAgICAgIGZvciAoaSA9 IHRibDI0X2luZGV4OyBpIDwgKHRibDI0X2luZGV4ICsgdGJsMjRfcmFuZ2UpOyBpKyspDQo+ID4g ew0KPiA+DQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxwbS0+dGJsMjRbaV0uZXh0 X2VudHJ5ID09IDAgJiYNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBpZiAobHBtLT50Ymwy NFtpXS5leHRfdmFsaWQgPT0gMCAmJg0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBscG0tPnRibDI0W2ldLmRlcHRoIDw9IGRlcHRoICkgew0KPiA+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbHBtLT50YmwyNFtpXS52YWxpZCA9IElOVkFMSUQ7DQo+ ID4gICAgICAgICAgICAgICAgICAgICAgICAgfQ0KPiA+IEBAIC03NjEsMjMgKzc5MCwzMCBAQCBk ZWxldGVfZGVwdGhfc21hbGwoc3RydWN0IHJ0ZV9scG0gKmxwbSwNCj4gdWludDMyX3QNCj4gPiBp cF9tYXNrZWQsDQo+ID4gICAgICAgICAgICAgICAgICAqIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHJ1 bGUuDQo+ID4gICAgICAgICAgICAgICAgICAqLw0KPiA+DQo+ID4gLSAgICAgICAgICAgICAgIHN0 cnVjdCBydGVfbHBtX3RibDI0X2VudHJ5IG5ld190YmwyNF9lbnRyeSA9IHsNCj4gPiAtICAgICAg ICAgICAgICAgICAgICAgICB7Lm5leHRfaG9wID0NCj4gPiBscG0tPnJ1bGVzX3RibFtzdWJfcnVs ZV9pbmRleF0ubmV4dF9ob3AsfSwNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAudmFsaWQg PSBWQUxJRCwNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAuZXh0X2VudHJ5ID0gMCwNCj4g PiArICAgICAgICAgICAgICAgc3RydWN0IHJ0ZV9scG1fdGJsX2VudHJ5IG5ld190YmwyNF9lbnRy eSA9IHsNCj4gPiArI2lmZGVmIFJURV9MSUJSVEVfTFBNX0FTTlVNDQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgLmFzX251bSA9IGxwbS0+cnVsZXNfdGJsW3N1Yl9ydWxlX2luZGV4XS5hc19u dW0sDQo+ID4gKyNlbmRpZg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIC5uZXh0X2hvcCA9 IGxwbS0+cnVsZXNfdGJsW3N1Yl9ydWxlX2luZGV4XS5uZXh0X2hvcCwNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAuZndkX2NsYXNzID0NCj4gPiBscG0tPnJ1bGVzX3RibFtzdWJfcnVsZV9p bmRleF0uZndkX2NsYXNzLA0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIC5kZXB0aCA9IHN1 Yl9ydWxlX2RlcHRoLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIC5leHRfdmFsaWQgPSAw LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIC52YWxpZCA9IFZBTElELA0KPiA+ICAgICAg ICAgICAgICAgICB9Ow0KPiA+DQo+ID4gLSAgICAgICAgICAgICAgIHN0cnVjdCBydGVfbHBtX3Ri bDhfZW50cnkgbmV3X3RibDhfZW50cnkgPSB7DQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAg LnZhbGlkID0gVkFMSUQsDQo+ID4gKyAgICAgICAgICAgICAgIHN0cnVjdCBydGVfbHBtX3RibF9l bnRyeSBuZXdfdGJsOF9lbnRyeSA9IHsNCj4gPiArI2lmZGVmIFJURV9MSUJSVEVfTFBNX0FTTlVN DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgLmFzX251bSA9IGxwbS0+cnVsZXNfdGJsW3N1 Yl9ydWxlX2luZGV4XS5hc19udW0sDQo+ID4gKyNlbmRpZg0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgIC5uZXh0X2hvcCA9IGxwbS0+cnVsZXNfdGJsW3N1Yl9ydWxlX2luZGV4XS5uZXh0X2hv cCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAuZndkX2NsYXNzID0NCj4gPiBscG0tPnJ1 bGVzX3RibFtzdWJfcnVsZV9pbmRleF0uZndkX2NsYXNzLA0KPiA+ICAgICAgICAgICAgICAgICAg ICAgICAgIC5kZXB0aCA9IHN1Yl9ydWxlX2RlcHRoLA0KPiA+IC0gICAgICAgICAgICAgICAgICAg ICAgIC5uZXh0X2hvcCA9IGxwbS0+cnVsZXNfdGJsDQo+ID4gLSAgICAgICAgICAgICAgICAgICAg ICAgW3N1Yl9ydWxlX2luZGV4XS5uZXh0X2hvcCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAudmFsaWQgPSBWQUxJRCwNCj4gPiAgICAgICAgICAgICAgICAgfTsNCj4gPg0KPiA+ICAgICAg ICAgICAgICAgICBmb3IgKGkgPSB0YmwyNF9pbmRleDsgaSA8ICh0YmwyNF9pbmRleCArIHRibDI0 X3JhbmdlKTsgaSsrKQ0KPiA+IHsNCj4gPg0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgIGlm IChscG0tPnRibDI0W2ldLmV4dF9lbnRyeSA9PSAwICYmDQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgaWYgKGxwbS0+dGJsMjRbaV0uZXh0X3ZhbGlkID09IDAgJiYNCj4gPiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHBtLT50YmwyNFtpXS5kZXB0aCA8PSBkZXB0 aCApIHsNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxwbS0+dGJsMjRbaV0g PSBuZXdfdGJsMjRfZW50cnk7DQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgfQ0KPiA+IEBA IC04MTQsNyArODUwLDcgQEAgZGVsZXRlX2RlcHRoX3NtYWxsKHN0cnVjdCBydGVfbHBtICpscG0s IHVpbnQzMl90DQo+ID4gaXBfbWFza2VkLA0KPiA+ICAgKiB0aHVzIGNhbiBiZSByZWN5Y2xlZA0K PiA+ICAgKi8NCj4gPiAgc3RhdGljIGlubGluZSBpbnQzMl90DQo+ID4gLXRibDhfcmVjeWNsZV9j aGVjayhzdHJ1Y3QgcnRlX2xwbV90Ymw4X2VudHJ5ICp0Ymw4LCB1aW50MzJfdA0KPiA+IHRibDhf Z3JvdXBfc3RhcnQpDQo+ID4gK3RibDhfcmVjeWNsZV9jaGVjayhzdHJ1Y3QgcnRlX2xwbV90Ymxf ZW50cnkgKnRibDgsIHVpbnQzMl90DQo+ID4gdGJsOF9ncm91cF9zdGFydCkNCj4gPiAgew0KPiA+ ICAgICAgICAgdWludDMyX3QgdGJsOF9ncm91cF9lbmQsIGk7DQo+ID4gICAgICAgICB0Ymw4X2dy b3VwX2VuZCA9IHRibDhfZ3JvdXBfc3RhcnQgKw0KPiBSVEVfTFBNX1RCTDhfR1JPVVBfTlVNX0VO VFJJRVM7DQo+ID4gQEAgLTg5MSwxMSArOTI3LDE1IEBAIGRlbGV0ZV9kZXB0aF9iaWcoc3RydWN0 IHJ0ZV9scG0gKmxwbSwgdWludDMyX3QNCj4gPiBpcF9tYXNrZWQsDQo+ID4gICAgICAgICB9DQo+ ID4gICAgICAgICBlbHNlIHsNCj4gPiAgICAgICAgICAgICAgICAgLyogU2V0IG5ldyB0Ymw4IGVu dHJ5LiAqLw0KPiA+IC0gICAgICAgICAgICAgICBzdHJ1Y3QgcnRlX2xwbV90Ymw4X2VudHJ5IG5l d190Ymw4X2VudHJ5ID0gew0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgIC52YWxpZCA9IFZB TElELA0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgIC5kZXB0aCA9IHN1Yl9ydWxlX2RlcHRo LA0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgIC52YWxpZF9ncm91cCA9DQo+ID4gbHBtLT50 Ymw4W3RibDhfZ3JvdXBfc3RhcnRdLnZhbGlkX2dyb3VwLA0KPiA+ICsgICAgICAgICAgICAgICBz dHJ1Y3QgcnRlX2xwbV90YmxfZW50cnkgbmV3X3RibDhfZW50cnkgPSB7DQo+ID4gKyNpZmRlZiBS VEVfTElCUlRFX0xQTV9BU05VTQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIC5hc19udW0g PSBscG0tPnJ1bGVzX3RibFtzdWJfcnVsZV9pbmRleF0uYXNfbnVtLA0KPiA+ICsjZW5kaWYNCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAuZndkX2NsYXNzID0NCj4gPiBscG0tPnJ1bGVzX3Ri bFtzdWJfcnVsZV9pbmRleF0uZndkX2NsYXNzLA0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAg IC5uZXh0X2hvcCA9IGxwbS0+cnVsZXNfdGJsW3N1Yl9ydWxlX2luZGV4XS5uZXh0X2hvcCwNCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAuZGVwdGggPSBzdWJfcnVsZV9kZXB0aCwNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAuZXh0X3ZhbGlkID0gbHBtLT50Ymw4W3RibDhfZ3JvdXBf c3RhcnRdLmV4dF92YWxpZCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAudmFsaWQgPSBW QUxJRCwNCj4gPiAgICAgICAgICAgICAgICAgfTsNCj4gPg0KPiA+ICAgICAgICAgICAgICAgICAv Kg0KPiA+IEBAIC05MjMsMTEgKzk2MywxNSBAQCBkZWxldGVfZGVwdGhfYmlnKHN0cnVjdCBydGVf bHBtICpscG0sIHVpbnQzMl90DQo+ID4gaXBfbWFza2VkLA0KPiA+ICAgICAgICAgfQ0KPiA+ICAg ICAgICAgZWxzZSBpZiAodGJsOF9yZWN5Y2xlX2luZGV4ID4gLTEpIHsNCj4gPiAgICAgICAgICAg ICAgICAgLyogVXBkYXRlIHRibDI0IGVudHJ5LiAqLw0KPiA+IC0gICAgICAgICAgICAgICBzdHJ1 Y3QgcnRlX2xwbV90YmwyNF9lbnRyeSBuZXdfdGJsMjRfZW50cnkgPSB7DQo+ID4gLSAgICAgICAg ICAgICAgICAgICAgICAgeyAubmV4dF9ob3AgPQ0KPiA+IGxwbS0+dGJsOFt0Ymw4X3JlY3ljbGVf aW5kZXhdLm5leHRfaG9wLCB9LA0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgIC52YWxpZCA9 IFZBTElELA0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgIC5leHRfZW50cnkgPSAwLA0KPiA+ ICsgICAgICAgICAgICAgICBzdHJ1Y3QgcnRlX2xwbV90YmxfZW50cnkgbmV3X3RibDI0X2VudHJ5 ID0gew0KPiA+ICsjaWZkZWYgUlRFX0xJQlJURV9MUE1fQVNOVU0NCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAuYXNfbnVtID0gbHBtLT50Ymw4W3RibDhfcmVjeWNsZV9pbmRleF0uYXNfbnVt LA0KPiA+ICsjZW5kaWYNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAubmV4dF9ob3AgPSBs cG0tPnRibDhbdGJsOF9yZWN5Y2xlX2luZGV4XS5uZXh0X2hvcCwNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAuZndkX2NsYXNzID0NCj4gPiBscG0tPnRibDhbdGJsOF9yZWN5Y2xlX2luZGV4 XS5md2RfY2xhc3MsDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgLmRlcHRoID0gbHBtLT50 Ymw4W3RibDhfcmVjeWNsZV9pbmRleF0uZGVwdGgsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgLmV4dF92YWxpZCA9IDAsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgLnZhbGlkID0g VkFMSUQsDQo+ID4gICAgICAgICAgICAgICAgIH07DQo+ID4NCj4gPiAgICAgICAgICAgICAgICAg LyogU2V0IHRibDI0IGJlZm9yZSBmcmVlaW5nIHRibDggdG8gYXZvaWQgcmFjZSBjb25kaXRpb24u ICovDQo+ID4gZGlmZiAtLWdpdCBhL2xpYi9saWJydGVfbHBtL3J0ZV9scG0uaCBiL2xpYi9saWJy dGVfbHBtL3J0ZV9scG0uaA0KPiA+IGluZGV4IGMyOTljZTIuLjdjNjE1YmMgMTAwNjQ0DQo+ID4g LS0tIGEvbGliL2xpYnJ0ZV9scG0vcnRlX2xwbS5oDQo+ID4gKysrIGIvbGliL2xpYnJ0ZV9scG0v cnRlX2xwbS5oDQo+ID4gQEAgLTMxLDggKzMxLDggQEANCj4gPiAgICogICBPRiBUSElTIFNPRlRX QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gNCj4gREFNQUdF Lg0KPiA+ICAgKi8NCj4gPg0KPiA+IC0jaWZuZGVmIF9SVEVfTFBNX0hfDQo+ID4gLSNkZWZpbmUg X1JURV9MUE1fSF8NCj4gPiArI2lmbmRlZiBfUlRFX0xQTV9FWFRfSF8NCj4gPiArI2RlZmluZSBf UlRFX0xQTV9FWFRfSF8NCj4gPg0KPiA+ICAvKioNCj4gPiAgICogQGZpbGUNCj4gPiBAQCAtODEs NTcgKzgxLDU4IEBAIGV4dGVybiAiQyIgew0KPiA+ICAjZGVmaW5lIFJURV9MUE1fUkVUVVJOX0lG X1RSVUUoY29uZCwgcmV0dmFsKQ0KPiA+ICAjZW5kaWYNCj4gPg0KPiA+IC0vKiogQGludGVybmFs IGJpdG1hc2sgd2l0aCB2YWxpZCBhbmQgZXh0X2VudHJ5L3ZhbGlkX2dyb3VwIGZpZWxkcyBzZXQg Ki8NCj4gPiAtI2RlZmluZSBSVEVfTFBNX1ZBTElEX0VYVF9FTlRSWV9CSVRNQVNLIDB4MDMwMA0K PiA+ICsvKiogQGludGVybmFsIGJpdG1hc2sgd2l0aCB2YWxpZCBhbmQgZXh0X3ZhbGlkL2V4dF92 YWxpZCBmaWVsZHMgc2V0ICovDQo+ID4gKyNkZWZpbmUgUlRFX0xQTV9WQUxJRF9FWFRfRU5UUllf QklUTUFTSyAweDAzDQo+ID4NCj4gPiAgLyoqIEJpdG1hc2sgdXNlZCB0byBpbmRpY2F0ZSBzdWNj ZXNzZnVsIGxvb2t1cCAqLw0KPiA+IC0jZGVmaW5lIFJURV9MUE1fTE9PS1VQX1NVQ0NFU1MgICAg ICAgICAgMHgwMTAwDQo+ID4gKyNkZWZpbmUgUlRFX0xQTV9MT09LVVBfU1VDQ0VTUyAgICAgICAg ICAweDAxDQo+ID4gKw0KPiA+ICtzdHJ1Y3QgcnRlX2xwbV9yZXMgew0KPiA+ICsgICAgICAgdWlu dDE2X3QgICAgICAgIG5leHRfaG9wOw0KPiA+ICsgICAgICAgdWludDhfdCAgICAgICAgIGZ3ZF9j bGFzczsNCj4gPiArI2lmZGVmIFJURV9MSUJSVEVfTFBNX0FTTlVNDQo+ID4gKyAgICAgICB1aW50 MzJfdCAgICAgICAgYXNfbnVtOw0KPiA+ICsjZW5kaWYNCj4gPiArfTsNCj4gPg0KPiA+ICAjaWYg UlRFX0JZVEVfT1JERVIgPT0gUlRFX0xJVFRMRV9FTkRJQU4NCj4gPiAtLyoqIEBpbnRlcm5hbCBU YmwyNCBlbnRyeSBzdHJ1Y3R1cmUuICovDQo+ID4gLXN0cnVjdCBydGVfbHBtX3RibDI0X2VudHJ5 IHsNCj4gPiAtICAgICAgIC8qIFN0b3JlcyBOZXh0IGhvcCBvciBncm91cCBpbmRleCAoaS5lLiBn aW5kZXgpaW50byB0Ymw4LiAqLw0KPiA+ICtzdHJ1Y3QgcnRlX2xwbV90YmxfZW50cnkgew0KPiA+ ICsgICAgICAgdWludDhfdCB2YWxpZCAgICAgICAgICAgOjE7DQo+ID4gKyAgICAgICB1aW50OF90 IGV4dF92YWxpZCAgICAgICA6MTsNCj4gPiArICAgICAgIHVpbnQ4X3QgZGVwdGggICAgICAgICAg IDo2Ow0KPiA+ICsgICAgICAgdWludDhfdCBmd2RfY2xhc3M7DQo+ID4gICAgICAgICB1bmlvbiB7 DQo+ID4gLSAgICAgICAgICAgICAgIHVpbnQ4X3QgbmV4dF9ob3A7DQo+ID4gLSAgICAgICAgICAg ICAgIHVpbnQ4X3QgdGJsOF9naW5kZXg7DQo+ID4gKyAgICAgICAgICAgICAgIHVpbnQxNl90IG5l eHRfaG9wOw0KPiA+ICsgICAgICAgICAgICAgICB1aW50MTZfdCB0Ymw4X2dpbmRleDsNCj4gPiAg ICAgICAgIH07DQo+ID4gLSAgICAgICAvKiBVc2luZyBzaW5nbGUgdWludDhfdCB0byBzdG9yZSAz IHZhbHVlcy4gKi8NCj4gPiAtICAgICAgIHVpbnQ4X3QgdmFsaWQgICAgIDoxOyAvKio8IFZhbGlk YXRpb24gZmxhZy4gKi8NCj4gPiAtICAgICAgIHVpbnQ4X3QgZXh0X2VudHJ5IDoxOyAvKio8IEV4 dGVybmFsIGVudHJ5LiAqLw0KPiA+IC0gICAgICAgdWludDhfdCBkZXB0aCAgICAgOjY7IC8qKjwg UnVsZSBkZXB0aC4gKi8NCj4gPiAtfTsNCj4gPiAtDQo+ID4gLS8qKiBAaW50ZXJuYWwgVGJsOCBl bnRyeSBzdHJ1Y3R1cmUuICovDQo+ID4gLXN0cnVjdCBydGVfbHBtX3RibDhfZW50cnkgew0KPiA+ IC0gICAgICAgdWludDhfdCBuZXh0X2hvcDsgLyoqPCBuZXh0IGhvcC4gKi8NCj4gPiAtICAgICAg IC8qIFVzaW5nIHNpbmdsZSB1aW50OF90IHRvIHN0b3JlIDMgdmFsdWVzLiAqLw0KPiA+IC0gICAg ICAgdWludDhfdCB2YWxpZCAgICAgICA6MTsgLyoqPCBWYWxpZGF0aW9uIGZsYWcuICovDQo+ID4g LSAgICAgICB1aW50OF90IHZhbGlkX2dyb3VwIDoxOyAvKio8IEdyb3VwIHZhbGlkYXRpb24gZmxh Zy4gKi8NCj4gPiAtICAgICAgIHVpbnQ4X3QgZGVwdGggICAgICAgOjY7IC8qKjwgUnVsZSBkZXB0 aC4gKi8NCj4gPiArI2lmZGVmIFJURV9MSUJSVEVfTFBNX0FTTlVNDQo+ID4gKyAgICAgICB1aW50 MzJfdCBhc19udW07DQo+ID4gKyNlbmRpZg0KPiA+ICB9Ow0KPiA+ICAjZWxzZQ0KPiA+IC1zdHJ1 Y3QgcnRlX2xwbV90YmwyNF9lbnRyeSB7DQo+ID4gLSAgICAgICB1aW50OF90IGRlcHRoICAgICAg IDo2Ow0KPiA+IC0gICAgICAgdWludDhfdCBleHRfZW50cnkgICA6MTsNCj4gPiAtICAgICAgIHVp bnQ4X3QgdmFsaWQgICAgICAgOjE7DQo+ID4gK3N0cnVjdCBydGVfbHBtX3RibF9lbnRyeSB7DQo+ ID4gKyNpZmRlZiBSVEVfTElCUlRFX0xQTV9BU05VTQ0KPiA+ICsgICAgICAgdWludDMyX3QgYXNf bnVtOw0KPiA+ICsjZW5kaWYNCj4gPiAgICAgICAgIHVuaW9uIHsNCj4gPiAtICAgICAgICAgICAg ICAgdWludDhfdCB0Ymw4X2dpbmRleDsNCj4gPiAtICAgICAgICAgICAgICAgdWludDhfdCBuZXh0 X2hvcDsNCj4gPiArICAgICAgICAgICAgICAgdWludDE2X3QgdGJsOF9naW5kZXg7DQo+ID4gKyAg ICAgICAgICAgICAgIHVpbnQxNl90IG5leHRfaG9wOw0KPiA+ICAgICAgICAgfTsNCj4gPiAtfTsN Cj4gPiAtDQo+ID4gLXN0cnVjdCBydGVfbHBtX3RibDhfZW50cnkgew0KPiA+IC0gICAgICAgdWlu dDhfdCBkZXB0aCAgICAgICA6NjsNCj4gPiAtICAgICAgIHVpbnQ4X3QgdmFsaWRfZ3JvdXAgOjE7 DQo+ID4gLSAgICAgICB1aW50OF90IHZhbGlkICAgICAgIDoxOw0KPiA+IC0gICAgICAgdWludDhf dCBuZXh0X2hvcDsNCj4gPiArICAgICAgIHVpbnQ4X3QgZndkX2NsYXNzOw0KPiA+ICsgICAgICAg dWludDhfdCBkZXB0aCAgICAgICAgICAgOjY7DQo+ID4gKyAgICAgICB1aW50OF90IGV4dF92YWxp ZCAgICAgICA6MTsNCj4gPiArICAgICAgIHVpbnQ4X3QgdmFsaWQgICAgICAgICAgIDoxOw0KPiA+ ICB9Ow0KPiA+ICAjZW5kaWYNCj4gPg0KPiA+ICAvKiogQGludGVybmFsIFJ1bGUgc3RydWN0dXJl LiAqLw0KPiA+ICBzdHJ1Y3QgcnRlX2xwbV9ydWxlIHsNCj4gPiAgICAgICAgIHVpbnQzMl90IGlw OyAvKio8IFJ1bGUgSVAgYWRkcmVzcy4gKi8NCj4gPiAtICAgICAgIHVpbnQ4X3QgIG5leHRfaG9w OyAvKio8IFJ1bGUgbmV4dCBob3AuICovDQo+ID4gKyNpZmRlZiBSVEVfTElCUlRFX0xQTV9BU05V TQ0KPiA+ICsgICAgICAgdWludDMyX3QgYXNfbnVtOw0KPiA+ICsjZW5kaWYNCj4gPiArICAgICAg IHVpbnQxNl90ICBuZXh0X2hvcDsgLyoqPCBSdWxlIG5leHQgaG9wLiAqLw0KPiA+ICsgICAgICAg dWludDhfdCBmd2RfY2xhc3M7DQo+ID4gIH07DQo+ID4NCj4gPiAgLyoqIEBpbnRlcm5hbCBDb250 YWlucyBtZXRhZGF0YSBhYm91dCB0aGUgcnVsZXMgdGFibGUuICovDQo+ID4gQEAgLTE0OCw5ICsx NDksOSBAQCBzdHJ1Y3QgcnRlX2xwbSB7DQo+ID4gICAgICAgICBzdHJ1Y3QgcnRlX2xwbV9ydWxl X2luZm8gcnVsZV9pbmZvW1JURV9MUE1fTUFYX0RFUFRIXTsgLyoqPCBSdWxlDQo+ID4gaW5mbyB0 YWJsZS4gKi8NCj4gPg0KPiA+ICAgICAgICAgLyogTFBNIFRhYmxlcy4gKi8NCj4gPiAtICAgICAg IHN0cnVjdCBydGVfbHBtX3RibDI0X2VudHJ5IHRibDI0W1JURV9MUE1fVEJMMjRfTlVNX0VOVFJJ RVNdIFwNCj4gPiArICAgICAgIHN0cnVjdCBydGVfbHBtX3RibF9lbnRyeSB0YmwyNFtSVEVfTFBN X1RCTDI0X05VTV9FTlRSSUVTXSBcDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgX19ydGVf Y2FjaGVfYWxpZ25lZDsgLyoqPCBMUE0gdGJsMjQgdGFibGUuICovDQo+ID4gLSAgICAgICBzdHJ1 Y3QgcnRlX2xwbV90Ymw4X2VudHJ5IHRibDhbUlRFX0xQTV9UQkw4X05VTV9FTlRSSUVTXSBcDQo+ ID4gKyAgICAgICBzdHJ1Y3QgcnRlX2xwbV90YmxfZW50cnkgdGJsOFtSVEVfTFBNX1RCTDhfTlVN X0VOVFJJRVNdIFwNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICBfX3J0ZV9jYWNoZV9hbGln bmVkOyAvKio8IExQTSB0Ymw4IHRhYmxlLiAqLw0KPiA+ICAgICAgICAgc3RydWN0IHJ0ZV9scG1f cnVsZSBydWxlc190YmxbMF0gXA0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIF9fcnRlX2Nh Y2hlX2FsaWduZWQ7IC8qKjwgTFBNIHJ1bGVzLiAqLw0KPiA+IEBAIC0yMTksNyArMjIwLDcgQEAg cnRlX2xwbV9mcmVlKHN0cnVjdCBydGVfbHBtICpscG0pOw0KPiA+ICAgKiAgIDAgb24gc3VjY2Vz cywgbmVnYXRpdmUgdmFsdWUgb3RoZXJ3aXNlDQo+ID4gICAqLw0KPiA+ICBpbnQNCj4gPiAtcnRl X2xwbV9hZGQoc3RydWN0IHJ0ZV9scG0gKmxwbSwgdWludDMyX3QgaXAsIHVpbnQ4X3QgZGVwdGgs IHVpbnQ4X3QNCj4gPiBuZXh0X2hvcCk7DQo+ID4gK3J0ZV9scG1fYWRkKHN0cnVjdCBydGVfbHBt ICpscG0sIHVpbnQzMl90IGlwLCB1aW50OF90IGRlcHRoLCBzdHJ1Y3QNCj4gPiBydGVfbHBtX3Jl cyAqcmVzKTsNCj4gPg0KPiA+ICAvKioNCj4gPiAgICogQ2hlY2sgaWYgYSBydWxlIGlzIHByZXNl bnQgaW4gdGhlIExQTSB0YWJsZSwNCj4gPiBAQCAtMjM4LDcgKzIzOSw3IEBAIHJ0ZV9scG1fYWRk KHN0cnVjdCBydGVfbHBtICpscG0sIHVpbnQzMl90IGlwLA0KPiB1aW50OF90DQo+ID4gZGVwdGgs IHVpbnQ4X3QgbmV4dF9ob3ApOw0KPiA+ICAgKi8NCj4gPiAgaW50DQo+ID4gIHJ0ZV9scG1faXNf cnVsZV9wcmVzZW50KHN0cnVjdCBydGVfbHBtICpscG0sIHVpbnQzMl90IGlwLCB1aW50OF90IGRl cHRoLA0KPiA+IC11aW50OF90ICpuZXh0X2hvcCk7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgc3RydWN0IHJ0ZV9scG1fcmVzICpyZXMpOw0KPiA+DQo+ID4gIC8qKg0KPiA+ICAgKiBEZWxl dGUgYSBydWxlIGZyb20gdGhlIExQTSB0YWJsZS4NCj4gPiBAQCAtMjc3LDI5ICsyNzgsNDMgQEAg cnRlX2xwbV9kZWxldGVfYWxsKHN0cnVjdCBydGVfbHBtICpscG0pOw0KPiA+ICAgKiAgIC1FSU5W QUwgZm9yIGluY29ycmVjdCBhcmd1bWVudHMsIC1FTk9FTlQgb24gbG9va3VwIG1pc3MsIDAgb24g bG9va3VwDQo+ID4gaGl0DQo+ID4gICAqLw0KPiA+ICBzdGF0aWMgaW5saW5lIGludA0KPiA+IC1y dGVfbHBtX2xvb2t1cChzdHJ1Y3QgcnRlX2xwbSAqbHBtLCB1aW50MzJfdCBpcCwgdWludDhfdCAq bmV4dF9ob3ApDQo+ID4gK3J0ZV9scG1fbG9va3VwKHN0cnVjdCBydGVfbHBtICpscG0sIHVpbnQz Ml90IGlwLCBzdHJ1Y3QgcnRlX2xwbV9yZXMgKnJlcykNCj4gPiAgew0KPiA+ICAgICAgICAgdW5z aWduZWQgdGJsMjRfaW5kZXggPSAoaXAgPj4gOCk7DQo+ID4gLSAgICAgICB1aW50MTZfdCB0Ymxf ZW50cnk7DQo+ID4gLQ0KPiA+ICsjaWZkZWYgUlRFX0xJQlJURV9MUE1fQVNOVU0NCj4gPiArICAg ICAgIHVpbnQ2NF90IHRibF9lbnRyeTsNCj4gPiArI2Vsc2UNCj4gPiArICAgICAgIHVpbnQzMl90 IHRibF9lbnRyeTsNCj4gPiArI2VuZGlmDQo+ID4gICAgICAgICAvKiBERUJVRzogQ2hlY2sgdXNl ciBpbnB1dCBhcmd1bWVudHMuICovDQo+ID4gLSAgICAgICBSVEVfTFBNX1JFVFVSTl9JRl9UUlVF KCgobHBtID09IE5VTEwpIHx8IChuZXh0X2hvcCA9PSBOVUxMKSksDQo+ID4gLUVJTlZBTCk7DQo+ ID4gKyAgICAgICBSVEVfTFBNX1JFVFVSTl9JRl9UUlVFKCgobHBtID09IE5VTEwpIHx8IChyZXMg PT0gTlVMTCkpLCAtDQo+IEVJTlZBTCk7DQo+ID4NCj4gPiAgICAgICAgIC8qIENvcHkgdGJsMjQg ZW50cnkgKi8NCj4gPiAtICAgICAgIHRibF9lbnRyeSA9ICooY29uc3QgdWludDE2X3QgKikmbHBt LT50YmwyNFt0YmwyNF9pbmRleF07DQo+ID4gLQ0KPiA+ICsjaWZkZWYgUlRFX0xJQlJURV9MUE1f QVNOVU0NCj4gPiArICAgICAgIHRibF9lbnRyeSA9ICooY29uc3QgdWludDY0X3QgKikmbHBtLT50 YmwyNFt0YmwyNF9pbmRleF07DQo+ID4gKyNlbHNlDQo+ID4gKyAgICAgICB0YmxfZW50cnkgPSAq KGNvbnN0IHVpbnQzMl90ICopJmxwbS0+dGJsMjRbdGJsMjRfaW5kZXhdOw0KPiA+ICsjZW5kaWYN Cj4gPiAgICAgICAgIC8qIENvcHkgdGJsOCBlbnRyeSAob25seSBpZiBuZWVkZWQpICovDQo+ID4g ICAgICAgICBpZiAodW5saWtlbHkoKHRibF9lbnRyeSAmIFJURV9MUE1fVkFMSURfRVhUX0VOVFJZ X0JJVE1BU0spID09DQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgUlRFX0xQTV9WQUxJRF9F WFRfRU5UUllfQklUTUFTSykpIHsNCj4gPg0KPiA+ICAgICAgICAgICAgICAgICB1bnNpZ25lZCB0 Ymw4X2luZGV4ID0gKHVpbnQ4X3QpaXAgKw0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKCh1aW50OF90KXRibF9lbnRyeSAqDQo+ID4gUlRFX0xQTV9UQkw4X0dST1VQX05VTV9F TlRSSUVTKTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKihzdHJ1Y3Qg cnRlX2xwbV90YmxfZW50cnkNCj4gPiAqKSZ0YmxfZW50cnkpLnRibDhfZ2luZGV4ICogUlRFX0xQ TV9UQkw4X0dST1VQX05VTV9FTlRSSUVTKTsNCj4gPg0KPiA+IC0gICAgICAgICAgICAgICB0Ymxf ZW50cnkgPSAqKGNvbnN0IHVpbnQxNl90ICopJmxwbS0+dGJsOFt0Ymw4X2luZGV4XTsNCj4gPiAr I2lmZGVmIFJURV9MSUJSVEVfTFBNX0FTTlVNDQo+ID4gKyAgICAgICAgICAgICAgIHRibF9lbnRy eSA9ICooY29uc3QgdWludDY0X3QgKikmbHBtLT50Ymw4W3RibDhfaW5kZXhdOw0KPiA+ICsjZWxz ZQ0KPiA+ICsgICAgICAgICAgICAgICB0YmxfZW50cnkgPSAqKGNvbnN0IHVpbnQzMl90ICopJmxw bS0+dGJsOFt0Ymw4X2luZGV4XTsNCj4gPiArI2VuZGlmDQo+ID4gICAgICAgICB9DQo+ID4gLQ0K PiA+IC0gICAgICAgKm5leHRfaG9wID0gKHVpbnQ4X3QpdGJsX2VudHJ5Ow0KPiA+ICsgICAgICAg cmVzLT5uZXh0X2hvcCAgPSAoKHN0cnVjdCBydGVfbHBtX3RibF9lbnRyeSAqKSZ0YmxfZW50cnkp LT5uZXh0X2hvcDsNCj4gPiArICAgICAgIHJlcy0+ZndkX2NsYXNzID0gKChzdHJ1Y3QgcnRlX2xw bV90YmxfZW50cnkNCj4gPiAqKSZ0YmxfZW50cnkpLT5md2RfY2xhc3M7DQo+ID4gKyNpZmRlZiBS VEVfTElCUlRFX0xQTV9BU05VTQ0KPiA+ICsgICAgICAgcmVzLT5hc19udW0gICAgICAgPSAoKHN0 cnVjdCBydGVfbHBtX3RibF9lbnRyeQ0KPiA+ICopJnRibF9lbnRyeSktPmFzX251bTsNCj4gPiAr I2VuZGlmDQo+ID4gICAgICAgICByZXR1cm4gKHRibF9lbnRyeSAmIFJURV9MUE1fTE9PS1VQX1NV Q0NFU1MpID8gMCA6IC1FTk9FTlQ7DQo+ID4gKw0KPiA+ICB9DQo+ID4NCj4gPiAgLyoqDQo+ID4g QEAgLTMyMiwxOSArMzM3LDI1IEBAIHJ0ZV9scG1fbG9va3VwKHN0cnVjdCBydGVfbHBtICpscG0s IHVpbnQzMl90IGlwLA0KPiA+IHVpbnQ4X3QgKm5leHRfaG9wKQ0KPiA+ICAgKiAgQHJldHVybg0K PiA+ICAgKiAgIC1FSU5WQUwgZm9yIGluY29ycmVjdCBhcmd1bWVudHMsIG90aGVyd2lzZSAwDQo+ ID4gICAqLw0KPiA+IC0jZGVmaW5lIHJ0ZV9scG1fbG9va3VwX2J1bGsobHBtLCBpcHMsIG5leHRf aG9wcywgbikgXA0KPiA+IC0gICAgICAgICAgICAgICBydGVfbHBtX2xvb2t1cF9idWxrX2Z1bmMo bHBtLCBpcHMsIG5leHRfaG9wcywgbikNCj4gPiArI2RlZmluZSBydGVfbHBtX2xvb2t1cF9idWxr KGxwbSwgaXBzLCByZXNfdGJsLCBuKSBcDQo+ID4gKyAgICAgICAgICAgICAgIHJ0ZV9scG1fbG9v a3VwX2J1bGtfZnVuYyhscG0sIGlwcywgcmVzX3RibCwgbikNCj4gPg0KPiA+ICBzdGF0aWMgaW5s aW5lIGludA0KPiA+IC1ydGVfbHBtX2xvb2t1cF9idWxrX2Z1bmMoY29uc3Qgc3RydWN0IHJ0ZV9s cG0gKmxwbSwgY29uc3QgdWludDMyX3QgKiBpcHMsDQo+ID4gLSAgICAgICAgICAgICAgIHVpbnQx Nl90ICogbmV4dF9ob3BzLCBjb25zdCB1bnNpZ25lZCBuKQ0KPiA+ICtydGVfbHBtX2xvb2t1cF9i dWxrX2Z1bmMoY29uc3Qgc3RydWN0IHJ0ZV9scG0gKmxwbSwgY29uc3QgdWludDMyX3QgKmlwcywN Cj4gPiArICAgICAgICAgICAgICAgc3RydWN0IHJ0ZV9scG1fcmVzICpyZXNfdGJsLCBjb25zdCB1 bnNpZ25lZCBuKQ0KPiA+ICB7DQo+ID4gICAgICAgICB1bnNpZ25lZCBpOw0KPiA+ICsgICAgICAg aW50IHJldCA9IDA7DQo+ID4gKyNpZmRlZiBSVEVfTElCUlRFX0xQTV9BU05VTQ0KPiA+ICsgICAg ICAgdWludDY0X3QgdGJsX2VudHJ5Ow0KPiA+ICsjZWxzZQ0KPiA+ICsgICAgICAgdWludDMyX3Qg dGJsX2VudHJ5Ow0KPiA+ICsjZW5kaWYNCj4gPiAgICAgICAgIHVuc2lnbmVkIHRibDI0X2luZGV4 ZXNbbl07DQo+ID4NCj4gPiAgICAgICAgIC8qIERFQlVHOiBDaGVjayB1c2VyIGlucHV0IGFyZ3Vt ZW50cy4gKi8NCj4gPiAgICAgICAgIFJURV9MUE1fUkVUVVJOX0lGX1RSVUUoKChscG0gPT0gTlVM TCkgfHwgKGlwcyA9PSBOVUxMKSB8fA0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgIChuZXh0 X2hvcHMgPT0gTlVMTCkpLCAtRUlOVkFMKTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAo cmVzX3RibCA9PSBOVUxMKSksIC1FSU5WQUwpOw0KPiA+DQo+ID4gICAgICAgICBmb3IgKGkgPSAw OyBpIDwgbjsgaSsrKSB7DQo+ID4gICAgICAgICAgICAgICAgIHRibDI0X2luZGV4ZXNbaV0gPSBp cHNbaV0gPj4gODsNCj4gPiBAQCAtMzQyLDIwICszNjMsMzIgQEAgcnRlX2xwbV9sb29rdXBfYnVs a19mdW5jKGNvbnN0IHN0cnVjdCBydGVfbHBtDQo+ICpscG0sDQo+ID4gY29uc3QgdWludDMyX3Qg KiBpcHMsDQo+ID4NCj4gPiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsNCj4gPiAg ICAgICAgICAgICAgICAgLyogU2ltcGx5IGNvcHkgdGJsMjQgZW50cnkgdG8gb3V0cHV0ICovDQo+ ID4gLSAgICAgICAgICAgICAgIG5leHRfaG9wc1tpXSA9ICooY29uc3QgdWludDE2X3QNCj4gPiAq KSZscG0tPnRibDI0W3RibDI0X2luZGV4ZXNbaV1dOw0KPiA+IC0NCj4gPiArI2lmZGVmIFJURV9M SUJSVEVfTFBNX0FTTlVNDQo+ID4gKyAgICAgICAgICAgICAgIHRibF9lbnRyeSA9ICooY29uc3Qg dWludDY0X3QNCj4gPiAqKSZscG0tPnRibDI0W3RibDI0X2luZGV4ZXNbaV1dOw0KPiA+ICsjZWxz ZQ0KPiA+ICsgICAgICAgICAgICAgICB0YmxfZW50cnkgPSAqKGNvbnN0IHVpbnQzMl90DQo+ID4g KikmbHBtLT50YmwyNFt0YmwyNF9pbmRleGVzW2ldXTsNCj4gPiArI2VuZGlmDQo+ID4gICAgICAg ICAgICAgICAgIC8qIE92ZXJ3cml0ZSBvdXRwdXQgd2l0aCB0Ymw4IGVudHJ5IGlmIG5lZWRlZCAq Lw0KPiA+IC0gICAgICAgICAgICAgICBpZiAodW5saWtlbHkoKG5leHRfaG9wc1tpXSAmDQo+ID4g UlRFX0xQTV9WQUxJRF9FWFRfRU5UUllfQklUTUFTSykgPT0NCj4gPiAtICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFJURV9MUE1fVkFMSURfRVhUX0VOVFJZX0JJVE1BU0spKSB7DQo+ID4g KyAgICAgICAgICAgICAgIGlmICh1bmxpa2VseSgodGJsX2VudHJ5ICYgUlRFX0xQTV9WQUxJRF9F WFRfRU5UUllfQklUTUFTSykNCj4gPiA9PQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIFJU RV9MUE1fVkFMSURfRVhUX0VOVFJZX0JJVE1BU0spKSB7DQo+ID4NCj4gPiAgICAgICAgICAgICAg ICAgICAgICAgICB1bnNpZ25lZCB0Ymw4X2luZGV4ID0gKHVpbnQ4X3QpaXBzW2ldICsNCj4gPiAt ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KW5leHRfaG9w c1tpXSAqDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSVEVf TFBNX1RCTDhfR1JPVVBfTlVNX0VOVFJJRVMpOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKCgqKHN0cnVjdCBydGVfbHBtX3RibF9lbnRyeQ0KPiA+ICopJnRibF9lbnRyeSku dGJsOF9naW5kZXggKiBSVEVfTFBNX1RCTDhfR1JPVVBfTlVNX0VOVFJJRVMpOw0KPiA+DQo+ID4g LSAgICAgICAgICAgICAgICAgICAgICAgbmV4dF9ob3BzW2ldID0gKihjb25zdCB1aW50MTZfdA0K PiA+ICopJmxwbS0+dGJsOFt0Ymw4X2luZGV4XTsNCj4gPiArI2lmZGVmIFJURV9MSUJSVEVfTFBN X0FTTlVNDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgdGJsX2VudHJ5ID0gKihjb25zdCB1 aW50NjRfdA0KPiA+ICopJmxwbS0+dGJsOFt0Ymw4X2luZGV4XTsNCj4gPiArI2Vsc2UNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICB0YmxfZW50cnkgPSAqKGNvbnN0IHVpbnQzMl90DQo+ID4g KikmbHBtLT50Ymw4W3RibDhfaW5kZXhdOw0KPiA+ICsjZW5kaWYNCj4gPiAgICAgICAgICAgICAg ICAgfQ0KPiA+ICsgICAgICAgICAgICAgICByZXNfdGJsW2ldLm5leHRfaG9wICAgICA9ICgoc3Ry dWN0IHJ0ZV9scG1fdGJsX2VudHJ5DQo+ID4gKikmdGJsX2VudHJ5KS0+bmV4dF9ob3A7DQo+ID4g KyAgICAgICAgICAgICAgIHJlc190YmxbaV0uZndkX2NsYXNzICAgID0gKChzdHJ1Y3QgcnRlX2xw bV90YmxfZW50cnkNCj4gPiAqKSZ0YmxfZW50cnkpLT5uZXh0X2hvcDsNCj4gPiArI2lmZGVmIFJU RV9MSUJSVEVfTFBNX0FTTlVNDQo+ID4gKyAgICAgICAgICAgICAgIHJlc190YmxbaV0uYXNfbnVt ICAgICAgID0gKChzdHJ1Y3QgcnRlX2xwbV90YmxfZW50cnkNCj4gPiAqKSZ0YmxfZW50cnkpLT5h c19udW07DQo+ID4gKyNlbmRpZg0KPiA+ICsgICAgICAgICAgICAgICByZXQgfD0gMSA8PCBpOw0K PiA+ICAgICAgICAgfQ0KPiA+IC0gICAgICAgcmV0dXJuIDA7DQo+ID4gKyAgICAgICByZXR1cm4g cmV0Ow0KPiA+ICB9DQo+ID4NCj4gPiAgLyogTWFzayBmb3VyIHJlc3VsdHMuICovDQo+ID4gQEAg LTQ3Nyw0ICs1MTAsNCBAQCBydGVfbHBtX2xvb2t1cHg0KGNvbnN0IHN0cnVjdCBydGVfbHBtICps cG0sDQo+IF9fbTEyOGkgaXAsDQo+ID4gdWludDE2X3QgaG9wWzRdLA0KPiA+ICB9DQo+ID4gICNl bmRpZg0KPiA+DQo+ID4gLSNlbmRpZiAvKiBfUlRFX0xQTV9IXyAqLw0KPiA+ICsjZW5kaWYgLyog X1JURV9MUE1fRVhUX0hfICovDQo+ID4NCj4gPiAyMDE1LTEwLTI0IDk6MDkgR01UKzAzOjAwIE1h dHRoZXcgSGFsbCA8bWhhbGxAbWhjb21wdXRpbmcubmV0PjoNCj4gPg0KPiA+ID4gT24gMTAvMjMv MTUgOToyMCBBTSwgTWF0dGhldyBIYWxsIHdyb3RlOg0KPiA+ID4NCj4gPiA+PiBPbiBGcmksIE9j dCAyMywgMjAxNSBhdCAwMzo1MTo0OFBNICswMjAwLCBNaWNoYWwgSmFzdHJ6ZWJza2kgd3JvdGU6 DQo+ID4gPj4NCj4gPiA+Pj4gRnJvbTogTWljaGFsIEtvYnlsaW5za2kgIDxtaWNoYWx4LmtvYnls aW5za2lAaW50ZWwuY29tPg0KPiA+ID4+Pg0KPiA+ID4+PiBUaGUgY3VycmVudCBEUERLIGltcGxl bWVudGF0aW9uIGZvciBMUE0gZm9yIElQdjQgYW5kIElQdjYgbGltaXRzIHRoZQ0KPiA+ID4+PiBu dW1iZXIgb2YgbmV4dCBob3BzIHRvIDI1NiwgYXMgdGhlIG5leHQgaG9wIElEIGlzIGFuIDgtYml0 IGxvbmcgZmllbGQuDQo+ID4gPj4+IFByb3Bvc2VkIGV4dGVuc2lvbiBpbmNyZWFzZSBudW1iZXIg b2YgbmV4dCBob3BzIGZvciBJUHY0IHRvIDJeMjQgYW5kDQo+ID4gPj4+IGFsc28gYWxsb3dzIDMy LWJpdHMgcmVhZC93cml0ZSBvcGVyYXRpb25zLg0KPiA+ID4+Pg0KPiA+ID4+PiBUaGlzIHBhdGNo c2V0IHJlcXVpcmVzIGFkZGl0aW9uYWwgY2hhbmdlIHRvIHJ0ZV90YWJsZSBsaWJyYXJ5IHRvIG1l ZXQNCj4gPiA+Pj4gQUJJIGNvbXBhdGliaWxpdHkgcmVxdWlyZW1lbnRzLiBBIHYyIHdpbGwgYmUg c2VudCBuZXh0IHdlZWsuDQo+ID4gPj4+DQo+ID4gPj4NCj4gPiA+PiBJIGFsc28gaGF2ZSBhIHBh dGNoc2V0IGZvciB0aGlzLg0KPiA+ID4+DQo+ID4gPj4gSSB3aWxsIHNlbmQgaXQgb3V0IGFzIHdl bGwgc28gd2UgY291bGQgY29tcGFyZS4NCj4gPiA+Pg0KPiA+ID4+IE1hdHRoZXcuDQo+ID4gPj4N Cj4gPiA+DQo+ID4gPiBTb3JyeSBhYm91dCB0aGUgZGVsYXk7IEkgb25seSB3b3JrIG9uIERQREsg aW4gcGVyc29uYWwgdGltZSBhbmQgbm90IGFzDQo+ID4gPiBwYXJ0IG9mIGEgam9iLiBNeSBwYXRj aHNldCBpcyBhdHRhY2hlZCB0byB0aGlzIGVtYWlsLg0KPiA+ID4NCj4gPiA+IE9uZSBwb3NzaWJs ZSBhZHZhbnRhZ2Ugd2l0aCBteSBwYXRjaHNldCwgY29tcGFyZWQgdG8gb3RoZXJzLCBpcyB0aGF0 IHRoZQ0KPiA+ID4gc3BhY2UgcHJvYmxlbSBpcyBmaXhlZCBpbiBib3RoIElQVjQgYW5kIGluIElQ VjYsIHRvIHByZXZlbnQgYXN5bW1ldHJ5DQo+ID4gPiBiZXR3ZWVuIHRoZXNlIHR3byBzdGFuZGFy ZHMsIHdoaWNoIGlzIHNvbWV0aGluZyBJIHRyeSB0byBhdm9pZCBhcyBtdWNoDQo+IGFzDQo+ID4g PiBodW1hbmx5IHBvc3NpYmxlLg0KPiA+ID4NCj4gPiA+IFRoaXMgaXMgYmVjYXVzZSBteSBhcHBs aWNhdGlvbiBjb2RlIGlzIGdyZWVuLWZpZWxkLCBzbyBJIGFic29sdXRlbHkgZG9uJ3QNCj4gPiA+ IHdhbnQgdG8gcHV0IGFueSB1Z2x5IGhhY2tzIG9yIGluY29tcGF0aWJpbGl0aWVzIGluIHRoaXMg Y29kZSBpZiBJIGNhbg0KPiA+ID4gcG9zc2libHkgYXZvaWQgaXQuDQo+ID4gPg0KPiA+ID4gT3Ro ZXJ3aXNlLCBJIGFtIG5vdCBuZWNlc3NhcmlseSBhcyBleHBlcnQgYWJvdXQgcnRlX2xwbSBhcyBz b21lIG9mIHRoZQ0KPiA+ID4gZnVsbC10aW1lIGd1eXMsIGJ1dCBJIHRoaW5rIHdpdGggZm91ciBv ciBmaXZlIG9mIHVzIGluIHRoZSB0aHJlYWQgaGFtbWVyaW5nDQo+ID4gPiBvdXQgcGF0Y2hlcyB3 ZSB3aWxsIGJlIGFibGUgdG8gY3JlYXRlIHNvbWV0aGluZyBhbWF6aW5nIHRvZ2V0aGVyIGFuZCBJ DQo+IGFtDQo+ID4gPiB2ZXJ5IHZlcnkgdmVyeSB2ZXJ5IHZlcnkgaGFwcHkgYWJvdXQgdGhpcy4N Cj4gPiA+DQo+ID4gPiBNYXR0aGV3Lg0KPiA+ID4NCj4gDQoNCkhpIFZsYWRpbWlyLA0KVGhhbmtz IGZvciBzaGFyaW5nIFlvdXIgaW1wbGVtZW50YXRpb24uDQpDb3VsZCBZb3UgcGxlYXNlIGNsYXJp Znkgd2hhdCBhc19udW0gYW5kIGZ3ZF9jbGFzcyBmaWVsZHMgcmVwcmVzZW50Pw0KVGhlIHNlY29u ZCBpc3N1ZSBJIGhhdmUgaXMgdGhhdCBZb3VyIHBhdGNoIGRvZXNu4oCZdCB3YW50IHRvIGFwcGx5 IG9uIHRvcCBvZg0KY3VycmVudCBoZWFkLiBDb3VsZCBZb3UgY2hlY2sgdGhpcyBwbGVhc2U/DQoN CkJlc3QgcmVnYXJkcw0KTWljaGFsDQo=