From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 19666 invoked by alias); 6 Jan 2007 17:49:42 -0000 Received: (qmail 19658 invoked by uid 22791); 6 Jan 2007 17:49:41 -0000 X-Spam-Check-By: sourceware.org Received: from wx-out-0506.google.com (HELO wx-out-0506.google.com) (66.249.82.239) by sourceware.org (qpsmtpd/0.31) with ESMTP; Sat, 06 Jan 2007 17:49:31 +0000 Received: by wx-out-0506.google.com with SMTP id h31so7296294wxd for ; Sat, 06 Jan 2007 09:49:30 -0800 (PST) Received: by 10.90.72.10 with SMTP id u10mr1316879aga.1168105769976; Sat, 06 Jan 2007 09:49:29 -0800 (PST) Received: by 10.90.70.5 with HTTP; Sat, 6 Jan 2007 09:49:29 -0800 (PST) Message-ID: <6c33472e0701060949l27f86e3bx1eb762c0c93fb394@mail.gmail.com> Date: Sat, 06 Jan 2007 17:49:00 -0000 From: "=?UTF-8?Q?Manuel_L=C3=B3pez-Ib=C3=A1=C3=B1ez?=" To: gcc-patches Subject: [PATCH] PR c++/28986 failure to diagnose overflow for binary operators MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_27645_12351208.1168105769930" 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: 2007-01/txt/msg00473.txt.bz2 ------=_Part_27645_12351208.1168105769930 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline Content-length: 1837 :ADDPATCH c++: Somehow the C++ front-end is not able to diagnose overflow for the result of binary operators. The fix is trivial (I can hardly believe that this is not a regression). In addition, I have adapted the overflow testcases from the C front-end to the C++ testsuite with some minor modifications. For reference, I also provide a diff showing those modifications. One particular issue that I am not sure about is whether initialisers for static variables need to be constant in C++ as they do in C. The relevant hunk in the diff between C and C++ testcases is: -/* But this expression does need to be constant. */ +/* But this expression does need to be constant (in C++ ???). */ static int sc = INT_MAX + 1; /* { dg-warning "warning: integer overflow in expression" } */ -/* { dg-warning "warning: overflow in constant expression" "constant" { target *-*-* } 47 } */ +/* { dg-warning "warning: overflow in constant expression" "constant" { xfail *-*-* } 47 } */ Bootstrapped and tested with --enable-languages=all on i686-pc-linux-gnu for revision 120511. cp/ 2007-01-06 Manuel Lopez-Ibanez PR c++/28986 * typeck.c (build_binary_op): Call overflow_warning if TREE_OVERFLOW_P is true for the result and not for any of the operands. testsuite/ 2007-01-06 Manuel Lopez-Ibanez PR c++/28986 * g++.dg/conversion/nullptr1.C: Added overflow warning. * g++.dg/warn/multiple-overflow-warn-2.C: New. * g++.dg/warn/overflow-warn-1.C: New. * g++.dg/warn/overflow-warn-2.C: New. * g++.dg/warn/overflow-warn-3.C: New. * g++.dg/warn/overflow-warn-4.C: New. * g++.dg/warn/overflow-warn-5.C: New. * g++.dg/warn/overflow-warn-6.C: New. * g++.dg/warn/Woverflow-1.C: New. * g++.dg/warn/Woverflow-2.C: New. * g++.dg/warn/Woverflow-3.C: New. ------=_Part_27645_12351208.1168105769930 Content-Type: text/plain; name=c-c++-overflow-testsuite.diff; charset=ANSI_X3.4-1968 Content-Transfer-Encoding: base64 X-Attachment-Id: f_ewmbzi7l Content-Disposition: attachment; filename="c-c++-overflow-testsuite.diff" Content-length: 19224 LS0tIHRydW5rL2djYy90ZXN0c3VpdGUvZ2NjLmRnL211bHRpcGxlLW92ZXJm bG93LXdhcm4tMS5jCTIwMDctMDEtMDYgMDA6MjA6MjQuMDAwMDAwMDAwICsw MTAwCisrKyB0cnVuay9nY2MvdGVzdHN1aXRlL2crKy5kZy93YXJuL211bHRp cGxlLW92ZXJmbG93LXdhcm4tMS5DCTIwMDctMDEtMDYgMDA6MjU6MDYuMDAw MDAwMDAwICswMTAwCkBAIC0xLDYgKzEsNiBAQAogLyogUFIgYy8xOTk3OCA6 IFRlc3QgZm9yIGR1cGxpY2F0ZWQgd2FybmluZ3MgKHVuYXJ5IG9wZXJhdG9y cykuICAqLwogLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLS8qIHsgZGctb3B0 aW9ucyAiLXN0ZD1jOTkgLVdvdmVyZmxvdyIgfSAqLworLyogeyBkZy1vcHRp b25zICItV292ZXJmbG93IiB9ICovCiAKICNpbmNsdWRlIDxsaW1pdHMuaD4K IAotLS0gdHJ1bmsvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvbXVsdGlwbGUtb3Zl cmZsb3ctd2Fybi0yLmMJMjAwNy0wMS0wNiAwMDoyMTowMi4wMDAwMDAwMDAg KzAxMDAKKysrIHRydW5rL2djYy90ZXN0c3VpdGUvZysrLmRnL3dhcm4vbXVs dGlwbGUtb3ZlcmZsb3ctd2Fybi0yLkMJMjAwNy0wMS0wNiAwOTo0MDo1NS4w MDAwMDAwMDAgKzAxMDAKQEAgLTEsNiArMSw2IEBACiAvKiBQUiBjLzE5OTc4 IDogVGVzdCBmb3IgZHVwbGljYXRlZCB3YXJuaW5ncyAoYmluYXJ5IG9wZXJh dG9ycykuICAqLwogLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLS8qIHsgZGct b3B0aW9ucyAiLXN0ZD1jOTkgLVdvdmVyZmxvdyIgfSAqLworLyogeyBkZy1v cHRpb25zICItV292ZXJmbG93IiB9ICovCiAKICNpbmNsdWRlIDxsaW1pdHMu aD4KIAotLS0gdHJ1bmsvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvb3ZlcmZsb3ct d2Fybi0xLmMJMjAwNi0xMi0wMiAwMzoxNjo0Ni4wMDAwMDAwMDAgKzAxMDAK KysrIHRydW5rL2djYy90ZXN0c3VpdGUvZysrLmRnL3dhcm4vb3ZlcmZsb3ct d2Fybi0xLkMJMjAwNy0wMS0wNiAwOTo0MDo1NS4wMDAwMDAwMDAgKzAxMDAK QEAgLTEsNyArMSw3IEBACiAvKiBUZXN0IGZvciBkaWFnbm9zdGljcyBmb3Ig Y29uc3RhbnQgb3ZlcmZsb3cuICAqLwogLyogT3JpZ2luOiBKb3NlcGggTXll cnMgPGpvc2VwaEBjb2Rlc291cmNlcnkuY29tPiAqLwogLyogeyBkZy1kbyBj b21waWxlIH0gKi8KLS8qIHsgZGctb3B0aW9ucyAiLXN0ZD1jOTkiIH0gKi8K Ky8qIHsgZGctb3B0aW9ucyAiIiB9ICovCiAKICNpbmNsdWRlIDxsaW1pdHMu aD4KIApAQCAtMTEsNyArMTEsNyBAQCBlbnVtIGUgewogICBFMSA9IFVJTlRf TUFYICsgMSwKICAgLyogT3ZlcmZsb3cgaW4gYW4gdW5ldmFsdWF0ZWQgcGFy dCBvZiBhbiBleHByZXNzaW9uIGlzIE9LIChleGFtcGxlCiAgICAgIGluIHRo ZSBzdGFuZGFyZCkuICAqLwotICBFMiA9IDIgfHwgMSAvIDAsCisgIEUyID0g MiB8fCAxIC8gMCwgLyogeyBkZy1ib2d1cyAid2FybmluZzogZGl2aXNpb24g YnkgemVybyIgIiIgeyB4ZmFpbCAqLSotKiB9IDE0IH0gKi8KICAgRTMgPSAx IC8gMCwgLyogeyBkZy13YXJuaW5nICJ3YXJuaW5nOiBkaXZpc2lvbiBieSB6 ZXJvIiB9ICovCiAgIC8qIHsgZGctZXJyb3IgImVycm9yOiBlbnVtZXJhdG9y IHZhbHVlIGZvciAnRTMnIGlzIG5vdCBhbiBpbnRlZ2VyIGNvbnN0YW50IiAi ZW51bSBlcnJvciIgeyB0YXJnZXQgKi0qLSogfSAxNSB9ICovCiAgIC8qIEJ1 dCBhcyBpbiBEUiMwMzEsIHRoZSAxLzAgaW4gYW4gZXZhbHVhdGVkIHN1YmV4 cHJlc3Npb24gbWVhbnMgdGhlCkBAIC00NiwxMCArNDYsMTAgQEAgc3RhdGlj IGludCBzYyA9IElOVF9NQVggKyAxOyAvKiB7IGRnLXdhcgogICAgY29uc3Rh bnRzLiAgVGhlIHRoaXJkIGhhcyB0aGUgb3ZlcmZsb3cgaW4gYW4gdW5ldmFs dWF0ZWQKICAgIHN1YmV4cHJlc3Npb24sIHNvIGlzIGEgbnVsbCBwb2ludGVy IGNvbnN0YW50LiAgKi8KIHZvaWQgKnAgPSAwICogKElOVF9NQVggKyAxKTsg LyogeyBkZy13YXJuaW5nICJ3YXJuaW5nOiBpbnRlZ2VyIG92ZXJmbG93IGlu IGV4cHJlc3Npb24iIH0gKi8KLS8qIHsgZGctd2FybmluZyAid2FybmluZzog aW5pdGlhbGl6YXRpb24gbWFrZXMgcG9pbnRlciBmcm9tIGludGVnZXIgd2l0 aG91dCBhIGNhc3QiICJudWxsIiB7IHRhcmdldCAqLSotKiB9IDQ4IH0gKi8K Ky8qIHsgZGctZXJyb3IgImludmFsaWQgY29udmVyc2lvbiBmcm9tICdpbnQn IHRvICd2b2lkIiAibnVsbCIgeyB0YXJnZXQgKi0qLSogfSA0OCB9ICovCiB2 b2lkICpxID0gMCAqICgxIC8gMCk7IC8qIHsgZGctd2FybmluZyAid2Fybmlu ZzogZGl2aXNpb24gYnkgemVybyIgfSAqLwotLyogeyBkZy13YXJuaW5nICJ3 YXJuaW5nOiBpbml0aWFsaXphdGlvbiBtYWtlcyBwb2ludGVyIGZyb20gaW50 ZWdlciB3aXRob3V0IGEgY2FzdCIgIm51bGwiIHsgeGZhaWwgKi0qLSogfSA1 MCB9ICovCi12b2lkICpyID0gKDEgPyAwIDogSU5UX01BWCsxKTsKKy8qIHsg ZGctZXJyb3IgImludmFsaWQgY29udmVyc2lvbiBmcm9tICdpbnQnIHRvICd2 b2lkKiciICJudWxsIiB7IHhmYWlsICotKi0qIH0gNTAgfSAqLwordm9pZCAq ciA9ICgxID8gMCA6IElOVF9NQVgrMSk7IC8qIHsgZGctYm9ndXMgImludGVn ZXIgb3ZlcmZsb3cgaW4gZXhwcmVzc2lvbiIgIiIgeyB4ZmFpbCAqLSotKiB9 IDUyIH0gKi8KIAogdm9pZAogZyAoaW50IGkpCi0tLSB0cnVuay9nY2MvdGVz dHN1aXRlL2djYy5kZy9vdmVyZmxvdy13YXJuLTIuYwkyMDA2LTEyLTAyIDAz OjE3OjEyLjAwMDAwMDAwMCArMDEwMAorKysgdHJ1bmsvZ2NjL3Rlc3RzdWl0 ZS9nKysuZGcvd2Fybi9vdmVyZmxvdy13YXJuLTIuQwkxOTcwLTAxLTAxIDAx OjAwOjAwLjAwMDAwMDAwMCArMDEwMApAQCAtMSwxMzIgKzAsMCBAQAotLyog VGVzdCBmb3IgZGlhZ25vc3RpY3MgZm9yIGNvbnN0YW50IG92ZXJmbG93LiAg VGVzdCB3aXRoIC1XdHJhZGl0aW9uYWwtY29udmVyc2lvbi4gICovCi0vKiBP cmlnaW46IEpvc2VwaCBNeWVycyA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+ ICovCi0vKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotLyogeyBkZy1vcHRpb25z ICItc3RkPWM5OSAtV3RyYWRpdGlvbmFsLWNvbnZlcnNpb24iIH0gKi8KLQot I2luY2x1ZGUgPGxpbWl0cy5oPgotCi1lbnVtIGUgewotICBFMCA9IElOVF9N QVgsCi0gIC8qIFVuc2lnbmVkIG92ZXJmbG93IHdyYXBzIGFyb3VuZC4gICov Ci0gIEUxID0gVUlOVF9NQVggKyAxLAotICAvKiBPdmVyZmxvdyBpbiBhbiB1 bmV2YWx1YXRlZCBwYXJ0IG9mIGFuIGV4cHJlc3Npb24gaXMgT0sgKGV4YW1w bGUKLSAgICAgaW4gdGhlIHN0YW5kYXJkKS4gICovCi0gIEUyID0gMiB8fCAx IC8gMCwKLSAgRTMgPSAxIC8gMCwgLyogeyBkZy13YXJuaW5nICJ3YXJuaW5n OiBkaXZpc2lvbiBieSB6ZXJvIiB9ICovCi0gIC8qIHsgZGctZXJyb3IgImVy cm9yOiBlbnVtZXJhdG9yIHZhbHVlIGZvciAnRTMnIGlzIG5vdCBhbiBpbnRl Z2VyIGNvbnN0YW50IiAiZW51bSBlcnJvciIgeyB0YXJnZXQgKi0qLSogfSAx NSB9ICovCi0gIC8qIEJ1dCBhcyBpbiBEUiMwMzEsIHRoZSAxLzAgaW4gYW4g ZXZhbHVhdGVkIHN1YmV4cHJlc3Npb24gbWVhbnMgdGhlCi0gICAgIHdob2xl IGV4cHJlc3Npb24gdmlvbGF0ZXMgdGhlIGNvbnN0cmFpbnRzLiAgKi8KLSAg RTQgPSAwICogKDEgLyAwKSwgLyogeyBkZy13YXJuaW5nICJ3YXJuaW5nOiBk aXZpc2lvbiBieSB6ZXJvIiB9ICovCi0gIC8qIHsgZGctZXJyb3IgImVycm9y OiBlbnVtZXJhdG9yIHZhbHVlIGZvciAnRTQnIGlzIG5vdCBhbiBpbnRlZ2Vy IGNvbnN0YW50IiAiZW51bSBlcnJvciIgeyB4ZmFpbCAqLSotKiB9IDE5IH0g Ki8KLSAgRTUgPSBJTlRfTUFYICsgMSwgLyogeyBkZy13YXJuaW5nICJ3YXJu aW5nOiBpbnRlZ2VyIG92ZXJmbG93IGluIGV4cHJlc3Npb24iIH0gKi8KLSAg LyogQWdhaW4sIG92ZXJmbG93IGluIGV2YWx1YXRlZCBzdWJleHByZXNzaW9u LiAgKi8KLSAgRTYgPSAwICogKElOVF9NQVggKyAxKSwgLyogeyBkZy13YXJu aW5nICJ3YXJuaW5nOiBpbnRlZ2VyIG92ZXJmbG93IGluIGV4cHJlc3Npb24i IH0gKi8KLSAgLyogQSBjYXN0IGRvZXMgbm90IGNvbnN0aXR1dGUgb3ZlcmZs b3cgaW4gY29udmVyc2lvbi4gICovCi0gIEU3ID0gKGNoYXIpIElOVF9NQVgK LX07Ci0KLXN0cnVjdCBzIHsKLSAgaW50IGE7Ci0gIGludCA6IDAgKiAoMSAv IDApOyAvKiB7IGRnLXdhcm5pbmcgIndhcm5pbmc6IGRpdmlzaW9uIGJ5IHpl cm8iIH0gKi8KLSAgaW50IDogMCAqIChJTlRfTUFYICsgMSk7IC8qIHsgZGct d2FybmluZyAid2FybmluZzogaW50ZWdlciBvdmVyZmxvdyBpbiBleHByZXNz aW9uIiB9ICovCi19OwotCi12b2lkCi1mICh2b2lkKQotewotICAvKiBUaGlz IGV4cHJlc3Npb24gaXMgbm90IHJlcXVpcmVkIHRvIGJlIGEgY29uc3RhbnQg ZXhwcmVzc2lvbiwgc28KLSAgICAgaXQgc2hvdWxkIGp1c3QgaW52b2x2ZSB1 bmRlZmluZWQgYmVoYXZpb3IgYXQgcnVudGltZS4gICovCi0gIGludCBjID0g SU5UX01BWCArIDE7IC8qIHsgZGctd2FybmluZyAid2FybmluZzogaW50ZWdl ciBvdmVyZmxvdyBpbiBleHByZXNzaW9uIiB9ICovCi19Ci0KLS8qIEJ1dCB0 aGlzIGV4cHJlc3Npb24gZG9lcyBuZWVkIHRvIGJlIGNvbnN0YW50LiAgKi8K LXN0YXRpYyBpbnQgc2MgPSBJTlRfTUFYICsgMTsgLyogeyBkZy13YXJuaW5n ICJ3YXJuaW5nOiBpbnRlZ2VyIG92ZXJmbG93IGluIGV4cHJlc3Npb24iIH0g Ki8KLQotLyogVGhlIGZpcnN0IHR3byBvZiB0aGVzZSBpbnZvbHZlIG92ZXJm bG93LCBzbyBhcmUgbm90IG51bGwgcG9pbnRlcgotICAgY29uc3RhbnRzLiAg VGhlIHRoaXJkIGhhcyB0aGUgb3ZlcmZsb3cgaW4gYW4gdW5ldmFsdWF0ZWQK LSAgIHN1YmV4cHJlc3Npb24sIHNvIGlzIGEgbnVsbCBwb2ludGVyIGNvbnN0 YW50LiAgKi8KLXZvaWQgKnAgPSAwICogKElOVF9NQVggKyAxKTsgLyogeyBk Zy13YXJuaW5nICJ3YXJuaW5nOiBpbnRlZ2VyIG92ZXJmbG93IGluIGV4cHJl c3Npb24iIH0gKi8KLS8qIHsgZGctd2FybmluZyAid2FybmluZzogaW5pdGlh bGl6YXRpb24gbWFrZXMgcG9pbnRlciBmcm9tIGludGVnZXIgd2l0aG91dCBh IGNhc3QiICJudWxsIiB7IHRhcmdldCAqLSotKiB9IDQ4IH0gKi8KLXZvaWQg KnEgPSAwICogKDEgLyAwKTsgLyogeyBkZy13YXJuaW5nICJ3YXJuaW5nOiBk aXZpc2lvbiBieSB6ZXJvIiB9ICovCi0vKiB7IGRnLXdhcm5pbmcgIndhcm5p bmc6IGluaXRpYWxpemF0aW9uIG1ha2VzIHBvaW50ZXIgZnJvbSBpbnRlZ2Vy IHdpdGhvdXQgYSBjYXN0IiAibnVsbCIgeyB4ZmFpbCAqLSotKiB9IDUwIH0g Ki8KLXZvaWQgKnIgPSAoMSA/IDAgOiBJTlRfTUFYKzEpOwotCi12b2lkCi1n IChpbnQgaSkKLXsKLSAgc3dpdGNoIChpKQotICAgIHsKLSAgICBjYXNlIDAg KiAoMS8wKTogLyogeyBkZy13YXJuaW5nICJ3YXJuaW5nOiBkaXZpc2lvbiBi eSB6ZXJvIiB9ICovCi0gICAgICA7Ci0gICAgY2FzZSAxICsgMCAqIChJTlRf TUFYICsgMSk6IC8qIHsgZGctd2FybmluZyAid2FybmluZzogaW50ZWdlciBv dmVyZmxvdyBpbiBleHByZXNzaW9uIiB9ICovCi0gICAgICA7Ci0gICAgfQot fQotCi1pbnQKLWggKHZvaWQpCi17Ci0gIHJldHVybiBJTlRfTUFYICsgMTsg LyogeyBkZy13YXJuaW5nICJ3YXJuaW5nOiBpbnRlZ2VyIG92ZXJmbG93IGlu IGV4cHJlc3Npb24iIH0gKi8KLX0KLQotaW50Ci1oMSAodm9pZCkKLXsKLSAg cmV0dXJuIElOVF9NQVggKyAxIC0gSU5UX01BWDsgLyogeyBkZy13YXJuaW5n ICJ3YXJuaW5nOiBpbnRlZ2VyIG92ZXJmbG93IGluIGV4cHJlc3Npb24iIH0g Ki8KLX0KLQotdm9pZCBmdWMgKHVuc2lnbmVkIGNoYXIpOwotdm9pZCBmc2Mg KHNpZ25lZCBjaGFyKTsKLQotdm9pZAotaDIgKHZvaWQpCi17Ci0gIGZzYyAo U0NIQVJfTUFYICsgMSk7Ci0gIC8qIHsgZGctd2FybmluZyAid2FybmluZzog cGFzc2luZyBhcmd1bWVudCAxIG9mICdmc2MnIHdpdGggZGlmZmVyZW50IHdp ZHRoIGR1ZSB0byBwcm90b3R5cGUiICItV3RyYWRpdGlvbmFsLWNvbnZlcnNp b24iIHsgdGFyZ2V0ICotKi0qIH0gODQgfSAqLwotICBmc2MgKFNDSEFSX01J TiAtIDEpOyAvKiB7IGRnLXdhcm5pbmcgIndhcm5pbmc6IG92ZXJmbG93IGlu IGltcGxpY2l0IGNvbnN0YW50IGNvbnZlcnNpb24iIH0gKi8KLSAgLyogeyBk Zy13YXJuaW5nICJ3YXJuaW5nOiBwYXNzaW5nIGFyZ3VtZW50IDEgb2YgJ2Zz Yycgd2l0aCBkaWZmZXJlbnQgd2lkdGggZHVlIHRvIHByb3RvdHlwZSIgIi1X dHJhZGl0aW9uYWwtY29udmVyc2lvbiIgeyB0YXJnZXQgKi0qLSogfSA4NiB9 ICovCi0gIGZzYyAoVUNIQVJfTUFYKTsKLSAgLyogeyBkZy13YXJuaW5nICJ3 YXJuaW5nOiBwYXNzaW5nIGFyZ3VtZW50IDEgb2YgJ2ZzYycgd2l0aCBkaWZm ZXJlbnQgd2lkdGggZHVlIHRvIHByb3RvdHlwZSIgIi1XdHJhZGl0aW9uYWwt Y29udmVyc2lvbiIgeyB0YXJnZXQgKi0qLSogfSA4OCB9ICovCi0gIGZzYyAo VUNIQVJfTUFYICsgMSk7IC8qIHsgZGctd2FybmluZyAid2FybmluZzogb3Zl cmZsb3cgaW4gaW1wbGljaXQgY29uc3RhbnQgY29udmVyc2lvbiIgfSAqLwot ICAvKiB7IGRnLXdhcm5pbmcgIndhcm5pbmc6IHBhc3NpbmcgYXJndW1lbnQg MSBvZiAnZnNjJyB3aXRoIGRpZmZlcmVudCB3aWR0aCBkdWUgdG8gcHJvdG90 eXBlIiAiLVd0cmFkaXRpb25hbC1jb252ZXJzaW9uIiB7IHRhcmdldCAqLSot KiB9IDkwIH0gKi8KLSAgZnVjICgtMSk7Ci0gIC8qIHsgZGctd2FybmluZyAi d2FybmluZzogcGFzc2luZyBhcmd1bWVudCAxIG9mICdmdWMnIHdpdGggZGlm ZmVyZW50IHdpZHRoIGR1ZSB0byBwcm90b3R5cGUiICItV3RyYWRpdGlvbmFs LWNvbnZlcnNpb24iIHsgdGFyZ2V0ICotKi0qIH0gOTIgfSAqLwotICBmdWMg KFVDSEFSX01BWCArIDEpOyAvKiB7IGRnLXdhcm5pbmcgIndhcm5pbmc6IGxh cmdlIGludGVnZXIgaW1wbGljaXRseSB0cnVuY2F0ZWQgdG8gdW5zaWduZWQg dHlwZSIgfSAqLwotICAvKiB7IGRnLXdhcm5pbmcgIndhcm5pbmc6IHBhc3Np bmcgYXJndW1lbnQgMSBvZiAnZnVjJyB3aXRoIGRpZmZlcmVudCB3aWR0aCBk dWUgdG8gcHJvdG90eXBlIiAiLVd0cmFkaXRpb25hbC1jb252ZXJzaW9uIiB7 IHRhcmdldCAqLSotKiB9IDk0IH0gKi8KLSAgZnVjIChTQ0hBUl9NSU4pOwot ICAvKiB7IGRnLXdhcm5pbmcgIndhcm5pbmc6IHBhc3NpbmcgYXJndW1lbnQg MSBvZiAnZnVjJyB3aXRoIGRpZmZlcmVudCB3aWR0aCBkdWUgdG8gcHJvdG90 eXBlIiAiLVd0cmFkaXRpb25hbC1jb252ZXJzaW9uIiB7IHRhcmdldCAqLSot KiB9IDk2IH0gKi8KLSAgZnVjIChTQ0hBUl9NSU4gLSAxKTsgLyogeyBkZy13 YXJuaW5nICJ3YXJuaW5nOiBsYXJnZSBpbnRlZ2VyIGltcGxpY2l0bHkgdHJ1 bmNhdGVkIHRvIHVuc2lnbmVkIHR5cGUiIH0gKi8KLSAgLyogeyBkZy13YXJu aW5nICJ3YXJuaW5nOiBwYXNzaW5nIGFyZ3VtZW50IDEgb2YgJ2Z1Yycgd2l0 aCBkaWZmZXJlbnQgd2lkdGggZHVlIHRvIHByb3RvdHlwZSIgIi1XdHJhZGl0 aW9uYWwtY29udmVyc2lvbiIgeyB0YXJnZXQgKi0qLSogfSA5OCB9ICovCi0g IGZ1YyAoLVVDSEFSX01BWCk7IC8qIHsgZGctd2FybmluZyAid2FybmluZzog bGFyZ2UgaW50ZWdlciBpbXBsaWNpdGx5IHRydW5jYXRlZCB0byB1bnNpZ25l ZCB0eXBlIiB9ICovCi0gIC8qIHsgZGctd2FybmluZyAid2FybmluZzogcGFz c2luZyBhcmd1bWVudCAxIG9mICdmdWMnIHdpdGggZGlmZmVyZW50IHdpZHRo IGR1ZSB0byBwcm90b3R5cGUiICItV3RyYWRpdGlvbmFsLWNvbnZlcnNpb24i IHsgdGFyZ2V0ICotKi0qIH0gMTAwIH0gKi8KLX0KLQotdm9pZCBmdWkgKHVu c2lnbmVkIGludCk7Ci12b2lkIGZzaSAoc2lnbmVkIGludCk7Ci0KLWludCBz aTsKLXVuc2lnbmVkIHVpOwotCi12b2lkCi1oMmkgKGludCB4KQotewotICAv KiBGb3Igc29tZSByZWFzb24sIHdlIG9ubHkgZ2l2ZSBjZXJ0YWluIHdhcm5p bmdzIGZvciBpbXBsaWNpdAotICAgICBjb252ZXJzaW9ucyBhbW9uZyB2YWx1 ZXMgb2YgdGhlIHNhbWUgcHJlY2lzaW9uIHdpdGggLVd0cmFkaXRpb25hbC1j b252ZXJzaW9uLAotICAgICB3aGlsZSB3ZSBkb24ndCBnaXZlIG90aGVycyBh dCBhbGwuICAqLwotICBmc2kgKCh1bnNpZ25lZClJTlRfTUFYICsgMSk7IC8q IHsgZGctd2FybmluZyAid2FybmluZzogcGFzc2luZyBhcmd1bWVudCAxIG9m ICdmc2knIGFzIHNpZ25lZCBkdWUgdG8gcHJvdG90eXBlIiB9ICovCi0gIHNp ID0gKHVuc2lnbmVkKUlOVF9NQVggKyAxOwotICBzaSA9IHggPyAodW5zaWdu ZWQpSU5UX01BWCArIDEgOiAxOwotICBmc2kgKCh1bnNpZ25lZClJTlRfTUFY ICsgMik7IC8qIHsgZGctd2FybmluZyAid2FybmluZzogcGFzc2luZyBhcmd1 bWVudCAxIG9mICdmc2knIGFzIHNpZ25lZCBkdWUgdG8gcHJvdG90eXBlIiB9 ICovCi0gIHNpID0gKHVuc2lnbmVkKUlOVF9NQVggKyAyOwotICBzaSA9IHgg PyAodW5zaWduZWQpSU5UX01BWCArIDIgOiAxOwotICBmc2kgKFVJTlRfTUFY KTsgLyogeyBkZy13YXJuaW5nICJ3YXJuaW5nOiBwYXNzaW5nIGFyZ3VtZW50 IDEgb2YgJ2ZzaScgYXMgc2lnbmVkIGR1ZSB0byBwcm90b3R5cGUiIH0gKi8K LSAgc2kgPSBVSU5UX01BWDsKLSAgZnVpICgtMSk7Ci0gIC8qIHsgZGctd2Fy bmluZyAid2FybmluZzogcGFzc2luZyBhcmd1bWVudCAxIG9mICdmdWknIGFz IHVuc2lnbmVkIGR1ZSB0byBwcm90b3R5cGUiICItV3RyYWRpdGlvbmFsLWNv bnZlcnNpb24iIHsgdGFyZ2V0ICotKi0qIH0gMTI0IH0gKi8KLSAgdWkgPSAt MTsKLSAgdWkgPSB4ID8gLTEgOiAxVTsKLSAgZnVpIChJTlRfTUlOKTsKLSAg LyogeyBkZy13YXJuaW5nICJ3YXJuaW5nOiBwYXNzaW5nIGFyZ3VtZW50IDEg b2YgJ2Z1aScgYXMgdW5zaWduZWQgZHVlIHRvIHByb3RvdHlwZSIgIi1XdHJh ZGl0aW9uYWwtY29udmVyc2lvbiIgeyB0YXJnZXQgKi0qLSogfSAxMjggfSAq LwotICB1aSA9IElOVF9NSU47Ci0gIHVpID0geCA/IElOVF9NSU4gOiAxVTsK LX0KLS0tIHRydW5rL2djYy90ZXN0c3VpdGUvZ2NjLmRnL292ZXJmbG93LXdh cm4tMy5jCTIwMDctMDEtMDYgMDA6MjA6MjQuMDAwMDAwMDAwICswMTAwCisr KyB0cnVuay9nY2MvdGVzdHN1aXRlL2crKy5kZy93YXJuL292ZXJmbG93LXdh cm4tMy5DCTIwMDctMDEtMDYgMDk6NDA6NTUuMDAwMDAwMDAwICswMTAwCkBA IC0xLDcgKzEsNyBAQAogLyogVGVzdCBmb3IgZGlhZ25vc3RpY3MgZm9yIGNv bnN0YW50IG92ZXJmbG93LiAgVGVzdCB3aXRoIC1wZWRhbnRpYy4gICovCiAv KiBPcmlnaW46IEpvc2VwaCBNeWVycyA8am9zZXBoQGNvZGVzb3VyY2VyeS5j b20+ICovCiAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotLyogeyBkZy1vcHRp b25zICItc3RkPWM5OSAtcGVkYW50aWMiIH0gKi8KKy8qIHsgZGctb3B0aW9u cyAiLWZwZXJtaXNzaXZlIC1wZWRhbnRpYyIgfSAqLwogCiAjaW5jbHVkZSA8 bGltaXRzLmg+CiAKQEAgLTExLDcgKzExLDcgQEAgZW51bSBlIHsKICAgRTEg PSBVSU5UX01BWCArIDEsCiAgIC8qIE92ZXJmbG93IGluIGFuIHVuZXZhbHVh dGVkIHBhcnQgb2YgYW4gZXhwcmVzc2lvbiBpcyBPSyAoZXhhbXBsZQogICAg ICBpbiB0aGUgc3RhbmRhcmQpLiAgKi8KLSAgRTIgPSAyIHx8IDEgLyAwLAor ICBFMiA9IDIgfHwgMSAvIDAsIC8qIHsgZGctYm9ndXMgIndhcm5pbmc6IGRp dmlzaW9uIGJ5IHplcm8iICIiIHsgeGZhaWwgKi0qLSogfSAxNCB9ICovCiAg IEUzID0gMSAvIDAsIC8qIHsgZGctd2FybmluZyAid2FybmluZzogZGl2aXNp b24gYnkgemVybyIgfSAqLwogICAvKiB7IGRnLWVycm9yICJlcnJvcjogZW51 bWVyYXRvciB2YWx1ZSBmb3IgJ0UzJyBpcyBub3QgYW4gaW50ZWdlciBjb25z dGFudCIgImVudW0gZXJyb3IiIHsgdGFyZ2V0ICotKi0qIH0gMTUgfSAqLwog ICAvKiBCdXQgYXMgaW4gRFIjMDMxLCB0aGUgMS8wIGluIGFuIGV2YWx1YXRl ZCBzdWJleHByZXNzaW9uIG1lYW5zIHRoZQpAQCAtNDMsMTkgKzQzLDE5IEBA IGYgKHZvaWQpCiAKIH0KIAotLyogQnV0IHRoaXMgZXhwcmVzc2lvbiBkb2Vz IG5lZWQgdG8gYmUgY29uc3RhbnQuICAqLworLyogQnV0IHRoaXMgZXhwcmVz c2lvbiBkb2VzIG5lZWQgdG8gYmUgY29uc3RhbnQgKGluIEMrKyA/Pz8pLiAg Ki8KIHN0YXRpYyBpbnQgc2MgPSBJTlRfTUFYICsgMTsgLyogeyBkZy13YXJu aW5nICJ3YXJuaW5nOiBpbnRlZ2VyIG92ZXJmbG93IGluIGV4cHJlc3Npb24i IH0gKi8KLS8qIHsgZGctd2FybmluZyAid2FybmluZzogb3ZlcmZsb3cgaW4g Y29uc3RhbnQgZXhwcmVzc2lvbiIgImNvbnN0YW50IiB7IHRhcmdldCAqLSot KiB9IDQ3IH0gKi8KKy8qIHsgZGctd2FybmluZyAid2FybmluZzogb3ZlcmZs b3cgaW4gY29uc3RhbnQgZXhwcmVzc2lvbiIgImNvbnN0YW50IiB7IHhmYWls ICotKi0qIH0gNDcgfSAqLwogCiAvKiBUaGUgZmlyc3QgdHdvIG9mIHRoZXNl IGludm9sdmUgb3ZlcmZsb3csIHNvIGFyZSBub3QgbnVsbCBwb2ludGVyCiAg ICBjb25zdGFudHMuICBUaGUgdGhpcmQgaGFzIHRoZSBvdmVyZmxvdyBpbiBh biB1bmV2YWx1YXRlZAogICAgc3ViZXhwcmVzc2lvbiwgc28gaXMgYSBudWxs IHBvaW50ZXIgY29uc3RhbnQuICAqLwogdm9pZCAqcCA9IDAgKiAoSU5UX01B WCArIDEpOyAvKiB7IGRnLXdhcm5pbmcgIndhcm5pbmc6IGludGVnZXIgb3Zl cmZsb3cgaW4gZXhwcmVzc2lvbiIgfSAqLwotLyogeyBkZy13YXJuaW5nICJ3 YXJuaW5nOiBvdmVyZmxvdyBpbiBjb25zdGFudCBleHByZXNzaW9uIiAiY29u c3RhbnQiIHsgdGFyZ2V0ICotKi0qIH0gNTMgfSAqLwotLyogeyBkZy13YXJu aW5nICJ3YXJuaW5nOiBpbml0aWFsaXphdGlvbiBtYWtlcyBwb2ludGVyIGZy b20gaW50ZWdlciB3aXRob3V0IGEgY2FzdCIgIm51bGwiIHsgdGFyZ2V0ICot Ki0qIH0gNTMgfSAqLworLyogeyBkZy1lcnJvciAiaW52YWxpZCBjb252ZXJz aW9uIGZyb20gJ2ludCcgdG8gJ3ZvaWQiICJudWxsIiB7IHRhcmdldCAqLSot KiB9IDUzIH0gKi8KKwogdm9pZCAqcSA9IDAgKiAoMSAvIDApOyAvKiB7IGRn LXdhcm5pbmcgIndhcm5pbmc6IGRpdmlzaW9uIGJ5IHplcm8iIH0gKi8KLS8q IHsgZGctd2FybmluZyAid2FybmluZzogaW5pdGlhbGl6YXRpb24gbWFrZXMg cG9pbnRlciBmcm9tIGludGVnZXIgd2l0aG91dCBhIGNhc3QiICJudWxsIiB7 IHhmYWlsICotKi0qIH0gNTYgfSAqLwotdm9pZCAqciA9ICgxID8gMCA6IElO VF9NQVgrMSk7CisvKiB7IGRnLWVycm9yICJpbnZhbGlkIGNvbnZlcnNpb24g ZnJvbSAnaW50JyB0byAndm9pZConIiAibnVsbCIgeyB4ZmFpbCAqLSotKiB9 IDU2IH0gKi8KK3ZvaWQgKnIgPSAoMSA/IDAgOiBJTlRfTUFYKzEpOyAvKiB7 IGRnLWJvZ3VzICJpbnRlZ2VyIG92ZXJmbG93IGluIGV4cHJlc3Npb24iICIi IHsgeGZhaWwgKi0qLSogfSA1OCB9ICovCiAKIHZvaWQKIGcgKGludCBpKQot LS0gdHJ1bmsvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvb3ZlcmZsb3ctd2Fybi00 LmMJMjAwNy0wMS0wNiAwMDoyMDoyNC4wMDAwMDAwMDAgKzAxMDAKKysrIHRy dW5rL2djYy90ZXN0c3VpdGUvZysrLmRnL3dhcm4vb3ZlcmZsb3ctd2Fybi00 LkMJMjAwNy0wMS0wNiAwOTo0MDo1NS4wMDAwMDAwMDAgKzAxMDAKQEAgLTEs NyArMSw3IEBACiAvKiBUZXN0IGZvciBkaWFnbm9zdGljcyBmb3IgY29uc3Rh bnQgb3ZlcmZsb3cuICBUZXN0IHdpdGggLXBlZGFudGljLWVycm9ycy4gICov CiAvKiBPcmlnaW46IEpvc2VwaCBNeWVycyA8am9zZXBoQGNvZGVzb3VyY2Vy eS5jb20+ICovCiAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotLyogeyBkZy1v cHRpb25zICItc3RkPWM5OSAtcGVkYW50aWMtZXJyb3JzIiB9ICovCisvKiB7 IGRnLW9wdGlvbnMgIi1wZWRhbnRpYy1lcnJvcnMiIH0gKi8KIAogI2luY2x1 ZGUgPGxpbWl0cy5oPgogCkBAIC0xMSw3ICsxMSw3IEBAIGVudW0gZSB7CiAg IEUxID0gVUlOVF9NQVggKyAxLAogICAvKiBPdmVyZmxvdyBpbiBhbiB1bmV2 YWx1YXRlZCBwYXJ0IG9mIGFuIGV4cHJlc3Npb24gaXMgT0sgKGV4YW1wbGUK ICAgICAgaW4gdGhlIHN0YW5kYXJkKS4gICovCi0gIEUyID0gMiB8fCAxIC8g MCwKKyAgRTIgPSAyIHx8IDEgLyAwLCAvKiB7IGRnLWJvZ3VzICJ3YXJuaW5n OiBkaXZpc2lvbiBieSB6ZXJvIiAiIiB7IHhmYWlsICotKi0qIH0gMTQgfSAq LwogICBFMyA9IDEgLyAwLCAvKiB7IGRnLXdhcm5pbmcgIndhcm5pbmc6IGRp dmlzaW9uIGJ5IHplcm8iIH0gKi8KICAgLyogeyBkZy1lcnJvciAiZXJyb3I6 IGVudW1lcmF0b3IgdmFsdWUgZm9yICdFMycgaXMgbm90IGFuIGludGVnZXIg Y29uc3RhbnQiICJlbnVtIGVycm9yIiB7IHRhcmdldCAqLSotKiB9IDE1IH0g Ki8KICAgLyogQnV0IGFzIGluIERSIzAzMSwgdGhlIDEvMCBpbiBhbiBldmFs dWF0ZWQgc3ViZXhwcmVzc2lvbiBtZWFucyB0aGUKQEAgLTQzLDE5ICs0Mywx OSBAQCBmICh2b2lkKQogCiB9CiAKLS8qIEJ1dCB0aGlzIGV4cHJlc3Npb24g ZG9lcyBuZWVkIHRvIGJlIGNvbnN0YW50LiAgKi8KKy8qIEJ1dCB0aGlzIGV4 cHJlc3Npb24gZG9lcyBuZWVkIHRvIGJlIGNvbnN0YW50IChpbiBDKysgPz8/ KS4gICovCiBzdGF0aWMgaW50IHNjID0gSU5UX01BWCArIDE7IC8qIHsgZGct d2FybmluZyAid2FybmluZzogaW50ZWdlciBvdmVyZmxvdyBpbiBleHByZXNz aW9uIiB9ICovCi0vKiB7IGRnLWVycm9yICJlcnJvcjogb3ZlcmZsb3cgaW4g Y29uc3RhbnQgZXhwcmVzc2lvbiIgImNvbnN0YW50IiB7IHRhcmdldCAqLSot KiB9IDQ3IH0gKi8KKy8qIHsgZGctZXJyb3IgImVycm9yOiBvdmVyZmxvdyBp biBjb25zdGFudCBleHByZXNzaW9uIiAiY29uc3RhbnQiIHsgeGZhaWwgKi0q LSogfSA0NyB9ICovCiAKIC8qIFRoZSBmaXJzdCB0d28gb2YgdGhlc2UgaW52 b2x2ZSBvdmVyZmxvdywgc28gYXJlIG5vdCBudWxsIHBvaW50ZXIKICAgIGNv bnN0YW50cy4gIFRoZSB0aGlyZCBoYXMgdGhlIG92ZXJmbG93IGluIGFuIHVu ZXZhbHVhdGVkCiAgICBzdWJleHByZXNzaW9uLCBzbyBpcyBhIG51bGwgcG9p bnRlciBjb25zdGFudC4gICovCiB2b2lkICpwID0gMCAqIChJTlRfTUFYICsg MSk7IC8qIHsgZGctd2FybmluZyAid2FybmluZzogaW50ZWdlciBvdmVyZmxv dyBpbiBleHByZXNzaW9uIiB9ICovCi0vKiB7IGRnLWVycm9yICJlcnJvcjog b3ZlcmZsb3cgaW4gY29uc3RhbnQgZXhwcmVzc2lvbiIgImNvbnN0YW50IiB7 IHRhcmdldCAqLSotKiB9IDUzIH0gKi8KLS8qIHsgZGctZXJyb3IgImVycm9y OiBpbml0aWFsaXphdGlvbiBtYWtlcyBwb2ludGVyIGZyb20gaW50ZWdlciB3 aXRob3V0IGEgY2FzdCIgIm51bGwiIHsgdGFyZ2V0ICotKi0qIH0gNTMgfSAq LworLyogeyBkZy1lcnJvciAiaW52YWxpZCBjb252ZXJzaW9uIGZyb20gJ2lu dCcgdG8gJ3ZvaWQiICJudWxsIiB7IHRhcmdldCAqLSotKiB9IDUzIH0gKi8K Kwogdm9pZCAqcSA9IDAgKiAoMSAvIDApOyAvKiB7IGRnLXdhcm5pbmcgIndh cm5pbmc6IGRpdmlzaW9uIGJ5IHplcm8iIH0gKi8KLS8qIHsgZGctZXJyb3Ig ImVycm9yOiBpbml0aWFsaXphdGlvbiBtYWtlcyBwb2ludGVyIGZyb20gaW50 ZWdlciB3aXRob3V0IGEgY2FzdCIgIm51bGwiIHsgeGZhaWwgKi0qLSogfSA1 NiB9ICovCi12b2lkICpyID0gKDEgPyAwIDogSU5UX01BWCsxKTsKKy8qIHsg ZGctZXJyb3IgImludmFsaWQgY29udmVyc2lvbiBmcm9tICdpbnQnIHRvICd2 b2lkKiciICJudWxsIiB7IHhmYWlsICotKi0qIH0gNTYgfSAqLwordm9pZCAq ciA9ICgxID8gMCA6IElOVF9NQVgrMSk7IC8qIHsgZGctYm9ndXMgImludGVn ZXIgb3ZlcmZsb3cgaW4gZXhwcmVzc2lvbiIgIiIgeyB4ZmFpbCAqLSotKiB9 IDU4IH0gKi8KIAogdm9pZAogZyAoaW50IGkpCi0tLSB0cnVuay9nY2MvdGVz dHN1aXRlL2djYy5kZy9vdmVyZmxvdy13YXJuLTYuYwkyMDA3LTAxLTA2IDAw OjIyOjAyLjAwMDAwMDAwMCArMDEwMAorKysgdHJ1bmsvZ2NjL3Rlc3RzdWl0 ZS9nKysuZGcvd2Fybi9vdmVyZmxvdy13YXJuLTYuQwkyMDA3LTAxLTA2IDA5 OjQwOjU1LjAwMDAwMDAwMCArMDEwMApAQCAtMSw2ICsxLDYgQEAKIC8qIFRl c3Qgbm9uLWNvbnN0YW50IG9wZXJhbmRzIGluIG92ZXJmbG93ZWQgZXhwcmVz c2lvbnMuICAqLwogLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLS8qIHsgZGct b3B0aW9ucyAiLXN0ZD1jOTkgLVdvdmVyZmxvdyIgfSAqLworLyogeyBkZy1v cHRpb25zICItV292ZXJmbG93IiB9ICovCiAKICNpbmNsdWRlIDxsaW1pdHMu aD4KIAo= ------=_Part_27645_12351208.1168105769930 Content-Type: text/plain; name=c++-overflow-warning.diff; charset=ANSI_X3.4-1968 Content-Transfer-Encoding: base64 X-Attachment-Id: f_ewmbzxa6 Content-Disposition: attachment; filename="c++-overflow-warning.diff" Content-length: 25474 SW5kZXg6IGdjYy90ZXN0c3VpdGUvZysrLmRnL2NvbnZlcnNpb24vbnVsbHB0 cjEuQwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBnY2MvdGVzdHN1aXRl L2crKy5kZy9jb252ZXJzaW9uL251bGxwdHIxLkMJKHJldmlzaW9uIDEyMDUx MSkKKysrIGdjYy90ZXN0c3VpdGUvZysrLmRnL2NvbnZlcnNpb24vbnVsbHB0 cjEuQwkod29ya2luZyBjb3B5KQpAQCAtNiw1ICs2LDUgQEAKIHZvaWQgKnAg PSAwOwogCiB2b2lkICpxID0gMCAqIChJTlRfTUFYICsgMSk7ICAvLyB7IGRn LWVycm9yICJpbnZhbGlkIGNvbnZlcnNpb24iIH0KLQorLy8geyBkZy13YXJu aW5nICJpbnRlZ2VyIG92ZXJmbG93IGluIGV4cHJlc3Npb24iICIiIHsgdGFy Z2V0ICotKi0qIH0gOCB9CiAKSW5kZXg6IGdjYy90ZXN0c3VpdGUvZysrLmRn L3dhcm4vb3ZlcmZsb3ctd2Fybi0zLkMKPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0gZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvd2Fybi9vdmVyZmxvdy13YXJu LTMuQwkocmV2aXNpb24gMCkKKysrIGdjYy90ZXN0c3VpdGUvZysrLmRnL3dh cm4vb3ZlcmZsb3ctd2Fybi0zLkMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs MTI4IEBACisvKiBUZXN0IGZvciBkaWFnbm9zdGljcyBmb3IgY29uc3RhbnQg b3ZlcmZsb3cuICBUZXN0IHdpdGggLXBlZGFudGljLiAgKi8KKy8qIE9yaWdp bjogSm9zZXBoIE15ZXJzIDxqb3NlcGhAY29kZXNvdXJjZXJ5LmNvbT4gKi8K Ky8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1m cGVybWlzc2l2ZSAtcGVkYW50aWMiIH0gKi8KKworI2luY2x1ZGUgPGxpbWl0 cy5oPgorCitlbnVtIGUgeworICBFMCA9IElOVF9NQVgsCisgIC8qIFVuc2ln bmVkIG92ZXJmbG93IHdyYXBzIGFyb3VuZC4gICovCisgIEUxID0gVUlOVF9N QVggKyAxLAorICAvKiBPdmVyZmxvdyBpbiBhbiB1bmV2YWx1YXRlZCBwYXJ0 IG9mIGFuIGV4cHJlc3Npb24gaXMgT0sgKGV4YW1wbGUKKyAgICAgaW4gdGhl IHN0YW5kYXJkKS4gICovCisgIEUyID0gMiB8fCAxIC8gMCwgLyogeyBkZy1i b2d1cyAid2FybmluZzogZGl2aXNpb24gYnkgemVybyIgIiIgeyB4ZmFpbCAq LSotKiB9IDE0IH0gKi8KKyAgRTMgPSAxIC8gMCwgLyogeyBkZy13YXJuaW5n ICJ3YXJuaW5nOiBkaXZpc2lvbiBieSB6ZXJvIiB9ICovCisgIC8qIHsgZGct ZXJyb3IgImVycm9yOiBlbnVtZXJhdG9yIHZhbHVlIGZvciAnRTMnIGlzIG5v dCBhbiBpbnRlZ2VyIGNvbnN0YW50IiAiZW51bSBlcnJvciIgeyB0YXJnZXQg Ki0qLSogfSAxNSB9ICovCisgIC8qIEJ1dCBhcyBpbiBEUiMwMzEsIHRoZSAx LzAgaW4gYW4gZXZhbHVhdGVkIHN1YmV4cHJlc3Npb24gbWVhbnMgdGhlCisg ICAgIHdob2xlIGV4cHJlc3Npb24gdmlvbGF0ZXMgdGhlIGNvbnN0cmFpbnRz LiAgKi8KKyAgRTQgPSAwICogKDEgLyAwKSwgLyogeyBkZy13YXJuaW5nICJ3 YXJuaW5nOiBkaXZpc2lvbiBieSB6ZXJvIiB9ICovCisgIC8qIHsgZGctZXJy b3IgImVycm9yOiBlbnVtZXJhdG9yIHZhbHVlIGZvciAnRTQnIGlzIG5vdCBh biBpbnRlZ2VyIGNvbnN0YW50IiAiZW51bSBlcnJvciIgeyB4ZmFpbCAqLSot KiB9IDE5IH0gKi8KKyAgRTUgPSBJTlRfTUFYICsgMSwgLyogeyBkZy13YXJu aW5nICJ3YXJuaW5nOiBpbnRlZ2VyIG92ZXJmbG93IGluIGV4cHJlc3Npb24i IH0gKi8KKyAgLyogeyBkZy13YXJuaW5nICJ3YXJuaW5nOiBvdmVyZmxvdyBp biBjb25zdGFudCBleHByZXNzaW9uIiAiY29uc3RhbnQiIHsgdGFyZ2V0ICot Ki0qIH0gMjEgfSAqLworICAvKiBBZ2Fpbiwgb3ZlcmZsb3cgaW4gZXZhbHVh dGVkIHN1YmV4cHJlc3Npb24uICAqLworICBFNiA9IDAgKiAoSU5UX01BWCAr IDEpLCAvKiB7IGRnLXdhcm5pbmcgIndhcm5pbmc6IGludGVnZXIgb3ZlcmZs b3cgaW4gZXhwcmVzc2lvbiIgfSAqLworICAvKiB7IGRnLXdhcm5pbmcgIndh cm5pbmc6IG92ZXJmbG93IGluIGNvbnN0YW50IGV4cHJlc3Npb24iICJjb25z dGFudCIgeyB0YXJnZXQgKi0qLSogfSAyNCB9ICovCisgIC8qIEEgY2FzdCBk b2VzIG5vdCBjb25zdGl0dXRlIG92ZXJmbG93IGluIGNvbnZlcnNpb24uICAq LworICBFNyA9IChjaGFyKSBJTlRfTUFYCit9OworCitzdHJ1Y3QgcyB7Cisg IGludCBhOworICBpbnQgOiAwICogKDEgLyAwKTsgLyogeyBkZy13YXJuaW5n ICJ3YXJuaW5nOiBkaXZpc2lvbiBieSB6ZXJvIiB9ICovCisgIGludCA6IDAg KiAoSU5UX01BWCArIDEpOyAvKiB7IGRnLXdhcm5pbmcgIndhcm5pbmc6IGlu dGVnZXIgb3ZlcmZsb3cgaW4gZXhwcmVzc2lvbiIgfSAqLworICAvKiB7IGRn LXdhcm5pbmcgIndhcm5pbmc6IG92ZXJmbG93IGluIGNvbnN0YW50IGV4cHJl c3Npb24iICJjb25zdGFudCIgeyB0YXJnZXQgKi0qLSogfSAzMyB9ICovCit9 OworCit2b2lkCitmICh2b2lkKQoreworICAvKiBUaGlzIGV4cHJlc3Npb24g aXMgbm90IHJlcXVpcmVkIHRvIGJlIGEgY29uc3RhbnQgZXhwcmVzc2lvbiwg c28KKyAgICAgaXQgc2hvdWxkIGp1c3QgaW52b2x2ZSB1bmRlZmluZWQgYmVo YXZpb3IgYXQgcnVudGltZS4gICovCisgIGludCBjID0gSU5UX01BWCArIDE7 IC8qIHsgZGctd2FybmluZyAid2FybmluZzogaW50ZWdlciBvdmVyZmxvdyBp biBleHByZXNzaW9uIiB9ICovCisKK30KKworLyogQnV0IHRoaXMgZXhwcmVz c2lvbiBkb2VzIG5lZWQgdG8gYmUgY29uc3RhbnQgKGluIEMrKyA/Pz8pLiAg Ki8KK3N0YXRpYyBpbnQgc2MgPSBJTlRfTUFYICsgMTsgLyogeyBkZy13YXJu aW5nICJ3YXJuaW5nOiBpbnRlZ2VyIG92ZXJmbG93IGluIGV4cHJlc3Npb24i IH0gKi8KKy8qIHsgZGctd2FybmluZyAid2FybmluZzogb3ZlcmZsb3cgaW4g Y29uc3RhbnQgZXhwcmVzc2lvbiIgImNvbnN0YW50IiB7IHhmYWlsICotKi0q IH0gNDcgfSAqLworCisvKiBUaGUgZmlyc3QgdHdvIG9mIHRoZXNlIGludm9s dmUgb3ZlcmZsb3csIHNvIGFyZSBub3QgbnVsbCBwb2ludGVyCisgICBjb25z dGFudHMuICBUaGUgdGhpcmQgaGFzIHRoZSBvdmVyZmxvdyBpbiBhbiB1bmV2 YWx1YXRlZAorICAgc3ViZXhwcmVzc2lvbiwgc28gaXMgYSBudWxsIHBvaW50 ZXIgY29uc3RhbnQuICAqLwordm9pZCAqcCA9IDAgKiAoSU5UX01BWCArIDEp OyAvKiB7IGRnLXdhcm5pbmcgIndhcm5pbmc6IGludGVnZXIgb3ZlcmZsb3cg aW4gZXhwcmVzc2lvbiIgfSAqLworLyogeyBkZy1lcnJvciAiaW52YWxpZCBj b252ZXJzaW9uIGZyb20gJ2ludCcgdG8gJ3ZvaWQiICJudWxsIiB7IHRhcmdl dCAqLSotKiB9IDUzIH0gKi8KKwordm9pZCAqcSA9IDAgKiAoMSAvIDApOyAv KiB7IGRnLXdhcm5pbmcgIndhcm5pbmc6IGRpdmlzaW9uIGJ5IHplcm8iIH0g Ki8KKy8qIHsgZGctZXJyb3IgImludmFsaWQgY29udmVyc2lvbiBmcm9tICdp bnQnIHRvICd2b2lkKiciICJudWxsIiB7IHhmYWlsICotKi0qIH0gNTYgfSAq Lwordm9pZCAqciA9ICgxID8gMCA6IElOVF9NQVgrMSk7IC8qIHsgZGctYm9n dXMgImludGVnZXIgb3ZlcmZsb3cgaW4gZXhwcmVzc2lvbiIgIiIgeyB4ZmFp bCAqLSotKiB9IDU4IH0gKi8KKwordm9pZAorZyAoaW50IGkpCit7CisgIHN3 aXRjaCAoaSkKKyAgICB7CisgICAgY2FzZSAwICogKDEvMCk6IC8qIHsgZGct d2FybmluZyAid2FybmluZzogZGl2aXNpb24gYnkgemVybyIgfSAqLworICAg ICAgOworICAgIGNhc2UgMSArIDAgKiAoSU5UX01BWCArIDEpOiAvKiB7IGRn LXdhcm5pbmcgIndhcm5pbmc6IGludGVnZXIgb3ZlcmZsb3cgaW4gZXhwcmVz c2lvbiIgfSAqLworICAgICAgLyogeyBkZy13YXJuaW5nICJ3YXJuaW5nOiBv dmVyZmxvdyBpbiBjb25zdGFudCBleHByZXNzaW9uIiAiY29uc3RhbnQiIHsg dGFyZ2V0ICotKi0qIH0gNjcgfSAqLworICAgICAgOworICAgIH0KK30KKwor aW50CitoICh2b2lkKQoreworICByZXR1cm4gSU5UX01BWCArIDE7IC8qIHsg ZGctd2FybmluZyAid2FybmluZzogaW50ZWdlciBvdmVyZmxvdyBpbiBleHBy ZXNzaW9uIiB9ICovCit9CisKK2ludAoraDEgKHZvaWQpCit7CisgIHJldHVy biBJTlRfTUFYICsgMSAtIElOVF9NQVg7IC8qIHsgZGctd2FybmluZyAid2Fy bmluZzogaW50ZWdlciBvdmVyZmxvdyBpbiBleHByZXNzaW9uIiB9ICovCit9 CisKK3ZvaWQgZnVjICh1bnNpZ25lZCBjaGFyKTsKK3ZvaWQgZnNjIChzaWdu ZWQgY2hhcik7CisKK3ZvaWQKK2gyICh2b2lkKQoreworICBmc2MgKFNDSEFS X01BWCArIDEpOyAvKiB7IGRnLXdhcm5pbmcgIndhcm5pbmc6IG92ZXJmbG93 IGluIGltcGxpY2l0IGNvbnN0YW50IGNvbnZlcnNpb24iIH0gKi8KKyAgZnNj IChTQ0hBUl9NSU4gLSAxKTsgLyogeyBkZy13YXJuaW5nICJ3YXJuaW5nOiBv dmVyZmxvdyBpbiBpbXBsaWNpdCBjb25zdGFudCBjb252ZXJzaW9uIiB9ICov CisgIGZzYyAoVUNIQVJfTUFYKTsgLyogeyBkZy13YXJuaW5nICJ3YXJuaW5n OiBvdmVyZmxvdyBpbiBpbXBsaWNpdCBjb25zdGFudCBjb252ZXJzaW9uIiB9 ICovCisgIGZzYyAoVUNIQVJfTUFYICsgMSk7IC8qIHsgZGctd2FybmluZyAi d2FybmluZzogb3ZlcmZsb3cgaW4gaW1wbGljaXQgY29uc3RhbnQgY29udmVy c2lvbiIgfSAqLworICBmdWMgKC0xKTsKKyAgZnVjIChVQ0hBUl9NQVggKyAx KTsgLyogeyBkZy13YXJuaW5nICJ3YXJuaW5nOiBsYXJnZSBpbnRlZ2VyIGlt cGxpY2l0bHkgdHJ1bmNhdGVkIHRvIHVuc2lnbmVkIHR5cGUiIH0gKi8KKyAg ZnVjIChTQ0hBUl9NSU4pOworICBmdWMgKFNDSEFSX01JTiAtIDEpOyAvKiB7 IGRnLXdhcm5pbmcgIndhcm5pbmc6IGxhcmdlIGludGVnZXIgaW1wbGljaXRs eSB0cnVuY2F0ZWQgdG8gdW5zaWduZWQgdHlwZSIgfSAqLworICBmdWMgKC1V Q0hBUl9NQVgpOyAvKiB7IGRnLXdhcm5pbmcgIndhcm5pbmc6IGxhcmdlIGlu dGVnZXIgaW1wbGljaXRseSB0cnVuY2F0ZWQgdG8gdW5zaWduZWQgdHlwZSIg fSAqLworfQorCit2b2lkIGZ1aSAodW5zaWduZWQgaW50KTsKK3ZvaWQgZnNp IChzaWduZWQgaW50KTsKKworaW50IHNpOwordW5zaWduZWQgdWk7CisKK3Zv aWQKK2gyaSAoaW50IHgpCit7CisgIC8qIEZvciBzb21lIHJlYXNvbiwgd2Ug b25seSBnaXZlIGNlcnRhaW4gd2FybmluZ3MgZm9yIGltcGxpY2l0CisgICAg IGNvbnZlcnNpb25zIGFtb25nIHZhbHVlcyBvZiB0aGUgc2FtZSBwcmVjaXNp b24gd2l0aCAtV2NvbnZlcnNpb24sCisgICAgIHdoaWxlIHdlIGRvbid0IGdp dmUgb3RoZXJzIGF0IGFsbC4gICovCisgIGZzaSAoKHVuc2lnbmVkKUlOVF9N QVggKyAxKTsKKyAgc2kgPSAodW5zaWduZWQpSU5UX01BWCArIDE7CisgIHNp ID0geCA/ICh1bnNpZ25lZClJTlRfTUFYICsgMSA6IDE7CisgIGZzaSAoKHVu c2lnbmVkKUlOVF9NQVggKyAyKTsKKyAgc2kgPSAodW5zaWduZWQpSU5UX01B WCArIDI7CisgIHNpID0geCA/ICh1bnNpZ25lZClJTlRfTUFYICsgMiA6IDE7 CisgIGZzaSAoVUlOVF9NQVgpOworICBzaSA9IFVJTlRfTUFYOworICBmdWkg KC0xKTsKKyAgdWkgPSAtMTsKKyAgdWkgPSB4ID8gLTEgOiAxVTsKKyAgZnVp IChJTlRfTUlOKTsKKyAgdWkgPSBJTlRfTUlOOworICB1aSA9IHggPyBJTlRf TUlOIDogMVU7Cit9CkluZGV4OiBnY2MvdGVzdHN1aXRlL2crKy5kZy93YXJu L1dvdmVyZmxvdy0yLkMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gZ2Nj L3Rlc3RzdWl0ZS9nKysuZGcvd2Fybi9Xb3ZlcmZsb3ctMi5DCShyZXZpc2lv biAwKQorKysgZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvd2Fybi9Xb3ZlcmZsb3ct Mi5DCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcgQEAKKy8qIHsgZGctZG8g Y29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1PMiAtV292ZXJmbG93 IiB9ICovCisKKyNpbmNsdWRlIDxsaW1pdHMuaD4KKworaW50IGZvbyA9IElO VF9NQVggKyAxOyAgLyogeyBkZy13YXJuaW5nICJpbnRlZ2VyIG92ZXJmbG93 IiB9ICovCisKSW5kZXg6IGdjYy90ZXN0c3VpdGUvZysrLmRnL3dhcm4vb3Zl cmZsb3ctd2Fybi00LkMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gZ2Nj L3Rlc3RzdWl0ZS9nKysuZGcvd2Fybi9vdmVyZmxvdy13YXJuLTQuQwkocmV2 aXNpb24gMCkKKysrIGdjYy90ZXN0c3VpdGUvZysrLmRnL3dhcm4vb3ZlcmZs b3ctd2Fybi00LkMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTI4IEBACisv KiBUZXN0IGZvciBkaWFnbm9zdGljcyBmb3IgY29uc3RhbnQgb3ZlcmZsb3cu ICBUZXN0IHdpdGggLXBlZGFudGljLWVycm9ycy4gICovCisvKiBPcmlnaW46 IEpvc2VwaCBNeWVycyA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+ICovCisv KiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItcGVk YW50aWMtZXJyb3JzIiB9ICovCisKKyNpbmNsdWRlIDxsaW1pdHMuaD4KKwor ZW51bSBlIHsKKyAgRTAgPSBJTlRfTUFYLAorICAvKiBVbnNpZ25lZCBvdmVy ZmxvdyB3cmFwcyBhcm91bmQuICAqLworICBFMSA9IFVJTlRfTUFYICsgMSwK KyAgLyogT3ZlcmZsb3cgaW4gYW4gdW5ldmFsdWF0ZWQgcGFydCBvZiBhbiBl eHByZXNzaW9uIGlzIE9LIChleGFtcGxlCisgICAgIGluIHRoZSBzdGFuZGFy ZCkuICAqLworICBFMiA9IDIgfHwgMSAvIDAsIC8qIHsgZGctYm9ndXMgIndh cm5pbmc6IGRpdmlzaW9uIGJ5IHplcm8iICIiIHsgeGZhaWwgKi0qLSogfSAx NCB9ICovCisgIEUzID0gMSAvIDAsIC8qIHsgZGctd2FybmluZyAid2Fybmlu ZzogZGl2aXNpb24gYnkgemVybyIgfSAqLworICAvKiB7IGRnLWVycm9yICJl cnJvcjogZW51bWVyYXRvciB2YWx1ZSBmb3IgJ0UzJyBpcyBub3QgYW4gaW50 ZWdlciBjb25zdGFudCIgImVudW0gZXJyb3IiIHsgdGFyZ2V0ICotKi0qIH0g MTUgfSAqLworICAvKiBCdXQgYXMgaW4gRFIjMDMxLCB0aGUgMS8wIGluIGFu IGV2YWx1YXRlZCBzdWJleHByZXNzaW9uIG1lYW5zIHRoZQorICAgICB3aG9s ZSBleHByZXNzaW9uIHZpb2xhdGVzIHRoZSBjb25zdHJhaW50cy4gICovCisg IEU0ID0gMCAqICgxIC8gMCksIC8qIHsgZGctd2FybmluZyAid2FybmluZzog ZGl2aXNpb24gYnkgemVybyIgfSAqLworICAvKiB7IGRnLWVycm9yICJlcnJv cjogZW51bWVyYXRvciB2YWx1ZSBmb3IgJ0U0JyBpcyBub3QgYW4gaW50ZWdl ciBjb25zdGFudCIgImVudW0gZXJyb3IiIHsgeGZhaWwgKi0qLSogfSAxOSB9 ICovCisgIEU1ID0gSU5UX01BWCArIDEsIC8qIHsgZGctd2FybmluZyAid2Fy bmluZzogaW50ZWdlciBvdmVyZmxvdyBpbiBleHByZXNzaW9uIiB9ICovCisg IC8qIHsgZGctZXJyb3IgImVycm9yOiBvdmVyZmxvdyBpbiBjb25zdGFudCBl eHByZXNzaW9uIiAiY29uc3RhbnQiIHsgdGFyZ2V0ICotKi0qIH0gMjEgfSAq LworICAvKiBBZ2Fpbiwgb3ZlcmZsb3cgaW4gZXZhbHVhdGVkIHN1YmV4cHJl c3Npb24uICAqLworICBFNiA9IDAgKiAoSU5UX01BWCArIDEpLCAvKiB7IGRn LXdhcm5pbmcgIndhcm5pbmc6IGludGVnZXIgb3ZlcmZsb3cgaW4gZXhwcmVz c2lvbiIgfSAqLworICAvKiB7IGRnLWVycm9yICJlcnJvcjogb3ZlcmZsb3cg aW4gY29uc3RhbnQgZXhwcmVzc2lvbiIgImNvbnN0YW50IiB7IHRhcmdldCAq LSotKiB9IDI0IH0gKi8KKyAgLyogQSBjYXN0IGRvZXMgbm90IGNvbnN0aXR1 dGUgb3ZlcmZsb3cgaW4gY29udmVyc2lvbi4gICovCisgIEU3ID0gKGNoYXIp IElOVF9NQVgKK307CisKK3N0cnVjdCBzIHsKKyAgaW50IGE7CisgIGludCA6 IDAgKiAoMSAvIDApOyAvKiB7IGRnLXdhcm5pbmcgIndhcm5pbmc6IGRpdmlz aW9uIGJ5IHplcm8iIH0gKi8KKyAgaW50IDogMCAqIChJTlRfTUFYICsgMSk7 IC8qIHsgZGctd2FybmluZyAid2FybmluZzogaW50ZWdlciBvdmVyZmxvdyBp biBleHByZXNzaW9uIiB9ICovCisgIC8qIHsgZGctZXJyb3IgImVycm9yOiBv dmVyZmxvdyBpbiBjb25zdGFudCBleHByZXNzaW9uIiAiY29uc3RhbnQiIHsg dGFyZ2V0ICotKi0qIH0gMzMgfSAqLworfTsKKwordm9pZAorZiAodm9pZCkK K3sKKyAgLyogVGhpcyBleHByZXNzaW9uIGlzIG5vdCByZXF1aXJlZCB0byBi ZSBhIGNvbnN0YW50IGV4cHJlc3Npb24sIHNvCisgICAgIGl0IHNob3VsZCBq dXN0IGludm9sdmUgdW5kZWZpbmVkIGJlaGF2aW9yIGF0IHJ1bnRpbWUuICAq LworICBpbnQgYyA9IElOVF9NQVggKyAxOyAvKiB7IGRnLXdhcm5pbmcgIndh cm5pbmc6IGludGVnZXIgb3ZlcmZsb3cgaW4gZXhwcmVzc2lvbiIgfSAqLwor Cit9CisKKy8qIEJ1dCB0aGlzIGV4cHJlc3Npb24gZG9lcyBuZWVkIHRvIGJl IGNvbnN0YW50IChpbiBDKysgPz8/KS4gICovCitzdGF0aWMgaW50IHNjID0g SU5UX01BWCArIDE7IC8qIHsgZGctd2FybmluZyAid2FybmluZzogaW50ZWdl ciBvdmVyZmxvdyBpbiBleHByZXNzaW9uIiB9ICovCisvKiB7IGRnLWVycm9y ICJlcnJvcjogb3ZlcmZsb3cgaW4gY29uc3RhbnQgZXhwcmVzc2lvbiIgImNv bnN0YW50IiB7IHhmYWlsICotKi0qIH0gNDcgfSAqLworCisvKiBUaGUgZmly c3QgdHdvIG9mIHRoZXNlIGludm9sdmUgb3ZlcmZsb3csIHNvIGFyZSBub3Qg bnVsbCBwb2ludGVyCisgICBjb25zdGFudHMuICBUaGUgdGhpcmQgaGFzIHRo ZSBvdmVyZmxvdyBpbiBhbiB1bmV2YWx1YXRlZAorICAgc3ViZXhwcmVzc2lv biwgc28gaXMgYSBudWxsIHBvaW50ZXIgY29uc3RhbnQuICAqLwordm9pZCAq cCA9IDAgKiAoSU5UX01BWCArIDEpOyAvKiB7IGRnLXdhcm5pbmcgIndhcm5p bmc6IGludGVnZXIgb3ZlcmZsb3cgaW4gZXhwcmVzc2lvbiIgfSAqLworLyog eyBkZy1lcnJvciAiaW52YWxpZCBjb252ZXJzaW9uIGZyb20gJ2ludCcgdG8g J3ZvaWQiICJudWxsIiB7IHRhcmdldCAqLSotKiB9IDUzIH0gKi8KKwordm9p ZCAqcSA9IDAgKiAoMSAvIDApOyAvKiB7IGRnLXdhcm5pbmcgIndhcm5pbmc6 IGRpdmlzaW9uIGJ5IHplcm8iIH0gKi8KKy8qIHsgZGctZXJyb3IgImludmFs aWQgY29udmVyc2lvbiBmcm9tICdpbnQnIHRvICd2b2lkKiciICJudWxsIiB7 IHhmYWlsICotKi0qIH0gNTYgfSAqLwordm9pZCAqciA9ICgxID8gMCA6IElO VF9NQVgrMSk7IC8qIHsgZGctYm9ndXMgImludGVnZXIgb3ZlcmZsb3cgaW4g ZXhwcmVzc2lvbiIgIiIgeyB4ZmFpbCAqLSotKiB9IDU4IH0gKi8KKwordm9p ZAorZyAoaW50IGkpCit7CisgIHN3aXRjaCAoaSkKKyAgICB7CisgICAgY2Fz ZSAwICogKDEvMCk6IC8qIHsgZGctd2FybmluZyAid2FybmluZzogZGl2aXNp b24gYnkgemVybyIgfSAqLworICAgICAgOworICAgIGNhc2UgMSArIDAgKiAo SU5UX01BWCArIDEpOiAvKiB7IGRnLXdhcm5pbmcgIndhcm5pbmc6IGludGVn ZXIgb3ZlcmZsb3cgaW4gZXhwcmVzc2lvbiIgfSAqLworICAgICAgLyogeyBk Zy1lcnJvciAiZXJyb3I6IG92ZXJmbG93IGluIGNvbnN0YW50IGV4cHJlc3Np b24iICJjb25zdGFudCIgeyB0YXJnZXQgKi0qLSogfSA2NyB9ICovCisgICAg ICA7CisgICAgfQorfQorCitpbnQKK2ggKHZvaWQpCit7CisgIHJldHVybiBJ TlRfTUFYICsgMTsgLyogeyBkZy13YXJuaW5nICJ3YXJuaW5nOiBpbnRlZ2Vy IG92ZXJmbG93IGluIGV4cHJlc3Npb24iIH0gKi8KK30KKworaW50CitoMSAo dm9pZCkKK3sKKyAgcmV0dXJuIElOVF9NQVggKyAxIC0gSU5UX01BWDsgLyog eyBkZy13YXJuaW5nICJ3YXJuaW5nOiBpbnRlZ2VyIG92ZXJmbG93IGluIGV4 cHJlc3Npb24iIH0gKi8KK30KKwordm9pZCBmdWMgKHVuc2lnbmVkIGNoYXIp Owordm9pZCBmc2MgKHNpZ25lZCBjaGFyKTsKKwordm9pZAoraDIgKHZvaWQp Cit7CisgIGZzYyAoU0NIQVJfTUFYICsgMSk7IC8qIHsgZGctd2FybmluZyAi d2FybmluZzogb3ZlcmZsb3cgaW4gaW1wbGljaXQgY29uc3RhbnQgY29udmVy c2lvbiIgfSAqLworICBmc2MgKFNDSEFSX01JTiAtIDEpOyAvKiB7IGRnLXdh cm5pbmcgIndhcm5pbmc6IG92ZXJmbG93IGluIGltcGxpY2l0IGNvbnN0YW50 IGNvbnZlcnNpb24iIH0gKi8KKyAgZnNjIChVQ0hBUl9NQVgpOyAvKiB7IGRn LXdhcm5pbmcgIndhcm5pbmc6IG92ZXJmbG93IGluIGltcGxpY2l0IGNvbnN0 YW50IGNvbnZlcnNpb24iIH0gKi8KKyAgZnNjIChVQ0hBUl9NQVggKyAxKTsg LyogeyBkZy13YXJuaW5nICJ3YXJuaW5nOiBvdmVyZmxvdyBpbiBpbXBsaWNp dCBjb25zdGFudCBjb252ZXJzaW9uIiB9ICovCisgIGZ1YyAoLTEpOworICBm dWMgKFVDSEFSX01BWCArIDEpOyAvKiB7IGRnLXdhcm5pbmcgIndhcm5pbmc6 IGxhcmdlIGludGVnZXIgaW1wbGljaXRseSB0cnVuY2F0ZWQgdG8gdW5zaWdu ZWQgdHlwZSIgfSAqLworICBmdWMgKFNDSEFSX01JTik7CisgIGZ1YyAoU0NI QVJfTUlOIC0gMSk7IC8qIHsgZGctd2FybmluZyAid2FybmluZzogbGFyZ2Ug aW50ZWdlciBpbXBsaWNpdGx5IHRydW5jYXRlZCB0byB1bnNpZ25lZCB0eXBl IiB9ICovCisgIGZ1YyAoLVVDSEFSX01BWCk7IC8qIHsgZGctd2FybmluZyAi d2FybmluZzogbGFyZ2UgaW50ZWdlciBpbXBsaWNpdGx5IHRydW5jYXRlZCB0 byB1bnNpZ25lZCB0eXBlIiB9ICovCit9CisKK3ZvaWQgZnVpICh1bnNpZ25l ZCBpbnQpOwordm9pZCBmc2kgKHNpZ25lZCBpbnQpOworCitpbnQgc2k7Cit1 bnNpZ25lZCB1aTsKKwordm9pZAoraDJpIChpbnQgeCkKK3sKKyAgLyogRm9y IHNvbWUgcmVhc29uLCB3ZSBvbmx5IGdpdmUgY2VydGFpbiB3YXJuaW5ncyBm b3IgaW1wbGljaXQKKyAgICAgY29udmVyc2lvbnMgYW1vbmcgdmFsdWVzIG9m IHRoZSBzYW1lIHByZWNpc2lvbiB3aXRoIC1XY29udmVyc2lvbiwKKyAgICAg d2hpbGUgd2UgZG9uJ3QgZ2l2ZSBvdGhlcnMgYXQgYWxsLiAgKi8KKyAgZnNp ICgodW5zaWduZWQpSU5UX01BWCArIDEpOworICBzaSA9ICh1bnNpZ25lZClJ TlRfTUFYICsgMTsKKyAgc2kgPSB4ID8gKHVuc2lnbmVkKUlOVF9NQVggKyAx IDogMTsKKyAgZnNpICgodW5zaWduZWQpSU5UX01BWCArIDIpOworICBzaSA9 ICh1bnNpZ25lZClJTlRfTUFYICsgMjsKKyAgc2kgPSB4ID8gKHVuc2lnbmVk KUlOVF9NQVggKyAyIDogMTsKKyAgZnNpIChVSU5UX01BWCk7CisgIHNpID0g VUlOVF9NQVg7CisgIGZ1aSAoLTEpOworICB1aSA9IC0xOworICB1aSA9IHgg PyAtMSA6IDFVOworICBmdWkgKElOVF9NSU4pOworICB1aSA9IElOVF9NSU47 CisgIHVpID0geCA/IElOVF9NSU4gOiAxVTsKK30KSW5kZXg6IGdjYy90ZXN0 c3VpdGUvZysrLmRnL3dhcm4vV292ZXJmbG93LTMuQwo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLSBnY2MvdGVzdHN1aXRlL2crKy5kZy93YXJuL1dvdmVy Zmxvdy0zLkMJKHJldmlzaW9uIDApCisrKyBnY2MvdGVzdHN1aXRlL2crKy5k Zy93YXJuL1dvdmVyZmxvdy0zLkMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs NyBAQAorLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9u cyAiLU8yIC1Xbm8tb3ZlcmZsb3ciIH0gKi8KKworI2luY2x1ZGUgPGxpbWl0 cy5oPgorCitpbnQgZm9vID0gSU5UX01BWCArIDE7CisKSW5kZXg6IGdjYy90 ZXN0c3VpdGUvZysrLmRnL3dhcm4vbXVsdGlwbGUtb3ZlcmZsb3ctd2Fybi0y LkMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gZ2NjL3Rlc3RzdWl0ZS9n KysuZGcvd2Fybi9tdWx0aXBsZS1vdmVyZmxvdy13YXJuLTIuQwkocmV2aXNp b24gMCkKKysrIGdjYy90ZXN0c3VpdGUvZysrLmRnL3dhcm4vbXVsdGlwbGUt b3ZlcmZsb3ctd2Fybi0yLkMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTIg QEAKKy8qIFBSIGMvMTk5NzggOiBUZXN0IGZvciBkdXBsaWNhdGVkIHdhcm5p bmdzIChiaW5hcnkgb3BlcmF0b3JzKS4gICovCisvKiB7IGRnLWRvIGNvbXBp bGUgfSAqLworLyogeyBkZy1vcHRpb25zICItV292ZXJmbG93IiB9ICovCisK KyNpbmNsdWRlIDxsaW1pdHMuaD4KKworaW50IAorZzEgKHZvaWQpCit7Cisg IHJldHVybiBJTlRfTUFYICsgMSAtIElOVF9NQVg7IC8qIHsgZGctYm9ndXMg ImludGVnZXIgb3ZlcmZsb3cgaW4gZXhwcmVzc2lvbi4qaW50ZWdlciBvdmVy ZmxvdyBpbiBleHByZXNzaW9uIiB9ICovCisgIC8qIHsgZGctd2FybmluZyAi aW50ZWdlciBvdmVyZmxvdyBpbiBleHByZXNzaW9uIiAiIiB7IHRhcmdldCAq LSotKiB9IDEwIH0gKi8KK30KSW5kZXg6IGdjYy90ZXN0c3VpdGUvZysrLmRn L3dhcm4vb3ZlcmZsb3ctd2Fybi0xLkMKPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0gZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvd2Fybi9vdmVyZmxvdy13YXJu LTEuQwkocmV2aXNpb24gMCkKKysrIGdjYy90ZXN0c3VpdGUvZysrLmRnL3dh cm4vb3ZlcmZsb3ctd2Fybi0xLkMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs MTIxIEBACisvKiBUZXN0IGZvciBkaWFnbm9zdGljcyBmb3IgY29uc3RhbnQg b3ZlcmZsb3cuICAqLworLyogT3JpZ2luOiBKb3NlcGggTXllcnMgPGpvc2Vw aEBjb2Rlc291cmNlcnkuY29tPiAqLworLyogeyBkZy1kbyBjb21waWxlIH0g Ki8KKy8qIHsgZGctb3B0aW9ucyAiIiB9ICovCisKKyNpbmNsdWRlIDxsaW1p dHMuaD4KKworZW51bSBlIHsKKyAgRTAgPSBJTlRfTUFYLAorICAvKiBVbnNp Z25lZCBvdmVyZmxvdyB3cmFwcyBhcm91bmQuICAqLworICBFMSA9IFVJTlRf TUFYICsgMSwKKyAgLyogT3ZlcmZsb3cgaW4gYW4gdW5ldmFsdWF0ZWQgcGFy dCBvZiBhbiBleHByZXNzaW9uIGlzIE9LIChleGFtcGxlCisgICAgIGluIHRo ZSBzdGFuZGFyZCkuICAqLworICBFMiA9IDIgfHwgMSAvIDAsIC8qIHsgZGct Ym9ndXMgIndhcm5pbmc6IGRpdmlzaW9uIGJ5IHplcm8iICIiIHsgeGZhaWwg Ki0qLSogfSAxNCB9ICovCisgIEUzID0gMSAvIDAsIC8qIHsgZGctd2Fybmlu ZyAid2FybmluZzogZGl2aXNpb24gYnkgemVybyIgfSAqLworICAvKiB7IGRn LWVycm9yICJlcnJvcjogZW51bWVyYXRvciB2YWx1ZSBmb3IgJ0UzJyBpcyBu b3QgYW4gaW50ZWdlciBjb25zdGFudCIgImVudW0gZXJyb3IiIHsgdGFyZ2V0 ICotKi0qIH0gMTUgfSAqLworICAvKiBCdXQgYXMgaW4gRFIjMDMxLCB0aGUg MS8wIGluIGFuIGV2YWx1YXRlZCBzdWJleHByZXNzaW9uIG1lYW5zIHRoZQor ICAgICB3aG9sZSBleHByZXNzaW9uIHZpb2xhdGVzIHRoZSBjb25zdHJhaW50 cy4gICovCisgIEU0ID0gMCAqICgxIC8gMCksIC8qIHsgZGctd2FybmluZyAi d2FybmluZzogZGl2aXNpb24gYnkgemVybyIgfSAqLworICAvKiB7IGRnLWVy cm9yICJlcnJvcjogZW51bWVyYXRvciB2YWx1ZSBmb3IgJ0U0JyBpcyBub3Qg YW4gaW50ZWdlciBjb25zdGFudCIgImVudW0gZXJyb3IiIHsgeGZhaWwgKi0q LSogfSAxOSB9ICovCisgIEU1ID0gSU5UX01BWCArIDEsIC8qIHsgZGctd2Fy bmluZyAid2FybmluZzogaW50ZWdlciBvdmVyZmxvdyBpbiBleHByZXNzaW9u IiB9ICovCisgIC8qIEFnYWluLCBvdmVyZmxvdyBpbiBldmFsdWF0ZWQgc3Vi ZXhwcmVzc2lvbi4gICovCisgIEU2ID0gMCAqIChJTlRfTUFYICsgMSksIC8q IHsgZGctd2FybmluZyAid2FybmluZzogaW50ZWdlciBvdmVyZmxvdyBpbiBl eHByZXNzaW9uIiB9ICovCisgIC8qIEEgY2FzdCBkb2VzIG5vdCBjb25zdGl0 dXRlIG92ZXJmbG93IGluIGNvbnZlcnNpb24uICAqLworICBFNyA9IChjaGFy KSBJTlRfTUFYCit9OworCitzdHJ1Y3QgcyB7CisgIGludCBhOworICBpbnQg OiAwICogKDEgLyAwKTsgLyogeyBkZy13YXJuaW5nICJ3YXJuaW5nOiBkaXZp c2lvbiBieSB6ZXJvIiB9ICovCisgIGludCA6IDAgKiAoSU5UX01BWCArIDEp OyAvKiB7IGRnLXdhcm5pbmcgIndhcm5pbmc6IGludGVnZXIgb3ZlcmZsb3cg aW4gZXhwcmVzc2lvbiIgfSAqLworfTsKKwordm9pZAorZiAodm9pZCkKK3sK KyAgLyogVGhpcyBleHByZXNzaW9uIGlzIG5vdCByZXF1aXJlZCB0byBiZSBh IGNvbnN0YW50IGV4cHJlc3Npb24sIHNvCisgICAgIGl0IHNob3VsZCBqdXN0 IGludm9sdmUgdW5kZWZpbmVkIGJlaGF2aW9yIGF0IHJ1bnRpbWUuICAqLwor ICBpbnQgYyA9IElOVF9NQVggKyAxOyAvKiB7IGRnLXdhcm5pbmcgIndhcm5p bmc6IGludGVnZXIgb3ZlcmZsb3cgaW4gZXhwcmVzc2lvbiIgfSAqLworfQor CisvKiBCdXQgdGhpcyBleHByZXNzaW9uIGRvZXMgbmVlZCB0byBiZSBjb25z dGFudC4gICovCitzdGF0aWMgaW50IHNjID0gSU5UX01BWCArIDE7IC8qIHsg ZGctd2FybmluZyAid2FybmluZzogaW50ZWdlciBvdmVyZmxvdyBpbiBleHBy ZXNzaW9uIiB9ICovCisKKy8qIFRoZSBmaXJzdCB0d28gb2YgdGhlc2UgaW52 b2x2ZSBvdmVyZmxvdywgc28gYXJlIG5vdCBudWxsIHBvaW50ZXIKKyAgIGNv bnN0YW50cy4gIFRoZSB0aGlyZCBoYXMgdGhlIG92ZXJmbG93IGluIGFuIHVu ZXZhbHVhdGVkCisgICBzdWJleHByZXNzaW9uLCBzbyBpcyBhIG51bGwgcG9p bnRlciBjb25zdGFudC4gICovCit2b2lkICpwID0gMCAqIChJTlRfTUFYICsg MSk7IC8qIHsgZGctd2FybmluZyAid2FybmluZzogaW50ZWdlciBvdmVyZmxv dyBpbiBleHByZXNzaW9uIiB9ICovCisvKiB7IGRnLWVycm9yICJpbnZhbGlk IGNvbnZlcnNpb24gZnJvbSAnaW50JyB0byAndm9pZCIgIm51bGwiIHsgdGFy Z2V0ICotKi0qIH0gNDggfSAqLwordm9pZCAqcSA9IDAgKiAoMSAvIDApOyAv KiB7IGRnLXdhcm5pbmcgIndhcm5pbmc6IGRpdmlzaW9uIGJ5IHplcm8iIH0g Ki8KKy8qIHsgZGctZXJyb3IgImludmFsaWQgY29udmVyc2lvbiBmcm9tICdp bnQnIHRvICd2b2lkKiciICJudWxsIiB7IHhmYWlsICotKi0qIH0gNTAgfSAq Lwordm9pZCAqciA9ICgxID8gMCA6IElOVF9NQVgrMSk7IC8qIHsgZGctYm9n dXMgImludGVnZXIgb3ZlcmZsb3cgaW4gZXhwcmVzc2lvbiIgIiIgeyB4ZmFp bCAqLSotKiB9IDUyIH0gKi8KKwordm9pZAorZyAoaW50IGkpCit7CisgIHN3 aXRjaCAoaSkKKyAgICB7CisgICAgY2FzZSAwICogKDEvMCk6IC8qIHsgZGct d2FybmluZyAid2FybmluZzogZGl2aXNpb24gYnkgemVybyIgfSAqLworICAg ICAgOworICAgIGNhc2UgMSArIDAgKiAoSU5UX01BWCArIDEpOiAvKiB7IGRn LXdhcm5pbmcgIndhcm5pbmc6IGludGVnZXIgb3ZlcmZsb3cgaW4gZXhwcmVz c2lvbiIgfSAqLworICAgICAgOworICAgIH0KK30KKworaW50CitoICh2b2lk KQoreworICByZXR1cm4gSU5UX01BWCArIDE7IC8qIHsgZGctd2FybmluZyAi d2FybmluZzogaW50ZWdlciBvdmVyZmxvdyBpbiBleHByZXNzaW9uIiB9ICov Cit9CisKK2ludAoraDEgKHZvaWQpCit7CisgIHJldHVybiBJTlRfTUFYICsg MSAtIElOVF9NQVg7IC8qIHsgZGctd2FybmluZyAid2FybmluZzogaW50ZWdl ciBvdmVyZmxvdyBpbiBleHByZXNzaW9uIiB9ICovCit9CisKK3ZvaWQgZnVj ICh1bnNpZ25lZCBjaGFyKTsKK3ZvaWQgZnNjIChzaWduZWQgY2hhcik7CisK K3ZvaWQKK2gyICh2b2lkKQoreworICBmc2MgKFNDSEFSX01BWCArIDEpOwor ICBmc2MgKFNDSEFSX01JTiAtIDEpOyAvKiB7IGRnLXdhcm5pbmcgIndhcm5p bmc6IG92ZXJmbG93IGluIGltcGxpY2l0IGNvbnN0YW50IGNvbnZlcnNpb24i IH0gKi8KKyAgZnNjIChVQ0hBUl9NQVgpOworICBmc2MgKFVDSEFSX01BWCAr IDEpOyAvKiB7IGRnLXdhcm5pbmcgIndhcm5pbmc6IG92ZXJmbG93IGluIGlt cGxpY2l0IGNvbnN0YW50IGNvbnZlcnNpb24iIH0gKi8KKyAgZnVjICgtMSk7 CisgIGZ1YyAoVUNIQVJfTUFYICsgMSk7IC8qIHsgZGctd2FybmluZyAid2Fy bmluZzogbGFyZ2UgaW50ZWdlciBpbXBsaWNpdGx5IHRydW5jYXRlZCB0byB1 bnNpZ25lZCB0eXBlIiB9ICovCisgIGZ1YyAoU0NIQVJfTUlOKTsKKyAgZnVj IChTQ0hBUl9NSU4gLSAxKTsgLyogeyBkZy13YXJuaW5nICJ3YXJuaW5nOiBs YXJnZSBpbnRlZ2VyIGltcGxpY2l0bHkgdHJ1bmNhdGVkIHRvIHVuc2lnbmVk IHR5cGUiIH0gKi8KKyAgZnVjICgtVUNIQVJfTUFYKTsgLyogeyBkZy13YXJu aW5nICJ3YXJuaW5nOiBsYXJnZSBpbnRlZ2VyIGltcGxpY2l0bHkgdHJ1bmNh dGVkIHRvIHVuc2lnbmVkIHR5cGUiIH0gKi8KK30KKwordm9pZCBmdWkgKHVu c2lnbmVkIGludCk7Cit2b2lkIGZzaSAoc2lnbmVkIGludCk7CisKK2ludCBz aTsKK3Vuc2lnbmVkIHVpOworCit2b2lkCitoMmkgKGludCB4KQoreworICAv KiBGb3Igc29tZSByZWFzb24sIHdlIG9ubHkgZ2l2ZSBjZXJ0YWluIHdhcm5p bmdzIGZvciBpbXBsaWNpdAorICAgICBjb252ZXJzaW9ucyBhbW9uZyB2YWx1 ZXMgb2YgdGhlIHNhbWUgcHJlY2lzaW9uIHdpdGggLVdjb252ZXJzaW9uLAor ICAgICB3aGlsZSB3ZSBkb24ndCBnaXZlIG90aGVycyBhdCBhbGwuICAqLwor ICBmc2kgKCh1bnNpZ25lZClJTlRfTUFYICsgMSk7CisgIHNpID0gKHVuc2ln bmVkKUlOVF9NQVggKyAxOworICBzaSA9IHggPyAodW5zaWduZWQpSU5UX01B WCArIDEgOiAxOworICBmc2kgKCh1bnNpZ25lZClJTlRfTUFYICsgMik7Cisg IHNpID0gKHVuc2lnbmVkKUlOVF9NQVggKyAyOworICBzaSA9IHggPyAodW5z aWduZWQpSU5UX01BWCArIDIgOiAxOworICBmc2kgKFVJTlRfTUFYKTsKKyAg c2kgPSBVSU5UX01BWDsKKyAgZnVpICgtMSk7CisgIHVpID0gLTE7CisgIHVp ID0geCA/IC0xIDogMVU7CisgIGZ1aSAoSU5UX01JTik7CisgIHVpID0gSU5U X01JTjsKKyAgdWkgPSB4ID8gSU5UX01JTiA6IDFVOworfQpJbmRleDogZ2Nj L3Rlc3RzdWl0ZS9nKysuZGcvd2Fybi9vdmVyZmxvdy13YXJuLTUuQwo9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLSBnY2MvdGVzdHN1aXRlL2crKy5kZy93 YXJuL292ZXJmbG93LXdhcm4tNS5DCShyZXZpc2lvbiAwKQorKysgZ2NjL3Rl c3RzdWl0ZS9nKysuZGcvd2Fybi9vdmVyZmxvdy13YXJuLTUuQwkocmV2aXNp b24gMCkKQEAgLTAsMCArMSw3IEBACisvKiBQUiBjLzI3MjczICovCisvKiB7 IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItV292ZXJm bG93IiB9ICovCisKK3Vuc2lnbmVkIGNoYXIgcnhfYXN5bmModW5zaWduZWQg Y2hhciBwKSB7CisgICAgcmV0dXJuIHAgJiA1MTI7IC8qIHsgZGctd2Fybmlu ZyAib3ZlcmZsb3cgaW4gaW1wbGljaXQgY29uc3RhbnQgY29udmVyc2lvbiIg fSAqLworfQpJbmRleDogZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvd2Fybi9vdmVy Zmxvdy13YXJuLTYuQwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBnY2Mv dGVzdHN1aXRlL2crKy5kZy93YXJuL292ZXJmbG93LXdhcm4tNi5DCShyZXZp c2lvbiAwKQorKysgZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvd2Fybi9vdmVyZmxv dy13YXJuLTYuQwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxOCBAQAorLyog VGVzdCBub24tY29uc3RhbnQgb3BlcmFuZHMgaW4gb3ZlcmZsb3dlZCBleHBy ZXNzaW9ucy4gICovCisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBk Zy1vcHRpb25zICItV292ZXJmbG93IiB9ICovCisKKyNpbmNsdWRlIDxsaW1p dHMuaD4KKworaW50IAoraDEgKGludCB4KQoreworICByZXR1cm4geCAqICgw ICogKElOVF9NQVggKyAxKSk7IC8qIHsgZGctd2FybmluZyAid2FybmluZzog aW50ZWdlciBvdmVyZmxvdyBpbiBleHByZXNzaW9uIiB9ICovCit9CisKK2lu dCAKK2gyIChpbnQgeCkKK3sKKyAgcmV0dXJuICgoSU5UX01BWCArIDEpICog MCkgKiB4OyAvKiB7IGRnLXdhcm5pbmcgIndhcm5pbmc6IGludGVnZXIgb3Zl cmZsb3cgaW4gZXhwcmVzc2lvbiIgfSAqLworfQorCkluZGV4OiBnY2MvdGVz dHN1aXRlL2crKy5kZy93YXJuL1dvdmVyZmxvdy0xLkMKPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0gZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvd2Fybi9Xb3Zl cmZsb3ctMS5DCShyZXZpc2lvbiAwKQorKysgZ2NjL3Rlc3RzdWl0ZS9nKysu ZGcvd2Fybi9Xb3ZlcmZsb3ctMS5DCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx LDcgQEAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlv bnMgIi1PMiIgfSAqLworCisjaW5jbHVkZSA8bGltaXRzLmg+CisKK2ludCBm b28gPSBJTlRfTUFYICsgMTsgIC8qIHsgZGctd2FybmluZyAiaW50ZWdlciBv dmVyZmxvdyIgfSAqLworCkluZGV4OiBnY2MvY3AvdHlwZWNrLmMKPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0gZ2NjL2NwL3R5cGVjay5jCShyZXZpc2lv biAxMjA1MTEpCisrKyBnY2MvY3AvdHlwZWNrLmMJKHdvcmtpbmcgY29weSkK QEAgLTM4NzAsNiArMzg3MCwxMiBAQCBidWlsZF9iaW5hcnlfb3AgKGVudW0g dHJlZV9jb2RlIGNvZGUsIHRyCiAgIHJlc3VsdCA9IGZvbGRfaWZfbm90X2lu X3RlbXBsYXRlIChyZXN1bHQpOwogICBpZiAoZmluYWxfdHlwZSAhPSAwKQog ICAgIHJlc3VsdCA9IGNwX2NvbnZlcnQgKGZpbmFsX3R5cGUsIHJlc3VsdCk7 CisKKyAgaWYgKFRSRUVfT1ZFUkZMT1dfUCAocmVzdWx0KSAKKyAgICAgICYm ICFUUkVFX09WRVJGTE9XX1AgKG9wMCkgCisgICAgICAmJiAhVFJFRV9PVkVS RkxPV19QIChvcDEpKQorICAgIG92ZXJmbG93X3dhcm5pbmcgKHJlc3VsdCk7 CisKICAgcmV0dXJuIHJlc3VsdDsKIH0KIAwK ------=_Part_27645_12351208.1168105769930--