From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 28248 invoked by alias); 27 Nov 2012 10:55:22 -0000 Received: (qmail 28226 invoked by uid 22791); 27 Nov 2012 10:55:21 -0000 X-SWARE-Spam-Status: No, hits=-4.6 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,KHOP_RCVD_TRUST,KHOP_THREADED,RCVD_IN_DNSWL_LOW,RCVD_IN_HOSTKARMA_YE,TW_BT,TW_DB,TW_KG X-Spam-Check-By: sourceware.org Received: from mail-bk0-f41.google.com (HELO mail-bk0-f41.google.com) (209.85.214.41) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 27 Nov 2012 10:55:09 +0000 Received: by mail-bk0-f41.google.com with SMTP id jg9so5429922bkc.0 for ; Tue, 27 Nov 2012 02:55:07 -0800 (PST) Received: by 10.204.153.197 with SMTP id l5mr615082bkw.80.1354013707681; Tue, 27 Nov 2012 02:55:07 -0800 (PST) MIME-Version: 1.0 Received: by 10.205.32.12 with HTTP; Tue, 27 Nov 2012 02:54:27 -0800 (PST) In-Reply-To: References: <50AC323F.1070907@mentor.com> <50AC3E15.1020308@codesourcery.com> From: Hui Zhu Date: Tue, 27 Nov 2012 10:55:00 -0000 Message-ID: Subject: Re: [PATCH] Add CTF support to GDB [3/4] ctf target To: Yao Qi Cc: Hui Zhu , gdb-patches ml Content-Type: multipart/mixed; boundary=0015175d072a113feb04cf77e264 X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2012-11/txt/msg00717.txt.bz2 --0015175d072a113feb04cf77e264 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Content-length: 2151 On Wed, Nov 21, 2012 at 11:31 AM, Hui Zhu wrote: > On Wed, Nov 21, 2012 at 10:36 AM, Yao Qi wrote: >> On 11/21/2012 09:45 AM, Hui Zhu wrote: >>> >>> 2012-11-20 Hui Zhu >>> >>> * config.in (HAVE_LIBBABELTRACE): new macro. >>> * configure: New option "--enable-ctf-target". >> >> >> Looks like changes to configure.ac is missing in this patch. > > I miss c-exp.y too. I will post a new version later. > > Thanks, > Hui > >> >> -- >> Yao (=E9=BD=90=E5=B0=A7) This is a new version that include the change of aclocal.m4, c-exp.y and configure.ac. Thanks, Hui 2012-11-27 Hui Zhu * aclocal.m4: Add PKG_PROG_PKG_CONFIG. * c-exp.y (lookup_enum): Rename to lookup_enum_gdb. * config.in (HAVE_LIBBABELTRACE): new macro. * configure: New option "--enable-ctf-target". * configure.ac: New option "--enable-ctf-target". * ctf.c (babeltrace/babeltrace.h, babeltrace/types.h, babeltrace/ctf/events.h, babeltrace/ctf/iterator.h): New includes. (ctx, iter, current_tp, ctf_event, ctf_ops): New variables. (bt_ctf_close, bt_ctf_open, bt_ctf_find_field, bt_ctf_event_id, bt_ctf_def_to_val, bt_ctf_event_to_internalvar, bt_ctf_goto_begin, bt_ctf_find_num, bt_ctf_find_tp, ctf_open, ctf_close, ctf_trace_find, ctf_get_current_tracepoint_name, ctf_trace_dump, ctf_has_all_memory, ctf_has_memory, ctf_has_stack, ctf_has_registers, ctf_thread_alive, init_ctf_ops, _initialize_ctf): New functions. * gdbtypes.c (lookup_enum): Rename to lookup_enum_gdb. * python/py-type.c (typy_lookup_typename): Rename lookup_enum to lookup_enum_gdb. * symtab.h (lookup_enum): Rename to lookup_enum_gdb. * target.c (update_current_target): Add to_get_current_tracepoint_name and to_trace_dump. (update_current_target): Ditto. * target.h (target_ops): Add to_get_current_tracepoint_name and to_trace_dump. (target_get_current_tracepoint_name, target_trace_dump): New macro. * tracepoint.c (tfind_1): Add checks for has_stack_frames (). Call target_get_current_tracepoint_name to show the name of tracepoint. (trace_dump_command): Call target_trace_dump. --0015175d072a113feb04cf77e264 Content-Type: text/plain; charset=US-ASCII; name="ctf-target.txt" Content-Disposition: attachment; filename="ctf-target.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ha0wrj1y0 Content-length: 44372 LS0tIGEvYWNsb2NhbC5tNAorKysgYi9hY2xvY2FsLm00CkBAIC0xMDYsNiAr MTA2LDMxIEBAIEFDX0RFRlVOKFtfQU1fU1VCU1RfTk9UTUFLRV0pCiAjIFB1 YmxpYyBzaXN0ZXIgb2YgX0FNX1NVQlNUX05PVE1BS0UuCiBBQ19ERUZVTihb QU1fU1VCU1RfTk9UTUFLRV0sIFtfQU1fU1VCU1RfTk9UTUFLRSgkQCldKQog CisjIFBLR19QUk9HX1BLR19DT05GSUcoW01JTi1WRVJTSU9OXSkKKyMgLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQUNfREVGVU4oW1BL R19QUk9HX1BLR19DT05GSUddLAorW200X3BhdHRlcm5fZm9yYmlkKFteXz9Q S0dfW0EtWl9dKyRdKQorbTRfcGF0dGVybl9hbGxvdyhbXlBLR19DT05GSUco XyhQQVRIfExJQkRJUnxTWVNST09UX0RJUnxBTExPV19TWVNURU1fKENGTEFH U3xMSUJTKSkpPyRdKQorbTRfcGF0dGVybl9hbGxvdyhbXlBLR19DT05GSUdf KERJU0FCTEVfVU5JTlNUQUxMRUR8VE9QX0JVSUxEX0RJUnxERUJVR19TUEVX KSRdKQorQUNfQVJHX1ZBUihbUEtHX0NPTkZJR10sIFtwYXRoIHRvIHBrZy1j b25maWcgdXRpbGl0eV0pCitBQ19BUkdfVkFSKFtQS0dfQ09ORklHX1BBVEhd LCBbZGlyZWN0b3JpZXMgdG8gYWRkIHRvIHBrZy1jb25maWcncyBzZWFyY2gg cGF0aF0pCitBQ19BUkdfVkFSKFtQS0dfQ09ORklHX0xJQkRJUl0sIFtwYXRo IG92ZXJyaWRpbmcgcGtnLWNvbmZpZydzIGJ1aWx0LWluIHNlYXJjaCBwYXRo XSkKKworaWYgdGVzdCAieCRhY19jdl9lbnZfUEtHX0NPTkZJR19zZXQiICE9 ICJ4c2V0IjsgdGhlbgorCUFDX1BBVEhfVE9PTChbUEtHX0NPTkZJR10sIFtw a2ctY29uZmlnXSkKK2ZpCitpZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyI7IHRo ZW4KKwlfcGtnX21pbl92ZXJzaW9uPW00X2RlZmF1bHQoWyQxXSwgWzAuOS4w XSkKKwlBQ19NU0dfQ0hFQ0tJTkcoW3BrZy1jb25maWcgaXMgYXQgbGVhc3Qg dmVyc2lvbiAkX3BrZ19taW5fdmVyc2lvbl0pCisJaWYgJFBLR19DT05GSUcg LS1hdGxlYXN0LXBrZ2NvbmZpZy12ZXJzaW9uICRfcGtnX21pbl92ZXJzaW9u OyB0aGVuCisJCUFDX01TR19SRVNVTFQoW3llc10pCisJZWxzZQorCQlBQ19N U0dfUkVTVUxUKFtub10pCisJCVBLR19DT05GSUc9IiIKKwlmaQorZmlbXWRu bAorXSkjIFBLR19QUk9HX1BLR19DT05GSUcKKwogbTRfaW5jbHVkZShbLi4v Y29uZmlnL2xhcmdlZmlsZS5tNF0pCiBtNF9pbmNsdWRlKFsuLi9jb25maWcv bGVhZC1kb3QubTRdKQogbTRfaW5jbHVkZShbLi4vY29uZmlnL3BsdWdpbnMu bTRdKQotLS0gYS9jLWV4cC55CisrKyBiL2MtZXhwLnkKQEAgLTEyNzUsOCAr MTI3NSw4IEBAIHR5cGViYXNlICAvKiBJbXBsZW1lbnRzIChhcHByb3hpbWF0 ZWx5KToKIAkJCXsgJCQgPSBsb29rdXBfdW5pb24gKGNvcHlfbmFtZSAoJDIp LAogCQkJCQkgICAgIGV4cHJlc3Npb25fY29udGV4dF9ibG9jayk7IH0KIAl8 CUVOVU0gbmFtZQotCQkJeyAkJCA9IGxvb2t1cF9lbnVtIChjb3B5X25hbWUg KCQyKSwKLQkJCQkJICAgIGV4cHJlc3Npb25fY29udGV4dF9ibG9jayk7IH0K KwkJCXsgJCQgPSBsb29rdXBfZW51bV9nZGIgKGNvcHlfbmFtZSAoJDIpLAor CQkJCQkJZXhwcmVzc2lvbl9jb250ZXh0X2Jsb2NrKTsgfQogCXwJVU5TSUdO RUQgdHlwZW5hbWUKIAkJCXsgJCQgPSBsb29rdXBfdW5zaWduZWRfdHlwZW5h bWUgKHBhcnNlX2xhbmd1YWdlLAogCQkJCQkJCSBwYXJzZV9nZGJhcmNoLAot LS0gYS9jb25maWcuaW4KKysrIGIvY29uZmlnLmluCkBAIC0yMTYsNiArMjE2 LDEwIEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHcnIGxp YnJhcnkgKC1sdykuICovCiAjdW5kZWYgSEFWRV9MSUJXCiAKKy8qIERlZmlu ZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgYmFiZWx0cmFjZScgbGlicmFyeQor ICAgKC1sYmFiZWx0cmFjZSAtbGJhYmVsdHJhY2UtY3RmKS4gICovCisjdW5k ZWYgSEFWRV9MSUJCQUJFTFRSQUNFCisKIC8qIERlZmluZSB0byAxIGlmIHlv dSBoYXZlIHRoZSA8bGluay5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBI QVZFX0xJTktfSAogCi0tLSBhL2NvbmZpZ3VyZQorKysgYi9jb25maWd1cmUK QEAgLTU5Miw2ICs1OTIsOSBAQCBlbmFibGVfb3B0aW9uX2NoZWNraW5nPW5v CiBhY19zdWJzdF92YXJzPSdMVExJQk9CSlMKIExJQk9CSlMKIEdEQl9OTV9G SUxFCitQS0dfQ09ORklHX0xJQkRJUgorUEtHX0NPTkZJR19QQVRICitQS0df Q09ORklHCiBmcmFncwogdGFyZ2V0X3N1YmRpcgogQ09ORklHX1VOSU5TVEFM TApAQCAtODE0LDYgKzgxNyw3IEBAIHdpdGhfeAogZW5hYmxlX3NpbQogZW5h YmxlX211bHRpX2ljZQogZW5hYmxlX2dkYnNlcnZlcgorZW5hYmxlX2N0Zl90 YXJnZXQKICcKICAgICAgIGFjX3ByZWNpb3VzX3ZhcnM9J2J1aWxkX2FsaWFz CiBob3N0X2FsaWFzCkBAIC04MjgsNyArODMyLDEwIEBAIE1BS0VJTkZPCiBN QUtFSU5GT0ZMQUdTCiBZQUNDCiBZRkxBR1MKLVhNS01GJworWE1LTUYKK1BL R19DT05GSUcKK1BLR19DT05GSUdfUEFUSAorUEtHX0NPTkZJR19MSUJESVIn CiBhY19zdWJkaXJzX2FsbD0ndGVzdHN1aXRlCiBnZGJ0awogbXVsdGktaWNl CkBAIC0xNDc3LDYgKzE0ODQsNyBAQCBPcHRpb25hbCBGZWF0dXJlczoKICAg LS1lbmFibGUtbXVsdGktaWNlICAgICAgYnVpbGQgdGhlIG11bHRpLWljZS1n ZGItc2VydmVyCiAgIC0tZW5hYmxlLWdkYnNlcnZlciAgICAgIGF1dG9tYXRp Y2FsbHkgYnVpbGQgZ2Ric2VydmVyICh5ZXMvbm8vYXV0bywgZGVmYXVsdAog ICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBhdXRvKQorICAtLWVuYWJs ZS1jdGYtdGFyZ2V0ICAgICBlbmFibGUgY3RmIHRhcmdldCAoeWVzL25vL2F1 dG8sIGRlZmF1bHQgaXMgYXV0bykKIAogT3B0aW9uYWwgUGFja2FnZXM6CiAg IC0td2l0aC1QQUNLQUdFWz1BUkddICAgIHVzZSBQQUNLQUdFIFtBUkc9eWVz XQpAQCAtMTU0Myw2ICsxNTUxLDExIEBAIFNvbWUgaW5mbHVlbnRpYWwgZW52 aXJvbm1lbnQgdmFyaWFibGVzOgogICAgICAgICAgICAgICBUaGlzIHNjcmlw dCB3aWxsIGRlZmF1bHQgWUZMQUdTIHRvIHRoZSBlbXB0eSBzdHJpbmcgdG8g YXZvaWQgYQogICAgICAgICAgICAgICBkZWZhdWx0IHZhbHVlIG9mIGAtZCcg Z2l2ZW4gYnkgc29tZSBtYWtlIGFwcGxpY2F0aW9ucy4KICAgWE1LTUYgICAg ICAgUGF0aCB0byB4bWttZiwgTWFrZWZpbGUgZ2VuZXJhdG9yIGZvciBYIFdp bmRvdyBTeXN0ZW0KKyAgUEtHX0NPTkZJRyAgcGF0aCB0byBwa2ctY29uZmln IHV0aWxpdHkKKyAgUEtHX0NPTkZJR19QQVRICisgICAgICAgICAgICAgIGRp cmVjdG9yaWVzIHRvIGFkZCB0byBwa2ctY29uZmlnJ3Mgc2VhcmNoIHBhdGgK KyAgUEtHX0NPTkZJR19MSUJESVIKKyAgICAgICAgICAgICAgcGF0aCBvdmVy cmlkaW5nIHBrZy1jb25maWcncyBidWlsdC1pbiBzZWFyY2ggcGF0aAogCiBV c2UgdGhlc2UgdmFyaWFibGVzIHRvIG92ZXJyaWRlIHRoZSBjaG9pY2VzIG1h ZGUgYnkgYGNvbmZpZ3VyZScgb3IgdG8gaGVscAogaXQgdG8gZmluZCBsaWJy YXJpZXMgYW5kIHByb2dyYW1zIHdpdGggbm9uc3RhbmRhcmQgbmFtZXMvbG9j YXRpb25zLgpAQCAtMTM0OTAsNiArMTM1MDMsMjgxIEBAIGlmIHRlc3QgIiRl bmFibGVfZ2Ric2VydmVyIiA9ICJ5ZXMiIC1hICIKICAgYXNfZm5fZXJyb3Ig IkF1dG9tYXRpYyBnZGJzZXJ2ZXIgYnVpbGQgaXMgbm90IHN1cHBvcnRlZCBm b3IgdGhpcyBjb25maWd1cmF0aW9uIiAiJExJTkVOTyIgNQogZmkKIAorIyBD aGVjayB3aGV0aGVyIC0tZW5hYmxlLWN0Zi10YXJnZXQgd2FzIGdpdmVuLgor aWYgdGVzdCAiJHtlbmFibGVfY3RmX3RhcmdldCtzZXR9IiA9IHNldDsgdGhl biA6CisgIGVuYWJsZXZhbD0kZW5hYmxlX2N0Zl90YXJnZXQ7IGNhc2UgIiR7 ZW5hYmxldmFsfSIgaW4KKyAgeWVzfCBub3xhdXRvKSA7OworICAqKSBhc19m bl9lcnJvciAiYmFkIHZhbHVlICR7ZW5hYmxldmFsfSBmb3IgLS1lbmFibGUt Y3RmLXRhcmdldCBvcHRpb24iICIkTElORU5PIiA1IDs7Citlc2FjCitlbHNl CisgIGVuYWJsZV9jdGZfdGFyZ2V0PWF1dG8KK2ZpCisKKworaWYgdGVzdCAi JGVuYWJsZV9jdGZfdGFyZ2V0IiA9ICJ5ZXMiIHx8IHRlc3QgIiRlbmFibGVf Y3RmX3RhcmdldCIgPSAiYXV0byI7IHRoZW4KKyAgcGtnX2NvbmZpZ19hcmdz PWdsaWItMi4wCisgIGZvciBtb2R1bGUgaW4gLiBnbW9kdWxlCisgIGRvCisg ICAgICBjYXNlICIkbW9kdWxlIiBpbgorICAgICAgICAgZ21vZHVsZSkKKyAg ICAgICAgICAgICBwa2dfY29uZmlnX2FyZ3M9IiRwa2dfY29uZmlnX2FyZ3Mg Z21vZHVsZS0yLjAiCisgICAgICAgICA7OworICAgICAgICAgZ21vZHVsZS1u by1leHBvcnQpCisgICAgICAgICAgICAgcGtnX2NvbmZpZ19hcmdzPSIkcGtn X2NvbmZpZ19hcmdzIGdtb2R1bGUtbm8tZXhwb3J0LTIuMCIKKyAgICAgICAg IDs7CisgICAgICAgICBnb2JqZWN0KQorICAgICAgICAgICAgIHBrZ19jb25m aWdfYXJncz0iJHBrZ19jb25maWdfYXJncyBnb2JqZWN0LTIuMCIKKyAgICAg ICAgIDs7CisgICAgICAgICBndGhyZWFkKQorICAgICAgICAgICAgIHBrZ19j b25maWdfYXJncz0iJHBrZ19jb25maWdfYXJncyBndGhyZWFkLTIuMCIKKyAg ICAgICAgIDs7CisgICAgICAgICBnaW8qKQorICAgICAgICAgICAgIHBrZ19j b25maWdfYXJncz0iJHBrZ19jb25maWdfYXJncyAkbW9kdWxlLTIuMCIKKyAg ICAgICAgIDs7CisgICAgICBlc2FjCisgIGRvbmUKKworCisKKworCisKKwor aWYgdGVzdCAieCRhY19jdl9lbnZfUEtHX0NPTkZJR19zZXQiICE9ICJ4c2V0 IjsgdGhlbgorCWlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4K KyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJl Zml4fXBrZy1jb25maWciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUg d2l0aCBhcmdzLgorc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9cGtnLWNv bmZpZzsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGlu ZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFz X2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Citp ZiB0ZXN0ICIke2FjX2N2X3BhdGhfUEtHX0NPTkZJRytzZXR9IiA9IHNldDsg dGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisg IGNhc2UgJFBLR19DT05GSUcgaW4KKyAgW1xcL10qIHwgPzpbXFwvXSopCisg IGFjX2N2X3BhdGhfUEtHX0NPTkZJRz0iJFBLR19DT05GSUciICMgTGV0IHRo ZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0IHdpdGggYSBwYXRoLgorICA7Owor ICAqKQorICBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9S Citmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJRlM9JGFzX3NhdmVfSUZT CisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFj X2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRv CisgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4 dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4 dCI7IH07IHRoZW4KKyAgICBhY19jdl9wYXRoX1BLR19DT05GSUc9IiRhc19k aXIvJGFjX3dvcmQkYWNfZXhlY19leHQiCisgICAgJGFzX2VjaG8gIiRhc19t ZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29y ZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgorICBmaQorZG9uZQor ICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKKyAgOzsKK2VzYWMKK2ZpCitQ S0dfQ09ORklHPSRhY19jdl9wYXRoX1BLR19DT05GSUcKK2lmIHRlc3QgLW4g IiRQS0dfQ09ORklHIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHth c19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJFBLR19DT05GSUciID4mNQor JGFzX2VjaG8gIiRQS0dfQ09ORklHIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNf ZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5v IiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisKK2ZpCitpZiB0 ZXN0IC16ICIkYWNfY3ZfcGF0aF9QS0dfQ09ORklHIjsgdGhlbgorICBhY19w dF9QS0dfQ09ORklHPSRQS0dfQ09ORklHCisgICMgRXh0cmFjdCB0aGUgZmly c3Qgd29yZCBvZiAicGtnLWNvbmZpZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dy YW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgcGtnLWNvbmZpZzsgYWNf d29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F Tk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAi Y2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiB0ZXN0ICIk e2FjX2N2X3BhdGhfYWNfcHRfUEtHX0NPTkZJRytzZXR9IiA9IHNldDsgdGhl biA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNh c2UgJGFjX3B0X1BLR19DT05GSUcgaW4KKyAgW1xcL10qIHwgPzpbXFwvXSop CisgIGFjX2N2X3BhdGhfYWNfcHRfUEtHX0NPTkZJRz0iJGFjX3B0X1BLR19D T05GSUciICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0IHdpdGgg YSBwYXRoLgorICA7OworICAqKQorICBhc19zYXZlX0lGUz0kSUZTOyBJRlM9 JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJ RlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rp cj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxl X2V4dGVuc2lvbnM7IGRvCisgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNf d29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNf d29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgICBhY19jdl9wYXRoX2Fj X3B0X1BLR19DT05GSUc9IiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQi CisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog Zm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAg YnJlYWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZT CisKKyAgOzsKK2VzYWMKK2ZpCithY19wdF9QS0dfQ09ORklHPSRhY19jdl9w YXRoX2FjX3B0X1BLR19DT05GSUcKK2lmIHRlc3QgLW4gIiRhY19wdF9QS0df Q09ORklHIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5l bm8tJExJTkVOT306IHJlc3VsdDogJGFjX3B0X1BLR19DT05GSUciID4mNQor JGFzX2VjaG8gIiRhY19wdF9QS0dfQ09ORklHIiA+JjY7IH0KK2Vsc2UKKyAg eyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1 bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisgIGlm IHRlc3QgIngkYWNfcHRfUEtHX0NPTkZJRyIgPSB4OyB0aGVuCisgICAgUEtH X0NPTkZJRz0iIgorICBlbHNlCisgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5n OiRhY190b29sX3dhcm5lZCBpbgoreWVzOikKK3sgJGFzX2VjaG8gIiRhc19t ZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3Mg dG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKKyRh c19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5v dCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KK2FjX3Rvb2xf d2FybmVkPXllcyA7OworZXNhYworICAgIFBLR19DT05GSUc9JGFjX3B0X1BL R19DT05GSUcKKyAgZmkKK2Vsc2UKKyAgUEtHX0NPTkZJRz0iJGFjX2N2X3Bh dGhfUEtHX0NPTkZJRyIKK2ZpCisKK2ZpCitpZiB0ZXN0IC1uICIkUEtHX0NP TkZJRyI7IHRoZW4KKwlfcGtnX21pbl92ZXJzaW9uPTAuMTYKKwl7ICRhc19l Y2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHBr Zy1jb25maWcgaXMgYXQgbGVhc3QgdmVyc2lvbiAkX3BrZ19taW5fdmVyc2lv biIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBwa2ctY29uZmlnIGlzIGF0 IGxlYXN0IHZlcnNpb24gJF9wa2dfbWluX3ZlcnNpb24uLi4gIiA+JjY7IH0K KwlpZiAkUEtHX0NPTkZJRyAtLWF0bGVhc3QtcGtnY29uZmlnLXZlcnNpb24g JF9wa2dfbWluX3ZlcnNpb247IHRoZW4KKwkJeyAkYXNfZWNobyAiJGFzX21l OiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IHllcyIgPiY1CiskYXNf ZWNobyAieWVzIiA+JjY7IH0KKwllbHNlCisJCXsgJGFzX2VjaG8gIiRhc19t ZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNf ZWNobyAibm8iID4mNjsgfQorCQlQS0dfQ09ORklHPSIiCisJZmkKK2ZpCisK KyAgaWYgdGVzdCAieCRQS0dfQ09ORklHIiA9IHggOyB0aGVuCisgICAgbm9f Z2xpYj15ZXMKKyAgICBQS0dfQ09ORklHPW5vCisgIGZpCisKKyAgbWluX2ds aWJfdmVyc2lvbj0yLjIyLjAKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNf bGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgR0xJQiAtIHZlcnNpb24g Pj0gJG1pbl9nbGliX3ZlcnNpb24iID4mNQorJGFzX2VjaG9fbiAiY2hlY2tp bmcgZm9yIEdMSUIgLSB2ZXJzaW9uID49ICRtaW5fZ2xpYl92ZXJzaW9uLi4u ICIgPiY2OyB9CisKKyAgaWYgdGVzdCB4JFBLR19DT05GSUcgIT0geG5vIDsg dGhlbgorICAgIGVuYWJsZV9nbGlidGVzdD15ZXMKKyAgICAjIyBkb24ndCB0 cnkgdG8gcnVuIHRoZSB0ZXN0IGFnYWluc3QgdW5pbnN0YWxsZWQgbGlidG9v bCBsaWJzCisgICAgaWYgJFBLR19DT05GSUcgLS11bmluc3RhbGxlZCAkcGtn X2NvbmZpZ19hcmdzOyB0aGVuCisgICAgICB7ICRhc19lY2hvICIkYXNfbWU6 JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IFdpbGwgdXNlIHVuaW5z dGFsbGVkIHZlcnNpb24gb2YgR0xpYiBmb3VuZCBpbiBQS0dfQ09ORklHX1BB VEgiID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogV2lsbCB1c2Ug dW5pbnN0YWxsZWQgdmVyc2lvbiBvZiBHTGliIGZvdW5kIGluIFBLR19DT05G SUdfUEFUSCIgPiYyO30KKyAgICAgIGVuYWJsZV9nbGlidGVzdD1ubworICAg IGZpCisgICAgaWYgJFBLR19DT05GSUcgLS1hdGxlYXN0LXZlcnNpb24gJG1p bl9nbGliX3ZlcnNpb24gJHBrZ19jb25maWdfYXJnczsgdGhlbgorICAgICAg OgorICAgIGVsc2UKKyAgICAgIG5vX2dsaWI9eWVzCisgICAgZmkKKyAgZmkK KworICBpZiB0ZXN0IHgiJG5vX2dsaWIiID0geCA7IHRoZW4KKyAgICBHTElC X0dFTk1BUlNIQUw9YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9Z2xpYl9nZW5t YXJzaGFsIGdsaWItMi4wYAorICAgIEdPQkpFQ1RfUVVFUlk9YCRQS0dfQ09O RklHIC0tdmFyaWFibGU9Z29iamVjdF9xdWVyeSBnbGliLTIuMGAKKyAgICBH TElCX01LRU5VTVM9YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9Z2xpYl9ta2Vu dW1zIGdsaWItMi4wYAorICAgIEdMSUJfQ09NUElMRV9SRVNPVVJDRVM9YCRQ S0dfQ09ORklHIC0tdmFyaWFibGU9Z2xpYl9jb21waWxlX3Jlc291cmNlcyBn aW8tMi4wYAorCisgICAgR0xJQl9DRkxBR1M9YCRQS0dfQ09ORklHIC0tY2Zs YWdzICRwa2dfY29uZmlnX2FyZ3NgCisgICAgR0xJQl9MSUJTPWAkUEtHX0NP TkZJRyAtLWxpYnMgJHBrZ19jb25maWdfYXJnc2AKKyAgICBnbGliX2NvbmZp Z19tYWpvcl92ZXJzaW9uPWAkUEtHX0NPTkZJRyAtLW1vZHZlcnNpb24gZ2xp Yi0yLjAgfCBcCisgICAgICAgICAgIHNlZCAncy9cKDAtOSpcKS5cKDAtOSpc KS5cKDAtOSpcKS9cMS8nYAorICAgIGdsaWJfY29uZmlnX21pbm9yX3ZlcnNp b249YCRQS0dfQ09ORklHIC0tbW9kdmVyc2lvbiBnbGliLTIuMCB8IFwKKyAg ICAgICAgICAgc2VkICdzL1woMC05KlwpLlwoMC05KlwpLlwoMC05KlwpL1wy LydgCisgICAgZ2xpYl9jb25maWdfbWljcm9fdmVyc2lvbj1gJFBLR19DT05G SUcgLS1tb2R2ZXJzaW9uIGdsaWItMi4wIHwgXAorICAgICAgICAgICBzZWQg J3MvXCgwLTkqXCkuXCgwLTkqXCkuXCgwLTkqXCkvXDMvJ2AKKyAgICBpZiB0 ZXN0ICJ4JGVuYWJsZV9nbGlidGVzdCIgPSAieHllcyIgOyB0aGVuCisgICAg ICBhY19zYXZlX0NGTEFHUz0iJENGTEFHUyIKKyAgICAgIGFjX3NhdmVfTElC Uz0iJExJQlMiCisgICAgICBDRkxBR1M9IiRDRkxBR1MgJEdMSUJfQ0ZMQUdT IgorICAgICAgTElCUz0iJExJQlMgLWxiYWJlbHRyYWNlIC1sYmFiZWx0cmFj ZS1jdGYiCisgICAgICBybSAtZiBjb25mLmdsaWJ0ZXN0CisgICAgICBpZiB0 ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbiA6CisgICRhc19l Y2hvICRhY19uICJjcm9zcyBjb21waWxpbmc7IGFzc3VtZWQgT0suLi4gJGFj X2MiCitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0 ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworI2luY2x1 ZGUgPGJhYmVsdHJhY2UvYmFiZWx0cmFjZS5oPgorI2luY2x1ZGUgPGJhYmVs dHJhY2UvdHlwZXMuaD4KKyNpbmNsdWRlIDxiYWJlbHRyYWNlL2N0Zi9ldmVu dHMuaD4KKyNpbmNsdWRlIDxiYWJlbHRyYWNlL2N0Zi9pdGVyYXRvci5oPgor CitpbnQKK21haW4gKCkKK3sKKyAgaWYgKCFidF9jb250ZXh0X2NyZWF0ZSgp KQorICAgIHJldHVybiAxOworICByZXR1cm4gMDsKK30KKworX0FDRU9GCitp ZiBhY19mbl9jX3RyeV9ydW4gIiRMSU5FTk8iOyB0aGVuIDoKKworZWxzZQor ICBub19nbGliPXllcworZmkKK3JtIC1mIGNvcmUgKi5jb3JlIGNvcmUuY29u ZnRlc3QuKiBnbW9uLm91dCBiYi5vdXQgY29uZnRlc3QkYWNfZXhlZXh0IFwK KyAgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0 LiRhY19leHQKK2ZpCisKKyAgICAgICBDRkxBR1M9IiRhY19zYXZlX0NGTEFH UyIKKyAgICAgICBMSUJTPSIkYWNfc2F2ZV9MSUJTIgorICAgICBmaQorICBm aQorICBpZiB0ZXN0ICJ4JG5vX2dsaWIiID0geCA7IHRoZW4KKyAgICAgeyAk YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6 IHllcyAodmVyc2lvbiAkZ2xpYl9jb25maWdfbWFqb3JfdmVyc2lvbi4kZ2xp Yl9jb25maWdfbWlub3JfdmVyc2lvbi4kZ2xpYl9jb25maWdfbWljcm9fdmVy c2lvbikiID4mNQorJGFzX2VjaG8gInllcyAodmVyc2lvbiAkZ2xpYl9jb25m aWdfbWFqb3JfdmVyc2lvbi4kZ2xpYl9jb25maWdfbWlub3JfdmVyc2lvbi4k Z2xpYl9jb25maWdfbWljcm9fdmVyc2lvbikiID4mNjsgfQorCiskYXNfZWNo byAiI2RlZmluZSBIQVZFX0xJQkJBQkVMVFJBQ0UgMSIgPj5jb25mZGVmcy5o CisKKyAgICAgTElCUz0iLWxiYWJlbHRyYWNlIC1sYmFiZWx0cmFjZS1jdGYg JExJQlMiCisgICAgIENQUEZMQUdTPSIkQ1BQRkxBR1MgJEdMSUJfQ0ZMQUdT IgorICBlbHNlCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v LSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2 OyB9CisgICAgaWYgdGVzdCAiJFBLR19DT05GSUciID0gIm5vIiA7IHRoZW4K KyAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P fTogV0FSTklORzogKioqIEEgbmV3IGVub3VnaCB2ZXJzaW9uIG9mIHBrZy1j b25maWcgd2FzIG5vdCBmb3VuZC4iID4mNQorJGFzX2VjaG8gIiRhc19tZTog V0FSTklORzogKioqIEEgbmV3IGVub3VnaCB2ZXJzaW9uIG9mIHBrZy1jb25m aWcgd2FzIG5vdCBmb3VuZC4iID4mMjt9CisgICAgICB7ICRhc19lY2hvICIk YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6ICoqKiBTZWUg aHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvc29mdHdhcmUvcGtnY29uZmln LyIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiAqKiogU2VlIGh0 dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL3NvZnR3YXJlL3BrZ2NvbmZpZy8i ID4mMjt9CisgICAgZWxzZQorICAgICAgaWYgdGVzdCAtZiBjb25mLmdsaWJ0 ZXN0IDsgdGhlbgorICAgICAgICA6CisgICAgICBlbHNlCisgICAgICAgIHsg JGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklO RzogKioqIENvdWxkIG5vdCBydW4gR0xJQiBhbmQgbGliYmFiZWx0cmFjZSB0 ZXN0IHByb2dyYW0uIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6 ICoqKiBDb3VsZCBub3QgcnVuIEdMSUIgYW5kIGxpYmJhYmVsdHJhY2UgdGVz dCBwcm9ncmFtLiIgPiYyO30KKyAgICAgIGZpCisgICAgZmkKKyAgICBHTElC X0NGTEFHUz0iIgorICAgIEdMSUJfTElCUz0iIgorICAgIEdMSUJfR0VOTUFS U0hBTD0iIgorICAgIEdPQkpFQ1RfUVVFUlk9IiIKKyAgICBHTElCX01LRU5V TVM9IiIKKyAgICBHTElCX0NPTVBJTEVfUkVTT1VSQ0VTPSIiCisgICAgaWYg dGVzdCAiJGVuYWJsZV9jdGZfdGFyZ2V0IiA9ICJ5ZXMiOyB0aGVuCisgICAg ICBhc19mbl9lcnJvciAiZ2xpYiBhbmQgbGliYmFiZWx0cmFjZSBhcmUgcmVx dWlyZWQgaW4gb3JkZXIgdG8gZW5hYmxlIENURiB0YXJnZXQiICIkTElORU5P IiA1CisgICAgZWxzZQorICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNf bGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiBsaWJiYWJlbHRyYWNlIGlzIG1p c3Npbmcgb3IgdW51c2FibGU7IENURiB0YXJnZXQgaXMgdW5hdmFpbGFibGUu IiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IGxpYmJhYmVsdHJh Y2UgaXMgbWlzc2luZyBvciB1bnVzYWJsZTsgQ1RGIHRhcmdldCBpcyB1bmF2 YWlsYWJsZS4iID4mMjt9CisgICAgICBlbmFibGVfY3RmX3RhcmdldCA9IG5v CisgICAgZmkKKyAgZmkKKyAgcm0gLWYgY29uZi5nbGlidGVzdAorZmkKK2lm IHRlc3QgIiRlbmFibGVfY3RmX3RhcmdldCIgPSAibm8iOyB0aGVuCisgIDoK K2ZpCisKICMgSWYgbmF0aXZlZmlsZSAoTkFUX0ZJTEUpIGlzIG5vdCBzZXQg aW4gY29uZmlnLyovKi5tW2h0XSBmaWxlcywgd2UgbGluawogIyB0byBhbiBl bXB0eSB2ZXJzaW9uLgogCi0tLSBhL2NvbmZpZ3VyZS5hYworKysgYi9jb25m aWd1cmUuYWMKQEAgLTIzMDYsNiArMjMwNiwxMzQgQEAgaWYgdGVzdCAiJGVu YWJsZV9nZGJzZXJ2ZXIiID0gInllcyIgLWEgIgogICBBQ19NU0dfRVJST1Io QXV0b21hdGljIGdkYnNlcnZlciBidWlsZCBpcyBub3Qgc3VwcG9ydGVkIGZv ciB0aGlzIGNvbmZpZ3VyYXRpb24pCiBmaQogCitBQ19BUkdfRU5BQkxFKGN0 Zi10YXJnZXQsCitBU19IRUxQX1NUUklORyhbLS1lbmFibGUtY3RmLXRhcmdl dF0sCisgICAgICAgICAgICAgICBbZW5hYmxlIGN0ZiB0YXJnZXQgKHllcy9u by9hdXRvLCBkZWZhdWx0IGlzIGF1dG8pXSksCitbY2FzZSAiJHtlbmFibGV2 YWx9IiBpbgorICB5ZXN8IG5vfGF1dG8pIDs7CisgICopIEFDX01TR19FUlJP UihiYWQgdmFsdWUgJHtlbmFibGV2YWx9IGZvciAtLWVuYWJsZS1jdGYtdGFy Z2V0IG9wdGlvbikgOzsKK2VzYWNdLFtlbmFibGVfY3RmX3RhcmdldD1hdXRv XSkKKworaWYgdGVzdCAiJGVuYWJsZV9jdGZfdGFyZ2V0IiA9ICJ5ZXMiIHx8 IHRlc3QgIiRlbmFibGVfY3RmX3RhcmdldCIgPSAiYXV0byI7IHRoZW4KKyAg cGtnX2NvbmZpZ19hcmdzPWdsaWItMi4wCisgIGZvciBtb2R1bGUgaW4gLiBn bW9kdWxlCisgIGRvCisgICAgICBjYXNlICIkbW9kdWxlIiBpbgorICAgICAg ICAgZ21vZHVsZSkKKyAgICAgICAgICAgICBwa2dfY29uZmlnX2FyZ3M9IiRw a2dfY29uZmlnX2FyZ3MgZ21vZHVsZS0yLjAiCisgICAgICAgICA7OworICAg ICAgICAgZ21vZHVsZS1uby1leHBvcnQpCisgICAgICAgICAgICAgcGtnX2Nv bmZpZ19hcmdzPSIkcGtnX2NvbmZpZ19hcmdzIGdtb2R1bGUtbm8tZXhwb3J0 LTIuMCIKKyAgICAgICAgIDs7CisgICAgICAgICBnb2JqZWN0KQorICAgICAg ICAgICAgIHBrZ19jb25maWdfYXJncz0iJHBrZ19jb25maWdfYXJncyBnb2Jq ZWN0LTIuMCIKKyAgICAgICAgIDs7CisgICAgICAgICBndGhyZWFkKQorICAg ICAgICAgICAgIHBrZ19jb25maWdfYXJncz0iJHBrZ19jb25maWdfYXJncyBn dGhyZWFkLTIuMCIKKyAgICAgICAgIDs7CisgICAgICAgICBnaW8qKQorICAg ICAgICAgICAgIHBrZ19jb25maWdfYXJncz0iJHBrZ19jb25maWdfYXJncyAk bW9kdWxlLTIuMCIKKyAgICAgICAgIDs7CisgICAgICBlc2FjCisgIGRvbmUK KyAgUEtHX1BST0dfUEtHX0NPTkZJRygwLjE2KQorCisgIGlmIHRlc3QgIngk UEtHX0NPTkZJRyIgPSB4IDsgdGhlbgorICAgIG5vX2dsaWI9eWVzCisgICAg UEtHX0NPTkZJRz1ubworICBmaQorCisgIG1pbl9nbGliX3ZlcnNpb249Mi4y Mi4wCisgIEFDX01TR19DSEVDS0lORyhmb3IgR0xJQiAtIHZlcnNpb24gPj0g JG1pbl9nbGliX3ZlcnNpb24pCisKKyAgaWYgdGVzdCB4JFBLR19DT05GSUcg IT0geG5vIDsgdGhlbgorICAgIGVuYWJsZV9nbGlidGVzdD15ZXMKKyAgICAj IyBkb24ndCB0cnkgdG8gcnVuIHRoZSB0ZXN0IGFnYWluc3QgdW5pbnN0YWxs ZWQgbGlidG9vbCBsaWJzCisgICAgaWYgJFBLR19DT05GSUcgLS11bmluc3Rh bGxlZCAkcGtnX2NvbmZpZ19hcmdzOyB0aGVuCisgICAgICBBQ19NU0dfV0FS TihbV2lsbCB1c2UgdW5pbnN0YWxsZWQgdmVyc2lvbiBvZiBHTGliIGZvdW5k IGluIFBLR19DT05GSUdfUEFUSF0pCisgICAgICBlbmFibGVfZ2xpYnRlc3Q9 bm8KKyAgICBmaQorICAgIGlmICRQS0dfQ09ORklHIC0tYXRsZWFzdC12ZXJz aW9uICRtaW5fZ2xpYl92ZXJzaW9uICRwa2dfY29uZmlnX2FyZ3M7IHRoZW4K KyAgICAgIDoKKyAgICBlbHNlCisgICAgICBub19nbGliPXllcworICAgIGZp CisgIGZpCisKKyAgaWYgdGVzdCB4IiRub19nbGliIiA9IHggOyB0aGVuCisg ICAgR0xJQl9HRU5NQVJTSEFMPWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPWds aWJfZ2VubWFyc2hhbCBnbGliLTIuMGAKKyAgICBHT0JKRUNUX1FVRVJZPWAk UEtHX0NPTkZJRyAtLXZhcmlhYmxlPWdvYmplY3RfcXVlcnkgZ2xpYi0yLjBg CisgICAgR0xJQl9NS0VOVU1TPWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPWds aWJfbWtlbnVtcyBnbGliLTIuMGAKKyAgICBHTElCX0NPTVBJTEVfUkVTT1VS Q0VTPWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPWdsaWJfY29tcGlsZV9yZXNv dXJjZXMgZ2lvLTIuMGAKKworICAgIEdMSUJfQ0ZMQUdTPWAkUEtHX0NPTkZJ RyAtLWNmbGFncyAkcGtnX2NvbmZpZ19hcmdzYAorICAgIEdMSUJfTElCUz1g JFBLR19DT05GSUcgLS1saWJzICRwa2dfY29uZmlnX2FyZ3NgCisgICAgZ2xp Yl9jb25maWdfbWFqb3JfdmVyc2lvbj1gJFBLR19DT05GSUcgLS1tb2R2ZXJz aW9uIGdsaWItMi4wIHwgXAorICAgICAgICAgICBzZWQgJ3MvXChbMC05XSpc KS5cKFswLTldKlwpLlwoWzAtOV0qXCkvXDEvJ2AKKyAgICBnbGliX2NvbmZp Z19taW5vcl92ZXJzaW9uPWAkUEtHX0NPTkZJRyAtLW1vZHZlcnNpb24gZ2xp Yi0yLjAgfCBcCisgICAgICAgICAgIHNlZCAncy9cKFswLTldKlwpLlwoWzAt OV0qXCkuXChbMC05XSpcKS9cMi8nYAorICAgIGdsaWJfY29uZmlnX21pY3Jv X3ZlcnNpb249YCRQS0dfQ09ORklHIC0tbW9kdmVyc2lvbiBnbGliLTIuMCB8 IFwKKyAgICAgICAgICAgc2VkICdzL1woWzAtOV0qXCkuXChbMC05XSpcKS5c KFswLTldKlwpL1wzLydgCisgICAgaWYgdGVzdCAieCRlbmFibGVfZ2xpYnRl c3QiID0gInh5ZXMiIDsgdGhlbgorICAgICAgYWNfc2F2ZV9DRkxBR1M9IiRD RkxBR1MiCisgICAgICBhY19zYXZlX0xJQlM9IiRMSUJTIgorICAgICAgQ0ZM QUdTPSIkQ0ZMQUdTICRHTElCX0NGTEFHUyIKKyAgICAgIExJQlM9IiRMSUJT IC1sYmFiZWx0cmFjZSAtbGJhYmVsdHJhY2UtY3RmIgorICAgICAgcm0gLWYg Y29uZi5nbGlidGVzdAorICAgICAgQUNfVFJZX1JVTihbCisjaW5jbHVkZSA8 YmFiZWx0cmFjZS9iYWJlbHRyYWNlLmg+CisjaW5jbHVkZSA8YmFiZWx0cmFj ZS90eXBlcy5oPgorI2luY2x1ZGUgPGJhYmVsdHJhY2UvY3RmL2V2ZW50cy5o PgorI2luY2x1ZGUgPGJhYmVsdHJhY2UvY3RmL2l0ZXJhdG9yLmg+CisKK2lu dAorbWFpbiAoKQoreworICBpZiAoIWJ0X2NvbnRleHRfY3JlYXRlKCkpCisg ICAgcmV0dXJuIDE7CisgIHJldHVybiAwOworfQorXSwsIG5vX2dsaWI9eWVz LFskYXNfZWNobyAkYWNfbiAiY3Jvc3MgY29tcGlsaW5nOyBhc3N1bWVkIE9L Li4uICRhY19jIl0pCisgICAgICAgQ0ZMQUdTPSIkYWNfc2F2ZV9DRkxBR1Mi CisgICAgICAgTElCUz0iJGFjX3NhdmVfTElCUyIKKyAgICAgZmkKKyAgZmkK KyAgaWYgdGVzdCAieCRub19nbGliIiA9IHggOyB0aGVuCisgICAgIEFDX01T R19SRVNVTFQoeWVzICh2ZXJzaW9uICRnbGliX2NvbmZpZ19tYWpvcl92ZXJz aW9uLiRnbGliX2NvbmZpZ19taW5vcl92ZXJzaW9uLiRnbGliX2NvbmZpZ19t aWNyb192ZXJzaW9uKSkKKyAgICAgQUNfREVGSU5FKEhBVkVfTElCQkFCRUxU UkFDRSwgMSwgW0RlZmluZSBpZiB5b3UgaGF2ZSB0aGUgJDEgbGlicmFyeS5d KQorICAgICBMSUJTPSItbGJhYmVsdHJhY2UgLWxiYWJlbHRyYWNlLWN0ZiAk TElCUyIKKyAgICAgQ1BQRkxBR1M9IiRDUFBGTEFHUyAkR0xJQl9DRkxBR1Mi CisgIGVsc2UKKyAgICBBQ19NU0dfUkVTVUxUKG5vKQorICAgIGlmIHRlc3Qg IiRQS0dfQ09ORklHIiA9ICJubyIgOyB0aGVuCisgICAgICBBQ19NU0dfV0FS TihbKioqIEEgbmV3IGVub3VnaCB2ZXJzaW9uIG9mIHBrZy1jb25maWcgd2Fz IG5vdCBmb3VuZC5dKQorICAgICAgQUNfTVNHX1dBUk4oWyoqKiBTZWUgaHR0 cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvc29mdHdhcmUvcGtnY29uZmlnL10p CisgICAgZWxzZQorICAgICAgaWYgdGVzdCAtZiBjb25mLmdsaWJ0ZXN0IDsg dGhlbgorICAgICAgICA6CisgICAgICBlbHNlCisgICAgICAgIEFDX01TR19X QVJOKFsqKiogQ291bGQgbm90IHJ1biBHTElCIGFuZCBsaWJiYWJlbHRyYWNl IHRlc3QgcHJvZ3JhbS5dKQorICAgICAgZmkKKyAgICBmaQorICAgIEdMSUJf Q0ZMQUdTPSIiCisgICAgR0xJQl9MSUJTPSIiCisgICAgR0xJQl9HRU5NQVJT SEFMPSIiCisgICAgR09CSkVDVF9RVUVSWT0iIgorICAgIEdMSUJfTUtFTlVN Uz0iIgorICAgIEdMSUJfQ09NUElMRV9SRVNPVVJDRVM9IiIKKyAgICBpZiB0 ZXN0ICIkZW5hYmxlX2N0Zl90YXJnZXQiID0gInllcyI7IHRoZW4KKyAgICAg IEFDX01TR19FUlJPUihbZ2xpYiBhbmQgbGliYmFiZWx0cmFjZSBhcmUgcmVx dWlyZWQgaW4gb3JkZXIgdG8gZW5hYmxlIENURiB0YXJnZXRdKQorICAgIGVs c2UKKyAgICAgIEFDX01TR19XQVJOKFtsaWJiYWJlbHRyYWNlIGlzIG1pc3Np bmcgb3IgdW51c2FibGU7IENURiB0YXJnZXQgaXMgdW5hdmFpbGFibGUuXSkK KyAgICAgIGVuYWJsZV9jdGZfdGFyZ2V0ID0gbm8KKyAgICBmaQorICBmaQor ICBybSAtZiBjb25mLmdsaWJ0ZXN0CitmaQoraWYgdGVzdCAiJGVuYWJsZV9j dGZfdGFyZ2V0IiA9ICJubyI7IHRoZW4KKyAgOgorZmkKKwogIyBJZiBuYXRp dmVmaWxlIChOQVRfRklMRSkgaXMgbm90IHNldCBpbiBjb25maWcvKi8qLm1b aHRdIGZpbGVzLCB3ZSBsaW5rCiAjIHRvIGFuIGVtcHR5IHZlcnNpb24uCiAK LS0tIGEvY3RmLmMKKysrIGIvY3RmLmMKQEAgLTEyMTAsMyArMTIxMCw0NTUg QEAgVHJhY2VmcmFtZSAlZCBpcyBkcm9wcGVkIGJlY2F1c2UgdHlwZSBvZgog CiAgIGRvX2NsZWFudXBzIChvbGRfY2hhaW4pOwogfQorCisjaWZkZWYgSEFW RV9MSUJCQUJFTFRSQUNFCisjaW5jbHVkZSA8YmFiZWx0cmFjZS9iYWJlbHRy YWNlLmg+CisjaW5jbHVkZSA8YmFiZWx0cmFjZS90eXBlcy5oPgorI2luY2x1 ZGUgPGJhYmVsdHJhY2UvY3RmL2V2ZW50cy5oPgorI2luY2x1ZGUgPGJhYmVs dHJhY2UvY3RmL2l0ZXJhdG9yLmg+CisKK3N0YXRpYyBzdHJ1Y3QgYnRfY29u dGV4dCAqY3R4ID0gTlVMTDsKK3N0YXRpYyBzdHJ1Y3QgYnRfY3RmX2l0ZXIg Kml0ZXIgPSBOVUxMOworc3RhdGljIGludCBjdXJyZW50X3RwOworc3RhdGlj IHN0cnVjdCBidF9jdGZfZXZlbnQgKmN0Zl9ldmVudDsKKworc3RhdGljIHN0 cnVjdCB0YXJnZXRfb3BzIGN0Zl9vcHM7CisKK3N0YXRpYyB2b2lkCitidF9j dGZfY2xvc2UgKHZvaWQpCit7CisgIGlmIChpdGVyKQorICAgIHsKKyAgICAg IGJ0X2N0Zl9pdGVyX2Rlc3Ryb3kgKGl0ZXIpOworICAgICAgaXRlciA9IE5V TEw7CisgICAgfQorICBpZiAoY3R4KQorICAgIHsKKyAgICAgIGJ0X2NvbnRl eHRfcHV0IChjdHgpOworICAgICAgY3R4ID0gTlVMTDsKKyAgICB9Cit9CisK K3N0YXRpYyB2b2lkCitidF9jdGZfb3BlbiAoY2hhciAqZGlybmFtZSkKK3sK KyAgaW50IHJldDsKKyAgc3RydWN0IGJ0X2l0ZXJfcG9zIGJlZ2luX3BvczsK KworICBjdHggPSBidF9jb250ZXh0X2NyZWF0ZSgpOworICBpZiAoIWN0eCkK KyAgICBlcnJvciAoXygiVHJ5IHRvIHVzZSBsaWJiYWJlbHRyYWNlIGdvdCBl cnJvciIpKTsKKyAgcmV0ID0gYnRfY29udGV4dF9hZGRfdHJhY2UoY3R4LCBk aXJuYW1lLCAiY3RmIiwgTlVMTCwgTlVMTCwgTlVMTCk7CisgIGlmIChyZXQg PCAwKQorICAgIHsKKyAgICAgIGJ0X2N0Zl9jbG9zZSAoKTsKKyAgICAgIGVy cm9yIChfKCJUcnkgdG8gb3BlbiBcIiVzXCIgZ290IGVycm9yIiksIGRpcm5h bWUpOworICAgIH0KKworICBiZWdpbl9wb3MudHlwZSA9IEJUX1NFRUtfQkVH SU47CisgIGl0ZXIgPSBidF9jdGZfaXRlcl9jcmVhdGUoY3R4LCAmYmVnaW5f cG9zLCBOVUxMKTsKKyAgaWYgKCFpdGVyKQorICAgIHsKKyAgICAgIGJ0X2N0 Zl9jbG9zZSAoKTsKKyAgICAgIGVycm9yIChfKCJUcnkgdG8gb3BlbiBcIiVz XCIgZ290IGVycm9yIiksIGRpcm5hbWUpOworICAgIH0KKworICBjdXJyZW50 X3RwID0gMDsKKyAgY3RmX2V2ZW50ID0gYnRfY3RmX2l0ZXJfcmVhZF9ldmVu dChpdGVyKTsKKyAgaWYgKCFjdGZfZXZlbnQpCisgICAgeworICAgICAgYnRf Y3RmX2Nsb3NlICgpOworICAgICAgZXJyb3IgKF8oIlRyeSB0byBvcGVuIFwi JXNcIiBnb3QgZXJyb3IiKSwgZGlybmFtZSk7CisgICAgfQorfQorCitzdGF0 aWMgY29uc3Qgc3RydWN0IGRlZmluaXRpb24gKgorYnRfY3RmX2ZpbmRfZmll bGQgKGNvbnN0IHN0cnVjdCBkZWZpbml0aW9uICpkLCBjb25zdCBjaGFyICpu YW1lKQoreworICBzdHJ1Y3QgZGVmaW5pdGlvbiBjb25zdCAqIGNvbnN0ICps aXN0X2Q7CisgIHVuc2lnbmVkIGludCBsaXN0X2RfY291bnQsIGk7CisKKyAg aWYgKGJ0X2N0Zl9nZXRfZmllbGRfbGlzdCAoY3RmX2V2ZW50LCBkLCAmbGlz dF9kLCAmbGlzdF9kX2NvdW50KSkKKyAgICByZXR1cm4gTlVMTDsKKyAgZm9y IChpID0gMDsgaSA8IGxpc3RfZF9jb3VudDsgaSsrKQorICAgIHsKKyAgICAg IGlmIChzdHJjbXAgKGJ0X2N0Zl9maWVsZF9uYW1lKGxpc3RfZFtpXSksIG5h bWUpID09IDApCisJcmV0dXJuIGxpc3RfZFtpXTsKKyAgICB9CisKKyAgcmV0 dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBpbnQKK2J0X2N0Zl9ldmVudF9pZCAo aW50ICp0cHApCit7CisgIGNvbnN0IHN0cnVjdCBkZWZpbml0aW9uICp0b3Bf ZDsKKyAgc3RydWN0IGRlZmluaXRpb24gY29uc3QgKiBjb25zdCAqbGlzdF9k OworICB1bnNpZ25lZCBpbnQgbGlzdF9kX2NvdW50LCBpOworICBjb25zdCBz dHJ1Y3QgZGVmaW5pdGlvbiAqZF9pZCA9IE5VTEw7CisgIGNvbnN0IHN0cnVj dCBkZWZpbml0aW9uICpkX3YgPSBOVUxMOworCisgIHRvcF9kID0gYnRfY3Rm X2dldF90b3BfbGV2ZWxfc2NvcGUoY3RmX2V2ZW50LCBCVF9TVFJFQU1fRVZF TlRfSEVBREVSKTsKKyAgaWYgKCF0b3BfZCkKKyAgICByZXR1cm4gLTE7Cisg IGlmIChidF9jdGZfZ2V0X2ZpZWxkX2xpc3QgKGN0Zl9ldmVudCwgdG9wX2Qs ICZsaXN0X2QsICZsaXN0X2RfY291bnQpKQorICAgIHJldHVybiAtMTsKKwor ICBmb3IgKGkgPSAwOyBpIDwgbGlzdF9kX2NvdW50OyBpKyspCisgICAgewor ICAgICAgaWYgKHN0cmNtcCAoYnRfY3RmX2ZpZWxkX25hbWUobGlzdF9kW2ld KSwgImlkIikgPT0gMCkKKwlkX2lkID0gbGlzdF9kW2ldOworICAgICAgZWxz ZSBpZiAoc3RyY21wIChidF9jdGZfZmllbGRfbmFtZShsaXN0X2RbaV0pLCAi diIpID09IDApCisJZF92ID0gbGlzdF9kW2ldOworICAgICAgaWYgKGRfaWQg JiYgZF92KQorCWJyZWFrOworICAgIH0KKyAgaWYgKCFkX2lkKQorICAgIHJl dHVybiAtMTsKKworZ2V0dmFsOgorICBzd2l0Y2ggKGJ0X2N0Zl9maWVsZF90 eXBlIChidF9jdGZfZ2V0X2RlY2xfZnJvbV9kZWYgKGRfaWQpKSkKKyAgICB7 CisgICAgY2FzZSBDVEZfVFlQRV9JTlRFR0VSOgorICAgICAgeworCWludDY0 X3QgdmFsOworCisJaWYgKGdldF9pbnRfc2lnbmVkbmVzcyhkX2lkKSkKKwkg IHZhbCA9IGJ0X2N0Zl9nZXRfaW50NjQgKGRfaWQpOworCWVsc2UKKwkgIHZh bCA9IGJ0X2N0Zl9nZXRfdWludDY0IChkX2lkKTsKKwlpZiAodmFsIDwgSU5U X01JTiB8fCB2YWwgPiBJTlRfTUFYKQorCSAgeworCSAgICB3YXJuaW5nIChf KCJ0cmFjZXBvaW50IGlkIGlzIHRvbyBiaWcgb3IgdG9vIHNtYWxsLiIpKTsK KwkgICAgcmV0dXJuIC0xOworCSAgfQorCSp0cHAgPSAoaW50KSB2YWw7Cisg ICAgICB9CisgICAgICBicmVhazsKKworICAgIGNhc2UgQ1RGX1RZUEVfRU5V TToKKyAgICAgIGlmIChzdHJjbXAgKGJ0X2N0Zl9nZXRfZW51bV9zdHIgKGRf aWQpLCAiY29tcGFjdCIpID09IDApCisJZF9pZCA9IGJ0X2N0Zl9nZXRfZW51 bV9pbnQgKGRfaWQpOworICAgICAgZWxzZQorCXsKKwkgIGlmICghZF92KQor CSAgICByZXR1cm4gLTE7CisJICBpZiAoYnRfY3RmX2ZpZWxkX3R5cGUgKGJ0 X2N0Zl9nZXRfZGVjbF9mcm9tX2RlZiAoZF92KSkKKwkgICAgICAhPSBDVEZf VFlQRV9WQVJJQU5UKQorCSAgICByZXR1cm4gLTE7CisKKwkgIGRfdiA9IGJ0 X2N0Zl9maW5kX2ZpZWxkIChkX3YsICJleHRlbmRlZCIpOworCSAgaWYgKCFk X3YpCisJICAgIHJldHVybiAtMTsKKwkgIGlmIChidF9jdGZfZmllbGRfdHlw ZSAoYnRfY3RmX2dldF9kZWNsX2Zyb21fZGVmIChkX3YpKQorCSAgICAgICE9 IENURl9UWVBFX1NUUlVDVCkKKwkgICAgcmV0dXJuIC0xOworCSAgZF9pZCA9 IGJ0X2N0Zl9maW5kX2ZpZWxkIChkX3YsICJpZCIpOworCSAgaWYgKCFkX2lk KQorCSAgICByZXR1cm4gLTE7CisJfQorCWdvdG8gZ2V0dmFsOworICAgICAg YnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgd2FybmluZyAoXygidHlw ZSBvZiB0cmFjZXBvaW50IGlkIGlzIG5vdCBzdXBwb3J0LiIpKTsKKyAgICAg IHJldHVybiAtMTsKKyAgICAgIGJyZWFrOworICAgIH0KKworICByZXR1cm4g MDsKK30KKworc3RhdGljIHN0cnVjdCB2YWx1ZSAqCitidF9jdGZfZGVmX3Rv X3ZhbCAoY29uc3Qgc3RydWN0IGRlZmluaXRpb24gKmRlZikKK3sKKyAgc3Ry dWN0IHZhbHVlICpyZXQgPSBOVUxMOworCisgIGlmICghZGVmKQorICAgIHJl dHVybiByZXQ7CisKKyAgLyogWFhYOiBzb21lIHR5cGVzIGFyZSBub3Qgc3Vw cG9ydC4gICovCisgIHN3aXRjaCAoYnRfY3RmX2ZpZWxkX3R5cGUgKGJ0X2N0 Zl9nZXRfZGVjbF9mcm9tX2RlZiAoZGVmKSkpCisgICAgeworICAgIGNhc2Ug Q1RGX1RZUEVfSU5URUdFUjoKKyAgICAgIGlmIChnZXRfaW50X3NpZ25lZG5l c3MoZGVmKSkKKwl7CisJICBpbnQ2NF90IHZhbDsKKwkgIHZhbCA9IGJ0X2N0 Zl9nZXRfaW50NjQgKGRlZik7CisJICByZXQgPSB2YWx1ZV9mcm9tX2xvbmdl c3QKKwkJICAgIChidWlsdGluX3R5cGUgKHRhcmdldF9nZGJhcmNoICgpKS0+ YnVpbHRpbl9pbnQ2NCwgdmFsKTsKKwl9CisgICAgICBlbHNlCisJeworCSAg dWludDY0X3QgdmFsOworCSAgdmFsID0gYnRfY3RmX2dldF91aW50NjQgKGRl Zik7CisJICByZXQgPSB2YWx1ZV9mcm9tX2xvbmdlc3QKKwkJICAgIChidWls dGluX3R5cGUgKHRhcmdldF9nZGJhcmNoICgpKS0+YnVpbHRpbl91aW50NjQs IHZhbCk7CisJfQorICAgICAgYnJlYWs7CisKKyAgICBjYXNlIENURl9UWVBF X0VOVU06CisgICAgICByZXQgPSBidF9jdGZfZGVmX3RvX3ZhbCAoYnRfY3Rm X2dldF9lbnVtX2ludCAoZGVmKSk7CisgICAgICBicmVhazsKKyAgICB9CisK KyAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludAorYnRfY3RmX2V2ZW50 X3RvX2ludGVybmFsdmFyICh2b2lkKQoreworICBjb25zdCBzdHJ1Y3QgZGVm aW5pdGlvbiAqdG9wX2Q7CisgIHN0cnVjdCBkZWZpbml0aW9uIGNvbnN0ICog Y29uc3QgKmxpc3RfZDsKKyAgdW5zaWduZWQgaW50IGxpc3RfZF9jb3VudCwg aTsKKworICB0b3BfZCA9IGJ0X2N0Zl9nZXRfdG9wX2xldmVsX3Njb3BlKGN0 Zl9ldmVudCwgQlRfRVZFTlRfRklFTERTKTsKKyAgaWYgKCF0b3BfZCkKKyAg ICByZXR1cm4gLTE7CisgIGlmIChidF9jdGZfZ2V0X2ZpZWxkX2xpc3QgKGN0 Zl9ldmVudCwgdG9wX2QsICZsaXN0X2QsICZsaXN0X2RfY291bnQpKQorICAg IHJldHVybiAtMTsKKworICBmb3IgKGkgPSAwOyBpIDwgbGlzdF9kX2NvdW50 OyBpKyspCisgICAgeworICAgICAgc3RydWN0IHZhbHVlICp2YWw7CisgICAg ICBjb25zdCBjaGFyICpuYW1lOworCisgICAgICB2YWwgPSBidF9jdGZfZGVm X3RvX3ZhbCAobGlzdF9kW2ldKTsKKyAgICAgIG5hbWUgPSBidF9jdGZfZmll bGRfbmFtZSAobGlzdF9kW2ldKTsKKyAgICAgIGlmICh2YWwpCisgICAgICAg IHNldF9pbnRlcm5hbHZhciAobG9va3VwX2ludGVybmFsdmFyIChuYW1lKSwg dmFsKTsKKyAgICAgIGVsc2UKKwl3YXJuaW5nIChfKCIkJXMgaXMgbm90IHN1 cHBvcnQuIiksIG5hbWUpOworICAgIH0KKworICByZXR1cm4gMDsKK30KKwor c3RhdGljIGludAorYnRfY3RmX2dvdG9fYmVnaW4gKHZvaWQpCit7CisgIHN0 cnVjdCBidF9pdGVyX3BvcyBwb3M7CisKKyAgcG9zLnR5cGUgPSBCVF9TRUVL X0JFR0lOOworICBpZiAoYnRfaXRlcl9zZXRfcG9zKGJ0X2N0Zl9nZXRfaXRl ciAoaXRlciksICZwb3MpKQorICAgIHJldHVybiAtMTsKKyAgY3VycmVudF90 cCA9IDA7CisgIGN0Zl9ldmVudCA9IGJ0X2N0Zl9pdGVyX3JlYWRfZXZlbnQo aXRlcik7CisgIGlmICghY3RmX2V2ZW50KQorICAgIHJldHVybiAtMTsKKwor ICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorYnRfY3RmX2ZpbmRfbnVt IChpbnQgbnVtLCBpbnQgKnRwcCkKK3sKKyAgaWYgKG51bSA8IGN1cnJlbnRf dHApCisgICAgeworICAgICAgaWYgKGJ0X2N0Zl9nb3RvX2JlZ2luICgpKQor CXJldHVybiAtMTsKKyAgICB9CisKKyAgd2hpbGUgKDEpCisgICAgeworICAg ICAgaWYgKGN1cnJlbnRfdHAgPT0gbnVtKQorICAgICAgICBicmVhazsKKyAg ICAgIGlmIChidF9pdGVyX25leHQgKGJ0X2N0Zl9nZXRfaXRlciAoaXRlcikp IDwgMCkKKwlyZXR1cm4gLTE7CisgICAgICBjdGZfZXZlbnQgPSBidF9jdGZf aXRlcl9yZWFkX2V2ZW50KGl0ZXIpOworICAgICAgaWYgKCFjdGZfZXZlbnQp CisgICAgICAgIHsKKwkgIGJ0X2N0Zl9nb3RvX2JlZ2luICgpOworCSAgcmV0 dXJuIC0xOworCX0KKyAgICAgICsrY3VycmVudF90cDsKKyAgICB9CisKKyAg aWYgKHRwcCkKKyAgICB7CisgICAgICBpZiAoYnRfY3RmX2V2ZW50X2lkICh0 cHApKQorICAgICAgICB7CisJICB3YXJuaW5nIChfKCJnZXQgdHJhY2Vwb2lu dCBpZCBmYWlsLiIpKTsKKyAgICAgICAgICAqdHBwID0gSU5UX01JTjsKKwl9 CisgICAgfQorCisgIHJldHVybiBjdXJyZW50X3RwOworfQorCitzdGF0aWMg aW50CitidF9jdGZfZmluZF90cCAoaW50IHRwKQoreworICB3aGlsZSAoMSkK KyAgICB7CisgICAgICBpbnQgaWQ7CisKKyAgICAgIGlmIChidF9pdGVyX25l eHQgKGJ0X2N0Zl9nZXRfaXRlciAoaXRlcikpIDwgMCkKKwlyZXR1cm4gLTE7 CisgICAgICBjdGZfZXZlbnQgPSBidF9jdGZfaXRlcl9yZWFkX2V2ZW50KGl0 ZXIpOworICAgICAgaWYgKCFjdGZfZXZlbnQpCisgICAgICAgIHsKKwkgIGJ0 X2N0Zl9nb3RvX2JlZ2luICgpOworCSAgcmV0dXJuIC0xOworCX0KKyAgICAg ICsrY3VycmVudF90cDsKKyAgICAgIGlmIChidF9jdGZfZXZlbnRfaWQgKCZp ZCkpCisgICAgICAgIHdhcm5pbmcgKF8oImdldCB0cmFjZXBvaW50IGlkIGZh aWwuIikpOworICAgICAgZWxzZSBpZiAoaWQgPT0gdHApCisJYnJlYWs7Cisg ICAgfQorCisgIHJldHVybiBjdXJyZW50X3RwOworfQorCitzdGF0aWMgdm9p ZAorY3RmX29wZW4gKGNoYXIgKmRpcm5hbWUsIGludCBmcm9tX3R0eSkKK3sK KyAgdGFyZ2V0X3ByZW9wZW4gKGZyb21fdHR5KTsKKyAgaWYgKCFkaXJuYW1l KQorICAgIGVycm9yIChfKCJObyBDVEYgZGlyZWN0b3J5IHNwZWNpZmllZC4i KSk7CisKKyAgYnRfY3RmX29wZW4gKGRpcm5hbWUpOworCisgIHB1c2hfdGFy Z2V0ICgmY3RmX29wcyk7Cit9CisKK3N0YXRpYyB2b2lkCitjdGZfY2xvc2Ug KGludCBxdWl0dGluZykKK3sKKyAgYnRfY3RmX2Nsb3NlICgpOworfQorCitz dGF0aWMgaW50CitjdGZfdHJhY2VfZmluZCAoZW51bSB0cmFjZV9maW5kX3R5 cGUgdHlwZSwgaW50IG51bSwKKwkJVUxPTkdFU1QgYWRkcjEsIFVMT05HRVNU IGFkZHIyLCBpbnQgKnRwcCkKK3sKKyAgaW50IHJldCA9IC0xOworCisgIHN3 aXRjaCAodHlwZSkKKyAgICB7CisgICAgY2FzZSB0ZmluZF9udW1iZXI6Cisg ICAgICBpZiAobnVtIDwgMCkKKyAgICAgICAgeworCSAgaWYgKHRwcCkKKwkg ICAgKnRwcCA9IC0xOworCX0KKyAgICAgIGVsc2UKKyAgICAgICAgcmV0ID0g YnRfY3RmX2ZpbmRfbnVtIChudW0sIHRwcCk7CisgICAgICBicmVhazsKKwor ICAgIGNhc2UgdGZpbmRfdHA6CisgICAgICByZXQgPSBidF9jdGZfZmluZF90 cCAobnVtKTsKKyAgICAgIGJyZWFrOworICAgIH0KKworICBpZiAocmV0ID49 IDApCisgICAgeworICAgICAgaWYgKGJ0X2N0Zl9ldmVudF90b19pbnRlcm5h bHZhciAoKSkKKwl3YXJuaW5nIChfKCJhZGQgaW50ZXJuYWwgdmFyIG9mIHRo aXMgZnJhbWUgZmFpbC4iKSk7CisgICAgfQorCisgIHJldHVybiByZXQ7Cit9 CisKK3N0YXRpYyBjb25zdCBjaGFyICoKK2N0Zl9nZXRfY3VycmVudF90cmFj ZXBvaW50X25hbWUgKHZvaWQpCit7CisgIGlmIChjdGZfZXZlbnQpCisgICAg cmV0dXJuIGJ0X2N0Zl9ldmVudF9uYW1lIChjdGZfZXZlbnQpOworCisgIHJl dHVybiBOVUxMOworfQorCitleHRlcm4gdm9pZCBvdXRwdXRfY29tbWFuZCAo Y2hhciAqLCBpbnQpOworCitzdGF0aWMgaW50CitjdGZfdHJhY2VfZHVtcCAo aW50IGZyb21fdHR5KQoreworICBjb25zdCBzdHJ1Y3QgZGVmaW5pdGlvbiAq dG9wX2Q7CisgIHN0cnVjdCBkZWZpbml0aW9uIGNvbnN0ICogY29uc3QgKmxp c3RfZDsKKyAgdW5zaWduZWQgaW50IGxpc3RfZF9jb3VudCwgaTsKKworICBp ZiAoIWN0Zl9ldmVudCkKKyAgICByZXR1cm4gMTsKKworICB0b3BfZCA9IGJ0 X2N0Zl9nZXRfdG9wX2xldmVsX3Njb3BlKGN0Zl9ldmVudCwgQlRfRVZFTlRf RklFTERTKTsKKyAgaWYgKCF0b3BfZCkKKyAgICByZXR1cm4gMTsKKyAgaWYg KGJ0X2N0Zl9nZXRfZmllbGRfbGlzdCAoY3RmX2V2ZW50LCB0b3BfZCwgJmxp c3RfZCwgJmxpc3RfZF9jb3VudCkpCisgICAgcmV0dXJuIDE7CisKKyAgZm9y IChpID0gMDsgaSA8IGxpc3RfZF9jb3VudDsgaSsrKQorICAgIHsKKyAgICAg IGNoYXIgbmFtZVsyNTZdOworICAgICAgc25wcmludGYgKG5hbWUsIDI1Niwg IiQlcyIsIGJ0X2N0Zl9maWVsZF9uYW1lIChsaXN0X2RbaV0pKTsKKyAgICAg IHByaW50Zl9maWx0ZXJlZCAoIiVzID0gIiwgbmFtZSk7CisgICAgICBvdXRw dXRfY29tbWFuZCAobmFtZSwgZnJvbV90dHkpOworICAgICAgcHJpbnRmX2Zp bHRlcmVkICgiXG4iKTsKKyAgICB9CisKKyAgcmV0dXJuIDE7Cit9CisKK3N0 YXRpYyBpbnQKK2N0Zl9oYXNfYWxsX21lbW9yeSAoc3RydWN0IHRhcmdldF9v cHMgKm9wcykKK3sKKyAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK2N0 Zl9oYXNfbWVtb3J5IChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3BzKQoreworICBy ZXR1cm4gMDsKK30KKworc3RhdGljIGludAorY3RmX2hhc19zdGFjayAoc3Ry dWN0IHRhcmdldF9vcHMgKm9wcykKK3sKKyAgcmV0dXJuIDA7Cit9CisKK3N0 YXRpYyBpbnQKK2N0Zl9oYXNfcmVnaXN0ZXJzIChzdHJ1Y3QgdGFyZ2V0X29w cyAqb3BzKQoreworICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorY3Rm X3RocmVhZF9hbGl2ZSAoc3RydWN0IHRhcmdldF9vcHMgKm9wcywgcHRpZF90 IHB0aWQpCit7CisgIHJldHVybiAxOworfQorCitzdGF0aWMgdm9pZAoraW5p dF9jdGZfb3BzICh2b2lkKQoreworICBjdGZfb3BzLnRvX3Nob3J0bmFtZSA9 ICJjdGYiOworICBjdGZfb3BzLnRvX2xvbmduYW1lID0gIkNURiBmaWxlIjsK KyAgY3RmX29wcy50b19kb2MgPSAiVXNlIGEgQ1RGIGRpcmVjdG9yeSBhcyBh IHRhcmdldC5cblwKK1NwZWNpZnkgdGhlIGZpbGVuYW1lIG9mIHRoZSBDVEYg ZGlyZWN0b3J5LiI7CisgIGN0Zl9vcHMudG9fb3BlbiA9IGN0Zl9vcGVuOwor ICBjdGZfb3BzLnRvX2Nsb3NlID0gY3RmX2Nsb3NlOworICBjdGZfb3BzLnRv X3RyYWNlX2ZpbmQgPSBjdGZfdHJhY2VfZmluZDsKKyAgY3RmX29wcy50b19n ZXRfY3VycmVudF90cmFjZXBvaW50X25hbWUgPSBjdGZfZ2V0X2N1cnJlbnRf dHJhY2Vwb2ludF9uYW1lOworICBjdGZfb3BzLnRvX3RyYWNlX2R1bXAgPSBj dGZfdHJhY2VfZHVtcDsKKyAgY3RmX29wcy50b19zdHJhdHVtID0gcHJvY2Vz c19zdHJhdHVtOworICBjdGZfb3BzLnRvX2hhc19hbGxfbWVtb3J5ID0gY3Rm X2hhc19hbGxfbWVtb3J5OworICBjdGZfb3BzLnRvX2hhc19tZW1vcnkgPSBj dGZfaGFzX21lbW9yeTsKKyAgY3RmX29wcy50b19oYXNfc3RhY2sgPSBjdGZf aGFzX3N0YWNrOworICBjdGZfb3BzLnRvX2hhc19yZWdpc3RlcnMgPSBjdGZf aGFzX3JlZ2lzdGVyczsKKyAgY3RmX29wcy50b190aHJlYWRfYWxpdmUgPSBj dGZfdGhyZWFkX2FsaXZlOworICBjdGZfb3BzLnRvX21hZ2ljID0gT1BTX01B R0lDOworfQorCitleHRlcm4gdm9pZCBfaW5pdGlhbGl6ZV9jdGYgKHZvaWQp OworCisvKiBtb2R1bGUgaW5pdGlhbGl6YXRpb24gKi8KK3ZvaWQKK19pbml0 aWFsaXplX2N0ZiAodm9pZCkKK3sKKyAgaW5pdF9jdGZfb3BzICgpOworCisg IGFkZF90YXJnZXQgKCZjdGZfb3BzKTsKK30KKyNlbmRpZgotLS0gYS9nZGJ0 eXBlcy5jCisrKyBiL2dkYnR5cGVzLmMKQEAgLTEyODAsNyArMTI4MCw3IEBA IGxvb2t1cF91bmlvbiAoY29uc3QgY2hhciAqbmFtZSwgc3RydWN0IGIKICAg IHZpc2libGUgaW4gbGV4aWNhbCBibG9jayBCTE9DSy4gICovCiAKIHN0cnVj dCB0eXBlICoKLWxvb2t1cF9lbnVtIChjb25zdCBjaGFyICpuYW1lLCBzdHJ1 Y3QgYmxvY2sgKmJsb2NrKQorbG9va3VwX2VudW1fZ2RiIChjb25zdCBjaGFy ICpuYW1lLCBzdHJ1Y3QgYmxvY2sgKmJsb2NrKQogewogICBzdHJ1Y3Qgc3lt Ym9sICpzeW07CiAKLS0tIGEvcHl0aG9uL3B5LXR5cGUuYworKysgYi9weXRo b24vcHktdHlwZS5jCkBAIC03MjQsNyArNzI0LDcgQEAgdHlweV9sb29rdXBf dHlwZW5hbWUgKGNvbnN0IGNoYXIgKnR5cGVfbgogICAgICAgZWxzZSBpZiAo IXN0cm5jbXAgKHR5cGVfbmFtZSwgInVuaW9uICIsIDYpKQogCXR5cGUgPSBs b29rdXBfdW5pb24gKHR5cGVfbmFtZSArIDYsIE5VTEwpOwogICAgICAgZWxz ZSBpZiAoIXN0cm5jbXAgKHR5cGVfbmFtZSwgImVudW0gIiwgNSkpCi0JdHlw ZSA9IGxvb2t1cF9lbnVtICh0eXBlX25hbWUgKyA1LCBOVUxMKTsKKwl0eXBl ID0gbG9va3VwX2VudW1fZ2RiICh0eXBlX25hbWUgKyA1LCBOVUxMKTsKICAg ICAgIGVsc2UKIAl0eXBlID0gbG9va3VwX3R5cGVuYW1lIChweXRob25fbGFu Z3VhZ2UsIHB5dGhvbl9nZGJhcmNoLAogCQkJCXR5cGVfbmFtZSwgYmxvY2ss IDApOwotLS0gYS9zeW10YWIuaAorKysgYi9zeW10YWIuaApAQCAtOTg0LDcg Kzk4NCw3IEBAIGV4dGVybiBzdHJ1Y3QgdHlwZSAqbG9va3VwX3N0cnVjdCAo Y29uc3QKIAogZXh0ZXJuIHN0cnVjdCB0eXBlICpsb29rdXBfdW5pb24gKGNv bnN0IGNoYXIgKiwgc3RydWN0IGJsb2NrICopOwogCi1leHRlcm4gc3RydWN0 IHR5cGUgKmxvb2t1cF9lbnVtIChjb25zdCBjaGFyICosIHN0cnVjdCBibG9j ayAqKTsKK2V4dGVybiBzdHJ1Y3QgdHlwZSAqbG9va3VwX2VudW1fZ2RiIChj b25zdCBjaGFyICosIHN0cnVjdCBibG9jayAqKTsKIAogLyogZnJvbSBibG9j a2ZyYW1lLmM6ICovCiAKLS0tIGEvdGFyZ2V0LmMKKysrIGIvdGFyZ2V0LmMK QEAgLTY5NCw2ICs2OTQsOCBAQCB1cGRhdGVfY3VycmVudF90YXJnZXQgKHZv aWQpCiAgICAgICBJTkhFUklUICh0b19zZXRfZGlzY29ubmVjdGVkX3RyYWNp bmcsIHQpOwogICAgICAgSU5IRVJJVCAodG9fc2V0X2NpcmN1bGFyX3RyYWNl X2J1ZmZlciwgdCk7CiAgICAgICBJTkhFUklUICh0b19zZXRfdHJhY2Vfbm90 ZXMsIHQpOworICAgICAgSU5IRVJJVCAodG9fZ2V0X2N1cnJlbnRfdHJhY2Vw b2ludF9uYW1lLCB0KTsKKyAgICAgIElOSEVSSVQgKHRvX3RyYWNlX2R1bXAs IHQpOwogICAgICAgSU5IRVJJVCAodG9fZ2V0X3RpYl9hZGRyZXNzLCB0KTsK ICAgICAgIElOSEVSSVQgKHRvX3NldF9wZXJtaXNzaW9ucywgdCk7CiAgICAg ICBJTkhFUklUICh0b19zdGF0aWNfdHJhY2Vwb2ludF9tYXJrZXJfYXQsIHQp OwpAQCAtOTE1LDYgKzkxNywxMiBAQCB1cGRhdGVfY3VycmVudF90YXJnZXQg KHZvaWQpCiAgIGRlX2ZhdWx0ICh0b19zZXRfdHJhY2Vfbm90ZXMsCiAJICAg IChpbnQgKCopIChjaGFyICosIGNoYXIgKiwgY2hhciAqKSkKIAkgICAgcmV0 dXJuX3plcm8pOworICBkZV9mYXVsdCAodG9fZ2V0X2N1cnJlbnRfdHJhY2Vw b2ludF9uYW1lLAorCSAgICAoY29uc3QgY2hhciAqKCopICh2b2lkKSkKKwkg ICAgcmV0dXJuX3plcm8pOworICBkZV9mYXVsdCAodG9fdHJhY2VfZHVtcCwK KwkgICAgKGludCAoKikgKGludCkpCisJICAgIHJldHVybl96ZXJvKTsKICAg ZGVfZmF1bHQgKHRvX2dldF90aWJfYWRkcmVzcywKIAkgICAgKGludCAoKikg KHB0aWRfdCwgQ09SRV9BRERSICopKQogCSAgICB0Y29tcGxhaW4pOwotLS0g YS90YXJnZXQuaAorKysgYi90YXJnZXQuaApAQCAtODExLDYgKzgxMSwxMCBA QCBzdHJ1Y3QgdGFyZ2V0X29wcwogICAgICAgIHN1Y2Nlc3NmdWwsIDAgb3Ro ZXJ3aXNlLiAgKi8KICAgICBpbnQgKCp0b19zZXRfdHJhY2Vfbm90ZXMpIChj aGFyICp1c2VyLCBjaGFyICpub3RlcywgY2hhciogc3RvcG5vdGVzKTsKIAor ICAgIGNvbnN0IGNoYXIgKigqdG9fZ2V0X2N1cnJlbnRfdHJhY2Vwb2ludF9u YW1lKSAodm9pZCk7CisKKyAgICBpbnQgKCp0b190cmFjZV9kdW1wKSAoaW50 IGZyb21fdHR5KTsKKwogICAgIC8qIFJldHVybiB0aGUgcHJvY2Vzc29yIGNv cmUgdGhhdCB0aHJlYWQgUFRJRCB3YXMgbGFzdCBzZWVuIG9uLgogICAgICAg IFRoaXMgaW5mb3JtYXRpb24gaXMgdXBkYXRlZCBvbmx5IHdoZW46CiAgICAg ICAgLSB1cGRhdGVfdGhyZWFkX2xpc3QgaXMgY2FsbGVkCkBAIC0xNzAwLDYg KzE3MDQsMTIgQEAgZXh0ZXJuIGNoYXIgKnRhcmdldF9maWxlaW9fcmVhZF9z dHJhbGxvYwogI2RlZmluZQl0YXJnZXRfc2V0X3RyYWNlX25vdGVzKHVzZXIs bm90ZXMsc3RvcG5vdGVzKQkJXAogICAoKmN1cnJlbnRfdGFyZ2V0LnRvX3Nl dF90cmFjZV9ub3RlcykgKCh1c2VyKSwgKG5vdGVzKSwgKHN0b3Bub3Rlcykp CiAKKyNkZWZpbmUgdGFyZ2V0X2dldF9jdXJyZW50X3RyYWNlcG9pbnRfbmFt ZSgpIFwKKygqY3VycmVudF90YXJnZXQudG9fZ2V0X2N1cnJlbnRfdHJhY2Vw b2ludF9uYW1lKSAoKQorCisjZGVmaW5lIHRhcmdldF90cmFjZV9kdW1wKGZy b21fdHR5KSBcCisoKmN1cnJlbnRfdGFyZ2V0LnRvX3RyYWNlX2R1bXApIChm cm9tX3R0eSkKKwogI2RlZmluZSB0YXJnZXRfZ2V0X3RpYl9hZGRyZXNzKHB0 aWQsIGFkZHIpIFwKICAgKCpjdXJyZW50X3RhcmdldC50b19nZXRfdGliX2Fk ZHJlc3MpICgocHRpZCksIChhZGRyKSkKIAotLS0gYS90cmFjZXBvaW50LmMK KysrIGIvdHJhY2Vwb2ludC5jCkBAIC0yMjQzLDcgKzIyNDMsNyBAQCB0Zmlu ZF8xIChlbnVtIHRyYWNlX2ZpbmRfdHlwZSB0eXBlLCBpbnQKICAgICAgYmVs b3cgKGNvcnJlY3RseSkgZGVjaWRlIHRvIHByaW50IG91dCB0aGUgc291cmNl IGxvY2F0aW9uIG9mIHRoZQogICAgICB0cmFjZSBmcmFtZS4gICovCiAgIGlm ICghKHR5cGUgPT0gdGZpbmRfbnVtYmVyICYmIG51bSA9PSAtMSkKLSAgICAg ICYmIChoYXNfc3RhY2tfZnJhbWVzICgpIHx8IHRyYWNlZnJhbWVfbnVtYmVy ID49IDApKQorICAgICAgJiYgaGFzX3N0YWNrX2ZyYW1lcyAoKSkKICAgICBv bGRfZnJhbWVfaWQgPSBnZXRfZnJhbWVfaWQgKGdldF9jdXJyZW50X2ZyYW1l ICgpKTsKIAogICB0YXJnZXRfZnJhbWVubyA9IHRhcmdldF90cmFjZV9maW5k ICh0eXBlLCBudW0sIGFkZHIxLCBhZGRyMiwKQEAgLTIyOTQsNyArMjI5NCw4 IEBAIHRmaW5kXzEgKGVudW0gdHJhY2VfZmluZF90eXBlIHR5cGUsIGludAog ICAKICAgdHAgPSBnZXRfdHJhY2Vwb2ludF9ieV9udW1iZXJfb25fdGFyZ2V0 ICh0YXJnZXRfdHJhY2VwdCk7CiAKLSAgcmVpbml0X2ZyYW1lX2NhY2hlICgp OworICBpZiAoaGFzX3N0YWNrX2ZyYW1lcyAoKSkKKyAgICByZWluaXRfZnJh bWVfY2FjaGUgKCk7CiAgIHRhcmdldF9kY2FjaGVfaW52YWxpZGF0ZSAoKTsK IAogICBzZXRfdHJhY2Vwb2ludF9udW0gKHRwID8gdHAtPmJhc2UubnVtYmVy IDogdGFyZ2V0X3RyYWNlcHQpOwpAQCAtMjMwNCwxMCArMjMwNSwxMyBAQCB0 ZmluZF8xIChlbnVtIHRyYWNlX2ZpbmRfdHlwZSB0eXBlLCBpbnQKIAogICBz ZXRfY3VycmVudF90cmFjZWZyYW1lICh0YXJnZXRfZnJhbWVubyk7CiAKLSAg aWYgKHRhcmdldF9mcmFtZW5vID09IC0xKQotICAgIHNldF90cmFjZWZyYW1l X2NvbnRleHQgKE5VTEwpOwotICBlbHNlCi0gICAgc2V0X3RyYWNlZnJhbWVf Y29udGV4dCAoZ2V0X2N1cnJlbnRfZnJhbWUgKCkpOworICBpZiAoaGFzX3N0 YWNrX2ZyYW1lcyAoKSkKKyAgICB7CisgICAgICBpZiAodGFyZ2V0X2ZyYW1l bm8gPT0gLTEpCisJc2V0X3RyYWNlZnJhbWVfY29udGV4dCAoTlVMTCk7Cisg ICAgICBlbHNlCisgICAgICAgIHNldF90cmFjZWZyYW1lX2NvbnRleHQgKGdl dF9jdXJyZW50X2ZyYW1lICgpKTsKKyAgICB9CiAKICAgaWYgKHRyYWNlZnJh bWVfbnVtYmVyID49IDApCiAgICAgewpAQCAtMjM0MSwyMSArMjM0NSwzMCBA QCB0ZmluZF8xIChlbnVtIHRyYWNlX2ZpbmRfdHlwZSB0eXBlLCBpbnQKICAg aWYgKGZyb21fdHR5CiAgICAgICAmJiAoaGFzX3N0YWNrX2ZyYW1lcyAoKSB8 fCB0cmFjZWZyYW1lX251bWJlciA+PSAwKSkKICAgICB7Ci0gICAgICBlbnVt IHByaW50X3doYXQgcHJpbnRfd2hhdDsKKyAgICAgIGNvbnN0IGNoYXIgKnRw X25hbWU7CiAKLSAgICAgIC8qIE5PVEU6IGluIGltaXRhdGlvbiBvZiB0aGUg c3RlcCBjb21tYW5kLCB0cnkgdG8gZGV0ZXJtaW5lCi0gICAgICAgICB3aGV0 aGVyIHdlIGhhdmUgbWFkZSBhIHRyYW5zaXRpb24gZnJvbSBvbmUgZnVuY3Rp b24gdG8KLSAgICAgICAgIGFub3RoZXIuICBJZiBzbywgd2UnbGwgcHJpbnQg dGhlICJzdGFjayBmcmFtZSIgKGllLiB0aGUgbmV3Ci0gICAgICAgICBmdW5j dGlvbiBhbmQgaXQncyBhcmd1bWVudHMpIC0tIG90aGVyd2lzZSB3ZSdsbCBq dXN0IHNob3cgdGhlCi0gICAgICAgICBuZXcgc291cmNlIGxpbmUuICAqLwor ICAgICAgdHBfbmFtZSA9IHRhcmdldF9nZXRfY3VycmVudF90cmFjZXBvaW50 X25hbWUgKCk7CisgICAgICBpZiAodHBfbmFtZSkKKyAgICAgICAgcHJpbnRm X2ZpbHRlcmVkICgiJXNcbiIsIHRwX25hbWUpOwogCi0gICAgICBpZiAoZnJh bWVfaWRfZXEgKG9sZF9mcmFtZV9pZCwKLQkJICAgICAgIGdldF9mcmFtZV9p ZCAoZ2V0X2N1cnJlbnRfZnJhbWUgKCkpKSkKLQlwcmludF93aGF0ID0gU1JD X0xJTkU7Ci0gICAgICBlbHNlCi0JcHJpbnRfd2hhdCA9IFNSQ19BTkRfTE9D OworICAgICAgaWYgKGhhc19zdGFja19mcmFtZXMgKCkpCisgICAgICAgIHsK KwkgIGVudW0gcHJpbnRfd2hhdCBwcmludF93aGF0OwogCi0gICAgICBwcmlu dF9zdGFja19mcmFtZSAoZ2V0X3NlbGVjdGVkX2ZyYW1lIChOVUxMKSwgMSwg cHJpbnRfd2hhdCk7CisJICAvKiBOT1RFOiBpbiBpbWl0YXRpb24gb2YgdGhl IHN0ZXAgY29tbWFuZCwgdHJ5IHRvIGRldGVybWluZQorICAgICAgICAgICB3 aGV0aGVyIHdlIGhhdmUgbWFkZSBhIHRyYW5zaXRpb24gZnJvbSBvbmUgZnVu Y3Rpb24gdG8KKyAgICAgICAgICAgYW5vdGhlci4gIElmIHNvLCB3ZSdsbCBw cmludCB0aGUgInN0YWNrIGZyYW1lIiAoaWUuIHRoZSBuZXcKKyAgICAgICAg ICAgZnVuY3Rpb24gYW5kIGl0J3MgYXJndW1lbnRzKSAtLSBvdGhlcndpc2Ug d2UnbGwganVzdCBzaG93IHRoZQorICAgICAgICAgICBuZXcgc291cmNlIGxp bmUuICAqLworCisJICBpZiAoZnJhbWVfaWRfZXEgKG9sZF9mcmFtZV9pZCwK KwkJCSAgIGdldF9mcmFtZV9pZCAoZ2V0X2N1cnJlbnRfZnJhbWUgKCkpKSkK KwkgICAgcHJpbnRfd2hhdCA9IFNSQ19MSU5FOworCSAgZWxzZQorCSAgICBw cmludF93aGF0ID0gU1JDX0FORF9MT0M7CisKKwkgIHByaW50X3N0YWNrX2Zy YW1lIChnZXRfc2VsZWN0ZWRfZnJhbWUgKE5VTEwpLCAxLCBwcmludF93aGF0 KTsKKwl9CiAgICAgICBkb19kaXNwbGF5cyAoKTsKICAgICB9CiB9CkBAIC0y ODg1LDYgKzI4OTgsOSBAQCB0cmFjZV9kdW1wX2NvbW1hbmQgKGNoYXIgKmFy Z3MsIGludCBmcm9tCiAgICAgICByZXR1cm47CiAgICAgfQogCisgIGlmICh0 YXJnZXRfdHJhY2VfZHVtcCAoZnJvbV90dHkpKQorICAgIHJldHVybjsKKwog ICB0ID0gZ2V0X3RyYWNlcG9pbnQgKHRyYWNlcG9pbnRfbnVtYmVyKTsKIAog ICBpZiAodCA9PSBOVUxMKQo= --0015175d072a113feb04cf77e264--