From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH v5 4/4] drm/i915: Get rid of intel_dp_dpcd_read_wake() Date: Fri, 22 Apr 2016 18:54:06 +0200 Message-ID: <20160422165406.GA2510@phenom.ffwll.local> References: <87d1pvt9ka.fsf@intel.com> <1460559513-32280-1-git-send-email-cpaul@redhat.com> <1460559513-32280-5-git-send-email-cpaul@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <1460559513-32280-5-git-send-email-cpaul@redhat.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Lyude Cc: intel-gfx@lists.freedesktop.org, open list , dri-devel@lists.freedesktop.org, Daniel Vetter List-Id: dri-devel@lists.freedesktop.org T24gV2VkLCBBcHIgMTMsIDIwMTYgYXQgMTA6NTg6MzNBTSAtMDQwMCwgTHl1ZGUgd3JvdGU6Cj4g U2luY2Ugd2UndmUgZml4ZWQgdXAgZHJtX2RwX2RwY2RfcmVhZCgpIHRvIGFsbG93IGZvciByZXRy aWVzIHdoZW4gdGhpbmdzCj4gdGltZW91dCwgdGhlcmUncyBubyB1c2UgZm9yIGhhdmluZyB0aGlz IGZ1bmN0aW9uIGFueW1vcmUuIEdvb2QgcmlkZGVucy4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBMeXVk ZSA8Y3BhdWxAcmVkaGF0LmNvbT4KCkFsbCBhcHBsaWVkIHRvIGRybS1taXNjLCB0aGFua3MuCi1E YW5pZWwKCj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgfCA4MSArKysr KysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICAxIGZpbGUgY2hhbmdlZCwg MjMgaW5zZXJ0aW9ucygrKSwgNTggZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k cC5jCj4gaW5kZXggNmM2Zjk1YTIuLjM2MzYyOWMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHAuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rw LmMKPiBAQCAtMzA3NCw0NyArMzA3NCwxNCBAQCBzdGF0aWMgdm9pZCBjaHZfZHBfcG9zdF9wbGxf ZGlzYWJsZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKPiAgfQo+ICAKPiAgLyoKPiAt ICogTmF0aXZlIHJlYWQgd2l0aCByZXRyeSBmb3IgbGluayBzdGF0dXMgYW5kIHJlY2VpdmVyIGNh cGFiaWxpdHkgcmVhZHMgZm9yCj4gLSAqIGNhc2VzIHdoZXJlIHRoZSBzaW5rIG1heSBzdGlsbCBi ZSBhc2xlZXAuCj4gLSAqCj4gLSAqIFNpbmtzIGFyZSAqc3VwcG9zZWQqIHRvIGNvbWUgdXAgd2l0 aGluIDFtcyBmcm9tIGFuIG9mZiBzdGF0ZSwgYnV0IHdlJ3JlIGFsc28KPiAtICogc3VwcG9zZWQg dG8gcmV0cnkgMyB0aW1lcyBwZXIgdGhlIHNwZWMuCj4gLSAqLwo+IC1zdGF0aWMgc3NpemVfdAo+ IC1pbnRlbF9kcF9kcGNkX3JlYWRfd2FrZShzdHJ1Y3QgZHJtX2RwX2F1eCAqYXV4LCB1bnNpZ25l ZCBpbnQgb2Zmc2V0LAo+IC0JCQl2b2lkICpidWZmZXIsIHNpemVfdCBzaXplKQo+IC17Cj4gLQlz c2l6ZV90IHJldDsKPiAtCWludCBpOwo+IC0KPiAtCS8qCj4gLQkgKiBTb21ldGltZSB3ZSBqdXN0 IGdldCB0aGUgc2FtZSBpbmNvcnJlY3QgYnl0ZSByZXBlYXRlZAo+IC0JICogb3ZlciB0aGUgZW50 aXJlIGJ1ZmZlci4gRG9pbmcganVzdCBvbmUgdGhyb3cgYXdheSByZWFkCj4gLQkgKiBpbml0aWFs bHkgc2VlbXMgdG8gInNvbHZlIiBpdC4KPiAtCSAqLwo+IC0JZHJtX2RwX2RwY2RfcmVhZChhdXgs IERQX0RQQ0RfUkVWLCBidWZmZXIsIDEpOwo+IC0KPiAtCWZvciAoaSA9IDA7IGkgPCAzOyBpKysp IHsKPiAtCQlyZXQgPSBkcm1fZHBfZHBjZF9yZWFkKGF1eCwgb2Zmc2V0LCBidWZmZXIsIHNpemUp Owo+IC0JCWlmIChyZXQgPT0gc2l6ZSkKPiAtCQkJcmV0dXJuIHJldDsKPiAtCQltc2xlZXAoMSk7 Cj4gLQl9Cj4gLQo+IC0JcmV0dXJuIHJldDsKPiAtfQo+IC0KPiAtLyoKPiAgICogRmV0Y2ggQVVY IENIIHJlZ2lzdGVycyAweDIwMiAtIDB4MjA3IHdoaWNoIGNvbnRhaW4KPiAgICogbGluayBzdGF0 dXMgaW5mb3JtYXRpb24KPiAgICovCj4gIGJvb2wKPiAgaW50ZWxfZHBfZ2V0X2xpbmtfc3RhdHVz KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsIHVpbnQ4X3QgbGlua19zdGF0dXNbRFBfTElOS19T VEFUVVNfU0laRV0pCj4gIHsKPiAtCXJldHVybiBpbnRlbF9kcF9kcGNkX3JlYWRfd2FrZSgmaW50 ZWxfZHAtPmF1eCwKPiAtCQkJCSAgICAgICBEUF9MQU5FMF8xX1NUQVRVUywKPiAtCQkJCSAgICAg ICBsaW5rX3N0YXR1cywKPiAtCQkJCSAgICAgICBEUF9MSU5LX1NUQVRVU19TSVpFKSA9PSBEUF9M SU5LX1NUQVRVU19TSVpFOwo+ICsJcmV0dXJuIGRybV9kcF9kcGNkX3JlYWQoJmludGVsX2RwLT5h dXgsIERQX0xBTkUwXzFfU1RBVFVTLCBsaW5rX3N0YXR1cywKPiArCQkJCURQX0xJTktfU1RBVFVT X1NJWkUpID09IERQX0xJTktfU1RBVFVTX1NJWkU7Cj4gIH0KPiAgCj4gIC8qIFRoZXNlIGFyZSBz b3VyY2Utc3BlY2lmaWMgdmFsdWVzLiAqLwo+IEBAIC0zNzQ5LDggKzM3MTYsOCBAQCBpbnRlbF9k cF9nZXRfZHBjZChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ICAJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAgCXVpbnQ4X3QgcmV2Owo+ ICAKPiAtCWlmIChpbnRlbF9kcF9kcGNkX3JlYWRfd2FrZSgmaW50ZWxfZHAtPmF1eCwgMHgwMDAs IGludGVsX2RwLT5kcGNkLAo+IC0JCQkJICAgIHNpemVvZihpbnRlbF9kcC0+ZHBjZCkpIDwgMCkK PiArCWlmIChkcm1fZHBfZHBjZF9yZWFkKCZpbnRlbF9kcC0+YXV4LCAweDAwMCwgaW50ZWxfZHAt PmRwY2QsCj4gKwkJCSAgICAgc2l6ZW9mKGludGVsX2RwLT5kcGNkKSkgPCAwKQo+ICAJCXJldHVy biBmYWxzZTsgLyogYXV4IHRyYW5zZmVyIGZhaWxlZCAqLwo+ICAKPiAgCURSTV9ERUJVR19LTVMo IkRQQ0Q6ICUqcGhcbiIsIChpbnQpIHNpemVvZihpbnRlbF9kcC0+ZHBjZCksIGludGVsX2RwLT5k cGNkKTsKPiBAQCAtMzc1OCw4ICszNzI1LDggQEAgaW50ZWxfZHBfZ2V0X2RwY2Qoc3RydWN0IGlu dGVsX2RwICppbnRlbF9kcCkKPiAgCWlmIChpbnRlbF9kcC0+ZHBjZFtEUF9EUENEX1JFVl0gPT0g MCkKPiAgCQlyZXR1cm4gZmFsc2U7IC8qIERQQ0Qgbm90IHByZXNlbnQgKi8KPiAgCj4gLQlpZiAo aW50ZWxfZHBfZHBjZF9yZWFkX3dha2UoJmludGVsX2RwLT5hdXgsIERQX1NJTktfQ09VTlQsCj4g LQkJCQkgICAgJmludGVsX2RwLT5zaW5rX2NvdW50LCAxKSA8IDApCj4gKwlpZiAoZHJtX2RwX2Rw Y2RfcmVhZCgmaW50ZWxfZHAtPmF1eCwgRFBfU0lOS19DT1VOVCwKPiArCQkJICAgICAmaW50ZWxf ZHAtPnNpbmtfY291bnQsIDEpIDwgMCkKPiAgCQlyZXR1cm4gZmFsc2U7Cj4gIAo+ICAJLyoKPiBA QCAtMzc4Miw5ICszNzQ5LDkgQEAgaW50ZWxfZHBfZ2V0X2RwY2Qoc3RydWN0IGludGVsX2RwICpp bnRlbF9kcCkKPiAgCS8qIENoZWNrIGlmIHRoZSBwYW5lbCBzdXBwb3J0cyBQU1IgKi8KPiAgCW1l bXNldChpbnRlbF9kcC0+cHNyX2RwY2QsIDAsIHNpemVvZihpbnRlbF9kcC0+cHNyX2RwY2QpKTsK PiAgCWlmIChpc19lZHAoaW50ZWxfZHApKSB7Cj4gLQkJaW50ZWxfZHBfZHBjZF9yZWFkX3dha2Uo JmludGVsX2RwLT5hdXgsIERQX1BTUl9TVVBQT1JULAo+IC0JCQkJCWludGVsX2RwLT5wc3JfZHBj ZCwKPiAtCQkJCQlzaXplb2YoaW50ZWxfZHAtPnBzcl9kcGNkKSk7Cj4gKwkJZHJtX2RwX2RwY2Rf cmVhZCgmaW50ZWxfZHAtPmF1eCwgRFBfUFNSX1NVUFBPUlQsCj4gKwkJCQkgaW50ZWxfZHAtPnBz cl9kcGNkLAo+ICsJCQkJIHNpemVvZihpbnRlbF9kcC0+cHNyX2RwY2QpKTsKPiAgCQlpZiAoaW50 ZWxfZHAtPnBzcl9kcGNkWzBdICYgRFBfUFNSX0lTX1NVUFBPUlRFRCkgewo+ICAJCQlkZXZfcHJp di0+cHNyLnNpbmtfc3VwcG9ydCA9IHRydWU7Cj4gIAkJCURSTV9ERUJVR19LTVMoIkRldGVjdGVk IEVEUCBQU1IgUGFuZWwuXG4iKTsKPiBAQCAtMzc5NSw5ICszNzYyLDkgQEAgaW50ZWxfZHBfZ2V0 X2RwY2Qoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiAgCQkJdWludDhfdCBmcmFtZV9zeW5j X2NhcDsKPiAgCj4gIAkJCWRldl9wcml2LT5wc3Iuc2lua19zdXBwb3J0ID0gdHJ1ZTsKPiAtCQkJ aW50ZWxfZHBfZHBjZF9yZWFkX3dha2UoJmludGVsX2RwLT5hdXgsCj4gLQkJCQkJRFBfU0lOS19E RVZJQ0VfQVVYX0ZSQU1FX1NZTkNfQ0FQLAo+IC0JCQkJCSZmcmFtZV9zeW5jX2NhcCwgMSk7Cj4g KwkJCWRybV9kcF9kcGNkX3JlYWQoJmludGVsX2RwLT5hdXgsCj4gKwkJCQkJIERQX1NJTktfREVW SUNFX0FVWF9GUkFNRV9TWU5DX0NBUCwKPiArCQkJCQkgJmZyYW1lX3N5bmNfY2FwLCAxKTsKPiAg CQkJZGV2X3ByaXYtPnBzci5hdXhfZnJhbWVfc3luYyA9IGZyYW1lX3N5bmNfY2FwID8gdHJ1ZSA6 IGZhbHNlOwo+ICAJCQkvKiBQU1IyIG5lZWRzIGZyYW1lIHN5bmMgYXMgd2VsbCAqLwo+ICAJCQlk ZXZfcHJpdi0+cHNyLnBzcjJfc3VwcG9ydCA9IGRldl9wcml2LT5wc3IuYXV4X2ZyYW1lX3N5bmM7 Cj4gQEAgLTM4MTMsMTUgKzM3ODAsMTMgQEAgaW50ZWxfZHBfZ2V0X2RwY2Qoc3RydWN0IGludGVs X2RwICppbnRlbF9kcCkKPiAgCS8qIEludGVybWVkaWF0ZSBmcmVxdWVuY3kgc3VwcG9ydCAqLwo+ ICAJaWYgKGlzX2VkcChpbnRlbF9kcCkgJiYKPiAgCSAgICAoaW50ZWxfZHAtPmRwY2RbRFBfRURQ X0NPTkZJR1VSQVRJT05fQ0FQXSAmCURQX0RQQ0RfRElTUExBWV9DT05UUk9MX0NBUEFCTEUpICYm Cj4gLQkgICAgKGludGVsX2RwX2RwY2RfcmVhZF93YWtlKCZpbnRlbF9kcC0+YXV4LCBEUF9FRFBf RFBDRF9SRVYsICZyZXYsIDEpID09IDEpICYmCj4gKwkgICAgKGRybV9kcF9kcGNkX3JlYWQoJmlu dGVsX2RwLT5hdXgsIERQX0VEUF9EUENEX1JFViwgJnJldiwgMSkgPT0gMSkgJiYKPiAgCSAgICAo cmV2ID49IDB4MDMpKSB7IC8qIGVEcCB2MS40IG9yIGhpZ2hlciAqLwo+ICAJCV9fbGUxNiBzaW5r X3JhdGVzW0RQX01BWF9TVVBQT1JURURfUkFURVNdOwo+ICAJCWludCBpOwo+ICAKPiAtCQlpbnRl bF9kcF9kcGNkX3JlYWRfd2FrZSgmaW50ZWxfZHAtPmF1eCwKPiAtCQkJCURQX1NVUFBPUlRFRF9M SU5LX1JBVEVTLAo+IC0JCQkJc2lua19yYXRlcywKPiAtCQkJCXNpemVvZihzaW5rX3JhdGVzKSk7 Cj4gKwkJZHJtX2RwX2RwY2RfcmVhZCgmaW50ZWxfZHAtPmF1eCwgRFBfU1VQUE9SVEVEX0xJTktf UkFURVMsCj4gKwkJCQlzaW5rX3JhdGVzLCBzaXplb2Yoc2lua19yYXRlcykpOwo+ICAKPiAgCQlm b3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShzaW5rX3JhdGVzKTsgaSsrKSB7Cj4gIAkJCWludCB2 YWwgPSBsZTE2X3RvX2NwdShzaW5rX3JhdGVzW2ldKTsKPiBAQCAtMzg0NCw5ICszODA5LDkgQEAg aW50ZWxfZHBfZ2V0X2RwY2Qoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiAgCWlmIChpbnRl bF9kcC0+ZHBjZFtEUF9EUENEX1JFVl0gPT0gMHgxMCkKPiAgCQlyZXR1cm4gdHJ1ZTsgLyogbm8g cGVyLXBvcnQgZG93bnN0cmVhbSBpbmZvICovCj4gIAo+IC0JaWYgKGludGVsX2RwX2RwY2RfcmVh ZF93YWtlKCZpbnRlbF9kcC0+YXV4LCBEUF9ET1dOU1RSRUFNX1BPUlRfMCwKPiAtCQkJCSAgICBp bnRlbF9kcC0+ZG93bnN0cmVhbV9wb3J0cywKPiAtCQkJCSAgICBEUF9NQVhfRE9XTlNUUkVBTV9Q T1JUUykgPCAwKQo+ICsJaWYgKGRybV9kcF9kcGNkX3JlYWQoJmludGVsX2RwLT5hdXgsIERQX0RP V05TVFJFQU1fUE9SVF8wLAo+ICsJCQkgICAgIGludGVsX2RwLT5kb3duc3RyZWFtX3BvcnRzLAo+ ICsJCQkgICAgIERQX01BWF9ET1dOU1RSRUFNX1BPUlRTKSA8IDApCj4gIAkJcmV0dXJuIGZhbHNl OyAvKiBkb3duc3RyZWFtIHBvcnQgc3RhdHVzIGZldGNoIGZhaWxlZCAqLwo+ICAKPiAgCXJldHVy biB0cnVlOwo+IEBAIC0zODYwLDExICszODI1LDExIEBAIGludGVsX2RwX3Byb2JlX291aShzdHJ1 Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ICAJaWYgKCEoaW50ZWxfZHAtPmRwY2RbRFBfRE9XTl9T VFJFQU1fUE9SVF9DT1VOVF0gJiBEUF9PVUlfU1VQUE9SVCkpCj4gIAkJcmV0dXJuOwo+ICAKPiAt CWlmIChpbnRlbF9kcF9kcGNkX3JlYWRfd2FrZSgmaW50ZWxfZHAtPmF1eCwgRFBfU0lOS19PVUks IGJ1ZiwgMykgPT0gMykKPiArCWlmIChkcm1fZHBfZHBjZF9yZWFkKCZpbnRlbF9kcC0+YXV4LCBE UF9TSU5LX09VSSwgYnVmLCAzKSA9PSAzKQo+ICAJCURSTV9ERUJVR19LTVMoIlNpbmsgT1VJOiAl MDJoeCUwMmh4JTAyaHhcbiIsCj4gIAkJCSAgICAgIGJ1ZlswXSwgYnVmWzFdLCBidWZbMl0pOwo+ ICAKPiAtCWlmIChpbnRlbF9kcF9kcGNkX3JlYWRfd2FrZSgmaW50ZWxfZHAtPmF1eCwgRFBfQlJB TkNIX09VSSwgYnVmLCAzKSA9PSAzKQo+ICsJaWYgKGRybV9kcF9kcGNkX3JlYWQoJmludGVsX2Rw LT5hdXgsIERQX0JSQU5DSF9PVUksIGJ1ZiwgMykgPT0gMykKPiAgCQlEUk1fREVCVUdfS01TKCJC cmFuY2ggT1VJOiAlMDJoeCUwMmh4JTAyaHhcbiIsCj4gIAkJCSAgICAgIGJ1ZlswXSwgYnVmWzFd LCBidWZbMl0pOwo+ICB9Cj4gQEAgLTM4ODMsNyArMzg0OCw3IEBAIGludGVsX2RwX3Byb2JlX21z dChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ICAJaWYgKGludGVsX2RwLT5kcGNkW0RQX0RQ Q0RfUkVWXSA8IDB4MTIpCj4gIAkJcmV0dXJuIGZhbHNlOwo+ICAKPiAtCWlmIChpbnRlbF9kcF9k cGNkX3JlYWRfd2FrZSgmaW50ZWxfZHAtPmF1eCwgRFBfTVNUTV9DQVAsIGJ1ZiwgMSkpIHsKPiAr CWlmIChkcm1fZHBfZHBjZF9yZWFkKCZpbnRlbF9kcC0+YXV4LCBEUF9NU1RNX0NBUCwgYnVmLCAx KSkgewo+ICAJCWlmIChidWZbMF0gJiBEUF9NU1RfQ0FQKSB7Cj4gIAkJCURSTV9ERUJVR19LTVMo IlNpbmsgaXMgTVNUIGNhcGFibGVcbiIpOwo+ICAJCQlpbnRlbF9kcC0+aXNfbXN0ID0gdHJ1ZTsK PiBAQCAtNDAyMCw3ICszOTg1LDcgQEAgc3RvcDoKPiAgc3RhdGljIGJvb2wKPiAgaW50ZWxfZHBf Z2V0X3NpbmtfaXJxKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsIHU4ICpzaW5rX2lycV92ZWN0 b3IpCj4gIHsKPiAtCXJldHVybiBpbnRlbF9kcF9kcGNkX3JlYWRfd2FrZSgmaW50ZWxfZHAtPmF1 eCwKPiArCXJldHVybiBkcm1fZHBfZHBjZF9yZWFkKCZpbnRlbF9kcC0+YXV4LAo+ICAJCQkJICAg ICAgIERQX0RFVklDRV9TRVJWSUNFX0lSUV9WRUNUT1IsCj4gIAkJCQkgICAgICAgc2lua19pcnFf dmVjdG9yLCAxKSA9PSAxOwo+ICB9Cj4gQEAgLTQwMzAsNyArMzk5NSw3IEBAIGludGVsX2RwX2dl dF9zaW5rX2lycV9lc2koc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwgdTggKnNpbmtfaXJxX3Zl Y3RvcikKPiAgewo+ICAJaW50IHJldDsKPiAgCj4gLQlyZXQgPSBpbnRlbF9kcF9kcGNkX3JlYWRf d2FrZSgmaW50ZWxfZHAtPmF1eCwKPiArCXJldCA9IGRybV9kcF9kcGNkX3JlYWQoJmludGVsX2Rw LT5hdXgsCj4gIAkJCQkJICAgICBEUF9TSU5LX0NPVU5UX0VTSSwKPiAgCQkJCQkgICAgIHNpbmtf aXJxX3ZlY3RvciwgMTQpOwo+ICAJaWYgKHJldCAhPSAxNCkKPiAtLSAKPiAyLjUuNQo+IAo+IF9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gZHJpLWRldmVs IG1haWxpbmcgbGlzdAo+IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwczov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAoKLS0gCkRh bmllbCBWZXR0ZXIKU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCmh0dHA6Ly9i bG9nLmZmd2xsLmNoCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdm eAo=