From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 19604 invoked by alias); 16 Oct 2011 16:41:27 -0000 Received: (qmail 19590 invoked by uid 22791); 16 Oct 2011 16:41:21 -0000 X-SWARE-Spam-Status: No, hits=2.7 required=5.0 tests=AWL,BAYES_50,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,KAM_STOCKTIP,RCVD_IN_DNSWL_LOW,TW_BJ,TW_GB,TW_YM X-Spam-Check-By: sourceware.org Received: from mail-bw0-f41.google.com (HELO mail-bw0-f41.google.com) (209.85.214.41) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Sun, 16 Oct 2011 16:41:02 +0000 Received: by bkbzu5 with SMTP id zu5so5309837bkb.0 for ; Sun, 16 Oct 2011 09:40:59 -0700 (PDT) Received: by 10.223.75.25 with SMTP id w25mr19145643faj.15.1318783259372; Sun, 16 Oct 2011 09:40:59 -0700 (PDT) MIME-Version: 1.0 Received: by 10.152.3.193 with HTTP; Sun, 16 Oct 2011 09:40:39 -0700 (PDT) In-Reply-To: References: <4E8DCE67.80507@earthlink.net> <4E92E639.7000402@earthlink.net> From: Justin Lebar Date: Sun, 16 Oct 2011 19:22:00 -0000 Message-ID: Subject: Re: Status of 'blacklist' patch? To: Doug Evans Cc: Stan Shebs , gdb-patches@sourceware.org Content-Type: multipart/mixed; boundary=0015174c1774b5ecfa04af6d27fe X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2011-10/txt/msg00446.txt.bz2 --0015174c1774b5ecfa04af6d27fe Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Content-length: 425 Added a NEWS entry in this patch. -Justin On Tue, Oct 11, 2011 at 7:54 PM, Doug Evans wrote: > On Tue, Oct 11, 2011 at 2:34 PM, Justin Lebar wr= ote: >> The attached patch addresses everything except this issue with >> gdbarch. =C2=A0I didn't rebase, so you should be able to use interdiff to >> view the changes. > > Nit: This requires a NEWS entry to mention the new commands. > --0015174c1774b5ecfa04af6d27fe Content-Type: text/x-patch; charset=US-ASCII; name="skip-3.diff" Content-Disposition: attachment; filename="skip-3.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gtu9fxo90 Content-length: 72729 ZGlmZiAtLWdpdCBhL2dkYi9DaGFuZ2VMb2cgYi9nZGIvQ2hhbmdlTG9nCmlu ZGV4IGExNjZkMTQuLjQzNjhlMWIgMTAwNjQ0Ci0tLSBhL2dkYi9DaGFuZ2VM b2cKKysrIGIvZ2RiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEx LTEwLTA2ICBKdXN0aW4gTGViYXIgIDxqdXN0aW4ubGViYXJAZ21haWwuY29t PgorCisJKiBNYWtlZmlsZS5pbjogKFNGSUxFUyk6IEFkZCBza2lwLmMuCisJ KEhGSUxFU19OT19TUkNESVIpOiBBZGQgc2tpcC5oLgorCShDT01NT05fT0JT KTogQWRkIHNraXAuby4KKwkqIHNraXAuaCwgc2tpcC5jOiBOZXcuCisJKiBi cmVha3BvaW50LmggKHNldF9kZWZhdWx0X2JyZWFrcG9pbnQpOiBSZW1vdmUu CisJKiBicmVha3BvaW50LmM6IFJlbW92ZSBkZWZhdWx0X2JyZWFrcG9pbnRf dmFsaWQsCisJZGVmYXVsdF9icmVha3BvaW50X2FkZHJlc3MsIGRlZmF1bHRf YnJlYWtwb2ludF9zeW10YWIsCisJZGVmYXVsdF9icmVha3BvaW50X2xpbmUs IGRlZmF1bHRfYnJlYWtwb2ludF9wc3BhY2UgdmFyaWFibGVzLgorCShzZXRf ZGVmYXVsdF9icmVha3BvaW50KTogUmVtb3ZlLgorCShwYXJzZV9icmVha3Bv aW50X3NhbHMsIGNyZWF0ZV9icmVha3BvaW50LCBjbGVhcl9jb21tYW5kLAor CWRlY29kZV9saW5lX3NwZWNfMSk6IFJlbW92ZSB1c2VzIG9mIGRlZmF1bHRf YnJlYWtwb2ludCB2YXJpYWJsZXM7CisJcmVwbGFjZWQgd2l0aCBmdW5jdGlv biBjYWxscyBpbnRvIHN0YWNrLmMuCisJKiBjbGkvY2xpLWNtZHMuaDogQWRk IGNtZF9saXN0X2VsZW1lbnQgKnNraXBsaXN0LgorCSogY2xpL2NsaS1jbWRz LmM6IEFkZCBza2lwbGlzdC4KKwkoaW5pdF9jbWRfbGlzdHMpOiBJbml0aWFs aXplIHNraXBsaXN0LgorCShpbml0X2NsaV9jbWRzKTogRml4IGNvbW1lbnQg KGNsYXNzZXMgb2YgY29tbWFuZHMgYXBwZWFyIGluCisJYWxwaGFiZXRpY2Fs IG9yZGVyKS4KKwkqIGluZnJ1bi5jIChoYW5kbGVfaW5mZXJpb3JfZXZlbnQp OiBBZGQgY2hlY2sgdGhhdCB3ZSBkb24ndCBzdGVwIGludG8KKwlhIGZ1bmN0 aW9uIHdob3NlIHBjIGlzIG1hcmtlZCBmb3Igc2tpcC4KKwkqIHN0YWNrLmM6 IERlY2xhcmUgbGFzdF9kaXNwbGF5ZWRfc2FsX3ZhbGlkLCBsYXN0X2Rpc3Bs YXllZF9wc3BhY2UsCisJbGFzdF9kaXNwbGF5ZWRfYWRkciwgbGFzdF9kaXNw bGF5ZWRfc3ltdGFiLCBsYXN0X2Rpc3BsYXllZF9saW5lCisJdmFyaWFibGVz LgorCShzZXRfbGFzdF9kaXNwbGF5ZWRfc2FsKTogTmV3IHN0YXRpYyBmdW5j dGlvbi4KKwkocHJpbnRfZnJhbWVfaW5mbyk6IFN3aXRjaCBjYWxsIHRvIHNl dF9kZWZhdWx0X2JyZWFrcG9pbnQgdG8gY2FsbCB0bworCXNldF9sYXN0X2Rp c3BsYXllZF9zYWwuCisJKGNsZWFyX2xhc3RfZGlzcGxheWVkX3NhbCwgbGFz dF9kaXNwbGF5ZWRfc2FsX2lzX3ZhbGlkLAorCWdldF9sYXN0X2Rpc3BsYXll ZF9wc3BhY2UsIGdldF9sYXN0X2Rpc3BsYXllZF9hZGRyLAorCWdldF9sYXN0 X2Rpc3BsYXllZF9zeW10YWIsIGdldF9sYXN0X2Rpc3BsYXllZF9saW5lLAor CWdldF9sYXN0X2Rpc3BsYXllZF9zYWwpOiBOZXcgcHVibGljIGZ1bmN0aW9u cy4KKwkqIHN0YWNrLmggKGNsZWFyX2xhc3RfZGlzcGxheWVkX3NhbCwgbGFz dF9kaXNwbGF5ZWRfc2FsX2lzX3ZhbGlkLAorCWdldF9sYXN0X2Rpc3BsYXll ZF9wc3BhY2UsIGdldF9sYXN0X2Rpc3BsYXllZF9hZGRyLAorCWdldF9sYXN0 X2Rpc3BsYXllZF9zeW10YWIsIGdldF9sYXN0X2Rpc3BsYXllZF9saW5lLAor CWdldF9sYXN0X2Rpc3BsYXllZF9zYWwpOiBEZWNsYXJlLgorCiAyMDExLTEw LTA1ICBUcmlzdGFuIEdpbmdvbGQgIDxnaW5nb2xkQGFkYWNvcmUuY29tPgog CiAJKiBhZGEtdGFza3MuYyAocmVhZF9hdGNiKTogTWFrZSByYXZlbnNjYXJf dGFza19uYW1lIHN0YXRpYy4KZGlmZiAtLWdpdCBhL2dkYi9NYWtlZmlsZS5p biBiL2dkYi9NYWtlZmlsZS5pbgppbmRleCA4MjZkMzM5Li5kNmIwMDRiIDEw MDY0NAotLS0gYS9nZGIvTWFrZWZpbGUuaW4KKysrIGIvZ2RiL01ha2VmaWxl LmluCkBAIC03MTksNyArNzE5LDcgQEAgU0ZJTEVTID0gYWRhLWV4cC55IGFk YS1sYW5nLmMgYWRhLXR5cGVwcmludC5jIGFkYS12YWxwcmludC5jIGFkYS10 YXNrcy5jIFwKIAlwcm9sb2d1ZS12YWx1ZS5jIHBzeW10YWIuYyBcCiAJcmVn Y2FjaGUuYyByZWdncm91cHMuYyByZW1vdGUuYyByZW1vdGUtZmlsZWlvLmMg cmV2ZXJzZS5jIFwKIAlzZW50aW5lbC1mcmFtZS5jIFwKLQlzZXJpYWwuYyBz ZXItYmFzZS5jIHNlci11bml4LmMgXAorCXNlcmlhbC5jIHNlci1iYXNlLmMg c2VyLXVuaXguYyBza2lwLmMgXAogCXNvbGliLmMgc29saWItdGFyZ2V0LmMg c291cmNlLmMgXAogCXN0YWJzcmVhZC5jIHN0YWNrLmMgc3RkLXJlZ3MuYyBz eW1maWxlLmMgc3ltZmlsZS1tZW0uYyBzeW1taXNjLmMgXAogCXN5bXRhYi5j IFwKQEAgLTgxOSw3ICs4MTksNyBAQCBvc2RhdGEuaCBwcm9jZnMuaCBweXRo b24vcHktZXZlbnQuaCBweXRob24vcHktZXZlbnRzLmggcHl0aG9uL3B5LXN0 b3BldmVudC5oIFwKIHB5dGhvbi9weXRob24taW50ZXJuYWwuaCBweXRob24v cHl0aG9uLmggcmF2ZW5zY2FyLXRocmVhZC5oIHJlY29yZC5oIFwKIHNvbGli LWRhcndpbi5oIHNvbGliLWlhNjQtaHB1eC5oIHNvbGliLXNwdS5oIHdpbmRv d3MtbmF0LmggeGNvZmZyZWFkLmggXAogZ251bGliL2V4dHJhL2FyZy1ub25u dWxsLmggZ251bGliL2V4dHJhL2MrK2RlZnMuaCBnbnVsaWIvZXh0cmEvd2Fy bi1vbi11c2UuaCBcCi1nbnVsaWIvc3RkZGVmLmluLmggaW5saW5lLWZyYW1l LmggXAorZ251bGliL3N0ZGRlZi5pbi5oIGlubGluZS1mcmFtZS5oIHNraXAu aCBcCiBjb21tb24vY29tbW9uLXV0aWxzLmggY29tbW9uL3htbC11dGlscy5o IGNvbW1vbi9idWZmZXIuaCBjb21tb24vcHRpZC5oIFwKIGNvbW1vbi9saW51 eC1vc2RhdGEuaAogCkBAIC05MDcsNyArOTA3LDcgQEAgQ09NTU9OX09CUyA9 ICQoREVQRklMRVMpICQoQ09ORklHX09CUykgJChZWU9CSikgXAogCXhtbC1z dXBwb3J0Lm8geG1sLXN5c2NhbGwubyB4bWwtdXRpbHMubyBcCiAJdGFyZ2V0 LWRlc2NyaXB0aW9ucy5vIHRhcmdldC1tZW1vcnkubyB4bWwtdGRlc2MubyB4 bWwtYnVpbHRpbi5vIFwKIAlpbmZlcmlvci5vIG9zZGF0YS5vIGdkYl91c2xl ZXAubyByZWNvcmQubyBnY29yZS5vIFwKLQlqaXQubyBwcm9nc3BhY2UubyBc CisJaml0Lm8gcHJvZ3NwYWNlLm8gc2tpcC5vIFwKIAljb21tb24tdXRpbHMu byBidWZmZXIubyBwdGlkLm8KIAogVFNPQlMgPSBpbmZsb3cubwpkaWZmIC0t Z2l0IGEvZ2RiL05FV1MgYi9nZGIvTkVXUwppbmRleCA0ZDQzNGM1Li41ZThk Njg5IDEwMDY0NAotLS0gYS9nZGIvTkVXUworKysgYi9nZGIvTkVXUwpAQCAt Myw2ICszLDkgQEAKIAogKioqIENoYW5nZXMgc2luY2UgR0RCIDcuMy4xCiAK KyogR0RCIG5vdyBhbGxvd3MgeW91IHRvIHNraXAgb3ZlciB1bmludGVyZXN0 aW5nIGZ1bmN0aW9ucyBhbmQgZmlsZXMgd2hlbgorICBzdGVwcGluZyB3aXRo IHRoZSAic2tpcCBmdW5jdGlvbiIgYW5kICJza2lwIGZpbGUiIGNvbW1hbmRz LgorCiAqIEdEQiBoYXMgdHdvIG5ldyBjb21tYW5kczogInNldCByZW1vdGUg aGFyZHdhcmUtd2F0Y2hwb2ludC1sZW5ndGgtbGltaXQiCiAgIGFuZCAic2hv dyByZW1vdGUgaGFyZHdhcmUtd2F0Y2hwb2ludC1sZW5ndGgtbGltaXQiLiAg VGhlc2UgYWxsb3dzIHRvCiAgIHNldCBvciBzaG93IHRoZSBtYXhpbXVtIGxl bmd0aCBsaW1pdCAoaW4gYnl0ZXMpIG9mIGEgcmVtb3RlCmRpZmYgLS1naXQg YS9nZGIvYnJlYWtwb2ludC5jIGIvZ2RiL2JyZWFrcG9pbnQuYwppbmRleCAw OGZmNjliLi5kNjZkNDJiIDEwMDY0NAotLS0gYS9nZGIvYnJlYWtwb2ludC5j CisrKyBiL2dkYi9icmVha3BvaW50LmMKQEAgLTY1LDYgKzY1LDggQEAKICNp bmNsdWRlICJwYXJzZXItZGVmcy5oIgogI2luY2x1ZGUgImNsaS9jbGktdXRp bHMuaCIKICNpbmNsdWRlICJjb250aW51YXRpb25zLmgiCisjaW5jbHVkZSAi c3RhY2suaCIKKyNpbmNsdWRlICJza2lwLmgiCiAKIC8qIHJlYWRsaW5lIGlu Y2x1ZGUgZmlsZXMgKi8KICNpbmNsdWRlICJyZWFkbGluZS9yZWFkbGluZS5o IgpAQCAtNTcyLDE5ICs1NzQsNiBAQCBtYWtlX2NsZWFudXBfZGVjcmVmX2Nv dW50ZWRfY29tbWFuZF9saW5lIChzdHJ1Y3QgY291bnRlZF9jb21tYW5kX2xp bmUgKipjbWRwKQogICByZXR1cm4gbWFrZV9jbGVhbnVwIChkb19jbGVhbnVw X2NvdW50ZWRfY29tbWFuZF9saW5lLCBjbWRwKTsKIH0KIAotLyogRGVmYXVs dCBhZGRyZXNzLCBzeW10YWIgYW5kIGxpbmUgdG8gcHV0IGEgYnJlYWtwb2lu dCBhdAotICAgZm9yICJicmVhayIgY29tbWFuZCB3aXRoIG5vIGFyZy4KLSAg IElmIGRlZmF1bHRfYnJlYWtwb2ludF92YWxpZCBpcyB6ZXJvLCB0aGUgb3Ro ZXIgdGhyZWUgYXJlCi0gICBub3QgdmFsaWQsIGFuZCAiYnJlYWsiIHdpdGgg bm8gYXJnIGlzIGFuIGVycm9yLgotCi0gICBUaGlzIHNldCBieSBwcmludF9z dGFja19mcmFtZSwgd2hpY2ggY2FsbHMgc2V0X2RlZmF1bHRfYnJlYWtwb2lu dC4gICovCi0KLWludCBkZWZhdWx0X2JyZWFrcG9pbnRfdmFsaWQ7Ci1DT1JF X0FERFIgZGVmYXVsdF9icmVha3BvaW50X2FkZHJlc3M7Ci1zdHJ1Y3Qgc3lt dGFiICpkZWZhdWx0X2JyZWFrcG9pbnRfc3ltdGFiOwotaW50IGRlZmF1bHRf YnJlYWtwb2ludF9saW5lOwotc3RydWN0IHByb2dyYW1fc3BhY2UgKmRlZmF1 bHRfYnJlYWtwb2ludF9wc3BhY2U7Ci0KIAwKIC8qIFJldHVybiB0aGUgYnJl YWtwb2ludCB3aXRoIHRoZSBzcGVjaWZpZWQgbnVtYmVyLCBvciBOVUxMCiAg ICBpZiB0aGUgbnVtYmVyIGRvZXMgbm90IHJlZmVyIHRvIGFuIGV4aXN0aW5n IGJyZWFrcG9pbnQuICAqLwpAQCAtNTMzOSwyMCArNTMyOCw2IEBAIGRlc2Ny aWJlX290aGVyX2JyZWFrcG9pbnRzIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJj aCwKICAgICB9CiB9CiAMCi0vKiBTZXQgdGhlIGRlZmF1bHQgcGxhY2UgdG8g cHV0IGEgYnJlYWtwb2ludAotICAgZm9yIHRoZSBgYnJlYWsnIGNvbW1hbmQg d2l0aCBubyBhcmd1bWVudHMuICAqLwotCi12b2lkCi1zZXRfZGVmYXVsdF9i cmVha3BvaW50IChpbnQgdmFsaWQsIHN0cnVjdCBwcm9ncmFtX3NwYWNlICpw c3BhY2UsCi0JCQlDT1JFX0FERFIgYWRkciwgc3RydWN0IHN5bXRhYiAqc3lt dGFiLAotCQkJaW50IGxpbmUpCi17Ci0gIGRlZmF1bHRfYnJlYWtwb2ludF92 YWxpZCA9IHZhbGlkOwotICBkZWZhdWx0X2JyZWFrcG9pbnRfcHNwYWNlID0g cHNwYWNlOwotICBkZWZhdWx0X2JyZWFrcG9pbnRfYWRkcmVzcyA9IGFkZHI7 Ci0gIGRlZmF1bHRfYnJlYWtwb2ludF9zeW10YWIgPSBzeW10YWI7Ci0gIGRl ZmF1bHRfYnJlYWtwb2ludF9saW5lID0gbGluZTsKLX0KIAogLyogUmV0dXJu IHRydWUgaWZmIGl0IGlzIG1lYW5pbmdmdWwgdG8gdXNlIHRoZSBhZGRyZXNz IG1lbWJlciBvZgogICAgQlBULiAgRm9yIHNvbWUgYnJlYWtwb2ludCB0eXBl cywgdGhlIGFkZHJlc3MgbWVtYmVyIGlzIGlycmVsZXZhbnQKQEAgLTc1NDMs MjQgKzc1MTgsMjYgQEAgcGFyc2VfYnJlYWtwb2ludF9zYWxzIChjaGFyICoq YWRkcmVzcywKICAgaWYgKCgqYWRkcmVzcykgPT0gTlVMTAogICAgICAgfHwg KHN0cm5jbXAgKCgqYWRkcmVzcyksICJpZiIsIDIpID09IDAgJiYgaXNzcGFj ZSAoKCphZGRyZXNzKVsyXSkpKQogICAgIHsKLSAgICAgIGlmIChkZWZhdWx0 X2JyZWFrcG9pbnRfdmFsaWQpCisgICAgICAvKiBUaGUgbGFzdCBkaXNwbGF5 ZWQgY29kZXBvaW50LCBpZiBpdCdzIHZhbGlkLCBpcyBvdXIgZGVmYXVsdCBi cmVha3BvaW50CisgICAgICAgICBhZGRyZXNzLiAqLworICAgICAgaWYgKGxh c3RfZGlzcGxheWVkX3NhbF9pc192YWxpZCAoKSkKIAl7CiAJICBzdHJ1Y3Qg c3ltdGFiX2FuZF9saW5lIHNhbDsKIAogCSAgaW5pdF9zYWwgKCZzYWwpOwkJ LyogSW5pdGlhbGl6ZSB0byB6ZXJvZXMuICAqLwogCSAgc2Fscy0+c2FscyA9 IChzdHJ1Y3Qgc3ltdGFiX2FuZF9saW5lICopCiAJICAgIHhtYWxsb2MgKHNp emVvZiAoc3RydWN0IHN5bXRhYl9hbmRfbGluZSkpOwotCSAgc2FsLnBjID0g ZGVmYXVsdF9icmVha3BvaW50X2FkZHJlc3M7Ci0JICBzYWwubGluZSA9IGRl ZmF1bHRfYnJlYWtwb2ludF9saW5lOwotCSAgc2FsLnN5bXRhYiA9IGRlZmF1 bHRfYnJlYWtwb2ludF9zeW10YWI7Ci0JICBzYWwucHNwYWNlID0gZGVmYXVs dF9icmVha3BvaW50X3BzcGFjZTsKLQkgIHNhbC5zZWN0aW9uID0gZmluZF9w Y19vdmVybGF5IChzYWwucGMpOworCisJICAvKiBTZXQgc2FsJ3MgcHNwYWNl LCBwYywgc3ltdGFiLCBhbmQgbGluZSB0byB0aGUgdmFsdWVzCisJICAgICBj b3JyZXNwb25kaW5nIHRvIHRoZSBsYXN0IGNhbGwgdG8gcHJpbnRfZnJhbWVf aW5mby4gKi8KKwkgIGdldF9sYXN0X2Rpc3BsYXllZF9zYWwgKCZzYWwpOwor ICAgICAgICAgIHNhbC5zZWN0aW9uID0gZmluZF9wY19vdmVybGF5IChzYWwu cGMpOwogCiAJICAvKiAiYnJlYWsiIHdpdGhvdXQgYXJndW1lbnRzIGlzIGVx dWl2YWxlbnQgdG8gImJyZWFrICpQQyIKLQkgICAgIHdoZXJlIFBDIGlzIHRo ZSBkZWZhdWx0X2JyZWFrcG9pbnRfYWRkcmVzcy4gIFNvIG1ha2Ugc3VyZQot CSAgICAgdG8gc2V0IHNhbC5leHBsaWNpdF9wYyB0byBwcmV2ZW50IEdEQiBm cm9tIHRyeWluZyB0bwotCSAgICAgZXhwYW5kIHRoZSBsaXN0IG9mIHNhbHMg dG8gaW5jbHVkZSBhbGwgb3RoZXIgaW5zdGFuY2VzCi0JICAgICB3aXRoIHRo ZSBzYW1lIHN5bXRhYiBhbmQgbGluZS4gICovCisJICAgICB3aGVyZSBQQyBp cyB0aGUgbGFzdCBkaXNwbGF5ZWQgY29kZXBvaW50J3MgYWRkcmVzcy4gIFNv CisJICAgICBtYWtlIHN1cmUgdG8gc2V0IHNhbC5leHBsaWNpdF9wYyB0byBw cmV2ZW50IEdEQiBmcm9tCisJICAgICB0cnlpbmcgdG8gZXhwYW5kIHRoZSBs aXN0IG9mIHNhbHMgdG8gaW5jbHVkZSBhbGwgb3RoZXIKKwkgICAgIGluc3Rh bmNlcyB3aXRoIHRoZSBzYW1lIHN5bXRhYiBhbmQgbGluZS4gICovCiAJICBz YWwuZXhwbGljaXRfcGMgPSAxOwogCiAJICBzYWxzLT5zYWxzWzBdID0gc2Fs OwpAQCAtNzU3NCwxOSArNzU1MSwyMiBAQCBwYXJzZV9icmVha3BvaW50X3Nh bHMgKGNoYXIgKiphZGRyZXNzLAogICAgICAgLyogRm9yY2UgYWxtb3N0IGFs bCBicmVha3BvaW50cyB0byBiZSBpbiB0ZXJtcyBvZiB0aGUKICAgICAgICAg IGN1cnJlbnRfc291cmNlX3N5bXRhYiAod2hpY2ggaXMgZGVjb2RlX2xpbmVf MSdzIGRlZmF1bHQpLgogICAgICAgICAgVGhpcyBzaG91bGQgcHJvZHVjZSB0 aGUgcmVzdWx0cyB3ZSB3YW50IGFsbW9zdCBhbGwgb2YgdGhlCi0gICAgICAg ICB0aW1lIHdoaWxlIGxlYXZpbmcgZGVmYXVsdF9icmVha3BvaW50XyogYWxv bmUuCisJIHRpbWUgd2hpbGUgbGVhdmluZyB0aGUgbGFzdCBkaXNwbGF5ZWQg Y29kZXBvaW50IHBvaW50ZXJzCisJIGFsb25lLgogCiAgICAgICAgICBPYmpD OiBIb3dldmVyLCBkb24ndCBtYXRjaCBhbiBPYmplY3RpdmUtQyBtZXRob2Qg bmFtZSB3aGljaAogICAgICAgICAgbWF5IGhhdmUgYSAnKycgb3IgJy0nIHN1 Y2NlZWRlZCBieSBhICdbJyAqLwogCSAKICAgICAgIHN0cnVjdCBzeW10YWJf YW5kX2xpbmUgY3Vyc2FsID0gZ2V0X2N1cnJlbnRfc291cmNlX3N5bXRhYl9h bmRfbGluZSAoKTsKIAkJCQotICAgICAgaWYgKGRlZmF1bHRfYnJlYWtwb2lu dF92YWxpZAorICAgICAgaWYgKGxhc3RfZGlzcGxheWVkX3NhbF9pc192YWxp ZCAoKQogCSAgJiYgKCFjdXJzYWwuc3ltdGFiCiAgCSAgICAgIHx8ICgoc3Ry Y2hyICgiKy0iLCAoKmFkZHJlc3MpWzBdKSAhPSBOVUxMKQogIAkJICAmJiAo KCphZGRyZXNzKVsxXSAhPSAnWycpKSkpCi0JKnNhbHMgPSBkZWNvZGVfbGlu ZV8xIChhZGRyZXNzLCAxLCBkZWZhdWx0X2JyZWFrcG9pbnRfc3ltdGFiLAot CQkJICAgICAgIGRlZmF1bHRfYnJlYWtwb2ludF9saW5lLCBjYW5vbmljYWwp OworCSpzYWxzID0gZGVjb2RlX2xpbmVfMSAoYWRkcmVzcywgMSwKKwkJCSAg ICAgICBnZXRfbGFzdF9kaXNwbGF5ZWRfc3ltdGFiICgpLAorCQkJICAgICAg IGdldF9sYXN0X2Rpc3BsYXllZF9saW5lICgpLAorCQkJICAgICAgIGNhbm9u aWNhbCk7CiAgICAgICBlbHNlCiAJKnNhbHMgPSBkZWNvZGVfbGluZV8xIChh ZGRyZXNzLCAxLCAoc3RydWN0IHN5bXRhYiAqKSBOVUxMLCAwLAogCQkgICAg ICAgICAgICAgICBjYW5vbmljYWwpOwpAQCAtOTYxMSw5ICs5NTkxLDExIEBA IHVudGlsX2JyZWFrX2NvbW1hbmQgKGNoYXIgKmFyZywgaW50IGZyb21fdHR5 LCBpbnQgYW55d2hlcmUpCiAgIC8qIFNldCBhIGJyZWFrcG9pbnQgd2hlcmUg dGhlIHVzZXIgd2FudHMgaXQgYW5kIGF0IHJldHVybiBmcm9tCiAgICAgIHRo aXMgZnVuY3Rpb24uICAqLwogCi0gIGlmIChkZWZhdWx0X2JyZWFrcG9pbnRf dmFsaWQpCi0gICAgc2FscyA9IGRlY29kZV9saW5lXzEgKCZhcmcsIDEsIGRl ZmF1bHRfYnJlYWtwb2ludF9zeW10YWIsCi0JCQkgIGRlZmF1bHRfYnJlYWtw b2ludF9saW5lLCBOVUxMKTsKKyAgaWYgKGxhc3RfZGlzcGxheWVkX3NhbF9p c192YWxpZCAoKSkKKyAgICBzYWxzID0gZGVjb2RlX2xpbmVfMSAoJmFyZywg MSwKKwkJCSAgZ2V0X2xhc3RfZGlzcGxheWVkX3N5bXRhYiAoKSwKKwkJCSAg Z2V0X2xhc3RfZGlzcGxheWVkX2xpbmUgKCksCisJCQkgIE5VTEwpOwogICBl bHNlCiAgICAgc2FscyA9IGRlY29kZV9saW5lXzEgKCZhcmcsIDEsIChzdHJ1 Y3Qgc3ltdGFiICopIE5VTEwsIDAsIE5VTEwpOwogCkBAIC0xMDEzNSwxMCAr MTAxMTcsMTEgQEAgY2xlYXJfY29tbWFuZCAoY2hhciAqYXJnLCBpbnQgZnJv bV90dHkpCiAJeG1hbGxvYyAoc2l6ZW9mIChzdHJ1Y3Qgc3ltdGFiX2FuZF9s aW5lKSk7CiAgICAgICBtYWtlX2NsZWFudXAgKHhmcmVlLCBzYWxzLnNhbHMp OwogICAgICAgaW5pdF9zYWwgKCZzYWwpOwkJLyogSW5pdGlhbGl6ZSB0byB6 ZXJvZXMuICAqLwotICAgICAgc2FsLmxpbmUgPSBkZWZhdWx0X2JyZWFrcG9p bnRfbGluZTsKLSAgICAgIHNhbC5zeW10YWIgPSBkZWZhdWx0X2JyZWFrcG9p bnRfc3ltdGFiOwotICAgICAgc2FsLnBjID0gZGVmYXVsdF9icmVha3BvaW50 X2FkZHJlc3M7Ci0gICAgICBzYWwucHNwYWNlID0gZGVmYXVsdF9icmVha3Bv aW50X3BzcGFjZTsKKworICAgICAgLyogU2V0IHNhbCdzIGxpbmUsIHN5bXRh YiwgcGMsIGFuZCBwc3BhY2UgdG8gdGhlIHZhbHVlcworCSBjb3JyZXNwb25k aW5nIHRvIHRoZSBsYXN0IGNhbGwgdG8gcHJpbnRfZnJhbWVfaW5mby4gIElm IHRoZQorCSBjb2RlcG9pbnQgaXMgbm90IHZhbGlkLCB0aGlzIHdpbGwgc2V0 IGFsbCB0aGUgZmllbGRzIHRvIDAuICovCisgICAgICBnZXRfbGFzdF9kaXNw bGF5ZWRfc2FsICgmc2FsKTsKICAgICAgIGlmIChzYWwuc3ltdGFiID09IDAp CiAJZXJyb3IgKF8oIk5vIHNvdXJjZSBmaWxlIHNwZWNpZmllZC4iKSk7CiAK QEAgLTExOTg2LDYgKzExOTY5LDkgQEAgYnJlYWtwb2ludF9yZV9zZXQgKHZv aWQpCiAgIGNyZWF0ZV9sb25nam1wX21hc3Rlcl9icmVha3BvaW50ICgpOwog ICBjcmVhdGVfc3RkX3Rlcm1pbmF0ZV9tYXN0ZXJfYnJlYWtwb2ludCAoKTsK ICAgY3JlYXRlX2V4Y2VwdGlvbl9tYXN0ZXJfYnJlYWtwb2ludCAoKTsKKwor ICAvKiBXaGlsZSB3ZSdyZSBhdCBpdCwgcmVzZXQgdGhlIHNraXAgbGlzdCB0 b28uICovCisgIHNraXBfcmVfc2V0ICgpOwogfQogDAogLyogUmVzZXQgdGhl IHRocmVhZCBudW1iZXIgb2YgdGhpcyBicmVha3BvaW50OgpAQCAtMTI0MzUs NyArMTI0MjEsOCBAQCBpbnZhbGlkYXRlX2JwX3ZhbHVlX29uX21lbW9yeV9j aGFuZ2UgKENPUkVfQUREUiBhZGRyLCBpbnQgbGVuLAogICAgICAgfQogfQog Ci0vKiBVc2UgZGVmYXVsdF9icmVha3BvaW50XydzLCBvciBub3RoaW5nIGlm IHRoZXkgYXJlbid0IHZhbGlkLiAgKi8KKy8qIFVzZSB0aGUgbGFzdCBkaXNw bGF5ZWQgY29kZXBvaW50J3MgdmFsdWVzLCBvciBub3RoaW5nCisgICBpZiB0 aGV5IGFyZW4ndCB2YWxpZC4gKi8KIAogc3RydWN0IHN5bXRhYnNfYW5kX2xp bmVzCiBkZWNvZGVfbGluZV9zcGVjXzEgKGNoYXIgKnN0cmluZywgaW50IGZ1 bmZpcnN0bGluZSkKQEAgLTEyNDQ0LDEwICsxMjQzMSwxMCBAQCBkZWNvZGVf bGluZV9zcGVjXzEgKGNoYXIgKnN0cmluZywgaW50IGZ1bmZpcnN0bGluZSkK IAogICBpZiAoc3RyaW5nID09IDApCiAgICAgZXJyb3IgKF8oIkVtcHR5IGxp bmUgc3BlY2lmaWNhdGlvbi4iKSk7Ci0gIGlmIChkZWZhdWx0X2JyZWFrcG9p bnRfdmFsaWQpCisgIGlmIChsYXN0X2Rpc3BsYXllZF9zYWxfaXNfdmFsaWQg KCkpCiAgICAgc2FscyA9IGRlY29kZV9saW5lXzEgKCZzdHJpbmcsIGZ1bmZp cnN0bGluZSwKLQkJCSAgZGVmYXVsdF9icmVha3BvaW50X3N5bXRhYiwKLQkJ CSAgZGVmYXVsdF9icmVha3BvaW50X2xpbmUsCisJCQkgIGdldF9sYXN0X2Rp c3BsYXllZF9zeW10YWIgKCksCisJCQkgIGdldF9sYXN0X2Rpc3BsYXllZF9s aW5lICgpLAogCQkJICBOVUxMKTsKICAgZWxzZQogICAgIHNhbHMgPSBkZWNv ZGVfbGluZV8xICgmc3RyaW5nLCBmdW5maXJzdGxpbmUsCmRpZmYgLS1naXQg YS9nZGIvYnJlYWtwb2ludC5oIGIvZ2RiL2JyZWFrcG9pbnQuaAppbmRleCA1 ZTVkMWI5Li5kN2UzNzk5IDEwMDY0NAotLS0gYS9nZGIvYnJlYWtwb2ludC5o CisrKyBiL2dkYi9icmVha3BvaW50LmgKQEAgLTEwMzMsOSArMTAzMyw2IEBA IGV4dGVybiBzdHJ1Y3QgYnJlYWtwb2ludCAqY2xvbmVfbW9tZW50YXJ5X2Jy ZWFrcG9pbnQgKHN0cnVjdCBicmVha3BvaW50ICpicGt0KTsKIAogZXh0ZXJu IHZvaWQgc2V0X2lnbm9yZV9jb3VudCAoaW50LCBpbnQsIGludCk7CiAKLWV4 dGVybiB2b2lkIHNldF9kZWZhdWx0X2JyZWFrcG9pbnQgKGludCwgc3RydWN0 IHByb2dyYW1fc3BhY2UgKiwKLQkJCQkgICAgQ09SRV9BRERSLCBzdHJ1Y3Qg c3ltdGFiICosIGludCk7Ci0KIGV4dGVybiB2b2lkIGJyZWFrcG9pbnRfaW5p dF9pbmZlcmlvciAoZW51bSBpbmZfY29udGV4dCk7CiAKIGV4dGVybiBzdHJ1 Y3QgY2xlYW51cCAqbWFrZV9jbGVhbnVwX2RlbGV0ZV9icmVha3BvaW50IChz dHJ1Y3QgYnJlYWtwb2ludCAqKTsKZGlmZiAtLWdpdCBhL2dkYi9jbGkvY2xp LWNtZHMuYyBiL2dkYi9jbGkvY2xpLWNtZHMuYwppbmRleCBjY2Y2ZWE2Li5k YWIzYTEyIDEwMDY0NAotLS0gYS9nZGIvY2xpL2NsaS1jbWRzLmMKKysrIGIv Z2RiL2NsaS9jbGktY21kcy5jCkBAIC0xODUsNiArMTg1LDggQEAgc3RydWN0 IGNtZF9saXN0X2VsZW1lbnQgKnNldGNoZWNrbGlzdDsKIAogc3RydWN0IGNt ZF9saXN0X2VsZW1lbnQgKnNob3djaGVja2xpc3Q7CiAKK3N0cnVjdCBjbWRf bGlzdF9lbGVtZW50ICpza2lwbGlzdDsKKwogLyogQ29tbWFuZCB0cmFjaW5n IHN0YXRlLiAgKi8KIAogaW50IHNvdXJjZV92ZXJib3NlID0gMDsKQEAgLTEz MjksNiArMTMzMSw3IEBAIGluaXRfY21kX2xpc3RzICh2b2lkKQogICBzaG93 cHJpbnRsaXN0ID0gTlVMTDsKICAgc2V0Y2hlY2tsaXN0ID0gTlVMTDsKICAg c2hvd2NoZWNrbGlzdCA9IE5VTEw7CisgIHNraXBsaXN0ID0gTlVMTDsKIH0K IAogc3RhdGljIHZvaWQKQEAgLTEzOTQsNyArMTM5Nyw3IEBAIGluaXRfY2xp X2NtZHMgKHZvaWQpCiAgIGNoYXIgKnNvdXJjZV9oZWxwX3RleHQ7CiAKICAg LyogRGVmaW5lIHRoZSBjbGFzc2VzIG9mIGNvbW1hbmRzLgotICAgICBUaGV5 IHdpbGwgYXBwZWFyIGluIHRoZSBoZWxwIGxpc3QgaW4gdGhlIHJldmVyc2Ug b2YgdGhpcyBvcmRlci4gICovCisgICAgIFRoZXkgd2lsbCBhcHBlYXIgaW4g dGhlIGhlbHAgbGlzdCBpbiBhbHBoYWJldGljYWwgb3JkZXIuICAqLwogCiAg IGFkZF9jbWQgKCJpbnRlcm5hbHMiLCBjbGFzc19tYWludGVuYW5jZSwgTlVM TCwgXygiXAogTWFpbnRlbmFuY2UgY29tbWFuZHMuXG5cCmRpZmYgLS1naXQg YS9nZGIvY2xpL2NsaS1jbWRzLmggYi9nZGIvY2xpL2NsaS1jbWRzLmgKaW5k ZXggZTc5ZGNmMC4uNzNjY2RkMiAxMDA2NDQKLS0tIGEvZ2RiL2NsaS9jbGkt Y21kcy5oCisrKyBiL2dkYi9jbGkvY2xpLWNtZHMuaApAQCAtMTA2LDYgKzEw Niw4IEBAIGV4dGVybiBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqc2V0Y2hl Y2tsaXN0OwogCiBleHRlcm4gc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKnNo b3djaGVja2xpc3Q7CiAKK2V4dGVybiBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVu dCAqc2tpcGxpc3Q7CisKIC8qIEV4cG9ydGVkIHRvIGdkYi90b3AuYyAqLwog CiB2b2lkIGluaXRfY21kX2xpc3RzICh2b2lkKTsKZGlmZiAtLWdpdCBhL2dk Yi9kb2MvZ2RiLnRleGluZm8gYi9nZGIvZG9jL2dkYi50ZXhpbmZvCmluZGV4 IGRkMGY3ZjYuLmE3YTdlOWMgMTAwNjQ0Ci0tLSBhL2dkYi9kb2MvZ2RiLnRl eGluZm8KKysrIGIvZ2RiL2RvYy9nZGIudGV4aW5mbwpAQCAtNDg1NCw2ICs0 ODU0LDEwOSBAQCBwcm9jZWVkIHVudGlsIHRoZSBmdW5jdGlvbiByZXR1cm5z LgogQW4gYXJndW1lbnQgaXMgYSByZXBlYXQgY291bnQsIGFzIGluIEBjb2Rl e25leHR9LgogQGVuZCB0YWJsZQogCitAbm9kZSBTa2lwcGluZyBPdmVyIEZ1 bmN0aW9ucyBhbmQgRmlsZXMKK0BzdWJzZWN0aW9uIFNraXBwaW5nIE92ZXIg RnVuY3Rpb25zIGFuZCBGaWxlcworQGNpbmRleCBza2lwCisKK1RoZSBwcm9n cmFtIHlvdSBhcmUgZGVidWdnaW5nIG1heSBjb250YWluIHNvbWUgZnVuY3Rp b25zIHdoaWNoIGFyZQordW5pbnRlcmVzdGluZyB0byBkZWJ1Zy4gIFRoZSBA Y29kZXtza2lwfSBjb21hbmQgbGV0cyB5b3UgdGVsbCBAdmFsdWV7R0RCTn0g dG8KK3NraXAgb3ZlciBhIGZpbGUgb3IgZnVuY3Rpb24gd2hlbiBzdGVwcGlu Zy4KKworRm9yIGV4YW1wbGUsIGNvbnNpZGVyIHRoZSBmb2xsb3dpbmcgQyBm dW5jdGlvbjoKKworQHNtYWxsZXhhbXBsZQorMTAxICAgICBpbnQgZnVuYygp CisxMDIgICAgIEB7CisxMDMgICAgICAgICBmb28oYm9yaW5nKCkpOworMTA0 ICAgICAgICAgYmFyKGJvcmluZygpKTsKKzEwNSAgICAgQH0KK0BlbmQgc21h bGxleGFtcGxlCisKK0Bub2luZGVudAorU3VwcG9zZSB5b3Ugd2lzaCB0byBz dGVwIGludG8gdGhlIGZ1bmN0aW9ucyBAY29kZXtmb299IGFuZCBAY29kZXti YXJ9LCBidXQgeW91CithcmUgbm90IGludGVyZXN0ZWQgaW4gc3RlcHBpbmcg dGhyb3VnaCBAY29kZXtib3Jpbmd9LiAgSWYgeW91IHJ1biBAY29kZXtzdGVw fQorYXQgbGluZSAxMDMsIHlvdSdsbCBlbnRlciBAY29kZXtib3JpbmcoKX0s IGJ1dCBpZiB5b3UgcnVuIEBjb2Rle25leHR9LCB5b3UnbGwKK3N0ZXAgb3Zl ciBib3RoIEBjb2Rle2Zvb30gYW5kIEBjb2Rle2JvcmluZ30hCisKK09uZSBz b2x1dGlvbiBpcyB0byBAY29kZXtzdGVwfSBpbnRvIEBjb2Rle2JvcmluZ30g YW5kIHVzZSB0aGUgQGNvZGV7ZmluaXNofQorY29tbWFuZCB0byBpbW1lZGlh dGVseSBleGl0IGl0LiAgQnV0IHRoaXMgY2FuIGJlY29tZSB0ZWRpb3VzIGlm IEBjb2Rle2JvcmluZ30KK2lzIGNhbGxlZCBmcm9tIG1hbnkgcGxhY2VzLgor CitBIG1vcmUgZmxleGlibGUgc29sdXRpb24gaXMgdG8gZXhlY3V0ZSBAY29k ZXtza2lwIGJvcmluZ30uICBUaGlzIGluc3RydWN0cworQHZhbHVle0dEQk59 IG5ldmVyIHRvIHN0ZXAgaW50byBAY29kZXtib3Jpbmd9LiAgTm93IHdoZW4g eW91IGV4ZWN1dGUKK0Bjb2Rle3N0ZXB9IGF0IGxpbmUgMTAzLCB5b3UnbGwg c3RlcCBvdmVyIEBjb2Rle2JvcmluZ30gYW5kIGRpcmVjdGx5IGludG8KK0Bj b2Rle2Zvb30uCisKK1lvdSBjYW4gYWxzbyBpbnN0cnVjdCBAdmFsdWV7R0RC Tn0gdG8gc2tpcCBhbGwgZnVuY3Rpb25zIGluIGEgZmlsZSwgd2l0aCwgZm9y CitleGFtcGxlLCBAY29kZXtza2lwIGZpbGUgYm9yaW5nLmN9LgorCitAdGFi bGUgQGNvZGUKK0BraW5kZXggc2tpcAorQGtpbmRleCBza2lwIGZ1bmN0aW9u CitAaXRlbSBza2lwIEBye1t9QHZhcntsaW5lc3BlY31AcntdfQorQGl0ZW14 IHNraXAgZnVuY3Rpb24gQHJ7W31AdmFye2xpbmVzcGVjfUBye119CitBZnRl ciBydW5uaW5nIHRoaXMgY29tbWFuZCwgdGhlIGZ1bmN0aW9uIG5hbWVkIGJ5 IEB2YXJ7bGluZXNwZWN9IG9yIHRoZQorZnVuY3Rpb24gY29udGFpbmluZyB0 aGUgbGluZSBuYW1lZCBieSBAdmFye2xpbmVzcGVjfSB3aWxsIGJlIHNraXBw ZWQgb3ZlciB3aGVuCitzdGVwcGluZy4gIChAcHhyZWZ7U3BlY2lmeSBMb2Nh dGlvbn0pIAorCitJZiB5b3UgZG8gbm90IHNwZWNpZnkgQHZhcntsaW5lc3Bl Y30sIHRoZSBmdW5jdGlvbiB5b3UncmUgY3VycmVudGx5IGRlYnVnZ2luZwor d2lsbCBiZSBza2lwcGVkLgorCitAa2luZGV4IHNraXAgZmlsZQorQGl0ZW0g c2tpcCBmaWxlIEBye1t9QHZhcntmaWxlbmFtZX1AcntdfQorQWZ0ZXIgcnVu bmluZyB0aGlzIGNvbW1hbmQsIGFueSBmdW5jdGlvbiB3aG9zZSBzb3VyY2Ug bGl2ZXMgaW4gQHZhcntmaWxlbmFtZX0KK3dpbGwgYmUgc2tpcHBlZCBvdmVy IHdoZW4gc3RlcHBpbmcuCisKK0lmIHlvdSBkbyBub3Qgc3BlY2lmeSBAdmFy e2ZpbGVuYW1lfSwgZnVuY3Rpb25zIHdob3NlIHNvdXJjZSBsaXZlcyBpbiB0 aGUgZmlsZQoreW91J3JlIGN1cnJlbnRseSBkZWJ1Z2dpbmcgd2lsbCBiZSBz a2lwcGVkLgorQGVuZCB0YWJsZQorCitTa2lwcyBjYW4gYmUgbGlzdGVkLCBk ZWxldGVkLCBkaXNhYmxlZCwgYW5kIGVuYWJsZWQsIG11Y2ggbGlrZSBicmVh a3BvaW50cy4KK1RoZXNlIGFyZSB0aGUgY29tbWFuZHMgZm9yIG1hbmFnaW5n IHlvdXIgbGlzdCBvZiBza2lwczoKKworQHRhYmxlIEBjb2RlCitAa2luZGV4 IGluZm8gc2tpcAorQGl0ZW0gaW5mbyBza2lwIEBye1t9QHZhcntufUBye119 CitQcmludCBkZXRhaWxzIGFib3V0IHRoZSBza2lwIHdpdGggaWRlbnRpZmll ciBAdmFye259LiAgSWYgQHZhcntufSBpcyBub3QKK3NwZWNpZmllZCwgcHJp bnQgYSB0YWJsZSB3aXRoIGRldGFpbHMgYWJvdXQgYWxsIGZ1bmN0aW9ucyBh bmQgZmlsZXMgbWFya2VkIGZvcgorc2tpcHBpbmcuICBAY29kZXtpbmZvIHNr aXB9IHByaW50cyB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uOgorCitAdGFi bGUgQGVtcGgKK0BpdGVtIElkZW50aWZpZXIKK0EgbnVtYmVyIGlkZW50aWZ5 aW5nIHRoaXMgc2tpcC4KK0BpdGVtIFR5cGUKK0BzYW1we2Z1bmN0aW9ufSBv ciBAc2FtcHtmaWxlfQorQGl0ZW0gRW5hYmxlZCBvciBEaXNhYmxlZAorRW5h YmxlZCBza2lwcyBhcmUgbWFya2VkIHdpdGggQHNhbXB7eX0uICBEaXNhYmxl ZCBza2lwcyBhcmUgbWFya2VkIHdpdGggQHNhbXB7bn0uCitAaXRlbSBBZGRy ZXNzCitGb3IgZnVuY3Rpb24gc2tpcHMsIHRoaXMgY29sdW1uIGluZGljYXRl cyB0aGUgYWRkcmVzcyBpbiBtZW1vcnkgb2YgdGhlIGZ1bmN0aW9uCitiZWlu ZyBza2lwcGVkLiAgSWYgeW91J3ZlIHNldCBhIGZ1bmN0aW9uIHNraXAgb24g YSBmdW5jdGlvbiB3aGljaCBoYXMgbm90IHlldAorYmVlbiBsb2FkZWQsIHRo aXMgZmllbGQgd2lsbCBjb250YWluIEBzYW1wezxQRU5ESU5HPn0uICBPbmNl IGEgc2hhcmVkIGxpYnJhcnkKK3doaWNoIGhhcyB0aGUgZnVuY3Rpb24gaXMg bG9hZGVkLCBAY29kZXtpbmZvIGJyZWFrfSB3aWxsIHNob3cgdGhlIGZ1bmN0 aW9uJ3MKK2FkZHJlc3MgaGVyZS4KK0BpdGVtIFdoYXQKK0ZvciBmaWxlIHNr aXBzLCB0aGlzIGZpZWxkIGNvbnRhaW5zIHRoZSBmaWxlbmFtZSBiZWluZyBz a2lwcGVkLiAgRm9yIGZ1bmN0aW9ucworc2tpcHMsIHRoaXMgZmllbGQgY29u dGFpbnMgdGhlIGZ1bmN0aW9uIG5hbWUgYW5kIGl0cyBsaW5lIG51bWJlciBp biB0aGUgZmlsZQord2hlcmUgaXQgaXMgZGVmaW5lZC4KK0BlbmQgdGFibGUK KworQGtpbmRleCBza2lwIGRlbGV0ZQorQGl0ZW0gc2tpcCBkZWxldGUgQHJ7 W31AdmFye259QHJ7XX0KK0RlbGV0ZSB0aGUgc2tpcCB3aXRoIGlkZW50aWZp ZXIgQHZhcntufS4gIElmIEB2YXJ7bn0gaXMgbm90IHNwZWNpZmllZCwgZGVs ZXRlCithbGwgc2tpcHMuCisKK0BraW5kZXggc2tpcCBlbmFibGUKK0BpdGVt IHNraXAgZW5hYmxlIEBye1t9QHZhcntufUBye119CitFbmFibGUgdGhlIHNr aXAgd2l0aCBpZGVudGlmaWVyIEB2YXJ7bn0uICBJZiBAdmFye259IGlzIG5v dCBzcGVjaWZpZWQsIGVuYWJsZQorYWxsIHNraXBzLgorCitAa2luZGV4IHNr aXAgZGlzYWJsZQorQGl0ZW0gc2tpcCBkaXNhYmxlIEBye1t9QHZhcntufUBy e119CitEaXNhYmxlIHRoZSBza2lwIHdpdGggaWRlbnRpZmllciBAdmFye259 LiAgSWYgQHZhcntufSBpcyBub3Qgc3BlY2lmaWVkLCBkaXNhYmxlCithbGwg c2tpcHMuCisKK0BlbmQgdGFibGUKKwogQG5vZGUgU2lnbmFscwogQHNlY3Rp b24gU2lnbmFscwogQGNpbmRleCBzaWduYWxzCmRpZmYgLS1naXQgYS9nZGIv Z2RiY21kLmggYi9nZGIvZ2RiY21kLmgKaW5kZXggYzAyY2U2OS4uNjA2Yjgx MiAxMDA2NDQKLS0tIGEvZ2RiL2dkYmNtZC5oCisrKyBiL2dkYi9nZGJjbWQu aApAQCAtMTI0LDYgKzEyNCw4IEBAIGV4dGVybiBzdHJ1Y3QgY21kX2xpc3Rf ZWxlbWVudCAqc2V0Y2hlY2tsaXN0OwogCiBleHRlcm4gc3RydWN0IGNtZF9s aXN0X2VsZW1lbnQgKnNob3djaGVja2xpc3Q7CiAKK2V4dGVybiBzdHJ1Y3Qg Y21kX2xpc3RfZWxlbWVudCAqc2tpcGxpc3Q7CisKIC8qIENoYWluIGNvbnRh aW5pbmcgYWxsIGRlZmluZWQgInNhdmUiIHN1YmNvbW1hbmRzLiAgKi8KIAog ZXh0ZXJuIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpzYXZlX2NtZGxpc3Q7 CmRpZmYgLS1naXQgYS9nZGIvaW5mcnVuLmMgYi9nZGIvaW5mcnVuLmMKaW5k ZXggMjI1MDM0Yy4uZThiZTEyMSAxMDA2NDQKLS0tIGEvZ2RiL2luZnJ1bi5j CisrKyBiL2dkYi9pbmZydW4uYwpAQCAtNTYsNiArNTYsNyBAQAogI2luY2x1 ZGUgInRyYWNlcG9pbnQuaCIKICNpbmNsdWRlICJjb250aW51YXRpb25zLmgi CiAjaW5jbHVkZSAiaW50ZXJwcy5oIgorI2luY2x1ZGUgInNraXAuaCIKIAog LyogUHJvdG90eXBlcyBmb3IgbG9jYWwgZnVuY3Rpb25zICovCiAKQEAgLTQ4 MjksNyArNDgzMCw4IEBAIHByb2Nlc3NfZXZlbnRfc3RvcF90ZXN0OgogCX0K IAogICAgICAgLyogSWYgd2UgaGF2ZSBsaW5lIG51bWJlciBpbmZvcm1hdGlv biBmb3IgdGhlIGZ1bmN0aW9uIHdlIGFyZQotICAgICAgICAgdGhpbmtpbmcg b2Ygc3RlcHBpbmcgaW50bywgc3RlcCBpbnRvIGl0LgorCSB0aGlua2luZyBv ZiBzdGVwcGluZyBpbnRvIGFuZCB0aGUgZnVuY3Rpb24gaXNuJ3Qgb24gdGhl IHNraXAKKwkgbGlzdCwgc3RlcCBpbnRvIGl0LgogCiAgICAgICAgICBJZiB0 aGVyZSBhcmUgc2V2ZXJhbCBzeW10YWJzIGF0IHRoYXQgUEMgKGUuZy4gd2l0 aCBpbmNsdWRlCiAgICAgICAgICBmaWxlcyksIGp1c3Qgd2FudCB0byBrbm93 IHdoZXRoZXIgKmFueSogb2YgdGhlbSBoYXZlIGxpbmUKQEAgLTQ4MzgsNyAr NDg0MCw4IEBAIHByb2Nlc3NfZXZlbnRfc3RvcF90ZXN0OgogCXN0cnVjdCBz eW10YWJfYW5kX2xpbmUgdG1wX3NhbDsKIAogCXRtcF9zYWwgPSBmaW5kX3Bj X2xpbmUgKGVjcy0+c3RvcF9mdW5jX3N0YXJ0LCAwKTsKLQlpZiAodG1wX3Nh bC5saW5lICE9IDApCisJaWYgKHRtcF9zYWwubGluZSAhPSAwICYmCisJICAg ICFmdW5jdGlvbl9wY19pc19tYXJrZWRfZm9yX3NraXAgKGVjcy0+c3RvcF9m dW5jX3N0YXJ0KSkKIAkgIHsKIAkgICAgaWYgKGV4ZWN1dGlvbl9kaXJlY3Rp b24gPT0gRVhFQ19SRVZFUlNFKQogCSAgICAgIGhhbmRsZV9zdGVwX2ludG9f ZnVuY3Rpb25fYmFja3dhcmQgKGdkYmFyY2gsIGVjcyk7CmRpZmYgLS1naXQg YS9nZGIvc2tpcC5jIGIvZ2RiL3NraXAuYwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi40MDA5OGJmCi0tLSAvZGV2L251bGwKKysrIGIv Z2RiL3NraXAuYwpAQCAtMCwwICsxLDYwOSBAQAorLyogU2tpcHBpbmcgb3Zl ciB1bmludGVyZXN0aW5nIGZpbGVzIGFuZCBmdW5jdGlvbnMgd2hlbiBkZWJ1 Z2dpbmcuCisKKyAgIENvcHlyaWdodCAoQykgMjAxMSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIEluYy4KKworICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkKKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgICB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBM aWNlbnNlLCBvcgorICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KKworICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRo ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICBidXQgV0lUSE9V VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZgorICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICAgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgWW91IHNo b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UKKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAg SWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAg Ki8KKworI2luY2x1ZGUgImRlZnMuaCIKKyNpbmNsdWRlICJza2lwLmgiCisj aW5jbHVkZSAidmFsdWUuaCIKKyNpbmNsdWRlICJ2YWxwcmludC5oIgorI2lu Y2x1ZGUgInVpLW91dC5oIgorI2luY2x1ZGUgImdkYl9zdHJpbmcuaCIKKyNp bmNsdWRlICJzeW10YWIuaCIKKyNpbmNsdWRlICJnZGJjbWQuaCIKKyNpbmNs dWRlICJjb21tYW5kLmgiCisjaW5jbHVkZSAiY29tcGxldGVyLmgiCisjaW5j bHVkZSAic3RhY2suaCIKKyNpbmNsdWRlICJhcmNoLXV0aWxzLmgiCisjaW5j bHVkZSAibGluZXNwZWMuaCIKKyNpbmNsdWRlICJvYmpmaWxlcy5oIgorI2lu Y2x1ZGUgImV4Y2VwdGlvbnMuaCIKKworc3RydWN0IHNraXBsaXN0X2VudHJ5 Cit7CisgIGludCBudW1iZXI7CisKKyAgLyogbnVsbCBpZiB0aGlzIGlzbid0 IGEgc2tpcGxpc3QgZW50cnkgZm9yIGFuIGVudGlyZSBmaWxlLgorICAgICBU aGUgc2tpcGxpc3QgZW50cnkgb3ducyB0aGlzIHBvaW50ZXIuICovCisgIGNo YXIgKmZpbGVuYW1lOworCisgIC8qIFRoZSBuYW1lIG9mIHRoZSBtYXJrZWQt Zm9yLXNraXAgZnVuY3Rpb24sIGlmIHRoaXMgaXMgYSBza2lwbGlzdAorICAg ICBlbnRyeSBmb3IgYSBmdW5jdGlvbi4gIE5vdGUgdGhhdCB0aGlzIG1pZ2h0 IGJlIG5vbi1udWxsIGV2ZW4gaWYKKyAgICAgdGhlIHBjIGlzIDAgaWYgdGhl IGVudHJ5IGlzIHBlbmRpbmcgYSBzaGFyZWQgbGlicmFyeSBsb2FkLgorCisg ICAgIFRoZSBza2lwbGlzdCBlbnRyeSBvd25zIHRoaXMgcG9pbnRlci4gKi8K KyAgY2hhciAqZnVuY3Rpb25fbmFtZTsKKworICAvKiAwIGlmIHRoaXMgaXMg YSBza2lwbGlzdCBlbnRyeSBmb3IgYW4gZW50aXJlIGZpbGUsIG9yIGlmIHRo aXMKKyAgICAgZW50cnkgd2lsbCBiZSBvbiBhIGZ1bmN0aW9uLCBwZW5kaW5n IGEgc2hhcmVkIGxpYnJhcnkgbG9hZC4gKi8KKyAgQ09SRV9BRERSIHBjOwor CisgIC8qIEFyY2hpdGVjdHVyZSB3ZSB1c2VkIHRvIGNyZWF0ZSB0aGUgc2tp cGxpc3QgZW50cnkuIE1heSBiZSBudWxsCisgICAgIGlmIHRoZSBlbnRyeSBp cyBwZW5kaW5nIGEgc2hhcmVkIGxpYnJhcnkgbG9hZC4gKi8KKyAgc3RydWN0 IGdkYmFyY2ggKmdkYmFyY2g7CisKKyAgaW50IGVuYWJsZWQ7CisgIGludCBw ZW5kaW5nOworCisgIHN0cnVjdCBza2lwbGlzdF9lbnRyeSAqbmV4dDsKK307 CisKK3N0YXRpYyB2b2lkIHNraXBfZnVuY3Rpb25fY29tbWFuZCAoY2hhciAq YXJnLCBpbnQgZnJvbV90dHkpOworc3RhdGljIHZvaWQgc2tpcF9maWxlX2Nv bW1hbmQgKGNoYXIgKmFyZywgaW50IGZyb21fdHR5KTsKK3N0YXRpYyB2b2lk IHNraXBfaW5mbyAoY2hhciAqYXJnLCBpbnQgZnJvbV90dHkpOworCitzdGF0 aWMgdm9pZCBhZGRfc2tpcGxpc3RfZW50cnkgKHN0cnVjdCBza2lwbGlzdF9l bnRyeSAqZSk7CitzdGF0aWMgdm9pZCBza2lwX2Z1bmN0aW9uX3BjIChDT1JF X0FERFIgcGMsIGNoYXIgKm5hbWUsCisJCQkgICAgICBzdHJ1Y3QgZ2RiYXJj aCAqYXJjaCwKKwkJCSAgICAgIGludCBwZW5kaW5nKTsKKy8vc3RhdGljIHZv aWQgdHJ5X3Jlc29sdmVfcGVuZGluZ19lbnRyeSAoc3RydWN0IHNraXBsaXN0 X2VudHJ5ICplKTsKK3N0YXRpYyBzdHJ1Y3QgZ2RiYXJjaCAqZ2V0X3NhbF9h cmNoIChzdHJ1Y3Qgc3ltdGFiX2FuZF9saW5lICpzYWwpOworCitzdGF0aWMg c3RydWN0IHNraXBsaXN0X2VudHJ5ICpza2lwbGlzdF9lbnRyeV9jaGFpbjsK K3N0YXRpYyBpbnQgc2tpcGxpc3RfZW50cnlfY291bnQ7CisKKyNkZWZpbmUg QUxMX1NLSVBMSVNUX0VOVFJJRVMoRSkgXAorICBmb3IgKEUgPSBza2lwbGlz dF9lbnRyeV9jaGFpbjsgRTsgRSA9IEUtPm5leHQpCisKKyNkZWZpbmUgQUxM X1NLSVBMSVNUX0VOVFJJRVNfU0FGRShFLFRNUCkgXAorICBmb3IgKEUgPSBz a2lwbGlzdF9lbnRyeV9jaGFpbjsgICAgICAgICBcCisgICAgICAgRSA/IChU TVAgPSBFLT5uZXh0LCAxKSA6IDA7ICAgICAgIFwKKyAgICAgICBFID0gVE1Q KQorCitzdGF0aWMgdm9pZAorc2tpcF9maWxlX2NvbW1hbmQgKGNoYXIgKmFy ZywgaW50IGZyb21fdHR5KQoreworICBzdHJ1Y3Qgc2tpcGxpc3RfZW50cnkg KmU7CisgIHN0cnVjdCBzeW10YWIgKnN5bXRhYjsKKyAgaW50IHBlbmRpbmcg PSAwOworICBjaGFyICpmaWxlbmFtZSA9IDA7CisKKyAgLyogSWYgbm8gYXJn dW1lbnQgd2FzIGdpdmVuLCB0cnkgdG8gZGVmYXVsdCB0byB0aGUgbGFzdAor ICAgICBkaXNwbGF5ZWQgY29kZXBvaW50LiAqLworICBpZiAoYXJnID09IDAp CisgICAgeworICAgICAgc3ltdGFiID0gZ2V0X2xhc3RfZGlzcGxheWVkX3N5 bXRhYiAoKTsKKyAgICAgIGlmIChzeW10YWIgPT0gMCkKKwllcnJvciAoXygi Tm8gZGVmYXVsdCBmaWxlIG5vdy4iKSk7CisgICAgICBlbHNlCisJZmlsZW5h bWUgPSBzeW10YWItPmZpbGVuYW1lOworICAgIH0KKyAgZWxzZQorICAgIHsK KyAgICAgIHN5bXRhYiA9IGxvb2t1cF9zeW10YWIgKGFyZyk7CisgICAgICBp ZiAoc3ltdGFiID09IDApCisJeworCSAgZnByaW50Zl9maWx0ZXJlZCAoZ2Ri X3N0ZGVyciwgXygiTm8gc291cmNlIGZpbGUgbmFtZWQgJXMuXG4iKSwgYXJn KTsKKwkgIGlmICghbnF1ZXJ5IChfKCJcCitJZ25vcmUgZmlsZSBwZW5kaW5n IGZ1dHVyZSBzaGFyZWQgbGlicmFyeSBsb2FkPyAiKSkpCisJICAgIHJldHVy bjsKKworCSAgcGVuZGluZyA9IDE7CisJICBmaWxlbmFtZSA9IGFyZzsKKwl9 CisgICAgICBlbHNlCisJZmlsZW5hbWUgPSBzeW10YWItPmZpbGVuYW1lOwor ICAgIH0KKworICBlID0gWFpBTExPQyAoc3RydWN0IHNraXBsaXN0X2VudHJ5 KTsKKyAgZS0+ZmlsZW5hbWUgPSB4c3RyZHVwIChmaWxlbmFtZSk7CisgIGUt PmVuYWJsZWQgPSAxOworICBlLT5wZW5kaW5nID0gcGVuZGluZzsKKyAgaWYg KHN5bXRhYiAhPSAwKQorICAgIGUtPmdkYmFyY2ggPSBnZXRfb2JqZmlsZV9h cmNoIChzeW10YWItPm9iamZpbGUpOworCisgIGFkZF9za2lwbGlzdF9lbnRy eSAoZSk7CisKKyAgcHJpbnRmX2ZpbHRlcmVkIChfKCJGaWxlICVzIHdpbGwg YmUgc2tpcHBlZCB3aGVuIHN0ZXBwaW5nLlxuIiksIGZpbGVuYW1lKTsKK30K Kworc3RhdGljIHZvaWQKK3NraXBfZnVuY3Rpb25fY29tbWFuZCAoY2hhciAq YXJnLCBpbnQgZnJvbV90dHkpCit7CisgIENPUkVfQUREUiBmdW5jX3BjOwor ICBjaGFyICpuYW1lID0gTlVMTDsKKworICAvKiBEZWZhdWx0IHRvIHRoZSBj dXJyZW50IGZ1bmN0aW9uIGlmIG5vIGFyZ3VtZW50IGlzIGdpdmVuLiAqLwor ICBpZiAoYXJnID09IDApCisgICAgeworICAgICAgQ09SRV9BRERSIHBjOwor ICAgICAgaWYgKCFsYXN0X2Rpc3BsYXllZF9zYWxfaXNfdmFsaWQgKCkpCisJ ZXJyb3IgKF8oIk5vIGRlZmF1bHQgZnVuY3Rpb24gbm93LiIpKTsKKworICAg ICAgcGMgPSBnZXRfbGFzdF9kaXNwbGF5ZWRfYWRkciAoKTsKKyAgICAgIGlm ICghZmluZF9wY19wYXJ0aWFsX2Z1bmN0aW9uIChwYywgJm5hbWUsICZmdW5j X3BjLCAwKSkKKwl7CisJICBlcnJvciAoXygiTm8gZnVuY3Rpb24gZm91bmQg Y29udGFpbmluZyBjdXJyZW50IHByb2dyYW0gcG9pbnQgJXMuIiksCisJCSAg cGFkZHJlc3MgKGdldF9jdXJyZW50X2FyY2ggKCksIHBjKSk7CisJfQorICAg ICAgc2tpcF9mdW5jdGlvbl9wYyAoZnVuY19wYywgbmFtZSwgZ2V0X2N1cnJl bnRfYXJjaCAoKSwgMCk7CisgICAgfQorICBlbHNlCisgICAgeworICAgICAg LyogRGVjb2RlIGFyZy4gIFdlIHNldCBmdW5maXJzdGxpbmU9MSBzbyBkZWNv ZGVfbGluZV8xIHdpbGwgZ2l2ZSB1cyB0aGUKKwkgZmlyc3QgbGluZSBvZiB0 aGUgZnVuY3Rpb24gc3BlY2lmaWVkLCBpZiBpdCBjYW4sIGFuZCBzbyB0aGF0 IHdlJ2xsCisJIHJlamVjdCB2YXJpYWJsZSBuYW1lcyBhbmQgdGhlIGxpa2Uu ICovCisKKyAgICAgIGludCBpOworICAgICAgaW50IHBlbmRpbmcgPSAwOwor ICAgICAgY2hhciAqb3JpZ19hcmcgPSBhcmc7IC8qIGRlY29kZV9saW5lXzEg bW9kaWZpZXMgdGhlIGFyZyBwb2ludGVyLiAqLworICAgICAgdm9sYXRpbGUg c3RydWN0IGdkYl9leGNlcHRpb24gZGVjb2RlX2V4Y2VwdGlvbjsKKyAgICAg IHN0cnVjdCBzeW10YWJzX2FuZF9saW5lcyBzYWxzOworCisgICAgICBUUllf Q0FUQ0goZGVjb2RlX2V4Y2VwdGlvbiwgTk9UX0ZPVU5EX0VSUk9SKQorCXsK KwkgIHNhbHMgPSBkZWNvZGVfbGluZV8xICgmYXJnLCAxLCAwLCAwLCAwKTsK Kwl9CisKKyAgICAgIGlmIChkZWNvZGVfZXhjZXB0aW9uLnJlYXNvbiA8IDAp CisgICAgICAgIHsKKwkgIGZwcmludGZfZmlsdGVyZWQgKGdkYl9zdGRlcnIs CisJCQkgICAgXygiTm8gZnVuY3Rpb24gZm91bmQgbmFtZWQgJXMuXG4iKSwg b3JpZ19hcmcpOworCisJICBpZiAobnF1ZXJ5IChfKCJcCitJZ25vcmUgZnVu Y3Rpb24gcGVuZGluZyBmdXR1cmUgc2hhcmVkIGxpYnJhcnkgbG9hZD8gIikp KQorCSAgICB7CisJICAgICAgLyogQWRkIHRoZSBwZW5kaW5nIHNraXBsaXN0 IGVudHJ5LiAqLworCSAgICAgIHNraXBfZnVuY3Rpb25fcGMgKDAsIG9yaWdf YXJnLCAwLCAxKTsKKwkgICAgfQorCisJICByZXR1cm47CisJfQorCisgICAg ICBpZiAoc2Fscy5uZWx0cyA+IDEpCisJZXJyb3IgKF8oIlNwZWNpZnkganVz dCBvbmUgZnVuY3Rpb24gYXQgYSB0aW1lLiIpKTsKKyAgICAgIGlmIChzdHJs ZW4gKGFyZykgIT0gMCkKKwllcnJvciAoXygiSnVuayBhdCBlbmQgb2YgYXJn dW1lbnRzLiIpKTsKKworICAgICAgLyogVGhlIHBjIGRlY29kZV9saW5lXzEg Z2l2ZXMgdXMgaXMgdGhlIGZpcnN0IGxpbmUgb2YgdGhlIGZ1bmN0aW9uLAor CSBidXQgd2UgYWN0dWFsbHkgd2FudCB0aGUgbGluZSBiZWZvcmUgdGhhdC4g IFRoZSBjYWxsIHRvCisJIGZpbmRfcGNfcGFydGlhbF9mdW5jdGlvbiBnZXRz IHVzIHRoZSB2YWx1ZSB3ZSBhY3R1YWxseSB3YW50LiAqLworICAgICAgewor CXN0cnVjdCBzeW10YWJfYW5kX2xpbmUgKnNhbCA9ICZzYWxzLnNhbHNbMF07 CisJQ09SRV9BRERSIHBjID0gc2FsLT5wYzsKKwlDT1JFX0FERFIgZnVuY19z dGFydCA9IDA7CisJc3RydWN0IGdkYmFyY2ggKmFyY2ggPSBnZXRfc2FsX2Fy Y2ggKHNhbCk7CisKKwlpZiAoIWZpbmRfcGNfcGFydGlhbF9mdW5jdGlvbiAo cGMsICZuYW1lLCAmZnVuY19zdGFydCwgMCkpCisJICB7CisJICAgIGVycm9y IChfKCJObyBmdW5jdGlvbiBmb3VuZCBjb250YWluaW5nIHByb2dyYW0gcG9p bnQgJXMuIiksCisJCSAgICAgcGFkZHJlc3MgKGFyY2gsIHBjKSk7CisJICB9 CisKKwlza2lwX2Z1bmN0aW9uX3BjIChmdW5jX3N0YXJ0LCBuYW1lLCBhcmNo LCAwKTsKKyAgICAgIH0KKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkCitza2lw X2luZm8gKGNoYXIgKmFyZywgaW50IGZyb21fdHR5KQoreworICBzdHJ1Y3Qg c2tpcGxpc3RfZW50cnkgKmU7CisgIGludCBudW1fcHJpbnRhYmxlX2VudHJp ZXMgPSAwOworICBpbnQgZW50cnlfbnVtID0gLTE7CisgIGludCBhZGRyZXNz X3dpZHRoID0gMTA7CisgIHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zIG9w dHM7CisgIHN0cnVjdCBjbGVhbnVwICp0YmxfY2hhaW47CisKKyAgZ2V0X3Vz ZXJfcHJpbnRfb3B0aW9ucyAoJm9wdHMpOworCisgIGlmIChhcmcgIT0gMCkK KyAgICB7CisgICAgICBlbnRyeV9udW0gPSBwYXJzZV9hbmRfZXZhbF9sb25n IChhcmcpOworICAgIH0KKworICAvKiBDb3VudCB0aGUgbnVtYmVyIG9mIHJv d3MgaW4gdGhlIHRhYmxlIGFuZCBzZWUgaWYgd2UgbmVlZCBzcGFjZSBmb3Ig YQorICAgICA2NC1iaXQgYWRkcmVzcyBhbnl3aGVyZS4gKi8KKyAgQUxMX1NL SVBMSVNUX0VOVFJJRVMgKGUpCisgICAgaWYgKGVudHJ5X251bSA9PSAtMSB8 fCBlLT5udW1iZXIgPT0gZW50cnlfbnVtKQorICAgICAgeworCW51bV9wcmlu dGFibGVfZW50cmllcysrOworCWlmIChlLT5nZGJhcmNoICYmIGdkYmFyY2hf YWRkcl9iaXQgKGUtPmdkYmFyY2gpID4gMzIpCisJICBhZGRyZXNzX3dpZHRo ID0gMTg7CisgICAgICB9CisKKyAgaWYgKG51bV9wcmludGFibGVfZW50cmll cyA9PSAwKQorICAgIHsKKyAgICAgIGlmIChlbnRyeV9udW0gPT0gLTEpCisJ dWlfb3V0X21lc3NhZ2UgKGN1cnJlbnRfdWlvdXQsIDAsIF8oIk5vdCBza2lw cGluZyBhbnkgZmlsZXMgb3IgZnVuY3Rpb25zLlxuIikpOworICAgICAgZWxz ZQorCXVpX291dF9tZXNzYWdlIChjdXJyZW50X3Vpb3V0LCAwLAorCQkJXygi Tm8gc2tpcGxpc3QgZW50cnkgbnVtYmVyZWQgJWQuXG4iKSwgZW50cnlfbnVt KTsKKworICAgICAgcmV0dXJuOworICAgIH0KKworICBpZiAob3B0cy5hZGRy ZXNzcHJpbnQpCisgICAgdGJsX2NoYWluCisgICAgICAgPSBtYWtlX2NsZWFu dXBfdWlfb3V0X3RhYmxlX2JlZ2luX2VuZCAoY3VycmVudF91aW91dCwgNSwg bnVtX3ByaW50YWJsZV9lbnRyaWVzLAorCQkJCQkgICAgICAiU2tpcGxpc3RU YWJsZSIpOworICBlbHNlCisgICAgdGJsX2NoYWluCisgICAgICAgPSBtYWtl X2NsZWFudXBfdWlfb3V0X3RhYmxlX2JlZ2luX2VuZCAoY3VycmVudF91aW91 dCwgNCwgbnVtX3ByaW50YWJsZV9lbnRyaWVzLAorCQkJCQkgICAgICAiU2tp cGxpc3RUYWJsZSIpOworCisgIHVpX291dF90YWJsZV9oZWFkZXIgKGN1cnJl bnRfdWlvdXQsIDcsIHVpX2xlZnQsICJudW1iZXIiLCAiTnVtIik7ICAgICAg ICAgICAgICAvKiAxICovCisgIHVpX291dF90YWJsZV9oZWFkZXIgKGN1cnJl bnRfdWlvdXQsIDE0LCB1aV9sZWZ0LCAidHlwZSIsICJUeXBlIik7ICAgICAg ICAgICAgICAvKiAyICovCisgIHVpX291dF90YWJsZV9oZWFkZXIgKGN1cnJl bnRfdWlvdXQsIDMsIHVpX2xlZnQsICJlbmFibGVkIiwgIkVuYiIpOyAgICAg ICAgICAgICAvKiAzICovCisgIGlmIChvcHRzLmFkZHJlc3NwcmludCkKKyAg ICB7CisgICAgICB1aV9vdXRfdGFibGVfaGVhZGVyIChjdXJyZW50X3Vpb3V0 LCBhZGRyZXNzX3dpZHRoLCB1aV9sZWZ0LAorCQkJICAgImFkZHIiLCAiQWRk cmVzcyIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDQgKi8KKyAg ICB9CisgIHVpX291dF90YWJsZV9oZWFkZXIgKGN1cnJlbnRfdWlvdXQsIDQw LCB1aV9ub2FsaWduLCAid2hhdCIsICJXaGF0Iik7ICAgICAgICAgICAvKiA1 ICovCisgIHVpX291dF90YWJsZV9ib2R5IChjdXJyZW50X3Vpb3V0KTsKKwor ICBBTExfU0tJUExJU1RfRU5UUklFUyAoZSkKKyAgICB7CisgICAgICBzdHJ1 Y3QgY2xlYW51cCAqZW50cnlfY2hhaW47CisKKyAgICAgIFFVSVQ7CisgICAg ICBpZiAoZW50cnlfbnVtICE9IC0xICYmIGVudHJ5X251bSAhPSBlLT5udW1i ZXIpCisJY29udGludWU7CisKKyAgICAgIGVudHJ5X2NoYWluID0gbWFrZV9j bGVhbnVwX3VpX291dF90dXBsZV9iZWdpbl9lbmQgKGN1cnJlbnRfdWlvdXQs ICJibGtsc3QtZW50cnkiKTsKKyAgICAgIHVpX291dF9maWVsZF9pbnQgKGN1 cnJlbnRfdWlvdXQsICJudW1iZXIiLCBlLT5udW1iZXIpOyAgICAgICAgICAg ICAgICAgICAgIC8qIDEgKi8KKworICAgICAgaWYgKGUtPmZ1bmN0aW9uX25h bWUgIT0gMCkKKwl1aV9vdXRfZmllbGRfc3RyaW5nIChjdXJyZW50X3Vpb3V0 LCAidHlwZSIsICJmdW5jdGlvbiIpOyAgICAgICAgICAgICAgICAgLyogMiAq LworICAgICAgZWxzZSBpZiAoZS0+ZmlsZW5hbWUgIT0gMCkKKwl1aV9vdXRf ZmllbGRfc3RyaW5nIChjdXJyZW50X3Vpb3V0LCAidHlwZSIsICJmaWxlIik7 ICAgICAgICAgICAgICAgICAgICAgLyogMiAqLworICAgICAgZWxzZQorCWlu dGVybmFsX2Vycm9yIChfX0ZJTEVfXywgX19MSU5FX18sIF8oIlwKK1NraXBs aXN0IGVudHJ5IHNob3VsZCBoYXZlIGVpdGhlciBhIGZpbGVuYW1lIG9yIGEg ZnVuY3Rpb24gbmFtZS4iKSk7CisKKyAgICAgIGlmIChlLT5lbmFibGVkKQor CXVpX291dF9maWVsZF9zdHJpbmcgKGN1cnJlbnRfdWlvdXQsICJlbmFibGVk IiwgInkiKTsgICAgICAgICAgICAgICAgICAgICAvKiAzICovCisgICAgICBl bHNlCisJdWlfb3V0X2ZpZWxkX3N0cmluZyAoY3VycmVudF91aW91dCwgImVu YWJsZWQiLCAibiIpOyAgICAgICAgICAgICAgICAgICAgIC8qIDMgKi8KKwor ICAgICAgaWYgKG9wdHMuYWRkcmVzc3ByaW50KQorCXsKKwkgIGlmIChlLT5w YyAhPSAwKQorCSAgICB1aV9vdXRfZmllbGRfY29yZV9hZGRyIChjdXJyZW50 X3Vpb3V0LCAiYWRkciIsIGUtPmdkYmFyY2gsIGUtPnBjKTsgICAvKiA0ICov CisJICBlbHNlCisJICAgIHVpX291dF9maWVsZF9zdHJpbmcgKGN1cnJlbnRf dWlvdXQsICJhZGRyIiwgIiIpOyAgICAgICAgICAgICAgICAgICAgIC8qIDQg Ki8KKwl9CisKKyAgICAgIGlmICghZS0+cGVuZGluZyAmJiBlLT5mdW5jdGlv bl9uYW1lICE9IDApCisJeworCSAgIHN0cnVjdCBzeW1ib2wgKnN5bTsKKwkg ICBnZGJfYXNzZXJ0IChlLT5wYyAhPSAwKTsKKwkgICBzeW0gPSBmaW5kX3Bj X2Z1bmN0aW9uIChlLT5wYyk7CisJICAgaWYgKHN5bSkKKwkgICAgIHVpX291 dF9maWVsZF9mbXQgKGN1cnJlbnRfdWlvdXQsICJ3aGF0IiwgIiVzIGF0ICVz OiVkIiwKKwkJCSAgICAgICBzeW0tPmdpbmZvLm5hbWUsCisJCQkgICAgICAg c3ltLT5zeW10YWItPmZpbGVuYW1lLAorCQkJICAgICAgIHN5bS0+bGluZSk7 CisJICAgZWxzZQorCSAgICAgdWlfb3V0X2ZpZWxkX3N0cmluZyAoY3VycmVu dF91aW91dCwgIndoYXQiLCAiPyIpOworCX0KKyAgICAgIGVsc2UgaWYgKGUt PnBlbmRpbmcgJiYgZS0+ZnVuY3Rpb25fbmFtZSAhPSAwKQorCXsKKwkgIHVp X291dF9maWVsZF9mbXQgKGN1cnJlbnRfdWlvdXQsICJ3aGF0IiwgIiVzIChQ RU5ESU5HKSIsCisJCQkgICAgZS0+ZnVuY3Rpb25fbmFtZSk7CisJfQorICAg ICAgZWxzZSBpZiAoIWUtPnBlbmRpbmcgJiYgZS0+ZmlsZW5hbWUgIT0gMCkK Kwl1aV9vdXRfZmllbGRfc3RyaW5nIChjdXJyZW50X3Vpb3V0LCAid2hhdCIs IGUtPmZpbGVuYW1lKTsKKyAgICAgIGVsc2UgaWYgKGUtPnBlbmRpbmcgJiYg ZS0+ZmlsZW5hbWUgIT0gMCkKKwl1aV9vdXRfZmllbGRfZm10IChjdXJyZW50 X3Vpb3V0LCAid2hhdCIsICIlcyAoUEVORElORykiLAorCQkJICBlLT5maWxl bmFtZSk7CisKKyAgICAgIHVpX291dF90ZXh0IChjdXJyZW50X3Vpb3V0LCAi XG4iKTsKKyAgICAgIGRvX2NsZWFudXBzIChlbnRyeV9jaGFpbik7CisgICAg fQorCisgIGRvX2NsZWFudXBzICh0YmxfY2hhaW4pOworfQorCitzdGF0aWMg dm9pZAorc2tpcF9lbmFibGVfY29tbWFuZCAoY2hhciAqYXJnLCBpbnQgZnJv bV90dHkpCit7CisgIHN0cnVjdCBza2lwbGlzdF9lbnRyeSAqZTsKKyAgaW50 IGVudHJ5X251bTsKKyAgaWYgKGFyZyA9PSAwKQorICAgIHsKKyAgICAgIEFM TF9TS0lQTElTVF9FTlRSSUVTIChlKQorICAgICAgICBlLT5lbmFibGVkID0g MTsKKyAgICAgIHJldHVybjsKKyAgICB9CisKKyAgZW50cnlfbnVtID0gcGFy c2VfYW5kX2V2YWxfbG9uZyAoYXJnKTsKKyAgQUxMX1NLSVBMSVNUX0VOVFJJ RVMgKGUpCisgICAgaWYgKGUtPm51bWJlciA9PSBlbnRyeV9udW0pCisgICAg ICB7CisgICAgICAgIGUtPmVuYWJsZWQgPSAxOworICAgICAgICByZXR1cm47 CisgICAgICB9CisKKyAgZXJyb3IgKF8oIk5vIHNraXBsaXN0IGVudHJ5IG51 bWJlcmVkICVkLiIpLCBlbnRyeV9udW0pOworfQorCitzdGF0aWMgdm9pZAor c2tpcF9kaXNhYmxlX2NvbW1hbmQgKGNoYXIgKmFyZywgaW50IGZyb21fdHR5 KQoreworICBzdHJ1Y3Qgc2tpcGxpc3RfZW50cnkgKmU7CisgIGludCBlbnRy eV9udW07CisgIGlmIChhcmcgPT0gMCkKKyAgICB7CisgICAgICBBTExfU0tJ UExJU1RfRU5UUklFUyAoZSkKKyAgICAgICAgZS0+ZW5hYmxlZCA9IDA7Cisg ICAgICByZXR1cm47CisgICAgfQorCisgIGVudHJ5X251bSA9IHBhcnNlX2Fu ZF9ldmFsX2xvbmcgKGFyZyk7CisgIEFMTF9TS0lQTElTVF9FTlRSSUVTIChl KQorICAgIGlmIChlLT5udW1iZXIgPT0gZW50cnlfbnVtKQorICAgICAgewor CWUtPmVuYWJsZWQgPSAwOworCXJldHVybjsKKyAgICAgIH0KKworICBlcnJv ciAoXygiTm8gc2tpcGxpc3QgZW50cnkgbnVtYmVyZWQgJWQuIiksIGVudHJ5 X251bSk7Cit9CisKK3N0YXRpYyB2b2lkCitza2lwX2RlbGV0ZV9jb21tYW5k IChjaGFyICphcmcsIGludCBmcm9tX3R0eSkKK3sKKyAgc3RydWN0IHNraXBs aXN0X2VudHJ5ICplLCAqdGVtcCwgKmJfcHJldjsKKyAgaW50IGVudHJ5X251 bTsKKworICBpZiAoYXJnID09IDApCisgICAgeworICAgICAgQUxMX1NLSVBM SVNUX0VOVFJJRVNfU0FGRShlLCB0ZW1wKQorICAgICAgICB7CisgICAgICAg ICAgeGZyZWUgKGUtPmZ1bmN0aW9uX25hbWUpOworICAgICAgICAgIHhmcmVl IChlLT5maWxlbmFtZSk7CisgICAgICAgICAgeGZyZWUgKGUpOworICAgICAg ICB9CisgICAgICBza2lwbGlzdF9lbnRyeV9jaGFpbiA9IDA7CisgICAgICBy ZXR1cm47CisgICAgfQorCisgIC8qIFdlIGRvbid0IG5lZWQgdG8gdXNlIGEg U0FGRSBtYWNybyBoZXJlIHNpbmNlIHdlIHJldHVybiBhcyBzb29uIGFzIHdl CisgICAgIHJlbW92ZSBhbiBlbGVtZW50IGZyb20gdGhlIGxpc3QuICovCisg IGVudHJ5X251bSA9IHBhcnNlX2FuZF9ldmFsX2xvbmcgKGFyZyk7CisgIGJf cHJldiA9IDA7CisgIEFMTF9TS0lQTElTVF9FTlRSSUVTIChlKQorICAgIGlm IChlLT5udW1iZXIgPT0gZW50cnlfbnVtKQorICAgICAgeworCWlmIChiX3By ZXYgIT0gMCkKKwkgIGJfcHJldi0+bmV4dCA9IGUtPm5leHQ7CisJZWxzZQor CSAgc2tpcGxpc3RfZW50cnlfY2hhaW4gPSBlLT5uZXh0OworCisJeGZyZWUg KGUtPmZ1bmN0aW9uX25hbWUpOworCXhmcmVlIChlLT5maWxlbmFtZSk7CisJ eGZyZWUgKGUpOworCXJldHVybjsKKyAgICAgIH0KKyAgICBlbHNlCisgICAg ICB7CisJYl9wcmV2ID0gZTsKKyAgICAgIH0KKworICBlcnJvciAoXygiTm8g c2tpcGxpc3QgZW50cnkgbnVtYmVyZWQgJWQuIiksIGVudHJ5X251bSk7Cit9 CisKKy8qIENyZWF0ZSBhIHNraXBsaXN0IGVudHJ5IGZvciB0aGUgZ2l2ZW4g cGMgY29ycmVzcG9uZGluZyB0byB0aGUgZ2l2ZW4KKyAgIGZ1bmN0aW9uIG5h bWUgYW5kIGFkZCBpdCB0byB0aGUgbGlzdC4gKi8KK3N0YXRpYyB2b2lkCitz a2lwX2Z1bmN0aW9uX3BjIChDT1JFX0FERFIgcGMsIGNoYXIgKm5hbWUsIHN0 cnVjdCBnZGJhcmNoICphcmNoLAorCQkgIGludCBwZW5kaW5nKQoreworICBz dHJ1Y3Qgc2tpcGxpc3RfZW50cnkgKmUgPSBYWkFMTE9DIChzdHJ1Y3Qgc2tp cGxpc3RfZW50cnkpOworICBlLT5wYyA9IHBjOworICBlLT5nZGJhcmNoID0g YXJjaDsKKyAgZS0+ZW5hYmxlZCA9IDE7CisgIGUtPnBlbmRpbmcgPSBwZW5k aW5nOworICBlLT5mdW5jdGlvbl9uYW1lID0geHN0cmR1cCAobmFtZSk7CisK KyAgYWRkX3NraXBsaXN0X2VudHJ5IChlKTsKKworICBpZiAoIXBlbmRpbmcp CisgICAgcHJpbnRmX2ZpbHRlcmVkIChfKCJGdW5jdGlvbiAlcyBhdCAlcyB3 aWxsIGJlIHNraXBwZWQgd2hlbiBzdGVwcGluZy5cbiIpLAorCQkgICAgIG5h bWUsIHBhZGRyZXNzIChnZXRfY3VycmVudF9hcmNoICgpLCBwYykpOworICBl bHNlCisgICAgcHJpbnRmX2ZpbHRlcmVkIChfKCJGdW5jdGlvbiAlcyB3aWxs IGJlIHNraXBwZWQgd2hlbiBzdGVwcGluZywgIgorCQkgICAgICAgInBlbmRp bmcgc2hhcmVkIGxpYnJhcnkgbG9hZC5cbiIpLAorCQkgICAgIG5hbWUpOwor fQorCisvKiBBZGQgdGhlIGdpdmVuIHNraXBsaXN0IGVudHJ5IHRvIG91ciBs aXN0LCBhbmQgc2V0IHRoZSBlbnRyeSdzIG51bWJlci4gKi8KK3N0YXRpYyB2 b2lkCithZGRfc2tpcGxpc3RfZW50cnkgKHN0cnVjdCBza2lwbGlzdF9lbnRy eSAqZSkKK3sKKyAgc3RydWN0IHNraXBsaXN0X2VudHJ5ICplMTsKKworICBl LT5udW1iZXIgPSArK3NraXBsaXN0X2VudHJ5X2NvdW50OworCisgIC8qIEFk ZCB0byB0aGUgZW5kIG9mIHRoZSBjaGFpbiBzbyB0aGF0IHRoZSBsaXN0IG9m CisgICAgIHNraXBsaXN0IGVudHJpZXMgd2lsbCBiZSBpbiBudW1lcmljYWwg b3JkZXIuICovCisKKyAgZTEgPSBza2lwbGlzdF9lbnRyeV9jaGFpbjsKKyAg aWYgKGUxID09IDApCisgICAgc2tpcGxpc3RfZW50cnlfY2hhaW4gPSBlOwor ICBlbHNlCisgICAgeworICAgICAgd2hpbGUgKGUxLT5uZXh0KQorCWUxID0g ZTEtPm5leHQ7CisgICAgICBlMS0+bmV4dCA9IGU7CisgICAgfQorfQorCisv KiBEb2VzIHRoZSBnaXZlbiBwYyBjb3JyZXNwb25kIHRvIHRoZSBiZWdpbm5p bmcgb2YgYSBza2lwcGVkIGZ1bmN0aW9uPyAqLworaW50CitmdW5jdGlvbl9w Y19pc19tYXJrZWRfZm9yX3NraXAgKENPUkVfQUREUiBwYykKK3sKKyAgc3Ry dWN0IHN5bXRhYl9hbmRfbGluZSBzYWw7CisgIGNoYXIgKmZpbGVuYW1lOwor ICBzdHJ1Y3Qgc2tpcGxpc3RfZW50cnkgKmU7CisKKyAgc2FsID0gZmluZF9w Y19saW5lIChwYywgMCk7CisgIGZpbGVuYW1lID0gc2FsLnN5bXRhYi0+Zmls ZW5hbWU7CisKKyAgQUxMX1NLSVBMSVNUX0VOVFJJRVMgKGUpCisgICAgewor ICAgICAgaW50IHBjX21hdGNoID0gZS0+cGMgIT0gMCAmJiBwYyA9PSBlLT5w YzsKKyAgICAgIGludCBmaWxlbmFtZV9tYXRjaCA9IGUtPmZpbGVuYW1lICE9 IDAgJiYgZmlsZW5hbWUgIT0gMCAmJgorCQkJICAgc3RyY21wIChmaWxlbmFt ZSwgZS0+ZmlsZW5hbWUpID09IDA7CisgICAgICBpZiAoZS0+ZW5hYmxlZCAm JiAhZS0+cGVuZGluZyAmJiAocGNfbWF0Y2ggfHwgZmlsZW5hbWVfbWF0Y2gp KQorCXJldHVybiAxOworICAgIH0KKworICByZXR1cm4gMDsKK30KKworLyog UmUtc2V0IHRoZSBza2lwIGxpc3QgYWZ0ZXIgc3ltYm9scyBoYXZlIGJlZW4g cmUtbG9hZGVkLiAqLwordm9pZAorc2tpcF9yZV9zZXQgKCkKK3sKKyAgc3Ry dWN0IHNraXBsaXN0X2VudHJ5ICplOworICBBTExfU0tJUExJU1RfRU5UUklF UyAoZSkKKyAgICB7CisgICAgICBpZiAoZS0+ZmlsZW5hbWUgIT0gMCkKKwl7 CisJICAvKiBJZiBpdCdzIGFuIGVudHJ5IHRlbGxpbmcgdXMgdG8gc2tpcCBh IGZpbGUsIGJ1dCB0aGUgZW50cnkgaXMKKwkgICAgIGN1cnJlbnRseSBwZW5k aW5nIGEgc29saWIgbG9hZCwgbGV0J3Mgc2VlIGlmIHdlIG5vdyBrbm93CisJ ICAgICBhYm91dCB0aGUgZmlsZS4gKi8KKwkgIHN0cnVjdCBzeW10YWIgKnN5 bXRhYiA9IGxvb2t1cF9zeW10YWIgKGUtPmZpbGVuYW1lKTsKKwkgIGlmIChz eW10YWIgIT0gMCkKKwkgICAgeworCSAgICAgIHhmcmVlIChlLT5maWxlbmFt ZSk7CisJICAgICAgZS0+ZmlsZW5hbWUgPSB4c3RyZHVwIChzeW10YWItPmZp bGVuYW1lKTsKKwkgICAgICBlLT5nZGJhcmNoID0gZ2V0X29iamZpbGVfYXJj aCAoc3ltdGFiLT5vYmpmaWxlKTsKKwkgICAgICBlLT5wZW5kaW5nID0gMDsK KwkgICAgfQorCSAgZWxzZQorCSAgICB7CisJICAgICAgZS0+cGVuZGluZyA9 IDE7CisJICAgIH0KKwl9CisgICAgICBlbHNlIGlmIChlLT5mdW5jdGlvbl9u YW1lICE9IDApCisgICAgICAgIHsKKwkgIGNoYXIgKmZ1bmNfbmFtZSA9IGUt PmZ1bmN0aW9uX25hbWU7CisJICBzdHJ1Y3Qgc3ltdGFic19hbmRfbGluZXMg c2FsczsKKwkgIHZvbGF0aWxlIHN0cnVjdCBnZGJfZXhjZXB0aW9uIGRlY29k ZV9leGNlcHRpb247CisKKwkgIFRSWV9DQVRDSChkZWNvZGVfZXhjZXB0aW9u LCBOT1RfRk9VTkRfRVJST1IpCisJICAgIHsKKwkgICAgICBzYWxzID0gZGVj b2RlX2xpbmVfMSAoJmZ1bmNfbmFtZSwgMSwgMCwgMCwgMCk7CisJICAgIH0K KworCSAgaWYgKGRlY29kZV9leGNlcHRpb24ucmVhc29uID49IDAgJiYKKwkg ICAgICBzYWxzLm5lbHRzID09IDEgJiYgc3RybGVuIChmdW5jX25hbWUpID09 IDApCisJICAgIHsKKwkgICAgICBzdHJ1Y3Qgc3ltdGFiX2FuZF9saW5lICpz YWwgPSAmc2Fscy5zYWxzWzBdOworCSAgICAgIENPUkVfQUREUiBwYyA9IHNh bC0+cGM7CisJICAgICAgQ09SRV9BRERSIGZ1bmNfc3RhcnQgPSAwOworCSAg ICAgIHN0cnVjdCBnZGJhcmNoICphcmNoID0gZ2V0X3NhbF9hcmNoIChzYWwp OworICAgICAgICAgICAgICBjaGFyICpmdW5jX25hbWU7CisKKwkgICAgICBp ZiAoZmluZF9wY19wYXJ0aWFsX2Z1bmN0aW9uIChwYywgJmZ1bmNfbmFtZSwg JmZ1bmNfc3RhcnQsIDApKQorCQl7CisJCSAgZS0+cGVuZGluZyA9IDA7Cisg ICAgICAgICAgICAgICAgICBlLT5mdW5jdGlvbl9uYW1lID0geHN0cmR1cChm dW5jX25hbWUpOworCQkgIGUtPnBjID0gZnVuY19zdGFydDsKKwkJICBlLT5n ZGJhcmNoID0gYXJjaDsKKwkJfQorCSAgICB9CisJICBlbHNlCisJICAgIHsK KwkgICAgICBlLT5wZW5kaW5nID0gMTsKKwkgICAgfQorICAgICAgICB9Cisg ICAgfQorfQorCisvKiBIZWxwZXIgZnVuY3Rpb24gdG8gZ2V0IGEgZ2RiYXJj aCBmcm9tIGEgc3ltdGFiX2FuZF9saW5lLiAqLworc3RhdGljIHN0cnVjdCBn ZGJhcmNoKgorZ2V0X3NhbF9hcmNoIChzdHJ1Y3Qgc3ltdGFiX2FuZF9saW5l ICpzYWwpCit7CisgIGlmIChzYWwtPnNlY3Rpb24pCisgICAgcmV0dXJuIGdl dF9vYmpmaWxlX2FyY2ggKHNhbC0+c2VjdGlvbi0+b2JqZmlsZSk7CisgIGlm IChzYWwtPnN5bXRhYikKKyAgICByZXR1cm4gZ2V0X29iamZpbGVfYXJjaCAo c2FsLT5zeW10YWItPm9iamZpbGUpOworICByZXR1cm4gZ2V0X2N1cnJlbnRf YXJjaCAoKTsKK30KKwordm9pZAorX2luaXRpYWxpemVfc3RlcF9za2lwICh2 b2lkKQoreworICBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqYzsKKworICBz a2lwbGlzdF9lbnRyeV9jaGFpbiA9IDA7CisgIHNraXBsaXN0X2VudHJ5X2Nv dW50ID0gMDsKKworICBhZGRfcHJlZml4X2NtZCAoInNraXAiLCBjbGFzc19i cmVha3BvaW50LCBza2lwX2Z1bmN0aW9uX2NvbW1hbmQsIF8oIlwKK0lnbm9y ZSBhIGZ1bmN0aW9uIHdoaWxlIHN0ZXBwaW5nLlxuXAorc2tpcCBbRlVOQ1RJ T04gTkFNRV1cblwKK0lmIG5vIGZ1bmN0aW9uIG5hbWUgaXMgZ2l2ZW4sIGln bm9yZSB0aGUgY3VycmVudCBmdW5jdGlvbi4iKSwKKyAgICAgICAgICAgICAg ICAgICZza2lwbGlzdCwgInNraXAgIiwgMSwgJmNtZGxpc3QpOworCisgIGMg PSBhZGRfY21kICgiZmlsZSIsIGNsYXNzX2JyZWFrcG9pbnQsIHNraXBfZmls ZV9jb21tYW5kLCBfKCJcCitJZ25vcmUgYSBmaWxlIHdoaWxlIHN0ZXBwaW5n LlxuXAorc2tpcCBmaWxlIFtGSUxFTkFNRV1cblwKK0lmIG5vIGZpbGVuYW1l IGlzIGdpdmVuLCBpZ25vcmUgdGhlIGN1cnJlbnQgZmlsZS4iKSwKKwkgICAg ICAgJnNraXBsaXN0KTsKKyAgc2V0X2NtZF9jb21wbGV0ZXIgKGMsIGZpbGVu YW1lX2NvbXBsZXRlcik7CisKKyAgYyA9IGFkZF9jbWQgKCJmdW5jdGlvbiIs IGNsYXNzX2JyZWFrcG9pbnQsIHNraXBfZnVuY3Rpb25fY29tbWFuZCwgXygi XAorSWdub3JlIGEgZnVuY3Rpb24gd2hpbGUgc3RlcHBpbmcuXG5cCitza2lw IGZ1bmN0aW9uIFtGVU5DVElPTiBOQU1FXVxuXAorSWYgbm8gZnVuY3Rpb24g bmFtZSBpcyBnaXZlbiwgc2tpcCB0aGUgY3VycmVudCBmdW5jdGlvbi4iKSwK KwkgICAgICAgJnNraXBsaXN0KTsKKyAgc2V0X2NtZF9jb21wbGV0ZXIgKGMs IGxvY2F0aW9uX2NvbXBsZXRlcik7CisKKyAgYWRkX2NtZCAoImVuYWJsZSIs IGNsYXNzX2JyZWFrcG9pbnQsIHNraXBfZW5hYmxlX2NvbW1hbmQsIF8oIlwK K0VuYWJsZSBhIHNraXAgZW50cnkuXG5cCitza2lwIGVuYWJsZSBbTlVNQkVS XSIpLAorCSAgICZza2lwbGlzdCk7CisKKyAgYWRkX2NtZCAoImRpc2FibGUi LCBjbGFzc19icmVha3BvaW50LCBza2lwX2Rpc2FibGVfY29tbWFuZCwgXygi XAorRGlzYWJsZSBhIHNraXAgZW50cnkuXG5cCitza2lwIGRpc2FibGUgW05V TUJFUl0iKSwKKwkgICAmc2tpcGxpc3QpOworCisgIGFkZF9jbWQgKCJkZWxl dGUiLCBjbGFzc19icmVha3BvaW50LCBza2lwX2RlbGV0ZV9jb21tYW5kLCBf KCJcCitEZWxldGUgYSBza2lwIGVudHJ5LlxuXAorc2tpcCBkZWxldGUgW05V TUJFUl0iKSwKKyAgICAgICAgICAgJnNraXBsaXN0KTsKKworICBhZGRfaW5m byAoInNraXAiLCBza2lwX2luZm8sIF8oIlwKK1N0YXR1cyBvZiBhbGwgc2tp cHMsIG9yIG9mIHNraXAgTlVNQkVSLlxuXAorVGhlIFwiVHlwZVwiIGNvbHVt biBpbmRpY2F0ZXMgb25lIG9mOlxuXAorXHRmaWxlICAgICAgICAtIGlnbm9y ZWQgZmlsZVxuXAorXHRmdW5jdGlvbiAgICAtIGlnbm9yZWQgZnVuY3Rpb24i KSk7Cit9CmRpZmYgLS1naXQgYS9nZGIvc2tpcC5oIGIvZ2RiL3NraXAuaApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNjExNTU1Ci0t LSAvZGV2L251bGwKKysrIGIvZ2RiL3NraXAuaApAQCAtMCwwICsxLDI4IEBA CisvKiBIZWFkZXIgZm9yIHNraXBwaW5nIG92ZXIgdW5pbnRlcmVzdGluZyBm aWxlcyBhbmQgZnVuY3Rpb25zIHdoZW4gZGVidWdnaW5nLgorCisgICBDb3B5 cmlnaHQgKEMpIDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu CisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgICBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieQorICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKyAgIChh dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgIFRoaXMg cHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp bGwgYmUgdXNlZnVsLAorICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3 aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUKKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv ciBtb3JlIGRldGFpbHMuCisKKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl ZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg ICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisKKyNpZiAhZGVmaW5l ZCAoU0tJUF9IKQorI2RlZmluZSBTS0lQX0gKKworLyogUmV0dXJucyAxIGlm IHRoZSBnaXZlbiBwYyBpcyBtYXJrZWQgZm9yIHNraXAgYW5kIHNob3VsZG4n dCBiZQorICAgc3RlcHBlZCBpbnRvLiAgT3RoZXJ3aXNlLCByZXR1cm5zIDAu ICovCitpbnQgZnVuY3Rpb25fcGNfaXNfbWFya2VkX2Zvcl9za2lwIChDT1JF X0FERFIgcGMpOworCisvKiBSZS1zZXQgdGhlIHNraXAgbGlzdCBhZnRlciBz eW1ib2xzIGhhdmUgYmVlbiByZWxvYWRlZC4gKi8KK3ZvaWQgc2tpcF9yZV9z ZXQgKCk7CisKKyNlbmRpZiAvKiAhZGVmaW5lZCAoU0tJUF9IKSAqLwpkaWZm IC0tZ2l0IGEvZ2RiL3N0YWNrLmMgYi9nZGIvc3RhY2suYwppbmRleCAxNTY2 NmVlLi5lZWRmZDFiIDEwMDY0NAotLS0gYS9nZGIvc3RhY2suYworKysgYi9n ZGIvc3RhY2suYwpAQCAtNzMsNiArNzMsMTIgQEAgc3RhdGljIHZvaWQgcHJp bnRfZnJhbWUgKHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwgaW50IHByaW50 X2xldmVsLAogCQkJIGVudW0gcHJpbnRfd2hhdCBwcmludF93aGF0LCAgaW50 IHByaW50X2FyZ3MsCiAJCQkgc3RydWN0IHN5bXRhYl9hbmRfbGluZSBzYWwp OwogCitzdGF0aWMgdm9pZCBzZXRfbGFzdF9kaXNwbGF5ZWRfc2FsIChpbnQg dmFsaWQsCisJCQkJICAgIHN0cnVjdCBwcm9ncmFtX3NwYWNlICpwc3BhY2Us CisJCQkJICAgIENPUkVfQUREUiBhZGRyLAorCQkJCSAgICBzdHJ1Y3Qgc3lt dGFiICpzeW10YWIsCisJCQkJICAgIGludCBsaW5lKTsKKwogLyogWmVybyBt ZWFucyBkbyB0aGluZ3Mgbm9ybWFsbHk7IHdlIGFyZSBpbnRlcmFjdGluZyBk aXJlY3RseSB3aXRoIHRoZQogICAgdXNlci4gIE9uZSBtZWFucyBwcmludCB0 aGUgZnVsbCBmaWxlbmFtZSBhbmQgbGluZW51bWJlciB3aGVuIGEKICAgIGZy YW1lIGlzIHByaW50ZWQsIGFuZCBkbyBzbyBpbiBhIGZvcm1hdCBlbWFjczE4 L2VtYWNzMTkuMjIgY2FuCkBAIC04MCw2ICs4NiwxNCBAQCBzdGF0aWMgdm9p ZCBwcmludF9mcmFtZSAoc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lLCBpbnQg cHJpbnRfbGV2ZWwsCiAgICBjYXNlcyBhbmQgaW4gYSBzbGlnaHRseSBkaWZm ZXJlbnQgc3ludGF4LiAgKi8KIAogaW50IGFubm90YXRpb25fbGV2ZWwgPSAw OworCisvKiBUaGVzZSB2YXJpYWJsZXMgaG9sZCB0aGUgbGFzdCBzeW10YWIg YW5kIGxpbmUgd2UgZGlzcGxheWVkIHRvIHRoZSB1c2VyLgorICogVGhpcyBp cyB3aGVyZSB3ZSBpbnNlcnQgYSBicmVha3BvaW50IG9yIGEgc2tpcGxpc3Qg ZW50cnkgYnkgZGVmYXVsdC4gKi8KK3N0YXRpYyBpbnQgbGFzdF9kaXNwbGF5 ZWRfc2FsX3ZhbGlkID0gMDsKK3N0YXRpYyBzdHJ1Y3QgcHJvZ3JhbV9zcGFj ZSAqbGFzdF9kaXNwbGF5ZWRfcHNwYWNlID0gMDsKK3N0YXRpYyBDT1JFX0FE RFIgbGFzdF9kaXNwbGF5ZWRfYWRkciA9IDA7CitzdGF0aWMgc3RydWN0IHN5 bXRhYiAqbGFzdF9kaXNwbGF5ZWRfc3ltdGFiID0gMDsKK3N0YXRpYyBpbnQg bGFzdF9kaXNwbGF5ZWRfbGluZSA9IDA7CiAMCiAKIC8qIFJldHVybiAxIGlm IHdlIHNob3VsZCBkaXNwbGF5IHRoZSBhZGRyZXNzIGluIGFkZGl0aW9uIHRv IHRoZSBsb2NhdGlvbiwKQEAgLTU5OSw5ICs2MTMsOSBAQCBwcmludF9mcmFt ZV9pbmZvIChzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUsIGludCBwcmludF9s ZXZlbCwKICAgICAgIENPUkVfQUREUiBwYzsKIAogICAgICAgaWYgKGdldF9m cmFtZV9wY19pZl9hdmFpbGFibGUgKGZyYW1lLCAmcGMpKQotCXNldF9kZWZh dWx0X2JyZWFrcG9pbnQgKDEsIHNhbC5wc3BhY2UsIHBjLCBzYWwuc3ltdGFi LCBzYWwubGluZSk7CisJc2V0X2xhc3RfZGlzcGxheWVkX3NhbCAoMSwgc2Fs LnBzcGFjZSwgcGMsIHNhbC5zeW10YWIsIHNhbC5saW5lKTsKICAgICAgIGVs c2UKLQlzZXRfZGVmYXVsdF9icmVha3BvaW50ICgwLCAwLCAwLCAwLCAwKTsK KwlzZXRfbGFzdF9kaXNwbGF5ZWRfc2FsICgwLCAwLCAwLCAwLCAwKTsKICAg ICB9CiAKICAgYW5ub3RhdGVfZnJhbWVfZW5kICgpOwpAQCAtNjA5LDYgKzYy Myw4OCBAQCBwcmludF9mcmFtZV9pbmZvIChzdHJ1Y3QgZnJhbWVfaW5mbyAq ZnJhbWUsIGludCBwcmludF9sZXZlbCwKICAgZ2RiX2ZsdXNoIChnZGJfc3Rk b3V0KTsKIH0KIAorLyogUmVtZW1iZXIgdGhlIGxhc3QgY29kZXBvaW50IHdl IGRpc3BsYXllZCwgd2hpY2ggd2UgdXNlIGUuZy4gYXMgdGhlIHBsYWNlIHRv CisgICBwdXQgYSBicmVha3BvaW50IHdoZW4gdGhlIGBicmVhaycgY29tbWFu ZCBpcyBpbnZva2VkIHdpdGggbm8gYXJndW1lbnRzLiAqLworc3RhdGljIHZv aWQKK3NldF9sYXN0X2Rpc3BsYXllZF9zYWwgKGludCB2YWxpZCwgc3RydWN0 IHByb2dyYW1fc3BhY2UgKnBzcGFjZSwKKwkJCUNPUkVfQUREUiBhZGRyLCBz dHJ1Y3Qgc3ltdGFiICpzeW10YWIsCisJCQlpbnQgbGluZSkKK3sKKyAgbGFz dF9kaXNwbGF5ZWRfc2FsX3ZhbGlkID0gdmFsaWQ7CisgIGxhc3RfZGlzcGxh eWVkX3BzcGFjZSA9IHBzcGFjZTsKKyAgbGFzdF9kaXNwbGF5ZWRfYWRkciA9 IGFkZHI7CisgIGxhc3RfZGlzcGxheWVkX3N5bXRhYiA9IHN5bXRhYjsKKyAg bGFzdF9kaXNwbGF5ZWRfbGluZSA9IGxpbmU7Cit9CisKK3ZvaWQKK2NsZWFy X2xhc3RfZGlzcGxheWVkX3NhbCAoKQoreworICBsYXN0X2Rpc3BsYXllZF9z YWxfdmFsaWQgPSAwOworICBsYXN0X2Rpc3BsYXllZF9wc3BhY2UgPSAwOwor ICBsYXN0X2Rpc3BsYXllZF9hZGRyID0gMDsKKyAgbGFzdF9kaXNwbGF5ZWRf c3ltdGFiID0gMDsKKyAgbGFzdF9kaXNwbGF5ZWRfbGluZSA9IDA7Cit9CisK K2ludAorbGFzdF9kaXNwbGF5ZWRfc2FsX2lzX3ZhbGlkICgpCit7CisgIHJl dHVybiBsYXN0X2Rpc3BsYXllZF9zYWxfdmFsaWQ7Cit9CisKK3N0cnVjdCBw cm9ncmFtX3NwYWNlKgorZ2V0X2xhc3RfZGlzcGxheWVkX3BzcGFjZSAoKQor eworICBpZiAobGFzdF9kaXNwbGF5ZWRfc2FsX3ZhbGlkKQorICAgIHJldHVy biBsYXN0X2Rpc3BsYXllZF9wc3BhY2U7CisgIHJldHVybiAwOworfQorCitD T1JFX0FERFIKK2dldF9sYXN0X2Rpc3BsYXllZF9hZGRyICgpCit7CisgIGlm IChsYXN0X2Rpc3BsYXllZF9zYWxfdmFsaWQpCisgICAgcmV0dXJuIGxhc3Rf ZGlzcGxheWVkX2FkZHI7CisgIHJldHVybiAwOworfQorCitzdHJ1Y3Qgc3lt dGFiKgorZ2V0X2xhc3RfZGlzcGxheWVkX3N5bXRhYiAoKQoreworICBpZiAo bGFzdF9kaXNwbGF5ZWRfc2FsX3ZhbGlkKQorICAgIHJldHVybiBsYXN0X2Rp c3BsYXllZF9zeW10YWI7CisgIHJldHVybiAwOworfQorCitpbnQKK2dldF9s YXN0X2Rpc3BsYXllZF9saW5lICgpCit7CisgIGlmIChsYXN0X2Rpc3BsYXll ZF9zYWxfdmFsaWQpCisgICAgcmV0dXJuIGxhc3RfZGlzcGxheWVkX2xpbmU7 CisgIHJldHVybiAwOworfQorCit2b2lkCitnZXRfbGFzdF9kaXNwbGF5ZWRf c2FsIChzdHJ1Y3Qgc3ltdGFiX2FuZF9saW5lICpzYWwpCit7CisgIGlmIChs YXN0X2Rpc3BsYXllZF9zYWxfdmFsaWQpCisgICAgeworICAgICAgc2FsLT5w c3BhY2UgPSBsYXN0X2Rpc3BsYXllZF9wc3BhY2U7CisgICAgICBzYWwtPnBj ID0gbGFzdF9kaXNwbGF5ZWRfYWRkcjsKKyAgICAgIHNhbC0+c3ltdGFiID0g bGFzdF9kaXNwbGF5ZWRfc3ltdGFiOworICAgICAgc2FsLT5saW5lID0gbGFz dF9kaXNwbGF5ZWRfbGluZTsKKyAgICB9CisgIGVsc2UKKyAgICB7CisgICAg ICBzYWwtPnBzcGFjZSA9IDA7CisgICAgICBzYWwtPnBjID0gMDsKKyAgICAg IHNhbC0+c3ltdGFiID0gMDsKKyAgICAgIHNhbC0+bGluZSA9IDA7CisgICAg fQorfQorCisKIC8qIEF0dGVtcHQgdG8gb2J0YWluIHRoZSBGVU5OQU1FLCBG VU5MQU5HIGFuZCBvcHRpb25hbGx5IEZVTkNQIG9mIHRoZSBmdW5jdGlvbgog ICAgY29ycmVzcG9uZGluZyB0byBGUkFNRS4gICovCiAKZGlmZiAtLWdpdCBh L2dkYi9zdGFjay5oIGIvZ2RiL3N0YWNrLmgKaW5kZXggM2NjZTYyMy4uNjIw MGY1MiAxMDA2NDQKLS0tIGEvZ2RiL3N0YWNrLmgKKysrIGIvZ2RiL3N0YWNr LmgKQEAgLTM4LDQgKzM4LDE0IEBAIHZvaWQgaXRlcmF0ZV9vdmVyX2Jsb2Nr X2xvY2FsX3ZhcnMgKHN0cnVjdCBibG9jayAqYmxvY2ssCiAJCQkJICAgIGl0 ZXJhdGVfb3Zlcl9ibG9ja19hcmdfbG9jYWxfdmFyc19jYiBjYiwKIAkJCQkg ICAgdm9pZCAqY2JfZGF0YSk7CiAKKy8qIEdldCBvciBzZXQgdGhlIGxhc3Qg ZGlzcGxheWVkIHN5bXRhYiBhbmQgbGluZSwgd2hpY2ggaXMsIGUuZy4gd2hl cmUgd2Ugc2V0IGEKKyAqIGJyZWFrcG9pbnQgd2hlbiBgYnJlYWsnIGlzIHN1 cHBsaWVkIHdpdGggbm8gYXJndW1lbnRzLiAqLwordm9pZCBjbGVhcl9sYXN0 X2Rpc3BsYXllZF9zYWwgKCk7CitpbnQgbGFzdF9kaXNwbGF5ZWRfc2FsX2lz X3ZhbGlkICgpOworc3RydWN0IHByb2dyYW1fc3BhY2UqIGdldF9sYXN0X2Rp c3BsYXllZF9wc3BhY2UgKCk7CitDT1JFX0FERFIgZ2V0X2xhc3RfZGlzcGxh eWVkX2FkZHIgKCk7CitzdHJ1Y3Qgc3ltdGFiKiBnZXRfbGFzdF9kaXNwbGF5 ZWRfc3ltdGFiICgpOworaW50IGdldF9sYXN0X2Rpc3BsYXllZF9saW5lICgp Owordm9pZCBnZXRfbGFzdF9kaXNwbGF5ZWRfc2FsIChzdHJ1Y3Qgc3ltdGFi X2FuZF9saW5lICpzYWwpOworCiAjZW5kaWYgLyogI2lmbmRlZiBTVEFDS19I ICovCmRpZmYgLS1naXQgYS9nZGIvc3ltZmlsZS5jIGIvZ2RiL3N5bWZpbGUu YwppbmRleCAxNTQwY2I3Li4xYzRkMGM5IDEwMDY0NAotLS0gYS9nZGIvc3lt ZmlsZS5jCisrKyBiL2dkYi9zeW1maWxlLmMKQEAgLTU2LDYgKzU2LDcgQEAK ICNpbmNsdWRlICJlbGYtYmZkLmgiCiAjaW5jbHVkZSAic29saWIuaCIKICNp bmNsdWRlICJyZW1vdGUuaCIKKyNpbmNsdWRlICJzdGFjay5oIgogCiAjaW5j bHVkZSA8c3lzL3R5cGVzLmg+CiAjaW5jbHVkZSA8ZmNudGwuaD4KQEAgLTI3 ODAsNyArMjc4MSw3IEBAIGNsZWFyX3N5bXRhYl91c2VycyAoaW50IGFkZF9m bGFncykKICAgY2xlYXJfZGlzcGxheXMgKCk7CiAgIGlmICgoYWRkX2ZsYWdz ICYgU1lNRklMRV9ERUZFUl9CUF9SRVNFVCkgPT0gMCkKICAgICBicmVha3Bv aW50X3JlX3NldCAoKTsKLSAgc2V0X2RlZmF1bHRfYnJlYWtwb2ludCAoMCwg TlVMTCwgMCwgMCwgMCk7CisgIGNsZWFyX2xhc3RfZGlzcGxheWVkX3NhbCAo KTsKICAgY2xlYXJfcGNfZnVuY3Rpb25fY2FjaGUgKCk7CiAgIG9ic2VydmVy X25vdGlmeV9uZXdfb2JqZmlsZSAoTlVMTCk7CiAKZGlmZiAtLWdpdCBhL2dk Yi90ZXN0c3VpdGUvQ2hhbmdlTG9nIGIvZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VM b2cKaW5kZXggOGY5ZWZkMS4uN2RlZWEzZSAxMDA2NDQKLS0tIGEvZ2RiL3Rl c3RzdWl0ZS9DaGFuZ2VMb2cKKysrIGIvZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VM b2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMS0xMC0wNiAgSnVzdGluIExlYmFy IDxqdXN0aW4ubGViYXJAZ21haWwuY29tPgorCisJQWRkIHRlc3RzIGZvciBz a2lwIGNvbW1hbmQuCisJKiB0ZXN0c3VpdGUvZ2RiLmJhc2Uvc2tpcC1zb2xp Yi1saWIuYzogTmV3CisJKiB0ZXN0c3VpdGUvZ2RiLmJhc2Uvc2tpcC1zb2xp Yi1tYWluLmM6IE5ldworCSogdGVzdHN1aXRlL2dkYi5iYXNlL3NraXAtc29s aWIuZXhwOiBOZXcKKwkqIHRlc3RzdWl0ZS9nZGIuYmFzZS9za2lwLmM6IE5l dworCSogdGVzdHN1aXRlL2dkYi5iYXNlL3NraXAuZXhwOiBOZXcKKwkqIHRl c3RzdWl0ZS9nZGIuYmFzZS9za2lwMS5jOiBOZXcKKwkqIHRlc3RzdWl0ZS9n ZGIuYmFzZS9NYWtlZmlsZS5pbjogQWRkaW5nIG5ldyBmaWxlcy4KKwogMjAx MS0xMC0wNSAgUGllcnJlIE11bGxlciAgPG11bGxlckBpY3MudS1zdHJhc2Jn LmZyPgogCiAJQWRkIHRlc3RzIGZvciBwYXNzaW5nIG9mIGVudmlyb25tZW50 IHZhcmlhYmxlcyB0byBpbmZlcmlvci4KZGlmZiAtLWdpdCBhL2dkYi90ZXN0 c3VpdGUvZ2RiLmJhc2UvTWFrZWZpbGUuaW4gYi9nZGIvdGVzdHN1aXRlL2dk Yi5iYXNlL01ha2VmaWxlLmluCmluZGV4IDcyZjFiYTQuLjdjZWIxMjEgMTAw NjQ0Ci0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvTWFrZWZpbGUuaW4K KysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9NYWtlZmlsZS5pbgpAQCAt MzAsOCArMzAsOCBAQCBFWEVDVVRBQkxFUyA9IGEyLXJ1biBhZHZhbmNlIGFs bC10eXBlcyBhbm5vdGExIGFubm90YTEtd2F0Y2hfdGhyZWFkX251bSBcCiAJ c2Vwc3ltdGFiLmRlYnVnIHNlcHN5bXRhYi5zdHJpcHBlZCBzZXRzaG93IHNl dHZhciBzaG1haW4gc2hyZWxvYyBcCiAJc2lnYWxsIHNpZ2FsdHN0YWNrIHNp Z2JwdCBzaWdjaGxkIHNpZ2luZm8gc2lnaW5mby1hZGRyIFwKIAlzaWdpbmZv LWluZmNhbGwgc2lnaW5mby1vYmogc2lnbmFscyBzaWdudWxsIHNpZ3JlcGVh dCBzaWdzdGVwIFwKLQlzaXplb2Ygc29saWIgc29saWItY29ycnVwdGVkIHNv bGliLWRpc3BsYXktbWFpbiBzb2xpYi1ub2RpciBcCi0Jc29saWItb3Zlcmxh cC1tYWluLTB4NDAwMDAwMDAgc29saWItc3ltYm9sLW1haW4gc29saWItd2Vh ayBcCisJc2l6ZW9mIHNraXAgc2tpcC1zb2xpYiBzb2xpYiBzb2xpYi1jb3Jy dXB0ZWQgc29saWItZGlzcGxheS1tYWluCisJc29saWItbm9kaXIgc29saWIt b3ZlcmxhcC1tYWluLTB4NDAwMDAwMDAgc29saWItc3ltYm9sLW1haW4gc29s aWItd2VhayBcCiAJc29saWItd2Vhay1saWIyIHNvbGliX3NsIHNvLWltcGwt bGQgc28taW5kci1jbCBcCiAJc3RhY2stY2hlY2tpbmcgc3RhcnQgc3RlcC1i cmVhayBzdGVwLWJ0IHN0ZXAtbGluZSBzdGVwLXJlc3VtZS1pbmZjYWxsIFwK IAlzdGVwLXRlc3Qgc3RvcmUgc3RydWN0cy10KiBzdHJ1Y3RzMiBzdHJ1Y3Rz MyBcCmRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NraXAt c29saWItbGliLmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NraXAtc29s aWItbGliLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u NzkyY2QwMQotLS0gL2Rldi9udWxsCisrKyBiL2dkYi90ZXN0c3VpdGUvZ2Ri LmJhc2Uvc2tpcC1zb2xpYi1saWIuYwpAQCAtMCwwICsxLDExIEBACisvKiBT aW1wbGUgc2hhcmVkIGxpYnJhcnkgKi8KKworaW50IHNxdWFyZShpbnQgbnVt KQoreworICByZXR1cm4gbXVsdGlwbHkobnVtLCBudW0pOworfQorCitpbnQg bXVsdGlwbHkoaW50IGEsIGludCBiKQoreworICByZXR1cm4gYSAqIGI7Cit9 CmRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NraXAtc29s aWItbWFpbi5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9za2lwLXNvbGli LW1haW4uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43 NDZiYjVmCi0tLSAvZGV2L251bGwKKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIu YmFzZS9za2lwLXNvbGliLW1haW4uYwpAQCAtMCwwICsxLDYgQEAKK2ludCBz cXVhcmUoaW50IG51bSk7CisKK2ludCBtYWluKCkKK3sKKyAgcmV0dXJuIHNx dWFyZSgwKTsKK30KZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJh c2Uvc2tpcC1zb2xpYi5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3Nr aXAtc29saWIuZXhwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLjRmODgzOGQKLS0tIC9kZXYvbnVsbAorKysgYi9nZGIvdGVzdHN1aXRl L2dkYi5iYXNlL3NraXAtc29saWIuZXhwCkBAIC0wLDAgKzEsMTI5IEBACisj ICAgQ29weXJpZ2h0IDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuCisKKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyMgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh cyBwdWJsaXNoZWQgYnkKKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKyMgKGF0 IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgVGhpcyBw cm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5U QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g IFNlZSB0aGUKKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v cmUgZGV0YWlscy4KKyMKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyMgYWxv bmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3 dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisKKyMgVGhpcyBmaWxlIHdhcyB3cml0 dGVuIGJ5IEp1c3RpbiBMZWJhci4gKGp1c3Rpbi5sZWJhckBnbWFpbC5jb20p CisKKyMKKyMgVGVzdHMgc2tpcHBpbmcgc2hhcmVkIGxpYnJhcmllcy4KKyMK KworIyBUaGlzIG9ubHkgd29ya3Mgb24gR05VL0xpbnV4LgoraWYgeyAhW2lz bmF0aXZlXSB8fCBbaXNfcmVtb3RlIGhvc3RdIHx8ICFbaXN0YXJnZXQgKi1s aW51eCpdIHx8IFtza2lwX3NobGliX3Rlc3RzXX0geworICAgIGNvbnRpbnVl Cit9CisKK3NldCB0ZXN0ICJza2lwLXNvbGliIgorc2V0IHNyY2ZpbGVfbWFp biAiJHt0ZXN0fS1tYWluLmMiCitzZXQgYmluZmlsZV9tYWluICIke29iamRp cn0vJHtzdWJkaXJ9LyR7dGVzdH0tdGVzdCIKK3NldCBzcmNmaWxlX2xpYiAi JHt0ZXN0fS1saWIuYyIKK3NldCBsaWJuYW1lICJsaWIke3Rlc3R9Igorc2V0 IGJpbmZpbGVfbGliICR7b2JqZGlyfS8ke3N1YmRpcn0vJHtsaWJuYW1lfS5z bworCisjCisjIENvbXBpbGUgb3VyIHByb2dyYW0gdW5kZXIgdGVzdC4gIFRo ZSBtYWluIHByb2dyYW0gcmVmZXJlbmNlcyBhIHNoYXJlZCBsaWJyYXJ5Cisj IGxpYnNraXAtc29saWIuc28sIHdoaWNoIGNvbnRhaW5zIHR3byBmdW5jdGlv bnMsIHNxdWFyZSgpLCB3aGljaCBpcworIyByZWZlcmVuY2VkIGJ5IHRoZSBt YWluIHByb2dyYW0sIGFuZCBtdWx0aXBseSgpLCB3aGljaCBpcyBub3QgcmVm ZXJlbmNlZCBieQorIyB0aGUgbWFpbiBwcm9ncmFtLgorIworCitpZiB7W2dk Yl9jb21waWxlX3NobGliICR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxl X2xpYn0gJHtiaW5maWxlX2xpYn0gW2xpc3QgZGVidWcgYWRkaXRpb25hbF9m bGFncz0tZlBJQyAtV2wsLXNvbmFtZSwke2xpYm5hbWV9LnNvXV0gIT0gIiJ9 IHsKKyAgICByZXR1cm4gLTEKK30KKworaWYge1tnZGJfY29tcGlsZSAiJHtz cmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGVfbWFpbn0iICIke2JpbmZpbGVf bWFpbn0ubyIgb2JqZWN0IGRlYnVnXSAhPSAiIn0geworICAgIHJldHVybiAt MQorfQorCitpZiB7W2dkYl9jb21waWxlICIke2JpbmZpbGVfbWFpbn0ubyIg IiR7YmluZmlsZV9tYWlufSIgZXhlY3V0YWJsZSBcCisgICAgICAgICAgICAg ICAgIFtsaXN0IGRlYnVnICJhZGRpdGlvbmFsX2ZsYWdzPS1MJHtvYmpkaXJ9 LyR7c3ViZGlyfSAtbCR7dGVzdH0gXAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAtV2wsLXJwYXRoPSR7b2JqZGly fS8ke3N1YmRpcn0iXV0gIT0gIiJ9IHsKKyAgICByZXR1cm4gLTEKK30KKwor Z2RiX3N0YXJ0CitnZGJfbG9hZCAke2JpbmZpbGVfbWFpbn0KKworIworIyBB dCB0aGlzIHBvaW50LCBpZiB3ZSB0cnkgdG8gc2tpcCB0aGUgZmlsZSAke3Ny Y2ZpbGVfbGlifSBvciB0aGUgZnVuY3Rpb24KKyMgbXVsdGlwbHkoKSwgd2Ug c2hvdWxkIGdldCBhIHByb21wdCBhc2tpbmcgdXMgaWYgd2Ugd2FudCB0byBl bmFibGUgdGhlCisjIHNraXAgZW50cnkgcGVuZGluZyBhIHNoYXJlZCBsaWJy YXJ5IGxvYWQuCisjCisKK2dkYl90ZXN0ICJza2lwIGZpbGUgJHtzcmNmaWxl X2xpYn0iIFwKKyJGaWxlICR7c3JjZmlsZV9saWJ9IHdpbGwgYmUgc2tpcHBl ZCB3aGVuIHN0ZXBwaW5nLiIgXAorImlnbm9yaW5nIGZpbGUgaW4gc29saWIi IFwKKyJObyBzb3VyY2UgZmlsZSBuYW1lZCAke3NyY2ZpbGVfbGlifS4qCitJ Z25vcmUgZmlsZSBwZW5kaW5nIGZ1dHVyZSBzaGFyZWQgbGlicmFyeSBsb2Fk LioiXAorInkiCisKKyMKKyMgRG9lcyBpbmZvIHNraXAgbGlzdCB0aGlzIGVu dHJ5IGFzIHBlbmRpbmc/CisjCitnZGJfdGVzdCAiaW5mbyBza2lwIiBcCisi TnVtXFxzK1R5cGVcXHMrRW5iXFxzK0FkZHJlc3NcXHMrV2hhdFxccyoKKzFc XHMrZmlsZVxccyt5XFxzK1xccyske3NyY2ZpbGVfbGlifSBcXChQRU5ESU5H XFwpXFxzKiIgXAorImluZm8gc2tpcCB3aXRoIHBlbmRpbmcgZmlsZSIKKwor aWYgIVtydW50b19tYWluXSB7IGZhaWwgInNraXAgdGVzdHMgc3VwcHJlc3Nl ZCIgfQorCisjCisjIFdlIHNob3VsZG4ndCBzdGVwIGludG8gc3F1YXJlKCks IHNpbmNlIHdlIHNraXBwZWQgc2tpcC1zb2xpYi1saWIuYy4KKyMKK2dkYl90 ZXN0ICJzdGVwIiAiIgorZ2RiX3Rlc3QgImJ0IiAiIzBcXHMrbWFpbi4qIiAi c3RlcCBhZnRlciBpZ25vcmluZyBzb2xpYiBmaWxlLiIKKworIworIyBPdXIg ZW50cnkgc2hvdWxkIG5vIGxvbmdlciBiZSBwZW5kaW5nLiAgTm90ZSB0aGF0 IHdlIHVuZm9ydHVuYXRlbHkgbmVlZCB0byBkbworIyBhdCBsZWFzdCBvbmUg c3RlcCBiZWZvcmUgdGhlIGVudHJ5IHdpbGwgYmUgdW5tYXJrZWQgYXMgcGVu ZGluZy4KKyMKK2dkYl90ZXN0ICJpbmZvIHNraXAiIFwKKyJOdW1cXHMrVHlw ZVxccytFbmJcXHMrQWRkcmVzc1xccytXaGF0XFxzKgorMVxccytmaWxlXFxz K3lcXHMrXFxzKy4qJHtzcmNmaWxlX2xpYn1cXHMqIiBcCisiaW5mbyBza2lw IHdpdGggcGVuZGluZyBmaWxlIgorCisjCisjIE5vdyByZXN0YXJ0IGdkYiBh bmQgdGVzdGluZyBpZ25vcmluZyBvZiBhIGZ1bmN0aW9uIGluc2lkZSBhIHNv bGliLgorIworZ2RiX2V4aXQKK2dkYl9zdGFydAorZ2RiX2xvYWQgJHtiaW5m aWxlX21haW59CisKK2dkYl90ZXN0ICJza2lwIGZ1bmN0aW9uIG11bHRpcGx5 IiBcCisiRnVuY3Rpb24gbXVsdGlwbHkgd2lsbCBiZSBza2lwcGVkIHdoZW4g c3RlcHBpbmcsIHBlbmRpbmcgc2hhcmVkIGxpYnJhcnkgbG9hZC4iIFwKKyJp Z25vcmluZyBmdW5jdGlvbiBpbiBzb2xpYiIgXAorIk5vIGZ1bmN0aW9uIGZv dW5kIG5hbWVkIG11bHRpcGx5Li4qCitJZ25vcmUgZnVuY3Rpb24gcGVuZGlu ZyBmdXR1cmUgc2hhcmVkIGxpYnJhcnkgbG9hZC4qIlwKKyJ5IgorCitpZiAh W3J1bnRvX21haW5dIHsgZmFpbCAic2tpcCB0ZXN0cyBzdXBwcmVzc2VkIiB9 CisKKyMKKyMgT3VyIGZpcnN0IHN0ZXAgc2hvdWxkIHRha2UgdXMgaW50byBz cXVhcmUuCisjCitnZGJfdGVzdCAic3RlcCIgInNxdWFyZS4qIgorCisjCisj IE5vdyBvdXIgZW50cnkgc2hvdWxkIG5vIGxvbmdlciBiZSBwZW5kaW5nLgor IworZ2RiX3Rlc3QgImluZm8gc2tpcCIgXAorIk51bVxccytUeXBlXFxzK0Vu YlxccytBZGRyZXNzXFxzK1doYXRcXHMqCisxXFxzK2Z1bmN0aW9uXFxzK3lc XHMrMHhcWzAtOWEtZlxdK1xccyttdWx0aXBseSBhdCAuKiR7c3JjZmlsZV9s aWJ9Oi4qXFxzKiIgXAorCisjCisjIFRoaXMgc3RlcCBzaG91bGRuJ3QgZ28g aW50byBtdWx0aXBseSAtLSB3ZSBzaG91bGQgc2tpcCBpdCBhbmQgZ28gb24g dG8gdGhlCisjIGxhc3QgbGluZSBvZiBzcXVhcmUuCisjCitnZGJfdGVzdCAi c3RlcCIgIiIKK2dkYl90ZXN0ICJidCIgIiMwXFxzK3NxdWFyZS4qIgpkaWZm IC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9za2lwLmMgYi9nZGIv dGVzdHN1aXRlL2dkYi5iYXNlL3NraXAuYwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi41NjViYTkzCi0tLSAvZGV2L251bGwKKysrIGIv Z2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9za2lwLmMKQEAgLTAsMCArMSwxMyBA QAoraW50IGZvbygpOworaW50IGJhcigpOworaW50IGJheihpbnQsIGludCk7 CisKK2ludCBtYWluKCkKK3sKKyAgcmV0dXJuIGJheihmb28oKSwgYmFyKCkp OworfQorCitpbnQgZm9vKCkKK3sKKyAgcmV0dXJuIDA7Cit9CmRpZmYgLS1n aXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NraXAuZXhwIGIvZ2RiL3Rl c3RzdWl0ZS9nZGIuYmFzZS9za2lwLmV4cApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi5mZWNjMTk3Ci0tLSAvZGV2L251bGwKKysrIGIv Z2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9za2lwLmV4cApAQCAtMCwwICsxLDE1 MSBAQAorIyAgIENvcHlyaWdodCAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLgorCisjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisjIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisjIHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9y CisjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjCisj IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBN RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UuICBTZWUgdGhlCisjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvciBtb3JlIGRldGFpbHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNl aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl CisjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0 dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorCisjIFRoaXMgZmlsZSB3 YXMgd3JpdHRlbiBieSBKdXN0aW4gTGViYXIuIChqdXN0aW4ubGViYXJAZ21h aWwuY29tKQorCitpZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5nIHNraXAuZXhw ICJza2lwIiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIHtza2lwLmMg c2tpcDEuYyB9IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAge2RlYnVn IG5vd2FybmluZ3N9XSB9IHsKKyAgICByZXR1cm4gLTEKK30KKworc2V0IHNy Y2ZpbGUgc2tpcC5jCitzZXQgc3JjZmlsZTEgc2tpcDEuYworCisjCisjIFJp Z2h0IGFmdGVyIHdlIHN0YXJ0IGdkYiwgdGhlcmUncyBubyBkZWZhdWx0IGZp bGUgb3IgZnVuY3Rpb24gdG8gc2tpcC4KKyMKK2dkYl90ZXN0ICJza2lwIGZp bGUiICJObyBkZWZhdWx0IGZpbGUgbm93LiIKK2dkYl90ZXN0ICJza2lwIGZ1 bmN0aW9uIiAiTm8gZGVmYXVsdCBmdW5jdGlvbiBub3cuIgorZ2RiX3Rlc3Qg InNraXAiICJObyBkZWZhdWx0IGZ1bmN0aW9uIG5vdy4iCisKK2lmICFbcnVu dG9fbWFpbl0geyBmYWlsICJza2lwIHRlc3RzIHN1cHByZXNzZWQiIH0KKwor IworIyBUZXN0IHxpbmZvIHNraXB8IHdpdGggYW4gZW1wdHkgc2tpcGxpc3Qu CisjCitnZGJfdGVzdCAiaW5mbyBza2lwIiAiTm90IHNraXBwaW5nIGFueSBm aWxlcyBvciBmdW5jdGlvbnNcLiIgImluZm8gc2tpcCBlbXB0eSIKKworIwor IyBDcmVhdGUgYSBza2lwbGlzdCBlbnRyeSBmb3IgdGhlIGN1cnJlbnQgZmls ZSBhbmQgZnVuY3Rpb24uCisjCitnZGJfdGVzdCAic2tpcCBmaWxlIiAiRmls ZSAuKiRzcmNmaWxlIHdpbGwgYmUgc2tpcHBlZCB3aGVuIHN0ZXBwaW5nXC4i CitnZGJfdGVzdCAic2tpcCIgIkZ1bmN0aW9uIG1haW4gYXQgLiogd2lsbCBi ZSBza2lwcGVkIHdoZW4gc3RlcHBpbmdcLiIKKworIworIyBDcmVhdGUgYSBz a2lwbGlzdCBlbnRyeSBmb3IgYSBzcGVjaWZpZWQgZmlsZSBhbmQgZnVuY3Rp b24uCisjCitnZGJfdGVzdCAic2tpcCBmaWxlIHNraXAxLmMiICJGaWxlIC4q JHNyY2ZpbGUxIHdpbGwgYmUgc2tpcHBlZCB3aGVuIHN0ZXBwaW5nXC4iCitn ZGJfdGVzdCAic2tpcCBmdW5jdGlvbiBiYXoiICJGdW5jdGlvbiBiYXogYXQg Liogd2lsbCBiZSBza2lwcGVkIHdoZW4gc3RlcHBpbmdcLiIKKworIworIyBU ZXN0IGJhZCBza2lwbGlzdCBlbnRyeSBtb2RpZmljYXRpb24gY29tbWFuZHMK KyMKK2dkYl90ZXN0ICJza2lwIGVuYWJsZSA5OTkiICJObyBza2lwbGlzdCBl bnRyeSBudW1iZXJlZCA5OTkuIgorZ2RiX3Rlc3QgInNraXAgZGlzYWJsZSA5 OTkiICJObyBza2lwbGlzdCBlbnRyeSBudW1iZXJlZCA5OTkuIgorZ2RiX3Rl c3QgInNraXAgZGVsZXRlIDk5OSIgIk5vIHNraXBsaXN0IGVudHJ5IG51bWJl cmVkIDk5OS4iCitnZGJfdGVzdCAic2tpcCBlbmFibGUgYSIgIk5vIHN5bWJv bCBcImFcIiBpbiBjdXJyZW50IGNvbnRleHQuIgorZ2RiX3Rlc3QgInNraXAg ZGlzYWJsZSBhIiAiTm8gc3ltYm9sIFwiYVwiIGluIGN1cnJlbnQgY29udGV4 dC4iCitnZGJfdGVzdCAic2tpcCBkZWxldGUgYSIgIk5vIHN5bWJvbCBcImFc IiBpbiBjdXJyZW50IGNvbnRleHQuIgorCisjCisjIEFzayBmb3IgaW5mbyBv biBhIHNraXBsaXN0IGVudHJ5IHdoaWNoIGRvZXNuJ3QgZXhpc3QuCisjCitn ZGJfdGVzdCAiaW5mbyBza2lwIDk5OSIgIk5vIHNraXBsaXN0IGVudHJ5IG51 bWJlcmVkIDk5OS4iCisKKyMKKyMgRG9lcyB8aW5mbyBza2lwfCBsb29rIHJp Z2h0PworIworZ2RiX3Rlc3QgImluZm8gc2tpcCIgXAorIk51bVxccytUeXBl XFxzK0VuYlxccytBZGRyZXNzXFxzK1doYXRcXHMqCisxXFxzK2ZpbGVcXHMr eVxccysuKiRzcmNmaWxlXFxzKgorMlxccytmdW5jdGlvblxccyt5XFxzKzB4 XFswLTlhLWZcXSsgbWFpbiBhdCAuKiRzcmNmaWxlOlxbMC05XF0rXFxzKgor M1xccytmaWxlXFxzK3lcXHMrLiokc3JjZmlsZTFcXHMqCis0XFxzK2Z1bmN0 aW9uXFxzK3lcXHMrMHhcWzAtOWEtZlxdKyBiYXogYXQgLiokc3JjZmlsZTE6 XFswLTlcXStcXHMqIgorCisjCisjIFJpZ2h0IG5vdywgd2UgaGF2ZSBhbiBv dXRzdGFuZGluZyBza2lwbGlzdCBlbnRyeSBvbiBib3RoIHNvdXJjZQorIyBm aWxlcywgc28gd2hlbiB3ZSBzdGVwIGludG8gdGhlIGZpcnN0IGxpbmUgaW4g bWFpbigpLCB3ZSBzaG91bGQgc3RlcAorIyByaWdodCBvdmVyIGl0IGFuZCBn byB0byB0aGUgc2Vjb25kIGxpbmUgb2YgbWFpbigpLgorIworaWYgIVtydW50 b19tYWluXSB7IGZhaWwgInNraXAgdGVzdHMgc3VwcHJlc3NlZCIgfQorc2Vu ZF9nZGIgInN0ZXBcbiIKK2dkYl90ZXN0ICJidCIgIiMwXFxzK21haW4uKiIg InN0ZXAgYWZ0ZXIgYWxsIGlnbm9yZWQiCisKKyMKKyMgTm93IHJlbW92ZSBz a2lwLmMgZnJvbSB0aGUgc2tpcGxpc3QuICBPdXIgZmlyc3Qgc3RlcCBzaG91 bGQgdGFrZSB1cworIyBpbnRvIGZvbygpLCBhbmQgb3VyIHNlY29uZCBzdGVw IHNob3VsZCB0YWtlIHVzIHRvIHRoZSBuZXh0IGxpbmUgaW4KKyMgbWFpbigp LgorIworc2VuZF9nZGIgInNraXAgZGVsZXRlIDFcbiIKKyMgQ2hlY2sgdGhh dCBlbnRyeSAxIGlzIG1pc3NpbmcgZnJvbSB8aW5mbyBza2lwfAorZ2RiX3Rl c3QgImluZm8gc2tpcCIgXAorIk51bVxccytUeXBlXFxzK0VuYlxccytBZGRy ZXNzXFxzK1doYXRcXHMqCisyXFxzK2Z1bmN0aW9uXFxzK3lcXHMrMHhcWzAt OWEtZlxdKyBtYWluIGF0IC4qJHNyY2ZpbGU6XFswLTlcXStcXHMqCiszXFxz K2ZpbGVcXHMreVxccysuKiRzcmNmaWxlMVxccyoKKzRcXHMrZnVuY3Rpb25c XHMreVxccysweFxbMC05YS1mXF0rIGJheiBhdCAuKiRzcmNmaWxlMTpcWzAt OVxdK1xccyoiCisKK2lmICFbcnVudG9fbWFpbl0geyBmYWlsICJza2lwIHRl c3RzIHN1cHByZXNzZWQiIH0KK2dkYl90ZXN0ICJzdGVwIiAiZm9vIFxcKFxc KSBhdC4qIiAic3RlcCBhZnRlciBkZWxldGluZyAxICgxKSIKK3NlbmRfZ2Ri ICJzdGVwXG4iOyAjIFJldHVybiBmcm9tIGZvbygpCitnZGJfdGVzdCAic3Rl cCIgIm1haW4gXFwoXFwpIGF0LioiICJzdGVwIGFmdGVyIGRlbGV0aW5nIDEg KDIpIgorCisjCisjIE5vdyBkaXNhYmxlIHRoZSBza2lwbGlzdCBlbnRyeSBm b3IgIHNraXAxLmMuICBXZSBzaG91bGQgbm93CisjIHN0ZXAgaW50byBmb28o KSwgdGhlbiBpbnRvIGJhcigpLCBidXQgbm90IGludG8gYmF6KCkuCisjCitz ZW5kX2dkYiAic2tpcCBkaXNhYmxlIDNcbiIKKyMgSXMgZW50cnkgMyBkaXNh YmxlZCBpbiB8aW5mbyBza2lwfD8KK2dkYl90ZXN0ICJpbmZvIHNraXAgMyIg Ii4qXFxuM1xccytmaWxlXFxzK24uKiIgXAorICAgICAgICAgImluZm8gc2tp cCBzaG93cyBlbnRyeSBhcyBkaXNhYmxlZCIKKworaWYgIVtydW50b19tYWlu XSB7IGZhaWwgInNraXAgdGVzdHMgc3VwcHJlc3NlZCIgfQorZ2RiX3Rlc3Qg InN0ZXAiICJiYXIgXFwoXFwpIGF0LioiICJzdGVwIGFmdGVyIGRpc2FibGlu ZyAzICgxKSIKK3NlbmRfZ2RiICJzdGVwXG4iOyAjIFJldHVybiBmcm9tIGZv bygpCitnZGJfdGVzdCAic3RlcCIgImZvbyBcXChcXCkgYXQuKiIgInN0ZXAg YWZ0ZXIgZGlzYWJsaW5nIDMgKDIpIgorc2VuZF9nZGIgInN0ZXBcbiI7ICMg UmV0dXJuIGZyb20gYmFyKCkKK2dkYl90ZXN0ICJzdGVwIiAibWFpbiBcXChc XCkgYXQuKiIgInN0ZXAgYWZ0ZXIgZGlzYWJsaW5nIDMgKDMpIgorCisjCisj IEVuYWJsZSBza2lwbGlzdCBlbnRyeSAzIGFuZCBtYWtlIHN1cmUgd2Ugc3Rl cCBvdmVyIGl0IGxpa2UgYmVmb3JlLgorIworc2VuZF9nZGIgInNraXAgZW5h YmxlIDNcbiIKKyMgSXMgZW50cnkgMyBlbmFibGVkIGluIHxpbmZvIHNraXB8 PworZ2RiX3Rlc3QgImluZm8gc2tpcCAzIiAiLipcXG4zXFxzK2ZpbGVcXHMr eS4qIiBcCisgICAgICAgICAiaW5mbyBza2lwIHNob3dzIGVudHJ5IGFzIGVu YWJsZWQiCitpZiAhW3J1bnRvX21haW5dIHsgZmFpbCAic2tpcCB0ZXN0cyBz dXBwcmVzc2VkIiB9CitnZGJfdGVzdCAic3RlcCIgImZvbyBcXChcXCkgYXQu KiIgInN0ZXAgYWZ0ZXIgZGVsZXRpbmcgMSAoMSkiCitzZW5kX2dkYiAic3Rl cFxuIjsgIyBSZXR1cm4gZnJvbSBmb28oKQorZ2RiX3Rlc3QgInN0ZXAiICJt YWluIFxcKFxcKSBhdC4qIiAic3RlcCBhZnRlciBkZWxldGluZyAxICgyKSIK Kworc2VuZF9nZGIgInNraXAgZGlzYWJsZVxuIgorZ2RiX3Rlc3QgImluZm8g c2tpcCIgXAorIk51bVxccytUeXBlXFxzK0VuYlxccytBZGRyZXNzXFxzK1do YXRcXHMqCisyXFxzK2Z1bmN0aW9uXFxzK25cXHMrMHhcWzAtOWEtZlxdKyBt YWluIGF0IC4qJHNyY2ZpbGU6XFswLTlcXStcXHMqCiszXFxzK2ZpbGVcXHMr blxccysuKiRzcmNmaWxlMVxccyoKKzRcXHMrZnVuY3Rpb25cXHMrblxccysw eFxbMC05YS1mXF0rIGJheiBhdCAuKiRzcmNmaWxlMTpcWzAtOVxdK1xccyoi IFwKKyJpbmZvIHNraXAgYWZ0ZXIgZGlzYWJsaW5nIGFsbCIKKworc2VuZF9n ZGIgInNraXAgZW5hYmxlXG4iCitnZGJfdGVzdCAiaW5mbyBza2lwIiBcCisi TnVtXFxzK1R5cGVcXHMrRW5iXFxzK0FkZHJlc3NcXHMrV2hhdFxccyoKKzJc XHMrZnVuY3Rpb25cXHMreVxccysweFxbMC05YS1mXF0rIG1haW4gYXQgLiok c3JjZmlsZTpcWzAtOVxdK1xccyoKKzNcXHMrZmlsZVxccyt5XFxzKy4qJHNy Y2ZpbGUxXFxzKgorNFxccytmdW5jdGlvblxccyt5XFxzKzB4XFswLTlhLWZc XSsgYmF6IGF0IC4qJHNyY2ZpbGUxOlxbMC05XF0rXFxzKiIgXAorImluZm8g c2tpcCBhZnRlciBlbmFibGluZyBhbGwiCisKK3NlbmRfZ2RiICJza2lwIGRl bGV0ZVxuIgorZ2RiX3Rlc3QgImluZm8gc2tpcCIgIk5vdCBza2lwcGluZyBh bnkgZmlsZXMgb3IgZnVuY3Rpb25zXC4iIFwKKyJpbmZvIHNraXAgYWZ0ZXIg ZGVsZXRpbmcgYWxsIgpkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIu YmFzZS9za2lwMS5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9za2lwMS5j Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkYWI1YzMK LS0tIC9kZXYvbnVsbAorKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3Nr aXAxLmMKQEAgLTAsMCArMSw5IEBACitpbnQgYmFyKCkKK3sKKyAgcmV0dXJu IDE7Cit9CisKK2ludCBiYXooaW50IGEsIGludCBiKQoreworICByZXR1cm4g YSArIGI7Cit9Cg== --0015174c1774b5ecfa04af6d27fe--