From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Sharma, Shashank" Subject: Re: [PATCH v4 4/6] drm: scrambling support in drm layer Date: Thu, 23 Feb 2017 17:43:15 +0530 Message-ID: References: <1487769511-17359-1-git-send-email-shashank.sharma@intel.com> <1487769511-17359-5-git-send-email-shashank.sharma@intel.com> <20170222172424.GL31595@intel.com> <20170223114543.GT31595@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170223114543.GT31595@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: =?UTF-8?B?VmlsbGUgU3lyasOkbMOk?= Cc: jose.abreu@synopsys.com, intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, daniel.vetter@intel.com, treding@nvidia.com List-Id: intel-gfx@lists.freedesktop.org UmVnYXJkcwoKU2hhc2hhbmsKCgpPbiAyLzIzLzIwMTcgNToxNSBQTSwgVmlsbGUgU3lyasOkbMOk IHdyb3RlOgo+IE9uIFRodSwgRmViIDIzLCAyMDE3IGF0IDA5OjA1OjE2QU0gKzA1MzAsIFNoYXJt YSwgU2hhc2hhbmsgd3JvdGU6Cj4+IFJlZ2FyZHMKPj4KPj4gU2hhc2hhbmsKPj4KPj4KPj4gT24g Mi8yMi8yMDE3IDEwOjU0IFBNLCBWaWxsZSBTeXJqw6Rsw6Qgd3JvdGU6Cj4+PiBPbiBXZWQsIEZl YiAyMiwgMjAxNyBhdCAwNjo0ODoyOVBNICswNTMwLCBTaGFzaGFuayBTaGFybWEgd3JvdGU6Cj4+ Pj4gSERNSSAyLjAgc3BlYyBtYW5kYXRlcyBzY3JhbWJsaW5nIGZvciBtb2RlcyB3aXRoIHBpeGVs IGNsb2NrIGhpZ2hlcgo+Pj4+IHRoYW4gMzQwIE1Iei4gVGhpcyBwYXRjaCBhZGRzIGZldyBuZXcg ZnVuY3Rpb25zIGluIGRybSBsYXllciBmb3IKPj4+PiBjb3JlIGRyaXZlcnMgdG8gZW5hYmxlL2Rp c2FibGUgc2NyYW1ibGluZy4KPj4+Pgo+Pj4+IFRoaXMgcGF0Y2ggYWRkczoKPj4+PiAtIEEgZnVu Y3Rpb24gdG8gZGV0ZWN0IHNjcmFtYmxpbmcgc3VwcG9ydCBwYXJzaW5nIEhGLVZTREIKPj4+PiAt IEEgZnVuY3Rpb24gdG8gY2hlY2sgc2NyYW1ibGluZyBzdGF0dXMgcnVudGltZSB1c2luZyBTQ0RD IHJlYWQuCj4+Pj4gLSBUd28gZnVuY3Rpb25zIHRvIGVuYWJsZS9kaXNhYmxlIHNjcmFtYmxpbmcg dXNpbmcgU0NEQyByZWFkL3dyaXRlLgo+Pj4+IC0gRmV3IG5ldyBib29scyB0byByZWZsZWN0IHNj cmFtYmxpbmcgc3VwcG9ydCBhbmQgc3RhdHVzLgo+Pj4+Cj4+Pj4gVjI6IEFkZHJlc3NlZCByZXZp ZXcgY29tbWVudHMgZnJvbSBUaGllcnJ5LCBWaWxsZSBhbmQgRGhpbmFrYXJhbgo+Pj4+IFRoaWVy cnk6Cj4+Pj4gLSBNaHogLT4gTUh6IGluIGNvbW1lbnRzIGFuZCBjb21taXQgbWVzc2FnZS4KPj4+ PiAtIGkyYyAtPiBJMkMgaW4gY29tbWVudHMuCj4+Pj4gLSBGaXggdGhlIGZ1bmN0aW9uIGRvY3Vt ZW50YXRpb25zLCBrZWVwIGluIHN5bmMgd2l0aCBkcm1fc2NkY19oZWxwZXIuYwo+Pj4+IC0gZHJt X2Nvbm5lY3RvciAtPiBEUk0gY29ubmVjdG9yLgo+Pj4+IC0gQ3JlYXRlIHN0cnVjdHVyZSBmb3Ig U0NEQywgYW5kIHNhdmUgc2NyYW1ibGluZyBzdGF0dXMgaW5zaWRlIHRoYXQsCj4+Pj4gICAgIGlu IGEgc3ViLXN0cnVjdHVyZS4KPj4+PiAtIENhbGwgdGhpcyBzdWItc3RydWN0dXJlIHNjcmFtYmxp bmcgaW5zdGVhZCBvZiBzY3JfaW5mby4KPj4+PiAtIGxvd19yYXRlcyAtPiBsb3dfY2xvY2tzIGlu IHNjcmFtYmxpbmcgc3RhdHVzIHN0cnVjdHVyZS4KPj4+PiAtIFN0b3JlIHRoZSByZXR1cm4gdmFs dWUgb2YgSTJDIHJlYWQvd3JpdGUgYW5kIHByaW50IHRoZSBlcnJvciBjb2RlCj4+Pj4gICAgIGlu IGNhc2Ugb2YgZmFpbHVyZS4KPj4+Pgo+Pj4+IFRoaWVycnkgYW5kIFZpbGxlOgo+Pj4+IC0gTW92 ZSB0aGUgc2NyYW1ibGluZyBlbmFibGUvZGlzYWJsZS9xdWVyeSBmdW5jdGlvbnMgaW4KPj4+PiAg ICAgZHJtX3NjZGNfaGVscGVyLmMgZmlsZS4KPj4+PiAtIEFkZCBkcm1fU0NEQyBwcmVmaXggZm9y IHRoZSBmdW5jdGlvbnMuCj4+Pj4gLSBPcHRpbWl6ZSB0aGUgcmV0dXJuIHN0YXRlbWVudCBmcm9t IGZ1bmN0aW9uCj4+Pj4gICAgIGRybV9TQ0RDX2NoZWNrX3NjcmFtYmxpbmdfc3RhdHVzLgo+Pj4+ Cj4+Pj4gVmlsbGU6Cj4+Pj4gLSBEb250IG92ZXJ3cml0ZSBzYXZlZCBtYXggVE1EUyBjbG9jayB2 YWx1ZSBpbiBkaXNwbGF5X2luZm8sCj4+Pj4gICAgIGlmIG1heCB0bWRzIGNsb2NrIGZyb20gSEYt VlNEQiBpcyBub3QgPiAzNDAgTUh6Lgo+Pj4+IC0gZHJtX2RldGVjdF9oZG1pX3NjcmFtYmxpbmcg LT4gZHJtX3BhcnNlX2hkbWlfZm9ydW1fdnNkYi4KPj4+PiAtIFJlbW92ZSBkeW5hbWljIHRyYWNr aW5nIG9mIFNDREMgc3RhdHVzIGZyb20gRFJNIGxheWVyLCBmb3JjZSBib29sLgo+Pj4+IC0gUHJv Z3JhbSBjbG9jayByYXRpbyBiaXQgYWxzbywgd2hpbGUgZW5hYmxpbmcgc2NyYW1ibGluZy4KPj4+ Pgo+Pj4+IERoaW5ha2FyYW46Cj4+Pj4gLSBBZGQgYSBjb21tZW50IGFib3V0ICo1MDAwIHdoaWxl IGV4dHJhY3RpbmcgbWF4IGNsb2NrIHN1cHBvcnRlZC4KPj4+Pgo+Pj4+IFYzOiBBZGRyZXNzZWQg cmV2aWV3IGNvbW1lbnRzIGZyb20gSm9zZS4KPj4+PiAtIENyZWF0ZSBzZXBhcmF0ZSBmdW5jdGlv bnMgdG8gZW5hYmxlIHNjcmFtYmxpbmcgYW5kIHRvIHNldCBUTURTCj4+Pj4gICAgIGNsb2NrL2No YXJhY3RlciByYXRlIHJhdGlvLgo+Pj4+Cj4+Pj4gVjQ6IFJlYmFzZQo+Pj4+Cj4+Pj4gU2lnbmVk LW9mZi1ieTogU2hhc2hhbmsgU2hhcm1hIDxzaGFzaGFuay5zaGFybWFAaW50ZWwuY29tPgo+Pj4+ IC0tLQo+Pj4+ICAgIGRyaXZlcnMvZ3B1L2RybS9kcm1fZWRpZC5jICAgICAgICB8ICAzMyArKysr KysrLQo+Pj4+ICAgIGRyaXZlcnMvZ3B1L2RybS9kcm1fc2NkY19oZWxwZXIuYyB8IDE2NCArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+Pj4+ICAgIGluY2x1ZGUvZHJtL2Ry bV9jb25uZWN0b3IuaCAgICAgICB8ICAxOSArKysrKwo+Pj4+ICAgIGluY2x1ZGUvZHJtL2RybV9l ZGlkLmggICAgICAgICAgICB8ICAgNiArLQo+Pj4+ICAgIGluY2x1ZGUvZHJtL2RybV9zY2RjX2hl bHBlci5oICAgICB8ICA0MSArKysrKysrKysrCj4+Pj4gICAgNSBmaWxlcyBjaGFuZ2VkLCAyNjEg aW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKPj4+Pgo+Pj4+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vZHJtX2VkaWQuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZWRpZC5jCj4+Pj4g aW5kZXggNjNiNzliZS4uMWUxOGMwYSAxMDA2NDQKPj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v ZHJtX2VkaWQuYwo+Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZWRpZC5jCj4+Pj4gQEAg LTM3LDYgKzM3LDcgQEAKPj4+PiAgICAjaW5jbHVkZSA8ZHJtL2RybV9lZGlkLmg+Cj4+Pj4gICAg I2luY2x1ZGUgPGRybS9kcm1fZW5jb2Rlci5oPgo+Pj4+ICAgICNpbmNsdWRlIDxkcm0vZHJtX2Rp c3BsYXlpZC5oPgo+Pj4+ICsjaW5jbHVkZSA8ZHJtL2RybV9zY2RjX2hlbHBlci5oPgo+Pj4+ICAg IAo+Pj4+ICAgICNpbmNsdWRlICJkcm1fY3J0Y19pbnRlcm5hbC5oIgo+Pj4+ICAgIAo+Pj4+IEBA IC0zODExLDEzICszODEyLDQzIEBAIGVudW0gaGRtaV9xdWFudGl6YXRpb25fcmFuZ2UKPj4+PiAg ICBzdGF0aWMgdm9pZCBkcm1fcGFyc2VfaGRtaV9mb3J1bV92c2RiKHN0cnVjdCBkcm1fY29ubmVj dG9yICpjb25uZWN0b3IsCj4+Pj4gICAgCQkJCSBjb25zdCB1OCAqaGZfdnNkYikKPj4+PiAgICB7 Cj4+Pj4gLQlzdHJ1Y3QgZHJtX2hkbWlfaW5mbyAqaGRtaSA9ICZjb25uZWN0b3ItPmRpc3BsYXlf aW5mby5oZG1pOwo+Pj4+ICsJc3RydWN0IGRybV9kaXNwbGF5X2luZm8gKmRpc3BsYXkgPSAmY29u bmVjdG9yLT5kaXNwbGF5X2luZm87Cj4+Pj4gKwlzdHJ1Y3QgZHJtX2hkbWlfaW5mbyAqaGRtaSA9 ICZkaXNwbGF5LT5oZG1pOwo+Pj4+ICAgIAo+Pj4+ICAgIAlpZiAoaGZfdnNkYls2XSAmIDB4ODAp IHsKPj4+PiAgICAJCWhkbWktPnNjZGMuc3VwcG9ydGVkID0gdHJ1ZTsKPj4+PiAgICAJCWlmICho Zl92c2RiWzZdICYgMHg0MCkKPj4+PiAgICAJCQloZG1pLT5zY2RjLnJlYWRfcmVxdWVzdCA9IHRy dWU7Cj4+Pj4gICAgCX0KPj4+PiArCj4+Pj4gKwkvKgo+Pj4+ICsJICogQWxsIEhETUkgMi4wIG1v bml0b3JzIG11c3Qgc3VwcG9ydCBzY3JhbWJsaW5nIGF0IHJhdGVzID4gMzQwIE1Iei4KPj4+PiAr CSAqIEFuZCBhcyBwZXIgdGhlIHNwZWMsIHRocmVlIGZhY3RvcnMgY29uZmlybSB0aGlzOgo+Pj4+ ICsJICogKiBBdmFpbGFiaWxpdHkgb2YgYSBIRi1WU0RCIGJsb2NrIGluIEVESUQgKGNoZWNrKQo+ Pj4+ICsJICogKiBOb24gemVybyBNYXhfVE1EU19DaGFyX1JhdGUgZmlsZWQgaW4gSEYtVlNEQiAo bGV0J3MgY2hlY2spCj4+Pj4gKwkgKiAqIFNDREMgc3VwcG9ydCBhdmFpbGFibGUgKGxldCdzIGNo ZWNrKQo+Pj4+ICsJICogTGV0cyBjaGVjayBpdCBvdXQuCj4+Pj4gKwkgKi8KPj4+PiArCj4+Pj4g KwlpZiAoaGZfdnNkYls1XSkgewo+Pj4+ICsJCS8qIG1heCBjbG9jayBpcyA1MDAwIEtIeiB0aW1l cyBibG9jayB2YWx1ZSAqLwo+Pj4+ICsJCXUzMiBtYXhfdG1kc19jbG9jayA9IGhmX3ZzZGJbNV0g KiA1MDAwOwo+Pj4+ICsJCXN0cnVjdCBkcm1fc2NkYyAqc2NkYyA9ICZoZG1pLT5zY2RjOwo+Pj4+ ICsKPj4+PiArCQlpZiAobWF4X3RtZHNfY2xvY2sgPiAzNDAwMDApIHsKPj4+PiArCQkJZGlzcGxh eS0+bWF4X3RtZHNfY2xvY2sgPSBtYXhfdG1kc19jbG9jazsKPj4+PiArCQkJRFJNX0RFQlVHX0tN UygiSEYtVlNEQjogbWF4IFRNRFMgY2xvY2sgJWQga0h6XG4iLAo+Pj4+ICsJCQkJZGlzcGxheS0+ bWF4X3RtZHNfY2xvY2spOwo+Pj4+ICsJCX0KPj4+PiArCj4+Pj4gKwkJaWYgKHNjZGMtPnN1cHBv cnRlZCkgewo+Pj4+ICsJCQlzY2RjLT5zY3JhbWJsaW5nLnN1cHBvcnRlZCA9IHRydWU7Cj4+Pj4g Kwo+Pj4+ICsJCQkvKiBGZXcgc2lua3Mgc3VwcG9ydCBzY3JhbWJsaW5nIGZvciBjbG9rcyA8IDM0 ME0gKi8KPj4+PiArCQkJaWYgKChoZl92c2RiWzZdICYgMHg4KSkKPj4+PiArCQkJCXNjZGMtPnNj cmFtYmxpbmcubG93X3JhdGVzID0gdHJ1ZTsKPj4+PiArCQl9Cj4+Pj4gKwl9Cj4+Pj4gICAgfQo+ Pj4+ICAgIAo+Pj4+ICAgIHN0YXRpYyB2b2lkIGRybV9wYXJzZV9oZG1pX2RlZXBfY29sb3JfaW5m byhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+Pj4+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vZHJtX3NjZGNfaGVscGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3NjZGNf aGVscGVyLmMKPj4+PiBpbmRleCBmZTBlMTIxLi5jMGNmODJiIDEwMDY0NAo+Pj4+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9kcm1fc2NkY19oZWxwZXIuYwo+Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9kcm1fc2NkY19oZWxwZXIuYwo+Pj4+IEBAIC0yMiw4ICsyMiwxMCBAQAo+Pj4+ICAgICAqLwo+ Pj4+ICAgIAo+Pj4+ICAgICNpbmNsdWRlIDxsaW51eC9zbGFiLmg+Cj4+Pj4gKyNpbmNsdWRlIDxs aW51eC9kZWxheS5oPgo+Pj4+ICAgIAo+Pj4+ICAgICNpbmNsdWRlIDxkcm0vZHJtX3NjZGNfaGVs cGVyLmg+Cj4+Pj4gKyNpbmNsdWRlIDxkcm0vZHJtUC5oPgo+Pj4+ICAgIAo+Pj4+ICAgIC8qKgo+ Pj4+ICAgICAqIERPQzogc2NkYyBoZWxwZXJzCj4+Pj4gQEAgLTEwOSwzICsxMTEsMTY1IEBAIHNz aXplX3QgZHJtX3NjZGNfd3JpdGUoc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyLCB1OCBvZmZz ZXQsCj4+Pj4gICAgCXJldHVybiBlcnI7Cj4+Pj4gICAgfQo+Pj4+ICAgIEVYUE9SVF9TWU1CT0wo ZHJtX3NjZGNfd3JpdGUpOwo+Pj4+ICsKPj4+PiArLyoqCj4+Pj4gKyAqIGRybV9zY2RjX2NoZWNr X3NjcmFtYmxpbmdfc3RhdHVzIC0gd2hhdCBpcyBzdGF0dXMgb2Ygc2NyYW1ibGluZz8KPj4+PiAr ICogQGFkYXB0ZXI6IEkyQyBhZGFwdGVyIGZvciBEREMgY2hhbm5lbAo+Pj4+ICsgKgo+Pj4+ICsg KiBSZWFkcyB0aGUgc2NyYW1ibGVyIHN0YXR1cyBvdmVyIFNDREMsIGFuZCBjaGVja3MgdGhlCj4+ Pj4gKyAqIHNjcmFtYmxpbmcgc3RhdHVzLgo+Pj4+ICsgKgo+Pj4+ICsgKiBSZXR1cm5zOgo+Pj4+ ICsgKiBUcnVlIGlmIHRoZSBzY3JhbWJsaW5nIGlzIGVuYWJsZWQsIGZhbHNlIG90aGVyd2lzZS4K Pj4+PiArICovCj4+Pj4gKwo+Pj4+ICtib29sIGRybV9zY2RjX2NoZWNrX3NjcmFtYmxpbmdfc3Rh dHVzKHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlcikKPj4+PiArewo+Pj4+ICsJdTggc3RhdHVz Owo+Pj4+ICsJaW50IHJldDsKPj4+PiArCj4+Pj4gKwlyZXQgPSBkcm1fc2NkY19yZWFkYihhZGFw dGVyLCBTQ0RDX1NDUkFNQkxFUl9TVEFUVVMsICZzdGF0dXMpOwo+Pj4+ICsJaWYgKHJldCA8IDAp IHsKPj4+PiArCQlEUk1fRVJST1IoIkZhaWxlZCB0byByZWFkIHNjcmFtYmxpbmcgc3RhdHVzLCBl cnJvciAlZFxuIiwgcmV0KTsKPj4+PiArCQlyZXR1cm4gZmFsc2U7Cj4+Pj4gKwl9Cj4+Pj4gKwo+ Pj4+ICsJcmV0dXJuIHN0YXR1cyAmIFNDRENfU0NSQU1CTElOR19TVEFUVVM7Cj4+Pj4gK30KPj4+ PiArRVhQT1JUX1NZTUJPTChkcm1fc2NkY19jaGVja19zY3JhbWJsaW5nX3N0YXR1cyk7Cj4+PiBz L2NoZWNrL2dldC8gd291bGQgbWFrZSBtb3JlIHNlbnNlIHRvIG1lLgo+PiBnb3QgaXQuCj4+Pj4g Kwo+Pj4+ICsvKioKPj4+PiArICogZHJtX3NjZGNfZW5hYmxlX3NjcmFtYmxpbmcgLSBlbmFibGUg c2NyYW1ibGluZwo+Pj4+ICsgKiBAYWRhcHRlcjogSTJDIGFkYXB0ZXIgZm9yIEREQyBjaGFubmVs Cj4+Pj4gKyAqCj4+Pj4gKyAqIFdyaXRlcyB0aGUgVE1EUyBjb25maWcgb3ZlciBTQ0RDIGNoYW5u ZWwsIGFuZCBlbmFibGVzIHNjcmFtYmxpbmcKPj4+PiArICogUmV0dXJuczoKPj4+PiArICogVHJ1 ZSBpZiBzY3JhbWJsaW5nIGlzIHN1Y2Nlc3NmdWxseSBlbmFibGVkLCBmYWxzZSBvdGhlcndpc2Uu Cj4+Pj4gKyAqLwo+Pj4+ICsKPj4+PiArYm9vbCBkcm1fc2NkY19lbmFibGVfc2NyYW1ibGluZyhz dHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0ZXIpCj4+Pj4gK3sKPj4+PiArCXU4IGNvbmZpZzsKPj4+ PiArCWludCByZXQ7Cj4+Pj4gKwo+Pj4+ICsJcmV0ID0gZHJtX3NjZGNfcmVhZGIoYWRhcHRlciwg U0NEQ19UTURTX0NPTkZJRywgJmNvbmZpZyk7Cj4+Pj4gKwlpZiAocmV0IDwgMCkgewo+Pj4+ICsJ CURSTV9FUlJPUigiRmFpbGVkIHRvIHJlYWQgdG1kcyBjb25maWcsIGVycj0lZFxuIiwgcmV0KTsK Pj4+PiArCQlyZXR1cm4gZmFsc2U7Cj4+Pj4gKwl9Cj4+Pj4gKwo+Pj4+ICsJY29uZmlnIHw9IFND RENfU0NSQU1CTElOR19FTkFCTEU7Cj4+Pj4gKwo+Pj4+ICsJcmV0ID0gZHJtX3NjZGNfd3JpdGVi KGFkYXB0ZXIsIFNDRENfVE1EU19DT05GSUcsIGNvbmZpZyk7Cj4+Pj4gKwlpZiAocmV0IDwgMCkg ewo+Pj4+ICsJCURSTV9FUlJPUigiRmFpbGVkIHRvIGVuYWJsZSBzY3JhbWJsaW5nLCBlcnJvciAl ZFxuIiwgcmV0KTsKPj4+PiArCQlyZXR1cm4gZmFsc2U7Cj4+Pj4gKwl9Cj4+Pj4gKwo+Pj4+ICsJ cmV0dXJuIHRydWU7Cj4+Pj4gK30KPj4+PiArRVhQT1JUX1NZTUJPTChkcm1fc2NkY19lbmFibGVf c2NyYW1ibGluZyk7Cj4+Pj4gKwo+Pj4+ICsvKioKPj4+PiArICogZHJtX3NjZGNfZGlzYWJsZV9z Y3JhbWJsaW5nIC0gZGlzYWJsZSBzY3JhbWJsaW5nCj4+Pj4gKyAqIEBhZGFwdGVyOiBJMkMgYWRh cHRlciBmb3IgRERDIGNoYW5uZWwKPj4+PiArICoKPj4+PiArICogV3JpdGUgdGhlIFRNRFMgY29u ZmlnIG92ZXIgU0NEQyBjaGFubmVsLCBhbmQgZGlzYWJsZSBzY3JhbWJsaW5nCj4+Pj4gKyAqIFJl dHVybjogVHJ1ZSBpZiBzY3JhbWJsaW5nIGlzIHN1Y2Nlc3NmdWxseSBkaXNhYmxlZCwgZmFsc2Ug b3RoZXJ3aXNlLgo+Pj4+ICsgKi8KPj4+PiArYm9vbCBkcm1fc2NkY19kaXNhYmxlX3NjcmFtYmxp bmcoc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyKQo+Pj4+ICt7Cj4+Pj4gKwl1OCBjb25maWc7 Cj4+Pj4gKwlpbnQgcmV0Owo+Pj4+ICsKPj4+PiArCXJldCA9IGRybV9zY2RjX3JlYWRiKGFkYXB0 ZXIsIFNDRENfVE1EU19DT05GSUcsICZjb25maWcpOwo+Pj4+ICsJaWYgKHJldCA8IDApIHsKPj4+ PiArCQlEUk1fRVJST1IoIkZhaWxlZCB0byByZWFkIHRtZHMgY29uZmlnLCBlcnJvciAlZFxuIiwg cmV0KTsKPj4+PiArCQlyZXR1cm4gZmFsc2U7Cj4+Pj4gKwl9Cj4+Pj4gKwo+Pj4+ICsJY29uZmln ICY9IH5TQ0RDX1NDUkFNQkxJTkdfRU5BQkxFOwo+Pj4+ICsKPj4+PiArCXJldCA9IGRybV9zY2Rj X3dyaXRlYihhZGFwdGVyLCBTQ0RDX1RNRFNfQ09ORklHLCBjb25maWcpOwo+Pj4+ICsJaWYgKHJl dCA8IDApIHsKPj4+PiArCQlEUk1fRVJST1IoIkZhaWxlZCB0byBlbmFibGUgc2NyYW1ibGluZywg ZXJyb3IgJWRcbiIsIHJldCk7Cj4+Pj4gKwkJcmV0dXJuIGZhbHNlOwo+Pj4+ICsJfQo+Pj4+ICsK Pj4+PiArCXJldHVybiB0cnVlOwo+Pj4+ICt9Cj4+Pj4gK0VYUE9SVF9TWU1CT0woZHJtX3NjZGNf ZGlzYWJsZV9zY3JhbWJsaW5nKTsKPj4+PiArCj4+Pj4gKy8qKgo+Pj4+ICsgKiBkcm1fc2NkY19z ZXRfaGlnaF90bWRzX2Nsb2NrX3JhdGlvIC0gc2V0IFRNRFMgY2xvY2sgcmF0aW8KPj4+PiArICog QGFkYXB0ZXI6IEkyQyBhZGFwdGVyIGZvciBEREMgY2hhbm5lbAo+Pj4+ICsgKgo+Pj4+ICsgKiBX cml0ZXMgdGhlIFRNRFMgY29uZmlnIG92ZXIgU0NEQyBjaGFubmVsLCBhbmQgc2V0cyBUTURTCj4+ Pj4gKyAqIGNsb2NrIHJhdGlvIHRvIDEvNDAKPj4+PiArICogUmV0dXJuczoKPj4+PiArICogVHJ1 ZSBpZiB3cml0ZSBpcyBzdWNjZXNzZnVsLCBmYWxzZSBvdGhlcndpc2UuCj4+Pj4gKyAqLwo+Pj4+ ICtib29sIGRybV9zY2RjX3NldF9oaWdoX3RtZHNfY2xvY2tfcmF0aW8oc3RydWN0IGkyY19hZGFw dGVyICphZGFwdGVyKQo+Pj4+ICt7Cj4+Pj4gKwl1OCBjb25maWc7Cj4+Pj4gKwlpbnQgcmV0Owo+ Pj4+ICsKPj4+PiArCXJldCA9IGRybV9zY2RjX3JlYWRiKGFkYXB0ZXIsIFNDRENfVE1EU19DT05G SUcsICZjb25maWcpOwo+Pj4+ICsJaWYgKHJldCA8IDApIHsKPj4+PiArCQlEUk1fRVJST1IoIkZh aWxlZCB0byByZWFkIHRtZHMgY29uZmlnLCBlcnI9JWRcbiIsIHJldCk7Cj4+Pj4gKwkJcmV0dXJu IGZhbHNlOwo+Pj4+ICsJfQo+Pj4+ICsKPj4+PiArCWNvbmZpZyB8PSBTQ0RDX1RNRFNfQklUX0NM T0NLX1JBVElPX0JZXzQwOwo+Pj4+ICsKPj4+PiArCXJldCA9IGRybV9zY2RjX3dyaXRlYihhZGFw dGVyLCBTQ0RDX1RNRFNfQ09ORklHLCBjb25maWcpOwo+Pj4+ICsJaWYgKHJldCA8IDApIHsKPj4+ PiArCQlEUk1fRVJST1IoIkZhaWxlZCB0byBzZXQgVE1EUyBjbG9jayByYXRpbywgZXJyb3IgJWRc biIsIHJldCk7Cj4+Pj4gKwkJcmV0dXJuIGZhbHNlOwo+Pj4+ICsJfQo+Pj4+ICsKPj4+PiArCS8q Cj4+Pj4gKwkgKiBUaGUgc3BlYyBzYXlzIHRoYXQgdGhlIHNvdXJjZSBzaG91bGQgd2FpdCBtaW5p bXVtIDFtcyBhbmQgbWF4aW11bQo+Pj4+ICsJICogMTAwbXMgYWZ0ZXIgd3JpdGluZyB0aGUgVE1E UyBjb25maWcgZm9yIGNsb2NrIHJhdGlvLgo+Pj4+ICsJICovCj4+Pj4gKwl1c2xlZXBfcmFuZ2Uo MTAwMCwgMTAwMDAwKTsKPj4+IEFsbG93aW5nIHRoZSBtYXggdG8gYmUgMTAwbXMgaGVyZSBzZWVt cyBvdmVybHkgZ2VuZXJvdXMgdG8gbWUuIEluIGJ5Cj4+PiBhbGxvd2luZyAxMDBtcyB3ZSBtaWdo dCBiZSB2aW9sYXRpbmcgdGhlIHNwZWMgc2luY2UgaXQgd2lsbCB0YWtlIGEgYml0Cj4+PiBvZiBh ZGRpdG9uYWwgdGltZSBiZWZvcmUgdGhlIGRyaXZlciB3aWxsIGVuYWJsZSB0aGUgb3V0cHV0LiBT byBJJ2QganVzdAo+Pj4gdXNlIHNvbWV0aGluZyBsaWtlIDEtMiBtc2VjLgo+PiBNYWtlcyBzZW5z ZSwgYnV0IHdvdWxkbid0IDEtMiBtcyBiZSB0b28gc21hbGwgPwo+PiBEbyB5b3UgdGhpbmsgd2Ug c2hvdWxkIGFsbG93IGF0IGxlYXN0IDEwbXMgPwo+IEkgZG9uJ3QgdGhpbmsgdGhlcmUncyBtdWNo IG1lcml0IGluIGdvaW5nIHRoYXQgaGlnaC4gV2UgZG8gc3RpbGwgd2FudCB0bwo+IGtlZXAgdGhl IG1vZGVzZXQgYXMgc2hvcnQgYXMgcG9zc2libGUsIHNvIGV4cGxpY2l0bHkgc2F5aW5nIHRoYXQg d2UgYXJlCj4gaGFwcHkgdG8gZGVsYXkgZm9yIHVwIHRvIDEwbXMgZG9lc24ndCBzZWVtIGxpa2Ug dGhlIGJlc3QgaWRlYSB0byBtZS4KR290IGl0LCAyIG1zIGl0IGlzLgotIFNoYXNoYW5rCj4+Pj4g KwlyZXR1cm4gdHJ1ZTsKPj4+PiArfQo+Pj4+ICtFWFBPUlRfU1lNQk9MKGRybV9zY2RjX3NldF9o aWdoX3RtZHNfY2xvY2tfcmF0aW8pOwo+Pj4+ICsKPj4+PiArLyoqCj4+Pj4gKyAqIGRybV9zY2Rj X2NsZWFyX2hpZ2hfdG1kc19jbG9ja19yYXRpbyAtIGNsZWFyIFRNRFMgY2xvY2sgcmF0aW8KPj4+ PiArICogQGFkYXB0ZXI6IEkyQyBhZGFwdGVyIGZvciBEREMgY2hhbm5lbAo+Pj4+ICsgKgo+Pj4+ ICsgKiBXcml0ZXMgdGhlIFRNRFMgY29uZmlnIG92ZXIgU0NEQyBjaGFubmVsLCBhbmQgc2V0cyBU TURTCj4+Pj4gKyAqIGNsb2NrIHJhdGlvIGJhY2sgdG8gMS8xMCAoZnJvbSAxLzQwKQo+Pj4+ICsg KiBSZXR1cm5zOgo+Pj4+ICsgKiBUcnVlIGlmIHdyaXRlIGlzIHN1Y2Nlc3NmdWwsIGZhbHNlIG90 aGVyd2lzZS4KPj4+PiArICovCj4+Pj4gK2Jvb2wgZHJtX3NjZGNfY2xlYXJfaGlnaF90bWRzX2Ns b2NrX3JhdGlvKHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlcikKPj4+PiArewo+Pj4+ICsJdTgg Y29uZmlnOwo+Pj4+ICsJaW50IHJldDsKPj4+PiArCj4+Pj4gKwlyZXQgPSBkcm1fc2NkY19yZWFk YihhZGFwdGVyLCBTQ0RDX1RNRFNfQ09ORklHLCAmY29uZmlnKTsKPj4+PiArCWlmIChyZXQgPCAw KSB7Cj4+Pj4gKwkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gcmVhZCB0bWRzIGNvbmZpZywgZXJyPSVk XG4iLCByZXQpOwo+Pj4+ICsJCXJldHVybiBmYWxzZTsKPj4+PiArCX0KPj4+PiArCj4+Pj4gKwlj b25maWcgJj0gflNDRENfVE1EU19CSVRfQ0xPQ0tfUkFUSU9fQllfNDA7Cj4+Pj4gKwo+Pj4+ICsJ cmV0ID0gZHJtX3NjZGNfd3JpdGViKGFkYXB0ZXIsIFNDRENfVE1EU19DT05GSUcsIGNvbmZpZyk7 Cj4+Pj4gKwlpZiAocmV0IDwgMCkgewo+Pj4+ICsJCURSTV9FUlJPUigiRmFpbGVkIHRvIGNsZWFy IFRNRFMgY2xvY2sgcmF0aW8sIGVycm9yICVkXG4iLCByZXQpOwo+Pj4+ICsJCXJldHVybiBmYWxz ZTsKPj4+PiArCX0KPj4+PiArCj4+Pj4gKwkvKgo+Pj4+ICsJICogVGhlIHNwZWMgc2F5cyB0aGF0 IHRoZSBzb3VyY2Ugc2hvdWxkIHdhaXQgbWluaW11bSAxbXMgYW5kIG1heGltdW0KPj4+PiArCSAq IDEwMG1zIGFmdGVyIHdyaXRpbmcgdGhlIFRNRFMgY29uZmlnIGZvciBjbG9jayByYXRpby4KPj4+ PiArCSAqLwo+Pj4+ICsJdXNsZWVwX3JhbmdlKDEwMDAsIDEwMDAwMCk7Cj4+Pj4gKwlyZXR1cm4g dHJ1ZTsKPj4+PiArfQo+Pj4+ICtFWFBPUlRfU1lNQk9MKGRybV9zY2RjX2NsZWFyX2hpZ2hfdG1k c19jbG9ja19yYXRpbyk7Cj4+PiBIYXZpbmcgc2VwYXJhdGUgc2V0L2NsZWFyIGZ1bmN0aW9ucyBq dXN0IGxlYWRzIHRvIGR1cGxpY2F0ZWQgY29kZSBJTU8uCj4+PiBJJ2QganVzdCBwYXNzIHRoZSBk ZXNpcmVkIHN0YXRlIGFzIGEgcGFyYW1ldGVyLgo+PiBPaywgSSB3aWxsIG1ha2UgYSBjb21tb24g ZnVuY3Rpb24gZm9yIGJvdGggc2V0L2NsZWFyLCBhbmQgcGFzcyB0aGUKPj4gZW5hYmxlL2Rpc2Fi bGUgc3RhdGUKPj4gdG8gaXQgKHNpbWlsYXIgdG8gdGhhdCB3aGljaCBoYW5kbGVzIG1vbml0b3Ig c2NyYW1ibGluZykKPj4+IEFuZCB3aGF0IEkgc3VnZ2VzdGVkIGVhcmxpZXIgd2FzIHRvIGV2ZW4g Y29tYmluZSB0aGlzIHdpdGggdGhlIHNjcmFtYmxpbmcKPj4+IHdyaXRlIHdoaWNoIHdvdWxkIHJl ZHVjZSB0aGUgaTJjIHRyYWZmaWMgZnJvbSAyIHJlYWQgYW5kIDIgd3JpdGVzIHRvCj4+PiBqdXN0 IDEgd3JpdGUuIEJ1dCBJIGNhbiBsaXZlIHdpdGggdGhlbSBiZWluZyBzZXBhcmF0ZSBhcyB3ZWxs Lgo+PiBUaGFua3MuIEFjdHVhbGx5LCBpZiB5b3Ugc2VlIFYyLCB0aGlzIGZpcnN0IGltcGxlbWVu dGF0aW9uIHdhcyBqdXN0IGFzCj4+IHlvdSBzdWdnZXN0ZWQuCj4+IEJ1dCB0aGVyZSB3YXMgYSBw cm9ibGVtIGhlcmUsIGZldyBtb25pdG9ycyBzdXBwb3J0IHNjcmFtYmxpbmcgYXQgYSBjbG9jawo+ PiBsb3dlciB0aGFuCj4+IDM0ME1oeiB0b28sIGluIHRoZXNlIGNhc2VzIHdlIHdvbnQgc2V0IHRo ZSBoaWdoX3RtZHNfY2xvY2tfcmF0aW8gYnV0Cj4+IG9ubHkgc2V0IHRoZSBzY3JhbWJsaW5nLgo+ IFRoZW4gdGhlIGNhbGxlciBqdXN0IHBhc3NlcyBjbG9ja19yYXRpbz1sb3cgYW5kIHNjcmFtYmxp bmc9dHJ1ZS4gSSBkb24ndAo+IHNlZSB0aGUgcHJvYmxlbS4KPgo+PiBUaGlzIHdhcyBjb21tZW50 IGZyb20gSm9zZSwgd2hpY2ggd2UgYWRkcmVzc2VkIGludG8gc3BsaXR0aW5nIHRoaXMgaW50bwo+ PiB0d28gZnVuY3Rpb25zLCB3aGljaCBnaXZlcwo+PiBtb3JlIGNvbnRyb2wgdG8gY2FsbGVyIGZ1 bmN0aW9uLCBieSBzZWxlY3Rpbmcgd2hhdCB0aGV5IHdhbnQgdG8gc2V0LiBidXQKPj4geWVhaCwg Y2FudCBiZWF0IHRoZSBJMkMgdHJhZmZpYyBvcHRpbWl6YXRpb24uCj4+Cj4+IC0gU2hhc2hhbmsK Pj4+PiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2Nvbm5lY3Rvci5oIGIvaW5jbHVkZS9k cm0vZHJtX2Nvbm5lY3Rvci5oCj4+Pj4gaW5kZXggNmQ1MzA0ZS4uNzg2MTgzMDggMTAwNjQ0Cj4+ Pj4gLS0tIGEvaW5jbHVkZS9kcm0vZHJtX2Nvbm5lY3Rvci5oCj4+Pj4gKysrIGIvaW5jbHVkZS9k cm0vZHJtX2Nvbm5lY3Rvci5oCj4+Pj4gQEAgLTkwLDYgKzkwLDIwIEBAIGVudW0gc3VicGl4ZWxf b3JkZXIgewo+Pj4+ICAgIAo+Pj4+ICAgIH07Cj4+Pj4gICAgCj4+Pj4gKy8qKgo+Pj4+ICsgKiBz dHJ1Y3QgZHJtX3NjcmFtYmxpbmc6IHNpbmsncyBzY3JhbWJsaW5nIHN1cHBvcnQuCj4+Pj4gKyAq Lwo+Pj4+ICtzdHJ1Y3QgZHJtX3NjcmFtYmxpbmcgewo+Pj4+ICsJLyoqCj4+Pj4gKwkgKiBAc3Vw cG9ydGVkOiBzY3JhbWJsaW5nIHN1cHBvcnRlZCBmb3IgcmF0ZXMgPiAzNDAgTWh6Lgo+Pj4+ICsJ ICovCj4+Pj4gKwlib29sIHN1cHBvcnRlZDsKPj4+PiArCS8qKgo+Pj4+ICsJICogQGxvd19yYXRl czogc2NyYW1ibGluZyBzdXBwb3J0ZWQgZm9yIHJhdGVzIDw9IDM0MCBNaHouCj4+Pj4gKwkgKi8K Pj4+PiArCWJvb2wgbG93X3JhdGVzOwo+Pj4+ICt9Owo+Pj4+ICsKPj4+PiAgICAvKgo+Pj4+ICAg ICAqIHN0cnVjdCBkcm1fc2NkYyAtIEluZm9ybWF0aW9uIGFib3V0IHNjZGMgY2FwYWJpbGl0aWVz IG9mIGEgSERNSSAyLjAgc2luawo+Pj4+ICAgICAqCj4+Pj4gQEAgLTEwNSw4ICsxMTksMTMgQEAg c3RydWN0IGRybV9zY2RjIHsKPj4+PiAgICAJICogQHJlYWRfcmVxdWVzdDogc2luayBpcyBjYXBh YmxlIG9mIGdlbmVyYXRpbmcgc2NkYyByZWFkIHJlcXVlc3QuCj4+Pj4gICAgCSAqLwo+Pj4+ICAg IAlib29sIHJlYWRfcmVxdWVzdDsKPj4+PiArCS8qKgo+Pj4+ICsJICogQHNjcmFtYmxpbmc6IHNp bmsncyBzY3JhbWJsaW5nIGNhcGFiaWxpdGllcwo+Pj4+ICsJICovCj4+Pj4gKwlzdHJ1Y3QgZHJt X3NjcmFtYmxpbmcgc2NyYW1ibGluZzsKPj4+PiAgICB9Owo+Pj4+ICAgIAo+Pj4+ICsKPj4+PiAg ICAvKioKPj4+PiAgICAgKiBzdHJ1Y3QgZHJtX2hkbWlfaW5mbyAtIHJ1bnRpbWUgaW5mb3JtYXRp b24gYWJvdXQgdGhlIGNvbm5lY3RlZCBIRE1JIHNpbmsKPj4+PiAgICAgKgo+Pj4+IGRpZmYgLS1n aXQgYS9pbmNsdWRlL2RybS9kcm1fZWRpZC5oIGIvaW5jbHVkZS9kcm0vZHJtX2VkaWQuaAo+Pj4+ IGluZGV4IDQzZmIwYWMuLmQyNGM5NzQgMTAwNjQ0Cj4+Pj4gLS0tIGEvaW5jbHVkZS9kcm0vZHJt X2VkaWQuaAo+Pj4+ICsrKyBiL2luY2x1ZGUvZHJtL2RybV9lZGlkLmgKPj4+PiBAQCAtNDYyLDUg KzQ2Miw5IEBAIHZvaWQgZHJtX2VkaWRfZ2V0X21vbml0b3JfbmFtZShzdHJ1Y3QgZWRpZCAqZWRp ZCwgY2hhciAqbmFtZSwKPj4+PiAgICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqZHJtX21vZGVf ZmluZF9kbXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPj4+PiAgICAJCQkJCSAgIGludCBoc2l6 ZSwgaW50IHZzaXplLCBpbnQgZnJlc2gsCj4+Pj4gICAgCQkJCQkgICBib29sIHJiKTsKPj4+PiAt Cj4+Pj4gK2Jvb2wgZHJtX2VuYWJsZV9zY3JhbWJsaW5nKHN0cnVjdCBkcm1fY29ubmVjdG9yICpj b25uZWN0b3IsCj4+Pj4gKwkJCQlzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0ZXIsIGJvb2wgZm9y Y2UpOwo+Pj4+ICtib29sIGRybV9kaXNhYmxlX3NjcmFtYmxpbmcoc3RydWN0IGRybV9jb25uZWN0 b3IgKmNvbm5lY3RvciwKPj4+PiArCQkJCXN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlciwgYm9v bCBmb3JjZSk7Cj4+Pj4gK2Jvb2wgZHJtX2NoZWNrX3NjcmFtYmxpbmdfc3RhdHVzKHN0cnVjdCBp MmNfYWRhcHRlciAqYWRhcHRlcik7Cj4+Pj4gICAgI2VuZGlmIC8qIF9fRFJNX0VESURfSF9fICov Cj4+Pj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9zY2RjX2hlbHBlci5oIGIvaW5jbHVk ZS9kcm0vZHJtX3NjZGNfaGVscGVyLmgKPj4+PiBpbmRleCA5M2IwN2JjLi5jNWYyMjI5IDEwMDY0 NAo+Pj4+IC0tLSBhL2luY2x1ZGUvZHJtL2RybV9zY2RjX2hlbHBlci5oCj4+Pj4gKysrIGIvaW5j bHVkZS9kcm0vZHJtX3NjZGNfaGVscGVyLmgKPj4+PiBAQCAtMTI5LDQgKzEyOSw0NSBAQCBzdGF0 aWMgaW5saW5lIGludCBkcm1fc2NkY193cml0ZWIoc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVy LCB1OCBvZmZzZXQsCj4+Pj4gICAgCXJldHVybiBkcm1fc2NkY193cml0ZShhZGFwdGVyLCBvZmZz ZXQsICZ2YWx1ZSwgc2l6ZW9mKHZhbHVlKSk7Cj4+Pj4gICAgfQo+Pj4+ICAgIAo+Pj4+ICsvKioK Pj4+PiArICogZHJtX3NjZGNfZW5hYmxlX3NjcmFtYmxpbmcgLSBlbmFibGUgc2NyYW1ibGluZwo+ Pj4+ICsgKiBAYWRhcHRlcjogSTJDIGFkYXB0ZXIgZm9yIEREQyBjaGFubmVsCj4+Pj4gKyAqCj4+ Pj4gKyAqIFdyaXRlcyB0aGUgVE1EUyBjb25maWcgb3ZlciBTQ0RDIGNoYW5uZWwsIGFuZCBlbmFi bGVzIHNjcmFtYmxpbmcKPj4+PiArICogUmV0dXJuczoKPj4+PiArICogVHJ1ZSBpZiBzY3JhbWJs aW5nIGlzIHN1Y2Nlc3NmdWxseSBlbmFibGVkLCBmYWxzZSBvdGhlcndpc2UuCj4+Pj4gKyAqLwo+ Pj4+ICsKPj4+PiArYm9vbCBkcm1fc2NkY19lbmFibGVfc2NyYW1ibGluZyhzdHJ1Y3QgaTJjX2Fk YXB0ZXIgKmFkYXB0ZXIpOwo+Pj4+ICsKPj4+PiArLyoqCj4+Pj4gKyAqIGRybV9zY2RjX2Rpc2Fi bGVfc2NyYW1ibGluZyAtIGRpc2FibGUgc2NyYW1ibGluZwo+Pj4+ICsgKiBAYWRhcHRlcjogSTJD IGFkYXB0ZXIgZm9yIEREQyBjaGFubmVsCj4+Pj4gKyAqCj4+Pj4gKyAqIFdyaXRlIHRoZSBUTURT IGNvbmZpZyBvdmVyIFNDREMgY2hhbm5lbCwgYW5kIGRpc2FibGUgc2NyYW1ibGluZwo+Pj4+ICsg KiBSZXR1cm46IFRydWUgaWYgc2NyYW1ibGluZyBpcyBzdWNjZXNzZnVsbHkgZGlzYWJsZWQsIGZh bHNlIG90aGVyd2lzZS4KPj4+PiArICovCj4+Pj4gK2Jvb2wgZHJtX3NjZGNfZGlzYWJsZV9zY3Jh bWJsaW5nKHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlcik7Cj4+Pj4gKwo+Pj4+ICsvKioKPj4+ PiArICogZHJtX3NjZGNfc2V0X2hpZ2hfdG1kc19jbG9ja19yYXRpbyAtIHNldCBUTURTIGNsb2Nr IHJhdGlvCj4+Pj4gKyAqIEBhZGFwdGVyOiBJMkMgYWRhcHRlciBmb3IgRERDIGNoYW5uZWwKPj4+ PiArICoKPj4+PiArICogV3JpdGVzIHRoZSBUTURTIGNvbmZpZyBvdmVyIFNDREMgY2hhbm5lbCwg YW5kIHNldHMgVE1EUwo+Pj4+ICsgKiBjbG9jayByYXRpbyB0byAxLzQwCj4+Pj4gKyAqIFJldHVy bnM6Cj4+Pj4gKyAqIFRydWUgaWYgd3JpdGUgaXMgc3VjY2Vzc2Z1bCwgZmFsc2Ugb3RoZXJ3aXNl Lgo+Pj4+ICsgKi8KPj4+PiArYm9vbCBkcm1fc2NkY19zZXRfaGlnaF90bWRzX2Nsb2NrX3JhdGlv KHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlcik7Cj4+Pj4gKwo+Pj4+ICsvKioKPj4+PiArICog ZHJtX3NjZGNfY2xlYXJfaGlnaF90bWRzX2Nsb2NrX3JhdGlvIC0gY2xlYXIgVE1EUyBjbG9jayBy YXRpbwo+Pj4+ICsgKiBAYWRhcHRlcjogSTJDIGFkYXB0ZXIgZm9yIEREQyBjaGFubmVsCj4+Pj4g KyAqCj4+Pj4gKyAqIFdyaXRlcyB0aGUgVE1EUyBjb25maWcgb3ZlciBTQ0RDIGNoYW5uZWwsIGFu ZCBzZXRzIFRNRFMKPj4+PiArICogY2xvY2sgcmF0aW8gYmFjayB0byAxLzEwIChmcm9tIDEvNDAp Cj4+Pj4gKyAqIFJldHVybnM6Cj4+Pj4gKyAqIFRydWUgaWYgd3JpdGUgaXMgc3VjY2Vzc2Z1bCwg ZmFsc2Ugb3RoZXJ3aXNlLgo+Pj4+ICsgKi8KPj4+PiArYm9vbCBkcm1fc2NkY19jbGVhcl9oaWdo X3RtZHNfY2xvY2tfcmF0aW8oc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyKTsKPj4+PiAgICAj ZW5kaWYKPj4+PiAtLSAKPj4+PiAxLjkuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vZHJpLWRldmVsCg==