From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ander Conselvan De Oliveira Subject: Re: [PATCH v4 5/6] drm/i915: enable scrambling Date: Thu, 23 Feb 2017 15:07:40 +0200 Message-ID: <1487855260.3385.6.camel@gmail.com> References: <1487769511-17359-1-git-send-email-shashank.sharma@intel.com> <1487769511-17359-6-git-send-email-shashank.sharma@intel.com> <20170222172954.GM31595@intel.com> <548317e5-2fab-9832-142f-581be31aac39@intel.com> <1487836997.2361.2.camel@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: 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: "Sharma, Shashank" , Ville =?ISO-8859-1?Q?Syrj=E4l=E4?= Cc: jose.abreu@synopsys.com, daniel.vetter@intel.com, intel-gfx@lists.freedesktop.org, treding@nvidia.com, dri-devel@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCAyMDE3LTAyLTIzIGF0IDE2OjMzICswNTMwLCBTaGFybWEsIFNoYXNoYW5rIHdyb3Rl Ogo+IFRoYW5rcyBmb3IgdGhlIHJldmlldyBBbmRlciwgbXkgY29tbWVudHMsIGlubGluZS4KPiAK PiAKPiBSZWdhcmRzCj4gCj4gU2hhc2hhbmsKPiAKPiAKPiBPbiAyLzIzLzIwMTcgMTozMyBQTSwg QW5kZXIgQ29uc2VsdmFuIERlIE9saXZlaXJhIHdyb3RlOgo+ID4gT24gVGh1LCAyMDE3LTAyLTIz IGF0IDEwOjAxICswNTMwLCBTaGFybWEsIFNoYXNoYW5rIHdyb3RlOgo+ID4gPiBSZWdhcmRzCj4g PiA+IAo+ID4gPiBTaGFzaGFuawo+ID4gPiAKPiA+ID4gCj4gPiA+IE9uIDIvMjIvMjAxNyAxMDo1 OSBQTSwgVmlsbGUgU3lyasOkbMOkIHdyb3RlOgo+ID4gPiA+IE9uIFdlZCwgRmViIDIyLCAyMDE3 IGF0IDA2OjQ4OjMwUE0gKzA1MzAsIFNoYXNoYW5rIFNoYXJtYSB3cm90ZToKPiA+ID4gPiA+IEdl bWluaWxha2UgcGxhdGZvcm0gc3BvcnRzIGEgbmF0aXZlIEhETUkgMi4wIGNvbnRyb2xsZXIsIGFu ZCBpcwo+ID4gPiA+ID4gY2FwYWJsZSBvZiBkcml2aW5nIHBpeGVsLWNsb2NrcyB1cHRvIDU5NE1o ei4gSERNSSAyLjAgc3BlYwo+ID4gPiA+ID4gbWVuZGF0ZXMgc2NyYW1ibGluZyBmb3IgdGhlc2Ug aGlnaGVyIGNsb2NrcywgZm9yIHJlZHVjZWQgUkYgZm9vdHByaW50Lgo+ID4gPiA+ID4gCj4gPiA+ ID4gPiBUaGlzIHBhdGNoIGNoZWNrcyBpZiB0aGUgbW9uaXRvciBzdXBwb3J0cyBzY3JhbWJsaW5n LCBhbmQgaWYgcmVxdWlyZWQsCj4gPiA+ID4gPiBlbmFibGVzIGl0IGR1cmluZyB0aGUgbW9kZXNl dC4KPiA+ID4gPiA+IAo+ID4gPiA+ID4gVjI6IEFkZHJlc3NlZCByZXZpZXcgY29tbWVudHMgZnJv bSBWaWxsZToKPiA+ID4gPiA+IC0gRG8gbm90IHRyYWNrIHNjcmFtYmxpbmcgc3RhdHVzIGluIERS TSBsYXllciwgdHJhY2sgc29tZXdoZXJlIGluCj4gPiA+ID4gPiAgICAgZHJpdmVyIGxpa2UgaW4g aW50ZWxfY3J0Y19zdGF0ZS4KPiA+ID4gPiA+IC0gRG9uJ3QgdGFsayB0byBtb25pdG9yIGF0IHN1 Y2ggYSBsb3cgbGF5ZXIsIHNldCBtb25pdG9yIHNjcmFtYmxpbmcKPiA+ID4gPiA+ICAgICBpbiBp bnRlbF9lbmFibGVfZGRpKCkgYmVmb3JlIGVuYWJsaW5nIHRoZSBwb3J0Lgo+ID4gPiA+ID4gCj4g PiA+ID4gPiBWMzogQWRkcmVzc2VkIHJldmlldyBjb21tZW50cyBmcm9tIEphbmkKPiA+ID4gPiA+ IC0gSW4gY29tbWVudHMsIGZ1bmN0aW9uIG5hbWVzLCB1c2UgInNpbmsiIGluc3RlYWQgb2YgIm1v bml0b3IiLAo+ID4gPiA+ID4gICAgIHNvIHRoYXQgdGhlIGltcGxlbWVudGF0aW9uIGNvdWxkIGJl IGNsb3NlIHRvIHRoZSBsYW5ndWFnZSBvZgo+ID4gPiA+ID4gICAgIEhETUkgc3BlYy4KPiA+ID4g PiA+IAo+ID4gPiA+ID4gVjQ6IEFkZHJlc3NlZCByZXZpZXcgY29tbWVudCBmcm9tIE1hYXJ0ZW4K PiA+ID4gPiA+IC0gc2NyYW1ibGluZyAtPiBoZG1pX3NjcmFtYmxpbmcKPiA+ID4gPiA+ICAgICBo aWdoX3RtZHNfY2xvY2tfcmF0aW8gLT4gaGRtaV9oaWdoX3RtZHNfY2xvY2tfcmF0aW8KPiA+ID4g PiA+IAo+ID4gPiA+ID4gU2lnbmVkLW9mZi1ieTogU2hhc2hhbmsgU2hhcm1hIDxzaGFzaGFuay5z aGFybWFAaW50ZWwuY29tPgo+ID4gPiA+ID4gLS0tCj4gPiA+ID4gPiAgICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X3JlZy5oICAgfCAgIDQgKysKPiA+ID4gPiA+ICAgIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2RkaS5jICB8ICAyOCArKysrKysrKysrCj4gPiA+ID4gPiAgICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAgfCAgMTQgKysrKysKPiA+ID4gPiA+ICAgIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkbWkuYyB8IDEwOCArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKwo+ID4gPiA+ID4gICAgNCBmaWxlcyBjaGFuZ2VkLCAxNTQgaW5zZXJ0 aW9ucygrKQo+ID4gPiA+ID4gCj4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9yZWcuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiA+ID4g PiA+IGluZGV4IDE0MWE1YzEuLjgxY2YxMGIgMTAwNjQ0Cj4gPiA+ID4gPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gPiA+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3JlZy5oCj4gPiA+ID4gPiBAQCAtNzgxOSw3ICs3ODE5LDExIEBAIGVudW0gewo+ ID4gPiA+ID4gICAgI2RlZmluZSAgVFJBTlNfRERJX0VEUF9JTlBVVF9CX09OT0ZGCSg1PDwxMikK PiA+ID4gPiA+ICAgICNkZWZpbmUgIFRSQU5TX0RESV9FRFBfSU5QVVRfQ19PTk9GRgkoNjw8MTIp Cj4gPiA+ID4gPiAgICAjZGVmaW5lICBUUkFOU19ERElfRFBfVkNfUEFZTE9BRF9BTExPQwkoMTw8 OCkKPiA+ID4gPiA+ICsjZGVmaW5lICBUUkFOU19ERElfSERNSV9TQ1JBTUJMRVJfQ1RTX0VOQUJM RSAoMTw8NykKPiA+ID4gPiA+ICsjZGVmaW5lICBUUkFOU19ERElfSERNSV9TQ1JBTUJMRVJfUkVT RVRfRlJFUSAoMTw8NikKPiA+ID4gPiA+ICAgICNkZWZpbmUgIFRSQU5TX0RESV9CRklfRU5BQkxF CQkoMTw8NCkKPiA+ID4gPiA+ICsjZGVmaW5lICBUUkFOU19ERElfSElHSF9UTURTX0NIQVJfUkFU RQkoMTw8NCkKPiA+ID4gPiA+ICsjZGVmaW5lICBUUkFOU19ERElfSERNSV9TQ1JBTUJMSU5HCSgx PDwwKQo+ID4gPiA+ID4gICAgCj4gPiA+ID4gPiAgICAvKiBEaXNwbGF5UG9ydCBUcmFuc3BvcnQg Q29udHJvbCAqLwo+ID4gPiA+ID4gICAgI2RlZmluZSBfRFBfVFBfQ1RMX0EJCQkweDY0MDQwCj4g PiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYwo+ID4gPiA+ID4gaW5kZXggY2Q2ZmVkZC4u YmQ4MjkzZCAxMDA2NDQKPiA+ID4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2RkaS5jCj4gPiA+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYwo+ ID4gPiA+ID4gQEAgLTEyNzgsNiArMTI3OCwxMSBAQCB2b2lkIGludGVsX2RkaV9lbmFibGVfdHJh bnNjb2Rlcl9mdW5jKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiA+ID4gPiA+ICAgIAkJCXRlbXAg fD0gVFJBTlNfRERJX01PREVfU0VMRUNUX0hETUk7Cj4gPiA+ID4gPiAgICAJCWVsc2UKPiA+ID4g PiA+ICAgIAkJCXRlbXAgfD0gVFJBTlNfRERJX01PREVfU0VMRUNUX0RWSTsKPiA+ID4gPiA+ICsK PiA+ID4gPiA+ICsJCWlmIChJU19HRU1JTklMQUtFKGRldl9wcml2KSkKPiA+ID4gPiA+ICsJCQl0 ZW1wID0gaW50ZWxfaGRtaV9oYW5kbGVfc291cmNlX3NjcmFtYmxpbmcoCj4gPiA+ID4gPiArCQkJ CWludGVsX2VuY29kZXIsCj4gPiA+ID4gPiArCQkJCSZpbnRlbF9jcnRjLT5jb25maWctPmJhc2Uu YWRqdXN0ZWRfbW9kZSwgdGVtcCk7Cj4gPiA+ID4gPiAgICAJfSBlbHNlIGlmICh0eXBlID09IElO VEVMX09VVFBVVF9BTkFMT0cpIHsKPiA+ID4gPiA+ICAgIAkJdGVtcCB8PSBUUkFOU19ERElfTU9E RV9TRUxFQ1RfRkRJOwo+ID4gPiA+ID4gICAgCQl0ZW1wIHw9IChpbnRlbF9jcnRjLT5jb25maWct PmZkaV9sYW5lcyAtIDEpIDw8IDE7Cj4gPiA+ID4gPiBAQCAtMTg0Myw2ICsxODQ4LDIxIEBAIHN0 YXRpYyB2b2lkIGludGVsX2VuYWJsZV9kZGkoc3RydWN0IGludGVsX2VuY29kZXIgKmludGVsX2Vu Y29kZXIsCj4gPiA+ID4gPiAgICAJCXN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2Rp Z19wb3J0ID0KPiA+ID4gPiA+ICAgIAkJCWVuY190b19kaWdfcG9ydChlbmNvZGVyKTsKPiA+ID4g PiA+ICAgIAo+ID4gPiA+ID4gKwkJaWYgKElTX0dFTUlOSUxBS0UoZGV2X3ByaXYpKSB7Cj4gPiA+ ID4gPiArCQkJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGVuY29kZXIt PmNydGMpOwo+ID4gPiA+ID4gKwkJCS8qCj4gPiA+ID4gPiArCQkJICogR0xLIHNwb3J0cyBhIG5h dGl2ZSBIRE1JIDIuMCBjb250cm9sbGVyLiBJZiByZXF1aXJlZAo+ID4gPiA+ID4gKwkJCSAqIGNs b2NrIHJhdGUgaXMgPiAzNDAgTWh6ICYmIHNjcmFtYmxpbmcgaXMgc3VwcG9ydGVkCj4gPiA+ID4g PiArCQkJICogYnkgc2luaywgZW5hYmxlIHNjcmFtYmxpbmcgYmVmb3JlIGVuYWJsaW5nIHRoZQo+ ID4gPiA+ID4gKwkJCSAqIEhETUkgMi4wIHBvcnQuIFRoZSBzaW5rIGNhbiBjaG9vc2UgdG8gZGlz YWJsZSB0aGUKPiA+ID4gPiA+ICsJCQkgKiBzY3JhbWJsaW5nIGlmIGl0IGRvZXNuJ3QgZGV0ZWN0 IGEgc2NyYW1ibGVkIHdpdGhpbgo+ID4gPiA+ID4gKwkJCSAqIDEwMCBtcy4KPiA+ID4gPiA+ICsJ CQkgKi8KPiA+ID4gPiA+ICsJCQlpbnRlbF9oZG1pX2hhbmRsZV9zaW5rX3NjcmFtYmxpbmcoaW50 ZWxfZW5jb2RlciwKPiA+ID4gPiA+ICsJCQkJCQljb25uX3N0YXRlLT5jb25uZWN0b3IsCj4gPiA+ ID4gPiArCQkJCQkJY3J0Yy0+Y29uZmlnLCB0cnVlKTsKPiA+ID4gPiA+ICsJCX0KPiA+ID4gPiA+ ICsKPiA+ID4gPiA+ICAgIAkJLyogSW4gSERNSS9EVkkgbW9kZSwgdGhlIHBvcnQgd2lkdGgsIGFu ZCBzd2luZy9lbXBoYXNpcyB2YWx1ZXMKPiA+ID4gPiA+ICAgIAkJICogYXJlIGlnbm9yZWQgc28g bm90aGluZyBzcGVjaWFsIG5lZWRzIHRvIGJlIGRvbmUgYmVzaWRlcwo+ID4gPiA+ID4gICAgCQkg KiBlbmFibGluZyB0aGUgcG9ydC4KPiA+ID4gPiA+IEBAIC0xODc1LDYgKzE4OTUsMTQgQEAgc3Rh dGljIHZvaWQgaW50ZWxfZGlzYWJsZV9kZGkoc3RydWN0IGludGVsX2VuY29kZXIgKmludGVsX2Vu Y29kZXIsCj4gPiA+ID4gPiAgICAJaWYgKG9sZF9jcnRjX3N0YXRlLT5oYXNfYXVkaW8pCj4gPiA+ ID4gPiAgICAJCWludGVsX2F1ZGlvX2NvZGVjX2Rpc2FibGUoaW50ZWxfZW5jb2Rlcik7Cj4gPiA+ ID4gPiAgICAKPiA+ID4gPiA+ICsJaWYgKHR5cGUgPT0gSU5URUxfT1VUUFVUX0hETUkpIHsKPiA+ ID4gPiA+ICsJCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0Yyhl bmNvZGVyLT5jcnRjKTsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsJCWludGVsX2hkbWlfaGFuZGxl X3Npbmtfc2NyYW1ibGluZyhpbnRlbF9lbmNvZGVyLAo+ID4gPiA+ID4gKwkJCQkJb2xkX2Nvbm5f c3RhdGUtPmNvbm5lY3RvciwKPiA+ID4gPiA+ICsJCQkJCWludGVsX2NydGMtPmNvbmZpZywgZmFs c2UpOwo+ID4gPiA+ID4gKwl9Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiAgICAJaWYgKHR5cGUgPT0g SU5URUxfT1VUUFVUX0VEUCkgewo+ID4gPiA+ID4gICAgCQlzdHJ1Y3QgaW50ZWxfZHAgKmludGVs X2RwID0gZW5jX3RvX2ludGVsX2RwKGVuY29kZXIpOwo+ID4gPiA+ID4gICAgCj4gPiA+ID4gPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ID4gPiA+ID4gaW5kZXggODIxYzU3Yy4uYzcyNjJkNyAx MDA2NDQKPiA+ID4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4g PiA+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ID4gPiA+ID4g QEAgLTY5MSw2ICs2OTEsMTIgQEAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgewo+ID4gPiA+ID4g ICAgCj4gPiA+ID4gPiAgICAJLyogR2FtbWEgbW9kZSBwcm9ncmFtbWVkIG9uIHRoZSBwaXBlICov Cj4gPiA+ID4gPiAgICAJdWludDMyX3QgZ2FtbWFfbW9kZTsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ ICsJLyogSERNSSBzY3JhbWJsaW5nIHN0YXR1cyAoc2luaykgKi8KPiA+ID4gPiA+ICsJYm9vbCBo ZG1pX3NjcmFtYmxpbmc7Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArCS8qIEhETUkgSGlnaCBUTURT IGNoYXIgcmF0ZSByYXRpbyAoc2luaykgKi8KPiA+ID4gPiA+ICsJYm9vbCBoZG1pX2hpZ2hfdG1k c19jbG9ja19yYXRpbzsKPiA+ID4gPiA+ICAgIH07Cj4gPiA+ID4gPiAgICAKPiA+ID4gPiA+ICAg IHN0cnVjdCB2bHZfd21fc3RhdGUgewo+ID4gPiA+ID4gQEAgLTE2MDksNiArMTYxNSwxNCBAQCB2 b2lkIGludGVsX2hkbWlfaW5pdF9jb25uZWN0b3Ioc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAq aW50ZWxfZGlnX3BvcnQsCj4gPiA+ID4gPiAgICBib29sIGludGVsX2hkbWlfY29tcHV0ZV9jb25m aWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gPiA+ID4gPiAgICAJCQkgICAgICAg c3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnLAo+ID4gPiA+ID4gICAgCQkJICAg ICAgIHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlKTsKPiA+ID4gPiA+ICt1 aW50MzJfdAo+ID4gPiA+ID4gK2ludGVsX2hkbWlfaGFuZGxlX3NvdXJjZV9zY3JhbWJsaW5nKHN0 cnVjdCBpbnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyLAo+ID4gPiA+ID4gKwkJCQkJc3RydWN0 IGRybV9kaXNwbGF5X21vZGUgKm1vZGUsCj4gPiA+ID4gPiArCQkJCQl1aW50MzJfdCBjb25maWcp Owo+ID4gPiA+ID4gK3ZvaWQgaW50ZWxfaGRtaV9oYW5kbGVfc2lua19zY3JhbWJsaW5nKHN0cnVj dCBpbnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyLAo+ID4gPiA+ID4gKwkJCQkJc3RydWN0IGRy bV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiA+ID4gPiA+ICsJCQkJCXN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpjb25maWcsCj4gPiA+ID4gPiArCQkJCQlib29sIGVuYWJsZSk7Cj4gPiA+ID4gPiAg ICB2b2lkIGludGVsX2RwX2R1YWxfbW9kZV9zZXRfdG1kc19vdXRwdXQoc3RydWN0IGludGVsX2hk bWkgKmhkbWksIGJvb2wgZW5hYmxlKTsKPiA+ID4gPiA+ICAgIAo+ID4gPiA+ID4gICAgCj4gPiA+ ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRtaS5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRtaS5jCj4gPiA+ID4gPiBpbmRleCBhNTgwZGU4Li5j NDRiZWVlIDEwMDY0NAo+ID4gPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf aGRtaS5jCj4gPiA+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMK PiA+ID4gPiA+IEBAIC0zNCw2ICszNCw3IEBACj4gPiA+ID4gPiAgICAjaW5jbHVkZSA8ZHJtL2Ry bV9hdG9taWNfaGVscGVyLmg+Cj4gPiA+ID4gPiAgICAjaW5jbHVkZSA8ZHJtL2RybV9jcnRjLmg+ Cj4gPiA+ID4gPiAgICAjaW5jbHVkZSA8ZHJtL2RybV9lZGlkLmg+Cj4gPiA+ID4gPiArI2luY2x1 ZGUgPGRybS9kcm1fc2NkY19oZWxwZXIuaD4KPiA+ID4gPiA+ICAgICNpbmNsdWRlICJpbnRlbF9k cnYuaCIKPiA+ID4gPiA+ICAgICNpbmNsdWRlIDxkcm0vaTkxNV9kcm0uaD4KPiA+ID4gPiA+ICAg ICNpbmNsdWRlIDxkcm0vaW50ZWxfbHBlX2F1ZGlvLmg+Cj4gPiA+ID4gPiBAQCAtMTc5NSw2ICsx Nzk2LDExMyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9oZG1pX2Rlc3Ryb3koc3RydWN0IGRybV9jb25u ZWN0b3IgKmNvbm5lY3RvcikKPiA+ID4gPiA+ICAgIAlpbnRlbF9oZG1pLT5hc3BlY3RfcmF0aW8g PSBIRE1JX1BJQ1RVUkVfQVNQRUNUX05PTkU7Cj4gPiA+ID4gPiAgICB9Cj4gPiA+ID4gPiAgICAK PiA+ID4gPiA+ICt2b2lkIGludGVsX2hkbWlfaGFuZGxlX3Npbmtfc2NyYW1ibGluZyhzdHJ1Y3Qg aW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlciwKPiA+ID4gPiA+ICsJCQkJICAgICAgIHN0cnVj dCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4gPiA+ID4gPiArCQkJCSAgICAgICBzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqY29uZmlnLAo+ID4gPiA+ID4gKwkJCQkgICAgICAgYm9vbCBlbmFi bGUpCj4gPiA+ID4gPiArewo+ID4gPiA+ID4gKwlzdHJ1Y3QgaW50ZWxfaGRtaSAqaW50ZWxfaGRt aSA9IGVuY190b19pbnRlbF9oZG1pKCZpbnRlbF9lbmNvZGVyLT5iYXNlKTsKPiA+ID4gPiA+ICsJ c3RydWN0IGRybV9zY2RjICpzY2RjID0gJmNvbm5lY3Rvci0+ZGlzcGxheV9pbmZvLmhkbWkuc2Nk YzsKPiA+ID4gPiA+ICsJc3RydWN0IGRybV9zY3JhbWJsaW5nICpzY3JhbWJsaW5nID0gJnNjZGMt PnNjcmFtYmxpbmc7Cj4gPiA+ID4gPiArCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlID0g JmNvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlOwo+ID4gPiA+ID4gKwlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSBjb25uZWN0b3ItPmRldi0+ZGV2X3ByaXZhdGU7Cj4gPiA+ID4g PiArCXN0cnVjdCBpMmNfYWRhcHRlciAqYWRwdHIgPSBpbnRlbF9nbWJ1c19nZXRfYWRhcHRlcihk ZXZfcHJpdiwKPiA+IAo+ID4gVGhlcmUncyBvbmx5IHR3byBsZXR0ZXJzIG1pc3NpbmcuIE1heWJl IGp1c3Qgc3BlbGwgYWRhcHRlci4KPiAKPiBUaGUgaW50ZW50aW9uIHdhcyB0byBrZWVwIGl0IHdp dGhpbiA4MCBjaGFyLCBhbmQgaXQgd2FzIGdvaW5nIDgyIDpQIDotKQo+ID4gPiA+ID4gKwkJCQkJ CQkgIGludGVsX2hkbWktPmRkY19idXMpOwo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKwlpZiAoIXNj cmFtYmxpbmctPnN1cHBvcnRlZCkKPiA+ID4gPiA+ICsJCXJldHVybjsKPiA+ID4gPiA+ICsKPiA+ ID4gPiA+ICsJRFJNX0RFQlVHX0tNUygiU2V0dGluZyBzaW5rIHNjcmFtYmxpbmcgZm9yIGVuYzol cyBjb25uZWN0b3I6JXNcbiIsCj4gPiA+ID4gPiArCQkJaW50ZWxfZW5jb2Rlci0+YmFzZS5uYW1l LCBjb25uZWN0b3ItPm5hbWUpOwo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKwlpZiAoZW5hYmxlKSB7 Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArCQlpZiAobW9kZS0+Y2xvY2sgPiAzNDAwMDApIHsKPiA+ ID4gPiA+ICsJCQkvKiBTZXQgVE1EUyBiaXQgY2xvY2sgcmF0aW8gdG8gMS80MCAqLwo+ID4gPiA+ ID4gKwkJCWNvbmZpZy0+aGRtaV9oaWdoX3RtZHNfY2xvY2tfcmF0aW8gPQo+ID4gPiA+ID4gKwkJ CQlkcm1fc2NkY19zZXRfaGlnaF90bWRzX2Nsb2NrX3JhdGlvKGFkcHRyKTsKPiA+ID4gPiAKPiA+ ID4gPiBZb3UncmUgbm90IGFsbG93ZWQgdG8gbXVjayB3aXRoIHRoZSBzdGF0ZSBhbnltb3JlLiBB bGwgc3RhdGUgY29tcHV0YXRpb24KPiA+ID4gPiBzaG91bGQgaGFwcGVuIGluIHRoZSAuY29tcHV0 ZV9jb25maWcgaG9vay4KPiA+ID4gCj4gPiA+IG9rLCBsZXQgbWUgcmUtYXJyYW5nZSB0aGlzIGZ1 bmN0aW9uIGluIHN1Y2ggYSB3YXkgdGhhdCBJIGRvIHRoZSBjb25maWcKPiA+ID4gdXBkYXRlIHBh cnQgaW4gY29tcHV0ZV9jb25maWcKPiA+ID4gPiA+ICsJCQlpZiAoIWNvbmZpZy0+aGRtaV9oaWdo X3RtZHNfY2xvY2tfcmF0aW8pIHsKPiA+ID4gPiA+ICsJCQkJRFJNX0VSUk9SKCJTZXQgaGlnaCBU TURTIHJhdGlvIGZhaWxlZFxuIik7Cj4gPiA+ID4gPiArCQkJCXJldHVybjsKPiA+ID4gPiA+ICsJ CQl9Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArCQkJLyogRW5hYmxlIHNpbmsgc2NyYW1ibGluZyAq Lwo+ID4gPiA+ID4gKwkJCWNvbmZpZy0+aGRtaV9zY3JhbWJsaW5nID0KPiA+ID4gPiA+ICsJCQkJ CWRybV9zY2RjX2VuYWJsZV9zY3JhbWJsaW5nKGFkcHRyKTsKPiA+ID4gPiA+ICsJCQlpZiAoIWNv bmZpZy0+aGRtaV9zY3JhbWJsaW5nKSB7Cj4gPiA+ID4gPiArCQkJCURSTV9FUlJPUigiQ2FuJ3Qg ZW5hYmxlIHNpbmsgc2NyYW1ibGluZ1xuIik7Cj4gPiA+ID4gPiArCQkJCXJldHVybjsKPiA+ID4g PiA+ICsJCQl9Cj4gPiA+ID4gPiArCQl9Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArCQkvKiBGZXcg c2lua3Mgc3VwcG9ydCBzY3JhbWJsaW5nIGF0IGNsb2NrcyA8PTM0MCBNSHogdG9vICovCj4gPiA+ ID4gPiArCQlpZiAoIWNvbmZpZy0+aGRtaV9zY3JhbWJsaW5nICYmIHNjcmFtYmxpbmctPmxvd19y YXRlcykgewo+ID4gPiA+ID4gKwkJCWNvbmZpZy0+aGRtaV9zY3JhbWJsaW5nID0KPiA+ID4gPiA+ ICsJCQkJCWRybV9zY2RjX2VuYWJsZV9zY3JhbWJsaW5nKGFkcHRyKTsKPiA+ID4gPiA+ICsJCQlp ZiAoIWNvbmZpZy0+aGRtaV9zY3JhbWJsaW5nKQo+ID4gPiA+ID4gKwkJCQlEUk1fRVJST1IoIkNh bid0IGVuYWJsZSBzaW5rIHNjcmFtYmxpbmdcbiIpOwo+ID4gPiA+ID4gKwkJfQo+ID4gPiA+ID4g Kwo+ID4gPiA+ID4gKwkJcmV0dXJuOwo+ID4gPiA+ID4gKwl9Cj4gPiA+ID4gPiArCj4gPiA+ID4g PiArCWlmIChjb25maWctPmhkbWlfaGlnaF90bWRzX2Nsb2NrX3JhdGlvKSB7Cj4gPiA+ID4gPiAr CQkvKiBTZXQgVE1EUyBiaXQgY2xvY2sgcmF0aW8gYmFjayB0byAxLzEwICovCj4gPiA+ID4gPiAr CQljb25maWctPmhkbWlfaGlnaF90bWRzX2Nsb2NrX3JhdGlvID0KPiA+ID4gPiA+ICsJCQkhKGRy bV9zY2RjX2NsZWFyX2hpZ2hfdG1kc19jbG9ja19yYXRpbyhhZHB0cikpOwo+ID4gPiA+ID4gKwkJ aWYgKGNvbmZpZy0+aGRtaV9oaWdoX3RtZHNfY2xvY2tfcmF0aW8pCj4gPiA+ID4gPiArCQkJRFJN X0VSUk9SKCJSZXNldCBoaWdoIFRNRFMgcmF0aW8gZmFpbGVkXG4iKTsKPiA+ID4gPiA+ICsJfQo+ ID4gPiA+ID4gKwo+ID4gPiA+ID4gKwlpZiAoY29uZmlnLT5oZG1pX3NjcmFtYmxpbmcpIHsKPiA+ ID4gPiA+ICsJCS8qIERpc2FibGUgc2luayBzY3JhbWJsaW5nICovCj4gPiA+ID4gPiArCQljb25m aWctPmhkbWlfc2NyYW1ibGluZyA9ICEoZHJtX3NjZGNfZGlzYWJsZV9zY3JhbWJsaW5nKGFkcHRy KSk7Cj4gPiA+ID4gPiArCQlpZiAoY29uZmlnLT5oZG1pX3NjcmFtYmxpbmcpCj4gPiA+ID4gPiAr CQkJRFJNX0VSUk9SKCJEaXNhYmxlIHNpbmsgc2NyYW1ibGluZyBmYWlsZWRcbiIpOwo+ID4gPiA+ ID4gKwl9Cj4gPiA+ID4gPiArfQo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gK3N0YXRpYyBpbmxpbmUg dWludDMyX3QgX2ludGVsX2hkbWlfc2V0X3NvdXJjZV9zY3JhbWJsaW5nKHVpbnQzMl90IGhkbWlf Y29uZmlnKQo+ID4gPiA+ID4gK3sKPiA+ID4gPiA+ICsJcmV0dXJuIGhkbWlfY29uZmlnIHw9IChU UkFOU19ERElfSERNSV9TQ1JBTUJMSU5HIHwKPiA+ID4gPiA+ICsJCQlUUkFOU19ERElfSERNSV9T Q1JBTUJMRVJfUkVTRVRfRlJFUSB8Cj4gPiA+ID4gPiArCQkJVFJBTlNfRERJX0hETUlfU0NSQU1C TEVSX0NUU19FTkFCTEUpOwo+ID4gPiA+ID4gK30KPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICt1aW50 MzJfdAo+ID4gPiA+ID4gK2ludGVsX2hkbWlfaGFuZGxlX3NvdXJjZV9zY3JhbWJsaW5nKHN0cnVj dCBpbnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyLAo+ID4gPiA+ID4gKwkJCXN0cnVjdCBkcm1f ZGlzcGxheV9tb2RlICptb2RlLCB1aW50MzJfdCBoZG1pX2NvbmZpZykKPiA+ID4gPiA+ICt7Cj4g PiA+ID4gPiArCXN0cnVjdCBpbnRlbF9oZG1pICppbnRlbF9oZG1pID0gZW5jX3RvX2ludGVsX2hk bWkoJmludGVsX2VuY29kZXItPmJhc2UpOwo+ID4gPiA+ID4gKwlzdHJ1Y3QgZHJtX2Nvbm5lY3Rv ciAqY29ubmVjdG9yID0gJmludGVsX2hkbWktPmF0dGFjaGVkX2Nvbm5lY3Rvci0+YmFzZTsKPiA+ ID4gPiA+ICsJc3RydWN0IGRybV9oZG1pX2luZm8gKmhkbWlfaW5mbyA9ICZjb25uZWN0b3ItPmRp c3BsYXlfaW5mby5oZG1pOwo+ID4gPiA+ID4gKwlzdHJ1Y3QgZHJtX3NjcmFtYmxpbmcgKnNjcmFt YmxpbmcgPSAmaGRtaV9pbmZvLT5zY2RjLnNjcmFtYmxpbmc7Cj4gPiA+ID4gPiArCj4gPiA+ID4g PiArCURSTV9ERUJVR19LTVMoIlNldHRpbmcgc2NyYW1ibGluZyBmb3IgZW5jOiVzIGNvbm5lY3Rv cjolc1xuIiwKPiA+ID4gPiA+ICsJCQlpbnRlbF9lbmNvZGVyLT5iYXNlLm5hbWUsIGNvbm5lY3Rv ci0+bmFtZSk7Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArCWhkbWlfY29uZmlnICY9IH4oVFJBTlNf RERJX0hETUlfU0NSQU1CTElORyB8Cj4gPiA+ID4gPiArCQlUUkFOU19ERElfSElHSF9UTURTX0NI QVJfUkFURSB8Cj4gPiA+ID4gPiArCQlUUkFOU19ERElfSERNSV9TQ1JBTUJMRVJfUkVTRVRfRlJF USB8Cj4gPiA+ID4gPiArCQlUUkFOU19ERElfSERNSV9TQ1JBTUJMRVJfQ1RTX0VOQUJMRSk7Cj4g PiA+ID4gPiArCj4gPiA+ID4gPiArCWlmIChtb2RlLT5jbG9jayA8PSAzNDAwMDApIHsKPiA+ID4g PiA+ICsJCS8qIEZldyBzaW5rcyBzdXBwb3J0IHNjcmFtYmxpbmcgYXQgcmF0ZSA8IDM0MCBNSHog dG9vICovCj4gPiA+ID4gPiArCQlpZiAoc2NyYW1ibGluZy0+bG93X3JhdGVzKQo+ID4gPiA+ID4g KwkJCWhkbWlfY29uZmlnID0KPiA+ID4gPiA+ICsJCQkJX2ludGVsX2hkbWlfc2V0X3NvdXJjZV9z Y3JhbWJsaW5nKGhkbWlfY29uZmlnKTsKPiA+ID4gPiA+ICsJCXJldHVybiBoZG1pX2NvbmZpZzsK PiA+ID4gPiA+ICsJfQo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKwkvKiBTY3JhbWJsaW5nIG9yIG5v dCwgaWYgY2xvY2sgPiAzNDAgTUh6LCBzZXQgaGlnaCBjaGFyIHJhdGUgKi8KPiA+ID4gPiA+ICsJ aGRtaV9jb25maWcgfD0gVFJBTlNfRERJX0hJR0hfVE1EU19DSEFSX1JBVEU7Cj4gPiA+ID4gPiAr Cj4gPiA+ID4gPiArCWlmIChzY3JhbWJsaW5nLT5zdXBwb3J0ZWQpCj4gPiA+ID4gPiArCQloZG1p X2NvbmZpZyA9IF9pbnRlbF9oZG1pX3NldF9zb3VyY2Vfc2NyYW1ibGluZyhoZG1pX2NvbmZpZyk7 Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArCXJldHVybiBoZG1pX2NvbmZpZzsKPiA+ID4gPiA+ICt9 Cj4gPiA+ID4gCj4gPiA+ID4gU2VlbXMgb3Zlcmx5IGNvbXBsaWNhdGVkIHRvIG1lLiBJdCBjb3Vs ZCBqdXN0IGJlIHNvbWV0aGluZyBzaW1wbGUgbGlrZToKPiA+ID4gPiAKPiA+ID4gPiB2b2lkIGlu dGVsX2RkaV9lbmFibGVfdHJhbnNjb2Rlcl9mdW5jKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiA+ ID4gPiB7Cj4gPiA+ID4gCS4uLgo+ID4gPiA+IAlpZiAoY29uZmlnLT5oZG1pX3NjcmFtYmxpbmcp Cj4gPiA+ID4gCQl0ZW1wIHw9IFRSQU5TX0RESV9IRE1JX1NDUkFNQkxJTkc7Cj4gPiA+ID4gCQo+ ID4gPiA+IAlpZiAoY29uZmlnLT53aGF0ZXZlcikKPiA+ID4gPiAJCXRlbXAgfD0gVFJBTlNfRERJ X0hJR0hfVE1EU19DSEFSX1JBVEU7Cj4gPiA+ID4gCS4uLgo+ID4gPiA+IH0KPiA+ID4gCj4gPiA+ IEkga25vdyBpdCBhcHBlYXJzIGxpa2UgY29tcGxpY2F0ZWQsIGJ1dCBhY3R1YWxseSB0aGUgcmVx dWlyZW1lbnQgaXMKPiA+ID4gY29tcGxpY2F0ZWQ6Cj4gPiA+IC0gaWYgY2xvY2sgaXMgPiAzNDAg TWh6LCBzZXQgc2NyYW1ibGluZyAmJiBzZXRfaGlnaF90bWRzX2Nsb2NrX3JhdGlvCj4gPiA+IC0g aWYgY2xvY2sgaXMgPCAzNDAgTWh6LCBidXQgaWYgbW9uaXRvciBzdXBwb3J0cyBzY3JhbWJsaW5n IGF0IGxvd2VyCj4gPiA+IGNsb2Nrcywgc2V0IHNjcmFtYmxpbmcgb25seSAobm90IHRtZHNfY2xv Y2tfcmF0aW8pCj4gPiA+IC0gdG8gc2V0IHNjcmFtYmxpbmcsIHdlIGhhdmUgdG8gZmlyc3QgY2hl Y2sgaWYgc2NyYW1ibGluZyBpcyBzdXBwb3J0ZWQKPiA+ID4gaW4gbW9uaXRvcgo+ID4gPiBTbyB0 byBtZWV0IGFsbCB0aGVzZSBjb25kaXRpb24sIHlvdSB3aWxsIGVuZCB1cCB3aXRoIHNvbWV0aGlu ZyBsaWtlCj4gPiA+IHdoYXQncyBpbXBsZW1lbnRlZCBhYm92ZS4KPiA+ID4gRG8geW91IHNlZSBh ICBiZXR0ZXIgd2F5ID8KPiA+IAo+ID4gUHV0IHRoYXQgaW50ZWxfaGRtaV9jb21wdXRlX2NvbmZp ZygpIHNvIHlvdSBjaGVjayBpdCBvbmx5IG9uY2UsIGkuZS46Cj4gPiAKPiA+IGlmIChjbG9jayA+ IDM0MCB8fCBzY3JhbWJsaW5nLT5sb3dfcmF0ZXMpCj4gPiAJY29uZmlnLT5oZG1pX3NjcmFtYmxp bmcgPSB0cnVlOwo+ID4gCj4gPiBpZiAoY2xvY2sgPiAzNDApCj4gPiAJY29uZmlnLT5oZG1pX2hp Z2hfdG1kcyA9IHRydWU7Cj4gPiAKPiA+IFRoZW4geW91IGNhbiBkbyBqdXN0IGFzIFZpbGxlIHNh aWQgYWJvdmUgaW4gaW50ZWxfZGRpX2VuYWJsZV90cmFuc2NvZGVyX2Z1bmMoKS4KPiAKPiBUaGF0 cyBhIGdvb2QgaWRlYSwgSSBjYW4gZG8gdGhhdCwgYnV0IHRoZXJlIGlzIG9uZSBkcmF3YmFjayBv ZiBkb2luZyAKPiB0aGF0LiBSaWdodCBub3csIGFsbCBvZiB0aGUgSERNSQo+IHNvdXJjZS9zaW5r IHNjcmFtYmxpbmcgY29kZSBpcyBpbiBvbmUgZnVuY3Rpb24sIHNvIGZvciBhbnkgCj4gZGVidWcv bW9kaWZpY2F0aW9uIGFjdGl2aXR5LCB5b3UgaGF2ZSB0byBsb29rCj4gb25seSBpbiBvbmUgZnVu Y3Rpb24sIGFsc28gaXRzIG1vcmUgcmVhZGFibGUgdGhpcyB3YXkgKGluIHRoZSBmbG93KQo+IAo+ IFRoZSBtb21lbnQgd2UgZGlzdHJpYnV0ZSBjb2RlIGluIDMgZGlmZmVyZW50IGZ1bmN0aW9uLCB5 b3UgaGF2ZSB0byB0cmFjayAKPiBpbiBhbGwgdGhlIHBsYWNlcy4gQWxzbywgd2UgYXJlIG5vdAo+ IHNhdmluZy9yZWR1Y2luZyBhbnkgaWYgY29uZGl0aW9ucywgd2UgYXJlIGp1c3QgbW92aW5nIGl0 IGF0IHNvbWUgb3RoZXIgCj4gcGxhY2UuCgpXaXRoIHRoZSBjdXJyZW50IHBhdGNoIGJvdGggaGFu ZGxlX3NvdXJjZV9zY3JhbWJsaW5nKCkgYW5kCmhhbmRsZV9zaW5rX3NjcmFtYmxpbmcoKSBoYXZl IGNoZWNrcyBmb3IgY2xvY2sgYWJvdmUvYmVsb3cgMzQwMDAwIGFuZCB3aGV0aGVyCnRoZSBzaW5r IHN1cHBvcnQgc2NyYW1ibGluZyB3aXRoIGxvdyByYXRlcy4gVGhvc2UgdHdvIGNoZWNrcyBkb24n dCBuZWVkIHRvIGJlCmR1cGxpY2F0ZWQuCgo+IERvIHlvdSBzdGlsbCB0aGluayBpdCdzIHdvcnRo IGRvaW5nIGl0ID8KClllcywgZG9pbmcgaXQgaW4gY29tcHV0ZSBjb25maWcgZm9sbG93cyB0aGUg Y29udmVudGlvbiBvZiB0aGUgZHJpdmVyLiBJZgpzb21ldGhpbmcgaXMgc2V0IGluIGNydGNfc3Rh dGUsIGl0IGlzIG9ubHkgbmF0dXJhbCB0byBhc3N1bWUgaXQgd2FzIHNldCBhdCBzb21lCnBvaW50 IGluIHRoZSBhdG9taWMgY2hlY2sgcGhhc2Ugb3IgZnJvbSByZWFkaW5nIG91dCB0aGUgaGFyZHdh cmUgc3RhdGUuCgo+ID4gQW5kIGFsc28gZm9yIHRoZSBzaW5rIHBhcnQsIG5vIG5lZWQgdG8gY2hl Y2sgdGhlIGlucHV0IHZhbHVlcyBhZ2FpbjoKPiA+IAo+ID4gaWYgKGNvbmZpZy0+aGRtaV9oaWdo X3RtZHMpCj4gPiAJaWYgKCFkcm1fc2NkY19zZXRfaGlnaF90bWRzX2Nsb2NrX3JhdGlvKGFkYXB0 ZXIsIGVuYWJsZSkpCj4gPiAJCURSTV9FUlJPUigpOwo+ID4gCj4gPiBpZiAoY29uZmlnLT5oZG1p X3NjcmFtYmluZykKPiA+IAlpZiAoIWRybV9zY2RjX3NldF9zY3JhbWJsaW5nKGFkYXB0ZXIsIGVu YWJsZSkpCj4gPiAJCURSTV9FUlJPUigpOwo+ID4gCj4gPiBBdCBsZWFzdCB0aGF0J3MgaG93IEkn ZCBpbnRlcnByZXQgd2hhdCBWaWxsZSB3cm90ZS4KPiAKPiBBY3R1YWxseSBkZXNpZ24gaXMgc2xp Z2h0bHkgZGlmZmVyZW50LiBUaGUgc3RhdGUncyBoZG1pX3NjcmFtYmxpbmcvY2xvY2sgCj4gYm9v bCdzIGluZGljYXRlIHRoYXQgdGhlIHNpbmsncwo+IHNjcmFtYmxpbmcvaGlnaF9jbG9ja19yYXRp byBpcyBlbmFibGVkL3NldCBieSBzb3VyY2UgKGFuZCBuZWVkcyB0byBiZSAKPiBkaXNhYmxlZCks IHdoZXJlYXMgY29ubmVjb3RyJ3MtPmRpc3BsYXlfaW5mby0+c2NkYy5zY3JhbWJsaW5nCj4gaXMg dG8gaW5kaWNhdGUgbW9uaXRvcidzIGNhcGFiaWxpdHkgdG8gc3VwcG9ydCBzY3JhbWJsaW5nIGFu ZCBzY2RjCgpUaGUgY3J0Y19zdGF0ZSBzaG91bGRuJ3QgYmUgY2hhbmdlZCB0byByZXByZXNlbnQg Y2hhbmdlcyBpbiB0aGUgaGFyZHdhcmUgc3RhdGUuCkl0IGlzIGNvbXB1dGVkIGR1cmluZyB0aGUg YXRvbWljIGNoZWNrIHBoYXNlLCBhbmQgYWZ0ZXIgdGhhdCBpdCBzaG91bGQgcmVwcmVzZW50CnRo ZSBzdGF0ZSB0aGF0IG5lZWRzIHRvIGJlIGNvbW1pdGVkLiBQZXJoYXBzIHRoZSBjb2RlIGluIGhk bWlfY29tcHV0ZV9jb25maWcoKQpqdXN0IG5lZWRzIHRvIHRha2UgdGhlIHByZXZpb3VzIHN0YXRl IGludG8gYWNjb3VudD8KCj4gCj4gVGhpbmsgYWJvdXQgdHdvIHNpdHVhdGlvbnMgd2hlcmU6LQo+ IC0gTW9uaXRvciBzdXBwb3J0cyBzY3JhbWJsaW5nIGFuZCBzY2RjLCBidXQgd2Ugd2lsbCBub3Qg ZW5hYmxlIGl0LCBhcyAKPiB0aGUgY3VycmVudCBtb2RlIGlzIDEwODBQQDE0OCBNSHoKPiAtIE1v bml0b3Igc3VwcG9ydHMgc2NyYW1ibGluZyBhbmQgc2NkYywgYW5kIHdlIHdpbGwgZW5hYmxlIGl0 LCBhcyB0aGUgCj4gY3VycmVudCBtb2RlIGlzIDRrQDU5NiBNaHoKPiAKPiBUbyBkaWZmZXJlbnRp YXRlIGJldHdlZW4gdGhlc2UgdHdvLCB3ZSBoYXZlOgo+IGNvbmZpZy0+aGRtaV9zY3JhbWJsaW5n IHdoaWNoIHNob3dzIHNjcmFtYmxpbmcgZW5hYmxlZCBvbiBtb25pdG9yIGJ5IHNvdXJjZQo+IGRp c3BsYXlfaW5mby0+aGRtaS5zY2RjLT5zY3JhbWJsaW5nIHdoaWNoIGluZGljYXRlcyBtb25pdG9y IHN1cHBvcnRzIAo+IHNjcmFtYmxpbmcKPiAKPiBEb2VzIGl0IG1ha2Ugc2Vuc2UgPyBPciB5b3Ug cHJlZmVyIHNvbWUgY2hhbmdlcyBoZXJlID8KCklzIHRoZXJlIGFueSBoYXJtIGluIGRpc2FibGlu ZyBzY3JhbWJsaW5nIHR3aWNlPyBJZiBub3QgSSdkIHNheSBqdXN0IGRpc2FibGUgaXQKb24gZXZl cnkgbW9kZXNldCBpZiBpdCBpcyBub3QgbmVlZGVkLiBUaGVuIHRoZXJlJ3Mgbm8gbmVlZCB0byBr bm93IHRoZSBwcmV2aW91cwpzdGF0ZSBhdCB0aGUgbW9tZW50IHdlIGFjdHVhbGx5IGVuYWJsZS9k aXNhYmxlIGl0LgoKQW5kZXIKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50 ZWwtZ2Z4Cg==