From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 15805 invoked by alias); 25 Apr 2011 19:35:32 -0000 Received: (qmail 15745 invoked by uid 22791); 25 Apr 2011 19:35:31 -0000 X-SWARE-Spam-Status: No, hits=-2.0 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,RFC_ABUSE_POST X-Spam-Check-By: sourceware.org Received: from mail-fx0-f41.google.com (HELO mail-fx0-f41.google.com) (209.85.161.41) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Mon, 25 Apr 2011 19:35:16 +0000 Received: by fxm18 with SMTP id 18so1936075fxm.0 for ; Mon, 25 Apr 2011 12:35:14 -0700 (PDT) Received: by 10.223.76.212 with SMTP id d20mr318758fak.5.1303760114148; Mon, 25 Apr 2011 12:35:14 -0700 (PDT) MIME-Version: 1.0 Received: by 10.223.120.14 with HTTP; Mon, 25 Apr 2011 12:34:53 -0700 (PDT) In-Reply-To: References: From: Justin Lebar Date: Mon, 25 Apr 2011 19:35:00 -0000 Message-ID: Subject: Re: [Patch] Bug 8287: Skip uninteresting functions while debugging To: Tom Tromey Cc: gdb-patches@sourceware.org Content-Type: multipart/mixed; boundary=00151747378879e4bd04a1c34e2a 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-04/txt/msg00455.txt.bz2 --00151747378879e4bd04a1c34e2a Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-length: 1326 After many months of inactivity, I finally have time to work on this again. I'm really sorry for the delay. I've attached a patch for tip of trunk. I renamed the command from "blacklist" to "skip". The one major issue outstanding on the previous patch was that every time you stepped, I tried to resolve all skips pending a shared library load. I did this because registering a solib load listener didn't work -- somehow even after I was notified of the load, the solib's symbols weren't available. I hacked around this problem by putting a call to skip_re_set at the end of breakpoint_re_set. -Justin On Fri, Jul 23, 2010 at 3:50 PM, Justin Lebar wrot= e: > Justin> I'm not sure I like "enable blacklist". =A0The problem is that > Justin> "blacklist" is a noun referring to the list of all functions we > Justin> skip and also a verb meaning "add an entry to the blacklist". > Justin> "Enable blacklist" sounds to me like we're enabling an entire > Justin> list of blacklist entries. > > Tom> Yeah, that makes sense. > Tom> Yes, that would be good. =A0Any ideas for names? > > Maybe we could use "skip": > > skip function foo > skip file bar > info skip > delete skip 1 > disable skip 42 > > "Ignore" might also work, but I don't like "delete ignore 1", or > "enable ignore 2". > > -Justin > --00151747378879e4bd04a1c34e2a Content-Type: application/octet-stream; name=skips Content-Disposition: attachment; filename=skips Content-Transfer-Encoding: base64 X-Attachment-Id: f_gmxsx0vp0 Content-length: 65169 ZGlmZiAtLWdpdCBhL2dkYi9DaGFuZ2VMb2cgYi9nZGIvQ2hhbmdlTG9nCmlu ZGV4IDMyNmU1YTkuLmQ4ZGUyOGUgMTAwNjQ0Ci0tLSBhL2dkYi9DaGFuZ2VM b2cKKysrIGIvZ2RiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEx LTA0LTIzICBKdXN0aW4gTGViYXIgIDxqdXN0aW4ubGViYXJAZ21haWwuY29t 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 aXNwbGF5ZWRfY29kZXBvaW50LAorCWxhc3RfZGlzcGxheWVkX2NvZGVwb2lu dF9pc192YWxpZCwgZ2V0X2xhc3RfZGlzcGxheWVkX3BzcGFjZSwKKwlnZXRf bGFzdF9kaXNwbGF5ZWRfYWRkciwgZ2V0X2xhc3RfZGlzcGxheWVkX3N5bXRh YiwKKwlnZXRfbGFzdF9kaXNwbGF5ZWRfbGluZSwgc2V0X3NhbF90b19sYXN0 X2Rpc3BsYXllZF9jb2RlcG9pbnQpOiBOZXcKKwlwdWJsaWMgZnVuY3Rpb25z LgorCSogc3RhY2suaCAoY2xlYXJfbGFzdF9kaXNwbGF5ZWRfY29kZXBvaW50 LAorCWxhc3RfZGlzcGxheWVkX2NvZGVwb2ludF9pc192YWxpZCwgZ2V0X2xh c3RfZGlzcGxheWVkX3BzcGFjZSwKKwlnZXRfbGFzdF9kaXNwbGF5ZWRfYWRk ciwgZ2V0X2xhc3RfZGlzcGxheWVkX3N5bXRhYiwKKwlnZXRfbGFzdF9kaXNw bGF5ZWRfbGluZSwgc2V0X3NhbF90b19sYXN0X2Rpc3BsYXllZF9jb2RlcG9p bnQpOiBBZGRlZAorCiAyMDExLTA0LTIxICBKaWUgWmhhbmcgIDxqemhhbmc5 MThAZ21haWwuY29tPgogCiAJKiBNQUlOVEFJTkVSUzogVXBkYXRlIG15IGVt YWlsIGFkZHJlc3MuCkBAIC0yMTAsNiArMjQ3LDcgQEAKIAkoc3ltYm9sX2Zp bGVfYWRkKTogUGFzcyBOVUxMIHRvIHRoZSBuZXcgcGFyYW1ldGVyIHBhcmVu dC4KIAkqIHN5bWZpbGUuaCAoc3ltYm9sX2ZpbGVfYWRkX2Zyb21fYmZkKTog TmV3IHBhcmFtZXRlciBwYXJlbnQuCiAKKzw8PDw8PDwgSEVBRAogMjAxMS0w NC0xNyAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQu Y29tPgogCiAJKiBlbGZyZWFkLmMgKGVsZl9zeW10YWJfcmVhZCk6IERvIG5v dCBpZ25vcmUgLkwgc3ltYm9scyBpZiB0aGV5IGFyZQpkaWZmIC0tZ2l0IGEv Z2RiL01ha2VmaWxlLmluIGIvZ2RiL01ha2VmaWxlLmluCmluZGV4IDViYWIz NjAuLmFlMmEyOTkgMTAwNjQ0Ci0tLSBhL2dkYi9NYWtlZmlsZS5pbgorKysg Yi9nZGIvTWFrZWZpbGUuaW4KQEAgLTcxOSw3ICs3MTksNyBAQCBTRklMRVMg PSBhZGEtZXhwLnkgYWRhLWxhbmcuYyBhZGEtdHlwZXByaW50LmMgYWRhLXZh bHByaW50LmMgYWRhLXRhc2tzLmMgXAogCXByb2xvZ3VlLXZhbHVlLmMgcHN5 bXRhYi5jIFwKIAlyZWdjYWNoZS5jIHJlZ2dyb3Vwcy5jIHJlbW90ZS5jIHJl bW90ZS1maWxlaW8uYyByZXZlcnNlLmMgXAogCXNlbnRpbmVsLWZyYW1lLmMg XAotCXNlcmlhbC5jIHNlci1iYXNlLmMgc2VyLXVuaXguYyBcCisJc2VyaWFs LmMgc2VyLWJhc2UuYyBzZXItdW5peC5jIHNraXAuYyBcCiAJc29saWIuYyBz b2xpYi10YXJnZXQuYyBzb3VyY2UuYyBcCiAJc3RhYnNyZWFkLmMgc3RhY2su YyBzdGQtcmVncy5jIHN5bWZpbGUuYyBzeW1maWxlLW1lbS5jIHN5bW1pc2Mu YyBcCiAJc3ltdGFiLmMgXApAQCAtODE0LDcgKzgxNCw3IEBAIG9zZGF0YS5o IHByb2Nmcy5oIHB5dGhvbi9weS1ldmVudC5oIHB5dGhvbi9weS1ldmVudHMu aCBweXRob24vcHktc3RvcGV2ZW50LmggXAogcHl0aG9uL3B5dGhvbi1pbnRl cm5hbC5oIHB5dGhvbi9weXRob24uaCByYXZlbnNjYXItdGhyZWFkLmggcmVj b3JkLmggXAogc29saWItZGFyd2luLmggc29saWItaWE2NC1ocHV4Lmggc29s aWItc3B1Lmggd2luZG93cy1uYXQuaCB4Y29mZnJlYWQuaCBcCiBnbnVsaWIv ZXh0cmEvYXJnLW5vbm51bGwuaCBnbnVsaWIvZXh0cmEvYysrZGVmcy5oIGdu dWxpYi9leHRyYS93YXJuLW9uLXVzZS5oIFwKLWdudWxpYi9zdGRkZWYuaW4u aCBpbmxpbmUtZnJhbWUuaAorZ251bGliL3N0ZGRlZi5pbi5oIGlubGluZS1m cmFtZS5oIHNraXAuaAogCiAjIEhlYWRlciBmaWxlcyB0aGF0IGFscmVhZHkg aGF2ZSBzcmNkaXIgaW4gdGhlbSwgb3Igd2hpY2ggYXJlIGluIG9iamRpci4K IApAQCAtODk5LDcgKzg5OSw3IEBAIENPTU1PTl9PQlMgPSAkKERFUEZJTEVT KSAkKENPTkZJR19PQlMpICQoWVlPQkopIFwKIAlwcm9sb2d1ZS12YWx1ZS5v IG1lbW9yeS1tYXAubyBtZW1yYW5nZS5vIHhtbC1zdXBwb3J0Lm8geG1sLXN5 c2NhbGwubyBcCiAJdGFyZ2V0LWRlc2NyaXB0aW9ucy5vIHRhcmdldC1tZW1v cnkubyB4bWwtdGRlc2MubyB4bWwtYnVpbHRpbi5vIFwKIAlpbmZlcmlvci5v IG9zZGF0YS5vIGdkYl91c2xlZXAubyByZWNvcmQubyBnY29yZS5vIFwKLQlq aXQubyBwcm9nc3BhY2UubworCWppdC5vIHByb2dzcGFjZS5vIHNraXAubwog CiBUU09CUyA9IGluZmxvdy5vCiAKZGlmZiAtLWdpdCBhL2dkYi9icmVha3Bv aW50LmMgYi9nZGIvYnJlYWtwb2ludC5jCmluZGV4IDNkYmVlODUuLmJiOTc1 NTggMTAwNjQ0Ci0tLSBhL2dkYi9icmVha3BvaW50LmMKKysrIGIvZ2RiL2Jy ZWFrcG9pbnQuYwpAQCAtNjQsNiArNjQsOCBAQAogI2luY2x1ZGUgInhtbC1z eXNjYWxsLmgiCiAjaW5jbHVkZSAicGFyc2VyLWRlZnMuaCIKICNpbmNsdWRl ICJjbGkvY2xpLXV0aWxzLmgiCisjaW5jbHVkZSAic3RhY2suaCIKKyNpbmNs dWRlICJza2lwLmgiCiAKIC8qIHJlYWRsaW5lIGluY2x1ZGUgZmlsZXMgKi8K ICNpbmNsdWRlICJyZWFkbGluZS9yZWFkbGluZS5oIgpAQCAtNTQzLDE5ICs1 NDUsNiBAQCBtYWtlX2NsZWFudXBfZGVjcmVmX2NvdW50ZWRfY29tbWFuZF9s aW5lIChzdHJ1Y3QgY291bnRlZF9jb21tYW5kX2xpbmUgKipjbWRwKQogICBy ZXR1cm4gbWFrZV9jbGVhbnVwIChkb19jbGVhbnVwX2NvdW50ZWRfY29tbWFu ZF9saW5lLCBjbWRwKTsKIH0KIAotLyogRGVmYXVsdCBhZGRyZXNzLCBzeW10 YWIgYW5kIGxpbmUgdG8gcHV0IGEgYnJlYWtwb2ludCBhdAotICAgZm9yICJi cmVhayIgY29tbWFuZCB3aXRoIG5vIGFyZy4KLSAgIElmIGRlZmF1bHRfYnJl YWtwb2ludF92YWxpZCBpcyB6ZXJvLCB0aGUgb3RoZXIgdGhyZWUgYXJlCi0g ICBub3QgdmFsaWQsIGFuZCAiYnJlYWsiIHdpdGggbm8gYXJnIGlzIGFuIGVy cm9yLgotCi0gICBUaGlzIHNldCBieSBwcmludF9zdGFja19mcmFtZSwgd2hp Y2ggY2FsbHMgc2V0X2RlZmF1bHRfYnJlYWtwb2ludC4gICovCi0KLWludCBk ZWZhdWx0X2JyZWFrcG9pbnRfdmFsaWQ7Ci1DT1JFX0FERFIgZGVmYXVsdF9i cmVha3BvaW50X2FkZHJlc3M7Ci1zdHJ1Y3Qgc3ltdGFiICpkZWZhdWx0X2Jy ZWFrcG9pbnRfc3ltdGFiOwotaW50IGRlZmF1bHRfYnJlYWtwb2ludF9saW5l Owotc3RydWN0IHByb2dyYW1fc3BhY2UgKmRlZmF1bHRfYnJlYWtwb2ludF9w c3BhY2U7Ci0KIAwKIC8qIFJldHVybiB0aGUgYnJlYWtwb2ludCB3aXRoIHRo ZSBzcGVjaWZpZWQgbnVtYmVyLCBvciBOVUxMCiAgICBpZiB0aGUgbnVtYmVy IGRvZXMgbm90IHJlZmVyIHRvIGFuIGV4aXN0aW5nIGJyZWFrcG9pbnQuICAq LwpAQCAtNTQ0MywyMCArNTQzMiw2IEBAIGRlc2NyaWJlX290aGVyX2JyZWFr cG9pbnRzIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKICAgICB9CiB9CiAM Ci0vKiBTZXQgdGhlIGRlZmF1bHQgcGxhY2UgdG8gcHV0IGEgYnJlYWtwb2lu dAotICAgZm9yIHRoZSBgYnJlYWsnIGNvbW1hbmQgd2l0aCBubyBhcmd1bWVu dHMuICAqLwotCi12b2lkCi1zZXRfZGVmYXVsdF9icmVha3BvaW50IChpbnQg dmFsaWQsIHN0cnVjdCBwcm9ncmFtX3NwYWNlICpwc3BhY2UsCi0JCQlDT1JF X0FERFIgYWRkciwgc3RydWN0IHN5bXRhYiAqc3ltdGFiLAotCQkJaW50IGxp bmUpCi17Ci0gIGRlZmF1bHRfYnJlYWtwb2ludF92YWxpZCA9IHZhbGlkOwot ICBkZWZhdWx0X2JyZWFrcG9pbnRfcHNwYWNlID0gcHNwYWNlOwotICBkZWZh dWx0X2JyZWFrcG9pbnRfYWRkcmVzcyA9IGFkZHI7Ci0gIGRlZmF1bHRfYnJl YWtwb2ludF9zeW10YWIgPSBzeW10YWI7Ci0gIGRlZmF1bHRfYnJlYWtwb2lu dF9saW5lID0gbGluZTsKLX0KIAogLyogUmV0dXJuIHRydWUgaWZmIGl0IGlz IG1lYW5pbmdmdWwgdG8gdXNlIHRoZSBhZGRyZXNzIG1lbWJlciBvZgogICAg QlBULiAgRm9yIHNvbWUgYnJlYWtwb2ludCB0eXBlcywgdGhlIGFkZHJlc3Mg bWVtYmVyIGlzIGlycmVsZXZhbnQKQEAgLTc2NTQsMjQgKzc2MjksMjYgQEAg cGFyc2VfYnJlYWtwb2ludF9zYWxzIChjaGFyICoqYWRkcmVzcywKICAgaWYg KCgqYWRkcmVzcykgPT0gTlVMTAogICAgICAgfHwgKHN0cm5jbXAgKCgqYWRk cmVzcyksICJpZiIsIDIpID09IDAgJiYgaXNzcGFjZSAoKCphZGRyZXNzKVsy XSkpKQogICAgIHsKLSAgICAgIGlmIChkZWZhdWx0X2JyZWFrcG9pbnRfdmFs aWQpCisgICAgICAvKiBUaGUgbGFzdCBkaXNwbGF5ZWQgY29kZXBvaW50LCBp ZiBpdCdzIHZhbGlkLCBpcyBvdXIgZGVmYXVsdCBicmVha3BvaW50CisgICAg ICAgICBhZGRyZXNzLiAqLworICAgICAgaWYgKGxhc3RfZGlzcGxheWVkX2Nv ZGVwb2ludF9pc192YWxpZCAoKSkKIAl7CiAJICBzdHJ1Y3Qgc3ltdGFiX2Fu ZF9saW5lIHNhbDsKIAogCSAgaW5pdF9zYWwgKCZzYWwpOwkJLyogSW5pdGlh bGl6ZSB0byB6ZXJvZXMuICAqLwogCSAgc2Fscy0+c2FscyA9IChzdHJ1Y3Qg c3ltdGFiX2FuZF9saW5lICopCiAJICAgIHhtYWxsb2MgKHNpemVvZiAoc3Ry dWN0IHN5bXRhYl9hbmRfbGluZSkpOwotCSAgc2FsLnBjID0gZGVmYXVsdF9i cmVha3BvaW50X2FkZHJlc3M7Ci0JICBzYWwubGluZSA9IGRlZmF1bHRfYnJl YWtwb2ludF9saW5lOwotCSAgc2FsLnN5bXRhYiA9IGRlZmF1bHRfYnJlYWtw b2ludF9zeW10YWI7Ci0JICBzYWwucHNwYWNlID0gZGVmYXVsdF9icmVha3Bv aW50X3BzcGFjZTsKLQkgIHNhbC5zZWN0aW9uID0gZmluZF9wY19vdmVybGF5 IChzYWwucGMpOworCisJICAvKiBTZXQgc2FsJ3MgcHNwYWNlLCBwYywgc3lt dGFiLCBhbmQgbGluZSB0byB0aGUgdmFsdWVzCisJICAgICBjb3JyZXNwb25k aW5nIHRvIHRoZSBsYXN0IGNhbGwgdG8gcHJpbnRfZnJhbWVfaW5mby4gKi8K KwkgIHNldF9zYWxfdG9fbGFzdF9kaXNwbGF5ZWRfY29kZXBvaW50ICgmc2Fs KTsKKyAgICAgICAgICBzYWwuc2VjdGlvbiA9IGZpbmRfcGNfb3ZlcmxheSAo c2FsLnBjKTsKIAogCSAgLyogImJyZWFrIiB3aXRob3V0IGFyZ3VtZW50cyBp cyBlcXVpdmFsZW50IHRvICJicmVhayAqUEMiCi0JICAgICB3aGVyZSBQQyBp cyB0aGUgZGVmYXVsdF9icmVha3BvaW50X2FkZHJlc3MuICBTbyBtYWtlIHN1 cmUKLQkgICAgIHRvIHNldCBzYWwuZXhwbGljaXRfcGMgdG8gcHJldmVudCBH REIgZnJvbSB0cnlpbmcgdG8KLQkgICAgIGV4cGFuZCB0aGUgbGlzdCBvZiBz YWxzIHRvIGluY2x1ZGUgYWxsIG90aGVyIGluc3RhbmNlcwotCSAgICAgd2l0 aCB0aGUgc2FtZSBzeW10YWIgYW5kIGxpbmUuICAqLworCSAgICAgd2hlcmUg UEMgaXMgdGhlIGxhc3QgZGlzcGxheWVkIGNvZGVwb2ludCdzIGFkZHJlc3Mu ICBTbworCSAgICAgbWFrZSBzdXJlIHRvIHNldCBzYWwuZXhwbGljaXRfcGMg dG8gcHJldmVudCBHREIgZnJvbQorCSAgICAgdHJ5aW5nIHRvIGV4cGFuZCB0 aGUgbGlzdCBvZiBzYWxzIHRvIGluY2x1ZGUgYWxsIG90aGVyCisJICAgICBp bnN0YW5jZXMgd2l0aCB0aGUgc2FtZSBzeW10YWIgYW5kIGxpbmUuICAqLwog CSAgc2FsLmV4cGxpY2l0X3BjID0gMTsKIAogCSAgc2Fscy0+c2Fsc1swXSA9 IHNhbDsKQEAgLTc2ODUsMTkgKzc2NjIsMjIgQEAgcGFyc2VfYnJlYWtwb2lu dF9zYWxzIChjaGFyICoqYWRkcmVzcywKICAgICAgIC8qIEZvcmNlIGFsbW9z dCBhbGwgYnJlYWtwb2ludHMgdG8gYmUgaW4gdGVybXMgb2YgdGhlCiAgICAg ICAgICBjdXJyZW50X3NvdXJjZV9zeW10YWIgKHdoaWNoIGlzIGRlY29kZV9s aW5lXzEncyBkZWZhdWx0KS4KICAgICAgICAgIFRoaXMgc2hvdWxkIHByb2R1 Y2UgdGhlIHJlc3VsdHMgd2Ugd2FudCBhbG1vc3QgYWxsIG9mIHRoZQotICAg ICAgICAgdGltZSB3aGlsZSBsZWF2aW5nIGRlZmF1bHRfYnJlYWtwb2ludF8q IGFsb25lLgorCSB0aW1lIHdoaWxlIGxlYXZpbmcgdGhlIGxhc3QgZGlzcGxh eWVkIGNvZGVwb2ludCBwb2ludGVycworCSBhbG9uZS4KIAogICAgICAgICAg T2JqQzogSG93ZXZlciwgZG9uJ3QgbWF0Y2ggYW4gT2JqZWN0aXZlLUMgbWV0 aG9kIG5hbWUgd2hpY2gKICAgICAgICAgIG1heSBoYXZlIGEgJysnIG9yICct JyBzdWNjZWVkZWQgYnkgYSAnWycgKi8KIAkgCiAgICAgICBzdHJ1Y3Qgc3lt dGFiX2FuZF9saW5lIGN1cnNhbCA9IGdldF9jdXJyZW50X3NvdXJjZV9zeW10 YWJfYW5kX2xpbmUgKCk7CiAJCQkKLSAgICAgIGlmIChkZWZhdWx0X2JyZWFr cG9pbnRfdmFsaWQKKyAgICAgIGlmIChsYXN0X2Rpc3BsYXllZF9jb2RlcG9p bnRfaXNfdmFsaWQgKCkKIAkgICYmICghY3Vyc2FsLnN5bXRhYgogIAkgICAg ICB8fCAoKHN0cmNociAoIistIiwgKCphZGRyZXNzKVswXSkgIT0gTlVMTCkK ICAJCSAgJiYgKCgqYWRkcmVzcylbMV0gIT0gJ1snKSkpKQotCSpzYWxzID0g ZGVjb2RlX2xpbmVfMSAoYWRkcmVzcywgMSwgZGVmYXVsdF9icmVha3BvaW50 X3N5bXRhYiwKLQkJCSAgICAgICBkZWZhdWx0X2JyZWFrcG9pbnRfbGluZSwg Y2Fub25pY2FsKTsKKwkqc2FscyA9IGRlY29kZV9saW5lXzEgKGFkZHJlc3Ms IDEsCisJCQkgICAgICAgZ2V0X2xhc3RfZGlzcGxheWVkX3N5bXRhYiAoKSwK KwkJCSAgICAgICBnZXRfbGFzdF9kaXNwbGF5ZWRfbGluZSAoKSwKKwkJCSAg ICAgICBjYW5vbmljYWwpOwogICAgICAgZWxzZQogCSpzYWxzID0gZGVjb2Rl X2xpbmVfMSAoYWRkcmVzcywgMSwgKHN0cnVjdCBzeW10YWIgKikgTlVMTCwg MCwKIAkJICAgICAgICAgICAgICAgY2Fub25pY2FsKTsKQEAgLTkyNzcsOSAr OTI1NywxMSBAQCB1bnRpbF9icmVha19jb21tYW5kIChjaGFyICphcmcsIGlu dCBmcm9tX3R0eSwgaW50IGFueXdoZXJlKQogICAvKiBTZXQgYSBicmVha3Bv aW50IHdoZXJlIHRoZSB1c2VyIHdhbnRzIGl0IGFuZCBhdCByZXR1cm4gZnJv bQogICAgICB0aGlzIGZ1bmN0aW9uLiAgKi8KIAotICBpZiAoZGVmYXVsdF9i cmVha3BvaW50X3ZhbGlkKQotICAgIHNhbHMgPSBkZWNvZGVfbGluZV8xICgm YXJnLCAxLCBkZWZhdWx0X2JyZWFrcG9pbnRfc3ltdGFiLAotCQkJICBkZWZh dWx0X2JyZWFrcG9pbnRfbGluZSwgTlVMTCk7CisgIGlmIChsYXN0X2Rpc3Bs YXllZF9jb2RlcG9pbnRfaXNfdmFsaWQgKCkpCisgICAgc2FscyA9IGRlY29k ZV9saW5lXzEgKCZhcmcsIDEsCisJCQkgIGdldF9sYXN0X2Rpc3BsYXllZF9z eW10YWIgKCksCisJCQkgIGdldF9sYXN0X2Rpc3BsYXllZF9saW5lICgpLAor CQkJICBOVUxMKTsKICAgZWxzZQogICAgIHNhbHMgPSBkZWNvZGVfbGluZV8x ICgmYXJnLCAxLCAoc3RydWN0IHN5bXRhYiAqKSBOVUxMLCAwLCBOVUxMKTsK IApAQCAtOTg3NSwxMCArOTg1NywxMSBAQCBjbGVhcl9jb21tYW5kIChjaGFy ICphcmcsIGludCBmcm9tX3R0eSkKIAl4bWFsbG9jIChzaXplb2YgKHN0cnVj dCBzeW10YWJfYW5kX2xpbmUpKTsKICAgICAgIG1ha2VfY2xlYW51cCAoeGZy ZWUsIHNhbHMuc2Fscyk7CiAgICAgICBpbml0X3NhbCAoJnNhbCk7CQkvKiBJ bml0aWFsaXplIHRvIHplcm9lcy4gICovCi0gICAgICBzYWwubGluZSA9IGRl ZmF1bHRfYnJlYWtwb2ludF9saW5lOwotICAgICAgc2FsLnN5bXRhYiA9IGRl ZmF1bHRfYnJlYWtwb2ludF9zeW10YWI7Ci0gICAgICBzYWwucGMgPSBkZWZh dWx0X2JyZWFrcG9pbnRfYWRkcmVzczsKLSAgICAgIHNhbC5wc3BhY2UgPSBk ZWZhdWx0X2JyZWFrcG9pbnRfcHNwYWNlOworCisgICAgICAvKiBTZXQgc2Fs J3MgbGluZSwgc3ltdGFiLCBwYywgYW5kIHBzcGFjZSB0byB0aGUgdmFsdWVz CisJIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGxhc3QgY2FsbCB0byBwcmludF9m cmFtZV9pbmZvLiAgSWYgdGhlCisJIGNvZGVwb2ludCBpcyBub3QgdmFsaWQs IHRoaXMgd2lsbCBzZXQgYWxsIHRoZSBmaWVsZHMgdG8gMC4gKi8KKyAgICAg IHNldF9zYWxfdG9fbGFzdF9kaXNwbGF5ZWRfY29kZXBvaW50ICgmc2FsKTsK ICAgICAgIGlmIChzYWwuc3ltdGFiID09IDApCiAJZXJyb3IgKF8oIk5vIHNv dXJjZSBmaWxlIHNwZWNpZmllZC4iKSk7CiAKQEAgLTExMjAzLDYgKzExMTg2 LDkgQEAgYnJlYWtwb2ludF9yZV9zZXQgKHZvaWQpCiAgIGNyZWF0ZV9sb25n am1wX21hc3Rlcl9icmVha3BvaW50ICgpOwogICBjcmVhdGVfc3RkX3Rlcm1p bmF0ZV9tYXN0ZXJfYnJlYWtwb2ludCAoKTsKICAgY3JlYXRlX2V4Y2VwdGlv bl9tYXN0ZXJfYnJlYWtwb2ludCAoKTsKKworICAvKiBXaGlsZSB3ZSdyZSBh dCBpdCwgcmVzZXQgdGhlIHNraXAgbGlzdCB0b28uICovCisgIHNraXBfcmVf c2V0ICgpOwogfQogDAogLyogUmVzZXQgdGhlIHRocmVhZCBudW1iZXIgb2Yg dGhpcyBicmVha3BvaW50OgpAQCAtMTE2MzUsNyArMTE2MjEsOCBAQCBpbnZh bGlkYXRlX2JwX3ZhbHVlX29uX21lbW9yeV9jaGFuZ2UgKENPUkVfQUREUiBh ZGRyLCBpbnQgbGVuLAogICAgICAgfQogfQogCi0vKiBVc2UgZGVmYXVsdF9i cmVha3BvaW50XydzLCBvciBub3RoaW5nIGlmIHRoZXkgYXJlbid0IHZhbGlk LiAgKi8KKy8qIFVzZSB0aGUgbGFzdCBkaXNwbGF5ZWQgY29kZXBvaW50J3Mg dmFsdWVzLCBvciBub3RoaW5nIAorICAgaWYgdGhleSBhcmVuJ3QgdmFsaWQu ICovCiAKIHN0cnVjdCBzeW10YWJzX2FuZF9saW5lcwogZGVjb2RlX2xpbmVf c3BlY18xIChjaGFyICpzdHJpbmcsIGludCBmdW5maXJzdGxpbmUpCkBAIC0x MTY0NCwxMCArMTE2MzEsMTAgQEAgZGVjb2RlX2xpbmVfc3BlY18xIChjaGFy ICpzdHJpbmcsIGludCBmdW5maXJzdGxpbmUpCiAKICAgaWYgKHN0cmluZyA9 PSAwKQogICAgIGVycm9yIChfKCJFbXB0eSBsaW5lIHNwZWNpZmljYXRpb24u IikpOwotICBpZiAoZGVmYXVsdF9icmVha3BvaW50X3ZhbGlkKQorICBpZiAo bGFzdF9kaXNwbGF5ZWRfY29kZXBvaW50X2lzX3ZhbGlkICgpKQogICAgIHNh bHMgPSBkZWNvZGVfbGluZV8xICgmc3RyaW5nLCBmdW5maXJzdGxpbmUsCi0J CQkgIGRlZmF1bHRfYnJlYWtwb2ludF9zeW10YWIsCi0JCQkgIGRlZmF1bHRf YnJlYWtwb2ludF9saW5lLAorCQkJICBnZXRfbGFzdF9kaXNwbGF5ZWRfc3lt dGFiICgpLAorCQkJICBnZXRfbGFzdF9kaXNwbGF5ZWRfbGluZSAoKSwKIAkJ CSAgTlVMTCk7CiAgIGVsc2UKICAgICBzYWxzID0gZGVjb2RlX2xpbmVfMSAo JnN0cmluZywgZnVuZmlyc3RsaW5lLApkaWZmIC0tZ2l0IGEvZ2RiL2JyZWFr cG9pbnQuaCBiL2dkYi9icmVha3BvaW50LmgKaW5kZXggN2E5YzJkNC4uOWRm MWFlMSAxMDA2NDQKLS0tIGEvZ2RiL2JyZWFrcG9pbnQuaAorKysgYi9nZGIv YnJlYWtwb2ludC5oCkBAIC05NDYsOSArOTQ2LDYgQEAgZXh0ZXJuIHN0cnVj dCBicmVha3BvaW50ICpjbG9uZV9tb21lbnRhcnlfYnJlYWtwb2ludCAoc3Ry dWN0IGJyZWFrcG9pbnQgKmJwa3QpOwogCiBleHRlcm4gdm9pZCBzZXRfaWdu b3JlX2NvdW50IChpbnQsIGludCwgaW50KTsKIAotZXh0ZXJuIHZvaWQgc2V0 X2RlZmF1bHRfYnJlYWtwb2ludCAoaW50LCBzdHJ1Y3QgcHJvZ3JhbV9zcGFj ZSAqLAotCQkJCSAgICBDT1JFX0FERFIsIHN0cnVjdCBzeW10YWIgKiwgaW50 KTsKLQogZXh0ZXJuIHZvaWQgYnJlYWtwb2ludF9pbml0X2luZmVyaW9yIChl bnVtIGluZl9jb250ZXh0KTsKIAogZXh0ZXJuIHN0cnVjdCBjbGVhbnVwICpt YWtlX2NsZWFudXBfZGVsZXRlX2JyZWFrcG9pbnQgKHN0cnVjdCBicmVha3Bv aW50ICopOwpkaWZmIC0tZ2l0IGEvZ2RiL2NsaS9jbGktY21kcy5jIGIvZ2Ri L2NsaS9jbGktY21kcy5jCmluZGV4IDdmZDJmNTAuLjM4NTgwZTkgMTAwNjQ0 Ci0tLSBhL2dkYi9jbGkvY2xpLWNtZHMuYworKysgYi9nZGIvY2xpL2NsaS1j bWRzLmMKQEAgLTE4NSw2ICsxODUsOCBAQCBzdHJ1Y3QgY21kX2xpc3RfZWxl bWVudCAqc2V0Y2hlY2tsaXN0OwogCiBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVu dCAqc2hvd2NoZWNrbGlzdDsKIAorc3RydWN0IGNtZF9saXN0X2VsZW1lbnQg KnNraXBsaXN0OworCiAvKiBDb21tYW5kIHRyYWNpbmcgc3RhdGUuICAqLwog CiBpbnQgc291cmNlX3ZlcmJvc2UgPSAwOwpAQCAtMTMzMCw2ICsxMzMyLDcg QEAgaW5pdF9jbWRfbGlzdHMgKHZvaWQpCiAgIHNob3dwcmludGxpc3QgPSBO VUxMOwogICBzZXRjaGVja2xpc3QgPSBOVUxMOwogICBzaG93Y2hlY2tsaXN0 ID0gTlVMTDsKKyAgc2tpcGxpc3QgPSBOVUxMOwogfQogCiBzdGF0aWMgdm9p ZApAQCAtMTM5NSw3ICsxMzk4LDcgQEAgaW5pdF9jbGlfY21kcyAodm9pZCkK ICAgY2hhciAqc291cmNlX2hlbHBfdGV4dDsKIAogICAvKiBEZWZpbmUgdGhl IGNsYXNzZXMgb2YgY29tbWFuZHMuCi0gICAgIFRoZXkgd2lsbCBhcHBlYXIg aW4gdGhlIGhlbHAgbGlzdCBpbiB0aGUgcmV2ZXJzZSBvZiB0aGlzIG9yZGVy LiAgKi8KKyAgICAgVGhleSB3aWxsIGFwcGVhciBpbiB0aGUgaGVscCBsaXN0 IGluIGFscGhhYmV0aWNhbCBvcmRlci4gICovCiAKICAgYWRkX2NtZCAoImlu dGVybmFscyIsIGNsYXNzX21haW50ZW5hbmNlLCBOVUxMLCBfKCJcCiBNYWlu dGVuYW5jZSBjb21tYW5kcy5cblwKZGlmZiAtLWdpdCBhL2dkYi9jbGkvY2xp LWNtZHMuaCBiL2dkYi9jbGkvY2xpLWNtZHMuaAppbmRleCBlNzlkY2YwLi43 M2NjZGQyIDEwMDY0NAotLS0gYS9nZGIvY2xpL2NsaS1jbWRzLmgKKysrIGIv Z2RiL2NsaS9jbGktY21kcy5oCkBAIC0xMDYsNiArMTA2LDggQEAgZXh0ZXJu IHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpzZXRjaGVja2xpc3Q7CiAKIGV4 dGVybiBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqc2hvd2NoZWNrbGlzdDsK IAorZXh0ZXJuIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpza2lwbGlzdDsK KwogLyogRXhwb3J0ZWQgdG8gZ2RiL3RvcC5jICovCiAKIHZvaWQgaW5pdF9j bWRfbGlzdHMgKHZvaWQpOwpkaWZmIC0tZ2l0IGEvZ2RiL2dkYmNtZC5oIGIv Z2RiL2dkYmNtZC5oCmluZGV4IGMwMmNlNjkuLjYwNmI4MTIgMTAwNjQ0Ci0t LSBhL2dkYi9nZGJjbWQuaAorKysgYi9nZGIvZ2RiY21kLmgKQEAgLTEyNCw2 ICsxMjQsOCBAQCBleHRlcm4gc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKnNl dGNoZWNrbGlzdDsKIAogZXh0ZXJuIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50 ICpzaG93Y2hlY2tsaXN0OwogCitleHRlcm4gc3RydWN0IGNtZF9saXN0X2Vs ZW1lbnQgKnNraXBsaXN0OworCiAvKiBDaGFpbiBjb250YWluaW5nIGFsbCBk ZWZpbmVkICJzYXZlIiBzdWJjb21tYW5kcy4gICovCiAKIGV4dGVybiBzdHJ1 Y3QgY21kX2xpc3RfZWxlbWVudCAqc2F2ZV9jbWRsaXN0OwpkaWZmIC0tZ2l0 IGEvZ2RiL2luZnJ1bi5jIGIvZ2RiL2luZnJ1bi5jCmluZGV4IDhlY2NiNjAu LjZlYTYzM2UgMTAwNjQ0Ci0tLSBhL2dkYi9pbmZydW4uYworKysgYi9nZGIv aW5mcnVuLmMKQEAgLTU0LDYgKzU0LDcgQEAKICNpbmNsdWRlICJpbmxpbmUt ZnJhbWUuaCIKICNpbmNsdWRlICJqaXQuaCIKICNpbmNsdWRlICJ0cmFjZXBv aW50LmgiCisjaW5jbHVkZSAic2tpcC5oIgogCiAvKiBQcm90b3R5cGVzIGZv ciBsb2NhbCBmdW5jdGlvbnMgKi8KIApAQCAtNDY3MSw3ICs0NjcyLDggQEAg cHJvY2Vzc19ldmVudF9zdG9wX3Rlc3Q6CiAJfQogCiAgICAgICAvKiBJZiB3 ZSBoYXZlIGxpbmUgbnVtYmVyIGluZm9ybWF0aW9uIGZvciB0aGUgZnVuY3Rp b24gd2UgYXJlCi0gICAgICAgICB0aGlua2luZyBvZiBzdGVwcGluZyBpbnRv LCBzdGVwIGludG8gaXQuCisJIHRoaW5raW5nIG9mIHN0ZXBwaW5nIGludG8g YW5kIHRoZSBmdW5jdGlvbiBpc24ndCBvbiB0aGUgc2tpcAorCSBsaXN0LCBz dGVwIGludG8gaXQuCiAKICAgICAgICAgIElmIHRoZXJlIGFyZSBzZXZlcmFs IHN5bXRhYnMgYXQgdGhhdCBQQyAoZS5nLiB3aXRoIGluY2x1ZGUKICAgICAg ICAgIGZpbGVzKSwganVzdCB3YW50IHRvIGtub3cgd2hldGhlciAqYW55KiBv ZiB0aGVtIGhhdmUgbGluZQpAQCAtNDY4MCw3ICs0NjgyLDggQEAgcHJvY2Vz c19ldmVudF9zdG9wX3Rlc3Q6CiAJc3RydWN0IHN5bXRhYl9hbmRfbGluZSB0 bXBfc2FsOwogCiAJdG1wX3NhbCA9IGZpbmRfcGNfbGluZSAoZWNzLT5zdG9w X2Z1bmNfc3RhcnQsIDApOwotCWlmICh0bXBfc2FsLmxpbmUgIT0gMCkKKwlp ZiAodG1wX3NhbC5saW5lICE9IDAgJiYKKwkgICAgIWZ1bmN0aW9uX3BjX2lz X21hcmtlZF9mb3Jfc2tpcCAoZWNzLT5zdG9wX2Z1bmNfc3RhcnQpKQogCSAg ewogCSAgICBpZiAoZXhlY3V0aW9uX2RpcmVjdGlvbiA9PSBFWEVDX1JFVkVS U0UpCiAJICAgICAgaGFuZGxlX3N0ZXBfaW50b19mdW5jdGlvbl9iYWNrd2Fy ZCAoZ2RiYXJjaCwgZWNzKTsKZGlmZiAtLWdpdCBhL2dkYi9za2lwLmMgYi9n ZGIvc2tpcC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LmUwODAyNDEKLS0tIC9kZXYvbnVsbAorKysgYi9nZGIvc2tpcC5jCkBAIC0w LDAgKzEsNTczIEBACisvKiBIZWFkZXIgZm9yIEdEQiBsaW5lIGNvbXBsZXRp b24uCisgICBDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cisg ICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICAgdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5z ZSwgb3IKKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u CisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgYnV0IFdJVEhPVVQgQU5Z IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YKKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAgIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgIFlvdSBzaG91bGQg aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlCisgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5v dCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisK KyNpbmNsdWRlICJkZWZzLmgiCisjaW5jbHVkZSAic2tpcC5oIgorI2luY2x1 ZGUgInZhbHVlLmgiCisjaW5jbHVkZSAidmFscHJpbnQuaCIKKyNpbmNsdWRl ICJ1aS1vdXQuaCIKKyNpbmNsdWRlICJnZGJfc3RyaW5nLmgiCisjaW5jbHVk ZSAic3ltdGFiLmgiCisjaW5jbHVkZSAiZ2RiY21kLmgiCisjaW5jbHVkZSAi Y29tbWFuZC5oIgorI2luY2x1ZGUgImNvbXBsZXRlci5oIgorI2luY2x1ZGUg InN0YWNrLmgiCisjaW5jbHVkZSAiYXJjaC11dGlscy5oIgorI2luY2x1ZGUg ImxpbmVzcGVjLmgiCisjaW5jbHVkZSAib2JqZmlsZXMuaCIKKyNpbmNsdWRl ICJleGNlcHRpb25zLmgiCisKK3N0cnVjdCBza2lwbGlzdF9lbnRyeQorewor ICBpbnQgbnVtYmVyOworCisgIC8qIG51bGwgaWYgdGhpcyBpc24ndCBhIHNr aXBsaXN0IGVudHJ5IGZvciBhbiBlbnRpcmUgZmlsZS4KKyAgICAgVGhlIHNr aXBsaXN0IGVudHJ5IG93bnMgdGhpcyBwb2ludGVyLiAqLworICBjaGFyICpm aWxlbmFtZTsKKworICAvKiBUaGUgbmFtZSBvZiB0aGUgbWFya2VkLWZvci1z a2lwIGZ1bmN0aW9uLCBpZiB0aGlzIGlzIGEgc2tpcGxpc3QKKyAgICAgZW50 cnkgZm9yIGEgZnVuY3Rpb24uICBOb3RlIHRoYXQgdGhpcyBtaWdodCBiZSBu b24tbnVsbCBldmVuIGlmCisgICAgIHRoZSBwYyBpcyAwIGlmIHRoZSBlbnRy eSBpcyBwZW5kaW5nIGEgc2hhcmVkIGxpYnJhcnkgbG9hZC4KKworICAgICBU aGUgc2tpcGxpc3QgZW50cnkgb3ducyB0aGlzIHBvaW50ZXIuICovCisgIGNo YXIgKmZ1bmN0aW9uX25hbWU7CisKKyAgLyogMCBpZiB0aGlzIGlzIGEgc2tp cGxpc3QgZW50cnkgZm9yIGFuIGVudGlyZSBmaWxlLCBvciBpZiB0aGlzCisg ICAgIGVudHJ5IHdpbGwgYmUgb24gYSBmdW5jdGlvbiwgcGVuZGluZyBhIHNo YXJlZCBsaWJyYXJ5IGxvYWQuICovCisgIENPUkVfQUREUiBwYzsKKworICAv KiBBcmNoaXRlY3R1cmUgd2UgdXNlZCB0byBjcmVhdGUgdGhlIHNraXBsaXN0 IGVudHJ5LiBNYXkgYmUgbnVsbCAKKyAgICAgaWYgdGhlIGVudHJ5IGlzIHBl bmRpbmcgYSBzaGFyZWQgbGlicmFyeSBsb2FkLiAqLworICBzdHJ1Y3QgZ2Ri YXJjaCAqZ2RiYXJjaDsKKworICBpbnQgZW5hYmxlZDsKKyAgaW50IHBlbmRp bmc7CisKKyAgc3RydWN0IHNraXBsaXN0X2VudHJ5ICpuZXh0OworfTsKKwor c3RhdGljIHZvaWQgc2tpcF9mdW5jdGlvbl9jb21tYW5kIChjaGFyICphcmcs IGludCBmcm9tX3R0eSk7CitzdGF0aWMgdm9pZCBza2lwX2ZpbGVfY29tbWFu ZCAoY2hhciAqYXJnLCBpbnQgZnJvbV90dHkpOworc3RhdGljIHZvaWQgc2tp cF9pbmZvIChjaGFyICphcmcsIGludCBmcm9tX3R0eSk7CisKK3N0YXRpYyB2 b2lkIGFkZF9za2lwbGlzdF9lbnRyeSAoc3RydWN0IHNraXBsaXN0X2VudHJ5 ICplKTsKK3N0YXRpYyB2b2lkIHNraXBfZnVuY3Rpb25fcGMgKENPUkVfQURE UiBwYywgY2hhciAqbmFtZSwKKwkJCSAgICAgIHN0cnVjdCBnZGJhcmNoICph cmNoLAorCQkJICAgICAgaW50IHBlbmRpbmcpOworLy9zdGF0aWMgdm9pZCB0 cnlfcmVzb2x2ZV9wZW5kaW5nX2VudHJ5IChzdHJ1Y3Qgc2tpcGxpc3RfZW50 cnkgKmUpOworc3RhdGljIHN0cnVjdCBnZGJhcmNoICpnZXRfc2FsX2FyY2gg KHN0cnVjdCBzeW10YWJfYW5kX2xpbmUgKnNhbCk7CisKK3N0YXRpYyBzdHJ1 Y3Qgc2tpcGxpc3RfZW50cnkgKnNraXBsaXN0X2VudHJ5X2NoYWluOworc3Rh dGljIGludCBza2lwbGlzdF9lbnRyeV9jb3VudDsKKworI2RlZmluZSBBTExf U0tJUExJU1RfRU5UUklFUyhFKSBcCisgIGZvciAoRSA9IHNraXBsaXN0X2Vu dHJ5X2NoYWluOyBFOyBFID0gRS0+bmV4dCkKKworc3RhdGljIHZvaWQKK3Nr aXBfZmlsZV9jb21tYW5kIChjaGFyICphcmcsIGludCBmcm9tX3R0eSkKK3sK KyAgc3RydWN0IHNraXBsaXN0X2VudHJ5ICplOworICBzdHJ1Y3Qgc3ltdGFi ICpzeW10YWI7CisgIGludCBwZW5kaW5nID0gMDsKKyAgY2hhciAqZmlsZW5h bWUgPSAwOworCisgIC8qIElmIG5vIGFyZ3VtZW50IHdhcyBnaXZlbiwgdHJ5 IHRvIGRlZmF1bHQgdG8gdGhlIGxhc3QKKyAgICAgZGlzcGxheWVkIGNvZGVw b2ludC4gKi8KKyAgaWYgKGFyZyA9PSAwKQorICAgIHsKKyAgICAgIHN5bXRh YiA9IGdldF9sYXN0X2Rpc3BsYXllZF9zeW10YWIgKCk7CisgICAgICBpZiAo c3ltdGFiID09IDApCisJZXJyb3IgKF8oIk5vIGRlZmF1bHQgZmlsZSBub3cu IikpOworICAgICAgZWxzZQorCWZpbGVuYW1lID0gc3ltdGFiLT5maWxlbmFt ZTsKKyAgICB9CisgIGVsc2UKKyAgICB7CisgICAgICBzeW10YWIgPSBsb29r dXBfc3ltdGFiIChhcmcpOworICAgICAgaWYgKHN5bXRhYiA9PSAwKQorCXsK KwkgIGZwcmludGZfZmlsdGVyZWQgKGdkYl9zdGRlcnIsIF8oIk5vIHNvdXJj ZSBmaWxlIG5hbWVkICVzLlxuIiksIGFyZyk7CisJICBpZiAoIW5xdWVyeSAo XygiXAorSWdub3JlIGZpbGUgcGVuZGluZyBmdXR1cmUgc2hhcmVkIGxpYnJh cnkgbG9hZD8gIikpKQorCSAgICByZXR1cm47CisKKwkgIHBlbmRpbmcgPSAx OworCSAgZmlsZW5hbWUgPSBhcmc7CisJfQorICAgICAgZWxzZQorCWZpbGVu YW1lID0gc3ltdGFiLT5maWxlbmFtZTsKKyAgICB9CisKKyAgZSA9IFhaQUxM T0MgKHN0cnVjdCBza2lwbGlzdF9lbnRyeSk7CisgIGUtPmZpbGVuYW1lID0g eHN0cmR1cCAoZmlsZW5hbWUpOworICBlLT5lbmFibGVkID0gMTsKKyAgZS0+ cGVuZGluZyA9IHBlbmRpbmc7CisgIGlmIChzeW10YWIgIT0gMCkKKyAgICBl LT5nZGJhcmNoID0gZ2V0X29iamZpbGVfYXJjaCAoc3ltdGFiLT5vYmpmaWxl KTsKKworICBhZGRfc2tpcGxpc3RfZW50cnkgKGUpOworCisgIHByaW50Zl9m aWx0ZXJlZCAoXygiRmlsZSAlcyB3aWxsIGJlIHNraXBwZWQgd2hlbiBzdGVw cGluZy5cbiIpLCBmaWxlbmFtZSk7Cit9CisKK3N0YXRpYyB2b2lkCitza2lw X2Z1bmN0aW9uX2NvbW1hbmQgKGNoYXIgKmFyZywgaW50IGZyb21fdHR5KQor eworICBDT1JFX0FERFIgZnVuY19wYzsKKyAgY2hhciAqbmFtZSA9IE5VTEw7 CisKKyAgLyogRGVmYXVsdCB0byB0aGUgY3VycmVudCBmdW5jdGlvbiBpZiBu byBhcmd1bWVudCBpcyBnaXZlbi4gKi8KKyAgaWYgKGFyZyA9PSAwKQorICAg IHsKKyAgICAgIENPUkVfQUREUiBwYzsKKyAgICAgIGlmICghbGFzdF9kaXNw bGF5ZWRfY29kZXBvaW50X2lzX3ZhbGlkICgpKQorCWVycm9yIChfKCJObyBk ZWZhdWx0IGZ1bmN0aW9uIG5vdy4iKSk7CisKKyAgICAgIHBjID0gZ2V0X2xh c3RfZGlzcGxheWVkX2FkZHIgKCk7CisgICAgICBpZiAoIWZpbmRfcGNfcGFy dGlhbF9mdW5jdGlvbiAocGMsICZuYW1lLCAmZnVuY19wYywgMCkpCisJewor CSAgZXJyb3IgKF8oIk5vIGZ1bmN0aW9uIGZvdW5kIGNvbnRhaW5pbmcgY3Vy cmVudCBwcm9ncmFtIHBvaW50ICVzLiIpLAorCQkgIHBhZGRyZXNzIChnZXRf Y3VycmVudF9hcmNoICgpLCBwYykpOworCX0KKyAgICAgIHNraXBfZnVuY3Rp b25fcGMgKGZ1bmNfcGMsIG5hbWUsIGdldF9jdXJyZW50X2FyY2ggKCksIDAp OworICAgIH0KKyAgZWxzZQorICAgIHsKKyAgICAgIC8qIERlY29kZSBhcmcu ICBXZSBzZXQgZnVuZmlyc3RsaW5lPTEgc28gZGVjb2RlX2xpbmVfMSB3aWxs IGdpdmUgdXMgdGhlCisJIGZpcnN0IGxpbmUgb2YgdGhlIGZ1bmN0aW9uIHNw ZWNpZmllZCwgaWYgaXQgY2FuLCBhbmQgc28gdGhhdCB3ZSdsbAorCSByZWpl Y3QgdmFyaWFibGUgbmFtZXMgYW5kIHRoZSBsaWtlLiAqLworCisgICAgICBp bnQgaTsKKyAgICAgIGludCBwZW5kaW5nID0gMDsKKyAgICAgIGNoYXIgKm9y aWdfYXJnID0gYXJnOyAvKiBkZWNvZGVfbGluZV8xIG1vZGlmaWVzIHRoZSBh cmcgcG9pbnRlci4gKi8KKyAgICAgIHZvbGF0aWxlIHN0cnVjdCBnZGJfZXhj ZXB0aW9uIGRlY29kZV9leGNlcHRpb247CisgICAgICBzdHJ1Y3Qgc3ltdGFi c19hbmRfbGluZXMgc2FsczsKKworICAgICAgVFJZX0NBVENIKGRlY29kZV9l eGNlcHRpb24sIE5PVF9GT1VORF9FUlJPUikKKwl7CisJICBzYWxzID0gZGVj b2RlX2xpbmVfMSAoJmFyZywgMSwgMCwgMCwgMCk7CisJfQorCisgICAgICBp ZiAoZGVjb2RlX2V4Y2VwdGlvbi5yZWFzb24gPCAwKQorICAgICAgICB7CisJ ICBmcHJpbnRmX2ZpbHRlcmVkIChnZGJfc3RkZXJyLAorCQkJICAgIF8oIk5v IGZ1bmN0aW9uIGZvdW5kIG5hbWVkICVzLlxuIiksIG9yaWdfYXJnKTsKKwor CSAgaWYgKG5xdWVyeSAoXygiXAorSWdub3JlIGZ1bmN0aW9uIHBlbmRpbmcg ZnV0dXJlIHNoYXJlZCBsaWJyYXJ5IGxvYWQ/ICIpKSkKKwkgICAgeworCSAg ICAgIC8qIEFkZCB0aGUgcGVuZGluZyBza2lwbGlzdCBlbnRyeS4gKi8KKwkg ICAgICBza2lwX2Z1bmN0aW9uX3BjICgwLCBvcmlnX2FyZywgMCwgMSk7CisJ ICAgIH0KKworCSAgcmV0dXJuOworCX0KKworICAgICAgaWYgKHNhbHMubmVs dHMgPiAxKQorCWVycm9yIChfKCJTcGVjaWZ5IGp1c3Qgb25lIGZ1bmN0aW9u IGF0IGEgdGltZS4iKSk7CisgICAgICBpZiAoc3RybGVuIChhcmcpICE9IDAp CisJZXJyb3IgKF8oIkp1bmsgYXQgZW5kIG9mIGFyZ3VtZW50cy4iKSk7CisK KyAgICAgIC8qIFRoZSBwYyBkZWNvZGVfbGluZV8xIGdpdmVzIHVzIGlzIHRo ZSBmaXJzdCBsaW5lIG9mIHRoZSBmdW5jdGlvbiwKKwkgYnV0IHdlIGFjdHVh bGx5IHdhbnQgdGhlIGxpbmUgYmVmb3JlIHRoYXQuICBUaGUgY2FsbCB0bwor CSBmaW5kX3BjX3BhcnRpYWxfZnVuY3Rpb24gZ2V0cyB1cyB0aGUgdmFsdWUg d2UgYWN0dWFsbHkgd2FudC4gKi8KKyAgICAgIHsKKwlzdHJ1Y3Qgc3ltdGFi X2FuZF9saW5lICpzYWwgPSAmc2Fscy5zYWxzWzBdOworCUNPUkVfQUREUiBw YyA9IHNhbC0+cGM7CisJQ09SRV9BRERSIGZ1bmNfc3RhcnQgPSAwOworCXN0 cnVjdCBnZGJhcmNoICphcmNoID0gZ2V0X3NhbF9hcmNoIChzYWwpOworCisJ aWYgKCFmaW5kX3BjX3BhcnRpYWxfZnVuY3Rpb24gKHBjLCAmbmFtZSwgJmZ1 bmNfc3RhcnQsIDApKQorCSAgeworCSAgICBlcnJvciAoXygiTm8gZnVuY3Rp b24gZm91bmQgY29udGFpbmluZyBwcm9ncmFtIHBvaW50ICVzLiIpLAorCQkg ICAgIHBhZGRyZXNzIChhcmNoLCBwYykpOworCSAgfQorCisJc2tpcF9mdW5j dGlvbl9wYyAoZnVuY19zdGFydCwgbmFtZSwgYXJjaCwgMCk7CisgICAgICB9 CisgICAgfQorfQorCitzdGF0aWMgdm9pZAorc2tpcF9pbmZvIChjaGFyICph cmcsIGludCBmcm9tX3R0eSkKK3sKKyAgc3RydWN0IHNraXBsaXN0X2VudHJ5 ICplOworICBpbnQgbnVtX3ByaW50YWJsZV9lbnRyaWVzID0gMDsKKyAgaW50 IGVudHJ5X251bSA9IC0xOworICBpbnQgYWRkcmVzc193aWR0aCA9IDEwOwor ICBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyBvcHRzOworICBzdHJ1Y3Qg Y2xlYW51cCAqdGJsX2NoYWluOworCisgIGdldF91c2VyX3ByaW50X29wdGlv bnMgKCZvcHRzKTsKKworICBpZiAoYXJnICE9IDApCisgICAgeworICAgICAg ZW50cnlfbnVtID0gcGFyc2VfYW5kX2V2YWxfbG9uZyAoYXJnKTsKKyAgICB9 CisKKyAgLyogQ291bnQgdGhlIG51bWJlciBvZiByb3dzIGluIHRoZSB0YWJs ZSBhbmQgc2VlIGlmIHdlIG5lZWQgc3BhY2UgZm9yIGEKKyAgICAgNjQtYml0 IGFkZHJlc3MgYW55d2hlcmUuICovCisgIEFMTF9TS0lQTElTVF9FTlRSSUVT IChlKQorICAgIGlmIChlbnRyeV9udW0gPT0gLTEgfHwgZS0+bnVtYmVyID09 IGVudHJ5X251bSkKKyAgICAgIHsKKwludW1fcHJpbnRhYmxlX2VudHJpZXMr KzsKKwlpZiAoZS0+Z2RiYXJjaCAmJiBnZGJhcmNoX2FkZHJfYml0IChlLT5n ZGJhcmNoKSA+IDMyKQorCSAgYWRkcmVzc193aWR0aCA9IDE4OworICAgICAg fQorCisgIGlmIChudW1fcHJpbnRhYmxlX2VudHJpZXMgPT0gMCkKKyAgICB7 CisgICAgICBpZiAoZW50cnlfbnVtID09IC0xKQorCXVpX291dF9tZXNzYWdl ICh1aW91dCwgMCwgXygiTm90IGlnbm9yaW5nIGFueSBmaWxlcyBvciBmdW5j dGlvbnMuXG4iKSk7CisgICAgICBlbHNlCisJdWlfb3V0X21lc3NhZ2UgKHVp b3V0LCAwLAorCQkJXygiTm8gc2tpcGxpc3QgZW50cnkgbnVtYmVyZWQgJWQu XG4iKSwgZW50cnlfbnVtKTsKKworICAgICAgcmV0dXJuOworICAgIH0KKwor ICBpZiAob3B0cy5hZGRyZXNzcHJpbnQpCisgICAgdGJsX2NoYWluCisgICAg ICAgPSBtYWtlX2NsZWFudXBfdWlfb3V0X3RhYmxlX2JlZ2luX2VuZCAodWlv dXQsIDUsIG51bV9wcmludGFibGVfZW50cmllcywKKwkJCQkJICAgICAgIlNr aXBsaXN0VGFibGUiKTsKKyAgZWxzZQorICAgIHRibF9jaGFpbgorICAgICAg ID0gbWFrZV9jbGVhbnVwX3VpX291dF90YWJsZV9iZWdpbl9lbmQgKHVpb3V0 LCA0LCBudW1fcHJpbnRhYmxlX2VudHJpZXMsCisJCQkJCSAgICAgICJTa2lw bGlzdFRhYmxlIik7CisKKyAgdWlfb3V0X3RhYmxlX2hlYWRlciAodWlvdXQs IDcsIHVpX2xlZnQsICJudW1iZXIiLCAiTnVtIik7ICAgICAgICAgICAgICAv KiAxICovCisgIHVpX291dF90YWJsZV9oZWFkZXIgKHVpb3V0LCAxNCwgdWlf bGVmdCwgInR5cGUiLCAiVHlwZSIpOyAgICAgICAgICAgICAgLyogMiAqLwor ICB1aV9vdXRfdGFibGVfaGVhZGVyICh1aW91dCwgMywgdWlfbGVmdCwgImVu YWJsZWQiLCAiRW5iIik7ICAgICAgICAgICAgIC8qIDMgKi8KKyAgaWYgKG9w dHMuYWRkcmVzc3ByaW50KQorICAgIHsKKyAgICAgIHVpX291dF90YWJsZV9o ZWFkZXIgKHVpb3V0LCBhZGRyZXNzX3dpZHRoLCB1aV9sZWZ0LAorCQkJICAg ImFkZHIiLCAiQWRkcmVzcyIpOyAgICAgICAgICAgICAgICAgICAgICAgICAg IC8qIDQgKi8KKyAgICB9CisgIHVpX291dF90YWJsZV9oZWFkZXIgKHVpb3V0 LCA0MCwgdWlfbm9hbGlnbiwgIndoYXQiLCAiV2hhdCIpOyAgICAgICAgICAg LyogNSAqLworICB1aV9vdXRfdGFibGVfYm9keSAodWlvdXQpOworCisgIEFM TF9TS0lQTElTVF9FTlRSSUVTIChlKQorICAgIHsKKyAgICAgIHN0cnVjdCBj bGVhbnVwICplbnRyeV9jaGFpbjsKKworICAgICAgUVVJVDsKKyAgICAgIGlm IChlbnRyeV9udW0gIT0gLTEgJiYgZW50cnlfbnVtICE9IGUtPm51bWJlcikK Kwljb250aW51ZTsKKworICAgICAgZW50cnlfY2hhaW4gPSBtYWtlX2NsZWFu dXBfdWlfb3V0X3R1cGxlX2JlZ2luX2VuZCAodWlvdXQsICJibGtsc3QtZW50 cnkiKTsKKyAgICAgIHVpX291dF9maWVsZF9pbnQgKHVpb3V0LCAibnVtYmVy IiwgZS0+bnVtYmVyKTsgICAgICAgICAgICAgICAgICAgICAvKiAxICovCisK KyAgICAgIGlmIChlLT5mdW5jdGlvbl9uYW1lICE9IDApCisJdWlfb3V0X2Zp ZWxkX3N0cmluZyAodWlvdXQsICJ0eXBlIiwgImZ1bmN0aW9uIik7ICAgICAg ICAgICAgICAgICAvKiAyICovCisgICAgICBlbHNlIGlmIChlLT5maWxlbmFt ZSAhPSAwKQorCXVpX291dF9maWVsZF9zdHJpbmcgKHVpb3V0LCAidHlwZSIs ICJmaWxlIik7ICAgICAgICAgICAgICAgICAgICAgLyogMiAqLworICAgICAg ZWxzZQorCWludGVybmFsX2Vycm9yIChfX0ZJTEVfXywgX19MSU5FX18sIF8o IlwKK1NraXBsaXN0IGVudHJ5IHNob3VsZCBoYXZlIGVpdGhlciBhIGZpbGVu YW1lIG9yIGEgZnVuY3Rpb24gbmFtZS4iKSk7CisKKyAgICAgIGlmIChlLT5l bmFibGVkKQorCXVpX291dF9maWVsZF9zdHJpbmcgKHVpb3V0LCAiZW5hYmxl ZCIsICJ5Iik7ICAgICAgICAgICAgICAgICAgICAgLyogMyAqLworICAgICAg ZWxzZQorCXVpX291dF9maWVsZF9zdHJpbmcgKHVpb3V0LCAiZW5hYmxlZCIs ICJuIik7ICAgICAgICAgICAgICAgICAgICAgLyogMyAqLworCisgICAgICBp ZiAob3B0cy5hZGRyZXNzcHJpbnQpCisJeworCSAgaWYgKGUtPnBjICE9IDAp CisJICAgIHVpX291dF9maWVsZF9jb3JlX2FkZHIgKHVpb3V0LCAiYWRkciIs IGUtPmdkYmFyY2gsIGUtPnBjKTsgICAvKiA0ICovCisJICBlbHNlCisJICAg IHVpX291dF9maWVsZF9zdHJpbmcgKHVpb3V0LCAiYWRkciIsICIiKTsgICAg ICAgICAgICAgICAgICAgICAvKiA0ICovCisJfQorCisgICAgICBpZiAoIWUt PnBlbmRpbmcgJiYgZS0+ZnVuY3Rpb25fbmFtZSAhPSAwKQorCXsKKwkgICBz dHJ1Y3Qgc3ltYm9sICpzeW07CisJICAgZ2RiX2Fzc2VydCAoZS0+cGMgIT0g MCk7CisJICAgc3ltID0gZmluZF9wY19mdW5jdGlvbiAoZS0+cGMpOworCSAg IGlmIChzeW0pCisJICAgICB1aV9vdXRfZmllbGRfZm10ICh1aW91dCwgIndo YXQiLCAiJXMgYXQgJXM6JWQiLAorCQkJICAgICAgIHN5bS0+Z2luZm8ubmFt ZSwKKwkJCSAgICAgICBzeW0tPnN5bXRhYi0+ZmlsZW5hbWUsCisJCQkgICAg ICAgc3ltLT5saW5lKTsKKwkgICBlbHNlCisJICAgICB1aV9vdXRfZmllbGRf c3RyaW5nICh1aW91dCwgIndoYXQiLCAiPyIpOworCX0KKyAgICAgIGVsc2Ug aWYgKGUtPnBlbmRpbmcgJiYgZS0+ZnVuY3Rpb25fbmFtZSAhPSAwKQorCXsK KwkgIHVpX291dF9maWVsZF9mbXQgKHVpb3V0LCAid2hhdCIsICIlcyAoUEVO RElORykiLAorCQkJICAgIGUtPmZ1bmN0aW9uX25hbWUpOworCX0KKyAgICAg IGVsc2UgaWYgKCFlLT5wZW5kaW5nICYmIGUtPmZpbGVuYW1lICE9IDApCisJ dWlfb3V0X2ZpZWxkX3N0cmluZyAodWlvdXQsICJ3aGF0IiwgZS0+ZmlsZW5h bWUpOworICAgICAgZWxzZSBpZiAoZS0+cGVuZGluZyAmJiBlLT5maWxlbmFt ZSAhPSAwKQorCXVpX291dF9maWVsZF9mbXQgKHVpb3V0LCAid2hhdCIsICIl cyAoUEVORElORykiLAorCQkJICBlLT5maWxlbmFtZSk7CisKKyAgICAgIHVp X291dF90ZXh0ICh1aW91dCwgIlxuIik7CisgICAgICBkb19jbGVhbnVwcyAo ZW50cnlfY2hhaW4pOworICAgIH0KKworICBkb19jbGVhbnVwcyAodGJsX2No YWluKTsKK30KKworc3RhdGljIHZvaWQKK3NraXBfZW5hYmxlX2NvbW1hbmQg KGNoYXIgKmFyZywgaW50IGZyb21fdHR5KQoreworICBzdHJ1Y3Qgc2tpcGxp c3RfZW50cnkgKmU7CisgIGludCBlbnRyeV9udW0gPSBwYXJzZV9hbmRfZXZh bF9sb25nIChhcmcpOworICBBTExfU0tJUExJU1RfRU5UUklFUyAoZSkKKyAg ICBpZiAoZS0+bnVtYmVyID09IGVudHJ5X251bSkKKyAgICAgIHsKKwllLT5l bmFibGVkID0gMTsKKwlyZXR1cm47CisgICAgICB9CisKKyAgZXJyb3IgKF8o Ik5vIHNraXBsaXN0IGVudHJ5IG51bWJlcmVkICVkLiIpLCBlbnRyeV9udW0p OworfQorCitzdGF0aWMgdm9pZAorc2tpcF9kaXNhYmxlX2NvbW1hbmQgKGNo YXIgKmFyZywgaW50IGZyb21fdHR5KQoreworICBzdHJ1Y3Qgc2tpcGxpc3Rf ZW50cnkgKmU7CisgIGludCBlbnRyeV9udW0gPSBwYXJzZV9hbmRfZXZhbF9s b25nIChhcmcpOworICBBTExfU0tJUExJU1RfRU5UUklFUyAoZSkKKyAgICBp ZiAoZS0+bnVtYmVyID09IGVudHJ5X251bSkKKyAgICAgIHsKKwllLT5lbmFi bGVkID0gMDsKKwlyZXR1cm47CisgICAgICB9CisKKyAgZXJyb3IgKF8oIk5v IHNraXBsaXN0IGVudHJ5IG51bWJlcmVkICVkLiIpLCBlbnRyeV9udW0pOwor fQorCitzdGF0aWMgdm9pZAorc2tpcF9kZWxldGVfY29tbWFuZCAoY2hhciAq YXJnLCBpbnQgZnJvbV90dHkpCit7CisgIHN0cnVjdCBza2lwbGlzdF9lbnRy eSAqZSwgKmJfcHJldjsKKyAgaW50IGVudHJ5X251bSA9IHBhcnNlX2FuZF9l dmFsX2xvbmcgKGFyZyk7CisKKyAgLyogV2UgZG9uJ3QgbmVlZCB0byB1c2Ug YSBTQUZFIG1hY3JvIGhlcmUgc2luY2Ugd2UgcmV0dXJuIGFzIHNvb24gYXMg d2UKKyAgICAgcmVtb3ZlIGFuIGVsZW1lbnQgZnJvbSB0aGUgbGlzdC4gKi8K KyAgYl9wcmV2ID0gMDsKKyAgQUxMX1NLSVBMSVNUX0VOVFJJRVMgKGUpCisg ICAgaWYgKGUtPm51bWJlciA9PSBlbnRyeV9udW0pCisgICAgICB7CisJaWYg KGJfcHJldiAhPSAwKQorCSAgYl9wcmV2LT5uZXh0ID0gZS0+bmV4dDsKKwll bHNlCisJICBza2lwbGlzdF9lbnRyeV9jaGFpbiA9IGUtPm5leHQ7CisKKwl4 ZnJlZSAoZS0+ZnVuY3Rpb25fbmFtZSk7CisJeGZyZWUgKGUtPmZpbGVuYW1l KTsKKwl4ZnJlZSAoZSk7CisJcmV0dXJuOworICAgICAgfQorICAgIGVsc2UK KyAgICAgIHsKKwliX3ByZXYgPSBlOworICAgICAgfQorCisgIGVycm9yIChf KCJObyBza2lwbGlzdCBlbnRyeSBudW1iZXJlZCAlZC4iKSwgZW50cnlfbnVt KTsKK30KKworLyogQ3JlYXRlIGEgc2tpcGxpc3QgZW50cnkgZm9yIHRoZSBn aXZlbiBwYyBjb3JyZXNwb25kaW5nIHRvIHRoZSBnaXZlbgorICAgZnVuY3Rp b24gbmFtZSBhbmQgYWRkIGl0IHRvIHRoZSBsaXN0LiAqLworc3RhdGljIHZv aWQKK3NraXBfZnVuY3Rpb25fcGMgKENPUkVfQUREUiBwYywgY2hhciAqbmFt ZSwgc3RydWN0IGdkYmFyY2ggKmFyY2gsCisJCSAgaW50IHBlbmRpbmcpCit7 CisgIHN0cnVjdCBza2lwbGlzdF9lbnRyeSAqZSA9IFhaQUxMT0MgKHN0cnVj dCBza2lwbGlzdF9lbnRyeSk7CisgIGUtPnBjID0gcGM7CisgIGUtPmdkYmFy Y2ggPSBhcmNoOworICBlLT5lbmFibGVkID0gMTsKKyAgZS0+cGVuZGluZyA9 IHBlbmRpbmc7CisgIGUtPmZ1bmN0aW9uX25hbWUgPSB4c3RyZHVwIChuYW1l KTsKKworICBhZGRfc2tpcGxpc3RfZW50cnkgKGUpOworCisgIGlmICghcGVu ZGluZykKKyAgICBwcmludGZfZmlsdGVyZWQgKF8oIkZ1bmN0aW9uICVzIGF0 ICVzIHdpbGwgYmUgc2tpcHBlZCB3aGVuIHN0ZXBwaW5nLlxuIiksCisJCSAg ICAgbmFtZSwgcGFkZHJlc3MgKGdldF9jdXJyZW50X2FyY2ggKCksIHBjKSk7 CisgIGVsc2UKKyAgICBwcmludGZfZmlsdGVyZWQgKF8oIkZ1bmN0aW9uICVz IHdpbGwgYmUgc2tpcHBlZCB3aGVuIHN0ZXBwaW5nLCAiCisJCSAgICAgICAi cGVuZGluZyBzaGFyZWQgbGlicmFyeSBsb2FkLlxuIiksCisJCSAgICAgbmFt ZSk7Cit9CisKKy8qIEFkZCB0aGUgZ2l2ZW4gc2tpcGxpc3QgZW50cnkgdG8g b3VyIGxpc3QsIGFuZCBzZXQgdGhlIGVudHJ5J3MgbnVtYmVyLiAqLworc3Rh dGljIHZvaWQKK2FkZF9za2lwbGlzdF9lbnRyeSAoc3RydWN0IHNraXBsaXN0 X2VudHJ5ICplKQoreworICBzdHJ1Y3Qgc2tpcGxpc3RfZW50cnkgKmUxOwor CisgIGUtPm51bWJlciA9ICsrc2tpcGxpc3RfZW50cnlfY291bnQ7CisKKyAg LyogQWRkIHRvIHRoZSBlbmQgb2YgdGhlIGNoYWluIHNvIHRoYXQgdGhlIGxp c3Qgb2YKKyAgICAgc2tpcGxpc3QgZW50cmllcyB3aWxsIGJlIGluIG51bWVy aWNhbCBvcmRlci4gKi8KKworICBlMSA9IHNraXBsaXN0X2VudHJ5X2NoYWlu OworICBpZiAoZTEgPT0gMCkKKyAgICBza2lwbGlzdF9lbnRyeV9jaGFpbiA9 IGU7CisgIGVsc2UKKyAgICB7CisgICAgICB3aGlsZSAoZTEtPm5leHQpCisJ ZTEgPSBlMS0+bmV4dDsKKyAgICAgIGUxLT5uZXh0ID0gZTsKKyAgICB9Cit9 CisKKy8qIERvZXMgdGhlIGdpdmVuIHBjIGNvcnJlc3BvbmQgdG8gdGhlIGJl Z2lubmluZyBvZiBhIHNraXBwZWQgZnVuY3Rpb24/ICovCitpbnQKK2Z1bmN0 aW9uX3BjX2lzX21hcmtlZF9mb3Jfc2tpcCAoQ09SRV9BRERSIHBjKQorewor ICBzdHJ1Y3Qgc3ltdGFiX2FuZF9saW5lIHNhbDsKKyAgY2hhciAqZmlsZW5h bWU7CisgIHN0cnVjdCBza2lwbGlzdF9lbnRyeSAqZTsKKworICBzYWwgPSBm aW5kX3BjX2xpbmUgKHBjLCAwKTsKKyAgZmlsZW5hbWUgPSBzYWwuc3ltdGFi LT5maWxlbmFtZTsKKworICBBTExfU0tJUExJU1RfRU5UUklFUyAoZSkKKyAg ICB7CisgICAgICBpbnQgcGNfbWF0Y2ggPSBlLT5wYyAhPSAwICYmIHBjID09 IGUtPnBjOworICAgICAgaW50IGZpbGVuYW1lX21hdGNoID0gZS0+ZmlsZW5h bWUgIT0gMCAmJiBmaWxlbmFtZSAhPSAwICYmCisJCQkgICBzdHJjbXAgKGZp bGVuYW1lLCBlLT5maWxlbmFtZSkgPT0gMDsKKyAgICAgIGlmIChlLT5lbmFi bGVkICYmICFlLT5wZW5kaW5nICYmIChwY19tYXRjaCB8fCBmaWxlbmFtZV9t YXRjaCkpCisJcmV0dXJuIDE7CisgICAgfQorCisgIHJldHVybiAwOworfQor CisvKiBSZS1zZXQgdGhlIHNraXAgbGlzdCBhZnRlciBzeW1ib2xzIGhhdmUg YmVlbiByZS1sb2FkZWQuICovCit2b2lkCitza2lwX3JlX3NldCAoKQorewor ICBzdHJ1Y3Qgc2tpcGxpc3RfZW50cnkgKmU7CisgIEFMTF9TS0lQTElTVF9F TlRSSUVTIChlKQorICAgIHsKKyAgICAgIGlmIChlLT5maWxlbmFtZSAhPSAw KQorCXsKKwkgIC8qIElmIGl0J3MgYW4gZW50cnkgdGVsbGluZyB1cyB0byBz a2lwIGEgZmlsZSwgYnV0IHRoZSBlbnRyeSBpcworCSAgICAgY3VycmVudGx5 IHBlbmRpbmcgYSBzb2xpYiBsb2FkLCBsZXQncyBzZWUgaWYgd2Ugbm93IGtu b3cKKwkgICAgIGFib3V0IHRoZSBmaWxlLiAqLworCSAgc3RydWN0IHN5bXRh YiAqc3ltdGFiID0gbG9va3VwX3N5bXRhYiAoZS0+ZmlsZW5hbWUpOworCSAg aWYgKHN5bXRhYiAhPSAwKQorCSAgICB7CisJICAgICAgeGZyZWUgKGUtPmZp bGVuYW1lKTsKKwkgICAgICBlLT5maWxlbmFtZSA9IHhzdHJkdXAgKHN5bXRh Yi0+ZmlsZW5hbWUpOworCSAgICAgIGUtPmdkYmFyY2ggPSBnZXRfb2JqZmls ZV9hcmNoIChzeW10YWItPm9iamZpbGUpOworCSAgICAgIGUtPnBlbmRpbmcg PSAwOworCSAgICB9CisJICBlbHNlCisJICAgIHsKKwkgICAgICBlLT5wZW5k aW5nID0gMTsKKwkgICAgfQorCX0KKyAgICAgIGVsc2UgaWYgKGUtPmZ1bmN0 aW9uX25hbWUgIT0gMCkKKyAgICAgICAgeworCSAgY2hhciAqZnVuY19uYW1l ID0gZS0+ZnVuY3Rpb25fbmFtZTsKKwkgIHN0cnVjdCBzeW10YWJzX2FuZF9s aW5lcyBzYWxzOworCSAgdm9sYXRpbGUgc3RydWN0IGdkYl9leGNlcHRpb24g ZGVjb2RlX2V4Y2VwdGlvbjsKKworCSAgVFJZX0NBVENIKGRlY29kZV9leGNl cHRpb24sIE5PVF9GT1VORF9FUlJPUikKKwkgICAgeworCSAgICAgIHNhbHMg PSBkZWNvZGVfbGluZV8xICgmZnVuY19uYW1lLCAxLCAwLCAwLCAwKTsKKwkg ICAgfQorCisJICBpZiAoZGVjb2RlX2V4Y2VwdGlvbi5yZWFzb24gPj0gMCAm JiAKKwkgICAgICBzYWxzLm5lbHRzID09IDEgJiYgc3RybGVuIChmdW5jX25h bWUpID09IDApCisJICAgIHsKKwkgICAgICBzdHJ1Y3Qgc3ltdGFiX2FuZF9s aW5lICpzYWwgPSAmc2Fscy5zYWxzWzBdOworCSAgICAgIENPUkVfQUREUiBw YyA9IHNhbC0+cGM7CisJICAgICAgQ09SRV9BRERSIGZ1bmNfc3RhcnQgPSAw OworCSAgICAgIHN0cnVjdCBnZGJhcmNoICphcmNoID0gZ2V0X3NhbF9hcmNo IChzYWwpOworCisJICAgICAgaWYgKGZpbmRfcGNfcGFydGlhbF9mdW5jdGlv biAocGMsICZlLT5mdW5jdGlvbl9uYW1lLAorCQkgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJmZ1bmNfc3RhcnQsIDApKQorCQl7CisJCSAgZS0+cGVu ZGluZyA9IDA7CisJCSAgZS0+cGMgPSBmdW5jX3N0YXJ0OworCQkgIGUtPmdk YmFyY2ggPSBhcmNoOworCQl9CisJICAgIH0KKwkgIGVsc2UKKwkgICAgewor CSAgICAgIGUtPnBlbmRpbmcgPSAxOworCSAgICB9CisgICAgICAgIH0KKyAg ICB9Cit9CisKKy8qIEhlbHBlciBmdW5jdGlvbiB0byBnZXQgYSBnZGJhcmNo IGZyb20gYSBzeW10YWJfYW5kX2xpbmUuICovCitzdGF0aWMgc3RydWN0IGdk YmFyY2gqCitnZXRfc2FsX2FyY2ggKHN0cnVjdCBzeW10YWJfYW5kX2xpbmUg KnNhbCkKK3sKKyAgaWYgKHNhbC0+c2VjdGlvbikKKyAgICByZXR1cm4gZ2V0 X29iamZpbGVfYXJjaCAoc2FsLT5zZWN0aW9uLT5vYmpmaWxlKTsKKyAgaWYg KHNhbC0+c3ltdGFiKQorICAgIHJldHVybiBnZXRfb2JqZmlsZV9hcmNoIChz YWwtPnN5bXRhYi0+b2JqZmlsZSk7CisgIHJldHVybiBnZXRfY3VycmVudF9h cmNoICgpOworfQorCit2b2lkCitfaW5pdGlhbGl6ZV9zdGVwX3NraXAgKHZv aWQpCit7CisgIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpjOworCisgIHNr aXBsaXN0X2VudHJ5X2NoYWluID0gMDsKKyAgc2tpcGxpc3RfZW50cnlfY291 bnQgPSAwOworCisgIGFkZF9wcmVmaXhfY21kICgic2tpcCIsIGNsYXNzX2Jy ZWFrcG9pbnQsIHNraXBfZnVuY3Rpb25fY29tbWFuZCwgXygiXAorSWdub3Jl IGEgZnVuY3Rpb24gd2hpbGUgc3RlcHBpbmcuXG5cCitza2lwIFtGVU5DVElP TiBOQU1FXVxuXAorSWYgbm8gZnVuY3Rpb24gbmFtZSBpcyBnaXZlbiwgaWdu b3JlIHRoZSBjdXJyZW50IGZ1bmN0aW9uLiIpLAorICAgICAgICAgICAgICAg ICAgJnNraXBsaXN0LCAic2tpcCAiLCAxLCAmY21kbGlzdCk7CisKKyAgYyA9 IGFkZF9jbWQgKCJmaWxlIiwgY2xhc3NfYnJlYWtwb2ludCwgc2tpcF9maWxl X2NvbW1hbmQsIF8oIlwKK0lnbm9yZSBhIGZpbGUgd2hpbGUgc3RlcHBpbmcu XG5cCitza2lwIGZpbGUgW0ZJTEVOQU1FXVxuXAorSWYgbm8gZmlsZW5hbWUg aXMgZ2l2ZW4sIGlnbm9yZSB0aGUgY3VycmVudCBmaWxlLiIpLAorCSAgICAg ICAmc2tpcGxpc3QpOworICBzZXRfY21kX2NvbXBsZXRlciAoYywgZmlsZW5h bWVfY29tcGxldGVyKTsKKworICBjID0gYWRkX2NtZCAoImZ1bmN0aW9uIiwg Y2xhc3NfYnJlYWtwb2ludCwgc2tpcF9mdW5jdGlvbl9jb21tYW5kLCBfKCJc CitJZ25vcmUgYSBmdW5jdGlvbiB3aGlsZSBzdGVwcGluZy5cblwKK3NraXAg ZnVuY3Rpb24gW0ZVTkNUSU9OIE5BTUVdXG5cCitJZiBubyBmdW5jdGlvbiBu YW1lIGlzIGdpdmVuLCBza2lwIHRoZSBjdXJyZW50IGZ1bmN0aW9uLiIpLAor CSAgICAgICAmc2tpcGxpc3QpOworICBzZXRfY21kX2NvbXBsZXRlciAoYywg bG9jYXRpb25fY29tcGxldGVyKTsKKworICBhZGRfY21kICgiZW5hYmxlIiwg Y2xhc3NfYnJlYWtwb2ludCwgc2tpcF9lbmFibGVfY29tbWFuZCwgXygiXAor RW5hYmxlIGEgc2tpcCBlbnRyeS5cblwKK3NraXAgZW5hYmxlIFtOVU1CRVJd IiksCisJICAgJnNraXBsaXN0KTsKKworICBhZGRfY21kICgiZGlzYWJsZSIs IGNsYXNzX2JyZWFrcG9pbnQsIHNraXBfZGlzYWJsZV9jb21tYW5kLCBfKCJc CitEaXNhYmxlIGEgc2tpcCBlbnRyeS5cblwKK3NraXAgZGlzYWJsZSBbTlVN QkVSXSIpLAorCSAgICZza2lwbGlzdCk7CisKKyAgYWRkX2NtZCAoImRlbGV0 ZSIsIGNsYXNzX2JyZWFrcG9pbnQsIHNraXBfZGVsZXRlX2NvbW1hbmQsIF8o IlwKK0RlbGV0ZSBhIHNraXAgZW50cnkuXG5cCitza2lwIGRlbGV0ZSBbTlVN QkVSXSIpLAorICAgICAgICAgICAmc2tpcGxpc3QpOworCisgIGFkZF9pbmZv ICgic2tpcCIsIHNraXBfaW5mbywgXygiXAorU3RhdHVzIG9mIGFsbCBza2lw cywgb3Igb2Ygc2tpcCBOVU1CRVIuXG5cCitUaGUgXCJUeXBlXCIgY29sdW1u IGluZGljYXRlcyBvbmUgb2Y6XG5cCitcdGZpbGUgICAgICAgIC0gaWdub3Jl ZCBmaWxlXG5cCitcdGZ1bmN0aW9uICAgIC0gaWdub3JlZCBmdW5jdGlvbiIp KTsKK30KZGlmZiAtLWdpdCBhL2dkYi9za2lwLmggYi9nZGIvc2tpcC5oCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzZDRjYWUKLS0t IC9kZXYvbnVsbAorKysgYi9nZGIvc2tpcC5oCkBAIC0wLDAgKzEsMjcgQEAK Ky8qIEhlYWRlciBmb3IgR0RCIGxpbmUgY29tcGxldGlvbi4KKyAgIENvcHly aWdodCAoQykgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4K KworICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAgIGl0IHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5CisgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u OyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorICAgKGF0 IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgVGhpcyBw cm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSB1c2VmdWwsCisgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZQorICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y IG1vcmUgZGV0YWlscy4KKworICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk IGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAg IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6 Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKworI2lmICFkZWZpbmVk IChTS0lQX0gpCisjZGVmaW5lIFNLSVBfSAorCisvKiBSZXR1cm5zIDEgaWYg dGhlIGdpdmVuIHBjIGlzIG1hcmtlZCBmb3Igc2tpcCBhbmQgc2hvdWxkbid0 IGJlCisgICBzdGVwcGVkIGludG8uICBPdGhlcndpc2UsIHJldHVybnMgMC4g Ki8KK2ludCBmdW5jdGlvbl9wY19pc19tYXJrZWRfZm9yX3NraXAgKENPUkVf QUREUiBwYyk7CisKKy8qIFJlLXNldCB0aGUgc2tpcCBsaXN0IGFmdGVyIHN5 bWJvbHMgaGF2ZSBiZWVuIHJlbG9hZGVkLiAqLwordm9pZCBza2lwX3JlX3Nl dCAoKTsKKworI2VuZGlmIC8qICFkZWZpbmVkIChTS0lQX0gpICovCmRpZmYg LS1naXQgYS9nZGIvc3RhY2suYyBiL2dkYi9zdGFjay5jCmluZGV4IDA4ODhi NjkuLjI3MGYwZmIgMTAwNjQ0Ci0tLSBhL2dkYi9zdGFjay5jCisrKyBiL2dk Yi9zdGFjay5jCkBAIC03Myw2ICs3MywxMiBAQCBzdGF0aWMgdm9pZCBwcmlu dF9mcmFtZSAoc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lLCBpbnQgcHJpbnRf bGV2ZWwsCiAJCQkgZW51bSBwcmludF93aGF0IHByaW50X3doYXQsICBpbnQg cHJpbnRfYXJncywKIAkJCSBzdHJ1Y3Qgc3ltdGFiX2FuZF9saW5lIHNhbCk7 CiAKK3N0YXRpYyB2b2lkIHNldF9sYXN0X2Rpc3BsYXllZF9jb2RlcG9pbnQg KGludCB2YWxpZCwKKwkJCQkJICBzdHJ1Y3QgcHJvZ3JhbV9zcGFjZSAqcHNw YWNlLAorCQkJCQkgIENPUkVfQUREUiBhZGRyLAorCQkJCQkgIHN0cnVjdCBz eW10YWIgKnN5bXRhYiwKKwkJCQkJICBpbnQgbGluZSk7CisKIC8qIFplcm8g bWVhbnMgZG8gdGhpbmdzIG5vcm1hbGx5OyB3ZSBhcmUgaW50ZXJhY3Rpbmcg ZGlyZWN0bHkgd2l0aCB0aGUKICAgIHVzZXIuICBPbmUgbWVhbnMgcHJpbnQg dGhlIGZ1bGwgZmlsZW5hbWUgYW5kIGxpbmVudW1iZXIgd2hlbiBhCiAgICBm cmFtZSBpcyBwcmludGVkLCBhbmQgZG8gc28gaW4gYSBmb3JtYXQgZW1hY3Mx OC9lbWFjczE5LjIyIGNhbgpAQCAtODAsNiArODYsMTQgQEAgc3RhdGljIHZv aWQgcHJpbnRfZnJhbWUgKHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwgaW50 IHByaW50X2xldmVsLAogICAgY2FzZXMgYW5kIGluIGEgc2xpZ2h0bHkgZGlm ZmVyZW50IHN5bnRheC4gICovCiAKIGludCBhbm5vdGF0aW9uX2xldmVsID0g MDsKKworLyogVGhlc2UgdmFyaWFibGVzIGhvbGQgdGhlIGxhc3QgY29kZXBv aW50IHdlIGRpc3BsYXllZCB0byB0aGUgdXNlci4gIFRoaXMgaXMKKyAgIHdo ZXJlIHdlIGluc2VydCBhIGJyZWFrcG9pbnQgb3IgYSBza2lwbGlzdCBlbnRy eSBieSBkZWZhdWx0LiAqLworc3RhdGljIGludCBsYXN0X2NvZGVwb2ludF92 YWxpZCA9IDA7CitzdGF0aWMgc3RydWN0IHByb2dyYW1fc3BhY2UgKmxhc3Rf Y29kZXBvaW50X3BzcGFjZSA9IDA7CitzdGF0aWMgQ09SRV9BRERSIGxhc3Rf Y29kZXBvaW50X2FkZHIgPSAwOworc3RhdGljIHN0cnVjdCBzeW10YWIgKmxh c3RfY29kZXBvaW50X3N5bXRhYiA9IDA7CitzdGF0aWMgaW50IGxhc3RfY29k ZXBvaW50X2xpbmUgPSAwOwogDAogCiBzdHJ1Y3QgcHJpbnRfc3RhY2tfZnJh bWVfYXJncwpAQCAtNjU4LDkgKzY3Miw5IEBAIHByaW50X2ZyYW1lX2luZm8g KHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwgaW50IHByaW50X2xldmVsLAog ICAgICAgQ09SRV9BRERSIHBjOwogCiAgICAgICBpZiAoZ2V0X2ZyYW1lX3Bj X2lmX2F2YWlsYWJsZSAoZnJhbWUsICZwYykpCi0Jc2V0X2RlZmF1bHRfYnJl YWtwb2ludCAoMSwgc2FsLnBzcGFjZSwgcGMsIHNhbC5zeW10YWIsIHNhbC5s aW5lKTsKKwlzZXRfbGFzdF9kaXNwbGF5ZWRfY29kZXBvaW50ICgxLCBzYWwu cHNwYWNlLCBwYywgc2FsLnN5bXRhYiwgc2FsLmxpbmUpOwogICAgICAgZWxz ZQotCXNldF9kZWZhdWx0X2JyZWFrcG9pbnQgKDAsIDAsIDAsIDAsIDApOwor CXNldF9sYXN0X2Rpc3BsYXllZF9jb2RlcG9pbnQgKDAsIDAsIDAsIDAsIDAp OwogICAgIH0KIAogICBhbm5vdGF0ZV9mcmFtZV9lbmQgKCk7CkBAIC02Njgs NiArNjgyLDg4IEBAIHByaW50X2ZyYW1lX2luZm8gKHN0cnVjdCBmcmFtZV9p bmZvICpmcmFtZSwgaW50IHByaW50X2xldmVsLAogICBnZGJfZmx1c2ggKGdk Yl9zdGRvdXQpOwogfQogCisvKiBSZW1lbWJlciB0aGUgbGFzdCBjb2RlcG9p bnQgd2UgZGlzcGxheWVkLCB3aGljaCB3ZSB1c2UgZS5nLiBhcyB0aGUgcGxh Y2UgdG8KKyAgIHB1dCBhIGJyZWFrcG9pbnQgd2hlbiB0aGUgYGJyZWFrJyBj b21tYW5kIGlzIGludm9rZWQgd2l0aCBubyBhcmd1bWVudHMuICovCitzdGF0 aWMgdm9pZAorc2V0X2xhc3RfZGlzcGxheWVkX2NvZGVwb2ludCAoaW50IHZh bGlkLCBzdHJ1Y3QgcHJvZ3JhbV9zcGFjZSAqcHNwYWNlLAorCQkJICAgICAg Q09SRV9BRERSIGFkZHIsIHN0cnVjdCBzeW10YWIgKnN5bXRhYiwKKwkJCSAg ICAgIGludCBsaW5lKQoreworICBsYXN0X2NvZGVwb2ludF92YWxpZCA9IHZh bGlkOworICBsYXN0X2NvZGVwb2ludF9wc3BhY2UgPSBwc3BhY2U7CisgIGxh c3RfY29kZXBvaW50X2FkZHIgPSBhZGRyOworICBsYXN0X2NvZGVwb2ludF9z eW10YWIgPSBzeW10YWI7CisgIGxhc3RfY29kZXBvaW50X2xpbmUgPSBsaW5l OworfQorCit2b2lkCitjbGVhcl9sYXN0X2Rpc3BsYXllZF9jb2RlcG9pbnQg KCkKK3sKKyAgbGFzdF9jb2RlcG9pbnRfdmFsaWQgPSAwOworICBsYXN0X2Nv ZGVwb2ludF9wc3BhY2UgPSAwOworICBsYXN0X2NvZGVwb2ludF9hZGRyID0g MDsKKyAgbGFzdF9jb2RlcG9pbnRfc3ltdGFiID0gMDsKKyAgbGFzdF9jb2Rl cG9pbnRfbGluZSA9IDA7Cit9CisKK2ludAorbGFzdF9kaXNwbGF5ZWRfY29k ZXBvaW50X2lzX3ZhbGlkICgpCit7CisgIHJldHVybiBsYXN0X2NvZGVwb2lu dF92YWxpZDsKK30KKworc3RydWN0IHByb2dyYW1fc3BhY2UqCitnZXRfbGFz dF9kaXNwbGF5ZWRfcHNwYWNlICgpCit7CisgIGlmIChsYXN0X2NvZGVwb2lu dF92YWxpZCkKKyAgICByZXR1cm4gbGFzdF9jb2RlcG9pbnRfcHNwYWNlOwor ICByZXR1cm4gMDsKK30KKworQ09SRV9BRERSCitnZXRfbGFzdF9kaXNwbGF5 ZWRfYWRkciAoKQoreworICBpZiAobGFzdF9jb2RlcG9pbnRfdmFsaWQpCisg ICAgcmV0dXJuIGxhc3RfY29kZXBvaW50X2FkZHI7CisgIHJldHVybiAwOwor fQorCitzdHJ1Y3Qgc3ltdGFiKgorZ2V0X2xhc3RfZGlzcGxheWVkX3N5bXRh YiAoKQoreworICBpZiAobGFzdF9jb2RlcG9pbnRfdmFsaWQpCisgICAgcmV0 dXJuIGxhc3RfY29kZXBvaW50X3N5bXRhYjsKKyAgcmV0dXJuIDA7Cit9CisK K2ludAorZ2V0X2xhc3RfZGlzcGxheWVkX2xpbmUgKCkKK3sKKyAgaWYgKGxh c3RfY29kZXBvaW50X3ZhbGlkKQorICAgIHJldHVybiBsYXN0X2NvZGVwb2lu dF9saW5lOworICByZXR1cm4gMDsKK30KKwordm9pZAorc2V0X3NhbF90b19s YXN0X2Rpc3BsYXllZF9jb2RlcG9pbnQgKHN0cnVjdCBzeW10YWJfYW5kX2xp bmUgKnNhbCkKK3sKKyAgaWYgKGxhc3RfY29kZXBvaW50X3ZhbGlkKQorICAg IHsKKyAgICAgIHNhbC0+cHNwYWNlID0gbGFzdF9jb2RlcG9pbnRfcHNwYWNl OworICAgICAgc2FsLT5wYyA9IGxhc3RfY29kZXBvaW50X2FkZHI7CisgICAg ICBzYWwtPnN5bXRhYiA9IGxhc3RfY29kZXBvaW50X3N5bXRhYjsKKyAgICAg IHNhbC0+bGluZSA9IGxhc3RfY29kZXBvaW50X2xpbmU7CisgICAgfQorICBl bHNlCisgICAgeworICAgICAgc2FsLT5wc3BhY2UgPSAwOworICAgICAgc2Fs LT5wYyA9IDA7CisgICAgICBzYWwtPnN5bXRhYiA9IDA7CisgICAgICBzYWwt PmxpbmUgPSAwOworICAgIH0KK30KKworCiAvKiBBdHRlbXB0IHRvIG9idGFp biB0aGUgRlVOTkFNRSwgRlVOTEFORyBhbmQgb3B0aW9uYWxseSBGVU5DUCBv ZiB0aGUgZnVuY3Rpb24KICAgIGNvcnJlc3BvbmRpbmcgdG8gRlJBTUUuICAq LwogCmRpZmYgLS1naXQgYS9nZGIvc3RhY2suaCBiL2dkYi9zdGFjay5oCmlu ZGV4IDNjY2U2MjMuLmQ2NzgzYjYgMTAwNjQ0Ci0tLSBhL2dkYi9zdGFjay5o CisrKyBiL2dkYi9zdGFjay5oCkBAIC0zOCw0ICszOCwxNCBAQCB2b2lkIGl0 ZXJhdGVfb3Zlcl9ibG9ja19sb2NhbF92YXJzIChzdHJ1Y3QgYmxvY2sgKmJs b2NrLAogCQkJCSAgICBpdGVyYXRlX292ZXJfYmxvY2tfYXJnX2xvY2FsX3Zh cnNfY2IgY2IsCiAJCQkJICAgIHZvaWQgKmNiX2RhdGEpOwogCisvKiBHZXQg b3Igc2V0IHRoZSBsYXN0IGRpc3BsYXllZCBjb2RlcG9pbnQsIHdoaWNoIGlz LCBlLmcuIHdoZXJlIHdlIHNldCBhCisgICBicmVha3BvaW50IHdoZW4gYGJy ZWFrJyBpcyBzdXBwbGllZCB3aXRoIG5vIGFyZ3VtZW50cy4gKi8KK3ZvaWQg Y2xlYXJfbGFzdF9kaXNwbGF5ZWRfY29kZXBvaW50ICgpOworaW50IGxhc3Rf ZGlzcGxheWVkX2NvZGVwb2ludF9pc192YWxpZCAoKTsKK3N0cnVjdCBwcm9n cmFtX3NwYWNlKiBnZXRfbGFzdF9kaXNwbGF5ZWRfcHNwYWNlICgpOworQ09S RV9BRERSIGdldF9sYXN0X2Rpc3BsYXllZF9hZGRyICgpOworc3RydWN0IHN5 bXRhYiogZ2V0X2xhc3RfZGlzcGxheWVkX3N5bXRhYiAoKTsKK2ludCBnZXRf bGFzdF9kaXNwbGF5ZWRfbGluZSAoKTsKK3ZvaWQgc2V0X3NhbF90b19sYXN0 X2Rpc3BsYXllZF9jb2RlcG9pbnQgKHN0cnVjdCBzeW10YWJfYW5kX2xpbmUg KnNhbCk7CisKICNlbmRpZiAvKiAjaWZuZGVmIFNUQUNLX0ggKi8KZGlmZiAt LWdpdCBhL2dkYi9zeW1maWxlLmMgYi9nZGIvc3ltZmlsZS5jCmluZGV4IGNl YzY4NzAuLjY1YjA3MjMgMTAwNjQ0Ci0tLSBhL2dkYi9zeW1maWxlLmMKKysr IGIvZ2RiL3N5bWZpbGUuYwpAQCAtNTYsNiArNTYsNyBAQAogI2luY2x1ZGUg ImVsZi1iZmQuaCIKICNpbmNsdWRlICJzb2xpYi5oIgogI2luY2x1ZGUgInJl bW90ZS5oIgorI2luY2x1ZGUgInN0YWNrLmgiCiAKICNpbmNsdWRlIDxzeXMv dHlwZXMuaD4KICNpbmNsdWRlIDxmY250bC5oPgpAQCAtMjc4NSw3ICsyNzg2 LDcgQEAgY2xlYXJfc3ltdGFiX3VzZXJzIChpbnQgYWRkX2ZsYWdzKQogICBj bGVhcl9kaXNwbGF5cyAoKTsKICAgaWYgKChhZGRfZmxhZ3MgJiBTWU1GSUxF X0RFRkVSX0JQX1JFU0VUKSA9PSAwKQogICAgIGJyZWFrcG9pbnRfcmVfc2V0 ICgpOwotICBzZXRfZGVmYXVsdF9icmVha3BvaW50ICgwLCBOVUxMLCAwLCAw LCAwKTsKKyAgY2xlYXJfbGFzdF9kaXNwbGF5ZWRfY29kZXBvaW50ICgpOwog ICBjbGVhcl9wY19mdW5jdGlvbl9jYWNoZSAoKTsKICAgb2JzZXJ2ZXJfbm90 aWZ5X25ld19vYmpmaWxlIChOVUxMKTsKIApkaWZmIC0tZ2l0IGEvZ2RiL3Rl c3RzdWl0ZS9DaGFuZ2VMb2cgYi9nZGIvdGVzdHN1aXRlL0NoYW5nZUxvZwpp bmRleCBjOTY0ZjVjLi5hMTFkOTc4IDEwMDY0NAotLS0gYS9nZGIvdGVzdHN1 aXRlL0NoYW5nZUxvZworKysgYi9nZGIvdGVzdHN1aXRlL0NoYW5nZUxvZwpA QCAtMSwzICsxLDEzIEBACisyMDExLTA0LTIzICBKdXN0aW4gTGViYXIgPGp1 c3Rpbi5sZWJhckBnbWFpbC5jb20+CisKKwl0ZXN0c3VpdGUvZ2RiLmJhc2Uv c2tpcC1zb2xpYi1saWIuYzogTmV3CisJdGVzdHN1aXRlL2dkYi5iYXNlL3Nr aXAtc29saWItbWFpbi5jOiBOZXcKKwl0ZXN0c3VpdGUvZ2RiLmJhc2Uvc2tp cC1zb2xpYi5leHA6IE5ldworCXRlc3RzdWl0ZS9nZGIuYmFzZS9za2lwLmM6 IE5ldworCXRlc3RzdWl0ZS9nZGIuYmFzZS9za2lwLmV4cDogTmV3CisJdGVz dHN1aXRlL2dkYi5iYXNlL3NraXAxLmM6IE5ldworCXRlc3RzdWl0ZS9nZGIu YmFzZS9NYWtlZmlsZS5pbjogQWRkaW5nIG5ldyBmaWxlcy4KKwogMjAxMS0w NC0yMCAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQu Y29tPgogCiAJKiBnZGIuY3AvY3Bjb21wbGV0aW9uLmV4cCAoY29tcGxldGUg Y2xhc3MgbWV0aG9kcykKZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2Ri LmJhc2UvTWFrZWZpbGUuaW4gYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL01h a2VmaWxlLmluCmluZGV4IDcyZjFiYTQuLjdjZWIxMjEgMTAwNjQ0Ci0tLSBh L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvTWFrZWZpbGUuaW4KKysrIGIvZ2Ri L3Rlc3RzdWl0ZS9nZGIuYmFzZS9NYWtlZmlsZS5pbgpAQCAtMzAsOCArMzAs OCBAQCBFWEVDVVRBQkxFUyA9IGEyLXJ1biBhZHZhbmNlIGFsbC10eXBlcyBh bm5vdGExIGFubm90YTEtd2F0Y2hfdGhyZWFkX251bSBcCiAJc2Vwc3ltdGFi LmRlYnVnIHNlcHN5bXRhYi5zdHJpcHBlZCBzZXRzaG93IHNldHZhciBzaG1h aW4gc2hyZWxvYyBcCiAJc2lnYWxsIHNpZ2FsdHN0YWNrIHNpZ2JwdCBzaWdj aGxkIHNpZ2luZm8gc2lnaW5mby1hZGRyIFwKIAlzaWdpbmZvLWluZmNhbGwg c2lnaW5mby1vYmogc2lnbmFscyBzaWdudWxsIHNpZ3JlcGVhdCBzaWdzdGVw IFwKLQlzaXplb2Ygc29saWIgc29saWItY29ycnVwdGVkIHNvbGliLWRpc3Bs YXktbWFpbiBzb2xpYi1ub2RpciBcCi0Jc29saWItb3ZlcmxhcC1tYWluLTB4 NDAwMDAwMDAgc29saWItc3ltYm9sLW1haW4gc29saWItd2VhayBcCisJc2l6 ZW9mIHNraXAgc2tpcC1zb2xpYiBzb2xpYiBzb2xpYi1jb3JydXB0ZWQgc29s aWItZGlzcGxheS1tYWluCisJc29saWItbm9kaXIgc29saWItb3ZlcmxhcC1t YWluLTB4NDAwMDAwMDAgc29saWItc3ltYm9sLW1haW4gc29saWItd2VhayBc CiAJc29saWItd2Vhay1saWIyIHNvbGliX3NsIHNvLWltcGwtbGQgc28taW5k ci1jbCBcCiAJc3RhY2stY2hlY2tpbmcgc3RhcnQgc3RlcC1icmVhayBzdGVw LWJ0IHN0ZXAtbGluZSBzdGVwLXJlc3VtZS1pbmZjYWxsIFwKIAlzdGVwLXRl c3Qgc3RvcmUgc3RydWN0cy10KiBzdHJ1Y3RzMiBzdHJ1Y3RzMyBcCmRpZmYg LS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NraXAtc29saWItbGli LmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NraXAtc29saWItbGliLmMK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzkyY2QwMQot LS0gL2Rldi9udWxsCisrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2tp cC1zb2xpYi1saWIuYwpAQCAtMCwwICsxLDExIEBACisvKiBTaW1wbGUgc2hh cmVkIGxpYnJhcnkgKi8KKworaW50IHNxdWFyZShpbnQgbnVtKQoreworICBy ZXR1cm4gbXVsdGlwbHkobnVtLCBudW0pOworfQorCitpbnQgbXVsdGlwbHko aW50IGEsIGludCBiKQoreworICByZXR1cm4gYSAqIGI7Cit9CmRpZmYgLS1n aXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NraXAtc29saWItbWFpbi5j IGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9za2lwLXNvbGliLW1haW4uYwpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NDZiYjVmCi0t LSAvZGV2L251bGwKKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9za2lw LXNvbGliLW1haW4uYwpAQCAtMCwwICsxLDYgQEAKK2ludCBzcXVhcmUoaW50 IG51bSk7CisKK2ludCBtYWluKCkKK3sKKyAgcmV0dXJuIHNxdWFyZSgwKTsK K30KZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2tpcC1z b2xpYi5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NraXAtc29saWIu ZXhwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk1MzBh YTAKLS0tIC9kZXYvbnVsbAorKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNl L3NraXAtc29saWIuZXhwCkBAIC0wLDAgKzEsMTI5IEBACisjICAgQ29weXJp Z2h0IDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKKyMg VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyMgaXQgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNo ZWQgYnkKKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy IHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKyMgKGF0IHlvdXIgb3B0 aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgVGhpcyBwcm9ncmFtIGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm dWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBv ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUK KyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls cy4KKyMKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyMgYWxvbmcgd2l0aCB0 aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzLz4uCisKKyMgVGhpcyBmaWxlIHdhcyB3cml0dGVuIGJ5IEp1 c3RpbiBMZWJhci4gKGp1c3Rpbi5sZWJhckBnbWFpbC5jb20pCisKKyMKKyMg VGVzdHMgc2tpcHBpbmcgc2hhcmVkIGxpYnJhcmllcy4KKyMKKworIyBUaGlz IG9ubHkgd29ya3Mgb24gR05VL0xpbnV4LgoraWYgeyAhW2lzbmF0aXZlXSB8 fCBbaXNfcmVtb3RlIGhvc3RdIHx8ICFbaXN0YXJnZXQgKi1saW51eCpdIHx8 IFtza2lwX3NobGliX3Rlc3RzXX0geworICAgIGNvbnRpbnVlCit9CisKK3Nl dCB0ZXN0ICJza2lwLXNvbGliIgorc2V0IHNyY2ZpbGVfbWFpbiAiJHt0ZXN0 fS1tYWluLmMiCitzZXQgYmluZmlsZV9tYWluICIke29iamRpcn0vJHtzdWJk aXJ9LyR7dGVzdH0tdGVzdCIKK3NldCBzcmNmaWxlX2xpYiAiJHt0ZXN0fS1s aWIuYyIKK3NldCBsaWJuYW1lICJsaWIke3Rlc3R9Igorc2V0IGJpbmZpbGVf bGliICR7b2JqZGlyfS8ke3N1YmRpcn0vJHtsaWJuYW1lfS5zbworCisjCisj IENvbXBpbGUgb3VyIHByb2dyYW0gdW5kZXIgdGVzdC4gIFRoZSBtYWluIHBy b2dyYW0gcmVmZXJlbmNlcyBhIHNoYXJlZCBsaWJyYXJ5CisjIGxpYnNraXAt c29saWIuc28sIHdoaWNoIGNvbnRhaW5zIHR3byBmdW5jdGlvbnMsIHNxdWFy ZSgpLCB3aGljaCBpcworIyByZWZlcmVuY2VkIGJ5IHRoZSBtYWluIHByb2dy YW0sIGFuZCBtdWx0aXBseSgpLCB3aGljaCBpcyBub3QgcmVmZXJlbmNlZCBi eQorIyB0aGUgbWFpbiBwcm9ncmFtLgorIworCitpZiB7W2dkYl9jb21waWxl X3NobGliICR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlX2xpYn0gJHti aW5maWxlX2xpYn0gW2xpc3QgZGVidWcgYWRkaXRpb25hbF9mbGFncz0tZlBJ QyAtV2wsLXNvbmFtZSwke2xpYm5hbWV9LnNvXV0gIT0gIiJ9IHsKKyAgICBy ZXR1cm4gLTEKK30KKworaWYge1tnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7 c3ViZGlyfS8ke3NyY2ZpbGVfbWFpbn0iICIke2JpbmZpbGVfbWFpbn0ubyIg b2JqZWN0IGRlYnVnXSAhPSAiIn0geworICAgIHJldHVybiAtMQorfQorCitp ZiB7W2dkYl9jb21waWxlICIke2JpbmZpbGVfbWFpbn0ubyIgIiR7YmluZmls ZV9tYWlufSIgZXhlY3V0YWJsZSBcCisgICAgICAgICAgICAgICAgIFtsaXN0 IGRlYnVnICJhZGRpdGlvbmFsX2ZsYWdzPS1MJHtvYmpkaXJ9LyR7c3ViZGly fSAtbCR7dGVzdH0gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAtV2wsLXJwYXRoPSR7b2JqZGlyfS8ke3N1YmRp cn0iXV0gIT0gIiJ9IHsKKyAgICByZXR1cm4gLTEKK30KKworZ2RiX3N0YXJ0 CitnZGJfbG9hZCAke2JpbmZpbGVfbWFpbn0KKworIworIyBBdCB0aGlzIHBv aW50LCBpZiB3ZSB0cnkgdG8gc2tpcCB0aGUgZmlsZSAke3NyY2ZpbGVfbGli fSBvciB0aGUgZnVuY3Rpb24KKyMgbXVsdGlwbHkoKSwgd2Ugc2hvdWxkIGdl dCBhIHByb21wdCBhc2tpbmcgdXMgaWYgd2Ugd2FudCB0byBlbmFibGUgdGhl CisjIHNraXAgZW50cnkgcGVuZGluZyBhIHNoYXJlZCBsaWJyYXJ5IGxvYWQu CisjCisKK2dkYl90ZXN0ICJza2lwIGZpbGUgJHtzcmNmaWxlX2xpYn0iIFwK KyJGaWxlICR7c3JjZmlsZV9saWJ9IHdpbGwgYmUgc2tpcHBlZCB3aGVuIHN0 ZXBwaW5nLiIgXAorImlnbm9yaW5nIGZpbGUgaW4gc29saWIiIFwKKyJObyBz b3VyY2UgZmlsZSBuYW1lZCAke3NyY2ZpbGVfbGlifS4qCitJZ25vcmUgZmls ZSBwZW5kaW5nIGZ1dHVyZSBzaGFyZWQgbGlicmFyeSBsb2FkLioiXAorInki CisKKyMKKyMgRG9lcyBpbmZvIHNraXAgbGlzdCB0aGlzIGVudHJ5IGFzIHBl bmRpbmc/CisjCitnZGJfdGVzdCAiaW5mbyBza2lwIiBcCisiTnVtXFxzK1R5 cGVcXHMrRW5iXFxzK0FkZHJlc3NcXHMrV2hhdFxccyoKKzFcXHMrZmlsZVxc cyt5XFxzK1xccyske3NyY2ZpbGVfbGlifSBcXChQRU5ESU5HXFwpXFxzKiIg XAorImluZm8gc2tpcCB3aXRoIHBlbmRpbmcgZmlsZSIKKworaWYgIVtydW50 b19tYWluXSB7IGZhaWwgInNraXAgdGVzdHMgc3VwcHJlc3NlZCIgfQorCisj CisjIFdlIHNob3VsZG4ndCBzdGVwIGludG8gc3F1YXJlKCksIHNpbmNlIHdl IHNraXBwZWQgc2tpcC1zb2xpYi1saWIuYy4KKyMKK2dkYl90ZXN0ICJzdGVw IiAiIgorZ2RiX3Rlc3QgImJ0IiAiIzBcXHMrbWFpbi4qIiAic3RlcCBhZnRl ciBpZ25vcmluZyBzb2xpYiBmaWxlLiIKKworIworIyBPdXIgZW50cnkgc2hv dWxkIG5vIGxvbmdlciBiZSBwZW5kaW5nLiAgTm90ZSB0aGF0IHdlIHVuZm9y dHVuYXRlbHkgbmVlZCB0byBkbworIyBhdCBsZWFzdCBvbmUgc3RlcCBiZWZv cmUgdGhlIGVudHJ5IHdpbGwgYmUgdW5tYXJrZWQgYXMgcGVuZGluZy4KKyMK K2dkYl90ZXN0ICJpbmZvIHNraXAiIFwKKyJOdW1cXHMrVHlwZVxccytFbmJc XHMrQWRkcmVzc1xccytXaGF0XFxzKgorMVxccytmaWxlXFxzK3lcXHMrXFxz Ky4qJHtzcmNmaWxlX2xpYn1cXHMqIiBcCisiaW5mbyBza2lwIHdpdGggcGVu ZGluZyBmaWxlIgorCisjCisjIE5vdyByZXN0YXJ0IGdkYiBhbmQgdGVzdGlu ZyBpZ25vcmluZyBvZiBhIGZ1bmN0aW9uIGluc2lkZSBhIHNvbGliLgorIwor Z2RiX2V4aXQKK2dkYl9zdGFydAorZ2RiX2xvYWQgJHtiaW5maWxlX21haW59 CisKK2dkYl90ZXN0ICJza2lwIGZ1bmN0aW9uIG11bHRpcGx5IiBcCisiRnVu Y3Rpb24gbXVsdGlwbHkgd2lsbCBiZSBza2lwcGVkIHdoZW4gc3RlcHBpbmcs IHBlbmRpbmcgc2hhcmVkIGxpYnJhcnkgbG9hZC4iIFwKKyJpZ25vcmluZyBm dW5jdGlvbiBpbiBzb2xpYiIgXAorIk5vIGZ1bmN0aW9uIGZvdW5kIG5hbWVk IG11bHRpcGx5Li4qCitJZ25vcmUgZnVuY3Rpb24gcGVuZGluZyBmdXR1cmUg c2hhcmVkIGxpYnJhcnkgbG9hZC4qIlwKKyJ5IgorCitpZiAhW3J1bnRvX21h aW5dIHsgZmFpbCAic2tpcCB0ZXN0cyBzdXBwcmVzc2VkIiB9CisKKyMKKyMg T3VyIGZpcnN0IHN0ZXAgc2hvdWxkIHRha2UgdXMgaW50byBzcXVhcmUuCisj CitnZGJfdGVzdCAic3RlcCIgInNxdWFyZS4qIgorCisjCisjIE5vdyBvdXIg ZW50cnkgc2hvdWxkIG5vIGxvbmdlciBiZSBwZW5kaW5nLgorIworZ2RiX3Rl c3QgImluZm8gc2tpcCIgXAorIk51bVxccytUeXBlXFxzK0VuYlxccytBZGRy ZXNzXFxzK1doYXRcXHMqCisxXFxzK2Z1bmN0aW9uXFxzK3lcXHMrMHhcWzAt OWEtZlxdK1xccyttdWx0aXBseSBhdCAuKiR7c3JjZmlsZV9saWJ9Oi4qXFxz KiIgXAorCisjCisjIFRoaXMgc3RlcCBzaG91bGRuJ3QgZ28gaW50byBtdWx0 aXBseSAtLSB3ZSBzaG91bGQgc2tpcCBpdCBhbmQgZ28gb24gdG8gdGhlCisj IGxhc3QgbGluZSBvZiBzcXVhcmUuCisjCitnZGJfdGVzdCAic3RlcCIgIiIK K2dkYl90ZXN0ICJidCIgIiMwXFxzK3NxdWFyZS4qIgpkaWZmIC0tZ2l0IGEv Z2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9za2lwLmMgYi9nZGIvdGVzdHN1aXRl L2dkYi5iYXNlL3NraXAuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi41NjViYTkzCi0tLSAvZGV2L251bGwKKysrIGIvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYmFzZS9za2lwLmMKQEAgLTAsMCArMSwxMyBAQAoraW50IGZv bygpOworaW50IGJhcigpOworaW50IGJheihpbnQsIGludCk7CisKK2ludCBt YWluKCkKK3sKKyAgcmV0dXJuIGJheihmb28oKSwgYmFyKCkpOworfQorCitp bnQgZm9vKCkKK3sKKyAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9nZGIv dGVzdHN1aXRlL2dkYi5iYXNlL3NraXAuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9n ZGIuYmFzZS9za2lwLmV4cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi5mNTJhMGUyCi0tLSAvZGV2L251bGwKKysrIGIvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYmFzZS9za2lwLmV4cApAQCAtMCwwICsxLDE0MSBAQAorIyAg IENvcHlyaWdodCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j LgorCisjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisjIGl0IHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5CisjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247 IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisjIChhdCB5 b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjCisjIFRoaXMgcHJv Z3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT ZWUgdGhlCisjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl IGRldGFpbHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisjIGFsb25n IHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cu Z251Lm9yZy9saWNlbnNlcy8+LgorCisjIFRoaXMgZmlsZSB3YXMgd3JpdHRl biBieSBKdXN0aW4gTGViYXIuIChqdXN0aW4ubGViYXJAZ21haWwuY29tKQor CitpZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5nIHNraXAuZXhwICJza2lwIiBc CisgICAgICAgICAgICAgICAgICAgICAgICAgIHtza2lwLmMgc2tpcDEuYyB9 IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAge2RlYnVnIG5vd2Fybmlu Z3N9XSB9IHsKKyAgICByZXR1cm4gLTEKK30KKworc2V0IHNyY2ZpbGUgc2tp cC5jCitzZXQgc3JjZmlsZTEgc2tpcDEuYworCisjCisjIFJpZ2h0IGFmdGVy IHdlIHN0YXJ0IGdkYiwgdGhlcmUncyBubyBkZWZhdWx0IGZpbGUgb3IgZnVu Y3Rpb24gdG8gc2tpcC4KKyMKK2dkYl90ZXN0ICJza2lwIGZpbGUiICJObyBk ZWZhdWx0IGZpbGUgbm93LiIKK2dkYl90ZXN0ICJza2lwIGZ1bmN0aW9uIiAi Tm8gZGVmYXVsdCBmdW5jdGlvbiBub3cuIgorZ2RiX3Rlc3QgInNraXAiICJO byBkZWZhdWx0IGZ1bmN0aW9uIG5vdy4iCisKK2lmICFbcnVudG9fbWFpbl0g eyBmYWlsICJza2lwIHRlc3RzIHN1cHByZXNzZWQiIH0KKworIworIyBUZXN0 IHxpbmZvIHNraXB8IHdpdGggYW4gZW1wdHkgc2tpcGxpc3QuCisjCitnZGJf dGVzdCAiaW5mbyBza2lwIiAiTm90IGlnbm9yaW5nIGFueSBmaWxlcyBvciBm dW5jdGlvbnNcLiIgImluZm8gc2tpcCBlbXB0eSIKKworIworIyBDcmVhdGUg YSBza2lwbGlzdCBlbnRyeSBmb3IgdGhlIGN1cnJlbnQgZmlsZSBhbmQgZnVu Y3Rpb24uCisjCitnZGJfdGVzdCAic2tpcCBmaWxlIiAiRmlsZSAuKiRzcmNm aWxlIHdpbGwgYmUgc2tpcHBlZCB3aGVuIHN0ZXBwaW5nXC4iCitnZGJfdGVz dCAic2tpcCIgIkZ1bmN0aW9uIG1haW4gYXQgLiogd2lsbCBiZSBza2lwcGVk IHdoZW4gc3RlcHBpbmdcLiIKKworIworIyBDcmVhdGUgYSBza2lwbGlzdCBl bnRyeSBmb3IgYSBzcGVjaWZpZWQgZmlsZSBhbmQgZnVuY3Rpb24uCisjCitn ZGJfdGVzdCAic2tpcCBmaWxlIHNraXAxLmMiICJGaWxlIC4qJHNyY2ZpbGUx IHdpbGwgYmUgc2tpcHBlZCB3aGVuIHN0ZXBwaW5nXC4iCitnZGJfdGVzdCAi c2tpcCBmdW5jdGlvbiBiYXoiICJGdW5jdGlvbiBiYXogYXQgLiogd2lsbCBi ZSBza2lwcGVkIHdoZW4gc3RlcHBpbmdcLiIKKworIworIyBUZXN0IGJhZCBz a2lwbGlzdCBlbnRyeSBtb2RpZmljYXRpb24gY29tbWFuZHMKKyMKK2dkYl90 ZXN0ICJza2lwIGVuYWJsZSA5OTkiICJObyBza2lwbGlzdCBlbnRyeSBudW1i ZXJlZCA5OTkuIgorZ2RiX3Rlc3QgInNraXAgZGlzYWJsZSA5OTkiICJObyBz a2lwbGlzdCBlbnRyeSBudW1iZXJlZCA5OTkuIgorZ2RiX3Rlc3QgInNraXAg ZGVsZXRlIDk5OSIgIk5vIHNraXBsaXN0IGVudHJ5IG51bWJlcmVkIDk5OS4i CitnZGJfdGVzdCAic2tpcCBlbmFibGUiICJBcmd1bWVudCByZXF1aXJlZCBc XChleHByZXNzaW9uIHRvIGNvbXB1dGVcXCkuIgorZ2RiX3Rlc3QgInNraXAg ZGlzYWJsZSIgIkFyZ3VtZW50IHJlcXVpcmVkIFxcKGV4cHJlc3Npb24gdG8g Y29tcHV0ZVxcKS4iCitnZGJfdGVzdCAic2tpcCBkZWxldGUiICJBcmd1bWVu dCByZXF1aXJlZCBcXChleHByZXNzaW9uIHRvIGNvbXB1dGVcXCkuIgorZ2Ri X3Rlc3QgInNraXAgZW5hYmxlIGEiICJObyBzeW1ib2wgXCJhXCIgaW4gY3Vy cmVudCBjb250ZXh0LiIKK2dkYl90ZXN0ICJza2lwIGRpc2FibGUgYSIgIk5v IHN5bWJvbCBcImFcIiBpbiBjdXJyZW50IGNvbnRleHQuIgorZ2RiX3Rlc3Qg InNraXAgZGVsZXRlIGEiICJObyBzeW1ib2wgXCJhXCIgaW4gY3VycmVudCBj b250ZXh0LiIKKworIworIyBUZXN0IHRoYXQgc2tpcCBmdW5jdGlvbiBkb2Vz bid0IGFsbG93IGV4dHJhIGNoYXJhY3RlcnMgYXQgdGhlIGVuZCBvZgorIyBp dHMgYXJndW1lbnRzIGxpc3QuCisjCitnZGJfdGVzdCAic2tpcCBmdW5jdGlv biBmb28gYmFyIiAiSnVuayBhdCBlbmQgb2YgYXJndW1lbnRzLiIKKworIwor IyBBc2sgZm9yIGluZm8gb24gYSBza2lwbGlzdCBlbnRyeSB3aGljaCBkb2Vz bid0IGV4aXN0LgorIworZ2RiX3Rlc3QgImluZm8gc2tpcCA5OTkiICJObyBz a2lwbGlzdCBlbnRyeSBudW1iZXJlZCA5OTkuIgorCisjCisjIERvZXMgfGlu Zm8gc2tpcHwgbG9vayByaWdodD8KKyMKK2dkYl90ZXN0ICJpbmZvIHNraXAi IFwKKyJOdW1cXHMrVHlwZVxccytFbmJcXHMrQWRkcmVzc1xccytXaGF0XFxz KgorMVxccytmaWxlXFxzK3lcXHMrLiokc3JjZmlsZVxccyoKKzJcXHMrZnVu Y3Rpb25cXHMreVxccysweFxbMC05YS1mXF0rIG1haW4gYXQgLiokc3JjZmls ZTpcWzAtOVxdK1xccyoKKzNcXHMrZmlsZVxccyt5XFxzKy4qJHNyY2ZpbGUx XFxzKgorNFxccytmdW5jdGlvblxccyt5XFxzKzB4XFswLTlhLWZcXSsgYmF6 IGF0IC4qJHNyY2ZpbGUxOlxbMC05XF0rXFxzKiIKKworIworIyBSaWdodCBu b3csIHdlIGhhdmUgYW4gb3V0c3RhbmRpbmcgc2tpcGxpc3QgZW50cnkgb24g Ym90aCBzb3VyY2UKKyMgZmlsZXMsIHNvIHdoZW4gd2Ugc3RlcCBpbnRvIHRo ZSBmaXJzdCBsaW5lIGluIG1haW4oKSwgd2Ugc2hvdWxkIHN0ZXAKKyMgcmln aHQgb3ZlciBpdCBhbmQgZ28gdG8gdGhlIHNlY29uZCBsaW5lIG9mIG1haW4o KS4KKyMKK2lmICFbcnVudG9fbWFpbl0geyBmYWlsICJza2lwIHRlc3RzIHN1 cHByZXNzZWQiIH0KK3NlbmRfZ2RiICJzdGVwXG4iCitnZGJfdGVzdCAiYnQi ICIjMFxccyttYWluLioiICJzdGVwIGFmdGVyIGFsbCBpZ25vcmVkIgorCisj CisjIE5vdyByZW1vdmUgc2tpcC5jIGZyb20gdGhlIHNraXBsaXN0LiAgT3Vy IGZpcnN0IHN0ZXAgc2hvdWxkIHRha2UgdXMKKyMgaW50byBmb28oKSwgYW5k IG91ciBzZWNvbmQgc3RlcCBzaG91bGQgdGFrZSB1cyB0byB0aGUgbmV4dCBs aW5lIGluCisjIG1haW4oKS4KKyMKK3NlbmRfZ2RiICJza2lwIGRlbGV0ZSAx XG4iCisjIENoZWNrIHRoYXQgZW50cnkgMSBpcyBtaXNzaW5nIGZyb20gfGlu Zm8gc2tpcHwKK2dkYl90ZXN0ICJpbmZvIHNraXAiIFwKKyJOdW1cXHMrVHlw ZVxccytFbmJcXHMrQWRkcmVzc1xccytXaGF0XFxzKgorMlxccytmdW5jdGlv blxccyt5XFxzKzB4XFswLTlhLWZcXSsgbWFpbiBhdCAuKiRzcmNmaWxlOlxb MC05XF0rXFxzKgorM1xccytmaWxlXFxzK3lcXHMrLiokc3JjZmlsZTFcXHMq Cis0XFxzK2Z1bmN0aW9uXFxzK3lcXHMrMHhcWzAtOWEtZlxdKyBiYXogYXQg Liokc3JjZmlsZTE6XFswLTlcXStcXHMqIgorCitpZiAhW3J1bnRvX21haW5d IHsgZmFpbCAic2tpcCB0ZXN0cyBzdXBwcmVzc2VkIiB9CitnZGJfdGVzdCAi c3RlcCIgImZvbyBcXChcXCkgYXQuKiIgInN0ZXAgYWZ0ZXIgZGVsZXRpbmcg MSAoMSkiCitzZW5kX2dkYiAic3RlcFxuIjsgIyBSZXR1cm4gZnJvbSBmb28o KQorZ2RiX3Rlc3QgInN0ZXAiICJtYWluIFxcKFxcKSBhdC4qIiAic3RlcCBh ZnRlciBkZWxldGluZyAxICgyKSIKKworIworIyBOb3cgZGlzYWJsZSB0aGUg c2tpcGxpc3QgZW50cnkgZm9yICBza2lwMS5jLiAgV2Ugc2hvdWxkIG5vdwor IyBzdGVwIGludG8gZm9vKCksIHRoZW4gaW50byBiYXIoKSwgYnV0IG5vdCBp bnRvIGJheigpLgorIworc2VuZF9nZGIgInNraXAgZGlzYWJsZSAzXG4iCisj IElzIGVudHJ5IDMgZGlzYWJsZWQgaW4gfGluZm8gc2tpcHw/CitnZGJfdGVz dCAiaW5mbyBza2lwIDMiICIuKlxcbjNcXHMrZmlsZVxccytuLioiIFwKKyAg ICAgICAgICJpbmZvIHNraXAgc2hvd3MgZW50cnkgYXMgZGlzYWJsZWQiCisK K2lmICFbcnVudG9fbWFpbl0geyBmYWlsICJza2lwIHRlc3RzIHN1cHByZXNz ZWQiIH0KK2dkYl90ZXN0ICJzdGVwIiAiYmFyIFxcKFxcKSBhdC4qIiAic3Rl cCBhZnRlciBkaXNhYmxpbmcgMyAoMSkiCitzZW5kX2dkYiAic3RlcFxuIjsg IyBSZXR1cm4gZnJvbSBmb28oKQorZ2RiX3Rlc3QgInN0ZXAiICJmb28gXFwo XFwpIGF0LioiICJzdGVwIGFmdGVyIGRpc2FibGluZyAzICgyKSIKK3NlbmRf Z2RiICJzdGVwXG4iOyAjIFJldHVybiBmcm9tIGJhcigpCitnZGJfdGVzdCAi c3RlcCIgIm1haW4gXFwoXFwpIGF0LioiICJzdGVwIGFmdGVyIGRpc2FibGlu ZyAzICgzKSIKKworIworIyBFbmFibGUgc2tpcGxpc3QgZW50cnkgMyBhbmQg bWFrZSBzdXJlIHdlIHN0ZXAgb3ZlciBpdCBsaWtlIGJlZm9yZS4KKyMKK3Nl bmRfZ2RiICJza2lwIGVuYWJsZSAzXG4iCisjIElzIGVudHJ5IDMgZW5hYmxl ZCBpbiB8aW5mbyBza2lwfD8KK2dkYl90ZXN0ICJpbmZvIHNraXAgMyIgIi4q XFxuM1xccytmaWxlXFxzK3kuKiIgXAorICAgICAgICAgImluZm8gc2tpcCBz aG93cyBlbnRyeSBhcyBlbmFibGVkIgoraWYgIVtydW50b19tYWluXSB7IGZh aWwgInNraXAgdGVzdHMgc3VwcHJlc3NlZCIgfQorZ2RiX3Rlc3QgInN0ZXAi ICJmb28gXFwoXFwpIGF0LioiICJzdGVwIGFmdGVyIGRlbGV0aW5nIDEgKDEp Igorc2VuZF9nZGIgInN0ZXBcbiI7ICMgUmV0dXJuIGZyb20gZm9vKCkKK2dk Yl90ZXN0ICJzdGVwIiAibWFpbiBcXChcXCkgYXQuKiIgInN0ZXAgYWZ0ZXIg ZGVsZXRpbmcgMSAoMikiCisKZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUv Z2RiLmJhc2Uvc2tpcDEuYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2tp cDEuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZGFi NWMzCi0tLSAvZGV2L251bGwKKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFz ZS9za2lwMS5jCkBAIC0wLDAgKzEsOSBAQAoraW50IGJhcigpCit7CisgIHJl dHVybiAxOworfQorCitpbnQgYmF6KGludCBhLCBpbnQgYikKK3sKKyAgcmV0 dXJuIGEgKyBiOworfQo= --00151747378879e4bd04a1c34e2a--