From mboxrd@z Thu Jan 1 00:00:00 1970 From: Huang Rui Subject: Re: [PATCH 7/9] drm/amdgpu: add IH ring to ih_get_wptr/ih_set_rptr Date: Wed, 26 Sep 2018 15:40:02 +0800 Message-ID: <20180926074001.GA15205@hr-amur2> References: <20180924123820.1873-1-christian.koenig@amd.com> <20180924123820.1873-7-christian.koenig@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20180924123820.1873-7-christian.koenig-5C7GfCeVMHo@public.gmane.org> 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: Christian =?iso-8859-1?Q?K=F6nig?= Cc: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org T24gTW9uLCBTZXAgMjQsIDIwMTggYXQgMDI6Mzg6MThQTSArMDIwMCwgQ2hyaXN0aWFuIEvDtm5p ZyB3cm90ZToKPiBMZXQncyBzdGFydCB0byBzdXBwb3J0IG11bHRpcGxlIHJpbmdzLgo+IAo+IFNp Z25lZC1vZmYtYnk6IENocmlzdGlhbiBLw7ZuaWcgPGNocmlzdGlhbi5rb2VuaWdAYW1kLmNvbT4K ClJldmlld2VkLWJ5OiBIdWFuZyBSdWkgPHJheS5odWFuZ0BhbWQuY29tPgoKPiAtLS0KPiAgZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2loLmMgIHwgIDYgKysrLS0tCj4gIGRyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9paC5oICB8ICA4ICsrKystLS0tCj4gIGRyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Npa19paC5jICAgICB8IDE2ICsrKysrKysrKy0tLS0tLS0K PiAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvY3pfaWguYyAgICAgIHwgMTYgKysrKysrKysr LS0tLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9pY2VsYW5kX2loLmMgfCAxNiAr KysrKysrKystLS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NpX2loLmMgICAg ICB8IDE2ICsrKysrKysrKy0tLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvdG9u Z2FfaWguYyAgIHwgMjggKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLQo+ICBkcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS92ZWdhMTBfaWguYyAgfCAzMiArKysrKysrKysrKysrKysrKy0tLS0t LS0tLS0tLS0tLQo+ICA4IGZpbGVzIGNoYW5nZWQsIDc1IGluc2VydGlvbnMoKyksIDYzIGRlbGV0 aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRn cHVfaWguYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9paC5jCj4gaW5kZXgg OGFmNjdmNjQ5NjYwLi5mYjhkZDYxNzk5MjYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvYW1kZ3B1X2loLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9hbWRncHVfaWguYwo+IEBAIC0xMzcsNyArMTM3LDcgQEAgaW50IGFtZGdwdV9paF9wcm9jZXNz KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCBzdHJ1Y3QgYW1kZ3B1X2loX3JpbmcgKmloLAo+ ICAJaWYgKCFpaC0+ZW5hYmxlZCB8fCBhZGV2LT5zaHV0ZG93bikKPiAgCQlyZXR1cm4gSVJRX05P TkU7Cj4gIAo+IC0Jd3B0ciA9IGFtZGdwdV9paF9nZXRfd3B0cihhZGV2KTsKPiArCXdwdHIgPSBh bWRncHVfaWhfZ2V0X3dwdHIoYWRldiwgaWgpOwo+ICAKPiAgcmVzdGFydF9paDoKPiAgCS8qIGlz IHNvbWVib2R5IGVsc2UgYWxyZWFkeSBwcm9jZXNzaW5nIGlycXM/ICovCj4gQEAgLTE1NCwxMSAr MTU0LDExIEBAIGludCBhbWRncHVfaWhfcHJvY2VzcyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRl diwgc3RydWN0IGFtZGdwdV9paF9yaW5nICppaCwKPiAgCQlpaC0+cnB0ciAmPSBpaC0+cHRyX21h c2s7Cj4gIAl9Cj4gIAo+IC0JYW1kZ3B1X2loX3NldF9ycHRyKGFkZXYpOwo+ICsJYW1kZ3B1X2lo X3NldF9ycHRyKGFkZXYsIGloKTsKPiAgCWF0b21pY19zZXQoJmloLT5sb2NrLCAwKTsKPiAgCj4g IAkvKiBtYWtlIHN1cmUgd3B0ciBoYXNuJ3QgY2hhbmdlZCB3aGlsZSBwcm9jZXNzaW5nICovCj4g LQl3cHRyID0gYW1kZ3B1X2loX2dldF93cHRyKGFkZXYpOwo+ICsJd3B0ciA9IGFtZGdwdV9paF9n ZXRfd3B0cihhZGV2LCBpaCk7Cj4gIAlpZiAod3B0ciAhPSBpaC0+cnB0cikKPiAgCQlnb3RvIHJl c3RhcnRfaWg7Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9h bWRncHVfaWguaCBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9paC5oCj4gaW5k ZXggZDg4ZjgyMzIxZWU0Li42MTk2N2U3YjY0YTcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2loLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9hbWRncHVfaWguaAo+IEBAIC01MiwxMiArNTIsMTIgQEAgc3RydWN0IGFtZGdwdV9paF9y aW5nIHsKPiAgLyogcHJvdmlkZWQgYnkgdGhlIGloIGJsb2NrICovCj4gIHN0cnVjdCBhbWRncHVf aWhfZnVuY3Mgewo+ICAJLyogcmluZyByZWFkL3dyaXRlIHB0ciBoYW5kbGluZywgY2FsbGVkIGZy b20gaW50ZXJydXB0IGNvbnRleHQgKi8KPiAtCXUzMiAoKmdldF93cHRyKShzdHJ1Y3QgYW1kZ3B1 X2RldmljZSAqYWRldik7Cj4gLQl2b2lkICgqc2V0X3JwdHIpKHN0cnVjdCBhbWRncHVfZGV2aWNl ICphZGV2KTsKPiArCXUzMiAoKmdldF93cHRyKShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwg c3RydWN0IGFtZGdwdV9paF9yaW5nICppaCk7Cj4gKwl2b2lkICgqc2V0X3JwdHIpKHN0cnVjdCBh bWRncHVfZGV2aWNlICphZGV2LCBzdHJ1Y3QgYW1kZ3B1X2loX3JpbmcgKmloKTsKPiAgfTsKPiAg Cj4gLSNkZWZpbmUgYW1kZ3B1X2loX2dldF93cHRyKGFkZXYpIChhZGV2KS0+aXJxLmloLmZ1bmNz LT5nZXRfd3B0cigoYWRldikpCj4gLSNkZWZpbmUgYW1kZ3B1X2loX3NldF9ycHRyKGFkZXYpIChh ZGV2KS0+aXJxLmloLmZ1bmNzLT5zZXRfcnB0cigoYWRldikpCj4gKyNkZWZpbmUgYW1kZ3B1X2lo X2dldF93cHRyKGFkZXYsIGloKSAoaWgpLT5mdW5jcy0+Z2V0X3dwdHIoKGFkZXYpLCAoaWgpKQo+ ICsjZGVmaW5lIGFtZGdwdV9paF9zZXRfcnB0cihhZGV2LCBpaCkgKGloKS0+ZnVuY3MtPnNldF9y cHRyKChhZGV2KSwgKGloKSkKPiAgCj4gIGludCBhbWRncHVfaWhfcmluZ19pbml0KHN0cnVjdCBh bWRncHVfZGV2aWNlICphZGV2LCBzdHJ1Y3QgYW1kZ3B1X2loX3JpbmcgKmloLAo+ICAJCQl1bnNp Z25lZCByaW5nX3NpemUsIGJvb2wgdXNlX2J1c19hZGRyKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvY2lrX2loLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9jaWtfaWguYwo+IGluZGV4IDE2MWYwMjI1NzQ5Yy4uMzQxMDkyNzY4ODA5IDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Npa19paC5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvY2lrX2loLmMKPiBAQCAtMTgzLDExICsxODMsMTIgQEAgc3RhdGlj IHZvaWQgY2lrX2loX2lycV9kaXNhYmxlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQo+ICAg KiBVc2VkIGJ5IGNpa19pcnFfcHJvY2VzcygpLgo+ICAgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0 aGUgd3B0ci4KPiAgICovCj4gLXN0YXRpYyB1MzIgY2lrX2loX2dldF93cHRyKHN0cnVjdCBhbWRn cHVfZGV2aWNlICphZGV2KQo+ICtzdGF0aWMgdTMyIGNpa19paF9nZXRfd3B0cihzdHJ1Y3QgYW1k Z3B1X2RldmljZSAqYWRldiwKPiArCQkJICAgc3RydWN0IGFtZGdwdV9paF9yaW5nICppaCkKPiAg ewo+ICAJdTMyIHdwdHIsIHRtcDsKPiAgCj4gLQl3cHRyID0gbGUzMl90b19jcHUoYWRldi0+d2Iu d2JbYWRldi0+aXJxLmloLndwdHJfb2Zmc10pOwo+ICsJd3B0ciA9IGxlMzJfdG9fY3B1KGFkZXYt PndiLndiW2loLT53cHRyX29mZnNdKTsKPiAgCj4gIAlpZiAod3B0ciAmIElIX1JCX1dQVFJfX1JC X09WRVJGTE9XX01BU0spIHsKPiAgCQl3cHRyICY9IH5JSF9SQl9XUFRSX19SQl9PVkVSRkxPV19N QVNLOwo+IEBAIC0xOTYsMTMgKzE5NywxMyBAQCBzdGF0aWMgdTMyIGNpa19paF9nZXRfd3B0cihz dHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKPiAgCQkgKiB0aGlzIHNob3VsZCBhbGxvdyB1cyB0 byBjYXRjaHVwLgo+ICAJCSAqLwo+ICAJCWRldl93YXJuKGFkZXYtPmRldiwgIklIIHJpbmcgYnVm ZmVyIG92ZXJmbG93ICgweCUwOFgsIDB4JTA4WCwgMHglMDhYKVxuIiwKPiAtCQkJd3B0ciwgYWRl di0+aXJxLmloLnJwdHIsICh3cHRyICsgMTYpICYgYWRldi0+aXJxLmloLnB0cl9tYXNrKTsKPiAt CQlhZGV2LT5pcnEuaWgucnB0ciA9ICh3cHRyICsgMTYpICYgYWRldi0+aXJxLmloLnB0cl9tYXNr Owo+ICsJCQkgd3B0ciwgaWgtPnJwdHIsICh3cHRyICsgMTYpICYgaWgtPnB0cl9tYXNrKTsKPiAr CQlpaC0+cnB0ciA9ICh3cHRyICsgMTYpICYgaWgtPnB0cl9tYXNrOwo+ICAJCXRtcCA9IFJSRUcz MihtbUlIX1JCX0NOVEwpOwo+ICAJCXRtcCB8PSBJSF9SQl9DTlRMX19XUFRSX09WRVJGTE9XX0NM RUFSX01BU0s7Cj4gIAkJV1JFRzMyKG1tSUhfUkJfQ05UTCwgdG1wKTsKPiAgCX0KPiAtCXJldHVy biAod3B0ciAmIGFkZXYtPmlycS5paC5wdHJfbWFzayk7Cj4gKwlyZXR1cm4gKHdwdHIgJiBpaC0+ cHRyX21hc2spOwo+ICB9Cj4gIAo+ICAvKiAgICAgICAgQ0lLIElWIFJpbmcKPiBAQCAtMjk0LDkg KzI5NSwxMCBAQCBzdGF0aWMgdm9pZCBjaWtfaWhfZGVjb2RlX2l2KHN0cnVjdCBhbWRncHVfZGV2 aWNlICphZGV2LAo+ICAgKgo+ICAgKiBTZXQgdGhlIElIIHJpbmcgYnVmZmVyIHJwdHIuCj4gICAq Lwo+IC1zdGF0aWMgdm9pZCBjaWtfaWhfc2V0X3JwdHIoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFk ZXYpCj4gK3N0YXRpYyB2b2lkIGNpa19paF9zZXRfcnB0cihzdHJ1Y3QgYW1kZ3B1X2RldmljZSAq YWRldiwKPiArCQkJICAgIHN0cnVjdCBhbWRncHVfaWhfcmluZyAqaWgpCj4gIHsKPiAtCVdSRUcz MihtbUlIX1JCX1JQVFIsIGFkZXYtPmlycS5paC5ycHRyKTsKPiArCVdSRUczMihtbUlIX1JCX1JQ VFIsIGloLT5ycHRyKTsKPiAgfQo+ICAKPiAgc3RhdGljIGludCBjaWtfaWhfZWFybHlfaW5pdCh2 b2lkICpoYW5kbGUpCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2N6 X2loLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9jel9paC5jCj4gaW5kZXggNjQ4ZWNk Nzc0NjExLi42ZWQ3NTAxODdhZDcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvY3pfaWguYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2N6X2loLmMK PiBAQCAtMTg1LDExICsxODUsMTIgQEAgc3RhdGljIHZvaWQgY3pfaWhfaXJxX2Rpc2FibGUoc3Ry dWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCj4gICAqIFVzZWQgYnkgY3pfaXJxX3Byb2Nlc3MoVkkp Lgo+ICAgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgd3B0ci4KPiAgICovCj4gLXN0YXRpYyB1 MzIgY3pfaWhfZ2V0X3dwdHIoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCj4gK3N0YXRpYyB1 MzIgY3pfaWhfZ2V0X3dwdHIoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCj4gKwkJCSAgc3Ry dWN0IGFtZGdwdV9paF9yaW5nICppaCkKPiAgewo+ICAJdTMyIHdwdHIsIHRtcDsKPiAgCj4gLQl3 cHRyID0gbGUzMl90b19jcHUoYWRldi0+d2Iud2JbYWRldi0+aXJxLmloLndwdHJfb2Zmc10pOwo+ ICsJd3B0ciA9IGxlMzJfdG9fY3B1KGFkZXYtPndiLndiW2loLT53cHRyX29mZnNdKTsKPiAgCj4g IAlpZiAoUkVHX0dFVF9GSUVMRCh3cHRyLCBJSF9SQl9XUFRSLCBSQl9PVkVSRkxPVykpIHsKPiAg CQl3cHRyID0gUkVHX1NFVF9GSUVMRCh3cHRyLCBJSF9SQl9XUFRSLCBSQl9PVkVSRkxPVywgMCk7 Cj4gQEAgLTE5OCwxMyArMTk5LDEzIEBAIHN0YXRpYyB1MzIgY3pfaWhfZ2V0X3dwdHIoc3RydWN0 IGFtZGdwdV9kZXZpY2UgKmFkZXYpCj4gIAkJICogdGhpcyBzaG91bGQgYWxsb3cgdXMgdG8gY2F0 Y2h1cC4KPiAgCQkgKi8KPiAgCQlkZXZfd2FybihhZGV2LT5kZXYsICJJSCByaW5nIGJ1ZmZlciBv dmVyZmxvdyAoMHglMDhYLCAweCUwOFgsIDB4JTA4WClcbiIsCj4gLQkJCXdwdHIsIGFkZXYtPmly cS5paC5ycHRyLCAod3B0ciArIDE2KSAmIGFkZXYtPmlycS5paC5wdHJfbWFzayk7Cj4gLQkJYWRl di0+aXJxLmloLnJwdHIgPSAod3B0ciArIDE2KSAmIGFkZXYtPmlycS5paC5wdHJfbWFzazsKPiAr CQkJd3B0ciwgaWgtPnJwdHIsICh3cHRyICsgMTYpICYgaWgtPnB0cl9tYXNrKTsKPiArCQlpaC0+ cnB0ciA9ICh3cHRyICsgMTYpICYgaWgtPnB0cl9tYXNrOwo+ICAJCXRtcCA9IFJSRUczMihtbUlI X1JCX0NOVEwpOwo+ICAJCXRtcCA9IFJFR19TRVRfRklFTEQodG1wLCBJSF9SQl9DTlRMLCBXUFRS X09WRVJGTE9XX0NMRUFSLCAxKTsKPiAgCQlXUkVHMzIobW1JSF9SQl9DTlRMLCB0bXApOwo+ICAJ fQo+IC0JcmV0dXJuICh3cHRyICYgYWRldi0+aXJxLmloLnB0cl9tYXNrKTsKPiArCXJldHVybiAo d3B0ciAmIGloLT5wdHJfbWFzayk7Cj4gIH0KPiAgCj4gIC8qKgo+IEBAIC0yNzMsOSArMjc0LDEw IEBAIHN0YXRpYyB2b2lkIGN6X2loX2RlY29kZV9pdihzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRl diwKPiAgICoKPiAgICogU2V0IHRoZSBJSCByaW5nIGJ1ZmZlciBycHRyLgo+ICAgKi8KPiAtc3Rh dGljIHZvaWQgY3pfaWhfc2V0X3JwdHIoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCj4gK3N0 YXRpYyB2b2lkIGN6X2loX3NldF9ycHRyKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAo+ICsJ CQkgICBzdHJ1Y3QgYW1kZ3B1X2loX3JpbmcgKmloKQo+ICB7Cj4gLQlXUkVHMzIobW1JSF9SQl9S UFRSLCBhZGV2LT5pcnEuaWgucnB0cik7Cj4gKwlXUkVHMzIobW1JSF9SQl9SUFRSLCBpaC0+cnB0 cik7Cj4gIH0KPiAgCj4gIHN0YXRpYyBpbnQgY3pfaWhfZWFybHlfaW5pdCh2b2lkICpoYW5kbGUp Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2ljZWxhbmRfaWguYyBi L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2ljZWxhbmRfaWguYwo+IGluZGV4IDYxMzkxODZj Y2QzNi4uYzc3OWQ3MDhjMzA2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L2ljZWxhbmRfaWguYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2ljZWxh bmRfaWguYwo+IEBAIC0xODUsMTEgKzE4NSwxMiBAQCBzdGF0aWMgdm9pZCBpY2VsYW5kX2loX2ly cV9kaXNhYmxlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQo+ICAgKiBVc2VkIGJ5IGN6X2ly cV9wcm9jZXNzKFZJKS4KPiAgICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIHdwdHIuCj4gICAq Lwo+IC1zdGF0aWMgdTMyIGljZWxhbmRfaWhfZ2V0X3dwdHIoc3RydWN0IGFtZGdwdV9kZXZpY2Ug KmFkZXYpCj4gK3N0YXRpYyB1MzIgaWNlbGFuZF9paF9nZXRfd3B0cihzdHJ1Y3QgYW1kZ3B1X2Rl dmljZSAqYWRldiwKPiArCQkJICAgICAgIHN0cnVjdCBhbWRncHVfaWhfcmluZyAqaWgpCj4gIHsK PiAgCXUzMiB3cHRyLCB0bXA7Cj4gIAo+IC0Jd3B0ciA9IGxlMzJfdG9fY3B1KGFkZXYtPndiLndi W2FkZXYtPmlycS5paC53cHRyX29mZnNdKTsKPiArCXdwdHIgPSBsZTMyX3RvX2NwdShhZGV2LT53 Yi53YltpaC0+d3B0cl9vZmZzXSk7Cj4gIAo+ICAJaWYgKFJFR19HRVRfRklFTEQod3B0ciwgSUhf UkJfV1BUUiwgUkJfT1ZFUkZMT1cpKSB7Cj4gIAkJd3B0ciA9IFJFR19TRVRfRklFTEQod3B0ciwg SUhfUkJfV1BUUiwgUkJfT1ZFUkZMT1csIDApOwo+IEBAIC0xOTgsMTMgKzE5OSwxMyBAQCBzdGF0 aWMgdTMyIGljZWxhbmRfaWhfZ2V0X3dwdHIoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCj4g IAkJICogdGhpcyBzaG91bGQgYWxsb3cgdXMgdG8gY2F0Y2h1cC4KPiAgCQkgKi8KPiAgCQlkZXZf d2FybihhZGV2LT5kZXYsICJJSCByaW5nIGJ1ZmZlciBvdmVyZmxvdyAoMHglMDhYLCAweCUwOFgs IDB4JTA4WClcbiIsCj4gLQkJCXdwdHIsIGFkZXYtPmlycS5paC5ycHRyLCAod3B0ciArIDE2KSAm IGFkZXYtPmlycS5paC5wdHJfbWFzayk7Cj4gLQkJYWRldi0+aXJxLmloLnJwdHIgPSAod3B0ciAr IDE2KSAmIGFkZXYtPmlycS5paC5wdHJfbWFzazsKPiArCQkJIHdwdHIsIGloLT5ycHRyLCAod3B0 ciArIDE2KSAmIGloLT5wdHJfbWFzayk7Cj4gKwkJaWgtPnJwdHIgPSAod3B0ciArIDE2KSAmIGlo LT5wdHJfbWFzazsKPiAgCQl0bXAgPSBSUkVHMzIobW1JSF9SQl9DTlRMKTsKPiAgCQl0bXAgPSBS RUdfU0VUX0ZJRUxEKHRtcCwgSUhfUkJfQ05UTCwgV1BUUl9PVkVSRkxPV19DTEVBUiwgMSk7Cj4g IAkJV1JFRzMyKG1tSUhfUkJfQ05UTCwgdG1wKTsKPiAgCX0KPiAtCXJldHVybiAod3B0ciAmIGFk ZXYtPmlycS5paC5wdHJfbWFzayk7Cj4gKwlyZXR1cm4gKHdwdHIgJiBpaC0+cHRyX21hc2spOwo+ ICB9Cj4gIAo+ICAvKioKPiBAQCAtMjczLDkgKzI3NCwxMCBAQCBzdGF0aWMgdm9pZCBpY2VsYW5k X2loX2RlY29kZV9pdihzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKPiAgICoKPiAgICogU2V0 IHRoZSBJSCByaW5nIGJ1ZmZlciBycHRyLgo+ICAgKi8KPiAtc3RhdGljIHZvaWQgaWNlbGFuZF9p aF9zZXRfcnB0cihzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKPiArc3RhdGljIHZvaWQgaWNl bGFuZF9paF9zZXRfcnB0cihzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKPiArCQkJCXN0cnVj dCBhbWRncHVfaWhfcmluZyAqaWgpCj4gIHsKPiAtCVdSRUczMihtbUlIX1JCX1JQVFIsIGFkZXYt PmlycS5paC5ycHRyKTsKPiArCVdSRUczMihtbUlIX1JCX1JQVFIsIGloLT5ycHRyKTsKPiAgfQo+ ICAKPiAgc3RhdGljIGludCBpY2VsYW5kX2loX2Vhcmx5X2luaXQodm9pZCAqaGFuZGxlKQo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9zaV9paC5jIGIvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvc2lfaWguYwo+IGluZGV4IDE2ZjIxMmYzYjUzNC4uYTAwNTgyNGQ4 YjlhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NpX2loLmMKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9zaV9paC5jCj4gQEAgLTEwMCwyMiArMTAw LDIzIEBAIHN0YXRpYyB2b2lkIHNpX2loX2lycV9kaXNhYmxlKHN0cnVjdCBhbWRncHVfZGV2aWNl ICphZGV2KQo+ICAJbWRlbGF5KDEpOwo+ICB9Cj4gIAo+IC1zdGF0aWMgdTMyIHNpX2loX2dldF93 cHRyKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQo+ICtzdGF0aWMgdTMyIHNpX2loX2dldF93 cHRyKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAo+ICsJCQkgIHN0cnVjdCBhbWRncHVfaWhf cmluZyAqaWgpCj4gIHsKPiAgCXUzMiB3cHRyLCB0bXA7Cj4gIAo+IC0Jd3B0ciA9IGxlMzJfdG9f Y3B1KGFkZXYtPndiLndiW2FkZXYtPmlycS5paC53cHRyX29mZnNdKTsKPiArCXdwdHIgPSBsZTMy X3RvX2NwdShhZGV2LT53Yi53YltpaC0+d3B0cl9vZmZzXSk7Cj4gIAo+ICAJaWYgKHdwdHIgJiBJ SF9SQl9XUFRSX19SQl9PVkVSRkxPV19NQVNLKSB7Cj4gIAkJd3B0ciAmPSB+SUhfUkJfV1BUUl9f UkJfT1ZFUkZMT1dfTUFTSzsKPiAgCQlkZXZfd2FybihhZGV2LT5kZXYsICJJSCByaW5nIGJ1ZmZl ciBvdmVyZmxvdyAoMHglMDhYLCAweCUwOFgsIDB4JTA4WClcbiIsCj4gLQkJCXdwdHIsIGFkZXYt PmlycS5paC5ycHRyLCAod3B0ciArIDE2KSAmIGFkZXYtPmlycS5paC5wdHJfbWFzayk7Cj4gLQkJ YWRldi0+aXJxLmloLnJwdHIgPSAod3B0ciArIDE2KSAmIGFkZXYtPmlycS5paC5wdHJfbWFzazsK PiArCQkJd3B0ciwgaWgtPnJwdHIsICh3cHRyICsgMTYpICYgaWgtPnB0cl9tYXNrKTsKPiArCQlp aC0+cnB0ciA9ICh3cHRyICsgMTYpICYgaWgtPnB0cl9tYXNrOwo+ICAJCXRtcCA9IFJSRUczMihJ SF9SQl9DTlRMKTsKPiAgCQl0bXAgfD0gSUhfUkJfQ05UTF9fV1BUUl9PVkVSRkxPV19DTEVBUl9N QVNLOwo+ICAJCVdSRUczMihJSF9SQl9DTlRMLCB0bXApOwo+ICAJfQo+IC0JcmV0dXJuICh3cHRy ICYgYWRldi0+aXJxLmloLnB0cl9tYXNrKTsKPiArCXJldHVybiAod3B0ciAmIGloLT5wdHJfbWFz ayk7Cj4gIH0KPiAgCj4gIC8qKgo+IEBAIC0xNTEsOSArMTUyLDEwIEBAIHN0YXRpYyB2b2lkIHNp X2loX2RlY29kZV9pdihzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKPiAgCWFkZXYtPmlycS5p aC5ycHRyICs9IDE2Owo+ICB9Cj4gIAo+IC1zdGF0aWMgdm9pZCBzaV9paF9zZXRfcnB0cihzdHJ1 Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKPiArc3RhdGljIHZvaWQgc2lfaWhfc2V0X3JwdHIoc3Ry dWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCj4gKwkJCSAgIHN0cnVjdCBhbWRncHVfaWhfcmluZyAq aWgpCj4gIHsKPiAtCVdSRUczMihJSF9SQl9SUFRSLCBhZGV2LT5pcnEuaWgucnB0cik7Cj4gKwlX UkVHMzIoSUhfUkJfUlBUUiwgaWgtPnJwdHIpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgaW50IHNpX2lo X2Vhcmx5X2luaXQodm9pZCAqaGFuZGxlKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS90b25nYV9paC5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvdG9uZ2Ff aWguYwo+IGluZGV4IDYxMjBhYzNjNzY2Ny4uMzYxOGRjMGM2ODA0IDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3RvbmdhX2loLmMKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS90b25nYV9paC5jCj4gQEAgLTE5MywxNCArMTkzLDE1IEBAIHN0YXRpYyB2 b2lkIHRvbmdhX2loX2lycV9kaXNhYmxlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQo+ICAg KiBVc2VkIGJ5IGN6X2lycV9wcm9jZXNzKFZJKS4KPiAgICogUmV0dXJucyB0aGUgdmFsdWUgb2Yg dGhlIHdwdHIuCj4gICAqLwo+IC1zdGF0aWMgdTMyIHRvbmdhX2loX2dldF93cHRyKHN0cnVjdCBh bWRncHVfZGV2aWNlICphZGV2KQo+ICtzdGF0aWMgdTMyIHRvbmdhX2loX2dldF93cHRyKHN0cnVj dCBhbWRncHVfZGV2aWNlICphZGV2LAo+ICsJCQkgICAgIHN0cnVjdCBhbWRncHVfaWhfcmluZyAq aWgpCj4gIHsKPiAgCXUzMiB3cHRyLCB0bXA7Cj4gIAo+ICAJaWYgKGFkZXYtPmlycS5paC51c2Vf YnVzX2FkZHIpCj4gLQkJd3B0ciA9IGxlMzJfdG9fY3B1KGFkZXYtPmlycS5paC5yaW5nW2FkZXYt PmlycS5paC53cHRyX29mZnNdKTsKPiArCQl3cHRyID0gbGUzMl90b19jcHUoaWgtPnJpbmdbaWgt PndwdHJfb2Zmc10pOwo+ICAJZWxzZQo+IC0JCXdwdHIgPSBsZTMyX3RvX2NwdShhZGV2LT53Yi53 YlthZGV2LT5pcnEuaWgud3B0cl9vZmZzXSk7Cj4gKwkJd3B0ciA9IGxlMzJfdG9fY3B1KGFkZXYt PndiLndiW2loLT53cHRyX29mZnNdKTsKPiAgCj4gIAlpZiAoUkVHX0dFVF9GSUVMRCh3cHRyLCBJ SF9SQl9XUFRSLCBSQl9PVkVSRkxPVykpIHsKPiAgCQl3cHRyID0gUkVHX1NFVF9GSUVMRCh3cHRy LCBJSF9SQl9XUFRSLCBSQl9PVkVSRkxPVywgMCk7Cj4gQEAgLTIwOSwxMyArMjEwLDEzIEBAIHN0 YXRpYyB1MzIgdG9uZ2FfaWhfZ2V0X3dwdHIoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCj4g IAkJICogdGhpcyBzaG91bGQgYWxsb3cgdXMgdG8gY2F0Y2h1cC4KPiAgCQkgKi8KPiAgCQlkZXZf d2FybihhZGV2LT5kZXYsICJJSCByaW5nIGJ1ZmZlciBvdmVyZmxvdyAoMHglMDhYLCAweCUwOFgs IDB4JTA4WClcbiIsCj4gLQkJCXdwdHIsIGFkZXYtPmlycS5paC5ycHRyLCAod3B0ciArIDE2KSAm IGFkZXYtPmlycS5paC5wdHJfbWFzayk7Cj4gLQkJYWRldi0+aXJxLmloLnJwdHIgPSAod3B0ciAr IDE2KSAmIGFkZXYtPmlycS5paC5wdHJfbWFzazsKPiArCQkJIHdwdHIsIGloLT5ycHRyLCAod3B0 ciArIDE2KSAmIGloLT5wdHJfbWFzayk7Cj4gKwkJaWgtPnJwdHIgPSAod3B0ciArIDE2KSAmIGlo LT5wdHJfbWFzazsKPiAgCQl0bXAgPSBSUkVHMzIobW1JSF9SQl9DTlRMKTsKPiAgCQl0bXAgPSBS RUdfU0VUX0ZJRUxEKHRtcCwgSUhfUkJfQ05UTCwgV1BUUl9PVkVSRkxPV19DTEVBUiwgMSk7Cj4g IAkJV1JFRzMyKG1tSUhfUkJfQ05UTCwgdG1wKTsKPiAgCX0KPiAtCXJldHVybiAod3B0ciAmIGFk ZXYtPmlycS5paC5wdHJfbWFzayk7Cj4gKwlyZXR1cm4gKHdwdHIgJiBpaC0+cHRyX21hc2spOwo+ ICB9Cj4gIAo+ICAvKioKPiBAQCAtMjg0LDE3ICsyODUsMTggQEAgc3RhdGljIHZvaWQgdG9uZ2Ff aWhfZGVjb2RlX2l2KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAo+ICAgKgo+ICAgKiBTZXQg dGhlIElIIHJpbmcgYnVmZmVyIHJwdHIuCj4gICAqLwo+IC1zdGF0aWMgdm9pZCB0b25nYV9paF9z ZXRfcnB0cihzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKPiArc3RhdGljIHZvaWQgdG9uZ2Ff aWhfc2V0X3JwdHIoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCj4gKwkJCSAgICAgIHN0cnVj dCBhbWRncHVfaWhfcmluZyAqaWgpCj4gIHsKPiAtCWlmIChhZGV2LT5pcnEuaWgudXNlX2Rvb3Ji ZWxsKSB7Cj4gKwlpZiAoaWgtPnVzZV9kb29yYmVsbCkgewo+ICAJCS8qIFhYWCBjaGVjayBpZiBz d2FwcGluZyBpcyBuZWNlc3Nhcnkgb24gQkUgKi8KPiAtCQlpZiAoYWRldi0+aXJxLmloLnVzZV9i dXNfYWRkcikKPiAtCQkJYWRldi0+aXJxLmloLnJpbmdbYWRldi0+aXJxLmloLnJwdHJfb2Zmc10g PSBhZGV2LT5pcnEuaWgucnB0cjsKPiArCQlpZiAoaWgtPnVzZV9idXNfYWRkcikKPiArCQkJaWgt PnJpbmdbaWgtPnJwdHJfb2Zmc10gPSBpaC0+cnB0cjsKPiAgCQllbHNlCj4gLQkJCWFkZXYtPndi LndiW2FkZXYtPmlycS5paC5ycHRyX29mZnNdID0gYWRldi0+aXJxLmloLnJwdHI7Cj4gLQkJV0RP T1JCRUxMMzIoYWRldi0+aXJxLmloLmRvb3JiZWxsX2luZGV4LCBhZGV2LT5pcnEuaWgucnB0cik7 Cj4gKwkJCWFkZXYtPndiLndiW2loLT5ycHRyX29mZnNdID0gaWgtPnJwdHI7Cj4gKwkJV0RPT1JC RUxMMzIoaWgtPmRvb3JiZWxsX2luZGV4LCBpaC0+cnB0cik7Cj4gIAl9IGVsc2Ugewo+IC0JCVdS RUczMihtbUlIX1JCX1JQVFIsIGFkZXYtPmlycS5paC5ycHRyKTsKPiArCQlXUkVHMzIobW1JSF9S Ql9SUFRSLCBpaC0+cnB0cik7Cj4gIAl9Cj4gIH0KPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L3ZlZ2ExMF9paC5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvdmVnYTEwX2loLmMKPiBpbmRleCBhOTczN2FkZjgzOTIuLjEyZDRlM2VjODUxZSAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS92ZWdhMTBfaWguYwo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3ZlZ2ExMF9paC5jCj4gQEAgLTE5MSwxNCArMTkxLDE1 IEBAIHN0YXRpYyB2b2lkIHZlZ2ExMF9paF9pcnFfZGlzYWJsZShzdHJ1Y3QgYW1kZ3B1X2Rldmlj ZSAqYWRldikKPiAgICogcmluZyBidWZmZXIgb3ZlcmZsb3cgYW5kIGRlYWwgd2l0aCBpdC4KPiAg ICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIHdwdHIuCj4gICAqLwo+IC1zdGF0aWMgdTMyIHZl Z2ExMF9paF9nZXRfd3B0cihzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKPiArc3RhdGljIHUz MiB2ZWdhMTBfaWhfZ2V0X3dwdHIoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCj4gKwkJCSAg ICAgIHN0cnVjdCBhbWRncHVfaWhfcmluZyAqaWgpCj4gIHsKPiAgCXUzMiB3cHRyLCB0bXA7Cj4g IAo+IC0JaWYgKGFkZXYtPmlycS5paC51c2VfYnVzX2FkZHIpCj4gLQkJd3B0ciA9IGxlMzJfdG9f Y3B1KGFkZXYtPmlycS5paC5yaW5nW2FkZXYtPmlycS5paC53cHRyX29mZnNdKTsKPiArCWlmIChp aC0+dXNlX2J1c19hZGRyKQo+ICsJCXdwdHIgPSBsZTMyX3RvX2NwdShpaC0+cmluZ1tpaC0+d3B0 cl9vZmZzXSk7Cj4gIAllbHNlCj4gLQkJd3B0ciA9IGxlMzJfdG9fY3B1KGFkZXYtPndiLndiW2Fk ZXYtPmlycS5paC53cHRyX29mZnNdKTsKPiArCQl3cHRyID0gbGUzMl90b19jcHUoYWRldi0+d2Iu d2JbaWgtPndwdHJfb2Zmc10pOwo+ICAKPiAgCWlmIChSRUdfR0VUX0ZJRUxEKHdwdHIsIElIX1JC X1dQVFIsIFJCX09WRVJGTE9XKSkgewo+ICAJCXdwdHIgPSBSRUdfU0VUX0ZJRUxEKHdwdHIsIElI X1JCX1dQVFIsIFJCX09WRVJGTE9XLCAwKTsKPiBAQCAtMjA3LDE2ICsyMDgsMTYgQEAgc3RhdGlj IHUzMiB2ZWdhMTBfaWhfZ2V0X3dwdHIoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCj4gIAkJ ICogZnJvbSB0aGUgbGFzdCBub3Qgb3ZlcndyaXR0ZW4gdmVjdG9yICh3cHRyICsgMzIpLiBIb3Bl ZnVsbHkKPiAgCQkgKiB0aGlzIHNob3VsZCBhbGxvdyB1cyB0byBjYXRjaHVwLgo+ICAJCSAqLwo+ IC0JCXRtcCA9ICh3cHRyICsgMzIpICYgYWRldi0+aXJxLmloLnB0cl9tYXNrOwo+ICsJCXRtcCA9 ICh3cHRyICsgMzIpICYgaWgtPnB0cl9tYXNrOwo+ICAJCWRldl93YXJuKGFkZXYtPmRldiwgIklI IHJpbmcgYnVmZmVyIG92ZXJmbG93ICgweCUwOFgsIDB4JTA4WCwgMHglMDhYKVxuIiwKPiAtCQkJ d3B0ciwgYWRldi0+aXJxLmloLnJwdHIsIHRtcCk7Cj4gLQkJYWRldi0+aXJxLmloLnJwdHIgPSB0 bXA7Cj4gKwkJCSB3cHRyLCBpaC0+cnB0ciwgdG1wKTsKPiArCQlpaC0+cnB0ciA9IHRtcDsKPiAg Cj4gIAkJdG1wID0gUlJFRzMyX05PX0tJUShTT0MxNV9SRUdfT0ZGU0VUKE9TU1NZUywgMCwgbW1J SF9SQl9DTlRMKSk7Cj4gIAkJdG1wID0gUkVHX1NFVF9GSUVMRCh0bXAsIElIX1JCX0NOVEwsIFdQ VFJfT1ZFUkZMT1dfQ0xFQVIsIDEpOwo+ICAJCVdSRUczMl9OT19LSVEoU09DMTVfUkVHX09GRlNF VChPU1NTWVMsIDAsIG1tSUhfUkJfQ05UTCksIHRtcCk7Cj4gIAl9Cj4gLQlyZXR1cm4gKHdwdHIg JiBhZGV2LT5pcnEuaWgucHRyX21hc2spOwo+ICsJcmV0dXJuICh3cHRyICYgaWgtPnB0cl9tYXNr KTsKPiAgfQo+ICAKPiAgLyoqCj4gQEAgLTM1MywxNyArMzU0LDE4IEBAIHN0YXRpYyB2b2lkIHZl Z2ExMF9paF9kZWNvZGVfaXYoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCj4gICAqCj4gICAq IFNldCB0aGUgSUggcmluZyBidWZmZXIgcnB0ci4KPiAgICovCj4gLXN0YXRpYyB2b2lkIHZlZ2Ex MF9paF9zZXRfcnB0cihzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKPiArc3RhdGljIHZvaWQg dmVnYTEwX2loX3NldF9ycHRyKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAo+ICsJCQkgICAg ICAgc3RydWN0IGFtZGdwdV9paF9yaW5nICppaCkKPiAgewo+IC0JaWYgKGFkZXYtPmlycS5paC51 c2VfZG9vcmJlbGwpIHsKPiArCWlmIChpaC0+dXNlX2Rvb3JiZWxsKSB7Cj4gIAkJLyogWFhYIGNo ZWNrIGlmIHN3YXBwaW5nIGlzIG5lY2Vzc2FyeSBvbiBCRSAqLwo+IC0JCWlmIChhZGV2LT5pcnEu aWgudXNlX2J1c19hZGRyKQo+IC0JCQlhZGV2LT5pcnEuaWgucmluZ1thZGV2LT5pcnEuaWgucnB0 cl9vZmZzXSA9IGFkZXYtPmlycS5paC5ycHRyOwo+ICsJCWlmIChpaC0+dXNlX2J1c19hZGRyKQo+ ICsJCQlpaC0+cmluZ1tpaC0+cnB0cl9vZmZzXSA9IGloLT5ycHRyOwo+ICAJCWVsc2UKPiAtCQkJ YWRldi0+d2Iud2JbYWRldi0+aXJxLmloLnJwdHJfb2Zmc10gPSBhZGV2LT5pcnEuaWgucnB0cjsK PiAtCQlXRE9PUkJFTEwzMihhZGV2LT5pcnEuaWguZG9vcmJlbGxfaW5kZXgsIGFkZXYtPmlycS5p aC5ycHRyKTsKPiArCQkJYWRldi0+d2Iud2JbaWgtPnJwdHJfb2Zmc10gPSBpaC0+cnB0cjsKPiAr CQlXRE9PUkJFTEwzMihpaC0+ZG9vcmJlbGxfaW5kZXgsIGloLT5ycHRyKTsKPiAgCX0gZWxzZSB7 Cj4gLQkJV1JFRzMyX1NPQzE1KE9TU1NZUywgMCwgbW1JSF9SQl9SUFRSLCBhZGV2LT5pcnEuaWgu cnB0cik7Cj4gKwkJV1JFRzMyX1NPQzE1KE9TU1NZUywgMCwgbW1JSF9SQl9SUFRSLCBpaC0+cnB0 cik7Cj4gIAl9Cj4gIH0KPiAgCj4gLS0gCj4gMi4xNC4xCj4gCj4gX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBhbWQtZ2Z4IG1haWxpbmcgbGlzdAo+IGFt ZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCmFtZC1nZnggbWFpbGluZyBsaXN0CmFtZC1nZnhAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vYW1kLWdmeAo=