From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Juanma Barranquero Newsgroups: gmane.emacs.devel Subject: Re: [PATCH] GnuTLS support on Woe32 Date: Wed, 4 May 2011 03:30:23 +0200 Message-ID: References: <87ipvwl1nx.wl%claudio.bley@gmail.com> <87lj05svwh.fsf@lifelogs.com> <87bp11imgb.wl%claudio.bley@gmail.com> <8739mc5nes.fsf@lifelogs.com> <87ipuubao6.fsf@lifelogs.com> <87fwpjfkkz.fsf@lifelogs.com> <87bp072fb1.fsf@lifelogs.com> <874o5vimm5.fsf@lifelogs.com> <87zknjmcyk.fsf@lifelogs.com> <87sjta2zvp.fsf@lifelogs.com> <87liyzglkh.fsf@lifelogs.com> <4DB77682.1070605@gmail.com> <8762q04ba1.fsf@lifelogs.com> <87hb9dufao.fsf@lifelogs.com> <87d3jzc0ct.fsf@lifelogs.com> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=000e0cd3a506c4a39104a2693571 X-Trace: dough.gmane.org 1304472675 26945 80.91.229.12 (4 May 2011 01:31:15 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Wed, 4 May 2011 01:31:15 +0000 (UTC) Cc: emacs-devel@gnu.org To: Ted Zlatanov Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Wed May 04 03:31:11 2011 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([140.186.70.17]) by lo.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1QHQvm-0002cD-QS for ged-emacs-devel@m.gmane.org; Wed, 04 May 2011 03:31:11 +0200 Original-Received: from localhost ([::1]:51542 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QHQvm-0007Zz-Az for ged-emacs-devel@m.gmane.org; Tue, 03 May 2011 21:31:10 -0400 Original-Received: from eggs.gnu.org ([140.186.70.92]:34565) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QHQvi-0007Zo-JH for emacs-devel@gnu.org; Tue, 03 May 2011 21:31:07 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1QHQvh-0005GH-GD for emacs-devel@gnu.org; Tue, 03 May 2011 21:31:06 -0400 Original-Received: from mail-gy0-f169.google.com ([209.85.160.169]:39392) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QHQvh-0005GB-8D for emacs-devel@gnu.org; Tue, 03 May 2011 21:31:05 -0400 Original-Received: by gyd8 with SMTP id 8so309216gyd.0 for ; Tue, 03 May 2011 18:31:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc:content-type; bh=+2BWhw86UJIPBy4gtqnuKXByJ9RTQi8yc/k02ALtGRk=; b=t2n8edx9PoBtgJiuuWhccTDE75yaiGQ9sN86Ob+Fw6p7aZO1tQz3pMgM4jxLWl/QZi 1OlKDKah+9Ek/hXWpJEfxwPeDOOxHvyc47uLCHf6ZJWdqK0ZDoFrVRLrsqMUd1owSZTL p1Cq6GHWkGElIKFbFe8wK2ybGwJDWUTwDyxWk= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc:content-type; b=nkMWD8YpfcdUEiNIlV3TLwbJKFGABf3kIL67F4xtc9SFrWEcCREiTgojDO4OZey2Ux c+sEGeRuaLkLtbHPr/dIbOoWxKhj9MwF1rt/enxYTrWKLZGyiWuz9Ca08LSQIWZ8Ewp1 V4DNNE5Tu5fMmPoVnw3NSew5tgfUaQUGMT9PU= Original-Received: by 10.146.8.34 with SMTP id 34mr451747yah.28.1304472664187; Tue, 03 May 2011 18:31:04 -0700 (PDT) Original-Received: by 10.147.182.5 with HTTP; Tue, 3 May 2011 18:30:23 -0700 (PDT) In-Reply-To: <87d3jzc0ct.fsf@lifelogs.com> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 2) X-Received-From: 209.85.160.169 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:139088 Archived-At: --000e0cd3a506c4a39104a2693571 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable 2011/5/3 Ted Zlatanov : > The else block above should log things at level 1, I think, since it's a > rare event and important to know: > > CHECK_STRING (Qgnutls_dll); > GNUTLS_LOG2 (1, max_log_level, "loading the GnuTLS DLL: ", SSDATA (Qgnutl= s_dll)); Qgnutls_dll is not really the file name, but just the symbol `gnutls'. The file name is not known outside of w32_delayed_load, so it can't really be used in the message. I thought of adding GNUTLS_LOG (1, max_log_level, "..."), but isn't GnuTLS required to be able to compute max_log_level? If so, it can only be used to log a successful load, and then its place is really in Fgnutls_boot, not Fgnutls_available_p. Attached is the new patch, which is like the previous one, with the changes requested by Eli and a clarification in nt/INSTALL. I think it is ready to install once we settle on the issue of GNUTLS_LOG. =C2=A0 =C2=A0 Juanma --000e0cd3a506c4a39104a2693571 Content-Type: application/octet-stream; name="gnutls2.patch" Content-Disposition: attachment; filename="gnutls2.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gn9larka0 PT09IG1vZGlmaWVkIGZpbGUgJ2xpc3AvdGVybS93MzItd2luLmVsJw0KLS0tIGxpc3AvdGVybS93 MzItd2luLmVsCTIwMTEtMDItMDMgMDc6MzE6NDIgKzAwMDANCisrKyBsaXNwL3Rlcm0vdzMyLXdp bi5lbAkyMDExLTA1LTAyIDAxOjEyOjQyICswMDAwDQpAQCAtMjA4LDcgKzIwOCw4IEBADQogICAg ICAgICAnKHN2ZyAibGlicnN2Zy0yLTIuZGxsIikNCiAgICAgICAgICcoZ2RrLXBpeGJ1ZiAibGli Z2RrX3BpeGJ1Zi0yLjAtMC5kbGwiKQ0KICAgICAgICAgJyhnbGliICJsaWJnbGliLTIuMC0wLmRs bCIpDQotCScoZ29iamVjdCAibGliZ29iamVjdC0yLjAtMC5kbGwiKSkpDQorICAgICAgICcoZ29i amVjdCAibGliZ29iamVjdC0yLjAtMC5kbGwiKQ0KKyAgICAgICAnKGdudXRscyAibGliZ251dGxz LTI2LmRsbCIpKSkNCiANCiA7OzsgbXVsdGktdHR5IHN1cHBvcnQNCiAoZGVmdmFyIHczMi1pbml0 aWFsaXplZCBuaWwNCg0KPT09IG1vZGlmaWVkIGZpbGUgJ250L0lOU1RBTEwnDQotLS0gbnQvSU5T VEFMTAkyMDExLTA0LTI4IDIwOjI4OjUxICswMDAwDQorKysgbnQvSU5TVEFMTAkyMDExLTA1LTAz IDIzOjI3OjQ4ICswMDAwDQpAQCAtMzI1LDEyICszMjUsMTcgQEANCiANCiAqIE9wdGlvbmFsIEdu dVRMUyBzdXBwb3J0DQogDQotICBZb3UgY2FuIGJ1aWxkIEVtYWNzIHdpdGggR251VExTIHN1cHBv cnQuICBQdXQgdGhlIGdudXRscy9nbnV0bHMuaCBoZWFkZXIgaW4NCi0gIHRoZSBpbmNsdWRlIHBh dGggYW5kIGxpbmsgdG8gdGhlIGFwcHJvcHJpYXRlIGxpYnJhcmllcyAoZ251dGxzLmRsbCBhbmQN Ci0gIGdjcnlwdC5kbGwpIHdpdGggdGhlIC0tbGliIG9wdGlvbi4NCisgIElmIGNvbmZpZ3VyZS5i YXQgZmluZHMgdGhlIGdudXRscy9nbnV0bHMuaCBmaWxlIGluIHRoZSBpbmNsdWRlIHBhdGgsDQor ICBFbWFjcyBpcyBidWlsdCB3aXRoIEdudVRMUyBzdXBwb3J0IGJ5IGRlZmF1bHQ7IHRvIGF2b2lk IHRoYXQgeW91IGNhbg0KKyAgcGFzcyB0aGUgYXJndW1lbnQgLS13aXRob3V0LWdudXRscy4NCisN CisgIEluIG9yZGVyIHRvIHN1cHBvcnQgR251VExTIGF0IHJ1bnRpbWUsIGEgR251VExTLWVuYWJs ZWQgRW1hY3MgbXVzdA0KKyAgYmUgYWJsZSB0byBmaW5kIHRoZSByZWxldmFudCBETExzIGR1cmlu ZyBzdGFydHVwOyBmYWlsdXJlIHRvIGRvIHNvDQorICBpcyBub3QgYW4gZXJyb3IsIGJ1dCBHbnVU TFMgd29uJ3QgYmUgYXZhaWxhYmxlIHRvIHRoZSBydW5uaW5nDQorICBzZXNzaW9uLg0KIA0KLSAg WW91IGNhbiBnZXQgcHJlLWJ1aWx0IGJpbmFyaWVzIGFuZCBhbiBpbnN0YWxsZXIgYXQNCi0gIGh0 dHA6Ly9qb3NlZnNzb24ub3JnL2dudXRsczR3aW4vLg0KKyAgWW91IGNhbiBnZXQgcHJlLWJ1aWx0 IGJpbmFyaWVzIChpbmNsdWRpbmcgYW55IHJlcXVpcmVkIERMTCBhbmQgdGhlDQorICBnbnV0bHMu aCBmaWxlKSBhbmQgYW4gaW5zdGFsbGVyIGF0IGh0dHA6Ly9qb3NlZnNzb24ub3JnL2dudXRsczR3 aW4vLg0KIA0KICogRXhwZXJpbWVudGFsIFNWRyBzdXBwb3J0DQogDQoNCj09PSBtb2RpZmllZCBm aWxlICdzcmMvY2FsbHByb2MuYycNCi0tLSBzcmMvY2FsbHByb2MuYwkyMDExLTA1LTAxIDA5OjAy OjAxICswMDAwDQorKysgc3JjL2NhbGxwcm9jLmMJMjAxMS0wNS0wMyAyMjo0OTozOSArMDAwMA0K QEAgLTI5LDYgKzI5LDggQEANCiAjaW5jbHVkZSA8c3lzL2ZpbGUuaD4NCiAjaW5jbHVkZSA8ZmNu dGwuaD4NCiANCisjaW5jbHVkZSAibGlzcC5oIg0KKw0KICNpZmRlZiBXSU5ET1dTTlQNCiAjZGVm aW5lIE5PTUlOTUFYDQogI2luY2x1ZGUgPHdpbmRvd3MuaD4NCkBAIC00MSw3ICs0Myw2IEBADQog I2luY2x1ZGUgPHN5cy9wYXJhbS5oPg0KICNlbmRpZiAvKiBNU0RPUyAqLw0KIA0KLSNpbmNsdWRl ICJsaXNwLmgiDQogI2luY2x1ZGUgImNvbW1hbmRzLmgiDQogI2luY2x1ZGUgImJ1ZmZlci5oIg0K ICNpbmNsdWRlICJjaGFyYWN0ZXIuaCINCg0KPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9lbWFjcy5j Jw0KLS0tIHNyYy9lbWFjcy5jCTIwMTEtMDQtMTYgMjA6MjE6MjYgKzAwMDANCisrKyBzcmMvZW1h Y3MuYwkyMDExLTA1LTAzIDIyOjQ4OjQ5ICswMDAwDQpAQCAtMjksNiArMjksOCBAQA0KICNpbmNs dWRlIDxzZXRqbXAuaD4NCiAjaW5jbHVkZSA8dW5pc3RkLmg+DQogDQorI2luY2x1ZGUgImxpc3Au aCINCisNCiAjaWZkZWYgV0lORE9XU05UDQogI2luY2x1ZGUgPGZjbnRsLmg+DQogI2luY2x1ZGUg PHdpbmRvd3MuaD4gLyoganVzdCBmb3IgdzMyLmggKi8NCkBAIC00MSw3ICs0Myw2IEBADQogI2lu Y2x1ZGUgPEdOVXN0ZXBCYXNlL0dTQ29uZmlnLmg+DQogI2VuZGlmDQogDQotI2luY2x1ZGUgImxp c3AuaCINCiAjaW5jbHVkZSAiY29tbWFuZHMuaCINCiAjaW5jbHVkZSAiaW50ZXJ2YWxzLmgiDQog I2luY2x1ZGUgImJ1ZmZlci5oIg0KDQo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL2dudXRscy5jJw0K LS0tIHNyYy9nbnV0bHMuYwkyMDExLTA1LTAyIDAyOjQ5OjA2ICswMDAwDQorKysgc3JjL2dudXRs cy5jCTIwMTEtMDUtMDQgMDE6MDc6MTUgKzAwMDANCkBAIC0zNCw2ICszNCw3IEBADQogc3RhdGlj IGludA0KIGVtYWNzX2dudXRsc19oYW5kbGVfZXJyb3IgKGdudXRsc19zZXNzaW9uX3QsIGludCBl cnIpOw0KIA0KK3N0YXRpYyBMaXNwX09iamVjdCBRZ251dGxzX2RsbDsNCiBzdGF0aWMgTGlzcF9P YmplY3QgUWdudXRsc19sb2dfbGV2ZWw7DQogc3RhdGljIExpc3BfT2JqZWN0IFFnbnV0bHNfY29k ZTsNCiBzdGF0aWMgTGlzcF9PYmplY3QgUWdudXRsc19hbm9uLCBRZ251dGxzX3g1MDlwa2k7DQpA QCAtNTUsNiArNTYsMTQ1IEBADQogLyogQ2FsbGJhY2sga2V5cyBmb3IgYGdudXRscy1ib290Jy4g IFVudXNlZCBjdXJyZW50bHkuICAqLw0KIHN0YXRpYyBMaXNwX09iamVjdCBRZ251dGxzX2Jvb3Rw cm9wX2NhbGxiYWNrc192ZXJpZnk7DQogDQorDA0KKyNpZmRlZiBXSU5ET1dTTlQNCisNCisvKiBN YWNybyBmb3IgZGVmaW5pbmcgZnVuY3Rpb25zIHRoYXQgd2lsbCBiZSBsb2FkZWQgZnJvbSB0aGUg R251VExTIERMTC4gICovDQorI2RlZmluZSBERUZfR05VVExTX0ZOKHJldHR5cGUsZnVuYyxhcmdz KSByZXR0eXBlIChGQVIgQ0RFQ0wgKmZuXyMjZnVuYylhcmdzDQorDQorLyogTWFjcm8gZm9yIGxv YWRpbmcgR251VExTIGZ1bmN0aW9ucyBmcm9tIHRoZSBsaWJyYXJ5LiAgKi8NCisjZGVmaW5lIExP QURfR05VVExTX0ZOKGxpYixmdW5jKSB7CQkJCQlcDQorICAgIGZuXyMjZnVuYyA9ICh2b2lkICop IEdldFByb2NBZGRyZXNzIChsaWIsICNmdW5jKTsJCQlcDQorICAgIGlmICghZm5fIyNmdW5jKSBy ZXR1cm4gMDsJCQkJCQlcDQorICB9DQorDQorREVGX0dOVVRMU19GTiAoZ251dGxzX2FsZXJ0X2Rl c2NyaXB0aW9uX3QsIGdudXRsc19hbGVydF9nZXQsIChnbnV0bHNfc2Vzc2lvbl90KSk7DQorREVG X0dOVVRMU19GTiAoY29uc3QgY2hhciAqLCBnbnV0bHNfYWxlcnRfZ2V0X25hbWUsIChnbnV0bHNf YWxlcnRfZGVzY3JpcHRpb25fdCkpOw0KK0RFRl9HTlVUTFNfRk4gKGludCwgZ251dGxzX2FsZXJ0 X3NlbmRfYXBwcm9wcmlhdGUsIChnbnV0bHNfc2Vzc2lvbl90LCBpbnQpKTsNCitERUZfR05VVExT X0ZOIChpbnQsIGdudXRsc19hbm9uX2FsbG9jYXRlX2NsaWVudF9jcmVkZW50aWFscywgKGdudXRs c19hbm9uX2NsaWVudF9jcmVkZW50aWFsc190ICopKTsNCitERUZfR05VVExTX0ZOICh2b2lkLCBn bnV0bHNfYW5vbl9mcmVlX2NsaWVudF9jcmVkZW50aWFscywgKGdudXRsc19hbm9uX2NsaWVudF9j cmVkZW50aWFsc190KSk7DQorREVGX0dOVVRMU19GTiAoaW50LCBnbnV0bHNfYnllLCAoZ251dGxz X3Nlc3Npb25fdCwgZ251dGxzX2Nsb3NlX3JlcXVlc3RfdCkpOw0KK0RFRl9HTlVUTFNfRk4gKGlu dCwgZ251dGxzX2NlcnRpZmljYXRlX2FsbG9jYXRlX2NyZWRlbnRpYWxzLCAoZ251dGxzX2NlcnRp ZmljYXRlX2NyZWRlbnRpYWxzX3QgKikpOw0KK0RFRl9HTlVUTFNfRk4gKHZvaWQsIGdudXRsc19j ZXJ0aWZpY2F0ZV9mcmVlX2NyZWRlbnRpYWxzLCAoZ251dGxzX2NlcnRpZmljYXRlX2NyZWRlbnRp YWxzX3QpKTsNCitERUZfR05VVExTX0ZOIChjb25zdCBnbnV0bHNfZGF0dW1fdCAqLCBnbnV0bHNf Y2VydGlmaWNhdGVfZ2V0X3BlZXJzLCAoZ251dGxzX3Nlc3Npb25fdCwgdW5zaWduZWQgaW50ICop KTsNCitERUZfR05VVExTX0ZOICh2b2lkLCBnbnV0bHNfY2VydGlmaWNhdGVfc2V0X3ZlcmlmeV9m bGFncywgKGdudXRsc19jZXJ0aWZpY2F0ZV9jcmVkZW50aWFsc190LCB1bnNpZ25lZCBpbnQpKTsN CitERUZfR05VVExTX0ZOIChpbnQsIGdudXRsc19jZXJ0aWZpY2F0ZV9zZXRfeDUwOV9jcmxfZmls ZSwgKGdudXRsc19jZXJ0aWZpY2F0ZV9jcmVkZW50aWFsc190LCBjb25zdCBjaGFyICosIGdudXRs c194NTA5X2NydF9mbXRfdCkpOw0KK0RFRl9HTlVUTFNfRk4gKGludCwgZ251dGxzX2NlcnRpZmlj YXRlX3NldF94NTA5X3RydXN0X2ZpbGUsIChnbnV0bHNfY2VydGlmaWNhdGVfY3JlZGVudGlhbHNf dCwgY29uc3QgY2hhciAqLCBnbnV0bHNfeDUwOV9jcnRfZm10X3QpKTsNCitERUZfR05VVExTX0ZO IChnbnV0bHNfY2VydGlmaWNhdGVfdHlwZV90LCBnbnV0bHNfY2VydGlmaWNhdGVfdHlwZV9nZXQs IChnbnV0bHNfc2Vzc2lvbl90KSk7DQorREVGX0dOVVRMU19GTiAoaW50LCBnbnV0bHNfY2VydGlm aWNhdGVfdmVyaWZ5X3BlZXJzMiwgKGdudXRsc19zZXNzaW9uX3QsIHVuc2lnbmVkIGludCAqKSk7 DQorREVGX0dOVVRMU19GTiAoaW50LCBnbnV0bHNfY3JlZGVudGlhbHNfc2V0LCAoZ251dGxzX3Nl c3Npb25fdCwgZ251dGxzX2NyZWRlbnRpYWxzX3R5cGVfdCwgdm9pZCAqKSk7DQorREVGX0dOVVRM U19GTiAodm9pZCwgZ251dGxzX2RlaW5pdCwgKGdudXRsc19zZXNzaW9uX3QpKTsNCitERUZfR05V VExTX0ZOIChpbnQsIGdudXRsc19lcnJvcl9pc19mYXRhbCwgKGludCkpOw0KK0RFRl9HTlVUTFNf Rk4gKGludCwgZ251dGxzX2dsb2JhbF9pbml0LCAodm9pZCkpOw0KK0RFRl9HTlVUTFNfRk4gKHZv aWQsIGdudXRsc19nbG9iYWxfc2V0X2xvZ19mdW5jdGlvbiwgKGdudXRsc19sb2dfZnVuYykpOw0K K0RFRl9HTlVUTFNfRk4gKHZvaWQsIGdudXRsc19nbG9iYWxfc2V0X2xvZ19sZXZlbCwgKGludCkp Ow0KK0RFRl9HTlVUTFNfRk4gKGludCwgZ251dGxzX2hhbmRzaGFrZSwgKGdudXRsc19zZXNzaW9u X3QpKTsNCitERUZfR05VVExTX0ZOIChpbnQsIGdudXRsc19pbml0LCAoZ251dGxzX3Nlc3Npb25f dCAqLCBnbnV0bHNfY29ubmVjdGlvbl9lbmRfdCkpOw0KK0RFRl9HTlVUTFNfRk4gKGludCwgZ251 dGxzX3ByaW9yaXR5X3NldF9kaXJlY3QsIChnbnV0bHNfc2Vzc2lvbl90LCBjb25zdCBjaGFyICos IGNvbnN0IGNoYXIgKiopKTsNCitERUZfR05VVExTX0ZOIChzaXplX3QsIGdudXRsc19yZWNvcmRf Y2hlY2tfcGVuZGluZywgKGdudXRsc19zZXNzaW9uX3QpKTsNCitERUZfR05VVExTX0ZOIChzc2l6 ZV90LCBnbnV0bHNfcmVjb3JkX3JlY3YsIChnbnV0bHNfc2Vzc2lvbl90LCB2b2lkICosIHNpemVf dCkpOw0KK0RFRl9HTlVUTFNfRk4gKHNzaXplX3QsIGdudXRsc19yZWNvcmRfc2VuZCwgKGdudXRs c19zZXNzaW9uX3QsIGNvbnN0IHZvaWQgKiwgc2l6ZV90KSk7DQorREVGX0dOVVRMU19GTiAoY29u c3QgY2hhciAqLCBnbnV0bHNfc3RyZXJyb3IsIChpbnQpKTsNCitERUZfR05VVExTX0ZOICh2b2lk LCBnbnV0bHNfdHJhbnNwb3J0X3NldF9lcnJubywgKGdudXRsc19zZXNzaW9uX3QsIGludCkpOw0K K0RFRl9HTlVUTFNfRk4gKHZvaWQsIGdudXRsc190cmFuc3BvcnRfc2V0X2xvd2F0LCAoZ251dGxz X3Nlc3Npb25fdCwgaW50KSk7DQorREVGX0dOVVRMU19GTiAodm9pZCwgZ251dGxzX3RyYW5zcG9y dF9zZXRfcHRyMiwgKGdudXRsc19zZXNzaW9uX3QsIGdudXRsc190cmFuc3BvcnRfcHRyX3QsIGdu dXRsc190cmFuc3BvcnRfcHRyX3QpKTsNCitERUZfR05VVExTX0ZOICh2b2lkLCBnbnV0bHNfdHJh bnNwb3J0X3NldF9wdWxsX2Z1bmN0aW9uLCAoZ251dGxzX3Nlc3Npb25fdCwgZ251dGxzX3B1bGxf ZnVuYykpOw0KK0RFRl9HTlVUTFNfRk4gKHZvaWQsIGdudXRsc190cmFuc3BvcnRfc2V0X3B1c2hf ZnVuY3Rpb24sIChnbnV0bHNfc2Vzc2lvbl90LCBnbnV0bHNfcHVzaF9mdW5jKSk7DQorREVGX0dO VVRMU19GTiAoaW50LCBnbnV0bHNfeDUwOV9jcnRfY2hlY2tfaG9zdG5hbWUsIChnbnV0bHNfeDUw OV9jcnRfdCwgY29uc3QgY2hhciAqKSk7DQorREVGX0dOVVRMU19GTiAodm9pZCwgZ251dGxzX3g1 MDlfY3J0X2RlaW5pdCwgKGdudXRsc194NTA5X2NydF90KSk7DQorREVGX0dOVVRMU19GTiAoaW50 LCBnbnV0bHNfeDUwOV9jcnRfaW1wb3J0LCAoZ251dGxzX3g1MDlfY3J0X3QsIGNvbnN0IGdudXRs c19kYXR1bV90ICosIGdudXRsc194NTA5X2NydF9mbXRfdCkpOw0KK0RFRl9HTlVUTFNfRk4gKGlu dCwgZ251dGxzX3g1MDlfY3J0X2luaXQsIChnbnV0bHNfeDUwOV9jcnRfdCAqKSk7DQorDQorc3Rh dGljIGludA0KK2luaXRfZ251dGxzX2Z1bmN0aW9ucyAoTGlzcF9PYmplY3QgbGlicmFyaWVzKQ0K K3sNCisgIEhNT0RVTEUgbGlicmFyeTsNCisNCisgIGlmICghKGxpYnJhcnkgPSB3MzJfZGVsYXll ZF9sb2FkIChsaWJyYXJpZXMsIFFnbnV0bHNfZGxsKSkpDQorICAgIHJldHVybiAwOw0KKw0KKyAg TE9BRF9HTlVUTFNfRk4gKGxpYnJhcnksIGdudXRsc19hbGVydF9nZXQpOw0KKyAgTE9BRF9HTlVU TFNfRk4gKGxpYnJhcnksIGdudXRsc19hbGVydF9nZXRfbmFtZSk7DQorICBMT0FEX0dOVVRMU19G TiAobGlicmFyeSwgZ251dGxzX2FsZXJ0X3NlbmRfYXBwcm9wcmlhdGUpOw0KKyAgTE9BRF9HTlVU TFNfRk4gKGxpYnJhcnksIGdudXRsc19hbm9uX2FsbG9jYXRlX2NsaWVudF9jcmVkZW50aWFscyk7 DQorICBMT0FEX0dOVVRMU19GTiAobGlicmFyeSwgZ251dGxzX2Fub25fZnJlZV9jbGllbnRfY3Jl ZGVudGlhbHMpOw0KKyAgTE9BRF9HTlVUTFNfRk4gKGxpYnJhcnksIGdudXRsc19ieWUpOw0KKyAg TE9BRF9HTlVUTFNfRk4gKGxpYnJhcnksIGdudXRsc19jZXJ0aWZpY2F0ZV9hbGxvY2F0ZV9jcmVk ZW50aWFscyk7DQorICBMT0FEX0dOVVRMU19GTiAobGlicmFyeSwgZ251dGxzX2NlcnRpZmljYXRl X2ZyZWVfY3JlZGVudGlhbHMpOw0KKyAgTE9BRF9HTlVUTFNfRk4gKGxpYnJhcnksIGdudXRsc19j ZXJ0aWZpY2F0ZV9nZXRfcGVlcnMpOw0KKyAgTE9BRF9HTlVUTFNfRk4gKGxpYnJhcnksIGdudXRs c19jZXJ0aWZpY2F0ZV9zZXRfdmVyaWZ5X2ZsYWdzKTsNCisgIExPQURfR05VVExTX0ZOIChsaWJy YXJ5LCBnbnV0bHNfY2VydGlmaWNhdGVfc2V0X3g1MDlfY3JsX2ZpbGUpOw0KKyAgTE9BRF9HTlVU TFNfRk4gKGxpYnJhcnksIGdudXRsc19jZXJ0aWZpY2F0ZV9zZXRfeDUwOV90cnVzdF9maWxlKTsN CisgIExPQURfR05VVExTX0ZOIChsaWJyYXJ5LCBnbnV0bHNfY2VydGlmaWNhdGVfdHlwZV9nZXQp Ow0KKyAgTE9BRF9HTlVUTFNfRk4gKGxpYnJhcnksIGdudXRsc19jZXJ0aWZpY2F0ZV92ZXJpZnlf cGVlcnMyKTsNCisgIExPQURfR05VVExTX0ZOIChsaWJyYXJ5LCBnbnV0bHNfY3JlZGVudGlhbHNf c2V0KTsNCisgIExPQURfR05VVExTX0ZOIChsaWJyYXJ5LCBnbnV0bHNfZGVpbml0KTsNCisgIExP QURfR05VVExTX0ZOIChsaWJyYXJ5LCBnbnV0bHNfZXJyb3JfaXNfZmF0YWwpOw0KKyAgTE9BRF9H TlVUTFNfRk4gKGxpYnJhcnksIGdudXRsc19nbG9iYWxfaW5pdCk7DQorICBMT0FEX0dOVVRMU19G TiAobGlicmFyeSwgZ251dGxzX2dsb2JhbF9zZXRfbG9nX2Z1bmN0aW9uKTsNCisgIExPQURfR05V VExTX0ZOIChsaWJyYXJ5LCBnbnV0bHNfZ2xvYmFsX3NldF9sb2dfbGV2ZWwpOw0KKyAgTE9BRF9H TlVUTFNfRk4gKGxpYnJhcnksIGdudXRsc19oYW5kc2hha2UpOw0KKyAgTE9BRF9HTlVUTFNfRk4g KGxpYnJhcnksIGdudXRsc19pbml0KTsNCisgIExPQURfR05VVExTX0ZOIChsaWJyYXJ5LCBnbnV0 bHNfcHJpb3JpdHlfc2V0X2RpcmVjdCk7DQorICBMT0FEX0dOVVRMU19GTiAobGlicmFyeSwgZ251 dGxzX3JlY29yZF9jaGVja19wZW5kaW5nKTsNCisgIExPQURfR05VVExTX0ZOIChsaWJyYXJ5LCBn bnV0bHNfcmVjb3JkX3JlY3YpOw0KKyAgTE9BRF9HTlVUTFNfRk4gKGxpYnJhcnksIGdudXRsc19y ZWNvcmRfc2VuZCk7DQorICBMT0FEX0dOVVRMU19GTiAobGlicmFyeSwgZ251dGxzX3N0cmVycm9y KTsNCisgIExPQURfR05VVExTX0ZOIChsaWJyYXJ5LCBnbnV0bHNfdHJhbnNwb3J0X3NldF9lcnJu byk7DQorICBMT0FEX0dOVVRMU19GTiAobGlicmFyeSwgZ251dGxzX3RyYW5zcG9ydF9zZXRfbG93 YXQpOw0KKyAgTE9BRF9HTlVUTFNfRk4gKGxpYnJhcnksIGdudXRsc190cmFuc3BvcnRfc2V0X3B0 cjIpOw0KKyAgTE9BRF9HTlVUTFNfRk4gKGxpYnJhcnksIGdudXRsc190cmFuc3BvcnRfc2V0X3B1 bGxfZnVuY3Rpb24pOw0KKyAgTE9BRF9HTlVUTFNfRk4gKGxpYnJhcnksIGdudXRsc190cmFuc3Bv cnRfc2V0X3B1c2hfZnVuY3Rpb24pOw0KKyAgTE9BRF9HTlVUTFNfRk4gKGxpYnJhcnksIGdudXRs c194NTA5X2NydF9jaGVja19ob3N0bmFtZSk7DQorICBMT0FEX0dOVVRMU19GTiAobGlicmFyeSwg Z251dGxzX3g1MDlfY3J0X2RlaW5pdCk7DQorICBMT0FEX0dOVVRMU19GTiAobGlicmFyeSwgZ251 dGxzX3g1MDlfY3J0X2ltcG9ydCk7DQorICBMT0FEX0dOVVRMU19GTiAobGlicmFyeSwgZ251dGxz X3g1MDlfY3J0X2luaXQpOw0KKw0KKyAgcmV0dXJuIDE7DQorfQ0KKw0KKyNlbHNlIC8qICFXSU5E T1dTTlQgKi8NCisNCisjZGVmaW5lIGZuX2dudXRsc19hbGVydF9nZXQJCQlnbnV0bHNfYWxlcnRf Z2V0DQorI2RlZmluZSBmbl9nbnV0bHNfYWxlcnRfZ2V0X25hbWUJCWdudXRsc19hbGVydF9nZXRf bmFtZQ0KKyNkZWZpbmUgZm5fZ251dGxzX2FsZXJ0X3NlbmRfYXBwcm9wcmlhdGUJZ251dGxzX2Fs ZXJ0X3NlbmRfYXBwcm9wcmlhdGUNCisjZGVmaW5lIGZuX2dudXRsc19hbm9uX2FsbG9jYXRlX2Ns aWVudF9jcmVkZW50aWFscyBnbnV0bHNfYW5vbl9hbGxvY2F0ZV9jbGllbnRfY3JlZGVudGlhbHMN CisjZGVmaW5lIGZuX2dudXRsc19hbm9uX2ZyZWVfY2xpZW50X2NyZWRlbnRpYWxzCWdudXRsc19h bm9uX2ZyZWVfY2xpZW50X2NyZWRlbnRpYWxzDQorI2RlZmluZSBmbl9nbnV0bHNfYnllCQkJCWdu dXRsc19ieWUNCisjZGVmaW5lIGZuX2dudXRsc19jZXJ0aWZpY2F0ZV9hbGxvY2F0ZV9jcmVkZW50 aWFscyBnbnV0bHNfY2VydGlmaWNhdGVfYWxsb2NhdGVfY3JlZGVudGlhbHMNCisjZGVmaW5lIGZu X2dudXRsc19jZXJ0aWZpY2F0ZV9mcmVlX2NyZWRlbnRpYWxzCWdudXRsc19jZXJ0aWZpY2F0ZV9m cmVlX2NyZWRlbnRpYWxzDQorI2RlZmluZSBmbl9nbnV0bHNfY2VydGlmaWNhdGVfZ2V0X3BlZXJz CQlnbnV0bHNfY2VydGlmaWNhdGVfZ2V0X3BlZXJzDQorI2RlZmluZSBmbl9nbnV0bHNfY2VydGlm aWNhdGVfc2V0X3ZlcmlmeV9mbGFncwlnbnV0bHNfY2VydGlmaWNhdGVfc2V0X3ZlcmlmeV9mbGFn cw0KKyNkZWZpbmUgZm5fZ251dGxzX2NlcnRpZmljYXRlX3NldF94NTA5X2NybF9maWxlCWdudXRs c19jZXJ0aWZpY2F0ZV9zZXRfeDUwOV9jcmxfZmlsZQ0KKyNkZWZpbmUgZm5fZ251dGxzX2NlcnRp ZmljYXRlX3NldF94NTA5X3RydXN0X2ZpbGUgZ251dGxzX2NlcnRpZmljYXRlX3NldF94NTA5X3Ry dXN0X2ZpbGUNCisjZGVmaW5lIGZuX2dudXRsc19jZXJ0aWZpY2F0ZV90eXBlX2dldAkJZ251dGxz X2NlcnRpZmljYXRlX3R5cGVfZ2V0DQorI2RlZmluZSBmbl9nbnV0bHNfY2VydGlmaWNhdGVfdmVy aWZ5X3BlZXJzMglnbnV0bHNfY2VydGlmaWNhdGVfdmVyaWZ5X3BlZXJzMg0KKyNkZWZpbmUgZm5f Z251dGxzX2NyZWRlbnRpYWxzX3NldAkJZ251dGxzX2NyZWRlbnRpYWxzX3NldA0KKyNkZWZpbmUg Zm5fZ251dGxzX2RlaW5pdAkJCWdudXRsc19kZWluaXQNCisjZGVmaW5lIGZuX2dudXRsc19lcnJv cl9pc19mYXRhbAkJZ251dGxzX2Vycm9yX2lzX2ZhdGFsDQorI2RlZmluZSBmbl9nbnV0bHNfZ2xv YmFsX2luaXQJCQlnbnV0bHNfZ2xvYmFsX2luaXQNCisjZGVmaW5lIGZuX2dudXRsc19nbG9iYWxf c2V0X2xvZ19mdW5jdGlvbglnbnV0bHNfZ2xvYmFsX3NldF9sb2dfZnVuY3Rpb24NCisjZGVmaW5l IGZuX2dudXRsc19nbG9iYWxfc2V0X2xvZ19sZXZlbAkJZ251dGxzX2dsb2JhbF9zZXRfbG9nX2xl dmVsDQorI2RlZmluZSBmbl9nbnV0bHNfaGFuZHNoYWtlCQkJZ251dGxzX2hhbmRzaGFrZQ0KKyNk ZWZpbmUgZm5fZ251dGxzX2luaXQJCQkJZ251dGxzX2luaXQNCisjZGVmaW5lIGZuX2dudXRsc19w cmlvcml0eV9zZXRfZGlyZWN0CQlnbnV0bHNfcHJpb3JpdHlfc2V0X2RpcmVjdA0KKyNkZWZpbmUg Zm5fZ251dGxzX3JlY29yZF9jaGVja19wZW5kaW5nCQlnbnV0bHNfcmVjb3JkX2NoZWNrX3BlbmRp bmcNCisjZGVmaW5lIGZuX2dudXRsc19yZWNvcmRfcmVjdgkJCWdudXRsc19yZWNvcmRfcmVjdg0K KyNkZWZpbmUgZm5fZ251dGxzX3JlY29yZF9zZW5kCQkJZ251dGxzX3JlY29yZF9zZW5kDQorI2Rl ZmluZSBmbl9nbnV0bHNfc3RyZXJyb3IJCQlnbnV0bHNfc3RyZXJyb3INCisjZGVmaW5lIGZuX2du dXRsc190cmFuc3BvcnRfc2V0X2Vycm5vCQlnbnV0bHNfdHJhbnNwb3J0X3NldF9lcnJubw0KKyNk ZWZpbmUgZm5fZ251dGxzX3RyYW5zcG9ydF9zZXRfbG93YXQJCWdudXRsc190cmFuc3BvcnRfc2V0 X2xvd2F0DQorI2RlZmluZSBmbl9nbnV0bHNfdHJhbnNwb3J0X3NldF9wdHIyCQlnbnV0bHNfdHJh bnNwb3J0X3NldF9wdHIyDQorI2RlZmluZSBmbl9nbnV0bHNfdHJhbnNwb3J0X3NldF9wdWxsX2Z1 bmN0aW9uCWdudXRsc190cmFuc3BvcnRfc2V0X3B1bGxfZnVuY3Rpb24NCisjZGVmaW5lIGZuX2du dXRsc190cmFuc3BvcnRfc2V0X3B1c2hfZnVuY3Rpb24JZ251dGxzX3RyYW5zcG9ydF9zZXRfcHVz aF9mdW5jdGlvbg0KKyNkZWZpbmUgZm5fZ251dGxzX3g1MDlfY3J0X2NoZWNrX2hvc3RuYW1lCWdu dXRsc194NTA5X2NydF9jaGVja19ob3N0bmFtZQ0KKyNkZWZpbmUgZm5fZ251dGxzX3g1MDlfY3J0 X2RlaW5pdAkJZ251dGxzX3g1MDlfY3J0X2RlaW5pdA0KKyNkZWZpbmUgZm5fZ251dGxzX3g1MDlf Y3J0X2ltcG9ydAkJZ251dGxzX3g1MDlfY3J0X2ltcG9ydA0KKyNkZWZpbmUgZm5fZ251dGxzX3g1 MDlfY3J0X2luaXQJCQlnbnV0bHNfeDUwOV9jcnRfaW5pdA0KKw0KKyNlbmRpZiAvKiAhV0lORE9X U05UICovDQorDQorDA0KIHN0YXRpYyB2b2lkDQogZ251dGxzX2xvZ19mdW5jdGlvbiAoaW50IGxl dmVsLCBjb25zdCBjaGFyKiBzdHJpbmcpDQogew0KQEAgLTgyLDExICsyMjIsMTEgQEANCiAgICAg ICAvKiBPbiBXMzIgd2UgY2Fubm90IHRyYW5zZmVyIHNvY2tldCBoYW5kbGVzIGJldHdlZW4gZGlm ZmVyZW50IHJ1bnRpbWUNCiAgICAgICAgICBsaWJyYXJpZXMsIHNvIHdlIHRlbGwgR251VExTIHRv IHVzZSBvdXIgc3BlY2lhbCBwdXNoL3B1bGwNCiAgICAgICAgICBmdW5jdGlvbnMuICAqLw0KLSAg ICAgIGdudXRsc190cmFuc3BvcnRfc2V0X3B0cjIgKHN0YXRlLA0KKyAgICAgIGZuX2dudXRsc190 cmFuc3BvcnRfc2V0X3B0cjIgKHN0YXRlLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChnbnV0bHNfdHJhbnNwb3J0X3B0cl90KSBwcm9jLA0KICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChnbnV0bHNfdHJhbnNwb3J0X3B0cl90KSBwcm9jKTsNCi0gICAgICBnbnV0 bHNfdHJhbnNwb3J0X3NldF9wdXNoX2Z1bmN0aW9uIChzdGF0ZSwgJmVtYWNzX2dudXRsc19wdXNo KTsNCi0gICAgICBnbnV0bHNfdHJhbnNwb3J0X3NldF9wdWxsX2Z1bmN0aW9uIChzdGF0ZSwgJmVt YWNzX2dudXRsc19wdWxsKTsNCisgICAgICBmbl9nbnV0bHNfdHJhbnNwb3J0X3NldF9wdXNoX2Z1 bmN0aW9uIChzdGF0ZSwgJmVtYWNzX2dudXRsc19wdXNoKTsNCisgICAgICBmbl9nbnV0bHNfdHJh bnNwb3J0X3NldF9wdWxsX2Z1bmN0aW9uIChzdGF0ZSwgJmVtYWNzX2dudXRsc19wdWxsKTsNCiAN CiAgICAgICAvKiBGb3Igbm9uIGJsb2NraW5nIHNvY2tldHMgb3Igb3RoZXIgY3VzdG9tIG1hZGUg cHVsbC9wdXNoDQogICAgICAgICAgZnVuY3Rpb25zIHRoZSBnbnV0bHNfdHJhbnNwb3J0X3NldF9s b3dhdCBtdXN0IGJlIGNhbGxlZCwgd2l0aA0KQEAgLTk1LDEyICsyMzUsMTIgQEANCiAgICAgICAg ICAoTm90ZTogdGhpcyBpcyBwcm9iYWJseSBub3Qgc3RyaWN0bHkgbmVjZXNzYXJ5IGFzIHRoZSBs b3dhdA0KICAgICAgICAgICB2YWx1ZSBpcyBvbmx5IHVzZWQgd2hlbiBubyBjdXN0b20gcHVsbC9w dXNoIGZ1bmN0aW9ucyBhcmUNCiAgICAgICAgICAgc2V0LikgICovDQotICAgICAgZ251dGxzX3Ry YW5zcG9ydF9zZXRfbG93YXQgKHN0YXRlLCAwKTsNCisgICAgICBmbl9nbnV0bHNfdHJhbnNwb3J0 X3NldF9sb3dhdCAoc3RhdGUsIDApOw0KICNlbHNlDQogICAgICAgLyogVGhpcyBpcyBob3cgR251 VExTIHRha2VzIHNvY2tldHM6IGFzIGZpbGUgZGVzY3JpcHRvcnMgcGFzc2VkDQogICAgICAgICAg aW4uICBGb3IgYW4gRW1hY3MgcHJvY2VzcyBzb2NrZXQsIGluZmQgYW5kIG91dGZkIGFyZSB0aGUN CiAgICAgICAgICBzYW1lIGJ1dCB3ZSB1c2UgdGhpcyB0d28tYXJndW1lbnQgdmVyc2lvbiBmb3Ig Y2xhcml0eS4gICovDQotICAgICAgZ251dGxzX3RyYW5zcG9ydF9zZXRfcHRyMiAoc3RhdGUsDQor ICAgICAgZm5fZ251dGxzX3RyYW5zcG9ydF9zZXRfcHRyMiAoc3RhdGUsDQogICAgICAgICAJCQkg KGdudXRsc190cmFuc3BvcnRfcHRyX3QpIChsb25nKSBwcm9jLT5pbmZkLA0KICAgICAgICAgCQkJ IChnbnV0bHNfdHJhbnNwb3J0X3B0cl90KSAobG9uZykgcHJvYy0+b3V0ZmQpOw0KICNlbmRpZg0K QEAgLTExMCwxMCArMjUwLDEwIEBADQogDQogICBkbw0KICAgICB7DQotICAgICAgcmV0ID0gZ251 dGxzX2hhbmRzaGFrZSAoc3RhdGUpOw0KKyAgICAgIHJldCA9IGZuX2dudXRsc19oYW5kc2hha2Ug KHN0YXRlKTsNCiAgICAgICBlbWFjc19nbnV0bHNfaGFuZGxlX2Vycm9yIChzdGF0ZSwgcmV0KTsN CiAgICAgfQ0KLSAgd2hpbGUgKHJldCA8IDAgJiYgZ251dGxzX2Vycm9yX2lzX2ZhdGFsIChyZXQp ID09IDApOw0KKyAgd2hpbGUgKHJldCA8IDAgJiYgZm5fZ251dGxzX2Vycm9yX2lzX2ZhdGFsIChy ZXQpID09IDApOw0KIA0KICAgcHJvYy0+Z251dGxzX2luaXRzdGFnZSA9IEdOVVRMU19TVEFHRV9I QU5EU0hBS0VfVFJJRUQ7DQogDQpAQCAtMTI0LDExICsyNjQsMjMgQEANCiAgICAgfQ0KICAgZWxz ZQ0KICAgICB7DQotICAgICAgICBnbnV0bHNfYWxlcnRfc2VuZF9hcHByb3ByaWF0ZSAoc3RhdGUs IHJldCk7DQorICAgICAgZm5fZ251dGxzX2FsZXJ0X3NlbmRfYXBwcm9wcmlhdGUgKHN0YXRlLCBy ZXQpOw0KICAgICB9DQogICByZXR1cm4gcmV0Ow0KIH0NCiANCitpbnQNCitlbWFjc19nbnV0bHNf cmVjb3JkX2NoZWNrX3BlbmRpbmcgKGdudXRsc19zZXNzaW9uX3Qgc3RhdGUpDQorew0KKyAgcmV0 dXJuIGZuX2dudXRsc19yZWNvcmRfY2hlY2tfcGVuZGluZyAoc3RhdGUpOw0KK30NCisNCit2b2lk DQorZW1hY3NfZ251dGxzX3RyYW5zcG9ydF9zZXRfZXJybm8gKGdudXRsc19zZXNzaW9uX3Qgc3Rh dGUsIGludCBlcnIpDQorew0KKyAgZm5fZ251dGxzX3RyYW5zcG9ydF9zZXRfZXJybm8gKHN0YXRl LCBlcnIpOw0KK30NCisNCiBFTUFDU19JTlQNCiBlbWFjc19nbnV0bHNfd3JpdGUgKGludCBmaWxk ZXMsIHN0cnVjdCBMaXNwX1Byb2Nlc3MgKnByb2MsIGNvbnN0IGNoYXIgKmJ1ZiwNCiAgICAgICAg ICAgICAgICAgICAgIEVNQUNTX0lOVCBuYnl0ZSkNCkBAIC0xNTEsNyArMzAzLDcgQEANCiANCiAg IHdoaWxlIChuYnl0ZSA+IDApDQogICAgIHsNCi0gICAgICBydG52YWwgPSBnbnV0bHNfd3JpdGUg KHN0YXRlLCBidWYsIG5ieXRlKTsNCisgICAgICBydG52YWwgPSBmbl9nbnV0bHNfcmVjb3JkX3Nl bmQgKHN0YXRlLCBidWYsIG5ieXRlKTsNCiANCiAgICAgICBpZiAocnRudmFsIDwgMCkNCiAgICAg ICAgIHsNCkBAIC0xODIsNyArMzM0LDcgQEANCiAgICAgICBlbWFjc19nbnV0bHNfaGFuZHNoYWtl IChwcm9jKTsNCiAgICAgICByZXR1cm4gLTE7DQogICAgIH0NCi0gIHJ0bnZhbCA9IGdudXRsc19y ZWFkIChzdGF0ZSwgYnVmLCBuYnl0ZSk7DQorICBydG52YWwgPSBmbl9nbnV0bHNfcmVjb3JkX3Jl Y3YgKHN0YXRlLCBidWYsIG5ieXRlKTsNCiAgIGlmIChydG52YWwgPj0gMCkNCiAgICAgcmV0dXJu IHJ0bnZhbDsNCiAgIGVsc2UgaWYgKGVtYWNzX2dudXRsc19oYW5kbGVfZXJyb3IgKHN0YXRlLCBy dG52YWwpID09IDApDQpAQCAtMjE0LDExICszNjYsMTEgQEANCiANCiAgIC8qIFRPRE86IHVzZSBn bnV0bHMtZXJyb3ItZmF0YWxwIGFuZCBnbnV0bHMtZXJyb3Itc3RyaW5nLiAgKi8NCiANCi0gIHN0 ciA9IGdudXRsc19zdHJlcnJvciAoZXJyKTsNCisgIHN0ciA9IGZuX2dudXRsc19zdHJlcnJvciAo ZXJyKTsNCiAgIGlmICghc3RyKQ0KICAgICBzdHIgPSAidW5rbm93biI7DQogDQotICBpZiAoZ251 dGxzX2Vycm9yX2lzX2ZhdGFsIChlcnIpKQ0KKyAgaWYgKGZuX2dudXRsc19lcnJvcl9pc19mYXRh bCAoZXJyKSkNCiAgICAgew0KICAgICAgIHJldCA9IGVycjsNCiAgICAgICBHTlVUTFNfTE9HMiAo MCwgbWF4X2xvZ19sZXZlbCwgImZhdGFsIGVycm9yOiIsIHN0cik7DQpAQCAtMjMzLDkgKzM4NSw5 IEBADQogICBpZiAoZXJyID09IEdOVVRMU19FX1dBUk5JTkdfQUxFUlRfUkVDRUlWRUQNCiAgICAg ICB8fCBlcnIgPT0gR05VVExTX0VfRkFUQUxfQUxFUlRfUkVDRUlWRUQpDQogICAgIHsNCi0gICAg ICBpbnQgYWxlcnQgPSBnbnV0bHNfYWxlcnRfZ2V0IChzZXNzaW9uKTsNCisgICAgICBpbnQgYWxl cnQgPSBmbl9nbnV0bHNfYWxlcnRfZ2V0IChzZXNzaW9uKTsNCiAgICAgICBpbnQgbGV2ZWwgPSAo ZXJyID09IEdOVVRMU19FX0ZBVEFMX0FMRVJUX1JFQ0VJVkVEKSA/IDAgOiAxOw0KLSAgICAgIHN0 ciA9IGdudXRsc19hbGVydF9nZXRfbmFtZSAoYWxlcnQpOw0KKyAgICAgIHN0ciA9IGZuX2dudXRs c19hbGVydF9nZXRfbmFtZSAoYWxlcnQpOw0KICAgICAgIGlmICghc3RyKQ0KIAlzdHIgPSAidW5r bm93biI7DQogDQpAQCAtMzEzLDcgKzQ2NSw3IEBADQogICBpZiAoIU5VTUJFUlAgKGVycikpDQog ICAgIGVycm9yICgiTm90IGFuIGVycm9yIHN5bWJvbCBvciBjb2RlIik7DQogDQotICBpZiAoMCA9 PSBnbnV0bHNfZXJyb3JfaXNfZmF0YWwgKFhJTlQgKGVycikpKQ0KKyAgaWYgKDAgPT0gZm5fZ251 dGxzX2Vycm9yX2lzX2ZhdGFsIChYSU5UIChlcnIpKSkNCiAgICAgcmV0dXJuIFFuaWw7DQogDQog ICByZXR1cm4gUXQ7DQpAQCAtMzQ1LDcgKzQ5Nyw3IEBADQogICBpZiAoIU5VTUJFUlAgKGVycikp DQogICAgIHJldHVybiBidWlsZF9zdHJpbmcgKCJOb3QgYW4gZXJyb3Igc3ltYm9sIG9yIGNvZGUi KTsNCiANCi0gIHJldHVybiBidWlsZF9zdHJpbmcgKGdudXRsc19zdHJlcnJvciAoWElOVCAoZXJy KSkpOw0KKyAgcmV0dXJuIGJ1aWxkX3N0cmluZyAoZm5fZ251dGxzX3N0cmVycm9yIChYSU5UIChl cnIpKSk7DQogfQ0KIA0KIERFRlVOICgiZ251dGxzLWRlaW5pdCIsIEZnbnV0bHNfZGVpbml0LCBT Z251dGxzX2RlaW5pdCwgMSwgMSwgMCwNCkBAIC0zNjAsMTMgKzUxMiwzNCBAQA0KIA0KICAgaWYg KEdOVVRMU19JTklUU1RBR0UgKHByb2MpID49IEdOVVRMU19TVEFHRV9JTklUKQ0KICAgICB7DQot ICAgICAgZ251dGxzX2RlaW5pdCAoc3RhdGUpOw0KKyAgICAgIGZuX2dudXRsc19kZWluaXQgKHN0 YXRlKTsNCiAgICAgICBHTlVUTFNfSU5JVFNUQUdFIChwcm9jKSA9IEdOVVRMU19TVEFHRV9JTklU IC0gMTsNCiAgICAgfQ0KIA0KICAgcmV0dXJuIFF0Ow0KIH0NCiANCitERUZVTiAoImdudXRscy1h dmFpbGFibGUtcCIsIEZnbnV0bHNfYXZhaWxhYmxlX3AsIFNnbnV0bHNfYXZhaWxhYmxlX3AsIDAs IDAsIDAsDQorICAgICAgIGRvYzogLyogUmV0dXJuIHQgaWYgR251VExTIGlzIGF2YWlsYWJsZSBp biB0aGlzIGluc3RhbmNlIG9mIEVtYWNzLiAgKi8pDQorICAgICAodm9pZCkNCit7DQorI2lmZGVm IFdJTkRPV1NOVA0KKyAgTGlzcF9PYmplY3QgZm91bmQgPSBGYXNzcSAoUWdudXRsc19kbGwsIFZs aWJyYXJ5X2NhY2hlKTsNCisgIGlmIChDT05TUCAoZm91bmQpKQ0KKyAgICByZXR1cm4gWENEUiAo Zm91bmQpOw0KKyAgZWxzZQ0KKyAgICB7DQorICAgICAgTGlzcF9PYmplY3Qgc3RhdHVzOw0KKyAg ICAgIHN0YXR1cyA9IGluaXRfZ251dGxzX2Z1bmN0aW9ucyAoVmR5bmFtaWNfbGlicmFyeV9hbGlz dCkgPyBRdCA6IFFuaWw7DQorICAgICAgVmxpYnJhcnlfY2FjaGUgPSBGY29ucyAoRmNvbnMgKFFn bnV0bHNfZGxsLCBzdGF0dXMpLCBWbGlicmFyeV9jYWNoZSk7DQorICAgICAgcmV0dXJuIHN0YXR1 czsNCisgICAgfQ0KKyNlbHNlDQorICByZXR1cm4gUXQ7DQorI2VuZGlmDQorfQ0KKw0KKw0KIC8q IEluaXRpYWxpemVzIGdsb2JhbCBHbnVUTFMgc3RhdGUgdG8gZGVmYXVsdHMuDQogQ2FsbCBgZ251 dGxzLWdsb2JhbC1kZWluaXQnIHdoZW4gR251VExTIHVzYWdlIGlzIG5vIGxvbmdlciBuZWVkZWQu DQogUmV0dXJucyB6ZXJvIG9uIHN1Y2Nlc3MuICAqLw0KQEAgLTM3Niw4ICs1NDksNyBAQA0KICAg aW50IHJldCA9IEdOVVRMU19FX1NVQ0NFU1M7DQogDQogICBpZiAoIWdudXRsc19nbG9iYWxfaW5p dGlhbGl6ZWQpDQotICAgIHJldCA9IGdudXRsc19nbG9iYWxfaW5pdCAoKTsNCi0NCisgICAgcmV0 ID0gZm5fZ251dGxzX2dsb2JhbF9pbml0ICgpOw0KICAgZ251dGxzX2dsb2JhbF9pbml0aWFsaXpl ZCA9IDE7DQogDQogICByZXR1cm4gZ251dGxzX21ha2VfZXJyb3IgKHJldCk7DQpAQCAtNDgzLDYg KzY1NSwxMiBAQA0KICAgQ0hFQ0tfU1lNQk9MICh0eXBlKTsNCiAgIENIRUNLX0xJU1QgKHByb3Bs aXN0KTsNCiANCisgIGlmIChOSUxQIChGZ251dGxzX2F2YWlsYWJsZV9wICgpKSkNCisgICAgew0K KyAgICAgIGVycm9yICgiR251VExTIG5vdCBhdmFpbGFibGUiKTsNCisgICAgICByZXR1cm4gZ251 dGxzX21ha2VfZXJyb3IgKEdOVVRMU19FTUFDU19FUlJPUl9OT1RfTE9BREVEKTsNCisgICAgfQ0K Kw0KICAgaG9zdG5hbWUgICAgICAgICAgICAgID0gRnBsaXN0X2dldCAocHJvcGxpc3QsIFFnbnV0 bHNfYm9vdHByb3BfaG9zdG5hbWUpOw0KICAgcHJpb3JpdHlfc3RyaW5nICAgICAgID0gRnBsaXN0 X2dldCAocHJvcGxpc3QsIFFnbnV0bHNfYm9vdHByb3BfcHJpb3JpdHkpOw0KICAgdHJ1c3RmaWxl cyAgICAgICAgICAgID0gRnBsaXN0X2dldCAocHJvcGxpc3QsIFFnbnV0bHNfYm9vdHByb3BfdHJ1 c3RmaWxlcyk7DQpAQCAtNTAzLDggKzY4MSw4IEBADQogDQogICBpZiAoTlVNQkVSUCAobG9nbGV2 ZWwpKQ0KICAgICB7DQotICAgICAgZ251dGxzX2dsb2JhbF9zZXRfbG9nX2Z1bmN0aW9uIChnbnV0 bHNfbG9nX2Z1bmN0aW9uKTsNCi0gICAgICBnbnV0bHNfZ2xvYmFsX3NldF9sb2dfbGV2ZWwgKFhJ TlQgKGxvZ2xldmVsKSk7DQorICAgICAgZm5fZ251dGxzX2dsb2JhbF9zZXRfbG9nX2Z1bmN0aW9u IChnbnV0bHNfbG9nX2Z1bmN0aW9uKTsNCisgICAgICBmbl9nbnV0bHNfZ2xvYmFsX3NldF9sb2df bGV2ZWwgKFhJTlQgKGxvZ2xldmVsKSk7DQogICAgICAgbWF4X2xvZ19sZXZlbCA9IFhJTlQgKGxv Z2xldmVsKTsNCiAgICAgICBYUFJPQ0VTUyAocHJvYyktPmdudXRsc19sb2dfbGV2ZWwgPSBtYXhf bG9nX2xldmVsOw0KICAgICB9DQpAQCAtNTIzLDEzICs3MDEsMTMgQEANCiAJew0KICAgICAgICAg ICBHTlVUTFNfTE9HICgyLCBtYXhfbG9nX2xldmVsLCAiZGVhbGxvY2F0aW5nIHg1MDkgY3JlZGVu dGlhbHMiKTsNCiAgICAgICAgICAgeDUwOV9jcmVkID0gWFBST0NFU1MgKHByb2MpLT5nbnV0bHNf eDUwOV9jcmVkOw0KLSAgICAgICAgICBnbnV0bHNfY2VydGlmaWNhdGVfZnJlZV9jcmVkZW50aWFs cyAoeDUwOV9jcmVkKTsNCisgICAgICAgICAgZm5fZ251dGxzX2NlcnRpZmljYXRlX2ZyZWVfY3Jl ZGVudGlhbHMgKHg1MDlfY3JlZCk7DQogCX0NCiAgICAgICBlbHNlIGlmIChFUSAodHlwZSwgUWdu dXRsc19hbm9uKSkNCiAJew0KICAgICAgICAgICBHTlVUTFNfTE9HICgyLCBtYXhfbG9nX2xldmVs LCAiZGVhbGxvY2F0aW5nIGFub24gY3JlZGVudGlhbHMiKTsNCiAgICAgICAgICAgYW5vbl9jcmVk ID0gWFBST0NFU1MgKHByb2MpLT5nbnV0bHNfYW5vbl9jcmVkOw0KLSAgICAgICAgICBnbnV0bHNf YW5vbl9mcmVlX2NsaWVudF9jcmVkZW50aWFscyAoYW5vbl9jcmVkKTsNCisgICAgICAgICAgZm5f Z251dGxzX2Fub25fZnJlZV9jbGllbnRfY3JlZGVudGlhbHMgKGFub25fY3JlZCk7DQogCX0NCiAg ICAgICBlbHNlDQogCXsNCkBAIC01NTIsNyArNzMwLDcgQEANCiAgICAgew0KICAgICAgIEdOVVRM U19MT0cgKDIsIG1heF9sb2dfbGV2ZWwsICJhbGxvY2F0aW5nIHg1MDkgY3JlZGVudGlhbHMiKTsN CiAgICAgICB4NTA5X2NyZWQgPSBYUFJPQ0VTUyAocHJvYyktPmdudXRsc194NTA5X2NyZWQ7DQot ICAgICAgaWYgKGdudXRsc19jZXJ0aWZpY2F0ZV9hbGxvY2F0ZV9jcmVkZW50aWFscyAoJng1MDlf Y3JlZCkgPCAwKQ0KKyAgICAgIGlmIChmbl9nbnV0bHNfY2VydGlmaWNhdGVfYWxsb2NhdGVfY3Jl ZGVudGlhbHMgKCZ4NTA5X2NyZWQpIDwgMCkNCiAgICAgICAgIG1lbW9yeV9mdWxsICgpOw0KIA0K ICAgICAgIGlmIChOVU1CRVJQICh2ZXJpZnlfZmxhZ3MpKQ0KQEAgLTU3MCwxMyArNzQ4LDEzIEBA DQogICAgICAgICAgIC8qIFRoZSBkZWZhdWx0IGlzIGFscmVhZHkgR05VVExTX1ZFUklGWV9BTExP V19YNTA5X1YxX0NBX0NSVC4gICovDQogICAgICAgICAgIEdOVVRMU19MT0cgKDIsIG1heF9sb2df bGV2ZWwsICJpZ25vcmluZyBpbnZhbGlkIHZlcmlmeS1mbGFncyIpOw0KICAgICAgICAgfQ0KLSAg ICAgIGdudXRsc19jZXJ0aWZpY2F0ZV9zZXRfdmVyaWZ5X2ZsYWdzICh4NTA5X2NyZWQsIGdudXRs c192ZXJpZnlfZmxhZ3MpOw0KKyAgICAgIGZuX2dudXRsc19jZXJ0aWZpY2F0ZV9zZXRfdmVyaWZ5 X2ZsYWdzICh4NTA5X2NyZWQsIGdudXRsc192ZXJpZnlfZmxhZ3MpOw0KICAgICB9DQogICBlbHNl IGlmIChFUSAodHlwZSwgUWdudXRsc19hbm9uKSkNCiAgICAgew0KICAgICAgIEdOVVRMU19MT0cg KDIsIG1heF9sb2dfbGV2ZWwsICJhbGxvY2F0aW5nIGFub24gY3JlZGVudGlhbHMiKTsNCiAgICAg ICBhbm9uX2NyZWQgPSBYUFJPQ0VTUyAocHJvYyktPmdudXRsc19hbm9uX2NyZWQ7DQotICAgICAg aWYgKGdudXRsc19hbm9uX2FsbG9jYXRlX2NsaWVudF9jcmVkZW50aWFscyAoJmFub25fY3JlZCkg PCAwKQ0KKyAgICAgIGlmIChmbl9nbnV0bHNfYW5vbl9hbGxvY2F0ZV9jbGllbnRfY3JlZGVudGlh bHMgKCZhbm9uX2NyZWQpIDwgMCkNCiAgICAgICAgIG1lbW9yeV9mdWxsICgpOw0KICAgICB9DQog ICBlbHNlDQpAQCAtNTk5LDcgKzc3Nyw3IEBADQogICAgICAgICAgICAgew0KICAgICAgICAgICAg ICAgR05VVExTX0xPRzIgKDEsIG1heF9sb2dfbGV2ZWwsICJzZXR0aW5nIHRoZSB0cnVzdGZpbGU6 ICIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgU1NEQVRBICh0cnVzdGZpbGUpKTsNCi0g ICAgICAgICAgICAgIHJldCA9IGdudXRsc19jZXJ0aWZpY2F0ZV9zZXRfeDUwOV90cnVzdF9maWxl DQorICAgICAgICAgICAgICByZXQgPSBmbl9nbnV0bHNfY2VydGlmaWNhdGVfc2V0X3g1MDlfdHJ1 c3RfZmlsZQ0KICAgICAgICAgICAgICAgICAoeDUwOV9jcmVkLA0KICAgICAgICAgICAgICAgICAg U1NEQVRBICh0cnVzdGZpbGUpLA0KICAgICAgICAgICAgICAgICAgZmlsZV9mb3JtYXQpOw0KQEAg LTYyMSw3ICs3OTksNyBAQA0KICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgIEdOVVRMU19M T0cyICgxLCBtYXhfbG9nX2xldmVsLCAic2V0dGluZyB0aGUga2V5ZmlsZTogIiwNCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICBTU0RBVEEgKGtleWZpbGUpKTsNCi0gICAgICAgICAgICAgIHJl dCA9IGdudXRsc19jZXJ0aWZpY2F0ZV9zZXRfeDUwOV9jcmxfZmlsZQ0KKyAgICAgICAgICAgICAg cmV0ID0gZm5fZ251dGxzX2NlcnRpZmljYXRlX3NldF94NTA5X2NybF9maWxlDQogICAgICAgICAg ICAgICAgICh4NTA5X2NyZWQsDQogICAgICAgICAgICAgICAgICBTU0RBVEEgKGtleWZpbGUpLA0K ICAgICAgICAgICAgICAgICAgZmlsZV9mb3JtYXQpOw0KQEAgLTY0OSw3ICs4MjcsNyBAQA0KIA0K ICAgR05VVExTX0xPRyAoMSwgbWF4X2xvZ19sZXZlbCwgImdudXRsc19pbml0Iik7DQogDQotICBy ZXQgPSBnbnV0bHNfaW5pdCAoJnN0YXRlLCBHTlVUTFNfQ0xJRU5UKTsNCisgIHJldCA9IGZuX2du dXRsc19pbml0ICgmc3RhdGUsIEdOVVRMU19DTElFTlQpOw0KIA0KICAgaWYgKHJldCA8IEdOVVRM U19FX1NVQ0NFU1MpDQogICAgIHJldHVybiBnbnV0bHNfbWFrZV9lcnJvciAocmV0KTsNCkBAIC02 NzIsNyArODUwLDcgQEANCiANCiAgIEdOVVRMU19MT0cgKDEsIG1heF9sb2dfbGV2ZWwsICJzZXR0 aW5nIHRoZSBwcmlvcml0eSBzdHJpbmciKTsNCiANCi0gIHJldCA9IGdudXRsc19wcmlvcml0eV9z ZXRfZGlyZWN0IChzdGF0ZSwNCisgIHJldCA9IGZuX2dudXRsc19wcmlvcml0eV9zZXRfZGlyZWN0 IChzdGF0ZSwNCiAJCQkJICAgIHByaW9yaXR5X3N0cmluZ19wdHIsDQogCQkJCSAgICBOVUxMKTsN CiANCkBAIC02ODMsMTEgKzg2MSwxMSBAQA0KIA0KICAgaWYgKEVRICh0eXBlLCBRZ251dGxzX3g1 MDlwa2kpKQ0KICAgICB7DQotICAgICAgcmV0ID0gZ251dGxzX2NyZWRfc2V0IChzdGF0ZSwgR05V VExTX0NSRF9DRVJUSUZJQ0FURSwgeDUwOV9jcmVkKTsNCisgICAgICByZXQgPSBmbl9nbnV0bHNf Y3JlZGVudGlhbHNfc2V0IChzdGF0ZSwgR05VVExTX0NSRF9DRVJUSUZJQ0FURSwgeDUwOV9jcmVk KTsNCiAgICAgfQ0KICAgZWxzZSBpZiAoRVEgKHR5cGUsIFFnbnV0bHNfYW5vbikpDQogICAgIHsN Ci0gICAgICByZXQgPSBnbnV0bHNfY3JlZF9zZXQgKHN0YXRlLCBHTlVUTFNfQ1JEX0FOT04sIGFu b25fY3JlZCk7DQorICAgICAgcmV0ID0gZm5fZ251dGxzX2NyZWRlbnRpYWxzX3NldCAoc3RhdGUs IEdOVVRMU19DUkRfQU5PTiwgYW5vbl9jcmVkKTsNCiAgICAgfQ0KICAgZWxzZQ0KICAgICB7DQpA QCAtNzE1LDcgKzg5Myw3IEBADQogICAgICBjaGVjayBvZiB0aGUgY2VydGlmaWNhdGUncyBob3N0 bmFtZSB3aXRoDQogICAgICBnbnV0bHNfeDUwOV9jcnRfY2hlY2tfaG9zdG5hbWUoKSBhZ2FpbnN0 IDpob3N0bmFtZS4gICovDQogDQotICByZXQgPSBnbnV0bHNfY2VydGlmaWNhdGVfdmVyaWZ5X3Bl ZXJzMiAoc3RhdGUsICZwZWVyX3ZlcmlmaWNhdGlvbik7DQorICByZXQgPSBmbl9nbnV0bHNfY2Vy dGlmaWNhdGVfdmVyaWZ5X3BlZXJzMiAoc3RhdGUsICZwZWVyX3ZlcmlmaWNhdGlvbik7DQogDQog ICBpZiAocmV0IDwgR05VVExTX0VfU1VDQ0VTUykNCiAgICAgcmV0dXJuIGdudXRsc19tYWtlX2Vy cm9yIChyZXQpOw0KQEAgLTc2NiwxNSArOTQ0LDE1IEBADQogICAvKiBVcCB0byBoZXJlIHRoZSBw cm9jZXNzIGlzIHRoZSBzYW1lIGZvciBYLjUwOSBjZXJ0aWZpY2F0ZXMgYW5kDQogICAgICBPcGVu UEdQIGtleXMuICBGcm9tIG5vdyBvbiBYLjUwOSBjZXJ0aWZpY2F0ZXMgYXJlIGFzc3VtZWQuICBU aGlzDQogICAgICBjYW4gYmUgZWFzaWx5IGV4dGVuZGVkIHRvIHdvcmsgd2l0aCBvcGVucGdwIGtl eXMgYXMgd2VsbC4gICovDQotICBpZiAoZ251dGxzX2NlcnRpZmljYXRlX3R5cGVfZ2V0IChzdGF0 ZSkgPT0gR05VVExTX0NSVF9YNTA5KQ0KKyAgaWYgKGZuX2dudXRsc19jZXJ0aWZpY2F0ZV90eXBl X2dldCAoc3RhdGUpID09IEdOVVRMU19DUlRfWDUwOSkNCiAgICAgew0KLSAgICAgIHJldCA9IGdu dXRsc194NTA5X2NydF9pbml0ICgmZ251dGxzX3ZlcmlmeV9jZXJ0KTsNCisgICAgICByZXQgPSBm bl9nbnV0bHNfeDUwOV9jcnRfaW5pdCAoJmdudXRsc192ZXJpZnlfY2VydCk7DQogDQogICAgICAg aWYgKHJldCA8IEdOVVRMU19FX1NVQ0NFU1MpDQogICAgICAgICByZXR1cm4gZ251dGxzX21ha2Vf ZXJyb3IgKHJldCk7DQogDQogICAgICAgZ251dGxzX3ZlcmlmeV9jZXJ0X2xpc3QgPQ0KLSAgICAg ICAgZ251dGxzX2NlcnRpZmljYXRlX2dldF9wZWVycyAoc3RhdGUsICZnbnV0bHNfdmVyaWZ5X2Nl cnRfbGlzdF9zaXplKTsNCisgICAgICAgIGZuX2dudXRsc19jZXJ0aWZpY2F0ZV9nZXRfcGVlcnMg KHN0YXRlLCAmZ251dGxzX3ZlcmlmeV9jZXJ0X2xpc3Rfc2l6ZSk7DQogDQogICAgICAgaWYgKE5V TEwgPT0gZ251dGxzX3ZlcmlmeV9jZXJ0X2xpc3QpDQogICAgICAgICB7DQpAQCAtNzgyLDE3ICs5 NjAsMTcgQEANCiAgICAgICAgIH0NCiANCiAgICAgICAvKiBXZSBvbmx5IGNoZWNrIHRoZSBmaXJz dCBjZXJ0aWZpY2F0ZSBpbiB0aGUgZ2l2ZW4gY2hhaW4uICAqLw0KLSAgICAgIHJldCA9IGdudXRs c194NTA5X2NydF9pbXBvcnQgKGdudXRsc192ZXJpZnlfY2VydCwNCisgICAgICByZXQgPSBmbl9n bnV0bHNfeDUwOV9jcnRfaW1wb3J0IChnbnV0bHNfdmVyaWZ5X2NlcnQsDQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJmdudXRsc192ZXJpZnlfY2VydF9saXN0WzBdLA0KICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdOVVRMU19YNTA5X0ZNVF9ERVIpOw0K IA0KICAgICAgIGlmIChyZXQgPCBHTlVUTFNfRV9TVUNDRVNTKQ0KICAgICAgICAgew0KLSAgICAg ICAgICBnbnV0bHNfeDUwOV9jcnRfZGVpbml0IChnbnV0bHNfdmVyaWZ5X2NlcnQpOw0KKyAgICAg ICAgICBmbl9nbnV0bHNfeDUwOV9jcnRfZGVpbml0IChnbnV0bHNfdmVyaWZ5X2NlcnQpOw0KICAg ICAgICAgICByZXR1cm4gZ251dGxzX21ha2VfZXJyb3IgKHJldCk7DQogICAgICAgICB9DQogDQot ICAgICAgaWYgKCFnbnV0bHNfeDUwOV9jcnRfY2hlY2tfaG9zdG5hbWUgKGdudXRsc192ZXJpZnlf Y2VydCwgY19ob3N0bmFtZSkpDQorICAgICAgaWYgKCFmbl9nbnV0bHNfeDUwOV9jcnRfY2hlY2tf aG9zdG5hbWUgKGdudXRsc192ZXJpZnlfY2VydCwgY19ob3N0bmFtZSkpDQogICAgICAgICB7DQog ICAgICAgICAgIGlmIChOSUxQICh2ZXJpZnlfaG9zdG5hbWVfZXJyb3IpKQ0KICAgICAgICAgICAg IHsNCkBAIC04MDEsMTMgKzk3OSwxMyBAQA0KICAgICAgICAgICAgIH0NCiAgICAgICAgICAgZWxz ZQ0KICAgICAgICAgICAgIHsNCi0gICAgICAgICAgICAgIGdudXRsc194NTA5X2NydF9kZWluaXQg KGdudXRsc192ZXJpZnlfY2VydCk7DQorICAgICAgICAgICAgICBmbl9nbnV0bHNfeDUwOV9jcnRf ZGVpbml0IChnbnV0bHNfdmVyaWZ5X2NlcnQpOw0KICAgICAgICAgICAgICAgZXJyb3IgKCJUaGUg eDUwOSBjZXJ0aWZpY2F0ZSBkb2VzIG5vdCBtYXRjaCBcIiVzXCIiLA0KICAgICAgICAgICAgICAg ICAgICAgIGNfaG9zdG5hbWUpOw0KICAgICAgICAgICAgIH0NCiAgICAgICAgIH0NCiANCi0gICAg ICBnbnV0bHNfeDUwOV9jcnRfZGVpbml0IChnbnV0bHNfdmVyaWZ5X2NlcnQpOw0KKyAgICAgIGZu X2dudXRsc194NTA5X2NydF9kZWluaXQgKGdudXRsc192ZXJpZnlfY2VydCk7DQogICAgIH0NCiAN CiAgIHJldHVybiBnbnV0bHNfbWFrZV9lcnJvciAocmV0KTsNCkBAIC04MzYsNyArMTAxNCw3IEBA DQogDQogICBzdGF0ZSA9IFhQUk9DRVNTIChwcm9jKS0+Z251dGxzX3N0YXRlOw0KIA0KLSAgcmV0 ID0gZ251dGxzX2J5ZSAoc3RhdGUsDQorICByZXQgPSBmbl9nbnV0bHNfYnllIChzdGF0ZSwNCiAg ICAgICAgICAgICAgICAgICAgIE5JTFAgKGNvbnQpID8gR05VVExTX1NIVVRfUkRXUiA6IEdOVVRM U19TSFVUX1dSKTsNCiANCiAgIHJldHVybiBnbnV0bHNfbWFrZV9lcnJvciAocmV0KTsNCkBAIC04 NDcsNiArMTAyNSw5IEBADQogew0KICAgZ251dGxzX2dsb2JhbF9pbml0aWFsaXplZCA9IDA7DQog DQorICBRZ251dGxzX2RsbCA9IGludGVybl9jX3N0cmluZyAoImdudXRscyIpOw0KKyAgc3RhdGlj cHJvICgmUWdudXRsc19kbGwpOw0KKw0KICAgUWdudXRsc19sb2dfbGV2ZWwgPSBpbnRlcm5fY19z dHJpbmcgKCJnbnV0bHMtbG9nLWxldmVsIik7DQogICBzdGF0aWNwcm8gKCZRZ251dGxzX2xvZ19s ZXZlbCk7DQogDQpAQCAtOTE3LDYgKzEwOTgsNyBAQA0KICAgZGVmc3ViciAoJlNnbnV0bHNfYm9v dCk7DQogICBkZWZzdWJyICgmU2dudXRsc19kZWluaXQpOw0KICAgZGVmc3ViciAoJlNnbnV0bHNf YnllKTsNCisgIGRlZnN1YnIgKCZTZ251dGxzX2F2YWlsYWJsZV9wKTsNCiB9DQogDQogI2VuZGlm IC8qIEhBVkVfR05VVExTICovDQoNCj09PSBtb2RpZmllZCBmaWxlICdzcmMvZ251dGxzLmgnDQot LS0gc3JjL2dudXRscy5oCTIwMTEtMDQtMjUgMDE6MzA6NTEgKzAwMDANCisrKyBzcmMvZ251dGxz LmgJMjAxMS0wNS0wMyAwMTowODoyMyArMDAwMA0KQEAgLTQyLDYgKzQyLDcgQEANCiAgIEdOVVRM U19TVEFHRV9SRUFEWSwNCiB9IGdudXRsc19pbml0c3RhZ2VfdDsNCiANCisjZGVmaW5lIEdOVVRM U19FTUFDU19FUlJPUl9OT1RfTE9BREVEIEdOVVRMU19FX0FQUExJQ0FUSU9OX0VSUk9SX01JTiAr IDENCiAjZGVmaW5lIEdOVVRMU19FTUFDU19FUlJPUl9JTlZBTElEX1RZUEUgR05VVExTX0VfQVBQ TElDQVRJT05fRVJST1JfTUlODQogDQogI2RlZmluZSBHTlVUTFNfSU5JVFNUQUdFKHByb2MpIChY UFJPQ0VTUyAocHJvYyktPmdudXRsc19pbml0c3RhZ2UpDQpAQCAtNTIsMTMgKzUzLDE2IEBADQog DQogI2RlZmluZSBHTlVUTFNfTE9HMihsZXZlbCwgbWF4LCBzdHJpbmcsIGV4dHJhKSBpZiAobGV2 ZWwgPD0gbWF4KSB7IGdudXRsc19sb2dfZnVuY3Rpb24yIChsZXZlbCwgIihFbWFjcykgIiBzdHJp bmcsIGV4dHJhKTsgfQ0KIA0KLUVNQUNTX0lOVA0KK2V4dGVybiBFTUFDU19JTlQNCiBlbWFjc19n bnV0bHNfd3JpdGUgKGludCBmaWxkZXMsIHN0cnVjdCBMaXNwX1Byb2Nlc3MgKnByb2MsIGNvbnN0 IGNoYXIgKmJ1ZiwNCiAgICAgICAgICAgICAgICAgICAgIEVNQUNTX0lOVCBuYnl0ZSk7DQotRU1B Q1NfSU5UDQorZXh0ZXJuIEVNQUNTX0lOVA0KIGVtYWNzX2dudXRsc19yZWFkIChpbnQgZmlsZGVz LCBzdHJ1Y3QgTGlzcF9Qcm9jZXNzICpwcm9jLCBjaGFyICpidWYsDQogICAgICAgICAgICAgICAg ICAgIEVNQUNTX0lOVCBuYnl0ZSk7DQogDQorZXh0ZXJuIGludCBlbWFjc19nbnV0bHNfcmVjb3Jk X2NoZWNrX3BlbmRpbmcgKGdudXRsc19zZXNzaW9uX3Qgc3RhdGUpOw0KK2V4dGVybiB2b2lkIGVt YWNzX2dudXRsc190cmFuc3BvcnRfc2V0X2Vycm5vIChnbnV0bHNfc2Vzc2lvbl90IHN0YXRlLCBp bnQgZXJyKTsNCisNCiBleHRlcm4gdm9pZCBzeW1zX29mX2dudXRscyAodm9pZCk7DQogDQogI2Vu ZGlmDQoNCj09PSBtb2RpZmllZCBmaWxlICdzcmMvaW1hZ2UuYycNCi0tLSBzcmMvaW1hZ2UuYwky MDExLTA0LTI1IDIxOjM0OjM5ICswMDAwDQorKysgc3JjL2ltYWdlLmMJMjAxMS0wNS0wMyAyMjo1 ODowNyArMDAwMA0KQEAgLTY3LDYgKzY3LDcgQEANCiANCiANCiAjaWZkZWYgSEFWRV9OVEdVSQ0K KyNpbmNsdWRlICJ3MzIuaCINCiAjaW5jbHVkZSAidzMydGVybS5oIg0KIA0KIC8qIFczMl9UT0RP IDogQ29sb3IgdGFibGVzIG9uIFczMi4gICovDQpAQCAtNTU2LDEwICs1NTcsNiBAQA0KIA0KIHN0 YXRpYyBzdHJ1Y3QgaW1hZ2VfdHlwZSAqaW1hZ2VfdHlwZXM7DQogDQotLyogQ2FjaGUgZm9yIGRl bGF5ZWQtbG9hZGluZyBpbWFnZSB0eXBlcy4gICovDQotDQotc3RhdGljIExpc3BfT2JqZWN0IFZp bWFnZV90eXBlX2NhY2hlOw0KLQ0KIC8qIFRoZSBzeW1ib2wgYHhibScgd2hpY2ggaXMgdXNlZCBh cyB0aGUgdHlwZSBzeW1ib2wgZm9yIFhCTSBpbWFnZXMuICAqLw0KIA0KIHN0YXRpYyBMaXNwX09i amVjdCBReGJtOw0KQEAgLTU4OSw3ICs1ODYsNyBAQA0KICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgTGlzcF9PYmplY3QpOw0KIA0KICNkZWZpbmUgQ0FDSEVfSU1BR0VfVFlQRSh0 eXBlLCBzdGF0dXMpIFwNCi0gIGRvIHsgVmltYWdlX3R5cGVfY2FjaGUgPSBGY29ucyAoRmNvbnMg KHR5cGUsIHN0YXR1cyksIFZpbWFnZV90eXBlX2NhY2hlKTsgfSB3aGlsZSAoMCkNCisgIGRvIHsg VmxpYnJhcnlfY2FjaGUgPSBGY29ucyAoRmNvbnMgKHR5cGUsIHN0YXR1cyksIFZsaWJyYXJ5X2Nh Y2hlKTsgfSB3aGlsZSAoMCkNCiANCiAjZGVmaW5lIEFERF9JTUFHRV9UWVBFKHR5cGUpIFwNCiAg IGRvIHsgVmltYWdlX3R5cGVzID0gRmNvbnMgKHR5cGUsIFZpbWFnZV90eXBlcyk7IH0gd2hpbGUg KDApDQpAQCAtMTkwMCwzNCArMTg5Nyw2IEBADQogICAgIGlmICghZm5fIyNmdW5jKSByZXR1cm4g MDsJCQkJCQlcDQogICB9DQogDQotLyogTG9hZCBhIERMTCBpbXBsZW1lbnRpbmcgYW4gaW1hZ2Ug dHlwZS4NCi0gICBUaGUgYXJndW1lbnQgTElCUkFSSUVTIGlzIHVzdWFsbHkgdGhlIHZhcmlhYmxl DQotICAgYGR5bmFtaWMtbGlicmFyeS1hbGlzdCcsIHdoaWNoIGFzc29jaWF0ZXMgYSBzeW1ib2ws IGlkZW50aWZ5aW5nDQotICAgYW4gZXh0ZXJuYWwgRExMIGxpYnJhcnksIHRvIGEgbGlzdCBvZiBw b3NzaWJsZSBmaWxlbmFtZXMuDQotICAgVGhlIGZ1bmN0aW9uIHJldHVybnMgTlVMTCBpZiBubyBs aWJyYXJ5IGNvdWxkIGJlIGxvYWRlZCBmb3INCi0gICB0aGUgZ2l2ZW4gc3ltYm9sLCBvciBpZiB0 aGUgbGlicmFyeSB3YXMgcHJldmlvdXNseSBsb2FkZWQ7DQotICAgZWxzZSB0aGUgaGFuZGxlIG9m IHRoZSBETEwuICAqLw0KLXN0YXRpYyBITU9EVUxFDQotdzMyX2RlbGF5ZWRfbG9hZCAoTGlzcF9P YmplY3QgbGlicmFyaWVzLCBMaXNwX09iamVjdCB0eXBlKQ0KLXsNCi0gIEhNT0RVTEUgbGlicmFy eSA9IE5VTEw7DQotDQotICBpZiAoQ09OU1AgKGxpYnJhcmllcykgJiYgTklMUCAoRmFzc3EgKHR5 cGUsIFZpbWFnZV90eXBlX2NhY2hlKSkpDQotICAgIHsNCi0gICAgICBMaXNwX09iamVjdCBkbGxz ID0gRmFzc3EgKHR5cGUsIGxpYnJhcmllcyk7DQotDQotICAgICAgaWYgKENPTlNQIChkbGxzKSkN Ci0gICAgICAgIGZvciAoZGxscyA9IFhDRFIgKGRsbHMpOyBDT05TUCAoZGxscyk7IGRsbHMgPSBY Q0RSIChkbGxzKSkNCi0gICAgICAgICAgew0KLSAgICAgICAgICAgIENIRUNLX1NUUklOR19DQVIg KGRsbHMpOw0KLSAgICAgICAgICAgIGlmIChsaWJyYXJ5ID0gTG9hZExpYnJhcnkgKFNEQVRBIChY Q0FSIChkbGxzKSkpKQ0KLSAgICAgICAgICAgICAgYnJlYWs7DQotICAgICAgICAgIH0NCi0gICAg fQ0KLQ0KLSAgcmV0dXJuIGxpYnJhcnk7DQotfQ0KLQ0KICNlbmRpZiAvKiBIQVZFX05UR1VJICov DQogDQogc3RhdGljIGludCB4X2NyZWF0ZV94X2ltYWdlX2FuZF9waXhtYXAgKHN0cnVjdCBmcmFt ZSAqLCBpbnQsIGludCwgaW50LA0KQEAgLTU0NTIsNyArNTQyMSw2IEBADQogew0KICAgSE1PRFVM RSBsaWJyYXJ5Ow0KIA0KLSAgLyogVHJ5IGxvYWRpbmcgbGlicG5nIHVuZGVyIHByb2JhYmxlIG5h bWVzLiAgKi8NCiAgIGlmICghKGxpYnJhcnkgPSB3MzJfZGVsYXllZF9sb2FkIChsaWJyYXJpZXMs IFFwbmcpKSkNCiAgICAgcmV0dXJuIDA7DQogDQpAQCAtODYzNCw3ICs4NjAyLDcgQEANCiAgIExp c3BfT2JqZWN0IHRlc3RlZDsNCiANCiAgIC8qIERvbid0IHRyeSB0byByZWxvYWQgdGhlIGxpYnJh cnkuICAqLw0KLSAgdGVzdGVkID0gRmFzc3EgKHR5cGUsIFZpbWFnZV90eXBlX2NhY2hlKTsNCisg IHRlc3RlZCA9IEZhc3NxICh0eXBlLCBWbGlicmFyeV9jYWNoZSk7DQogICBpZiAoQ09OU1AgKHRl c3RlZCkpDQogICAgIHJldHVybiBYQ0RSICh0ZXN0ZWQpOw0KIA0KQEAgLTg3MTQsOSArODY4Miw2 IEBADQogbm9uLW51bWVyaWMsIHRoZXJlIGlzIG5vIGV4cGxpY2l0IGxpbWl0IG9uIHRoZSBzaXpl IG9mIGltYWdlcy4gICovKTsNCiAgIFZtYXhfaW1hZ2Vfc2l6ZSA9IG1ha2VfZmxvYXQgKE1BWF9J TUFHRV9TSVpFKTsNCiANCi0gIFZpbWFnZV90eXBlX2NhY2hlID0gUW5pbDsNCi0gIHN0YXRpY3By byAoJlZpbWFnZV90eXBlX2NhY2hlKTsNCi0NCiAgIFFwYm0gPSBpbnRlcm5fY19zdHJpbmcgKCJw Ym0iKTsNCiAgIHN0YXRpY3BybyAoJlFwYm0pOw0KICAgQUREX0lNQUdFX1RZUEUgKFFwYm0pOw0K DQo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL3Byb2Nlc3MuYycNCi0tLSBzcmMvcHJvY2Vzcy5jCTIw MTEtMDQtMzAgMDk6MzE6MDEgKzAwMDANCisrKyBzcmMvcHJvY2Vzcy5jCTIwMTEtMDUtMDMgMjI6 NTE6MjMgKzAwMDANCkBAIC0zMyw2ICszMyw4IEBADQogI2luY2x1ZGUgPHVuaXN0ZC5oPg0KICNp bmNsdWRlIDxmY250bC5oPg0KIA0KKyNpbmNsdWRlICJsaXNwLmgiDQorDQogLyogT25seSBNUy1E T1MgZG9lcyBub3QgZGVmaW5lIGBzdWJwcm9jZXNzZXMnLiAgKi8NCiAjaWZkZWYgc3VicHJvY2Vz c2VzDQogDQpAQCAtNzcsNyArNzksNiBAQA0KIA0KICNlbmRpZgkvKiBzdWJwcm9jZXNzZXMgKi8N CiANCi0jaW5jbHVkZSAibGlzcC5oIg0KICNpbmNsdWRlICJzeXN0aW1lLmgiDQogI2luY2x1ZGUg InN5c3R0eS5oIg0KIA0KQEAgLTQ1NDAsNyArNDU0MSw3IEBADQogICAgICAgICAgIGlmIChuZmRz ID09IDAgJiYgDQogICAgICAgICAgICAgICB3YWl0X3Byb2MgJiYgd2FpdF9wcm9jLT5nbnV0bHNf cCAvKiBDaGVjayBmb3IgdmFsaWQgcHJvY2Vzcy4gICovDQogICAgICAgICAgICAgICAvKiBEbyB3 ZSBoYXZlIHBlbmRpbmcgZGF0YT8gICovDQotICAgICAgICAgICAgICAmJiBnbnV0bHNfcmVjb3Jk X2NoZWNrX3BlbmRpbmcgKHdhaXRfcHJvYy0+Z251dGxzX3N0YXRlKSA+IDApDQorICAgICAgICAg ICAgICAmJiBlbWFjc19nbnV0bHNfcmVjb3JkX2NoZWNrX3BlbmRpbmcgKHdhaXRfcHJvYy0+Z251 dGxzX3N0YXRlKSA+IDApDQogICAgICAgICAgIHsNCiAgICAgICAgICAgICAgIG5mZHMgPSAxOw0K ICAgICAgICAgICAgICAgLyogU2V0IHRvIEF2YWlsYWJsZS4gICovDQoNCj09PSBtb2RpZmllZCBm aWxlICdzcmMvdzMyLmMnDQotLS0gc3JjL3czMi5jCTIwMTEtMDQtMjggMTk6NTE6MTIgKzAwMDAN CisrKyBzcmMvdzMyLmMJMjAxMS0wNS0wMyAyMzoyMTozMiArMDAwMA0KQEAgLTU3MTIsNiArNTcx Miw0NCBAQA0KICAgcmV0dXJuIGxvY2FsdGltZSAodCk7DQogfQ0KIA0KKw0KKwwNCisvKiBEZWxh eWVkIGxvYWRpbmcgb2YgbGlicmFyaWVzLiAgKi8NCisNCitMaXNwX09iamVjdCBWbGlicmFyeV9j YWNoZTsNCisNCisvKiBUaGUgYXJndW1lbnQgTElCUkFSSUVTIGlzIGFuIGFsaXN0IHRoYXQgYXNz b2NpYXRlcyBhIHN5bWJvbA0KKyAgIExJQlJBUllfSUQsIGlkZW50aWZ5aW5nIGFuIGV4dGVybmFs IERMTCBsaWJyYXJ5IGtub3duIHRvIEVtYWNzLCB0bw0KKyAgIGEgbGlzdCBvZiBmaWxlbmFtZXMg dW5kZXIgd2hpY2ggdGhlIGxpYnJhcnkgaXMgdXN1YWxseSBmb3VuZC4gIEluDQorICAgbW9zdCBj YXNlcywgdGhlIGFyZ3VtZW50IHBhc3NlZCBhcyBMSUJSQVJJRVMgaXMgdGhlIHZhcmlhYmxlDQor ICAgYGR5bmFtaWMtbGlicmFyeS1hbGlzdCcsIHdoaWNoIGlzIGluaXRpYWxpemVkIHRvIGEgbGlz dCBvZiBjb21tb24NCisgICBsaWJyYXJ5IG5hbWVzLiAgVGhlIGZ1bmN0aW9uIHJldHVybnMgTlVM TCBpZiBubyBsaWJyYXJ5IGNvdWxkIGJlDQorICAgbG9hZGVkIGZvciB0aGUgZ2l2ZW4gTElCUkFS WV9JRCwgb3IgaWYgdGhlIGxpYnJhcnkgd2FzIHByZXZpb3VzbHkNCisgICBsb2FkZWQ7IGVsc2Ug dGhlIGhhbmRsZSBvZiB0aGUgRExMLiAgKi8NCitITU9EVUxFDQordzMyX2RlbGF5ZWRfbG9hZCAo TGlzcF9PYmplY3QgbGlicmFyaWVzLCBMaXNwX09iamVjdCBsaWJyYXJ5X2lkKQ0KK3sNCisgIEhN T0RVTEUgbGlicmFyeV9kbGwgPSBOVUxMOw0KKw0KKyAgQ0hFQ0tfU1lNQk9MIChsaWJyYXJ5X2lk KTsNCisNCisgIGlmIChDT05TUCAobGlicmFyaWVzKSAmJiBOSUxQIChGYXNzcSAobGlicmFyeV9p ZCwgVmxpYnJhcnlfY2FjaGUpKSkNCisgICAgew0KKyAgICAgIExpc3BfT2JqZWN0IGRsbHMgPSBG YXNzcSAobGlicmFyeV9pZCwgbGlicmFyaWVzKTsNCisNCisgICAgICBpZiAoQ09OU1AgKGRsbHMp KQ0KKyAgICAgICAgZm9yIChkbGxzID0gWENEUiAoZGxscyk7IENPTlNQIChkbGxzKTsgZGxscyA9 IFhDRFIgKGRsbHMpKQ0KKyAgICAgICAgICB7DQorICAgICAgICAgICAgQ0hFQ0tfU1RSSU5HX0NB UiAoZGxscyk7DQorICAgICAgICAgICAgaWYgKGxpYnJhcnlfZGxsID0gTG9hZExpYnJhcnkgKFNE QVRBIChYQ0FSIChkbGxzKSkpKQ0KKyAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgIH0N CisgICAgfQ0KKw0KKyAgcmV0dXJuIGxpYnJhcnlfZGxsOw0KK30NCisNCisMDQogc3RhdGljIHZv aWQNCiBjaGVja193aW5kb3dzX2luaXRfZmlsZSAodm9pZCkNCiB7DQpAQCAtNTkxMCw2ICs1OTQ4 LDkgQEANCiAgIGdldF9wcm9jZXNzX3RpbWVzX2ZuID0gKEdldFByb2Nlc3NUaW1lc19Qcm9jKQ0K ICAgICBHZXRQcm9jQWRkcmVzcyAoa2VybmVsMzIsICJHZXRQcm9jZXNzVGltZXMiKTsNCiANCisg IFZsaWJyYXJ5X2NhY2hlID0gUW5pbDsNCisgIHN0YXRpY3BybyAoJlZsaWJyYXJ5X2NhY2hlKTsN CisNCiAgIGdfYl9pbml0X2lzX3dpbmRvd3NfOXggPSAwOw0KICAgZ19iX2luaXRfb3Blbl9wcm9j ZXNzX3Rva2VuID0gMDsNCiAgIGdfYl9pbml0X2dldF90b2tlbl9pbmZvcm1hdGlvbiA9IDA7DQpA QCAtNjE3OCw3ICs2MjE5LDcgQEANCiAgICAgICAgICAgICBlcnIgPSBlcnJubzsgLyogT3RoZXIg ZXJyb3JzIGFyZSBqdXN0IHBhc3NlZCBvbi4gICovDQogICAgICAgICB9DQogDQotICAgICAgZ251 dGxzX3RyYW5zcG9ydF9zZXRfZXJybm8gKHByb2Nlc3MtPmdudXRsc19zdGF0ZSwgZXJyKTsNCisg ICAgICBlbWFjc19nbnV0bHNfdHJhbnNwb3J0X3NldF9lcnJubyAocHJvY2Vzcy0+Z251dGxzX3N0 YXRlLCBlcnIpOw0KIA0KICAgICAgIHJldHVybiAtMTsNCiAgICAgfQ0KQEAgLTYxOTcsNyArNjIz OCw3IEBADQogDQogICAvKiBOZWdhdGl2ZSBieXRlcyB3cml0dGVuIG1lYW5zIHdlIGdvdCBhbiBl cnJvciBpbiBlcnJuby4NCiAgICAgIFRyYW5zbGF0ZSB0aGUgV1NBRVdPVUxEQkxPQ0sgYWxpYXMg RVdPVUxEQkxPQ0sgdG8gRUFHQUlOLiAgKi8NCi0gIGdudXRsc190cmFuc3BvcnRfc2V0X2Vycm5v IChwcm9jZXNzLT5nbnV0bHNfc3RhdGUsDQorICBlbWFjc19nbnV0bHNfdHJhbnNwb3J0X3NldF9l cnJubyAocHJvY2Vzcy0+Z251dGxzX3N0YXRlLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGVycm5vID09IEVXT1VMREJMT0NLID8gRUFHQUlOIDogZXJybm8pOw0KIA0KICAgcmV0dXJu IC0xOw0KDQo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL3czMi5oJw0KLS0tIHNyYy93MzIuaAkyMDEx LTA0LTI1IDAxOjMwOjUxICswMDAwDQorKysgc3JjL3czMi5oCTIwMTEtMDUtMDMgMjI6NDc6NTIg KzAwMDANCkBAIC0xNDMsNiArMTQzLDkgQEANCiBleHRlcm4gaW50IF9zeXNfcmVhZF9haGVhZCAo aW50IGZkKTsNCiBleHRlcm4gaW50IF9zeXNfd2FpdF9hY2NlcHQgKGludCBmZCk7DQogDQorZXh0 ZXJuIExpc3BfT2JqZWN0IFZsaWJyYXJ5X2NhY2hlOw0KK2V4dGVybiBITU9EVUxFIHczMl9kZWxh eWVkX2xvYWQgKExpc3BfT2JqZWN0LCBMaXNwX09iamVjdCk7DQorDQogI2lmZGVmIEhBVkVfR05V VExTDQogI2luY2x1ZGUgPGdudXRscy9nbnV0bHMuaD4NCiANCg0K --000e0cd3a506c4a39104a2693571--