From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 09/15] drm/i915: Add NV12 support to intel_framebuffer_init Date: Tue, 29 Sep 2015 21:58:28 +0300 Message-ID: <20150929185828.GJ26517@intel.com> References: <1441420391-19109-10-git-send-email-chandra.konduru@intel.com> <1441989858-4511-1-git-send-email-chandra.konduru@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTP id 4CBFC6E255 for ; Tue, 29 Sep 2015 11:58:32 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1441989858-4511-1-git-send-email-chandra.konduru@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chandra Konduru Cc: daniel.vetter@intel.com, intel-gfx@lists.freedesktop.org, ville.syrjala@intel.com List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCBTZXAgMTEsIDIwMTUgYXQgMDk6NDQ6MThBTSAtMDcwMCwgQ2hhbmRyYSBLb25kdXJ1 IHdyb3RlOgo+IFRoaXMgcGF0Y2ggYWRkcyBOVjEyIGFzIHN1cHBvcnRlZCBmb3JtYXQgdG8KPiBp bnRlbF9mcmFtZWJ1ZmZlcl9pbml0IGFuZCBwZXJmb3JtcyB2YXJpb3VzIGNoZWNrcy4KPiAKPiB2 MjoKPiAtRml4IGFuIGlzc3VlIGluIGNoZWNrcyBhZGRlZCAobWUpCj4gCj4gdjM6Cj4gLWNvc21l dGljIHVwZGF0ZSwgc3BsaXQgY2hlY2tzIGludG8gdHdvIChWaWxsZSkKPiAKPiB2NDoKPiAtQWRk IHN0cmlkZSBhbGlnbm1lbnQgYW5kIG1vZGlmaWVyIGNoZWNrcyBmb3IgVVYgc3VicGxhbmUgKFZp bGxlKQo+IAo+IHY1Ogo+IC1NYWtlIG1vZGlmaWVyIGNoZWNrIGdlbmVyYWwgKFZpbGxlKQo+IC1D aGVjayB0aWxlLXkgdXYgc3RhcnQgYWxpZ25tZW50IGZyb20gYmVnaW5pbmcgb2YgcGFnZSAoVmls bGUpCj4gCj4gU2lnbmVkLW9mZi1ieTogQ2hhbmRyYSBLb25kdXJ1IDxjaGFuZHJhLmtvbmR1cnVA aW50ZWwuY29tPgo+IFRlc3RjYXNlOiBpZ3Qva21zX252MTIKPiAtLS0KPiAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHwgICA2NiArKysrKysrKysrKysrKysrKysrKysrKysr KystLS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICAgICB8ICAgIDIg Ky0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMgIHwgICAgMiArLQo+ICAz IGZpbGVzIGNoYW5nZWQsIDU1IGluc2VydGlvbnMoKyksIDE1IGRlbGV0aW9ucygtKQo+IAo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBpbmRleCAyYTUxNzBlLi5hZjI4Y2E5IDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IEBAIC0yOTE0LDkgKzI5MTQs OSBAQCBzdGF0aWMgdm9pZCBpcm9ubGFrZV91cGRhdGVfcHJpbWFyeV9wbGFuZShzdHJ1Y3QgZHJt X2NydGMgKmNydGMsCj4gIH0KPiAgCj4gIHUzMiBpbnRlbF9mYl9zdHJpZGVfYWxpZ25tZW50KHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVpbnQ2NF90IGZiX21vZGlmaWVyLAo+IC0JCQkgICAgICB1 aW50MzJfdCBwaXhlbF9mb3JtYXQpCj4gKwkJCSAgICAgIHVpbnQzMl90IHBpeGVsX2Zvcm1hdCwg aW50IHBsYW5lKQo+ICB7Cj4gLQl1MzIgYml0c19wZXJfcGl4ZWwgPSBkcm1fZm9ybWF0X3BsYW5l X2NwcChwaXhlbF9mb3JtYXQsIDApICogODsKPiArCXUzMiBiaXRzX3Blcl9waXhlbCA9IGRybV9m b3JtYXRfcGxhbmVfY3BwKHBpeGVsX2Zvcm1hdCwgcGxhbmUpICogODsKPiAgCj4gIAkvKgo+ICAJ ICogVGhlIHN0cmlkZSBpcyBlaXRoZXIgZXhwcmVzc2VkIGFzIGEgbXVsdGlwbGUgb2YgNjQgYnl0 ZXMKPiBAQCAtMzEyNSw3ICszMTI1LDcgQEAgc3RhdGljIHZvaWQgc2t5bGFrZV91cGRhdGVfcHJp bWFyeV9wbGFuZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gIAo+ICAJb2JqID0gaW50ZWxfZmJf b2JqKGZiKTsKPiAgCXN0cmlkZV9kaXYgPSBpbnRlbF9mYl9zdHJpZGVfYWxpZ25tZW50KGRldiwg ZmItPm1vZGlmaWVyWzBdLAo+IC0JCQkJCSAgICAgICBmYi0+cGl4ZWxfZm9ybWF0KTsKPiArCQkJ CQkgICAgICAgZmItPnBpeGVsX2Zvcm1hdCwgMCk7Cj4gIAlzdXJmX2FkZHIgPSBpbnRlbF9wbGFu ZV9vYmpfb2Zmc2V0KHRvX2ludGVsX3BsYW5lKHBsYW5lKSwgb2JqLCAwKTsKPiAgCj4gIAkvKgo+ IEBAIC05MTA0LDcgKzkxMDQsNyBAQCBza3lsYWtlX2dldF9pbml0aWFsX3BsYW5lX2NvbmZpZyhz dHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAgCj4gIAl2YWwgPSBJOTE1X1JFQUQoUExBTkVfU1RS SURFKHBpcGUsIDApKTsKPiAgCXN0cmlkZV9tdWx0ID0gaW50ZWxfZmJfc3RyaWRlX2FsaWdubWVu dChkZXYsIGZiLT5tb2RpZmllclswXSwKPiAtCQkJCQkJZmItPnBpeGVsX2Zvcm1hdCk7Cj4gKwkJ CQkJCWZiLT5waXhlbF9mb3JtYXQsIDApOwo+ICAJZmItPnBpdGNoZXNbMF0gPSAodmFsICYgMHgz ZmYpICogc3RyaWRlX211bHQ7Cj4gIAo+ICAJYWxpZ25lZF9oZWlnaHQgPSBpbnRlbF9mYl9hbGln bl9oZWlnaHQoZGV2LCBmYi0+aGVpZ2h0LAo+IEBAIC0xMTE3NSw3ICsxMTE3NSw3IEBAIHN0YXRp YyB2b2lkIHNrbF9kb19tbWlvX2ZsaXAoc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMpCj4g IAkgKi8KPiAgCXN0cmlkZSA9IGZiLT5waXRjaGVzWzBdIC8KPiAgCQkgaW50ZWxfZmJfc3RyaWRl X2FsaWdubWVudChkZXYsIGZiLT5tb2RpZmllclswXSwKPiAtCQkJCQkgICBmYi0+cGl4ZWxfZm9y bWF0KTsKPiArCQkJCQkgICBmYi0+cGl4ZWxfZm9ybWF0LCAwKTsKPiAgCj4gIAkvKgo+ICAJICog Qm90aCBQTEFORV9DVEwgYW5kIFBMQU5FX1NUUklERSBhcmUgbm90IHVwZGF0ZWQgb24gdmJsYW5r IGJ1dCBvbgo+IEBAIC0xNDI0MSw2ICsxNDI0MSw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfZnJhbWVi dWZmZXJfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICB7Cj4gIAl1bnNpZ25lZCBpbnQg YWxpZ25lZF9oZWlnaHQ7Cj4gIAlpbnQgcmV0Owo+ICsJaW50IGk7Cj4gIAl1MzIgcGl0Y2hfbGlt aXQsIHN0cmlkZV9hbGlnbm1lbnQ7Cj4gIAo+ICAJV0FSTl9PTighbXV0ZXhfaXNfbG9ja2VkKCZk ZXYtPnN0cnVjdF9tdXRleCkpOwo+IEBAIC0xNDI1NSw3ICsxNDI1Niw4IEBAIHN0YXRpYyBpbnQg aW50ZWxfZnJhbWVidWZmZXJfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJCX0KPiAg CX0gZWxzZSB7Cj4gIAkJaWYgKG9iai0+dGlsaW5nX21vZGUgPT0gSTkxNV9USUxJTkdfWCkKPiAt CQkJbW9kZV9jbWQtPm1vZGlmaWVyWzBdID0gSTkxNV9GT1JNQVRfTU9EX1hfVElMRUQ7Cj4gKwkJ CWZvciAoaSA9IDA7IGkgPCBkcm1fZm9ybWF0X251bV9wbGFuZXMobW9kZV9jbWQtPnBpeGVsX2Zv cm1hdCk7IGkrKykKPiArCQkJCW1vZGVfY21kLT5tb2RpZmllcltpXSA9IEk5MTVfRk9STUFUX01P RF9YX1RJTEVEOwoKVGhlIG90aGVyIGJyYW5jaCBuZWVkcyB1cGRhdGluZyB0b28gc28gdGhhdCBp dCB3aWxsIHJlamVjdCB0aGUgb3BlcmF0aW9uCmlmIHRoZSBtb2RpZmllciBkaXNhZ3JlZXMgd2l0 aCB0aGUgb2JqIHRpbGluZyBtb2RlLgoKPiAgCQllbHNlIGlmIChvYmotPnRpbGluZ19tb2RlID09 IEk5MTVfVElMSU5HX1kpIHsKPiAgCQkJRFJNX0RFQlVHKCJObyBZIHRpbGluZyBmb3IgbGVnYWN5 IGFkZGZiXG4iKTsKPiAgCQkJcmV0dXJuIC1FSU5WQUw7Cj4gQEAgLTE0MjgwLDEyICsxNDI4Miwx NSBAQCBzdGF0aWMgaW50IGludGVsX2ZyYW1lYnVmZmVyX2luaXQoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwKPiAgCQlyZXR1cm4gLUVJTlZBTDsKPiAgCX0KPiAgCj4gLQlzdHJpZGVfYWxpZ25tZW50 ID0gaW50ZWxfZmJfc3RyaWRlX2FsaWdubWVudChkZXYsIG1vZGVfY21kLT5tb2RpZmllclswXSwK PiAtCQkJCQkJICAgICBtb2RlX2NtZC0+cGl4ZWxfZm9ybWF0KTsKPiAtCWlmIChtb2RlX2NtZC0+ cGl0Y2hlc1swXSAmIChzdHJpZGVfYWxpZ25tZW50IC0gMSkpIHsKPiAtCQlEUk1fREVCVUcoInBp dGNoICglZCkgbXVzdCBiZSBhdCBsZWFzdCAldSBieXRlIGFsaWduZWRcbiIsCj4gLQkJCSAgbW9k ZV9jbWQtPnBpdGNoZXNbMF0sIHN0cmlkZV9hbGlnbm1lbnQpOwo+IC0JCXJldHVybiAtRUlOVkFM Owo+ICsJLyogY2hlY2sgc3RyaWRlIGFsaWdubWVudCBmb3Igc3ViLXBsYW5lcyAqLwo+ICsJZm9y IChpID0gMDsgaSA8IGRybV9mb3JtYXRfbnVtX3BsYW5lcyhtb2RlX2NtZC0+cGl4ZWxfZm9ybWF0 KTsgaSsrKSB7Cj4gKwkJc3RyaWRlX2FsaWdubWVudCA9IGludGVsX2ZiX3N0cmlkZV9hbGlnbm1l bnQoZGV2LCBtb2RlX2NtZC0+bW9kaWZpZXJbaV0sCj4gKwkJCQkJCSAgICAgbW9kZV9jbWQtPnBp eGVsX2Zvcm1hdCwgaSk7Cj4gKwkJaWYgKG1vZGVfY21kLT5waXRjaGVzW2ldICYgKHN0cmlkZV9h bGlnbm1lbnQgLSAxKSkgewo+ICsJCQlEUk1fREVCVUcoInN1YnBsYW5lICVkIHBpdGNoICglZCkg bXVzdCBiZSBhdCBsZWFzdCAldSBieXRlcyAiCj4gKwkJCQkiYWxpZ25lZFxuIiwgaSwgbW9kZV9j bWQtPnBpdGNoZXNbaV0sIHN0cmlkZV9hbGlnbm1lbnQpOwo+ICsJCQlyZXR1cm4gLUVJTlZBTDsK PiArCQl9Cj4gIAl9Cj4gIAo+ICAJcGl0Y2hfbGltaXQgPSBpbnRlbF9mYl9waXRjaF9saW1pdChk ZXYsIG1vZGVfY21kLT5tb2RpZmllclswXSwKPiBAQCAtMTQzNTIsOSArMTQzNTcsNDQgQEAgc3Rh dGljIGludCBpbnRlbF9mcmFtZWJ1ZmZlcl9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4g IAkJCXJldHVybiAtRUlOVkFMOwo+ICAJCX0KPiAgCQlicmVhazsKPiArCWNhc2UgRFJNX0ZPUk1B VF9OVjEyOgo+ICsJCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA8IDkpIHsKPiArCQkJRFJNX0RF QlVHKCJ1bnN1cHBvcnRlZCBwaXhlbCBmb3JtYXQ6ICVzXG4iLAo+ICsJCQkJZHJtX2dldF9mb3Jt YXRfbmFtZShtb2RlX2NtZC0+cGl4ZWxfZm9ybWF0KSk7Cj4gKwkJCXJldHVybiAtRUlOVkFMOwo+ ICsJCX0KPiArCQlpZiAoIW1vZGVfY21kLT5vZmZzZXRzWzFdKSB7Cj4gKwkJCURSTV9ERUJVRygi dXYgc3RhcnQgb2Zmc2V0IG5vdCBzZXRcbiIpOwo+ICsJCQlyZXR1cm4gLUVJTlZBTDsKPiArCQl9 Cj4gKwkJaWYgKG1vZGVfY21kLT5waXRjaGVzWzBdICE9IG1vZGVfY21kLT5waXRjaGVzWzFdKSB7 Cj4gKwkJCURSTV9ERUJVRygieSBhbmQgdXYgc3VicGxhbmVzIGhhdmUgZGlmZmVyZW50IHBpdGNo ZXNcbiIpOwo+ICsJCQlyZXR1cm4gLUVJTlZBTDsKPiArCQl9Cj4gKwkJaWYgKG1vZGVfY21kLT5o YW5kbGVzWzBdICE9IG1vZGVfY21kLT5oYW5kbGVzWzFdKSB7Cj4gKwkJCURSTV9ERUJVRygieSBh bmQgdXYgc3VicGxhbmVzIGhhdmUgZGlmZmVyZW50IGhhbmRsZXNcbiIpOwo+ICsJCQlyZXR1cm4g LUVJTlZBTDsKPiArCQl9Cj4gKwkJaWYgKG1vZGVfY21kLT5tb2RpZmllclswXSAhPSBtb2RlX2Nt ZC0+bW9kaWZpZXJbMV0pIHsKPiArCQkJRFJNX0RFQlVHKCJ5IGFuZCB1diBzdWJwbGFuZXMgaGF2 ZSBkaWZmZXJlbnQgbW9kaWZpZXJzXG4iKTsKPiArCQkJcmV0dXJuIC1FSU5WQUw7Cj4gKwkJfQo+ ICsJCWlmIChtb2RlX2NtZC0+bW9kaWZpZXJbMV0gPT0gSTkxNV9GT1JNQVRfTU9EX1lmX1RJTEVE ICYmCj4gKwkJCShtb2RlX2NtZC0+b2Zmc2V0c1sxXSAmIDB4RkZGKSkgewoKSSd2ZSBiZWVuIHRy eWluZyB0byBzb2xpY2l0IGlkZWFzIG9uIGhvdyB3ZSBzaG91bGQgZGVmaW5lIHRoZSBvZmZzZXRz W107CnJhdyBieXRlIG9mZnNldCwgb3IgbGluZWFyIG9mZnNldC4gSSBkaWRuJ3QgZ2V0IG1hbnkg b3BpbmlvbnMgeWV0LiBTbyB3ZQpuZWVkIHRvIGZpZ3VyZSBpdCBvdXQgYW5kIGRvY3VtZW50IGl0 IHNvbWV3aGVyZSBiZWZvcmUgd2UgZXhwb3NlIGl0IHRvCnRoZSB3b3JsZC4gSW4gdGhlIG1lYW50 aW1lIHdlIGNvdWxkIGp1c3QgcmVqZWN0IG5vbiB0aWxlIHJvdyBhbGlnbmVkCm9mZnNldHMgcmVn YXJkbGVzcyBvZiB0aGUgdGlsaW5nIG1vZGUuCgo+ICsJCQlEUk1fREVCVUcoInRpbGUtWWYgdXYg b2Zmc2V0IDB4JXggaXNuJ3Qgc3RhcnRpbmcgb24gbmV3IHRpbGUtcm93XG4iLAo+ICsJCQkJbW9k ZV9jbWQtPm9mZnNldHNbMV0pOwo+ICsJCQlyZXR1cm4gLUVJTlZBTDsKPiArCQl9Cj4gKwkJaWYg KG1vZGVfY21kLT5tb2RpZmllclsxXSA9PSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRCAmJgo+ICsJ CQkoKChtb2RlX2NtZC0+b2Zmc2V0c1sxXSAmIDB4RkZGKSAvIG1vZGVfY21kLT5waXRjaGVzWzFd KSAlIDQpKSB7Cj4gKwkJCURSTV9ERUJVRygidGlsZS1ZIHV2IG9mZnNldCAweCV4IGlzbid0IDQt bGluZSBhbGlnbmVkXG4iLAo+ICsJCQkJbW9kZV9jbWQtPm9mZnNldHNbMV0pOwo+ICsJCQlyZXR1 cm4gLUVJTlZBTDsKPiArCQl9Cj4gKwkJYnJlYWs7Cj4gIAlkZWZhdWx0Ogo+ICAJCURSTV9ERUJV RygidW5zdXBwb3J0ZWQgcGl4ZWwgZm9ybWF0OiAlc1xuIiwKPiAtCQkJICBkcm1fZ2V0X2Zvcm1h dF9uYW1lKG1vZGVfY21kLT5waXhlbF9mb3JtYXQpKTsKPiArCQkJZHJtX2dldF9mb3JtYXRfbmFt ZShtb2RlX2NtZC0+cGl4ZWxfZm9ybWF0KSk7Cj4gIAkJcmV0dXJuIC1FSU5WQUw7Cj4gIAl9Cj4g IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gaW5kZXggZDUwYjhjYi4uNjJkMmExMSAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gQEAgLTk4MCw3ICs5ODAsNyBAQCB1bnNpZ25l ZCBpbnQgaW50ZWxfZmJfYWxpZ25faGVpZ2h0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIHZv aWQgaW50ZWxfZmJfb2JqX2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosIGJv b2wgcmV0aXJlLAo+ICAJCQllbnVtIGZiX29wX29yaWdpbiBvcmlnaW4pOwo+ICB1MzIgaW50ZWxf ZmJfc3RyaWRlX2FsaWdubWVudChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1aW50NjRfdCBmYl9t b2RpZmllciwKPiAtCQkJICAgICAgdWludDMyX3QgcGl4ZWxfZm9ybWF0KTsKPiArCQkJICAgICAg dWludDMyX3QgcGl4ZWxfZm9ybWF0LCBpbnQgcGxhbmUpOwo+ICAKPiAgLyogaW50ZWxfYXVkaW8u YyAqLwo+ICB2b2lkIGludGVsX2luaXRfYXVkaW8oc3RydWN0IGRybV9kZXZpY2UgKmRldik7Cj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMKPiBpbmRleCA3OTc1OTRlLi40OWZlYWUwIDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMKPiBAQCAtMjAzLDcgKzIwMyw3IEBA IHNrbF91cGRhdGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqZHJtX3BsYW5lLCBzdHJ1Y3QgZHJt X2NydGMgKmNydGMsCj4gIAkJCQkgICAgICAgc3JjX3cgIT0gY3J0Y193IHx8IHNyY19oICE9IGNy dGNfaCk7Cj4gIAo+ICAJc3RyaWRlX2RpdiA9IGludGVsX2ZiX3N0cmlkZV9hbGlnbm1lbnQoZGV2 LCBmYi0+bW9kaWZpZXJbMF0sCj4gLQkJCQkJICAgICAgIGZiLT5waXhlbF9mb3JtYXQpOwo+ICsJ CQkJCSAgICAgICBmYi0+cGl4ZWxfZm9ybWF0LCAwKTsKPiAgCj4gIAlzY2FsZXJfaWQgPSB0b19p bnRlbF9wbGFuZV9zdGF0ZShkcm1fcGxhbmUtPnN0YXRlKS0+c2NhbGVyX2lkOwo+ICAKPiAtLSAK PiAxLjcuOS41Cj4gCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNr dG9wLm9yZwo+IGh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9p bnRlbC1nZngKCi0tIApWaWxsZSBTeXJqw6Rsw6QKSW50ZWwgT1RDCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50 ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==