From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Kiper Subject: [PATCH v12 01/10] x86/boot: implement early command line parser in C Date: Fri, 20 Jan 2017 02:34:11 +0100 Message-ID: <1484876060-2236-2-git-send-email-daniel.kiper@oracle.com> References: <1484876060-2236-1-git-send-email-daniel.kiper@oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cUO6a-0000fV-8M for xen-devel@lists.xenproject.org; Fri, 20 Jan 2017 01:35:04 +0000 In-Reply-To: <1484876060-2236-1-git-send-email-daniel.kiper@oracle.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: jgross@suse.com, sstabellini@kernel.org, konrad.wilk@oracle.com, andrew.cooper3@citrix.com, cardoe@cardoe.com, pgnet.dev@gmail.com, ning.sun@intel.com, julien.grall@arm.com, jbeulich@suse.com, qiaowei.ren@intel.com, gang.wei@intel.com, fu.wei@linaro.org List-Id: xen-devel@lists.xenproject.org Q3VycmVudCBlYXJseSBjb21tYW5kIGxpbmUgcGFyc2VyIGltcGxlbWVudGF0aW9uIGluIGFzc2Vt YmxlcgppcyB2ZXJ5IGRpZmZpY3VsdCB0byBjaGFuZ2UgdG8gcmVsb2NhdGFibGUgc3R1ZmYgdXNp bmcgc2VnbWVudApyZWdpc3RlcnMuIFRoaXMgcmVxdWlyZXMgYSBsb3Qgb2YgY2hhbmdlcyBpbiB2 ZXJ5IHdlaXJkIGFuZApmcmFnaWxlIGNvZGUuIFNvLCByZWltcGxlbWVudCB0aGlzIGZ1bmN0aW9u YWxpdHkgaW4gQy4gVGhpcwp3YXkgY29kZSB3aWxsIGJlIHJlbG9jYXRhYmxlIG91dCBvZiB0aGUg Ym94ICh3aXRob3V0IHBsYXlpbmcKd2l0aCBzZWdtZW50IHJlZ2lzdGVycykgYW5kIG11Y2ggZWFz aWVyIHRvIG1haW50YWluLgoKQWRkaXRpb25hbGx5LCBwdXQgYWxsIGNvbW1vbiBjbWRsaW5lLmMg YW5kIHJlbG9jLmMgZGVmaW5pdGlvbnMKaW50byBkZWZzLmggaGVhZGVyLiBUaGlzIHdheSB3ZSBk byBub3QgZHVwbGljYXRlIG5lZWRsZXNzbHkKc29tZSBzdHVmZi4KCkFuZCBmaW5hbGx5IHJlbW92 ZSB1bnVzZWQgeGVuL2luY2x1ZGUvYXNtLXg4Ni9jb25maWcuaApoZWFkZXIgZnJvbSByZWxvYy5j IGRlcGVuZGVuY2llcy4KClN1Z2dlc3RlZC1ieTogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3Bl cjNAY2l0cml4LmNvbT4KU2lnbmVkLW9mZi1ieTogRGFuaWVsIEtpcGVyIDxkYW5pZWwua2lwZXJA b3JhY2xlLmNvbT4KQWNrZWQtYnk6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KUmV2 aWV3ZWQtYnk6IERvdWcgR29sZHN0ZWluIDxjYXJkb2VAY2FyZG9lLmNvbT4KLS0tCnY3IC0gc3Vn Z2VzdGlvbnMvZml4ZXM6CiAgIC0gYWRkIG1pbigpIG1hY3JvCiAgICAgKHN1Z2dlc3RlZCBieSBK YW4gQmV1bGljaCksCiAgIC0gYWRkIHBhZGRpbmcgdG8gZWFybHlfYm9vdF9vcHRzX3QKICAgICBp biBtb3JlIHN0YW5kYXJkIHdheQogICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpLAogICAt IHNpbXBsaWZ5IGRlZnMuaCBkZXBlbmRlbmNpZXMKICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVs aWNoKS4KCnY2IC0gc3VnZ2VzdGlvbnMvZml4ZXM6CiAgIC0gcHV0IGNvbW1vbiBjbWRsaW5lLmMg YW5kIHJlbG9jLmMKICAgICBkZWZpbml0aW9ucyBpbnRvIGRlZnMuaCBoZWFkZXIKICAgICAoc3Vn Z2VzdGVkIGJ5IEphbiBCZXVsaWNoKSwKICAgLSB1c2UgeGVuL2luY2x1ZGUveGVuL3N0ZGJvb2wu aAogICAgIGFuZCBib29sIHR5cGUgZnJvbSBpdCBpbnN0ZWFkCiAgICAgb2Ygb3duIGRlZmluZWQg Ym9vbF90CiAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCksCiAgIC0gZGVmaW5lIGRlbGlt X2NoYXJzIGFzIGNvbnN0YW50CiAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCksCiAgIC0g cHJvcGVybHkgYWxpZ24gdHJhbXBvbGluZS5TOmVhcmx5X2Jvb3Rfb3B0cyBzdHJ1Y3QKICAgICAo c3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKSwKICAgLSBmaXggb3ZlcmZsb3cgY2hlY2sgaW4gc3Ry dG91aSgpCiAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCksCiAgIC0gcmVtb3ZlIHVudXNl ZCB4ZW4vaW5jbHVkZS9hc20teDg2L2NvbmZpZy5oCiAgICAgaGVhZGVyIGZyb20gcmVsb2MuYyBk ZXBlbmRlbmNpZXMsCiAgIC0gaW1wcm92ZSBjb21taXQgbWVzc2FnZS4KCnY0IC0gc3VnZ2VzdGlv bnMvZml4ZXM6CiAgIC0gbW92ZSB0byBzdGRjYWxsIGNhbGxpbmcgY29udmVudGlvbgogICAgIChz dWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpLAogICAtIGRlZmluZSBib29sX3QgYW5kIHVzZSBpdCBw cm9wZXJseQogICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpLAogICAtIHB1dCBsaXN0IG9m IGRlbGltaXRlciBjaGFycyBpbnRvCiAgICAgc3RhdGljIGNvbnN0IGNoYXJbXQogICAgIChzdWdn ZXN0ZWQgYnkgSmFuIEJldWxpY2gpLAogICAtIHVzZSBzdHJsZW4oKSBpbnN0ZWFkIG9mIHN0cmxl bl9vcHQoKQogICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpLAogICAtIGNoYW5nZSBzdHJ0 b2koKSB0byBzdHJ0b3VpKCkgYW5kCiAgICAgb3B0aW1pemUgaXQgYSBiaXQKICAgICAoc3VnZ2Vz dGVkIGJ5IEphbiBCZXVsaWNoKSwKICAgLSBkZWZpbmUgc3RyY2hyKCkgYW5kIHVzZSBpdCBpbiBz dHJ0b3VpKCkKICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKSwKICAgLSBvcHRpbWl6ZSB2 Z2FfcGFyc2UoKQogICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpLAogICAtIG1vdmUgIWNt ZGxpbmUgY2hlY2sgZnJvbSBhc3NlbWJseSB0byBDCiAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1 bGljaCksCiAgIC0gcmVtb3ZlIG15IG5hbWUgZnJvbSBjb3B5cmlnaHQgKE9yYWNsZSByZXF1aXJl bWVudCkKICAgICAoc3VnZ2VzdGVkIGJ5IEtvbnJhZCBSemVzenV0ZWsgV2lsaykuCgp2MyAtIHN1 Z2dlc3Rpb25zL2ZpeGVzOgogICAtIG9wdGltaXplIHNvbWUgY29kZQogICAgIChzdWdnZXN0ZWQg YnkgSmFuIEJldWxpY2gpLAogICAtIHB1dCBWRVNBIGRhdGEgaW50byBlYXJseV9ib290X29wdHNf dCBtZW1iZXJzCiAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCksCiAgIC0gcmVuYW1lIHNv bWUgZnVuY3Rpb25zIGFuZCB2YXJpYWJsZXMKICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNo KSwKICAgLSBtb3ZlIGFyb3VuZCB2aWRlby5oIGluY2x1ZGUgaW4geGVuL2FyY2gveDg2L2Jvb3Qv dHJhbXBvbGluZS5TCiAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCksCiAgIC0gZml4IGNv ZGluZyBzdHlsZQogICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpLAogICAtIGZpeCBidWls ZCB3aXRoIG9sZGVyIEdDQwogICAgIChzdWdnZXN0ZWQgYnkgS29ucmFkIFJ6ZXN6dXRlayBXaWxr KSwKICAgLSByZW1vdmUgcmVkdW5kYW50IGNvbW1lbnRzCiAgICAgKHN1Z2dlc3RlZCBieSBKYW4g QmV1bGljaCksCiAgIC0gYWRkIHNvbWUgY29tbWVudHMKICAgLSBpbXByb3ZlIGNvbW1pdCBtZXNz YWdlCiAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkuCi0tLQogLmdpdGlnbm9yZSAgICAg ICAgICAgICAgICAgICAgIHwgICAgNSArLQogeGVuL2FyY2gveDg2L01ha2VmaWxlICAgICAgICAg IHwgICAgMiArLQogeGVuL2FyY2gveDg2L2Jvb3QvTWFrZWZpbGUgICAgIHwgICAxMSArLQogeGVu L2FyY2gveDg2L2Jvb3QvYnVpbGQzMi5tayAgIHwgICAgMiArCiB4ZW4vYXJjaC94ODYvYm9vdC9j bWRsaW5lLlMgICAgfCAgMzY3IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KIHhlbi9hcmNoL3g4Ni9ib290L2NtZGxpbmUuYyAgICB8ICAzNDAgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKwogeGVuL2FyY2gveDg2L2Jvb3QvZGVmcy5oICAgICAgIHwg ICA1OCArKysrKysrCiB4ZW4vYXJjaC94ODYvYm9vdC9lZGQuUyAgICAgICAgfCAgICAzIC0KIHhl bi9hcmNoL3g4Ni9ib290L2hlYWQuUyAgICAgICB8ICAgIDkgKwogeGVuL2FyY2gveDg2L2Jvb3Qv cmVsb2MuYyAgICAgIHwgICAgOSArLQogeGVuL2FyY2gveDg2L2Jvb3QvdHJhbXBvbGluZS5TIHwg ICAxNSArKwogeGVuL2FyY2gveDg2L2Jvb3QvdmlkZW8uUyAgICAgIHwgICAgNyAtCiAxMiBmaWxl cyBjaGFuZ2VkLCA0MzggaW5zZXJ0aW9ucygrKSwgMzkwIGRlbGV0aW9ucygtKQogZGVsZXRlIG1v ZGUgMTAwNjQ0IHhlbi9hcmNoL3g4Ni9ib290L2NtZGxpbmUuUwogY3JlYXRlIG1vZGUgMTAwNjQ0 IHhlbi9hcmNoL3g4Ni9ib290L2NtZGxpbmUuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9hcmNo L3g4Ni9ib290L2RlZnMuaAoKZGlmZiAtLWdpdCBhLy5naXRpZ25vcmUgYi8uZ2l0aWdub3JlCmlu ZGV4IDc2ODk1OTYuLmY0MWMzZDAgMTAwNjQ0Ci0tLSBhLy5naXRpZ25vcmUKKysrIGIvLmdpdGln bm9yZQpAQCAtMjUyLDkgKzI1MiwxMCBAQCB4ZW4vYXJjaC9hcm0veGVuLmxkcwogeGVuL2FyY2gv eDg2L2FzbS1vZmZzZXRzLnMKIHhlbi9hcmNoL3g4Ni9ib290L21rZWxmMzIKIHhlbi9hcmNoL3g4 Ni94ZW4ubGRzCit4ZW4vYXJjaC94ODYvYm9vdC9jbWRsaW5lLlMKIHhlbi9hcmNoL3g4Ni9ib290 L3JlbG9jLlMKLXhlbi9hcmNoL3g4Ni9ib290L3JlbG9jLmJpbgoteGVuL2FyY2gveDg2L2Jvb3Qv cmVsb2MubG5rCit4ZW4vYXJjaC94ODYvYm9vdC8qLmJpbgoreGVuL2FyY2gveDg2L2Jvb3QvKi5s bmsKIHhlbi9hcmNoL3g4Ni9lZmkubGRzCiB4ZW4vYXJjaC94ODYvZWZpL2NoZWNrLmVmaQogeGVu L2FyY2gveDg2L2VmaS9kaXNhYmxlZApkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L01ha2VmaWxl IGIveGVuL2FyY2gveDg2L01ha2VmaWxlCmluZGV4IDdmNmI1ZDcuLjAwN2RjZWQgMTAwNjQ0Ci0t LSBhL3hlbi9hcmNoL3g4Ni9NYWtlZmlsZQorKysgYi94ZW4vYXJjaC94ODYvTWFrZWZpbGUKQEAg LTIyMCw1ICsyMjAsNSBAQCBjbGVhbjo6CiAJcm0gLWYgYXNtLW9mZnNldHMucyAqLmxkcyBib290 LyoubyBib290Lyp+IGJvb3QvY29yZSBib290L21rZWxmMzIKIAlybSAtZiAkKEJBU0VESVIpLy54 ZW4tc3ltcy5bMC05XSogYm9vdC8uKi5kCiAJcm0gLWYgJChCQVNFRElSKS8ueGVuLmVmaS5bMC05 XSogZWZpLyoubyBlZmkvLiouZCBlZmkvKi5lZmkgZWZpL2Rpc2FibGVkIGVmaS9ta3JlbG9jCi0J cm0gLWYgYm9vdC9yZWxvYy5TIGJvb3QvcmVsb2MubG5rIGJvb3QvcmVsb2MuYmluCisJcm0gLWYg Ym9vdC9jbWRsaW5lLlMgYm9vdC9yZWxvYy5TIGJvb3QvKi5sbmsgYm9vdC8qLmJpbgogCXJtIC1m IG5vdGUubwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2Jvb3QvTWFrZWZpbGUgYi94ZW4vYXJj aC94ODYvYm9vdC9NYWtlZmlsZQppbmRleCA1ZmRiNWFlLi42ZDIwNjQ2IDEwMDY0NAotLS0gYS94 ZW4vYXJjaC94ODYvYm9vdC9NYWtlZmlsZQorKysgYi94ZW4vYXJjaC94ODYvYm9vdC9NYWtlZmls ZQpAQCAtMSw4ICsxLDE1IEBACiBvYmotYmluLXkgKz0gaGVhZC5vCiAKLVJFTE9DX0RFUFMgPSAk KEJBU0VESVIpL2luY2x1ZGUvYXNtLXg4Ni9jb25maWcuaCAkKEJBU0VESVIpL2luY2x1ZGUveGVu L211bHRpYm9vdC5oCitERUZTX0hfREVQUyA9IGRlZnMuaCAkKEJBU0VESVIpL2luY2x1ZGUveGVu L3N0ZGJvb2wuaAogCi1oZWFkLm86IHJlbG9jLlMKK0NNRExJTkVfREVQUyA9ICQoREVGU19IX0RF UFMpIHZpZGVvLmgKKworUkVMT0NfREVQUyA9ICQoREVGU19IX0RFUFMpICQoQkFTRURJUikvaW5j bHVkZS94ZW4vbXVsdGlib290LmgKKworaGVhZC5vOiBjbWRsaW5lLlMgcmVsb2MuUworCitjbWRs aW5lLlM6IGNtZGxpbmUuYyAkKENNRExJTkVfREVQUykKKwkkKE1BS0UpIC1mIGJ1aWxkMzIubWsg JEAgQ01ETElORV9ERVBTPSIkKENNRExJTkVfREVQUykiCiAKIHJlbG9jLlM6IHJlbG9jLmMgJChS RUxPQ19ERVBTKQogCSQoTUFLRSkgLWYgYnVpbGQzMi5tayAkQCBSRUxPQ19ERVBTPSIkKFJFTE9D X0RFUFMpIgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2Jvb3QvYnVpbGQzMi5tayBiL3hlbi9h cmNoL3g4Ni9ib290L2J1aWxkMzIubWsKaW5kZXggMjcyZDk0Mi4uZjdlOGViZSAxMDA2NDQKLS0t IGEveGVuL2FyY2gveDg2L2Jvb3QvYnVpbGQzMi5taworKysgYi94ZW4vYXJjaC94ODYvYm9vdC9i dWlsZDMyLm1rCkBAIC0zMiw2ICszMiw4IEBAIENGTEFHUyA6PSAkKGZpbHRlci1vdXQgLWZsdG8s JChDRkxBR1MpKQogJS5vOiAlLmMKIAkkKENDKSAkKENGTEFHUykgLWMgLWZwaWMgJDwgLW8gJEAK IAorY21kbGluZS5vOiBjbWRsaW5lLmMgJChDTURMSU5FX0RFUFMpCisKIHJlbG9jLm86IHJlbG9j LmMgJChSRUxPQ19ERVBTKQogCiAuUFJFQ0lPVVM6ICUuYmluICUubG5rCmRpZmYgLS1naXQgYS94 ZW4vYXJjaC94ODYvYm9vdC9jbWRsaW5lLlMgYi94ZW4vYXJjaC94ODYvYm9vdC9jbWRsaW5lLlMK ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwNjg3ZWIuLjAwMDAwMDAKLS0tIGEveGVu L2FyY2gveDg2L2Jvb3QvY21kbGluZS5TCisrKyAvZGV2L251bGwKQEAgLTEsMzY3ICswLDAgQEAK LS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioKLSAqIGNtZGxpbmUuUwotICoKLSAqIEVhcmx5IGNvbW1h bmQtbGluZSBwYXJzaW5nLgotICovCi0KLSAgICAgICAgLmNvZGUzMgotCi0jaW5jbHVkZSAidmlk ZW8uaCIKLQotIyBOQi4gU3RyaW5nIHBvaW50ZXIgb24gc3RhY2sgaXMgbW9kaWZpZWQgdG8gcG9p bnQgcGFzdCBwYXJzZWQgZGlnaXRzLgotLkxhdG9pOgotICAgICAgICBwdXNoICAgICVlYngKLSAg ICAgICAgcHVzaCAgICAlZWN4Ci0gICAgICAgIHB1c2ggICAgJWVkeAotICAgICAgICBwdXNoICAg ICVlc2kKLSAgICAgICAgeG9yICAgICAlZWJ4LCVlYnggICAgICAgLyogJWVieCA9IGFjY3VtdWxh dG9yICovCi0gICAgICAgIG1vdiAgICAgJDEwLCVlY3ggICAgICAgIC8qICVlY3ggPSBiYXNlIChk ZWZhdWx0IGJhc2UgMTApICovCi0gICAgICAgIG1vdiAgICAgMTYrNCglZXNwKSwlZXNpIC8qICVl c2kgPSBwb2ludGVyIGludG8gYXNjaWkgc3RyaW5nLiAqLwotICAgICAgICBsb2RzYgotICAgICAg ICBjbXBiICAgICQnMCcsJWFsCi0gICAgICAgIGpuZSAgICAgMmYKLSAgICAgICAgbW92ICAgICAk OCwlZWN4ICAgICAgICAgLyogUHJlZml4ICcwJyA9PiBvY3RhbCAoYmFzZSA4KSAqLwotICAgICAg ICBsb2RzYgotICAgICAgICBjbXBiICAgICQneCcsJWFsCi0gICAgICAgIGpuZSAgICAgMmYKLSAg ICAgICAgbW92ICAgICAkMTYsJWVjeCAgICAgICAgLyogUHJlZml4ICcweCcgPT4gaGV4IChiYXNl IDE2KSAqLwotMTogICAgICBsb2RzYgotMjogICAgICBzdWIgICAgICQnMCcsJWFsCi0gICAgICAg IGpiICAgICAgNGYKLSAgICAgICAgY21wICAgICAkOSwlYWwKLSAgICAgICAgamJlICAgICAzZgot ICAgICAgICBzdWIgICAgICQnQSctJzAnLTEwLCVhbAotICAgICAgICBqYiAgICAgIDRmCi0gICAg ICAgIGNtcCAgICAgJDE1LCVhbAotICAgICAgICBqYmUgICAgIDNmCi0gICAgICAgIHN1YiAgICAg JCdhJy0nQScsJWFsCi0gICAgICAgIGpiICAgICAgNGYKLTM6ICAgICAgY21wICAgICAlY2wsJWFs Ci0gICAgICAgIGphZSAgICAgNGYKLSAgICAgICAgbW92emJsICAlYWwsJWVheAotICAgICAgICB4 Y2hnICAgICVlYXgsJWVieAotICAgICAgICBtdWwgICAgICVlY3gKLSAgICAgICAgeGNoZyAgICAl ZWF4LCVlYngKLSAgICAgICAgYWRkICAgICAlZWF4LCVlYngKLSAgICAgICAgam1wICAgICAxYgot NDogICAgICBtb3YgICAgICVlYngsJWVheAotICAgICAgICBkZWMgICAgICVlc2kKLSAgICAgICAg bW92ICAgICAlZXNpLDE2KzQoJWVzcCkKLSAgICAgICAgcG9wICAgICAlZXNpCi0gICAgICAgIHBv cCAgICAgJWVkeAotICAgICAgICBwb3AgICAgICVlY3gKLSAgICAgICAgcG9wICAgICAlZWJ4Ci0g ICAgICAgIHJldAotCi0uTHN0cnN0cjoKLSAgICAgICAgcHVzaCAgICAlZWN4Ci0gICAgICAgIHB1 c2ggICAgJWVkeAotICAgICAgICBwdXNoICAgICVlc2kKLSAgICAgICAgcHVzaCAgICAlZWRpCi0g ICAgICAgIHhvciAgICAgJWVheCwlZWF4Ci0gICAgICAgIHhvciAgICAgJWVjeCwlZWN4Ci0gICAg ICAgIG5vdCAgICAgJWVjeAotICAgICAgICBtb3YgICAgIDE2KzQoJWVzcCksJWVzaQotICAgICAg ICBtb3YgICAgIDE2KzgoJWVzcCksJWVkaQotICAgICAgICByZXBuZSAgIHNjYXNiCi0gICAgICAg IG5vdCAgICAgJWVjeAotICAgICAgICBkZWMgICAgICVlY3gKLSAgICAgICAgbW92ICAgICAlZWN4 LCVlZHgKLTE6ICAgICAgbW92ICAgICAxNis4KCVlc3ApLCVlZGkKLSAgICAgICAgbW92ICAgICAl ZXNpLCVlYXgKLSAgICAgICAgbW92ICAgICAlZWR4LCVlY3gKLSAgICAgICAgcmVwZSAgICBjbXBz YgotICAgICAgICBqZSAgICAgIDJmCi0gICAgICAgIHhjaGcgICAgJWVheCwlZXNpCi0gICAgICAg IGluYyAgICAgJWVzaQotICAgICAgICBjbXBiICAgICQwLC0xKCVlYXgpCi0gICAgICAgIGpuZSAg ICAgMWIKLSAgICAgICAgeG9yICAgICAlZWF4LCVlYXgKLTI6ICAgICAgcG9wICAgICAlZWRpCi0g ICAgICAgIHBvcCAgICAgJWVzaQotICAgICAgICBwb3AgICAgICVlZHgKLSAgICAgICAgcG9wICAg ICAlZWN4Ci0gICAgICAgIHJldAotCi0uTHN0cl9wcmVmaXg6Ci0gICAgICAgIHB1c2ggICAgJWVz aQotICAgICAgICBwdXNoICAgICVlZGkKLSAgICAgICAgbW92ICAgICA4KzQoJWVzcCksJWVzaSAv KiAxc3QgYXJnIGlzIHByZWZpeCBzdHJpbmcgKi8KLSAgICAgICAgbW92ICAgICA4KzgoJWVzcCks JWVkaSAvKiAybmQgYXJnIGlzIG1haW4gc3RyaW5nICovCi0xOiAgICAgIGxvZHNiCi0gICAgICAg IHRlc3QgICAgJWFsLCVhbAotICAgICAgICBqeiAgICAgIDJmCi0gICAgICAgIHNjYXNiCi0gICAg ICAgIGplICAgICAgMWIKLSAgICAgICAgc2JiICAgICAlZWF4LCVlYXgKLSAgICAgICAgb3IgICAg ICAkMSwlYWwKLSAgICAgICAgam1wICAgICAzZgotMjogICAgICB4b3IgICAgICVlYXgsJWVheAot MzogICAgICBwb3AgICAgICVlZGkKLSAgICAgICAgcG9wICAgICAlZXNpCi0gICAgICAgIHJldAot Ci0uTHN0cmxlbjoKLSAgICAgICAgcHVzaCAgICAlZWN4Ci0gICAgICAgIHB1c2ggICAgJWVzaQot ICAgICAgICBwdXNoICAgICVlZGkKLSAgICAgICAgeG9yICAgICAlZWF4LCVlYXgKLSAgICAgICAg eG9yICAgICAlZWN4LCVlY3gKLSAgICAgICAgbm90ICAgICAlZWN4Ci0gICAgICAgIG1vdiAgICAg MTIrNCglZXNwKSwlZWRpCi0gICAgICAgIHJlcG5lICAgc2Nhc2IKLSAgICAgICAgbm90ICAgICAl ZWN4Ci0gICAgICAgIGRlYyAgICAgJWVjeAotICAgICAgICBtb3YgICAgICVlY3gsJWVheAotICAg ICAgICBwb3AgICAgICVlZGkKLSAgICAgICAgcG9wICAgICAlZXNpCi0gICAgICAgIHBvcCAgICAg JWVjeAotICAgICAgICByZXQKLQotLkxmaW5kX29wdGlvbjoKLSAgICAgICAgbW92ICAgICA0KCVl c3ApLCVlYXgKLSAgICAgICAgZGVjICAgICAlZWF4Ci0gICAgICAgIHB1c2ggICAgJWVieAotMTog ICAgICBwdXNobCAgIDQrOCglZXNwKQotICAgICAgICBpbmMgICAgICVlYXgKLSAgICAgICAgcHVz aCAgICAlZWF4Ci0gICAgICAgIGNhbGwgICAgLkxzdHJzdHIKLSAgICAgICAgYWRkICAgICAkOCwl ZXNwCi0gICAgICAgIHRlc3QgICAgJWVheCwlZWF4Ci0gICAgICAgIGp6ICAgICAgM2YKLSAgICAg ICAgY21wICAgICAlZWF4LDQrNCglZXNwKQotICAgICAgICBqZSAgICAgIDJmCi0gICAgICAgIGNt cGIgICAgJCcgJywtMSglZWF4KQotICAgICAgICBqbmUgICAgIDFiCi0yOiAgICAgIG1vdiAgICAg JWVheCwlZWJ4Ci0gICAgICAgIHB1c2hsICAgNCs4KCVlc3ApCi0gICAgICAgIGNhbGwgICAgLkxz dHJsZW4KLSAgICAgICAgYWRkICAgICAkNCwlZXNwCi0gICAgICAgIHhhZGQgICAgJWVheCwlZWJ4 Ci0gICAgICAgIC8qIE5VTCBjaGVjayAoYXMgJCdcMCcgPT0gMHgzMCBpbiBHQVMpICovCi0gICAg ICAgIGNtcGIgICAgJDAsKCVlYngpCi0gICAgICAgIGplICAgICAgM2YKLSAgICAgICAgY21wYiAg ICAkJyAnLCglZWJ4KQotICAgICAgICBqZSAgICAgIDNmCi0gICAgICAgIGNtcGIgICAgJCc9Jywo JWVieCkKLSAgICAgICAgam5lICAgICAxYgotMzogICAgICBwb3AgICAgICVlYngKLSAgICAgICAg cmV0Ci0KLWNtZGxpbmVfcGFyc2VfZWFybHk6Ci0gICAgICAgIHB1c2hhCi0KLSAgICAgICAgLyog QmFpbCBpZiB0aGVyZSBpcyBubyBjb21tYW5kIGxpbmUgdG8gcGFyc2UuICovCi0gICAgICAgIG1v diAgICAgc3ltX3BoeXMobXVsdGlib290X3B0ciksJWVieAotICAgICAgICBtb3YgICAgIE1CX2Zs YWdzKCVlYngpLCVlYXgKLSAgICAgICAgdGVzdCAgICAkNCwlYWwKLSAgICAgICAganogICAgICAu TGNtZGxpbmVfZXhpdAotICAgICAgICBtb3YgICAgIE1CX2NtZGxpbmUoJWVieCksJWVheAotICAg ICAgICB0ZXN0ICAgICVlYXgsJWVheAotICAgICAgICBqeiAgICAgIC5MY21kbGluZV9leGl0Ci0K LSAgICAgICAgLyogQ2hlY2sgZm9yICduby1yZWFsLW1vZGUnIGNvbW1hbmQtbGluZSBvcHRpb24u ICovCi0gICAgICAgIHB1c2hsICAgJHN5bV9waHlzKC5Mbm9fcm1fb3B0KQotICAgICAgICBwdXNo bCAgIE1CX2NtZGxpbmUoJWVieCkKLSAgICAgICAgY2FsbCAgICAuTGZpbmRfb3B0aW9uCi0gICAg ICAgIHRlc3QgICAgJWVheCwlZWF4Ci0gICAgICAgIHNldG56ICAgJWFsCi0gICAgICAgIG9yICAg ICAgJWFsLHN5bV9waHlzKHNraXBfcmVhbG1vZGUpCi0KLSAgICAgICAgLyogQ2hlY2sgZm9yICd0 Ym9vdD0nIGNvbW1hbmQtbGluZSBvcHRpb24uICovCi0gICAgICAgIG1vdmwgICAgJHN5bV9waHlz KC5MdGJvb3Rfb3B0KSw0KCVlc3ApCi0gICAgICAgIGNhbGwgICAgLkxmaW5kX29wdGlvbgotICAg ICAgICB0ZXN0ICAgICVlYXgsJWVheAotICAgICAgICBzZXRueiAgICVhbAotICAgICAgICBvciAg ICAgICVhbCxzeW1fcGh5cyhza2lwX3JlYWxtb2RlKSAvKiB0Ym9vdD0gaW1wbGllcyBuby1yZWFs LW1vZGUgKi8KLQotLkxwYXJzZV9lZGQ6Ci0gICAgICAgIC8qIENoZWNrIGZvciAnZWRkPScgY29t bWFuZC1saW5lIG9wdGlvbi4gKi8KLSAgICAgICAgbW92bCAgICAkc3ltX3BoeXMoLkxlZGRfb3B0 KSw0KCVlc3ApCi0gICAgICAgIGNhbGwgICAgLkxmaW5kX29wdGlvbgotICAgICAgICB0ZXN0ICAg ICVlYXgsJWVheAotICAgICAgICBqeiAgICAgIC5McGFyc2VfZWRpZAotICAgICAgICBjbXBiICAg ICQnPScsMyglZWF4KQotICAgICAgICBqbmUgICAgIC5McGFyc2VfZWRpZAotICAgICAgICBhZGQg ICAgICQ0LCVlYXgKLSAgICAgICAgbW92YiAgICAkMixzeW1fcGh5cyhvcHRfZWRkKSAgLyogb3B0 X2VkZD0yOiBlZGQ9b2ZmICovCi0gICAgICAgIGNtcHcgICAgJDB4NjY2ZiwoJWVheCkgICAgICAg ICAgICAvKiAweDY2NmYgPT0gIm9mIiAqLwotICAgICAgICBqZSAgICAgIC5McGFyc2VfZWRpZAot ICAgICAgICBkZWNiICAgIHN5bV9waHlzKG9wdF9lZGQpICAgICAvKiBvcHRfZWRkPTE6IGVkZD1z a2lwbWJyICovCi0gICAgICAgIGNtcHcgICAgJDB4NmI3MywoJWVheCkgICAgICAgICAgICAvKiAw eDZiNzMgPT0gInNrIiAqLwotICAgICAgICBqZSAgICAgIC5McGFyc2VfZWRpZAotICAgICAgICBk ZWNiICAgIHN5bV9waHlzKG9wdF9lZGQpICAgICAvKiBvcHRfZWRkPTA6IGVkZD1vbiAoZGVmYXVs dCkgKi8KLQotLkxwYXJzZV9lZGlkOgotICAgICAgICAvKiBDaGVjayBmb3IgJ2VkaWQ9JyBjb21t YW5kLWxpbmUgb3B0aW9uLiAqLwotICAgICAgICBtb3ZsICAgICRzeW1fcGh5cyguTGVkaWRfb3B0 KSw0KCVlc3ApCi0gICAgICAgIGNhbGwgICAgLkxmaW5kX29wdGlvbgotICAgICAgICB0ZXN0ICAg ICVlYXgsJWVheAotICAgICAgICBqeiAgICAgIC5McGFyc2VfdmdhCi0gICAgICAgIGNtcGIgICAg JCc9Jyw0KCVlYXgpCi0gICAgICAgIGpuZSAgICAgLkxwYXJzZV92Z2EKLSAgICAgICAgYWRkICAg ICAkNSwlZWF4Ci0gICAgICAgIG1vdiAgICAgJWVheCwlZWJ4Ci0gICAgICAgIHB1c2ggICAgJWVi eAotICAgICAgICBwdXNobCAgICRzeW1fcGh5cyguTGVkaWRfZm9yY2UpCi0gICAgICAgIGNhbGwg ICAgLkxzdHJfcHJlZml4Ci0gICAgICAgIGFkZCAgICAgJDgsJWVzcAotICAgICAgICBtb3ZiICAg ICQyLHN5bV9waHlzKG9wdF9lZGlkKSAvKiBvcHRfZWRpZD0yOiBlZGlkPWZvcmNlICovCi0gICAg ICAgIHRlc3QgICAgJWVheCwlZWF4Ci0gICAgICAgIGp6ICAgICAgLkxwYXJzZV92Z2EKLSAgICAg ICAgcHVzaCAgICAlZWJ4Ci0gICAgICAgIHB1c2hsICAgJHN5bV9waHlzKC5MZWRpZF9ubykKLSAg ICAgICAgY2FsbCAgICAuTHN0cl9wcmVmaXgKLSAgICAgICAgYWRkICAgICAkOCwlZXNwCi0gICAg ICAgIGRlY2IgICAgc3ltX3BoeXMob3B0X2VkaWQpICAgIC8qIG9wdF9lZGlkPTE6IGVkaWQ9bm8g Ki8KLSAgICAgICAgdGVzdCAgICAlZWF4LCVlYXgKLSAgICAgICAganogICAgICAuTHBhcnNlX3Zn YQotICAgICAgICBkZWNiICAgIHN5bV9waHlzKG9wdF9lZGlkKSAgICAvKiBvcHRfZWRpZD0wOiBk ZWZhdWx0ICovCi0KLS5McGFyc2VfdmdhOgotICAgICAgICAvKiBDaGVjayBmb3IgJ3ZnYT0nIGNv bW1hbmQtbGluZSBvcHRpb24uICovCi0gICAgICAgIG1vdmwgICAgJHN5bV9waHlzKC5MdmdhX29w dCksNCglZXNwKQotICAgICAgICBjYWxsICAgIC5MZmluZF9vcHRpb24KLSAgICAgICAgYWRkICAg ICAkOCwlZXNwCi0gICAgICAgIHRlc3QgICAgJWVheCwlZWF4Ci0gICAgICAgIGp6ICAgICAgLkxj bWRsaW5lX2V4aXQKLSAgICAgICAgY21wYiAgICAkJz0nLDMoJWVheCkKLSAgICAgICAgam5lICAg ICAuTGNtZGxpbmVfZXhpdAotICAgICAgICBhZGQgICAgICQ0LCVlYXgKLQotICAgICAgICAvKiBG b3VuZCB0aGUgJ3ZnYT0nIG9wdGlvbi4gRGVmYXVsdCBvcHRpb24gaXMgdG8gZGlzcGxheSB2Z2Eg bWVudS4gKi8KLSAgICAgICAgbW92dyAgICAkQVNLX1ZHQSxzeW1fcGh5cyhib290X3ZpZF9tb2Rl KQotCi0gICAgICAgIC8qIENoZWNrIGZvciAndmdhPXRleHQtODB4PHJvd3M+LiAqLwotICAgICAg ICBtb3YgICAgICVlYXgsJWVieAotICAgICAgICBwdXNoICAgICVlYngKLSAgICAgICAgcHVzaGwg ICAkc3ltX3BoeXMoLkx2Z2FfdGV4dDgwKQotICAgICAgICBjYWxsICAgIC5Mc3RyX3ByZWZpeAot ICAgICAgICBhZGQgICAgICQ4LCVlc3AKLSAgICAgICAgdGVzdCAgICAlZWF4LCVlYXgKLSAgICAg ICAgam56ICAgICAuTHBhcnNlX3ZnYV9nZngKLQotICAgICAgICAvKiBXZSBoYXZlICd2Z2E9dGV4 dC04MHg8cm93cz4nLiAqLwotICAgICAgICBhZGQgICAgICQ4LCVlYngKLSAgICAgICAgcHVzaCAg ICAlZWJ4Ci0gICAgICAgIGNhbGwgICAgLkxhdG9pCi0gICAgICAgIGFkZCAgICAgJDQsJWVzcAot ICAgICAgICBtb3YgICAgICVheCwlYngKLSAgICAgICAgbGVhICAgICBzeW1fcGh5cyguTHZnYV90 ZXh0X21vZGVzKSwlZXNpCi0xOiAgICAgIGxvZHN3Ci0gICAgICAgIHRlc3QgICAgJWF4LCVheAot ICAgICAgICBqeiAgICAgIC5MY21kbGluZV9leGl0Ci0gICAgICAgIGNtcCAgICAgJWF4LCVieAot ICAgICAgICBsb2RzdwotICAgICAgICBqbmUgICAgIDFiCi0gICAgICAgIG1vdiAgICAgJWF4LHN5 bV9waHlzKGJvb3RfdmlkX21vZGUpCi0gICAgICAgIGptcCAgICAgLkxjbWRsaW5lX2V4aXQKLQot LkxwYXJzZV92Z2FfZ2Z4OgotICAgICAgICAvKiBDaGVjayBmb3IgJ3ZnYT1nZngtPHdpZHRoPng8 aGVpZ2h0Png8ZGVwdGg+Jy4gKi8KLSAgICAgICAgcHVzaCAgICAlZWJ4Ci0gICAgICAgIHB1c2hs ICAgJHN5bV9waHlzKC5MdmdhX2dmeCkKLSAgICAgICAgY2FsbCAgICAuTHN0cl9wcmVmaXgKLSAg ICAgICAgYWRkICAgICAkOCwlZXNwCi0gICAgICAgIHRlc3QgICAgJWVheCwlZWF4Ci0gICAgICAg IGpueiAgICAgLkxwYXJzZV92Z2FfbW9kZQotCi0gICAgICAgIC8qIFdlIGhhdmUgJ3ZnYT1nZngt PHdpZHRoPng8aGVpZ2h0Png8ZGVwdGg+Jy4gKi8KLSAgICAgICAgLyogc2tpcCAnZ2Z4LScgKi8K LSAgICAgICAgYWRkICAgICAkNCwlZWJ4Ci0gICAgICAgIC8qIHBhcnNlIDx3aWR0aD4gKi8KLSAg ICAgICAgcHVzaCAgICAlZWJ4Ci0gICAgICAgIGNhbGwgICAgLkxhdG9pCi0gICAgICAgIHBvcCAg ICAgJWVzaQotICAgICAgICBtb3YgICAgICVheCxzeW1fcGh5cyh2ZXNhX3NpemUpKzAKLSAgICAg ICAgLyogc2tpcCAneCcgKi8KLSAgICAgICAgbG9kc2IKLSAgICAgICAgY21wYiAgICAkJ3gnLCVh bAotICAgICAgICBqbmUgICAgIC5MY21kbGluZV9leGl0Ci0gICAgICAgIC8qIHBhcnNlIDxoZWln aHQ+ICovCi0gICAgICAgIHB1c2ggICAgJWVzaQotICAgICAgICBjYWxsICAgIC5MYXRvaQotICAg ICAgICBwb3AgICAgICVlc2kKLSAgICAgICAgbW92ICAgICAlYXgsc3ltX3BoeXModmVzYV9zaXpl KSsyCi0gICAgICAgIC8qIHNraXAgJ3gnICovCi0gICAgICAgIGxvZHNiCi0gICAgICAgIGNtcGIg ICAgJCd4JywlYWwKLSAgICAgICAgam5lICAgICAuTGNtZGxpbmVfZXhpdAotICAgICAgICAvKiBw YXJzZSA8ZGVwdGg+ICovCi0gICAgICAgIHB1c2ggICAgJWVzaQotICAgICAgICBjYWxsICAgIC5M YXRvaQotICAgICAgICBwb3AgICAgICVlc2kKLSAgICAgICAgbW92ICAgICAlYXgsc3ltX3BoeXMo dmVzYV9zaXplKSs0Ci0gICAgICAgIC8qIGNvbW1pdCB0byB2ZXNhIG1vZGUgKi8KLSAgICAgICAg bW92dyAgICAkVklERU9fVkVTQV9CWV9TSVpFLHN5bV9waHlzKGJvb3RfdmlkX21vZGUpCi0gICAg ICAgIGptcCAgICAgLkxjbWRsaW5lX2V4aXQKLQotLkxwYXJzZV92Z2FfbW9kZToKLSAgICAgICAg LyogQ2hlY2sgZm9yICd2Z2E9bW9kZS08bW9kZT4nLiAqLwotICAgICAgICBwdXNoICAgICVlYngK LSAgICAgICAgcHVzaGwgICAkc3ltX3BoeXMoLkx2Z2FfbW9kZSkKLSAgICAgICAgY2FsbCAgICAu THN0cl9wcmVmaXgKLSAgICAgICAgYWRkICAgICAkOCwlZXNwCi0gICAgICAgIHRlc3QgICAgJWVh eCwlZWF4Ci0gICAgICAgIGpueiAgICAgLkxwYXJzZV92Z2FfY3VycmVudAotCi0gICAgICAgIC8q IFdlIGhhdmUgJ3ZnYT1tb2RlLTxtb2RlPicuICovCi0gICAgICAgIGFkZCAgICAgJDUsJWVieAot ICAgICAgICBwdXNoICAgICVlYngKLSAgICAgICAgY2FsbCAgICAuTGF0b2kKLSAgICAgICAgYWRk ICAgICAkNCwlZXNwCi0gICAgICAgIG1vdiAgICAgJWF4LHN5bV9waHlzKGJvb3RfdmlkX21vZGUp Ci0gICAgICAgIGptcCAgICAgLkxjbWRsaW5lX2V4aXQKLQotLkxwYXJzZV92Z2FfY3VycmVudDoK LSAgICAgICAgLyogQ2hlY2sgZm9yICd2Z2E9Y3VycmVudCcuICovCi0gICAgICAgIHB1c2ggICAg JWVieAotICAgICAgICBwdXNobCAgICRzeW1fcGh5cyguTHZnYV9jdXJyZW50KQotICAgICAgICBj YWxsICAgIC5Mc3RyX3ByZWZpeAotICAgICAgICBhZGQgICAgICQ4LCVlc3AKLSAgICAgICAgdGVz dCAgICAlZWF4LCVlYXgKLSAgICAgICAgam56ICAgICAuTGNtZGxpbmVfZXhpdAotCi0gICAgICAg IC8qIFdlIGhhdmUgJ3ZnYT1jdXJyZW50Jy4gKi8KLSAgICAgICAgbW92dyAgICAkVklERU9fQ1VS UkVOVF9NT0RFLHN5bV9waHlzKGJvb3RfdmlkX21vZGUpCi0KLS5MY21kbGluZV9leGl0OgotICAg ICAgICBwb3BhCi0gICAgICAgIHJldAotCi0gICAgICAgIC5wdXNoc2VjdGlvbiAuaW5pdC5yb2Rh dGEsICJhIiwgQHByb2diaXRzCi0KLS5MdmdhX3RleHRfbW9kZXM6IC8qIHJvd3MsIG1vZGVfbnVt YmVyICovCi0gICAgICAgIC53b3JkICAgMjUsVklERU9fODB4MjUKLSAgICAgICAgLndvcmQgICA1 MCxWSURFT184MHg1MAotICAgICAgICAud29yZCAgIDQzLFZJREVPXzgweDQzCi0gICAgICAgIC53 b3JkICAgMjgsVklERU9fODB4MjgKLSAgICAgICAgLndvcmQgICAzMCxWSURFT184MHgzMAotICAg ICAgICAud29yZCAgIDM0LFZJREVPXzgweDM0Ci0gICAgICAgIC53b3JkICAgNjAsVklERU9fODB4 NjAKLSAgICAgICAgLndvcmQgICAwCi0KLS5MdmdhX29wdDoKLSAgICAgICAgLmFzY2l6ICAidmdh IgotLkx2Z2FfdGV4dDgwOgotICAgICAgICAuYXNjaXogICJ0ZXh0LTgweCIKLS5MdmdhX2dmeDoK LSAgICAgICAgLmFzY2l6ICAiZ2Z4LSIKLS5MdmdhX21vZGU6Ci0gICAgICAgIC5hc2NpeiAgIm1v ZGUtIgotLkx2Z2FfY3VycmVudDoKLSAgICAgICAgLmFzY2l6ICAiY3VycmVudCIKLS5Mbm9fcm1f b3B0OgotICAgICAgICAuYXNjaXogICJuby1yZWFsLW1vZGUiCi0uTHRib290X29wdDoKLSAgICAg ICAgLmFzY2l6ICAidGJvb3QiCi0uTGVkaWRfb3B0OgotICAgICAgICAuYXNjaXogICJlZGlkIgot LkxlZGlkX2ZvcmNlOgotICAgICAgICAuYXNjaXogICJmb3JjZSIKLS5MZWRpZF9ubzoKLSAgICAg ICAgLmFzY2l6ICAibm8iCi0uTGVkZF9vcHQ6Ci0gICAgICAgIC5hc2NpeiAgImVkZCIKLQotICAg ICAgICAucG9wc2VjdGlvbgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2Jvb3QvY21kbGluZS5j IGIveGVuL2FyY2gveDg2L2Jvb3QvY21kbGluZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLjA2YWEwNjQKLS0tIC9kZXYvbnVsbAorKysgYi94ZW4vYXJjaC94ODYvYm9vdC9j bWRsaW5lLmMKQEAgLTAsMCArMSwzNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUsIDIw MTYgT3JhY2xlIGFuZC9vciBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq CisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91 ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0 cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhP VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAq IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg KgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgYWxvbmcKKyAqIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUg PGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICoKKyAqIHN0cmxlbigpLCBzdHJuY21w KCksIHN0cmNocigpLCBzdHJzcG4oKSBhbmQgc3RyY3NwbigpIHdlcmUgY29waWVkIGZyb20KKyAq IExpbnV4IGtlcm5lbCBzb3VyY2UgKGxpbnV4L2xpYi9zdHJpbmcuYykuCisgKi8KKworLyoKKyAq IFRoaXMgZW50cnkgcG9pbnQgaXMgZW50ZXJlZCBmcm9tIHhlbi9hcmNoL3g4Ni9ib290L2hlYWQu UyB3aXRoOgorICogICAtIDB4NCglZXNwKSA9ICZjbWRsaW5lLAorICogICAtIDB4OCglZXNwKSA9 ICZlYXJseV9ib290X29wdHMuCisgKi8KK2FzbSAoCisgICAgIiAgICAudGV4dCAgICAgICAgICAg ICAgICAgICAgICAgICBcbiIKKyAgICAiICAgIC5nbG9ibCBfc3RhcnQgICAgICAgICAgICAgICAg IFxuIgorICAgICJfc3RhcnQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iCisgICAgIiAg ICBqbXAgIGNtZGxpbmVfcGFyc2VfZWFybHkgICAgICBcbiIKKyAgICApOworCisjaW5jbHVkZSAi ZGVmcy5oIgorI2luY2x1ZGUgInZpZGVvLmgiCisKKy8qIEtlZXAgaW4gc3luYyB3aXRoIHRyYW1w b2xpbmUuUzplYXJseV9ib290X29wdHMgbGFiZWwhICovCit0eXBlZGVmIHN0cnVjdCBfX3BhY2tl ZCB7CisgICAgdTggc2tpcF9yZWFsbW9kZTsKKyAgICB1OCBvcHRfZWRkOworICAgIHU4IG9wdF9l ZGlkOworICAgIHU4IHBhZGRpbmc7CisgICAgdTE2IGJvb3RfdmlkX21vZGU7CisgICAgdTE2IHZl c2Ffd2lkdGg7CisgICAgdTE2IHZlc2FfaGVpZ2h0OworICAgIHUxNiB2ZXNhX2RlcHRoOworfSBl YXJseV9ib290X29wdHNfdDsKKworLyoKKyAqIFNwYWNlIGFuZCBUQUIgYXJlIG9idmlvdXMgZGVs aW1pdGVycy4gSG93ZXZlciwgSSBhbQorICogYWRkaW5nICJcbiIgYW5kICJcciIgaGVyZSB0b28u IEp1c3QgaW4gY2FzZSB3aGVuCisgKiBjcmF6eSBib290bG9hZGVyL3VzZXIgcHV0cyB0aGVtIHNv bWV3aGVyZS4KKyAqLworc3RhdGljIGNvbnN0IGNoYXIgZGVsaW1fY2hhcnNfY29tbWFbXSA9ICIs IFxuXHJcdCI7CisKKyNkZWZpbmUgZGVsaW1fY2hhcnMJKGRlbGltX2NoYXJzX2NvbW1hICsgMSkK Kworc3RhdGljIHNpemVfdCBzdHJsZW4oY29uc3QgY2hhciAqcykKK3sKKyAgICBjb25zdCBjaGFy ICpzYzsKKworICAgIGZvciAoIHNjID0gczsgKnNjICE9ICdcMCc7ICsrc2MgKQorICAgICAgICAv KiBub3RoaW5nICovOworICAgIHJldHVybiBzYyAtIHM7Cit9CisKK3N0YXRpYyBpbnQgc3RybmNt cChjb25zdCBjaGFyICpjcywgY29uc3QgY2hhciAqY3QsIHNpemVfdCBjb3VudCkKK3sKKyAgICB1 bnNpZ25lZCBjaGFyIGMxLCBjMjsKKworICAgIHdoaWxlICggY291bnQgKQorICAgIHsKKyAgICAg ICAgYzEgPSAqY3MrKzsKKyAgICAgICAgYzIgPSAqY3QrKzsKKyAgICAgICAgaWYgKCBjMSAhPSBj MiApCisgICAgICAgICAgICByZXR1cm4gYzEgPCBjMiA/IC0xIDogMTsKKyAgICAgICAgaWYgKCAh YzEgKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNvdW50LS07CisgICAgfQorICAgIHJl dHVybiAwOworfQorCitzdGF0aWMgY2hhciAqc3RyY2hyKGNvbnN0IGNoYXIgKnMsIGludCBjKQor eworICAgIGZvciAoIDsgKnMgIT0gKGNoYXIpYzsgKytzICkKKyAgICAgICAgaWYgKCAqcyA9PSAn XDAnICkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiAoY2hhciAqKXM7Cit9 CisKK3N0YXRpYyBzaXplX3Qgc3Ryc3BuKGNvbnN0IGNoYXIgKnMsIGNvbnN0IGNoYXIgKmFjY2Vw dCkKK3sKKyAgICBjb25zdCBjaGFyICpwOworICAgIGNvbnN0IGNoYXIgKmE7CisgICAgc2l6ZV90 IGNvdW50ID0gMDsKKworICAgIGZvciAoIHAgPSBzOyAqcCAhPSAnXDAnOyArK3AgKQorICAgIHsK KyAgICAgICAgZm9yICggYSA9IGFjY2VwdDsgKmEgIT0gJ1wwJzsgKythICkKKyAgICAgICAgewor ICAgICAgICAgICAgaWYgKCAqcCA9PSAqYSApCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg ICAgIH0KKyAgICAgICAgaWYgKCAqYSA9PSAnXDAnICkKKyAgICAgICAgICAgIHJldHVybiBjb3Vu dDsKKyAgICAgICAgKytjb3VudDsKKyAgICB9CisgICAgcmV0dXJuIGNvdW50OworfQorCitzdGF0 aWMgc2l6ZV90IHN0cmNzcG4oY29uc3QgY2hhciAqcywgY29uc3QgY2hhciAqcmVqZWN0KQorewor ICAgIGNvbnN0IGNoYXIgKnA7CisgICAgY29uc3QgY2hhciAqcjsKKyAgICBzaXplX3QgY291bnQg PSAwOworCisgICAgZm9yICggcCA9IHM7ICpwICE9ICdcMCc7ICsrcCApCisgICAgeworICAgICAg ICBmb3IgKCByID0gcmVqZWN0OyAqciAhPSAnXDAnOyArK3IgKQorICAgICAgICB7CisgICAgICAg ICAgICBpZiAoICpwID09ICpyICkKKyAgICAgICAgICAgICAgICByZXR1cm4gY291bnQ7CisgICAg ICAgIH0KKyAgICAgICAgKytjb3VudDsKKyAgICB9CisgICAgcmV0dXJuIGNvdW50OworfQorCitz dGF0aWMgdW5zaWduZWQgaW50IHN0cnRvdWkoY29uc3QgY2hhciAqcywgY29uc3QgY2hhciAqc3Rv cCwgY29uc3QgY2hhciAqKm5leHQpCit7CisgICAgY2hhciBiYXNlID0gMTAsIGw7CisgICAgdW5z aWduZWQgbG9uZyBsb25nIHJlcyA9IDA7CisKKyAgICBpZiAoICpzID09ICcwJyApCisgICAgICBi YXNlID0gKHRvbG93ZXIoKisrcykgPT0gJ3gnKSA/ICgrK3MsIDE2KSA6IDg7CisKKyAgICBmb3Ig KCA7ICpzICE9ICdcMCc7ICsrcyApCisgICAgeworICAgICAgICBpZiAoIHN0b3AgJiYgc3RyY2hy KHN0b3AsICpzKSApCisgICAgICAgICAgICBnb3RvIG91dDsKKworICAgICAgICBpZiAoICpzIDwg JzAnIHx8ICgqcyA+ICc3JyAmJiBiYXNlID09IDgpICkKKyAgICAgICAgeworICAgICAgICAgICAg cmVzID0gVUlOVF9NQVg7CisgICAgICAgICAgICBnb3RvIG91dDsKKyAgICAgICAgfQorCisgICAg ICAgIGwgPSB0b2xvd2VyKCpzKTsKKworICAgICAgICBpZiAoICpzID4gJzknICYmIChiYXNlICE9 IDE2IHx8IGwgPCAnYScgfHwgbCA+ICdmJykgKQorICAgICAgICB7CisgICAgICAgICAgICByZXMg PSBVSU5UX01BWDsKKyAgICAgICAgICAgIGdvdG8gb3V0OworICAgICAgICB9CisKKyAgICAgICAg cmVzICo9IGJhc2U7CisgICAgICAgIHJlcyArPSAobCA+PSAnYScpID8gKGwgLSAnYScgKyAxMCkg OiAoKnMgLSAnMCcpOworCisgICAgICAgIGlmICggcmVzID49IFVJTlRfTUFYICkKKyAgICAgICAg eworICAgICAgICAgICAgcmVzID0gVUlOVF9NQVg7CisgICAgICAgICAgICBnb3RvIG91dDsKKyAg ICAgICAgfQorICAgIH0KKworIG91dDoKKyAgICBpZiAoIG5leHQgKQorICAgICAgKm5leHQgPSBz OworCisgICAgcmV0dXJuIHJlczsKK30KKworc3RhdGljIGludCBzdHJtYXhjbXAoY29uc3QgY2hh ciAqY3MsIGNvbnN0IGNoYXIgKmN0LCBjb25zdCBjaGFyICpfZGVsaW1fY2hhcnMpCit7CisgICAg cmV0dXJuIHN0cm5jbXAoY3MsIGN0LCBtYXgoc3RyY3NwbihjcywgX2RlbGltX2NoYXJzKSwgc3Ry bGVuKGN0KSkpOworfQorCitzdGF0aWMgaW50IHN0cnN1YmNtcChjb25zdCBjaGFyICpjcywgY29u c3QgY2hhciAqY3QpCit7CisgICAgcmV0dXJuIHN0cm5jbXAoY3MsIGN0LCBzdHJsZW4oY3QpKTsK K30KKworc3RhdGljIGNvbnN0IGNoYXIgKmZpbmRfb3B0KGNvbnN0IGNoYXIgKmNtZGxpbmUsIGNv bnN0IGNoYXIgKm9wdCwgYm9vbCBhcmcpCit7CisgICAgc2l6ZV90IGxjLCBsbzsKKworICAgIGxv ID0gc3RybGVuKG9wdCk7CisKKyAgICBmb3IgKCA7IDsgKQorICAgIHsKKyAgICAgICAgY21kbGlu ZSArPSBzdHJzcG4oY21kbGluZSwgZGVsaW1fY2hhcnMpOworCisgICAgICAgIGlmICggKmNtZGxp bmUgPT0gJ1wwJyApCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKworICAgICAgICBpZiAoICFz dHJtYXhjbXAoY21kbGluZSwgIi0tIiwgZGVsaW1fY2hhcnMpICkKKyAgICAgICAgICAgIHJldHVy biBOVUxMOworCisgICAgICAgIGxjID0gc3RyY3NwbihjbWRsaW5lLCBkZWxpbV9jaGFycyk7CisK KyAgICAgICAgaWYgKCAhc3RybmNtcChjbWRsaW5lLCBvcHQsIGFyZyA/IGxvIDogbWF4KGxjLCBs bykpICkKKyAgICAgICAgICAgIHJldHVybiBjbWRsaW5lICsgbG87CisKKyAgICAgICAgY21kbGlu ZSArPSBsYzsKKyAgICB9Cit9CisKK3N0YXRpYyBib29sIHNraXBfcmVhbG1vZGUoY29uc3QgY2hh ciAqY21kbGluZSkKK3sKKyAgICByZXR1cm4gZmluZF9vcHQoY21kbGluZSwgIm5vLXJlYWwtbW9k ZSIsIGZhbHNlKSB8fCBmaW5kX29wdChjbWRsaW5lLCAidGJvb3Q9IiwgdHJ1ZSk7Cit9CisKK3N0 YXRpYyB1OCBlZGRfcGFyc2UoY29uc3QgY2hhciAqY21kbGluZSkKK3sKKyAgICBjb25zdCBjaGFy ICpjOworCisgICAgYyA9IGZpbmRfb3B0KGNtZGxpbmUsICJlZGQ9IiwgdHJ1ZSk7CisKKyAgICBp ZiAoICFjICkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoICFzdHJtYXhjbXAoYywgIm9m ZiIsIGRlbGltX2NoYXJzKSApCisgICAgICAgIHJldHVybiAyOworCisgICAgcmV0dXJuICFzdHJt YXhjbXAoYywgInNraXBtYnIiLCBkZWxpbV9jaGFycyk7Cit9CisKK3N0YXRpYyB1OCBlZGlkX3Bh cnNlKGNvbnN0IGNoYXIgKmNtZGxpbmUpCit7CisgICAgY29uc3QgY2hhciAqYzsKKworICAgIGMg PSBmaW5kX29wdChjbWRsaW5lLCAiZWRpZD0iLCB0cnVlKTsKKworICAgIGlmICggIWMgKQorICAg ICAgICByZXR1cm4gMDsKKworICAgIGlmICggIXN0cm1heGNtcChjLCAiZm9yY2UiLCBkZWxpbV9j aGFycykgKQorICAgICAgICByZXR1cm4gMjsKKworICAgIHJldHVybiAhc3RybWF4Y21wKGMsICJu byIsIGRlbGltX2NoYXJzKTsKK30KKworc3RhdGljIHUxNiByb3dzMnZtb2RlKHVuc2lnbmVkIGlu dCByb3dzKQoreworICAgIHN3aXRjaCAoIHJvd3MgKQorICAgIHsKKyAgICBjYXNlIDI1OgorICAg ICAgICByZXR1cm4gVklERU9fODB4MjU7CisKKyAgICBjYXNlIDI4OgorICAgICAgICByZXR1cm4g VklERU9fODB4Mjg7CisKKyAgICBjYXNlIDMwOgorICAgICAgICByZXR1cm4gVklERU9fODB4MzA7 CisKKyAgICBjYXNlIDM0OgorICAgICAgICByZXR1cm4gVklERU9fODB4MzQ7CisKKyAgICBjYXNl IDQzOgorICAgICAgICByZXR1cm4gVklERU9fODB4NDM7CisKKyAgICBjYXNlIDUwOgorICAgICAg ICByZXR1cm4gVklERU9fODB4NTA7CisKKyAgICBjYXNlIDYwOgorICAgICAgICByZXR1cm4gVklE RU9fODB4NjA7CisKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gQVNLX1ZHQTsKKyAgICB9 Cit9CisKK3N0YXRpYyB2b2lkIHZnYV9wYXJzZShjb25zdCBjaGFyICpjbWRsaW5lLCBlYXJseV9i b290X29wdHNfdCAqZWJvKQoreworICAgIGNvbnN0IGNoYXIgKmM7CisgICAgdW5zaWduZWQgaW50 IHRtcCwgdmVzYV9kZXB0aCwgdmVzYV9oZWlnaHQsIHZlc2Ffd2lkdGg7CisKKyAgICBjID0gZmlu ZF9vcHQoY21kbGluZSwgInZnYT0iLCB0cnVlKTsKKworICAgIGlmICggIWMgKQorICAgICAgICBy ZXR1cm47CisKKyAgICBlYm8tPmJvb3RfdmlkX21vZGUgPSBBU0tfVkdBOworCisgICAgaWYgKCAh c3RybWF4Y21wKGMsICJjdXJyZW50IiwgZGVsaW1fY2hhcnNfY29tbWEpICkKKyAgICAgICAgZWJv LT5ib290X3ZpZF9tb2RlID0gVklERU9fQ1VSUkVOVF9NT0RFOworICAgIGVsc2UgaWYgKCAhc3Ry c3ViY21wKGMsICJ0ZXh0LTgweCIpICkKKyAgICB7CisgICAgICAgIGMgKz0gc3RybGVuKCJ0ZXh0 LTgweCIpOworICAgICAgICBlYm8tPmJvb3RfdmlkX21vZGUgPSByb3dzMnZtb2RlKHN0cnRvdWko YywgZGVsaW1fY2hhcnNfY29tbWEsIE5VTEwpKTsKKyAgICB9CisgICAgZWxzZSBpZiAoICFzdHJz dWJjbXAoYywgImdmeC0iKSApCisgICAgeworICAgICAgICB2ZXNhX3dpZHRoID0gc3RydG91aShj ICsgc3RybGVuKCJnZngtIiksICJ4IiwgJmMpOworCisgICAgICAgIGlmICggdmVzYV93aWR0aCA+ IFUxNl9NQVggKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIC8qCisgICAgICAgICAq IEluY3JlbWVudCBjIG91dHNpZGUgb2Ygc3RydG91aSgpIGJlY2F1c2Ugb3RoZXJ3aXNlIHNvbWUK KyAgICAgICAgICogY29tcGlsZXIgbWF5IGNvbXBsYWluIHdpdGggZm9sbG93aW5nIG1lc3NhZ2U6 CisgICAgICAgICAqIHdhcm5pbmc6IG9wZXJhdGlvbiBvbiAnYycgbWF5IGJlIHVuZGVmaW5lZC4K KyAgICAgICAgICovCisgICAgICAgICsrYzsKKyAgICAgICAgdmVzYV9oZWlnaHQgPSBzdHJ0b3Vp KGMsICJ4IiwgJmMpOworCisgICAgICAgIGlmICggdmVzYV9oZWlnaHQgPiBVMTZfTUFYICkKKyAg ICAgICAgICAgIHJldHVybjsKKworICAgICAgICB2ZXNhX2RlcHRoID0gc3RydG91aSgrK2MsIGRl bGltX2NoYXJzX2NvbW1hLCBOVUxMKTsKKworICAgICAgICBpZiAoIHZlc2FfZGVwdGggPiBVMTZf TUFYICkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBlYm8tPnZlc2Ffd2lkdGggPSB2 ZXNhX3dpZHRoOworICAgICAgICBlYm8tPnZlc2FfaGVpZ2h0ID0gdmVzYV9oZWlnaHQ7CisgICAg ICAgIGViby0+dmVzYV9kZXB0aCA9IHZlc2FfZGVwdGg7CisgICAgICAgIGViby0+Ym9vdF92aWRf bW9kZSA9IFZJREVPX1ZFU0FfQllfU0laRTsKKyAgICB9CisgICAgZWxzZSBpZiAoICFzdHJzdWJj bXAoYywgIm1vZGUtIikgKQorICAgIHsKKyAgICAgICAgdG1wID0gc3RydG91aShjICsgc3RybGVu KCJtb2RlLSIpLCBkZWxpbV9jaGFyc19jb21tYSwgTlVMTCk7CisKKyAgICAgICAgaWYgKCB0bXAg PiBVMTZfTUFYICkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBlYm8tPmJvb3Rfdmlk X21vZGUgPSB0bXA7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBjbWRsaW5lX3BhcnNlX2Vh cmx5KGNvbnN0IGNoYXIgKmNtZGxpbmUsIGVhcmx5X2Jvb3Rfb3B0c190ICplYm8pCit7CisgICAg aWYgKCAhY21kbGluZSApCisgICAgICAgIHJldHVybjsKKworICAgIGViby0+c2tpcF9yZWFsbW9k ZSA9IHNraXBfcmVhbG1vZGUoY21kbGluZSk7CisgICAgZWJvLT5vcHRfZWRkID0gZWRkX3BhcnNl KGNtZGxpbmUpOworICAgIGViby0+b3B0X2VkaWQgPSBlZGlkX3BhcnNlKGNtZGxpbmUpOworICAg IHZnYV9wYXJzZShjbWRsaW5lLCBlYm8pOworfQpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2Jv b3QvZGVmcy5oIGIveGVuL2FyY2gveDg2L2Jvb3QvZGVmcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLjZhYmRjMTUKLS0tIC9kZXYvbnVsbAorKysgYi94ZW4vYXJjaC94ODYv Ym9vdC9kZWZzLmgKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxNiBP cmFjbGUgYW5kL29yIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9w dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisg KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBhbG9uZworICogd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0 cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKgorICogbWF4KCkgd2FzIGNvcGllZCBmcm9t IHhlbi94ZW4vaW5jbHVkZS94ZW4va2VybmVsLmguCisgKi8KKworI2lmbmRlZiBfX0JPT1RfREVG U19IX18KKyNkZWZpbmUgX19CT09UX0RFRlNfSF9fCisKKyNpbmNsdWRlICIuLi8uLi8uLi9pbmNs dWRlL3hlbi9zdGRib29sLmgiCisKKyNkZWZpbmUgX19wYWNrZWQJX19hdHRyaWJ1dGVfXygoX19w YWNrZWRfXykpCisjZGVmaW5lIF9fc3RkY2FsbAlfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykp CisKKyNkZWZpbmUgTlVMTAkJKCh2b2lkICopMCkKKworI2RlZmluZSBBTElHTl9VUChhcmcsIGFs aWduKSBcCisgICAgICAgICAgICAgICAgKCgoYXJnKSArIChhbGlnbikgLSAxKSAmIH4oKHR5cGVv ZihhcmcpKShhbGlnbikgLSAxKSkKKworI2RlZmluZSBtaW4oeCx5KSAoeyBcCisgICAgICAgIGNv bnN0IHR5cGVvZih4KSBfeCA9ICh4KTsgICAgICAgXAorICAgICAgICBjb25zdCB0eXBlb2YoeSkg X3kgPSAoeSk7ICAgICAgIFwKKyAgICAgICAgKHZvaWQpICgmX3ggPT0gJl95KTsgICAgICAgICAg ICBcCisgICAgICAgIF94IDwgX3kgPyBfeCA6IF95OyB9KQorCisjZGVmaW5lIG1heCh4LHkpICh7 IFwKKyAgICAgICAgY29uc3QgdHlwZW9mKHgpIF94ID0gKHgpOyAgICAgICBcCisgICAgICAgIGNv bnN0IHR5cGVvZih5KSBfeSA9ICh5KTsgICAgICAgXAorICAgICAgICAodm9pZCkgKCZfeCA9PSAm X3kpOyAgICAgICAgICAgIFwKKyAgICAgICAgX3ggPiBfeSA/IF94IDogX3k7IH0pCisKKyNkZWZp bmUgX3AodmFsKQkJKCh2b2lkICopKHVuc2lnbmVkIGxvbmcpKHZhbCkpCisKKyNkZWZpbmUgdG9s b3dlcihjKQkoKGMpIHwgMHgyMCkKKwordHlwZWRlZiB1bnNpZ25lZCBjaGFyIHU4OwordHlwZWRl ZiB1bnNpZ25lZCBzaG9ydCB1MTY7Cit0eXBlZGVmIHVuc2lnbmVkIGludCB1MzI7Cit0eXBlZGVm IHVuc2lnbmVkIGxvbmcgbG9uZyB1NjQ7Cit0eXBlZGVmIHVuc2lnbmVkIGludCBzaXplX3Q7CisK KyNkZWZpbmUgVTE2X01BWAkJKCh1MTYpKH4wVSkpCisjZGVmaW5lIFVJTlRfTUFYCSh+MFUpCisK KyNlbmRpZiAvKiBfX0JPT1RfREVGU19IX18gKi8KZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9i b290L2VkZC5TIGIveGVuL2FyY2gveDg2L2Jvb3QvZWRkLlMKaW5kZXggNWM4MGRhNi4uNzMzNzFm OSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2Jvb3QvZWRkLlMKKysrIGIveGVuL2FyY2gveDg2 L2Jvb3QvZWRkLlMKQEAgLTE0Miw5ICsxNDIsNiBAQCBlZGRfbmV4dDoKIGVkZF9kb25lOgogICAg ICAgICByZXQKIAotb3B0X2VkZDoKLSAgICAgICAgLmJ5dGUgICAwICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICMgZWRkPW9uL29mZi9za2lwbWJyCi0KIEdMT0JBTChib290X2VkZF9pbmZv X25yKQogICAgICAgICAuYnl0ZSAgIDAKIEdMT0JBTChib290X21icl9zaWduYXR1cmVfbnIpCmRp ZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvYm9vdC9oZWFkLlMgYi94ZW4vYXJjaC94ODYvYm9vdC9o ZWFkLlMKaW5kZXggNmYyYzY2OC4uMTI2ZTJlMiAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2Jv b3QvaGVhZC5TCisrKyBiL3hlbi9hcmNoL3g4Ni9ib290L2hlYWQuUwpAQCAtMTgzLDggKzE4Mywx NiBAQCBfX3N0YXJ0OgogICAgICAgICBjbXAgICAgICRzeW1fcGh5cyhfX3RyYW1wb2xpbmVfc2Vn X3N0b3ApLCVlZGkKICAgICAgICAgamIgICAgICAxYgogCisgICAgICAgIC8qIEJhaWwgaWYgdGhl cmUgaXMgbm8gY29tbWFuZCBsaW5lIHRvIHBhcnNlLiAqLworICAgICAgICBtb3YgICAgIHN5bV9w aHlzKG11bHRpYm9vdF9wdHIpLCVlYngKKyAgICAgICAgdGVzdGwgICAkTUJJX0NNRExJTkUsTUJf ZmxhZ3MoJWVieCkKKyAgICAgICAganogICAgICAxZgorCisgICAgICAgIHB1c2hsICAgJHN5bV9w aHlzKGVhcmx5X2Jvb3Rfb3B0cykKKyAgICAgICAgcHVzaGwgICBNQl9jbWRsaW5lKCVlYngpCiAg ICAgICAgIGNhbGwgICAgY21kbGluZV9wYXJzZV9lYXJseQogCisxOgogICAgICAgICAvKiBTd2l0 Y2ggdG8gbG93LW1lbW9yeSBzdGFjay4gICovCiAgICAgICAgIG1vdiAgICAgc3ltX3BoeXModHJh bXBvbGluZV9waHlzKSwlZWRpCiAgICAgICAgIGxlYSAgICAgMHgxMDAwMCglZWRpKSwlZXNwCkBA IC0yMDAsNiArMjA4LDcgQEAgX19zdGFydDoKICAgICAgICAgLyogSnVtcCBpbnRvIHRoZSByZWxv Y2F0ZWQgdHJhbXBvbGluZS4gKi8KICAgICAgICAgbHJldAogCitjbWRsaW5lX3BhcnNlX2Vhcmx5 OgogI2luY2x1ZGUgImNtZGxpbmUuUyIKIAogcmVsb2M6CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94 ODYvYm9vdC9yZWxvYy5jIGIveGVuL2FyY2gveDg2L2Jvb3QvcmVsb2MuYwppbmRleCBlYThjYjM3 Li45MTQwNWU5IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvYm9vdC9yZWxvYy5jCisrKyBiL3hl bi9hcmNoL3g4Ni9ib290L3JlbG9jLmMKQEAgLTIyLDE2ICsyMiw5IEBAIGFzbSAoCiAgICAgIiAg ICBqbXAgIHJlbG9jICAgICAgICAgICAgICAgICAgICBcbiIKICAgICApOwogCi10eXBlZGVmIHVu c2lnbmVkIGludCB1MzI7CisjaW5jbHVkZSAiZGVmcy5oIgogI2luY2x1ZGUgIi4uLy4uLy4uL2lu Y2x1ZGUveGVuL211bHRpYm9vdC5oIgogCi0jZGVmaW5lIF9fc3RkY2FsbAlfX2F0dHJpYnV0ZV9f KChfX3N0ZGNhbGxfXykpCi0KLSNkZWZpbmUgQUxJR05fVVAoYXJnLCBhbGlnbikgXAotICAgICAg ICAgICAgICAgICgoKGFyZykgKyAoYWxpZ24pIC0gMSkgJiB+KCh0eXBlb2YoYXJnKSkoYWxpZ24p IC0gMSkpCi0KLSNkZWZpbmUgX3AodmFsKQkJKCh2b2lkICopKHVuc2lnbmVkIGxvbmcpKHZhbCkp Ci0KIHN0YXRpYyB1MzIgYWxsb2M7CiAKIHN0YXRpYyB1MzIgYWxsb2NfbWVtKHUzMiBieXRlcykK ZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9ib290L3RyYW1wb2xpbmUuUyBiL3hlbi9hcmNoL3g4 Ni9ib290L3RyYW1wb2xpbmUuUwppbmRleCBiMDEzNjE0Li4yNzE1ZDE3IDEwMDY0NAotLS0gYS94 ZW4vYXJjaC94ODYvYm9vdC90cmFtcG9saW5lLlMKKysrIGIveGVuL2FyY2gveDg2L2Jvb3QvdHJh bXBvbGluZS5TCkBAIC0yMjAsOCArMjIwLDIzIEBAIHRyYW1wb2xpbmVfYm9vdF9jcHVfZW50cnk6 CiAgICAgICAgIC8qIEp1bXAgdG8gdGhlIGNvbW1vbiBib290c3RyYXAgZW50cnkgcG9pbnQuICov CiAgICAgICAgIGptcCAgICAgdHJhbXBvbGluZV9wcm90bW9kZV9lbnRyeQogCisjaW5jbHVkZSAi dmlkZW8uaCIKKworICAgICAgICAuYWxpZ24gIDIKKy8qIEtlZXAgaW4gc3luYyB3aXRoIGNtZGxp bmUuYzplYXJseV9ib290X29wdHNfdCB0eXBlISAqLworZWFybHlfYm9vdF9vcHRzOgogc2tpcF9y ZWFsbW9kZToKICAgICAgICAgLmJ5dGUgICAwCitvcHRfZWRkOgorICAgICAgICAuYnl0ZSAgIDAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZWRkPW9uL29mZi9za2lwbWJyICovCitv cHRfZWRpZDoKKyAgICAgICAgLmJ5dGUgICAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IC8qIEVESUQgcGFyc2luZyBvcHRpb24gKGZvcmNlL25vL2RlZmF1bHQpLiAqLworLyogUGFkZGlu Zy4gKi8KKyAgICAgICAgLmJ5dGUgICAwCitHTE9CQUwoYm9vdF92aWRfbW9kZSkKKyAgICAgICAg LndvcmQgICBWSURFT184MHgyNSAgICAgICAgICAgICAgICAgICAgIC8qIElmIHdlIGRvbid0IHJ1 biBhdCBhbGwsIGFzc3VtZSBiYXNpYyB2aWRlbyBtb2RlIDMgYXQgODB4MjUuICovCit2ZXNhX3Np emU6CisgICAgICAgIC53b3JkICAgMCwwLDAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB3 aWR0aCB4IGRlcHRoIHggaGVpZ2h0ICovCiAKIEdMT0JBTChrYmRfc2hpZnRfZmxhZ3MpCiAgICAg ICAgIC5ieXRlICAgMApkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2Jvb3QvdmlkZW8uUyBiL3hl bi9hcmNoL3g4Ni9ib290L3ZpZGVvLlMKaW5kZXggMmFhZmJlYi4uMzM1YTUxYyAxMDA2NDQKLS0t IGEveGVuL2FyY2gveDg2L2Jvb3QvdmlkZW8uUworKysgYi94ZW4vYXJjaC94ODYvYm9vdC92aWRl by5TCkBAIC05NDUsNyArOTQ1LDYgQEAgc3RvcmVfZWRpZDoKICNlbmRpZgogICAgICAgICByZXQK IAotb3B0X2VkaWQ6ICAgICAgIC5ieXRlICAgMCAgICAgICAjIEVESUQgcGFyc2luZyBvcHRpb24g KGZvcmNlL25vL2RlZmF1bHQpCiBtdF9lbmQ6ICAgICAgICAgLndvcmQgICAwICAgICAgICMgRW5k IG9mIHZpZGVvIG1vZGUgdGFibGUgaWYgYnVpbHQKIGVkaXRfYnVmOiAgICAgICAuc3BhY2UgIDYg ICAgICAgIyBMaW5lIGVkaXRvciBidWZmZXIKIGNhcmRfbmFtZTogICAgICAud29yZCAgIDAgICAg ICAgIyBQb2ludGVyIHRvIGFkYXB0ZXIgbmFtZQpAQCAtOTkxLDEyICs5OTAsNiBAQCBuYW1lX2Jh bm46ICAgICAgLmFzY2l6ICAiVmlkZW8gYWRhcHRlcjogIgogCiBmb3JjZV9zaXplOiAgICAgLndv cmQgICAwICAgICAgICMgVXNlIHRoaXMgc2l6ZSBpbnN0ZWFkIG9mIHRoZSBvbmUgaW4gQklPUyB2 YXJzCiAKLXZlc2Ffc2l6ZTogICAgICAud29yZCAgIDAsMCwwICAgIyB3aWR0aCB4IGRlcHRoIHgg aGVpZ2h0Ci0KLS8qIElmIHdlIGRvbid0IHJ1biBhdCBhbGwsIGFzc3VtZSBiYXNpYyB2aWRlbyBt b2RlIDMgYXQgODB4MjUuICovCi0gICAgICAgIC5hbGlnbiAgMgotR0xPQkFMKGJvb3RfdmlkX21v ZGUpCi0gICAgICAgIC53b3JkICAgVklERU9fODB4MjUKIEdMT0JBTChib290X3ZpZF9pbmZvKQog ICAgICAgICAuYnl0ZSAgIDAsIDAgICAgLyogb3JpZ194LCBvcmlnX3kgKi8KICAgICAgICAgLmJ5 dGUgICAzICAgICAgIC8qIHRleHQgbW9kZSAzICAgICovCi0tIAoxLjcuMTAuNAoKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5n IGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1k ZXZlbAo=