From mboxrd@z Thu Jan 1 00:00:00 1970 From: Nathan Chancellor Subject: Re: [v3] drm/amdgpu: add badpages sysfs interafce Date: Fri, 17 May 2019 00:19:05 -0700 Message-ID: <20190517071905.GA108126@archlinux-epyc> References: Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: 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: "Pan, Xinhui" Cc: "Deucher, Alexander" , "amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" T24gVGh1LCBNYXkgMDksIDIwMTkgYXQgMTA6MzE6MDVBTSArMDAwMCwgUGFuLCBYaW5odWkgd3Jv dGU6Cj4gYWRkIGJhZHBhZ2VzIG5vZGUuCj4gaXQgd2lsbCBvdXRwdXQgYmFkcGFnZXMgbGlzdCBp biBmb3JtYXQKPiBncHUgcGZuIDogZ3B1IHBhZ2Ugc2l6ZSA6IGZsYWdzCj4gCj4gZXhhbXBsZQo+ IDB4MDAwMDAwMDAgOiAweDAwMDAxMDAwIDogUgo+IDB4MDAwMDAwMDEgOiAweDAwMDAxMDAwIDog Ugo+IDB4MDAwMDAwMDIgOiAweDAwMDAxMDAwIDogUgo+IDB4MDAwMDAwMDMgOiAweDAwMDAxMDAw IDogUgo+IDB4MDAwMDAwMDQgOiAweDAwMDAxMDAwIDogUgo+IDB4MDAwMDAwMDUgOiAweDAwMDAx MDAwIDogUgo+IDB4MDAwMDAwMDYgOiAweDAwMDAxMDAwIDogUgo+IDB4MDAwMDAwMDcgOiAweDAw MDAxMDAwIDogUAo+IDB4MDAwMDAwMDggOiAweDAwMDAxMDAwIDogUAo+IDB4MDAwMDAwMDkgOiAw eDAwMDAxMDAwIDogUAo+IAo+IGZsYWdzIGNhbiBiZSBvbmUgb2YgYmVsb3cgY2hhcmFjdGVycwo+ IFI6IHJlc2VydmVkLgo+IFA6IHBlbmRpbmcgZm9yIHJlc2VydmUuCj4gRjogZmFpbGVkIHRvIHJl c2VydmUgZm9yIHNvbWUgcmVhc29ucy4KPiAKPiBTaWduZWQtb2ZmLWJ5OiB4aW5odWkgcGFuIDx4 aW5odWkucGFuQGFtZC5jb20+Cj4gUmV2aWV3ZWQtYnk6IEFsZXggRGV1Y2hlciA8YWxleGFuZGVy LmRldWNoZXJAYW1kLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1k Z3B1X3Jhcy5jIHwgMTQ2ICsrKysrKysrKysrKysrKysrKysrKysrKwo+ICBkcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9hbWRncHVfcmFzLmggfCAgIDEgKwo+ICAyIGZpbGVzIGNoYW5nZWQsIDE0 NyBpbnNlcnRpb25zKCspCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L2FtZGdwdV9yYXMuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9yYXMu Ywo+IGluZGV4IGM2MGQ1ZjgxMzgwMS4uYzllMjRmNjA5MzhlIDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9yYXMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L2FtZGdwdV9yYXMuYwo+IEBAIC05MCw2ICs5MCwxMiBAQCBzdHJ1Y3QgcmFz X21hbmFnZXIgewo+ICAJc3RydWN0IHJhc19lcnJfZGF0YSBlcnJfZGF0YTsKPiAgfTsKPiAgCj4g K3N0cnVjdCByYXNfYmFkcGFnZSB7Cj4gKwl1bnNpZ25lZCBpbnQgYnA7Cj4gKwl1bnNpZ25lZCBp bnQgc2l6ZTsKPiArCXVuc2lnbmVkIGludCBmbGFnczsKPiArfTsKPiArCj4gIGNvbnN0IGNoYXIg KnJhc19lcnJvcl9zdHJpbmdbXSA9IHsKPiAgCSJub25lIiwKPiAgCSJwYXJpdHkiLAo+IEBAIC03 MTAsNiArNzE2LDc3IEBAIGludCBhbWRncHVfcmFzX3F1ZXJ5X2Vycm9yX2NvdW50KHN0cnVjdCBh bWRncHVfZGV2aWNlICphZGV2LAo+ICAKPiAgLyogc3lzZnMgYmVnaW4gKi8KPiAgCj4gK3N0YXRp YyBpbnQgYW1kZ3B1X3Jhc19iYWRwYWdlc19yZWFkKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2 LAo+ICsJCXN0cnVjdCByYXNfYmFkcGFnZSAqKmJwcywgdW5zaWduZWQgaW50ICpjb3VudCk7Cj4g Kwo+ICtzdGF0aWMgY2hhciAqYW1kZ3B1X3Jhc19iYWRwYWdlX2ZsYWdzX3N0cih1bnNpZ25lZCBp bnQgZmxhZ3MpCj4gK3sKPiArCXN3aXRjaCAoZmxhZ3MpIHsKPiArCWNhc2UgMDoKPiArCQlyZXR1 cm4gIlIiOwo+ICsJY2FzZSAxOgo+ICsJCXJldHVybiAiUCI7Cj4gKwljYXNlIDI6Cj4gKwlkZWZh dWx0Ogo+ICsJCXJldHVybiAiRiI7Cj4gKwl9Owo+ICt9Cj4gKwo+ICsvKgo+ICsgKiBET0M6IHJh cyBzeXNmcyBncHVfdnJhbV9iYWRfcGFnZXMgaW50ZXJmYWNlCj4gKyAqCj4gKyAqIEl0IGFsbG93 cyB1c2VyIHRvIHJlYWQgdGhlIGJhZCBwYWdlcyBvZiB2cmFtIG9uIHRoZSBncHUgdGhyb3VnaAo+ ICsgKiAvc3lzL2NsYXNzL2RybS9jYXJkWzAvMS8yLi4uXS9kZXZpY2UvcmFzL2dwdV92cmFtX2Jh ZF9wYWdlcwo+ICsgKgo+ICsgKiBJdCBvdXRwdXRzIG11bHRpcGxlIGxpbmVzLCBhbmQgZWFjaCBs aW5lIHN0YW5kcyBmb3Igb25lIGdwdSBwYWdlLgo+ICsgKgo+ICsgKiBUaGUgZm9ybWF0IG9mIG9u ZSBsaW5lIGlzIGJlbG93LAo+ICsgKiBncHUgcGZuIDogZ3B1IHBhZ2Ugc2l6ZSA6IGZsYWdzCj4g KyAqCj4gKyAqIGdwdSBwZm4gYW5kIGdwdSBwYWdlIHNpemUgYXJlIHByaW50ZWQgaW4gaGV4IGZv cm1hdC4KPiArICogZmxhZ3MgY2FuIGJlIG9uZSBvZiBiZWxvdyBjaGFyYWN0ZXIsCj4gKyAqIFI6 IHJlc2VydmVkLCB0aGlzIGdwdSBwYWdlIGlzIHJlc2VydmVkIGFuZCBub3QgYWJsZSB0byB1c2Uu Cj4gKyAqIFA6IHBlbmRpbmcgZm9yIHJlc2VydmUsIHRoaXMgZ3B1IHBhZ2UgaXMgbWFya2VkIGFz IGJhZCwgd2lsbCBiZSByZXNlcnZlZAo+ICsgKiAgICBpbiBuZXh0IHdpbmRvdyBvZiBwYWdlX3Jl c2VydmUuCj4gKyAqIEY6IHVuYWJsZSB0byByZXNlcnZlLiB0aGlzIGdwdSBwYWdlIGNhbid0IGJl IHJlc2VydmVkIGR1ZSB0byBzb21lIHJlYXNvbnMuCj4gKyAqCj4gKyAqIGV4YW1wbGVzOgo+ICsg KiAweDAwMDAwMDAxIDogMHgwMDAwMTAwMCA6IFIKPiArICogMHgwMDAwMDAwMiA6IDB4MDAwMDEw MDAgOiBQCj4gKyAqLwo+ICsKPiArc3RhdGljIHNzaXplX3QgYW1kZ3B1X3Jhc19zeXNmc19iYWRw YWdlc19yZWFkKHN0cnVjdCBmaWxlICpmLAo+ICsJCXN0cnVjdCBrb2JqZWN0ICprb2JqLCBzdHJ1 Y3QgYmluX2F0dHJpYnV0ZSAqYXR0ciwKPiArCQljaGFyICpidWYsIGxvZmZfdCBwcG9zLCBzaXpl X3QgY291bnQpCj4gK3sKPiArCXN0cnVjdCBhbWRncHVfcmFzICpjb24gPQo+ICsJCWNvbnRhaW5l cl9vZihhdHRyLCBzdHJ1Y3QgYW1kZ3B1X3JhcywgYmFkcGFnZXNfYXR0cik7Cj4gKwlzdHJ1Y3Qg YW1kZ3B1X2RldmljZSAqYWRldiA9IGNvbi0+YWRldjsKPiArCWNvbnN0IHVuc2lnbmVkIGludCBl bGVtZW50X3NpemUgPQo+ICsJCXNpemVvZigiMHhhYmNkYWJjZCA6IDB4MTIzNDU2NzggOiBSXG4i KSAtIDE7Cj4gKwl1bnNpZ25lZCBpbnQgc3RhcnQgPSAocHBvcyArIGVsZW1lbnRfc2l6ZSAtIDEp IC8gZWxlbWVudF9zaXplOwo+ICsJdW5zaWduZWQgaW50IGVuZCA9IChwcG9zICsgY291bnQgLSAx KSAvIGVsZW1lbnRfc2l6ZTsKCkkgYmVsaWV2ZSB0aGVzZSB0d28gbGluZXMgY2F1c2UgYSBsaW5r IHRpbWUgZXJyb3Igd2l0aCBhcm0zMiBkZWZjb25maWcgKwpDT05GSUdfRFJNX0FNREdQVSAoZmls dGVyZWQgZG93biBmcm9tIGFsbHllc2NvbmZpZyk6Cgphcm0tbGludXgtZ251ZWFiaS1sZDogZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Jhcy5vOiBpbiBmdW5jdGlvbiBgYW1kZ3B1 X3Jhc19zeXNmc19iYWRwYWdlc19yZWFkJzoKYW1kZ3B1X3Jhcy5jOigudGV4dCsweDgwNCk6IHVu ZGVmaW5lZCByZWZlcmVuY2UgdG8gYF9fYWVhYmlfbGRpdm1vZCcKYXJtLWxpbnV4LWdudWVhYmkt bGQ6IGFtZGdwdV9yYXMuYzooLnRleHQrMHg4MzApOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBf X2FlYWJpX2xkaXZtb2QnCgpUaGUgYXNzaWdubWVudHMgb2Ygc3RhcnQgYW5kIGVuZCBpbnZvbHZl IGEgNjQtYml0IGRpdmlkZW5kIGJlY2F1c2UgbG9mZl90CmlzIGRlZmluZWQgYXMgbG9uZyBsb25n LCBtZWFuaW5nIG9uZSBvZiB0aGUgNjQtYml0IGRpdmlzaW9uIGZ1bmN0aW9ucwpmcm9tIGluY2x1 ZGUvbGludXgvbWF0aDY0Lmggc2hvdWxkIGJlIHVzZWQuIEkgYW0gbm90IHN1cmUgb2Ygd2hpY2gg b25lCm90aGVyd2lzZSBJIHdvdWxkIGhhdmUgc2VudCBhIHBhdGNoIDopCgpDaGVlcnMsCk5hdGhh bgoKPiArCXNzaXplX3QgcyA9IDA7Cj4gKwlzdHJ1Y3QgcmFzX2JhZHBhZ2UgKmJwcyA9IE5VTEw7 Cj4gKwl1bnNpZ25lZCBpbnQgYnBzX2NvdW50ID0gMDsKPiArCj4gKwltZW1zZXQoYnVmLCAwLCBj b3VudCk7Cj4gKwo+ICsJaWYgKGFtZGdwdV9yYXNfYmFkcGFnZXNfcmVhZChhZGV2LCAmYnBzLCAm YnBzX2NvdW50KSkKPiArCQlyZXR1cm4gMDsKPiArCj4gKwlmb3IgKDsgc3RhcnQgPCBlbmQgJiYg c3RhcnQgPCBicHNfY291bnQ7IHN0YXJ0KyspCj4gKwkJcyArPSBzY25wcmludGYoJmJ1ZltzXSwg ZWxlbWVudF9zaXplICsgMSwKPiArCQkJCSIweCUwOHggOiAweCUwOHggOiAlMXNcbiIsCj4gKwkJ CQlicHNbc3RhcnRdLmJwLAo+ICsJCQkJYnBzW3N0YXJ0XS5zaXplLAo+ICsJCQkJYW1kZ3B1X3Jh c19iYWRwYWdlX2ZsYWdzX3N0cihicHNbc3RhcnRdLmZsYWdzKSk7Cj4gKwo+ICsJa2ZyZWUoYnBz KTsKPiArCj4gKwlyZXR1cm4gczsKPiArfQo+ICsKPiAgc3RhdGljIHNzaXplX3QgYW1kZ3B1X3Jh c19zeXNmc19mZWF0dXJlc19yZWFkKHN0cnVjdCBkZXZpY2UgKmRldiwKPiAgCQlzdHJ1Y3QgZGV2 aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQo+ICB7Cj4gQEAgLTc1MCw5ICs4MjcsMTQg QEAgc3RhdGljIGludCBhbWRncHVfcmFzX3N5c2ZzX2NyZWF0ZV9mZWF0dXJlX25vZGUoc3RydWN0 IGFtZGdwdV9kZXZpY2UgKmFkZXYpCj4gIAkJJmNvbi0+ZmVhdHVyZXNfYXR0ci5hdHRyLAo+ICAJ CU5VTEwKPiAgCX07Cj4gKwlzdHJ1Y3QgYmluX2F0dHJpYnV0ZSAqYmluX2F0dHJzW10gPSB7Cj4g KwkJJmNvbi0+YmFkcGFnZXNfYXR0ciwKPiArCQlOVUxMCj4gKwl9Owo+ICAJc3RydWN0IGF0dHJp YnV0ZV9ncm91cCBncm91cCA9IHsKPiAgCQkubmFtZSA9ICJyYXMiLAo+ICAJCS5hdHRycyA9IGF0 dHJzLAo+ICsJCS5iaW5fYXR0cnMgPSBiaW5fYXR0cnMsCj4gIAl9Owo+ICAKPiAgCWNvbi0+ZmVh dHVyZXNfYXR0ciA9IChzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSkgewo+IEBAIC03NjIsNyArODQ0 LDE5IEBAIHN0YXRpYyBpbnQgYW1kZ3B1X3Jhc19zeXNmc19jcmVhdGVfZmVhdHVyZV9ub2RlKHN0 cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQo+ICAJCX0sCj4gIAkJCS5zaG93ID0gYW1kZ3B1X3Jh c19zeXNmc19mZWF0dXJlc19yZWFkLAo+ICAJfTsKPiArCj4gKwljb24tPmJhZHBhZ2VzX2F0dHIg PSAoc3RydWN0IGJpbl9hdHRyaWJ1dGUpIHsKPiArCQkuYXR0ciA9IHsKPiArCQkJLm5hbWUgPSAi Z3B1X3ZyYW1fYmFkX3BhZ2VzIiwKPiArCQkJLm1vZGUgPSBTX0lSVUdPLAo+ICsJCX0sCj4gKwkJ LnNpemUgPSAwLAo+ICsJCS5wcml2YXRlID0gTlVMTCwKPiArCQkucmVhZCA9IGFtZGdwdV9yYXNf c3lzZnNfYmFkcGFnZXNfcmVhZCwKPiArCX07Cj4gKwo+ICAJc3lzZnNfYXR0cl9pbml0KGF0dHJz WzBdKTsKPiArCXN5c2ZzX2Jpbl9hdHRyX2luaXQoYmluX2F0dHJzWzBdKTsKPiAgCj4gIAlyZXR1 cm4gc3lzZnNfY3JlYXRlX2dyb3VwKCZhZGV2LT5kZXYtPmtvYmosICZncm91cCk7Cj4gIH0KPiBA QCAtNzc0LDkgKzg2OCwxNCBAQCBzdGF0aWMgaW50IGFtZGdwdV9yYXNfc3lzZnNfcmVtb3ZlX2Zl YXR1cmVfbm9kZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKPiAgCQkmY29uLT5mZWF0dXJl c19hdHRyLmF0dHIsCj4gIAkJTlVMTAo+ICAJfTsKPiArCXN0cnVjdCBiaW5fYXR0cmlidXRlICpi aW5fYXR0cnNbXSA9IHsKPiArCQkmY29uLT5iYWRwYWdlc19hdHRyLAo+ICsJCU5VTEwKPiArCX07 Cj4gIAlzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGdyb3VwID0gewo+ICAJCS5uYW1lID0gInJhcyIs Cj4gIAkJLmF0dHJzID0gYXR0cnMsCj4gKwkJLmJpbl9hdHRycyA9IGJpbl9hdHRycywKPiAgCX07 Cj4gIAo+ICAJc3lzZnNfcmVtb3ZlX2dyb3VwKCZhZGV2LT5kZXYtPmtvYmosICZncm91cCk7Cj4g QEAgLTExMDgsNiArMTIwNyw1MyBAQCBzdGF0aWMgaW50IGFtZGdwdV9yYXNfaW50ZXJydXB0X3Jl bW92ZV9hbGwoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCj4gIC8qIGloIGVuZCAqLwo+ICAK PiAgLyogcmVjb3ZlcnkgYmVnaW4gKi8KPiArCj4gKy8qIHJldHVybiAwIG9uIHN1Y2Nlc3MuCj4g KyAqIGNhbGxlciBuZWVkIGZyZWUgYnBzLgo+ICsgKi8KPiArc3RhdGljIGludCBhbWRncHVfcmFz X2JhZHBhZ2VzX3JlYWQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCj4gKwkJc3RydWN0IHJh c19iYWRwYWdlICoqYnBzLCB1bnNpZ25lZCBpbnQgKmNvdW50KQo+ICt7Cj4gKwlzdHJ1Y3QgYW1k Z3B1X3JhcyAqY29uID0gYW1kZ3B1X3Jhc19nZXRfY29udGV4dChhZGV2KTsKPiArCXN0cnVjdCBy YXNfZXJyX2hhbmRsZXJfZGF0YSAqZGF0YTsKPiArCWludCBpID0gMDsKPiArCWludCByZXQgPSAw Owo+ICsKPiArCWlmICghY29uIHx8ICFjb24tPmVoX2RhdGEgfHwgIWJwcyB8fCAhY291bnQpCj4g KwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICsJbXV0ZXhfbG9jaygmY29uLT5yZWNvdmVyeV9sb2Nr KTsKPiArCWRhdGEgPSBjb24tPmVoX2RhdGE7Cj4gKwlpZiAoIWRhdGEgfHwgZGF0YS0+Y291bnQg PT0gMCkgewo+ICsJCSpicHMgPSBOVUxMOwo+ICsJCWdvdG8gb3V0Owo+ICsJfQo+ICsKPiArCSpi cHMgPSBrbWFsbG9jKHNpemVvZihzdHJ1Y3QgcmFzX2JhZHBhZ2UpICogZGF0YS0+Y291bnQsIEdG UF9LRVJORUwpOwo+ICsJaWYgKCEqYnBzKSB7Cj4gKwkJcmV0ID0gLUVOT01FTTsKPiArCQlnb3Rv IG91dDsKPiArCX0KPiArCj4gKwlmb3IgKDsgaSA8IGRhdGEtPmNvdW50OyBpKyspIHsKPiArCQko KmJwcylbaV0gPSAoc3RydWN0IHJhc19iYWRwYWdlKXsKPiArCQkJLmJwID0gZGF0YS0+YnBzW2ld LmJwLAo+ICsJCQkuc2l6ZSA9IEFNREdQVV9HUFVfUEFHRV9TSVpFLAo+ICsJCQkuZmxhZ3MgPSAw LAo+ICsJCX07Cj4gKwo+ICsJCWlmIChkYXRhLT5sYXN0X3Jlc2VydmVkIDw9IGkpCj4gKwkJCSgq YnBzKVtpXS5mbGFncyA9IDE7Cj4gKwkJZWxzZSBpZiAoZGF0YS0+YnBzW2ldLmJvID09IE5VTEwp Cj4gKwkJCSgqYnBzKVtpXS5mbGFncyA9IDI7Cj4gKwl9Cj4gKwo+ICsJKmNvdW50ID0gZGF0YS0+ Y291bnQ7Cj4gK291dDoKPiArCW11dGV4X3VubG9jaygmY29uLT5yZWNvdmVyeV9sb2NrKTsKPiAr CXJldHVybiByZXQ7Cj4gK30KPiArCj4gIHN0YXRpYyB2b2lkIGFtZGdwdV9yYXNfZG9fcmVjb3Zl cnkoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQo+ICB7Cj4gIAlzdHJ1Y3QgYW1kZ3B1X3JhcyAq cmFzID0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Jh cy5oIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Jhcy5oCj4gaW5kZXggMDY1 YzY2YmFmOTQ3Li5lMmRmZjAwYjhkMWMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvYW1kZ3B1X3Jhcy5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv YW1kZ3B1X3Jhcy5oCj4gQEAgLTkzLDYgKzkzLDcgQEAgc3RydWN0IGFtZGdwdV9yYXMgewo+ICAJ c3RydWN0IGRlbnRyeSAqZW50Owo+ICAJLyogc3lzZnMgKi8KPiAgCXN0cnVjdCBkZXZpY2VfYXR0 cmlidXRlIGZlYXR1cmVzX2F0dHI7Cj4gKwlzdHJ1Y3QgYmluX2F0dHJpYnV0ZSBiYWRwYWdlc19h dHRyOwo+ICAJLyogYmxvY2sgYXJyYXkgKi8KPiAgCXN0cnVjdCByYXNfbWFuYWdlciAqb2JqczsK PiAgCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmFtZC1n ZnggbWFpbGluZyBsaXN0CmFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vYW1kLWdmeA==