From mboxrd@z Thu Jan 1 00:00:00 1970 From: Shawn Guo Subject: [PATCH v3 2/3] drm: zte: add .atomic_disable hook to disable graphic layer Date: Thu, 29 Dec 2016 10:37:27 +0800 Message-ID: <1482979048-32037-3-git-send-email-shawnguo@kernel.org> References: <1482979048-32037-1-git-send-email-shawnguo@kernel.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0BDBE6E080 for ; Thu, 29 Dec 2016 02:39:28 +0000 (UTC) In-Reply-To: <1482979048-32037-1-git-send-email-shawnguo@kernel.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org Cc: Daniel Vetter , Baoyou Xie , linux-arm-kernel@lists.infradead.org, Jun Nie , Shawn Guo List-Id: dri-devel@lists.freedesktop.org RnJvbTogU2hhd24gR3VvIDxzaGF3bi5ndW9AbGluYXJvLm9yZz4KClRoZXJlIGFyZSBhIGZldyBo YXJkd2FyZSBiaXRzIGZvciBlYWNoIGdyYXBoaWMgbGF5ZXIgdG8gY29udHJvbCBtYWluL2F1eApj aGFubmVsIGFuZCBjbG9jayBzZWxlY3Rpb24sIGFzIHdlbGwgYXMgdGhlIGxheWVyIGVuYWJsaW5n LiAgVGhlc2UgYml0cwpzaXQgb3V0c2lkZSB0aGUgbGF5ZXIgYmxvY2sgaXRzZWxmLCBidXQgaW4g Vk9VIGNvbnRyb2wgZ2x1ZSBibG9jay4gIFdlCmN1cnJlbnRseSBzZXQgdGhlc2UgYml0cyB1cCBh dCBDUlRDIGluaXRpYWxpemF0aW9uIGZvciBvbmNlLCBhbmQgZG8gbm90CnN1cHBvcnQgZGlzYWJs aW5nIHRoZSBsYXllci4KClRoaXMgcGF0Y2ggY3JlYXRlcyBhIHBhaXIgb2YgZnVuY3Rpb25zIHp4 X3ZvdV9sYXllcl9lbmFibGVbZGlzYWJsZV0gdG8KYmUgaW52b2tlZCBmcm9tIHBsYW5lIGhvb2tz IC5hdG9taWNfdXBkYXRlIGFuZCAuYXRvbWljX2Rpc2FibGUgdG8gc2V0IHVwCmFuZCB0ZWFyIGRv d24gdGhlIGxheWVyLiAgVGhpcyBpcyBnZW5lcmljIGZvciBib3RoIGdyYXBoaWMgYW5kIHZpZGVv CmxheWVycywgc28gaXQgd2lsbCBtYWtlIHRoZSBvdmVybGF5IHBsYW5lIHN1cHBvcnQgdG8gYmUg YWRkZWQgbGF0ZXIgbXVjaAplYXNpZXIuCgpTaWduZWQtb2ZmLWJ5OiBTaGF3biBHdW8gPHNoYXdu Lmd1b0BsaW5hcm8ub3JnPgotLS0KIGRyaXZlcnMvZ3B1L2RybS96dGUvenhfcGxhbmUuYyB8IDE1 ICsrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL3p0ZS96eF9wbGFuZS5oIHwgIDEgKwogZHJpdmVy cy9ncHUvZHJtL3p0ZS96eF92b3UuYyAgIHwgNzAgKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0venRlL3p4X3ZvdS5oICAgfCAgMyArKwog NCBmaWxlcyBjaGFuZ2VkLCA2OSBpbnNlcnRpb25zKCspLCAyMCBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0venRlL3p4X3BsYW5lLmMgYi9kcml2ZXJzL2dwdS9kcm0v enRlL3p4X3BsYW5lLmMKaW5kZXggNzhkMjliMWRiOTFjLi41NDQ1ZWViZjgzMGYgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS96dGUvenhfcGxhbmUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0v enRlL3p4X3BsYW5lLmMKQEAgLTE5NywxMiArMTk3LDI3IEBAIHN0YXRpYyB2b2lkIHp4X2dsX3Bs YW5lX2F0b21pY191cGRhdGUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiAJLyogRW5hYmxlIEhC U0MgYmxvY2sgKi8KIAl6eF93cml0ZWxfbWFzayhoYnNjICsgSEJTQ19DVFJMMCwgSEJTQ19DVFJM X0VOLCBIQlNDX0NUUkxfRU4pOwogCisJenhfdm91X2xheWVyX2VuYWJsZShwbGFuZSk7CisKIAl6 eF9nbF9zZXRfdXBkYXRlKHpwbGFuZSk7CiB9CiAKK3N0YXRpYyB2b2lkIHp4X3BsYW5lX2F0b21p Y19kaXNhYmxlKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAorCQkJCSAgICBzdHJ1Y3QgZHJtX3Bs YW5lX3N0YXRlICpvbGRfc3RhdGUpCit7CisJc3RydWN0IHp4X3BsYW5lICp6cGxhbmUgPSB0b196 eF9wbGFuZShwbGFuZSk7CisJdm9pZCBfX2lvbWVtICpoYnNjID0genBsYW5lLT5oYnNjOworCisJ enhfdm91X2xheWVyX2Rpc2FibGUocGxhbmUpOworCisJLyogRGlzYWJsZSBIQlNDIGJsb2NrICov CisJenhfd3JpdGVsX21hc2soaGJzYyArIEhCU0NfQ1RSTDAsIEhCU0NfQ1RSTF9FTiwgMCk7Cit9 CisKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX2hlbHBlcl9mdW5jcyB6eF9nbF9wbGFu ZV9oZWxwZXJfZnVuY3MgPSB7CiAJLmF0b21pY19jaGVjayA9IHp4X2dsX3BsYW5lX2F0b21pY19j aGVjaywKIAkuYXRvbWljX3VwZGF0ZSA9IHp4X2dsX3BsYW5lX2F0b21pY191cGRhdGUsCisJLmF0 b21pY19kaXNhYmxlID0genhfcGxhbmVfYXRvbWljX2Rpc2FibGUsCiB9OwogCiBzdGF0aWMgdm9p ZCB6eF9wbGFuZV9kZXN0cm95KHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lKQpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL3p0ZS96eF9wbGFuZS5oIGIvZHJpdmVycy9ncHUvZHJtL3p0ZS96eF9w bGFuZS5oCmluZGV4IDI2NGE5MmUwYjUzMi4uOTMzNjExZGRmZmQwIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0venRlL3p4X3BsYW5lLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL3p0ZS96eF9w bGFuZS5oCkBAIC0xOCw2ICsxOCw3IEBAIHN0cnVjdCB6eF9wbGFuZSB7CiAJdm9pZCBfX2lvbWVt ICpjc2M7CiAJdm9pZCBfX2lvbWVtICpoYnNjOwogCXZvaWQgX19pb21lbSAqcnN6OworCWNvbnN0 IHN0cnVjdCB2b3VfbGF5ZXJfYml0cyAqYml0czsKIH07CiAKICNkZWZpbmUgdG9fenhfcGxhbmUo cGxhbmUpIGNvbnRhaW5lcl9vZihwbGFuZSwgc3RydWN0IHp4X3BsYW5lLCBwbGFuZSkKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS96dGUvenhfdm91LmMgYi9kcml2ZXJzL2dwdS9kcm0venRl L3p4X3ZvdS5jCmluZGV4IGQ1YzgwMWY2Zjk3Yi4uM2ZiNGZjMDRlNjkzIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0venRlL3p4X3ZvdS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS96dGUvenhf dm91LmMKQEAgLTY1LDcgKzY1LDYgQEAgc3RydWN0IHp4X2NydGNfYml0cyB7CiAJdTMyIHBvbGFy aXR5X3NoaWZ0OwogCXUzMiBpbnRfZnJhbWVfbWFzazsKIAl1MzIgdGNfZW5hYmxlOwotCXUzMiBn bF9lbmFibGU7CiB9OwogCiBzdGF0aWMgY29uc3Qgc3RydWN0IHp4X2NydGNfYml0cyBtYWluX2Ny dGNfYml0cyA9IHsKQEAgLTczLDcgKzcyLDYgQEAgc3RydWN0IHp4X2NydGNfYml0cyB7CiAJLnBv bGFyaXR5X3NoaWZ0ID0gTUFJTl9QT0xfU0hJRlQsCiAJLmludF9mcmFtZV9tYXNrID0gVElNSU5H X0lOVF9NQUlOX0ZSQU1FLAogCS50Y19lbmFibGUgPSBNQUlOX1RDX0VOLAotCS5nbF9lbmFibGUg PSBPU0RfQ1RSTDBfR0wwX0VOLAogfTsKIAogc3RhdGljIGNvbnN0IHN0cnVjdCB6eF9jcnRjX2Jp dHMgYXV4X2NydGNfYml0cyA9IHsKQEAgLTgxLDcgKzc5LDYgQEAgc3RydWN0IHp4X2NydGNfYml0 cyB7CiAJLnBvbGFyaXR5X3NoaWZ0ID0gQVVYX1BPTF9TSElGVCwKIAkuaW50X2ZyYW1lX21hc2sg PSBUSU1JTkdfSU5UX0FVWF9GUkFNRSwKIAkudGNfZW5hYmxlID0gQVVYX1RDX0VOLAotCS5nbF9l bmFibGUgPSBPU0RfQ1RSTDBfR0wxX0VOLAogfTsKIAogc3RydWN0IHp4X2NydGMgewpAQCAtOTcs NiArOTQsMjQgQEAgc3RydWN0IHp4X2NydGMgewogCiAjZGVmaW5lIHRvX3p4X2NydGMoeCkgY29u dGFpbmVyX29mKHgsIHN0cnVjdCB6eF9jcnRjLCBjcnRjKQogCitzdHJ1Y3Qgdm91X2xheWVyX2Jp dHMgeworCXUzMiBlbmFibGU7CisJdTMyIGNobnNlbDsKKwl1MzIgY2xrc2VsOworfTsKKworc3Rh dGljIGNvbnN0IHN0cnVjdCB2b3VfbGF5ZXJfYml0cyB6eF9nbF9iaXRzW0dMX05VTV0gPSB7CisJ eworCQkuZW5hYmxlID0gT1NEX0NUUkwwX0dMMF9FTiwKKwkJLmNobnNlbCA9IE9TRF9DVFJMMF9H TDBfU0VMLAorCQkuY2xrc2VsID0gVk9VX0NMS19HTDBfU0VMLAorCX0sIHsKKwkJLmVuYWJsZSA9 IE9TRF9DVFJMMF9HTDFfRU4sCisJCS5jaG5zZWwgPSBPU0RfQ1RSTDBfR0wxX1NFTCwKKwkJLmNs a3NlbCA9IFZPVV9DTEtfR0wxX1NFTCwKKwl9LAorfTsKKwogc3RydWN0IHp4X3ZvdV9odyB7CiAJ c3RydWN0IGRldmljZSAqZGV2OwogCXZvaWQgX19pb21lbSAqb3NkOwpAQCAtMjIwLDEwICsyMzUs NiBAQCBzdGF0aWMgdm9pZCB6eF9jcnRjX2VuYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiAJ LyogRW5hYmxlIGNoYW5uZWwgKi8KIAl6eF93cml0ZWxfbWFzayh6Y3J0Yy0+Y2hucmVnICsgQ0hO X0NUUkwwLCBDSE5fRU5BQkxFLCBDSE5fRU5BQkxFKTsKIAotCS8qIEVuYWJsZSBHcmFwaGljIExh eWVyICovCi0Jenhfd3JpdGVsX21hc2sodm91LT5vc2QgKyBPU0RfQ1RSTDAsIGJpdHMtPmdsX2Vu YWJsZSwKLQkJICAgICAgIGJpdHMtPmdsX2VuYWJsZSk7Ci0KIAlkcm1fY3J0Y192Ymxhbmtfb24o Y3J0Yyk7CiAKIAlyZXQgPSBjbGtfc2V0X3JhdGUoemNydGMtPnBpeGNsaywgbW9kZS0+Y2xvY2sg KiAxMDAwKTsKQEAgLTI0Nyw5ICsyNTgsNiBAQCBzdGF0aWMgdm9pZCB6eF9jcnRjX2Rpc2FibGUo c3RydWN0IGRybV9jcnRjICpjcnRjKQogCiAJZHJtX2NydGNfdmJsYW5rX29mZihjcnRjKTsKIAot CS8qIERpc2FibGUgR3JhcGhpYyBMYXllciAqLwotCXp4X3dyaXRlbF9tYXNrKHZvdS0+b3NkICsg T1NEX0NUUkwwLCBiaXRzLT5nbF9lbmFibGUsIDApOwotCiAJLyogRGlzYWJsZSBjaGFubmVsICov CiAJenhfd3JpdGVsX21hc2soemNydGMtPmNobnJlZyArIENITl9DVFJMMCwgQ0hOX0VOQUJMRSwg MCk7CiAKQEAgLTMxNiw2ICszMjQsNyBAQCBzdGF0aWMgaW50IHp4X2NydGNfaW5pdChzdHJ1Y3Qg ZHJtX2RldmljZSAqZHJtLCBzdHJ1Y3Qgenhfdm91X2h3ICp2b3UsCiAJCXpwbGFuZS0+Y3NjID0g dm91LT5vc2QgKyBNQUlOX0NTQ19PRkZTRVQ7CiAJCXpwbGFuZS0+aGJzYyA9IHZvdS0+b3NkICsg TUFJTl9IQlNDX09GRlNFVDsKIAkJenBsYW5lLT5yc3ogPSB2b3UtPm90ZnBwdSArIE1BSU5fUlNa X09GRlNFVDsKKwkJenBsYW5lLT5iaXRzID0gJnp4X2dsX2JpdHNbMF07CiAJCXpjcnRjLT5jaG5y ZWcgPSB2b3UtPm9zZCArIE9TRF9NQUlOX0NITjsKIAkJemNydGMtPnJlZ3MgPSAmbWFpbl9jcnRj X3JlZ3M7CiAJCXpjcnRjLT5iaXRzID0gJm1haW5fY3J0Y19iaXRzOwpAQCAtMzI0LDYgKzMzMyw3 IEBAIHN0YXRpYyBpbnQgenhfY3J0Y19pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkcm0sIHN0cnVj dCB6eF92b3VfaHcgKnZvdSwKIAkJenBsYW5lLT5jc2MgPSB2b3UtPm9zZCArIEFVWF9DU0NfT0ZG U0VUOwogCQl6cGxhbmUtPmhic2MgPSB2b3UtPm9zZCArIEFVWF9IQlNDX09GRlNFVDsKIAkJenBs YW5lLT5yc3ogPSB2b3UtPm90ZnBwdSArIEFVWF9SU1pfT0ZGU0VUOworCQl6cGxhbmUtPmJpdHMg PSAmenhfZ2xfYml0c1sxXTsKIAkJemNydGMtPmNobnJlZyA9IHZvdS0+b3NkICsgT1NEX0FVWF9D SE47CiAJCXpjcnRjLT5yZWdzID0gJmF1eF9jcnRjX3JlZ3M7CiAJCXpjcnRjLT5iaXRzID0gJmF1 eF9jcnRjX2JpdHM7CkBAIC00MTEsNiArNDIxLDM2IEBAIHZvaWQgenhfdm91X2Rpc2FibGVfdmJs YW5rKHN0cnVjdCBkcm1fZGV2aWNlICpkcm0sIHVuc2lnbmVkIGludCBwaXBlKQogCQkgICAgICAg emNydGMtPmJpdHMtPmludF9mcmFtZV9tYXNrLCAwKTsKIH0KIAordm9pZCB6eF92b3VfbGF5ZXJf ZW5hYmxlKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lKQoreworCXN0cnVjdCB6eF9jcnRjICp6Y3J0 YyA9IHRvX3p4X2NydGMocGxhbmUtPnN0YXRlLT5jcnRjKTsKKwlzdHJ1Y3Qgenhfdm91X2h3ICp2 b3UgPSB6Y3J0Yy0+dm91OworCXN0cnVjdCB6eF9wbGFuZSAqenBsYW5lID0gdG9fenhfcGxhbmUo cGxhbmUpOworCWNvbnN0IHN0cnVjdCB2b3VfbGF5ZXJfYml0cyAqYml0cyA9IHpwbGFuZS0+Yml0 czsKKworCWlmICh6Y3J0Yy0+Y2huX3R5cGUgPT0gVk9VX0NITl9NQUlOKSB7CisJCXp4X3dyaXRl bF9tYXNrKHZvdS0+b3NkICsgT1NEX0NUUkwwLCBiaXRzLT5jaG5zZWwsIDApOworCQl6eF93cml0 ZWxfbWFzayh2b3UtPnZvdWN0bCArIFZPVV9DTEtfU0VMLCBiaXRzLT5jbGtzZWwsIDApOworCX0g ZWxzZSB7CisJCXp4X3dyaXRlbF9tYXNrKHZvdS0+b3NkICsgT1NEX0NUUkwwLCBiaXRzLT5jaG5z ZWwsCisJCQkgICAgICAgYml0cy0+Y2huc2VsKTsKKwkJenhfd3JpdGVsX21hc2sodm91LT52b3Vj dGwgKyBWT1VfQ0xLX1NFTCwgYml0cy0+Y2xrc2VsLAorCQkJICAgICAgIGJpdHMtPmNsa3NlbCk7 CisJfQorCisJenhfd3JpdGVsX21hc2sodm91LT5vc2QgKyBPU0RfQ1RSTDAsIGJpdHMtPmVuYWJs ZSwgYml0cy0+ZW5hYmxlKTsKK30KKwordm9pZCB6eF92b3VfbGF5ZXJfZGlzYWJsZShzdHJ1Y3Qg ZHJtX3BsYW5lICpwbGFuZSkKK3sKKwlzdHJ1Y3QgenhfY3J0YyAqemNydGMgPSB0b196eF9jcnRj KHBsYW5lLT5jcnRjKTsKKwlzdHJ1Y3Qgenhfdm91X2h3ICp2b3UgPSB6Y3J0Yy0+dm91OworCXN0 cnVjdCB6eF9wbGFuZSAqenBsYW5lID0gdG9fenhfcGxhbmUocGxhbmUpOworCWNvbnN0IHN0cnVj dCB2b3VfbGF5ZXJfYml0cyAqYml0cyA9IHpwbGFuZS0+Yml0czsKKworCXp4X3dyaXRlbF9tYXNr KHZvdS0+b3NkICsgT1NEX0NUUkwwLCBiaXRzLT5lbmFibGUsIDApOworfQorCiBzdGF0aWMgaXJx cmV0dXJuX3Qgdm91X2lycV9oYW5kbGVyKGludCBpcnEsIHZvaWQgKmRldl9pZCkKIHsKIAlzdHJ1 Y3Qgenhfdm91X2h3ICp2b3UgPSBkZXZfaWQ7CkBAIC00NjksMTkgKzUwOSw5IEBAIHN0YXRpYyB2 b2lkIHZvdV9kdHJjX2luaXQoc3RydWN0IHp4X3ZvdV9odyAqdm91KQogCiBzdGF0aWMgdm9pZCB2 b3VfaHdfaW5pdChzdHJ1Y3Qgenhfdm91X2h3ICp2b3UpCiB7Ci0JLyogU2V0IEdMMCB0byBtYWlu IGNoYW5uZWwgYW5kIEdMMSB0byBhdXggY2hhbm5lbCAqLwotCXp4X3dyaXRlbF9tYXNrKHZvdS0+ b3NkICsgT1NEX0NUUkwwLCBPU0RfQ1RSTDBfR0wwX1NFTCwgMCk7Ci0Jenhfd3JpdGVsX21hc2so dm91LT5vc2QgKyBPU0RfQ1RSTDAsIE9TRF9DVFJMMF9HTDFfU0VMLAotCQkgICAgICAgT1NEX0NU UkwwX0dMMV9TRUwpOwotCiAJLyogUmVsZWFzZSByZXNldCBmb3IgYWxsIFZPVSBtb2R1bGVzICov CiAJenhfd3JpdGVsKHZvdS0+dm91Y3RsICsgVk9VX1NPRlRfUlNULCB+MCk7CiAKLQkvKiBTZWxl Y3QgbWFpbiBjbG9jayBmb3IgR0wwIGFuZCBhdXggY2xvY2sgZm9yIEdMMSBtb2R1bGUgKi8KLQl6 eF93cml0ZWxfbWFzayh2b3UtPnZvdWN0bCArIFZPVV9DTEtfU0VMLCBWT1VfQ0xLX0dMMF9TRUws IDApOwotCXp4X3dyaXRlbF9tYXNrKHZvdS0+dm91Y3RsICsgVk9VX0NMS19TRUwsIFZPVV9DTEtf R0wxX1NFTCwKLQkJICAgICAgIFZPVV9DTEtfR0wxX1NFTCk7Ci0KIAkvKiBFbmFibGUgY2xvY2sg YXV0by1nYXRpbmcgZm9yIGFsbCBWT1UgbW9kdWxlcyAqLwogCXp4X3dyaXRlbCh2b3UtPnZvdWN0 bCArIFZPVV9DTEtfUkVRRU4sIH4wKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3p0 ZS96eF92b3UuaCBiL2RyaXZlcnMvZ3B1L2RybS96dGUvenhfdm91LmgKaW5kZXggMzQ5ZTA2Y2Q4 NmY0Li40YjQzMzliZTY0MWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS96dGUvenhfdm91 LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL3p0ZS96eF92b3UuaApAQCAtNDMsNCArNDMsNyBAQCBz dHJ1Y3Qgdm91X2luZiB7CiBpbnQgenhfdm91X2VuYWJsZV92Ymxhbmsoc3RydWN0IGRybV9kZXZp Y2UgKmRybSwgdW5zaWduZWQgaW50IHBpcGUpOwogdm9pZCB6eF92b3VfZGlzYWJsZV92Ymxhbmso c3RydWN0IGRybV9kZXZpY2UgKmRybSwgdW5zaWduZWQgaW50IHBpcGUpOwogCit2b2lkIHp4X3Zv dV9sYXllcl9lbmFibGUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUpOwordm9pZCB6eF92b3VfbGF5 ZXJfZGlzYWJsZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSk7CisKICNlbmRpZiAvKiBfX1pYX1ZP VV9IX18gKi8KLS0gCjEuOS4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9k cmktZGV2ZWwK