From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH v5 2/6] drm/i915: Stop frobbing with DDI encoder->type Date: Mon, 30 Oct 2017 20:28:17 +0200 Message-ID: <20171030182817.GW10981@intel.com> References: <20171027193128.14483-1-ville.syrjala@linux.intel.com> <20171027193128.14483-3-ville.syrjala@linux.intel.com> <3bb07b82-5e54-fa40-a687-3a50281f6c47@linux.intel.com> <20171030160726.GT10981@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id AE41A6E131 for ; Mon, 30 Oct 2017 18:28:20 +0000 (UTC) Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Maarten Lankhorst Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCBPY3QgMzAsIDIwMTcgYXQgMDU6Mjk6MTNQTSArMDEwMCwgTWFhcnRlbiBMYW5raG9y c3Qgd3JvdGU6Cj4gT3AgMzAtMTAtMTcgb20gMTc6MDcgc2NocmVlZiBWaWxsZSBTeXJqw6Rsw6Q6 Cj4gPiBPbiBNb24sIE9jdCAzMCwgMjAxNyBhdCAwOTo1OToyOUFNICswMTAwLCBNYWFydGVuIExh bmtob3JzdCB3cm90ZToKPiA+PiBPcCAyNy0xMC0xNyBvbSAyMTozMSBzY2hyZWVmIFZpbGxlIFN5 cmphbGE6Cj4gPj4+IEZyb206IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5p bnRlbC5jb20+Cj4gPj4+Cj4gPj4+IEN1cnJlbnRseSB0aGUgRERJIGVuY29kZXItPnR5cGUgd2ls bCBjaGFuZ2UgYXQgcnVudGltZSBkZXBlbmRpbmcgb24KPiA+Pj4gd2hhdCBraW5kIG9mIGhvdHBs dWdzIHdlJ3ZlIHByb2Nlc3NlZC4gVGhhdCdzIHF1aXRlIGJhZCBzaW5jZSB3ZSBjYW4ndAo+ID4+ PiByZWFsbHkgdHJ1c3QgdGhhdCB0aGF0IGN1cnJlbnQgdmFsdWUgb2YgZW5jb2Rlci0+dHlwZSBh Y3R1YWxseSBtYXRjaGVzCj4gPj4+IHRoZSB0eXBlIG9mIHNpZ25hbCB3ZSdyZSB0cnlpbmcgdG8g ZHJpdmUgdGhyb3VnaCBpdC4KPiA+Pj4KPiA+Pj4gTGV0J3MgZWxpbWluYXRlIHRoYXQgcHJvYmxl bSBieSBkZWNsYXJpbmcgdGhhdCBub24tZURQIERESSBwb3J0IHdpbGwKPiA+Pj4gYWx3YXlzIGhh dmUgdGhlIGVuY29kZXIgdHlwZSBhcyBJTlRFTF9PVVRQVVRfRERJLiBUaGlzIG1lYW5zIHRoZSBj b2RlCj4gPj4+IGNhbiBubyBsb25nZXIgdHJ5IHRvIGRpc3Rpbmd1aXNoIERQIHZzLiBIRE1JIGJh c2VkIG9uIGVuY29kZXItPnR5cGUuCj4gPj4+IFdlJ2xsIGxlYXZlIGVEUCBhcyBJTlRFTF9PVVRQ VVRfRURQLCBzaW5jZSBpdCdsbCBuZXZlciBjaGFuZ2UgYW5kCj4gPj4+IHRoZXJlJ3MgYSBidW5j aCBvZiBjb2RlIHRoYXQgcmVsaWVzIG9uIHRoYXQgdmFsdWUgdG8gaWRlbnRpZnkgZURQCj4gPj4+ IGVuY29kZXJzLgo+ID4+Pgo+ID4+PiBXZSdsbCBpbnRyb2R1Y2UgYSBuZXcgZW5jb2RlciAuY29t cHV0ZV9vdXRwdXRfdHlwZSgpIGhvb2suIFRoaXMgYWxsb3dzCj4gPj4+IHVzIHRvIGNvbXB1dGUg dGhlIGZ1bGwgb3V0cHV0X3R5cGVzIGJlZm9yZSBhbnkgZW5jb2RlciAuY29tcHV0ZV9jb25maWco KQo+ID4+PiBob29rcyBnZXQgY2FsbGVkLCB0aHVzIHRob3NlIGhvb2tzIGNhbiByZWx5IG9uIG91 dHB1dF90eXBlcyBiZWluZwo+ID4+PiBjb3JyZWN0LCB3aGljaCBpcyB1c2VmdWwgZm9yIGNsb25p bmcgb24gb2xkciBwbGF0Zm9ybXMuIEZvciBub3cgd2UnbGwKPiA+Pj4ganVzdCBsb29rIGF0IHRo ZSBjb25uZWN0b3IgdHlwZSBhbmQgcGljayB0aGUgY29ycmVjdCBtb2RlIGJhc2VkIG9uIHRoYXQu Cj4gPj4+IEluIHRoZSBmdXR1cmUgdGhlIG5ldyBob29rIGNvdWxkIGJlIHVzZWQgdG8gaW1wbGVt ZW50IGR5bmFtaWMgc3dpdGNoaW5nCj4gPj4+IGJldHdlZW4gTFMgYW5kIFBDT04gbW9kZXMgZm9y IExTUENPTi4KPiA+Pj4KPiA+Pj4gdjI6IEZpeCBCWFQvR0xLIFBQUyBleHBsb3Npb24gd2l0aCBE U0kvTVNUIGVuY29kZXJzCj4gPj4+IHYzOiBBdm9pZCB0aGUgUFBTIHdhcm4gb24gcHVyZSBIRE1J L0RWSSBEREkgZW5jb2RlcnMgYnkgY2hlY2tpbmcgZHAub3V0cHV0X3JlZwo+ID4+PiB2NDogUmVi YXNlCj4gPj4+IHY1OiBQb3B1bGF0ZSBvdXRwdXRfdHlwZXMgaW4gLmdldF9jb25maWcoKSByYXRo ZXIgdGhhbiBpbiB0aGUgY2FsbGVyCj4gPj4+IHY1OiBTcGxpdCBvdXQgcG9wdWxhdGluZyBvdXRw dXRfdHlwZXMgaW4gLmdldF9jb25maWcoKSAoTWFhcnRlbikKPiA+Pj4KPiA+Pj4gQ2M6IE1hYXJ0 ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+Cj4gPj4+IFNp Z25lZC1vZmYtYnk6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5j b20+Cj4gPj4+IC0tLQo+ID4+PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMg ICB8ICAyICstCj4gPj4+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYyAgICAgIHwg MzIgKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0KPiA+Pj4gIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rpc3BsYXkuYyAgfCAxMSArKysrKysrKy0tLQo+ID4+PiAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHAuYyAgICAgICB8IDE5ICsrKysrKy0tLS0tLS0tLS0tLS0KPiA+ Pj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICAgICAgfCAgNyArKysrKy0tCj4g Pj4+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMgICAgIHwgMTAgKystLS0tLS0t LQo+ID4+PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfb3ByZWdpb24uYyB8ICAyICstCj4g Pj4+ICA3IGZpbGVzIGNoYW5nZWQsIDQ3IGluc2VydGlvbnMoKyksIDM2IGRlbGV0aW9ucygtKQo+ ID4+Pgo+ID4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2Zz LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+ID4+PiBpbmRleCBjMWU1 YmJhOTFiZmYuLjM5ODgzY2Q5MTVkYiAxMDA2NDQKPiA+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiA+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kZWJ1Z2ZzLmMKPiA+Pj4gQEAgLTMwNTEsNyArMzA1MSw3IEBAIHN0YXRpYyB2b2lkIGludGVs X2Nvbm5lY3Rvcl9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwKPiA+Pj4gIAkJYnJlYWs7Cj4gPj4+ ICAJY2FzZSBEUk1fTU9ERV9DT05ORUNUT1JfSERNSUE6Cj4gPj4+ICAJCWlmIChpbnRlbF9lbmNv ZGVyLT50eXBlID09IElOVEVMX09VVFBVVF9IRE1JIHx8Cj4gPj4+IC0JCSAgICBpbnRlbF9lbmNv ZGVyLT50eXBlID09IElOVEVMX09VVFBVVF9VTktOT1dOKQo+ID4+PiArCQkgICAgaW50ZWxfZW5j b2Rlci0+dHlwZSA9PSBJTlRFTF9PVVRQVVRfRERJKQo+ID4+PiAgCQkJaW50ZWxfaGRtaV9pbmZv KG0sIGludGVsX2Nvbm5lY3Rvcik7Cj4gPj4+ICAJCWJyZWFrOwo+ID4+PiAgCWRlZmF1bHQ6Cj4g Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCj4gPj4+IGluZGV4IDdlMGIxYTAyOTEyYS4uZTVk ZDI4MTc4MWZlIDEwMDY0NAo+ID4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k ZGkuYwo+ID4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYwo+ID4+PiBA QCAtNDk3LDEwICs0OTcsOCBAQCBlbnVtIHBvcnQgaW50ZWxfZGRpX2dldF9lbmNvZGVyX3BvcnQo c3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCj4gPj4+ICAJc3dpdGNoIChlbmNvZGVyLT50 eXBlKSB7Cj4gPj4+ICAJY2FzZSBJTlRFTF9PVVRQVVRfRFBfTVNUOgo+ID4+PiAgCQlyZXR1cm4g ZW5jX3RvX21zdCgmZW5jb2Rlci0+YmFzZSktPnByaW1hcnktPnBvcnQ7Cj4gPj4+IC0JY2FzZSBJ TlRFTF9PVVRQVVRfRFA6Cj4gPj4+ICAJY2FzZSBJTlRFTF9PVVRQVVRfRURQOgo+ID4+PiAtCWNh c2UgSU5URUxfT1VUUFVUX0hETUk6Cj4gPj4+IC0JY2FzZSBJTlRFTF9PVVRQVVRfVU5LTk9XTjoK PiA+Pj4gKwljYXNlIElOVEVMX09VVFBVVF9EREk6Cj4gPj4+ICAJCXJldHVybiBlbmNfdG9fZGln X3BvcnQoJmVuY29kZXItPmJhc2UpLT5wb3J0Owo+ID4+PiAgCWNhc2UgSU5URUxfT1VUUFVUX0FO QUxPRzoKPiA+Pj4gIAkJcmV0dXJuIFBPUlRfRTsKPiA+Pj4gQEAgLTE1MzQsNiArMTUzMiw3IEBA IHZvaWQgaW50ZWxfZGRpX3NldF92Y19wYXlsb2FkX2FsbG9jKGNvbnN0IHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ID4+PiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwo+ID4+PiAgCWVudW0gdHJhbnNjb2Rl ciBjcHVfdHJhbnNjb2RlciA9IGNydGNfc3RhdGUtPmNwdV90cmFuc2NvZGVyOwo+ID4+PiAgCXVp bnQzMl90IHRlbXA7Cj4gPj4+ICsKPiA+Pj4gIAl0ZW1wID0gSTkxNV9SRUFEKFRSQU5TX0RESV9G VU5DX0NUTChjcHVfdHJhbnNjb2RlcikpOwo+ID4+PiAgCWlmIChzdGF0ZSA9PSB0cnVlKQo+ID4+ PiAgCQl0ZW1wIHw9IFRSQU5TX0RESV9EUF9WQ19QQVlMT0FEX0FMTE9DOwo+ID4+PiBAQCAtMjY1 MiwyMSArMjY1MSwzNiBAQCB2b2lkIGludGVsX2RkaV9nZXRfY29uZmlnKHN0cnVjdCBpbnRlbF9l bmNvZGVyICplbmNvZGVyLAo+ID4+PiAgCWludGVsX2RkaV9jb21wdXRlX21pbl92b2x0YWdlX2xl dmVsKGRldl9wcml2LCBwaXBlX2NvbmZpZyk7Cj4gPj4+ICB9Cj4gPj4+ICAKPiA+Pj4gK3N0YXRp YyBlbnVtIGludGVsX291dHB1dF90eXBlCj4gPj4+ICtpbnRlbF9kZGlfY29tcHV0ZV9vdXRwdXRf dHlwZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiA+Pj4gKwkJCSAgICAgIHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ID4+PiArCQkJICAgICAgc3RydWN0IGRy bV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGUpCj4gPj4+ICt7Cj4gPj4+ICsJc3dpdGNoIChj b25uX3N0YXRlLT5jb25uZWN0b3ItPmNvbm5lY3Rvcl90eXBlKSB7Cj4gPj4+ICsJY2FzZSBEUk1f TU9ERV9DT05ORUNUT1JfSERNSUE6Cj4gPj4+ICsJCXJldHVybiBJTlRFTF9PVVRQVVRfSERNSTsK PiA+Pj4gKwljYXNlIERSTV9NT0RFX0NPTk5FQ1RPUl9lRFA6Cj4gPj4+ICsJCXJldHVybiBJTlRF TF9PVVRQVVRfRURQOwo+ID4+PiArCWNhc2UgRFJNX01PREVfQ09OTkVDVE9SX0Rpc3BsYXlQb3J0 Ogo+ID4+PiArCQlyZXR1cm4gSU5URUxfT1VUUFVUX0RQOwo+ID4+PiArCWRlZmF1bHQ6Cj4gPj4+ ICsJCU1JU1NJTkdfQ0FTRShjb25uX3N0YXRlLT5jb25uZWN0b3ItPmNvbm5lY3Rvcl90eXBlKTsK PiA+Pj4gKwkJcmV0dXJuIElOVEVMX09VVFBVVF9VTlVTRUQ7Cj4gPj4+ICsJfQo+ID4+PiArfQo+ ID4+PiArCj4gPj4+ICBzdGF0aWMgYm9vbCBpbnRlbF9kZGlfY29tcHV0ZV9jb25maWcoc3RydWN0 IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gPj4+ICAJCQkJICAgICBzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqcGlwZV9jb25maWcsCj4gPj4+ICAJCQkJICAgICBzdHJ1Y3QgZHJtX2Nvbm5lY3Rv cl9zdGF0ZSAqY29ubl9zdGF0ZSkKPiA+Pj4gIHsKPiA+Pj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKPiA+Pj4gLQlpbnQg dHlwZSA9IGVuY29kZXItPnR5cGU7Cj4gPj4+ICAJaW50IHBvcnQgPSBpbnRlbF9kZGlfZ2V0X2Vu Y29kZXJfcG9ydChlbmNvZGVyKTsKPiA+Pj4gIAlpbnQgcmV0Owo+ID4+PiAgCj4gPj4+IC0JV0FS Tih0eXBlID09IElOVEVMX09VVFBVVF9VTktOT1dOLCAiY29tcHV0ZV9jb25maWcoKSBvbiB1bmtu b3duIG91dHB1dCFcbiIpOwo+ID4+PiAtCj4gPj4+ICAJaWYgKHBvcnQgPT0gUE9SVF9BKQo+ID4+ PiAgCQlwaXBlX2NvbmZpZy0+Y3B1X3RyYW5zY29kZXIgPSBUUkFOU0NPREVSX0VEUDsKPiA+Pj4g IAo+ID4+PiAtCWlmICh0eXBlID09IElOVEVMX09VVFBVVF9IRE1JKQo+ID4+PiArCWlmIChpbnRl bF9jcnRjX2hhc190eXBlKHBpcGVfY29uZmlnLCBJTlRFTF9PVVRQVVRfSERNSSkpCj4gPj4+ICAJ CXJldCA9IGludGVsX2hkbWlfY29tcHV0ZV9jb25maWcoZW5jb2RlciwgcGlwZV9jb25maWcsIGNv bm5fc3RhdGUpOwo+ID4+PiAgCWVsc2UKPiA+Pj4gIAkJcmV0ID0gaW50ZWxfZHBfY29tcHV0ZV9j b25maWcoZW5jb2RlciwgcGlwZV9jb25maWcsIGNvbm5fc3RhdGUpOwo+ID4+IFdvdWxkIGl0IGJl IGFuIG9wdGlvbiB0byBwdXQgaXQgaW4gY29tcHV0ZV9jb25maWcgZm9yIERESSBvbmx5PyBUaGVy ZSBpcyBubyByaXNrIG9mIGNsb25pbmcgdGhlcmUsIHNhdmVzIGFub3RoZXIgaG9vay4gOikKPiA+ IFRoYXQgd291bGQgbWVhbiB0aGUgY2FsbGVyIHdvdWxkIHNldCAnb3V0cHV0X3R5cGVzfD1EREkn IHdoaWNoIHdlJ2QgaGF2ZQo+ID4gdG8gdW5kbyBoZXJlLCBvciB3ZSB3b3VsZCBuZWVkIHRvIHNw ZWNpYWwgY2FzZSBEREkgaW4gdGhlIGNhbGxlciBhbmQgbm90Cj4gPiBzZXQgb3V0cHV0X3R5cGVz IHRoZXJlIGF0IGFsbC4gTmVpdGhlciB3b3VsZCBsb29rIHZlcnkgcHJldHR5IEkgdGhpbmsuCj4g U29tZXRoaW5nIGxpa2U6Cj4gCj4gLyogVGhlcmUgaXMgbm8gMSB0byAxIG1hcHBpbmcgZm9yIERE SSwgaXQncyBzZXQgaW4gY29tcHV0ZV9jb25maWcoKQo+IGlmICh0eXBlICE9IERESSkKPiBvdXRw dXRfdHlwZXMgfD0gQklUKHR5cGUpCj4gCj4gd291bGQgd29yayBmb3IgbWUuIDopCgpIbW0uIEkg Z3Vlc3MgdGhhdCB3b3VsZG4ndCBiZSB0b28gYmFkLiBUaG91Z2ggSSBkb24ndCBwYXJ0aWN1bGFy bHkKZW5qb3kgZW5jb2RlciBzcGVjaWZpYyBpbmZvcm1hdGlvbiBsZWFraW5nIG91dC4KCkJ1dCBJ J3ZlIGp1c3QgZ29uZSBhbmQgcHVzaGVkIHRoZSBlbnRpcmUgc2VyaWVzIGFzIGlzLCBqdXN0IHRv IGF2b2lkCmRyYWdnaW5nIHRoaXMgc2VyaWVzIGFsb25nIGFueSBsb25nZXIuIElmIHNvbWVvbmUg ZmVlbHMgc3Ryb25nbHkgdGhhdAp0aGUgaG9vayBzaG91bGRuJ3QgYmUgdGhlcmUgdGhleSBjYW4g c2VuZCBhIHBhdGNoIHRvIGtpbGwgaXQuCgpUaGFua3MgZm9yIHRoZSByZXZpZXcuCgo+IAo+ID4+ IEVpdGhlciB3YXkgaXMgZmluZSB0aG91Z2guCj4gPj4+IEBAIC0yODE1LDYgKzI4MjksNyBAQCB2 b2lkIGludGVsX2RkaV9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgZW51 bSBwb3J0IHBvcnQpCj4gPj4+ICAJZHJtX2VuY29kZXJfaW5pdCgmZGV2X3ByaXYtPmRybSwgZW5j b2RlciwgJmludGVsX2RkaV9mdW5jcywKPiA+Pj4gIAkJCSBEUk1fTU9ERV9FTkNPREVSX1RNRFMs ICJEREkgJWMiLCBwb3J0X25hbWUocG9ydCkpOwo+ID4+PiAgCj4gPj4+ICsJaW50ZWxfZW5jb2Rl ci0+Y29tcHV0ZV9vdXRwdXRfdHlwZSA9IGludGVsX2RkaV9jb21wdXRlX291dHB1dF90eXBlOwo+ ID4+PiAgCWludGVsX2VuY29kZXItPmNvbXB1dGVfY29uZmlnID0gaW50ZWxfZGRpX2NvbXB1dGVf Y29uZmlnOwo+ID4+PiAgCWludGVsX2VuY29kZXItPmVuYWJsZSA9IGludGVsX2VuYWJsZV9kZGk7 Cj4gPj4+ICAJaWYgKElTX0dFTjlfTFAoZGV2X3ByaXYpKQo+ID4+PiBAQCAtMjg2OCw5ICsyODgz LDEwIEBAIHZvaWQgaW50ZWxfZGRpX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LCBlbnVtIHBvcnQgcG9ydCkKPiA+Pj4gIAkJbWF4X2xhbmVzID0gNDsKPiA+Pj4gIAl9Cj4g Pj4+ICAKPiA+Pj4gKwlpbnRlbF9kaWdfcG9ydC0+ZHAub3V0cHV0X3JlZyA9IElOVkFMSURfTU1J T19SRUc7Cj4gPj4+ICAJaW50ZWxfZGlnX3BvcnQtPm1heF9sYW5lcyA9IG1heF9sYW5lczsKPiA+ Pj4gIAo+ID4+PiAtCWludGVsX2VuY29kZXItPnR5cGUgPSBJTlRFTF9PVVRQVVRfVU5LTk9XTjsK PiA+Pj4gKwlpbnRlbF9lbmNvZGVyLT50eXBlID0gSU5URUxfT1VUUFVUX0RESTsKPiA+Pj4gIAlp bnRlbF9lbmNvZGVyLT5wb3dlcl9kb21haW4gPSBpbnRlbF9wb3J0X3RvX3Bvd2VyX2RvbWFpbihw b3J0KTsKPiA+Pj4gIAlpbnRlbF9lbmNvZGVyLT5wb3J0ID0gcG9ydDsKPiA+Pj4gIAlpbnRlbF9l bmNvZGVyLT5jcnRjX21hc2sgPSAoMSA8PCAwKSB8ICgxIDw8IDEpIHwgKDEgPDwgMik7Cj4gPj4+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiA+Pj4gaW5kZXggOGY3NjllOWI5MzQy Li43MzdkZTI1MWQwZjggMTAwNjQ0Cj4gPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rpc3BsYXkuYwo+ID4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNw bGF5LmMKPiA+Pj4gQEAgLTEwNTc5LDcgKzEwNTc5LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIgKiBj b25zdCBvdXRwdXRfdHlwZV9zdHJbXSA9IHsKPiA+Pj4gIAlPVVRQVVRfVFlQRShEUCksCj4gPj4+ ICAJT1VUUFVUX1RZUEUoRURQKSwKPiA+Pj4gIAlPVVRQVVRfVFlQRShEU0kpLAo+ID4+PiAtCU9V VFBVVF9UWVBFKFVOS05PV04pLAo+ID4+PiArCU9VVFBVVF9UWVBFKERESSksCj4gPj4+ICAJT1VU UFVUX1RZUEUoRFBfTVNUKSwKPiA+Pj4gIH07Cj4gPj4+ICAKPiA+Pj4gQEAgLTEwNzUwLDcgKzEw NzUwLDcgQEAgc3RhdGljIGJvb2wgY2hlY2tfZGlnaXRhbF9wb3J0X2NvbmZsaWN0cyhzdHJ1Y3Qg ZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gPj4+ICAKPiA+Pj4gIAkJc3dpdGNoIChlbmNvZGVy LT50eXBlKSB7Cj4gPj4+ICAJCQl1bnNpZ25lZCBpbnQgcG9ydF9tYXNrOwo+ID4+PiAtCQljYXNl IElOVEVMX09VVFBVVF9VTktOT1dOOgo+ID4+PiArCQljYXNlIElOVEVMX09VVFBVVF9EREk6Cj4g Pj4+ICAJCQlpZiAoV0FSTl9PTighSEFTX0RESSh0b19pOTE1KGRldikpKSkKPiA+Pj4gIAkJCQli cmVhazsKPiA+Pj4gIAkJY2FzZSBJTlRFTF9PVVRQVVRfRFA6Cj4gPj4+IEBAIC0xMDg4Myw3ICsx MDg4MywxMiBAQCBpbnRlbF9tb2Rlc2V0X3BpcGVfY29uZmlnKHN0cnVjdCBkcm1fY3J0YyAqY3J0 YywKPiA+Pj4gIAkJICogRGV0ZXJtaW5lIG91dHB1dF90eXBlcyBiZWZvcmUgY2FsbGluZyB0aGUg LmNvbXB1dGVfY29uZmlnKCkKPiA+Pj4gIAkJICogaG9va3Mgc28gdGhhdCB0aGUgaG9va3MgY2Fu IHVzZSB0aGlzIGluZm9ybWF0aW9uIHNhZmVseS4KPiA+Pj4gIAkJICovCj4gPj4+IC0JCXBpcGVf Y29uZmlnLT5vdXRwdXRfdHlwZXMgfD0gMSA8PCBlbmNvZGVyLT50eXBlOwo+ID4+PiArCQlpZiAo ZW5jb2Rlci0+Y29tcHV0ZV9vdXRwdXRfdHlwZSkKPiA+Pj4gKwkJCXBpcGVfY29uZmlnLT5vdXRw dXRfdHlwZXMgfD0KPiA+Pj4gKwkJCQlCSVQoZW5jb2Rlci0+Y29tcHV0ZV9vdXRwdXRfdHlwZShl bmNvZGVyLCBwaXBlX2NvbmZpZywKPiA+Pj4gKwkJCQkJCQkJIGNvbm5lY3Rvcl9zdGF0ZSkpOwo+ ID4+PiArCQllbHNlCj4gPj4+ICsJCQlwaXBlX2NvbmZpZy0+b3V0cHV0X3R5cGVzIHw9IEJJVChl bmNvZGVyLT50eXBlKTsKPiA+Pj4gIAl9Cj4gPj4+ICAKPiA+Pj4gIGVuY29kZXJfcmV0cnk6Cj4g Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+ID4+PiBpbmRleCAzMDY4OGE1ZDY4MGQuLmYwYzQ5 OTYyZmZiZSAxMDA2NDQKPiA+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAu Ywo+ID4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gPj4+IEBAIC03 NTgsMTEgKzc1OCwxNiBAQCB2b2lkIGludGVsX3Bvd2VyX3NlcXVlbmNlcl9yZXNldChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPj4+ICAJCXN0cnVjdCBpbnRlbF9kcCAqaW50 ZWxfZHA7Cj4gPj4+ICAKPiA+Pj4gIAkJaWYgKGVuY29kZXItPnR5cGUgIT0gSU5URUxfT1VUUFVU X0RQICYmCj4gPj4+IC0JCSAgICBlbmNvZGVyLT50eXBlICE9IElOVEVMX09VVFBVVF9FRFApCj4g Pj4+ICsJCSAgICBlbmNvZGVyLT50eXBlICE9IElOVEVMX09VVFBVVF9FRFAgJiYKPiA+Pj4gKwkJ ICAgIGVuY29kZXItPnR5cGUgIT0gSU5URUxfT1VUUFVUX0RESSkKPiA+Pj4gIAkJCWNvbnRpbnVl Owo+ID4+PiAgCj4gPj4+ICAJCWludGVsX2RwID0gZW5jX3RvX2ludGVsX2RwKCZlbmNvZGVyLT5i YXNlKTsKPiA+Pj4gIAo+ID4+PiArCQkvKiBTa2lwIHB1cmUgRFZJL0hETUkgRERJIGVuY29kZXJz ICovCj4gPj4+ICsJCWlmICghaTkxNV9tbWlvX3JlZ192YWxpZChpbnRlbF9kcC0+b3V0cHV0X3Jl ZykpCj4gPj4+ICsJCQljb250aW51ZTsKPiA+Pj4gKwo+ID4+PiAgCQlXQVJOX09OKGludGVsX2Rw LT5hY3RpdmVfcGlwZSAhPSBJTlZBTElEX1BJUEUpOwo+ID4+PiAgCj4gPj4+ICAJCWlmIChlbmNv ZGVyLT50eXBlICE9IElOVEVMX09VVFBVVF9FRFApCj4gPj4+IEBAIC00NzMzLDggKzQ3MzgsNiBA QCBpbnRlbF9kcF9sb25nX3B1bHNlKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmludGVsX2Nvbm5l Y3RvcikKPiA+Pj4gIHsKPiA+Pj4gIAlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yID0g JmludGVsX2Nvbm5lY3Rvci0+YmFzZTsKPiA+Pj4gIAlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2Rw ID0gaW50ZWxfYXR0YWNoZWRfZHAoY29ubmVjdG9yKTsKPiA+Pj4gLQlzdHJ1Y3QgaW50ZWxfZGln aXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCA9IGRwX3RvX2RpZ19wb3J0KGludGVsX2RwKTsKPiA+ Pj4gLQlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlciA9ICZpbnRlbF9kaWdfcG9y dC0+YmFzZTsKPiA+Pj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY29ubmVjdG9yLT5kZXY7 Cj4gPj4+ICAJZW51bSBkcm1fY29ubmVjdG9yX3N0YXR1cyBzdGF0dXM7Cj4gPj4+ICAJdTggc2lu a19pcnFfdmVjdG9yID0gMDsKPiA+Pj4gQEAgLTQ3NjcsOSArNDc3MCw2IEBAIGludGVsX2RwX2xv bmdfcHVsc2Uoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqaW50ZWxfY29ubmVjdG9yKQo+ID4+PiAg CQlnb3RvIG91dDsKPiA+Pj4gIAl9Cj4gPj4+ICAKPiA+Pj4gLQlpZiAoaW50ZWxfZW5jb2Rlci0+ dHlwZSAhPSBJTlRFTF9PVVRQVVRfRURQKQo+ID4+PiAtCQlpbnRlbF9lbmNvZGVyLT50eXBlID0g SU5URUxfT1VUUFVUX0RQOwo+ID4+PiAtCj4gPj4+ICAJaWYgKGludGVsX2RwLT5yZXNldF9saW5r X3BhcmFtcykgewo+ID4+PiAgCQkvKiBJbml0aWFsIG1heCBsaW5rIGxhbmUgY291bnQgKi8KPiA+ Pj4gIAkJaW50ZWxfZHAtPm1heF9saW5rX2xhbmVfY291bnQgPSBpbnRlbF9kcF9tYXhfY29tbW9u X2xhbmVfY291bnQoaW50ZWxfZHApOwo+ID4+PiBAQCAtNDg4Niw5ICs0ODg2LDYgQEAgaW50ZWxf ZHBfZm9yY2Uoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiA+Pj4gIAlpbnRlbF9k cF9zZXRfZWRpZChpbnRlbF9kcCk7Cj4gPj4+ICAKPiA+Pj4gIAlpbnRlbF9kaXNwbGF5X3Bvd2Vy X3B1dChkZXZfcHJpdiwgaW50ZWxfZHAtPmF1eF9wb3dlcl9kb21haW4pOwo+ID4+PiAtCj4gPj4+ IC0JaWYgKGludGVsX2VuY29kZXItPnR5cGUgIT0gSU5URUxfT1VUUFVUX0VEUCkKPiA+Pj4gLQkJ aW50ZWxfZW5jb2Rlci0+dHlwZSA9IElOVEVMX09VVFBVVF9EUDsKPiA+Pj4gIH0KPiA+Pj4gIAo+ ID4+PiAgc3RhdGljIGludCBpbnRlbF9kcF9nZXRfbW9kZXMoc3RydWN0IGRybV9jb25uZWN0b3Ig KmNvbm5lY3RvcikKPiA+Pj4gQEAgLTUxMDcsMTAgKzUxMDQsNiBAQCBpbnRlbF9kcF9ocGRfcHVs c2Uoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQsIGJvb2wgbG9uZ19o cGQpCj4gPj4+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShk ZXYpOwo+ID4+PiAgCWVudW0gaXJxcmV0dXJuIHJldCA9IElSUV9OT05FOwo+ID4+PiAgCj4gPj4+ IC0JaWYgKGludGVsX2RpZ19wb3J0LT5iYXNlLnR5cGUgIT0gSU5URUxfT1VUUFVUX0VEUCAmJgo+ ID4+PiAtCSAgICBpbnRlbF9kaWdfcG9ydC0+YmFzZS50eXBlICE9IElOVEVMX09VVFBVVF9IRE1J KQo+ID4+PiAtCQlpbnRlbF9kaWdfcG9ydC0+YmFzZS50eXBlID0gSU5URUxfT1VUUFVUX0RQOwo+ ID4+PiAtCj4gPj4+ICAJaWYgKGxvbmdfaHBkICYmIGludGVsX2RpZ19wb3J0LT5iYXNlLnR5cGUg PT0gSU5URUxfT1VUUFVUX0VEUCkgewo+ID4+PiAgCQkvKgo+ID4+PiAgCQkgKiB2ZGQgb2ZmIGNh biBnZW5lcmF0ZSBhIGxvbmcgcHVsc2Ugb24gZURQIHdoaWNoCj4gPj4+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rydi5oCj4gPj4+IGluZGV4IGRmOTY2NDI3MjMyYy4uNjI5ZWJjNzNiYjA5IDEwMDY0NAo+ ID4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ID4+PiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ID4+PiBAQCAtMTczLDcgKzE3Myw3IEBA IGVudW0gaW50ZWxfb3V0cHV0X3R5cGUgewo+ID4+PiAgCUlOVEVMX09VVFBVVF9EUCA9IDcsCj4g Pj4+ICAJSU5URUxfT1VUUFVUX0VEUCA9IDgsCj4gPj4+ICAJSU5URUxfT1VUUFVUX0RTSSA9IDks Cj4gPj4+IC0JSU5URUxfT1VUUFVUX1VOS05PV04gPSAxMCwKPiA+Pj4gKwlJTlRFTF9PVVRQVVRf RERJID0gMTAsCj4gPj4+ICAJSU5URUxfT1VUUFVUX0RQX01TVCA9IDExLAo+ID4+PiAgfTsKPiA+ Pj4gIAo+ID4+PiBAQCAtMjE2LDYgKzIxNiw5IEBAIHN0cnVjdCBpbnRlbF9lbmNvZGVyIHsKPiA+ Pj4gIAllbnVtIHBvcnQgcG9ydDsKPiA+Pj4gIAl1bnNpZ25lZCBpbnQgY2xvbmVhYmxlOwo+ID4+ PiAgCXZvaWQgKCpob3RfcGx1Zykoc3RydWN0IGludGVsX2VuY29kZXIgKik7Cj4gPj4+ICsJZW51 bSBpbnRlbF9vdXRwdXRfdHlwZSAoKmNvbXB1dGVfb3V0cHV0X3R5cGUpKHN0cnVjdCBpbnRlbF9l bmNvZGVyICosCj4gPj4+ICsJCQkJCQkgICAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqLAo+ ID4+PiArCQkJCQkJICAgICAgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKik7Cj4gPj4+ICAJ Ym9vbCAoKmNvbXB1dGVfY29uZmlnKShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqLAo+ID4+PiAgCQkJ ICAgICAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICosCj4gPj4+ICAJCQkgICAgICAgc3RydWN0 IGRybV9jb25uZWN0b3Jfc3RhdGUgKik7Cj4gPj4+IEBAIC0xMTUyLDcgKzExNTUsNyBAQCBlbmNf dG9fZGlnX3BvcnQoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQo+ID4+PiAgCXN0cnVjdCBp bnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyID0gdG9faW50ZWxfZW5jb2RlcihlbmNvZGVyKTsK PiA+Pj4gIAo+ID4+PiAgCXN3aXRjaCAoaW50ZWxfZW5jb2Rlci0+dHlwZSkgewo+ID4+PiAtCWNh c2UgSU5URUxfT1VUUFVUX1VOS05PV046Cj4gPj4+ICsJY2FzZSBJTlRFTF9PVVRQVVRfRERJOgo+ ID4+PiAgCQlXQVJOX09OKCFIQVNfRERJKHRvX2k5MTUoZW5jb2Rlci0+ZGV2KSkpOwo+ID4+PiAg CWNhc2UgSU5URUxfT1VUUFVUX0RQOgo+ID4+PiAgCWNhc2UgSU5URUxfT1VUUFVUX0VEUDoKPiA+ Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkbWkuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkbWkuYwo+ID4+PiBpbmRleCA5N2QwOGNkYTNmOGUuLmRl ZGUyODk4Y2I4YSAxMDA2NDQKPiA+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf aGRtaS5jCj4gPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkbWkuYwo+ID4+ PiBAQCAtMTYxNywxMiArMTYxNyw5IEBAIGludGVsX2hkbWlfZGV0ZWN0KHN0cnVjdCBkcm1fY29u bmVjdG9yICpjb25uZWN0b3IsIGJvb2wgZm9yY2UpCj4gPj4+ICAKPiA+Pj4gIAlpbnRlbF9oZG1p X3Vuc2V0X2VkaWQoY29ubmVjdG9yKTsKPiA+Pj4gIAo+ID4+PiAtCWlmIChpbnRlbF9oZG1pX3Nl dF9lZGlkKGNvbm5lY3RvcikpIHsKPiA+Pj4gLQkJc3RydWN0IGludGVsX2hkbWkgKmludGVsX2hk bWkgPSBpbnRlbF9hdHRhY2hlZF9oZG1pKGNvbm5lY3Rvcik7Cj4gPj4+IC0KPiA+Pj4gLQkJaGRt aV90b19kaWdfcG9ydChpbnRlbF9oZG1pKS0+YmFzZS50eXBlID0gSU5URUxfT1VUUFVUX0hETUk7 Cj4gPj4+ICsJaWYgKGludGVsX2hkbWlfc2V0X2VkaWQoY29ubmVjdG9yKSkKPiA+Pj4gIAkJc3Rh dHVzID0gY29ubmVjdG9yX3N0YXR1c19jb25uZWN0ZWQ7Cj4gPj4+IC0JfSBlbHNlCj4gPj4+ICsJ ZWxzZQo+ID4+PiAgCQlzdGF0dXMgPSBjb25uZWN0b3Jfc3RhdHVzX2Rpc2Nvbm5lY3RlZDsKPiA+ Pj4gIAo+ID4+PiAgCWludGVsX2Rpc3BsYXlfcG93ZXJfcHV0KGRldl9wcml2LCBQT1dFUl9ET01B SU5fR01CVVMpOwo+ID4+PiBAQCAtMTYzMyw4ICsxNjMwLDYgQEAgaW50ZWxfaGRtaV9kZXRlY3Qo c3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwgYm9vbCBmb3JjZSkKPiA+Pj4gIHN0YXRp YyB2b2lkCj4gPj4+ICBpbnRlbF9oZG1pX2ZvcmNlKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25u ZWN0b3IpCj4gPj4+ICB7Cj4gPj4+IC0Jc3RydWN0IGludGVsX2hkbWkgKmludGVsX2hkbWkgPSBp bnRlbF9hdHRhY2hlZF9oZG1pKGNvbm5lY3Rvcik7Cj4gPj4+IC0KPiA+Pj4gIAlEUk1fREVCVUdf S01TKCJbQ09OTkVDVE9SOiVkOiVzXVxuIiwKPiA+Pj4gIAkJICAgICAgY29ubmVjdG9yLT5iYXNl LmlkLCBjb25uZWN0b3ItPm5hbWUpOwo+ID4+PiAgCj4gPj4+IEBAIC0xNjQ0LDcgKzE2MzksNiBA QCBpbnRlbF9oZG1pX2ZvcmNlKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCj4gPj4+ ICAJCXJldHVybjsKPiA+Pj4gIAo+ID4+PiAgCWludGVsX2hkbWlfc2V0X2VkaWQoY29ubmVjdG9y KTsKPiA+Pj4gLQloZG1pX3RvX2RpZ19wb3J0KGludGVsX2hkbWkpLT5iYXNlLnR5cGUgPSBJTlRF TF9PVVRQVVRfSERNSTsKPiA+Pj4gIH0KPiA+Pj4gIAo+ID4+PiAgc3RhdGljIGludCBpbnRlbF9o ZG1pX2dldF9tb2RlcyhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ID4+PiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfb3ByZWdpb24uYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX29wcmVnaW9uLmMKPiA+Pj4gaW5kZXggMWQ5NDYyNDBlNTVmLi4z OTcxNGJlM2ViNmIgMTAwNjQ0Cj4gPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X29wcmVnaW9uLmMKPiA+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfb3ByZWdp b24uYwo+ID4+PiBAQCAtMzgzLDcgKzM4Myw3IEBAIGludCBpbnRlbF9vcHJlZ2lvbl9ub3RpZnlf ZW5jb2RlcihzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlciwKPiA+Pj4gIAljYXNl IElOVEVMX09VVFBVVF9BTkFMT0c6Cj4gPj4+ICAJCXR5cGUgPSBESVNQTEFZX1RZUEVfQ1JUOwo+ ID4+PiAgCQlicmVhazsKPiA+Pj4gLQljYXNlIElOVEVMX09VVFBVVF9VTktOT1dOOgo+ID4+PiAr CWNhc2UgSU5URUxfT1VUUFVUX0RESToKPiA+Pj4gIAljYXNlIElOVEVMX09VVFBVVF9EUDoKPiA+ Pj4gIAljYXNlIElOVEVMX09VVFBVVF9IRE1JOgo+ID4+PiAgCWNhc2UgSU5URUxfT1VUUFVUX0RQ X01TVDoKPiAKCi0tIApWaWxsZSBTeXJqw6Rsw6QKSW50ZWwgT1RDCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50 ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=