From mboxrd@z Thu Jan 1 00:00:00 1970 From: Laurent Pinchart Subject: Re: [PATCH 24/29] drm/omap: Factor out common mode validation code Date: Mon, 10 Dec 2018 10:27:05 +0200 Message-ID: <2794318.Kr71UN0F2L@avalon> References: <20181205150022.24200-1-laurent.pinchart@ideasonboard.com> <20181205150022.24200-25-laurent.pinchart@ideasonboard.com> <20181209221922.l2dvvxckv62zwwvm@earth.universe> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2C6C16E350 for ; Mon, 10 Dec 2018 08:26:26 +0000 (UTC) In-Reply-To: <20181209221922.l2dvvxckv62zwwvm@earth.universe> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Sebastian Reichel Cc: Tomi Valkeinen , dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org SGkgU2ViYXN0aWFuLAoKT24gTW9uZGF5LCAxMCBEZWNlbWJlciAyMDE4IDAwOjE5OjIyIEVFVCBT ZWJhc3RpYW4gUmVpY2hlbCB3cm90ZToKPiBIaSwKPiAKPiBPbiBXZWQsIERlYyAwNSwgMjAxOCBh dCAwNTowMDoxN1BNICswMjAwLCBMYXVyZW50IFBpbmNoYXJ0IHdyb3RlOgo+ID4gVGhlIGVuY29k ZXIgLmF0b21pY19jaGVjaygpIGFuZCBjb25uZWN0b3IgLm1vZGVfdmFsaWQoKSBvcGVyYXRpb25z IGJvdGgKPiA+IHdhbGsgdGhyb3VnaCB0aGUgZHNzIGRldmljZXMgaW4gdGhlIHBpcGVsaW5lIHRv IHZhbGlkYXRlIHRoZSBtb2RlLgo+ID4gRmFjdG9yIG91dCB0aGUgY29tbW9uIGNvZGUgaW4gYSBu ZXcgb21hcF9kcm1fY29ubmVjdG9yX21vZGVfZml4dXAoKQo+ID4gZnVuY3Rpb24uCj4gPiAKPiA+ IFNpZ25lZC1vZmYtYnk6IExhdXJlbnQgUGluY2hhcnQgPGxhdXJlbnQucGluY2hhcnRAaWRlYXNv bmJvYXJkLmNvbT4KPiA+IC0tLQo+IAo+IFRoaXMgaXMgYSBiaXQgdHJpY2t5IHRvIHJldmlldy4g SXQgd291bGQgcHJvYmFibHkgYmUgZWFzaWVyIHRvCj4gcmV2aWV3LCBpZiB0aGUgY2hhbmdlcyB3 ZXJlIHNwbGl0IGludG8gdHdvIGNvbW1pdHM6Cj4gCj4gMS4gaW50cm9kdWNlIGNvbW1vbiBmdW5j dGlvbgo+IDIuIG1vdmUgZHJtX2Rpc3BsYXlfbW9kZS92aWRlb21vZGUgY29udmVyc2lvbiBmdXJ0 aGVyIHVwIHRoZSBzdGFjawoKSSBhZ3JlZSB0aGF0IHRoZSBjb25uZWN0b3IgY2hhbmdlcyBhcmUg bm90IHZlcnkgbmljZWx5IGZvcm1hdHRlZC4gSSBob3dldmVyIApkb24ndCBsaWtlIHNwbGl0dGlu ZyBwYXRjaGVzLCBlc3BlY2lhbGx5IHdoZW4gc21hbGwsIGluIHN1Y2ggYSB3YXkuCgpPbmUgaXNz dWUgcHJldmVudGluZyBhIGJldHRlciBkaWZmIGZvcm1hdHRpbmcgaXMgdGhlIGNoYW5nZSBmcm9t IGludCB0byBlbnVtIApkcm1fbW9kZV9zdGF0dXMgZm9yIHRoZSBvbWFwX2Nvbm5lY3Rvcl9tb2Rl X3ZhbGlkKCkgZnVuY3Rpb24uIFdpdGhvdXQgdGhhdCAKY2hhbmdlLCB0aGUgcGF0Y2ggY2FuIGJl IGJldHRlciBmb3JtYXR0ZWQgd2l0aAoKZ2l0IGRpZmYgLS1hbmNob3JlZD0ic3RhdGljIGludCBv bWFwX2Nvbm5lY3Rvcl9tb2RlX3ZhbGlkIgoKSSBhZ3JlZSBpdCdzIHN0aWxsIG5vdCBwZXJmZWN0 LgoKSWYgeW91IHRoaW5rIHRoZSBhYm92ZSBjaGFuZ2UgaXMgd29ydGggaXQgSSdsbCBzdWJtaXQg YSBzcGxpdCB2ZXJzaW9uLCAKb3RoZXJ3aXNlIEknbGwgbGVhdmUgaXQgYXMgaXMuCgo+IEFueXdh eXM6Cj4gCj4gUmV2aWV3ZWQtYnk6IFNlYmFzdGlhbiBSZWljaGVsIDxzZWJhc3RpYW4ucmVpY2hl bEBjb2xsYWJvcmEuY29tPgo+IAo+IC0tIFNlYmFzdGlhbgo+IAo+ID4gIGRyaXZlcnMvZ3B1L2Ry bS9vbWFwZHJtL29tYXBfY29ubmVjdG9yLmMgfCA1NSArKysrKysrKysrKysrLS0tLS0tLS0tLS0K PiA+ICBkcml2ZXJzL2dwdS9kcm0vb21hcGRybS9vbWFwX2Nvbm5lY3Rvci5oIHwgIDUgKysrCj4g PiAgZHJpdmVycy9ncHUvZHJtL29tYXBkcm0vb21hcF9lbmNvZGVyLmMgICB8IDMwICsrKystLS0t LS0tLS0KPiA+ICAzIGZpbGVzIGNoYW5nZWQsIDQ1IGluc2VydGlvbnMoKyksIDQ1IGRlbGV0aW9u cygtKQo+ID4gCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL29tYXBkcm0vb21hcF9j b25uZWN0b3IuYwo+ID4gYi9kcml2ZXJzL2dwdS9kcm0vb21hcGRybS9vbWFwX2Nvbm5lY3Rvci5j IGluZGV4Cj4gPiBkZDFlMGYyZThmZmMuLjk4ODJhNGIxNDAyYiAxMDA2NDQKPiA+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9vbWFwZHJtL29tYXBfY29ubmVjdG9yLmMKPiA+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9vbWFwZHJtL29tYXBfY29ubmVjdG9yLmMKPiA+IEBAIC0yNDEsNTAgKzI0MSw1NyBA QCBzdGF0aWMgaW50IG9tYXBfY29ubmVjdG9yX2dldF9tb2RlcyhzdHJ1Y3QKPiA+IGRybV9jb25u ZWN0b3IgKmNvbm5lY3Rvcik+IAo+ID4gIAlyZXR1cm4gMDsKPiA+ICAKPiA+ICB9Cj4gPiAKPiA+ IC1zdGF0aWMgaW50IG9tYXBfY29ubmVjdG9yX21vZGVfdmFsaWQoc3RydWN0IGRybV9jb25uZWN0 b3IgKmNvbm5lY3RvciwKPiA+IC0JCQkJIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlKQo+ ID4gK2VudW0gZHJtX21vZGVfc3RhdHVzIG9tYXBfY29ubmVjdG9yX21vZGVfZml4dXAoc3RydWN0 IG9tYXBfZHNzX2RldmljZQo+ID4gKmRzc2RldiwgKwkJCQkJY29uc3Qgc3RydWN0IGRybV9kaXNw bGF5X21vZGUgKm1vZGUsCj4gPiArCQkJCQlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0 ZWRfbW9kZSkKPiA+IAo+ID4gIHsKPiA+IAo+ID4gLQlzdHJ1Y3Qgb21hcF9jb25uZWN0b3IgKm9t YXBfY29ubmVjdG9yID0gdG9fb21hcF9jb25uZWN0b3IoY29ubmVjdG9yKTsKPiA+IC0Jc3RydWN0 IG9tYXBfZHNzX2RldmljZSAqZHNzZGV2Owo+ID4gLQlzdHJ1Y3QgdmlkZW9tb2RlIHZtID0gezB9 Owo+ID4gLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY29ubmVjdG9yLT5kZXY7Cj4gPiAtCXN0 cnVjdCBkcm1fZGlzcGxheV9tb2RlICpuZXdfbW9kZTsKPiA+IC0JaW50IHIsIHJldCA9IE1PREVf QkFEOwo+ID4gKwlzdHJ1Y3QgdmlkZW9tb2RlIHZtID0geyAwIH07Cj4gPiArCWludCByZXQ7Cj4g PiAKPiA+ICAJZHJtX2Rpc3BsYXlfbW9kZV90b192aWRlb21vZGUobW9kZSwgJnZtKTsKPiA+IAo+ ID4gLQltb2RlLT52cmVmcmVzaCA9IGRybV9tb2RlX3ZyZWZyZXNoKG1vZGUpOwo+ID4gCj4gPiAt CWZvciAoZHNzZGV2ID0gb21hcF9jb25uZWN0b3ItPm91dHB1dDsgZHNzZGV2OyBkc3NkZXYgPSBk c3NkZXYtPm5leHQpIHsKPiA+ICsJZm9yICg7IGRzc2RldjsgZHNzZGV2ID0gZHNzZGV2LT5uZXh0 KSB7Cj4gPiAKPiA+ICAJCWlmICghZHNzZGV2LT5vcHMtPmNoZWNrX3RpbWluZ3MpCj4gPiAgCQkK PiA+ICAJCQljb250aW51ZTsKPiA+IAo+ID4gLQkJciA9IGRzc2Rldi0+b3BzLT5jaGVja190aW1p bmdzKGRzc2RldiwgJnZtKTsKPiA+IC0JCWlmIChyKQo+ID4gLQkJCWdvdG8gZG9uZTsKPiA+ICsJ CXJldCA9IGRzc2Rldi0+b3BzLT5jaGVja190aW1pbmdzKGRzc2RldiwgJnZtKTsKPiA+ICsJCWlm IChyZXQpCj4gPiArCQkJcmV0dXJuIE1PREVfQkFEOwo+ID4gCj4gPiAgCX0KPiA+IAo+ID4gLQkv KiBjaGVjayBpZiB2cmVmcmVzaCBpcyBzdGlsbCB2YWxpZCAqLwo+ID4gLQluZXdfbW9kZSA9IGRy bV9tb2RlX2R1cGxpY2F0ZShkZXYsIG1vZGUpOwo+ID4gLQlpZiAoIW5ld19tb2RlKQo+ID4gLQkJ cmV0dXJuIE1PREVfQkFEOwo+ID4gKwlpZiAoYWRqdXN0ZWRfbW9kZSkKPiA+ICsJCWRybV9kaXNw bGF5X21vZGVfZnJvbV92aWRlb21vZGUoJnZtLCBhZGp1c3RlZF9tb2RlKTsKPiA+IAo+ID4gLQlu ZXdfbW9kZS0+Y2xvY2sgPSB2bS5waXhlbGNsb2NrIC8gMTAwMDsKPiA+IC0JbmV3X21vZGUtPnZy ZWZyZXNoID0gMDsKPiA+IC0JaWYgKG1vZGUtPnZyZWZyZXNoID09IGRybV9tb2RlX3ZyZWZyZXNo KG5ld19tb2RlKSkKPiA+IC0JCXJldCA9IE1PREVfT0s7Cj4gPiAtCWRybV9tb2RlX2Rlc3Ryb3ko ZGV2LCBuZXdfbW9kZSk7Cj4gPiArCXJldHVybiBNT0RFX09LOwo+ID4gK30KPiA+ICsKPiA+ICtz dGF0aWMgZW51bSBkcm1fbW9kZV9zdGF0dXMgb21hcF9jb25uZWN0b3JfbW9kZV92YWxpZChzdHJ1 Y3QKPiA+IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwgKwkJCQkgc3RydWN0IGRybV9kaXNwbGF5 X21vZGUgKm1vZGUpCj4gPiArewo+ID4gKwlzdHJ1Y3Qgb21hcF9jb25uZWN0b3IgKm9tYXBfY29u bmVjdG9yID0gdG9fb21hcF9jb25uZWN0b3IoY29ubmVjdG9yKTsKPiA+ICsJc3RydWN0IGRybV9k aXNwbGF5X21vZGUgbmV3X21vZGUgPSB7IHsgMCB9IH07Cj4gPiArCWVudW0gZHJtX21vZGVfc3Rh dHVzIHN0YXR1czsKPiA+ICsKPiA+ICsJc3RhdHVzID0gb21hcF9jb25uZWN0b3JfbW9kZV9maXh1 cChvbWFwX2Nvbm5lY3Rvci0+b3V0cHV0LCBtb2RlLAo+ID4gKwkJCQkJICAgJm5ld19tb2RlKTsK PiA+ICsJaWYgKHN0YXR1cyAhPSBNT0RFX09LKQo+ID4gKwkJZ290byBkb25lOwo+ID4gKwo+ID4g KwkvKiBDaGVjayBpZiB2cmVmcmVzaCBpcyBzdGlsbCB2YWxpZC4gKi8KPiA+ICsJaWYgKGRybV9t b2RlX3ZyZWZyZXNoKG1vZGUpICE9IGRybV9tb2RlX3ZyZWZyZXNoKCZuZXdfbW9kZSkpCj4gPiAr CQlzdGF0dXMgPSBNT0RFX05PQ0xPQ0s7Cj4gPiAKPiA+ICBkb25lOgo+ID4gIAlEQkcoImNvbm5l Y3RvcjogbW9kZSAlczogIgo+ID4gIAkKPiA+ICAJCQkiJWQ6XCIlc1wiICVkICVkICVkICVkICVk ICVkICVkICVkICVkICVkIDB4JXggMHgleCIsCj4gPiAKPiA+IC0JCQkocmV0ID09IE1PREVfT0sp ID8gInZhbGlkIiA6ICJpbnZhbGlkIiwKPiA+ICsJCQkoc3RhdHVzID09IE1PREVfT0spID8gInZh bGlkIiA6ICJpbnZhbGlkIiwKPiA+IAo+ID4gIAkJCW1vZGUtPmJhc2UuaWQsIG1vZGUtPm5hbWUs IG1vZGUtPnZyZWZyZXNoLCBtb2RlLT5jbG9jaywKPiA+ICAJCQltb2RlLT5oZGlzcGxheSwgbW9k ZS0+aHN5bmNfc3RhcnQsCj4gPiAgCQkJbW9kZS0+aHN5bmNfZW5kLCBtb2RlLT5odG90YWwsCj4g PiAgCQkJbW9kZS0+dmRpc3BsYXksIG1vZGUtPnZzeW5jX3N0YXJ0LAo+ID4gIAkJCW1vZGUtPnZz eW5jX2VuZCwgbW9kZS0+dnRvdGFsLCBtb2RlLT50eXBlLCBtb2RlLT5mbGFncyk7Cj4gPiAKPiA+ IC0JcmV0dXJuIHJldDsKPiA+ICsJcmV0dXJuIHN0YXR1czsKPiA+IAo+ID4gIH0KPiA+ICAKPiA+ ICBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3JfZnVuY3Mgb21hcF9jb25uZWN0b3Jf ZnVuY3MgPSB7Cj4gPiAKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vb21hcGRybS9v bWFwX2Nvbm5lY3Rvci5oCj4gPiBiL2RyaXZlcnMvZ3B1L2RybS9vbWFwZHJtL29tYXBfY29ubmVj dG9yLmggaW5kZXgKPiA+IDRhMWRjZDBmMDMxYi4uNmI3ZDRkOTVlMzJiIDEwMDY0NAo+ID4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL29tYXBkcm0vb21hcF9jb25uZWN0b3IuaAo+ID4gKysrIGIvZHJp dmVycy9ncHUvZHJtL29tYXBkcm0vb21hcF9jb25uZWN0b3IuaAo+ID4gQEAgLTIyLDYgKzIyLDgg QEAKPiA+IAo+ID4gICNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgo+ID4gCj4gPiArZW51bSBkcm1f bW9kZV9zdGF0dXM7Cj4gPiArCj4gPiAKPiA+ICBzdHJ1Y3QgZHJtX2Nvbm5lY3RvcjsKPiA+ICBz dHJ1Y3QgZHJtX2RldmljZTsKPiA+ICBzdHJ1Y3QgZHJtX2VuY29kZXI7Cj4gPiAKPiA+IEBAIC0z NCw1ICszNiw4IEBAIHN0cnVjdCBkcm1fY29ubmVjdG9yICpvbWFwX2Nvbm5lY3Rvcl9pbml0KHN0 cnVjdAo+ID4gZHJtX2RldmljZSAqZGV2LD4gCj4gPiAgYm9vbCBvbWFwX2Nvbm5lY3Rvcl9nZXRf aGRtaV9tb2RlKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpOwo+ID4gIHZvaWQgb21h cF9jb25uZWN0b3JfZW5hYmxlX2hwZChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKTsK PiA+ICB2b2lkIG9tYXBfY29ubmVjdG9yX2Rpc2FibGVfaHBkKHN0cnVjdCBkcm1fY29ubmVjdG9y ICpjb25uZWN0b3IpOwo+ID4gCj4gPiArZW51bSBkcm1fbW9kZV9zdGF0dXMgb21hcF9jb25uZWN0 b3JfbW9kZV9maXh1cChzdHJ1Y3Qgb21hcF9kc3NfZGV2aWNlCj4gPiAqZHNzZGV2LCArCQkJCQlj b25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSwKPiA+ICsJCQkJCXN0cnVjdCBkcm1f ZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlKTsKPiA+IAo+ID4gICNlbmRpZiAvKiBfX09NQVBE Uk1fQ09OTkVDVE9SX0hfXyAqLwo+ID4gCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L29tYXBkcm0vb21hcF9lbmNvZGVyLmMKPiA+IGIvZHJpdmVycy9ncHUvZHJtL29tYXBkcm0vb21h cF9lbmNvZGVyLmMgaW5kZXggN2QwMWRmNmZhNzIzLi4wODY5NjMwODgyMDEKPiA+IDEwMDY0NAo+ ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL29tYXBkcm0vb21hcF9lbmNvZGVyLmMKPiA+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9vbWFwZHJtL29tYXBfZW5jb2Rlci5jCj4gPiBAQCAtMTk4LDI5ICsx OTgsMTcgQEAgc3RhdGljIGludCBvbWFwX2VuY29kZXJfYXRvbWljX2NoZWNrKHN0cnVjdAo+ID4g ZHJtX2VuY29kZXIgKmVuY29kZXIsPiAKPiA+ICAJCQkJICAgICBzdHJ1Y3QgZHJtX2Nvbm5lY3Rv cl9zdGF0ZSAqY29ubl9zdGF0ZSkKPiA+ICAKPiA+ICB7Cj4gPiAgCj4gPiAgCXN0cnVjdCBvbWFw X2VuY29kZXIgKm9tYXBfZW5jb2RlciA9IHRvX29tYXBfZW5jb2RlcihlbmNvZGVyKTsKPiA+IAo+ ID4gLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZW5jb2Rlci0+ZGV2Owo+ID4gLQlzdHJ1Y3Qg b21hcF9kc3NfZGV2aWNlICpkc3NkZXY7Cj4gPiAtCXN0cnVjdCB2aWRlb21vZGUgdm0gPSB7IDAg fTsKPiA+IC0JaW50IHJldDsKPiA+IC0KPiA+IC0JZHJtX2Rpc3BsYXlfbW9kZV90b192aWRlb21v ZGUoJmNydGNfc3RhdGUtPm1vZGUsICZ2bSk7Cj4gPiAtCj4gPiAtCWZvciAoZHNzZGV2ID0gb21h cF9lbmNvZGVyLT5vdXRwdXQ7IGRzc2RldjsgZHNzZGV2ID0gZHNzZGV2LT5uZXh0KSB7Cj4gPiAt CQlpZiAoIWRzc2Rldi0+b3BzLT5jaGVja190aW1pbmdzKQo+ID4gLQkJCWNvbnRpbnVlOwo+ID4g LQo+ID4gLQkJcmV0ID0gZHNzZGV2LT5vcHMtPmNoZWNrX3RpbWluZ3MoZHNzZGV2LCAmdm0pOwo+ ID4gLQkJaWYgKHJldCkKPiA+IC0JCQlnb3RvIGRvbmU7Cj4gPiArCWVudW0gZHJtX21vZGVfc3Rh dHVzIHN0YXR1czsKPiA+ICsKPiA+ICsJc3RhdHVzID0gb21hcF9jb25uZWN0b3JfbW9kZV9maXh1 cChvbWFwX2VuY29kZXItPm91dHB1dCwKPiA+ICsJCQkJCSAgICZjcnRjX3N0YXRlLT5tb2RlLAo+ ID4gKwkJCQkJICAgJmNydGNfc3RhdGUtPmFkanVzdGVkX21vZGUpOwo+ID4gKwlpZiAoc3RhdHVz ICE9IE1PREVfT0spIHsKPiA+ICsJCWRldl9lcnIoZW5jb2Rlci0+ZGV2LT5kZXYsICJpbnZhbGlk IHRpbWluZ3M6ICVkXG4iLCBzdGF0dXMpOwo+ID4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gPiAKPiA+ ICAJfQo+ID4gCj4gPiAtCWRybV9kaXNwbGF5X21vZGVfZnJvbV92aWRlb21vZGUoJnZtLCAmY3J0 Y19zdGF0ZS0+YWRqdXN0ZWRfbW9kZSk7Cj4gPiAtCj4gPiAtZG9uZToKPiA+IC0JaWYgKHJldCkK PiA+IC0JCWRldl9lcnIoZGV2LT5kZXYsICJpbnZhbGlkIHRpbWluZ3M6ICVkXG4iLCByZXQpOwo+ ID4gLQo+ID4gLQlyZXR1cm4gcmV0Owo+ID4gKwlyZXR1cm4gMDsKPiA+IAo+ID4gIH0KPiA+ICAK PiA+ICBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9lbmNvZGVyX2hlbHBlcl9mdW5jcyBvbWFwX2Vu Y29kZXJfaGVscGVyX2Z1bmNzID0KPiA+ICB7CgoKLS0gClJlZ2FyZHMsCgpMYXVyZW50IFBpbmNo YXJ0CgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRy aS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=