From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 24375 invoked by alias); 1 Nov 2015 03:27:51 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 24349 invoked by uid 89); 1 Nov 2015 03:27:48 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.7 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=ham version=3.3.2 X-Spam-User: qpsmtpd, 2 recipients X-HELO: mail-vk0-f50.google.com Received: from mail-vk0-f50.google.com (HELO mail-vk0-f50.google.com) (209.85.213.50) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-GCM-SHA256 encrypted) ESMTPS; Sun, 01 Nov 2015 03:27:45 +0000 Received: by vkex70 with SMTP id x70so67942911vke.3; Sat, 31 Oct 2015 20:27:42 -0700 (PDT) MIME-Version: 1.0 X-Received: by 10.31.172.6 with SMTP id v6mr10680708vke.97.1446348462558; Sat, 31 Oct 2015 20:27:42 -0700 (PDT) Received: by 10.103.112.68 with HTTP; Sat, 31 Oct 2015 20:27:42 -0700 (PDT) Date: Sun, 01 Nov 2015 03:27:00 -0000 Message-ID: Subject: [v3 PATCH] Make the default constructors of tuple and pair conditionally explicit. From: Ville Voutilainen To: "gcc-patches@gcc.gnu.org" , libstdc++@gcc.gnu.org, Paolo Carlini Content-Type: multipart/mixed; boundary=001a11438ea65590370523723e55 X-SW-Source: 2015-11/txt/msg00000.txt.bz2 --001a11438ea65590370523723e55 Content-Type: text/plain; charset=UTF-8 Content-length: 1604 In the last meeting, while processing LWG 2510, LWG's guidance was to make the default constructors of pair and tuple conditionally explicit. This patch implements a new trait and uses it in pair and tuple. Paolo, Jonathan is traveling and somewhat unlikely to be able to review this for quite some time, could you please review this patch? Tested on Linux-PPC64. 2015-11-01 Ville Voutilainen Make the default constructors of tuple and pair conditionally explicit. * include/std/type_traits ( __do_is_implicitly_default_constructible_impl __is_implicitly_default_constructible_impl, __is_implicitly_default_constructible_safe, __is_implicitly_default_constructible): New. * include/bits/stl_pair.h (pair::pair()): Use it. * include/std/tuple (tuple<_T1, _T2>::tuple): Use it. * include/std/tuple (ImplicitlyDefaultConstructibleTuple): New. * include/std/tuple (tuple<_Types...>::tuple()): Use it. * testsuite/20_util/declval/requirements/1_neg.cc: Adjust. * testsuite/20_util/is_implicitly_default_constructible/requirements/explicit_instantiation.cc: New. * testsuite/20_util/is_implicitly_default_constructible/requirements/typedefs.cc: Likewise. * testsuite/20_util/is_implicitly_default_constructible/value.cc: Likewise. * testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Adjust. * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc: Likewise. * testsuite/20_util/pair/cons/explicit_construct.cc: Likewise. * testsuite/20_util/tuple/cons/explicit_construct.cc: Likewise. --001a11438ea65590370523723e55 Content-Type: text/plain; charset=US-ASCII; name="conditional-explicit-default-ctors-pair-tuple2.diff" Content-Disposition: attachment; filename="conditional-explicit-default-ctors-pair-tuple2.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_igfyhl640 Content-length: 28914 ZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9pbmNsdWRlL2JpdHMvc3RsX3Bh aXIuaCBiL2xpYnN0ZGMrKy12My9pbmNsdWRlL2JpdHMvc3RsX3BhaXIuaApp bmRleCBhNWE3ODk4Li5kZmNkMzU3IDEwMDY0NAotLS0gYS9saWJzdGRjKyst djMvaW5jbHVkZS9iaXRzL3N0bF9wYWlyLmgKKysrIGIvbGlic3RkYysrLXYz L2luY2x1ZGUvYml0cy9zdGxfcGFpci5oCkBAIC0xNDEsMTMgKzE0MSwyNyBA QCBfR0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0VfVkVSU0lPTgogICAgICAgdGVt cGxhdGUgPHR5cGVuYW1lIF9VMSA9IF9UMSwKICAgICAgICAgICAgICAgICB0 eXBlbmFtZSBfVTIgPSBfVDIsCiAgICAgICAgICAgICAgICAgdHlwZW5hbWUg ZW5hYmxlX2lmPF9fYW5kXzwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpc19kZWZhdWx0X2NvbnN0cnVjdGlibGU8X1UxPiwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc19kZWZhdWx0 X2NvbnN0cnVjdGlibGU8X1UyPj4KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBfX2lzX2ltcGxpY2l0bHlfZGVmYXVsdF9jb25zdHJ1 Y3RpYmxlPF9VMT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgX19pc19pbXBsaWNpdGx5X2RlZmF1bHRfY29uc3RydWN0aWJsZTxf VTI+PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OnZh bHVlLCBib29sPjo6dHlwZSA9IHRydWU+CiAjZW5kaWYKICAgICAgIF9HTElC Q1hYX0NPTlNURVhQUiBwYWlyKCkKICAgICAgIDogZmlyc3QoKSwgc2Vjb25k KCkgeyB9CiAKKyNpZiBfX2NwbHVzcGx1cyA+PSAyMDExMDNMCisgICAgICB0 ZW1wbGF0ZSA8dHlwZW5hbWUgX1UxID0gX1QxLAorICAgICAgICAgICAgICAg IHR5cGVuYW1lIF9VMiA9IF9UMiwKKyAgICAgICAgICAgICAgICB0eXBlbmFt ZSBlbmFibGVfaWY8X19hbmRfPAorICAgICAgICAgICAgICAgICAgICAgICBp c19kZWZhdWx0X2NvbnN0cnVjdGlibGU8X1UxPiwKKyAgICAgICAgICAgICAg ICAgICAgICAgaXNfZGVmYXVsdF9jb25zdHJ1Y3RpYmxlPF9VMj4sCisgICAg ICAgICAgICAgICAgICAgICAgIF9fbm90XzwKKyAgICAgICAgICAgICAgICAg ICAgICAgICBfX2FuZF88X19pc19pbXBsaWNpdGx5X2RlZmF1bHRfY29uc3Ry dWN0aWJsZTxfVTE+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBfX2lzX2ltcGxpY2l0bHlfZGVmYXVsdF9jb25zdHJ1Y3RpYmxlPF9VMj4+ Pj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjp2YWx1 ZSwgYm9vbD46OnR5cGUgPSBmYWxzZT4KKyAgICAgIGV4cGxpY2l0IGNvbnN0 ZXhwciBwYWlyKCkKKyAgICAgIDogZmlyc3QoKSwgc2Vjb25kKCkgeyB9Cisj ZW5kaWYKKwogICAgICAgLyoqIFR3byBvYmplY3RzIG1heSBiZSBwYXNzZWQg dG8gYSBAYyBwYWlyIGNvbnN0cnVjdG9yIHRvIGJlIGNvcGllZC4gICovCiAj aWYgX19jcGx1c3BsdXMgPCAyMDExMDNMCiAgICAgICBwYWlyKGNvbnN0IF9U MSYgX19hLCBjb25zdCBfVDImIF9fYikKZGlmZiAtLWdpdCBhL2xpYnN0ZGMr Ky12My9pbmNsdWRlL3N0ZC90dXBsZSBiL2xpYnN0ZGMrKy12My9pbmNsdWRl L3N0ZC90dXBsZQppbmRleCA4YWYwMWY0Li5lNmMzMmIzIDEwMDY0NAotLS0g YS9saWJzdGRjKystdjMvaW5jbHVkZS9zdGQvdHVwbGUKKysrIGIvbGlic3Rk YysrLXYzL2luY2x1ZGUvc3RkL3R1cGxlCkBAIC01NTEsMTYgKzU1MSwzMSBA QCBfR0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0VfVkVSU0lPTgogICAgICAgICB7 CiAgICAgICAgICAgcmV0dXJuIF9fYW5kXzxpc19kZWZhdWx0X2NvbnN0cnVj dGlibGU8X0VsZW1lbnRzPi4uLj46OnZhbHVlOwogICAgICAgICB9CisgICAg ICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBfSW1wbGljaXRseURlZmF1bHRD b25zdHJ1Y3RpYmxlVHVwbGUoKQorICAgICAgICB7CisgICAgICAgICAgcmV0 dXJuIF9fYW5kXzxfX2lzX2ltcGxpY2l0bHlfZGVmYXVsdF9jb25zdHJ1Y3Rp YmxlPF9FbGVtZW50cz4uLi4+CisgICAgICAgICAgICA6OnZhbHVlOworICAg ICAgICB9CiAgICAgICB9OwogCiAgICAgcHVibGljOgogICAgICAgdGVtcGxh dGU8dHlwZW5hbWUgX0R1bW15ID0gdm9pZCwKICAgICAgICAgICAgICAgIHR5 cGVuYW1lIGVuYWJsZV9pZjxfVEMyPF9EdW1teT46OgotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgX0RlZmF1bHRDb25zdHJ1Y3RpYmxl VHVwbGUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IF9JbXBsaWNpdGx5RGVmYXVsdENvbnN0cnVjdGlibGVUdXBsZSgpLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2w+Ojp0eXBlID0g dHJ1ZT4KICAgICAgIGNvbnN0ZXhwciB0dXBsZSgpCiAgICAgICA6IF9Jbmhl cml0ZWQoKSB7IH0KIAorICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0R1bW15 ID0gdm9pZCwKKyAgICAgICAgICAgICAgIHR5cGVuYW1lIGVuYWJsZV9pZjxf VEMyPF9EdW1teT46OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgX0RlZmF1bHRDb25zdHJ1Y3RpYmxlVHVwbGUoKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICYmCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIV9UQzI8X0R1bW15Pjo6CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBfSW1wbGljaXRseURlZmF1bHRD b25zdHJ1Y3RpYmxlVHVwbGUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBib29sPjo6dHlwZSA9IGZhbHNlPgorICAgICAgZXhwbGlj aXQgY29uc3RleHByIHR1cGxlKCkKKyAgICAgIDogX0luaGVyaXRlZCgpIHsg fQorCiAgICAgICAvLyBTaG9ydGN1dCBmb3IgdGhlIGNhc2VzIHdoZXJlIGNv bnN0cnVjdG9ycyB0YWtpbmcgX0VsZW1lbnRzLi4uCiAgICAgICAvLyBuZWVk IHRvIGJlIGNvbnN0cmFpbmVkLgogICAgICAgdGVtcGxhdGU8dHlwZW5hbWUg X0R1bW15PiB1c2luZyBfVENDID0KQEAgLTgzNywxMyArODUyLDI3IEBAIF9H TElCQ1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCiAgICAgICB0ZW1wbGF0 ZSA8dHlwZW5hbWUgX1UxID0gX1QxLAogICAgICAgICAgICAgICAgIHR5cGVu YW1lIF9VMiA9IF9UMiwKICAgICAgICAgICAgICAgICB0eXBlbmFtZSBlbmFi bGVfaWY8X19hbmRfPAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGlzX2RlZmF1bHRfY29uc3RydWN0aWJsZTxfVTE+LAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzX2RlZmF1bHRfY29u c3RydWN0aWJsZTxfVTI+PgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIF9faXNfaW1wbGljaXRseV9kZWZhdWx0X2NvbnN0cnVjdGli bGU8X1UxPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBfX2lzX2ltcGxpY2l0bHlfZGVmYXVsdF9jb25zdHJ1Y3RpYmxlPF9VMj4+ CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6dmFsdWUs IGJvb2w+Ojp0eXBlID0gdHJ1ZT4KIAogICAgICAgY29uc3RleHByIHR1cGxl KCkKICAgICAgIDogX0luaGVyaXRlZCgpIHsgfQogCisgICAgICB0ZW1wbGF0 ZSA8dHlwZW5hbWUgX1UxID0gX1QxLAorICAgICAgICAgICAgICAgIHR5cGVu YW1lIF9VMiA9IF9UMiwKKyAgICAgICAgICAgICAgICB0eXBlbmFtZSBlbmFi bGVfaWY8CisgICAgICAgICAgICAgICAgICBfX2FuZF88CisgICAgICAgICAg ICAgICAgICAgIGlzX2RlZmF1bHRfY29uc3RydWN0aWJsZTxfVTE+LAorICAg ICAgICAgICAgICAgICAgICBpc19kZWZhdWx0X2NvbnN0cnVjdGlibGU8X1Uy PiwKKyAgICAgICAgICAgICAgICAgICAgX19ub3RfPAorICAgICAgICAgICAg ICAgICAgICAgIF9fYW5kXzxfX2lzX2ltcGxpY2l0bHlfZGVmYXVsdF9jb25z dHJ1Y3RpYmxlPF9VMT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg IF9faXNfaW1wbGljaXRseV9kZWZhdWx0X2NvbnN0cnVjdGlibGU8X1UyPj4+ PgorICAgICAgICAgICAgICAgICAgOjp2YWx1ZSwgYm9vbD46OnR5cGUgPSBm YWxzZT4KKworICAgICAgZXhwbGljaXQgY29uc3RleHByIHR1cGxlKCkKKyAg ICAgIDogX0luaGVyaXRlZCgpIHsgfQorCiAgICAgICAvLyBTaG9ydGN1dCBm b3IgdGhlIGNhc2VzIHdoZXJlIGNvbnN0cnVjdG9ycyB0YWtpbmcgX1QxLCBf VDIKICAgICAgIC8vIG5lZWQgdG8gYmUgY29uc3RyYWluZWQuCiAgICAgICB0 ZW1wbGF0ZTx0eXBlbmFtZSBfRHVtbXk+IHVzaW5nIF9UQ0MgPQpkaWZmIC0t Z2l0IGEvbGlic3RkYysrLXYzL2luY2x1ZGUvc3RkL3R5cGVfdHJhaXRzIGIv bGlic3RkYysrLXYzL2luY2x1ZGUvc3RkL3R5cGVfdHJhaXRzCmluZGV4IGUw ODEzMWIuLmJjNjhiZTUgMTAwNjQ0Ci0tLSBhL2xpYnN0ZGMrKy12My9pbmNs dWRlL3N0ZC90eXBlX3RyYWl0cworKysgYi9saWJzdGRjKystdjMvaW5jbHVk ZS9zdGQvdHlwZV90cmFpdHMKQEAgLTEzMzcsNiArMTMzNywzNyBAQCBfR0xJ QkNYWF9CRUdJTl9OQU1FU1BBQ0VfVkVSU0lPTgogICAgIDogcHVibGljIGlz X3RyaXZpYWxseV9jb25zdHJ1Y3RpYmxlPF9UcD46OnR5cGUKICAgICB7IH07 CiAKKyAgc3RydWN0IF9fZG9faXNfaW1wbGljaXRseV9kZWZhdWx0X2NvbnN0 cnVjdGlibGVfaW1wbAorICB7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIF9U cD4KKyAgICBzdGF0aWMgdm9pZCBfX2hlbHBlcihjb25zdCBfVHAmKTsKKwor ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBfVHA+CisgICAgc3RhdGljIHRydWVf dHlwZSBfX3Rlc3QoY29uc3QgX1RwJiwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICBkZWNsdHlwZShfX2hlbHBlcjxjb25zdCBfVHAmPih7fSkpKiA9 IDApOworCisgICAgc3RhdGljIGZhbHNlX3R5cGUgX190ZXN0KC4uLik7Cisg IH07CisKKyAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgorICAgIHN0cnVjdCBf X2lzX2ltcGxpY2l0bHlfZGVmYXVsdF9jb25zdHJ1Y3RpYmxlX2ltcGwKKyAg ICAgIDogcHVibGljIF9fZG9faXNfaW1wbGljaXRseV9kZWZhdWx0X2NvbnN0 cnVjdGlibGVfaW1wbAorICB7CisgICAgdHlwZWRlZiBkZWNsdHlwZShfX3Rl c3QoZGVjbHZhbDxfVHA+KCkpKSB0eXBlOworICB9OworCisgIHRlbXBsYXRl PHR5cGVuYW1lIF9UcD4KKyAgICBzdHJ1Y3QgX19pc19pbXBsaWNpdGx5X2Rl ZmF1bHRfY29uc3RydWN0aWJsZV9zYWZlCisgICAgICA6IHB1YmxpYyBfX2lz X2ltcGxpY2l0bHlfZGVmYXVsdF9jb25zdHJ1Y3RpYmxlX2ltcGw8X1RwPjo6 dHlwZQorICB7IH07CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIF9UcD4KKyAg ICBzdHJ1Y3QgX19pc19pbXBsaWNpdGx5X2RlZmF1bHRfY29uc3RydWN0aWJs ZQorICAgICAgOiBwdWJsaWMgaW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwKKyAg ICAgICAgICAgICAgICAgICAgKGlzX2RlZmF1bHRfY29uc3RydWN0aWJsZTxf VHA+Ojp2YWx1ZQorICAgICAgICAgICAgICAgICAgICAmJiBfX2lzX2ltcGxp Y2l0bHlfZGVmYXVsdF9jb25zdHJ1Y3RpYmxlX3NhZmU8X1RwPjo6dmFsdWUp PgorICB7IH07CisKICAgLy8vIGlzX3RyaXZpYWxseV9jb3B5X2NvbnN0cnVj dGlibGUKICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgIHN0cnVjdCBp c190cml2aWFsbHlfY29weV9jb25zdHJ1Y3RpYmxlCmRpZmYgLS1naXQgYS9s aWJzdGRjKystdjMvdGVzdHN1aXRlLzIwX3V0aWwvZGVjbHZhbC9yZXF1aXJl bWVudHMvMV9uZWcuY2MgYi9saWJzdGRjKystdjMvdGVzdHN1aXRlLzIwX3V0 aWwvZGVjbHZhbC9yZXF1aXJlbWVudHMvMV9uZWcuY2MKaW5kZXggMjcyM2U1 Yy4uZmY3ZDlmZiAxMDA2NDQKLS0tIGEvbGlic3RkYysrLXYzL3Rlc3RzdWl0 ZS8yMF91dGlsL2RlY2x2YWwvcmVxdWlyZW1lbnRzLzFfbmVnLmNjCisrKyBi L2xpYnN0ZGMrKy12My90ZXN0c3VpdGUvMjBfdXRpbC9kZWNsdmFsL3JlcXVp cmVtZW50cy8xX25lZy5jYwpAQCAtMTksNyArMTksNyBAQAogLy8gd2l0aCB0 aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBz ZWUKIC8vIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIAotLy8g eyBkZy1lcnJvciAic3RhdGljIGFzc2VydGlvbiBmYWlsZWQiICIiIHsgdGFy Z2V0ICotKi0qIH0gMjIwOSB9CisvLyB7IGRnLWVycm9yICJzdGF0aWMgYXNz ZXJ0aW9uIGZhaWxlZCIgIiIgeyB0YXJnZXQgKi0qLSogfSAyMjQwIH0KIAog I2luY2x1ZGUgPHV0aWxpdHk+CiAKZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12 My90ZXN0c3VpdGUvMjBfdXRpbC9pc19pbXBsaWNpdGx5X2RlZmF1bHRfY29u c3RydWN0aWJsZS9yZXF1aXJlbWVudHMvZXhwbGljaXRfaW5zdGFudGlhdGlv bi5jYyBiL2xpYnN0ZGMrKy12My90ZXN0c3VpdGUvMjBfdXRpbC9pc19pbXBs aWNpdGx5X2RlZmF1bHRfY29uc3RydWN0aWJsZS9yZXF1aXJlbWVudHMvZXhw bGljaXRfaW5zdGFudGlhdGlvbi5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi5hY2M5ZjM3Ci0tLSAvZGV2L251bGwKKysrIGIvbGli c3RkYysrLXYzL3Rlc3RzdWl0ZS8yMF91dGlsL2lzX2ltcGxpY2l0bHlfZGVm YXVsdF9jb25zdHJ1Y3RpYmxlL3JlcXVpcmVtZW50cy9leHBsaWNpdF9pbnN0 YW50aWF0aW9uLmNjCkBAIC0wLDAgKzEsMjcgQEAKKy8vIHsgZGctb3B0aW9u cyAiLXN0ZD1nbnUrKzExIiB9CisvLyB7IGRnLWRvIGNvbXBpbGUgfQorCisv LyBDb3B5cmlnaHQgKEMpIDIwMTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBJbmMuCisvLworLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBJ U08gQysrIExpYnJhcnkuICBUaGlzIGxpYnJhcnkgaXMgZnJlZQorLy8gc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkg aXQgdW5kZXIgdGhlCisvLyB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQorLy8gRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzLCBvciAoYXQgeW91 ciBvcHRpb24pCisvLyBhbnkgbGF0ZXIgdmVyc2lvbi4KKworLy8gVGhpcyBs aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSB1c2VmdWwsCisvLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorLy8gTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZQorLy8gR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y IG1vcmUgZGV0YWlscy4KKworLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk IGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxv bmcKKy8vIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlO RzMuICBJZiBub3Qgc2VlCisvLyA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vu c2VzLz4uCisKKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KKworbmFtZXNwYWNl IHN0ZAoreworICB0eXBlZGVmIHNob3J0IHRlc3RfdHlwZTsKKyAgdGVtcGxh dGUgc3RydWN0IHN0ZDo6X19pc19pbXBsaWNpdGx5X2RlZmF1bHRfY29uc3Ry dWN0aWJsZTx0ZXN0X3R5cGU+OworfQpkaWZmIC0tZ2l0IGEvbGlic3RkYysr LXYzL3Rlc3RzdWl0ZS8yMF91dGlsL2lzX2ltcGxpY2l0bHlfZGVmYXVsdF9j b25zdHJ1Y3RpYmxlL3JlcXVpcmVtZW50cy90eXBlZGVmcy5jYyBiL2xpYnN0 ZGMrKy12My90ZXN0c3VpdGUvMjBfdXRpbC9pc19pbXBsaWNpdGx5X2RlZmF1 bHRfY29uc3RydWN0aWJsZS9yZXF1aXJlbWVudHMvdHlwZWRlZnMuY2MKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjM0YjA2YwotLS0g L2Rldi9udWxsCisrKyBiL2xpYnN0ZGMrKy12My90ZXN0c3VpdGUvMjBfdXRp bC9pc19pbXBsaWNpdGx5X2RlZmF1bHRfY29uc3RydWN0aWJsZS9yZXF1aXJl bWVudHMvdHlwZWRlZnMuY2MKQEAgLTAsMCArMSwzMiBAQAorLy8geyBkZy1v cHRpb25zICItc3RkPWdudSsrMTEiIH0KKy8vIHsgZGctZG8gY29tcGlsZSB9 CisKKy8vIENvcHlyaWdodCAoQykgMjAxNSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KKy8vCisvLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUg R05VIElTTyBDKysgTGlicmFyeS4gIFRoaXMgbGlicmFyeSBpcyBmcmVlCisv LyBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeSBpdCB1bmRlciB0aGUKKy8vIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCisvLyBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMsIG9yIChh dCB5b3VyIG9wdGlvbikKKy8vIGFueSBsYXRlciB2ZXJzaW9uLgorLy8KKy8v IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAorLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKy8v IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRS4gIFNlZSB0aGUKKy8vIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCisvLworLy8gWW91IHNob3VsZCBoYXZl IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYWxvbmcKKy8vIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp bGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCisvLyA8aHR0cDovL3d3dy5nbnUu b3JnL2xpY2Vuc2VzLz4uCisKKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KKwor Cit2b2lkIHRlc3QwMSgpCit7CisgIC8vIENoZWNrIGZvciByZXF1aXJlZCB0 eXBlZGVmcworICB0eXBlZGVmIHN0ZDo6X19pc19pbXBsaWNpdGx5X2RlZmF1 bHRfY29uc3RydWN0aWJsZTxpbnQ+ICAgICAgICAgIHRlc3RfdHlwZTsKKyAg dHlwZWRlZiB0ZXN0X3R5cGU6OnZhbHVlX3R5cGUgICAgICAgICAgICAgICAg ICAgICB2YWx1ZV90eXBlOworICB0eXBlZGVmIHRlc3RfdHlwZTo6dHlwZSAg ICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU7CisgIHR5cGVkZWYgdGVz dF90eXBlOjp0eXBlOjp2YWx1ZV90eXBlICAgICAgICAgICAgICAgdHlwZV92 YWx1ZV90eXBlOworICB0eXBlZGVmIHRlc3RfdHlwZTo6dHlwZTo6dHlwZSAg ICAgICAgICAgICAgICAgICAgIHR5cGVfdHlwZTsKK30KZGlmZiAtLWdpdCBh L2xpYnN0ZGMrKy12My90ZXN0c3VpdGUvMjBfdXRpbC9pc19pbXBsaWNpdGx5 X2RlZmF1bHRfY29uc3RydWN0aWJsZS92YWx1ZS5jYyBiL2xpYnN0ZGMrKy12 My90ZXN0c3VpdGUvMjBfdXRpbC9pc19pbXBsaWNpdGx5X2RlZmF1bHRfY29u c3RydWN0aWJsZS92YWx1ZS5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi5hZmY0OTU1Ci0tLSAvZGV2L251bGwKKysrIGIvbGlic3Rk YysrLXYzL3Rlc3RzdWl0ZS8yMF91dGlsL2lzX2ltcGxpY2l0bHlfZGVmYXVs dF9jb25zdHJ1Y3RpYmxlL3ZhbHVlLmNjCkBAIC0wLDAgKzEsNDQgQEAKKy8v IHsgZGctb3B0aW9ucyAiLXN0ZD1nbnUrKzExIiB9CisvLyB7IGRnLWRvIGNv bXBpbGUgfQorCisvLyBDb3B5cmlnaHQgKEMpIDIwMTUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBJbmMuCisvLworLy8gVGhpcyBmaWxlIGlzIHBhcnQg b2YgdGhlIEdOVSBJU08gQysrIExpYnJhcnkuICBUaGlzIGxpYnJhcnkgaXMg ZnJlZQorLy8gc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlCisvLyB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQor Ly8gRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAz LCBvciAoYXQgeW91ciBvcHRpb24pCisvLyBhbnkgbGF0ZXIgdmVyc2lvbi4K Ky8vCisvLyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKy8vIGJ1dCBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5 IG9mCisvLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisvLyBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorLy8KKy8vIFlvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFsb25nCisvLyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl IHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQorLy8gPGh0dHA6Ly93 d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorCisjaW5jbHVkZSA8dHlwZV90cmFp dHM+CisKK3N0cnVjdCBFeHBsaWNpdERlZmF1bHQKK3sKKyAgZXhwbGljaXQg RXhwbGljaXREZWZhdWx0KCkge30KK307CisKK3N0cnVjdCBFeHBsaWNpdERl ZmF1bHREZWZhdWx0Cit7CisgIGV4cGxpY2l0IEV4cGxpY2l0RGVmYXVsdERl ZmF1bHQoKSA9IGRlZmF1bHQ7Cit9OworCit2b2lkIHRlc3QwMSgpCit7Cisg IHVzaW5nIHN0ZDo6X19pc19pbXBsaWNpdGx5X2RlZmF1bHRfY29uc3RydWN0 aWJsZTsKKyAgLy8gUG9zaXRpdmUgdGVzdHMuCisgIHN0YXRpY19hc3NlcnQo X19pc19pbXBsaWNpdGx5X2RlZmF1bHRfY29uc3RydWN0aWJsZTxpbnQ+Ojp2 YWx1ZSwgIiIpOworICAvLyBOZWdhdGl2ZSB0ZXN0cy4KKyAgc3RhdGljX2Fz c2VydCghX19pc19pbXBsaWNpdGx5X2RlZmF1bHRfY29uc3RydWN0aWJsZTxp bnQmPjo6dmFsdWUsICIiKTsKKyAgc3RhdGljX2Fzc2VydCghX19pc19pbXBs aWNpdGx5X2RlZmF1bHRfY29uc3RydWN0aWJsZTwKKyAgICAgICAgICAgICAg ICBFeHBsaWNpdERlZmF1bHQ+Ojp2YWx1ZSwgIiIpOworICBzdGF0aWNfYXNz ZXJ0KCFfX2lzX2ltcGxpY2l0bHlfZGVmYXVsdF9jb25zdHJ1Y3RpYmxlPAor ICAgICAgICAgICAgICAgIEV4cGxpY2l0RGVmYXVsdERlZmF1bHQ+Ojp2YWx1 ZSwgIiIpOworfQpkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL3Rlc3RzdWl0 ZS8yMF91dGlsL21ha2Vfc2lnbmVkL3JlcXVpcmVtZW50cy90eXBlZGVmc19u ZWcuY2MgYi9saWJzdGRjKystdjMvdGVzdHN1aXRlLzIwX3V0aWwvbWFrZV9z aWduZWQvcmVxdWlyZW1lbnRzL3R5cGVkZWZzX25lZy5jYwppbmRleCA1MDc5 MzBkLi5lMDZjYjk5IDEwMDY0NAotLS0gYS9saWJzdGRjKystdjMvdGVzdHN1 aXRlLzIwX3V0aWwvbWFrZV9zaWduZWQvcmVxdWlyZW1lbnRzL3R5cGVkZWZz X25lZy5jYworKysgYi9saWJzdGRjKystdjMvdGVzdHN1aXRlLzIwX3V0aWwv bWFrZV9zaWduZWQvcmVxdWlyZW1lbnRzL3R5cGVkZWZzX25lZy5jYwpAQCAt NDgsNCArNDgsNCBAQCB2b2lkIHRlc3QwMSgpCiAvLyB7IGRnLWVycm9yICJy ZXF1aXJlZCBmcm9tIGhlcmUiICIiIHsgdGFyZ2V0ICotKi0qIH0gNDAgfQog Ly8geyBkZy1lcnJvciAicmVxdWlyZWQgZnJvbSBoZXJlIiAiIiB7IHRhcmdl dCAqLSotKiB9IDQyIH0KIAotLy8geyBkZy1lcnJvciAiaW52YWxpZCB1c2Ug b2YgaW5jb21wbGV0ZSB0eXBlIiAiIiB7IHRhcmdldCAqLSotKiB9IDE4NzQg fQorLy8geyBkZy1lcnJvciAiaW52YWxpZCB1c2Ugb2YgaW5jb21wbGV0ZSB0 eXBlIiAiIiB7IHRhcmdldCAqLSotKiB9IDE5MDUgfQpkaWZmIC0tZ2l0IGEv bGlic3RkYysrLXYzL3Rlc3RzdWl0ZS8yMF91dGlsL21ha2VfdW5zaWduZWQv cmVxdWlyZW1lbnRzL3R5cGVkZWZzX25lZy5jYyBiL2xpYnN0ZGMrKy12My90 ZXN0c3VpdGUvMjBfdXRpbC9tYWtlX3Vuc2lnbmVkL3JlcXVpcmVtZW50cy90 eXBlZGVmc19uZWcuY2MKaW5kZXggNjA4ZmQxYS4uMjEzMzVjZSAxMDA2NDQK LS0tIGEvbGlic3RkYysrLXYzL3Rlc3RzdWl0ZS8yMF91dGlsL21ha2VfdW5z aWduZWQvcmVxdWlyZW1lbnRzL3R5cGVkZWZzX25lZy5jYworKysgYi9saWJz dGRjKystdjMvdGVzdHN1aXRlLzIwX3V0aWwvbWFrZV91bnNpZ25lZC9yZXF1 aXJlbWVudHMvdHlwZWRlZnNfbmVnLmNjCkBAIC00OCw1ICs0OCw1IEBAIHZv aWQgdGVzdDAxKCkKIC8vIHsgZGctZXJyb3IgInJlcXVpcmVkIGZyb20gaGVy ZSIgIiIgeyB0YXJnZXQgKi0qLSogfSA0MCB9CiAvLyB7IGRnLWVycm9yICJy ZXF1aXJlZCBmcm9tIGhlcmUiICIiIHsgdGFyZ2V0ICotKi0qIH0gNDIgfQog Ci0vLyB7IGRnLWVycm9yICJpbnZhbGlkIHVzZSBvZiBpbmNvbXBsZXRlIHR5 cGUiICIiIHsgdGFyZ2V0ICotKi0qIH0gMTc3MCB9Ci0vLyB7IGRnLWVycm9y ICJkZWNsYXJhdGlvbiBvZiIgIiIgeyB0YXJnZXQgKi0qLSogfSAxNzI3IH0K Ky8vIHsgZGctZXJyb3IgImludmFsaWQgdXNlIG9mIGluY29tcGxldGUgdHlw ZSIgIiIgeyB0YXJnZXQgKi0qLSogfSAxODAxIH0KKy8vIHsgZGctZXJyb3Ig ImRlY2xhcmF0aW9uIG9mIiAiIiB7IHRhcmdldCAqLSotKiB9IDE3NTggfQpk aWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL3Rlc3RzdWl0ZS8yMF91dGlsL3Bh aXIvY29ucy9leHBsaWNpdF9jb25zdHJ1Y3QuY2MgYi9saWJzdGRjKystdjMv dGVzdHN1aXRlLzIwX3V0aWwvcGFpci9jb25zL2V4cGxpY2l0X2NvbnN0cnVj dC5jYwppbmRleCA1MGVkZGE5Li5hYzFkYzdlIDEwMDY0NAotLS0gYS9saWJz dGRjKystdjMvdGVzdHN1aXRlLzIwX3V0aWwvcGFpci9jb25zL2V4cGxpY2l0 X2NvbnN0cnVjdC5jYworKysgYi9saWJzdGRjKystdjMvdGVzdHN1aXRlLzIw X3V0aWwvcGFpci9jb25zL2V4cGxpY2l0X2NvbnN0cnVjdC5jYwpAQCAtMjYs NiArMjYsMTYgQEAgc3RydWN0IEV4cGxpY2l0CiAgIGV4cGxpY2l0IEV4cGxp Y2l0KGludCkge30KIH07CiAKK3N0cnVjdCBFeHBsaWNpdERlZmF1bHQKK3sK KyAgZXhwbGljaXQgRXhwbGljaXREZWZhdWx0KCkge30KK307CisKK3N0cnVj dCBFeHBsaWNpdERlZmF1bHREZWZhdWx0Cit7CisgIGV4cGxpY2l0IEV4cGxp Y2l0RGVmYXVsdERlZmF1bHQoKSA9IGRlZmF1bHQ7Cit9OworCiBzdGQ6OnBh aXI8aW50LCBpbnQ+IGYxKCkge3JldHVybiB7MSwyfTt9CiAKIHN0ZDo6cGFp cjxFeHBsaWNpdCwgRXhwbGljaXQ+IGYyKCkge3JldHVybiB7MSwyfTt9IC8v IHsgZGctZXJyb3IgImV4cGxpY2l0IiB9CkBAIC03Miw2ICs4MiwyMCBAQCB2 b2lkIGY2KHN0ZDo6cGFpcjxFeHBsaWNpdCwgRXhwbGljaXQ+KSB7fQogCiB2 b2lkIGY3KHN0ZDo6cGFpcjxsb25nLCBsb25nPikge30KIAorc3RkOjpwYWly PEV4cGxpY2l0RGVmYXVsdCwgaW50PiBmOCgpCit7CisgIHJldHVybiB7fTsg Ly8geyBkZy1lcnJvciAiZXhwbGljaXQiIH0KK30KKworc3RkOjpwYWlyPEV4 cGxpY2l0RGVmYXVsdERlZmF1bHQsIGludD4gZjkoKQoreworICByZXR1cm4g e307IC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IiB9Cit9CisKK3ZvaWQgZjEw KHN0ZDo6cGFpcjxFeHBsaWNpdERlZmF1bHQsIGludD4pIHt9CisKK3ZvaWQg ZjExKHN0ZDo6cGFpcjxFeHBsaWNpdERlZmF1bHREZWZhdWx0LCBpbnQ+KSB7 fQorCiB2b2lkIHRlc3RfYXJnX3Bhc3NpbmcoKQogewogICBmNih2MCk7IC8v IHsgZGctZXJyb3IgImNvdWxkIG5vdCBjb252ZXJ0IiB9CkBAIC04NCw2ICsx MDgsMTAgQEAgdm9pZCB0ZXN0X2FyZ19wYXNzaW5nKCkKICAgZjcoezEsMn0p OwogICBmNyhzdGQ6OnBhaXI8aW50LCBpbnQ+e30pOwogICBmNyhzdGQ6OnBh aXI8bG9uZywgbG9uZz57fSk7CisgIGYxMCh7fSk7IC8vIHsgZGctZXJyb3Ig ImV4cGxpY2l0IiB9CisgIGYxMSh7fSk7IC8vIHsgZGctZXJyb3IgImV4cGxp Y2l0IiB9CisgIGYxMChzdGQ6OnBhaXI8RXhwbGljaXREZWZhdWx0LCBpbnQ+ e30pOworICBmMTEoc3RkOjpwYWlyPEV4cGxpY2l0RGVmYXVsdERlZmF1bHQs IGludD57fSk7CiB9CiAKIHN0cnVjdCBNb3ZlT25seQpkaWZmIC0tZ2l0IGEv bGlic3RkYysrLXYzL3Rlc3RzdWl0ZS8yMF91dGlsL3R1cGxlL2NvbnMvZXhw bGljaXRfY29uc3RydWN0LmNjIGIvbGlic3RkYysrLXYzL3Rlc3RzdWl0ZS8y MF91dGlsL3R1cGxlL2NvbnMvZXhwbGljaXRfY29uc3RydWN0LmNjCmluZGV4 IDExNGE0OTAuLjRkOTdjZmIgMTAwNjQ0Ci0tLSBhL2xpYnN0ZGMrKy12My90 ZXN0c3VpdGUvMjBfdXRpbC90dXBsZS9jb25zL2V4cGxpY2l0X2NvbnN0cnVj dC5jYworKysgYi9saWJzdGRjKystdjMvdGVzdHN1aXRlLzIwX3V0aWwvdHVw bGUvY29ucy9leHBsaWNpdF9jb25zdHJ1Y3QuY2MKQEAgLTI4LDEzICsyOCwy NiBAQCBzdHJ1Y3QgRXhwbGljaXQKICAgZXhwbGljaXQgRXhwbGljaXQoaW50 KSB7fQogfTsKIAorc3RydWN0IEV4cGxpY2l0RGVmYXVsdAoreworICBleHBs aWNpdCBFeHBsaWNpdERlZmF1bHQoKSB7fQorfTsKKworc3RydWN0IEV4cGxp Y2l0RGVmYXVsdERlZmF1bHQKK3sKKyAgZXhwbGljaXQgRXhwbGljaXREZWZh dWx0RGVmYXVsdCgpID0gZGVmYXVsdDsKK307CisKIHN0ZDo6dHVwbGU8aW50 PiBmMWEoKSB7cmV0dXJuIHsxfTt9CiBzdGQ6OnR1cGxlPGludCwgaW50PiBm MWIoKSB7cmV0dXJuIHsxLDJ9O30KIHN0ZDo6dHVwbGU8aW50LCBpbnQsIGlu dD4gZjFjKCkge3JldHVybiB7MSwyLDN9O30KIAotc3RkOjp0dXBsZTxFeHBs aWNpdD4gZjJfYSgpIHtyZXR1cm4gezF9O30gLy8geyBkZy1lcnJvciAiZXhw bGljaXQiIH0KLXN0ZDo6dHVwbGU8RXhwbGljaXQsIEV4cGxpY2l0PiBmMl9i KCkge3JldHVybiB7MSwyfTt9IC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IiB9 Ci1zdGQ6OnR1cGxlPEV4cGxpY2l0LCBFeHBsaWNpdCwgRXhwbGljaXQ+IGYy X2MoKSB7cmV0dXJuIHsxLDIsM307fSAvLyB7IGRnLWVycm9yICJleHBsaWNp dCIgfQorc3RkOjp0dXBsZTxFeHBsaWNpdD4gZjJfYSgpCit7cmV0dXJuIHsx fTt9IC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IiB9CitzdGQ6OnR1cGxlPEV4 cGxpY2l0LCBFeHBsaWNpdD4gZjJfYigpCit7cmV0dXJuIHsxLDJ9O30gLy8g eyBkZy1lcnJvciAiZXhwbGljaXQiIH0KK3N0ZDo6dHVwbGU8RXhwbGljaXQs IEV4cGxpY2l0LCBFeHBsaWNpdD4gZjJfYygpCit7cmV0dXJuIHsxLDIsM307 fSAvLyB7IGRnLWVycm9yICJleHBsaWNpdCIgfQogCiBzdGQ6OnR1cGxlPGxv bmc+IGYzX2EoKSB7cmV0dXJuIHN0ZDo6dHVwbGU8aW50PnsxfTt9CiBzdGQ6 OnR1cGxlPGxvbmcsIGxvbmc+IGYzX2IoKSB7cmV0dXJuIHN0ZDo6dHVwbGU8 aW50LCBpbnQ+ezEsMn07fQpAQCAtNTcsNiArNzAsMjQgQEAgc3RkOjp0dXBs ZTxsb25nPiBmNV9hKCkge3JldHVybiB7MX07fQogc3RkOjp0dXBsZTxsb25n LCBsb25nPiBmNV9iKCkge3JldHVybiB7MSwyfTt9CiBzdGQ6OnR1cGxlPGxv bmcsIGxvbmcsIGxvbmc+IGY1X2MoKSB7cmV0dXJuIHsxLDIsM307fQogCitz dGQ6OnR1cGxlPEV4cGxpY2l0RGVmYXVsdD4gZjZfYSgpCit7cmV0dXJuIHt9 O30gLy8geyBkZy1lcnJvciAiZXhwbGljaXQiIH0KK3N0ZDo6dHVwbGU8RXhw bGljaXREZWZhdWx0LCBFeHBsaWNpdERlZmF1bHQ+IGY2X2IoKQore3JldHVy biB7fTt9IC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IiB9CitzdGQ6OnR1cGxl PEV4cGxpY2l0RGVmYXVsdCwgRXhwbGljaXREZWZhdWx0LCBFeHBsaWNpdERl ZmF1bHQ+IGY2X2MoKQore3JldHVybiB7fTt9IC8vIHsgZGctZXJyb3IgImV4 cGxpY2l0IiB9CitzdGQ6OnR1cGxlPEV4cGxpY2l0RGVmYXVsdCwgaW50PiBm Nl9kKCkKK3tyZXR1cm4ge307fSAvLyB7IGRnLWVycm9yICJleHBsaWNpdCIg fQorCitzdGQ6OnR1cGxlPEV4cGxpY2l0RGVmYXVsdERlZmF1bHQ+IGY3X2Eo KQore3JldHVybiB7fTt9IC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IiB9Citz dGQ6OnR1cGxlPEV4cGxpY2l0RGVmYXVsdERlZmF1bHQsIEV4cGxpY2l0RGVm YXVsdERlZmF1bHQ+IGY3X2IoKQore3JldHVybiB7fTt9IC8vIHsgZGctZXJy b3IgImV4cGxpY2l0IiB9CitzdGQ6OnR1cGxlPEV4cGxpY2l0RGVmYXVsdERl ZmF1bHQsCisgICAgICAgICAgIEV4cGxpY2l0RGVmYXVsdERlZmF1bHQsCisg ICAgICAgICAgIEV4cGxpY2l0RGVmYXVsdERlZmF1bHQ+IGY3X2MoKQore3Jl dHVybiB7fTt9IC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IiB9CisKIHN0ZDo6 dHVwbGU8aW50LCBpbnQ+IGZwMSgpIHtyZXR1cm4gc3RkOjpwYWlyPGludCwg aW50PnsxLDJ9OyB9CiBzdGQ6OnR1cGxlPGxvbmcsIGxvbmc+IGZwMigpIHty ZXR1cm4gc3RkOjpwYWlyPGludCwgaW50PnsxLDJ9OyB9CiBzdGQ6OnR1cGxl PEV4cGxpY2l0LCBFeHBsaWNpdD4gZnAzKCkKQEAgLTE2Myw3ICsxOTQsNyBA QCBzdGQ6OnR1cGxlPGxvbmcsIGxvbmcsIGxvbmc+CiAgIHYzMV9je3N0ZDo6 YWxsb2NhdG9yX2FyZywgc3RkOjphbGxvY2F0b3I8aW50Pnt9LCAxLDIsM307 CiAKIHN0ZDo6dHVwbGU8RXhwbGljaXQ+IHYzMl9hCi0gID0ge3N0ZDo6YWxs b2NhdG9yX2FyZywgc3RkOjphbGxvY2F0b3I8aW50Pnt9LCAxfTsgLy8geyBk Zy1lcnJvciAiZXhwbGljaXQiIH0KKyAgPSB7c3RkOjphbGxvY2F0b3JfYXJn LCBzdGQ6OmFsbG9jYXRvcjxpbnQ+eyB9LCAxfTsgLy8geyBkZy1lcnJvciAi ZXhwbGljaXQiIH0KIHN0ZDo6dHVwbGU8RXhwbGljaXQsIEV4cGxpY2l0PiB2 MzJfYgogICA9IHtzdGQ6OmFsbG9jYXRvcl9hcmcsIHN0ZDo6YWxsb2NhdG9y PGludD57fSwgMSwgMn07IC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IiB9CiBz dGQ6OnR1cGxlPEV4cGxpY2l0LCBFeHBsaWNpdCwgRXhwbGljaXQ+IHYzMl9j CkBAIC0xOTksNyArMjMwLDE5IEBAIHN0ZDo6dHVwbGU8aW50LCBpbnQ+IHY0 MiA9IHtzdGQ6OmFsbG9jYXRvcl9hcmcsIHN0ZDo6YWxsb2NhdG9yPGludD57 fSwgdjIwfTsKIHN0ZDo6dHVwbGU8bG9uZywgbG9uZz4gdjQzID0ge3N0ZDo6 YWxsb2NhdG9yX2FyZywgc3RkOjphbGxvY2F0b3I8aW50Pnt9LCB2MjB9Owog CiBzdGQ6OnR1cGxlPEV4cGxpY2l0LCBFeHBsaWNpdD4gdjQ0Ci09IHtzdGQ6 OmFsbG9jYXRvcl9hcmcsIHN0ZDo6YWxsb2NhdG9yPGludD57fSwgdjIwfTsg Ly8geyBkZy1lcnJvciAiZXhwbGljaXQiIH0KKz0ge3N0ZDo6YWxsb2NhdG9y X2FyZywgc3RkOjphbGxvY2F0b3I8aW50PnsgfSwgdjIwfTsgLy8geyBkZy1l cnJvciAiZXhwbGljaXQiIH0KK3N0ZDo6dHVwbGU8RXhwbGljaXREZWZhdWx0 PiB2NDVfYXt9Oworc3RkOjp0dXBsZTxFeHBsaWNpdERlZmF1bHQsIGludD4g djQ1X2J7fTsKKworc3RkOjp0dXBsZTxFeHBsaWNpdERlZmF1bHQ+IHY0Nl9h ID0ge307IC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IiB9CitzdGQ6OnR1cGxl PEV4cGxpY2l0RGVmYXVsdCwgaW50PiB2NDZfYiA9IHt9OyAvLyB7IGRnLWVy cm9yICJleHBsaWNpdCIgfQorCitzdGQ6OnR1cGxlPEV4cGxpY2l0RGVmYXVs dERlZmF1bHQ+IHY0N19he307CitzdGQ6OnR1cGxlPEV4cGxpY2l0RGVmYXVs dERlZmF1bHQsIGludD4gdjQ3X2J7fTsKKworc3RkOjp0dXBsZTxFeHBsaWNp dERlZmF1bHREZWZhdWx0PiB2NDhfYSA9IHt9OyAvLyB7IGRnLWVycm9yICJl eHBsaWNpdCIgfQorc3RkOjp0dXBsZTxFeHBsaWNpdERlZmF1bHREZWZhdWx0 LCBpbnQ+IHY0OF9iID0geyB9OyAvLyB7IGRnLWVycm9yICJleHBsaWNpdCIg fQorCiAKIHN0cnVjdCBEZWxldGVkQ29weQogewpAQCAtMjI1LDU4ICsyNjgs NzMgQEAgc3RkOjp0dXBsZTxpbnQsIGludCwgU2FuaXR5PiB2NTAoc3RkOjph bGxvY2F0b3JfYXJnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc3RkOjphbGxvY2F0b3I8U2FuaXR5Pnt9LAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgMywgNCwgezQyfSk7CiAKLXZvaWQgZjZfYShz dGQ6OnR1cGxlPEV4cGxpY2l0Pikge30KLXZvaWQgZjZfYihzdGQ6OnR1cGxl PEV4cGxpY2l0LCBFeHBsaWNpdD4pIHt9Ci12b2lkIGY2X2Moc3RkOjp0dXBs ZTxFeHBsaWNpdCwgRXhwbGljaXQsIEV4cGxpY2l0Pikge30KK3ZvaWQgZjhf YShzdGQ6OnR1cGxlPEV4cGxpY2l0Pikge30KK3ZvaWQgZjhfYihzdGQ6OnR1 cGxlPEV4cGxpY2l0LCBFeHBsaWNpdD4pIHt9Cit2b2lkIGY4X2Moc3RkOjp0 dXBsZTxFeHBsaWNpdCwgRXhwbGljaXQsIEV4cGxpY2l0Pikge30KKwordm9p ZCBmOV9hKHN0ZDo6dHVwbGU8bG9uZz4pIHt9Cit2b2lkIGY5X2Ioc3RkOjp0 dXBsZTxsb25nLCBsb25nPikge30KK3ZvaWQgZjlfYyhzdGQ6OnR1cGxlPGxv bmcsIGxvbmcsIGxvbmc+KSB7fQorCit2b2lkIGYxMF9hKHN0ZDo6dHVwbGU8 RXhwbGljaXREZWZhdWx0Pikge30KK3ZvaWQgZjEwX2Ioc3RkOjp0dXBsZTxF eHBsaWNpdERlZmF1bHQsIGludD4pIHt9CiAKLXZvaWQgZjdfYShzdGQ6OnR1 cGxlPGxvbmc+KSB7fQotdm9pZCBmN19iKHN0ZDo6dHVwbGU8bG9uZywgbG9u Zz4pIHt9Ci12b2lkIGY3X2Moc3RkOjp0dXBsZTxsb25nLCBsb25nLCBsb25n Pikge30KK3ZvaWQgZjExX2Eoc3RkOjp0dXBsZTxFeHBsaWNpdERlZmF1bHRE ZWZhdWx0Pikge30KK3ZvaWQgZjExX2Ioc3RkOjp0dXBsZTxFeHBsaWNpdERl ZmF1bHREZWZhdWx0LCBpbnQ+KSB7fQogCiB2b2lkIHRlc3RfYXJnX3Bhc3Np bmcoKQogewotICBmNl9hKHYwX2EpOyAvLyB7IGRnLWVycm9yICJjb3VsZCBu b3QgY29udmVydCIgfQotICBmNl9iKHYwX2IpOyAvLyB7IGRnLWVycm9yICJj b3VsZCBub3QgY29udmVydCIgfQotICBmNl9jKHYwX2MpOyAvLyB7IGRnLWVy cm9yICJjb3VsZCBub3QgY29udmVydCIgfQotICBmNl9iKHYyMCk7IC8vIHsg ZGctZXJyb3IgImNvdWxkIG5vdCBjb252ZXJ0IiB9Ci0KLSAgZjZfYSh2MV9h KTsKLSAgZjZfYih2MV9iKTsKLSAgZjZfYyh2MV9jKTsKLQotICBmNl9hKHsx fSk7IC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IiB9Ci0gIGY2X2IoezEsMn0p OyAvLyB7IGRnLWVycm9yICJleHBsaWNpdCIgfQotICBmNl9jKHsxLDIsM30p OyAvLyB7IGRnLWVycm9yICJleHBsaWNpdCIgfQotCi0gIGY2X2Eoc3RkOjp0 dXBsZTxFeHBsaWNpdD57fSk7Ci0gIGY2X2Ioc3RkOjp0dXBsZTxFeHBsaWNp dCwgRXhwbGljaXQ+e30pOwotICBmNl9jKHN0ZDo6dHVwbGU8RXhwbGljaXQs IEV4cGxpY2l0LCBFeHBsaWNpdD57fSk7Ci0KLSAgZjZfYShzdGQ6OnR1cGxl PGludD57fSk7IC8vIHsgZGctZXJyb3IgImNvdWxkIG5vdCBjb252ZXJ0IiB9 Ci0gIGY2X2Ioc3RkOjp0dXBsZTxpbnQsIGludD57fSk7IC8vIHsgZGctZXJy b3IgImNvdWxkIG5vdCBjb252ZXJ0IiB9Ci0gIGY2X2Moc3RkOjp0dXBsZTxp bnQsIGludCwgaW50Pnt9KTsgLy8geyBkZy1lcnJvciAiY291bGQgbm90IGNv bnZlcnQiIH0KLSAgZjZfYihzdGQ6OnBhaXI8aW50LCBpbnQ+e30pOyAvLyB7 IGRnLWVycm9yICJjb3VsZCBub3QgY29udmVydCIgfQotCi0gIGY3X2EodjBf YSk7Ci0gIGY3X2IodjBfYik7Ci0gIGY3X2ModjBfYyk7Ci0gIGY3X2IodjIw KTsKLQotICBmN19hKHY2X2EpOwotICBmN19iKHY2X2IpOwotICBmN19jKHY2 X2MpOwotCi0gIGY3X2EoezF9KTsKLSAgZjdfYih7MSwyfSk7Ci0gIGY3X2Mo ezEsMiwzfSk7Ci0KLSAgZjdfYShzdGQ6OnR1cGxlPGludD57fSk7Ci0gIGY3 X2Ioc3RkOjp0dXBsZTxpbnQsIGludD57fSk7Ci0gIGY3X2Moc3RkOjp0dXBs ZTxpbnQsIGludCwgaW50Pnt9KTsKLSAgZjdfYihzdGQ6OnBhaXI8aW50LCBp bnQ+e30pOwotCi0KLSAgZjdfYShzdGQ6OnR1cGxlPGxvbmc+e30pOwotICBm N19iKHN0ZDo6dHVwbGU8bG9uZywgbG9uZz57fSk7Ci0gIGY3X2Moc3RkOjp0 dXBsZTxsb25nLCBsb25nLCBsb25nPnt9KTsKKyAgZjhfYSh2MF9hKTsgLy8g eyBkZy1lcnJvciAiY291bGQgbm90IGNvbnZlcnQiIH0KKyAgZjhfYih2MF9i KTsgLy8geyBkZy1lcnJvciAiY291bGQgbm90IGNvbnZlcnQiIH0KKyAgZjhf Yyh2MF9jKTsgLy8geyBkZy1lcnJvciAiY291bGQgbm90IGNvbnZlcnQiIH0K KyAgZjhfYih2MjApOyAvLyB7IGRnLWVycm9yICJjb3VsZCBub3QgY29udmVy dCIgfQorCisgIGY4X2EodjFfYSk7CisgIGY4X2IodjFfYik7CisgIGY4X2Mo djFfYyk7CisKKyAgZjhfYSh7MX0pOyAvLyB7IGRnLWVycm9yICJleHBsaWNp dCIgfQorICBmOF9iKHsxLDJ9KTsgLy8geyBkZy1lcnJvciAiZXhwbGljaXQi IH0KKyAgZjhfYyh7MSwyLDN9KTsgLy8geyBkZy1lcnJvciAiZXhwbGljaXQi IH0KKworICBmOF9hKHN0ZDo6dHVwbGU8RXhwbGljaXQ+e30pOworICBmOF9i KHN0ZDo6dHVwbGU8RXhwbGljaXQsIEV4cGxpY2l0Pnt9KTsKKyAgZjhfYyhz dGQ6OnR1cGxlPEV4cGxpY2l0LCBFeHBsaWNpdCwgRXhwbGljaXQ+e30pOwor CisgIGY4X2Eoc3RkOjp0dXBsZTxpbnQ+e30pOyAvLyB7IGRnLWVycm9yICJj b3VsZCBub3QgY29udmVydCIgfQorICBmOF9iKHN0ZDo6dHVwbGU8aW50LCBp bnQ+e30pOyAvLyB7IGRnLWVycm9yICJjb3VsZCBub3QgY29udmVydCIgfQor ICBmOF9jKHN0ZDo6dHVwbGU8aW50LCBpbnQsIGludD57fSk7IC8vIHsgZGct ZXJyb3IgImNvdWxkIG5vdCBjb252ZXJ0IiB9CisgIGY4X2Ioc3RkOjpwYWly PGludCwgaW50Pnt9KTsgLy8geyBkZy1lcnJvciAiY291bGQgbm90IGNvbnZl cnQiIH0KKworICBmOV9hKHYwX2EpOworICBmOV9iKHYwX2IpOworICBmOV9j KHYwX2MpOworICBmOV9iKHYyMCk7CisKKyAgZjlfYSh2Nl9hKTsKKyAgZjlf Yih2Nl9iKTsKKyAgZjlfYyh2Nl9jKTsKKworICBmOV9hKHsxfSk7CisgIGY5 X2IoezEsMn0pOworICBmOV9jKHsxLDIsM30pOworCisgIGY5X2Eoc3RkOjp0 dXBsZTxpbnQ+e30pOworICBmOV9iKHN0ZDo6dHVwbGU8aW50LCBpbnQ+e30p OworICBmOV9jKHN0ZDo6dHVwbGU8aW50LCBpbnQsIGludD57fSk7CisgIGY5 X2Ioc3RkOjpwYWlyPGludCwgaW50Pnt9KTsKKworICBmOV9hKHN0ZDo6dHVw bGU8bG9uZz57fSk7CisgIGY5X2Ioc3RkOjp0dXBsZTxsb25nLCBsb25nPnt9 KTsKKyAgZjlfYyhzdGQ6OnR1cGxlPGxvbmcsIGxvbmcsIGxvbmc+e30pOwor CisgIGYxMF9hKHt9KTsgLy8geyBkZy1lcnJvciAiZXhwbGljaXQiIH0KKyAg ZjEwX2Ioe30pOyAvLyB7IGRnLWVycm9yICJleHBsaWNpdCIgfQorICBmMTFf YSh7fSk7IC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IiB9CisgIGYxMV9iKHt9 KTsgLy8geyBkZy1lcnJvciAiZXhwbGljaXQiIH0KKworICBmMTBfYShzdGQ6 OnR1cGxlPEV4cGxpY2l0RGVmYXVsdD57fSk7CisgIGYxMF9iKHN0ZDo6dHVw bGU8RXhwbGljaXREZWZhdWx0LCBpbnQ+e30pOworICBmMTFfYShzdGQ6OnR1 cGxlPEV4cGxpY2l0RGVmYXVsdERlZmF1bHQ+e30pOworICBmMTFfYihzdGQ6 OnR1cGxlPEV4cGxpY2l0RGVmYXVsdERlZmF1bHQsIGludD57fSk7CiB9Cg== --001a11438ea65590370523723e55--