From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wr1-x435.google.com (mail-wr1-x435.google.com [IPv6:2a00:1450:4864:20::435]) by sourceware.org (Postfix) with ESMTPS id 08112385828E; Sun, 10 Jul 2022 13:57:03 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 08112385828E Received: by mail-wr1-x435.google.com with SMTP id v16so3948494wrd.13; Sun, 10 Jul 2022 06:57:02 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:message-id:date:mime-version:user-agent :content-language:to:cc:from:subject; bh=+EmAh9ZFDNhBjvr7pQhSxaDR+RKi7wURxQ7/7JADY4Q=; b=ylhoCMyUuKLihA8DnIjCMXxnRFTq02xGfIeb7ha1u5Ymi714brwFzZpd+2vRmw1l50 aHfwLllju11isNI/IYt6SSE0QhwMspVzfncWe2VI44uZ4W/YDYESj5RZufJoRmno77Rg eWO822RKnDW1NYzkuI3hZC+HA0+5bw5g0fMwe20kN/s5i/uWOr0Oq9aq6kAotwX8FKsw k0/sDEK5TCZSCX8luUHW9AxEevZeqPuJ8IcCfLATisA7ouNG7GRXJvJIxyLlxj++Vhzg aevqsLEa0jT8bXPDclUjUWSs91LcNl4089nTSqlMtek837o6XzPrXVQXR2/FkwtTYrMf XmxA== X-Gm-Message-State: AJIora/2aBEfS0P0jeOVxb5gDN4MfrWiMIgm503Dx46GvSYemumHEfKO 2NmhKjskd8TfyQEggC2kxNh7a3/mAFc= X-Google-Smtp-Source: AGRyM1th3L7a8U5R0PNlDO/R+qB7akV8zR1paB8rbJxFp2Fg9ZADkBMxONrlsVww+I6sDhyhiQp8xg== X-Received: by 2002:adf:f20f:0:b0:21d:6de6:6f47 with SMTP id p15-20020adff20f000000b0021d6de66f47mr12809851wro.532.1657461421279; Sun, 10 Jul 2022 06:57:01 -0700 (PDT) Received: from ?IPV6:2a01:e0a:1dc:b1c0:49cd:e5df:a1a:8e22? ([2a01:e0a:1dc:b1c0:49cd:e5df:a1a:8e22]) by smtp.googlemail.com with ESMTPSA id h17-20020a05600c351100b003973ea7e725sm10056606wmq.0.2022.07.10.06.56.59 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 10 Jul 2022 06:57:00 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------QCRdGoBHBd0rrgusmhZudevm" Message-ID: Date: Sun, 10 Jul 2022 15:56:59 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.9.1 Content-Language: fr To: "libstdc++@gcc.gnu.org" Cc: gcc-patches From: =?UTF-8?Q?Fran=c3=a7ois_Dumont?= Subject: [PATCH] Complete __gnu_debug::basic_string Standard conformity X-Spam-Status: No, score=-9.7 required=5.0 tests=BAYES_00, BODY_8BITS, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, KAM_SHORT, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: libstdc++@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libstdc++ mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 10 Jul 2022 13:57:07 -0000 This is a multi-part message in MIME format. --------------QCRdGoBHBd0rrgusmhZudevm Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Here is a first patch to complete __gnu_debug::basic_string Standard conformity. I prefer to submit this before checking for more missing stuff to check that my proposal of having a testsuite_string.h header is ok. I also noticed some problems with _GLIBCXX_DEBUG_PEDANTIC.     libstdc++: Complete __gnu_debug::string Standard conformity     Add testsuite/testsuite_string.h header to help testing __gnu_debug::basic_string like     std::basic_string depending on _GLIBCXX_DEBUG.     Add using of base type methods in __gnu_debug::basic_string to make use of the method     overloads when there is no debug version.     Fix _GLIBCXX_DEBUG_PEDANTIC assertions in . This header has to be used directly     like __gnu_debug::string, it is not included by _GLIBCXX_DEBUG. It means that     _GLIBCXX_DEBUG_PEDANTIC is not considered to define __glibcxx_check_string and     __glibcxx_check_string_len which are then empty macros. Now those macros are defined     directly in and properly consider _GLIBCXX_DEBUG_PEDANTIC.     libstdc++-v3/ChangeLog:             * include/debug/debug.h [_GLIBCXX_DEBUG](__glibcxx_requires_string): Define             using _GLIBCXX_DEBUG_PEDASSERT.             [_GLIBCXX_DEBUG](__glibcxx_requires_string_len): Likewise.             * include/debug/macros.h             (__glibcxx_check_string, __glibcxx_check_string_len): Move...             * include/debug/string             (__glibcxx_check_string, __glibcxx_check_string_len): ...here. And define depending             on _GLIBCXX_DEBUG_PEDANTIC no matter if _GLIBCXX_DEBUG is defined.             Add using of std::string find, rfind, find_first_of, find_last_of, find_first_not_of             and find_last_not_of. Remove debug implementations having no debug assertion.             * testsuite/util/testsuite_string.h: New file. Provides __gnu_test::string and             __gnu_test::wtring which definition depends on _GLIBCXX_DEBUG.             * testsuite/21_strings/basic_string/debug/find1_neg.cc: New test case.             * testsuite/21_strings/basic_string/debug/find2_neg.cc: New test case.             * testsuite/21_strings/basic_string/operations/find/char/1.cc: Include             and use __gnu_test::string.             * testsuite/21_strings/basic_string/operations/find/char/2.cc: Likewise.             * testsuite/21_strings/basic_string/operations/find/char/3.cc: Likewise.             * testsuite/21_strings/basic_string/operations/find/char/4.cc: Likewise.             * testsuite/21_strings/basic_string/operations/find/char/5.cc: Likewise.             * testsuite/21_strings/basic_string/operations/find/char/6.cc: Likewise.             * testsuite/21_strings/basic_string/operations/find/wchar_t/1.cc: Include             and use __gnu_test::wstring.             * testsuite/21_strings/basic_string/operations/find/wchar_t/2.cc: Likewise.             * testsuite/21_strings/basic_string/operations/find/wchar_t/3.cc: Likewise.             * testsuite/21_strings/basic_string/operations/find/wchar_t/4.cc: Likewise.             * testsuite/21_strings/basic_string/operations/find/wchar_t/5.cc: Likewise.             * testsuite/21_strings/basic_string/operations/find/wchar_t/6.cc: Likewise. Tested under Linux x86_64. Ok to commit ? François --------------QCRdGoBHBd0rrgusmhZudevm Content-Type: text/x-patch; charset=UTF-8; name="debug_string.patch" Content-Disposition: attachment; filename="debug_string.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9pbmNsdWRlL2RlYnVnL2RlYnVnLmggYi9saWJz dGRjKystdjMvaW5jbHVkZS9kZWJ1Zy9kZWJ1Zy5oCmluZGV4IGQzY2RmYmMwNDRjLi4yOGUy NTBmMGM1MCAxMDA2NDQKLS0tIGEvbGlic3RkYysrLXYzL2luY2x1ZGUvZGVidWcvZGVidWcu aAorKysgYi9saWJzdGRjKystdjMvaW5jbHVkZS9kZWJ1Zy9kZWJ1Zy5oCkBAIC0xMTgsOSAr MTE4LDEwIEBAIG5hbWVzcGFjZSBfX2dudV9kZWJ1ZwogICBfX2dsaWJjeHhfY2hlY2tfaGVh cChfRmlyc3QsX0xhc3QpCiAjIGRlZmluZSBfX2dsaWJjeHhfcmVxdWlyZXNfaGVhcF9wcmVk KF9GaXJzdCxfTGFzdCxfUHJlZCkJXAogICBfX2dsaWJjeHhfY2hlY2tfaGVhcF9wcmVkKF9G aXJzdCxfTGFzdCxfUHJlZCkKLSMgZGVmaW5lIF9fZ2xpYmN4eF9yZXF1aXJlc19zdHJpbmco X1N0cmluZykgX19nbGliY3h4X2NoZWNrX3N0cmluZyhfU3RyaW5nKQorIyBkZWZpbmUgX19n bGliY3h4X3JlcXVpcmVzX3N0cmluZyhfU3RyaW5nKQlcCisgIF9HTElCQ1hYX0RFQlVHX1BF REFTU0VSVChfU3RyaW5nICE9IDApCiAjIGRlZmluZSBfX2dsaWJjeHhfcmVxdWlyZXNfc3Ry aW5nX2xlbihfU3RyaW5nLF9MZW4pCVwKLSAgX19nbGliY3h4X2NoZWNrX3N0cmluZ19sZW4o X1N0cmluZyxfTGVuKQorICBfR0xJQkNYWF9ERUJVR19QRURBU1NFUlQoX1N0cmluZyAhPSAw IHx8IF9MZW4gPT0gMCkKICMgZGVmaW5lIF9fZ2xpYmN4eF9yZXF1aXJlc19pcnJlZmxleGl2 ZShfRmlyc3QsX0xhc3QpCVwKICAgX19nbGliY3h4X2NoZWNrX2lycmVmbGV4aXZlKF9GaXJz dCxfTGFzdCkKICMgZGVmaW5lIF9fZ2xpYmN4eF9yZXF1aXJlc19pcnJlZmxleGl2ZTIoX0Zp cnN0LF9MYXN0KQlcCmRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvaW5jbHVkZS9kZWJ1Zy9t YWNyb3MuaCBiL2xpYnN0ZGMrKy12My9pbmNsdWRlL2RlYnVnL21hY3Jvcy5oCmluZGV4IDdi ODYyOTJkMWVmLi41ZmI2ODMyNGFiMiAxMDA2NDQKLS0tIGEvbGlic3RkYysrLXYzL2luY2x1 ZGUvZGVidWcvbWFjcm9zLmgKKysrIGIvbGlic3RkYysrLXYzL2luY2x1ZGUvZGVidWcvbWFj cm9zLmgKQEAgLTQ2Nyw4ICs0NjcsNCBAQCBfR0xJQkNYWF9ERUJVR19WRVJJRlkoX1RoaXMu Z2V0X2FsbG9jYXRvcigpID09IF9PdGhlci5nZXRfYWxsb2NhdG9yKCksCVwKIAkJICAgICAg X01fbWVzc2FnZShfX2dudV9kZWJ1Zzo6X19tc2dfZXF1YWxfYWxsb2NzKQlcCiAJCSAgICAg IC5fTV9zZXF1ZW5jZShfVGhpcywgInRoaXMiKSkKIAotI2RlZmluZSBfX2dsaWJjeHhfY2hl Y2tfc3RyaW5nKF9TdHJpbmcpIF9HTElCQ1hYX0RFQlVHX1BFREFTU0VSVChfU3RyaW5nICE9 IDApCi0jZGVmaW5lIF9fZ2xpYmN4eF9jaGVja19zdHJpbmdfbGVuKF9TdHJpbmcsX0xlbikg XAotICBfR0xJQkNYWF9ERUJVR19QRURBU1NFUlQoX1N0cmluZyAhPSAwIHx8IF9MZW4gPT0g MCkKLQogI2VuZGlmCmRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvaW5jbHVkZS9kZWJ1Zy9z dHJpbmcgYi9saWJzdGRjKystdjMvaW5jbHVkZS9kZWJ1Zy9zdHJpbmcKaW5kZXggM2VjNTVk NDJkNjYuLmE0NDgyZGI0YWY1IDEwMDY0NAotLS0gYS9saWJzdGRjKystdjMvaW5jbHVkZS9k ZWJ1Zy9zdHJpbmcKKysrIGIvbGlic3RkYysrLXYzL2luY2x1ZGUvZGVidWcvc3RyaW5nCkBA IC00OSw2ICs0OSwyMCBAQAogIyBkZWZpbmUgX0dMSUJDWFhfSU5TRVJUX1JFVFVSTlNfSVRF UkFUT1JfT05MWShleHByKQogI2VuZGlmCiAKKyNpZmRlZiBfR0xJQkNYWF9ERUJVR19QRURB TlRJQworIyBkZWZpbmUgX19nbGliY3h4X2NoZWNrX3N0cmluZyhfU3RyaW5nKQkJCQlcCisg IF9HTElCQ1hYX0RFQlVHX1ZFUklGWV9TVFJfQ09ORF9BVChfU3RyaW5nICE9IDAsCQlcCisJ CQkJICAgIF9fRklMRV9fLCBfX0xJTkVfXywJCVwKKwkJCQkgICAgX19QUkVUVFlfRlVOQ1RJ T05fXyk7CisjIGRlZmluZSBfX2dsaWJjeHhfY2hlY2tfc3RyaW5nX2xlbihfU3RyaW5nLF9M ZW4pCQlcCisgIF9HTElCQ1hYX0RFQlVHX1ZFUklGWV9TVFJfQ09ORF9BVChfU3RyaW5nICE9 IDAgfHwgX0xlbiA9PSAwLAlcCisJCQkJICAgIF9fRklMRV9fLCBfX0xJTkVfXywJCVwKKwkJ CQkgICAgX19QUkVUVFlfRlVOQ1RJT05fXyk7CisjZWxzZQorIyBkZWZpbmUgX19nbGliY3h4 X2NoZWNrX3N0cmluZyhfU3RyaW5nKQorIyBkZWZpbmUgX19nbGliY3h4X2NoZWNrX3N0cmlu Z19sZW4oX1N0cmluZyxfTGVuKQorI2VuZGlmCisKIG5hbWVzcGFjZSBfX2dudV9kZWJ1Zwog ewogICAvKiogQ2hlY2tzIHRoYXQgX19zIGlzIG5vbi1OVUxMIG9yIF9fbiA9PSAwLCBhbmQg dGhlbiByZXR1cm5zIF9fcy4gKi8KQEAgLTg2OCwzNCArODgyLDI4IEBAIG5hbWVzcGFjZSBf X2dudV9kZWJ1ZwogCiAgICAgICB1c2luZyBfQmFzZTo6Z2V0X2FsbG9jYXRvcjsKIAotICAg ICAgc2l6ZV90eXBlCi0gICAgICBmaW5kKGNvbnN0IGJhc2ljX3N0cmluZyYgX19zdHIsIHNp emVfdHlwZSBfX3BvcyA9IDApIGNvbnN0Ci0JX0dMSUJDWFhfTk9FWENFUFQKLSAgICAgIHsg cmV0dXJuIF9CYXNlOjpmaW5kKF9fc3RyLCBfX3Bvcyk7IH0KKyAgICAgIHVzaW5nIF9CYXNl OjpmaW5kOwogCisgICAgICBfR0xJQkNYWDIwX0NPTlNURVhQUgogICAgICAgc2l6ZV90eXBl CiAgICAgICBmaW5kKGNvbnN0IF9DaGFyVCogX19zLCBzaXplX3R5cGUgX19wb3MsIHNpemVf dHlwZSBfX24pIGNvbnN0CisJX0dMSUJDWFhfTk9FWENFUFQKICAgICAgIHsKIAlfX2dsaWJj eHhfY2hlY2tfc3RyaW5nKF9fcyk7CiAJcmV0dXJuIF9CYXNlOjpmaW5kKF9fcywgX19wb3Ms IF9fbik7CiAgICAgICB9CiAKKyAgICAgIF9HTElCQ1hYMjBfQ09OU1RFWFBSCiAgICAgICBz aXplX3R5cGUKLSAgICAgIGZpbmQoY29uc3QgX0NoYXJUKiBfX3MsIHNpemVfdHlwZSBfX3Bv cyA9IDApIGNvbnN0CisgICAgICBmaW5kKGNvbnN0IF9DaGFyVCogX19zLCBzaXplX3R5cGUg X19wb3MgPSAwKSBjb25zdCBfR0xJQkNYWF9OT0VYQ0VQVAogICAgICAgewogCV9fZ2xpYmN4 eF9jaGVja19zdHJpbmcoX19zKTsKIAlyZXR1cm4gX0Jhc2U6OmZpbmQoX19zLCBfX3Bvcyk7 CiAgICAgICB9CiAKLSAgICAgIHNpemVfdHlwZQotICAgICAgZmluZChfQ2hhclQgX19jLCBz aXplX3R5cGUgX19wb3MgPSAwKSBjb25zdCBfR0xJQkNYWF9OT0VYQ0VQVAotICAgICAgeyBy ZXR1cm4gX0Jhc2U6OmZpbmQoX19jLCBfX3Bvcyk7IH0KLQotICAgICAgc2l6ZV90eXBlCi0g ICAgICByZmluZChjb25zdCBiYXNpY19zdHJpbmcmIF9fc3RyLCBzaXplX3R5cGUgX19wb3Mg PSBfQmFzZTo6bnBvcykgY29uc3QKLQlfR0xJQkNYWF9OT0VYQ0VQVAotICAgICAgeyByZXR1 cm4gX0Jhc2U6OnJmaW5kKF9fc3RyLCBfX3Bvcyk7IH0KKyAgICAgIHVzaW5nIF9CYXNlOjpy ZmluZDsKIAorICAgICAgX0dMSUJDWFgyMF9DT05TVEVYUFIKICAgICAgIHNpemVfdHlwZQog ICAgICAgcmZpbmQoY29uc3QgX0NoYXJUKiBfX3MsIHNpemVfdHlwZSBfX3Bvcywgc2l6ZV90 eXBlIF9fbikgY29uc3QKICAgICAgIHsKQEAgLTkwMyw2ICs5MTEsNyBAQCBuYW1lc3BhY2Ug X19nbnVfZGVidWcKIAlyZXR1cm4gX0Jhc2U6OnJmaW5kKF9fcywgX19wb3MsIF9fbik7CiAg ICAgICB9CiAKKyAgICAgIF9HTElCQ1hYMjBfQ09OU1RFWFBSCiAgICAgICBzaXplX3R5cGUK ICAgICAgIHJmaW5kKGNvbnN0IF9DaGFyVCogX19zLCBzaXplX3R5cGUgX19wb3MgPSBfQmFz ZTo6bnBvcykgY29uc3QKICAgICAgIHsKQEAgLTkxMCwxMDUgKzkxOSw4NSBAQCBuYW1lc3Bh Y2UgX19nbnVfZGVidWcKIAlyZXR1cm4gX0Jhc2U6OnJmaW5kKF9fcywgX19wb3MpOwogICAg ICAgfQogCi0gICAgICBzaXplX3R5cGUKLSAgICAgIHJmaW5kKF9DaGFyVCBfX2MsIHNpemVf dHlwZSBfX3BvcyA9IF9CYXNlOjpucG9zKSBjb25zdCBfR0xJQkNYWF9OT0VYQ0VQVAotICAg ICAgeyByZXR1cm4gX0Jhc2U6OnJmaW5kKF9fYywgX19wb3MpOyB9Ci0KLSAgICAgIHNpemVf dHlwZQotICAgICAgZmluZF9maXJzdF9vZihjb25zdCBiYXNpY19zdHJpbmcmIF9fc3RyLCBz aXplX3R5cGUgX19wb3MgPSAwKSBjb25zdAotCV9HTElCQ1hYX05PRVhDRVBUCi0gICAgICB7 IHJldHVybiBfQmFzZTo6ZmluZF9maXJzdF9vZihfX3N0ciwgX19wb3MpOyB9CisgICAgICB1 c2luZyBfQmFzZTo6ZmluZF9maXJzdF9vZjsKIAorICAgICAgX0dMSUJDWFgyMF9DT05TVEVY UFIKICAgICAgIHNpemVfdHlwZQogICAgICAgZmluZF9maXJzdF9vZihjb25zdCBfQ2hhclQq IF9fcywgc2l6ZV90eXBlIF9fcG9zLCBzaXplX3R5cGUgX19uKSBjb25zdAorCV9HTElCQ1hY X05PRVhDRVBUCiAgICAgICB7CiAJX19nbGliY3h4X2NoZWNrX3N0cmluZyhfX3MpOwogCXJl dHVybiBfQmFzZTo6ZmluZF9maXJzdF9vZihfX3MsIF9fcG9zLCBfX24pOwogICAgICAgfQog CisgICAgICBfR0xJQkNYWDIwX0NPTlNURVhQUgogICAgICAgc2l6ZV90eXBlCi0gICAgICBm aW5kX2ZpcnN0X29mKGNvbnN0IF9DaGFyVCogX19zLCBzaXplX3R5cGUgX19wb3MgPSAwKSBj b25zdAorICAgICAgZmluZF9maXJzdF9vZihjb25zdCBfQ2hhclQqIF9fcywgc2l6ZV90eXBl IF9fcG9zID0gMCkgY29uc3QgX0dMSUJDWFhfTk9FWENFUFQKICAgICAgIHsKIAlfX2dsaWJj eHhfY2hlY2tfc3RyaW5nKF9fcyk7CiAJcmV0dXJuIF9CYXNlOjpmaW5kX2ZpcnN0X29mKF9f cywgX19wb3MpOwogICAgICAgfQogCi0gICAgICBzaXplX3R5cGUKLSAgICAgIGZpbmRfZmly c3Rfb2YoX0NoYXJUIF9fYywgc2l6ZV90eXBlIF9fcG9zID0gMCkgY29uc3QgX0dMSUJDWFhf Tk9FWENFUFQKLSAgICAgIHsgcmV0dXJuIF9CYXNlOjpmaW5kX2ZpcnN0X29mKF9fYywgX19w b3MpOyB9Ci0KLSAgICAgIHNpemVfdHlwZQotICAgICAgZmluZF9sYXN0X29mKGNvbnN0IGJh c2ljX3N0cmluZyYgX19zdHIsCi0JCSAgIHNpemVfdHlwZSBfX3BvcyA9IF9CYXNlOjpucG9z KSBjb25zdCBfR0xJQkNYWF9OT0VYQ0VQVAotICAgICAgeyByZXR1cm4gX0Jhc2U6OmZpbmRf bGFzdF9vZihfX3N0ciwgX19wb3MpOyB9CisgICAgICB1c2luZyBfQmFzZTo6ZmluZF9sYXN0 X29mOwogCisgICAgICBfR0xJQkNYWDIwX0NPTlNURVhQUgogICAgICAgc2l6ZV90eXBlCiAg ICAgICBmaW5kX2xhc3Rfb2YoY29uc3QgX0NoYXJUKiBfX3MsIHNpemVfdHlwZSBfX3Bvcywg c2l6ZV90eXBlIF9fbikgY29uc3QKKwlfR0xJQkNYWF9OT0VYQ0VQVAogICAgICAgewogCV9f Z2xpYmN4eF9jaGVja19zdHJpbmcoX19zKTsKIAlyZXR1cm4gX0Jhc2U6OmZpbmRfbGFzdF9v ZihfX3MsIF9fcG9zLCBfX24pOwogICAgICAgfQogCisgICAgICBfR0xJQkNYWDIwX0NPTlNU RVhQUgogICAgICAgc2l6ZV90eXBlCiAgICAgICBmaW5kX2xhc3Rfb2YoY29uc3QgX0NoYXJU KiBfX3MsIHNpemVfdHlwZSBfX3BvcyA9IF9CYXNlOjpucG9zKSBjb25zdAorCV9HTElCQ1hY X05PRVhDRVBUCiAgICAgICB7CiAJX19nbGliY3h4X2NoZWNrX3N0cmluZyhfX3MpOwogCXJl dHVybiBfQmFzZTo6ZmluZF9sYXN0X29mKF9fcywgX19wb3MpOwogICAgICAgfQogCi0gICAg ICBzaXplX3R5cGUKLSAgICAgIGZpbmRfbGFzdF9vZihfQ2hhclQgX19jLCBzaXplX3R5cGUg X19wb3MgPSBfQmFzZTo6bnBvcykgY29uc3QKLQlfR0xJQkNYWF9OT0VYQ0VQVAotICAgICAg eyByZXR1cm4gX0Jhc2U6OmZpbmRfbGFzdF9vZihfX2MsIF9fcG9zKTsgfQotCi0gICAgICBz aXplX3R5cGUKLSAgICAgIGZpbmRfZmlyc3Rfbm90X29mKGNvbnN0IGJhc2ljX3N0cmluZyYg X19zdHIsIHNpemVfdHlwZSBfX3BvcyA9IDApIGNvbnN0Ci0JX0dMSUJDWFhfTk9FWENFUFQK LSAgICAgIHsgcmV0dXJuIF9CYXNlOjpmaW5kX2ZpcnN0X25vdF9vZihfX3N0ciwgX19wb3Mp OyB9CisgICAgICB1c2luZyBfQmFzZTo6ZmluZF9maXJzdF9ub3Rfb2Y7CiAKKyAgICAgIF9H TElCQ1hYMjBfQ09OU1RFWFBSCiAgICAgICBzaXplX3R5cGUKICAgICAgIGZpbmRfZmlyc3Rf bm90X29mKGNvbnN0IF9DaGFyVCogX19zLCBzaXplX3R5cGUgX19wb3MsIHNpemVfdHlwZSBf X24pIGNvbnN0CisJX0dMSUJDWFhfTk9FWENFUFQKICAgICAgIHsKIAlfX2dsaWJjeHhfY2hl Y2tfc3RyaW5nX2xlbihfX3MsIF9fbik7CiAJcmV0dXJuIF9CYXNlOjpmaW5kX2ZpcnN0X25v dF9vZihfX3MsIF9fcG9zLCBfX24pOwogICAgICAgfQogCisgICAgICBfR0xJQkNYWDIwX0NP TlNURVhQUgogICAgICAgc2l6ZV90eXBlCiAgICAgICBmaW5kX2ZpcnN0X25vdF9vZihjb25z dCBfQ2hhclQqIF9fcywgc2l6ZV90eXBlIF9fcG9zID0gMCkgY29uc3QKKwlfR0xJQkNYWF9O T0VYQ0VQVAogICAgICAgewogCV9fZ2xpYmN4eF9jaGVja19zdHJpbmcoX19zKTsKIAlyZXR1 cm4gX0Jhc2U6OmZpbmRfZmlyc3Rfbm90X29mKF9fcywgX19wb3MpOwogICAgICAgfQogCi0g ICAgICBzaXplX3R5cGUKLSAgICAgIGZpbmRfZmlyc3Rfbm90X29mKF9DaGFyVCBfX2MsIHNp emVfdHlwZSBfX3BvcyA9IDApIGNvbnN0IF9HTElCQ1hYX05PRVhDRVBUCi0gICAgICB7IHJl dHVybiBfQmFzZTo6ZmluZF9maXJzdF9ub3Rfb2YoX19jLCBfX3Bvcyk7IH0KLQotICAgICAg c2l6ZV90eXBlCi0gICAgICBmaW5kX2xhc3Rfbm90X29mKGNvbnN0IGJhc2ljX3N0cmluZyYg X19zdHIsCi0JCSAgICAgICBzaXplX3R5cGUgX19wb3MgPSBfQmFzZTo6bnBvcykgY29uc3QK LQlfR0xJQkNYWF9OT0VYQ0VQVAotICAgICAgeyByZXR1cm4gX0Jhc2U6OmZpbmRfbGFzdF9u b3Rfb2YoX19zdHIsIF9fcG9zKTsgfQorICAgICAgdXNpbmcgX0Jhc2U6OmZpbmRfbGFzdF9u b3Rfb2Y7CiAKKyAgICAgIF9HTElCQ1hYMjBfQ09OU1RFWFBSCiAgICAgICBzaXplX3R5cGUK ICAgICAgIGZpbmRfbGFzdF9ub3Rfb2YoY29uc3QgX0NoYXJUKiBfX3MsIHNpemVfdHlwZSBf X3Bvcywgc2l6ZV90eXBlIF9fbikgY29uc3QKKwlfR0xJQkNYWF9OT0VYQ0VQVAogICAgICAg ewogCV9fZ2xpYmN4eF9jaGVja19zdHJpbmcoX19zKTsKIAlyZXR1cm4gX0Jhc2U6OmZpbmRf bGFzdF9ub3Rfb2YoX19zLCBfX3BvcywgX19uKTsKICAgICAgIH0KIAorICAgICAgX0dMSUJD WFgyMF9DT05TVEVYUFIKICAgICAgIHNpemVfdHlwZQogICAgICAgZmluZF9sYXN0X25vdF9v Zihjb25zdCBfQ2hhclQqIF9fcywgc2l6ZV90eXBlIF9fcG9zID0gX0Jhc2U6Om5wb3MpIGNv bnN0CisJX0dMSUJDWFhfTk9FWENFUFQKICAgICAgIHsKIAlfX2dsaWJjeHhfY2hlY2tfc3Ry aW5nKF9fcyk7CiAJcmV0dXJuIF9CYXNlOjpmaW5kX2xhc3Rfbm90X29mKF9fcywgX19wb3Mp OwogICAgICAgfQogCi0gICAgICBzaXplX3R5cGUKLSAgICAgIGZpbmRfbGFzdF9ub3Rfb2Yo X0NoYXJUIF9fYywgc2l6ZV90eXBlIF9fcG9zID0gX0Jhc2U6Om5wb3MpIGNvbnN0Ci0JX0dM SUJDWFhfTk9FWENFUFQKLSAgICAgIHsgcmV0dXJuIF9CYXNlOjpmaW5kX2xhc3Rfbm90X29m KF9fYywgX19wb3MpOyB9Ci0KICAgICAgIGJhc2ljX3N0cmluZwogICAgICAgc3Vic3RyKHNp emVfdHlwZSBfX3BvcyA9IDAsIHNpemVfdHlwZSBfX24gPSBfQmFzZTo6bnBvcykgY29uc3QK ICAgICAgIHsgcmV0dXJuIGJhc2ljX3N0cmluZyhfQmFzZTo6c3Vic3RyKF9fcG9zLCBfX24p KTsgfQpkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL3Rlc3RzdWl0ZS8yMV9zdHJpbmdzL2Jh c2ljX3N0cmluZy9kZWJ1Zy9maW5kMV9uZWcuY2MgYi9saWJzdGRjKystdjMvdGVzdHN1aXRl LzIxX3N0cmluZ3MvYmFzaWNfc3RyaW5nL2RlYnVnL2ZpbmQxX25lZy5jYwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMDJiYWJiYzU5ZTAKLS0tIC9kZXYvbnVs bAorKysgYi9saWJzdGRjKystdjMvdGVzdHN1aXRlLzIxX3N0cmluZ3MvYmFzaWNfc3RyaW5n L2RlYnVnL2ZpbmQxX25lZy5jYwpAQCAtMCwwICsxLDM1IEBACisvLyBDb3B5cmlnaHQgKEMp IDIwMjIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisvLworLy8gVGhpcyBmaWxl IGlzIHBhcnQgb2YgdGhlIEdOVSBJU08gQysrIExpYnJhcnkuICBUaGlzIGxpYnJhcnkgaXMg ZnJlZQorLy8gc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkgaXQgdW5kZXIgdGhlCisvLyB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQorLy8gRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u OyBlaXRoZXIgdmVyc2lvbiAzLCBvciAoYXQgeW91ciBvcHRpb24pCisvLyBhbnkgbGF0ZXIg dmVyc2lvbi4KKy8vCisvLyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKy8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisvLyBNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisv LyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorLy8KKy8v IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFsb25nCisvLyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl IENPUFlJTkczLiAgSWYgbm90IHNlZQorLy8gPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNl cy8+LgorLy8KKy8vIHsgZGctZG8gcnVuIHsgeGZhaWwgKi0qLSogfSB9CisKKyNkZWZpbmUg X0dMSUJDWFhfREVCVUdfUEVEQU5USUMKKworI2luY2x1ZGUgPGRlYnVnL3N0cmluZz4KKwor dm9pZCB0ZXN0MDEoKQoreworICBjb25zdCBjaGFyKiBfX251bGxfc3RyID0gMDsKKyAgX19n bnVfZGVidWc6OnN0cmluZyBzdHI7CisgIHN0ci5maW5kKF9fbnVsbF9zdHIpOworfQorCitp bnQgbWFpbigpCit7CisgIHRlc3QwMSgpOworICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBh L2xpYnN0ZGMrKy12My90ZXN0c3VpdGUvMjFfc3RyaW5ncy9iYXNpY19zdHJpbmcvZGVidWcv ZmluZDJfbmVnLmNjIGIvbGlic3RkYysrLXYzL3Rlc3RzdWl0ZS8yMV9zdHJpbmdzL2Jhc2lj X3N0cmluZy9kZWJ1Zy9maW5kMl9uZWcuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAuLjg5MjUwZTJkODc0Ci0tLSAvZGV2L251bGwKKysrIGIvbGlic3RkYysr LXYzL3Rlc3RzdWl0ZS8yMV9zdHJpbmdzL2Jhc2ljX3N0cmluZy9kZWJ1Zy9maW5kMl9uZWcu Y2MKQEAgLTAsMCArMSwzNSBAQAorLy8gQ29weXJpZ2h0IChDKSAyMDIyIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgSW5jLgorLy8KKy8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBH TlUgSVNPIEMrKyBMaWJyYXJ5LiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUKKy8vIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZQor Ly8gdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieSB0aGUKKy8vIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24g Mywgb3IgKGF0IHlvdXIgb3B0aW9uKQorLy8gYW55IGxhdGVyIHZlcnNpb24uCisvLworLy8g VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCisvLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0 aGUgaW1wbGllZCB3YXJyYW50eSBvZgorLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorLy8gR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKy8vCisvLyBZb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9u ZworLy8gd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5v dCBzZWUKKy8vIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKy8vCisvLyB7IGRn LWRvIHJ1biB7IHhmYWlsICotKi0qIH0gfQorCisjZGVmaW5lIF9HTElCQ1hYX0RFQlVHX1BF REFOVElDCisKKyNpbmNsdWRlIDxkZWJ1Zy9zdHJpbmc+CisKK3ZvaWQgdGVzdDAxKCkKK3sK KyAgY29uc3QgY2hhciogX19udWxsX3N0ciA9IDA7CisgIF9fZ251X2RlYnVnOjpzdHJpbmcg c3RyOworICBzdHIuZmluZChfX251bGxfc3RyLCAwLCAwKTsKK30KKworaW50IG1haW4oKQor eworICB0ZXN0MDEoKTsKKyAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9saWJzdGRjKyst djMvdGVzdHN1aXRlLzIxX3N0cmluZ3MvYmFzaWNfc3RyaW5nL29wZXJhdGlvbnMvZmluZC9j aGFyLzEuY2MgYi9saWJzdGRjKystdjMvdGVzdHN1aXRlLzIxX3N0cmluZ3MvYmFzaWNfc3Ry aW5nL29wZXJhdGlvbnMvZmluZC9jaGFyLzEuY2MKaW5kZXggZTc2NDczZDg4YzAuLjg2MmNm ZWZlZTY5IDEwMDY0NAotLS0gYS9saWJzdGRjKystdjMvdGVzdHN1aXRlLzIxX3N0cmluZ3Mv YmFzaWNfc3RyaW5nL29wZXJhdGlvbnMvZmluZC9jaGFyLzEuY2MKKysrIGIvbGlic3RkYysr LXYzL3Rlc3RzdWl0ZS8yMV9zdHJpbmdzL2Jhc2ljX3N0cmluZy9vcGVyYXRpb25zL2ZpbmQv Y2hhci8xLmNjCkBAIC0xOSwyMiArMTksMjIgQEAKIAogLy8gMjEuMy42LjEgYmFzaWNfc3Ry aW5nIGZpbmQKIAotI2luY2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRlIDx0ZXN0c3VpdGVfc3Ry aW5nLmg+CiAjaW5jbHVkZSA8dGVzdHN1aXRlX2hvb2tzLmg+CiAKIHZvaWQgdGVzdDAxKHZv aWQpCiB7Ci0gIHR5cGVkZWYgc3RkOjpzdHJpbmc6OnNpemVfdHlwZSBjc2l6ZV90eXBlOwot ICB0eXBlZGVmIHN0ZDo6c3RyaW5nOjpjb25zdF9yZWZlcmVuY2UgY3JlZjsKLSAgdHlwZWRl ZiBzdGQ6OnN0cmluZzo6cmVmZXJlbmNlIHJlZjsKLSAgY3NpemVfdHlwZSBucG9zID0gc3Rk OjpzdHJpbmc6Om5wb3M7CisgIHR5cGVkZWYgX19nbnVfdGVzdDo6c3RyaW5nOjpzaXplX3R5 cGUgY3NpemVfdHlwZTsKKyAgdHlwZWRlZiBfX2dudV90ZXN0OjpzdHJpbmc6OmNvbnN0X3Jl ZmVyZW5jZSBjcmVmOworICB0eXBlZGVmIF9fZ251X3Rlc3Q6OnN0cmluZzo6cmVmZXJlbmNl IHJlZjsKKyAgY3NpemVfdHlwZSBucG9zID0gX19nbnVfdGVzdDo6c3RyaW5nOjpucG9zOwog ICBjc2l6ZV90eXBlIGNzejAxLCBjc3owMjsKIAogICBjb25zdCBjaGFyIHN0cl9saXQwMVtd ID0gIm1hdmUiOwotICBjb25zdCBzdGQ6OnN0cmluZyBzdHIwMSgibWF2ZXJpY2tzLCBzYW50 YSBjcnV6Iik7Ci0gIHN0ZDo6c3RyaW5nIHN0cjAyKHN0cl9saXQwMSk7Ci0gIHN0ZDo6c3Ry aW5nIHN0cjAzKCJzLCBzIik7Ci0gIHN0ZDo6c3RyaW5nIHN0cjA0OworICBjb25zdCBfX2du dV90ZXN0OjpzdHJpbmcgc3RyMDEoIm1hdmVyaWNrcywgc2FudGEgY3J1eiIpOworICBfX2du dV90ZXN0OjpzdHJpbmcgc3RyMDIoc3RyX2xpdDAxKTsKKyAgX19nbnVfdGVzdDo6c3RyaW5n IHN0cjAzKCJzLCBzIik7CisgIF9fZ251X3Rlc3Q6OnN0cmluZyBzdHIwNDsKIAogICAvLyBz aXplX3R5cGUgZmluZChjb25zdCBzdHJpbmcmLCBzaXplX3R5cGUgcG9zID0gMCkgY29uc3Q7 CiAgIGNzejAxID0gc3RyMDEuZmluZChzdHIwMSk7CmRpZmYgLS1naXQgYS9saWJzdGRjKyst djMvdGVzdHN1aXRlLzIxX3N0cmluZ3MvYmFzaWNfc3RyaW5nL29wZXJhdGlvbnMvZmluZC9j aGFyLzIuY2MgYi9saWJzdGRjKystdjMvdGVzdHN1aXRlLzIxX3N0cmluZ3MvYmFzaWNfc3Ry aW5nL29wZXJhdGlvbnMvZmluZC9jaGFyLzIuY2MKaW5kZXggYmFlYWI4YjkzM2YuLjc1NmFk ODVkY2FhIDEwMDY0NAotLS0gYS9saWJzdGRjKystdjMvdGVzdHN1aXRlLzIxX3N0cmluZ3Mv YmFzaWNfc3RyaW5nL29wZXJhdGlvbnMvZmluZC9jaGFyLzIuY2MKKysrIGIvbGlic3RkYysr LXYzL3Rlc3RzdWl0ZS8yMV9zdHJpbmdzL2Jhc2ljX3N0cmluZy9vcGVyYXRpb25zL2ZpbmQv Y2hhci8yLmNjCkBAIC0xOSwyMyArMTksMjMgQEAKIAogLy8gMjEuMy42LjMgYmFzaWNfc3Ry aW5nIGZpbmRfZmlyc3Rfb2YKIAotI2luY2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRlIDx0ZXN0 c3VpdGVfc3RyaW5nLmg+CiAjaW5jbHVkZSA8dGVzdHN1aXRlX2hvb2tzLmg+CiAKIHZvaWQg dGVzdDAyKHZvaWQpCiB7Ci0gIHR5cGVkZWYgc3RkOjpzdHJpbmc6OnNpemVfdHlwZSBjc2l6 ZV90eXBlOwotICBjc2l6ZV90eXBlIG5wb3MgPSBzdGQ6OnN0cmluZzo6bnBvczsKKyAgdHlw ZWRlZiBfX2dudV90ZXN0OjpzdHJpbmc6OnNpemVfdHlwZSBjc2l6ZV90eXBlOworICBjc2l6 ZV90eXBlIG5wb3MgPSBfX2dudV90ZXN0OjpzdHJpbmc6Om5wb3M7CiAgIGNzaXplX3R5cGUg Y3N6MDEsIGNzejAyOwogCiAgIGNvbnN0IGNoYXIgc3RyX2xpdDAxW10gPSAibWF2ZSI7Ci0g IGNvbnN0IHN0ZDo6c3RyaW5nIHN0cjAxKCJtYXZlcmlja3MsIHNhbnRhIGNydXoiKTsKLSAg c3RkOjpzdHJpbmcgc3RyMDIoc3RyX2xpdDAxKTsKLSAgc3RkOjpzdHJpbmcgc3RyMDMoInMs IHMiKTsKLSAgc3RkOjpzdHJpbmcgc3RyMDQ7CisgIGNvbnN0IF9fZ251X3Rlc3Q6OnN0cmlu ZyBzdHIwMSgibWF2ZXJpY2tzLCBzYW50YSBjcnV6Iik7CisgIF9fZ251X3Rlc3Q6OnN0cmlu ZyBzdHIwMihzdHJfbGl0MDEpOworICBfX2dudV90ZXN0OjpzdHJpbmcgc3RyMDMoInMsIHMi KTsKKyAgX19nbnVfdGVzdDo6c3RyaW5nIHN0cjA0OwogCiAgIC8vIHNpemVfdHlwZSBmaW5k X2ZpcnN0X29mKGNvbnN0IHN0cmluZyYsIHNpemVfdHlwZSBwb3MgPSAwKSBjb25zdDsKLSAg c3RkOjpzdHJpbmcgc3RyMDUoInhlbmEgcnVsZXoiKTsKKyAgX19nbnVfdGVzdDo6c3RyaW5n IHN0cjA1KCJ4ZW5hIHJ1bGV6Iik7CiAgIGNzejAxID0gc3RyMDEuZmluZF9maXJzdF9vZihz dHIwMSk7CiAgIFZFUklGWSggY3N6MDEgPT0gMCApOwogICBjc3owMSA9IHN0cjAxLmZpbmRf Zmlyc3Rfb2Yoc3RyMDEsIDQpOwpkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL3Rlc3RzdWl0 ZS8yMV9zdHJpbmdzL2Jhc2ljX3N0cmluZy9vcGVyYXRpb25zL2ZpbmQvY2hhci8zLmNjIGIv bGlic3RkYysrLXYzL3Rlc3RzdWl0ZS8yMV9zdHJpbmdzL2Jhc2ljX3N0cmluZy9vcGVyYXRp b25zL2ZpbmQvY2hhci8zLmNjCmluZGV4IDdjMjEwODBjNWZmLi44Mzg2YWU4MjY0ZCAxMDA2 NDQKLS0tIGEvbGlic3RkYysrLXYzL3Rlc3RzdWl0ZS8yMV9zdHJpbmdzL2Jhc2ljX3N0cmlu Zy9vcGVyYXRpb25zL2ZpbmQvY2hhci8zLmNjCisrKyBiL2xpYnN0ZGMrKy12My90ZXN0c3Vp dGUvMjFfc3RyaW5ncy9iYXNpY19zdHJpbmcvb3BlcmF0aW9ucy9maW5kL2NoYXIvMy5jYwpA QCAtMTksMjAgKzE5LDIwIEBACiAKIC8vIDIxLjMuNi41IGJhc2ljX3N0cmluZyBmaW5kX2Zp cnN0X25vdF9vZgogCi0jaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHRlc3RzdWl0ZV9z dHJpbmcuaD4KICNpbmNsdWRlIDx0ZXN0c3VpdGVfaG9va3MuaD4KIAogdm9pZCB0ZXN0MDMo dm9pZCkKIHsKLSAgdHlwZWRlZiBzdGQ6OnN0cmluZzo6c2l6ZV90eXBlIGNzaXplX3R5cGU7 Ci0gIGNzaXplX3R5cGUgbnBvcyA9IHN0ZDo6c3RyaW5nOjpucG9zOworICB0eXBlZGVmIF9f Z251X3Rlc3Q6OnN0cmluZzo6c2l6ZV90eXBlIGNzaXplX3R5cGU7CisgIGNzaXplX3R5cGUg bnBvcyA9IF9fZ251X3Rlc3Q6OnN0cmluZzo6bnBvczsKICAgY3NpemVfdHlwZSBjc3owMTsK IAotICBjb25zdCBzdGQ6OnN0cmluZyBzdHIwMSgiQm9iIFJvY2ssIHBlciBtZSIpOworICBj b25zdCBfX2dudV90ZXN0OjpzdHJpbmcgc3RyMDEoIkJvYiBSb2NrLCBwZXIgbWUiKTsKICAg Y29uc3QgY2hhciBzdHJfbGl0MDFbXSA9ICJCb2IgUm9jayI7Ci0gIHN0ZDo6c3RyaW5nIHN0 cjAyKCJvdnZlcm8gVHJpdmkiKTsKLSAgc3RkOjpzdHJpbmcgc3RyMDMoc3RyX2xpdDAxKTsK LSAgc3RkOjpzdHJpbmcgc3RyMDQ7CisgIF9fZ251X3Rlc3Q6OnN0cmluZyBzdHIwMigib3Z2 ZXJvIFRyaXZpIik7CisgIF9fZ251X3Rlc3Q6OnN0cmluZyBzdHIwMyhzdHJfbGl0MDEpOwor ICBfX2dudV90ZXN0OjpzdHJpbmcgc3RyMDQ7CiAKICAgLy8gc2l6ZV90eXBlIGZpbmRfZmly c3Rfbm90X29mKGNvbnN0IHN0cmluZyYsIHNpemVfdHlwZSBwb3MgPSAwKSBjb25zdDsKICAg Y3N6MDEgPSBzdHIwMS5maW5kX2ZpcnN0X25vdF9vZihzdHIwMSk7CmRpZmYgLS1naXQgYS9s aWJzdGRjKystdjMvdGVzdHN1aXRlLzIxX3N0cmluZ3MvYmFzaWNfc3RyaW5nL29wZXJhdGlv bnMvZmluZC9jaGFyLzQuY2MgYi9saWJzdGRjKystdjMvdGVzdHN1aXRlLzIxX3N0cmluZ3Mv YmFzaWNfc3RyaW5nL29wZXJhdGlvbnMvZmluZC9jaGFyLzQuY2MKaW5kZXggY2Y4YzBjOWYz NmQuLjcyOTY1ZDA3MzFmIDEwMDY0NAotLS0gYS9saWJzdGRjKystdjMvdGVzdHN1aXRlLzIx X3N0cmluZ3MvYmFzaWNfc3RyaW5nL29wZXJhdGlvbnMvZmluZC9jaGFyLzQuY2MKKysrIGIv bGlic3RkYysrLXYzL3Rlc3RzdWl0ZS8yMV9zdHJpbmdzL2Jhc2ljX3N0cmluZy9vcGVyYXRp b25zL2ZpbmQvY2hhci80LmNjCkBAIC0xOSwxNiArMTksMTYgQEAKIAogLy8gMjEuMy42LjEg YmFzaWNfc3RyaW5nIGZpbmQKIAotI2luY2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRlIDx0ZXN0 c3VpdGVfc3RyaW5nLmg+CiAjaW5jbHVkZSA8dGVzdHN1aXRlX2hvb2tzLmg+CiAKIC8vIGxp YnN0ZGMrKy8zMTQwMQogdm9pZCB0ZXN0MDEoKQogewotICB0eXBlZGVmIHN0ZDo6c3RyaW5n OjpzaXplX3R5cGUgY3NpemVfdHlwZTsKLSAgY3NpemVfdHlwZSBucG9zID0gc3RkOjpzdHJp bmc6Om5wb3M7CisgIHR5cGVkZWYgX19nbnVfdGVzdDo6c3RyaW5nOjpzaXplX3R5cGUgY3Np emVfdHlwZTsKKyAgY3NpemVfdHlwZSBucG9zID0gX19nbnVfdGVzdDo6c3RyaW5nOjpucG9z OwogCi0gIHN0ZDo6c3RyaW5nIHVzZSA9ICJhbnUiOworICBfX2dudV90ZXN0OjpzdHJpbmcg dXNlID0gImFudSI7CiAgIGNzaXplX3R5cGUgcG9zMSA9IHVzZS5maW5kKCJhIiwgbnBvcyk7 CiAKICAgVkVSSUZZKCBwb3MxID09IG5wb3MgKTsKZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12 My90ZXN0c3VpdGUvMjFfc3RyaW5ncy9iYXNpY19zdHJpbmcvb3BlcmF0aW9ucy9maW5kL2No YXIvNS5jYyBiL2xpYnN0ZGMrKy12My90ZXN0c3VpdGUvMjFfc3RyaW5ncy9iYXNpY19zdHJp bmcvb3BlcmF0aW9ucy9maW5kL2NoYXIvNS5jYwppbmRleCA3NDY0YTNjYjk3Zi4uYTM2Njk3 NTMwOGMgMTAwNjQ0Ci0tLSBhL2xpYnN0ZGMrKy12My90ZXN0c3VpdGUvMjFfc3RyaW5ncy9i YXNpY19zdHJpbmcvb3BlcmF0aW9ucy9maW5kL2NoYXIvNS5jYworKysgYi9saWJzdGRjKyst djMvdGVzdHN1aXRlLzIxX3N0cmluZ3MvYmFzaWNfc3RyaW5nL29wZXJhdGlvbnMvZmluZC9j aGFyLzUuY2MKQEAgLTI0LDE0ICsyNCwxNCBAQAogLy8gW3N0cmluZzo6ZmluZC5maXJzdC5u b3Qub2ZdCiAvLyBbc3RyaW5nOjpmaW5kLmxhc3Qubm90Lm9mXQogCi0jaW5jbHVkZSA8c3Ry aW5nPgorI2luY2x1ZGUgPHRlc3RzdWl0ZV9zdHJpbmcuaD4KICNpbmNsdWRlIDx0ZXN0c3Vp dGVfaG9va3MuaD4KIAogdm9pZAogdGVzdDAzKCkKIHsKICAgc3RkOjpzdHJpbmdfdmlldyBz dHIxKCJiYXIiKTsKLSAgc3RkOjpzdHJpbmcgc3RyMigiZm9vYmFyIik7CisgIF9fZ251X3Rl c3Q6OnN0cmluZyBzdHIyKCJmb29iYXIiKTsKIAogICBhdXRvIHggPSBzdHIyLmZpbmQoc3Ry MSk7CiAgIFZFUklGWSAoeCA9PSAzKTsKZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My90ZXN0 c3VpdGUvMjFfc3RyaW5ncy9iYXNpY19zdHJpbmcvb3BlcmF0aW9ucy9maW5kL2NoYXIvNi5j YyBiL2xpYnN0ZGMrKy12My90ZXN0c3VpdGUvMjFfc3RyaW5ncy9iYXNpY19zdHJpbmcvb3Bl cmF0aW9ucy9maW5kL2NoYXIvNi5jYwppbmRleCBiOTAxZTdkMDQ5Zi4uNTFkN2IyNWMxYzYg MTAwNjQ0Ci0tLSBhL2xpYnN0ZGMrKy12My90ZXN0c3VpdGUvMjFfc3RyaW5ncy9iYXNpY19z dHJpbmcvb3BlcmF0aW9ucy9maW5kL2NoYXIvNi5jYworKysgYi9saWJzdGRjKystdjMvdGVz dHN1aXRlLzIxX3N0cmluZ3MvYmFzaWNfc3RyaW5nL29wZXJhdGlvbnMvZmluZC9jaGFyLzYu Y2MKQEAgLTE5LDEzICsxOSwxMyBAQAogCiAvLyBDKysxMSAyMS40LjcuMiBbc3RyaW5nOjpm aW5kXSBiYXNpY19zdHJpbmcgZmluZAogCi0jaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUg PHRlc3RzdWl0ZV9zdHJpbmcuaD4KICNpbmNsdWRlIDx0ZXN0c3VpdGVfaG9va3MuaD4KIAog Ly8gaHR0cHM6Ly9nY2MuZ251Lm9yZy9tbC9saWJzdGRjKysvMjAxNy0wMS9tc2cwMDAyMS5o dG1sCiB2b2lkIHRlc3QwMSgpCiB7Ci0gIHR5cGVkZWYgc3RkOjpzdHJpbmcgc3RyaW5nX3R5 cGU7CisgIHR5cGVkZWYgX19nbnVfdGVzdDo6c3RyaW5nIHN0cmluZ190eXBlOwogICBzdHJp bmdfdHlwZTo6c2l6ZV90eXBlIG5wb3MgPSBzdHJpbmdfdHlwZTo6bnBvczsKIAogICBzdHJp bmdfdHlwZSB1c2UgPSAiYWFhIjsKZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My90ZXN0c3Vp dGUvMjFfc3RyaW5ncy9iYXNpY19zdHJpbmcvb3BlcmF0aW9ucy9maW5kL3djaGFyX3QvMS5j YyBiL2xpYnN0ZGMrKy12My90ZXN0c3VpdGUvMjFfc3RyaW5ncy9iYXNpY19zdHJpbmcvb3Bl cmF0aW9ucy9maW5kL3djaGFyX3QvMS5jYwppbmRleCBmMWY1NTQ4OTVlZS4uYmI2NWMwY2Qx NWYgMTAwNjQ0Ci0tLSBhL2xpYnN0ZGMrKy12My90ZXN0c3VpdGUvMjFfc3RyaW5ncy9iYXNp Y19zdHJpbmcvb3BlcmF0aW9ucy9maW5kL3djaGFyX3QvMS5jYworKysgYi9saWJzdGRjKyst djMvdGVzdHN1aXRlLzIxX3N0cmluZ3MvYmFzaWNfc3RyaW5nL29wZXJhdGlvbnMvZmluZC93 Y2hhcl90LzEuY2MKQEAgLTE5LDIyICsxOSwyMiBAQAogCiAvLyAyMS4zLjYuMSBiYXNpY19z dHJpbmcgZmluZAogCi0jaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHRlc3RzdWl0ZV9z dHJpbmcuaD4KICNpbmNsdWRlIDx0ZXN0c3VpdGVfaG9va3MuaD4KIAogdm9pZCB0ZXN0MDEo dm9pZCkKIHsKLSAgdHlwZWRlZiBzdGQ6OndzdHJpbmc6OnNpemVfdHlwZSBjc2l6ZV90eXBl OwotICB0eXBlZGVmIHN0ZDo6d3N0cmluZzo6Y29uc3RfcmVmZXJlbmNlIGNyZWY7Ci0gIHR5 cGVkZWYgc3RkOjp3c3RyaW5nOjpyZWZlcmVuY2UgcmVmOwotICBjc2l6ZV90eXBlIG5wb3Mg PSBzdGQ6OndzdHJpbmc6Om5wb3M7CisgIHR5cGVkZWYgX19nbnVfdGVzdDo6d3N0cmluZzo6 c2l6ZV90eXBlIGNzaXplX3R5cGU7CisgIHR5cGVkZWYgX19nbnVfdGVzdDo6d3N0cmluZzo6 Y29uc3RfcmVmZXJlbmNlIGNyZWY7CisgIHR5cGVkZWYgX19nbnVfdGVzdDo6d3N0cmluZzo6 cmVmZXJlbmNlIHJlZjsKKyAgY3NpemVfdHlwZSBucG9zID0gX19nbnVfdGVzdDo6d3N0cmlu Zzo6bnBvczsKICAgY3NpemVfdHlwZSBjc3owMSwgY3N6MDI7CiAKICAgY29uc3Qgd2NoYXJf dCBzdHJfbGl0MDFbXSA9IEwibWF2ZSI7Ci0gIGNvbnN0IHN0ZDo6d3N0cmluZyBzdHIwMShM Im1hdmVyaWNrcywgc2FudGEgY3J1eiIpOwotICBzdGQ6OndzdHJpbmcgc3RyMDIoc3RyX2xp dDAxKTsKLSAgc3RkOjp3c3RyaW5nIHN0cjAzKEwicywgcyIpOwotICBzdGQ6OndzdHJpbmcg c3RyMDQ7CisgIGNvbnN0IF9fZ251X3Rlc3Q6OndzdHJpbmcgc3RyMDEoTCJtYXZlcmlja3Ms IHNhbnRhIGNydXoiKTsKKyAgX19nbnVfdGVzdDo6d3N0cmluZyBzdHIwMihzdHJfbGl0MDEp OworICBfX2dudV90ZXN0Ojp3c3RyaW5nIHN0cjAzKEwicywgcyIpOworICBfX2dudV90ZXN0 Ojp3c3RyaW5nIHN0cjA0OwogCiAgIC8vIHNpemVfdHlwZSBmaW5kKGNvbnN0IHdzdHJpbmcm LCBzaXplX3R5cGUgcG9zID0gMCkgY29uc3Q7CiAgIGNzejAxID0gc3RyMDEuZmluZChzdHIw MSk7CmRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvdGVzdHN1aXRlLzIxX3N0cmluZ3MvYmFz aWNfc3RyaW5nL29wZXJhdGlvbnMvZmluZC93Y2hhcl90LzIuY2MgYi9saWJzdGRjKystdjMv dGVzdHN1aXRlLzIxX3N0cmluZ3MvYmFzaWNfc3RyaW5nL29wZXJhdGlvbnMvZmluZC93Y2hh cl90LzIuY2MKaW5kZXggZTdhYjllOGNhMjAuLjBiZDE1MzNkMzJlIDEwMDY0NAotLS0gYS9s aWJzdGRjKystdjMvdGVzdHN1aXRlLzIxX3N0cmluZ3MvYmFzaWNfc3RyaW5nL29wZXJhdGlv bnMvZmluZC93Y2hhcl90LzIuY2MKKysrIGIvbGlic3RkYysrLXYzL3Rlc3RzdWl0ZS8yMV9z dHJpbmdzL2Jhc2ljX3N0cmluZy9vcGVyYXRpb25zL2ZpbmQvd2NoYXJfdC8yLmNjCkBAIC0x OSwyMyArMTksMjMgQEAKIAogLy8gMjEuMy42LjMgYmFzaWNfc3RyaW5nIGZpbmRfZmlyc3Rf b2YKIAotI2luY2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRlIDx0ZXN0c3VpdGVfc3RyaW5nLmg+ CiAjaW5jbHVkZSA8dGVzdHN1aXRlX2hvb2tzLmg+CiAKIHZvaWQgdGVzdDAyKHZvaWQpCiB7 Ci0gIHR5cGVkZWYgc3RkOjp3c3RyaW5nOjpzaXplX3R5cGUgY3NpemVfdHlwZTsKLSAgY3Np emVfdHlwZSBucG9zID0gc3RkOjp3c3RyaW5nOjpucG9zOworICB0eXBlZGVmIF9fZ251X3Rl c3Q6OndzdHJpbmc6OnNpemVfdHlwZSBjc2l6ZV90eXBlOworICBjc2l6ZV90eXBlIG5wb3Mg PSBfX2dudV90ZXN0Ojp3c3RyaW5nOjpucG9zOwogICBjc2l6ZV90eXBlIGNzejAxLCBjc3ow MjsKIAogICBjb25zdCB3Y2hhcl90IHN0cl9saXQwMVtdID0gTCJtYXZlIjsKLSAgY29uc3Qg c3RkOjp3c3RyaW5nIHN0cjAxKEwibWF2ZXJpY2tzLCBzYW50YSBjcnV6Iik7Ci0gIHN0ZDo6 d3N0cmluZyBzdHIwMihzdHJfbGl0MDEpOwotICBzdGQ6OndzdHJpbmcgc3RyMDMoTCJzLCBz Iik7Ci0gIHN0ZDo6d3N0cmluZyBzdHIwNDsKKyAgY29uc3QgX19nbnVfdGVzdDo6d3N0cmlu ZyBzdHIwMShMIm1hdmVyaWNrcywgc2FudGEgY3J1eiIpOworICBfX2dudV90ZXN0Ojp3c3Ry aW5nIHN0cjAyKHN0cl9saXQwMSk7CisgIF9fZ251X3Rlc3Q6OndzdHJpbmcgc3RyMDMoTCJz LCBzIik7CisgIF9fZ251X3Rlc3Q6OndzdHJpbmcgc3RyMDQ7CiAKICAgLy8gc2l6ZV90eXBl IGZpbmRfZmlyc3Rfb2YoY29uc3Qgd3N0cmluZyYsIHNpemVfdHlwZSBwb3MgPSAwKSBjb25z dDsKLSAgc3RkOjp3c3RyaW5nIHN0cjA1KEwieGVuYSBydWxleiIpOworICBfX2dudV90ZXN0 Ojp3c3RyaW5nIHN0cjA1KEwieGVuYSBydWxleiIpOwogICBjc3owMSA9IHN0cjAxLmZpbmRf Zmlyc3Rfb2Yoc3RyMDEpOwogICBWRVJJRlkoIGNzejAxID09IDAgKTsKICAgY3N6MDEgPSBz dHIwMS5maW5kX2ZpcnN0X29mKHN0cjAxLCA0KTsKZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12 My90ZXN0c3VpdGUvMjFfc3RyaW5ncy9iYXNpY19zdHJpbmcvb3BlcmF0aW9ucy9maW5kL3dj aGFyX3QvMy5jYyBiL2xpYnN0ZGMrKy12My90ZXN0c3VpdGUvMjFfc3RyaW5ncy9iYXNpY19z dHJpbmcvb3BlcmF0aW9ucy9maW5kL3djaGFyX3QvMy5jYwppbmRleCA5ZGFmMjZiZjRmNC4u OGM1OTVmZGEzZjkgMTAwNjQ0Ci0tLSBhL2xpYnN0ZGMrKy12My90ZXN0c3VpdGUvMjFfc3Ry aW5ncy9iYXNpY19zdHJpbmcvb3BlcmF0aW9ucy9maW5kL3djaGFyX3QvMy5jYworKysgYi9s aWJzdGRjKystdjMvdGVzdHN1aXRlLzIxX3N0cmluZ3MvYmFzaWNfc3RyaW5nL29wZXJhdGlv bnMvZmluZC93Y2hhcl90LzMuY2MKQEAgLTE5LDIwICsxOSwyMCBAQAogCiAvLyAyMS4zLjYu NSBiYXNpY19zdHJpbmcgZmluZF9maXJzdF9ub3Rfb2YKIAotI2luY2x1ZGUgPHN0cmluZz4K KyNpbmNsdWRlIDx0ZXN0c3VpdGVfc3RyaW5nLmg+CiAjaW5jbHVkZSA8dGVzdHN1aXRlX2hv b2tzLmg+CiAKIHZvaWQgdGVzdDAzKHZvaWQpCiB7Ci0gIHR5cGVkZWYgc3RkOjp3c3RyaW5n OjpzaXplX3R5cGUgY3NpemVfdHlwZTsKLSAgY3NpemVfdHlwZSBucG9zID0gc3RkOjp3c3Ry aW5nOjpucG9zOworICB0eXBlZGVmIF9fZ251X3Rlc3Q6OndzdHJpbmc6OnNpemVfdHlwZSBj c2l6ZV90eXBlOworICBjc2l6ZV90eXBlIG5wb3MgPSBfX2dudV90ZXN0Ojp3c3RyaW5nOjpu cG9zOwogICBjc2l6ZV90eXBlIGNzejAxOwogCi0gIGNvbnN0IHN0ZDo6d3N0cmluZyBzdHIw MShMIkJvYiBSb2NrLCBwZXIgbWUiKTsKKyAgY29uc3QgX19nbnVfdGVzdDo6d3N0cmluZyBz dHIwMShMIkJvYiBSb2NrLCBwZXIgbWUiKTsKICAgY29uc3Qgd2NoYXJfdCBzdHJfbGl0MDFb XSA9IEwiQm9iIFJvY2siOwotICBzdGQ6OndzdHJpbmcgc3RyMDIoTCJvdnZlcm8gVHJpdmki KTsKLSAgc3RkOjp3c3RyaW5nIHN0cjAzKHN0cl9saXQwMSk7Ci0gIHN0ZDo6d3N0cmluZyBz dHIwNDsKKyAgX19nbnVfdGVzdDo6d3N0cmluZyBzdHIwMihMIm92dmVybyBUcml2aSIpOwor ICBfX2dudV90ZXN0Ojp3c3RyaW5nIHN0cjAzKHN0cl9saXQwMSk7CisgIF9fZ251X3Rlc3Q6 OndzdHJpbmcgc3RyMDQ7CiAKICAgLy8gc2l6ZV90eXBlIGZpbmRfZmlyc3Rfbm90X29mKGNv bnN0IHN0cmluZyYsIHNpemVfdHlwZSBwb3MgPSAwKSBjb25zdDsKICAgY3N6MDEgPSBzdHIw MS5maW5kX2ZpcnN0X25vdF9vZihzdHIwMSk7CmRpZmYgLS1naXQgYS9saWJzdGRjKystdjMv dGVzdHN1aXRlLzIxX3N0cmluZ3MvYmFzaWNfc3RyaW5nL29wZXJhdGlvbnMvZmluZC93Y2hh cl90LzQuY2MgYi9saWJzdGRjKystdjMvdGVzdHN1aXRlLzIxX3N0cmluZ3MvYmFzaWNfc3Ry aW5nL29wZXJhdGlvbnMvZmluZC93Y2hhcl90LzQuY2MKaW5kZXggZjliOTYwNTIxMmEuLjk4 YzNhMThhY2NkIDEwMDY0NAotLS0gYS9saWJzdGRjKystdjMvdGVzdHN1aXRlLzIxX3N0cmlu Z3MvYmFzaWNfc3RyaW5nL29wZXJhdGlvbnMvZmluZC93Y2hhcl90LzQuY2MKKysrIGIvbGli c3RkYysrLXYzL3Rlc3RzdWl0ZS8yMV9zdHJpbmdzL2Jhc2ljX3N0cmluZy9vcGVyYXRpb25z L2ZpbmQvd2NoYXJfdC80LmNjCkBAIC0xOSwxNiArMTksMTYgQEAKIAogLy8gMjEuMy42LjEg YmFzaWNfc3RyaW5nIGZpbmQKIAotI2luY2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRlIDx0ZXN0 c3VpdGVfc3RyaW5nLmg+CiAjaW5jbHVkZSA8dGVzdHN1aXRlX2hvb2tzLmg+CiAKIC8vIGxp YnN0ZGMrKy8zMTQwMQogdm9pZCB0ZXN0MDEoKQogewotICB0eXBlZGVmIHN0ZDo6d3N0cmlu Zzo6c2l6ZV90eXBlIGNzaXplX3R5cGU7Ci0gIGNzaXplX3R5cGUgbnBvcyA9IHN0ZDo6d3N0 cmluZzo6bnBvczsKKyAgdHlwZWRlZiBfX2dudV90ZXN0Ojp3c3RyaW5nOjpzaXplX3R5cGUg Y3NpemVfdHlwZTsKKyAgY3NpemVfdHlwZSBucG9zID0gX19nbnVfdGVzdDo6d3N0cmluZzo6 bnBvczsKIAotICBzdGQ6OndzdHJpbmcgdXNlID0gTCJhbnUiOworICBfX2dudV90ZXN0Ojp3 c3RyaW5nIHVzZSA9IEwiYW51IjsKICAgY3NpemVfdHlwZSBwb3MxID0gdXNlLmZpbmQoTCJh IiwgbnBvcyk7CiAKICAgVkVSSUZZKCBwb3MxID09IG5wb3MgKTsKZGlmZiAtLWdpdCBhL2xp YnN0ZGMrKy12My90ZXN0c3VpdGUvMjFfc3RyaW5ncy9iYXNpY19zdHJpbmcvb3BlcmF0aW9u cy9maW5kL3djaGFyX3QvNS5jYyBiL2xpYnN0ZGMrKy12My90ZXN0c3VpdGUvMjFfc3RyaW5n cy9iYXNpY19zdHJpbmcvb3BlcmF0aW9ucy9maW5kL3djaGFyX3QvNS5jYwppbmRleCBkMDRl NjEzODk1Ni4uNzYxMjZhNzk5ODggMTAwNjQ0Ci0tLSBhL2xpYnN0ZGMrKy12My90ZXN0c3Vp dGUvMjFfc3RyaW5ncy9iYXNpY19zdHJpbmcvb3BlcmF0aW9ucy9maW5kL3djaGFyX3QvNS5j YworKysgYi9saWJzdGRjKystdjMvdGVzdHN1aXRlLzIxX3N0cmluZ3MvYmFzaWNfc3RyaW5n L29wZXJhdGlvbnMvZmluZC93Y2hhcl90LzUuY2MKQEAgLTI0LDE0ICsyNCwxNCBAQAogLy8g W3N0cmluZzo6ZmluZC5maXJzdC5ub3Qub2ZdCiAvLyBbc3RyaW5nOjpmaW5kLmxhc3Qubm90 Lm9mXQogCi0jaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHRlc3RzdWl0ZV9zdHJpbmcu aD4KICNpbmNsdWRlIDx0ZXN0c3VpdGVfaG9va3MuaD4KIAogdm9pZAogdGVzdDAzKCkKIHsK ICAgc3RkOjp3c3RyaW5nX3ZpZXcgc3RyMShMImJhciIpOwotICBzdGQ6OndzdHJpbmcgc3Ry MihMImZvb2JhciIpOworICBfX2dudV90ZXN0Ojp3c3RyaW5nIHN0cjIoTCJmb29iYXIiKTsK IAogICBhdXRvIHggPSBzdHIyLmZpbmQoc3RyMSk7CiAgIFZFUklGWSAoeCA9PSAzKTsKZGlm ZiAtLWdpdCBhL2xpYnN0ZGMrKy12My90ZXN0c3VpdGUvMjFfc3RyaW5ncy9iYXNpY19zdHJp bmcvb3BlcmF0aW9ucy9maW5kL3djaGFyX3QvNi5jYyBiL2xpYnN0ZGMrKy12My90ZXN0c3Vp dGUvMjFfc3RyaW5ncy9iYXNpY19zdHJpbmcvb3BlcmF0aW9ucy9maW5kL3djaGFyX3QvNi5j YwppbmRleCAyNGE4YzgxNzhmZS4uNThjNGRiMDUxNjMgMTAwNjQ0Ci0tLSBhL2xpYnN0ZGMr Ky12My90ZXN0c3VpdGUvMjFfc3RyaW5ncy9iYXNpY19zdHJpbmcvb3BlcmF0aW9ucy9maW5k L3djaGFyX3QvNi5jYworKysgYi9saWJzdGRjKystdjMvdGVzdHN1aXRlLzIxX3N0cmluZ3Mv YmFzaWNfc3RyaW5nL29wZXJhdGlvbnMvZmluZC93Y2hhcl90LzYuY2MKQEAgLTE5LDEzICsx OSwxMyBAQAogCiAvLyBDKysxMSAyMS40LjcuMiBbc3RyaW5nOjpmaW5kXSBiYXNpY19zdHJp bmcgZmluZAogCi0jaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHRlc3RzdWl0ZV9zdHJp bmcuaD4KICNpbmNsdWRlIDx0ZXN0c3VpdGVfaG9va3MuaD4KIAogLy8gaHR0cHM6Ly9nY2Mu Z251Lm9yZy9tbC9saWJzdGRjKysvMjAxNy0wMS9tc2cwMDAyMS5odG1sCiB2b2lkIHRlc3Qw MSgpCiB7Ci0gIHR5cGVkZWYgc3RkOjp3c3RyaW5nIHN0cmluZ190eXBlOworICB0eXBlZGVm IF9fZ251X3Rlc3Q6OndzdHJpbmcgc3RyaW5nX3R5cGU7CiAgIHN0cmluZ190eXBlOjpzaXpl X3R5cGUgbnBvcyA9IHN0cmluZ190eXBlOjpucG9zOwogCiAgIHN0cmluZ190eXBlIHVzZSA9 IEwiYWFhIjsKZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My90ZXN0c3VpdGUvdXRpbC90ZXN0 c3VpdGVfc3RyaW5nLmggYi9saWJzdGRjKystdjMvdGVzdHN1aXRlL3V0aWwvdGVzdHN1aXRl X3N0cmluZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi43MTIx ZmY4ZWM2ZAotLS0gL2Rldi9udWxsCisrKyBiL2xpYnN0ZGMrKy12My90ZXN0c3VpdGUvdXRp bC90ZXN0c3VpdGVfc3RyaW5nLmgKQEAgLTAsMCArMSwyMCBAQAorI2lmbmRlZiBfR0xJQkNY WF9URVNUU1VJVEVfU1RSSU5HX0gKKyNkZWZpbmUgX0dMSUJDWFhfVEVTVFNVSVRFX1NUUklO R19ICisKKyNpZmRlZiBfR0xJQkNYWF9ERUJVRworIyBpbmNsdWRlIDxkZWJ1Zy9zdHJpbmc+ CituYW1lc3BhY2UgX19nbnVfdGVzdAoreworICB1c2luZyBfX2dudV9kZWJ1Zzo6c3RyaW5n OworICB1c2luZyBfX2dudV9kZWJ1Zzo6d3N0cmluZzsKK30KKyNlbHNlCisjIGluY2x1ZGUg PHN0cmluZz4KK25hbWVzcGFjZSBfX2dudV90ZXN0Cit7CisgIHVzaW5nIHN0ZDo6c3RyaW5n OworICB1c2luZyBzdGQ6OndzdHJpbmc7Cit9CisjZW5kaWYKKworI2VuZGlmCg== --------------QCRdGoBHBd0rrgusmhZudevm--