From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lionel Landwerlin Subject: Re: [PATCH v6 12/15] drm/i915/perf: Add OA unit support for Gen 8+ Date: Tue, 25 Apr 2017 10:10:07 -0700 Message-ID: References: <20170424103513.GA626@nuc-i3427.alporthouse.com> <20170424184900.20483-1-lionel.g.landwerlin@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id AB1B96E358 for ; Tue, 25 Apr 2017 17:10:09 +0000 (UTC) In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Matthew Auld Cc: Intel Graphics Development List-Id: intel-gfx@lists.freedesktop.org T24gMjUvMDQvMTcgMDk6NDIsIE1hdHRoZXcgQXVsZCB3cm90ZToKPiBPbiAyNCBBcHJpbCAyMDE3 IGF0IDE5OjQ5LCBMaW9uZWwgTGFuZHdlcmxpbgo+IDxsaW9uZWwuZy5sYW5kd2VybGluQGludGVs LmNvbT4gd3JvdGU6Cj4+IEZyb206IFJvYmVydCBCcmFnZyA8cm9iZXJ0QHNpeGJ5bmluZS5vcmc+ Cj4+Cj4+IEVuYWJsZXMgYWNjZXNzIHRvIE9BIHVuaXQgbWV0cmljcyBmb3IgQkRXLCBDSFYsIFNL TCBhbmQgQlhUIHdoaWNoIGFsbAo+PiBzaGFyZSAobW9yZS1vci1sZXNzKSB0aGUgc2FtZSBPQSB1 bml0IGRlc2lnbi4KPj4KPj4gT2YgcGFydGljdWxhciBub3RlIGluIGNvbXBhcmlzb24gdG8gSGFz d2VsbDogc29tZSBPQSB1bml0IEhXIGNvbmZpZwo+PiBzdGF0ZSBoYXMgYmVjb21lIHBlci1jb250 ZXh0IHN0YXRlIGFuZCBhcyBhIGNvbnNlcXVlbmNlIGl0IGlzIHNvbWV3aGF0Cj4+IG1vcmUgY29t cGxpY2F0ZWQgdG8gbWFuYWdlIHN5bmNocm9ub3VzIHN0YXRlIGNoYW5nZXMgZnJvbSB0aGUgY3B1 IHdoaWxlCj4+IHRoZXJlJ3Mgbm8gZ3VhcmFudGVlIG9mIHdoYXQgY29udGV4dCAoaWYgYW55KSBp cyBjdXJyZW50bHkgYWN0aXZlbHkKPj4gcnVubmluZyBvbiB0aGUgZ3B1Lgo+Pgo+PiBUaGUgcGVy aW9kaWMgc2FtcGxpbmcgZnJlcXVlbmN5IHdoaWNoIGNhbiBiZSBwYXJ0aWN1bGFybHkgdXNlZnVs IGZvcgo+PiBzeXN0ZW0td2lkZSBhbmFseXNpcyAoYXMgb3Bwb3NlZCB0byBjb21tYW5kIHN0cmVh bSBzeW5jaHJvbmlzZWQKPj4gTUlfUkVQT1JUX1BFUkZfQ09VTlQgY29tbWFuZHMpIGlzIHBlcmhh cHMgdGhlIG1vc3Qgc3VycHJpc2luZyBzdGF0ZSB0bwo+PiBoYXZlIGJlY29tZSBwZXItY29udGV4 dCBzYXZlIGFuZCByZXN0b3JlZCAod2hpbGUgdGhlIE9BQlVGRkVSCj4+IGRlc3RpbmF0aW9uIGlz IHN0aWxsIGEgc2hhcmVkLCBzeXN0ZW0td2lkZSByZXNvdXJjZSkuCj4+Cj4+IFRoaXMgc3VwcG9y dCBmb3IgZ2VuOCsgdGFrZXMgY2FyZSB0byBjb25zaWRlciBhIG51bWJlciBvZiB0aW1pbmcKPj4g Y2hhbGxlbmdlcyBpbnZvbHZlZCBpbiBzeW5jaHJvbm91c2x5IHVwZGF0aW5nIHBlci1jb250ZXh0 IHN0YXRlCj4+IHByaW1hcmlseSBieSBwcm9ncmFtbWluZyBhbGwgY29uZmlnIHN0YXRlIGZyb20g dGhlIGNwdSBhbmQgdXBkYXRpbmcgYWxsCj4+IGN1cnJlbnQgYW5kIHNhdmVkIGNvbnRleHRzIHN5 bmNocm9ub3VzbHkgd2hpbGUgdGhlIE9BIHVuaXQgaXMgc3RpbGwKPj4gZGlzYWJsZWQuCj4+Cj4+ IFRoZSBkcml2ZXIgaW50ZW50aW9uYWxseSBhdm9pZHMgZGVwZW5kaW5nIG9uIGNvbW1hbmQgc3Ry ZWFtZXIKPj4gcHJvZ3JhbW1pbmcgdG8gdXBkYXRlIE9BIHN0YXRlIGNvbnNpZGVyaW5nIHRoZSBs YWNrIG9mIHN5bmNocm9uaXphdGlvbgo+PiBiZXR3ZWVuIHRoZSBhdXRvbWF0aWMgbG9hZGluZyBv ZiBPQUNUWENPTlRST0wgc3RhdGUgKHRoYXQgaW5jbHVkZXMgdGhlCj4+IHBlcmlvZGljIHNhbXBs aW5nIHN0YXRlIGFuZCBlbmFibGUgc3RhdGUpIG9uIGNvbnRleHQgcmVzdG9yZSBhbmQgdGhlCj4+ IHBhcnNpbmcgb2YgYW55IGdlbmVyYWwgcHVycG9zZSBCQiB0aGUgZHJpdmVyIGNhbiBjb250cm9s LiBJLmUuIHRoaXMKPj4gaW1wbGVtZW50YXRpb24gaXMgY2FyZWZ1bCB0byBhdm9pZCB0aGUgcG9z c2liaWxpdHkgb2YgYSBjb250ZXh0IHJlc3RvcmUKPj4gdGVtcG9yYXJpbHkgZW5hYmxpbmcgYW55 IG91dC1vZi1kYXRlIHBlcmlvZGljIHNhbXBsaW5nIHN0YXRlLiBJbgo+PiBhZGRpdGlvbiB0byB0 aGUgcmlzayBvZiB0cmFuc2llbnRseS1vdXQtb2YtZGF0ZSBzdGF0ZSBiZWluZyBsb2FkZWQKPj4g YXV0b21hdGljYWxseTsgdGhlcmUgYXJlIGFsc28gaW50ZXJuYWwgSFcgbGF0ZW5jaWVzIGludm9s dmVkIGluIHRoZQo+PiBsb2FkaW5nIG9mIE1VWCBjb25maWd1cmF0aW9ucyB3aGljaCB3b3VsZCBi ZSBkaWZmaWN1bHQgdG8gYWNjb3VudCBmb3IKPj4gZnJvbSB0aGUgY29tbWFuZCBzdHJlYW1lciAo YW5kIHdlIG9ubHkgd2FudCB0byBlbmFibGUgdGhlIHVuaXQgd2hlbiBvbmNlCj4+IHRoZSBNVVgg Y29uZmlndXJhdGlvbiBpcyBjb21wbGV0ZSkuCj4+Cj4+IFNpbmNlIHRoZSBHZW44KyBPQSB1bml0 IGRlc2lnbiBubyBsb25nZXIgc3VwcG9ydHMgY2xvY2sgZ2F0aW5nIHRoZSB1bml0Cj4+IG9mZiBm b3IgYSBzaW5nbGUgZ2l2ZW4gY29udGV4dCAod2hpY2ggZWZmZWN0aXZlbHkgc3RvcHBlZCBhbnkg cHJvZ3Jlc3MKPj4gb2YgY291bnRlcnMgd2hpbGUgYW55IG90aGVyIGNvbnRleHQgd2FzIHJ1bm5p bmcpIGFuZCBpbnN0ZWFkIHN1cHBvcnRzCj4+IHRhZ2dpbmcgT0EgcmVwb3J0cyB3aXRoIGEgY29u dGV4dCBJRCBmb3IgZmlsdGVyaW5nIG9uIHRoZSBDUFUsIGl0IG1lYW5zCj4+IHdlIGNhbiBubyBs b25nZXIgaGlkZSB0aGUgc3lzdGVtLXdpZGUgcHJvZ3Jlc3Mgb2YgY291bnRlcnMgZnJvbSBhCj4+ IG5vbi1wcml2aWxlZ2VkIGFwcGxpY2F0aW9uIG9ubHkgaW50ZXJlc3RlZCBpbiBtZXRyaWNzIGZv ciBpdHMgb3duCj4+IGNvbnRleHQuIEFsdGhvdWdoIHdlIGNvdWxkIHRoZW9yZXRpY2FsbHkgdHJ5 IGFuZCBzdWJ0cmFjdCB0aGUgcHJvZ3Jlc3MKPj4gb2Ygb3RoZXIgY29udGV4dHMgYmVmb3JlIGZv cndhcmRpbmcgcmVwb3J0cyB2aWEgcmVhZCgpIHdlIGFyZW4ndCBpbiBhCj4+IHBvc2l0aW9uIHRv IGZpbHRlciByZXBvcnRzIGNhcHR1cmVkIHZpYSBNSV9SRVBPUlRfUEVSRl9DT1VOVCBjb21tYW5k cy4KPj4gQXMgYSByZXN1bHQsIGZvciBHZW44Kywgd2UgYWx3YXlzIHJlcXVpcmUgdGhlCj4+IGRl di5pOTE1LnBlcmZfc3RyZWFtX3BhcmFub2lkIHRvIGJlIHVuc2V0IGZvciBhbnkgYWNjZXNzIHRv IE9BIG1ldHJpY3MKPj4gaWYgbm90IHJvb3QuCj4+Cj4+IHY1OiBEcmFpbiBzdWJtaXR0ZWQgcmVx dWVzdHMgd2hlbiBlbmFibGluZyBtZXRyaWMgc2V0IHRvIGVuc3VyZSBubwo+PiAgICAgIGxpdGUt cmVzdG9yZSBlcmFzZXMgdGhlIGNvbnRleHQgaW1hZ2Ugd2UganVzdCB1cGRhdGVkIChMaW9uZWwp Cj4+Cj4+IHY2OiBJbiBhZGRpdGlvbiB0byBkcmFpbiwgc3dpdGNoIHRvIGtlcm5lbCBjb250ZXh0 ICYgdXBkYXRlIGFsbAo+PiAgICAgIGNvbnRleHQgaW4gcGxhY2UgKENocmlzKQo+Pgo+PiBTaWdu ZWQtb2ZmLWJ5OiBSb2JlcnQgQnJhZ2cgPHJvYmVydEBzaXhieW5pbmUub3JnPgo+PiBTaWduZWQt b2ZmLWJ5OiBMaW9uZWwgTGFuZHdlcmxpbiA8bGlvbmVsLmcubGFuZHdlcmxpbkBpbnRlbC5jb20+ Cj4+IFJldmlld2VkLWJ5OiBNYXR0aGV3IEF1bGQgPG1hdHRoZXcuYXVsZEBpbnRlbC5jb20+IFxv Lwo+PiAtLS0KPj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICB8ICA0NSArLQo+ PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGVyZi5jIHwgOTU3ICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKy0tLQo+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf cmVnLmggIHwgIDIyICsKPj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyB8ICAg MiArCj4+ICAgaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oICAgICAgfCAgMTkgKy0KPj4gICA1 IGZpbGVzIGNoYW5nZWQsIDk1MiBpbnNlcnRpb25zKCspLCA5MyBkZWxldGlvbnMoLSkKPj4KPj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4+IGluZGV4IGZmYTFmYzVlZGRmZC4uNjc2YjEyMjcwNjdj IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPj4gQEAgLTIwNjQsOSArMjA2NCwxNyBA QCBzdHJ1Y3QgaTkxNV9vYV9vcHMgewo+PiAgICAgICAgICB2b2lkICgqaW5pdF9vYV9idWZmZXIp KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4+Cj4+ICAgICAgICAgIC8qKgo+ PiAtICAgICAgICAqIEBlbmFibGVfbWV0cmljX3NldDogQXBwbGllcyBhbnkgTVVYIGNvbmZpZ3Vy YXRpb24gdG8gc2V0IHVwIHRoZQo+PiAtICAgICAgICAqIEJvb2xlYW4gYW5kIEN1c3RvbSAoQi9D KSBjb3VudGVycyB0aGF0IGFyZSBwYXJ0IG9mIHRoZSBjb3VudGVyCj4+IC0gICAgICAgICogcmVw b3J0cyBiZWluZyBzYW1wbGVkLiBNYXkgYXBwbHkgc3lzdGVtIGNvbnN0cmFpbnRzIHN1Y2ggYXMK Pj4gKyAgICAgICAgKiBAc2VsZWN0X21ldHJpY19zZXQ6IFRoZSBhdXRvIGdlbmVyYXRlZCBjb2Rl IHRoYXQgY2hlY2tzIHdoZXRoZXIgYQo+PiArICAgICAgICAqIHJlcXVlc3RlZCBPQSBjb25maWcg aXMgYXBwbGljYWJsZSB0byB0aGUgc3lzdGVtIGFuZCBpZiBzbyBzZXRzIHVwCj4+ICsgICAgICAg ICogdGhlIG11eCwgb2EgYW5kIGZsZXggZXUgcmVnaXN0ZXIgY29uZmlnIHBvaW50ZXJzIGFjY29y ZGluZyB0byB0aGUKPj4gKyAgICAgICAgKiBjdXJyZW50IGRldl9wcml2LT5wZXJmLm9hLm1ldHJp Y3Nfc2V0Lgo+PiArICAgICAgICAqLwo+PiArICAgICAgIGludCAoKnNlbGVjdF9tZXRyaWNfc2V0 KShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+PiArCj4+ICsgICAgICAgLyoq Cj4+ICsgICAgICAgICogQGVuYWJsZV9tZXRyaWNfc2V0OiBTZWxlY3RzIGFuZCBhcHBsaWVzIGFu eSBNVVggY29uZmlndXJhdGlvbiB0byBzZXQKPj4gKyAgICAgICAgKiB1cCB0aGUgQm9vbGVhbiBh bmQgQ3VzdG9tIChCL0MpIGNvdW50ZXJzIHRoYXQgYXJlIHBhcnQgb2YgdGhlCj4+ICsgICAgICAg ICogY291bnRlciByZXBvcnRzIGJlaW5nIHNhbXBsZWQuIE1heSBhcHBseSBzeXN0ZW0gY29uc3Ry YWludHMgc3VjaCBhcwo+PiAgICAgICAgICAgKiBkaXNhYmxpbmcgRVUgY2xvY2sgZ2F0aW5nIGFz IHJlcXVpcmVkLgo+PiAgICAgICAgICAgKi8KPj4gICAgICAgICAgaW50ICgqZW5hYmxlX21ldHJp Y19zZXQpKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4+IEBAIC0yMDk3LDIw ICsyMTA1LDEzIEBAIHN0cnVjdCBpOTE1X29hX29wcyB7Cj4+ICAgICAgICAgICAgICAgICAgICAg IHNpemVfdCAqb2Zmc2V0KTsKPj4KPj4gICAgICAgICAgLyoqCj4+IC0gICAgICAgICogQG9hX2J1 ZmZlcl9jaGVjazogQ2hlY2sgZm9yIE9BIGJ1ZmZlciBkYXRhICsgdXBkYXRlIHRhaWwKPj4gLSAg ICAgICAgKgo+PiAtICAgICAgICAqIFRoaXMgaXMgZWl0aGVyIGNhbGxlZCB2aWEgZm9wcyBvciB0 aGUgcG9sbCBjaGVjayBocnRpbWVyIChhdG9taWMKPj4gLSAgICAgICAgKiBjdHgpIHdpdGhvdXQg YW55IGxvY2tzIHRha2VuLgo+PiArICAgICAgICAqIEBvYV9od190YWlsX3JlYWQ6IHJlYWQgdGhl IE9BIHRhaWwgcG9pbnRlciByZWdpc3Rlcgo+PiAgICAgICAgICAgKgo+PiAtICAgICAgICAqIEl0 J3Mgc2FmZSB0byByZWFkIE9BIGNvbmZpZyBzdGF0ZSBoZXJlIHVubG9ja2VkLCBhc3N1bWluZyB0 aGF0IHRoaXMKPj4gLSAgICAgICAgKiBpcyBvbmx5IGNhbGxlZCB3aGlsZSB0aGUgc3RyZWFtIGlz IGVuYWJsZWQsIHdoaWxlIHRoZSBnbG9iYWwgT0EKPj4gLSAgICAgICAgKiBjb25maWd1cmF0aW9u IGNhbid0IGJlIG1vZGlmaWVkLgo+PiAtICAgICAgICAqCj4+IC0gICAgICAgICogRWZmaWNpZW5j eSBpcyBtb3JlIGltcG9ydGFudCB0aGFuIGF2b2lkaW5nIHNvbWUgZmFsc2UgcG9zaXRpdmVzCj4+ IC0gICAgICAgICogaGVyZSwgd2hpY2ggd2lsbCBiZSBoYW5kbGVkIGdyYWNlZnVsbHkgLSBsaWtl bHkgcmVzdWx0aW5nIGluIGFuCj4+IC0gICAgICAgICogJUVBR0FJTiBlcnJvciBmb3IgdXNlcnNw YWNlLgo+PiArICAgICAgICAqIEluIHBhcnRpY3VsYXIgdGhpcyBlbmFibGVzIHVzIHRvIHNoYXJl IGFsbCB0aGUgZmlkZGx5IGNvZGUgZm9yCj4+ICsgICAgICAgICogaGFuZGxpbmcgdGhlIE9BIHVu aXQgdGFpbCBwb2ludGVyIHJhY2UgdGhhdCBhZmZlY3RzIG11bHRpcGxlCj4+ICsgICAgICAgICog Z2VuZXJhdGlvbnMuCj4+ICAgICAgICAgICAqLwo+PiAtICAgICAgIGJvb2wgKCpvYV9idWZmZXJf Y2hlY2spKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4+ICsgICAgICAgdTMy ICgqb2FfaHdfdGFpbF9yZWFkKShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ PiAgIH07Cj4+Cj4+ICAgc3RydWN0IGludGVsX2NkY2xrX3N0YXRlIHsKPj4gQEAgLTI0NzIsNiAr MjQ3Myw3IEBAIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlIHsKPj4gICAgICAgICAgICAgICAgICAg ICAgICAgIHN0cnVjdCB7Cj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVj dCBpOTE1X3ZtYSAqdm1hOwo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1OCAq dmFkZHI7Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTMyIGxhc3RfY3R4X2lk Owo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZm9ybWF0Owo+PiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZm9ybWF0X3NpemU7Cj4+Cj4+IEBAIC0y NTQxLDYgKzI1NDMsMTQgQEAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgewo+PiAgICAgICAgICAg ICAgICAgICAgICAgICAgfSBvYV9idWZmZXI7Cj4+Cj4+ICAgICAgICAgICAgICAgICAgICAgICAg ICB1MzIgZ2VuN19sYXRjaGVkX29hc3RhdHVzMTsKPj4gKyAgICAgICAgICAgICAgICAgICAgICAg dTMyIGN0eF9vYWN0eGN0cmxfb2Zmc2V0Owo+PiArICAgICAgICAgICAgICAgICAgICAgICB1MzIg Y3R4X2ZsZXhldTBfb2Zmc2V0Owo+PiArCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIC8qIFRo ZSBSUFRfSUQvcmVhc29uIGZpZWxkIGZvciBHZW44KyBpbmNsdWRlcyBhIGJpdAo+PiArICAgICAg ICAgICAgICAgICAgICAgICAgKiB0byBkZXRlcm1pbmUgaWYgdGhlIENUWCBJRCBpbiB0aGUgcmVw b3J0IGlzIHZhbGlkCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAqIGJ1dCB0aGUgc3BlY2lm aWMgYml0IGRpZmZlcnMgYmV0d2VlbiBHZW4gOCBhbmQgOQo+PiArICAgICAgICAgICAgICAgICAg ICAgICAgKi8KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgdTMyIGdlbjhfdmFsaWRfY3R4X2Jp dDsKPj4KPj4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpOTE1X29hX29wcyBvcHM7 Cj4+ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9mb3JtYXQg Km9hX2Zvcm1hdHM7Cj4+IEBAIC0yODUxLDYgKzI4NjEsOCBAQCBpbnRlbF9pbmZvKGNvbnN0IHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPj4gICAjZGVmaW5lIElTX0tCTF9VTFgo ZGV2X3ByaXYpICAgKElOVEVMX0RFVklEKGRldl9wcml2KSA9PSAweDU5MEUgfHwgXAo+PiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5URUxfREVWSUQoZGV2X3ByaXYpID09IDB4 NTkxNSB8fCBcCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTlRFTF9ERVZJ RChkZXZfcHJpdikgPT0gMHg1OTFFKQo+PiArI2RlZmluZSBJU19TS0xfR1QyKGRldl9wcml2KSAg IChJU19TS1lMQUtFKGRldl9wcml2KSAmJiBcCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChJTlRFTF9ERVZJRChkZXZfcHJpdikgJiAweDAwRjApID09IDB4MDAxMCkKPj4gICAj ZGVmaW5lIElTX1NLTF9HVDMoZGV2X3ByaXYpICAgKElTX1NLWUxBS0UoZGV2X3ByaXYpICYmIFwK Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChJTlRFTF9ERVZJRChkZXZfcHJp dikgJiAweDAwRjApID09IDB4MDAyMCkKPj4gICAjZGVmaW5lIElTX1NLTF9HVDQoZGV2X3ByaXYp ICAgKElTX1NLWUxBS0UoZGV2X3ByaXYpICYmIFwKPj4gQEAgLTM2MTUsNiArMzYyNyw5IEBAIGk5 MTVfZ2VtX2NvbnRleHRfbG9va3VwX3RpbWVsaW5lKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpj dHgsCj4+Cj4+ICAgaW50IGk5MTVfcGVyZl9vcGVuX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsIHZvaWQgKmRhdGEsCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRybV9m aWxlICpmaWxlKTsKPj4gK3ZvaWQgaTkxNV9vYV9pbml0X3JlZ19zdGF0ZShzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUsCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg aTkxNV9nZW1fY29udGV4dCAqY3R4LAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgdWlu dDMyX3QgKnJlZ19zdGF0ZSk7Cj4+Cj4+ICAgLyogaTkxNV9nZW1fZXZpY3QuYyAqLwo+PiAgIGlu dCBfX211c3RfY2hlY2sgaTkxNV9nZW1fZXZpY3Rfc29tZXRoaW5nKHN0cnVjdCBpOTE1X2FkZHJl c3Nfc3BhY2UgKnZtLAo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9w ZXJmLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYuYwo+PiBpbmRleCAzMjc3YTUy Y2U5OGUuLmYyNjg4ZGVlNWEwMyAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9wZXJmLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wZXJmLmMKPj4g QEAgLTE5Niw2ICsxOTYsMTIgQEAKPj4KPj4gICAjaW5jbHVkZSAiaTkxNV9kcnYuaCIKPj4gICAj aW5jbHVkZSAiaTkxNV9vYV9oc3cuaCIKPj4gKyNpbmNsdWRlICJpOTE1X29hX2Jkdy5oIgo+PiAr I2luY2x1ZGUgImk5MTVfb2FfY2h2LmgiCj4+ICsjaW5jbHVkZSAiaTkxNV9vYV9za2xndDIuaCIK Pj4gKyNpbmNsdWRlICJpOTE1X29hX3NrbGd0My5oIgo+PiArI2luY2x1ZGUgImk5MTVfb2Ffc2ts Z3Q0LmgiCj4+ICsjaW5jbHVkZSAiaTkxNV9vYV9ieHQuaCIKPj4KPj4gICAvKiBIVyByZXF1aXJl cyB0aGlzIHRvIGJlIGEgcG93ZXIgb2YgdHdvLCBiZXR3ZWVuIDEyOGsgYW5kIDE2TSwgdGhvdWdo IGRyaXZlcgo+PiAgICAqIGlzIGN1cnJlbnRseSBnZW5lcmFsbHkgZGVzaWduZWQgYXNzdW1pbmcg dGhlIGxhcmdlc3QgMTZNIHNpemUgaXMgdXNlZCBzdWNoCj4+IEBAIC0yMTUsNyArMjIxLDcgQEAK Pj4gICAgKgo+PiAgICAqIEFsdGhvdWdoIHRoaXMgY2FuIGJlIG9ic2VydmVkIGV4cGxpY2l0bHkg d2hpbGUgY29weWluZyByZXBvcnRzIHRvIHVzZXJzcGFjZQo+PiAgICAqIGJ5IGNoZWNraW5nIGZv ciBhIHplcm9lZCByZXBvcnQtaWQgZmllbGQgaW4gdGFpbCByZXBvcnRzLCB3ZSB3YW50IHRvIGFj Y291bnQKPj4gLSAqIGZvciB0aGlzIGVhcmxpZXIsIGFzIHBhcnQgb2YgdGhlIF9vYV9idWZmZXJf Y2hlY2sgdG8gYXZvaWQgbG90cyBvZiByZWR1bmRhbnQKPj4gKyAqIGZvciB0aGlzIGVhcmxpZXIs IGFzIHBhcnQgb2YgdGhlIG9hX2J1ZmZlcl9jaGVjayB0byBhdm9pZCBsb3RzIG9mIHJlZHVuZGFu dAo+PiAgICAqIHJlYWQoKSBhdHRlbXB0cy4KPj4gICAgKgo+PiAgICAqIEluIGVmZmVjdCB3ZSBk ZWZpbmUgYSB0YWlsIHBvaW50ZXIgZm9yIHJlYWRpbmcgdGhhdCBsYWdzIHRoZSByZWFsIHRhaWwK Pj4gQEAgLTIzNyw3ICsyNDMsNyBAQAo+PiAgICAqIGluZGljYXRlcyB0aGF0IGFuIHVwZGF0ZWQg dGFpbCBwb2ludGVyIGlzIG5lZWRlZC4KPj4gICAgKgo+PiAgICAqIE1vc3Qgb2YgdGhlIGltcGxl bWVudGF0aW9uIGRldGFpbHMgZm9yIHRoaXMgd29ya2Fyb3VuZCBhcmUgaW4KPj4gLSAqIGdlbjdf b2FfYnVmZmVyX2NoZWNrX3VubG9ja2VkKCkgYW5kIGdlbjdfYXBwYW5kX29hX3JlcG9ydHMoKQo+ PiArICogb2FfYnVmZmVyX2NoZWNrX3VubG9ja2VkKCkgYW5kIF9hcHBlbmRfb2FfcmVwb3J0cygp Cj4+ICAgICoKPj4gICAgKiBOb3RlIGZvciBwb3N0ZXJpdHk6IHByZXZpb3VzbHkgdGhlIGRyaXZl ciB1c2VkIHRvIGRlZmluZSBhbiBlZmZlY3RpdmUgdGFpbAo+PiAgICAqIHBvaW50ZXIgdGhhdCBs YWdnZWQgdGhlIHJlYWwgcG9pbnRlciBieSBhICd0YWlsIG1hcmdpbicgbWVhc3VyZWQgaW4gYnl0 ZXMKPj4gQEAgLTI3Miw2ICsyNzgsMTMgQEAgc3RhdGljIHUzMiBpOTE1X3BlcmZfc3RyZWFtX3Bh cmFub2lkID0gdHJ1ZTsKPj4KPj4gICAjZGVmaW5lIElOVkFMSURfQ1RYX0lEIDB4ZmZmZmZmZmYK Pj4KPj4gKy8qIE9uIEdlbjgrIGF1dG9tYXRpY2FsbHkgdHJpZ2dlcmVkIE9BIHJlcG9ydHMgaW5j bHVkZSBhICdyZWFzb24nIGZpZWxkLi4uICovCj4+ICsjZGVmaW5lIE9BUkVQT1JUX1JFQVNPTl9N QVNLICAgICAgICAgICAweDNmCj4+ICsjZGVmaW5lIE9BUkVQT1JUX1JFQVNPTl9TSElGVCAgICAg ICAgICAxOQo+PiArI2RlZmluZSBPQVJFUE9SVF9SRUFTT05fVElNRVIgICAgICAgICAgKDE8PDAp Cj4+ICsjZGVmaW5lIE9BUkVQT1JUX1JFQVNPTl9DVFhfU1dJVENIICAgICAoMTw8MykKPj4gKyNk ZWZpbmUgT0FSRVBPUlRfUkVBU09OX0NMS19SQVRJTyAgICAgICgxPDw1KQo+PiArCj4+Cj4+ICAg LyogRm9yIHN5c2N0bCBwcm9jX2RvaW50dmVjX21pbm1heCBvZiBpOTE1X29hX21heF9zYW1wbGVf cmF0ZQo+PiAgICAqCj4+IEBAIC0zMDMsNiArMzE2LDEzIEBAIHN0YXRpYyBzdHJ1Y3QgaTkxNV9v YV9mb3JtYXQgaHN3X29hX2Zvcm1hdHNbSTkxNV9PQV9GT1JNQVRfTUFYXSA9IHsKPj4gICAgICAg ICAgW0k5MTVfT0FfRk9STUFUX0M0X0I4XSAgICAgID0geyA3LCA2NCB9LAo+PiAgIH07Cj4+Cj4+ ICtzdGF0aWMgc3RydWN0IGk5MTVfb2FfZm9ybWF0IGdlbjhfcGx1c19vYV9mb3JtYXRzW0k5MTVf T0FfRk9STUFUX01BWF0gPSB7Cj4+ICsgICAgICAgW0k5MTVfT0FfRk9STUFUX0ExMl0gICAgICAg ICAgICAgICAgPSB7IDAsIDY0IH0sCj4+ICsgICAgICAgW0k5MTVfT0FfRk9STUFUX0ExMl9COF9D OF0gICAgICAgICAgPSB7IDIsIDEyOCB9LAo+PiArICAgICAgIFtJOTE1X09BX0ZPUk1BVF9BMzJ1 NDBfQTR1MzJfQjhfQzhdID0geyA1LCAyNTYgfSwKPj4gKyAgICAgICBbSTkxNV9PQV9GT1JNQVRf QzRfQjhdICAgICAgICAgICAgICA9IHsgNywgNjQgfSwKPj4gK307Cj4+ICsKPj4gICAjZGVmaW5l IFNBTVBMRV9PQV9SRVBPUlQgICAgICAoMTw8MCkKPj4KPj4gICAvKioKPj4gQEAgLTMzMiw4ICsz NTIsMjAgQEAgc3RydWN0IHBlcmZfb3Blbl9wcm9wZXJ0aWVzIHsKPj4gICAgICAgICAgaW50IG9h X3BlcmlvZF9leHBvbmVudDsKPj4gICB9Owo+Pgo+PiArc3RhdGljIHUzMiBnZW44X29hX2h3X3Rh aWxfcmVhZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4+ICt7Cj4+ICsgICAg ICAgcmV0dXJuIEk5MTVfUkVBRChHRU44X09BVEFJTFBUUikgJiBHRU44X09BVEFJTFBUUl9NQVNL Owo+PiArfQo+PiArCj4+ICtzdGF0aWMgdTMyIGdlbjdfb2FfaHdfdGFpbF9yZWFkKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPj4gK3sKPj4gKyAgICAgICB1MzIgb2FzdGF0dXMx ID0gSTkxNV9SRUFEKEdFTjdfT0FTVEFUVVMxKTsKPj4gKwo+PiArICAgICAgIHJldHVybiBvYXN0 YXR1czEgJiBHRU43X09BU1RBVFVTMV9UQUlMX01BU0s7Cj4+ICt9Cj4+ICsKPj4gICAvKioKPj4g LSAqIGdlbjdfb2FfYnVmZmVyX2NoZWNrX3VubG9ja2VkIC0gY2hlY2sgZm9yIGRhdGEgYW5kIHVw ZGF0ZSB0YWlsIHB0ciBzdGF0ZQo+PiArICogb2FfYnVmZmVyX2NoZWNrX3VubG9ja2VkIC0gY2hl Y2sgZm9yIGRhdGEgYW5kIHVwZGF0ZSB0YWlsIHB0ciBzdGF0ZQo+PiAgICAqIEBkZXZfcHJpdjog aTkxNSBkZXZpY2UgaW5zdGFuY2UKPj4gICAgKgo+PiAgICAqIFRoaXMgaXMgZWl0aGVyIGNhbGxl ZCB2aWEgZm9wcyAoZm9yIGJsb2NraW5nIHJlYWRzIGluIHVzZXIgY3R4KSBvciB0aGUgcG9sbAo+ PiBAQCAtMzU2LDEyICszODgsMTEgQEAgc3RydWN0IHBlcmZfb3Blbl9wcm9wZXJ0aWVzIHsKPj4g ICAgKgo+PiAgICAqIFJldHVybnM6ICV0cnVlIGlmIHRoZSBPQSBidWZmZXIgY29udGFpbnMgZGF0 YSwgZWxzZSAlZmFsc2UKPj4gICAgKi8KPj4gLXN0YXRpYyBib29sIGdlbjdfb2FfYnVmZmVyX2No ZWNrX3VubG9ja2VkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPj4gK3N0YXRp YyBib29sIG9hX2J1ZmZlcl9jaGVja191bmxvY2tlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpCj4+ICAgewo+PiAgICAgICAgICBpbnQgcmVwb3J0X3NpemUgPSBkZXZfcHJpdi0+ cGVyZi5vYS5vYV9idWZmZXIuZm9ybWF0X3NpemU7Cj4+ICAgICAgICAgIHVuc2lnbmVkIGxvbmcg ZmxhZ3M7Cj4+ICAgICAgICAgIHVuc2lnbmVkIGludCBhZ2VkX2lkeDsKPj4gLSAgICAgICB1MzIg b2FzdGF0dXMxOwo+PiAgICAgICAgICB1MzIgaGVhZCwgaHdfdGFpbCwgYWdlZF90YWlsLCBhZ2lu Z190YWlsOwo+PiAgICAgICAgICB1NjQgbm93Owo+Pgo+PiBAQCAtMzgxLDggKzQxMiw3IEBAIHN0 YXRpYyBib29sIGdlbjdfb2FfYnVmZmVyX2NoZWNrX3VubG9ja2VkKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdikKPj4gICAgICAgICAgYWdlZF90YWlsID0gZGV2X3ByaXYtPnBlcmYu b2Eub2FfYnVmZmVyLnRhaWxzW2FnZWRfaWR4XS5vZmZzZXQ7Cj4+ICAgICAgICAgIGFnaW5nX3Rh aWwgPSBkZXZfcHJpdi0+cGVyZi5vYS5vYV9idWZmZXIudGFpbHNbIWFnZWRfaWR4XS5vZmZzZXQ7 Cj4+Cj4+IC0gICAgICAgb2FzdGF0dXMxID0gSTkxNV9SRUFEKEdFTjdfT0FTVEFUVVMxKTsKPj4g LSAgICAgICBod190YWlsID0gb2FzdGF0dXMxICYgR0VON19PQVNUQVRVUzFfVEFJTF9NQVNLOwo+ PiArICAgICAgIGh3X3RhaWwgPSBkZXZfcHJpdi0+cGVyZi5vYS5vcHMub2FfaHdfdGFpbF9yZWFk KGRldl9wcml2KTsKPj4KPj4gICAgICAgICAgLyogVGhlIHRhaWwgcG9pbnRlciBpbmNyZWFzZXMg aW4gNjQgYnl0ZSBpbmNyZW1lbnRzLAo+PiAgICAgICAgICAgKiBub3QgaW4gcmVwb3J0X3NpemUg c3RlcHMuLi4KPj4gQEAgLTQwNCw2ICs0MzQsNyBAQCBzdGF0aWMgYm9vbCBnZW43X29hX2J1ZmZl cl9jaGVja191bmxvY2tlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4+ICAg ICAgICAgIGlmIChhZ2luZ190YWlsICE9IElOVkFMSURfVEFJTF9QVFIgJiYKPj4gICAgICAgICAg ICAgICgobm93IC0gZGV2X3ByaXYtPnBlcmYub2Eub2FfYnVmZmVyLmFnaW5nX3RpbWVzdGFtcCkg Pgo+PiAgICAgICAgICAgICAgIE9BX1RBSUxfTUFSR0lOX05TRUMpKSB7Cj4+ICsKPj4gICAgICAg ICAgICAgICAgICBhZ2VkX2lkeCBePSAxOwo+PiAgICAgICAgICAgICAgICAgIGRldl9wcml2LT5w ZXJmLm9hLm9hX2J1ZmZlci5hZ2VkX3RhaWxfaWR4ID0gYWdlZF9pZHg7Cj4+Cj4+IEBAIC01NTMs NiArNTg0LDI4NyBAQCBzdGF0aWMgaW50IGFwcGVuZF9vYV9zYW1wbGUoc3RydWN0IGk5MTVfcGVy Zl9zdHJlYW0gKnN0cmVhbSwKPj4gICAgKgo+PiAgICAqIFJldHVybnM6IDAgb24gc3VjY2Vzcywg bmVnYXRpdmUgZXJyb3IgY29kZSBvbiBmYWlsdXJlLgo+PiAgICAqLwo+PiArc3RhdGljIGludCBn ZW44X2FwcGVuZF9vYV9yZXBvcnRzKHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0sCj4+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIF9fdXNlciAqYnVmLAo+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGNvdW50LAo+PiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICpvZmZzZXQpCj4+ICt7Cj4+ICsgICAg ICAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gc3RyZWFtLT5kZXZfcHJpdjsK Pj4gKyAgICAgICBpbnQgcmVwb3J0X3NpemUgPSBkZXZfcHJpdi0+cGVyZi5vYS5vYV9idWZmZXIu Zm9ybWF0X3NpemU7Cj4+ICsgICAgICAgdTggKm9hX2J1Zl9iYXNlID0gZGV2X3ByaXYtPnBlcmYu b2Eub2FfYnVmZmVyLnZhZGRyOwo+PiArICAgICAgIHUzMiBndHRfb2Zmc2V0ID0gaTkxNV9nZ3R0 X29mZnNldChkZXZfcHJpdi0+cGVyZi5vYS5vYV9idWZmZXIudm1hKTsKPj4gKyAgICAgICB1MzIg bWFzayA9IChPQV9CVUZGRVJfU0laRSAtIDEpOwo+PiArICAgICAgIHNpemVfdCBzdGFydF9vZmZz ZXQgPSAqb2Zmc2V0Owo+PiArICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4+ICsgICAgICAg dW5zaWduZWQgaW50IGFnZWRfdGFpbF9pZHg7Cj4+ICsgICAgICAgdTMyIGhlYWQsIHRhaWw7Cj4+ ICsgICAgICAgdTMyIHRha2VuOwo+PiArICAgICAgIGludCByZXQgPSAwOwo+PiArCj4+ICsgICAg ICAgaWYgKFdBUk5fT04oIXN0cmVhbS0+ZW5hYmxlZCkpCj4+ICsgICAgICAgICAgICAgICByZXR1 cm4gLUVJTzsKPj4gKwo+PiArICAgICAgIHNwaW5fbG9ja19pcnFzYXZlKCZkZXZfcHJpdi0+cGVy Zi5vYS5vYV9idWZmZXIucHRyX2xvY2ssIGZsYWdzKTsKPj4gKwo+PiArICAgICAgIGhlYWQgPSBk ZXZfcHJpdi0+cGVyZi5vYS5vYV9idWZmZXIuaGVhZDsKPj4gKyAgICAgICBhZ2VkX3RhaWxfaWR4 ID0gZGV2X3ByaXYtPnBlcmYub2Eub2FfYnVmZmVyLmFnZWRfdGFpbF9pZHg7Cj4+ICsgICAgICAg dGFpbCA9IGRldl9wcml2LT5wZXJmLm9hLm9hX2J1ZmZlci50YWlsc1thZ2VkX3RhaWxfaWR4XS5v ZmZzZXQ7Cj4+ICsKPj4gKyAgICAgICBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXZfcHJpdi0+ cGVyZi5vYS5vYV9idWZmZXIucHRyX2xvY2ssIGZsYWdzKTsKPj4gKwo+PiArICAgICAgIC8qIEFu IGludmFsaWQgdGFpbCBwb2ludGVyIGhlcmUgbWVhbnMgd2UncmUgc3RpbGwgd2FpdGluZyBmb3Ig dGhlIHBvbGwKPj4gKyAgICAgICAgKiBocnRpbWVyIGNhbGxiYWNrIHRvIGdpdmUgdXMgYSBwb2lu dGVyCj4+ICsgICAgICAgICovCj4+ICsgICAgICAgaWYgKHRhaWwgPT0gSU5WQUxJRF9UQUlMX1BU UikKPj4gKyAgICAgICAgICAgICAgIHJldHVybiAtRUFHQUlOOwo+PiArCj4+ICsgICAgICAgLyog TkI6IG9hX2J1ZmZlci5oZWFkL3RhaWwgaW5jbHVkZSB0aGUgZ3R0X29mZnNldCB3aGljaCB3ZSBk b24ndCB3YW50Cj4+ICsgICAgICAgICogd2hpbGUgaW5kZXhpbmcgcmVsYXRpdmUgdG8gb2FfYnVm X2Jhc2UuCj4+ICsgICAgICAgICovCj4+ICsgICAgICAgaGVhZCAtPSBndHRfb2Zmc2V0Owo+PiAr ICAgICAgIHRhaWwgLT0gZ3R0X29mZnNldDsKPj4gKwo+PiArICAgICAgIC8qIEFuIG91dCBvZiBi b3VuZHMgb3IgbWlzYWxpZ25lZCBoZWFkIG9yIHRhaWwgcG9pbnRlciBpbXBsaWVzIGEgZHJpdmVy Cj4+ICsgICAgICAgICogYnVnIHNpbmNlIHdlIHZhbGlkYXRlICsgYWxpZ24gdGhlIHRhaWwgcG9p bnRlcnMgd2UgcmVhZCBmcm9tIHRoZQo+PiArICAgICAgICAqIGhhcmR3YXJlIGFuZCB3ZSBhcmUg aW4gZnVsbCBjb250cm9sIG9mIHRoZSBoZWFkIHBvaW50ZXIgd2hpY2ggc2hvdWxkCj4+ICsgICAg ICAgICogb25seSBiZSBpbmNyZW1lbnRlZCBieSBtdWx0aXBsZXMgb2YgdGhlIHJlcG9ydCBzaXpl IChub3RhYmx5IGFsc28KPj4gKyAgICAgICAgKiBhbGwgYSBwb3dlciBvZiB0d28pLgo+PiArICAg ICAgICAqLwo+PiArICAgICAgIGlmIChXQVJOX09OQ0UoaGVhZCA+IE9BX0JVRkZFUl9TSVpFIHx8 IGhlYWQgJSByZXBvcnRfc2l6ZSB8fAo+PiArICAgICAgICAgICAgICAgICAgICAgdGFpbCA+IE9B X0JVRkZFUl9TSVpFIHx8IHRhaWwgJSByZXBvcnRfc2l6ZSwKPj4gKyAgICAgICAgICAgICAgICAg ICAgICJJbmNvbnNpc3RlbnQgT0EgYnVmZmVyIHBvaW50ZXJzOiBoZWFkID0gJXUsIHRhaWwgPSAl dVxuIiwKPj4gKyAgICAgICAgICAgICAgICAgICAgIGhlYWQsIHRhaWwpKQo+PiArICAgICAgICAg ICAgICAgcmV0dXJuIC1FSU87Cj4+ICsKPj4gKwo+PiArICAgICAgIGZvciAoLyogbm9uZSAqLzsK Pj4gKyAgICAgICAgICAgICh0YWtlbiA9IE9BX1RBS0VOKHRhaWwsIGhlYWQpKTsKPj4gKyAgICAg ICAgICAgIGhlYWQgPSAoaGVhZCArIHJlcG9ydF9zaXplKSAmIG1hc2spIHsKPj4gKyAgICAgICAg ICAgICAgIHU4ICpyZXBvcnQgPSBvYV9idWZfYmFzZSArIGhlYWQ7Cj4+ICsgICAgICAgICAgICAg ICB1MzIgKnJlcG9ydDMyID0gKHZvaWQgKilyZXBvcnQ7Cj4+ICsgICAgICAgICAgICAgICB1MzIg Y3R4X2lkOwo+PiArICAgICAgICAgICAgICAgdTMyIHJlYXNvbjsKPj4gKwo+PiArICAgICAgICAg ICAgICAgLyogQWxsIHRoZSByZXBvcnQgc2l6ZXMgZmFjdG9yIG5lYXRseSBpbnRvIHRoZSBidWZm ZXIKPj4gKyAgICAgICAgICAgICAgICAqIHNpemUgc28gd2UgbmV2ZXIgZXhwZWN0IHRvIHNlZSBh IHJlcG9ydCBzcGxpdAo+PiArICAgICAgICAgICAgICAgICogYmV0d2VlbiB0aGUgYmVnaW5uaW5n IGFuZCBlbmQgb2YgdGhlIGJ1ZmZlci4KPj4gKyAgICAgICAgICAgICAgICAqCj4+ICsgICAgICAg ICAgICAgICAgKiBHaXZlbiB0aGUgaW5pdGlhbCBhbGlnbm1lbnQgY2hlY2sgYSBtaXNhbGlnbm1l bnQKPj4gKyAgICAgICAgICAgICAgICAqIGhlcmUgd291bGQgaW1wbHkgYSBkcml2ZXIgYnVnIHRo YXQgd291bGQgcmVzdWx0Cj4+ICsgICAgICAgICAgICAgICAgKiBpbiBhbiBvdmVycnVuLgo+PiAr ICAgICAgICAgICAgICAgICovCj4+ICsgICAgICAgICAgICAgICBpZiAoV0FSTl9PTigoT0FfQlVG RkVSX1NJWkUgLSBoZWFkKSA8IHJlcG9ydF9zaXplKSkgewo+PiArICAgICAgICAgICAgICAgICAg ICAgICBEUk1fRVJST1IoIlNwdXJpb3VzIE9BIGhlYWQgcHRyOiBub24taW50ZWdyYWwgcmVwb3J0 IG9mZnNldFxuIik7Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+PiArICAgICAg ICAgICAgICAgfQo+PiArCj4+ICsgICAgICAgICAgICAgICAvKiBUaGUgcmVhc29uIGZpZWxkIGlu Y2x1ZGVzIGZsYWdzIGlkZW50aWZ5aW5nIHdoYXQKPj4gKyAgICAgICAgICAgICAgICAqIHRyaWdn ZXJlZCB0aGlzIHNwZWNpZmljIHJlcG9ydCAobW9zdGx5IHRpbWVyCj4+ICsgICAgICAgICAgICAg ICAgKiB0cmlnZ2VyZWQgb3IgZS5nLiBkdWUgdG8gYSBjb250ZXh0IHN3aXRjaCkuCj4+ICsgICAg ICAgICAgICAgICAgKgo+PiArICAgICAgICAgICAgICAgICogVGhpcyBmaWVsZCBpcyBuZXZlciBl eHBlY3RlZCB0byBiZSB6ZXJvIHNvIHdlIGNhbgo+PiArICAgICAgICAgICAgICAgICogY2hlY2sg dGhhdCB0aGUgcmVwb3J0IGlzbid0IGludmFsaWQgYmVmb3JlIGNvcHlpbmcKPj4gKyAgICAgICAg ICAgICAgICAqIGl0IHRvIHVzZXJzcGFjZS4uLgo+PiArICAgICAgICAgICAgICAgICovCj4+ICsg ICAgICAgICAgICAgICByZWFzb24gPSAoKHJlcG9ydDMyWzBdID4+IE9BUkVQT1JUX1JFQVNPTl9T SElGVCkgJgo+PiArICAgICAgICAgICAgICAgICAgICAgICAgIE9BUkVQT1JUX1JFQVNPTl9NQVNL KTsKPj4gKyAgICAgICAgICAgICAgIGlmIChyZWFzb24gPT0gMCkgewo+PiArICAgICAgICAgICAg ICAgICAgICAgICBpZiAoX19yYXRlbGltaXQoJmRldl9wcml2LT5wZXJmLm9hLnNwdXJpb3VzX3Jl cG9ydF9ycykpCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFJNX05PVEUoIlNr aXBwaW5nIHNwdXJpb3VzLCBpbnZhbGlkIE9BIHJlcG9ydFxuIik7Cj4+ICsgICAgICAgICAgICAg ICAgICAgICAgIGNvbnRpbnVlOwo+PiArICAgICAgICAgICAgICAgfQo+PiArCj4+ICsgICAgICAg ICAgICAgICAvKiBYWFg6IEp1c3Qga2VlcCB0aGUgbG93ZXIgMjEgYml0cyBmb3Igbm93IHNpbmNl IEknbSBub3QKPj4gKyAgICAgICAgICAgICAgICAqIGVudGlyZWx5IHN1cmUgaWYgdGhlIEhXIHRv dWNoZXMgYW55IG9mIHRoZSBoaWdoZXIgYml0cyBpbgo+PiArICAgICAgICAgICAgICAgICogdGhp cyBmaWVsZAo+PiArICAgICAgICAgICAgICAgICovCj4+ICsgICAgICAgICAgICAgICBjdHhfaWQg PSByZXBvcnQzMlsyXSAmIDB4MWZmZmZmOwo+PiArCj4+ICsgICAgICAgICAgICAgICAvKiBTcXVh c2ggd2hhdGV2ZXIgaXMgaW4gdGhlIENUWF9JRCBmaWVsZCBpZiBpdCdzIG1hcmtlZCBhcwo+PiAr ICAgICAgICAgICAgICAgICogaW52YWxpZCB0byBiZSBzdXJlIHdlIGF2b2lkIGZhbHNlLXBvc2l0 aXZlLCBzaW5nbGUtY29udGV4dAo+PiArICAgICAgICAgICAgICAgICogZmlsdGVyaW5nIGJlbG93 Li4uCj4+ICsgICAgICAgICAgICAgICAgKgo+PiArICAgICAgICAgICAgICAgICogTm90ZTogdGhh dCB3ZSBkb24ndCBjbGVhciB0aGUgdmFsaWRfY3R4X2JpdCBzbyB1c2Vyc3BhY2UgY2FuCj4+ICsg ICAgICAgICAgICAgICAgKiB1bmRlcnN0YW5kIHRoYXQgdGhlIElEIGhhcyBiZWVuIHNxdWFzaGVk IGJ5IHRoZSBrZXJuZWwuCj4+ICsgICAgICAgICAgICAgICAgKi8KPj4gKyAgICAgICAgICAgICAg IGlmICghKHJlcG9ydDMyWzBdICYgZGV2X3ByaXYtPnBlcmYub2EuZ2VuOF92YWxpZF9jdHhfYml0 KSkKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgY3R4X2lkID0gcmVwb3J0MzJbMl0gPSBJTlZB TElEX0NUWF9JRDsKPj4gKwo+PiArICAgICAgICAgICAgICAgLyogTkI6IEZvciBHZW4gOCB0aGUg T0EgdW5pdCBubyBsb25nZXIgc3VwcG9ydHMgY2xvY2sgZ2F0aW5nCj4+ICsgICAgICAgICAgICAg ICAgKiBvZmYgZm9yIGEgc3BlY2lmaWMgY29udGV4dCBhbmQgdGhlIGtlcm5lbCBjYW4ndCBzZWN1 cmVseQo+PiArICAgICAgICAgICAgICAgICogc3RvcCB0aGUgY291bnRlcnMgZnJvbSB1cGRhdGlu ZyBhcyBzeXN0ZW0td2lkZSAvIGdsb2JhbAo+PiArICAgICAgICAgICAgICAgICogdmFsdWVzLgo+ PiArICAgICAgICAgICAgICAgICoKPj4gKyAgICAgICAgICAgICAgICAqIEF1dG9tYXRpYyByZXBv cnRzIG5vdyBpbmNsdWRlIGEgY29udGV4dCBJRCBzbyByZXBvcnRzIGNhbiBiZQo+PiArICAgICAg ICAgICAgICAgICogZmlsdGVyZWQgb24gdGhlIGNwdSBidXQgaXQncyBub3Qgd29ydGggdHJ5aW5n IHRvCj4+ICsgICAgICAgICAgICAgICAgKiBhdXRvbWF0aWNhbGx5IHN1YnRyYWN0L2hpZGUgY291 bnRlciBwcm9ncmVzcyBmb3Igb3RoZXIKPj4gKyAgICAgICAgICAgICAgICAqIGNvbnRleHRzIHdo aWxlIGZpbHRlcmluZyBzaW5jZSB3ZSBjYW4ndCBzdG9wIHVzZXJzcGFjZQo+PiArICAgICAgICAg ICAgICAgICogaXNzdWluZyBNSV9SRVBPUlRfUEVSRl9DT1VOVCBjb21tYW5kcyB3aGljaCB3b3Vs ZCBzdGlsbAo+PiArICAgICAgICAgICAgICAgICogcHJvdmlkZSBhIHNpZGUtYmFuZCB2aWV3IG9m IHRoZSByZWFsIHZhbHVlcy4KPj4gKyAgICAgICAgICAgICAgICAqCj4+ICsgICAgICAgICAgICAg ICAgKiBUbyBhbGxvdyB1c2Vyc3BhY2UgKHN1Y2ggYXMgTWVzYS9HTF9JTlRFTF9wZXJmb3JtYW5j ZV9xdWVyeSkKPj4gKyAgICAgICAgICAgICAgICAqIHRvIG5vcm1hbGl6ZSBjb3VudGVycyBmb3Ig YSBzaW5nbGUgZmlsdGVyZWQgY29udGV4dCB0aGVuIGl0Cj4+ICsgICAgICAgICAgICAgICAgKiBu ZWVkcyBiZSBmb3J3YXJkZWQgYm9va2VuZCBjb250ZXh0LXN3aXRjaCByZXBvcnRzIHNvIHRoYXQg aXQKPj4gKyAgICAgICAgICAgICAgICAqIGNhbiB0cmFjayBzd2l0Y2hlcyBpbiBiZXR3ZWVuIE1J X1JFUE9SVF9QRVJGX0NPVU5UIGNvbW1hbmRzCj4+ICsgICAgICAgICAgICAgICAgKiBhbmQgY2Fu IGl0c2VsZiBzdWJ0cmFjdC9pZ25vcmUgdGhlIHByb2dyZXNzIG9mIGNvdW50ZXJzCj4+ICsgICAg ICAgICAgICAgICAgKiBhc3NvY2lhdGVkIHdpdGggb3RoZXIgY29udGV4dHMuIE5vdGUgdGhhdCB0 aGUgaGFyZHdhcmUKPj4gKyAgICAgICAgICAgICAgICAqIGF1dG9tYXRpY2FsbHkgdHJpZ2dlcnMg cmVwb3J0cyB3aGVuIHN3aXRjaGluZyB0byBhIG5ldwo+PiArICAgICAgICAgICAgICAgICogY29u dGV4dCB3aGljaCBhcmUgdGFnZ2VkIHdpdGggdGhlIElEIG9mIHRoZSBuZXdseSBhY3RpdmUKPj4g KyAgICAgICAgICAgICAgICAqIGNvbnRleHQuIFRvIGF2b2lkIHRoZSBjb21wbGV4aXR5IChhbmQg bGlrZWx5IGZyYWdpbGl0eSkgb2YKPj4gKyAgICAgICAgICAgICAgICAqIHJlYWRpbmcgYWhlYWQg d2hpbGUgcGFyc2luZyByZXBvcnRzIHRvIHRyeSBhbmQgbWluaW1pemUKPj4gKyAgICAgICAgICAg ICAgICAqIGZvcndhcmRpbmcgcmVkdW5kYW50IGNvbnRleHQgc3dpdGNoIHJlcG9ydHMgKGkuZS4g YmV0d2Vlbgo+PiArICAgICAgICAgICAgICAgICogb3RoZXIsIHVucmVsYXRlZCBjb250ZXh0cykg d2Ugc2ltcGx5IGVsZWN0IHRvIGZvcndhcmQgdGhlbQo+PiArICAgICAgICAgICAgICAgICogYWxs Lgo+PiArICAgICAgICAgICAgICAgICoKPj4gKyAgICAgICAgICAgICAgICAqIFdlIGRvbid0IHJl bHkgc29sZWx5IG9uIHRoZSByZWFzb24gZmllbGQgdG8gaWRlbnRpZnkgY29udGV4dAo+PiArICAg ICAgICAgICAgICAgICogc3dpdGNoZXMgc2luY2UgaXQncyBub3QtdW5jb21tb24gZm9yIHBlcmlv ZGljIHNhbXBsZXMgdG8KPj4gKyAgICAgICAgICAgICAgICAqIGlkZW50aWZ5IGEgc3dpdGNoIGJl Zm9yZSBhbnkgJ2NvbnRleHQgc3dpdGNoJyByZXBvcnQuCj4+ICsgICAgICAgICAgICAgICAgKi8K Pj4gKyAgICAgICAgICAgICAgIGlmICghZGV2X3ByaXYtPnBlcmYub2EuZXhjbHVzaXZlX3N0cmVh bS0+Y3R4IHx8Cj4+ICsgICAgICAgICAgICAgICAgICAgZGV2X3ByaXYtPnBlcmYub2Euc3BlY2lm aWNfY3R4X2lkID09IGN0eF9pZCB8fAo+PiArICAgICAgICAgICAgICAgICAgIChkZXZfcHJpdi0+ cGVyZi5vYS5vYV9idWZmZXIubGFzdF9jdHhfaWQgPT0KPj4gKyAgICAgICAgICAgICAgICAgICAg ZGV2X3ByaXYtPnBlcmYub2Euc3BlY2lmaWNfY3R4X2lkKSB8fAo+PiArICAgICAgICAgICAgICAg ICAgIHJlYXNvbiAmIE9BUkVQT1JUX1JFQVNPTl9DVFhfU1dJVENIKSB7Cj4+ICsKPj4gKyAgICAg ICAgICAgICAgICAgICAgICAgLyogV2hpbGUgZmlsdGVyaW5nIGZvciBhIHNpbmdsZSBjb250ZXh0 IHdlIGF2b2lkCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAqIGxlYWtpbmcgdGhlIElEcyBv ZiBvdGhlciBjb250ZXh0cy4KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICovCj4+ICsgICAg ICAgICAgICAgICAgICAgICAgIGlmIChkZXZfcHJpdi0+cGVyZi5vYS5leGNsdXNpdmVfc3RyZWFt LT5jdHggJiYKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldl9wcml2LT5wZXJmLm9h LnNwZWNpZmljX2N0eF9pZCAhPSBjdHhfaWQpIHsKPj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICByZXBvcnQzMlsyXSA9IElOVkFMSURfQ1RYX0lEOwo+PiArICAgICAgICAgICAgICAg ICAgICAgICB9Cj4+ICsKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0gYXBwZW5kX29h X3NhbXBsZShzdHJlYW0sIGJ1ZiwgY291bnQsIG9mZnNldCwKPj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBvcnQpOwo+PiArICAgICAgICAgICAgICAg ICAgICAgICBpZiAocmV0KQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr Owo+PiArCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGRldl9wcml2LT5wZXJmLm9hLm9hX2J1 ZmZlci5sYXN0X2N0eF9pZCA9IGN0eF9pZDsKPj4gKyAgICAgICAgICAgICAgIH0KPj4gKwo+PiAr ICAgICAgICAgICAgICAgLyogVGhlIGFib3ZlIHJlYXNvbiBmaWVsZCBzYW5pdHkgY2hlY2sgaXMg YmFzZWQgb24KPj4gKyAgICAgICAgICAgICAgICAqIHRoZSBhc3N1bXB0aW9uIHRoYXQgdGhlIE9B IGJ1ZmZlciBpcyBpbml0aWFsbHkKPj4gKyAgICAgICAgICAgICAgICAqIHplcm9lZCBhbmQgd2Ug cmVzZXQgdGhlIGZpZWxkIGFmdGVyIGNvcHlpbmcgc28gdGhlCj4+ICsgICAgICAgICAgICAgICAg KiBjaGVjayBpcyBzdGlsbCBtZWFuaW5nZnVsIG9uY2Ugb2xkIHJlcG9ydHMgc3RhcnQKPj4gKyAg ICAgICAgICAgICAgICAqIGJlaW5nIG92ZXJ3cml0dGVuLgo+PiArICAgICAgICAgICAgICAgICov Cj4+ICsgICAgICAgICAgICAgICByZXBvcnQzMlswXSA9IDA7Cj4+ICsgICAgICAgfQo+PiArCj4+ ICsgICAgICAgaWYgKHN0YXJ0X29mZnNldCAhPSAqb2Zmc2V0KSB7Cj4+ICsgICAgICAgICAgICAg ICBzcGluX2xvY2tfaXJxc2F2ZSgmZGV2X3ByaXYtPnBlcmYub2Eub2FfYnVmZmVyLnB0cl9sb2Nr LCBmbGFncyk7Cj4+ICsKPj4gKyAgICAgICAgICAgICAgIC8qIFdlIHJlbW92ZWQgdGhlIGd0dF9v ZmZzZXQgZm9yIHRoZSBjb3B5IGxvb3AgYWJvdmUsIGluZGV4aW5nCj4+ICsgICAgICAgICAgICAg ICAgKiByZWxhdGl2ZSB0byBvYV9idWZfYmFzZSBzbyBwdXQgYmFjayBoZXJlLi4uCj4+ICsgICAg ICAgICAgICAgICAgKi8KPj4gKyAgICAgICAgICAgICAgIGhlYWQgKz0gZ3R0X29mZnNldDsKPj4g Kwo+PiArICAgICAgICAgICAgICAgSTkxNV9XUklURShHRU44X09BSEVBRFBUUiwgaGVhZCAmIEdF TjhfT0FIRUFEUFRSX01BU0spOwo+PiArICAgICAgICAgICAgICAgZGV2X3ByaXYtPnBlcmYub2Eu b2FfYnVmZmVyLmhlYWQgPSBoZWFkOwo+PiArCj4+ICsgICAgICAgICAgICAgICBzcGluX3VubG9j a19pcnFyZXN0b3JlKCZkZXZfcHJpdi0+cGVyZi5vYS5vYV9idWZmZXIucHRyX2xvY2ssIGZsYWdz KTsKPj4gKyAgICAgICB9Cj4+ICsKPj4gKyAgICAgICByZXR1cm4gcmV0Owo+PiArfQo+PiArCj4+ ICsvKioKPj4gKyAqIGdlbjhfb2FfcmVhZCAtIGNvcHkgc3RhdHVzIHJlY29yZHMgdGhlbiBidWZm ZXJlZCBPQSByZXBvcnRzCj4+ICsgKiBAc3RyZWFtOiBBbiBpOTE1LXBlcmYgc3RyZWFtIG9wZW5l ZCBmb3IgT0EgbWV0cmljcwo+PiArICogQGJ1ZjogZGVzdGluYXRpb24gYnVmZmVyIGdpdmVuIGJ5 IHVzZXJzcGFjZQo+PiArICogQGNvdW50OiB0aGUgbnVtYmVyIG9mIGJ5dGVzIHVzZXJzcGFjZSB3 YW50cyB0byByZWFkCj4+ICsgKiBAb2Zmc2V0OiAoaW5vdXQpOiB0aGUgY3VycmVudCBwb3NpdGlv biBmb3Igd3JpdGluZyBpbnRvIEBidWYKPj4gKyAqCj4+ICsgKiBDaGVja3MgT0EgdW5pdCBzdGF0 dXMgcmVnaXN0ZXJzIGFuZCBpZiBuZWNlc3NhcnkgYXBwZW5kcyBjb3JyZXNwb25kaW5nCj4+ICsg KiBzdGF0dXMgcmVjb3JkcyBmb3IgdXNlcnNwYWNlIChzdWNoIGFzIGZvciBhIGJ1ZmZlciBmdWxs IGNvbmRpdGlvbikgYW5kIHRoZW4KPj4gKyAqIGluaXRpYXRlIGFwcGVuZGluZyBhbnkgYnVmZmVy ZWQgT0EgcmVwb3J0cy4KPj4gKyAqCj4+ICsgKiBVcGRhdGVzIEBvZmZzZXQgYWNjb3JkaW5nIHRv IHRoZSBudW1iZXIgb2YgYnl0ZXMgc3VjY2Vzc2Z1bGx5IGNvcGllZCBpbnRvCj4+ICsgKiB0aGUg dXNlcnNwYWNlIGJ1ZmZlci4KPj4gKyAqCj4+ICsgKiBOQjogc29tZSBkYXRhIG1heSBiZSBzdWNj ZXNzZnVsbHkgY29waWVkIHRvIHRoZSB1c2Vyc3BhY2UgYnVmZmVyCj4+ICsgKiBldmVuIGlmIGFu IGVycm9yIGlzIHJldHVybmVkLCBhbmQgdGhpcyBpcyByZWZsZWN0ZWQgaW4gdGhlCj4+ICsgKiB1 cGRhdGVkIEBvZmZzZXQuCj4+ICsgKgo+PiArICogUmV0dXJuczogemVybyBvbiBzdWNjZXNzIG9y IGEgbmVnYXRpdmUgZXJyb3IgY29kZQo+PiArICovCj4+ICtzdGF0aWMgaW50IGdlbjhfb2FfcmVh ZChzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtLAo+PiArICAgICAgICAgICAgICAgICAg ICAgICBjaGFyIF9fdXNlciAqYnVmLAo+PiArICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg Y291bnQsCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqb2Zmc2V0KQo+PiArewo+ PiArICAgICAgIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHN0cmVhbS0+ZGV2 X3ByaXY7Cj4+ICsgICAgICAgdTMyIG9hc3RhdHVzOwo+PiArICAgICAgIGludCByZXQ7Cj4+ICsK Pj4gKyAgICAgICBpZiAoV0FSTl9PTighZGV2X3ByaXYtPnBlcmYub2Eub2FfYnVmZmVyLnZhZGRy KSkKPj4gKyAgICAgICAgICAgICAgIHJldHVybiAtRUlPOwo+PiArCj4+ICsgICAgICAgb2FzdGF0 dXMgPSBJOTE1X1JFQUQoR0VOOF9PQVNUQVRVUyk7Cj4+ICsKPj4gKyAgICAgICAvKiBXZSB0cmVh dCBPQUJVRkZFUl9PVkVSRkxPVyBhcyBhIHNpZ25pZmljYW50IGVycm9yOgo+PiArICAgICAgICAq Cj4+ICsgICAgICAgICogQWx0aG91Z2ggdGhlb3JldGljYWxseSB3ZSBjb3VsZCBoYW5kbGUgdGhp cyBtb3JlIGdyYWNlZnVsbHkKPj4gKyAgICAgICAgKiBzb21ldGltZXMsIHNvbWUgR2VucyBkb24n dCBjb3JyZWN0bHkgc3VwcHJlc3MgY2VydGFpbgo+PiArICAgICAgICAqIGF1dG9tYXRpY2FsbHkg dHJpZ2dlcmVkIHJlcG9ydHMgaW4gdGhpcyBjb25kaXRpb24gYW5kIHNvIHdlCj4+ICsgICAgICAg ICogaGF2ZSB0byBhc3N1bWUgdGhhdCBvbGQgcmVwb3J0cyBhcmUgbm93IGJlaW5nIHRyYW1wbGVk Cj4+ICsgICAgICAgICogb3Zlci4KPj4gKyAgICAgICAgKgo+PiArICAgICAgICAqIENvbnNpZGVy aW5nIGhvdyB3ZSBkb24ndCBjdXJyZW50bHkgZ2l2ZSB1c2Vyc3BhY2UgY29udHJvbAo+PiArICAg ICAgICAqIG92ZXIgdGhlIE9BIGJ1ZmZlciBzaXplIGFuZCBhbHdheXMgY29uZmlndXJlIGEgbGFy Z2UgMTZNQgo+PiArICAgICAgICAqIGJ1ZmZlciwgdGhlbiBhIGJ1ZmZlciBvdmVyZmxvdyBkb2Vz IGFueXdheSBsaWtlbHkgaW5kaWNhdGUKPj4gKyAgICAgICAgKiB0aGF0IHNvbWV0aGluZyBoYXMg Z29uZSBxdWl0ZSBiYWRseSB3cm9uZy4KPj4gKyAgICAgICAgKi8KPj4gKyAgICAgICBpZiAob2Fz dGF0dXMgJiBHRU44X09BU1RBVFVTX09BQlVGRkVSX09WRVJGTE9XKSB7Cj4+ICsgICAgICAgICAg ICAgICByZXQgPSBhcHBlbmRfb2Ffc3RhdHVzKHN0cmVhbSwgYnVmLCBjb3VudCwgb2Zmc2V0LAo+ PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEUk1fSTkxNV9QRVJGX1JF Q09SRF9PQV9CVUZGRVJfTE9TVCk7Cj4+ICsgICAgICAgICAgICAgICBpZiAocmV0KQo+PiArICAg ICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+PiArCj4+ICsgICAgICAgICAgICAgICBE Uk1fREVCVUcoIk9BIGJ1ZmZlciBvdmVyZmxvdyAoZXhwb25lbnQgPSAlZCk6IGZvcmNlIHJlc3Rh cnRcbiIsCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgZGV2X3ByaXYtPnBlcmYub2EucGVy aW9kX2V4cG9uZW50KTsKPj4gKwo+PiArICAgICAgICAgICAgICAgZGV2X3ByaXYtPnBlcmYub2Eu b3BzLm9hX2Rpc2FibGUoZGV2X3ByaXYpOwo+PiArICAgICAgICAgICAgICAgZGV2X3ByaXYtPnBl cmYub2Eub3BzLm9hX2VuYWJsZShkZXZfcHJpdik7Cj4+ICsKPj4gKyAgICAgICAgICAgICAgIC8q IE5vdGU6IC5vYV9lbmFibGUoKSBpcyBleHBlY3RlZCB0byByZS1pbml0IHRoZSBvYWJ1ZmZlcgo+ PiArICAgICAgICAgICAgICAgICogYW5kIHJlc2V0IEdFTjhfT0FTVEFUVVMgZm9yIHVzCj4+ICsg ICAgICAgICAgICAgICAgKi8KPj4gKyAgICAgICAgICAgICAgIG9hc3RhdHVzID0gSTkxNV9SRUFE KEdFTjhfT0FTVEFUVVMpOwo+PiArICAgICAgIH0KPj4gKwo+PiArICAgICAgIGlmIChvYXN0YXR1 cyAmIEdFTjhfT0FTVEFUVVNfUkVQT1JUX0xPU1QpIHsKPj4gKyAgICAgICAgICAgICAgIHJldCA9 IGFwcGVuZF9vYV9zdGF0dXMoc3RyZWFtLCBidWYsIGNvdW50LCBvZmZzZXQsCj4+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERSTV9JOTE1X1BFUkZfUkVDT1JEX09BX1JF UE9SVF9MT1NUKTsKPj4gKyAgICAgICAgICAgICAgIGlmIChyZXQpCj4+ICsgICAgICAgICAgICAg ICAgICAgICAgIHJldHVybiByZXQ7Cj4+ICsgICAgICAgICAgICAgICBJOTE1X1dSSVRFKEdFTjhf T0FTVEFUVVMsCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIG9hc3RhdHVzICYgfkdFTjhf T0FTVEFUVVNfUkVQT1JUX0xPU1QpOwo+PiArICAgICAgIH0KPj4gKwo+PiArICAgICAgIHJldHVy biBnZW44X2FwcGVuZF9vYV9yZXBvcnRzKHN0cmVhbSwgYnVmLCBjb3VudCwgb2Zmc2V0KTsKPj4g K30KPj4gKwo+PiArLyoqCj4+ICsgKiBDb3BpZXMgYWxsIGJ1ZmZlcmVkIE9BIHJlcG9ydHMgaW50 byB1c2Vyc3BhY2UgcmVhZCgpIGJ1ZmZlci4KPj4gKyAqIEBzdHJlYW06IEFuIGk5MTUtcGVyZiBz dHJlYW0gb3BlbmVkIGZvciBPQSBtZXRyaWNzCj4+ICsgKiBAYnVmOiBkZXN0aW5hdGlvbiBidWZm ZXIgZ2l2ZW4gYnkgdXNlcnNwYWNlCj4+ICsgKiBAY291bnQ6IHRoZSBudW1iZXIgb2YgYnl0ZXMg dXNlcnNwYWNlIHdhbnRzIHRvIHJlYWQKPj4gKyAqIEBvZmZzZXQ6IChpbm91dCk6IHRoZSBjdXJy ZW50IHBvc2l0aW9uIGZvciB3cml0aW5nIGludG8gQGJ1Zgo+PiArICoKPj4gKyAqIE5vdGFibHkg YW55IGVycm9yIGNvbmRpdGlvbiByZXN1bHRpbmcgaW4gYSBzaG9ydCByZWFkICgtJUVOT1NQQyBv cgo+PiArICogLSVFRkFVTFQpIHdpbGwgYmUgcmV0dXJuZWQgZXZlbiB0aG91Z2ggb25lIG9yIG1v cmUgcmVjb3JkcyBtYXkKPj4gKyAqIGhhdmUgYmVlbiBzdWNjZXNzZnVsbHkgY29waWVkLiBJbiB0 aGlzIGNhc2UgaXQncyB1cCB0byB0aGUgY2FsbGVyCj4+ICsgKiB0byBkZWNpZGUgaWYgdGhlIGVy cm9yIHNob3VsZCBiZSBzcXVhc2hlZCBiZWZvcmUgcmV0dXJuaW5nIHRvCj4+ICsgKiB1c2Vyc3Bh Y2UuCj4+ICsgKgo+PiArICogTm90ZTogcmVwb3J0cyBhcmUgY29uc3VtZWQgZnJvbSB0aGUgaGVh ZCwgYW5kIGFwcGVuZGVkIHRvIHRoZQo+PiArICogdGFpbCwgc28gdGhlIHRhaWwgY2hhc2VzIHRo ZSBoZWFkPy4uLiBJZiB5b3UgdGhpbmsgdGhhdCdzIG1hZAo+PiArICogYW5kIGJhY2stdG8tZnJv bnQgeW91J3JlIG5vdCBhbG9uZSwgYnV0IHRoaXMgZm9sbG93cyB0aGUKPj4gKyAqIEdlbiBQUk0g bmFtaW5nIGNvbnZlbnRpb24uCj4+ICsgKgo+PiArICogUmV0dXJuczogMCBvbiBzdWNjZXNzLCBu ZWdhdGl2ZSBlcnJvciBjb2RlIG9uIGZhaWx1cmUuCj4+ICsgKi8KPj4gICBzdGF0aWMgaW50IGdl bjdfYXBwZW5kX29hX3JlcG9ydHMoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSwKPj4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIF9fdXNlciAqYnVmLAo+PiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBjb3VudCwKPj4gQEAgLTcz Myw3ICsxMDQ1LDggQEAgc3RhdGljIGludCBnZW43X29hX3JlYWQoc3RydWN0IGk5MTVfcGVyZl9z dHJlYW0gKnN0cmVhbSwKPj4gICAgICAgICAgICAgICAgICBpZiAocmV0KQo+PiAgICAgICAgICAg ICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPj4KPj4gLSAgICAgICAgICAgICAgIERSTV9ERUJV RygiT0EgYnVmZmVyIG92ZXJmbG93OiBmb3JjZSByZXN0YXJ0XG4iKTsKPj4gKyAgICAgICAgICAg ICAgIERSTV9ERUJVRygiT0EgYnVmZmVyIG92ZXJmbG93IChleHBvbmVudCA9ICVkKTogZm9yY2Ug cmVzdGFydFxuIiwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICBkZXZfcHJpdi0+cGVyZi5v YS5wZXJpb2RfZXhwb25lbnQpOwo+Pgo+PiAgICAgICAgICAgICAgICAgIGRldl9wcml2LT5wZXJm Lm9hLm9wcy5vYV9kaXNhYmxlKGRldl9wcml2KTsKPj4gICAgICAgICAgICAgICAgICBkZXZfcHJp di0+cGVyZi5vYS5vcHMub2FfZW5hYmxlKGRldl9wcml2KTsKPj4gQEAgLTc3Niw3ICsxMDg5LDcg QEAgc3RhdGljIGludCBpOTE1X29hX3dhaXRfdW5sb2NrZWQoc3RydWN0IGk5MTVfcGVyZl9zdHJl YW0gKnN0cmVhbSkKPj4gICAgICAgICAgICAgICAgICByZXR1cm4gLUVJTzsKPj4KPj4gICAgICAg ICAgcmV0dXJuIHdhaXRfZXZlbnRfaW50ZXJydXB0aWJsZShkZXZfcHJpdi0+cGVyZi5vYS5wb2xs X3dxLAo+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2X3ByaXYt PnBlcmYub2Eub3BzLm9hX2J1ZmZlcl9jaGVjayhkZXZfcHJpdikpOwo+PiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgb2FfYnVmZmVyX2NoZWNrX3VubG9ja2VkKGRldl9w cml2KSk7Cj4+ICAgfQo+Pgo+PiAgIC8qKgo+PiBAQCAtODMzLDMzICsxMTQ2LDM3IEBAIHN0YXRp YyBpbnQgaTkxNV9vYV9yZWFkKHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0sCj4+ICAg c3RhdGljIGludCBvYV9nZXRfcmVuZGVyX2N0eF9pZChzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAq c3RyZWFtKQo+PiAgIHsKPj4gICAgICAgICAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gc3RyZWFtLT5kZXZfcHJpdjsKPj4gLSAgICAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUgPSBkZXZfcHJpdi0+ZW5naW5lW1JDU107Cj4+IC0gICAgICAgaW50IHJldDsKPj4K Pj4gLSAgICAgICByZXQgPSBpOTE1X211dGV4X2xvY2tfaW50ZXJydXB0aWJsZSgmZGV2X3ByaXYt PmRybSk7Cj4+IC0gICAgICAgaWYgKHJldCkKPj4gLSAgICAgICAgICAgICAgIHJldHVybiByZXQ7 Cj4+ICsgICAgICAgaWYgKGk5MTUuZW5hYmxlX2V4ZWNsaXN0cykKPj4gKyAgICAgICAgICAgICAg IGRldl9wcml2LT5wZXJmLm9hLnNwZWNpZmljX2N0eF9pZCA9IHN0cmVhbS0+Y3R4LT5od19pZDsK Pj4gKyAgICAgICBlbHNlIHsKPj4gKyAgICAgICAgICAgICAgIHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSA9IGRldl9wcml2LT5lbmdpbmVbUkNTXTsKPj4gKyAgICAgICAgICAgICAgIGlu dCByZXQ7Cj4+Cj4+IC0gICAgICAgLyogQXMgdGhlIElEIGlzIHRoZSBndHQgb2Zmc2V0IG9mIHRo ZSBjb250ZXh0J3Mgdm1hIHdlIHBpbgo+PiAtICAgICAgICAqIHRoZSB2bWEgdG8gZW5zdXJlIHRo ZSBJRCByZW1haW5zIGZpeGVkLgo+PiAtICAgICAgICAqCj4+IC0gICAgICAgICogTkI6IGltcGxp ZWQgUkNTIGVuZ2luZS4uLgo+PiAtICAgICAgICAqLwo+PiAtICAgICAgIHJldCA9IGVuZ2luZS0+ Y29udGV4dF9waW4oZW5naW5lLCBzdHJlYW0tPmN0eCk7Cj4+IC0gICAgICAgaWYgKHJldCkKPj4g LSAgICAgICAgICAgICAgIGdvdG8gdW5sb2NrOwo+PiArICAgICAgICAgICAgICAgcmV0ID0gaTkx NV9tdXRleF9sb2NrX2ludGVycnVwdGlibGUoJmRldl9wcml2LT5kcm0pOwo+PiArICAgICAgICAg ICAgICAgaWYgKHJldCkKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPj4K Pj4gLSAgICAgICAvKiBFeHBsaWNpdGx5IHRyYWNrIHRoZSBJRCAoaW5zdGVhZCBvZiBjYWxsaW5n IGk5MTVfZ2d0dF9vZmZzZXQoKQo+PiAtICAgICAgICAqIG9uIHRoZSBmbHkpIGNvbnNpZGVyaW5n IHRoZSBkaWZmZXJlbmNlIHdpdGggZ2VuOCsgYW5kCj4+IC0gICAgICAgICogZXhlY2xpc3RzCj4+ IC0gICAgICAgICovCj4+IC0gICAgICAgZGV2X3ByaXYtPnBlcmYub2Euc3BlY2lmaWNfY3R4X2lk ID0KPj4gLSAgICAgICAgICAgICAgIGk5MTVfZ2d0dF9vZmZzZXQoc3RyZWFtLT5jdHgtPmVuZ2lu ZVtlbmdpbmUtPmlkXS5zdGF0ZSk7Cj4+ICsgICAgICAgICAgICAgICAvKiBBcyB0aGUgSUQgaXMg dGhlIGd0dCBvZmZzZXQgb2YgdGhlIGNvbnRleHQncyB2bWEgd2UgcGluCj4+ICsgICAgICAgICAg ICAgICAgKiB0aGUgdm1hIHRvIGVuc3VyZSB0aGUgSUQgcmVtYWlucyBmaXhlZC4KPj4gKyAgICAg ICAgICAgICAgICAqLwo+PiArICAgICAgICAgICAgICAgcmV0ID0gZW5naW5lLT5jb250ZXh0X3Bp bihlbmdpbmUsIHN0cmVhbS0+Y3R4KTsKPj4gKyAgICAgICAgICAgICAgIGlmIChyZXQpIHsKPj4g KyAgICAgICAgICAgICAgICAgICAgICAgbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ZHJtLnN0cnVj dF9tdXRleCk7Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4+ICsgICAg ICAgICAgICAgICB9Cj4+Cj4+IC11bmxvY2s6Cj4+IC0gICAgICAgbXV0ZXhfdW5sb2NrKCZkZXZf cHJpdi0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4+ICsgICAgICAgICAgICAgICAvKiBFeHBsaWNpdGx5 IHRyYWNrIHRoZSBJRCAoaW5zdGVhZCBvZiBjYWxsaW5nCj4+ICsgICAgICAgICAgICAgICAgKiBp OTE1X2dndHRfb2Zmc2V0KCkgb24gdGhlIGZseSkgY29uc2lkZXJpbmcgdGhlIGRpZmZlcmVuY2UK Pj4gKyAgICAgICAgICAgICAgICAqIHdpdGggZ2VuOCsgYW5kIGV4ZWNsaXN0cwo+PiArICAgICAg ICAgICAgICAgICovCj4+ICsgICAgICAgICAgICAgICBkZXZfcHJpdi0+cGVyZi5vYS5zcGVjaWZp Y19jdHhfaWQgPQo+PiArICAgICAgICAgICAgICAgICAgICAgICBpOTE1X2dndHRfb2Zmc2V0KHN0 cmVhbS0+Y3R4LT5lbmdpbmVbZW5naW5lLT5pZF0uc3RhdGUpOwo+Pgo+PiAtICAgICAgIHJldHVy biByZXQ7Cj4+ICsgICAgICAgICAgICAgICBtdXRleF91bmxvY2soJmRldl9wcml2LT5kcm0uc3Ry dWN0X211dGV4KTsKPj4gKyAgICAgICB9Cj4+ICsKPj4gKyAgICAgICByZXR1cm4gMDsKPj4gICB9 Cj4+Cj4+ICAgLyoqCj4+IEBAIC04NzQsMTIgKzExOTEsMTYgQEAgc3RhdGljIHZvaWQgb2FfcHV0 X3JlbmRlcl9jdHhfaWQoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSkKPj4gICAgICAg ICAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gc3RyZWFtLT5kZXZfcHJpdjsK Pj4gICAgICAgICAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gZGV2X3ByaXYtPmVu Z2luZVtSQ1NdOwo+Pgo+PiAtICAgICAgIG11dGV4X2xvY2soJmRldl9wcml2LT5kcm0uc3RydWN0 X211dGV4KTsKPj4gKyAgICAgICBpZiAoaTkxNS5lbmFibGVfZXhlY2xpc3RzKSB7Cj4+ICsgICAg ICAgICAgICAgICBkZXZfcHJpdi0+cGVyZi5vYS5zcGVjaWZpY19jdHhfaWQgPSBJTlZBTElEX0NU WF9JRDsKPj4gKyAgICAgICB9IGVsc2Ugewo+PiArICAgICAgICAgICAgICAgbXV0ZXhfbG9jaygm ZGV2X3ByaXYtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+Pgo+PiAtICAgICAgIGRldl9wcml2LT5wZXJm Lm9hLnNwZWNpZmljX2N0eF9pZCA9IElOVkFMSURfQ1RYX0lEOwo+PiAtICAgICAgIGVuZ2luZS0+ Y29udGV4dF91bnBpbihlbmdpbmUsIHN0cmVhbS0+Y3R4KTsKPj4gKyAgICAgICAgICAgICAgIGRl dl9wcml2LT5wZXJmLm9hLnNwZWNpZmljX2N0eF9pZCA9IElOVkFMSURfQ1RYX0lEOwo+PiArICAg ICAgICAgICAgICAgZW5naW5lLT5jb250ZXh0X3VucGluKGVuZ2luZSwgc3RyZWFtLT5jdHgpOwo+ Pgo+PiAtICAgICAgIG11dGV4X3VubG9jaygmZGV2X3ByaXYtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ PiArICAgICAgICAgICAgICAgbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRl eCk7Cj4+ICsgICAgICAgfQo+PiAgIH0KPj4KPj4gICBzdGF0aWMgdm9pZAo+PiBAQCAtOTY5LDYg KzEyOTAsNjEgQEAgc3RhdGljIHZvaWQgZ2VuN19pbml0X29hX2J1ZmZlcihzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4+ICAgICAgICAgIGRldl9wcml2LT5wZXJmLm9hLnBvbGxp biA9IGZhbHNlOwo+PiAgIH0KPj4KPj4gK3N0YXRpYyB2b2lkIGdlbjhfaW5pdF9vYV9idWZmZXIo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+PiArewo+PiArICAgICAgIHUzMiBn dHRfb2Zmc2V0ID0gaTkxNV9nZ3R0X29mZnNldChkZXZfcHJpdi0+cGVyZi5vYS5vYV9idWZmZXIu dm1hKTsKPj4gKyAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwo+PiArCj4+ICsgICAgICAgc3Bp bl9sb2NrX2lycXNhdmUoJmRldl9wcml2LT5wZXJmLm9hLm9hX2J1ZmZlci5wdHJfbG9jaywgZmxh Z3MpOwo+PiArCj4+ICsgICAgICAgSTkxNV9XUklURShHRU44X09BU1RBVFVTLCAwKTsKPj4gKyAg ICAgICBJOTE1X1dSSVRFKEdFTjhfT0FIRUFEUFRSLCBndHRfb2Zmc2V0KTsKPj4gKyAgICAgICBk ZXZfcHJpdi0+cGVyZi5vYS5vYV9idWZmZXIuaGVhZCA9IGd0dF9vZmZzZXQ7Cj4+ICsKPj4gKyAg ICAgICBJOTE1X1dSSVRFKEdFTjhfT0FCVUZGRVJfVURXLCAwKTsKPj4gKwo+PiArICAgICAgIC8q IFBSTSBzYXlzOgo+PiArICAgICAgICAqCj4+ICsgICAgICAgICogICJUaGlzIE1NSU8gbXVzdCBi ZSBzZXQgYmVmb3JlIHRoZSBPQVRBSUxQVFIKPj4gKyAgICAgICAgKiAgcmVnaXN0ZXIgYW5kIGFm dGVyIHRoZSBPQUhFQURQVFIgcmVnaXN0ZXIuIFRoaXMgaXMKPj4gKyAgICAgICAgKiAgdG8gZW5h YmxlIHByb3BlciBmdW5jdGlvbmFsaXR5IG9mIHRoZSBvdmVyZmxvdwo+PiArICAgICAgICAqICBi aXQuIgo+PiArICAgICAgICAqLwo+PiArICAgICAgIEk5MTVfV1JJVEUoR0VOOF9PQUJVRkZFUiwg Z3R0X29mZnNldCB8Cj4+ICsgICAgICAgICAgICAgICAgICBPQUJVRkZFUl9TSVpFXzE2TSB8IE9B X01FTV9TRUxFQ1RfR0dUVCk7Cj4+ICsgICAgICAgSTkxNV9XUklURShHRU44X09BVEFJTFBUUiwg Z3R0X29mZnNldCAmIEdFTjhfT0FUQUlMUFRSX01BU0spOwo+PiArCj4+ICsgICAgICAgLyogTWFy ayB0aGF0IHdlIG5lZWQgdXBkYXRlZCB0YWlsIHBvaW50ZXJzIHRvIHJlYWQgZnJvbS4uLiAqLwo+ PiArICAgICAgIGRldl9wcml2LT5wZXJmLm9hLm9hX2J1ZmZlci50YWlsc1swXS5vZmZzZXQgPSBJ TlZBTElEX1RBSUxfUFRSOwo+PiArICAgICAgIGRldl9wcml2LT5wZXJmLm9hLm9hX2J1ZmZlci50 YWlsc1sxXS5vZmZzZXQgPSBJTlZBTElEX1RBSUxfUFRSOwo+PiArCj4+ICsgICAgICAgLyogUmVz ZXQgc3RhdGUgdXNlZCB0byByZWNvZ25pc2UgY29udGV4dCBzd2l0Y2hlcywgYWZmZWN0aW5nIHdo aWNoCj4+ICsgICAgICAgICogcmVwb3J0cyB3ZSB3aWxsIGZvcndhcmQgdG8gdXNlcnNwYWNlIHdo aWxlIGZpbHRlcmluZyBmb3IgYSBzaW5nbGUKPj4gKyAgICAgICAgKiBjb250ZXh0Lgo+PiArICAg ICAgICAqLwo+PiArICAgICAgIGRldl9wcml2LT5wZXJmLm9hLm9hX2J1ZmZlci5sYXN0X2N0eF9p ZCA9IElOVkFMSURfQ1RYX0lEOwo+PiArCj4+ICsgICAgICAgc3Bpbl91bmxvY2tfaXJxcmVzdG9y ZSgmZGV2X3ByaXYtPnBlcmYub2Eub2FfYnVmZmVyLnB0cl9sb2NrLCBmbGFncyk7Cj4+ICsKPj4g KyAgICAgICAvKiBOQjogYWx0aG91Z2ggdGhlIE9BIGJ1ZmZlciB3aWxsIGluaXRpYWxseSBiZSBh bGxvY2F0ZWQKPj4gKyAgICAgICAgKiB6ZXJvZWQgdmlhIHNobWZzIChhbmQgc28gdGhpcyBtZW1z ZXQgaXMgcmVkdW5kYW50IHdoZW4KPj4gKyAgICAgICAgKiBmaXJzdCBhbGxvY2F0aW5nKSwgd2Ug bWF5IHJlLWluaXQgdGhlIE9BIGJ1ZmZlciwgZWl0aGVyCj4+ICsgICAgICAgICogd2hlbiByZS1l bmFibGluZyBhIHN0cmVhbSBvciBpbiBlcnJvci9yZXNldCBwYXRocy4KPj4gKyAgICAgICAgKgo+ PiArICAgICAgICAqIFRoZSByZWFzb24gd2UgY2xlYXIgdGhlIGJ1ZmZlciBmb3IgZWFjaCByZS1p bml0IGlzIGZvciB0aGUKPj4gKyAgICAgICAgKiBzYW5pdHkgY2hlY2sgaW4gZ2VuOF9hcHBlbmRf b2FfcmVwb3J0cygpIHRoYXQgbG9va3MgYXQgdGhlCj4+ICsgICAgICAgICogcmVhc29uIGZpZWxk IHRvIG1ha2Ugc3VyZSBpdCdzIG5vbi16ZXJvIHdoaWNoIHJlbGllcyBvbgo+PiArICAgICAgICAq IHRoZSBhc3N1bXB0aW9uIHRoYXQgbmV3IHJlcG9ydHMgYXJlIGJlaW5nIHdyaXR0ZW4gdG8gemVy b2VkCj4+ICsgICAgICAgICogbWVtb3J5Li4uCj4+ICsgICAgICAgICovCj4+ICsgICAgICAgbWVt c2V0KGRldl9wcml2LT5wZXJmLm9hLm9hX2J1ZmZlci52YWRkciwgMCwgT0FfQlVGRkVSX1NJWkUp Owo+PiArCj4+ICsgICAgICAgLyogTWF5YmUgbWFrZSAtPnBvbGxpbiBwZXItc3RyZWFtIHN0YXRl IGlmIHdlIHN1cHBvcnQgbXVsdGlwbGUKPj4gKyAgICAgICAgKiBjb25jdXJyZW50IHN0cmVhbXMg aW4gdGhlIGZ1dHVyZS4KPj4gKyAgICAgICAgKi8KPj4gKyAgICAgICBkZXZfcHJpdi0+cGVyZi5v YS5wb2xsaW4gPSBmYWxzZTsKPj4gK30KPj4gKwo+PiAgIHN0YXRpYyBpbnQgYWxsb2Nfb2FfYnVm ZmVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPj4gICB7Cj4+ICAgICAgICAg IHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpibzsKPj4gQEAgLTExMTMsNiArMTQ4OSwyODAg QEAgc3RhdGljIHZvaWQgaHN3X2Rpc2FibGVfbWV0cmljX3NldChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IH5HVF9OT0FfRU5BQkxFKSk7Cj4+ICAgfQo+Pgo+PiArLyoKPj4gKyAqIEZyb20gQnJvYWR3ZWxs IFBSTSwgM0QtTWVkaWEtR1BHUFUgLT4gUmVnaXN0ZXIgU3RhdGUgQ29udGV4dAo+PiArICoKPj4g KyAqIE1NSU8gcmVhZHMgb3Igd3JpdGVzIHRvIGFueSBvZiB0aGUgcmVnaXN0ZXJzIGxpc3RlZCBp biB0aGUKPj4gKyAqIOKAnFJlZ2lzdGVyIFN0YXRlIENvbnRleHQgaW1hZ2XigJ0gc3Vic2VjdGlv bnMgdGhyb3VnaCBIT1NUL0lBCj4+ICsgKiBNTUlPIGludGVyZmFjZSBmb3IgZGVidWcgcHVycG9z ZXMgbXVzdCBmb2xsb3cgdGhlIHN0ZXBzIGJlbG93Ogo+PiArICoKPj4gKyAqIC0gU1cgc2hvdWxk IHNldCB0aGUgRm9yY2UgV2FrZXVwIGJpdCB0byBwcmV2ZW50IEdUIGZyb20gZW50ZXJpbmcgQzYu Cj4+ICsgKiAtIFdyaXRlIDB4MjA1MFszMTowXSA9IDB4MDAwMTAwMDEgKGRpc2FibGUgc2VxdWVu Y2UpLgo+PiArICogLSBEaXNhYmxlIElETEUgbWVzc2FnaW5nIGluIENTIChXcml0ZSAweDIwNTBb MzE6MF0gPSAweDAwMDEwMDAxKS4KPj4gKyAqIC0gQkRXOiAgUG9sbC9XYWl0IGZvciByZWdpc3Rl ciBiaXRzIG9mIDB4MjJBQ1s2OjBdIHR1cm4gdG8gMHgzMCB2YWx1ZS4KPj4gKyAqIC0gU0tMKzog UG9sbC9XYWl0IGZvciByZWdpc3RlciBiaXRzIG9mIDB4MjJBNFs2OjBdIHR1cm4gdG8gMHgzMCB2 YWx1ZS4KPj4gKyAqIC0gUmVhZC9Xcml0ZSB0byBkZXNpcmVkIE1NSU8gcmVnaXN0ZXJzLgo+PiAr ICogLSBFbmFibGUgSURMRSBtZXNzYWdpbmcgaW4gQ1MgKFdyaXRlIDB4MjA1MFszMTowXSA9IDB4 MDAwMTAwMDApLgo+PiArICogLSBGb3JjZSBXYWtldXAgYml0IHNob3VsZCBiZSByZXNldCB0byBl bmFibGUgQzYgZW50cnkuCj4+ICsgKgo+PiArICogWFhYOiBkb24ndCBuZXN0IG9yIG92ZXJsYXAg Y2FsbHMgdG8gdGhpcyBBUEksIGl0IGhhcyBubyByZWYKPj4gKyAqIGNvdW50aW5nIHRvIHRyYWNr IGhvdyBtYW55IGVudGl0aWVzIHJlcXVpcmUgdGhlIFJDUyB0byBiZQo+PiArICogYmxvY2tlZCBm cm9tIGJlaW5nIGlkbGUuCj4+ICsgKi8KPj4gK3N0YXRpYyBpbnQgZ2VuOF9iZWdpbl9jdHhfbW1p byhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4+ICt7Cj4+ICsgICAgICAgaTkx NV9yZWdfdCBmc21fcmVnID0gSU5URUxfR0VOKGRldl9wcml2KSA+IDggPwo+PiArICAgICAgICAg ICAgICAgR0VOOV9SQ1NfRkVfRlNNMiA6IEdFTjZfUkNTX1BXUl9GU007Cj4+ICsgICAgICAgaW50 IHJldCA9IDA7Cj4+ICsKPj4gKyAgICAgICAvKiBUaGVyZSdzIG9ubHkgbm8gYWN0aXZlIGNvbnRl eHQgd2hpbGUgaWRsZSBpbiBleGVjbGlzdCBtb2RlCj4+ICsgICAgICAgICogKHRob3VnaCB3ZSBz aG91bGRuJ3QgYmUgdXNpbmcgdGhpcyBpbiBhbnkgb3RoZXIgY2FzZSkKPj4gKyAgICAgICAgKi8K Pj4gKyAgICAgICBpZiAoV0FSTl9PTighaTkxNS5lbmFibGVfZXhlY2xpc3RzKSkKPj4gKyAgICAg ICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+PiArCj4+ICsgICAgICAgaW50ZWxfdW5jb3JlX2Zv cmNld2FrZV9nZXQoZGV2X3ByaXYsIEZPUkNFV0FLRV9SRU5ERVIpOwo+PiArCj4+ICsgICAgICAg STkxNV9XUklURShHRU42X1JDX1NMRUVQX1BTTUlfQ09OVFJPTCwKPj4gKyAgICAgICAgICAgICAg ICAgIF9NQVNLRURfQklUX0VOQUJMRShHRU42X1BTTUlfU0xFRVBfTVNHX0RJU0FCTEUpKTsKPj4g Kwo+PiArICAgICAgIC8qIE5vdGU6IHdlIGRvbid0IGN1cnJlbnRseSBoYXZlIGEgZ29vZCBoYW5k bGUgb24gdGhlIG1heGltdW0KPj4gKyAgICAgICAgKiBsYXRlbmN5IGZvciB0aGlzIHdha2UgdXAg c28gd2hpbGUgd2Ugb25seSBuZWVkIHRvIGhvbGQgcmNzCj4+ICsgICAgICAgICogYnVzeSBmcm9t IHByb2Nlc3MgY29udGV4dCB3ZSBhdCBsZWFzdCBrZWVwIHRoZSB3YWl0aW5nCj4+ICsgICAgICAg ICogaW50ZXJydXB0aWJsZS4uLgo+PiArICAgICAgICAqLwo+PiArICAgICAgIHJldCA9IGludGVs X3dhaXRfZm9yX3JlZ2lzdGVyKGRldl9wcml2LCBmc21fcmVnLCAweDNmLCAweDMwLCA1MCk7Cj4+ ICsgICAgICAgaWYgKHJldCA9PSAtRVRJTUVET1VUKQo+PiArICAgICAgICAgICAgICAgRFJNX0VS Uk9SKCJUaW1lb3V0IHdhaXRpbmcgdG8gYmUgYWJsZSB0byBiZWdpbiBwZXItY3R4IG1taW9cbiIp Owo+PiArCj4+ICsgICAgICAgaWYgKHJldCkKPj4gKyAgICAgICAgICAgICAgIGludGVsX3VuY29y ZV9mb3JjZXdha2VfcHV0KGRldl9wcml2LCBGT1JDRVdBS0VfUkVOREVSKTsKPj4gKwo+PiArICAg ICAgIHJldHVybiByZXQ7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyB2b2lkIGdlbjhfZW5kX2N0eF9t bWlvKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPj4gK3sKPj4gKyAgICAgICBp ZiAoV0FSTl9PTighaTkxNS5lbmFibGVfZXhlY2xpc3RzKSkKPj4gKyAgICAgICAgICAgICAgIHJl dHVybjsKPj4gKwo+PiArICAgICAgIEk5MTVfV1JJVEUoR0VONl9SQ19TTEVFUF9QU01JX0NPTlRS T0wsCj4+ICsgICAgICAgICAgICAgICAgICBfTUFTS0VEX0JJVF9ESVNBQkxFKEdFTjZfUFNNSV9T TEVFUF9NU0dfRElTQUJMRSkpOwo+PiArICAgICAgIGludGVsX3VuY29yZV9mb3JjZXdha2VfcHV0 KGRldl9wcml2LCBGT1JDRVdBS0VfUkVOREVSKTsKPj4gK30KPj4gKwo+PiArLyogTkI6IEl0IG11 c3QgYWx3YXlzIHJlbWFpbiBwb2ludGVyIHNhZmUgdG8gcnVuIHRoaXMgZXZlbiBpZiB0aGUgT0Eg dW5pdAo+PiArICogaGFzIGJlZW4gZGlzYWJsZWQuCj4+ICsgKgo+PiArICogSXQncyBmaW5lIHRv IHB1dCBvdXQtb2YtZGF0ZSB2YWx1ZXMgaW50byB0aGVzZSBwZXItY29udGV4dCByZWdpc3RlcnMK Pj4gKyAqIGluIHRoZSBjYXNlIHRoYXQgdGhlIE9BIHVuaXQgaGFzIGJlZW4gZGlzYWJsZWQuCj4+ ICsgKi8KPj4gK3N0YXRpYyB2b2lkIGdlbjhfdXBkYXRlX3JlZ19zdGF0ZV91bmxvY2tlZChzdHJ1 Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdTMyICpyZWdfc3RhdGUpCj4+ICt7Cj4+ICsgICAgICAgc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gY3R4LT5pOTE1Owo+PiArICAgICAgIGNvbnN0IHN0 cnVjdCBpOTE1X29hX3JlZyAqZmxleF9yZWdzID0gZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdz Owo+PiArICAgICAgIGludCBuX2ZsZXhfcmVncyA9IGRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVn c19sZW47Cj4+ICsgICAgICAgdTMyIGN0eF9vYWN0eGN0cmwgPSBkZXZfcHJpdi0+cGVyZi5vYS5j dHhfb2FjdHhjdHJsX29mZnNldDsKPj4gKyAgICAgICB1MzIgY3R4X2ZsZXhldTAgPSBkZXZfcHJp di0+cGVyZi5vYS5jdHhfZmxleGV1MF9vZmZzZXQ7Cj4+ICsgICAgICAgLyogVGhlIE1NSU8gb2Zm c2V0cyBmb3IgRmxleCBFVSByZWdpc3RlcnMgYXJlbid0IGNvbnRpZ3VvdXMgKi8KPj4gKyAgICAg ICB1MzIgZmxleF9tbWlvW10gPSB7Cj4+ICsgICAgICAgICAgICAgICBpOTE1X21taW9fcmVnX29m ZnNldChFVV9QRVJGX0NOVEwwKSwKPj4gKyAgICAgICAgICAgICAgIGk5MTVfbW1pb19yZWdfb2Zm c2V0KEVVX1BFUkZfQ05UTDEpLAo+PiArICAgICAgICAgICAgICAgaTkxNV9tbWlvX3JlZ19vZmZz ZXQoRVVfUEVSRl9DTlRMMiksCj4+ICsgICAgICAgICAgICAgICBpOTE1X21taW9fcmVnX29mZnNl dChFVV9QRVJGX0NOVEwzKSwKPj4gKyAgICAgICAgICAgICAgIGk5MTVfbW1pb19yZWdfb2Zmc2V0 KEVVX1BFUkZfQ05UTDQpLAo+PiArICAgICAgICAgICAgICAgaTkxNV9tbWlvX3JlZ19vZmZzZXQo RVVfUEVSRl9DTlRMNSksCj4+ICsgICAgICAgICAgICAgICBpOTE1X21taW9fcmVnX29mZnNldChF VV9QRVJGX0NOVEw2KSwKPj4gKyAgICAgICB9Owo+PiArICAgICAgIGludCBpOwo+PiArCj4+ICsg ICAgICAgcmVnX3N0YXRlW2N0eF9vYWN0eGN0cmxdID0gaTkxNV9tbWlvX3JlZ19vZmZzZXQoR0VO OF9PQUNUWENPTlRST0wpOwo+PiArICAgICAgIHJlZ19zdGF0ZVtjdHhfb2FjdHhjdHJsKzFdID0g KGRldl9wcml2LT5wZXJmLm9hLnBlcmlvZF9leHBvbmVudCA8PAo+PiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEdFTjhfT0FfVElNRVJfUEVSSU9EX1NISUZUKSB8Cj4+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGV2X3ByaXYtPnBlcmYub2EucGVy aW9kaWMgPwo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFTjhfT0Ff VElNRVJfRU5BQkxFIDogMCkgfAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgR0VOOF9PQV9DT1VOVEVSX1JFU1VNRTsKPj4gKwo+PiArICAgICAgIGZvciAoaSA9IDA7IGkg PCBBUlJBWV9TSVpFKGZsZXhfbW1pbyk7IGkrKykgewo+PiArICAgICAgICAgICAgICAgdTMyIHN0 YXRlX29mZnNldCA9IGN0eF9mbGV4ZXUwICsgaSAqIDI7Cj4+ICsgICAgICAgICAgICAgICB1MzIg bW1pbyA9IGZsZXhfbW1pb1tpXTsKPj4gKwo+PiArICAgICAgICAgICAgICAgLyogVGhpcyBhcmJp dHJhcnkgZGVmYXVsdCB3aWxsIHNlbGVjdCB0aGUgJ0VVIEZQVTAgUGlwZWxpbmUKPj4gKyAgICAg ICAgICAgICAgICAqIEFjdGl2ZScgZXZlbnQuIEluIHRoZSBmdXR1cmUgaXQncyBhbnRpY2lwYXRl ZCB0aGF0IHRoZXJlCj4+ICsgICAgICAgICAgICAgICAgKiB3aWxsIGJlIGFuIGV4cGxpY2l0ICdO byBFdmVudCcgd2UgY2FuIHNlbGVjdCwgYnV0IG5vdCB5ZXQuLi4KPj4gKyAgICAgICAgICAgICAg ICAqLwo+PiArICAgICAgICAgICAgICAgdTMyIHZhbHVlID0gMDsKPj4gKyAgICAgICAgICAgICAg IGludCBqOwo+PiArCj4+ICsgICAgICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgbl9mbGV4X3Jl Z3M7IGorKykgewo+PiArICAgICAgICAgICAgICAgICAgICAgICBpZiAoaTkxNV9tbWlvX3JlZ19v ZmZzZXQoZmxleF9yZWdzW2pdLmFkZHIpID09IG1taW8pIHsKPj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB2YWx1ZSA9IGZsZXhfcmVnc1tqXS52YWx1ZTsKPj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBicmVhazsKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgfQo+ PiArICAgICAgICAgICAgICAgfQo+PiArCj4+ICsgICAgICAgICAgICAgICByZWdfc3RhdGVbc3Rh dGVfb2Zmc2V0XSA9IG1taW87Cj4+ICsgICAgICAgICAgICAgICByZWdfc3RhdGVbc3RhdGVfb2Zm c2V0KzFdID0gdmFsdWU7Cj4+ICsgICAgICAgfQo+PiArfQo+PiArCj4+ICsvKiBNYW5hZ2VzIHVw ZGF0aW5nIHRoZSBwZXItY29udGV4dCBhc3BlY3RzIG9mIHRoZSBPQSBzdHJlYW0KPj4gKyAqIGNv bmZpZ3VyYXRpb24gYWNyb3NzIGFsbCBjb250ZXh0cy4KPj4gKyAqCj4+ICsgKiBUaGUgYXdrd2Fy ZCBjb25zaWRlcmF0aW9uIGhlcmUgaXMgdGhhdCBPQUNUWENPTlRST0wgY29udHJvbHMgdGhlCj4+ ICsgKiBleHBvbmVudCBmb3IgcGVyaW9kaWMgc2FtcGxpbmcgd2hpY2ggaXMgcHJpbWFyaWx5IHVz ZWQgZm9yIHN5c3RlbQo+PiArICogd2lkZSBwcm9maWxpbmcgd2hlcmUgd2UnZCBsaWtlIGEgY29u c2lzdGVudCBzYW1wbGluZyBwZXJpb2QgZXZlbiBpbgo+PiArICogdGhlIGZhY2Ugb2YgY29udGV4 dCBzd2l0Y2hlcy4KPj4gKyAqCj4+ICsgKiBPdXIgYXBwcm9hY2ggb2YgdXBkYXRpbmcgdGhlIHJl Z2lzdGVyIHN0YXRlIGNvbnRleHQgKGFzIG9wcG9zZWQgdG8KPj4gKyAqIHNheSB1c2luZyBhIHdv cmthcm91bmQgYmF0Y2ggYnVmZmVyKSBlbnN1cmVzIHRoYXQgdGhlIGhhcmR3YXJlCj4+ICsgKiB3 b24ndCBhdXRvbWF0aWNhbGx5IHJlbG9hZCBhbiBvdXQtb2YtZGF0ZSB0aW1lciBleHBvbmVudCBl dmVuCj4+ICsgKiB0cmFuc2llbnRseSBiZWZvcmUgYSBXQSBCQiBjb3VsZCBiZSBwYXJzZWQuCj4+ ICsgKgo+PiArICogVGhpcyBmdW5jdGlvbiBuZWVkcyB0bzoKPj4gKyAqIC0gRW5zdXJlIHRoZSBj dXJyZW50bHkgcnVubmluZyBjb250ZXh0J3MgcGVyLWNvbnRleHQgT0Egc3RhdGUgaXMKPj4gKyAq ICAgdXBkYXRlZAo+PiArICogLSBFbnN1cmUgdGhhdCBhbGwgZXhpc3RpbmcgY29udGV4dHMgd2ls bCBoYXZlIHRoZSBjb3JyZWN0IHBlci1jb250ZXh0Cj4+ICsgKiAgIE9BIHN0YXRlIGlmIHRoZXkg YXJlIHNjaGVkdWxlZCBmb3IgdXNlLgo+PiArICogLSBFbnN1cmUgYW55IG5ldyBjb250ZXh0cyB3 aWxsIGJlIGluaXRpYWxpemVkIHdpdGggdGhlIGNvcnJlY3QKPj4gKyAqICAgcGVyLWNvbnRleHQg T0Egc3RhdGUuCj4+ICsgKgo+PiArICogTm90ZTogaXQncyBvbmx5IHRoZSBSQ1MvUmVuZGVyIGNv bnRleHQgdGhhdCBoYXMgYW55IE9BIHN0YXRlLgo+PiArICovCj4+ICtzdGF0aWMgaW50IGdlbjhf Y29uZmlndXJlX2FsbF9jb250ZXh0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp Cj4+ICt7Cj4+ICsgICAgICAgc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eDsKPj4gKyAgICAg ICBpbnQgcmV0Owo+PiArCj4+ICsgICAgICAgcmV0ID0gaTkxNV9tdXRleF9sb2NrX2ludGVycnVw dGlibGUoJmRldl9wcml2LT5kcm0pOwo+PiArICAgICAgIGlmIChyZXQpCj4+ICsgICAgICAgICAg ICAgICByZXR1cm4gcmV0Owo+PiArCj4+ICsgICAgICAgLyogU3dpdGNoIGF3YXkgZnJvbSBhbnkg dXNlciBjb250ZXh0LiAgKi8KPj4gKyAgICAgICByZXQgPSBpOTE1X2dlbV9zd2l0Y2hfdG9fa2Vy bmVsX2NvbnRleHQoZGV2X3ByaXYpOwo+PiArICAgICAgIGlmIChyZXQpCj4gICBtdXRleF91bmxv Y2soJmRldl9wcml2LT5kcm0uc3RydWN0X211dGV4KTsKCkR1aCEgVGhhbmtzIQoKPgo+PiArICAg ICAgICAgICAgICAgcmV0dXJuIHJldDsKPj4gKwo+PiArICAgICAgIC8qIFRoZSBPQSByZWdpc3Rl ciBjb25maWcgaXMgc2V0dXAgdGhyb3VnaCB0aGUgY29udGV4dCBpbWFnZS4gVGhpcyBpbWFnZQo+ PiArICAgICAgICAqIG1pZ2h0IGJlIHdyaXR0ZW4gdG8gYnkgdGhlIEdQVSBvbiBjb250ZXh0IHN3 aXRjaCAoaW4gcGFydGljdWxhciBvbgo+PiArICAgICAgICAqIGxpdGUtcmVzdG9yZSkuIFRoaXMg bWVhbnMgd2UgY2FuJ3Qgc2FmZWx5IHVwZGF0ZSBhIGNvbnRleHQncyBpbWFnZSwKPj4gKyAgICAg ICAgKiBpZiB0aGlzIGNvbnRleHQgaXMgc2NoZWR1bGVkL3N1Ym1pdHRlZCB0byBydW4gb24gdGhl IEdQVS4KPj4gKyAgICAgICAgKgo+PiArICAgICAgICAqIFdlIGNvdWxkIGVtaXQgdGhlIE9BIHJl Z2lzdGVyIGNvbmZpZyB0aHJvdWdoIHRoZSBiYXRjaCBidWZmZXIgYnV0Cj4+ICsgICAgICAgICog dGhpcyBtaWdodCBsZWF2ZSBzbWFsbCBpbnRlcnZhbCBvZiB0aW1lIHdoZXJlIHRoZSBPQSB1bml0 IGlzCj4+ICsgICAgICAgICogY29uZmlndXJlZCBhdCBhbiBpbnZhbGlkIHNhbXBsaW5nIHBlcmlv ZC4KPj4gKyAgICAgICAgKgo+PiArICAgICAgICAqIFNvIGZhciB0aGUgYmVzdCB3YXkgdG8gd29y ayBhcm91bmQgdGhpcyBpc3N1ZSBzZWVtcyB0byBiZSBkcmFpbmluZwo+PiArICAgICAgICAqIHRo ZSBHUFUgZnJvbSBhbnkgc3VibWl0dGVkIHdvcmsuCj4+ICsgICAgICAgICovCj4+ICsgICAgICAg cmV0ID0gaTkxNV9nZW1fd2FpdF9mb3JfaWRsZShkZXZfcHJpdiwKPj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEk5MTVfV0FJVF9JTlRFUlJVUFRJQkxFIHwKPj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEk5MTVfV0FJVF9MT0NLRUQpOwo+PiArICAg ICAgIGlmIChyZXQpIHsKPj4gKyAgICAgICAgICAgICAgIG11dGV4X3VubG9jaygmZGV2X3ByaXYt PmRybS5zdHJ1Y3RfbXV0ZXgpOwo+PiArICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPj4gKyAg ICAgICB9Cj4+ICsKPj4gKyAgICAgICAvKiBVcGRhdGUgYWxsIGNvbnRleHRzIG5vdyB0aGF0IHdl J3ZlIHN0YWxsZWQgdGhlIHN1Ym1pc3Npb24uICovCj4+ICsgICAgICAgbGlzdF9mb3JfZWFjaF9l bnRyeShjdHgsICZkZXZfcHJpdi0+Y29udGV4dF9saXN0LCBsaW5rKSB7Cj4+ICsgICAgICAgICAg ICAgICBpZiAoIWN0eC0+ZW5naW5lW1JDU10uaW5pdGlhbGlzZWQpCj4+ICsgICAgICAgICAgICAg ICAgICAgICAgIGNvbnRpbnVlOwo+PiArCj4+ICsgICAgICAgICAgICAgICBnZW44X3VwZGF0ZV9y ZWdfc3RhdGVfdW5sb2NrZWQoY3R4LAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGN0eC0+ZW5naW5lW1JDU10ubHJjX3JlZ19zdGF0ZSk7Cj4+ICsgICAg ICAgfQo+PiArCj4+ICsgICAgICAgbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9t dXRleCk7Cj4+ICsKPj4gKyAgICAgICAvKiBOb3cgdXBkYXRlIHRoZSBjdXJyZW50IGNvbnRleHQu Cj4+ICsgICAgICAgICoKPj4gKyAgICAgICAgKiBOb3RlOiBVc2luZyBNTUlPIHRvIHVwZGF0ZSBw ZXItY29udGV4dCByZWdpc3RlcnMgcmVxdWlyZXMKPj4gKyAgICAgICAgKiBzb21lIGV4dHJhIGNh cmUuLi4KPj4gKyAgICAgICAgKi8KPj4gKyAgICAgICByZXQgPSBnZW44X2JlZ2luX2N0eF9tbWlv KGRldl9wcml2KTsKPj4gKyAgICAgICBpZiAocmV0KSB7Cj4+ICsgICAgICAgICAgICAgICBEUk1f RVJST1IoIkZhaWxlZCB0byBicmluZyBSQ1Mgb3V0IG9mIGlkbGUgdG8gdXBkYXRlIGN1cnJlbnQg Y3R4IE9BIHN0YXRlXG4iKTsKPj4gKyAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4+ICsgICAg ICAgfQo+IFNvIGRvIHdlIHN0aWxsIG5lZWQgdGhlIG1taW8gZm9yIHRoZSBjdXJyZW50IGNvbnRl eHQsIGdpdmVuIHRoYXQgd2UKPiBub3cgaWRsZSBldmVyeXRoaW5nIGFuZCB0aGVuIHVwZGF0ZSB0 aGUgcmVnIHN0YXRlPwoKSSB3b3VsZCBzYXkgeWVzLCBiZWNhdXNlIHdlIGRvbid0IGhhdmUgYW55 IGd1YXJhbnRlZSB0aGF0IGFub3RoZXIgCmNvbnRleHQgaXMgZ29pbmcgdG8gYmUgc2NoZWR1bGVk IGFmdGVyIHRoYXQuCllldCB3ZSB3YW50IHRoZSBjb25maWcgdG8gYmUgYXBwbGllZCBiZWZvcmUg d2UgcmV0dXJuLgoKPj4gKwo+PiArICAgICAgIEk5MTVfV1JJVEUoR0VOOF9PQUNUWENPTlRST0ws ICgoZGV2X3ByaXYtPnBlcmYub2EucGVyaW9kX2V4cG9uZW50IDw8Cj4+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBHRU44X09BX1RJTUVSX1BFUklPRF9TSElGVCkgfAo+ PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZXZfcHJpdi0+cGVyZi5v YS5wZXJpb2RpYyA/Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdF TjhfT0FfVElNRVJfRU5BQkxFIDogMCkgfAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEdFTjhfT0FfQ09VTlRFUl9SRVNVTUUpKTsKPj4gKwo+PiArICAgICAgIGNvbmZp Z19vYV9yZWdzKGRldl9wcml2LCBkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3MsCj4+ICsgICAg ICAgICAgICAgICAgICAgICAgIGRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVnc19sZW4pOwo+PiAr Cj4+ICsgICAgICAgZ2VuOF9lbmRfY3R4X21taW8oZGV2X3ByaXYpOwo+PiArCj4+ICsgICAgICAg cmV0dXJuIDA7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbnQgZ2VuOF9lbmFibGVfbWV0cmljX3Nl dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4+ICt7Cj4+ICsgICAgICAgaW50 IHJldCA9IGRldl9wcml2LT5wZXJmLm9hLm9wcy5zZWxlY3RfbWV0cmljX3NldChkZXZfcHJpdik7 Cj4+ICsKPj4gKyAgICAgICBpZiAocmV0KQo+PiArICAgICAgICAgICAgICAgcmV0dXJuIHJldDsK Pj4gKwo+PiArICAgICAgIC8qIFdlIGRpc2FibGUgc2xpY2UvdW5zbGljZSBjbG9jayByYXRpbyBj aGFuZ2UgcmVwb3J0cyBvbiBTS0wgc2luY2UKPj4gKyAgICAgICAgKiB0aGV5IGFyZSB0b28gbm9p c3kuIFRoZSBIVyBnZW5lcmF0ZXMgYSBsb3Qgb2YgcmVkdW5kYW50IHJlcG9ydHMKPj4gKyAgICAg ICAgKiB3aGVyZSB0aGUgcmF0aW8gaGFzbid0IHJlYWxseSBjaGFuZ2VkIGNhdXNpbmcgYSBsb3Qg b2YgcmVkdW5kYW50Cj4+ICsgICAgICAgICogd29yayB0byBwcm9jZXNzZXMgYW5kIGluY3JlYXNp bmcgdGhlIGNoYW5jZXMgd2UnbGwgaGl0IGJ1ZmZlcgo+PiArICAgICAgICAqIG92ZXJydW5zLgo+ PiArICAgICAgICAqCj4+ICsgICAgICAgICogQWx0aG91Z2ggd2UgZG9uJ3QgY3VycmVudGx5IHVz ZSB0aGUgJ2Rpc2FibGUgb3ZlcnJ1bicgT0FCVUZGRVIKPj4gKyAgICAgICAgKiBmZWF0dXJlIGl0 J3Mgd29ydGggbm90aW5nIHRoYXQgY2xvY2sgcmF0aW8gcmVwb3J0cyBoYXZlIHRvIGJlCj4+ICsg ICAgICAgICogZGlzYWJsZWQgYmVmb3JlIGNvbnNpZGVyaW5nIHRvIHVzZSB0aGF0IGZlYXR1cmUg c2luY2UgdGhlIEhXIGRvZXNuJ3QKPj4gKyAgICAgICAgKiBjb3JyZWN0bHkgYmxvY2sgdGhlc2Ug cmVwb3J0cy4KPj4gKyAgICAgICAgKgo+PiArICAgICAgICAqIEN1cnJlbnRseSBub25lIG9mIHRo ZSBoaWdoLWxldmVsIG1ldHJpY3Mgd2UgaGF2ZSBkZXBlbmQgb24ga25vd2luZwo+PiArICAgICAg ICAqIHRoaXMgcmF0aW8gdG8gbm9ybWFsaXplLgo+PiArICAgICAgICAqCj4+ICsgICAgICAgICog Tm90ZTogVGhpcyByZWdpc3RlciBpcyBub3QgcG93ZXIgY29udGV4dCBzYXZlZCBhbmQgcmVzdG9y ZWQsIGJ1dAo+PiArICAgICAgICAqIHRoYXQncyBPSyBjb25zaWRlcmluZyB0aGF0IHdlIGRpc2Fi bGUgUkM2IHdoaWxlIHRoZSBPQSB1bml0IGlzCj4+ICsgICAgICAgICogZW5hYmxlZC4KPj4gKyAg ICAgICAgKgo+PiArICAgICAgICAqIFRoZSBfSU5DTFVERV9DTEtfUkFUSU8gYml0IGFsbG93cyB0 aGUgc2xpY2UvdW5zbGljZSBmcmVxdWVuY3kgdG8KPj4gKyAgICAgICAgKiBiZSByZWFkIGJhY2sg ZnJvbSBhdXRvbWF0aWNhbGx5IHRyaWdnZXJlZCByZXBvcnRzLCBhcyBwYXJ0IG9mIHRoZQo+PiAr ICAgICAgICAqIFJQVF9JRCBmaWVsZC4KPj4gKyAgICAgICAgKi8KPj4gKyAgICAgICBpZiAoSVNf U0tZTEFLRShkZXZfcHJpdikgfHwgSVNfQlJPWFRPTihkZXZfcHJpdikpIHsKPj4gKyAgICAgICAg ICAgICAgIEk5MTVfV1JJVEUoR0VOOF9PQV9ERUJVRywKPj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgX01BU0tFRF9CSVRfRU5BQkxFKEdFTjlfT0FfREVCVUdfRElTQUJMRV9DTEtfUkFUSU9f UkVQT1JUUyB8Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBHRU45X09BX0RFQlVHX0lOQ0xVREVfQ0xLX1JBVElPKSk7Cj4+ICsgICAgICAgfQo+PiArCj4+ ICsgICAgICAgSTkxNV9XUklURShHRFRfQ0hJQ0tFTl9CSVRTLCAweEEwKTsKPj4gKyAgICAgICBj b25maWdfb2FfcmVncyhkZXZfcHJpdiwgZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MsCj4+ICsg ICAgICAgICAgICAgICAgICAgICAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVuKTsKPj4g KyAgICAgICBJOTE1X1dSSVRFKEdEVF9DSElDS0VOX0JJVFMsIDB4ODApOwo+PiArCj4+ICsgICAg ICAgLyogSXQgdGFrZXMgYSBmYWlybHkgbG9uZyB0aW1lIGZvciBhIG5ldyBNVVggY29uZmlndXJh dGlvbiB0bwo+PiArICAgICAgICAqIGJlIGJlIGFwcGxpZWQgYWZ0ZXIgdGhlc2UgcmVnaXN0ZXIg d3JpdGVzLiBUaGlzIGRlbGF5Cj4+ICsgICAgICAgICogZHVyYXRpb24gaXMgdGFrZSBmcm9tIEhh c3dlbGwgKGRlcml2ZWQgZW1waXJpY2FsbHkgYmFzZWQgb24KPj4gKyAgICAgICAgKiB0aGUgcmVu ZGVyX2Jhc2ljIGNvbmZpZykgYnV0IGhvcGVmdWxseSBpdCBjb3ZlcnMgdGhlCj4+ICsgICAgICAg ICogbWF4aW11bSBjb25maWd1cmF0aW9uIGxhdGVuY3kgZm9yIEdlbjgrIHRvby4uLgo+PiArICAg ICAgICAqLwo+PiArICAgICAgIHVzbGVlcF9yYW5nZSgxNTAwMCwgMjAwMDApOwo+PiArCj4+ICsg ICAgICAgY29uZmlnX29hX3JlZ3MoZGV2X3ByaXYsIGRldl9wcml2LT5wZXJmLm9hLmJfY291bnRl cl9yZWdzLAo+PiArICAgICAgICAgICAgICAgICAgICAgIGRldl9wcml2LT5wZXJmLm9hLmJfY291 bnRlcl9yZWdzX2xlbik7Cj4+ICsKPj4gKyAgICAgICByZXQgPSBnZW44X2NvbmZpZ3VyZV9hbGxf Y29udGV4dHMoZGV2X3ByaXYpOwo+PiArICAgICAgIGlmIChyZXQpCj4+ICsgICAgICAgICAgICAg ICByZXR1cm4gcmV0Owo+PiArCj4+ICsgICAgICAgcmV0dXJuIDA7Cj4+ICt9Cj4+ICsKPj4gK3N0 YXRpYyB2b2lkIGdlbjhfZGlzYWJsZV9tZXRyaWNfc2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKPj4gK3sKPj4gKyAgICAgICAvKiBOT1AgKi8KPj4gK30KPj4gKwo+PiAgIHN0 YXRpYyB2b2lkIGdlbjdfdXBkYXRlX29hY29udHJvbF9sb2NrZWQoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KQo+PiAgIHsKPj4gICAgICAgICAgbG9ja2RlcF9hc3NlcnRfaGVsZCgm ZGV2X3ByaXYtPnBlcmYuaG9va19sb2NrKTsKPj4gQEAgLTExNTcsNiArMTgwNywyOSBAQCBzdGF0 aWMgdm9pZCBnZW43X29hX2VuYWJsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp Cj4+ICAgICAgICAgIHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRldl9wcml2LT5wZXJmLmhvb2tf bG9jaywgZmxhZ3MpOwo+PiAgIH0KPj4KPj4gK3N0YXRpYyB2b2lkIGdlbjhfb2FfZW5hYmxlKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPj4gK3sKPj4gKyAgICAgICB1MzIgcmVw b3J0X2Zvcm1hdCA9IGRldl9wcml2LT5wZXJmLm9hLm9hX2J1ZmZlci5mb3JtYXQ7Cj4+ICsKPj4g KyAgICAgICAvKiBSZXNldCBidWYgcG9pbnRlcnMgc28gd2UgZG9uJ3QgZm9yd2FyZCByZXBvcnRz IGZyb20gYmVmb3JlIG5vdy4KPj4gKyAgICAgICAgKgo+PiArICAgICAgICAqIFRoaW5rIGNhcmVm dWxseSBpZiBjb25zaWRlcmluZyB0cnlpbmcgdG8gYXZvaWQgdGhpcywgc2luY2UgaXQKPj4gKyAg ICAgICAgKiBhbHNvIGVuc3VyZXMgc3RhdHVzIGZsYWdzIGFuZCB0aGUgYnVmZmVyIGl0c2VsZiBh cmUgY2xlYXJlZAo+PiArICAgICAgICAqIGluIGVycm9yIHBhdGhzLCBhbmQgd2UgaGF2ZSBjaGVj a3MgZm9yIGludmFsaWQgcmVwb3J0cyBiYXNlZAo+PiArICAgICAgICAqIG9uIHRoZSBhc3N1bXB0 aW9uIHRoYXQgY2VydGFpbiBmaWVsZHMgYXJlIHdyaXR0ZW4gdG8gemVyb2VkCj4+ICsgICAgICAg ICogbWVtb3J5IHdoaWNoIHRoaXMgaGVscHMgbWFpbnRhaW5zLgo+PiArICAgICAgICAqLwo+PiAr ICAgICAgIGdlbjhfaW5pdF9vYV9idWZmZXIoZGV2X3ByaXYpOwo+PiArCj4+ICsgICAgICAgLyog Tm90ZTogd2UgZG9uJ3QgcmVseSBvbiB0aGUgaGFyZHdhcmUgdG8gcGVyZm9ybSBzaW5nbGUgY29u dGV4dAo+PiArICAgICAgICAqIGZpbHRlcmluZyBhbmQgaW5zdGVhZCBmaWx0ZXIgb24gdGhlIGNw dSBiYXNlZCBvbiB0aGUgY29udGV4dC1pZAo+PiArICAgICAgICAqIGZpZWxkIG9mIHJlcG9ydHMK Pj4gKyAgICAgICAgKi8KPj4gKyAgICAgICBJOTE1X1dSSVRFKEdFTjhfT0FDT05UUk9MLCAocmVw b3J0X2Zvcm1hdCA8PAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRU44 X09BX1JFUE9SVF9GT1JNQVRfU0hJRlQpIHwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBHRU44X09BX0NPVU5URVJfRU5BQkxFKTsKPj4gK30KPj4gKwo+PiAgIC8qKgo+PiAg ICAqIGk5MTVfb2Ffc3RyZWFtX2VuYWJsZSAtIGhhbmRsZSBgSTkxNV9QRVJGX0lPQ1RMX0VOQUJM RWAgZm9yIE9BIHN0cmVhbQo+PiAgICAqIEBzdHJlYW06IEFuIGk5MTUgcGVyZiBzdHJlYW0gb3Bl bmVkIGZvciBPQSBtZXRyaWNzCj4+IEBAIC0xMTgzLDYgKzE4NTYsMTEgQEAgc3RhdGljIHZvaWQg Z2VuN19vYV9kaXNhYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPj4gICAg ICAgICAgSTkxNV9XUklURShHRU43X09BQ09OVFJPTCwgMCk7Cj4+ICAgfQo+Pgo+PiArc3RhdGlj IHZvaWQgZ2VuOF9vYV9kaXNhYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikK Pj4gK3sKPj4gKyAgICAgICBJOTE1X1dSSVRFKEdFTjhfT0FDT05UUk9MLCAwKTsKPj4gK30KPj4g Kwo+PiAgIC8qKgo+PiAgICAqIGk5MTVfb2Ffc3RyZWFtX2Rpc2FibGUgLSBoYW5kbGUgYEk5MTVf UEVSRl9JT0NUTF9ESVNBQkxFYCBmb3IgT0Egc3RyZWFtCj4+ICAgICogQHN0cmVhbTogQW4gaTkx NSBwZXJmIHN0cmVhbSBvcGVuZWQgZm9yIE9BIG1ldHJpY3MKPj4gQEAgLTEzNjEsNiArMjAzOSwy MSBAQCBzdGF0aWMgaW50IGk5MTVfb2Ffc3RyZWFtX2luaXQoc3RydWN0IGk5MTVfcGVyZl9zdHJl YW0gKnN0cmVhbSwKPj4gICAgICAgICAgcmV0dXJuIHJldDsKPj4gICB9Cj4+Cj4+ICt2b2lkIGk5 MTVfb2FfaW5pdF9yZWdfc3RhdGUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAo+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwK Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHUzMiAqcmVnX3N0YXRlKQo+PiArewo+PiAr ICAgICAgIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGVuZ2luZS0+aTkxNTsK Pj4gKwo+PiArICAgICAgIGlmIChlbmdpbmUtPmlkICE9IFJDUykKPj4gKyAgICAgICAgICAgICAg IHJldHVybjsKPj4gKwo+PiArICAgICAgIGlmICghZGV2X3ByaXYtPnBlcmYuaW5pdGlhbGl6ZWQp Cj4+ICsgICAgICAgICAgICAgICByZXR1cm47Cj4+ICsKPj4gKyAgICAgICBnZW44X3VwZGF0ZV9y ZWdfc3RhdGVfdW5sb2NrZWQoY3R4LCByZWdfc3RhdGUpOwo+PiArfQo+PiArCj4+ICAgLyoqCj4+ ICAgICogaTkxNV9wZXJmX3JlYWRfbG9ja2VkIC0gJmk5MTVfcGVyZl9zdHJlYW1fb3BzLT5yZWFk IHdpdGggZXJyb3Igbm9ybWFsaXNhdGlvbgo+PiAgICAqIEBzdHJlYW06IEFuIGk5MTUgcGVyZiBz dHJlYW0KPj4gQEAgLTE0ODYsNyArMjE3OSw3IEBAIHN0YXRpYyBlbnVtIGhydGltZXJfcmVzdGFy dCBvYV9wb2xsX2NoZWNrX3RpbWVyX2NiKHN0cnVjdCBocnRpbWVyICpocnRpbWVyKQo+PiAgICAg ICAgICAgICAgICAgIGNvbnRhaW5lcl9vZihocnRpbWVyLCB0eXBlb2YoKmRldl9wcml2KSwKPj4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVyZi5vYS5wb2xsX2NoZWNrX3RpbWVyKTsK Pj4KPj4gLSAgICAgICBpZiAoZGV2X3ByaXYtPnBlcmYub2Eub3BzLm9hX2J1ZmZlcl9jaGVjayhk ZXZfcHJpdikpIHsKPj4gKyAgICAgICBpZiAob2FfYnVmZmVyX2NoZWNrX3VubG9ja2VkKGRldl9w cml2KSkgewo+PiAgICAgICAgICAgICAgICAgIGRldl9wcml2LT5wZXJmLm9hLnBvbGxpbiA9IHRy dWU7Cj4+ICAgICAgICAgICAgICAgICAgd2FrZV91cCgmZGV2X3ByaXYtPnBlcmYub2EucG9sbF93 cSk7Cj4+ICAgICAgICAgIH0KPj4gQEAgLTE3NzUsNiArMjQ2OCw3IEBAIGk5MTVfcGVyZl9vcGVu X2lvY3RsX2xvY2tlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4+ICAgICAg ICAgIHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpzcGVjaWZpY19jdHggPSBOVUxMOwo+PiAgICAg ICAgICBzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtID0gTlVMTDsKPj4gICAgICAgICAg dW5zaWduZWQgbG9uZyBmX2ZsYWdzID0gMDsKPj4gKyAgICAgICBib29sIHByaXZpbGVnZWRfb3Ag PSB0cnVlOwo+PiAgICAgICAgICBpbnQgc3RyZWFtX2ZkOwo+PiAgICAgICAgICBpbnQgcmV0Owo+ Pgo+PiBAQCAtMTc5MiwxMiArMjQ4NiwyOCBAQCBpOTE1X3BlcmZfb3Blbl9pb2N0bF9sb2NrZWQo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+PiAgICAgICAgICAgICAgICAgIH0K Pj4gICAgICAgICAgfQo+Pgo+PiArICAgICAgIC8qIE9uIEhhc3dlbGwgdGhlIE9BIHVuaXQgc3Vw cG9ydHMgY2xvY2sgZ2F0aW5nIG9mZiBmb3IgYSBzcGVjaWZpYwo+PiArICAgICAgICAqIGNvbnRl eHQgYW5kIGluIHRoaXMgbW9kZSB0aGVyZSdzIG5vIHZpc2liaWxpdHkgb2YgbWV0cmljcyBmb3Ig dGhlCj4+ICsgICAgICAgICogcmVzdCBvZiB0aGUgc3lzdGVtLCB3aGljaCB3ZSBjb25zaWRlciBh Y2NlcHRhYmxlIGZvciBhCj4+ICsgICAgICAgICogbm9uLXByaXZpbGVnZWQgY2xpZW50Lgo+PiAr ICAgICAgICAqCj4+ICsgICAgICAgICogRm9yIEdlbjgrIHRoZSBPQSB1bml0IG5vIGxvbmdlciBz dXBwb3J0cyBjbG9jayBnYXRpbmcgb2ZmIGZvciBhCj4+ICsgICAgICAgICogc3BlY2lmaWMgY29u dGV4dCBhbmQgdGhlIGtlcm5lbCBjYW4ndCBzZWN1cmVseSBzdG9wIHRoZSBjb3VudGVycwo+PiAr ICAgICAgICAqIGZyb20gdXBkYXRpbmcgYXMgc3lzdGVtLXdpZGUgLyBnbG9iYWwgdmFsdWVzLiBF dmVuIHRob3VnaCB3ZSBjYW4KPj4gKyAgICAgICAgKiBmaWx0ZXIgcmVwb3J0cyBiYXNlZCBvbiB0 aGUgaW5jbHVkZWQgY29udGV4dCBJRCB3ZSBjYW4ndCBibG9jawo+PiArICAgICAgICAqIGNsaWVu dHMgZnJvbSBzZWVpbmcgdGhlIHJhdyAvIGdsb2JhbCBjb3VudGVyIHZhbHVlcyB2aWEKPj4gKyAg ICAgICAgKiBNSV9SRVBPUlRfUEVSRl9DT1VOVCBjb21tYW5kcyBhbmQgc28gY29uc2lkZXIgaXQg YSBwcml2aWxlZ2VkIG9wIHRvCj4+ICsgICAgICAgICogZW5hYmxlIHRoZSBPQSB1bml0IGJ5IGRl ZmF1bHQuCj4+ICsgICAgICAgICovCj4+ICsgICAgICAgaWYgKElTX0hBU1dFTEwoZGV2X3ByaXYp ICYmIHNwZWNpZmljX2N0eCkKPj4gKyAgICAgICAgICAgICAgIHByaXZpbGVnZWRfb3AgPSBmYWxz ZTsKPj4gKwo+PiAgICAgICAgICAvKiBTaW1pbGFyIHRvIHBlcmYncyBrZXJuZWwucGVyZl9wYXJh bm9pZF9jcHUgc3lzY3RsIG9wdGlvbgo+PiAgICAgICAgICAgKiB3ZSBjaGVjayBhIGRldi5pOTE1 LnBlcmZfc3RyZWFtX3BhcmFub2lkIHN5c2N0bCBvcHRpb24KPj4gICAgICAgICAgICogdG8gZGV0 ZXJtaW5lIGlmIGl0J3Mgb2sgdG8gYWNjZXNzIHN5c3RlbSB3aWRlIE9BIGNvdW50ZXJzCj4+ICAg ICAgICAgICAqIHdpdGhvdXQgQ0FQX1NZU19BRE1JTiBwcml2aWxlZ2VzLgo+PiAgICAgICAgICAg Ki8KPj4gLSAgICAgICBpZiAoIXNwZWNpZmljX2N0eCAmJgo+PiArICAgICAgIGlmIChwcml2aWxl Z2VkX29wICYmCj4+ICAgICAgICAgICAgICBpOTE1X3BlcmZfc3RyZWFtX3BhcmFub2lkICYmICFj YXBhYmxlKENBUF9TWVNfQURNSU4pKSB7Cj4+ICAgICAgICAgICAgICAgICAgRFJNX0RFQlVHKCJJ bnN1ZmZpY2llbnQgcHJpdmlsZWdlcyB0byBvcGVuIHN5c3RlbS13aWRlIGk5MTUgcGVyZiBzdHJl YW1cbiIpOwo+PiAgICAgICAgICAgICAgICAgIHJldCA9IC1FQUNDRVM7Cj4+IEBAIC0yMDY5LDkg KzI3NzksNiBAQCBpbnQgaTkxNV9wZXJmX29wZW5faW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRl diwgdm9pZCAqZGF0YSwKPj4gICAgKi8KPj4gICB2b2lkIGk5MTVfcGVyZl9yZWdpc3RlcihzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4+ICAgewo+PiAtICAgICAgIGlmICghSVNf SEFTV0VMTChkZXZfcHJpdikpCj4+IC0gICAgICAgICAgICAgICByZXR1cm47Cj4+IC0KPj4gICAg ICAgICAgaWYgKCFkZXZfcHJpdi0+cGVyZi5pbml0aWFsaXplZCkKPj4gICAgICAgICAgICAgICAg ICByZXR1cm47Cj4+Cj4+IEBAIC0yMDg3LDExICsyNzk0LDM4IEBAIHZvaWQgaTkxNV9wZXJmX3Jl Z2lzdGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPj4gICAgICAgICAgaWYg KCFkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmopCj4+ICAgICAgICAgICAgICAgICAgZ290byBl eGl0Owo+Pgo+PiAtICAgICAgIGlmIChpOTE1X3BlcmZfcmVnaXN0ZXJfc3lzZnNfaHN3KGRldl9w cml2KSkgewo+PiAtICAgICAgICAgICAgICAga29iamVjdF9wdXQoZGV2X3ByaXYtPnBlcmYubWV0 cmljc19rb2JqKTsKPj4gLSAgICAgICAgICAgICAgIGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29i aiA9IE5VTEw7Cj4+ICsgICAgICAgaWYgKElTX0hBU1dFTEwoZGV2X3ByaXYpKSB7Cj4+ICsgICAg ICAgICAgICAgICBpZiAoaTkxNV9wZXJmX3JlZ2lzdGVyX3N5c2ZzX2hzdyhkZXZfcHJpdikpCj4+ ICsgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gc3lzZnNfZXJyb3I7Cj4+ICsgICAgICAgfSBl bHNlIGlmIChJU19CUk9BRFdFTEwoZGV2X3ByaXYpKSB7Cj4+ICsgICAgICAgICAgICAgICBpZiAo aTkxNV9wZXJmX3JlZ2lzdGVyX3N5c2ZzX2JkdyhkZXZfcHJpdikpCj4+ICsgICAgICAgICAgICAg ICAgICAgICAgIGdvdG8gc3lzZnNfZXJyb3I7Cj4+ICsgICAgICAgfSBlbHNlIGlmIChJU19DSEVS UllWSUVXKGRldl9wcml2KSkgewo+PiArICAgICAgICAgICAgICAgaWYgKGk5MTVfcGVyZl9yZWdp c3Rlcl9zeXNmc19jaHYoZGV2X3ByaXYpKQo+PiArICAgICAgICAgICAgICAgICAgICAgICBnb3Rv IHN5c2ZzX2Vycm9yOwo+PiArICAgICAgIH0gZWxzZSBpZiAoSVNfU0tZTEFLRShkZXZfcHJpdikp IHsKPj4gKyAgICAgICAgICAgICAgIGlmIChJU19TS0xfR1QyKGRldl9wcml2KSkgewo+PiArICAg ICAgICAgICAgICAgICAgICAgICBpZiAoaTkxNV9wZXJmX3JlZ2lzdGVyX3N5c2ZzX3NrbGd0Mihk ZXZfcHJpdikpCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBzeXNmc19l cnJvcjsKPj4gKyAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoSVNfU0tMX0dUMyhkZXZfcHJpdikp IHsKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgaWYgKGk5MTVfcGVyZl9yZWdpc3Rlcl9zeXNm c19za2xndDMoZGV2X3ByaXYpKQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdv dG8gc3lzZnNfZXJyb3I7Cj4+ICsgICAgICAgICAgICAgICB9IGVsc2UgaWYgKElTX1NLTF9HVDQo ZGV2X3ByaXYpKSB7Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGlmIChpOTE1X3BlcmZfcmVn aXN0ZXJfc3lzZnNfc2tsZ3Q0KGRldl9wcml2KSkKPj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBnb3RvIHN5c2ZzX2Vycm9yOwo+PiArICAgICAgICAgICAgICAgfSBlbHNlCj4+ICsg ICAgICAgICAgICAgICAgICAgICAgIGdvdG8gc3lzZnNfZXJyb3I7Cj4+ICsgICAgICAgfSBlbHNl IGlmIChJU19CUk9YVE9OKGRldl9wcml2KSkgewo+PiArICAgICAgICAgICAgICAgaWYgKGk5MTVf cGVyZl9yZWdpc3Rlcl9zeXNmc19ieHQoZGV2X3ByaXYpKQo+PiArICAgICAgICAgICAgICAgICAg ICAgICBnb3RvIHN5c2ZzX2Vycm9yOwo+PiAgICAgICAgICB9Cj4+Cj4+ICsgICAgICAgZ290byBl eGl0Owo+PiArCj4+ICtzeXNmc19lcnJvcjoKPj4gKyAgICAgICBrb2JqZWN0X3B1dChkZXZfcHJp di0+cGVyZi5tZXRyaWNzX2tvYmopOwo+PiArICAgICAgIGRldl9wcml2LT5wZXJmLm1ldHJpY3Nf a29iaiA9IE5VTEw7Cj4+ICsKPj4gICBleGl0Ogo+PiAgICAgICAgICBtdXRleF91bmxvY2soJmRl dl9wcml2LT5wZXJmLmxvY2spOwo+PiAgIH0KPj4gQEAgLTIxMDcsMTMgKzI4NDEsMjQgQEAgdm9p ZCBpOTE1X3BlcmZfcmVnaXN0ZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ PiAgICAqLwo+PiAgIHZvaWQgaTkxNV9wZXJmX3VucmVnaXN0ZXIoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KQo+PiAgIHsKPj4gLSAgICAgICBpZiAoIUlTX0hBU1dFTEwoZGV2X3By aXYpKQo+PiAtICAgICAgICAgICAgICAgcmV0dXJuOwo+PiAtCj4+ICAgICAgICAgIGlmICghZGV2 X3ByaXYtPnBlcmYubWV0cmljc19rb2JqKQo+PiAgICAgICAgICAgICAgICAgIHJldHVybjsKPj4K Pj4gLSAgICAgICBpOTE1X3BlcmZfdW5yZWdpc3Rlcl9zeXNmc19oc3coZGV2X3ByaXYpOwo+PiAr ICAgICAgICBpZiAoSVNfSEFTV0VMTChkZXZfcHJpdikpCj4+ICsgICAgICAgICAgICAgICAgaTkx NV9wZXJmX3VucmVnaXN0ZXJfc3lzZnNfaHN3KGRldl9wcml2KTsKPj4gKyAgICAgICAgZWxzZSBp ZiAoSVNfQlJPQURXRUxMKGRldl9wcml2KSkKPj4gKyAgICAgICAgICAgICAgICBpOTE1X3BlcmZf dW5yZWdpc3Rlcl9zeXNmc19iZHcoZGV2X3ByaXYpOwo+PiArICAgICAgICBlbHNlIGlmIChJU19D SEVSUllWSUVXKGRldl9wcml2KSkKPj4gKyAgICAgICAgICAgICAgICBpOTE1X3BlcmZfdW5yZWdp c3Rlcl9zeXNmc19jaHYoZGV2X3ByaXYpOwo+PiArICAgICAgICBlbHNlIGlmIChJU19TS1lMQUtF KGRldl9wcml2KSkgewo+PiArICAgICAgICAgICAgICAgaWYgKElTX1NLTF9HVDIoZGV2X3ByaXYp KQo+PiArICAgICAgICAgICAgICAgICAgICAgICBpOTE1X3BlcmZfdW5yZWdpc3Rlcl9zeXNmc19z a2xndDIoZGV2X3ByaXYpOwo+PiArICAgICAgICAgICAgICAgZWxzZSBpZiAoSVNfU0tMX0dUMyhk ZXZfcHJpdikpCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGk5MTVfcGVyZl91bnJlZ2lzdGVy X3N5c2ZzX3NrbGd0MyhkZXZfcHJpdik7Cj4+ICsgICAgICAgICAgICAgICBlbHNlIGlmIChJU19T S0xfR1Q0KGRldl9wcml2KSkKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgaTkxNV9wZXJmX3Vu cmVnaXN0ZXJfc3lzZnNfc2tsZ3Q0KGRldl9wcml2KTsKPj4gKyAgICAgICB9IGVsc2UgaWYgKElT X0JST1hUT04oZGV2X3ByaXYpKQo+PiArICAgICAgICAgICAgICAgIGk5MTVfcGVyZl91bnJlZ2lz dGVyX3N5c2ZzX2J4dChkZXZfcHJpdik7Cj4+Cj4+ICAgICAgICAgIGtvYmplY3RfcHV0KGRldl9w cml2LT5wZXJmLm1ldHJpY3Nfa29iaik7Cj4+ICAgICAgICAgIGRldl9wcml2LT5wZXJmLm1ldHJp Y3Nfa29iaiA9IE5VTEw7Cj4+IEBAIC0yMTcyLDM2ICsyOTE3LDEwNSBAQCBzdGF0aWMgc3RydWN0 IGN0bF90YWJsZSBkZXZfcm9vdFtdID0gewo+PiAgICAqLwo+PiAgIHZvaWQgaTkxNV9wZXJmX2lu aXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+PiAgIHsKPj4gLSAgICAgICBp ZiAoIUlTX0hBU1dFTEwoZGV2X3ByaXYpKQo+PiAtICAgICAgICAgICAgICAgcmV0dXJuOwo+PiAt Cj4+IC0gICAgICAgaHJ0aW1lcl9pbml0KCZkZXZfcHJpdi0+cGVyZi5vYS5wb2xsX2NoZWNrX3Rp bWVyLAo+PiAtICAgICAgICAgICAgICAgICAgICBDTE9DS19NT05PVE9OSUMsIEhSVElNRVJfTU9E RV9SRUwpOwo+PiAtICAgICAgIGRldl9wcml2LT5wZXJmLm9hLnBvbGxfY2hlY2tfdGltZXIuZnVu Y3Rpb24gPSBvYV9wb2xsX2NoZWNrX3RpbWVyX2NiOwo+PiAtICAgICAgIGluaXRfd2FpdHF1ZXVl X2hlYWQoJmRldl9wcml2LT5wZXJmLm9hLnBvbGxfd3EpOwo+PiArICAgICAgIGRldl9wcml2LT5w ZXJmLm9hLm5fYnVpbHRpbl9zZXRzID0gMDsKPj4gKwo+PiArICAgICAgIGlmIChJU19IQVNXRUxM KGRldl9wcml2KSkgewo+PiArICAgICAgICAgICAgICAgZGV2X3ByaXYtPnBlcmYub2Eub3BzLmlu aXRfb2FfYnVmZmVyID0gZ2VuN19pbml0X29hX2J1ZmZlcjsKPj4gKyAgICAgICAgICAgICAgIGRl dl9wcml2LT5wZXJmLm9hLm9wcy5lbmFibGVfbWV0cmljX3NldCA9IGhzd19lbmFibGVfbWV0cmlj X3NldDsKPj4gKyAgICAgICAgICAgICAgIGRldl9wcml2LT5wZXJmLm9hLm9wcy5kaXNhYmxlX21l dHJpY19zZXQgPSBoc3dfZGlzYWJsZV9tZXRyaWNfc2V0Owo+PiArICAgICAgICAgICAgICAgZGV2 X3ByaXYtPnBlcmYub2Eub3BzLm9hX2VuYWJsZSA9IGdlbjdfb2FfZW5hYmxlOwo+PiArICAgICAg ICAgICAgICAgZGV2X3ByaXYtPnBlcmYub2Eub3BzLm9hX2Rpc2FibGUgPSBnZW43X29hX2Rpc2Fi bGU7Cj4+ICsgICAgICAgICAgICAgICBkZXZfcHJpdi0+cGVyZi5vYS5vcHMucmVhZCA9IGdlbjdf b2FfcmVhZDsKPj4gKyAgICAgICAgICAgICAgIGRldl9wcml2LT5wZXJmLm9hLm9wcy5vYV9od190 YWlsX3JlYWQgPQo+PiArICAgICAgICAgICAgICAgICAgICAgICBnZW43X29hX2h3X3RhaWxfcmVh ZDsKPj4gKwo+PiArICAgICAgICAgICAgICAgZGV2X3ByaXYtPnBlcmYub2Eub2FfZm9ybWF0cyA9 IGhzd19vYV9mb3JtYXRzOwo+PiArCj4+ICsgICAgICAgICAgICAgICBkZXZfcHJpdi0+cGVyZi5v YS5uX2J1aWx0aW5fc2V0cyA9Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGk5MTVfb2Ffbl9i dWlsdGluX21ldHJpY19zZXRzX2hzdzsKPj4gKyAgICAgICB9IGVsc2UgaWYgKGk5MTUuZW5hYmxl X2V4ZWNsaXN0cykgewo+PiArICAgICAgICAgICAgICAgLyogTm90ZTogdGhhdCBhbHRob3VnaCB3 ZSBjb3VsZCB0aGVvcmV0aWNhbGx5IGFsc28gc3VwcG9ydCB0aGUKPj4gKyAgICAgICAgICAgICAg ICAqIGxlZ2FjeSByaW5nYnVmZmVyIG1vZGUgb24gQkRXIChhbmQgZWFybGllciBpdGVyYXRpb25z IG9mCj4+ICsgICAgICAgICAgICAgICAgKiB0aGlzIGRyaXZlciwgYmVmb3JlIHVwc3RyZWFtaW5n IGRpZCB0aGlzKSBpdCBkaWRuJ3Qgc2VlbQo+PiArICAgICAgICAgICAgICAgICogd29ydGggdGhl IGNvbXBsZXhpdHkgdG8gbWFpbnRhaW4gbm93IHRoYXQgQkRXKyBlbmFibGUKPj4gKyAgICAgICAg ICAgICAgICAqIGV4ZWNsaXN0IG1vZGUgYnkgZGVmYXVsdC4KPj4gKyAgICAgICAgICAgICAgICAq Lwo+Pgo+PiAtICAgICAgIElOSVRfTElTVF9IRUFEKCZkZXZfcHJpdi0+cGVyZi5zdHJlYW1zKTsK Pj4gLSAgICAgICBtdXRleF9pbml0KCZkZXZfcHJpdi0+cGVyZi5sb2NrKTsKPj4gLSAgICAgICBz cGluX2xvY2tfaW5pdCgmZGV2X3ByaXYtPnBlcmYuaG9va19sb2NrKTsKPj4gLSAgICAgICBzcGlu X2xvY2tfaW5pdCgmZGV2X3ByaXYtPnBlcmYub2Eub2FfYnVmZmVyLnB0cl9sb2NrKTsKPj4gKyAg ICAgICAgICAgICAgIGlmIChJU19HRU44KGRldl9wcml2KSkgewo+PiArICAgICAgICAgICAgICAg ICAgICAgICBkZXZfcHJpdi0+cGVyZi5vYS5jdHhfb2FjdHhjdHJsX29mZnNldCA9IDB4MTIwOwo+ PiArICAgICAgICAgICAgICAgICAgICAgICBkZXZfcHJpdi0+cGVyZi5vYS5jdHhfZmxleGV1MF9v ZmZzZXQgPSAweDJjZTsKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgZGV2X3ByaXYtPnBlcmYu b2EuZ2VuOF92YWxpZF9jdHhfYml0ID0gKDE8PDI1KTsKPj4gKwo+PiArICAgICAgICAgICAgICAg ICAgICAgICBpZiAoSVNfQlJPQURXRUxMKGRldl9wcml2KSkgewo+PiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGRldl9wcml2LT5wZXJmLm9hLm5fYnVpbHRpbl9zZXRzID0KPj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGk5MTVfb2Ffbl9idWlsdGluX21l dHJpY19zZXRzX2JkdzsKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZfcHJp di0+cGVyZi5vYS5vcHMuc2VsZWN0X21ldHJpY19zZXQgPQo+PiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaTkxNV9vYV9zZWxlY3RfbWV0cmljX3NldF9iZHc7Cj4+ICsg ICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikp IHsKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZfcHJpdi0+cGVyZi5vYS5u X2J1aWx0aW5fc2V0cyA9Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpOTE1X29hX25fYnVpbHRpbl9tZXRyaWNfc2V0c19jaHY7Cj4+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZGV2X3ByaXYtPnBlcmYub2Eub3BzLnNlbGVjdF9tZXRyaWNfc2V0ID0K Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGk5MTVfb2Ffc2VsZWN0 X21ldHJpY19zZXRfY2h2Owo+PiArICAgICAgICAgICAgICAgICAgICAgICB9Cj4+ICsgICAgICAg ICAgICAgICB9IGVsc2UgaWYgKElTX0dFTjkoZGV2X3ByaXYpKSB7Cj4+ICsgICAgICAgICAgICAg ICAgICAgICAgIGRldl9wcml2LT5wZXJmLm9hLmN0eF9vYWN0eGN0cmxfb2Zmc2V0ID0gMHgxMjg7 Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGRldl9wcml2LT5wZXJmLm9hLmN0eF9mbGV4ZXUw X29mZnNldCA9IDB4M2RlOwo+PiArICAgICAgICAgICAgICAgICAgICAgICBkZXZfcHJpdi0+cGVy Zi5vYS5nZW44X3ZhbGlkX2N0eF9iaXQgPSAoMTw8MTYpOwo+PiArCj4+ICsgICAgICAgICAgICAg ICAgICAgICAgIGlmIChJU19TS0xfR1QyKGRldl9wcml2KSkgewo+PiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGRldl9wcml2LT5wZXJmLm9hLm5fYnVpbHRpbl9zZXRzID0KPj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGk5MTVfb2Ffbl9idWlsdGluX21l dHJpY19zZXRzX3NrbGd0MjsKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZf cHJpdi0+cGVyZi5vYS5vcHMuc2VsZWN0X21ldHJpY19zZXQgPQo+PiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaTkxNV9vYV9zZWxlY3RfbWV0cmljX3NldF9za2xndDI7 Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoSVNfU0tMX0dUMyhkZXZfcHJp dikpIHsKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZfcHJpdi0+cGVyZi5v YS5uX2J1aWx0aW5fc2V0cyA9Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBpOTE1X29hX25fYnVpbHRpbl9tZXRyaWNfc2V0c19za2xndDM7Cj4+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZGV2X3ByaXYtPnBlcmYub2Eub3BzLnNlbGVjdF9tZXRyaWNf c2V0ID0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGk5MTVfb2Ff c2VsZWN0X21ldHJpY19zZXRfc2tsZ3QzOwo+PiArICAgICAgICAgICAgICAgICAgICAgICB9IGVs c2UgaWYgKElTX1NLTF9HVDQoZGV2X3ByaXYpKSB7Cj4+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZGV2X3ByaXYtPnBlcmYub2Eubl9idWlsdGluX3NldHMgPQo+PiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaTkxNV9vYV9uX2J1aWx0aW5fbWV0cmljX3Nl dHNfc2tsZ3Q0Owo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldl9wcml2LT5w ZXJmLm9hLm9wcy5zZWxlY3RfbWV0cmljX3NldCA9Cj4+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpOTE1X29hX3NlbGVjdF9tZXRyaWNfc2V0X3NrbGd0NDsKPj4gKyAg ICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChJU19CUk9YVE9OKGRldl9wcml2KSkgewo+ PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldl9wcml2LT5wZXJmLm9hLm5fYnVp bHRpbl9zZXRzID0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGk5 MTVfb2Ffbl9idWlsdGluX21ldHJpY19zZXRzX2J4dDsKPj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBkZXZfcHJpdi0+cGVyZi5vYS5vcHMuc2VsZWN0X21ldHJpY19zZXQgPQo+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaTkxNV9vYV9zZWxlY3RfbWV0 cmljX3NldF9ieHQ7Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgIH0KPj4gKyAgICAgICAgICAg ICAgIH0KPj4KPj4gLSAgICAgICBkZXZfcHJpdi0+cGVyZi5vYS5vcHMuaW5pdF9vYV9idWZmZXIg PSBnZW43X2luaXRfb2FfYnVmZmVyOwo+PiAtICAgICAgIGRldl9wcml2LT5wZXJmLm9hLm9wcy5l bmFibGVfbWV0cmljX3NldCA9IGhzd19lbmFibGVfbWV0cmljX3NldDsKPj4gLSAgICAgICBkZXZf cHJpdi0+cGVyZi5vYS5vcHMuZGlzYWJsZV9tZXRyaWNfc2V0ID0gaHN3X2Rpc2FibGVfbWV0cmlj X3NldDsKPj4gLSAgICAgICBkZXZfcHJpdi0+cGVyZi5vYS5vcHMub2FfZW5hYmxlID0gZ2VuN19v YV9lbmFibGU7Cj4+IC0gICAgICAgZGV2X3ByaXYtPnBlcmYub2Eub3BzLm9hX2Rpc2FibGUgPSBn ZW43X29hX2Rpc2FibGU7Cj4+IC0gICAgICAgZGV2X3ByaXYtPnBlcmYub2Eub3BzLnJlYWQgPSBn ZW43X29hX3JlYWQ7Cj4+IC0gICAgICAgZGV2X3ByaXYtPnBlcmYub2Eub3BzLm9hX2J1ZmZlcl9j aGVjayA9Cj4+IC0gICAgICAgICAgICAgICBnZW43X29hX2J1ZmZlcl9jaGVja191bmxvY2tlZDsK Pj4gKyAgICAgICAgICAgICAgIGlmIChkZXZfcHJpdi0+cGVyZi5vYS5uX2J1aWx0aW5fc2V0cykg ewo+PiArICAgICAgICAgICAgICAgICAgICAgICBkZXZfcHJpdi0+cGVyZi5vYS5vcHMuaW5pdF9v YV9idWZmZXIgPSBnZW44X2luaXRfb2FfYnVmZmVyOwo+PiArICAgICAgICAgICAgICAgICAgICAg ICBkZXZfcHJpdi0+cGVyZi5vYS5vcHMuZW5hYmxlX21ldHJpY19zZXQgPQo+PiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGdlbjhfZW5hYmxlX21ldHJpY19zZXQ7Cj4+ICsgICAgICAg ICAgICAgICAgICAgICAgIGRldl9wcml2LT5wZXJmLm9hLm9wcy5kaXNhYmxlX21ldHJpY19zZXQg PQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbjhfZGlzYWJsZV9tZXRyaWNf c2V0Owo+PiArICAgICAgICAgICAgICAgICAgICAgICBkZXZfcHJpdi0+cGVyZi5vYS5vcHMub2Ff ZW5hYmxlID0gZ2VuOF9vYV9lbmFibGU7Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGRldl9w cml2LT5wZXJmLm9hLm9wcy5vYV9kaXNhYmxlID0gZ2VuOF9vYV9kaXNhYmxlOwo+PiArICAgICAg ICAgICAgICAgICAgICAgICBkZXZfcHJpdi0+cGVyZi5vYS5vcHMucmVhZCA9IGdlbjhfb2FfcmVh ZDsKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgZGV2X3ByaXYtPnBlcmYub2Eub3BzLm9hX2h3 X3RhaWxfcmVhZCA9Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuOF9vYV9o d190YWlsX3JlYWQ7Cj4+ICsKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgZGV2X3ByaXYtPnBl cmYub2Eub2FfZm9ybWF0cyA9IGdlbjhfcGx1c19vYV9mb3JtYXRzOwo+PiArICAgICAgICAgICAg ICAgfQo+PiArICAgICAgIH0KPj4KPj4gLSAgICAgICBkZXZfcHJpdi0+cGVyZi5vYS5vYV9mb3Jt YXRzID0gaHN3X29hX2Zvcm1hdHM7Cj4+ICsgICAgICAgaWYgKGRldl9wcml2LT5wZXJmLm9hLm5f YnVpbHRpbl9zZXRzKSB7Cj4+ICsgICAgICAgICAgICAgICBocnRpbWVyX2luaXQoJmRldl9wcml2 LT5wZXJmLm9hLnBvbGxfY2hlY2tfdGltZXIsCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgQ0xPQ0tfTU9OT1RPTklDLCBIUlRJTUVSX01PREVfUkVMKTsKPj4gKyAgICAgICAgICAg ICAgIGRldl9wcml2LT5wZXJmLm9hLnBvbGxfY2hlY2tfdGltZXIuZnVuY3Rpb24gPSBvYV9wb2xs X2NoZWNrX3RpbWVyX2NiOwo+PiArICAgICAgICAgICAgICAgaW5pdF93YWl0cXVldWVfaGVhZCgm ZGV2X3ByaXYtPnBlcmYub2EucG9sbF93cSk7Cj4+Cj4+IC0gICAgICAgZGV2X3ByaXYtPnBlcmYu b2Eubl9idWlsdGluX3NldHMgPQo+PiAtICAgICAgICAgICAgICAgaTkxNV9vYV9uX2J1aWx0aW5f bWV0cmljX3NldHNfaHN3Owo+PiArICAgICAgICAgICAgICAgSU5JVF9MSVNUX0hFQUQoJmRldl9w cml2LT5wZXJmLnN0cmVhbXMpOwo+PiArICAgICAgICAgICAgICAgbXV0ZXhfaW5pdCgmZGV2X3By aXYtPnBlcmYubG9jayk7Cj4+ICsgICAgICAgICAgICAgICBzcGluX2xvY2tfaW5pdCgmZGV2X3By aXYtPnBlcmYuaG9va19sb2NrKTsKPj4gKyAgICAgICAgICAgICAgIHNwaW5fbG9ja19pbml0KCZk ZXZfcHJpdi0+cGVyZi5vYS5vYV9idWZmZXIucHRyX2xvY2spOwo+Pgo+PiAtICAgICAgIGRldl9w cml2LT5wZXJmLnN5c2N0bF9oZWFkZXIgPSByZWdpc3Rlcl9zeXNjdGxfdGFibGUoZGV2X3Jvb3Qp Owo+PiArICAgICAgICAgICAgICAgZGV2X3ByaXYtPnBlcmYuc3lzY3RsX2hlYWRlciA9IHJlZ2lz dGVyX3N5c2N0bF90YWJsZShkZXZfcm9vdCk7Cj4+Cj4+IC0gICAgICAgZGV2X3ByaXYtPnBlcmYu aW5pdGlhbGl6ZWQgPSB0cnVlOwo+PiArICAgICAgICAgICAgICAgZGV2X3ByaXYtPnBlcmYuaW5p dGlhbGl6ZWQgPSB0cnVlOwo+PiArICAgICAgIH0KPj4gICB9Cj4+Cj4+ICAgLyoqCj4+IEBAIC0y MjE2LDUgKzMwMzAsNiBAQCB2b2lkIGk5MTVfcGVyZl9maW5pKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKPj4gICAgICAgICAgdW5yZWdpc3Rlcl9zeXNjdGxfdGFibGUoZGV2X3By aXYtPnBlcmYuc3lzY3RsX2hlYWRlcik7Cj4+Cj4+ICAgICAgICAgIG1lbXNldCgmZGV2X3ByaXYt PnBlcmYub2Eub3BzLCAwLCBzaXplb2YoZGV2X3ByaXYtPnBlcmYub2Eub3BzKSk7Cj4+ICsKPj4g ICAgICAgICAgZGV2X3ByaXYtPnBlcmYuaW5pdGlhbGl6ZWQgPSBmYWxzZTsKPj4gICB9Cj4+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9yZWcuaAo+PiBpbmRleCA0YzcyYWRhZTM2OGIuLmMwYmJiYTZkNWI3OCAx MDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+PiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4+IEBAIC02NTMsNiArNjUzLDEyIEBAIHN0 YXRpYyBpbmxpbmUgYm9vbCBpOTE1X21taW9fcmVnX3ZhbGlkKGk5MTVfcmVnX3QgcmVnKQo+Pgo+ PiAgICNkZWZpbmUgR0VOOF9PQUNUWElEIF9NTUlPKDB4MjM2NCkKPj4KPj4gKyNkZWZpbmUgR0VO OF9PQV9ERUJVRyBfTU1JTygweDJCMDQpCj4+ICsjZGVmaW5lICBHRU45X09BX0RFQlVHX0RJU0FC TEVfQ0xLX1JBVElPX1JFUE9SVFMgICAgKDE8PDUpCj4+ICsjZGVmaW5lICBHRU45X09BX0RFQlVH X0lOQ0xVREVfQ0xLX1JBVElPICAgICAgICAgICAoMTw8NikKPj4gKyNkZWZpbmUgIEdFTjlfT0Ff REVCVUdfRElTQUJMRV9HT18xXzBfUkVQT1JUUyAgICAgICgxPDwyKQo+PiArI2RlZmluZSAgR0VO OV9PQV9ERUJVR19ESVNBQkxFX0NUWF9TV0lUQ0hfUkVQT1JUUyAgICgxPDwxKQo+PiArCj4+ICAg I2RlZmluZSBHRU44X09BQ09OVFJPTCBfTU1JTygweDJCMDApCj4+ICAgI2RlZmluZSAgR0VOOF9P QV9SRVBPUlRfRk9STUFUX0ExMiAgICAgICAgICgwPDwyKQo+PiAgICNkZWZpbmUgIEdFTjhfT0Ff UkVQT1JUX0ZPUk1BVF9BMTJfQjhfQzggICAgKDI8PDIpCj4+IEBAIC02NzQsNiArNjgwLDcgQEAg c3RhdGljIGlubGluZSBib29sIGk5MTVfbW1pb19yZWdfdmFsaWQoaTkxNV9yZWdfdCByZWcpCj4+ ICAgI2RlZmluZSAgR0VON19PQUJVRkZFUl9TVE9QX1JFU1VNRV9FTkFCTEUgICAoMTw8MSkKPj4g ICAjZGVmaW5lICBHRU43X09BQlVGRkVSX1JFU1VNRSAgICAgICAgICAgICAgKDE8PDApCj4+Cj4+ ICsjZGVmaW5lIEdFTjhfT0FCVUZGRVJfVURXIF9NTUlPKDB4MjNiNCkKPj4gICAjZGVmaW5lIEdF TjhfT0FCVUZGRVIgX01NSU8oMHgyYjE0KQo+Pgo+PiAgICNkZWZpbmUgR0VON19PQVNUQVRVUzEg X01NSU8oMHgyMzY0KQo+PiBAQCAtNjkyLDcgKzY5OSw5IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBp OTE1X21taW9fcmVnX3ZhbGlkKGk5MTVfcmVnX3QgcmVnKQo+PiAgICNkZWZpbmUgIEdFTjhfT0FT VEFUVVNfUkVQT1JUX0xPU1QgICAgICAgICAoMTw8MCkKPj4KPj4gICAjZGVmaW5lIEdFTjhfT0FI RUFEUFRSIF9NTUlPKDB4MkIwQykKPj4gKyNkZWZpbmUgR0VOOF9PQUhFQURQVFJfTUFTSyAgICAw eGZmZmZmZmMwCj4+ICAgI2RlZmluZSBHRU44X09BVEFJTFBUUiBfTU1JTygweDJCMTApCj4+ICsj ZGVmaW5lIEdFTjhfT0FUQUlMUFRSX01BU0sgICAgMHhmZmZmZmZjMAo+Pgo+PiAgICNkZWZpbmUg T0FCVUZGRVJfU0laRV8xMjhLICAoMDw8MykKPj4gICAjZGVmaW5lIE9BQlVGRkVSX1NJWkVfMjU2 SyAgKDE8PDMpCj4+IEBAIC03MDUsNyArNzE0LDE3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpOTE1 X21taW9fcmVnX3ZhbGlkKGk5MTVfcmVnX3QgcmVnKQo+Pgo+PiAgICNkZWZpbmUgT0FfTUVNX1NF TEVDVF9HR1RUICAoMTw8MCkKPj4KPj4gKy8qCj4+ICsgKiBGbGV4aWJsZSwgQWdncmVnYXRlIEVV IENvdW50ZXIgUmVnaXN0ZXJzLgo+PiArICogTm90ZTogdGhlc2UgYXJlbid0IGNvbnRpZ3VvdXMK Pj4gKyAqLwo+PiAgICNkZWZpbmUgRVVfUEVSRl9DTlRMMCAgICAgIF9NTUlPKDB4ZTQ1OCkKPj4g KyNkZWZpbmUgRVVfUEVSRl9DTlRMMSAgICAgIF9NTUlPKDB4ZTU1OCkKPj4gKyNkZWZpbmUgRVVf UEVSRl9DTlRMMiAgICAgIF9NTUlPKDB4ZTY1OCkKPj4gKyNkZWZpbmUgRVVfUEVSRl9DTlRMMyAg ICAgIF9NTUlPKDB4ZTc1OCkKPj4gKyNkZWZpbmUgRVVfUEVSRl9DTlRMNCAgICAgIF9NTUlPKDB4 ZTQ1YykKPj4gKyNkZWZpbmUgRVVfUEVSRl9DTlRMNSAgICAgIF9NTUlPKDB4ZTU1YykKPj4gKyNk ZWZpbmUgRVVfUEVSRl9DTlRMNiAgICAgIF9NTUlPKDB4ZTY1YykKPj4KPj4gICAjZGVmaW5lIEdE VF9DSElDS0VOX0JJVFMgICAgX01NSU8oMHg5ODQwKQo+PiAgICNkZWZpbmUgR1RfTk9BX0VOQUJM RSAgICAgIDB4MDAwMDAwODAKPj4gQEAgLTIzMjUsNiArMjM0NCw5IEBAIGVudW0gc2tsX2Rpc3Bf cG93ZXJfd2VsbHMgewo+PiAgICNkZWZpbmUgICBHRU44X1JDX1NFTUFfSURMRV9NU0dfRElTQUJM RSAgICAgICAgKDEgPDwgMTIpCj4+ICAgI2RlZmluZSAgIEdFTjhfRkZfRE9QX0NMT0NLX0dBVEVf RElTQUJMRSAgICAgICAoMTw8MTApCj4+Cj4+ICsjZGVmaW5lIEdFTjZfUkNTX1BXUl9GU00gX01N SU8oMHgyMmFjKQo+PiArI2RlZmluZSBHRU45X1JDU19GRV9GU00yIF9NTUlPKDB4MjJhNCkKPj4g Kwo+PiAgIC8qIEZ1c2UgcmVhZG91dCByZWdpc3RlcnMgZm9yIEdUICovCj4+ICAgI2RlZmluZSBD SFZfRlVTRV9HVCAgICAgICAgICAgICAgICAgICAgX01NSU8oVkxWX0RJU1BMQVlfQkFTRSArIDB4 MjE2OCkKPj4gICAjZGVmaW5lICAgQ0hWX0ZHVF9ESVNBQkxFX1NTMCAgICAgICAgICAoMSA8PCAx MCkKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPj4gaW5kZXggN2RmMjc4ZmU0OTJlLi4zNTFl MjMxYTAyZjQgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5j Cj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4+IEBAIC0xODc5LDYg KzE4NzksOCBAQCBzdGF0aWMgdm9pZCBleGVjbGlzdHNfaW5pdF9yZWdfc3RhdGUodTMyICpyZWdz LAo+PiAgICAgICAgICAgICAgICAgIHJlZ3NbQ1RYX0xSSV9IRUFERVJfMl0gPSBNSV9MT0FEX1JF R0lTVEVSX0lNTSgxKTsKPj4gICAgICAgICAgICAgICAgICBDVFhfUkVHKHJlZ3MsIENUWF9SX1BX Ul9DTEtfU1RBVEUsIEdFTjhfUl9QV1JfQ0xLX1NUQVRFLAo+PiAgICAgICAgICAgICAgICAgICAg ICAgICAgbWFrZV9ycGNzKGRldl9wcml2KSk7Cj4+ICsKPj4gKyAgICAgICAgICAgICAgIGk5MTVf b2FfaW5pdF9yZWdfc3RhdGUoZW5naW5lLCBjdHgsIHJlZ3MpOwo+PiAgICAgICAgICB9Cj4+ICAg fQo+Pgo+PiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oIGIvaW5jbHVk ZS91YXBpL2RybS9pOTE1X2RybS5oCj4+IGluZGV4IDQ2NDU0N2QwODE3My4uMTViYzlmNzhiYTRk IDEwMDY0NAo+PiAtLS0gYS9pbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmgKPj4gKysrIGIvaW5j bHVkZS91YXBpL2RybS9pOTE1X2RybS5oCj4+IEBAIC0xMzE2LDEzICsxMzE2LDE4IEBAIHN0cnVj dCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbSB7Cj4+ICAgfTsKPj4KPj4gICBlbnVtIGRybV9p OTE1X29hX2Zvcm1hdCB7Cj4+IC0gICAgICAgSTkxNV9PQV9GT1JNQVRfQTEzID0gMSwKPj4gLSAg ICAgICBJOTE1X09BX0ZPUk1BVF9BMjksCj4+IC0gICAgICAgSTkxNV9PQV9GT1JNQVRfQTEzX0I4 X0M4LAo+PiAtICAgICAgIEk5MTVfT0FfRk9STUFUX0I0X0M4LAo+PiAtICAgICAgIEk5MTVfT0Ff Rk9STUFUX0E0NV9COF9DOCwKPj4gLSAgICAgICBJOTE1X09BX0ZPUk1BVF9CNF9DOF9BMTYsCj4+ IC0gICAgICAgSTkxNV9PQV9GT1JNQVRfQzRfQjgsCj4+ICsgICAgICAgSTkxNV9PQV9GT1JNQVRf QTEzID0gMSwgICAgIC8qIEhTVyBvbmx5ICovCj4+ICsgICAgICAgSTkxNV9PQV9GT1JNQVRfQTI5 LCAgICAgICAgIC8qIEhTVyBvbmx5ICovCj4+ICsgICAgICAgSTkxNV9PQV9GT1JNQVRfQTEzX0I4 X0M4LCAgIC8qIEhTVyBvbmx5ICovCj4+ICsgICAgICAgSTkxNV9PQV9GT1JNQVRfQjRfQzgsICAg ICAgIC8qIEhTVyBvbmx5ICovCj4+ICsgICAgICAgSTkxNV9PQV9GT1JNQVRfQTQ1X0I4X0M4LCAg IC8qIEhTVyBvbmx5ICovCj4+ICsgICAgICAgSTkxNV9PQV9GT1JNQVRfQjRfQzhfQTE2LCAgIC8q IEhTVyBvbmx5ICovCj4+ICsgICAgICAgSTkxNV9PQV9GT1JNQVRfQzRfQjgsICAgICAgIC8qIEhT VysgKi8KPj4gKwo+PiArICAgICAgIC8qIEdlbjgrICovCj4+ICsgICAgICAgSTkxNV9PQV9GT1JN QVRfQTEyLAo+PiArICAgICAgIEk5MTVfT0FfRk9STUFUX0ExMl9COF9DOCwKPj4gKyAgICAgICBJ OTE1X09BX0ZPUk1BVF9BMzJ1NDBfQTR1MzJfQjhfQzgsCj4+Cj4+ICAgICAgICAgIEk5MTVfT0Ff Rk9STUFUX01BWCAgICAgICAgICAvKiBub24tQUJJICovCj4+ICAgfTsKPj4gLS0KPj4gMi4xMS4w Cj4+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4+IElu dGVsLWdmeCBtYWlsaW5nIGxpc3QKPj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+ PiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdm eAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVs LWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=