From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Russell, Kent" Subject: RE: [PATCH 4/5] drm/amdgpu: Add fan RPM setting via sysfs Date: Fri, 5 Oct 2018 14:39:32 +0000 Message-ID: References: <1538288279-11428-1-git-send-email-Rex.Zhu@amd.com> <1538288279-11428-4-git-send-email-Rex.Zhu@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: Content-Language: en-US List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: "Zhu, Rex" , "Deucher, Alexander" , "amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" U29ycnksIEkganVzdCBzYXcgc29tZXRoaW5nIHdpdGggdGhpcyBhbmQgaGFkIGEgcXVlc3Rpb24u IFdoeSBkb2VzIHRoZSBmYW4gY29udHJvbCBoYXZlIHRvIGJlIHNldCB0byBtYW51YWwgdG8gcmVh ZCB0aGUgUlBNcz8gIEkgdW5kZXJzdGFuZCB0aGF0IGl0IG5lZWRzIHRvIGJlIG1hbnVhbCB0byBz ZXQgdGhlIFJQTXMsIGJ1dCB3aHkgd291bGQgd2UgbmVlZCB0aGF0IHRvIHJlYWQgdGhlIGN1cnJl bnQgUlBNcz8NCg0KIEtlbnQNCg0KLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCkZyb206IGFt ZC1nZnggPGFtZC1nZngtYm91bmNlc0BsaXN0cy5mcmVlZGVza3RvcC5vcmc+IE9uIEJlaGFsZiBP ZiBaaHUsIFJleA0KU2VudDogTW9uZGF5LCBPY3RvYmVyIDAxLCAyMDE4IDk6MzQgQU0NClRvOiBE ZXVjaGVyLCBBbGV4YW5kZXIgPEFsZXhhbmRlci5EZXVjaGVyQGFtZC5jb20+OyBhbWQtZ2Z4QGxp c3RzLmZyZWVkZXNrdG9wLm9yZw0KU3ViamVjdDogUkU6IFtQQVRDSCA0LzVdIGRybS9hbWRncHU6 IEFkZCBmYW4gUlBNIHNldHRpbmcgdmlhIHN5c2ZzDQoNCg0KDQo+IC0tLS0tT3JpZ2luYWwgTWVz c2FnZS0tLS0tDQo+IEZyb206IERldWNoZXIsIEFsZXhhbmRlcg0KPiBTZW50OiBNb25kYXksIE9j dG9iZXIgMSwgMjAxOCA5OjE2IFBNDQo+IFRvOiBaaHUsIFJleCA8UmV4LlpodUBhbWQuY29tPjsg YW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcNCj4gQ2M6IFpodSwgUmV4IDxSZXguWmh1QGFt ZC5jb20+DQo+IFN1YmplY3Q6IFJFOiBbUEFUQ0ggNC81XSBkcm0vYW1kZ3B1OiBBZGQgZmFuIFJQ TSBzZXR0aW5nIHZpYSBzeXNmcw0KPiANCj4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0K PiA+IEZyb206IGFtZC1nZnggPGFtZC1nZngtYm91bmNlc0BsaXN0cy5mcmVlZGVza3RvcC5vcmc+ IE9uIEJlaGFsZiBPZiANCj4gPiBSZXggWmh1DQo+ID4gU2VudDogU3VuZGF5LCBTZXB0ZW1iZXIg MzAsIDIwMTggMjoxOCBBTQ0KPiA+IFRvOiBhbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZw0K PiA+IENjOiBaaHUsIFJleCA8UmV4LlpodUBhbWQuY29tPg0KPiA+IFN1YmplY3Q6IFtQQVRDSCA0 LzVdIGRybS9hbWRncHU6IEFkZCBmYW4gUlBNIHNldHRpbmcgdmlhIHN5c2ZzDQo+ID4NCj4gPiBB ZGQgZmFuMV90YXJnZXQgZm9yIGdldC9zZXQgZmFuIHNwZWVkIGluIFJQTSB1bml0IEFkZCANCj4g PiBmYW4xX21pbi9mYW4xX21heCBmb3IgZ2V0IG1pbiwgbWF4IGZhbiBzcGVlZCBpbiBSUE0gdW5p dCBBZGQgDQo+ID4gZmFuMV9lbmFibGUgdG8gZW5hYmxlL2Rpc2FibGUgdGhlIGZhbjEgc2Vuc29y DQo+ID4NCj4gPiB2MjogcXVlcnkgdGhlIG1pbi9tYXggcnBtIGdwdSBzdXBwb3J0IGluc3RhbmQg b2YgaGFyZGNvZGUuDQo+ID4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBSZXggWmh1IDxSZXguWmh1QGFt ZC5jb20+DQo+ID4gLS0tDQo+ID4gIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9k cG0uaCAgICAgICAgfCAgIDMgKw0KPiA+ICBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRn cHVfcG0uYyAgICAgICAgIHwgMTkwDQo+ID4gKysrKysrKysrKysrKysrKysrKysrKysrLQ0KPiA+ ICBkcml2ZXJzL2dwdS9kcm0vYW1kL2luY2x1ZGUva2dkX3BwX2ludGVyZmFjZS5oIHwgICAxICsN Cj4gPiAgZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvYW1kX3Bvd2VycGxheS5jICB8ICAx OSArKysNCj4gPiAgNCBmaWxlcyBjaGFuZ2VkLCAyMTAgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlv bnMoLSkNCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9h bWRncHVfZHBtLmgNCj4gPiBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kcG0u aA0KPiA+IGluZGV4IDQyNTY4YWUuLmY5NzJjZDEgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RwbS5oDQo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvYW1kZ3B1X2RwbS5oDQo+ID4gQEAgLTI3OCw2ICsyNzgsOSBAQCBlbnVtIGFt ZGdwdV9wY2llX2dlbiB7ICAjZGVmaW5lIA0KPiA+IGFtZGdwdV9kcG1fZ2V0X2Zhbl9zcGVlZF9y cG0oYWRldiwgcykgXA0KPiA+ICAJCSgoYWRldiktPnBvd2VycGxheS5wcF9mdW5jcy0NCj4gPiA+ Z2V0X2Zhbl9zcGVlZF9ycG0pKChhZGV2KS0+cG93ZXJwbGF5LnBwX2hhbmRsZSwgKHMpKQ0KPiA+ DQo+ID4gKyNkZWZpbmUgYW1kZ3B1X2RwbV9zZXRfZmFuX3NwZWVkX3JwbShhZGV2LCBzKSBcDQo+ ID4gKw0KPiA+ICsoKGFkZXYpLT5wb3dlcnBsYXkucHBfZnVuY3MtPnNldF9mYW5fc3BlZWRfcnBt KSgoYWRldiktDQo+ID4gPnBvd2VycGxheS5wcF9oYQ0KPiA+ICtuZGxlLCAocykpDQo+ID4gKw0K PiA+ICAjZGVmaW5lIGFtZGdwdV9kcG1fZ2V0X3NjbGsoYWRldiwgbCkgXA0KPiA+ICAJCSgoYWRl diktPnBvd2VycGxheS5wcF9mdW5jcy0+Z2V0X3NjbGsoKGFkZXYpLQ0KPiA+ID5wb3dlcnBsYXku cHBfaGFuZGxlLCAobCkpKQ0KPiA+DQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L2FtZGdwdV9wbS5jDQo+ID4gYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9h bWRncHVfcG0uYw0KPiA+IGluZGV4IDE4ZDk4OWUuLjFkODU3MDYgMTAwNjQ0DQo+ID4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3BtLmMNCj4gPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcG0uYw0KPiA+IEBAIC0xMTcyLDYgKzExNzIsMTEg QEAgc3RhdGljIHNzaXplX3QgDQo+ID4gYW1kZ3B1X2h3bW9uX2dldF9mYW4xX2lucHV0KHN0cnVj dCBkZXZpY2UgKmRldiwNCj4gPiAgCXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gZGV2X2dl dF9kcnZkYXRhKGRldik7DQo+ID4gIAlpbnQgZXJyOw0KPiA+ICAJdTMyIHNwZWVkID0gMDsNCj4g PiArCXUzMiBwd21fbW9kZTsNCj4gPiArDQo+ID4gKwlwd21fbW9kZSA9IGFtZGdwdV9kcG1fZ2V0 X2Zhbl9jb250cm9sX21vZGUoYWRldik7DQo+ID4gKwlpZiAocHdtX21vZGUgIT0gQU1EX0ZBTl9D VFJMX01BTlVBTCkNCj4gPiArCQlyZXR1cm4gLUVOT0RBVEE7DQo+ID4NCj4gPiAgCS8qIENhbid0 IGFkanVzdCBmYW4gd2hlbiB0aGUgY2FyZCBpcyBvZmYgKi8NCj4gPiAgCWlmICAoKGFkZXYtPmZs YWdzICYgQU1EX0lTX1BYKSAmJg0KPiA+IEBAIC0xMTg3LDYgKzExOTIsMTUzIEBAIHN0YXRpYyBz c2l6ZV90IA0KPiA+IGFtZGdwdV9od21vbl9nZXRfZmFuMV9pbnB1dChzdHJ1Y3QgZGV2aWNlICpk ZXYsDQo+ID4gIAlyZXR1cm4gc3ByaW50ZihidWYsICIlaVxuIiwgc3BlZWQpOyAgfQ0KPiA+DQo+ ID4gK3N0YXRpYyBzc2l6ZV90IGFtZGdwdV9od21vbl9nZXRfZmFuMV9taW4oc3RydWN0IGRldmlj ZSAqZGV2LA0KPiA+ICsJCQkJCSBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwNCj4gPiAr CQkJCQkgY2hhciAqYnVmKQ0KPiA+ICt7DQo+ID4gKwlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRl diA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOw0KPiA+ICsJdTMyIG1pbl9ycG0gPSAwOw0KPiA+ICsJ dTMyIHNpemUgPSBzaXplb2YobWluX3JwbSk7DQo+ID4gKwlpbnQgcjsNCj4gPiArDQo+ID4gKwlp ZiAoIWFkZXYtPnBvd2VycGxheS5wcF9mdW5jcy0+cmVhZF9zZW5zb3IpDQo+ID4gKwkJcmV0dXJu IC1FSU5WQUw7DQo+ID4gKw0KPiA+ICsJciA9IGFtZGdwdV9kcG1fcmVhZF9zZW5zb3IoYWRldiwN Cj4gPiBBTURHUFVfUFBfU0VOU09SX01JTl9GQU5fUlBNLA0KPiA+ICsJCQkJICAgKHZvaWQgKikm bWluX3JwbSwgJnNpemUpOw0KPiA+ICsJaWYgKHIpDQo+ID4gKwkJcmV0dXJuIHI7DQo+ID4gKw0K PiA+ICsJcmV0dXJuIHNucHJpbnRmKGJ1ZiwgUEFHRV9TSVpFLCAiJWRcbiIsIG1pbl9ycG0pOyB9 DQo+ID4gKw0KPiA+ICtzdGF0aWMgc3NpemVfdCBhbWRncHVfaHdtb25fZ2V0X2ZhbjFfbWF4KHN0 cnVjdCBkZXZpY2UgKmRldiwNCj4gPiArCQkJCQkgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0 dHIsDQo+ID4gKwkJCQkJIGNoYXIgKmJ1ZikNCj4gPiArew0KPiA+ICsJc3RydWN0IGFtZGdwdV9k ZXZpY2UgKmFkZXYgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsNCj4gPiArCXUzMiBtYXhfcnBtID0g MDsNCj4gPiArCXUzMiBzaXplID0gc2l6ZW9mKG1heF9ycG0pOw0KPiA+ICsJaW50IHI7DQo+ID4g Kw0KPiA+ICsJaWYgKCFhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3MtPnJlYWRfc2Vuc29yKQ0KPiA+ ICsJCXJldHVybiAtRUlOVkFMOw0KPiA+ICsNCj4gPiArCXIgPSBhbWRncHVfZHBtX3JlYWRfc2Vu c29yKGFkZXYsDQo+ID4gQU1ER1BVX1BQX1NFTlNPUl9NQVhfRkFOX1JQTSwNCj4gPiArCQkJCSAg ICh2b2lkICopJm1heF9ycG0sICZzaXplKTsNCj4gPiArCWlmIChyKQ0KPiA+ICsJCXJldHVybiBy Ow0KPiA+ICsNCj4gPiArCXJldHVybiBzbnByaW50ZihidWYsIFBBR0VfU0laRSwgIiVkXG4iLCBt YXhfcnBtKTsgfQ0KPiA+ICsNCj4gPiArc3RhdGljIHNzaXplX3QgYW1kZ3B1X2h3bW9uX2dldF9m YW4xX3RhcmdldChzdHJ1Y3QgZGV2aWNlICpkZXYsDQo+ID4gKwkJCQkJICAgc3RydWN0IGRldmlj ZV9hdHRyaWJ1dGUgKmF0dHIsDQo+ID4gKwkJCQkJICAgY2hhciAqYnVmKQ0KPiA+ICt7DQo+ID4g KwlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOw0KPiA+ ICsJaW50IGVycjsNCj4gPiArCXUzMiBycG0gPSAwOw0KPiA+ICsJdTMyIHB3bV9tb2RlOw0KPiA+ ICsNCj4gPiArCXB3bV9tb2RlID0gYW1kZ3B1X2RwbV9nZXRfZmFuX2NvbnRyb2xfbW9kZShhZGV2 KTsNCj4gPiArCWlmIChwd21fbW9kZSAhPSBBTURfRkFOX0NUUkxfTUFOVUFMKQ0KPiA+ICsJCXJl dHVybiAtRU5PREFUQTsNCj4gPiArDQo+ID4gKwkvKiBDYW4ndCBhZGp1c3QgZmFuIHdoZW4gdGhl IGNhcmQgaXMgb2ZmICovDQo+ID4gKwlpZiAgKChhZGV2LT5mbGFncyAmIEFNRF9JU19QWCkgJiYN Cj4gPiArCSAgICAgKGFkZXYtPmRkZXYtPnN3aXRjaF9wb3dlcl9zdGF0ZSAhPQ0KPiA+IERSTV9T V0lUQ0hfUE9XRVJfT04pKQ0KPiA+ICsJCXJldHVybiAtRUlOVkFMOw0KPiA+ICsNCj4gPiArCWlm IChhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3MtPmdldF9mYW5fc3BlZWRfcnBtKSB7DQo+ID4gKwkJ ZXJyID0gYW1kZ3B1X2RwbV9nZXRfZmFuX3NwZWVkX3JwbShhZGV2LCAmcnBtKTsNCj4gPiArCQlp ZiAoZXJyKQ0KPiA+ICsJCQlyZXR1cm4gZXJyOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCXJldHVy biBzcHJpbnRmKGJ1ZiwgIiVpXG4iLCBycG0pOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMg c3NpemVfdCBhbWRncHVfaHdtb25fc2V0X2ZhbjFfdGFyZ2V0KHN0cnVjdCBkZXZpY2UgKmRldiwN Cj4gPiArCQkJCSAgICAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsDQo+ID4gKwkJCQkg ICAgIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGNvdW50KSB7DQo+ID4gKwlzdHJ1Y3QgYW1kZ3B1 X2RldmljZSAqYWRldiA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOw0KPiA+ICsJaW50IGVycjsNCj4g PiArCXUzMiB2YWx1ZTsNCj4gPiArCXUzMiBwd21fbW9kZTsNCj4gPiArDQo+ID4gKwlwd21fbW9k ZSA9IGFtZGdwdV9kcG1fZ2V0X2Zhbl9jb250cm9sX21vZGUoYWRldik7DQo+ID4gKwlpZiAocHdt X21vZGUgIT0gQU1EX0ZBTl9DVFJMX01BTlVBTCkNCj4gPiArCQlyZXR1cm4gLUVOT0RBVEE7DQo+ ID4gKw0KPiA+ICsJLyogQ2FuJ3QgYWRqdXN0IGZhbiB3aGVuIHRoZSBjYXJkIGlzIG9mZiAqLw0K PiA+ICsJaWYgICgoYWRldi0+ZmxhZ3MgJiBBTURfSVNfUFgpICYmDQo+ID4gKwkgICAgIChhZGV2 LT5kZGV2LT5zd2l0Y2hfcG93ZXJfc3RhdGUgIT0NCj4gPiBEUk1fU1dJVENIX1BPV0VSX09OKSkN Cj4gPiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gPiArDQo+ID4gKwllcnIgPSBrc3RydG91MzIoYnVm LCAxMCwgJnZhbHVlKTsNCj4gPiArCWlmIChlcnIpDQo+ID4gKwkJcmV0dXJuIGVycjsNCj4gPiAr DQo+ID4gKwlpZiAoYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzLT5zZXRfZmFuX3NwZWVkX3JwbSkg ew0KPiA+ICsJCWVyciA9IGFtZGdwdV9kcG1fc2V0X2Zhbl9zcGVlZF9ycG0oYWRldiwgdmFsdWUp Ow0KPiA+ICsJCWlmIChlcnIpDQo+ID4gKwkJCXJldHVybiBlcnI7DQo+ID4gKwl9DQo+ID4gKw0K PiA+ICsJcmV0dXJuIGNvdW50Ow0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgc3NpemVfdCBh bWRncHVfaHdtb25fZ2V0X2ZhbjFfZW5hYmxlKHN0cnVjdCBkZXZpY2UgKmRldiwNCj4gPiArCQkJ CQkgICAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsDQo+ID4gKwkJCQkJICAgIGNoYXIg KmJ1ZikNCj4gPiArew0KPiA+ICsJc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSBkZXZfZ2V0 X2RydmRhdGEoZGV2KTsNCj4gPiArCXUzMiBwd21fbW9kZSA9IDA7DQo+ID4gKw0KPiA+ICsJaWYg KCFhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3MtPmdldF9mYW5fY29udHJvbF9tb2RlKQ0KPiA+ICsJ CXJldHVybiAtRUlOVkFMOw0KPiA+ICsNCj4gPiArCXB3bV9tb2RlID0gYW1kZ3B1X2RwbV9nZXRf ZmFuX2NvbnRyb2xfbW9kZShhZGV2KTsNCj4gPiArDQo+ID4gKwlyZXR1cm4gc3ByaW50ZihidWYs ICIlaVxuIiwgcHdtX21vZGUgPT0gQU1EX0ZBTl9DVFJMX0FVVE8gPw0KPiA+IDAgOiAxKTsgfQ0K PiA+ICsNCj4gPiArc3RhdGljIHNzaXplX3QgYW1kZ3B1X2h3bW9uX3NldF9mYW4xX2VuYWJsZShz dHJ1Y3QgZGV2aWNlICpkZXYsDQo+ID4gKwkJCQkJICAgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRl ICphdHRyLA0KPiA+ICsJCQkJCSAgICBjb25zdCBjaGFyICpidWYsDQo+ID4gKwkJCQkJICAgIHNp emVfdCBjb3VudCkNCj4gPiArew0KPiA+ICsJc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSBk ZXZfZ2V0X2RydmRhdGEoZGV2KTsNCj4gPiArCWludCBlcnI7DQo+ID4gKwlpbnQgdmFsdWU7DQo+ ID4gKwl1MzIgcHdtX21vZGU7DQo+ID4gKw0KPiA+ICsJLyogQ2FuJ3QgYWRqdXN0IGZhbiB3aGVu IHRoZSBjYXJkIGlzIG9mZiAqLw0KPiA+ICsJaWYgICgoYWRldi0+ZmxhZ3MgJiBBTURfSVNfUFgp ICYmDQo+ID4gKwkgICAgIChhZGV2LT5kZGV2LT5zd2l0Y2hfcG93ZXJfc3RhdGUgIT0NCj4gPiBE Uk1fU1dJVENIX1BPV0VSX09OKSkNCj4gPiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gPiArDQo+ID4g KwlpZiAoIWFkZXYtPnBvd2VycGxheS5wcF9mdW5jcy0+c2V0X2Zhbl9jb250cm9sX21vZGUpDQo+ ID4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ID4gKw0KPiA+ICsJZXJyID0ga3N0cnRvaW50KGJ1Ziwg MTAsICZ2YWx1ZSk7DQo+ID4gKwlpZiAoZXJyKQ0KPiA+ICsJCXJldHVybiBlcnI7DQo+ID4gKw0K PiA+ICsJaWYgKHZhbHVlID09IDApDQo+ID4gKwkJcHdtX21vZGUgPSBBTURfRkFOX0NUUkxfQVVU TzsNCj4gPiArCWVsc2UgaWYgKHZhbHVlID09IDEpDQo+ID4gKwkJcHdtX21vZGUgPSBBTURfRkFO X0NUUkxfTUFOVUFMOw0KPiA+ICsJZWxzZQ0KPiA+ICsJCXJldHVybiAtRUlOVkFMOw0KPiA+ICsN Cj4gPiArCWFtZGdwdV9kcG1fc2V0X2Zhbl9jb250cm9sX21vZGUoYWRldiwgcHdtX21vZGUpOw0K PiA+ICsNCj4gPiArCXJldHVybiBjb3VudDsNCj4gPiArfQ0KPiA+ICsNCj4gPiAgc3RhdGljIHNz aXplX3QgYW1kZ3B1X2h3bW9uX3Nob3dfdmRkZ2Z4KHN0cnVjdCBkZXZpY2UgKmRldiwNCj4gPiAg CQkJCQlzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwNCj4gPiAgCQkJCQljaGFyICpidWYp DQo+ID4gQEAgLTE0MDYsOCArMTU1OCwxNiBAQCBzdGF0aWMgc3NpemVfdCANCj4gPiBhbWRncHVf aHdtb25fc2V0X3Bvd2VyX2NhcChzdHJ1Y3QgZGV2aWNlICpkZXYsDQo+ID4gICAqDQo+ID4gICAq IC0gcHdtMV9tYXg6IHB1bHNlIHdpZHRoIG1vZHVsYXRpb24gZmFuIGNvbnRyb2wgbWF4aW11bSBs ZXZlbCAoMjU1KQ0KPiA+ICAgKg0KPiA+ICsgKiAtIGZhbjFfbWluOiBhbiBtaW5pbXVtIHZhbHVl IFVuaXQ6IHJldm9sdXRpb24vbWluIChSUE0pICgwKQ0KPiA+ICsgKg0KPiA+ICsgKiAtIGZhbjFf bWF4OiBhbiBtYXhtdW0gdmFsdWUgVW5pdDogcmV2b2x1dGlvbi9tYXggKFJQTSkgKDYwMDApDQo+ ID4gKyAqDQo+IA0KPiBUaGUgbWluIGFuZCBtYXggbWF5IG5vdCBhbHdheXMgYmUgMCBhbmQgNjAw MDsgaXQgZGVwZW5kcyBvbiB0aGUgYm9hcmQgDQo+IElJUkMuICBQcm9iYWJseSBiZXR0ZXIgdG8g ZHJvcCB0aGUgKDApIGFuZCAoNjAwMCkuDQoNCkkgZm9yZ290IHRvIGRyb3AgdGhpcyBoYXJkY29k ZSB2YWx1ZSAgaW4gY29tbWVudHMuDQpUaGFua3MgZm9yIHBvaW50aW5nIG91dCB0aGlzLg0KV2ls bCBkcm9wIHRoZSB2YWx1ZSBpbiBWMy4NCg0KUmV4DQoNCj4gQWxleA0KPiANCj4gPiAgICogLSBm YW4xX2lucHV0OiBmYW4gc3BlZWQgaW4gUlBNDQo+ID4gICAqDQo+ID4gKyAqIC0gZmFuWzEtKl1f dGFyZ2V0OiBEZXNpcmVkIGZhbiBzcGVlZCBVbml0OiByZXZvbHV0aW9uL21pbiAoUlBNKQ0KPiA+ ICsgKg0KPiA+ICsgKiAtIGZhblsxLSpdX2VuYWJsZTogRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNl bnNvcnMuMTogRW5hYmxlIDA6DQo+ID4gKyBEaXNhYmxlDQo+ID4gKyAqDQo+ID4gICAqIFlvdSBj YW4gdXNlIGh3bW9uIHRvb2xzIGxpa2Ugc2Vuc29ycyB0byB2aWV3IHRoaXMgaW5mb3JtYXRpb24g b24gDQo+ID4geW91ciBzeXN0ZW0uDQo+ID4gICAqDQo+ID4gICAqLw0KPiA+IEBAIC0xNDIwLDYg KzE1ODAsMTAgQEAgc3RhdGljIHNzaXplX3QgDQo+ID4gYW1kZ3B1X2h3bW9uX3NldF9wb3dlcl9j YXAoc3RydWN0IGRldmljZSAqZGV2LCAgc3RhdGljIA0KPiA+IFNFTlNPUl9ERVZJQ0VfQVRUUihw d20xX21pbiwgU19JUlVHTywNCj4gYW1kZ3B1X2h3bW9uX2dldF9wd20xX21pbiwgTlVMTCwNCj4g PiAwKTsgIHN0YXRpYyBTRU5TT1JfREVWSUNFX0FUVFIocHdtMV9tYXgsIFNfSVJVR08sIA0KPiA+ IGFtZGdwdV9od21vbl9nZXRfcHdtMV9tYXgsIE5VTEwsIDApOyAgc3RhdGljIA0KPiA+IFNFTlNP Ul9ERVZJQ0VfQVRUUihmYW4xX2lucHV0LCBTX0lSVUdPLA0KPiBhbWRncHVfaHdtb25fZ2V0X2Zh bjFfaW5wdXQsDQo+ID4gTlVMTCwgMCk7DQo+ID4gK3N0YXRpYyBTRU5TT1JfREVWSUNFX0FUVFIo ZmFuMV9taW4sIFNfSVJVR08sDQo+ID4gYW1kZ3B1X2h3bW9uX2dldF9mYW4xX21pbiwNCj4gPiAr TlVMTCwgMCk7IHN0YXRpYyBTRU5TT1JfREVWSUNFX0FUVFIoZmFuMV9tYXgsIFNfSVJVR08sIA0K PiA+ICthbWRncHVfaHdtb25fZ2V0X2ZhbjFfbWF4LCBOVUxMLCAwKTsgc3RhdGljIA0KPiA+ICtT RU5TT1JfREVWSUNFX0FUVFIoZmFuMV90YXJnZXQsIFNfSVJVR08gfCBTX0lXVVNSLCANCj4gPiAr YW1kZ3B1X2h3bW9uX2dldF9mYW4xX3RhcmdldCwgYW1kZ3B1X2h3bW9uX3NldF9mYW4xX3Rhcmdl dCwgMCk7DQo+ID4gc3RhdGljDQo+ID4gK1NFTlNPUl9ERVZJQ0VfQVRUUihmYW4xX2VuYWJsZSwg U19JUlVHTyB8IFNfSVdVU1IsIA0KPiA+ICthbWRncHVfaHdtb25fZ2V0X2ZhbjFfZW5hYmxlLCBh bWRncHVfaHdtb25fc2V0X2ZhbjFfZW5hYmxlLA0KPiA+IDApOw0KPiA+ICBzdGF0aWMgU0VOU09S X0RFVklDRV9BVFRSKGluMF9pbnB1dCwgU19JUlVHTywgDQo+ID4gYW1kZ3B1X2h3bW9uX3Nob3df dmRkZ2Z4LCBOVUxMLCAwKTsgIHN0YXRpYyANCj4gPiBTRU5TT1JfREVWSUNFX0FUVFIoaW4wX2xh YmVsLCBTX0lSVUdPLA0KPiBhbWRncHVfaHdtb25fc2hvd192ZGRnZnhfbGFiZWwsDQo+ID4gTlVM TCwgMCk7ICBzdGF0aWMgU0VOU09SX0RFVklDRV9BVFRSKGluMV9pbnB1dCwgU19JUlVHTywgDQo+ ID4gYW1kZ3B1X2h3bW9uX3Nob3dfdmRkbmIsIE5VTEwsIDApOyBAQCAtMTQzOCw2ICsxNjAyLDEw IEBAIHN0YXRpYyANCj4gPiBzc2l6ZV90IGFtZGdwdV9od21vbl9zZXRfcG93ZXJfY2FwKHN0cnVj dCBkZXZpY2UgKmRldiwNCj4gPiAgCSZzZW5zb3JfZGV2X2F0dHJfcHdtMV9taW4uZGV2X2F0dHIu YXR0ciwNCj4gPiAgCSZzZW5zb3JfZGV2X2F0dHJfcHdtMV9tYXguZGV2X2F0dHIuYXR0ciwNCj4g PiAgCSZzZW5zb3JfZGV2X2F0dHJfZmFuMV9pbnB1dC5kZXZfYXR0ci5hdHRyLA0KPiA+ICsJJnNl bnNvcl9kZXZfYXR0cl9mYW4xX21pbi5kZXZfYXR0ci5hdHRyLA0KPiA+ICsJJnNlbnNvcl9kZXZf YXR0cl9mYW4xX21heC5kZXZfYXR0ci5hdHRyLA0KPiA+ICsJJnNlbnNvcl9kZXZfYXR0cl9mYW4x X3RhcmdldC5kZXZfYXR0ci5hdHRyLA0KPiA+ICsJJnNlbnNvcl9kZXZfYXR0cl9mYW4xX2VuYWJs ZS5kZXZfYXR0ci5hdHRyLA0KPiA+ICAJJnNlbnNvcl9kZXZfYXR0cl9pbjBfaW5wdXQuZGV2X2F0 dHIuYXR0ciwNCj4gPiAgCSZzZW5zb3JfZGV2X2F0dHJfaW4wX2xhYmVsLmRldl9hdHRyLmF0dHIs DQo+ID4gIAkmc2Vuc29yX2Rldl9hdHRyX2luMV9pbnB1dC5kZXZfYXR0ci5hdHRyLA0KPiA+IEBA IC0xNDU2LDEzICsxNjI0LDE2IEBAIHN0YXRpYyB1bW9kZV90DQo+IGh3bW9uX2F0dHJpYnV0ZXNf dmlzaWJsZShzdHJ1Y3QNCj4gPiBrb2JqZWN0ICprb2JqLA0KPiA+ICAJc3RydWN0IGFtZGdwdV9k ZXZpY2UgKmFkZXYgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsNCj4gPiAgCXVtb2RlX3QgZWZmZWN0 aXZlX21vZGUgPSBhdHRyLT5tb2RlOw0KPiA+DQo+ID4gLQ0KPiA+ICAJLyogU2tpcCBmYW4gYXR0 cmlidXRlcyBpZiBmYW4gaXMgbm90IHByZXNlbnQgKi8NCj4gPiAgCWlmIChhZGV2LT5wbS5ub19m YW4gJiYgKGF0dHIgPT0NCj4gPiAmc2Vuc29yX2Rldl9hdHRyX3B3bTEuZGV2X2F0dHIuYXR0ciB8 fA0KPiA+ICAJICAgIGF0dHIgPT0gJnNlbnNvcl9kZXZfYXR0cl9wd20xX2VuYWJsZS5kZXZfYXR0 ci5hdHRyIHx8DQo+ID4gIAkgICAgYXR0ciA9PSAmc2Vuc29yX2Rldl9hdHRyX3B3bTFfbWF4LmRl dl9hdHRyLmF0dHIgfHwNCj4gPiAgCSAgICBhdHRyID09ICZzZW5zb3JfZGV2X2F0dHJfcHdtMV9t aW4uZGV2X2F0dHIuYXR0ciB8fA0KPiA+IC0JICAgIGF0dHIgPT0gJnNlbnNvcl9kZXZfYXR0cl9m YW4xX2lucHV0LmRldl9hdHRyLmF0dHIpKQ0KPiA+ICsJICAgIGF0dHIgPT0gJnNlbnNvcl9kZXZf YXR0cl9mYW4xX2lucHV0LmRldl9hdHRyLmF0dHIgfHwNCj4gPiArCSAgICBhdHRyID09ICZzZW5z b3JfZGV2X2F0dHJfZmFuMV9taW4uZGV2X2F0dHIuYXR0ciB8fA0KPiA+ICsJICAgIGF0dHIgPT0g JnNlbnNvcl9kZXZfYXR0cl9mYW4xX21heC5kZXZfYXR0ci5hdHRyIHx8DQo+ID4gKwkgICAgYXR0 ciA9PSAmc2Vuc29yX2Rldl9hdHRyX2ZhbjFfdGFyZ2V0LmRldl9hdHRyLmF0dHIgfHwNCj4gPiAr CSAgICBhdHRyID09ICZzZW5zb3JfZGV2X2F0dHJfZmFuMV9lbmFibGUuZGV2X2F0dHIuYXR0cikp DQo+ID4gIAkJcmV0dXJuIDA7DQo+ID4NCj4gPiAgCS8qIFNraXAgbGltaXQgYXR0cmlidXRlcyBp ZiBEUE0gaXMgbm90IGVuYWJsZWQgKi8gQEAgLTE0NzIsNw0KPiA+ICsxNjQzLDEyIEBAIHN0YXRp YyB1bW9kZV90IGh3bW9uX2F0dHJpYnV0ZXNfdmlzaWJsZShzdHJ1Y3Qga29iamVjdA0KPiAqa29i aiwNCj4gPiAgCSAgICAgYXR0ciA9PSAmc2Vuc29yX2Rldl9hdHRyX3B3bTEuZGV2X2F0dHIuYXR0 ciB8fA0KPiA+ICAJICAgICBhdHRyID09ICZzZW5zb3JfZGV2X2F0dHJfcHdtMV9lbmFibGUuZGV2 X2F0dHIuYXR0ciB8fA0KPiA+ICAJICAgICBhdHRyID09ICZzZW5zb3JfZGV2X2F0dHJfcHdtMV9t YXguZGV2X2F0dHIuYXR0ciB8fA0KPiA+IC0JICAgICBhdHRyID09ICZzZW5zb3JfZGV2X2F0dHJf cHdtMV9taW4uZGV2X2F0dHIuYXR0cikpDQo+ID4gKwkgICAgIGF0dHIgPT0gJnNlbnNvcl9kZXZf YXR0cl9wd20xX21pbi5kZXZfYXR0ci5hdHRyIHx8DQo+ID4gKwkgICAgIGF0dHIgPT0gJnNlbnNv cl9kZXZfYXR0cl9mYW4xX2lucHV0LmRldl9hdHRyLmF0dHIgfHwNCj4gPiArCSAgICAgYXR0ciA9 PSAmc2Vuc29yX2Rldl9hdHRyX2ZhbjFfbWluLmRldl9hdHRyLmF0dHIgfHwNCj4gPiArCSAgICAg YXR0ciA9PSAmc2Vuc29yX2Rldl9hdHRyX2ZhbjFfbWF4LmRldl9hdHRyLmF0dHIgfHwNCj4gPiAr CSAgICAgYXR0ciA9PSAmc2Vuc29yX2Rldl9hdHRyX2ZhbjFfdGFyZ2V0LmRldl9hdHRyLmF0dHIg fHwNCj4gPiArCSAgICAgYXR0ciA9PSAmc2Vuc29yX2Rldl9hdHRyX2ZhbjFfZW5hYmxlLmRldl9h dHRyLmF0dHIpKQ0KPiA+ICAJCXJldHVybiAwOw0KPiA+DQo+ID4gIAkvKiBtYXNrIGZhbiBhdHRy aWJ1dGVzIGlmIHdlIGhhdmUgbm8gYmluZGluZ3MgZm9yIHRoaXMgYXNpYyB0byANCj4gPiBleHBv c2UgKi8gQEAgLTE0OTcsMTAgKzE2NzMsMTggQEAgc3RhdGljIHVtb2RlX3QgDQo+ID4gaHdtb25f YXR0cmlidXRlc192aXNpYmxlKHN0cnVjdCBrb2JqZWN0ICprb2JqLA0KPiA+ICAJLyogaGlkZSBt YXgvbWluIHZhbHVlcyBpZiB3ZSBjYW4ndCBib3RoIHF1ZXJ5IGFuZCBtYW5hZ2UgdGhlIGZhbiAq Lw0KPiA+ICAJaWYgKCghYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzLT5zZXRfZmFuX3NwZWVkX3Bl cmNlbnQgJiYNCj4gPiAgCSAgICAgIWFkZXYtPnBvd2VycGxheS5wcF9mdW5jcy0+Z2V0X2Zhbl9z cGVlZF9wZXJjZW50KSAmJg0KPiA+ICsJICAgICAoIWFkZXYtPnBvd2VycGxheS5wcF9mdW5jcy0+ c2V0X2Zhbl9zcGVlZF9ycG0gJiYNCj4gPiArCSAgICAgIWFkZXYtPnBvd2VycGxheS5wcF9mdW5j cy0+Z2V0X2Zhbl9zcGVlZF9ycG0pICYmDQo+ID4gIAkgICAgKGF0dHIgPT0gJnNlbnNvcl9kZXZf YXR0cl9wd20xX21heC5kZXZfYXR0ci5hdHRyIHx8DQo+ID4gIAkgICAgIGF0dHIgPT0gJnNlbnNv cl9kZXZfYXR0cl9wd20xX21pbi5kZXZfYXR0ci5hdHRyKSkNCj4gPiAgCQlyZXR1cm4gMDsNCj4g Pg0KPiA+ICsJaWYgKCghYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzLT5zZXRfZmFuX3NwZWVkX3Jw bSAmJg0KPiA+ICsJICAgICAhYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzLT5nZXRfZmFuX3NwZWVk X3JwbSkgJiYNCj4gPiArCSAgICAoYXR0ciA9PSAmc2Vuc29yX2Rldl9hdHRyX2ZhbjFfbWF4LmRl dl9hdHRyLmF0dHIgfHwNCj4gPiArCSAgICAgYXR0ciA9PSAmc2Vuc29yX2Rldl9hdHRyX2ZhbjFf bWluLmRldl9hdHRyLmF0dHIpKQ0KPiA+ICsJCXJldHVybiAwOw0KPiA+ICsNCj4gPiAgCS8qIG9u bHkgQVBVcyBoYXZlIHZkZG5iICovDQo+ID4gIAlpZiAoIShhZGV2LT5mbGFncyAmIEFNRF9JU19B UFUpICYmDQo+ID4gIAkgICAgKGF0dHIgPT0gJnNlbnNvcl9kZXZfYXR0cl9pbjFfaW5wdXQuZGV2 X2F0dHIuYXR0ciB8fCBkaWZmIA0KPiA+IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9pbmNs dWRlL2tnZF9wcF9pbnRlcmZhY2UuaA0KPiA+IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9pbmNsdWRl L2tnZF9wcF9pbnRlcmZhY2UuaA0KPiA+IGluZGV4IDk3MDAxYTYuLjk4MGU2OTYgMTAwNjQ0DQo+ ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9pbmNsdWRlL2tnZF9wcF9pbnRlcmZhY2UuaA0K PiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvaW5jbHVkZS9rZ2RfcHBfaW50ZXJmYWNlLmgN Cj4gPiBAQCAtMjMwLDYgKzIzMCw3IEBAIHN0cnVjdCBhbWRfcG1fZnVuY3Mgew0KPiA+ICAJZW51 bSBhbWRfZHBtX2ZvcmNlZF9sZXZlbCAoKmdldF9wZXJmb3JtYW5jZV9sZXZlbCkodm9pZA0KPiAq aGFuZGxlKTsNCj4gPiAgCWVudW0gYW1kX3BtX3N0YXRlX3R5cGUgKCpnZXRfY3VycmVudF9wb3dl cl9zdGF0ZSkodm9pZA0KPiAqaGFuZGxlKTsNCj4gPiAgCWludCAoKmdldF9mYW5fc3BlZWRfcnBt KSh2b2lkICpoYW5kbGUsIHVpbnQzMl90ICpycG0pOw0KPiA+ICsJaW50ICgqc2V0X2Zhbl9zcGVl ZF9ycG0pKHZvaWQgKmhhbmRsZSwgdWludDMyX3QgcnBtKTsNCj4gPiAgCWludCAoKmdldF9wcF9u dW1fc3RhdGVzKSh2b2lkICpoYW5kbGUsIHN0cnVjdCBwcF9zdGF0ZXNfaW5mbyAqZGF0YSk7DQo+ ID4gIAlpbnQgKCpnZXRfcHBfdGFibGUpKHZvaWQgKmhhbmRsZSwgY2hhciAqKnRhYmxlKTsNCj4g PiAgCWludCAoKnNldF9wcF90YWJsZSkodm9pZCAqaGFuZGxlLCBjb25zdCBjaGFyICpidWYsIHNp emVfdCBzaXplKTsgDQo+ID4gZGlmZiAtLSBnaXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2Vy cGxheS9hbWRfcG93ZXJwbGF5LmMNCj4gPiBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5 L2FtZF9wb3dlcnBsYXkuYw0KPiA+IGluZGV4IDA1M2M0ODUuLjlkOGZhMmUgMTAwNjQ0DQo+ID4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvYW1kX3Bvd2VycGxheS5jDQo+ID4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvYW1kX3Bvd2VycGxheS5jDQo+ID4g QEAgLTU3Niw2ICs1NzYsMjQgQEAgc3RhdGljIGludCBwcF9kcG1fZ2V0X2Zhbl9zcGVlZF9ycG0o dm9pZA0KPiAqaGFuZGxlLA0KPiA+IHVpbnQzMl90ICpycG0pDQo+ID4gIAlyZXR1cm4gcmV0Ow0K PiA+ICB9DQo+ID4NCj4gPiArc3RhdGljIGludCBwcF9kcG1fc2V0X2Zhbl9zcGVlZF9ycG0odm9p ZCAqaGFuZGxlLCB1aW50MzJfdCBycG0pIHsNCj4gPiArCXN0cnVjdCBwcF9od21nciAqaHdtZ3Ig PSBoYW5kbGU7DQo+ID4gKwlpbnQgcmV0ID0gMDsNCj4gPiArDQo+ID4gKwlpZiAoIWh3bWdyIHx8 ICFod21nci0+cG1fZW4pDQo+ID4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ID4gKw0KPiA+ICsJaWYg KGh3bWdyLT5od21ncl9mdW5jLT5zZXRfZmFuX3NwZWVkX3JwbSA9PSBOVUxMKSB7DQo+ID4gKwkJ cHJfaW5mbygiJXMgd2FzIG5vdCBpbXBsZW1lbnRlZC5cbiIsIF9fZnVuY19fKTsNCj4gPiArCQly ZXR1cm4gMDsNCj4gPiArCX0NCj4gPiArCW11dGV4X2xvY2soJmh3bWdyLT5zbXVfbG9jayk7DQo+ ID4gKwlyZXQgPSBod21nci0+aHdtZ3JfZnVuYy0+c2V0X2Zhbl9zcGVlZF9ycG0oaHdtZ3IsIHJw bSk7DQo+ID4gKwltdXRleF91bmxvY2soJmh3bWdyLT5zbXVfbG9jayk7DQo+ID4gKwlyZXR1cm4g cmV0Ow0KPiA+ICt9DQo+ID4gKw0KPiA+ICBzdGF0aWMgaW50IHBwX2RwbV9nZXRfcHBfbnVtX3N0 YXRlcyh2b2lkICpoYW5kbGUsDQo+ID4gIAkJc3RydWN0IHBwX3N0YXRlc19pbmZvICpkYXRhKQ0K PiA+ICB7DQo+ID4gQEAgLTEyOTcsNiArMTMxNSw3IEBAIHN0YXRpYyBpbnQgcHBfZW5hYmxlX21n cHVfZmFuX2Jvb3N0KHZvaWQNCj4gPiAqaGFuZGxlKQ0KPiA+ICAJLnNldF9mYW5fc3BlZWRfcGVy Y2VudCA9IHBwX2RwbV9zZXRfZmFuX3NwZWVkX3BlcmNlbnQsDQo+ID4gIAkuZ2V0X2Zhbl9zcGVl ZF9wZXJjZW50ID0gcHBfZHBtX2dldF9mYW5fc3BlZWRfcGVyY2VudCwNCj4gPiAgCS5nZXRfZmFu X3NwZWVkX3JwbSA9IHBwX2RwbV9nZXRfZmFuX3NwZWVkX3JwbSwNCj4gPiArCS5zZXRfZmFuX3Nw ZWVkX3JwbSA9IHBwX2RwbV9zZXRfZmFuX3NwZWVkX3JwbSwNCj4gPiAgCS5nZXRfcHBfbnVtX3N0 YXRlcyA9IHBwX2RwbV9nZXRfcHBfbnVtX3N0YXRlcywNCj4gPiAgCS5nZXRfcHBfdGFibGUgPSBw cF9kcG1fZ2V0X3BwX3RhYmxlLA0KPiA+ICAJLnNldF9wcF90YWJsZSA9IHBwX2RwbV9zZXRfcHBf dGFibGUsDQo+ID4gLS0NCj4gPiAxLjkuMQ0KPiA+DQo+ID4gX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18NCj4gPiBhbWQtZ2Z4IG1haWxpbmcgbGlzdA0KPiA+ IGFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnDQo+ID4gaHR0cHM6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4DQpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXw0KYW1kLWdmeCBtYWlsaW5nIGxpc3QNCmFtZC1nZnhA bGlzdHMuZnJlZWRlc2t0b3Aub3JnDQpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2FtZC1nZngNCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCmFtZC1nZnggbWFpbGluZyBsaXN0CmFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vYW1k LWdmeAo=