From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: Re: [PATCH v9 12/27] xsplice: Implement support for applying/reverting/replacing patches. Date: Tue, 26 Apr 2016 23:39:52 -0400 Message-ID: <20160427033952.GF26540@localhost.localdomain> References: <1461598514-5440-1-git-send-email-konrad.wilk@oracle.com> <1461598514-5440-13-git-send-email-konrad.wilk@oracle.com> <571FA39102000078000E5FC1@prv-mh.provo.novell.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta14.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1avGLi-0000Rv-LA for xen-devel@lists.xenproject.org; Wed, 27 Apr 2016 03:41:14 +0000 Content-Disposition: inline In-Reply-To: <571FA39102000078000E5FC1@prv-mh.provo.novell.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Jan Beulich Cc: Kevin Tian , Stefano Stabellini , Keir Fraser , Suravee Suthikulpanit , andrew.cooper3@citrix.com, mpohlack@amazon.de, ross.lagerwall@citrix.com, Julien Grall , Jun Nakajima , sasha.levin@oracle.com, xen-devel@lists.xenproject.org, Boris Ostrovsky List-Id: xen-devel@lists.xenproject.org LiBzbmlwLi4KPiAKPiBUaGlua2luZyBhYm91dCBpdCBhZ2FpbiwgZXZlbiBtb3JlIHN0YWNrIGNv bnNlcnZpbmcgd291bGQgYmUgYQo+IGJpdG1hcC4uLgoKSGVoZWgKPiAKPiA+ICtzdGF0aWMgaW50 IGFwcGx5X3BheWxvYWQoc3RydWN0IHBheWxvYWQgKmRhdGEpCj4gPiArewo+ID4gKyAgICB1bnNp Z25lZCBpbnQgaTsKPiA+ICsKPiA+ICsgICAgcHJpbnRrKFhFTkxPR19JTkZPIFhTUExJQ0UgIiVz OiBBcHBseWluZyAldSBmdW5jdGlvbnNcbiIsCj4gPiArICAgICAgICAgICAgZGF0YS0+bmFtZSwg ZGF0YS0+bmZ1bmNzKTsKPiA+ICsKPiA+ICsgICAgYXJjaF94c3BsaWNlX3BhdGNoaW5nX2VudGVy KCk7Cj4gPiArCj4gPiArICAgIGZvciAoIGkgPSAwOyBpIDwgZGF0YS0+bmZ1bmNzOyBpKysgKQo+ ID4gKyAgICAgICAgYXJjaF94c3BsaWNlX2FwcGx5X2ptcCgmZGF0YS0+ZnVuY3NbaV0pOwo+ID4g Kwo+ID4gKyAgICBhcmNoX3hzcGxpY2VfcGF0Y2hpbmdfbGVhdmUoKTsKPiA+ICsKPiA+ICsgICAg bGlzdF9hZGRfdGFpbF9yY3UoJmRhdGEtPmFwcGxpZWRfbGlzdCwgJmFwcGxpZWRfbGlzdCk7Cj4g Cj4gTmVpdGhlciBpbiB0aGUgY29tbWVudCBlYXJsaWVyIG9uIG5vciBoZXJlIGl0IGJlY29tZXMg Y2xlYXIgdGhhdCB0aGlzCj4gaXMgbW9yZSBvZiBhbiBhYnVzZSB0aGFuIGEgdXNlIG9mIFJDVS4K CkkgYWRkZWQgbW9yZSBjb21tZW50cyBhbmQuLgo+IAo+ID4gK3N0cnVjdCB4c3BsaWNlX3BhdGNo X2Z1bmMgewo+ID4gKyAgICBjb25zdCBjaGFyICpuYW1lOyAgICAgICAvKiBOYW1lIG9mIGZ1bmN0 aW9uIHRvIGJlIHBhdGNoZWQuICovCj4gPiArICAgIHZvaWQgKm5ld19hZGRyOwo+ID4gKyAgICB2 b2lkICpvbGRfYWRkcjsKPiA+ICsgICAgdWludDMyX3QgbmV3X3NpemU7Cj4gPiArICAgIHVpbnQz Ml90IG9sZF9zaXplOwo+ID4gKyAgICB1aW50OF90IHZlcnNpb247ICAgICAgICAvKiBNVVNUIGJl IFhTUExJQ0VfUEFZTE9BRF9WRVJTSU9OLiAqLwo+ID4gKyAgICB1aW50OF90IG9wYXF1ZVszMV07 ICAgICAvKiBNVVNUIGJlIHplcm8gZmlsbGVkLiAqLwo+IAo+IEkgZG9uJ3Qgc2VlIHRoZSB6ZXJv IGZpbGxpbmcgYmVpbmcgYSByZXF1aXJlbWVudCwgbm9yIGl0IGJlaW5nIGVuZm9yY2VkLgoKLi4g cmVtb3ZlZCB0aGlzLgoKRnJvbSBhZGVhZGY4YmFiY2M1ZWY2ZDUxMmNkYzI4ODk5YjRkMWRlMzRj NjBlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBSb3NzIExhZ2Vyd2FsbCA8cm9zcy5s YWdlcndhbGxAY2l0cml4LmNvbT4KRGF0ZTogVGh1LCAyMSBBcHIgMjAxNiAwNjoxNDoyOSAtMDQw MApTdWJqZWN0OiBbUEFUQ0hdIHhzcGxpY2U6IEltcGxlbWVudCBzdXBwb3J0IGZvciBhcHBseWlu Zy9yZXZlcnRpbmcvcmVwbGFjaW5nCiBwYXRjaGVzLgpNSU1FLVZlcnNpb246IDEuMApDb250ZW50 LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKQ29udGVudC1UcmFuc2Zlci1FbmNvZGlu ZzogOGJpdAoKSW1wbGVtZW50IHN1cHBvcnQgZm9yIHRoZSBhcHBseSwgcmV2ZXJ0IGFuZCByZXBs YWNlIGFjdGlvbnMuCgpUbyBwZXJmb3JtIGFuZCBhY3Rpb24gb24gYSBwYXlsb2FkLCB0aGUgaHlw ZXJjYWxsIHNldHMgdXAgYSBkYXRhCnN0cnVjdHVyZSB0byBzY2hlZHVsZSB0aGUgd29yay4gIEEg aG9vayBpcyBhZGRlZCBpbiB0aGUgcmVzZXRfc3RhY2tfYW5kX2p1bXAKdG8gY2hlY2sgZm9yIHdv cmsgYW5kIGV4ZWN1dGUgaXQgaWYgbmVlZGVkIChzcGVjaWZpY2FsbHkgd2UgY2hlY2sgYW4KcGVy LWNwdSBmbGFnIHRvIG1ha2UgdGhpcyBhcyBxdWljayBhcyBwb3NzaWJsZSkuCgpJbiB0aGlzIHdh eSwgcGF0Y2hlcyBjYW4gYmUgYXBwbGllZCB3aXRoIGFsbCBDUFVzIGlkbGUgYW5kIHdpdGhvdXQK c3RhY2tzLiAgVGhlIGZpcnN0IENQVSB0byBydW4gY2hlY2tfZm9yX3hzcGxpY2Vfd29yaygpIGJl Y29tZXMgdGhlCm1hc3RlciBhbmQgdHJpZ2dlcnMgYSByZXNjaGVkdWxlIHNvZnRpcnEgdG8gdHJp Z2dlciBhbGwgdGhlIG90aGVyIENQVXMKdG8gZW50ZXIgY2hlY2tfZm9yX3hzcGxpY2Vfd29yaygp IHdpdGggbm8gc3RhY2suICBPbmNlIGFsbCBDUFVzCmhhdmUgcmVuZGV6dm91c2VkLCBhbGwgQ1BV cyBkaXNhYmxlIHRoZWlyIElSUXMgYW5kIE5NSXMgYXJlIGlnbm9yZWQuClRoZSBzeXN0ZW0gaXMg dGhlbiBxdWlzY2llbnQgYW5kIHRoZSBtYXN0ZXIgcGVyZm9ybXMgdGhlIGFjdGlvbi4KQWZ0ZXIg dGhpcywgYWxsIENQVXMgZW5hYmxlIElSUXMgYW5kIE5NSXMgYXJlIHJlLWVuYWJsZWQuCgpOb3Rl IHRoYXQgaXQgaXMgdW5zYWZlIHRvIHBhdGNoIGRvX25taSBhbmQgdGhlIHhTcGxpY2UgaW50ZXJu YWwgZnVuY3Rpb25zLgpQYXRjaGluZyBmdW5jdGlvbnMgb24gTk1JL01DRSBwYXRoIGlzIGxpYWJs ZSB0byBlbmQgaW4gZGlzYXN0ZXIgb24geDg2LgpUaGlzIGlzIG5vdCBhZGRyZXNzZWQgaW4gdGhp cyBwYXRjaCBhbmQgaXMgbWVudGlvbmVkIGluIHRoZQpkZXNpZ24gZG9jIGFzIGEgZnVydGhlciBU T0RPLgoKVGhlIGFjdGlvbiB0byBwZXJmb3JtIGlzIG9uZSBvZjoKLSBBUFBMWTogRm9yIGVhY2gg ZnVuY3Rpb24gaW4gdGhlIG1vZHVsZSwgc3RvcmUgdGhlIGZpcnN0IGFyY2gtc3BlY2lmaWMKICBu dW1iZXIgYnl0ZXMgb2YgdGhlIG9sZCBmdW5jdGlvbiBhbmQgcmVwbGFjZSBpdCB3aXRoIGEganVt cCB0byB0aGUKICBuZXcgZnVuY3Rpb24uIChvbiB4ODYgaXQgaXMgNSBieXRlcywgb24gQVJNIGl0 IHdpbGwgbGlrZXkgYmUgNCBieXRlcykuCi0gUkVWRVJUOiBDb3B5IHRoZSBwcmV2aW91c2x5IHN0 b3JlZCBieXRlcyBpbnRvIHRoZSBmaXJzdCBhcmNoLXNwZWNpZmljCiAgbnVtYmVyIG9mIGJ5dGVz IG9mIHRoZSBvbGQgZnVuY3Rpb24gKGFnYWluLCA1IGJ5dGVzIG9uIHg4NikuCi0gUkVQTEFDRTog UmV2ZXJ0IGVhY2ggYXBwbGllZCBtb2R1bGUgYW5kIHRoZW4gYXBwbHkgdGhlIG5ldyBtb2R1bGUu CgpUbyBwcmV2ZW50IGEgZGVhZGxvY2sgd2l0aCBhbnkgb3RoZXIgYmFycmllciBpbiB0aGUgc3lz dGVtLCB0aGUgbWFzdGVyCndpbGwgd2FpdCBmb3IgdXAgdG8gMzBtcyBiZWZvcmUgdGltaW5nIG91 dC4KTWVhc3VyZW1lbnRzIGZvdW5kIHRoYXQgdGhlIHBhdGNoIGFwcGxpY2F0aW9uIHRvIHRha2Ug YWJvdXQgMTAwIM68cyBvbiBhCjcyIENQVSBzeXN0ZW0sIHdoZXRoZXIgaWRsZSBvciBmdWxseSBs b2FkZWQuCgpTaWduZWQtb2ZmLWJ5OiBSb3NzIExhZ2Vyd2FsbCA8cm9zcy5sYWdlcndhbGxAY2l0 cml4LmNvbT4KU2lnbmVkLW9mZi1ieTogS29ucmFkIFJ6ZXN6dXRlayBXaWxrIDxrb25yYWQud2ls a0BvcmFjbGUuY29tPgpBY2tlZC1ieTogSnVsaWVuIEdyYWxsIDxqdWxpZW4uZ3JhbGxAYXJtLmNv bT4KCi0tCkNjOiBTdGVmYW5vIFN0YWJlbGxpbmkgPHNzdGFiZWxsaW5pQGtlcm5lbC5vcmc+CkNj OiBKdWxpZW4gR3JhbGwgPGp1bGllbi5ncmFsbEBhcm0uY29tPgpDYzogS2VpciBGcmFzZXIgPGtl aXJAeGVuLm9yZz4KQ2M6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KQ2M6IEFuZHJl dyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+CkNjOiBCb3JpcyBPc3Ryb3Zza3kg PGJvcmlzLm9zdHJvdnNreUBvcmFjbGUuY29tPgpDYzogU3VyYXZlZSBTdXRoaWt1bHBhbml0IDxz dXJhdmVlLnN1dGhpa3VscGFuaXRAYW1kLmNvbT4KQ2M6IEp1biBOYWthamltYSA8anVuLm5ha2Fq aW1hQGludGVsLmNvbT4KQ2M6IEtldmluIFRpYW4gPGtldmluLnRpYW5AaW50ZWwuY29tPgoKdjI6 IC0gUGx1Y2sgdGhlICdzdHJ1Y3QgeHNwbGljZV9wYXRjaF9mdW5jJyBpbiB0aGlzIHBhdGNoLgog ICAgLSBNb2RpZnkgY29kZSBwZXIgcmV2aWV3IGNvbW1lbnRzLgogICAgLSBBZGQgbW9yZSBkYXRh IGluIHRoZSBrZXlib2FyZCBoYW5kbGVyLgogICAgLSBSZWRvIHRoZSBwYXRjaGluZyBjb2RlLCBz cGxpdCBpdCBpbiBmdW5jdGlvbnMuCnYzOiAtIEFkZCByZXR1cm5fIG1hY3JvIGZvciBkZWJ1ZyBi dWlsZHMuCiAgICAtIE1vdmUgcy9wYXlsb2FkX2xpc3RfbG9jay9wYXlsb2FkX2xpc3QvIHRvIGVh cmxpZXIgcGF0Y2gKICAgIC0gUmVtb3ZlIGNvbnN0IGFuZCB1c2UgRUxGIHR5cGVzIGZvciB4c3Bs aWNlX3BhdGNoX2Z1bmMKICAgICAtIEFkZCBjaGVjayByb3V0aW5lIHRvIGRvIHNpbXBsZSBzYW5p dHkgY2hlY2tzIGZvciB2YXJpb3VzCiAgICAgIHNlY3Rpb25zLgogICAgLSBzLyVwL1BSSXg2NC8g YXMgQVJNIGJ1aWxkcyBjb21wbGFpbi4KICAgIC0gTW92ZSBjb2RlIGFyb3VuZC4gQWRkIG1vcmUg ZHByaW50ay4gQWRkIFhTUExJQ0UgaW4gZnJvbnQgb2YgYWxsCiAgICAgIHByaW50a3MvZHByaW50 ay4KICAgICAgUHV0IHRoZSBOTUlzIGJhY2sgaWYgd2UgZmFpbCBwYXRjaGluZy4KICAgICAgQWRk IHBlci1jcHUgdG8gbGVzc2VuIGNvbnRlbnRpb24gZm9yIGdsb2JhbCBzdHJ1Y3R1cmUuCiAgICAg IEV4dHJhY3QgZnJvbSB4c3BsaWNlX2RvX3NpbmdsZSBwYXRjaGluZyBjb2RlIGludG8geHNwbGlj ZV9kb19hY3Rpb24KICAgICAgU3F1YXNoIHhzcGxpY2VfZG9fc2luZ2xlIGFuZCBjaGVja19mb3Jf eHNwbGljZV93b3JrIHRvZ2V0aGVyIHRvCiAgICAgIGhhdmUgYWxsIHJlbmRlenZvdXMgaW4gb25l IHBsYWNlLgogICAgICBNYWRlIFhTUExJQ0VfQUNUSU9OX1JFUExBQ0Ugd29yayBhZ2FpbiAod3Jv bmcgbGlzdCBpdGVyYXRvcikKICAgICAgcy9maW5kX3NwZWNpYWxfc2VjdGlvbnMvcHJlcGFyZV9w YXlsb2FkLwogICAgICBVc2UgbGlzdF9kZWxfaW5pdCBhbmQgSU5JVF9MSVNUX0hFQUQgZm9yIGFw cGxpZWRfbGlzdAp2NDoKICAgLSBBZGQgY29tbWVudCwgYWRqdXN0IHNwYWNpbmcgZm9yICJUaW1l ZCBvdXQgb24gQ1BVIHNlbWFwaG9yZSIKICAgLSBBZGRlZCBDUjAuV1AgbWFuaXB1bGF0aW9ucyB3 aGVuIGFsdGVyaW5nIHRoZSAudGV4dCBvZiBoeXBlcnZpc29yLgogICAtIEFkZGVkIGZpeCBmcm9t IEFuZHJldyBmb3IgQ1IwLldQIG1hbmlwdWxhdGlvbi4KdjU6IC0gTWFkZSB4c3BsaWNlX3BhdGNo X2Z1bmMgdXNlIHVpbnRYWF90IGluc3RlYWQgb2YgRUxGXyB0eXBlcyB0byBlYXN5CiAgICAgIG1h a2luZyBpdCB3b3JrIHVuZGVyIEFSTSAoMzJiaXQpLiBBZGQgbW9yZSBCVUlMRC1CVUctT04gY2hl Y2tzLgogICAgLSBBZGQgbW9yZSBCVUlMRF9PTiBjaGVja3MuIFNwcmlua2xlIG5ld2xpbmVzLgp2 NjogUmViYXNlIG9uICJhcm0veDg2OiBBbHRlciBubWlfY2FsbGJhY2tfdCB0eXBlZGVmIgogICAt IERyb3AgdGhlIHJlY3Vyc2l2ZSBzcGlubG9jayB1c2FnZS4KICAgLSBNb3ZlIE5NSSBjYWxsYmFj a3MgaW4gYXJjaCBzcGVjaWZpYy4KICAgLSBGb2xkIHRoZSAnY2hlY2tfZm9yX3hzcGxpY2Vfd29y aycgaW4gcmVzZXRfc3RhY2tfYW5kX2p1bXAKICAgLSBBZGQgYXJjaCBzcGVjaWZpYyBjaGVjayBm b3IgLnhzcGxpY2UuZnVuY3MuCiAgIC0gU2VwZXJhdGUgZXh0ZXJuYWwgYW5kIGludGVybmFsIHN0 cnVjdHVyZSBvZiAueHNwbGljZS5mdW5jcy4KICAgLSBDaGFuZ2VkIHBlciBKYW4ncyByZXZpZXcK ICAgLSBNb2RpZmllZCB0aGUgLnhzcGxpY2UuZnVuY3MgY2hlY2tzCnY3OgogICAtIE1vZGlmaWVk IG9sZF9wdHIgdG8gdm9pZCogaW5zdGVhZCBvZiB1aW50OF90KgogICAtIE1vZGlmaWVkIHRoZSB4 c3BsaWNlX3BhdGNoX2Z1bmNfaW50ZXJuYWwgZm9yIEFSTTMyIHRvIGhhdmUgcGFkZGluZy4KICAg LSBVc2VkICNpZiBCSVRTX1BFUl9MT05HID09IDY0IGZvciB0aGUgeHNwbGljZV9wYXRjaF9mdW5j X2ludGVybmFsIGFsb25nCiAgICAgd2l0aCBpZm5kZWYgQ09ORklHX0FSTSBmb3IgdGhlIHVuZG8g KHdoaWNoIG1heSBiZSBkaWZmZXJlbnQgc2l6ZSBvbiBBUk02NCkKdjg6CiAgLSBBZGQgImlzIGVt cHR5IiBpZiBzcGVjaWFsIHNlY3Rpb25zIGFyZSBpbiBmYWN0IGVtcHR5LgogIC0gQWRkZWQgQW5k cmV3J3MgUmV2aWV3ZWQtYnk6CiAgLSBSZWJhc2Ugb24gdjcuMiBvZiAgeDg2L21tOiBJbnRyb2R1 Y2UgbW9kaWZ5X3hlbl9tYXBwaW5ncygpCiAgLSBDaGFuZ2Ugc29tZSBvZiBwcmludGsgdG8gZHBy aW50ayBhbmQgc29tZSBvZiB0aGUgZHByaW50ayB0byBwcmludGsuCiAgLSBNYWtlIHRoZSB4c3Bs aWNlX3BhdGNoX2Z1bmMgKGFuZCB0aGUgaW50ZXJuYWwpIHN0cnVjdHVyZSBoYXZlIHVpbnQzMl90 CiAgICAoaW5zdGVhZCBvZiB1aW50NjRfdCkgaWYgQklUU19QRVJfTE9ORz09MzIuIFRoaXMgbWFr ZXMgdGhlIHNpemUgYW5kCiAgICBvZmZzZXQgZGlmZmVyZW50IHNvIG5vdGUgdGhhdCBpbiB0aGUg ZGVzaWduIGFuZCBjb21tb24gY29kZS4KICAtIEFkZCAjdW5kZWYgQUNUSU9OCiAgLSBHdWFyZCBz dHJ1Y3QgeHNwbGljZV9wYXRjaF9mdW5jIGluIHN5c2N0bC5oIHdpdGggX19YRU5fXyBhcyB0b29s c3RhY2tzCiAgICB3aWxsIGZhaWwgdG8gY29tcGlsZS4gV2UgZG8gaGF2ZSBCSVRTX1BFUl9MT05H IGRlZmluZWQgaW4geGNfYml0b3BzLmggYnV0CiAgICB0aGF0IHdpbGwgZ28gYXdheSAoYW5kIGFs c28gdGhhdCBtYWNybyB1c2VzIHNpemVvZiBhbmQgdGhlIHByZS1wcm9jZXNzb3IKICAgIHdpbGwg Y2hva2Ugb24gdGhhdCkuCiAgLSBEcm9wcGVkIEp1bGllbidzIEFja2VkIGFzIEkgcmVwbGFjZWQg QklUU19QRVJfTE9ORy9DT05GSUdfQVJNXzMyLgogICAgKFN0ZWZhbm8gaXMgT0sgd2l0aCBpdCwg YnV0IHdvdWxkIHByZWZlciBCSVRTX1BFUl9MT05HLCBKYW4gZG9lcyBub3Qgd2FudAogICAgQklU U19QRVJfTE9ORykuCnY5OiBFeHBvc2UgdGhlIHN0cnVjdCB4c3BsaWNlX3BhdGNoX2Z1bmMgb2xk X2FkZHIgYW5kIG5ld19hZGRyIGFzIHZvaWQKICAgIGluc3RlYWQgb2YgdWludDMyX3Qgb3IgdWlu dDY0X3QuCiAgLSBBZGRlZCBKdWxpZW4nIEFjayBiYWNrLgogIC0gUmVuYW1lIHBhZCB0byBvcGFx dWUuCiAgLSBBZGRlZCBjb21tZW50IGluIGFpZGxlX2xvb3AuCiAgLSBTcXVhc2ggaW50ZXJuYWwg YW5kIHB1YmxpYyBvZiAneHNwbGljZV9wYXRjaF9mdW5jJwogIC0gRml4ZWQgcmVtYWluaWcgc2l6 ZW9mIHVzZS4KICAtIFJlbW92ZWQgcmVmZXJlbmNlIHRvIE1DRQogIC0gRml4ZWQgY29tbWVudCBz dHlsZXMuCiAgLSBVc2UgYm9vbF90IGluIGNoZWNrX3NwZWNpYWxfc2VjdGlvbnMKICAtIEFkZCBh ICNkZWZpbmUgZm9yIC54c3BsaWNlLmZ1bmNzLgogIC0gUmVtb3ZlIGZ1bGwgc3RvcHMgZnJvbSBw cmludGsKICAtIEZpeCB4c3BsaWNlX2RvX2FjdGlvbiBwZXIgSmFuJ3MgcHVuY2hsaXN0CiAgLSBV c2Ugc3Bpbl9sb2NrX3RyeSBpbiBrZXloYW5kbGVyCiAgLSBSZW1vdmUgbGVhZGluZyB1bmRlcnNj b3JlcyBmcm9tIF9fQ0hFQ0tfRk9SX1hTUExJQ0VfV09SSwogIC0gRG9uJ3QgZmFpbCBjb21waWxh dGlvbiBvbiBHQ0M1IC0gd2UgTVVTVCBoYXZlIHJjIHNldC4KICAtIERvbid0IGJhaWwgb3V0IGlm IGZpbmRpbmcgIXNoX3R5cGUgYXMgdGhvc2UgYXJlIGZvciAucmVsYSBvciAuZGVidWcKICAgIGFu ZCB3aGlsZSB3ZSBkb24ndCBuZWVkIHRvIGFsbG9jYXRlIGl0IChhcyB3ZSBoYWQgYWxyZWFkeSBk b25lCiAgICB0aGUgcmVsb2NhdGlvbiksIGRvIGNvbnRpbnVlLgogIC0gTWFrZSBhcHBsaWVkX2xp c3QgYmUgYW4gUkNVIHR5cGUgdG8gZ3VhcmQgYWdhaW5zdCBpbmZpbml0ZSBsb29wcwogICAgd2hl biBzZWFyY2hpbmcgdGhlIGFwcGxpZWRfbGlzdC4KICAtIERyb3BwZWQgdGhlIGlycV9zZW1hcGhv cmUgYW5kIGFyZSByZS11c2luZyB0aGUgc2VtYXBob3JlIGF0b21pYyB3aGVuCiAgICBDUFVzIGhh dmUgcmVuZGV6dm91c2VkIGFuZCBhcmUgcmVhZHkgdG8gZ28gaW4gSVJRIGRpc2FibGUgcGhhc2Uu CnYxMDogRHJvcCBSZXZpZXdlZC1ieQogIC0gVXNlIGJpdG1hcCBmb3IgaW4gY2hlY2tfc3BlY2lh bF9zZWN0aW9ucyB0byBjaGVjayBmb3Igc2VjdGlvbnMKICAgIGFwcGVhcmluZyB0d2ljZS4KICAt IEFkZCBjb21tZW50IGFib3V0IHVzIGFidXNpbmcgdGhlIGxpc3QgUkNVIGZvciBvdXIgc2FmZXR5 IHJlYXNvbnMuCiAgLSBBbmQgcmVtb3ZlIE1VU1QgY29tbWVudCBhYm91dCBvcGFxdWUgaGF2aW5n IHRvIGJlIHplcm8gZmlsbGVkLgotLS0KIHhlbi9hcmNoL2FybS94c3BsaWNlLmMgICAgICAgIHwg IDMzICsrKwogeGVuL2FyY2gveDg2L2RvbWFpbi5jICAgICAgICAgfCAgIDYgKwogeGVuL2FyY2gv eDg2L3hzcGxpY2UuYyAgICAgICAgfCAgNzYgKysrKysrKwogeGVuL2NvbW1vbi94c3BsaWNlLmMg ICAgICAgICAgfCA0ODAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKyst CiB4ZW4vaW5jbHVkZS9hc20teDg2L2N1cnJlbnQuaCB8ICAxMCArLQogeGVuL2luY2x1ZGUvcHVi bGljL3N5c2N0bC5oICAgfCAgMjAgKysKIHhlbi9pbmNsdWRlL3hlbi94c3BsaWNlLmggICAgIHwg IDIxICsrCiA3IGZpbGVzIGNoYW5nZWQsIDYzNCBpbnNlcnRpb25zKCspLCAxMiBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0veHNwbGljZS5jIGIveGVuL2FyY2gvYXJtL3hz cGxpY2UuYwppbmRleCA4Y2I3NzY3Li5kYjBkY2UyIDEwMDY0NAotLS0gYS94ZW4vYXJjaC9hcm0v eHNwbGljZS5jCisrKyBiL3hlbi9hcmNoL2FybS94c3BsaWNlLmMKQEAgLTcsNiArNywzOSBAQAog I2luY2x1ZGUgPHhlbi94c3BsaWNlX2VsZi5oPgogI2luY2x1ZGUgPHhlbi94c3BsaWNlLmg+CiAK K3ZvaWQgYXJjaF94c3BsaWNlX3BhdGNoaW5nX2VudGVyKHZvaWQpCit7Cit9CisKK3ZvaWQgYXJj aF94c3BsaWNlX3BhdGNoaW5nX2xlYXZlKHZvaWQpCit7Cit9CisKK2ludCBhcmNoX3hzcGxpY2Vf dmVyaWZ5X2Z1bmMoY29uc3Qgc3RydWN0IHhzcGxpY2VfcGF0Y2hfZnVuYyAqZnVuYykKK3sKKyAg ICByZXR1cm4gLUVOT1NZUzsKK30KKwordm9pZCBhcmNoX3hzcGxpY2VfYXBwbHlfam1wKHN0cnVj dCB4c3BsaWNlX3BhdGNoX2Z1bmMgKmZ1bmMpCit7Cit9CisKK3ZvaWQgYXJjaF94c3BsaWNlX3Jl dmVydF9qbXAoY29uc3Qgc3RydWN0IHhzcGxpY2VfcGF0Y2hfZnVuYyAqZnVuYykKK3sKK30KKwor dm9pZCBhcmNoX3hzcGxpY2VfcG9zdF9hY3Rpb24odm9pZCkKK3sKK30KKwordm9pZCBhcmNoX3hz cGxpY2VfbWFzayh2b2lkKQoreworfQorCit2b2lkIGFyY2hfeHNwbGljZV91bm1hc2sodm9pZCkK K3sKK30KKwogaW50IGFyY2hfeHNwbGljZV92ZXJpZnlfZWxmKGNvbnN0IHN0cnVjdCB4c3BsaWNl X2VsZiAqZWxmKQogewogICAgIHJldHVybiAtRU5PU1lTOwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gv eDg2L2RvbWFpbi5jIGIveGVuL2FyY2gveDg2L2RvbWFpbi5jCmluZGV4IGU5M2ZmMjAuLmQxM2Iy NzIgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9kb21haW4uYworKysgYi94ZW4vYXJjaC94ODYv ZG9tYWluLmMKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlIDx4ZW4vY3B1Lmg+CiAjaW5jbHVk ZSA8eGVuL3dhaXQuaD4KICNpbmNsdWRlIDx4ZW4vZ3Vlc3RfYWNjZXNzLmg+CisjaW5jbHVkZSA8 eGVuL3hzcGxpY2UuaD4KICNpbmNsdWRlIDxwdWJsaWMvc3lzY3RsLmg+CiAjaW5jbHVkZSA8cHVi bGljL2h2bS9odm1fdmNwdS5oPgogI2luY2x1ZGUgPGFzbS9yZWdzLmg+CkBAIC0xMjAsNiArMTIx LDExIEBAIHN0YXRpYyB2b2lkIGlkbGVfbG9vcCh2b2lkKQogICAgICAgICAoKnBtX2lkbGUpKCk7 CiAgICAgICAgIGRvX3Rhc2tsZXQoKTsKICAgICAgICAgZG9fc29mdGlycSgpOworICAgICAgICAv KgorICAgICAgICAgKiBXZSBNVVNUIGJlIGxhc3QgKG9yIGJlZm9yZSBwbV9pZGxlKS4gT3RoZXJ3 aXNlIGFmdGVyIHdlIGdldCB0aGUKKyAgICAgICAgICogc29mdGlycSB3ZSB3b3VsZCBleGVjdXRl IHBtX2lkbGUgKGFuZCBzbGVlcCkgYW5kIG5vdCBwYXRjaC4KKyAgICAgICAgICovCisgICAgICAg IGNoZWNrX2Zvcl94c3BsaWNlX3dvcmsoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL3hlbi9h cmNoL3g4Ni94c3BsaWNlLmMgYi94ZW4vYXJjaC94ODYveHNwbGljZS5jCmluZGV4IGU1MGNiYzAu LmZjMTMzOGUgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni94c3BsaWNlLmMKKysrIGIveGVuL2Fy Y2gveDg2L3hzcGxpY2UuYwpAQCAtMTEsNiArMTEsODIgQEAKICNpbmNsdWRlIDx4ZW4veHNwbGlj ZV9lbGYuaD4KICNpbmNsdWRlIDx4ZW4veHNwbGljZS5oPgogCisjaW5jbHVkZSA8YXNtL25taS5o PgorCisjZGVmaW5lIFBBVENIX0lOU05fU0laRSA1CisKK3ZvaWQgYXJjaF94c3BsaWNlX3BhdGNo aW5nX2VudGVyKHZvaWQpCit7CisgICAgLyogRGlzYWJsZSBXUCB0byBhbGxvdyBjaGFuZ2VzIHRv IHJlYWQtb25seSBwYWdlcy4gKi8KKyAgICB3cml0ZV9jcjAocmVhZF9jcjAoKSAmIH5YODZfQ1Iw X1dQKTsKK30KKwordm9pZCBhcmNoX3hzcGxpY2VfcGF0Y2hpbmdfbGVhdmUodm9pZCkKK3sKKyAg ICAvKiBSZWluc3RhdGUgV1AuICovCisgICAgd3JpdGVfY3IwKHJlYWRfY3IwKCkgfCBYODZfQ1Iw X1dQKTsKK30KKworaW50IGFyY2hfeHNwbGljZV92ZXJpZnlfZnVuYyhjb25zdCBzdHJ1Y3QgeHNw bGljZV9wYXRjaF9mdW5jICpmdW5jKQoreworICAgIC8qIE5vIE5PUCBwYXRjaGluZyB5ZXQuICov CisgICAgaWYgKCAhZnVuYy0+bmV3X3NpemUgKQorICAgICAgICByZXR1cm4gLUVPUE5PVFNVUFA7 CisKKyAgICBpZiAoIGZ1bmMtPm9sZF9zaXplIDwgUEFUQ0hfSU5TTl9TSVpFICkKKyAgICAgICAg cmV0dXJuIC1FSU5WQUw7CisKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBhcmNoX3hzcGxpY2Vf YXBwbHlfam1wKHN0cnVjdCB4c3BsaWNlX3BhdGNoX2Z1bmMgKmZ1bmMpCit7CisgICAgaW50MzJf dCB2YWw7CisgICAgdWludDhfdCAqb2xkX3B0cjsKKworICAgIEJVSUxEX0JVR19PTihQQVRDSF9J TlNOX1NJWkUgPiBzaXplb2YoZnVuYy0+b3BhcXVlKSk7CisgICAgQlVJTERfQlVHX09OKFBBVENI X0lOU05fU0laRSAhPSAoMSArIHNpemVvZih2YWwpKSk7CisKKyAgICBvbGRfcHRyID0gZnVuYy0+ b2xkX2FkZHI7CisgICAgbWVtY3B5KGZ1bmMtPm9wYXF1ZSwgb2xkX3B0ciwgUEFUQ0hfSU5TTl9T SVpFKTsKKworICAgICpvbGRfcHRyKysgPSAweGU5OyAvKiBSZWxhdGl2ZSBqdW1wICovCisgICAg dmFsID0gZnVuYy0+bmV3X2FkZHIgLSBmdW5jLT5vbGRfYWRkciAtIFBBVENIX0lOU05fU0laRTsK KyAgICBtZW1jcHkob2xkX3B0ciwgJnZhbCwgc2l6ZW9mKHZhbCkpOworfQorCit2b2lkIGFyY2hf eHNwbGljZV9yZXZlcnRfam1wKGNvbnN0IHN0cnVjdCB4c3BsaWNlX3BhdGNoX2Z1bmMgKmZ1bmMp Cit7CisgICAgbWVtY3B5KGZ1bmMtPm9sZF9hZGRyLCBmdW5jLT5vcGFxdWUsIFBBVENIX0lOU05f U0laRSk7Cit9CisKKy8qIFNlcmlhbGlzZSB0aGUgQ1BVIHBpcGVsaW5lLiAqLwordm9pZCBhcmNo X3hzcGxpY2VfcG9zdF9hY3Rpb24odm9pZCkKK3sKKyAgICBjcHVpZF9lYXgoMCk7Cit9CisKK3N0 YXRpYyBubWlfY2FsbGJhY2tfdCAqc2F2ZWRfbm1pX2NhbGxiYWNrOworLyoKKyAqIE5vdGUgdGhh dCBiZWNhdXNlIG9mIHRoaXMgTk9QIGNvZGUgdGhlIGRvX25taSBpcyBub3Qgc2FmZWx5IHBhdGNo YWJsZS4KKyAqIEFsc28gaWYgd2UgZG8gcmVjZWl2ZSAncmVhbCcgTk1JcyB3ZSBoYXZlIGxvc3Qg dGhlbS4KKyAqLworc3RhdGljIGludCBtYXNrX25taV9jYWxsYmFjayhjb25zdCBzdHJ1Y3QgY3B1 X3VzZXJfcmVncyAqcmVncywgaW50IGNwdSkKK3sKKyAgICAvKiBUT0RPOiBIYW5kbGUgbWlzc2lu ZyBOTUkvTUNFLiovCisgICAgcmV0dXJuIDE7Cit9CisKK3ZvaWQgYXJjaF94c3BsaWNlX21hc2so dm9pZCkKK3sKKyAgICBzYXZlZF9ubWlfY2FsbGJhY2sgPSBzZXRfbm1pX2NhbGxiYWNrKG1hc2tf bm1pX2NhbGxiYWNrKTsKK30KKwordm9pZCBhcmNoX3hzcGxpY2VfdW5tYXNrKHZvaWQpCit7Cisg ICAgc2V0X25taV9jYWxsYmFjayhzYXZlZF9ubWlfY2FsbGJhY2spOworfQorCiBpbnQgYXJjaF94 c3BsaWNlX3ZlcmlmeV9lbGYoY29uc3Qgc3RydWN0IHhzcGxpY2VfZWxmICplbGYpCiB7CiAKZGlm ZiAtLWdpdCBhL3hlbi9jb21tb24veHNwbGljZS5jIGIveGVuL2NvbW1vbi94c3BsaWNlLmMKaW5k ZXggM2YzYWFjYy4uNmQ5NDAyMyAxMDA2NDQKLS0tIGEveGVuL2NvbW1vbi94c3BsaWNlLmMKKysr IGIveGVuL2NvbW1vbi94c3BsaWNlLmMKQEAgLTMsNiArMyw3IEBACiAgKgogICovCiAKKyNpbmNs dWRlIDx4ZW4vY3B1Lmg+CiAjaW5jbHVkZSA8eGVuL2Vyci5oPgogI2luY2x1ZGUgPHhlbi9ndWVz dF9hY2Nlc3MuaD4KICNpbmNsdWRlIDx4ZW4va2V5aGFuZGxlci5oPgpAQCAtMTEsMTggKzEyLDMw IEBACiAjaW5jbHVkZSA8eGVuL21tLmg+CiAjaW5jbHVkZSA8eGVuL3NjaGVkLmg+CiAjaW5jbHVk ZSA8eGVuL3NtcC5oPgorI2luY2x1ZGUgPHhlbi9zb2Z0aXJxLmg+CiAjaW5jbHVkZSA8eGVuL3Nw aW5sb2NrLmg+CiAjaW5jbHVkZSA8eGVuL3ZtYXAuaD4KKyNpbmNsdWRlIDx4ZW4vd2FpdC5oPgog I2luY2x1ZGUgPHhlbi94c3BsaWNlX2VsZi5oPgogI2luY2x1ZGUgPHhlbi94c3BsaWNlLmg+CiAK ICNpbmNsdWRlIDxhc20vZXZlbnQuaD4KLSNpbmNsdWRlIDxwdWJsaWMvc3lzY3RsLmg+CiAKLS8q IFByb3RlY3RzIGFnYWluc3QgcGF5bG9hZF9saXN0IG9wZXJhdGlvbnMuICovCisvKgorICogUHJv dGVjdHMgYWdhaW5zdCBwYXlsb2FkX2xpc3Qgb3BlcmF0aW9ucyBhbmQgYWxzbyBhbGxvd3Mgb25s eSBvbmUKKyAqIGNhbGxlciBpbiBzY2hlZHVsZV93b3JrLgorICovCiBzdGF0aWMgREVGSU5FX1NQ SU5MT0NLKHBheWxvYWRfbG9jayk7CiBzdGF0aWMgTElTVF9IRUFEKHBheWxvYWRfbGlzdCk7CiAK Ky8qCisgKiBQYXRjaGVzIHdoaWNoIGhhdmUgYmVlbiBhcHBsaWVkLiBOZWVkIFJDVSBpbiBjYXNl IHdlIGNyYXNoIChhbmQgdGhlbgorICogdHJhcHMgY29kZSB3b3VsZCBpdGVyYXRlIHZpYSBhcHBs aWVkX2xpc3QpIHdoZW4gYWRkaW5nIGVudHJpZXMgb24gdGhlIGxpc3QuCisgKgorICogTm90ZTog VGhlcmUgYXJlIG5vICdyY3VfYXBwbGllZF9sb2NrJyBhcyB3ZSBkb24ndCBpdGVyYXRlIHlldCB0 aGUgbGlzdC4KKyAqLworc3RhdGljIExJU1RfSEVBRChhcHBsaWVkX2xpc3QpOworCiBzdGF0aWMg dW5zaWduZWQgaW50IHBheWxvYWRfY250Owogc3RhdGljIHVuc2lnbmVkIGludCBwYXlsb2FkX3Zl cnNpb24gPSAxOwogCkBAIC0zNyw5ICs1MCwzNSBAQCBzdHJ1Y3QgcGF5bG9hZCB7CiAgICAgY29u c3Qgdm9pZCAqcm9fYWRkcjsgICAgICAgICAgICAgICAgIC8qIFZpcnR1YWwgYWRkcmVzcyBvZiAu cm9kYXRhLiAqLwogICAgIHNpemVfdCByb19zaXplOyAgICAgICAgICAgICAgICAgICAgICAvKiAu LiBhbmQgaXRzIHNpemUgKGlmIGFueSkuICovCiAgICAgdW5zaWduZWQgaW50IHBhZ2VzOyAgICAg ICAgICAgICAgICAgIC8qIFRvdGFsIHBhZ2VzIGZvciBbdGV4dCxydyxyb11fYWRkciAqLworICAg IHN0cnVjdCBsaXN0X2hlYWQgYXBwbGllZF9saXN0OyAgICAgICAvKiBMaW5rZWQgdG8gJ2FwcGxp ZWRfbGlzdCcuICovCisgICAgc3RydWN0IHhzcGxpY2VfcGF0Y2hfZnVuYyAqZnVuY3M7ICAgIC8q IFRoZSBhcnJheSBvZiBmdW5jdGlvbnMgdG8gcGF0Y2guICovCisgICAgdW5zaWduZWQgaW50IG5m dW5jczsgICAgICAgICAgICAgICAgIC8qIE5yIG9mIGZ1bmN0aW9ucyB0byBwYXRjaC4gKi8KICAg ICBjaGFyIG5hbWVbWEVOX1hTUExJQ0VfTkFNRV9TSVpFXTsgICAgLyogTmFtZSBvZiBpdC4gKi8K IH07CiAKKy8qIERlZmluZXMgYW4gb3V0c3RhbmRpbmcgcGF0Y2hpbmcgYWN0aW9uLiAqLworc3Ry dWN0IHhzcGxpY2Vfd29yaworeworICAgIGF0b21pY190IHNlbWFwaG9yZTsgICAgICAgICAgLyog VXNlZCB0byByZW5kZXp2b3VzIENQVXMgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNoZWNrX2Zvcl94c3BsaWNlX3dvcmsuICovCisgICAgdWludDMyX3QgdGltZW91dDsg ICAgICAgICAgICAvKiBUaW1lb3V0IHRvIGRvIHRoZSBvcGVyYXRpb24uICovCisgICAgc3RydWN0 IHBheWxvYWQgKmRhdGE7ICAgICAgICAvKiBUaGUgcGF5bG9hZCBvbiB3aGljaCB0byBhY3QuICov CisgICAgdm9sYXRpbGUgYm9vbF90IGRvX3dvcms7ICAgICAvKiBTaWduYWxzIHdvcmsgdG8gZG8u ICovCisgICAgdm9sYXRpbGUgYm9vbF90IHJlYWR5OyAgICAgICAvKiBTaWduYWxzIGFsbCBDUFVz IHN5bmNocm9uaXplZC4gKi8KKyAgICB1bnNpZ25lZCBpbnQgY21kOyAgICAgICAgICAgIC8qIEFj dGlvbiByZXF1ZXN0OiBYU1BMSUNFX0FDVElPTl8qICovCit9OworCisvKiBUaGVyZSBjYW4gYmUg b25seSBvbmUgb3V0c3RhbmRpbmcgcGF0Y2hpbmcgYWN0aW9uLiAqLworc3RhdGljIHN0cnVjdCB4 c3BsaWNlX3dvcmsgeHNwbGljZV93b3JrOworCisvKgorICogSW5kaWNhdGUgd2hldGhlciB0aGUg Q1BVIG5lZWRzIHRvIGNvbnN1bHQgeHNwbGljZV93b3JrIHN0cnVjdHVyZS4KKyAqIFdlIHdhbnQg YW4gcGVyLWNwdSBkYXRhIHN0cnVjdHVyZSBvdGhlcndpc2UgdGhlIGNoZWNrX2Zvcl94c3BsaWNl X3dvcmsKKyAqIHdvdWxkIGhhbW1lciBhIGdsb2JhbCB4c3BsaWNlX3dvcmsgc3RydWN0dXJlIG9u IGV2ZXJ5IGd1ZXN0IFZNRVhJVC4KKyAqIEhhdmluZyBhbiBwZXItY3B1IGxlc3NlbnMgdGhlIGxv YWQuCisgKi8KK3N0YXRpYyBERUZJTkVfUEVSX0NQVShib29sX3QsIHdvcmtfdG9fZG8pOworCiBz dGF0aWMgaW50IGdldF9uYW1lKGNvbnN0IHhlbl94c3BsaWNlX25hbWVfdCAqbmFtZSwgY2hhciAq bikKIHsKICAgICBpZiAoICFuYW1lLT5zaXplIHx8IG5hbWUtPnNpemUgPiBYRU5fWFNQTElDRV9O QU1FX1NJWkUgKQpAQCAtMjY4LDYgKzMwNyw5MSBAQCBzdGF0aWMgaW50IHNlY3VyZV9wYXlsb2Fk KHN0cnVjdCBwYXlsb2FkICpwYXlsb2FkLCBzdHJ1Y3QgeHNwbGljZV9lbGYgKmVsZikKICAgICBy ZXR1cm4gcmM7CiB9CiAKK3N0YXRpYyBpbnQgY2hlY2tfc3BlY2lhbF9zZWN0aW9ucyhjb25zdCBz dHJ1Y3QgeHNwbGljZV9lbGYgKmVsZikKK3sKKyAgICB1bnNpZ25lZCBpbnQgaTsKKyAgICBzdGF0 aWMgY29uc3QgY2hhciAqY29uc3QgbmFtZXNbXSA9IHsgRUxGX1hTUExJQ0VfRlVOQyB9OworICAg IERFQ0xBUkVfQklUTUFQKGNvdW50LCBBUlJBWV9TSVpFKG5hbWVzKSkgPSB7IDAgfTsKKworICAg IGZvciAoIGkgPSAwOyBpIDwgQVJSQVlfU0laRShuYW1lcyk7IGkrKyApCisgICAgeworICAgICAg ICBjb25zdCBzdHJ1Y3QgeHNwbGljZV9lbGZfc2VjICpzZWM7CisKKyAgICAgICAgc2VjID0geHNw bGljZV9lbGZfc2VjX2J5X25hbWUoZWxmLCBuYW1lc1tpXSk7CisgICAgICAgIGlmICggIXNlYyAp CisgICAgICAgIHsKKyAgICAgICAgICAgIGRwcmludGsoWEVOTE9HX0VSUiwgWFNQTElDRSAiJXM6 ICVzIGlzIG1pc3NpbmchXG4iLAorICAgICAgICAgICAgICAgICAgICBlbGYtPm5hbWUsIG5hbWVz W2ldKTsKKyAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOworICAgICAgICB9CisKKyAgICAgICAg aWYgKCAhc2VjLT5zZWMtPnNoX3NpemUgKQorICAgICAgICB7CisgICAgICAgICAgICBkcHJpbnRr KFhFTkxPR19FUlIsIFhTUExJQ0UgIiVzOiAlcyBpcyBlbXB0eSFcbiIsCisgICAgICAgICAgICAg ICAgICAgIGVsZi0+bmFtZSwgbmFtZXNbaV0pOworICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7 CisgICAgICAgIH0KKworICAgICAgICBpZiAoIHRlc3RfYml0KGksIGNvdW50KSApCisgICAgICAg IHsKKyAgICAgICAgICAgIGRwcmludGsoWEVOTE9HX0VSUiwgWFNQTElDRSAiJXM6ICVzIHdhcyBz ZWVuIG1vcmUgdGhhbiBvbmNlIVxuIiwKKyAgICAgICAgICAgICAgICAgICAgZWxmLT5uYW1lLCBu YW1lc1tpXSk7CisgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICAgICAgfQorCisgICAg ICAgIF9fc2V0X2JpdChpLCBjb3VudCk7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK3N0 YXRpYyBpbnQgcHJlcGFyZV9wYXlsb2FkKHN0cnVjdCBwYXlsb2FkICpwYXlsb2FkLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHhzcGxpY2VfZWxmICplbGYpCit7CisgICAgY29u c3Qgc3RydWN0IHhzcGxpY2VfZWxmX3NlYyAqc2VjOworICAgIHVuc2lnbmVkIGludCBpOworICAg IHN0cnVjdCB4c3BsaWNlX3BhdGNoX2Z1bmMgKmY7CisKKyAgICBzZWMgPSB4c3BsaWNlX2VsZl9z ZWNfYnlfbmFtZShlbGYsIEVMRl9YU1BMSUNFX0ZVTkMpOworICAgIEFTU0VSVChzZWMpOworICAg IGlmICggc2VjLT5zZWMtPnNoX3NpemUgJSBzaXplb2YoKnBheWxvYWQtPmZ1bmNzKSApCisgICAg eworICAgICAgICBkcHJpbnRrKFhFTkxPR19FUlIsIFhTUExJQ0UgIiVzOiBXcm9uZyBzaXplIG9m ICJFTEZfWFNQTElDRV9GVU5DIiFcbiIsCisgICAgICAgICAgICAgICAgZWxmLT5uYW1lKTsKKyAg ICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAgfQorCisgICAgcGF5bG9hZC0+ZnVuY3MgPSBzZWMt PmxvYWRfYWRkcjsKKyAgICBwYXlsb2FkLT5uZnVuY3MgPSBzZWMtPnNlYy0+c2hfc2l6ZSAvIHNp emVvZigqcGF5bG9hZC0+ZnVuY3MpOworCisgICAgZm9yICggaSA9IDA7IGkgPCBwYXlsb2FkLT5u ZnVuY3M7IGkrKyApCisgICAgeworICAgICAgICBpbnQgcmM7CisKKyAgICAgICAgZiA9ICYocGF5 bG9hZC0+ZnVuY3NbaV0pOworCisgICAgICAgIGlmICggZi0+dmVyc2lvbiAhPSBYU1BMSUNFX1BB WUxPQURfVkVSU0lPTiApCisgICAgICAgIHsKKyAgICAgICAgICAgIGRwcmludGsoWEVOTE9HX0VS UiwgWFNQTElDRSAiJXM6IFdyb25nIHZlcnNpb24gKCV1KS4gRXhwZWN0ZWQgJWQhXG4iLAorICAg ICAgICAgICAgICAgICAgICBlbGYtPm5hbWUsIGYtPnZlcnNpb24sIFhTUExJQ0VfUEFZTE9BRF9W RVJTSU9OKTsKKyAgICAgICAgICAgIHJldHVybiAtRU9QTk9UU1VQUDsKKyAgICAgICAgfQorCisg ICAgICAgIGlmICggIWYtPm5ld19hZGRyIHx8ICFmLT5uZXdfc2l6ZSApCisgICAgICAgIHsKKyAg ICAgICAgICAgIGRwcmludGsoWEVOTE9HX0VSUiwgWFNQTElDRSAiJXM6IEFkZHJlc3Mgb3Igc2l6 ZSBmaWVsZHMgYXJlIHplcm8hXG4iLAorICAgICAgICAgICAgICAgICAgICBlbGYtPm5hbWUpOwor ICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAgICAgIH0KKworICAgICAgICByYyA9IGFy Y2hfeHNwbGljZV92ZXJpZnlfZnVuYyhmKTsKKyAgICAgICAgaWYgKCByYyApCisgICAgICAgICAg ICByZXR1cm4gcmM7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKIHN0YXRpYyB2b2lkIGZy ZWVfcGF5bG9hZChzdHJ1Y3QgcGF5bG9hZCAqZGF0YSkKIHsKICAgICBBU1NFUlQoc3Bpbl9pc19s b2NrZWQoJnBheWxvYWRfbG9jaykpOwpAQCAtMjk5LDYgKzQyMywxNCBAQCBzdGF0aWMgaW50IGxv YWRfcGF5bG9hZF9kYXRhKHN0cnVjdCBwYXlsb2FkICpwYXlsb2FkLCB2b2lkICpyYXcsIHNpemVf dCBsZW4pCiAgICAgaWYgKCByYyApCiAgICAgICAgIGdvdG8gb3V0OwogCisgICAgcmMgPSBjaGVj a19zcGVjaWFsX3NlY3Rpb25zKCZlbGYpOworICAgIGlmICggcmMgKQorICAgICAgICBnb3RvIG91 dDsKKworICAgIHJjID0gcHJlcGFyZV9wYXlsb2FkKHBheWxvYWQsICZlbGYpOworICAgIGlmICgg cmMgKQorICAgICAgICBnb3RvIG91dDsKKwogICAgIHJjID0gc2VjdXJlX3BheWxvYWQocGF5bG9h ZCwgJmVsZik7CiAKICBvdXQ6CkBAIC0zNTQsNiArNDg2LDcgQEAgc3RhdGljIGludCB4c3BsaWNl X3VwbG9hZCh4ZW5fc3lzY3RsX3hzcGxpY2VfdXBsb2FkX3QgKnVwbG9hZCkKIAogICAgIGRhdGEt PnN0YXRlID0gWFNQTElDRV9TVEFURV9DSEVDS0VEOwogICAgIElOSVRfTElTVF9IRUFEKCZkYXRh LT5saXN0KTsKKyAgICBJTklUX0xJU1RfSEVBRCgmZGF0YS0+YXBwbGllZF9saXN0KTsKIAogICAg IGxpc3RfYWRkX3RhaWwoJmRhdGEtPmxpc3QsICZwYXlsb2FkX2xpc3QpOwogICAgIHBheWxvYWRf Y250Kys7CkBAIC00NjQsNiArNTk3LDMxMyBAQCBzdGF0aWMgaW50IHhzcGxpY2VfbGlzdCh4ZW5f c3lzY3RsX3hzcGxpY2VfbGlzdF90ICpsaXN0KQogICAgIHJldHVybiByYyA/IDogaWR4OwogfQog CisvKgorICogVGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgZ2V0IHRoZSBDUFVzIGludG8gYW4gYXBw cm9wcmlhdGUgc3RhdGUgYW5kCisgKiBhcHBseSAob3IgcmV2ZXJ0KSBlYWNoIG9mIHRoZSBwYXls b2FkJ3MgZnVuY3Rpb25zLiBUaGlzIGlzIG5lZWRlZAorICogZm9yIFhFTl9TWVNDVExfWFNQTElD RV9BQ1RJT04gb3BlcmF0aW9uIChzZWUgeHNwbGljZV9hY3Rpb24pLgorICovCisKK3N0YXRpYyBp bnQgYXBwbHlfcGF5bG9hZChzdHJ1Y3QgcGF5bG9hZCAqZGF0YSkKK3sKKyAgICB1bnNpZ25lZCBp bnQgaTsKKworICAgIHByaW50ayhYRU5MT0dfSU5GTyBYU1BMSUNFICIlczogQXBwbHlpbmcgJXUg ZnVuY3Rpb25zXG4iLAorICAgICAgICAgICAgZGF0YS0+bmFtZSwgZGF0YS0+bmZ1bmNzKTsKKwor ICAgIGFyY2hfeHNwbGljZV9wYXRjaGluZ19lbnRlcigpOworCisgICAgZm9yICggaSA9IDA7IGkg PCBkYXRhLT5uZnVuY3M7IGkrKyApCisgICAgICAgIGFyY2hfeHNwbGljZV9hcHBseV9qbXAoJmRh dGEtPmZ1bmNzW2ldKTsKKworICAgIGFyY2hfeHNwbGljZV9wYXRjaGluZ19sZWF2ZSgpOworCisg ICAgLyoKKyAgICAgKiBXZSBuZWVkIFJDVSB2YXJpYW50ICh3aGljaCBoYXMgYmFycmllcnMpIGlu IGNhc2Ugd2UgY3Jhc2ggaGVyZS4KKyAgICAgKiBUaGUgYXBwbGllZF9saXN0IGlzIGl0ZXJhdGVk IGJ5IHRoZSB0cmFwIGNvZGUuCisgICAgICovCisgICAgbGlzdF9hZGRfdGFpbF9yY3UoJmRhdGEt PmFwcGxpZWRfbGlzdCwgJmFwcGxpZWRfbGlzdCk7CisKKyAgICByZXR1cm4gMDsKK30KKworc3Rh dGljIGludCByZXZlcnRfcGF5bG9hZChzdHJ1Y3QgcGF5bG9hZCAqZGF0YSkKK3sKKyAgICB1bnNp Z25lZCBpbnQgaTsKKworICAgIHByaW50ayhYRU5MT0dfSU5GTyBYU1BMSUNFICIlczogUmV2ZXJ0 aW5nXG4iLCBkYXRhLT5uYW1lKTsKKworICAgIGFyY2hfeHNwbGljZV9wYXRjaGluZ19lbnRlcigp OworCisgICAgZm9yICggaSA9IDA7IGkgPCBkYXRhLT5uZnVuY3M7IGkrKyApCisgICAgICAgIGFy Y2hfeHNwbGljZV9yZXZlcnRfam1wKCZkYXRhLT5mdW5jc1tpXSk7CisKKyAgICBhcmNoX3hzcGxp Y2VfcGF0Y2hpbmdfbGVhdmUoKTsKKworICAgIC8qCisgICAgICogV2UgbmVlZCBSQ1UgdmFyaWFu dCAod2hpY2ggaGFzIGJhcnJpZXJzKSBpbiBjYXNlIHdlIGNyYXNoIGhlcmUuCisgICAgICogVGhl IGFwcGxpZWRfbGlzdCBpcyBpdGVyYXRlZCBieSB0aGUgdHJhcCBjb2RlLgorICAgICAqLworICAg IGxpc3RfZGVsX3JjdSgmZGF0YS0+YXBwbGllZF9saXN0KTsKKworICAgIHJldHVybiAwOworfQor CisvKgorICogVGhpcyBmdW5jdGlvbiBpcyBleGVjdXRlZCBoYXZpbmcgYWxsIG90aGVyIENQVXMg d2l0aCBubyBkZWVwIHN0YWNrICh3ZSBtYXkKKyAqIGhhdmUgY3B1X2lkbGUgb24gaXQpIGFuZCBJ UlFzIGRpc2FibGVkLgorICovCitzdGF0aWMgdm9pZCB4c3BsaWNlX2RvX2FjdGlvbih2b2lkKQor eworICAgIGludCByYzsKKyAgICBzdHJ1Y3QgcGF5bG9hZCAqZGF0YSwgKm90aGVyLCAqdG1wOwor CisgICAgZGF0YSA9IHhzcGxpY2Vfd29yay5kYXRhOworICAgIC8qCisgICAgICogVGhpcyBmdW5j dGlvbiBhbmQgdGhlIHRyYW5zaXRpb24gZnJvbSBhc20gdG8gQyBjb2RlIHNob3VsZCBiZSB0aGUg b25seQorICAgICAqIG9uZSBvbiBhbnkgc3RhY2suIE5vIG5lZWQgdG8gbG9jayB0aGUgcGF5bG9h ZCBsaXN0IG9yIGFwcGxpZWQgbGlzdC4KKyAgICAgKi8KKyAgICBzd2l0Y2ggKCB4c3BsaWNlX3dv cmsuY21kICkKKyAgICB7CisgICAgY2FzZSBYU1BMSUNFX0FDVElPTl9BUFBMWToKKyAgICAgICAg cmMgPSBhcHBseV9wYXlsb2FkKGRhdGEpOworICAgICAgICBpZiAoIHJjID09IDAgKQorICAgICAg ICAgICAgZGF0YS0+c3RhdGUgPSBYU1BMSUNFX1NUQVRFX0FQUExJRUQ7CisgICAgICAgIGJyZWFr OworCisgICAgY2FzZSBYU1BMSUNFX0FDVElPTl9SRVZFUlQ6CisgICAgICAgIHJjID0gcmV2ZXJ0 X3BheWxvYWQoZGF0YSk7CisgICAgICAgIGlmICggcmMgPT0gMCApCisgICAgICAgICAgICBkYXRh LT5zdGF0ZSA9IFhTUExJQ0VfU1RBVEVfQ0hFQ0tFRDsKKyAgICAgICAgYnJlYWs7CisKKyAgICBj YXNlIFhTUExJQ0VfQUNUSU9OX1JFUExBQ0U6CisgICAgICAgIHJjID0gMDsKKyAgICAgICAgLyoK KwkgKiBOLkI6IFVzZSAnYXBwbGllZF9saXN0JyBtZW1iZXIsIG5vdCAnbGlzdCcuIFdlIGFsc28g YWJ1c2UgdGhlCisJICogdGhlICdub3JtYWwnIGxpc3QgaXRlcmF0b3IgYXMgdGhlIGxpc3QgaXMg YW4gUkNVIG9uZS4KKwkgKi8KKyAgICAgICAgbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlX3JldmVy c2UgKCBvdGhlciwgdG1wLCAmYXBwbGllZF9saXN0LCBhcHBsaWVkX2xpc3QgKQorICAgICAgICB7 CisgICAgICAgICAgICBvdGhlci0+cmMgPSByZXZlcnRfcGF5bG9hZChvdGhlcik7CisgICAgICAg ICAgICBpZiAoIG90aGVyLT5yYyA9PSAwICkKKyAgICAgICAgICAgICAgICBvdGhlci0+c3RhdGUg PSBYU1BMSUNFX1NUQVRFX0NIRUNLRUQ7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7 CisgICAgICAgICAgICAgICAgcmMgPSAtRUlOVkFMOworICAgICAgICAgICAgICAgIGJyZWFrOwor ICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKCByYyA9PSAwICkKKyAgICAg ICAgeworICAgICAgICAgICAgcmMgPSBhcHBseV9wYXlsb2FkKGRhdGEpOworICAgICAgICAgICAg aWYgKCByYyA9PSAwICkKKyAgICAgICAgICAgICAgICBkYXRhLT5zdGF0ZSA9IFhTUExJQ0VfU1RB VEVfQVBQTElFRDsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6Cisg ICAgICAgIHJjID0gLUVJTlZBTDsgLyogTWFrZSBHQ0M1IGhhcHB5LiAqLworICAgICAgICBBU1NF UlRfVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgLyogV2UgbXVz dCBzZXQgcmMgYXMgeHNwbGljZV9hY3Rpb24gc2V0cyBpdCB0byAtRUFHQUlOIHdoZW4ga2lja2lu ZyBvZi4gKi8KKyAgICBkYXRhLT5yYyA9IHJjOworfQorCitzdGF0aWMgaW50IHNjaGVkdWxlX3dv cmsoc3RydWN0IHBheWxvYWQgKmRhdGEsIHVpbnQzMl90IGNtZCwgdWludDMyX3QgdGltZW91dCkK K3sKKyAgICBBU1NFUlQoc3Bpbl9pc19sb2NrZWQoJnBheWxvYWRfbG9jaykpOworCisgICAgLyog RmFpbCBpZiBhbiBvcGVyYXRpb24gaXMgYWxyZWFkeSBzY2hlZHVsZWQuICovCisgICAgaWYgKCB4 c3BsaWNlX3dvcmsuZG9fd29yayApCisgICAgICAgIHJldHVybiAtRUJVU1k7CisKKyAgICBpZiAo ICFnZXRfY3B1X21hcHMoKSApCisgICAgeworICAgICAgICBwcmludGsoWEVOTE9HX0VSUiBYU1BM SUNFICIlczogdW5hYmxlIHRvIGdldCBjcHVfbWFwcyBsb2NrIVxuIiwKKyAgICAgICAgICAgICAg IGRhdGEtPm5hbWUpOworICAgICAgICByZXR1cm4gLUVCVVNZOworICAgIH0KKworICAgIHhzcGxp Y2Vfd29yay5jbWQgPSBjbWQ7CisgICAgeHNwbGljZV93b3JrLmRhdGEgPSBkYXRhOworICAgIHhz cGxpY2Vfd29yay50aW1lb3V0ID0gdGltZW91dCA/OiBNSUxMSVNFQ1MoMzApOworCisgICAgZHBy aW50ayhYRU5MT0dfREVCVUcsIFhTUExJQ0UgIiVzOiB0aW1lb3V0IGlzICUiUFJJX3N0aW1lIm1z XG4iLAorICAgICAgICAgICAgZGF0YS0+bmFtZSwgeHNwbGljZV93b3JrLnRpbWVvdXQgLyBNSUxM SVNFQ1MoMSkpOworCisgICAgYXRvbWljX3NldCgmeHNwbGljZV93b3JrLnNlbWFwaG9yZSwgLTEp OworCisgICAgeHNwbGljZV93b3JrLnJlYWR5ID0gMDsKKworICAgIHNtcF93bWIoKTsKKworICAg IHhzcGxpY2Vfd29yay5kb193b3JrID0gMTsKKyAgICB0aGlzX2NwdSh3b3JrX3RvX2RvKSA9IDE7 CisKKyAgICBwdXRfY3B1X21hcHMoKTsKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgdm9p ZCByZXNjaGVkdWxlX2ZuKHZvaWQgKnVudXNlZCkKK3sKKyAgICB0aGlzX2NwdSh3b3JrX3RvX2Rv KSA9IDE7CisgICAgcmFpc2Vfc29mdGlycShTQ0hFRFVMRV9TT0ZUSVJRKTsKK30KKworc3RhdGlj IGludCB4c3BsaWNlX3NwaW4oYXRvbWljX3QgKmNvdW50ZXIsIHNfdGltZV90IHRpbWVvdXQsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgY3B1cywgY29uc3QgY2hhciAq cykKK3sKKyAgICBpbnQgcmMgPSAwOworCisgICAgd2hpbGUgKCBhdG9taWNfcmVhZChjb3VudGVy KSAhPSBjcHVzICYmIE5PVygpIDwgdGltZW91dCApCisgICAgICAgIGNwdV9yZWxheCgpOworCisg ICAgLyogTG9nICYgYWJvcnQuICovCisgICAgaWYgKCBhdG9taWNfcmVhZChjb3VudGVyKSAhPSBj cHVzICkKKyAgICB7CisgICAgICAgIHByaW50ayhYRU5MT0dfRVJSIFhTUExJQ0UgIiVzOiBUaW1l ZCBvdXQgb24gc2VtYXBob3JlIGluICVzIHF1aWVzY2UgcGhhc2UgJXUvJXVcbiIsCisgICAgICAg ICAgICAgICB4c3BsaWNlX3dvcmsuZGF0YS0+bmFtZSwgcywgYXRvbWljX3JlYWQoY291bnRlciks IGNwdXMpOworICAgICAgICByYyA9IC1FQlVTWTsKKyAgICAgICAgeHNwbGljZV93b3JrLmRhdGEt PnJjID0gcmM7CisgICAgICAgIHNtcF93bWIoKTsKKyAgICAgICAgeHNwbGljZV93b3JrLmRvX3dv cmsgPSAwOworICAgIH0KKworICAgIHJldHVybiByYzsKK30KKworLyoKKyAqIFRoZSBtYWluIGZ1 bmN0aW9uIHdoaWNoIG1hbmFnZXMgdGhlIHdvcmsgb2YgcXVpZXNjaW5nIHRoZSBzeXN0ZW0gYW5k CisgKiBwYXRjaGluZyBjb2RlLgorICovCit2b2lkIGNoZWNrX2Zvcl94c3BsaWNlX3dvcmsodm9p ZCkKK3sKKyNkZWZpbmUgQUNUSU9OKHgpIFtYU1BMSUNFX0FDVElPTl8jI3hdID0gI3gKKyAgICBz dGF0aWMgY29uc3QgY2hhciAqY29uc3QgbmFtZXNbXSA9IHsKKyAgICAgICAgICAgIEFDVElPTihB UFBMWSksCisgICAgICAgICAgICBBQ1RJT04oUkVWRVJUKSwKKyAgICAgICAgICAgIEFDVElPTihS RVBMQUNFKSwKKyAgICB9OworI3VuZGVmIEFDVElPTgorICAgIHVuc2lnbmVkIGludCBjcHUgPSBz bXBfcHJvY2Vzc29yX2lkKCk7CisgICAgc190aW1lX3QgdGltZW91dDsKKyAgICB1bnNpZ25lZCBs b25nIGZsYWdzOworCisgICAgLyogRmFzdCBwYXRoOiBubyB3b3JrIHRvIGRvLiAqLworICAgIGlm ICggIXBlcl9jcHUod29ya190b19kbywgY3B1ICkgKQorICAgICAgICByZXR1cm47CisKKyAgICBz bXBfcm1iKCk7CisgICAgLyogSW4gY2FzZSB3ZSBhYm9ydGVkLCBvdGhlciBDUFVzIGNhbiBza2lw IHJpZ2h0IGF3YXkuICovCisgICAgaWYgKCAheHNwbGljZV93b3JrLmRvX3dvcmsgKQorICAgIHsK KyAgICAgICAgcGVyX2NwdSh3b3JrX3RvX2RvLCBjcHUpID0gMDsKKyAgICAgICAgcmV0dXJuOwor ICAgIH0KKworICAgIEFTU0VSVChsb2NhbF9pcnFfaXNfZW5hYmxlZCgpKTsKKworICAgIC8qIFNl dCBhdCAtMSwgc28gd2lsbCBnbyB1cCB0byBudW1fb25saW5lX2NwdXMgLSAxLiAqLworICAgIGlm ICggYXRvbWljX2luY19hbmRfdGVzdCgmeHNwbGljZV93b3JrLnNlbWFwaG9yZSkgKQorICAgIHsK KyAgICAgICAgc3RydWN0IHBheWxvYWQgKnA7CisgICAgICAgIHVuc2lnbmVkIGludCBjcHVzOwor CisgICAgICAgIHAgPSB4c3BsaWNlX3dvcmsuZGF0YTsKKyAgICAgICAgaWYgKCAhZ2V0X2NwdV9t YXBzKCkgKQorICAgICAgICB7CisgICAgICAgICAgICBwcmludGsoWEVOTE9HX0VSUiBYU1BMSUNF ICIlczogQ1BVJXUgLSB1bmFibGUgdG8gZ2V0IGNwdV9tYXBzIGxvY2shXG4iLAorICAgICAgICAg ICAgICAgICAgIHAtPm5hbWUsIGNwdSk7CisgICAgICAgICAgICBwZXJfY3B1KHdvcmtfdG9fZG8s IGNwdSkgPSAwOworICAgICAgICAgICAgeHNwbGljZV93b3JrLmRhdGEtPnJjID0gLUVCVVNZOwor ICAgICAgICAgICAgc21wX3dtYigpOworICAgICAgICAgICAgeHNwbGljZV93b3JrLmRvX3dvcmsg PSAwOworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqIERvIE5PVCBkZWNyZW1lbnQgeHNw bGljZV93b3JrLnNlbWFwaG9yZSBkb3duIC0gYXMgdGhhdCBtYXkgY2F1c2UKKyAgICAgICAgICAg ICAqIHRoZSBvdGhlciBDUFUgKHdoaWNoIG1heSBiZSBhdCB0aGlzIHBvaW50IHJlYWR5IHRvIGlu Y3JlbWVudCBpdCkKKyAgICAgICAgICAgICAqIHRvIGFzc3VtZSB0aGUgcm9sZSBvZiBtYXN0ZXIg YW5kIHRoZW4gbmVlZGxlc3NseSB0aW1lIG91dAorICAgICAgICAgICAgICogb3V0IChhcyBkb193 b3JrIGlzIHplcm8pLgorICAgICAgICAgICAgICovCisgICAgICAgICAgICByZXR1cm47CisgICAg ICAgIH0KKyAgICAgICAgLyogIk1hc2siIE5NSXMuICovCisgICAgICAgIGFyY2hfeHNwbGljZV9t YXNrKCk7CisKKyAgICAgICAgYmFycmllcigpOyAvKiBNVVNUIGRvIGl0IGFmdGVyIGdldF9jcHVf bWFwcy4gKi8KKyAgICAgICAgY3B1cyA9IG51bV9vbmxpbmVfY3B1cygpIC0gMTsKKworICAgICAg ICBpZiAoIGNwdXMgKQorICAgICAgICB7CisgICAgICAgICAgICBkcHJpbnRrKFhFTkxPR19ERUJV RywgWFNQTElDRSAiJXM6IENQVSV1IC0gSVBJaW5nIHRoZSBvdGhlciAldSBDUFVzXG4iLAorICAg ICAgICAgICAgICAgICAgICBwLT5uYW1lLCBjcHUsIGNwdXMpOworICAgICAgICAgICAgc21wX2Nh bGxfZnVuY3Rpb24ocmVzY2hlZHVsZV9mbiwgTlVMTCwgMCk7CisgICAgICAgIH0KKworICAgICAg ICB0aW1lb3V0ID0geHNwbGljZV93b3JrLnRpbWVvdXQgKyBOT1coKTsKKyAgICAgICAgaWYgKCB4 c3BsaWNlX3NwaW4oJnhzcGxpY2Vfd29yay5zZW1hcGhvcmUsIHRpbWVvdXQsIGNwdXMsICJDUFUi KSApCisgICAgICAgICAgICBnb3RvIGFib3J0OworCisgICAgICAgIC8qIEFsbCBDUFVzIGFyZSB3 YWl0aW5nLCBub3cgc2lnbmFsIHRvIGRpc2FibGUgSVJRcy4gKi8KKyAgICAgICAgYXRvbWljX3Nl dCgmeHNwbGljZV93b3JrLnNlbWFwaG9yZSwgMCk7CisgICAgICAgIC8qCisgICAgICAgICAqIE1V U1QgaGF2ZSBhIGJhcnJpZXIgYWZ0ZXIgc2VtYXBob3JlIHNvIHRoYXQgdGhlIG90aGVyIENQVXMg ZG9uJ3QKKyAgICAgICAgICogbGVhayBvdXQgb2YgdGhlICdXYWl0IGZvciBhbGwgQ1BVcyB0byBy ZW5kZXp2b3VzJyBsb29wIGFuZCBpbmNyZW1lbnQKKyAgICAgICAgICogJ3NlbWFwaG9yZScgYmVm b3JlIHdlIHNldCBpdCB0byB6ZXJvLgorICAgICAgICAgKi8KKyAgICAgICAgc21wX3dtYigpOwor ICAgICAgICB4c3BsaWNlX3dvcmsucmVhZHkgPSAxOworCisgICAgICAgIGlmICggIXhzcGxpY2Vf c3BpbigmeHNwbGljZV93b3JrLnNlbWFwaG9yZSwgdGltZW91dCwgY3B1cywgIklSUSIpICkKKyAg ICAgICAgeworICAgICAgICAgICAgbG9jYWxfaXJxX3NhdmUoZmxhZ3MpOworICAgICAgICAgICAg LyogRG8gdGhlIHBhdGNoaW5nLiAqLworICAgICAgICAgICAgeHNwbGljZV9kb19hY3Rpb24oKTsK KyAgICAgICAgICAgIC8qIFNlcmlhbGl6ZSBhbmQgZmx1c2ggb3V0IHRoZSBDUFUgdmlhIENQVUlE IGluc3RydWN0aW9uIChvbiB4ODYpLiAqLworICAgICAgICAgICAgYXJjaF94c3BsaWNlX3Bvc3Rf YWN0aW9uKCk7CisgICAgICAgICAgICBsb2NhbF9pcnFfcmVzdG9yZShmbGFncyk7CisgICAgICAg IH0KKyAgICAgICAgYXJjaF94c3BsaWNlX3VubWFzaygpOworCisgYWJvcnQ6CisgICAgICAgIHBl cl9jcHUod29ya190b19kbywgY3B1KSA9IDA7CisgICAgICAgIHhzcGxpY2Vfd29yay5kb193b3Jr ID0gMDsKKworICAgICAgICAvKiBwdXRfY3B1X21hcHMgaGFzIGFuIGJhcnJpZXIoKS4gKi8KKyAg ICAgICAgcHV0X2NwdV9tYXBzKCk7CisKKyAgICAgICAgcHJpbnRrKFhFTkxPR19JTkZPIFhTUExJ Q0UgIiVzIGZpbmlzaGVkICVzIHdpdGggcmM9JWRcbiIsCisgICAgICAgICAgICAgICBwLT5uYW1l LCBuYW1lc1t4c3BsaWNlX3dvcmsuY21kXSwgcC0+cmMpOworICAgIH0KKyAgICBlbHNlCisgICAg eworICAgICAgICAvKiBXYWl0IGZvciBhbGwgQ1BVcyB0byByZW5kZXp2b3VzLiAqLworICAgICAg ICB3aGlsZSAoIHhzcGxpY2Vfd29yay5kb193b3JrICYmICF4c3BsaWNlX3dvcmsucmVhZHkgKQor ICAgICAgICAgICAgY3B1X3JlbGF4KCk7CisKKyAgICAgICAgLyogRGlzYWJsZSBJUlFzIGFuZCBz aWduYWwuICovCisgICAgICAgIGxvY2FsX2lycV9zYXZlKGZsYWdzKTsKKyAgICAgICAgLyoKKyAg ICAgICAgICogV2UgcmUtdXNlIHRoZSBzZW1wYWhvcmUsIHNvIE1VU1QgaGF2ZSBpdCByZXNldCBi eSBtYXN0ZXIgYmVmb3JlCisgICAgICAgICAqIHdlIGV4aXQgdGhlIGxvb3AgYWJvdmUuCisgICAg ICAgICAqLworICAgICAgICBhdG9taWNfaW5jKCZ4c3BsaWNlX3dvcmsuc2VtYXBob3JlKTsKKwor ICAgICAgICAvKiBXYWl0IGZvciBwYXRjaGluZyB0byBjb21wbGV0ZS4gKi8KKyAgICAgICAgd2hp bGUgKCB4c3BsaWNlX3dvcmsuZG9fd29yayApCisgICAgICAgICAgICBjcHVfcmVsYXgoKTsKKwor ICAgICAgICAvKiBUbyBmbHVzaCBvdXQgcGlwZWxpbmUuICovCisgICAgICAgIGFyY2hfeHNwbGlj ZV9wb3N0X2FjdGlvbigpOworICAgICAgICBsb2NhbF9pcnFfcmVzdG9yZShmbGFncyk7CisKKyAg ICAgICAgcGVyX2NwdSh3b3JrX3RvX2RvLCBjcHUpID0gMDsKKyAgICB9Cit9CisKIHN0YXRpYyBp bnQgeHNwbGljZV9hY3Rpb24oeGVuX3N5c2N0bF94c3BsaWNlX2FjdGlvbl90ICphY3Rpb24pCiB7 CiAgICAgc3RydWN0IHBheWxvYWQgKmRhdGE7CkBAIC01MDMsMjcgKzk0MywyNCBAQCBzdGF0aWMg aW50IHhzcGxpY2VfYWN0aW9uKHhlbl9zeXNjdGxfeHNwbGljZV9hY3Rpb25fdCAqYWN0aW9uKQog ICAgIGNhc2UgWFNQTElDRV9BQ1RJT05fUkVWRVJUOgogICAgICAgICBpZiAoIGRhdGEtPnN0YXRl ID09IFhTUExJQ0VfU1RBVEVfQVBQTElFRCApCiAgICAgICAgIHsKLSAgICAgICAgICAgIC8qIE5v IGltcGxlbWVudGF0aW9uIHlldC4gKi8KLSAgICAgICAgICAgIGRhdGEtPnN0YXRlID0gWFNQTElD RV9TVEFURV9DSEVDS0VEOwotICAgICAgICAgICAgZGF0YS0+cmMgPSAwOworICAgICAgICAgICAg ZGF0YS0+cmMgPSAtRUFHQUlOOworICAgICAgICAgICAgcmMgPSBzY2hlZHVsZV93b3JrKGRhdGEs IGFjdGlvbi0+Y21kLCBhY3Rpb24tPnRpbWVvdXQpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFr OwogCiAgICAgY2FzZSBYU1BMSUNFX0FDVElPTl9BUFBMWToKICAgICAgICAgaWYgKCBkYXRhLT5z dGF0ZSA9PSBYU1BMSUNFX1NUQVRFX0NIRUNLRUQgKQogICAgICAgICB7Ci0gICAgICAgICAgICAv KiBObyBpbXBsZW1lbnRhdGlvbiB5ZXQuICovCi0gICAgICAgICAgICBkYXRhLT5zdGF0ZSA9IFhT UExJQ0VfU1RBVEVfQVBQTElFRDsKLSAgICAgICAgICAgIGRhdGEtPnJjID0gMDsKKyAgICAgICAg ICAgIGRhdGEtPnJjID0gLUVBR0FJTjsKKyAgICAgICAgICAgIHJjID0gc2NoZWR1bGVfd29yayhk YXRhLCBhY3Rpb24tPmNtZCwgYWN0aW9uLT50aW1lb3V0KTsKICAgICAgICAgfQogICAgICAgICBi cmVhazsKIAogICAgIGNhc2UgWFNQTElDRV9BQ1RJT05fUkVQTEFDRToKICAgICAgICAgaWYgKCBk YXRhLT5zdGF0ZSA9PSBYU1BMSUNFX1NUQVRFX0NIRUNLRUQgKQogICAgICAgICB7Ci0gICAgICAg ICAgICAvKiBObyBpbXBsZW1lbnRhdGlvbiB5ZXQuICovCi0gICAgICAgICAgICBkYXRhLT5zdGF0 ZSA9IFhTUExJQ0VfU1RBVEVfQ0hFQ0tFRDsKLSAgICAgICAgICAgIGRhdGEtPnJjID0gMDsKKyAg ICAgICAgICAgIGRhdGEtPnJjID0gLUVBR0FJTjsKKyAgICAgICAgICAgIHJjID0gc2NoZWR1bGVf d29yayhkYXRhLCBhY3Rpb24tPmNtZCwgYWN0aW9uLT50aW1lb3V0KTsKICAgICAgICAgfQogICAg ICAgICBicmVhazsKIApAQCAtNTg4LDYgKzEwMjUsNyBAQCBzdGF0aWMgY29uc3QgY2hhciAqc3Rh dGUyc3RyKHVuc2lnbmVkIGludCBzdGF0ZSkKIHN0YXRpYyB2b2lkIHhzcGxpY2VfcHJpbnRhbGwo dW5zaWduZWQgY2hhciBrZXkpCiB7CiAgICAgc3RydWN0IHBheWxvYWQgKmRhdGE7CisgICAgdW5z aWduZWQgaW50IGk7CiAKICAgICBwcmludGsoIiclYycgcHJlc3NlZCAtIER1bXBpbmcgYWxsIHhz cGxpY2UgcGF0Y2hlc1xuIiwga2V5KTsKIApAQCAtNTk4LDEwICsxMDM2LDMwIEBAIHN0YXRpYyB2 b2lkIHhzcGxpY2VfcHJpbnRhbGwodW5zaWduZWQgY2hhciBrZXkpCiAgICAgfQogCiAgICAgbGlz dF9mb3JfZWFjaF9lbnRyeSAoIGRhdGEsICZwYXlsb2FkX2xpc3QsIGxpc3QgKQorICAgIHsKICAg ICAgICAgcHJpbnRrKCIgbmFtZT0lcyBzdGF0ZT0lcyglZCkgJXAgKC5kYXRhPSVwLCAucm9kYXRh PSVwKSB1c2luZyAldSBwYWdlcy5cbiIsCiAgICAgICAgICAgICAgICBkYXRhLT5uYW1lLCBzdGF0 ZTJzdHIoZGF0YS0+c3RhdGUpLCBkYXRhLT5zdGF0ZSwgZGF0YS0+dGV4dF9hZGRyLAogICAgICAg ICAgICAgICAgZGF0YS0+cndfYWRkciwgZGF0YS0+cm9fYWRkciwgZGF0YS0+cGFnZXMpOwogCisg ICAgICAgIGZvciAoIGkgPSAwOyBpIDwgZGF0YS0+bmZ1bmNzOyBpKysgKQorICAgICAgICB7Cisg ICAgICAgICAgICBzdHJ1Y3QgeHNwbGljZV9wYXRjaF9mdW5jICpmID0gJihkYXRhLT5mdW5jc1tp XSk7CisgICAgICAgICAgICBwcmludGsoIiAgICAlcyBwYXRjaCAlcCgldSkgd2l0aCAlcCAoJXUp XG4iLAorICAgICAgICAgICAgICAgICAgIGYtPm5hbWUsIGYtPm9sZF9hZGRyLCBmLT5vbGRfc2l6 ZSwgZi0+bmV3X2FkZHIsIGYtPm5ld19zaXplKTsKKworICAgICAgICAgICAgaWYgKCBpICYmICEo aSAlIDY0KSApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgc3Bpbl91bmxvY2soJnBh eWxvYWRfbG9jayk7CisgICAgICAgICAgICAgICAgcHJvY2Vzc19wZW5kaW5nX3NvZnRpcnFzKCk7 CisgICAgICAgICAgICAgICAgaWYgKCBzcGluX3RyeWxvY2soJnBheWxvYWRfbG9jaykgKQorICAg ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcHJpbnRrKCJDb3VsZG4ndCByZWFj cXVpcmUgbG9jay4gVHJ5IGFnYWluLlxuIik7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsK KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKICAg ICBzcGluX3VubG9jaygmcGF5bG9hZF9sb2NrKTsKIH0KIApkaWZmIC0tZ2l0IGEveGVuL2luY2x1 ZGUvYXNtLXg4Ni9jdXJyZW50LmggYi94ZW4vaW5jbHVkZS9hc20teDg2L2N1cnJlbnQuaAppbmRl eCA0MDgzMjYxLi43M2E3MjA5IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L2N1cnJl bnQuaAorKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L2N1cnJlbnQuaApAQCAtODYsMTAgKzg2LDE4 IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGNwdV9pbmZvICpnZXRfY3B1X2luZm8odm9pZCkKIHVu c2lnbmVkIGxvbmcgZ2V0X3N0YWNrX3RyYWNlX2JvdHRvbSh1bnNpZ25lZCBsb25nIHNwKTsKIHVu c2lnbmVkIGxvbmcgZ2V0X3N0YWNrX2R1bXBfYm90dG9tICh1bnNpZ25lZCBsb25nIHNwKTsKIAor I2lmZGVmIENPTkZJR19YU1BMSUNFCisjIGRlZmluZSBDSEVDS19GT1JfWFNQTElDRV9XT1JLICJj YWxsIGNoZWNrX2Zvcl94c3BsaWNlX3dvcms7IgorI2Vsc2UKKyMgZGVmaW5lIENIRUNLX0ZPUl9Y U1BMSUNFX1dPUksgIiIKKyNlbmRpZgorCiAjZGVmaW5lIHJlc2V0X3N0YWNrX2FuZF9qdW1wKF9f Zm4pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgKHsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCiAgICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fICggICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAibW92ICUwLCUlIl9fT1Aic3A7IGpt cCAlYzEiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAibW92 ICUwLCUlIl9fT1Aic3A7IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc CisgICAgICAgICAgICBDSEVDS19GT1JfWFNQTElDRV9XT1JLICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgImptcCAlYzEiICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICA6IDogInIi IChndWVzdF9jcHVfdXNlcl9yZWdzKCkpLCAiaSIgKF9fZm4pIDogIm1lbW9yeSIgKTsgICBcCiAg ICAgICAgIHVucmVhY2hhYmxlKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCiAgICAgfSkKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3B1YmxpYy9z eXNjdGwuaCBiL3hlbi9pbmNsdWRlL3B1YmxpYy9zeXNjdGwuaAppbmRleCAzZmExZmU3Li5iMmIz MTJiIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9wdWJsaWMvc3lzY3RsLmgKKysrIGIveGVuL2lu Y2x1ZGUvcHVibGljL3N5c2N0bC5oCkBAIC04NjksNiArODY5LDI2IEBAIERFRklORV9YRU5fR1VF U1RfSEFORExFKHhlbl9zeXNjdGxfZmVhdHVyZXNldF90KTsKICAqICAgICBJZiB6ZXJvIGV4aXQg d2l0aCBzdWNjZXNzLgogICovCiAKKyNkZWZpbmUgWFNQTElDRV9QQVlMT0FEX1ZFUlNJT04gMQor LyoKKyAqIC54c3BsaWNlLmZ1bmNzIHN0cnVjdHVyZSBsYXlvdXQgZGVmaW5lZCBpbiB0aGUgYFBh eWxvYWQgZm9ybWF0YAorICogc2VjdGlvbiBpbiB0aGUgeFNwbGljZSBkZXNpZ24gZG9jdW1lbnQu CisgKgorICogV2UgZ3VhcmQgdGhpcyB3aXRoIF9fWEVOX18gYXMgdG9vbHN0YWNrcyBTSE9VTEQg bm90IHVzZSBpdC4KKyAqLworI2lmZGVmIF9fWEVOX18KK3N0cnVjdCB4c3BsaWNlX3BhdGNoX2Z1 bmMgeworICAgIGNvbnN0IGNoYXIgKm5hbWU7ICAgICAgIC8qIE5hbWUgb2YgZnVuY3Rpb24gdG8g YmUgcGF0Y2hlZC4gKi8KKyAgICB2b2lkICpuZXdfYWRkcjsKKyAgICB2b2lkICpvbGRfYWRkcjsK KyAgICB1aW50MzJfdCBuZXdfc2l6ZTsKKyAgICB1aW50MzJfdCBvbGRfc2l6ZTsKKyAgICB1aW50 OF90IHZlcnNpb247ICAgICAgICAvKiBNVVNUIGJlIFhTUExJQ0VfUEFZTE9BRF9WRVJTSU9OLiAq LworICAgIHVpbnQ4X3Qgb3BhcXVlWzMxXTsKK307Cit0eXBlZGVmIHN0cnVjdCB4c3BsaWNlX3Bh dGNoX2Z1bmMgeHNwbGljZV9wYXRjaF9mdW5jX3Q7CisjZW5kaWYKKwogLyoKICAqIFN0cnVjdHVy ZSBkZXNjcmliaW5nIGFuIEVMRiBwYXlsb2FkLiBVbmlxdWVseSBpZGVudGlmaWVzIHRoZQogICog cGF5bG9hZC4gU2hvdWxkIGJlIGh1bWFuIHJlYWRhYmxlLgpkaWZmIC0tZ2l0IGEveGVuL2luY2x1 ZGUveGVuL3hzcGxpY2UuaCBiL3hlbi9pbmNsdWRlL3hlbi94c3BsaWNlLmgKaW5kZXggODU3YzI2 NC4uYzk3MjNlNCAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUveGVuL3hzcGxpY2UuaAorKysgYi94 ZW4vaW5jbHVkZS94ZW4veHNwbGljZS5oCkBAIC0xMSwxMiArMTEsMTYgQEAgc3RydWN0IHhzcGxp Y2VfZWxmX3NlYzsKIHN0cnVjdCB4c3BsaWNlX2VsZl9zeW07CiBzdHJ1Y3QgeGVuX3N5c2N0bF94 c3BsaWNlX29wOwogCisjaW5jbHVkZSA8eGVuL2VsZnN0cnVjdHMuaD4KICNpZmRlZiBDT05GSUdf WFNQTElDRQogCiAvKiBDb252ZW5pZW5jZSBkZWZpbmUgZm9yIHByaW50ay4gKi8KICNkZWZpbmUg WFNQTElDRSAgICAgICAgICAgICAieHNwbGljZTogIgorLyogRUxGIHBheWxvYWQgc3BlY2lhbCBz ZWN0aW9uIG5hbWVzLiAqLworI2RlZmluZSBFTEZfWFNQTElDRV9GVU5DICAgICIueHNwbGljZS5m dW5jcyIKIAogaW50IHhzcGxpY2Vfb3Aoc3RydWN0IHhlbl9zeXNjdGxfeHNwbGljZV9vcCAqKTsK K3ZvaWQgY2hlY2tfZm9yX3hzcGxpY2Vfd29yayh2b2lkKTsKIAogLyogQXJjaCBob29rcy4gKi8K IGludCBhcmNoX3hzcGxpY2VfdmVyaWZ5X2VsZihjb25zdCBzdHJ1Y3QgeHNwbGljZV9lbGYgKmVs Zik7CkBAIC0zOSw2ICs0MywyMiBAQCBlbnVtIHZhX3R5cGUgewogaW50IGFyY2hfeHNwbGljZV9z ZWN1cmUoY29uc3Qgdm9pZCAqdmEsIHVuc2lnbmVkIGludCBwYWdlcywgZW51bSB2YV90eXBlIHR5 cGVzKTsKIAogdm9pZCBhcmNoX3hzcGxpY2VfaW5pdCh2b2lkKTsKKworI2luY2x1ZGUgPHB1Ymxp Yy9zeXNjdGwuaD4gLyogRm9yIHN0cnVjdCB4c3BsaWNlX3BhdGNoX2Z1bmMuICovCitpbnQgYXJj aF94c3BsaWNlX3ZlcmlmeV9mdW5jKGNvbnN0IHN0cnVjdCB4c3BsaWNlX3BhdGNoX2Z1bmMgKmZ1 bmMpOworLyoKKyAqIFRoZXNlIGZ1bmN0aW9ucyBhcmUgY2FsbGVkIGFyb3VuZCB0aGUgY3JpdGlj YWwgcmVnaW9uIHBhdGNoaW5nIGxpdmUgY29kZSwKKyAqIGZvciBhbiBhcmNoaXRlY3R1cmUgdG8g dGFrZSBtYWtlIGFwcHJvcHJhdGllIGdsb2JhbCBzdGF0ZSBhZGp1c3RtZW50cy4KKyAqLwordm9p ZCBhcmNoX3hzcGxpY2VfcGF0Y2hpbmdfZW50ZXIodm9pZCk7Cit2b2lkIGFyY2hfeHNwbGljZV9w YXRjaGluZ19sZWF2ZSh2b2lkKTsKKwordm9pZCBhcmNoX3hzcGxpY2VfYXBwbHlfam1wKHN0cnVj dCB4c3BsaWNlX3BhdGNoX2Z1bmMgKmZ1bmMpOwordm9pZCBhcmNoX3hzcGxpY2VfcmV2ZXJ0X2pt cChjb25zdCBzdHJ1Y3QgeHNwbGljZV9wYXRjaF9mdW5jICpmdW5jKTsKK3ZvaWQgYXJjaF94c3Bs aWNlX3Bvc3RfYWN0aW9uKHZvaWQpOworCit2b2lkIGFyY2hfeHNwbGljZV9tYXNrKHZvaWQpOwor dm9pZCBhcmNoX3hzcGxpY2VfdW5tYXNrKHZvaWQpOwogI2Vsc2UKIAogI2luY2x1ZGUgPHhlbi9l cnJuby5oPiAvKiBGb3IgLUVOT1NZUyAqLwpAQCAtNDcsNiArNjcsNyBAQCBzdGF0aWMgaW5saW5l IGludCB4c3BsaWNlX29wKHN0cnVjdCB4ZW5fc3lzY3RsX3hzcGxpY2Vfb3AgKm9wKQogICAgIHJl dHVybiAtRU5PU1lTOwogfQogCitzdGF0aWMgaW5saW5lIHZvaWQgY2hlY2tfZm9yX3hzcGxpY2Vf d29yayh2b2lkKSB7IH07CiAjZW5kaWYgLyogQ09ORklHX1hTUExJQ0UgKi8KIAogI2VuZGlmIC8q IF9fWEVOX1hTUExJQ0VfSF9fICovCi0tIAoyLjQuMwoKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVs QGxpc3RzLnhlbi5vcmcKaHR0cDovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==