From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?Q?Noralf_Tr=c3=b8nnes?= Subject: Re: [Intel-gfx] [RFC v4 12/25] drm/i915: Add drm_driver->initial_client_display callback Date: Fri, 1 Mar 2019 12:46:19 +0100 Message-ID: References: <20180414115318.14500-1-noralf@tronnes.org> <20180414115318.14500-13-noralf@tronnes.org> <20180416083852.GN31310@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180416083852.GN31310@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Daniel Vetter Cc: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org CgpEZW4gMTYuMDQuMjAxOCAxMC4zOCwgc2tyZXYgRGFuaWVsIFZldHRlcjoKPiBPbiBTYXQsIEFw ciAxNCwgMjAxOCBhdCAwMTo1MzowNVBNICswMjAwLCBOb3JhbGYgVHLDuG5uZXMgd3JvdGU6Cj4+ IEFzIHBhcnQgb2YgbW92aW5nIHRoZSBtb2Rlc2V0dGluZyBjb2RlIG91dCBvZiBkcm1fZmJfaGVs cGVyIGFuZCBpbnRvCj4+IGRybV9jbGllbnQsIHRoZSBkcm1fZmJfaGVscGVyX2Z1bmNzLT5pbml0 aWFsX2NvbmZpZyBjYWxsYmFjayBuZWVkcyB0byBnby4KPj4gUmVwbGFjZSBpdCB3aXRoIGEgZHJt X2RyaXZlci0+aW5pdGlhbF9jbGllbnRfZGlzcGxheSBjYWxsYmFjayB0aGF0IGNhbgo+PiB3b3Jr IGZvciBhbGwgaW4ta2VybmVsIGNsaWVudHMuCj4+Cj4+IFRPRE86Cj4+IC0gQWRkIGEgcGF0Y2gg dGhhdCBtb3ZlcyB0aGUgZnVuY3Rpb24gb3V0IG9mIGludGVsX2ZiZGV2LmMgc2luY2UgaXQncyBu b3QKPj4gICBmYmRldiBzcGVjaWZpYyBhbnltb3JlLgo+Pgo+PiBTaWduZWQtb2ZmLWJ5OiBOb3Jh bGYgVHLDuG5uZXMgPG5vcmFsZkB0cm9ubmVzLm9yZz4KPiAKPiBTbyB0aGUgcmVhc29uIHdlIG9y aWdpbmFsbHkgYWRkZWQgdGhpcyBjYWxsYmFjayBmb3IgaTkxNSBmYXN0IGJvb3Qgd2FzCj4gdGhh dCB0aGVyZSB3YXNuJ3QgYW55IGF0b21pYyBhcm91bmQgeWV0LiBBbmQgaXQgd2FzIGFsbCBhbiBl eHBlcmltZW50IHRvCj4gZmlndXJlIG91dCBob3cgdG8gYmVzdCBnbyBhYm91dCBkZXNpZ25pbmcg ZmFzdGJvb3QuCj4gCj4gQnV0IG5vdyB3ZSBoYXZlIGZiZGV2LCBhbmQgZmFzdGJvb3QgZGVzaWdu IGlzIGFsc28gcHJldHR5IGNsZWFyOgo+IAo+IDEuIGRyaXZlciBsb2Fkcwo+IDIuIGRyaXZlciBy ZWFkcyBvdXQgY3VycmVudCBodyBzdGF0ZSwgcmVjb25zdHJ1Y3RzIGEgZnVsbCBhdG9taWMgc3Rh dGUgZm9yCj4gZXZlcnl0aGluZyBhbmQgc3R1ZmZzIGl0IGludG8gY29ubmVjdG9yL2NydGMvcGxh bmUtPnN0YXRlIHBvaW50ZXJzLgo+IDMuIGZiZGV2IGFuZCBhbnkgb3RoZXIgY2xpZW50IHJlYWQg b3V0IGN1cnJlbnQgc3RhdGUgKHdpdGggc29tZSBjYXZlYXRzKQo+IGFuZCBqdXN0IHRha2UgaXQg b3Zlci4KPiAKPiBXaGF0IG5vbi1mYXN0Ym9vdCBkcml2ZXJzIGRvOgo+IDEuIGRyaXZlcnMgbG9h ZAo+IDIuIHJlc2V0IGJvdGggaHcgYW5kIHN3IHN0YXRlIHRvIGV2ZXJ5dGhpbmcgb2ZmLgo+IAo+ IE5vdyB0aGUgaW50ZWxfZmJfaW5pdGlhbF9jb25maWcgaXMgYWxsIGdlbmVyaWMgY29kZSByZWFs bHksIGFuZCBpdCB3aWxsCj4gbmVhdGx5IGZhbGwgYmFjayB0byB0aGUgZGVmYXVsdCBjb25maWcg aWYgZXZlcnl0aGluZyBpcyBvZmYuIFRoaXMgbWVhbnMgd2UKPiBjb3VsZDoKPiAxLiBNb3ZlIHRo ZSBpbnRlbF9mYl9pbml0aWFsX2NvbmZpZyBpbnRvIHRoZSBmYmRldiBoZWxwZXJzLgo+IDIuIE51 a2UgdGhlIC0+aW5pdGlhbF9jb25maWcgY2FsbGJhY2suCj4gCj4gQW5kIHByb250byEgZXZlcnkg ZHJpdmVyIHdoaWNoIGltcGxlbWVudHMgaHcgc3RhdGUgcmVhZG91dCB3aWxsIGdldCBmYmRldgo+ IGZhc3Rib290IGZvciBmcmVlLgo+IAoKSSdtIGJhY2sgd29ya2luZyBvbiB0aGlzIG5vdyBhbmQg dGhlcmUncyBvbmUgaW50ZWwgc3BlY2lmaWMgdGhpbmc6Cm51bV9waXBlcywgaW4gdGhhdCBmdW5j dGlvbiB0aGF0IEkgZG9uJ3Qga25vdyBob3cgdG8gaGFuZGxlIHdoZW4gbW92aW5nCnRoZSBjb2Rl IGludG8gdGhlIGZiZGV2IGhlbHBlcjoKCnN0YXRpYyBib29sIGludGVsX2ZiX2luaXRpYWxfY29u ZmlnKC4uLikKewpbLi4uXQoJLyoKCSAqIElmIHRoZSBCSU9TIGRpZG4ndCBlbmFibGUgZXZlcnl0 aGluZyBpdCBjb3VsZCwgZmFsbCBiYWNrIHRvIGhhdmUgdGhlCgkgKiBzYW1lIHVzZXIgZXhwZXJp ZW5jaW5nIG9mIGxpZ2h0aW5nIHVwIGFzIG11Y2ggYXMgcG9zc2libGUgbGlrZSB0aGUKCSAqIGZi ZGV2IGhlbHBlciBsaWJyYXJ5LgoJICovCglpZiAobnVtX2Nvbm5lY3RvcnNfZW5hYmxlZCAhPSBu dW1fY29ubmVjdG9yc19kZXRlY3RlZCAmJgoJICAgIG51bV9jb25uZWN0b3JzX2VuYWJsZWQgPCBJ TlRFTF9JTkZPKGRldl9wcml2KS0+bnVtX3BpcGVzKSB7CgkJRFJNX0RFQlVHX0tNUygiZmFsbGJh Y2s6IE5vdCBhbGwgb3V0cHV0cyBlbmFibGVkXG4iKTsKCQlEUk1fREVCVUdfS01TKCJFbmFibGVk OiAlaSwgZGV0ZWN0ZWQ6ICVpXG4iLCBudW1fY29ubmVjdG9yc19lbmFibGVkLAoJCQkgICAgICBu dW1fY29ubmVjdG9yc19kZXRlY3RlZCk7CgkJZmFsbGJhY2sgPSB0cnVlOwoJfQoKTm9yYWxmLgoK PiBBbmQgc2luY2UgeW91J3ZlIGFscmVhZHkgcmV3cml0dGluZyB0aGUgaW50ZWwgY29kZSB0byB1 c2UgZHJtX2NsaWVudCwgaXQncwo+IHByYWN0aWNhbGx5IGRvbmUgYWxyZWFkeS4gSnVzdCBuZWVk IHRvIHMvaW50ZWxfL2RybV9mYmRldl9oZWxwZXJfIG9yCj4gc29tZXRoaW5nIGxpa2UgdGhhdCA6 LSkKPiAtRGFuaWVsCj4gCj4+IC0tLQo+PiAgZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIu YyAgICB8ICAxOSArKysrKy0tCj4+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jICAg IHwgICAxICsKPj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICAgfCAgMTEgKysr Kwo+PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJkZXYuYyB8IDExMyArKysrKysrKysr KysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tCj4+ICBpbmNsdWRlL2RybS9kcm1fZHJ2LmggICAg ICAgICAgICAgIHwgIDIxICsrKysrKysKPj4gIDUgZmlsZXMgY2hhbmdlZCwgMTA0IGluc2VydGlv bnMoKyksIDYxIGRlbGV0aW9ucygtKQo+Pgo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2RybV9mYl9oZWxwZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmMKPj4gaW5k ZXggYjk5MmY1OWRhZDMwLi41NDA3YmY2ZGM4YzAgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9kcm1fZmJfaGVscGVyLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxw ZXIuYwo+PiBAQCAtMjEwMyw2ICsyMTAzLDIwIEBAIHN0YXRpYyB2b2lkIGRybV9zZXR1cF9jcnRj cyhzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyLAo+PiAgCS8qIHByZXZlbnQgY29uY3Vy cmVudCBtb2RpZmljYXRpb24gb2YgY29ubmVjdG9yX2NvdW50IGJ5IGhvdHBsdWcgKi8KPj4gIAls b2NrZGVwX2Fzc2VydF9oZWxkKCZmYl9oZWxwZXItPmxvY2spOwo+PiAgCj4+ICsJbXV0ZXhfbG9j aygmZGV2LT5tb2RlX2NvbmZpZy5tdXRleCk7Cj4+ICsJaWYgKGRybV9mYl9oZWxwZXJfcHJvYmVf Y29ubmVjdG9yX21vZGVzKGZiX2hlbHBlciwgd2lkdGgsIGhlaWdodCkgPT0gMCkKPj4gKwkJRFJN X0RFQlVHX0tNUygiTm8gY29ubmVjdG9ycyByZXBvcnRlZCBjb25uZWN0ZWQgd2l0aCBtb2Rlc1xu Iik7Cj4+ICsKPj4gKwlpZiAoZGV2LT5kcml2ZXItPmluaXRpYWxfY2xpZW50X2Rpc3BsYXkpIHsK Pj4gKwkJZGlzcGxheSA9IGRldi0+ZHJpdmVyLT5pbml0aWFsX2NsaWVudF9kaXNwbGF5KGRldiwg d2lkdGgsIGhlaWdodCk7Cj4+ICsJCWlmIChkaXNwbGF5KSB7Cj4+ICsJCQlkcm1fY2xpZW50X2Rp c3BsYXlfZnJlZShmYl9oZWxwZXItPmRpc3BsYXkpOwo+PiArCQkJZmJfaGVscGVyLT5kaXNwbGF5 ID0gZGlzcGxheTsKPj4gKwkJCW11dGV4X3VubG9jaygmZGV2LT5tb2RlX2NvbmZpZy5tdXRleCk7 Cj4+ICsJCQlyZXR1cm47Cj4+ICsJCX0KPj4gKwl9Cj4+ICsKPj4gIAljcnRjcyA9IGtjYWxsb2Mo ZmJfaGVscGVyLT5jb25uZWN0b3JfY291bnQsCj4+ICAJCQlzaXplb2Yoc3RydWN0IGRybV9mYl9o ZWxwZXJfY3J0YyAqKSwgR0ZQX0tFUk5FTCk7Cj4+ICAJbW9kZXMgPSBrY2FsbG9jKGZiX2hlbHBl ci0+Y29ubmVjdG9yX2NvdW50LAo+PiBAQCAtMjEyMCw5ICsyMTM0LDYgQEAgc3RhdGljIHZvaWQg ZHJtX3NldHVwX2NydGNzKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIsCj4+ICAJaWYg KElTX0VSUihkaXNwbGF5KSkKPj4gIAkJZ290byBvdXQ7Cj4+ICAKPj4gLQltdXRleF9sb2NrKCZm Yl9oZWxwZXItPmRldi0+bW9kZV9jb25maWcubXV0ZXgpOwo+PiAtCWlmIChkcm1fZmJfaGVscGVy X3Byb2JlX2Nvbm5lY3Rvcl9tb2RlcyhmYl9oZWxwZXIsIHdpZHRoLCBoZWlnaHQpID09IDApCj4+ IC0JCURSTV9ERUJVR19LTVMoIk5vIGNvbm5lY3RvcnMgcmVwb3J0ZWQgY29ubmVjdGVkIHdpdGgg bW9kZXNcbiIpOwo+PiAgCWRybV9lbmFibGVfY29ubmVjdG9ycyhmYl9oZWxwZXIsIGVuYWJsZWQp Owo+PiAgCj4+ICAJaWYgKCEoZmJfaGVscGVyLT5mdW5jcy0+aW5pdGlhbF9jb25maWcgJiYKPj4g QEAgLTIxNDQsNyArMjE1NSw2IEBAIHN0YXRpYyB2b2lkIGRybV9zZXR1cF9jcnRjcyhzdHJ1Y3Qg ZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyLAo+PiAgCj4+ICAJCWRybV9waWNrX2NydGNzKGZiX2hl bHBlciwgY3J0Y3MsIG1vZGVzLCAwLCB3aWR0aCwgaGVpZ2h0KTsKPj4gIAl9Cj4+IC0JbXV0ZXhf dW5sb2NrKCZmYl9oZWxwZXItPmRldi0+bW9kZV9jb25maWcubXV0ZXgpOwo+PiAgCj4+ICAJLyog bmVlZCB0byBzZXQgdGhlIG1vZGVzZXRzIHVwIGhlcmUgZm9yIHVzZSBsYXRlciAqLwo+PiAgCS8q IGZpbGwgb3V0IHRoZSBjb25uZWN0b3I8LT5jcnRjIG1hcHBpbmdzIGludG8gdGhlIG1vZGVzZXRz ICovCj4+IEBAIC0yMTgyLDYgKzIxOTIsNyBAQCBzdGF0aWMgdm9pZCBkcm1fc2V0dXBfY3J0Y3Mo c3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlciwKPj4gIAlkcm1fY2xpZW50X2Rpc3BsYXlf ZnJlZShmYl9oZWxwZXItPmRpc3BsYXkpOwo+PiAgCWZiX2hlbHBlci0+ZGlzcGxheSA9IGRpc3Bs YXk7Cj4+ICBvdXQ6Cj4+ICsJbXV0ZXhfdW5sb2NrKCZkZXYtPm1vZGVfY29uZmlnLm11dGV4KTsK Pj4gIAlrZnJlZShjcnRjcyk7Cj4+ICAJa2ZyZWUobW9kZXMpOwo+PiAgCWtmcmVlKG9mZnNldHMp Owo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKPj4gaW5kZXggMDdjMDdkNTUzOThiLi5iNzQ2YzBj YmFhNGIgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKPj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+PiBAQCAtMjg1Nyw2ICsyODU3 LDcgQEAgc3RhdGljIHN0cnVjdCBkcm1fZHJpdmVyIGRyaXZlciA9IHsKPj4gIAo+PiAgCS5kdW1i X2NyZWF0ZSA9IGk5MTVfZ2VtX2R1bWJfY3JlYXRlLAo+PiAgCS5kdW1iX21hcF9vZmZzZXQgPSBp OTE1X2dlbV9tbWFwX2d0dCwKPj4gKwkuaW5pdGlhbF9jbGllbnRfZGlzcGxheSA9IGk5MTVfaW5p dGlhbF9jbGllbnRfZGlzcGxheSwKPj4gIAkuaW9jdGxzID0gaTkxNV9pb2N0bHMsCj4+ICAJLm51 bV9pb2N0bHMgPSBBUlJBWV9TSVpFKGk5MTVfaW9jdGxzKSwKPj4gIAkuZm9wcyA9ICZpOTE1X2Ry aXZlcl9mb3BzLAo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2 LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+PiBpbmRleCBkNDM2ODU4OWIz NTUuLmY3N2Y1MTA2MTdjNSAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHJ2LmgKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPj4gQEAg LTE3MjAsNiArMTcyMCw5IEBAIGV4dGVybiB2b2lkIGludGVsX2ZiZGV2X2Zpbmkoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPj4gIGV4dGVybiB2b2lkIGludGVsX2ZiZGV2X3Nl dF9zdXNwZW5kKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBzdGF0ZSwgYm9vbCBzeW5jaHJv bm91cyk7Cj4+ICBleHRlcm4gdm9pZCBpbnRlbF9mYmRldl9vdXRwdXRfcG9sbF9jaGFuZ2VkKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+PiAgZXh0ZXJuIHZvaWQgaW50ZWxfZmJkZXZfcmVzdG9y ZV9tb2RlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+PiArc3RydWN0IGRybV9jbGllbnRfZGlz cGxheSAqCj4+ICtpOTE1X2luaXRpYWxfY2xpZW50X2Rpc3BsYXkoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwgdW5zaWduZWQgaW50IHdpZHRoLAo+PiArCQkJICAgIHVuc2lnbmVkIGludCBoZWlnaHQp Owo+PiAgI2Vsc2UKPj4gIHN0YXRpYyBpbmxpbmUgaW50IGludGVsX2ZiZGV2X2luaXQoc3RydWN0 IGRybV9kZXZpY2UgKmRldikKPj4gIHsKPj4gQEAgLTE3NDksNiArMTc1MiwxNCBAQCBzdGF0aWMg aW5saW5lIHZvaWQgaW50ZWxfZmJkZXZfb3V0cHV0X3BvbGxfY2hhbmdlZChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2KQo+PiAgc3RhdGljIGlubGluZSB2b2lkIGludGVsX2ZiZGV2X3Jlc3RvcmVfbW9k ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+PiAgewo+PiAgfQo+PiArCj4+ICtzdGF0aWMgaW5s aW5lIHN0cnVjdCBkcm1fY2xpZW50X2Rpc3BsYXkgKgo+PiAraTkxNV9pbml0aWFsX2NsaWVudF9k aXNwbGF5KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCB3aWR0aCwKPj4gKwkJ CSAgICB1bnNpZ25lZCBpbnQgaGVpZ2h0KQo+PiArewo+PiArCXJldHVybiBOVUxMOwo+PiArfQo+ PiArCj4+ICAjZW5kaWYKPj4gIAo+PiAgLyogaW50ZWxfZmJjLmMgKi8KPj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiZGV2LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9mYmRldi5jCj4+IGluZGV4IGE0YWI4NTc1YTcyZS4uYjdmNDRjOTQ3NWE4IDEwMDY0 NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmRldi5jCj4+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiZGV2LmMKPj4gQEAgLTM4LDYgKzM4LDcgQEAKPj4g ICNpbmNsdWRlIDxsaW51eC92Z2Ffc3dpdGNoZXJvby5oPgo+PiAgCj4+ICAjaW5jbHVkZSA8ZHJt L2RybVAuaD4KPj4gKyNpbmNsdWRlIDxkcm0vZHJtX2NsaWVudC5oPgo+PiAgI2luY2x1ZGUgPGRy bS9kcm1fY3J0Yy5oPgo+PiAgI2luY2x1ZGUgPGRybS9kcm1fZmJfaGVscGVyLmg+Cj4+ICAjaW5j bHVkZSAiaW50ZWxfZHJ2LmgiCj4+IEBAIC0yODcsMTggKzI4OCw2IEBAIHN0YXRpYyBpbnQgaW50 ZWxmYl9jcmVhdGUoc3RydWN0IGRybV9mYl9oZWxwZXIgKmhlbHBlciwKPj4gIAlyZXR1cm4gcmV0 Owo+PiAgfQo+PiAgCj4+IC1zdGF0aWMgc3RydWN0IGRybV9mYl9oZWxwZXJfY3J0YyAqCj4+IC1p bnRlbF9mYl9oZWxwZXJfY3J0YyhzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyLCBzdHJ1 Y3QgZHJtX2NydGMgKmNydGMpCj4+IC17Cj4+IC0JaW50IGk7Cj4+IC0KPj4gLQlmb3IgKGkgPSAw OyBpIDwgZmJfaGVscGVyLT5jcnRjX2NvdW50OyBpKyspCj4+IC0JCWlmIChmYl9oZWxwZXItPmNy dGNfaW5mb1tpXS5tb2RlX3NldC5jcnRjID09IGNydGMpCj4+IC0JCQlyZXR1cm4gJmZiX2hlbHBl ci0+Y3J0Y19pbmZvW2ldOwo+PiAtCj4+IC0JcmV0dXJuIE5VTEw7Cj4+IC19Cj4+IC0KPj4gIC8q Cj4+ICAgKiBUcnkgdG8gcmVhZCB0aGUgQklPUyBkaXNwbGF5IGNvbmZpZ3VyYXRpb24gYW5kIHVz ZSBpdCBmb3IgdGhlIGluaXRpYWwKPj4gICAqIGZiIGNvbmZpZ3VyYXRpb24uCj4+IEBAIC0zMjYs NDQgKzMxNSw0OCBAQCBpbnRlbF9mYl9oZWxwZXJfY3J0YyhzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAq ZmJfaGVscGVyLCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4+ICAgKiBpcyBpbiBWR0EgbW9kZSB3 ZSBuZWVkIHRvIHJlY2FsY3VsYXRlIHdhdGVybWFya3MgYW5kIHNldCBhIG5ldyBoaWdoLXJlcwo+ PiAgICogZnJhbWVidWZmZXIgYW55d2F5Lgo+PiAgICovCj4+IC1zdGF0aWMgYm9vbCBpbnRlbF9m Yl9pbml0aWFsX2NvbmZpZyhzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyLAo+PiAtCQkJ CSAgICBzdHJ1Y3QgZHJtX2ZiX2hlbHBlcl9jcnRjICoqY3J0Y3MsCj4+IC0JCQkJICAgIHN0cnVj dCBkcm1fZGlzcGxheV9tb2RlICoqbW9kZXMsCj4+IC0JCQkJICAgIHN0cnVjdCBkcm1fZmJfb2Zm c2V0ICpvZmZzZXRzLAo+PiAtCQkJCSAgICBib29sICplbmFibGVkLCBpbnQgd2lkdGgsIGludCBo ZWlnaHQpCj4+ICtzdHJ1Y3QgZHJtX2NsaWVudF9kaXNwbGF5ICoKPj4gK2k5MTVfaW5pdGlhbF9j bGllbnRfZGlzcGxheShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgd2lkdGgs Cj4+ICsJCQkgICAgdW5zaWduZWQgaW50IGhlaWdodCkKPj4gIHsKPj4gLQlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGZiX2hlbHBlci0+ZGV2KTsKPj4gKwlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4+ICAJdW5zaWdu ZWQgbG9uZyBjb25uX2NvbmZpZ3VyZWQsIGNvbm5fc2VxLCBtYXNrOwo+PiAtCXVuc2lnbmVkIGlu dCBjb3VudCA9IG1pbihmYl9oZWxwZXItPmNvbm5lY3Rvcl9jb3VudCwgQklUU19QRVJfTE9ORyk7 Cj4+IC0JaW50IGksIGo7Cj4+IC0JYm9vbCAqc2F2ZV9lbmFibGVkOwo+PiAtCWJvb2wgZmFsbGJh Y2sgPSB0cnVlLCByZXQgPSB0cnVlOwo+PiArCWJvb2wgZmFsbGJhY2sgPSB0cnVlLCAqZW5hYmxl ZCA9IE5VTEw7Cj4+ICsJc3RydWN0IGRybV9jbGllbnRfZGlzcGxheSAqZGlzcGxheTsKPj4gKwlz dHJ1Y3QgZHJtX2Nvbm5lY3RvciAqKmNvbm5lY3RvcnM7Cj4+ICsJaW50IGksIGNvbm5lY3Rvcl9j b3VudDsKPj4gKwl1bnNpZ25lZCBpbnQgY291bnQ7Cj4+ICAJaW50IG51bV9jb25uZWN0b3JzX2Vu YWJsZWQgPSAwOwo+PiAgCWludCBudW1fY29ubmVjdG9yc19kZXRlY3RlZCA9IDA7Cj4+ICAJc3Ry dWN0IGRybV9tb2Rlc2V0X2FjcXVpcmVfY3R4IGN0eDsKPj4gIAo+PiAtCXNhdmVfZW5hYmxlZCA9 IGtjYWxsb2MoY291bnQsIHNpemVvZihib29sKSwgR0ZQX0tFUk5FTCk7Cj4+IC0JaWYgKCFzYXZl X2VuYWJsZWQpCj4+IC0JCXJldHVybiBmYWxzZTsKPj4gKwlkaXNwbGF5ID0gZHJtX2NsaWVudF9k aXNwbGF5X2NyZWF0ZShkZXYpOwo+PiArCWlmIChJU19FUlIoZGlzcGxheSkpCj4+ICsJCXJldHVy biBOVUxMOwo+PiAgCj4+ICAJZHJtX21vZGVzZXRfYWNxdWlyZV9pbml0KCZjdHgsIDApOwo+PiAg Cj4+IC0Jd2hpbGUgKGRybV9tb2Rlc2V0X2xvY2tfYWxsX2N0eChmYl9oZWxwZXItPmRldiwgJmN0 eCkgIT0gMCkKPj4gKwl3aGlsZSAoZHJtX21vZGVzZXRfbG9ja19hbGxfY3R4KGRldiwgJmN0eCkg IT0gMCkKPj4gIAkJZHJtX21vZGVzZXRfYmFja29mZigmY3R4KTsKPj4gIAo+PiAtCW1lbWNweShz YXZlX2VuYWJsZWQsIGVuYWJsZWQsIGNvdW50KTsKPj4gKwljb25uZWN0b3JfY291bnQgPSBkcm1f Y29ubmVjdG9yX2dldF9hbGwoZGV2LCAmY29ubmVjdG9ycyk7Cj4+ICsJaWYgKGNvbm5lY3Rvcl9j b3VudCA8IDEpCj4+ICsJCWdvdG8gYmFpbDsKPj4gKwo+PiArCWVuYWJsZWQgPSBkcm1fY29ubmVj dG9yX2dldF9lbmFibGVkX3N0YXR1cyhjb25uZWN0b3JzLCBjb25uZWN0b3JfY291bnQpOwo+PiAr CWlmICghZW5hYmxlZCkKPj4gKwkJZ290byBiYWlsOwo+PiArCj4+ICsJY291bnQgPSBtaW4oY29u bmVjdG9yX2NvdW50LCBCSVRTX1BFUl9MT05HKTsKPj4gIAltYXNrID0gR0VOTUFTSyhjb3VudCAt IDEsIDApOwo+PiAgCWNvbm5fY29uZmlndXJlZCA9IDA7Cj4+ICByZXRyeToKPj4gIAljb25uX3Nl cSA9IGNvbm5fY29uZmlndXJlZDsKPj4gIAlmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewo+ PiAtCQlzdHJ1Y3QgZHJtX2ZiX2hlbHBlcl9jb25uZWN0b3IgKmZiX2Nvbm47Cj4+IC0JCXN0cnVj dCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3I7Cj4+ICsJCXN0cnVjdCBkcm1fY29ubmVjdG9yICpj b25uZWN0b3IgPSBjb25uZWN0b3JzW2ldOwo+PiArCQlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAq bW9kZTsKPj4gKwkJc3RydWN0IGRybV9tb2RlX3NldCAqbW9kZXNldDsKPj4gIAkJc3RydWN0IGRy bV9lbmNvZGVyICplbmNvZGVyOwo+PiAtCQlzdHJ1Y3QgZHJtX2ZiX2hlbHBlcl9jcnRjICpuZXdf Y3J0YzsKPj4gLQo+PiAtCQlmYl9jb25uID0gZmJfaGVscGVyLT5jb25uZWN0b3JfaW5mb1tpXTsK Pj4gLQkJY29ubmVjdG9yID0gZmJfY29ubi0+Y29ubmVjdG9yOwo+PiAgCj4+ICAJCWlmIChjb25u X2NvbmZpZ3VyZWQgJiBCSVQoaSkpCj4+ICAJCQljb250aW51ZTsKPj4gQEAgLTQwMiwxNiArMzk1 LDEzIEBAIHN0YXRpYyBib29sIGludGVsX2ZiX2luaXRpYWxfY29uZmlnKHN0cnVjdCBkcm1fZmJf aGVscGVyICpmYl9oZWxwZXIsCj4+ICAKPj4gIAkJbnVtX2Nvbm5lY3RvcnNfZW5hYmxlZCsrOwo+ PiAgCj4+IC0JCW5ld19jcnRjID0gaW50ZWxfZmJfaGVscGVyX2NydGMoZmJfaGVscGVyLAo+PiAt CQkJCQkJY29ubmVjdG9yLT5zdGF0ZS0+Y3J0Yyk7Cj4+IC0KPj4gIAkJLyoKPj4gIAkJICogTWFr ZSBzdXJlIHdlJ3JlIG5vdCB0cnlpbmcgdG8gZHJpdmUgbXVsdGlwbGUgY29ubmVjdG9ycwo+PiAg CQkgKiB3aXRoIGEgc2luZ2xlIENSVEMsIHNpbmNlIG91ciBjbG9uaW5nIHN1cHBvcnQgbWF5IG5v dAo+PiAgCQkgKiBtYXRjaCB0aGUgQklPUy4KPj4gIAkJICovCj4+IC0JCWZvciAoaiA9IDA7IGog PCBjb3VudDsgaisrKSB7Cj4+IC0JCQlpZiAoY3J0Y3Nbal0gPT0gbmV3X2NydGMpIHsKPj4gKwkJ ZHJtX2NsaWVudF9kaXNwbGF5X2Zvcl9lYWNoX21vZGVzZXQobW9kZXNldCwgZGlzcGxheSkgewo+ PiArCQkJaWYgKG1vZGVzZXQtPmNvbm5lY3RvcnNbMF0gPT0gY29ubmVjdG9yKSB7Cj4+ICAJCQkJ RFJNX0RFQlVHX0tNUygiZmFsbGJhY2s6IGNsb25lZCBjb25maWd1cmF0aW9uXG4iKTsKPj4gIAkJ CQlnb3RvIGJhaWw7Cj4+ICAJCQl9Cj4+IEBAIC00MjEsMjggKzQxMSwyNiBAQCBzdGF0aWMgYm9v bCBpbnRlbF9mYl9pbml0aWFsX2NvbmZpZyhzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVy LAo+PiAgCQkJICAgICAgY29ubmVjdG9yLT5uYW1lKTsKPj4gIAo+PiAgCQkvKiBnbyBmb3IgY29t bWFuZCBsaW5lIG1vZGUgZmlyc3QgKi8KPj4gLQkJbW9kZXNbaV0gPSBkcm1fY29ubmVjdG9yX3Bp Y2tfY21kbGluZV9tb2RlKGNvbm5lY3Rvcik7Cj4+ICsJCW1vZGUgPSBkcm1fY29ubmVjdG9yX3Bp Y2tfY21kbGluZV9tb2RlKGNvbm5lY3Rvcik7Cj4+ICAKPj4gIAkJLyogdHJ5IGZvciBwcmVmZXJy ZWQgbmV4dCAqLwo+PiAtCQlpZiAoIW1vZGVzW2ldKSB7Cj4+ICsJCWlmICghbW9kZSkgewo+PiAg CQkJRFJNX0RFQlVHX0tNUygibG9va2luZyBmb3IgcHJlZmVycmVkIG1vZGUgb24gY29ubmVjdG9y ICVzICVkXG4iLAo+PiAgCQkJCSAgICAgIGNvbm5lY3Rvci0+bmFtZSwgY29ubmVjdG9yLT5oYXNf dGlsZSk7Cj4+IC0JCQltb2Rlc1tpXSA9IGRybV9jb25uZWN0b3JfaGFzX3ByZWZlcnJlZF9tb2Rl KGNvbm5lY3RvciwKPj4gLQkJCQkJCQkJICAgIHdpZHRoLAo+PiAtCQkJCQkJCQkgICAgaGVpZ2h0 KTsKPj4gKwkJCW1vZGUgPSBkcm1fY29ubmVjdG9yX2hhc19wcmVmZXJyZWRfbW9kZShjb25uZWN0 b3IsCj4+ICsJCQkJCQkJCXdpZHRoLCBoZWlnaHQpOwo+PiAgCQl9Cj4+ICAKPj4gIAkJLyogTm8g cHJlZmVycmVkIG1vZGUgbWFya2VkIGJ5IHRoZSBFRElEPyBBcmUgdGhlcmUgYW55IG1vZGVzPyAq Lwo+PiAtCQlpZiAoIW1vZGVzW2ldICYmICFsaXN0X2VtcHR5KCZjb25uZWN0b3ItPm1vZGVzKSkg ewo+PiArCQlpZiAoIW1vZGUgJiYgIWxpc3RfZW1wdHkoJmNvbm5lY3Rvci0+bW9kZXMpKSB7Cj4+ ICAJCQlEUk1fREVCVUdfS01TKCJ1c2luZyBmaXJzdCBtb2RlIGxpc3RlZCBvbiBjb25uZWN0b3Ig JXNcbiIsCj4+ICAJCQkJICAgICAgY29ubmVjdG9yLT5uYW1lKTsKPj4gLQkJCW1vZGVzW2ldID0g bGlzdF9maXJzdF9lbnRyeSgmY29ubmVjdG9yLT5tb2RlcywKPj4gLQkJCQkJCSAgICBzdHJ1Y3Qg ZHJtX2Rpc3BsYXlfbW9kZSwKPj4gLQkJCQkJCSAgICBoZWFkKTsKPj4gKwkJCW1vZGUgPSBsaXN0 X2ZpcnN0X2VudHJ5KCZjb25uZWN0b3ItPm1vZGVzLAo+PiArCQkJCQkJc3RydWN0IGRybV9kaXNw bGF5X21vZGUsIGhlYWQpOwo+PiAgCQl9Cj4+ICAKPj4gIAkJLyogbGFzdCByZXNvcnQ6IHVzZSBj dXJyZW50IG1vZGUgKi8KPj4gLQkJaWYgKCFtb2Rlc1tpXSkgewo+PiArCQlpZiAoIW1vZGUpIHsK Pj4gIAkJCS8qCj4+ICAJCQkgKiBJTVBPUlRBTlQ6IFdlIHdhbnQgdG8gdXNlIHRoZSBhZGp1c3Rl ZCBtb2RlIChpLmUuCj4+ICAJCQkgKiBhZnRlciB0aGUgcGFuZWwgZml0dGVyIHVwc2NhbGluZykg YXMgdGhlIGluaXRpYWwKPj4gQEAgLTQ1OCwxNiArNDQ2LDI2IEBAIHN0YXRpYyBib29sIGludGVs X2ZiX2luaXRpYWxfY29uZmlnKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIsCj4+ICAJ CQkgKi8KPj4gIAkJCURSTV9ERUJVR19LTVMoImxvb2tpbmcgZm9yIGN1cnJlbnQgbW9kZSBvbiBj b25uZWN0b3IgJXNcbiIsCj4+ICAJCQkJICAgICAgY29ubmVjdG9yLT5uYW1lKTsKPj4gLQkJCW1v ZGVzW2ldID0gJmNvbm5lY3Rvci0+c3RhdGUtPmNydGMtPm1vZGU7Cj4+ICsJCQltb2RlID0gJmNv bm5lY3Rvci0+c3RhdGUtPmNydGMtPm1vZGU7Cj4+ICAJCX0KPj4gLQkJY3J0Y3NbaV0gPSBuZXdf Y3J0YzsKPj4gKwo+PiArCQltb2Rlc2V0ID0gZHJtX2NsaWVudF9kaXNwbGF5X2ZpbmRfbW9kZXNl dChkaXNwbGF5LCBjb25uZWN0b3ItPnN0YXRlLT5jcnRjKTsKPj4gKwkJaWYgKFdBUk5fT04oIW1v ZGVzZXQpKQo+PiArCQkJZ290byBiYWlsOwo+PiArCj4+ICsJCW1vZGVzZXQtPm1vZGUgPSBkcm1f bW9kZV9kdXBsaWNhdGUoZGV2LCBtb2RlKTsKPj4gKwkJZHJtX2Nvbm5lY3Rvcl9nZXQoY29ubmVj dG9yKTsKPj4gKwkJbW9kZXNldC0+Y29ubmVjdG9yc1swXSA9IGNvbm5lY3RvcjsKPj4gKwkJbW9k ZXNldC0+bnVtX2Nvbm5lY3RvcnMgPSAxOwo+PiArCQltb2Rlc2V0LT54ID0gMDsKPj4gKwkJbW9k ZXNldC0+eSA9IDA7Cj4+ICAKPj4gIAkJRFJNX0RFQlVHX0tNUygiY29ubmVjdG9yICVzIG9uIFtD UlRDOiVkOiVzXTogJWR4JWQlc1xuIiwKPj4gIAkJCSAgICAgIGNvbm5lY3Rvci0+bmFtZSwKPj4g IAkJCSAgICAgIGNvbm5lY3Rvci0+c3RhdGUtPmNydGMtPmJhc2UuaWQsCj4+ICAJCQkgICAgICBj b25uZWN0b3ItPnN0YXRlLT5jcnRjLT5uYW1lLAo+PiAtCQkJICAgICAgbW9kZXNbaV0tPmhkaXNw bGF5LCBtb2Rlc1tpXS0+dmRpc3BsYXksCj4+IC0JCQkgICAgICBtb2Rlc1tpXS0+ZmxhZ3MgJiBE Uk1fTU9ERV9GTEFHX0lOVEVSTEFDRSA/ICJpIiA6IiIpOwo+PiArCQkJICAgICAgbW9kZS0+aGRp c3BsYXksIG1vZGUtPnZkaXNwbGF5LAo+PiArCQkJICAgICAgbW9kZS0+ZmxhZ3MgJiBEUk1fTU9E RV9GTEFHX0lOVEVSTEFDRSA/ICJpIiA6ICIiKTsKPj4gIAo+PiAgCQlmYWxsYmFjayA9IGZhbHNl Owo+PiAgCQljb25uX2NvbmZpZ3VyZWQgfD0gQklUKGkpOwo+PiBAQCAtNDkyLDE5ICs0OTAsMjAg QEAgc3RhdGljIGJvb2wgaW50ZWxfZmJfaW5pdGlhbF9jb25maWcoc3RydWN0IGRybV9mYl9oZWxw ZXIgKmZiX2hlbHBlciwKPj4gIAlpZiAoZmFsbGJhY2spIHsKPj4gIGJhaWw6Cj4+ICAJCURSTV9E RUJVR19LTVMoIk5vdCB1c2luZyBmaXJtd2FyZSBjb25maWd1cmF0aW9uXG4iKTsKPj4gLQkJbWVt Y3B5KGVuYWJsZWQsIHNhdmVfZW5hYmxlZCwgY291bnQpOwo+PiAtCQlyZXQgPSBmYWxzZTsKPj4g KwkJZHJtX2NsaWVudF9kaXNwbGF5X2ZyZWUoZGlzcGxheSk7Cj4+ICsJCWRpc3BsYXkgPSBOVUxM Owo+PiAgCX0KPj4gIAo+PiAgCWRybV9tb2Rlc2V0X2Ryb3BfbG9ja3MoJmN0eCk7Cj4+ICAJZHJt X21vZGVzZXRfYWNxdWlyZV9maW5pKCZjdHgpOwo+PiAgCj4+IC0Ja2ZyZWUoc2F2ZV9lbmFibGVk KTsKPj4gLQlyZXR1cm4gcmV0Owo+PiArCWRybV9jb25uZWN0b3JfcHV0X2FsbChjb25uZWN0b3Jz LCBjb25uZWN0b3JfY291bnQpOwo+PiArCWtmcmVlKGVuYWJsZWQpOwo+PiArCj4+ICsJcmV0dXJu IGRpc3BsYXk7Cj4+ICB9Cj4+ICAKPj4gIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2ZiX2hlbHBl cl9mdW5jcyBpbnRlbF9mYl9oZWxwZXJfZnVuY3MgPSB7Cj4+IC0JLmluaXRpYWxfY29uZmlnID0g aW50ZWxfZmJfaW5pdGlhbF9jb25maWcsCj4+ICAJLmZiX3Byb2JlID0gaW50ZWxmYl9jcmVhdGUs Cj4+ICB9Owo+PiAgCj4+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fZHJ2LmggYi9pbmNs dWRlL2RybS9kcm1fZHJ2LmgKPj4gaW5kZXggN2U1NDVmNWY5NGQzLi4xMzM1NmU2ZmQ0MGMgMTAw NjQ0Cj4+IC0tLSBhL2luY2x1ZGUvZHJtL2RybV9kcnYuaAo+PiArKysgYi9pbmNsdWRlL2RybS9k cm1fZHJ2LmgKPj4gQEAgLTMyLDYgKzMyLDcgQEAKPj4gIAo+PiAgI2luY2x1ZGUgPGRybS9kcm1f ZGV2aWNlLmg+Cj4+ICAKPj4gK3N0cnVjdCBkcm1fY2xpZW50X2Rpc3BsYXk7Cj4+ICBzdHJ1Y3Qg ZHJtX2ZpbGU7Cj4+ICBzdHJ1Y3QgZHJtX2dlbV9vYmplY3Q7Cj4+ICBzdHJ1Y3QgZHJtX21hc3Rl cjsKPj4gQEAgLTU1Myw2ICs1NTQsMjYgQEAgc3RydWN0IGRybV9kcml2ZXIgewo+PiAgCQkJICAg IHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4+ICAJCQkgICAgdWludDMyX3QgaGFuZGxlKTsKPj4g IAo+PiArCS8qKgo+PiArCSAqIEBpbml0aWFsX2NsaWVudF9jb25maWc6Cj4+ICsJICoKPj4gKwkg KiBEcml2ZXIgY2FsbGJhY2sgdG8gc2V0dXAgYW4gaW5pdGlhbCBmYmRldiBkaXNwbGF5IGNvbmZp Z3VyYXRpb24uCj4+ICsJICogRHJpdmVycyBjYW4gdXNlIHRoaXMgY2FsbGJhY2sgdG8gdGVsbCB0 aGUgZmJkZXYgZW11bGF0aW9uIHdoYXQgdGhlCj4+ICsJICogcHJlZmVycmVkIGluaXRpYWwgY29u ZmlndXJhdGlvbiBpcy4gVGhpcyBpcyB1c2VmdWwgdG8gaW1wbGVtZW50Cj4+ICsJICogc21vb3Ro IGJvb3Rpbmcgd2hlcmUgdGhlIGZiZGV2IChhbmQgc3Vic2VxdWVudGx5IGFsbCB1c2Vyc3BhY2Up IG5ldmVyCj4+ICsJICogY2hhbmdlcyB0aGUgbW9kZSwgYnV0IGFsd2F5cyBpbmhlcml0cyB0aGUg ZXhpc3RpbmcgY29uZmlndXJhdGlvbi4KPj4gKwkgKgo+PiArCSAqIFRoaXMgY2FsbGJhY2sgaXMg b3B0aW9uYWwuCj4+ICsJICoKPj4gKwkgKiBSRVRVUk5TOgo+PiArCSAqCj4+ICsJICogVGhlIGRy aXZlciBzaG91bGQgcmV0dXJuIHRydWUgaWYgYSBzdWl0YWJsZSBpbml0aWFsIGNvbmZpZ3VyYXRp b24gaGFzCj4+ICsJICogYmVlbiBmaWxsZWQgb3V0IGFuZCBmYWxzZSB3aGVuIHRoZSBmYmRldiBo ZWxwZXIgc2hvdWxkIGZhbGwgYmFjayB0bwo+PiArCSAqIHRoZSBkZWZhdWx0IHByb2JpbmcgbG9n aWMuCj4+ICsJICovCj4+ICsJc3RydWN0IGRybV9jbGllbnRfZGlzcGxheSAqKCppbml0aWFsX2Ns aWVudF9kaXNwbGF5KShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+PiArCQkJCQl1bnNpZ25lZCBp bnQgd2lkdGgsIHVuc2lnbmVkIGludCBoZWlnaHQpOwo+PiArCj4+ICAJLyoqCj4+ICAJICogQGdl bV92bV9vcHM6IERyaXZlciBwcml2YXRlIG9wcyBmb3IgdGhpcyBvYmplY3QKPj4gIAkgKi8KPj4g LS0gCj4+IDIuMTUuMQo+Pgo+PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwo+PiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4+IEludGVsLWdmeEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKPj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9pbnRlbC1nZngKPiAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v ZHJpLWRldmVs