From owner-svn-src-head@freebsd.org Thu May 3 19:37:31 2018 Return-Path: Delivered-To: svn-src-head@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 8923EFB783D; Thu, 3 May 2018 19:37:31 +0000 (UTC) (envelope-from ohartmann@walstatt.org) Received: from mout.gmx.net (mout.gmx.net [212.227.17.20]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "mout.gmx.net", Issuer "TeleSec ServerPass DE-2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id E23D66DDC0; Thu, 3 May 2018 19:37:30 +0000 (UTC) (envelope-from ohartmann@walstatt.org) Received: from thor.intern.walstatt.dynvpn.de ([77.14.33.35]) by mail.gmx.com (mrgmx103 [212.227.17.168]) with ESMTPSA (Nemesis) id 0Ltqmn-1eFaSO1fwz-011B1q; Thu, 03 May 2018 21:32:13 +0200 Date: Thu, 3 May 2018 21:31:39 +0200 From: "O. Hartmann" To: Stephen Hurd Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r333175 - in head/sys: kern net netinet netinet6 sys Message-ID: <20180503213206.7fba052c@thor.intern.walstatt.dynvpn.de> In-Reply-To: <201805021936.w42JaTlq039053@repo.freebsd.org> References: <201805021936.w42JaTlq039053@repo.freebsd.org> Organization: WALSTATT User-Agent: OutScare 3.1415926 X-Operating-System: ImNotAnOperatingSystem 3.141592527 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 X-Provags-ID: V03:K1:uvs0RfuGk0FZLYY3rJeqdpLa1GzehE1iC7yTxNUgGRa9cz7Yxxz 1zkRloA925AmatFg/lUuxqA2smLbfdAPgR80iJCvWK3StTPo+yYbUMQr+cpNV5qz+bcDKbV fCV9TlXIgAkEeBRx+Aujo2QQSTRHMb3adFZ+5RPzI6tyV90jHrHy9LI4PBbx3jv2pyYwCH8 MIa6wacpLZ4HP4LcxHI1A== X-UI-Out-Filterresults: notjunk:1;V01:K0:QIzzL5SJClE=:BA83T7xhvXwWcXDLqef41R b4Sw/BeJm5AXTI7b/IMCZNe0kf/ZcyA1Ev4e5Hb6xTjripqal2Ctf6aDDSSt2uKbgCS1HZLS8 8Yp26wELvnxS1tVSPpxNocD1b0lqYAZrYq0AwqDDzhQclo1omkpxdGhzqcYCaKZeZbX0thlJ5 KXW+VpebSfrkwtVQypRRE6Pqy3+0wl1aE13O7/dUNnZ5XVT4Ua5H1+Ed3taEmmO4a824u/IJ6 umiylkawPspsbK0AydtPuPfHE8XHz04yMljahqCrGG09tiREHSWi/UIx2KpbjHXxY16+JaqGR JGQPq57JjD3kBk1wE3wx1gPRvo1cbd8D7N73NN9cA88M1dyH6RbIWvfcUNq8p1gRlIjM8f4TC 7g5RxSGkIpm63h5k4ljY4ytxuPjHtUkS7rjpztjvZvpFbwn1mQJhgkpPLQiDtA8Gd4DBPVPmq MCzOBOpvIXw4huXG6TnYGpQATt6HHHv9B8vqANmzQg0IFaEBpTZQ8MFpH9owJLjvmv6XA3Zet fnqIwFsRvJM7kifpHrs0hAIKh3oKlfbLd+OPkzZUn1BgeA8hsHQFSJo92djZcmKjzv8Q2J8GT 0eo/7ByTAWJzrCCFr9oPhvZuMq/UGKYpHCvAU6c9WnLcFE9auhwKits5/EuNm5F5xehMgV6Tq awhjCk0/Zl1cB85e9G8AH9mVrzSHqTyqEQcXiWqGmkBffUunpUeaULz9LlykOhvzBeH0BaNc2 fseVYLdVa/0vGcaB+/D39NIQqCPV/E/L6HfiEQLslbB6X1jOWsHTvF1wcd4FzEuQ5bPquZG+F z86SLcD X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 May 2018 19:37:32 -0000 LS0tLS1CRUdJTiBQR1AgU0lHTkVEIE1FU1NBR0UtLS0tLQ0KSGFzaDogU0hBNTEyDQoNCkFtIFdl ZCwgMiBNYXkgMjAxOCAxOTozNjoyOSArMDAwMCAoVVRDKQ0KU3RlcGhlbiBIdXJkIDxzaHVyZEBG cmVlQlNELm9yZz4gc2NocmllYjoNCg0KPiBBdXRob3I6IHNodXJkDQo+IERhdGU6IFdlZCBNYXkg IDIgMTk6MzY6MjkgMjAxOA0KPiBOZXcgUmV2aXNpb246IDMzMzE3NQ0KPiBVUkw6IGh0dHBzOi8v c3Zud2ViLmZyZWVic2Qub3JnL2NoYW5nZXNldC9iYXNlLzMzMzE3NQ0KPiANCj4gTG9nOg0KPiAg IFNlcGFyYXRlIGxpc3QgbWFuaXB1bGF0aW9uIGxvY2tpbmcgZnJvbSBzdGF0ZSBjaGFuZ2UgaW4g bXVsdGljYXN0DQo+ICAgDQo+ICAgTXVsdGljYXN0IGluY29ycmVjdGx5IGNhbGxzIGluIHRvIGRy aXZlcnMgd2l0aCBhIG11dGV4IGhlbGQgY2F1c2luZyBkcml2ZXJzDQo+ICAgdG8gaGF2ZSB0byBn byB0aHJvdWdoIGFsbCBtYW5uZXIgb2YgY29udG9ydGlvbnMgdG8gdXNlIGEgbm9uIHNsZWVwYWJs ZSBsb2NrLg0KPiAgIFNlcmlhbGl6ZSBtdWx0aWNhc3QgdXBkYXRlcyBpbnN0ZWFkLg0KPiAgIA0K PiAgIFN1Ym1pdHRlZCBieToJbW1hY3kgPG1tYWN5QG1hdHRtYWN5LmlvPg0KPiAgIFJldmlld2Vk IGJ5OglzaHVyZCwgc2JydW5vDQo+ICAgU3BvbnNvcmVkIGJ5OglMaW1lbGlnaHQgTmV0d29ya3MN Cj4gICBEaWZmZXJlbnRpYWwgUmV2aXNpb246CWh0dHBzOi8vcmV2aWV3cy5mcmVlYnNkLm9yZy9E MTQ5NjkNCj4gDQo+IE1vZGlmaWVkOg0KPiAgIGhlYWQvc3lzL2tlcm4vc3Vicl9ndGFza3F1ZXVl LmMNCj4gICBoZWFkL3N5cy9rZXJuL3N1YnJfd2l0bmVzcy5jDQo+ICAgaGVhZC9zeXMvbmV0L2lm LmMNCj4gICBoZWFkL3N5cy9uZXRpbmV0L2lnbXAuYw0KPiAgIGhlYWQvc3lzL25ldGluZXQvaWdt cF92YXIuaA0KPiAgIGhlYWQvc3lzL25ldGluZXQvaW4uYw0KPiAgIGhlYWQvc3lzL25ldGluZXQv aW5fbWNhc3QuYw0KPiAgIGhlYWQvc3lzL25ldGluZXQvaW5fcGNiLmMNCj4gICBoZWFkL3N5cy9u ZXRpbmV0L2luX3Zhci5oDQo+ICAgaGVhZC9zeXMvbmV0aW5ldC9pcF9jYXJwLmMNCj4gICBoZWFk L3N5cy9uZXRpbmV0Ni9pbjYuYw0KPiAgIGhlYWQvc3lzL25ldGluZXQ2L2luNl9pZmF0dGFjaC5j DQo+ICAgaGVhZC9zeXMvbmV0aW5ldDYvaW42X21jYXN0LmMNCj4gICBoZWFkL3N5cy9uZXRpbmV0 Ni9pbjZfcGNiLmMNCj4gICBoZWFkL3N5cy9uZXRpbmV0Ni9pbjZfdmFyLmgNCj4gICBoZWFkL3N5 cy9uZXRpbmV0Ni9tbGQ2LmMNCj4gICBoZWFkL3N5cy9uZXRpbmV0Ni9tbGQ2X3Zhci5oDQo+ICAg aGVhZC9zeXMvc3lzL2d0YXNrcXVldWUuaA0KPiANCj4gTW9kaWZpZWQ6IGhlYWQvc3lzL2tlcm4v c3Vicl9ndGFza3F1ZXVlLmMNCj4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQo+IC0tLSBoZWFkL3N5 cy9rZXJuL3N1YnJfZ3Rhc2txdWV1ZS5jCVdlZCBNYXkgIDIgMTc6NDE6MDAgMjAxOAkocjMzMzE3 NCkNCj4gKysrIGhlYWQvc3lzL2tlcm4vc3Vicl9ndGFza3F1ZXVlLmMJV2VkIE1heSAgMiAxOToz NjoyOSAyMDE4CShyMzMzMTc1KQ0KPiBAQCAtNTMsNiArNTMsNyBAQCBzdGF0aWMgdm9pZAlndGFz a3F1ZXVlX3RocmVhZF9lbnF1ZXVlKHZvaWQgKik7DQo+ICBzdGF0aWMgdm9pZAlndGFza3F1ZXVl X3RocmVhZF9sb29wKHZvaWQgKmFyZyk7DQo+ICANCj4gIFRBU0tRR1JPVVBfREVGSU5FKHNvZnRp cnEsIG1wX25jcHVzLCAxKTsNCj4gK1RBU0tRR1JPVVBfREVGSU5FKGNvbmZpZywgMSwgMSk7DQo+ ICANCj4gIHN0cnVjdCBndGFza3F1ZXVlX2J1c3kgew0KPiAgCXN0cnVjdCBndGFzawkqdGJfcnVu bmluZzsNCj4gQEAgLTY2Miw3ICs2NjMsNyBAQCBTWVNJTklUKHRxZ19yZWNvcmRfc21wX3N0YXJ0 ZWQsIFNJX1NVQl9TTVAsIFNJX09SREVSX0YNCj4gIA0KPiAgdm9pZA0KPiAgdGFza3Fncm91cF9h dHRhY2goc3RydWN0IHRhc2txZ3JvdXAgKnFncm91cCwgc3RydWN0IGdyb3VwdGFzayAqZ3Rhc2ss DQo+IC0gICAgdm9pZCAqdW5pcSwgaW50IGlycSwgY2hhciAqbmFtZSkNCj4gKyAgICB2b2lkICp1 bmlxLCBpbnQgaXJxLCBjb25zdCBjaGFyICpuYW1lKQ0KPiAgew0KPiAgCWNwdXNldF90IG1hc2s7 DQo+ICAJaW50IHFpZCwgZXJyb3I7DQo+IEBAIC05NzYsNCArOTc3LDEzIEBAIHZvaWQNCj4gIHRh c2txZ3JvdXBfZGVzdHJveShzdHJ1Y3QgdGFza3Fncm91cCAqcWdyb3VwKQ0KPiAgew0KPiAgDQo+ ICt9DQo+ICsNCj4gK3ZvaWQNCj4gK3Rhc2txZ3JvdXBfY29uZmlnX2d0YXNrX2luaXQodm9pZCAq Y3R4LCBzdHJ1Y3QgZ3JvdXB0YXNrICpndGFzaywgZ3Rhc2tfZm5fdCAqZm4sDQo+ICsJY29uc3Qg Y2hhciAqbmFtZSkNCj4gK3sNCj4gKw0KPiArCUdST1VQVEFTS19JTklUKGd0YXNrLCAwLCBmbiwg Y3R4KTsNCj4gKwl0YXNrcWdyb3VwX2F0dGFjaChxZ3JvdXBfY29uZmlnLCBndGFzaywgZ3Rhc2ss IC0xLCBuYW1lKTsNCj4gIH0NCj4gDQo+IE1vZGlmaWVkOiBoZWFkL3N5cy9rZXJuL3N1YnJfd2l0 bmVzcy5jDQo+ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KPiAtLS0gaGVhZC9zeXMva2Vybi9zdWJy X3dpdG5lc3MuYwlXZWQgTWF5ICAyIDE3OjQxOjAwIDIwMTgJKHIzMzMxNzQpDQo+ICsrKyBoZWFk L3N5cy9rZXJuL3N1YnJfd2l0bmVzcy5jCVdlZCBNYXkgIDIgMTk6MzY6MjkgMjAxOAkocjMzMzE3 NSkNCj4gQEAgLTUzMiwxOCArNTMyLDIyIEBAIHN0YXRpYyBzdHJ1Y3Qgd2l0bmVzc19vcmRlcl9s aXN0X2VudHJ5IG9yZGVyX2xpc3RzW10gPQ0KPiAgCSAqIElQdjQgbXVsdGljYXN0Og0KPiAgCSAq IHByb3RvY29sIGxvY2tzIGJlZm9yZSBpbnRlcmZhY2UgbG9ja3MsIGFmdGVyIFVEUCBsb2Nrcy4N Cj4gIAkgKi8NCj4gKwl7ICJpbl9tdWx0aV9zeCIsICZsb2NrX2NsYXNzX3N4IH0sDQo+ICAJeyAi dWRwaW5wIiwgJmxvY2tfY2xhc3NfcncgfSwNCj4gLQl7ICJpbl9tdWx0aV9tdHgiLCAmbG9ja19j bGFzc19tdHhfc2xlZXAgfSwNCj4gKwl7ICJpbl9tdWx0aV9saXN0X210eCIsICZsb2NrX2NsYXNz X210eF9zbGVlcCB9LA0KPiAgCXsgImlnbXBfbXR4IiwgJmxvY2tfY2xhc3NfbXR4X3NsZWVwIH0s DQo+ICsJeyAiaWZuZXRfcnciLCAmbG9ja19jbGFzc19ydyB9LA0KPiAgCXsgImlmX2FkZHJfbG9j ayIsICZsb2NrX2NsYXNzX3J3IH0sDQo+ICAJeyBOVUxMLCBOVUxMIH0sDQo+ICAJLyoNCj4gIAkg KiBJUHY2IG11bHRpY2FzdDoNCj4gIAkgKiBwcm90b2NvbCBsb2NrcyBiZWZvcmUgaW50ZXJmYWNl IGxvY2tzLCBhZnRlciBVRFAgbG9ja3MuDQo+ICAJICovDQo+ICsJeyAiaW42X211bHRpX3N4Iiwg JmxvY2tfY2xhc3Nfc3ggfSwNCj4gIAl7ICJ1ZHBpbnAiLCAmbG9ja19jbGFzc19ydyB9LA0KPiAt CXsgImluNl9tdWx0aV9tdHgiLCAmbG9ja19jbGFzc19tdHhfc2xlZXAgfSwNCj4gKwl7ICJpbjZf bXVsdGlfbGlzdF9tdHgiLCAmbG9ja19jbGFzc19tdHhfc2xlZXAgfSwNCj4gIAl7ICJtbGRfbXR4 IiwgJmxvY2tfY2xhc3NfbXR4X3NsZWVwIH0sDQo+ICsJeyAiaWZuZXRfcnciLCAmbG9ja19jbGFz c19ydyB9LA0KPiAgCXsgImlmX2FkZHJfbG9jayIsICZsb2NrX2NsYXNzX3J3IH0sDQo+ICAJeyBO VUxMLCBOVUxMIH0sDQo+ICAJLyoNCj4gDQo+IE1vZGlmaWVkOiBoZWFkL3N5cy9uZXQvaWYuYw0K PiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0NCj4gLS0tIGhlYWQvc3lzL25ldC9pZi5jCVdlZCBNYXkg IDIgMTc6NDE6MDAgMjAxOAkocjMzMzE3NCkNCj4gKysrIGhlYWQvc3lzL25ldC9pZi5jCVdlZCBN YXkgIDIgMTk6MzY6MjkgMjAxOAkocjMzMzE3NSkNCj4gQEAgLTk4NSwxMSArOTg1LDEzIEBAIHN0 YXRpYyB2b2lkDQo+ICBpZl9wdXJnZW1hZGRycyhzdHJ1Y3QgaWZuZXQgKmlmcCkNCj4gIHsNCj4g IAlzdHJ1Y3QgaWZtdWx0aWFkZHIgKmlmbWE7DQo+IC0Jc3RydWN0IGlmbXVsdGlhZGRyICpuZXh0 Ow0KPiAgDQo+ICAJSUZfQUREUl9XTE9DSyhpZnApOw0KPiAtCVRBSUxRX0ZPUkVBQ0hfU0FGRShp Zm1hLCAmaWZwLT5pZl9tdWx0aWFkZHJzLCBpZm1hX2xpbmssIG5leHQpDQo+ICsJd2hpbGUgKCFU QUlMUV9FTVBUWSgmaWZwLT5pZl9tdWx0aWFkZHJzKSkgew0KPiArCQlpZm1hID0gVEFJTFFfRklS U1QoJmlmcC0+aWZfbXVsdGlhZGRycyk7DQo+ICsJCVRBSUxRX1JFTU9WRSgmaWZwLT5pZl9tdWx0 aWFkZHJzLCBpZm1hLCBpZm1hX2xpbmspOw0KPiAgCQlpZl9kZWxtdWx0aV9sb2NrZWQoaWZwLCBp Zm1hLCAxKTsNCj4gKwl9DQo+ICAJSUZfQUREUl9XVU5MT0NLKGlmcCk7DQo+ICB9DQo+ICANCj4g QEAgLTM0MjksNiArMzQzMSwxMiBAQCBpZl9hZGRtdWx0aShzdHJ1Y3QgaWZuZXQgKmlmcCwgc3Ry dWN0IHNvY2thZGRyICpzYSwNCj4gIAlzdHJ1Y3Qgc29ja2FkZHJfZGwgc2RsOw0KPiAgCWludCBl cnJvcjsNCj4gIA0KPiArI2lmZGVmIElORVQNCj4gKwlJTl9NVUxUSV9MSVNUX1VOTE9DS19BU1NF UlQoKTsNCj4gKyNlbmRpZg0KPiArI2lmZGVmIElORVQ2DQo+ICsJSU42X01VTFRJX0xJU1RfVU5M T0NLX0FTU0VSVCgpOw0KPiArI2VuZGlmDQo+ICAJLyoNCj4gIAkgKiBJZiB0aGUgYWRkcmVzcyBp cyBhbHJlYWR5IHByZXNlbnQsIHJldHVybiBhIG5ldyByZWZlcmVuY2UgdG8gaXQ7DQo+ICAJICog b3RoZXJ3aXNlLCBhbGxvY2F0ZSBzdG9yYWdlIGFuZCBzZXQgdXAgYSBuZXcgYWRkcmVzcy4NCj4g QEAgLTM2MTAsNiArMzYxOCw5IEBAIGlmX2RlbG11bHRpX2lmbWEoc3RydWN0IGlmbXVsdGlhZGRy ICppZm1hKQ0KPiAgCXN0cnVjdCBpZm5ldCAqaWZwOw0KPiAgCWludCBsYXN0cmVmOw0KPiAgDQo+ ICsjaWZkZWYgSU5FVA0KPiArCUlOX01VTFRJX0xJU1RfVU5MT0NLX0FTU0VSVCgpOw0KPiArI2Vu ZGlmDQo+ICAJaWZwID0gaWZtYS0+aWZtYV9pZnA7DQo+ICAjaWZkZWYgRElBR05PU1RJQw0KPiAg CWlmIChpZnAgPT0gTlVMTCkgew0KPiBAQCAtMzcxMSw4ICszNzIyLDcgQEAgaWZfZGVsbXVsdGlf bG9ja2VkKHN0cnVjdCBpZm5ldCAqaWZwLCBzdHJ1Y3QgaWZtdWx0aWFkDQo+ICAJCQlpZl9mcmVl bXVsdGkobGxfaWZtYSk7DQo+ICAJCX0NCj4gIAl9DQo+IC0NCj4gLQlpZiAoaWZwICE9IE5VTEwp DQo+ICsJaWYgKGlmcCAhPSBOVUxMICYmIGRldGFjaGluZyA9PSAwKQ0KPiAgCQlUQUlMUV9SRU1P VkUoJmlmcC0+aWZfbXVsdGlhZGRycywgaWZtYSwgaWZtYV9saW5rKTsNCj4gIA0KPiAgCWlmX2Zy ZWVtdWx0aShpZm1hKTsNCj4gDQo+IE1vZGlmaWVkOiBoZWFkL3N5cy9uZXRpbmV0L2lnbXAuYw0K PiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0NCj4gLS0tIGhlYWQvc3lzL25ldGluZXQvaWdtcC5jCVdl ZCBNYXkgIDIgMTc6NDE6MDAgMjAxOAkocjMzMzE3NCkNCj4gKysrIGhlYWQvc3lzL25ldGluZXQv aWdtcC5jCVdlZCBNYXkgIDIgMTk6MzY6MjkgMjAxOAkocjMzMzE3NSkNCj4gQEAgLTEzNiw3ICsx MzYsNyBAQCBzdGF0aWMgaW50CWlnbXBfdjNfZW5xdWV1ZV9ncm91cF9yZWNvcmQoc3RydWN0IG1i dWZxICoNCj4gIAkJICAgIHN0cnVjdCBpbl9tdWx0aSAqLCBjb25zdCBpbnQsIGNvbnN0IGludCwg Y29uc3QgaW50KTsNCj4gIHN0YXRpYyBpbnQJaWdtcF92M19lbnF1ZXVlX2ZpbHRlcl9jaGFuZ2Uo c3RydWN0IG1idWZxICosDQo+ICAJCSAgICBzdHJ1Y3QgaW5fbXVsdGkgKik7DQo+IC1zdGF0aWMg dm9pZAlpZ21wX3YzX3Byb2Nlc3NfZ3JvdXBfdGltZXJzKHN0cnVjdCBpZ21wX2lmc29mdGMgKiwN Cj4gK3N0YXRpYyB2b2lkCWlnbXBfdjNfcHJvY2Vzc19ncm91cF90aW1lcnMoc3RydWN0IGluX211 bHRpX2hlYWQgKiwNCj4gIAkJICAgIHN0cnVjdCBtYnVmcSAqLCBzdHJ1Y3QgbWJ1ZnEgKiwgc3Ry dWN0IGluX211bHRpICosDQo+ICAJCSAgICBjb25zdCBpbnQpOw0KPiAgc3RhdGljIGludAlpZ21w X3YzX21lcmdlX3N0YXRlX2NoYW5nZXMoc3RydWN0IGluX211bHRpICosDQo+IEBAIC0xNjIsMTIg KzE2MiwxMiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG5ldGlzcl9oYW5kbGVyIGlnbXBfbmggPSB7 DQo+ICAgKiB0aGVtc2VsdmVzIGFyZSBub3QgdmlydHVhbGl6ZWQuDQo+ICAgKg0KPiAgICogTG9j a2luZzoNCj4gLSAqICAqIFRoZSBwZXJtaXR0ZWQgbG9jayBvcmRlciBpczogSU5fTVVMVElfTE9D SywgSUdNUF9MT0NLLCBJRl9BRERSX0xPQ0suDQo+ICsgKiAgKiBUaGUgcGVybWl0dGVkIGxvY2sg b3JkZXIgaXM6IElOX01VTFRJX0xJU1RfTE9DSywgSUdNUF9MT0NLLCBJRl9BRERSX0xPQ0suDQo+ ICAgKiAgICBBbnkgbWF5IGJlIHRha2VuIGluZGVwZW5kZW50bHk7IGlmIGFueSBhcmUgaGVsZCBh dCB0aGUgc2FtZQ0KPiAgICogICAgdGltZSwgdGhlIGFib3ZlIGxvY2sgb3JkZXIgbXVzdCBiZSBm b2xsb3dlZC4NCj4gICAqICAqIEFsbCBvdXRwdXQgaXMgZGVsZWdhdGVkIHRvIHRoZSBuZXRpc3Iu DQo+ICAgKiAgICBOb3cgdGhhdCBHaWFudCBoYXMgYmVlbiBlbGltaW5hdGVkLCB0aGUgbmV0aXNy IG1heSBiZSBpbmxpbmVkLg0KPiAtICogICogSU5fTVVMVElfTE9DSyBjb3ZlcnMgaW5fbXVsdGku DQo+ICsgKiAgKiBJTl9NVUxUSV9MSVNUX0xPQ0sgY292ZXJzIGluX211bHRpLg0KPiAgICogICog SUdNUF9MT0NLIGNvdmVycyBpZ21wX2lmc29mdGMgYW5kIGFueSBnbG9iYWwgdmFyaWFibGVzIGlu IHRoaXMgZmlsZSwNCj4gICAqICAgIGluY2x1ZGluZyB0aGUgb3V0cHV0IHF1ZXVlLg0KPiAgICog ICogSUZfQUREUl9MT0NLIGNvdmVycyBpZl9tdWx0aWFkZHJzLCB3aGljaCBpcyB1c2VkIGZvciBh IHZhcmlldHkgb2YNCj4gQEAgLTQ0MSw3ICs0NDEsNyBAQCBzeXNjdGxfaWdtcF9pZmluZm8oU1lT Q1RMX0hBTkRMRVJfQVJHUykNCj4gIAlpZiAoZXJyb3IpDQo+ICAJCXJldHVybiAoZXJyb3IpOw0K PiAgDQo+IC0JSU5fTVVMVElfTE9DSygpOw0KPiArCUlOX01VTFRJX0xJU1RfTE9DSygpOw0KPiAg CUlHTVBfTE9DSygpOw0KPiAgDQo+ICAJaWYgKG5hbWVbMF0gPD0gMCB8fCBuYW1lWzBdID4gVl9p Zl9pbmRleCkgew0KPiBAQCAtNDc1LDcgKzQ3NSw3IEBAIHN5c2N0bF9pZ21wX2lmaW5mbyhTWVND VExfSEFORExFUl9BUkdTKQ0KPiAgDQo+ICBvdXRfbG9ja2VkOg0KPiAgCUlHTVBfVU5MT0NLKCk7 DQo+IC0JSU5fTVVMVElfVU5MT0NLKCk7DQo+ICsJSU5fTVVMVElfTElTVF9VTkxPQ0soKTsNCj4g IAlyZXR1cm4gKGVycm9yKTsNCj4gIH0NCj4gIA0KPiBAQCAtNTg2LDcgKzU4Niw2IEBAIGlnaV9h bGxvY19sb2NrZWQoLypjb25zdCovIHN0cnVjdCBpZm5ldCAqaWZwKQ0KPiAgCWlnaS0+aWdpX3Fp ID0gSUdNUF9RSV9JTklUOw0KPiAgCWlnaS0+aWdpX3FyaSA9IElHTVBfUVJJX0lOSVQ7DQo+ICAJ aWdpLT5pZ2lfdXJpID0gSUdNUF9VUklfSU5JVDsNCj4gLQlTTElTVF9JTklUKCZpZ2ktPmlnaV9y ZWxpbm1oZWFkKTsNCj4gIAltYnVmcV9pbml0KCZpZ2ktPmlnaV9ncSwgSUdNUF9NQVhfUkVTUE9O U0VfUEFDS0VUUyk7DQo+ICANCj4gIAlMSVNUX0lOU0VSVF9IRUFEKCZWX2lnaV9oZWFkLCBpZ2ks IGlnaV9saW5rKTsNCj4gQEAgLTYxMiwxMSArNjExLDEyIEBAIGlnbXBfaWZkZXRhY2goc3RydWN0 IGlmbmV0ICppZnApDQo+ICB7DQo+ICAJc3RydWN0IGlnbXBfaWZzb2Z0YwkqaWdpOw0KPiAgCXN0 cnVjdCBpZm11bHRpYWRkcgkqaWZtYTsNCj4gLQlzdHJ1Y3QgaW5fbXVsdGkJCSppbm0sICp0aW5t Ow0KPiAtDQo+ICsJc3RydWN0IGluX211bHRpCQkqaW5tOw0KPiArCXN0cnVjdCBpbl9tdWx0aV9o ZWFkIGlubV9mcmVlX3RtcDsNCj4gIAlDVFIzKEtUUl9JR01QVjMsICIlczogY2FsbGVkIGZvciBp ZnAgJXAoJXMpIiwgX19mdW5jX18sIGlmcCwNCj4gIAkgICAgaWZwLT5pZl94bmFtZSk7DQo+ICAN Cj4gKwlTTElTVF9JTklUKCZpbm1fZnJlZV90bXApOw0KPiAgCUlHTVBfTE9DSygpOw0KPiAgDQo+ ICAJaWdpID0gKChzdHJ1Y3QgaW5faWZpbmZvICopaWZwLT5pZl9hZmRhdGFbQUZfSU5FVF0pLT5p aV9pZ21wOw0KPiBAQCAtNjMxLDI0ICs2MzEsMTUgQEAgaWdtcF9pZmRldGFjaChzdHJ1Y3QgaWZu ZXQgKmlmcCkNCj4gIAkJCSAgICAoIiVzOiBpZm1hX3Byb3Rvc3BlYyBpcyBOVUxMIiwgX19mdW5j X18pKTsNCj4gICNlbmRpZg0KPiAgCQkJaW5tID0gKHN0cnVjdCBpbl9tdWx0aSAqKWlmbWEtPmlm bWFfcHJvdG9zcGVjOw0KPiAtCQkJaWYgKGlubS0+aW5tX3N0YXRlID09IElHTVBfTEVBVklOR19N RU1CRVIpIHsNCj4gLQkJCQlTTElTVF9JTlNFUlRfSEVBRCgmaWdpLT5pZ2lfcmVsaW5taGVhZCwN Cj4gLQkJCQkgICAgaW5tLCBpbm1fbnJlbGUpOw0KPiAtCQkJfQ0KPiArCQkJaWYgKGlubS0+aW5t X3N0YXRlID09IElHTVBfTEVBVklOR19NRU1CRVIpDQo+ICsJCQkJaW5tX3JlbGVfbG9ja2VkKCZp bm1fZnJlZV90bXAsIGlubSk7DQo+ICAJCQlpbm1fY2xlYXJfcmVjb3JkZWQoaW5tKTsNCj4gIAkJ fQ0KPiAgCQlJRl9BRERSX1JVTkxPQ0soaWZwKTsNCj4gLQkJLyoNCj4gLQkJICogRnJlZSB0aGUg aW5fbXVsdGkgcmVmZXJlbmNlKHMpIGZvciB0aGlzIElHTVAgbGlmZWN5Y2xlLg0KPiAtCQkgKi8N Cj4gLQkJU0xJU1RfRk9SRUFDSF9TQUZFKGlubSwgJmlnaS0+aWdpX3JlbGlubWhlYWQsIGlubV9u cmVsZSwNCj4gLQkJICAgIHRpbm0pIHsNCj4gLQkJCVNMSVNUX1JFTU9WRV9IRUFEKCZpZ2ktPmln aV9yZWxpbm1oZWFkLCBpbm1fbnJlbGUpOw0KPiAtCQkJaW5tX3JlbGVhc2VfbG9ja2VkKGlubSk7 DQo+IC0JCX0NCj4gKwkJaW5tX3JlbGVhc2VfbGlzdF9kZWZlcnJlZCgmaW5tX2ZyZWVfdG1wKTsN Cj4gIAl9DQo+IC0NCj4gIAlJR01QX1VOTE9DSygpOw0KPiArDQo+ICB9DQo+ICANCj4gIC8qDQo+ IEBAIC02ODQsMTEgKzY3NSw2IEBAIGlnaV9kZWxldGVfbG9ja2VkKGNvbnN0IHN0cnVjdCBpZm5l dCAqaWZwKQ0KPiAgCQkJbWJ1ZnFfZHJhaW4oJmlnaS0+aWdpX2dxKTsNCj4gIA0KPiAgCQkJTElT VF9SRU1PVkUoaWdpLCBpZ2lfbGluayk7DQo+IC0NCj4gLQkJCUtBU1NFUlQoU0xJU1RfRU1QVFko JmlnaS0+aWdpX3JlbGlubWhlYWQpLA0KPiAtCQkJICAgICgiJXM6IHRoZXJlIGFyZSBkYW5nbGlu ZyBpbl9tdWx0aSByZWZlcmVuY2VzIiwNCj4gLQkJCSAgICBfX2Z1bmNfXykpOw0KPiAtDQo+ICAJ CQlmcmVlKGlnaSwgTV9JR01QKTsNCj4gIAkJCXJldHVybjsNCj4gIAkJfQ0KPiBAQCAtNzIyLDcg KzcwOCw3IEBAIGlnbXBfaW5wdXRfdjFfcXVlcnkoc3RydWN0IGlmbmV0ICppZnAsIGNvbnN0IHN0 cnVjdCBpcA0KPiAgCX0NCj4gIAlJR01QU1RBVF9JTkMoaWdwc19yY3ZfZ2VuX3F1ZXJpZXMpOw0K PiAgDQo+IC0JSU5fTVVMVElfTE9DSygpOw0KPiArCUlOX01VTFRJX0xJU1RfTE9DSygpOw0KPiAg CUlHTVBfTE9DSygpOw0KPiAgDQo+ICAJaWdpID0gKChzdHJ1Y3QgaW5faWZpbmZvICopaWZwLT5p Zl9hZmRhdGFbQUZfSU5FVF0pLT5paV9pZ21wOw0KPiBAQCAtNzc4LDcgKzc2NCw3IEBAIGlnbXBf aW5wdXRfdjFfcXVlcnkoc3RydWN0IGlmbmV0ICppZnAsIGNvbnN0IHN0cnVjdCBpcA0KPiAgDQo+ ICBvdXRfbG9ja2VkOg0KPiAgCUlHTVBfVU5MT0NLKCk7DQo+IC0JSU5fTVVMVElfVU5MT0NLKCk7 DQo+ICsJSU5fTVVMVElfTElTVF9VTkxPQ0soKTsNCj4gIA0KPiAgCXJldHVybiAoMCk7DQo+ICB9 DQo+IEBAIC04MTYsNyArODAyLDcgQEAgaWdtcF9pbnB1dF92Ml9xdWVyeShzdHJ1Y3QgaWZuZXQg KmlmcCwgY29uc3Qgc3RydWN0IGlwDQo+ICAJCUlHTVBTVEFUX0lOQyhpZ3BzX3Jjdl9ncm91cF9x dWVyaWVzKTsNCj4gIAl9DQo+ICANCj4gLQlJTl9NVUxUSV9MT0NLKCk7DQo+ICsJSU5fTVVMVElf TElTVF9MT0NLKCk7DQo+ICAJSUdNUF9MT0NLKCk7DQo+ICANCj4gIAlpZ2kgPSAoKHN0cnVjdCBp bl9pZmluZm8gKilpZnAtPmlmX2FmZGF0YVtBRl9JTkVUXSktPmlpX2lnbXA7DQo+IEBAIC04NzIs NyArODU4LDcgQEAgaWdtcF9pbnB1dF92Ml9xdWVyeShzdHJ1Y3QgaWZuZXQgKmlmcCwgY29uc3Qg c3RydWN0IGlwDQo+ICANCj4gIG91dF9sb2NrZWQ6DQo+ICAJSUdNUF9VTkxPQ0soKTsNCj4gLQlJ Tl9NVUxUSV9VTkxPQ0soKTsNCj4gKwlJTl9NVUxUSV9MSVNUX1VOTE9DSygpOw0KPiAgDQo+ICAJ cmV0dXJuICgwKTsNCj4gIH0NCj4gQEAgLTg5OSw3ICs4ODUsNyBAQCBpZ21wX3YyX3VwZGF0ZV9n cm91cChzdHJ1Y3QgaW5fbXVsdGkgKmlubSwgY29uc3QgaW50IHQNCj4gIAlDVFI0KEtUUl9JR01Q VjMsICIweCUwOHg6ICVzLyVzIHRpbWVyPSVkIiwgX19mdW5jX18sDQo+ICAJICAgIG50b2hsKGlu bS0+aW5tX2FkZHIuc19hZGRyKSwgaW5tLT5pbm1faWZwLT5pZl94bmFtZSwgdGltZXIpOw0KPiAg DQo+IC0JSU5fTVVMVElfTE9DS19BU1NFUlQoKTsNCj4gKwlJTl9NVUxUSV9MSVNUX0xPQ0tfQVNT RVJUKCk7DQo+ICANCj4gIAlzd2l0Y2ggKGlubS0+aW5tX3N0YXRlKSB7DQo+ICAJY2FzZSBJR01Q X05PVF9NRU1CRVI6DQo+IEBAIC0xMDExLDcgKzk5Nyw3IEBAIGlnbXBfaW5wdXRfdjNfcXVlcnko c3RydWN0IGlmbmV0ICppZnAsIGNvbnN0IHN0cnVjdCBpcA0KPiAgCQkJSUdNUFNUQVRfSU5DKGln cHNfcmN2X2dzcl9xdWVyaWVzKTsNCj4gIAl9DQo+ICANCj4gLQlJTl9NVUxUSV9MT0NLKCk7DQo+ ICsJSU5fTVVMVElfTElTVF9MT0NLKCk7DQo+ICAJSUdNUF9MT0NLKCk7DQo+ICANCj4gIAlpZ2kg PSAoKHN0cnVjdCBpbl9pZmluZm8gKilpZnAtPmlmX2FmZGF0YVtBRl9JTkVUXSktPmlpX2lnbXA7 DQo+IEBAIC0xMDkyLDcgKzEwNzgsNyBAQCBpZ21wX2lucHV0X3YzX3F1ZXJ5KHN0cnVjdCBpZm5l dCAqaWZwLCBjb25zdCBzdHJ1Y3QgaXANCj4gIA0KPiAgb3V0X2xvY2tlZDoNCj4gIAlJR01QX1VO TE9DSygpOw0KPiAtCUlOX01VTFRJX1VOTE9DSygpOw0KPiArCUlOX01VTFRJX0xJU1RfVU5MT0NL KCk7DQo+ICANCj4gIAlyZXR1cm4gKDApOw0KPiAgfQ0KPiBAQCAtMTEwOSw3ICsxMDk1LDcgQEAg aWdtcF9pbnB1dF92M19ncm91cF9xdWVyeShzdHJ1Y3QgaW5fbXVsdGkgKmlubSwgc3RydWN0DQo+ ICAJaW50CQkJIHJldHZhbDsNCj4gIAl1aW50MTZfdAkJIG5zcmM7DQo+ICANCj4gLQlJTl9NVUxU SV9MT0NLX0FTU0VSVCgpOw0KPiArCUlOX01VTFRJX0xJU1RfTE9DS19BU1NFUlQoKTsNCj4gIAlJ R01QX0xPQ0tfQVNTRVJUKCk7DQo+ICANCj4gIAlyZXR2YWwgPSAwOw0KPiBAQCAtMTI0Niw3ICsx MjMyLDcgQEAgaWdtcF9pbnB1dF92MV9yZXBvcnQoc3RydWN0IGlmbmV0ICppZnAsIC8qY29uc3Qq LyBzdHJ1DQo+ICAJICogSWYgd2UgYXJlIGEgbWVtYmVyIG9mIHRoaXMgZ3JvdXAsIGFuZCBvdXIg bWVtYmVyc2hpcCBzaG91bGQgYmUNCj4gIAkgKiByZXBvcnRlZCwgc3RvcCBvdXIgZ3JvdXAgdGlt ZXIgYW5kIHRyYW5zaXRpb24gdG8gdGhlICdsYXp5JyBzdGF0ZS4NCj4gIAkgKi8NCj4gLQlJTl9N VUxUSV9MT0NLKCk7DQo+ICsJSU5fTVVMVElfTElTVF9MT0NLKCk7DQo+ICAJaW5tID0gaW5tX2xv b2t1cChpZnAsIGlnbXAtPmlnbXBfZ3JvdXApOw0KPiAgCWlmIChpbm0gIT0gTlVMTCkgew0KPiAg CQlzdHJ1Y3QgaWdtcF9pZnNvZnRjICppZ2k7DQo+IEBAIC0xMzA1LDcgKzEyOTEsNyBAQCBpZ21w X2lucHV0X3YxX3JlcG9ydChzdHJ1Y3QgaWZuZXQgKmlmcCwgLypjb25zdCovIHN0cnUNCj4gIAl9 DQo+ICANCj4gIG91dF9sb2NrZWQ6DQo+IC0JSU5fTVVMVElfVU5MT0NLKCk7DQo+ICsJSU5fTVVM VElfTElTVF9VTkxPQ0soKTsNCj4gIA0KPiAgCXJldHVybiAoMCk7DQo+ICB9DQo+IEBAIC0xMzcz LDcgKzEzNTksNyBAQCBpZ21wX2lucHV0X3YyX3JlcG9ydChzdHJ1Y3QgaWZuZXQgKmlmcCwgLypj b25zdCovIHN0cnUNCj4gIAkgKiByZXBvcnRlZCwgYW5kIG91ciBncm91cCB0aW1lciBpcyBwZW5k aW5nIG9yIGFib3V0IHRvIGJlIHJlc2V0LA0KPiAgCSAqIHN0b3Agb3VyIGdyb3VwIHRpbWVyIGJ5 IHRyYW5zaXRpb25pbmcgdG8gdGhlICdsYXp5JyBzdGF0ZS4NCj4gIAkgKi8NCj4gLQlJTl9NVUxU SV9MT0NLKCk7DQo+ICsJSU5fTVVMVElfTElTVF9MT0NLKCk7DQo+ICAJaW5tID0gaW5tX2xvb2t1 cChpZnAsIGlnbXAtPmlnbXBfZ3JvdXApOw0KPiAgCWlmIChpbm0gIT0gTlVMTCkgew0KPiAgCQlz dHJ1Y3QgaWdtcF9pZnNvZnRjICppZ2k7DQo+IEBAIC0xNDE4LDcgKzE0MDQsNyBAQCBpZ21wX2lu cHV0X3YyX3JlcG9ydChzdHJ1Y3QgaWZuZXQgKmlmcCwgLypjb25zdCovIHN0cnUNCj4gIAl9DQo+ ICANCj4gIG91dF9sb2NrZWQ6DQo+IC0JSU5fTVVMVElfVU5MT0NLKCk7DQo+ICsJSU5fTVVMVElf TElTVF9VTkxPQ0soKTsNCj4gIA0KPiAgCXJldHVybiAoMCk7DQo+ICB9DQo+IEBAIC0xNjQ3LDYg KzE2MzMsNyBAQCBpZ21wX2Zhc3R0aW1vX3ZuZXQodm9pZCkNCj4gIAlzdHJ1Y3QgaWdtcF9pZnNv ZnRjCSppZ2k7DQo+ICAJc3RydWN0IGlmbXVsdGlhZGRyCSppZm1hOw0KPiAgCXN0cnVjdCBpbl9t dWx0aQkJKmlubTsNCj4gKwlzdHJ1Y3QgaW5fbXVsdGlfaGVhZCBpbm1fZnJlZV90bXA7DQo+ICAJ aW50CQkJIGxvb3AsIHVyaV9mYXN0aHo7DQo+ICANCj4gIAlsb29wID0gMDsNCj4gQEAgLTE2NjIs NyArMTY0OSw4IEBAIGlnbXBfZmFzdHRpbW9fdm5ldCh2b2lkKQ0KPiAgCSAgICAhVl9zdGF0ZV9j aGFuZ2VfdGltZXJzX3J1bm5pbmcpDQo+ICAJCXJldHVybjsNCj4gIA0KPiAtCUlOX01VTFRJX0xP Q0soKTsNCj4gKwlTTElTVF9JTklUKCZpbm1fZnJlZV90bXApOw0KPiArCUlOX01VTFRJX0xJU1Rf TE9DSygpOw0KPiAgCUlHTVBfTE9DSygpOw0KPiAgDQo+ICAJLyoNCj4gQEAgLTE3MjAsNyArMTcw OCw3IEBAIGlnbXBfZmFzdHRpbW9fdm5ldCh2b2lkKQ0KPiAgCQkJCSAgICBpZ2ktPmlnaV92ZXJz aW9uKTsNCj4gIAkJCQlicmVhazsNCj4gIAkJCWNhc2UgSUdNUF9WRVJTSU9OXzM6DQo+IC0JCQkJ aWdtcF92M19wcm9jZXNzX2dyb3VwX3RpbWVycyhpZ2ksICZxcnEsDQo+ICsJCQkJaWdtcF92M19w cm9jZXNzX2dyb3VwX3RpbWVycygmaW5tX2ZyZWVfdG1wLCAmcXJxLA0KPiAgCQkJCSAgICAmc2Nx LCBpbm0sIHVyaV9mYXN0aHopOw0KPiAgCQkJCWJyZWFrOw0KPiAgCQkJfQ0KPiBAQCAtMTcyOCw4 ICsxNzE2LDYgQEAgaWdtcF9mYXN0dGltb192bmV0KHZvaWQpDQo+ICAJCUlGX0FERFJfUlVOTE9D SyhpZnApOw0KPiAgDQo+ICAJCWlmIChpZ2ktPmlnaV92ZXJzaW9uID09IElHTVBfVkVSU0lPTl8z KSB7DQo+IC0JCQlzdHJ1Y3QgaW5fbXVsdGkJCSp0aW5tOw0KPiAtDQo+ICAJCQlpZ21wX2Rpc3Bh dGNoX3F1ZXVlKCZxcnEsIDAsIGxvb3ApOw0KPiAgCQkJaWdtcF9kaXNwYXRjaF9xdWV1ZSgmc2Nx LCAwLCBsb29wKTsNCj4gIA0KPiBAQCAtMTczNywxOCArMTcyMywxMyBAQCBpZ21wX2Zhc3R0aW1v X3ZuZXQodm9pZCkNCj4gIAkJCSAqIEZyZWUgdGhlIGluX211bHRpIHJlZmVyZW5jZShzKSBmb3Ig dGhpcw0KPiAgCQkJICogSUdNUCBsaWZlY3ljbGUuDQo+ICAJCQkgKi8NCj4gLQkJCVNMSVNUX0ZP UkVBQ0hfU0FGRShpbm0sICZpZ2ktPmlnaV9yZWxpbm1oZWFkLA0KPiAtCQkJICAgIGlubV9ucmVs ZSwgdGlubSkgew0KPiAtCQkJCVNMSVNUX1JFTU9WRV9IRUFEKCZpZ2ktPmlnaV9yZWxpbm1oZWFk LA0KPiAtCQkJCSAgICBpbm1fbnJlbGUpOw0KPiAtCQkJCWlubV9yZWxlYXNlX2xvY2tlZChpbm0p Ow0KPiAtCQkJfQ0KPiArCQkJaW5tX3JlbGVhc2VfbGlzdF9kZWZlcnJlZCgmaW5tX2ZyZWVfdG1w KTsNCj4gIAkJfQ0KPiAgCX0NCj4gIA0KPiAgb3V0X2xvY2tlZDoNCj4gIAlJR01QX1VOTE9DSygp Ow0KPiAtCUlOX01VTFRJX1VOTE9DSygpOw0KPiArCUlOX01VTFRJX0xJU1RfVU5MT0NLKCk7DQo+ ICB9DQo+ICANCj4gIC8qDQo+IEBAIC0xNzYwLDcgKzE3NDEsNyBAQCBpZ21wX3YxdjJfcHJvY2Vz c19ncm91cF90aW1lcihzdHJ1Y3QgaW5fbXVsdGkgKmlubSwgY28NCj4gIHsNCj4gIAlpbnQgcmVw b3J0X3RpbWVyX2V4cGlyZWQ7DQo+ICANCj4gLQlJTl9NVUxUSV9MT0NLX0FTU0VSVCgpOw0KPiAr CUlOX01VTFRJX0xJU1RfTE9DS19BU1NFUlQoKTsNCj4gIAlJR01QX0xPQ0tfQVNTRVJUKCk7DQo+ ICANCj4gIAlpZiAoaW5tLT5pbm1fdGltZXIgPT0gMCkgew0KPiBAQCAtMTgwMiwxNCArMTc4Mywx NCBAQCBpZ21wX3YxdjJfcHJvY2Vzc19ncm91cF90aW1lcihzdHJ1Y3QgaW5fbXVsdGkgKmlubSwg Y28NCj4gICAqIE5vdGU6IFVubG9ja2VkIHJlYWQgZnJvbSBpZ2kuDQo+ICAgKi8NCj4gIHN0YXRp YyB2b2lkDQo+IC1pZ21wX3YzX3Byb2Nlc3NfZ3JvdXBfdGltZXJzKHN0cnVjdCBpZ21wX2lmc29m dGMgKmlnaSwNCj4gK2lnbXBfdjNfcHJvY2Vzc19ncm91cF90aW1lcnMoc3RydWN0IGluX211bHRp X2hlYWQgKmlubWgsDQo+ICAgICAgc3RydWN0IG1idWZxICpxcnEsIHN0cnVjdCBtYnVmcSAqc2Nx LA0KPiAgICAgIHN0cnVjdCBpbl9tdWx0aSAqaW5tLCBjb25zdCBpbnQgdXJpX2Zhc3RoeikNCj4g IHsNCj4gIAlpbnQgcXVlcnlfcmVzcG9uc2VfdGltZXJfZXhwaXJlZDsNCj4gIAlpbnQgc3RhdGVf Y2hhbmdlX3JldHJhbnNtaXRfdGltZXJfZXhwaXJlZDsNCj4gIA0KPiAtCUlOX01VTFRJX0xPQ0tf QVNTRVJUKCk7DQo+ICsJSU5fTVVMVElfTElTVF9MT0NLX0FTU0VSVCgpOw0KPiAgCUlHTVBfTE9D S19BU1NFUlQoKTsNCj4gIA0KPiAgCXF1ZXJ5X3Jlc3BvbnNlX3RpbWVyX2V4cGlyZWQgPSAwOw0K PiBAQCAtMTkwNyw4ICsxODg4LDcgQEAgaWdtcF92M19wcm9jZXNzX2dyb3VwX3RpbWVycyhzdHJ1 Y3QgaWdtcF9pZnNvZnRjICppZ2ksDQo+ICAJCQlpZiAoaW5tLT5pbm1fc3RhdGUgPT0gSUdNUF9M RUFWSU5HX01FTUJFUiAmJg0KPiAgCQkJICAgIGlubS0+aW5tX3NjcnYgPT0gMCkgew0KPiAgCQkJ CWlubS0+aW5tX3N0YXRlID0gSUdNUF9OT1RfTUVNQkVSOw0KPiAtCQkJCVNMSVNUX0lOU0VSVF9I RUFEKCZpZ2ktPmlnaV9yZWxpbm1oZWFkLA0KPiAtCQkJCSAgICBpbm0sIGlubV9ucmVsZSk7DQo+ ICsJCQkJaW5tX3JlbGVfbG9ja2VkKGlubWgsIGlubSk7DQo+ICAJCQl9DQo+ICAJCX0NCj4gIAkJ YnJlYWs7DQo+IEBAIC0xOTI5LDcgKzE5MDksNyBAQCBzdGF0aWMgdm9pZA0KPiAgaWdtcF92M19z dXBwcmVzc19ncm91cF9yZWNvcmQoc3RydWN0IGluX211bHRpICppbm0pDQo+ICB7DQo+ICANCj4g LQlJTl9NVUxUSV9MT0NLX0FTU0VSVCgpOw0KPiArCUlOX01VTFRJX0xJU1RfTE9DS19BU1NFUlQo KTsNCj4gIA0KPiAgCUtBU1NFUlQoaW5tLT5pbm1faWdpLT5pZ2lfdmVyc2lvbiA9PSBJR01QX1ZF UlNJT05fMywNCj4gIAkJKCIlczogbm90IElHTVB2MyBtb2RlIG9uIGxpbmsiLCBfX2Z1bmNfXykp Ow0KPiBAQCAtMjAwMywxMyArMTk4MywxNSBAQCBpZ21wX3YzX2NhbmNlbF9saW5rX3RpbWVycyhz dHJ1Y3QgaWdtcF9pZnNvZnRjICppZ2kpDQo+ICB7DQo+ICAJc3RydWN0IGlmbXVsdGlhZGRyCSpp Zm1hOw0KPiAgCXN0cnVjdCBpZm5ldAkJKmlmcDsNCj4gLQlzdHJ1Y3QgaW5fbXVsdGkJCSppbm0s ICp0aW5tOw0KPiArCXN0cnVjdCBpbl9tdWx0aQkJKmlubTsNCj4gKwlzdHJ1Y3QgaW5fbXVsdGlf aGVhZCBpbm1fZnJlZV90bXA7DQo+ICANCj4gIAlDVFIzKEtUUl9JR01QVjMsICIlczogY2FuY2Vs IHYzIHRpbWVycyBvbiBpZnAgJXAoJXMpIiwgX19mdW5jX18sDQo+ICAJICAgIGlnaS0+aWdpX2lm cCwgaWdpLT5pZ2lfaWZwLT5pZl94bmFtZSk7DQo+ICANCj4gLQlJTl9NVUxUSV9MT0NLX0FTU0VS VCgpOw0KPiArCUlOX01VTFRJX0xJU1RfTE9DS19BU1NFUlQoKTsNCj4gIAlJR01QX0xPQ0tfQVNT RVJUKCk7DQo+ICsJU0xJU1RfSU5JVCgmaW5tX2ZyZWVfdG1wKTsNCj4gIA0KPiAgCS8qDQo+ICAJ ICogU3RvcCB0aGUgdjMgR2VuZXJhbCBRdWVyeSBSZXNwb25zZSBvbiB0aGlzIGxpbmsgc3RvbmUg ZGVhZC4NCj4gQEAgLTIwNTAsNyArMjAzMiw3IEBAIGlnbXBfdjNfY2FuY2VsX2xpbmtfdGltZXJz KHN0cnVjdCBpZ21wX2lmc29mdGMgKmlnaSkNCj4gIAkJCSAqIG1lc3NhZ2UgaXMgc2VudCB1cHN0 cmVhbSB0byB0aGUgb2xkIHF1ZXJpZXIgLS0NCj4gIAkJCSAqIHRyYW5zaXRpb24gdG8gTk9UIHdv dWxkIGxvc2UgdGhlIGxlYXZlIGFuZCByYWNlLg0KPiAgCQkJICovDQo+IC0JCQlTTElTVF9JTlNF UlRfSEVBRCgmaWdpLT5pZ2lfcmVsaW5taGVhZCwgaW5tLCBpbm1fbnJlbGUpOw0KPiArCQkJaW5t X3JlbGVfbG9ja2VkKCZpbm1fZnJlZV90bXAsIGlubSk7DQo+ICAJCQkvKiBGQUxMVEhST1VHSCAq Lw0KPiAgCQljYXNlIElHTVBfR19RVUVSWV9QRU5ESU5HX01FTUJFUjoNCj4gIAkJY2FzZSBJR01Q X1NHX1FVRVJZX1BFTkRJTkdfTUVNQkVSOg0KPiBAQCAtMjA2OSwxMCArMjA1MSw4IEBAIGlnbXBf djNfY2FuY2VsX2xpbmtfdGltZXJzKHN0cnVjdCBpZ21wX2lmc29mdGMgKmlnaSkNCj4gIAkJbWJ1 ZnFfZHJhaW4oJmlubS0+aW5tX3NjcSk7DQo+ICAJfQ0KPiAgCUlGX0FERFJfUlVOTE9DSyhpZnAp Ow0KPiAtCVNMSVNUX0ZPUkVBQ0hfU0FGRShpbm0sICZpZ2ktPmlnaV9yZWxpbm1oZWFkLCBpbm1f bnJlbGUsIHRpbm0pIHsNCj4gLQkJU0xJU1RfUkVNT1ZFX0hFQUQoJmlnaS0+aWdpX3JlbGlubWhl YWQsIGlubV9ucmVsZSk7DQo+IC0JCWlubV9yZWxlYXNlX2xvY2tlZChpbm0pOw0KPiAtCX0NCj4g Kw0KPiArCWlubV9yZWxlYXNlX2xpc3RfZGVmZXJyZWQoJmlubV9mcmVlX3RtcCk7DQo+ICB9DQo+ ICANCj4gIC8qDQo+IEBAIC0yMTk5LDcgKzIxNzksNyBAQCBpZ21wX3YxdjJfcXVldWVfcmVwb3J0 KHN0cnVjdCBpbl9tdWx0aSAqaW5tLCBjb25zdCBpbnQNCj4gIAlzdHJ1Y3QgaXAJCSppcDsNCj4g IAlzdHJ1Y3QgbWJ1ZgkJKm07DQo+ICANCj4gLQlJTl9NVUxUSV9MT0NLX0FTU0VSVCgpOw0KPiAr CUlOX01VTFRJX0xJU1RfTE9DS19BU1NFUlQoKTsNCj4gIAlJR01QX0xPQ0tfQVNTRVJUKCk7DQo+ ICANCj4gIAlpZnAgPSBpbm0tPmlubV9pZnA7DQo+IEBAIC0yMjc2LDEwICsyMjU2LDggQEAgaWdt cF9jaGFuZ2Vfc3RhdGUoc3RydWN0IGluX211bHRpICppbm0pDQo+ICAJc3RydWN0IGlmbmV0ICpp ZnA7DQo+ICAJaW50IGVycm9yOw0KPiAgDQo+IC0JSU5fTVVMVElfTE9DS19BU1NFUlQoKTsNCj4g LQ0KPiAgCWVycm9yID0gMDsNCj4gLQ0KPiArCUlOX01VTFRJX0xPQ0tfQVNTRVJUKCk7DQo+ICAJ LyoNCj4gIAkgKiBUcnkgdG8gZGV0ZWN0IGlmIHRoZSB1cHBlciBsYXllciBqdXN0IGFza2VkIHVz IHRvIGNoYW5nZSBzdGF0ZQ0KPiAgCSAqIGZvciBhbiBpbnRlcmZhY2Ugd2hpY2ggaGFzIG5vdyBn b25lIGF3YXkuDQo+IEBAIC0yMzc5LDkgKzIzNTcsMTAgQEAgaWdtcF9pbml0aWFsX2pvaW4oc3Ry dWN0IGluX211bHRpICppbm0sIHN0cnVjdCBpZ21wX2lmDQo+ICAJCSAqIGdyb3VwIGFyb3VuZCBm b3IgdGhlIGZpbmFsIElOQ0xVREUge30gZW5xdWV1ZS4NCj4gIAkJICovDQo+ICAJCWlmIChpZ2kt PmlnaV92ZXJzaW9uID09IElHTVBfVkVSU0lPTl8zICYmDQo+IC0JCSAgICBpbm0tPmlubV9zdGF0 ZSA9PSBJR01QX0xFQVZJTkdfTUVNQkVSKQ0KPiAtCQkJaW5tX3JlbGVhc2VfbG9ja2VkKGlubSk7 DQo+IC0NCj4gKwkJICAgIGlubS0+aW5tX3N0YXRlID09IElHTVBfTEVBVklOR19NRU1CRVIpIHsN Cj4gKwkJCU1QQVNTKGlubS0+aW5tX3JlZmNvdW50ID4gMSk7DQo+ICsJCQlpbm1fcmVsZV9sb2Nr ZWQoTlVMTCwgaW5tKTsNCj4gKwkJfQ0KPiAgCQlpbm0tPmlubV9zdGF0ZSA9IElHTVBfUkVQT1JU SU5HX01FTUJFUjsNCj4gIA0KPiAgCQlzd2l0Y2ggKGlnaS0+aWdpX3ZlcnNpb24pIHsNCj4gQEAg LTI0NzMsNyArMjQ1Miw3IEBAIGlnbXBfaGFuZGxlX3N0YXRlX2NoYW5nZShzdHJ1Y3QgaW5fbXVs dGkgKmlubSwgc3RydWN0IA0KPiAgDQo+ICAJaWZwID0gaW5tLT5pbm1faWZwOw0KPiAgDQo+IC0J SU5fTVVMVElfTE9DS19BU1NFUlQoKTsNCj4gKwlJTl9NVUxUSV9MSVNUX0xPQ0tfQVNTRVJUKCk7 DQo+ICAJSUdNUF9MT0NLX0FTU0VSVCgpOw0KPiAgDQo+ICAJS0FTU0VSVChpZ2kgJiYgaWdpLT5p Z2lfaWZwID09IGlmcCwgKCIlczogaW5jb25zaXN0ZW50IGlmcCIsIF9fZnVuY19fKSk7DQo+IEBA IC0yNTMxLDcgKzI1MTAsNyBAQCBpZ21wX2ZpbmFsX2xlYXZlKHN0cnVjdCBpbl9tdWx0aSAqaW5t LCBzdHJ1Y3QgaWdtcF9pZnMNCj4gIAkgICAgX19mdW5jX18sIG50b2hsKGlubS0+aW5tX2FkZHIu c19hZGRyKSwgaW5tLT5pbm1faWZwLA0KPiAgCSAgICBpbm0tPmlubV9pZnAtPmlmX3huYW1lKTsN Cj4gIA0KPiAtCUlOX01VTFRJX0xPQ0tfQVNTRVJUKCk7DQo+ICsJSU5fTVVMVElfTElTVF9MT0NL X0FTU0VSVCgpOw0KPiAgCUlHTVBfTE9DS19BU1NFUlQoKTsNCj4gIA0KPiAgCXN3aXRjaCAoaW5t LT5pbm1fc3RhdGUpIHsNCj4gQEAgLTI2NTgsNyArMjYzNyw3IEBAIGlnbXBfdjNfZW5xdWV1ZV9n cm91cF9yZWNvcmQoc3RydWN0IG1idWZxICptcSwgc3RydWN0IA0KPiAgCWluX2FkZHJfdAkJIG5h ZGRyOw0KPiAgCXVpbnQ4X3QJCQkgbW9kZTsNCj4gIA0KPiAtCUlOX01VTFRJX0xPQ0tfQVNTRVJU KCk7DQo+ICsJSU5fTVVMVElfTElTVF9MT0NLX0FTU0VSVCgpOw0KPiAgDQo+ICAJZXJyb3IgPSAw Ow0KPiAgCWlmcCA9IGlubS0+aW5tX2lmcDsNCj4gQEAgLTMwMTgsNyArMjk5Nyw3IEBAIGlnbXBf djNfZW5xdWV1ZV9maWx0ZXJfY2hhbmdlKHN0cnVjdCBtYnVmcSAqbXEsIHN0cnVjdA0KPiAgCXVp bnQ4X3QJCQkgbW9kZSwgbm93LCB0aGVuOw0KPiAgCXJlY3R5cGVfdAkJIGNydCwgZHJ0LCBucnQ7 DQo+ICANCj4gLQlJTl9NVUxUSV9MT0NLX0FTU0VSVCgpOw0KPiArCUlOX01VTFRJX0xJU1RfTE9D S19BU1NFUlQoKTsNCj4gIA0KPiAgCWlmIChpbm0tPmlubV9uc3JjID09IDAgfHwNCj4gIAkgICAg KGlubS0+aW5tX3N0WzBdLmlzc19hc20gPiAwICYmIGlubS0+aW5tX3N0WzFdLmlzc19hc20gPiAw KSkNCj4gQEAgLTMyMjEsNyArMzIwMCw3IEBAIGlnbXBfdjNfbWVyZ2Vfc3RhdGVfY2hhbmdlcyhz dHJ1Y3QgaW5fbXVsdGkgKmlubSwgc3RydQ0KPiAgCWRvbWVyZ2UgPSAwOw0KPiAgCXJlY3NsZW4g PSAwOw0KPiAgDQo+IC0JSU5fTVVMVElfTE9DS19BU1NFUlQoKTsNCj4gKwlJTl9NVUxUSV9MSVNU X0xPQ0tfQVNTRVJUKCk7DQo+ICAJSUdNUF9MT0NLX0FTU0VSVCgpOw0KPiAgDQo+ICAJLyoNCj4g QEAgLTMzMjAsNyArMzI5OSw3IEBAIGlnbXBfdjNfZGlzcGF0Y2hfZ2VuZXJhbF9xdWVyeShzdHJ1 Y3QgaWdtcF9pZnNvZnRjICppZw0KPiAgCXN0cnVjdCBpbl9tdWx0aQkJKmlubTsNCj4gIAlpbnQJ CQkgcmV0dmFsLCBsb29wOw0KPiAgDQo+IC0JSU5fTVVMVElfTE9DS19BU1NFUlQoKTsNCj4gKwlJ Tl9NVUxUSV9MSVNUX0xPQ0tfQVNTRVJUKCk7DQo+ICAJSUdNUF9MT0NLX0FTU0VSVCgpOw0KPiAg DQo+ICAJS0FTU0VSVChpZ2ktPmlnaV92ZXJzaW9uID09IElHTVBfVkVSU0lPTl8zLA0KPiBAQCAt MzYzMiw3ICszNjExLDYgQEAgREJfU0hPV19DT01NQU5EKGlnaV9saXN0LCBkYl9zaG93X2lnaV9s aXN0KQ0KPiAgCQlkYl9wcmludGYoIiAgICBxaSAldVxuIiwgaWdpLT5pZ2lfcWkpOw0KPiAgCQlk Yl9wcmludGYoIiAgICBxcmkgJXVcbiIsIGlnaS0+aWdpX3FyaSk7DQo+ICAJCWRiX3ByaW50Zigi ICAgIHVyaSAldVxuIiwgaWdpLT5pZ2lfdXJpKTsNCj4gLQkJLyogU0xJU1RfSEVBRCgsaW5fbXVs dGkpICAgaWdpX3JlbGlubWhlYWQgKi8NCj4gIAkJLyogc3RydWN0IG1idWZxICAgIGlnaV9ncTsg Ki8NCj4gIAkJZGJfcHJpbnRmKCJcbiIpOw0KPiAgCX0NCj4gDQo+IE1vZGlmaWVkOiBoZWFkL3N5 cy9uZXRpbmV0L2lnbXBfdmFyLmgNCj4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQo+IC0tLSBoZWFk L3N5cy9uZXRpbmV0L2lnbXBfdmFyLmgJV2VkIE1heSAgMiAxNzo0MTowMCAyMDE4CShyMzMzMTc0 KQ0KPiArKysgaGVhZC9zeXMvbmV0aW5ldC9pZ21wX3Zhci5oCVdlZCBNYXkgIDIgMTk6MzY6Mjkg MjAxOAkocjMzMzE3NSkNCj4gQEAgLTIxNCw3ICsyMTQsNiBAQCBzdHJ1Y3QgaWdtcF9pZnNvZnRj IHsNCj4gIAl1aW50MzJfdCBpZ2lfcWk7CS8qIElHTVB2MyBRdWVyeSBJbnRlcnZhbCAocykgKi8N Cj4gIAl1aW50MzJfdCBpZ2lfcXJpOwkvKiBJR01QdjMgUXVlcnkgUmVzcG9uc2UgSW50ZXJ2YWwg KHMpICovDQo+ICAJdWludDMyX3QgaWdpX3VyaTsJLyogSUdNUHYzIFVuc29saWNpdGVkIFJlcG9y dCBJbnRlcnZhbCAocykgKi8NCj4gLQlTTElTVF9IRUFEKCxpbl9tdWx0aSkJaWdpX3JlbGlubWhl YWQ7IC8qIHJlbGVhc2VkIGdyb3VwcyAqLw0KPiAgCXN0cnVjdCBtYnVmcQlpZ2lfZ3E7CQkvKiBn ZW5lcmFsIHF1ZXJ5IHJlc3BvbnNlcyBxdWV1ZSAqLw0KPiAgfTsNCj4gIA0KPiANCj4gTW9kaWZp ZWQ6IGhlYWQvc3lzL25ldGluZXQvaW4uYw0KPiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCj4gLS0t IGhlYWQvc3lzL25ldGluZXQvaW4uYwlXZWQgTWF5ICAyIDE3OjQxOjAwIDIwMTgJKHIzMzMxNzQp DQo+ICsrKyBoZWFkL3N5cy9uZXRpbmV0L2luLmMJV2VkIE1heSAgMiAxOTozNjoyOSAyMDE4CShy MzMzMTc1KQ0KPiBAQCAtNjMyLDEyICs2MzIsMTAgQEAgaW5fZGlmYWRkcl9pb2N0bCh1X2xvbmcg Y21kLCBjYWRkcl90IGRhdGEsIHN0cnVjdCBpZm5lDQo+ICAJCXN0cnVjdCBpbl9pZmluZm8gKmlp Ow0KPiAgDQo+ICAJCWlpID0gKChzdHJ1Y3QgaW5faWZpbmZvICopaWZwLT5pZl9hZmRhdGFbQUZf SU5FVF0pOw0KPiAtCQlJTl9NVUxUSV9MT0NLKCk7DQo+ICAJCWlmIChpaS0+aWlfYWxsaG9zdHMp IHsNCj4gLQkJCSh2b2lkKWluX2xlYXZlZ3JvdXBfbG9ja2VkKGlpLT5paV9hbGxob3N0cywgTlVM TCk7DQo+ICsJCQkodm9pZClpbl9sZWF2ZWdyb3VwKGlpLT5paV9hbGxob3N0cywgTlVMTCk7DQo+ ICAJCQlpaS0+aWlfYWxsaG9zdHMgPSBOVUxMOw0KPiAgCQl9DQo+IC0JCUlOX01VTFRJX1VOTE9D SygpOw0KPiAgCX0NCj4gIA0KPiAgCUlGX0FERFJfV0xPQ0soaWZwKTsNCj4gQEAgLTk5NCwxMSAr OTkyLDEyIEBAIGluX2Jyb2FkY2FzdChzdHJ1Y3QgaW5fYWRkciBpbiwgc3RydWN0IGlmbmV0ICpp ZnApDQo+ICB2b2lkDQo+ICBpbl9pZmRldGFjaChzdHJ1Y3QgaWZuZXQgKmlmcCkNCj4gIHsNCj4g LQ0KPiArCUlOX01VTFRJX0xPQ0soKTsNCj4gIAlpbl9wY2JwdXJnZWlmMCgmVl9yaXBjYmluZm8s IGlmcCk7DQo+ICAJaW5fcGNicHVyZ2VpZjAoJlZfdWRiaW5mbywgaWZwKTsNCj4gIAlpbl9wY2Jw dXJnZWlmMCgmVl91bGl0ZWNiaW5mbywgaWZwKTsNCj4gIAlpbl9wdXJnZW1hZGRycyhpZnApOw0K PiArCUlOX01VTFRJX1VOTE9DSygpOw0KPiAgfQ0KPiAgDQo+ICAvKg0KPiBAQCAtMTAxMSwxMiAr MTAxMCwxMiBAQCBpbl9pZmRldGFjaChzdHJ1Y3QgaWZuZXQgKmlmcCkNCj4gIHN0YXRpYyB2b2lk DQo+ICBpbl9wdXJnZW1hZGRycyhzdHJ1Y3QgaWZuZXQgKmlmcCkNCj4gIHsNCj4gLQlMSVNUX0hF QUQoLGluX211bHRpKSBwdXJnZWlubXM7DQo+IC0Jc3RydWN0IGluX211bHRpCQkqaW5tLCAqdGlu bTsNCj4gKwlzdHJ1Y3QgaW5fbXVsdGlfaGVhZCBwdXJnZWlubXM7DQo+ICsJc3RydWN0IGluX211 bHRpCQkqaW5tOw0KPiAgCXN0cnVjdCBpZm11bHRpYWRkcgkqaWZtYTsNCj4gIA0KPiAtCUxJU1Rf SU5JVCgmcHVyZ2Vpbm1zKTsNCj4gLQlJTl9NVUxUSV9MT0NLKCk7DQo+ICsJU0xJU1RfSU5JVCgm cHVyZ2Vpbm1zKTsNCj4gKwlJTl9NVUxUSV9MSVNUX0xPQ0soKTsNCj4gIA0KPiAgCS8qDQo+ICAJ ICogRXh0cmFjdCBsaXN0IG9mIGluX211bHRpIGFzc29jaWF0ZWQgd2l0aCB0aGUgZGV0YWNoaW5n IGlmcA0KPiBAQCAtMTAzNCwxNyArMTAzMywxMyBAQCBpbl9wdXJnZW1hZGRycyhzdHJ1Y3QgaWZu ZXQgKmlmcCkNCj4gIAkJICAgICgiJXM6IGlmbWFfcHJvdG9zcGVjIGlzIE5VTEwiLCBfX2Z1bmNf XykpOw0KPiAgI2VuZGlmDQo+ICAJCWlubSA9IChzdHJ1Y3QgaW5fbXVsdGkgKilpZm1hLT5pZm1h X3Byb3Rvc3BlYzsNCj4gLQkJTElTVF9JTlNFUlRfSEVBRCgmcHVyZ2Vpbm1zLCBpbm0sIGlubV9s aW5rKTsNCj4gKwkJaW5tX3JlbGVfbG9ja2VkKCZwdXJnZWlubXMsIGlubSk7DQo+ICAJfQ0KPiAg CUlGX0FERFJfUlVOTE9DSyhpZnApOw0KPiAgDQo+IC0JTElTVF9GT1JFQUNIX1NBRkUoaW5tLCAm cHVyZ2Vpbm1zLCBpbm1fbGluaywgdGlubSkgew0KPiAtCQlMSVNUX1JFTU9WRShpbm0sIGlubV9s aW5rKTsNCj4gLQkJaW5tX3JlbGVhc2VfbG9ja2VkKGlubSk7DQo+IC0JfQ0KPiArCWlubV9yZWxl YXNlX2xpc3RfZGVmZXJyZWQoJnB1cmdlaW5tcyk7DQo+ICAJaWdtcF9pZmRldGFjaChpZnApOw0K PiAtDQo+IC0JSU5fTVVMVElfVU5MT0NLKCk7DQo+ICsJSU5fTVVMVElfTElTVF9VTkxPQ0soKTsN Cj4gIH0NCj4gIA0KPiAgc3RydWN0IGluX2xsZW50cnkgew0KPiANCj4gTW9kaWZpZWQ6IGhlYWQv c3lzL25ldGluZXQvaW5fbWNhc3QuYw0KPiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCj4gLS0tIGhl YWQvc3lzL25ldGluZXQvaW5fbWNhc3QuYwlXZWQgTWF5ICAyIDE3OjQxOjAwIDIwMTgJKHIzMzMx NzQpDQo+ICsrKyBoZWFkL3N5cy9uZXRpbmV0L2luX21jYXN0LmMJV2VkIE1heSAgMiAxOTozNjoy OSAyMDE4CShyMzMzMTc1KQ0KPiBAQCAtNTEsNiArNTEsNyBAQCBfX0ZCU0RJRCgiJEZyZWVCU0Qk Iik7DQo+ICAjaW5jbHVkZSA8c3lzL3N5c2N0bC5oPg0KPiAgI2luY2x1ZGUgPHN5cy9rdHIuaD4N Cj4gICNpbmNsdWRlIDxzeXMvdGFza3F1ZXVlLmg+DQo+ICsjaW5jbHVkZSA8c3lzL2d0YXNrcXVl dWUuaD4NCj4gICNpbmNsdWRlIDxzeXMvdHJlZS5oPg0KPiAgDQo+ICAjaW5jbHVkZSA8bmV0L2lm Lmg+DQo+IEBAIC01OSw2ICs2MCw4IEBAIF9fRkJTRElEKCIkRnJlZUJTRCQiKTsNCj4gICNpbmNs dWRlIDxuZXQvcm91dGUuaD4NCj4gICNpbmNsdWRlIDxuZXQvdm5ldC5oPg0KPiAgDQo+ICsjaW5j bHVkZSA8bmV0L2V0aGVybmV0Lmg+DQo+ICsNCj4gICNpbmNsdWRlIDxuZXRpbmV0L2luLmg+DQo+ ICAjaW5jbHVkZSA8bmV0aW5ldC9pbl9zeXN0bS5oPg0KPiAgI2luY2x1ZGUgPG5ldGluZXQvaW5f ZmliLmg+DQo+IEBAIC05MSwxOCArOTQsMjQgQEAgc3RhdGljIE1BTExPQ19ERUZJTkUoTV9JUE1T T1VSQ0UsICJpcF9tc291cmNlIiwNCj4gIA0KPiAgLyoNCj4gICAqIExvY2tpbmc6DQo+IC0gKiAt IExvY2sgb3JkZXIgaXM6IEdpYW50LCBJTlBfV0xPQ0ssIElOX01VTFRJX0xPQ0ssIElHTVBfTE9D SywgSUZfQUREUl9MT0NLLg0KPiArICogLSBMb2NrIG9yZGVyIGlzOiBHaWFudCwgSU5QX1dMT0NL LCBJTl9NVUxUSV9MSVNUX0xPQ0ssIElHTVBfTE9DSywgSUZfQUREUl9MT0NLLg0KPiAgICogLSBU aGUgSUZfQUREUl9MT0NLIGlzIGltcGxpY2l0bHkgdGFrZW4gYnkgaW5tX2xvb2t1cCgpIGVhcmxp ZXIsIGhvd2V2ZXINCj4gICAqICAgaXQgY2FuIGJlIHRha2VuIGJ5IGNvZGUgaW4gbmV0L2lmLmMg YWxzby4NCj4gICAqIC0gaXBfbW9wdGlvbnMgYW5kIGluX21maWx0ZXIgYXJlIGNvdmVyZWQgYnkg dGhlIElOUF9XTE9DSy4NCj4gICAqDQo+IC0gKiBzdHJ1Y3QgaW5fbXVsdGkgaXMgY292ZXJlZCBi eSBJTl9NVUxUSV9MT0NLLiBUaGVyZSBpc24ndCBzdHJpY3RseQ0KPiArICogc3RydWN0IGluX211 bHRpIGlzIGNvdmVyZWQgYnkgSU5fTVVMVElfTElTVF9MT0NLLiBUaGVyZSBpc24ndCBzdHJpY3Rs eQ0KPiAgICogYW55IG5lZWQgZm9yIGluX211bHRpIGl0c2VsZiB0byBiZSB2aXJ0dWFsaXplZCAt LSBpdCBpcyBib3VuZCB0byBhbiBpZnANCj4gICAqIGFueXdheSBubyBtYXR0ZXIgd2hhdCBoYXBw ZW5zLg0KPiAgICovDQo+IC1zdHJ1Y3QgbXR4IGluX211bHRpX210eDsNCj4gLU1UWF9TWVNJTklU KGluX211bHRpX210eCwgJmluX211bHRpX210eCwgImluX211bHRpX210eCIsIE1UWF9ERUYpOw0K PiArc3RydWN0IG10eCBpbl9tdWx0aV9saXN0X210eDsNCj4gK01UWF9TWVNJTklUKGluX211bHRp X210eCwgJmluX211bHRpX2xpc3RfbXR4LCAiaW5fbXVsdGlfbGlzdF9tdHgiLCBNVFhfREVGKTsN Cj4gIA0KPiArc3RydWN0IG10eCBpbl9tdWx0aV9mcmVlX210eDsNCj4gK01UWF9TWVNJTklUKGlu X211bHRpX2ZyZWVfbXR4LCAmaW5fbXVsdGlfZnJlZV9tdHgsICJpbl9tdWx0aV9mcmVlX210eCIs IE1UWF9ERUYpOw0KPiArDQo+ICtzdHJ1Y3Qgc3ggaW5fbXVsdGlfc3g7DQo+ICtTWF9TWVNJTklU KGluX211bHRpX3N4LCAmaW5fbXVsdGlfc3gsICJpbl9tdWx0aV9zeCIpOw0KPiArDQo+ICAvKg0K PiAgICogRnVuY3Rpb25zIHdpdGggbm9uLXN0YXRpYyBsaW5rYWdlIGRlZmluZWQgaW4gdGhpcyBm aWxlIHNob3VsZCBiZQ0KPiAgICogZGVjbGFyZWQgaW4gaW5fdmFyLmg6DQo+IEBAIC0xNTEsNiAr MTYwLDcgQEAgc3RhdGljIGludAlpbm1faXNfaWZwX2RldGFjaGVkKGNvbnN0IHN0cnVjdCBpbl9t dWx0aSAqDQo+ICBzdGF0aWMgaW50CWlubV9tZXJnZShzdHJ1Y3QgaW5fbXVsdGkgKiwgLypjb25z dCovIHN0cnVjdCBpbl9tZmlsdGVyICopOw0KPiAgc3RhdGljIHZvaWQJaW5tX3B1cmdlKHN0cnVj dCBpbl9tdWx0aSAqKTsNCj4gIHN0YXRpYyB2b2lkCWlubV9yZWFwKHN0cnVjdCBpbl9tdWx0aSAq KTsNCj4gK3N0YXRpYyB2b2lkIGlubV9yZWxlYXNlKHN0cnVjdCBpbl9tdWx0aSAqKTsNCj4gIHN0 YXRpYyBzdHJ1Y3QgaXBfbW9wdGlvbnMgKg0KPiAgCQlpbnBfZmluZG1vcHRpb25zKHN0cnVjdCBp bnBjYiAqKTsNCj4gIHN0YXRpYyB2b2lkCWlucF9mcmVlbW9wdGlvbnNfaW50ZXJuYWwoc3RydWN0 IGlwX21vcHRpb25zICopOw0KPiBAQCAtMjE2LDYgKzIyNiw2NSBAQCBpbm1faXNfaWZwX2RldGFj aGVkKGNvbnN0IHN0cnVjdCBpbl9tdWx0aSAqaW5tKQ0KPiAgfQ0KPiAgI2VuZGlmDQo+ICANCj4g K3N0YXRpYyBzdHJ1Y3QgZ3JvdXB0YXNrIGZyZWVfZ3Rhc2s7DQo+ICtzdGF0aWMgc3RydWN0IGlu X211bHRpX2hlYWQgaW5tX2ZyZWVfbGlzdDsNCj4gK3N0YXRpYyB2b2lkIGlubV9yZWxlYXNlX3Rh c2sodm9pZCAqYXJnIF9fdW51c2VkKTsNCj4gK3N0YXRpYyB2b2lkIGlubV9pbml0KHZvaWQpDQo+ ICt7DQo+ICsJU0xJU1RfSU5JVCgmaW5tX2ZyZWVfbGlzdCk7DQo+ICsJdGFza3Fncm91cF9jb25m aWdfZ3Rhc2tfaW5pdChOVUxMLCAmZnJlZV9ndGFzaywgaW5tX3JlbGVhc2VfdGFzaywgImlubSBy ZWxlYXNlDQo+IHRhc2siKTsgK30NCj4gKw0KPiArU1lTSU5JVChpbm1faW5pdCwgU0lfU1VCX1NN UCArIDEsIFNJX09SREVSX0ZJUlNULA0KPiArCWlubV9pbml0LCBOVUxMKTsNCj4gKw0KPiArDQo+ ICt2b2lkDQo+ICtpbm1fcmVsZWFzZV9saXN0X2RlZmVycmVkKHN0cnVjdCBpbl9tdWx0aV9oZWFk ICppbm1oKQ0KPiArew0KPiArDQo+ICsJaWYgKFNMSVNUX0VNUFRZKGlubWgpKQ0KPiArCQlyZXR1 cm47DQo+ICsJbXR4X2xvY2soJmluX211bHRpX2ZyZWVfbXR4KTsNCj4gKwlTTElTVF9DT05DQVQo JmlubV9mcmVlX2xpc3QsIGlubWgsIGluX211bHRpLCBpbm1fbnJlbGUpOw0KPiArCW10eF91bmxv Y2soJmluX211bHRpX2ZyZWVfbXR4KTsNCj4gKwlHUk9VUFRBU0tfRU5RVUVVRSgmZnJlZV9ndGFz ayk7DQo+ICt9DQo+ICsNCj4gK3ZvaWQNCj4gK2lubV9yZWxlYXNlX2RlZmVycmVkKHN0cnVjdCBp bl9tdWx0aSAqaW5tKQ0KPiArew0KPiArCXN0cnVjdCBpbl9tdWx0aV9oZWFkIHRtcDsNCj4gKw0K PiArCUlOX01VTFRJX0xJU1RfTE9DS19BU1NFUlQoKTsNCj4gKwlNUEFTUyhpbm0tPmlubV9yZWZj b3VudCA+IDApOw0KPiArCWlmICgtLWlubS0+aW5tX3JlZmNvdW50ID09IDApIHsNCj4gKwkJU0xJ U1RfSU5JVCgmdG1wKTsNCj4gKwkJaW5tLT5pbm1faWZtYS0+aWZtYV9wcm90b3NwZWMgPSBOVUxM Ow0KPiArCQlTTElTVF9JTlNFUlRfSEVBRCgmdG1wLCBpbm0sIGlubV9ucmVsZSk7DQo+ICsJCWlu bV9yZWxlYXNlX2xpc3RfZGVmZXJyZWQoJnRtcCk7DQo+ICsJfQ0KPiArfQ0KPiArDQo+ICtzdGF0 aWMgdm9pZA0KPiAraW5tX3JlbGVhc2VfdGFzayh2b2lkICphcmcgX191bnVzZWQpDQo+ICt7DQo+ ICsJc3RydWN0IGluX211bHRpX2hlYWQgaW5tX2ZyZWVfdG1wOw0KPiArCXN0cnVjdCBpbl9tdWx0 aSAqaW5tLCAqdGlubTsNCj4gKw0KPiArCVNMSVNUX0lOSVQoJmlubV9mcmVlX3RtcCk7DQo+ICsJ bXR4X2xvY2soJmluX211bHRpX2ZyZWVfbXR4KTsNCj4gKwlTTElTVF9DT05DQVQoJmlubV9mcmVl X3RtcCwgJmlubV9mcmVlX2xpc3QsIGluX211bHRpLCBpbm1fbnJlbGUpOw0KPiArCW10eF91bmxv Y2soJmluX211bHRpX2ZyZWVfbXR4KTsNCj4gKwlJTl9NVUxUSV9MT0NLKCk7DQo+ICsJU0xJU1Rf Rk9SRUFDSF9TQUZFKGlubSwgJmlubV9mcmVlX3RtcCwgaW5tX25yZWxlLCB0aW5tKSB7DQo+ICsJ CVNMSVNUX1JFTU9WRV9IRUFEKCZpbm1fZnJlZV90bXAsIGlubV9ucmVsZSk7DQo+ICsJCU1QQVNT KGlubSk7DQo+ICsJCWlubV9yZWxlYXNlKGlubSk7DQo+ICsJfQ0KPiArCUlOX01VTFRJX1VOTE9D SygpOw0KPiArfQ0KPiArDQo+ICAvKg0KPiAgICogSW5pdGlhbGl6ZSBhbiBpbl9tZmlsdGVyIHN0 cnVjdHVyZSB0byBhIGtub3duIHN0YXRlIGF0IHQwLCB0MQ0KPiAgICogd2l0aCBhbiBlbXB0eSBz b3VyY2UgZmlsdGVyIGxpc3QuDQo+IEBAIC0yMzIsNyArMzAxLDcgQEAgaW1mX2luaXQoc3RydWN0 IGluX21maWx0ZXIgKmltZiwgY29uc3QgaW50IHN0MCwgY29uc3QgDQo+ICAvKg0KPiAgICogRnVu Y3Rpb24gZm9yIGxvb2tpbmcgdXAgYW4gaW5fbXVsdGkgcmVjb3JkIGZvciBhbiBJUHY0IG11bHRp Y2FzdCBhZGRyZXNzDQo+ICAgKiBvbiBhIGdpdmVuIGludGVyZmFjZS4gaWZwIG11c3QgYmUgdmFs aWQuIElmIG5vIHJlY29yZCBmb3VuZCwgcmV0dXJuIE5VTEwuDQo+IC0gKiBUaGUgSU5fTVVMVElf TE9DSyBhbmQgSUZfQUREUl9MT0NLIG9uIGlmcCBtdXN0IGJlIGhlbGQuDQo+ICsgKiBUaGUgSU5f TVVMVElfTElTVF9MT0NLIGFuZCBJRl9BRERSX0xPQ0sgb24gaWZwIG11c3QgYmUgaGVsZC4NCj4g ICAqLw0KPiAgc3RydWN0IGluX211bHRpICoNCj4gIGlubV9sb29rdXBfbG9ja2VkKHN0cnVjdCBp Zm5ldCAqaWZwLCBjb25zdCBzdHJ1Y3QgaW5fYWRkciBpbmEpDQo+IEBAIC0yNDAsNyArMzA5LDcg QEAgaW5tX2xvb2t1cF9sb2NrZWQoc3RydWN0IGlmbmV0ICppZnAsIGNvbnN0IHN0cnVjdCBpbl9h DQo+ICAJc3RydWN0IGlmbXVsdGlhZGRyICppZm1hOw0KPiAgCXN0cnVjdCBpbl9tdWx0aSAqaW5t Ow0KPiAgDQo+IC0JSU5fTVVMVElfTE9DS19BU1NFUlQoKTsNCj4gKwlJTl9NVUxUSV9MSVNUX0xP Q0tfQVNTRVJUKCk7DQo+ICAJSUZfQUREUl9MT0NLX0FTU0VSVChpZnApOw0KPiAgDQo+ICAJaW5t ID0gTlVMTDsNCj4gQEAgLTI2NCw3ICszMzMsNyBAQCBpbm1fbG9va3VwKHN0cnVjdCBpZm5ldCAq aWZwLCBjb25zdCBzdHJ1Y3QgaW5fYWRkciBpbmENCj4gIHsNCj4gIAlzdHJ1Y3QgaW5fbXVsdGkg KmlubTsNCj4gIA0KPiAtCUlOX01VTFRJX0xPQ0tfQVNTRVJUKCk7DQo+ICsJSU5fTVVMVElfTElT VF9MT0NLX0FTU0VSVCgpOw0KPiAgCUlGX0FERFJfUkxPQ0soaWZwKTsNCj4gIAlpbm0gPSBpbm1f bG9va3VwX2xvY2tlZChpZnAsIGluYSk7DQo+ICAJSUZfQUREUl9SVU5MT0NLKGlmcCk7DQo+IEBA IC00NTEsNyArNTIwLDcgQEAgaW5fZ2V0bXVsdGkoc3RydWN0IGlmbmV0ICppZnAsIGNvbnN0IHN0 cnVjdCBpbl9hZGRyICpnDQo+ICAJSU5fTVVMVElfTE9DS19BU1NFUlQoKTsNCj4gIA0KPiAgCWlp ID0gKHN0cnVjdCBpbl9pZmluZm8gKilpZnAtPmlmX2FmZGF0YVtBRl9JTkVUXTsNCj4gLQ0KPiAr CUlOX01VTFRJX0xJU1RfTE9DSygpOw0KPiAgCWlubSA9IGlubV9sb29rdXAoaWZwLCAqZ3JvdXAp Ow0KPiAgCWlmIChpbm0gIT0gTlVMTCkgew0KPiAgCQkvKg0KPiBAQCAtNDYwLDExICs1MjksMTMg QEAgaW5fZ2V0bXVsdGkoc3RydWN0IGlmbmV0ICppZnAsIGNvbnN0IHN0cnVjdCBpbl9hZGRyICpn DQo+ICAJCSAqLw0KPiAgCQlLQVNTRVJUKGlubS0+aW5tX3JlZmNvdW50ID49IDEsDQo+ICAJCSAg ICAoIiVzOiBiYWQgcmVmY291bnQgJWQiLCBfX2Z1bmNfXywgaW5tLT5pbm1fcmVmY291bnQpKTsN Cj4gLQkJKytpbm0tPmlubV9yZWZjb3VudDsNCj4gKwkJaW5tX2FjcXVpcmVfbG9ja2VkKGlubSk7 DQo+ICAJCSpwaW5tID0gaW5tOw0KPiAtCQlyZXR1cm4gKDApOw0KPiAgCX0NCj4gLQ0KPiArCUlO X01VTFRJX0xJU1RfVU5MT0NLKCk7DQo+ICsJaWYgKGlubSAhPSBOVUxMKQ0KPiArCQlyZXR1cm4g KDApOw0KPiArCQ0KPiAgCW1lbXNldCgmZ3NpbiwgMCwgc2l6ZW9mKGdzaW4pKTsNCj4gIAlnc2lu LnNpbl9mYW1pbHkgPSBBRl9JTkVUOw0KPiAgCWdzaW4uc2luX2xlbiA9IHNpemVvZihzdHJ1Y3Qg c29ja2FkZHJfaW4pOw0KPiBAQCAtNDc5LDYgKzU1MCw3IEBAIGluX2dldG11bHRpKHN0cnVjdCBp Zm5ldCAqaWZwLCBjb25zdCBzdHJ1Y3QgaW5fYWRkciAqZw0KPiAgCQlyZXR1cm4gKGVycm9yKTsN Cj4gIA0KPiAgCS8qIFhYWCBpZm1hX3Byb3Rvc3BlYyBtdXN0IGJlIGNvdmVyZWQgYnkgSUZfQURE Ul9MT0NLICovDQo+ICsJSU5fTVVMVElfTElTVF9MT0NLKCk7DQo+ICAJSUZfQUREUl9XTE9DSyhp ZnApOw0KPiAgDQo+ICAJLyoNCj4gQEAgLTUwNCwxMCArNTc2LDkgQEAgaW5fZ2V0bXVsdGkoc3Ry dWN0IGlmbmV0ICppZnAsIGNvbnN0IHN0cnVjdCBpbl9hZGRyICpnDQo+ICAJCQkgICAgX19mdW5j X18sIGlmbWEsIGlubSwgaW5ldF9udG9hX3IoKmdyb3VwLCBhZGRyYnVmKSk7DQo+ICAJCX0NCj4g ICNlbmRpZg0KPiAtCQkrK2lubS0+aW5tX3JlZmNvdW50Ow0KPiArCQlpbm1fYWNxdWlyZV9sb2Nr ZWQoaW5tKTsNCj4gIAkJKnBpbm0gPSBpbm07DQo+IC0JCUlGX0FERFJfV1VOTE9DSyhpZnApOw0K PiAtCQlyZXR1cm4gKDApOw0KPiArCQlnb3RvIG91dF9sb2NrZWQ7DQo+ICAJfQ0KPiAgDQo+ICAJ SUZfQUREUl9XTE9DS19BU1NFUlQoaWZwKTsNCj4gQEAgLTUyMiw2ICs1OTMsNyBAQCBpbl9nZXRt dWx0aShzdHJ1Y3QgaWZuZXQgKmlmcCwgY29uc3Qgc3RydWN0IGluX2FkZHIgKmcNCj4gIAlpbm0g PSBtYWxsb2Moc2l6ZW9mKCppbm0pLCBNX0lQTUFERFIsIE1fTk9XQUlUIHwgTV9aRVJPKTsNCj4g IAlpZiAoaW5tID09IE5VTEwpIHsNCj4gIAkJSUZfQUREUl9XVU5MT0NLKGlmcCk7DQo+ICsJCUlO X01VTFRJX0xJU1RfVU5MT0NLKCk7DQo+ICAJCWlmX2RlbG11bHRpX2lmbWEoaWZtYSk7DQo+ICAJ CXJldHVybiAoRU5PTUVNKTsNCj4gIAl9DQo+IEBAIC01MzksOCArNjExLDkgQEAgaW5fZ2V0bXVs dGkoc3RydWN0IGlmbmV0ICppZnAsIGNvbnN0IHN0cnVjdCBpbl9hZGRyICpnDQo+ICAJaWZtYS0+ aWZtYV9wcm90b3NwZWMgPSBpbm07DQo+ICANCj4gIAkqcGlubSA9IGlubTsNCj4gLQ0KPiArIG91 dF9sb2NrZWQ6DQo+ICAJSUZfQUREUl9XVU5MT0NLKGlmcCk7DQo+ICsJSU5fTVVMVElfTElTVF9V TkxPQ0soKTsNCj4gIAlyZXR1cm4gKDApOw0KPiAgfQ0KPiAgDQo+IEBAIC01NTAsMzYgKzYyMywy OSBAQCBpbl9nZXRtdWx0aShzdHJ1Y3QgaWZuZXQgKmlmcCwgY29uc3Qgc3RydWN0IGluX2FkZHIg KmcNCj4gICAqIElmIHRoZSByZWZjb3VudCBkcm9wcyB0byAwLCBmcmVlIHRoZSBpbl9tdWx0aSBy ZWNvcmQgYW5kDQo+ICAgKiBkZWxldGUgdGhlIHVuZGVybHlpbmcgbGluay1sYXllciBtZW1iZXJz aGlwLg0KPiAgICovDQo+IC12b2lkDQo+IC1pbm1fcmVsZWFzZV9sb2NrZWQoc3RydWN0IGluX211 bHRpICppbm0pDQo+ICtzdGF0aWMgdm9pZA0KPiAraW5tX3JlbGVhc2Uoc3RydWN0IGluX211bHRp ICppbm0pDQo+ICB7DQo+ICAJc3RydWN0IGlmbXVsdGlhZGRyICppZm1hOw0KPiArCXN0cnVjdCBp Zm5ldCAqaWZwOw0KPiAgDQo+IC0JSU5fTVVMVElfTE9DS19BU1NFUlQoKTsNCj4gLQ0KPiAgCUNU UjIoS1RSX0lHTVBWMywgIiVzOiByZWZjb3VudCBpcyAlZCIsIF9fZnVuY19fLCBpbm0tPmlubV9y ZWZjb3VudCk7DQo+IC0NCj4gLQlpZiAoLS1pbm0tPmlubV9yZWZjb3VudCA+IDApIHsNCj4gLQkJ Q1RSMihLVFJfSUdNUFYzLCAiJXM6IHJlZmNvdW50IGlzIG5vdyAlZCIsIF9fZnVuY19fLA0KPiAt CQkgICAgaW5tLT5pbm1fcmVmY291bnQpOw0KPiAtCQlyZXR1cm47DQo+IC0JfQ0KPiAtDQo+ICsJ TVBBU1MoaW5tLT5pbm1fcmVmY291bnQgPT0gMCk7DQo+ICAJQ1RSMihLVFJfSUdNUFYzLCAiJXM6 IGZyZWVpbmcgaW5tICVwIiwgX19mdW5jX18sIGlubSk7DQo+ICANCj4gIAlpZm1hID0gaW5tLT5p bm1faWZtYTsNCj4gKwlpZnAgPSBpbm0tPmlubV9pZnA7DQo+ICANCj4gIAkvKiBYWFggdGhpcyBh Y2Nlc3MgaXMgbm90IGNvdmVyZWQgYnkgSUZfQUREUl9MT0NLICovDQo+ICAJQ1RSMihLVFJfSUdN UFYzLCAiJXM6IHB1cmdpbmcgaWZtYSAlcCIsIF9fZnVuY19fLCBpZm1hKTsNCj4gLQlLQVNTRVJU KGlmbWEtPmlmbWFfcHJvdG9zcGVjID09IGlubSwNCj4gLQkgICAgKCIlczogaWZtYV9wcm90b3Nw ZWMgIT0gaW5tIiwgX19mdW5jX18pKTsNCj4gLQlpZm1hLT5pZm1hX3Byb3Rvc3BlYyA9IE5VTEw7 DQo+IC0NCj4gKwlpZiAoaWZwKQ0KPiArCQlDVVJWTkVUX1NFVChpZnAtPmlmX3ZuZXQpOw0KPiAg CWlubV9wdXJnZShpbm0pOw0KPiAtDQo+ICAJZnJlZShpbm0sIE1fSVBNQUREUik7DQo+ICANCj4g IAlpZl9kZWxtdWx0aV9pZm1hKGlmbWEpOw0KPiArCWlmIChpZnApDQo+ICsJCUNVUlZORVRfUkVT VE9SRSgpOw0KPiAgfQ0KPiAgDQo+ICAvKg0KPiBAQCAtNTkyLDcgKzY1OCw3IEBAIGlubV9jbGVh cl9yZWNvcmRlZChzdHJ1Y3QgaW5fbXVsdGkgKmlubSkNCj4gIHsNCj4gIAlzdHJ1Y3QgaXBfbXNv dXJjZQkqaW1zOw0KPiAgDQo+IC0JSU5fTVVMVElfTE9DS19BU1NFUlQoKTsNCj4gKwlJTl9NVUxU SV9MSVNUX0xPQ0tfQVNTRVJUKCk7DQo+ICANCj4gIAlSQl9GT1JFQUNIKGltcywgaXBfbXNvdXJj ZV90cmVlLCAmaW5tLT5pbm1fc3Jjcykgew0KPiAgCQlpZiAoaW1zLT5pbXNfc3RwKSB7DQo+IEBA IC02MzIsNyArNjk4LDcgQEAgaW5tX3JlY29yZF9zb3VyY2Uoc3RydWN0IGluX211bHRpICppbm0s IGNvbnN0IGluX2FkZHJfDQo+ICAJc3RydWN0IGlwX21zb3VyY2UJIGZpbmQ7DQo+ICAJc3RydWN0 IGlwX21zb3VyY2UJKmltcywgKm5pbXM7DQo+ICANCj4gLQlJTl9NVUxUSV9MT0NLX0FTU0VSVCgp Ow0KPiArCUlOX01VTFRJX0xJU1RfTE9DS19BU1NFUlQoKTsNCj4gIA0KPiAgCWZpbmQuaW1zX2hh ZGRyID0gbnRvaGwobmFkZHIpOw0KPiAgCWltcyA9IFJCX0ZJTkQoaXBfbXNvdXJjZV90cmVlLCAm aW5tLT5pbm1fc3JjcywgJmZpbmQpOw0KPiBAQCAtOTU5LDYgKzEwMjUsNyBAQCBpbm1fbWVyZ2Uo c3RydWN0IGluX211bHRpICppbm0sIC8qY29uc3QqLyBzdHJ1Y3QgaW5fbWYNCj4gIAlzY2hhbmdl ZCA9IDA7DQo+ICAJZXJyb3IgPSAwOw0KPiAgCW5zcmMxID0gbnNyYzAgPSAwOw0KPiArCUlOX01V TFRJX0xJU1RfTE9DS19BU1NFUlQoKTsNCj4gIA0KPiAgCS8qDQo+ICAJICogVXBkYXRlIHRoZSBz b3VyY2UgZmlsdGVycyBmaXJzdCwgYXMgdGhpcyBtYXkgZmFpbC4NCj4gQEAgLTExNjUsNiArMTIz Miw3IEBAIGluX2pvaW5ncm91cF9sb2NrZWQoc3RydWN0IGlmbmV0ICppZnAsIGNvbnN0IHN0cnVj dCBpbg0KPiAgCWludAkJCSBlcnJvcjsNCj4gIA0KPiAgCUlOX01VTFRJX0xPQ0tfQVNTRVJUKCk7 DQo+ICsJSU5fTVVMVElfTElTVF9VTkxPQ0tfQVNTRVJUKCk7DQo+ICANCj4gIAlDVFI0KEtUUl9J R01QVjMsICIlczogam9pbiAweCUwOHggb24gJXAoJXMpKSIsIF9fZnVuY19fLA0KPiAgCSAgICBu dG9obChnaW5hLT5zX2FkZHIpLCBpZnAsIGlmcC0+aWZfeG5hbWUpOw0KPiBAQCAtMTE4Niw3ICsx MjU0LDcgQEAgaW5fam9pbmdyb3VwX2xvY2tlZChzdHJ1Y3QgaWZuZXQgKmlmcCwgY29uc3Qgc3Ry dWN0IGluDQo+ICAJCUNUUjEoS1RSX0lHTVBWMywgIiVzOiBpbl9nZXRtdWx0aSgpIGZhaWx1cmUi LCBfX2Z1bmNfXyk7DQo+ICAJCXJldHVybiAoZXJyb3IpOw0KPiAgCX0NCj4gLQ0KPiArCUlOX01V TFRJX0xJU1RfTE9DSygpOw0KPiAgCUNUUjEoS1RSX0lHTVBWMywgIiVzOiBtZXJnZSBpbm0gc3Rh dGUiLCBfX2Z1bmNfXyk7DQo+ICAJZXJyb3IgPSBpbm1fbWVyZ2UoaW5tLCBpbWYpOw0KPiAgCWlm IChlcnJvcikgew0KPiBAQCAtMTIwMSwxMCArMTI2OSwxMiBAQCBpbl9qb2luZ3JvdXBfbG9ja2Vk KHN0cnVjdCBpZm5ldCAqaWZwLCBjb25zdCBzdHJ1Y3QgaW4NCj4gIAkJZ290byBvdXRfaW5tX3Jl bGVhc2U7DQo+ICAJfQ0KPiAgDQo+IC1vdXRfaW5tX3JlbGVhc2U6DQo+ICsgb3V0X2lubV9yZWxl YXNlOg0KPiArCUlOX01VTFRJX0xJU1RfVU5MT0NLKCk7DQo+ICAJaWYgKGVycm9yKSB7DQo+ICsN Cj4gIAkJQ1RSMihLVFJfSUdNUFYzLCAiJXM6IGRyb3BwaW5nIHJlZiBvbiAlcCIsIF9fZnVuY19f LCBpbm0pOw0KPiAtCQlpbm1fcmVsZWFzZV9sb2NrZWQoaW5tKTsNCj4gKwkJaW5tX3JlbGVhc2Vf ZGVmZXJyZWQoaW5tKTsNCj4gIAl9IGVsc2Ugew0KPiAgCQkqcGlubSA9IGlubTsNCj4gIAl9DQo+ IEBAIC0xMjQ5LDYgKzEzMTksNyBAQCBpbl9sZWF2ZWdyb3VwX2xvY2tlZChzdHJ1Y3QgaW5fbXVs dGkgKmlubSwgLypjb25zdCovIHMNCj4gIAllcnJvciA9IDA7DQo+ICANCj4gIAlJTl9NVUxUSV9M T0NLX0FTU0VSVCgpOw0KPiArCUlOX01VTFRJX0xJU1RfVU5MT0NLX0FTU0VSVCgpOw0KPiAgDQo+ ICAJQ1RSNShLVFJfSUdNUFYzLCAiJXM6IGxlYXZlIGlubSAlcCwgMHglMDh4LyVzLCBpbWYgJXAi LCBfX2Z1bmNfXywNCj4gIAkgICAgaW5tLCBudG9obChpbm0tPmlubV9hZGRyLnNfYWRkciksDQo+ IEBAIC0xMjcyLDE4ICsxMzQzLDIwIEBAIGluX2xlYXZlZ3JvdXBfbG9ja2VkKHN0cnVjdCBpbl9t dWx0aSAqaW5tLCAvKmNvbnN0Ki8gcw0KPiAgCSAqIHRoZSB0cmFuc2FjdGlvbiwgaXQgTVVTVCBO T1QgZmFpbC4NCj4gIAkgKi8NCj4gIAlDVFIxKEtUUl9JR01QVjMsICIlczogbWVyZ2UgaW5tIHN0 YXRlIiwgX19mdW5jX18pOw0KPiArCUlOX01VTFRJX0xJU1RfTE9DSygpOw0KPiAgCWVycm9yID0g aW5tX21lcmdlKGlubSwgaW1mKTsNCj4gIAlLQVNTRVJUKGVycm9yID09IDAsICgiJXM6IGZhaWxl ZCB0byBtZXJnZSBpbm0gc3RhdGUiLCBfX2Z1bmNfXykpOw0KPiAgDQo+ICAJQ1RSMShLVFJfSUdN UFYzLCAiJXM6IGRvaW5nIGlnbXAgZG93bmNhbGwiLCBfX2Z1bmNfXyk7DQo+ICAJQ1VSVk5FVF9T RVQoaW5tLT5pbm1faWZwLT5pZl92bmV0KTsNCj4gIAllcnJvciA9IGlnbXBfY2hhbmdlX3N0YXRl KGlubSk7DQo+ICsJaW5tX3JlbGVhc2VfZGVmZXJyZWQoaW5tKTsNCj4gKwlJTl9NVUxUSV9MSVNU X1VOTE9DSygpOw0KPiAgCUNVUlZORVRfUkVTVE9SRSgpOw0KPiAgCWlmIChlcnJvcikNCj4gIAkJ Q1RSMShLVFJfSUdNUFYzLCAiJXM6IGZhaWxlZCBpZ21wIGRvd25jYWxsIiwgX19mdW5jX18pOw0K PiAgDQo+ICAJQ1RSMihLVFJfSUdNUFYzLCAiJXM6IGRyb3BwaW5nIHJlZiBvbiAlcCIsIF9fZnVu Y19fLCBpbm0pOw0KPiAtCWlubV9yZWxlYXNlX2xvY2tlZChpbm0pOw0KPiAgDQo+ICAJcmV0dXJu IChlcnJvcik7DQo+ICB9DQo+IEBAIC0xMzE1LDE4ICsxMzg4LDYgQEAgaW5fYWRkbXVsdGkoc3Ry dWN0IGluX2FkZHIgKmFwLCBzdHJ1Y3QgaWZuZXQgKmlmcCkNCj4gIH0NCj4gIA0KPiAgLyoNCj4g LSAqIExlYXZlIGFuIElQdjQgbXVsdGljYXN0IGdyb3VwLCBhc3N1bWVkIHRvIGJlIGluIGV4Y2x1 c2l2ZSAoKixHKSBtb2RlLg0KPiAtICogVGhpcyBLUEkgaXMgZm9yIGxlZ2FjeSBrZXJuZWwgY29u c3VtZXJzIG9ubHkuDQo+IC0gKi8NCj4gDQo+ICoqKiBESUZGIE9VVFBVVCBUUlVOQ0FURUQgQVQg MTAwMCBMSU5FUyAqKioNCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18NCj4gc3ZuLXNyYy1oZWFkQGZyZWVic2Qub3JnIG1haWxpbmcgbGlzdA0KPiBodHRw czovL2xpc3RzLmZyZWVic2Qub3JnL21haWxtYW4vbGlzdGluZm8vc3ZuLXNyYy1oZWFkDQo+IFRv IHVuc3Vic2NyaWJlLCBzZW5kIGFueSBtYWlsIHRvICJzdm4tc3JjLWhlYWQtdW5zdWJzY3JpYmVA ZnJlZWJzZC5vcmciDQoNCg0KQWZ0ZXIgKGFyb3VuZCEpIHRoaXMgdXBkYXRlLCBzb21lIGJveGVz IHdpdGggaTM1MCBkdWFsIHBvcnQgTklDcyBpbW1lZGlhdGVseSBjcmFzaCB3aXRoDQpGYXRhbCB0 cmFwIDEyOiBwYWdlIGZhdWx0IGFuZCBzb21ldGhpbmcgd2l0aCANCg0KY3VycmVudCBwcm9jZXNz OiAoaXNjLXdvcmtlcjAwMDYpDQoNCi4uLi4NCg0KVGhvc2UgYm94ZXMgZG8gbm90IGhhdmUgZGVi dWdnaW5nIGtlcm5lbC4gVGhlIHN5bXB0b21icyBhcmUgdGhlIHNhbWUuIFNpbmdsZSB1c2VyIGtl cm5lbA0Kd29ya3MsIGJ1dCB0aGUgbW9tZW50IEkgcGVyZm9ybSAvZXRjL25ldHN0YXJ0IGFuZCBh bnkga2luZCBvZiBuZXQgdHJhZmZpYyBlc3RhYmxpc2hlcywNCnRoaXMgY3JhcCBiYWlscyBvdXQu DQoNCg0KLSAtLSANCk8uIEhhcnRtYW5uDQoNCkljaCB3aWRlcnNwcmVjaGUgZGVyIE51dHp1bmcg b2RlciDDnGJlcm1pdHRsdW5nIG1laW5lciBEYXRlbiBmw7xyDQpXZXJiZXp3ZWNrZSBvZGVyIGbD vHIgZGllIE1hcmt0LSBvZGVyIE1laW51bmdzZm9yc2NodW5nICjCpyAyOCBBYnMuIDQgQkRTRyku DQotLS0tLUJFR0lOIFBHUCBTSUdOQVRVUkUtLS0tLQ0KDQppTFVFQVJNS0FCMFdJUVFaVlpNekF0 d0MyVC84NlRyUzUyOGZ5RmhZbEFVQ1d1dGp0Z0FLQ1JEUzUyOGZ5RmhZDQpsQWt6QWY5UGhhRlR3 TmhRRDJ6Rjd4U0hKMndmdkx0b1VFalpsekdzdXNBQ3AxcGE3SkFmejBQeXYrbG0rWE5KDQp2TEVs cklmMUNtRHp1QTh5YmxaL3gvd09WU0prQWY5Qys1MERWRXRHcTVIL2JIU0ROd3ptcXJqOFlnQjdY cFNzDQpQTVJYYytJd0lhMUpnaTJ5TSs2VENTTlNzMU41YkVVaFU5Qmk4ZVh5NlkwRlNrQVplVitz DQo9UzBiQw0KLS0tLS1FTkQgUEdQIFNJR05BVFVSRS0tLS0tDQo=