From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH v2 2/5] drm/edid: Abstract away cea_edid_modes[] Date: Fri, 19 Jul 2019 14:57:51 +0300 Message-ID: <20190719115751.GH5942@intel.com> References: <20190711103234.6294-1-ville.syrjala@linux.intel.com> <20190711103234.6294-3-ville.syrjala@linux.intel.com> <147a2de3-1881-2c7d-7f8a-7205ee26cfbb@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <147a2de3-1881-2c7d-7f8a-7205ee26cfbb@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: "Sharma, Shashank" Cc: Manasi Navare , Hans Verkuil , intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gRnJpLCBKdWwgMTksIDIwMTkgYXQgMDI6MTU6MzRQTSArMDUzMCwgU2hhcm1hLCBTaGFzaGFu ayB3cm90ZToKPiBIaSBWaWxsZSwKPiAKPiBPbiA3LzExLzIwMTkgNDowMiBQTSwgVmlsbGUgU3ly amFsYSB3cm90ZToKPiA+IEZyb206IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51 eC5pbnRlbC5jb20+Cj4gPgo+ID4gV2UncmUgZ29pbmcgdG8gbmVlZCB0d28gY2VhIG1vZGUgdGFi bGVzIChvbiBmb3IgVklDcyA8IDEyOCwKPiA+IGFub3RoZXIgb25lIGZvciBWSUNzID49IDE5Myku IFRvIHRoYXQgZW5kIHJlcGxhY2UgdGhlIGRpcmVjdAo+ID4gZWRpZF9jZWFfbW9kZXNbXSBsb29r dXBzIHdpdGggYSBmdW5jdGlvbiBjYWxsLiBBbmQgd2UnbGwgcmVuYW1lCj4gPiB0aGUgYXJyYXkg dG8gZWRpZF9jZWFfbW9kZXNfMFtdIHRvIGluZGljYXRoZSBob3cgaXQncyB0byBiZQo+ID4gaW5k ZXhlZC4KPiAKPiBJIGFtIG5vdCB2ZXJ5IHN1cmUgaWYgaXRzIGEgZ29vZCBpZGVhIHRvIHNwbGl0 IGludG8gdHdvIGRpZmZlcmVudCAKPiB0YWJsZXMsIG9yIGFkZGluZyBtdWx0aXBsZSBkdW1teSBw bGFjZWhvbGRlciBtb2RlcyAobGlrZSBWSUMgMCkgZm9yIHRoZSAKPiBtb2RlcyBub3QgYXZhaWxh YmxlLiBJdCBjb3VsZCBnaXZlIHVzIGNvbnRpbnVpdHkgYW5kIHdlIGNhbiBrZWVwIG9uIAo+IHVz aW5nIGFsbW9zdCB0aGUgc2FtZSBmdW5jdGlvbnMuIFdlIGNhbiBqdXN0IGFkZCBzb21lIGNoZWNr cyBmb3IgcmFuZ2UgCj4gYmV0d2VlbiBWSUMgMTI4IC0gMTkzLiBKdXN0IGEgdGhvdWdodC4KClRo ZXNlIHRoaW5ncyB0YWtlIDIwOCBieXRlcyBlYWNoLiBCbG93aW5nIGF3YXkgNDAgS2lCIGZvciB6 ZXJvZXMKc2VlbXMgcXVpdGUgc2lsbHkuIEFuZCB3aXRoIHRoZSBhYnN0cmFjdGlvbiBpbiBwbGFj ZSB5b3UgZG9uJ3QgaGF2ZQp0byB3b3JyeSBhYm91dCBzdWNoIGltcGxlbWVudGF0aW9uIGRldGFp bHMgYXQgYWxsLgoKPiAKPiAtIFNoYXNoYW5rCj4gCj4gPiBDYzogSGFucyBWZXJrdWlsIDxoYW5z dmVya0BjaXNjby5jb20+Cj4gPiBDYzogU2hhc2hhbmsgU2hhcm1hIDxzaGFzaGFuay5zaGFybWFA aW50ZWwuY29tPgo+ID4gU2lnbmVkLW9mZi1ieTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJq YWxhQGxpbnV4LmludGVsLmNvbT4KPiA+IC0tLQo+ID4gICBkcml2ZXJzL2dwdS9kcm0vZHJtX2Vk aWQuYyB8IDgwICsrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tCj4gPiAgIDEg ZmlsZSBjaGFuZ2VkLCA1OCBpbnNlcnRpb25zKCspLCAyMiBkZWxldGlvbnMoLSkKPiA+Cj4gPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9lZGlkLmMgYi9kcml2ZXJzL2dwdS9kcm0v ZHJtX2VkaWQuYwo+ID4gaW5kZXggYmNkOWVkNTY5ZDY0Li43MDNkMmJjMjZmZDkgMTAwNjQ0Cj4g PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2VkaWQuYwo+ID4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2RybV9lZGlkLmMKPiA+IEBAIC03MDcsMTIgKzcwNywxMSBAQCBzdGF0aWMgY29uc3Qgc3Ry dWN0IG1pbmltb2RlIGV4dHJhX21vZGVzW10gPSB7Cj4gPiAgIH07Cj4gPiAgIAo+ID4gICAvKgo+ ID4gLSAqIFByb2JhYmx5IHRha2VuIGZyb20gQ0VBLTg2MSBzcGVjLgo+ID4gLSAqIFRoaXMgdGFi bGUgaXMgY29udmVydGVkIGZyb20geG9yZydzIGh3L3hmcmVlODYvbW9kZXMveGY4NkVkaWRNb2Rl cy5jLgo+ID4gKyAqIEZyb20gQ0VBL0NUQS04NjEgc3BlYy4KPiA+ICAgICoKPiA+IC0gKiBJbmRl eCB1c2luZyB0aGUgVklDLgo+ID4gKyAqIEluZGV4IHdpdGggVklDLgo+ID4gICAgKi8KPiA+IC1z dGF0aWMgY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgZWRpZF9jZWFfbW9kZXNbXSA9IHsK PiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgZWRpZF9jZWFfbW9kZXNf MFtdID0gewo+ID4gICAJLyogMCAtIGR1bW15LCBWSUNzIHN0YXJ0IGF0IDEgKi8KPiA+ICAgCXsg fSwKPiA+ICAgCS8qIDEgLSA2NDB4NDgwQDYwSHogNDozICovCj4gPiBAQCAtMzA2Nyw2ICszMDY2 LDI1IEBAIHN0YXRpYyB1OCAqZHJtX2ZpbmRfY2VhX2V4dGVuc2lvbihjb25zdCBzdHJ1Y3QgZWRp ZCAqZWRpZCkKPiA+ICAgCXJldHVybiBjZWE7Cj4gPiAgIH0KPiA+ICAgCj4gPiArc3RhdGljIGNv bnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICpjZWFfbW9kZV9mb3JfdmljKHU4IHZpYykKPiA+ ICt7Cj4gPiArCWlmICghdmljKQo+ID4gKwkJcmV0dXJuIE5VTEw7Cj4gPiArCWlmICh2aWMgPCBB UlJBWV9TSVpFKGVkaWRfY2VhX21vZGVzXzApKQo+ID4gKwkJcmV0dXJuICZlZGlkX2NlYV9tb2Rl c18wW3ZpY107Cj4gPiArCXJldHVybiBOVUxMOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgdTgg Y2VhX251bV92aWNzKHZvaWQpCj4gPiArewo+ID4gKwlyZXR1cm4gQVJSQVlfU0laRShlZGlkX2Nl YV9tb2Rlc18wKTsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIHU4IGNlYV9uZXh0X3ZpYyh1OCB2 aWMpCj4gPiArewo+ID4gKwlyZXR1cm4gdmljICsgMTsKPiA+ICt9Cj4gPiArCj4gPiAgIC8qCj4g PiAgICAqIENhbGN1bGF0ZSB0aGUgYWx0ZXJuYXRlIGNsb2NrIGZvciB0aGUgQ0VBIG1vZGUKPiA+ ICAgICogKDYwSHogdnMuIDU5Ljk0SHogZXRjLikKPiA+IEBAIC0zMTA0LDE0ICszMTIyLDE0IEBA IGNlYV9tb2RlX2FsdGVybmF0ZV90aW1pbmdzKHU4IHZpYywgc3RydWN0IGRybV9kaXNwbGF5X21v ZGUgKm1vZGUpCj4gPiAgIAkgKiBnZXQgdGhlIG90aGVyIHZhcmlhbnRzIGJ5IHNpbXBseSBpbmNy ZWFzaW5nIHRoZQo+ID4gICAJICogdmVydGljYWwgZnJvbnQgcG9yY2ggbGVuZ3RoLgo+ID4gICAJ ICovCj4gPiAtCUJVSUxEX0JVR19PTihlZGlkX2NlYV9tb2Rlc1s4XS52dG90YWwgIT0gMjYyIHx8 Cj4gPiAtCQkgICAgIGVkaWRfY2VhX21vZGVzWzldLnZ0b3RhbCAhPSAyNjIgfHwKPiA+IC0JCSAg ICAgZWRpZF9jZWFfbW9kZXNbMTJdLnZ0b3RhbCAhPSAyNjIgfHwKPiA+IC0JCSAgICAgZWRpZF9j ZWFfbW9kZXNbMTNdLnZ0b3RhbCAhPSAyNjIgfHwKPiA+IC0JCSAgICAgZWRpZF9jZWFfbW9kZXNb MjNdLnZ0b3RhbCAhPSAzMTIgfHwKPiA+IC0JCSAgICAgZWRpZF9jZWFfbW9kZXNbMjRdLnZ0b3Rh bCAhPSAzMTIgfHwKPiA+IC0JCSAgICAgZWRpZF9jZWFfbW9kZXNbMjddLnZ0b3RhbCAhPSAzMTIg fHwKPiA+IC0JCSAgICAgZWRpZF9jZWFfbW9kZXNbMjhdLnZ0b3RhbCAhPSAzMTIpOwo+ID4gKwlC VUlMRF9CVUdfT04oY2VhX21vZGVfZm9yX3ZpYyg4KS0+dnRvdGFsICE9IDI2MiB8fAo+ID4gKwkJ ICAgICBjZWFfbW9kZV9mb3JfdmljKDkpLT52dG90YWwgIT0gMjYyIHx8Cj4gPiArCQkgICAgIGNl YV9tb2RlX2Zvcl92aWMoMTIpLT52dG90YWwgIT0gMjYyIHx8Cj4gPiArCQkgICAgIGNlYV9tb2Rl X2Zvcl92aWMoMTMpLT52dG90YWwgIT0gMjYyIHx8Cj4gPiArCQkgICAgIGNlYV9tb2RlX2Zvcl92 aWMoMjMpLT52dG90YWwgIT0gMzEyIHx8Cj4gPiArCQkgICAgIGNlYV9tb2RlX2Zvcl92aWMoMjQp LT52dG90YWwgIT0gMzEyIHx8Cj4gPiArCQkgICAgIGNlYV9tb2RlX2Zvcl92aWMoMjcpLT52dG90 YWwgIT0gMzEyIHx8Cj4gPiArCQkgICAgIGNlYV9tb2RlX2Zvcl92aWMoMjgpLT52dG90YWwgIT0g MzEyKTsKPiA+ICAgCj4gPiAgIAlpZiAoKCh2aWMgPT0gOCB8fCB2aWMgPT0gOSB8fAo+ID4gICAJ ICAgICAgdmljID09IDEyIHx8IHZpYyA9PSAxMykgJiYgbW9kZS0+dnRvdGFsIDwgMjYzKSB8fAo+ ID4gQEAgLTMxMzksMTAgKzMxNTcsMTYgQEAgc3RhdGljIHU4IGRybV9tYXRjaF9jZWFfbW9kZV9j bG9ja190b2xlcmFuY2UoY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKnRvX20KPiA+ICAg CWlmICh0b19tYXRjaC0+cGljdHVyZV9hc3BlY3RfcmF0aW8pCj4gPiAgIAkJbWF0Y2hfZmxhZ3Mg fD0gRFJNX01PREVfTUFUQ0hfQVNQRUNUX1JBVElPOwo+ID4gICAKPiA+IC0JZm9yICh2aWMgPSAx OyB2aWMgPCBBUlJBWV9TSVpFKGVkaWRfY2VhX21vZGVzKTsgdmljKyspIHsKPiA+IC0JCXN0cnVj dCBkcm1fZGlzcGxheV9tb2RlIGNlYV9tb2RlID0gZWRpZF9jZWFfbW9kZXNbdmljXTsKPiA+ICsJ Zm9yICh2aWMgPSAxOyB2aWMgPCBjZWFfbnVtX3ZpY3MoKTsgdmljID0gY2VhX25leHRfdmljKHZp YykpIHsKPiA+ICsJCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlID0gY2VhX21v ZGVfZm9yX3ZpYyh2aWMpOwo+ID4gKwkJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgY2VhX21vZGU7 Cj4gPiAgIAkJdW5zaWduZWQgaW50IGNsb2NrMSwgY2xvY2syOwo+ID4gICAKPiA+ICsJCWlmICgh bW9kZSkKPiA+ICsJCQljb250aW51ZTsKPiA+ICsKPiA+ICsJCWNlYV9tb2RlID0gKm1vZGU7Cj4g PiArCj4gPiAgIAkJLyogQ2hlY2sgYm90aCA2MEh6IGFuZCA1OS45NEh6ICovCj4gPiAgIAkJY2xv Y2sxID0gY2VhX21vZGUuY2xvY2s7Cj4gPiAgIAkJY2xvY2syID0gY2VhX21vZGVfYWx0ZXJuYXRl X2Nsb2NrKCZjZWFfbW9kZSk7Cj4gPiBAQCAtMzE3OCwxMCArMzIwMiwxNiBAQCB1OCBkcm1fbWF0 Y2hfY2VhX21vZGUoY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKnRvX21hdGNoKQo+ID4g ICAJaWYgKHRvX21hdGNoLT5waWN0dXJlX2FzcGVjdF9yYXRpbykKPiA+ICAgCQltYXRjaF9mbGFn cyB8PSBEUk1fTU9ERV9NQVRDSF9BU1BFQ1RfUkFUSU87Cj4gPiAgIAo+ID4gLQlmb3IgKHZpYyA9 IDE7IHZpYyA8IEFSUkFZX1NJWkUoZWRpZF9jZWFfbW9kZXMpOyB2aWMrKykgewo+ID4gLQkJc3Ry dWN0IGRybV9kaXNwbGF5X21vZGUgY2VhX21vZGUgPSBlZGlkX2NlYV9tb2Rlc1t2aWNdOwo+ID4g Kwlmb3IgKHZpYyA9IDE7IHZpYyA8IGNlYV9udW1fdmljcygpOyB2aWMgPSBjZWFfbmV4dF92aWMo dmljKSkgewo+ID4gKwkJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUgPSBjZWFf bW9kZV9mb3JfdmljKHZpYyk7Cj4gPiArCQlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSBjZWFfbW9k ZTsKPiA+ICAgCQl1bnNpZ25lZCBpbnQgY2xvY2sxLCBjbG9jazI7Cj4gPiAgIAo+ID4gKwkJaWYg KCFtb2RlKQo+ID4gKwkJCWNvbnRpbnVlOwo+ID4gKwo+ID4gKwkJY2VhX21vZGUgPSAqbW9kZTsK PiA+ICsKPiA+ICAgCQkvKiBDaGVjayBib3RoIDYwSHogYW5kIDU5Ljk0SHogKi8KPiA+ICAgCQlj bG9jazEgPSBjZWFfbW9kZS5jbG9jazsKPiA+ICAgCQljbG9jazIgPSBjZWFfbW9kZV9hbHRlcm5h dGVfY2xvY2soJmNlYV9tb2RlKTsKPiA+IEBAIC0zMjAyLDcgKzMyMzIsNyBAQCBFWFBPUlRfU1lN Qk9MKGRybV9tYXRjaF9jZWFfbW9kZSk7Cj4gPiAgIAo+ID4gICBzdGF0aWMgYm9vbCBkcm1fdmFs aWRfY2VhX3ZpYyh1OCB2aWMpCj4gPiAgIHsKPiA+IC0JcmV0dXJuIHZpYyA+IDAgJiYgdmljIDwg QVJSQVlfU0laRShlZGlkX2NlYV9tb2Rlcyk7Cj4gPiArCXJldHVybiBjZWFfbW9kZV9mb3Jfdmlj KHZpYykgIT0gTlVMTDsKPiA+ICAgfQo+ID4gICAKPiA+ICAgLyoqCj4gPiBAQCAtMzIxNCw3ICsz MjQ0LDEzIEBAIHN0YXRpYyBib29sIGRybV92YWxpZF9jZWFfdmljKHU4IHZpYykKPiA+ICAgICov Cj4gPiAgIGVudW0gaGRtaV9waWN0dXJlX2FzcGVjdCBkcm1fZ2V0X2NlYV9hc3BlY3RfcmF0aW8o Y29uc3QgdTggdmlkZW9fY29kZSkKPiA+ICAgewo+ID4gLQlyZXR1cm4gZWRpZF9jZWFfbW9kZXNb dmlkZW9fY29kZV0ucGljdHVyZV9hc3BlY3RfcmF0aW87Cj4gPiArCWNvbnN0IHN0cnVjdCBkcm1f ZGlzcGxheV9tb2RlICptb2RlOwo+ID4gKwo+ID4gKwltb2RlID0gY2VhX21vZGVfZm9yX3ZpYyh2 aWRlb19jb2RlKTsKPiA+ICsJaWYgKG1vZGUpCj4gPiArCQlyZXR1cm4gbW9kZS0+cGljdHVyZV9h c3BlY3RfcmF0aW87Cj4gPiArCj4gPiArCXJldHVybiBIRE1JX1BJQ1RVUkVfQVNQRUNUX05PTkU7 Cj4gPiAgIH0KPiA+ICAgRVhQT1JUX1NZTUJPTChkcm1fZ2V0X2NlYV9hc3BlY3RfcmF0aW8pOwo+ ID4gICAKPiA+IEBAIC0zMzIzLDcgKzMzNTksNyBAQCBhZGRfYWx0ZXJuYXRlX2NlYV9tb2Rlcyhz dHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLCBzdHJ1Y3QgZWRpZCAqZWRpZCkKPiA+ICAg CQl1bnNpZ25lZCBpbnQgY2xvY2sxLCBjbG9jazI7Cj4gPiAgIAo+ID4gICAJCWlmIChkcm1fdmFs aWRfY2VhX3ZpYyh2aWMpKSB7Cj4gPiAtCQkJY2VhX21vZGUgPSAmZWRpZF9jZWFfbW9kZXNbdmlj XTsKPiA+ICsJCQljZWFfbW9kZSA9IGNlYV9tb2RlX2Zvcl92aWModmljKTsKPiA+ICAgCQkJY2xv Y2syID0gY2VhX21vZGVfYWx0ZXJuYXRlX2Nsb2NrKGNlYV9tb2RlKTsKPiA+ICAgCQl9IGVsc2Ug ewo+ID4gICAJCQl2aWMgPSBkcm1fbWF0Y2hfaGRtaV9tb2RlKG1vZGUpOwo+ID4gQEAgLTMzOTgs NyArMzQzNCw3IEBAIGRybV9kaXNwbGF5X21vZGVfZnJvbV92aWNfaW5kZXgoc3RydWN0IGRybV9j b25uZWN0b3IgKmNvbm5lY3RvciwKPiA+ICAgCWlmICghZHJtX3ZhbGlkX2NlYV92aWModmljKSkK PiA+ICAgCQlyZXR1cm4gTlVMTDsKPiA+ICAgCj4gPiAtCW5ld21vZGUgPSBkcm1fbW9kZV9kdXBs aWNhdGUoZGV2LCAmZWRpZF9jZWFfbW9kZXNbdmljXSk7Cj4gPiArCW5ld21vZGUgPSBkcm1fbW9k ZV9kdXBsaWNhdGUoZGV2LCBjZWFfbW9kZV9mb3JfdmljKHZpYykpOwo+ID4gICAJaWYgKCFuZXdt b2RlKQo+ID4gICAJCXJldHVybiBOVUxMOwo+ID4gICAKPiA+IEBAIC0zNDMyLDcgKzM0NjgsNyBA QCBzdGF0aWMgaW50IGRvX3k0MjB2ZGJfbW9kZXMoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5l Y3RvciwKPiA+ICAgCQlpZiAoIWRybV92YWxpZF9jZWFfdmljKHZpYykpCj4gPiAgIAkJCWNvbnRp bnVlOwo+ID4gICAKPiA+IC0JCW5ld21vZGUgPSBkcm1fbW9kZV9kdXBsaWNhdGUoZGV2LCAmZWRp ZF9jZWFfbW9kZXNbdmljXSk7Cj4gPiArCQluZXdtb2RlID0gZHJtX21vZGVfZHVwbGljYXRlKGRl diwgY2VhX21vZGVfZm9yX3ZpYyh2aWMpKTsKPiA+ICAgCQlpZiAoIW5ld21vZGUpCj4gPiAgIAkJ CWJyZWFrOwo+ID4gICAJCWJpdG1hcF9zZXQoaGRtaS0+eTQyMF92ZGJfbW9kZXMsIHZpYywgMSk7 Cj4gPiBAQCAtNDAwMSw3ICs0MDM3LDcgQEAgc3RhdGljIHZvaWQgZml4dXBfZGV0YWlsZWRfY2Vh X21vZGVfY2xvY2soc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUpCj4gPiAgIAl2aWMgPSBk cm1fbWF0Y2hfY2VhX21vZGVfY2xvY2tfdG9sZXJhbmNlKG1vZGUsIDUpOwo+ID4gICAJaWYgKGRy bV92YWxpZF9jZWFfdmljKHZpYykpIHsKPiA+ICAgCQl0eXBlID0gIkNFQSI7Cj4gPiAtCQljZWFf bW9kZSA9ICZlZGlkX2NlYV9tb2Rlc1t2aWNdOwo+ID4gKwkJY2VhX21vZGUgPSBjZWFfbW9kZV9m b3JfdmljKHZpYyk7Cj4gPiAgIAkJY2xvY2sxID0gY2VhX21vZGUtPmNsb2NrOwo+ID4gICAJCWNs b2NrMiA9IGNlYV9tb2RlX2FsdGVybmF0ZV9jbG9jayhjZWFfbW9kZSk7Cj4gPiAgIAl9IGVsc2Ug ewoKLS0gClZpbGxlIFN5cmrDpGzDpApJbnRlbApfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9kcmktZGV2ZWw=