From mboxrd@z Thu Jan 1 00:00:00 1970 From: Felix Kuehling Subject: Re: [PATCH 3/3] drm/amdgpu: Fix multi-level page table bugs for large BOs Date: Wed, 29 Mar 2017 10:32:16 -0400 Message-ID: References: <1490749231-16157-1-git-send-email-Felix.Kuehling@amd.com> <1490749231-16157-4-git-send-email-Felix.Kuehling@amd.com> <58DB21CB.4090800@amd.com> <58DB4D02.7020903@amd.com> <8acdbd65-f99d-3e0e-b61b-318cf27d7a3b@vodafone.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <8acdbd65-f99d-3e0e-b61b-318cf27d7a3b-ANTagKRnAhcb1SvskN2V4Q@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: =?UTF-8?Q?Christian_K=c3=b6nig?= , "Zhang, Jerry (Junwei)" , "amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" , "Koenig, Christian" , "Zhou, David(ChunMing)" Cc: "Deucher, Alexander" , "Russell, Kent" T24gMTctMDMtMjkgMDI6NTIgQU0sIENocmlzdGlhbiBLw7ZuaWcgd3JvdGU6Cj4gQW0gMjkuMDMu MjAxNyB1bSAwNzo1OCBzY2hyaWViIFpoYW5nLCBKZXJyeSAoSnVud2VpKToKPj4gSGkgRmVsaXgs Cj4+Cj4+IFRoYW5rcyBmb3IgeW91ciBpbGx1c3RyYXRpb24gd2l0aCBwYXRpZW5jZS4KPj4gSSBn b3QgeW91ciBtZWFuaW5nIHRoZW4sIGFuZCB0aGFua3MgdG8gZml4IHRoYXQuCj4+Cj4+ID4gSSB0 aGluayB5b3UncmUgcmlnaHQsIHRoZXJlIGFyZSBzb21lIGV4dHJhIGhpZ2ggYml0cyBpbiBzYWRk ciBhbmQKPj4gZWFkZHIsIGJ1dAo+PiA+IHRoZXkgZ2V0IGRpc2NhcmRlZCBieSB0aGUgbW9kdWxv LWRpdmlzaW9uIGluIHRoZSBuZXh0IHJlY3Vyc2lvbgo+PiBsZXZlbC4gRm9yCj4+ID4gYWRkZWQg Y2xhcml0eSB0aGUgbW9kdWxvIGRpdmlzaW9uIChvciBtYXNraW5nIG9mIGhpZ2ggYml0cykgY291 bGQKPj4gYmUgbW92ZWQgdXAKPj4gPiB0byB0aGUgY2FsbGVyLgo+Pgo+PiBJdCBtYXkgYmUgbW9y ZSBjbGVhciBpZiBtb2R1bG8tZGl2aXNpb24gY2FsbGVkIGJlZm9yZSB0aGUgY2FsbGVyLgo+Cj4g WWVhaCwgaW5kZWVkIHRoYXQgaXNuJ3QgZWFzeSB0byBnZXQgb24gZmlyc3QgZ2xhbmNlLgoKT0ss IEknbGwgZml4IHRoYXQuCgo+Cj4gUGxlYXNlIGNsZWFuIHRoYXQgdXAgYW5kIGFsc28gcmVtb3Zl IGFsbCB0aG9zZSBXQVJOX09OKCksIHdlIGRvbid0Cj4gd2FudCB0byBzcGFtIHRoZSBzeXN0ZW0g bG9nIHdpdGggYmFja3RyYWNlcyBsaWtlIHRoaXMuCgpJIGRpc2FncmVlLiBXaGVuIHlvdSBzZWUg dGhlIGJhY2t0cmFjZXMgZnJvbSBXQVJOX09OcyBpbgphbWRncHVfdm1fZ2V0X3B0LCBpdCBtZWFu cyB0aGUgZHJpdmVyIGlzIHRyeWluZyB0byB1cGRhdGUgYSBwYWdlIHRhYmxlCnRoYXQgaGFzbid0 IGJlZW4gYWxsb2NhdGVkLiBXaXRob3V0IHRob3NlIFdBUk5fT05zIHRoZXJlIGlzIGFic29sdXRl bHkKbm8gd2FybmluZyBvZiBhbnkga2luZCAtIGFtZGdwdV92bV91cGRhdGVfcHRlIGp1c3QgZmFp bHMgc2lsZW50bHkgKGl0J3MKYSB2b2lkIGZ1bmN0aW9uKS4KClRoZXJlZm9yZSBJIHdvdWxkbid0 IGNhbGwgdGhvc2Ugd2FybmluZ3Mgc3BhbS4gR2l2ZW4gdGhhdCB0aGUgVk0gUFQKYWxsb2NhdGlv biBjb2RlIGZvciBtdWx0aS1sZXZlbHMgaXMgbm9uLXRyaXZpYWwsIEkgdGhpbmsgdGhhdCdzIGEg Z29vZApzYW5pdHkgY2hlY2sgdG8gaGF2ZSBhbmQgcmVhbGx5IGhlbHBmdWwgdG8gc2VlIGluIGEg bG9nIHdoZW4gdXNlciByZXBvcnQKcmFuZG9tIFZNIGZhdWx0cy4KClJlZ2FyZHMsCiAgRmVsaXgK Cj4KPiBSZWdhcmRzLAo+IENocmlzdGlhbi4KPgo+PiBBbnl3YXksCj4+IFJldmlld2VkLWJ5OiBK dW53ZWkgWmhhbmcgPEplcnJ5LlpoYW5nQGFtZC5jb20+Cj4+Cj4+Cj4+IE9uIDAzLzI5LzIwMTcg MTE6MjQgQU0sIEt1ZWhsaW5nLCBGZWxpeCB3cm90ZToKPj4+IEhpIEplcnJ5LAo+Pj4KPj4+IExl dCBtZSBjbGFyaWZ5IG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHByb2JsZW0gYW5kIHRoZSBpbnRl bnRpb24gb2YKPj4+IHRoZSBmaXguCj4+Pgo+Pj4gQWRkcmVzcyByYW5nZSBwZXIgcGFnZTogNEtC Cj4+PiBBZGRyZXNzIHJhbmdlIHBlciBQVCAobGV2ZWwgMyk6IDJNQgo+Pj4gQWRkcmVzcyByYW5n ZSBwZXIgUEQgKGxldmVsIDIpOiAxR0IKPj4+IEFkZHJlc3MgcmFuZ2UgcGVyIFBEIChsZXZlbCAx KTogNTEyR0IKPj4+IEFkZHJlc3MgcmFuZ2UgcGVyIFBEIChsZXZlbCAwKTogMjU2VEIKPj4+Cj4+ PiBJbWFnaW5lIGZvciBleGFtcGxlIGEgbWFwcGluZyB0aGF0IHNwYW5zIG11bHRpcGxlIGxldmVs IDIgcGFnZQo+Pj4gZGlyZWN0b3JpZXMuIFNheQo+Pj4gZnJvbSAwLjVHQiB0byAyLjVHQi4KPj4+ Cj4+PiBBdCBsZXZlbCAwOgo+Pj4gZnJvbSA9IDAKPj4+IHRvID0gMAo+Pj4KPj4+IEF0IGxldmVs IDE6Cj4+PiBmcm9tID0gMAo+Pj4gdG8gPSAyCj4+Pgo+Pj4gU28gZm9yIGxldmVsIDIgYW1kZ3B1 X3ZtX2FsbG9jX2xldmVscyBnZXRzIGNhbGxlZCAzIHRpbWVzIChwdF9pZHggPQo+Pj4gWzAuLjJd KS4KPj4+IFdpdGhvdXQgbXkgY2hhbmdlLCBpdCBnZXRzIGNhbGxlZCB3aXRoIHRoZSBzYW1lIHNh ZGRyIGFuZCBlYWRkciAzCj4+PiB0aW1lcy4gU28gaXQKPj4+IGNhbGN1bGF0ZXMgdGhlIHNhbWUg ImZyb20iIGFuZCAidG8iIGVhY2ggdGltZToKPj4+IGZyb20gPSAyNTYgJSA1MTIgPSAyNTYKPj4+ IHRvID0gNzY3ICUgNTEyID0gMjU1Cj4+Pgo+Pj4gT2J2aW91c2x5IHRoYXQgZG9lc24ndCB3b3Jr LiBXaGF0IHdlIHJlYWxseSB3YW50IGlzIHRoaXMgKGZyb20uLnRvCj4+PiBpbiBsZXZlbCAyCj4+ PiB3aGVuIGNhbGxlZCBmb3IgcHRfaWR4IHZhbHVlcyBmcm9tIGxldmVsIDEpOgo+Pj4KPj4+IEZv ciBwdF9pZHg9MCB3ZSB3YW50IHRvIGZpbGwgdGhlIHNlY29uZCBoYWxmIG9mIHRoZSBsZXZlbCAy IHBhZ2UKPj4+IGRpcmVjdG9yeSB3aXRoCj4+PiBwYWdlIHRhYmxlczoKPj4+IGZyb20gPSAyNTYK Pj4+IHRvID0gNTExCj4+Pgo+Pj4gRm9yIHB0X2lkeD0xIHdlIG5lZWQgdG8gZmlsbCB0aGUgZW50 aXJlIGxldmVsIDIgcGFnZSBkaXJlY3Rvcmllcwo+Pj4gd2l0aCBwYWdlIHRhYmxlczoKPj4+IGZy b20gPSAwCj4+PiB0byA9IDUxMQo+Pj4KPj4+IEZvciBwdF9pZHg9MiB3ZSB3YW50IHRvIGZpbGwg dGhlIGZpcnN0IGhhbGYgb2YgdGhlIGxldmVsIDIgcGFnZQo+Pj4gZGlyZWN0b3J5IHdpdGgKPj4+ IHBhZ2UgdGFibGVzOgo+Pj4gZnJvbSA9IDAKPj4+IHRvID0gMjU1Cj4+Pgo+Pj4gVGhpcyBjcmVh dGVzIGEgY29udGlndW91cyByYW5nZSBvZiBwYWdlIHRhYmxlcyBhY3Jvc3MgdGhlIHRocmVlCj4+ PiBsZXZlbCAyIHBhZ2UKPj4+IGRpcmVjdG9yaWVzIHRoYXQgYXJlIHNwYW5uZWQgYnkgdGhlIGFs bG9jYXRpb24uIE15IGNoYW5nZSBhY2hpZXZlcwo+Pj4gdGhhdC4KPj4+Cj4+PiBJIHRoaW5rIHlv dSdyZSByaWdodCwgdGhlcmUgYXJlIHNvbWUgZXh0cmEgaGlnaCBiaXRzIGluIHNhZGRyIGFuZAo+ Pj4gZWFkZHIsIGJ1dAo+Pj4gdGhleSBnZXQgZGlzY2FyZGVkIGJ5IHRoZSBtb2R1bG8tZGl2aXNp b24gaW4gdGhlIG5leHQgcmVjdXJzaW9uCj4+PiBsZXZlbC4gRm9yCj4+PiBhZGRlZCBjbGFyaXR5 IHRoZSBtb2R1bG8gZGl2aXNpb24gKG9yIG1hc2tpbmcgb2YgaGlnaCBiaXRzKSBjb3VsZCBiZQo+ Pj4gbW92ZWQgdXAKPj4+IHRvIHRoZSBjYWxsZXIuCj4+Pgo+Pj4gUmVnYXJkcywKPj4+ICAgIEZl bGl4Cj4+Pgo+Pj4KPj4+IC0tIAo+Pj4gRiBlIGwgaSB4ICAgSyB1IGUgaCBsIGkgbiBnCj4+PiBT TVRTIFNvZnR3YXJlIERldmVsb3BtZW50IEVuZ2luZWVyIHwgVmVydGljYWwgV29ya3N0YXRpb24v Q29tcHV0ZQo+Pj4gMSBDb21tZXJjZSBWYWxsZXkgRHIuIEVhc3QsIE1hcmtoYW0sIE9OIEwzVCA3 WDYgQ2FuYWRhCj4+PiAoTykgKzEoMjg5KTY5NS0xNTk3Cj4+PiAgICAgXyAgICAgXyAgIF8gICBf X19fXyAgIF9fX19fCj4+PiAgICAvIFwgICB8IFwgLyB8IHwgIF8gIFwgIFwgXyAgfAo+Pj4gICAv IEEgXCAgfCBcTS8gfCB8IHxEKSApICAvfF98IHwKPj4+IC9fLyBcX1wgfF98IHxffCB8X19fX18v IHxfXy8gXHwgICBmYWNlYm9vay5jb20vQU1EIHwgYW1kLmNvbQo+Pj4gLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQo+Pj4KPj4+ICpGcm9tOiogWmhhbmcsIEplcnJ5Cj4+PiAqU2VudDoqIFR1ZXNkYXks IE1hcmNoIDI4LCAyMDE3IDEwOjU0OjAzIFBNCj4+PiAqVG86KiBLdWVobGluZywgRmVsaXg7IGFt ZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnOyBLb2VuaWcsCj4+PiBDaHJpc3RpYW47IFpob3Us Cj4+PiBEYXZpZChDaHVuTWluZykKPj4+ICpDYzoqIERldWNoZXIsIEFsZXhhbmRlcjsgUnVzc2Vs bCwgS2VudAo+Pj4gKlN1YmplY3Q6KiBSZTogW1BBVENIIDMvM10gZHJtL2FtZGdwdTogRml4IG11 bHRpLWxldmVsIHBhZ2UgdGFibGUKPj4+IGJ1Z3MgZm9yCj4+PiBsYXJnZSBCT3MKPj4+IE9uIDAz LzI5LzIwMTcgMDk6MDAgQU0sIEZlbGl4IEt1ZWhsaW5nIHdyb3RlOgo+Pj4+IEZpeCB0aGUgc3Rh cnQvZW5kIGFkZHJlc3MgY2FsY3VsYXRpb24gZm9yIGFkZHJlc3MgcmFuZ2VzIHRoYXQgc3Bhbgo+ Pj4+IG11bHRpcGxlIHBhZ2UgZGlyZWN0b3JpZXMgaW4gYW1kZ3B1X3ZtX2FsbG9jX2xldmVscy4K Pj4+Pgo+Pj4+IEFkZCBXQVJOX09OcyBpZiBwYWdlIHRhYmxlcyBhcmVuJ3QgZm91bmQuIE90aGVy d2lzZSB0aGUgcGFnZSB0YWJsZQo+Pj4+IHVwZGF0ZSB3b3VsZCBqdXN0IGZhaWwgc2lsZW50bHku Cj4+Pj4KPj4+PiBTaWduZWQtb2ZmLWJ5OiBGZWxpeCBLdWVobGluZyA8RmVsaXguS3VlaGxpbmdA YW1kLmNvbT4KPj4+PiAtLS0KPj4+PiAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdw dV92bS5jIHwgMTMgKysrKysrKysrKy0tLQo+Pj4+ICAgMSBmaWxlIGNoYW5nZWQsIDEwIGluc2Vy dGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCj4+Pj4KPj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmMKPj4+PiBiL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L2FtZGdwdV92bS5jCj4+Pj4gaW5kZXggODE4NzQ3Zi4uNDRhYTAzOSAxMDA2NDQKPj4+ PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdm0uYwo+Pj4+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92bS5jCj4+Pj4gQEAgLTI3OCw2ICsy NzgsOCBAQCBzdGF0aWMgaW50IGFtZGdwdV92bV9hbGxvY19sZXZlbHMoc3RydWN0Cj4+Pj4gYW1k Z3B1X2RldmljZSAqYWRldiwKPj4+PiAgICAgICAgZnJvbSA9IChzYWRkciA+PiBzaGlmdCkgJSBh bWRncHVfdm1fbnVtX2VudHJpZXMoYWRldiwgbGV2ZWwpOwo+Pj4+ICAgICAgICB0byA9IChlYWRk ciA+PiBzaGlmdCkgJSBhbWRncHVfdm1fbnVtX2VudHJpZXMoYWRldiwgbGV2ZWwpOwo+Pj4+Cj4+ Pj4gKyAgICAgV0FSTl9PTihmcm9tID4gdG8pOwo+Pj4+ICsKPj4+PiAgICAgICAgaWYgKHRvID4g cGFyZW50LT5sYXN0X2VudHJ5X3VzZWQpCj4+Pj4gICAgICAgICAgICAgICAgcGFyZW50LT5sYXN0 X2VudHJ5X3VzZWQgPSB0bzsKPj4+Pgo+Pj4+IEBAIC0zMTIsOCArMzE0LDExIEBAIHN0YXRpYyBp bnQgYW1kZ3B1X3ZtX2FsbG9jX2xldmVscyhzdHJ1Y3QKPj4+PiBhbWRncHVfZGV2aWNlICphZGV2 LAo+Pj4+ICAgICAgICAgICAgICAgIH0KPj4+Pgo+Pj4+ICAgICAgICAgICAgICAgIGlmIChsZXZl bCA8IGFkZXYtPnZtX21hbmFnZXIubnVtX2xldmVsKSB7Cj4+Pj4gLSAgICAgICAgICAgICAgICAg ICAgIHIgPSBhbWRncHVfdm1fYWxsb2NfbGV2ZWxzKGFkZXYsIHZtLCBlbnRyeSwKPj4+PiBzYWRk ciwKPj4+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZWFkZHIsIGxldmVsKTsKPj4+PiArICAgICAgICAgICAgICAgICAgICAgdWludDY0X3Qgc3ViX3Nh ZGRyID0gKHB0X2lkeCA9PSBmcm9tKSA/IHNhZGRyCj4+Pj4gOiAwOwo+Pj4+ICsgICAgICAgICAg ICAgICAgICAgICB1aW50NjRfdCBzdWJfZWFkZHIgPSAocHRfaWR4ID09IHRvKSA/IGVhZGRyIDoK Pj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKDEgPDwgc2hpZnQpIC0gMSk7Cj4+ Pj4gKyAgICAgICAgICAgICAgICAgICAgIHIgPSBhbWRncHVfdm1fYWxsb2NfbGV2ZWxzKGFkZXYs IHZtLCBlbnRyeSwKPj4+PiBzdWJfc2FkZHIsCj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHN1Yl9lYWRkciwgbGV2ZWwpOwo+Pj4KPj4+IERvIHlv dSBtZWFuIHRvIGNyZWF0ZSBhIGZ1bGwgc3ViLXB0IGlmIHB0X2lkeCAhPSBmcm9tIGFuZCAhPSB0 bz8KPj4+IEkgZGlkbid0IGNhdGNoIGl0IHVwIGNsZWFyLgo+Pj4KPj4+IEluIG15IHBlcnNwZWN0 aXZlLCB3ZSBtYXkgbmVlZCB0byBjbGVhciB0aGUgc2FkZHIgYW5kIGVhZGRyIHVwcGVyCj4+PiBs ZXZlbCBiaXQKPj4+IGJlZm9yZSBnb2luZyBvbiB0byBhbGxvY2F0ZSB0aGUgbmV4dCBsZXZlbCBQ VC4KPj4+IE90aGVyd2lzZSwgdGhlIG51bWJlciBvZiBuZXh0IFBUIGVudHJ5IHdpbGwgYmUgaW5j b3JyZWN0LCBtb3JlIHRoYW4KPj4+IG51bV9lbnRyaWVzCj4+PiBhcyB0aGUgdXBwZXIgbGV2ZWwg UFQgbnVtYmVyIGNhbGN1bGF0ZWQgaW4uCj4+Pgo+Pj4gZS5nLgo+Pj4gdGhlcmUgaXMgYSBhZGRy ZXNzIGNvbnRhaW5zCj4+PiBQRCArIFBUMSArIFBUMiArIFBUMwo+Pj4KPj4+IGZvciB0aGUgZmly c3Qgcm91bmQsIHdlIGNvdWxkIGdldCBjb3JyZWN0ICJmcm9tIiBhbmQgInRvIiBhZGRyZXNzCj4+ PiB3aXRoIHJpZ2h0Cj4+PiAic2hpZnQiKDMgYmxvY2tzKSwgdGhlbiB3YWxrIG92ZXIgdGhlIGFk ZHJlc3Mgc3BhY2UgaW4gUEQgcmFuZ2UuCj4+Pgo+Pj4gVGhlbiBmb3IgdGhlIDJuZCByb3VuZCwg d2UgY2Fubm90IGdldCB0aGUgZXhwZWN0ZWQgImZyb20iIGFuZCAidG8iCj4+PiBhZGRyZXNzIHdp dGgKPj4+ICJzaGlmdCIoMiBibG9ja3MpLCBhcyBpdCB3YWxrcyBvdmVyIHRoZSBhZGRyZXNzIHNw YWNlIGluIFBEICsgUFQxCj4+PiByYW5nZS4KPj4+IFdoaWxlIHdlJ2QgbGlrZSBpdCdzIGluIHJh bmdlIFBUMSBpbmRlZWQuCj4+Pgo+Pj4gVGhlIGZhdWx0IHdheSBnb2VzIG9uIHdpdGggbGF0ZXIg cm91bmQuCj4+Pgo+Pj4gUGVyaGFwcywgdGhhdCdzIHRoZSByb290IGNhdXNlIGFib3V0IHRoZSBp c3N1ZSB5b3UgZmFjZS4KPj4+Cj4+PiBKZXJyeS4KPj4+Cj4+Pj4gICAgICAgICAgICAgICAgICAg ICAgICBpZiAocikKPj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHI7 Cj4+Pj4gICAgICAgICAgICAgICAgfQo+Pj4+IEBAIC05NTcsOSArOTYyLDExIEBAIHN0YXRpYyBz dHJ1Y3QgYW1kZ3B1X2JvCj4+Pj4gKmFtZGdwdV92bV9nZXRfcHQoc3RydWN0IGFtZGdwdV9wdGVf dXBkYXRlX3BhcmFtcyAqcCwKPj4+PiAgICAgICAgICAgICAgICBlbnRyeSA9ICZlbnRyeS0+ZW50 cmllc1tpZHhdOwo+Pj4+ICAgICAgICB9Cj4+Pj4KPj4+PiAtICAgICBpZiAobGV2ZWwpCj4+Pj4g KyAgICAgaWYgKFdBUk5fT04obGV2ZWwpKQo+Pj4+ICAgICAgICAgICAgICAgIHJldHVybiBOVUxM Owo+Pj4+Cj4+Pj4gKyAgICAgV0FSTl9PTighZW50cnktPmJvKTsKPj4+PiArCj4+Pj4gICAgICAg IHJldHVybiBlbnRyeS0+Ym87Cj4+Pj4gICB9Cj4+Pj4KPj4+Pgo+PiBfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+PiBhbWQtZ2Z4IG1haWxpbmcgbGlzdAo+ PiBhbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+PiBodHRwczovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2FtZC1nZngKPgo+CgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwphbWQtZ2Z4IG1haWxpbmcgbGlzdAphbWQtZ2Z4 QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2FtZC1nZngK