From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 14665 invoked by alias); 7 Jan 2013 21:22:08 -0000 Received: (qmail 14655 invoked by uid 22791); 7 Jan 2013 21:22:06 -0000 X-SWARE-Spam-Status: No, hits=-3.8 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,KAM_STOCKGEN,KHOP_RCVD_TRUST,RCVD_IN_DNSWL_LOW,RCVD_IN_HOSTKARMA_YE,RP_MATCHES_RCVD,TW_BJ,TW_FN,TW_JF,TW_RG,TW_XZ X-Spam-Check-By: sourceware.org Received: from mail-ea0-f179.google.com (HELO mail-ea0-f179.google.com) (209.85.215.179) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Mon, 07 Jan 2013 21:21:43 +0000 Received: by mail-ea0-f179.google.com with SMTP id i12so7815526eaa.38 for ; Mon, 07 Jan 2013 13:21:41 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:date:message-id:subject:from:to:cc:content-type :x-gm-message-state; bh=rSPTsPVsBfwGk3GzR+mWooQHtAKG8ACWeSvTFFAO018=; b=cW2KKzO1Nc1ZaP3JHaM0nd754xtF3PavzezWjCCqnlc2jsvu5qWztWABsexyA5fpCx W6wy+H70mKfEYtHNz9HdSx1y/8yozMOmwYrNBaMBrbtofOeraByL6SLPy2k99D8Q9c4t tq9jQPqCxj/vCV54jNLat6U2m7QF7CvMY5hT6AtzUjdTRgG6mQIxrtWIUJ6gvOcgGN76 ATlIZ1uf/fBB1N8jUOR8WiP/VzEk2FQj6WywLrKeQ/27H/QRMBpXKo5cYfIJgyHYZZ4J owtdIIAWmRh2YrpHzexh1boxEBk+KgGwAs9mGdbNNFjItFMfs7F0+e/Gwl7McZCTxShn Bdxw== MIME-Version: 1.0 Received: by 10.14.177.1 with SMTP id c1mr167355305eem.8.1357593700856; Mon, 07 Jan 2013 13:21:40 -0800 (PST) Received: by 10.14.205.196 with HTTP; Mon, 7 Jan 2013 13:21:40 -0800 (PST) Date: Mon, 07 Jan 2013 21:22:00 -0000 Message-ID: Subject: [RFC] Debug Methods in GDB Python From: Siva Chandra To: gdb-patches@sourceware.org Cc: Doug Evans Content-Type: multipart/mixed; boundary=047d7b621e0c49f20604d2b96a65 X-Gm-Message-State: ALoCoQkzZRCfB5Utt6aaxRzdB7bG0AXRPTorWd8gFPyOlcmfbvkrP17gVnoc0MyPN0YhoE49I03E1xaLgXxxXV6o3wCVDGWgs6nHflX72qRU5GB+0uPpAdHc8Pe/ZIxg89Pz7CgpZJS1Xh4hbtr+84/ZTJwdOcA4TAihOT/eLiW3Ev8DLnfXeG5XdPcuAbBcWAv4JYXM3NsNE90DAzfF6AlKMy9b4pKNkA== 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: 2013-01/txt/msg00119.txt.bz2 --047d7b621e0c49f20604d2b96a65 Content-Type: text/plain; charset=ISO-8859-1 Content-length: 2713 Hi all, This is a followup to the thread on debug operators here (last message): http://sourceware.org/ml/gdb-patches/2013-01/msg00005.html I am starting another thread as I now have, what I feel is, a fairly independent patch which implements a larger feature (of which C++ operator methods are a part), and some of the un-implemented features I have mentioned in my last post have been implemented. The patch is attached. Few points about the patch: 1. The patch is incomplete in the sense that tests and documentation are missing. Also, ways to enable and disable single or group of debug methods is missing. At this point, I am looking for feedback on my direction and the way I am intercepting the normal GDB flow to lookup methods defined in Python. I will work on completing the patch once there is an agreement on these basics. 2. I did not intend to provide a way for the user to define new or override static methods via Python. 3. I did not intend to provide a way for the user to define new virtual methods in Python. The user can however override existing virtual and non-virtual methods. The user can also define new non-virtual methods in Python. 4. Doug suggested that I use the C++ infrastructure in GDB as much as possible. I feel I have done so. 5. The Changelog for the patch (which is also raw) is as follows: 2013-01-07 Siva Chandra Reddy * Makefile.in: Add entries for new files * data-directory/Makefile.in: Add entry for new Python file * eval.c: Invoke methods defined in extension methods. * ext-function.c: Support for working with functions/methods defined in an extension language. * ext-function.h: Support for working with functions/methods defined in an extension language. * python/lib/gdb/debugmethods.py: Python side of the support for debug methods in Python. * python/py-debugmethods.c: C side of the support for debug methods in Python. * python/py-objfile.c: Add 'debug_methods' attribute to gdb.Objfile. * python/python-internal.h: Add new function gdb.enable_debug_methods to the Python module 'gdb'. * python/python.c: Add new function gdb.enable_debug_methods to the Python module 'gdb'. * python/python.h: Add declarations of new functions. * valarith.c: Invoke operators defined in extension languages. * valops.c: Lookup methods defined in extension languages. * value.h: New signature for 'find_overload_match'. 6. The toy program I used for testing, and the corresponding auto load script are also attached for illustration. Thanks and regards, Siva Chandra --047d7b621e0c49f20604d2b96a65 Content-Type: text/plain; charset=US-ASCII; name="dm_patch_v1.txt" Content-Disposition: attachment; filename="dm_patch_v1.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hbnz06d90 Content-length: 70378 ZGlmZiAtLWdpdCBhL2dkYi9NYWtlZmlsZS5pbiBiL2dkYi9NYWtlZmlsZS5p bgppbmRleCBiMDY1ZDQxLi43MTUwNzgxIDEwMDY0NAotLS0gYS9nZGIvTWFr ZWZpbGUuaW4KKysrIGIvZ2RiL01ha2VmaWxlLmluCkBAIC0yNzcsNiArMjc3 LDcgQEAgU1VCRElSX1BZVEhPTl9PQlMgPSBcCiAJcHktYnJlYWtwb2ludC5v IFwKIAlweS1jbWQubyBcCiAJcHktY29udGludWVldmVudC5vIFwKKwlweS1k ZWJ1Z21ldGhvZHMubyBcCiAJcHktZXZlbnQubyBcCiAJcHktZXZ0cmVnaXN0 cnkubyBcCiAJcHktZXZ0cy5vIFwKQEAgLTMxMCw2ICszMTEsNyBAQCBTVUJE SVJfUFlUSE9OX1NSQ1MgPSBcCiAJcHl0aG9uL3B5LWJyZWFrcG9pbnQuYyBc CiAJcHl0aG9uL3B5LWNtZC5jIFwKIAlweXRob24vcHktY29udGludWVldmVu dC5jIFwKKwlweXRob24vcHktZGVidWdtZXRob2RzLmMgXAogCXB5dGhvbi9w eS1ldmVudC5jIFwKIAlweXRob24vcHktZXZ0cmVnaXN0cnkuYyBcCiAJcHl0 aG9uL3B5LWV2dHMuYyBcCkBAIC03MTAsNyArNzEyLDcgQEAgU0ZJTEVTID0g YWRhLWV4cC55IGFkYS1sYW5nLmMgYWRhLXR5cGVwcmludC5jIGFkYS12YWxw cmludC5jIGFkYS10YXNrcy5jIFwKIAlkd2FyZjJleHByLmMgZHdhcmYybG9j LmMgZHdhcmYycmVhZC5jIGR3YXJmMi1mcmFtZS5jIFwKIAlkd2FyZjItZnJh bWUtdGFpbGNhbGwuYyBcCiAJZWxmcmVhZC5jIGVudmlyb24uYyBldmFsLmMg ZXZlbnQtbG9vcC5jIGV2ZW50LXRvcC5jIFwKLQlleGNlcHRpb25zLmMgZXhw cHJpbnQuYyBcCisJZXhjZXB0aW9ucy5jIGV4cHByaW50LmMgZXh0LWZ1bmN0 aW9uLmMgXAogCWYtZXhwLnkgZi1sYW5nLmMgZi10eXBlcHJpbnQuYyBmLXZh bHByaW50LmMgZmlsZXN5c3RlbS5jIFwKIAlmaW5kY21kLmMgZmluZHZhci5j IGZyYW1lLmMgZnJhbWUtYmFzZS5jIGZyYW1lLXVud2luZC5jIFwKIAlnZGJh cmNoLmMgYXJjaC11dGlscy5jIGdkYl9iZmQuYyBnZGJ0eXBlcy5jIGdudS12 Mi1hYmkuYyBnbnUtdjMtYWJpLmMgXApAQCAtODA4LDcgKzgxMCw3IEBAIGRv dWJsZXN0LmggcmVnc2V0LmggaHBwYS10ZGVwLmggcHBjLWxpbnV4LXRkZXAu aCByczYwMDAtdGRlcC5oIFwKIGNvbW1vbi9nZGJfbG9jYWxlLmggY29tbW9u L2dkYl9kaXJlbnQuaCBhcmNoLXV0aWxzLmggdHJhZC1mcmFtZS5oIGdudS1u YXQuaCBcCiBsYW5ndWFnZS5oIG5ic2QtdGRlcC5oIHNvbGliLXN2cjQuaCBc CiBtYWNyb2V4cC5oIHVpLWZpbGUuaCByZWdjYWNoZS5oIGdkYl9zdHJpbmcu aCB0cmFjZXBvaW50LmggaTM4Ni10ZGVwLmggXAotaW5mLWNoaWxkLmggcC1s YW5nLmggZXZlbnQtdG9wLmggZ2RidHlwZXMuaCB1c2VyLXJlZ3MuaCBcCitp bmYtY2hpbGQuaCBwLWxhbmcuaCBldmVudC10b3AuaCBleHQtZnVuY3Rpb24u aCBnZGJ0eXBlcy5oIHVzZXItcmVncy5oIFwKIHJlZ2Zvcm1hdHMvcmVnZGVm LmggY29uZmlnL2FscGhhL25tLW9zZjMuaCAgY29uZmlnL2kzODYvbm0taTM4 NmdudS5oIFwKIGNvbmZpZy9pMzg2L25tLWZic2QuaCBcCiBjb25maWcvbm0t bnRvLmggY29uZmlnL3NwYXJjL25tLXNvbDIuaCBjb25maWcvbm0tbGludXgu aCBcCkBAIC05MjIsNyArOTI0LDcgQEAgQ09NTU9OX09CUyA9ICQoREVQRklM RVMpICQoQ09ORklHX09CUykgJChZWU9CSikgXAogCWluZmVyaW9yLm8gb3Nk YXRhLm8gZ2RiX3VzbGVlcC5vIHJlY29yZC5vIGdjb3JlLm8gXAogCWdkYl92 ZWNzLm8gaml0Lm8gcHJvZ3NwYWNlLm8gc2tpcC5vIHByb2JlLm8gXAogCWNv bW1vbi11dGlscy5vIGJ1ZmZlci5vIHB0aWQubyBnZGItZGxmY24ubyBjb21t b24tYWdlbnQubyBcCi0JZm9ybWF0Lm8gcmVnaXN0cnkubworCWZvcm1hdC5v IHJlZ2lzdHJ5Lm8gZXh0LWZ1bmN0aW9uLm8KIAogVFNPQlMgPSBpbmZsb3cu bwogCkBAIC0yMDY1LDYgKzIwNjcsMTAgQEAgcHktY29udGludWVldmVudC5v OiAkKHNyY2RpcikvcHl0aG9uL3B5LWNvbnRpbnVlZXZlbnQuYwogCSQoQ09N UElMRSkgJChQWVRIT05fQ0ZMQUdTKSAkKHNyY2RpcikvcHl0aG9uL3B5LWNv bnRpbnVlZXZlbnQuYwogCSQoUE9TVENPTVBJTEUpCiAKK3B5LWRlYnVnbWV0 aG9kcy5vOiAkKHNyY2RpcikvcHl0aG9uL3B5LWRlYnVnbWV0aG9kcy5jCisJ JChDT01QSUxFKSAkKFBZVEhPTl9DRkxBR1MpICQoc3JjZGlyKS9weXRob24v cHktZGVidWdtZXRob2RzLmMKKwkkKFBPU1RDT01QSUxFKQorCiBweS1ldmVu dC5vOiAkKHNyY2RpcikvcHl0aG9uL3B5LWV2ZW50LmMKIAkkKENPTVBJTEUp ICQoUFlUSE9OX0NGTEFHUykgJChzcmNkaXIpL3B5dGhvbi9weS1ldmVudC5j CiAJJChQT1NUQ09NUElMRSkKZGlmZiAtLWdpdCBhL2dkYi9kYXRhLWRpcmVj dG9yeS9NYWtlZmlsZS5pbiBiL2dkYi9kYXRhLWRpcmVjdG9yeS9NYWtlZmls ZS5pbgppbmRleCBkOThhYzc3Li4wNGU1ZTUyIDEwMDY0NAotLS0gYS9nZGIv ZGF0YS1kaXJlY3RvcnkvTWFrZWZpbGUuaW4KKysrIGIvZ2RiL2RhdGEtZGly ZWN0b3J5L01ha2VmaWxlLmluCkBAIC01Niw2ICs1Niw3IEBAIFBZVEhPTl9G SUxFUyA9IFwKIAlnZGIvdHlwZXMucHkgXAogCWdkYi9wcmludGluZy5weSBc CiAJZ2RiL3Byb21wdC5weSBcCisJZ2RiL2RlYnVnbWV0aG9kcy5weSBcCiAJ Z2RiL2NvbW1hbmQvX19pbml0X18ucHkgXAogCWdkYi9jb21tYW5kL3R5cGVf cHJpbnRlcnMucHkgXAogCWdkYi9jb21tYW5kL3ByZXR0eV9wcmludGVycy5w eSBcCmRpZmYgLS1naXQgYS9nZGIvZXZhbC5jIGIvZ2RiL2V2YWwuYwppbmRl eCBjOTYzMGRmLi40NTg2YzkyIDEwMDY0NAotLS0gYS9nZGIvZXZhbC5jCisr KyBiL2dkYi9ldmFsLmMKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJz eW10YWIuaCIKICNpbmNsdWRlICJnZGJ0eXBlcy5oIgogI2luY2x1ZGUgInZh bHVlLmgiCisjaW5jbHVkZSAiZXh0LWZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAi ZXhwcmVzc2lvbi5oIgogI2luY2x1ZGUgInRhcmdldC5oIgogI2luY2x1ZGUg ImZyYW1lLmgiCkBAIC0xNTkzLDcgKzE1OTQsNyBAQCBldmFsdWF0ZV9zdWJl eHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKIAkJCSAg ICAgICAwLCAgICAgICAgICAvKiBzdHJpY3QgbWF0Y2ggKi8KICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMLCAvKiBwYXNzIE5V TEwgc3ltYm9sIHNpbmNlCiAJCQkJCSAgICAgIHN5bWJvbCBpcyB1bmtub3du ICovCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgJnN5 bXAsIE5VTEwsIDApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IE5VTEwsICZzeW1wLCBOVUxMLCBOVUxMLCAwKTsKIAogICAgICAgICAgIC8q IE5vdyBmaXggdGhlIGV4cHJlc3Npb24gYmVpbmcgZXZhbHVhdGVkLiAgKi8K ICAgICAgICAgICBleHAtPmVsdHNbc2F2ZV9wb3MxICsgMl0uc3ltYm9sID0g c3ltcDsKQEAgLTE2MjMsMTIgKzE2MjQsMTMgQEAgZXZhbHVhdGVfc3ViZXhw X3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCiAJICAgICAg LyogTGFuZ3VhZ2UgaXMgQysrLCBkbyBzb21lIG92ZXJsb2FkIHJlc29sdXRp b24gYmVmb3JlCiAJCSBldmFsdWF0aW9uLiAgKi8KIAkgICAgICBzdHJ1Y3Qg dmFsdWUgKnZhbHAgPSBOVUxMOworICAgICAgICAgICAgICBzdHJ1Y3QgZXh0 X2ZuX2Rlc2NyaXB0b3IgKmV4dF9mbnAgPSBOVUxMOwogCiAJICAgICAgKHZv aWQpIGZpbmRfb3ZlcmxvYWRfbWF0Y2ggKCZhcmd2ZWNbMV0sIG5hcmdzLCB0 c3RyLAogCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNRVRI T0QsIC8qIG1ldGhvZCAqLwogCQkJCQkgIDAsICAgICAgLyogc3RyaWN0IG1h dGNoICovCiAJCQkJCSAgJmFyZzIsICAvKiB0aGUgb2JqZWN0ICovCi0JCQkJ CSAgTlVMTCwgJnZhbHAsIE5VTEwsCisJCQkJCSAgTlVMTCwgJnZhbHAsIE5V TEwsICZleHRfZm5wLAogCQkJCQkgICZzdGF0aWNfbWVtZnVuY3AsIDApOwog CiAJICAgICAgaWYgKG9wID09IE9QX1NDT1BFICYmICFzdGF0aWNfbWVtZnVu Y3ApCkBAIC0xNjM4LDkgKzE2NDAsMTkgQEAgZXZhbHVhdGVfc3ViZXhwX3N0 YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCiAJCQkgICAiYHRo aXMnIHBvaW50ZXIiKSwKIAkJCSBmdW5jdGlvbl9uYW1lKTsKIAkJfQotCSAg ICAgIGFyZ3ZlY1sxXSA9IGFyZzI7CS8qIHRoZSBgYHRoaXMnJyBwb2ludGVy ICovCi0JICAgICAgYXJndmVjWzBdID0gdmFscDsJLyogVXNlIHRoZSBtZXRo b2QgZm91bmQgYWZ0ZXIgb3ZlcmxvYWQKLQkJCQkgICByZXNvbHV0aW9uLiAg Ki8KKworICAgICAgICAgICAgICBpZiAodmFscCkKKyAgICAgICAgICAgICAg ICB7CisgICAgICAgICAgICAgICAgICBhcmd2ZWNbMV0gPSBhcmcyOyAgICAg LyogdGhlIGBgdGhpcycnIHBvaW50ZXIgKi8KKyAgICAgICAgICAgICAgICAg IGFyZ3ZlY1swXSA9IHZhbHA7ICAgICAvKiBVc2UgdGhlIG1ldGhvZCBmb3Vu ZCBhZnRlciBvdmVybG9hZAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHJlc29sdXRpb24uICAqLworICAgICAgICAgICAg ICAgIH0KKyAgICAgICAgICAgICAgaWYgKGV4dF9mbnApCisgICAgICAgICAg ICAgICAgeworICAgICAgICAgICAgICAgICAgaWYgKGV4dF9mbnAtPmlzX21l dGhvZCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV4dF9mbl9pbnZv a2VfbWV0aG9kIChleHRfZm5wLCBhcmcyLCBhcmd2ZWMgKyAyLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5h cmdzIC0gMSk7CisgICAgICAgICAgICAgICAgfQogCSAgICB9CiAJICBlbHNl CiAJICAgIC8qIE5vbi1DKysgY2FzZSAtLSBvciBubyBvdmVybG9hZCByZXNv bHV0aW9uLiAgKi8KQEAgLTE3MDAsNyArMTcxMiw3IEBAIGV2YWx1YXRlX3N1 YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAogCSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOT05fTUVUSE9ELCAg Lyogbm90IG1ldGhvZCAqLwogCQkJCQkgIDAsICAgICAgICAgICAvKiBzdHJp Y3QgbWF0Y2ggKi8KIAkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgTlVMTCwgZnVuY3Rpb24sIC8qIHRoZSBmdW5jdGlvbiAqLwotCQkJCQkg IE5VTEwsICZzeW1wLCBOVUxMLCBub19hZGwpOworCQkJCQkgIE5VTEwsICZz eW1wLCBOVUxMLCBOVUxMLCBub19hZGwpOwogCiAJICAgICAgaWYgKG9wID09 IE9QX1ZBUl9WQUxVRSkKIAkJewpkaWZmIC0tZ2l0IGEvZ2RiL2V4dC1mdW5j dGlvbi5jIGIvZ2RiL2V4dC1mdW5jdGlvbi5jCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLmMzZjIyMTYKLS0tIC9kZXYvbnVsbAorKysg Yi9nZGIvZXh0LWZ1bmN0aW9uLmMKQEAgLTAsMCArMSwxNzAgQEAKKy8qIFN1 cHBvcnQgZm9yIGZ1bmN0aW9ucyBkZWZpbmVkIGluIGV4dGVuc2lvbiBsYW5n dWFnZXMuCisKKyAgIENvcHlyaWdodCAoQykgMjAxMyBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIEluYy4KKworICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Yg R0RCLgorCisgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICAgaXQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBhcyBwdWJsaXNoZWQgYnkKKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisg ICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICBU aGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwKKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICBN RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UuICBTZWUgdGhlCisgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICBZb3Ugc2hvdWxkIGhhdmUgcmVj ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZQorICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8 aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworCisjaW5jbHVk ZSAiZGVmcy5oIgorI2luY2x1ZGUgImV4dC1mdW5jdGlvbi5oIgorI2luY2x1 ZGUgInB5dGhvbi9weXRob24uaCIKKworc3RhdGljIFVMT05HRVNUIGVuYWJs ZWRfZXh0X2xhbmd1YWdlcyA9IEVYVF9MQU5HX1BZVEhPTjsKKworc3RydWN0 IGV4dF9mbl9kZXNjcmlwdG9yICoKK25ld19leHRfZnVuY3Rpb24gKHZvaWQp Cit7CisgIHN0cnVjdCBleHRfZm5fZGVzY3JpcHRvciAqZXh0X2ZuID0KKyAg ICAgKHN0cnVjdCBleHRfZm5fZGVzY3JpcHRvciAqKSB4emFsbG9jIChzaXpl b2YgKHN0cnVjdCBleHRfZm5fZGVzY3JpcHRvcikpOworCisgIGV4dF9mbi0+ bmV4dCA9IE5VTEw7CisgIGV4dF9mbi0+aXNfbWV0aG9kID0gMDsKKyAgZXh0 X2ZuLT5sYW5nID0gRVhUX0xBTkdfVU5LTk9XTjsKKyAgZXh0X2ZuLT5leHRf b2JqZWN0ID0gTlVMTDsKKworICByZXR1cm4gZXh0X2ZuOworfQorCit2b2lk CitleHRfZm5fbGlzdF9mcmVlIChzdHJ1Y3QgZXh0X2ZuX2Rlc2NyaXB0b3Ig Kmxpc3QpCit7CisgIHdoaWxlIChsaXN0KQorICAgIHsKKyAgICAgIHN0cnVj dCBleHRfZm5fZGVzY3JpcHRvciAqaXRlbSA9IGxpc3Q7CisKKyAgICAgIGxp c3QgPSBsaXN0LT5uZXh0OworCisgICAgICBpZiAoaXRlbS0+aXNfbWV0aG9k KQorICAgICAgICB7CisgICAgICAgICAgaWYgKGl0ZW0tPmxhbmcgPT0gRVhU X0xBTkdfUFlUSE9OKQorICAgICAgICAgICAgcHlfZnJlZV9leHRfb2JqZWN0 IChpdGVtLT5leHRfb2JqZWN0KTsKKyAgICAgICAgfQorCisgICAgICB4ZnJl ZSAoaXRlbSk7CisgICAgfQorfQorCitzdHJ1Y3QgZXh0X2ZuX2Rlc2NyaXB0 b3IgKgorZXh0X2ZuX2xpc3RfZXh0ZW5kIChzdHJ1Y3QgZXh0X2ZuX2Rlc2Ny aXB0b3IgKmwxLCBzdHJ1Y3QgZXh0X2ZuX2Rlc2NyaXB0b3IgKmwyKQorewor ICBzdHJ1Y3QgZXh0X2ZuX2Rlc2NyaXB0b3IgKml0ZW0gPSBsMTsKKworICBp ZiAoIWwxKQorICAgIHJldHVybiBsMjsKKworICB3aGlsZSAoaXRlbS0+bmV4 dCkKKyAgICBpdGVtID0gaXRlbS0+bmV4dDsKKworICBpdGVtLT5uZXh0ID0g bDI7CisKKyAgcmV0dXJuIGwxOworfQorCitzdHJ1Y3QgZXh0X2ZuX2Rlc2Ny aXB0b3IgKgorZXh0X2ZuX2xpc3RfcHJlcGVuZCAoc3RydWN0IGV4dF9mbl9k ZXNjcmlwdG9yICpsaXN0LAorICAgICAgICAgICAgICAgICAgICAgc3RydWN0 IGV4dF9mbl9kZXNjcmlwdG9yICppdGVtKQoreworICBzdHJ1Y3QgZXh0X2Zu X2Rlc2NyaXB0b3IgKmxhc3RfaXRlbTsKKyAgaWYgKCFsaXN0KQorICAgIHJl dHVybiBpdGVtOworCisgIGlmICghaXRlbSkKKyAgICByZXR1cm4gbGlzdDsK KworICBpdGVtLT5uZXh0ID0gbGlzdDsKKworICByZXR1cm4gaXRlbTsKK30K Kworc3RydWN0IGV4dF9mbl9kZXNjcmlwdG9yICoKK2V4dF9mbl9saXN0X3Jl bW92ZSAoc3RydWN0IGV4dF9mbl9kZXNjcmlwdG9yICpsaXN0LAorICAgICAg ICAgICAgICAgICAgICBzdHJ1Y3QgZXh0X2ZuX2Rlc2NyaXB0b3IgKml0ZW0p Cit7CisgIHN0cnVjdCBleHRfZm5fZGVzY3JpcHRvciAqcHJldl9pdGVtID0g TlVMTCwgKmhlYWQgPSBsaXN0OworCisgIHdoaWxlIChsaXN0KQorICAgIHsK KyAgICAgIGlmIChsaXN0ID09IGl0ZW0pCisgICAgICAgIHsKKyAgICAgICAg ICBpZiAocHJldl9pdGVtKQorICAgICAgICAgICAgeworICAgICAgICAgICAg ICBwcmV2X2l0ZW0tPm5leHQgPSBsaXN0LT5uZXh0OworICAgICAgICAgICAg ICBpdGVtLT5uZXh0ID0gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAg ICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGhlYWQgPSBs aXN0LT5uZXh0OworICAgICAgICAgICAgICBpdGVtLT5uZXh0ID0gTlVMTDsK KyAgICAgICAgICAgIH0KKworICAgICAgICAgIGJyZWFrOworICAgICAgICB9 CisKKyAgICAgIHByZXZfaXRlbSA9IGxpc3Q7CisgICAgICBsaXN0ID0gbGlz dC0+bmV4dDsKKyAgICB9CisKKyAgcmV0dXJuIGhlYWQ7Cit9CisKK3N0cnVj dCBleHRfZm5fZGVzY3JpcHRvciAqCitleHRfZm5fbGlzdF9nZXQgKHN0cnVj dCBleHRfZm5fZGVzY3JpcHRvciAqbGlzdCwgaW50IGluZGV4KQoreworICBp bnQgaSA9IDA7CisKKyAgd2hpbGUgKGxpc3QpCisgICAgeworICAgICAgaWYg KGkgPT0gaW5kZXgpCisgICAgICAgIHJldHVybiBsaXN0OworCisgICAgICBp Kys7CisgICAgICBsaXN0ID0gbGlzdC0+bmV4dDsKKyAgICB9CisKKyAgcmV0 dXJuIE5VTEw7Cit9CisKK3N0cnVjdCBleHRfZm5fZGVzY3JpcHRvciAqCitn ZXRfbWF0Y2hpbmdfZXh0X21ldGhvZHMgKHN0cnVjdCB0eXBlICp0eXBlLCBj b25zdCBjaGFyICptZXRob2QpCit7CisgIHN0cnVjdCBleHRfZm5fZGVzY3Jp cHRvciAqcHl0aG9uX21ldGhvZHMgPSBOVUxMOworCisgIGlmIChlbmFibGVk X2V4dF9sYW5ndWFnZXMgJiYgRVhUX0xBTkdfUFlUSE9OKQorICAgIHB5dGhv bl9tZXRob2RzID0gcHlfZGVidWdtZXRob2RfbmFtZV9tYXRjaCAodHlwZSwg bWV0aG9kKTsKKworICByZXR1cm4gcHl0aG9uX21ldGhvZHM7IAorfQorCitz dHJ1Y3QgdHlwZSAqKgorZXh0X2ZuX2dldF9hcmd0eXBlcyAoc3RydWN0IGV4 dF9mbl9kZXNjcmlwdG9yICpleHRfZm4sIGludCAqbmFyZ3MpCit7CisgIGlm ICgoZW5hYmxlZF9leHRfbGFuZ3VhZ2VzICYmIEVYVF9MQU5HX1BZVEhPTikK KyAgICAgICYmIChleHRfZm4tPmxhbmcgPT0gRVhUX0xBTkdfUFlUSE9OKSkK KyAgICByZXR1cm4gcHlfZXh0X2ZuX2dldF9hcmd0eXBlcyAoZXh0X2ZuLCBu YXJncyk7CisKKyAgKm5hcmdzID0gMDsKKyAgcmV0dXJuIE5VTEw7Cit9CisK K3N0cnVjdCB2YWx1ZSAqCitleHRfZm5faW52b2tlX21ldGhvZCAoc3RydWN0 IGV4dF9mbl9kZXNjcmlwdG9yICpleHRfZm4sIHN0cnVjdCB2YWx1ZSAqb2Jq LAorICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB2YWx1ZSAqKmFyZ3Ms IGludCBuYXJncykKK3sKKyAgaWYgKChlbmFibGVkX2V4dF9sYW5ndWFnZXMg JiYgRVhUX0xBTkdfUFlUSE9OKQorICAgICAgJiYgKGV4dF9mbi0+bGFuZyA9 PSBFWFRfTEFOR19QWVRIT04pKQorICAgIHJldHVybiBweV9leHRfZm5faW52 b2tlX21ldGhvZCAoZXh0X2ZuLCBvYmosIGFyZ3MsIG5hcmdzKTsKKworICBy ZXR1cm4gTlVMTDsKK30KZGlmZiAtLWdpdCBhL2dkYi9leHQtZnVuY3Rpb24u aCBiL2dkYi9leHQtZnVuY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi43Zjg3Y2I3Ci0tLSAvZGV2L251bGwKKysrIGIvZ2Ri L2V4dC1mdW5jdGlvbi5oCkBAIC0wLDAgKzEsNzEgQEAKKy8qIFN1cHBvcnQg Zm9yIGZ1bmN0aW9ucyBkZWZpbmVkIGluIGV4dGVuc2lvbiBsYW5ndWFnZXMu CisKKyAgIENvcHlyaWdodCAoQykgMjAxMyBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KKworICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0RCLgor CisgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICAgaXQgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBw dWJsaXNoZWQgYnkKKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247 IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisgICAoYXQg eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICBUaGlzIHBy b2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs IGJlIHVzZWZ1bCwKKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlCisgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig bW9yZSBkZXRhaWxzLgorCisgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg YSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAg YWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDov L3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworCisjaWYgIWRlZmluZWQg KEVYVF9GVU5DVElPTl9IKQorI2RlZmluZSBFWFRfRlVOQ1RJT05fSAorCitz dHJ1Y3QgdmFsdWU7CitzdHJ1Y3QgdHlwZTsKKworZW51bSBleHRfbGFuZwor IHsKKyAgIEVYVF9MQU5HX1VOS05PV04gPSAwLAorICAgLyogVmFsdWVzIGZv ciBleHRlbnNpb24gbGFuZ3VhZ2VzIGFyZSBwb3dlcnMgb2YgMi4gICovCisg ICBFWFRfTEFOR19HVUlMRSA9IDEsCisgICBFWFRfTEFOR19QWVRIT04gPSAy CisgICAvKiBOZXh0IGV4dGVuc2lvbiBsYW5ndWFnZSBzaG91bGQgaGF2ZSB2 YWx1ZSBvZiA0LiAgKi8KKyB9OworCitzdHJ1Y3QgZXh0X2ZuX2Rlc2NyaXB0 b3IKKyAgeworICAgIGVudW0gZXh0X2xhbmcgbGFuZzsKKworICAgIGludCBp c19tZXRob2Q7CisKKyAgICB2b2lkICpleHRfb2JqZWN0OworCisgICAgc3Ry dWN0IGV4dF9mbl9kZXNjcmlwdG9yICpuZXh0OworICB9OworCitleHRlcm4g c3RydWN0IHZhbHVlICpleHRfZm5faW52b2tlX21ldGhvZCAoc3RydWN0IGV4 dF9mbl9kZXNjcmlwdG9yICosCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc3RydWN0IHZhbHVlICosCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHZhbHVl ICoqLCBpbnQgbmFyZ3MpOworCitleHRlcm4gc3RydWN0IGV4dF9mbl9kZXNj cmlwdG9yICpleHRfZm5fbGlzdF9yZW1vdmUgKAorICAgIHN0cnVjdCBleHRf Zm5fZGVzY3JpcHRvciAqbGlzdCwgc3RydWN0IGV4dF9mbl9kZXNjcmlwdG9y ICppdGVtKTsKKworZXh0ZXJuIHN0cnVjdCBleHRfZm5fZGVzY3JpcHRvciAq ZXh0X2ZuX2xpc3RfZ2V0ICgKKyAgICBzdHJ1Y3QgZXh0X2ZuX2Rlc2NyaXB0 b3IgKmxpc3QsIGludCk7CisKK2V4dGVybiBzdHJ1Y3QgZXh0X2ZuX2Rlc2Ny aXB0b3IgKgorZXh0X2ZuX2xpc3RfZXh0ZW5kIChzdHJ1Y3QgZXh0X2ZuX2Rl c2NyaXB0b3IgKiwgc3RydWN0IGV4dF9mbl9kZXNjcmlwdG9yICopOworCitl eHRlcm4gc3RydWN0IGV4dF9mbl9kZXNjcmlwdG9yICpleHRfZm5fbGlzdF9w cmVwZW5kICgKKyAgICBzdHJ1Y3QgZXh0X2ZuX2Rlc2NyaXB0b3IgKmxpc3Qs IHN0cnVjdCBleHRfZm5fZGVzY3JpcHRvciAqaXRlbSk7CisKK2V4dGVybiB2 b2lkIGV4dF9mbl9saXN0X2ZyZWUgKHN0cnVjdCBleHRfZm5fZGVzY3JpcHRv ciAqbGlzdCk7CisKK2V4dGVybiBzdHJ1Y3QgZXh0X2ZuX2Rlc2NyaXB0b3Ig Km5ld19leHRfZnVuY3Rpb24gKHZvaWQpOworCitleHRlcm4gc3RydWN0IGV4 dF9mbl9kZXNjcmlwdG9yICpnZXRfbWF0Y2hpbmdfZXh0X21ldGhvZHMgKHN0 cnVjdCB0eXBlICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKik7CisK K2V4dGVybiBzdHJ1Y3QgdHlwZSAqKmV4dF9mbl9nZXRfYXJndHlwZXMgKHN0 cnVjdCBleHRfZm5fZGVzY3JpcHRvciAqLCBpbnQgKik7CisKKyNlbmRpZiAv KiBFWFRfRlVOQ1RJT05fSCAqLwpkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9s aWIvZ2RiL2RlYnVnbWV0aG9kcy5weSBiL2dkYi9weXRob24vbGliL2dkYi9k ZWJ1Z21ldGhvZHMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uOWQwYzcwNgotLS0gL2Rldi9udWxsCisrKyBiL2dkYi9weXRob24v bGliL2dkYi9kZWJ1Z21ldGhvZHMucHkKQEAgLTAsMCArMSwxMTMgQEAKKyMg UHl0aG9uIHNpZGUgb2YgdGhlIHN1cHBvcnQgZm9yIGRlYnVnIG1ldGhvZHMu CisjIENvcHlyaWdodCAoQykgMjAxMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4KKworIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorIyBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieQorIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgor IyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIworIyBU aGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZQorIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor IyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKworIiIiVXRpbGl0aWVzIGZv ciBhZGRpbmcgZGVidWcgbWV0aG9kcyIiIgorCitpbXBvcnQgZ2RiCitpbXBv cnQgcmUKKworREVGQVVMVF9ERUJVR19NRVRIT0RfR1JPVVAgPSAnREVGQVVM VF9ERUJVR19NRVRIT0RfR1JPVVAnCisKKworY2xhc3MgRGVidWdNZXRob2Qo b2JqZWN0KToKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBncm91 cD1ERUZBVUxUX0RFQlVHX01FVEhPRF9HUk9VUCk6CisgICAgICAgIHNlbGYu X25hbWUgPSBuYW1lCisgICAgICAgIHNlbGYuZ3JvdXAgPSBncm91cAorICAg ICAgICBzZWxmLmVuYWJsZWQgPSBUcnVlCisKKyAgICBAcHJvcGVydHkKKyAg ICBkZWYgbmFtZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX25hbWUK KworICAgIGRlZiBtYXRjaF9jbGFzcyhzZWxmLCBjbGFzc19uYW1lKToKKyAg ICAgICAgZ2RiLkdkYkVycm9yKCdFUlJPUjogSW52b2tpbmcgYWJzdHJhY3Qg bWV0aG9kIFwnbWF0Y2hfY2xhc3NcJy4nKQorCisgICAgZGVmIG1hdGNoX21l dGhvZChzZWxmLCBtZXRob2RfbmFtZSk6CisgICAgICAgIGdkYi5HZGJFcnJv cignRVJST1I6IEludm9raW5nIGFic3RyYWN0IG1ldGhvZCBcJ21hdGNoX21l dGhvZFwnLicpCisKKyAgICBkZWYgZ2V0X2FyZ3R5cGVzKHNlbGYsIGNsYXNz X3R5cGUsIG1ldGhvZF9uYW1lKToKKyAgICAgICAgZ2RiLkdkYkVycm9yKCdF UlJPUjogSW52b2tpbmcgYWJzdHJhY3QgbWV0aG9kIFwnZ2V0X2FyZ3R5cGVz XCcuJykKKworICAgIGRlZiBpbnZva2Uoc2VsZiwgb2JqLCAqYXJncyk6Cisg ICAgICAgIGdkYi5HZGJFcnJvcignRVJST1I6IEludm9raW5nIGFic3RyYWN0 IG1ldGhvZCBcJ2ludm9rZVwnLicpCisKKworY2xhc3MgU2ltcGxlRGVidWdN ZXRob2QoRGVidWdNZXRob2QpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBu YW1lLCBncm91cCwgbWV0aG9kX2Z1bmN0aW9uLCBjbGFzc19tYXRjaGVyLAor ICAgICAgICAgICAgICAgICBtZXRob2RfbWF0Y2hlciwgKmFyZ3R5cGVzKToK KyAgICAgICAgRGVidWdNZXRob2QuX19pbml0X18oc2VsZiwgbmFtZSwgZ3Jv dXApCisgICAgICAgIHNlbGYuX21ldGhvZF9mdW5jdGlvbiA9IG1ldGhvZF9m dW5jdGlvbgorICAgICAgICBzZWxmLl9jbGFzc19tYXRjaGVyID0gY2xhc3Nf bWF0Y2hlcgorICAgICAgICBzZWxmLl9tZXRob2RfbWF0Y2hlciA9IG1ldGhv ZF9tYXRjaGVyCisgICAgICAgIHNlbGYuX2FyZ3R5cGVzID0gYXJndHlwZXMK KworICAgIGRlZiBtYXRjaF9jbGFzcyhzZWxmLCBjbGFzc190eXBlKToKKyAg ICAgICAgaWYgcmUubWF0Y2goc2VsZi5fY2xhc3NfbWF0Y2hlciwgc3RyKGNs YXNzX3R5cGUudW5xdWFsaWZpZWQoKS50YWcpKToKKyAgICAgICAgICAgIHJl dHVybiBUcnVlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4g RmFsc2UKKworICAgIGRlZiBtYXRjaF9tZXRob2Qoc2VsZiwgbWV0aG9kX25h bWUpOgorICAgICAgICBpZiByZS5tYXRjaChzZWxmLl9tZXRob2RfbWF0Y2hl ciwgbWV0aG9kX25hbWUpOgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAg ICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAg ZGVmIGdldF9hcmd0eXBlcyhzZWxmLCBjbGFzc190eXBlLCBtZXRob2RfbmFt ZSk6CisgICAgICAgIHJldHVybiBzZWxmLl9hcmd0eXBlcworCisgICAgZGVm IGludm9rZShzZWxmLCBvYmosICphcmdzKToKKyAgICAgICAgcmV0dXJuIHNl bGYuX21ldGhvZF9mdW5jdGlvbihvYmosICphcmdzKQorCisKK2RlZiBnZXRf bWF0Y2hpbmdfbWV0aG9kcyhjbGFzc190eXBlLCBtZXRob2RfbmFtZSk6Cisg ICAgbWF0Y2hfbGlzdCA9IFtdCisgICAgZm9yIG9iamZpbGUgaW4gZ2RiLm9i amZpbGVzKCk6CisgICAgICAgIGZvciBkZWJ1Z19tZXRob2QgaW4gb2JqZmls ZS5kZWJ1Z19tZXRob2RzOgorICAgICAgICAgICAgaWYgKGRlYnVnX21ldGhv ZC5lbmFibGVkIGFuZAorICAgICAgICAgICAgICAgIGRlYnVnX21ldGhvZC5t YXRjaF9jbGFzcyhjbGFzc190eXBlKSBhbmQKKyAgICAgICAgICAgICAgICBk ZWJ1Z19tZXRob2QubWF0Y2hfbWV0aG9kKG1ldGhvZF9uYW1lKSk6CisgICAg ICAgICAgICAgICAgbWF0Y2hfbGlzdC5hcHBlbmQoZGVidWdfbWV0aG9kKQor ICAgIHJldHVybiBtYXRjaF9saXN0CisKKworZGVmIGdldF9tZXRob2RfYXJn dHlwZXMoZGVidWdfbWV0aG9kLCBjbGFzc190eXBlLCBtZXRob2RfbmFtZSk6 CisgICAgcmV0dXJuIGRlYnVnX21ldGhvZC5nZXRfYXJndHlwZXMoY2xhc3Nf dHlwZSwgbWV0aG9kX25hbWUpCisKKworZGVmIGludm9rZV9kZWJ1Z19tZXRo b2QoZGVidWdfbWV0aG9kLCBvYmosIGFyZ3MpOgorICAgIHJldHVybiBkZWJ1 Z19tZXRob2QuaW52b2tlKG9iaiwgKmFyZ3MpCisKKworZGVmIHJlZ2lzdGVy X2RlYnVnX21ldGhvZHMob2JqZmlsZSwgZGVidWdfbWV0aG9kcyk6CisgICAg ZXhpc3RpbmdfbWV0aG9kX2xpc3QgPSBbXQorICAgIGZvciBuZXdfbWV0aG9k IGluIGRlYnVnX21ldGhvZHM6CisgICAgICAgIGZvciBvbGRfbWV0aG9kIGlu IG9iamZpbGUuZGVidWdfbWV0aG9kczoKKyAgICAgICAgICAgIGlmIChuZXdf bWV0aG9kLmdyb3VwID09IG9sZF9tZXRob2QuZ3JvdXAgYW5kCisgICAgICAg ICAgICAgICAgbmV3X21ldGhvZC5uYW1lID09IG9sZF9tZXRob2QubmFtZSk6 CisgICAgICAgICAgICAgICAgcHJpbnQgKCdXQVJOSU5HOiBSZXBsYWNpbmcg ZGVidWcgbWV0aG9kIHdpdGggbmFtZSAiJXMiIGluICcKKyAgICAgICAgICAg ICAgICAgICAgICAgJ2dyb3VwICIlcyIuJyAlIChvbGRfbWV0aG9kLm5hbWUs IG9sZF9tZXRob2QuZ3JvdXApKQorICAgICAgICAgICAgICAgIGV4aXN0aW5n X21ldGhvZF9saXN0LmFwcGVuZChvbGRfbWV0aG9kKQorICAgIGZvciBvbGRf bWV0aG9kIGluIGV4aXN0aW5nX21ldGhvZF9saXN0OgorICAgICAgICBvYmpm aWxlLmRlYnVnX21ldGhvZHMucmVtb3ZlKG9sZF9tZXRob2QpCisgICAgb2Jq ZmlsZS5kZWJ1Z19tZXRob2RzLmV4dGVuZChkZWJ1Z19tZXRob2RzKQorCisK KyMgUHl0aG9uIGRlYnVnIG1ldGhvZHMgZmVhdHVyZSB3aWxsIGJlIGVuYWJs ZWQgd2hlbiBhIHVzZXIgaW1wb3J0cyB0aGlzCisjIG1vZHVsZS4KK2dkYi5l bmFibGVfZGVidWdfbWV0aG9kcyhnZXRfbWF0Y2hpbmdfbWV0aG9kcywgZ2V0 X21ldGhvZF9hcmd0eXBlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBp bnZva2VfZGVidWdfbWV0aG9kKQpkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9w eS1kZWJ1Z21ldGhvZHMuYyBiL2dkYi9weXRob24vcHktZGVidWdtZXRob2Rz LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDE2MDY5 NQotLS0gL2Rldi9udWxsCisrKyBiL2dkYi9weXRob24vcHktZGVidWdtZXRo b2RzLmMKQEAgLTAsMCArMSwyMTIgQEAKKy8qIFN1cHBvcnQgZm9yIGRlYnVn IG1ldGhvZHMgaW4gUHl0aG9uLgorCisgICBDb3B5cmlnaHQgKEMpIDIwMTMg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKKyAgIFRoaXMgZmls ZSBpcyBwYXJ0IG9mIEdEQi4KKworICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkKKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgICB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBM aWNlbnNlLCBvcgorICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KKworICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRo ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICBidXQgV0lUSE9V VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZgorICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICAgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgWW91IHNo b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UKKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAg SWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAg Ki8KKworI2luY2x1ZGUgImRlZnMuaCIKKyNpbmNsdWRlICJhcmNoLXV0aWxz LmgiCisjaW5jbHVkZSAiZXh0LWZ1bmN0aW9uLmgiCisjaW5jbHVkZSAidmFs dWUuaCIKKyNpbmNsdWRlICJsYW5ndWFnZS5oIgorI2luY2x1ZGUgInB5dGhv bi1pbnRlcm5hbC5oIgorI2luY2x1ZGUgInB5dGhvbi5oIgorCitzdHJ1Y3Qg cHlfZXh0X29iamVjdAoreworICBQeU9iamVjdCAqb2JqZWN0OworICBQeU9i amVjdCAqbWF0Y2hfcHlfb2JqX3R5cGU7CisgIGNvbnN0IGNoYXIgKm1hdGNo X21ldGhvZDsKK307CisKK1B5T2JqZWN0ICptYXRjaF9tZXRob2RzX2NhbGxh YmxlID0gTlVMTDsKK1B5T2JqZWN0ICpnZXRfYXJndHlwZXNfY2FsbGFibGUg PSBOVUxMOworUHlPYmplY3QgKmludm9rZV9tZXRob2RfY2FsbGFibGUgPSBO VUxMOworCitQeU9iamVjdCAqCitnZGJweV9lbmFibGVfZGVidWdfbWV0aG9k cyAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICBQeU9i amVjdCAqbWF0Y2hfbWV0aG9kc190ZW1wLCAqZ2V0X2FyZ3R5cGVzX3RlbXAs ICppbnZva2VfbWV0aG9kX3RlbXA7CisgIFB5T2JqZWN0ICpyZXN1bHQgPSBO VUxMOworCisgIGlmICghUHlBcmdfUGFyc2VUdXBsZSAoYXJncywgIk9PTyIs ICZtYXRjaF9tZXRob2RzX3RlbXAsICZnZXRfYXJndHlwZXNfdGVtcCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAmaW52b2tlX21ldGhvZF90ZW1wKSkK KyAgICByZXR1cm4gcmVzdWx0OworCisgIGlmIChQeUNhbGxhYmxlX0NoZWNr IChtYXRjaF9tZXRob2RzX3RlbXApCisgICAgICAmJiBQeUNhbGxhYmxlX0No ZWNrIChnZXRfYXJndHlwZXNfdGVtcCkKKyAgICAgICYmIFB5Q2FsbGFibGVf Q2hlY2sgKGludm9rZV9tZXRob2RfdGVtcCkpCisgICAgeworICAgICAgUHlf WERFQ1JFRiAobWF0Y2hfbWV0aG9kc19jYWxsYWJsZSk7CisgICAgICBQeV9Y REVDUkVGIChnZXRfYXJndHlwZXNfY2FsbGFibGUpOworICAgICAgUHlfWERF Q1JFRiAoaW52b2tlX21ldGhvZF9jYWxsYWJsZSk7CisKKyAgICAgIFB5X0lO Q1JFRiAobWF0Y2hfbWV0aG9kc190ZW1wKTsKKyAgICAgIFB5X0lOQ1JFRiAo Z2V0X2FyZ3R5cGVzX3RlbXApOworICAgICAgUHlfSU5DUkVGIChpbnZva2Vf bWV0aG9kX3RlbXApOworCisgICAgICBtYXRjaF9tZXRob2RzX2NhbGxhYmxl ID0gbWF0Y2hfbWV0aG9kc190ZW1wOworICAgICAgZ2V0X2FyZ3R5cGVzX2Nh bGxhYmxlID0gZ2V0X2FyZ3R5cGVzX3RlbXA7CisgICAgICBpbnZva2VfbWV0 aG9kX2NhbGxhYmxlID0gaW52b2tlX21ldGhvZF90ZW1wOworCisgICAgICBQ eV9JTkNSRUYgKFB5X05vbmUpOworICAgICAgcmVzdWx0ID0gUHlfTm9uZTsK KyAgICB9CisKKyAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIHN0cnVj dCBleHRfZm5fZGVzY3JpcHRvciAqCituZXdfcHl0aG9uX2V4dF9tZXRob2Qg KFB5T2JqZWN0ICppdGVtLCBQeU9iamVjdCAqcHlfb2JqX3R5cGUsCisgICAg ICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm1ldGhvZCkKK3sKKyAg c3RydWN0IGV4dF9mbl9kZXNjcmlwdG9yICpleHRfZm4gPSBuZXdfZXh0X2Z1 bmN0aW9uICgpOworICBzdHJ1Y3QgcHlfZXh0X29iamVjdCAqZXh0X29iamVj dDsKKworICBleHRfb2JqZWN0ID0gKHN0cnVjdCBweV9leHRfb2JqZWN0ICop IHh6YWxsb2MgKHNpemVvZiAoc3RydWN0IHB5X2V4dF9vYmplY3QpKTsKKyAg ZXh0X29iamVjdC0+b2JqZWN0ID0gaXRlbTsKKyAgZXh0X29iamVjdC0+bWF0 Y2hfcHlfb2JqX3R5cGUgPSBweV9vYmpfdHlwZTsKKyAgZXh0X29iamVjdC0+ bWF0Y2hfbWV0aG9kID0gbWV0aG9kOworCisgIGV4dF9mbi0+bGFuZyA9IEVY VF9MQU5HX1BZVEhPTjsKKyAgZXh0X2ZuLT5pc19tZXRob2QgPSAxOworICBl eHRfZm4tPmV4dF9vYmplY3QgPSAodm9pZCAqKSBleHRfb2JqZWN0OworCisg IHJldHVybiBleHRfZm47Cit9CisKK3ZvaWQKK3B5X2ZyZWVfZXh0X29iamVj dCAodm9pZCAqZXh0X29iamVjdCkKK3sKKyAgc3RydWN0IHB5X2V4dF9vYmpl Y3QgKm8gPSAoc3RydWN0IHB5X2V4dF9vYmplY3QgKikgZXh0X29iamVjdDsK KworICBQeV9YREVDUkVGIChvLT5vYmplY3QpOworICB4ZnJlZSAobyk7Cit9 CisKK3N0cnVjdCBleHRfZm5fZGVzY3JpcHRvciAqCitweV9kZWJ1Z21ldGhv ZF9uYW1lX21hdGNoIChzdHJ1Y3QgdHlwZSAqb2JqX3R5cGUsIGNvbnN0IGNo YXIgKm1ldGhvZF9uYW1lKQoreworICBQeU9iamVjdCAqcHlfdHlwZSwgKnB5 X2RlYnVnbWV0aG9kX2xpc3QgPSBOVUxMLCAqbGlzdF9pdGVyLCAqaXRlbTsK KyAgc3RydWN0IGNsZWFudXAgKmNsZWFudXBzOworICBzdHJ1Y3QgZXh0X2Zu X2Rlc2NyaXB0b3IgKm1ldGhvZF9saXN0ID0gTlVMTDsKKworICBpZiAoIW9i al90eXBlKQorICAgIHJldHVybiBOVUxMOworCisgIGNsZWFudXBzID0gZW5z dXJlX3B5dGhvbl9lbnYgKGdldF9jdXJyZW50X2FyY2ggKCksIGN1cnJlbnRf bGFuZ3VhZ2UpOworCisgIHB5X3R5cGUgPSB0eXBlX3RvX3R5cGVfb2JqZWN0 IChvYmpfdHlwZSk7CisgIHB5X2RlYnVnbWV0aG9kX2xpc3QgPSBQeU9iamVj dF9DYWxsRnVuY3Rpb24gKG1hdGNoX21ldGhvZHNfY2FsbGFibGUsIAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi T3MiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBweV90eXBlLCBtZXRob2RfbmFtZSk7CisKKyAgbGlzdF9pdGVy ID0gUHlPYmplY3RfR2V0SXRlciAocHlfZGVidWdtZXRob2RfbGlzdCk7Cisg IHdoaWxlICgoaXRlbSA9IFB5SXRlcl9OZXh0IChsaXN0X2l0ZXIpKSkKKyAg ICB7CisgICAgICBzdHJ1Y3QgZXh0X2ZuX2Rlc2NyaXB0b3IgKmV4dF9mbjsK KworICAgICAgZXh0X2ZuID0gbmV3X3B5dGhvbl9leHRfbWV0aG9kIChpdGVt LCBweV90eXBlLCBtZXRob2RfbmFtZSk7CisgICAgICBtZXRob2RfbGlzdCA9 IGV4dF9mbl9saXN0X3ByZXBlbmQgKG1ldGhvZF9saXN0LCBleHRfZm4pOwor ICAgIH0KKworICBQeV9ERUNSRUYgKGxpc3RfaXRlcik7CisgIFB5X0RFQ1JF RiAocHlfZGVidWdtZXRob2RfbGlzdCk7CisgIAorICBkb19jbGVhbnVwcyAo Y2xlYW51cHMpOworICByZXR1cm4gbWV0aG9kX2xpc3Q7Cit9CisKK3N0cnVj dCB0eXBlICoqCitweV9leHRfZm5fZ2V0X2FyZ3R5cGVzIChzdHJ1Y3QgZXh0 X2ZuX2Rlc2NyaXB0b3IgKmV4dF9mbiwgaW50ICpuYXJncykKK3sKKyAgaWYg KGV4dF9mbi0+aXNfbWV0aG9kKQorICAgIHsKKyAgICAgIHN0cnVjdCBweV9l eHRfb2JqZWN0ICpleHRfb2JqZWN0ID0gCisgICAgICAgICAgKHN0cnVjdCBw eV9leHRfb2JqZWN0ICopIGV4dF9mbi0+ZXh0X29iamVjdDsKKyAgICAgIFB5 T2JqZWN0ICpweV9hcmd0eXBlX2xpc3QsICpsaXN0X2l0ZXIsICppdGVtOwor ICAgICAgc3RydWN0IGNsZWFudXAgKmNsZWFudXBzOworICAgICAgc3RydWN0 IHR5cGUgKip0eXBlX2FycmF5LCAqb2JqX3R5cGU7CisgICAgICBpbnQgaSA9 IDE7CisKKyAgICAgIGNsZWFudXBzID0gZW5zdXJlX3B5dGhvbl9lbnYgKGdl dF9jdXJyZW50X2FyY2ggKCksIGN1cnJlbnRfbGFuZ3VhZ2UpOworICAgICAg cHlfYXJndHlwZV9saXN0ID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uIChnZXRf YXJndHlwZXNfY2FsbGFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICJPT3MiLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRfb2JqZWN0LT5v YmplY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGV4dF9vYmplY3QtPm1hdGNoX3B5X29ial90eXBlLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl eHRfb2JqZWN0LT5tYXRjaF9tZXRob2QpOworCisgICAgICBsaXN0X2l0ZXIg PSBQeU9iamVjdF9HZXRJdGVyIChweV9hcmd0eXBlX2xpc3QpOworICAgICAg Km5hcmdzID0gUHlTZXF1ZW5jZV9TaXplIChweV9hcmd0eXBlX2xpc3QpICsg MTsgIC8qIEluY2x1ZGUgJ3RoaXMnICAqLworICAgICAgdHlwZV9hcnJheSA9 IChzdHJ1Y3QgdHlwZSAqKikgeG1hbGxvYyAoKm5hcmdzICogc2l6ZW9mIChz dHJ1Y3QgdHlwZSAqKSk7CisgICAgICB3aGlsZSAoKGl0ZW0gPSBQeUl0ZXJf TmV4dCAobGlzdF9pdGVyKSkpCisgICAgICAgIHsKKyAgICAgICAgICB0eXBl X2FycmF5W2ldID0gdHlwZV9vYmplY3RfdG9fdHlwZSAoaXRlbSk7CisgICAg ICAgICAgaSsrOworICAgICAgICAgIFB5X1hERUNSRUYgKGl0ZW0pOworICAg ICAgICB9CisKKyAgICAgIC8qIEFkZCB0aGUgdHlwZSBvZiAndGhpcycgYXMg dGhlIGZpcnN0IGFyZ3VtZW50LiAgKi8KKyAgICAgIG9ial90eXBlID0gdHlw ZV9vYmplY3RfdG9fdHlwZSAoZXh0X29iamVjdC0+bWF0Y2hfcHlfb2JqX3R5 cGUpOworICAgICAgdHlwZV9hcnJheVswXSA9IG1ha2VfY3ZfdHlwZSAoMSwg MCwgbG9va3VwX3BvaW50ZXJfdHlwZSAob2JqX3R5cGUpLCBOVUxMKTsKKwor ICAgICAgUHlfWERFQ1JFRiAobGlzdF9pdGVyKTsKKyAgICAgIFB5X1hERUNS RUYgKHB5X2FyZ3R5cGVfbGlzdCk7CisgICAgICBkb19jbGVhbnVwcyAoY2xl YW51cHMpOworCisgICAgICByZXR1cm4gdHlwZV9hcnJheTsKKyAgICB9CisK KyAgKm5hcmdzID0gMDsKKyAgcmV0dXJuIE5VTEw7Cit9CisKK3N0cnVjdCB2 YWx1ZSAqCitweV9leHRfZm5faW52b2tlX21ldGhvZCAoc3RydWN0IGV4dF9m bl9kZXNjcmlwdG9yICpleHRfZm4sIHN0cnVjdCB2YWx1ZSAqb2JqLAorICAg ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB2YWx1ZSAqKmFyZ3MsIGlu dCBuYXJncykKK3sKKyAgaW50IGk7CisgIHN0cnVjdCBjbGVhbnVwICpjbGVh bnVwczsKKyAgUHlPYmplY3QgKnB5X29iaiwgKnB5X2FyZ190dXBsZSwgKnB5 X3Jlc3VsdCwgKmRlYnVnX21ldGhvZDsKKyAgc3RydWN0IHZhbHVlICpyZXN1 bHQgPSBOVUxMOworCisgIGlmICghZXh0X2ZuLT5pc19tZXRob2QpCisgICAg cmV0dXJuIE5VTEw7CisKKyAgY2xlYW51cHMgPSBlbnN1cmVfcHl0aG9uX2Vu diAoZ2V0X2N1cnJlbnRfYXJjaCAoKSwgY3VycmVudF9sYW5ndWFnZSk7CisK KyAgZGVidWdfbWV0aG9kID0gKChzdHJ1Y3QgcHlfZXh0X29iamVjdCAqKSBl eHRfZm4tPmV4dF9vYmplY3QpLT5vYmplY3Q7CisgIHB5X29iaiA9IHZhbHVl X3RvX3ZhbHVlX29iamVjdCAob2JqKTsKKyAgcHlfYXJnX3R1cGxlID0gUHlU dXBsZV9OZXcgKG5hcmdzKTsKKyAgZm9yIChpID0gMDsgaSA8IG5hcmdzOyBp KyspCisgICAgeworICAgICAgUHlPYmplY3QgKnB5X2FyZ192YWx1ZSA9IHZh bHVlX3RvX3ZhbHVlX29iamVjdCAoYXJnc1tpXSk7CisKKyAgICAgIFB5VHVw bGVfU2V0SXRlbSAocHlfYXJnX3R1cGxlLCBpLCBweV9hcmdfdmFsdWUpOwor ICAgIH0KKworICBweV9yZXN1bHQgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24g KGludm9rZV9tZXRob2RfY2FsbGFibGUsICJPT08iLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnX21ldGhvZCwgcHlfb2Jq LCBweV9hcmdfdHVwbGUpOworCisgIHJlc3VsdCA9IGNvbnZlcnRfdmFsdWVf ZnJvbV9weXRob24gKHB5X3Jlc3VsdCk7CisKKyAgUHlfWERFQ1JFRiAocHlf b2JqKTsKKyAgUHlfWERFQ1JFRiAocHlfYXJnX3R1cGxlKTsKKyAgUHlfWERF Q1JFRiAocHlfcmVzdWx0KTsKKyAgZG9fY2xlYW51cHMgKGNsZWFudXBzKTsK KworICByZXR1cm4gcmVzdWx0OworfQpkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhv bi9weS1vYmpmaWxlLmMgYi9nZGIvcHl0aG9uL3B5LW9iamZpbGUuYwppbmRl eCBkYjUxZjUwLi5jMmJlZjNlIDEwMDY0NAotLS0gYS9nZGIvcHl0aG9uL3B5 LW9iamZpbGUuYworKysgYi9nZGIvcHl0aG9uL3B5LW9iamZpbGUuYwpAQCAt MzUsNiArMzUsOSBAQCB0eXBlZGVmIHN0cnVjdAogCiAgIC8qIFRoZSB0eXBl LXByaW50ZXIgbGlzdC4gICovCiAgIFB5T2JqZWN0ICp0eXBlX3ByaW50ZXJz OworCisgIC8qIFRoZSBkZWJ1ZyBtZXRob2QgbGlzdC4gICovCisgIFB5T2Jq ZWN0ICpkZWJ1Z19tZXRob2RzOwogfSBvYmpmaWxlX29iamVjdDsKIAogc3Rh dGljIFB5VHlwZU9iamVjdCBvYmpmaWxlX29iamVjdF90eXBlOwpAQCAtNjIs NiArNjUsNyBAQCBvYmpmcHlfZGVhbGxvYyAoUHlPYmplY3QgKm8pCiAKICAg UHlfWERFQ1JFRiAoc2VsZi0+cHJpbnRlcnMpOwogICBQeV9YREVDUkVGIChz ZWxmLT50eXBlX3ByaW50ZXJzKTsKKyAgUHlfWERFQ1JFRiAoc2VsZi0+ZGVi dWdfbWV0aG9kcyk7CiAgIFB5X1RZUEUgKHNlbGYpLT50cF9mcmVlIChzZWxm KTsKIH0KIApAQCAtODcsNiArOTEsMTMgQEAgb2JqZnB5X25ldyAoUHlUeXBl T2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmtleXdv cmRzKQogCSAgUHlfREVDUkVGIChzZWxmKTsKIAkgIHJldHVybiBOVUxMOwog CX0KKworICAgICAgc2VsZi0+ZGVidWdfbWV0aG9kcyA9IFB5TGlzdF9OZXcg KDApOworICAgICAgaWYgKCFzZWxmLT5kZWJ1Z19tZXRob2RzKQorCXsKKwkg IFB5X0RFQ1JFRiAoc2VsZik7CisJICByZXR1cm4gTlVMTDsKKwl9CiAgICAg fQogICByZXR1cm4gKFB5T2JqZWN0ICopIHNlbGY7CiB9CkBAIC0xNDAsNiAr MTUxLDE3IEBAIG9iamZweV9nZXRfdHlwZV9wcmludGVycyAoUHlPYmplY3Qg Km8sIHZvaWQgKmlnbm9yZSkKICAgcmV0dXJuIHNlbGYtPnR5cGVfcHJpbnRl cnM7CiB9CiAKKy8qIEdldCB0aGUgJ2RlYnVnX21ldGhvZHMnIGF0dHJpYnV0 ZS4gICovCisKK3N0YXRpYyBQeU9iamVjdCAqCitvYmpmcHlfZ2V0X2RlYnVn X21ldGhvZHMgKFB5T2JqZWN0ICpvLCB2b2lkICppZ25vcmUpCit7CisgIG9i amZpbGVfb2JqZWN0ICpzZWxmID0gKG9iamZpbGVfb2JqZWN0ICopIG87CisK KyAgUHlfSU5DUkVGIChzZWxmLT5kZWJ1Z19tZXRob2RzKTsKKyAgcmV0dXJu IHNlbGYtPmRlYnVnX21ldGhvZHM7Cit9CisKIC8qIFNldCB0aGUgJ3R5cGVf cHJpbnRlcnMnIGF0dHJpYnV0ZS4gICovCiAKIHN0YXRpYyBpbnQKQEAgLTIz Miw2ICsyNTQsMTMgQEAgb2JqZmlsZV90b19vYmpmaWxlX29iamVjdCAoc3Ry dWN0IG9iamZpbGUgKm9iamZpbGUpCiAJICAgICAgcmV0dXJuIE5VTEw7CiAJ ICAgIH0KIAorCSAgb2JqZWN0LT5kZWJ1Z19tZXRob2RzID0gUHlMaXN0X05l dyAoMCk7CisJICBpZiAoIW9iamVjdC0+ZGVidWdfbWV0aG9kcykKKwkgICAg eworCSAgICAgIFB5X0RFQ1JFRiAob2JqZWN0KTsKKwkgICAgICByZXR1cm4g TlVMTDsKKwkgICAgfQorCiAJICBzZXRfb2JqZmlsZV9kYXRhIChvYmpmaWxl LCBvYmpmcHlfb2JqZmlsZV9kYXRhX2tleSwgb2JqZWN0KTsKIAl9CiAgICAg fQpAQCAtMjcyLDYgKzMwMSw4IEBAIHN0YXRpYyBQeUdldFNldERlZiBvYmpm aWxlX2dldHNldFtdID0KICAgICAiUHJldHR5IHByaW50ZXJzLiIsIE5VTEwg fSwKICAgeyAidHlwZV9wcmludGVycyIsIG9iamZweV9nZXRfdHlwZV9wcmlu dGVycywgb2JqZnB5X3NldF90eXBlX3ByaW50ZXJzLAogICAgICJUeXBlIHBy aW50ZXJzLiIsIE5VTEwgfSwKKyAgeyAiZGVidWdfbWV0aG9kcyIsIG9iamZw eV9nZXRfZGVidWdfbWV0aG9kcywgTlVMTCwKKyAgICAiRGVidWcgbWV0aG9k cy4iLCBOVUxMIH0sCiAgIHsgTlVMTCB9CiB9OwogCmRpZmYgLS1naXQgYS9n ZGIvcHl0aG9uL3B5dGhvbi1pbnRlcm5hbC5oIGIvZ2RiL3B5dGhvbi9weXRo b24taW50ZXJuYWwuaAppbmRleCA3ZDUyYzA2Li5iNDU3YTZjIDEwMDY0NAot LS0gYS9nZGIvcHl0aG9uL3B5dGhvbi1pbnRlcm5hbC5oCisrKyBiL2dkYi9w eXRob24vcHl0aG9uLWludGVybmFsLmgKQEAgLTIzMSw2ICsyMzEsNyBAQCBQ eU9iamVjdCAqZ2RicHlfc2VsZWN0ZWRfaW5mZXJpb3IgKFB5T2JqZWN0ICpz ZWxmLCBQeU9iamVjdCAqYXJncyk7CiBQeU9iamVjdCAqZ2RicHlfc3RyaW5n X3RvX2FyZ3YgKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncyk7CiBQ eU9iamVjdCAqZ2RicHlfcGFyYW1ldGVyIChQeU9iamVjdCAqc2VsZiwgUHlP YmplY3QgKmFyZ3MpOwogUHlPYmplY3QgKmdkYnB5X3BhcmFtZXRlcl92YWx1 ZSAoZW51bSB2YXJfdHlwZXMgdHlwZSwgdm9pZCAqdmFyKTsKK1B5T2JqZWN0 ICpnZGJweV9lbmFibGVfZGVidWdfbWV0aG9kcyAoUHlPYmplY3QgKnNlbGYs IFB5T2JqZWN0ICphcmdzKTsKIGNoYXIgKmdkYnB5X3BhcnNlX2NvbW1hbmRf bmFtZSAoY29uc3QgY2hhciAqbmFtZSwKIAkJCQlzdHJ1Y3QgY21kX2xpc3Rf ZWxlbWVudCAqKipiYXNlX2xpc3QsCiAJCQkJc3RydWN0IGNtZF9saXN0X2Vs ZW1lbnQgKipzdGFydF9saXN0KTsKZGlmZiAtLWdpdCBhL2dkYi9weXRob24v cHl0aG9uLmMgYi9nZGIvcHl0aG9uL3B5dGhvbi5jCmluZGV4IGIwZjcxYTIu LjQzYThiOWMgMTAwNjQ0Ci0tLSBhL2dkYi9weXRob24vcHl0aG9uLmMKKysr IGIvZ2RiL3B5dGhvbi9weXRob24uYwpAQCAtMTgyNSw2ICsxODI1LDkgQEAg UmV0dXJuIHRoZSBzZWxlY3RlZCBpbmZlcmlvciBvYmplY3QuIiB9LAogICB7 ICJpbmZlcmlvcnMiLCBnZGJweV9pbmZlcmlvcnMsIE1FVEhfTk9BUkdTLAog ICAgICJpbmZlcmlvcnMgKCkgLT4gKGdkYi5JbmZlcmlvciwgLi4uKS5cblwK IFJldHVybiBhIHR1cGxlIGNvbnRhaW5pbmcgYWxsIGluZmVyaW9ycy4iIH0s CisgIHsgImVuYWJsZV9kZWJ1Z19tZXRob2RzIiwgZ2RicHlfZW5hYmxlX2Rl YnVnX21ldGhvZHMsIE1FVEhfVkFSQVJHUywKKyAgICAiaW5mZXJpb3JzICht ZXRoX21hdGNoX2Z1bmN0aW9uLCBhcmdzX21hdGNoX2Z1bmN0aW9uKSAtPiBO b25lLlxuXAorRW5hYmxlcyBQeXRob24gZGVidWcgbWV0aG9kcyBmZWF0dXJl LiIgfSwKICAge05VTEwsIE5VTEwsIDAsIE5VTEx9CiB9OwogCmRpZmYgLS1n aXQgYS9nZGIvcHl0aG9uL3B5dGhvbi5oIGIvZ2RiL3B5dGhvbi9weXRob24u aAppbmRleCAyNGUzMDc3Li5kNGFkYWZlIDEwMDY0NAotLS0gYS9nZGIvcHl0 aG9uL3B5dGhvbi5oCisrKyBiL2dkYi9weXRob24vcHl0aG9uLmgKQEAgLTQ5 LDYgKzQ5LDE3IEBAIGludCBnZGJweV9zaG91bGRfc3RvcCAoc3RydWN0IGJy ZWFrcG9pbnRfb2JqZWN0ICpicF9vYmopOwogCiBpbnQgZ2RicHlfYnJlYWtw b2ludF9oYXNfcHlfY29uZCAoc3RydWN0IGJyZWFrcG9pbnRfb2JqZWN0ICpi cF9vYmopOwogCitzdHJ1Y3QgZXh0X2ZuX2Rlc2NyaXB0b3IgKnB5X2RlYnVn bWV0aG9kX25hbWVfbWF0Y2ggKHN0cnVjdCB0eXBlICosCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IGNoYXIgKik7CisKK3ZvaWQgcHlfZnJlZV9leHRfb2JqZWN0ICh2b2lk ICpleHRfb2JqZWN0KTsKKworc3RydWN0IHR5cGUgKipweV9leHRfZm5fZ2V0 X2FyZ3R5cGVzIChzdHJ1Y3QgZXh0X2ZuX2Rlc2NyaXB0b3IgKiwgaW50ICop OworCitzdHJ1Y3QgdmFsdWUgKnB5X2V4dF9mbl9pbnZva2VfbWV0aG9kIChz dHJ1Y3QgZXh0X2ZuX2Rlc2NyaXB0b3IgKiwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB2YWx1ZSAqLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHZhbHVl ICoqLCBpbnQgbmFyZ3MpOworCiB2b2lkICpzdGFydF90eXBlX3ByaW50ZXJz ICh2b2lkKTsKIAogY2hhciAqYXBwbHlfdHlwZV9wcmludGVycyAodm9pZCAq LCBzdHJ1Y3QgdHlwZSAqdHlwZSk7CmRpZmYgLS1naXQgYS9nZGIvdmFsYXJp dGguYyBiL2dkYi92YWxhcml0aC5jCmluZGV4IDA3NGNmMzYuLjdmNTNkZTcg MTAwNjQ0Ci0tLSBhL2dkYi92YWxhcml0aC5jCisrKyBiL2dkYi92YWxhcml0 aC5jCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSA8bWF0aC5oPgogI2lu Y2x1ZGUgImluZmNhbGwuaCIKICNpbmNsdWRlICJleGNlcHRpb25zLmgiCisj aW5jbHVkZSAiZXh0LWZ1bmN0aW9uLmgiCiAKIC8qIERlZmluZSB3aGV0aGVy IG9yIG5vdCB0aGUgQyBvcGVyYXRvciAnLycgdHJ1bmNhdGVzIHRvd2FyZHMg emVybyBmb3IKICAgIGRpZmZlcmVudGx5IHNpZ25lZCBvcGVyYW5kcyAodHJ1 bmNhdGlvbiBkaXJlY3Rpb24gaXMgdW5kZWZpbmVkIGluIEMpLiAgKi8KQEAg LTI4NSwyMSArMjg2LDI3IEBAIHVub3BfdXNlcl9kZWZpbmVkX3AgKGVudW0g ZXhwX29wY29kZSBvcCwgc3RydWN0IHZhbHVlICphcmcxKQogICAgZXhwbGlj aXRseSwgYW5kIHBlcmZvcm0gY29ycmVjdCBvdmVybG9hZCByZXNvbHV0aW9u IGluIGFsbCBvZiB0aGUgYWJvdmUKICAgIHNpdHVhdGlvbnMgb3IgY29tYmlu YXRpb25zIHRoZXJlb2YuICAqLwogCi1zdGF0aWMgc3RydWN0IHZhbHVlICoK K3N0YXRpYyB2b2lkCiB2YWx1ZV91c2VyX2RlZmluZWRfY3BwX29wIChzdHJ1 Y3QgdmFsdWUgKiphcmdzLCBpbnQgbmFyZ3MsIGNoYXIgKm9wZXJhdG9yLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHZhbHVlICoqc3Jj X2ZuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGV4dF9m bl9kZXNjcmlwdG9yICoqZXh0X2ZuLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgaW50ICpzdGF0aWNfbWVtZnVuY3ApCiB7CiAKICAgc3RydWN0IHN5 bWJvbCAqc3ltcCA9IE5VTEw7CiAgIHN0cnVjdCB2YWx1ZSAqdmFscCA9IE5V TEw7CisgIHN0cnVjdCBleHRfZm5fZGVzY3JpcHRvciAqZXh0X2ZucCA9IE5V TEw7CiAKICAgZmluZF9vdmVybG9hZF9tYXRjaCAoYXJncywgbmFyZ3MsIG9w ZXJhdG9yLCBCT1RIIC8qIGNvdWxkIGJlIG1ldGhvZCAqLywKICAgICAgICAg ICAgICAgICAgICAgICAgMCAvKiBzdHJpY3QgbWF0Y2ggKi8sICZhcmdzWzBd LCAvKiBvYmpwICovCiAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwgLyog cGFzcyBOVUxMIHN5bWJvbCBzaW5jZSBzeW1ib2wgaXMgdW5rbm93biAqLywK LSAgICAgICAgICAgICAgICAgICAgICAgJnZhbHAsICZzeW1wLCBzdGF0aWNf bWVtZnVuY3AsIDApOworICAgICAgICAgICAgICAgICAgICAgICAmdmFscCwg JnN5bXAsICZleHRfZm5wLCBzdGF0aWNfbWVtZnVuY3AsIDApOwogCiAgIGlm ICh2YWxwKQotICAgIHJldHVybiB2YWxwOworICAgIHsKKyAgICAgICpzcmNf Zm4gPSB2YWxwOworICAgICAgcmV0dXJuOworICAgIH0KIAogICBpZiAoc3lt cCkKICAgICB7CkBAIC0zMDcsNyArMzE0LDE0IEBAIHZhbHVlX3VzZXJfZGVm aW5lZF9jcHBfb3AgKHN0cnVjdCB2YWx1ZSAqKmFyZ3MsIGludCBuYXJncywg Y2hhciAqb3BlcmF0b3IsCiAgICAgICAgICBleHBlY3QgYSByZWZlcmVuY2Ug YXMgaXRzIGZpcnN0IGFyZ3VtZW50CiAgICAgICAgICByYXRoZXIgdGhlIGV4 cGxpY2l0IHN0cnVjdHVyZS4gICovCiAgICAgICBhcmdzWzBdID0gdmFsdWVf aW5kIChhcmdzWzBdKTsKLSAgICAgIHJldHVybiB2YWx1ZV9vZl92YXJpYWJs ZSAoc3ltcCwgMCk7CisgICAgICAqc3JjX2ZuID0gdmFsdWVfb2ZfdmFyaWFi bGUgKHN5bXAsIDApOworICAgICAgcmV0dXJuOworICAgIH0KKworICBpZiAo ZXh0X2ZucCkKKyAgICB7CisgICAgICAqZXh0X2ZuID0gZXh0X2ZucDsKKyAg ICAgIHJldHVybjsKICAgICB9CiAKICAgZXJyb3IgKF8oIkNvdWxkIG5vdCBm aW5kICVzLiIpLCBvcGVyYXRvcik7CkBAIC0zMTYsMTkgKzMzMCwyMiBAQCB2 YWx1ZV91c2VyX2RlZmluZWRfY3BwX29wIChzdHJ1Y3QgdmFsdWUgKiphcmdz LCBpbnQgbmFyZ3MsIGNoYXIgKm9wZXJhdG9yLAogLyogTG9va3VwIHVzZXIg ZGVmaW5lZCBvcGVyYXRvciBOQU1FLiAgUmV0dXJuIGEgdmFsdWUgcmVwcmVz ZW50aW5nIHRoZQogICAgZnVuY3Rpb24sIG90aGVyd2lzZSByZXR1cm4gTlVM TC4gICovCiAKLXN0YXRpYyBzdHJ1Y3QgdmFsdWUgKgorc3RhdGljIHZvaWQK IHZhbHVlX3VzZXJfZGVmaW5lZF9vcCAoc3RydWN0IHZhbHVlICoqYXJncCwg c3RydWN0IHZhbHVlICoqYXJncywgY2hhciAqbmFtZSwKLSAgICAgICAgICAg ICAgICAgICAgICAgaW50ICpzdGF0aWNfbWVtZnVuY3AsIGludCBuYXJncykK KyAgICAgICAgICAgICAgICAgICAgICAgaW50ICpzdGF0aWNfbWVtZnVuY3As IGludCBuYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHZh bHVlICoqc3JjX2ZuLCBzdHJ1Y3QgZXh0X2ZuX2Rlc2NyaXB0b3IgKipleHRf Zm4pCiB7CiAgIHN0cnVjdCB2YWx1ZSAqcmVzdWx0ID0gTlVMTDsKIAogICBp ZiAoY3VycmVudF9sYW5ndWFnZS0+bGFfbGFuZ3VhZ2UgPT0gbGFuZ3VhZ2Vf Y3BsdXMpCi0gICAgcmVzdWx0ID0gdmFsdWVfdXNlcl9kZWZpbmVkX2NwcF9v cCAoYXJncywgbmFyZ3MsIG5hbWUsIHN0YXRpY19tZW1mdW5jcCk7CisgICAg dmFsdWVfdXNlcl9kZWZpbmVkX2NwcF9vcCAoYXJncywgbmFyZ3MsIG5hbWUs IHNyY19mbiwgZXh0X2ZuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHN0YXRpY19tZW1mdW5jcCk7CiAgIGVsc2UKLSAgICByZXN1bHQgPSB2 YWx1ZV9zdHJ1Y3RfZWx0IChhcmdwLCBhcmdzLCBuYW1lLCBzdGF0aWNfbWVt ZnVuY3AsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0cnVj dHVyZSIpOwotCi0gIHJldHVybiByZXN1bHQ7CisgICAgeworICAgICAgcmVz dWx0ID0gdmFsdWVfc3RydWN0X2VsdCAoYXJncCwgYXJncywgbmFtZSwgc3Rh dGljX21lbWZ1bmNwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgInN0cnVjdHVyZSIpOworICAgICAgKnNyY19mbiA9IHJlc3VsdDsKKyAg ICB9CiB9CiAKIC8qIFdlIGtub3cgZWl0aGVyIGFyZzEgb3IgYXJnMiBpcyBh IHN0cnVjdHVyZSwgc28gdHJ5IHRvIGZpbmQgdGhlIHJpZ2h0CkBAIC0zNDUs NiArMzYyLDcgQEAgdmFsdWVfeF9iaW5vcCAoc3RydWN0IHZhbHVlICphcmcx LCBzdHJ1Y3QgdmFsdWUgKmFyZzIsIGVudW0gZXhwX29wY29kZSBvcCwKIAkg ICAgICAgZW51bSBleHBfb3Bjb2RlIG90aGVyb3AsIGVudW0gbm9zaWRlIG5v c2lkZSkKIHsKICAgc3RydWN0IHZhbHVlICoqYXJndmVjOworICBzdHJ1Y3Qg ZXh0X2ZuX2Rlc2NyaXB0b3IgKmV4dF9mbiA9IE5VTEw7CiAgIGNoYXIgKnB0 cjsKICAgY2hhciB0c3RyWzEzXTsKICAgaW50IHN0YXRpY19tZW1mdW5jcDsK QEAgLTM1OSw2ICszNzcsNyBAQCB2YWx1ZV94X2Jpbm9wIChzdHJ1Y3QgdmFs dWUgKmFyZzEsIHN0cnVjdCB2YWx1ZSAqYXJnMiwgZW51bSBleHBfb3Bjb2Rl IG9wLAogICAgIGVycm9yIChfKCJDYW4ndCBkbyB0aGF0IGJpbmFyeSBvcCBv biB0aGF0IHR5cGUiKSk7CS8qIEZJWE1FIGJlIGV4cGxpY2l0ICovCiAKICAg YXJndmVjID0gKHN0cnVjdCB2YWx1ZSAqKikgYWxsb2NhIChzaXplb2YgKHN0 cnVjdCB2YWx1ZSAqKSAqIDQpOworICBhcmd2ZWNbMF0gPSBOVUxMOwogICBh cmd2ZWNbMV0gPSB2YWx1ZV9hZGRyIChhcmcxKTsKICAgYXJndmVjWzJdID0g YXJnMjsKICAgYXJndmVjWzNdID0gMDsKQEAgLTQ3MSw4ICs0OTAsOCBAQCB2 YWx1ZV94X2Jpbm9wIChzdHJ1Y3QgdmFsdWUgKmFyZzEsIHN0cnVjdCB2YWx1 ZSAqYXJnMiwgZW51bSBleHBfb3Bjb2RlIG9wLAogICAgICAgZXJyb3IgKF8o IkludmFsaWQgYmluYXJ5IG9wZXJhdGlvbiBzcGVjaWZpZWQuIikpOwogICAg IH0KIAotICBhcmd2ZWNbMF0gPSB2YWx1ZV91c2VyX2RlZmluZWRfb3AgKCZh cmcxLCBhcmd2ZWMgKyAxLCB0c3RyLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICZzdGF0aWNfbWVtZnVuY3AsIDIpOworICB2YWx1 ZV91c2VyX2RlZmluZWRfb3AgKCZhcmcxLCBhcmd2ZWMgKyAxLCB0c3RyLCAm c3RhdGljX21lbWZ1bmNwLCAyLAorICAgICAgICAgICAgICAgICAgICAgICAg ICZhcmd2ZWNbMF0sICZleHRfZm4pOwogCiAgIGlmIChhcmd2ZWNbMF0pCiAg ICAgewpAQCAtNDkyLDYgKzUxMSwxMSBAQCB2YWx1ZV94X2Jpbm9wIChzdHJ1 Y3QgdmFsdWUgKmFyZzEsIHN0cnVjdCB2YWx1ZSAqYXJnMiwgZW51bSBleHBf b3Bjb2RlIG9wLAogICAgICAgcmV0dXJuIGNhbGxfZnVuY3Rpb25fYnlfaGFu ZCAoYXJndmVjWzBdLCAyIC0gc3RhdGljX21lbWZ1bmNwLAogCQkJCSAgICBh cmd2ZWMgKyAxKTsKICAgICB9CisgIGlmIChleHRfZm4pCisgICAgeworICAg ICAgaWYgKGV4dF9mbi0+aXNfbWV0aG9kKQorICAgICAgICByZXR1cm4gZXh0 X2ZuX2ludm9rZV9tZXRob2QgKGV4dF9mbiwgYXJnMSwgJmFyZzIsIDEpOwor ICAgIH0KICAgdGhyb3dfZXJyb3IgKE5PVF9GT1VORF9FUlJPUiwKICAgICAg ICAgICAgICAgIF8oIm1lbWJlciBmdW5jdGlvbiAlcyBub3QgZm91bmQiKSwg dHN0cik7CiAjaWZkZWYgbGludApAQCAtNTEwLDYgKzUzNCw3IEBAIHZhbHVl X3hfdW5vcCAoc3RydWN0IHZhbHVlICphcmcxLCBlbnVtIGV4cF9vcGNvZGUg b3AsIGVudW0gbm9zaWRlIG5vc2lkZSkKIHsKICAgc3RydWN0IGdkYmFyY2gg KmdkYmFyY2ggPSBnZXRfdHlwZV9hcmNoICh2YWx1ZV90eXBlIChhcmcxKSk7 CiAgIHN0cnVjdCB2YWx1ZSAqKmFyZ3ZlYzsKKyAgc3RydWN0IGV4dF9mbl9k ZXNjcmlwdG9yICpleHRfZm47CiAgIGNoYXIgKnB0ciwgKm1hbmdsZV9wdHI7 CiAgIGNoYXIgdHN0clsxM10sIG1hbmdsZV90c3RyWzEzXTsKICAgaW50IHN0 YXRpY19tZW1mdW5jcCwgbmFyZ3M7CkBAIC01MjMsNiArNTQ4LDcgQEAgdmFs dWVfeF91bm9wIChzdHJ1Y3QgdmFsdWUgKmFyZzEsIGVudW0gZXhwX29wY29k ZSBvcCwgZW51bSBub3NpZGUgbm9zaWRlKQogICAgIGVycm9yIChfKCJDYW4n dCBkbyB0aGF0IHVuYXJ5IG9wIG9uIHRoYXQgdHlwZSIpKTsJLyogRklYTUUg YmUgZXhwbGljaXQgKi8KIAogICBhcmd2ZWMgPSAoc3RydWN0IHZhbHVlICoq KSBhbGxvY2EgKHNpemVvZiAoc3RydWN0IHZhbHVlICopICogNCk7CisgIGFy Z3ZlY1swXSA9IE5VTEw7CiAgIGFyZ3ZlY1sxXSA9IHZhbHVlX2FkZHIgKGFy ZzEpOwogICBhcmd2ZWNbMl0gPSAwOwogCkBAIC01NzUsOCArNjAxLDggQEAg dmFsdWVfeF91bm9wIChzdHJ1Y3QgdmFsdWUgKmFyZzEsIGVudW0gZXhwX29w Y29kZSBvcCwgZW51bSBub3NpZGUgbm9zaWRlKQogICAgICAgZXJyb3IgKF8o IkludmFsaWQgdW5hcnkgb3BlcmF0aW9uIHNwZWNpZmllZC4iKSk7CiAgICAg fQogCi0gIGFyZ3ZlY1swXSA9IHZhbHVlX3VzZXJfZGVmaW5lZF9vcCAoJmFy ZzEsIGFyZ3ZlYyArIDEsIHRzdHIsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJnN0YXRpY19tZW1mdW5jcCwgbmFyZ3MpOworICB2 YWx1ZV91c2VyX2RlZmluZWRfb3AgKCZhcmcxLCBhcmd2ZWMgKyAxLCB0c3Ry LCAmc3RhdGljX21lbWZ1bmNwLCBuYXJncywKKyAgICAgICAgICAgICAgICAg ICAgICAgICAmYXJndmVjWzBdLCAmZXh0X2ZuKTsKIAogICBpZiAoYXJndmVj WzBdKQogICAgIHsKQEAgLTU5NSw2ICs2MjEsMTEgQEAgdmFsdWVfeF91bm9w IChzdHJ1Y3QgdmFsdWUgKmFyZzEsIGVudW0gZXhwX29wY29kZSBvcCwgZW51 bSBub3NpZGUgbm9zaWRlKQogCSAgcmV0dXJuIHZhbHVlX3plcm8gKHJldHVy bl90eXBlLCBWQUxVRV9MVkFMIChhcmcxKSk7CiAJfQogICAgICAgcmV0dXJu IGNhbGxfZnVuY3Rpb25fYnlfaGFuZCAoYXJndmVjWzBdLCBuYXJncywgYXJn dmVjICsgMSk7CisgICAgfSAKKyAgaWYgKGV4dF9mbikKKyAgICB7CisgICAg ICBpZiAoZXh0X2ZuLT5pc19tZXRob2QpCisgICAgICAgIHJldHVybiBleHRf Zm5faW52b2tlX21ldGhvZCAoZXh0X2ZuLCBhcmcxLCBOVUxMLCAwKTsKICAg ICB9CiAgIHRocm93X2Vycm9yIChOT1RfRk9VTkRfRVJST1IsCiAgICAgICAg ICAgICAgICBfKCJtZW1iZXIgZnVuY3Rpb24gJXMgbm90IGZvdW5kIiksIHRz dHIpOwpkaWZmIC0tZ2l0IGEvZ2RiL3ZhbG9wcy5jIGIvZ2RiL3ZhbG9wcy5j CmluZGV4IGUzZDM2YTEuLjJjYzY3ZDkgMTAwNjQ0Ci0tLSBhL2dkYi92YWxv cHMuYworKysgYi9nZGIvdmFsb3BzLmMKQEAgLTQ1LDYgKzQ1LDcgQEAKICNp bmNsdWRlICJvYmpmaWxlcy5oIgogI2luY2x1ZGUgInN5bXRhYi5oIgogI2lu Y2x1ZGUgImV4Y2VwdGlvbnMuaCIKKyNpbmNsdWRlICJleHQtZnVuY3Rpb24u aCIKIAogZXh0ZXJuIHVuc2lnbmVkIGludCBvdmVybG9hZF9kZWJ1ZzsKIC8q IExvY2FsIGZ1bmN0aW9ucy4gICovCkBAIC03Myw4ICs3NCw4IEBAIGludCBm aW5kX29sb2FkX2NoYW1wX25hbWVzcGFjZV9sb29wIChzdHJ1Y3QgdmFsdWUg KiosIGludCwKIAkJCQkgICAgIGNvbnN0IGludCBub19hZGwpOwogCiBzdGF0 aWMgaW50IGZpbmRfb2xvYWRfY2hhbXAgKHN0cnVjdCB2YWx1ZSAqKiwgaW50 LCBpbnQsIGludCwKLQkJCSAgICAgc3RydWN0IGZuX2ZpZWxkICosIHN0cnVj dCBzeW1ib2wgKiosCi0JCQkgICAgIHN0cnVjdCBiYWRuZXNzX3ZlY3RvciAq Kik7CisJCQkgICAgIHN0cnVjdCBmbl9maWVsZCAqLCBzdHJ1Y3QgZXh0X2Zu X2Rlc2NyaXB0b3IgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c3RydWN0IHN5bWJvbCAqKiwgc3RydWN0IGJhZG5lc3NfdmVjdG9yICoqKTsK IAogc3RhdGljIGludCBvbG9hZF9tZXRob2Rfc3RhdGljIChpbnQsIHN0cnVj dCBmbl9maWVsZCAqLCBpbnQpOwogCkBAIC0xMDEsOSArMTAyLDEwIEBAIHN0 YXRpYyBDT1JFX0FERFIgYWxsb2NhdGVfc3BhY2VfaW5faW5mZXJpb3IgKGlu dCk7CiAKIHN0YXRpYyBzdHJ1Y3QgdmFsdWUgKmNhc3RfaW50b19jb21wbGV4 IChzdHJ1Y3QgdHlwZSAqLCBzdHJ1Y3QgdmFsdWUgKik7CiAKLXN0YXRpYyBz dHJ1Y3QgZm5fZmllbGQgKmZpbmRfbWV0aG9kX2xpc3QgKHN0cnVjdCB2YWx1 ZSAqKiwgY29uc3QgY2hhciAqLAotCQkJCQkgIGludCwgc3RydWN0IHR5cGUg KiwgaW50ICosCi0JCQkJCSAgc3RydWN0IHR5cGUgKiosIGludCAqKTsKK3N0 YXRpYyB2b2lkIGZpbmRfbWV0aG9kX2xpc3QgKHN0cnVjdCB2YWx1ZSAqKiwg Y29uc3QgY2hhciAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg aW50LCBzdHJ1Y3QgdHlwZSAqLCBzdHJ1Y3QgZm5fZmllbGQgKiosIGludCAq LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGV4dF9m bl9kZXNjcmlwdG9yICoqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc3RydWN0IHR5cGUgKiosIGludCAqKTsKIAogdm9pZCBfaW5pdGlhbGl6 ZV92YWxvcHMgKHZvaWQpOwogCkBAIC0yNDMzLDQwICsyNDM1LDUzIEBAIHZh bHVlX3N0cnVjdF9lbHQgKHN0cnVjdCB2YWx1ZSAqKmFyZ3AsIHN0cnVjdCB2 YWx1ZSAqKmFyZ3MsCiAgICAgICBtZXRob2QgaXMgZm91bmQuCiAgICBCT0ZG U0VUIGlzIHRoZSBvZmZzZXQgb2YgdGhlIGJhc2Ugc3Vib2JqZWN0IHdoZXJl IHRoZSBtZXRob2QgaXMgZm91bmQuICAqLwogCi1zdGF0aWMgc3RydWN0IGZu X2ZpZWxkICoKK3N0YXRpYyB2b2lkCiBmaW5kX21ldGhvZF9saXN0IChzdHJ1 Y3QgdmFsdWUgKiphcmdwLCBjb25zdCBjaGFyICptZXRob2QsCi0JCSAgaW50 IG9mZnNldCwgc3RydWN0IHR5cGUgKnR5cGUsIGludCAqbnVtX2ZucywKKwkJ ICBpbnQgb2Zmc2V0LCBzdHJ1Y3QgdHlwZSAqdHlwZSwKKyAgICAgICAgICAg ICAgICAgIHN0cnVjdCBmbl9maWVsZCAqKmZuX2xpc3QsIGludCAqbnVtX2Zu cywKKyAgICAgICAgICAgICAgICAgIHN0cnVjdCBleHRfZm5fZGVzY3JpcHRv ciAqKmV4dF9mbl9saXN0LAogCQkgIHN0cnVjdCB0eXBlICoqYmFzZXR5cGUs IGludCAqYm9mZnNldCkKIHsKICAgaW50IGk7Ci0gIHN0cnVjdCBmbl9maWVs ZCAqZjsKLSAgQ0hFQ0tfVFlQRURFRiAodHlwZSk7CisgIHN0cnVjdCBmbl9m aWVsZCAqZiA9IE5VTEw7CisgIHN0cnVjdCBleHRfZm5fZGVzY3JpcHRvciAq ZWYgPSBOVUxMOwogCi0gICpudW1fZm5zID0gMDsKKyAgQ0hFQ0tfVFlQRURF RiAodHlwZSk7CiAKICAgLyogRmlyc3QgY2hlY2sgaW4gb2JqZWN0IGl0c2Vs Zi4gICovCi0gIGZvciAoaSA9IFRZUEVfTkZOX0ZJRUxEUyAodHlwZSkgLSAx OyBpID49IDA7IGktLSkKLSAgICB7Ci0gICAgICAvKiBwYWk6IEZJWE1FIFdo YXQgYWJvdXQgb3BlcmF0b3JzIGFuZCB0eXBlIGNvbnZlcnNpb25zPyAgKi8K LSAgICAgIGNvbnN0IGNoYXIgKmZuX2ZpZWxkX25hbWUgPSBUWVBFX0ZOX0ZJ RUxETElTVF9OQU1FICh0eXBlLCBpKTsKIAotICAgICAgaWYgKGZuX2ZpZWxk X25hbWUgJiYgKHN0cmNtcF9pdyAoZm5fZmllbGRfbmFtZSwgbWV0aG9kKSA9 PSAwKSkKLQl7Ci0JICBpbnQgbGVuID0gVFlQRV9GTl9GSUVMRExJU1RfTEVO R1RIICh0eXBlLCBpKTsKLQkgIHN0cnVjdCBmbl9maWVsZCAqZiA9IFRZUEVf Rk5fRklFTERMSVNUMSAodHlwZSwgaSk7Ci0KLQkgICpudW1fZm5zID0gbGVu OwotCSAgKmJhc2V0eXBlID0gdHlwZTsKLQkgICpib2Zmc2V0ID0gb2Zmc2V0 OwotCi0JICAvKiBSZXNvbHZlIGFueSBzdHViIG1ldGhvZHMuICAqLwotCSAg Y2hlY2tfc3R1Yl9tZXRob2RfZ3JvdXAgKHR5cGUsIGkpOworICBpZiAoZm5f bGlzdCAmJiAhKCpmbl9saXN0KSkKKyAgICBmb3IgKGkgPSBUWVBFX05GTl9G SUVMRFMgKHR5cGUpIC0gMTsgaSA+PSAwOyBpLS0pCisgICAgICB7CisgICAg ICAgIC8qIHBhaTogRklYTUUgV2hhdCBhYm91dCBvcGVyYXRvcnMgYW5kIHR5 cGUgY29udmVyc2lvbnM/ICAqLworICAgICAgICBjb25zdCBjaGFyICpmbl9m aWVsZF9uYW1lID0gVFlQRV9GTl9GSUVMRExJU1RfTkFNRSAodHlwZSwgaSk7 CisgIAorICAgICAgICBpZiAoZm5fZmllbGRfbmFtZSAmJiAoc3RyY21wX2l3 IChmbl9maWVsZF9uYW1lLCBtZXRob2QpID09IDApKQorICAJeworICAJICBp bnQgbGVuID0gVFlQRV9GTl9GSUVMRExJU1RfTEVOR1RIICh0eXBlLCBpKTsK KyAgCSAgZiA9IFRZUEVfRk5fRklFTERMSVNUMSAodHlwZSwgaSk7CisgICAg ICAgICAgKmZuX2xpc3QgPSBmOworICAKKyAgCSAgKm51bV9mbnMgPSBsZW47 CisgIAkgICpiYXNldHlwZSA9IHR5cGU7CisgIAkgICpib2Zmc2V0ID0gb2Zm c2V0OworICAKKyAgCSAgLyogUmVzb2x2ZSBhbnkgc3R1YiBtZXRob2RzLiAg Ki8KKyAgCSAgY2hlY2tfc3R1Yl9tZXRob2RfZ3JvdXAgKHR5cGUsIGkpOwor ICAKKyAgICAgICAgICAgIGJyZWFrOworICAJfQorICAgICAgfQogCi0JICBy ZXR1cm4gZjsKLQl9CisgIGlmIChleHRfZm5fbGlzdCkKKyAgICB7CisgICAg ICBlZiA9IGdldF9tYXRjaGluZ19leHRfbWV0aG9kcyAodHlwZSwgbWV0aG9k KTsKKyAgICAgICpleHRfZm5fbGlzdCA9IGV4dF9mbl9saXN0X2V4dGVuZCAo KmV4dF9mbl9saXN0LCBlZik7CiAgICAgfQogCi0gIC8qIE5vdCBmb3VuZCBp biBvYmplY3QsIGNoZWNrIGluIGJhc2Ugc3Vib2JqZWN0cy4gICovCisgIC8q IElmIHNvdXJjZSBtZXRob2RzIGFyZSBub3QgZm91bmQgaW4gY3VycmVudCBj bGFzcywgbG9vayBmb3IgdGhlbSBpbiB0aGUKKyAgICAgYmFzZSBjbGFzc2Vz LiAgV2UgaGF2ZSB0byBnbyB0aHJvdWdoIHRoZSBiYXNlIGNsYXNzZXMgdG8g Z2F0aGVyIGV4dGVuc2lvbgorICAgICBtZXRob2RzIGFueXdheS4gICovCiAg IGZvciAoaSA9IFRZUEVfTl9CQVNFQ0xBU1NFUyAodHlwZSkgLSAxOyBpID49 IDA7IGktLSkKICAgICB7CiAgICAgICBpbnQgYmFzZV9vZmZzZXQ7CkBAIC0y NDgzLDEzICsyNDk4LDExIEBAIGZpbmRfbWV0aG9kX2xpc3QgKHN0cnVjdCB2 YWx1ZSAqKmFyZ3AsIGNvbnN0IGNoYXIgKm1ldGhvZCwKIAl7CiAJICBiYXNl X29mZnNldCA9IFRZUEVfQkFTRUNMQVNTX0JJVFBPUyAodHlwZSwgaSkgLyA4 OwogCX0KLSAgICAgIGYgPSBmaW5kX21ldGhvZF9saXN0IChhcmdwLCBtZXRo b2QsIGJhc2Vfb2Zmc2V0ICsgb2Zmc2V0LAotCQkJICAgIFRZUEVfQkFTRUNM QVNTICh0eXBlLCBpKSwgbnVtX2ZucywgCi0JCQkgICAgYmFzZXR5cGUsIGJv ZmZzZXQpOwotICAgICAgaWYgKGYpCi0JcmV0dXJuIGY7CisgICAgICAKKyAg ICAgIGZpbmRfbWV0aG9kX2xpc3QgKGFyZ3AsIG1ldGhvZCwgYmFzZV9vZmZz ZXQgKyBvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICBUWVBFX0JB U0VDTEFTUyAodHlwZSwgaSksIGZuX2xpc3QsIG51bV9mbnMsCisgICAgICAg ICAgICAgICAgICAgICAgICBleHRfZm5fbGlzdCwgYmFzZXR5cGUsIGJvZmZz ZXQpOwogICAgIH0KLSAgcmV0dXJuIE5VTEw7CiB9CiAKIC8qIFJldHVybiB0 aGUgbGlzdCBvZiBvdmVybG9hZGVkIG1ldGhvZHMgb2YgYSBzcGVjaWZpZWQg bmFtZS4KQEAgLTI1MDIsOSArMjUxNSwxMSBAQCBmaW5kX21ldGhvZF9saXN0 IChzdHJ1Y3QgdmFsdWUgKiphcmdwLCBjb25zdCBjaGFyICptZXRob2QsCiAg ICAgICBtZXRob2QuCiAgICBCT0ZGU0VUIGlzIHRoZSBvZmZzZXQgb2YgdGhl IGJhc2Ugc3Vib2JqZWN0IHdoaWNoIGRlZmluZXMgdGhlIG1ldGhvZC4gICov CiAKLXN0YXRpYyBzdHJ1Y3QgZm5fZmllbGQgKgorc3RhdGljIHZvaWQKIHZh bHVlX2ZpbmRfb2xvYWRfbWV0aG9kX2xpc3QgKHN0cnVjdCB2YWx1ZSAqKmFy Z3AsIGNvbnN0IGNoYXIgKm1ldGhvZCwKLQkJCSAgICAgIGludCBvZmZzZXQs IGludCAqbnVtX2ZucywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpbnQgb2Zmc2V0LCBzdHJ1Y3QgZm5fZmllbGQgKipmbl9saXN0LAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpudW1fZm5zLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGV4dF9mbl9kZXNj cmlwdG9yICoqZXh0X2ZuX2xpc3QsCiAJCQkgICAgICBzdHJ1Y3QgdHlwZSAq KmJhc2V0eXBlLCBpbnQgKmJvZmZzZXQpCiB7CiAgIHN0cnVjdCB0eXBlICp0 OwpAQCAtMjUyNiw4ICsyNTQxLDMyIEBAIHZhbHVlX2ZpbmRfb2xvYWRfbWV0 aG9kX2xpc3QgKHN0cnVjdCB2YWx1ZSAqKmFyZ3AsIGNvbnN0IGNoYXIgKm1l dGhvZCwKICAgICBlcnJvciAoXygiQXR0ZW1wdCB0byBleHRyYWN0IGEgY29t cG9uZW50IG9mIGEgIgogCSAgICAgInZhbHVlIHRoYXQgaXMgbm90IGEgc3Ry dWN0IG9yIHVuaW9uIikpOwogCi0gIHJldHVybiBmaW5kX21ldGhvZF9saXN0 IChhcmdwLCBtZXRob2QsIDAsIHQsIG51bV9mbnMsIAotCQkJICAgYmFzZXR5 cGUsIGJvZmZzZXQpOworICAvKiBDbGVhciB0aGUgbGlzdHMuICAqLworICBp ZiAoZm5fbGlzdCkKKyAgICB7CisgICAgICAqZm5fbGlzdCA9IE5VTEw7Cisg ICAgICAqbnVtX2ZucyA9IDA7CisgICAgfQorICBpZiAoZXh0X2ZuX2xpc3Qp CisgICAgKmV4dF9mbl9saXN0ID0gTlVMTDsKKworICBmaW5kX21ldGhvZF9s aXN0IChhcmdwLCBtZXRob2QsIDAsIHQsIGZuX2xpc3QsIG51bV9mbnMsIGV4 dF9mbl9saXN0LAorICAgICAgICAgICAgICAgICAgICBiYXNldHlwZSwgYm9m ZnNldCk7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgdHlwZSAqCit2YWx1ZV9oYXNf aW5kaXJlY3RfZHluYW1pY190eXBlIChzdHJ1Y3QgdmFsdWUgKm9iaikKK3sK KyAgc3RydWN0IHR5cGUgKnN0eXBlLCAqZHR5cGUsICpkdHlwZV9pbmQ7CisK KyAgc3R5cGUgPSBjaGVja190eXBlZGVmIChUWVBFX1RBUkdFVF9UWVBFICh2 YWx1ZV90eXBlIChvYmopKSk7CisgIGR0eXBlX2luZCA9IHZhbHVlX3J0dGlf aW5kaXJlY3RfdHlwZSAob2JqLCBOVUxMLCBOVUxMLCBOVUxMKTsKKyAgZHR5 cGUgPSBkdHlwZV9pbmQgPyBjaGVja190eXBlZGVmIChUWVBFX1RBUkdFVF9U WVBFIChkdHlwZV9pbmQpKSA6IHN0eXBlOworCisgIGlmIChjbGFzc190eXBl c19zYW1lX3AgKHN0eXBlLCBkdHlwZSkpCisgICAgcmV0dXJuIE5VTEw7Cisg IGVsc2UKKyAgICByZXR1cm4gZHR5cGVfaW5kOwogfQogCiAvKiBHaXZlbiBh biBhcnJheSBvZiBhcmd1bWVudHMgKEFSR1MpICh3aGljaCBpbmNsdWRlcyBh bgpAQCAtMjU3Niw3ICsyNjE1LDggQEAgaW50CiBmaW5kX292ZXJsb2FkX21h dGNoIChzdHJ1Y3QgdmFsdWUgKiphcmdzLCBpbnQgbmFyZ3MsCiAJCSAgICAg Y29uc3QgY2hhciAqbmFtZSwgZW51bSBvbG9hZF9zZWFyY2hfdHlwZSBtZXRo b2QsCiAJCSAgICAgaW50IGxheCwgc3RydWN0IHZhbHVlICoqb2JqcCwgc3Ry dWN0IHN5bWJvbCAqZnN5bSwKLQkJICAgICBzdHJ1Y3QgdmFsdWUgKip2YWxw LCBzdHJ1Y3Qgc3ltYm9sICoqc3ltcCwgCisJCSAgICAgc3RydWN0IHZhbHVl ICoqdmFscCwgc3RydWN0IHN5bWJvbCAqKnN5bXAsCisgICAgICAgICAgICAg ICAgICAgICBzdHJ1Y3QgZXh0X2ZuX2Rlc2NyaXB0b3IgKipleHRfZm4sCiAJ CSAgICAgaW50ICpzdGF0aWNwLCBjb25zdCBpbnQgbm9fYWRsKQogewogICBz dHJ1Y3QgdmFsdWUgKm9iaiA9IChvYmpwID8gKm9ianAgOiBOVUxMKTsKQEAg LTI1ODQsMTYgKzI2MjQsMjQgQEAgZmluZF9vdmVybG9hZF9tYXRjaCAoc3Ry dWN0IHZhbHVlICoqYXJncywgaW50IG5hcmdzLAogICAvKiBJbmRleCBvZiBi ZXN0IG92ZXJsb2FkZWQgZnVuY3Rpb24uICAqLwogICBpbnQgZnVuY19vbG9h ZF9jaGFtcCA9IC0xOwogICBpbnQgbWV0aG9kX29sb2FkX2NoYW1wID0gLTE7 CisgIGludCBzcmNfbWV0aG9kX29sb2FkX2NoYW1wID0gLTE7CisgIGludCBz cmNfbWV0aG9kX29sb2FkX2NoYW1wX2JrcCA9IC0xOworICBpbnQgZXh0X21l dGhvZF9vbG9hZF9jaGFtcCA9IC0xOworICBpbnQgc3JjX2FuZF9leHRfZXF1 YWwgPSAwOwogCiAgIC8qIFRoZSBtZWFzdXJlIGZvciB0aGUgY3VycmVudCBi ZXN0IG1hdGNoLiAgKi8KICAgc3RydWN0IGJhZG5lc3NfdmVjdG9yICptZXRo b2RfYmFkbmVzcyA9IE5VTEw7CiAgIHN0cnVjdCBiYWRuZXNzX3ZlY3RvciAq ZnVuY19iYWRuZXNzID0gTlVMTDsKKyAgc3RydWN0IGJhZG5lc3NfdmVjdG9y ICpleHRfbWV0aG9kX2JhZG5lc3MgPSBOVUxMOworICBzdHJ1Y3QgYmFkbmVz c192ZWN0b3IgKnNyY19tZXRob2RfYmFkbmVzcyA9IE5VTEw7CiAKICAgc3Ry dWN0IHZhbHVlICp0ZW1wID0gb2JqOwogICAvKiBGb3IgbWV0aG9kcywgdGhl IGxpc3Qgb2Ygb3ZlcmxvYWRlZCBtZXRob2RzLiAgKi8KICAgc3RydWN0IGZu X2ZpZWxkICpmbnNfcHRyID0gTlVMTDsKICAgLyogRm9yIG5vbi1tZXRob2Rz LCB0aGUgbGlzdCBvZiBvdmVybG9hZGVkIGZ1bmN0aW9uIHN5bWJvbHMuICAq LwogICBzdHJ1Y3Qgc3ltYm9sICoqb2xvYWRfc3ltcyA9IE5VTEw7CisgIC8q IEZvciBleHRlbnNpb24gZnVuY3Rpb25zLCB0aGUgbGlzdCBvZiBleHRlbnNp b24gZnVuY3Rpb24gZGVzY3JpcHRvcnMuICAqLworICBzdHJ1Y3QgZXh0X2Zu X2Rlc2NyaXB0b3IgKmV4dF9mbl9saXN0ID0gTlVMTDsKICAgLyogTnVtYmVy IG9mIG92ZXJsb2FkZWQgaW5zdGFuY2VzIGJlaW5nIGNvbnNpZGVyZWQuICAq LwogICBpbnQgbnVtX2ZucyA9IDA7CiAgIHN0cnVjdCB0eXBlICpiYXNldHlw ZSA9IE5VTEw7CkBAIC0yNjA1LDYgKzI2NTMsOCBAQCBmaW5kX292ZXJsb2Fk X21hdGNoIChzdHJ1Y3QgdmFsdWUgKiphcmdzLCBpbnQgbmFyZ3MsCiAgIGNv bnN0IGNoYXIgKmZ1bmNfbmFtZSA9IE5VTEw7CiAgIGVudW0gb2xvYWRfY2xh c3NpZmljYXRpb24gbWF0Y2hfcXVhbGl0eTsKICAgZW51bSBvbG9hZF9jbGFz c2lmaWNhdGlvbiBtZXRob2RfbWF0Y2hfcXVhbGl0eSA9IElOQ09NUEFUSUJM RTsKKyAgZW51bSBvbG9hZF9jbGFzc2lmaWNhdGlvbiBzcmNfbWV0aG9kX21h dGNoX3F1YWxpdHkgPSBJTkNPTVBBVElCTEU7CisgIGVudW0gb2xvYWRfY2xh c3NpZmljYXRpb24gZXh0X21ldGhvZF9tYXRjaF9xdWFsaXR5ID0gSU5DT01Q QVRJQkxFOwogICBlbnVtIG9sb2FkX2NsYXNzaWZpY2F0aW9uIGZ1bmNfbWF0 Y2hfcXVhbGl0eSA9IElOQ09NUEFUSUJMRTsKIAogICAvKiBHZXQgdGhlIGxp c3Qgb2Ygb3ZlcmxvYWRlZCBtZXRob2RzIG9yIGZ1bmN0aW9ucy4gICovCkBA IC0yNjMzLDEyICsyNjgzLDEzIEBAIGZpbmRfb3ZlcmxvYWRfbWF0Y2ggKHN0 cnVjdCB2YWx1ZSAqKmFyZ3MsIGludCBuYXJncywKIAl9CiAKICAgICAgIC8q IFJldHJpZXZlIHRoZSBsaXN0IG9mIG1ldGhvZHMgd2l0aCB0aGUgbmFtZSBO QU1FLiAgKi8KLSAgICAgIGZuc19wdHIgPSB2YWx1ZV9maW5kX29sb2FkX21l dGhvZF9saXN0ICgmdGVtcCwgbmFtZSwgCi0JCQkJCSAgICAgIDAsICZudW1f Zm5zLCAKLQkJCQkJICAgICAgJmJhc2V0eXBlLCAmYm9mZnNldCk7CisgICAg ICB2YWx1ZV9maW5kX29sb2FkX21ldGhvZF9saXN0ICgmdGVtcCwgbmFtZSwg MCwgJmZuc19wdHIsICZudW1fZm5zLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZXh0X2ZuID8gJmV4dF9mbl9saXN0IDogTlVMTCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZiYXNldHlw ZSwgJmJvZmZzZXQpOwogICAgICAgLyogSWYgdGhpcyBpcyBhIG1ldGhvZCBv bmx5IHNlYXJjaCwgYW5kIG5vIG1ldGhvZHMgd2VyZSBmb3VuZAogICAgICAg ICAgdGhlIHNlYXJjaCBoYXMgZmFpbGQuICAqLwotICAgICAgaWYgKG1ldGhv ZCA9PSBNRVRIT0QgJiYgKCFmbnNfcHRyIHx8ICFudW1fZm5zKSkKKyAgICAg IGlmIChtZXRob2QgPT0gTUVUSE9EICYmICghZm5zX3B0ciB8fCAhbnVtX2Zu cykKKyAgICAgICAgICAmJiAoZXh0X2ZuICYmICFleHRfZm5fbGlzdCkpCiAJ ZXJyb3IgKF8oIkNvdWxkbid0IGZpbmQgbWV0aG9kICVzJXMlcyIpLAogCSAg ICAgICBvYmpfdHlwZV9uYW1lLAogCSAgICAgICAob2JqX3R5cGVfbmFtZSAm JiAqb2JqX3R5cGVfbmFtZSkgPyAiOjoiIDogIiIsCkBAIC0yNjQ5LDE4ICsy NzAwLDgxIEBAIGZpbmRfb3ZlcmxvYWRfbWF0Y2ggKHN0cnVjdCB2YWx1ZSAq KmFyZ3MsIGludCBuYXJncywKICAgICAgIGlmIChmbnNfcHRyKQogCXsKIAkg IGdkYl9hc3NlcnQgKFRZUEVfRE9NQUlOX1RZUEUgKGZuc19wdHJbMF0udHlw ZSkgIT0gTlVMTCk7Ci0JICBtZXRob2Rfb2xvYWRfY2hhbXAgPSBmaW5kX29s b2FkX2NoYW1wIChhcmdzLCBuYXJncywgbWV0aG9kLAotCSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtX2ZucywgZm5zX3B0 ciwKLQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IG9sb2FkX3N5bXMsICZtZXRob2RfYmFkbmVzcyk7Ci0KLQkgIG1ldGhvZF9t YXRjaF9xdWFsaXR5ID0KLQkgICAgICBjbGFzc2lmeV9vbG9hZF9tYXRjaCAo bWV0aG9kX2JhZG5lc3MsIG5hcmdzLAotCSAgICAgICAgICAgICAgICAgICAg ICAgICAgICBvbG9hZF9tZXRob2Rfc3RhdGljIChtZXRob2QsIGZuc19wdHIs Ci0JICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG1ldGhvZF9vbG9hZF9jaGFtcCkpOwotCi0JICBtYWtlX2NsZWFu dXAgKHhmcmVlLCBtZXRob2RfYmFkbmVzcyk7CisJICBzcmNfbWV0aG9kX29s b2FkX2NoYW1wID0gZmluZF9vbG9hZF9jaGFtcCAoYXJncywgbmFyZ3MsIG1l dGhvZCwKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBudW1fZm5zLCBmbnNfcHRyLCBOVUxMLAorCSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9sb2FkX3N5bXMs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICZzcmNfbWV0aG9kX2JhZG5lc3MpOworCisJICBzcmNfbWV0 aG9kX21hdGNoX3F1YWxpdHkgPQorCSAgICAgIGNsYXNzaWZ5X29sb2FkX21h dGNoICgKKyAgICAgICAgICAgICAgICAgIHNyY19tZXRob2RfYmFkbmVzcywg bmFyZ3MsCisJICAgICAgICAgIG9sb2FkX21ldGhvZF9zdGF0aWMgKG1ldGhv ZCwgZm5zX3B0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHNyY19tZXRob2Rfb2xvYWRfY2hhbXApKTsKKworCSAgbWFrZV9j bGVhbnVwICh4ZnJlZSwgc3JjX21ldGhvZF9iYWRuZXNzKTsKIAl9CiAKKyAg ICAgIGlmIChleHRfZm5fbGlzdCkKKyAgICAgICAgeworICAgICAgICAgIGV4 dF9tZXRob2Rfb2xvYWRfY2hhbXAgPSBmaW5kX29sb2FkX2NoYW1wIChhcmdz LCBuYXJncywgbWV0aG9kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBOVUxMLCBleHRfZm5fbGlz dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgTlVMTCwgJmV4dF9tZXRob2RfYmFkbmVzcyk7CisgICAg ICAgICAgZXh0X21ldGhvZF9tYXRjaF9xdWFsaXR5ID0gY2xhc3NpZnlfb2xv YWRfbWF0Y2ggKGV4dF9tZXRob2RfYmFkbmVzcywKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg bmFyZ3MsIDApOworICAgICAgICAgIG1ha2VfY2xlYW51cCAoeGZyZWUsIGV4 dF9tZXRob2RfYmFkbmVzcyk7CisgICAgICAgIH0KKworICAgICAgaWYgKHNy Y19tZXRob2Rfb2xvYWRfY2hhbXAgPj0gMCAmJiBleHRfbWV0aG9kX29sb2Fk X2NoYW1wID49IDApCisgICAgICAgIHsKKyAgICAgICAgICBzd2l0Y2ggKGNv bXBhcmVfYmFkbmVzcyAoZXh0X21ldGhvZF9iYWRuZXNzLCBzcmNfbWV0aG9k X2JhZG5lc3MpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBjYXNl IDA6IC8qIFNyYyBtZXRob2QgYW5kIGV4dCBtZXRob2QgYXJlIGVxdWFsbHkg Z29vZC4gICovCisgICAgICAgICAgICAgICAgc3JjX2FuZF9leHRfZXF1YWwg PSAxOworICAgICAgICAgICAgICBjYXNlIDE6IC8qIFNyYyBtZXRob2QgYW5k IGV4dCBtZXRob2QgYXJlIGluY29tcGF0aWJsZSAgKi8KKyAgICAgICAgICAg ICAgICAvKiBpZiBleHQgbWV0aG9kIG1hdGNoIGlzIG5vdCBzdGFuZGFyZCwg dGhlbiBsZXQgc291cmNlIG1ldGhvZAorICAgICAgICAgICAgICAgICAgIHdp bi4gICovCisgICAgICAgICAgICAgICAgaWYgKGV4dF9tZXRob2RfbWF0Y2hf cXVhbGl0eSAhPSBTVEFOREFSRCkKKyAgICAgICAgICAgICAgICAgIHsKKyAg ICAgICAgICAgICAgICAgICAgbWV0aG9kX29sb2FkX2NoYW1wID0gc3JjX21l dGhvZF9vbG9hZF9jaGFtcDsKKyAgICAgICAgICAgICAgICAgICAgbWV0aG9k X2JhZG5lc3MgPSBzcmNfbWV0aG9kX2JhZG5lc3M7CisgICAgICAgICAgICAg ICAgICAgIGV4dF9tZXRob2Rfb2xvYWRfY2hhbXAgPSAtMTsKKyAgICAgICAg ICAgICAgICAgICAgbWV0aG9kX21hdGNoX3F1YWxpdHkgPSBzcmNfbWV0aG9k X21hdGNoX3F1YWxpdHk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICBjYXNlIDI6IC8q IEV4dCBtZXRob2QgaXMgY2hhbXBpb24uICAqLworICAgICAgICAgICAgICAg IG1ldGhvZF9vbG9hZF9jaGFtcCA9IGV4dF9tZXRob2Rfb2xvYWRfY2hhbXA7 CisgICAgICAgICAgICAgICAgbWV0aG9kX2JhZG5lc3MgPSBleHRfbWV0aG9k X2JhZG5lc3M7CisgICAgICAgICAgICAgICAgc3JjX21ldGhvZF9vbG9hZF9j aGFtcF9ia3AgPSBzcmNfbWV0aG9kX29sb2FkX2NoYW1wOworICAgICAgICAg ICAgICAgIHNyY19tZXRob2Rfb2xvYWRfY2hhbXAgPSAtMTsKKyAgICAgICAg ICAgICAgICBtZXRob2RfbWF0Y2hfcXVhbGl0eSA9IGV4dF9tZXRob2RfbWF0 Y2hfcXVhbGl0eTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg ICAgICAgY2FzZSAzOiAvKiBTcmMgbWV0aG9kIGlzIGNoYW1waW9uLiAgKi8K KyAgICAgICAgICAgICAgICBtZXRob2Rfb2xvYWRfY2hhbXAgPSBzcmNfbWV0 aG9kX29sb2FkX2NoYW1wOworICAgICAgICAgICAgICAgIG1ldGhvZF9iYWRu ZXNzID0gc3JjX21ldGhvZF9iYWRuZXNzOworICAgICAgICAgICAgICAgIGV4 dF9tZXRob2Rfb2xvYWRfY2hhbXAgPSAtMTsKKyAgICAgICAgICAgICAgICBt ZXRob2RfbWF0Y2hfcXVhbGl0eSA9IHNyY19tZXRob2RfbWF0Y2hfcXVhbGl0 eTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgZGVm YXVsdDoKKyAgICAgICAgICAgICAgICBlcnJvciAoXygiSW50ZXJuYWwgZXJy b3I6IHVuZXhwZWN0ZWQgb3ZlcmxvYWQgY29tcGFyaXNvbiAiCisgICAgICAg ICAgICAgICAgICAgICAgICAgInJlc3VsdCIpKTsKKyAgICAgICAgICAgICAg ICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgZWxz ZQorICAgICAgICB7CisgICAgICAgICAgaWYgKHNyY19tZXRob2Rfb2xvYWRf Y2hhbXAgPj0gMCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgbWV0 aG9kX29sb2FkX2NoYW1wID0gc3JjX21ldGhvZF9vbG9hZF9jaGFtcDsKKyAg ICAgICAgICAgICAgbWV0aG9kX2JhZG5lc3MgPSBzcmNfbWV0aG9kX2JhZG5l c3M7CisgICAgICAgICAgICAgIG1ldGhvZF9tYXRjaF9xdWFsaXR5ID0gc3Jj X21ldGhvZF9tYXRjaF9xdWFsaXR5OworICAgICAgICAgICAgfQorICAgICAg ICAgIGlmIChleHRfbWV0aG9kX29sb2FkX2NoYW1wID49IDApCisgICAgICAg ICAgICB7CisgICAgICAgICAgICAgIG1ldGhvZF9vbG9hZF9jaGFtcCA9IGV4 dF9tZXRob2Rfb2xvYWRfY2hhbXA7CisgICAgICAgICAgICAgIG1ldGhvZF9i YWRuZXNzID0gZXh0X21ldGhvZF9iYWRuZXNzOworICAgICAgICAgICAgICBt ZXRob2RfbWF0Y2hfcXVhbGl0eSA9IGV4dF9tZXRob2RfbWF0Y2hfcXVhbGl0 eTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgIH0KIAogICBpZiAo bWV0aG9kID09IE5PTl9NRVRIT0QgfHwgbWV0aG9kID09IEJPVEgpCkBAIC0y ODAzLDIxICsyOTE3LDYgQEAgZmluZF9vdmVybG9hZF9tYXRjaCAoc3RydWN0 IHZhbHVlICoqYXJncywgaW50IG5hcmdzLAogCQkgZnVuY19uYW1lKTsKICAg ICB9CiAKLSAgaWYgKHN0YXRpY3AgIT0gTlVMTCkKLSAgICAqc3RhdGljcCA9 IG9sb2FkX21ldGhvZF9zdGF0aWMgKG1ldGhvZCwgZm5zX3B0ciwgbWV0aG9k X29sb2FkX2NoYW1wKTsKLQotICBpZiAobWV0aG9kX29sb2FkX2NoYW1wID49 IDApCi0gICAgewotICAgICAgaWYgKFRZUEVfRk5fRklFTERfVklSVFVBTF9Q IChmbnNfcHRyLCBtZXRob2Rfb2xvYWRfY2hhbXApKQotCSp2YWxwID0gdmFs dWVfdmlydHVhbF9mbl9maWVsZCAoJnRlbXAsIGZuc19wdHIsIG1ldGhvZF9v bG9hZF9jaGFtcCwKLQkJCQkJYmFzZXR5cGUsIGJvZmZzZXQpOwotICAgICAg ZWxzZQotCSp2YWxwID0gdmFsdWVfZm5fZmllbGQgKCZ0ZW1wLCBmbnNfcHRy LCBtZXRob2Rfb2xvYWRfY2hhbXAsCi0JCQkJYmFzZXR5cGUsIGJvZmZzZXQp OwotICAgIH0KLSAgZWxzZQotICAgICpzeW1wID0gb2xvYWRfc3ltc1tmdW5j X29sb2FkX2NoYW1wXTsKLQogICBpZiAob2JqcCkKICAgICB7CiAgICAgICBz dHJ1Y3QgdHlwZSAqdGVtcF90eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVf dHlwZSAodGVtcCkpOwpAQCAtMjgyNywxMCArMjkyNiw2NiBAQCBmaW5kX292 ZXJsb2FkX21hdGNoIChzdHJ1Y3QgdmFsdWUgKiphcmdzLCBpbnQgbmFyZ3Ms CiAJICAmJiAoVFlQRV9DT0RFIChvYmp0eXBlKSA9PSBUWVBFX0NPREVfUFRS CiAJICAgICAgfHwgVFlQRV9DT0RFIChvYmp0eXBlKSA9PSBUWVBFX0NPREVf UkVGKSkKIAl7Ci0JICB0ZW1wID0gdmFsdWVfYWRkciAodGVtcCk7CisJICAq b2JqcCA9IHZhbHVlX2FkZHIgKHRlbXApOwogCX0KLSAgICAgICpvYmpwID0g dGVtcDsKKyAgICAgIGVsc2UKKyAgICAgICAgKm9ianAgPSB0ZW1wOworICAg IH0KKworICBpZiAoc3RhdGljcCAhPSBOVUxMKQorICAgICpzdGF0aWNwID0g b2xvYWRfbWV0aG9kX3N0YXRpYyAobWV0aG9kLCBmbnNfcHRyLCBtZXRob2Rf b2xvYWRfY2hhbXApOworCisgIGlmIChtZXRob2Rfb2xvYWRfY2hhbXAgPj0g MCkKKyAgICB7CisgICAgICBpZiAoc3JjX21ldGhvZF9vbG9hZF9jaGFtcCA+ PSAwKQorICAgICAgICB7CisgICAgICAgICAgaWYgKFRZUEVfRk5fRklFTERf VklSVFVBTF9QIChmbnNfcHRyLCBtZXRob2Rfb2xvYWRfY2hhbXApKQorICAg ICAgICAgICAgeworICAgICAgICAgICAgICBzdHJ1Y3QgdHlwZSAqZHR5cGU7 CisgICAgICAKKyAgICAgICAgICAgICAgZHR5cGUgPSB2YWx1ZV9oYXNfaW5k aXJlY3RfZHluYW1pY190eXBlIChhcmdzWzBdKTsKKyAgICAgICAgICAgICAg aWYgKGR0eXBlKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg ICAgIGFyZ3NbMF0gPSB2YWx1ZV9jYXN0IChkdHlwZSwgYXJnc1swXSk7Cisg ICAgICAgICAgICAgICAgICBkb19jbGVhbnVwcyAoYWxsX2NsZWFudXBzKTsK KyAgICAgICAgICAgICAgICAgIHJldHVybiBmaW5kX292ZXJsb2FkX21hdGNo IChhcmdzLCBuYXJncywgbmFtZSwgbWV0aG9kLCBsYXgsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqcCwgZnN5 bSwgdmFscCwgc3ltcCwgZXh0X2ZuLAorCQkgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzdGF0aWNwLCBub19hZGwpOworICAgICAgICAgICAgICAg IH0KKyAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICp2YWxw ID0gdmFsdWVfdmlydHVhbF9mbl9maWVsZCAoJnRlbXAsIGZuc19wdHIsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBtZXRob2Rfb2xvYWRfY2hhbXAsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNldHlwZSwgYm9mZnNldCk7 CisgICAgICAgICAgICB9CisgICAgICAgICAgZWxzZQorICAgICAgICAgICAg KnZhbHAgPSB2YWx1ZV9mbl9maWVsZCAoJnRlbXAsIGZuc19wdHIsIG1ldGhv ZF9vbG9hZF9jaGFtcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGJhc2V0eXBlLCBib2Zmc2V0KTsKKyAgICAgICAgfQorICAgICAg ZWxzZQorICAgICAgICB7CisgICAgICAgICAgaWYgKHNyY19hbmRfZXh0X2Vx dWFsIAorICAgICAgICAgICAgICAmJiBUWVBFX0ZOX0ZJRUxEX1ZJUlRVQUxf UCAoZm5zX3B0ciwgc3JjX21ldGhvZF9vbG9hZF9jaGFtcF9ia3ApKQorICAg ICAgICAgICAgeworICAgICAgICAgICAgICBzdHJ1Y3QgdHlwZSAqZHR5cGU7 CisgICAgICAKKyAgICAgICAgICAgICAgZHR5cGUgPSB2YWx1ZV9oYXNfaW5k aXJlY3RfZHluYW1pY190eXBlIChhcmdzWzBdKTsKKyAgICAgICAgICAgICAg aWYgKGR0eXBlKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg ICAgIGFyZ3NbMF0gPSB2YWx1ZV9jYXN0IChkdHlwZSwgYXJnc1swXSk7Cisg ICAgICAgICAgICAgICAgICBkb19jbGVhbnVwcyAoYWxsX2NsZWFudXBzKTsK KyAgICAgICAgICAgICAgICAgIHJldHVybiBmaW5kX292ZXJsb2FkX21hdGNo IChhcmdzLCBuYXJncywgbmFtZSwgbWV0aG9kLCBsYXgsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqcCwgZnN5 bSwgdmFscCwgc3ltcCwgZXh0X2ZuLAorCQkgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzdGF0aWNwLCBub19hZGwpOworICAgICAgICAgICAgICAg IH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICpleHRfZm4gPSBleHRf Zm5fbGlzdF9nZXQgKGV4dF9mbl9saXN0LCBleHRfbWV0aG9kX29sb2FkX2No YW1wKTsKKyAgICAgICAgICBleHRfZm5fbGlzdCA9IGV4dF9mbl9saXN0X3Jl bW92ZSAoZXh0X2ZuX2xpc3QsICpleHRfZm4pOworICAgICAgICAgIGV4dF9m bl9saXN0X2ZyZWUgKGV4dF9mbl9saXN0KTsKKyAgICAgICAgfQogICAgIH0K KyAgZWxzZQorICAgICpzeW1wID0gb2xvYWRfc3ltc1tmdW5jX29sb2FkX2No YW1wXTsKIAogICBkb19jbGVhbnVwcyAoYWxsX2NsZWFudXBzKTsKIApAQCAt Mjk2NSw3ICszMTIwLDcgQEAgZmluZF9vbG9hZF9jaGFtcF9uYW1lc3BhY2Vf bG9vcCAoc3RydWN0IHZhbHVlICoqYXJncywgaW50IG5hcmdzLAogICAgICsr bnVtX2ZuczsKIAogICBuZXdfb2xvYWRfY2hhbXAgPSBmaW5kX29sb2FkX2No YW1wIChhcmdzLCBuYXJncywgMCwgbnVtX2ZucywKLQkJCQkgICAgICBOVUxM LCBuZXdfb2xvYWRfc3ltcywKKwkJCQkgICAgICBOVUxMLCBOVUxMLCBuZXdf b2xvYWRfc3ltcywKIAkJCQkgICAgICAmbmV3X29sb2FkX2NoYW1wX2J2KTsK IAogICAvKiBDYXNlIDE6IFdlIGZvdW5kIGEgZ29vZCBtYXRjaC4gIEZyZWUg ZWFybGllciBtYXRjaGVzIChpZiBhbnkpLApAQCAtMzAxMyw2ICszMTY4LDcg QEAgZmluZF9vbG9hZF9jaGFtcF9uYW1lc3BhY2VfbG9vcCAoc3RydWN0IHZh bHVlICoqYXJncywgaW50IG5hcmdzLAogc3RhdGljIGludAogZmluZF9vbG9h ZF9jaGFtcCAoc3RydWN0IHZhbHVlICoqYXJncywgaW50IG5hcmdzLCBpbnQg bWV0aG9kLAogCQkgIGludCBudW1fZm5zLCBzdHJ1Y3QgZm5fZmllbGQgKmZu c19wdHIsCisgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZXh0X2ZuX2Rlc2Ny aXB0b3IgKmV4dF9mbl9saXN0LAogCQkgIHN0cnVjdCBzeW1ib2wgKipvbG9h ZF9zeW1zLAogCQkgIHN0cnVjdCBiYWRuZXNzX3ZlY3RvciAqKm9sb2FkX2No YW1wX2J2KQogewpAQCAtMzAyOCwxNiArMzE4NCwyNCBAQCBmaW5kX29sb2Fk X2NoYW1wIChzdHJ1Y3QgdmFsdWUgKiphcmdzLCBpbnQgbmFyZ3MsIGludCBt ZXRob2QsCiAgICpvbG9hZF9jaGFtcF9idiA9IE5VTEw7CiAKICAgLyogQ29u c2lkZXIgZWFjaCBjYW5kaWRhdGUgaW4gdHVybi4gICovCi0gIGZvciAoaXgg PSAwOyBpeCA8IG51bV9mbnM7IGl4KyspCisgIGZvciAoaXggPSAwOyAoaXgg PCBudW1fZm5zKSB8fCBleHRfZm5fbGlzdDsgaXgrKykKICAgICB7CiAgICAg ICBpbnQgamo7Ci0gICAgICBpbnQgc3RhdGljX29mZnNldCA9IG9sb2FkX21l dGhvZF9zdGF0aWMgKG1ldGhvZCwgZm5zX3B0ciwgaXgpOworICAgICAgaW50 IHN0YXRpY19vZmZzZXQgPSAwOwogICAgICAgaW50IG5wYXJtczsKICAgICAg IHN0cnVjdCB0eXBlICoqcGFybV90eXBlczsKKyAgICAgIHN0cnVjdCBleHRf Zm5fZGVzY3JpcHRvciAqZXh0X2ZuID0gZXh0X2ZuX2xpc3Q7CisKKyAgICAg IGlmIChleHRfZm5fbGlzdCkKKyAgICAgICAgZXh0X2ZuX2xpc3QgPSBleHRf Zm5fbGlzdC0+bmV4dDsKIAogICAgICAgaWYgKG1ldGhvZCkKIAl7Ci0JICBu cGFybXMgPSBUWVBFX05GSUVMRFMgKFRZUEVfRk5fRklFTERfVFlQRSAoZm5z X3B0ciwgaXgpKTsKKyAgICAgICAgICBpZiAoZm5zX3B0cikKKyAgICAgICAg ICAgIHsKKyAgICAgICAgICAgICAgc3RhdGljX29mZnNldCA9IG9sb2FkX21l dGhvZF9zdGF0aWMgKG1ldGhvZCwgZm5zX3B0ciwgaXgpOworCSAgICAgIG5w YXJtcyA9IFRZUEVfTkZJRUxEUyAoVFlQRV9GTl9GSUVMRF9UWVBFIChmbnNf cHRyLCBpeCkpOworICAgICAgICAgICAgfQogCX0KICAgICAgIGVsc2UKIAl7 CkBAIC0zMDQ2LDEzICszMjEwLDIwIEBAIGZpbmRfb2xvYWRfY2hhbXAgKHN0 cnVjdCB2YWx1ZSAqKmFyZ3MsIGludCBuYXJncywgaW50IG1ldGhvZCwKIAl9 CiAKICAgICAgIC8qIFByZXBhcmUgYXJyYXkgb2YgcGFyYW1ldGVyIHR5cGVz LiAgKi8KLSAgICAgIHBhcm1fdHlwZXMgPSAoc3RydWN0IHR5cGUgKiopIAot CXhtYWxsb2MgKG5wYXJtcyAqIChzaXplb2YgKHN0cnVjdCB0eXBlICopKSk7 Ci0gICAgICBmb3IgKGpqID0gMDsgamogPCBucGFybXM7IGpqKyspCi0JcGFy bV90eXBlc1tqal0gPSAobWV0aG9kCi0JCQkgID8gKFRZUEVfRk5fRklFTERf QVJHUyAoZm5zX3B0ciwgaXgpW2pqXS50eXBlKQotCQkJICA6IFRZUEVfRklF TERfVFlQRSAoU1lNQk9MX1RZUEUgKG9sb2FkX3N5bXNbaXhdKSwgCi0JCQkJ CSAgICAgamopKTsKKyAgICAgIGlmIChmbnNfcHRyIHx8IG9sb2FkX3N5bXMp CisgICAgICAgIHsKKyAgICAgICAgICBwYXJtX3R5cGVzID0gKHN0cnVjdCB0 eXBlICoqKSAKKyAgICAgICAgICAgIHhtYWxsb2MgKG5wYXJtcyAqIChzaXpl b2YgKHN0cnVjdCB0eXBlICopKSk7CisgICAgICAgICAgZm9yIChqaiA9IDA7 IGpqIDwgbnBhcm1zOyBqaisrKQorICAgICAgICAgICAgcGFybV90eXBlc1tq al0gPSAobWV0aG9kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ IChUWVBFX0ZOX0ZJRUxEX0FSR1MgKGZuc19wdHIsIGl4KVtqal0udHlwZSkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogVFlQRV9GSUVMRF9U WVBFIChTWU1CT0xfVFlQRSAob2xvYWRfc3ltc1tpeF0pLCAKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGpqKSk7CisgICAgICAgIH0KKyAgICAg IGVsc2UKKyAgICAgICAgeworICAgICAgICAgIHBhcm1fdHlwZXMgPSBleHRf Zm5fZ2V0X2FyZ3R5cGVzIChleHRfZm4sICZucGFybXMpOworICAgICAgICB9 CiAKICAgICAgIC8qIENvbXBhcmUgcGFyYW1ldGVyIHR5cGVzIHRvIHN1cHBs aWVkIGFyZ3VtZW50IHR5cGVzLiAgU2tpcAogICAgICAgICAgVEhJUyBmb3Ig c3RhdGljIG1ldGhvZHMuICAqLwpkaWZmIC0tZ2l0IGEvZ2RiL3ZhbHVlLmgg Yi9nZGIvdmFsdWUuaAppbmRleCA2N2YxZDA0Li4wODk5MWYwIDEwMDY0NAot LS0gYS9nZGIvdmFsdWUuaAorKysgYi9nZGIvdmFsdWUuaApAQCAtMzEsNiAr MzEsNyBAQCBzdHJ1Y3QgdHlwZTsKIHN0cnVjdCB1aV9maWxlOwogc3RydWN0 IGxhbmd1YWdlX2RlZm47CiBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9uczsK K3N0cnVjdCBleHRfZm5fZGVzY3JpcHRvcjsKIAogLyogVGhlIHN0cnVjdHVy ZSB3aGljaCBkZWZpbmVzIHRoZSB0eXBlIG9mIGEgdmFsdWUuICBJdCBzaG91 bGQgbmV2ZXIKICAgIGJlIHBvc3NpYmxlIGZvciBhIHByb2dyYW0gbHZhbCB2 YWx1ZSB0byBzdXJ2aXZlIG92ZXIgYSBjYWxsIHRvIHRoZQpAQCAtNjQ4LDYg KzY0OSw3IEBAIGV4dGVybiBpbnQgZmluZF9vdmVybG9hZF9tYXRjaCAoc3Ry dWN0IHZhbHVlICoqYXJncywgaW50IG5hcmdzLAogCQkJCWVudW0gb2xvYWRf c2VhcmNoX3R5cGUgbWV0aG9kLCBpbnQgbGF4LAogCQkJCXN0cnVjdCB2YWx1 ZSAqKm9ianAsIHN0cnVjdCBzeW1ib2wgKmZzeW0sCiAJCQkJc3RydWN0IHZh bHVlICoqdmFscCwgc3RydWN0IHN5bWJvbCAqKnN5bXAsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBleHRfZm5fZGVzY3JpcHRv ciAqKmV4dF9mbiwKIAkJCQlpbnQgKnN0YXRpY3AsIGNvbnN0IGludCBub19h ZGwpOwogCiBleHRlcm4gc3RydWN0IHZhbHVlICp2YWx1ZV9maWVsZCAoc3Ry dWN0IHZhbHVlICphcmcxLCBpbnQgZmllbGRubyk7Cg== --047d7b621e0c49f20604d2b96a65 Content-Type: application/octet-stream; name="dm.cc" Content-Disposition: attachment; filename="dm.cc" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hbo0aqgc1 Content-length: 1696 CiNpbmNsdWRlIDxpb3N0cmVhbT4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpu YW1lc3BhY2UgZG9wCnsKCmNsYXNzIEEKewogcHVibGljOgogIGludCBhOwog IGludCBhcnJheVsxMF07CiAgdmlydHVhbCB+QSgpOwogIGludCBvcGVyYXRv cisoY29uc3QgQSAmb2JqKTsKICB2aXJ0dWFsIGludCBvcGVyYXRvci0oY29u c3QgQSAmb2JqKTsKICB2aXJ0dWFsIGludCBnZXRhKCk7Cn07CgpBOjp+QSgp CnsKfQoKaW50IEE6Om9wZXJhdG9yKyhjb25zdCBBICZvYmopCnsKICBjb3V0 IDw8ICJGcm9tIEMrKywgQSArIEEiIDw8IGVuZGw7CiAgcmV0dXJuIGEgKyBv YmouYTsKfQoKaW50IEE6Om9wZXJhdG9yLShjb25zdCBBICZvYmopCnsKICBj b3V0IDw8ICJGcm9tIEMrKywgQSAtIEEiIDw8IGVuZGw7CiAgcmV0dXJuIGEg LSBvYmouYTsKfQoKaW50IEE6OmdldGEodm9pZCkKewogIHJldHVybiBhOwp9 CgpjbGFzcyBCIDogcHVibGljIEEKewogcHVibGljOgogIHZpcnR1YWwgaW50 IG9wZXJhdG9yKihjb25zdCBCICZvYmopOwp9OwoKaW50CkI6Om9wZXJhdG9y Kihjb25zdCBCICZvYmopCnsKICBjb3V0IDw8ICJGcm9tIEMrKywgQiAqIEIi IDw8IGVuZGw7CiAgcmV0dXJuIGEgKiBvYmouYTsKfQoKdHlwZWRlZiBCIEJ0 OwoKdHlwZWRlZiBCdCBCdHQ7CgpjbGFzcyBDIDogcHVibGljIEJ0CnsKIHB1 YmxpYzoKICB2aXJ0dWFsIH5DKCk7Cn07CgpDOjp+QygpIHsgfQoKY2xhc3Mg RCA6IHB1YmxpYyBCCnsKIHB1YmxpYzoKICB2aXJ0dWFsIGludCBvcGVyYXRv ciooY29uc3QgQiAmb2JqKTsKfTsKCmludApEOjpvcGVyYXRvciooY29uc3Qg QiAmb2JqKQp7CiAgY291dCA8PCAiRnJvbSBDKyssIEQgKiBEIiA8PCBlbmRs OwogIHJldHVybiBhICogb2JqLmE7Cn0KCn0KCnVzaW5nIG5hbWVzcGFjZSBk b3A7CgppbnQgZnVuYyhjb25zdCBBICZhKQp7CiAgcmV0dXJuIGEuYTsKfQoK aW50IG1haW4odm9pZCkKewogIEEgYTEsIGEyOwogIGExLmEgPSA1OwogIGEy LmEgPSAxMDsKICBDIGMxOwogIGMxLmEgPSAyMDsKICBCIGIxOwogIGIxLmEg PSAzMDsKICBEIGQxOwogIGQxLmEgPSA1MDsKICBCdCBidDsKICBidC5hID0g NDA7CiAgQSAmcmVmX2MgPSBjMTsKICBCICZyZWZfZCA9IGQxOwogIEJ0dCBi dHQ7CiAgYnR0LmEgPSAtNTsKCiAgZm9yIChpbnQgaSA9IDA7IGkgPCAxMDsg aSsrKQogICAgewogICAgICBhMS5hcnJheVtpXSA9IGEyLmFycmF5W2ldID0g aTsKICAgIH0KCiAgcmV0dXJuIHJlZl9jIC0gcmVmX2Q7Cn0K --047d7b621e0c49f20604d2b96a65 Content-Type: application/octet-stream; name="dm-gdb.py" Content-Disposition: attachment; filename="dm-gdb.py" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hbo0aqgv2 Content-length: 3258 CmZyb20gZ2RiLmRlYnVnbWV0aG9kcyBpbXBvcnQgU2ltcGxlRGVidWdNZXRo b2QKCmRlZiBBX3BsdXNfQShvYmosIG9wcik6CiAgcHJpbnQgJ0Zyb20gUHl0 aG9uIChBX3BsdXNfQSknCiAgcmV0dXJuIG9ialsnYSddICsgb3ByWydhJ10K CmRlZiBwbHVzX3BsdXNfQShvYmopOgogIHJldHVybiBvYmpbJ2EnXSArIDEK CmRlZiBDX21pbnVzX0Mob2JqLCBvcHIpOgogIHByaW50ICdGcm9tIFB5dGhv biAoQ19taW51c19DKScKICByZXR1cm4gb2JqWydhJ10gLSBvcHJbJ2EnXQoK ZGVmIEJfc3Rhcl9CKG9iaiwgb3ByKToKICBwcmludCAnRnJvbSBQeXRob24g KEJfc3Rhcl9CKScKICByZXR1cm4gb2JqWydhJ10gKiBvcHJbJ2EnXQoKZGVm IEFfZ2V0YShvYmopOgogIHByaW50ICdGcm9tIFB5dGhvbiAoQV9nZXRhKScK ICByZXR1cm4gb2JqWydhJ10KCmRlZiBBX2dldGFycmF5KG9iaiwgaW5kZXgp OgogIHByaW50ICdGcm9tIFB5dGhvbiAoQV9nZXRhcnJheSknCiAgcmV0dXJu IG9ialsnYXJyYXknXVtpbmRleF0KCnR5cGVfQSA9IGdkYi5wYXJzZV9hbmRf ZXZhbCgnKGRvcDo6QSAqKSAwJykudHlwZS50YXJnZXQoKQp0eXBlX0IgPSBn ZGIucGFyc2VfYW5kX2V2YWwoJyhkb3A6OkIgKikgMCcpLnR5cGUudGFyZ2V0 KCkKdHlwZV9DID0gZ2RiLnBhcnNlX2FuZF9ldmFsKCcoZG9wOjpDICopIDAn KS50eXBlLnRhcmdldCgpCnR5cGVfaW50ID0gZ2RiLnBhcnNlX2FuZF9ldmFs KCcoaW50ICopIDAnKS50eXBlLnRhcmdldCgpCgpkbV9saXN0ID0gWwogICAg U2ltcGxlRGVidWdNZXRob2QoJ0FfcGx1c19BJywKICAgICAgICAgICAgICAg ICAgICAgICdERUZBVUxUX0RFQlVHX01FVEhPRF9HUk9VUCcsCiAgICAgICAg ICAgICAgICAgICAgICBBX3BsdXNfQSwKICAgICAgICAgICAgICAgICAgICAg ICdeZG9wOjpBJCcsCiAgICAgICAgICAgICAgICAgICAgICAnb3BlcmF0b3Jc KycsCiAgICAgICAgICAgICAgICAgICAgICAjIFRoaXMgaXMgYSByZXBsYWNl bWVudCwgaGVuY2UgbWF0Y2ggdGhlIGFyZyB0eXBlCiAgICAgICAgICAgICAg ICAgICAgICAjIGV4YWN0bHkhCiAgICAgICAgICAgICAgICAgICAgICB0eXBl X0EuY29uc3QoKS5yZWZlcmVuY2UoKSksCiAgICBTaW1wbGVEZWJ1Z01ldGhv ZCgncGx1c19wbHVzX0EnLAogICAgICAgICAgICAgICAgICAgICAgJ0RFRkFV TFRfREVCVUdfTUVUSE9EX0dST1VQJywKICAgICAgICAgICAgICAgICAgICAg IHBsdXNfcGx1c19BLAogICAgICAgICAgICAgICAgICAgICAgJ15kb3A6OkEk JywKICAgICAgICAgICAgICAgICAgICAgICdvcGVyYXRvclwrXCsnKSwKICAg IFNpbXBsZURlYnVnTWV0aG9kKCdDX21pbnVzX0MnLAogICAgICAgICAgICAg ICAgICAgICAgJ0RFRkFVTFRfREVCVUdfTUVUSE9EX0dST1VQJywKICAgICAg ICAgICAgICAgICAgICAgIENfbWludXNfQywKICAgICAgICAgICAgICAgICAg ICAgICdeZG9wOjpDJCcsCiAgICAgICAgICAgICAgICAgICAgICAnb3BlcmF0 b3JcLScsCiAgICAgICAgICAgICAgICAgICAgICB0eXBlX0MpLAogICAgU2lt cGxlRGVidWdNZXRob2QoJ0Jfc3Rhcl9CJywKICAgICAgICAgICAgICAgICAg ICAgICdERUZBVUxUX0RFQlVHX01FVEhPRF9HUk9VUCcsCiAgICAgICAgICAg ICAgICAgICAgICBCX3N0YXJfQiwKICAgICAgICAgICAgICAgICAgICAgICde ZG9wOjpCJCcsCiAgICAgICAgICAgICAgICAgICAgICAnb3BlcmF0b3JcKics CiAgICAgICAgICAgICAgICAgICAgICAjIFRoaXMgaXMgYSByZXBsYWNlbWVu dCwgaGVuY2UgbWF0Y2ggdGhlIGFyZyB0eXBlCiAgICAgICAgICAgICAgICAg ICAgICAjIGV4YWN0bHkhCiAgICAgICAgICAgICAgICAgICAgICB0eXBlX0Iu Y29uc3QoKS5yZWZlcmVuY2UoKSksCiAgICBTaW1wbGVEZWJ1Z01ldGhvZCgn QV9nZXRhJywKICAgICAgICAgICAgICAgICAgICAgICdERUZBVUxUX0RFQlVH X01FVEhPRF9HUk9VUCcsCiAgICAgICAgICAgICAgICAgICAgICBBX2dldGEs CiAgICAgICAgICAgICAgICAgICAgICAnXmRvcDo6QSQnLAogICAgICAgICAg ICAgICAgICAgICAgJ15nZXRhJCcpLAogICAgU2ltcGxlRGVidWdNZXRob2Qo J0FfZ2V0YXJyYXknLAogICAgICAgICAgICAgICAgICAgICAgJ0RFRkFVTFRf REVCVUdfTUVUSE9EX0dST1VQJywKICAgICAgICAgICAgICAgICAgICAgIEFf Z2V0YXJyYXksCiAgICAgICAgICAgICAgICAgICAgICAnXmRvcDo6QSQnLAog ICAgICAgICAgICAgICAgICAgICAgJ15nZXRhcnJheSQnLAogICAgICAgICAg ICAgICAgICAgICAgdHlwZV9pbnQpLApdCgpnZGIuZGVidWdtZXRob2RzLnJl Z2lzdGVyX2RlYnVnX21ldGhvZHMoZ2RiLmN1cnJlbnRfb2JqZmlsZSgpLCBk bV9saXN0KQoKZGVidWdfbWV0aG9kcyA9IGdkYi5jdXJyZW50X29iamZpbGUo KS5kZWJ1Z19tZXRob2RzCg== --047d7b621e0c49f20604d2b96a65--