From mboxrd@z Thu Jan 1 00:00:00 1970 From: Shashank Sharma Subject: [PATCH v3 4/7] drm/i915: Add AVI infoframe support for LSPCON Date: Fri, 5 Jan 2018 15:15:32 +0530 Message-ID: <1515145535-11228-5-git-send-email-shashank.sharma@intel.com> References: <1515145535-11228-1-git-send-email-shashank.sharma@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id 73EF96E312 for ; Fri, 5 Jan 2018 09:40:48 +0000 (UTC) In-Reply-To: <1515145535-11228-1-git-send-email-shashank.sharma@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org Cc: Imre Deak List-Id: intel-gfx@lists.freedesktop.org SW4gb3JkZXIgdG8gcGFzcyBBVkkgaW5mb2ZyYW1lcyB0byBMU1BDT04gZGV2aWNlcywgYSBzb3Vy Y2UgaGFzIHRvCndyaXRlIHRoZW0gaW4gYSB2ZW5kb3IgcmVjb21tZW5kZWQgbWV0aG9kIGFuZCBs b2NhdGlvbi4KClRoaXMgcGF0Y2ggc2VyaWVzOgotIGFkZHMgZ2VuZXJpYyBMU1BDT04gaW5mb2Zy YW1lIHNldHVwIGZ1bmN0aW9ucy4KLSByZWdpc3RlcnMgdGhlc2UgZnVuY3Rpb25zIGludG8gZXhp c3RpbmcgQVZJIGluZm9mcmFtZSBmcmFtZXdvcmsuCi0gdHJpZ2dlcnMgdGhlc2UgZnVuY3Rpb25z IGZyb20gbW9kZXNldCBzZXF1ZW5jZS4KCk5leHQgcGF0Y2hlcyBpbiB0aGUgc2VyaWVzIHdpbGwg YWRkIHZlbmRvciBzcGVjaWZpYyBjb2RlLgoKVjI6IEFkZGVkIG5ldyBwYXJhbWV0ZXIgdG8gYWxp Z24gd2l0aCBuZXcgZGVmaW5pdGlvbiBvZgogICAgZHJtX2hkbWlfYXZpX2luZm9mcmFtZV9xdWFu dF9yYW5nZQpWMzogQWRkZWQgci1iIGZyb20gTWFhcnRlbiAoZm9yIFYyKQogICAgQWRkZWQgbmV3 IHBhcmFtZXRlciBvdXRwdXRfZm9ybWF0IGluIHN0cnVjdCBsc3Bjb24gdG8gYWNjb21tb2RhdGUK ICAgIFZpbGxlJ3MgcmV2aWV3IGNvbW1lbnRzIG9uIGxhc3QgcGF0Y2ggb2YgdGhlIHNlcmllcwoK Q2M6IFZpbGxlIFN5cmphbGEgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgpDYzogSW1y ZSBEZWFrIDxpbXJlLmRlYWtAbGludXguaW50ZWwuY29tPgpDYzogTWFhcnRlbiBMYW5raG9yc3Qg PG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4LmludGVsLmNvbT4KUmV2aWV3ZWQtYnk6IE1hYXJ0ZW4g TGFua2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+ClNpZ25lZC1vZmYt Ynk6IFNoYXNoYW5rIFNoYXJtYSA8c2hhc2hhbmsuc2hhcm1hQGludGVsLmNvbT4KLS0tCiBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYyAgICB8IDE5ICsrKysrKysrKysrLS0tCiBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAgICB8IDE0ICsrKysrKysrKystCiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMgICB8IDEzICsrKysrKystLS0KIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2xzcGNvbi5jIHwgNDkgKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKwogNCBmaWxlcyBjaGFuZ2VkLCA4NyBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMKaW5kZXggODQzMjdlNy4uN2I4OWYyYSAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMKQEAgLTIyMzgsMTAgKzIyMzgsMjIgQEAgc3RhdGljIHZv aWQgaW50ZWxfZGRpX3ByZV9lbmFibGUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCiAK IAlpbnRlbF9zZXRfY3B1X2ZpZm9fdW5kZXJydW5fcmVwb3J0aW5nKGRldl9wcml2LCBwaXBlLCB0 cnVlKTsKIAotCWlmIChpbnRlbF9jcnRjX2hhc190eXBlKGNydGNfc3RhdGUsIElOVEVMX09VVFBV VF9IRE1JKSkKKwlpZiAoaW50ZWxfY3J0Y19oYXNfdHlwZShjcnRjX3N0YXRlLCBJTlRFTF9PVVRQ VVRfSERNSSkpIHsKIAkJaW50ZWxfZGRpX3ByZV9lbmFibGVfaGRtaShlbmNvZGVyLCBjcnRjX3N0 YXRlLCBjb25uX3N0YXRlKTsKLQllbHNlCisJfSBlbHNlIHsKKwkJc3RydWN0IGludGVsX2xzcGNv biAqbHNwY29uID0KKwkJCQllbmNfdG9faW50ZWxfbHNwY29uKCZlbmNvZGVyLT5iYXNlKTsKKwog CQlpbnRlbF9kZGlfcHJlX2VuYWJsZV9kcChlbmNvZGVyLCBjcnRjX3N0YXRlLCBjb25uX3N0YXRl KTsKKwkJaWYgKGxzcGNvbi0+YWN0aXZlKSB7CisJCQlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0 ICpkaWdfcG9ydCA9CisJCQkJCWVuY190b19kaWdfcG9ydCgmZW5jb2Rlci0+YmFzZSk7CisKKwkJ CWRpZ19wb3J0LT5zZXRfaW5mb2ZyYW1lcygmZW5jb2Rlci0+YmFzZSwKKwkJCQkJCSBjcnRjX3N0 YXRlLT5oYXNfaW5mb2ZyYW1lLAorCQkJCQkJIGNydGNfc3RhdGUsIGNvbm5fc3RhdGUpOworCQl9 CisJfQogfQogCiBzdGF0aWMgdm9pZCBpbnRlbF9kaXNhYmxlX2RkaV9idWYoc3RydWN0IGludGVs X2VuY29kZXIgKmVuY29kZXIpCkBAIC0yODkyLDggKzI5MDQsNiBAQCB2b2lkIGludGVsX2RkaV9p bml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgZW51bSBwb3J0IHBvcnQpCiAJ aW50ZWxfZW5jb2Rlci0+Y3J0Y19tYXNrID0gKDEgPDwgMCkgfCAoMSA8PCAxKSB8ICgxIDw8IDIp OwogCWludGVsX2VuY29kZXItPmNsb25lYWJsZSA9IDA7CiAKLQlpbnRlbF9pbmZvZnJhbWVfaW5p dChpbnRlbF9kaWdfcG9ydCk7Ci0KIAlpZiAoaW5pdF9kcCkgewogCQlpZiAoIWludGVsX2RkaV9p bml0X2RwX2Nvbm5lY3RvcihpbnRlbF9kaWdfcG9ydCkpCiAJCQlnb3RvIGVycjsKQEAgLTI5MjMs NiArMjkzMyw3IEBAIHZvaWQgaW50ZWxfZGRpX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LCBlbnVtIHBvcnQgcG9ydCkKIAkJCQlwb3J0X25hbWUocG9ydCkpOwogCX0KIAor CWludGVsX2luZm9mcmFtZV9pbml0KGludGVsX2RpZ19wb3J0KTsKIAlyZXR1cm47CiAKIGVycjoK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKaW5kZXggYmE2YTU5OS4uZjJlODc1MiAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHJ2LmgKQEAgLTEwNjQsNiArMTA2NCw3IEBAIHN0cnVjdCBpbnRlbF9sc3Bj b24gewogCWJvb2wgYWN0aXZlOwogCWVudW0gZHJtX2xzcGNvbl9tb2RlIG1vZGU7CiAJZW51bSBs c3Bjb25fdmVuZG9yIHZlbmRvcjsKKwllbnVtIGNydGNfb3V0cHV0X2Zvcm1hdCBvdXRwdXRfZm9y bWF0OwogfTsKIAogc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCB7CkBAIC0xMTg5LDYgKzExOTAs MTIgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgaW50ZWxfZHAgKmVuY190b19pbnRlbF9kcChzdHJ1 Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCiAJcmV0dXJuICZlbmNfdG9fZGlnX3BvcnQoZW5jb2Rl ciktPmRwOwogfQogCitzdGF0aWMgaW5saW5lIHN0cnVjdCBpbnRlbF9sc3Bjb24gKgorZW5jX3Rv X2ludGVsX2xzcGNvbihzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCit7CisJcmV0dXJuICZl bmNfdG9fZGlnX3BvcnQoZW5jb2RlciktPmxzcGNvbjsKK30KKwogc3RhdGljIGlubGluZSBzdHJ1 Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICoKIGRwX3RvX2RpZ19wb3J0KHN0cnVjdCBpbnRlbF9kcCAq aW50ZWxfZHApCiB7CkBAIC0xNzAzLDcgKzE3MTAsNiBAQCB2b2lkIGludGVsX2hkbWlfaGFuZGxl X3Npbmtfc2NyYW1ibGluZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlciwKIHZv aWQgaW50ZWxfZHBfZHVhbF9tb2RlX3NldF90bWRzX291dHB1dChzdHJ1Y3QgaW50ZWxfaGRtaSAq aGRtaSwgYm9vbCBlbmFibGUpOwogdm9pZCBpbnRlbF9pbmZvZnJhbWVfaW5pdChzdHJ1Y3QgaW50 ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCk7CiAKLQogLyogaW50ZWxfbHZkcy5jICov CiB2b2lkIGludGVsX2x2ZHNfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp Owogc3RydWN0IGludGVsX2VuY29kZXIgKmludGVsX2dldF9sdmRzX2VuY29kZXIoc3RydWN0IGRy bV9kZXZpY2UgKmRldik7CkBAIC0yMDMxLDYgKzIwMzcsMTIgQEAgdm9pZCBpbnRlbF9jb2xvcl9s b2FkX2x1dHMoc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKTsKIGJvb2wgbHNwY29u X2luaXQoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQpOwogdm9pZCBs c3Bjb25fcmVzdW1lKHN0cnVjdCBpbnRlbF9sc3Bjb24gKmxzcGNvbik7CiB2b2lkIGxzcGNvbl93 YWl0X3Bjb25fbW9kZShzdHJ1Y3QgaW50ZWxfbHNwY29uICpsc3Bjb24pOwordm9pZCBsc3Bjb25f c2V0X2luZm9mcmFtZXMoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyLAorCQkJICAgYm9vbCBl bmFibGUsCisJCQkgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwK KwkJCSAgIGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlKTsKK2Jv b2wgbHNwY29uX2luZm9mcmFtZV9lbmFibGVkKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciwK KwkJCSAgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZyk7CiAK IC8qIGludGVsX3BpcGVfY3JjLmMgKi8KIGludCBpbnRlbF9waXBlX2NyY19jcmVhdGUoc3RydWN0 IGRybV9taW5vciAqbWlub3IpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfaGRtaS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRtaS5jCmluZGV4IDI1OGJi NTEuLjA2MDlmMTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkbWku YworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMKQEAgLTE5OTksOSArMTk5 OSwxNiBAQCB2b2lkIGludGVsX2luZm9mcmFtZV9pbml0KHN0cnVjdCBpbnRlbF9kaWdpdGFsX3Bv cnQgKmludGVsX2RpZ19wb3J0KQogCQlpbnRlbF9kaWdfcG9ydC0+c2V0X2luZm9mcmFtZXMgPSBn NHhfc2V0X2luZm9mcmFtZXM7CiAJCWludGVsX2RpZ19wb3J0LT5pbmZvZnJhbWVfZW5hYmxlZCA9 IGc0eF9pbmZvZnJhbWVfZW5hYmxlZDsKIAl9IGVsc2UgaWYgKEhBU19EREkoZGV2X3ByaXYpKSB7 Ci0JCWludGVsX2RpZ19wb3J0LT53cml0ZV9pbmZvZnJhbWUgPSBoc3dfd3JpdGVfaW5mb2ZyYW1l OwotCQlpbnRlbF9kaWdfcG9ydC0+c2V0X2luZm9mcmFtZXMgPSBoc3dfc2V0X2luZm9mcmFtZXM7 Ci0JCWludGVsX2RpZ19wb3J0LT5pbmZvZnJhbWVfZW5hYmxlZCA9IGhzd19pbmZvZnJhbWVfZW5h YmxlZDsKKwkJaWYgKGludGVsX2RpZ19wb3J0LT5sc3Bjb24uYWN0aXZlKSB7CisJCQlpbnRlbF9k aWdfcG9ydC0+c2V0X2luZm9mcmFtZXMgPSBsc3Bjb25fc2V0X2luZm9mcmFtZXM7CisJCQlpbnRl bF9kaWdfcG9ydC0+aW5mb2ZyYW1lX2VuYWJsZWQgPQorCQkJCQkJbHNwY29uX2luZm9mcmFtZV9l bmFibGVkOworCQl9IGVsc2UgeworCQkJaW50ZWxfZGlnX3BvcnQtPnNldF9pbmZvZnJhbWVzID0g aHN3X3NldF9pbmZvZnJhbWVzOworCQkJaW50ZWxfZGlnX3BvcnQtPmluZm9mcmFtZV9lbmFibGVk ID0KKwkJCQkJCWhzd19pbmZvZnJhbWVfZW5hYmxlZDsKKwkJCWludGVsX2RpZ19wb3J0LT53cml0 ZV9pbmZvZnJhbWUgPSBoc3dfd3JpdGVfaW5mb2ZyYW1lOworCQl9CiAJfSBlbHNlIGlmIChIQVNf UENIX0lCWChkZXZfcHJpdikpIHsKIAkJaW50ZWxfZGlnX3BvcnQtPndyaXRlX2luZm9mcmFtZSA9 IGlieF93cml0ZV9pbmZvZnJhbWU7CiAJCWludGVsX2RpZ19wb3J0LT5zZXRfaW5mb2ZyYW1lcyA9 IGlieF9zZXRfaW5mb2ZyYW1lczsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2xzcGNvbi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHNwY29uLmMKaW5kZXgg OTQ2ZGZkMC4uMzJkNDE5OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf bHNwY29uLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHNwY29uLmMKQEAgLTIz NSw2ICsyMzUsNTUgQEAgc3RhdGljIHZvaWQgbHNwY29uX3Jlc3VtZV9pbl9wY29uX3dhKHN0cnVj dCBpbnRlbF9sc3Bjb24gKmxzcGNvbikKIAlEUk1fREVCVUdfS01TKCJMU1BDT04gRFAgZGVzY3Jp cHRvciBtaXNtYXRjaCBhZnRlciByZXN1bWVcbiIpOwogfQogCit2b2lkIGxzcGNvbl9zZXRfaW5m b2ZyYW1lcyhzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIsCisJCQkgICBib29sIGVuYWJsZSwK KwkJCSAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAorCQkJICAg Y29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGUpCit7CisJc3NpemVf dCByZXQ7CisJdW5pb24gaGRtaV9pbmZvZnJhbWUgZnJhbWU7CisJdWludDhfdCBidWZbVklERU9f RElQX0RBVEFfU0laRV07CisJc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqZGlnX3BvcnQgPSBl bmNfdG9fZGlnX3BvcnQoZW5jb2Rlcik7CisJc3RydWN0IGludGVsX2xzcGNvbiAqbHNwY29uID0g JmRpZ19wb3J0LT5sc3Bjb247CisJc3RydWN0IGludGVsX2RwICppbnRlbF9kcCA9ICZkaWdfcG9y dC0+ZHA7CisJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciA9ICZpbnRlbF9kcC0+YXR0 YWNoZWRfY29ubmVjdG9yLT5iYXNlOworCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICpt b2RlID0gJmNydGNfc3RhdGUtPmJhc2UuYWRqdXN0ZWRfbW9kZTsKKwlib29sIGlzX2hkbWkyX3Np bmsgPSBjb25uZWN0b3ItPmRpc3BsYXlfaW5mby5oZG1pLnNjZGMuc3VwcG9ydGVkOworCisJaWYg KCFsc3Bjb24tPmFjdGl2ZSkgeworCQlEUk1fRVJST1IoIldyaXRpbmcgaW5mb2ZyYW1lcyB3aGls ZSBMU1BDT04gZGlzYWJsZWQgP1xuIik7CisJCXJldHVybjsKKwl9CisKKwlyZXQgPSBkcm1faGRt aV9hdmlfaW5mb2ZyYW1lX2Zyb21fZGlzcGxheV9tb2RlKCZmcmFtZS5hdmksCisJCQkJCQkgICAg ICAgbW9kZSwgaXNfaGRtaTJfc2luayk7CisJaWYgKHJldCA8IDApIHsKKwkJRFJNX0VSUk9SKCJj b3VsZG4ndCBmaWxsIEFWSSBpbmZvZnJhbWVcbiIpOworCQlyZXR1cm47CisJfQorCisJZHJtX2hk bWlfYXZpX2luZm9mcmFtZV9xdWFudF9yYW5nZSgmZnJhbWUuYXZpLCBtb2RlLAorCQkJCQkgICBj cnRjX3N0YXRlLT5saW1pdGVkX2NvbG9yX3JhbmdlID8KKwkJCQkJICAgSERNSV9RVUFOVElaQVRJ T05fUkFOR0VfTElNSVRFRCA6CisJCQkJCSAgIEhETUlfUVVBTlRJWkFUSU9OX1JBTkdFX0ZVTEws CisJCQkJCSAgIGZhbHNlLCBpc19oZG1pMl9zaW5rKTsKKworCXJldCA9IGhkbWlfaW5mb2ZyYW1l X3BhY2soJmZyYW1lLCBidWYsIHNpemVvZihidWYpKTsKKwlpZiAocmV0IDwgMCkgeworCQlEUk1f RVJST1IoIkZhaWxlZCB0byBwYWNrIEFWSSBJRlxuIik7CisJCXJldHVybjsKKwl9CisKKwlkaWdf cG9ydC0+d3JpdGVfaW5mb2ZyYW1lKGVuY29kZXIsIGNydGNfc3RhdGUsIEhETUlfSU5GT0ZSQU1F X1RZUEVfQVZJLAorCQkJCSAgYnVmLCByZXQpOworfQorCitib29sIGxzcGNvbl9pbmZvZnJhbWVf ZW5hYmxlZChzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIsCisJCQkgICAgICBjb25zdCBzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcpCit7CisJcmV0dXJuIGVuY190b19pbnRl bF9sc3Bjb24oZW5jb2RlciktPmFjdGl2ZTsKK30KKwogdm9pZCBsc3Bjb25fcmVzdW1lKHN0cnVj dCBpbnRlbF9sc3Bjb24gKmxzcGNvbikKIHsKIAllbnVtIGRybV9sc3Bjb25fbW9kZSBleHBlY3Rl ZF9tb2RlOwotLSAKMi43LjQKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNr dG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lu dGVsLWdmeAo=