From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sean Paul Subject: Re: [DPU PATCH] drm/msm: Remove dpu_edid_parser Date: Mon, 12 Mar 2018 16:11:07 -0400 Message-ID: <20180312201107.GX223881@art_vandelay> References: <20180223191515.155783-1-seanpaul@chromium.org> <20180223215141.GQ223881@art_vandelay> <0569f6fdbf932942defa603f09867c50@codeaurora.org> <20180226153642.GT223881@art_vandelay> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: abhinavk-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org Cc: linux-arm-msm , Jeykumar Sankaran , Rob Clark , nganji-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org, Sean Paul , "Kristian H. Kristensen" , freedreno , linux-arm-msm-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org List-Id: linux-arm-msm@vger.kernel.org T24gTW9uLCBGZWIgMjYsIDIwMTggYXQgMDI6MjM6NDBQTSAtMDgwMCwgYWJoaW5hdmtAY29kZWF1 cm9yYS5vcmcgd3JvdGU6Cj4gT24gMjAxOC0wMi0yNiAwNzozNiwgU2VhbiBQYXVsIHdyb3RlOgo+ ID4gT24gRnJpLCBGZWIgMjMsIDIwMTggYXQgMDU6NDg6NDhQTSAtMDUwMCwgUm9iIENsYXJrIHdy b3RlOgo+ID4gPiBPbiBGcmksIEZlYiAyMywgMjAxOCBhdCA1OjMxIFBNLCAgPGFiaGluYXZrQGNv ZGVhdXJvcmEub3JnPiB3cm90ZToKPiA+ID4gPiBUaGUgYml0bWFwcyBpbiBkcm1faGRtaV9pbmZv IGRvbnQgc2VlbSB0byBiZSBleHBvc2VkIHRvIHVzZXJzcGFjZS4KPiA+ID4gPgo+ID4gPiA+IE91 ciBtb2RlIHNlbGVjdGlvbiBsb2dpYyBpcyBpbiB1c2Vyc3BhY2UgYXQgdGhlIG1vbWVudCB3aGlj aCBtZWFucyBpdHMKPiA+ID4gPiBiZXR0ZXIgdXNlcnNwYWNlIGtub3dzIHdoaWNoIG1vZGVzIHN1 cHBvcnQgd2hhdC4KPiA+ID4gPgo+ID4gPiA+IElmIHdlIGRlY2lkZSB0byBtb3ZlIG1vZGUgdmFs aWRhdGlvbiBlbnRpcmVseSB0byB0aGUgZHJpdmVyLCB3ZSBjYW4gdXNlCj4gPiA+ID4gdGhlc2Ug Yml0bWFwcyB0byB2YWxpZGF0ZS4KPiA+ID4gPgo+ID4gPiA+IEJ1dCB0aGlzIGlzIGFnYWluIGEg ZnVuZGFtZW50YWwgcXVlc3Rpb24gdGhlbi4KPiA+ID4gPgo+ID4gPiA+IElzIHRoZXJlIG5vIHVz ZS1jYXNlIHNvIGZhciB3aGVyZSB1c2Vyc3BhY2UgaGFzIGhhZCB0byBrbm93IHdoaWNoIG1vZGVz Cj4gPiA+ID4gc3VwcG9ydCB3aGljaCBmb3JtYXRzPwo+ID4gPiA+Cj4gPiA+IAo+ID4gPiBJIHRo aW5rIGhpc3RvcmljYWxseSBhIGxvdCBtb3JlIG9mIHRoZSBmb2N1cyB1cHN0cmVhbSBzbyBmYXIg aGFzIGJlZW4KPiA+ID4gImRlc2t0b3Agc3R5bGUiIHVzZSBjYXNlcywgd2hlcmUgUkdCIHRvIHRo ZSBzaW5rIG1ha2VzIG1vcmUgc2Vuc2UuCj4gPiA+IFRoYXQgZG9lc24ndCBtZWFuIHRoZXJlIGlz bid0IGEgdXNlLWNhc2UgZm9yIFlVVi4gIEknbSBub3Qgc3VyZSwgYW5kCj4gPiA+IGhhdmVuJ3Qg cmVhbGx5IGdpdmVuIG11Y2ggdGhvdWdodCBpbnRvLCBob3cgdG8gZXhwb3NlIHRoaXMgdG8KPiA+ ID4gdXNlcnNwYWNlLiAgQnV0IEkgZ3Vlc3MgdGhlIHNhbWUgdGhpbmcgY29tZXMgdXAgdy8gSERS IGFuZCBoaWdoZXIKPiA+ID4gYml0LWRlcHRoIFJHQiBtb2RlcyAobGlrZSAxMF8xMF8xMCBmb3Jt YXRzLCBldGMpLCBhbmQgcGVvcGxlIGFyZQo+ID4gPiBnaXZpbmcgdGhvdWdodCB0byB0aG9zZSB0 aGluZ3MgdGhlc2UgZGF5cy4gIEkgaGF2ZW4ndCBiZWVuIGZvbGxvd2luZwo+ID4gPiB0aGUgSERS IHdvcmsgKnRoYXQqIGNsb3NlbHksIGJ1dCBJIGd1ZXNzIGlmIHlvdSB3YW50IHRvIHVzZSBIRFIs IHlvdQo+ID4gPiB3YW50IHRvIGtub3cgd2hhdCBtb2RlcyBzdXBwb3J0IGl0IGF0IHRoZSBzaW5r Lgo+ID4gPiAKPiA+ID4gRWl0aGVyIHdheSwgSSB0aGluayB0aGlzIGlzIHNvbWV0aGluZyB3aGlj aCBzaG91bGQgYmUgc3VwcG9ydGVkIGluIGRybQo+ID4gPiBjb3JlIHdpdGggYSBzdGFuZGFyZGl6 ZWQgVUFQSSwgcmF0aGVyIHRoYW4gYnkgZHJpdmVyIHJvbGxpbmcgaXQncyBvd24KPiA+ID4gZWRp ZCBwYXJzaW5nIGFuZCBjdXN0b20gVUFQSS4KPiA+ID4gCj4gPiA+IChJIGd1ZXNzIGV4dGVuZGlu ZyB0aGUgbW9kZWluZm8gc3RydWN0IG1pZ2h0IGJlIGRpZmZpY3VsdCwgYnV0IHBlcmhhcHMKPiA+ ID4gYSBibG9iIHByb3BlcnR5IHcvIHN1cHBsZW1lbnRhbCBpbmZvIG1pZ2h0IG1ha2Ugc2Vuc2U/ PyAgT3IgbWF5YmUKPiA+ID4gc29tZW9uZSBhbHJlYWR5IGhhcyBzb21lIG90aGVyIGlkZWFzPykK PiA+IAo+ID4gCj4gPiBZZWFoLCBpbiBjb25qdW5jdGlvbiB3aXRoIGhkciBzdXBwb3J0LCBzb21l IHR5cGUgb2YgbW9kZWluZm8KPiA+IHN1cHBsZW1lbnRhcnkgZGF0YQo+ID4gc2VlbXMgYXBwcm9w cmlhdGUuCj4gPiAKPiA+IFdlIGhhdmUgc29tZSBzcGFjZSBsZWZ0IGluIG1vZGVpbmZvLT5mbGFn cywgYnV0IHRoYXQgZG9lc24ndCBzY2FsZSBzbwo+ID4gd2VsbC4KPiA+IEFkZGluZyBhIHByb3Bl cnR5IHdvdWxkIGJlIGVhc2llc3Qgc2luY2Ugd2UgY291bGQganVzdCBleHBvc2UgdGhlIGJpdG1h cAo+ID4gdG8KPiA+IHVzZXJzcGFjZSAobW9yZSBvciBsZXNzKS4gV2UgY291bGQgYWxzbyBjaGFu Z2UgInBhZCIgaW4KPiA+IGRybV9tb2RlX2dldF9jb25uZWN0b3IKPiA+IHRvIGZsYWdzIGFuZCBh bGxvdyB1c2Vyc3BhY2UgdG8gcmVxdWVzdCBlbmhhbmNlZCBtb2RlIGluZm8uCj4gPiAKPiA+IFNl YW4KPiA+IAo+IFllcywgd2UgaGFkIGJlZW4gdXNpbmcgZmxhZ3Mgc28gbG9uZyBhcyBwZXIgb3Vy IGVhcmxpZXIgZGlzY3Vzc2lvbiB3aXRoIFJvYgo+IG9uIHRoaXMuCj4gSXQgd29ya3Mgd2VsbCBz byBmYXIgYW5kIHRoYXRzIHByZXR0eSBtdWNoIHdoYXQgdGhlIEVESUQgcGFyc2VyIHdhcyBkb2lu Zy4KPiBUaGF0cyB3aHkgSSBtZW50aW9uZWQKPiB0aGF0IHdlIGNhbiBrZWVwIHNvbWUgcGFydCBv ZiB0aGUgcGFyc2VyIGFuZCBnZXQgcmlkIG9mIG1vc3Qgb2YgaXQuCgpHaXZlbiB0aGF0IHdlIGRv bid0IGhhdmUgYSB1c2Vyc3BhY2UgaW1wbGVtZW50YXRpb24gZm9yIHRoaXMsIGFuZCBpdCBkb2Vz bid0CnNlZW0gbGlrZWx5IHRoYXQgd2Ugd2lsbCBoYXZlIG9uZSBzb29uLCBJJ2QgcmVjb21tZW5k IHdlIGtlZXAgdGhpcyBwYXRjaCBhcy1pcwphbmQgZXhwb3NlIGRybV9oZG1pX2luZm8gd2l0aCBh IHByb3BlcnR5IHdoZW4gdGhlIG5lZWQgYXJpc2VzLgoKU2VhbgoKPiAKPiBJZiB3ZSB3YW50IHRv IG1vdmUgb3ZlciB0byBhbm90aGVyIHByb3BlcnR5LCB3ZSB3aWxsIGV4cGxvcmUgdGhpcyBvcHRp b24KPiBtb3ZpbmcgZm9yd2FyZC4KPiAKPiBBYmhpbmF2Cj4gPiAKPiA+ID4gCj4gPiA+IEJSLAo+ ID4gPiAtUgo+ID4gPiAKPiA+ID4gPiBUaGFua3MKPiA+ID4gPgo+ID4gPiA+IEFiaGluYXYKPiA+ ID4gPgo+ID4gPiA+Cj4gPiA+ID4gT24gMjAxOC0wMi0yMyAxMzo1MSwgU2VhbiBQYXVsIHdyb3Rl Ogo+ID4gPiA+Pgo+ID4gPiA+PiBPbiBGcmksIEZlYiAyMywgMjAxOCBhdCAwMToyOTowM1BNIC0w ODAwLCBhYmhpbmF2a0Bjb2RlYXVyb3JhLm9yZyB3cm90ZToKPiA+ID4gPj4+Cj4gPiA+ID4+PiBJ IGFtIE9LIHdpdGggcmVtb3Zpbmcgc29tZSBwYXJ0cyBvZiB0aGUgcGFyc2VyIGJ1dCBub3QgZW50 aXJlbHkuCj4gPiA+ID4+Pgo+ID4gPiA+Pj4gRnVuZGFtZW50YWxseSwgd2Ugd2VudCBhaGVhZCB3 aXRoIHRoZSBwYXJzZXIgZm9yIGEgY291cGxlIG9mIHJlYXNvbnM6Cj4gPiA+ID4+Pgo+ID4gPiA+ Pj4gLT4gV2Ugd291bGQgbGlrZSB0byBiZSBhYmxlIHRvIGFzc29jaWF0ZSB0aGUgY29sb3IgZm9y bWF0IHdpdGggdGhlIG1vZGUuCj4gPiA+ID4+PiBUaGlzIGhlbHBzIHVzIGRlY2lkZSB0aGF0IGlm IHRoZSBzYW1lIG1vZGUgc3VwcG9ydHMgYm90aCBSR0IvWVVWIHRoZW4KPiA+ID4gPj4+IHdoaWNo Cj4gPiA+ID4+PiBvbmUgd2UgY2FuIHBpY2suCj4gPiA+ID4+Pgo+ID4gPiA+Pj4gLT4gVGhlIHVw c3RyZWFtIHBhcnNlciBjdXJyZW50bHkganVzdCBhZGRzIGl0IHRvIHRoZSBzdXBwb3J0ZWQgZm9y bWF0cyBvZgo+ID4gPiA+Pj4gdGhlIHNpbmsgaW5mby0+Y29sb3JfZm9ybWF0cyB8PSBEUk1fQ09M T1JfRk9STUFUX1lDUkNCNDIwOyBIb3dldmVyIHRoZQo+ID4gPiA+Pj4gbGluawo+ID4gPiA+Pj4g YmV0d2VlbiB0aGUgbW9kZSBhbmQgdGhlIGZvcm1hdCBpdHNlbGYgaXMgdW5jbGVhcgo+ID4gPiA+ Pj4KPiA+ID4gPj4+IEkgd291bGQgbGlrZSB0byBrbm93IGlmIGFueSBvZiB0aGUgYWJvdmUgaGF2 ZSBiZWVuIGFkZHJlc3NlZCBzbyBmYXIKPiA+ID4gPj4+IGJlZm9yZQo+ID4gPiA+Pj4gcmV2ZXJ0 aW5nIHRoaXMuCj4gPiA+ID4+Cj4gPiA+ID4+Cj4gPiA+ID4+IFRoZSBpbmZvcm1hdGlvbiBvZiB3 aGljaCBtb2RlcyBzdXBwb3J0IHdoaWNoIGZvcm1hdHMgaXMgc3RvcmVkIGluIGJpdG1hcHMKPiA+ ID4gPj4gd2l0aGluCj4gPiA+ID4+IGRybV9oZG1pX2luZm8uIFRoZSBkb2N1bWVudGF0aW9uIGlz IGhlcmU6Cj4gPiA+ID4+Cj4gPiA+ID4+Cj4gPiA+ID4+IGh0dHBzOi8vMDEub3JnL2xpbnV4Z3Jh cGhpY3MvZ2Z4LWRvY3MvZHJtL2dwdS9kcm0ta21zLmh0bWw/aGlnaGxpZ2h0PWRybV9oZG1pX2lu Zm8jYy5kcm1faGRtaV9pbmZvCj4gPiA+ID4+Cj4gPiA+ID4+IElzIHRoaXMgc3VmZmljaWVudD8K PiA+ID4gPj4KPiA+ID4gPj4gU2Vhbgo+ID4gPiA+Pgo+ID4gPiA+Pj4KPiA+ID4gPj4+IFRoYW5r cwo+ID4gPiA+Pj4KPiA+ID4gPj4+IEFiaGluYXYKPiA+ID4gPj4+Cj4gPiA+ID4+Pgo+ID4gPiA+ Pj4gT24gMjAxOC0wMi0yMyAxMToxNSwgU2VhbiBQYXVsIHdyb3RlOgo+ID4gPiA+Pj4gPiBVc2Ug ZHJtX2VkaWQgdG8gcGFyc2UgdGhlIGVkaWQgaW5zdGVhZCBvZiB0aGUgaGFuZCByb2xsZWQgZHB1 IHZlcnNpb24uCj4gPiA+ID4+PiA+Cj4gPiA+ID4+PiA+IFNpZ25lZC1vZmYtYnk6IFNlYW4gUGF1 bCA8c2VhbnBhdWxAY2hyb21pdW0ub3JnPgo+ID4gPiA+Pj4gPiAtLS0KPiA+ID4gPj4+ID4gIGRy aXZlcnMvZ3B1L2RybS9tc20vTWFrZWZpbGUgICAgICAgICAgfCAgIDEgLQo+ID4gPiA+Pj4gPiAg ZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jICAgICB8ICAyMiArLQo+ID4gPiA+Pj4g PiAgZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9kaXNwbGF5LmMgICB8ICAgNyAtCj4gPiA+ID4+ PiA+ICBkcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX3BhbmVsLmMgICAgIHwgIDc3ICsrLQo+ID4g PiA+Pj4gPiAgZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9wYW5lbC5oICAgICB8ICAgNyArLQo+ ID4gPiA+Pj4gPiAgZHJpdmVycy9ncHUvZHJtL21zbS9kcHVfZWRpZF9wYXJzZXIuYyB8IDY1NyAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ID4gPiA+Pj4gPiAgZHJpdmVycy9ncHUvZHJtL21z bS9kcHVfZWRpZF9wYXJzZXIuaCB8IDE2NiAtLS0tLS0tCj4gPiA+ID4+PiA+ICA3IGZpbGVzIGNo YW5nZWQsIDU1IGluc2VydGlvbnMoKyksIDg4MiBkZWxldGlvbnMoLSkKPiA+ID4gPj4+ID4gIGRl bGV0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vbXNtL2RwdV9lZGlkX3BhcnNlci5jCj4g PiA+ID4+PiA+ICBkZWxldGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL21zbS9kcHVfZWRp ZF9wYXJzZXIuaAo+ID4gPiA+Pj4gPgo+ID4gPiA+Pj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL21zbS9NYWtlZmlsZQo+ID4gPiA+Pj4gPiBiL2RyaXZlcnMvZ3B1L2RybS9tc20vTWFr ZWZpbGUKPiA+ID4gPj4+ID4gaW5kZXggZmNkODVhZTI4ZDY2Li4yZmI5YmExMWRmMTkgMTAwNjQ0 Cj4gPiA+ID4+PiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vTWFrZWZpbGUKPiA+ID4gPj4+ ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9NYWtlZmlsZQo+ID4gPiA+Pj4gPiBAQCAtODYs NyArODYsNiBAQCBtc20teSA6PSBcCj4gPiA+ID4+PiA+ICAgICAgIGRpc3AvZHB1MS9kcHVfcm0u byBcCj4gPiA+ID4+PiA+ICAgICAgIGRpc3AvZHB1MS9kcHVfdmJpZi5vIFwKPiA+ID4gPj4+ID4g ICAgICAgZHB1X2RiZy5vIFwKPiA+ID4gPj4+ID4gLSAgICAgZHB1X2VkaWRfcGFyc2VyLm8gXAo+ ID4gPiA+Pj4gPiAgICAgICBkcHVfaW9fdXRpbC5vIFwKPiA+ID4gPj4+ID4gICAgICAgZHB1X2Ri Z19ldnRsb2cubyBcCj4gPiA+ID4+PiA+ICAgICAgIGRwdV9wb3dlcl9oYW5kbGUubyBcCj4gPiA+ ID4+PiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmMKPiA+ ID4gPj4+ID4gYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmMKPiA+ID4gPj4+ID4g aW5kZXggNGUwY2RjZDE1YzhjLi5jZTAwYjhiNTI2MzEgMTAwNjQ0Cj4gPiA+ID4+PiA+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYwo+ID4gPiA+Pj4gPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmMKPiA+ID4gPj4+ID4gQEAgLTE4LDYgKzE4LDcg QEAKPiA+ID4gPj4+ID4gICNpbmNsdWRlIDxsaW51eC9tc21fZXh0X2Rpc3BsYXkuaD4KPiA+ID4g Pj4+ID4KPiA+ID4gPj4+ID4gICNpbmNsdWRlIDxkcm0vZHJtX2RwX2hlbHBlci5oPgo+ID4gPiA+ Pj4gPiArI2luY2x1ZGUgPGRybS9kcm1fZWRpZC5oPgo+ID4gPiA+Pj4gPgo+ID4gPiA+Pj4gPiAg I2luY2x1ZGUgImRwX2NhdGFsb2cuaCIKPiA+ID4gPj4+ID4gICNpbmNsdWRlICJkcF9hdWRpby5o Igo+ID4gPiA+Pj4gPiBAQCAtNDgwLDcgKzQ4MSw2IEBAIHN0YXRpYyBpbnQgZHBfYXVkaW9fZ2V0 X2VkaWRfYmxrKHN0cnVjdAo+ID4gPiA+Pj4gPiBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsCj4gPiA+ ID4+PiA+ICB7Cj4gPiA+ID4+PiA+ICAgICAgIGludCByYyA9IDA7Cj4gPiA+ID4+PiA+ICAgICAg IHN0cnVjdCBkcF9hdWRpb19wcml2YXRlICphdWRpbzsKPiA+ID4gPj4+ID4gLSAgICAgc3RydWN0 IGRwdV9lZGlkX2N0cmwgKmVkaWQ7Cj4gPiA+ID4+PiA+Cj4gPiA+ID4+PiA+ICAgICAgIGF1ZGlv ID0gZ2V0X2F1ZGlvX2dldF9kYXRhKHBkZXYpOwo+ID4gPiA+Pj4gPiAgICAgICBpZiAoSVNfRVJS KGF1ZGlvKSkgewo+ID4gPiA+Pj4gPiBAQCAtNDg4LDE5ICs0ODgsMjkgQEAgc3RhdGljIGludCBk cF9hdWRpb19nZXRfZWRpZF9ibGsoc3RydWN0Cj4gPiA+ID4+PiA+IHBsYXRmb3JtX2RldmljZSAq cGRldiwKPiA+ID4gPj4+ID4gICAgICAgICAgICAgICBnb3RvIGVuZDsKPiA+ID4gPj4+ID4gICAg ICAgfQo+ID4gPiA+Pj4gPgo+ID4gPiA+Pj4gPiAtICAgICBpZiAoIWF1ZGlvLT5wYW5lbCB8fCAh YXVkaW8tPnBhbmVsLT5lZGlkX2N0cmwpIHsKPiA+ID4gPj4+ID4gKyAgICAgaWYgKCFhdWRpby0+ cGFuZWwgfHwgIWF1ZGlvLT5wYW5lbC0+ZWRpZCkgewo+ID4gPiA+Pj4gPiAgICAgICAgICAgICAg IHByX2VycigiaW52YWxpZCBwYW5lbCBkYXRhXG4iKTsKPiA+ID4gPj4+ID4gICAgICAgICAgICAg ICByYyA9IC1FSU5WQUw7Cj4gPiA+ID4+PiA+ICAgICAgICAgICAgICAgZ290byBlbmQ7Cj4gPiA+ ID4+PiA+ICAgICAgIH0KPiA+ID4gPj4+ID4KPiA+ID4gPj4+ID4gLSAgICAgZWRpZCA9IGF1ZGlv LT5wYW5lbC0+ZWRpZF9jdHJsOwo+ID4gPiA+Pj4gPiAtCj4gPiA+ID4+PiA+ICsvKgo+ID4gPiA+ Pj4gPiArICogVE9ETzoKPiA+ID4gPj4+ID4gKyAqICAgYXVkaW9fZGF0YV9ibGsgc2hvdWxkIGJl IGNoYW5nZWQgdG8gYmUgYSBjZWFfc2FkIGFycmF5Cj4gPiA+ID4+PiA+ICsgKiAgIGF1ZGlvX2Rh dGFfYmxrX3NpemUgc2hvdWxkIGJlIGNoYW5nZWQgdG8gY29udGFpbiBhIGNvdW50IG9mIHNhZHMK PiA+ID4gPj4+ID4gKyAqCj4gPiA+ID4+PiA+ICsgKiAgIE9uY2UgdGhpcyBpcyBkb25lLCB1c2Ug ZHJtX2VkaWRfdG9fc2FkKCkgdG8gZXh0cmFjdCB0aGlzIGZyb20KPiA+ID4gPj4+ID4gKyAqICAg YXVkaW8tPnBhbmVsLT5lZGlkLiBJJ2QgY2hhbmdlIHRoaXMsIGJ1dCBJIGRvbid0IGhhdmUgdGhh dCBjb2RlCj4gPiA+ID4+PiA+IDovCj4gPiA+ID4+PiA+ICsgKi8KPiA+ID4gPj4+ID4gKyNpZiAw Cj4gPiA+ID4+PiA+ICAgICAgIGJsay0+YXVkaW9fZGF0YV9ibGsgPSBlZGlkLT5hdWRpb19kYXRh X2Jsb2NrOwo+ID4gPiA+Pj4gPiAgICAgICBibGstPmF1ZGlvX2RhdGFfYmxrX3NpemUgPSBlZGlk LT5hZGJfc2l6ZTsKPiA+ID4gPj4+ID4gKyNlbmRpZgo+ID4gPiA+Pj4gPiArCj4gPiA+ID4+PiA+ ICsgICAgIGJsay0+c3BrX2FsbG9jX2RhdGFfYmxrX3NpemUgPSBkcm1fZWRpZF90b19zcGVha2Vy X2FsbG9jYXRpb24oCj4gPiA+ID4+PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBhdWRpby0+cGFuZWwtPmVkaWQsCj4gPiA+ID4+PiA+ICsKPiA+ID4gPj4+ ID4gYmxrLT5zcGtyX2FsbG9jX2RhdGFfYmxvY2spOwo+ID4gPiA+Pj4gPgo+ID4gPiA+Pj4gPiAt ICAgICBibGstPnNwa19hbGxvY19kYXRhX2JsayA9IGVkaWQtPnNwa3JfYWxsb2NfZGF0YV9ibG9j azsKPiA+ID4gPj4+ID4gLSAgICAgYmxrLT5zcGtfYWxsb2NfZGF0YV9ibGtfc2l6ZSA9IGVkaWQt PnNhZGJfc2l6ZTsKPiA+ID4gPj4+ID4gIGVuZDoKPiA+ID4gPj4+ID4gICAgICAgcmV0dXJuIHJj Owo+ID4gPiA+Pj4gPiAgfQo+ID4gPiA+Pj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L21zbS9kcC9kcF9kaXNwbGF5LmMKPiA+ID4gPj4+ID4gYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rw L2RwX2Rpc3BsYXkuYwo+ID4gPiA+Pj4gPiBpbmRleCA2ZjJjMDY4MDliZjUuLjg0NmVmMzNhZWNi ZCAxMDA2NDQKPiA+ID4gPj4+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9kaXNw bGF5LmMKPiA+ID4gPj4+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9kaXNwbGF5 LmMKPiA+ID4gPj4+ID4gQEAgLTM3MywxMiArMzczLDYgQEAgc3RhdGljIGludCBkcF9kaXNwbGF5 X2JpbmQoc3RydWN0IGRldmljZSAqZGV2LAo+ID4gPiA+Pj4gPiBzdHJ1Y3QgZGV2aWNlICptYXN0 ZXIsCj4gPiA+ID4+PiA+ICAgICAgICAgICAgICAgZ290byBlbmQ7Cj4gPiA+ID4+PiA+ICAgICAg IH0KPiA+ID4gPj4+ID4KPiA+ID4gPj4+ID4gLSAgICAgcmMgPSBkcC0+cGFuZWwtPmRwdV9lZGlk X3JlZ2lzdGVyKGRwLT5wYW5lbCk7Cj4gPiA+ID4+PiA+IC0gICAgIGlmIChyYykgewo+ID4gPiA+ Pj4gPiAtICAgICAgICAgICAgIHByX2VycigiRFJNIERQIEVESUQgcmVnaXN0ZXIgZmFpbGVkXG4i KTsKPiA+ID4gPj4+ID4gLSAgICAgICAgICAgICBnb3RvIGVuZDsKPiA+ID4gPj4+ID4gLSAgICAg fQo+ID4gPiA+Pj4gPiAtCj4gPiA+ID4+PiA+ICAgICAgIHJjID0gZHAtPnBvd2VyLT5wb3dlcl9j bGllbnRfaW5pdChkcC0+cG93ZXIsICZwcml2LT5waGFuZGxlKTsKPiA+ID4gPj4+ID4gICAgICAg aWYgKHJjKSB7Cj4gPiA+ID4+PiA+ICAgICAgICAgICAgICAgcHJfZXJyKCJQb3dlciBjbGllbnQg Y3JlYXRlIGZhaWxlZFxuIik7Cj4gPiA+ID4+PiA+IEBAIC00MTIsNyArNDA2LDYgQEAgc3RhdGlj IHZvaWQgZHBfZGlzcGxheV91bmJpbmQoc3RydWN0IGRldmljZSAqZGV2LAo+ID4gPiA+Pj4gPiBz dHJ1Y3QgZGV2aWNlICptYXN0ZXIsCj4gPiA+ID4+PiA+ICAgICAgIH0KPiA+ID4gPj4+ID4KPiA+ ID4gPj4+ID4gICAgICAgKHZvaWQpZHAtPnBvd2VyLT5wb3dlcl9jbGllbnRfZGVpbml0KGRwLT5w b3dlcik7Cj4gPiA+ID4+PiA+IC0gICAgICh2b2lkKWRwLT5wYW5lbC0+ZHB1X2VkaWRfZGVyZWdp c3RlcihkcC0+cGFuZWwpOwo+ID4gPiA+Pj4gPiAgICAgICAodm9pZClkcC0+YXV4LT5kcm1fYXV4 X2RlcmVnaXN0ZXIoZHAtPmF1eCk7Cj4gPiA+ID4+PiA+ICAgICAgIGRwX2Rpc3BsYXlfZGVpbml0 aWFsaXplX2hkY3AoZHApOwo+ID4gPiA+Pj4gPiAgfQo+ID4gPiA+Pj4gPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9wYW5lbC5jCj4gPiA+ID4+PiA+IGIvZHJpdmVycy9n cHUvZHJtL21zbS9kcC9kcF9wYW5lbC5jCj4gPiA+ID4+PiA+IGluZGV4IDExYzMzMzhlMjNiMS4u NjNmOWJmNDA3NTA4IDEwMDY0NAo+ID4gPiA+Pj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNt L2RwL2RwX3BhbmVsLmMKPiA+ID4gPj4+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kcC9k cF9wYW5lbC5jCj4gPiA+ID4+PiA+IEBAIC0xNiw2ICsxNiw5IEBACj4gPiA+ID4+PiA+Cj4gPiA+ ID4+PiA+ICAjaW5jbHVkZSAiZHBfcGFuZWwuaCIKPiA+ID4gPj4+ID4KPiA+ID4gPj4+ID4gKyNp bmNsdWRlIDxkcm0vZHJtX2Nvbm5lY3Rvci5oPgo+ID4gPiA+Pj4gPiArI2luY2x1ZGUgPGRybS9k cm1fZWRpZC5oPgo+ID4gPiA+Pj4gPiArCj4gPiA+ID4+PiA+ICAjZGVmaW5lIERQX1BBTkVMX0RF RkFVTFRfQlBQIDI0Cj4gPiA+ID4+PiA+ICAjZGVmaW5lIERQX01BWF9EU19QT1JUX0NPVU5UIDEK PiA+ID4gPj4+ID4KPiA+ID4gPj4+ID4gQEAgLTE1MSw5ICsxNTQsMTAgQEAgc3RhdGljIGludCBk cF9wYW5lbF9yZWFkX2VkaWQoc3RydWN0IGRwX3BhbmVsCj4gPiA+ID4+PiA+ICpkcF9wYW5lbCwK PiA+ID4gPj4+ID4gICAgICAgcGFuZWwgPSBjb250YWluZXJfb2YoZHBfcGFuZWwsIHN0cnVjdCBk cF9wYW5lbF9wcml2YXRlLAo+ID4gPiA+Pj4gPiBkcF9wYW5lbCk7Cj4gPiA+ID4+PiA+Cj4gPiA+ ID4+PiA+ICAgICAgIGRvIHsKPiA+ID4gPj4+ID4gLSAgICAgICAgICAgICBkcHVfZ2V0X2VkaWQo Y29ubmVjdG9yLCAmcGFuZWwtPmF1eC0+ZHJtX2F1eC0+ZGRjLAo+ID4gPiA+Pj4gPiAtICAgICAg ICAgICAgICAgICAgICAgKHZvaWQgKiopJmRwX3BhbmVsLT5lZGlkX2N0cmwpOwo+ID4gPiA+Pj4g PiAtICAgICAgICAgICAgIGlmICghZHBfcGFuZWwtPmVkaWRfY3RybC0+ZWRpZCkgewo+ID4gPiA+ Pj4gPiArICAgICAgICAgICAgIGtmcmVlKGRwX3BhbmVsLT5lZGlkKTsKPiA+ID4gPj4+ID4gKyAg ICAgICAgICAgICBkcF9wYW5lbC0+ZWRpZCA9IGRybV9nZXRfZWRpZChjb25uZWN0b3IsCj4gPiA+ ID4+PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnBhbmVs LT5hdXgtPmRybV9hdXgtPmRkYyk7Cj4gPiA+ID4+PiA+ICsgICAgICAgICAgICAgaWYgKCFkcF9w YW5lbC0+ZWRpZCkgewo+ID4gPiA+Pj4gPiAgICAgICAgICAgICAgICAgICAgICAgcHJfZXJyKCJF RElEIHJlYWQgZmFpbGVkXG4iKTsKPiA+ID4gPj4+ID4gICAgICAgICAgICAgICAgICAgICAgIHJl dHJ5X2NudCsrOwo+ID4gPiA+Pj4gPiAgICAgICAgICAgICAgICAgICAgICAgcGFuZWwtPmF1eC0+ cmVjb25maWcocGFuZWwtPmF1eCk7Cj4gPiA+ID4+PiA+IEBAIC0xNjMsNyArMTY3LDcgQEAgc3Rh dGljIGludCBkcF9wYW5lbF9yZWFkX2VkaWQoc3RydWN0IGRwX3BhbmVsCj4gPiA+ID4+PiA+ICpk cF9wYW5lbCwKPiA+ID4gPj4+ID4gICAgICAgICAgICAgICB9Cj4gPiA+ID4+PiA+ICAgICAgIH0g d2hpbGUgKHJldHJ5X2NudCA8IG1heF9yZXRyeSk7Cj4gPiA+ID4+PiA+Cj4gPiA+ID4+PiA+IC0g ICAgIHJldHVybiAtRUlOVkFMOwo+ID4gPiA+Pj4gPiArICAgICByZXR1cm4gZHJtX2FkZF9lZGlk X21vZGVzKGNvbm5lY3RvciwgZHBfcGFuZWwtPmVkaWQpOwo+ID4gPiA+Pj4gPiAgfQo+ID4gPiA+ Pj4gPgo+ID4gPiA+Pj4gPiAgc3RhdGljIGludCBkcF9wYW5lbF9yZWFkX3NpbmtfY2FwcyhzdHJ1 Y3QgZHBfcGFuZWwgKmRwX3BhbmVsLAo+ID4gPiA+Pj4gPiBAQCAtMTg4LDcgKzE5Miw3IEBAIHN0 YXRpYyBpbnQgZHBfcGFuZWxfcmVhZF9zaW5rX2NhcHMoc3RydWN0IGRwX3BhbmVsCj4gPiA+ID4+ PiA+ICpkcF9wYW5lbCwKPiA+ID4gPj4+ID4gICAgICAgfQo+ID4gPiA+Pj4gPgo+ID4gPiA+Pj4g PiAgICAgICByYyA9IGRwX3BhbmVsX3JlYWRfZWRpZChkcF9wYW5lbCwgY29ubmVjdG9yKTsKPiA+ ID4gPj4+ID4gLSAgICAgaWYgKHJjKSB7Cj4gPiA+ID4+PiA+ICsgICAgIGlmIChyYyA8IDApIHsK PiA+ID4gPj4+ID4gICAgICAgICAgICAgICBwcl9lcnIoInBhbmVsIGVkaWQgcmVhZCBmYWlsZWQs IHNldCBmYWlsc2FmZSBtb2RlXG4iKTsKPiA+ID4gPj4+ID4gICAgICAgICAgICAgICByZXR1cm4g cmM7Cj4gPiA+ID4+PiA+ICAgICAgIH0KPiA+ID4gPj4+ID4gQEAgLTIxNSw3ICsyMTksNyBAQCBz dGF0aWMgdTMyIGRwX3BhbmVsX2dldF9tYXhfcGNsayhzdHJ1Y3QgZHBfcGFuZWwKPiA+ID4gPj4+ ID4gKmRwX3BhbmVsKQo+ID4gPiA+Pj4gPgo+ID4gPiA+Pj4gPiAgICAgICBsaW5rX2luZm8gPSAm ZHBfcGFuZWwtPmxpbmtfaW5mbzsKPiA+ID4gPj4+ID4KPiA+ID4gPj4+ID4gLSAgICAgYnBjID0g ZHB1X2dldF9zaW5rX2JwYyhkcF9wYW5lbC0+ZWRpZF9jdHJsKTsKPiA+ID4gPj4+ID4gKyAgICAg YnBjID0gZHBfcGFuZWwtPmNvbm5lY3Rvci0+ZGlzcGxheV9pbmZvLmJwYzsKPiA+ID4gPj4+ID4g ICAgICAgYnBwID0gYnBjICogbnVtX2NvbXBvbmVudHM7Cj4gPiA+ID4+PiA+ICAgICAgIGlmICgh YnBwKQo+ID4gPiA+Pj4gPiAgICAgICAgICAgICAgIGJwcCA9IERQX1BBTkVMX0RFRkFVTFRfQlBQ Owo+ID4gPiA+Pj4gPiBAQCAtMjkwLDggKzI5NCw4IEBAIHN0YXRpYyBpbnQgZHBfcGFuZWxfZ2V0 X21vZGVzKHN0cnVjdCBkcF9wYW5lbAo+ID4gPiA+Pj4gPiAqZHBfcGFuZWwsCj4gPiA+ID4+PiA+ ICAgICAgIGlmIChkcF9wYW5lbC0+dmlkZW9fdGVzdCkgewo+ID4gPiA+Pj4gPiAgICAgICAgICAg ICAgIGRwX3BhbmVsX3NldF90ZXN0X21vZGUocGFuZWwsIG1vZGUpOwo+ID4gPiA+Pj4gPiAgICAg ICAgICAgICAgIHJldHVybiAxOwo+ID4gPiA+Pj4gPiAtICAgICB9IGVsc2UgaWYgKGRwX3BhbmVs LT5lZGlkX2N0cmwtPmVkaWQpIHsKPiA+ID4gPj4+ID4gLSAgICAgICAgICAgICByZXR1cm4gX2Rw dV9lZGlkX3VwZGF0ZV9tb2Rlcyhjb25uZWN0b3IsCj4gPiA+ID4+PiA+IGRwX3BhbmVsLT5lZGlk X2N0cmwpOwo+ID4gPiA+Pj4gPiArICAgICB9IGVsc2UgaWYgKGRwX3BhbmVsLT5lZGlkKSB7Cj4g PiA+ID4+PiA+ICsgICAgICAgICAgICAgcmV0dXJuIGRwX3BhbmVsX3JlYWRfZWRpZChkcF9wYW5l bCwgY29ubmVjdG9yKTsKPiA+ID4gPj4+ID4gICAgICAgfQo+ID4gPiA+Pj4gPgo+ID4gPiA+Pj4g PiAgICAgICAvKiBmYWlsLXNhZmUgbW9kZSAqLwo+ID4gPiA+Pj4gPiBAQCAtMzAwLDYgKzMwNCwy NyBAQCBzdGF0aWMgaW50IGRwX3BhbmVsX2dldF9tb2RlcyhzdHJ1Y3QgZHBfcGFuZWwKPiA+ID4g Pj4+ID4gKmRwX3BhbmVsLAo+ID4gPiA+Pj4gPiAgICAgICByZXR1cm4gMTsKPiA+ID4gPj4+ID4g IH0KPiA+ID4gPj4+ID4KPiA+ID4gPj4+ID4gK3N0YXRpYyB1OCBkcF9wYW5lbF9nZXRfZWRpZF9j aGVja3N1bShzdHJ1Y3QgZWRpZCAqZWRpZCkKPiA+ID4gPj4+ID4gK3sKPiA+ID4gPj4+ID4gKyAg ICAgc3RydWN0IGVkaWQgKmxhc3RfYmxvY2sgPSBOVUxMOwo+ID4gPiA+Pj4gPiArICAgICB1OCAq cmF3X2VkaWQgPSBOVUxMOwo+ID4gPiA+Pj4gPiArCj4gPiA+ID4+PiA+ICsgICAgIGlmICghZWRp ZCkgewo+ID4gPiA+Pj4gPiArICAgICAgICAgICAgIHByX2VycigiaW52YWxpZCBlZGlkIGlucHV0 XG4iKTsKPiA+ID4gPj4+ID4gKyAgICAgICAgICAgICByZXR1cm4gMDsKPiA+ID4gPj4+ID4gKyAg ICAgfQo+ID4gPiA+Pj4gPiArCj4gPiA+ID4+PiA+ICsgICAgIHJhd19lZGlkID0gKHU4ICopZWRp ZDsKPiA+ID4gPj4+ID4gKyAgICAgcmF3X2VkaWQgKz0gKGVkaWQtPmV4dGVuc2lvbnMgKiBFRElE X0xFTkdUSCk7Cj4gPiA+ID4+PiA+ICsgICAgIGxhc3RfYmxvY2sgPSAoc3RydWN0IGVkaWQgKily YXdfZWRpZDsKPiA+ID4gPj4+ID4gKwo+ID4gPiA+Pj4gPiArICAgICBpZiAobGFzdF9ibG9jaykK PiA+ID4gPj4+ID4gKyAgICAgICAgICAgICByZXR1cm4gbGFzdF9ibG9jay0+Y2hlY2tzdW07Cj4g PiA+ID4+PiA+ICsKPiA+ID4gPj4+ID4gKyAgICAgcHJfZXJyKCJJbnZhbGlkIGJsb2NrLCBubyBj aGVja3N1bVxuIik7Cj4gPiA+ID4+PiA+ICsgICAgIHJldHVybiAwOwo+ID4gPiA+Pj4gPiArfQo+ ID4gPiA+Pj4gPiArCj4gPiA+ID4+PiA+ICBzdGF0aWMgdm9pZCBkcF9wYW5lbF9oYW5kbGVfc2lu a19yZXF1ZXN0KHN0cnVjdCBkcF9wYW5lbCAqZHBfcGFuZWwpCj4gPiA+ID4+PiA+ICB7Cj4gPiA+ ID4+PiA+ICAgICAgIHN0cnVjdCBkcF9wYW5lbF9wcml2YXRlICpwYW5lbDsKPiA+ID4gPj4+ID4g QEAgLTMxMiw3ICszMzcsNyBAQCBzdGF0aWMgdm9pZCBkcF9wYW5lbF9oYW5kbGVfc2lua19yZXF1 ZXN0KHN0cnVjdAo+ID4gPiA+Pj4gPiBkcF9wYW5lbCAqZHBfcGFuZWwpCj4gPiA+ID4+PiA+ICAg ICAgIHBhbmVsID0gY29udGFpbmVyX29mKGRwX3BhbmVsLCBzdHJ1Y3QgZHBfcGFuZWxfcHJpdmF0 ZSwKPiA+ID4gPj4+ID4gZHBfcGFuZWwpOwo+ID4gPiA+Pj4gPgo+ID4gPiA+Pj4gPiAgICAgICBp ZiAocGFuZWwtPmxpbmstPnNpbmtfcmVxdWVzdCAmIERQX1RFU1RfTElOS19FRElEX1JFQUQpIHsK PiA+ID4gPj4+ID4gLSAgICAgICAgICAgICB1OCBjaGVja3N1bSA9IGRwdV9nZXRfZWRpZF9jaGVj a3N1bShkcF9wYW5lbC0+ZWRpZF9jdHJsKTsKPiA+ID4gPj4+ID4gKyAgICAgICAgICAgICB1OCBj aGVja3N1bSA9IGRwX3BhbmVsX2dldF9lZGlkX2NoZWNrc3VtKGRwX3BhbmVsLT5lZGlkKTsKPiA+ ID4gPj4+ID4KPiA+ID4gPj4+ID4gICAgICAgICAgICAgICBwYW5lbC0+bGluay0+c2VuZF9lZGlk X2NoZWNrc3VtKHBhbmVsLT5saW5rLCBjaGVja3N1bSk7Cj4gPiA+ID4+PiA+ICAgICAgICAgICAg ICAgcGFuZWwtPmxpbmstPnNlbmRfdGVzdF9yZXNwb25zZShwYW5lbC0+bGluayk7Cj4gPiA+ID4+ PiA+IEBAIC0zODIsMzYgKzQwNyw2IEBAIHN0YXRpYyBpbnQgZHBfcGFuZWxfdGltaW5nX2NmZyhz dHJ1Y3QgZHBfcGFuZWwKPiA+ID4gPj4+ID4gKmRwX3BhbmVsKQo+ID4gPiA+Pj4gPiAgICAgICBy ZXR1cm4gcmM7Cj4gPiA+ID4+PiA+ICB9Cj4gPiA+ID4+PiA+Cj4gPiA+ID4+PiA+IC1zdGF0aWMg aW50IGRwX3BhbmVsX2VkaWRfcmVnaXN0ZXIoc3RydWN0IGRwX3BhbmVsICpkcF9wYW5lbCkKPiA+ ID4gPj4+ID4gLXsKPiA+ID4gPj4+ID4gLSAgICAgaW50IHJjID0gMDsKPiA+ID4gPj4+ID4gLQo+ ID4gPiA+Pj4gPiAtICAgICBpZiAoIWRwX3BhbmVsKSB7Cj4gPiA+ID4+PiA+IC0gICAgICAgICAg ICAgcHJfZXJyKCJpbnZhbGlkIGlucHV0XG4iKTsKPiA+ID4gPj4+ID4gLSAgICAgICAgICAgICBy YyA9IC1FSU5WQUw7Cj4gPiA+ID4+PiA+IC0gICAgICAgICAgICAgZ290byBlbmQ7Cj4gPiA+ID4+ PiA+IC0gICAgIH0KPiA+ID4gPj4+ID4gLQo+ID4gPiA+Pj4gPiAtICAgICBkcF9wYW5lbC0+ZWRp ZF9jdHJsID0gZHB1X2VkaWRfaW5pdCgpOwo+ID4gPiA+Pj4gPiAtICAgICBpZiAoIWRwX3BhbmVs LT5lZGlkX2N0cmwpIHsKPiA+ID4gPj4+ID4gLSAgICAgICAgICAgICBwcl9lcnIoImRwdSBlZGlk IGluaXQgZm9yIERQIGZhaWxlZFxuIik7Cj4gPiA+ID4+PiA+IC0gICAgICAgICAgICAgcmMgPSAt RU5PTUVNOwo+ID4gPiA+Pj4gPiAtICAgICAgICAgICAgIGdvdG8gZW5kOwo+ID4gPiA+Pj4gPiAt ICAgICB9Cj4gPiA+ID4+PiA+IC1lbmQ6Cj4gPiA+ID4+PiA+IC0gICAgIHJldHVybiByYzsKPiA+ ID4gPj4+ID4gLX0KPiA+ID4gPj4+ID4gLQo+ID4gPiA+Pj4gPiAtc3RhdGljIHZvaWQgZHBfcGFu ZWxfZWRpZF9kZXJlZ2lzdGVyKHN0cnVjdCBkcF9wYW5lbCAqZHBfcGFuZWwpCj4gPiA+ID4+PiA+ IC17Cj4gPiA+ID4+PiA+IC0gICAgIGlmICghZHBfcGFuZWwpIHsKPiA+ID4gPj4+ID4gLSAgICAg ICAgICAgICBwcl9lcnIoImludmFsaWQgaW5wdXRcbiIpOwo+ID4gPiA+Pj4gPiAtICAgICAgICAg ICAgIHJldHVybjsKPiA+ID4gPj4+ID4gLSAgICAgfQo+ID4gPiA+Pj4gPiAtCj4gPiA+ID4+PiA+ IC0gICAgIGRwdV9lZGlkX2RlaW5pdCgodm9pZCAqKikmZHBfcGFuZWwtPmVkaWRfY3RybCk7Cj4g PiA+ID4+PiA+IC19Cj4gPiA+ID4+PiA+IC0KPiA+ID4gPj4+ID4gIHN0YXRpYyBpbnQgZHBfcGFu ZWxfaW5pdF9wYW5lbF9pbmZvKHN0cnVjdCBkcF9wYW5lbCAqZHBfcGFuZWwpCj4gPiA+ID4+PiA+ ICB7Cj4gPiA+ID4+PiA+ICAgICAgIGludCByYyA9IDA7Cj4gPiA+ID4+PiA+IEBAIC01MDMsOCAr NDk4LDYgQEAgc3RydWN0IGRwX3BhbmVsICpkcF9wYW5lbF9nZXQoc3RydWN0IGRwX3BhbmVsX2lu Cj4gPiA+ID4+PiA+ICppbikKPiA+ID4gPj4+ID4gICAgICAgZHBfcGFuZWwgPSAmcGFuZWwtPmRw X3BhbmVsOwo+ID4gPiA+Pj4gPiAgICAgICBwYW5lbC0+YXV4X2NmZ191cGRhdGVfZG9uZSA9IGZh bHNlOwo+ID4gPiA+Pj4gPgo+ID4gPiA+Pj4gPiAtICAgICBkcF9wYW5lbC0+ZHB1X2VkaWRfcmVn aXN0ZXIgPSBkcF9wYW5lbF9lZGlkX3JlZ2lzdGVyOwo+ID4gPiA+Pj4gPiAtICAgICBkcF9wYW5l bC0+ZHB1X2VkaWRfZGVyZWdpc3RlciA9IGRwX3BhbmVsX2VkaWRfZGVyZWdpc3RlcjsKPiA+ID4g Pj4+ID4gICAgICAgZHBfcGFuZWwtPmluaXRfaW5mbyA9IGRwX3BhbmVsX2luaXRfcGFuZWxfaW5m bzsKPiA+ID4gPj4+ID4gICAgICAgZHBfcGFuZWwtPnRpbWluZ19jZmcgPSBkcF9wYW5lbF90aW1p bmdfY2ZnOwo+ID4gPiA+Pj4gPiAgICAgICBkcF9wYW5lbC0+cmVhZF9zaW5rX2NhcHMgPSBkcF9w YW5lbF9yZWFkX3NpbmtfY2FwczsKPiA+ID4gPj4+ID4gQEAgLTUyNyw1ICs1MjAsNyBAQCB2b2lk IGRwX3BhbmVsX3B1dChzdHJ1Y3QgZHBfcGFuZWwgKmRwX3BhbmVsKQo+ID4gPiA+Pj4gPgo+ID4g PiA+Pj4gPiAgICAgICBwYW5lbCA9IGNvbnRhaW5lcl9vZihkcF9wYW5lbCwgc3RydWN0IGRwX3Bh bmVsX3ByaXZhdGUsCj4gPiA+ID4+PiA+IGRwX3BhbmVsKTsKPiA+ID4gPj4+ID4KPiA+ID4gPj4+ ID4gKyAgICAga2ZyZWUoZHBfcGFuZWwtPmVkaWQpOwo+ID4gPiA+Pj4gPiArICAgICBkcF9wYW5l bC0+ZWRpZCA9IE5VTEw7Cj4gPiA+ID4+PiA+ICAgICAgIGRldm1fa2ZyZWUocGFuZWwtPmRldiwg cGFuZWwpOwo+ID4gPiA+Pj4gPiAgfQo+ID4gPiA+Pj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL21zbS9kcC9kcF9wYW5lbC5oCj4gPiA+ID4+PiA+IGIvZHJpdmVycy9ncHUvZHJtL21z bS9kcC9kcF9wYW5lbC5oCj4gPiA+ID4+PiA+IGluZGV4IGE5NWZkMDE1N2E0ZS4uZDZlYmRiOThm NzY3IDEwMDY0NAo+ID4gPiA+Pj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX3Bh bmVsLmgKPiA+ID4gPj4+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9wYW5lbC5o Cj4gPiA+ID4+PiA+IEBAIC0xOCw3ICsxOCw4IEBACj4gPiA+ID4+PiA+ICAjaW5jbHVkZSAiZHBf YXV4LmgiCj4gPiA+ID4+PiA+ICAjaW5jbHVkZSAiZHBfbGluay5oIgo+ID4gPiA+Pj4gPiAgI2lu Y2x1ZGUgImRwX3VzYnBkLmgiCj4gPiA+ID4+PiA+IC0jaW5jbHVkZSAiZHB1X2VkaWRfcGFyc2Vy LmgiCj4gPiA+ID4+PiA+ICsKPiA+ID4gPj4+ID4gK3N0cnVjdCBlZGlkOwo+ID4gPiA+Pj4gPgo+ ID4gPiA+Pj4gPiAgZW51bSBkcF9sYW5lX2NvdW50IHsKPiA+ID4gPj4+ID4gICAgICAgRFBfTEFO RV9DT1VOVF8xID0gMSwKPiA+ID4gPj4+ID4gQEAgLTYzLDcgKzY0LDcgQEAgc3RydWN0IGRwX3Bh bmVsIHsKPiA+ID4gPj4+ID4gICAgICAgdTggZHNfcG9ydHNbRFBfTUFYX0RPV05TVFJFQU1fUE9S VFNdOwo+ID4gPiA+Pj4gPgo+ID4gPiA+Pj4gPiAgICAgICBzdHJ1Y3QgZHJtX2RwX2xpbmsgbGlu a19pbmZvOwo+ID4gPiA+Pj4gPiAtICAgICBzdHJ1Y3QgZHB1X2VkaWRfY3RybCAqZWRpZF9jdHJs Owo+ID4gPiA+Pj4gPiArICAgICBzdHJ1Y3QgZWRpZCAqZWRpZDsKPiA+ID4gPj4+ID4gICAgICAg c3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcjsKPiA+ID4gPj4+ID4gICAgICAgc3RydWN0 IGRwX3BhbmVsX2luZm8gcGluZm87Cj4gPiA+ID4+PiA+ICAgICAgIGJvb2wgdmlkZW9fdGVzdDsK PiA+ID4gPj4+ID4gQEAgLTcxLDggKzcyLDYgQEAgc3RydWN0IGRwX3BhbmVsIHsKPiA+ID4gPj4+ ID4gICAgICAgdTMyIHZpYzsKPiA+ID4gPj4+ID4gICAgICAgdTMyIG1heF9wY2xrX2toejsKPiA+ ID4gPj4+ID4KPiA+ID4gPj4+ID4gLSAgICAgaW50ICgqZHB1X2VkaWRfcmVnaXN0ZXIpKHN0cnVj dCBkcF9wYW5lbCAqZHBfcGFuZWwpOwo+ID4gPiA+Pj4gPiAtICAgICB2b2lkICgqZHB1X2VkaWRf ZGVyZWdpc3Rlcikoc3RydWN0IGRwX3BhbmVsICpkcF9wYW5lbCk7Cj4gPiA+ID4+PiA+ICAgICAg IGludCAoKmluaXRfaW5mbykoc3RydWN0IGRwX3BhbmVsICpkcF9wYW5lbCk7Cj4gPiA+ID4+PiA+ ICAgICAgIGludCAoKnRpbWluZ19jZmcpKHN0cnVjdCBkcF9wYW5lbCAqZHBfcGFuZWwpOwo+ID4g PiA+Pj4gPiAgICAgICBpbnQgKCpyZWFkX3NpbmtfY2Fwcykoc3RydWN0IGRwX3BhbmVsICpkcF9w YW5lbCwKPiA+ID4gPj4+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZHB1X2Vk aWRfcGFyc2VyLmMKPiA+ID4gPj4+ID4gYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2RwdV9lZGlkX3Bh cnNlci5jCj4gPiA+ID4+PiA+IGRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAo+ID4gPiA+Pj4gPiBp bmRleCAyNGY1ZjQ0YzE0OTIuLjAwMDAwMDAwMDAwMAo+ID4gPiA+Pj4gPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vbXNtL2RwdV9lZGlkX3BhcnNlci5jCj4gPiA+ID4+PiA+ICsrKyAvZGV2L251bGwK PiA+ID4gPj4+ID4gQEAgLTEsNjU3ICswLDAgQEAKPiA+ID4gPj4+ID4gLS8qIENvcHlyaWdodCAo YykgMjAxNy0yMDE4LCBUaGUgTGludXggRm91bmRhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K PiA+ID4gPj4+ID4gLSAqCj4gPiA+ID4+PiA+IC0gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCj4gPiA+ID4+PiA+IG1vZGlmeQo+ ID4gPiA+Pj4gPiAtICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSB2ZXJzaW9uIDIgYW5kCj4gPiA+ID4+PiA+IC0gKiBvbmx5IHZlcnNpb24gMiBh cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KPiA+ID4gPj4+ID4g LSAqCj4gPiA+ID4+PiA+IC0gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKPiA+ID4gPj4+ID4gLSAqIGJ1dCBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCj4gPiA+ID4+ PiA+IC0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlCj4gPiA+ID4+PiA+IC0gKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgo+ID4gPiA+Pj4gPiAtICovCj4gPiA+ID4+PiA+IC0KPiA+ID4gPj4+ ID4gLSNpbmNsdWRlIDxkcm0vZHJtX2VkaWQuaD4KPiA+ID4gPj4+ID4gLSNpbmNsdWRlIDxsaW51 eC9oZG1pLmg+Cj4gPiA+ID4+PiA+IC0KPiA+ID4gPj4+ID4gLSNpbmNsdWRlICJkcHVfa21zLmgi Cj4gPiA+ID4+PiA+IC0jaW5jbHVkZSAiZHB1X2VkaWRfcGFyc2VyLmgiCj4gPiA+ID4+PiA+IC0K PiA+ID4gPj4+ID4gLSNkZWZpbmUgREJDX1NUQVJUX09GRlNFVCA0Cj4gPiA+ID4+PiA+IC0jZGVm aW5lIEVESURfRFREX0xFTiAxOAo+ID4gPiA+Pj4gPiAtCj4gPiA+ID4+PiA+IC1lbnVtIGRhdGFf YmxvY2tfdHlwZXMgewo+ID4gPiA+Pj4gPiAtICAgICBSRVNFUlZFRCwKPiA+ID4gPj4+ID4gLSAg ICAgQVVESU9fREFUQV9CTE9DSywKPiA+ID4gPj4+ID4gLSAgICAgVklERU9fREFUQV9CTE9DSywK PiA+ID4gPj4+ID4gLSAgICAgVkVORE9SX1NQRUNJRklDX0RBVEFfQkxPQ0ssCj4gPiA+ID4+PiA+ IC0gICAgIFNQRUFLRVJfQUxMT0NBVElPTl9EQVRBX0JMT0NLLAo+ID4gPiA+Pj4gPiAtICAgICBW RVNBX0RUQ19EQVRBX0JMT0NLLAo+ID4gPiA+Pj4gPiAtICAgICBSRVNFUlZFRDIsCj4gPiA+ID4+ PiA+IC0gICAgIFVTRV9FWFRFTkRFRF9UQUcKPiA+ID4gPj4+ID4gLX07Cj4gPiA+ID4+PiA+IC0K PiA+ID4gPj4+ID4gLXN0YXRpYyB1OCAqZHB1X2ZpbmRfZWRpZF9leHRlbnNpb24oc3RydWN0IGVk aWQgKmVkaWQsIGludCBleHRfaWQpCj4gPiA+ID4+PiA+IC17Cj4gPiA+ID4+PiA+IC0gICAgIHU4 ICplZGlkX2V4dCA9IE5VTEw7Cj4gPiA+ID4+PiA+IC0gICAgIGludCBpOwo+ID4gPiA+Pj4gPiAt Cj4gPiA+ID4+PiA+IC0gICAgIC8qIE5vIEVESUQgb3IgRURJRCBleHRlbnNpb25zICovCj4gPiA+ ID4+PiA+IC0gICAgIGlmIChlZGlkID09IE5VTEwgfHwgZWRpZC0+ZXh0ZW5zaW9ucyA9PSAwKQo+ ID4gPiA+Pj4gPiAtICAgICAgICAgICAgIHJldHVybiBOVUxMOwo+ID4gPiA+Pj4gPiAtCj4gPiA+ ID4+PiA+IC0gICAgIC8qIEZpbmQgQ0VBIGV4dGVuc2lvbiAqLwo+ID4gPiA+Pj4gPiAtICAgICBm b3IgKGkgPSAwOyBpIDwgZWRpZC0+ZXh0ZW5zaW9uczsgaSsrKSB7Cj4gPiA+ID4+PiA+IC0gICAg ICAgICAgICAgZWRpZF9leHQgPSAodTggKillZGlkICsgRURJRF9MRU5HVEggKiAoaSArIDEpOwo+ ID4gPiA+Pj4gPiAtICAgICAgICAgICAgIGlmIChlZGlkX2V4dFswXSA9PSBleHRfaWQpCj4gPiA+ ID4+PiA+IC0gICAgICAgICAgICAgICAgICAgICBicmVhazsKPiA+ID4gPj4+ID4gLSAgICAgfQo+ ID4gPiA+Pj4gPiAtCj4gPiA+ID4+PiA+IC0gICAgIGlmIChpID09IGVkaWQtPmV4dGVuc2lvbnMp Cj4gPiA+ID4+PiA+IC0gICAgICAgICAgICAgcmV0dXJuIE5VTEw7Cj4gPiA+ID4+PiA+IC0KPiA+ ID4gPj4+ID4gLSAgICAgcmV0dXJuIGVkaWRfZXh0Owo+ID4gPiA+Pj4gPiAtfQo+ID4gPiA+Pj4g PiAtCj4gPiA+ID4+PiA+IC1zdGF0aWMgdTggKmRwdV9maW5kX2NlYV9leHRlbnNpb24oc3RydWN0 IGVkaWQgKmVkaWQpCj4gPiA+ID4+PiA+IC17Cj4gPiA+ID4+PiA+IC0gICAgIHJldHVybiBkcHVf ZmluZF9lZGlkX2V4dGVuc2lvbihlZGlkLCBEUFVfQ0VBX0VYVCk7Cj4gPiA+ID4+PiA+IC19Cj4g PiA+ID4+PiA+IC0KPiA+ID4gPj4+ID4gLXN0YXRpYyBpbnQKPiA+ID4gPj4+ID4gLWRwdV9jZWFf ZGJfcGF5bG9hZF9sZW4oY29uc3QgdTggKmRiKQo+ID4gPiA+Pj4gPiAtewo+ID4gPiA+Pj4gPiAt ICAgICByZXR1cm4gZGJbMF0gJiAweDFmOwo+ID4gPiA+Pj4gPiAtfQo+ID4gPiA+Pj4gPiAtCj4g PiA+ID4+PiA+IC1zdGF0aWMgaW50Cj4gPiA+ID4+PiA+IC1kcHVfY2VhX2RiX3RhZyhjb25zdCB1 OCAqZGIpCj4gPiA+ID4+PiA+IC17Cj4gPiA+ID4+PiA+IC0gICAgIHJldHVybiBkYlswXSA+PiA1 Owo+ID4gPiA+Pj4gPiAtfQo+ID4gPiA+Pj4gPiAtCj4gPiA+ID4+PiA+IC1zdGF0aWMgaW50Cj4g PiA+ID4+PiA+IC1kcHVfY2VhX3JldmlzaW9uKGNvbnN0IHU4ICpjZWEpCj4gPiA+ID4+PiA+IC17 Cj4gPiA+ID4+PiA+IC0gICAgIHJldHVybiBjZWFbMV07Cj4gPiA+ID4+PiA+IC19Cj4gPiA+ID4+ PiA+IC0KPiA+ID4gPj4+ID4gLXN0YXRpYyBpbnQKPiA+ID4gPj4+ID4gLWRwdV9jZWFfZGJfb2Zm c2V0cyhjb25zdCB1OCAqY2VhLCBpbnQgKnN0YXJ0LCBpbnQgKmVuZCkKPiA+ID4gPj4+ID4gLXsK PiA+ID4gPj4+ID4gLSAgICAgLyogRGF0YSBibG9jayBvZmZzZXQgaW4gQ0VBIGV4dGVuc2lvbiBi bG9jayAqLwo+ID4gPiA+Pj4gPiAtICAgICAqc3RhcnQgPSA0Owo+ID4gPiA+Pj4gPiAtICAgICAq ZW5kID0gY2VhWzJdOwo+ID4gPiA+Pj4gPiAtICAgICBpZiAoKmVuZCA9PSAwKQo+ID4gPiA+Pj4g PiAtICAgICAgICAgICAgICplbmQgPSAxMjc7Cj4gPiA+ID4+PiA+IC0gICAgIGlmICgqZW5kIDwg NCB8fCAqZW5kID4gMTI3KQo+ID4gPiA+Pj4gPiAtICAgICAgICAgICAgIHJldHVybiAtRVJBTkdF Owo+ID4gPiA+Pj4gPiAtICAgICByZXR1cm4gMDsKPiA+ID4gPj4+ID4gLX0KPiA+ID4gPj4+ID4g LQo+ID4gPiA+Pj4gPiAtI2RlZmluZSBkcHVfZm9yX2VhY2hfY2VhX2RiKGNlYSwgaSwgc3RhcnQs IGVuZCkgXAo+ID4gPiA+Pj4gPiAtZm9yICgoaSkgPSAoc3RhcnQpOyBcCj4gPiA+ID4+PiA+IC0o aSkgPCAoZW5kKSAmJiAoaSkgKyBkcHVfY2VhX2RiX3BheWxvYWRfbGVuKCYoY2VhKVsoaSldKSA8 IChlbmQpOyBcCj4gPiA+ID4+PiA+IC0oaSkgKz0gZHB1X2NlYV9kYl9wYXlsb2FkX2xlbigmKGNl YSlbKGkpXSkgKyAxKQo+ID4gPiA+Pj4gPiAtCj4gPiA+ID4+PiA+IC1zdGF0aWMgYm9vbCBkcHVf Y2VhX2RiX2lzX2hkbWlfaGZfdnNkYihjb25zdCB1OCAqZGIpCj4gPiA+ID4+PiA+IC17Cj4gPiA+ ID4+PiA+IC0gICAgIGludCBoZG1pX2lkOwo+ID4gPiA+Pj4gPiAtCj4gPiA+ID4+PiA+IC0gICAg IGlmIChkcHVfY2VhX2RiX3RhZyhkYikgIT0gVkVORE9SX1NQRUNJRklDX0RBVEFfQkxPQ0spCj4g PiA+ID4+PiA+IC0gICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwo+ID4gPiA+Pj4gPiAtCj4gPiA+ ID4+PiA+IC0gICAgIGlmIChkcHVfY2VhX2RiX3BheWxvYWRfbGVuKGRiKSA8IDcpCj4gPiA+ID4+ PiA+IC0gICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwo+ID4gPiA+Pj4gPiAtCj4gPiA+ID4+PiA+ IC0gICAgIGhkbWlfaWQgPSBkYlsxXSB8IChkYlsyXSA8PCA4KSB8IChkYlszXSA8PCAxNik7Cj4g PiA+ID4+PiA+IC0KPiA+ID4gPj4+ID4gLSAgICAgcmV0dXJuIGhkbWlfaWQgPT0gSERNSV9GT1JV TV9JRUVFX09VSTsKPiA+ID4gPj4+ID4gLX0KPiA+ID4gPj4+ID4gLQo+ID4gPiA+Pj4gPiAtc3Rh dGljIHU4ICpkcHVfZWRpZF9maW5kX2V4dGVuZGVkX3RhZ19ibG9jayhzdHJ1Y3QgZWRpZCAqZWRp ZCwgaW50Cj4gPiA+ID4+PiA+IGJsa19pZCkKPiA+ID4gPj4+ID4gLXsKPiA+ID4gPj4+ID4gLSAg ICAgdTggKmRiID0gTlVMTDsKPiA+ID4gPj4+ID4gLSAgICAgdTggKmNlYSA9IE5VTEw7Cj4gPiA+ ID4+PiA+IC0KPiA+ID4gPj4+ID4gLSAgICAgaWYgKCFlZGlkKSB7Cj4gPiA+ID4+PiA+IC0gICAg ICAgICAgICAgRFBVX0VSUk9SKCIlczogaW52YWxpZCBpbnB1dFxuIiwgX19mdW5jX18pOwo+ID4g PiA+Pj4gPiAtICAgICAgICAgICAgIHJldHVybiBOVUxMOwo+ID4gPiA+Pj4gPiAtICAgICB9Cj4g PiA+ID4+PiA+IC0KPiA+ID4gPj4+ID4gLSAgICAgY2VhID0gZHB1X2ZpbmRfY2VhX2V4dGVuc2lv bihlZGlkKTsKPiA+ID4gPj4+ID4gLQo+ID4gPiA+Pj4gPiAtICAgICBpZiAoY2VhICYmIGRwdV9j ZWFfcmV2aXNpb24oY2VhKSA+PSAzKSB7Cj4gPiA+ID4+PiA+IC0gICAgICAgICAgICAgaW50IGks IHN0YXJ0LCBlbmQ7Cj4gPiA+ID4+PiA+IC0KPiA+ID4gPj4+ID4gLSAgICAgICAgICAgICBpZiAo ZHB1X2NlYV9kYl9vZmZzZXRzKGNlYSwgJnN0YXJ0LCAmZW5kKSkKPiA+ID4gPj4+ID4gLSAgICAg ICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwo+ID4gPiA+Pj4gPiAtCj4gPiA+ID4+PiA+IC0g ICAgICAgICAgICAgZHB1X2Zvcl9lYWNoX2NlYV9kYihjZWEsIGksIHN0YXJ0LCBlbmQpIHsKPiA+ ID4gPj4+ID4gLSAgICAgICAgICAgICAgICAgICAgIGRiID0gJmNlYVtpXTsKPiA+ID4gPj4+ID4g LSAgICAgICAgICAgICAgICAgICAgIGlmICgoZHB1X2NlYV9kYl90YWcoZGIpID09IERQVV9FWFRF TkRFRF9UQUcpICYmCj4gPiA+ID4+PiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChk YlsxXSA9PSBibGtfaWQpKQo+ID4gPiA+Pj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAg ICByZXR1cm4gZGI7Cj4gPiA+ID4+PiA+IC0gICAgICAgICAgICAgfQo+ID4gPiA+Pj4gPiAtICAg ICB9Cj4gPiA+ID4+PiA+IC0gICAgIHJldHVybiBOVUxMOwo+ID4gPiA+Pj4gPiAtfQo+ID4gPiA+ Pj4gPiAtCj4gPiA+ID4+PiA+IC1zdGF0aWMgdTggKgo+ID4gPiA+Pj4gPiAtZHB1X2VkaWRfZmlu ZF9ibG9jayhzdHJ1Y3QgZWRpZCAqZWRpZCwgaW50IGJsa19pZCkKPiA+ID4gPj4+ID4gLXsKPiA+ ID4gPj4+ID4gLSAgICAgdTggKmRiID0gTlVMTDsKPiA+ID4gPj4+ID4gLSAgICAgdTggKmNlYSA9 IE5VTEw7Cj4gPiA+ID4+PiA+IC0KPiA+ID4gPj4+ID4gLSAgICAgaWYgKCFlZGlkKSB7Cj4gPiA+ ID4+PiA+IC0gICAgICAgICAgICAgRFBVX0VSUk9SKCIlczogaW52YWxpZCBpbnB1dFxuIiwgX19m dW5jX18pOwo+ID4gPiA+Pj4gPiAtICAgICAgICAgICAgIHJldHVybiBOVUxMOwo+ID4gPiA+Pj4g PiAtICAgICB9Cj4gPiA+ID4+PiA+IC0KPiA+ID4gPj4+ID4gLSAgICAgY2VhID0gZHB1X2ZpbmRf Y2VhX2V4dGVuc2lvbihlZGlkKTsKPiA+ID4gPj4+ID4gLQo+ID4gPiA+Pj4gPiAtICAgICBpZiAo Y2VhICYmIGRwdV9jZWFfcmV2aXNpb24oY2VhKSA+PSAzKSB7Cj4gPiA+ID4+PiA+IC0gICAgICAg ICAgICAgaW50IGksIHN0YXJ0LCBlbmQ7Cj4gPiA+ID4+PiA+IC0KPiA+ID4gPj4+ID4gLSAgICAg ICAgICAgICBpZiAoZHB1X2NlYV9kYl9vZmZzZXRzKGNlYSwgJnN0YXJ0LCAmZW5kKSkKPiA+ID4g Pj4+ID4gLSAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwo+ID4gPiA+Pj4gPiAtCj4g PiA+ID4+PiA+IC0gICAgICAgICAgICAgZHB1X2Zvcl9lYWNoX2NlYV9kYihjZWEsIGksIHN0YXJ0 LCBlbmQpIHsKPiA+ID4gPj4+ID4gLSAgICAgICAgICAgICAgICAgICAgIGRiID0gJmNlYVtpXTsK PiA+ID4gPj4+ID4gLSAgICAgICAgICAgICAgICAgICAgIGlmIChkcHVfY2VhX2RiX3RhZyhkYikg PT0gYmxrX2lkKQo+ID4gPiA+Pj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1 cm4gZGI7Cj4gPiA+ID4+PiA+IC0gICAgICAgICAgICAgfQo+ID4gPiA+Pj4gPiAtICAgICB9Cj4g PiA+ID4+PiA+IC0gICAgIHJldHVybiBOVUxMOwo+ID4gPiA+Pj4gPiAtfQo+ID4gPiA+Pj4gPiAt Cj4gPiA+ID4+PiA+IC0KPiA+ID4gPj4+ID4gLXN0YXRpYyBjb25zdCB1OCAqX2RwdV9lZGlkX2Zp bmRfYmxvY2soY29uc3QgdTggKmluX2J1ZiwgdTMyCj4gPiA+ID4+PiA+IHN0YXJ0X29mZnNldCwK PiA+ID4gPj4+ID4gLSAgICAgdTggdHlwZSwgdTggKmxlbikKPiA+ID4gPj4+ID4gLXsKPiA+ID4g Pj4+ID4gLSAgICAgLyogdGhlIHN0YXJ0IG9mIGRhdGEgYmxvY2sgY29sbGVjdGlvbiwgc3RhcnQg b2YgVmlkZW8gRGF0YSBCbG9jawo+ID4gPiA+Pj4gPiAqLwo+ID4gPiA+Pj4gPiAtICAgICB1MzIg b2Zmc2V0ID0gc3RhcnRfb2Zmc2V0Owo+ID4gPiA+Pj4gPiAtICAgICB1MzIgZGJjX29mZnNldCA9 IGluX2J1ZlsyXTsKPiA+ID4gPj4+ID4gLQo+ID4gPiA+Pj4gPiAtICAgICBEUFVfRURJRF9ERUJV RygiJXMgKyIsIF9fZnVuY19fKTsKPiA+ID4gPj4+ID4gLSAgICAgLyoKPiA+ID4gPj4+ID4gLSAg ICAgICogKiBlZGlkIGJ1ZmZlciAxLCBieXRlIDIgYmVpbmcgNCBtZWFucyBubyBub24tRFREL0Rh dGEgYmxvY2sKPiA+ID4gPj4+ID4gLSAgICAgICogICBjb2xsZWN0aW9uIHByZXNlbnQuCj4gPiA+ ID4+PiA+IC0gICAgICAqICogZWRpZCBidWZmZXIgMSwgYnl0ZSAyIGJlaW5nIDAgbWVhbnMgbm8g bm9uLURURC9EQVRBIGJsb2NrCj4gPiA+ID4+PiA+IC0gICAgICAqICAgY29sbGVjdGlvbiBwcmVz ZW50IGFuZCBubyBEVEQgZGF0YSBwcmVzZW50Lgo+ID4gPiA+Pj4gPiAtICAgICAgKi8KPiA+ID4g Pj4+ID4gLSAgICAgaWYgKChkYmNfb2Zmc2V0ID09IDApIHx8IChkYmNfb2Zmc2V0ID09IDQpKSB7 Cj4gPiA+ID4+PiA+IC0gICAgICAgICAgICAgRFBVX0VSUk9SKCJFRElEOiBubyBEVEQgb3Igbm9u LURURCBkYXRhIHByZXNlbnRcbiIpOwo+ID4gPiA+Pj4gPiAtICAgICAgICAgICAgIHJldHVybiBO VUxMOwo+ID4gPiA+Pj4gPiAtICAgICB9Cj4gPiA+ID4+PiA+IC0KPiA+ID4gPj4+ID4gLSAgICAg d2hpbGUgKG9mZnNldCA8IGRiY19vZmZzZXQpIHsKPiA+ID4gPj4+ID4gLSAgICAgICAgICAgICB1 OCBibG9ja19sZW4gPSBpbl9idWZbb2Zmc2V0XSAmIDB4MUY7Cj4gPiA+ID4+PiA+IC0KPiA+ID4g Pj4+ID4gLSAgICAgICAgICAgICBpZiAoKG9mZnNldCArIGJsb2NrX2xlbiA8PSBkYmNfb2Zmc2V0 KSAmJgo+ID4gPiA+Pj4gPiAtICAgICAgICAgICAgICAgICAoaW5fYnVmW29mZnNldF0gPj4gNSkg PT0gdHlwZSkgewo+ID4gPiA+Pj4gPiAtICAgICAgICAgICAgICAgICAgICAgKmxlbiA9IGJsb2Nr X2xlbjsKPiA+ID4gPj4+ID4gLSAgICAgICAgICAgICAgICAgICAgIERQVV9FRElEX0RFQlVHKCJi bG9jaz0lZCBmb3VuZCBAIDB4JXggdy8KPiA+ID4gPj4+ID4gbGVuPSVkXG4iLAo+ID4gPiA+Pj4g PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlLCBvZmZzZXQsIGJsb2NrX2xlbik7 Cj4gPiA+ID4+PiA+IC0KPiA+ID4gPj4+ID4gLSAgICAgICAgICAgICAgICAgICAgIHJldHVybiBp bl9idWYgKyBvZmZzZXQ7Cj4gPiA+ID4+PiA+IC0gICAgICAgICAgICAgfQo+ID4gPiA+Pj4gPiAt ICAgICAgICAgICAgIG9mZnNldCArPSAxICsgYmxvY2tfbGVuOwo+ID4gPiA+Pj4gPiAtICAgICB9 Cj4gPiA+ID4+PiA+IC0KPiA+ID4gPj4+ID4gLSAgICAgcmV0dXJuIE5VTEw7Cj4gPiA+ID4+PiA+ IC19Cj4gPiA+ID4+PiA+IC0KPiA+ID4gPj4+ID4gLXN0YXRpYyB2b2lkIGRwdV9lZGlkX2V4dHJh Y3RfdmVuZG9yX2lkKHN0cnVjdCBkcHVfZWRpZF9jdHJsCj4gPiA+ID4+PiA+ICplZGlkX2N0cmwp Cj4gPiA+ID4+PiA+IC17Cj4gPiA+ID4+PiA+IC0gICAgIGNoYXIgKnZlbmRvcl9pZDsKPiA+ID4g Pj4+ID4gLSAgICAgdTMyIGlkX2NvZGVzOwo+ID4gPiA+Pj4gPiAtCj4gPiA+ID4+PiA+IC0gICAg IERQVV9FRElEX0RFQlVHKCIlcyArIiwgX19mdW5jX18pOwo+ID4gPiA+Pj4gPiAtICAgICBpZiAo IWVkaWRfY3RybCkgewo+ID4gPiA+Pj4gPiAtICAgICAgICAgICAgIERQVV9FUlJPUigiJXM6IGlu dmFsaWQgaW5wdXRcbiIsIF9fZnVuY19fKTsKPiA+ID4gPj4+ID4gLSAgICAgICAgICAgICByZXR1 cm47Cj4gPiA+ID4+PiA+IC0gICAgIH0KPiA+ID4gPj4+ID4gLQo+ID4gPiA+Pj4gPiAtICAgICB2 ZW5kb3JfaWQgPSBlZGlkX2N0cmwtPnZlbmRvcl9pZDsKPiA+ID4gPj4+ID4gLSAgICAgaWRfY29k ZXMgPSAoKHUzMillZGlkX2N0cmwtPmVkaWQtPm1mZ19pZFswXSA8PCA4KSArCj4gPiA+ID4+PiA+ IC0gICAgICAgICAgICAgZWRpZF9jdHJsLT5lZGlkLT5tZmdfaWRbMV07Cj4gPiA+ID4+PiA+IC0K PiA+ID4gPj4+ID4gLSAgICAgdmVuZG9yX2lkWzBdID0gJ0EnIC0gMSArICgoaWRfY29kZXMgPj4g MTApICYgMHgxRik7Cj4gPiA+ID4+PiA+IC0gICAgIHZlbmRvcl9pZFsxXSA9ICdBJyAtIDEgKyAo KGlkX2NvZGVzID4+IDUpICYgMHgxRik7Cj4gPiA+ID4+PiA+IC0gICAgIHZlbmRvcl9pZFsyXSA9 ICdBJyAtIDEgKyAoaWRfY29kZXMgJiAweDFGKTsKPiA+ID4gPj4+ID4gLSAgICAgdmVuZG9yX2lk WzNdID0gMDsKPiA+ID4gPj4+ID4gLSAgICAgRFBVX0VESURfREVCVUcoInZlbmRvciBpZCBpcyAl cyAiLCB2ZW5kb3JfaWQpOwo+ID4gPiA+Pj4gPiAtICAgICBEUFVfRURJRF9ERUJVRygiJXMgLSIs IF9fZnVuY19fKTsKPiA+ID4gPj4+ID4gLX0KPiA+ID4gPj4+ID4gLQo+ID4gPiA+Pj4gPiAtc3Rh dGljIHZvaWQgZHB1X2VkaWRfc2V0X3k0MjBfc3VwcG9ydChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAq Y29ubmVjdG9yLAo+ID4gPiA+Pj4gPiAtdTMyIHZpZGVvX2Zvcm1hdCkKPiA+ID4gPj4+ID4gLXsK PiA+ID4gPj4+ID4gLSAgICAgdTggY2VhX21vZGUgPSAwOwo+ID4gPiA+Pj4gPiAtICAgICBzdHJ1 Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZTsKPiA+ID4gPj4+ID4gLSAgICAgdTMyIG1vZGVfZm10 X2ZsYWdzID0gMDsKPiA+ID4gPj4+ID4gLQo+ID4gPiA+Pj4gPiAtICAgICAvKiBOZWVkIHRvIGFk ZCBZNDIwIHN1cHBvcnQgZmxhZyB0byB0aGUgbW9kZXMgKi8KPiA+ID4gPj4+ID4gLSAgICAgbGlz dF9mb3JfZWFjaF9lbnRyeShtb2RlLCAmY29ubmVjdG9yLT5wcm9iZWRfbW9kZXMsIGhlYWQpIHsK PiA+ID4gPj4+ID4gLSAgICAgICAgICAgICAvKiBDYWNoZSB0aGUgZm9ybWF0IGZsYWdzIGJlZm9y ZSBjbGVhcmluZyAqLwo+ID4gPiA+Pj4gPiAtICAgICAgICAgICAgIG1vZGVfZm10X2ZsYWdzID0g bW9kZS0+ZmxhZ3M7Cj4gPiA+ID4+PiA+IC0gICAgICAgICAgICAgLyogQ2xlYXIgdGhlIFJHQi9Z VVYgZm9ybWF0IGZsYWdzIGJlZm9yZSBjYWxsaW5nIHVwc3RyZWFtCj4gPiA+ID4+PiA+IEFQSSAq Lwo+ID4gPiA+Pj4gPiAtICAgICAgICAgICAgIG1vZGUtPmZsYWdzICY9IH5EUFVfRFJNX01PREVf RkxBR19GTVRfTUFTSzsKPiA+ID4gPj4+ID4gLSAgICAgICAgICAgICBjZWFfbW9kZSA9IGRybV9t YXRjaF9jZWFfbW9kZShtb2RlKTsKPiA+ID4gPj4+ID4gLSAgICAgICAgICAgICAvKiBSZXN0b3Jl IHRoZSBmb3JtYXQgZmxhZ3MgKi8KPiA+ID4gPj4+ID4gLSAgICAgICAgICAgICBtb2RlLT5mbGFn cyA9IG1vZGVfZm10X2ZsYWdzOwo+ID4gPiA+Pj4gPiAtICAgICAgICAgICAgIGlmICgoY2VhX21v ZGUgIT0gMCkgJiYgKGNlYV9tb2RlID09IHZpZGVvX2Zvcm1hdCkpIHsKPiA+ID4gPj4+ID4gLSAg ICAgICAgICAgICAgICAgICAgIERQVV9FRElEX0RFQlVHKCIlcyBmb3VuZCBtYXRjaCBmb3IgJWQg IiwKPiA+ID4gPj4+ID4gX19mdW5jX18sCj4gPiA+ID4+PiA+IC0gICAgICAgICAgICAgICAgICAg ICB2aWRlb19mb3JtYXQpOwo+ID4gPiA+Pj4gPiAtICAgICAgICAgICAgICAgICAgICAgbW9kZS0+ ZmxhZ3MgfD0gRFJNX01PREVfRkxBR19TVVBQT1JUU19ZVVY7Cj4gPiA+ID4+PiA+IC0gICAgICAg ICAgICAgfQo+ID4gPiA+Pj4gPiAtICAgICB9Cj4gPiA+ID4+PiA+IC19Cj4gPiA+ID4+PiA+IC0K PiA+ID4gPj4+ID4gLXN0YXRpYyB2b2lkIGRwdV9lZGlkX3BhcnNlX1k0MjBDTURCKAo+ID4gPiA+ Pj4gPiAtc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rvciwgc3RydWN0IGRwdV9lZGlkX2N0 cmwgKmVkaWRfY3RybCwKPiA+ID4gPj4+ID4gLWNvbnN0IHU4ICpkYikKPiA+ID4gPj4+ID4gLXsK PiA+ID4gPj4+ID4gLSAgICAgdTMyIG9mZnNldCA9IDA7Cj4gPiA+ID4+PiA+IC0gICAgIHU4IGNt ZGJfbGVuID0gMDsKPiA+ID4gPj4+ID4gLSAgICAgdTggc3ZkX2xlbiA9IDA7Cj4gPiA+ID4+PiA+ IC0gICAgIGNvbnN0IHU4ICpzdmQgPSBOVUxMOwo+ID4gPiA+Pj4gPiAtICAgICB1MzIgaSA9IDAs IGogPSAwOwo+ID4gPiA+Pj4gPiAtICAgICB1MzIgdmlkZW9fZm9ybWF0ID0gMDsKPiA+ID4gPj4+ ID4gLQo+ID4gPiA+Pj4gPiAtICAgICBpZiAoIWVkaWRfY3RybCkgewo+ID4gPiA+Pj4gPiAtICAg ICAgICAgICAgIERQVV9FUlJPUigiJXM6IGVkaWRfY3RybCBpcyBOVUxMXG4iLCBfX2Z1bmNfXyk7 Cj4gPiA+ID4+PiA+IC0gICAgICAgICAgICAgcmV0dXJuOwo+ID4gPiA+Pj4gPiAtICAgICB9Cj4g PiA+ID4+PiA+IC0KPiA+ID4gPj4+ID4gLSAgICAgaWYgKCFkYikgewo+ID4gPiA+Pj4gPiAtICAg ICAgICAgICAgIERQVV9FUlJPUigiJXM6IGludmFsaWQgaW5wdXRcbiIsIF9fZnVuY19fKTsKPiA+ ID4gPj4+ID4gLSAgICAgICAgICAgICByZXR1cm47Cj4gPiA+ID4+PiA+IC0gICAgIH0KPiA+ID4g Pj4+ID4gLSAgICAgRFBVX0VESURfREVCVUcoIiVzICtcbiIsIF9fZnVuY19fKTsKPiA+ID4gPj4+ ID4gLSAgICAgY21kYl9sZW4gPSBkYlswXSAmIDB4MWY7Cj4gPiA+ID4+PiA+IC0KPiA+ID4gPj4+ ID4gLSAgICAgLyogQnl0ZSAzIHRvIEwrMSBjb250YWluIFNWRHMgKi8KPiA+ID4gPj4+ID4gLSAg ICAgb2Zmc2V0ICs9IDI7Cj4gPiA+ID4+PiA+IC0KPiA+ID4gPj4+ID4gLSAgICAgc3ZkID0gZHB1 X2VkaWRfZmluZF9ibG9jayhlZGlkX2N0cmwtPmVkaWQsIFZJREVPX0RBVEFfQkxPQ0spOwo+ID4g PiA+Pj4gPiAtCj4gPiA+ID4+PiA+IC0gICAgIGlmIChzdmQpIHsKPiA+ID4gPj4+ID4gLSAgICAg ICAgICAgICAvKm1vdmluZyB0byB0aGUgbmV4dCBieXRlIGFzIHZpYyBpbmZvIGJlZ2lucyB0aGVy ZSovCj4gPiA+ID4+PiA+IC0gICAgICAgICAgICAgc3ZkX2xlbiA9IHN2ZFswXSAmIDB4MWY7Cj4g PiA+ID4+PiA+IC0gICAgICAgICAgICAgKytzdmQ7Cj4gPiA+ID4+PiA+IC0gICAgIH0KPiA+ID4g Pj4+ID4gLQo+ID4gPiA+Pj4gPiAtICAgICBmb3IgKGkgPSAwOyBpIDwgc3ZkX2xlbjsgaSsrLCBq KyspIHsKPiA+ID4gPj4+ID4gLSAgICAgICAgICAgICB2aWRlb19mb3JtYXQgPSAqKHN2ZCArIGkp ICYgMHg3RjsKPiA+ID4gPj4+ID4gLSAgICAgICAgICAgICBpZiAoY21kYl9sZW4gPT0gMSkgewo+ ID4gPiA+Pj4gPiAtICAgICAgICAgICAgICAgICAgICAgLyogSWYgY21kYl9sZW4gaXMgMSwgaXQg bWVhbnMgYWxsIFNWRHMgc3VwcG9ydAo+ID4gPiA+Pj4gPiBZVVYgKi8KPiA+ID4gPj4+ID4gLSAg ICAgICAgICAgICAgICAgICAgIGRwdV9lZGlkX3NldF95NDIwX3N1cHBvcnQoY29ubmVjdG9yLAo+ ID4gPiA+Pj4gPiB2aWRlb19mb3JtYXQpOwo+ID4gPiA+Pj4gPiAtICAgICAgICAgICAgIH0gZWxz ZSBpZiAoZGJbb2Zmc2V0XSAmICgxIDw8IGopKSB7Cj4gPiA+ID4+PiA+IC0gICAgICAgICAgICAg ICAgICAgICBkcHVfZWRpZF9zZXRfeTQyMF9zdXBwb3J0KGNvbm5lY3RvciwKPiA+ID4gPj4+ID4g dmlkZW9fZm9ybWF0KTsKPiA+ID4gPj4+ID4gLQo+ID4gPiA+Pj4gPiAtICAgICAgICAgICAgICAg ICAgICAgaWYgKGogJiAweDgwKSB7Cj4gPiA+ID4+PiA+IC0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGogPSBqLzg7Cj4gPiA+ID4+PiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAg IG9mZnNldCsrOwo+ID4gPiA+Pj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo b2Zmc2V0ID49IGNtZGJfbGVuKQo+ID4gPiA+Pj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGJyZWFrOwo+ID4gPiA+Pj4gPiAtICAgICAgICAgICAgICAgICAgICAgfQo+ ID4gPiA+Pj4gPiAtICAgICAgICAgICAgIH0KPiA+ID4gPj4+ID4gLSAgICAgfQo+ID4gPiA+Pj4g PiAtCj4gPiA+ID4+PiA+IC0gICAgIERQVV9FRElEX0RFQlVHKCIlcyAtXG4iLCBfX2Z1bmNfXyk7 Cj4gPiA+ID4+PiA+IC0KPiA+ID4gPj4+ID4gLX0KPiA+ID4gPj4+ID4gLQo+ID4gPiA+Pj4gPiAt c3RhdGljIHZvaWQgZHB1X2VkaWRfcGFyc2VfWTQyMFZEQigKPiA+ID4gPj4+ID4gLXN0cnVjdCBk cm1fY29ubmVjdG9yICpjb25uZWN0b3IsIHN0cnVjdCBkcHVfZWRpZF9jdHJsICplZGlkX2N0cmws Cj4gPiA+ID4+PiA+IC1jb25zdCB1OCAqZGIpCj4gPiA+ID4+PiA+IC17Cj4gPiA+ID4+PiA+IC0g ICAgIHU4IGxlbiA9IGRiWzBdICYgMHgxZjsKPiA+ID4gPj4+ID4gLSAgICAgdTMyIGkgPSAwOwo+ ID4gPiA+Pj4gPiAtICAgICB1MzIgdmlkZW9fZm9ybWF0ID0gMDsKPiA+ID4gPj4+ID4gLQo+ID4g PiA+Pj4gPiAtICAgICBpZiAoIWVkaWRfY3RybCkgewo+ID4gPiA+Pj4gPiAtICAgICAgICAgICAg IERQVV9FUlJPUigiJXM6IGludmFsaWQgaW5wdXRcbiIsIF9fZnVuY19fKTsKPiA+ID4gPj4+ID4g LSAgICAgICAgICAgICByZXR1cm47Cj4gPiA+ID4+PiA+IC0gICAgIH0KPiA+ID4gPj4+ID4gLQo+ ID4gPiA+Pj4gPiAtICAgICBEUFVfRURJRF9ERUJVRygiJXMgK1xuIiwgX19mdW5jX18pOwo+ID4g PiA+Pj4gPiAtCj4gPiA+ID4+PiA+IC0gICAgIC8qIE9mZnNldCB0byBieXRlIDMgKi8KPiA+ID4g Pj4+ID4gLSAgICAgZGIgKz0gMjsKPiA+ID4gPj4+ID4gLSAgICAgZm9yIChpID0gMDsgaSA8IGxl biAtIDE7IGkrKykgewo+ID4gPiA+Pj4gPiAtICAgICAgICAgICAgIHZpZGVvX2Zvcm1hdCA9ICoo ZGIgKyBpKSAmIDB4N0Y7Cj4gPiA+ID4+PiA+IC0gICAgICAgICAgICAgLyoKPiA+ID4gPj4+ID4g LSAgICAgICAgICAgICAgKiBtb2RlIHdhcyBhbHJlYWR5IGFkZGVkIGluIGdldF9tb2RlcygpCj4g PiA+ID4+PiA+IC0gICAgICAgICAgICAgICogb25seSBuZWVkIHRvIHNldCB0aGUgWTQyMCBzdXBw b3J0IGZsYWcKPiA+ID4gPj4+ID4gLSAgICAgICAgICAgICAgKi8KPiA+ID4gPj4+ID4gLSAgICAg ICAgICAgICBkcHVfZWRpZF9zZXRfeTQyMF9zdXBwb3J0KGNvbm5lY3RvciwgdmlkZW9fZm9ybWF0 KTsKPiA+ID4gPj4+ID4gLSAgICAgfQo+ID4gPiA+Pj4gPiAtICAgICBEUFVfRURJRF9ERUJVRygi JXMgLSIsIF9fZnVuY19fKTsKPiA+ID4gPj4+ID4gLX0KPiA+ID4gPj4+ID4gLQo+ID4gPiA+Pj4g PiAtc3RhdGljIHZvaWQgZHB1X2VkaWRfc2V0X21vZGVfZm9ybWF0KAo+ID4gPiA+Pj4gPiAtc3Ry dWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rvciwgc3RydWN0IGRwdV9lZGlkX2N0cmwgKmVkaWRf Y3RybCkKPiA+ID4gPj4+ID4gLXsKPiA+ID4gPj4+ID4gLSAgICAgY29uc3QgdTggKmRiID0gTlVM TDsKPiA+ID4gPj4+ID4gLSAgICAgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGU7Cj4gPiA+ ID4+PiA+IC0KPiA+ID4gPj4+ID4gLSAgICAgRFBVX0VESURfREVCVUcoIiVzICtcbiIsIF9fZnVu Y19fKTsKPiA+ID4gPj4+ID4gLSAgICAgLyogU2V0IFlVViBtb2RlIHN1cHBvcnQgZmxhZ3MgZm9y IFlDYmNyNDIwVkRCICovCj4gPiA+ID4+PiA+IC0gICAgIGRiID0gZHB1X2VkaWRfZmluZF9leHRl bmRlZF90YWdfYmxvY2soZWRpZF9jdHJsLT5lZGlkLAo+ID4gPiA+Pj4gPiAtICAgICAgICAgICAg ICAgICAgICAgWTQyMF9WSURFT19EQVRBX0JMT0NLKTsKPiA+ID4gPj4+ID4gLSAgICAgaWYgKGRi KQo+ID4gPiA+Pj4gPiAtICAgICAgICAgICAgIGRwdV9lZGlkX3BhcnNlX1k0MjBWREIoY29ubmVj dG9yLCBlZGlkX2N0cmwsIGRiKTsKPiA+ID4gPj4+ID4gLSAgICAgZWxzZQo+ID4gPiA+Pj4gPiAt ICAgICAgICAgICAgIERQVV9FRElEX0RFQlVHKCJZQ2JDcjQyMCBWREIgaXMgbm90IHByZXNlbnRc biIpOwo+ID4gPiA+Pj4gPiAtCj4gPiA+ID4+PiA+IC0gICAgIC8qIFNldCBSR0Igc3VwcG9ydGVk IG9uIGFsbCBtb2RlcyB3aGVyZSBZVVYgaXMgbm90IHNldCAqLwo+ID4gPiA+Pj4gPiAtICAgICBs aXN0X2Zvcl9lYWNoX2VudHJ5KG1vZGUsICZjb25uZWN0b3ItPnByb2JlZF9tb2RlcywgaGVhZCkg ewo+ID4gPiA+Pj4gPiAtICAgICAgICAgICAgIGlmICghKG1vZGUtPmZsYWdzICYgRFJNX01PREVf RkxBR19TVVBQT1JUU19ZVVYpKQo+ID4gPiA+Pj4gPiAtICAgICAgICAgICAgICAgICAgICAgbW9k ZS0+ZmxhZ3MgfD0gRFJNX01PREVfRkxBR19TVVBQT1JUU19SR0I7Cj4gPiA+ID4+PiA+IC0gICAg IH0KPiA+ID4gPj4+ID4gLQo+ID4gPiA+Pj4gPiAtCj4gPiA+ID4+PiA+IC0gICAgIGRiID0gZHB1 X2VkaWRfZmluZF9leHRlbmRlZF90YWdfYmxvY2soZWRpZF9jdHJsLT5lZGlkLAo+ID4gPiA+Pj4g PiAtICAgICAgICAgICAgICAgICAgICAgWTQyMF9DQVBBQklMSVRZX01BUF9EQVRBX0JMT0NLKTsK PiA+ID4gPj4+ID4gLSAgICAgaWYgKGRiKQo+ID4gPiA+Pj4gPiAtICAgICAgICAgICAgIGRwdV9l ZGlkX3BhcnNlX1k0MjBDTURCKGNvbm5lY3RvciwgZWRpZF9jdHJsLCBkYik7Cj4gPiA+ID4+PiA+ IC0gICAgIGVsc2UKPiA+ID4gPj4+ID4gLSAgICAgICAgICAgICBEUFVfRURJRF9ERUJVRygiWUNi Q3I0MjAgQ01EQiBpcyBub3QgcHJlc2VudFxuIik7Cj4gPiA+ID4+PiA+IC0KPiA+ID4gPj4+ID4g LSAgICAgRFBVX0VESURfREVCVUcoIiVzIC1cbiIsIF9fZnVuY19fKTsKPiA+ID4gPj4+ID4gLX0K PiA+ID4gPj4+ID4gLQo+ID4gPiA+Pj4gPiAtc3RhdGljIHZvaWQgX2RwdV9lZGlkX3VwZGF0ZV9k Y19tb2RlcygKPiA+ID4gPj4+ID4gLXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsIHN0 cnVjdCBkcHVfZWRpZF9jdHJsICplZGlkX2N0cmwpCj4gPiA+ID4+PiA+IC17Cj4gPiA+ID4+PiA+ IC0gICAgIGludCBpLCBzdGFydCwgZW5kOwo+ID4gPiA+Pj4gPiAtICAgICB1OCAqZWRpZF9leHQs ICpoZG1pOwo+ID4gPiA+Pj4gPiAtICAgICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfaW5mbyAqZGlzcF9p bmZvOwo+ID4gPiA+Pj4gPiAtICAgICB1MzIgaGRtaV9kY195dXZfbW9kZXMgPSAwOwo+ID4gPiA+ Pj4gPiAtCj4gPiA+ID4+PiA+IC0gICAgIERQVV9FRElEX0RFQlVHKCIlcyArXG4iLCBfX2Z1bmNf Xyk7Cj4gPiA+ID4+PiA+IC0KPiA+ID4gPj4+ID4gLSAgICAgaWYgKCFjb25uZWN0b3IgfHwgIWVk aWRfY3RybCkgewo+ID4gPiA+Pj4gPiAtICAgICAgICAgICAgIERQVV9FUlJPUigiaW52YWxpZCBp bnB1dFxuIik7Cj4gPiA+ID4+PiA+IC0gICAgICAgICAgICAgcmV0dXJuOwo+ID4gPiA+Pj4gPiAt ICAgICB9Cj4gPiA+ID4+PiA+IC0KPiA+ID4gPj4+ID4gLSAgICAgZGlzcF9pbmZvID0gJmNvbm5l Y3Rvci0+ZGlzcGxheV9pbmZvOwo+ID4gPiA+Pj4gPiAtCj4gPiA+ID4+PiA+IC0gICAgIGVkaWRf ZXh0ID0gZHB1X2ZpbmRfY2VhX2V4dGVuc2lvbihlZGlkX2N0cmwtPmVkaWQpOwo+ID4gPiA+Pj4g PiAtCj4gPiA+ID4+PiA+IC0gICAgIGlmICghZWRpZF9leHQpIHsKPiA+ID4gPj4+ID4gLSAgICAg ICAgICAgICBEUFVfRVJST1IoIm5vIGNlYSBleHRlbnNpb25cbiIpOwo+ID4gPiA+Pj4gPiAtICAg ICAgICAgICAgIHJldHVybjsKPiA+ID4gPj4+ID4gLSAgICAgfQo+ID4gPiA+Pj4gPiAtCj4gPiA+ ID4+PiA+IC0gICAgIGlmIChkcHVfY2VhX2RiX29mZnNldHMoZWRpZF9leHQsICZzdGFydCwgJmVu ZCkpCj4gPiA+ID4+PiA+IC0gICAgICAgICAgICAgcmV0dXJuOwo+ID4gPiA+Pj4gPiAtCj4gPiA+ ID4+PiA+IC0gICAgIGRwdV9mb3JfZWFjaF9jZWFfZGIoZWRpZF9leHQsIGksIHN0YXJ0LCBlbmQp IHsKPiA+ID4gPj4+ID4gLSAgICAgICAgICAgICBpZiAoZHB1X2NlYV9kYl9pc19oZG1pX2hmX3Zz ZGIoJmVkaWRfZXh0W2ldKSkgewo+ID4gPiA+Pj4gPiAtCj4gPiA+ID4+PiA+IC0gICAgICAgICAg ICAgICAgICAgICBoZG1pID0gJmVkaWRfZXh0W2ldOwo+ID4gPiA+Pj4gPiAtCj4gPiA+ID4+PiA+ IC0gICAgICAgICAgICAgICAgICAgICBpZiAoZHB1X2NlYV9kYl9wYXlsb2FkX2xlbihoZG1pKSA8 IDcpCj4gPiA+ID4+PiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwo+ ID4gPiA+Pj4gPiAtCj4gPiA+ID4+PiA+IC0gICAgICAgICAgICAgICAgICAgICBpZiAoaGRtaVs3 XSAmIERSTV9FRElEX1lDQkNSNDIwX0RDXzMwKSB7Cj4gPiA+ID4+PiA+IC0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGhkbWlfZGNfeXV2X21vZGVzIHw9Cj4gPiA+ID4+PiA+IERSTV9FRElE X1lDQkNSNDIwX0RDXzMwOwo+ID4gPiA+Pj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBEUFVfRURJRF9ERUJVRygiWTQyMCAzMC1iaXQKPiA+ID4gPj4+ID4gc3VwcG9ydGVkXG4iKTsK PiA+ID4gPj4+ID4gLSAgICAgICAgICAgICAgICAgICAgIH0KPiA+ID4gPj4+ID4gLQo+ID4gPiA+ Pj4gPiAtICAgICAgICAgICAgICAgICAgICAgaWYgKGhkbWlbN10gJiBEUk1fRURJRF9ZQ0JDUjQy MF9EQ18zNikgewo+ID4gPiA+Pj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZG1p X2RjX3l1dl9tb2RlcyB8PQo+ID4gPiA+Pj4gPiBEUk1fRURJRF9ZQ0JDUjQyMF9EQ18zNjsKPiA+ ID4gPj4+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFBVX0VESURfREVCVUcoIlk0 MjAgMzYtYml0Cj4gPiA+ID4+PiA+IHN1cHBvcnRlZFxuIik7Cj4gPiA+ID4+PiA+IC0gICAgICAg ICAgICAgICAgICAgICB9Cj4gPiA+ID4+PiA+IC0KPiA+ID4gPj4+ID4gLSAgICAgICAgICAgICAg ICAgICAgIGlmIChoZG1pWzddICYgRFJNX0VESURfWUNCQ1I0MjBfRENfNDgpIHsKPiA+ID4gPj4+ ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGRtaV9kY195dXZfbW9kZXMgfD0KPiA+ ID4gPj4+ID4gRFJNX0VESURfWUNCQ1I0MjBfRENfMzY7Cj4gPiA+ID4+PiA+IC0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgIERQVV9FRElEX0RFQlVHKCJZNDIwIDQ4LWJpdAo+ID4gPiA+Pj4g PiBzdXBwb3J0ZWRcbiIpOwo+ID4gPiA+Pj4gPiAtICAgICAgICAgICAgICAgICAgICAgfQo+ID4g PiA+Pj4gPiAtICAgICAgICAgICAgIH0KPiA+ID4gPj4+ID4gLSAgICAgfQo+ID4gPiA+Pj4gPiAt Cj4gPiA+ID4+PiA+IC0gICAgIGRpc3BfaW5mby0+ZWRpZF9oZG1pX2RjX21vZGVzIHw9IGhkbWlf ZGNfeXV2X21vZGVzOwo+ID4gPiA+Pj4gPiAtCj4gPiA+ID4+PiA+IC0gICAgIERQVV9FRElEX0RF QlVHKCIlcyAtXG4iLCBfX2Z1bmNfXyk7Cj4gPiA+ID4+PiA+IC19Cj4gPiA+ID4+PiA+IC0KPiA+ ID4gPj4+ID4gLXN0YXRpYyB2b2lkIF9kcHVfZWRpZF9leHRyYWN0X2F1ZGlvX2RhdGFfYmxvY2tz KAo+ID4gPiA+Pj4gPiAtICAgICBzdHJ1Y3QgZHB1X2VkaWRfY3RybCAqZWRpZF9jdHJsKQo+ID4g PiA+Pj4gPiAtewo+ID4gPiA+Pj4gPiAtICAgICB1OCBsZW4gPSAwOwo+ID4gPiA+Pj4gPiAtICAg ICB1OCBhZGJfbWF4ID0gMDsKPiA+ID4gPj4+ID4gLSAgICAgY29uc3QgdTggKmFkYiA9IE5VTEw7 Cj4gPiA+ID4+PiA+IC0gICAgIHUzMiBvZmZzZXQgPSBEQkNfU1RBUlRfT0ZGU0VUOwo+ID4gPiA+ Pj4gPiAtICAgICB1OCAqY2VhID0gTlVMTDsKPiA+ID4gPj4+ID4gLQo+ID4gPiA+Pj4gPiAtICAg ICBpZiAoIWVkaWRfY3RybCkgewo+ID4gPiA+Pj4gPiAtICAgICAgICAgICAgIERQVV9FUlJPUigi aW52YWxpZCBlZGlkX2N0cmxcbiIpOwo+ID4gPiA+Pj4gPiAtICAgICAgICAgICAgIHJldHVybjsK PiA+ID4gPj4+ID4gLSAgICAgfQo+ID4gPiA+Pj4gPiAtICAgICBEUFVfRURJRF9ERUJVRygiJXMg KyIsIF9fZnVuY19fKTsKPiA+ID4gPj4+ID4gLSAgICAgY2VhID0gZHB1X2ZpbmRfY2VhX2V4dGVu c2lvbihlZGlkX2N0cmwtPmVkaWQpOwo+ID4gPiA+Pj4gPiAtICAgICBpZiAoIWNlYSkgewo+ID4g PiA+Pj4gPiAtICAgICAgICAgICAgIERQVV9ERUJVRygiQ0VBIGV4dGVuc2lvbiBub3QgZm91bmRc biIpOwo+ID4gPiA+Pj4gPiAtICAgICAgICAgICAgIHJldHVybjsKPiA+ID4gPj4+ID4gLSAgICAg fQo+ID4gPiA+Pj4gPiAtCj4gPiA+ID4+PiA+IC0gICAgIGVkaWRfY3RybC0+YWRiX3NpemUgPSAw Owo+ID4gPiA+Pj4gPiAtCj4gPiA+ID4+PiA+IC0gICAgIG1lbXNldChlZGlkX2N0cmwtPmF1ZGlv X2RhdGFfYmxvY2ssIDAsCj4gPiA+ID4+PiA+IC0gICAgICAgICAgICAgc2l6ZW9mKGVkaWRfY3Ry bC0+YXVkaW9fZGF0YV9ibG9jaykpOwo+ID4gPiA+Pj4gPiAtCj4gPiA+ID4+PiA+IC0gICAgIGRv IHsKPiA+ID4gPj4+ID4gLSAgICAgICAgICAgICBsZW4gPSAwOwo+ID4gPiA+Pj4gPiAtICAgICAg ICAgICAgIGFkYiA9IF9kcHVfZWRpZF9maW5kX2Jsb2NrKGNlYSwgb2Zmc2V0LCBBVURJT19EQVRB X0JMT0NLLAo+ID4gPiA+Pj4gPiAtICAgICAgICAgICAgICAgICAgICAgJmxlbik7Cj4gPiA+ID4+ PiA+IC0KPiA+ID4gPj4+ID4gLSAgICAgICAgICAgICBpZiAoKGFkYiA9PSBOVUxMKSB8fCAobGVu ID4gTUFYX0FVRElPX0RBVEFfQkxPQ0tfU0laRSB8fAo+ID4gPiA+Pj4gPiAtICAgICAgICAgICAg ICAgICAgICAgYWRiX21heCA+PSBNQVhfTlVNQkVSX0FEQikpIHsKPiA+ID4gPj4+ID4gLSAgICAg ICAgICAgICAgICAgICAgIGlmICghZWRpZF9jdHJsLT5hZGJfc2l6ZSkgewo+ID4gPiA+Pj4gPiAt ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEUFVfREVCVUcoIk5vL0ludmFsaWQgQXVkaW8g RGF0YQo+ID4gPiA+Pj4gPiBCbG9ja1xuIik7Cj4gPiA+ID4+PiA+IC0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHJldHVybjsKPiA+ID4gPj4+ID4gLSAgICAgICAgICAgICAgICAgICAgIH0K PiA+ID4gPj4+ID4gLQo+ID4gPiA+Pj4gPiAtICAgICAgICAgICAgICAgICAgICAgY29udGludWU7 Cj4gPiA+ID4+PiA+IC0gICAgICAgICAgICAgfQo+ID4gPiA+Pj4gPiAtCj4gPiA+ID4+PiA+IC0g ICAgICAgICAgICAgbWVtY3B5KGVkaWRfY3RybC0+YXVkaW9fZGF0YV9ibG9jayArIGVkaWRfY3Ry bC0+YWRiX3NpemUsCj4gPiA+ID4+PiA+IC0gICAgICAgICAgICAgICAgICAgICBhZGIgKyAxLCBs ZW4pOwo+ID4gPiA+Pj4gPiAtICAgICAgICAgICAgIG9mZnNldCA9IChhZGIgLSBjZWEpICsgMSAr IGxlbjsKPiA+ID4gPj4+ID4gLQo+ID4gPiA+Pj4gPiAtICAgICAgICAgICAgIGVkaWRfY3RybC0+ YWRiX3NpemUgKz0gbGVuOwo+ID4gPiA+Pj4gPiAtICAgICAgICAgICAgIGFkYl9tYXgrKzsKPiA+ ID4gPj4+ID4gLSAgICAgfSB3aGlsZSAoYWRiKTsKPiA+ID4gPj4+ID4gLSAgICAgRFBVX0VESURf REVCVUcoIiVzIC0iLCBfX2Z1bmNfXyk7Cj4gPiA+ID4+PiA+IC19Cj4gPiA+ID4+PiA+IC0KPiA+ ID4gPj4+ID4gLXN0YXRpYyB2b2lkIF9kcHVfZWRpZF9leHRyYWN0X3NwZWFrZXJfYWxsb2NhdGlv bl9kYXRhKAo+ID4gPiA+Pj4gPiAtICAgICBzdHJ1Y3QgZHB1X2VkaWRfY3RybCAqZWRpZF9jdHJs KQo+ID4gPiA+Pj4gPiAtewo+ID4gPiA+Pj4gPiAtICAgICB1OCBsZW47Cj4gPiA+ID4+PiA+IC0g ICAgIGNvbnN0IHU4ICpzYWRiID0gTlVMTDsKPiA+ID4gPj4+ID4gLSAgICAgdTggKmNlYSA9IE5V TEw7Cj4gPiA+ID4+PiA+IC0KPiA+ID4gPj4+ID4gLSAgICAgaWYgKCFlZGlkX2N0cmwpIHsKPiA+ ID4gPj4+ID4gLSAgICAgICAgICAgICBEUFVfRVJST1IoImludmFsaWQgZWRpZF9jdHJsXG4iKTsK PiA+ID4gPj4+ID4gLSAgICAgICAgICAgICByZXR1cm47Cj4gPiA+ID4+PiA+IC0gICAgIH0KPiA+ ID4gPj4+ID4gLSAgICAgRFBVX0VESURfREVCVUcoIiVzICsiLCBfX2Z1bmNfXyk7Cj4gPiA+ID4+ PiA+IC0gICAgIGNlYSA9IGRwdV9maW5kX2NlYV9leHRlbnNpb24oZWRpZF9jdHJsLT5lZGlkKTsK PiA+ID4gPj4+ID4gLSAgICAgaWYgKCFjZWEpIHsKPiA+ID4gPj4+ID4gLSAgICAgICAgICAgICBE UFVfREVCVUcoIkNFQSBleHRlbnNpb24gbm90IGZvdW5kXG4iKTsKPiA+ID4gPj4+ID4gLSAgICAg ICAgICAgICByZXR1cm47Cj4gPiA+ID4+PiA+IC0gICAgIH0KPiA+ID4gPj4+ID4gLQo+ID4gPiA+ Pj4gPiAtICAgICBzYWRiID0gX2RwdV9lZGlkX2ZpbmRfYmxvY2soY2VhLCBEQkNfU1RBUlRfT0ZG U0VULAo+ID4gPiA+Pj4gPiAtICAgICAgICAgICAgIFNQRUFLRVJfQUxMT0NBVElPTl9EQVRBX0JM T0NLLCAmbGVuKTsKPiA+ID4gPj4+ID4gLSAgICAgaWYgKChzYWRiID09IE5VTEwpIHx8IChsZW4g IT0gTUFYX1NQS1JfQUxMT0NfREFUQV9CTE9DS19TSVpFKSkgewo+ID4gPiA+Pj4gPiAtICAgICAg ICAgICAgIERQVV9ERUJVRygiTm8vSW52YWxpZCBTcGVha2VyIEFsbG9jYXRpb24gRGF0YSBCbG9j a1xuIik7Cj4gPiA+ID4+PiA+IC0gICAgICAgICAgICAgcmV0dXJuOwo+ID4gPiA+Pj4gPiAtICAg ICB9Cj4gPiA+ID4+PiA+IC0KPiA+ID4gPj4+ID4gLSAgICAgbWVtY3B5KGVkaWRfY3RybC0+c3Br cl9hbGxvY19kYXRhX2Jsb2NrLCBzYWRiICsgMSwgbGVuKTsKPiA+ID4gPj4+ID4gLSAgICAgZWRp ZF9jdHJsLT5zYWRiX3NpemUgPSBsZW47Cj4gPiA+ID4+PiA+IC0KPiA+ID4gPj4+ID4gLSAgICAg RFBVX0VESURfREVCVUcoInNwZWFrZXIgYWxsb2MgZGF0YSBTUCBieXRlID0gJTA4eAo+ID4gPiA+ Pj4gPiAlcyVzJXMlcyVzJXMlc1xuIiwKPiA+ID4gPj4+ID4gLSAgICAgICAgICAgICBzYWRiWzFd LAo+ID4gPiA+Pj4gPiAtICAgICAgICAgICAgIChzYWRiWzFdICYgQklUKDApKSA/ICJGTC9GUiwi IDogIiIsCj4gPiA+ID4+PiA+IC0gICAgICAgICAgICAgKHNhZGJbMV0gJiBCSVQoMSkpID8gIkxG RSwiIDogIiIsCj4gPiA+ID4+PiA+IC0gICAgICAgICAgICAgKHNhZGJbMV0gJiBCSVQoMikpID8g IkZDLCIgOiAiIiwKPiA+ID4gPj4+ID4gLSAgICAgICAgICAgICAoc2FkYlsxXSAmIEJJVCgzKSkg PyAiUkwvUlIsIiA6ICIiLAo+ID4gPiA+Pj4gPiAtICAgICAgICAgICAgIChzYWRiWzFdICYgQklU KDQpKSA/ICJSQywiIDogIiIsCj4gPiA+ID4+PiA+IC0gICAgICAgICAgICAgKHNhZGJbMV0gJiBC SVQoNSkpID8gIkZMQy9GUkMsIiA6ICIiLAo+ID4gPiA+Pj4gPiAtICAgICAgICAgICAgIChzYWRi WzFdICYgQklUKDYpKSA/ICJSTEMvUlJDLCIgOiAiIik7Cj4gPiA+ID4+PiA+IC0gICAgIERQVV9F RElEX0RFQlVHKCIlcyAtIiwgX19mdW5jX18pOwo+ID4gPiA+Pj4gPiAtfQo+ID4gPiA+Pj4gPiAt Cj4gPiA+ID4+PiA+IC1zdHJ1Y3QgZHB1X2VkaWRfY3RybCAqZHB1X2VkaWRfaW5pdCh2b2lkKQo+ ID4gPiA+Pj4gPiAtewo+ID4gPiA+Pj4gPiAtICAgICBzdHJ1Y3QgZHB1X2VkaWRfY3RybCAqZWRp ZF9jdHJsID0gTlVMTDsKPiA+ID4gPj4+ID4gLQo+ID4gPiA+Pj4gPiAtICAgICBEUFVfRURJRF9E RUJVRygiJXMgK1xuIiwgX19mdW5jX18pOwo+ID4gPiA+Pj4gPiAtICAgICBlZGlkX2N0cmwgPSBr emFsbG9jKHNpemVvZigqZWRpZF9jdHJsKSwgR0ZQX0tFUk5FTCk7Cj4gPiA+ID4+PiA+IC0gICAg IGlmICghZWRpZF9jdHJsKSB7Cj4gPiA+ID4+PiA+IC0gICAgICAgICAgICAgRFBVX0VSUk9SKCJl ZGlkX2N0cmwgYWxsb2MgZmFpbGVkXG4iKTsKPiA+ID4gPj4+ID4gLSAgICAgICAgICAgICByZXR1 cm4gTlVMTDsKPiA+ID4gPj4+ID4gLSAgICAgfQo+ID4gPiA+Pj4gPiAtICAgICBtZW1zZXQoKGVk aWRfY3RybCksIDAsIHNpemVvZigqZWRpZF9jdHJsKSk7Cj4gPiA+ID4+PiA+IC0gICAgIERQVV9F RElEX0RFQlVHKCIlcyAtXG4iLCBfX2Z1bmNfXyk7Cj4gPiA+ID4+PiA+IC0gICAgIHJldHVybiBl ZGlkX2N0cmw7Cj4gPiA+ID4+PiA+IC19Cj4gPiA+ID4+PiA+IC0KPiA+ID4gPj4+ID4gLXZvaWQg ZHB1X2ZyZWVfZWRpZCh2b2lkICoqaW5wdXQpCj4gPiA+ID4+PiA+IC17Cj4gPiA+ID4+PiA+IC0g ICAgIHN0cnVjdCBkcHVfZWRpZF9jdHJsICplZGlkX2N0cmwgPSAoc3RydWN0IGRwdV9lZGlkX2N0 cmwKPiA+ID4gPj4+ID4gKikoKmlucHV0KTsKPiA+ID4gPj4+ID4gLQo+ID4gPiA+Pj4gPiAtICAg ICBEUFVfRURJRF9ERUJVRygiJXMgKyIsIF9fZnVuY19fKTsKPiA+ID4gPj4+ID4gLSAgICAga2Zy ZWUoZWRpZF9jdHJsLT5lZGlkKTsKPiA+ID4gPj4+ID4gLSAgICAgZWRpZF9jdHJsLT5lZGlkID0g TlVMTDsKPiA+ID4gPj4+ID4gLX0KPiA+ID4gPj4+ID4gLQo+ID4gPiA+Pj4gPiAtdm9pZCBkcHVf ZWRpZF9kZWluaXQodm9pZCAqKmlucHV0KQo+ID4gPiA+Pj4gPiAtewo+ID4gPiA+Pj4gPiAtICAg ICBzdHJ1Y3QgZHB1X2VkaWRfY3RybCAqZWRpZF9jdHJsID0gKHN0cnVjdCBkcHVfZWRpZF9jdHJs Cj4gPiA+ID4+PiA+ICopKCppbnB1dCk7Cj4gPiA+ID4+PiA+IC0KPiA+ID4gPj4+ID4gLSAgICAg RFBVX0VESURfREVCVUcoIiVzICsiLCBfX2Z1bmNfXyk7Cj4gPiA+ID4+PiA+IC0gICAgIGRwdV9m cmVlX2VkaWQoKHZvaWQgKikmZWRpZF9jdHJsKTsKPiA+ID4gPj4+ID4gLSAgICAga2ZyZWUoZWRp ZF9jdHJsKTsKPiA+ID4gPj4+ID4gLSAgICAgRFBVX0VESURfREVCVUcoIiVzIC0iLCBfX2Z1bmNf Xyk7Cj4gPiA+ID4+PiA+IC19Cj4gPiA+ID4+PiA+IC0KPiA+ID4gPj4+ID4gLWludCBfZHB1X2Vk aWRfdXBkYXRlX21vZGVzKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4gPiA+ID4+ PiA+IC0gICAgIHZvaWQgKmlucHV0KQo+ID4gPiA+Pj4gPiAtewo+ID4gPiA+Pj4gPiAtICAgICBp bnQgcmMgPSAwOwo+ID4gPiA+Pj4gPiAtICAgICBzdHJ1Y3QgZHB1X2VkaWRfY3RybCAqZWRpZF9j dHJsID0gKHN0cnVjdCBkcHVfZWRpZF9jdHJsCj4gPiA+ID4+PiA+ICopKGlucHV0KTsKPiA+ID4g Pj4+ID4gLQo+ID4gPiA+Pj4gPiAtICAgICBEUFVfRURJRF9ERUJVRygiJXMgKyIsIF9fZnVuY19f KTsKPiA+ID4gPj4+ID4gLSAgICAgaWYgKGVkaWRfY3RybC0+ZWRpZCkgewo+ID4gPiA+Pj4gPiAt ICAgICAgICAgICAgIGRybV9tb2RlX2Nvbm5lY3Rvcl91cGRhdGVfZWRpZF9wcm9wZXJ0eShjb25u ZWN0b3IsCj4gPiA+ID4+PiA+IC0gICAgICAgICAgICAgICAgICAgICBlZGlkX2N0cmwtPmVkaWQp Owo+ID4gPiA+Pj4gPiAtCj4gPiA+ID4+PiA+IC0gICAgICAgICAgICAgcmMgPSBkcm1fYWRkX2Vk aWRfbW9kZXMoY29ubmVjdG9yLCBlZGlkX2N0cmwtPmVkaWQpOwo+ID4gPiA+Pj4gPiAtICAgICAg ICAgICAgIGRwdV9lZGlkX3NldF9tb2RlX2Zvcm1hdChjb25uZWN0b3IsIGVkaWRfY3RybCk7Cj4g PiA+ID4+PiA+IC0gICAgICAgICAgICAgX2RwdV9lZGlkX3VwZGF0ZV9kY19tb2Rlcyhjb25uZWN0 b3IsIGVkaWRfY3RybCk7Cj4gPiA+ID4+PiA+IC0gICAgICAgICAgICAgRFBVX0VESURfREVCVUco IiVzIC0iLCBfX2Z1bmNfXyk7Cj4gPiA+ID4+PiA+IC0gICAgICAgICAgICAgcmV0dXJuIHJjOwo+ ID4gPiA+Pj4gPiAtICAgICB9Cj4gPiA+ID4+PiA+IC0KPiA+ID4gPj4+ID4gLSAgICAgZHJtX21v ZGVfY29ubmVjdG9yX3VwZGF0ZV9lZGlkX3Byb3BlcnR5KGNvbm5lY3RvciwgTlVMTCk7Cj4gPiA+ ID4+PiA+IC0gICAgIERQVV9FRElEX0RFQlVHKCIlcyBudWxsIGVkaWQgLSIsIF9fZnVuY19fKTsK PiA+ID4gPj4+ID4gLSAgICAgcmV0dXJuIHJjOwo+ID4gPiA+Pj4gPiAtfQo+ID4gPiA+Pj4gPiAt Cj4gPiA+ID4+PiA+IC11MzIgZHB1X2dldF9zaW5rX2JwYyh2b2lkICppbnB1dCkKPiA+ID4gPj4+ ID4gLXsKPiA+ID4gPj4+ID4gLSAgICAgc3RydWN0IGRwdV9lZGlkX2N0cmwgKmVkaWRfY3RybCA9 IChzdHJ1Y3QgZHB1X2VkaWRfY3RybAo+ID4gPiA+Pj4gPiAqKShpbnB1dCk7Cj4gPiA+ID4+PiA+ IC0gICAgIHN0cnVjdCBlZGlkICplZGlkID0gZWRpZF9jdHJsLT5lZGlkOwo+ID4gPiA+Pj4gPiAt Cj4gPiA+ID4+PiA+IC0gICAgIGlmICghZWRpZCkgewo+ID4gPiA+Pj4gPiAtICAgICAgICAgICAg IERQVV9FUlJPUigiaW52YWxpZCBlZGlkIGlucHV0XG4iKTsKPiA+ID4gPj4+ID4gLSAgICAgICAg ICAgICByZXR1cm4gMDsKPiA+ID4gPj4+ID4gLSAgICAgfQo+ID4gPiA+Pj4gPiAtCj4gPiA+ID4+ PiA+IC0gICAgIGlmICgoZWRpZC0+cmV2aXNpb24gPCAzKSB8fCAhKGVkaWQtPmlucHV0ICYKPiA+ ID4gPj4+ID4gRFJNX0VESURfSU5QVVRfRElHSVRBTCkpCj4gPiA+ID4+PiA+IC0gICAgICAgICAg ICAgcmV0dXJuIDA7Cj4gPiA+ID4+PiA+IC0KPiA+ID4gPj4+ID4gLSAgICAgaWYgKGVkaWQtPnJl dmlzaW9uIDwgNCkgewo+ID4gPiA+Pj4gPiAtICAgICAgICAgICAgIGlmIChlZGlkLT5pbnB1dCAm IERSTV9FRElEX0RJR0lUQUxfVFlQRV9EVkkpCj4gPiA+ID4+PiA+IC0gICAgICAgICAgICAgICAg ICAgICByZXR1cm4gODsKPiA+ID4gPj4+ID4gLSAgICAgICAgICAgICBlbHNlCj4gPiA+ID4+PiA+ IC0gICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKPiA+ID4gPj4+ID4gLSAgICAgfQo+ID4g PiA+Pj4gPiAtCj4gPiA+ID4+PiA+IC0gICAgIHN3aXRjaCAoZWRpZC0+aW5wdXQgJiBEUk1fRURJ RF9ESUdJVEFMX0RFUFRIX01BU0spIHsKPiA+ID4gPj4+ID4gLSAgICAgY2FzZSBEUk1fRURJRF9E SUdJVEFMX0RFUFRIXzY6Cj4gPiA+ID4+PiA+IC0gICAgICAgICAgICAgcmV0dXJuIDY7Cj4gPiA+ ID4+PiA+IC0gICAgIGNhc2UgRFJNX0VESURfRElHSVRBTF9ERVBUSF84Ogo+ID4gPiA+Pj4gPiAt ICAgICAgICAgICAgIHJldHVybiA4Owo+ID4gPiA+Pj4gPiAtICAgICBjYXNlIERSTV9FRElEX0RJ R0lUQUxfREVQVEhfMTA6Cj4gPiA+ID4+PiA+IC0gICAgICAgICAgICAgcmV0dXJuIDEwOwo+ID4g PiA+Pj4gPiAtICAgICBjYXNlIERSTV9FRElEX0RJR0lUQUxfREVQVEhfMTI6Cj4gPiA+ID4+PiA+ IC0gICAgICAgICAgICAgcmV0dXJuIDEyOwo+ID4gPiA+Pj4gPiAtICAgICBjYXNlIERSTV9FRElE X0RJR0lUQUxfREVQVEhfMTQ6Cj4gPiA+ID4+PiA+IC0gICAgICAgICAgICAgcmV0dXJuIDE0Owo+ ID4gPiA+Pj4gPiAtICAgICBjYXNlIERSTV9FRElEX0RJR0lUQUxfREVQVEhfMTY6Cj4gPiA+ID4+ PiA+IC0gICAgICAgICAgICAgcmV0dXJuIDE2Owo+ID4gPiA+Pj4gPiAtICAgICBjYXNlIERSTV9F RElEX0RJR0lUQUxfREVQVEhfVU5ERUY6Cj4gPiA+ID4+PiA+IC0gICAgIGRlZmF1bHQ6Cj4gPiA+ ID4+PiA+IC0gICAgICAgICAgICAgcmV0dXJuIDA7Cj4gPiA+ID4+PiA+IC0gICAgIH0KPiA+ID4g Pj4+ID4gLX0KPiA+ID4gPj4+ID4gLQo+ID4gPiA+Pj4gPiAtdTggZHB1X2dldF9lZGlkX2NoZWNr c3VtKHZvaWQgKmlucHV0KQo+ID4gPiA+Pj4gPiAtewo+ID4gPiA+Pj4gPiAtICAgICBzdHJ1Y3Qg ZHB1X2VkaWRfY3RybCAqZWRpZF9jdHJsID0gKHN0cnVjdCBkcHVfZWRpZF9jdHJsCj4gPiA+ID4+ PiA+ICopKGlucHV0KTsKPiA+ID4gPj4+ID4gLSAgICAgc3RydWN0IGVkaWQgKmVkaWQgPSBOVUxM LCAqbGFzdF9ibG9jayA9IE5VTEw7Cj4gPiA+ID4+PiA+IC0gICAgIHU4ICpyYXdfZWRpZCA9IE5V TEw7Cj4gPiA+ID4+PiA+IC0KPiA+ID4gPj4+ID4gLSAgICAgaWYgKCFlZGlkX2N0cmwgfHwgIWVk aWRfY3RybC0+ZWRpZCkgewo+ID4gPiA+Pj4gPiAtICAgICAgICAgICAgIERQVV9FUlJPUigiaW52 YWxpZCBlZGlkIGlucHV0XG4iKTsKPiA+ID4gPj4+ID4gLSAgICAgICAgICAgICByZXR1cm4gMDsK PiA+ID4gPj4+ID4gLSAgICAgfQo+ID4gPiA+Pj4gPiAtCj4gPiA+ID4+PiA+IC0gICAgIGVkaWQg PSBlZGlkX2N0cmwtPmVkaWQ7Cj4gPiA+ID4+PiA+IC0KPiA+ID4gPj4+ID4gLSAgICAgcmF3X2Vk aWQgPSAodTggKillZGlkOwo+ID4gPiA+Pj4gPiAtICAgICByYXdfZWRpZCArPSAoZWRpZC0+ZXh0 ZW5zaW9ucyAqIEVESURfTEVOR1RIKTsKPiA+ID4gPj4+ID4gLSAgICAgbGFzdF9ibG9jayA9IChz dHJ1Y3QgZWRpZCAqKXJhd19lZGlkOwo+ID4gPiA+Pj4gPiAtCj4gPiA+ID4+PiA+IC0gICAgIGlm IChsYXN0X2Jsb2NrKQo+ID4gPiA+Pj4gPiAtICAgICAgICAgICAgIHJldHVybiBsYXN0X2Jsb2Nr LT5jaGVja3N1bTsKPiA+ID4gPj4+ID4gLQo+ID4gPiA+Pj4gPiAtICAgICBEUFVfRVJST1IoIklu dmFsaWQgYmxvY2ssIG5vIGNoZWNrc3VtXG4iKTsKPiA+ID4gPj4+ID4gLSAgICAgcmV0dXJuIDA7 Cj4gPiA+ID4+PiA+IC19Cj4gPiA+ID4+PiA+IC0KPiA+ID4gPj4+ID4gLWJvb2wgZHB1X2RldGVj dF9oZG1pX21vbml0b3Iodm9pZCAqaW5wdXQpCj4gPiA+ID4+PiA+IC17Cj4gPiA+ID4+PiA+IC0g ICAgIHN0cnVjdCBkcHVfZWRpZF9jdHJsICplZGlkX2N0cmwgPSAoc3RydWN0IGRwdV9lZGlkX2N0 cmwKPiA+ID4gPj4+ID4gKikoaW5wdXQpOwo+ID4gPiA+Pj4gPiAtCj4gPiA+ID4+PiA+IC0gICAg IHJldHVybiBkcm1fZGV0ZWN0X2hkbWlfbW9uaXRvcihlZGlkX2N0cmwtPmVkaWQpOwo+ID4gPiA+ Pj4gPiAtfQo+ID4gPiA+Pj4gPiAtCj4gPiA+ID4+PiA+IC12b2lkIGRwdV9nZXRfZWRpZChzdHJ1 Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ID4gPiA+Pj4gPiAtICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlciwgdm9pZAo+ID4gPiA+ Pj4gPiAqKmlucHV0KQo+ID4gPiA+Pj4gPiAtewo+ID4gPiA+Pj4gPiAtICAgICBzdHJ1Y3QgZHB1 X2VkaWRfY3RybCAqZWRpZF9jdHJsID0gKHN0cnVjdCBkcHVfZWRpZF9jdHJsCj4gPiA+ID4+PiA+ ICopKCppbnB1dCk7Cj4gPiA+ID4+PiA+IC0KPiA+ID4gPj4+ID4gLSAgICAgZWRpZF9jdHJsLT5l ZGlkID0gZHJtX2dldF9lZGlkKGNvbm5lY3RvciwgYWRhcHRlcik7Cj4gPiA+ID4+PiA+IC0gICAg IERQVV9FRElEX0RFQlVHKCIlcyArXG4iLCBfX2Z1bmNfXyk7Cj4gPiA+ID4+PiA+IC0KPiA+ID4g Pj4+ID4gLSAgICAgaWYgKCFlZGlkX2N0cmwtPmVkaWQpCj4gPiA+ID4+PiA+IC0gICAgICAgICAg ICAgRFBVX0VSUk9SKCJFRElEIHJlYWQgZmFpbGVkXG4iKTsKPiA+ID4gPj4+ID4gLQo+ID4gPiA+ Pj4gPiAtICAgICBpZiAoZWRpZF9jdHJsLT5lZGlkKSB7Cj4gPiA+ID4+PiA+IC0gICAgICAgICAg ICAgZHB1X2VkaWRfZXh0cmFjdF92ZW5kb3JfaWQoZWRpZF9jdHJsKTsKPiA+ID4gPj4+ID4gLSAg ICAgICAgICAgICBfZHB1X2VkaWRfZXh0cmFjdF9hdWRpb19kYXRhX2Jsb2NrcyhlZGlkX2N0cmwp Owo+ID4gPiA+Pj4gPiAtICAgICAgICAgICAgIF9kcHVfZWRpZF9leHRyYWN0X3NwZWFrZXJfYWxs b2NhdGlvbl9kYXRhKGVkaWRfY3RybCk7Cj4gPiA+ID4+PiA+IC0gICAgIH0KPiA+ID4gPj4+ID4g LSAgICAgRFBVX0VESURfREVCVUcoIiVzIC1cbiIsIF9fZnVuY19fKTsKPiA+ID4gPj4+ID4gLX07 Cj4gPiA+ID4+PiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2RwdV9lZGlkX3Bh cnNlci5oCj4gPiA+ID4+PiA+IGIvZHJpdmVycy9ncHUvZHJtL21zbS9kcHVfZWRpZF9wYXJzZXIu aAo+ID4gPiA+Pj4gPiBkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKPiA+ID4gPj4+ID4gaW5kZXgg YzA1MWIxOGJiODEyLi4wMDAwMDAwMDAwMDAKPiA+ID4gPj4+ID4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL21zbS9kcHVfZWRpZF9wYXJzZXIuaAo+ID4gPiA+Pj4gPiArKysgL2Rldi9udWxsCj4gPiA+ ID4+PiA+IEBAIC0xLDE2NiArMCwwIEBACj4gPiA+ID4+PiA+IC0vKgo+ID4gPiA+Pj4gPiAtICog Q29weXJpZ2h0IChjKSAyMDE3LTIwMTgsIFRoZSBMaW51eCBGb3VuZGF0aW9uLiBBbGwgcmlnaHRz IHJlc2VydmVkLgo+ID4gPiA+Pj4gPiAtICoKPiA+ID4gPj4+ID4gLSAqIFRoaXMgcHJvZ3JhbSBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKPiA+ID4gPj4+ ID4gbW9kaWZ5Cj4gPiA+ID4+PiA+IC0gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhbmQKPiA+ID4gPj4+ID4gLSAqIG9ubHkg dmVyc2lvbiAyIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgo+ ID4gPiA+Pj4gPiAtICoKPiA+ID4gPj4+ID4gLSAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAo+ID4gPiA+Pj4gPiAtICogYnV0 IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YKPiA+ID4gPj4+ID4gLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKPiA+ID4gPj4+ID4gLSAqIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCj4gPiA+ID4+PiA+IC0gKgo+ID4gPiA+Pj4gPiAt ICovCj4gPiA+ID4+PiA+IC0KPiA+ID4gPj4+ID4gLSNpZm5kZWYgX0RQVV9FRElEX1BBUlNFUl9I Xwo+ID4gPiA+Pj4gPiAtI2RlZmluZSBfRFBVX0VESURfUEFSU0VSX0hfCj4gPiA+ID4+PiA+IC0K PiA+ID4gPj4+ID4gLSNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgo+ID4gPiA+Pj4gPiAtI2luY2x1 ZGUgPGxpbnV4L2JpdG9wcy5oPgo+ID4gPiA+Pj4gPiAtI2luY2x1ZGUgPGxpbnV4L2RlYnVnZnMu aD4KPiA+ID4gPj4+ID4gLSNpbmNsdWRlIDxsaW51eC9vZl9kZXZpY2UuaD4KPiA+ID4gPj4+ID4g LSNpbmNsdWRlIDxsaW51eC9pMmMuaD4KPiA+ID4gPj4+ID4gLSNpbmNsdWRlIDxkcm0vZHJtUC5o Pgo+ID4gPiA+Pj4gPiAtI2luY2x1ZGUgPGRybS9kcm1fY3J0Yy5oPgo+ID4gPiA+Pj4gPiAtI2lu Y2x1ZGUgPGRybS9kcm1fZWRpZC5oPgo+ID4gPiA+Pj4gPiAtCj4gPiA+ID4+PiA+IC0KPiA+ID4g Pj4+ID4gLSNkZWZpbmUgTUFYX05VTUJFUl9BREIgNQo+ID4gPiA+Pj4gPiAtI2RlZmluZSBNQVhf QVVESU9fREFUQV9CTE9DS19TSVpFIDMwCj4gPiA+ID4+PiA+IC0jZGVmaW5lIE1BWF9TUEtSX0FM TE9DX0RBVEFfQkxPQ0tfU0laRSAzCj4gPiA+ID4+PiA+IC0jZGVmaW5lIEVESURfVkVORE9SX0lE X1NJWkUgICAgIDQKPiA+ID4gPj4+ID4gLQo+ID4gPiA+Pj4gPiAtI2RlZmluZSBEUFVfQ0VBX0VY VCAgICAweDAyCj4gPiA+ID4+PiA+IC0jZGVmaW5lIERQVV9FWFRFTkRFRF9UQUcgMHgwNwo+ID4g PiA+Pj4gPiAtCj4gPiA+ID4+PiA+IC0jZGVmaW5lIERQVV9EUk1fTU9ERV9GTEFHX0ZNVF9NQVNL ICgweDMgPDwgMjApCj4gPiA+ID4+PiA+IC0KPiA+ID4gPj4+ID4gLWVudW0gZXh0ZW5kZWRfZGF0 YV9ibG9ja190eXBlcyB7Cj4gPiA+ID4+PiA+IC0gICAgIFZJREVPX0NBUEFCSUxJVFlfREFUQV9C TE9DSyA9IDB4MCwKPiA+ID4gPj4+ID4gLSAgICAgVkVORE9SX1NQRUNJRklDX1ZJREVPX0RBVEFf QkxPQ0sgPSAweDAxLAo+ID4gPiA+Pj4gPiAtICAgICBIRE1JX1ZJREVPX0RBVEFfQkxPQ0sgPSAw eDA0LAo+ID4gPiA+Pj4gPiAtICAgICBIRFJfU1RBVElDX01FVEFEQVRBX0RBVEFfQkxPQ0sgPSAw eDA2LAo+ID4gPiA+Pj4gPiAtICAgICBZNDIwX1ZJREVPX0RBVEFfQkxPQ0sgPSAweDBFLAo+ID4g PiA+Pj4gPiAtICAgICBWSURFT19GT1JNQVRfUFJFRkVSRU5DRV9EQVRBX0JMT0NLID0gMHgwRCwK PiA+ID4gPj4+ID4gLSAgICAgWTQyMF9DQVBBQklMSVRZX01BUF9EQVRBX0JMT0NLID0gMHgwRiwK PiA+ID4gPj4+ID4gLSAgICAgVkVORE9SX1NQRUNJRklDX0FVRElPX0RBVEFfQkxPQ0sgPSAweDEx LAo+ID4gPiA+Pj4gPiAtICAgICBJTkZPRlJBTUVfREFUQV9CTE9DSyA9IDB4MjAsCj4gPiA+ID4+ PiA+IC19Owo+ID4gPiA+Pj4gPiAtCj4gPiA+ID4+PiA+IC0jaWZkZWYgRFBVX0VESURfREVCVUdf RU5BQkxFCj4gPiA+ID4+PiA+IC0jZGVmaW5lIERQVV9FRElEX0RFQlVHKGZtdCwgYXJncy4uLikg ICBEUFVfRVJST1IoZm10LCAjI2FyZ3MpCj4gPiA+ID4+PiA+IC0jZWxzZQo+ID4gPiA+Pj4gPiAt I2RlZmluZSBEUFVfRURJRF9ERUJVRyhmbXQsIGFyZ3MuLi4pICAgRFBVX0RFQlVHKGZtdCwgIyNh cmdzKQo+ID4gPiA+Pj4gPiAtI2VuZGlmCj4gPiA+ID4+PiA+IC0KPiA+ID4gPj4+ID4gLS8qCj4g PiA+ID4+PiA+IC0gKiBzdHJ1Y3QgaGRtaV9lZGlkX2hkcl9kYXRhIC0gSERSIFN0YXRpYyBNZXRh ZGF0YQo+ID4gPiA+Pj4gPiAtICogQGVvdGY6IEVsZWN0cm8tT3B0aWNhbCBUcmFuc2ZlciBGdW5j dGlvbgo+ID4gPiA+Pj4gPiAtICogQG1ldGFkYXRhX3R5cGVfb25lOiBTdGF0aWMgTWV0YWRhdGEg VHlwZSAxIHN1cHBvcnQKPiA+ID4gPj4+ID4gLSAqIEBtYXhfbHVtaW5hbmNlOiBEZXNpcmVkIENv bnRlbnQgTWF4aW11bSBMdW1pbmFuY2UKPiA+ID4gPj4+ID4gLSAqIEBhdmdfbHVtaW5hbmNlOiBE ZXNpcmVkIENvbnRlbnQgRnJhbWUtYXZlcmFnZSBMdW1pbmFuY2UKPiA+ID4gPj4+ID4gLSAqIEBt aW5fbHVtaW5hbmNlOiBEZXNpcmVkIENvbnRlbnQgTWluaW11bSBMdW1pbmFuY2UKPiA+ID4gPj4+ ID4gLSAqLwo+ID4gPiA+Pj4gPiAtc3RydWN0IGRwdV9lZGlkX2hkcl9kYXRhIHsKPiA+ID4gPj4+ ID4gLSAgICAgdTMyIGVvdGY7Cj4gPiA+ID4+PiA+IC0gICAgIGJvb2wgbWV0YWRhdGFfdHlwZV9v bmU7Cj4gPiA+ID4+PiA+IC0gICAgIHUzMiBtYXhfbHVtaW5hbmNlOwo+ID4gPiA+Pj4gPiAtICAg ICB1MzIgYXZnX2x1bWluYW5jZTsKPiA+ID4gPj4+ID4gLSAgICAgdTMyIG1pbl9sdW1pbmFuY2U7 Cj4gPiA+ID4+PiA+IC19Owo+ID4gPiA+Pj4gPiAtCj4gPiA+ID4+PiA+IC1zdHJ1Y3QgZHB1X2Vk aWRfc2lua19jYXBzIHsKPiA+ID4gPj4+ID4gLSAgICAgdTMyIG1heF9wY2xrX2luX2h6Owo+ID4g PiA+Pj4gPiAtICAgICBib29sIHNjZGNfcHJlc2VudDsKPiA+ID4gPj4+ID4gLSAgICAgYm9vbCBz Y3JhbWJsZV9zdXBwb3J0OyAvKiBzY3JhbWJsZSBzdXBwb3J0IGZvciBsZXNzIHRoYW4gMzQwTWNz Ywo+ID4gPiA+Pj4gPiAqLwo+ID4gPiA+Pj4gPiAtICAgICBib29sIHJlYWRfcmVxX3N1cHBvcnQ7 Cj4gPiA+ID4+PiA+IC0gICAgIGJvb2wgb3NkX2Rpc3Bhcml0eTsKPiA+ID4gPj4+ID4gLSAgICAg Ym9vbCBkdWFsX3ZpZXdfc3VwcG9ydDsKPiA+ID4gPj4+ID4gLSAgICAgYm9vbCBpbmRfdmlld19z dXBwb3J0Owo+ID4gPiA+Pj4gPiAtfTsKPiA+ID4gPj4+ID4gLQo+ID4gPiA+Pj4gPiAtc3RydWN0 IGRwdV9lZGlkX2N0cmwgewo+ID4gPiA+Pj4gPiAtICAgICBzdHJ1Y3QgZWRpZCAqZWRpZDsKPiA+ ID4gPj4+ID4gLSAgICAgdTggcHRfc2Nhbl9pbmZvOwo+ID4gPiA+Pj4gPiAtICAgICB1OCBpdF9z Y2FuX2luZm87Cj4gPiA+ID4+PiA+IC0gICAgIHU4IGNlX3NjYW5faW5mbzsKPiA+ID4gPj4+ID4g LSAgICAgdTggYXVkaW9fZGF0YV9ibG9ja1tNQVhfTlVNQkVSX0FEQiAqIE1BWF9BVURJT19EQVRB X0JMT0NLX1NJWkVdOwo+ID4gPiA+Pj4gPiAtICAgICBpbnQgYWRiX3NpemU7Cj4gPiA+ID4+PiA+ IC0gICAgIHU4IHNwa3JfYWxsb2NfZGF0YV9ibG9ja1tNQVhfU1BLUl9BTExPQ19EQVRBX0JMT0NL X1NJWkVdOwo+ID4gPiA+Pj4gPiAtICAgICBpbnQgc2FkYl9zaXplOwo+ID4gPiA+Pj4gPiAtICAg ICBib29sIGhkcl9zdXBwb3J0ZWQ7Cj4gPiA+ID4+PiA+IC0gICAgIGNoYXIgdmVuZG9yX2lkW0VE SURfVkVORE9SX0lEX1NJWkVdOwo+ID4gPiA+Pj4gPiAtICAgICBzdHJ1Y3QgZHB1X2VkaWRfc2lu a19jYXBzIHNpbmtfY2FwczsKPiA+ID4gPj4+ID4gLSAgICAgc3RydWN0IGRwdV9lZGlkX2hkcl9k YXRhIGhkcl9kYXRhOwo+ID4gPiA+Pj4gPiAtfTsKPiA+ID4gPj4+ID4gLQo+ID4gPiA+Pj4gPiAt LyoqCj4gPiA+ID4+PiA+IC0gKiBkcHVfZWRpZF9pbml0KCkgLSBpbml0IGVkaWQgc3RydWN0dXJl Lgo+ID4gPiA+Pj4gPiAtICogQGVkaWRfY3RybDogICAgIEhhbmRsZSB0byB0aGUgZWRpZF9jdHJs IHN0cnVjdHVyZS4KPiA+ID4gPj4+ID4gLSAqIFJldHVybjogaGFuZGxlIHRvIGRwdV9lZGlkX2N0 cmwgZm9yIHRoZSBjbGllbnQuCj4gPiA+ID4+PiA+IC0gKi8KPiA+ID4gPj4+ID4gLXN0cnVjdCBk cHVfZWRpZF9jdHJsICpkcHVfZWRpZF9pbml0KHZvaWQpOwo+ID4gPiA+Pj4gPiAtCj4gPiA+ID4+ PiA+IC0vKioKPiA+ID4gPj4+ID4gLSAqIGRwdV9lZGlkX2RlaW5pdCgpIC0gZGVpbml0IGVkaWQg c3RydWN0dXJlLgo+ID4gPiA+Pj4gPiAtICogQGVkaWRfY3RybDogICAgIEhhbmRsZSB0byB0aGUg ZWRpZF9jdHJsIHN0cnVjdHVyZS4KPiA+ID4gPj4+ID4gLSAqCj4gPiA+ID4+PiA+IC0gKiBSZXR1 cm46IHZvaWQuCj4gPiA+ID4+PiA+IC0gKi8KPiA+ID4gPj4+ID4gLXZvaWQgZHB1X2VkaWRfZGVp bml0KHZvaWQgKiplZGlkX2N0cmwpOwo+ID4gPiA+Pj4gPiAtCj4gPiA+ID4+PiA+IC0vKioKPiA+ ID4gPj4+ID4gLSAqIGRwdV9nZXRfZWRpZCgpIC0gZ2V0IGVkaWQgaW5mby4KPiA+ID4gPj4+ID4g LSAqIEBjb25uZWN0b3I6ICAgSGFuZGxlIHRvIHRoZSBkcm1fY29ubmVjdG9yLgo+ID4gPiA+Pj4g PiAtICogQGFkYXB0ZXI6ICAgICBoYW5kbGUgdG8gaTJjIGFkYXB0ZXIgZm9yIEREQyByZWFkCj4g PiA+ID4+PiA+IC0gKiBAZWRpZF9jdHJsOiAgIEhhbmRsZSB0byB0aGUgZWRpZF9jdHJsIHN0cnVj dHVyZS4KPiA+ID4gPj4+ID4gLSAqCj4gPiA+ID4+PiA+IC0gKiBSZXR1cm46IHZvaWQuCj4gPiA+ ID4+PiA+IC0gKi8KPiA+ID4gPj4+ID4gLXZvaWQgZHB1X2dldF9lZGlkKHN0cnVjdCBkcm1fY29u bmVjdG9yICpjb25uZWN0b3IsCj4gPiA+ID4+PiA+IC1zdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0 ZXIsCj4gPiA+ID4+PiA+IC12b2lkICoqZWRpZF9jdHJsKTsKPiA+ID4gPj4+ID4gLQo+ID4gPiA+ Pj4gPiAtLyoqCj4gPiA+ID4+PiA+IC0gKiBkcHVfZnJlZV9lZGlkKCkgLSBmcmVlIGVkaWQgc3Ry dWN0dXJlLgo+ID4gPiA+Pj4gPiAtICogQGVkaWRfY3RybDogICAgIEhhbmRsZSB0byB0aGUgZWRp ZF9jdHJsIHN0cnVjdHVyZS4KPiA+ID4gPj4+ID4gLSAqCj4gPiA+ID4+PiA+IC0gKiBSZXR1cm46 IHZvaWQuCj4gPiA+ID4+PiA+IC0gKi8KPiA+ID4gPj4+ID4gLXZvaWQgZHB1X2ZyZWVfZWRpZCh2 b2lkICoqZWRpZF9jdHJsKTsKPiA+ID4gPj4+ID4gLQo+ID4gPiA+Pj4gPiAtLyoqCj4gPiA+ID4+ PiA+IC0gKiBkcHVfZGV0ZWN0X2hkbWlfbW9uaXRvcigpIC0gZGV0ZWN0IEhETUkgbW9kZS4KPiA+ ID4gPj4+ID4gLSAqIEBlZGlkX2N0cmw6ICAgICBIYW5kbGUgdG8gdGhlIGVkaWRfY3RybCBzdHJ1 Y3R1cmUuCj4gPiA+ID4+PiA+IC0gKgo+ID4gPiA+Pj4gPiAtICogUmV0dXJuOiBlcnJvciBjb2Rl Lgo+ID4gPiA+Pj4gPiAtICovCj4gPiA+ID4+PiA+IC1ib29sIGRwdV9kZXRlY3RfaGRtaV9tb25p dG9yKHZvaWQgKmVkaWRfY3RybCk7Cj4gPiA+ID4+PiA+IC0KPiA+ID4gPj4+ID4gLS8qKgo+ID4g PiA+Pj4gPiAtICogZHB1X2dldF9zaW5rX2JwYygpIC0gcmV0dXJuIHRoZSBicGMgb2Ygc2luayBk ZXZpY2UuCj4gPiA+ID4+PiA+IC0gKiBAZWRpZF9jdHJsOiAgICAgSGFuZGxlIHRvIHRoZSBlZGlk X2N0cmwgc3RydWN0dXJlLgo+ID4gPiA+Pj4gPiAtICoKPiA+ID4gPj4+ID4gLSAqIFJldHVybjog YnBjIHN1cHBvcnRlZCBieSB0aGUgc2luay4KPiA+ID4gPj4+ID4gLSAqLwo+ID4gPiA+Pj4gPiAt dTMyIGRwdV9nZXRfc2lua19icGModm9pZCAqZWRpZF9jdHJsKTsKPiA+ID4gPj4+ID4gLQo+ID4g PiA+Pj4gPiAtLyoqCj4gPiA+ID4+PiA+IC0gKiBkcHVfZ2V0X2VkaWRfY2hlY2tzdW0oKSAtIHJl dHVybiB0aGUgY2hlY2tzdW0gb2YgbGFzdCBibG9jayBvZgo+ID4gPiA+Pj4gPiBFRElELgo+ID4g PiA+Pj4gPiAtICogQGlucHV0OiAgICAgSGFuZGxlIHRvIHRoZSBlZGlkX2N0cmwgc3RydWN0dXJl Lgo+ID4gPiA+Pj4gPiAtICoKPiA+ID4gPj4+ID4gLSAqIFJldHVybjogY2hlY2tzdW0gb2YgdGhl IGxhc3QgRURJRCBibG9jay4KPiA+ID4gPj4+ID4gLSAqLwo+ID4gPiA+Pj4gPiAtdTggZHB1X2dl dF9lZGlkX2NoZWNrc3VtKHZvaWQgKmlucHV0KTsKPiA+ID4gPj4+ID4gLQo+ID4gPiA+Pj4gPiAt LyoqCj4gPiA+ID4+PiA+IC0gKiBfZHB1X2VkaWRfdXBkYXRlX21vZGVzKCkgLSBwb3B1bGF0ZSBF RElEIG1vZGVzLgo+ID4gPiA+Pj4gPiAtICogQGVkaWRfY3RybDogICAgIEhhbmRsZSB0byB0aGUg ZWRpZF9jdHJsIHN0cnVjdHVyZS4KPiA+ID4gPj4+ID4gLSAqCj4gPiA+ID4+PiA+IC0gKiBSZXR1 cm46IGVycm9yIGNvZGUuCj4gPiA+ID4+PiA+IC0gKi8KPiA+ID4gPj4+ID4gLWludCBfZHB1X2Vk aWRfdXBkYXRlX21vZGVzKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4gPiA+ID4+ PiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHZvaWQgKmVkaWRfY3RybCk7Cj4gPiA+ID4+PiA+IC0KPiA+ID4gPj4+ID4gLSNlbmRpZiAvKiBf RFBVX0VESURfUEFSU0VSX0hfICovCj4gPiA+ID4+PiA+IC0KCi0tIApTZWFuIFBhdWwsIFNvZnR3 YXJlIEVuZ2luZWVyLCBHb29nbGUgLyBDaHJvbWl1bSBPUwpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpGcmVlZHJlbm8gbWFpbGluZyBsaXN0CkZyZWVkcmVu b0BsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9mcmVlZHJlbm8K