From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [PATCH v14 04/23] x86: refactor psr: L3 CAT: implement main data structures, CPU init and free flows. Date: Sat, 15 Jul 2017 08:31:37 +0800 Message-ID: <1500078716-5928-5-git-send-email-yi.y.sun@linux.intel.com> References: <1500078716-5928-1-git-send-email-yi.y.sun@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dWBDl-000755-E8 for xen-devel@lists.xenproject.org; Sat, 15 Jul 2017 00:46:09 +0000 In-Reply-To: <1500078716-5928-1-git-send-email-yi.y.sun@linux.intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: kevin.tian@intel.com, wei.liu2@citrix.com, andrew.cooper3@citrix.com, dario.faggioli@citrix.com, ian.jackson@eu.citrix.com, Yi Sun , mengxu@cis.upenn.edu, jbeulich@suse.com, chao.p.peng@linux.intel.com, roger.pau@citrix.com List-Id: xen-devel@lists.xenproject.org VG8gY29uc3RydWN0IGFuIGV4dGVuZGlibGUgZnJhbWV3b3JrLCB3ZSBuZWVkIGFuYWx5emUgUFNS IGZlYXR1cmVzCmFuZCBhYnN0cmFjdCB0aGUgY29tbW9uIHRoaW5ncyBhbmQgZmVhdHVyZSBzcGVj aWZpYyB0aGluZ3MuIFRoZW4sCmVuY2Fwc3VsYXRlIHRoZW0gaW50byBkaWZmZXJlbnQgZGF0YSBz dHJ1Y3R1cmVzLgoKQnkgYW5hbHl6aW5nIFBTUiBmZWF0dXJlcywgd2UgY2FuIGdldCBiZWxvdyBt YXAuCiAgICAgICAgICAgICAgICArLS0tLS0tKy0tLS0tLSstLS0tLS0rCiAgICAgIC0tLS0tLS0t LT58IERvbTAgfCBEb20xIHwgLi4uICB8CiAgICAgIHwgICAgICAgICArLS0tLS0tKy0tLS0tLSst LS0tLS0rCiAgICAgIHwgICAgICAgICAgICB8CiAgICAgIHxEb20gSUQgICAgICB8IGNvc19pZCBv ZiBkb21haW4KICAgICAgfCAgICAgICAgICAgIFYKICAgICAgfCAgICAgICAgKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKwpVc2VyIC0tLS0tLS0tLT58IFBTUiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiAgICAgU29j a2V0IElEIHwgICstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t KyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKICAgICAgICAgICAgICAgfCAgfCBTb2NrZXQw IEluZm8gfCBTb2NrZXQgMSBJbmZvIHwgICAgLi4uICAgICAgICB8ICAgICAgICAgICAgICAgICAg ICAgICAgICAgfAogICAgICAgICAgICAgICB8ICArLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiAgICAgICAg ICAgICAgIHwgICAgfCAgICAgICAgICAgICAgICAgICBjb3NfaWQ9MCAgICAgICAgICAgICAgIGNv c19pZD0xICAgICAgICAgIC4uLiAgICAgICAgIHwKICAgICAgICAgICAgICAgfCAgICB8ICAgICAg ICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLSsgfAogICAgICAgICAgICAgICB8ICAgIHwtPlJlZiAgIDogfCAgICAgICAgIHJlZiAw ICAgICAgICAgfCAgICAgICAgIHJlZiAxICAgICAgICAgfCAuLi4gICAgICAgfCB8CiAgICAgICAg ICAgICAgIHwgICAgfCAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rIHwKICAgICAgICAgICAgICAgfCAgICB8ICAgICAg ICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLSsgfAogICAgICAgICAgICAgICB8ICAgIHwtPkwzIENBVDogfCAgICAgICAgIGNvcyAw ICAgICAgICAgfCAgICAgICAgIGNvcyAxICAgICAgICAgfCAuLi4gICAgICAgfCB8CiAgICAgICAg ICAgICAgIHwgICAgfCAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rIHwKICAgICAgICAgICAgICAgfCAgICB8ICAgICAg ICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLSsgfAogICAgICAgICAgICAgICB8ICAgIHwtPkwyIENBVDogfCAgICAgICAgIGNvcyAw ICAgICAgICAgfCAgICAgICAgIGNvcyAxICAgICAgICAgfCAuLi4gICAgICAgfCB8CiAgICAgICAg ICAgICAgIHwgICAgfCAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rIHwKICAgICAgICAgICAgICAgfCAgICB8ICAgICAg ICAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tLSsgfAogICAgICAgICAgICAgICB8ICAgIHwtPkNEUCAgIDogfCBjb3MwIGNvZGUgfCBj b3MwIGRhdGEgfCBjb3MxIGNvZGUgfCBjb3MxIGRhdGEgfCAuLi4gICAgICAgfCB8CiAgICAgICAg ICAgICAgIHwgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rIHwKICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKwoKU28sIHdlIG5lZWQgZGVmaW5lIGEgc29ja2V0IGluZm8gZGF0YSBzdHJ1Y3R1 cmUsICdzdHJ1Y3QKcHNyX3NvY2tldF9pbmZvJyB0byBtYW5hZ2UgaW5mb3JtYXRpb24gcGVyIHNv Y2tldC4gSXQgY29udGFpbnMgYQpyZWZlcmVuY2UgY291bnQgYXJyYXkgYWNjb3JkaW5nIHRvIENP UyBJRCBhbmQgYSBmZWF0dXJlIGFycmF5IHRvCm1hbmFnZSBhbGwgZmVhdHVyZXMgZW5hYmxlZC4g RXZlcnkgZW50cnkgb2YgdGhlIHJlZmVyZW5jZSBjb3VudAphcnJheSBpcyB1c2VkIHRvIHJlY29y ZCBob3cgbWFueSBkb21haW5zIGFyZSB1c2luZyB0aGUgQ09TIHJlZ2lzdGVycwphY2NvcmRpbmcg dG8gdGhlIENPUyBJRC4gRm9yIGV4YW1wbGUsIEwzIENBVCBhbmQgTDIgQ0FUIGFyZSBlbmFibGVk LApEb20xIHVzZXMgQ09TX0lEPTEgcmVnaXN0ZXJzIG9mIGJvdGggZmVhdHVyZXMgdG8gc2F2ZSBD Qk0gdmFsdWVzLCBsaWtlCmJlbG93LgogICAgICAgICstLS0tLS0tKy0tLS0tLS0rLS0tLS0tLSst LS0tLSsKICAgICAgICB8IENPUyAwIHwgQ09TIDEgfCBDT1MgMiB8IC4uLiB8CiAgICAgICAgKy0t LS0tLS0rLS0tLS0tLSstLS0tLS0tKy0tLS0tKwpMMyBDQVQgIHwgMHg3ZmYgfCAweDFmZiB8IC4u LiAgIHwgLi4uIHwKICAgICAgICArLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0rLS0tLS0rCkwyIENB VCAgfCAweGZmICB8IDB4ZmYgIHwgLi4uICAgfCAuLi4gfAogICAgICAgICstLS0tLS0tKy0tLS0t LS0rLS0tLS0tLSstLS0tLSsKCklmIERvbTIgaGFzIHNhbWUgQ0JNIHZhbHVlcywgaXQgY2FuIHJl dXNlIHRoZXNlIHJlZ2lzdGVycyB3aGljaCBDT1NfSUQ9MS4KVGhhdCBtZWFucywgYm90aCBEb20x IGFuZCBEb20yIHVzZSBzYW1lIENPUyByZWdpc3RlcnMoSUQ9MSkgdG8ga2VlcCBzYW1lCkwzL0wy IHZhbHVlcy4gU28sIHRoZSB2YWx1ZSBvZiByZWZbMV0gaXMgMiB3aGljaCBtZWFucyAyIGRvbWFp bnMgYXJlIHVzaW5nCkNPU19JRCAxLgoKVG8gbWFuYWdlIGEgZmVhdHVyZSwgd2UgbmVlZCBkZWZp bmUgYSBmZWF0dXJlIG5vZGUgZGF0YSBzdHJ1Y3R1cmUsCidzdHJ1Y3QgZmVhdF9ub2RlJywgdG8g bWFuYWdlIGZlYXR1cmUncyBzcGVjaWZpYyBIVyBpbmZvLCBhbmQgYW4gYXJyYXkgb2YgYWxsCkNP UyByZWdpc3RlcnMgdmFsdWVzIG9mIHRoaXMgZmVhdHVyZS4KClRvIG1hbmFnZSBmZWF0dXJlIHBy b3BlcnRpZXMsIHdlIG5lZWQgZGVmaW5lIGEgZmVhdHVyZSBwcm9wZXJ0eSBkYXRhIHN0cnVjdHVy ZSwKJ3N0cnVjdCBmZWF0X3Byb3BzJywgdG8gbWFuYWdlIGNvbW1vbiBwcm9wZXJ0aWVzIChjYWxs YmFjayBmdW5jdGlvbnMgLSBhbGwKZmVhdHVyZSdzIHNwZWNpZmljIGJlaGF2aW9ycyBhcmUgZW5j YXBzdWxhdGVkIGludG8gdGhlc2UgY2FsbGJhY2sgZnVuY3Rpb25zLAphbmQgZ2VuZXJpYyB2YWx1 ZXMgLSBlLmcuIHRoZSBjb3NfbWF4KSwgdGhlIGZlYXR1cmUgaW5kZXBlbmRlbnQgdmFsdWVzLgoK Q0RQIGlzIGEgc3BlY2lhbCBmZWF0dXJlIHdoaWNoIHVzZXMgdHdvIGVudHJpZXMgb2YgdGhlIGFy cmF5CmZvciBvbmUgQ09TIElELiBTbywgdGhlIG51bWJlciBvZiBDRFAgQ09TIHJlZ2lzdGVycyBp cyB0aGUgaGFsZiBvZiBMMwpDQVQuIEUuZy4gTDMgQ0FUIGhhcyAxNiBDT1MgcmVnaXN0ZXJzLCB0 aGVuIENEUCBoYXMgOCBDT1MgcmVnaXN0ZXJzIGlmCml0IGlzIGVuYWJsZWQuIENEUCB1c2VzIHRo ZSBDT1MgcmVnaXN0ZXJzIGFycmF5IGFzIGJlbG93LgoKICAgICAgICAgICAgICAgICAgICAgICAg ICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0t LS0tLSsKQ0RQIGNvc19yZWdfdmFsW10gaW5kZXg6IHwgICAgIDAgICAgIHwgICAgIDEgICAgIHwg ICAgIDIgICAgIHwgICAgIDMgICAgIHwgICAgLi4uICAgIHwKICAgICAgICAgICAgICAgICAgICAg ICAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tLSsKICAgICAgICAgICAgICAgICAgdmFsdWU6IHwgY29zMCBjb2RlIHwgY29zMCBkYXRh IHwgY29zMSBjb2RlIHwgY29zMSBkYXRhIHwgICAgLi4uICAgIHwKICAgICAgICAgICAgICAgICAg ICAgICAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tLSsKCkZvciBtb3JlIGRldGFpbHMsIHBsZWFzZSByZWZlciBTRE0gYW5kIHBhdGNo ZXMgdG8gaW1wbGVtZW50ICdnZXQgdmFsdWUnIGFuZAonc2V0IHZhbHVlJy4KClRoaXMgcGF0Y2gg YWxzbyBpbXBsZW1lbnRzIHRoZSBDUFUgaW5pdCBhbmQgZnJlZSBmbG93IGluY2x1ZGluZyBMMyBD QVQKaW5pdGlhbGl6YXRpb24gYW5kIHNvbWUgcmVzb3VyY2VzIGZyZWUuIEl0IGluY2x1ZGVzIGJl bG93IGZsb3dzOgoxLiBwcmVzbXAgaW5pdDoKICAgIC0gcGFyc2UgY29tbWFuZCBsaW5lIHBhcmFt ZXRlci4KICAgIC0gYWxsb2NhdGUgc29ja2V0IGluZm8gZm9yIGV2ZXJ5IHNvY2tldC4KICAgIC0g YWxsb2NhdGUgZmVhdHVyZSByZXNvdXJjZS4KICAgIC0gaW5pdGlhbGl6ZSBzb2NrZXQgaW5mbywg Z2V0IGZlYXR1cmUgaW5mbyBhbmQgYWRkIGZlYXR1cmUgaW50byBmZWF0dXJlCiAgICAgIGFycmF5 IHBlciBjcHVpZCByZXN1bHQuCiAgICAtIGZyZWUgcmVzb3VyY2VzIGFsbG9jYXRlZCBpZiBlcnJv ciBoYXBwZW5zLgogICAgLSByZWdpc3RlciBjcHUgbm90aWZpZXIgdG8gaGFuZGxlIGNwdSBldmVu dHMuCjIuIGNwdSBub3RpZmllcjoKICAgIC0gaGFuZGxlIGNwdSBvbmxpbmUgZXZlbnRzLCBpZiBp bml0aWFsaXphdGlvbiB3b3JrIGhhcyBiZWVuIGRvbmUgYmVmb3JlLAogICAgICBkbyBub3RoaW5n LgogICAgLSBoYW5kbGUgY3B1IG9mZmxpbmUgZXZlbnRzLCBpZiBpdCBpcyB0aGUgbGFzdCBjcHUg b2ZmbGluZSwgZnJlZSBzb21lCiAgICAgIHNvY2tldCByZXNvdXJjZXMuCgpTaWduZWQtb2ZmLWJ5 OiBZaSBTdW4gPHlpLnkuc3VuQGxpbnV4LmludGVsLmNvbT4KUmV2aWV3ZWQtYnk6IEphbiBCZXVs aWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KLS0tCnYxNDoKICAgIC0gcmVuYW1lICdmZWF0X2wzX2Nh dCcgdG8gJ2ZlYXRfbDMnIHRvIHJlcHJlc2VudCBmb3IgZWl0aGVyIEwzIENBVCBvciBDRFAuCiAg ICAgIEJlY2F1c2Ugb25seSBvbmUgb2YgdGhlbSBjYW4gZXhpc3QgYXQgc2FtZSB0aW1lLgogICAg ICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSBwdXQgYWRkcmVzcyBvZiAnZmVhdF9s MycgYmFjayBpbnRvIGl0IGlmICdjYXRfaW5pdF9mZWF0dXJlKCknIGZhaWxzIHRvCiAgICAgIGF2 b2lkIGxlYWthZ2UuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCnYxMzoKICAgIC0g bW9kaWZ5IG1hY3JvcyBhbmQgZW51bSBpZGVudGlmaWVycyBuYW1lcyB0byBiZSBjb25zaXN0ZW50 LgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSBjb3JyZWN0IGNvbW1lbnQu CiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIG1vdmUgJ2Nvc19yZWYnIGFy cmF5IGNsZWFybmluZyBpbnRvIHRoaXMgcGF0Y2guCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJl dWxpY2gpCiAgICAtIGFkZCAnYWx0X3R5cGUnIGluICdmZWF0X3Byb3BzJyB0byBoYW5kbGUgc29t ZSBzcGVjaWFsIG9wZXJhdGlvbiBpbiB0aGUKICAgICAgZnV0dXJlLgogICAgICAoc3VnZ2VzdGVk IGJ5IEphbiBCZXVsaWNoKQogICAgLSBtb3ZlICdmZWF0X2luaXQnIG91dCBmcm9tIHRoZSBzdGF0 ZW1lbnQuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIGNoYW5nZSAnY2F0 X2luaXRfZmVhdCcgdHlwZSB0byAnaW50JyB0byByZXR1cm4gZXJyb3IgYmFjayBpZiBzb21ldGhp bmcKICAgICAgd3JvbmcuIFRoZW4sIHdlIHdpbGwgbm90IGFkZCBmZWF0X3Byb3BzIGludG8gbGlz dC4KdjEyOgogICAgLSBhZGQgY29tbWVudCBmb3IgJ2ZlYXRfaW5pdCcuCiAgICAgIChzdWdnZXN0 ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIHVzZSAnQVJSQVlfU0laRSgpJyB0byBjaGVjayBhcnJh eSBib3VuZGFyeS4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gdXNlICdY RU5MT0dfV0FSTklORycgZm9yIGVycm9yIG1lc3NhZ2UuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFu IEJldWxpY2gpCiAgICAtIG1vdmUgJ3R5cGVbXScgYXNzaWdubWVudCBmb3IgZmVhdF9wcm9wcyBv YmplY3QgaW50byBpdHMgZGVsY2FyYXRpb24KICAgICAgdG8gbWFrZSB0aGUgb2JqZWN0IGJlICdj b25zdCcuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIHJlbW92ZSAiTDMi IGFuZCAiTDIiIGluZGljYXRpb24gaW4gcHJpbnRrLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBC ZXVsaWNoKQogICAgLSBtb3ZlIHBvc2l0aW9uIG9mICdyZWZfbG9jaycgZGVmaW5pdGlvbi4KICAg IC0gcmVzdG9yZSBtYXNrKDApIE1TUiB0byBkZWZhdWx0IHZhbHVlLgogICAgICAoc3VnZ2VzdGVk IGJ5IEphbiBCZXVsaWNoKQp2MTE6CiAgICAtIGhhbmRsZSAnZmVhdF9pbml0Jy4KICAgIC0gbWVy Z2UgbWFpbiBkYXRhIHN0cnVjdHVyZXMgaW1wbGVtZW50YXRpb24gaW50byBDUFUgaW5pdC9mcmVl IHBhdGNoLAogICAgICBpbmNsdWRpbmcgY29tbWl0IG1lc3NhZ2VzIGFuZCBjaGFuZ2UgaGlzdG9y eS4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gcmVtb3ZlIE1TUiByZXN0 b3JlIGFjdGlvbiB3aGljaCBpcyB1bm5lY2Vzc2FyeS4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4g QmV1bGljaCkKICAgIC0gbW92ZSAndHlwZVtdJyBkZWNsYXJhdGlvbiBpbnRvIHRoaXMgcGF0Y2gu CiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIG1vZGlmeSBjb21tZW50Lgog ICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQp2MTA6CiAgICAtIHJlbW92ZSBpbml0aWFs aXphdGlvbiBmb3IgJ1BTUl9TT0NLRVRfTDNfQ0FUJy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4g QmV1bGljaCkKICAgIC0gcmVuYW1lICdmZWF0X29wcycgdG8gJ2ZlYXRfcHJvcHMnLgogICAgICAo c3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSBtb3ZlICdjYm1fbGVuJyB0byAnZmVhdF9w cm9wcycgYmVjYXVzZSBpdCBpcyBmZWF0dXJlIGluZGVwZW5kZW50IHNvIGZhci4KICAgICAgKHN1 Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gbW92ZSAnY29zX21heCcgdG8gJ2ZlYXRfcHJv cHMnIGJlY2F1c2UgaXQgaXMgZmVhdHVyZSBpbmRlcGVuZGVudC4KICAgICAgKHN1Z2dlc3RlZCBi eSBKYW4gQmV1bGljaCkKICAgIC0gbW92ZSAnY29zX251bScgdG8gJ2ZlYXRfcHJvcHMnIGJlY2F1 c2UgaXQgaXMgZmVhdHVyZSBpbmRlcGVuZGVudC4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1 bGljaCkKICAgIC0gcmVtb3ZlIHVuaW9uICdpbmZvJyBhbmQgc3RydWN0ICdwc3JfY2F0X2h3X2lu Zm8nLgogICAgLSByZW1vdmUgJ2dldF9jb3NfbWF4JyBmcm9tICdmZWF0X3Byb3BzJy4KICAgICAg KHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gcmVtb3ZlICdmZWF0X21hc2snIGZyb20g J3Bzcl9zb2NrZXRfaW5mbycgYmVjYXVzZSB3ZSBjYW4gdXNlICdmZWF0dXJlc1tdJwogICAgICB0 byBjaGVjayBpZiBhbnkgZmVhdHVyZSBpcyBpbml0aWFsaXplZC4KICAgICAgKHN1Z2dlc3RlZCBi eSBKYW4gQmV1bGljaCkKICAgIC0gbW92ZSAncmVmX2xvY2snIGFib3ZlICdjb3NfcmVmJy4KICAg ICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gYWRqdXN0IGNvbW1lbnRzIGFuZCBj b21taXQgbWVzc2FnZSBhY2NvcmRpbmcgdG8gYWJvdmUgY2hhbmdlcy4KICAgIC0gcmVtb3ZlICdh c20veDg2X2VtdWxhdGUuaCcgaW5jbHVzaW9uIGFzIGl0IGhhcyBiZWVuIGluZGlyZWN0bHkgaW5j bHVkZWQuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIHJlbW92ZSAnQ0FU X0NPU19OVU0nIGFzIGl0IGlzIG9ubHkgdXNlZCBvbmNlLgogICAgICAoc3VnZ2VzdGVkIGJ5IEph biBCZXVsaWNoKQogICAgLSByZW1vdmUgJ2ZlYXRfbWFzaycuCiAgICAgIChzdWdnZXN0ZWQgYnkg SmFuIEJldWxpY2gpCiAgICAtIGNoYW5nZXMgYWJvdXQgJ2ZlYXRfcHJvcHMnLgogICAgICAoc3Vn Z2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSByZW1vdmUgJ2dldF9jb3NfbWF4JyBob29rIGRl Y2xhcmF0aW9uLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSBtb2RpZnkg J2NhdF9kZWZhdWx0X3ZhbCcgaW1wbGVtZW50YXRpb24uCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFu IEJldWxpY2gpCiAgICAtIG1vZGlmeSAncHNyX2FsbG9jX2ZlYXRfZW5hYmxlZCcgaW1wbGVtZW50 YXRpb24gdG8gbWFrZSBpdCBzaW1wbGUuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gp CiAgICAtIHJlbmFtZSAnZnJlZV9mZWF0dXJlJyB0byAnZnJlZV9zb2NrZXRfcmVzb3VyY2VzJyBi ZWNhdXNlIGl0IGlzIGV4ZWN1dGVkCiAgICAgIHdoZW4gc29ja2V0IGlzIG9mZmxpbmUuIEl0IG5l ZWRzIGZyZWUgcmVzb3VyY2VzIHJlbGF0ZWQgdG8gdGhlIHNvY2tldC4KICAgICAgKHN1Z2dlc3Rl ZCBieSBKYW4gQmV1bGljaCkKICAgIC0gZGVmaW5lICdmZWF0X2luaXRfZG9uZScgdG8gaXRlcmF0 ZSBmZWF0dXJlIGFycmF5IHRvIGNoZWNrIGlmIGFueSBmZWF0dXJlCiAgICAgIGhhcyBiZWVuIGlu aXRpYWxpemVkLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSBpbnB1dCAn c3RydWN0IGNwdWlkX2xlYWYnIHBvaW50ZXIgaW50byAnY2F0X2luaXRfZmVhdHVyZScgdG8gYXZv aWQgbWVtb3J5CiAgICAgIGNvcHkuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAg ICAtIG1vZGlmeSAnY2F0X2luaXRfZmVhdHVyZScgdG8gdXNlIHN3aXRjaCBhbmQgdGhpbmdzIHJl bGF0ZWQgdG8gYWJvdmUKICAgICAgY2hhbmdlcy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1 bGljaCkKICAgIC0gYWRkIGFuIGluZGVudGF0aW9uIGZvciBsYWJlbC4KICAgICAgKHN1Z2dlc3Rl ZCBieSBKYW4gQmV1bGljaCkKdjk6CiAgICAtIHJlcGxhY2UgZmVhdHVyZSBsaXN0IHRvIGEgZmVh dHVyZSBwb2ludGVyIGFycmF5LgogICAgICAoc3VnZ2VzdGVkIGJ5IFJvZ2VyIFBhdSkKICAgIC0g YWRkICdQU1JfU09DS0VUX01BWF9GRUFUJyBpbiAnZW51bSBwc3JfZmVhdF90eXBlJyB0byBrbm93 IGZlYXR1cmVzCiAgICAgIGFjY291bnQuCiAgICAgIChzdWdnZXN0ZWQgYnkgUm9nZXIgUGF1KQog ICAgLSBtb3ZlICdmZWF0X29wcycgZGVjbGFyYXRpb24gaW50byAnZmVhdF9ub2RlJyBzdHJ1Y3R1 cmUuCiAgICAgIChzdWdnZXN0ZWQgYnkgUm9nZXIgUGF1KQogICAgLSBkaXJlY3RseSB1c2UgdW5p bm9uIGZvciBmZWF0dXJlIEhXIGluZm8gYW5kIG1vdmUgaXRzIGRlY2xhcmF0aW9uIGludG8KICAg ICAgJ2ZlYXRfbm9kZScgc3RydWN0dXJlLgogICAgICAoc3VnZ2VzdGVkIGJ5IFJvZ2VyIFBhdSkK ICAgIC0gcmVtb3ZlICdlbnVtIHBzcl9mZWF0X3R5cGUgZmVhdHVyZScgZGVjbGFyZWQgaW4gJ2Zl YXRfb3BzJyBiZWNhdXNlIGl0IGlzCiAgICAgIG5vdCB1c2VmdWwgYWZ0ZXIgdXNpbmcgZmVhdHVy ZSBwb2ludGVyIGFycmF5LgogICAgICAoc3VnZ2VzdGVkIGJ5IFJvZ2VyIFBhdSkKICAgIC0gcmVu YW1lICdsM19jYXRfaW5mbycgdG8gJ2NhdF9pbmZvJyB0byBiZSB1c2VkIGJ5IGFsbCBDQVQvQ0RQ IGZlYXR1cmVzLgogICAgLSByZW1vdmUgJ25yX2ZlYXQnIHdoaWNoIGlzIG9ubHkgZm9yIGEgcmVj b3JkLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSBhZGQgJ2Nvc19udW0n IHRvIHJlY29yZCBob3cgbWFueSBDT1MgcmVnaXN0ZXJzIGFyZSB1c2VkIGJ5IGEgZmVhdHVyZSBp bgogICAgICBvbmUgdGltZSBhY2Nlc3MuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gp CiAgICAtIHJlcGxhY2UgJ3VpbnQ2NF90JyB0byAndWludDMyX3QnIGZvciBjYm0gdmFsdWUgYmVj YXVzZSBTRE0gc3BlY2lmaWVzIHRoZQogICAgICBtYXggMzIgYml0cyBmb3IgaXQuCiAgICAgIChz dWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIGFkZCBjb21taXQgbWVzc2FnZSB0byBleHBs YWluIHRoZSBmbG93cy4KICAgIC0gaGFuZGxlIGNwdSBvZmZsaW5lIGFuZCBvbmxpbmUgYWdhaW4g Y2FzZSB0byByZWFkIE1TUnMgcmVnaXN0ZXJzIHZhbHVlcwogICAgICBiYWNrIGFuZCBzYXZlIHRo ZW0gaW50byBjb3MgYXJyYXkgdG8gbWFrZSB1c2VyIGNhbiBnZXQgcmVhbCBkYXRhLgogICAgLSBj cmVhdGUgYSBuZXcgcGF0Y2ggYWJvdXQgbW92aW5nICdjcHVpZF9jb3VudF9sZWFmJy4KICAgICAg KHN1Z2dlc3RlZCBieSBXZWkgTGl1KQogICAgLSBtb2RpZnkgY29tbWVudCB0byBleHBsYWluIHdo eSBub3QgZnJlZSBzb21lIHJlc291cmNlIGluICdmcmVlX2ZlYXR1cmUnLgogICAgICAoc3VnZ2Vz dGVkIGJ5IFdlaSBMaXUpCiAgICAtIGltcGxlbWVudCAncHNyX2FsbG9jX2ZlYXRfZW5hYmxlZCcg dG8gY2hlY2sgaWYgYWxsb2NhdGlvbiBmZWF0dXJlIGlzCiAgICAgIGVuYWJsZWQgaW4gY21kbGlu ZSBhbmQgc29tZSBpbml0aWFsaXphdGlvbiB3b3JrIGRvbmUuCiAgICAgIChzdWdnZXN0ZWQgYnkg V2VpIExpdSkKICAgIC0gaW1wbGVtZW50ICdjYXRfZGVmYXVsdF92YWwnIHRvIHNldCBkZWZhdWx0 IHZhbHVlIGZvciBDQVQgZmVhdHVyZXMuCiAgICAgIChzdWdnZXN0ZWQgYnkgV2VpIExpdSkKICAg IC0gcmVwbGFjZSBmZWF0dXJlIGxpc3QgaGFuZGxpbmcgdG8gZmVhdHVyZSBhcnJheSBoYW5kbGlu Zy4KICAgICAgKHN1Z2dlc3RlZCBieSBSb2dlciBQYXUpCiAgICAtIGltcGxlbWVudCBhIGNvbW1v biAnY2F0X2luaXRfZmVhdHVyZScgdG8gcmVwbGFjZSBMMyBDQVQvTDIgQ0FUIHNwZWNpZmljCiAg ICAgIGluaXQgZnVuY3Rpb25zLgogICAgICAoc3VnZ2VzdGVkIGJ5IFJvZ2VyIFBhdSkKICAgIC0g bW9kaWZ5IGNvbW1lbnRzIGZvciBnbG9iYWwgZmVhdHVyZSBub2RlLgogICAgICAoc3VnZ2VzdGVk IGJ5IEphbiBCZXVsaWNoKQogICAgLSByZW1vdmUgdW5uZWNlc3NhcnkgY29tbWVudHMuCiAgICAg IChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIHJlbW92ZSB1bm5lY2Vzc2FyeSAnZWxz ZScuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIHJlbW92ZSAnbnJfZmVh dCcuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIG1vZGlmeSBwYXRjaCB0 aXRsZSB0byBpbmRpY2F0ZSAnTDMgQ0FUJy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGlj aCkKICAgIC0gY2hlY2sgZ2xvYmFsIGZsYWcgd2l0aCBib290IGNwdSBvcGVyYXRpb25zLgogICAg ICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSByZW1vdmUgJ2NwdV9pbml0X3dvcmsn IGFuZCBtb3ZlIGNvZGVzIGludG8gJ3Bzcl9jcHVfaW5pdCcuCiAgICAgIChzdWdnZXN0ZWQgYnkg SmFuIEJldWxpY2gpCiAgICAtIHJlbW92ZSAnY3B1X2Zpbmlfd29yaycgYW5kIG1vdmUgY29kZXMg aW50byAncHNyX2NwdV9maW5pJy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAg IC0gYXNzaWduIHZhbHVlIGZvciAnY29zX251bScuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJl dWxpY2gpCiAgICAtIGNoYW5nZSBhYm91dCAndWludDY0X3QnIHRvICd1aW50MzJfdCcuCiAgICAg IChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCnY4OgogICAgLSBmaXggZm9ybWF0IGlzc3VlLgog ICAgICAoc3VnZ2VzdGVkIGJ5IEtvbnJhZCBSemVzenV0ZWsgV2lsaykKICAgIC0gYWRkIGNvbW1l bnRzIHRvIGV4cGxhaW4gd2h5IHdlIGNhcmUgYWJvdXQgY3B1bWFza19lbXB0eSB3aGVuIHRoZSBs YXN0CiAgICAgIGNwdSBvbiBzb2NrZXQgaXMgb2ZmbGluZS4KICAgICAgKHN1Z2dlc3RlZCBieSBL b25yYWQgUnplc3p1dGVrIFdpbGspCnY3OgogICAgLSBzb3J0IGluY2x1c2lvbiBmaWxlcyBwb3Np dGlvbi4KICAgICAgKHN1Z2dlc3RlZCBieSBXZWkgTGl1KQogICAgLSBpbml0aWFsaXplIHN0cnVj dHVyZSBvYmplY3RzIGZvciBhdm9pZGluZyBzdXJwcmlzZS4KICAgICAgKHN1Z2dlc3RlZCBieSBL b25yYWQgUnplc3p1dGVrIFdpbGspCiAgICAtIGZpeCB0eXBvLgogICAgICAoc3VnZ2VzdGVkIGJ5 IEtvbnJhZCBSemVzenV0ZWsgV2lsaykKICAgIC0gZml4IGEgbG9naWNhbCBtaXN0YWtlIHdoZW4g aGFuZGxpbmcgdGhlIGxhc3QgY3B1IG9mZmxpbmUgZXZlbnQuCiAgICAgIChzdWdnZXN0ZWQgYnkg S29ucmFkIFJ6ZXN6dXRlayBXaWxrKQp2NjoKICAgIC0gbWFrZSBjb21taXQgbWVzc2FnZSBiZSBj bGVhcmVyLgogICAgICAoc3VnZ2VzdGVkIGJ5IEtvbnJhZCBSemVzenV0ZWsgV2lsaykKICAgIC0g Zml4IHdvcmRpbmdzLgogICAgICAoc3VnZ2VzdGVkIGJ5IEtvbnJhZCBSemVzenV0ZWsgV2lsaykK ICAgIC0gYWRkIGNvbW1lbnRzIHRvIGV4cGxhaW4gcmVsYXRpb25zaGlwIGJldHdlZW4gJ2ZlYXRf bWFzaycgYW5kCiAgICAgICdlbnVtIHBzcl9mZWF0X3R5cGUnLgogICAgICAoc3VnZ2VzdGVkIGJ5 IEtvbnJhZCBSemVzenV0ZWsgV2lsaykKICAgIC0gdXNlICdzdHJ1Y3QgY3B1aWRfbGVhZicgaW50 cm9kdWNlZCBpbiBBbmRyZXcncyBwYXRjaC4KICAgICAgKHN1Z2dlc3RlZCBieSBLb25yYWQgUnpl c3p1dGVrIFdpbGspCiAgICAtIGFkZCBjb21tZW50cyBhYm91dCBjcHVfYWRkX3JlbW92ZV9sb2Nr LgogICAgICAoc3VnZ2VzdGVkIGJ5IEtvbnJhZCBSemVzenV0ZWsgV2lsaykKICAgIC0gY2hhbmdl ICdjbGVhcl9iaXQnIHRvICdfX2NsZWFyX2JpdCcuCiAgICAgIChzdWdnZXN0ZWQgYnkgS29ucmFk IFJ6ZXN6dXRlayBXaWxrKQogICAgLSBhZGQgJ0FTU0VSVCcgY2hlY2sgd2hlbiBzZXR0aW5nICdm ZWF0X21hc2snLgogICAgICAoc3VnZ2VzdGVkIGJ5IEtvbnJhZCBSemVzenV0ZWsgV2lsaykKICAg IC0gYWRqdXN0ICdwcmludGsnIHBvc2l0aW9uIHRvIGF2b2lkIG9kZCBzcGFjaW5nLgogICAgICAo c3VnZ2VzdGVkIGJ5IEtvbnJhZCBSemVzenV0ZWsgV2lsaykKICAgIC0gYWRkIGNvbW1lbnQgdG8g ZXhwbGFpbiB1c2FnZSBvZiAnZmVhdF9sM19jYXQnLgogICAgICAoc3VnZ2VzdGVkIGJ5IEtvbnJh ZCBSemVzenV0ZWsgV2lsaykKICAgIC0gZml4IHdvcmRpbmcuCiAgICAgIChzdWdnZXN0ZWQgYnkg S29ucmFkIFJ6ZXN6dXRlayBXaWxrKQogICAgLSBtb3ZlICdjcHVpZF9jb3VudF9sZWFmJyBoZWxw ZXIgZnVuY3Rpb24gdG8gJ2FzbS14ODYvcHJvY2Vzc29yLmgnLgogICAgICBJdCBjYW5ub3QgYmUg bW92ZWQgdG8gJ2NwdWlkLmgnIHdoaWNoIGNhdXNlcyBjb21waWxhdGlvbiBlcnJvciBiZWNhdXNl CiAgICAgIG9mIGhlYWRlciBmaWxlIGxvb3AgcmVmZXJlbmNlLgogICAgICAoc3VnZ2VzdGVkIGJ5 IEFuZHJldyBDb29wZXIpCnY1OgogICAgLSByZW1vdmUgc2VjdGlvbiBudW1iZXIuCiAgICAgIChz dWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIHJlbW92ZSBkb3VibGUgYmxhbmsuCiAgICAg IChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIGFkZCBjb21tZW50IHRvIGV4cGxhaW4g dGhlIHJlYXNvbiB0byBkZWZpbmUgJ2ZlYXRfbDNfY2F0Jy4KICAgICAgKHN1Z2dlc3RlZCBieSBK YW4gQmV1bGljaCkKICAgIC0gdXNlICdsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUnLgogICAgICAo c3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSByZW1vdmUgY29kZXMgdG8gZnJlZSAnZmVh dF9sM19jYXQnIGluICdmcmVlX2ZlYXR1cmUnIHRvIGF2b2lkIHRoZSBuZWVkCiAgICAgIGZvciBh biBhbGxvY2F0aW9uIHRoZSBuZXh0IHRpbWUgYSBDUFUgY29tZXMgb25saW5lLgogICAgICAoc3Vn Z2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSBkZWZpbmUgJ3N0cnVjdCBjcHVpZF9sZWFmX3Jl Z3MnIHRvIGVuY2Fwc3VsYXRlIGVheH5lZHguCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxp Y2gpCiAgICAtIHByaW50IGZlYXR1cmUgaW5mbyBvbiBhIHNvY2tldCBvbmx5IHdoZW4gJ29wdF9j cHVfaW5mbycgaXMgdHJ1ZS4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0g ZGVjbGFyZSBnbG9iYWwgdmFyaWFibGUgJ2wzX2NhdF9vcHMnIHRvICdzdGF0aWMgY29uc3QnLgog ICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSB1c2UgJ2N1cnJlbnRfY3B1X2Rh dGEnLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSByZW5hbWUgJ2ZlYXRf dG1wJyB0byAnZmVhdCcuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIGNs ZWFyIFBRRSBmZWF0dXJlIGJpdCB3aGVuIHRoZSBtYXhpbXVtIENQVUlEIGxldmVsIGlzIHRvbyBs b3cuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIGRpcmVjdGx5IGNhbGwg J2wzX2NhdF9pbml0X2ZlYXR1cmUnLiBObyBuZWVkIHRvIG1ha2UgaXQgYSBjYWxsYmFjawogICAg ICBmdW5jdGlvbi4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gcmVtb3Zl IGxvY2FsIHZhcmlhYmxlICdpbmZvJy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkK ICAgIC0gbW92ZSAnSU5JVF9MSVNUX0hFQUQnIGludG8gJ2NwdV9pbml0X3dvcmsnIHRvIGJlIHRv Z2V0aGVyIHdpdGgKICAgICAgc3Bpbl9sb2NrX2luaXQoKS4KICAgICAgKHN1Z2dlc3RlZCBieSBK YW4gQmV1bGljaCkKICAgIC0gcmVtb3ZlICdjcHVfcHJlcGFyZV93b3JrJyBhbmQgbW92ZSBpdHMg Y29udGVudCBpbnRvICdwc3JfY3B1X3ByZXBhcmUnLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBC ZXVsaWNoKQp2NDoKICAgIC0gY3JlYXRlIHRoaXMgcGF0Y2ggYmVjYXVzZSBvZiByZW1vdmluZyBh bGwgb2xkIENBVC9DRFAgY29kZXMgdG8gbWFrZQogICAgICBpbXBsZW1lbnRhdGlvbiBiZSBtb3Jl IGVhc2lseSB1bmRlcnN0b29kLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQotLS0K IHhlbi9hcmNoL3g4Ni9wc3IuYyAgICAgICAgfCAyOTQgKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrLQogeGVuL2luY2x1ZGUvYXNtLXg4Ni9wc3IuaCB8ICAgMSAr CiAyIGZpbGVzIGNoYW5nZWQsIDI4OSBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9wc3IuYyBiL3hlbi9hcmNoL3g4Ni9wc3IuYwppbmRleCA5 NmE4NTg5Li4zOWQ4NTgxIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvcHNyLmMKKysrIGIveGVu L2FyY2gveDg2L3Bzci5jCkBAIC0xMywxNiArMTMsMTE4IEBACiAgKiBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y CiAgKiBtb3JlIGRldGFpbHMuCiAgKi8KLSNpbmNsdWRlIDx4ZW4vaW5pdC5oPgogI2luY2x1ZGUg PHhlbi9jcHUuaD4KICNpbmNsdWRlIDx4ZW4vZXJyLmg+CisjaW5jbHVkZSA8eGVuL2luaXQuaD4K ICNpbmNsdWRlIDx4ZW4vc2NoZWQuaD4KICNpbmNsdWRlIDxhc20vcHNyLmg+CiAKKy8qCisgKiBU ZXJtaW5vbG9neToKKyAqIC0gQ0FUICAgICAgICAgQ2FjaGUgQWxsb2NhdGlvbiBUZWNobm9sb2d5 CisgKiAtIENCTSAgICAgICAgIENhcGFjaXR5IEJpdE1hc2tzCisgKiAtIENEUCAgICAgICAgIENv ZGUgYW5kIERhdGEgUHJpb3JpdGl6YXRpb24KKyAqIC0gQ01UICAgICAgICAgQ2FjaGUgTW9uaXRv cmluZyBUZWNobm9sb2d5CisgKiAtIENPUy9DTE9TICAgIENsYXNzIG9mIFNlcnZpY2UuIEFsc28g bWVhbiBDT1MgcmVnaXN0ZXJzLgorICogLSBDT1NfTUFYICAgICBNYXggbnVtYmVyIG9mIENPUyBm b3IgdGhlIGZlYXR1cmUgKG1pbnVzIDEpCisgKiAtIE1TUnMgICAgICAgIE1hY2hpbmUgU3BlY2lm aWMgUmVnaXN0ZXJzCisgKiAtIFBTUiAgICAgICAgIEludGVsIFBsYXRmb3JtIFNoYXJlZCBSZXNv dXJjZQorICovCisKICNkZWZpbmUgUFNSX0NNVCAgICAgICAgKDE8PDApCiAjZGVmaW5lIFBTUl9D QVQgICAgICAgICgxPDwxKQogI2RlZmluZSBQU1JfQ0RQICAgICAgICAoMTw8MikKIAorI2RlZmlu ZSBDQVRfQ0JNX0xFTl9NQVNLIDB4MWYKKyNkZWZpbmUgQ0FUX0NPU19NQVhfTUFTSyAweGZmZmYK KworLyoKKyAqIFBlciBTRE0gY2hhcHRlciAnQ2FjaGUgQWxsb2NhdGlvbiBUZWNobm9sb2d5OiBD YWNoZSBNYXNrIENvbmZpZ3VyYXRpb24nLAorICogdGhlIE1TUnMgcmFuZ2luZyBmcm9tIDBDOTBI IHRocm91Z2ggMEQwRkggKGluY2x1c2l2ZSksIGVuYWJsZXMgc3VwcG9ydCBmb3IKKyAqIHVwIHRv IDEyOCBMMyBDQVQgQ2xhc3NlcyBvZiBTZXJ2aWNlLiBUaGUgQ09TX0lEPVswLDEyN10uCisgKgor ICogVGhlIE1TUnMgcmFuZ2luZyBmcm9tIDBEMTBIIHRocm91Z2ggMEQ0RkggKGluY2x1c2l2ZSks IGVuYWJsZXMgc3VwcG9ydCBmb3IKKyAqIHVwIHRvIDY0IEwyIENBVCBDT1MuIFRoZSBDT1NfSUQ9 WzAsNjNdLgorICoKKyAqIFNvLCB0aGUgbWF4aW11bSBDT1MgcmVnaXN0ZXIgY291bnQgb2Ygb25l IGZlYXR1cmUgaXMgMTI4LgorICovCisjZGVmaW5lIE1BWF9DT1NfUkVHX0NOVCAgMTI4CisKKy8q CisgKiBFdmVyeSBQU1IgZmVhdHVyZSB1c2VzIHNvbWUgQ09TIHJlZ2lzdGVycyBmb3IgZWFjaCBD T1MgSUQsIGUuZy4gQ0RQIHVzZXMgMgorICogQ09TIHJlZ2lzdGVycyAoREFUQSBhbmQgQ09ERSkg Zm9yIG9uZSBDT1MgSUQsIGJ1dCBDQVQgdXNlcyAxIENPUyByZWdpc3Rlci4KKyAqIFdlIHVzZSBi ZWxvdyBtYWNybyBhcyB0aGUgbWF4IG51bWJlciBvZiBDT1MgcmVnaXN0ZXJzIHVzZWQgYnkgYWxs IGZlYXR1cmVzLgorICogU28gZmFyLCBpdCBpcyAyIHdoaWNoIG1lYW5zIENEUCdzIENPUyByZWdp c3RlcnMgbnVtYmVyLgorICovCisjZGVmaW5lIE1BWF9DT1NfTlVNIDIKKworZW51bSBwc3JfZmVh dF90eXBlIHsKKyAgICBGRUFUX1RZUEVfTDNfQ0FULAorICAgIEZFQVRfVFlQRV9OVU0sCit9Owor CisvKgorICogVGhpcyBzdHJ1Y3R1cmUgcmVwcmVzZW50cyBvbmUgZmVhdHVyZS4KKyAqIGNvc19t YXggICAgIC0gVGhlIG1heCBDT1MgcmVnaXN0ZXJzIG51bWJlciBnb3QgdGhyb3VnaCBDUFVJRC4K KyAqIGNibV9sZW4gICAgIC0gVGhlIGxlbmd0aCBvZiBDQk0gZ290IHRocm91Z2ggQ1BVSUQuCisg KiBjb3NfcmVnX3ZhbCAtIEFycmF5IHRvIHN0b3JlIHRoZSB2YWx1ZXMgb2YgQ09TIHJlZ2lzdGVy cy4gT25lIGVudHJ5IHN0b3JlcworICogICAgICAgICAgICAgICB0aGUgdmFsdWUgb2Ygb25lIENP UyByZWdpc3Rlci4KKyAqICAgICAgICAgICAgICAgRm9yIEwzIENBVCBhbmQgTDIgQ0FULCBvbmUg ZW50cnkgY29ycmVzcG9uZHMgdG8gb25lIENPU19JRC4KKyAqICAgICAgICAgICAgICAgRm9yIENE UCwgdHdvIGVudHJpZXMgY29ycmVzcG9uZCB0byBvbmUgQ09TX0lELiBFLmcuCisgKiAgICAgICAg ICAgICAgIENPU19JRD0wIGNvcnJlc3BvbmRzIHRvIGNvc19yZWdfdmFsWzBdIChEYXRhKSBhbmQK KyAqICAgICAgICAgICAgICAgY29zX3JlZ192YWxbMV0gKENvZGUpLgorICovCitzdHJ1Y3QgZmVh dF9ub2RlIHsKKyAgICAvKiBjb3NfbWF4IGFuZCBjYm1fbGVuIGFyZSBjb21tb24gdmFsdWVzIGZv ciBhbGwgZmVhdHVyZXMgc28gZmFyLiAqLworICAgIHVuc2lnbmVkIGludCBjb3NfbWF4OworICAg IHVuc2lnbmVkIGludCBjYm1fbGVuOworICAgIHVpbnQzMl90IGNvc19yZWdfdmFsW01BWF9DT1Nf UkVHX0NOVF07Cit9OworCisvKgorICogVGhpcyBzdHJ1Y3R1cmUgZGVmaW5lcyBmZWF0dXJlIHNw ZWNpZmljIHZhbHVlcywgZS5nLiBjb3NfbnVtLgorICoKKyAqIEFycmF5ICdmZWF0X3Byb3BzJyBp cyBkZWZpbmVkIHRvIHNhdmUgZXZlcnkgZmVhdHVyZSdzIHByb3BlcnRpZXMuIFdlIHVzZQorICog J2VudW0gcHNyX2ZlYXRfdHlwZScgYXMgaW5kZXguCisgKi8KK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg ZmVhdF9wcm9wcyB7CisgICAgLyoKKyAgICAgKiBjb3NfbnVtIC0gQ09TIHJlZ2lzdGVycyBudW1i ZXIgdGhhdCBmZWF0dXJlIHVzZXMgZm9yIG9uZSBDT1MgSUQuCisgICAgICogICAgICAgICAgIEl0 IGlzIGRlZmluZWQgaW4gU0RNLgorICAgICAqLworICAgIHVuc2lnbmVkIGludCBjb3NfbnVtOwor CisgICAgLyoKKyAgICAgKiBBbiBhcnJheSB0byBzYXZlIGFsbCAnZW51bSBjYm1fdHlwZScgdmFs dWVzIG9mIHRoZSBmZWF0dXJlLiBJdCBpcworICAgICAqIHVzZWQgd2l0aCBjb3NfbnVtIHRvZ2V0 aGVyIHRvIGdldC93cml0ZSBhIGZlYXR1cmUncyBDT1MgcmVnaXN0ZXJzCisgICAgICogdmFsdWVz IG9uZSBieSBvbmUuCisgICAgICovCisgICAgZW51bSBjYm1fdHlwZSB0eXBlW01BWF9DT1NfTlVN XTsKKworICAgIC8qCisgICAgICogYWx0X3R5cGUgaXMgJ2FsdGVybmF0aXZlIHR5cGUnLiBXaGVu IHRoaXMgJ2FsdF90eXBlJyBpcyBpbnB1dCwgdGhlCisgICAgICogZmVhdHVyZSBkb2VzIHNvbWUg c3BlY2lhbCBvcGVyYXRpb25zLgorICAgICAqLworICAgIGVudW0gY2JtX3R5cGUgYWx0X3R5cGU7 Cit9ICpmZWF0X3Byb3BzW0ZFQVRfVFlQRV9OVU1dOworCisvKgorICogUFNSIGZlYXR1cmVzIGFy ZSBtYW5hZ2VkIHBlciBzb2NrZXQuIEJlbG93IHN0cnVjdHVyZSBkZWZpbmVzIHRoZSBtZW1iZXJz CisgKiB1c2VkIHRvIG1hbmFnZSB0aGVzZSBmZWF0dXJlcy4KKyAqIGZlYXRfaW5pdCAtIEluZGlj YXRlIGlmIGZlYXR1cmVzIG9uIGEgc29ja2V0IGhhdmUgYmVlbiBpbml0aWFsaXplZC4KKyAqIGZl YXR1cmVzICAtIEEgZmVhdHVyZSBub2RlIGFycmF5IHVzZWQgdG8gbWFuYWdlIGFsbCBmZWF0dXJl cyBlbmFibGVkLgorICogcmVmX2xvY2sgIC0gQSBsb2NrIHRvIHByb3RlY3QgY29zX3JlZi4KKyAq IGNvc19yZWYgICAtIEEgcmVmZXJlbmNlIGNvdW50IGFycmF5IHRvIHJlY29yZCBob3cgbWFueSBk b21haW5zIGFyZSB1c2luZyB0aGUKKyAqICAgICAgICAgICAgIENPUyBJRC4gRXZlcnkgZW50cnkg b2YgY29zX3JlZiBjb3JyZXNwb25kcyB0byBvbmUgQ09TIElELgorICovCitzdHJ1Y3QgcHNyX3Nv Y2tldF9pbmZvIHsKKyAgICBib29sIGZlYXRfaW5pdDsKKyAgICAvKiBGZWF0dXJlIGFycmF5J3Mg aW5kZXggaXMgJ2VudW0gcHNyX2ZlYXRfdHlwZScgd2hpY2ggaXMgc2FtZSBhcyAncHJvcHMnICov CisgICAgc3RydWN0IGZlYXRfbm9kZSAqZmVhdHVyZXNbRkVBVF9UWVBFX05VTV07CisgICAgc3Bp bmxvY2tfdCByZWZfbG9jazsKKyAgICB1bnNpZ25lZCBpbnQgY29zX3JlZltNQVhfQ09TX1JFR19D TlRdOworfTsKKwogc3RydWN0IHBzcl9hc3NvYyB7CiAgICAgdWludDY0X3QgdmFsOwogICAgIHVp bnQ2NF90IGNvc19tYXNrOwpAQCAtMzAsMTEgKzEzMiwxMDUgQEAgc3RydWN0IHBzcl9hc3NvYyB7 CiAKIHN0cnVjdCBwc3JfY210ICpfX3JlYWRfbW9zdGx5IHBzcl9jbXQ7CiAKK3N0YXRpYyBzdHJ1 Y3QgcHNyX3NvY2tldF9pbmZvICpfX3JlYWRfbW9zdGx5IHNvY2tldF9pbmZvOworCiBzdGF0aWMg dW5zaWduZWQgaW50IG9wdF9wc3I7CiBzdGF0aWMgdW5zaWduZWQgaW50IF9faW5pdGRhdGEgb3B0 X3JtaWRfbWF4ID0gMjU1Oworc3RhdGljIHVuc2lnbmVkIGludCBfX3JlYWRfbW9zdGx5IG9wdF9j b3NfbWF4ID0gTUFYX0NPU19SRUdfQ05UOwogc3RhdGljIHVpbnQ2NF90IHJtaWRfbWFzazsKIHN0 YXRpYyBERUZJTkVfUEVSX0NQVShzdHJ1Y3QgcHNyX2Fzc29jLCBwc3JfYXNzb2MpOwogCisvKgor ICogRGVjbGFyZSBnbG9iYWwgZmVhdHVyZSBub2RlIGZvciBldmVyeSBmZWF0dXJlIHRvIGZhY2ls aXRhdGUgdGhlIGZlYXR1cmUKKyAqIGFycmF5IGNyZWF0aW9uLiBJdCBpcyB1c2VkIHRvIHRyYW5z aWVudGx5IHN0b3JlIGEgc3BhcmUgbm9kZS4KKyAqLworc3RhdGljIHN0cnVjdCBmZWF0X25vZGUg KmZlYXRfbDM7CisKKy8qIENvbW1vbiBmdW5jdGlvbnMgKi8KKyNkZWZpbmUgY2F0X2RlZmF1bHRf dmFsKGxlbikgKDB4ZmZmZmZmZmYgPj4gKDMyIC0gKGxlbikpKQorCisvKgorICogVXNlIHRoaXMg ZnVuY3Rpb24gdG8gY2hlY2sgaWYgYW55IGFsbG9jYXRpb24gZmVhdHVyZSBoYXMgYmVlbiBlbmFi bGVkCisgKiBpbiBjbWRsaW5lLgorICovCitzdGF0aWMgYm9vbCBwc3JfYWxsb2NfZmVhdF9lbmFi bGVkKHZvaWQpCit7CisgICAgcmV0dXJuICEhc29ja2V0X2luZm87Cit9CisKK3N0YXRpYyB2b2lk IGZyZWVfc29ja2V0X3Jlc291cmNlcyh1bnNpZ25lZCBpbnQgc29ja2V0KQoreworICAgIHVuc2ln bmVkIGludCBpOworICAgIHN0cnVjdCBwc3Jfc29ja2V0X2luZm8gKmluZm8gPSBzb2NrZXRfaW5m byArIHNvY2tldDsKKworICAgIGlmICggIWluZm8gKQorICAgICAgICByZXR1cm47CisKKyAgICAv KgorICAgICAqIEZyZWUgcmVzb3VyY2VzIG9mIGZlYXR1cmVzLiBUaGUgZ2xvYmFsIGZlYXR1cmUg b2JqZWN0LCBlLmcuIGZlYXRfbDMsCisgICAgICogbWF5IG5vdCBiZSBmcmVlZCBoZXJlIGlmIGl0 IGlzIG5vdCBhZGRlZCBpbnRvIGFycmF5LiBJdCBpcyBzaW1wbHkgYmVpbmcKKyAgICAgKiBrZXB0 IHVudGlsIHRoZSBuZXh0IENQVSBvbmxpbmUgYXR0ZW1wdC4KKyAgICAgKi8KKyAgICBmb3IgKCBp ID0gMDsgaSA8IEFSUkFZX1NJWkUoaW5mby0+ZmVhdHVyZXMpOyBpKysgKQorICAgIHsKKyAgICAg ICAgeGZyZWUoaW5mby0+ZmVhdHVyZXNbaV0pOworICAgICAgICBpbmZvLT5mZWF0dXJlc1tpXSA9 IE5VTEw7CisgICAgfQorCisgICAgaW5mby0+ZmVhdF9pbml0ID0gZmFsc2U7CisKKyAgICBtZW1z ZXQoaW5mby0+Y29zX3JlZiwgMCwgTUFYX0NPU19SRUdfQ05UICogc2l6ZW9mKHVuc2lnbmVkIGlu dCkpOworfQorCisvKiBDQVQgY29tbW9uIGZ1bmN0aW9ucyBpbXBsZW1lbnRhdGlvbi4gKi8KK3N0 YXRpYyBpbnQgY2F0X2luaXRfZmVhdHVyZShjb25zdCBzdHJ1Y3QgY3B1aWRfbGVhZiAqcmVncywK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZmVhdF9ub2RlICpmZWF0LAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBwc3Jfc29ja2V0X2luZm8gKmluZm8sCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBwc3JfZmVhdF90eXBlIHR5cGUpCit7Cisg ICAgLyogTm8gdmFsaWQgdmFsdWUgc28gZG8gbm90IGVuYWJsZSBmZWF0dXJlLiAqLworICAgIGlm ICggIXJlZ3MtPmEgfHwgIXJlZ3MtPmQgKQorICAgICAgICByZXR1cm4gLUVOT0VOVDsKKworICAg IGZlYXQtPmNibV9sZW4gPSAocmVncy0+YSAmIENBVF9DQk1fTEVOX01BU0spICsgMTsKKyAgICBm ZWF0LT5jb3NfbWF4ID0gbWluKG9wdF9jb3NfbWF4LCByZWdzLT5kICYgQ0FUX0NPU19NQVhfTUFT Syk7CisKKyAgICBzd2l0Y2ggKCB0eXBlICkKKyAgICB7CisgICAgY2FzZSBGRUFUX1RZUEVfTDNf Q0FUOgorICAgICAgICBpZiAoIGZlYXQtPmNvc19tYXggPCAxICkKKyAgICAgICAgICAgIHJldHVy biAtRU5PRU5UOworCisgICAgICAgIC8qIFdlIHJlc2VydmUgY29zPTAgYXMgZGVmYXVsdCBjYm0g KGFsbCBiaXRzIHdpdGhpbiBjYm1fbGVuIGFyZSAxKS4gKi8KKyAgICAgICAgZmVhdC0+Y29zX3Jl Z192YWxbMF0gPSBjYXRfZGVmYXVsdF92YWwoZmVhdC0+Y2JtX2xlbik7CisKKyAgICAgICAgd3Jt c3JsKE1TUl9JQTMyX1BTUl9MM19NQVNLKDApLCBjYXRfZGVmYXVsdF92YWwoZmVhdC0+Y2JtX2xl bikpOworCisgICAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIC1F Tk9FTlQ7CisgICAgfQorCisgICAgLyogQWRkIHRoaXMgZmVhdHVyZSBpbnRvIGFycmF5LiAqLwor ICAgIGluZm8tPmZlYXR1cmVzW3R5cGVdID0gZmVhdDsKKworICAgIGlmICggIW9wdF9jcHVfaW5m byApCisgICAgICAgIHJldHVybiAwOworCisgICAgcHJpbnRrKFhFTkxPR19JTkZPICJDQVQ6IGVu YWJsZWQgb24gc29ja2V0ICV1LCBjb3NfbWF4OiV1LCBjYm1fbGVuOiV1XG4iLAorICAgICAgICAg ICBjcHVfdG9fc29ja2V0KHNtcF9wcm9jZXNzb3JfaWQoKSksIGZlYXQtPmNvc19tYXgsIGZlYXQt PmNibV9sZW4pOworCisgICAgcmV0dXJuIDA7Cit9CisKKy8qIEwzIENBVCBwcm9wcyAqLworc3Rh dGljIGNvbnN0IHN0cnVjdCBmZWF0X3Byb3BzIGwzX2NhdF9wcm9wcyA9IHsKKyAgICAuY29zX251 bSA9IDEsCisgICAgLnR5cGVbMF0gPSBQU1JfQ0JNX1RZUEVfTDMsCisgICAgLmFsdF90eXBlID0g UFNSX0NCTV9UWVBFX1VOS05PV04sCit9OworCiBzdGF0aWMgdm9pZCBfX2luaXQgcGFyc2VfcHNy X2Jvb2woY2hhciAqcywgY2hhciAqdmFsdWUsIGNoYXIgKmZlYXR1cmUsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG1hc2spCiB7CkBAIC03NCw2ICsyNzAs OSBAQCBzdGF0aWMgdm9pZCBfX2luaXQgcGFyc2VfcHNyX3BhcmFtKGNoYXIgKnMpCiAgICAgICAg IGlmICggdmFsX3N0ciAmJiAhc3RyY21wKHMsICJybWlkX21heCIpICkKICAgICAgICAgICAgIG9w dF9ybWlkX21heCA9IHNpbXBsZV9zdHJ0b3VsKHZhbF9zdHIsIE5VTEwsIDApOwogCisgICAgICAg IGlmICggdmFsX3N0ciAmJiAhc3RyY21wKHMsICJjb3NfbWF4IikgKQorICAgICAgICAgICAgb3B0 X2Nvc19tYXggPSBzaW1wbGVfc3RydG91bCh2YWxfc3RyLCBOVUxMLCAwKTsKKwogICAgICAgICBz ID0gc3MgKyAxOwogICAgIH0gd2hpbGUgKCBzcyApOwogfQpAQCAtMjI5LDE5ICs0MjgsOTggQEAg dm9pZCBwc3JfZG9tYWluX2ZyZWUoc3RydWN0IGRvbWFpbiAqZCkKICAgICBwc3JfZnJlZV9ybWlk KGQpOwogfQogCi1zdGF0aWMgaW50IHBzcl9jcHVfcHJlcGFyZSh1bnNpZ25lZCBpbnQgY3B1KQor c3RhdGljIHZvaWQgX19pbml0IGluaXRfcHNyKHZvaWQpCiB7CisgICAgaWYgKCBvcHRfY29zX21h eCA8IDEgKQorICAgIHsKKyAgICAgICAgcHJpbnRrKFhFTkxPR19JTkZPICJDQVQ6IGRpc2FibGVk LCBjb3NfbWF4IGlzIHRvbyBzbWFsbFxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg ICBzb2NrZXRfaW5mbyA9IHh6YWxsb2NfYXJyYXkoc3RydWN0IHBzcl9zb2NrZXRfaW5mbywgbnJf c29ja2V0cyk7CisKKyAgICBpZiAoICFzb2NrZXRfaW5mbyApCisgICAgeworICAgICAgICBwcmlu dGsoWEVOTE9HX1dBUk5JTkcgIkZhaWxlZCB0byBhbGxvYyBzb2NrZXRfaW5mbyFcbiIpOworICAg ICAgICByZXR1cm47CisgICAgfQorfQorCitzdGF0aWMgdm9pZCBfX2luaXQgcHNyX2ZyZWUodm9p ZCkKK3sKKyAgICB4ZnJlZShzb2NrZXRfaW5mbyk7CisgICAgc29ja2V0X2luZm8gPSBOVUxMOwor fQorCitzdGF0aWMgaW50IHBzcl9jcHVfcHJlcGFyZSh2b2lkKQoreworICAgIGlmICggIXBzcl9h bGxvY19mZWF0X2VuYWJsZWQoKSApCisgICAgICAgIHJldHVybiAwOworCisgICAgLyogTWFsbG9j IG1lbW9yeSBmb3IgdGhlIGdsb2JhbCBmZWF0dXJlIG5vZGUgaGVyZS4gKi8KKyAgICBpZiAoIGZl YXRfbDMgPT0gTlVMTCAmJgorICAgICAgICAgKGZlYXRfbDMgPSB4emFsbG9jKHN0cnVjdCBmZWF0 X25vZGUpKSA9PSBOVUxMICkKKyAgICAgICAgcmV0dXJuIC1FTk9NRU07CisKICAgICByZXR1cm4g MDsKIH0KIAogc3RhdGljIHZvaWQgcHNyX2NwdV9pbml0KHZvaWQpCiB7CisgICAgc3RydWN0IHBz cl9zb2NrZXRfaW5mbyAqaW5mbzsKKyAgICB1bnNpZ25lZCBpbnQgc29ja2V0LCBjcHUgPSBzbXBf cHJvY2Vzc29yX2lkKCk7CisgICAgc3RydWN0IGZlYXRfbm9kZSAqZmVhdDsKKyAgICBzdHJ1Y3Qg Y3B1aWRfbGVhZiByZWdzOworCisgICAgaWYgKCAhcHNyX2FsbG9jX2ZlYXRfZW5hYmxlZCgpIHx8 ICFib290X2NwdV9oYXMoWDg2X0ZFQVRVUkVfUFFFKSApCisgICAgICAgIGdvdG8gYXNzb2NfaW5p dDsKKworICAgIGlmICggYm9vdF9jcHVfZGF0YS5jcHVpZF9sZXZlbCA8IFBTUl9DUFVJRF9MRVZF TF9DQVQgKQorICAgIHsKKyAgICAgICAgc2V0dXBfY2xlYXJfY3B1X2NhcChYODZfRkVBVFVSRV9Q UUUpOworICAgICAgICBnb3RvIGFzc29jX2luaXQ7CisgICAgfQorCisgICAgc29ja2V0ID0gY3B1 X3RvX3NvY2tldChjcHUpOworICAgIGluZm8gPSBzb2NrZXRfaW5mbyArIHNvY2tldDsKKyAgICBp ZiAoIGluZm8tPmZlYXRfaW5pdCApCisgICAgICAgIGdvdG8gYXNzb2NfaW5pdDsKKworICAgIHNw aW5fbG9ja19pbml0KCZpbmZvLT5yZWZfbG9jayk7CisKKyAgICBjcHVpZF9jb3VudF9sZWFmKFBT Ul9DUFVJRF9MRVZFTF9DQVQsIDAsICZyZWdzKTsKKyAgICBpZiAoIHJlZ3MuYiAmIFBTUl9SRVNP VVJDRV9UWVBFX0wzICkKKyAgICB7CisgICAgICAgIGNwdWlkX2NvdW50X2xlYWYoUFNSX0NQVUlE X0xFVkVMX0NBVCwgMSwgJnJlZ3MpOworCisgICAgICAgIGZlYXQgPSBmZWF0X2wzOworICAgICAg ICBmZWF0X2wzID0gTlVMTDsKKworICAgICAgICBpZiAoICFjYXRfaW5pdF9mZWF0dXJlKCZyZWdz LCBmZWF0LCBpbmZvLCBGRUFUX1RZUEVfTDNfQ0FUKSApCisgICAgICAgICAgICBmZWF0X3Byb3Bz W0ZFQVRfVFlQRV9MM19DQVRdID0gJmwzX2NhdF9wcm9wczsKKyAgICAgICAgZWxzZQorICAgICAg ICAgICAgZmVhdF9sMyA9IGZlYXQ7CisgICAgfQorCisgICAgaW5mby0+ZmVhdF9pbml0ID0gdHJ1 ZTsKKworIGFzc29jX2luaXQ6CiAgICAgcHNyX2Fzc29jX2luaXQoKTsKIH0KIAogc3RhdGljIHZv aWQgcHNyX2NwdV9maW5pKHVuc2lnbmVkIGludCBjcHUpCiB7Ci0gICAgcmV0dXJuOworICAgIHVu c2lnbmVkIGludCBzb2NrZXQgPSBjcHVfdG9fc29ja2V0KGNwdSk7CisKKyAgICBpZiAoICFwc3Jf YWxsb2NfZmVhdF9lbmFibGVkKCkgKQorICAgICAgICByZXR1cm47CisKKyAgICAvKgorICAgICAq IFdlIG9ubHkgZnJlZSB3aGVuIHdlIGFyZSB0aGUgbGFzdCBDUFUgaW4gdGhlIHNvY2tldC4gVGhl IHNvY2tldF9jcHVtYXNrCisgICAgICogaXMgY2xlYXJlZCBwcmlvciB0byB0aGlzIG5vdGlmaWNh dGlvbiBjb2RlIGJ5IHJlbW92ZV9zaWJsaW5naW5mbygpLgorICAgICAqLworICAgIGlmICggc29j a2V0X2NwdW1hc2tbc29ja2V0XSAmJiBjcHVtYXNrX2VtcHR5KHNvY2tldF9jcHVtYXNrW3NvY2tl dF0pICkKKyAgICAgICAgZnJlZV9zb2NrZXRfcmVzb3VyY2VzKHNvY2tldCk7CiB9CiAKIHN0YXRp YyBpbnQgY3B1X2NhbGxiYWNrKApAQCAtMjUzLDcgKzUzMSw3IEBAIHN0YXRpYyBpbnQgY3B1X2Nh bGxiYWNrKAogICAgIHN3aXRjaCAoIGFjdGlvbiApCiAgICAgewogICAgIGNhc2UgQ1BVX1VQX1BS RVBBUkU6Ci0gICAgICAgIHJjID0gcHNyX2NwdV9wcmVwYXJlKGNwdSk7CisgICAgICAgIHJjID0g cHNyX2NwdV9wcmVwYXJlKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1BVX1NUQVJUSU5H OgogICAgICAgICBwc3JfY3B1X2luaXQoKTsKQEAgLTI4MiwxMCArNTYwLDE0IEBAIHN0YXRpYyBp bnQgX19pbml0IHBzcl9wcmVzbXBfaW5pdCh2b2lkKQogICAgIGlmICggKG9wdF9wc3IgJiBQU1Jf Q01UKSAmJiBvcHRfcm1pZF9tYXggKQogICAgICAgICBpbml0X3Bzcl9jbXQob3B0X3JtaWRfbWF4 KTsKIAotICAgIHBzcl9jcHVfcHJlcGFyZSgwKTsKKyAgICBpZiAoIG9wdF9wc3IgJiBQU1JfQ0FU ICkKKyAgICAgICAgaW5pdF9wc3IoKTsKKworICAgIGlmICggcHNyX2NwdV9wcmVwYXJlKCkgKQor ICAgICAgICBwc3JfZnJlZSgpOwogCiAgICAgcHNyX2NwdV9pbml0KCk7Ci0gICAgaWYgKCBwc3Jf Y210X2VuYWJsZWQoKSApCisgICAgaWYgKCBwc3JfY210X2VuYWJsZWQoKSB8fCBwc3JfYWxsb2Nf ZmVhdF9lbmFibGVkKCkgKQogICAgICAgICByZWdpc3Rlcl9jcHVfbm90aWZpZXIoJmNwdV9uZmIp OwogCiAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L3Bzci5o IGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9wc3IuaAppbmRleCA1N2Y0N2U5Li44MTQxMzM2IDEwMDY0 NAotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L3Bzci5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14 ODYvcHNyLmgKQEAgLTUwLDYgKzUwLDcgQEAgZW51bSBjYm1fdHlwZSB7CiAgICAgUFNSX0NCTV9U WVBFX0wzLAogICAgIFBTUl9DQk1fVFlQRV9MM19DT0RFLAogICAgIFBTUl9DQk1fVFlQRV9MM19E QVRBLAorICAgIFBTUl9DQk1fVFlQRV9VTktOT1dOLAogfTsKIAogZXh0ZXJuIHN0cnVjdCBwc3Jf Y210ICpwc3JfY210OwotLSAKMS45LjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54 ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK