From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Souza, Jose" Subject: Re: [PATCH v2 05/40] drm/i915/psr: Make PSR registers relative to transcoders Date: Tue, 20 Aug 2019 21:15:40 +0000 Message-ID: <967e5fa6e16290d3eb6b267766727ba42da6b39a.camel@intel.com> References: <20190817093902.2171-1-lucas.demarchi@intel.com> <20190817093902.2171-6-lucas.demarchi@intel.com> <20190820201651.c6iwjzxv5qer2uvg@ldmartin-desk1> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by gabe.freedesktop.org (Postfix) with ESMTPS id AF3CB6E88E for ; Tue, 20 Aug 2019 21:15:46 +0000 (UTC) In-Reply-To: <20190820201651.c6iwjzxv5qer2uvg@ldmartin-desk1> Content-Language: en-US Content-ID: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "intel-gfx@lists.freedesktop.org" , "De Marchi, Lucas" Cc: "Pandiyan, Dhinakaran" List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCAyMDE5LTA4LTIwIGF0IDEzOjE2IC0wNzAwLCBMdWNhcyBEZSBNYXJjaGkgd3JvdGU6 DQo+IE9uIFNhdCwgQXVnIDE3LCAyMDE5IGF0IDAyOjM4OjI3QU0gLTA3MDAsIEx1Y2FzIERlIE1h cmNoaSB3cm90ZToNCj4gPiBGcm9tOiBKb3PDqSBSb2JlcnRvIGRlIFNvdXphIDxqb3NlLnNvdXph QGludGVsLmNvbT4NCj4gPiANCj4gPiBQU1IgcmVnaXN0ZXJzIGFyZSBhIG1lc3MsIHNvbWUgaGF2 ZSB0aGUgZnVsbCBhZGRyZXNzIHdoaWxlIG90aGVycw0KPiA+IGp1c3QNCj4gPiBoYXZlIHRoZSBh ZGRpdGlvbmFsIG9mZnNldCBmcm9tIHBzcl9tbWlvX2Jhc2UuDQo+ID4gDQo+ID4gRm9yIEJEVysg cHNyX21taW9fYmFzZSBpcyBub3RoaW5nIG1vcmUgdGhhbiBUUkFOU0NPREVSX0VEUF9PRkZTRVQg Kw0KPiA+IDB4ODAwIGFuZCB1c2luZyBpdCBtYWtlcyBtb3JlIGRpZmZpY3VsdCBmb3IgcGVvcGxl IHdpdGggYW4gUFNSDQo+ID4gcmVnaXN0ZXIgYWRkcmVzcyBvciBQU1IgcmVnaXN0ZXIgbmFtZSBm cm9tIGZyb20gQlNwZWMgYXMgaTkxNSBhbHNvDQo+ID4gZG9uJ3QgbWF0Y2ggdGhlIEJTcGVjIG5h bWVzLg0KPiA+IEZvciBIU1cgcHNyX21taW9fYmFzZSBpcyBfRERJX0JVRl9DVExfQSArIDB4ODAw IGFuZCBQU1IgcmVnaXN0ZXJzDQo+ID4gYXJlDQo+ID4gb25seSBhdmFpbGFibGUgaW4gRERJQS4N Cj4gPiANCj4gPiBPdGhlciByZWFzb24gdG8gbWFrZSByZWxhdGl2ZSB0byB0cmFuc2NvZGVyIGlz IHRoYXQgc2luY2UgQkRXIGV2ZXJ5DQo+ID4gdHJhbnNjb2RlciBoYXZlIFBTUiByZWdpc3RlcnMs IHNvIGluIHRoZW9yeSBpdCBzaG91bGQgYmUgcG9zc2libGUNCj4gPiB0bw0KPiA+IGhhdmUgUFNS IGVuYWJsZWQgaW4gYSBub24tZURQIHRyYW5zY29kZXIuDQo+IA0KPiBJIGZpbmQgdGhpcyBzdGF0 ZW1lbnQgd2VpcmQgc2luY2UgUFNSIGlzIGFuIGVEUCBmZWF0dXJlLiBSZS1yZWFkaW5nDQo+IGl0 DQo+IGFnYWluIG1ha2VzIGl0IGNsZWFyZXIgd2UgYXJlIHRhbGtpbmcgYWJvdXQgYSB0cmFuc2Nv ZGVyIGRlZGljYXRlZCB0bw0KPiBlRFAgbGlrZSB3ZSBoYXZlIGJlZm9yZSBUR0wsIHJpZ2h0Pw0K DQpJIGhhZCB0aGUgc2FtZSBvcGluaW9uIHRoYXQgZm9yIG9sZGVyIHRoYW4gVEdMIGl0IHdhcyBv bmx5IHBvc3NpYmxlIHRvDQpoYXZlIGVEUCBvbiBERElBIGJ1dCBsb29rcyBsaWtlIHRoZXJlIGlz IGRldmljZXMgb24gdGhlIG1hcmtldCB3ZXJlIGVEUA0KcGFuZWxzIGFyZSBjb25uZWN0ZWQgdG8g b3RoZXIgcG9ydHMgdGhhbiBERElBLCBzbyBpdCB3b3VsZCBiZSBwb3NzaWJsZQ0KdG8gaGF2ZSAy IGVEUCBlYWNoIHdpdGggUFNSIGVuYWJsZWQuDQoNClNlZSB0aGUgSVJDIGRpc2N1c3Npb24gc29t ZSB0aW1lIGFnbzoNCg0KaHR0cHM6Ly9kcmkuZnJlZWRlc2t0b3Aub3JnL35jYnJpbGwvZHJpLWxv Zy8/Y2hhbm5lbD1pbnRlbC1nZngmaGlnaGxpZ2h0X25hbWVzPSZkYXRlPTIwMTktMDQtMTcNCg0K InRoZSBwb2ludCB3YXMgdGhhdCB3ZSBhdCBsZWFzdCB1c2VkIHRvIG1ha2UgZGV2aWNlcyB3aGVy ZSBlZHAgd2FzDQpob29rZWQgc29tZXdoZXJlIGVsc2UgdGhhdCBwb3J0IGEgIg0KDQoNCj4gDQo+ ID4gU28gZm9yIEJEVysgd2UgY2FuIHVzZSBfVFJBTlMyKCkgdG8gZ2V0IHRoZSByZWdpc3RlciBv ZmZzZXQgb2YgYW55DQo+ID4gUFNSIHJlZ2lzdGVyIGluIGFueSB0cmFuc2NvZGVyIHdoaWxlIGZv ciBIU1cgd2UgaGF2ZSBfSFNXX1BTUl9BREoNCj4gPiB0aGF0IHdpbGwgY2FsY3VsYXRlIHRoZSBy ZWdpc3RlciBvZmZzZXQgZm9yIHRoZSBzaW5nbGUgUFNSDQo+ID4gaW5zdGFuY2UsDQo+ID4gbm90 aW5nIHRoYXQgd2UgYXJlIGFscmVhZHkgZ3VhcmRlZCBhYm91dCB0cnlpbmcgdG8gZW5hYmxlIFBT UiBpbg0KPiA+IG90aGVyDQo+ID4gcG9ydCB0aGFuIERESUEgb24gSFNXIGJ5IHRoZSAnaWYgKGRp Z19wb3J0LT5iYXNlLnBvcnQgIT0gUE9SVF9BKScNCj4gPiBpbg0KPiA+IGludGVsX3Bzcl9jb21w dXRlX2NvbmZpZygpLCB0aGlzIGNoZWNrIHNob3VsZCBvbmx5IGJlIHZhbGlkIGZvciBIU1cNCj4g PiBhbmQgd2lsbCBiZSBjaGFuZ2VkIGluIGZ1dHVyZS4NCj4gPiBQU1IyIHJlZ2lzdGVycyBhbmQg UFNSX0VWRU5UIHdhcyBhZGRlZCBhZnRlciBIYXN3ZWxsIHNvIHRoYXQgaXMgd2h5DQo+ID4gX1BT Ul9BREooKSBpcyBub3QgdXNlZCBpbiBzb21lIG1hY3Jvcy4NCj4gPiANCj4gPiBUaGUgb25seSBy ZWdpc3RlcnMgdGhhdCBjYW4gbm90IGJlIHJlbGF0aXZlIHRvIHRyYW5zY29kZXIgYXJlDQo+ID4g UFNSX0lNUiBhbmQgUFNSX0lJUiB0aGF0IGFyZSBub3QgcmVsYXRpdmUgdG8gYW55dGhpbmcsIHNv IGtlZXBpbmcNCj4gPiBpdA0KPiA+IGhhcmRjb2RlZC4NCj4gDQo+IHRoZXNlIGFyZSBsYXRlciBj aGFuZ2VkIGZvciBUR0wuDQoNClRoYXQgaXMgdHJ1ZSwgYSBsZWZ0IG92ZXIgZnJvbSB0aGUgdGlt ZSB3ZXJlIFRHTCB3YXMgbm90IHB1YmxpYy4NCkJ1dCBpdCBpcyBhZGRyZXNzZWQgaW4gZnV0dXJl IHBhdGNoLg0KDQo+IA0KPiA+IEFsc28gcmVtb3ZpbmcgQkRXX0VEUF9QU1JfQkFTRSBmcm9tIEdW VCBiZWNhdXNlIGl0IGlzIG5vdCB1c2VkIGFzDQo+ID4gaXQNCj4gPiBpcyB0aGUgb25seSBQU1Ig cmVnaXN0ZXIgdGhhdCBHVlQgaGF2ZS4NCj4gPiANCj4gPiB2NToNCj4gPiAtIE1hY3JvcyBjaGFu Z2VkIHRvIGJlIG1vcmUgZXhwbGljaXQgYWJvdXQgSFNXIChEaGluYWthcmFuKQ0KPiA+IC0gU3F1 YXNoZWQgd2l0aCB0aGUgcGF0Y2ggdGhhdCBhZGRlZCB0aGUgdHJhbiBwYXJhbWV0ZXIgdG8gdGhl DQo+ID4gbWFjcm9zIChEaGluYWthcmFuKQ0KPiA+IA0KPiA+IHY2Og0KPiA+IC0gQ2hlY2tpbmcg Zm9yIGludGVycnVwdGlvbiBlcnJvcnMgYWZ0ZXIgbW9kdWxlIHJlbG9hZCBpbiB0aGUNCj4gPiB0 cmFuc2NvZGVyIHRoYXQgd2lsbCBiZSB1c2VkIChEaGluYWthcmFuKQ0KPiA+IC0gVXNpbmcgbG93 ZXJjYXNlIHRvIHRoZSByZWdpc3RlcnMgb2Zmc2V0cw0KPiA+IA0KPiA+IHY3Og0KPiA+IC0gUmVt b3ZpbmcgSVNfSEFTV0VMTCgpIGZyb20gcmVnaXN0ZXJzIG1hY3JvcyhKYW5pKQ0KPiA+IA0KPiA+ IENjOiBEaGluYWthcmFuIFBhbmRpeWFuIDxkaGluYWthcmFuLnBhbmRpeWFuQGludGVsLmNvbT4N Cj4gPiBDYzogUm9kcmlnbyBWaXZpIDxyb2RyaWdvLnZpdmlAaW50ZWwuY29tPg0KPiA+IENjOiBK YW5pIE5pa3VsYSA8amFuaS5uaWt1bGFAbGludXguaW50ZWwuY29tPg0KPiA+IENjOiBWaWxsZSBT eXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPg0KPiA+IENjOiBaaGkgV2Fu ZyA8emhpLmEud2FuZ0BpbnRlbC5jb20+DQo+ID4gU2lnbmVkLW9mZi1ieTogSm9zw6kgUm9iZXJ0 byBkZSBTb3V6YSA8am9zZS5zb3V6YUBpbnRlbC5jb20+DQo+ID4gU2lnbmVkLW9mZi1ieTogTHVj YXMgRGUgTWFyY2hpIDxsdWNhcy5kZW1hcmNoaUBpbnRlbC5jb20+DQo+ID4gLS0tDQo+ID4gZHJp dmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9wc3IuYyB8IDEwNCArKysrKysrKysrKysr LS0tLS0tLQ0KPiA+IC0tLQ0KPiA+IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9oYW5kbGVycy5j ICAgICAgfCAgIDIgKy0NCj4gPiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyAg ICAgIHwgIDE4ICsrLS0NCj4gPiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAg ICAgIHwgICA1ICstDQo+ID4gZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCAgICAgICAg ICB8ICA1NyArKysrKysrKystLS0tDQo+ID4gNSBmaWxlcyBjaGFuZ2VkLCAxMTMgaW5zZXJ0aW9u cygrKSwgNzMgZGVsZXRpb25zKC0pDQo+ID4gDQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfcHNyLmMNCj4gPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2Rpc3BsYXkvaW50ZWxfcHNyLmMNCj4gPiBpbmRleCAzYmZiNzIwNTYwYzIuLjc3MjMyZjZiY2Ex NyAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Bz ci5jDQo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9wc3IuYw0K PiA+IEBAIC0zOTAsNyArMzkwLDcgQEAgc3RhdGljIHZvaWQgaHN3X3Bzcl9zZXR1cF9hdXgoc3Ry dWN0IGludGVsX2RwDQo+ID4gKmludGVsX2RwKQ0KPiA+IA0KPiA+IAlCVUlMRF9CVUdfT04oc2l6 ZW9mKGF1eF9tc2cpID4gMjApOw0KPiA+IAlmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mKGF1eF9tc2cp OyBpICs9IDQpDQo+ID4gLQkJSTkxNV9XUklURShFRFBfUFNSX0FVWF9EQVRBKGkgPj4gMiksDQo+ ID4gKwkJSTkxNV9XUklURShFRFBfUFNSX0FVWF9EQVRBKGRldl9wcml2LT5wc3IudHJhbnNjb2Rl ciwgaQ0KPiA+ID4+IDIpLA0KPiA+IAkJCSAgIGludGVsX2RwX3BhY2tfYXV4KCZhdXhfbXNnW2ld LA0KPiA+IHNpemVvZihhdXhfbXNnKSAtIGkpKTsNCj4gPiANCj4gPiAJYXV4X2Nsb2NrX2Rpdmlk ZXIgPSBpbnRlbF9kcC0+Z2V0X2F1eF9jbG9ja19kaXZpZGVyKGludGVsX2RwLA0KPiA+IDApOw0K PiA+IEBAIC00MDEsNyArNDAxLDcgQEAgc3RhdGljIHZvaWQgaHN3X3Bzcl9zZXR1cF9hdXgoc3Ry dWN0IGludGVsX2RwDQo+ID4gKmludGVsX2RwKQ0KPiA+IA0KPiA+IAkvKiBTZWxlY3Qgb25seSB2 YWxpZCBiaXRzIGZvciBTUkRfQVVYX0NUTCAqLw0KPiA+IAlhdXhfY3RsICY9IHBzcl9hdXhfbWFz azsNCj4gPiAtCUk5MTVfV1JJVEUoRURQX1BTUl9BVVhfQ1RMLCBhdXhfY3RsKTsNCj4gPiArCUk5 MTVfV1JJVEUoRURQX1BTUl9BVVhfQ1RMKGRldl9wcml2LT5wc3IudHJhbnNjb2RlciksIGF1eF9j dGwpOw0KPiA+IH0NCj4gPiANCj4gPiBzdGF0aWMgdm9pZCBpbnRlbF9wc3JfZW5hYmxlX3Npbmso c3RydWN0IGludGVsX2RwICppbnRlbF9kcCkNCj4gPiBAQCAtNDkxLDggKzQ5MSw5IEBAIHN0YXRp YyB2b2lkIGhzd19hY3RpdmF0ZV9wc3IxKHN0cnVjdCBpbnRlbF9kcA0KPiA+ICppbnRlbF9kcCkN Cj4gPiAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOCkNCj4gPiAJCXZhbCB8PSBFRFBfUFNS X0NSQ19FTkFCTEU7DQo+ID4gDQo+ID4gLQl2YWwgfD0gSTkxNV9SRUFEKEVEUF9QU1JfQ1RMKSAm DQo+ID4gRURQX1BTUl9SRVNUT1JFX1BTUl9BQ1RJVkVfQ1RYX01BU0s7DQo+ID4gLQlJOTE1X1dS SVRFKEVEUF9QU1JfQ1RMLCB2YWwpOw0KPiA+ICsJdmFsIHw9IChJOTE1X1JFQUQoRURQX1BTUl9D VEwoZGV2X3ByaXYtPnBzci50cmFuc2NvZGVyKSkgJg0KPiA+ICsJCUVEUF9QU1JfUkVTVE9SRV9Q U1JfQUNUSVZFX0NUWF9NQVNLKTsNCj4gPiArCUk5MTVfV1JJVEUoRURQX1BTUl9DVEwoZGV2X3By aXYtPnBzci50cmFuc2NvZGVyKSwgdmFsKTsNCj4gPiB9DQo+ID4gDQo+ID4gc3RhdGljIHZvaWQg aHN3X2FjdGl2YXRlX3BzcjIoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkNCj4gPiBAQCAtNTI4 LDkgKzUyOSw5IEBAIHN0YXRpYyB2b2lkIGhzd19hY3RpdmF0ZV9wc3IyKHN0cnVjdCBpbnRlbF9k cA0KPiA+ICppbnRlbF9kcCkNCj4gPiAJICogUFNSMiBIVyBpcyBpbmNvcnJlY3RseSB1c2luZyBF RFBfUFNSX1RQMV9UUDNfU0VMIGFuZCBCU3BlYw0KPiA+IGlzDQo+ID4gCSAqIHJlY29tbWVuZGlu ZyBrZWVwIHRoaXMgYml0IHVuc2V0IHdoaWxlIFBTUjIgaXMgZW5hYmxlZC4NCj4gPiAJICovDQo+ ID4gLQlJOTE1X1dSSVRFKEVEUF9QU1JfQ1RMLCAwKTsNCj4gPiArCUk5MTVfV1JJVEUoRURQX1BT Ul9DVEwoZGV2X3ByaXYtPnBzci50cmFuc2NvZGVyKSwgMCk7DQo+ID4gDQo+ID4gLQlJOTE1X1dS SVRFKEVEUF9QU1IyX0NUTCwgdmFsKTsNCj4gPiArCUk5MTVfV1JJVEUoRURQX1BTUjJfQ1RMKGRl dl9wcml2LT5wc3IudHJhbnNjb2RlciksIHZhbCk7DQo+ID4gfQ0KPiA+IA0KPiA+IHN0YXRpYyBi b29sIGludGVsX3BzcjJfY29uZmlnX3ZhbGlkKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsDQo+ ID4gQEAgLTYwNiwxMCArNjA3LDkgQEAgdm9pZCBpbnRlbF9wc3JfY29tcHV0ZV9jb25maWcoc3Ry dWN0IGludGVsX2RwDQo+ID4gKmludGVsX2RwLA0KPiA+IA0KPiA+IAkvKg0KPiA+IAkgKiBIU1cg c3BlYyBleHBsaWNpdGx5IHNheXMgUFNSIGlzIHRpZWQgdG8gcG9ydCBBLg0KPiA+IC0JICogQkRX KyBwbGF0Zm9ybXMgd2l0aCBEREkgaW1wbGVtZW50YXRpb24gb2YgUFNSIGhhdmUgZGlmZmVyZW50 DQo+ID4gLQkgKiBQU1IgcmVnaXN0ZXJzIHBlciB0cmFuc2NvZGVyIGFuZCB3ZSBvbmx5IGltcGxl bWVudA0KPiA+IHRyYW5zY29kZXIgRURQDQo+ID4gLQkgKiBvbmVzLiBTaW5jZSBieSBEaXNwbGF5 IGRlc2lnbiB0cmFuc2NvZGVyIEVEUCBpcyB0aWVkIHRvIHBvcnQNCj4gPiBBDQo+ID4gLQkgKiB3 ZSBjYW4gc2FmZWx5IGVzY2FwZSBiYXNlZCBvbiB0aGUgcG9ydCBBLg0KPiA+ICsJICogQkRXKyBw bGF0Zm9ybXMgaGF2ZSBhIGluc3RhbmNlIG9mIFBTUiByZWdpc3RlcnMgcGVyDQo+ID4gdHJhbnNj b2RlciBidXQNCj4gPiArCSAqIGZvciBub3cgaXQgb25seSBzdXBwb3J0cyBvbmUgaW5zdGFuY2Ug b2YgUFNSLCBzbyBsZXRzIGtlZXANCj4gPiBpdA0KPiA+ICsJICogaGFyZGNvZGVkIHRvIFBPUlRf QQ0KPiA+IAkgKi8NCj4gPiAJaWYgKGRpZ19wb3J0LT5iYXNlLnBvcnQgIT0gUE9SVF9BKSB7DQo+ ID4gCQlEUk1fREVCVUdfS01TKCJQU1IgY29uZGl0aW9uIGZhaWxlZDogUG9ydCBub3QNCj4gPiBz dXBwb3J0ZWRcbiIpOw0KPiA+IEBAIC02NDksOCArNjQ5LDggQEAgc3RhdGljIHZvaWQgaW50ZWxf cHNyX2FjdGl2YXRlKHN0cnVjdCBpbnRlbF9kcA0KPiA+ICppbnRlbF9kcCkNCj4gPiAJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZHBfdG9faTkxNShpbnRlbF9kcCk7DQo+ID4g DQo+ID4gCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpDQo+ID4gLQkJV0FSTl9PTihJOTE1 X1JFQUQoRURQX1BTUjJfQ1RMKSAmIEVEUF9QU1IyX0VOQUJMRSk7DQo+ID4gLQlXQVJOX09OKEk5 MTVfUkVBRChFRFBfUFNSX0NUTCkgJiBFRFBfUFNSX0VOQUJMRSk7DQo+ID4gKwkJV0FSTl9PTihJ OTE1X1JFQUQoRURQX1BTUjJfQ1RMKGRldl9wcml2LQ0KPiA+ID5wc3IudHJhbnNjb2RlcikpICYg RURQX1BTUjJfRU5BQkxFKTsNCj4gPiArCVdBUk5fT04oSTkxNV9SRUFEKEVEUF9QU1JfQ1RMKGRl dl9wcml2LT5wc3IudHJhbnNjb2RlcikpICYNCj4gPiBFRFBfUFNSX0VOQUJMRSk7DQo+ID4gCVdB Uk5fT04oZGV2X3ByaXYtPnBzci5hY3RpdmUpOw0KPiA+IAlsb2NrZGVwX2Fzc2VydF9oZWxkKCZk ZXZfcHJpdi0+cHNyLmxvY2spOw0KPiA+IA0KPiA+IEBAIC03MjAsMTkgKzcyMCwzNyBAQCBzdGF0 aWMgdm9pZCBpbnRlbF9wc3JfZW5hYmxlX3NvdXJjZShzdHJ1Y3QNCj4gPiBpbnRlbF9kcCAqaW50 ZWxfZHAsDQo+ID4gCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgMTEpDQo+ID4gCQltYXNrIHw9 IEVEUF9QU1JfREVCVUdfTUFTS19ESVNQX1JFR19XUklURTsNCj4gPiANCj4gPiAtCUk5MTVfV1JJ VEUoRURQX1BTUl9ERUJVRywgbWFzayk7DQo+ID4gKwlJOTE1X1dSSVRFKEVEUF9QU1JfREVCVUco ZGV2X3ByaXYtPnBzci50cmFuc2NvZGVyKSwgbWFzayk7DQo+ID4gfQ0KPiA+IA0KPiA+IHN0YXRp YyB2b2lkIGludGVsX3Bzcl9lbmFibGVfbG9ja2VkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlDQo+ ID4gKmRldl9wcml2LA0KPiA+IAkJCQkgICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUN Cj4gPiAqY3J0Y19zdGF0ZSkNCj4gPiB7DQo+ID4gCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAg PSBkZXZfcHJpdi0+cHNyLmRwOw0KPiA+ICsJdTMyIHZhbDsNCj4gPiANCj4gPiAJV0FSTl9PTihk ZXZfcHJpdi0+cHNyLmVuYWJsZWQpOw0KPiA+IA0KPiA+IAlkZXZfcHJpdi0+cHNyLnBzcjJfZW5h YmxlZCA9IGludGVsX3BzcjJfZW5hYmxlZChkZXZfcHJpdiwNCj4gPiBjcnRjX3N0YXRlKTsNCj4g PiAJZGV2X3ByaXYtPnBzci5idXN5X2Zyb250YnVmZmVyX2JpdHMgPSAwOw0KPiA+IAlkZXZfcHJp di0+cHNyLnBpcGUgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPmJhc2UuY3J0YyktDQo+ID4g PnBpcGU7DQo+ID4gKwlkZXZfcHJpdi0+cHNyLnRyYW5zY29kZXIgPSBjcnRjX3N0YXRlLT5jcHVf dHJhbnNjb2RlcjsNCj4gPiArDQo+ID4gKwkvKg0KPiA+ICsJICogSWYgYSBQU1IgZXJyb3IgaGFw cGVuZWQgYW5kIHRoZSBkcml2ZXIgaXMgcmVsb2FkZWQsIHRoZQ0KPiA+IEVEUF9QU1JfSUlSDQo+ ID4gKwkgKiB3aWxsIHN0aWxsIGtlZXAgdGhlIGVycm9yIHNldCBldmVuIGFmdGVyIHRoZSByZXNl dCBkb25lIGluDQo+ID4gdGhlDQo+ID4gKwkgKiBpcnFfcHJlaW5zdGFsbCBhbmQgaXJxX3VuaW5z dGFsbCBob29rcy4NCj4gPiArCSAqIEFuZCBlbmFibGluZyBpbiB0aGlzIHNpdHVhdGlvbiBjYXVz ZSB0aGUgc2NyZWVuIHRvIGZyZWV6ZSBpbg0KPiA+IHRoZQ0KPiA+ICsJICogZmlyc3QgdGltZSB0 aGF0IFBTUiBIVyB0cmllcyB0byBhY3RpdmF0ZSBzbyBsZXRzIGtlZXAgUFNSDQo+ID4gZGlzYWJs ZWQNCj4gPiArCSAqIHRvIGF2b2lkIGFueSByZW5kZXJpbmcgcHJvYmxlbXMuDQo+ID4gKwkgKi8N Cj4gPiArCXZhbCA9IEk5MTVfUkVBRChFRFBfUFNSX0lJUik7DQo+ID4gKwl2YWwgJj0gRURQX1BT Ul9FUlJPUihlZHBfcHNyX3NoaWZ0KGRldl9wcml2LT5wc3IudHJhbnNjb2RlcikpOw0KPiA+ICsJ aWYgKHZhbCkgew0KPiA+ICsJCWRldl9wcml2LT5wc3Iuc2lua19ub3RfcmVsaWFibGUgPSB0cnVl Ow0KPiA+ICsJCURSTV9ERUJVR19LTVMoIlBTUiBpbnRlcnJ1cHRpb24gZXJyb3Igc2V0LCBub3Qg ZW5hYmxpbmcNCj4gPiBQU1JcbiIpOw0KPiA+ICsJCXJldHVybjsNCj4gPiArCX0NCj4gPiANCj4g PiAJRFJNX0RFQlVHX0tNUygiRW5hYmxpbmcgUFNSJXNcbiIsDQo+ID4gCQkgICAgICBkZXZfcHJp di0+cHNyLnBzcjJfZW5hYmxlZCA/ICIyIiA6ICIxIik7DQo+ID4gQEAgLTc4MiwyMCArODAwLDI3 IEBAIHN0YXRpYyB2b2lkIGludGVsX3Bzcl9leGl0KHN0cnVjdA0KPiA+IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KQ0KPiA+IAl1MzIgdmFsOw0KPiA+IA0KPiA+IAlpZiAoIWRldl9wcml2LT5w c3IuYWN0aXZlKSB7DQo+ID4gLQkJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkNCj4gPiAt CQkJV0FSTl9PTihJOTE1X1JFQUQoRURQX1BTUjJfQ1RMKSAmDQo+ID4gRURQX1BTUjJfRU5BQkxF KTsNCj4gPiAtCQlXQVJOX09OKEk5MTVfUkVBRChFRFBfUFNSX0NUTCkgJiBFRFBfUFNSX0VOQUJM RSk7DQo+ID4gKwkJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkgew0KPiA+ICsJCQl2YWwg PSBJOTE1X1JFQUQoRURQX1BTUjJfQ1RMKGRldl9wcml2LQ0KPiA+ID5wc3IudHJhbnNjb2Rlcikp Ow0KPiA+ICsJCQlXQVJOX09OKHZhbCAmIEVEUF9QU1IyX0VOQUJMRSk7DQo+ID4gKwkJfQ0KPiA+ ICsNCj4gPiArCQl2YWwgPSBJOTE1X1JFQUQoRURQX1BTUl9DVEwoZGV2X3ByaXYtPnBzci50cmFu c2NvZGVyKSk7DQo+ID4gKwkJV0FSTl9PTih2YWwgJiBFRFBfUFNSX0VOQUJMRSk7DQo+ID4gKw0K PiA+IAkJcmV0dXJuOw0KPiA+IAl9DQo+ID4gDQo+ID4gCWlmIChkZXZfcHJpdi0+cHNyLnBzcjJf ZW5hYmxlZCkgew0KPiA+IC0JCXZhbCA9IEk5MTVfUkVBRChFRFBfUFNSMl9DVEwpOw0KPiA+ICsJ CXZhbCA9IEk5MTVfUkVBRChFRFBfUFNSMl9DVEwoZGV2X3ByaXYtDQo+ID4gPnBzci50cmFuc2Nv ZGVyKSk7DQo+ID4gCQlXQVJOX09OKCEodmFsICYgRURQX1BTUjJfRU5BQkxFKSk7DQo+ID4gLQkJ STkxNV9XUklURShFRFBfUFNSMl9DVEwsIHZhbCAmIH5FRFBfUFNSMl9FTkFCTEUpOw0KPiA+ICsJ CXZhbCAmPSB+RURQX1BTUjJfRU5BQkxFOw0KPiA+ICsJCUk5MTVfV1JJVEUoRURQX1BTUjJfQ1RM KGRldl9wcml2LT5wc3IudHJhbnNjb2RlciksDQo+ID4gdmFsKTsNCj4gPiAJfSBlbHNlIHsNCj4g PiAtCQl2YWwgPSBJOTE1X1JFQUQoRURQX1BTUl9DVEwpOw0KPiA+ICsJCXZhbCA9IEk5MTVfUkVB RChFRFBfUFNSX0NUTChkZXZfcHJpdi0+cHNyLnRyYW5zY29kZXIpKTsNCj4gPiAJCVdBUk5fT04o ISh2YWwgJiBFRFBfUFNSX0VOQUJMRSkpOw0KPiA+IC0JCUk5MTVfV1JJVEUoRURQX1BTUl9DVEws IHZhbCAmIH5FRFBfUFNSX0VOQUJMRSk7DQo+ID4gKwkJdmFsICY9IH5FRFBfUFNSX0VOQUJMRTsN Cj4gPiArCQlJOTE1X1dSSVRFKEVEUF9QU1JfQ1RMKGRldl9wcml2LT5wc3IudHJhbnNjb2Rlciks IHZhbCk7DQo+ID4gCX0NCj4gPiAJZGV2X3ByaXYtPnBzci5hY3RpdmUgPSBmYWxzZTsNCj4gPiB9 DQo+ID4gQEAgLTgxNywxMCArODQyLDEwIEBAIHN0YXRpYyB2b2lkIGludGVsX3Bzcl9kaXNhYmxl X2xvY2tlZChzdHJ1Y3QNCj4gPiBpbnRlbF9kcCAqaW50ZWxfZHApDQo+ID4gCWludGVsX3Bzcl9l eGl0KGRldl9wcml2KTsNCj4gPiANCj4gPiAJaWYgKGRldl9wcml2LT5wc3IucHNyMl9lbmFibGVk KSB7DQo+ID4gLQkJcHNyX3N0YXR1cyA9IEVEUF9QU1IyX1NUQVRVUzsNCj4gPiArCQlwc3Jfc3Rh dHVzID0gRURQX1BTUjJfU1RBVFVTKGRldl9wcml2LT5wc3IudHJhbnNjb2Rlcik7DQo+ID4gCQlw c3Jfc3RhdHVzX21hc2sgPSBFRFBfUFNSMl9TVEFUVVNfU1RBVEVfTUFTSzsNCj4gPiAJfSBlbHNl IHsNCj4gPiAtCQlwc3Jfc3RhdHVzID0gRURQX1BTUl9TVEFUVVM7DQo+ID4gKwkJcHNyX3N0YXR1 cyA9IEVEUF9QU1JfU1RBVFVTKGRldl9wcml2LT5wc3IudHJhbnNjb2Rlcik7DQo+ID4gCQlwc3Jf c3RhdHVzX21hc2sgPSBFRFBfUFNSX1NUQVRVU19TVEFURV9NQVNLOw0KPiA+IAl9DQo+ID4gDQo+ ID4gQEAgLTk2Myw3ICs5ODgsOCBAQCBpbnQgaW50ZWxfcHNyX3dhaXRfZm9yX2lkbGUoY29uc3Qg c3RydWN0DQo+ID4gaW50ZWxfY3J0Y19zdGF0ZSAqbmV3X2NydGNfc3RhdGUsDQo+ID4gCSAqIGRl ZmVuc2l2ZSBlbm91Z2ggdG8gY292ZXIgZXZlcnl0aGluZy4NCj4gPiAJICovDQo+ID4gDQo+ID4g LQlyZXR1cm4gX19pbnRlbF93YWl0X2Zvcl9yZWdpc3RlcigmZGV2X3ByaXYtPnVuY29yZSwNCj4g PiBFRFBfUFNSX1NUQVRVUywNCj4gPiArCXJldHVybiBfX2ludGVsX3dhaXRfZm9yX3JlZ2lzdGVy KCZkZXZfcHJpdi0+dW5jb3JlLA0KPiA+ICsJCQkJCSBFRFBfUFNSX1NUQVRVUyhkZXZfcHJpdi0N Cj4gPiA+cHNyLnRyYW5zY29kZXIpLA0KPiA+IAkJCQkJIEVEUF9QU1JfU1RBVFVTX1NUQVRFX01B U0ssDQo+ID4gCQkJCQkgRURQX1BTUl9TVEFUVVNfU1RBVEVfSURMRSwgMiwNCj4gPiA1MCwNCj4g PiAJCQkJCSBvdXRfdmFsdWUpOw0KPiA+IEBAIC05NzksMTAgKzEwMDUsMTAgQEAgc3RhdGljIGJv b2wNCj4gPiBfX3Bzcl93YWl0X2Zvcl9pZGxlX2xvY2tlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpDQo+ID4gCQlyZXR1cm4gZmFsc2U7DQo+ID4gDQo+ID4gCWlmIChkZXZfcHJp di0+cHNyLnBzcjJfZW5hYmxlZCkgew0KPiA+IC0JCXJlZyA9IEVEUF9QU1IyX1NUQVRVUzsNCj4g PiArCQlyZWcgPSBFRFBfUFNSMl9TVEFUVVMoZGV2X3ByaXYtPnBzci50cmFuc2NvZGVyKTsNCj4g PiAJCW1hc2sgPSBFRFBfUFNSMl9TVEFUVVNfU1RBVEVfTUFTSzsNCj4gPiAJfSBlbHNlIHsNCj4g PiAtCQlyZWcgPSBFRFBfUFNSX1NUQVRVUzsNCj4gPiArCQlyZWcgPSBFRFBfUFNSX1NUQVRVUyhk ZXZfcHJpdi0+cHNyLnRyYW5zY29kZXIpOw0KPiA+IAkJbWFzayA9IEVEUF9QU1JfU1RBVFVTX1NU QVRFX01BU0s7DQo+ID4gCX0NCj4gPiANCj4gPiBAQCAtMTIwOCwzNiArMTIzNCwyNCBAQCB2b2lk IGludGVsX3Bzcl9mbHVzaChzdHJ1Y3QNCj4gPiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwN Cj4gPiAgKi8NCj4gPiB2b2lkIGludGVsX3Bzcl9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikNCj4gPiB7DQo+ID4gLQl1MzIgdmFsOw0KPiA+IC0NCj4gPiAJaWYgKCFIQVNf UFNSKGRldl9wcml2KSkNCj4gPiAJCXJldHVybjsNCj4gPiANCj4gPiAtCWRldl9wcml2LT5wc3Jf bW1pb19iYXNlID0gSVNfSEFTV0VMTChkZXZfcHJpdikgPw0KPiA+IC0JCUhTV19FRFBfUFNSX0JB U0UgOiBCRFdfRURQX1BTUl9CQVNFOw0KPiA+IC0NCj4gPiAJaWYgKCFkZXZfcHJpdi0+cHNyLnNp bmtfc3VwcG9ydCkNCj4gPiAJCXJldHVybjsNCj4gPiANCj4gPiArCWlmIChJU19IQVNXRUxMKGRl dl9wcml2KSkNCj4gPiArCQkvKg0KPiA+ICsJCSAqIEhTVyBkb24ndCBoYXZlIFBTUiByZWdpc3Rl cnMgb24gdGhlIHNhbWUgc3BhY2UgYXMNCj4gPiB0cmFuc2NvZGVyDQo+ID4gKwkJICogc28gc2V0 IHRoaXMgdG8gYSB2YWx1ZSB0aGF0IHdoZW4gc3VidHJhY3QgdG8gdGhlDQo+ID4gcmVnaXN0ZXIN Cj4gPiArCQkgKiBpbiB0cmFuc2NvZGVyIHNwYWNlIHJlc3VsdHMgaW4gdGhlIHJpZ2h0IG9mZnNl dCBmb3INCj4gPiBIU1cNCj4gPiArCQkgKi8NCj4gPiArCQlkZXZfcHJpdi0+aHN3X3Bzcl9tbWlv X2FkanVzdCA9IF9TUkRfQ1RMX0VEUCAtDQo+ID4gX0hTV19FRFBfUFNSX0JBU0U7DQo+IA0KPiBJ IGhhdmUgbWl4ZWQgZmVlbGluZ3Mgd2l0aCB0aGlzICJhZGp1c3RtZW50Ii4gSU1PIGl0IGlzIHNp bXBsZXIgd2hlbg0KPiB3ZQ0KPiBhbHdheXMgaGF2ZSBhIGJhc2UgbW1pbyBhZGRyLiBGb3IgSFNX IHdlIGNhbiBvbmx5IGhhdmUgdGhlbSBvbg0KPiBQT1JUX0EsDQo+IHNvIHdlIHdpbGwgbmV2ZXIg dHJ5IHRvIGJlIHJlbGF0aXZlIHRvIGEsIHNheSwgc2Vjb25kIHRyYW5zY29kZXIuDQoNCkluIG9u ZSBvZiB0aGUgdmVyc2lvbiB3ZSBoYWQgYSBiYXNlIG1taW8gYWRkciBidXQgSmFuaSBkaWQgbm90 IGxpa2VkDQp0aGUgaWRlYSBiZWNhdXNlIHRoZSBQU1IgcmVnaXN0ZXIgbWFjcm9zIHdvdWxkIGJl IGltcGxlbWVudGVkIHdpdGgNCnNvbWV0aGluZyBsaWtlOg0KDQpiYXNlX21taW8gKyBQU1IgcmVn aXN0ZXIgb2Zmc2V0DQoNCk1ha2luZyBpdCBkaWZmaWN1bHQgZmluZCBhIFBTUiByZWdpc3RlciB3 aXRoIEJTcGVjIGFkZHJlc3MuDQoNCj4gDQo+IEFueXdheSwgdGhpcyBpcyBtaW5vci4NCj4gDQo+ IFJldmlld2VkLWJ5OiBMdWNhcyBEZSBNYXJjaGkgPGx1Y2FzLmRlbWFyY2hpQGludGVsLmNvbT4N Cg0KDQpUaGFua3MsIHdpbGwgbG9vayB0byB0aGUgb3RoZXIgY29tbWVudHMgb24gUFNSIHBhdGNo ZXMgYW5kIHNlbmQgYQ0Kc2VyaWVzIHdpdGggdGhlIHJldmlld2VkIG9uZXMgdG8gZmluYWxseSBn ZXQgdGhpcyBtZXJnZWQuDQoNCj4gDQo+IA0KPiA+ICsNCj4gPiAJaWYgKGk5MTVfbW9kcGFyYW1z LmVuYWJsZV9wc3IgPT0gLTEpDQo+ID4gCQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDkgfHwg IWRldl9wcml2LQ0KPiA+ID52YnQucHNyLmVuYWJsZSkNCj4gPiAJCQlpOTE1X21vZHBhcmFtcy5l bmFibGVfcHNyID0gMDsNCj4gPiANCj4gPiAtCS8qDQo+ID4gLQkgKiBJZiBhIFBTUiBlcnJvciBo YXBwZW5lZCBhbmQgdGhlIGRyaXZlciBpcyByZWxvYWRlZCwgdGhlDQo+ID4gRURQX1BTUl9JSVIN Cj4gPiAtCSAqIHdpbGwgc3RpbGwga2VlcCB0aGUgZXJyb3Igc2V0IGV2ZW4gYWZ0ZXIgdGhlIHJl c2V0IGRvbmUgaW4NCj4gPiB0aGUNCj4gPiAtCSAqIGlycV9wcmVpbnN0YWxsIGFuZCBpcnFfdW5p bnN0YWxsIGhvb2tzLg0KPiA+IC0JICogQW5kIGVuYWJsaW5nIGluIHRoaXMgc2l0dWF0aW9uIGNh dXNlIHRoZSBzY3JlZW4gdG8gZnJlZXplIGluDQo+ID4gdGhlDQo+ID4gLQkgKiBmaXJzdCB0aW1l IHRoYXQgUFNSIEhXIHRyaWVzIHRvIGFjdGl2YXRlIHNvIGxldHMga2VlcCBQU1INCj4gPiBkaXNh YmxlZA0KPiA+IC0JICogdG8gYXZvaWQgYW55IHJlbmRlcmluZyBwcm9ibGVtcy4NCj4gPiAtCSAq Lw0KPiA+IC0JdmFsID0gSTkxNV9SRUFEKEVEUF9QU1JfSUlSKTsNCj4gPiAtCXZhbCAmPSBFRFBf UFNSX0VSUk9SKGVkcF9wc3Jfc2hpZnQoVFJBTlNDT0RFUl9FRFApKTsNCj4gPiAtCWlmICh2YWwp IHsNCj4gPiAtCQlEUk1fREVCVUdfS01TKCJQU1IgaW50ZXJydXB0aW9uIGVycm9yIHNldFxuIik7 DQo+ID4gLQkJZGV2X3ByaXYtPnBzci5zaW5rX25vdF9yZWxpYWJsZSA9IHRydWU7DQo+ID4gLQl9 DQo+ID4gLQ0KPiA+IAkvKiBTZXQgbGlua19zdGFuZGJ5IHggbGlua19vZmYgZGVmYXVsdHMgKi8N Cj4gPiAJaWYgKElTX0hBU1dFTEwoZGV2X3ByaXYpIHx8IElTX0JST0FEV0VMTChkZXZfcHJpdikp DQo+ID4gCQkvKiBIU1cgYW5kIEJEVyByZXF1aXJlIHdvcmthcm91bmRzIHRoYXQgd2UgZG9uJ3QN Cj4gPiBpbXBsZW1lbnQuICovDQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2d2dC9oYW5kbGVycy5jDQo+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvaGFuZGxlcnMu Yw0KPiA+IGluZGV4IDI1Zjc4MTk2Yjk2NC4uNDVhOTEyNGU1M2I2IDEwMDY0NA0KPiA+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9oYW5kbGVycy5jDQo+ID4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3Z0L2hhbmRsZXJzLmMNCj4gPiBAQCAtMjc5Niw3ICsyNzk2LDcgQEAgc3Rh dGljIGludCBpbml0X2Jyb2Fkd2VsbF9tbWlvX2luZm8oc3RydWN0DQo+ID4gaW50ZWxfZ3Z0ICpn dnQpDQo+ID4gCU1NSU9fRChDSElDS0VOX1BJUEVTTF8xKFBJUEVfQyksIERfQkRXX1BMVVMpOw0K PiA+IA0KPiA+IAlNTUlPX0QoV01fTUlTQywgRF9CRFcpOw0KPiA+IC0JTU1JT19EKF9NTUlPKEJE V19FRFBfUFNSX0JBU0UpLCBEX0JEVyk7DQo+ID4gKwlNTUlPX0QoX01NSU8oX1NSRF9DVExfRURQ KSwgRF9CRFcpOw0KPiA+IA0KPiA+IAlNTUlPX0QoX01NSU8oMHg2NjcxYyksIERfQkRXX1BMVVMp Ow0KPiA+IAlNTUlPX0QoX01NSU8oMHg2NmMwMCksIERfQkRXX1BMVVMpOw0KPiA+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYw0KPiA+IGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMNCj4gPiBpbmRleCBlN2NlNzM5ZmU1NDUuLmVkNmYy MTQwMTM1MiAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVn ZnMuYw0KPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jDQo+ID4g QEAgLTIxMzEsNyArMjEzMSw3IEBAIHBzcl9zb3VyY2Vfc3RhdHVzKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlDQo+ID4gKmRldl9wcml2LCBzdHJ1Y3Qgc2VxX2ZpbGUgKm0pDQo+ID4gCQkJIkJVRl9P TiIsDQo+ID4gCQkJIlRHX09OIg0KPiA+IAkJfTsNCj4gPiAtCQl2YWwgPSBJOTE1X1JFQUQoRURQ X1BTUjJfU1RBVFVTKTsNCj4gPiArCQl2YWwgPSBJOTE1X1JFQUQoRURQX1BTUjJfU1RBVFVTKGRl dl9wcml2LQ0KPiA+ID5wc3IudHJhbnNjb2RlcikpOw0KPiA+IAkJc3RhdHVzX3ZhbCA9ICh2YWwg JiBFRFBfUFNSMl9TVEFUVVNfU1RBVEVfTUFTSykgPj4NCj4gPiAJCQkgICAgICBFRFBfUFNSMl9T VEFUVVNfU1RBVEVfU0hJRlQ7DQo+ID4gCQlpZiAoc3RhdHVzX3ZhbCA8IEFSUkFZX1NJWkUobGl2 ZV9zdGF0dXMpKQ0KPiA+IEBAIC0yMTQ3LDcgKzIxNDcsNyBAQCBwc3Jfc291cmNlX3N0YXR1cyhz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZQ0KPiA+ICpkZXZfcHJpdiwgc3RydWN0IHNlcV9maWxlICpt KQ0KPiA+IAkJCSJTUkRPRkZBQ0siLA0KPiA+IAkJCSJTUkRFTlRfT04iLA0KPiA+IAkJfTsNCj4g PiAtCQl2YWwgPSBJOTE1X1JFQUQoRURQX1BTUl9TVEFUVVMpOw0KPiA+ICsJCXZhbCA9IEk5MTVf UkVBRChFRFBfUFNSX1NUQVRVUyhkZXZfcHJpdi0NCj4gPiA+cHNyLnRyYW5zY29kZXIpKTsNCj4g PiAJCXN0YXR1c192YWwgPSAodmFsICYgRURQX1BTUl9TVEFUVVNfU1RBVEVfTUFTSykgPj4NCj4g PiAJCQkgICAgICBFRFBfUFNSX1NUQVRVU19TVEFURV9TSElGVDsNCj4gPiAJCWlmIChzdGF0dXNf dmFsIDwgQVJSQVlfU0laRShsaXZlX3N0YXR1cykpDQo+ID4gQEAgLTIxOTAsMTAgKzIxOTAsMTAg QEAgc3RhdGljIGludCBpOTE1X2VkcF9wc3Jfc3RhdHVzKHN0cnVjdA0KPiA+IHNlcV9maWxlICpt LCB2b2lkICpkYXRhKQ0KPiA+IAkJZ290byB1bmxvY2s7DQo+ID4gDQo+ID4gCWlmIChwc3ItPnBz cjJfZW5hYmxlZCkgew0KPiA+IC0JCXZhbCA9IEk5MTVfUkVBRChFRFBfUFNSMl9DVEwpOw0KPiA+ ICsJCXZhbCA9IEk5MTVfUkVBRChFRFBfUFNSMl9DVEwoZGV2X3ByaXYtDQo+ID4gPnBzci50cmFu c2NvZGVyKSk7DQo+ID4gCQllbmFibGVkID0gdmFsICYgRURQX1BTUjJfRU5BQkxFOw0KPiA+IAl9 IGVsc2Ugew0KPiA+IC0JCXZhbCA9IEk5MTVfUkVBRChFRFBfUFNSX0NUTCk7DQo+ID4gKwkJdmFs ID0gSTkxNV9SRUFEKEVEUF9QU1JfQ1RMKGRldl9wcml2LT5wc3IudHJhbnNjb2RlcikpOw0KPiA+ IAkJZW5hYmxlZCA9IHZhbCAmIEVEUF9QU1JfRU5BQkxFOw0KPiA+IAl9DQo+ID4gCXNlcV9wcmlu dGYobSwgIlNvdXJjZSBQU1IgY3RsOiAlcyBbMHglMDh4XVxuIiwNCj4gPiBAQCAtMjIwNiw3ICsy MjA2LDggQEAgc3RhdGljIGludCBpOTE1X2VkcF9wc3Jfc3RhdHVzKHN0cnVjdA0KPiA+IHNlcV9m aWxlICptLCB2b2lkICpkYXRhKQ0KPiA+IAkgKiBTS0wrIFBlcmYgY291bnRlciBpcyByZXNldCB0 byAwIGV2ZXJ5dGltZSBEQyBzdGF0ZSBpcw0KPiA+IGVudGVyZWQNCj4gPiAJICovDQo+ID4gCWlm IChJU19IQVNXRUxMKGRldl9wcml2KSB8fCBJU19CUk9BRFdFTEwoZGV2X3ByaXYpKSB7DQo+ID4g LQkJdmFsID0gSTkxNV9SRUFEKEVEUF9QU1JfUEVSRl9DTlQpICYNCj4gPiBFRFBfUFNSX1BFUkZf Q05UX01BU0s7DQo+ID4gKwkJdmFsID0gSTkxNV9SRUFEKEVEUF9QU1JfUEVSRl9DTlQoZGV2X3By aXYtDQo+ID4gPnBzci50cmFuc2NvZGVyKSk7DQo+ID4gKwkJdmFsICY9IEVEUF9QU1JfUEVSRl9D TlRfTUFTSzsNCj4gPiAJCXNlcV9wcmludGYobSwgIlBlcmZvcm1hbmNlIGNvdW50ZXI6ICV1XG4i LCB2YWwpOw0KPiA+IAl9DQo+ID4gDQo+ID4gQEAgLTIyMjQsOCArMjIyNSwxMSBAQCBzdGF0aWMg aW50IGk5MTVfZWRwX3Bzcl9zdGF0dXMoc3RydWN0DQo+ID4gc2VxX2ZpbGUgKm0sIHZvaWQgKmRh dGEpDQo+ID4gCQkgKiBSZWFkaW5nIGFsbCAzIHJlZ2lzdGVycyBiZWZvcmUgaGFuZCB0byBtaW5p bWl6ZQ0KPiA+IGNyb3NzaW5nIGENCj4gPiAJCSAqIGZyYW1lIGJvdW5kYXJ5IGJldHdlZW4gcmVn aXN0ZXIgcmVhZHMNCj4gPiAJCSAqLw0KPiA+IC0JCWZvciAoZnJhbWUgPSAwOyBmcmFtZSA8IFBT UjJfU1VfU1RBVFVTX0ZSQU1FUzsgZnJhbWUgKz0NCj4gPiAzKQ0KPiA+IC0JCQlzdV9mcmFtZXNf dmFsW2ZyYW1lIC8gM10gPQ0KPiA+IEk5MTVfUkVBRChQU1IyX1NVX1NUQVRVUyhmcmFtZSkpOw0K PiA+ICsJCWZvciAoZnJhbWUgPSAwOyBmcmFtZSA8IFBTUjJfU1VfU1RBVFVTX0ZSQU1FUzsgZnJh bWUgKz0NCj4gPiAzKSB7DQo+ID4gKwkJCXZhbCA9IEk5MTVfUkVBRChQU1IyX1NVX1NUQVRVUyhk ZXZfcHJpdi0NCj4gPiA+cHNyLnRyYW5zY29kZXIsDQo+ID4gKwkJCQkJCSAgICAgICBmcmFtZSkp Ow0KPiA+ICsJCQlzdV9mcmFtZXNfdmFsW2ZyYW1lIC8gM10gPSB2YWw7DQo+ID4gKwkJfQ0KPiA+ IA0KPiA+IAkJc2VxX3B1dHMobSwgIkZyYW1lOlx0UFNSMiBTVSBibG9ja3M6XG4iKTsNCj4gPiAN Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaA0KPiA+IGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaA0KPiA+IGluZGV4IDBmODFjZWQwYTA2Mi4u ZDZjOGVmY2JhNjEyIDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmgNCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oDQo+ID4gQEAg LTQ3OSw2ICs0NzksNyBAQCBzdHJ1Y3QgaTkxNV9wc3Igew0KPiA+IAlib29sIGVuYWJsZWQ7DQo+ ID4gCXN0cnVjdCBpbnRlbF9kcCAqZHA7DQo+ID4gCWVudW0gcGlwZSBwaXBlOw0KPiA+ICsJZW51 bSB0cmFuc2NvZGVyIHRyYW5zY29kZXI7DQo+ID4gCWJvb2wgYWN0aXZlOw0KPiA+IAlzdHJ1Y3Qg d29ya19zdHJ1Y3Qgd29yazsNCj4gPiAJdW5zaWduZWQgYnVzeV9mcm9udGJ1ZmZlcl9iaXRzOw0K PiA+IEBAIC0xMzkyLDExICsxMzkzLDExIEBAIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlIHsNCj4g PiAJICovDQo+ID4gCXUzMiBncGlvX21taW9fYmFzZTsNCj4gPiANCj4gPiArCXUzMiBoc3dfcHNy X21taW9fYWRqdXN0Ow0KPiA+ICsNCj4gPiAJLyogTU1JTyBiYXNlIGFkZHJlc3MgZm9yIE1JUEkg cmVncyAqLw0KPiA+IAl1MzIgbWlwaV9tbWlvX2Jhc2U7DQo+ID4gDQo+ID4gLQl1MzIgcHNyX21t aW9fYmFzZTsNCj4gPiAtDQo+ID4gCXUzMiBwcHNfbW1pb19iYXNlOw0KPiA+IA0KPiA+IAl3YWl0 X3F1ZXVlX2hlYWRfdCBnbWJ1c193YWl0X3F1ZXVlOw0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oDQo+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3JlZy5oDQo+ID4gaW5kZXggZWEyZjBmYTI0MDJkLi43NTdlOWNmNDVlYjIgMTAwNjQ0DQo+ID4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaA0KPiA+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfcmVnLmgNCj4gPiBAQCAtNDE4NSwxMCArNDE4NSwxNyBAQCBlbnVt IHsNCj4gPiAjZGVmaW5lIFBJUEVTUkModHJhbnMpCQlfTU1JT19UUkFOUzIodHJhbnMsIF9QSVBF QVNSQykNCj4gPiAjZGVmaW5lIFBJUEVfTVVMVCh0cmFucykJX01NSU9fVFJBTlMyKHRyYW5zLCBf UElQRV9NVUxUX0EpDQo+ID4gDQo+ID4gLS8qIEhTVysgZURQIFBTUiByZWdpc3RlcnMgKi8NCj4g PiAtI2RlZmluZSBIU1dfRURQX1BTUl9CQVNFCTB4NjQ4MDANCj4gPiAtI2RlZmluZSBCRFdfRURQ X1BTUl9CQVNFCTB4NmY4MDANCj4gPiAtI2RlZmluZSBFRFBfUFNSX0NUTAkJCQlfTU1JTyhkZXZf cHJpdi0NCj4gPiA+cHNyX21taW9fYmFzZSArIDApDQo+ID4gKy8qDQo+ID4gKyAqIEhTVysgZURQ IFBTUiByZWdpc3RlcnMNCj4gPiArICoNCj4gPiArICogSFNXIFBTUiByZWdpc3RlcnMgYXJlIHJl bGF0aXZlIHRvIERESUEoX0RESV9CVUZfQ1RMX0EgKyAweDgwMCkNCj4gPiB3aXRoIGp1c3Qgb25l DQo+ID4gKyAqIGluc3RhbmNlIG9mIGl0DQo+ID4gKyAqLw0KPiA+ICsjZGVmaW5lIF9IU1dfRURQ X1BTUl9CQVNFCQkJMHg2NDgwMA0KPiA+ICsjZGVmaW5lIF9TUkRfQ1RMX0EJCQkJMHg2MDgwMA0K PiA+ICsjZGVmaW5lIF9TUkRfQ1RMX0VEUAkJCQkweDZmODAwDQo+ID4gKyNkZWZpbmUgX1BTUl9B REoodHJhbiwgcmVnKQkJCShfVFJBTlMyKHRyYW4sDQo+ID4gcmVnKSAtIGRldl9wcml2LT5oc3df cHNyX21taW9fYWRqdXN0KQ0KPiA+ICsjZGVmaW5lIEVEUF9QU1JfQ1RMKHRyYW4pCQkJX01NSU8o X1BTUl9BREoodHJhbiwNCj4gPiBfU1JEX0NUTF9BKSkNCj4gPiAjZGVmaW5lICAgRURQX1BTUl9F TkFCTEUJCQkoMSA8PCAzMSkNCj4gPiAjZGVmaW5lICAgQkRXX1BTUl9TSU5HTEVfRlJBTUUJCQko MSA8PCAzMCkNCj4gPiAjZGVmaW5lICAgRURQX1BTUl9SRVNUT1JFX1BTUl9BQ1RJVkVfQ1RYX01B U0sJKDEgPDwgMjkpIC8qIFNXDQo+ID4gY2FuJ3QgbW9kaWZ5ICovDQo+ID4gQEAgLTQyMjUsMTYg KzQyMzIsMjIgQEAgZW51bSB7DQo+ID4gI2RlZmluZSAgIEVEUF9QU1JfVFJBTlNDT0RFUl9BX1NI SUZUCQk4DQo+ID4gI2RlZmluZSAgIEVEUF9QU1JfVFJBTlNDT0RFUl9FRFBfU0hJRlQJCTANCj4g PiANCj4gPiAtI2RlZmluZSBFRFBfUFNSX0FVWF9DVEwJCQkJX01NSU8oZGV2X3ByaXYtDQo+ID4g PnBzcl9tbWlvX2Jhc2UgKyAweDEwKQ0KPiA+ICsjZGVmaW5lIF9TUkRfQVVYX0NUTF9BCQkJCTB4 NjA4MTANCj4gPiArI2RlZmluZSBfU1JEX0FVWF9DVExfRURQCQkJMHg2ZjgxMA0KPiA+ICsjZGVm aW5lIEVEUF9QU1JfQVVYX0NUTCh0cmFuKQkJCV9NTUlPKF9QU1JfQURKKA0KPiA+IHRyYW4sIF9T UkRfQVVYX0NUTF9BKSkNCj4gPiAjZGVmaW5lICAgRURQX1BTUl9BVVhfQ1RMX1RJTUVfT1VUX01B U0sJCSgzIDw8IDI2KQ0KPiA+ICNkZWZpbmUgICBFRFBfUFNSX0FVWF9DVExfTUVTU0FHRV9TSVpF X01BU0sJKDB4MWYgPDwgMjApDQo+ID4gI2RlZmluZSAgIEVEUF9QU1JfQVVYX0NUTF9QUkVDSEFS R0VfMlVTX01BU0sJKDB4ZiA8PCAxNikNCj4gPiAjZGVmaW5lICAgRURQX1BTUl9BVVhfQ1RMX0VS Uk9SX0lOVEVSUlVQVAkoMSA8PCAxMSkNCj4gPiAjZGVmaW5lICAgRURQX1BTUl9BVVhfQ1RMX0JJ VF9DTE9DS18yWF9NQVNLCSgweDdmZikNCj4gPiANCj4gPiAtI2RlZmluZSBFRFBfUFNSX0FVWF9E QVRBKGkpCQkJX01NSU8oZGV2X3ByaXYtDQo+ID4gPnBzcl9tbWlvX2Jhc2UgKyAweDE0ICsgKGkp ICogNCkgLyogNSByZWdpc3RlcnMgKi8NCj4gPiArI2RlZmluZSBfU1JEX0FVWF9EQVRBX0EJCQkJ MHg2MDgxNA0KPiA+ICsjZGVmaW5lIF9TUkRfQVVYX0RBVEFfRURQCQkJMHg2ZjgxNA0KPiA+ICsj ZGVmaW5lIEVEUF9QU1JfQVVYX0RBVEEodHJhbiwgaSkJCV9NTUlPKF9QU1JfQURKKHRyYW4sDQo+ ID4gX1NSRF9BVVhfREFUQV9BKSArIChpKSArIDQpIC8qIDUgcmVnaXN0ZXJzICovDQo+ID4gDQo+ ID4gLSNkZWZpbmUgRURQX1BTUl9TVEFUVVMJCQkJX01NSU8oZGV2X3ByaXYtDQo+ID4gPnBzcl9t bWlvX2Jhc2UgKyAweDQwKQ0KPiA+ICsjZGVmaW5lIF9TUkRfU1RBVFVTX0EJCQkJMHg2MDg0MA0K PiA+ICsjZGVmaW5lIF9TUkRfU1RBVFVTX0VEUAkJCQkweDZmODQwDQo+ID4gKyNkZWZpbmUgRURQ X1BTUl9TVEFUVVModHJhbikJCQlfTU1JTyhfUFNSX0FESigNCj4gPiB0cmFuLCBfU1JEX1NUQVRV U19BKSkNCj4gPiAjZGVmaW5lICAgRURQX1BTUl9TVEFUVVNfU1RBVEVfTUFTSwkJKDcgPDwgMjkp DQo+ID4gI2RlZmluZSAgIEVEUF9QU1JfU1RBVFVTX1NUQVRFX1NISUZUCQkyOQ0KPiA+ICNkZWZp bmUgICBFRFBfUFNSX1NUQVRVU19TVEFURV9JRExFCQkoMCA8PCAyOSkNCj4gPiBAQCAtNDI1OSwx MCArNDI3MiwxNSBAQCBlbnVtIHsNCj4gPiAjZGVmaW5lICAgRURQX1BTUl9TVEFUVVNfU0VORElO R19UUDEJCSgxIDw8IDQpDQo+ID4gI2RlZmluZSAgIEVEUF9QU1JfU1RBVFVTX0lETEVfTUFTSwkJ MHhmDQo+ID4gDQo+ID4gLSNkZWZpbmUgRURQX1BTUl9QRVJGX0NOVAkJX01NSU8oZGV2X3ByaXYt PnBzcl9tbWlvX2Jhc2UgKw0KPiA+IDB4NDQpDQo+ID4gKyNkZWZpbmUgX1NSRF9QRVJGX0NOVF9B CQkJMHg2MDg0NA0KPiA+ICsjZGVmaW5lIF9TUkRfUEVSRl9DTlRfRURQCQkweDZmODQ0DQo+ID4g KyNkZWZpbmUgRURQX1BTUl9QRVJGX0NOVCh0cmFuKQkJX01NSU8oX1BTUl9BREoodHJhbiwNCj4g PiBfU1JEX1BFUkZfQ05UX0EpKQ0KPiA+ICNkZWZpbmUgICBFRFBfUFNSX1BFUkZfQ05UX01BU0sJ CTB4ZmZmZmZmDQo+ID4gDQo+ID4gLSNkZWZpbmUgRURQX1BTUl9ERUJVRwkJCQlfTU1JTyhkZXZf cHJpdi0NCj4gPiA+cHNyX21taW9fYmFzZSArIDB4NjApIC8qIFBTUl9NQVNLIG9uIFNLTCsgKi8N Cj4gPiArLyogUFNSX01BU0sgb24gU0tMKyAqLw0KPiA+ICsjZGVmaW5lIF9TUkRfREVCVUdfQQkJ CQkweDYwODYwDQo+ID4gKyNkZWZpbmUgX1NSRF9ERUJVR19FRFAJCQkJMHg2Zjg2MA0KPiA+ICsj ZGVmaW5lIEVEUF9QU1JfREVCVUcodHJhbikJCQlfTU1JTyhfUFNSX0FESigNCj4gPiB0cmFuLCBf U1JEX0RFQlVHX0EpKQ0KPiA+ICNkZWZpbmUgICBFRFBfUFNSX0RFQlVHX01BU0tfTUFYX1NMRUVQ ICAgICAgICAgKDEgPDwgMjgpDQo+ID4gI2RlZmluZSAgIEVEUF9QU1JfREVCVUdfTUFTS19MUFNQ ICAgICAgICAgICAgICAoMSA8PCAyNykNCj4gPiAjZGVmaW5lICAgRURQX1BTUl9ERUJVR19NQVNL X01FTVVQICAgICAgICAgICAgICgxIDw8IDI2KQ0KPiA+IEBAIC00MjcwLDcgKzQyODgsOSBAQCBl bnVtIHsNCj4gPiAjZGVmaW5lICAgRURQX1BTUl9ERUJVR19NQVNLX0RJU1BfUkVHX1dSSVRFICAg ICgxIDw8IDE2KSAvKg0KPiA+IFJlc2VydmVkIGluIElDTCsgKi8NCj4gPiAjZGVmaW5lICAgRURQ X1BTUl9ERUJVR19FWElUX09OX1BJWEVMX1VOREVSUlVOICgxIDw8IDE1KSAvKiBTS0wrICovDQo+ ID4gDQo+ID4gLSNkZWZpbmUgRURQX1BTUjJfQ1RMCQkJX01NSU8oMHg2ZjkwMCkNCj4gPiArI2Rl ZmluZSBfUFNSMl9DVExfQQkJCTB4NjA5MDANCj4gPiArI2RlZmluZSBfUFNSMl9DVExfRURQCQkJ MHg2ZjkwMA0KPiA+ICsjZGVmaW5lIEVEUF9QU1IyX0NUTCh0cmFuKQkJX01NSU9fVFJBTlMyKHRy YW4sIF9QU1IyX0NUTF9BKQ0KPiA+ICNkZWZpbmUgICBFRFBfUFNSMl9FTkFCTEUJCSgxIDw8IDMx KQ0KPiA+ICNkZWZpbmUgICBFRFBfU1VfVFJBQ0tfRU5BQkxFCQkoMSA8PCAzMCkNCj4gPiAjZGVm aW5lICAgRURQX1lfQ09PUkRJTkFURV9WQUxJRAkoMSA8PCAyNikgLyogR0xLIGFuZCBDTkwrICov DQo+ID4gQEAgLTQyOTIsOCArNDMxMiw4IEBAIGVudW0gew0KPiA+ICNkZWZpbmUgX1BTUl9FVkVO VF9UUkFOU19CCQkJMHg2MTg0OA0KPiA+ICNkZWZpbmUgX1BTUl9FVkVOVF9UUkFOU19DCQkJMHg2 Mjg0OA0KPiA+ICNkZWZpbmUgX1BTUl9FVkVOVF9UUkFOU19ECQkJMHg2Mzg0OA0KPiA+IC0jZGVm aW5lIF9QU1JfRVZFTlRfVFJBTlNfRURQCQkJMHg2Rjg0OA0KPiA+IC0jZGVmaW5lIFBTUl9FVkVO VCh0cmFucykJCQlfTU1JT19UUkFOUzIodHJhbnMsDQo+ID4gX1BTUl9FVkVOVF9UUkFOU19BKQ0K PiA+ICsjZGVmaW5lIF9QU1JfRVZFTlRfVFJBTlNfRURQCQkJMHg2Zjg0OA0KPiA+ICsjZGVmaW5l IFBTUl9FVkVOVCh0cmFuKQkJCQlfTU1JT19UUkFOUzIodHINCj4gPiBhbiwgX1BTUl9FVkVOVF9U UkFOU19BKQ0KPiA+ICNkZWZpbmUgIFBTUl9FVkVOVF9QU1IyX1dEX1RJTUVSX0VYUElSRQkJKDEg PDwgMTcpDQo+ID4gI2RlZmluZSAgUFNSX0VWRU5UX1BTUjJfRElTQUJMRUQJCSgxIDw8IDE2KQ0K PiA+ICNkZWZpbmUgIFBTUl9FVkVOVF9TVV9ESVJUWV9GSUZPX1VOREVSUlVOCSgxIDw8IDE1KQ0K PiA+IEBAIC00MzExLDE1ICs0MzMxLDE2IEBAIGVudW0gew0KPiA+ICNkZWZpbmUgIFBTUl9FVkVO VF9MUFNQX01PREVfRVhJVAkJKDEgPDwgMSkNCj4gPiAjZGVmaW5lICBQU1JfRVZFTlRfUFNSX0RJ U0FCTEUJCQkoMSA8PCAwKQ0KPiA+IA0KPiA+IC0jZGVmaW5lIEVEUF9QU1IyX1NUQVRVUwkJCV9N TUlPKDB4NmY5NDApDQo+ID4gKyNkZWZpbmUgX1BTUjJfU1RBVFVTX0EJCQkweDYwOTQwDQo+ID4g KyNkZWZpbmUgX1BTUjJfU1RBVFVTX0VEUAkJMHg2Zjk0MA0KPiA+ICsjZGVmaW5lIEVEUF9QU1Iy X1NUQVRVUyh0cmFuKQkJX01NSU9fVFJBTlMyKHRyYW4sDQo+ID4gX1BTUjJfU1RBVFVTX0EpDQo+ ID4gI2RlZmluZSBFRFBfUFNSMl9TVEFUVVNfU1RBVEVfTUFTSyAgICAgKDB4ZiA8PCAyOCkNCj4g PiAjZGVmaW5lIEVEUF9QU1IyX1NUQVRVU19TVEFURV9TSElGVCAgICAyOA0KPiA+IA0KPiA+IC0j ZGVmaW5lIF9QU1IyX1NVX1NUQVRVU18wCQkweDZGOTE0DQo+ID4gLSNkZWZpbmUgX1BTUjJfU1Vf U1RBVFVTXzEJCTB4NkY5MTgNCj4gPiAtI2RlZmluZSBfUFNSMl9TVV9TVEFUVVNfMgkJMHg2Rjkx Qw0KPiA+IC0jZGVmaW5lIF9QU1IyX1NVX1NUQVRVUyhpbmRleCkJCV9NTUlPKF9QSUNLX0VWRU4o KGluZGV4DQo+ID4gKSwgX1BTUjJfU1VfU1RBVFVTXzAsIF9QU1IyX1NVX1NUQVRVU18xKSkNCj4g PiAtI2RlZmluZSBQU1IyX1NVX1NUQVRVUyhmcmFtZSkJCShfUFNSMl9TVV9TVEFUVVMoKGZyYW1l DQo+ID4gKSAvIDMpKQ0KPiA+ICsjZGVmaW5lIF9QU1IyX1NVX1NUQVRVU19BCQkweDYwOTE0DQo+ ID4gKyNkZWZpbmUgX1BTUjJfU1VfU1RBVFVTX0VEUAkJMHg2ZjkxNA0KPiA+ICsjZGVmaW5lIF9Q U1IyX1NVX1NUQVRVUyh0cmFuLCBpbmRleCkJX01NSU8oX1RSQU5TMih0cmFuLA0KPiA+IF9QU1Iy X1NVX1NUQVRVU19BKSArIChpbmRleCkgKiA0KQ0KPiA+ICsjZGVmaW5lIFBTUjJfU1VfU1RBVFVT KHRyYW4sIGZyYW1lKQkoX1BTUjJfU1VfU1RBVFVTKHRyYW4sDQo+ID4gKGZyYW1lKSAvIDMpKQ0K PiA+ICNkZWZpbmUgUFNSMl9TVV9TVEFUVVNfU0hJRlQoZnJhbWUpCSgoKGZyYW1lKSAlIDMpICog MTApDQo+ID4gI2RlZmluZSBQU1IyX1NVX1NUQVRVU19NQVNLKGZyYW1lKQkoMHgzZmYgPDwNCj4g PiBQU1IyX1NVX1NUQVRVU19TSElGVChmcmFtZSkpDQo+ID4gI2RlZmluZSBQU1IyX1NVX1NUQVRV U19GUkFNRVMJCTgNCj4gPiAtLSANCj4gPiAyLjIxLjANCj4gPiANCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50 ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeA==