From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ben Widawsky Subject: Re: [PATCH 11/13] drm/i915/bdw: collect semaphore error state Date: Tue, 11 Feb 2014 16:23:39 -0800 Message-ID: <20140212002338.GC23746@bwidawsk.net> References: <1391025333-31587-1-git-send-email-benjamin.widawsky@intel.com> <1391025333-31587-12-git-send-email-benjamin.widawsky@intel.com> <20140130145332.GP9454@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail.bwidawsk.net (bwidawsk.net [166.78.191.112]) by gabe.freedesktop.org (Postfix) with ESMTP id 9669CFAC05 for ; Tue, 11 Feb 2014 16:23:54 -0800 (PST) Content-Disposition: inline In-Reply-To: <20140130145332.GP9454@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: intel-gfx-bounces@lists.freedesktop.org Errors-To: intel-gfx-bounces@lists.freedesktop.org To: Ville =?utf-8?B?U3lyasOkbMOk?= Cc: Intel GFX , Ben Widawsky List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBKYW4gMzAsIDIwMTQgYXQgMDQ6NTM6MzJQTSArMDIwMCwgVmlsbGUgU3lyasOkbMOk IHdyb3RlOgo+IE9uIFdlZCwgSmFuIDI5LCAyMDE0IGF0IDExOjU1OjMxQU0gLTA4MDAsIEJlbiBX aWRhd3NreSB3cm90ZToKPiA+IFNpbmNlIHRoZSBzZW1hcGhvcmUgaW5mb3JtYXRpb24gaXMgaW4g YW4gb2JqZWN0LCBqdXN0IGR1bXAgaXQsIGFuZCBsZXQKPiA+IHRoZSB1c2VyIHBhcnNlIGl0IGxh dGVyLgo+ID4gCj4gPiBOT1RFOiBUaGUgcGFnZSBiZWluZyB1c2VkIGZvciB0aGUgc2VtYXBob3Jl cyBhcmUgaW5jb2hlcmVudCB3aXRoIHRoZQo+ID4gQ1BVLiBObyBtYXR0ZXIgd2hhdCBJIGRvLCBJ IGNhbm5vdCBmaWd1cmUgb3V0IGEgd2F5IHRvIHJlYWQgYW55dGhpbmcgYnV0Cj4gPiAwcy4gTm90 ZSB0aGF0IHRoZSBzZW1hcGhvcmUgd2FpdHMgYXJlIGluZGVlZCB3b3JraW5nLgo+ID4gCj4gPiB2 MjogRG9uJ3QgcHJpbnQgc2lnbmFsLCBhbmQgd2FpdCAodGhleSBzaG91bGQgYmUgdGhlIHNhbWUp LiBJbnN0ZWFkLAo+ID4gcHJpbnQgc3luY19zZXFubyAoQ2hyaXMpCj4gPiAKPiA+IHYzOiBGcmVl IHRoZSBzZW1hcGhvcmUgZXJyb3Igb2JqZWN0IChDaHJpcykKPiA+IAo+ID4gU2lnbmVkLW9mZi1i eTogQmVuIFdpZGF3c2t5IDxiZW5AYndpZGF3c2submV0Pgo+ID4gLS0tCj4gPiAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgIHwgIDEgKwo+ID4gIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMgICB8IDQ3ICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrKy0tLQo+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaCB8IDEy ICsrKystLS0tLQo+ID4gIDMgZmlsZXMgY2hhbmdlZCwgNTEgaW5zZXJ0aW9ucygrKSwgOSBkZWxl dGlvbnMoLSkKPiA+IAo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gPiBpbmRleCBmNTIxMDU5 Li5iMDhlNmViIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu aAo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ID4gQEAgLTMxMyw2 ICszMTMsNyBAQCBzdHJ1Y3QgZHJtX2k5MTVfZXJyb3Jfc3RhdGUgewo+ID4gIAl1MzIgYWN0aGRb STkxNV9OVU1fUklOR1NdOwo+ID4gIAl1MzIgc2VtYXBob3JlX21ib3hlc1tJOTE1X05VTV9SSU5H U11bSTkxNV9OVU1fUklOR1MgLSAxXTsKPiA+ICAJdTMyIHNlbWFwaG9yZV9zZXFub1tJOTE1X05V TV9SSU5HU11bSTkxNV9OVU1fUklOR1MgLSAxXTsKPiA+ICsJc3RydWN0IGRybV9pOTE1X2Vycm9y X29iamVjdCAqc2VtYXBob3JlX29iajsKPiA+ICAJdTMyIHJjX3BzbWlbSTkxNV9OVU1fUklOR1Nd OyAvKiBzbGVlcCBzdGF0ZSAqLwo+ID4gIAkvKiBvdXIgb3duIHRyYWNraW5nIG9mIHJpbmcgaGVh ZCBhbmQgdGFpbCAqLwo+ID4gIAl1MzIgY3B1X3JpbmdfaGVhZFtJOTE1X05VTV9SSU5HU107Cj4g PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMKPiA+IGluZGV4IGVmYWFkOTYuLmQ2 YWZjMDEgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJv ci5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jCj4gPiBA QCAtMjk3LDYgKzI5Nyw3IEBAIGludCBpOTE1X2Vycm9yX3N0YXRlX3RvX3N0cihzdHJ1Y3QgZHJt X2k5MTVfZXJyb3Jfc3RhdGVfYnVmICptLAo+ID4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0g ZXJyb3JfcHJpdi0+ZGV2Owo+ID4gIAlkcm1faTkxNV9wcml2YXRlX3QgKmRldl9wcml2ID0gZGV2 LT5kZXZfcHJpdmF0ZTsKPiA+ICAJc3RydWN0IGRybV9pOTE1X2Vycm9yX3N0YXRlICplcnJvciA9 IGVycm9yX3ByaXYtPmVycm9yOwo+ID4gKwlzdHJ1Y3QgZHJtX2k5MTVfZXJyb3Jfb2JqZWN0ICpv Ymo7Cj4gPiAgCWludCBpLCBqLCBwYWdlLCBvZmZzZXQsIGVsdDsKPiA+ICAKPiA+ICAJaWYgKCFl cnJvcikgewo+ID4gQEAgLTM0NSw4ICszNDYsNiBAQCBpbnQgaTkxNV9lcnJvcl9zdGF0ZV90b19z dHIoc3RydWN0IGRybV9pOTE1X2Vycm9yX3N0YXRlX2J1ZiAqbSwKPiA+ICAJCQkJICAgIGVycm9y LT5waW5uZWRfYm9fY291bnRbMF0pOwo+ID4gIAo+ID4gIAlmb3IgKGkgPSAwOyBpIDwgQVJSQVlf U0laRShlcnJvci0+cmluZyk7IGkrKykgewo+ID4gLQkJc3RydWN0IGRybV9pOTE1X2Vycm9yX29i amVjdCAqb2JqOwo+ID4gLQo+ID4gIAkJaWYgKChvYmogPSBlcnJvci0+cmluZ1tpXS5iYXRjaGJ1 ZmZlcikpIHsKPiA+ICAJCQllcnJfcHJpbnRmKG0sICIlcyAtLS0gZ3R0X29mZnNldCA9IDB4JTA4 eFxuIiwKPiA+ICAJCQkJICAgZGV2X3ByaXYtPnJpbmdbaV0ubmFtZSwKPiA+IEBAIC00MjEsNiAr NDIwLDE5IEBAIGludCBpOTE1X2Vycm9yX3N0YXRlX3RvX3N0cihzdHJ1Y3QgZHJtX2k5MTVfZXJy b3Jfc3RhdGVfYnVmICptLAo+ID4gIAkJfQo+ID4gIAl9Cj4gPiAgCj4gPiArCW9iaiA9IGVycm9y LT5zZW1hcGhvcmVfb2JqOwo+ID4gKwlpZiAob2JqKSB7Cj4gCj4gQ2hyaXMgd2lsbCBjb21lIGFs b25nIGFuZCBjaGFuZ2UgdGhpcyB0bwo+IAo+IGlmICgob2JqID0gZXJyb3ItPnNlbWFwaG9yZV9v YmopKQo+IAo+IAo+ID4gKwkJZXJyX3ByaW50ZihtLCAiU2VtYXBob3JlIHBhZ2UgPSAweCUwOHhc biIsIG9iai0+Z3R0X29mZnNldCk7Cj4gPiArCQlmb3IgKGVsdCA9IDA7IGVsdCA8IFBBR0VfU0la RS8xNjsgZWx0ICs9IDQpIHsKPiA+ICsJCQllcnJfcHJpbnRmKG0sICJbJTA0eF0gJTA4eCAlMDh4 ICUwOHggJTA4eFxuIiwKPiA+ICsJCQkJICAgZWx0ICogNCwKPiA+ICsJCQkJICAgb2JqLT5wYWdl c1swXVtlbHRdLAo+ID4gKwkJCQkgICBvYmotPnBhZ2VzWzBdW2VsdCsxXSwKPiA+ICsJCQkJICAg b2JqLT5wYWdlc1swXVtlbHQrMl0sCj4gPiArCQkJCSAgIG9iai0+cGFnZXNbMF1bZWx0KzNdKTsK PiA+ICsJCX0KPiAKPiBUaGF0J2xsIGJlIHRoZSB0aGlyZCBjb3B5IG9mIHRoaXMgcGFnZSBkdW1w aW5nIGNvZGUuIFRpbWUgdG8gcmVmYWN0b3I/Cj4gCgpJIGRpZCBlbm91Z2ggcmVmYWN0b3Jpbmcg aW4gdGhpcyBzZXJpZXMgLSBidXQgYWNrZWQuCgo+ID4gKwl9Cj4gPiArCj4gPiAgCWlmIChlcnJv ci0+b3ZlcmxheSkKPiA+ICAJCWludGVsX292ZXJsYXlfcHJpbnRfZXJyb3Jfc3RhdGUobSwgZXJy b3ItPm92ZXJsYXkpOwo+ID4gIAo+ID4gQEAgLTQ5MSw2ICs1MDMsNyBAQCBzdGF0aWMgdm9pZCBp OTE1X2Vycm9yX3N0YXRlX2ZyZWUoc3RydWN0IGtyZWYgKmVycm9yX3JlZikKPiA+ICAJCWtmcmVl KGVycm9yLT5yaW5nW2ldLnJlcXVlc3RzKTsKPiA+ICAJfQo+ID4gIAo+ID4gKwlpOTE1X2Vycm9y X29iamVjdF9mcmVlKGVycm9yLT5zZW1hcGhvcmVfb2JqKTsKPiA+ICAJa2ZyZWUoZXJyb3ItPmFj dGl2ZV9ibyk7Cj4gPiAgCWtmcmVlKGVycm9yLT5vdmVybGF5KTsKPiA+ICAJa2ZyZWUoZXJyb3It PmRpc3BsYXkpOwo+ID4gQEAgLTc3Miw2ICs3ODUsMzEgQEAgc3RhdGljIHZvaWQgZ2VuNl9yZWNv cmRfc2VtYXBob3JlX3N0YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiA+ ICAJfQo+ID4gIH0KPiA+ICAKPiA+ICtzdGF0aWMgdm9pZCBnZW44X3JlY29yZF9zZW1hcGhvcmVf c3RhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gKwkJCQkJc3RydWN0 IGRybV9pOTE1X2Vycm9yX3N0YXRlICplcnJvciwKPiA+ICsJCQkJCXN0cnVjdCBpbnRlbF9yaW5n X2J1ZmZlciAqcmluZykKPiA+ICt7Cj4gPiArCXN0cnVjdCBpbnRlbF9yaW5nX2J1ZmZlciAqdXNl bGVzczsKPiA+ICsJaW50IGk7Cj4gPiArCj4gPiArCWlmICghaTkxNV9zZW1hcGhvcmVfaXNfZW5h YmxlZChkZXZfcHJpdi0+ZGV2KSkKPiA+ICsJCXJldHVybjsKPiA+ICsKPiA+ICsJaWYgKCFlcnJv ci0+c2VtYXBob3JlX29iaikKPiA+ICsJCWVycm9yLT5zZW1hcGhvcmVfb2JqID0KPiA+ICsJCQlp OTE1X2Vycm9yX29iamVjdF9jcmVhdGUoZGV2X3ByaXYsCj4gPiArCQkJCQkJIGRldl9wcml2LT5z ZW1hcGhvcmVfb2JqLAo+ID4gKwkJCQkJCSAmZGV2X3ByaXYtPmd0dC5iYXNlKTsKPiA+ICsKPiA+ ICsJZm9yX2VhY2hfcmluZyh1c2VsZXNzLCBkZXZfcHJpdiwgaSkgewo+ID4gKwkJdTE2IHNpZ25h bF9vZmZzZXQgPSBHRU44X1NJR05BTF9PRkZTRVQocmluZywgaSkgLyA0Owo+IAo+IEdFTjhfU0lH TkFMX09GRlNFVCgpIHJldHVybnMgdGhlIGZ1bGwgZ2d0dCBvZmZzZXQuCj4gCgpGaXhlZCBsb2Nh bGx5LiBJJ2xsIHdhaXQgdW50aWwgeW91IHJlc3BvbmQgdG8gb25lIG9mIG15IGVhcmxpZXIgbWFp bHMKYW5kIHRoZW4gcmVzZW5kLgoKPiA+ICsJCXUzMiAqdG1wID0gZXJyb3ItPnNlbWFwaG9yZV9v YmotPnBhZ2VzWzBdOwo+ID4gKwo+ID4gKwkJZXJyb3ItPnNlbWFwaG9yZV9tYm94ZXNbcmluZy0+ aWRdW2ldID0gdG1wW3NpZ25hbF9vZmZzZXRdOwo+ID4gKwkJZXJyb3ItPnNlbWFwaG9yZV9zZXFu b1tyaW5nLT5pZF1baV0gPSByaW5nLT5zZW1hcGhvcmUuc3luY19zZXFub1tpXTsKPiA+ICsJfQo+ ID4gK30KPiA+ICsKPiA+ICBzdGF0aWMgdm9pZCBpOTE1X3JlY29yZF9yaW5nX3N0YXRlKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsCj4gPiAgCQkJCSAgIHN0cnVjdCBkcm1faTkxNV9lcnJvcl9zdGF0 ZSAqZXJyb3IsCj4gPiAgCQkJCSAgIHN0cnVjdCBpbnRlbF9yaW5nX2J1ZmZlciAqcmluZykKPiA+ IEBAIC03ODEsNyArODE5LDEwIEBAIHN0YXRpYyB2b2lkIGk5MTVfcmVjb3JkX3Jpbmdfc3RhdGUo c3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiA+ICAJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49 IDYpIHsKPiA+ICAJCWVycm9yLT5yY19wc21pW3JpbmctPmlkXSA9IEk5MTVfUkVBRChyaW5nLT5t bWlvX2Jhc2UgKyAweDUwKTsKPiA+ICAJCWVycm9yLT5mYXVsdF9yZWdbcmluZy0+aWRdID0gSTkx NV9SRUFEKFJJTkdfRkFVTFRfUkVHKHJpbmcpKTsKPiA+IC0JCWdlbjZfcmVjb3JkX3NlbWFwaG9y ZV9zdGF0ZShkZXZfcHJpdiwgZXJyb3IsIHJpbmcpOwo+ID4gKwkJaWYgKElOVEVMX0lORk8oZGV2 KS0+Z2VuID49IDgpCj4gPiArCQkJZ2VuOF9yZWNvcmRfc2VtYXBob3JlX3N0YXRlKGRldl9wcml2 LCBlcnJvciwgcmluZyk7Cj4gPiArCQllbHNlCj4gPiArCQkJZ2VuNl9yZWNvcmRfc2VtYXBob3Jl X3N0YXRlKGRldl9wcml2LCBlcnJvciwgcmluZyk7Cj4gPiAgCX0KPiA+ICAKPiA+ICAJaWYgKElO VEVMX0lORk8oZGV2KS0+Z2VuID49IDQpIHsKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9y aW5nYnVmZmVyLmgKPiA+IGluZGV4IGVkNTUzNzAuLjRjYTI3ODkgMTAwNjQ0Cj4gPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKPiA+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAo+ID4gQEAgLTM3LDkgKzM3LDkgQEAgc3Ry dWN0ICBpbnRlbF9od19zdGF0dXNfcGFnZSB7Cj4gPiAgICogZG8gdGhlIHdyaXRlcywgYW5kIHRo YXQgbXVzdCBoYXZlIHF3IGFsaWduZWQgb2Zmc2V0cywgc2ltcGx5IHByZXRlbmQgaXQncyA4Yi4K PiA+ICAgKi8KPiA+ICAjZGVmaW5lIGk5MTVfc2VtYXBob3JlX3NlcW5vX3NpemUgc2l6ZW9mKHVp bnQ2NF90KQo+ID4gLSNkZWZpbmUgR0VOOF9TSUdOQUxfT0ZGU0VUKHRvKSBcCj4gPiArI2RlZmlu ZSBHRU44X1NJR05BTF9PRkZTRVQoX19yaW5nLCB0bykgXAo+ID4gIAkoaTkxNV9nZW1fb2JqX2dn dHRfb2Zmc2V0KGRldl9wcml2LT5zZW1hcGhvcmVfb2JqKSArIFwKPiA+IC0JKHJpbmctPmlkICog STkxNV9OVU1fUklOR1MgKiBpOTE1X3NlbWFwaG9yZV9zZXFub19zaXplKSArIFwKPiA+ICsJKChf X3JpbmcpLT5pZCAqIEk5MTVfTlVNX1JJTkdTICogaTkxNV9zZW1hcGhvcmVfc2Vxbm9fc2l6ZSkg KyBcCj4gPiAgCShpOTE1X3NlbWFwaG9yZV9zZXFub19zaXplICogKHRvKSkpCj4gPiAgCj4gPiAg I2RlZmluZSBHRU44X1dBSVRfT0ZGU0VUKF9fcmluZywgZnJvbSkgXAo+ID4gQEAgLTUxLDEwICs1 MSwxMCBAQCBzdHJ1Y3QgIGludGVsX2h3X3N0YXR1c19wYWdlIHsKPiA+ICAJaWYgKCFkZXZfcHJp di0+c2VtYXBob3JlX29iaikgeyBcCj4gPiAgCQlicmVhazsgXAo+ID4gIAl9IFwKPiA+IC0Jcmlu Zy0+c2VtYXBob3JlLnNpZ25hbF9nZ3R0W1JDU10gPSBHRU44X1NJR05BTF9PRkZTRVQoUkNTKTsg XAo+ID4gLQlyaW5nLT5zZW1hcGhvcmUuc2lnbmFsX2dndHRbVkNTXSA9IEdFTjhfU0lHTkFMX09G RlNFVChWQ1MpOyBcCj4gPiAtCXJpbmctPnNlbWFwaG9yZS5zaWduYWxfZ2d0dFtCQ1NdID0gR0VO OF9TSUdOQUxfT0ZGU0VUKEJDUyk7IFwKPiA+IC0JcmluZy0+c2VtYXBob3JlLnNpZ25hbF9nZ3R0 W1ZFQ1NdID0gR0VOOF9TSUdOQUxfT0ZGU0VUKFZFQ1MpOyBcCj4gPiArCXJpbmctPnNlbWFwaG9y ZS5zaWduYWxfZ2d0dFtSQ1NdID0gR0VOOF9TSUdOQUxfT0ZGU0VUKHJpbmcsIFJDUyk7IFwKPiA+ ICsJcmluZy0+c2VtYXBob3JlLnNpZ25hbF9nZ3R0W1ZDU10gPSBHRU44X1NJR05BTF9PRkZTRVQo cmluZywgVkNTKTsgXAo+ID4gKwlyaW5nLT5zZW1hcGhvcmUuc2lnbmFsX2dndHRbQkNTXSA9IEdF TjhfU0lHTkFMX09GRlNFVChyaW5nLCBCQ1MpOyBcCj4gPiArCXJpbmctPnNlbWFwaG9yZS5zaWdu YWxfZ2d0dFtWRUNTXSA9IEdFTjhfU0lHTkFMX09GRlNFVChyaW5nLCBWRUNTKTsgXAo+ID4gIAly aW5nLT5zZW1hcGhvcmUubWJveFtSQ1NdID0gR0VOOF9XQUlUX09GRlNFVChyaW5nLCBSQ1MpOyBc Cj4gPiAgCXJpbmctPnNlbWFwaG9yZS5tYm94W1ZDU10gPSBHRU44X1dBSVRfT0ZGU0VUKHJpbmcs IFZDUyk7IFwKPiA+ICAJcmluZy0+c2VtYXBob3JlLm1ib3hbQkNTXSA9IEdFTjhfV0FJVF9PRkZT RVQocmluZywgQkNTKTsgXAo+ID4gLS0gCj4gPiAxLjguNS4zCj4gPiAKPiA+IF9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gPiBJbnRlbC1nZnggbWFpbGlu ZyBsaXN0Cj4gPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gPiBodHRwOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cj4gCj4gLS0gCj4g VmlsbGUgU3lyasOkbMOkCj4gSW50ZWwgT1RDCgotLSAKQmVuIFdpZGF3c2t5LCBJbnRlbCBPcGVu IFNvdXJjZSBUZWNobm9sb2d5IENlbnRlcgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2ludGVsLWdmeAo=