From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 14474 invoked by alias); 6 Oct 2011 20:16:13 -0000 Received: (qmail 14452 invoked by uid 22791); 6 Oct 2011 20:16:04 -0000 X-SWARE-Spam-Status: No, hits=1.5 required=5.0 tests=AWL,BAYES_40,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; Thu, 06 Oct 2011 20:15:34 +0000 Received: by bkbzs2 with SMTP id zs2so4365176bkb.0 for ; Thu, 06 Oct 2011 13:15:32 -0700 (PDT) Received: by 10.223.85.134 with SMTP id o6mr5680490fal.8.1317932132387; Thu, 06 Oct 2011 13:15:32 -0700 (PDT) MIME-Version: 1.0 Received: by 10.152.3.193 with HTTP; Thu, 6 Oct 2011 13:15:12 -0700 (PDT) In-Reply-To: <4E8DCE67.80507@earthlink.net> References: <4E8DCE67.80507@earthlink.net> From: Justin Lebar Date: Thu, 06 Oct 2011 20:16:00 -0000 Message-ID: Subject: Re: Status of 'blacklist' patch? To: Stan Shebs , Tom Tromey , Diego Novillo Cc: gdb-patches@sourceware.org Content-Type: multipart/mixed; boundary=000e0ce0f8a896cabd04aea6fc43 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/msg00181.txt.bz2 --000e0ce0f8a896cabd04aea6fc43 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Content-length: 2363 > If you update the patch and resubmit, I promise I'll give it a prompt > review. Deal. I've attached an updated patch, and it looks like gmail got the mime type right this time. :) > There's a lot of change of terminology from "default breakpoint" to > "displayed codepoint". I know we've debated better substitutes for > "breakpoint", but this patch is maybe not the best place to introduce one. How about "last displayed symtab and line"? That seems to be something which is meaningful. On Thu, Oct 6, 2011 at 1:33 PM, Tom Tromey wrote: > Just for future reference, I encourage everybody to ping a lot -- send a > ping once a week. In my experience, it feels like I'm being obnoxious > when I write the note, but it is a good way to get attention, and I > promise you nobody will be offended by it. Thanks; that's good to know. Different communities handle this sort of thing differently. Regards, -Justin On Thu, Oct 6, 2011 at 11:51 AM, Stan Shebs wrote: > On 10/6/11 7:07 AM, Justin Lebar wrote: >> >> I last pinged gdb-patches about the patch on May 16 and got no response. >> >> I imagine the patch has bitrotted by now. =C2=A0I'd be happy to bring it= up >> to date if there were a reasonable chance it would get reviewed this >> time. >> > > (It took a bit of digging to find the last version of the patch - I proba= bly > missed it because the patch was attached as a binary, including the > changelog entry.) > > Anyway, I really like the concept, and "skip" seems like a good general t= erm > for the functionality. > > I skimmed the April version, and noticed a few things to fix up. > > The file headers say things like "Header for GDB line completion.", which > I'm guessing is cut-n-paste from another file. :-) =C2=A0Also it's now 20= 11, not > 2010. > > There's a lot of change of terminology from "default breakpoint" to > "displayed codepoint". =C2=A0I know we've debated better substitutes for > "breakpoint", but this patch is maybe not the best place to introduce one. > =C2=A0(Or I'm confused about what "codepoint" means, I didn't see a defin= ition.) > > I didn't see a patch for the GDB manual, so I'm not sure of the intended > functionality details. > > If you update the patch and resubmit, I promise I'll give it a prompt > review. > > Stan > stan@codesourcery.com > > > --000e0ce0f8a896cabd04aea6fc43 Content-Type: text/x-patch; charset=US-ASCII; name="skip.diff" Content-Disposition: attachment; filename="skip.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gtg6mqm40 Content-length: 70805 ZGlmZiAtLWdpdCBhL2dkYi9DaGFuZ2VMb2cgYi9nZGIvQ2hhbmdlTG9nCmlu ZGV4IGExNjZkMTQuLjIyMTMwYjkgMTAwNjQ0Ci0tLSBhL2dkYi9DaGFuZ2VM b2cKKysrIGIvZ2RiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEx LTEwLTA2ICBKdXN0aW4gTGViYXIgIDxqdXN0aW4ubGViYXJAZ21haWwuY29t PgorCisJKiBNYWtlZmlsZS5pbjogKFNGSUxFUyk6IEFkZCBza2lwLmMuCisJ KEhGSUxFU19OT19TUkNESVIpOiBBZGQgc2tpcC5oLgorCShDT01NT05fT0JT KTogQWRkIHNraXAuby4KKwkqIHNraXAuaCwgc2tpcC5jOiBOZXcKKwkqIGJy ZWFrcG9pbnQuaCAoc2V0X2RlZmF1bHRfYnJlYWtwb2ludCk6IHJlbW92ZWQK KwkqIGJyZWFrcG9pbnQuYzogUmVtb3ZlZCBkZWZhdWx0X2JyZWFrcG9pbnRf dmFsaWQsCisJZGVmYXVsdF9icmVha3BvaW50X2FkZHJlc3MsIGRlZmF1bHRf YnJlYWtwb2ludF9zeW10YWIsCisJZGVmYXVsdF9icmVha3BvaW50X2xpbmUs IGRlZmF1bHRfYnJlYWtwb2ludF9wc3BhY2UgdmFyaWFibGVzLgorCShzZXRf ZGVmYXVsdF9icmVha3BvaW50KTogUmVtb3ZlZAorCShwYXJzZV9icmVha3Bv aW50X3NhbHMsIGNyZWF0ZV9icmVha3BvaW50LCBjbGVhcl9jb21tYW5kLAor CWRlY29kZV9saW5lX3NwZWNfMSk6IFJlbW92ZWQgdXNlcyBvZiBkZWZhdWx0 X2JyZWFrcG9pbnQgdmFyaWFibGVzOworCXJlcGxhY2VkIHdpdGggZnVuY3Rp b24gY2FsbHMgaW50byBzdGFjay5jLgorCSogY2xpL2NsaS1jbWRzLmg6IEFk ZGVkIGNtZF9saXN0X2VsZW1lbnQgKnNraXBsaXN0LgorCSogY2xpL2NsaS1j bWRzLmM6IEFkZGVkIHNraXBsaXN0LgorCShpbml0X2NtZF9saXN0cyk6IElu aXRpYWxpemUgc2tpcGxpc3QuCisJKGluaXRfY2xpX2NtZHMpOiBGaXhlZCBj b21tZW50IChjbGFzc2VzIG9mIGNvbW1hbmRzIGFwcGVhciBpbgorCWFscGhh YmV0aWNhbCBvcmRlcikuCisJKiBpbmZydW4uYyAoaGFuZGxlX2luZmVyaW9y X2V2ZW50KTogQWRkZWQgY2hlY2sgdGhhdCB3ZSBkb24ndCBzdGVwCisJaW50 byBhIGZ1bmN0aW9uIHdob3NlIHBjIGlzIG1hcmtlZCBmb3Igc2tpcC4KKwkq IHN0YWNrLmM6IEFkZGVkIGxhc3RfY29kZXBvaW50X3ZhbGlkLCBsYXN0X2Nv ZGVwb2ludF9wc3BhY2UsCisJbGFzdF9jb2RlcG9pbnRfYWRkciwgbGFzdF9j b2RlcG9pbnRfc3ltdGFiLCBsYXN0X2NvZGVwb2ludF9saW5lCisJdmFyaWFi bGVzLgorCShzZXRfbGFzdF9kaXNwbGF5ZWRfY29kZXBvaW50KTogTmV3IHN0 YXRpYyBmdW5jdGlvbi4KKwkocHJpbnRfZnJhbWVfaW5mbyk6IFN3aXRjaGVk IGNhbGwgdG8gc2V0X2RlZmF1bHRfYnJlYWtwb2ludCB0byBjYWxsIHRvCisJ c2V0X2xhc3RfZGlzcGxheWVkX2NvZGVwb2ludC4KKwkoY2xlYXJfbGFzdF9k aXNwbGF5ZWRfc3ltdGFiX2FuZF9saW5lLAorCWxhc3RfZGlzcGxheWVkX3N5 bXRhYl9hbmRfbGluZV9pc192YWxpZCwgZ2V0X2xhc3RfZGlzcGxheWVkX3Bz cGFjZSwKKwlnZXRfbGFzdF9kaXNwbGF5ZWRfYWRkciwgZ2V0X2xhc3RfZGlz cGxheWVkX3N5bXRhYiwKKwlnZXRfbGFzdF9kaXNwbGF5ZWRfbGluZSwgZ2V0 X2xhc3RfZGlzcGxheWVkX3N5bXRhYl9hbmRfbGluZSk6IE5ldworCXB1Ymxp YyBmdW5jdGlvbnMuCisJKiBzdGFjay5oIChjbGVhcl9sYXN0X2Rpc3BsYXll ZF9zeW10YWJfYW5kX2xpbmUsCisJbGFzdF9kaXNwbGF5ZWRfc3ltdGFiX2Fu ZF9saW5lX2lzX3ZhbGlkLCBnZXRfbGFzdF9kaXNwbGF5ZWRfcHNwYWNlLAor CWdldF9sYXN0X2Rpc3BsYXllZF9hZGRyLCBnZXRfbGFzdF9kaXNwbGF5ZWRf c3ltdGFiLAorCWdldF9sYXN0X2Rpc3BsYXllZF9saW5lLCBnZXRfbGFzdF9k aXNwbGF5ZWRfc3ltdGFiX2FuZF9saW5lKTogQWRkZWQKKwogMjAxMS0xMC0w NSAgVHJpc3RhbiBHaW5nb2xkICA8Z2luZ29sZEBhZGFjb3JlLmNvbT4KIAog CSogYWRhLXRhc2tzLmMgKHJlYWRfYXRjYik6IE1ha2UgcmF2ZW5zY2FyX3Rh c2tfbmFtZSBzdGF0aWMuCkBAIC00NzMzLDYgKzQ3NzAsNyBAQAogCShzeW1i b2xfZmlsZV9hZGQpOiBQYXNzIE5VTEwgdG8gdGhlIG5ldyBwYXJhbWV0ZXIg cGFyZW50LgogCSogc3ltZmlsZS5oIChzeW1ib2xfZmlsZV9hZGRfZnJvbV9i ZmQpOiBOZXcgcGFyYW1ldGVyIHBhcmVudC4KIAorPDw8PDw8PCBIRUFECiAy MDExLTA0LTE3ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJl ZGhhdC5jb20+CiAKIAkqIGVsZnJlYWQuYyAoZWxmX3N5bXRhYl9yZWFkKTog RG8gbm90IGlnbm9yZSAuTCBzeW1ib2xzIGlmIHRoZXkgYXJlCmRpZmYgLS1n aXQgYS9nZGIvTWFrZWZpbGUuaW4gYi9nZGIvTWFrZWZpbGUuaW4KaW5kZXgg ODI2ZDMzOS4uZDZiMDA0YiAxMDA2NDQKLS0tIGEvZ2RiL01ha2VmaWxlLmlu CisrKyBiL2dkYi9NYWtlZmlsZS5pbgpAQCAtNzE5LDcgKzcxOSw3IEBAIFNG SUxFUyA9IGFkYS1leHAueSBhZGEtbGFuZy5jIGFkYS10eXBlcHJpbnQuYyBh ZGEtdmFscHJpbnQuYyBhZGEtdGFza3MuYyBcCiAJcHJvbG9ndWUtdmFsdWUu YyBwc3ltdGFiLmMgXAogCXJlZ2NhY2hlLmMgcmVnZ3JvdXBzLmMgcmVtb3Rl LmMgcmVtb3RlLWZpbGVpby5jIHJldmVyc2UuYyBcCiAJc2VudGluZWwtZnJh bWUuYyBcCi0Jc2VyaWFsLmMgc2VyLWJhc2UuYyBzZXItdW5peC5jIFwKKwlz ZXJpYWwuYyBzZXItYmFzZS5jIHNlci11bml4LmMgc2tpcC5jIFwKIAlzb2xp Yi5jIHNvbGliLXRhcmdldC5jIHNvdXJjZS5jIFwKIAlzdGFic3JlYWQuYyBz dGFjay5jIHN0ZC1yZWdzLmMgc3ltZmlsZS5jIHN5bWZpbGUtbWVtLmMgc3lt bWlzYy5jIFwKIAlzeW10YWIuYyBcCkBAIC04MTksNyArODE5LDcgQEAgb3Nk YXRhLmggcHJvY2ZzLmggcHl0aG9uL3B5LWV2ZW50LmggcHl0aG9uL3B5LWV2 ZW50cy5oIHB5dGhvbi9weS1zdG9wZXZlbnQuaCBcCiBweXRob24vcHl0aG9u LWludGVybmFsLmggcHl0aG9uL3B5dGhvbi5oIHJhdmVuc2Nhci10aHJlYWQu aCByZWNvcmQuaCBcCiBzb2xpYi1kYXJ3aW4uaCBzb2xpYi1pYTY0LWhwdXgu aCBzb2xpYi1zcHUuaCB3aW5kb3dzLW5hdC5oIHhjb2ZmcmVhZC5oIFwKIGdu dWxpYi9leHRyYS9hcmctbm9ubnVsbC5oIGdudWxpYi9leHRyYS9jKytkZWZz LmggZ251bGliL2V4dHJhL3dhcm4tb24tdXNlLmggXAotZ251bGliL3N0ZGRl Zi5pbi5oIGlubGluZS1mcmFtZS5oIFwKK2dudWxpYi9zdGRkZWYuaW4uaCBp bmxpbmUtZnJhbWUuaCBza2lwLmggXAogY29tbW9uL2NvbW1vbi11dGlscy5o IGNvbW1vbi94bWwtdXRpbHMuaCBjb21tb24vYnVmZmVyLmggY29tbW9uL3B0 aWQuaCBcCiBjb21tb24vbGludXgtb3NkYXRhLmgKIApAQCAtOTA3LDcgKzkw Nyw3IEBAIENPTU1PTl9PQlMgPSAkKERFUEZJTEVTKSAkKENPTkZJR19PQlMp ICQoWVlPQkopIFwKIAl4bWwtc3VwcG9ydC5vIHhtbC1zeXNjYWxsLm8geG1s LXV0aWxzLm8gXAogCXRhcmdldC1kZXNjcmlwdGlvbnMubyB0YXJnZXQtbWVt b3J5Lm8geG1sLXRkZXNjLm8geG1sLWJ1aWx0aW4ubyBcCiAJaW5mZXJpb3Iu byBvc2RhdGEubyBnZGJfdXNsZWVwLm8gcmVjb3JkLm8gZ2NvcmUubyBcCi0J aml0Lm8gcHJvZ3NwYWNlLm8gXAorCWppdC5vIHByb2dzcGFjZS5vIHNraXAu byBcCiAJY29tbW9uLXV0aWxzLm8gYnVmZmVyLm8gcHRpZC5vCiAKIFRTT0JT ID0gaW5mbG93Lm8KZGlmZiAtLWdpdCBhL2dkYi9icmVha3BvaW50LmMgYi9n ZGIvYnJlYWtwb2ludC5jCmluZGV4IDA4ZmY2OWIuLjNkM2UxMmIgMTAwNjQ0 Ci0tLSBhL2dkYi9icmVha3BvaW50LmMKKysrIGIvZ2RiL2JyZWFrcG9pbnQu YwpAQCAtNjUsNiArNjUsOCBAQAogI2luY2x1ZGUgInBhcnNlci1kZWZzLmgi CiAjaW5jbHVkZSAiY2xpL2NsaS11dGlscy5oIgogI2luY2x1ZGUgImNvbnRp bnVhdGlvbnMuaCIKKyNpbmNsdWRlICJzdGFjay5oIgorI2luY2x1ZGUgInNr aXAuaCIKIAogLyogcmVhZGxpbmUgaW5jbHVkZSBmaWxlcyAqLwogI2luY2x1 ZGUgInJlYWRsaW5lL3JlYWRsaW5lLmgiCkBAIC01NzIsMTkgKzU3NCw2IEBA IG1ha2VfY2xlYW51cF9kZWNyZWZfY291bnRlZF9jb21tYW5kX2xpbmUgKHN0 cnVjdCBjb3VudGVkX2NvbW1hbmRfbGluZSAqKmNtZHApCiAgIHJldHVybiBt YWtlX2NsZWFudXAgKGRvX2NsZWFudXBfY291bnRlZF9jb21tYW5kX2xpbmUs IGNtZHApOwogfQogCi0vKiBEZWZhdWx0IGFkZHJlc3MsIHN5bXRhYiBhbmQg bGluZSB0byBwdXQgYSBicmVha3BvaW50IGF0Ci0gICBmb3IgImJyZWFrIiBj b21tYW5kIHdpdGggbm8gYXJnLgotICAgSWYgZGVmYXVsdF9icmVha3BvaW50 X3ZhbGlkIGlzIHplcm8sIHRoZSBvdGhlciB0aHJlZSBhcmUKLSAgIG5vdCB2 YWxpZCwgYW5kICJicmVhayIgd2l0aCBubyBhcmcgaXMgYW4gZXJyb3IuCi0K LSAgIFRoaXMgc2V0IGJ5IHByaW50X3N0YWNrX2ZyYW1lLCB3aGljaCBjYWxs cyBzZXRfZGVmYXVsdF9icmVha3BvaW50LiAgKi8KLQotaW50IGRlZmF1bHRf YnJlYWtwb2ludF92YWxpZDsKLUNPUkVfQUREUiBkZWZhdWx0X2JyZWFrcG9p bnRfYWRkcmVzczsKLXN0cnVjdCBzeW10YWIgKmRlZmF1bHRfYnJlYWtwb2lu dF9zeW10YWI7Ci1pbnQgZGVmYXVsdF9icmVha3BvaW50X2xpbmU7Ci1zdHJ1 Y3QgcHJvZ3JhbV9zcGFjZSAqZGVmYXVsdF9icmVha3BvaW50X3BzcGFjZTsK LQogDAogLyogUmV0dXJuIHRoZSBicmVha3BvaW50IHdpdGggdGhlIHNwZWNp ZmllZCBudW1iZXIsIG9yIE5VTEwKICAgIGlmIHRoZSBudW1iZXIgZG9lcyBu b3QgcmVmZXIgdG8gYW4gZXhpc3RpbmcgYnJlYWtwb2ludC4gICovCkBAIC01 MzM5LDIwICs1MzI4LDYgQEAgZGVzY3JpYmVfb3RoZXJfYnJlYWtwb2ludHMg KHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAogICAgIH0KIH0KIAwKLS8qIFNl dCB0aGUgZGVmYXVsdCBwbGFjZSB0byBwdXQgYSBicmVha3BvaW50Ci0gICBm b3IgdGhlIGBicmVhaycgY29tbWFuZCB3aXRoIG5vIGFyZ3VtZW50cy4gICov Ci0KLXZvaWQKLXNldF9kZWZhdWx0X2JyZWFrcG9pbnQgKGludCB2YWxpZCwg c3RydWN0IHByb2dyYW1fc3BhY2UgKnBzcGFjZSwKLQkJCUNPUkVfQUREUiBh ZGRyLCBzdHJ1Y3Qgc3ltdGFiICpzeW10YWIsCi0JCQlpbnQgbGluZSkKLXsK LSAgZGVmYXVsdF9icmVha3BvaW50X3ZhbGlkID0gdmFsaWQ7Ci0gIGRlZmF1 bHRfYnJlYWtwb2ludF9wc3BhY2UgPSBwc3BhY2U7Ci0gIGRlZmF1bHRfYnJl YWtwb2ludF9hZGRyZXNzID0gYWRkcjsKLSAgZGVmYXVsdF9icmVha3BvaW50 X3N5bXRhYiA9IHN5bXRhYjsKLSAgZGVmYXVsdF9icmVha3BvaW50X2xpbmUg PSBsaW5lOwotfQogCiAvKiBSZXR1cm4gdHJ1ZSBpZmYgaXQgaXMgbWVhbmlu Z2Z1bCB0byB1c2UgdGhlIGFkZHJlc3MgbWVtYmVyIG9mCiAgICBCUFQuICBG b3Igc29tZSBicmVha3BvaW50IHR5cGVzLCB0aGUgYWRkcmVzcyBtZW1iZXIg aXMgaXJyZWxldmFudApAQCAtNzU0MywyNCArNzUxOCwyNiBAQCBwYXJzZV9i cmVha3BvaW50X3NhbHMgKGNoYXIgKiphZGRyZXNzLAogICBpZiAoKCphZGRy ZXNzKSA9PSBOVUxMCiAgICAgICB8fCAoc3RybmNtcCAoKCphZGRyZXNzKSwg ImlmIiwgMikgPT0gMCAmJiBpc3NwYWNlICgoKmFkZHJlc3MpWzJdKSkpCiAg ICAgewotICAgICAgaWYgKGRlZmF1bHRfYnJlYWtwb2ludF92YWxpZCkKKyAg ICAgIC8qIFRoZSBsYXN0IGRpc3BsYXllZCBjb2RlcG9pbnQsIGlmIGl0J3Mg dmFsaWQsIGlzIG91ciBkZWZhdWx0IGJyZWFrcG9pbnQKKyAgICAgICAgIGFk ZHJlc3MuICovCisgICAgICBpZiAobGFzdF9kaXNwbGF5ZWRfc3ltdGFiX2Fu ZF9saW5lX2lzX3ZhbGlkICgpKQogCXsKIAkgIHN0cnVjdCBzeW10YWJfYW5k X2xpbmUgc2FsOwogCiAJICBpbml0X3NhbCAoJnNhbCk7CQkvKiBJbml0aWFs aXplIHRvIHplcm9lcy4gICovCiAJICBzYWxzLT5zYWxzID0gKHN0cnVjdCBz eW10YWJfYW5kX2xpbmUgKikKIAkgICAgeG1hbGxvYyAoc2l6ZW9mIChzdHJ1 Y3Qgc3ltdGFiX2FuZF9saW5lKSk7Ci0JICBzYWwucGMgPSBkZWZhdWx0X2Jy ZWFrcG9pbnRfYWRkcmVzczsKLQkgIHNhbC5saW5lID0gZGVmYXVsdF9icmVh a3BvaW50X2xpbmU7Ci0JICBzYWwuc3ltdGFiID0gZGVmYXVsdF9icmVha3Bv aW50X3N5bXRhYjsKLQkgIHNhbC5wc3BhY2UgPSBkZWZhdWx0X2JyZWFrcG9p bnRfcHNwYWNlOwotCSAgc2FsLnNlY3Rpb24gPSBmaW5kX3BjX292ZXJsYXkg KHNhbC5wYyk7CisKKwkgIC8qIFNldCBzYWwncyBwc3BhY2UsIHBjLCBzeW10 YWIsIGFuZCBsaW5lIHRvIHRoZSB2YWx1ZXMKKwkgICAgIGNvcnJlc3BvbmRp bmcgdG8gdGhlIGxhc3QgY2FsbCB0byBwcmludF9mcmFtZV9pbmZvLiAqLwor CSAgZ2V0X2xhc3RfZGlzcGxheWVkX3N5bXRhYl9hbmRfbGluZSAoJnNhbCk7 CisgICAgICAgICAgc2FsLnNlY3Rpb24gPSBmaW5kX3BjX292ZXJsYXkgKHNh bC5wYyk7CiAKIAkgIC8qICJicmVhayIgd2l0aG91dCBhcmd1bWVudHMgaXMg ZXF1aXZhbGVudCB0byAiYnJlYWsgKlBDIgotCSAgICAgd2hlcmUgUEMgaXMg dGhlIGRlZmF1bHRfYnJlYWtwb2ludF9hZGRyZXNzLiAgU28gbWFrZSBzdXJl Ci0JICAgICB0byBzZXQgc2FsLmV4cGxpY2l0X3BjIHRvIHByZXZlbnQgR0RC IGZyb20gdHJ5aW5nIHRvCi0JICAgICBleHBhbmQgdGhlIGxpc3Qgb2Ygc2Fs cyB0byBpbmNsdWRlIGFsbCBvdGhlciBpbnN0YW5jZXMKLQkgICAgIHdpdGgg dGhlIHNhbWUgc3ltdGFiIGFuZCBsaW5lLiAgKi8KKwkgICAgIHdoZXJlIFBD IGlzIHRoZSBsYXN0IGRpc3BsYXllZCBjb2RlcG9pbnQncyBhZGRyZXNzLiAg U28KKwkgICAgIG1ha2Ugc3VyZSB0byBzZXQgc2FsLmV4cGxpY2l0X3BjIHRv IHByZXZlbnQgR0RCIGZyb20KKwkgICAgIHRyeWluZyB0byBleHBhbmQgdGhl IGxpc3Qgb2Ygc2FscyB0byBpbmNsdWRlIGFsbCBvdGhlcgorCSAgICAgaW5z dGFuY2VzIHdpdGggdGhlIHNhbWUgc3ltdGFiIGFuZCBsaW5lLiAgKi8KIAkg IHNhbC5leHBsaWNpdF9wYyA9IDE7CiAKIAkgIHNhbHMtPnNhbHNbMF0gPSBz YWw7CkBAIC03NTc0LDE5ICs3NTUxLDIyIEBAIHBhcnNlX2JyZWFrcG9pbnRf c2FscyAoY2hhciAqKmFkZHJlc3MsCiAgICAgICAvKiBGb3JjZSBhbG1vc3Qg YWxsIGJyZWFrcG9pbnRzIHRvIGJlIGluIHRlcm1zIG9mIHRoZQogICAgICAg ICAgY3VycmVudF9zb3VyY2Vfc3ltdGFiICh3aGljaCBpcyBkZWNvZGVfbGlu ZV8xJ3MgZGVmYXVsdCkuCiAgICAgICAgICBUaGlzIHNob3VsZCBwcm9kdWNl IHRoZSByZXN1bHRzIHdlIHdhbnQgYWxtb3N0IGFsbCBvZiB0aGUKLSAgICAg ICAgIHRpbWUgd2hpbGUgbGVhdmluZyBkZWZhdWx0X2JyZWFrcG9pbnRfKiBh bG9uZS4KKwkgdGltZSB3aGlsZSBsZWF2aW5nIHRoZSBsYXN0IGRpc3BsYXll ZCBjb2RlcG9pbnQgcG9pbnRlcnMKKwkgYWxvbmUuCiAKICAgICAgICAgIE9i akM6IEhvd2V2ZXIsIGRvbid0IG1hdGNoIGFuIE9iamVjdGl2ZS1DIG1ldGhv ZCBuYW1lIHdoaWNoCiAgICAgICAgICBtYXkgaGF2ZSBhICcrJyBvciAnLScg c3VjY2VlZGVkIGJ5IGEgJ1snICovCiAJIAogICAgICAgc3RydWN0IHN5bXRh Yl9hbmRfbGluZSBjdXJzYWwgPSBnZXRfY3VycmVudF9zb3VyY2Vfc3ltdGFi X2FuZF9saW5lICgpOwogCQkJCi0gICAgICBpZiAoZGVmYXVsdF9icmVha3Bv aW50X3ZhbGlkCisgICAgICBpZiAobGFzdF9kaXNwbGF5ZWRfc3ltdGFiX2Fu ZF9saW5lX2lzX3ZhbGlkICgpCiAJICAmJiAoIWN1cnNhbC5zeW10YWIKICAJ ICAgICAgfHwgKChzdHJjaHIgKCIrLSIsICgqYWRkcmVzcylbMF0pICE9IE5V TEwpCiAgCQkgICYmICgoKmFkZHJlc3MpWzFdICE9ICdbJykpKSkKLQkqc2Fs cyA9IGRlY29kZV9saW5lXzEgKGFkZHJlc3MsIDEsIGRlZmF1bHRfYnJlYWtw b2ludF9zeW10YWIsCi0JCQkgICAgICAgZGVmYXVsdF9icmVha3BvaW50X2xp bmUsIGNhbm9uaWNhbCk7CisJKnNhbHMgPSBkZWNvZGVfbGluZV8xIChhZGRy ZXNzLCAxLAorCQkJICAgICAgIGdldF9sYXN0X2Rpc3BsYXllZF9zeW10YWIg KCksCisJCQkgICAgICAgZ2V0X2xhc3RfZGlzcGxheWVkX2xpbmUgKCksCisJ CQkgICAgICAgY2Fub25pY2FsKTsKICAgICAgIGVsc2UKIAkqc2FscyA9IGRl Y29kZV9saW5lXzEgKGFkZHJlc3MsIDEsIChzdHJ1Y3Qgc3ltdGFiICopIE5V TEwsIDAsCiAJCSAgICAgICAgICAgICAgIGNhbm9uaWNhbCk7CkBAIC05NjEx LDkgKzk1OTEsMTEgQEAgdW50aWxfYnJlYWtfY29tbWFuZCAoY2hhciAqYXJn LCBpbnQgZnJvbV90dHksIGludCBhbnl3aGVyZSkKICAgLyogU2V0IGEgYnJl YWtwb2ludCB3aGVyZSB0aGUgdXNlciB3YW50cyBpdCBhbmQgYXQgcmV0dXJu IGZyb20KICAgICAgdGhpcyBmdW5jdGlvbi4gICovCiAKLSAgaWYgKGRlZmF1 bHRfYnJlYWtwb2ludF92YWxpZCkKLSAgICBzYWxzID0gZGVjb2RlX2xpbmVf MSAoJmFyZywgMSwgZGVmYXVsdF9icmVha3BvaW50X3N5bXRhYiwKLQkJCSAg ZGVmYXVsdF9icmVha3BvaW50X2xpbmUsIE5VTEwpOworICBpZiAobGFzdF9k aXNwbGF5ZWRfc3ltdGFiX2FuZF9saW5lX2lzX3ZhbGlkICgpKQorICAgIHNh bHMgPSBkZWNvZGVfbGluZV8xICgmYXJnLCAxLAorCQkJICBnZXRfbGFzdF9k aXNwbGF5ZWRfc3ltdGFiICgpLAorCQkJICBnZXRfbGFzdF9kaXNwbGF5ZWRf bGluZSAoKSwKKwkJCSAgTlVMTCk7CiAgIGVsc2UKICAgICBzYWxzID0gZGVj b2RlX2xpbmVfMSAoJmFyZywgMSwgKHN0cnVjdCBzeW10YWIgKikgTlVMTCwg MCwgTlVMTCk7CiAKQEAgLTEwMTM1LDEwICsxMDExNywxMSBAQCBjbGVhcl9j b21tYW5kIChjaGFyICphcmcsIGludCBmcm9tX3R0eSkKIAl4bWFsbG9jIChz aXplb2YgKHN0cnVjdCBzeW10YWJfYW5kX2xpbmUpKTsKICAgICAgIG1ha2Vf Y2xlYW51cCAoeGZyZWUsIHNhbHMuc2Fscyk7CiAgICAgICBpbml0X3NhbCAo JnNhbCk7CQkvKiBJbml0aWFsaXplIHRvIHplcm9lcy4gICovCi0gICAgICBz YWwubGluZSA9IGRlZmF1bHRfYnJlYWtwb2ludF9saW5lOwotICAgICAgc2Fs LnN5bXRhYiA9IGRlZmF1bHRfYnJlYWtwb2ludF9zeW10YWI7Ci0gICAgICBz YWwucGMgPSBkZWZhdWx0X2JyZWFrcG9pbnRfYWRkcmVzczsKLSAgICAgIHNh bC5wc3BhY2UgPSBkZWZhdWx0X2JyZWFrcG9pbnRfcHNwYWNlOworCisgICAg ICAvKiBTZXQgc2FsJ3MgbGluZSwgc3ltdGFiLCBwYywgYW5kIHBzcGFjZSB0 byB0aGUgdmFsdWVzCisJIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGxhc3QgY2Fs bCB0byBwcmludF9mcmFtZV9pbmZvLiAgSWYgdGhlCisJIGNvZGVwb2ludCBp cyBub3QgdmFsaWQsIHRoaXMgd2lsbCBzZXQgYWxsIHRoZSBmaWVsZHMgdG8g MC4gKi8KKyAgICAgIGdldF9sYXN0X2Rpc3BsYXllZF9zeW10YWJfYW5kX2xp bmUgKCZzYWwpOwogICAgICAgaWYgKHNhbC5zeW10YWIgPT0gMCkKIAllcnJv ciAoXygiTm8gc291cmNlIGZpbGUgc3BlY2lmaWVkLiIpKTsKIApAQCAtMTE5 ODYsNiArMTE5NjksOSBAQCBicmVha3BvaW50X3JlX3NldCAodm9pZCkKICAg Y3JlYXRlX2xvbmdqbXBfbWFzdGVyX2JyZWFrcG9pbnQgKCk7CiAgIGNyZWF0 ZV9zdGRfdGVybWluYXRlX21hc3Rlcl9icmVha3BvaW50ICgpOwogICBjcmVh dGVfZXhjZXB0aW9uX21hc3Rlcl9icmVha3BvaW50ICgpOworCisgIC8qIFdo aWxlIHdlJ3JlIGF0IGl0LCByZXNldCB0aGUgc2tpcCBsaXN0IHRvby4gKi8K KyAgc2tpcF9yZV9zZXQgKCk7CiB9CiAMCiAvKiBSZXNldCB0aGUgdGhyZWFk IG51bWJlciBvZiB0aGlzIGJyZWFrcG9pbnQ6CkBAIC0xMjQzNSw3ICsxMjQy MSw4IEBAIGludmFsaWRhdGVfYnBfdmFsdWVfb25fbWVtb3J5X2NoYW5nZSAo Q09SRV9BRERSIGFkZHIsIGludCBsZW4sCiAgICAgICB9CiB9CiAKLS8qIFVz ZSBkZWZhdWx0X2JyZWFrcG9pbnRfJ3MsIG9yIG5vdGhpbmcgaWYgdGhleSBh cmVuJ3QgdmFsaWQuICAqLworLyogVXNlIHRoZSBsYXN0IGRpc3BsYXllZCBj b2RlcG9pbnQncyB2YWx1ZXMsIG9yIG5vdGhpbmcKKyAgIGlmIHRoZXkgYXJl bid0IHZhbGlkLiAqLwogCiBzdHJ1Y3Qgc3ltdGFic19hbmRfbGluZXMKIGRl Y29kZV9saW5lX3NwZWNfMSAoY2hhciAqc3RyaW5nLCBpbnQgZnVuZmlyc3Rs aW5lKQpAQCAtMTI0NDQsMTAgKzEyNDMxLDEwIEBAIGRlY29kZV9saW5lX3Nw ZWNfMSAoY2hhciAqc3RyaW5nLCBpbnQgZnVuZmlyc3RsaW5lKQogCiAgIGlm IChzdHJpbmcgPT0gMCkKICAgICBlcnJvciAoXygiRW1wdHkgbGluZSBzcGVj aWZpY2F0aW9uLiIpKTsKLSAgaWYgKGRlZmF1bHRfYnJlYWtwb2ludF92YWxp ZCkKKyAgaWYgKGxhc3RfZGlzcGxheWVkX3N5bXRhYl9hbmRfbGluZV9pc192 YWxpZCAoKSkKICAgICBzYWxzID0gZGVjb2RlX2xpbmVfMSAoJnN0cmluZywg ZnVuZmlyc3RsaW5lLAotCQkJICBkZWZhdWx0X2JyZWFrcG9pbnRfc3ltdGFi LAotCQkJICBkZWZhdWx0X2JyZWFrcG9pbnRfbGluZSwKKwkJCSAgZ2V0X2xh c3RfZGlzcGxheWVkX3N5bXRhYiAoKSwKKwkJCSAgZ2V0X2xhc3RfZGlzcGxh eWVkX2xpbmUgKCksCiAJCQkgIE5VTEwpOwogICBlbHNlCiAgICAgc2FscyA9 IGRlY29kZV9saW5lXzEgKCZzdHJpbmcsIGZ1bmZpcnN0bGluZSwKZGlmZiAt LWdpdCBhL2dkYi9icmVha3BvaW50LmggYi9nZGIvYnJlYWtwb2ludC5oCmlu ZGV4IDVlNWQxYjkuLmQ3ZTM3OTkgMTAwNjQ0Ci0tLSBhL2dkYi9icmVha3Bv aW50LmgKKysrIGIvZ2RiL2JyZWFrcG9pbnQuaApAQCAtMTAzMyw5ICsxMDMz LDYgQEAgZXh0ZXJuIHN0cnVjdCBicmVha3BvaW50ICpjbG9uZV9tb21lbnRh cnlfYnJlYWtwb2ludCAoc3RydWN0IGJyZWFrcG9pbnQgKmJwa3QpOwogCiBl eHRlcm4gdm9pZCBzZXRfaWdub3JlX2NvdW50IChpbnQsIGludCwgaW50KTsK IAotZXh0ZXJuIHZvaWQgc2V0X2RlZmF1bHRfYnJlYWtwb2ludCAoaW50LCBz dHJ1Y3QgcHJvZ3JhbV9zcGFjZSAqLAotCQkJCSAgICBDT1JFX0FERFIsIHN0 cnVjdCBzeW10YWIgKiwgaW50KTsKLQogZXh0ZXJuIHZvaWQgYnJlYWtwb2lu dF9pbml0X2luZmVyaW9yIChlbnVtIGluZl9jb250ZXh0KTsKIAogZXh0ZXJu IHN0cnVjdCBjbGVhbnVwICptYWtlX2NsZWFudXBfZGVsZXRlX2JyZWFrcG9p bnQgKHN0cnVjdCBicmVha3BvaW50ICopOwpkaWZmIC0tZ2l0IGEvZ2RiL2Ns aS9jbGktY21kcy5jIGIvZ2RiL2NsaS9jbGktY21kcy5jCmluZGV4IGNjZjZl YTYuLmRhYjNhMTIgMTAwNjQ0Ci0tLSBhL2dkYi9jbGkvY2xpLWNtZHMuYwor KysgYi9nZGIvY2xpL2NsaS1jbWRzLmMKQEAgLTE4NSw2ICsxODUsOCBAQCBz dHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqc2V0Y2hlY2tsaXN0OwogCiBzdHJ1 Y3QgY21kX2xpc3RfZWxlbWVudCAqc2hvd2NoZWNrbGlzdDsKIAorc3RydWN0 IGNtZF9saXN0X2VsZW1lbnQgKnNraXBsaXN0OworCiAvKiBDb21tYW5kIHRy YWNpbmcgc3RhdGUuICAqLwogCiBpbnQgc291cmNlX3ZlcmJvc2UgPSAwOwpA QCAtMTMyOSw2ICsxMzMxLDcgQEAgaW5pdF9jbWRfbGlzdHMgKHZvaWQpCiAg IHNob3dwcmludGxpc3QgPSBOVUxMOwogICBzZXRjaGVja2xpc3QgPSBOVUxM OwogICBzaG93Y2hlY2tsaXN0ID0gTlVMTDsKKyAgc2tpcGxpc3QgPSBOVUxM OwogfQogCiBzdGF0aWMgdm9pZApAQCAtMTM5NCw3ICsxMzk3LDcgQEAgaW5p dF9jbGlfY21kcyAodm9pZCkKICAgY2hhciAqc291cmNlX2hlbHBfdGV4dDsK IAogICAvKiBEZWZpbmUgdGhlIGNsYXNzZXMgb2YgY29tbWFuZHMuCi0gICAg IFRoZXkgd2lsbCBhcHBlYXIgaW4gdGhlIGhlbHAgbGlzdCBpbiB0aGUgcmV2 ZXJzZSBvZiB0aGlzIG9yZGVyLiAgKi8KKyAgICAgVGhleSB3aWxsIGFwcGVh ciBpbiB0aGUgaGVscCBsaXN0IGluIGFscGhhYmV0aWNhbCBvcmRlci4gICov CiAKICAgYWRkX2NtZCAoImludGVybmFscyIsIGNsYXNzX21haW50ZW5hbmNl LCBOVUxMLCBfKCJcCiBNYWludGVuYW5jZSBjb21tYW5kcy5cblwKZGlmZiAt LWdpdCBhL2dkYi9jbGkvY2xpLWNtZHMuaCBiL2dkYi9jbGkvY2xpLWNtZHMu aAppbmRleCBlNzlkY2YwLi43M2NjZGQyIDEwMDY0NAotLS0gYS9nZGIvY2xp L2NsaS1jbWRzLmgKKysrIGIvZ2RiL2NsaS9jbGktY21kcy5oCkBAIC0xMDYs NiArMTA2LDggQEAgZXh0ZXJuIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpz ZXRjaGVja2xpc3Q7CiAKIGV4dGVybiBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVu dCAqc2hvd2NoZWNrbGlzdDsKIAorZXh0ZXJuIHN0cnVjdCBjbWRfbGlzdF9l bGVtZW50ICpza2lwbGlzdDsKKwogLyogRXhwb3J0ZWQgdG8gZ2RiL3RvcC5j ICovCiAKIHZvaWQgaW5pdF9jbWRfbGlzdHMgKHZvaWQpOwpkaWZmIC0tZ2l0 IGEvZ2RiL2RvYy9nZGIudGV4aW5mbyBiL2dkYi9kb2MvZ2RiLnRleGluZm8K aW5kZXggZGQwZjdmNi4uYmQ4NTRjYSAxMDA2NDQKLS0tIGEvZ2RiL2RvYy9n ZGIudGV4aW5mbworKysgYi9nZGIvZG9jL2dkYi50ZXhpbmZvCkBAIC00ODU0 LDYgKzQ4NTQsMTA0IEBAIHByb2NlZWQgdW50aWwgdGhlIGZ1bmN0aW9uIHJl dHVybnMuCiBBbiBhcmd1bWVudCBpcyBhIHJlcGVhdCBjb3VudCwgYXMgaW4g QGNvZGV7bmV4dH0uCiBAZW5kIHRhYmxlCiAKK0Bub2RlIFNraXBwaW5nIE92 ZXIgRnVuY3Rpb25zIGFuZCBGaWxlcworQHN1YnNlY3Rpb24gU2tpcHBpbmcg T3ZlciBGdW5jdGlvbnMgYW5kIEZpbGVzCitAY2luZGV4IHNraXAKKworVGhl IHByb2dyYW0geW91IGFyZSBkZWJ1Z2dpbmcgbWF5IGNvbnRhaW4gc29tZSBm dW5jdGlvbnMgd2hpY2ggYXJlCit1bmludGVyZXN0aW5nIHRvIGRlYnVnLiAg VGhlIEBjb2Rle3NraXB9IGNvbWFuZCBsZXRzIHlvdSB0ZWxsIEB2YWx1ZXtH REJOfSB0bworc2tpcCBvdmVyIGEgZmlsZSBvciBmdW5jdGlvbiB3aGVuIHN0 ZXBwaW5nLgorCitGb3IgZXhhbXBsZSwgc3VwcG9zZSB5b3UgYXJlIHN0ZXBw aW5nIHRocm91Z2ggdGhlIGZvbGxvd2luZyBDIGZ1bmN0aW9uOgorCitAc21h bGxleGFtcGxlCisxMDEgICAgIGludCBmdW5jKCkKKzEwMiAgICAgQHsKKzEw MyAgICAgICAgIGZvbyhib3JpbmcoKSk7CisxMDQgICAgICAgICBiYXIoYm9y aW5nKCkpOworMTA1ICAgICBAfQorQGVuZCBzbWFsbGV4YW1wbGUKKworQG5v aW5kZW50CitTdXBwb3NlIHlvdSB3aXNoIHRvIHN0ZXAgaW50byB0aGUgZnVu Y3Rpb25zIEBjb2Rle2Zvb30gYW5kIEBjb2Rle2Jhcn0sIGJ1dCB5b3UKK2Fy ZSBub3QgaW50ZXJlc3RlZCBpbiBzdGVwcGluZyB0aHJvdWdoIEBjb2Rle2Jv cmluZ30uICBJZiB5b3UgcnVuIEBjb2Rle3N0ZXB9CithdCBsaW5lIDEwMywg eW91J2xsIGVudGVyIEBjb2Rle2JvcmluZygpfSwgYnV0IGlmIHlvdSBydW4g QGNvZGV7bmV4dH0sIHlvdSdsbAorc3RlcCBvdmVyIGJvdGggQGNvZGV7Zm9v fSBhbmQgQGNvZGV7Ym9yaW5nfSEgIFdoYXQgY2FuIHlvdSBkbz8KKworT25l IHNvbHV0aW9uIGlzIHRvIEBjb2Rle3N0ZXB9IGludG8gQGNvZGV7Ym9yaW5n fSBhbmQgdXNlIHRoZSBAY29kZXtmaW5pc2h9Citjb21tYW5kIHRvIGltbWVk aWF0ZWx5IGV4aXQgaXQuICBCdXQgdGhpcyBjYW4gYmVjb21lIHRlZGlvdXMg aWYgQGNvZGV7Ym9yaW5nfQoraXMgY2FsbGVkIGZyb20gbWFueSBwbGFjZXMu CisKK0Fub3RoZXIgc29sdXRpb24gaXMgdG8gZXhlY3V0ZSBAY29kZXtza2lw IGJvcmluZ30uICBUaGlzIGluc3RydWN0cyBAdmFsdWV7R0RCTn0KK25ldmVy IHRvIHN0ZXAgaW50byBAY29kZXtib3Jpbmd9LiAgTm93IHdoZW4geW91IGV4 ZWN1dGUgQGNvZGV7c3RlcH0gYXQgbGluZQorMTAzLCB5b3UnbGwgc3RlcCBv dmVyIEBjb2Rle2JvcmluZ30gYW5kIGRpcmVjdGx5IGludG8gQGNvZGV7Zm9v fS4KKworWW91IGNhbiBhbHNvIGluc3RydWN0IEB2YWx1ZXtHREJOfSB0byBz a2lwIGFsbCBmdW5jdGlvbnMgaW4gYSBmaWxlLCB3aXRoLCBmb3IKK2V4YW1w bGUsIEBjb2Rle3NraXAgZmlsZSBib3JpbmcuY30uCisKK0B0YWJsZSBAY29k ZQorQGtpbmRleCBza2lwCitAa2luZGV4IHNraXAgZnVuY3Rpb24KK0BpdGVt IHNraXAgQHJ7W31AdmFye2xpbmVzcGVjfUBye119CitAaXRlbXggc2tpcCBm dW5jdGlvbiBAcntbfUB2YXJ7bGluZXNwZWN9QHJ7XX0KK0FmdGVyIHJ1bm5p bmcgdGhpcyBjb21tYW5kLCB0aGUgZnVuY3Rpb24gbmFtZWQgYnkgQHZhcnts aW5lc3BlY30gb3IgdGhlCitmdW5jdGlvbiBjb250YWluaW5nIHRoZSBsaW5l IG5hbWVkIGJ5IEB2YXJ7bGluZXNwZWN9IHdpbGwgYmUgc2tpcHBlZCBvdmVy IHdoZW4KK3N0ZXBwaW5nLiAgKEBweHJlZntTcGVjaWZ5IExvY2F0aW9ufSkg CisKK0lmIHlvdSBkbyBub3Qgc3BlY2lmeSBAdmFye2xpbmVzcGVjfSwgdGhl IGZ1bmN0aW9uIHlvdSdyZSBjdXJyZW50bHkgZGVidWdnaW5nCit3aWxsIGJl IHNraXBwZWQuCisKK0BraW5kZXggc2tpcCBmaWxlCitAaXRlbSBza2lwIGZp bGUgQHJ7W31AdmFye2ZpbGVuYW1lfUBye119CitBZnRlciBydW5uaW5nIHRo aXMgY29tbWFuZCwgYW55IGZ1bmN0aW9uIHdob3NlIHNvdXJjZSBsaXZlcyBp biBAdmFye2ZpbGVuYW1lfQord2lsbCBiZSBza2lwcGVkIG92ZXIgd2hlbiBz dGVwcGluZy4KKworSWYgeW91IGRvIG5vdCBzcGVjaWZ5IEB2YXJ7ZmlsZW5h bWV9LCBmdW5jdGlvbnMgd2hvc2Ugc291cmNlIGxpdmVzIGluIHRoZSBmaWxl Cit5b3UncmUgY3VycmVudGx5IGRlYnVnZ2luZyB3aWxsIGJlIHNraXBwZWQu CitAZW5kIHRhYmxlCisKK1NraXBzIGNhbiBiZSBsaXN0ZWQsIGRlbGV0ZWQs IGRpc2FibGVkLCBhbmQgZW5hYmxlZCwgbXVjaCBsaWtlIGJyZWFrcG9pbnRz LgorVGhlc2UgYXJlIHRoZSBjb21tYW5kcyBmb3IgbWFuYWdpbmcgeW91ciBs aXN0IG9mIHNraXBzOgorCitAdGFibGUgQGNvZGUKK0BraW5kZXggaW5mbyBz a2lwCitAaXRlbSBpbmZvIHNraXAKK1ByaW50IGEgdGFibGUgb2YgYWxsIGZ1 bmN0aW9ucyBhbmQgZmlsZXMgbWFya2VkIGZvciBza2lwcGluZy4gIFRoaXMg dGFibGUKK2NvbnRhaW5zIHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24gZm9y IGVhY2ggZnVuY3Rpb24gb3IgZmlsZToKKworQHRhYmxlIEBlbXBoCitAaXRl bSBJZGVudGlmaWVyCitBIG51bWJlciBpZGVudGlmeWluZyB0aGlzIHNraXAu CitAaXRlbSBUeXBlCitAc2FtcHtmdW5jdGlvbn0gb3IgQHNhbXB7ZmlsZX0K K0BpdGVtIEVuYWJsZWQgb3IgRGlzYWJsZWQKK0VuYWJsZWQgc2tpcHMgYXJl IG1hcmtlZCB3aXRoIEBzYW1we3l9LiAgRGlzYWJsZWQgc2tpcHMgYXJlIG1h cmtlZCB3aXRoIEBzYW1we259LgorQGl0ZW0gQWRkcmVzcworRm9yIGZ1bmN0 aW9uIHNraXBzLCB0aGlzIGNvbHVtbiBpbmRpY2F0ZXMgdGhlIGFkZHJlc3Mg aW4gbWVtb3J5IG9mIHRoZSBmdW5jdGlvbgorYmVpbmcgc2tpcHBlZC4gIElm IHlvdSd2ZSBzZXQgYSBmdW5jdGlvbiBza2lwIG9uIGEgZnVuY3Rpb24gd2hp Y2ggaGFzIG5vdCB5ZXQKK2JlZW4gbG9hZGVkLCB0aGlzIGZpZWxkIHdpbGwg Y29udGFpbiBAc2FtcHs8UEVORElORz59LiAgT25jZSBhIHNoYXJlZCBsaWJy YXJ5Cit3aGljaCBoYXMgdGhlIGZ1bmN0aW9uIGlzIGxvYWRlZCwgQGNvZGV7 aW5mbyBicmVha30gd2lsbCBzaG93IHRoZSBmdW5jdGlvbidzCithZGRyZXNz IGhlcmUuCitAaXRlbSBXaGF0CitGb3IgZmlsZSBza2lwcywgdGhpcyBmaWVs ZCBjb250YWlucyB0aGUgZmlsZW5hbWUgYmVpbmcgc2tpcHBlZC4gIEZvciBm dW5jdGlvbnMKK3NraXBzLCB0aGlzIGZpZWxkIGNvbnRhaW5zIHRoZSBmdW5j dGlvbiBuYW1lIGFuZCBpdHMgbGluZSBudW1iZXIgaW4gdGhlIGZpbGUKK3do ZXJlIGl0IGlzIGRlZmluZWQuCitAZW5kIHRhYmxlCisKK0BraW5kZXggc2tp cCBkZWxldGUKK0BpdGVtIHNraXAgZGVsZXRlIEB2YXJ7bn0KK0RlbGV0ZSB0 aGUgc2tpcCB3aXRoIGlkZW50aWZpZXIgQHZhcntufS4KKworQGtpbmRleCBz a2lwIGVuYWJsZQorQGl0ZW0gc2tpcCBlbmFibGUgQHZhcntufQorRW5hYmxl IHRoZSBza2lwIHdpdGggaWRlbnRpZmllciBAdmFye259LgorCitAa2luZGV4 IHNraXAgZGlzYWJsZQorQGl0ZW0gc2tpcCBkaXNhYmxlIEB2YXJ7bn0KK0Rp c2FibGUgdGhlIHNraXAgd2l0aCBpZGVudGlmaWVyIEB2YXJ7bn0uCisKK0Bl bmQgdGFibGUKKwogQG5vZGUgU2lnbmFscwogQHNlY3Rpb24gU2lnbmFscwog QGNpbmRleCBzaWduYWxzCmRpZmYgLS1naXQgYS9nZGIvZ2RiY21kLmggYi9n ZGIvZ2RiY21kLmgKaW5kZXggYzAyY2U2OS4uNjA2YjgxMiAxMDA2NDQKLS0t IGEvZ2RiL2dkYmNtZC5oCisrKyBiL2dkYi9nZGJjbWQuaApAQCAtMTI0LDYg KzEyNCw4IEBAIGV4dGVybiBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqc2V0 Y2hlY2tsaXN0OwogCiBleHRlcm4gc3RydWN0IGNtZF9saXN0X2VsZW1lbnQg KnNob3djaGVja2xpc3Q7CiAKK2V4dGVybiBzdHJ1Y3QgY21kX2xpc3RfZWxl bWVudCAqc2tpcGxpc3Q7CisKIC8qIENoYWluIGNvbnRhaW5pbmcgYWxsIGRl ZmluZWQgInNhdmUiIHN1YmNvbW1hbmRzLiAgKi8KIAogZXh0ZXJuIHN0cnVj dCBjbWRfbGlzdF9lbGVtZW50ICpzYXZlX2NtZGxpc3Q7CmRpZmYgLS1naXQg YS9nZGIvaW5mcnVuLmMgYi9nZGIvaW5mcnVuLmMKaW5kZXggMjI1MDM0Yy4u ZThiZTEyMSAxMDA2NDQKLS0tIGEvZ2RiL2luZnJ1bi5jCisrKyBiL2dkYi9p bmZydW4uYwpAQCAtNTYsNiArNTYsNyBAQAogI2luY2x1ZGUgInRyYWNlcG9p bnQuaCIKICNpbmNsdWRlICJjb250aW51YXRpb25zLmgiCiAjaW5jbHVkZSAi aW50ZXJwcy5oIgorI2luY2x1ZGUgInNraXAuaCIKIAogLyogUHJvdG90eXBl cyBmb3IgbG9jYWwgZnVuY3Rpb25zICovCiAKQEAgLTQ4MjksNyArNDgzMCw4 IEBAIHByb2Nlc3NfZXZlbnRfc3RvcF90ZXN0OgogCX0KIAogICAgICAgLyog SWYgd2UgaGF2ZSBsaW5lIG51bWJlciBpbmZvcm1hdGlvbiBmb3IgdGhlIGZ1 bmN0aW9uIHdlIGFyZQotICAgICAgICAgdGhpbmtpbmcgb2Ygc3RlcHBpbmcg aW50bywgc3RlcCBpbnRvIGl0LgorCSB0aGlua2luZyBvZiBzdGVwcGluZyBp bnRvIGFuZCB0aGUgZnVuY3Rpb24gaXNuJ3Qgb24gdGhlIHNraXAKKwkgbGlz dCwgc3RlcCBpbnRvIGl0LgogCiAgICAgICAgICBJZiB0aGVyZSBhcmUgc2V2 ZXJhbCBzeW10YWJzIGF0IHRoYXQgUEMgKGUuZy4gd2l0aCBpbmNsdWRlCiAg ICAgICAgICBmaWxlcyksIGp1c3Qgd2FudCB0byBrbm93IHdoZXRoZXIgKmFu eSogb2YgdGhlbSBoYXZlIGxpbmUKQEAgLTQ4MzgsNyArNDg0MCw4IEBAIHBy b2Nlc3NfZXZlbnRfc3RvcF90ZXN0OgogCXN0cnVjdCBzeW10YWJfYW5kX2xp bmUgdG1wX3NhbDsKIAogCXRtcF9zYWwgPSBmaW5kX3BjX2xpbmUgKGVjcy0+ c3RvcF9mdW5jX3N0YXJ0LCAwKTsKLQlpZiAodG1wX3NhbC5saW5lICE9IDAp CisJaWYgKHRtcF9zYWwubGluZSAhPSAwICYmCisJICAgICFmdW5jdGlvbl9w Y19pc19tYXJrZWRfZm9yX3NraXAgKGVjcy0+c3RvcF9mdW5jX3N0YXJ0KSkK IAkgIHsKIAkgICAgaWYgKGV4ZWN1dGlvbl9kaXJlY3Rpb24gPT0gRVhFQ19S RVZFUlNFKQogCSAgICAgIGhhbmRsZV9zdGVwX2ludG9fZnVuY3Rpb25fYmFj a3dhcmQgKGdkYmFyY2gsIGVjcyk7CmRpZmYgLS1naXQgYS9nZGIvc2tpcC5j IGIvZ2RiL3NraXAuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi5lZGI1MWZmCi0tLSAvZGV2L251bGwKKysrIGIvZ2RiL3NraXAuYwpA QCAtMCwwICsxLDU3NCBAQAorLyogU2tpcHBpbmcgb3ZlciB1bmludGVyZXN0 aW5nIGZpbGVzIGFuZCBmdW5jdGlvbnMgd2hlbiBkZWJ1Z2dpbmcuCisKKyAg IENvcHlyaWdodCAoQykgMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s IEluYy4KKworICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAgIGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5CisgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgor ICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAg VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsCisgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAg TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLiAgU2VlIHRoZQorICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgWW91IHNob3VsZCBoYXZlIHJl Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UKKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUg PGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKworI2luY2x1 ZGUgImRlZnMuaCIKKyNpbmNsdWRlICJza2lwLmgiCisjaW5jbHVkZSAidmFs dWUuaCIKKyNpbmNsdWRlICJ2YWxwcmludC5oIgorI2luY2x1ZGUgInVpLW91 dC5oIgorI2luY2x1ZGUgImdkYl9zdHJpbmcuaCIKKyNpbmNsdWRlICJzeW10 YWIuaCIKKyNpbmNsdWRlICJnZGJjbWQuaCIKKyNpbmNsdWRlICJjb21tYW5k LmgiCisjaW5jbHVkZSAiY29tcGxldGVyLmgiCisjaW5jbHVkZSAic3RhY2su aCIKKyNpbmNsdWRlICJhcmNoLXV0aWxzLmgiCisjaW5jbHVkZSAibGluZXNw ZWMuaCIKKyNpbmNsdWRlICJvYmpmaWxlcy5oIgorI2luY2x1ZGUgImV4Y2Vw dGlvbnMuaCIKKworc3RydWN0IHNraXBsaXN0X2VudHJ5Cit7CisgIGludCBu dW1iZXI7CisKKyAgLyogbnVsbCBpZiB0aGlzIGlzbid0IGEgc2tpcGxpc3Qg ZW50cnkgZm9yIGFuIGVudGlyZSBmaWxlLgorICAgICBUaGUgc2tpcGxpc3Qg ZW50cnkgb3ducyB0aGlzIHBvaW50ZXIuICovCisgIGNoYXIgKmZpbGVuYW1l OworCisgIC8qIFRoZSBuYW1lIG9mIHRoZSBtYXJrZWQtZm9yLXNraXAgZnVu Y3Rpb24sIGlmIHRoaXMgaXMgYSBza2lwbGlzdAorICAgICBlbnRyeSBmb3Ig YSBmdW5jdGlvbi4gIE5vdGUgdGhhdCB0aGlzIG1pZ2h0IGJlIG5vbi1udWxs IGV2ZW4gaWYKKyAgICAgdGhlIHBjIGlzIDAgaWYgdGhlIGVudHJ5IGlzIHBl bmRpbmcgYSBzaGFyZWQgbGlicmFyeSBsb2FkLgorCisgICAgIFRoZSBza2lw bGlzdCBlbnRyeSBvd25zIHRoaXMgcG9pbnRlci4gKi8KKyAgY2hhciAqZnVu Y3Rpb25fbmFtZTsKKworICAvKiAwIGlmIHRoaXMgaXMgYSBza2lwbGlzdCBl bnRyeSBmb3IgYW4gZW50aXJlIGZpbGUsIG9yIGlmIHRoaXMKKyAgICAgZW50 cnkgd2lsbCBiZSBvbiBhIGZ1bmN0aW9uLCBwZW5kaW5nIGEgc2hhcmVkIGxp YnJhcnkgbG9hZC4gKi8KKyAgQ09SRV9BRERSIHBjOworCisgIC8qIEFyY2hp dGVjdHVyZSB3ZSB1c2VkIHRvIGNyZWF0ZSB0aGUgc2tpcGxpc3QgZW50cnku IE1heSBiZSBudWxsCisgICAgIGlmIHRoZSBlbnRyeSBpcyBwZW5kaW5nIGEg c2hhcmVkIGxpYnJhcnkgbG9hZC4gKi8KKyAgc3RydWN0IGdkYmFyY2ggKmdk YmFyY2g7CisKKyAgaW50IGVuYWJsZWQ7CisgIGludCBwZW5kaW5nOworCisg IHN0cnVjdCBza2lwbGlzdF9lbnRyeSAqbmV4dDsKK307CisKK3N0YXRpYyB2 b2lkIHNraXBfZnVuY3Rpb25fY29tbWFuZCAoY2hhciAqYXJnLCBpbnQgZnJv bV90dHkpOworc3RhdGljIHZvaWQgc2tpcF9maWxlX2NvbW1hbmQgKGNoYXIg KmFyZywgaW50IGZyb21fdHR5KTsKK3N0YXRpYyB2b2lkIHNraXBfaW5mbyAo Y2hhciAqYXJnLCBpbnQgZnJvbV90dHkpOworCitzdGF0aWMgdm9pZCBhZGRf c2tpcGxpc3RfZW50cnkgKHN0cnVjdCBza2lwbGlzdF9lbnRyeSAqZSk7Citz dGF0aWMgdm9pZCBza2lwX2Z1bmN0aW9uX3BjIChDT1JFX0FERFIgcGMsIGNo YXIgKm5hbWUsCisJCQkgICAgICBzdHJ1Y3QgZ2RiYXJjaCAqYXJjaCwKKwkJ CSAgICAgIGludCBwZW5kaW5nKTsKKy8vc3RhdGljIHZvaWQgdHJ5X3Jlc29s dmVfcGVuZGluZ19lbnRyeSAoc3RydWN0IHNraXBsaXN0X2VudHJ5ICplKTsK K3N0YXRpYyBzdHJ1Y3QgZ2RiYXJjaCAqZ2V0X3NhbF9hcmNoIChzdHJ1Y3Qg c3ltdGFiX2FuZF9saW5lICpzYWwpOworCitzdGF0aWMgc3RydWN0IHNraXBs aXN0X2VudHJ5ICpza2lwbGlzdF9lbnRyeV9jaGFpbjsKK3N0YXRpYyBpbnQg c2tpcGxpc3RfZW50cnlfY291bnQ7CisKKyNkZWZpbmUgQUxMX1NLSVBMSVNU X0VOVFJJRVMoRSkgXAorICBmb3IgKEUgPSBza2lwbGlzdF9lbnRyeV9jaGFp bjsgRTsgRSA9IEUtPm5leHQpCisKK3N0YXRpYyB2b2lkCitza2lwX2ZpbGVf Y29tbWFuZCAoY2hhciAqYXJnLCBpbnQgZnJvbV90dHkpCit7CisgIHN0cnVj dCBza2lwbGlzdF9lbnRyeSAqZTsKKyAgc3RydWN0IHN5bXRhYiAqc3ltdGFi OworICBpbnQgcGVuZGluZyA9IDA7CisgIGNoYXIgKmZpbGVuYW1lID0gMDsK KworICAvKiBJZiBubyBhcmd1bWVudCB3YXMgZ2l2ZW4sIHRyeSB0byBkZWZh dWx0IHRvIHRoZSBsYXN0CisgICAgIGRpc3BsYXllZCBjb2RlcG9pbnQuICov CisgIGlmIChhcmcgPT0gMCkKKyAgICB7CisgICAgICBzeW10YWIgPSBnZXRf bGFzdF9kaXNwbGF5ZWRfc3ltdGFiICgpOworICAgICAgaWYgKHN5bXRhYiA9 PSAwKQorCWVycm9yIChfKCJObyBkZWZhdWx0IGZpbGUgbm93LiIpKTsKKyAg ICAgIGVsc2UKKwlmaWxlbmFtZSA9IHN5bXRhYi0+ZmlsZW5hbWU7CisgICAg fQorICBlbHNlCisgICAgeworICAgICAgc3ltdGFiID0gbG9va3VwX3N5bXRh YiAoYXJnKTsKKyAgICAgIGlmIChzeW10YWIgPT0gMCkKKwl7CisJICBmcHJp bnRmX2ZpbHRlcmVkIChnZGJfc3RkZXJyLCBfKCJObyBzb3VyY2UgZmlsZSBu YW1lZCAlcy5cbiIpLCBhcmcpOworCSAgaWYgKCFucXVlcnkgKF8oIlwKK0ln bm9yZSBmaWxlIHBlbmRpbmcgZnV0dXJlIHNoYXJlZCBsaWJyYXJ5IGxvYWQ/ ICIpKSkKKwkgICAgcmV0dXJuOworCisJICBwZW5kaW5nID0gMTsKKwkgIGZp bGVuYW1lID0gYXJnOworCX0KKyAgICAgIGVsc2UKKwlmaWxlbmFtZSA9IHN5 bXRhYi0+ZmlsZW5hbWU7CisgICAgfQorCisgIGUgPSBYWkFMTE9DIChzdHJ1 Y3Qgc2tpcGxpc3RfZW50cnkpOworICBlLT5maWxlbmFtZSA9IHhzdHJkdXAg KGZpbGVuYW1lKTsKKyAgZS0+ZW5hYmxlZCA9IDE7CisgIGUtPnBlbmRpbmcg PSBwZW5kaW5nOworICBpZiAoc3ltdGFiICE9IDApCisgICAgZS0+Z2RiYXJj aCA9IGdldF9vYmpmaWxlX2FyY2ggKHN5bXRhYi0+b2JqZmlsZSk7CisKKyAg YWRkX3NraXBsaXN0X2VudHJ5IChlKTsKKworICBwcmludGZfZmlsdGVyZWQg KF8oIkZpbGUgJXMgd2lsbCBiZSBza2lwcGVkIHdoZW4gc3RlcHBpbmcuXG4i KSwgZmlsZW5hbWUpOworfQorCitzdGF0aWMgdm9pZAorc2tpcF9mdW5jdGlv bl9jb21tYW5kIChjaGFyICphcmcsIGludCBmcm9tX3R0eSkKK3sKKyAgQ09S RV9BRERSIGZ1bmNfcGM7CisgIGNoYXIgKm5hbWUgPSBOVUxMOworCisgIC8q IERlZmF1bHQgdG8gdGhlIGN1cnJlbnQgZnVuY3Rpb24gaWYgbm8gYXJndW1l bnQgaXMgZ2l2ZW4uICovCisgIGlmIChhcmcgPT0gMCkKKyAgICB7CisgICAg ICBDT1JFX0FERFIgcGM7CisgICAgICBpZiAoIWxhc3RfZGlzcGxheWVkX3N5 bXRhYl9hbmRfbGluZV9pc192YWxpZCAoKSkKKwllcnJvciAoXygiTm8gZGVm YXVsdCBmdW5jdGlvbiBub3cuIikpOworCisgICAgICBwYyA9IGdldF9sYXN0 X2Rpc3BsYXllZF9hZGRyICgpOworICAgICAgaWYgKCFmaW5kX3BjX3BhcnRp YWxfZnVuY3Rpb24gKHBjLCAmbmFtZSwgJmZ1bmNfcGMsIDApKQorCXsKKwkg IGVycm9yIChfKCJObyBmdW5jdGlvbiBmb3VuZCBjb250YWluaW5nIGN1cnJl bnQgcHJvZ3JhbSBwb2ludCAlcy4iKSwKKwkJICBwYWRkcmVzcyAoZ2V0X2N1 cnJlbnRfYXJjaCAoKSwgcGMpKTsKKwl9CisgICAgICBza2lwX2Z1bmN0aW9u X3BjIChmdW5jX3BjLCBuYW1lLCBnZXRfY3VycmVudF9hcmNoICgpLCAwKTsK KyAgICB9CisgIGVsc2UKKyAgICB7CisgICAgICAvKiBEZWNvZGUgYXJnLiAg V2Ugc2V0IGZ1bmZpcnN0bGluZT0xIHNvIGRlY29kZV9saW5lXzEgd2lsbCBn aXZlIHVzIHRoZQorCSBmaXJzdCBsaW5lIG9mIHRoZSBmdW5jdGlvbiBzcGVj aWZpZWQsIGlmIGl0IGNhbiwgYW5kIHNvIHRoYXQgd2UnbGwKKwkgcmVqZWN0 IHZhcmlhYmxlIG5hbWVzIGFuZCB0aGUgbGlrZS4gKi8KKworICAgICAgaW50 IGk7CisgICAgICBpbnQgcGVuZGluZyA9IDA7CisgICAgICBjaGFyICpvcmln X2FyZyA9IGFyZzsgLyogZGVjb2RlX2xpbmVfMSBtb2RpZmllcyB0aGUgYXJn IHBvaW50ZXIuICovCisgICAgICB2b2xhdGlsZSBzdHJ1Y3QgZ2RiX2V4Y2Vw dGlvbiBkZWNvZGVfZXhjZXB0aW9uOworICAgICAgc3RydWN0IHN5bXRhYnNf YW5kX2xpbmVzIHNhbHM7CisKKyAgICAgIFRSWV9DQVRDSChkZWNvZGVfZXhj ZXB0aW9uLCBOT1RfRk9VTkRfRVJST1IpCisJeworCSAgc2FscyA9IGRlY29k ZV9saW5lXzEgKCZhcmcsIDEsIDAsIDAsIDApOworCX0KKworICAgICAgaWYg KGRlY29kZV9leGNlcHRpb24ucmVhc29uIDwgMCkKKyAgICAgICAgeworCSAg ZnByaW50Zl9maWx0ZXJlZCAoZ2RiX3N0ZGVyciwKKwkJCSAgICBfKCJObyBm dW5jdGlvbiBmb3VuZCBuYW1lZCAlcy5cbiIpLCBvcmlnX2FyZyk7CisKKwkg IGlmIChucXVlcnkgKF8oIlwKK0lnbm9yZSBmdW5jdGlvbiBwZW5kaW5nIGZ1 dHVyZSBzaGFyZWQgbGlicmFyeSBsb2FkPyAiKSkpCisJICAgIHsKKwkgICAg ICAvKiBBZGQgdGhlIHBlbmRpbmcgc2tpcGxpc3QgZW50cnkuICovCisJICAg ICAgc2tpcF9mdW5jdGlvbl9wYyAoMCwgb3JpZ19hcmcsIDAsIDEpOworCSAg ICB9CisKKwkgIHJldHVybjsKKwl9CisKKyAgICAgIGlmIChzYWxzLm5lbHRz ID4gMSkKKwllcnJvciAoXygiU3BlY2lmeSBqdXN0IG9uZSBmdW5jdGlvbiBh dCBhIHRpbWUuIikpOworICAgICAgaWYgKHN0cmxlbiAoYXJnKSAhPSAwKQor CWVycm9yIChfKCJKdW5rIGF0IGVuZCBvZiBhcmd1bWVudHMuIikpOworCisg ICAgICAvKiBUaGUgcGMgZGVjb2RlX2xpbmVfMSBnaXZlcyB1cyBpcyB0aGUg Zmlyc3QgbGluZSBvZiB0aGUgZnVuY3Rpb24sCisJIGJ1dCB3ZSBhY3R1YWxs eSB3YW50IHRoZSBsaW5lIGJlZm9yZSB0aGF0LiAgVGhlIGNhbGwgdG8KKwkg ZmluZF9wY19wYXJ0aWFsX2Z1bmN0aW9uIGdldHMgdXMgdGhlIHZhbHVlIHdl IGFjdHVhbGx5IHdhbnQuICovCisgICAgICB7CisJc3RydWN0IHN5bXRhYl9h bmRfbGluZSAqc2FsID0gJnNhbHMuc2Fsc1swXTsKKwlDT1JFX0FERFIgcGMg PSBzYWwtPnBjOworCUNPUkVfQUREUiBmdW5jX3N0YXJ0ID0gMDsKKwlzdHJ1 Y3QgZ2RiYXJjaCAqYXJjaCA9IGdldF9zYWxfYXJjaCAoc2FsKTsKKworCWlm ICghZmluZF9wY19wYXJ0aWFsX2Z1bmN0aW9uIChwYywgJm5hbWUsICZmdW5j X3N0YXJ0LCAwKSkKKwkgIHsKKwkgICAgZXJyb3IgKF8oIk5vIGZ1bmN0aW9u IGZvdW5kIGNvbnRhaW5pbmcgcHJvZ3JhbSBwb2ludCAlcy4iKSwKKwkJICAg ICBwYWRkcmVzcyAoYXJjaCwgcGMpKTsKKwkgIH0KKworCXNraXBfZnVuY3Rp b25fcGMgKGZ1bmNfc3RhcnQsIG5hbWUsIGFyY2gsIDApOworICAgICAgfQor ICAgIH0KK30KKworc3RhdGljIHZvaWQKK3NraXBfaW5mbyAoY2hhciAqYXJn LCBpbnQgZnJvbV90dHkpCit7CisgIHN0cnVjdCBza2lwbGlzdF9lbnRyeSAq ZTsKKyAgaW50IG51bV9wcmludGFibGVfZW50cmllcyA9IDA7CisgIGludCBl bnRyeV9udW0gPSAtMTsKKyAgaW50IGFkZHJlc3Nfd2lkdGggPSAxMDsKKyAg c3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgb3B0czsKKyAgc3RydWN0IGNs ZWFudXAgKnRibF9jaGFpbjsKKworICBnZXRfdXNlcl9wcmludF9vcHRpb25z ICgmb3B0cyk7CisKKyAgaWYgKGFyZyAhPSAwKQorICAgIHsKKyAgICAgIGVu dHJ5X251bSA9IHBhcnNlX2FuZF9ldmFsX2xvbmcgKGFyZyk7CisgICAgfQor CisgIC8qIENvdW50IHRoZSBudW1iZXIgb2Ygcm93cyBpbiB0aGUgdGFibGUg YW5kIHNlZSBpZiB3ZSBuZWVkIHNwYWNlIGZvciBhCisgICAgIDY0LWJpdCBh ZGRyZXNzIGFueXdoZXJlLiAqLworICBBTExfU0tJUExJU1RfRU5UUklFUyAo ZSkKKyAgICBpZiAoZW50cnlfbnVtID09IC0xIHx8IGUtPm51bWJlciA9PSBl bnRyeV9udW0pCisgICAgICB7CisJbnVtX3ByaW50YWJsZV9lbnRyaWVzKys7 CisJaWYgKGUtPmdkYmFyY2ggJiYgZ2RiYXJjaF9hZGRyX2JpdCAoZS0+Z2Ri YXJjaCkgPiAzMikKKwkgIGFkZHJlc3Nfd2lkdGggPSAxODsKKyAgICAgIH0K KworICBpZiAobnVtX3ByaW50YWJsZV9lbnRyaWVzID09IDApCisgICAgewor ICAgICAgaWYgKGVudHJ5X251bSA9PSAtMSkKKwl1aV9vdXRfbWVzc2FnZSAo Y3VycmVudF91aW91dCwgMCwgXygiTm90IGlnbm9yaW5nIGFueSBmaWxlcyBv ciBmdW5jdGlvbnMuXG4iKSk7CisgICAgICBlbHNlCisJdWlfb3V0X21lc3Nh Z2UgKGN1cnJlbnRfdWlvdXQsIDAsCisJCQlfKCJObyBza2lwbGlzdCBlbnRy eSBudW1iZXJlZCAlZC5cbiIpLCBlbnRyeV9udW0pOworCisgICAgICByZXR1 cm47CisgICAgfQorCisgIGlmIChvcHRzLmFkZHJlc3NwcmludCkKKyAgICB0 YmxfY2hhaW4KKyAgICAgICA9IG1ha2VfY2xlYW51cF91aV9vdXRfdGFibGVf YmVnaW5fZW5kIChjdXJyZW50X3Vpb3V0LCA1LCBudW1fcHJpbnRhYmxlX2Vu dHJpZXMsCisJCQkJCSAgICAgICJTa2lwbGlzdFRhYmxlIik7CisgIGVsc2UK KyAgICB0YmxfY2hhaW4KKyAgICAgICA9IG1ha2VfY2xlYW51cF91aV9vdXRf dGFibGVfYmVnaW5fZW5kIChjdXJyZW50X3Vpb3V0LCA0LCBudW1fcHJpbnRh YmxlX2VudHJpZXMsCisJCQkJCSAgICAgICJTa2lwbGlzdFRhYmxlIik7CisK KyAgdWlfb3V0X3RhYmxlX2hlYWRlciAoY3VycmVudF91aW91dCwgNywgdWlf bGVmdCwgIm51bWJlciIsICJOdW0iKTsgICAgICAgICAgICAgIC8qIDEgKi8K KyAgdWlfb3V0X3RhYmxlX2hlYWRlciAoY3VycmVudF91aW91dCwgMTQsIHVp X2xlZnQsICJ0eXBlIiwgIlR5cGUiKTsgICAgICAgICAgICAgIC8qIDIgKi8K KyAgdWlfb3V0X3RhYmxlX2hlYWRlciAoY3VycmVudF91aW91dCwgMywgdWlf bGVmdCwgImVuYWJsZWQiLCAiRW5iIik7ICAgICAgICAgICAgIC8qIDMgKi8K KyAgaWYgKG9wdHMuYWRkcmVzc3ByaW50KQorICAgIHsKKyAgICAgIHVpX291 dF90YWJsZV9oZWFkZXIgKGN1cnJlbnRfdWlvdXQsIGFkZHJlc3Nfd2lkdGgs IHVpX2xlZnQsCisJCQkgICAiYWRkciIsICJBZGRyZXNzIik7ICAgICAgICAg ICAgICAgICAgICAgICAgICAgLyogNCAqLworICAgIH0KKyAgdWlfb3V0X3Rh YmxlX2hlYWRlciAoY3VycmVudF91aW91dCwgNDAsIHVpX25vYWxpZ24sICJ3 aGF0IiwgIldoYXQiKTsgICAgICAgICAgIC8qIDUgKi8KKyAgdWlfb3V0X3Rh YmxlX2JvZHkgKGN1cnJlbnRfdWlvdXQpOworCisgIEFMTF9TS0lQTElTVF9F TlRSSUVTIChlKQorICAgIHsKKyAgICAgIHN0cnVjdCBjbGVhbnVwICplbnRy eV9jaGFpbjsKKworICAgICAgUVVJVDsKKyAgICAgIGlmIChlbnRyeV9udW0g IT0gLTEgJiYgZW50cnlfbnVtICE9IGUtPm51bWJlcikKKwljb250aW51ZTsK KworICAgICAgZW50cnlfY2hhaW4gPSBtYWtlX2NsZWFudXBfdWlfb3V0X3R1 cGxlX2JlZ2luX2VuZCAoY3VycmVudF91aW91dCwgImJsa2xzdC1lbnRyeSIp OworICAgICAgdWlfb3V0X2ZpZWxkX2ludCAoY3VycmVudF91aW91dCwgIm51 bWJlciIsIGUtPm51bWJlcik7ICAgICAgICAgICAgICAgICAgICAgLyogMSAq LworCisgICAgICBpZiAoZS0+ZnVuY3Rpb25fbmFtZSAhPSAwKQorCXVpX291 dF9maWVsZF9zdHJpbmcgKGN1cnJlbnRfdWlvdXQsICJ0eXBlIiwgImZ1bmN0 aW9uIik7ICAgICAgICAgICAgICAgICAvKiAyICovCisgICAgICBlbHNlIGlm IChlLT5maWxlbmFtZSAhPSAwKQorCXVpX291dF9maWVsZF9zdHJpbmcgKGN1 cnJlbnRfdWlvdXQsICJ0eXBlIiwgImZpbGUiKTsgICAgICAgICAgICAgICAg ICAgICAvKiAyICovCisgICAgICBlbHNlCisJaW50ZXJuYWxfZXJyb3IgKF9f RklMRV9fLCBfX0xJTkVfXywgXygiXAorU2tpcGxpc3QgZW50cnkgc2hvdWxk IGhhdmUgZWl0aGVyIGEgZmlsZW5hbWUgb3IgYSBmdW5jdGlvbiBuYW1lLiIp KTsKKworICAgICAgaWYgKGUtPmVuYWJsZWQpCisJdWlfb3V0X2ZpZWxkX3N0 cmluZyAoY3VycmVudF91aW91dCwgImVuYWJsZWQiLCAieSIpOyAgICAgICAg ICAgICAgICAgICAgIC8qIDMgKi8KKyAgICAgIGVsc2UKKwl1aV9vdXRfZmll bGRfc3RyaW5nIChjdXJyZW50X3Vpb3V0LCAiZW5hYmxlZCIsICJuIik7ICAg ICAgICAgICAgICAgICAgICAgLyogMyAqLworCisgICAgICBpZiAob3B0cy5h ZGRyZXNzcHJpbnQpCisJeworCSAgaWYgKGUtPnBjICE9IDApCisJICAgIHVp X291dF9maWVsZF9jb3JlX2FkZHIgKGN1cnJlbnRfdWlvdXQsICJhZGRyIiwg ZS0+Z2RiYXJjaCwgZS0+cGMpOyAgIC8qIDQgKi8KKwkgIGVsc2UKKwkgICAg dWlfb3V0X2ZpZWxkX3N0cmluZyAoY3VycmVudF91aW91dCwgImFkZHIiLCAi Iik7ICAgICAgICAgICAgICAgICAgICAgLyogNCAqLworCX0KKworICAgICAg aWYgKCFlLT5wZW5kaW5nICYmIGUtPmZ1bmN0aW9uX25hbWUgIT0gMCkKKwl7 CisJICAgc3RydWN0IHN5bWJvbCAqc3ltOworCSAgIGdkYl9hc3NlcnQgKGUt PnBjICE9IDApOworCSAgIHN5bSA9IGZpbmRfcGNfZnVuY3Rpb24gKGUtPnBj KTsKKwkgICBpZiAoc3ltKQorCSAgICAgdWlfb3V0X2ZpZWxkX2ZtdCAoY3Vy cmVudF91aW91dCwgIndoYXQiLCAiJXMgYXQgJXM6JWQiLAorCQkJICAgICAg IHN5bS0+Z2luZm8ubmFtZSwKKwkJCSAgICAgICBzeW0tPnN5bXRhYi0+Zmls ZW5hbWUsCisJCQkgICAgICAgc3ltLT5saW5lKTsKKwkgICBlbHNlCisJICAg ICB1aV9vdXRfZmllbGRfc3RyaW5nIChjdXJyZW50X3Vpb3V0LCAid2hhdCIs ICI/Iik7CisJfQorICAgICAgZWxzZSBpZiAoZS0+cGVuZGluZyAmJiBlLT5m dW5jdGlvbl9uYW1lICE9IDApCisJeworCSAgdWlfb3V0X2ZpZWxkX2ZtdCAo Y3VycmVudF91aW91dCwgIndoYXQiLCAiJXMgKFBFTkRJTkcpIiwKKwkJCSAg ICBlLT5mdW5jdGlvbl9uYW1lKTsKKwl9CisgICAgICBlbHNlIGlmICghZS0+ cGVuZGluZyAmJiBlLT5maWxlbmFtZSAhPSAwKQorCXVpX291dF9maWVsZF9z dHJpbmcgKGN1cnJlbnRfdWlvdXQsICJ3aGF0IiwgZS0+ZmlsZW5hbWUpOwor ICAgICAgZWxzZSBpZiAoZS0+cGVuZGluZyAmJiBlLT5maWxlbmFtZSAhPSAw KQorCXVpX291dF9maWVsZF9mbXQgKGN1cnJlbnRfdWlvdXQsICJ3aGF0Iiwg IiVzIChQRU5ESU5HKSIsCisJCQkgIGUtPmZpbGVuYW1lKTsKKworICAgICAg dWlfb3V0X3RleHQgKGN1cnJlbnRfdWlvdXQsICJcbiIpOworICAgICAgZG9f Y2xlYW51cHMgKGVudHJ5X2NoYWluKTsKKyAgICB9CisKKyAgZG9fY2xlYW51 cHMgKHRibF9jaGFpbik7Cit9CisKK3N0YXRpYyB2b2lkCitza2lwX2VuYWJs ZV9jb21tYW5kIChjaGFyICphcmcsIGludCBmcm9tX3R0eSkKK3sKKyAgc3Ry dWN0IHNraXBsaXN0X2VudHJ5ICplOworICBpbnQgZW50cnlfbnVtID0gcGFy c2VfYW5kX2V2YWxfbG9uZyAoYXJnKTsKKyAgQUxMX1NLSVBMSVNUX0VOVFJJ RVMgKGUpCisgICAgaWYgKGUtPm51bWJlciA9PSBlbnRyeV9udW0pCisgICAg ICB7CisJZS0+ZW5hYmxlZCA9IDE7CisJcmV0dXJuOworICAgICAgfQorCisg IGVycm9yIChfKCJObyBza2lwbGlzdCBlbnRyeSBudW1iZXJlZCAlZC4iKSwg ZW50cnlfbnVtKTsKK30KKworc3RhdGljIHZvaWQKK3NraXBfZGlzYWJsZV9j b21tYW5kIChjaGFyICphcmcsIGludCBmcm9tX3R0eSkKK3sKKyAgc3RydWN0 IHNraXBsaXN0X2VudHJ5ICplOworICBpbnQgZW50cnlfbnVtID0gcGFyc2Vf YW5kX2V2YWxfbG9uZyAoYXJnKTsKKyAgQUxMX1NLSVBMSVNUX0VOVFJJRVMg KGUpCisgICAgaWYgKGUtPm51bWJlciA9PSBlbnRyeV9udW0pCisgICAgICB7 CisJZS0+ZW5hYmxlZCA9IDA7CisJcmV0dXJuOworICAgICAgfQorCisgIGVy cm9yIChfKCJObyBza2lwbGlzdCBlbnRyeSBudW1iZXJlZCAlZC4iKSwgZW50 cnlfbnVtKTsKK30KKworc3RhdGljIHZvaWQKK3NraXBfZGVsZXRlX2NvbW1h bmQgKGNoYXIgKmFyZywgaW50IGZyb21fdHR5KQoreworICBzdHJ1Y3Qgc2tp cGxpc3RfZW50cnkgKmUsICpiX3ByZXY7CisgIGludCBlbnRyeV9udW0gPSBw YXJzZV9hbmRfZXZhbF9sb25nIChhcmcpOworCisgIC8qIFdlIGRvbid0IG5l ZWQgdG8gdXNlIGEgU0FGRSBtYWNybyBoZXJlIHNpbmNlIHdlIHJldHVybiBh cyBzb29uIGFzIHdlCisgICAgIHJlbW92ZSBhbiBlbGVtZW50IGZyb20gdGhl IGxpc3QuICovCisgIGJfcHJldiA9IDA7CisgIEFMTF9TS0lQTElTVF9FTlRS SUVTIChlKQorICAgIGlmIChlLT5udW1iZXIgPT0gZW50cnlfbnVtKQorICAg ICAgeworCWlmIChiX3ByZXYgIT0gMCkKKwkgIGJfcHJldi0+bmV4dCA9IGUt Pm5leHQ7CisJZWxzZQorCSAgc2tpcGxpc3RfZW50cnlfY2hhaW4gPSBlLT5u ZXh0OworCisJeGZyZWUgKGUtPmZ1bmN0aW9uX25hbWUpOworCXhmcmVlIChl LT5maWxlbmFtZSk7CisJeGZyZWUgKGUpOworCXJldHVybjsKKyAgICAgIH0K KyAgICBlbHNlCisgICAgICB7CisJYl9wcmV2ID0gZTsKKyAgICAgIH0KKwor ICBlcnJvciAoXygiTm8gc2tpcGxpc3QgZW50cnkgbnVtYmVyZWQgJWQuIiks IGVudHJ5X251bSk7Cit9CisKKy8qIENyZWF0ZSBhIHNraXBsaXN0IGVudHJ5 IGZvciB0aGUgZ2l2ZW4gcGMgY29ycmVzcG9uZGluZyB0byB0aGUgZ2l2ZW4K KyAgIGZ1bmN0aW9uIG5hbWUgYW5kIGFkZCBpdCB0byB0aGUgbGlzdC4gKi8K K3N0YXRpYyB2b2lkCitza2lwX2Z1bmN0aW9uX3BjIChDT1JFX0FERFIgcGMs IGNoYXIgKm5hbWUsIHN0cnVjdCBnZGJhcmNoICphcmNoLAorCQkgIGludCBw ZW5kaW5nKQoreworICBzdHJ1Y3Qgc2tpcGxpc3RfZW50cnkgKmUgPSBYWkFM TE9DIChzdHJ1Y3Qgc2tpcGxpc3RfZW50cnkpOworICBlLT5wYyA9IHBjOwor ICBlLT5nZGJhcmNoID0gYXJjaDsKKyAgZS0+ZW5hYmxlZCA9IDE7CisgIGUt PnBlbmRpbmcgPSBwZW5kaW5nOworICBlLT5mdW5jdGlvbl9uYW1lID0geHN0 cmR1cCAobmFtZSk7CisKKyAgYWRkX3NraXBsaXN0X2VudHJ5IChlKTsKKwor ICBpZiAoIXBlbmRpbmcpCisgICAgcHJpbnRmX2ZpbHRlcmVkIChfKCJGdW5j dGlvbiAlcyBhdCAlcyB3aWxsIGJlIHNraXBwZWQgd2hlbiBzdGVwcGluZy5c biIpLAorCQkgICAgIG5hbWUsIHBhZGRyZXNzIChnZXRfY3VycmVudF9hcmNo ICgpLCBwYykpOworICBlbHNlCisgICAgcHJpbnRmX2ZpbHRlcmVkIChfKCJG dW5jdGlvbiAlcyB3aWxsIGJlIHNraXBwZWQgd2hlbiBzdGVwcGluZywgIgor CQkgICAgICAgInBlbmRpbmcgc2hhcmVkIGxpYnJhcnkgbG9hZC5cbiIpLAor CQkgICAgIG5hbWUpOworfQorCisvKiBBZGQgdGhlIGdpdmVuIHNraXBsaXN0 IGVudHJ5IHRvIG91ciBsaXN0LCBhbmQgc2V0IHRoZSBlbnRyeSdzIG51bWJl ci4gKi8KK3N0YXRpYyB2b2lkCithZGRfc2tpcGxpc3RfZW50cnkgKHN0cnVj dCBza2lwbGlzdF9lbnRyeSAqZSkKK3sKKyAgc3RydWN0IHNraXBsaXN0X2Vu dHJ5ICplMTsKKworICBlLT5udW1iZXIgPSArK3NraXBsaXN0X2VudHJ5X2Nv dW50OworCisgIC8qIEFkZCB0byB0aGUgZW5kIG9mIHRoZSBjaGFpbiBzbyB0 aGF0IHRoZSBsaXN0IG9mCisgICAgIHNraXBsaXN0IGVudHJpZXMgd2lsbCBi ZSBpbiBudW1lcmljYWwgb3JkZXIuICovCisKKyAgZTEgPSBza2lwbGlzdF9l bnRyeV9jaGFpbjsKKyAgaWYgKGUxID09IDApCisgICAgc2tpcGxpc3RfZW50 cnlfY2hhaW4gPSBlOworICBlbHNlCisgICAgeworICAgICAgd2hpbGUgKGUx LT5uZXh0KQorCWUxID0gZTEtPm5leHQ7CisgICAgICBlMS0+bmV4dCA9IGU7 CisgICAgfQorfQorCisvKiBEb2VzIHRoZSBnaXZlbiBwYyBjb3JyZXNwb25k IHRvIHRoZSBiZWdpbm5pbmcgb2YgYSBza2lwcGVkIGZ1bmN0aW9uPyAqLwor aW50CitmdW5jdGlvbl9wY19pc19tYXJrZWRfZm9yX3NraXAgKENPUkVfQURE UiBwYykKK3sKKyAgc3RydWN0IHN5bXRhYl9hbmRfbGluZSBzYWw7CisgIGNo YXIgKmZpbGVuYW1lOworICBzdHJ1Y3Qgc2tpcGxpc3RfZW50cnkgKmU7CisK KyAgc2FsID0gZmluZF9wY19saW5lIChwYywgMCk7CisgIGZpbGVuYW1lID0g c2FsLnN5bXRhYi0+ZmlsZW5hbWU7CisKKyAgQUxMX1NLSVBMSVNUX0VOVFJJ RVMgKGUpCisgICAgeworICAgICAgaW50IHBjX21hdGNoID0gZS0+cGMgIT0g MCAmJiBwYyA9PSBlLT5wYzsKKyAgICAgIGludCBmaWxlbmFtZV9tYXRjaCA9 IGUtPmZpbGVuYW1lICE9IDAgJiYgZmlsZW5hbWUgIT0gMCAmJgorCQkJICAg c3RyY21wIChmaWxlbmFtZSwgZS0+ZmlsZW5hbWUpID09IDA7CisgICAgICBp ZiAoZS0+ZW5hYmxlZCAmJiAhZS0+cGVuZGluZyAmJiAocGNfbWF0Y2ggfHwg ZmlsZW5hbWVfbWF0Y2gpKQorCXJldHVybiAxOworICAgIH0KKworICByZXR1 cm4gMDsKK30KKworLyogUmUtc2V0IHRoZSBza2lwIGxpc3QgYWZ0ZXIgc3lt Ym9scyBoYXZlIGJlZW4gcmUtbG9hZGVkLiAqLwordm9pZAorc2tpcF9yZV9z ZXQgKCkKK3sKKyAgc3RydWN0IHNraXBsaXN0X2VudHJ5ICplOworICBBTExf U0tJUExJU1RfRU5UUklFUyAoZSkKKyAgICB7CisgICAgICBpZiAoZS0+Zmls ZW5hbWUgIT0gMCkKKwl7CisJICAvKiBJZiBpdCdzIGFuIGVudHJ5IHRlbGxp bmcgdXMgdG8gc2tpcCBhIGZpbGUsIGJ1dCB0aGUgZW50cnkgaXMKKwkgICAg IGN1cnJlbnRseSBwZW5kaW5nIGEgc29saWIgbG9hZCwgbGV0J3Mgc2VlIGlm IHdlIG5vdyBrbm93CisJICAgICBhYm91dCB0aGUgZmlsZS4gKi8KKwkgIHN0 cnVjdCBzeW10YWIgKnN5bXRhYiA9IGxvb2t1cF9zeW10YWIgKGUtPmZpbGVu YW1lKTsKKwkgIGlmIChzeW10YWIgIT0gMCkKKwkgICAgeworCSAgICAgIHhm cmVlIChlLT5maWxlbmFtZSk7CisJICAgICAgZS0+ZmlsZW5hbWUgPSB4c3Ry ZHVwIChzeW10YWItPmZpbGVuYW1lKTsKKwkgICAgICBlLT5nZGJhcmNoID0g Z2V0X29iamZpbGVfYXJjaCAoc3ltdGFiLT5vYmpmaWxlKTsKKwkgICAgICBl LT5wZW5kaW5nID0gMDsKKwkgICAgfQorCSAgZWxzZQorCSAgICB7CisJICAg ICAgZS0+cGVuZGluZyA9IDE7CisJICAgIH0KKwl9CisgICAgICBlbHNlIGlm IChlLT5mdW5jdGlvbl9uYW1lICE9IDApCisgICAgICAgIHsKKwkgIGNoYXIg KmZ1bmNfbmFtZSA9IGUtPmZ1bmN0aW9uX25hbWU7CisJICBzdHJ1Y3Qgc3lt dGFic19hbmRfbGluZXMgc2FsczsKKwkgIHZvbGF0aWxlIHN0cnVjdCBnZGJf ZXhjZXB0aW9uIGRlY29kZV9leGNlcHRpb247CisKKwkgIFRSWV9DQVRDSChk ZWNvZGVfZXhjZXB0aW9uLCBOT1RfRk9VTkRfRVJST1IpCisJICAgIHsKKwkg ICAgICBzYWxzID0gZGVjb2RlX2xpbmVfMSAoJmZ1bmNfbmFtZSwgMSwgMCwg MCwgMCk7CisJICAgIH0KKworCSAgaWYgKGRlY29kZV9leGNlcHRpb24ucmVh c29uID49IDAgJiYKKwkgICAgICBzYWxzLm5lbHRzID09IDEgJiYgc3RybGVu IChmdW5jX25hbWUpID09IDApCisJICAgIHsKKwkgICAgICBzdHJ1Y3Qgc3lt dGFiX2FuZF9saW5lICpzYWwgPSAmc2Fscy5zYWxzWzBdOworCSAgICAgIENP UkVfQUREUiBwYyA9IHNhbC0+cGM7CisJICAgICAgQ09SRV9BRERSIGZ1bmNf c3RhcnQgPSAwOworCSAgICAgIHN0cnVjdCBnZGJhcmNoICphcmNoID0gZ2V0 X3NhbF9hcmNoIChzYWwpOworCisJICAgICAgaWYgKGZpbmRfcGNfcGFydGlh bF9mdW5jdGlvbiAocGMsICZlLT5mdW5jdGlvbl9uYW1lLAorCQkgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJmZ1bmNfc3RhcnQsIDApKQorCQl7CisJ CSAgZS0+cGVuZGluZyA9IDA7CisJCSAgZS0+cGMgPSBmdW5jX3N0YXJ0Owor CQkgIGUtPmdkYmFyY2ggPSBhcmNoOworCQl9CisJICAgIH0KKwkgIGVsc2UK KwkgICAgeworCSAgICAgIGUtPnBlbmRpbmcgPSAxOworCSAgICB9CisgICAg ICAgIH0KKyAgICB9Cit9CisKKy8qIEhlbHBlciBmdW5jdGlvbiB0byBnZXQg YSBnZGJhcmNoIGZyb20gYSBzeW10YWJfYW5kX2xpbmUuICovCitzdGF0aWMg c3RydWN0IGdkYmFyY2gqCitnZXRfc2FsX2FyY2ggKHN0cnVjdCBzeW10YWJf YW5kX2xpbmUgKnNhbCkKK3sKKyAgaWYgKHNhbC0+c2VjdGlvbikKKyAgICBy ZXR1cm4gZ2V0X29iamZpbGVfYXJjaCAoc2FsLT5zZWN0aW9uLT5vYmpmaWxl KTsKKyAgaWYgKHNhbC0+c3ltdGFiKQorICAgIHJldHVybiBnZXRfb2JqZmls ZV9hcmNoIChzYWwtPnN5bXRhYi0+b2JqZmlsZSk7CisgIHJldHVybiBnZXRf Y3VycmVudF9hcmNoICgpOworfQorCit2b2lkCitfaW5pdGlhbGl6ZV9zdGVw X3NraXAgKHZvaWQpCit7CisgIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpj OworCisgIHNraXBsaXN0X2VudHJ5X2NoYWluID0gMDsKKyAgc2tpcGxpc3Rf ZW50cnlfY291bnQgPSAwOworCisgIGFkZF9wcmVmaXhfY21kICgic2tpcCIs IGNsYXNzX2JyZWFrcG9pbnQsIHNraXBfZnVuY3Rpb25fY29tbWFuZCwgXygi XAorSWdub3JlIGEgZnVuY3Rpb24gd2hpbGUgc3RlcHBpbmcuXG5cCitza2lw IFtGVU5DVElPTiBOQU1FXVxuXAorSWYgbm8gZnVuY3Rpb24gbmFtZSBpcyBn aXZlbiwgaWdub3JlIHRoZSBjdXJyZW50IGZ1bmN0aW9uLiIpLAorICAgICAg ICAgICAgICAgICAgJnNraXBsaXN0LCAic2tpcCAiLCAxLCAmY21kbGlzdCk7 CisKKyAgYyA9IGFkZF9jbWQgKCJmaWxlIiwgY2xhc3NfYnJlYWtwb2ludCwg c2tpcF9maWxlX2NvbW1hbmQsIF8oIlwKK0lnbm9yZSBhIGZpbGUgd2hpbGUg c3RlcHBpbmcuXG5cCitza2lwIGZpbGUgW0ZJTEVOQU1FXVxuXAorSWYgbm8g ZmlsZW5hbWUgaXMgZ2l2ZW4sIGlnbm9yZSB0aGUgY3VycmVudCBmaWxlLiIp LAorCSAgICAgICAmc2tpcGxpc3QpOworICBzZXRfY21kX2NvbXBsZXRlciAo YywgZmlsZW5hbWVfY29tcGxldGVyKTsKKworICBjID0gYWRkX2NtZCAoImZ1 bmN0aW9uIiwgY2xhc3NfYnJlYWtwb2ludCwgc2tpcF9mdW5jdGlvbl9jb21t YW5kLCBfKCJcCitJZ25vcmUgYSBmdW5jdGlvbiB3aGlsZSBzdGVwcGluZy5c blwKK3NraXAgZnVuY3Rpb24gW0ZVTkNUSU9OIE5BTUVdXG5cCitJZiBubyBm dW5jdGlvbiBuYW1lIGlzIGdpdmVuLCBza2lwIHRoZSBjdXJyZW50IGZ1bmN0 aW9uLiIpLAorCSAgICAgICAmc2tpcGxpc3QpOworICBzZXRfY21kX2NvbXBs ZXRlciAoYywgbG9jYXRpb25fY29tcGxldGVyKTsKKworICBhZGRfY21kICgi ZW5hYmxlIiwgY2xhc3NfYnJlYWtwb2ludCwgc2tpcF9lbmFibGVfY29tbWFu ZCwgXygiXAorRW5hYmxlIGEgc2tpcCBlbnRyeS5cblwKK3NraXAgZW5hYmxl IFtOVU1CRVJdIiksCisJICAgJnNraXBsaXN0KTsKKworICBhZGRfY21kICgi ZGlzYWJsZSIsIGNsYXNzX2JyZWFrcG9pbnQsIHNraXBfZGlzYWJsZV9jb21t YW5kLCBfKCJcCitEaXNhYmxlIGEgc2tpcCBlbnRyeS5cblwKK3NraXAgZGlz YWJsZSBbTlVNQkVSXSIpLAorCSAgICZza2lwbGlzdCk7CisKKyAgYWRkX2Nt ZCAoImRlbGV0ZSIsIGNsYXNzX2JyZWFrcG9pbnQsIHNraXBfZGVsZXRlX2Nv bW1hbmQsIF8oIlwKK0RlbGV0ZSBhIHNraXAgZW50cnkuXG5cCitza2lwIGRl bGV0ZSBbTlVNQkVSXSIpLAorICAgICAgICAgICAmc2tpcGxpc3QpOworCisg IGFkZF9pbmZvICgic2tpcCIsIHNraXBfaW5mbywgXygiXAorU3RhdHVzIG9m IGFsbCBza2lwcywgb3Igb2Ygc2tpcCBOVU1CRVIuXG5cCitUaGUgXCJUeXBl XCIgY29sdW1uIGluZGljYXRlcyBvbmUgb2Y6XG5cCitcdGZpbGUgICAgICAg IC0gaWdub3JlZCBmaWxlXG5cCitcdGZ1bmN0aW9uICAgIC0gaWdub3JlZCBm dW5jdGlvbiIpKTsKK30KZGlmZiAtLWdpdCBhL2dkYi9za2lwLmggYi9nZGIv c2tpcC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2 MTE1NTUKLS0tIC9kZXYvbnVsbAorKysgYi9nZGIvc2tpcC5oCkBAIC0wLDAg KzEsMjggQEAKKy8qIEhlYWRlciBmb3Igc2tpcHBpbmcgb3ZlciB1bmludGVy ZXN0aW5nIGZpbGVzIGFuZCBmdW5jdGlvbnMgd2hlbiBkZWJ1Z2dpbmcuCisK KyAgIENvcHlyaWdodCAoQykgMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4KKworICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAgIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgICB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBv cgorICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKwor ICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICBidXQgV0lUSE9VVCBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor ICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLiAgU2VlIHRoZQorICAgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgWW91IHNob3VsZCBoYXZl IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UKKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBz ZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKworI2lm ICFkZWZpbmVkIChTS0lQX0gpCisjZGVmaW5lIFNLSVBfSAorCisvKiBSZXR1 cm5zIDEgaWYgdGhlIGdpdmVuIHBjIGlzIG1hcmtlZCBmb3Igc2tpcCBhbmQg c2hvdWxkbid0IGJlCisgICBzdGVwcGVkIGludG8uICBPdGhlcndpc2UsIHJl dHVybnMgMC4gKi8KK2ludCBmdW5jdGlvbl9wY19pc19tYXJrZWRfZm9yX3Nr aXAgKENPUkVfQUREUiBwYyk7CisKKy8qIFJlLXNldCB0aGUgc2tpcCBsaXN0 IGFmdGVyIHN5bWJvbHMgaGF2ZSBiZWVuIHJlbG9hZGVkLiAqLwordm9pZCBz a2lwX3JlX3NldCAoKTsKKworI2VuZGlmIC8qICFkZWZpbmVkIChTS0lQX0gp ICovCmRpZmYgLS1naXQgYS9nZGIvc3RhY2suYyBiL2dkYi9zdGFjay5jCmlu ZGV4IDE1NjY2ZWUuLjZmMzY5M2EgMTAwNjQ0Ci0tLSBhL2dkYi9zdGFjay5j CisrKyBiL2dkYi9zdGFjay5jCkBAIC03Myw2ICs3MywxMiBAQCBzdGF0aWMg dm9pZCBwcmludF9mcmFtZSAoc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lLCBp bnQgcHJpbnRfbGV2ZWwsCiAJCQkgZW51bSBwcmludF93aGF0IHByaW50X3do YXQsICBpbnQgcHJpbnRfYXJncywKIAkJCSBzdHJ1Y3Qgc3ltdGFiX2FuZF9s aW5lIHNhbCk7CiAKK3N0YXRpYyB2b2lkIHNldF9sYXN0X2Rpc3BsYXllZF9j b2RlcG9pbnQgKGludCB2YWxpZCwKKwkJCQkJICBzdHJ1Y3QgcHJvZ3JhbV9z cGFjZSAqcHNwYWNlLAorCQkJCQkgIENPUkVfQUREUiBhZGRyLAorCQkJCQkg IHN0cnVjdCBzeW10YWIgKnN5bXRhYiwKKwkJCQkJICBpbnQgbGluZSk7CisK IC8qIFplcm8gbWVhbnMgZG8gdGhpbmdzIG5vcm1hbGx5OyB3ZSBhcmUgaW50 ZXJhY3RpbmcgZGlyZWN0bHkgd2l0aCB0aGUKICAgIHVzZXIuICBPbmUgbWVh bnMgcHJpbnQgdGhlIGZ1bGwgZmlsZW5hbWUgYW5kIGxpbmVudW1iZXIgd2hl biBhCiAgICBmcmFtZSBpcyBwcmludGVkLCBhbmQgZG8gc28gaW4gYSBmb3Jt YXQgZW1hY3MxOC9lbWFjczE5LjIyIGNhbgpAQCAtODAsNiArODYsMTQgQEAg c3RhdGljIHZvaWQgcHJpbnRfZnJhbWUgKHN0cnVjdCBmcmFtZV9pbmZvICpm cmFtZSwgaW50IHByaW50X2xldmVsLAogICAgY2FzZXMgYW5kIGluIGEgc2xp Z2h0bHkgZGlmZmVyZW50IHN5bnRheC4gICovCiAKIGludCBhbm5vdGF0aW9u X2xldmVsID0gMDsKKworLyogVGhlc2UgdmFyaWFibGVzIGhvbGQgdGhlIGxh c3QgY29kZXBvaW50IHdlIGRpc3BsYXllZCB0byB0aGUgdXNlci4gIFRoaXMg aXMKKyAgIHdoZXJlIHdlIGluc2VydCBhIGJyZWFrcG9pbnQgb3IgYSBza2lw bGlzdCBlbnRyeSBieSBkZWZhdWx0LiAqLworc3RhdGljIGludCBsYXN0X2Nv ZGVwb2ludF92YWxpZCA9IDA7CitzdGF0aWMgc3RydWN0IHByb2dyYW1fc3Bh Y2UgKmxhc3RfY29kZXBvaW50X3BzcGFjZSA9IDA7CitzdGF0aWMgQ09SRV9B RERSIGxhc3RfY29kZXBvaW50X2FkZHIgPSAwOworc3RhdGljIHN0cnVjdCBz eW10YWIgKmxhc3RfY29kZXBvaW50X3N5bXRhYiA9IDA7CitzdGF0aWMgaW50 IGxhc3RfY29kZXBvaW50X2xpbmUgPSAwOwogDAogCiAvKiBSZXR1cm4gMSBp ZiB3ZSBzaG91bGQgZGlzcGxheSB0aGUgYWRkcmVzcyBpbiBhZGRpdGlvbiB0 byB0aGUgbG9jYXRpb24sCkBAIC01OTksOSArNjEzLDkgQEAgcHJpbnRfZnJh bWVfaW5mbyAoc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lLCBpbnQgcHJpbnRf bGV2ZWwsCiAgICAgICBDT1JFX0FERFIgcGM7CiAKICAgICAgIGlmIChnZXRf ZnJhbWVfcGNfaWZfYXZhaWxhYmxlIChmcmFtZSwgJnBjKSkKLQlzZXRfZGVm YXVsdF9icmVha3BvaW50ICgxLCBzYWwucHNwYWNlLCBwYywgc2FsLnN5bXRh Yiwgc2FsLmxpbmUpOworCXNldF9sYXN0X2Rpc3BsYXllZF9jb2RlcG9pbnQg KDEsIHNhbC5wc3BhY2UsIHBjLCBzYWwuc3ltdGFiLCBzYWwubGluZSk7CiAg ICAgICBlbHNlCi0Jc2V0X2RlZmF1bHRfYnJlYWtwb2ludCAoMCwgMCwgMCwg MCwgMCk7CisJc2V0X2xhc3RfZGlzcGxheWVkX2NvZGVwb2ludCAoMCwgMCwg MCwgMCwgMCk7CiAgICAgfQogCiAgIGFubm90YXRlX2ZyYW1lX2VuZCAoKTsK QEAgLTYwOSw2ICs2MjMsODggQEAgcHJpbnRfZnJhbWVfaW5mbyAoc3RydWN0 IGZyYW1lX2luZm8gKmZyYW1lLCBpbnQgcHJpbnRfbGV2ZWwsCiAgIGdkYl9m bHVzaCAoZ2RiX3N0ZG91dCk7CiB9CiAKKy8qIFJlbWVtYmVyIHRoZSBsYXN0 IGNvZGVwb2ludCB3ZSBkaXNwbGF5ZWQsIHdoaWNoIHdlIHVzZSBlLmcuIGFz IHRoZSBwbGFjZSB0bworICAgcHV0IGEgYnJlYWtwb2ludCB3aGVuIHRoZSBg YnJlYWsnIGNvbW1hbmQgaXMgaW52b2tlZCB3aXRoIG5vIGFyZ3VtZW50cy4g Ki8KK3N0YXRpYyB2b2lkCitzZXRfbGFzdF9kaXNwbGF5ZWRfY29kZXBvaW50 IChpbnQgdmFsaWQsIHN0cnVjdCBwcm9ncmFtX3NwYWNlICpwc3BhY2UsCisJ CQkgICAgICBDT1JFX0FERFIgYWRkciwgc3RydWN0IHN5bXRhYiAqc3ltdGFi LAorCQkJICAgICAgaW50IGxpbmUpCit7CisgIGxhc3RfY29kZXBvaW50X3Zh bGlkID0gdmFsaWQ7CisgIGxhc3RfY29kZXBvaW50X3BzcGFjZSA9IHBzcGFj ZTsKKyAgbGFzdF9jb2RlcG9pbnRfYWRkciA9IGFkZHI7CisgIGxhc3RfY29k ZXBvaW50X3N5bXRhYiA9IHN5bXRhYjsKKyAgbGFzdF9jb2RlcG9pbnRfbGlu ZSA9IGxpbmU7Cit9CisKK3ZvaWQKK2NsZWFyX2xhc3RfZGlzcGxheWVkX3N5 bXRhYl9hbmRfbGluZSAoKQoreworICBsYXN0X2NvZGVwb2ludF92YWxpZCA9 IDA7CisgIGxhc3RfY29kZXBvaW50X3BzcGFjZSA9IDA7CisgIGxhc3RfY29k ZXBvaW50X2FkZHIgPSAwOworICBsYXN0X2NvZGVwb2ludF9zeW10YWIgPSAw OworICBsYXN0X2NvZGVwb2ludF9saW5lID0gMDsKK30KKworaW50CitsYXN0 X2Rpc3BsYXllZF9zeW10YWJfYW5kX2xpbmVfaXNfdmFsaWQgKCkKK3sKKyAg cmV0dXJuIGxhc3RfY29kZXBvaW50X3ZhbGlkOworfQorCitzdHJ1Y3QgcHJv Z3JhbV9zcGFjZSoKK2dldF9sYXN0X2Rpc3BsYXllZF9wc3BhY2UgKCkKK3sK KyAgaWYgKGxhc3RfY29kZXBvaW50X3ZhbGlkKQorICAgIHJldHVybiBsYXN0 X2NvZGVwb2ludF9wc3BhY2U7CisgIHJldHVybiAwOworfQorCitDT1JFX0FE RFIKK2dldF9sYXN0X2Rpc3BsYXllZF9hZGRyICgpCit7CisgIGlmIChsYXN0 X2NvZGVwb2ludF92YWxpZCkKKyAgICByZXR1cm4gbGFzdF9jb2RlcG9pbnRf YWRkcjsKKyAgcmV0dXJuIDA7Cit9CisKK3N0cnVjdCBzeW10YWIqCitnZXRf bGFzdF9kaXNwbGF5ZWRfc3ltdGFiICgpCit7CisgIGlmIChsYXN0X2NvZGVw b2ludF92YWxpZCkKKyAgICByZXR1cm4gbGFzdF9jb2RlcG9pbnRfc3ltdGFi OworICByZXR1cm4gMDsKK30KKworaW50CitnZXRfbGFzdF9kaXNwbGF5ZWRf bGluZSAoKQoreworICBpZiAobGFzdF9jb2RlcG9pbnRfdmFsaWQpCisgICAg cmV0dXJuIGxhc3RfY29kZXBvaW50X2xpbmU7CisgIHJldHVybiAwOworfQor Cit2b2lkCitnZXRfbGFzdF9kaXNwbGF5ZWRfc3ltdGFiX2FuZF9saW5lIChz dHJ1Y3Qgc3ltdGFiX2FuZF9saW5lICpzYWwpCit7CisgIGlmIChsYXN0X2Nv ZGVwb2ludF92YWxpZCkKKyAgICB7CisgICAgICBzYWwtPnBzcGFjZSA9IGxh c3RfY29kZXBvaW50X3BzcGFjZTsKKyAgICAgIHNhbC0+cGMgPSBsYXN0X2Nv ZGVwb2ludF9hZGRyOworICAgICAgc2FsLT5zeW10YWIgPSBsYXN0X2NvZGVw b2ludF9zeW10YWI7CisgICAgICBzYWwtPmxpbmUgPSBsYXN0X2NvZGVwb2lu dF9saW5lOworICAgIH0KKyAgZWxzZQorICAgIHsKKyAgICAgIHNhbC0+cHNw YWNlID0gMDsKKyAgICAgIHNhbC0+cGMgPSAwOworICAgICAgc2FsLT5zeW10 YWIgPSAwOworICAgICAgc2FsLT5saW5lID0gMDsKKyAgICB9Cit9CisKKwog LyogQXR0ZW1wdCB0byBvYnRhaW4gdGhlIEZVTk5BTUUsIEZVTkxBTkcgYW5k IG9wdGlvbmFsbHkgRlVOQ1Agb2YgdGhlIGZ1bmN0aW9uCiAgICBjb3JyZXNw b25kaW5nIHRvIEZSQU1FLiAgKi8KIApkaWZmIC0tZ2l0IGEvZ2RiL3N0YWNr LmggYi9nZGIvc3RhY2suaAppbmRleCAzY2NlNjIzLi4zMjAzMzJiIDEwMDY0 NAotLS0gYS9nZGIvc3RhY2suaAorKysgYi9nZGIvc3RhY2suaApAQCAtMzgs NCArMzgsMTQgQEAgdm9pZCBpdGVyYXRlX292ZXJfYmxvY2tfbG9jYWxfdmFy cyAoc3RydWN0IGJsb2NrICpibG9jaywKIAkJCQkgICAgaXRlcmF0ZV9vdmVy X2Jsb2NrX2FyZ19sb2NhbF92YXJzX2NiIGNiLAogCQkJCSAgICB2b2lkICpj Yl9kYXRhKTsKIAorLyogR2V0IG9yIHNldCB0aGUgbGFzdCBkaXNwbGF5ZWQg c3ltdGFiIGFuZCBsaW5lLCB3aGljaCBpcywgZS5nLiB3aGVyZSB3ZSBzZXQg YQorICogYnJlYWtwb2ludCB3aGVuIGBicmVhaycgaXMgc3VwcGxpZWQgd2l0 aCBubyBhcmd1bWVudHMuICovCit2b2lkIGNsZWFyX2xhc3RfZGlzcGxheWVk X3N5bXRhYl9hbmRfbGluZSAoKTsKK2ludCBsYXN0X2Rpc3BsYXllZF9zeW10 YWJfYW5kX2xpbmVfaXNfdmFsaWQgKCk7CitzdHJ1Y3QgcHJvZ3JhbV9zcGFj ZSogZ2V0X2xhc3RfZGlzcGxheWVkX3BzcGFjZSAoKTsKK0NPUkVfQUREUiBn ZXRfbGFzdF9kaXNwbGF5ZWRfYWRkciAoKTsKK3N0cnVjdCBzeW10YWIqIGdl dF9sYXN0X2Rpc3BsYXllZF9zeW10YWIgKCk7CitpbnQgZ2V0X2xhc3RfZGlz cGxheWVkX2xpbmUgKCk7Cit2b2lkIGdldF9sYXN0X2Rpc3BsYXllZF9zeW10 YWJfYW5kX2xpbmUgKHN0cnVjdCBzeW10YWJfYW5kX2xpbmUgKnNhbCk7CisK ICNlbmRpZiAvKiAjaWZuZGVmIFNUQUNLX0ggKi8KZGlmZiAtLWdpdCBhL2dk Yi9zeW1maWxlLmMgYi9nZGIvc3ltZmlsZS5jCmluZGV4IDE1NDBjYjcuLjY5 Njc4MDUgMTAwNjQ0Ci0tLSBhL2dkYi9zeW1maWxlLmMKKysrIGIvZ2RiL3N5 bWZpbGUuYwpAQCAtNTYsNiArNTYsNyBAQAogI2luY2x1ZGUgImVsZi1iZmQu aCIKICNpbmNsdWRlICJzb2xpYi5oIgogI2luY2x1ZGUgInJlbW90ZS5oIgor I2luY2x1ZGUgInN0YWNrLmgiCiAKICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4K ICNpbmNsdWRlIDxmY250bC5oPgpAQCAtMjc4MCw3ICsyNzgxLDcgQEAgY2xl YXJfc3ltdGFiX3VzZXJzIChpbnQgYWRkX2ZsYWdzKQogICBjbGVhcl9kaXNw bGF5cyAoKTsKICAgaWYgKChhZGRfZmxhZ3MgJiBTWU1GSUxFX0RFRkVSX0JQ X1JFU0VUKSA9PSAwKQogICAgIGJyZWFrcG9pbnRfcmVfc2V0ICgpOwotICBz ZXRfZGVmYXVsdF9icmVha3BvaW50ICgwLCBOVUxMLCAwLCAwLCAwKTsKKyAg Y2xlYXJfbGFzdF9kaXNwbGF5ZWRfc3ltdGFiX2FuZF9saW5lICgpOwogICBj bGVhcl9wY19mdW5jdGlvbl9jYWNoZSAoKTsKICAgb2JzZXJ2ZXJfbm90aWZ5 X25ld19vYmpmaWxlIChOVUxMKTsKIApkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3Rz dWl0ZS9DaGFuZ2VMb2cgYi9nZGIvdGVzdHN1aXRlL0NoYW5nZUxvZwppbmRl eCA4ZjllZmQxLi43ZGVlYTNlIDEwMDY0NAotLS0gYS9nZGIvdGVzdHN1aXRl L0NoYW5nZUxvZworKysgYi9nZGIvdGVzdHN1aXRlL0NoYW5nZUxvZwpAQCAt MSwzICsxLDE0IEBACisyMDExLTEwLTA2ICBKdXN0aW4gTGViYXIgPGp1c3Rp bi5sZWJhckBnbWFpbC5jb20+CisKKwlBZGQgdGVzdHMgZm9yIHNraXAgY29t bWFuZC4KKwkqIHRlc3RzdWl0ZS9nZGIuYmFzZS9za2lwLXNvbGliLWxpYi5j OiBOZXcKKwkqIHRlc3RzdWl0ZS9nZGIuYmFzZS9za2lwLXNvbGliLW1haW4u YzogTmV3CisJKiB0ZXN0c3VpdGUvZ2RiLmJhc2Uvc2tpcC1zb2xpYi5leHA6 IE5ldworCSogdGVzdHN1aXRlL2dkYi5iYXNlL3NraXAuYzogTmV3CisJKiB0 ZXN0c3VpdGUvZ2RiLmJhc2Uvc2tpcC5leHA6IE5ldworCSogdGVzdHN1aXRl L2dkYi5iYXNlL3NraXAxLmM6IE5ldworCSogdGVzdHN1aXRlL2dkYi5iYXNl L01ha2VmaWxlLmluOiBBZGRpbmcgbmV3IGZpbGVzLgorCiAyMDExLTEwLTA1 ICBQaWVycmUgTXVsbGVyICA8bXVsbGVyQGljcy51LXN0cmFzYmcuZnI+CiAK IAlBZGQgdGVzdHMgZm9yIHBhc3Npbmcgb2YgZW52aXJvbm1lbnQgdmFyaWFi bGVzIHRvIGluZmVyaW9yLgpkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9n ZGIuYmFzZS9NYWtlZmlsZS5pbiBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uv TWFrZWZpbGUuaW4KaW5kZXggNzJmMWJhNC4uN2NlYjEyMSAxMDA2NDQKLS0t IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9NYWtlZmlsZS5pbgorKysgYi9n ZGIvdGVzdHN1aXRlL2dkYi5iYXNlL01ha2VmaWxlLmluCkBAIC0zMCw4ICsz MCw4IEBAIEVYRUNVVEFCTEVTID0gYTItcnVuIGFkdmFuY2UgYWxsLXR5cGVz IGFubm90YTEgYW5ub3RhMS13YXRjaF90aHJlYWRfbnVtIFwKIAlzZXBzeW10 YWIuZGVidWcgc2Vwc3ltdGFiLnN0cmlwcGVkIHNldHNob3cgc2V0dmFyIHNo bWFpbiBzaHJlbG9jIFwKIAlzaWdhbGwgc2lnYWx0c3RhY2sgc2lnYnB0IHNp Z2NobGQgc2lnaW5mbyBzaWdpbmZvLWFkZHIgXAogCXNpZ2luZm8taW5mY2Fs bCBzaWdpbmZvLW9iaiBzaWduYWxzIHNpZ251bGwgc2lncmVwZWF0IHNpZ3N0 ZXAgXAotCXNpemVvZiBzb2xpYiBzb2xpYi1jb3JydXB0ZWQgc29saWItZGlz cGxheS1tYWluIHNvbGliLW5vZGlyIFwKLQlzb2xpYi1vdmVybGFwLW1haW4t MHg0MDAwMDAwMCBzb2xpYi1zeW1ib2wtbWFpbiBzb2xpYi13ZWFrIFwKKwlz aXplb2Ygc2tpcCBza2lwLXNvbGliIHNvbGliIHNvbGliLWNvcnJ1cHRlZCBz b2xpYi1kaXNwbGF5LW1haW4KKwlzb2xpYi1ub2RpciBzb2xpYi1vdmVybGFw LW1haW4tMHg0MDAwMDAwMCBzb2xpYi1zeW1ib2wtbWFpbiBzb2xpYi13ZWFr IFwKIAlzb2xpYi13ZWFrLWxpYjIgc29saWJfc2wgc28taW1wbC1sZCBzby1p bmRyLWNsIFwKIAlzdGFjay1jaGVja2luZyBzdGFydCBzdGVwLWJyZWFrIHN0 ZXAtYnQgc3RlcC1saW5lIHN0ZXAtcmVzdW1lLWluZmNhbGwgXAogCXN0ZXAt dGVzdCBzdG9yZSBzdHJ1Y3RzLXQqIHN0cnVjdHMyIHN0cnVjdHMzIFwKZGlm ZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2tpcC1zb2xpYi1s aWIuYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2tpcC1zb2xpYi1saWIu YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OTJjZDAx Ci0tLSAvZGV2L251bGwKKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9z a2lwLXNvbGliLWxpYi5jCkBAIC0wLDAgKzEsMTEgQEAKKy8qIFNpbXBsZSBz aGFyZWQgbGlicmFyeSAqLworCitpbnQgc3F1YXJlKGludCBudW0pCit7Cisg IHJldHVybiBtdWx0aXBseShudW0sIG51bSk7Cit9CisKK2ludCBtdWx0aXBs eShpbnQgYSwgaW50IGIpCit7CisgIHJldHVybiBhICogYjsKK30KZGlmZiAt LWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2tpcC1zb2xpYi1tYWlu LmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NraXAtc29saWItbWFpbi5j Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0NmJiNWYK LS0tIC9kZXYvbnVsbAorKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3Nr aXAtc29saWItbWFpbi5jCkBAIC0wLDAgKzEsNiBAQAoraW50IHNxdWFyZShp bnQgbnVtKTsKKworaW50IG1haW4oKQoreworICByZXR1cm4gc3F1YXJlKDAp OworfQpkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9za2lw LXNvbGliLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2tpcC1zb2xp Yi5leHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGY4 ODM4ZAotLS0gL2Rldi9udWxsCisrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJh c2Uvc2tpcC1zb2xpYi5leHAKQEAgLTAsMCArMSwxMjkgQEAKKyMgICBDb3B5 cmlnaHQgMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKwor IyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorIyBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxp c2hlZCBieQorIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo ZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorIyAoYXQgeW91ciBv cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIworIyBUaGlzIHByb2dyYW0g aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2 ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZQorIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh aWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIyBhbG9uZyB3aXRo IHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5v cmcvbGljZW5zZXMvPi4KKworIyBUaGlzIGZpbGUgd2FzIHdyaXR0ZW4gYnkg SnVzdGluIExlYmFyLiAoanVzdGluLmxlYmFyQGdtYWlsLmNvbSkKKworIwor IyBUZXN0cyBza2lwcGluZyBzaGFyZWQgbGlicmFyaWVzLgorIworCisjIFRo aXMgb25seSB3b3JrcyBvbiBHTlUvTGludXguCitpZiB7ICFbaXNuYXRpdmVd IHx8IFtpc19yZW1vdGUgaG9zdF0gfHwgIVtpc3RhcmdldCAqLWxpbnV4Kl0g fHwgW3NraXBfc2hsaWJfdGVzdHNdfSB7CisgICAgY29udGludWUKK30KKwor c2V0IHRlc3QgInNraXAtc29saWIiCitzZXQgc3JjZmlsZV9tYWluICIke3Rl c3R9LW1haW4uYyIKK3NldCBiaW5maWxlX21haW4gIiR7b2JqZGlyfS8ke3N1 YmRpcn0vJHt0ZXN0fS10ZXN0Igorc2V0IHNyY2ZpbGVfbGliICIke3Rlc3R9 LWxpYi5jIgorc2V0IGxpYm5hbWUgImxpYiR7dGVzdH0iCitzZXQgYmluZmls ZV9saWIgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke2xpYm5hbWV9LnNvCisKKyMK KyMgQ29tcGlsZSBvdXIgcHJvZ3JhbSB1bmRlciB0ZXN0LiAgVGhlIG1haW4g cHJvZ3JhbSByZWZlcmVuY2VzIGEgc2hhcmVkIGxpYnJhcnkKKyMgbGlic2tp cC1zb2xpYi5zbywgd2hpY2ggY29udGFpbnMgdHdvIGZ1bmN0aW9ucywgc3F1 YXJlKCksIHdoaWNoIGlzCisjIHJlZmVyZW5jZWQgYnkgdGhlIG1haW4gcHJv Z3JhbSwgYW5kIG11bHRpcGx5KCksIHdoaWNoIGlzIG5vdCByZWZlcmVuY2Vk IGJ5CisjIHRoZSBtYWluIHByb2dyYW0uCisjCisKK2lmIHtbZ2RiX2NvbXBp bGVfc2hsaWIgJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGVfbGlifSAk e2JpbmZpbGVfbGlifSBbbGlzdCBkZWJ1ZyBhZGRpdGlvbmFsX2ZsYWdzPS1m UElDIC1XbCwtc29uYW1lLCR7bGlibmFtZX0uc29dXSAhPSAiIn0geworICAg IHJldHVybiAtMQorfQorCitpZiB7W2dkYl9jb21waWxlICIke3NyY2Rpcn0v JHtzdWJkaXJ9LyR7c3JjZmlsZV9tYWlufSIgIiR7YmluZmlsZV9tYWlufS5v IiBvYmplY3QgZGVidWddICE9ICIifSB7CisgICAgcmV0dXJuIC0xCit9CisK K2lmIHtbZ2RiX2NvbXBpbGUgIiR7YmluZmlsZV9tYWlufS5vIiAiJHtiaW5m aWxlX21haW59IiBleGVjdXRhYmxlIFwKKyAgICAgICAgICAgICAgICAgW2xp c3QgZGVidWcgImFkZGl0aW9uYWxfZmxhZ3M9LUwke29iamRpcn0vJHtzdWJk aXJ9IC1sJHt0ZXN0fSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC1XbCwtcnBhdGg9JHtvYmpkaXJ9LyR7c3Vi ZGlyfSJdXSAhPSAiIn0geworICAgIHJldHVybiAtMQorfQorCitnZGJfc3Rh cnQKK2dkYl9sb2FkICR7YmluZmlsZV9tYWlufQorCisjCisjIEF0IHRoaXMg cG9pbnQsIGlmIHdlIHRyeSB0byBza2lwIHRoZSBmaWxlICR7c3JjZmlsZV9s aWJ9IG9yIHRoZSBmdW5jdGlvbgorIyBtdWx0aXBseSgpLCB3ZSBzaG91bGQg Z2V0IGEgcHJvbXB0IGFza2luZyB1cyBpZiB3ZSB3YW50IHRvIGVuYWJsZSB0 aGUKKyMgc2tpcCBlbnRyeSBwZW5kaW5nIGEgc2hhcmVkIGxpYnJhcnkgbG9h ZC4KKyMKKworZ2RiX3Rlc3QgInNraXAgZmlsZSAke3NyY2ZpbGVfbGlifSIg XAorIkZpbGUgJHtzcmNmaWxlX2xpYn0gd2lsbCBiZSBza2lwcGVkIHdoZW4g c3RlcHBpbmcuIiBcCisiaWdub3JpbmcgZmlsZSBpbiBzb2xpYiIgXAorIk5v IHNvdXJjZSBmaWxlIG5hbWVkICR7c3JjZmlsZV9saWJ9LioKK0lnbm9yZSBm aWxlIHBlbmRpbmcgZnV0dXJlIHNoYXJlZCBsaWJyYXJ5IGxvYWQuKiJcCisi eSIKKworIworIyBEb2VzIGluZm8gc2tpcCBsaXN0IHRoaXMgZW50cnkgYXMg cGVuZGluZz8KKyMKK2dkYl90ZXN0ICJpbmZvIHNraXAiIFwKKyJOdW1cXHMr VHlwZVxccytFbmJcXHMrQWRkcmVzc1xccytXaGF0XFxzKgorMVxccytmaWxl XFxzK3lcXHMrXFxzKyR7c3JjZmlsZV9saWJ9IFxcKFBFTkRJTkdcXClcXHMq IiBcCisiaW5mbyBza2lwIHdpdGggcGVuZGluZyBmaWxlIgorCitpZiAhW3J1 bnRvX21haW5dIHsgZmFpbCAic2tpcCB0ZXN0cyBzdXBwcmVzc2VkIiB9CisK KyMKKyMgV2Ugc2hvdWxkbid0IHN0ZXAgaW50byBzcXVhcmUoKSwgc2luY2Ug d2Ugc2tpcHBlZCBza2lwLXNvbGliLWxpYi5jLgorIworZ2RiX3Rlc3QgInN0 ZXAiICIiCitnZGJfdGVzdCAiYnQiICIjMFxccyttYWluLioiICJzdGVwIGFm dGVyIGlnbm9yaW5nIHNvbGliIGZpbGUuIgorCisjCisjIE91ciBlbnRyeSBz aG91bGQgbm8gbG9uZ2VyIGJlIHBlbmRpbmcuICBOb3RlIHRoYXQgd2UgdW5m b3J0dW5hdGVseSBuZWVkIHRvIGRvCisjIGF0IGxlYXN0IG9uZSBzdGVwIGJl Zm9yZSB0aGUgZW50cnkgd2lsbCBiZSB1bm1hcmtlZCBhcyBwZW5kaW5nLgor IworZ2RiX3Rlc3QgImluZm8gc2tpcCIgXAorIk51bVxccytUeXBlXFxzK0Vu YlxccytBZGRyZXNzXFxzK1doYXRcXHMqCisxXFxzK2ZpbGVcXHMreVxccytc XHMrLioke3NyY2ZpbGVfbGlifVxccyoiIFwKKyJpbmZvIHNraXAgd2l0aCBw ZW5kaW5nIGZpbGUiCisKKyMKKyMgTm93IHJlc3RhcnQgZ2RiIGFuZCB0ZXN0 aW5nIGlnbm9yaW5nIG9mIGEgZnVuY3Rpb24gaW5zaWRlIGEgc29saWIuCisj CitnZGJfZXhpdAorZ2RiX3N0YXJ0CitnZGJfbG9hZCAke2JpbmZpbGVfbWFp bn0KKworZ2RiX3Rlc3QgInNraXAgZnVuY3Rpb24gbXVsdGlwbHkiIFwKKyJG dW5jdGlvbiBtdWx0aXBseSB3aWxsIGJlIHNraXBwZWQgd2hlbiBzdGVwcGlu ZywgcGVuZGluZyBzaGFyZWQgbGlicmFyeSBsb2FkLiIgXAorImlnbm9yaW5n IGZ1bmN0aW9uIGluIHNvbGliIiBcCisiTm8gZnVuY3Rpb24gZm91bmQgbmFt ZWQgbXVsdGlwbHkuLioKK0lnbm9yZSBmdW5jdGlvbiBwZW5kaW5nIGZ1dHVy ZSBzaGFyZWQgbGlicmFyeSBsb2FkLioiXAorInkiCisKK2lmICFbcnVudG9f bWFpbl0geyBmYWlsICJza2lwIHRlc3RzIHN1cHByZXNzZWQiIH0KKworIwor IyBPdXIgZmlyc3Qgc3RlcCBzaG91bGQgdGFrZSB1cyBpbnRvIHNxdWFyZS4K KyMKK2dkYl90ZXN0ICJzdGVwIiAic3F1YXJlLioiCisKKyMKKyMgTm93IG91 ciBlbnRyeSBzaG91bGQgbm8gbG9uZ2VyIGJlIHBlbmRpbmcuCisjCitnZGJf dGVzdCAiaW5mbyBza2lwIiBcCisiTnVtXFxzK1R5cGVcXHMrRW5iXFxzK0Fk ZHJlc3NcXHMrV2hhdFxccyoKKzFcXHMrZnVuY3Rpb25cXHMreVxccysweFxb MC05YS1mXF0rXFxzK211bHRpcGx5IGF0IC4qJHtzcmNmaWxlX2xpYn06Lipc XHMqIiBcCisKKyMKKyMgVGhpcyBzdGVwIHNob3VsZG4ndCBnbyBpbnRvIG11 bHRpcGx5IC0tIHdlIHNob3VsZCBza2lwIGl0IGFuZCBnbyBvbiB0byB0aGUK KyMgbGFzdCBsaW5lIG9mIHNxdWFyZS4KKyMKK2dkYl90ZXN0ICJzdGVwIiAi IgorZ2RiX3Rlc3QgImJ0IiAiIzBcXHMrc3F1YXJlLioiCmRpZmYgLS1naXQg YS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NraXAuYyBiL2dkYi90ZXN0c3Vp dGUvZ2RiLmJhc2Uvc2tpcC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLjU2NWJhOTMKLS0tIC9kZXYvbnVsbAorKysgYi9nZGIvdGVz dHN1aXRlL2dkYi5iYXNlL3NraXAuYwpAQCAtMCwwICsxLDEzIEBACitpbnQg Zm9vKCk7CitpbnQgYmFyKCk7CitpbnQgYmF6KGludCwgaW50KTsKKworaW50 IG1haW4oKQoreworICByZXR1cm4gYmF6KGZvbygpLCBiYXIoKSk7Cit9CisK K2ludCBmb28oKQoreworICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2dk Yi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2tpcC5leHAgYi9nZGIvdGVzdHN1aXRl L2dkYi5iYXNlL3NraXAuZXhwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLmJhMWU4N2IKLS0tIC9kZXYvbnVsbAorKysgYi9nZGIvdGVz dHN1aXRlL2dkYi5iYXNlL3NraXAuZXhwCkBAIC0wLDAgKzEsMTM1IEBACisj ICAgQ29weXJpZ2h0IDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuCisKKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyMgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh cyBwdWJsaXNoZWQgYnkKKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKyMgKGF0 IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgVGhpcyBw cm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5U QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g IFNlZSB0aGUKKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v cmUgZGV0YWlscy4KKyMKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyMgYWxv bmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3 dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisKKyMgVGhpcyBmaWxlIHdhcyB3cml0 dGVuIGJ5IEp1c3RpbiBMZWJhci4gKGp1c3Rpbi5sZWJhckBnbWFpbC5jb20p CisKK2lmIHsgW3ByZXBhcmVfZm9yX3Rlc3Rpbmcgc2tpcC5leHAgInNraXAi IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAge3NraXAuYyBza2lwMS5j IH0gXAorICAgICAgICAgICAgICAgICAgICAgICAgICB7ZGVidWcgbm93YXJu aW5nc31dIH0geworICAgIHJldHVybiAtMQorfQorCitzZXQgc3JjZmlsZSBz a2lwLmMKK3NldCBzcmNmaWxlMSBza2lwMS5jCisKKyMKKyMgUmlnaHQgYWZ0 ZXIgd2Ugc3RhcnQgZ2RiLCB0aGVyZSdzIG5vIGRlZmF1bHQgZmlsZSBvciBm dW5jdGlvbiB0byBza2lwLgorIworZ2RiX3Rlc3QgInNraXAgZmlsZSIgIk5v IGRlZmF1bHQgZmlsZSBub3cuIgorZ2RiX3Rlc3QgInNraXAgZnVuY3Rpb24i ICJObyBkZWZhdWx0IGZ1bmN0aW9uIG5vdy4iCitnZGJfdGVzdCAic2tpcCIg Ik5vIGRlZmF1bHQgZnVuY3Rpb24gbm93LiIKKworaWYgIVtydW50b19tYWlu XSB7IGZhaWwgInNraXAgdGVzdHMgc3VwcHJlc3NlZCIgfQorCisjCisjIFRl c3QgfGluZm8gc2tpcHwgd2l0aCBhbiBlbXB0eSBza2lwbGlzdC4KKyMKK2dk Yl90ZXN0ICJpbmZvIHNraXAiICJOb3QgaWdub3JpbmcgYW55IGZpbGVzIG9y IGZ1bmN0aW9uc1wuIiAiaW5mbyBza2lwIGVtcHR5IgorCisjCisjIENyZWF0 ZSBhIHNraXBsaXN0IGVudHJ5IGZvciB0aGUgY3VycmVudCBmaWxlIGFuZCBm dW5jdGlvbi4KKyMKK2dkYl90ZXN0ICJza2lwIGZpbGUiICJGaWxlIC4qJHNy Y2ZpbGUgd2lsbCBiZSBza2lwcGVkIHdoZW4gc3RlcHBpbmdcLiIKK2dkYl90 ZXN0ICJza2lwIiAiRnVuY3Rpb24gbWFpbiBhdCAuKiB3aWxsIGJlIHNraXBw ZWQgd2hlbiBzdGVwcGluZ1wuIgorCisjCisjIENyZWF0ZSBhIHNraXBsaXN0 IGVudHJ5IGZvciBhIHNwZWNpZmllZCBmaWxlIGFuZCBmdW5jdGlvbi4KKyMK K2dkYl90ZXN0ICJza2lwIGZpbGUgc2tpcDEuYyIgIkZpbGUgLiokc3JjZmls ZTEgd2lsbCBiZSBza2lwcGVkIHdoZW4gc3RlcHBpbmdcLiIKK2dkYl90ZXN0 ICJza2lwIGZ1bmN0aW9uIGJheiIgIkZ1bmN0aW9uIGJheiBhdCAuKiB3aWxs IGJlIHNraXBwZWQgd2hlbiBzdGVwcGluZ1wuIgorCisjCisjIFRlc3QgYmFk IHNraXBsaXN0IGVudHJ5IG1vZGlmaWNhdGlvbiBjb21tYW5kcworIworZ2Ri X3Rlc3QgInNraXAgZW5hYmxlIDk5OSIgIk5vIHNraXBsaXN0IGVudHJ5IG51 bWJlcmVkIDk5OS4iCitnZGJfdGVzdCAic2tpcCBkaXNhYmxlIDk5OSIgIk5v IHNraXBsaXN0IGVudHJ5IG51bWJlcmVkIDk5OS4iCitnZGJfdGVzdCAic2tp cCBkZWxldGUgOTk5IiAiTm8gc2tpcGxpc3QgZW50cnkgbnVtYmVyZWQgOTk5 LiIKK2dkYl90ZXN0ICJza2lwIGVuYWJsZSIgIkFyZ3VtZW50IHJlcXVpcmVk IFxcKGV4cHJlc3Npb24gdG8gY29tcHV0ZVxcKS4iCitnZGJfdGVzdCAic2tp cCBkaXNhYmxlIiAiQXJndW1lbnQgcmVxdWlyZWQgXFwoZXhwcmVzc2lvbiB0 byBjb21wdXRlXFwpLiIKK2dkYl90ZXN0ICJza2lwIGRlbGV0ZSIgIkFyZ3Vt ZW50IHJlcXVpcmVkIFxcKGV4cHJlc3Npb24gdG8gY29tcHV0ZVxcKS4iCitn ZGJfdGVzdCAic2tpcCBlbmFibGUgYSIgIk5vIHN5bWJvbCBcImFcIiBpbiBj dXJyZW50IGNvbnRleHQuIgorZ2RiX3Rlc3QgInNraXAgZGlzYWJsZSBhIiAi Tm8gc3ltYm9sIFwiYVwiIGluIGN1cnJlbnQgY29udGV4dC4iCitnZGJfdGVz dCAic2tpcCBkZWxldGUgYSIgIk5vIHN5bWJvbCBcImFcIiBpbiBjdXJyZW50 IGNvbnRleHQuIgorCisjCisjIEFzayBmb3IgaW5mbyBvbiBhIHNraXBsaXN0 IGVudHJ5IHdoaWNoIGRvZXNuJ3QgZXhpc3QuCisjCitnZGJfdGVzdCAiaW5m byBza2lwIDk5OSIgIk5vIHNraXBsaXN0IGVudHJ5IG51bWJlcmVkIDk5OS4i CisKKyMKKyMgRG9lcyB8aW5mbyBza2lwfCBsb29rIHJpZ2h0PworIworZ2Ri X3Rlc3QgImluZm8gc2tpcCIgXAorIk51bVxccytUeXBlXFxzK0VuYlxccytB ZGRyZXNzXFxzK1doYXRcXHMqCisxXFxzK2ZpbGVcXHMreVxccysuKiRzcmNm aWxlXFxzKgorMlxccytmdW5jdGlvblxccyt5XFxzKzB4XFswLTlhLWZcXSsg bWFpbiBhdCAuKiRzcmNmaWxlOlxbMC05XF0rXFxzKgorM1xccytmaWxlXFxz K3lcXHMrLiokc3JjZmlsZTFcXHMqCis0XFxzK2Z1bmN0aW9uXFxzK3lcXHMr MHhcWzAtOWEtZlxdKyBiYXogYXQgLiokc3JjZmlsZTE6XFswLTlcXStcXHMq IgorCisjCisjIFJpZ2h0IG5vdywgd2UgaGF2ZSBhbiBvdXRzdGFuZGluZyBz a2lwbGlzdCBlbnRyeSBvbiBib3RoIHNvdXJjZQorIyBmaWxlcywgc28gd2hl biB3ZSBzdGVwIGludG8gdGhlIGZpcnN0IGxpbmUgaW4gbWFpbigpLCB3ZSBz aG91bGQgc3RlcAorIyByaWdodCBvdmVyIGl0IGFuZCBnbyB0byB0aGUgc2Vj b25kIGxpbmUgb2YgbWFpbigpLgorIworaWYgIVtydW50b19tYWluXSB7IGZh aWwgInNraXAgdGVzdHMgc3VwcHJlc3NlZCIgfQorc2VuZF9nZGIgInN0ZXBc biIKK2dkYl90ZXN0ICJidCIgIiMwXFxzK21haW4uKiIgInN0ZXAgYWZ0ZXIg YWxsIGlnbm9yZWQiCisKKyMKKyMgTm93IHJlbW92ZSBza2lwLmMgZnJvbSB0 aGUgc2tpcGxpc3QuICBPdXIgZmlyc3Qgc3RlcCBzaG91bGQgdGFrZSB1cwor IyBpbnRvIGZvbygpLCBhbmQgb3VyIHNlY29uZCBzdGVwIHNob3VsZCB0YWtl IHVzIHRvIHRoZSBuZXh0IGxpbmUgaW4KKyMgbWFpbigpLgorIworc2VuZF9n ZGIgInNraXAgZGVsZXRlIDFcbiIKKyMgQ2hlY2sgdGhhdCBlbnRyeSAxIGlz IG1pc3NpbmcgZnJvbSB8aW5mbyBza2lwfAorZ2RiX3Rlc3QgImluZm8gc2tp cCIgXAorIk51bVxccytUeXBlXFxzK0VuYlxccytBZGRyZXNzXFxzK1doYXRc XHMqCisyXFxzK2Z1bmN0aW9uXFxzK3lcXHMrMHhcWzAtOWEtZlxdKyBtYWlu IGF0IC4qJHNyY2ZpbGU6XFswLTlcXStcXHMqCiszXFxzK2ZpbGVcXHMreVxc cysuKiRzcmNmaWxlMVxccyoKKzRcXHMrZnVuY3Rpb25cXHMreVxccysweFxb MC05YS1mXF0rIGJheiBhdCAuKiRzcmNmaWxlMTpcWzAtOVxdK1xccyoiCisK K2lmICFbcnVudG9fbWFpbl0geyBmYWlsICJza2lwIHRlc3RzIHN1cHByZXNz ZWQiIH0KK2dkYl90ZXN0ICJzdGVwIiAiZm9vIFxcKFxcKSBhdC4qIiAic3Rl cCBhZnRlciBkZWxldGluZyAxICgxKSIKK3NlbmRfZ2RiICJzdGVwXG4iOyAj IFJldHVybiBmcm9tIGZvbygpCitnZGJfdGVzdCAic3RlcCIgIm1haW4gXFwo XFwpIGF0LioiICJzdGVwIGFmdGVyIGRlbGV0aW5nIDEgKDIpIgorCisjCisj IE5vdyBkaXNhYmxlIHRoZSBza2lwbGlzdCBlbnRyeSBmb3IgIHNraXAxLmMu ICBXZSBzaG91bGQgbm93CisjIHN0ZXAgaW50byBmb28oKSwgdGhlbiBpbnRv IGJhcigpLCBidXQgbm90IGludG8gYmF6KCkuCisjCitzZW5kX2dkYiAic2tp cCBkaXNhYmxlIDNcbiIKKyMgSXMgZW50cnkgMyBkaXNhYmxlZCBpbiB8aW5m byBza2lwfD8KK2dkYl90ZXN0ICJpbmZvIHNraXAgMyIgIi4qXFxuM1xccytm aWxlXFxzK24uKiIgXAorICAgICAgICAgImluZm8gc2tpcCBzaG93cyBlbnRy eSBhcyBkaXNhYmxlZCIKKworaWYgIVtydW50b19tYWluXSB7IGZhaWwgInNr aXAgdGVzdHMgc3VwcHJlc3NlZCIgfQorZ2RiX3Rlc3QgInN0ZXAiICJiYXIg XFwoXFwpIGF0LioiICJzdGVwIGFmdGVyIGRpc2FibGluZyAzICgxKSIKK3Nl bmRfZ2RiICJzdGVwXG4iOyAjIFJldHVybiBmcm9tIGZvbygpCitnZGJfdGVz dCAic3RlcCIgImZvbyBcXChcXCkgYXQuKiIgInN0ZXAgYWZ0ZXIgZGlzYWJs aW5nIDMgKDIpIgorc2VuZF9nZGIgInN0ZXBcbiI7ICMgUmV0dXJuIGZyb20g YmFyKCkKK2dkYl90ZXN0ICJzdGVwIiAibWFpbiBcXChcXCkgYXQuKiIgInN0 ZXAgYWZ0ZXIgZGlzYWJsaW5nIDMgKDMpIgorCisjCisjIEVuYWJsZSBza2lw bGlzdCBlbnRyeSAzIGFuZCBtYWtlIHN1cmUgd2Ugc3RlcCBvdmVyIGl0IGxp a2UgYmVmb3JlLgorIworc2VuZF9nZGIgInNraXAgZW5hYmxlIDNcbiIKKyMg SXMgZW50cnkgMyBlbmFibGVkIGluIHxpbmZvIHNraXB8PworZ2RiX3Rlc3Qg ImluZm8gc2tpcCAzIiAiLipcXG4zXFxzK2ZpbGVcXHMreS4qIiBcCisgICAg ICAgICAiaW5mbyBza2lwIHNob3dzIGVudHJ5IGFzIGVuYWJsZWQiCitpZiAh W3J1bnRvX21haW5dIHsgZmFpbCAic2tpcCB0ZXN0cyBzdXBwcmVzc2VkIiB9 CitnZGJfdGVzdCAic3RlcCIgImZvbyBcXChcXCkgYXQuKiIgInN0ZXAgYWZ0 ZXIgZGVsZXRpbmcgMSAoMSkiCitzZW5kX2dkYiAic3RlcFxuIjsgIyBSZXR1 cm4gZnJvbSBmb28oKQorZ2RiX3Rlc3QgInN0ZXAiICJtYWluIFxcKFxcKSBh dC4qIiAic3RlcCBhZnRlciBkZWxldGluZyAxICgyKSIKKwpkaWZmIC0tZ2l0 IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9za2lwMS5jIGIvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYmFzZS9za2lwMS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLjJkYWI1YzMKLS0tIC9kZXYvbnVsbAorKysgYi9nZGIv dGVzdHN1aXRlL2dkYi5iYXNlL3NraXAxLmMKQEAgLTAsMCArMSw5IEBACitp bnQgYmFyKCkKK3sKKyAgcmV0dXJuIDE7Cit9CisKK2ludCBiYXooaW50IGEs IGludCBiKQoreworICByZXR1cm4gYSArIGI7Cit9Cg== --000e0ce0f8a896cabd04aea6fc43--