From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 26570 invoked by alias); 10 Apr 2009 19:12:56 -0000 Received: (qmail 26548 invoked by uid 22791); 10 Apr 2009 19:12:53 -0000 X-SWARE-Spam-Status: No, hits=-0.8 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_13,J_CHICKENPOX_64,J_CHICKENPOX_73,SARE_MSGID_LONG40,SPF_PASS X-Spam-Check-By: sourceware.org Received: from mail-bw0-f161.google.com (HELO mail-bw0-f161.google.com) (209.85.218.161) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 10 Apr 2009 19:12:47 +0000 Received: by bwz5 with SMTP id 5so1209407bwz.8 for ; Fri, 10 Apr 2009 12:12:44 -0700 (PDT) MIME-Version: 1.0 Received: by 10.204.61.130 with SMTP id t2mr3586375bkh.27.1239390763907; Fri, 10 Apr 2009 12:12:43 -0700 (PDT) In-Reply-To: <6c33472e0810221705u1286ac46g166ec57677fe0f4c@mail.gmail.com> References: <6c33472e0808281543w5d464fe6r1fa5e584797ac46c@mail.gmail.com> <6c33472e0808281700m457e1f2euf6a0da108dd5b84a@mail.gmail.com> <6c33472e0810221705u1286ac46g166ec57677fe0f4c@mail.gmail.com> Date: Fri, 10 Apr 2009 19:12:00 -0000 Message-ID: <6c33472e0904101212j69a8aa48hb12369c0aeb55242@mail.gmail.com> Subject: Re: [C/C++] PR 13358 long long and C++ do not mix well From: =?ISO-8859-1?Q?Manuel_L=F3pez=2DIb=E1=F1ez?= To: "Joseph S. Myers" Cc: Gcc Patch List Content-Type: multipart/mixed; boundary=0016e6dee744387d0204673826d1 X-IsSubscribed: yes Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org X-SW-Source: 2009-04/txt/msg00842.txt.bz2 --0016e6dee744387d0204673826d1 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-length: 3532 PING Updated to a recent revision. Bootstrapped and regression tested on x86_64-unknown-linux-gnu with --enable-languages=3Dall,obj-c++ --enable-decimal-float and --target_board=3D\{-m32,-m64\} OK for trunk? Manuel. 2008/10/23 Manuel L=F3pez-Ib=E1=F1ez : > I think the following patch addresses all requirements and in the > process it fixes some small deficiencies of the current status, such > as talking about C99 when invoked from C++. > > Bootstrapped and regression tested on x86_64-unknown-linux-gnu with > --enable-languages=3Dall,obj-c++ --enable-decimal-float and > --target_board=3D\{-m32,-m64\} > > OK for trunk? > > 2008-10-23 =A0Manuel Lopez-Ibanez =A0 > > =A0 =A0 =A0 =A0PR 13358 > =A0 =A0 =A0 =A0* doc/invoke.texi (-Wlong-long): Update description. > =A0 =A0 =A0 =A0* c-lex (interpret_integer): Only warn if there was no pre= vious > =A0 =A0 =A0 =A0overflow and -Wlong-long is enabled. > =A0 =A0 =A0 =A0* c-decl.c (declspecs_add_type): Drop redundant flags. > =A0 =A0 =A0 =A0* c.opt (Wlong-long): Init to -1. > =A0 =A0 =A0 =A0* c-opts.c (sanitize_cpp_opts): Synchronize cpp's warn_lon= g_long > =A0 =A0 =A0 =A0and front-end warn_long_long. Wlong-long only depends on o= ther > =A0 =A0 =A0 =A0flags if it is uninitialized. > =A0 =A0 =A0 =A0* c-parser.c (disable_extension_diagnostics): warn_long_lo= ng is > =A0 =A0 =A0 =A0the same for CPP and FE. > =A0 =A0 =A0 =A0(restore_extension_diagnostics): Likewise. > libcpp/ > =A0 =A0 =A0 =A0* init.c (cpp_create_reader): Wlong_long is disabled by de= fault. > =A0 =A0 =A0 =A0* expr.c (cpp_classify_number): Give different messages fo= r C and > =A0 =A0 =A0 =A0C++ front-ends. > cp/ > =A0 =A0 =A0 =A0* parser.c (cp_parser_check_decl_spec): Drop redundant fla= gs. > =A0 =A0 =A0 =A0* error.c (pedwarn_cxx98): New. > =A0 =A0 =A0 =A0* cp-tree.h (pedwarn_cxx98): Declare. > > testsuite/ > =A0 =A0 =A0 =A0* gcc.dg/wtr-int-type-1.c: Use two dg-warning to match two > =A0 =A0 =A0 =A0messages. Test for "long long" in system headers. > =A0 =A0 =A0 =A0* gcc.dg/c99-longlong-2.c: New. > =A0 =A0 =A0 =A0* g++.dg/warn/pr13358.C: New. > =A0 =A0 =A0 =A0* g++.dg/warn/pr13358-2.C: New. > =A0 =A0 =A0 =A0* g++.dg/warn/pr13358-3.C: New. > =A0 =A0 =A0 =A0* g++.dg/warn/pr13358-4.C: New. > > > > 2008/8/29 Manuel L=F3pez-Ib=E1=F1ez : >> 2008/8/29 Joseph S. Myers : >>> On Fri, 29 Aug 2008, Manuel L=F3pez-Ib=E1=F1ez wrote: >>> >>>> CPP and the FE were using different semantics. invoke.texi said that >>>> Wlong-long was the default. This was not correct. It was the default >>>> for CPP but -Wno-long-long was the default for the FE. Now there is >>>> only one semantic: the one from the FE. >>>> >>>> However, we were inhibiting warning even if the user requested it >>>> through Wlong-long. Now explicit Wlong-long (or Wno-long-long) >>>> overrides everything else, except in system headers. >>> >>> If you allow -Wlong-long to have an effect in C99 mode, -std=3Dc99 >>> -pedantic-errors -Wlong-long should give the diagnostics as warnings not >>> errors. =A0Does it? >> >> No but I can make it do that just using pedwarn_c90 instead of pedwarn >> and add a testcase. I'll do the same for c++98. I''ll need to add an >> equivalent of pedwarn_c90 to C++ and CPP. In C++ is probably easy. >> >> Is there a way to tell in CPP if we are being called from the C++ FE? >> and which standard? I cannot find anything in the sources apart from >> CPP_OPTION (pfile, c99). >> >> Cheers, >> >> Manuel. >> > --0016e6dee744387d0204673826d1 Content-Type: text/plain; charset=US-ASCII; name="fix-pr13358-try2.diff" Content-Disposition: attachment; filename="fix-pr13358-try2.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ftd97vhs1 Content-length: 23355 SW5kZXg6IGdjYy9kb2MvaW52b2tlLnRleGkKPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0gZ2NjL2RvYy9pbnZva2UudGV4aQkocmV2aXNpb24gMTQ1ODUz KQorKysgZ2NjL2RvYy9pbnZva2UudGV4aQkod29ya2luZyBjb3B5KQpAQCAt NDEyOCwxNCArNDEyOCwxMyBAQCBXYXJuIGlmIGEgcHJlY29tcGlsZWQgaGVh ZGVyIChAcHhyZWZ7UHJlCiB0aGUgc2VhcmNoIHBhdGggYnV0IGNhbid0IGJl IHVzZWQuCiAKIEBpdGVtIC1XbG9uZy1sb25nCiBAb3BpbmRleCBXbG9uZy1s b25nCiBAb3BpbmRleCBXbm8tbG9uZy1sb25nCi1XYXJuIGlmIEBzYW1we2xv bmcgbG9uZ30gdHlwZSBpcyB1c2VkLiAgVGhpcyBpcyBkZWZhdWx0LiAgVG8g aW5oaWJpdAotdGhlIHdhcm5pbmcgbWVzc2FnZXMsIHVzZSBAb3B0aW9uey1X bm8tbG9uZy1sb25nfS4gIEZsYWdzCi1Ab3B0aW9uey1XbG9uZy1sb25nfSBh bmQgQG9wdGlvbnstV25vLWxvbmctbG9uZ30gYXJlIHRha2VuIGludG8gYWNj b3VudAotb25seSB3aGVuIEBvcHRpb257LXBlZGFudGljfSBmbGFnIGlzIHVz ZWQuCitXYXJuIGlmIEBzYW1we2xvbmcgbG9uZ30gdHlwZSBpcyB1c2VkLiAg VGhpcyBpcyBlbmFibGVkIGJ5IGVpdGhlcgorQG9wdGlvbnstcGVkYW50aWN9 IG9yIEBvcHRpb257LVd0cmFkaXRpb25hbH0gaW4gSVNPIEM5MCBhbmQgQysr OTgKK21vZGVzLiAgVG8gaW5oaWJpdCB0aGUgd2FybmluZyBtZXNzYWdlcywg dXNlIEBvcHRpb257LVduby1sb25nLWxvbmd9LgogCiBAaXRlbSAtV3Zhcmlh ZGljLW1hY3JvcwogQG9waW5kZXggV3ZhcmlhZGljLW1hY3JvcwogQG9waW5k ZXggV25vLXZhcmlhZGljLW1hY3JvcwogV2FybiBpZiB2YXJpYWRpYyBtYWNy b3MgYXJlIHVzZWQgaW4gcGVkYW50aWMgSVNPIEM5MCBtb2RlLCBvciB0aGUg R05VCkluZGV4OiBnY2MvYy1sZXguYwo9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLSBnY2MvYy1sZXguYwkocmV2aXNpb24gMTQ1ODUzKQorKysgZ2NjL2Mt bGV4LmMJKHdvcmtpbmcgY29weSkKQEAgLTU4MCwxNyArNTgwLDIyIEBAIGlu dGVycHJldF9pbnRlZ2VyIChjb25zdCBjcHBfdG9rZW4gKnRva2UKICAgICAv KiBjcHBsaWIgaGFzIGFscmVhZHkgaXNzdWVkIGEgd2FybmluZyBmb3Igb3Zl cmZsb3cuICAqLwogICAgIHR5cGUgPSAoKGZsYWdzICYgQ1BQX05fVU5TSUdO RUQpCiAJICAgID8gd2lkZXN0X3Vuc2lnbmVkX2xpdGVyYWxfdHlwZV9ub2Rl CiAJICAgIDogd2lkZXN0X2ludGVnZXJfbGl0ZXJhbF90eXBlX25vZGUpOwog ICBlbHNlCi0gICAgdHlwZSA9IGludGVnZXJfdHlwZXNbaXRrXTsKLQotICBp ZiAoaXRrID4gaXRrX3Vuc2lnbmVkX2xvbmcKLSAgICAgICYmIChmbGFncyAm IENQUF9OX1dJRFRIKSAhPSBDUFBfTl9MQVJHRQotICAgICAgJiYgIWluX3N5 c3RlbV9oZWFkZXIgJiYgIWZsYWdfaXNvYzk5KQotICAgIHBlZHdhcm4gKGlu cHV0X2xvY2F0aW9uLCAwLCAiaW50ZWdlciBjb25zdGFudCBpcyB0b28gbGFy Z2UgZm9yICVxcyB0eXBlIiwKLQkgICAgIChmbGFncyAmIENQUF9OX1VOU0lH TkVEKSA/ICJ1bnNpZ25lZCBsb25nIiA6ICJsb25nIik7CisgICAgeworICAg ICAgdHlwZSA9IGludGVnZXJfdHlwZXNbaXRrXTsKKyAgICAgIGlmIChpdGsg PiBpdGtfdW5zaWduZWRfbG9uZworCSAgJiYgKGZsYWdzICYgQ1BQX05fV0lE VEgpICE9IENQUF9OX0xBUkdFKQorCWVtaXRfZGlhZ25vc3RpYyAKKwkgICgo Y19kaWFsZWN0X2N4eCAoKSA/IGN4eF9kaWFsZWN0ID09IGN4eDk4IDogIWZs YWdfaXNvYzk5KQorCSAgID8gREtfUEVEV0FSTiA6IERLX1dBUk5JTkcsCisJ ICAgaW5wdXRfbG9jYXRpb24sIE9QVF9XbG9uZ19sb25nLAorCSAgIChmbGFn cyAmIENQUF9OX1VOU0lHTkVEKSAKKwkgICA/ICJpbnRlZ2VyIGNvbnN0YW50 IGlzIHRvbyBsYXJnZSBmb3IgJTx1bnNpZ25lZCBsb25nJT4gdHlwZSIKKwkg ICA6ICJpbnRlZ2VyIGNvbnN0YW50IGlzIHRvbyBsYXJnZSBmb3IgJTxsb25n JT4gdHlwZSIpOworICAgIH0KIAogICB2YWx1ZSA9IGJ1aWxkX2ludF9jc3Rf d2lkZSAodHlwZSwgaW50ZWdlci5sb3csIGludGVnZXIuaGlnaCk7CiAKICAg LyogQ29udmVydCBpbWFnaW5hcnkgdG8gYSBjb21wbGV4IHR5cGUuICAqLwog ICBpZiAoZmxhZ3MgJiBDUFBfTl9JTUFHSU5BUlkpCkluZGV4OiBnY2MvdGVz dHN1aXRlL2djYy5kZy9jOTAtbG9uZ2xvbmctMS5jCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL2M5MC1sb25nbG9u Zy0xLmMJKHJldmlzaW9uIDE0NTg1MykKKysrIGdjYy90ZXN0c3VpdGUvZ2Nj LmRnL2M5MC1sb25nbG9uZy0xLmMJKHdvcmtpbmcgY29weSkKQEAgLTEsNyAr MSw2IEBACiAvKiBUZXN0IGZvciBsb25nIGxvbmc6IGluIEM5OSBvbmx5LiAg Ki8KIC8qIE9yaWdpbjogSm9zZXBoIE15ZXJzIDxqc20yOEBjYW0uYWMudWs+ ICovCiAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwogLyogeyBkZy1vcHRpb25z ICItc3RkPWlzbzk4OTk6MTk5MCAtcGVkYW50aWMtZXJyb3JzIiB9ICovCiAK LWxvbmcgbG9uZyBmb287IC8qIHsgZGctYm9ndXMgIndhcm5pbmciICJ3YXJu aW5nIGluIHBsYWNlIG9mIGVycm9yIiB9ICovCi0vKiB7IGRnLWVycm9yICJs b25nIGxvbmciICJsb25nIGxvbmcgbm90IGluIEM5MCIgeyB0YXJnZXQgKi0q LSogfSA2IH0gKi8KK2xvbmcgbG9uZyBmb287IC8qIHsgZGctZXJyb3IgImxv bmcgbG9uZyIgImxvbmcgbG9uZyBub3QgaW4gQzkwIiB9ICovCkluZGV4OiBn Y2MvdGVzdHN1aXRlL2djYy5kZy93dHItaW50LXR5cGUtMS5jCj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL3d0ci1p bnQtdHlwZS0xLmMJKHJldmlzaW9uIDE0NTg1MykKKysrIGdjYy90ZXN0c3Vp dGUvZ2NjLmRnL3d0ci1pbnQtdHlwZS0xLmMJKHdvcmtpbmcgY29weSkKQEAg LTIzLDEzICsyMywyMSBAQCB0ZXN0ZnVuYyAoKQogICAgICB3ZSBjYW4gcHJl dGVuZCBpdCB3b3JrZWQgdGhlIHdheSBpdCBkb2VzIGluIEM5OS5dICAqLwog ICBpID0gOTIyMzM3MjAzNjg1NDc3NTgwNzsKIAogICAvKiBCdXQgdGhpcyBv bmUgc2hvdWxkLCBzaW5jZSBpdCBkb2Vzbid0IGZpdCBpbiBsb25nIChsb25n KSwgYnV0CiAgICAgIGRvZXMgZml0IGluIHVuc2lnbmVkIGxvbmcgKGxvbmcp LiAgKi8KLSAgaSA9IDE4NDQ2NzQ0MDczNzA5NTUxNjE1OyAvKiB7IGRnLXdh cm5pbmcgImRlY2ltYWwgY29uc3RhbnR8dW5zaWduZWQiICJkZWNpbWFsIGNv bnN0YW50IiB9ICovCi0gIAorICBpID0gMTg0NDY3NDQwNzM3MDk1NTE2MTU7 IC8qIHsgZGctd2FybmluZyAiaW50ZWdlciBjb25zdGFudCBpcyBzbyBsYXJn ZSB0aGF0IGl0IGlzIHVuc2lnbmVkIiAiZGVjaW1hbCBjb25zdGFudCIgfSAq LworICAvKiB7IGRnLXdhcm5pbmcgInRoaXMgZGVjaW1hbCBjb25zdGFudCB3 b3VsZCBiZSB1bnNpZ25lZCBpbiBJU08gQzkwIiAiZGVjaW1hbCBjb25zdGFu dCIgeyB0YXJnZXQgKi0qLSogfSAyOCB9ICovCisKICMgMjkgInN5cy1oZWFk ZXIuaCIgMworfQorCit2b2lkCit0ZXN0ZnVuYzIoICkgCit7IAorICBsb25n IGxvbmcgaTsKKwogLyogV2UgYXJlIGluIHN5c3RlbSBoZWFkZXJzIG5vdywg bm8gLVd0cmFkaXRpb25hbCB3YXJuaW5ncyBzaG91bGQgaXNzdWUuICAqLwog CiAgIGkgPSAweDgwMDAwMDAwOwogICBpID0gMHhGRkZGRkZGRjsKICAgaSA9 IDAzNzc3Nzc3Nzc3NzsKQEAgLTM5LDUgKzQ3LDYgQEAgdGVzdGZ1bmMgKCkK ICAgaSA9IDAxNzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3OwogICAKICAgaSA9IDky MjMzNzIwMzY4NTQ3NzU4MDc7CiAgIGkgPSAxODQ0Njc0NDA3MzcwOTU1MTYx NTsKIH0KKwpJbmRleDogZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYzk5LWxvbmds b25nLTIuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBnY2MvdGVzdHN1 aXRlL2djYy5kZy9jOTktbG9uZ2xvbmctMi5jCShyZXZpc2lvbiAwKQorKysg Z2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYzk5LWxvbmdsb25nLTIuYwkocmV2aXNp b24gMCkKQEAgLTAsMCArMSw2IEBACisvKiBUZXN0IGZvciBsb25nIGxvbmc6 IGlmIGV4cGxpY2l0IFdsb25nLWxvbmcsIGluIEM5OSBvbmx5IHdhcm4sIG5v dAorICAgcGVkd2Fybi4gICovCisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwor LyogeyBkZy1vcHRpb25zICItc3RkPWlzbzk4OTk6MTk5OSAtcGVkYW50aWMt ZXJyb3JzIC1XbG9uZy1sb25nIiB9ICovCisKK2xvbmcgbG9uZyBmb287IC8q IHsgZGctd2FybmluZyAibG9uZyBsb25nIiB9ICovCkluZGV4OiBnY2MvdGVz dHN1aXRlL2crKy5kZy93YXJuL3ByMTMzNTgtMi5DCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tIGdjYy90ZXN0c3VpdGUvZysrLmRnL3dhcm4vcHIxMzM1 OC0yLkMJKHJldmlzaW9uIDApCisrKyBnY2MvdGVzdHN1aXRlL2crKy5kZy93 YXJuL3ByMTMzNTgtMi5DCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI0IEBA CisvLyBQUiBjKysvMTMzNTg6IGcrKyBzaG91bGQgYWNjZXB0IGEgbG9uZyBs b25nIGNvbnN0YW50IHNhbnMgTEwgc3VmZml4CisvLyBpZiAtV25vLWxvbmct bG9uZyBpcyBpbiB1c2UuCisvLyB7IGRnLWRvIGNvbXBpbGUgfQorLy8geyBk Zy1yZXF1aXJlLWVmZmVjdGl2ZS10YXJnZXQgaW50MzJwbHVzIH0KKy8vIHsg ZGctb3B0aW9ucyAiLXN0ZD1jKys5OCAtcGVkYW50aWMtZXJyb3JzIiB9CisK Kwordm9pZCB1c2VfbG9uZ2xvbmcgKCkKK3sKKyAgdW5zaWduZWQgbG9uZyBs b25nIHgxLCB4MiwgeDM7IC8vIHsgZGctZXJyb3IgIklTTyBDXFwrXFwrIDE5 OTggZG9lcyBub3Qgc3VwcG9ydCAnbG9uZyBsb25nJyIgfQorICAvLyBtYWtl IHN1cmUgd2UgZXJyb3Igd2l0aCBoZXgsIGRlY2ltYWwgYW5kIG9jdGFsCisg IHgxID0gMHgxYjI3ZGE1NzJlZjNjZDg2OyAvLyB7IGRnLWVycm9yICJpbnRl Z2VyIGNvbnN0YW50IGlzIHRvbyBsYXJnZSBmb3IgJ2xvbmcnIHR5cGUiICJs b25nIGxvbmciIHsgdGFyZ2V0IGlscDMyIH0gfQorICB4MiA9IDE5NTY3NzI2 MzExMDA1MDk1NzQ7IC8vIHsgZGctZXJyb3IgImludGVnZXIgY29uc3RhbnQg aXMgdG9vIGxhcmdlIGZvciAnbG9uZycgdHlwZSIgImxvbmcgbG9uZyIgeyB0 YXJnZXQgaWxwMzIgfSB9CisgIHgzID0gMDE1NDQ3NjY0NTM0NTY3NDc0NjYw NjsgLy8geyBkZy1lcnJvciAiaW50ZWdlciBjb25zdGFudCBpcyB0b28gbGFy Z2UgZm9yICdsb25nJyB0eXBlIiAibG9uZyBsb25nIiB7IHRhcmdldCBpbHAz MiB9IH0KK30KKwordm9pZCB1c2VfbG9uZ2xvbmcyICgpCit7CisgIHVuc2ln bmVkIGxvbmcgbG9uZyB4MSwgeDIsIHgzOyAvLyB7IGRnLWVycm9yICJJU08g Q1xcK1xcKyAxOTk4IGRvZXMgbm90IHN1cHBvcnQgJ2xvbmcgbG9uZyciIH0K KyAgLy8gbWFrZSBzdXJlIHdlIGVycm9yIHdpdGggaGV4LCBkZWNpbWFsIGFu ZCBvY3RhbAorICB4MSA9IDB4MWIyN2RhNTcyZWYzY2Q4NkxMOyAvLyB7IGRn LWVycm9yICJsb25nIGxvbmciIH0KKyAgeDIgPSAxOTU2NzcyNjMxMTAwNTA5 NTc0TEw7IC8vIHsgZGctZXJyb3IgImxvbmcgbG9uZyIgfQorICB4MyA9IDAx NTQ0NzY2NDUzNDU2NzQ3NDY2MDZMTDsgLy8geyBkZy1lcnJvciAibG9uZyBs b25nIiB9Cit9CkluZGV4OiBnY2MvdGVzdHN1aXRlL2crKy5kZy93YXJuL3By MTMzNTgtMy5DCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGdjYy90ZXN0 c3VpdGUvZysrLmRnL3dhcm4vcHIxMzM1OC0zLkMJKHJldmlzaW9uIDApCisr KyBnY2MvdGVzdHN1aXRlL2crKy5kZy93YXJuL3ByMTMzNTgtMy5DCShyZXZp c2lvbiAwKQpAQCAtMCwwICsxLDI0IEBACisvLyBQUiBjKysvMTMzNTg6IGcr KyBzaG91bGQgYWNjZXB0IGEgbG9uZyBsb25nIGNvbnN0YW50IHNhbnMgTEwg c3VmZml4CisvLyBpZiAtV25vLWxvbmctbG9uZyBpcyBpbiB1c2UKKy8vIHsg ZGctZG8gY29tcGlsZSB9CisvLyB7IGRnLXJlcXVpcmUtZWZmZWN0aXZlLXRh cmdldCBpbnQzMnBsdXMgfSAKKy8vIHsgZGctb3B0aW9ucyAiLXN0ZD1jKysw eCAtcGVkYW50aWMtZXJyb3JzIiB9CisKKwordm9pZCB1c2VfbG9uZ2xvbmcg KCkKK3sKKyAgdW5zaWduZWQgbG9uZyBsb25nIHgxLCB4MiwgeDM7IAorICAv LyBtYWtlIHN1cmUgaXQncyBvayB3aXRoIGhleCwgZGVjaW1hbCBhbmQgb2N0 YWwKKyAgeDEgPSAweDFiMjdkYTU3MmVmM2NkODY7CisgIHgyID0gMTk1Njc3 MjYzMTEwMDUwOTU3NDsKKyAgeDMgPSAwMTU0NDc2NjQ1MzQ1Njc0NzQ2NjA2 OworfQorCit2b2lkIHVzZV9sb25nbG9uZzIgKCkKK3sKKyAgdW5zaWduZWQg bG9uZyBsb25nIHgxLCB4MiwgeDM7IAorICAvLyBtYWtlIHN1cmUgaXQncyBv ayB3aXRoIGhleCwgZGVjaW1hbCBhbmQgb2N0YWwKKyAgeDEgPSAweDFiMjdk YTU3MmVmM2NkODZMTDsKKyAgeDIgPSAxOTU2NzcyNjMxMTAwNTA5NTc0TEw7 CisgIHgzID0gMDE1NDQ3NjY0NTM0NTY3NDc0NjYwNkxMOworfQpJbmRleDog Z2NjL3Rlc3RzdWl0ZS9nKysuZGcvd2Fybi9wcjEzMzU4LTQuQwo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLSBnY2MvdGVzdHN1aXRlL2crKy5kZy93YXJu L3ByMTMzNTgtNC5DCShyZXZpc2lvbiAwKQorKysgZ2NjL3Rlc3RzdWl0ZS9n KysuZGcvd2Fybi9wcjEzMzU4LTQuQwkocmV2aXNpb24gMCkKQEAgLTAsMCAr MSwyNCBAQAorLy8gUFIgYysrLzEzMzU4OiBnKysgc2hvdWxkIGFjY2VwdCBh IGxvbmcgbG9uZyBjb25zdGFudCBzYW5zIExMIHN1ZmZpeAorLy8gaWYgLVdu by1sb25nLWxvbmcgaXMgaW4gdXNlLgorLy8geyBkZy1kbyBjb21waWxlIH0K Ky8vIHsgZGctcmVxdWlyZS1lZmZlY3RpdmUtdGFyZ2V0IGludDMycGx1cyB9 IAorLy8geyBkZy1vcHRpb25zICItc3RkPWMrKzB4IC1wZWRhbnRpYy1lcnJv cnMgLVdsb25nLWxvbmciIH0KKworCit2b2lkIHVzZV9sb25nbG9uZyAoKQor eworICB1bnNpZ25lZCBsb25nIGxvbmcgeDEsIHgyLCB4MzsgLy8geyBkZy13 YXJuaW5nICJJU08gQ1xcK1xcKyAxOTk4IGRvZXMgbm90IHN1cHBvcnQgJ2xv bmcgbG9uZyciIH0KKyAgLy8gbWFrZSBzdXJlIHdlIHdhcm4gd2l0aCBoZXgs IGRlY2ltYWwgYW5kIG9jdGFsCisgIHgxID0gMHgxYjI3ZGE1NzJlZjNjZDg2 OyAvLyB7IGRnLXdhcm5pbmcgImludGVnZXIgY29uc3RhbnQgaXMgdG9vIGxh cmdlIGZvciAnbG9uZycgdHlwZSIgImxvbmcgbG9uZyIgeyB0YXJnZXQgaWxw MzIgfSB9CisgIHgyID0gMTk1Njc3MjYzMTEwMDUwOTU3NDsgLy8geyBkZy13 YXJuaW5nICJpbnRlZ2VyIGNvbnN0YW50IGlzIHRvbyBsYXJnZSBmb3IgJ2xv bmcnIHR5cGUiICJsb25nIGxvbmciIHsgdGFyZ2V0IGlscDMyIH0gfQorICB4 MyA9IDAxNTQ0NzY2NDUzNDU2NzQ3NDY2MDY7IC8vIHsgZGctd2FybmluZyAi aW50ZWdlciBjb25zdGFudCBpcyB0b28gbGFyZ2UgZm9yICdsb25nJyB0eXBl IiAibG9uZyBsb25nIiB7IHRhcmdldCBpbHAzMiB9IH0KK30KKwordm9pZCB1 c2VfbG9uZ2xvbmcyICgpCit7CisgIHVuc2lnbmVkIGxvbmcgbG9uZyB4MSwg eDIsIHgzOyAvLyB7IGRnLXdhcm5pbmcgIklTTyBDXFwrXFwrIDE5OTggZG9l cyBub3Qgc3VwcG9ydCAnbG9uZyBsb25nJyIgfQorICAvLyBtYWtlIHN1cmUg d2Ugd2FybiB3aXRoIGhleCwgZGVjaW1hbCBhbmQgb2N0YWwKKyAgeDEgPSAw eDFiMjdkYTU3MmVmM2NkODZMTDsgLy8geyBkZy13YXJuaW5nICJsb25nIGxv bmciIH0KKyAgeDIgPSAxOTU2NzcyNjMxMTAwNTA5NTc0TEw7IC8vIHsgZGct d2FybmluZyAibG9uZyBsb25nIiB9CisgIHgzID0gMDE1NDQ3NjY0NTM0NTY3 NDc0NjYwNkxMOyAvLyB7IGRnLXdhcm5pbmcgImxvbmcgbG9uZyIgfQorfQpJ bmRleDogZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvd2Fybi9wcjEzMzU4LkMKPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0gZ2NjL3Rlc3RzdWl0ZS9nKysuZGcv d2Fybi9wcjEzMzU4LkMJKHJldmlzaW9uIDApCisrKyBnY2MvdGVzdHN1aXRl L2crKy5kZy93YXJuL3ByMTMzNTguQwkocmV2aXNpb24gMCkKQEAgLTAsMCAr MSwyNCBAQAorLy8gUFIgYysrLzEzMzU4OiBnKysgc2hvdWxkIGFjY2VwdCBh IGxvbmcgbG9uZyBjb25zdGFudCBzYW5zIExMIHN1ZmZpeAorLy8gaWYgLVdu by1sb25nLWxvbmcgaXMgaW4gdXNlLgorLy8geyBkZy1kbyBjb21waWxlIH0K Ky8vIHsgZGctcmVxdWlyZS1lZmZlY3RpdmUtdGFyZ2V0IGludDMycGx1cyB9 IAorLy8geyBkZy1vcHRpb25zICItc3RkPWMrKzk4IC1Xbm8tbG9uZy1sb25n IC1wZWRhbnRpYy1lcnJvcnMiIH0KKworCit2b2lkIHVzZV9sb25nbG9uZyAo KQoreworICB1bnNpZ25lZCBsb25nIGxvbmcgeDEsIHgyLCB4MzsgCisgIC8v IG1ha2Ugc3VyZSBpdCdzIG9rIHdpdGggaGV4LCBkZWNpbWFsIGFuZCBvY3Rh bAorICB4MSA9IDB4MWIyN2RhNTcyZWYzY2Q4NjsKKyAgeDIgPSAxOTU2Nzcy NjMxMTAwNTA5NTc0OworICB4MyA9IDAxNTQ0NzY2NDUzNDU2NzQ3NDY2MDY7 Cit9CisKK3ZvaWQgdXNlX2xvbmdsb25nMiAoKQoreworICB1bnNpZ25lZCBs b25nIGxvbmcgeDEsIHgyLCB4MzsgCisgIC8vIG1ha2Ugc3VyZSBpdCdzIG9r IHdpdGggaGV4LCBkZWNpbWFsIGFuZCBvY3RhbAorICB4MSA9IDB4MWIyN2Rh NTcyZWYzY2Q4NkxMOworICB4MiA9IDE5NTY3NzI2MzExMDA1MDk1NzRMTDsK KyAgeDMgPSAwMTU0NDc2NjQ1MzQ1Njc0NzQ2NjA2TEw7Cit9CkluZGV4OiBn Y2MvY3AvZXJyb3IuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBnY2Mv Y3AvZXJyb3IuYwkocmV2aXNpb24gMTQ1ODUzKQorKysgZ2NjL2NwL2Vycm9y LmMJKHdvcmtpbmcgY29weSkKQEAgLTI4MDIsNSArMjgwMiwyNCBAQCBtYXli ZV93YXJuX2NwcDB4IChjb25zdCBjaGFyKiBzdHIpCiB2b2lkCiBtYXliZV93 YXJuX3ZhcmlhZGljX3RlbXBsYXRlcyAodm9pZCkKIHsKICAgbWF5YmVfd2Fy bl9jcHAweCAoInZhcmlhZGljIHRlbXBsYXRlcyIpOwogfQorCisKKy8qIElz c3VlIGFuIElTTyBDKys5OCBwZWRhbnRpYyB3YXJuaW5nIE1TR0lELiAgVGhp cyBmdW5jdGlvbiBpcyBzdXBwb3NlZCB0bworICAgYmUgdXNlZCBmb3IgbWF0 dGVycyB0aGF0IGFyZSBhbGxvd2VkIGluIElTTyBDKysweCBidXQgbm90IHN1 cHBvcnRlZCBpbgorICAgSVNPIEMrKzk4LCB0aHVzIHdlIGV4cGxpY2l0bHkg ZG9uJ3QgcGVkd2FybiB3aGVuIElTTyBjKysweCBpcyBzcGVjaWZpZWQuICAq LworCitib29sCitwZWR3YXJuX2N4eDk4IChsb2NhdGlvbl90IGxvY2F0aW9u LCBpbnQgb3B0LCBjb25zdCBjaGFyICpnbXNnaWQsIC4uLikKK3sKKyAgZGlh Z25vc3RpY19pbmZvIGRpYWdub3N0aWM7CisgIHZhX2xpc3QgYXA7CisKKyAg dmFfc3RhcnQgKGFwLCBnbXNnaWQpOworICBkaWFnbm9zdGljX3NldF9pbmZv ICgmZGlhZ25vc3RpYywgZ21zZ2lkLCAmYXAsIGxvY2F0aW9uLAorCQkgICAg ICAgKGN4eF9kaWFsZWN0ID09IGN4eDk4KSA/IERLX1BFRFdBUk4gOiBES19X QVJOSU5HKTsKKyAgZGlhZ25vc3RpYy5vcHRpb25faW5kZXggPSBvcHQ7Cisg IHZhX2VuZCAoYXApOworICByZXR1cm4gcmVwb3J0X2RpYWdub3N0aWMgKCZk aWFnbm9zdGljKTsKK30KSW5kZXg6IGdjYy9jcC9wYXJzZXIuYwo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLSBnY2MvY3AvcGFyc2VyLmMJKHJldmlzaW9u IDE0NTg1MykKKysrIGdjYy9jcC9wYXJzZXIuYwkod29ya2luZyBjb3B5KQpA QCAtMjE2NCwxNCArMjE2NCwxMyBAQCBjcF9wYXJzZXJfY2hlY2tfZGVjbF9z cGVjIChjcF9kZWNsX3NwZWNpCiAgICAgICAvKiBUaGUgImxvbmciIHNwZWNp ZmllciBpcyBhIHNwZWNpYWwgY2FzZSBiZWNhdXNlIG9mICJsb25nIGxvbmci LiAgKi8KICAgICAgIGlmIChkcyA9PSBkc19sb25nKQogCXsKIAkgIGlmIChj b3VudCA+IDIpCiAJICAgIGVycm9yICgiJUglPGxvbmcgbG9uZyBsb25nJT4g aXMgdG9vIGxvbmcgZm9yIEdDQyIsICZsb2NhdGlvbik7Ci0JICBlbHNlIGlm IChwZWRhbnRpYyAmJiAhaW5fc3lzdGVtX2hlYWRlciAmJiB3YXJuX2xvbmdf bG9uZwotICAgICAgICAgICAgICAgICAgICYmIGN4eF9kaWFsZWN0ID09IGN4 eDk4KQotCSAgICBwZWR3YXJuIChsb2NhdGlvbiwgT1BUX1dsb25nX2xvbmcs IAotCQkgICAgICJJU08gQysrIDE5OTggZG9lcyBub3Qgc3VwcG9ydCAlPGxv bmcgbG9uZyU+Iik7CisJICBlbHNlIAorCSAgICBwZWR3YXJuX2N4eDk4IChs b2NhdGlvbiwgT1BUX1dsb25nX2xvbmcsIAorCQkJICAgIklTTyBDKysgMTk5 OCBkb2VzIG5vdCBzdXBwb3J0ICU8bG9uZyBsb25nJT4iKTsKIAl9CiAgICAg ICBlbHNlIGlmIChjb3VudCA+IDEpCiAJewogCSAgc3RhdGljIGNvbnN0IGNo YXIgKmNvbnN0IGRlY2xfc3BlY19uYW1lc1tdID0gewogCSAgICAic2lnbmVk IiwKSW5kZXg6IGdjYy9jcC9jcC10cmVlLmgKPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0gZ2NjL2NwL2NwLXRyZWUuaAkocmV2aXNpb24gMTQ1ODUzKQor KysgZ2NjL2NwL2NwLXRyZWUuaAkod29ya2luZyBjb3B5KQpAQCAtNDQ1Mywx MCArNDQ1MywxMSBAQCBleHRlcm4gY29uc3QgY2hhciAqbGFuZ19kZWNsX25h bWUJCSh0cmVlCiBleHRlcm4gY29uc3QgY2hhciAqbGFuZ3VhZ2VfdG9fc3Ry aW5nCQkoZW51bSBsYW5ndWFnZXMpOwogZXh0ZXJuIGNvbnN0IGNoYXIgKmNs YXNzX2tleV9vcl9lbnVtX2FzX3N0cmluZwkodHJlZSk7CiBleHRlcm4gdm9p ZCBwcmludF9pbnN0YW50aWF0aW9uX2NvbnRleHQJCSh2b2lkKTsKIGV4dGVy biB2b2lkIG1heWJlX3dhcm5fdmFyaWFkaWNfdGVtcGxhdGVzICAgICAgICh2 b2lkKTsKIGV4dGVybiB2b2lkIG1heWJlX3dhcm5fY3BwMHgJCQkoY29uc3Qg Y2hhciAqKTsKK2V4dGVybiBib29sIHBlZHdhcm5fY3h4OTggICAgICAgICAg ICAgICAgICAgICAgIChsb2NhdGlvbl90LCBpbnQsIGNvbnN0IGNoYXIgKiwg Li4uKSBBVFRSSUJVVEVfR0NDX0NYWERJQUcoMyw0KTsKIAogLyogaW4gZXhj ZXB0LmMgKi8KIGV4dGVybiB2b2lkIGluaXRfZXhjZXB0aW9uX3Byb2Nlc3Np bmcJCSh2b2lkKTsKIGV4dGVybiB0cmVlIGV4cGFuZF9zdGFydF9jYXRjaF9i bG9jawkJKHRyZWUpOwogZXh0ZXJuIHZvaWQgZXhwYW5kX2VuZF9jYXRjaF9i bG9jawkJKHZvaWQpOwpJbmRleDogZ2NjL2MtZGVjbC5jCj09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tIGdjYy9jLWRlY2wuYwkocmV2aXNpb24gMTQ1ODUz KQorKysgZ2NjL2MtZGVjbC5jCSh3b3JraW5nIGNvcHkpCkBAIC03Mjk2LDEy ICs3Mjk2LDEyIEBAIGRlY2xzcGVjc19hZGRfdHlwZSAoc3RydWN0IGNfZGVj bHNwZWNzICoKIAkJICAgIHsKIAkJICAgICAgZXJyb3IgKCJib3RoICU8bG9u ZyBsb25nJT4gYW5kICU8ZG91YmxlJT4gaW4gIgogCQkJICAgICAiZGVjbGFy YXRpb24gc3BlY2lmaWVycyIpOwogCQkgICAgICBicmVhazsKIAkJICAgIH0K LQkJICBpZiAocGVkYW50aWMgJiYgIWZsYWdfaXNvYzk5ICYmICFpbl9zeXN0 ZW1faGVhZGVyKQotCQkgICAgcGVkd2FybiAoaW5wdXRfbG9jYXRpb24sIE9Q VF9XbG9uZ19sb25nLCAiSVNPIEM5MCBkb2VzIG5vdCBzdXBwb3J0ICU8bG9u ZyBsb25nJT4iKTsKKwkJICBwZWR3YXJuX2M5MCAoaW5wdXRfbG9jYXRpb24s IE9QVF9XbG9uZ19sb25nLCAKKwkJCSAgICAgICAiSVNPIEM5MCBkb2VzIG5v dCBzdXBwb3J0ICU8bG9uZyBsb25nJT4iKTsKIAkJICBzcGVjcy0+bG9uZ19s b25nX3AgPSAxOwogCQkgIGJyZWFrOwogCQl9CiAJICAgICAgaWYgKHNwZWNz LT5zaG9ydF9wKQogCQllcnJvciAoImJvdGggJTxsb25nJT4gYW5kICU8c2hv cnQlPiBpbiAiCkluZGV4OiBnY2MvYy5vcHQKPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0gZ2NjL2Mub3B0CShyZXZpc2lvbiAxNDU4NTMpCisrKyBnY2Mv Yy5vcHQJKHdvcmtpbmcgY29weSkKQEAgLTI4MywxMSArMjgzLDExIEBAIFdh cm4gYWJvdXQgaW52YWxpZCB1c2VzIG9mIHRoZSBcIm9mZnNldG8KIFdpbnZh bGlkLXBjaAogQyBPYmpDIEMrKyBPYmpDKysgV2FybmluZwogV2FybiBhYm91 dCBQQ0ggZmlsZXMgdGhhdCBhcmUgZm91bmQgYnV0IG5vdCB1c2VkCiAKIFds b25nLWxvbmcKLUMgT2JqQyBDKysgT2JqQysrIFZhcih3YXJuX2xvbmdfbG9u ZykgSW5pdCgxKSBXYXJuaW5nCitDIE9iakMgQysrIE9iakMrKyBWYXIod2Fy bl9sb25nX2xvbmcpIEluaXQoLTEpIFdhcm5pbmcKIERvIG5vdCB3YXJuIGFi b3V0IHVzaW5nIFwibG9uZyBsb25nXCIgd2hlbiAtcGVkYW50aWMKIAogV21h aW4KIEMgT2JqQyBDKysgT2JqQysrIFZhcih3YXJuX21haW4pIEluaXQoLTEp IFdhcm5pbmcKIFdhcm4gYWJvdXQgc3VzcGljaW91cyBkZWNsYXJhdGlvbnMg b2YgXCJtYWluXCIKSW5kZXg6IGdjYy9jLW9wdHMuYwo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLSBnY2MvYy1vcHRzLmMJKHJldmlzaW9uIDE0NTg1MykK KysrIGdjYy9jLW9wdHMuYwkod29ya2luZyBjb3B5KQpAQCAtMTQxMCwxOCAr MTQxMCwxOSBAQCBzYW5pdGl6ZV9jcHBfb3B0cyAodm9pZCkKICAgICBlcnJv ciAoIi1NRyBtYXkgb25seSBiZSB1c2VkIHdpdGggLU0gb3IgLU1NIik7CiAK ICAgY3BwX29wdHMtPnVuc2lnbmVkX2NoYXIgPSAhZmxhZ19zaWduZWRfY2hh cjsKICAgY3BwX29wdHMtPnN0ZGNfMF9pbl9zeXN0ZW1faGVhZGVycyA9IFNU RENfMF9JTl9TWVNURU1fSEVBREVSUzsKIAotICAvKiBXZSB3YW50IC1Xbm8t bG9uZy1sb25nIHRvIG92ZXJyaWRlIC1wZWRhbnRpYyAtc3RkPW5vbi1jOTkK LSAgICAgYW5kL29yIC1XdHJhZGl0aW9uYWwsIHdoYXRldmVyIHRoZSBvcmRl cmluZy4gICovCi0gIGNwcF9vcHRzLT53YXJuX2xvbmdfbG9uZwotICAgID0g d2Fybl9sb25nX2xvbmcgJiYgKChwZWRhbnRpYwotCQkJICAmJiAoY19kaWFs ZWN0X2N4eCAoKQotCQkJICAgICAgPyBjeHhfZGlhbGVjdCA9PSBjeHg5OAot CQkJICAgICAgOiAhZmxhZ19pc29jOTkpKQotICAgICAgICAgICAgICAgICAg ICAgICAgIHx8IHdhcm5fdHJhZGl0aW9uYWwpOworICAvKiBXbG9uZy1sb25n IGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQuIEl0IGlzIGVuYWJsZWQgYnk6Cisg ICAgICBbLXBlZGFudGljIHwgLVd0cmFkaXRpb25hbF0gLXN0ZD1bZ251fGNd Kys5OCA7IG9yCisgICAgICBbLXBlZGFudGljIHwgLVd0cmFkaXRpb25hbF0g LXN0ZD1ub24tYzk5IC4gCisKKyAgICAgIEVpdGhlciAtV2xvbmctbG9uZyBv ciAtV25vLWxvbmctbG9uZyBvdmVycmlkZSBhbnkgb3RoZXIgc2V0dGluZ3Mu ICAqLworICBpZiAod2Fybl9sb25nX2xvbmcgPT0gLTEpCisgICAgd2Fybl9s b25nX2xvbmcgPSAoKHBlZGFudGljIHx8IHdhcm5fdHJhZGl0aW9uYWwpCisJ CSAgICAgICYmIChjX2RpYWxlY3RfY3h4ICgpID8gY3h4X2RpYWxlY3QgPT0g Y3h4OTggOiAhZmxhZ19pc29jOTkpKTsKKyAgY3BwX29wdHMtPndhcm5fbG9u Z19sb25nID0gd2Fybl9sb25nX2xvbmc7CiAKICAgLyogU2ltaWxhcmx5IHdp dGggLVduby12YXJpYWRpYy1tYWNyb3MuICBObyBjaGVjayBmb3IgYzk5IGhl cmUsIHNpbmNlCiAgICAgIHRoaXMgYWxzbyB0dXJucyBvZmYgd2FybmluZ3Mg YWJvdXQgR0NDcyBleHRlbnNpb24uICAqLwogICBjcHBfb3B0cy0+d2Fybl92 YXJpYWRpY19tYWNyb3MKICAgICA9IHdhcm5fdmFyaWFkaWNfbWFjcm9zICYm IChwZWRhbnRpYyB8fCB3YXJuX3RyYWRpdGlvbmFsKTsKSW5kZXg6IGdjYy9j LXBhcnNlci5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGdjYy9jLXBh cnNlci5jCShyZXZpc2lvbiAxNDU4NTMpCisrKyBnY2MvYy1wYXJzZXIuYwko d29ya2luZyBjb3B5KQpAQCAtODE1LDE4ICs4MTUsMTYgQEAgZGlzYWJsZV9l eHRlbnNpb25fZGlhZ25vc3RpY3MgKHZvaWQpCiB7CiAgIGludCByZXQgPSAo cGVkYW50aWMKIAkgICAgIHwgKHdhcm5fcG9pbnRlcl9hcml0aCA8PCAxKQog CSAgICAgfCAod2Fybl90cmFkaXRpb25hbCA8PCAyKQogCSAgICAgfCAoZmxh Z19pc28gPDwgMykKLQkgICAgIHwgKHdhcm5fbG9uZ19sb25nIDw8IDQpCi0J ICAgICB8IChjcHBfb3B0cy0+d2Fybl9sb25nX2xvbmcgPDwgNSkpOworCSAg ICAgfCAod2Fybl9sb25nX2xvbmcgPDwgNCkpOwogICBjcHBfb3B0cy0+cGVk YW50aWMgPSBwZWRhbnRpYyA9IDA7CiAgIHdhcm5fcG9pbnRlcl9hcml0aCA9 IDA7CiAgIGNwcF9vcHRzLT53YXJuX3RyYWRpdGlvbmFsID0gd2Fybl90cmFk aXRpb25hbCA9IDA7CiAgIGZsYWdfaXNvID0gMDsKLSAgd2Fybl9sb25nX2xv bmcgPSAwOwotICBjcHBfb3B0cy0+d2Fybl9sb25nX2xvbmcgPSAwOworICBj cHBfb3B0cy0+d2Fybl9sb25nX2xvbmcgPSB3YXJuX2xvbmdfbG9uZyA9IDA7 CiAgIHJldHVybiByZXQ7CiB9CiAKIC8qIFJlc3RvcmUgdGhlIHdhcm5pbmcg ZmxhZ3Mgd2hpY2ggYXJlIGNvbnRyb2xsZWQgYnkgX19leHRlbnNpb25fXy4K ICAgIEZMQUdTIGlzIHRoZSByZXR1cm4gdmFsdWUgZnJvbSBkaXNhYmxlX2V4 dGVuc2lvbl9kaWFnbm9zdGljcy4gICovCkBAIC04MzYsMTIgKzgzNCwxMSBA QCByZXN0b3JlX2V4dGVuc2lvbl9kaWFnbm9zdGljcyAoaW50IGZsYWdzCiB7 CiAgIGNwcF9vcHRzLT5wZWRhbnRpYyA9IHBlZGFudGljID0gZmxhZ3MgJiAx OwogICB3YXJuX3BvaW50ZXJfYXJpdGggPSAoZmxhZ3MgPj4gMSkgJiAxOwog ICBjcHBfb3B0cy0+d2Fybl90cmFkaXRpb25hbCA9IHdhcm5fdHJhZGl0aW9u YWwgPSAoZmxhZ3MgPj4gMikgJiAxOwogICBmbGFnX2lzbyA9IChmbGFncyA+ PiAzKSAmIDE7Ci0gIHdhcm5fbG9uZ19sb25nID0gKGZsYWdzID4+IDQpICYg MTsKLSAgY3BwX29wdHMtPndhcm5fbG9uZ19sb25nID0gKGZsYWdzID4+IDUp ICYgMTsKKyAgY3BwX29wdHMtPndhcm5fbG9uZ19sb25nID0gd2Fybl9sb25n X2xvbmcgPSAoZmxhZ3MgPj4gNCkgJiAxOwogfQogCiAvKiBQb3NzaWJseSBr aW5kcyBvZiBkZWNsYXJhdG9yIHRvIHBhcnNlLiAgKi8KIHR5cGVkZWYgZW51 bSBjX2R0cl9zeW4gewogICAvKiBBIG5vcm1hbCBkZWNsYXJhdG9yIHdpdGgg YW4gaWRlbnRpZmllci4gICovCkluZGV4OiBsaWJjcHAvaW5pdC5jCj09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tIGxpYmNwcC9pbml0LmMJKHJldmlzaW9u IDE0NTg1MykKKysrIGxpYmNwcC9pbml0LmMJKHdvcmtpbmcgY29weSkKQEAg LTE1OCwxMSArMTU4LDExIEBAIGNwcF9jcmVhdGVfcmVhZGVyIChlbnVtIGNf bGFuZyBsYW5nLCBoYXMKICAgQ1BQX09QVElPTiAocGZpbGUsIHRhYnN0b3Ap ID0gODsKICAgQ1BQX09QVElPTiAocGZpbGUsIG9wZXJhdG9yX25hbWVzKSA9 IDE7CiAgIENQUF9PUFRJT04gKHBmaWxlLCB3YXJuX3RyaWdyYXBocykgPSAy OwogICBDUFBfT1BUSU9OIChwZmlsZSwgd2Fybl9lbmRpZl9sYWJlbHMpID0g MTsKICAgQ1BQX09QVElPTiAocGZpbGUsIHdhcm5fZGVwcmVjYXRlZCkgPSAx OwotICBDUFBfT1BUSU9OIChwZmlsZSwgd2Fybl9sb25nX2xvbmcpID0gIUNQ UF9PUFRJT04gKHBmaWxlLCBjOTkpOworICBDUFBfT1BUSU9OIChwZmlsZSwg d2Fybl9sb25nX2xvbmcpID0gMDsKICAgQ1BQX09QVElPTiAocGZpbGUsIGRv bGxhcnNfaW5faWRlbnQpID0gMTsKICAgQ1BQX09QVElPTiAocGZpbGUsIHdh cm5fZG9sbGFycykgPSAxOwogICBDUFBfT1BUSU9OIChwZmlsZSwgd2Fybl92 YXJpYWRpY19tYWNyb3MpID0gMTsKICAgQ1BQX09QVElPTiAocGZpbGUsIHdh cm5fYnVpbHRpbl9tYWNyb19yZWRlZmluZWQpID0gMTsKICAgQ1BQX09QVElP TiAocGZpbGUsIHdhcm5fbm9ybWFsaXplKSA9IG5vcm1hbGl6ZWRfQzsKSW5k ZXg6IGxpYmNwcC9leHByLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g bGliY3BwL2V4cHIuYwkocmV2aXNpb24gMTQ1ODUzKQorKysgbGliY3BwL2V4 cHIuYwkod29ya2luZyBjb3B5KQpAQCAtNDE3LDE0ICs0MTcsMTYgQEAgY3Bw X2NsYXNzaWZ5X251bWJlciAoY3BwX3JlYWRlciAqcGZpbGUsIAogCQkgICAg ICAgInRyYWRpdGlvbmFsIEMgcmVqZWN0cyB0aGUgXCIlLipzXCIgc3VmZml4 IiwKIAkJICAgICAgIChpbnQpIChsaW1pdCAtIHN0ciksIHN0cik7CiAJfQog CiAgICAgICBpZiAoKHJlc3VsdCAmIENQUF9OX1dJRFRIKSA9PSBDUFBfTl9M QVJHRQotCSAgJiYgISBDUFBfT1BUSU9OIChwZmlsZSwgYzk5KQogCSAgJiYg Q1BQX09QVElPTiAocGZpbGUsIHdhcm5fbG9uZ19sb25nKSkKLQljcHBfZXJy b3IgKHBmaWxlLCBDUFBfRExfUEVEV0FSTiwKLQkJICAgInVzZSBvZiBDOTkg bG9uZyBsb25nIGludGVnZXIgY29uc3RhbnQiKTsKKwljcHBfZXJyb3IgKHBm aWxlLCAKKwkJICAgQ1BQX09QVElPTiAocGZpbGUsIGM5OSkgPyBDUFBfRExf V0FSTklORyA6IENQUF9ETF9QRURXQVJOLAorCQkgICBDUFBfT1BUSU9OIChw ZmlsZSwgY3BsdXNwbHVzKSAKKwkJICAgPyAidXNlIG9mIEMrKzB4IGxvbmcg bG9uZyBpbnRlZ2VyIGNvbnN0YW50IgorCQkgICA6ICJ1c2Ugb2YgQzk5IGxv bmcgbG9uZyBpbnRlZ2VyIGNvbnN0YW50Iik7CiAKICAgICAgIHJlc3VsdCB8 PSBDUFBfTl9JTlRFR0VSOwogICAgIH0KIAogIHN5bnRheF9vazoK --0016e6dee744387d0204673826d1--