From: "Lis, Tomasz" Subject: Re: [PATCH v5] drm/i915: Add IOCTL Param to control data port coherency. Date: Fri, 13 Jul 2018 19:44:18 +0200 Message-ID: <5ce0ba07-381d-44c5-2abf-e095f57df0bc@intel.com> References: <1521463055-5325-2-git-send-email-tomasz.lis@intel.com> <1531408203-3888-1-git-send-email-tomasz.lis@intel.com> <3338310a-7b71-ba04-1871-d1e177e11704@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id 427C16F33A for ; Fri, 13 Jul 2018 17:44:21 +0000 (UTC) In-Reply-To: <3338310a-7b71-ba04-1871-d1e177e11704@linux.intel.com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Tvrtko Ursulin , intel-gfx@lists.freedesktop.org Cc: bartosz.dunajski@intel.com List-Id: intel-gfx@lists.freedesktop.org CgpPbiAyMDE4LTA3LTEzIDEyOjQwLCBUdnJ0a28gVXJzdWxpbiB3cm90ZToKPgo+IE9uIDEyLzA3 LzIwMTggMTY6MTAsIFRvbWFzeiBMaXMgd3JvdGU6Cj4+IFRoZSBwYXRjaCBhZGRzIGEgcGFyYW1l dGVyIHRvIGNvbnRyb2wgdGhlIGRhdGEgcG9ydCBjb2hlcmVuY3kgCj4+IGZ1bmN0aW9uYWxpdHkK Pj4gb24gYSBwZXItY29udGV4dCBsZXZlbC4gV2hlbiB0aGUgSU9DVEwgaXMgY2FsbGVkLCBhIGNv bW1hbmQgdG8gc3dpdGNoIAo+PiBkYXRhCj4+IHBvcnQgY29oZXJlbmN5IHN0YXRlIGlzIGFkZGVk IHRvIHRoZSBvcmRlcmVkIGxpc3QuIEFsbCBwcmlvciByZXF1ZXN0cyAKPj4gYXJlCj4+IGV4ZWN1 dGVkIG9uIG9sZCBjb2hlcmVuY3kgc2V0dGluZ3MsIGFuZCBhbGwgZXhlYyByZXF1ZXN0cyBhZnRl ciB0aGUgCj4+IElPQ1RMCj4+IHdpbGwgdXNlIG5ldyBzZXR0aW5ncy4KPj4KPj4gUmF0aW9uYWxl Ogo+Pgo+PiBUaGUgT3BlbkNMIGRyaXZlciBkZXZlbHBlcnMgcmVxdWVzdGVkIGEgZnVuY3Rpb25h bGl0eSB0byBjb250cm9sIGNhY2hlCj4+IGNvaGVyZW5jeSBhdCBkYXRhIHBvcnQgbGV2ZWwuIEtl ZXBpbmcgdGhlIGNvaGVyZW5jeSBhdCB0aGF0IGxldmVsIGlzIAo+PiBkaXNhYmxlZAo+PiBieSBk ZWZhdWx0IGR1ZSB0byBpdHMgcGVyZm9ybWFuY2UgY29zdHMuIE9wZW5DTCBkcml2ZXIgaXMgcGxh bm5pbmcgdG8KPj4gZW5hYmxlIGl0IGZvciBhIHNtYWxsIHN1YnNldCBvZiBzdWJtaXNzaW9ucywg d2hlbiBzdWNoIGZ1bmN0aW9uYWxpdHkgaXMKPj4gcmVxdWlyZWQuIEJlbG93IGFyZSBhbnN3ZXJz IHRvIGJhc2ljIHF1ZXN0aW9uIGV4cGxhaW5pbmcgYmFja2dyb3VuZAo+PiBvZiB0aGUgZnVuY3Rp b25hbGl0eSBhbmQgcmVhc29uaW5nIGZvciB0aGUgcHJvcG9zZWQgaW1wbGVtZW50YXRpb246Cj4+ Cj4+IDEuIFdoeSBkbyB3ZSBuZWVkIGEgY29oZXJlbmN5IGVuYWJsZS9kaXNhYmxlIHN3aXRjaCBm b3IgbWVtb3J5IHRoYXQgCj4+IGlzIHNoYXJlZAo+PiBiZXR3ZWVuIENQVSBhbmQgR0VOIChHUFUp Pwo+Pgo+PiBNZW1vcnkgY29oZXJlbmN5IGJldHdlZW4gQ1BVIGFuZCBHRU4sIHdoaWxlIGJlaW5n IGEgZ3JlYXQgZmVhdHVyZSAKPj4gdGhhdCBlbmFibGVzCj4+IENMX01FTV9TVk1fRklORV9HUkFJ Tl9CVUZGRVIgT0NMIGNhcGFiaWxpdHkgb24gSW50ZWwgR0VOIAo+PiBhcmNoaXRlY3R1cmUsIGFk ZHMKPj4gb3ZlcmhlYWQgcmVsYXRlZCB0byB0cmFja2luZyAoc25vb3BpbmcpIG1lbW9yeSBpbnNp ZGUgZGlmZmVyZW50IGNhY2hlIAo+PiB1bml0cwo+PiAoTDEkLCBMMiQsIEwzJCwgTExDJCwgZXRj LikuIEF0IHRoZSBzYW1lIHRpbWUsIG1pbm9yaXR5IG9mIG1vZGVybiBPQ0wKPj4gYXBwbGljYXRp b25zIGFjdHVhbGx5IHVzZSBDTF9NRU1fU1ZNX0ZJTkVfR1JBSU5fQlVGRkVSIChhbmQgaGVuY2Ug Cj4+IHJlcXVpcmUKPj4gbWVtb3J5IGNvaGVyZW5jeSBiZXR3ZWVuIENQVSBhbmQgR1BVKS4gVGhl IGdvYWwgb2YgY29oZXJlbmN5IAo+PiBlbmFibGUvZGlzYWJsZQo+PiBzd2l0Y2ggaXMgdG8gcmVt b3ZlIG92ZXJoZWFkIG9mIG1lbW9yeSBjb2hlcmVuY3kgd2hlbiBtZW1vcnkgCj4+IGNvaGVyZW5j eSBpcyBub3QKPj4gbmVlZGVkLgo+Pgo+PiAyLiBXaHkgZG8gd2UgbmVlZCBhIGdsb2JhbCBjb2hl cmVuY3kgc3dpdGNoPwo+Pgo+PiBJbiBvcmRlciB0byBzdXBwb3J0IEkvTyBjb21tYW5kcyBmcm9t IHdpdGhpbiBFVXMgKEV4ZWN1dGlvbiBVbml0cyksIAo+PiBJbnRlbCBHRU4KPj4gSVNBIChHRU4g SW5zdHJ1Y3Rpb24gU2V0IEFzc2VtYmx5KSBjb250YWlucyBkZWRpY2F0ZWQgInNlbmQiIAo+PiBp bnN0cnVjdGlvbnMuCj4+IFRoZXNlIHNlbmQgaW5zdHJ1Y3Rpb25zIHByb3ZpZGUgc2V2ZXJhbCBh ZGRyZXNzaW5nIG1vZGVscy4gT25lIG9mIHRoZXNlCj4+IGFkZHJlc3NpbmcgbW9kZWxzIChuYW1l ZCAic3RhdGVsZXNzIikgcHJvdmlkZXMgbW9zdCBmbGV4aWJsZSBJL08gCj4+IHVzaW5nIHBsYWlu Cj4+IHZpcnR1YWwgYWRkcmVzc2VzIChhcyBvcHBvc2VkIHRvIGJ1ZmZlcl9oYW5kbGUrb2Zmc2V0 IG1vZGVscykuIFRoaXMgCj4+ICJzdGF0ZWxlc3MiCj4+IG1vZGVsIGlzIHNpbWlsYXIgdG8gcmVn dWxhciBtZW1vcnkgbG9hZC9zdG9yZSBvcGVyYXRpb25zIGF2YWlsYWJsZSBvbiAKPj4gdHlwaWNh bAo+PiBDUFVzLiBTaW5jZSB0aGlzIG1vZGVsIHByb3ZpZGVzIEkvTyB1c2luZyBhcmJpdHJhcnkg dmlydHVhbCAKPj4gYWRkcmVzc2VzLCBpdAo+PiBlbmFibGVzIGFsZ29yaXRobWljIGRlc2lnbnMg dGhhdCBhcmUgYmFzZWQgb24gcG9pbnRlci10by1wb2ludGVyIAo+PiAoZS5nLiBidWZmZXIKPj4g b2YgcG9pbnRlcnMpIGNvbmNlcHRzLiBGb3IgaW5zdGFuY2UsIGl0IGFsbG93cyBjcmVhdGluZyB0 cmVlLWxpa2UgZGF0YQo+PiBzdHJ1Y3R1cmVzIHN1Y2ggYXM6Cj4+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIF9fX19fX19fX19fX19fX18KPj4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgwqDCoMKgIE5PREUxwqDCoMKgwqAgfAo+PiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCB1aW50NjRfdCBkYXRhwqAgfAo+PiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKy0tLS0tLS0tLS0tLS0tLS18Cj4+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IE5PREUqwqAgfMKgIE5PREUq fAo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKy0tLS0tLS0tKy0tLS0t LS0rCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgL8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIFwKPj4gwqDCoMKgIF9fX19fX19fX19fX19fX18vwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIFxfX19fX19fX19fX19fX19fCj4+IMKgwqAgfMKgwqDCoMKg wqAgTk9ERTLCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgwqDC oMKgIE5PREUzwqDCoMKgwqAgfAo+PiDCoMKgIHwgdWludDY0X3QgZGF0YcKgIHzCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgfCB1aW50NjRfdCBkYXRhwqAgfAo+PiDCoMKgICstLS0tLS0t LS0tLS0tLS0tfMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCArLS0tLS0tLS0tLS0tLS0t LXwKPj4gwqDCoCB8IE5PREUqwqAgfMKgIE5PREUqfMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCB8IE5PREUqwqAgfMKgIE5PREUqfAo+PiDCoMKgICstLS0tLS0tLSstLS0tLS0tK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCArLS0tLS0tLS0rLS0tLS0tLSsKPj4KPj4gUGxlYXNl IG5vdGUgdGhhdCBwb2ludGVycyBpbnNpZGUgc3VjaCBzdHJ1Y3R1cmVzIGNhbiBwb2ludCB0byBt ZW1vcnkgCj4+IGxvY2F0aW9ucwo+PiBpbiBkaWZmZXJlbnQgT0NMIGFsbG9jYXRpb25zwqAgLSBl LmcuIE5PREUxIGFuZCBOT0RFMiBjYW4gcmVzaWRlIGluIAo+PiBvbmUgT0NMCj4+IGFsbG9jYXRp b24gd2hpbGUgTk9ERTMgcmVzaWRlcyBpbiBhIGNvbXBsZXRlbHkgc2VwYXJhdGUgT0NMIGFsbG9j YXRpb24uCj4+IEFkZGl0aW9uYWxseSwgc3VjaCBwb2ludGVycyBjYW4gYmUgc2hhcmVkIHdpdGgg Q1BVIChpLmUuIHVzaW5nIFNWTSAtIAo+PiBTaGFyZWQKPj4gVmlydHVhbCBNZW1vcnkgZmVhdHVy ZSkuIFVzaW5nIHBvaW50ZXJzIGZyb20gZGlmZmVyZW50IGFsbG9jYXRpb25zIAo+PiBkb2Vzbid0 Cj4+IGFmZmVjdCB0aGUgc3RhdGVsZXNzIGFkZHJlc3NpbmcgbW9kZWwgd2hpY2ggZXZlbiBhbGxv d3Mgc2NhdHRlcmVkIAo+PiByZWFkaW5nIGZyb20KPj4gZGlmZmVyZW50IGFsbG9jYXRpb25zIGF0 IHRoZSBzYW1lIHRpbWUgKGkuZS4gYnkgdXRpbGl6aW5nIFNJTUQtbmF0dXJlIAo+PiBvZiBzZW5k Cj4+IGluc3RydWN0aW9ucykuCj4+Cj4+IFdoZW4gaXQgY29tZXMgdG8gY29oZXJlbmN5IHByb2dy YW1taW5nLCBzZW5kIGluc3RydWN0aW9ucyBpbiAKPj4gc3RhdGVsZXNzIG1vZGVsCj4+IGNhbiBi ZSBlbmNvZGVkIChhdCBJU0EgbGV2ZWwpIHRvIGVpdGhlciB1c2Ugb3IgZGlzYWJsZSBjb2hlcmVu Y3kuIAo+PiBIb3dldmVyLCBmb3IKPj4gZ2VuZXJpYyBPQ0wgYXBwbGljYXRpb25zIChzdWNoIGFz IGV4YW1wbGUgd2l0aCB0cmVlLWxpa2UgZGF0YSAKPj4gc3RydWN0dXJlKSwgT0NMCj4+IGNvbXBp bGVyIGlzIG5vdCBhYmxlIHRvIGRldGVybWluZSBvcmlnaW4gb2YgbWVtb3J5IHBvaW50ZWQgdG8g YnkgYW4gCj4+IGFyYml0cmFyeQo+PiBwb2ludGVyIC0gaS5lLiBpcyBub3QgYWJsZSB0byB0cmFj ayBnaXZlbiBwb2ludGVyIGJhY2sgdG8gYSBzcGVjaWZpYwo+PiBhbGxvY2F0aW9uLiBBcyBzdWNo LCBpdCdzIG5vdCBhYmxlIHRvIGRlY2lkZSB3aGV0aGVyIGNvaGVyZW5jeSBpcyAKPj4gbmVlZGVk IG9yIG5vdAo+PiBmb3Igc3BlY2lmaWMgcG9pbnRlciAob3IgZm9yIHNwZWNpZmljIEkvTyBpbnN0 cnVjdGlvbikuIEFzIGEgcmVzdWx0LCAKPj4gY29tcGlsZXIKPj4gZW5jb2RlcyBhbGwgc3RhdGVs ZXNzIHNlbmRzIGFzIGNvaGVyZW50IChkb2luZyBvdGhlcndpc2Ugd291bGQgbGVhZCB0bwo+PiBm dW5jdGlvbmFsIGlzc3VlcyByZXN1bHRpbmcgZnJvbSBkYXRhIGNvcnJ1cHRpb24pLiBQbGVhc2Ug bm90ZSB0aGF0IAo+PiBpdCB3b3VsZCBiZQo+PiBwb3NzaWJsZSB0byB3b3JrYXJvdW5kIHRoaXMg KGUuZy4gYmFzZWQgb24gYWxsb2NhdGlvbnMgbWFwIGFuZCAKPj4gcG9pbnRlciBib3VuZHMKPj4g Y2hlY2tpbmcgcHJpb3IgdG8gZWFjaCBJL08gaW5zdHJ1Y3Rpb24pIGJ1dCB0aGUgcGVyZm9ybWFu Y2UgY29zdCBvZiBzdWNoCj4+IHdvcmthcm91bmQgd291bGQgYmUgbWFueSB0aW1lcyBncmVhdGVy IHRoYW4gdGhlIGNvc3Qgb2Yga2VlcGluZyAKPj4gY29oZXJlbmN5Cj4+IGFsd2F5cyBlbmFibGVk LiBBcyBzdWNoLCBlbmFibGluZy9kaXNhYmxpbmcgbWVtb3J5IGNvaGVyZW5jeSBhdCBHRU4gCj4+ IElTQSBsZXZlbAo+PiBpcyBub3QgZmVhc2libGUgYW5kIGFsdGVybmF0aXZlIG1ldGhvZCBpcyBu ZWVkZWQuCj4+Cj4+IFN1Y2ggYWx0ZXJuYXRpdmUgc29sdXRpb24gaXMgdG8gaGF2ZSBhIGdsb2Jh bCBjb2hlcmVuY3kgc3dpdGNoIHRoYXQgCj4+IGFsbG93cwo+PiBkaXNhYmxpbmcgY29oZXJlbmN5 IGZvciBzaW5nbGUgKHRob3VnaCBlbnRpcmUpIEdQVSBzdWJtaXNzaW9uLiBUaGlzIGlzCj4+IGJl bmVmaWNpYWwgYmVjYXVzZSB0aGlzIHdheSB3ZToKPj4gKiBjYW4gZW5hYmxlIChhbmQgcGF5IGZv cikgY29oZXJlbmN5IG9ubHkgaW4gc3VibWlzc2lvbnMgdGhhdCAKPj4gYWN0dWFsbHkgbmVlZAo+ PiBjb2hlcmVuY3kgKHN1Ym1pc3Npb25zIHRoYXQgdXNlIENMX01FTV9TVk1fRklORV9HUkFJTl9C VUZGRVIgcmVzb3VyY2VzKQo+PiAqIGRvbid0IGNhcmUgYWJvdXQgY29oZXJlbmN5IGF0IEdFTiBJ U0EgZ3JhbnVsYXJpdHkgKG5vIHBlcmZvcm1hbmNlIAo+PiBpbXBhY3QpCj4+Cj4+IDMuIFdpbGwg Y29oZXJlbmN5IHN3aXRjaCBiZSB1c2VkIGZyZXF1ZW50bHk/Cj4+Cj4+IFRoZXJlIGFyZSBzY2Vu YXJpb3MgdGhhdCB3aWxsIHJlcXVpcmUgZnJlcXVlbnQgdG9nZ2xpbmcgb2YgdGhlIGNvaGVyZW5j eQo+PiBzd2l0Y2guCj4+IEUuZy4gYW4gYXBwbGljYXRpb24gaGFzIHR3byBPQ0wgY29tcHV0ZSBr ZXJuZWxzOiBrZXJuX21hc3RlciBhbmQgCj4+IGtlcm5fd29ya2VyLgo+PiBrZXJuX21hc3RlciB1 c2VzLCBjb25jdXJyZW50bHkgd2l0aCBDUFUsIHNvbWUgZmluZSBncmFpbiBTVk0gcmVzb3VyY2Vz Cj4+IChDTF9NRU1fU1ZNX0ZJTkVfR1JBSU5fQlVGRkVSKS4gVGhlc2UgcmVzb3VyY2VzIGNvbnRh aW4gZGVzY3JpcHRvcnMgb2YKPj4gY29tcHV0YXRpb25hbCB3b3JrIHRoYXQgbmVlZHMgdG8gYmUg ZXhlY3V0ZWQuIGtlcm5fbWFzdGVyIGFuYWx5emVzIAo+PiBpbmNvbWluZwo+PiB3b3JrIGRlc2Ny aXB0b3JzIGFuZCBwb3B1bGF0ZXMgYSBwbGFpbiBPQ0wgYnVmZmVyIChub24tZmluZS1ncmFpbikg Cj4+IHdpdGggcGF5bG9hZAo+PiBmb3Iga2Vybl93b3JrZXIuIE9uY2Uga2Vybl9tYXN0ZXIgaXMg ZG9uZSwga2Vybl93b3JrZXIga2lja3MtaW4gYW5kIAo+PiBwcm9jZXNzZXMKPj4gdGhlIHBheWxv YWQgdGhhdCBrZXJuX21hc3RlciBwcm9kdWNlZC4gVGhlc2UgdHdvIGtlcm5lbHMgd29yayBpbiBh IAo+PiBsb29wLCBvbmUKPj4gYWZ0ZXIgYW5vdGhlci4gU2luY2Ugb25seSBrZXJuX21hc3RlciBy ZXF1aXJlcyBjb2hlcmVuY3ksIGtlcm5fd29ya2VyIAo+PiBzaG91bGQKPj4gbm90IGJlIGZvcmNl ZCB0byBwYXkgZm9yIGl0LiBUaGlzIG1lYW5zIHRoYXQgd2UgbmVlZCB0byBoYXZlIHRoZSAKPj4g YWJpbGl0eSB0bwo+PiB0b2dnbGUgY29oZXJlbmN5IHN3aXRjaCBvbiBvciBvZmYgcGVyIGVhY2gg R1BVIHN1Ym1pc3Npb246Cj4+IChFTkFCTEUgQ09IRVJFTkNZKSBrZXJuX21hc3RlciAtPiAoRElT QUJMRSBDT0hFUkVOQ1kpa2Vybl93b3JrZXIgLT4gCj4+IChFTkFCTEUKPj4gQ09IRVJFTkNZKSBr ZXJuX21hc3RlciAtPiAoRElTQUJMRSBDT0hFUkVOQ1kpa2Vybl93b3JrZXIgLT4gLi4uCj4+Cj4+ IHYyOiBGaXhlZCBjb21waWxhdGlvbiB3YXJuaW5nLgo+PiB2MzogUmVmYWN0b3JlZCB0aGUgcGF0 Y2ggdG8gYWRkIElPQ1RMIGluc3RlYWQgb2YgZXhlYyBmbGFnLgo+PiB2NDogUmVuYW1lZCBhbmQg ZG9jdW1lbnRlZCB0aGUgQVBJIGZsYWcuIFVzZWQgc3RyaWN0IHZhbHVlcy4KPj4gwqDCoMKgwqAg UmVtb3ZlZCByZWR1bmRhbnQgR0VNX1dBUk5fT04oKXMuIEltcHJvdmVkIHRvIGNvZGluZyBzdGFu ZGFyZC4KPj4gwqDCoMKgwqAgSW50cm9kdWNlZCBhIG1hY3JvIGZvciBjaGVja2luZyB3aGV0aGVy IGhhcmR3YXJlIHN1cHBvcnRzIHRoZSAKPj4gZmVhdHVyZS4KPj4gdjU6IFJlbmFtZWQgc29tZSBs b2NhbHMuIE1hZGUgdGhlIGZsYWcgd3JpdGUgdG8gYmUgbGF6eS4KPj4gwqDCoMKgwqAgVXBkYXRl ZCBjb21tZW50cyB0byByZW1vdmUgbWlzY29uY2VwdGlvbnMuIEFkZGVkIGdlbjExIHN1cHBvcnQu Cj4+Cj4+IENjOiBKb29uYXMgTGFodGluZW4gPGpvb25hcy5sYWh0aW5lbkBsaW51eC5pbnRlbC5j b20+Cj4+IENjOiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgo+PiBD YzogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4+IENjOiBNaWNoYWwg V2luaWFyc2tpIDxtaWNoYWwud2luaWFyc2tpQGludGVsLmNvbT4KPj4KPj4gQnNwZWM6IDExNDE5 Cj4+IEJzcGVjOiAxOTE3NQo+PiBTaWduZWQtb2ZmLWJ5OiBUb21hc3ogTGlzIDx0b21hc3oubGlz QGludGVsLmNvbT4KPj4gLS0tCj4+IMKgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmjC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoCAxICsKPj4gwqAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fY29udGV4dC5jwqDCoMKgIHwgMjkgKysrKysrKysrKysrKy0tLQo+PiDCoCBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmjCoMKgwqAgfCAxNyArKysrKysrKysK Pj4gwqAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jIHzCoCA2ICsr KysKPj4gwqAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmPCoMKgwqDCoMKgwqDCoMKg wqDCoCB8IDU1IAo+PiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPj4gwqAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmjCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqAgNCArKysK Pj4gwqAgaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5owqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHzCoCA3ICsrKysKPj4gwqAgNyBmaWxlcyBjaGFuZ2VkLCAxMTUgaW5zZXJ0aW9ucygr KSwgNCBkZWxldGlvbnMoLSkKPj4KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmggCj4+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+PiBpbmRl eCAwMWRkMjk4Li43MzE5MmUxIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5oCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPj4gQEAg LTI1MjQsNiArMjUyNCw3IEBAIGludGVsX2luZm8oY29uc3Qgc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgCj4+ICpkZXZfcHJpdikKPj4gwqAgI2RlZmluZSBIQVNfRURSQU0oZGV2X3ByaXYpwqDCoMKg ICghISgoZGV2X3ByaXYpLT5lZHJhbV9jYXAgJiAKPj4gRURSQU1fRU5BQkxFRCkpCj4+IMKgICNk ZWZpbmUgSEFTX1dUKGRldl9wcml2KcKgwqDCoCAoKElTX0hBU1dFTEwoZGV2X3ByaXYpIHx8IFwK Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIElTX0JST0FEV0VMTChkZXZf cHJpdikpICYmIEhBU19FRFJBTShkZXZfcHJpdikpCj4+ICsjZGVmaW5lIEhBU19EQVRBX1BPUlRf Q09IRVJFTkNZKGRldl9wcml2KSAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KQo+PiDCoCDCoCAj ZGVmaW5lIEhXU19ORUVEU19QSFlTSUNBTChkZXZfcHJpdikgCj4+ICgoZGV2X3ByaXYpLT5pbmZv Lmh3c19uZWVkc19waHlzaWNhbCkKPj4gwqAgZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX2NvbnRleHQuYyAKPj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9jb250ZXh0LmMKPj4gaW5kZXggYjEwNzcwYy4uYjViNjNhYyAxMDA2NDQKPj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYwo+PiBAQCAtNzg0LDYgKzc4NCw3IEBAIGludCBp OTE1X2dlbV9jb250ZXh0X2Rlc3Ryb3lfaW9jdGwoc3RydWN0IAo+PiBkcm1fZGV2aWNlICpkZXYs IHZvaWQgKmRhdGEsCj4+IMKgIGludCBpOTE1X2dlbV9jb250ZXh0X2dldHBhcmFtX2lvY3RsKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgCj4+ICpkYXRhLAo+PiDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGRybV9maWxlICpmaWxlKQo+PiDCoCB7 Cj4+ICvCoMKgwqAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSB0b19pOTE1KGRldik7 Cj4+IMKgwqDCoMKgwqAgc3RydWN0IGRybV9pOTE1X2ZpbGVfcHJpdmF0ZSAqZmlsZV9wcml2ID0g ZmlsZS0+ZHJpdmVyX3ByaXY7Cj4+IMKgwqDCoMKgwqAgc3RydWN0IGRybV9pOTE1X2dlbV9jb250 ZXh0X3BhcmFtICphcmdzID0gZGF0YTsKPj4gwqDCoMKgwqDCoCBzdHJ1Y3QgaTkxNV9nZW1fY29u dGV4dCAqY3R4Owo+PiBAQCAtODA0LDEwICs4MDUsMTAgQEAgaW50IGk5MTVfZ2VtX2NvbnRleHRf Z2V0cGFyYW1faW9jdGwoc3RydWN0IAo+PiBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4+ IMKgwqDCoMKgwqAgY2FzZSBJOTE1X0NPTlRFWFRfUEFSQU1fR1RUX1NJWkU6Cj4+IMKgwqDCoMKg wqDCoMKgwqDCoCBpZiAoY3R4LT5wcGd0dCkKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg YXJncy0+dmFsdWUgPSBjdHgtPnBwZ3R0LT52bS50b3RhbDsKPj4gLcKgwqDCoMKgwqDCoMKgIGVs c2UgaWYgKHRvX2k5MTUoZGV2KS0+bW0uYWxpYXNpbmdfcHBndHQpCj4+IC3CoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGFyZ3MtPnZhbHVlID0gdG9faTkxNShkZXYpLT5tbS5hbGlhc2luZ19wcGd0dC0+ dm0udG90YWw7Cj4+ICvCoMKgwqDCoMKgwqDCoCBlbHNlIGlmIChpOTE1LT5tbS5hbGlhc2luZ19w cGd0dCkKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYXJncy0+dmFsdWUgPSBpOTE1LT5tbS5h bGlhc2luZ19wcGd0dC0+dm0udG90YWw7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBlbHNlCj4+IC3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGFyZ3MtPnZhbHVlID0gdG9faTkxNShkZXYpLT5nZ3R0LnZt LnRvdGFsOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBhcmdzLT52YWx1ZSA9IGk5MTUtPmdn dHQudm0udG90YWw7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsKPj4gwqDCoMKgwqDCoCBj YXNlIEk5MTVfQ09OVEVYVF9QQVJBTV9OT19FUlJPUl9DQVBUVVJFOgo+PiDCoMKgwqDCoMKgwqDC oMKgwqAgYXJncy0+dmFsdWUgPSBpOTE1X2dlbV9jb250ZXh0X25vX2Vycm9yX2NhcHR1cmUoY3R4 KTsKPj4gQEAgLTgxOCw2ICs4MTksMTIgQEAgaW50IGk5MTVfZ2VtX2NvbnRleHRfZ2V0cGFyYW1f aW9jdGwoc3RydWN0IAo+PiBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4+IMKgwqDCoMKg wqAgY2FzZSBJOTE1X0NPTlRFWFRfUEFSQU1fUFJJT1JJVFk6Cj4+IMKgwqDCoMKgwqDCoMKgwqDC oCBhcmdzLT52YWx1ZSA9IGN0eC0+c2NoZWQucHJpb3JpdHk7Cj4+IMKgwqDCoMKgwqDCoMKgwqDC oCBicmVhazsKPj4gK8KgwqDCoCBjYXNlIEk5MTVfQ09OVEVYVF9QQVJBTV9EQVRBX1BPUlRfQ09I RVJFTkNZOgo+PiArwqDCoMKgwqDCoMKgwqAgaWYgKCFIQVNfREFUQV9QT1JUX0NPSEVSRU5DWShp OTE1KSkKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0ID0gLUVOT0RFVjsKPj4gK8KgwqDC oMKgwqDCoMKgIGVsc2UKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYXJncy0+dmFsdWUgPSAK Pj4gaTkxNV9nZW1fY29udGV4dF9pc19kYXRhX3BvcnRfY29oZXJlbnRfcmVxdWVzdGVkKGN0eCk7 Cj4KPiBGZWVscyBhIGJpdCBsaWtlIG92ZXJseSBsb25nIG5hbWUgc28gbWF5YmUgZHJvcCB0aGUg X3JlcXVlc3RlZCBzdWZmaXggCj4gYnV0IGEgc3VnZ2VzdGlvbiBvbmx5LgpJIHdhcyBjb25zaWRl cmluZyB0aGlzIGFzIHdlbGw7IHdpbGwgZG8uCj4KPj4gK8KgwqDCoMKgwqDCoMKgIGJyZWFrOwo+ PiDCoMKgwqDCoMKgIGRlZmF1bHQ6Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCByZXQgPSAtRUlOVkFM Owo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgYnJlYWs7Cj4+IEBAIC04MzAsNiArODM3LDcgQEAgaW50 IGk5MTVfZ2VtX2NvbnRleHRfZ2V0cGFyYW1faW9jdGwoc3RydWN0IAo+PiBkcm1fZGV2aWNlICpk ZXYsIHZvaWQgKmRhdGEsCj4+IMKgIGludCBpOTE1X2dlbV9jb250ZXh0X3NldHBhcmFtX2lvY3Rs KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgCj4+ICpkYXRhLAo+PiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGRybV9maWxlICpmaWxlKQo+PiDC oCB7Cj4+ICvCoMKgwqAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSB0b19pOTE1KGRl dik7Cj4+IMKgwqDCoMKgwqAgc3RydWN0IGRybV9pOTE1X2ZpbGVfcHJpdmF0ZSAqZmlsZV9wcml2 ID0gZmlsZS0+ZHJpdmVyX3ByaXY7Cj4+IMKgwqDCoMKgwqAgc3RydWN0IGRybV9pOTE1X2dlbV9j b250ZXh0X3BhcmFtICphcmdzID0gZGF0YTsKPj4gwqDCoMKgwqDCoCBzdHJ1Y3QgaTkxNV9nZW1f Y29udGV4dCAqY3R4Owo+PiBAQCAtODgwLDcgKzg4OCw3IEBAIGludCBpOTE1X2dlbV9jb250ZXh0 X3NldHBhcmFtX2lvY3RsKHN0cnVjdCAKPj4gZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+ PiDCoCDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoYXJncy0+c2l6ZSkKPj4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXQgPSAtRUlOVkFMOwo+PiAtwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBlbHNlIGlmICghKHRvX2k5MTUoZGV2KS0+Y2Fwcy5zY2hlZHVsZXIgJiAK Pj4gSTkxNV9TQ0hFRFVMRVJfQ0FQX1BSSU9SSVRZKSkKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqAgZWxzZSBpZiAoIShpOTE1LT5jYXBzLnNjaGVkdWxlciAmIAo+PiBJOTE1X1NDSEVEVUxFUl9D QVBfUFJJT1JJVFkpKQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldCA9 IC1FTk9ERVY7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGVsc2UgaWYgKHByaW9yaXR5 ID4gSTkxNV9DT05URVhUX01BWF9VU0VSX1BSSU9SSVRZIHx8Cj4+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBwcmlvcml0eSA8IEk5MTVfQ09OVEVYVF9NSU5fVVNFUl9QUklP UklUWSkKPj4gQEAgLTg5Myw2ICs5MDEsMTkgQEAgaW50IGk5MTVfZ2VtX2NvbnRleHRfc2V0cGFy YW1faW9jdGwoc3RydWN0IAo+PiBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4+IMKgwqDC oMKgwqDCoMKgwqDCoCB9Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsKPj4gwqAgK8KgwqDC oCBjYXNlIEk5MTVfQ09OVEVYVF9QQVJBTV9EQVRBX1BPUlRfQ09IRVJFTkNZOgo+PiArwqDCoMKg wqDCoMKgwqAgaWYgKGFyZ3MtPnNpemUpCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldCA9 IC1FSU5WQUw7Cj4+ICvCoMKgwqDCoMKgwqDCoCBlbHNlIGlmICghSEFTX0RBVEFfUE9SVF9DT0hF UkVOQ1koaTkxNSkpCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldCA9IC1FTk9ERVY7Cj4+ ICvCoMKgwqDCoMKgwqDCoCBlbHNlIGlmIChhcmdzLT52YWx1ZSA9PSAxKQo+PiArIGk5MTVfZ2Vt X2NvbnRleHRfc2V0X2RhdGFfcG9ydF9jb2hlcmVudF9yZXF1ZXN0ZWQoY3R4KTsKPj4gK8KgwqDC oMKgwqDCoMKgIGVsc2UgaWYgKGFyZ3MtPnZhbHVlID09IDApCj4+ICsgaTkxNV9nZW1fY29udGV4 dF9jbGVhcl9kYXRhX3BvcnRfY29oZXJlbnRfcmVxdWVzdGVkKGN0eCk7Cj4+ICvCoMKgwqDCoMKg wqDCoCBlbHNlCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldCA9IC1FSU5WQUw7Cj4+ICvC oMKgwqDCoMKgwqDCoCBicmVhazsKPj4gKwo+PiDCoMKgwqDCoMKgIGRlZmF1bHQ6Cj4+IMKgwqDC oMKgwqDCoMKgwqDCoCByZXQgPSAtRUlOVkFMOwo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgYnJlYWs7 Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0Lmgg Cj4+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5oCj4+IGluZGV4IGIx MTZlNDkuLjgyNmFmODQgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtX2NvbnRleHQuaAo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250 ZXh0LmgKPj4gQEAgLTEyNiw2ICsxMjYsOCBAQCBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCB7Cj4+ IMKgICNkZWZpbmUgQ09OVEVYVF9CQU5OQUJMRcKgwqDCoMKgwqDCoMKgIDMKPj4gwqAgI2RlZmlu ZSBDT05URVhUX0JBTk5FRMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgNAo+PiDCoCAjZGVmaW5lIENP TlRFWFRfRk9SQ0VfU0lOR0xFX1NVQk1JU1NJT07CoMKgwqAgNQo+PiArI2RlZmluZSBDT05URVhU X0RBVEFfUE9SVF9DT0hFUkVOVF9SRVFVRVNURUTCoMKgwqAgNgo+PiArI2RlZmluZSBDT05URVhU X0RBVEFfUE9SVF9DT0hFUkVOVF9BQ1RJVkXCoMKgwqAgNwo+PiDCoCDCoMKgwqDCoMKgIC8qKgo+ PiDCoMKgwqDCoMKgwqAgKiBAaHdfaWQ6IC0gdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBjb250 ZXh0Cj4+IEBAIC0yNTcsNiArMjU5LDIxIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCAKPj4gaTkxNV9n ZW1fY29udGV4dF9zZXRfZm9yY2Vfc2luZ2xlX3N1Ym1pc3Npb24oc3RydWN0IGk5MTVfZ2VtXwo+ PiDCoMKgwqDCoMKgIF9fc2V0X2JpdChDT05URVhUX0ZPUkNFX1NJTkdMRV9TVUJNSVNTSU9OLCAm Y3R4LT5mbGFncyk7Cj4+IMKgIH0KPj4gwqAgK3N0YXRpYyBpbmxpbmUgYm9vbCAKPj4gaTkxNV9n ZW1fY29udGV4dF9pc19kYXRhX3BvcnRfY29oZXJlbnRfcmVxdWVzdGVkKHN0cnVjdCAKPj4gaTkx NV9nZW1fY29udGV4dCAqY3R4KQo+PiArewo+PiArwqDCoMKgIHJldHVybiB0ZXN0X2JpdChDT05U RVhUX0RBVEFfUE9SVF9DT0hFUkVOVF9SRVFVRVNURUQsICZjdHgtPmZsYWdzKTsKPj4gK30KPj4g Kwo+PiArc3RhdGljIGlubGluZSB2b2lkIAo+PiBpOTE1X2dlbV9jb250ZXh0X3NldF9kYXRhX3Bv cnRfY29oZXJlbnRfcmVxdWVzdGVkKHN0cnVjdCAKPj4gaTkxNV9nZW1fY29udGV4dCAqY3R4KQo+ PiArewo+PiArwqDCoMKgIF9fc2V0X2JpdChDT05URVhUX0RBVEFfUE9SVF9DT0hFUkVOVF9SRVFV RVNURUQsICZjdHgtPmZsYWdzKTsKPj4gK30KPj4gKwo+PiArc3RhdGljIGlubGluZSB2b2lkIAo+ PiBpOTE1X2dlbV9jb250ZXh0X2NsZWFyX2RhdGFfcG9ydF9jb2hlcmVudF9yZXF1ZXN0ZWQoc3Ry dWN0IAo+PiBpOTE1X2dlbV9jb250ZXh0ICpjdHgpCj4+ICt7Cj4+ICvCoMKgwqAgX19jbGVhcl9i aXQoQ09OVEVYVF9EQVRBX1BPUlRfQ09IRVJFTlRfUkVRVUVTVEVELCAmY3R4LT5mbGFncyk7Cj4+ ICt9Cj4+ICsKPj4gwqAgc3RhdGljIGlubGluZSBib29sIGk5MTVfZ2VtX2NvbnRleHRfaXNfZGVm YXVsdChjb25zdCBzdHJ1Y3QgCj4+IGk5MTVfZ2VtX2NvbnRleHQgKmMpCj4+IMKgIHsKPj4gwqDC oMKgwqDCoCByZXR1cm4gYy0+dXNlcl9oYW5kbGUgPT0gREVGQVVMVF9DT05URVhUX0hBTkRMRTsK Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIu YyAKPj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMKPj4gaW5k ZXggM2YwYzYxMi4uNjRhN2NkNCAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fZXhlY2J1ZmZlci5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtX2V4ZWNidWZmZXIuYwo+PiBAQCAtMjM2MSw2ICsyMzYxLDEyIEBAIGk5MTVfZ2VtX2RvX2V4 ZWNidWZmZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIGdv dG8gZXJyX2JhdGNoX3VucGluOwo+PiDCoMKgwqDCoMKgIH0KPj4gwqAgK8KgwqDCoCAvKiBFbWl0 IHRoZSBzd2l0Y2ggb2YgZGF0YSBwb3J0IGNvaGVyZW5jeSBzdGF0ZSBpZiBuZWVkZWQgKi8KPj4g K8KgwqDCoCBlcnIgPSBpbnRlbF9scl9jb250ZXh0X21vZGlmeV9kYXRhX3BvcnRfY29oZXJlbmN5 KGViLnJlcXVlc3QsCj4+ICsgaTkxNV9nZW1fY29udGV4dF9pc19kYXRhX3BvcnRfY29oZXJlbnRf cmVxdWVzdGVkKGViLmN0eCkpOwo+PiArwqDCoMKgIGlmIChHRU1fV0FSTl9PTihlcnIpKQo+PiAr wqDCoMKgwqDCoMKgwqAgRFJNX0RFQlVHKCJEYXRhIFBvcnQgQ29oZXJlbmN5IHRvZ2dsZSBmYWls ZWQsIGtlZXBpbmcgb2xkIAo+PiBzZXR0aW5nLlxuIik7Cj4KPiBJIHRoaW5rIHdlIHNob3VsZCBw cm9wYWdhdGUgdGhlIGVycm9yIHRvIHVzZXJzcGFjZSBoZXJlLiBCeSB0aGUgdmlydHVlIAo+IG9m IE1JTl9TUEFDRV9GT1JfQUREX1JFUVVFU1QqIHdlIGd1YXJhbnRlZSB0aGVyZSBtdXN0IGJlIHNw YWNlIGZvciAKPiByZXF1ZXN0IGVtaXNzaW9uLgo+Cj4gR0VNX1dBUk5fT04gaXMgdGhlcmVmb3Jl IG9rYXkgdG8gbGV0IHVzIGtub3cgd2UgZ290IHRoZSB2YWx1ZSBvZiAKPiBNSU5fU1BBQ0VfRk9S X0FERF9SRVFVRVNUIHdyb25nLiBKdXN0IHJlbW92ZSB0aGUgImtlZXBpbmcgb2xkIHNldHRpbmci IAo+IGZyb20gdGhlIGRlYnVnIG1lc3NhZ2UuCmFjawo+Cj4gKiBIYXZpbmcgbG9va2VkIGF0IHRo ZSBjb21taXQgd2hpY2ggbGFzdCBpbmNyZWFzZWQgCj4gTUlOX1NQQUNFX0ZPUl9BRERfUkVRVUVT VCBJIHN1c3BlY3QgdGhlIGN1cnJlbnQgdmFsdWUgaXMgbGFyZ2UgZW5vdWdoIAo+IGZvciB0aGlz IGFkZGl0aW9uIGFuZCB0aGF0IHdlIGNvdWxkIHByb2JhYmx5IGxvb2sgYXQgZGVjcmVhc2luZyBp dC4gSXQgCj4gaXMgYSBtYW51YWwgcHJvY2VzcyB0aG91Z2ggc28gbm90IHN0cmFpZ2h0Zm9yd2Fy ZC4KPgo+IEJ1dCBhbHNvIHNpbmNlIHRoaXMgaXMgPj0gR0VOOSBjb2RlIEkgdGhpbmsgaXQgbmVl ZHMgdG8gYmUgZG9uZSAKPiBkZWVwZXIuIExpa2UgaW4gdGhlIGJhY2tlbmQgbGF5ZXIgc291bmRz IHJpZ2h0IHRvIG1lLgo+Cj4gTWF5YmUgaW50ZWxfbHJjLmMvZ2VuOF9lbWl0X2ZsdXNoX3JlbmRl ciBpbiB0aGUgRU1JVF9JTlZBTElEQVRFIG1vZGU/IAo+IFRoYXQgaXMgdGhlIHJlcXVlc3QgcHJl YW1ibGUgZGVhbGluZyB3aXRoIGludmFsaWRhdGluZyBjYWNoZXMgc28gCj4gbW9kaWZ5aW5nIGNh Y2hlIGNvaGVyZW5jeSBtb2RlIHRoZXJlIGFzIHdlbGwgc291bmRzIGxpa2UgYSBmaXQgdG8gbWUu Cj4KQWdyZWVkLiBXaWxsIG1vdmUuCj4+ICsKPj4gwqDCoMKgwqDCoCBpZiAoaW5fZmVuY2UpIHsK Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIGVyciA9IGk5MTVfcmVxdWVzdF9hd2FpdF9kbWFfZmVuY2Uo ZWIucmVxdWVzdCwgaW5fZmVuY2UpOwo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKGVyciA8IDAp Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyAKPj4gYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+PiBpbmRleCAzNWQzN2FmLi5mY2VlMDNk IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+PiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+PiBAQCAtMjU5LDYgKzI1OSw2MSBA QCBpbnRlbF9scl9jb250ZXh0X2Rlc2NyaXB0b3JfdXBkYXRlKHN0cnVjdCAKPj4gaTkxNV9nZW1f Y29udGV4dCAqY3R4LAo+PiDCoMKgwqDCoMKgIGNlLT5scmNfZGVzYyA9IGRlc2M7Cj4+IMKgIH0K Pj4gwqAgK3N0YXRpYyBpbnQgZW1pdF9zZXRfZGF0YV9wb3J0X2NvaGVyZW5jeShzdHJ1Y3QgaTkx NV9yZXF1ZXN0ICpycSwgCj4+IGJvb2wgZW5hYmxlKQo+PiArewo+PiArwqDCoMKgIHUzMiAqY3M7 Cj4+ICvCoMKgwqAgaTkxNV9yZWdfdCByZWc7Cj4+ICsKPj4gK8KgwqDCoCBHRU1fQlVHX09OKHJx LT5lbmdpbmUtPmNsYXNzICE9IFJFTkRFUl9DTEFTUyk7Cj4+ICvCoMKgwqAgR0VNX0JVR19PTihJ TlRFTF9HRU4ocnEtPmk5MTUpIDwgOSk7Cj4+ICsKPj4gK8KgwqDCoCBjcyA9IGludGVsX3Jpbmdf YmVnaW4ocnEsIDQpOwo+PiArwqDCoMKgIGlmIChJU19FUlIoY3MpKQo+PiArwqDCoMKgwqDCoMKg wqAgcmV0dXJuIFBUUl9FUlIoY3MpOwo+PiArCj4+ICvCoMKgwqAgaWYgKElOVEVMX0dFTihycS0+ aTkxNSkgPj0gMTEpCj4+ICvCoMKgwqDCoMKgwqDCoCByZWcgPSBJQ0xfSERDX01PREU7Cj4+ICvC oMKgwqAgZWxzZSBpZiAoSU5URUxfR0VOKHJxLT5pOTE1KSA+PSAxMCkKPj4gK8KgwqDCoMKgwqDC oMKgIHJlZyA9IENOTF9IRENfQ0hJQ0tFTjA7Cj4+ICvCoMKgwqAgZWxzZQo+PiArwqDCoMKgwqDC oMKgwqAgcmVnID0gSERDX0NISUNLRU4wOwo+PiArCj4+ICvCoMKgwqAgKmNzKysgPSBNSV9MT0FE X1JFR0lTVEVSX0lNTSgxKTsKPj4gK8KgwqDCoCAqY3MrKyA9IGk5MTVfbW1pb19yZWdfb2Zmc2V0 KHJlZyk7Cj4+ICvCoMKgwqAgLyogRW5hYmxpbmcgY29oZXJlbmN5IG1lYW5zIGRpc2FibGluZyB0 aGUgYml0IHdoaWNoIGZvcmNlcyBpdCAKPj4gb2ZmICovCj4+ICvCoMKgwqAgaWYgKGVuYWJsZSkK Pj4gK8KgwqDCoMKgwqDCoMKgICpjcysrID0gX01BU0tFRF9CSVRfRElTQUJMRShIRENfRk9SQ0Vf Tk9OX0NPSEVSRU5UKTsKPj4gK8KgwqDCoCBlbHNlCj4+ICvCoMKgwqDCoMKgwqDCoCAqY3MrKyA9 IF9NQVNLRURfQklUX0VOQUJMRShIRENfRk9SQ0VfTk9OX0NPSEVSRU5UKTsKPj4gK8KgwqDCoCAq Y3MrKyA9IE1JX05PT1A7Cj4+ICsKPj4gK8KgwqDCoCBpbnRlbF9yaW5nX2FkdmFuY2UocnEsIGNz KTsKPj4gKwo+PiArwqDCoMKgIHJldHVybiAwOwo+PiArfQo+PiArCj4+ICtpbnQKPj4gK2ludGVs X2xyX2NvbnRleHRfbW9kaWZ5X2RhdGFfcG9ydF9jb2hlcmVuY3koc3RydWN0IGk5MTVfcmVxdWVz dCAqcnEsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGJvb2wgZW5hYmxlKQo+PiArewo+PiArwqDCoMKgIHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpj dHggPSBycS0+Z2VtX2NvbnRleHQ7Cj4+ICvCoMKgwqAgaW50IHJldDsKPj4gKwo+Cj4gSSdkIHB1 dCBhIGxvY2tkZXBfYXNzZXJ0X2hlbGQgb24gc3RydWN0X211dGV4IGhlcmUgdG8gbWFyayBpdCB1 cCBmb3IgCj4gdGhlIGZ1dHVyZS4Kb2ssIHdpbGwgZG8uCj4KPj4gK8KgwqDCoCBpZiAodGVzdF9i aXQoQ09OVEVYVF9EQVRBX1BPUlRfQ09IRVJFTlRfQUNUSVZFLCAmY3R4LT5mbGFncykgPT0gCj4+ IGVuYWJsZSkKPgo+IFlvdSBkb24ndCBuZWVkIHRvIHBhc3MgaW4gZW5hYmxlIHRvIHRoaXMgZnVu Y3Rpb24gc2luY2UgaXQgY2FuIGZpZ3VyZSAKPiBvdXQgd2hhdCB0byBkbyBmcm9tIHRoZSBmbGFn cyBvbiBpdHMgb3duOgo+Cj4gwqDCoMKgwqBpZiAoKGN0eC0+ZmxhZ3MgJiBSRVFVRVNURUQpID09 IChjdHgtPmZsYWdzICYgQUNUSVZFKSkKPiDCoMKgwqDCoMKgwqDCoCByZXR1cm4gMDsKPgo+IEFm dGVyIHdoaWNoIGZ1bmN0aW9ucyBzaG91bGQgcHJvYWJibHkgYmUgcmVuYW1lZCB0byAKPiBpbnRl bF9scl9jb250ZXh0X3VwZGF0ZV9kYXRhX3BvcnRfY29oZXJlbmN5Pwo+CmFjawo+PiArwqDCoMKg wqDCoMKgwqAgcmV0dXJuIDA7Cj4+ICsKPj4gK8KgwqDCoCByZXQgPSBlbWl0X3NldF9kYXRhX3Bv cnRfY29oZXJlbmN5KHJxLCBlbmFibGUpOwo+Cj4gQW5kIHRoZW46Cj4KPiDCoMKgwqDCoC4uKHJx LCBjdHgtPmZsYWdzICYgUkVRVUVTVEVEKQpvaywgSSB3aWxsIHVzZSBhIGxvY2FsIHRob3VnaC4K Pgo+PiArCj4+ICvCoMKgwqAgaWYgKCFyZXQpIHsKPj4gK8KgwqDCoMKgwqDCoMKgIGlmIChlbmFi bGUpCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIF9fc2V0X2JpdChDT05URVhUX0RBVEFfUE9S VF9DT0hFUkVOVF9BQ1RJVkUsICZjdHgtPmZsYWdzKTsKPj4gK8KgwqDCoMKgwqDCoMKgIGVsc2UK Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgX19jbGVhcl9iaXQoQ09OVEVYVF9EQVRBX1BPUlRf Q09IRVJFTlRfQUNUSVZFLCAKPj4gJmN0eC0+ZmxhZ3MpOwo+PiArwqDCoMKgIH0KPj4gKwo+PiAr wqDCoMKgwqDCoMKgIHJldHVybiByZXQ7Cj4+ICt9Cj4+ICsKPj4gwqAgc3RhdGljIHN0cnVjdCBp OTE1X3ByaW9saXN0ICoKPj4gwqAgbG9va3VwX3ByaW9saXN0KHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSwgaW50IHByaW8pCj4+IMKgIHsKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2xyYy5oIAo+PiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xy Yy5oCj4+IGluZGV4IDE1OTMxOTQuLjIwZTg2NjQgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2xyYy5oCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2xyYy5oCj4+IEBAIC0xMDQsNCArMTA0LDggQEAgc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQ7Cj4+ IMKgIMKgIHZvaWQgaW50ZWxfbHJfY29udGV4dF9yZXN1bWUoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KTsKPj4gwqAgK2ludAo+PiAraW50ZWxfbHJfY29udGV4dF9tb2RpZnlfZGF0 YV9wb3J0X2NvaGVyZW5jeShzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwKPj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYm9vbCBlbmFibGUpOwo+PiArCj4+ IMKgICNlbmRpZiAvKiBfSU5URUxfTFJDX0hfICovCj4+IGRpZmYgLS1naXQgYS9pbmNsdWRlL3Vh cGkvZHJtL2k5MTVfZHJtLmggYi9pbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmgKPj4gaW5kZXgg N2Y1NjM0Yy4uMGE0ZTMxZiAxMDA2NDQKPj4gLS0tIGEvaW5jbHVkZS91YXBpL2RybS9pOTE1X2Ry bS5oCj4+ICsrKyBiL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaAo+PiBAQCAtMTQ1Niw2ICsx NDU2LDEzIEBAIHN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbSB7Cj4+IMKgICNkZWZp bmXCoMKgIEk5MTVfQ09OVEVYVF9NQVhfVVNFUl9QUklPUklUWcKgwqDCoCAxMDIzIC8qIGluY2x1 c2l2ZSAqLwo+PiDCoCAjZGVmaW5lwqDCoCBJOTE1X0NPTlRFWFRfREVGQVVMVF9QUklPUklUWcKg wqDCoMKgwqDCoMKgIDAKPj4gwqAgI2RlZmluZcKgwqAgSTkxNV9DT05URVhUX01JTl9VU0VSX1BS SU9SSVRZwqDCoMKgIC0xMDIzIC8qIGluY2x1c2l2ZSAqLwo+PiArLyoKPj4gKyAqIFdoZW4gZGF0 YSBwb3J0IGxldmVsIGNvaGVyZW5jeSBpcyBlbmFibGVkLCB0aGUgR1BVIHdpbGwgdXBkYXRlIAo+ PiBtZW1vcnkKPj4gKyAqIGJ1ZmZlcnMgc2hhcmVkIHdpdGggQ1BVLCBieSBmb3JjaW5nIGludGVy bmFsIGNhY2hlIHVuaXRzIHRvIHNlbmQgCj4+IG1lbW9yeQo+PiArICogd3JpdGVzIHRvIGhpZ2hl ciBsZXZlbCBjYWNoZXMgZmFzdGVyLiBFbmFibGluZyBkYXRhIHBvcnQgCj4+IGNvaGVyZW5jeSBo YXMKPj4gKyAqIHBlcmZvcm1hbmNlIGNvc3QuCj4KPiAiaGFzIF9hXyBwZXJmb3JtYW5jZSBjb3N0 IiBJIHRoaW5rIGJ1dCBub3QgYSBuYXRpdmUgc3BlYWtlciBzbyBtaWdodCAKPiBiZSB3cm9uZy4K QWdyZWVkLgpXaWxsIHNlbmQgdGhlIHVwZGF0ZSBhcyBzb29uIGFzIGl0J3MgdGVzdGVkLgo+Cj4+ ICsgKi8KPj4gKyNkZWZpbmUgSTkxNV9DT05URVhUX1BBUkFNX0RBVEFfUE9SVF9DT0hFUkVOQ1nC oMKgwqAgMHg3Cj4+IMKgwqDCoMKgwqAgX191NjQgdmFsdWU7Cj4+IMKgIH07Cj4+Cj4KPiBSZWdh cmRzLAo+Cj4gVHZydGtvCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRl bC1nZngK