From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ross Philipson Subject: Re: [PATCH v3 04/15] argo: init, destroy and soft-reset, with enable command line opt Date: Tue, 8 Jan 2019 17:08:47 -0500 Message-ID: <6b8708eb-b7d9-ae7f-f003-d68bbac9d751@gmail.com> References: <1546846968-7372-1-git-send-email-christopher.w.clark@gmail.com> <1546846968-7372-5-git-send-email-christopher.w.clark@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1ggzYk-0005lV-P7 for xen-devel@lists.xenproject.org; Tue, 08 Jan 2019 22:09:18 +0000 Received: by mail-pg1-x542.google.com with SMTP id s198so2347604pgs.2 for ; Tue, 08 Jan 2019 14:09:15 -0800 (PST) In-Reply-To: <1546846968-7372-5-git-send-email-christopher.w.clark@gmail.com> Content-Language: en-US List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Christopher Clark , xen-devel@lists.xenproject.org Cc: Stefano Stabellini , Wei Liu , Konrad Rzeszutek Wilk , George Dunlap , Andrew Cooper , Jason Andryuk , Ian Jackson , Rich Persaud , Tim Deegan , Daniel Smith , Julien Grall , Paul Durrant , Jan Beulich , James McKenzie , Eric Chanudet , Roger Pau Monne List-Id: xen-devel@lists.xenproject.org T24gMDEvMDcvMjAxOSAwMjo0MiBBTSwgQ2hyaXN0b3BoZXIgQ2xhcmsgd3JvdGU6Cj4gSW5pdGlh bGlzZXMgYmFzaWMgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBwZXJmb3JtcyB0ZWFyZG93biBvZiBhcmdv IHN0YXRlCj4gZm9yIGRvbWFpbiBzaHV0ZG93bi4KPiAKPiBJbmNsdXNpb24gb2YgdGhlIEFyZ28g aW1wbGVtZW50YXRpb24gaXMgZGVwZW5kZW50IG9uIENPTkZJR19BUkdPLgo+IAo+IEludHJvZHVj ZXMgYSBuZXcgWGVuIGNvbW1hbmQgbGluZSBwYXJhbWV0ZXIgJ2FyZ28nOiBib29sIHRvIGVuYWJs ZS9kaXNhYmxlCj4gdGhlIGFyZ28gaHlwZXJjYWxsLiBEZWZhdWx0cyB0byBkaXNhYmxlZC4KPiAK PiBOZXcgaGVhZGVyczoKPiAgIHB1YmxpYy9hcmdvLmg6IHdpdGggZGVmaW5pb25zIG9mIGFkZHJl c3NlcyBhbmQgcmluZyBzdHJ1Y3R1cmUsIGluY2x1ZGluZwo+ICAgaW5kZXhlcyBmb3IgYXRvbWlj IHVwZGF0ZSBmb3IgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIGRvbWFpbiBhbmQgaHlwZXJ2aXNvci4K PiAKPiAgIHhlbi9hcmdvLmg6IHRvIGV4cG9zZSB0aGUgaG9va3MgZm9yIGludGVncmF0aW9uIGlu dG8gZG9tYWluIGxpZmVjeWNsZToKPiAgICAgYXJnb19pbml0OiBwZXItZG9tYWluIGluaXQgb2Yg YXJnbyBkYXRhIHN0cnVjdHVyZXMgZm9yIGRvbWFpbl9jcmVhdGUuCj4gICAgIGFyZ29fZGVzdHJv eTogdGVhcmRvd24gZm9yIGRvbWFpbl9kZXN0cm95IGFuZCB0aGUgZXJyb3IgZXhpdAo+ICAgICAg ICAgICAgICAgICAgIHBhdGggb2YgZG9tYWluX2NyZWF0ZS4KPiAgICAgYXJnb19zb2Z0X3Jlc2V0 OiByZXNldCBvZiBkb21haW4gc3RhdGUgZm9yIGRvbWFpbl9zb2Z0X3Jlc2V0Lgo+IAo+IEFkZHMg dHdvIG5ldyBmaWVsZHMgdG8gc3RydWN0IGRvbWFpbjoKPiAgICAgcndsb2NrX3QgYXJnb19sb2Nr Owo+ICAgICBzdHJ1Y3QgYXJnb19kb21haW4gKmFyZ287Cj4gCj4gSW4gYWNjb3JkYW5jZSB3aXRo IHJlY2VudCB3b3JrIG9uIF9kb21haW5fZGVzdHJveSwgYXJnb19kZXN0cm95IGlzCj4gaWRlbXBv dGVudC4gSXQgd2lsbCB0ZWFyIGRvd246IGFsbCByaW5ncyByZWdpc3RlcmVkIGJ5IHRoaXMgZG9t YWluLCBhbGwKPiByaW5ncyB3aGVyZSB0aGlzIGRvbWFpbiBpcyB0aGUgc2luZ2xlIHNlbmRlciAo aWUuIHNwZWNpZmllZCBwYXJ0bmVyLAo+IG5vbi13aWxkY2FyZCByaW5ncyksIGFuZCBhbGwgcGVu ZGluZyBub3RpZmljYXRpb25zIHdoZXJlIHRoaXMgZG9tYWluIGlzCj4gYXdhaXRpbmcgc2lnbmFs IGFib3V0IGF2YWlsYWJsZSBzcGFjZSBpbiB0aGUgcmluZ3Mgb2Ygb3RoZXIgZG9tYWlucy4KPiAK PiBBIGNvdW50IHdpbGwgYmUgbWFpbnRhaW5lZCBvZiB0aGUgbnVtYmVyIG9mIHJpbmdzIHRoYXQg YSBkb21haW4gaGFzCj4gcmVnaXN0ZXJlZCBpbiBvcmRlciB0byBsaW1pdCBpdCBiZWxvdyB0aGUg Zml4ZWQgbWF4aW11bSBsaW1pdCBkZWZpbmVkIGhlcmUuCj4gCj4gVGhlIHNvZnR3YXJlIGxpY2Vu c2Ugb24gdGhlIHB1YmxpYyBoZWFkZXIgaXMgdGhlIEJTRCBsaWNlbnNlLCBzdGFuZGFyZAo+IHBy b2NlZHVyZSBmb3IgdGhlIHB1YmxpYyBYZW4gaGVhZGVycy4gVGhlIHB1YmxpYyBoZWFkZXIgd2Fz IG9yaWdpbmFsbHkKPiBwb3N0ZWQgdW5kZXIgYSBHUEwgbGljZW5zZSBhdDogWzFdOgo+IGh0dHBz Oi8vbGlzdHMueGVucHJvamVjdC5vcmcvYXJjaGl2ZXMvaHRtbC94ZW4tZGV2ZWwvMjAxMy0wNS9t c2cwMjcxMC5odG1sCj4gCj4gVGhlIGZvbGxvd2luZyBBQ0sgYnkgTGFycyBLdXJ0aCBpcyB0byBj b25maXJtIHRoYXQgb25seSBwZW9wbGUgYmVpbmcKPiBlbXBsb3llZXMgb2YgQ2l0cml4IGNvbnRy aWJ1dGVkIHRvIHRoZSBoZWFkZXIgZmlsZXMgaW4gdGhlIHNlcmllcyBwb3N0ZWQgYXQKPiBbMV0g YW5kIHRoYXQgdGh1cyB0aGUgY29weXJpZ2h0IG9mIHRoZSBmaWxlcyBpbiBxdWVzdGlvbiBpcyBm dWxseSBvd25lZCBieQo+IENpdHJpeC4gVGhlIEFDSyBhbHNvIGNvbmZpcm1zIHRoYXQgQ2l0cml4 IGlzIGhhcHB5IGZvciB0aGUgaGVhZGVyIGZpbGVzIHRvCj4gYmUgcHVibGlzaGVkIHVuZGVyIGEg QlNEIGxpY2Vuc2UgaW4gdGhpcyBzZXJpZXMgKHdoaWNoIGlzIGJhc2VkIG9uIFsxXSkuCj4gCj4g U2lnbmVkLW9mZi1ieTogQ2hyaXN0b3BoZXIgQ2xhcmsgPGNocmlzdG9waGVyLmNsYXJrNkBiYWVz eXN0ZW1zLmNvbT4KPiBBY2tlZC1ieTogTGFycyBLdXJ0aCA8bGFycy5rdXJ0aEBjaXRyaXguY29t PgoKT3RoZXIgdGhhbiBhbiBpbmRlbnRhdGlvbiBpc3N1ZSBpbiBkb21haW5fcmluZ3NfcmVtb3Zl X2FsbCwgdGhpcyBMR1RNLgoKUmV2aWV3ZWQtYnk6IFJvc3MgUGhpbGlwc29uIDxyb3NzLnBoaWxp cHNvbkBvcmFjbGUuY29tPgoKPiAtLS0KPiB2MiByZXdyaXRlIGxvY2tpbmcgZXhwbGFuYXRpb24g Y29tbWVudAo+IHYyIGhlYWRlciBjb3B5cmlnaHQgbGluZSBub3cgaW5jbHVkZXMgMjAxOQo+IHYy IHNlbGY6IHVzZSByaW5nX2luZm8gYmFja3BvaW50ZXIgaW4gcGVuZGluZ19lbnQgdG8gbWFpbnRh aW4gbnBlbmRpbmcKPiB2MiBzZWxmOiByZW5hbWUgYWxsX3JpbmdzX3JlbW92ZV9pbmZvIHRvIGRv bWFpbl9yaW5nc19yZW1vdmVfYWxsCj4gdjIgZmVlZGJhY2sgSmFuOiBkcm9wIGNvb2tpZSwgaW1w bGVtZW50IHRlYXJkb3duCj4gdjIgc2VsZjogYWRkIG5wZW5kaW5nIHRvIHRyYWNrIG51bWJlciBv ZiBwZW5kaW5nIGVudHJpZXMgcGVyIHJpbmcKPiB2MiBzZWxmOiBhbWVuZCBjb21tZW50IG9uIGxv Y2tpbmc7IGRyb3Agc2VjdGlvbiBjb21tZW50cwo+IHYyIGNvb2tpZV9lcTogdGVzdCBsb3cgYml0 cyBmaXJzdCBhbmQgdXNlIGxpa2VseSBvbiBoaWdoIGJpdHMKPiB2MiBzZWxmOiBPVkVSSEFVTAo+ IHYyIHNlbGY6IHMvYXJnb19wZW5kaW5nX2VudC9wZW5kaW5nX2VudC9nCj4gdjIgc2VsZjogZHJv cCBwZW5kaW5nX3JlbW92ZV9lbnQsIGlubGluZSBhdCBzaW5nbGUgY2FsbCBzaXRlCj4gdjEgZmVl ZGJhY2sgUm9nZXIsIEphbjogZHJvcCBhcmdvIHByZWZpeCBvbiBzdGF0aWMgZnVuY3Rpb25zCj4g djIgIzQgTGFyczogYWRkIEFja2VkLWJ5IGFuZCBkZXRhaWxzIHRvIGNvbW1pdCBtZXNzYWdlLgo+ IHYyIGZlZWRiYWNrICM5IEphbjogZG9jdW1lbnQgYXJnbyBib290IG9wdCBpbiB4ZW4tY29tbWFu ZC1saW5lLm1hcmtkb3duCj4gdjIgYnVnZml4OiB4c20gdXNlIGluIHNvZnQtcmVzZXQgcHJpb3Ig dG8gaW50cm9kdWN0aW9uCj4gdjIgZmVlZGJhY2sgIzkgSmFuOiBkcm9wICdtZXNzYWdlJyBmcm9t IGRvX2FyZ29fbWVzc2FnZV9vcAo+IHYxICM1IGZlZWRiYWNrIFBhdWw6IGluaXQvZGVzdHJveSB1 bnNpZ25lZCwgYnJhY2tldHMgYW5kIHdoaXRlc3BhY2UgZml4ZXMKPiB2MSAjNSBmZWVkYmFjayBQ YXVsOiBVc2UgbWZuX2VxIGZvciBjb21wYXJpbmcgbWZucy4KPiB2MSAjNSBmZWVkYmFjayBQYXVs OiBpbml0L2Rlc3Ryb3kgOiB1c2UgY3VycmQKPiB2MSAjNiAoIzUpIGZlZWRiYWNrIEphbjogaW5p dC9kZXN0cm95OiBzL0VOT1NZUy9FT1BOT1RTVVBQLwo+IHYxICM2IGZlZWRiYWNrIFBhdWw6IEZv bGRlZCBwYXRjaCA2IGludG8gcGF0Y2ggNS4KPiB2MSAjNiBmZWVkYmFjayBKYW46IGRyb3Agb3B0 X2FyZ29fZW5hYmxlZCBpbml0aWFsaXplcgo+IHYxICQ2IGZlZWRiYWNrIEphbjogcy9FTk9TWVMv RU9QTk9UU1VQUC9nIGFuZCBkcm9wIHVzZWxlc3MgZHByaW50awo+IHYxLiAjNSBmZWVkYmFjayBQ YXVsOiBjaGFuZ2UgdGhlIGxpY2Vuc2Ugb24gcHVibGljIGhlYWRlciB0byBCU0QKPiAtIGFjayBm cm9tIExhcnMgYXQgQ2l0cml4Lgo+IHYxLiBzZWxmLCBKYW46IGRyb3AgdW5uZWNlc3NhcnkgeGVu IGluY2x1ZGUgZnJvbSBzY2hlZC5oCj4gdjEuIHNlbGYsIEphbjogZHJvcCBpbmNsdXNpb24gb2Yg cHVibGljIGFyZ28uaCBpbiBwcml2YXRlIG9uZQo+IHYxLiBzZWxmLCBKYW46IGFkZCBpbmNsdWRl IG9mIHB1YmxpYyBhcmdvLmggdG8gYXJnby5jCj4gdjEuIHNlbGYsIEphbjogZHJvcCBmd2QgZGVj bCBvZiBhcmdvX2RvbWFpbiBpbiBwcml2IGhlYWRlcgo+IHYxLiBQYXVsL3NlbGYvSmFuOiBhZGQg ZGF0YSBzdHJ1Y3R1cmVzIHRvIHhsYXQubHN0IGFuZCBjb21wYXQvYXJnby5oIHRvIE1ha2VmaWxl Cj4gdjEuIHNlbGY6IHJlbW92ZWQgYWxsb2NhdGlvbiBvZiBldmVudCBjaGFubmVsIHNpbmNlIHN3 aXRjaGluZyB0byBWSVJRCj4gdjEuIHNlbGY6IGRyb3AgdHlwZXMuaCBpbmNsdWRlIGZyb20gcHJp dmF0ZSBhcmdvLmgKPiB2MTogcmVvcmRlciBwdWJsaWMgYXJnbyBpbmNsdWRlIHBvc2l0aW9uCj4g djE6ICMxMyBmZWVkYmFjayBKYW46IHB1YmxpYyBuYW1lc3BhY2U6IHByZWZpeCB3aXRoIHhlbgo+ IHYxOiBzZWxmOiByZW5hbWUgcGVuZGluZyBlbnQgImlkIiB0byAiZG9tYWluX2lkIgo+IHYxOiBz ZWxmOiBhZGQgZG9tYWluX2Nvb2tpZSB0byBlbnQgc3RydWN0Cj4gdjEuICMxNSBmZWVkYmFjayBK YW46IG1ha2UgY21kIHVuc2lnbmVkCj4gdjEuICMxNSBmZWVkYmFjayBKYW46IG1ha2UgaSBsb29w IHZhcmlhYmxlIHVuc2lnbmVkCj4gdjE6IHNlbGY6IGFkanVzdCBkcHJpbnRrcyBpbiBpbml0LCBk ZXN0cm95Cj4gdjE6ICMxOCBmZWVkYmFjayBKYW46IG1lbGQgbWF4IHJpbmcgY291bnQgbGltaXQK PiB2MTogc2VsZjogdXNlIHR5cGUgbm90IHN0cnVjdCBpbiBwdWJsaWMgZGVmbiwgYWZmZWN0cyBj b21wYXQgZ2VuIGhlYWRlcgo+IHYxOiBmZWVkYmFjayAjMTUgSmFuOiBoYW5kbGUgdXBwZXItaGFs dmVzIG9mIGh5cGVyY2FsbCBhcmdzCj4gdjE6IGFkZCBjb21tZW50IGV4cGxhaW5pbmcgdGhlICdt YWdpYycgZmllbGQKPiB2MTogc2VsZiArIEphbiBmZWVkYmFjazogaW1wbGVtZW50IHNvZnQgcmVz ZXQKPiB2MTogZmVlZGJhY2sgIzEzIFJvZ2VyOiB1c2UgQVNTRVJUX1VOUkVBQ0hBQkxFCj4gCj4g IGRvY3MvbWlzYy94ZW4tY29tbWFuZC1saW5lLnBhbmRvYyB8ICAxMSArCj4gIHhlbi9jb21tb24v YXJnby5jICAgICAgICAgICAgICAgICB8IDQ2MSArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrLQo+ICB4ZW4vY29tbW9uL2RvbWFpbi5jICAgICAgICAgICAgICAgfCAgMjAgKysK PiAgeGVuL2luY2x1ZGUvTWFrZWZpbGUgICAgICAgICAgICAgIHwgICAxICsKPiAgeGVuL2luY2x1 ZGUvcHVibGljL2FyZ28uaCAgICAgICAgIHwgIDU5ICsrKysrCj4gIHhlbi9pbmNsdWRlL3hlbi9h cmdvLmggICAgICAgICAgICB8ICAyMyArKwo+ICB4ZW4vaW5jbHVkZS94ZW4vc2NoZWQuaCAgICAg ICAgICAgfCAgIDYgKwo+ICB4ZW4vaW5jbHVkZS94bGF0LmxzdCAgICAgICAgICAgICAgfCAgIDIg Kwo+ICA4IGZpbGVzIGNoYW5nZWQsIDU4MiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCj4g IGNyZWF0ZSBtb2RlIDEwMDY0NCB4ZW4vaW5jbHVkZS9wdWJsaWMvYXJnby5oCj4gIGNyZWF0ZSBt b2RlIDEwMDY0NCB4ZW4vaW5jbHVkZS94ZW4vYXJnby5oCj4gCj4gZGlmZiAtLWdpdCBhL2RvY3Mv bWlzYy94ZW4tY29tbWFuZC1saW5lLnBhbmRvYyBiL2RvY3MvbWlzYy94ZW4tY29tbWFuZC1saW5l LnBhbmRvYwo+IGluZGV4IGE3NTVhNjcuLmFlYTEzZWIgMTAwNjQ0Cj4gLS0tIGEvZG9jcy9taXNj L3hlbi1jb21tYW5kLWxpbmUucGFuZG9jCj4gKysrIGIvZG9jcy9taXNjL3hlbi1jb21tYW5kLWxp bmUucGFuZG9jCj4gQEAgLTE4Miw2ICsxODIsMTcgQEAgUGVybWl0IFhlbiB0byB1c2UgIkFsd2F5 cyBSdW5uaW5nIEFQSUMgVGltZXIiIHN1cHBvcnQgb24gY29tcGF0aWJsZSBoYXJkd2FyZQo+ICBp biBjb21iaW5hdGlvbiB3aXRoIGNwdWlkbGUuICBUaGlzIG9wdGlvbiBpcyBvbmx5IGV4cGVjdGVk IHRvIGJlIHVzZWZ1bCBmb3IKPiAgZGV2ZWxvcGVycyB3aXNoaW5nIFhlbiB0byBmYWxsIGJhY2sg dG8gb2xkZXIgdGltaW5nIG1ldGhvZHMgb24gbmV3ZXIgaGFyZHdhcmUuCj4gIAo+ICsjIyMgYXJn bwo+ICs+IGA9IDxib29sZWFuPmAKPiArCj4gKz4gRGVmYXVsdDogYGZhbHNlYAo+ICsKPiArRW5h YmxlIHRoZSBBcmdvIGh5cGVydmlzb3ItbWVkaWF0ZWQgaW50ZXJkb21haW4gY29tbXVuaWNhdGlv biBtZWNoYW5pc20uCj4gKwo+ICtUaGlzIGFsbG93cyBkb21haW5zIGFjY2VzcyB0byB0aGUgQXJn byBoeXBlcmNhbGwsIHdoaWNoIHN1cHBvcnRzIHJlZ2lzdHJhdGlvbgo+ICtvZiBtZW1vcnkgcmlu Z3Mgd2l0aCB0aGUgaHlwZXJ2aXNvciB0byByZWNlaXZlIG1lc3NhZ2VzLCBzZW5kaW5nIG1lc3Nh Z2VzIHRvCj4gK290aGVyIGRvbWFpbnMgYnkgaHlwZXJjYWxsIGFuZCBxdWVyeWluZyB0aGUgcmlu ZyBzdGF0dXMgb2Ygb3RoZXIgZG9tYWlucy4KPiArCj4gICMjIyBhc2lkICh4ODYpCj4gID4gYD0g PGJvb2xlYW4+YAo+ICAKPiBkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9hcmdvLmMgYi94ZW4vY29t bW9uL2FyZ28uYwo+IGluZGV4IDZmNzgyZjcuLjg2MTk1ZDMgMTAwNjQ0Cj4gLS0tIGEveGVuL2Nv bW1vbi9hcmdvLmMKPiArKysgYi94ZW4vY29tbW9uL2FyZ28uYwo+IEBAIC0xNyw3ICsxNywxNzcg QEAKPiAgICovCj4gIAo+ICAjaW5jbHVkZSA8eGVuL2Vycm5vLmg+Cj4gKyNpbmNsdWRlIDx4ZW4v c2NoZWQuaD4KPiArI2luY2x1ZGUgPHhlbi9kb21haW4uaD4KPiArI2luY2x1ZGUgPHhlbi9hcmdv Lmg+Cj4gKyNpbmNsdWRlIDx4ZW4vZXZlbnQuaD4KPiArI2luY2x1ZGUgPHhlbi9kb21haW5fcGFn ZS5oPgo+ICAjaW5jbHVkZSA8eGVuL2d1ZXN0X2FjY2Vzcy5oPgo+ICsjaW5jbHVkZSA8eGVuL3Rp bWUuaD4KPiArI2luY2x1ZGUgPHB1YmxpYy9hcmdvLmg+Cj4gKwo+ICtERUZJTkVfWEVOX0dVRVNU X0hBTkRMRSh4ZW5fYXJnb19hZGRyX3QpOwo+ICtERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5f YXJnb19yaW5nX3QpOwo+ICsKPiArLyogWGVuIGNvbW1hbmQgbGluZSBvcHRpb24gdG8gZW5hYmxl IGFyZ28gKi8KPiArc3RhdGljIGJvb2wgX19yZWFkX21vc3RseSBvcHRfYXJnb19lbmFibGVkOwo+ ICtib29sZWFuX3BhcmFtKCJhcmdvIiwgb3B0X2FyZ29fZW5hYmxlZCk7Cj4gKwo+ICt0eXBlZGVm IHN0cnVjdCBhcmdvX3JpbmdfaWQKPiArewo+ICsgICAgdWludDMyX3QgcG9ydDsKPiArICAgIGRv bWlkX3QgcGFydG5lcl9pZDsKPiArICAgIGRvbWlkX3QgZG9tYWluX2lkOwo+ICt9IGFyZ29fcmlu Z19pZDsKPiArCj4gKy8qIERhdGEgYWJvdXQgYSBkb21haW4ncyBvd24gcmluZyB0aGF0IGl0IGhh cyByZWdpc3RlcmVkICovCj4gK3N0cnVjdCBhcmdvX3JpbmdfaW5mbwo+ICt7Cj4gKyAgICAvKiBu ZXh0IG5vZGUgaW4gdGhlIGhhc2gsIHByb3RlY3RlZCBieSBMMiAqLwo+ICsgICAgc3RydWN0IGhs aXN0X25vZGUgbm9kZTsKPiArICAgIC8qIHRoaXMgcmluZydzIGlkLCBwcm90ZWN0ZWQgYnkgTDIg Ki8KPiArICAgIHN0cnVjdCBhcmdvX3JpbmdfaWQgaWQ7Cj4gKyAgICAvKiBMMyAqLwo+ICsgICAg c3BpbmxvY2tfdCBsb2NrOwo+ICsgICAgLyogbGVuZ3RoIG9mIHRoZSByaW5nLCBwcm90ZWN0ZWQg YnkgTDMgKi8KPiArICAgIHVpbnQzMl90IGxlbjsKPiArICAgIC8qIG51bWJlciBvZiBwYWdlcyBp biB0aGUgcmluZywgcHJvdGVjdGVkIGJ5IEwzICovCj4gKyAgICB1aW50MzJfdCBucGFnZTsKPiAr ICAgIC8qIG51bWJlciBvZiBwYWdlcyB0cmFuc2xhdGVkIGludG8gbWZucywgcHJvdGVjdGVkIGJ5 IEwzICovCj4gKyAgICB1aW50MzJfdCBubWZuczsKPiArICAgIC8qIGNhY2hlZCB0eCBwb2ludGVy IGxvY2F0aW9uLCBwcm90ZWN0ZWQgYnkgTDMgKi8KPiArICAgIHVpbnQzMl90IHR4X3B0cjsKPiAr ICAgIC8qIG1hcHBlZCByaW5nIHBhZ2VzIHByb3RlY3RlZCBieSBMMyAqLwo+ICsgICAgdWludDhf dCAqKm1mbl9tYXBwaW5nOwo+ICsgICAgLyogbGlzdCBvZiBtZm5zIG9mIGd1ZXN0IHJpbmcsIHBy b3RlY3RlZCBieSBMMyAqLwo+ICsgICAgbWZuX3QgKm1mbnM7Cj4gKyAgICAvKiBsaXN0IG9mIHN0 cnVjdCBwZW5kaW5nX2VudCBmb3IgdGhpcyByaW5nLCBwcm90ZWN0ZWQgYnkgTDMgKi8KPiArICAg IHN0cnVjdCBobGlzdF9oZWFkIHBlbmRpbmc7Cj4gKyAgICAvKiBudW1iZXIgb2YgcGVuZGluZyBl bnRyaWVzIHF1ZXVlZCBmb3IgdGhpcyByaW5nLCBwcm90ZWN0ZWQgYnkgTDMgKi8KPiArICAgIHVp bnQzMl90IG5wZW5kaW5nOwo+ICt9Owo+ICsKPiArLyogRGF0YSBhYm91dCBhIHNpbmdsZS1zZW5k ZXIgcmluZywgaGVsZCBieSB0aGUgc2VuZGVyIChwYXJ0bmVyKSBkb21haW4gKi8KPiArc3RydWN0 IGFyZ29fc2VuZF9pbmZvCj4gK3sKPiArICAgIC8qIG5leHQgbm9kZSBpbiB0aGUgaGFzaCwgcHJv dGVjdGVkIGJ5IExzZW5kICovCj4gKyAgICBzdHJ1Y3QgaGxpc3Rfbm9kZSBub2RlOwo+ICsgICAg LyogdGhpcyByaW5nJ3MgaWQsIHByb3RlY3RlZCBieSBMc2VuZCAqLwo+ICsgICAgc3RydWN0IGFy Z29fcmluZ19pZCBpZDsKPiArfTsKPiArCj4gKy8qIEEgc3BhY2UtYXZhaWxhYmxlIG5vdGlmaWNh dGlvbiB0aGF0IGlzIGF3YWl0aW5nIHN1ZmZpY2llbnQgc3BhY2UgKi8KPiArc3RydWN0IHBlbmRp bmdfZW50Cj4gK3sKPiArICAgIC8qIExpc3Qgbm9kZSB3aXRoaW4gYXJnb19yaW5nX2luZm8ncyBw ZW5kaW5nIGxpc3QgKi8KPiArICAgIHN0cnVjdCBobGlzdF9ub2RlIG5vZGU7Cj4gKyAgICAvKgo+ ICsgICAgICogTGlzdCBub2RlIHdpdGhpbiBhcmdvX2RvbWFpbidzIHdpbGRjYXJkX3BlbmRfbGlz dC4gT25seSB1c2VkIGlmIHRoZQo+ICsgICAgICogcmluZyBpcyBvbmUgd2l0aCBhIHdpbGRjYXJk IHBhcnRuZXIgKGllLiB0aGF0IGFueSBkb21haW4gbWF5IHNlbmQgdG8pCj4gKyAgICAgKiB0byBl bmFibGUgY2FuY2VsbGluZyBzaWduYWxzIG9uIHdpbGRjYXJkIHJpbmdzIG9uIGRvbWFpbiBkZXN0 cm95Lgo+ICsgICAgICovCj4gKyAgICBzdHJ1Y3QgaGxpc3Rfbm9kZSB3aWxkY2FyZF9ub2RlOwo+ ICsgICAgLyoKPiArICAgICAqIFBvaW50ZXIgdG8gdGhlIHJpbmdfaW5mbyB0aGF0IHRoaXMgZW50 IHBlcnRhaW5zIHRvLiBVc2VkIHRvIGVuc3VyZSB0aGF0Cj4gKyAgICAgKiByaW5nX2luZm8tPm5w ZW5kaW5nIGlzIGRlY3JlbWVudGVkIHdoZW4gZW50cyBmb3Igd2lsZGNhcmQgcmluZ3MgYXJlCj4g KyAgICAgKiBjYW5jZWxsZWQgZm9yIGRvbWFpbiBkZXN0cm95Lgo+ICsgICAgICogQ2F1dGlvbjog TXVzdCBob2xkIHRoZSBjb3JyZWN0IGxvY2tzIGJlZm9yZSBhY2Nlc3NpbmcgcmluZ19pbmZvIHZp YSB0aGlzLgo+ICsgICAgICovCj4gKyAgICBzdHJ1Y3QgYXJnb19yaW5nX2luZm8gKnJpbmdfaW5m bzsKPiArICAgIC8qIGRvbWFpbiB0byBiZSBub3RpZmllZCB3aGVuIHNwYWNlIGlzIGF2YWlsYWJs ZSAqLwo+ICsgICAgZG9taWRfdCBkb21haW5faWQ7Cj4gKyAgICB1aW50MTZfdCBwYWQ7Cj4gKyAg ICAvKiBtaW5pbXVtIHJpbmcgc3BhY2UgYXZhaWxhYmxlIHRoYXQgdGhpcyBzaWduYWwgaXMgd2Fp dGluZyB1cG9uICovCj4gKyAgICB1aW50MzJfdCBsZW47Cj4gK307Cj4gKwo+ICsvKgo+ICsgKiBU aGUgdmFsdWUgb2YgdGhlIGFyZ28gZWxlbWVudCBpbiBhIHN0cnVjdCBkb21haW4gaXMKPiArICog cHJvdGVjdGVkIGJ5IHRoZSBnbG9iYWwgbG9jayBhcmdvX2xvY2s6IEwxCj4gKyAqLwo+ICsjZGVm aW5lIEFSR09fSFRBQkxFX1NJWkUgMzIKPiArc3RydWN0IGFyZ29fZG9tYWluCj4gK3sKPiArICAg IC8qIEwyICovCj4gKyAgICByd2xvY2tfdCBsb2NrOwo+ICsgICAgLyoKPiArICAgICAqIEhhc2gg dGFibGUgb2YgYXJnb19yaW5nX2luZm8gYWJvdXQgcmluZ3MgdGhpcyBkb21haW4gaGFzIHJlZ2lz dGVyZWQuCj4gKyAgICAgKiBQcm90ZWN0ZWQgYnkgTDIuCj4gKyAgICAgKi8KPiArICAgIHN0cnVj dCBobGlzdF9oZWFkIHJpbmdfaGFzaFtBUkdPX0hUQUJMRV9TSVpFXTsKPiArICAgIC8qIENvdW50 ZXIgb2YgcmluZ3MgcmVnaXN0ZXJlZCBieSB0aGlzIGRvbWFpbi4gUHJvdGVjdGVkIGJ5IEwyLiAq Lwo+ICsgICAgdWludDMyX3QgcmluZ19jb3VudDsKPiArCj4gKyAgICAvKiBMc2VuZCAqLwo+ICsg ICAgc3BpbmxvY2tfdCBzZW5kX2xvY2s7Cj4gKyAgICAvKgo+ICsgICAgICogSGFzaCB0YWJsZSBv ZiBhcmdvX3NlbmRfaW5mbyBhYm91dCByaW5ncyBvdGhlciBkb21haW5zIGhhdmUgcmVnaXN0ZXJl ZAo+ICsgICAgICogZm9yIHRoaXMgZG9tYWluIHRvIHNlbmQgdG8uIFNpbmdsZSBwYXJ0bmVyLCBu b24td2lsZGNhcmQgcmluZ3MuCj4gKyAgICAgKiBQcm90ZWN0ZWQgYnkgTHNlbmQuCj4gKyAgICAg Ki8KPiArICAgIHN0cnVjdCBobGlzdF9oZWFkIHNlbmRfaGFzaFtBUkdPX0hUQUJMRV9TSVpFXTsK PiArCj4gKyAgICAvKiBMd2lsZGNhcmQgKi8KPiArICAgIHNwaW5sb2NrX3Qgd2lsZGNhcmRfbG9j azsKPiArICAgIC8qCj4gKyAgICAgKiBMaXN0IG9mIHBlbmRpbmcgc3BhY2UtYXZhaWxhYmxlIHNp Z25hbHMgZm9yIHRoaXMgZG9tYWluIGFib3V0IHdpbGRjYXJkCj4gKyAgICAgKiByaW5ncyByZWdp c3RlcmVkIGJ5IG90aGVyIGRvbWFpbnMuIFByb3RlY3RlZCBieSBMd2lsZGNhcmQuCj4gKyAgICAg Ki8KPiArICAgIHN0cnVjdCBobGlzdF9oZWFkIHdpbGRjYXJkX3BlbmRfbGlzdDsKPiArfTsKPiAr Cj4gKy8qCj4gKyAqIExvY2tpbmcgaXMgb3JnYW5pemVkIGFzIGZvbGxvd3M6Cj4gKyAqCj4gKyAq IFRlcm1pbm9sb2d5OiBSKDxsb2NrPikgbWVhbnMgdGFraW5nIGEgcmVhZCBsb2NrIG9uIHRoZSBz cGVjaWZpZWQgbG9jazsKPiArICogICAgICAgICAgICAgIFcoPGxvY2s+KSBtZWFucyB0YWtpbmcg YSB3cml0ZSBsb2NrIG9uIGl0Lgo+ICsgKgo+ICsgKiBMMSA6IFRoZSBnbG9iYWwgbG9jazogYXJn b19sb2NrCj4gKyAqIFByb3RlY3RzIHRoZSBhcmdvIGVsZW1lbnRzIG9mIGFsbCBzdHJ1Y3QgZG9t YWluICpkIGluIHRoZSBzeXN0ZW0uCj4gKyAqIEl0IGRvZXMgbm90IHByb3RlY3QgYW55IG9mIHRo ZSBlbGVtZW50cyBvZiBkLT5hcmdvLCBvbmx5IHRoZWlyCj4gKyAqIGFkZHJlc3Nlcy4KPiArICoK PiArICogQnkgZXh0ZW5zaW9uIHNpbmNlIHRoZSBkZXN0cnVjdGlvbiBvZiBhIGRvbWFpbiB3aXRo IGEgbm9uLU5VTEwKPiArICogZC0+YXJnbyB3aWxsIG5lZWQgdG8gZnJlZSB0aGUgZC0+YXJnbyBw b2ludGVyLCBob2xkaW5nIFcoTDEpCj4gKyAqIGd1YXJhbnRlZXMgdGhhdCBubyBkb21haW5zIHBv aW50ZXJzIHRoYXQgYXJnbyBpcyBpbnRlcmVzdGVkIGluCj4gKyAqIGJlY29tZSBpbnZhbGlkIHdo aWxzdCB0aGlzIGxvY2sgaXMgaGVsZC4KPiArICovCj4gKwo+ICtzdGF0aWMgREVGSU5FX1JXTE9D SyhhcmdvX2xvY2spOyAvKiBMMSAqLwo+ICsKPiArLyoKPiArICogTDIgOiBUaGUgcGVyLWRvbWFp biByaW5nIGhhc2ggbG9jazogZC0+YXJnby0+bG9jawo+ICsgKiBIb2xkaW5nIGEgcmVhZCBsb2Nr IG9uIEwyIHByb3RlY3RzIHRoZSByaW5nIGhhc2ggdGFibGUgYW5kCj4gKyAqIHRoZSBlbGVtZW50 cyBpbiB0aGUgaGFzaF90YWJsZSBkLT5hcmdvLT5yaW5nX2hhc2gsIGFuZAo+ICsgKiB0aGUgbm9k ZSBhbmQgaWQgZmllbGRzIGluIHN0cnVjdCBhcmdvX3JpbmdfaW5mbyBpbiB0aGUKPiArICogaGFz aCB0YWJsZS4KPiArICogSG9sZGluZyBhIHdyaXRlIGxvY2sgb24gTDIgcHJvdGVjdHMgYWxsIG9m IHRoZSBlbGVtZW50cyBvZgo+ICsgKiBzdHJ1Y3QgYXJnb19yaW5nX2luZm8uCj4gKyAqCj4gKyAq IFRvIHRha2UgTDIgeW91IG11c3QgYWxyZWFkeSBoYXZlIFIoTDEpLiBXKEwxKSBpbXBsaWVzIFco TDIpIGFuZCBMMy4KPiArICoKPiArICogTDMgOiBUaGUgcmluZ2luZm8gbG9jazogYXJnb19yaW5n X2luZm8gKnJpbmdpbmZvOyByaW5naW5mby0+bG9jawo+ICsgKiBQcm90ZWN0cyBhbGwgdGhlIGZp ZWxkcyB3aXRoaW4gdGhlIGFyZ29fcmluZ19pbmZvLCBhc2lkZSBmcm9tIHRoZSBvbmVzIHRoYXQK PiArICogTDIgYWxyZWFkeSBwcm90ZWN0czogbm9kZSwgaWQsIGxvY2suCj4gKyAqCj4gKyAqIFRv IGFxdWlyZSBMMyB5b3UgbXVzdCBhbHJlYWR5IGhhdmUgUihMMikuIFcoTDIpIGltcGxpZXMgTDMu Cj4gKyAqCj4gKyAqIExzZW5kIDogVGhlIHBlci1kb21haW4gc2luZ2xlLXNlbmRlciBwYXJ0bmVy IHJpbmdzIGxvY2s6IGQtPmFyZ28tPnNlbmRfbG9jawo+ICsgKiBQcm90ZWN0cyB0aGUgcGVyLWRv bWFpbiBzZW5kIGhhc2ggdGFibGUgOiBkLT5hcmdvLT5zZW5kX2hhc2gKPiArICogYW5kIHRoZSBl bGVtZW50cyBpbiB0aGUgaGFzaCB0YWJsZSwgYW5kIHRoZSBub2RlIGFuZCBpZCBmaWVsZHMKPiAr ICogaW4gc3RydWN0IGFyZ29fc2VuZF9pbmZvIGluIHRoZSBoYXNoIHRhYmxlLgo+ICsgKgo+ICsg KiBUbyB0YWtlIExzZW5kLCB5b3UgbXVzdCBhbHJlYWR5IGhhdmUgUihMMSkuIFcoTDEpIGltcGxp ZXMgTHNlbmQuCj4gKyAqIERvIG5vdCBhdHRlbXB0IHRvIGFjcXVpcmUgYSBMMiBvbiBhbnkgZG9t YWluIGFmdGVyIHRha2luZyBhbmQgd2hpbGUKPiArICogaG9sZGluZyBhIExzZW5kIGxvY2sgLS0g YWNxdWlyZSB0aGUgTDIgKGlmIG9uZSBpcyBuZWVkZWQpIGJlZm9yZWhhbmQuCj4gKyAqCj4gKyAq IEx3aWxkY2FyZCA6IFRoZSBwZXItZG9tYWluIHdpbGRjYXJkIHBlbmRpbmcgbGlzdCBsb2NrOiBk LT5hcmdvLT53aWxkY2FyZF9sb2NrCj4gKyAqIFByb3RlY3RzIHRoZSBwZXItZG9tYWluIGxpc3Qg b2Ygb3V0c3RhbmRpbmcgc2lnbmFscyBmb3Igc3BhY2UgYXZhaWxhYmlsaXR5Cj4gKyAqIG9uIHdp bGRjYXJkIHJpbmdzLgo+ICsgKgo+ICsgKiBUbyB0YWtlIEx3aWxkY2FyZCwgeW91IG11c3QgYWxy ZWFkeSBoYXZlIFIoTDEpLiBXKEwxKSBpbXBsaWVzIEx3aWxkY2FyZC4KPiArICogTm8gb3RoZXIg bG9ja3MgYXJlIGFjcXVpcmVkIGFmdGVyIG9idGFpbmluZyBMd2lsZGNhcmQuCj4gKyAqLwo+ICAK PiAgLyogQ2hhbmdlIHRoaXMgdG8gI2RlZmluZSBBUkdPX0RFQlVHIGhlcmUgdG8gZW5hYmxlIG1v cmUgZGVidWcgbWVzc2FnZXMgKi8KPiAgI3VuZGVmIEFSR09fREVCVUcKPiBAQCAtMjgsMTAgKzE5 OCwyOTkgQEAKPiAgI2RlZmluZSBhcmdvX2RwcmludGsoZm9ybWF0LCAuLi4gKSAoKHZvaWQpMCkK PiAgI2VuZGlmCj4gIAo+ICtzdGF0aWMgdm9pZAo+ICtyaW5nX3VubWFwKHN0cnVjdCBhcmdvX3Jp bmdfaW5mbyAqcmluZ19pbmZvKQo+ICt7Cj4gKyAgICB1bnNpZ25lZCBpbnQgaTsKPiArCj4gKyAg ICBpZiAoICFyaW5nX2luZm8tPm1mbl9tYXBwaW5nICkKPiArICAgICAgICByZXR1cm47Cj4gKwo+ ICsgICAgZm9yICggaSA9IDA7IGkgPCByaW5nX2luZm8tPm5tZm5zOyBpKysgKQo+ICsgICAgewo+ ICsgICAgICAgIGlmICggIXJpbmdfaW5mby0+bWZuX21hcHBpbmdbaV0gKQo+ICsgICAgICAgICAg ICBjb250aW51ZTsKPiArICAgICAgICBpZiAoIHJpbmdfaW5mby0+bWZucyApCj4gKyAgICAgICAg ICAgIGFyZ29fZHByaW50ayhYRU5MT0dfRVJSICJhcmdvOiB1bm1hcHBpbmcgcGFnZSAlIlBSSV9t Zm4iIGZyb20gJXBcbiIsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICBtZm5feChyaW5nX2lu Zm8tPm1mbnNbaV0pLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgcmluZ19pbmZvLT5tZm5f bWFwcGluZ1tpXSk7Cj4gKyAgICAgICAgdW5tYXBfZG9tYWluX3BhZ2VfZ2xvYmFsKHJpbmdfaW5m by0+bWZuX21hcHBpbmdbaV0pOwo+ICsgICAgICAgIHJpbmdfaW5mby0+bWZuX21hcHBpbmdbaV0g PSBOVUxMOwo+ICsgICAgfQo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZAo+ICt3aWxkY2FyZF9wZW5k aW5nX2xpc3RfcmVtb3ZlKGRvbWlkX3QgZG9tYWluX2lkLCBzdHJ1Y3QgcGVuZGluZ19lbnQgKmVu dCkKPiArewo+ICsgICAgc3RydWN0IGRvbWFpbiAqZCA9IGdldF9kb21haW5fYnlfaWQoZG9tYWlu X2lkKTsKPiArICAgIGlmICggIWQgKQo+ICsgICAgICAgIHJldHVybjsKPiArCj4gKyAgICBpZiAo IGQtPmFyZ28gKQo+ICsgICAgewo+ICsgICAgICAgIHNwaW5fbG9jaygmZC0+YXJnby0+d2lsZGNh cmRfbG9jayk7Cj4gKyAgICAgICAgaGxpc3RfZGVsKCZlbnQtPndpbGRjYXJkX25vZGUpOwo+ICsg ICAgICAgIHNwaW5fdW5sb2NrKCZkLT5hcmdvLT53aWxkY2FyZF9sb2NrKTsKPiArICAgIH0KPiAr ICAgIHB1dF9kb21haW4oZCk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkCj4gK3BlbmRpbmdfcmVt b3ZlX2FsbChzdHJ1Y3QgYXJnb19yaW5nX2luZm8gKnJpbmdfaW5mbykKPiArewo+ICsgICAgc3Ry dWN0IGhsaXN0X25vZGUgKm5vZGUsICpuZXh0Owo+ICsgICAgc3RydWN0IHBlbmRpbmdfZW50ICpl bnQ7Cj4gKwo+ICsgICAgaGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShlbnQsIG5vZGUsIG5leHQs ICZyaW5nX2luZm8tPnBlbmRpbmcsIG5vZGUpCj4gKyAgICB7Cj4gKyAgICAgICAgaWYgKCByaW5n X2luZm8tPmlkLnBhcnRuZXJfaWQgPT0gWEVOX0FSR09fRE9NSURfQU5ZICkKPiArICAgICAgICAg ICAgd2lsZGNhcmRfcGVuZGluZ19saXN0X3JlbW92ZShlbnQtPmRvbWFpbl9pZCwgZW50KTsKPiAr ICAgICAgICBobGlzdF9kZWwoJmVudC0+bm9kZSk7Cj4gKyAgICAgICAgeGZyZWUoZW50KTsKPiAr ICAgIH0KPiArICAgIHJpbmdfaW5mby0+bnBlbmRpbmcgPSAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMg dm9pZAo+ICt3aWxkY2FyZF9yaW5nc19wZW5kaW5nX3JlbW92ZShzdHJ1Y3QgZG9tYWluICpkKQo+ ICt7Cj4gKyAgICBzdHJ1Y3QgaGxpc3Rfbm9kZSAqbm9kZSwgKm5leHQ7Cj4gKyAgICBzdHJ1Y3Qg cGVuZGluZ19lbnQgKmVudDsKPiArCj4gKyAgICBBU1NFUlQocndfaXNfd3JpdGVfbG9ja2VkKCZh cmdvX2xvY2spKTsKPiArCj4gKyAgICBobGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGVudCwgbm9k ZSwgbmV4dCwgJmQtPmFyZ28tPndpbGRjYXJkX3BlbmRfbGlzdCwKPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbm9kZSkKPiArICAgIHsKPiArICAgICAgICBobGlzdF9kZWwoJmVudC0+ bm9kZSk7Cj4gKyAgICAgICAgZW50LT5yaW5nX2luZm8tPm5wZW5kaW5nLS07Cj4gKyAgICAgICAg aGxpc3RfZGVsKCZlbnQtPndpbGRjYXJkX25vZGUpOwo+ICsgICAgICAgIHhmcmVlKGVudCk7Cj4g KyAgICB9Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkCj4gK3JpbmdfcmVtb3ZlX21mbnMoY29uc3Qg c3RydWN0IGRvbWFpbiAqZCwgc3RydWN0IGFyZ29fcmluZ19pbmZvICpyaW5nX2luZm8pCj4gK3sK PiArICAgIHVuc2lnbmVkIGludCBpOwo+ICsKPiArICAgIEFTU0VSVChyd19pc193cml0ZV9sb2Nr ZWQoJmQtPmFyZ28tPmxvY2spIHx8Cj4gKyAgICAgICAgICAgcndfaXNfd3JpdGVfbG9ja2VkKCZh cmdvX2xvY2spKTsKPiArCj4gKyAgICBpZiAoICFyaW5nX2luZm8tPm1mbnMgKQo+ICsgICAgICAg IHJldHVybjsKPiArCj4gKyAgICBpZiAoICFyaW5nX2luZm8tPm1mbl9tYXBwaW5nICkKPiArICAg IHsKPiArICAgICAgICBBU1NFUlRfVU5SRUFDSEFCTEUoKTsKPiArICAgICAgICByZXR1cm47Cj4g KyAgICB9Cj4gKwo+ICsgICAgcmluZ191bm1hcChyaW5nX2luZm8pOwo+ICsKPiArICAgIGZvciAo IGkgPSAwOyBpIDwgcmluZ19pbmZvLT5ubWZuczsgaSsrICkKPiArICAgICAgICBpZiAoICFtZm5f ZXEocmluZ19pbmZvLT5tZm5zW2ldLCBJTlZBTElEX01GTikgKQo+ICsgICAgICAgICAgICBwdXRf cGFnZV9hbmRfdHlwZShtZm5fdG9fcGFnZShyaW5nX2luZm8tPm1mbnNbaV0pKTsKPiArCj4gKyAg ICB4ZnJlZShyaW5nX2luZm8tPm1mbnMpOwo+ICsgICAgcmluZ19pbmZvLT5tZm5zID0gTlVMTDsK PiArICAgIHJpbmdfaW5mby0+bnBhZ2UgPSAwOwo+ICsgICAgeGZyZWUocmluZ19pbmZvLT5tZm5f bWFwcGluZyk7Cj4gKyAgICByaW5nX2luZm8tPm1mbl9tYXBwaW5nID0gTlVMTDsKPiArICAgIHJp bmdfaW5mby0+bm1mbnMgPSAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZAo+ICtyaW5nX3JlbW92 ZV9pbmZvKHN0cnVjdCBkb21haW4gKmQsIHN0cnVjdCBhcmdvX3JpbmdfaW5mbyAqcmluZ19pbmZv KQo+ICt7Cj4gKyAgICBBU1NFUlQocndfaXNfd3JpdGVfbG9ja2VkKCZkLT5hcmdvLT5sb2NrKSB8 fAo+ICsgICAgICAgICAgIHJ3X2lzX3dyaXRlX2xvY2tlZCgmYXJnb19sb2NrKSk7Cj4gKwo+ICsg ICAgcGVuZGluZ19yZW1vdmVfYWxsKHJpbmdfaW5mbyk7Cj4gKyAgICBobGlzdF9kZWwoJnJpbmdf aW5mby0+bm9kZSk7Cj4gKyAgICByaW5nX3JlbW92ZV9tZm5zKGQsIHJpbmdfaW5mbyk7Cj4gKyAg ICB4ZnJlZShyaW5nX2luZm8pOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZAo+ICtkb21haW5fcmlu Z3NfcmVtb3ZlX2FsbChzdHJ1Y3QgZG9tYWluICpkKQo+ICt7Cj4gKyAgICB1bnNpZ25lZCBpbnQg aTsKPiArCj4gKyAgICBmb3IgKCBpID0gMDsgaSA8IEFSR09fSFRBQkxFX1NJWkU7ICsraSApCj4g KyAgICB7Cj4gKyAgICAgICAgc3RydWN0IGhsaXN0X25vZGUgKm5vZGUsICpuZXh0Owo+ICsgICAg ICAgIHN0cnVjdCBhcmdvX3JpbmdfaW5mbyAqcmluZ19pbmZvOwo+ICsKPiArICAgICAgICBobGlz dF9mb3JfZWFjaF9lbnRyeV9zYWZlKHJpbmdfaW5mbywgbm9kZSwgbmV4dCwKPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICZkLT5hcmdvLT5yaW5nX2hhc2hbaV0sIG5vZGUpCj4g KyAgICAgICAgICAgIHJpbmdfcmVtb3ZlX2luZm8oZCwgcmluZ19pbmZvKTsKPiArICAgIH0KPiAr ICAgIGQtPmFyZ28tPnJpbmdfY291bnQgPSAwOwo+ICt9Cj4gKwo+ICsvKgo+ICsgKiBUZWFyIGRv d24gYWxsIHJpbmdzIG9mIG90aGVyIGRvbWFpbnMgd2hlcmUgc3JjX2QgZG9tYWluIGlzIHRoZSBw YXJ0bmVyLgo+ICsgKiAoaWUuIGl0IGlzIHRoZSBzaW5nbGUgZG9tYWluIHRoYXQgY2FuIHNlbmQg dG8gdGhvc2UgcmluZ3MuKQo+ICsgKiBUaGlzIHdpbGwgYWxzbyBjYW5jZWwgYW55IHBlbmRpbmcg bm90aWZpY2F0aW9ucyBhYm91dCB0aG9zZSByaW5ncy4KPiArICovCj4gK3N0YXRpYyB2b2lkCj4g K3BhcnRuZXJfcmluZ3NfcmVtb3ZlKHN0cnVjdCBkb21haW4gKnNyY19kKQo+ICt7Cj4gKyAgICB1 bnNpZ25lZCBpbnQgaTsKPiArCj4gKyAgICBBU1NFUlQocndfaXNfd3JpdGVfbG9ja2VkKCZhcmdv X2xvY2spKTsKPiArCj4gKyAgICBmb3IgKCBpID0gMDsgaSA8IEFSR09fSFRBQkxFX1NJWkU7ICsr aSApCj4gKyAgICB7Cj4gKyAgICAgICAgc3RydWN0IGhsaXN0X25vZGUgKm5vZGUsICpuZXh0Owo+ ICsgICAgICAgIHN0cnVjdCBhcmdvX3NlbmRfaW5mbyAqc2VuZF9pbmZvOwo+ICsKPiArICAgICAg ICBobGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHNlbmRfaW5mbywgbm9kZSwgbmV4dCwKPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzcmNfZC0+YXJnby0+c2VuZF9oYXNoW2ld LCBub2RlKQo+ICsgICAgICAgIHsKPiArICAgICAgICAgICAgc3RydWN0IGFyZ29fcmluZ19pbmZv ICpyaW5nX2luZm87Cj4gKyAgICAgICAgICAgIHN0cnVjdCBkb21haW4gKmRzdF9kOwo+ICsKPiAr ICAgICAgICAgICAgZHN0X2QgPSBnZXRfZG9tYWluX2J5X2lkKHNlbmRfaW5mby0+aWQuZG9tYWlu X2lkKTsKPiArICAgICAgICAgICAgaWYgKCBkc3RfZCApCj4gKyAgICAgICAgICAgIHsKPiArICAg ICAgICAgICAgICAgIHJpbmdfaW5mbyA9IHJpbmdfZmluZF9pbmZvKGRzdF9kLCAmc2VuZF9pbmZv LT5pZCk7Cj4gKyAgICAgICAgICAgICAgICBpZiAoIHJpbmdfaW5mbyApCj4gKyAgICAgICAgICAg ICAgICB7Cj4gKyAgICAgICAgICAgICAgICAgICAgcmluZ19yZW1vdmVfaW5mbyhkc3RfZCwgcmlu Z19pbmZvKTsKPiArICAgICAgICAgICAgICAgICAgICBkc3RfZC0+YXJnby0+cmluZ19jb3VudC0t Owo+ICsgICAgICAgICAgICAgICAgfQo+ICsKPiArICAgICAgICAgICAgICAgIHB1dF9kb21haW4o ZHN0X2QpOwo+ICsgICAgICAgICAgICB9Cj4gKwo+ICsgICAgICAgICAgICBobGlzdF9kZWwoJnNl bmRfaW5mby0+bm9kZSk7Cj4gKyAgICAgICAgICAgIHhmcmVlKHNlbmRfaW5mbyk7Cj4gKyAgICAg ICAgfQo+ICsgICAgfQo+ICt9Cj4gKwo+ICBsb25nCj4gIGRvX2FyZ29fb3AodW5zaWduZWQgaW50 IGNtZCwgWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh2b2lkKSBhcmcxLAo+ICAgICAgICAgICAgIFhF Tl9HVUVTVF9IQU5ETEVfUEFSQU0odm9pZCkgYXJnMiwgdW5zaWduZWQgbG9uZyBhcmczLAo+ICAg ICAgICAgICAgIHVuc2lnbmVkIGxvbmcgYXJnNCkKPiAgewo+IC0gICAgcmV0dXJuIC1FTk9TWVM7 Cj4gKyAgICBzdHJ1Y3QgZG9tYWluICpjdXJyZCA9IGN1cnJlbnQtPmRvbWFpbjsKPiArICAgIGxv bmcgcmMgPSAtRUZBVUxUOwo+ICsKPiArICAgIGFyZ29fZHByaW50aygiLT5kb19hcmdvX29wKCV1 LCVwLCVwLCVkLCVkKVxuIiwgY21kLAo+ICsgICAgICAgICAgICAgICAgICh2b2lkICopYXJnMS5w LCAodm9pZCAqKWFyZzIucCwgKGludCkgYXJnMywgKGludCkgYXJnNCk7Cj4gKwo+ICsgICAgaWYg KCB1bmxpa2VseSghb3B0X2FyZ29fZW5hYmxlZCkgKQo+ICsgICAgewo+ICsgICAgICAgIHJjID0g LUVPUE5PVFNVUFA7Cj4gKyAgICAgICAgcmV0dXJuIHJjOwo+ICsgICAgfQo+ICsKPiArICAgIGRv bWFpbl9sb2NrKGN1cnJkKTsKPiArCj4gKyAgICBzd2l0Y2ggKGNtZCkKPiArICAgIHsKPiArICAg IGRlZmF1bHQ6Cj4gKyAgICAgICAgcmMgPSAtRU9QTk9UU1VQUDsKPiArICAgICAgICBicmVhazsK PiArICAgIH0KPiArCj4gKyAgICBkb21haW5fdW5sb2NrKGN1cnJkKTsKPiArCj4gKyAgICBhcmdv X2RwcmludGsoIjwtZG9fYXJnb19vcCgldSk9JWxkXG4iLCBjbWQsIHJjKTsKPiArCj4gKyAgICBy ZXR1cm4gcmM7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkCj4gK2FyZ29fZG9tYWluX2luaXQoc3Ry dWN0IGFyZ29fZG9tYWluICphcmdvKQo+ICt7Cj4gKyAgICB1bnNpZ25lZCBpbnQgaTsKPiArCj4g KyAgICByd2xvY2tfaW5pdCgmYXJnby0+bG9jayk7Cj4gKyAgICBzcGluX2xvY2tfaW5pdCgmYXJn by0+c2VuZF9sb2NrKTsKPiArICAgIHNwaW5fbG9ja19pbml0KCZhcmdvLT53aWxkY2FyZF9sb2Nr KTsKPiArICAgIGFyZ28tPnJpbmdfY291bnQgPSAwOwo+ICsKPiArICAgIGZvciAoIGkgPSAwOyBp IDwgQVJHT19IVEFCTEVfU0laRTsgKytpICkKPiArICAgIHsKPiArICAgICAgICBJTklUX0hMSVNU X0hFQUQoJmFyZ28tPnJpbmdfaGFzaFtpXSk7Cj4gKyAgICAgICAgSU5JVF9ITElTVF9IRUFEKCZh cmdvLT5zZW5kX2hhc2hbaV0pOwo+ICsgICAgfQo+ICsgICAgSU5JVF9ITElTVF9IRUFEKCZhcmdv LT53aWxkY2FyZF9wZW5kX2xpc3QpOwo+ICt9Cj4gKwo+ICtpbnQKPiArYXJnb19pbml0KHN0cnVj dCBkb21haW4gKmQpCj4gK3sKPiArICAgIHN0cnVjdCBhcmdvX2RvbWFpbiAqYXJnbzsKPiArCj4g KyAgICBpZiAoICFvcHRfYXJnb19lbmFibGVkICkKPiArICAgIHsKPiArICAgICAgICBhcmdvX2Rw cmludGsoImFyZ28gZGlzYWJsZWQsIGRvbWlkOiAlZFxuIiwgZC0+ZG9tYWluX2lkKTsKPiArICAg ICAgICByZXR1cm4gMDsKPiArICAgIH0KPiArCj4gKyAgICBhcmdvX2RwcmludGsoImluaXQ6IGRv bWlkOiAlZFxuIiwgZC0+ZG9tYWluX2lkKTsKPiArCj4gKyAgICBhcmdvID0geG1hbGxvYyhzdHJ1 Y3QgYXJnb19kb21haW4pOwo+ICsgICAgaWYgKCAhYXJnbyApCj4gKyAgICAgICAgcmV0dXJuIC1F Tk9NRU07Cj4gKwo+ICsgICAgd3JpdGVfbG9jaygmYXJnb19sb2NrKTsKPiArCj4gKyAgICBhcmdv X2RvbWFpbl9pbml0KGFyZ28pOwo+ICsKPiArICAgIGQtPmFyZ28gPSBhcmdvOwo+ICsKPiArICAg IHdyaXRlX3VubG9jaygmYXJnb19sb2NrKTsKPiArCj4gKyAgICByZXR1cm4gMDsKPiArfQo+ICsK PiArdm9pZAo+ICthcmdvX2Rlc3Ryb3koc3RydWN0IGRvbWFpbiAqZCkKPiArewo+ICsgICAgQlVH X09OKCFkLT5pc19keWluZyk7Cj4gKwo+ICsgICAgd3JpdGVfbG9jaygmYXJnb19sb2NrKTsKPiAr Cj4gKyAgICBhcmdvX2RwcmludGsoImRlc3Ryb3k6IGRvbWlkICVkIGQtPmFyZ289JXBcbiIsIGQt PmRvbWFpbl9pZCwgZC0+YXJnbyk7Cj4gKwo+ICsgICAgaWYgKCBkLT5hcmdvICkKPiArICAgIHsK PiArICAgICAgICBkb21haW5fcmluZ3NfcmVtb3ZlX2FsbChkKTsKPiArICAgICAgICBwYXJ0bmVy X3JpbmdzX3JlbW92ZShkKTsKPiArICAgICAgICB3aWxkY2FyZF9yaW5nc19wZW5kaW5nX3JlbW92 ZShkKTsKPiArICAgICAgICB4ZnJlZShkLT5hcmdvKTsKPiArICAgICAgICBkLT5hcmdvID0gTlVM TDsKPiArICAgIH0KPiArICAgIHdyaXRlX3VubG9jaygmYXJnb19sb2NrKTsKPiArfQo+ICsKPiAr dm9pZAo+ICthcmdvX3NvZnRfcmVzZXQoc3RydWN0IGRvbWFpbiAqZCkKPiArewo+ICsgICAgd3Jp dGVfbG9jaygmYXJnb19sb2NrKTsKPiArCj4gKyAgICBhcmdvX2RwcmludGsoInNvZnQgcmVzZXQg ZD0lZCBkLT5hcmdvPSVwXG4iLCBkLT5kb21haW5faWQsIGQtPmFyZ28pOwo+ICsKPiArICAgIGlm ICggZC0+YXJnbyApCj4gKyAgICB7Cj4gKyAgICAgICAgZG9tYWluX3JpbmdzX3JlbW92ZV9hbGwo ZCk7Cj4gKyAgICAgICAgcGFydG5lcl9yaW5nc19yZW1vdmUoZCk7Cj4gKyAgICAgICAgd2lsZGNh cmRfcmluZ3NfcGVuZGluZ19yZW1vdmUoZCk7Cj4gKwo+ICsgICAgICAgIGlmICggIW9wdF9hcmdv X2VuYWJsZWQgKQo+ICsgICAgICAgIHsKPiArICAgICAgICAgICAgeGZyZWUoZC0+YXJnbyk7Cj4g KyAgICAgICAgICAgIGQtPmFyZ28gPSBOVUxMOwo+ICsgICAgICAgIH0KPiArICAgICAgICBlbHNl Cj4gKyAgICAgICAgICAgIGFyZ29fZG9tYWluX2luaXQoZC0+YXJnbyk7Cj4gKyAgICB9Cj4gKwo+ ICsgICAgd3JpdGVfdW5sb2NrKCZhcmdvX2xvY2spOwo+ICB9Cj4gZGlmZiAtLWdpdCBhL3hlbi9j b21tb24vZG9tYWluLmMgYi94ZW4vY29tbW9uL2RvbWFpbi5jCj4gaW5kZXggYzYyM2RhZS4uOTU5 Njg0MCAxMDA2NDQKPiAtLS0gYS94ZW4vY29tbW9uL2RvbWFpbi5jCj4gKysrIGIveGVuL2NvbW1v bi9kb21haW4uYwo+IEBAIC0zMiw2ICszMiw3IEBACj4gICNpbmNsdWRlIDx4ZW4vZ3JhbnRfdGFi bGUuaD4KPiAgI2luY2x1ZGUgPHhlbi94ZW5vcHJvZi5oPgo+ICAjaW5jbHVkZSA8eGVuL2lycS5o Pgo+ICsjaW5jbHVkZSA8eGVuL2FyZ28uaD4KPiAgI2luY2x1ZGUgPGFzbS9kZWJ1Z2dlci5oPgo+ ICAjaW5jbHVkZSA8YXNtL3AybS5oPgo+ICAjaW5jbHVkZSA8YXNtL3Byb2Nlc3Nvci5oPgo+IEBA IC0yNzcsNiArMjc4LDEwIEBAIHN0YXRpYyB2b2lkIF9kb21haW5fZGVzdHJveShzdHJ1Y3QgZG9t YWluICpkKQo+ICAKPiAgICAgIHhmcmVlKGQtPnBidWYpOwo+ICAKPiArI2lmZGVmIENPTkZJR19B UkdPCj4gKyAgICBhcmdvX2Rlc3Ryb3koZCk7Cj4gKyNlbmRpZgo+ICsKPiAgICAgIHJhbmdlc2V0 X2RvbWFpbl9kZXN0cm95KGQpOwo+ICAKPiAgICAgIGZyZWVfY3B1bWFza192YXIoZC0+ZGlydHlf Y3B1bWFzayk7Cj4gQEAgLTM3Niw2ICszODEsOSBAQCBzdHJ1Y3QgZG9tYWluICpkb21haW5fY3Jl YXRlKGRvbWlkX3QgZG9taWQsCj4gICAgICBzcGluX2xvY2tfaW5pdCgmZC0+aHlwZXJjYWxsX2Rl YWRsb2NrX211dGV4KTsKPiAgICAgIElOSVRfUEFHRV9MSVNUX0hFQUQoJmQtPnBhZ2VfbGlzdCk7 Cj4gICAgICBJTklUX1BBR0VfTElTVF9IRUFEKCZkLT54ZW5wYWdlX2xpc3QpOwo+ICsjaWZkZWYg Q09ORklHX0FSR08KPiArICAgIHJ3bG9ja19pbml0KCZkLT5hcmdvX2xvY2spOwo+ICsjZW5kaWYK PiAgCj4gICAgICBzcGluX2xvY2tfaW5pdCgmZC0+bm9kZV9hZmZpbml0eV9sb2NrKTsKPiAgICAg IGQtPm5vZGVfYWZmaW5pdHkgPSBOT0RFX01BU0tfQUxMOwo+IEBAIC00NDUsNiArNDUzLDExIEBA IHN0cnVjdCBkb21haW4gKmRvbWFpbl9jcmVhdGUoZG9taWRfdCBkb21pZCwKPiAgICAgICAgICAg ICAgZ290byBmYWlsOwo+ICAgICAgICAgIGluaXRfc3RhdHVzIHw9IElOSVRfZ250dGFiOwo+ICAK PiArI2lmZGVmIENPTkZJR19BUkdPCj4gKyAgICAgICAgaWYgKCAoZXJyID0gYXJnb19pbml0KGQp KSAhPSAwICkKPiArICAgICAgICAgICAgZ290byBmYWlsOwo+ICsjZW5kaWYKPiArCj4gICAgICAg ICAgZXJyID0gLUVOT01FTTsKPiAgCj4gICAgICAgICAgZC0+cGJ1ZiA9IHh6YWxsb2NfYXJyYXko Y2hhciwgRE9NQUlOX1BCVUZfU0laRSk7Cj4gQEAgLTcxNyw2ICs3MzAsOSBAQCBpbnQgZG9tYWlu X2tpbGwoc3RydWN0IGRvbWFpbiAqZCkKPiAgICAgICAgICBpZiAoIGQtPmlzX2R5aW5nICE9IERP TURZSU5HX2FsaXZlICkKPiAgICAgICAgICAgICAgcmV0dXJuIGRvbWFpbl9raWxsKGQpOwo+ICAg ICAgICAgIGQtPmlzX2R5aW5nID0gRE9NRFlJTkdfZHlpbmc7Cj4gKyNpZmRlZiBDT05GSUdfQVJH Two+ICsgICAgICAgIGFyZ29fZGVzdHJveShkKTsKPiArI2VuZGlmCj4gICAgICAgICAgZXZ0Y2hu X2Rlc3Ryb3koZCk7Cj4gICAgICAgICAgZ250dGFiX3JlbGVhc2VfbWFwcGluZ3MoZCk7Cj4gICAg ICAgICAgdG1lbV9kZXN0cm95KGQtPnRtZW1fY2xpZW50KTsKPiBAQCAtMTE3NSw2ICsxMTkxLDEw IEBAIGludCBkb21haW5fc29mdF9yZXNldChzdHJ1Y3QgZG9tYWluICpkKQo+ICAKPiAgICAgIGdy YW50X3RhYmxlX3dhcm5fYWN0aXZlX2dyYW50cyhkKTsKPiAgCj4gKyNpZmRlZiBDT05GSUdfQVJH Two+ICsgICAgYXJnb19zb2Z0X3Jlc2V0KGQpOwo+ICsjZW5kaWYKPiArCj4gICAgICBmb3JfZWFj aF92Y3B1ICggZCwgdiApCj4gICAgICB7Cj4gICAgICAgICAgc2V0X3hlbl9ndWVzdF9oYW5kbGUo cnVuc3RhdGVfZ3Vlc3QodiksIE5VTEwpOwo+IGRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9NYWtl ZmlsZSBiL3hlbi9pbmNsdWRlL01ha2VmaWxlCj4gaW5kZXggZjc4OTVlNC4uM2QxNDUzMiAxMDA2 NDQKPiAtLS0gYS94ZW4vaW5jbHVkZS9NYWtlZmlsZQo+ICsrKyBiL3hlbi9pbmNsdWRlL01ha2Vm aWxlCj4gQEAgLTUsNiArNSw3IEBAIGlmbmVxICgkKENPTkZJR19DT01QQVQpLCkKPiAgY29tcGF0 LWFyY2gtJChDT05GSUdfWDg2KSA6PSB4ODZfMzIKPiAgCj4gIGhlYWRlcnMteSA6PSBcCj4gKyAg ICBjb21wYXQvYXJnby5oIFwKPiAgICAgIGNvbXBhdC9jYWxsYmFjay5oIFwKPiAgICAgIGNvbXBh dC9lbGZub3RlLmggXAo+ICAgICAgY29tcGF0L2V2ZW50X2NoYW5uZWwuaCBcCj4gZGlmZiAtLWdp dCBhL3hlbi9pbmNsdWRlL3B1YmxpYy9hcmdvLmggYi94ZW4vaW5jbHVkZS9wdWJsaWMvYXJnby5o Cj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi40ODE4Njg0Cj4gLS0tIC9k ZXYvbnVsbAo+ICsrKyBiL3hlbi9pbmNsdWRlL3B1YmxpYy9hcmdvLmgKPiBAQCAtMCwwICsxLDU5 IEBACj4gKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioKPiArICogQXJnbyA6IEh5cGVydmlzb3ItTWVk aWF0ZWQgZGF0YSBlWGNoYW5nZQo+ICsgKgo+ICsgKiBEZXJpdmVkIGZyb20gdjR2LCB0aGUgdmVy c2lvbiAyIG9mIHYydi4KPiArICoKPiArICogQ29weXJpZ2h0IChjKSAyMDEwLCBDaXRyaXggU3lz dGVtcwo+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAxOSwgQkFFIFN5c3RlbXMKPiArICoKPiAr ICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBw ZXJzb24gb2J0YWluaW5nIGEgY29weQo+ICsgKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lh dGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8KPiArICogZGVhbCBp biB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGlt aXRhdGlvbiB0aGUKPiArICogcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVi bGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yCj4gKyAqIHNlbGwgY29waWVzIG9m IHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJl IGlzCj4gKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNv bmRpdGlvbnM6Cj4gKyAqCj4gKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlz IHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCj4gKyAqIGFsbCBjb3BpZXMg b3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgo+ICsgKgo+ICsgKiBUSEUg U09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lO RCwgRVhQUkVTUyBPUgo+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRP IFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKPiArICogRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwg VEhFCj4gKyAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkg Q0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKPiArICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFD VElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKPiArICogRlJPTSwg T1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBP VEhFUgo+ICsgKiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCj4gKyAqCj4gKyAqLwo+ICsKPiAr I2lmbmRlZiBfX1hFTl9QVUJMSUNfQVJHT19IX18KPiArI2RlZmluZSBfX1hFTl9QVUJMSUNfQVJH T19IX18KPiArCj4gKyNpbmNsdWRlICJ4ZW4uaCIKPiArCj4gK3R5cGVkZWYgc3RydWN0IHhlbl9h cmdvX2FkZHIKPiArewo+ICsgICAgdWludDMyX3QgcG9ydDsKPiArICAgIGRvbWlkX3QgZG9tYWlu X2lkOwo+ICsgICAgdWludDE2X3QgcGFkOwo+ICt9IHhlbl9hcmdvX2FkZHJfdDsKPiArCj4gK3R5 cGVkZWYgc3RydWN0IHhlbl9hcmdvX3JpbmcKPiArewo+ICsgICAgLyogR3Vlc3RzIHNob3VsZCB1 c2UgYXRvbWljIG9wZXJhdGlvbnMgdG8gYWNjZXNzIHJ4X3B0ciAqLwo+ICsgICAgdWludDMyX3Qg cnhfcHRyOwo+ICsgICAgLyogR3Vlc3RzIHNob3VsZCB1c2UgYXRvbWljIG9wZXJhdGlvbnMgdG8g YWNjZXNzIHR4X3B0ciAqLwo+ICsgICAgdWludDMyX3QgdHhfcHRyOwo+ICsgICAgLyoKPiArICAg ICAqIEhlYWRlciBzcGFjZSByZXNlcnZlZCBmb3IgbGF0ZXIgdXNlLiBBbGlnbiB0aGUgc3RhcnQg b2YgdGhlIHJpbmcgdG8gYQo+ICsgICAgICogbXVsdGlwbGUgb2YgdGhlIG1lc3NhZ2Ugc2xvdCBz aXplLgo+ICsgICAgICovCj4gKyAgICB1aW50OF90IHJlc2VydmVkWzU2XTsKPiArI2lmIGRlZmlu ZWQoX19TVERDX1ZFUlNJT05fXykgJiYgX19TVERDX1ZFUlNJT05fXyA+PSAxOTk5MDFMCj4gKyAg ICB1aW50OF90IHJpbmdbXTsKPiArI2VsaWYgZGVmaW5lZChfX0dOVUNfXykKPiArICAgIHVpbnQ4 X3QgcmluZ1swXTsKPiArI2VuZGlmCj4gK30geGVuX2FyZ29fcmluZ190Owo+ICsKPiArI2VuZGlm Cj4gZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3hlbi9hcmdvLmggYi94ZW4vaW5jbHVkZS94ZW4v YXJnby5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi4yOWQzMmE5Cj4g LS0tIC9kZXYvbnVsbAo+ICsrKyBiL3hlbi9pbmNsdWRlL3hlbi9hcmdvLmgKPiBAQCAtMCwwICsx LDIzIEBACj4gKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKPiArICogQXJnbyA6IEh5cGVydmlzb3It TWVkaWF0ZWQgZGF0YSBlWGNoYW5nZQo+ICsgKgo+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMTgsIEJB RSBTeXN0ZW1zCj4gKyAqCj4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAo+ICsgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgo+ICsgKiBNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCj4gKyAq IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCj4gKyAqCj4gKyAq IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlCj4gKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRv IHRoZSBGcmVlIFNvZnR3YXJlCj4gKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFj ZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKPiArICovCj4gKwo+ICsj aWZuZGVmIF9fWEVOX0FSR09fSF9fCj4gKyNkZWZpbmUgX19YRU5fQVJHT19IX18KPiArCj4gK2lu dCBhcmdvX2luaXQoc3RydWN0IGRvbWFpbiAqZCk7Cj4gK3ZvaWQgYXJnb19kZXN0cm95KHN0cnVj dCBkb21haW4gKmQpOwo+ICt2b2lkIGFyZ29fc29mdF9yZXNldChzdHJ1Y3QgZG9tYWluICpkKTsK PiArCj4gKyNlbmRpZgo+IGRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS94ZW4vc2NoZWQuaCBiL3hl bi9pbmNsdWRlL3hlbi9zY2hlZC5oCj4gaW5kZXggNDk1NmE3Ny4uMjA0MThlNyAxMDA2NDQKPiAt LS0gYS94ZW4vaW5jbHVkZS94ZW4vc2NoZWQuaAo+ICsrKyBiL3hlbi9pbmNsdWRlL3hlbi9zY2hl ZC5oCj4gQEAgLTQ5MCw2ICs0OTAsMTIgQEAgc3RydWN0IGRvbWFpbgo+ICAgICAgICAgIHVuc2ln bmVkIGludCBndWVzdF9yZXF1ZXN0X2VuYWJsZWQgICAgICAgOiAxOwo+ICAgICAgICAgIHVuc2ln bmVkIGludCBndWVzdF9yZXF1ZXN0X3N5bmMgICAgICAgICAgOiAxOwo+ICAgICAgfSBtb25pdG9y Owo+ICsKPiArI2lmZGVmIENPTkZJR19BUkdPCj4gKyAgICAvKiBBcmdvIGludGVyZG9tYWluIGNv bW11bmljYXRpb24gc3VwcG9ydCAqLwo+ICsgICAgcndsb2NrX3QgYXJnb19sb2NrOwo+ICsgICAg c3RydWN0IGFyZ29fZG9tYWluICphcmdvOwo+ICsjZW5kaWYKPiAgfTsKPiAgCj4gIC8qIFByb3Rl Y3QgdXBkYXRlcy9yZWFkcyAocmVzcC4pIG9mIGRvbWFpbl9saXN0IGFuZCBkb21haW5faGFzaC4g Ki8KPiBkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUveGxhdC5sc3QgYi94ZW4vaW5jbHVkZS94bGF0 LmxzdAo+IGluZGV4IDUyNzMzMjAuLjlmNjE2ZTQgMTAwNjQ0Cj4gLS0tIGEveGVuL2luY2x1ZGUv eGxhdC5sc3QKPiArKysgYi94ZW4vaW5jbHVkZS94bGF0LmxzdAo+IEBAIC0xNDgsMyArMTQ4LDUg QEAKPiAgPwlmbGFza19zZXRlbmZvcmNlCQl4c20vZmxhc2tfb3AuaAo+ICAhCWZsYXNrX3NpZF9j b250ZXh0CQl4c20vZmxhc2tfb3AuaAo+ICA/CWZsYXNrX3RyYW5zaXRpb24JCXhzbS9mbGFza19v cC5oCj4gKz8JYXJnb19hZGRyCQkJYXJnby5oCj4gKz8JYXJnb19yaW5nCQkJYXJnby5oCj4gCgoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVs IG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0 cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==