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=-8.1 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=ham 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 8A0C2C3A59D for ; Mon, 19 Aug 2019 10:28:07 +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 4A2FF20844 for ; Mon, 19 Aug 2019 10:28:07 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=citrix.com header.i=@citrix.com header.b="iRBdXxH1" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 4A2FF20844 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=citrix.com 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 1hzet6-0004Rv-Hv; Mon, 19 Aug 2019 10:27:44 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1hzet5-0004Rq-IN for xen-devel@lists.xenproject.org; Mon, 19 Aug 2019 10:27:43 +0000 X-Inumbo-ID: f8e73242-c26b-11e9-8beb-12813bfff9fa Received: from esa6.hc3370-68.iphmx.com (unknown [216.71.155.175]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id f8e73242-c26b-11e9-8beb-12813bfff9fa; Mon, 19 Aug 2019 10:27:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1566210460; h=subject:to:cc:references:from:message-id:date: mime-version:in-reply-to:content-transfer-encoding; bh=wobOP+bJJPTLLug2St9ckpDT0NgPpEkbyxr6bCj0eSA=; b=iRBdXxH1XMFsqOn/P0uibPGiNQlXUYUfi+5j2gmFTtYeqNGSLUEy1nGt hycLNu1aefXMf7FxnoFhNdP1yp/iTt65p9kklmUk629F/NP6CRIBhm/pD jiPE8T0fgDgQ72fbMrWwF8agC/he3ZOVRvH6TKLmd16XToGMbrsr+9b55 M=; Authentication-Results: esa6.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none; spf=None smtp.pra=sergey.dyasli@citrix.com; spf=Pass smtp.mailfrom=sergey.dyasli@citrix.com; spf=None smtp.helo=postmaster@mail.citrix.com Received-SPF: None (esa6.hc3370-68.iphmx.com: no sender authenticity information available from domain of sergey.dyasli@citrix.com) identity=pra; client-ip=162.221.158.21; receiver=esa6.hc3370-68.iphmx.com; envelope-from="sergey.dyasli@citrix.com"; x-sender="sergey.dyasli@citrix.com"; x-conformance=sidf_compatible Received-SPF: Pass (esa6.hc3370-68.iphmx.com: domain of sergey.dyasli@citrix.com designates 162.221.158.21 as permitted sender) identity=mailfrom; client-ip=162.221.158.21; receiver=esa6.hc3370-68.iphmx.com; envelope-from="sergey.dyasli@citrix.com"; x-sender="sergey.dyasli@citrix.com"; x-conformance=sidf_compatible; x-record-type="v=spf1"; x-record-text="v=spf1 ip4:209.167.231.154 ip4:178.63.86.133 ip4:195.66.111.40/30 ip4:85.115.9.32/28 ip4:199.102.83.4 ip4:192.28.146.160 ip4:192.28.146.107 ip4:216.52.6.88 ip4:216.52.6.188 ip4:162.221.158.21 ip4:162.221.156.83 ~all" Received-SPF: None (esa6.hc3370-68.iphmx.com: no sender authenticity information available from domain of postmaster@mail.citrix.com) identity=helo; client-ip=162.221.158.21; receiver=esa6.hc3370-68.iphmx.com; envelope-from="sergey.dyasli@citrix.com"; x-sender="postmaster@mail.citrix.com"; x-conformance=sidf_compatible IronPort-SDR: qSIKGOXnZmwbKbALyKciegCVhSBddOBAiGkIU46sGiDaMUUx6uAY3+g1eno8On8o+sI51PhQod GZhpSGn0xsjQyZv25A297iBiyFi98f6wvOFQ7sqKikaChtOoEY88HhDK2LVusEU7Nw2VwlJCTX LY5fzcvpvjqGD4L0iz0tNBKK5QwbPoc7f98CTmRasbFEXA273j8jZV8Ltx9hHarDTt9+ZRyjSw aasOgLCh+tgqYmmL1RmBcCcFvd/JcRSfU2z0YbluTT759L8g5D/R9TSgv1iA2ekbhKdmZ83xSv x30= X-SBRS: 2.7 X-MesageID: 4621339 X-Ironport-Server: esa6.hc3370-68.iphmx.com X-Remote-IP: 162.221.158.21 X-Policy: $RELAYED X-IronPort-AV: E=Sophos;i="5.64,403,1559534400"; d="scan'208";a="4621339" To: Chao Gao , References: <1566177928-19114-1-git-send-email-chao.gao@intel.com> <1566177928-19114-14-git-send-email-chao.gao@intel.com> From: Sergey Dyasli Openpgp: preference=signencrypt Autocrypt: addr=sergey.dyasli@citrix.com; keydata= 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 Message-ID: Date: Mon, 19 Aug 2019 11:27:36 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.8.0 MIME-Version: 1.0 In-Reply-To: <1566177928-19114-14-git-send-email-chao.gao@intel.com> Content-Language: en-US Subject: Re: [Xen-devel] [PATCH v9 13/15] x86/microcode: Synchronize late microcode loading 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: "sergey.dyasli@citrix.com >> Sergey Dyasli" , Kevin Tian , Ashok Raj , Wei Liu , Andrew Cooper , Jan Beulich , Jun Nakajima , Thomas Gleixner , Borislav Petkov , =?UTF-8?Q?Roger_Pau_Monn=c3=a9?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" T24gMTkvMDgvMjAxOSAwMjoyNSwgQ2hhbyBHYW8gd3JvdGU6Cj4gVGhpcyBwYXRjaCBwb3J0cyBt aWNyb2NvZGUgaW1wcm92ZW1lbnQgcGF0Y2hlcyBmcm9tIGxpbnV4IGtlcm5lbC4KPiAKPiBCZWZv cmUgeW91IHJlYWQgYW55IGZ1cnRoZXI6IHRoZSBlYXJseSBsb2FkaW5nIG1ldGhvZCBpcyBzdGls bCB0aGUKPiBwcmVmZXJyZWQgb25lIGFuZCB5b3Ugc2hvdWxkIGFsd2F5cyBkbyB0aGF0LiBUaGUg Zm9sbG93aW5nIHBhdGNoIGlzCj4gaW1wcm92aW5nIHRoZSBsYXRlIGxvYWRpbmcgbWVjaGFuaXNt IGZvciBsb25nIHJ1bm5pbmcgam9icyBhbmQgY2xvdWQgdXNlCj4gY2FzZXMuCj4gCj4gR2F0aGVy IGFsbCBjb3JlcyBhbmQgc2VyaWFsaXplIHRoZSBtaWNyb2NvZGUgdXBkYXRlIG9uIHRoZW0gYnkg ZG9pbmcgaXQKPiBvbmUtYnktb25lIHRvIG1ha2UgdGhlIGxhdGUgdXBkYXRlIHByb2Nlc3MgYXMg cmVsaWFibGUgYXMgcG9zc2libGUgYW5kCj4gYXZvaWQgcG90ZW50aWFsIGlzc3VlcyBjYXVzZWQg YnkgdGhlIG1pY3JvY29kZSB1cGRhdGUuCj4gCj4gU2lnbmVkLW9mZi1ieTogQ2hhbyBHYW8gPGNo YW8uZ2FvQGludGVsLmNvbT4KPiBUZXN0ZWQtYnk6IENoYW8gR2FvIDxjaGFvLmdhb0BpbnRlbC5j b20+Cj4gW2xpbnV4IGNvbW1pdDogYTUzMjFhZWM2NDEyYjIwYjVhZDE1ZGIyZDZiOTE2YzA1MzQ5 ZGJmZl0KPiBbbGludXggY29tbWl0OiBiYjhjMTNkNjFhNjI5Mjc2YTE2MmMxZDJiMWEyMGE4MTVj YmNmYmI3XQo+IENjOiBLZXZpbiBUaWFuIDxrZXZpbi50aWFuQGludGVsLmNvbT4KPiBDYzogSnVu IE5ha2FqaW1hIDxqdW4ubmFrYWppbWFAaW50ZWwuY29tPgo+IENjOiBBc2hvayBSYWogPGFzaG9r LnJhakBpbnRlbC5jb20+Cj4gQ2M6IEJvcmlzbGF2IFBldGtvdiA8YnBAc3VzZS5kZT4KPiBDYzog VGhvbWFzIEdsZWl4bmVyIDx0Z2x4QGxpbnV0cm9uaXguZGU+Cj4gQ2M6IEFuZHJldyBDb29wZXIg PGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+Cj4gQ2M6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBz dXNlLmNvbT4KPiAtLS0KPiBDaGFuZ2VzIGluIHY5Ogo+ICAtIGxvZyBfX2J1aWxkaW5fcmV0dXJu X2FkZHJlc3MoMCkgd2hlbiB0aW1lb3V0Cj4gIC0gZGl2aWRlIENQVXMgaW50byB0aHJlZSBsb2dp Y2FsIHNldHMgYW5kIHRoZXkgd2lsbCBjYWxsIGRpZmZlcmVudAo+ICBmdW5jdGlvbnMgZHVyaW5n IHVjb2RlIGxvYWRpbmcuIFRoZSAnY29udHJvbCB0aHJlYWQnIGlzIGNob3NlbiB0bwo+ICBjb29y ZGluYXRlIHVjb2RlIGxvYWRpbmcgb24gYWxsIENQVXMuIFNpbmNlIG9ubHkgY29udHJvbCB0aHJl YWQgd291bGQKPiAgc2V0ICdsb2FkaW5nX3N0YXRlJywgd2UgY2FuIGdldCByaWQgb2YgJ2NtcHhj aGcnIHN0dWZmIGluIHY4Lgo+ICAtIHMvcmVwX25vcC9jcHVfcmVsYXgKPiAgLSBlYWNoIHRocmVh ZCB1cGRhdGVzIGl0cyByZXZpc2lvbiBudW1iZXIgaXRzZWxmCj4gIC0gYWRkIFhFTkxPR19FUlIg cHJlZml4IGZvciBlYWNoIGxpbmUgb2YgbXVsdGktbGluZSBsb2cgbWVzc2FnZXMKPiAKPiBDaGFu Z2VzIGluIHY4Ogo+ICAtIHRvIHN1cHBvcnQgYmxvY2tpbmcgI05NSSBoYW5kbGluZyBkdXJpbmcg bG9hZGluZyB1Y29kZQo+ICAgICogaW50cm9kdWNlIGEgZmxhZywgJ2xvYWRpbmdfc3RhdGUnLCB0 byBtYXJrIHRoZSBzdGFydCBvciBlbmQgb2YKPiAgICAgIHVjb2RlIGxvYWRpbmcuCj4gICAgKiB1 c2UgYSBiaXRtYXAgZm9yIGNwdSBjYWxsaW4gc2luY2UgaWYgY3B1IG1heSBzdGF5IGluICNOTUkg aGFuZGxpbmcsCj4gICAgICB0aGVyZSBhcmUgdHdvIHBsYWNlcyBmb3IgYSBjcHUgdG8gY2FsbCBp bi4gYml0bWFwIHdvbid0IGJlIGNvdW50ZWQKPiAgICAgIHR3aWNlLgo+ICAgICogZG9uJ3Qgd2Fp dCBmb3IgYWxsIENQVXMgY2FsbG91dCwganVzdCB3YWl0IGZvciBDUFVzIHRoYXQgcGVyZm9ybSB0 aGUKPiAgICAgIHVwZGF0ZS4gV2UgaGF2ZSB0byBkbyB0aGlzIGJlY2F1c2Ugc29tZSB0aHJlYWRz IG1heSBiZSBzdHVjayBpbiBOTUkKPiAgICAgIGhhbmRsaW5nICh3aGVyZSBjYW5ub3QgcmVhY2gg dGhlIHJlbmRlenZvdXMpLgo+ICAtIGVtaXQgYSB3YXJuaW5nIGlmIHRoZSBzeXN0ZW0gc3RheXMg aW4gc3RvcF9tYWNoaW5lIGNvbnRleHQgZm9yIG1vcmUKPiAgdGhhbiAxcwo+ICAtIGNvbW1lbnQg dGhhdCByZHRzYyBpcyBmaW5lIHdoaWxlIGxvYWRpbmcgYW4gdXBkYXRlCj4gIC0gdXNlIGNtcHhj aGcoKSB0byBhdm9pZCBwYW5pYyBiZWluZyBjYWxsZWQgb24gbXVsdGlwbGUgQ1BVcwo+ICAtIFBy b3BhZ2F0ZSByZXZpc2lvbiBudW1iZXIgdG8gb3RoZXIgdGhyZWFkcwo+ICAtIHJlZmluZSBjb21t ZW50cyBhbmQgcHJvbXB0IG1lc3NhZ2VzCj4gCj4gQ2hhbmdlcyBpbiB2NzoKPiAgLSBDaGVjayB3 aGV0aGVyICd0aW1lb3V0JyBpcyAwIHJhdGhlciB0aGFuICI8PTAiIHNpbmNlIGl0IGlzIHVuc2ln bmVkIGludC4KPiAgLSByZXdvcmQgdGhlIGNvbW1lbnQgYWJvdmUgbWljcm9jb2RlX3VwZGF0ZV9j cHUoKSB0byBjbGVhcmx5IHN0YXRlIHRoYXQKPiAgb25lIHRocmVhZCBwZXIgY29yZSBzaG91bGQg ZG8gdGhlIHVwZGF0ZS4KPiAtLS0KPiAgeGVuL2FyY2gveDg2L21pY3JvY29kZS5jIHwgMjg5ICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tCj4gIDEgZmlsZSBj aGFuZ2VkLCAyNjcgaW5zZXJ0aW9ucygrKSwgMjIgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdp dCBhL3hlbi9hcmNoL3g4Ni9taWNyb2NvZGUuYyBiL3hlbi9hcmNoL3g4Ni9taWNyb2NvZGUuYwo+ IGluZGV4IGJkZDljOWYuLjkxZjllODEgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gveDg2L21pY3Jv Y29kZS5jCj4gKysrIGIveGVuL2FyY2gveDg2L21pY3JvY29kZS5jCj4gQEAgLTMwLDE4ICszMCw1 MiBAQAo+ICAjaW5jbHVkZSA8eGVuL3NtcC5oPgo+ICAjaW5jbHVkZSA8eGVuL3NvZnRpcnEuaD4K PiAgI2luY2x1ZGUgPHhlbi9zcGlubG9jay5oPgo+ICsjaW5jbHVkZSA8eGVuL3N0b3BfbWFjaGlu ZS5oPgo+ICAjaW5jbHVkZSA8eGVuL3Rhc2tsZXQuaD4KPiAgI2luY2x1ZGUgPHhlbi9ndWVzdF9h Y2Nlc3MuaD4KPiAgI2luY2x1ZGUgPHhlbi9lYXJseWNwaW8uaD4KPiArI2luY2x1ZGUgPHhlbi93 YXRjaGRvZy5oPgo+ICAKPiArI2luY2x1ZGUgPGFzbS9kZWxheS5oPgo+ICAjaW5jbHVkZSA8YXNt L21zci5oPgo+ICAjaW5jbHVkZSA8YXNtL3Byb2Nlc3Nvci5oPgo+ICAjaW5jbHVkZSA8YXNtL3Nl dHVwLmg+Cj4gICNpbmNsdWRlIDxhc20vbWljcm9jb2RlLmg+Cj4gIAo+ICsvKgo+ICsgKiBCZWZv cmUgcGVyZm9ybWluZyBhIGxhdGUgbWljcm9jb2RlIHVwZGF0ZSBvbiBhbnkgdGhyZWFkLCB3ZQo+ ICsgKiByZW5kZXp2b3VzIGFsbCBjcHVzIGluIHN0b3BfbWFjaGluZSBjb250ZXh0LiBUaGUgdGlt ZW91dCBmb3IKPiArICogd2FpdGluZyBmb3IgY3B1IHJlbmRlenZvdXMgaXMgMzBtcy4gSXQgaXMg dGhlIHRpbWVvdXQgdXNlZCBieQo+ICsgKiBsaXZlIHBhdGNoaW5nCj4gKyAqLwo+ICsjZGVmaW5l IE1JQ1JPQ09ERV9DQUxMSU5fVElNRU9VVF9VUyAzMDAwMAo+ICsKPiArLyoKPiArICogVGltZW91 dCBmb3IgZWFjaCB0aHJlYWQgdG8gY29tcGxldGUgdXBkYXRlIGlzIHNldCB0byAxcy4gSXQgaXMg YQo+ICsgKiBjb25zZXJ2YXRpdmUgY2hvaWNlIGNvbnNpZGVyaW5nIGFsbCBwb3NzaWJsZSBpbnRl cmZlcmVuY2UuCj4gKyAqLwo+ICsjZGVmaW5lIE1JQ1JPQ09ERV9VUERBVEVfVElNRU9VVF9VUyAx MDAwMDAwCj4gKwo+ICBzdGF0aWMgbW9kdWxlX3QgX19pbml0ZGF0YSB1Y29kZV9tb2Q7Cj4gIHN0 YXRpYyBzaWduZWQgaW50IF9faW5pdGRhdGEgdWNvZGVfbW9kX2lkeDsKPiAgc3RhdGljIGJvb2xf dCBfX2luaXRkYXRhIHVjb2RlX21vZF9mb3JjZWQ7Cj4gK3N0YXRpYyB1bnNpZ25lZCBpbnQgbnJf Y29yZXM7Cj4gKwo+ICsvKgo+ICsgKiBUaGVzZSBzdGF0ZXMgaGVscCB0byBjb29yZGluYXRlIENQ VXMgZHVyaW5nIGxvYWRpbmcgYW4gdXBkYXRlLgo+ICsgKgo+ICsgKiBUaGUgc2VtYW50aWNzIG9m IGVhY2ggc3RhdGUgaXMgYXMgZm9sbG93Ogo+ICsgKiAgLSBMT0FESU5HX1BSRVBBUkU6IGluaXRp YWwgc3RhdGUgb2YgJ2xvYWRpbmdfc3RhdGUnLgo+ICsgKiAgLSBMT0FESU5HX0NBTExJTjogQ1BV cyBhcmUgYWxsb3dlZCB0byBjYWxsaW4uCj4gKyAqICAtIExPQURJTkdfRU5URVI6IGFsbCBDUFVz IGhhdmUgY2FsbGVkIGluLiBJbml0aWF0ZSB1Y29kZSBsb2FkaW5nLgo+ICsgKiAgLSBMT0FESU5H X0VYSVQ6IHVjb2RlIGxvYWRpbmcgaXMgZG9uZSBvciBhYm9ydGVkLgo+ICsgKi8KPiArc3RhdGlj IGVudW0gewo+ICsgICAgTE9BRElOR19QUkVQQVJFLAo+ICsgICAgTE9BRElOR19DQUxMSU4sCj4g KyAgICBMT0FESU5HX0VOVEVSLAo+ICsgICAgTE9BRElOR19FWElULAo+ICt9IGxvYWRpbmdfc3Rh dGU7Cj4gIAo+ICAvKgo+ICAgKiBJZiB3ZSBzY2FuIHRoZSBpbml0cmFtZnMuY3BpbyBmb3IgdGhl IGVhcmx5IG1pY3JvY29kZSBjb2RlCj4gQEAgLTE5MCw2ICsyMjQsMTYgQEAgc3RhdGljIERFRklO RV9TUElOTE9DSyhtaWNyb2NvZGVfbXV0ZXgpOwo+ICBERUZJTkVfUEVSX0NQVShzdHJ1Y3QgY3B1 X3NpZ25hdHVyZSwgY3B1X3NpZyk7Cj4gIAo+ICAvKgo+ICsgKiBDb3VudCB0aGUgQ1BVcyB0aGF0 IGhhdmUgZW50ZXJlZCwgZXhpdGVkIHRoZSByZW5kZXp2b3VzIGFuZCBzdWNjZWVkZWQgaW4KPiAr ICogbWljcm9jb2RlIHVwZGF0ZSBkdXJpbmcgbGF0ZSBtaWNyb2NvZGUgdXBkYXRlIHJlc3BlY3Rp dmVseS4KPiArICoKPiArICogTm90ZSB0aGF0IGEgYml0bWFwIGlzIHVzZWQgZm9yIGNhbGxpbiB0 byBhbGxvdyBjcHUgdG8gc2V0IGEgYml0IG11bHRpcGxlCj4gKyAqIHRpbWVzLiBJdCBpcyByZXF1 aXJlZCB0byBkbyBidXN5LWxvb3AgaW4gI05NSSBoYW5kbGluZy4KPiArICovCj4gK3N0YXRpYyBj cHVtYXNrX3QgY3B1X2NhbGxpbl9tYXA7Cj4gK3N0YXRpYyBhdG9taWNfdCBjcHVfb3V0LCBjcHVf dXBkYXRlZDsKPiArCj4gKy8qCj4gICAqIFJldHVybiBhIHBhdGNoIHRoYXQgY292ZXJzIGN1cnJl bnQgQ1BVLiBJZiB0aGVyZSBhcmUgbXVsdGlwbGUgcGF0Y2hlcywKPiAgICogcmV0dXJuIHRoZSBv bmUgd2l0aCB0aGUgaGlnaGVzdCByZXZpc2lvbiBudW1iZXIuIFJldHVybiBlcnJvciBJZiBubwo+ ICAgKiBwYXRjaCBpcyBmb3VuZCBhbmQgYW4gZXJyb3Igb2NjdXJzIGR1cmluZyB0aGUgcGFyc2lu ZyBwcm9jZXNzLiBPdGhlcndpc2UKPiBAQCAtMjMyLDYgKzI3NiwzNCBAQCBib29sIG1pY3JvY29k ZV91cGRhdGVfY2FjaGUoc3RydWN0IG1pY3JvY29kZV9wYXRjaCAqcGF0Y2gpCj4gICAgICByZXR1 cm4gdHJ1ZTsKPiAgfQo+ICAKPiArLyogV2FpdCBmb3IgYSBjb25kaXRpb24gdG8gYmUgbWV0IHdp dGggYSB0aW1lb3V0ICh1cykuICovCj4gK3N0YXRpYyBpbnQgd2FpdF9mb3JfY29uZGl0aW9uKGlu dCAoKmZ1bmMpKHZvaWQgKmRhdGEpLCB2b2lkICpkYXRhLAo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgdW5zaWduZWQgaW50IHRpbWVvdXQpCj4gK3sKPiArICAgIHdoaWxlICggIWZ1bmMoZGF0 YSkgKQo+ICsgICAgewo+ICsgICAgICAgIGlmICggIXRpbWVvdXQtLSApCj4gKyAgICAgICAgewo+ ICsgICAgICAgICAgICBwcmludGsoIkNQVSV1OiBUaW1lb3V0IGluICVwU1xuIiwKPiArICAgICAg ICAgICAgICAgICAgIHNtcF9wcm9jZXNzb3JfaWQoKSwgX19idWlsdGluX3JldHVybl9hZGRyZXNz KDApKTsKPiArICAgICAgICAgICAgcmV0dXJuIC1FQlVTWTsKPiArICAgICAgICB9Cj4gKyAgICAg ICAgdWRlbGF5KDEpOwo+ICsgICAgfQo+ICsKPiArICAgIHJldHVybiAwOwo+ICt9Cj4gKwo+ICtz dGF0aWMgaW50IHdhaXRfY3B1X2NhbGxpbih2b2lkICpucikKPiArewo+ICsgICAgcmV0dXJuIGNw dW1hc2tfd2VpZ2h0KCZjcHVfY2FsbGluX21hcCkgPj0gKHVuc2lnbmVkIGxvbmcpbnI7Cj4gK30K PiArCj4gK3N0YXRpYyBpbnQgd2FpdF9jcHVfY2FsbG91dCh2b2lkICpucikKPiArewo+ICsgICAg cmV0dXJuIGF0b21pY19yZWFkKCZjcHVfb3V0KSA+PSAodW5zaWduZWQgbG9uZylucjsKPiArfQo+ ICsKPiAgLyoKPiAgICogTG9hZCBhIG1pY3JvY29kZSB1cGRhdGUgdG8gY3VycmVudCBDUFUuCj4g ICAqCj4gQEAgLTI2NSwzNyArMzM3LDE1NSBAQCBzdGF0aWMgaW50IG1pY3JvY29kZV91cGRhdGVf Y3B1KGNvbnN0IHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKnBhdGNoKQo+ICAgICAgcmV0dXJuIGVy cjsKPiAgfQo+ICAKPiAtc3RhdGljIGxvbmcgZG9fbWljcm9jb2RlX3VwZGF0ZSh2b2lkICpwYXRj aCkKPiArc3RhdGljIGludCBzbGF2ZV90aHJlYWRfZm4odm9pZCkKPiArewo+ICsgICAgdW5zaWdu ZWQgaW50IGNwdSA9IHNtcF9wcm9jZXNzb3JfaWQoKTsKPiArICAgIHVuc2lnbmVkIGludCBtYXN0 ZXIgPSBjcHVtYXNrX2ZpcnN0KHRoaXNfY3B1KGNwdV9zaWJsaW5nX21hc2spKTsKPiArCj4gKyAg ICB3aGlsZSAoIGxvYWRpbmdfc3RhdGUgIT0gTE9BRElOR19DQUxMSU4gKQo+ICsgICAgICAgIGNw dV9yZWxheCgpOwo+ICsKPiArICAgIGNwdW1hc2tfc2V0X2NwdShjcHUsICZjcHVfY2FsbGluX21h cCk7Cj4gKwo+ICsgICAgd2hpbGUgKCBsb2FkaW5nX3N0YXRlICE9IExPQURJTkdfRVhJVCApCj4g KyAgICAgICAgY3B1X3JlbGF4KCk7Cj4gKwo+ICsgICAgLyogQ29weSB1cGRhdGUgcmV2aXNpb24g ZnJvbSB0aGUgIm1hc3RlciIgdGhyZWFkLiAqLwo+ICsgICAgdGhpc19jcHUoY3B1X3NpZykucmV2 ID0gcGVyX2NwdShjcHVfc2lnLCBtYXN0ZXIpLnJldjsKPiArCj4gKyAgICByZXR1cm4gMDsKPiAr fQo+ICsKPiArc3RhdGljIGludCBtYXN0ZXJfdGhyZWFkX2ZuKGNvbnN0IHN0cnVjdCBtaWNyb2Nv ZGVfcGF0Y2ggKnBhdGNoKQo+ICt7Cj4gKyAgICB1bnNpZ25lZCBpbnQgY3B1ID0gc21wX3Byb2Nl c3Nvcl9pZCgpOwo+ICsgICAgaW50IHJldCA9IDA7Cj4gKwo+ICsgICAgd2hpbGUgKCBsb2FkaW5n X3N0YXRlICE9IExPQURJTkdfQ0FMTElOICkKPiArICAgICAgICBjcHVfcmVsYXgoKTsKPiArCj4g KyAgICBjcHVtYXNrX3NldF9jcHUoY3B1LCAmY3B1X2NhbGxpbl9tYXApOwo+ICsKPiArICAgIHdo aWxlICggbG9hZGluZ19zdGF0ZSAhPSBMT0FESU5HX0VOVEVSICkKPiArICAgICAgICBjcHVfcmVs YXgoKTsKCklmIEknbSByZWFkaW5nIGl0IHJpZ2h0LCB0aGlzIHdpbGwgd2FpdCBmb3JldmVyIGlu IGNhc2Ugd2hlbi4uLgoKPiArCj4gKyAgICAvKgo+ICsgICAgICogSWYgYW4gZXJyb3IgaGFwcGVu ZWQsIGNvbnRyb2wgdGhyZWFkIHdvdWxkIHNldCAnbG9hZGluZ19zdGF0ZScKPiArICAgICAqIHRv IExPQURJTkdfRVhJVC4gRG9uJ3QgcGVyZm9ybSB1Y29kZSBsb2FkaW5nIGZvciB0aGlzIGNhc2UK PiArICAgICAqLwo+ICsgICAgaWYgKCBsb2FkaW5nX3N0YXRlID09IExPQURJTkdfRVhJVCApCj4g KyAgICAgICAgcmV0dXJuIHJldDsKPiArCj4gKyAgICByZXQgPSBtaWNyb2NvZGVfb3BzLT5hcHBs eV9taWNyb2NvZGUocGF0Y2gpOwo+ICsgICAgaWYgKCAhcmV0ICkKPiArICAgICAgICBhdG9taWNf aW5jKCZjcHVfdXBkYXRlZCk7Cj4gKyAgICBhdG9taWNfaW5jKCZjcHVfb3V0KTsKPiArCj4gKyAg ICB3aGlsZSAoIGxvYWRpbmdfc3RhdGUgIT0gTE9BRElOR19FWElUICkKPiArICAgICAgICBjcHVf cmVsYXgoKTsKPiArCj4gKyAgICByZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGNv bnRyb2xfdGhyZWFkX2ZuKGNvbnN0IHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKnBhdGNoKQo+ICB7 Cj4gLSAgICB1bnNpZ25lZCBpbnQgY3B1Owo+ICsgICAgdW5zaWduZWQgaW50IGNwdSA9IHNtcF9w cm9jZXNzb3JfaWQoKSwgZG9uZTsKPiArICAgIHVuc2lnbmVkIGxvbmcgdGljazsKPiArICAgIGlu dCByZXQ7Cj4gIAo+IC0gICAgLyogU3RvcmUgdGhlIHBhdGNoIGFmdGVyIGEgc3VjY2Vzc2Z1bCBs b2FkaW5nICovCj4gLSAgICBpZiAoICFtaWNyb2NvZGVfdXBkYXRlX2NwdShwYXRjaCkgJiYgcGF0 Y2ggKQo+ICsgICAgLyogQWxsb3cgdGhyZWFkcyB0byBjYWxsIGluICovCj4gKyAgICBsb2FkaW5n X3N0YXRlID0gTE9BRElOR19DQUxMSU47Cj4gKyAgICBzbXBfbWIoKTsKPiArCj4gKyAgICBjcHVt YXNrX3NldF9jcHUoY3B1LCAmY3B1X2NhbGxpbl9tYXApOwo+ICsKPiArICAgIC8qIFdhaXRpbmcg Zm9yIGFsbCB0aHJlYWRzIGNhbGxpbmcgaW4gKi8KPiArICAgIHJldCA9IHdhaXRfZm9yX2NvbmRp dGlvbih3YWl0X2NwdV9jYWxsaW4sCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZv aWQgKikodW5zaWduZWQgbG9uZyludW1fb25saW5lX2NwdXMoKSwKPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBNSUNST0NPREVfQ0FMTElOX1RJTUVPVVRfVVMpOwo+ICsgICAgaWYgKCBy ZXQgKSB7Cj4gKyAgICAgICAgbG9hZGluZ19zdGF0ZSA9IExPQURJTkdfRVhJVDsKPiArICAgICAg ICByZXR1cm4gcmV0Owo+ICsgICAgfQoKLi4udGhpcyBjb25kaXRpb24gaG9sZHMuIEhhdmUgeW91 IGFjdHVhbGx5IHRlc3RlZCB0aGlzIGNhc2U/Cgo+ICsKPiArICAgIC8qIExldCBtYXN0ZXIgdGhy ZWFkcyBsb2FkIHRoZSBnaXZlbiB1Y29kZSB1cGRhdGUgKi8KPiArICAgIGxvYWRpbmdfc3RhdGUg PSBMT0FESU5HX0VOVEVSOwo+ICsgICAgc21wX21iKCk7Cj4gKwo+ICsgICAgcmV0ID0gbWljcm9j b2RlX29wcy0+YXBwbHlfbWljcm9jb2RlKHBhdGNoKTsKPiArICAgIGlmICggIXJldCApCj4gKyAg ICAgICAgYXRvbWljX2luYygmY3B1X3VwZGF0ZWQpOwo+ICsgICAgYXRvbWljX2luYygmY3B1X291 dCk7Cj4gKwo+ICsgICAgdGljayA9IHJkdHNjX29yZGVyZWQoKTsKPiArICAgIC8qIFdhaXRpbmcg Zm9yIG1hc3RlciB0aHJlYWRzIGZpbmlzaGluZyB1cGRhdGUgKi8KPiArICAgIGRvbmUgPSBhdG9t aWNfcmVhZCgmY3B1X291dCk7Cj4gKyAgICB3aGlsZSAoIGRvbmUgIT0gbnJfY29yZXMgKQo+ICAg ICAgewo+IC0gICAgICAgIHNwaW5fbG9jaygmbWljcm9jb2RlX211dGV4KTsKPiAtICAgICAgICBt aWNyb2NvZGVfdXBkYXRlX2NhY2hlKHBhdGNoKTsKPiAtICAgICAgICBzcGluX3VubG9jaygmbWlj cm9jb2RlX211dGV4KTsKPiAtICAgICAgICBwYXRjaCA9IE5VTEw7Cj4gKyAgICAgICAgLyoKPiAr ICAgICAgICAgKiBEdXJpbmcgZWFjaCB0aW1lb3V0IGludGVydmFsLCBhdCBsZWFzdCBhIENQVSBp cyBleHBlY3RlZCB0bwo+ICsgICAgICAgICAqIGZpbmlzaCBpdHMgdXBkYXRlLiBPdGhlcndpc2Us IHNvbWV0aGluZyBnb2VzIHdyb25nLgo+ICsgICAgICAgICAqCj4gKyAgICAgICAgICogTm90ZSB0 aGF0IFJEVFNDIChpbiB3YWl0X2Zvcl9jb25kaXRpb24oKSkgaXMgc2FmZSBmb3IgdGhyZWFkcyB0 bwo+ICsgICAgICAgICAqIGV4ZWN1dGUgd2hpbGUgd2FpdGluZyBmb3IgY29tcGxldGlvbiBvZiBs b2FkaW5nIGFuIHVwZGF0ZS4KPiArICAgICAgICAgKi8KPiArICAgICAgICBpZiAoIHdhaXRfZm9y X2NvbmRpdGlvbih3YWl0X2NwdV9jYWxsb3V0LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICh2b2lkICopKHVuc2lnbmVkIGxvbmcpKGRvbmUgKyAxKSwKPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBNSUNST0NPREVfVVBEQVRFX1RJTUVPVVRfVVMpICkKPiArICAg ICAgICAgICAgcGFuaWMoIlRpbWVvdXQgd2hlbiBmaW5pc2hlZCB1cGRhdGluZyBtaWNyb2NvZGUg KGZpbmlzaGVkICV1LyV1KSIsCj4gKyAgICAgICAgICAgICAgICAgIGRvbmUsIG5yX2NvcmVzKTsK PiArCj4gKyAgICAgICAgLyogUHJpbnQgd2FybmluZyBtZXNzYWdlIG9uY2UgaWYgbG9uZyB0aW1l IGlzIHNwZW50IGhlcmUgKi8KPiArICAgICAgICBpZiAoIHRpY2sgJiYgcmR0c2Nfb3JkZXJlZCgp IC0gdGljayA+PSBjcHVfa2h6ICogMTAwMCApCj4gKyAgICAgICAgewo+ICsgICAgICAgICAgICBw cmludGsoWEVOTE9HX1dBUk5JTkcKPiArICAgICAgICAgICAgICAgICAgICJXQVJOSU5HOiBVUERB VElORyBNSUNST0NPREUgSEFTIENPTlNVTUVEIE1PUkUgVEhBTiAxIFNFQ09ORCFcbiIpOwo+ICsg ICAgICAgICAgICB0aWNrID0gMDsKPiArICAgICAgICB9Cj4gKyAgICAgICAgZG9uZSA9IGF0b21p Y19yZWFkKCZjcHVfb3V0KTsKPiAgICAgIH0KPiAgCj4gLSAgICBpZiAoIG1pY3JvY29kZV9vcHMt PmVuZF91cGRhdGUgKQo+IC0gICAgICAgIG1pY3JvY29kZV9vcHMtPmVuZF91cGRhdGUoKTsKPiAr ICAgIC8qIE1hcmsgbG9hZGluZyBpcyBkb25lIHRvIHVuYmxvY2sgb3RoZXIgdGhyZWFkcyAqLwo+ ICsgICAgbG9hZGluZ19zdGF0ZSA9IExPQURJTkdfRVhJVDsKPiArICAgIHNtcF9tYigpOwo+ICAK PiAtICAgIGNwdSA9IGNwdW1hc2tfbmV4dChzbXBfcHJvY2Vzc29yX2lkKCksICZjcHVfb25saW5l X21hcCk7Cj4gLSAgICBpZiAoIGNwdSA8IG5yX2NwdV9pZHMgKQo+IC0gICAgICAgIHJldHVybiBj b250aW51ZV9oeXBlcmNhbGxfb25fY3B1KGNwdSwgZG9fbWljcm9jb2RlX3VwZGF0ZSwgcGF0Y2gp Owo+ICsgICAgcmV0dXJuIHJldDsKPiArfQo+ICAKPiAtICAgIC8qIEZyZWUgdGhlIHBhdGNoIGlm IG5vIENQVSBoYXMgbG9hZGVkIGl0IHN1Y2Nlc3NmdWxseS4gKi8KPiAtICAgIGlmICggcGF0Y2gg KQo+IC0gICAgICAgIG1pY3JvY29kZV9mcmVlX3BhdGNoKHBhdGNoKTsKPiArc3RhdGljIGludCBk b19taWNyb2NvZGVfdXBkYXRlKHZvaWQgKnBhdGNoKQo+ICt7Cj4gKyAgICB1bnNpZ25lZCBpbnQg Y3B1ID0gc21wX3Byb2Nlc3Nvcl9pZCgpOwo+ICsgICAgLyoKPiArICAgICAqICJtYXN0ZXIiIHRo cmVhZCBpcyB0aGUgb25lIHdpdGggdGhlIGxvd2VzdCB0aHJlYWQgaWQgYW1vbmcgYWxsIHNpYmxp bmdzCj4gKyAgICAgKiB0aHJlYWQgaW4gYSBjb3JlIG9yIGEgY29tcHV0ZSB1bml0LiBJdCBpcyBj aG9zZW4gdG8gbG9hZCBhIG1pY3JvY29kZQo+ICsgICAgICogdXBkYXRlLgo+ICsgICAgICovCj4g KyAgICB1bnNpZ25lZCBpbnQgbWFzdGVyID0gY3B1bWFza19maXJzdCh0aGlzX2NwdShjcHVfc2li bGluZ19tYXNrKSk7Cj4gKyAgICBpbnQgcmV0Owo+ICAKPiAtICAgIHJldHVybiAwOwo+ICsgICAg LyoKPiArICAgICAqIFRoZSBjb250cm9sIHRocmVhZCBzZXQgc3RhdGUgdG8gY29vcmRpbmF0ZSB1 Y29kZSBsb2FkaW5nLiBNYXN0ZXIgdGhyZWFkcwo+ICsgICAgICogbG9hZCB0aGUgZ2l2ZW4gdWNv ZGUgcGF0Y2guIFNsYXZlIHRocmVhZHMganVzdCB3YWl0IGZvciB0aGUgY29tcGxldGlvbgo+ICsg ICAgICogb2YgdGhlIHVjb2RlIGxvYWRpbmcgcHJvY2Vzcy4KPiArICAgICAqLwo+ICsgICAgaWYg KCBjcHUgPT0gY3B1bWFza19maXJzdCgmY3B1X29ubGluZV9tYXApICkKPiArICAgICAgICByZXQg PSBjb250cm9sX3RocmVhZF9mbihwYXRjaCk7Cj4gKyAgICBlbHNlIGlmICggY3B1ID09IG1hc3Rl ciApCj4gKyAgICAgICAgcmV0ID0gbWFzdGVyX3RocmVhZF9mbihwYXRjaCk7Cj4gKyAgICBlbHNl Cj4gKyAgICAgICAgcmV0ID0gc2xhdmVfdGhyZWFkX2ZuKCk7Cj4gKwo+ICsgICAgaWYgKCBtaWNy b2NvZGVfb3BzLT5lbmRfdXBkYXRlICkKPiArICAgICAgICBtaWNyb2NvZGVfb3BzLT5lbmRfdXBk YXRlKCk7Cj4gKwo+ICsgICAgcmV0dXJuIHJldDsKPiAgfQo+ICAKPiAgaW50IG1pY3JvY29kZV91 cGRhdGUoWEVOX0dVRVNUX0hBTkRMRV9QQVJBTShjb25zdF92b2lkKSBidWYsIHVuc2lnbmVkIGxv bmcgbGVuKQo+ICB7Cj4gICAgICBpbnQgcmV0Owo+ICAgICAgdm9pZCAqYnVmZmVyOwo+ICsgICAg dW5zaWduZWQgaW50IGNwdSwgdXBkYXRlZDsKPiAgICAgIHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2gg KnBhdGNoOwo+ICAKPiAgICAgIGlmICggbGVuICE9ICh1aW50MzJfdClsZW4gKQo+IEBAIC0zMTQs MTEgKzUwNCwxOCBAQCBpbnQgbWljcm9jb2RlX3VwZGF0ZShYRU5fR1VFU1RfSEFORExFX1BBUkFN KGNvbnN0X3ZvaWQpIGJ1ZiwgdW5zaWduZWQgbG9uZyBsZW4pCj4gICAgICAgICAgZ290byBmcmVl Owo+ICAgICAgfQo+ICAKPiArICAgIC8qIGNwdV9vbmxpbmVfbWFwIG11c3Qgbm90IGNoYW5nZSBk dXJpbmcgdXBkYXRlICovCj4gKyAgICBpZiAoICFnZXRfY3B1X21hcHMoKSApCj4gKyAgICB7Cj4g KyAgICAgICAgcmV0ID0gLUVCVVNZOwo+ICsgICAgICAgIGdvdG8gZnJlZTsKPiArICAgIH0KPiAr Cj4gICAgICBpZiAoIG1pY3JvY29kZV9vcHMtPnN0YXJ0X3VwZGF0ZSApCj4gICAgICB7Cj4gICAg ICAgICAgcmV0ID0gbWljcm9jb2RlX29wcy0+c3RhcnRfdXBkYXRlKCk7Cj4gICAgICAgICAgaWYg KCByZXQgIT0gMCApCj4gLSAgICAgICAgICAgIGdvdG8gZnJlZTsKPiArICAgICAgICAgICAgZ290 byBwdXQ7Cj4gICAgICB9Cj4gIAo+ICAgICAgcGF0Y2ggPSBwYXJzZV9ibG9iKGJ1ZmZlciwgbGVu KTsKPiBAQCAtMzI2LDE5ICs1MjMsNjcgQEAgaW50IG1pY3JvY29kZV91cGRhdGUoWEVOX0dVRVNU X0hBTkRMRV9QQVJBTShjb25zdF92b2lkKSBidWYsIHVuc2lnbmVkIGxvbmcgbGVuKQo+ICAgICAg ewo+ICAgICAgICAgIHJldCA9IFBUUl9FUlIocGF0Y2gpOwo+ICAgICAgICAgIHByaW50ayhYRU5M T0dfSU5GTyAiUGFyc2luZyBtaWNyb2NvZGUgYmxvYiBlcnJvciAlZFxuIiwgcmV0KTsKPiAtICAg ICAgICBnb3RvIGZyZWU7Cj4gKyAgICAgICAgZ290byBwdXQ7Cj4gICAgICB9Cj4gIAo+ICAgICAg aWYgKCAhcGF0Y2ggKQo+ICAgICAgewo+ICAgICAgICAgIHByaW50ayhYRU5MT0dfSU5GTyAiTm8g dWNvZGUgZm91bmQuIFVwZGF0ZSBhYm9ydGVkIVxuIik7Cj4gICAgICAgICAgcmV0ID0gLUVJTlZB TDsKPiAtICAgICAgICBnb3RvIGZyZWU7Cj4gKyAgICAgICAgZ290byBwdXQ7Cj4gKyAgICB9Cj4g Kwo+ICsgICAgY3B1bWFza19jbGVhcigmY3B1X2NhbGxpbl9tYXApOwo+ICsgICAgYXRvbWljX3Nl dCgmY3B1X291dCwgMCk7Cj4gKyAgICBhdG9taWNfc2V0KCZjcHVfdXBkYXRlZCwgMCk7Cj4gKyAg ICBsb2FkaW5nX3N0YXRlID0gTE9BRElOR19QUkVQQVJFOwo+ICsKPiArICAgIC8qIENhbGN1bGF0 ZSB0aGUgbnVtYmVyIG9mIG9ubGluZSBDUFUgY29yZSAqLwo+ICsgICAgbnJfY29yZXMgPSAwOwo+ ICsgICAgZm9yX2VhY2hfb25saW5lX2NwdShjcHUpCj4gKyAgICAgICAgaWYgKCBjcHUgPT0gY3B1 bWFza19maXJzdChwZXJfY3B1KGNwdV9zaWJsaW5nX21hc2ssIGNwdSkpICkKPiArICAgICAgICAg ICAgbnJfY29yZXMrKzsKPiArCj4gKyAgICBwcmludGsoWEVOTE9HX0lORk8gIiV1IGNvcmVzIGFy ZSB0byB1cGRhdGUgdGhlaXIgbWljcm9jb2RlXG4iLCBucl9jb3Jlcyk7Cj4gKwo+ICsgICAgLyoK PiArICAgICAqIFdlIGludGVuZCB0byBkaXNhYmxlIGludGVycnVwdCBmb3IgbG9uZyB0aW1lLCB3 aGljaCBtYXkgbGVhZCB0bwo+ICsgICAgICogd2F0Y2hkb2cgdGltZW91dC4KPiArICAgICAqLwo+ ICsgICAgd2F0Y2hkb2dfZGlzYWJsZSgpOwo+ICsgICAgLyoKPiArICAgICAqIExhdGUgbG9hZGlu ZyBkYW5jZS4gV2h5IHRoZSBoZWF2eS1oYW5kZWQgc3RvcF9tYWNoaW5lIGVmZm9ydD8KPiArICAg ICAqCj4gKyAgICAgKiAtIEhUIHNpYmxpbmdzIG11c3QgYmUgaWRsZSBhbmQgbm90IGV4ZWN1dGUg b3RoZXIgY29kZSB3aGlsZSB0aGUgb3RoZXIKPiArICAgICAqICAgc2libGluZyBpcyBsb2FkaW5n IG1pY3JvY29kZSBpbiBvcmRlciB0byBhdm9pZCBhbnkgbmVnYXRpdmUKPiArICAgICAqICAgaW50 ZXJhY3Rpb25zIGNhdXNlIGJ5IHRoZSBsb2FkaW5nLgo+ICsgICAgICoKPiArICAgICAqIC0gSW4g YWRkaXRpb24sIG1pY3JvY29kZSB1cGRhdGUgb24gdGhlIGNvcmVzIG11c3QgYmUgc2VyaWFsaXpl ZCB1bnRpbAo+ICsgICAgICogICB0aGlzIHJlcXVpcmVtZW50IGNhbiBiZSByZWxheGVkIGluIHRo ZSBmdXR1cmUuIFJpZ2h0IG5vdywgdGhpcyBpcwo+ICsgICAgICogICBjb25zZXJ2YXRpdmUgYW5k IGdvb2QuCj4gKyAgICAgKi8KPiArICAgIHJldCA9IHN0b3BfbWFjaGluZV9ydW4oZG9fbWljcm9j b2RlX3VwZGF0ZSwgcGF0Y2gsIE5SX0NQVVMpOwo+ICsgICAgd2F0Y2hkb2dfZW5hYmxlKCk7Cj4g Kwo+ICsgICAgdXBkYXRlZCA9IGF0b21pY19yZWFkKCZjcHVfdXBkYXRlZCk7Cj4gKyAgICBpZiAo IHVwZGF0ZWQgPiAwICkKPiArICAgIHsKPiArICAgICAgICBzcGluX2xvY2soJm1pY3JvY29kZV9t dXRleCk7Cj4gKyAgICAgICAgbWljcm9jb2RlX3VwZGF0ZV9jYWNoZShwYXRjaCk7Cj4gKyAgICAg ICAgc3Bpbl91bmxvY2soJm1pY3JvY29kZV9tdXRleCk7Cj4gICAgICB9Cj4gKyAgICBlbHNlCj4g KyAgICAgICAgbWljcm9jb2RlX2ZyZWVfcGF0Y2gocGF0Y2gpOwo+ICAKPiAtICAgIHJldCA9IGNv bnRpbnVlX2h5cGVyY2FsbF9vbl9jcHUoY3B1bWFza19maXJzdCgmY3B1X29ubGluZV9tYXApLAo+ IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb19taWNyb2NvZGVfdXBkYXRl LCBwYXRjaCk7Cj4gKyAgICBpZiAoIHVwZGF0ZWQgJiYgdXBkYXRlZCAhPSBucl9jb3JlcyApCj4g KyAgICAgICAgcHJpbnRrKFhFTkxPR19FUlIgIkVSUk9SOiBVcGRhdGluZyBtaWNyb2NvZGUgc3Vj Y2VlZGVkIG9uICV1IGNvcmVzIGFuZCBmYWlsZWRcbiIKPiArICAgICAgICAgICAgICAgWEVOTE9H X0VSUiAib24gb3RoZXIgJXUgY29yZXMuIEEgc3lzdGVtIHdpdGggZGlmZmVyaW5nIG1pY3JvY29k ZSBcbiIKPiArICAgICAgICAgICAgICAgWEVOTE9HX0VSUiAicmV2aXNpb25zIGlzIGNvbnNpZGVy ZWQgdW5zdGFibGUuIFBsZWFzZSByZWJvb3QgYW5kIGRvIG5vdFxuIgo+ICsgICAgICAgICAgICAg ICBYRU5MT0dfRVJSICJsb2FkIHRoZSBtaWNyb2NvZGUgdGhhdCB0cmlnZ2Vyc3RoaXMgd2Fybmlu ZyFcbiIsCj4gKyAgICAgICAgICAgICAgIHVwZGF0ZWQsIG5yX2NvcmVzIC0gdXBkYXRlZCk7Cj4g IAo+ICsgcHV0Ogo+ICsgICAgcHV0X2NwdV9tYXBzKCk7Cj4gICBmcmVlOgo+ICAgICAgeGZyZWUo YnVmZmVyKTsKPiAgICAgIHJldHVybiByZXQ7Cj4gCgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBs aXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4v bGlzdGluZm8veGVuLWRldmVs