From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 01/15] drm/vblank: Allow dynamic per-crtc max_vblank_count Date: Wed, 21 Nov 2018 16:19:36 +0100 Message-ID: <20181121151936.GU4266@phenom.ffwll.local> References: <20181112170000.27531-1-ville.syrjala@linux.intel.com> <20181112170000.27531-2-ville.syrjala@linux.intel.com> <20181121092727.GH4266@phenom.ffwll.local> <20181121113751.GA9144@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-ed1-x543.google.com (mail-ed1-x543.google.com [IPv6:2a00:1450:4864:20::543]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5586D6E60F for ; Wed, 21 Nov 2018 15:19:41 +0000 (UTC) Received: by mail-ed1-x543.google.com with SMTP id j6so5173194edp.9 for ; Wed, 21 Nov 2018 07:19:41 -0800 (PST) Content-Disposition: inline In-Reply-To: <20181121113751.GA9144@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Cc: stable@vger.kernel.org, intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gV2VkLCBOb3YgMjEsIDIwMTggYXQgMDE6Mzc6NTFQTSArMDIwMCwgVmlsbGUgU3lyasOkbMOk IHdyb3RlOgo+IE9uIFdlZCwgTm92IDIxLCAyMDE4IGF0IDEwOjI3OjI3QU0gKzAxMDAsIERhbmll bCBWZXR0ZXIgd3JvdGU6Cj4gPiBPbiBNb24sIE5vdiAxMiwgMjAxOCBhdCAwNjo1OTo0NVBNICsw MjAwLCBWaWxsZSBTeXJqYWxhIHdyb3RlOgo+ID4gPiBGcm9tOiBWaWxsZSBTeXJqw6Rsw6QgPHZp bGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgo+ID4gPiAKPiA+ID4gT24gaTk2NWdtIHdlIG5l ZWQgdG8gYWRqdXN0IG1heF92YmxhbmtfY291bnQgZHluYW1pY2FsbHkKPiA+ID4gZGVwZW5kaW5n IG9uIHdoZXRoZXIgdGhlIFRWIGVuY29kZXIgaXMgdXNlZCBvciBub3QuIFRvCj4gPiA+IHRoYXQg ZW5kIGFkZCBhIHBlci1jcnRjIG1heF92YmxhbmtfY291bnQgdGhhdCB0YWtlcwo+ID4gPiBwcmVj ZWRlbmNlIG92ZXIgaXRzIGRldmljZSB3aWRlIGNvdW50ZXJwYXJ0LiBUaGUgZHJpdmVyCj4gPiA+ IGNhbiBub3cgY2FsbCBkcm1fY3J0Y19zZXRfbWF4X3ZibGFua19jb3VudCgpIHRvIGNvbmZpZ3Vy ZQo+ID4gPiB0aGUgcGVyLWNydGMgdmFsdWUgYmVmb3JlIGNhbGxpbmcgZHJtX3ZibGFua19vbigp Lgo+ID4gPiAKPiA+ID4gQWxzbyBsb29rcyBsaWtlIHRoZXJlIHdhcyBzb21lIGRpc2N1c3Npb24g YWJvdXQgZXh5bm9zIG5lZWRpbmcKPiA+ID4gc2ltaWxhciB0cmVhdG1lbnQuCj4gPiA+IAo+ID4g PiBDYzogc3RhYmxlQHZnZXIua2VybmVsLm9yZwo+ID4gPiBDYzogSW5raSBEYWUgPGlua2kuZGFl QHNhbXN1bmcuY29tPgo+ID4gPiBDYzogRGFuaWVsIFZldHRlciA8ZGFuaWVsQGZmd2xsLmNoPgo+ ID4gPiBTaWduZWQtb2ZmLWJ5OiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXgu aW50ZWwuY29tPgo+ID4gPiAtLS0KPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmMg fCAzOSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0KPiA+ID4gIGluY2x1ZGUv ZHJtL2RybV92YmxhbmsuaCAgICAgfCAgOCArKysrKysrKwo+ID4gPiAgMiBmaWxlcyBjaGFuZ2Vk LCA0MyBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQo+ID4gPiAKPiA+ID4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3Zi bGFuay5jCj4gPiA+IGluZGV4IDk4ZTA5MTE3NTkyMS4uYzNhYmJkY2E4YWJhIDEwMDY0NAo+ID4g PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jCj4gPiA+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9kcm1fdmJsYW5rLmMKPiA+ID4gQEAgLTEwNSwxMyArMTA1LDIwIEBAIHN0YXRpYyB2 b2lkIHN0b3JlX3ZibGFuayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlw ZSwKPiA+ID4gIAl3cml0ZV9zZXF1bmxvY2soJnZibGFuay0+c2VxbG9jayk7Cj4gPiA+ICB9Cj4g PiA+ICAKPiA+ID4gK3N0YXRpYyB1MzIgZHJtX21heF92YmxhbmtfY291bnQoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUpCj4gPiA+ICt7Cj4gPiA+ICsJc3RydWN0IGRy bV92YmxhbmtfY3J0YyAqdmJsYW5rID0gJmRldi0+dmJsYW5rW3BpcGVdOwo+ID4gPiArCj4gPiA+ ICsJcmV0dXJuIHZibGFuay0+bWF4X3ZibGFua19jb3VudCA/OiBkZXYtPm1heF92YmxhbmtfY291 bnQ7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gIC8qCj4gPiA+ICAgKiAiTm8gaHcgY291bnRlciIg ZmFsbGJhY2sgaW1wbGVtZW50YXRpb24gb2YgLmdldF92YmxhbmtfY291bnRlcigpIGhvb2ssCj4g PiA+ICAgKiBpZiB0aGVyZSBpcyBubyB1c2VhYmxlIGhhcmR3YXJlIGZyYW1lIGNvdW50ZXIgYXZh aWxhYmxlLgo+ID4gPiAgICovCj4gPiA+ICBzdGF0aWMgdTMyIGRybV92Ymxhbmtfbm9faHdfY291 bnRlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlwZSkKPiA+ID4gIHsK PiA+ID4gLQlXQVJOX09OX09OQ0UoZGV2LT5tYXhfdmJsYW5rX2NvdW50ICE9IDApOwo+ID4gPiAr CVdBUk5fT05fT05DRShkcm1fbWF4X3ZibGFua19jb3VudChkZXYsIHBpcGUpICE9IDApOwo+ID4g PiAgCXJldHVybiAwOwo+ID4gPiAgfQo+ID4gPiAgCj4gPiA+IEBAIC0xOTgsNiArMjA1LDcgQEAg c3RhdGljIHZvaWQgZHJtX3VwZGF0ZV92YmxhbmtfY291bnQoc3RydWN0IGRybV9kZXZpY2UgKmRl diwgdW5zaWduZWQgaW50IHBpcGUsCj4gPiA+ICAJa3RpbWVfdCB0X3ZibGFuazsKPiA+ID4gIAlp bnQgY291bnQgPSBEUk1fVElNRVNUQU1QX01BWFJFVFJJRVM7Cj4gPiA+ICAJaW50IGZyYW1lZHVy X25zID0gdmJsYW5rLT5mcmFtZWR1cl9uczsKPiA+ID4gKwl1MzIgbWF4X3ZibGFua19jb3VudCA9 IGRybV9tYXhfdmJsYW5rX2NvdW50KGRldiwgcGlwZSk7Cj4gPiA+ICAKPiA+ID4gIAkvKgo+ID4g PiAgCSAqIEludGVycnVwdHMgd2VyZSBkaXNhYmxlZCBwcmlvciB0byB0aGlzIGNhbGwsIHNvIGRl YWwgd2l0aCBjb3VudGVyCj4gPiA+IEBAIC0yMTYsOSArMjI0LDkgQEAgc3RhdGljIHZvaWQgZHJt X3VwZGF0ZV92YmxhbmtfY291bnQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50 IHBpcGUsCj4gPiA+ICAJCXJjID0gZHJtX2dldF9sYXN0X3ZibHRpbWVzdGFtcChkZXYsIHBpcGUs ICZ0X3ZibGFuaywgaW5fdmJsYW5rX2lycSk7Cj4gPiA+ICAJfSB3aGlsZSAoY3VyX3ZibGFuayAh PSBfX2dldF92YmxhbmtfY291bnRlcihkZXYsIHBpcGUpICYmIC0tY291bnQgPiAwKTsKPiA+ID4g IAo+ID4gPiAtCWlmIChkZXYtPm1heF92YmxhbmtfY291bnQgIT0gMCkgewo+ID4gPiArCWlmICht YXhfdmJsYW5rX2NvdW50KSB7Cj4gPiA+ICAJCS8qIHRydXN0IHRoZSBodyBjb3VudGVyIHdoZW4g aXQncyBhcm91bmQgKi8KPiA+ID4gLQkJZGlmZiA9IChjdXJfdmJsYW5rIC0gdmJsYW5rLT5sYXN0 KSAmIGRldi0+bWF4X3ZibGFua19jb3VudDsKPiA+ID4gKwkJZGlmZiA9IChjdXJfdmJsYW5rIC0g dmJsYW5rLT5sYXN0KSAmIG1heF92YmxhbmtfY291bnQ7Cj4gPiA+ICAJfSBlbHNlIGlmIChyYyAm JiBmcmFtZWR1cl9ucykgewo+ID4gPiAgCQl1NjQgZGlmZl9ucyA9IGt0aW1lX3RvX25zKGt0aW1l X3N1Yih0X3ZibGFuaywgdmJsYW5rLT50aW1lKSk7Cj4gPiA+ICAKPiA+ID4gQEAgLTI1OCw3ICsy NjYsOCBAQCBzdGF0aWMgdm9pZCBkcm1fdXBkYXRlX3ZibGFua19jb3VudChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlwZSwKPiA+ID4gIAkJICAgICAgcGlwZSwgdmJsYW5r LT5jb3VudCwgZGlmZiwgY3VyX3ZibGFuaywgdmJsYW5rLT5sYXN0KTsKPiA+ID4gIAo+ID4gPiAg CWlmIChkaWZmID09IDApIHsKPiA+ID4gLQkJV0FSTl9PTl9PTkNFKGN1cl92YmxhbmsgIT0gdmJs YW5rLT5sYXN0KTsKPiA+ID4gKwkJV0FSTl9PTl9PTkNFKG1heF92YmxhbmtfY291bnQgJiYKPiA+ ID4gKwkJCSAgICAgY3VyX3ZibGFuayAhPSB2YmxhbmstPmxhc3QpOwo+ID4gCj4gPiBVbnJlbGF0 ZWQgYnVnZml4IGZvciB0aGlzIHdhcm5pbmc/IFNob3VsZCBiZSBhIHNlcGFyYXRlIHBhdGNoIEkg dGhpbmssIG9yCj4gPiBJJ20gbWlzc2luZyBzb21ldGhpbmcuCj4gCj4gQWgsIHllYWggdGhpcyB3 YXMgZHVlIHRvIGEgcXVpcmsgb2YgaTk2NWdtIGhhcmR3YXJlLiBUaGUgaHcgY291bnRlcgo+IGRv ZXMgd29yayB1bnRpbCB0aGUgZXhhY3QgcG9pbnQgd2hlbiB3ZSBlbmFibGUgVFYgZW5jb2Rlci4g VGh1cyB3ZQo+IHdpbGwgZ2V0IG5vbi16ZXJvIHZhbHVlcyB1cCB0byB0aGF0IHBvaW50LCBhbmQg c2luY2UgdGhlIFRWIGVuY29kZXIKPiBpc24ndCB5ZXQgdGhyb3R0bGluZyB0aGUgcGlwZSBpdCBw cmVzdW1hYmx5IHJ1bnMgYXQgdGhlIG92ZXJzYW1wbGUKPiBjbG9jayBzbyBvdXIgdGltZXN0YW1w IGJhc2VkIGVzdGltYXRlcyBjYW4gZ2l2ZSB1cyBhIGRpZmY9PTAgZXZlbgo+IHRob3VnaCB0aGUg cGlwZSBkaWQgaW5kZWVkIHBhc3MgYSB2YmxhbmsgYWxyZWFkeS4gSSBmb3Jnb3QgdG8KPiBub3Rl IHRoaXMgaW4gdGhlIGNvbW1pdCBtZXNzYWdlLgo+IAo+IEkgdGhpbmsgd2UgY2FuIGhhbmRsZSB0 aGlzIHRocmVlIHdheXM6Cj4gMS4gZG8gd2hhdCBJIGRvIGhlcmUgYW5kIGp1c3QgbGV0IHRoZSBt aXNtYXRjaCBzbGlwIHRocm91Z2gKPiAyLiBmb3JjZSBpOTE1X2dldF92YmxhbmtfY291bnRlcigp IHRvIHJldHVybiAwIGFsd2F5cyB3aGVuIHRoZQo+ICAgIFRWIGVuY29kZXIgaXMgZ29pbmcgdG8g YmUgdXNlZAo+IDMuIGRvbid0IGNhbGwgZHJtX2NydGNfc2V0X21heF92YmxhbmtfY291bnQoKSBi ZWZvcmUgZHJtX3ZibGFua19vbigpCj4gICAgYW5kIGluc3RlYWQgZGVsYXkgaXQgdW50aWwganVz dCBiZWZvcmUgd2UgZW5hYmxlIHRoZSBUViBlbmNvZGVyCj4gCj4gSSB0aGluayBvcHRpb24gMyBp cyBvdmVybHkgY29tcGxpY2F0ZWQgdG8gY29uc2lkZXIgc2VyaW91c2x5LiBTbwo+IG9wdGlvbiAx IG9yIG9wdGlvbiAyIGlzIHdoYXQgSSB0aGluayB3ZSBzaG91bGQgZG8uIEZvciB3aGF0ZXZlcgo+ IHJlYXNvbiBJIHdlbnQgd2l0aCBvcHRpb24gMSBoZXJlLCBidXQgbWF5YmUgb3B0aW9uIDIgaXMg YmV0dGVyCj4gc2luY2UgaXQgd291bGQgYmUgYWxsIGNvbnRhaW5lZCB3aXRoaW4gaTkxNS4uLgoK RGVsYXkgZHJtX2NydGNfdmJsYW5rX29uIHVudGlsIHRoZSB2YmxhbmsgaXMgc3RhYmxlPyBUaGF0 IHNlZW1zIGxpa2UgdGhlCnNlbWFudGljYWxseSBjbGVhbiBzb2x1dGlvbiB0byBtZSwgaW5zdGVh ZCBvZiBoYWNraW5nIGFyb3VuZCBpbiBjb3JlIGNvZGUKd2hlbiBkcml2ZXJzIGxlYWsgZ2FyYmFn ZSBvdXQgLi4uCgotRGFuaWVsCgoKPiA+IAo+ID4gPiAgCQlyZXR1cm47Cj4gPiA+ICAJfQo+ID4g PiAgCj4gPiA+IEBAIC0xMjA0LDYgKzEyMTMsMjggQEAgdm9pZCBkcm1fY3J0Y192YmxhbmtfcmVz ZXQoc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ID4gPiAgfQo+ID4gPiAgRVhQT1JUX1NZTUJPTChk cm1fY3J0Y192YmxhbmtfcmVzZXQpOwo+ID4gPiAgCj4gPiA+ICsvKioKPiA+ID4gKyAqIGRybV9j cnRjX3NldF9tYXhfdmJsYW5rX2NvdW50IC0gY29uZmlndXJlIHRoZSBodyBtYXggdmJsYW5rIGNv dW50ZXIgdmFsdWUKPiA+ID4gKyAqIEBjcnRjOiBDUlRDIGluIHF1ZXN0aW9uCj4gPiA+ICsgKiBA bWF4X3ZibGFua19jb3VudDogbWF4IGhhcmR3YXJlIHZibGFuayBjb3VudGVyIHZhbHVlCj4gPiA+ ICsgKgo+ID4gPiArICogVXBkYXRlIHRoZSBtYXhpbXVtIGhhcmR3YXJlIHZibGFuayBjb3VudGVy IHZhbHVlIGZvciBAY3J0Yy4gVXNlZnVsCj4gPiA+ICsgKiBmb3IgaGFyZHdhcmUgd2hlcmUgdGhl IG9wZXJhdGlvbiBvZiB0aGUgaGFyZHdhcmUgdmJsYW5rIGNvdW50ZXIKPiA+ID4gKyAqIGRlcGVu ZHMgb24gdGhlIGFjdGl2ZSBkaXNwbGF5IGNvbmZpZ3VyYXRpb24uCj4gPiA+ICsgKgo+ID4gPiAr ICogSWYgdXNlZCwgbXVzdCBiZSBjYWxsZWQgYmVmb3JlIGRybV92Ymxhbmtfb24oKS4KPiA+IAo+ ID4gSSB0aGluayB3ZSBzaG91bGQgY2hlY2sgdGhpcyBhdCBydW50aW1lIHdpdGggYSBXQVJOX09O LiBQbHVzIG1ha2UgdGhlCj4gPiBjb21tZW50IGhlcmUgYSBiaXQgY2xlYXJlciB0aGF0IHRoaXMg aXMgaW5kZWVkIGZvciBydW50aW1lIGFkanVzdGluZyBvZgo+ID4gdGhlIG1heF92YmxhbmtfY291 bnQsIGluIGNhc2VzIHdoZXJlIHRoYXQgZGVwZW5kcyB1cG9uIHRoZSBjb25uZWN0ZWQKPiA+IG91 dHB1dHMuCj4gCj4gU3VyZS4gSSdsbCB0cnkgdG8gcGltcCB1cCB0aGUgZG9jcyBhIGJpdC4KPiAK PiA+IAo+ID4gPiArICovCj4gPiA+ICt2b2lkIGRybV9jcnRjX3NldF9tYXhfdmJsYW5rX2NvdW50 KHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiA+ID4gKwkJCQkgICB1MzIgbWF4X3ZibGFua19jb3Vu dCkKPiA+ID4gK3sKPiA+ID4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2Owo+ ID4gPiArCXVuc2lnbmVkIGludCBwaXBlID0gZHJtX2NydGNfaW5kZXgoY3J0Yyk7Cj4gPiA+ICsJ c3RydWN0IGRybV92YmxhbmtfY3J0YyAqdmJsYW5rID0gJmRldi0+dmJsYW5rW3BpcGVdOwo+ID4g PiArCj4gPiA+ICsJdmJsYW5rLT5tYXhfdmJsYW5rX2NvdW50ID0gbWF4X3ZibGFua19jb3VudDsK PiA+ID4gK30KPiA+ID4gK0VYUE9SVF9TWU1CT0woZHJtX2NydGNfc2V0X21heF92YmxhbmtfY291 bnQpOwo+ID4gPiArCj4gPiA+ICAvKioKPiA+ID4gICAqIGRybV9jcnRjX3ZibGFua19vbiAtIGVu YWJsZSB2YmxhbmsgZXZlbnRzIG9uIGEgQ1JUQwo+ID4gPiAgICogQGNydGM6IENSVEMgaW4gcXVl c3Rpb24KPiA+ID4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV92YmxhbmsuaCBiL2luY2x1 ZGUvZHJtL2RybV92YmxhbmsuaAo+ID4gPiBpbmRleCA2YWQ5NjMwZDRmNDguLmVjYjJjZjk5MTNl MiAxMDA2NDQKPiA+ID4gLS0tIGEvaW5jbHVkZS9kcm0vZHJtX3ZibGFuay5oCj4gPiA+ICsrKyBi L2luY2x1ZGUvZHJtL2RybV92YmxhbmsuaAo+ID4gPiBAQCAtMTI4LDYgKzEyOCwxMiBAQCBzdHJ1 Y3QgZHJtX3ZibGFua19jcnRjIHsKPiA+ID4gIAkgKiBAbGFzdDogUHJvdGVjdGVkIGJ5ICZkcm1f ZGV2aWNlLnZibF9sb2NrLCB1c2VkIGZvciB3cmFwYXJvdW5kIGhhbmRsaW5nLgo+ID4gPiAgCSAq Lwo+ID4gPiAgCXUzMiBsYXN0Owo+ID4gPiArCS8qKgo+ID4gPiArCSAqIEBtYXhfdmJsYW5rX2Nv dW50OiBNYXhpbXVtIHZhbHVlIG9mIHRoZSBoYXJkd2FyZSB2YmxhbmsgY291bnRlci4KPiA+ID4g KwkgKiBJZiBub24temVybyB0aGlzIHRha2VzIHByZWNlZGVuY2Ugb3ZlciAmZHJtX2RldmljZS5t YXhfdmJsYW5rX2NvdW50Cj4gPiA+ICsJICogZm9yIHRoaXMgY3J0Yy4gT3RoZXJ3aXNlICZkcm1f ZGV2aWNlLm1heF92YmxhbmtfY291bnQgaXMgdXNlZC4KPiA+ID4gKwkgKi8KPiA+IAo+ID4gSSdk IGFkZCAiVGhpcyBzaG91bGQgYmUgc2V0IGJ5IGNhbGxpbmcgZHJtX2NydGNfc2V0X21heF92Ymxh bmtfY291bnQoKS4iCj4gPiAKPiA+IEFuZCBwbGVhc2UgYWxzbyBhZGQgYSBub3RlIHRvIHRoZSBr ZXJuZWxkb2Mgb2YgZHJtX2RyaXZlci5tYXhfdmJsYW5rX2NvdW50Cj4gPiBwb2ludGluZyBhdCAm ZHJtX3ZibGFua19jcnRjLm1heF92YmxhbmtfY291bnQgZm9yIHBlci1jcnRjIGxpbWl0cy4KPiAK PiBBY2suCj4gCj4gPiAKPiA+IEFzaWRlIGZyb20gdGhlIG5pdHMgbGd0bS4gSSB0aGluayBJJ2xs IHNraXAgbG9va2luZyBhdCB0aGUgVFYgb3V0IHN0dWZmCj4gPiB0aG91Z2ggLi4uCj4gCj4gOikK PiAKPiAtLSAKPiBWaWxsZSBTeXJqw6Rsw6QKPiBJbnRlbAoKLS0gCkRhbmllbCBWZXR0ZXIKU29m dHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCmh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBt YWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=