From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH v7 1/6] drm/i915: Fallback to lower link rate and lane count during link training Date: Tue, 27 Sep 2016 20:07:01 +0300 Message-ID: <8737klp8zu.fsf@intel.com> References: <1473984244-4349-2-git-send-email-manasi.d.navare@intel.com> <1474051514-5811-1-git-send-email-manasi.d.navare@intel.com> <87twd2kcfd.fsf@intel.com> <20160927152502.GA18889@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3C3976E36D for ; Tue, 27 Sep 2016 17:07:08 +0000 (UTC) In-Reply-To: <20160927152502.GA18889@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Manasi Navare Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCAyNyBTZXAgMjAxNiwgTWFuYXNpIE5hdmFyZSA8bWFuYXNpLmQubmF2YXJlQGludGVs LmNvbT4gd3JvdGU6Cj4gT24gTW9uLCBTZXAgMjYsIDIwMTYgYXQgMDQ6Mzk6MzRQTSArMDMwMCwg SmFuaSBOaWt1bGEgd3JvdGU6Cj4+IE9uIEZyaSwgMTYgU2VwIDIwMTYsIE1hbmFzaSBOYXZhcmUg PG1hbmFzaS5kLm5hdmFyZUBpbnRlbC5jb20+IHdyb3RlOgo+PiA+IEFjY29yZGluZyB0byB0aGUg RGlzcGxheVBvcnQgU3BlYywgaW4gY2FzZSBvZiBDbG9jayBSZWNvdmVyeSBmYWlsdXJlCj4+ID4g dGhlIGxpbmsgdHJhaW5pbmcgc2VxdWVuY2Ugc2hvdWxkIGZhbGwgYmFjayB0byB0aGUgbG93ZXIg bGluayByYXRlCj4+ID4gZm9sbG93ZWQgYnkgbG93ZXIgbGFuZSBjb3VudCB1bnRpbCBDUiBzdWNj ZWVkcy4KPj4gPiBPbiBDUiBzdWNjZXNzLCB0aGUgc2VxdWVuY2UgcHJvY2VlZHMgd2l0aCBDaGFu bmVsIEVRLgo+PiA+IEluIGNhc2Ugb2YgQ2hhbm5lbCBFUSBmYWlsdXJlcywgaXQgc2hvdWxkIGZh bGxiYWNrIHRvCj4+ID4gbG93ZXIgbGluayByYXRlIGFuZCBsYW5lIGNvdW50IGFuZCBzdGFydCB0 aGUgQ1IgcGhhc2UgYWdhaW4uCj4+IAo+PiBUaGlzIGNoYW5nZSBtYWtlcyB0aGUgbGluayB0cmFp bmluZyBzdGFydCBhdCB0aGUgbWF4IGxhbmUgY291bnQgYW5kIG1heAo+PiBsaW5rIHJhdGUuIFRo aXMgaXMgbm90IGlkZWFsLCBhcyBpdCB3YXN0ZXMgdGhlIGxpbmsuIEFuZCBpdCBpcyBub3QgYQo+ PiBzcGVjIHJlcXVpcmVtZW50LiAiVGhlIExpbmsgUG9saWN5IE1ha2VyIG9mIHRoZSB1cHN0cmVh bSBkZXZpY2UgbWF5Cj4+IGNob29zZSBhbnkgbGluayBjb3VudCBhbmQgbGluayByYXRlIGFzIGxv bmcgYXMgdGhleSBkbyBub3QgZXhjZWVkIHRoZQo+PiBjYXBhYmlsaXRpZXMgb2YgdGhlIERQIHJl Y2VpdmVyLiIKPj4gCj4+IE91ciBjdXJyZW50IGNvZGUgc3RhcnRzIGF0IHRoZSBtaW5pbXVtIHJl cXVpcmVkIGJhbmR3aWR0aCBmb3IgdGhlIG1vZGUsCj4+IHRoZXJlZm9yZSB3ZSBjYW4ndCBmYWxs IGJhY2sgdG8gbG93ZXIgbGluayByYXRlIGFuZCBsYW5lIGNvdW50IHdpdGhvdXQKPj4gcmVkdWNp bmcgdGhlIG1vZGUuCj4+IAo+PiBBRkFJQ1QgdGhpcyBwYXRjaCBoZXJlIG1ha2VzIGl0IHBvc3Np YmxlIGZvciB0aGUgbGluayBiYW5kd2lkdGggdG8gZHJvcAo+PiBiZWxvdyB3aGF0IGlzIHJlcXVp cmVkIGZvciB0aGUgbW9kZS4gVGhpcyBpcyB1bmFjY2VwdGFibGUuCj4+IAo+PiBCUiwKPj4gSmFu aS4KPj4gCj4+Cj4KPiBUaGFua3MgSmFuaSBmb3IgeW91ciByZXZpZXcgY29tbWVudHMuCj4gWWVz IGluIHRoaXMgY2hhbmdlIHdlIHN0YXJ0IGF0IHRoZSBtYXggbGluayByYXRlIGFuZCBsYW5lIGNv dW50LiBUaGlzCj4gY2hhbmdlIHdhcyBtYWRlIGFjY29yZGluZyB0byB0aGUgZGVzaWduIGRvY3Vt ZW50IGRpc2N1c3Npb25zIHdlIGhhZAo+IGJlZm9yZSBzdHJhdGluZyB0aGlzIERQIFJlZGVzaWdu IHByb2plY3QuIFRoZSBtYWluIHJlYXNvbiBmb3Igc3RhcnRpbmcKPiBhdCB0aGUgbWF4bGluayBy YXRlIGFuZCBtYXggbGFuZSBjb3VudCB3YXMgZm9yIGVuc3VyaW5nIHByb3Blcgo+IGJlaGF2aW9y IG9mIERQIE1TVC4gSW4gY2FzZSBvZiBEUCBNU1QsIHdlIHdhbnQgdG8gdHJhaW4gdGhlIGxpbmsg YXQKPiB0aGUgbWF4aW11bSBzdXBwb3J0ZWQgbGluayByYXRlL2xhbmUgY291bnQgYmFzZWQgb24g YW4gZWFybHkvIHVwZnJvbnQKPiBsaW5rIHRyYWluaW5nIHJlc3VsdCBzbyB0aGF0IHdlIGRvbnQg ZmFpbCB3aGVuIHdlIHRyeSB0byBjb25uZWN0IGEKPiBoaWdoZXIgcmVzb2x1dGlvbiBtb25pdG9y IGFzIGEgc2Vjb25kIG1vbml0b3IuIFRoaXMgYSB0cmFkZSBvZmYKPiBiZXR3ZWVuIHdzdGluZyB0 aGUgbGluayBvciBoaWdoZXIgcG93ZXIgdnMuIG5lZWRpbmcgdG8gcmV0cmFpbiBmb3IKPiBldmVy eSBtb25pdG9yIHRoYXQgcmVxdWVzdHMgYSBoaWdoZXIgQlcgaW4gY2FzZSBvZiBEUCBNU1QuCgpX ZSBhbHJlYWR5IHRyYWluIGF0IG1heCBiYW5kd2lkdGggZm9yIERQIE1TVCwgd2hpY2ggc2VlbXMg dG8gYmUgdGhlCnNlbnNpYmxlIHRoaW5nIHRvIGRvLgoKPiBBY3R1YWxseSB0aGlzIGlzIGFsc28g dGhlIHJlYXNvbiBmb3IgZW5hYmxpbmcgdXBmcm9udCBsaW5rIHRyYWluaW5nIGluCj4gdGhlIGZv bGxvd2luZyBwYXRjaCB3aGVyZSB3ZSB0cmFpbiB0aGUgbGluayBtdWNoIGFoZWFkIGluIHRoZSBt b2Rlc2V0Cj4gc2VxdWVuY2UgdG8gdW5kZXJzdGFuZCB0aGUgbGluayByYXRlIGFuZCBsYW5lIGNv dW50IHZhbHVlcyBhdCB3aGljaAo+IHRoZSBsaW5rIGNhbiBiZSBzdWNjZXNzZnVsbHkgdHJhaW5l ZCBhbmQgdGhlbiB0aGUgbGluayB0cmFpbmluZwo+IHRocm91Z2ggbW9kZXNldCB3aWxsIGFsd2F5 cyBzdGFydCBhdCB0aGUgdXBmcm9udCB2YWx1ZXMgKG1heGltdW0KPiBzdXBwb3J0ZWQgdmFsdWVz IG9mIGxhbmUgY291bnQgYW5kIGxpbmsgcmF0ZSBiYXNlZCBvbiB1cGZyb250IGxpbmsKPiB0cmFp bmluZykuCgpJIGRvbid0IHNlZSBhIG5lZWQgdG8gZG8gdGhpcyBmb3IgRFAgU1NULgoKPiBBcyBw ZXIgdGhlIENUUywgYWxsIHRoZSB0ZXN0IDQuMy4xLjQgcmVxdWlyZXMgdGhhdCB5b3UgZmFsbCBi YWNrIHRvCj4gdGhlIGxvd2VyIGxpbmsgcmF0ZSBhZnRlciB0cnlpbmcgdG8gdHJhaW4gYXQgdGhl IG1heGltdW0gbGluayByYXRlCj4gYWR2ZXJ0aXNlZCB0aHJvdWdoIHRoZSBEUENEIHJlZ2lzdGVy cy4KClRoYXQgdGVzdCBkb2VzIG5vdCByZXF1aXJlIHRoZSBzb3VyY2UgRFVUIHRvIGRlZmF1bHQg dG8gbWF4aW11bSBsYW5lCmNvdW50IG9yIGxpbmsgcmF0ZSBvZiB0aGUgc2luay4gVGhlIHNvdXJj ZSBtYXkgZnJlZWx5IGNob29zZSB0aGUgbGFuZQpjb3VudCBhbmQgbGluayByYXRlIGFzIGxvbmcg YXMgdGhleSBkb24ndCBleGNlZWQgc2luayBjYXBhYmlsaXRpZXMuCgpGb3IgdGhlIHB1cnBvc2Vz IG9mIHRoZSB0ZXN0LCB0aGUgdGVzdCBzZXR1cCBjYW4gcmVxdWVzdCBzcGVjaWZpYwpwYXJhbWV0 ZXJzIHRvIGJlIHVzZWQsIGJ1dCB0aGF0IGRvZXMgbm90IG1lYW4gdXNpbmcgbWF4aW11bSBieQoq ZGVmYXVsdCouCgpXZSBjdXJyZW50bHkgbGFjayB0aGUgZmVhdHVyZSB0byByZWR1Y2UgbGFuZSBj b3VudCBhbmQgbGluayByYXRlLiBUaGUKa2V5IHRvIHVuZGVyc3RhbmQgaGVyZSBpcyB0aGF0IHN0 YXJ0aW5nIGF0IG1heCBhbmQgcmVkdWNpbmcgZG93biB0byB0aGUKc3VmZmljaWVudCBwYXJhbWV0 ZXJzIGZvciB0aGUgbW9kZSAod2hpY2ggaXMgd2hlcmUgd2Ugc3RhcnQgbm93KSBvZmZlcnMKbm8g cmVhbCBiZW5lZml0IGZvciBhbnkgdXNlIGNhc2UuIFdoYXQgd2UncmUgbGFja2luZyBpcyBhIGZl YXR1cmUgdG8KcmVkdWNlIHRoZSBsaW5rIHBhcmFtZXRlcnMgKmJlbG93KiB3aGF0J3MgcmVxdWly ZWQgYnkgdGhlIG1vZGUgdGhlCnVzZXJzcGFjZSB3YW50cy4gVGhpcyBjYW4gb25seSBiZSBhY2hp ZXZlZCB0aHJvdWdoIGNvb3BlcmF0aW9uIHdpdGgKdXNlcnNwYWNlLgoKPiBUaGlzIHdpbGwgbm90 IGRyb3AgdGhlIGxpbmsgQlcgdG8gYSBudW1iZXIgYmVsb3cgd2hhdCBpcyByZXF1aXJlZCBmb3IK PiB0aGUgbW9kZSBiZWNhdXNlIHRoZSByZXF1ZXN0ZWQgbW9kZXMgYXJlIHBydW5lZCBvciB2YWxp ZGF0ZWQgaW4KPiBpbnRlbF9kcF9tb2RlX3ZhbGlkIGJhc2VkIG9uIHRoZSB1cGZyb250IGxpbmsg dHJhaW5pbmcgcmVzdWx0cyBpbiB0aGUKPiBmb2xsb3dpbmcgcGF0Y2guIEFuZCB0aGVzZSB2YWx1 ZXMgYXJlIHVzZWQgaGVyZSBhcyB0aGUgc3RhcnRpbmcgdmFsdWVzCj4gb2YgbGluayByYXRlIGFu ZCBsYW5lIGNvdW50LgoKRWFjaCBwYXRjaCBtdXN0IGJlIGEgd29ydGh3aGlsZSBjaGFuZ2Ugb24g aXRzIG93bi4gQnkgbXkgcmVhZGluZyBvZiB0aGlzCnBhdGNoLCB3ZSBjYW4gZ28gdW5kZXIgdGhl IHJlcXVpcmVkIGJhbmR3aWR0aC4gWW91IGNhbid0IGp1c3RpZnkgdGhhdCBieQpzYXlpbmcgdGhl IGZvbGxvdy11cCBwYXRjaCBmaXhlcyBpdC4KCj4gSSBhbG1vc3QgZmVlbCB0aGF0IHRoZSB1cGZy b250IGxpbmsgdHJhaW5pbmcgcGF0Y2ggYW5kIHRoaXMgcGF0Y2ggc2hvdWxkIGJlIAo+IGNvbWJp bmVkIHNvIHRoYXQgaW5zZWFkIG9mIHN0YXJ0aW5nIGZyb20gdGhlIG1heCBsaW5rIHJhdGUgYW5k IGxhbmUgY291bnQgaXQKPiBpcyBjbGVhciB0aGF0IHdlIGFyZSBzdGFydGluZyBmcm9tIHRoZSB1 cGZyb250IHZhbHVlcy4KCkkgYW0gc3RpbGwgcmVhZGluZyBhbmQgZ2F0aGVyaW5nIG1vcmUgZmVl ZGJhY2sgb24gdGhlIHVwZnJvbnQgbGluawp0cmFpbmluZyBwYXRjaC4gSSB3aWxsIGdldCBiYWNr IHRvIHlvdS4gQnV0IHRoZSBpbXByZXNzaW9uIEknbSBjdXJyZW50bHkKZ2V0dGluZyBpcyB0aGF0 IHdlIGNhbid0IGRvIHRoaXMuIFRoZSB1cGZyb250IGxpbmsgdHJhaW5pbmcgcGF0Y2ggd2FzCm9y aWdpbmFsbHkgd3JpdHRlbiBmb3IgVVNCIHR5cGUgQy4gQnV0IGlmIERQIGNvbXBsaWFuY2UgaGFz IHByaW9yaXR5LAp0aGUgb3JkZXIgb2YgYnVzaW5lc3Mgc2hvdWxkIGJlIGdldHRpbmcgY29tcGxp YW5jZSB3aXRob3V0IHVwZnJvbnQgbGluawp0cmFpbmluZy4gSSBhbSBhbHNvIHN0aWxsIG5vdCBj b252aW5jZWQgdXBmcm9udCBsaW5rIHRyYWluaW5nIGlzCnJlcXVpcmVkIGZvciBjb21wbGlhbmNl LgoKVG8gYmUgY29udGludWVkLi4uCgpCUiwKSmFuaS4KCgoKPgo+IFJlZ2FyZHMsCj4gTWFuYXNp IAo+PiA+Cj4+ID4gdjc6Cj4+ID4gKiBBZGRyZXNzIHJlYWRhYmlsaXR5IGNvbmNlcm5zIChNaWth IEthaG9sYSkKPj4gPiB2NjoKPj4gPiAqIERvIG5vdCBzcGxpdCBxdW90ZWQgc3RyaW5nIGFjcm9z cyBsaW5lIChNaWthIEthaG9sYSkKPj4gPiB2NToKPj4gPiAqIFJlc2V0IHRoZSBsaW5rIHJhdGUg aW5kZXggdG8gdGhlIG1heCBsaW5rIHJhdGUgaW5kZXgKPj4gPiBiZWZvcmUgbG93ZXJpbmcgdGhl IGxhbmUgY291bnQgKEphbmkgTmlrdWxhKQo+PiA+ICogVXNlIHRoZSBwYXJhZGlnbSBmb3IgbG9v cCBpbiBpbnRlbF9kcF9saW5rX3JhdGVfaW5kZXgKPj4gPiB2NDoKPj4gPiAqIEZpeGVkIHRoZSBs aW5rIHJhdGUgZmFsbGJhY2sgbG9vcCAoTWFuYXNpIE5hdmFyZSkKPj4gPiB2MzoKPj4gPiAqIEZp eGVkIHNvbWUgcmViYXNlIGlzc3VlcyAoTWlrYSBLYWhvbGEpCj4+ID4gdjI6Cj4+ID4gKiBBZGQg YSBoZWxwZXIgZnVuY3Rpb24gdG8gcmV0dXJuIGluZGV4IG9mIHJlcXVlc3RlZCBsaW5rIHJhdGUK Pj4gPiBpbnRvIGNvbW1vbl9yYXRlcyBhcnJheQo+PiA+ICogQ2hhbmdlZCB0aGUgbGluayByYXRl IGZhbGxiYWNrIGxvb3AgdG8gbWFrZSB1c2UKPj4gPiBvZiBjb21tb25fcmF0ZXMgYXJyYXkgKE1p a2EgS2Fob2xhKQo+PiA+ICogQ2hhbmdlZCBJTlRFTF9JTkZPIHRvIElOVEVMX0dFTiAoRGF2aWQg V2VpbmVoYWxsKQo+PiA+Cj4+ID4gU2lnbmVkLW9mZi1ieTogTWFuYXNpIE5hdmFyZSA8bWFuYXNp LmQubmF2YXJlQGludGVsLmNvbT4KPj4gPiAtLS0KPj4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZGRpLmMgICAgICAgICAgICAgIHwgMTEzICsrKysrKysrKysrKysrKysrKysrKysrLS0t Cj4+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgICAgICAgICAgICAgICB8ICAx NSArKysrCj4+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX2xpbmtfdHJhaW5pbmcu YyB8ICAxMyArKy0KPj4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAgICAg ICAgICAgIHwgICA2ICstCj4+ID4gIDQgZmlsZXMgY2hhbmdlZCwgMTMzIGluc2VydGlvbnMoKyks IDE0IGRlbGV0aW9ucygtKQo+PiA+Cj4+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2RkaS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMKPj4gPiBp bmRleCA4MDY1YTVmLi4wOTMwMzhjIDEwMDY0NAo+PiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2RkaS5jCj4+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRp LmMKPj4gPiBAQCAtMTYzNywxOSArMTYzNywxOCBAQCB2b2lkIGludGVsX2RkaV9jbGtfc2VsZWN0 KHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+PiA+ICAJfQo+PiA+ICB9Cj4+ID4gIAo+ PiA+IC1zdGF0aWMgdm9pZCBpbnRlbF9kZGlfcHJlX2VuYWJsZV9kcChzdHJ1Y3QgaW50ZWxfZW5j b2RlciAqZW5jb2RlciwKPj4gPiArc3RhdGljIHZvaWQgaW50ZWxfZGRpX3ByZV9lbmFibGVfZWRw KHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+PiA+ICAJCQkJICAgIGludCBsaW5rX3Jh dGUsIHVpbnQzMl90IGxhbmVfY291bnQsCj4+ID4gLQkJCQkgICAgc3RydWN0IGludGVsX3NoYXJl ZF9kcGxsICpwbGwsCj4+ID4gLQkJCQkgICAgYm9vbCBsaW5rX21zdCkKPj4gPiArCQkJCSAgICBz dHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwgKnBsbCkKPj4gPiAgewo+PiA+ICAJc3RydWN0IGludGVs X2RwICppbnRlbF9kcCA9IGVuY190b19pbnRlbF9kcCgmZW5jb2Rlci0+YmFzZSk7Cj4+ID4gIAlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2Uu ZGV2KTsKPj4gPiAgCWVudW0gcG9ydCBwb3J0ID0gaW50ZWxfZGRpX2dldF9lbmNvZGVyX3BvcnQo ZW5jb2Rlcik7Cj4+ID4gIAo+PiA+ICAJaW50ZWxfZHBfc2V0X2xpbmtfcGFyYW1zKGludGVsX2Rw LCBsaW5rX3JhdGUsIGxhbmVfY291bnQsCj4+ID4gLQkJCQkgbGlua19tc3QpOwo+PiA+IC0JaWYg KGVuY29kZXItPnR5cGUgPT0gSU5URUxfT1VUUFVUX0VEUCkKPj4gPiAtCQlpbnRlbF9lZHBfcGFu ZWxfb24oaW50ZWxfZHApOwo+PiA+ICsJCQkJIGZhbHNlKTsKPj4gPiArCj4+ID4gKwlpbnRlbF9l ZHBfcGFuZWxfb24oaW50ZWxfZHApOwo+PiA+ICAKPj4gPiAgCWludGVsX2RkaV9jbGtfc2VsZWN0 KGVuY29kZXIsIHBsbCk7Cj4+ID4gIAlpbnRlbF9wcmVwYXJlX2RwX2RkaV9idWZmZXJzKGVuY29k ZXIpOwo+PiA+IEBAIC0xNjYwLDYgKzE2NTksMjggQEAgc3RhdGljIHZvaWQgaW50ZWxfZGRpX3By ZV9lbmFibGVfZHAoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4+ID4gIAkJaW50ZWxf ZHBfc3RvcF9saW5rX3RyYWluKGludGVsX2RwKTsKPj4gPiAgfQo+PiA+ICAKPj4gPiArc3RhdGlj IHZvaWQgaW50ZWxfZGRpX3ByZV9lbmFibGVfZHAoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29k ZXIsCj4+ID4gKwkJCQkgICAgaW50IGxpbmtfcmF0ZSwgdWludDMyX3QgbGFuZV9jb3VudCwKPj4g PiArCQkJCSAgICBzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwgKnBsbCwKPj4gPiArCQkJCSAgICBi b29sIGxpbmtfbXN0KQo+PiA+ICt7Cj4+ID4gKwlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwID0g ZW5jX3RvX2ludGVsX2RwKCZlbmNvZGVyLT5iYXNlKTsKPj4gPiArCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOwo+PiA+ICsJc3Ry dWN0IGludGVsX3NoYXJlZF9kcGxsX2NvbmZpZyB0bXBfcGxsX2NvbmZpZzsKPj4gPiArCj4+ID4g KwkvKiBEaXNhYmxlIHRoZSBQTEwgYW5kIG9idGFpbiB0aGUgUExMIGZvciBMaW5rIFRyYWluaW5n Cj4+ID4gKwkgKiB0aGF0IHN0YXJ0cyB3aXRoIGhpZ2hlc3QgbGluayByYXRlIGFuZCBsYW5lIGNv dW50Lgo+PiA+ICsJICovCj4+ID4gKwl0bXBfcGxsX2NvbmZpZyA9IHBsbC0+Y29uZmlnOwo+PiA+ ICsJcGxsLT5mdW5jcy5kaXNhYmxlKGRldl9wcml2LCBwbGwpOwo+PiA+ICsJcGxsLT5jb25maWcu Y3J0Y19tYXNrID0gMDsKPj4gPiArCj4+ID4gKwkvKiBJZiBMaW5rIFRyYWluaW5nIGZhaWxzLCBz ZW5kIGEgdWV2ZW50IHRvIGdlbmVyYXRlIGEgaG90cGx1ZyAqLwo+PiA+ICsJaWYgKCFpbnRlbF9k ZGlfbGlua190cmFpbihpbnRlbF9kcCwgbGlua19yYXRlLCBsYW5lX2NvdW50LCBsaW5rX21zdCkp Cj4+ID4gKwkJZHJtX2ttc19oZWxwZXJfaG90cGx1Z19ldmVudChlbmNvZGVyLT5iYXNlLmRldik7 Cj4+ID4gKwlwbGwtPmNvbmZpZyA9IHRtcF9wbGxfY29uZmlnOwo+PiA+ICt9Cj4+ID4gKwo+PiA+ ICBzdGF0aWMgdm9pZCBpbnRlbF9kZGlfcHJlX2VuYWJsZV9oZG1pKHN0cnVjdCBpbnRlbF9lbmNv ZGVyICplbmNvZGVyLAo+PiA+ICAJCQkJICAgICAgYm9vbCBoYXNfaGRtaV9zaW5rLAo+PiA+ICAJ CQkJICAgICAgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUsCj4+ID4gQEAg LTE2OTMsMjAgKzE3MTQsMjYgQEAgc3RhdGljIHZvaWQgaW50ZWxfZGRpX3ByZV9lbmFibGUoc3Ry dWN0IGludGVsX2VuY29kZXIgKmludGVsX2VuY29kZXIsCj4+ID4gIAlzdHJ1Y3QgaW50ZWxfY3J0 YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoZW5jb2Rlci0+Y3J0Yyk7Cj4+ID4gIAlpbnQgdHlwZSA9 IGludGVsX2VuY29kZXItPnR5cGU7Cj4+ID4gIAo+PiA+IC0JaWYgKHR5cGUgPT0gSU5URUxfT1VU UFVUX0RQIHx8IHR5cGUgPT0gSU5URUxfT1VUUFVUX0VEUCkgewo+PiA+ICsJaWYgKHR5cGUgPT0g SU5URUxfT1VUUFVUX0VEUCkKPj4gPiArCQlpbnRlbF9kZGlfcHJlX2VuYWJsZV9lZHAoaW50ZWxf ZW5jb2RlciwKPj4gPiArCQkJCQljcnRjLT5jb25maWctPnBvcnRfY2xvY2ssCj4+ID4gKwkJCQkJ Y3J0Yy0+Y29uZmlnLT5sYW5lX2NvdW50LAo+PiA+ICsJCQkJCWNydGMtPmNvbmZpZy0+c2hhcmVk X2RwbGwpOwo+PiA+ICsKPj4gPiArCWlmICh0eXBlID09IElOVEVMX09VVFBVVF9EUCkKPj4gPiAg CQlpbnRlbF9kZGlfcHJlX2VuYWJsZV9kcChpbnRlbF9lbmNvZGVyLAo+PiA+ICAJCQkJCWNydGMt PmNvbmZpZy0+cG9ydF9jbG9jaywKPj4gPiAgCQkJCQljcnRjLT5jb25maWctPmxhbmVfY291bnQs Cj4+ID4gIAkJCQkJY3J0Yy0+Y29uZmlnLT5zaGFyZWRfZHBsbCwKPj4gPiAgCQkJCQlpbnRlbF9j cnRjX2hhc190eXBlKGNydGMtPmNvbmZpZywKPj4gPiAgCQkJCQkJCSAgICBJTlRFTF9PVVRQVVRf RFBfTVNUKSk7Cj4+ID4gLQl9Cj4+ID4gLQlpZiAodHlwZSA9PSBJTlRFTF9PVVRQVVRfSERNSSkg ewo+PiA+ICsKPj4gPiArCWlmICh0eXBlID09IElOVEVMX09VVFBVVF9IRE1JKQo+PiA+ICAJCWlu dGVsX2RkaV9wcmVfZW5hYmxlX2hkbWkoaW50ZWxfZW5jb2RlciwKPj4gPiAgCQkJCQkgIGNydGMt PmNvbmZpZy0+aGFzX2hkbWlfc2luaywKPj4gPiAgCQkJCQkgICZjcnRjLT5jb25maWctPmJhc2Uu YWRqdXN0ZWRfbW9kZSwKPj4gPiAgCQkJCQkgIGNydGMtPmNvbmZpZy0+c2hhcmVkX2RwbGwpOwo+ PiA+IC0JfQo+PiA+ICsKPj4gPiAgfQo+PiA+ICAKPj4gPiAgc3RhdGljIHZvaWQgaW50ZWxfZGRp X3Bvc3RfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlciwKPj4gPiBA QCAtMjQzNSw2ICsyNDYyLDcyIEBAIGludGVsX2RkaV9nZXRfbGlua19kcGxsKHN0cnVjdCBpbnRl bF9kcCAqaW50ZWxfZHAsIGludCBjbG9jaykKPj4gPiAgCXJldHVybiBwbGw7Cj4+ID4gIH0KPj4g PiAgCj4+ID4gK2Jvb2wKPj4gPiAraW50ZWxfZGRpX2xpbmtfdHJhaW4oc3RydWN0IGludGVsX2Rw ICppbnRlbF9kcCwgaW50IG1heF9saW5rX3JhdGUsCj4+ID4gKwkJICAgICB1aW50OF90IG1heF9s YW5lX2NvdW50LCBib29sIGxpbmtfbXN0KQo+PiA+ICt7Cj4+ID4gKwlzdHJ1Y3QgaW50ZWxfY29u bmVjdG9yICpjb25uZWN0b3IgPSBpbnRlbF9kcC0+YXR0YWNoZWRfY29ubmVjdG9yOwo+PiA+ICsJ c3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIgPSBjb25uZWN0b3ItPmVuY29kZXI7Cj4+ID4g KwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJh c2UuZGV2KTsKPj4gPiArCXN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbCAqcGxsOwo+PiA+ICsJc3Ry dWN0IGludGVsX3NoYXJlZF9kcGxsX2NvbmZpZyB0bXBfcGxsX2NvbmZpZzsKPj4gPiArCWludCBs aW5rX3JhdGUsIG1heF9saW5rX3JhdGVfaW5kZXgsIGxpbmtfcmF0ZV9pbmRleDsKPj4gPiArCXVp bnQ4X3QgbGFuZV9jb3VudDsKPj4gPiArCWludCBjb21tb25fcmF0ZXNbRFBfTUFYX1NVUFBPUlRF RF9SQVRFU10gPSB7fTsKPj4gPiArCWJvb2wgcmV0ID0gZmFsc2U7Cj4+ID4gKwo+PiA+ICsJbWF4 X2xpbmtfcmF0ZV9pbmRleCA9IGludGVsX2RwX2xpbmtfcmF0ZV9pbmRleChpbnRlbF9kcCwgY29t bW9uX3JhdGVzLAo+PiA+ICsJCQkJCQkgICAgICAgbWF4X2xpbmtfcmF0ZSk7Cj4+ID4gKwlpZiAo bWF4X2xpbmtfcmF0ZV9pbmRleCA8IDApIHsKPj4gPiArCQlEUk1fRVJST1IoIkludmFsaWQgTGlu ayBSYXRlXG4iKTsKPj4gPiArCQlyZXR1cm4gZmFsc2U7Cj4+ID4gKwl9Cj4+ID4gKwo+PiA+ICsJ Zm9yIChsYW5lX2NvdW50ID0gbWF4X2xhbmVfY291bnQ7IGxhbmVfY291bnQgPiAwOyBsYW5lX2Nv dW50ID4+PSAxKSB7Cj4+ID4gKwkJZm9yIChsaW5rX3JhdGVfaW5kZXggPSBtYXhfbGlua19yYXRl X2luZGV4Owo+PiA+ICsJCSAgICAgbGlua19yYXRlX2luZGV4ID49IDA7IGxpbmtfcmF0ZV9pbmRl eC0tKSB7Cj4+ID4gKwkJCWxpbmtfcmF0ZSA9IGNvbW1vbl9yYXRlc1tsaW5rX3JhdGVfaW5kZXhd Owo+PiA+ICsJCQlwbGwgPSBpbnRlbF9kZGlfZ2V0X2xpbmtfZHBsbChpbnRlbF9kcCwgbGlua19y YXRlKTsKPj4gPiArCQkJaWYgKHBsbCA9PSBOVUxMKSB7Cj4+ID4gKwkJCQlEUk1fRVJST1IoIkNv dWxkIG5vdCBmaW5kIERQTEwgZm9yIGxpbmsgdHJhaW5pbmcuXG4iKTsKPj4gPiArCQkJCXJldHVy biBmYWxzZTsKPj4gPiArCQkJfQo+PiA+ICsJCQl0bXBfcGxsX2NvbmZpZyA9IHBsbC0+Y29uZmln Owo+PiA+ICsJCQlwbGwtPmZ1bmNzLmVuYWJsZShkZXZfcHJpdiwgcGxsKTsKPj4gPiArCj4+ID4g KwkJCWludGVsX2RwX3NldF9saW5rX3BhcmFtcyhpbnRlbF9kcCwgbGlua19yYXRlLAo+PiA+ICsJ CQkJCQkgbGFuZV9jb3VudCwgbGlua19tc3QpOwo+PiA+ICsKPj4gPiArCQkJaW50ZWxfZGRpX2Ns a19zZWxlY3QoZW5jb2RlciwgcGxsKTsKPj4gPiArCQkJaW50ZWxfcHJlcGFyZV9kcF9kZGlfYnVm ZmVycyhlbmNvZGVyKTsKPj4gPiArCQkJaW50ZWxfZGRpX2luaXRfZHBfYnVmX3JlZyhlbmNvZGVy KTsKPj4gPiArCQkJaW50ZWxfZHBfc2lua19kcG1zKGludGVsX2RwLCBEUk1fTU9ERV9EUE1TX09O KTsKPj4gPiArCQkJcmV0ID0gaW50ZWxfZHBfc3RhcnRfbGlua190cmFpbihpbnRlbF9kcCk7Cj4+ ID4gKwkJCWlmIChyZXQpCj4+ID4gKwkJCQlicmVhazsKPj4gPiArCj4+ID4gKwkJCS8qIERpc2Fi bGUgcG9ydCBmb2xsb3dlZCBieSBQTEwgZm9yIG5leHQKPj4gPiArCQkJICpyZXRyeS9jbGVhbiB1 cAo+PiA+ICsJCQkgKi8KPj4gPiArCQkJaW50ZWxfZGRpX3Bvc3RfZGlzYWJsZShlbmNvZGVyLCBO VUxMLCBOVUxMKTsKPj4gPiArCQkJcGxsLT5mdW5jcy5kaXNhYmxlKGRldl9wcml2LCBwbGwpOwo+ PiA+ICsJCQlwbGwtPmNvbmZpZyA9IHRtcF9wbGxfY29uZmlnOwo+PiA+ICsJCX0KPj4gPiArCQlp ZiAocmV0KSB7Cj4+ID4gKwkJCURSTV9ERUJVR19LTVMoIkxpbmsgVHJhaW5pbmcgc3VjY2Vzc2Z1 bCBhdCBsaW5rIHJhdGU6ICVkIGxhbmU6ICVkXG4iLAo+PiA+ICsJCQkJICAgICAgbGlua19yYXRl LCBsYW5lX2NvdW50KTsKPj4gPiArCQkJYnJlYWs7Cj4+ID4gKwkJfQo+PiA+ICsJfQo+PiA+ICsK Pj4gPiArCWludGVsX2RwX3N0b3BfbGlua190cmFpbihpbnRlbF9kcCk7Cj4+ID4gKwo+PiA+ICsJ aWYgKCFsYW5lX2NvdW50KQo+PiA+ICsJCURSTV9FUlJPUigiTGluayBUcmFpbmluZyBGYWlsZWRc biIpOwo+PiA+ICsKPj4gPiArCXJldHVybiByZXQ7Cj4+ID4gK30KPj4gPiArCj4+ID4gIHZvaWQg aW50ZWxfZGRpX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgZW51bSBwb3J0IHBvcnQpCj4+ ID4gIHsKPj4gPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUo ZGV2KTsKPj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPj4gPiBpbmRleCA2OWNlZTliLi5kODFj NjdjYiAxMDA2NDQKPj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4+ ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+PiA+IEBAIC0xNTA2LDYg KzE1MDYsMjEgQEAgaW50ZWxfZHBfbWF4X2xpbmtfcmF0ZShzdHJ1Y3QgaW50ZWxfZHAgKmludGVs X2RwKQo+PiA+ICAJcmV0dXJuIHJhdGVzW2xlbiAtIDFdOwo+PiA+ICB9Cj4+ID4gIAo+PiA+ICtp bnQgaW50ZWxfZHBfbGlua19yYXRlX2luZGV4KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsIGlu dCAqY29tbW9uX3JhdGVzLAo+PiA+ICsJCQkgICAgIGludCBsaW5rX3JhdGUpCj4+ID4gK3sKPj4g PiArCWludCBjb21tb25fbGVuOwo+PiA+ICsJaW50IGluZGV4Owo+PiA+ICsKPj4gPiArCWNvbW1v bl9sZW4gPSBpbnRlbF9kcF9jb21tb25fcmF0ZXMoaW50ZWxfZHAsIGNvbW1vbl9yYXRlcyk7Cj4+ ID4gKwlmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBjb21tb25fbGVuOyBpbmRleCsrKSB7Cj4+ID4g KwkJaWYgKGxpbmtfcmF0ZSA9PSBjb21tb25fcmF0ZXNbY29tbW9uX2xlbiAtIGluZGV4IC0gMV0p Cj4+ID4gKwkJCXJldHVybiBjb21tb25fbGVuIC0gaW5kZXggLSAxOwo+PiA+ICsJfQo+PiA+ICsK Pj4gPiArCXJldHVybiAtMTsKPj4gPiArfQo+PiA+ICsKPj4gPiAgaW50IGludGVsX2RwX3JhdGVf c2VsZWN0KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsIGludCByYXRlKQo+PiA+ICB7Cj4+ID4g IAlyZXR1cm4gcmF0ZV90b19pbmRleChyYXRlLCBpbnRlbF9kcC0+c2lua19yYXRlcyk7Cj4+ID4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX2xpbmtfdHJhaW5pbmcu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX2xpbmtfdHJhaW5pbmcuYwo+PiA+IGlu ZGV4IGM0MzhiMDIuLjZlYjVlYjYgMTAwNjQ0Cj4+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHBfbGlua190cmFpbmluZy5jCj4+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHBfbGlua190cmFpbmluZy5jCj4+ID4gQEAgLTMxMyw5ICszMTMsMTYgQEAgdm9p ZCBpbnRlbF9kcF9zdG9wX2xpbmtfdHJhaW4oc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPj4g PiAgCQkJCURQX1RSQUlOSU5HX1BBVFRFUk5fRElTQUJMRSk7Cj4+ID4gIH0KPj4gPiAgCj4+ID4g LXZvaWQKPj4gPiArYm9vbAo+PiA+ICBpbnRlbF9kcF9zdGFydF9saW5rX3RyYWluKHN0cnVjdCBp bnRlbF9kcCAqaW50ZWxfZHApCj4+ID4gIHsKPj4gPiAtCWludGVsX2RwX2xpbmtfdHJhaW5pbmdf Y2xvY2tfcmVjb3ZlcnkoaW50ZWxfZHApOwo+PiA+IC0JaW50ZWxfZHBfbGlua190cmFpbmluZ19j aGFubmVsX2VxdWFsaXphdGlvbihpbnRlbF9kcCk7Cj4+ID4gKwlib29sIHJldDsKPj4gPiArCj4+ ID4gKwlpZiAoaW50ZWxfZHBfbGlua190cmFpbmluZ19jbG9ja19yZWNvdmVyeShpbnRlbF9kcCkp IHsKPj4gPiArCQlyZXQgPSBpbnRlbF9kcF9saW5rX3RyYWluaW5nX2NoYW5uZWxfZXF1YWxpemF0 aW9uKGludGVsX2RwKTsKPj4gPiArCQlpZiAocmV0KQo+PiA+ICsJCQlyZXR1cm4gdHJ1ZTsKPj4g PiArCX0KPj4gPiArCj4+ID4gKwlyZXR1cm4gZmFsc2U7Cj4+ID4gIH0KPj4gPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcnYuaAo+PiA+IGluZGV4IDhmZDE2YWQuLjA4Y2I1NzEgMTAwNjQ0Cj4+ID4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPj4gPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+PiA+IEBAIC0xMTY0LDYgKzExNjQsOCBAQCB2b2lkIGlu dGVsX2RkaV9jbG9ja19nZXQoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4+ID4gIAkJ CSBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcpOwo+PiA+ICB2b2lkIGludGVs X2RkaV9zZXRfdmNfcGF5bG9hZF9hbGxvYyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIGJvb2wgc3Rh dGUpOwo+PiA+ICB1aW50MzJfdCBkZGlfc2lnbmFsX2xldmVscyhzdHJ1Y3QgaW50ZWxfZHAgKmlu dGVsX2RwKTsKPj4gPiArYm9vbCBpbnRlbF9kZGlfbGlua190cmFpbihzdHJ1Y3QgaW50ZWxfZHAg KmludGVsX2RwLCBpbnQgbWF4X2xpbmtfcmF0ZSwKPj4gPiArCQkJICB1aW50OF90IG1heF9sYW5l X2NvdW50LCBib29sIGxpbmtfbXN0KTsKPj4gPiAgc3RydWN0IGludGVsX3NoYXJlZF9kcGxsICpp bnRlbF9kZGlfZ2V0X2xpbmtfZHBsbChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAo+PiA+ICAJ CQkJCQkgIGludCBjbG9jayk7Cj4+ID4gIHVuc2lnbmVkIGludCBpbnRlbF9mYl9hbGlnbl9oZWln aHQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPj4gPiBAQCAtMTM4NSw3ICsxMzg3LDcgQEAgYm9v bCBpbnRlbF9kcF9pbml0X2Nvbm5lY3RvcihzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRl bF9kaWdfcG9ydCwKPj4gPiAgdm9pZCBpbnRlbF9kcF9zZXRfbGlua19wYXJhbXMoc3RydWN0IGlu dGVsX2RwICppbnRlbF9kcCwKPj4gPiAgCQkJICAgICAgaW50IGxpbmtfcmF0ZSwgdWludDhfdCBs YW5lX2NvdW50LAo+PiA+ICAJCQkgICAgICBib29sIGxpbmtfbXN0KTsKPj4gPiAtdm9pZCBpbnRl bF9kcF9zdGFydF9saW5rX3RyYWluKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApOwo+PiA+ICti b29sIGludGVsX2RwX3N0YXJ0X2xpbmtfdHJhaW4oc3RydWN0IGludGVsX2RwICppbnRlbF9kcCk7 Cj4+ID4gIHZvaWQgaW50ZWxfZHBfc3RvcF9saW5rX3RyYWluKHN0cnVjdCBpbnRlbF9kcCAqaW50 ZWxfZHApOwo+PiA+ICB2b2lkIGludGVsX2RwX3NpbmtfZHBtcyhzdHJ1Y3QgaW50ZWxfZHAgKmlu dGVsX2RwLCBpbnQgbW9kZSk7Cj4+ID4gIHZvaWQgaW50ZWxfZHBfZW5jb2Rlcl9yZXNldChzdHJ1 Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpOwo+PiA+IEBAIC0xNDA3LDYgKzE0MDksOCBAQCB2b2lk IGludGVsX2RwX2FkZF9wcm9wZXJ0aWVzKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsIHN0cnVj dCBkcm1fY29ubmVjdG9yICpjbwo+PiA+ICB2b2lkIGludGVsX2RwX21zdF9zdXNwZW5kKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYpOwo+PiA+ICB2b2lkIGludGVsX2RwX21zdF9yZXN1bWUoc3RydWN0 IGRybV9kZXZpY2UgKmRldik7Cj4+ID4gIGludCBpbnRlbF9kcF9tYXhfbGlua19yYXRlKHN0cnVj dCBpbnRlbF9kcCAqaW50ZWxfZHApOwo+PiA+ICtpbnQgaW50ZWxfZHBfbGlua19yYXRlX2luZGV4 KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsIGludCAqY29tbW9uX3JhdGVzLAo+PiA+ICsJCQkg ICAgIGludCBsaW5rX3JhdGUpOwo+PiA+ICBpbnQgaW50ZWxfZHBfcmF0ZV9zZWxlY3Qoc3RydWN0 IGludGVsX2RwICppbnRlbF9kcCwgaW50IHJhdGUpOwo+PiA+ICB2b2lkIGludGVsX2RwX2hvdF9w bHVnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyKTsKPj4gPiAgdm9pZCBpbnRl bF9wb3dlcl9zZXF1ZW5jZXJfcmVzZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KTsKPj4gCj4+IC0tIAo+PiBKYW5pIE5pa3VsYSwgSW50ZWwgT3BlbiBTb3VyY2UgVGVjaG5vbG9n eSBDZW50ZXIKCi0tIApKYW5pIE5pa3VsYSwgSW50ZWwgT3BlbiBTb3VyY2UgVGVjaG5vbG9neSBD ZW50ZXIKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50 ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBz Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==