From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lucas Stach Subject: [PATCH RFC 084/111] staging: etnaviv: runtime PM: add initial support Date: Thu, 2 Apr 2015 17:30:26 +0200 Message-ID: <1427988653-754-85-git-send-email-l.stach@pengutronix.de> References: <1427988653-754-1-git-send-email-l.stach@pengutronix.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from metis.ext.pengutronix.de (metis.ext.pengutronix.de [92.198.50.35]) by gabe.freedesktop.org (Postfix) with ESMTP id 0350B6EA6F for ; Thu, 2 Apr 2015 08:31:01 -0700 (PDT) In-Reply-To: <1427988653-754-1-git-send-email-l.stach@pengutronix.de> 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: Russell King , kernel@pengutronix.de List-Id: dri-devel@lists.freedesktop.org RnJvbTogUnVzc2VsbCBLaW5nIDxybWsra2VybmVsQGFybS5saW51eC5vcmcudWs+CgpBZGQgaW5p dGlhbCBydW50aW1lIFBNIHN1cHBvcnQuICBXZSBtYW5hZ2UgdGhlIHJ1bnRpbWUgUE0gc3RhdGUg YmFzZWQKb24gdGhlIGV2ZW50czogd2hlbiB3ZSBhbGxvY2F0ZSBhbiBldmVudCB1cG9uIGNvbW1h bmQgc3VibWlzc2lvbiwgd2UKImdldCIgdGhlIHJ1bnRpbWUgUE0gc3RhdGUsIGNhdXNpbmcgaXQg dG8gcmVzdW1lIGlmIG5vdCBhbHJlYWR5IHJlc3VtZWQuCgpXaGVuIHdlIHJlY2VpdmUgYW4gaW50 ZXJydXB0LCBhbmQgZnJlZSBhbiBldmVudCwgd2UgInB1dCIgdGhlIHJ1bnRpbWUKc3RhdGUuICBX aGVuIGFsbCBldmVudHMgYXJlIGV2ZW50dWFsbHkgZnJlZWQsIHRoZSBydW50aW1lIFBNIHN0YXRl CndpbGwgdGhlbiBpbmRpY2F0ZSB0aGF0IGl0IGNhbiBhdHRlbXB0IHRvIHN1c3BlbmQgdGhlIGRl dmljZS4KCldlIGFsc28gaW5jbHVkZSBhbiBpZGxlIGNhbGxiYWNrIHdoaWNoIGNoZWNrcyB0aGF0 IHRoZSBHUFUgbW9kdWxlcwooZXhjZXB0IGZvciB0aGUgZnJvbnQgZW5kKSBhcmUgaWRsZSBiZWZv cmUgc3VzcGVuZGluZy4gIFRoaXMgd2F5IHdlCmVuc3VyZSB0aGF0IHRoZSBHUFUgaXMgcHJvcGVy bHkgaWRsZSwgYW5kIHJldHJ5IHRoZSBzdXNwZW5kIGxhdGVyIGlmCm5vdC4KClNpZ25lZC1vZmYt Ynk6IFJ1c3NlbGwgS2luZyA8cm1rK2tlcm5lbEBhcm0ubGludXgub3JnLnVrPgpTaWduZWQtb2Zm LWJ5OiBMdWNhcyBTdGFjaCA8bC5zdGFjaEBwZW5ndXRyb25peC5kZT4KLS0tCmxzdDogc3F1YXNo ZWQgZml4IGZvciBQTV9SVU5USU1FIGNvbmZpZyBzeW1ib2wgcmVtb3ZhbAotLS0KIGRyaXZlcnMv c3RhZ2luZy9ldG5hdml2L2V0bmF2aXZfZ3B1LmMgfCAxMTEgKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKystLQogZHJpdmVycy9zdGFnaW5nL2V0bmF2aXYvZXRuYXZpdl9ncHUuaCB8ICAg MSArCiAyIGZpbGVzIGNoYW5nZWQsIDEwNyBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ldG5hdml2L2V0bmF2aXZfZ3B1LmMgYi9kcml2 ZXJzL3N0YWdpbmcvZXRuYXZpdi9ldG5hdml2X2dwdS5jCmluZGV4IGEyMmM1YWI1NThhNy4uMzIw ODRlMDhhMzg3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvZXRuYXZpdi9ldG5hdml2X2dw dS5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ldG5hdml2L2V0bmF2aXZfZ3B1LmMKQEAgLTQ1Nywx MCArNDU3LDE0IEBAIGludCBldG5hdml2X2dwdV9pbml0KHN0cnVjdCBldG5hdml2X2dwdSAqZ3B1 KQogCXN0cnVjdCBpb21tdV9kb21haW4gKmlvbW11OwogCWJvb2wgbW11djI7CiAKKwlyZXQgPSBw bV9ydW50aW1lX2dldF9zeW5jKGdwdS0+ZGV2KTsKKwlpZiAocmV0IDwgMCkKKwkJcmV0dXJuIHJl dDsKKwogCWV0bmF2aXZfaHdfaWRlbnRpZnkoZ3B1KTsKIAlyZXQgPSBldG5hdml2X2h3X3Jlc2V0 KGdwdSk7CiAJaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKKwkJZ290byBmYWlsOwogCiAJLyogU2V0 dXAgSU9NTVUuLiBldmVudHVhbGx5IHdlIHdpbGwgKEkgdGhpbmspIGRvIHRoaXMgb25jZSBwZXIg Y29udGV4dAogCSAqIGFuZCBoYXZlIHNlcGFyYXRlIHBhZ2UgdGFibGVzIHBlciBjb250ZXh0LiAg Rm9yIG5vdywgdG8ga2VlcCB0aGluZ3MKQEAgLTUxMCwxMCArNTE0LDE3IEBAIGludCBldG5hdml2 X2dwdV9pbml0KHN0cnVjdCBldG5hdml2X2dwdSAqZ3B1KQogCiAJLyogTm93IHByb2dyYW0gdGhl IGhhcmR3YXJlICovCiAJZXRuYXZpdl9ncHVfaHdfaW5pdChncHUpOworCWdwdS0+aW5pdGlhbGl6 ZWQgPSB0cnVlOworCisJcG1fcnVudGltZV9tYXJrX2xhc3RfYnVzeShncHUtPmRldik7CisJcG1f cnVudGltZV9wdXRfYXV0b3N1c3BlbmQoZ3B1LT5kZXYpOwogCiAJcmV0dXJuIDA7CiAKIGZhaWw6 CisJcG1fcnVudGltZV9tYXJrX2xhc3RfYnVzeShncHUtPmRldik7CisJcG1fcnVudGltZV9wdXRf YXV0b3N1c3BlbmQoZ3B1LT5kZXYpOworCiAJcmV0dXJuIHJldDsKIH0KIApAQCAtNTQ1LDEwICs1 NTYsMTUgQEAgc3RhdGljIHZvaWQgdmVyaWZ5X2RtYShzdHJ1Y3QgZXRuYXZpdl9ncHUgKmdwdSwg c3RydWN0IGRtYV9kZWJ1ZyAqZGVidWcpCiB2b2lkIGV0bmF2aXZfZ3B1X2RlYnVnZnMoc3RydWN0 IGV0bmF2aXZfZ3B1ICpncHUsIHN0cnVjdCBzZXFfZmlsZSAqbSkKIHsKIAlzdHJ1Y3QgZG1hX2Rl YnVnIGRlYnVnOwotCXUzMiBkbWFfbG8gPSBncHVfcmVhZChncHUsIFZJVlNfRkVfRE1BX0xPVyk7 Ci0JdTMyIGRtYV9oaSA9IGdwdV9yZWFkKGdwdSwgVklWU19GRV9ETUFfSElHSCk7Ci0JdTMyIGF4 aSA9IGdwdV9yZWFkKGdwdSwgVklWU19ISV9BWElfU1RBVFVTKTsKLQl1MzIgaWRsZSA9IGdwdV9y ZWFkKGdwdSwgVklWU19ISV9JRExFX1NUQVRFKTsKKwl1MzIgZG1hX2xvLCBkbWFfaGksIGF4aSwg aWRsZTsKKworCWlmIChwbV9ydW50aW1lX2dldF9zeW5jKGdwdS0+ZGV2KSA8IDApCisJCXJldHVy bjsKKworCWRtYV9sbyA9IGdwdV9yZWFkKGdwdSwgVklWU19GRV9ETUFfTE9XKTsKKwlkbWFfaGkg PSBncHVfcmVhZChncHUsIFZJVlNfRkVfRE1BX0hJR0gpOworCWF4aSA9IGdwdV9yZWFkKGdwdSwg VklWU19ISV9BWElfU1RBVFVTKTsKKwlpZGxlID0gZ3B1X3JlYWQoZ3B1LCBWSVZTX0hJX0lETEVf U1RBVEUpOwogCiAJdmVyaWZ5X2RtYShncHUsICZkZWJ1Zyk7CiAKQEAgLTYxMCw2ICs2MjYsOSBA QCB2b2lkIGV0bmF2aXZfZ3B1X2RlYnVnZnMoc3RydWN0IGV0bmF2aXZfZ3B1ICpncHUsIHN0cnVj dCBzZXFfZmlsZSAqbSkKIAlzZXFfcHJpbnRmKG0sICJcdCBzdGF0ZSAxOiAweCUwOHhcbiIsIGRl YnVnLnN0YXRlWzFdKTsKIAlzZXFfcHJpbnRmKG0sICJcdCBsYXN0IGZldGNoIDY0IGJpdCB3b3Jk OiAweCUwOHggMHglMDh4XG4iLAogCQkgICBkbWFfbG8sIGRtYV9oaSk7CisKKwlwbV9ydW50aW1l X21hcmtfbGFzdF9idXN5KGdwdS0+ZGV2KTsKKwlwbV9ydW50aW1lX3B1dF9hdXRvc3VzcGVuZChn cHUtPmRldik7CiB9CiAjZW5kaWYKIApAQCAtODE5LDYgKzgzOCwxMSBAQCBpbnQgZXRuYXZpdl9n cHVfc3VibWl0KHN0cnVjdCBldG5hdml2X2dwdSAqZ3B1LAogCXN0cnVjdCBkcm1fZGV2aWNlICpk ZXYgPSBncHUtPmRybTsKIAlzdHJ1Y3QgZXRuYXZpdl9kcm1fcHJpdmF0ZSAqcHJpdiA9IGRldi0+ ZGV2X3ByaXZhdGU7CiAJdW5zaWduZWQgaW50IGV2ZW50LCBpOworCWludCByZXQ7CisKKwlyZXQg PSBwbV9ydW50aW1lX2dldF9zeW5jKGdwdS0+ZGV2KTsKKwlpZiAocmV0IDwgMCkKKwkJcmV0dXJu IHJldDsKIAogCS8qCiAJICogVE9ETwpAQCAtODMyLDYgKzg1Niw3IEBAIGludCBldG5hdml2X2dw dV9zdWJtaXQoc3RydWN0IGV0bmF2aXZfZ3B1ICpncHUsCiAJZXZlbnQgPSBldmVudF9hbGxvYyhn cHUpOwogCWlmICh1bmxpa2VseShldmVudCA9PSB+MFUpKSB7CiAJCURSTV9FUlJPUigibm8gZnJl ZSBldmVudFxuIik7CisJCXBtX3J1bnRpbWVfcHV0X2F1dG9zdXNwZW5kKGdwdS0+ZGV2KTsKIAkJ cmV0dXJuIC1FQlVTWTsKIAl9CiAKQEAgLTg4NCw2ICs5MDksOCBAQCBzdGF0aWMgaXJxcmV0dXJu X3QgaXJxX2hhbmRsZXIoaW50IGlycSwgdm9pZCAqZGF0YSkKIAlpZiAoaW50ciAhPSAwKSB7CiAJ CWludCBldmVudDsKIAorCQlwbV9ydW50aW1lX21hcmtfbGFzdF9idXN5KGdwdS0+ZGV2KTsKKwog CQlkZXZfZGJnKGdwdS0+ZGV2LCAiaW50ciAweCUwOHhcbiIsIGludHIpOwogCiAJCWlmIChpbnRy ICYgVklWU19ISV9JTlRSX0FDS05PV0xFREdFX0FYSV9CVVNfRVJST1IpIHsKQEAgLTkxMSw2ICs5 MzgsMTUgQEAgc3RhdGljIGlycXJldHVybl90IGlycV9oYW5kbGVyKGludCBpcnEsIHZvaWQgKmRh dGEpCiAJCQkJZ3B1LT5sYXN0X3JpbmdfcG9zID0gZ3B1LT5ldmVudFtldmVudF0ucmluZ19wb3M7 CiAJCQl9CiAJCQlldmVudF9mcmVlKGdwdSwgZXZlbnQpOworCisJCQkvKgorCQkJICogV2UgbmVl ZCB0byBiYWxhbmNlIHRoZSBydW50aW1lIFBNIGNvdW50IGNhdXNlZCBieQorCQkJICogZWFjaCBz dWJtaXNzaW9uLiAgVXBvbiBzdWJtaXNzaW9uLCB3ZSBpbmNyZW1lbnQKKwkJCSAqIHRoZSBydW50 aW1lIFBNIGNvdW50ZXIsIGFuZCBhbGxvY2F0ZSBvbmUgZXZlbnQuCisJCQkgKiBTbyBoZXJlLCB3 ZSBwdXQgdGhlIHJ1bnRpbWUgUE0gY291bnQgZm9yIGVhY2gKKwkJCSAqIGNvbXBsZXRlZCBldmVu dC4KKwkJCSAqLworCQkJcG1fcnVudGltZV9wdXRfYXV0b3N1c3BlbmQoZ3B1LT5kZXYpOwogCQl9 CiAKIAkJZXRuYXZpdl9ncHVfcmV0aXJlKGdwdSk7CkBAIC0xMDAzLDcgKzEwMzksMTEgQEAgc3Rh dGljIGludCBldG5hdml2X2dwdV9iaW5kKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmlj ZSAqbWFzdGVyLAogCiAJZGV2X2luZm8oZGV2LCAicG9zdCBncHVbaWR4XTogJXBcbiIsIHByaXYt PmdwdVtpZHhdKTsKIAorI2lmZGVmIENPTkZJR19QTQorCXJldCA9IHBtX3J1bnRpbWVfZ2V0X3N5 bmMoZ3B1LT5kZXYpOworI2Vsc2UKIAlyZXQgPSBldG5hdml2X2dwdV9yZXN1bWUoZ3B1KTsKKyNl bmRpZgogCWlmIChyZXQgPCAwKQogCQlyZXR1cm4gcmV0OwogCkBAIC0xMDE1LDYgKzEwNTUsMTAg QEAgc3RhdGljIGludCBldG5hdml2X2dwdV9iaW5kKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0 IGRldmljZSAqbWFzdGVyLAogCiAJc2V0dXBfdGltZXIoJmdwdS0+aGFuZ2NoZWNrX3RpbWVyLCBo YW5nY2hlY2tfaGFuZGxlciwKIAkJCSh1bnNpZ25lZCBsb25nKWdwdSk7CisKKwlwbV9ydW50aW1l X21hcmtfbGFzdF9idXN5KGdwdS0+ZGV2KTsKKwlwbV9ydW50aW1lX3B1dF9hdXRvc3VzcGVuZChn cHUtPmRldik7CisKIAlyZXR1cm4gMDsKIGZhaWw6CiAJcmV0dXJuIC0xOwpAQCAtMTAzMSw3ICsx MDc1LDEyIEBAIHN0YXRpYyB2b2lkIGV0bmF2aXZfZ3B1X3VuYmluZChzdHJ1Y3QgZGV2aWNlICpk ZXYsIHN0cnVjdCBkZXZpY2UgKm1hc3RlciwKIAogCVdBUk5fT04oIWxpc3RfZW1wdHkoJmdwdS0+ YWN0aXZlX2xpc3QpKTsKIAorI2lmZGVmIENPTkZJR19QTQorCXBtX3J1bnRpbWVfZ2V0X3N5bmMo Z3B1LT5kZXYpOworCXBtX3J1bnRpbWVfcHV0X3N5bmNfc3VzcGVuZChncHUtPmRldik7CisjZWxz ZQogCWV0bmF2aXZfZ3B1X3N1c3BlbmQoZ3B1KTsKKyNlbmRpZgogCiAJaWYgKGdwdS0+YnVmZmVy KSB7CiAJCWRybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlKGdwdS0+YnVmZmVyKTsKQEAgLTExMzAs NiArMTE3OSwxNSBAQCBzdGF0aWMgaW50IGV0bmF2aXZfZ3B1X3BsYXRmb3JtX3Byb2JlKHN0cnVj dCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJLyogVE9ETzogZmlndXJlIG91dCBtYXggbWFwcGVk IHNpemUgKi8KIAlkZXZfc2V0X2RydmRhdGEoZGV2LCBncHUpOwogCisJLyoKKwkgKiBXZSB0cmVh dCB0aGUgZGV2aWNlIGFzIGluaXRpYWxseSBzdXNwZW5kZWQuICBUaGUgcnVudGltZSBQTQorCSAq IGF1dG9zdXNwZW5kIGRlbGF5IGlzIHJhdGhlciBhcmJpdGFyeTogbm8gbWVhc3VyZW1lbnRzIGhh dmUKKwkgKiB5ZXQgYmVlbiBwZXJmb3JtZWQgdG8gZGV0ZXJtaW5lIGFuIGFwcHJvcHJpYXRlIHZh bHVlLgorCSAqLworCXBtX3J1bnRpbWVfdXNlX2F1dG9zdXNwZW5kKGdwdS0+ZGV2KTsKKwlwbV9y dW50aW1lX3NldF9hdXRvc3VzcGVuZF9kZWxheShncHUtPmRldiwgMjAwKTsKKwlwbV9ydW50aW1l X2VuYWJsZShncHUtPmRldik7CisKIAllcnIgPSBjb21wb25lbnRfYWRkKCZwZGV2LT5kZXYsICZn cHVfb3BzKTsKIAlpZiAoZXJyIDwgMCkgewogCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJmYWlsZWQg dG8gcmVnaXN0ZXIgY29tcG9uZW50OiAlZFxuIiwgZXJyKTsKQEAgLTExNDUsMTMgKzEyMDMsNTYg QEAgZmFpbDoKIHN0YXRpYyBpbnQgZXRuYXZpdl9ncHVfcGxhdGZvcm1fcmVtb3ZlKHN0cnVjdCBw bGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiB7CiAJY29tcG9uZW50X2RlbCgmcGRldi0+ZGV2LCAmZ3B1 X29wcyk7CisJcG1fcnVudGltZV9kaXNhYmxlKCZwZGV2LT5kZXYpOwogCXJldHVybiAwOwogfQog CisjaWZkZWYgQ09ORklHX1BNCitzdGF0aWMgaW50IGV0bmF2aXZfZ3B1X3JwbV9zdXNwZW5kKHN0 cnVjdCBkZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3QgZXRuYXZpdl9ncHUgKmdwdSA9IGRldl9nZXRf ZHJ2ZGF0YShkZXYpOworCXUzMiBpZGxlLCBtYXNrOworCisJLyogSWYgd2UgaGF2ZSBvdXRzdGFu ZGluZyBmZW5jZXMsIHdlJ3JlIG5vdCBpZGxlICovCisJaWYgKGdwdS0+cmV0aXJlZF9mZW5jZSAh PSBncHUtPnN1Ym1pdHRlZF9mZW5jZSkKKwkJcmV0dXJuIC1FQlVTWTsKKworCS8qIENoZWNrIHdo ZXRoZXIgdGhlIGhhcmR3YXJlIChleGNlcHQgRkUpIGlzIGlkbGUgKi8KKwltYXNrID0gZ3B1LT5p ZGxlX21hc2sgJiB+VklWU19ISV9JRExFX1NUQVRFX0ZFOworCWlkbGUgPSBncHVfcmVhZChncHUs IFZJVlNfSElfSURMRV9TVEFURSkgJiBtYXNrOworCWlmIChpZGxlICE9IG1hc2spCisJCXJldHVy biAtRUJVU1k7CisKKwlyZXR1cm4gZXRuYXZpdl9ncHVfc3VzcGVuZChncHUpOworfQorCitzdGF0 aWMgaW50IGV0bmF2aXZfZ3B1X3JwbV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KQoreworCXN0 cnVjdCBldG5hdml2X2dwdSAqZ3B1ID0gZGV2X2dldF9kcnZkYXRhKGRldik7CisJaW50IHJldDsK KworCXJldCA9IGV0bmF2aXZfZ3B1X3Jlc3VtZShncHUpOworCWlmIChyZXQpCisJCXJldHVybiBy ZXQ7CisKKwkvKiBSZS1pbml0aWFsaXNlIHRoZSBiYXNpYyBoYXJkd2FyZSBzdGF0ZSAqLworCWlm IChncHUtPmluaXRpYWxpemVkKQorCQlldG5hdml2X2dwdV9od19pbml0KGdwdSk7CisKKwlyZXR1 cm4gMDsKK30KKyNlbmRpZgorCitzdGF0aWMgY29uc3Qgc3RydWN0IGRldl9wbV9vcHMgZXRuYXZp dl9ncHVfcG1fb3BzID0geworCVNFVF9SVU5USU1FX1BNX09QUyhldG5hdml2X2dwdV9ycG1fc3Vz cGVuZCwgZXRuYXZpdl9ncHVfcnBtX3Jlc3VtZSwKKwkJCSAgIE5VTEwpCit9OworCiBzdHJ1Y3Qg cGxhdGZvcm1fZHJpdmVyIGV0bmF2aXZfZ3B1X2RyaXZlciA9IHsKIAkuZHJpdmVyID0gewogCQku bmFtZSA9ICJldG5hdml2LWdwdSIsCiAJCS5vd25lciA9IFRISVNfTU9EVUxFLAorCQkucG0gPSAm ZXRuYXZpdl9ncHVfcG1fb3BzLAogCQkub2ZfbWF0Y2hfdGFibGUgPSBldG5hdml2X2dwdV9tYXRj aCwKIAl9LAogCS5wcm9iZSA9IGV0bmF2aXZfZ3B1X3BsYXRmb3JtX3Byb2JlLApkaWZmIC0tZ2l0 IGEvZHJpdmVycy9zdGFnaW5nL2V0bmF2aXYvZXRuYXZpdl9ncHUuaCBiL2RyaXZlcnMvc3RhZ2lu Zy9ldG5hdml2L2V0bmF2aXZfZ3B1LmgKaW5kZXggYmJjOTFiNmVhOGZlLi4zYTRjMTExYTQ5Nzgg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9ldG5hdml2L2V0bmF2aXZfZ3B1LmgKKysrIGIv ZHJpdmVycy9zdGFnaW5nL2V0bmF2aXYvZXRuYXZpdl9ncHUuaApAQCAtODksNiArODksNyBAQCBz dHJ1Y3QgZXRuYXZpdl9ncHUgewogCXN0cnVjdCBkZXZpY2UgKmRldjsKIAlzdHJ1Y3QgZXRuYXZp dl9jaGlwX2lkZW50aXR5IGlkZW50aXR5OwogCWludCBwaXBlOworCWJvb2wgaW5pdGlhbGl6ZWQ7 CiAKIAkvKiAncmluZyctYnVmZmVyOiAqLwogCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqYnVmZmVy OwotLSAKMi4xLjQKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs Cg==