From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.2 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id D911DC43331 for ; Sun, 10 Nov 2019 13:15:35 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 9D6D820869 for ; Sun, 10 Nov 2019 13:15:35 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 9D6D820869 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=xen.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1iTn3W-0005Ze-5x; Sun, 10 Nov 2019 13:15:02 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1iTn3V-0005ZZ-9Y for xen-devel@lists.xenproject.org; Sun, 10 Nov 2019 13:15:01 +0000 X-Inumbo-ID: 188fe9f4-03bc-11ea-b678-bc764e2007e4 Received: from deinos.phlegethon.org (unknown [2001:41d0:8:b1d7::1]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id 188fe9f4-03bc-11ea-b678-bc764e2007e4; Sun, 10 Nov 2019 13:14:59 +0000 (UTC) Received: from tjd by deinos.phlegethon.org with local (Exim 4.92.3 (FreeBSD)) (envelope-from ) id 1iTn3P-000Hfn-JJ; Sun, 10 Nov 2019 13:14:55 +0000 Date: Sun, 10 Nov 2019 13:14:55 +0000 From: Tim Deegan To: Julian Tuminaro Message-ID: <20191110131455.GB67574@deinos.phlegethon.org> References: <20191106022427.9088-1-julian.tuminaro@gmail.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20191106022427.9088-1-julian.tuminaro@gmail.com> User-Agent: Mutt/1.11.1 (2018-12-01) X-SA-Known-Good: Yes X-SA-Exim-Connect-IP: X-SA-Exim-Mail-From: tim@xen.org X-SA-Exim-Scanned: No (on deinos.phlegethon.org); SAEximRunCond expanded to false Subject: Re: [Xen-devel] [PATCH 1/1] kdd.c: Add support for initial handshake in KD protocol for Win 7, 8 and 10 (64 bit) X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: wl@xen.org, paul@xen.org, Jenish Rakholiya , ian.jackson@eu.citrix.com, Julian Tuminaro , xen-devel@lists.xenproject.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" SGksCgpBdCAyMToyNCAtMDUwMCBvbiAwNSBOb3YgKDE1NzI5ODkwNjcpLCBKdWxpYW4gVHVtaW5h cm8gd3JvdGU6Cj4gQ3VycmVudCBpbXBsZW1lbnRhdGlvbiBvZiBmaW5kX29zIGlzIGJhc2VkIG9u IHRoZSBoYXJkLWNvZGVkIHZhbHVlcyBmb3IKPiBkaWZmZXJlbnQgV2luZG93cyB2ZXJzaW9uLiBJ dCB1c2VzIHRoZSB2YWx1ZSBmb3IgZ2V0IHRoZSBhZGRyZXNzIHRvCj4gc3RhcnQgbG9va2luZyBm b3IgRE9TIGhlYWRlciBpbiB0aGUgZ2l2ZW4gc3BlY2lmaWVkIHJhbmdlLiBIb3dldmVyLCB0aGlz Cj4gaXMgbm90IHNjYWxhYmxlIHRvIGFsbCB2ZXJzaW9uIG9mIFdpbmRvd3MgYXMgaXQgd2lsbCBy ZXF1aXJlIHVzIHRvIGtlZXAKPiBhZGRpbmcgbmV3IGVudHJpZXMgYW5kIGFsc28gZHVlIHRvIEtB U0xSLCBjaGFuY2VzIG9mIG5vdCBoaXR0aW5nIHRoZSBQRQo+IGhlYWRlciBpcyBzaWduaWZpY2Fu dC4gV2UgaW1wbGVtZW50IGEgd2F5IGZvciA2NC1iaXQgc3lzdGVtcyB0byB1c2UgSURUCj4gZW50 cnkgdG8gZ2V0IGEgdmFsaWQgZXhjZXB0aW9uL2ludGVycnVwdCBoYW5kbGVyIGFuZCB0aGVuIG1v dmUgYmFjayBpbnRvCj4gdGhlIG1lbW9yeSB0byBmaW5kIHRoZSB2YWxpZCBET1MgaGVhZGVyLiBT aW5jZSBJRFQgZW50cmllcyBhcmUgcHJvdGVjdGVkCj4gYnkgUGF0Y2hHdWFyZCwgd2UgdGhpbmsg b3VyIGFzc3VtcHRpb24gdGhhdCBJRFQgZW50cmllcyB3aWxsIG5vdCBiZQo+IGNvcnJ1cHRlZCBp cyB2YWxpZCBmb3Igb3VyIHB1cnBvc2UuIE9uY2Ugd2UgaGF2ZSB0aGUgaW1hZ2UgYmFzZSwgd2UK PiBzZWFyY2ggZm9yIHRoZSBEQkdLRF9HRVRfVkVSU0lPTjY0IHN0cnVjdHVyZSB0eXBlIGluIC5k YXRhIHNlY3Rpb24gdG8KPiBnZXQgaW5mb3JtYXRpb24gcmVxdWlyZWQgZm9yIGhhbmRzaGFrZS4K ClRoYW5rIHlvdSB2ZXJ5IG11Y2ggZm9yIHRoaXMgLSBpdCBsb29rcyBzdXBlci11c2VmdWwhICBE b2VzIHRoaXMKdGVjaG5pcXVlIG9ubHkgd29yayBpZiB0aGUgZ3Vlc3Qga2VybmVsIGhhcyBkZWJ1 Z2dpbmcgZW5hYmxlZCwgb3IgY2FuCml0IHdvcmsgb24gYWxsIHN5c3RlbXM/CgpJIGhhdmUgc29t ZSBjb21tZXRucyBvbiB0aGUgY29kZSwgYmVsb3cuCgo+ICAvKiBXaW5kb3dzIHZlcnNpb24gZGV0 YWlscyAqLwo+ICB0eXBlZGVmIHN0cnVjdCB7Cj4gICAgICB1aW50MzJfdCBidWlsZDsgICAgICAg ICAgICAgCj4gQEAgLTYyLDYgKzY0LDcgQEAgdHlwZWRlZiBzdHJ1Y3Qgewo+ICAgICAgdWludDMy X3QgdmVyc2lvbjsgICAgICAgICAgIC8qICstPiBOdEJ1aWxkTnVtYmVyICovCj4gICAgICB1aW50 MzJfdCBtb2R1bGVzOyAgICAgICAgICAgLyogKy0+IFBzTG9hZGVkTW9kdWxlTGlzdCAqLwo+ICAg ICAgdWludDMyX3QgcHJjYnM7ICAgICAgICAgICAgIC8qICstPiBLaVByb2Nlc3NvckJsb2NrICov Cj4gKyAgICB1aW50MzJfdCBrZGRsOwoKVGhpcyBuZWVkcyBhIGNvbW1lbnQgZGVzY3JpYmluZyB0 aGUgV2luZG93cyBuYW1lIG9mIHdoYXQgaXQgcG9pbnRzIHRvLgoKPiArLyoqCj4gKyAqIEBicmll ZiBQYXJzZSB0aGUgbWVtb3J5IGF0IFxhIGZpbGViYXNlIGFzIGEgdmFsaWQgRE9TIGhlYWRlciBh bmQgZ2V0IHZpcnR1YWwKPiArICogYWRkcmVzcyBvZmZzZXQgYW5kIHNpemUgZm9yIGFueSBnaXZl biBzZWN0aW9uIG5hbWUgKGlmIGl0IGV4aXN0cykKPiArICoKPiArICogQHBhcmFtIHMgUG9pbnRl ciB0byB0aGUga2RkX3N0YXRlIHN0cnVjdHVyZQo+ICsgKiBAcGFyYW0gZmlsZWJhc2UgQmFzZSBh ZGRyZXNzIG9mIHRoZSBmaWxlIHN0cnVjdHVyZQo+ICsgKiBAcGFyYW0gc2VjdG5hbWUgUG9pbnRl ciB0byB0aGUgc2VjdGlvbiBuYW1lIGMtc3RyaW5nIHRvIGxvb2sgZm9yCj4gKyAqIEBwYXJhbSB2 YWRkciBQb2ludGVyIHRvIHdyaXRlIHRoZSB2aXJ0dWFsIGFkZHJlc3Mgb2Ygc2VjdGlvbiBzdGFy dCB0bwo+ICsgKiAoaWYgZm91bmQpCj4gKyAqIEBwYXJhbSB2aXN6ZSBQb2ludGVyIHRvIHdyaXRl IHRoZSBzZWN0aW9uIHNpemUgdG8gKGlmIGZvdW5kKQo+ICsgKgo+ICsgKiBAcmV0dXJuIC0xIG9u IGZhaWx1cmUgdG8gZmluZCB0aGUgc2VjdGlvbiBuYW1lCj4gKyAqIEByZXR1cm4gMCBvbiBzdWNj ZXNzCj4gKyAqLwo+ICtzdGF0aWMgaW50IGdldF9wZTY0X3NlY3Rpb25zKGtkZF9zdGF0ZSAqcywg dWludDY0X3QgZmlsZWJhc2UsIGNoYXIgKnNlY3RuYW1lLAo+ICsgICAgICAgIHVpbnQ2NF90ICp2 YWRkciwgdWludDMyX3QgKnZzaXplKQoKVGhlc2UgbmV3IGZ1bmN0aW9ucyBkb24ndCBiZWxvbmcg aW4gdGhlICdVdGlsaXR5IGZ1bmN0aW9ucycgc2VjdGlvbi4KUGxlYXNlIG1vdmUgdGhlbSB0byBi ZXNpZGUgdGhlIG90aGVyIE9TLWZpbmRpbmcgY29kZS4KCj4gK3sKPiArICAgIHVpbnQ4X3QgYnVm WzB4MzBdOwoKUEVfU0VDVF9FTlRfU1osIHBsZWFzZS4KCj4gKyAgICB1aW50NjRfdCBwZV9oZHI7 Cj4gKyAgICB1aW50NjRfdCBzZWN0X3N0YXJ0Owo+ICsgICAgdWludDE2X3QgbnVtX3NlY3Rpb25z Owo+ICsgICAgaW50IHJldDsKPiArCj4gKyAgICByZXQgPSAtMTsKPiArCj4gKyAgICBpZiAoIXMt Pm9zLnc2NCkgewo+ICsgICAgICAgIHJldHVybiByZXQ7Cj4gKyAgICB9Cj4gKwo+ICsgICAgLy8g cmVhZCBQRSBoZWFkZXIgb2Zmc2V0Cj4gKyAgICBpZiAoa2RkX3JlYWRfdmlydHVhbChzLCBzLT5j cHVpZCwgZmlsZWJhc2UgKyBET1NfSERSX1BFX09GRiwgRE9TX0hEUl9QRV9TWiwKPiArICAgICAg ICAgICAgICAgIGJ1ZikgIT0gRE9TX0hEUl9QRV9TWikgewo+ICsgICAgICAgIHJldHVybiAtMTsK PiArICAgIH0KPiArICAgIHBlX2hkciA9IGZpbGViYXNlICsgKih1aW50MzJfdCAqKWJ1ZjsKCkhl cmUgYW5kIGVsc2V3aGVyZSwgcGxlYXNlIHJlYWQgZGlyZWN0bHkgaW50byB0aGUgdmFyaWFibGVz LCBlLmcuOgoKICB1aW50MzJfdCBwZV9oZHI7CiAga2RkX3JlYWRfdmlydHVhbChzLCBzLT5jcHVp ZCwgZmlsZWJhc2UgKyBET1NfSERSX1BFX09GRiwKICAgICAgICAgICAgICAgICAgIHNpemVvZiBw ZV9oZHIsICZwZV9oZHIpOwogIHBlX2hkciArPSBmaWxlYmFzZTsKClRoYXQgZ2l2ZXMgbmVhdGVy IGNvZGUgYW5kIGF2b2lkcyBhbnkgY29uZnVzaW9uIGFib3V0IHRoZSBzaXplcyBvZgp2YXJpb3Vz IGNvcGllcyBhbmQgYnVmZmVycy4KCj4gKwo+ICsgICAgLy8gcmVhZCBudW1iZXIgb2Ygc2VjdGlv bnMKPiArICAgIGlmIChrZGRfcmVhZF92aXJ0dWFsKHMsIHMtPmNwdWlkLCBwZV9oZHIgKyBQRV9O VU1fU0VDVElPTl9PRkYsCj4gKyAgICAgICAgICAgICAgICBQRV9OVU1fU0VDVElPTl9TWiwgJmJ1 ZikgIT0gUEVfTlVNX1NFQ1RJT05fU1opIHsKPiArICAgICAgICByZXR1cm4gLTE7Cj4gKyAgICB9 Cj4gKyAgICBudW1fc2VjdGlvbnMgPSAqKHVpbnQxNl90ICopYnVmOwoKVGhpcyBuZWVkcyBhIGNo ZWNrIGZvciB2ZXJ5IGxhcmdlIG51bWJlcnMgLS0gbG9hZGluZyA2NSw1MzUgc2VjdGlvbgpoZWFk ZXJzIG1pZ2h0IHRha2UgYSBsb25nIHRpbWUuCgo+ICsgICAgLy8gcmVhZCBzaXplIG9mIG9wdGlv bmFsIGhlYWRlcgo+ICsgICAgaWYgKGtkZF9yZWFkX3ZpcnR1YWwocywgcy0+Y3B1aWQsIHBlX2hk ciArIFBFX09QVF9IRFJfU1pfT0ZGLAo+ICsgICAgICAgICAgICAgICAgUEVfT1BUX0hEUl9TWl9T WiwgJmJ1ZikgIT0gUEVfT1BUX0hEUl9TWl9TWikgewo+ICsgICAgICAgIHJldHVybiAtMTsKPiAr ICAgIH0KPiArCj4gKyAgICAvLyAweDE4IGlzIHRoZSBzaXplIG9mIFBFIGhlYWRlcgo+ICsgICAg c2VjdF9zdGFydCA9IHBlX2hkciArIFBFX0hEUl9TWiArICoodWludDE2X3QgKilidWY7Cj4gKwo+ ICsgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1fc2VjdGlvbnM7IGkrKykgewo+ICsgICAgICAg IGlmIChrZGRfcmVhZF92aXJ0dWFsKHMsIHMtPmNwdWlkLCBzZWN0X3N0YXJ0ICsgKGkgKiBQRV9T RUNUX0VOVF9TWiksCj4gKyAgICAgICAgICAgICAgICAgICAgUEVfU0VDVF9FTlRfU1osICZidWYp ICE9IFBFX1NFQ1RfRU5UX1NaKSB7Cj4gKyAgICAgICAgICAgIHJldHVybiAtMTsKPiArICAgICAg ICB9Cj4gKwo+ICsgICAgICAgIGlmICghc3RybmNtcChzZWN0bmFtZSwgKGNoYXIgKikoYnVmICsg UEVfU0VDVF9OQU1FX09GRiksCj4gKyAgICAgICAgICAgICAgICAgICAgUEVfU0VDVF9OQU1FX1Na KSkgewo+ICsgICAgICAgICAgICAqdmFkZHIgPSBmaWxlYmFzZSArICoodWludDMyX3QgKikoYnVm ICsgUEVfU0VDVF9SVkFfT0ZGKTsKPiArICAgICAgICAgICAgKnZzaXplID0gKih1aW50MzJfdCAq KShidWYgKyBQRV9TRUNUX1ZTSVpFX09GRik7Cj4gKyAgICAgICAgICAgIHJldCA9IDA7Cj4gKyAg ICAgICAgICAgIGJyZWFrOwoKSnVzdCAncmV0dXJuIDAnIHdpbGwgZG8gaGVyZSwgYW5kLi4KCj4g KyAgICAgICAgfQo+ICsgICAgfQo+ICsKPiArICAgIHJldHVybiByZXQ7CgpyZXR1cm4gLTEgaGVy ZSwgYW5kIGRyb3AgJ3JldCcuCgo+ICt9Cj4gKwo+ICsvKioKPiArICogQGJyaWVmIEdldCB0aGUg T1MgaW5mb3JtYXRpb24gbGlrZSBiYXNlIGFkZHJlc3MsIG1pbm9yIHZlcnNpb24sCj4gKyAqIFBz TG9hZGVkTW9kdWxlTGlzdCBhbmQgRGVidWdnZXJEYXRhTGlzdCAoYmFzaWNhbGx5IHRoZSBmaWVs ZHMgb2YKPiArICogREJHS0RfR0VUX1ZFUlNJT042NCBzdHJ1dHVyZSByZXF1aXJlZCB0byBkbyBo YW5kc2hha2U/KS4KPiArICoKPiArICogVGhpcyBpcyBkb25lIGJ5IHJlYWRpbmcgdGhlIElEVCBl bnRyeSBmb3IgZGl2aWRlLWJ5LXplcm8gZXhjZXB0aW9uIGFuZAo+ICsgKiBzZWFyY2hpbmcgYmFj ayBpbnRvIHRoZSBtZW1vcnkgZm9yIERPUyBoZWFkZXIgKHdoaWNoIGlzIG91ciBrZXJuZWwgYmFz ZSkuCj4gKyAqIE9uY2Ugd2UgaGF2ZSB0aGUga2VybmVsIGJhc2UsIHdlIHBhcnNlIHRoZSBQRSBo ZWFkZXIgYW5kIGxvb2sgZm9yIGtlcm5lbAo+ICsgKiBiYXNlIGFkZHJlc3MgaW4gdGhlIC5kYXRh IHNlY3Rpb24uIE9uY2Ugd2UgaGF2ZSBwb3NzaWJsZSB2YWx1ZXMsIHdlIGxvb2sgZm9yCj4gKyAq IERCR0tEX0dFVF9WRVJTSU9ONjQgYmxvY2sgYnkgdXNpbmcgZm9sbG93aW5nIGhldXJpc3RpY3Mg b24gdGhlIGFkZHJlc3Mgd2hpY2gKPiArICogaGFzIHRoZSBrZXJuZWwgYmFzZToKPiArICoKPiAr ICogIC0gYXQgYWRkcmVzcyBbLTB4MTBdLCBpdCBzaG91bGQgaGF2ZSAweGYgYXMgdGhlIE1ham9y VmVyc2lvbgo+ICsgKiAgLSBhdCBhZGRyZXNzIFsrMHg4XSwgaXQgc2hvdWxkIGhhdmUgYSB2YWxp ZCBrZXJuZWwgbWVtb3J5IGFkZHJlc3MgcG9pbnRpbmcKPiArICogIGluIC5kYXRhCj4gKyAqICAt IGF0IGFkZHJlc3MgWysweDEwXSwgaXQgc2hvdWxkIGhhdmUgYSB2YWxpZCBrZXJuZWwgbWVtb3J5 IGFkZHJlc3MgcG9pbnRpbmcKPiArICogIGluIC5kYXRhCj4gKyAqCj4gKyAqIEBwYXJhbSBzIFBv aW50ZXIgdG8gdGhlIGtkZCBzdGF0ZQo+ICsgKi8KPiArc3RhdGljIHZvaWQgZ2V0X29zX2luZm9f NjQoa2RkX3N0YXRlICpzKQo+ICt7Cj4gKyAgICBrZGRfY3RybCBjdHJsOwo+ICsgICAgaW50IHJl dDsKPiArICAgIHVpbnQ2NF90IGJ1ZjsKPiArICAgIHVpbnQ2NF90IGlkdDBfYWRkcjsKPiArICAg IHVpbnQ2NF90IGJhc2U7Cj4gKyAgICB1aW50NjRfdCBjYWRkcjsKPiArICAgIHVpbnQ2NF90IGRh dGFfYmFzZTsKPiArICAgIHVpbnQzMl90IGRhdGFfc2l6ZTsKPiArICAgIHVpbnQ2NF90IG1vZHB0 cjsKPiArICAgIHVpbnQ2NF90IGtkZGw7Cj4gKyAgICB1aW50MTZfdCBtaW5vcjsKPiArICAgIHVp bnQ4X3QgZGJna2RfZ2V0X3ZlcnNpb242NFsweDI4XTsKCkRCR0tEX0dFVF9WRVJTSU9ONjRfU1os IHBsZWFzZQoKPiArCj4gKyAgICAvKiBUT0RPOiByaWdodCBub3csIHdlIGFyZSBmb3JjaW5nIHRo aXMgdG8gMSAoYXMgd2Ugb25seSBzdXBwb3J0IDY0IGJpdAo+ICsgICAgICogc3lzdGVtLCBob3dl dmVyLCB3ZSBzaG91bGQgdXNlIGtkZF9zdGF0ZSBvciBodm0gY2FsbHMgdG8gY2hlY2sgaWYgd2Ug YXJlCj4gKyAgICAgKiBpbiA2NC1iaXQKPiArICAgICAqLwo+ICsgICAgcy0+b3MudzY0ID0gMTsK CkF0IHRoZSBwb2ludCB3aGVyZSB5b3UgY2FsbCB0aGlzLCBzLT5vcyA9PSB1bmtub3duX29zLCBz byB5b3UgYXJlCm1vZGlmeWluZyB1bmtub3duX29zIGhlcmUhCgpQbGVhc2UgZGVjbGFyZSBhbm90 aGVyIHN0YXRpYyBrZGRfb3MgdG8gZmlsbCBpbiBoZXJlLiAgVGhlbiB5b3UgY2FuCnNldCB3NjQ9 MSBpbiB0aGF0IHdpdGhvdXQgbmVlZGluZyBhbnkgVE9ET3Mgb3IgY2hlY2tzIGhlcmUuCgpJIHdv dWxkIGFsc28gcHJlZmVyIGlmIHRoaXMgZnVuY3Rpb24ganVzdCByZXR1cm5lZCAwLy0xIC0gdGhl bgp5b3UgZG9uJ3QgbmVlZCBhICdnb3RvIGZhaWwnIHBhdGguICBZb3UgY2FuIGp1c3QgcmV0dXJu IC0xCmV2ZXJ5d2hlcmUsIGFuZCB5b3UgY2FuIGNhbGwgaXQgZnJvbSB0aGUgYm90dG9tIG9mICdm aW5kX29zKCknLCBhczoKCiBpZiAoZ2V0X29zX2luZm9fNjQocykgIT0gMCkKICAgICBzLT5vcyA9 IHVua25vd25fb3M7Cgo+ICsgICAgLy8gaWYgd2UgYXJlIG5vIGluIDY0LWJpdCBtb2RlLCBmYWls Cj4gKyAgICBpZiAoIXMtPm9zLnc2NCkgewo+ICsgICAgICAgIGdvdG8gZmFpbDsKPiArICAgIH0K PiArCj4gKyAgICAvLyBnZXQgY29udHJvbCByZWdpc3RlcnMgZm9yIG91ciBvcwo+ICsgICAgcmV0 ID0ga2RkX2dldF9jdHJsKHMtPmd1ZXN0LCBzLT5jcHVpZCwgJmN0cmwsIHMtPm9zLnc2NCk7Cj4g KyAgICBpZiAocmV0KSB7Cj4gKyAgICAgICAgZ290byBmYWlsOwo+ICsgICAgfQo+ICsKPiArICAg IC8vIHJlYWQgdGhlIGRpdi1ieS16ZXJvIGhhbmRsZXIgZnVuY3Rpb24gYWRkcmVzcwo+ICsgICAg a2RkX3JlYWRfdmlydHVhbChzLCBzLT5jcHVpZCwgY3RybC5jNjQuaWR0X2Jhc2UgKyA4LCA4LCAm YnVmKTsKPiArICAgIGlkdDBfYWRkciA9ICgodWludDY0X3QpYnVmIDw8IDMyKSAmIDB4ZmZmZmZm ZmYwMDAwMDAwMDsKPiArCj4gKyAgICBrZGRfcmVhZF92aXJ0dWFsKHMsIHMtPmNwdWlkLCBjdHJs LmM2NC5pZHRfYmFzZSwgOCwgJmJ1Zik7Cj4gKyAgICBpZHQwX2FkZHIgfD0gKChidWYgPj4gMzIp ICYgMHhmZmZmMDAwMCk7Cj4gKyAgICBpZHQwX2FkZHIgfD0gKGJ1ZiAmIDB4ZmZmZik7Cj4gKwo+ ICsgICAgS0REX0xPRyhzLCAiaWR0MCBhZGRyOiAlcFxuIiwgKHZvaWQgKilpZHQwX2FkZHIpOwo+ ICsgICAgcHJpbnRmKCJpZHQwIGFkZHI6ICVwXG4iLCAodm9pZCAqKWlkdDBfYWRkcik7CgpQbGVh c2UgZHJvcCBhbGwgcHJpbnRmKCkgY2FsbHMgYW5kIGp1c3QgdXNlIEtERF9MT0coKSAvIEtERF9E RUJVRwoKPiArICAgIC8vIGdldCB0aGUgcGFnZSBzdGFydCBhbmQgbG9vayBmb3IgIk1aIiBmaWxl IGhlYWRlcgo+ICsKPiArICAgIGJhc2UgPSBpZHQwX2FkZHIgJiB+KFBBR0VfU0laRSAtIDEpOwo+ ICsgICAgLy8gcHJpbnRmKCIlcFxuIiwgKHZvaWQgKiliYXNlKTsKClBsZWFzZSByZW1vdmUgYWxs IGNvbW1lbnRlZC1vdXQgY29kZS4KCj4gKyAgICB3aGlsZSAoMSkgewoKUGxlYXNlIHNldCBzb21l IHJlYXNvbmFibGUgbGltaXQgdG8gaG93IGZhciB0aGlzIHdpbGwgc2VhcmNoLgpQcmVzdW1hYmx5 IHdlIGV4cGVjdCB0byBmaW5kIHRoZSBoZWFkZXIgd2l0aGluIDwgMSBHQiA/Cgo+ICsgICAgICAg IHVpbnQxNl90IHZhbDsKPiArICAgICAgICBpZiAoa2RkX3JlYWRfdmlydHVhbChzLCBzLT5jcHVp ZCwgYmFzZSwgMiwgJnZhbCkgIT0gMikgewo+ICsgICAgICAgICAgICAvLyBqdXN0IG1vdmUgZ29p bmcgYmFjaz8/IHRoaXMgaXMgYmFkIHRob3VnaAo+ICsgICAgICAgICAgICBwcmludGYoInJhbiBp bnRvIHVubWFwcGVkIHJlZ2lvbiB3aXRob3V0IGZpbmRpbmcgUEUgaGVhZGVyXG4iKTsKCktERF9E RUJVRygpIGFuZCByZXR1cm4gZmFsc2UuCgo+ICsgICAgICAgIH0KPiArCj4gKyAgICAgICAgaWYg KHZhbCA9PSAweDVhNGQpIHsgLy8gTVoKPiArICAgICAgICAgICAgLy8gcHJpbnRmKCJtYXliZSBz dWNjZXNzXG4iKTsKPiArICAgICAgICAgICAgYnJlYWs7Cj4gKyAgICAgICAgfQo+ICsKPiArICAg ICAgICBiYXNlIC09IFBBR0VfU0laRTsKPiArICAgIH0KPiArCj4gKyAgICBLRERfTE9HKHMsICJi YXNlOiAlcFxuIiwgKHZvaWQgKiliYXNlKTsKPiArCj4gKyAgICAvLyBmb3VuZCB0aGUgZGF0YSBz ZWN0aW9uIHN0YXJ0Cj4gKyAgICBpZiAoZ2V0X3BlNjRfc2VjdGlvbnMocywgYmFzZSwgIi5kYXRh IiwgJmRhdGFfYmFzZSwgJmRhdGFfc2l6ZSkpIHsKPiArICAgICAgICBnb3RvIGZhaWw7Cj4gKyAg ICB9Cj4gKwo+ICsgICAgLy8gbG9vayBmb3IgYWRkcmVzc2VzIHdoaWNoIGhhcyBrZXJuZWwgYmFz ZSB3cml0dGVuIGludG8gaXQKPiArICAgIGNhZGRyID0gZGF0YV9iYXNlOwo+ICsKPiArICAgIG1v ZHB0ciA9IDA7Cj4gKyAgICBrZGRsID0gMDsKPiArICAgIG1pbm9yID0gMDsKPiArCj4gKyAgICB3 aGlsZSAoY2FkZHIgPCBkYXRhX2Jhc2UgKyBkYXRhX3NpemUpIHsKClRoaXMgbmVlZHMgYSBsaW1p dDogZGF0YV9zaXplIGNhbWUgZnJvbSBndWVzdCBtZW1vcnkgYW5kIHdlIGRvbid0IHdhbnQKdG8g ZG8gNTAwIG1pbGxpb24gaXRlcmF0aW9ucyBoZXJlLgoKPiArICAgICAgICBpZiAoa2RkX3JlYWRf dmlydHVhbChzLCBzLT5jcHVpZCwgY2FkZHIsIFNJWkVfUFRSNjQsICZidWYpICE9Cj4gKyAgICAg ICAgICAgICAgICBTSVpFX1BUUjY0KSB7Cj4gKyAgICAgICAgICAgIC8vIHJlYWNoZWQgZW5kIGFu ZCBmb3VuZCBub3RoaW5nCj4gKyAgICAgICAgICAgIGdvdG8gZmFpbDsKPiArICAgICAgICB9Cj4g Kwo+ICsgICAgICAgIC8vIGlmIHdlIGZvdW5kIGJhc2UgaW4gdGhlIG1lbW9yeSBhZGRyZXNzZXMK PiArICAgICAgICBpZiAoYnVmID09IGJhc2UpIHsKPiArICAgICAgICAgICAgLy8gcmVhZCB0aGUg REJHS0RfR0VUX1ZFUlNJT042NCBzdHJ1Y3QKPiArICAgICAgICAgICAgaWYgKGtkZF9yZWFkX3Zp cnR1YWwocywgcy0+Y3B1aWQsIGNhZGRyIC0gREJHS0RfS0VSTl9CQVNFX09GRiwKPiArICAgICAg ICAgICAgICAgICAgICAgICAgREJHS0RfR0VUX1ZFUlNJT042NF9TWiwgZGJna2RfZ2V0X3ZlcnNp b242NCkgPT0KPiArICAgICAgICAgICAgICAgICAgICBEQkdLRF9HRVRfVkVSU0lPTjY0X1NaKSB7 Cj4gKyAgICAgICAgICAgICAgICAvLyBjaGVjayBpZiBtYWpvciB2ZXJzaW9uIGlzIDB4Zgo+ICsg ICAgICAgICAgICAgICAgaWYgKGRiZ2tkX2dldF92ZXJzaW9uNjRbMF0gPT0gJ1x4MGYnKSB7Cj4g Kwo+ICsgICAgICAgICAgICAgICAgICAgIC8vIHJlYWQgbWlub3IgdmVyc2lvbiwgUHNMb2FkZWRN b2R1bGVMaXN0IHBvaW50ZXIgYW5kCj4gKyAgICAgICAgICAgICAgICAgICAgLy8gRGVidWdnZXJE YXRhTGlzdAo+ICsgICAgICAgICAgICAgICAgICAgIG1vZHB0ciA9Cj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICoodWludDY0X3QgKikoZGJna2RfZ2V0X3ZlcnNpb242NCArIERCR0tEX01PRF9M SVNUX09GRik7Cj4gKyAgICAgICAgICAgICAgICAgICAga2RkbCA9ICoodWludDY0X3QgKikoZGJn a2RfZ2V0X3ZlcnNpb242NCArIERCR0tEX0tERExfT0ZGKTsKPiArICAgICAgICAgICAgICAgICAg ICBtaW5vciA9Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICoodWludDE2X3QgKikoZGJna2Rf Z2V0X3ZlcnNpb242NCArIERCR0tEX01JTk9SX09GRik7CgpJIHRoaW5rIHRoaXMgY29kZSB3b3Vs ZCBiZSBtdWNoIGNsZWFuZXIgaWYgeW91IGRlZmluZWQgYSBzdHJ1Y3Qgd2l0aCB0aGUKY29ycmVj dCBmaWVsZHMgaW5zdGVhZCBvZiB0cnlpbmcgdG8gcGFyc2UgdGhlbSBieSBoYW5kIG91dCBvZiBh IGJ1ZmZlci4KCj4gKyAgICAgICAgICAgICAgICAgICAgLy8gZG8gaGV1cmlzdGljIGNoZWNrCj4g KyAgICAgICAgICAgICAgICAgICAgaWYgKG1vZHB0ciAmJiBrZGRsICYmIG1vZHB0ciAhPSBrZGRs ICYmIGtkZGwgIT0gYmFzZSAmJgo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZSAh PSBtb2RwdHIgJiYgbW9kcHRyID49IGRhdGFfYmFzZSAmJgo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbW9kcHRyIDwgKGRhdGFfYmFzZSArIGRhdGFfc2l6ZSkgJiYKPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGtkZGwgPj0gZGF0YV9iYXNlICYmCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICBrZGRsIDwgKGRhdGFfYmFzZSArIGRhdGFfc2l6ZSkpIHsKPiArICAgICAg ICAgICAgICAgICAgICAgICAgLy8gbXlfbWVtZHVtcChzLCBjYWRkciAtIDB4MTAsIDB4MzApOwo+ ICsgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKPiArICAgICAgICAgICAgICAgICAgICB9 Cj4gKwo+ICsgICAgICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICB9Cj4gKwo+ICsgICAgICAg IH0KPiArCj4gKyAgICAgICAgY2FkZHIgKz0gc2l6ZW9mKHZvaWQgKik7Cj4gKyAgICB9CgpXZSBu ZWVkIGEgdGVzdCBoZXJlIGZvciB3aGV0aGVyIHdlIHJhbiBvZmYgdGhlIGVuZCBvZiB0aGUgd2hp bGUoKQpsb29wIHdpdGhvdXQgZmluZGluZyB0aGUgbWFnaWMgc3RydWN0LgoKPiArICAgIC8vIFRP RE86IHVzZSBLRERfTE9HPwo+ICsgICAgcHJpbnRmKCJiYXNlOiAlcFxuIiwgKHZvaWQgKiliYXNl KTsKPiArICAgIHByaW50ZigibW9kdWxlcyBsaXN0OiAlcFxuIiwgKHZvaWQgKiltb2RwdHIpOwo+ ICsgICAgcHJpbnRmKCJrZGRsOiAlcFxuIiwgKHZvaWQgKilrZGRsKTsKPiArICAgIHByaW50Zigi bWlub3IgdmVyc2lvbjogMHglaHhcbiIsIG1pbm9yKTsKPiArCj4gKyAgICBzLT5vcy5iYXNlID0g YmFzZTsKPiArICAgIHMtPm9zLm1vZHVsZXMgPSBtb2RwdHIgLSBiYXNlOwo+ICsgICAgcy0+b3Mu a2RkbCA9IGtkZGwgLSBiYXNlOwo+ICsgICAgcy0+b3MuYnVpbGQgPSAodWludDMyX3QpIG1pbm9y Owo+ICsgICAgcmV0dXJuOwo+ICsKPiArZmFpbDoKPiArICAgIC8vIFhYWDogVE9ETzogaGFuZGxl IGZhaWx1cmUgY2FzZQo+ICsgICAgcy0+b3MgPSB1bmtub3duX29zOwo+ICsgICAgcmV0dXJuOwo+ ICt9Cj4gKwo+ICAKPiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCj4gICAqICBIb3cgdG8gc2VuZCBw YWNrZXRzIGFuZCBhY2tzLgo+IEBAIC01MzQsNiArOTE1LDEyIEBAIHN0YXRpYyB2b2lkIGtkZF9o YW5kbGVfaGFuZHNoYWtlKGtkZF9zdGF0ZSAqcykKPiAgewo+ICAgICAgLyogRmlndXJlIG91dCB3 aGF0IHdlJ3JlIGxvb2tpbmcgYXQgKi8KPiAgICAgIGZpbmRfb3Mocyk7Cj4gKwo+ICsgICAgLyog aWYgdW5rbm93biBvcywgdXNlIHRoZSBpZHQgbWV0aG9kICovCj4gKyAgICBpZiAoIXMtPm9zLmJh c2UpIHsKPiArICAgICAgICBnZXRfb3NfaW5mb182NChzKTsKPiArICAgIH0KCkFzIEkgc2FpZCBh Ym92ZSwgcGxlYXNlIGNhbGwgZ2V0X29zX2luZm9fNjQoKSBmcm9tIGZpbmRfb3MoKSBpbnN0ZWFk Cm9mIGNhbGxpbmcgaXQgZnJvbSBoZXJlLgoKPiAgICAgIGtkZF9zZW5kX3N0cmluZyhzLCAiW2tk ZDogJXMgQDB4JSJQUkl4NjQiXVxyXG4iLCBzLT5vcy5uYW1lLCBzLT5vcy5iYXNlKTsKPiAgCj4g ICAgICAvKiBSZXNwb25kIHdpdGggc29tZSBkZXRhaWxzIGFib3V0IHRoZSBkZWJ1Z2dlciBzdHVi IHdlIHNpbXVsYXRlICovCj4gQEAgLTU1NSw3ICs5NDIsNyBAQCBzdGF0aWMgdm9pZCBrZGRfaGFu ZGxlX2hhbmRzaGFrZShrZGRfc3RhdGUgKnMpCj4gICAgICBzLT50eHAuY21kLnNoYWtlLnUzWzJd ICAgICA9IDB4NTU7Cj4gICAgICBzLT50eHAuY21kLnNoYWtlLmtlcm5fYWRkciA9IHMtPm9zLmJh c2U7Cj4gICAgICBzLT50eHAuY21kLnNoYWtlLm1vZHNfYWRkciA9IHMtPm9zLmJhc2UgKyBzLT5v cy5tb2R1bGVzOwo+IC0gICAgcy0+dHhwLmNtZC5zaGFrZS5kYXRhX2FkZHIgPSAwOyAvKiBEZWJ1 Z2dlciBkYXRhIHByb2JhYmx5IGRvZXNuJ3QgZXhpc3QgKi8KPiArICAgIHMtPnR4cC5jbWQuc2hh a2UuZGF0YV9hZGRyID0gcy0+b3MuYmFzZSArIHMtPm9zLmtkZGw7IC8vIDA7IC8qIERlYnVnZ2Vy IGRhdGEgcHJvYmFibHkgZG9lc24ndCBleGlzdCAqLwoKUGxlYXNlIG9ubHkgc2V0IHRoaXMgaWYg cy0+b3Mua2RkbCBpcyAhPSAwLgoKQXMgSSBzYWlkLCBvdmVyYWxsIHRoaXMgbG9va3MgbGlrZSBh IHJlYWxseSB1c2VmdWwgaW1wcm92ZW1lbnQgYW5kIEkKbG9vayBmb3J3YXJkIHRvIHNlaW5nIHlv dXIgcmV2aXNlZCBwYXRjaCEKClRoYW5rcywKClRpbS4KCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVs QGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1h bi9saXN0aW5mby94ZW4tZGV2ZWw=