Received: by 2002:a05:6358:d09b:b0:dc:cd0c:909e with SMTP id jc27csp7464900rwb; Mon, 12 Dec 2022 15:14:05 -0800 (PST) X-Google-Smtp-Source: AA0mqf7KoQQQ7LftDHMDggr9yyfBeluFf1V2BspimLKFYfeoQP11PguLDsNL079eaFH9n/GNJy9U X-Received: by 2002:a05:6a20:d046:b0:9d:efd3:66c7 with SMTP id hv6-20020a056a20d04600b0009defd366c7mr22478295pzb.14.1670886845132; Mon, 12 Dec 2022 15:14:05 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1670886845; cv=none; d=google.com; s=arc-20160816; b=Givtdbnoguxo700BREayMsQEZF7JQcRjksTyj6Kzq5iNcVtU8+gptjyuLQEULS4vqD 8FHt1h5v3P7t7zgFyROSwmkdFucGvrJo4ts73EZphzxZtlfAIQifMbZDQzC0GM6+/8Ec i6hQoKLRi/Uw/8zdzt39DvJCcH4hlP8K0KpVY7etlEVQuPd9SkpTV4IZBZxYIVAHjk9N wSsMLBvj7pzHPvTi46gVuPgZmjrCBxPu5Y5CqP25b4qaWGctOjevwSZ0pWJ3AGBVLv/P N6cDN5G4+JRHjf7Jx147jJxq/z6RMKbvcnCzNASGJJvzQ8/Ds7PQ4lS4Tk/l5MXh05MS He9w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:subject:from:cc:to:content-language:user-agent :mime-version:date:message-id:dkim-signature; bh=d9s3MaKiw5b2dGxoD4LBOtFmxEEqW5xzdt414gaAvPQ=; b=Sd8ENFlyr0nPrqGarGGZa4m0nSeEDv7LS/Ug+5P9NL2WrmX4sdpO7uK2d4PgDmBjoW lIkcpwWXegbs6/QJghumLlkKVngNCb2lF+puVsx90lUym90xcQcgdAnB6Y/bLgVIOpnu wYaBpQj8IcRSkMbYhCt4HcqzA7gRJEJzVPKz8yh3bJd8Ox/1CDuYv5ZnH3OP0r+Tw99G IlIXiDO/jYgSUEJAaZOdq85nMY8qXoU4FDyNde9EPoCx7IvH18+jYThC1YuXF8LbosaF 8VQGMmY8Rw0lSpc95IRPEvmoN2lfVPEkqLCIRQWkw5oG/BVQa9V5eb+BdsKz3cQmqdfp swbg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=google header.b="SmP/Wqjv"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id 127-20020a630985000000b0046f4d395e6dsi10373824pgj.573.2022.12.12.15.13.55; Mon, 12 Dec 2022 15:14:05 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=google header.b="SmP/Wqjv"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233111AbiLLWHQ (ORCPT + 74 others); Mon, 12 Dec 2022 17:07:16 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53314 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233182AbiLLWHN (ORCPT ); Mon, 12 Dec 2022 17:07:13 -0500 Received: from mail-io1-xd31.google.com (mail-io1-xd31.google.com [IPv6:2607:f8b0:4864:20::d31]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 902E113E35 for ; Mon, 12 Dec 2022 14:07:08 -0800 (PST) Received: by mail-io1-xd31.google.com with SMTP id e189so781812iof.1 for ; Mon, 12 Dec 2022 14:07:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linuxfoundation.org; s=google; h=subject:from:cc:to:content-language:user-agent:mime-version:date :message-id:from:to:cc:subject:date:message-id:reply-to; bh=d9s3MaKiw5b2dGxoD4LBOtFmxEEqW5xzdt414gaAvPQ=; b=SmP/WqjvC/S4MyGgctyOW+uHbWzkvpqddRnz6hekX1T2b9zLnQdbKSfzVXVfUimKxy Zk4kHyYr7LSoTgwcIof0JZUZ44/rE455VWYEibPnxXtnWq1OnzQ1eM8EY2CKzIFm3JgY XCsFFqxV9Y5t67Xwu3ef7mm0Z7ZN1iErF+7os= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=subject:from:cc:to:content-language:user-agent:mime-version:date :message-id:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=d9s3MaKiw5b2dGxoD4LBOtFmxEEqW5xzdt414gaAvPQ=; b=3TWrQvXYOSO7Q+lb12YJBJQoeWBJtRdjSpCXuT20Yg8Tlpo1rFjN/25hNDh5rSbOKH sWCACbT05brCPqV3DMWBekmywlV5WEDbpNQUyaxnZGQZbT9dy+DNLZBBedLWt1ts6O4r rDcN5nJ1S4oAAoZ2NLKbwWKuR7jSaAa0uuXhxXMRjsZyDFz3XBTpbtcBInt+bdgG21i9 h+2xPpGrzBS9EBx0myLgqPTOzz4oXl9BsXdHaR74x+n082NRjLO/dcuAyzOBfg60Js6F vk452C1can4eA2XvQSHHdB9Rj/lW0YQZ4BHtH2ExnhWfzWfwstPwFU3OmcSuccwAZvo4 1Rxg== X-Gm-Message-State: ANoB5pmCJS7dj+gJZzRsQHvs44yT+uG2mh9rFY5E8UmwNeu+GX0mFN/k Cy5I2CcSt0IOuPSl4bCEmSNOyQ== X-Received: by 2002:a05:6602:21c2:b0:6e2:d939:4f30 with SMTP id c2-20020a05660221c200b006e2d9394f30mr1702429ioc.0.1670882827661; Mon, 12 Dec 2022 14:07:07 -0800 (PST) Received: from [192.168.1.128] ([38.15.45.1]) by smtp.gmail.com with ESMTPSA id m205-20020a6b3fd6000000b006e005dc3670sm4496918ioa.39.2022.12.12.14.07.05 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 12 Dec 2022 14:07:06 -0800 (PST) Content-Type: multipart/mixed; boundary="------------pbMrKdebrg0Sv7HJy6oRWDCM" Message-ID: <8b11b434-51a6-0e4f-ebb5-220d49ca5bc5@linuxfoundation.org> Date: Mon, 12 Dec 2022 15:07:05 -0700 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.4.2 Content-Language: en-US To: Linus Torvalds Cc: Shuah Khan , Brendan Higgins , David Gow , John Johansen , Stephen Rothwell , linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org From: Shuah Khan Subject: [GIT PULL] KUnit next update for Linux 6.2-rc1 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This is a multi-part message in MIME format. --------------pbMrKdebrg0Sv7HJy6oRWDCM Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Hi Linus, Please pull the following KUnit next update for Linux 6.2-rc1. This KUnit next update for Linux 6.2-rc1 consists of several enhancements, fixes, clean-ups, documentation updates, improvements to logging and KTAP compliance of KUnit test output: - log numbers in decimal and hex - parse KTAP compliant test output - allow conditionally exposing static symbols to tests when KUNIT is enabled - make static symbols visible during kunit testing - clean-ups to remove unused structure definition diff is attached. Please note that this update touches apparmor, mm, drm areas. apparmor patch in this update includes changes to static symbols visible during kunit testing. John Johansen and I are coordinating our pull requests to handle merge conflicts - John' pull request will include fixes to merge conflicts found in linux-next. Last note: patches have been in next for a while and I had to drop a patch today to avoid merge conflicts - that explains the recent commit status on a few patches. thanks, -- Shuah ---------------------------------------------------------------- The following changes since commit 247f34f7b80357943234f93f247a1ae6b6c3a740: Linux 6.1-rc2 (2022-10-23 15:27:33 -0700) are available in the Git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest tags/linux-kselftest-kunit-next-6.2-rc1 for you to fetch changes up to 054be257f28ca8eeb8e3620766501b81ceb4b293: Documentation: dev-tools: Clarify requirements for result description (2022-12-12 14:13:48 -0700) ---------------------------------------------------------------- linux-kselftest-kunit-next-6.2-rc1 This KUnit next update for Linux 6.2-rc1 consists of several enhancements, fixes, clean-ups, documentation updates, improvements to logging and KTAP compliance of KUnit test output: - log numbers in decimal and hex - parse KTAP compliant test output - allow conditionally exposing static symbols to tests when KUNIT is enabled - make static symbols visible during kunit testing - clean-ups to remove unused structure definition ---------------------------------------------------------------- Daniel Latypov (13): kunit: tool: make unit test not print parsed testdata to stdout kunit: tool: print summary of failed tests if a few failed out of a lot kunit: tool: make TestCounts a dataclass kunit: tool: unit tests all check parser errors, standardize formatting a bit kunit: tool: remove redundant file.close() call in unit test kunit: eliminate KUNIT_INIT_*_ASSERT_STRUCT macros Documentation: KUnit: make usage.rst a superset of tips.rst, remove duplication Documentation: KUnit: reword description of assertions kunit: remove KUNIT_INIT_MEM_ASSERTION macro kunit: tool: tweak error message when no KTAP found kunit: tool: make --json do nothing if --raw_ouput is set kunit: tool: don't include KTAP headers and the like in the test log kunit: tool: make parser preserve whitespace when printing test log David Gow (5): Documentation: kunit: Remove redundant 'tips.rst' page kunit: Provide a static key to check if KUnit is actively running tests kunit: Use the static key when retrieving the current test mm: slub: test: Use the kunit_get_current_test() function Documentation: kunit: Fix "How Do I Use This" / "Next Steps" sections Mark Brown (1): Documentation: dev-tools: Clarify requirements for result description Mark Rutland (1): kunit: log numbers in decimal and hex MaĆ­ra Canal (3): kunit: Introduce KUNIT_EXPECT_MEMEQ and KUNIT_EXPECT_MEMNEQ macros kunit: Add KUnit memory block assertions to the example_all_expect_macros_test kunit: Use KUNIT_EXPECT_MEMEQ macro Rae Moar (4): kunit: tool: parse KTAP compliant test output kunit: improve KTAP compliance of KUnit test output kunit: add macro to allow conditionally exposing static symbols to tests apparmor: test: make static symbols visible during kunit testing Sadiya Kazi (1): Documentation: Kunit: Update architecture.rst for minor fixes YoungJun.park (1): kunit: remove unused structure definition Documentation/dev-tools/ktap.rst | 4 +- Documentation/dev-tools/kunit/architecture.rst | 115 +++++----- Documentation/dev-tools/kunit/index.rst | 20 +- Documentation/dev-tools/kunit/start.rst | 18 +- Documentation/dev-tools/kunit/tips.rst | 190 ---------------- Documentation/dev-tools/kunit/usage.rst | 92 +++++--- drivers/gpu/drm/tests/drm_format_helper_test.c | 12 +- include/kunit/assert.h | 74 +++---- include/kunit/test-bug.h | 53 ++++- include/kunit/test.h | 118 ++++++++-- include/kunit/visibility.h | 33 +++ lib/kunit/assert.c | 62 +++++- lib/kunit/debugfs.c | 2 +- lib/kunit/executor.c | 6 +- lib/kunit/kunit-example-test.c | 7 + lib/kunit/string-stream.c | 5 - lib/kunit/test.c | 15 +- lib/slub_kunit.c | 1 + mm/slub.c | 3 +- net/core/dev_addr_lists_test.c | 4 +- security/apparmor/Kconfig | 4 +- security/apparmor/Makefile | 3 + security/apparmor/include/policy_unpack.h | 50 +++++ security/apparmor/policy_unpack.c | 238 +++++++++------------ security/apparmor/policy_unpack_test.c | 69 +++--- tools/testing/kunit/kunit.py | 36 ++-- tools/testing/kunit/kunit_parser.py | 188 ++++++++++------ tools/testing/kunit/kunit_tool_test.py | 164 ++++++++------ .../kunit/test_data/test_parse_ktap_output.log | 8 + .../kunit/test_data/test_parse_subtest_header.log | 7 + 30 files changed, 901 insertions(+), 700 deletions(-) delete mode 100644 Documentation/dev-tools/kunit/tips.rst create mode 100644 include/kunit/visibility.h create mode 100644 tools/testing/kunit/test_data/test_parse_ktap_output.log create mode 100644 tools/testing/kunit/test_data/test_parse_subtest_header.log ---------------------------------------------------------------- --------------pbMrKdebrg0Sv7HJy6oRWDCM Content-Type: text/x-patch; charset=UTF-8; name="linux-kselftest-kunit-next-6.2-rc1.diff" Content-Disposition: attachment; filename="linux-kselftest-kunit-next-6.2-rc1.diff" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2LXRvb2xzL2t0YXAucnN0IGIvRG9jdW1l bnRhdGlvbi9kZXYtdG9vbHMva3RhcC5yc3QKaW5kZXggZDBhOTU2NWIwZjQ0Li40MTRjMTA1 YjEwYTkgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZGV2LXRvb2xzL2t0YXAucnN0Cisr KyBiL0RvY3VtZW50YXRpb24vZGV2LXRvb2xzL2t0YXAucnN0CkBAIC04MCw4ICs4MCw4IEBA IGhhdmUgdGhlIG51bWJlciAxIGFuZCB0aGUgbnVtYmVyIHRoZW4gbXVzdCBpbmNyZWFzZSBi eSAxIGZvciBlYWNoIGFkZGl0aW9uYWwKIHN1YnRlc3Qgd2l0aGluIHRoZSBzYW1lIHRlc3Qg YXQgdGhlIHNhbWUgbmVzdGluZyBsZXZlbC4KIAogVGhlIGRlc2NyaXB0aW9uIGlzIGEgZGVz Y3JpcHRpb24gb2YgdGhlIHRlc3QsIGdlbmVyYWxseSB0aGUgbmFtZSBvZgotdGhlIHRlc3Qs IGFuZCBjYW4gYmUgYW55IHN0cmluZyBvZiB3b3JkcyAoY2FuJ3QgaW5jbHVkZSAjKS4gVGhl Ci1kZXNjcmlwdGlvbiBpcyBvcHRpb25hbCwgYnV0IHJlY29tbWVuZGVkLgordGhlIHRlc3Qs IGFuZCBjYW4gYmUgYW55IHN0cmluZyBvZiBjaGFyYWN0ZXJzIG90aGVyIHRoYW4gIyBvciBh CituZXdsaW5lLiAgVGhlIGRlc2NyaXB0aW9uIGlzIG9wdGlvbmFsLCBidXQgcmVjb21tZW5k ZWQuCiAKIFRoZSBkaXJlY3RpdmUgYW5kIGFueSBkaWFnbm9zdGljIGRhdGEgaXMgb3B0aW9u YWwuIElmIGVpdGhlciBhcmUgcHJlc2VudCwgdGhleQogbXVzdCBmb2xsb3cgYSBoYXNoIHNp Z24sICIjIi4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2LXRvb2xzL2t1bml0L2Fy Y2hpdGVjdHVyZS5yc3QgYi9Eb2N1bWVudGF0aW9uL2Rldi10b29scy9rdW5pdC9hcmNoaXRl Y3R1cmUucnN0CmluZGV4IDhlZmU3OTJiZGNiOS4uZTk1YWIwNTM0MmJiIDEwMDY0NAotLS0g YS9Eb2N1bWVudGF0aW9uL2Rldi10b29scy9rdW5pdC9hcmNoaXRlY3R1cmUucnN0CisrKyBi L0RvY3VtZW50YXRpb24vZGV2LXRvb2xzL2t1bml0L2FyY2hpdGVjdHVyZS5yc3QKQEAgLTQs MTYgKzQsMTcgQEAKIEtVbml0IEFyY2hpdGVjdHVyZQogPT09PT09PT09PT09PT09PT09CiAK LVRoZSBLVW5pdCBhcmNoaXRlY3R1cmUgY2FuIGJlIGRpdmlkZWQgaW50byB0d28gcGFydHM6 CitUaGUgS1VuaXQgYXJjaGl0ZWN0dXJlIGlzIGRpdmlkZWQgaW50byB0d28gcGFydHM6CiAK IC0gYEluLUtlcm5lbCBUZXN0aW5nIEZyYW1ld29ya2BfCi0tIGBrdW5pdF90b29sIChDb21t YW5kIExpbmUgVGVzdCBIYXJuZXNzKWBfCistIGBrdW5pdF90b29sIChDb21tYW5kLWxpbmUg VGVzdCBIYXJuZXNzKWBfCiAKIEluLUtlcm5lbCBUZXN0aW5nIEZyYW1ld29yawogPT09PT09 PT09PT09PT09PT09PT09PT09PT09CiAKIFRoZSBrZXJuZWwgdGVzdGluZyBsaWJyYXJ5IHN1 cHBvcnRzIEtVbml0IHRlc3RzIHdyaXR0ZW4gaW4gQyB1c2luZwotS1VuaXQuIEtVbml0IHRl c3RzIGFyZSBrZXJuZWwgY29kZS4gS1VuaXQgZG9lcyBzZXZlcmFsIHRoaW5nczoKK0tVbml0 LiBUaGVzZSBLVW5pdCB0ZXN0cyBhcmUga2VybmVsIGNvZGUuIEtVbml0IHBlcmZvcm1zIHRo ZSBmb2xsb3dpbmcKK3Rhc2tzOgogCiAtIE9yZ2FuaXplcyB0ZXN0cwogLSBSZXBvcnRzIHRl c3QgcmVzdWx0cwpAQCAtMjIsMTkgKzIzLDE3IEBAIEtVbml0LiBLVW5pdCB0ZXN0cyBhcmUg a2VybmVsIGNvZGUuIEtVbml0IGRvZXMgc2V2ZXJhbCB0aGluZ3M6CiBUZXN0IENhc2VzCiAt LS0tLS0tLS0tCiAKLVRoZSBmdW5kYW1lbnRhbCB1bml0IGluIEtVbml0IGlzIHRoZSB0ZXN0 IGNhc2UuIFRoZSBLVW5pdCB0ZXN0IGNhc2VzIGFyZQotZ3JvdXBlZCBpbnRvIEtVbml0IHN1 aXRlcy4gQSBLVW5pdCB0ZXN0IGNhc2UgaXMgYSBmdW5jdGlvbiB3aXRoIHR5cGUKLXNpZ25h dHVyZSBgYHZvaWQgKCopKHN0cnVjdCBrdW5pdCAqdGVzdClgYC4KLVRoZXNlIHRlc3QgY2Fz ZSBmdW5jdGlvbnMgYXJlIHdyYXBwZWQgaW4gYSBzdHJ1Y3QgY2FsbGVkCi1zdHJ1Y3Qga3Vu aXRfY2FzZS4KK1RoZSB0ZXN0IGNhc2UgaXMgdGhlIGZ1bmRhbWVudGFsIHVuaXQgaW4gS1Vu aXQuIEtVbml0IHRlc3QgY2FzZXMgYXJlIG9yZ2FuaXNlZAoraW50byBzdWl0ZXMuIEEgS1Vu aXQgdGVzdCBjYXNlIGlzIGEgZnVuY3Rpb24gd2l0aCB0eXBlIHNpZ25hdHVyZQorYGB2b2lk ICgqKShzdHJ1Y3Qga3VuaXQgKnRlc3QpYGAuIFRoZXNlIHRlc3QgY2FzZSBmdW5jdGlvbnMg YXJlIHdyYXBwZWQgaW4gYQorc3RydWN0IGNhbGxlZCBzdHJ1Y3Qga3VuaXRfY2FzZS4KIAog Li4gbm90ZToKIAlgYGdlbmVyYXRlX3BhcmFtc2BgIGlzIG9wdGlvbmFsIGZvciBub24tcGFy YW1ldGVyaXplZCB0ZXN0cy4KIAotRWFjaCBLVW5pdCB0ZXN0IGNhc2UgZ2V0cyBhIGBgc3Ry dWN0IGt1bml0YGAgY29udGV4dAotb2JqZWN0IHBhc3NlZCB0byBpdCB0aGF0IHRyYWNrcyBh IHJ1bm5pbmcgdGVzdC4gVGhlIEtVbml0IGFzc2VydGlvbgotbWFjcm9zIGFuZCBvdGhlciBL VW5pdCB1dGlsaXRpZXMgdXNlIHRoZSBgYHN0cnVjdCBrdW5pdGBgIGNvbnRleHQKLW9iamVj dC4gQXMgYW4gZXhjZXB0aW9uLCB0aGVyZSBhcmUgdHdvIGZpZWxkczoKK0VhY2ggS1VuaXQg dGVzdCBjYXNlIHJlY2VpdmVzIGEgYGBzdHJ1Y3Qga3VuaXRgYCBjb250ZXh0IG9iamVjdCB0 aGF0IHRyYWNrcyBhCitydW5uaW5nIHRlc3QuIFRoZSBLVW5pdCBhc3NlcnRpb24gbWFjcm9z IGFuZCBvdGhlciBLVW5pdCB1dGlsaXRpZXMgdXNlIHRoZQorYGBzdHJ1Y3Qga3VuaXRgYCBj b250ZXh0IG9iamVjdC4gQXMgYW4gZXhjZXB0aW9uLCB0aGVyZSBhcmUgdHdvIGZpZWxkczoK IAogLSBgYC0+cHJpdmBgOiBUaGUgc2V0dXAgZnVuY3Rpb25zIGNhbiB1c2UgaXQgdG8gc3Rv cmUgYXJiaXRyYXJ5IHRlc3QKICAgdXNlciBkYXRhLgpAQCAtNzcsMTIgKzc2LDEzIEBAIEV4 ZWN1dG9yCiAKIFRoZSBLVW5pdCBleGVjdXRvciBjYW4gbGlzdCBhbmQgcnVuIGJ1aWx0LWlu IEtVbml0IHRlc3RzIG9uIGJvb3QuCiBUaGUgVGVzdCBzdWl0ZXMgYXJlIHN0b3JlZCBpbiBh IGxpbmtlciBzZWN0aW9uCi1jYWxsZWQgYGAua3VuaXRfdGVzdF9zdWl0ZXNgYC4gRm9yIGNv ZGUsIHNlZToKLWh0dHBzOi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwv Z2l0L3RvcnZhbGRzL2xpbnV4LmdpdC90cmVlL2luY2x1ZGUvYXNtLWdlbmVyaWMvdm1saW51 eC5sZHMuaD9oPXY1LjE1I245NDUuCitjYWxsZWQgYGAua3VuaXRfdGVzdF9zdWl0ZXNgYC4g Rm9yIHRoZSBjb2RlLCBzZWUgYGBLVU5JVF9UQUJMRSgpYGAgbWFjcm8KK2RlZmluaXRpb24g aW4KK2BpbmNsdWRlL2FzbS1nZW5lcmljL3ZtbGludXgubGRzLmggPGh0dHBzOi8vZ2l0Lmtl cm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L3RvcnZhbGRzL2xpbnV4LmdpdC90 cmVlL2luY2x1ZGUvYXNtLWdlbmVyaWMvdm1saW51eC5sZHMuaD9oPXY2LjAjbjk1MD5gXy4K IFRoZSBsaW5rZXIgc2VjdGlvbiBjb25zaXN0cyBvZiBhbiBhcnJheSBvZiBwb2ludGVycyB0 bwogYGBzdHJ1Y3Qga3VuaXRfc3VpdGVgYCwgYW5kIGlzIHBvcHVsYXRlZCBieSB0aGUgYGBr dW5pdF90ZXN0X3N1aXRlcygpYGAKLW1hY3JvLiBUbyBydW4gYWxsIHRlc3RzIGNvbXBpbGVk IGludG8gdGhlIGtlcm5lbCwgdGhlIEtVbml0IGV4ZWN1dG9yCi1pdGVyYXRlcyBvdmVyIHRo ZSBsaW5rZXIgc2VjdGlvbiBhcnJheS4KK21hY3JvLiBUaGUgS1VuaXQgZXhlY3V0b3IgaXRl cmF0ZXMgb3ZlciB0aGUgbGlua2VyIHNlY3Rpb24gYXJyYXkgaW4gb3JkZXIgdG8KK3J1biBh bGwgdGhlIHRlc3RzIHRoYXQgYXJlIGNvbXBpbGVkIGludG8gdGhlIGtlcm5lbC4KIAogLi4g a2VybmVsLWZpZ3VyZTo6IGt1bml0X3N1aXRlbWVtb3J5ZGlhZ3JhbS5zdmcKIAk6YWx0OglL VW5pdCBTdWl0ZSBNZW1vcnkKQEAgLTkwLDE3ICs5MCwxNyBAQCBpdGVyYXRlcyBvdmVyIHRo ZSBsaW5rZXIgc2VjdGlvbiBhcnJheS4KIAlLVW5pdCBTdWl0ZSBNZW1vcnkgRGlhZ3JhbQog CiBPbiB0aGUga2VybmVsIGJvb3QsIHRoZSBLVW5pdCBleGVjdXRvciB1c2VzIHRoZSBzdGFy dCBhbmQgZW5kIGFkZHJlc3Nlcwotb2YgdGhpcyBzZWN0aW9uIHRvIGl0ZXJhdGUgb3ZlciBh bmQgcnVuIGFsbCB0ZXN0cy4gRm9yIGNvZGUsIHNlZToKLWh0dHBzOi8vZ2l0Lmtlcm5lbC5v cmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L3RvcnZhbGRzL2xpbnV4LmdpdC90cmVlL2xp Yi9rdW5pdC9leGVjdXRvci5jCi0KK29mIHRoaXMgc2VjdGlvbiB0byBpdGVyYXRlIG92ZXIg YW5kIHJ1biBhbGwgdGVzdHMuIEZvciB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlCitleGVj dXRvciwgc2VlCitgbGliL2t1bml0L2V4ZWN1dG9yLmMgPGh0dHBzOi8vZ2l0Lmtlcm5lbC5v cmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L3RvcnZhbGRzL2xpbnV4LmdpdC90cmVlL2xp Yi9rdW5pdC9leGVjdXRvci5jPmBfLgogV2hlbiBidWlsdCBhcyBhIG1vZHVsZSwgdGhlIGBg a3VuaXRfdGVzdF9zdWl0ZXMoKWBgIG1hY3JvIGRlZmluZXMgYQogYGBtb2R1bGVfaW5pdCgp YGAgZnVuY3Rpb24sIHdoaWNoIHJ1bnMgYWxsIHRoZSB0ZXN0cyBpbiB0aGUgY29tcGlsYXRp b24KIHVuaXQgaW5zdGVhZCBvZiB1dGlsaXppbmcgdGhlIGV4ZWN1dG9yLgogCiBJbiBLVW5p dCB0ZXN0cywgc29tZSBlcnJvciBjbGFzc2VzIGRvIG5vdCBhZmZlY3Qgb3RoZXIgdGVzdHMK IG9yIHBhcnRzIG9mIHRoZSBrZXJuZWwsIGVhY2ggS1VuaXQgY2FzZSBleGVjdXRlcyBpbiBh IHNlcGFyYXRlIHRocmVhZAotY29udGV4dC4gRm9yIGNvZGUsIHNlZToKLWh0dHBzOi8vZ2l0 Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L3RvcnZhbGRzL2xpbnV4Lmdp dC90cmVlL2xpYi9rdW5pdC90cnktY2F0Y2guYz9oPXY1LjE1I241OAorY29udGV4dC4gU2Vl IHRoZSBgYGt1bml0X3RyeV9jYXRjaF9ydW4oKWBgIGZ1bmN0aW9uIGluCitgbGliL2t1bml0 L3RyeS1jYXRjaC5jIDxodHRwczovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2Vy bmVsL2dpdC90b3J2YWxkcy9saW51eC5naXQvdHJlZS9saWIva3VuaXQvdHJ5LWNhdGNoLmM/ aD12NS4xNSNuNTg+YF8uCiAKIEFzc2VydGlvbiBNYWNyb3MKIC0tLS0tLS0tLS0tLS0tLS0K QEAgLTExMSwzNyArMTExLDM2IEBAIEFsbCBleHBlY3RhdGlvbnMvYXNzZXJ0aW9ucyBhcmUg Zm9ybWF0dGVkIGFzOgogCiAtIGBge0VYUEVDVHxBU1NFUlR9YGAgZGV0ZXJtaW5lcyB3aGV0 aGVyIHRoZSBjaGVjayBpcyBhbiBhc3NlcnRpb24gb3IgYW4KICAgZXhwZWN0YXRpb24uCisg IEluIHRoZSBldmVudCBvZiBhIGZhaWx1cmUsIHRoZSB0ZXN0aW5nIGZsb3cgZGlmZmVycyBh cyBmb2xsb3dzOgogCi0JLSBGb3IgYW4gZXhwZWN0YXRpb24sIGlmIHRoZSBjaGVjayBmYWls cywgbWFya3MgdGhlIHRlc3QgYXMgZmFpbGVkCi0JICBhbmQgbG9ncyB0aGUgZmFpbHVyZS4K KwktIEZvciBleHBlY3RhdGlvbnMsIHRoZSB0ZXN0IGlzIG1hcmtlZCBhcyBmYWlsZWQgYW5k IHRoZSBmYWlsdXJlIGlzIGxvZ2dlZC4KIAotCS0gQW4gYXNzZXJ0aW9uLCBvbiBmYWlsdXJl LCBjYXVzZXMgdGhlIHRlc3QgY2FzZSB0byB0ZXJtaW5hdGUKLQkgIGltbWVkaWF0ZWx5Lgor CS0gRmFpbGluZyBhc3NlcnRpb25zLCBvbiB0aGUgb3RoZXIgaGFuZCwgcmVzdWx0IGluIHRo ZSB0ZXN0IGNhc2UgYmVpbmcKKwkgIHRlcm1pbmF0ZWQgaW1tZWRpYXRlbHkuCiAKLQkJLSBB c3NlcnRpb25zIGNhbGwgZnVuY3Rpb246CisJCS0gQXNzZXJ0aW9ucyBjYWxsIHRoZSBmdW5j dGlvbjoKIAkJICBgYHZvaWQgX19ub3JldHVybiBrdW5pdF9hYm9ydChzdHJ1Y3Qga3VuaXQg KilgYC4KIAotCQktIGBga3VuaXRfYWJvcnRgYCBjYWxscyBmdW5jdGlvbjoKKwkJLSBgYGt1 bml0X2Fib3J0YGAgY2FsbHMgdGhlIGZ1bmN0aW9uOgogCQkgIGBgdm9pZCBfX25vcmV0dXJu IGt1bml0X3RyeV9jYXRjaF90aHJvdyhzdHJ1Y3Qga3VuaXRfdHJ5X2NhdGNoICp0cnlfY2F0 Y2gpYGAuCiAKLQkJLSBgYGt1bml0X3RyeV9jYXRjaF90aHJvd2BgIGNhbGxzIGZ1bmN0aW9u OgorCQktIGBga3VuaXRfdHJ5X2NhdGNoX3Rocm93YGAgY2FsbHMgdGhlIGZ1bmN0aW9uOgog CQkgIGBgdm9pZCBrdGhyZWFkX2NvbXBsZXRlX2FuZF9leGl0KHN0cnVjdCBjb21wbGV0aW9u ICosIGxvbmcpIF9fbm9yZXR1cm47YGAKIAkJICBhbmQgdGVybWluYXRlcyB0aGUgc3BlY2lh bCB0aHJlYWQgY29udGV4dC4KIAogLSBgYDxvcD5gYCBkZW5vdGVzIGEgY2hlY2sgd2l0aCBv cHRpb25zOiBgYFRSVUVgYCAoc3VwcGxpZWQgcHJvcGVydHkKLSAgaGFzIHRoZSBib29sZWFu IHZhbHVlIOKAnHRydWXigJ0pLCBgYEVRYGAgKHR3byBzdXBwbGllZCBwcm9wZXJ0aWVzIGFy ZQorICBoYXMgdGhlIGJvb2xlYW4gdmFsdWUgInRydWUiKSwgYGBFUWBgICh0d28gc3VwcGxp ZWQgcHJvcGVydGllcyBhcmUKICAgZXF1YWwpLCBgYE5PVF9FUlJfT1JfTlVMTGBgIChzdXBw bGllZCBwb2ludGVyIGlzIG5vdCBudWxsIGFuZCBkb2VzIG5vdAotICBjb250YWluIGFuIOKA nGVycuKAnSB2YWx1ZSkuCisgIGNvbnRhaW4gYW4gImVyciIgdmFsdWUpLgogCiAtIGBgW19N U0ddYGAgcHJpbnRzIGEgY3VzdG9tIG1lc3NhZ2Ugb24gZmFpbHVyZS4KIAogVGVzdCBSZXN1 bHQgUmVwb3J0aW5nCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUtVbml0IHByaW50cyB0ZXN0 IHJlc3VsdHMgaW4gS1RBUCBmb3JtYXQuIEtUQVAgaXMgYmFzZWQgb24gVEFQMTQsIHNlZToK LWh0dHBzOi8vZ2l0aHViLmNvbS9pc2FhY3MvdGVzdGFueXRoaW5nLmdpdGh1Yi5pby9ibG9i L3RhcDE0L3RhcC12ZXJzaW9uLTE0LXNwZWNpZmljYXRpb24ubWQuCi1LVEFQICh5ZXQgdG8g YmUgc3RhbmRhcmRpemVkIGZvcm1hdCkgd29ya3Mgd2l0aCBLVW5pdCBhbmQgS3NlbGZ0ZXN0 LgotVGhlIEtVbml0IGV4ZWN1dG9yIHByaW50cyBLVEFQIHJlc3VsdHMgdG8gZG1lc2csIGFu ZCBkZWJ1Z2ZzCi0oaWYgY29uZmlndXJlZCkuCitLVW5pdCBwcmludHMgdGhlIHRlc3QgcmVz dWx0cyBpbiBLVEFQIGZvcm1hdC4gS1RBUCBpcyBiYXNlZCBvbiBUQVAxNCwgc2VlCitEb2N1 bWVudGF0aW9uL2Rldi10b29scy9rdGFwLnJzdC4KK0tUQVAgd29ya3Mgd2l0aCBLVW5pdCBh bmQgS3NlbGZ0ZXN0LiBUaGUgS1VuaXQgZXhlY3V0b3IgcHJpbnRzIEtUQVAgcmVzdWx0cyB0 bworZG1lc2csIGFuZCBkZWJ1Z2ZzIChpZiBjb25maWd1cmVkKS4KIAogUGFyYW1ldGVyaXpl ZCBUZXN0cwogLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTUwLDMzICsxNDksMzUgQEAgRWFj aCBLVW5pdCBwYXJhbWV0ZXJpemVkIHRlc3QgaXMgYXNzb2NpYXRlZCB3aXRoIGEgY29sbGVj dGlvbiBvZgogcGFyYW1ldGVycy4gVGhlIHRlc3QgaXMgaW52b2tlZCBtdWx0aXBsZSB0aW1l cywgb25jZSBmb3IgZWFjaCBwYXJhbWV0ZXIKIHZhbHVlIGFuZCB0aGUgcGFyYW1ldGVyIGlz IHN0b3JlZCBpbiB0aGUgYGBwYXJhbV92YWx1ZWBgIGZpZWxkLgogVGhlIHRlc3QgY2FzZSBp bmNsdWRlcyBhIEtVTklUX0NBU0VfUEFSQU0oKSBtYWNybyB0aGF0IGFjY2VwdHMgYQotZ2Vu ZXJhdG9yIGZ1bmN0aW9uLgotVGhlIGdlbmVyYXRvciBmdW5jdGlvbiBpcyBwYXNzZWQgdGhl IHByZXZpb3VzIHBhcmFtZXRlciBhbmQgcmV0dXJucyB0aGUgbmV4dAotcGFyYW1ldGVyLiBJ dCBhbHNvIHByb3ZpZGVzIGEgbWFjcm8gdG8gZ2VuZXJhdGUgY29tbW9uLWNhc2UgZ2VuZXJh dG9ycyBiYXNlZCBvbgotYXJyYXlzLgorZ2VuZXJhdG9yIGZ1bmN0aW9uLiBUaGUgZ2VuZXJh dG9yIGZ1bmN0aW9uIGlzIHBhc3NlZCB0aGUgcHJldmlvdXMgcGFyYW1ldGVyCithbmQgcmV0 dXJucyB0aGUgbmV4dCBwYXJhbWV0ZXIuIEl0IGFsc28gaW5jbHVkZXMgYSBtYWNybyBmb3Ig Z2VuZXJhdGluZworYXJyYXktYmFzZWQgY29tbW9uLWNhc2UgZ2VuZXJhdG9ycy4KIAota3Vu aXRfdG9vbCAoQ29tbWFuZCBMaW5lIFRlc3QgSGFybmVzcykKK2t1bml0X3Rvb2wgKENvbW1h bmQtbGluZSBUZXN0IEhhcm5lc3MpCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQogCi1rdW5pdF90b29sIGlzIGEgUHl0aG9uIHNjcmlwdCBgYCh0b29scy90ZXN0 aW5nL2t1bml0L2t1bml0LnB5KWBgCi10aGF0IGNhbiBiZSB1c2VkIHRvIGNvbmZpZ3VyZSwg YnVpbGQsIGV4ZWMsIHBhcnNlIGFuZCBydW4gKHJ1bnMgb3RoZXIKLWNvbW1hbmRzIGluIG9y ZGVyKSB0ZXN0IHJlc3VsdHMuIFlvdSBjYW4gZWl0aGVyIHJ1biBLVW5pdCB0ZXN0cyB1c2lu Zwota3VuaXRfdG9vbCBvciBjYW4gaW5jbHVkZSBLVW5pdCBpbiBrZXJuZWwgYW5kIHBhcnNl IG1hbnVhbGx5LgorYGBrdW5pdF90b29sYGAgaXMgYSBQeXRob24gc2NyaXB0LCBmb3VuZCBp biBgYHRvb2xzL3Rlc3Rpbmcva3VuaXQva3VuaXQucHlgYC4gSXQKK2lzIHVzZWQgdG8gY29u ZmlndXJlLCBidWlsZCwgZXhlY3V0ZSwgcGFyc2UgdGVzdCByZXN1bHRzIGFuZCBydW4gYWxs IG9mIHRoZQorcHJldmlvdXMgY29tbWFuZHMgaW4gY29ycmVjdCBvcmRlciAoaS5lLiwgY29u ZmlndXJlLCBidWlsZCwgZXhlY3V0ZSBhbmQgcGFyc2UpLgorWW91IGhhdmUgdHdvIG9wdGlv bnMgZm9yIHJ1bm5pbmcgS1VuaXQgdGVzdHM6IGVpdGhlciBidWlsZCB0aGUga2VybmVsIHdp dGggS1VuaXQKK2VuYWJsZWQgYW5kIG1hbnVhbGx5IHBhcnNlIHRoZSByZXN1bHRzIChzZWUK K0RvY3VtZW50YXRpb24vZGV2LXRvb2xzL2t1bml0L3J1bl9tYW51YWwucnN0KSBvciB1c2Ug YGBrdW5pdF90b29sYGAKKyhzZWUgRG9jdW1lbnRhdGlvbi9kZXYtdG9vbHMva3VuaXQvcnVu X3dyYXBwZXIucnN0KS4KIAogLSBgYGNvbmZpZ3VyZWBgIGNvbW1hbmQgZ2VuZXJhdGVzIHRo ZSBrZXJuZWwgYGAuY29uZmlnYGAgZnJvbSBhCiAgIGBgLmt1bml0Y29uZmlnYGAgZmlsZSAo YW5kIGFueSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgb3B0aW9ucykuCi0gIEZvciBzb21lIGFy Y2hpdGVjdHVyZXMsIGFkZGl0aW9uYWwgY29uZmlnIG9wdGlvbnMgYXJlIHNwZWNpZmllZCBp biB0aGUKLSAgYGBxZW11X2NvbmZpZ2BgIFB5dGhvbiBzY3JpcHQKLSAgKEZvciBleGFtcGxl OiBgYHRvb2xzL3Rlc3Rpbmcva3VuaXQvcWVtdV9jb25maWdzL3Bvd2VycGMucHlgYCkuCisg IFRoZSBQeXRob24gc2NyaXB0cyBhdmFpbGFibGUgaW4gYGBxZW11X2NvbmZpZ3NgYCBmb2xk ZXIKKyAgKGZvciBleGFtcGxlLCBgYHRvb2xzL3Rlc3Rpbmcva3VuaXQvcWVtdSBjb25maWdz L3Bvd2VycGMucHlgYCkgY29udGFpbnMKKyAgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG9w dGlvbnMgZm9yIHNwZWNpZmljIGFyY2hpdGVjdHVyZXMuCiAgIEl0IHBhcnNlcyBib3RoIHRo ZSBleGlzdGluZyBgYC5jb25maWdgYCBhbmQgdGhlIGBgLmt1bml0Y29uZmlnYGAgZmlsZXMK LSAgYW5kIGVuc3VyZXMgdGhhdCBgYC5jb25maWdgYCBpcyBhIHN1cGVyc2V0IG9mIGBgLmt1 bml0Y29uZmlnYGAuCi0gIElmIHRoaXMgaXMgbm90IHRoZSBjYXNlLCBpdCB3aWxsIGNvbWJp bmUgdGhlIHR3byBhbmQgcnVuCi0gIGBgbWFrZSBvbGRkZWZjb25maWdgYCB0byByZWdlbmVy YXRlIHRoZSBgYC5jb25maWdgYCBmaWxlLiBJdCB0aGVuCi0gIHZlcmlmaWVzIHRoYXQgYGAu Y29uZmlnYGAgaXMgbm93IGEgc3VwZXJzZXQuIFRoaXMgY2hlY2tzIGlmIGFsbAotICBLY29u ZmlnIGRlcGVuZGVuY2llcyBhcmUgY29ycmVjdGx5IHNwZWNpZmllZCBpbiBgYC5rdW5pdGNv bmZpZ2BgLgotICBgYGt1bml0X2NvbmZpZy5weWBgIGluY2x1ZGVzIHRoZSBwYXJzaW5nIEtj b25maWdzIGNvZGUuIFRoZSBjb2RlIHdoaWNoCi0gIHJ1bnMgYGBtYWtlIG9sZGRlZmNvbmZp Z2BgIGlzIGEgcGFydCBvZiBgYGt1bml0X2tlcm5lbC5weWBgLiBZb3UgY2FuCi0gIGludm9r ZSB0aGlzIGNvbW1hbmQgdmlhOiBgYC4vdG9vbHMvdGVzdGluZy9rdW5pdC9rdW5pdC5weSBj b25maWdgYCBhbmQKKyAgdG8gZW5zdXJlIHRoYXQgYGAuY29uZmlnYGAgaXMgYSBzdXBlcnNl dCBvZiBgYC5rdW5pdGNvbmZpZ2BgLgorICBJZiBub3QsIGl0IHdpbGwgY29tYmluZSB0aGUg dHdvIGFuZCBydW4gYGBtYWtlIG9sZGRlZmNvbmZpZ2BgIHRvIHJlZ2VuZXJhdGUKKyAgdGhl IGBgLmNvbmZpZ2BgIGZpbGUuIEl0IHRoZW4gY2hlY2tzIHRvIHNlZSBpZiBgYC5jb25maWdg YCBoYXMgYmVjb21lIGEgc3VwZXJzZXQuCisgIFRoaXMgdmVyaWZpZXMgdGhhdCBhbGwgdGhl IEtjb25maWcgZGVwZW5kZW5jaWVzIGFyZSBjb3JyZWN0bHkgc3BlY2lmaWVkIGluIHRoZQor ICBmaWxlIGBgLmt1bml0Y29uZmlnYGAuIFRoZSBgYGt1bml0X2NvbmZpZy5weWBgIHNjcmlw dCBjb250YWlucyB0aGUgY29kZSBmb3IgcGFyc2luZworICBLY29uZmlncy4gVGhlIGNvZGUg d2hpY2ggcnVucyBgYG1ha2Ugb2xkZGVmY29uZmlnYGAgaXMgcGFydCBvZiB0aGUKKyAgYGBr dW5pdF9rZXJuZWwucHlgYCBzY3JpcHQuIFlvdSBjYW4gaW52b2tlIHRoaXMgY29tbWFuZCB0 aHJvdWdoOgorICBgYC4vdG9vbHMvdGVzdGluZy9rdW5pdC9rdW5pdC5weSBjb25maWdgYCBh bmQKICAgZ2VuZXJhdGUgYSBgYC5jb25maWdgYCBmaWxlLgogLSBgYGJ1aWxkYGAgcnVucyBg YG1ha2VgYCBvbiB0aGUga2VybmVsIHRyZWUgd2l0aCByZXF1aXJlZCBvcHRpb25zCiAgIChk ZXBlbmRzIG9uIHRoZSBhcmNoaXRlY3R1cmUgYW5kIHNvbWUgb3B0aW9ucywgZm9yIGV4YW1w bGU6IGJ1aWxkX2RpcikKQEAgLTE4NCw4ICsxODUsOCBAQCBrdW5pdF90b29sIG9yIGNhbiBp bmNsdWRlIEtVbml0IGluIGtlcm5lbCBhbmQgcGFyc2UgbWFudWFsbHkuCiAgIFRvIGJ1aWxk IGEgS1VuaXQga2VybmVsIGZyb20gdGhlIGN1cnJlbnQgYGAuY29uZmlnYGAsIHlvdSBjYW4g dXNlIHRoZQogICBgYGJ1aWxkYGAgYXJndW1lbnQ6IGBgLi90b29scy90ZXN0aW5nL2t1bml0 L2t1bml0LnB5IGJ1aWxkYGAuCiAtIGBgZXhlY2BgIGNvbW1hbmQgZXhlY3V0ZXMga2VybmVs IHJlc3VsdHMgZWl0aGVyIGRpcmVjdGx5ICh1c2luZwotICBVc2VyLW1vZGUgTGludXggY29u ZmlndXJhdGlvbiksIG9yIHZpYSBhbiBlbXVsYXRvciBzdWNoCi0gIGFzIFFFTVUuIEl0IHJl YWRzIHJlc3VsdHMgZnJvbSB0aGUgbG9nIHZpYSBzdGFuZGFyZAorICBVc2VyLW1vZGUgTGlu dXggY29uZmlndXJhdGlvbiksIG9yIHRocm91Z2ggYW4gZW11bGF0b3Igc3VjaAorICBhcyBR RU1VLiBJdCByZWFkcyByZXN1bHRzIGZyb20gdGhlIGxvZyB1c2luZyBzdGFuZGFyZAogICBv dXRwdXQgKHN0ZG91dCksIGFuZCBwYXNzZXMgdGhlbSB0byBgYHBhcnNlYGAgdG8gYmUgcGFy c2VkLgogICBJZiB5b3UgYWxyZWFkeSBoYXZlIGJ1aWx0IGEga2VybmVsIHdpdGggYnVpbHQt aW4gS1VuaXQgdGVzdHMsCiAgIHlvdSBjYW4gcnVuIHRoZSBrZXJuZWwgYW5kIGRpc3BsYXkg dGhlIHRlc3QgcmVzdWx0cyB3aXRoIHRoZSBgYGV4ZWNgYApkaWZmIC0tZ2l0IGEvRG9jdW1l bnRhdGlvbi9kZXYtdG9vbHMva3VuaXQvaW5kZXgucnN0IGIvRG9jdW1lbnRhdGlvbi9kZXYt dG9vbHMva3VuaXQvaW5kZXgucnN0CmluZGV4IGY1ZDEzZjFkMzdiZS4uYjM1OTNhZTI5YWNl IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2Rldi10b29scy9rdW5pdC9pbmRleC5yc3QK KysrIGIvRG9jdW1lbnRhdGlvbi9kZXYtdG9vbHMva3VuaXQvaW5kZXgucnN0CkBAIC0xNiw3 ICsxNiw2IEBAIEtVbml0IC0gTGludXggS2VybmVsIFVuaXQgVGVzdGluZwogCWFwaS9pbmRl eAogCXN0eWxlCiAJZmFxCi0JdGlwcwogCXJ1bm5pbmdfdGlwcwogCiBUaGlzIHNlY3Rpb24g ZGV0YWlscyB0aGUga2VybmVsIHVuaXQgdGVzdGluZyBmcmFtZXdvcmsuCkBAIC0xMDAsMTQg Kzk5LDExIEBAIFJlYWQgYWxzbyA6cmVmOmBraW5kcy1vZi10ZXN0c2AuCiBIb3cgZG8gSSB1 c2UgaXQ/CiA9PT09PT09PT09PT09PT09CiAKLSogICBEb2N1bWVudGF0aW9uL2Rldi10b29s cy9rdW5pdC9zdGFydC5yc3QgLSBmb3IgS1VuaXQgbmV3IHVzZXJzLgotKiAgIERvY3VtZW50 YXRpb24vZGV2LXRvb2xzL2t1bml0L2FyY2hpdGVjdHVyZS5yc3QgLSBLVW5pdCBhcmNoaXRl Y3R1cmUuCi0qICAgRG9jdW1lbnRhdGlvbi9kZXYtdG9vbHMva3VuaXQvcnVuX3dyYXBwZXIu cnN0IC0gcnVuIGt1bml0X3Rvb2wuCi0qICAgRG9jdW1lbnRhdGlvbi9kZXYtdG9vbHMva3Vu aXQvcnVuX21hbnVhbC5yc3QgLSBydW4gdGVzdHMgd2l0aG91dCBrdW5pdF90b29sLgotKiAg IERvY3VtZW50YXRpb24vZGV2LXRvb2xzL2t1bml0L3VzYWdlLnJzdCAtIHdyaXRlIHRlc3Rz LgotKiAgIERvY3VtZW50YXRpb24vZGV2LXRvb2xzL2t1bml0L3RpcHMucnN0IC0gYmVzdCBw cmFjdGljZXMgd2l0aAotICAgIGV4YW1wbGVzLgotKiAgIERvY3VtZW50YXRpb24vZGV2LXRv b2xzL2t1bml0L2FwaS9pbmRleC5yc3QgLSBLVW5pdCBBUElzCi0gICAgdXNlZCBmb3IgdGVz dGluZy4KLSogICBEb2N1bWVudGF0aW9uL2Rldi10b29scy9rdW5pdC9mYXEucnN0IC0gS1Vu aXQgY29tbW9uIHF1ZXN0aW9ucyBhbmQKLSAgICBhbnN3ZXJzLgorWW91IGNhbiBmaW5kIGEg c3RlcC1ieS1zdGVwIGd1aWRlIHRvIHdyaXRpbmcgYW5kIHJ1bm5pbmcgS1VuaXQgdGVzdHMg aW4KK0RvY3VtZW50YXRpb24vZGV2LXRvb2xzL2t1bml0L3N0YXJ0LnJzdAorCitBbHRlcm5h dGl2ZWx5LCBmZWVsIGZyZWUgdG8gbG9vayB0aHJvdWdoIHRoZSByZXN0IG9mIHRoZSBLVW5p dCBkb2N1bWVudGF0aW9uLAorb3IgdG8gZXhwZXJpbWVudCB3aXRoIHRvb2xzL3Rlc3Rpbmcv a3VuaXQva3VuaXQucHkgYW5kIHRoZSBleGFtcGxlIHRlc3QgdW5kZXIKK2xpYi9rdW5pdC9r dW5pdC1leGFtcGxlLXRlc3QuYworCitIYXBweSB0ZXN0aW5nIQpkaWZmIC0tZ2l0IGEvRG9j dW1lbnRhdGlvbi9kZXYtdG9vbHMva3VuaXQvc3RhcnQucnN0IGIvRG9jdW1lbnRhdGlvbi9k ZXYtdG9vbHMva3VuaXQvc3RhcnQucnN0CmluZGV4IGY0ZjUwNGYxZmIxNS4uYzczNjYxM2M5 YjE5IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2Rldi10b29scy9rdW5pdC9zdGFydC5y c3QKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXYtdG9vbHMva3VuaXQvc3RhcnQucnN0CkBAIC0y OTQsMTMgKzI5NCwxMSBAQCBDb25ncmF0cyEgWW91IGp1c3Qgd3JvdGUgeW91ciBmaXJzdCBL VW5pdCB0ZXN0LgogTmV4dCBTdGVwcwogPT09PT09PT09PQogCi0qICAgRG9jdW1lbnRhdGlv bi9kZXYtdG9vbHMva3VuaXQvYXJjaGl0ZWN0dXJlLnJzdCAtIEtVbml0IGFyY2hpdGVjdHVy ZS4KLSogICBEb2N1bWVudGF0aW9uL2Rldi10b29scy9rdW5pdC9ydW5fd3JhcHBlci5yc3Qg LSBydW4ga3VuaXRfdG9vbC4KLSogICBEb2N1bWVudGF0aW9uL2Rldi10b29scy9rdW5pdC9y dW5fbWFudWFsLnJzdCAtIHJ1biB0ZXN0cyB3aXRob3V0IGt1bml0X3Rvb2wuCi0qICAgRG9j dW1lbnRhdGlvbi9kZXYtdG9vbHMva3VuaXQvdXNhZ2UucnN0IC0gd3JpdGUgdGVzdHMuCi0q ICAgRG9jdW1lbnRhdGlvbi9kZXYtdG9vbHMva3VuaXQvdGlwcy5yc3QgLSBiZXN0IHByYWN0 aWNlcyB3aXRoCi0gICAgZXhhbXBsZXMuCi0qICAgRG9jdW1lbnRhdGlvbi9kZXYtdG9vbHMv a3VuaXQvYXBpL2luZGV4LnJzdCAtIEtVbml0IEFQSXMKLSAgICB1c2VkIGZvciB0ZXN0aW5n LgotKiAgIERvY3VtZW50YXRpb24vZGV2LXRvb2xzL2t1bml0L2ZhcS5yc3QgLSBLVW5pdCBj b21tb24gcXVlc3Rpb25zIGFuZAotICAgIGFuc3dlcnMuCitJZiB5b3UncmUgaW50ZXJlc3Rl ZCBpbiB1c2luZyBzb21lIG9mIHRoZSBtb3JlIGFkdmFuY2VkIGZlYXR1cmVzIG9mIGt1bml0 LnB5LAordGFrZSBhIGxvb2sgYXQgRG9jdW1lbnRhdGlvbi9kZXYtdG9vbHMva3VuaXQvcnVu X3dyYXBwZXIucnN0CisKK0lmIHlvdSdkIGxpa2UgdG8gcnVuIHRlc3RzIHdpdGhvdXQgdXNp bmcga3VuaXQucHksIGNoZWNrIG91dAorRG9jdW1lbnRhdGlvbi9kZXYtdG9vbHMva3VuaXQv cnVuX21hbnVhbC5yc3QKKworRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gd3JpdGluZyBLVW5p dCB0ZXN0cyAoaW5jbHVkaW5nIHNvbWUgY29tbW9uIHRlY2huaXF1ZXMKK2ZvciB0ZXN0aW5n IGRpZmZlcmVudCB0aGluZ3MpLCBzZWUgRG9jdW1lbnRhdGlvbi9kZXYtdG9vbHMva3VuaXQv dXNhZ2UucnN0CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2Rldi10b29scy9rdW5pdC90 aXBzLnJzdCBiL0RvY3VtZW50YXRpb24vZGV2LXRvb2xzL2t1bml0L3RpcHMucnN0CmRlbGV0 ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OTJkMmRlZDJmNWEuLjAwMDAwMDAwMDAwMAot LS0gYS9Eb2N1bWVudGF0aW9uL2Rldi10b29scy9rdW5pdC90aXBzLnJzdAorKysgL2Rldi9u dWxsCkBAIC0xLDE5MCArMCwwIEBACi0uLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BM LTIuMAotCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci1UaXBzIEZvciBXcml0aW5n IEtVbml0IFRlc3RzCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLUV4aXRpbmcg ZWFybHkgb24gZmFpbGVkIGV4cGVjdGF0aW9ucwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCi0KLWBgS1VOSVRfRVhQRUNUX0VRYGAgYW5kIGZyaWVuZHMgd2lsbCBt YXJrIHRoZSB0ZXN0IGFzIGZhaWxlZCBhbmQgY29udGludWUKLWV4ZWN1dGlvbi4gIEluIHNv bWUgY2FzZXMsIGl0J3MgdW5zYWZlIHRvIGNvbnRpbnVlIGFuZCB5b3UgY2FuIHVzZSB0aGUK LWBgS1VOSVRfQVNTRVJUYGAgdmFyaWFudCB0byBleGl0IG9uIGZhaWx1cmUuCi0KLS4uIGNv ZGUtYmxvY2s6OiBjCi0KLQl2b2lkIGV4YW1wbGVfdGVzdF91c2VyX2FsbG9jX2Z1bmN0aW9u KHN0cnVjdCBrdW5pdCAqdGVzdCkKLQl7Ci0JCXZvaWQgKm9iamVjdCA9IGFsbG9jX3NvbWVf b2JqZWN0X2Zvcl9tZSgpOwotCi0JCS8qIE1ha2Ugc3VyZSB3ZSBnb3QgYSB2YWxpZCBwb2lu dGVyIGJhY2suICovCi0JCUtVTklUX0FTU0VSVF9OT1RfRVJSX09SX05VTEwodGVzdCwgb2Jq ZWN0KTsKLQkJZG9fc29tZXRoaW5nX3dpdGhfb2JqZWN0KG9iamVjdCk7Ci0JfQotCi1BbGxv Y2F0aW5nIG1lbW9yeQotLS0tLS0tLS0tLS0tLS0tLS0KLQotV2hlcmUgeW91IHdvdWxkIHVz ZSBgYGt6YWxsb2NgYCwgeW91IHNob3VsZCBwcmVmZXIgYGBrdW5pdF9remFsbG9jYGAgaW5z dGVhZC4KLUtVbml0IHdpbGwgZW5zdXJlIHRoZSBtZW1vcnkgaXMgZnJlZWQgb25jZSB0aGUg dGVzdCBjb21wbGV0ZXMuCi0KLVRoaXMgaXMgcGFydGljdWxhcmx5IHVzZWZ1bCBzaW5jZSBp dCBsZXRzIHlvdSB1c2UgdGhlIGBgS1VOSVRfQVNTRVJUX0VRYGAKLW1hY3JvcyB0byBleGl0 IGVhcmx5IGZyb20gYSB0ZXN0IHdpdGhvdXQgaGF2aW5nIHRvIHdvcnJ5IGFib3V0IHJlbWVt YmVyaW5nIHRvCi1jYWxsIGBga2ZyZWVgYC4KLQotRXhhbXBsZToKLQotLi4gY29kZS1ibG9j azo6IGMKLQotCXZvaWQgZXhhbXBsZV90ZXN0X2FsbG9jYXRpb24oc3RydWN0IGt1bml0ICp0 ZXN0KQotCXsKLQkJY2hhciAqYnVmZmVyID0ga3VuaXRfa3phbGxvYyh0ZXN0LCAxNiwgR0ZQ X0tFUk5FTCk7Ci0JCS8qIEVuc3VyZSBhbGxvY2F0aW9uIHN1Y2NlZWRlZC4gKi8KLQkJS1VO SVRfQVNTRVJUX05PVF9FUlJfT1JfTlVMTCh0ZXN0LCBidWZmZXIpOwotCi0JCUtVTklUX0FT U0VSVF9TVFJFUSh0ZXN0LCBidWZmZXIsICIiKTsKLQl9Ci0KLQotVGVzdGluZyBzdGF0aWMg ZnVuY3Rpb25zCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotSWYgeW91IGRvbid0IHdh bnQgdG8gZXhwb3NlIGZ1bmN0aW9ucyBvciB2YXJpYWJsZXMganVzdCBmb3IgdGVzdGluZywg b25lIG9wdGlvbgotaXMgdG8gY29uZGl0aW9uYWxseSBgYCNpbmNsdWRlYGAgdGhlIHRlc3Qg ZmlsZSBhdCB0aGUgZW5kIG9mIHlvdXIgLmMgZmlsZSwgZS5nLgotCi0uLiBjb2RlLWJsb2Nr OjogYwotCi0JLyogSW4gbXlfZmlsZS5jICovCi0KLQlzdGF0aWMgaW50IGRvX2ludGVyZXN0 aW5nX3RoaW5nKCk7Ci0KLQkjaWZkZWYgQ09ORklHX01ZX0tVTklUX1RFU1QKLQkjaW5jbHVk ZSAibXlfa3VuaXRfdGVzdC5jIgotCSNlbmRpZgotCi1JbmplY3RpbmcgdGVzdC1vbmx5IGNv ZGUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1TaW1pbGFybHkgdG8gdGhlIGFib3Zl LCBpdCBjYW4gYmUgdXNlZnVsIHRvIGFkZCB0ZXN0LXNwZWNpZmljIGxvZ2ljLgotCi0uLiBj b2RlLWJsb2NrOjogYwotCi0JLyogSW4gbXlfZmlsZS5oICovCi0KLQkjaWZkZWYgQ09ORklH X01ZX0tVTklUX1RFU1QKLQkvKiBEZWZpbmVkIGluIG15X2t1bml0X3Rlc3QuYyAqLwotCXZv aWQgdGVzdF9vbmx5X2hvb2sodm9pZCk7Ci0JI2Vsc2UKLQl2b2lkIHRlc3Rfb25seV9ob29r KHZvaWQpIHsgfQotCSNlbmRpZgotCi1UaGlzIHRlc3Qtb25seSBjb2RlIGNhbiBiZSBtYWRl IG1vcmUgdXNlZnVsIGJ5IGFjY2Vzc2luZyB0aGUgY3VycmVudCBrdW5pdAotdGVzdCwgc2Vl IGJlbG93LgotCi1BY2Nlc3NpbmcgdGhlIGN1cnJlbnQgdGVzdAotLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KLQotSW4gc29tZSBjYXNlcywgeW91IG5lZWQgdG8gY2FsbCB0ZXN0LW9u bHkgY29kZSBmcm9tIG91dHNpZGUgdGhlIHRlc3QgZmlsZSwgZS5nLgotbGlrZSBpbiB0aGUg ZXhhbXBsZSBhYm92ZSBvciBpZiB5b3UncmUgcHJvdmlkaW5nIGEgZmFrZSBpbXBsZW1lbnRh dGlvbiBvZiBhbgotb3BzIHN0cnVjdC4KLVRoZXJlIGlzIGEgYGBrdW5pdF90ZXN0YGAgZmll bGQgaW4gYGB0YXNrX3N0cnVjdGBgLCBzbyB5b3UgY2FuIGFjY2VzcyBpdCB2aWEKLWBgY3Vy cmVudC0+a3VuaXRfdGVzdGBgLgotCi1IZXJlJ3MgYSBzbGlnaHRseSBpbi1kZXB0aCBleGFt cGxlIG9mIGhvdyBvbmUgY291bGQgaW1wbGVtZW50ICJtb2NraW5nIjoKLQotLi4gY29kZS1i bG9jazo6IGMKLQotCSNpbmNsdWRlIDxsaW51eC9zY2hlZC5oPiAvKiBmb3IgY3VycmVudCAq LwotCi0Jc3RydWN0IHRlc3RfZGF0YSB7Ci0JCWludCBmb29fcmVzdWx0OwotCQlpbnQgd2Fu dF9mb29fY2FsbGVkX3dpdGg7Ci0JfTsKLQotCXN0YXRpYyBpbnQgZmFrZV9mb28oaW50IGFy ZykKLQl7Ci0JCXN0cnVjdCBrdW5pdCAqdGVzdCA9IGN1cnJlbnQtPmt1bml0X3Rlc3Q7Ci0J CXN0cnVjdCB0ZXN0X2RhdGEgKnRlc3RfZGF0YSA9IHRlc3QtPnByaXY7Ci0KLQkJS1VOSVRf RVhQRUNUX0VRKHRlc3QsIHRlc3RfZGF0YS0+d2FudF9mb29fY2FsbGVkX3dpdGgsIGFyZyk7 Ci0JCXJldHVybiB0ZXN0X2RhdGEtPmZvb19yZXN1bHQ7Ci0JfQotCi0Jc3RhdGljIHZvaWQg ZXhhbXBsZV9zaW1wbGVfdGVzdChzdHJ1Y3Qga3VuaXQgKnRlc3QpCi0JewotCQkvKiBBc3N1 bWUgcHJpdiBpcyBhbGxvY2F0ZWQgaW4gdGhlIHN1aXRlJ3MgLmluaXQgKi8KLQkJc3RydWN0 IHRlc3RfZGF0YSAqdGVzdF9kYXRhID0gdGVzdC0+cHJpdjsKLQotCQl0ZXN0X2RhdGEtPmZv b19yZXN1bHQgPSA0MjsKLQkJdGVzdF9kYXRhLT53YW50X2Zvb19jYWxsZWRfd2l0aCA9IDE7 Ci0KLQkJLyogSW4gYSByZWFsIHRlc3QsIHdlJ2QgcHJvYmFibHkgcGFzcyBhIHBvaW50ZXIg dG8gZmFrZV9mb28gc29tZXdoZXJlCi0JCSAqIGxpa2UgYW4gb3BzIHN0cnVjdCwgZXRjLiBp bnN0ZWFkIG9mIGNhbGxpbmcgaXQgZGlyZWN0bHkuICovCi0JCUtVTklUX0VYUEVDVF9FUSh0 ZXN0LCBmYWtlX2ZvbygxKSwgNDIpOwotCX0KLQotCi1Ob3RlOiBoZXJlIHdlJ3JlIGFibGUg dG8gZ2V0IGF3YXkgd2l0aCB1c2luZyBgYHRlc3QtPnByaXZgYCwgYnV0IGlmIHlvdSB3YW50 ZWQKLXNvbWV0aGluZyBtb3JlIGZsZXhpYmxlIHlvdSBjb3VsZCB1c2UgYSBuYW1lZCBgYGt1 bml0X3Jlc291cmNlYGAsIHNlZQotRG9jdW1lbnRhdGlvbi9kZXYtdG9vbHMva3VuaXQvYXBp L3Rlc3QucnN0LgotCi1GYWlsaW5nIHRoZSBjdXJyZW50IHRlc3QKLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQotCi1CdXQgc29tZXRpbWVzLCB5b3UgbWlnaHQganVzdCB3YW50IHRvIGZh aWwgdGhlIGN1cnJlbnQgdGVzdC4gSW4gdGhhdCBjYXNlLCB3ZQotaGF2ZSBgYGt1bml0X2Zh aWxfY3VycmVudF90ZXN0KGZtdCwgYXJncy4uLilgYCB3aGljaCBpcyBkZWZpbmVkIGluIGBg PGt1bml0L3Rlc3QtYnVnLmg+YGAgYW5kCi1kb2Vzbid0IHJlcXVpcmUgcHVsbGluZyBpbiBg YDxrdW5pdC90ZXN0Lmg+YGAuCi0KLUUuZy4gc2F5IHdlIGhhZCBhbiBvcHRpb24gdG8gZW5h YmxlIHNvbWUgZXh0cmEgZGVidWcgY2hlY2tzIG9uIHNvbWUgZGF0YSBzdHJ1Y3R1cmU6Ci0K LS4uIGNvZGUtYmxvY2s6OiBjCi0KLQkjaW5jbHVkZSA8a3VuaXQvdGVzdC1idWcuaD4KLQot CSNpZmRlZiBDT05GSUdfRVhUUkFfREVCVUdfQ0hFQ0tTCi0Jc3RhdGljIHZvaWQgdmFsaWRh dGVfbXlfZGF0YShzdHJ1Y3QgZGF0YSAqZGF0YSkKLQl7Ci0JCWlmIChpc192YWxpZChkYXRh KSkKLQkJCXJldHVybjsKLQotCQlrdW5pdF9mYWlsX2N1cnJlbnRfdGVzdCgiZGF0YSAlcCBp cyBpbnZhbGlkIiwgZGF0YSk7Ci0KLQkJLyogTm9ybWFsLCBub24tS1VuaXQsIGVycm9yIHJl cG9ydGluZyBjb2RlIGhlcmUuICovCi0JfQotCSNlbHNlCi0Jc3RhdGljIHZvaWQgbXlfZGVi dWdfZnVuY3Rpb24odm9pZCkgeyB9Ci0JI2VuZGlmCi0KLQotQ3VzdG9taXppbmcgZXJyb3Ig bWVzc2FnZXMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLUVhY2ggb2YgdGhlIGBg S1VOSVRfRVhQRUNUYGAgYW5kIGBgS1VOSVRfQVNTRVJUYGAgbWFjcm9zIGhhdmUgYSBgYF9N U0dgYCB2YXJpYW50LgotVGhlc2UgdGFrZSBhIGZvcm1hdCBzdHJpbmcgYW5kIGFyZ3VtZW50 cyB0byBwcm92aWRlIGFkZGl0aW9uYWwgY29udGV4dCB0byB0aGUgYXV0b21hdGljYWxseSBn ZW5lcmF0ZWQgZXJyb3IgbWVzc2FnZXMuCi0KLS4uIGNvZGUtYmxvY2s6OiBjCi0KLQljaGFy IHNvbWVfc3RyWzQxXTsKLQlnZW5lcmF0ZV9zaGExX2hleF9zdHJpbmcoc29tZV9zdHIpOwot Ci0JLyogQmVmb3JlLiBOb3QgZWFzeSB0byB0ZWxsIHdoeSB0aGUgdGVzdCBmYWlsZWQuICov Ci0JS1VOSVRfRVhQRUNUX0VRKHRlc3QsIHN0cmxlbihzb21lX3N0ciksIDQwKTsKLQotCS8q IEFmdGVyLiBOb3cgd2Ugc2VlIHRoZSBvZmZlbmRpbmcgc3RyaW5nLiAqLwotCUtVTklUX0VY UEVDVF9FUV9NU0codGVzdCwgc3RybGVuKHNvbWVfc3RyKSwgNDAsICJzb21lX3N0cj0nJXMn Iiwgc29tZV9zdHIpOwotCi1BbHRlcm5hdGl2ZWx5LCBvbmUgY2FuIHRha2UgZnVsbCBjb250 cm9sIG92ZXIgdGhlIGVycm9yIG1lc3NhZ2UgYnkgdXNpbmcgYGBLVU5JVF9GQUlMKClgYCwg ZS5nLgotCi0uLiBjb2RlLWJsb2NrOjogYwotCi0JLyogQmVmb3JlICovCi0JS1VOSVRfRVhQ RUNUX0VRKHRlc3QsIHNvbWVfc2V0dXBfZnVuY3Rpb24oKSwgMCk7Ci0KLQkvKiBBZnRlcjog ZnVsbCBjb250cm9sIG92ZXIgdGhlIGZhaWx1cmUgbWVzc2FnZS4gKi8KLQlpZiAoc29tZV9z ZXR1cF9mdW5jdGlvbigpKQotCQlLVU5JVF9GQUlMKHRlc3QsICJGYWlsZWQgdG8gc2V0dXAg dGhpbmcgZm9yIHRlc3RpbmciKTsKLQotTmV4dCBTdGVwcwotPT09PT09PT09PQotKiAgIE9w dGlvbmFsOiBzZWUgdGhlIERvY3VtZW50YXRpb24vZGV2LXRvb2xzL2t1bml0L3VzYWdlLnJz dCBwYWdlIGZvciBhIG1vcmUKLSAgICBpbi1kZXB0aCBleHBsYW5hdGlvbiBvZiBLVW5pdC4K ZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2LXRvb2xzL2t1bml0L3VzYWdlLnJzdCBi L0RvY3VtZW50YXRpb24vZGV2LXRvb2xzL2t1bml0L3VzYWdlLnJzdAppbmRleCAyNzM3ODYz ZWYzNjUuLjQ4ZjgxOTZkNWFhZCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXYtdG9v bHMva3VuaXQvdXNhZ2UucnN0CisrKyBiL0RvY3VtZW50YXRpb24vZGV2LXRvb2xzL2t1bml0 L3VzYWdlLnJzdApAQCAtMTEyLDExICsxMTIsNDUgQEAgdGVybWluYXRlcyB0aGUgdGVzdCBj YXNlIGlmIHRoZSBjb25kaXRpb24gaXMgbm90IHNhdGlzZmllZC4gRm9yIGV4YW1wbGU6CiAJ CQlLVU5JVF9FWFBFQ1RfTEUodGVzdCwgYVtpXSwgYVtpICsgMV0pOwogCX0KIAotSW4gdGhp cyBleGFtcGxlLCB0aGUgbWV0aG9kIHVuZGVyIHRlc3Qgc2hvdWxkIHJldHVybiBwb2ludGVy IHRvIGEgdmFsdWUuIElmIHRoZQotcG9pbnRlciByZXR1cm5zIG51bGwgb3IgYW4gZXJybm8s IHdlIHdhbnQgdG8gc3RvcCB0aGUgdGVzdCBzaW5jZSB0aGUgZm9sbG93aW5nCi1leHBlY3Rh dGlvbiBjb3VsZCBjcmFzaCB0aGUgdGVzdCBjYXNlLiBgQVNTRVJUX05PVF9FUlJfT1JfTlVM TCguLi4pYCBhbGxvd3MgdXMKLXRvIGJhaWwgb3V0IG9mIHRoZSB0ZXN0IGNhc2UgaWYgdGhl IGFwcHJvcHJpYXRlIGNvbmRpdGlvbnMgYXJlIG5vdCBzYXRpc2ZpZWQgdG8KLWNvbXBsZXRl IHRoZSB0ZXN0LgorSW4gdGhpcyBleGFtcGxlLCB3ZSBuZWVkIHRvIGJlIGFibGUgdG8gYWxs b2NhdGUgYW4gYXJyYXkgdG8gdGVzdCB0aGUgYGBzb3J0KClgYAorZnVuY3Rpb24uIFNvIHdl IHVzZSBgYEtVTklUX0FTU0VSVF9OT1RfRVJSX09SX05VTEwoKWBgIHRvIGFib3J0IHRoZSB0 ZXN0IGlmCit0aGVyZSdzIGFuIGFsbG9jYXRpb24gZXJyb3IuCisKKy4uIG5vdGU6OgorICAg SW4gb3RoZXIgdGVzdCBmcmFtZXdvcmtzLCBgYEFTU0VSVGBgIG1hY3JvcyBhcmUgb2Z0ZW4g aW1wbGVtZW50ZWQgYnkgY2FsbGluZworICAgYGByZXR1cm5gYCBzbyB0aGV5IG9ubHkgd29y ayBmcm9tIHRoZSB0ZXN0IGZ1bmN0aW9uLiBJbiBLVW5pdCwgd2Ugc3RvcCB0aGUKKyAgIGN1 cnJlbnQga3RocmVhZCBvbiBmYWlsdXJlLCBzbyB5b3UgY2FuIGNhbGwgdGhlbSBmcm9tIGFu eXdoZXJlLgorCitDdXN0b21pemluZyBlcnJvciBtZXNzYWdlcworLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKworRWFjaCBvZiB0aGUgYGBLVU5JVF9FWFBFQ1RgYCBhbmQgYGBLVU5J VF9BU1NFUlRgYCBtYWNyb3MgaGF2ZSBhIGBgX01TR2BgCit2YXJpYW50LiAgVGhlc2UgdGFr ZSBhIGZvcm1hdCBzdHJpbmcgYW5kIGFyZ3VtZW50cyB0byBwcm92aWRlIGFkZGl0aW9uYWwK K2NvbnRleHQgdG8gdGhlIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGVycm9yIG1lc3NhZ2Vz LgorCisuLiBjb2RlLWJsb2NrOjogYworCisJY2hhciBzb21lX3N0cls0MV07CisJZ2VuZXJh dGVfc2hhMV9oZXhfc3RyaW5nKHNvbWVfc3RyKTsKKworCS8qIEJlZm9yZS4gTm90IGVhc3kg dG8gdGVsbCB3aHkgdGhlIHRlc3QgZmFpbGVkLiAqLworCUtVTklUX0VYUEVDVF9FUSh0ZXN0 LCBzdHJsZW4oc29tZV9zdHIpLCA0MCk7CisKKwkvKiBBZnRlci4gTm93IHdlIHNlZSB0aGUg b2ZmZW5kaW5nIHN0cmluZy4gKi8KKwlLVU5JVF9FWFBFQ1RfRVFfTVNHKHRlc3QsIHN0cmxl bihzb21lX3N0ciksIDQwLCAic29tZV9zdHI9JyVzJyIsIHNvbWVfc3RyKTsKKworQWx0ZXJu YXRpdmVseSwgb25lIGNhbiB0YWtlIGZ1bGwgY29udHJvbCBvdmVyIHRoZSBlcnJvciBtZXNz YWdlIGJ5IHVzaW5nCitgYEtVTklUX0ZBSUwoKWBgLCBlLmcuCisKKy4uIGNvZGUtYmxvY2s6 OiBjCisKKwkvKiBCZWZvcmUgKi8KKwlLVU5JVF9FWFBFQ1RfRVEodGVzdCwgc29tZV9zZXR1 cF9mdW5jdGlvbigpLCAwKTsKKworCS8qIEFmdGVyOiBmdWxsIGNvbnRyb2wgb3ZlciB0aGUg ZmFpbHVyZSBtZXNzYWdlLiAqLworCWlmIChzb21lX3NldHVwX2Z1bmN0aW9uKCkpCisJCUtV TklUX0ZBSUwodGVzdCwgIkZhaWxlZCB0byBzZXR1cCB0aGluZyBmb3IgdGVzdGluZyIpOwor CiAKIFRlc3QgU3VpdGVzCiB+fn5+fn5+fn5+fgpAQCAtNTQ2LDI0ICs1ODAsNiBAQCBCeSBy ZXVzaW5nIHRoZSBzYW1lIGBgY2FzZXNgYCBhcnJheSBmcm9tIGFib3ZlLCB3ZSBjYW4gd3Jp dGUgdGhlIHRlc3QgYXMgYQogCQl7fQogCX07CiAKLUV4aXRpbmcgRWFybHkgb24gRmFpbGVk IEV4cGVjdGF0aW9ucwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0K LVdlIGNhbiB1c2UgYGBLVU5JVF9FWFBFQ1RfRVFgYCB0byBtYXJrIHRoZSB0ZXN0IGFzIGZh aWxlZCBhbmQgY29udGludWUKLWV4ZWN1dGlvbi4gIEluIHNvbWUgY2FzZXMsIGl0IGlzIHVu c2FmZSB0byBjb250aW51ZS4gV2UgY2FuIHVzZSB0aGUKLWBgS1VOSVRfQVNTRVJUYGAgdmFy aWFudCB0byBleGl0IG9uIGZhaWx1cmUuCi0KLS4uIGNvZGUtYmxvY2s6OiBjCi0KLQl2b2lk IGV4YW1wbGVfdGVzdF91c2VyX2FsbG9jX2Z1bmN0aW9uKHN0cnVjdCBrdW5pdCAqdGVzdCkK LQl7Ci0JCXZvaWQgKm9iamVjdCA9IGFsbG9jX3NvbWVfb2JqZWN0X2Zvcl9tZSgpOwotCi0J CS8qIE1ha2Ugc3VyZSB3ZSBnb3QgYSB2YWxpZCBwb2ludGVyIGJhY2suICovCi0JCUtVTklU X0FTU0VSVF9OT1RfRVJSX09SX05VTEwodGVzdCwgb2JqZWN0KTsKLQkJZG9fc29tZXRoaW5n X3dpdGhfb2JqZWN0KG9iamVjdCk7Ci0JfQotCiBBbGxvY2F0aW5nIE1lbW9yeQogLS0tLS0t LS0tLS0tLS0tLS0KIApAQCAtNjI1LDE3ICs2NDEsMjMgQEAgYXMgc2hvd24gaW4gbmV4dCBz ZWN0aW9uOiAqQWNjZXNzaW5nIFRoZSBDdXJyZW50IFRlc3QqLgogQWNjZXNzaW5nIFRoZSBD dXJyZW50IFRlc3QKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUluIHNvbWUgY2Fz ZXMsIHdlIG5lZWQgdG8gY2FsbCB0ZXN0LW9ubHkgY29kZSBmcm9tIG91dHNpZGUgdGhlIHRl c3QgZmlsZS4KLUZvciBleGFtcGxlLCBzZWUgZXhhbXBsZSBpbiBzZWN0aW9uICpJbmplY3Rp bmcgVGVzdC1Pbmx5IENvZGUqIG9yIGlmCi13ZSBhcmUgcHJvdmlkaW5nIGEgZmFrZSBpbXBs ZW1lbnRhdGlvbiBvZiBhbiBvcHMgc3RydWN0LiBVc2luZwotYGBrdW5pdF90ZXN0YGAgZmll bGQgaW4gYGB0YXNrX3N0cnVjdGBgLCB3ZSBjYW4gYWNjZXNzIGl0IHZpYQotYGBjdXJyZW50 LT5rdW5pdF90ZXN0YGAuCitJbiBzb21lIGNhc2VzLCB3ZSBuZWVkIHRvIGNhbGwgdGVzdC1v bmx5IGNvZGUgZnJvbSBvdXRzaWRlIHRoZSB0ZXN0IGZpbGUuICBUaGlzCitpcyBoZWxwZnVs LCBmb3IgZXhhbXBsZSwgd2hlbiBwcm92aWRpbmcgYSBmYWtlIGltcGxlbWVudGF0aW9uIG9m IGEgZnVuY3Rpb24sIG9yCit0byBmYWlsIGFueSBjdXJyZW50IHRlc3QgZnJvbSB3aXRoaW4g YW4gZXJyb3IgaGFuZGxlci4KK1dlIGNhbiBkbyB0aGlzIHZpYSB0aGUgYGBrdW5pdF90ZXN0 YGAgZmllbGQgaW4gYGB0YXNrX3N0cnVjdGBgLCB3aGljaCB3ZSBjYW4KK2FjY2VzcyB1c2lu ZyB0aGUgYGBrdW5pdF9nZXRfY3VycmVudF90ZXN0KClgYCBmdW5jdGlvbiBpbiBgYGt1bml0 L3Rlc3QtYnVnLmhgYC4KKworYGBrdW5pdF9nZXRfY3VycmVudF90ZXN0KClgYCBpcyBzYWZl IHRvIGNhbGwgZXZlbiBpZiBLVW5pdCBpcyBub3QgZW5hYmxlZC4gSWYKK0tVbml0IGlzIG5v dCBlbmFibGVkLCB3YXMgYnVpbHQgYXMgYSBtb2R1bGUgKGBgQ09ORklHX0tVTklUPW1gYCks IG9yIG5vIHRlc3QgaXMKK3J1bm5pbmcgaW4gdGhlIGN1cnJlbnQgdGFzaywgaXQgd2lsbCBy ZXR1cm4gYGBOVUxMYGAuIFRoaXMgY29tcGlsZXMgZG93biB0bworZWl0aGVyIGEgbm8tb3Ag b3IgYSBzdGF0aWMga2V5IGNoZWNrLCBzbyB3aWxsIGhhdmUgYSBuZWdsaWdpYmxlIHBlcmZv cm1hbmNlCitpbXBhY3Qgd2hlbiBubyB0ZXN0IGlzIHJ1bm5pbmcuCiAKLVRoZSBleGFtcGxl IGJlbG93IGluY2x1ZGVzIGhvdyB0byBpbXBsZW1lbnQgIm1vY2tpbmciOgorVGhlIGV4YW1w bGUgYmVsb3cgdXNlcyB0aGlzIHRvIGltcGxlbWVudCBhICJtb2NrIiBpbXBsZW1lbnRhdGlv biBvZiBhIGZ1bmN0aW9uLCBgYGZvb2BgOgogCiAuLiBjb2RlLWJsb2NrOjogYwogCi0JI2lu Y2x1ZGUgPGxpbnV4L3NjaGVkLmg+IC8qIGZvciBjdXJyZW50ICovCisJI2luY2x1ZGUgPGt1 bml0L3Rlc3QtYnVnLmg+IC8qIGZvciBrdW5pdF9nZXRfY3VycmVudF90ZXN0ICovCiAKIAlz dHJ1Y3QgdGVzdF9kYXRhIHsKIAkJaW50IGZvb19yZXN1bHQ7CkBAIC02NDQsNyArNjY2LDcg QEAgVGhlIGV4YW1wbGUgYmVsb3cgaW5jbHVkZXMgaG93IHRvIGltcGxlbWVudCAibW9ja2lu ZyI6CiAKIAlzdGF0aWMgaW50IGZha2VfZm9vKGludCBhcmcpCiAJewotCQlzdHJ1Y3Qga3Vu aXQgKnRlc3QgPSBjdXJyZW50LT5rdW5pdF90ZXN0OworCQlzdHJ1Y3Qga3VuaXQgKnRlc3Qg PSBrdW5pdF9nZXRfY3VycmVudF90ZXN0KCk7CiAJCXN0cnVjdCB0ZXN0X2RhdGEgKnRlc3Rf ZGF0YSA9IHRlc3QtPnByaXY7CiAKIAkJS1VOSVRfRVhQRUNUX0VRKHRlc3QsIHRlc3RfZGF0 YS0+d2FudF9mb29fY2FsbGVkX3dpdGgsIGFyZyk7CkBAIC02NzUsNyArNjk3LDcgQEAgRWFj aCB0ZXN0IGNhbiBoYXZlIG11bHRpcGxlIHJlc291cmNlcyB3aGljaCBoYXZlIHN0cmluZyBu YW1lcyBwcm92aWRpbmcgdGhlIHNhbWUKIGZsZXhpYmlsaXR5IGFzIGEgYGBwcml2YGAgbWVt YmVyLCBidXQgYWxzbywgZm9yIGV4YW1wbGUsIGFsbG93aW5nIGhlbHBlcgogZnVuY3Rpb25z IHRvIGNyZWF0ZSByZXNvdXJjZXMgd2l0aG91dCBjb25mbGljdGluZyB3aXRoIGVhY2ggb3Ro ZXIuIEl0IGlzIGFsc28KIHBvc3NpYmxlIHRvIGRlZmluZSBhIGNsZWFuIHVwIGZ1bmN0aW9u IGZvciBlYWNoIHJlc291cmNlLCBtYWtpbmcgaXQgZWFzeSB0bwotYXZvaWQgcmVzb3VyY2Ug bGVha3MuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgRG9jdW1lbnRhdGlvbi9kZXYtdG9v bHMva3VuaXQvYXBpL3Rlc3QucnN0LgorYXZvaWQgcmVzb3VyY2UgbGVha3MuIEZvciBtb3Jl IGluZm9ybWF0aW9uLCBzZWUgRG9jdW1lbnRhdGlvbi9kZXYtdG9vbHMva3VuaXQvYXBpL3Jl c291cmNlLnJzdC4KIAogRmFpbGluZyBUaGUgQ3VycmVudCBUZXN0CiAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KQEAgLTcwMywzICs3MjUsOSBAQCBzdHJ1Y3R1cmVzIGFzIHNob3duIGJl bG93OgogCXN0YXRpYyB2b2lkIG15X2RlYnVnX2Z1bmN0aW9uKHZvaWQpIHsgfQogCSNlbmRp ZgogCitgYGt1bml0X2ZhaWxfY3VycmVudF90ZXN0KClgYCBpcyBzYWZlIHRvIGNhbGwgZXZl biBpZiBLVW5pdCBpcyBub3QgZW5hYmxlZC4gSWYKK0tVbml0IGlzIG5vdCBlbmFibGVkLCB3 YXMgYnVpbHQgYXMgYSBtb2R1bGUgKGBgQ09ORklHX0tVTklUPW1gYCksIG9yIG5vIHRlc3Qg aXMKK3J1bm5pbmcgaW4gdGhlIGN1cnJlbnQgdGFzaywgaXQgd2lsbCBkbyBub3RoaW5nLiBU aGlzIGNvbXBpbGVzIGRvd24gdG8gZWl0aGVyIGEKK25vLW9wIG9yIGEgc3RhdGljIGtleSBj aGVjaywgc28gd2lsbCBoYXZlIGEgbmVnbGlnaWJsZSBwZXJmb3JtYW5jZSBpbXBhY3Qgd2hl bgorbm8gdGVzdCBpcyBydW5uaW5nLgorCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v dGVzdHMvZHJtX2Zvcm1hdF9oZWxwZXJfdGVzdC5jIGIvZHJpdmVycy9ncHUvZHJtL3Rlc3Rz L2RybV9mb3JtYXRfaGVscGVyX3Rlc3QuYwppbmRleCAyMTkxZTU3ZjIyOTcuLjU2N2M3MWY5 NWVkYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Rlc3RzL2RybV9mb3JtYXRfaGVs cGVyX3Rlc3QuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vdGVzdHMvZHJtX2Zvcm1hdF9oZWxw ZXJfdGVzdC5jCkBAIC0zMTUsNyArMzE1LDcgQEAgc3RhdGljIHZvaWQgZHJtX3Rlc3RfZmJf eHJnYjg4ODhfdG9fZ3JheTgoc3RydWN0IGt1bml0ICp0ZXN0KQogCWlvc3lzX21hcF9zZXRf dmFkZHIoJnNyYywgeHJnYjg4ODgpOwogCiAJZHJtX2ZiX3hyZ2I4ODg4X3RvX2dyYXk4KCZk c3QsICZyZXN1bHQtPmRzdF9waXRjaCwgJnNyYywgJmZiLCAmcGFyYW1zLT5jbGlwKTsKLQlL VU5JVF9FWFBFQ1RfRVEodGVzdCwgbWVtY21wKGJ1ZiwgcmVzdWx0LT5leHBlY3RlZCwgZHN0 X3NpemUpLCAwKTsKKwlLVU5JVF9FWFBFQ1RfTUVNRVEodGVzdCwgYnVmLCByZXN1bHQtPmV4 cGVjdGVkLCBkc3Rfc2l6ZSk7CiB9CiAKIHN0YXRpYyB2b2lkIGRybV90ZXN0X2ZiX3hyZ2I4 ODg4X3RvX3JnYjMzMihzdHJ1Y3Qga3VuaXQgKnRlc3QpCkBAIC0zNDUsNyArMzQ1LDcgQEAg c3RhdGljIHZvaWQgZHJtX3Rlc3RfZmJfeHJnYjg4ODhfdG9fcmdiMzMyKHN0cnVjdCBrdW5p dCAqdGVzdCkKIAlpb3N5c19tYXBfc2V0X3ZhZGRyKCZzcmMsIHhyZ2I4ODg4KTsKIAogCWRy bV9mYl94cmdiODg4OF90b19yZ2IzMzIoJmRzdCwgJnJlc3VsdC0+ZHN0X3BpdGNoLCAmc3Jj LCAmZmIsICZwYXJhbXMtPmNsaXApOwotCUtVTklUX0VYUEVDVF9FUSh0ZXN0LCBtZW1jbXAo YnVmLCByZXN1bHQtPmV4cGVjdGVkLCBkc3Rfc2l6ZSksIDApOworCUtVTklUX0VYUEVDVF9N RU1FUSh0ZXN0LCBidWYsIHJlc3VsdC0+ZXhwZWN0ZWQsIGRzdF9zaXplKTsKIH0KIAogc3Rh dGljIHZvaWQgZHJtX3Rlc3RfZmJfeHJnYjg4ODhfdG9fcmdiNTY1KHN0cnVjdCBrdW5pdCAq dGVzdCkKQEAgLTM3NSwxMCArMzc1LDEwIEBAIHN0YXRpYyB2b2lkIGRybV90ZXN0X2ZiX3hy Z2I4ODg4X3RvX3JnYjU2NShzdHJ1Y3Qga3VuaXQgKnRlc3QpCiAJaW9zeXNfbWFwX3NldF92 YWRkcigmc3JjLCB4cmdiODg4OCk7CiAKIAlkcm1fZmJfeHJnYjg4ODhfdG9fcmdiNTY1KCZk c3QsICZyZXN1bHQtPmRzdF9waXRjaCwgJnNyYywgJmZiLCAmcGFyYW1zLT5jbGlwLCBmYWxz ZSk7Ci0JS1VOSVRfRVhQRUNUX0VRKHRlc3QsIG1lbWNtcChidWYsIHJlc3VsdC0+ZXhwZWN0 ZWQsIGRzdF9zaXplKSwgMCk7CisJS1VOSVRfRVhQRUNUX01FTUVRKHRlc3QsIGJ1ZiwgcmVz dWx0LT5leHBlY3RlZCwgZHN0X3NpemUpOwogCiAJZHJtX2ZiX3hyZ2I4ODg4X3RvX3JnYjU2 NSgmZHN0LCAmcmVzdWx0LT5kc3RfcGl0Y2gsICZzcmMsICZmYiwgJnBhcmFtcy0+Y2xpcCwg dHJ1ZSk7Ci0JS1VOSVRfRVhQRUNUX0VRKHRlc3QsIG1lbWNtcChidWYsIHJlc3VsdC0+ZXhw ZWN0ZWRfc3dhYiwgZHN0X3NpemUpLCAwKTsKKwlLVU5JVF9FWFBFQ1RfTUVNRVEodGVzdCwg YnVmLCByZXN1bHQtPmV4cGVjdGVkX3N3YWIsIGRzdF9zaXplKTsKIH0KIAogc3RhdGljIHZv aWQgZHJtX3Rlc3RfZmJfeHJnYjg4ODhfdG9fcmdiODg4KHN0cnVjdCBrdW5pdCAqdGVzdCkK QEAgLTQwOCw3ICs0MDgsNyBAQCBzdGF0aWMgdm9pZCBkcm1fdGVzdF9mYl94cmdiODg4OF90 b19yZ2I4ODgoc3RydWN0IGt1bml0ICp0ZXN0KQogCWlvc3lzX21hcF9zZXRfdmFkZHIoJnNy YywgeHJnYjg4ODgpOwogCiAJZHJtX2ZiX3hyZ2I4ODg4X3RvX3JnYjg4OCgmZHN0LCAmcmVz dWx0LT5kc3RfcGl0Y2gsICZzcmMsICZmYiwgJnBhcmFtcy0+Y2xpcCk7Ci0JS1VOSVRfRVhQ RUNUX0VRKHRlc3QsIG1lbWNtcChidWYsIHJlc3VsdC0+ZXhwZWN0ZWQsIGRzdF9zaXplKSwg MCk7CisJS1VOSVRfRVhQRUNUX01FTUVRKHRlc3QsIGJ1ZiwgcmVzdWx0LT5leHBlY3RlZCwg ZHN0X3NpemUpOwogfQogCiBzdGF0aWMgdm9pZCBkcm1fdGVzdF9mYl94cmdiODg4OF90b194 cmdiMjEwMTAxMChzdHJ1Y3Qga3VuaXQgKnRlc3QpCkBAIC00MzksNyArNDM5LDcgQEAgc3Rh dGljIHZvaWQgZHJtX3Rlc3RfZmJfeHJnYjg4ODhfdG9feHJnYjIxMDEwMTAoc3RydWN0IGt1 bml0ICp0ZXN0KQogCiAJZHJtX2ZiX3hyZ2I4ODg4X3RvX3hyZ2IyMTAxMDEwKCZkc3QsICZy ZXN1bHQtPmRzdF9waXRjaCwgJnNyYywgJmZiLCAmcGFyYW1zLT5jbGlwKTsKIAlidWYgPSBs ZTMyYnVmX3RvX2NwdSh0ZXN0LCBidWYsIGRzdF9zaXplIC8gc2l6ZW9mKHUzMikpOwotCUtV TklUX0VYUEVDVF9FUSh0ZXN0LCBtZW1jbXAoYnVmLCByZXN1bHQtPmV4cGVjdGVkLCBkc3Rf c2l6ZSksIDApOworCUtVTklUX0VYUEVDVF9NRU1FUSh0ZXN0LCBidWYsIHJlc3VsdC0+ZXhw ZWN0ZWQsIGRzdF9zaXplKTsKIH0KIAogc3RhdGljIHN0cnVjdCBrdW5pdF9jYXNlIGRybV9m b3JtYXRfaGVscGVyX3Rlc3RfY2FzZXNbXSA9IHsKZGlmZiAtLWdpdCBhL2luY2x1ZGUva3Vu aXQvYXNzZXJ0LmggYi9pbmNsdWRlL2t1bml0L2Fzc2VydC5oCmluZGV4IGFjZTNkZThkMWVl Ny4uMjRjMmI5ZmE2MWU4IDEwMDY0NAotLS0gYS9pbmNsdWRlL2t1bml0L2Fzc2VydC5oCisr KyBiL2luY2x1ZGUva3VuaXQvYXNzZXJ0LmgKQEAgLTkwLDE5ICs5MCw2IEBAIHZvaWQga3Vu aXRfdW5hcnlfYXNzZXJ0X2Zvcm1hdChjb25zdCBzdHJ1Y3Qga3VuaXRfYXNzZXJ0ICphc3Nl cnQsCiAJCQkgICAgICAgY29uc3Qgc3RydWN0IHZhX2Zvcm1hdCAqbWVzc2FnZSwKIAkJCSAg ICAgICBzdHJ1Y3Qgc3RyaW5nX3N0cmVhbSAqc3RyZWFtKTsKIAotLyoqCi0gKiBLVU5JVF9J TklUX1VOQVJZX0FTU0VSVF9TVFJVQ1QoKSAtIEluaXRpYWxpemVzICZzdHJ1Y3Qga3VuaXRf dW5hcnlfYXNzZXJ0LgotICogQGNvbmQ6IEEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRo ZSBleHByZXNzaW9uIGFzc2VydGVkIHRydWUgb3IgZmFsc2UuCi0gKiBAZXhwZWN0X3RydWU6 IFRydWUgaWYgb2YgdHlwZSBLVU5JVF97RVhQRUNUfEFTU0VSVH1fVFJVRSwgZmFsc2Ugb3Ro ZXJ3aXNlLgotICoKLSAqIEluaXRpYWxpemVzIGEgJnN0cnVjdCBrdW5pdF91bmFyeV9hc3Nl cnQuIEludGVuZGVkIHRvIGJlIHVzZWQgaW4KLSAqIEtVTklUX0VYUEVDVF8qIGFuZCBLVU5J VF9BU1NFUlRfKiBtYWNyb3MuCi0gKi8KLSNkZWZpbmUgS1VOSVRfSU5JVF9VTkFSWV9BU1NF UlRfU1RSVUNUKGNvbmQsIGV4cGVjdF90cnVlKSB7CQkgICAgICAgXAotCS5jb25kaXRpb24g PSBjb25kLAkJCQkJCSAgICAgICBcCi0JLmV4cGVjdGVkX3RydWUgPSBleHBlY3RfdHJ1ZQkJ CQkJICAgICAgIFwKLX0KLQogLyoqCiAgKiBzdHJ1Y3Qga3VuaXRfcHRyX25vdF9lcnJfYXNz ZXJ0IC0gQW4gZXhwZWN0YXRpb24vYXNzZXJ0aW9uIHRoYXQgYSBwb2ludGVyIGlzCiAgKglu b3QgTlVMTCBhbmQgbm90IGEgLWVycm5vLgpAQCAtMTIzLDIwICsxMTAsNiBAQCB2b2lkIGt1 bml0X3B0cl9ub3RfZXJyX2Fzc2VydF9mb3JtYXQoY29uc3Qgc3RydWN0IGt1bml0X2Fzc2Vy dCAqYXNzZXJ0LAogCQkJCSAgICAgY29uc3Qgc3RydWN0IHZhX2Zvcm1hdCAqbWVzc2FnZSwK IAkJCQkgICAgIHN0cnVjdCBzdHJpbmdfc3RyZWFtICpzdHJlYW0pOwogCi0vKioKLSAqIEtV TklUX0lOSVRfUFRSX05PVF9FUlJfQVNTRVJUX1NUUlVDVCgpIC0gSW5pdGlhbGl6ZXMgYQot ICoJJnN0cnVjdCBrdW5pdF9wdHJfbm90X2Vycl9hc3NlcnQuCi0gKiBAdHh0OiBBIHN0cmlu ZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgZXhwcmVzc2lvbiBwYXNzZWQgdG8gdGhlIGV4cGVj dGF0aW9uLgotICogQHZhbDogVGhlIGFjdHVhbCBldmFsdWF0ZWQgcG9pbnRlciB2YWx1ZSBv ZiB0aGUgZXhwcmVzc2lvbi4KLSAqCi0gKiBJbml0aWFsaXplcyBhICZzdHJ1Y3Qga3VuaXRf cHRyX25vdF9lcnJfYXNzZXJ0LiBJbnRlbmRlZCB0byBiZSB1c2VkIGluCi0gKiBLVU5JVF9F WFBFQ1RfKiBhbmQgS1VOSVRfQVNTRVJUXyogbWFjcm9zLgotICovCi0jZGVmaW5lIEtVTklU X0lOSVRfUFRSX05PVF9FUlJfU1RSVUNUKHR4dCwgdmFsKSB7CQkJICAgICAgIFwKLQkudGV4 dCA9IHR4dCwJCQkJCQkJICAgICAgIFwKLQkudmFsdWUgPSB2YWwJCQkJCQkJICAgICAgIFwK LX0KLQogLyoqCiAgKiBzdHJ1Y3Qga3VuaXRfYmluYXJ5X2Fzc2VydF90ZXh0IC0gaG9sZHMg c3RyaW5ncyBmb3IgJnN0cnVjdAogICoJa3VuaXRfYmluYXJ5X2Fzc2VydCBhbmQgZnJpZW5k cyB0byB0cnkgYW5kIG1ha2UgdGhlIHN0cnVjdHMgc21hbGxlci4KQEAgLTE3MywyNyArMTQ2 LDYgQEAgdm9pZCBrdW5pdF9iaW5hcnlfYXNzZXJ0X2Zvcm1hdChjb25zdCBzdHJ1Y3Qga3Vu aXRfYXNzZXJ0ICphc3NlcnQsCiAJCQkJY29uc3Qgc3RydWN0IHZhX2Zvcm1hdCAqbWVzc2Fn ZSwKIAkJCQlzdHJ1Y3Qgc3RyaW5nX3N0cmVhbSAqc3RyZWFtKTsKIAotLyoqCi0gKiBLVU5J VF9JTklUX0JJTkFSWV9BU1NFUlRfU1RSVUNUKCkgLSBJbml0aWFsaXplcyBhIGJpbmFyeSBh c3NlcnQgbGlrZQotICoJa3VuaXRfYmluYXJ5X2Fzc2VydCwga3VuaXRfYmluYXJ5X3B0cl9h c3NlcnQsIGV0Yy4KLSAqCi0gKiBAdGV4dF86IFBvaW50ZXIgdG8gYSBrdW5pdF9iaW5hcnlf YXNzZXJ0X3RleHQuCi0gKiBAbGVmdF92YWw6IFRoZSBhY3R1YWwgZXZhbHVhdGVkIHZhbHVl IG9mIHRoZSBleHByZXNzaW9uIGluIHRoZSBsZWZ0IHNsb3QuCi0gKiBAcmlnaHRfdmFsOiBU aGUgYWN0dWFsIGV2YWx1YXRlZCB2YWx1ZSBvZiB0aGUgZXhwcmVzc2lvbiBpbiB0aGUgcmln aHQgc2xvdC4KLSAqCi0gKiBJbml0aWFsaXplcyBhIGJpbmFyeSBhc3NlcnQgbGlrZSBrdW5p dF9iaW5hcnlfYXNzZXJ0LAotICoga3VuaXRfYmluYXJ5X3B0cl9hc3NlcnQsIGV0Yy4gVGhp cyByZWxpZXMgb24gdGhlc2Ugc3RydWN0cyBoYXZpbmcgdGhlIHNhbWUKLSAqIGZpZWxkcyBi dXQgd2l0aCBkaWZmZXJlbnQgdHlwZXMgZm9yIGxlZnRfdmFsL3JpZ2h0X3ZhbC4KLSAqIFRo aXMgaXMgdWx0aW1hdGVseSB1c2VkIGJ5IGJpbmFyeSBhc3NlcnRpb24gbWFjcm9zIGxpa2Ug S1VOSVRfRVhQRUNUX0VRLCBldGMuCi0gKi8KLSNkZWZpbmUgS1VOSVRfSU5JVF9CSU5BUllf QVNTRVJUX1NUUlVDVCh0ZXh0XywJCQkJICAgICAgIFwKLQkJCQkJbGVmdF92YWwsCQkJICAg ICAgIFwKLQkJCQkJcmlnaHRfdmFsKSB7CQkJICAgICAgIFwKLQkudGV4dCA9IHRleHRfLAkJ CQkJCQkgICAgICAgXAotCS5sZWZ0X3ZhbHVlID0gbGVmdF92YWwsCQkJCQkJICAgICAgIFwK LQkucmlnaHRfdmFsdWUgPSByaWdodF92YWwJCQkJCSAgICAgICBcCi19Ci0KIC8qKgogICog c3RydWN0IGt1bml0X2JpbmFyeV9wdHJfYXNzZXJ0IC0gQW4gZXhwZWN0YXRpb24vYXNzZXJ0 aW9uIHRoYXQgY29tcGFyZXMgdHdvCiAgKglwb2ludGVyIHZhbHVlcyAoZm9yIGV4YW1wbGUs IEtVTklUX0VYUEVDVF9QVFJfRVEodGVzdCwgZm9vLCBiYXIpKS4KQEAgLTI0MCw0ICsxOTIs MzAgQEAgdm9pZCBrdW5pdF9iaW5hcnlfc3RyX2Fzc2VydF9mb3JtYXQoY29uc3Qgc3RydWN0 IGt1bml0X2Fzc2VydCAqYXNzZXJ0LAogCQkJCSAgICBjb25zdCBzdHJ1Y3QgdmFfZm9ybWF0 ICptZXNzYWdlLAogCQkJCSAgICBzdHJ1Y3Qgc3RyaW5nX3N0cmVhbSAqc3RyZWFtKTsKIAor LyoqCisgKiBzdHJ1Y3Qga3VuaXRfbWVtX2Fzc2VydCAtIEFuIGV4cGVjdGF0aW9uL2Fzc2Vy dGlvbiB0aGF0IGNvbXBhcmVzIHR3bworICoJbWVtb3J5IGJsb2Nrcy4KKyAqIEBhc3NlcnQ6 IFRoZSBwYXJlbnQgb2YgdGhpcyB0eXBlLgorICogQHRleHQ6IEhvbGRzIHRoZSB0ZXh0dWFs IHJlcHJlc2VudGF0aW9ucyBvZiB0aGUgb3BlcmFuZHMgYW5kIGNvbXBhcmF0b3IuCisgKiBA bGVmdF92YWx1ZTogVGhlIGFjdHVhbCBldmFsdWF0ZWQgdmFsdWUgb2YgdGhlIGV4cHJlc3Np b24gaW4gdGhlIGxlZnQgc2xvdC4KKyAqIEByaWdodF92YWx1ZTogVGhlIGFjdHVhbCBldmFs dWF0ZWQgdmFsdWUgb2YgdGhlIGV4cHJlc3Npb24gaW4gdGhlIHJpZ2h0IHNsb3QuCisgKiBA c2l6ZTogU2l6ZSBvZiB0aGUgbWVtb3J5IGJsb2NrIGFuYWx5c2VkIGluIGJ5dGVzLgorICoK KyAqIFJlcHJlc2VudHMgYW4gZXhwZWN0YXRpb24vYXNzZXJ0aW9uIHRoYXQgY29tcGFyZXMg dHdvIG1lbW9yeSBibG9ja3MuIEZvcgorICogZXhhbXBsZSwgdG8gZXhwZWN0IHRoYXQgdGhl IGZpcnN0IHRocmVlIGJ5dGVzIG9mIGZvbyBpcyBlcXVhbCB0byB0aGUKKyAqIGZpcnN0IHRo cmVlIGJ5dGVzIG9mIGJhciwgeW91IGNhbiB1c2UgdGhlIGV4cGVjdGF0aW9uCisgKiBLVU5J VF9FWFBFQ1RfTUVNRVEodGVzdCwgZm9vLCBiYXIsIDMpOworICovCitzdHJ1Y3Qga3VuaXRf bWVtX2Fzc2VydCB7CisJc3RydWN0IGt1bml0X2Fzc2VydCBhc3NlcnQ7CisJY29uc3Qgc3Ry dWN0IGt1bml0X2JpbmFyeV9hc3NlcnRfdGV4dCAqdGV4dDsKKwljb25zdCB2b2lkICpsZWZ0 X3ZhbHVlOworCWNvbnN0IHZvaWQgKnJpZ2h0X3ZhbHVlOworCWNvbnN0IHNpemVfdCBzaXpl OworfTsKKwordm9pZCBrdW5pdF9tZW1fYXNzZXJ0X2Zvcm1hdChjb25zdCBzdHJ1Y3Qga3Vu aXRfYXNzZXJ0ICphc3NlcnQsCisJCQkgICAgIGNvbnN0IHN0cnVjdCB2YV9mb3JtYXQgKm1l c3NhZ2UsCisJCQkgICAgIHN0cnVjdCBzdHJpbmdfc3RyZWFtICpzdHJlYW0pOworCiAjZW5k aWYgLyogIF9LVU5JVF9BU1NFUlRfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9rdW5pdC90 ZXN0LWJ1Zy5oIGIvaW5jbHVkZS9rdW5pdC90ZXN0LWJ1Zy5oCmluZGV4IDVmYzU4MDgxZDUx MS4uYzFiMmUxNGVhYjY0IDEwMDY0NAotLS0gYS9pbmNsdWRlL2t1bml0L3Rlc3QtYnVnLmgK KysrIGIvaW5jbHVkZS9rdW5pdC90ZXN0LWJ1Zy5oCkBAIC05LDE2ICs5LDYzIEBACiAjaWZu ZGVmIF9LVU5JVF9URVNUX0JVR19ICiAjZGVmaW5lIF9LVU5JVF9URVNUX0JVR19ICiAKLSNk ZWZpbmUga3VuaXRfZmFpbF9jdXJyZW50X3Rlc3QoZm10LCAuLi4pIFwKLQlfX2t1bml0X2Zh aWxfY3VycmVudF90ZXN0KF9fRklMRV9fLCBfX0xJTkVfXywgZm10LCAjI19fVkFfQVJHU19f KQotCiAjaWYgSVNfQlVJTFRJTihDT05GSUdfS1VOSVQpCiAKKyNpbmNsdWRlIDxsaW51eC9q dW1wX2xhYmVsLmg+IC8qIEZvciBzdGF0aWMgYnJhbmNoICovCisjaW5jbHVkZSA8bGludXgv c2NoZWQuaD4KKworLyogU3RhdGljIGtleSBpZiBLVW5pdCBpcyBydW5uaW5nIGFueSB0ZXN0 cy4gKi8KK0RFQ0xBUkVfU1RBVElDX0tFWV9GQUxTRShrdW5pdF9ydW5uaW5nKTsKKworLyoq CisgKiBrdW5pdF9nZXRfY3VycmVudF90ZXN0KCkgLSBSZXR1cm4gYSBwb2ludGVyIHRvIHRo ZSBjdXJyZW50bHkgcnVubmluZworICoJCQkgICAgICBLVW5pdCB0ZXN0LgorICoKKyAqIElm IGEgS1VuaXQgdGVzdCBpcyBydW5uaW5nIGluIHRoZSBjdXJyZW50IHRhc2ssIHJldHVybnMg YSBwb2ludGVyIHRvIGl0cworICogYXNzb2NpYXRlZCBzdHJ1Y3Qga3VuaXQuIFRoaXMgcG9p bnRlciBjYW4gdGhlbiBiZSBwYXNzZWQgdG8gYW55IEtVbml0CisgKiBmdW5jdGlvbiBvciBh c3NlcnRpb24uIElmIG5vIHRlc3QgaXMgcnVubmluZyAob3IgYSB0ZXN0IGlzIHJ1bm5pbmcg aW4gYQorICogZGlmZmVyZW50IHRhc2spLCByZXR1cm5zIE5VTEwuCisgKgorICogVGhpcyBm dW5jdGlvbiBpcyBzYWZlIHRvIGNhbGwgZXZlbiB3aGVuIEtVbml0IGlzIGRpc2FibGVkLiBJ ZiBDT05GSUdfS1VOSVQKKyAqIGlzIG5vdCBlbmFibGVkLCBpdCB3aWxsIGNvbXBpbGUgZG93 biB0byBub3RoaW5nIGFuZCB3aWxsIHJldHVybiBxdWlja2x5IG5vCisgKiB0ZXN0IGlzIHJ1 bm5pbmcuCisgKi8KK3N0YXRpYyBpbmxpbmUgc3RydWN0IGt1bml0ICprdW5pdF9nZXRfY3Vy cmVudF90ZXN0KHZvaWQpCit7CisJaWYgKCFzdGF0aWNfYnJhbmNoX3VubGlrZWx5KCZrdW5p dF9ydW5uaW5nKSkKKwkJcmV0dXJuIE5VTEw7CisKKwlyZXR1cm4gY3VycmVudC0+a3VuaXRf dGVzdDsKK30KKworCisvKioKKyAqIGt1bml0X2ZhaWxfY3VycmVudF90ZXN0KCkgLSBJZiBh IEtVbml0IHRlc3QgaXMgcnVubmluZywgZmFpbCBpdC4KKyAqCisgKiBJZiBhIEtVbml0IHRl c3QgaXMgcnVubmluZyBpbiB0aGUgY3VycmVudCB0YXNrLCBtYXJrIHRoYXQgdGVzdCBhcyBm YWlsZWQuCisgKgorICogVGhpcyBtYWNybyB3aWxsIG9ubHkgd29yayBpZiBLVW5pdCBpcyBi dWlsdC1pbiAodGhvdWdoIHRoZSB0ZXN0cworICogdGhlbXNlbHZlcyBjYW4gYmUgbW9kdWxl cykuIE90aGVyd2lzZSwgaXQgY29tcGlsZXMgZG93biB0byBub3RoaW5nLgorICovCisjZGVm aW5lIGt1bml0X2ZhaWxfY3VycmVudF90ZXN0KGZtdCwgLi4uKSBkbyB7CQkJCQlcCisJCWlm IChzdGF0aWNfYnJhbmNoX3VubGlrZWx5KCZrdW5pdF9ydW5uaW5nKSkgewkJCVwKKwkJCV9f a3VuaXRfZmFpbF9jdXJyZW50X3Rlc3QoX19GSUxFX18sIF9fTElORV9fLAkJXAorCQkJCQkJ ICBmbXQsICMjX19WQV9BUkdTX18pOwkJXAorCQl9CQkJCQkJCQlcCisJfSB3aGlsZSAoMCkK KworCiBleHRlcm4gX19wcmludGYoMywgNCkgdm9pZCBfX2t1bml0X2ZhaWxfY3VycmVudF90 ZXN0KGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lLAogCQkJCQkJICAgIGNvbnN0IGNoYXIg KmZtdCwgLi4uKTsKIAogI2Vsc2UKIAorc3RhdGljIGlubGluZSBzdHJ1Y3Qga3VuaXQgKmt1 bml0X2dldF9jdXJyZW50X3Rlc3Qodm9pZCkgeyByZXR1cm4gTlVMTDsgfQorCisvKiBXZSBk ZWZpbmUgdGhpcyB3aXRoIGFuIGVtcHR5IGhlbHBlciBmdW5jdGlvbiBzbyBmb3JtYXQgc3Ry aW5nIHdhcm5pbmdzIHdvcmsgKi8KKyNkZWZpbmUga3VuaXRfZmFpbF9jdXJyZW50X3Rlc3Qo Zm10LCAuLi4pIFwKKwkJX19rdW5pdF9mYWlsX2N1cnJlbnRfdGVzdChfX0ZJTEVfXywgX19M SU5FX18sIGZtdCwgIyNfX1ZBX0FSR1NfXykKKwogc3RhdGljIGlubGluZSBfX3ByaW50Zigz LCA0KSB2b2lkIF9fa3VuaXRfZmFpbF9jdXJyZW50X3Rlc3QoY29uc3QgY2hhciAqZmlsZSwg aW50IGxpbmUsCiAJCQkJCQkJICAgIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQogewpkaWZmIC0t Z2l0IGEvaW5jbHVkZS9rdW5pdC90ZXN0LmggYi9pbmNsdWRlL2t1bml0L3Rlc3QuaAppbmRl eCBiMWFiNmIzMjIxNmQuLjg3ZWE5MDU3NmI1MCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9rdW5p dC90ZXN0LmgKKysrIGIvaW5jbHVkZS9rdW5pdC90ZXN0LmgKQEAgLTE2LDYgKzE2LDcgQEAK ICNpbmNsdWRlIDxsaW51eC9jb250YWluZXJfb2YuaD4KICNpbmNsdWRlIDxsaW51eC9lcnIu aD4KICNpbmNsdWRlIDxsaW51eC9pbml0Lmg+CisjaW5jbHVkZSA8bGludXgvanVtcF9sYWJl bC5oPgogI2luY2x1ZGUgPGxpbnV4L2tjb25maWcuaD4KICNpbmNsdWRlIDxsaW51eC9rcmVm Lmg+CiAjaW5jbHVkZSA8bGludXgvbGlzdC5oPgpAQCAtMjcsNiArMjgsOSBAQAogCiAjaW5j bHVkZSA8YXNtL3J3b25jZS5oPgogCisvKiBTdGF0aWMga2V5OiB0cnVlIGlmIGFueSBLVW5p dCB0ZXN0cyBhcmUgY3VycmVudGx5IHJ1bm5pbmcgKi8KK0RFQ0xBUkVfU1RBVElDX0tFWV9G QUxTRShrdW5pdF9ydW5uaW5nKTsKKwogc3RydWN0IGt1bml0OwogCiAvKiBTaXplIG9mIGxv ZyBhc3NvY2lhdGVkIHdpdGggdGVzdC4gKi8KQEAgLTUxNSwyMiArNTE5LDI1IEBAIHZvaWQg a3VuaXRfZG9fZmFpbGVkX2Fzc2VydGlvbihzdHJ1Y3Qga3VuaXQgKnRlc3QsCiAJCQkgICAg IGZtdCwJCQkJCSAgICAgICBcCiAJCQkgICAgICMjX19WQV9BUkdTX18pCiAKKy8qIEhlbHBl ciB0byBzYWZlbHkgcGFzcyBhcm91bmQgYW4gaW5pdGlhbGl6ZXIgbGlzdCB0byBvdGhlciBt YWNyb3MuICovCisjZGVmaW5lIEtVTklUX0lOSVRfQVNTRVJUKGluaXRpYWxpemVycy4uLikg eyBpbml0aWFsaXplcnMgfQorCiAjZGVmaW5lIEtVTklUX1VOQVJZX0FTU0VSVElPTih0ZXN0 LAkJCQkJICAgICAgIFwKIAkJCSAgICAgIGFzc2VydF90eXBlLAkJCQkgICAgICAgXAotCQkJ ICAgICAgY29uZGl0aW9uLAkJCQkgICAgICAgXAotCQkJICAgICAgZXhwZWN0ZWRfdHJ1ZSwJ CQkJICAgICAgIFwKKwkJCSAgICAgIGNvbmRpdGlvbl8sCQkJCSAgICAgICBcCisJCQkgICAg ICBleHBlY3RlZF90cnVlXywJCQkJICAgICAgIFwKIAkJCSAgICAgIGZtdCwJCQkJCSAgICAg ICBcCiAJCQkgICAgICAuLi4pCQkJCQkgICAgICAgXAogZG8gewkJCQkJCQkJCSAgICAgICBc Ci0JaWYgKGxpa2VseSghIShjb25kaXRpb24pID09ICEhZXhwZWN0ZWRfdHJ1ZSkpCQkJICAg ICAgIFwKKwlpZiAobGlrZWx5KCEhKGNvbmRpdGlvbl8pID09ICEhZXhwZWN0ZWRfdHJ1ZV8p KQkJCSAgICAgICBcCiAJCWJyZWFrOwkJCQkJCQkgICAgICAgXAogCQkJCQkJCQkJICAgICAg IFwKIAlfS1VOSVRfRkFJTEVEKHRlc3QsCQkJCQkJICAgICAgIFwKIAkJICAgICAgYXNzZXJ0 X3R5cGUsCQkJCQkgICAgICAgXAogCQkgICAgICBrdW5pdF91bmFyeV9hc3NlcnQsCQkJCSAg ICAgICBcCiAJCSAgICAgIGt1bml0X3VuYXJ5X2Fzc2VydF9mb3JtYXQsCQkJICAgICAgIFwK LQkJICAgICAgS1VOSVRfSU5JVF9VTkFSWV9BU1NFUlRfU1RSVUNUKCNjb25kaXRpb24sCSAg ICAgICBcCi0JCQkJCQkgICAgIGV4cGVjdGVkX3RydWUpLAkgICAgICAgXAorCQkgICAgICBL VU5JVF9JTklUX0FTU0VSVCguY29uZGl0aW9uID0gI2NvbmRpdGlvbl8sCSAgICAgICBcCisJ CQkJCS5leHBlY3RlZF90cnVlID0gZXhwZWN0ZWRfdHJ1ZV8pLCAgICAgIFwKIAkJICAgICAg Zm10LAkJCQkJCSAgICAgICBcCiAJCSAgICAgICMjX19WQV9BUkdTX18pOwkJCQkJICAgICAg IFwKIH0gd2hpbGUgKDApCkBAIC01OTAsOSArNTk3LDkgQEAgZG8gewkJCQkJCQkJCSAgICAg ICBcCiAJCSAgICAgIGFzc2VydF90eXBlLAkJCQkJICAgICAgIFwKIAkJICAgICAgYXNzZXJ0 X2NsYXNzLAkJCQkJICAgICAgIFwKIAkJICAgICAgZm9ybWF0X2Z1bmMsCQkJCQkgICAgICAg XAotCQkgICAgICBLVU5JVF9JTklUX0JJTkFSWV9BU1NFUlRfU1RSVUNUKCZfX3RleHQsCQkg ICAgICAgXAotCQkJCQkJICAgICAgX19sZWZ0LAkJICAgICAgIFwKLQkJCQkJCSAgICAgIF9f cmlnaHQpLAkJICAgICAgIFwKKwkJICAgICAgS1VOSVRfSU5JVF9BU1NFUlQoLnRleHQgPSAm X190ZXh0LAkJICAgICAgIFwKKwkJCQkJLmxlZnRfdmFsdWUgPSBfX2xlZnQsCQkgICAgICAg XAorCQkJCQkucmlnaHRfdmFsdWUgPSBfX3JpZ2h0KSwJICAgICAgIFwKIAkJICAgICAgZm10 LAkJCQkJCSAgICAgICBcCiAJCSAgICAgICMjX19WQV9BUkdTX18pOwkJCQkJICAgICAgIFwK IH0gd2hpbGUgKDApCkBAIC02NTEsOSArNjU4LDQyIEBAIGRvIHsJCQkJCQkJCQkgICAgICAg XAogCQkgICAgICBhc3NlcnRfdHlwZSwJCQkJCSAgICAgICBcCiAJCSAgICAgIGt1bml0X2Jp bmFyeV9zdHJfYXNzZXJ0LAkJCQkgICAgICAgXAogCQkgICAgICBrdW5pdF9iaW5hcnlfc3Ry X2Fzc2VydF9mb3JtYXQsCQkJICAgICAgIFwKLQkJICAgICAgS1VOSVRfSU5JVF9CSU5BUllf QVNTRVJUX1NUUlVDVCgmX190ZXh0LAkJICAgICAgIFwKLQkJCQkJCSAgICAgIF9fbGVmdCwJ CSAgICAgICBcCi0JCQkJCQkgICAgICBfX3JpZ2h0KSwJCSAgICAgICBcCisJCSAgICAgIEtV TklUX0lOSVRfQVNTRVJUKC50ZXh0ID0gJl9fdGV4dCwJCSAgICAgICBcCisJCQkJCS5sZWZ0 X3ZhbHVlID0gX19sZWZ0LAkJICAgICAgIFwKKwkJCQkJLnJpZ2h0X3ZhbHVlID0gX19yaWdo dCksCSAgICAgICBcCisJCSAgICAgIGZtdCwJCQkJCQkgICAgICAgXAorCQkgICAgICAjI19f VkFfQVJHU19fKTsJCQkJCSAgICAgICBcCit9IHdoaWxlICgwKQorCisjZGVmaW5lIEtVTklU X01FTV9BU1NFUlRJT04odGVzdCwJCQkJCSAgICAgICBcCisJCQkgICAgYXNzZXJ0X3R5cGUs CQkJCSAgICAgICBcCisJCQkgICAgbGVmdCwJCQkJCSAgICAgICBcCisJCQkgICAgb3AsCQkJ CQkJICAgICAgIFwKKwkJCSAgICByaWdodCwJCQkJCSAgICAgICBcCisJCQkgICAgc2l6ZV8s CQkJCQkgICAgICAgXAorCQkJICAgIGZtdCwJCQkJCSAgICAgICBcCisJCQkgICAgLi4uKQkJ CQkJICAgICAgIFwKK2RvIHsJCQkJCQkJCQkgICAgICAgXAorCWNvbnN0IHZvaWQgKl9fbGVm dCA9IChsZWZ0KTsJCQkJCSAgICAgICBcCisJY29uc3Qgdm9pZCAqX19yaWdodCA9IChyaWdo dCk7CQkJCQkgICAgICAgXAorCWNvbnN0IHNpemVfdCBfX3NpemUgPSAoc2l6ZV8pOwkJCQkJ ICAgICAgIFwKKwlzdGF0aWMgY29uc3Qgc3RydWN0IGt1bml0X2JpbmFyeV9hc3NlcnRfdGV4 dCBfX3RleHQgPSB7CQkgICAgICAgXAorCQkub3BlcmF0aW9uID0gI29wLAkJCQkJICAgICAg IFwKKwkJLmxlZnRfdGV4dCA9ICNsZWZ0LAkJCQkJICAgICAgIFwKKwkJLnJpZ2h0X3RleHQg PSAjcmlnaHQsCQkJCQkgICAgICAgXAorCX07CQkJCQkJCQkgICAgICAgXAorCQkJCQkJCQkJ ICAgICAgIFwKKwlpZiAobGlrZWx5KG1lbWNtcChfX2xlZnQsIF9fcmlnaHQsIF9fc2l6ZSkg b3AgMCkpCQkgICAgICAgXAorCQlicmVhazsJCQkJCQkJICAgICAgIFwKKwkJCQkJCQkJCSAg ICAgICBcCisJX0tVTklUX0ZBSUxFRCh0ZXN0LAkJCQkJCSAgICAgICBcCisJCSAgICAgIGFz c2VydF90eXBlLAkJCQkJICAgICAgIFwKKwkJICAgICAga3VuaXRfbWVtX2Fzc2VydCwJCQkJ CSAgICAgICBcCisJCSAgICAgIGt1bml0X21lbV9hc3NlcnRfZm9ybWF0LAkJCQkgICAgICAg XAorCQkgICAgICBLVU5JVF9JTklUX0FTU0VSVCgudGV4dCA9ICZfX3RleHQsCQkgICAgICAg XAorCQkJCQkubGVmdF92YWx1ZSA9IF9fbGVmdCwJCSAgICAgICBcCisJCQkJCS5yaWdodF92 YWx1ZSA9IF9fcmlnaHQsCQkgICAgICAgXAorCQkJCQkuc2l6ZSA9IF9fc2l6ZSksCQkgICAg ICAgXAogCQkgICAgICBmbXQsCQkJCQkJICAgICAgIFwKIAkJICAgICAgIyNfX1ZBX0FSR1Nf Xyk7CQkJCQkgICAgICAgXAogfSB3aGlsZSAoMCkKQEAgLTY3Myw3ICs3MTMsNyBAQCBkbyB7 CQkJCQkJCQkJICAgICAgIFwKIAkJICAgICAgYXNzZXJ0X3R5cGUsCQkJCQkgICAgICAgXAog CQkgICAgICBrdW5pdF9wdHJfbm90X2Vycl9hc3NlcnQsCQkJCSAgICAgICBcCiAJCSAgICAg IGt1bml0X3B0cl9ub3RfZXJyX2Fzc2VydF9mb3JtYXQsCQkJICAgICAgIFwKLQkJICAgICAg S1VOSVRfSU5JVF9QVFJfTk9UX0VSUl9TVFJVQ1QoI3B0ciwgX19wdHIpLAkgICAgICAgXAor CQkgICAgICBLVU5JVF9JTklUX0FTU0VSVCgudGV4dCA9ICNwdHIsIC52YWx1ZSA9IF9fcHRy KSwJICAgICAgIFwKIAkJICAgICAgZm10LAkJCQkJCSAgICAgICBcCiAJCSAgICAgICMjX19W QV9BUkdTX18pOwkJCQkJICAgICAgIFwKIH0gd2hpbGUgKDApCkBAIC05MjgsNiArOTY4LDYw IEBAIGRvIHsJCQkJCQkJCQkgICAgICAgXAogCQkJCSAgIGZtdCwJCQkJCSAgICAgICBcCiAJ CQkJICAgIyNfX1ZBX0FSR1NfXykKIAorLyoqCisgKiBLVU5JVF9FWFBFQ1RfTUVNRVEoKSAt IEV4cGVjdHMgdGhhdCB0aGUgZmlyc3QgQHNpemUgYnl0ZXMgb2YgQGxlZnQgYW5kIEByaWdo dCBhcmUgZXF1YWwuCisgKiBAdGVzdDogVGhlIHRlc3QgY29udGV4dCBvYmplY3QuCisgKiBA bGVmdDogQW4gYXJiaXRyYXJ5IGV4cHJlc3Npb24gdGhhdCBldmFsdWF0ZXMgdG8gdGhlIHNw ZWNpZmllZCBzaXplLgorICogQHJpZ2h0OiBBbiBhcmJpdHJhcnkgZXhwcmVzc2lvbiB0aGF0 IGV2YWx1YXRlcyB0byB0aGUgc3BlY2lmaWVkIHNpemUuCisgKiBAc2l6ZTogTnVtYmVyIG9m IGJ5dGVzIGNvbXBhcmVkLgorICoKKyAqIFNldHMgYW4gZXhwZWN0YXRpb24gdGhhdCB0aGUg dmFsdWVzIHRoYXQgQGxlZnQgYW5kIEByaWdodCBldmFsdWF0ZSB0byBhcmUKKyAqIGVxdWFs LiBUaGlzIGlzIHNlbWFudGljYWxseSBlcXVpdmFsZW50IHRvCisgKiBLVU5JVF9FWFBFQ1Rf VFJVRShAdGVzdCwgIW1lbWNtcCgoQGxlZnQpLCAoQHJpZ2h0KSwgKEBzaXplKSkpLiBTZWUK KyAqIEtVTklUX0VYUEVDVF9UUlVFKCkgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgKgorICog QWx0aG91Z2ggdGhpcyBleHBlY3RhdGlvbiB3b3JrcyBmb3IgYW55IG1lbW9yeSBibG9jaywg aXQgaXMgbm90IHJlY29tbWVuZGVkCisgKiBmb3IgY29tcGFyaW5nIG1vcmUgc3RydWN0dXJl ZCBkYXRhLCBzdWNoIGFzIHN0cnVjdHMuIFRoaXMgZXhwZWN0YXRpb24gaXMKKyAqIHJlY29t bWVuZGVkIGZvciBjb21wYXJpbmcsIGZvciBleGFtcGxlLCBkYXRhIGFycmF5cy4KKyAqLwor I2RlZmluZSBLVU5JVF9FWFBFQ1RfTUVNRVEodGVzdCwgbGVmdCwgcmlnaHQsIHNpemUpIFwK KwlLVU5JVF9FWFBFQ1RfTUVNRVFfTVNHKHRlc3QsIGxlZnQsIHJpZ2h0LCBzaXplLCBOVUxM KQorCisjZGVmaW5lIEtVTklUX0VYUEVDVF9NRU1FUV9NU0codGVzdCwgbGVmdCwgcmlnaHQs IHNpemUsIGZtdCwgLi4uKQkgICAgICAgXAorCUtVTklUX01FTV9BU1NFUlRJT04odGVzdCwJ CQkJCSAgICAgICBcCisJCQkgICAgS1VOSVRfRVhQRUNUQVRJT04sCQkJCSAgICAgICBcCisJ CQkgICAgbGVmdCwgPT0sIHJpZ2h0LAkJCQkgICAgICAgXAorCQkJICAgIHNpemUsCQkJCQkg ICAgICAgXAorCQkJICAgIGZtdCwJCQkJCSAgICAgICBcCisJCQkgICAgIyNfX1ZBX0FSR1Nf XykKKworLyoqCisgKiBLVU5JVF9FWFBFQ1RfTUVNTkVRKCkgLSBFeHBlY3RzIHRoYXQgdGhl IGZpcnN0IEBzaXplIGJ5dGVzIG9mIEBsZWZ0IGFuZCBAcmlnaHQgYXJlIG5vdCBlcXVhbC4K KyAqIEB0ZXN0OiBUaGUgdGVzdCBjb250ZXh0IG9iamVjdC4KKyAqIEBsZWZ0OiBBbiBhcmJp dHJhcnkgZXhwcmVzc2lvbiB0aGF0IGV2YWx1YXRlcyB0byB0aGUgc3BlY2lmaWVkIHNpemUu CisgKiBAcmlnaHQ6IEFuIGFyYml0cmFyeSBleHByZXNzaW9uIHRoYXQgZXZhbHVhdGVzIHRv IHRoZSBzcGVjaWZpZWQgc2l6ZS4KKyAqIEBzaXplOiBOdW1iZXIgb2YgYnl0ZXMgY29tcGFy ZWQuCisgKgorICogU2V0cyBhbiBleHBlY3RhdGlvbiB0aGF0IHRoZSB2YWx1ZXMgdGhhdCBA bGVmdCBhbmQgQHJpZ2h0IGV2YWx1YXRlIHRvIGFyZQorICogbm90IGVxdWFsLiBUaGlzIGlz IHNlbWFudGljYWxseSBlcXVpdmFsZW50IHRvCisgKiBLVU5JVF9FWFBFQ1RfVFJVRShAdGVz dCwgbWVtY21wKChAbGVmdCksIChAcmlnaHQpLCAoQHNpemUpKSkuIFNlZQorICogS1VOSVRf RVhQRUNUX1RSVUUoKSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAqCisgKiBBbHRob3VnaCB0 aGlzIGV4cGVjdGF0aW9uIHdvcmtzIGZvciBhbnkgbWVtb3J5IGJsb2NrLCBpdCBpcyBub3Qg cmVjb21tZW5kZWQKKyAqIGZvciBjb21wYXJpbmcgbW9yZSBzdHJ1Y3R1cmVkIGRhdGEsIHN1 Y2ggYXMgc3RydWN0cy4gVGhpcyBleHBlY3RhdGlvbiBpcworICogcmVjb21tZW5kZWQgZm9y IGNvbXBhcmluZywgZm9yIGV4YW1wbGUsIGRhdGEgYXJyYXlzLgorICovCisjZGVmaW5lIEtV TklUX0VYUEVDVF9NRU1ORVEodGVzdCwgbGVmdCwgcmlnaHQsIHNpemUpIFwKKwlLVU5JVF9F WFBFQ1RfTUVNTkVRX01TRyh0ZXN0LCBsZWZ0LCByaWdodCwgc2l6ZSwgTlVMTCkKKworI2Rl ZmluZSBLVU5JVF9FWFBFQ1RfTUVNTkVRX01TRyh0ZXN0LCBsZWZ0LCByaWdodCwgc2l6ZSwg Zm10LCAuLi4pCSAgICAgICBcCisJS1VOSVRfTUVNX0FTU0VSVElPTih0ZXN0LAkJCQkJICAg ICAgIFwKKwkJCSAgICBLVU5JVF9FWFBFQ1RBVElPTiwJCQkJICAgICAgIFwKKwkJCSAgICBs ZWZ0LCAhPSwgcmlnaHQsCQkJCSAgICAgICBcCisJCQkgICAgc2l6ZSwJCQkJCSAgICAgICBc CisJCQkgICAgZm10LAkJCQkJICAgICAgIFwKKwkJCSAgICAjI19fVkFfQVJHU19fKQorCiAv KioKICAqIEtVTklUX0VYUEVDVF9OVUxMKCkgLSBFeHBlY3RzIHRoYXQgQHB0ciBpcyBudWxs LgogICogQHRlc3Q6IFRoZSB0ZXN0IGNvbnRleHQgb2JqZWN0LgpkaWZmIC0tZ2l0IGEvaW5j bHVkZS9rdW5pdC92aXNpYmlsaXR5LmggYi9pbmNsdWRlL2t1bml0L3Zpc2liaWxpdHkuaApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjBkZmUzNWZlZWVjNgot LS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUva3VuaXQvdmlzaWJpbGl0eS5oCkBAIC0wLDAg KzEsMzMgQEAKKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovCisvKgor ICogS1VuaXQgQVBJIHRvIGFsbG93IHN5bWJvbHMgdG8gYmUgY29uZGl0aW9uYWxseSB2aXNp YmxlIGR1cmluZyBLVW5pdAorICogdGVzdGluZworICoKKyAqIENvcHlyaWdodCAoQykgMjAy MiwgR29vZ2xlIExMQy4KKyAqIEF1dGhvcjogUmFlIE1vYXIgPHJtb2FyQGdvb2dsZS5jb20+ CisgKi8KKworI2lmbmRlZiBfS1VOSVRfVklTSUJJTElUWV9ICisjZGVmaW5lIF9LVU5JVF9W SVNJQklMSVRZX0gKKworI2lmIElTX0VOQUJMRUQoQ09ORklHX0tVTklUKQorICAgIC8qKgor ICAgICAqIFZJU0lCTEVfSUZfS1VOSVQgLSBBIG1hY3JvIHRoYXQgc2V0cyBzeW1ib2xzIHRv IGJlIHN0YXRpYyBpZgorICAgICAqIENPTkZJR19LVU5JVCBpcyBub3QgZW5hYmxlZC4gT3Ro ZXJ3aXNlIGlmIENPTkZJR19LVU5JVCBpcyBlbmFibGVkCisgICAgICogdGhlcmUgaXMgbm8g Y2hhbmdlIHRvIHRoZSBzeW1ib2wgZGVmaW5pdGlvbi4KKyAgICAgKi8KKyAgICAjZGVmaW5l IFZJU0lCTEVfSUZfS1VOSVQKKyAgICAvKioKKyAgICAgKiBFWFBPUlRfU1lNQk9MX0lGX0tV TklUKHN5bWJvbCkgLSBFeHBvcnRzIHN5bWJvbCBpbnRvCisgICAgICogRVhQT1JURURfRk9S X0tVTklUX1RFU1RJTkcgbmFtZXNwYWNlIG9ubHkgaWYgQ09ORklHX0tVTklUIGlzCisgICAg ICogZW5hYmxlZC4gTXVzdCB1c2UgTU9EVUxFX0lNUE9SVF9OUyhFWFBPUlRFRF9GT1JfS1VO SVRfVEVTVElORykKKyAgICAgKiBpbiB0ZXN0IGZpbGUgaW4gb3JkZXIgdG8gdXNlIHN5bWJv bHMuCisgICAgICovCisgICAgI2RlZmluZSBFWFBPUlRfU1lNQk9MX0lGX0tVTklUKHN5bWJv bCkgRVhQT1JUX1NZTUJPTF9OUyhzeW1ib2wsIFwKKwkgICAgRVhQT1JURURfRk9SX0tVTklU X1RFU1RJTkcpCisjZWxzZQorICAgICNkZWZpbmUgVklTSUJMRV9JRl9LVU5JVCBzdGF0aWMK KyAgICAjZGVmaW5lIEVYUE9SVF9TWU1CT0xfSUZfS1VOSVQoc3ltYm9sKQorI2VuZGlmCisK KyNlbmRpZiAvKiBfS1VOSVRfVklTSUJJTElUWV9IICovCmRpZmYgLS1naXQgYS9saWIva3Vu aXQvYXNzZXJ0LmMgYi9saWIva3VuaXQvYXNzZXJ0LmMKaW5kZXggZDAwZDZkMTgxZWU4Li5m NWI1MGJhYmUzOGQgMTAwNjQ0Ci0tLSBhL2xpYi9rdW5pdC9hc3NlcnQuYworKysgYi9saWIv a3VuaXQvYXNzZXJ0LmMKQEAgLTEyNywxMyArMTI3LDE1IEBAIHZvaWQga3VuaXRfYmluYXJ5 X2Fzc2VydF9mb3JtYXQoY29uc3Qgc3RydWN0IGt1bml0X2Fzc2VydCAqYXNzZXJ0LAogCQkJ ICBiaW5hcnlfYXNzZXJ0LT50ZXh0LT5yaWdodF90ZXh0KTsKIAlpZiAoIWlzX2xpdGVyYWwo c3RyZWFtLT50ZXN0LCBiaW5hcnlfYXNzZXJ0LT50ZXh0LT5sZWZ0X3RleHQsCiAJCQliaW5h cnlfYXNzZXJ0LT5sZWZ0X3ZhbHVlLCBzdHJlYW0tPmdmcCkpCi0JCXN0cmluZ19zdHJlYW1f YWRkKHN0cmVhbSwgS1VOSVRfU1VCU1VCVEVTVF9JTkRFTlQgIiVzID09ICVsbGRcbiIsCisJ CXN0cmluZ19zdHJlYW1fYWRkKHN0cmVhbSwgS1VOSVRfU1VCU1VCVEVTVF9JTkRFTlQgIiVz ID09ICVsbGQgKDB4JWxseClcbiIsCiAJCQkJICBiaW5hcnlfYXNzZXJ0LT50ZXh0LT5sZWZ0 X3RleHQsCisJCQkJICBiaW5hcnlfYXNzZXJ0LT5sZWZ0X3ZhbHVlLAogCQkJCSAgYmluYXJ5 X2Fzc2VydC0+bGVmdF92YWx1ZSk7CiAJaWYgKCFpc19saXRlcmFsKHN0cmVhbS0+dGVzdCwg YmluYXJ5X2Fzc2VydC0+dGV4dC0+cmlnaHRfdGV4dCwKIAkJCWJpbmFyeV9hc3NlcnQtPnJp Z2h0X3ZhbHVlLCBzdHJlYW0tPmdmcCkpCi0JCXN0cmluZ19zdHJlYW1fYWRkKHN0cmVhbSwg S1VOSVRfU1VCU1VCVEVTVF9JTkRFTlQgIiVzID09ICVsbGQiLAorCQlzdHJpbmdfc3RyZWFt X2FkZChzdHJlYW0sIEtVTklUX1NVQlNVQlRFU1RfSU5ERU5UICIlcyA9PSAlbGxkICgweCVs bHgpIiwKIAkJCQkgIGJpbmFyeV9hc3NlcnQtPnRleHQtPnJpZ2h0X3RleHQsCisJCQkJICBi aW5hcnlfYXNzZXJ0LT5yaWdodF92YWx1ZSwKIAkJCQkgIGJpbmFyeV9hc3NlcnQtPnJpZ2h0 X3ZhbHVlKTsKIAlrdW5pdF9hc3NlcnRfcHJpbnRfbXNnKG1lc3NhZ2UsIHN0cmVhbSk7CiB9 CkBAIC0yMDQsMyArMjA2LDU5IEBAIHZvaWQga3VuaXRfYmluYXJ5X3N0cl9hc3NlcnRfZm9y bWF0KGNvbnN0IHN0cnVjdCBrdW5pdF9hc3NlcnQgKmFzc2VydCwKIAlrdW5pdF9hc3NlcnRf cHJpbnRfbXNnKG1lc3NhZ2UsIHN0cmVhbSk7CiB9CiBFWFBPUlRfU1lNQk9MX0dQTChrdW5p dF9iaW5hcnlfc3RyX2Fzc2VydF9mb3JtYXQpOworCisvKiBBZGRzIGEgaGV4ZHVtcCBvZiBh IGJ1ZmZlciB0byBhIHN0cmluZ19zdHJlYW0gY29tcGFyaW5nIGl0IHdpdGgKKyAqIGEgc2Vj b25kIGJ1ZmZlci4gVGhlIGRpZmZlcmVudCBieXRlcyBhcmUgbWFya2VkIHdpdGggPD4uCisg Ki8KK3N0YXRpYyB2b2lkIGt1bml0X2Fzc2VydF9oZXhkdW1wKHN0cnVjdCBzdHJpbmdfc3Ry ZWFtICpzdHJlYW0sCisJCQkJIGNvbnN0IHZvaWQgKmJ1ZiwKKwkJCQkgY29uc3Qgdm9pZCAq Y29tcGFyZWRfYnVmLAorCQkJCSBjb25zdCBzaXplX3QgbGVuKQoreworCXNpemVfdCBpOwor CWNvbnN0IHU4ICpidWYxID0gYnVmOworCWNvbnN0IHU4ICpidWYyID0gY29tcGFyZWRfYnVm OworCisJc3RyaW5nX3N0cmVhbV9hZGQoc3RyZWFtLCBLVU5JVF9TVUJTVUJURVNUX0lOREVO VCk7CisKKwlmb3IgKGkgPSAwOyBpIDwgbGVuOyArK2kpIHsKKwkJaWYgKCEoaSAlIDE2KSAm JiBpKQorCQkJc3RyaW5nX3N0cmVhbV9hZGQoc3RyZWFtLCAiXG4iIEtVTklUX1NVQlNVQlRF U1RfSU5ERU5UKTsKKworCQlpZiAoYnVmMVtpXSAhPSBidWYyW2ldKQorCQkJc3RyaW5nX3N0 cmVhbV9hZGQoc3RyZWFtLCAiPCUwMng+IiwgYnVmMVtpXSk7CisJCWVsc2UKKwkJCXN0cmlu Z19zdHJlYW1fYWRkKHN0cmVhbSwgIiAlMDJ4ICIsIGJ1ZjFbaV0pOworCX0KK30KKwordm9p ZCBrdW5pdF9tZW1fYXNzZXJ0X2Zvcm1hdChjb25zdCBzdHJ1Y3Qga3VuaXRfYXNzZXJ0ICph c3NlcnQsCisJCQkgICAgIGNvbnN0IHN0cnVjdCB2YV9mb3JtYXQgKm1lc3NhZ2UsCisJCQkg ICAgIHN0cnVjdCBzdHJpbmdfc3RyZWFtICpzdHJlYW0pCit7CisJc3RydWN0IGt1bml0X21l bV9hc3NlcnQgKm1lbV9hc3NlcnQ7CisKKwltZW1fYXNzZXJ0ID0gY29udGFpbmVyX29mKGFz c2VydCwgc3RydWN0IGt1bml0X21lbV9hc3NlcnQsCisJCQkJICBhc3NlcnQpOworCisJc3Ry aW5nX3N0cmVhbV9hZGQoc3RyZWFtLAorCQkJICBLVU5JVF9TVUJURVNUX0lOREVOVCAiRXhw ZWN0ZWQgJXMgJXMgJXMsIGJ1dFxuIiwKKwkJCSAgbWVtX2Fzc2VydC0+dGV4dC0+bGVmdF90 ZXh0LAorCQkJICBtZW1fYXNzZXJ0LT50ZXh0LT5vcGVyYXRpb24sCisJCQkgIG1lbV9hc3Nl cnQtPnRleHQtPnJpZ2h0X3RleHQpOworCisJc3RyaW5nX3N0cmVhbV9hZGQoc3RyZWFtLCBL VU5JVF9TVUJTVUJURVNUX0lOREVOVCAiJXMgPT1cbiIsCisJCQkgIG1lbV9hc3NlcnQtPnRl eHQtPmxlZnRfdGV4dCk7CisJa3VuaXRfYXNzZXJ0X2hleGR1bXAoc3RyZWFtLCBtZW1fYXNz ZXJ0LT5sZWZ0X3ZhbHVlLAorCQkJICAgICBtZW1fYXNzZXJ0LT5yaWdodF92YWx1ZSwgbWVt X2Fzc2VydC0+c2l6ZSk7CisKKwlzdHJpbmdfc3RyZWFtX2FkZChzdHJlYW0sICJcbiIpOwor CisJc3RyaW5nX3N0cmVhbV9hZGQoc3RyZWFtLCBLVU5JVF9TVUJTVUJURVNUX0lOREVOVCAi JXMgPT1cbiIsCisJCQkgIG1lbV9hc3NlcnQtPnRleHQtPnJpZ2h0X3RleHQpOworCWt1bml0 X2Fzc2VydF9oZXhkdW1wKHN0cmVhbSwgbWVtX2Fzc2VydC0+cmlnaHRfdmFsdWUsCisJCQkg ICAgIG1lbV9hc3NlcnQtPmxlZnRfdmFsdWUsIG1lbV9hc3NlcnQtPnNpemUpOworCisJa3Vu aXRfYXNzZXJ0X3ByaW50X21zZyhtZXNzYWdlLCBzdHJlYW0pOworfQorRVhQT1JUX1NZTUJP TF9HUEwoa3VuaXRfbWVtX2Fzc2VydF9mb3JtYXQpOwpkaWZmIC0tZ2l0IGEvbGliL2t1bml0 L2RlYnVnZnMuYyBiL2xpYi9rdW5pdC9kZWJ1Z2ZzLmMKaW5kZXggMTA0OGVmMWI4ZDZlLi5k ZTBlZTJlMDNlZDYgMTAwNjQ0Ci0tLSBhL2xpYi9rdW5pdC9kZWJ1Z2ZzLmMKKysrIGIvbGli L2t1bml0L2RlYnVnZnMuYwpAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgaW50IGRlYnVnZnNf cHJpbnRfcmVzdWx0cyhzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgdm9pZCAqdikKIAlrdW5pdF9z dWl0ZV9mb3JfZWFjaF90ZXN0X2Nhc2Uoc3VpdGUsIHRlc3RfY2FzZSkKIAkJZGVidWdmc19w cmludF9yZXN1bHQoc2VxLCBzdWl0ZSwgdGVzdF9jYXNlKTsKIAotCXNlcV9wcmludGYoc2Vx LCAiJXMgJWQgLSAlc1xuIiwKKwlzZXFfcHJpbnRmKHNlcSwgIiVzICVkICVzXG4iLAogCQkg ICBrdW5pdF9zdGF0dXNfdG9fb2tfbm90X29rKHN1Y2Nlc3MpLCAxLCBzdWl0ZS0+bmFtZSk7 CiAJcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9saWIva3VuaXQvZXhlY3V0b3IuYyBiL2xp Yi9rdW5pdC9leGVjdXRvci5jCmluZGV4IDliYmM0MjJjMjg0Yi4uNzQ5ODJiODM3MDdjIDEw MDY0NAotLS0gYS9saWIva3VuaXQvZXhlY3V0b3IuYworKysgYi9saWIva3VuaXQvZXhlY3V0 b3IuYwpAQCAtMTY2LDcgKzE2Niw3IEBAIHN0YXRpYyB2b2lkIGt1bml0X2V4ZWNfcnVuX3Rl c3RzKHN0cnVjdCBzdWl0ZV9zZXQgKnN1aXRlX3NldCkKIHsKIAlzaXplX3QgbnVtX3N1aXRl cyA9IHN1aXRlX3NldC0+ZW5kIC0gc3VpdGVfc2V0LT5zdGFydDsKIAotCXByX2luZm8oIlRB UCB2ZXJzaW9uIDE0XG4iKTsKKwlwcl9pbmZvKCJLVEFQIHZlcnNpb24gMVxuIik7CiAJcHJf aW5mbygiMS4uJXp1XG4iLCBudW1fc3VpdGVzKTsKIAogCV9fa3VuaXRfdGVzdF9zdWl0ZXNf aW5pdChzdWl0ZV9zZXQtPnN0YXJ0LCBudW1fc3VpdGVzKTsKQEAgLTE3Nyw4ICsxNzcsOCBA QCBzdGF0aWMgdm9pZCBrdW5pdF9leGVjX2xpc3RfdGVzdHMoc3RydWN0IHN1aXRlX3NldCAq c3VpdGVfc2V0KQogCXN0cnVjdCBrdW5pdF9zdWl0ZSAqIGNvbnN0ICpzdWl0ZXM7CiAJc3Ry dWN0IGt1bml0X2Nhc2UgKnRlc3RfY2FzZTsKIAotCS8qIEhhY2s6IHByaW50IGEgdGFwIGhl YWRlciBzbyBrdW5pdC5weSBjYW4gZmluZCB0aGUgc3RhcnQgb2YgS1VuaXQgb3V0cHV0LiAq LwotCXByX2luZm8oIlRBUCB2ZXJzaW9uIDE0XG4iKTsKKwkvKiBIYWNrOiBwcmludCBhIGt0 YXAgaGVhZGVyIHNvIGt1bml0LnB5IGNhbiBmaW5kIHRoZSBzdGFydCBvZiBLVW5pdCBvdXRw dXQuICovCisJcHJfaW5mbygiS1RBUCB2ZXJzaW9uIDFcbiIpOwogCiAJZm9yIChzdWl0ZXMg PSBzdWl0ZV9zZXQtPnN0YXJ0OyBzdWl0ZXMgPCBzdWl0ZV9zZXQtPmVuZDsgc3VpdGVzKysp CiAJCWt1bml0X3N1aXRlX2Zvcl9lYWNoX3Rlc3RfY2FzZSgoKnN1aXRlcyksIHRlc3RfY2Fz ZSkgewpkaWZmIC0tZ2l0IGEvbGliL2t1bml0L2t1bml0LWV4YW1wbGUtdGVzdC5jIGIvbGli L2t1bml0L2t1bml0LWV4YW1wbGUtdGVzdC5jCmluZGV4IGY4ZmU1ODJjOWUzNi4uNjZjYzRl MjM2NWVjIDEwMDY0NAotLS0gYS9saWIva3VuaXQva3VuaXQtZXhhbXBsZS10ZXN0LmMKKysr IGIvbGliL2t1bml0L2t1bml0LWV4YW1wbGUtdGVzdC5jCkBAIC04Niw2ICs4Niw5IEBAIHN0 YXRpYyB2b2lkIGV4YW1wbGVfbWFya19za2lwcGVkX3Rlc3Qoc3RydWN0IGt1bml0ICp0ZXN0 KQogICovCiBzdGF0aWMgdm9pZCBleGFtcGxlX2FsbF9leHBlY3RfbWFjcm9zX3Rlc3Qoc3Ry dWN0IGt1bml0ICp0ZXN0KQogeworCWNvbnN0IHUzMiBhcnJheTFbXSA9IHsgMHgwRiwgMHhG RiB9OworCWNvbnN0IHUzMiBhcnJheTJbXSA9IHsgMHgxRiwgMHhGRiB9OworCiAJLyogQm9v bGVhbiBhc3NlcnRpb25zICovCiAJS1VOSVRfRVhQRUNUX1RSVUUodGVzdCwgdHJ1ZSk7CiAJ S1VOSVRfRVhQRUNUX0ZBTFNFKHRlc3QsIGZhbHNlKTsKQEAgLTEwOSw2ICsxMTIsMTAgQEAg c3RhdGljIHZvaWQgZXhhbXBsZV9hbGxfZXhwZWN0X21hY3Jvc190ZXN0KHN0cnVjdCBrdW5p dCAqdGVzdCkKIAlLVU5JVF9FWFBFQ1RfU1RSRVEodGVzdCwgImhpIiwgImhpIik7CiAJS1VO SVRfRVhQRUNUX1NUUk5FUSh0ZXN0LCAiaGkiLCAiYnllIik7CiAKKwkvKiBNZW1vcnkgYmxv Y2sgYXNzZXJ0aW9ucyAqLworCUtVTklUX0VYUEVDVF9NRU1FUSh0ZXN0LCBhcnJheTEsIGFy cmF5MSwgc2l6ZW9mKGFycmF5MSkpOworCUtVTklUX0VYUEVDVF9NRU1ORVEodGVzdCwgYXJy YXkxLCBhcnJheTIsIHNpemVvZihhcnJheTEpKTsKKwogCS8qCiAJICogVGhlcmUgYXJlIGFs c28gQVNTRVJUIHZhcmlhbnRzIG9mIGFsbCBvZiB0aGUgYWJvdmUgdGhhdCBhYm9ydCB0ZXN0 CiAJICogZXhlY3V0aW9uIGlmIHRoZXkgZmFpbC4gVXNlZnVsIGZvciBtZW1vcnkgYWxsb2Nh dGlvbnMsIGV0Yy4KZGlmZiAtLWdpdCBhL2xpYi9rdW5pdC9zdHJpbmctc3RyZWFtLmMgYi9s aWIva3VuaXQvc3RyaW5nLXN0cmVhbS5jCmluZGV4IGY1YWU3OWMzNzQwMC4uNzI2NTlhOTc3 M2UzIDEwMDY0NAotLS0gYS9saWIva3VuaXQvc3RyaW5nLXN0cmVhbS5jCisrKyBiL2xpYi9r dW5pdC9zdHJpbmctc3RyZWFtLmMKQEAgLTEzMSwxMSArMTMxLDYgQEAgYm9vbCBzdHJpbmdf c3RyZWFtX2lzX2VtcHR5KHN0cnVjdCBzdHJpbmdfc3RyZWFtICpzdHJlYW0pCiAJcmV0dXJu IGxpc3RfZW1wdHkoJnN0cmVhbS0+ZnJhZ21lbnRzKTsKIH0KIAotc3RydWN0IHN0cmluZ19z dHJlYW1fYWxsb2NfY29udGV4dCB7Ci0Jc3RydWN0IGt1bml0ICp0ZXN0OwotCWdmcF90IGdm cDsKLX07Ci0KIHN0cnVjdCBzdHJpbmdfc3RyZWFtICphbGxvY19zdHJpbmdfc3RyZWFtKHN0 cnVjdCBrdW5pdCAqdGVzdCwgZ2ZwX3QgZ2ZwKQogewogCXN0cnVjdCBzdHJpbmdfc3RyZWFt ICpzdHJlYW07CmRpZmYgLS1naXQgYS9saWIva3VuaXQvdGVzdC5jIGIvbGliL2t1bml0L3Rl c3QuYwppbmRleCA5MDY0MGE0M2NmNjIuLjg3YTVkNzk1ODQzYiAxMDA2NDQKLS0tIGEvbGli L2t1bml0L3Rlc3QuYworKysgYi9saWIva3VuaXQvdGVzdC5jCkBAIC0yMCw2ICsyMCw4IEBA CiAjaW5jbHVkZSAic3RyaW5nLXN0cmVhbS5oIgogI2luY2x1ZGUgInRyeS1jYXRjaC1pbXBs LmgiCiAKK0RFRklORV9TVEFUSUNfS0VZX0ZBTFNFKGt1bml0X3J1bm5pbmcpOworCiAjaWYg SVNfQlVJTFRJTihDT05GSUdfS1VOSVQpCiAvKgogICogRmFpbCB0aGUgY3VycmVudCB0ZXN0 IGFuZCBwcmludCBhbiBlcnJvciBtZXNzYWdlIHRvIHRoZSBsb2cuCkBAIC0xNDksNiArMTUx LDcgQEAgRVhQT1JUX1NZTUJPTF9HUEwoa3VuaXRfc3VpdGVfbnVtX3Rlc3RfY2FzZXMpOwog CiBzdGF0aWMgdm9pZCBrdW5pdF9wcmludF9zdWl0ZV9zdGFydChzdHJ1Y3Qga3VuaXRfc3Vp dGUgKnN1aXRlKQogeworCWt1bml0X2xvZyhLRVJOX0lORk8sIHN1aXRlLCBLVU5JVF9TVUJU RVNUX0lOREVOVCAiS1RBUCB2ZXJzaW9uIDFcbiIpOwogCWt1bml0X2xvZyhLRVJOX0lORk8s IHN1aXRlLCBLVU5JVF9TVUJURVNUX0lOREVOVCAiIyBTdWJ0ZXN0OiAlcyIsCiAJCSAgc3Vp dGUtPm5hbWUpOwogCWt1bml0X2xvZyhLRVJOX0lORk8sIHN1aXRlLCBLVU5JVF9TVUJURVNU X0lOREVOVCAiMS4uJXpkIiwKQEAgLTE3NSwxMyArMTc4LDEzIEBAIHN0YXRpYyB2b2lkIGt1 bml0X3ByaW50X29rX25vdF9vayh2b2lkICp0ZXN0X29yX3N1aXRlLAogCSAqIHJlcHJlc2Vu dGF0aW9uLgogCSAqLwogCWlmIChzdWl0ZSkKLQkJcHJfaW5mbygiJXMgJXpkIC0gJXMlcyVz XG4iLAorCQlwcl9pbmZvKCIlcyAlemQgJXMlcyVzXG4iLAogCQkJa3VuaXRfc3RhdHVzX3Rv X29rX25vdF9vayhzdGF0dXMpLAogCQkJdGVzdF9udW1iZXIsIGRlc2NyaXB0aW9uLCBkaXJl Y3RpdmVfaGVhZGVyLAogCQkJKHN0YXR1cyA9PSBLVU5JVF9TS0lQUEVEKSA/IGRpcmVjdGl2 ZSA6ICIiKTsKIAllbHNlCiAJCWt1bml0X2xvZyhLRVJOX0lORk8sIHRlc3QsCi0JCQkgIEtV TklUX1NVQlRFU1RfSU5ERU5UICIlcyAlemQgLSAlcyVzJXMiLAorCQkJICBLVU5JVF9TVUJU RVNUX0lOREVOVCAiJXMgJXpkICVzJXMlcyIsCiAJCQkgIGt1bml0X3N0YXR1c190b19va19u b3Rfb2soc3RhdHVzKSwKIAkJCSAgdGVzdF9udW1iZXIsIGRlc2NyaXB0aW9uLCBkaXJlY3Rp dmVfaGVhZGVyLAogCQkJICAoc3RhdHVzID09IEtVTklUX1NLSVBQRUQpID8gZGlyZWN0aXZl IDogIiIpOwpAQCAtNTQyLDYgKzU0NSw4IEBAIGludCBrdW5pdF9ydW5fdGVzdHMoc3RydWN0 IGt1bml0X3N1aXRlICpzdWl0ZSkKIAkJCS8qIEdldCBpbml0aWFsIHBhcmFtLiAqLwogCQkJ cGFyYW1fZGVzY1swXSA9ICdcMCc7CiAJCQl0ZXN0LnBhcmFtX3ZhbHVlID0gdGVzdF9jYXNl LT5nZW5lcmF0ZV9wYXJhbXMoTlVMTCwgcGFyYW1fZGVzYyk7CisJCQlrdW5pdF9sb2coS0VS Tl9JTkZPLCAmdGVzdCwgS1VOSVRfU1VCVEVTVF9JTkRFTlQgS1VOSVRfU1VCVEVTVF9JTkRF TlQKKwkJCQkgICJLVEFQIHZlcnNpb24gMVxuIik7CiAJCQlrdW5pdF9sb2coS0VSTl9JTkZP LCAmdGVzdCwgS1VOSVRfU1VCVEVTVF9JTkRFTlQgS1VOSVRfU1VCVEVTVF9JTkRFTlQKIAkJ CQkgICIjIFN1YnRlc3Q6ICVzIiwgdGVzdF9jYXNlLT5uYW1lKTsKIApAQCAtNTU1LDcgKzU2 MCw3IEBAIGludCBrdW5pdF9ydW5fdGVzdHMoc3RydWN0IGt1bml0X3N1aXRlICpzdWl0ZSkK IAogCQkJCWt1bml0X2xvZyhLRVJOX0lORk8sICZ0ZXN0LAogCQkJCQkgIEtVTklUX1NVQlRF U1RfSU5ERU5UIEtVTklUX1NVQlRFU1RfSU5ERU5UCi0JCQkJCSAgIiVzICVkIC0gJXMiLAor CQkJCQkgICIlcyAlZCAlcyIsCiAJCQkJCSAga3VuaXRfc3RhdHVzX3RvX29rX25vdF9vayh0 ZXN0LnN0YXR1cyksCiAJCQkJCSAgdGVzdC5wYXJhbV9pbmRleCArIDEsIHBhcmFtX2Rlc2Mp OwogCkBAIC02MTIsMTAgKzYxNywxNCBAQCBpbnQgX19rdW5pdF90ZXN0X3N1aXRlc19pbml0 KHN0cnVjdCBrdW5pdF9zdWl0ZSAqIGNvbnN0ICogY29uc3Qgc3VpdGVzLCBpbnQgbnVtXwog CQlyZXR1cm4gMDsKIAl9CiAKKwlzdGF0aWNfYnJhbmNoX2luYygma3VuaXRfcnVubmluZyk7 CisKIAlmb3IgKGkgPSAwOyBpIDwgbnVtX3N1aXRlczsgaSsrKSB7CiAJCWt1bml0X2luaXRf c3VpdGUoc3VpdGVzW2ldKTsKIAkJa3VuaXRfcnVuX3Rlc3RzKHN1aXRlc1tpXSk7CiAJfQor CisJc3RhdGljX2JyYW5jaF9kZWMoJmt1bml0X3J1bm5pbmcpOwogCXJldHVybiAwOwogfQog RVhQT1JUX1NZTUJPTF9HUEwoX19rdW5pdF90ZXN0X3N1aXRlc19pbml0KTsKZGlmZiAtLWdp dCBhL2xpYi9zbHViX2t1bml0LmMgYi9saWIvc2x1Yl9rdW5pdC5jCmluZGV4IDdhMDU2NGQ3 Y2I3YS4uOGZkMTljODMwMWFkIDEwMDY0NAotLS0gYS9saWIvc2x1Yl9rdW5pdC5jCisrKyBi L2xpYi9zbHViX2t1bml0LmMKQEAgLTEsNSArMSw2IEBACiAvLyBTUERYLUxpY2Vuc2UtSWRl bnRpZmllcjogR1BMLTIuMAogI2luY2x1ZGUgPGt1bml0L3Rlc3QuaD4KKyNpbmNsdWRlIDxr dW5pdC90ZXN0LWJ1Zy5oPgogI2luY2x1ZGUgPGxpbnV4L21tLmg+CiAjaW5jbHVkZSA8bGlu dXgvc2xhYi5oPgogI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgpkaWZmIC0tZ2l0IGEvbW0v c2x1Yi5jIGIvbW0vc2x1Yi5jCmluZGV4IDE1NzUyN2Q3MTAxYi4uMTg4Nzk5NmNiNzAzIDEw MDY0NAotLS0gYS9tbS9zbHViLmMKKysrIGIvbW0vc2x1Yi5jCkBAIC0zOSw2ICszOSw3IEBA CiAjaW5jbHVkZSA8bGludXgvbWVtY29udHJvbC5oPgogI2luY2x1ZGUgPGxpbnV4L3JhbmRv bS5oPgogI2luY2x1ZGUgPGt1bml0L3Rlc3QuaD4KKyNpbmNsdWRlIDxrdW5pdC90ZXN0LWJ1 Zy5oPgogI2luY2x1ZGUgPGxpbnV4L3NvcnQuaD4KIAogI2luY2x1ZGUgPGxpbnV4L2RlYnVn ZnMuaD4KQEAgLTYwMyw3ICs2MDQsNyBAQCBzdGF0aWMgYm9vbCBzbGFiX2FkZF9rdW5pdF9l cnJvcnModm9pZCkKIHsKIAlzdHJ1Y3Qga3VuaXRfcmVzb3VyY2UgKnJlc291cmNlOwogCi0J aWYgKGxpa2VseSghY3VycmVudC0+a3VuaXRfdGVzdCkpCisJaWYgKCFrdW5pdF9nZXRfY3Vy cmVudF90ZXN0KCkpCiAJCXJldHVybiBmYWxzZTsKIAogCXJlc291cmNlID0ga3VuaXRfZmlu ZF9uYW1lZF9yZXNvdXJjZShjdXJyZW50LT5rdW5pdF90ZXN0LCAic2xhYl9lcnJvcnMiKTsK ZGlmZiAtLWdpdCBhL25ldC9jb3JlL2Rldl9hZGRyX2xpc3RzX3Rlc3QuYyBiL25ldC9jb3Jl L2Rldl9hZGRyX2xpc3RzX3Rlc3QuYwppbmRleCAwNDljZmJjNThhYTkuLjkwZTdlMzgxMWFl NyAxMDA2NDQKLS0tIGEvbmV0L2NvcmUvZGV2X2FkZHJfbGlzdHNfdGVzdC5jCisrKyBiL25l dC9jb3JlL2Rldl9hZGRyX2xpc3RzX3Rlc3QuYwpAQCAtNzEsMTEgKzcxLDExIEBAIHN0YXRp YyB2b2lkIGRldl9hZGRyX3Rlc3RfYmFzaWMoc3RydWN0IGt1bml0ICp0ZXN0KQogCiAJbWVt c2V0KGFkZHIsIDIsIHNpemVvZihhZGRyKSk7CiAJZXRoX2h3X2FkZHJfc2V0KG5ldGRldiwg YWRkcik7Ci0JS1VOSVRfRVhQRUNUX0VRKHRlc3QsIDAsIG1lbWNtcChuZXRkZXYtPmRldl9h ZGRyLCBhZGRyLCBzaXplb2YoYWRkcikpKTsKKwlLVU5JVF9FWFBFQ1RfTUVNRVEodGVzdCwg bmV0ZGV2LT5kZXZfYWRkciwgYWRkciwgc2l6ZW9mKGFkZHIpKTsKIAogCW1lbXNldChhZGRy LCAzLCBzaXplb2YoYWRkcikpOwogCWRldl9hZGRyX3NldChuZXRkZXYsIGFkZHIpOwotCUtV TklUX0VYUEVDVF9FUSh0ZXN0LCAwLCBtZW1jbXAobmV0ZGV2LT5kZXZfYWRkciwgYWRkciwg c2l6ZW9mKGFkZHIpKSk7CisJS1VOSVRfRVhQRUNUX01FTUVRKHRlc3QsIG5ldGRldi0+ZGV2 X2FkZHIsIGFkZHIsIHNpemVvZihhZGRyKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGRldl9hZGRy X3Rlc3Rfc3luY19vbmUoc3RydWN0IGt1bml0ICp0ZXN0KQpkaWZmIC0tZ2l0IGEvc2VjdXJp dHkvYXBwYXJtb3IvS2NvbmZpZyBiL3NlY3VyaXR5L2FwcGFybW9yL0tjb25maWcKaW5kZXgg Y2IzNDk2ZTAwZDhhLi5mMzM0ZTdjY2NmMmQgMTAwNjQ0Ci0tLSBhL3NlY3VyaXR5L2FwcGFy bW9yL0tjb25maWcKKysrIGIvc2VjdXJpdHkvYXBwYXJtb3IvS2NvbmZpZwpAQCAtMTA2LDgg KzEwNiw4IEBAIGNvbmZpZyBTRUNVUklUWV9BUFBBUk1PUl9QQVJBTk9JRF9MT0FECiAJICBE aXNhYmxpbmcgdGhlIGNoZWNrIHdpbGwgc3BlZWQgdXAgcG9saWN5IGxvYWRzLgogCiBjb25m aWcgU0VDVVJJVFlfQVBQQVJNT1JfS1VOSVRfVEVTVAotCWJvb2wgIkJ1aWxkIEtVbml0IHRl c3RzIGZvciBwb2xpY3lfdW5wYWNrLmMiIGlmICFLVU5JVF9BTExfVEVTVFMKLQlkZXBlbmRz IG9uIEtVTklUPXkgJiYgU0VDVVJJVFlfQVBQQVJNT1IKKwl0cmlzdGF0ZSAiQnVpbGQgS1Vu aXQgdGVzdHMgZm9yIHBvbGljeV91bnBhY2suYyIgaWYgIUtVTklUX0FMTF9URVNUUworCWRl cGVuZHMgb24gS1VOSVQgJiYgU0VDVVJJVFlfQVBQQVJNT1IKIAlkZWZhdWx0IEtVTklUX0FM TF9URVNUUwogCWhlbHAKIAkgIFRoaXMgYnVpbGRzIHRoZSBBcHBBcm1vciBLVW5pdCB0ZXN0 cy4KZGlmZiAtLWdpdCBhL3NlY3VyaXR5L2FwcGFybW9yL01ha2VmaWxlIGIvc2VjdXJpdHkv YXBwYXJtb3IvTWFrZWZpbGUKaW5kZXggZmYyM2ZjZmVmZTE5Li4wNjVmNGUzNDY1NTMgMTAw NjQ0Ci0tLSBhL3NlY3VyaXR5L2FwcGFybW9yL01ha2VmaWxlCisrKyBiL3NlY3VyaXR5L2Fw cGFybW9yL01ha2VmaWxlCkBAIC04LDYgKzgsOSBAQCBhcHBhcm1vci15IDo9IGFwcGFybW9y ZnMubyBhdWRpdC5vIGNhcGFiaWxpdHkubyB0YXNrLm8gaXBjLm8gbGliLm8gbWF0Y2gubyBc CiAgICAgICAgICAgICAgIHJlc291cmNlLm8gc2VjaWQubyBmaWxlLm8gcG9saWN5X25zLm8g bGFiZWwubyBtb3VudC5vIG5ldC5vCiBhcHBhcm1vci0kKENPTkZJR19TRUNVUklUWV9BUFBB Uk1PUl9IQVNIKSArPSBjcnlwdG8ubwogCitvYmotJChDT05GSUdfU0VDVVJJVFlfQVBQQVJN T1JfS1VOSVRfVEVTVCkgKz0gYXBwYXJtb3JfcG9saWN5X3VucGFja190ZXN0Lm8KK2FwcGFy bW9yX3BvbGljeV91bnBhY2tfdGVzdC1vYmpzICs9IHBvbGljeV91bnBhY2tfdGVzdC5vCisK IGNsZWFuLWZpbGVzIDo9IGNhcGFiaWxpdHlfbmFtZXMuaCBybGltX25hbWVzLmggbmV0X25h bWVzLmgKIAogIyBCdWlsZCBhIGxvd2VyIGNhc2Ugc3RyaW5nIHRhYmxlIG9mIGFkZHJlc3Mg ZmFtaWx5IG5hbWVzCmRpZmYgLS1naXQgYS9zZWN1cml0eS9hcHBhcm1vci9pbmNsdWRlL3Bv bGljeV91bnBhY2suaCBiL3NlY3VyaXR5L2FwcGFybW9yL2luY2x1ZGUvcG9saWN5X3VucGFj ay5oCmluZGV4IGViNWY3ZDdmMTMyYi4uZTg5YjcwMTQ0N2JjIDEwMDY0NAotLS0gYS9zZWN1 cml0eS9hcHBhcm1vci9pbmNsdWRlL3BvbGljeV91bnBhY2suaAorKysgYi9zZWN1cml0eS9h cHBhcm1vci9pbmNsdWRlL3BvbGljeV91bnBhY2suaApAQCAtNDgsNiArNDgsNDMgQEAgZW51 bSB7CiAJQUFGU19MT0FEREFUQV9OREVOVFMJCS8qIGNvdW50IG9mIGVudHJpZXMgKi8KIH07 CiAKKy8qCisgKiBUaGUgQXBwQXJtb3IgaW50ZXJmYWNlIHRyZWF0cyBkYXRhIGFzIGEgdHlw ZSBieXRlIGZvbGxvd2VkIGJ5IHRoZQorICogYWN0dWFsIGRhdGEuICBUaGUgaW50ZXJmYWNl IGhhcyB0aGUgbm90aW9uIG9mIGEgbmFtZWQgZW50cnkKKyAqIHdoaWNoIGhhcyBhIG5hbWUg KEFBX05BTUUgdHlwZWNvZGUgZm9sbG93ZWQgYnkgbmFtZSBzdHJpbmcpIGZvbGxvd2VkIGJ5 CisgKiB0aGUgZW50cmllcyB0eXBlY29kZSBhbmQgZGF0YS4gIE5hbWVkIHR5cGVzIGFsbG93 IGZvciBvcHRpb25hbAorICogZWxlbWVudHMgYW5kIGV4dGVuc2lvbnMgdG8gYmUgYWRkZWQg YW5kIHRlc3RlZCBmb3Igd2l0aG91dCBicmVha2luZworICogYmFja3dhcmRzIGNvbXBhdGli aWxpdHkuCisgKi8KKworZW51bSBhYV9jb2RlIHsKKwlBQV9VOCwKKwlBQV9VMTYsCisJQUFf VTMyLAorCUFBX1U2NCwKKwlBQV9OQU1FLAkJLyogc2FtZSBhcyBzdHJpbmcgZXhjZXB0IGl0 IGlzIGl0ZW1zIG5hbWUgKi8KKwlBQV9TVFJJTkcsCisJQUFfQkxPQiwKKwlBQV9TVFJVQ1Qs CisJQUFfU1RSVUNURU5ELAorCUFBX0xJU1QsCisJQUFfTElTVEVORCwKKwlBQV9BUlJBWSwK KwlBQV9BUlJBWUVORCwKK307CisKKy8qCisgKiBhYV9leHQgaXMgdGhlIHJlYWQgb2YgdGhl IGJ1ZmZlciBjb250YWluaW5nIHRoZSBzZXJpYWxpemVkIHByb2ZpbGUuICBUaGUKKyAqIGRh dGEgaXMgY29waWVkIGludG8gYSBrZXJuZWwgYnVmZmVyIGluIGFwcGFybW9yZnMgYW5kIHRo ZW4gaGFuZGVkIG9mZiB0bworICogdGhlIHVucGFjayByb3V0aW5lcy4KKyAqLworc3RydWN0 IGFhX2V4dCB7CisJdm9pZCAqc3RhcnQ7CisJdm9pZCAqZW5kOworCXZvaWQgKnBvczsJCS8q IHBvaW50ZXIgdG8gY3VycmVudCBwb3NpdGlvbiBpbiB0aGUgYnVmZmVyICovCisJdTMyIHZl cnNpb247Cit9OworCiAvKgogICogc3RydWN0IGFhX2xvYWRkYXRhIC0gYnVmZmVyIG9mIHBv bGljeSByYXdfZGF0YSBzZXQKICAqCkBAIC0xMjYsNCArMTYzLDE3IEBAIHN0YXRpYyBpbmxp bmUgdm9pZCBhYV9wdXRfbG9hZGRhdGEoc3RydWN0IGFhX2xvYWRkYXRhICpkYXRhKQogCQlr cmVmX3B1dCgmZGF0YS0+Y291bnQsIGFhX2xvYWRkYXRhX2tyZWYpOwogfQogCisjaWYgSVNf RU5BQkxFRChDT05GSUdfS1VOSVQpCitib29sIGFhX2luYm91bmRzKHN0cnVjdCBhYV9leHQg KmUsIHNpemVfdCBzaXplKTsKK3NpemVfdCBhYV91bnBhY2tfdTE2X2NodW5rKHN0cnVjdCBh YV9leHQgKmUsIGNoYXIgKipjaHVuayk7Citib29sIGFhX3VucGFja19YKHN0cnVjdCBhYV9l eHQgKmUsIGVudW0gYWFfY29kZSBjb2RlKTsKK2Jvb2wgYWFfdW5wYWNrX25hbWVYKHN0cnVj dCBhYV9leHQgKmUsIGVudW0gYWFfY29kZSBjb2RlLCBjb25zdCBjaGFyICpuYW1lKTsKK2Jv b2wgYWFfdW5wYWNrX3UzMihzdHJ1Y3QgYWFfZXh0ICplLCB1MzIgKmRhdGEsIGNvbnN0IGNo YXIgKm5hbWUpOworYm9vbCBhYV91bnBhY2tfdTY0KHN0cnVjdCBhYV9leHQgKmUsIHU2NCAq ZGF0YSwgY29uc3QgY2hhciAqbmFtZSk7CitzaXplX3QgYWFfdW5wYWNrX2FycmF5KHN0cnVj dCBhYV9leHQgKmUsIGNvbnN0IGNoYXIgKm5hbWUpOworc2l6ZV90IGFhX3VucGFja19ibG9i KHN0cnVjdCBhYV9leHQgKmUsIGNoYXIgKipibG9iLCBjb25zdCBjaGFyICpuYW1lKTsKK2lu dCBhYV91bnBhY2tfc3RyKHN0cnVjdCBhYV9leHQgKmUsIGNvbnN0IGNoYXIgKipzdHJpbmcs IGNvbnN0IGNoYXIgKm5hbWUpOworaW50IGFhX3VucGFja19zdHJkdXAoc3RydWN0IGFhX2V4 dCAqZSwgY2hhciAqKnN0cmluZywgY29uc3QgY2hhciAqbmFtZSk7CisjZW5kaWYKKwogI2Vu ZGlmIC8qIF9fUE9MSUNZX0lOVEVSRkFDRV9IICovCmRpZmYgLS1naXQgYS9zZWN1cml0eS9h cHBhcm1vci9wb2xpY3lfdW5wYWNrLmMgYi9zZWN1cml0eS9hcHBhcm1vci9wb2xpY3lfdW5w YWNrLmMKaW5kZXggNTVkMzFiYWM0ZjM1Li4xMmU1MzVmZGZhOGIgMTAwNjQ0Ci0tLSBhL3Nl Y3VyaXR5L2FwcGFybW9yL3BvbGljeV91bnBhY2suYworKysgYi9zZWN1cml0eS9hcHBhcm1v ci9wb2xpY3lfdW5wYWNrLmMKQEAgLTE0LDYgKzE0LDcgQEAKICAqLwogCiAjaW5jbHVkZSA8 YXNtL3VuYWxpZ25lZC5oPgorI2luY2x1ZGUgPGt1bml0L3Zpc2liaWxpdHkuaD4KICNpbmNs dWRlIDxsaW51eC9jdHlwZS5oPgogI2luY2x1ZGUgPGxpbnV4L2Vycm5vLmg+CiAjaW5jbHVk ZSA8bGludXgvemxpYi5oPgpAQCAtMzcsNDMgKzM4LDYgQEAKICNkZWZpbmUgdjcJNwogI2Rl ZmluZSB2OAk4CS8qIGZ1bGwgbmV0d29yayBtYXNraW5nICovCiAKLS8qCi0gKiBUaGUgQXBw QXJtb3IgaW50ZXJmYWNlIHRyZWF0cyBkYXRhIGFzIGEgdHlwZSBieXRlIGZvbGxvd2VkIGJ5 IHRoZQotICogYWN0dWFsIGRhdGEuICBUaGUgaW50ZXJmYWNlIGhhcyB0aGUgbm90aW9uIG9m IGEgbmFtZWQgZW50cnkKLSAqIHdoaWNoIGhhcyBhIG5hbWUgKEFBX05BTUUgdHlwZWNvZGUg Zm9sbG93ZWQgYnkgbmFtZSBzdHJpbmcpIGZvbGxvd2VkIGJ5Ci0gKiB0aGUgZW50cmllcyB0 eXBlY29kZSBhbmQgZGF0YS4gIE5hbWVkIHR5cGVzIGFsbG93IGZvciBvcHRpb25hbAotICog ZWxlbWVudHMgYW5kIGV4dGVuc2lvbnMgdG8gYmUgYWRkZWQgYW5kIHRlc3RlZCBmb3Igd2l0 aG91dCBicmVha2luZwotICogYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuCi0gKi8KLQotZW51 bSBhYV9jb2RlIHsKLQlBQV9VOCwKLQlBQV9VMTYsCi0JQUFfVTMyLAotCUFBX1U2NCwKLQlB QV9OQU1FLAkJLyogc2FtZSBhcyBzdHJpbmcgZXhjZXB0IGl0IGlzIGl0ZW1zIG5hbWUgKi8K LQlBQV9TVFJJTkcsCi0JQUFfQkxPQiwKLQlBQV9TVFJVQ1QsCi0JQUFfU1RSVUNURU5ELAot CUFBX0xJU1QsCi0JQUFfTElTVEVORCwKLQlBQV9BUlJBWSwKLQlBQV9BUlJBWUVORCwKLX07 Ci0KLS8qCi0gKiBhYV9leHQgaXMgdGhlIHJlYWQgb2YgdGhlIGJ1ZmZlciBjb250YWluaW5n IHRoZSBzZXJpYWxpemVkIHByb2ZpbGUuICBUaGUKLSAqIGRhdGEgaXMgY29waWVkIGludG8g YSBrZXJuZWwgYnVmZmVyIGluIGFwcGFybW9yZnMgYW5kIHRoZW4gaGFuZGVkIG9mZiB0bwot ICogdGhlIHVucGFjayByb3V0aW5lcy4KLSAqLwotc3RydWN0IGFhX2V4dCB7Ci0Jdm9pZCAq c3RhcnQ7Ci0Jdm9pZCAqZW5kOwotCXZvaWQgKnBvczsJCS8qIHBvaW50ZXIgdG8gY3VycmVu dCBwb3NpdGlvbiBpbiB0aGUgYnVmZmVyICovCi0JdTMyIHZlcnNpb247Ci19OwotCiAvKiBh dWRpdCBjYWxsYmFjayBmb3IgdW5wYWNrIGZpZWxkcyAqLwogc3RhdGljIHZvaWQgYXVkaXRf Y2Ioc3RydWN0IGF1ZGl0X2J1ZmZlciAqYWIsIHZvaWQgKnZhKQogewpAQCAtMTk5LDEwICsx NjMsMTEgQEAgc3RydWN0IGFhX2xvYWRkYXRhICphYV9sb2FkZGF0YV9hbGxvYyhzaXplX3Qg c2l6ZSkKIH0KIAogLyogdGVzdCBpZiByZWFkIHdpbGwgYmUgaW4gcGFja2VkIGRhdGEgYm91 bmRzICovCi1zdGF0aWMgYm9vbCBpbmJvdW5kcyhzdHJ1Y3QgYWFfZXh0ICplLCBzaXplX3Qg c2l6ZSkKK1ZJU0lCTEVfSUZfS1VOSVQgYm9vbCBhYV9pbmJvdW5kcyhzdHJ1Y3QgYWFfZXh0 ICplLCBzaXplX3Qgc2l6ZSkKIHsKIAlyZXR1cm4gKHNpemUgPD0gZS0+ZW5kIC0gZS0+cG9z KTsKIH0KK0VYUE9SVF9TWU1CT0xfSUZfS1VOSVQoYWFfaW5ib3VuZHMpOwogCiBzdGF0aWMg dm9pZCAqa3ZtZW1kdXAoY29uc3Qgdm9pZCAqc3JjLCBzaXplX3QgbGVuKQogewpAQCAtMjE0 LDIyICsxNzksMjIgQEAgc3RhdGljIHZvaWQgKmt2bWVtZHVwKGNvbnN0IHZvaWQgKnNyYywg c2l6ZV90IGxlbikKIH0KIAogLyoqCi0gKiB1bnBhY2tfdTE2X2NodW5rIC0gdGVzdCBhbmQg ZG8gYm91bmRzIGNoZWNraW5nIGZvciBhIHUxNiBzaXplIGJhc2VkIGNodW5rCisgKiBhYV91 bnBhY2tfdTE2X2NodW5rIC0gdGVzdCBhbmQgZG8gYm91bmRzIGNoZWNraW5nIGZvciBhIHUx NiBzaXplIGJhc2VkIGNodW5rCiAgKiBAZTogc2VyaWFsaXplZCBkYXRhIHJlYWQgaGVhZCAo Tk9UIE5VTEwpCiAgKiBAY2h1bms6IHN0YXJ0IGFkZHJlc3MgZm9yIGNodW5rIG9mIGRhdGEg KE5PVCBOVUxMKQogICoKICAqIFJldHVybnM6IHRoZSBzaXplIG9mIGNodW5rIGZvdW5kIHdp dGggdGhlIHJlYWQgaGVhZCBhdCB0aGUgZW5kIG9mIHRoZSBjaHVuay4KICAqLwotc3RhdGlj IHNpemVfdCB1bnBhY2tfdTE2X2NodW5rKHN0cnVjdCBhYV9leHQgKmUsIGNoYXIgKipjaHVu aykKK1ZJU0lCTEVfSUZfS1VOSVQgc2l6ZV90IGFhX3VucGFja191MTZfY2h1bmsoc3RydWN0 IGFhX2V4dCAqZSwgY2hhciAqKmNodW5rKQogewogCXNpemVfdCBzaXplID0gMDsKIAl2b2lk ICpwb3MgPSBlLT5wb3M7CiAKLQlpZiAoIWluYm91bmRzKGUsIHNpemVvZih1MTYpKSkKKwlp ZiAoIWFhX2luYm91bmRzKGUsIHNpemVvZih1MTYpKSkKIAkJZ290byBmYWlsOwogCXNpemUg PSBsZTE2X3RvX2NwdShnZXRfdW5hbGlnbmVkKChfX2xlMTYgKikgZS0+cG9zKSk7CiAJZS0+ cG9zICs9IHNpemVvZihfX2xlMTYpOwotCWlmICghaW5ib3VuZHMoZSwgc2l6ZSkpCisJaWYg KCFhYV9pbmJvdW5kcyhlLCBzaXplKSkKIAkJZ290byBmYWlsOwogCSpjaHVuayA9IGUtPnBv czsKIAllLT5wb3MgKz0gc2l6ZTsKQEAgLTIzOSwyMCArMjA0LDIyIEBAIHN0YXRpYyBzaXpl X3QgdW5wYWNrX3UxNl9jaHVuayhzdHJ1Y3QgYWFfZXh0ICplLCBjaGFyICoqY2h1bmspCiAJ ZS0+cG9zID0gcG9zOwogCXJldHVybiAwOwogfQorRVhQT1JUX1NZTUJPTF9JRl9LVU5JVChh YV91bnBhY2tfdTE2X2NodW5rKTsKIAogLyogdW5wYWNrIGNvbnRyb2wgYnl0ZSAqLwotc3Rh dGljIGJvb2wgdW5wYWNrX1goc3RydWN0IGFhX2V4dCAqZSwgZW51bSBhYV9jb2RlIGNvZGUp CitWSVNJQkxFX0lGX0tVTklUIGJvb2wgYWFfdW5wYWNrX1goc3RydWN0IGFhX2V4dCAqZSwg ZW51bSBhYV9jb2RlIGNvZGUpCiB7Ci0JaWYgKCFpbmJvdW5kcyhlLCAxKSkKKwlpZiAoIWFh X2luYm91bmRzKGUsIDEpKQogCQlyZXR1cm4gZmFsc2U7CiAJaWYgKCoodTggKikgZS0+cG9z ICE9IGNvZGUpCiAJCXJldHVybiBmYWxzZTsKIAllLT5wb3MrKzsKIAlyZXR1cm4gdHJ1ZTsK IH0KK0VYUE9SVF9TWU1CT0xfSUZfS1VOSVQoYWFfdW5wYWNrX1gpOwogCiAvKioKLSAqIHVu cGFja19uYW1lWCAtIGNoZWNrIGlzIHRoZSBuZXh0IGVsZW1lbnQgaXMgb2YgdHlwZSBYIHdp dGggYSBuYW1lIG9mIEBuYW1lCisgKiBhYV91bnBhY2tfbmFtZVggLSBjaGVjayBpcyB0aGUg bmV4dCBlbGVtZW50IGlzIG9mIHR5cGUgWCB3aXRoIGEgbmFtZSBvZiBAbmFtZQogICogQGU6 IHNlcmlhbGl6ZWQgZGF0YSBleHRlbnQgaW5mb3JtYXRpb24gIChOT1QgTlVMTCkKICAqIEBj b2RlOiB0eXBlIGNvZGUKICAqIEBuYW1lOiBuYW1lIHRvIG1hdGNoIHRvIHRoZSBzZXJpYWxp emVkIGVsZW1lbnQuICAoTUFZQkUgTlVMTCkKQEAgLTI2Nyw3ICsyMzQsNyBAQCBzdGF0aWMg Ym9vbCB1bnBhY2tfWChzdHJ1Y3QgYWFfZXh0ICplLCBlbnVtIGFhX2NvZGUgY29kZSkKICAq CiAgKiBSZXR1cm5zOiBmYWxzZSBpZiBlaXRoZXIgbWF0Y2ggZmFpbHMsIHRoZSByZWFkIGhl YWQgZG9lcyBub3QgbW92ZQogICovCi1zdGF0aWMgYm9vbCB1bnBhY2tfbmFtZVgoc3RydWN0 IGFhX2V4dCAqZSwgZW51bSBhYV9jb2RlIGNvZGUsIGNvbnN0IGNoYXIgKm5hbWUpCitWSVNJ QkxFX0lGX0tVTklUIGJvb2wgYWFfdW5wYWNrX25hbWVYKHN0cnVjdCBhYV9leHQgKmUsIGVu dW0gYWFfY29kZSBjb2RlLCBjb25zdCBjaGFyICpuYW1lKQogewogCS8qCiAJICogTWF5IG5l ZWQgdG8gcmVzZXQgcG9zIGlmIG5hbWUgb3IgdHlwZSBkb2Vzbid0IG1hdGNoCkBAIC0yNzcs OSArMjQ0LDkgQEAgc3RhdGljIGJvb2wgdW5wYWNrX25hbWVYKHN0cnVjdCBhYV9leHQgKmUs IGVudW0gYWFfY29kZSBjb2RlLCBjb25zdCBjaGFyICpuYW1lKQogCSAqIENoZWNrIGZvciBw cmVzZW5jZSBvZiBhIHRhZ25hbWUsIGFuZCBpZiBwcmVzZW50IG5hbWUgc2l6ZQogCSAqIEFB X05BTUUgdGFnIHZhbHVlIGlzIGEgdTE2LgogCSAqLwotCWlmICh1bnBhY2tfWChlLCBBQV9O QU1FKSkgeworCWlmIChhYV91bnBhY2tfWChlLCBBQV9OQU1FKSkgewogCQljaGFyICp0YWcg PSBOVUxMOwotCQlzaXplX3Qgc2l6ZSA9IHVucGFja191MTZfY2h1bmsoZSwgJnRhZyk7CisJ CXNpemVfdCBzaXplID0gYWFfdW5wYWNrX3UxNl9jaHVuayhlLCAmdGFnKTsKIAkJLyogaWYg YSBuYW1lIGlzIHNwZWNpZmllZCBpdCBtdXN0IG1hdGNoLiBvdGhlcndpc2Ugc2tpcCB0YWcg Ki8KIAkJaWYgKG5hbWUgJiYgKCFzaXplIHx8IHRhZ1tzaXplLTFdICE9ICdcMCcgfHwgc3Ry Y21wKG5hbWUsIHRhZykpKQogCQkJZ290byBmYWlsOwpAQCAtMjg5LDIwICsyNTYsMjEgQEAg c3RhdGljIGJvb2wgdW5wYWNrX25hbWVYKHN0cnVjdCBhYV9leHQgKmUsIGVudW0gYWFfY29k ZSBjb2RlLCBjb25zdCBjaGFyICpuYW1lKQogCX0KIAogCS8qIG5vdyBjaGVjayBpZiB0eXBl IGNvZGUgbWF0Y2hlcyAqLwotCWlmICh1bnBhY2tfWChlLCBjb2RlKSkKKwlpZiAoYWFfdW5w YWNrX1goZSwgY29kZSkpCiAJCXJldHVybiB0cnVlOwogCiBmYWlsOgogCWUtPnBvcyA9IHBv czsKIAlyZXR1cm4gZmFsc2U7CiB9CitFWFBPUlRfU1lNQk9MX0lGX0tVTklUKGFhX3VucGFj a19uYW1lWCk7CiAKIHN0YXRpYyBib29sIHVucGFja191OChzdHJ1Y3QgYWFfZXh0ICplLCB1 OCAqZGF0YSwgY29uc3QgY2hhciAqbmFtZSkKIHsKIAl2b2lkICpwb3MgPSBlLT5wb3M7CiAK LQlpZiAodW5wYWNrX25hbWVYKGUsIEFBX1U4LCBuYW1lKSkgewotCQlpZiAoIWluYm91bmRz KGUsIHNpemVvZih1OCkpKQorCWlmIChhYV91bnBhY2tfbmFtZVgoZSwgQUFfVTgsIG5hbWUp KSB7CisJCWlmICghYWFfaW5ib3VuZHMoZSwgc2l6ZW9mKHU4KSkpCiAJCQlnb3RvIGZhaWw7 CiAJCWlmIChkYXRhKQogCQkJKmRhdGEgPSAqKCh1OCAqKWUtPnBvcyk7CkBAIC0zMTUsMTIg KzI4MywxMiBAQCBzdGF0aWMgYm9vbCB1bnBhY2tfdTgoc3RydWN0IGFhX2V4dCAqZSwgdTgg KmRhdGEsIGNvbnN0IGNoYXIgKm5hbWUpCiAJcmV0dXJuIGZhbHNlOwogfQogCi1zdGF0aWMg Ym9vbCB1bnBhY2tfdTMyKHN0cnVjdCBhYV9leHQgKmUsIHUzMiAqZGF0YSwgY29uc3QgY2hh ciAqbmFtZSkKK1ZJU0lCTEVfSUZfS1VOSVQgYm9vbCBhYV91bnBhY2tfdTMyKHN0cnVjdCBh YV9leHQgKmUsIHUzMiAqZGF0YSwgY29uc3QgY2hhciAqbmFtZSkKIHsKIAl2b2lkICpwb3Mg PSBlLT5wb3M7CiAKLQlpZiAodW5wYWNrX25hbWVYKGUsIEFBX1UzMiwgbmFtZSkpIHsKLQkJ aWYgKCFpbmJvdW5kcyhlLCBzaXplb2YodTMyKSkpCisJaWYgKGFhX3VucGFja19uYW1lWChl LCBBQV9VMzIsIG5hbWUpKSB7CisJCWlmICghYWFfaW5ib3VuZHMoZSwgc2l6ZW9mKHUzMikp KQogCQkJZ290byBmYWlsOwogCQlpZiAoZGF0YSkKIAkJCSpkYXRhID0gbGUzMl90b19jcHUo Z2V0X3VuYWxpZ25lZCgoX19sZTMyICopIGUtPnBvcykpOwpAQCAtMzMyLDEzICszMDAsMTQg QEAgc3RhdGljIGJvb2wgdW5wYWNrX3UzMihzdHJ1Y3QgYWFfZXh0ICplLCB1MzIgKmRhdGEs IGNvbnN0IGNoYXIgKm5hbWUpCiAJZS0+cG9zID0gcG9zOwogCXJldHVybiBmYWxzZTsKIH0K K0VYUE9SVF9TWU1CT0xfSUZfS1VOSVQoYWFfdW5wYWNrX3UzMik7CiAKLXN0YXRpYyBib29s IHVucGFja191NjQoc3RydWN0IGFhX2V4dCAqZSwgdTY0ICpkYXRhLCBjb25zdCBjaGFyICpu YW1lKQorVklTSUJMRV9JRl9LVU5JVCBib29sIGFhX3VucGFja191NjQoc3RydWN0IGFhX2V4 dCAqZSwgdTY0ICpkYXRhLCBjb25zdCBjaGFyICpuYW1lKQogewogCXZvaWQgKnBvcyA9IGUt PnBvczsKIAotCWlmICh1bnBhY2tfbmFtZVgoZSwgQUFfVTY0LCBuYW1lKSkgewotCQlpZiAo IWluYm91bmRzKGUsIHNpemVvZih1NjQpKSkKKwlpZiAoYWFfdW5wYWNrX25hbWVYKGUsIEFB X1U2NCwgbmFtZSkpIHsKKwkJaWYgKCFhYV9pbmJvdW5kcyhlLCBzaXplb2YodTY0KSkpCiAJ CQlnb3RvIGZhaWw7CiAJCWlmIChkYXRhKQogCQkJKmRhdGEgPSBsZTY0X3RvX2NwdShnZXRf dW5hbGlnbmVkKChfX2xlNjQgKikgZS0+cG9zKSk7CkBAIC0zNTAsMTQgKzMxOSwxNSBAQCBz dGF0aWMgYm9vbCB1bnBhY2tfdTY0KHN0cnVjdCBhYV9leHQgKmUsIHU2NCAqZGF0YSwgY29u c3QgY2hhciAqbmFtZSkKIAllLT5wb3MgPSBwb3M7CiAJcmV0dXJuIGZhbHNlOwogfQorRVhQ T1JUX1NZTUJPTF9JRl9LVU5JVChhYV91bnBhY2tfdTY0KTsKIAotc3RhdGljIHNpemVfdCB1 bnBhY2tfYXJyYXkoc3RydWN0IGFhX2V4dCAqZSwgY29uc3QgY2hhciAqbmFtZSkKK1ZJU0lC TEVfSUZfS1VOSVQgc2l6ZV90IGFhX3VucGFja19hcnJheShzdHJ1Y3QgYWFfZXh0ICplLCBj b25zdCBjaGFyICpuYW1lKQogewogCXZvaWQgKnBvcyA9IGUtPnBvczsKIAotCWlmICh1bnBh Y2tfbmFtZVgoZSwgQUFfQVJSQVksIG5hbWUpKSB7CisJaWYgKGFhX3VucGFja19uYW1lWChl LCBBQV9BUlJBWSwgbmFtZSkpIHsKIAkJaW50IHNpemU7Ci0JCWlmICghaW5ib3VuZHMoZSwg c2l6ZW9mKHUxNikpKQorCQlpZiAoIWFhX2luYm91bmRzKGUsIHNpemVvZih1MTYpKSkKIAkJ CWdvdG8gZmFpbDsKIAkJc2l6ZSA9IChpbnQpbGUxNl90b19jcHUoZ2V0X3VuYWxpZ25lZCgo X19sZTE2ICopIGUtPnBvcykpOwogCQllLT5wb3MgKz0gc2l6ZW9mKHUxNik7CkBAIC0zNjgs MTggKzMzOCwxOSBAQCBzdGF0aWMgc2l6ZV90IHVucGFja19hcnJheShzdHJ1Y3QgYWFfZXh0 ICplLCBjb25zdCBjaGFyICpuYW1lKQogCWUtPnBvcyA9IHBvczsKIAlyZXR1cm4gMDsKIH0K K0VYUE9SVF9TWU1CT0xfSUZfS1VOSVQoYWFfdW5wYWNrX2FycmF5KTsKIAotc3RhdGljIHNp emVfdCB1bnBhY2tfYmxvYihzdHJ1Y3QgYWFfZXh0ICplLCBjaGFyICoqYmxvYiwgY29uc3Qg Y2hhciAqbmFtZSkKK1ZJU0lCTEVfSUZfS1VOSVQgc2l6ZV90IGFhX3VucGFja19ibG9iKHN0 cnVjdCBhYV9leHQgKmUsIGNoYXIgKipibG9iLCBjb25zdCBjaGFyICpuYW1lKQogewogCXZv aWQgKnBvcyA9IGUtPnBvczsKIAotCWlmICh1bnBhY2tfbmFtZVgoZSwgQUFfQkxPQiwgbmFt ZSkpIHsKKwlpZiAoYWFfdW5wYWNrX25hbWVYKGUsIEFBX0JMT0IsIG5hbWUpKSB7CiAJCXUz MiBzaXplOwotCQlpZiAoIWluYm91bmRzKGUsIHNpemVvZih1MzIpKSkKKwkJaWYgKCFhYV9p bmJvdW5kcyhlLCBzaXplb2YodTMyKSkpCiAJCQlnb3RvIGZhaWw7CiAJCXNpemUgPSBsZTMy X3RvX2NwdShnZXRfdW5hbGlnbmVkKChfX2xlMzIgKikgZS0+cG9zKSk7CiAJCWUtPnBvcyAr PSBzaXplb2YodTMyKTsKLQkJaWYgKGluYm91bmRzKGUsIChzaXplX3QpIHNpemUpKSB7CisJ CWlmIChhYV9pbmJvdW5kcyhlLCAoc2l6ZV90KSBzaXplKSkgewogCQkJKmJsb2IgPSBlLT5w b3M7CiAJCQllLT5wb3MgKz0gc2l6ZTsKIAkJCXJldHVybiBzaXplOwpAQCAtMzkwLDE1ICsz NjEsMTYgQEAgc3RhdGljIHNpemVfdCB1bnBhY2tfYmxvYihzdHJ1Y3QgYWFfZXh0ICplLCBj aGFyICoqYmxvYiwgY29uc3QgY2hhciAqbmFtZSkKIAllLT5wb3MgPSBwb3M7CiAJcmV0dXJu IDA7CiB9CitFWFBPUlRfU1lNQk9MX0lGX0tVTklUKGFhX3VucGFja19ibG9iKTsKIAotc3Rh dGljIGludCB1bnBhY2tfc3RyKHN0cnVjdCBhYV9leHQgKmUsIGNvbnN0IGNoYXIgKipzdHJp bmcsIGNvbnN0IGNoYXIgKm5hbWUpCitWSVNJQkxFX0lGX0tVTklUIGludCBhYV91bnBhY2tf c3RyKHN0cnVjdCBhYV9leHQgKmUsIGNvbnN0IGNoYXIgKipzdHJpbmcsIGNvbnN0IGNoYXIg Km5hbWUpCiB7CiAJY2hhciAqc3JjX3N0cjsKIAlzaXplX3Qgc2l6ZSA9IDA7CiAJdm9pZCAq cG9zID0gZS0+cG9zOwogCSpzdHJpbmcgPSBOVUxMOwotCWlmICh1bnBhY2tfbmFtZVgoZSwg QUFfU1RSSU5HLCBuYW1lKSkgewotCQlzaXplID0gdW5wYWNrX3UxNl9jaHVuayhlLCAmc3Jj X3N0cik7CisJaWYgKGFhX3VucGFja19uYW1lWChlLCBBQV9TVFJJTkcsIG5hbWUpKSB7CisJ CXNpemUgPSBhYV91bnBhY2tfdTE2X2NodW5rKGUsICZzcmNfc3RyKTsKIAkJaWYgKHNpemUp IHsKIAkJCS8qIHN0cmluZ3MgYXJlIG51bGwgdGVybWluYXRlZCwgbGVuZ3RoIGlzIHNpemUg LSAxICovCiAJCQlpZiAoc3JjX3N0cltzaXplIC0gMV0gIT0gMCkKQEAgLTQxMywxMiArMzg1 LDEzIEBAIHN0YXRpYyBpbnQgdW5wYWNrX3N0cihzdHJ1Y3QgYWFfZXh0ICplLCBjb25zdCBj aGFyICoqc3RyaW5nLCBjb25zdCBjaGFyICpuYW1lKQogCWUtPnBvcyA9IHBvczsKIAlyZXR1 cm4gMDsKIH0KK0VYUE9SVF9TWU1CT0xfSUZfS1VOSVQoYWFfdW5wYWNrX3N0cik7CiAKLXN0 YXRpYyBpbnQgdW5wYWNrX3N0cmR1cChzdHJ1Y3QgYWFfZXh0ICplLCBjaGFyICoqc3RyaW5n LCBjb25zdCBjaGFyICpuYW1lKQorVklTSUJMRV9JRl9LVU5JVCBpbnQgYWFfdW5wYWNrX3N0 cmR1cChzdHJ1Y3QgYWFfZXh0ICplLCBjaGFyICoqc3RyaW5nLCBjb25zdCBjaGFyICpuYW1l KQogewogCWNvbnN0IGNoYXIgKnRtcDsKIAl2b2lkICpwb3MgPSBlLT5wb3M7Ci0JaW50IHJl cyA9IHVucGFja19zdHIoZSwgJnRtcCwgbmFtZSk7CisJaW50IHJlcyA9IGFhX3VucGFja19z dHIoZSwgJnRtcCwgbmFtZSk7CiAJKnN0cmluZyA9IE5VTEw7CiAKIAlpZiAoIXJlcykKQEAg LTQzMiw2ICs0MDUsNyBAQCBzdGF0aWMgaW50IHVucGFja19zdHJkdXAoc3RydWN0IGFhX2V4 dCAqZSwgY2hhciAqKnN0cmluZywgY29uc3QgY2hhciAqbmFtZSkKIAogCXJldHVybiByZXM7 CiB9CitFWFBPUlRfU1lNQk9MX0lGX0tVTklUKGFhX3VucGFja19zdHJkdXApOwogCiAKIC8q KgpAQCAtNDQ2LDcgKzQyMCw3IEBAIHN0YXRpYyBzdHJ1Y3QgYWFfZGZhICp1bnBhY2tfZGZh KHN0cnVjdCBhYV9leHQgKmUpCiAJc2l6ZV90IHNpemU7CiAJc3RydWN0IGFhX2RmYSAqZGZh ID0gTlVMTDsKIAotCXNpemUgPSB1bnBhY2tfYmxvYihlLCAmYmxvYiwgImFhZGZhIik7CisJ c2l6ZSA9IGFhX3VucGFja19ibG9iKGUsICZibG9iLCAiYWFkZmEiKTsKIAlpZiAoc2l6ZSkg ewogCQkvKgogCQkgKiBUaGUgZGZhIGlzIGFsaWduZWQgd2l0aCBpbiB0aGUgYmxvYiB0byA4 IGJ5dGVzCkBAIC00ODIsMTAgKzQ1NiwxMCBAQCBzdGF0aWMgYm9vbCB1bnBhY2tfdHJhbnNf dGFibGUoc3RydWN0IGFhX2V4dCAqZSwgc3RydWN0IGFhX3Byb2ZpbGUgKnByb2ZpbGUpCiAJ dm9pZCAqc2F2ZWRfcG9zID0gZS0+cG9zOwogCiAJLyogZXhlYyB0YWJsZSBpcyBvcHRpb25h bCAqLwotCWlmICh1bnBhY2tfbmFtZVgoZSwgQUFfU1RSVUNULCAieHRhYmxlIikpIHsKKwlp ZiAoYWFfdW5wYWNrX25hbWVYKGUsIEFBX1NUUlVDVCwgInh0YWJsZSIpKSB7CiAJCWludCBp LCBzaXplOwogCi0JCXNpemUgPSB1bnBhY2tfYXJyYXkoZSwgTlVMTCk7CisJCXNpemUgPSBh YV91bnBhY2tfYXJyYXkoZSwgTlVMTCk7CiAJCS8qIGN1cnJlbnRseSA0IGV4ZWMgYml0cyBh bmQgZW50cmllcyAwLTMgYXJlIHJlc2VydmVkIGl1cGN4ICovCiAJCWlmIChzaXplID4gMTYg LSA0KQogCQkJZ290byBmYWlsOwpAQCAtNDk3LDggKzQ3MSw4IEBAIHN0YXRpYyBib29sIHVu cGFja190cmFuc190YWJsZShzdHJ1Y3QgYWFfZXh0ICplLCBzdHJ1Y3QgYWFfcHJvZmlsZSAq cHJvZmlsZSkKIAkJcHJvZmlsZS0+ZmlsZS50cmFucy5zaXplID0gc2l6ZTsKIAkJZm9yIChp ID0gMDsgaSA8IHNpemU7IGkrKykgewogCQkJY2hhciAqc3RyOwotCQkJaW50IGMsIGosIHBv cywgc2l6ZTIgPSB1bnBhY2tfc3RyZHVwKGUsICZzdHIsIE5VTEwpOwotCQkJLyogdW5wYWNr X3N0cmR1cCB2ZXJpZmllcyB0aGF0IHRoZSBsYXN0IGNoYXJhY3RlciBpcworCQkJaW50IGMs IGosIHBvcywgc2l6ZTIgPSBhYV91bnBhY2tfc3RyZHVwKGUsICZzdHIsIE5VTEwpOworCQkJ LyogYWFfdW5wYWNrX3N0cmR1cCB2ZXJpZmllcyB0aGF0IHRoZSBsYXN0IGNoYXJhY3RlciBp cwogCQkJICogbnVsbCB0ZXJtaW5hdGlvbiBieXRlLgogCQkJICovCiAJCQlpZiAoIXNpemUy KQpAQCAtNTIxLDcgKzQ5NSw3IEBAIHN0YXRpYyBib29sIHVucGFja190cmFuc190YWJsZShz dHJ1Y3QgYWFfZXh0ICplLCBzdHJ1Y3QgYWFfcHJvZmlsZSAqcHJvZmlsZSkKIAkJCQkJZ290 byBmYWlsOwogCQkJCS8qIGJlZ2lubmluZyB3aXRoIDogcmVxdWlyZXMgYW4gZW1iZWRkZWQg XDAsCiAJCQkJICogdmVyaWZ5IHRoYXQgZXhhY3RseSAxIGludGVybmFsIFwwIGV4aXN0cwot CQkJCSAqIHRyYWlsaW5nIFwwIGFscmVhZHkgdmVyaWZpZWQgYnkgdW5wYWNrX3N0cmR1cAor CQkJCSAqIHRyYWlsaW5nIFwwIGFscmVhZHkgdmVyaWZpZWQgYnkgYWFfdW5wYWNrX3N0cmR1 cAogCQkJCSAqCiAJCQkJICogY29udmVydCBcMCBiYWNrIHRvIDogZm9yIGxhYmVsX3BhcnNl CiAJCQkJICovCkBAIC01MzMsOSArNTA3LDkgQEAgc3RhdGljIGJvb2wgdW5wYWNrX3RyYW5z X3RhYmxlKHN0cnVjdCBhYV9leHQgKmUsIHN0cnVjdCBhYV9wcm9maWxlICpwcm9maWxlKQog CQkJCS8qIGZhaWwgLSBhbGwgb3RoZXIgY2FzZXMgd2l0aCBlbWJlZGRlZCBcMCAqLwogCQkJ CWdvdG8gZmFpbDsKIAkJfQotCQlpZiAoIXVucGFja19uYW1lWChlLCBBQV9BUlJBWUVORCwg TlVMTCkpCisJCWlmICghYWFfdW5wYWNrX25hbWVYKGUsIEFBX0FSUkFZRU5ELCBOVUxMKSkK IAkJCWdvdG8gZmFpbDsKLQkJaWYgKCF1bnBhY2tfbmFtZVgoZSwgQUFfU1RSVUNURU5ELCBO VUxMKSkKKwkJaWYgKCFhYV91bnBhY2tfbmFtZVgoZSwgQUFfU1RSVUNURU5ELCBOVUxMKSkK IAkJCWdvdG8gZmFpbDsKIAl9CiAJcmV0dXJuIHRydWU7CkBAIC01NTAsMjEgKzUyNCwyMSBA QCBzdGF0aWMgYm9vbCB1bnBhY2tfeGF0dHJzKHN0cnVjdCBhYV9leHQgKmUsIHN0cnVjdCBh YV9wcm9maWxlICpwcm9maWxlKQogewogCXZvaWQgKnBvcyA9IGUtPnBvczsKIAotCWlmICh1 bnBhY2tfbmFtZVgoZSwgQUFfU1RSVUNULCAieGF0dHJzIikpIHsKKwlpZiAoYWFfdW5wYWNr X25hbWVYKGUsIEFBX1NUUlVDVCwgInhhdHRycyIpKSB7CiAJCWludCBpLCBzaXplOwogCi0J CXNpemUgPSB1bnBhY2tfYXJyYXkoZSwgTlVMTCk7CisJCXNpemUgPSBhYV91bnBhY2tfYXJy YXkoZSwgTlVMTCk7CiAJCXByb2ZpbGUtPnhhdHRyX2NvdW50ID0gc2l6ZTsKIAkJcHJvZmls ZS0+eGF0dHJzID0ga2NhbGxvYyhzaXplLCBzaXplb2YoY2hhciAqKSwgR0ZQX0tFUk5FTCk7 CiAJCWlmICghcHJvZmlsZS0+eGF0dHJzKQogCQkJZ290byBmYWlsOwogCQlmb3IgKGkgPSAw OyBpIDwgc2l6ZTsgaSsrKSB7Ci0JCQlpZiAoIXVucGFja19zdHJkdXAoZSwgJnByb2ZpbGUt PnhhdHRyc1tpXSwgTlVMTCkpCisJCQlpZiAoIWFhX3VucGFja19zdHJkdXAoZSwgJnByb2Zp bGUtPnhhdHRyc1tpXSwgTlVMTCkpCiAJCQkJZ290byBmYWlsOwogCQl9Ci0JCWlmICghdW5w YWNrX25hbWVYKGUsIEFBX0FSUkFZRU5ELCBOVUxMKSkKKwkJaWYgKCFhYV91bnBhY2tfbmFt ZVgoZSwgQUFfQVJSQVlFTkQsIE5VTEwpKQogCQkJZ290byBmYWlsOwotCQlpZiAoIXVucGFj a19uYW1lWChlLCBBQV9TVFJVQ1RFTkQsIE5VTEwpKQorCQlpZiAoIWFhX3VucGFja19uYW1l WChlLCBBQV9TVFJVQ1RFTkQsIE5VTEwpKQogCQkJZ290byBmYWlsOwogCX0KIApAQCAtNTgw LDggKzU1NCw4IEBAIHN0YXRpYyBib29sIHVucGFja19zZWNtYXJrKHN0cnVjdCBhYV9leHQg KmUsIHN0cnVjdCBhYV9wcm9maWxlICpwcm9maWxlKQogCXZvaWQgKnBvcyA9IGUtPnBvczsK IAlpbnQgaSwgc2l6ZTsKIAotCWlmICh1bnBhY2tfbmFtZVgoZSwgQUFfU1RSVUNULCAic2Vj bWFyayIpKSB7Ci0JCXNpemUgPSB1bnBhY2tfYXJyYXkoZSwgTlVMTCk7CisJaWYgKGFhX3Vu cGFja19uYW1lWChlLCBBQV9TVFJVQ1QsICJzZWNtYXJrIikpIHsKKwkJc2l6ZSA9IGFhX3Vu cGFja19hcnJheShlLCBOVUxMKTsKIAogCQlwcm9maWxlLT5zZWNtYXJrID0ga2NhbGxvYyhz aXplLCBzaXplb2Yoc3RydWN0IGFhX3NlY21hcmspLAogCQkJCQkgICBHRlBfS0VSTkVMKTsK QEAgLTU5NSwxMiArNTY5LDEyIEBAIHN0YXRpYyBib29sIHVucGFja19zZWNtYXJrKHN0cnVj dCBhYV9leHQgKmUsIHN0cnVjdCBhYV9wcm9maWxlICpwcm9maWxlKQogCQkJCWdvdG8gZmFp bDsKIAkJCWlmICghdW5wYWNrX3U4KGUsICZwcm9maWxlLT5zZWNtYXJrW2ldLmRlbnksIE5V TEwpKQogCQkJCWdvdG8gZmFpbDsKLQkJCWlmICghdW5wYWNrX3N0cmR1cChlLCAmcHJvZmls ZS0+c2VjbWFya1tpXS5sYWJlbCwgTlVMTCkpCisJCQlpZiAoIWFhX3VucGFja19zdHJkdXAo ZSwgJnByb2ZpbGUtPnNlY21hcmtbaV0ubGFiZWwsIE5VTEwpKQogCQkJCWdvdG8gZmFpbDsK IAkJfQotCQlpZiAoIXVucGFja19uYW1lWChlLCBBQV9BUlJBWUVORCwgTlVMTCkpCisJCWlm ICghYWFfdW5wYWNrX25hbWVYKGUsIEFBX0FSUkFZRU5ELCBOVUxMKSkKIAkJCWdvdG8gZmFp bDsKLQkJaWYgKCF1bnBhY2tfbmFtZVgoZSwgQUFfU1RSVUNURU5ELCBOVUxMKSkKKwkJaWYg KCFhYV91bnBhY2tfbmFtZVgoZSwgQUFfU1RSVUNURU5ELCBOVUxMKSkKIAkJCWdvdG8gZmFp bDsKIAl9CiAKQEAgLTYyNCwyNiArNTk4LDI2IEBAIHN0YXRpYyBib29sIHVucGFja19ybGlt aXRzKHN0cnVjdCBhYV9leHQgKmUsIHN0cnVjdCBhYV9wcm9maWxlICpwcm9maWxlKQogCXZv aWQgKnBvcyA9IGUtPnBvczsKIAogCS8qIHJsaW1pdHMgYXJlIG9wdGlvbmFsICovCi0JaWYg KHVucGFja19uYW1lWChlLCBBQV9TVFJVQ1QsICJybGltaXRzIikpIHsKKwlpZiAoYWFfdW5w YWNrX25hbWVYKGUsIEFBX1NUUlVDVCwgInJsaW1pdHMiKSkgewogCQlpbnQgaSwgc2l6ZTsK IAkJdTMyIHRtcCA9IDA7Ci0JCWlmICghdW5wYWNrX3UzMihlLCAmdG1wLCBOVUxMKSkKKwkJ aWYgKCFhYV91bnBhY2tfdTMyKGUsICZ0bXAsIE5VTEwpKQogCQkJZ290byBmYWlsOwogCQlw cm9maWxlLT5ybGltaXRzLm1hc2sgPSB0bXA7CiAKLQkJc2l6ZSA9IHVucGFja19hcnJheShl LCBOVUxMKTsKKwkJc2l6ZSA9IGFhX3VucGFja19hcnJheShlLCBOVUxMKTsKIAkJaWYgKHNp emUgPiBSTElNX05MSU1JVFMpCiAJCQlnb3RvIGZhaWw7CiAJCWZvciAoaSA9IDA7IGkgPCBz aXplOyBpKyspIHsKIAkJCXU2NCB0bXAyID0gMDsKIAkJCWludCBhID0gYWFfbWFwX3Jlc291 cmNlKGkpOwotCQkJaWYgKCF1bnBhY2tfdTY0KGUsICZ0bXAyLCBOVUxMKSkKKwkJCWlmICgh YWFfdW5wYWNrX3U2NChlLCAmdG1wMiwgTlVMTCkpCiAJCQkJZ290byBmYWlsOwogCQkJcHJv ZmlsZS0+cmxpbWl0cy5saW1pdHNbYV0ucmxpbV9tYXggPSB0bXAyOwogCQl9Ci0JCWlmICgh dW5wYWNrX25hbWVYKGUsIEFBX0FSUkFZRU5ELCBOVUxMKSkKKwkJaWYgKCFhYV91bnBhY2tf bmFtZVgoZSwgQUFfQVJSQVlFTkQsIE5VTEwpKQogCQkJZ290byBmYWlsOwotCQlpZiAoIXVu cGFja19uYW1lWChlLCBBQV9TVFJVQ1RFTkQsIE5VTEwpKQorCQlpZiAoIWFhX3VucGFja19u YW1lWChlLCBBQV9TVFJVQ1RFTkQsIE5VTEwpKQogCQkJZ290byBmYWlsOwogCX0KIAlyZXR1 cm4gdHJ1ZTsKQEAgLTY5MSw5ICs2NjUsOSBAQCBzdGF0aWMgc3RydWN0IGFhX3Byb2ZpbGUg KnVucGFja19wcm9maWxlKHN0cnVjdCBhYV9leHQgKmUsIGNoYXIgKipuc19uYW1lKQogCSpu c19uYW1lID0gTlVMTDsKIAogCS8qIGNoZWNrIHRoYXQgd2UgaGF2ZSB0aGUgcmlnaHQgc3Ry dWN0IGJlaW5nIHBhc3NlZCAqLwotCWlmICghdW5wYWNrX25hbWVYKGUsIEFBX1NUUlVDVCwg InByb2ZpbGUiKSkKKwlpZiAoIWFhX3VucGFja19uYW1lWChlLCBBQV9TVFJVQ1QsICJwcm9m aWxlIikpCiAJCWdvdG8gZmFpbDsKLQlpZiAoIXVucGFja19zdHIoZSwgJm5hbWUsIE5VTEwp KQorCWlmICghYWFfdW5wYWNrX3N0cihlLCAmbmFtZSwgTlVMTCkpCiAJCWdvdG8gZmFpbDsK IAlpZiAoKm5hbWUgPT0gJ1wwJykKIAkJZ290byBmYWlsOwpAQCAtNzEzLDEwICs2ODcsMTAg QEAgc3RhdGljIHN0cnVjdCBhYV9wcm9maWxlICp1bnBhY2tfcHJvZmlsZShzdHJ1Y3QgYWFf ZXh0ICplLCBjaGFyICoqbnNfbmFtZSkKIAkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7CiAK IAkvKiBwcm9maWxlIHJlbmFtaW5nIGlzIG9wdGlvbmFsICovCi0JKHZvaWQpIHVucGFja19z dHIoZSwgJnByb2ZpbGUtPnJlbmFtZSwgInJlbmFtZSIpOworCSh2b2lkKSBhYV91bnBhY2tf c3RyKGUsICZwcm9maWxlLT5yZW5hbWUsICJyZW5hbWUiKTsKIAogCS8qIGF0dGFjaG1lbnQg c3RyaW5nIGlzIG9wdGlvbmFsICovCi0JKHZvaWQpIHVucGFja19zdHIoZSwgJnByb2ZpbGUt PmF0dGFjaCwgImF0dGFjaCIpOworCSh2b2lkKSBhYV91bnBhY2tfc3RyKGUsICZwcm9maWxl LT5hdHRhY2gsICJhdHRhY2giKTsKIAogCS8qIHhtYXRjaCBpcyBvcHRpb25hbCBhbmQgbWF5 IGJlIE5VTEwgKi8KIAlwcm9maWxlLT54bWF0Y2ggPSB1bnBhY2tfZGZhKGUpOwpAQCAtNzI4 LDcgKzcwMiw3IEBAIHN0YXRpYyBzdHJ1Y3QgYWFfcHJvZmlsZSAqdW5wYWNrX3Byb2ZpbGUo c3RydWN0IGFhX2V4dCAqZSwgY2hhciAqKm5zX25hbWUpCiAJfQogCS8qIHhtYXRjaF9sZW4g aXMgbm90IG9wdGlvbmFsIGlmIHhtYXRjaCBpcyBzZXQgKi8KIAlpZiAocHJvZmlsZS0+eG1h dGNoKSB7Ci0JCWlmICghdW5wYWNrX3UzMihlLCAmdG1wLCBOVUxMKSkgeworCQlpZiAoIWFh X3VucGFja191MzIoZSwgJnRtcCwgTlVMTCkpIHsKIAkJCWluZm8gPSAibWlzc2luZyB4bWF0 Y2ggbGVuIjsKIAkJCWdvdG8gZmFpbDsKIAkJfQpAQCAtNzM2LDE1ICs3MTAsMTUgQEAgc3Rh dGljIHN0cnVjdCBhYV9wcm9maWxlICp1bnBhY2tfcHJvZmlsZShzdHJ1Y3QgYWFfZXh0ICpl LCBjaGFyICoqbnNfbmFtZSkKIAl9CiAKIAkvKiBkaXNjb25uZWN0ZWQgYXR0YWNobWVudCBz dHJpbmcgaXMgb3B0aW9uYWwgKi8KLQkodm9pZCkgdW5wYWNrX3N0cihlLCAmcHJvZmlsZS0+ ZGlzY29ubmVjdGVkLCAiZGlzY29ubmVjdGVkIik7CisJKHZvaWQpIGFhX3VucGFja19zdHIo ZSwgJnByb2ZpbGUtPmRpc2Nvbm5lY3RlZCwgImRpc2Nvbm5lY3RlZCIpOwogCiAJLyogcGVy IHByb2ZpbGUgZGVidWcgZmxhZ3MgKGNvbXBsYWluLCBhdWRpdCkgKi8KLQlpZiAoIXVucGFj a19uYW1lWChlLCBBQV9TVFJVQ1QsICJmbGFncyIpKSB7CisJaWYgKCFhYV91bnBhY2tfbmFt ZVgoZSwgQUFfU1RSVUNULCAiZmxhZ3MiKSkgewogCQlpbmZvID0gInByb2ZpbGUgbWlzc2lu ZyBmbGFncyI7CiAJCWdvdG8gZmFpbDsKIAl9CiAJaW5mbyA9ICJmYWlsZWQgdG8gdW5wYWNr IHByb2ZpbGUgZmxhZ3MiOwotCWlmICghdW5wYWNrX3UzMihlLCAmdG1wLCBOVUxMKSkKKwlp ZiAoIWFhX3VucGFja191MzIoZSwgJnRtcCwgTlVMTCkpCiAJCWdvdG8gZmFpbDsKIAlpZiAo dG1wICYgUEFDS0VEX0ZMQUdfSEFUKQogCQlwcm9maWxlLT5sYWJlbC5mbGFncyB8PSBGTEFH X0hBVDsKQEAgLTc1Miw3ICs3MjYsNyBAQCBzdGF0aWMgc3RydWN0IGFhX3Byb2ZpbGUgKnVu cGFja19wcm9maWxlKHN0cnVjdCBhYV9leHQgKmUsIGNoYXIgKipuc19uYW1lKQogCQlwcm9m aWxlLT5sYWJlbC5mbGFncyB8PSBGTEFHX0RFQlVHMTsKIAlpZiAodG1wICYgUEFDS0VEX0ZM QUdfREVCVUcyKQogCQlwcm9maWxlLT5sYWJlbC5mbGFncyB8PSBGTEFHX0RFQlVHMjsKLQlp ZiAoIXVucGFja191MzIoZSwgJnRtcCwgTlVMTCkpCisJaWYgKCFhYV91bnBhY2tfdTMyKGUs ICZ0bXAsIE5VTEwpKQogCQlnb3RvIGZhaWw7CiAJaWYgKHRtcCA9PSBQQUNLRURfTU9ERV9D T01QTEFJTiB8fCAoZS0+dmVyc2lvbiAmIEZPUkNFX0NPTVBMQUlOX0ZMQUcpKSB7CiAJCXBy b2ZpbGUtPm1vZGUgPSBBUFBBUk1PUl9DT01QTEFJTjsKQEAgLTc2NiwxNiArNzQwLDE2IEBA IHN0YXRpYyBzdHJ1Y3QgYWFfcHJvZmlsZSAqdW5wYWNrX3Byb2ZpbGUoc3RydWN0IGFhX2V4 dCAqZSwgY2hhciAqKm5zX25hbWUpCiAJfSBlbHNlIHsKIAkJZ290byBmYWlsOwogCX0KLQlp ZiAoIXVucGFja191MzIoZSwgJnRtcCwgTlVMTCkpCisJaWYgKCFhYV91bnBhY2tfdTMyKGUs ICZ0bXAsIE5VTEwpKQogCQlnb3RvIGZhaWw7CiAJaWYgKHRtcCkKIAkJcHJvZmlsZS0+YXVk aXQgPSBBVURJVF9BTEw7CiAKLQlpZiAoIXVucGFja19uYW1lWChlLCBBQV9TVFJVQ1RFTkQs IE5VTEwpKQorCWlmICghYWFfdW5wYWNrX25hbWVYKGUsIEFBX1NUUlVDVEVORCwgTlVMTCkp CiAJCWdvdG8gZmFpbDsKIAogCS8qIHBhdGhfZmxhZ3MgaXMgb3B0aW9uYWwgKi8KLQlpZiAo dW5wYWNrX3UzMihlLCAmcHJvZmlsZS0+cGF0aF9mbGFncywgInBhdGhfZmxhZ3MiKSkKKwlp ZiAoYWFfdW5wYWNrX3UzMihlLCAmcHJvZmlsZS0+cGF0aF9mbGFncywgInBhdGhfZmxhZ3Mi KSkKIAkJcHJvZmlsZS0+cGF0aF9mbGFncyB8PSBwcm9maWxlLT5sYWJlbC5mbGFncyAmCiAJ CQlQQVRIX01FRElBVEVfREVMRVRFRDsKIAllbHNlCkBAIC03ODMsMzggKzc1NywzOCBAQCBz dGF0aWMgc3RydWN0IGFhX3Byb2ZpbGUgKnVucGFja19wcm9maWxlKHN0cnVjdCBhYV9leHQg KmUsIGNoYXIgKipuc19uYW1lKQogCQlwcm9maWxlLT5wYXRoX2ZsYWdzID0gUEFUSF9NRURJ QVRFX0RFTEVURUQ7CiAKIAlpbmZvID0gImZhaWxlZCB0byB1bnBhY2sgcHJvZmlsZSBjYXBh YmlsaXRpZXMiOwotCWlmICghdW5wYWNrX3UzMihlLCAmKHByb2ZpbGUtPmNhcHMuYWxsb3cu Y2FwWzBdKSwgTlVMTCkpCisJaWYgKCFhYV91bnBhY2tfdTMyKGUsICYocHJvZmlsZS0+Y2Fw cy5hbGxvdy5jYXBbMF0pLCBOVUxMKSkKIAkJZ290byBmYWlsOwotCWlmICghdW5wYWNrX3Uz MihlLCAmKHByb2ZpbGUtPmNhcHMuYXVkaXQuY2FwWzBdKSwgTlVMTCkpCisJaWYgKCFhYV91 bnBhY2tfdTMyKGUsICYocHJvZmlsZS0+Y2Fwcy5hdWRpdC5jYXBbMF0pLCBOVUxMKSkKIAkJ Z290byBmYWlsOwotCWlmICghdW5wYWNrX3UzMihlLCAmKHByb2ZpbGUtPmNhcHMucXVpZXQu Y2FwWzBdKSwgTlVMTCkpCisJaWYgKCFhYV91bnBhY2tfdTMyKGUsICYocHJvZmlsZS0+Y2Fw cy5xdWlldC5jYXBbMF0pLCBOVUxMKSkKIAkJZ290byBmYWlsOwotCWlmICghdW5wYWNrX3Uz MihlLCAmdG1wY2FwLmNhcFswXSwgTlVMTCkpCisJaWYgKCFhYV91bnBhY2tfdTMyKGUsICZ0 bXBjYXAuY2FwWzBdLCBOVUxMKSkKIAkJZ290byBmYWlsOwogCiAJaW5mbyA9ICJmYWlsZWQg dG8gdW5wYWNrIHVwcGVyIHByb2ZpbGUgY2FwYWJpbGl0aWVzIjsKLQlpZiAodW5wYWNrX25h bWVYKGUsIEFBX1NUUlVDVCwgImNhcHM2NCIpKSB7CisJaWYgKGFhX3VucGFja19uYW1lWChl LCBBQV9TVFJVQ1QsICJjYXBzNjQiKSkgewogCQkvKiBvcHRpb25hbCB1cHBlciBoYWxmIG9m IDY0IGJpdCBjYXBzICovCi0JCWlmICghdW5wYWNrX3UzMihlLCAmKHByb2ZpbGUtPmNhcHMu YWxsb3cuY2FwWzFdKSwgTlVMTCkpCisJCWlmICghYWFfdW5wYWNrX3UzMihlLCAmKHByb2Zp bGUtPmNhcHMuYWxsb3cuY2FwWzFdKSwgTlVMTCkpCiAJCQlnb3RvIGZhaWw7Ci0JCWlmICgh dW5wYWNrX3UzMihlLCAmKHByb2ZpbGUtPmNhcHMuYXVkaXQuY2FwWzFdKSwgTlVMTCkpCisJ CWlmICghYWFfdW5wYWNrX3UzMihlLCAmKHByb2ZpbGUtPmNhcHMuYXVkaXQuY2FwWzFdKSwg TlVMTCkpCiAJCQlnb3RvIGZhaWw7Ci0JCWlmICghdW5wYWNrX3UzMihlLCAmKHByb2ZpbGUt PmNhcHMucXVpZXQuY2FwWzFdKSwgTlVMTCkpCisJCWlmICghYWFfdW5wYWNrX3UzMihlLCAm KHByb2ZpbGUtPmNhcHMucXVpZXQuY2FwWzFdKSwgTlVMTCkpCiAJCQlnb3RvIGZhaWw7Ci0J CWlmICghdW5wYWNrX3UzMihlLCAmKHRtcGNhcC5jYXBbMV0pLCBOVUxMKSkKKwkJaWYgKCFh YV91bnBhY2tfdTMyKGUsICYodG1wY2FwLmNhcFsxXSksIE5VTEwpKQogCQkJZ290byBmYWls OwotCQlpZiAoIXVucGFja19uYW1lWChlLCBBQV9TVFJVQ1RFTkQsIE5VTEwpKQorCQlpZiAo IWFhX3VucGFja19uYW1lWChlLCBBQV9TVFJVQ1RFTkQsIE5VTEwpKQogCQkJZ290byBmYWls OwogCX0KIAogCWluZm8gPSAiZmFpbGVkIHRvIHVucGFjayBleHRlbmRlZCBwcm9maWxlIGNh cGFiaWxpdGllcyI7Ci0JaWYgKHVucGFja19uYW1lWChlLCBBQV9TVFJVQ1QsICJjYXBzeCIp KSB7CisJaWYgKGFhX3VucGFja19uYW1lWChlLCBBQV9TVFJVQ1QsICJjYXBzeCIpKSB7CiAJ CS8qIG9wdGlvbmFsIGV4dGVuZGVkIGNhcHMgbWVkaWF0aW9uIG1hc2sgKi8KLQkJaWYgKCF1 bnBhY2tfdTMyKGUsICYocHJvZmlsZS0+Y2Fwcy5leHRlbmRlZC5jYXBbMF0pLCBOVUxMKSkK KwkJaWYgKCFhYV91bnBhY2tfdTMyKGUsICYocHJvZmlsZS0+Y2Fwcy5leHRlbmRlZC5jYXBb MF0pLCBOVUxMKSkKIAkJCWdvdG8gZmFpbDsKLQkJaWYgKCF1bnBhY2tfdTMyKGUsICYocHJv ZmlsZS0+Y2Fwcy5leHRlbmRlZC5jYXBbMV0pLCBOVUxMKSkKKwkJaWYgKCFhYV91bnBhY2tf dTMyKGUsICYocHJvZmlsZS0+Y2Fwcy5leHRlbmRlZC5jYXBbMV0pLCBOVUxMKSkKIAkJCWdv dG8gZmFpbDsKLQkJaWYgKCF1bnBhY2tfbmFtZVgoZSwgQUFfU1RSVUNURU5ELCBOVUxMKSkK KwkJaWYgKCFhYV91bnBhY2tfbmFtZVgoZSwgQUFfU1RSVUNURU5ELCBOVUxMKSkKIAkJCWdv dG8gZmFpbDsKIAl9CiAKQEAgLTgzMyw3ICs4MDcsNyBAQCBzdGF0aWMgc3RydWN0IGFhX3By b2ZpbGUgKnVucGFja19wcm9maWxlKHN0cnVjdCBhYV9leHQgKmUsIGNoYXIgKipuc19uYW1l KQogCQlnb3RvIGZhaWw7CiAJfQogCi0JaWYgKHVucGFja19uYW1lWChlLCBBQV9TVFJVQ1Qs ICJwb2xpY3lkYiIpKSB7CisJaWYgKGFhX3VucGFja19uYW1lWChlLCBBQV9TVFJVQ1QsICJw b2xpY3lkYiIpKSB7CiAJCS8qIGdlbmVyaWMgcG9saWN5IGRmYSAtIG9wdGlvbmFsIGFuZCBt YXkgYmUgTlVMTCAqLwogCQlpbmZvID0gImZhaWxlZCB0byB1bnBhY2sgcG9saWN5ZGIiOwog CQlwcm9maWxlLT5wb2xpY3kuZGZhID0gdW5wYWNrX2RmYShlKTsKQEAgLTg0NSw3ICs4MTks NyBAQCBzdGF0aWMgc3RydWN0IGFhX3Byb2ZpbGUgKnVucGFja19wcm9maWxlKHN0cnVjdCBh YV9leHQgKmUsIGNoYXIgKipuc19uYW1lKQogCQkJZXJyb3IgPSAtRVBST1RPOwogCQkJZ290 byBmYWlsOwogCQl9Ci0JCWlmICghdW5wYWNrX3UzMihlLCAmcHJvZmlsZS0+cG9saWN5LnN0 YXJ0WzBdLCAic3RhcnQiKSkKKwkJaWYgKCFhYV91bnBhY2tfdTMyKGUsICZwcm9maWxlLT5w b2xpY3kuc3RhcnRbMF0sICJzdGFydCIpKQogCQkJLyogZGVmYXVsdCBzdGFydCBzdGF0ZSAq LwogCQkJcHJvZmlsZS0+cG9saWN5LnN0YXJ0WzBdID0gREZBX1NUQVJUOwogCQkvKiBzZXR1 cCBjbGFzcyBpbmRleCAqLwpAQCAtODU1LDcgKzgyOSw3IEBAIHN0YXRpYyBzdHJ1Y3QgYWFf cHJvZmlsZSAqdW5wYWNrX3Byb2ZpbGUoc3RydWN0IGFhX2V4dCAqZSwgY2hhciAqKm5zX25h bWUpCiAJCQkJCSAgICBwcm9maWxlLT5wb2xpY3kuc3RhcnRbMF0sCiAJCQkJCSAgICBpKTsK IAkJfQotCQlpZiAoIXVucGFja19uYW1lWChlLCBBQV9TVFJVQ1RFTkQsIE5VTEwpKQorCQlp ZiAoIWFhX3VucGFja19uYW1lWChlLCBBQV9TVFJVQ1RFTkQsIE5VTEwpKQogCQkJZ290byBm YWlsOwogCX0gZWxzZQogCQlwcm9maWxlLT5wb2xpY3kuZGZhID0gYWFfZ2V0X2RmYShudWxs ZGZhKTsKQEAgLTg2OCw3ICs4NDIsNyBAQCBzdGF0aWMgc3RydWN0IGFhX3Byb2ZpbGUgKnVu cGFja19wcm9maWxlKHN0cnVjdCBhYV9leHQgKmUsIGNoYXIgKipuc19uYW1lKQogCQlpbmZv ID0gImZhaWxlZCB0byB1bnBhY2sgcHJvZmlsZSBmaWxlIHJ1bGVzIjsKIAkJZ290byBmYWls OwogCX0gZWxzZSBpZiAocHJvZmlsZS0+ZmlsZS5kZmEpIHsKLQkJaWYgKCF1bnBhY2tfdTMy KGUsICZwcm9maWxlLT5maWxlLnN0YXJ0LCAiZGZhX3N0YXJ0IikpCisJCWlmICghYWFfdW5w YWNrX3UzMihlLCAmcHJvZmlsZS0+ZmlsZS5zdGFydCwgImRmYV9zdGFydCIpKQogCQkJLyog ZGVmYXVsdCBzdGFydCBzdGF0ZSAqLwogCQkJcHJvZmlsZS0+ZmlsZS5zdGFydCA9IERGQV9T VEFSVDsKIAl9IGVsc2UgaWYgKHByb2ZpbGUtPnBvbGljeS5kZmEgJiYKQEAgLTg4Myw3ICs4 NTcsNyBAQCBzdGF0aWMgc3RydWN0IGFhX3Byb2ZpbGUgKnVucGFja19wcm9maWxlKHN0cnVj dCBhYV9leHQgKmUsIGNoYXIgKipuc19uYW1lKQogCQlnb3RvIGZhaWw7CiAJfQogCi0JaWYg KHVucGFja19uYW1lWChlLCBBQV9TVFJVQ1QsICJkYXRhIikpIHsKKwlpZiAoYWFfdW5wYWNr X25hbWVYKGUsIEFBX1NUUlVDVCwgImRhdGEiKSkgewogCQlpbmZvID0gIm91dCBvZiBtZW1v cnkiOwogCQlwcm9maWxlLT5kYXRhID0ga3phbGxvYyhzaXplb2YoKnByb2ZpbGUtPmRhdGEp LCBHRlBfS0VSTkVMKTsKIAkJaWYgKCFwcm9maWxlLT5kYXRhKQpAQCAtOTAxLDcgKzg3NSw3 IEBAIHN0YXRpYyBzdHJ1Y3QgYWFfcHJvZmlsZSAqdW5wYWNrX3Byb2ZpbGUoc3RydWN0IGFh X2V4dCAqZSwgY2hhciAqKm5zX25hbWUpCiAJCQlnb3RvIGZhaWw7CiAJCX0KIAotCQl3aGls ZSAodW5wYWNrX3N0cmR1cChlLCAma2V5LCBOVUxMKSkgeworCQl3aGlsZSAoYWFfdW5wYWNr X3N0cmR1cChlLCAma2V5LCBOVUxMKSkgewogCQkJZGF0YSA9IGt6YWxsb2Moc2l6ZW9mKCpk YXRhKSwgR0ZQX0tFUk5FTCk7CiAJCQlpZiAoIWRhdGEpIHsKIAkJCQlrZnJlZV9zZW5zaXRp dmUoa2V5KTsKQEAgLTkwOSw3ICs4ODMsNyBAQCBzdGF0aWMgc3RydWN0IGFhX3Byb2ZpbGUg KnVucGFja19wcm9maWxlKHN0cnVjdCBhYV9leHQgKmUsIGNoYXIgKipuc19uYW1lKQogCQkJ fQogCiAJCQlkYXRhLT5rZXkgPSBrZXk7Ci0JCQlkYXRhLT5zaXplID0gdW5wYWNrX2Jsb2Io ZSwgJmRhdGEtPmRhdGEsIE5VTEwpOworCQkJZGF0YS0+c2l6ZSA9IGFhX3VucGFja19ibG9i KGUsICZkYXRhLT5kYXRhLCBOVUxMKTsKIAkJCWRhdGEtPmRhdGEgPSBrdm1lbWR1cChkYXRh LT5kYXRhLCBkYXRhLT5zaXplKTsKIAkJCWlmIChkYXRhLT5zaXplICYmICFkYXRhLT5kYXRh KSB7CiAJCQkJa2ZyZWVfc2Vuc2l0aXZlKGRhdGEtPmtleSk7CkBAIC05MjEsMTMgKzg5NSwx MyBAQCBzdGF0aWMgc3RydWN0IGFhX3Byb2ZpbGUgKnVucGFja19wcm9maWxlKHN0cnVjdCBh YV9leHQgKmUsIGNoYXIgKipuc19uYW1lKQogCQkJCQkgICAgICAgcHJvZmlsZS0+ZGF0YS0+ cCk7CiAJCX0KIAotCQlpZiAoIXVucGFja19uYW1lWChlLCBBQV9TVFJVQ1RFTkQsIE5VTEwp KSB7CisJCWlmICghYWFfdW5wYWNrX25hbWVYKGUsIEFBX1NUUlVDVEVORCwgTlVMTCkpIHsK IAkJCWluZm8gPSAiZmFpbGVkIHRvIHVucGFjayBlbmQgb2Yga2V5LCB2YWx1ZSBkYXRhIHRh YmxlIjsKIAkJCWdvdG8gZmFpbDsKIAkJfQogCX0KIAotCWlmICghdW5wYWNrX25hbWVYKGUs IEFBX1NUUlVDVEVORCwgTlVMTCkpIHsKKwlpZiAoIWFhX3VucGFja19uYW1lWChlLCBBQV9T VFJVQ1RFTkQsIE5VTEwpKSB7CiAJCWluZm8gPSAiZmFpbGVkIHRvIHVucGFjayBlbmQgb2Yg cHJvZmlsZSI7CiAJCWdvdG8gZmFpbDsKIAl9CkBAIC05NjAsNyArOTM0LDcgQEAgc3RhdGlj IGludCB2ZXJpZnlfaGVhZGVyKHN0cnVjdCBhYV9leHQgKmUsIGludCByZXF1aXJlZCwgY29u c3QgY2hhciAqKm5zKQogCSpucyA9IE5VTEw7CiAKIAkvKiBnZXQgdGhlIGludGVyZmFjZSB2 ZXJzaW9uICovCi0JaWYgKCF1bnBhY2tfdTMyKGUsICZlLT52ZXJzaW9uLCAidmVyc2lvbiIp KSB7CisJaWYgKCFhYV91bnBhY2tfdTMyKGUsICZlLT52ZXJzaW9uLCAidmVyc2lvbiIpKSB7 CiAJCWlmIChyZXF1aXJlZCkgewogCQkJYXVkaXRfaWZhY2UoTlVMTCwgTlVMTCwgTlVMTCwg ImludmFsaWQgcHJvZmlsZSBmb3JtYXQiLAogCQkJCSAgICBlLCBlcnJvcik7CkBAIC05Nzks NyArOTUzLDcgQEAgc3RhdGljIGludCB2ZXJpZnlfaGVhZGVyKHN0cnVjdCBhYV9leHQgKmUs IGludCByZXF1aXJlZCwgY29uc3QgY2hhciAqKm5zKQogCX0KIAogCS8qIHJlYWQgdGhlIG5h bWVzcGFjZSBpZiBwcmVzZW50ICovCi0JaWYgKHVucGFja19zdHIoZSwgJm5hbWUsICJuYW1l c3BhY2UiKSkgeworCWlmIChhYV91bnBhY2tfc3RyKGUsICZuYW1lLCAibmFtZXNwYWNlIikp IHsKIAkJaWYgKCpuYW1lID09ICdcMCcpIHsKIAkJCWF1ZGl0X2lmYWNlKE5VTEwsIE5VTEws IE5VTEwsICJpbnZhbGlkIG5hbWVzcGFjZSBuYW1lIiwKIAkJCQkgICAgZSwgZXJyb3IpOwpA QCAtMTI1MSw3ICsxMjI1LDMgQEAgaW50IGFhX3VucGFjayhzdHJ1Y3QgYWFfbG9hZGRhdGEg KnVkYXRhLCBzdHJ1Y3QgbGlzdF9oZWFkICpsaCwKIAogCXJldHVybiBlcnJvcjsKIH0KLQot I2lmZGVmIENPTkZJR19TRUNVUklUWV9BUFBBUk1PUl9LVU5JVF9URVNUCi0jaW5jbHVkZSAi cG9saWN5X3VucGFja190ZXN0LmMiCi0jZW5kaWYgLyogQ09ORklHX1NFQ1VSSVRZX0FQUEFS TU9SX0tVTklUX1RFU1QgKi8KZGlmZiAtLWdpdCBhL3NlY3VyaXR5L2FwcGFybW9yL3BvbGlj eV91bnBhY2tfdGVzdC5jIGIvc2VjdXJpdHkvYXBwYXJtb3IvcG9saWN5X3VucGFja190ZXN0 LmMKaW5kZXggMGE5NjliMmUwM2RiLi5mMjVjZjJhMDIzZDUgMTAwNjQ0Ci0tLSBhL3NlY3Vy aXR5L2FwcGFybW9yL3BvbGljeV91bnBhY2tfdGVzdC5jCisrKyBiL3NlY3VyaXR5L2FwcGFy bW9yL3BvbGljeV91bnBhY2tfdGVzdC5jCkBAIC00LDYgKzQsNyBAQAogICovCiAKICNpbmNs dWRlIDxrdW5pdC90ZXN0Lmg+CisjaW5jbHVkZSA8a3VuaXQvdmlzaWJpbGl0eS5oPgogCiAj aW5jbHVkZSAiaW5jbHVkZS9wb2xpY3kuaCIKICNpbmNsdWRlICJpbmNsdWRlL3BvbGljeV91 bnBhY2suaCIKQEAgLTQzLDYgKzQ0LDggQEAKICNkZWZpbmUgVEVTVF9BUlJBWV9CVUZfT0ZG U0VUIFwKIAkoVEVTVF9OQU1FRF9BUlJBWV9CVUZfT0ZGU0VUICsgMyArIHN0cmxlbihURVNU X0FSUkFZX05BTUUpICsgMSkKIAorTU9EVUxFX0lNUE9SVF9OUyhFWFBPUlRFRF9GT1JfS1VO SVRfVEVTVElORyk7CisKIHN0cnVjdCBwb2xpY3lfdW5wYWNrX2ZpeHR1cmUgewogCXN0cnVj dCBhYV9leHQgKmU7CiAJc2l6ZV90IGVfc2l6ZTsKQEAgLTEyNSwxNiArMTI4LDE2IEBAIHN0 YXRpYyB2b2lkIHBvbGljeV91bnBhY2tfdGVzdF9pbmJvdW5kc193aGVuX2luYm91bmRzKHN0 cnVjdCBrdW5pdCAqdGVzdCkKIHsKIAlzdHJ1Y3QgcG9saWN5X3VucGFja19maXh0dXJlICpw dWYgPSB0ZXN0LT5wcml2OwogCi0JS1VOSVRfRVhQRUNUX1RSVUUodGVzdCwgaW5ib3VuZHMo cHVmLT5lLCAwKSk7Ci0JS1VOSVRfRVhQRUNUX1RSVUUodGVzdCwgaW5ib3VuZHMocHVmLT5l LCBwdWYtPmVfc2l6ZSAvIDIpKTsKLQlLVU5JVF9FWFBFQ1RfVFJVRSh0ZXN0LCBpbmJvdW5k cyhwdWYtPmUsIHB1Zi0+ZV9zaXplKSk7CisJS1VOSVRfRVhQRUNUX1RSVUUodGVzdCwgYWFf aW5ib3VuZHMocHVmLT5lLCAwKSk7CisJS1VOSVRfRVhQRUNUX1RSVUUodGVzdCwgYWFfaW5i b3VuZHMocHVmLT5lLCBwdWYtPmVfc2l6ZSAvIDIpKTsKKwlLVU5JVF9FWFBFQ1RfVFJVRSh0 ZXN0LCBhYV9pbmJvdW5kcyhwdWYtPmUsIHB1Zi0+ZV9zaXplKSk7CiB9CiAKIHN0YXRpYyB2 b2lkIHBvbGljeV91bnBhY2tfdGVzdF9pbmJvdW5kc193aGVuX291dF9vZl9ib3VuZHMoc3Ry dWN0IGt1bml0ICp0ZXN0KQogewogCXN0cnVjdCBwb2xpY3lfdW5wYWNrX2ZpeHR1cmUgKnB1 ZiA9IHRlc3QtPnByaXY7CiAKLQlLVU5JVF9FWFBFQ1RfRkFMU0UodGVzdCwgaW5ib3VuZHMo cHVmLT5lLCBwdWYtPmVfc2l6ZSArIDEpKTsKKwlLVU5JVF9FWFBFQ1RfRkFMU0UodGVzdCwg YWFfaW5ib3VuZHMocHVmLT5lLCBwdWYtPmVfc2l6ZSArIDEpKTsKIH0KIAogc3RhdGljIHZv aWQgcG9saWN5X3VucGFja190ZXN0X3VucGFja19hcnJheV93aXRoX251bGxfbmFtZShzdHJ1 Y3Qga3VuaXQgKnRlc3QpCkBAIC0xNDQsNyArMTQ3LDcgQEAgc3RhdGljIHZvaWQgcG9saWN5 X3VucGFja190ZXN0X3VucGFja19hcnJheV93aXRoX251bGxfbmFtZShzdHJ1Y3Qga3VuaXQg KnRlc3QpCiAKIAlwdWYtPmUtPnBvcyArPSBURVNUX0FSUkFZX0JVRl9PRkZTRVQ7CiAKLQlh cnJheV9zaXplID0gdW5wYWNrX2FycmF5KHB1Zi0+ZSwgTlVMTCk7CisJYXJyYXlfc2l6ZSA9 IGFhX3VucGFja19hcnJheShwdWYtPmUsIE5VTEwpOwogCiAJS1VOSVRfRVhQRUNUX0VRKHRl c3QsIGFycmF5X3NpemUsICh1MTYpVEVTVF9BUlJBWV9TSVpFKTsKIAlLVU5JVF9FWFBFQ1Rf UFRSX0VRKHRlc3QsIHB1Zi0+ZS0+cG9zLApAQCAtMTU5LDcgKzE2Miw3IEBAIHN0YXRpYyB2 b2lkIHBvbGljeV91bnBhY2tfdGVzdF91bnBhY2tfYXJyYXlfd2l0aF9uYW1lKHN0cnVjdCBr dW5pdCAqdGVzdCkKIAogCXB1Zi0+ZS0+cG9zICs9IFRFU1RfTkFNRURfQVJSQVlfQlVGX09G RlNFVDsKIAotCWFycmF5X3NpemUgPSB1bnBhY2tfYXJyYXkocHVmLT5lLCBuYW1lKTsKKwlh cnJheV9zaXplID0gYWFfdW5wYWNrX2FycmF5KHB1Zi0+ZSwgbmFtZSk7CiAKIAlLVU5JVF9F WFBFQ1RfRVEodGVzdCwgYXJyYXlfc2l6ZSwgKHUxNilURVNUX0FSUkFZX1NJWkUpOwogCUtV TklUX0VYUEVDVF9QVFJfRVEodGVzdCwgcHVmLT5lLT5wb3MsCkBAIC0xNzUsNyArMTc4LDcg QEAgc3RhdGljIHZvaWQgcG9saWN5X3VucGFja190ZXN0X3VucGFja19hcnJheV9vdXRfb2Zf Ym91bmRzKHN0cnVjdCBrdW5pdCAqdGVzdCkKIAlwdWYtPmUtPnBvcyArPSBURVNUX05BTUVE X0FSUkFZX0JVRl9PRkZTRVQ7CiAJcHVmLT5lLT5lbmQgPSBwdWYtPmUtPnN0YXJ0ICsgVEVT VF9BUlJBWV9CVUZfT0ZGU0VUICsgc2l6ZW9mKHUxNik7CiAKLQlhcnJheV9zaXplID0gdW5w YWNrX2FycmF5KHB1Zi0+ZSwgbmFtZSk7CisJYXJyYXlfc2l6ZSA9IGFhX3VucGFja19hcnJh eShwdWYtPmUsIG5hbWUpOwogCiAJS1VOSVRfRVhQRUNUX0VRKHRlc3QsIGFycmF5X3NpemUs IDApOwogCUtVTklUX0VYUEVDVF9QVFJfRVEodGVzdCwgcHVmLT5lLT5wb3MsCkBAIC0xODks NyArMTkyLDcgQEAgc3RhdGljIHZvaWQgcG9saWN5X3VucGFja190ZXN0X3VucGFja19ibG9i X3dpdGhfbnVsbF9uYW1lKHN0cnVjdCBrdW5pdCAqdGVzdCkKIAlzaXplX3Qgc2l6ZTsKIAog CXB1Zi0+ZS0+cG9zICs9IFRFU1RfQkxPQl9CVUZfT0ZGU0VUOwotCXNpemUgPSB1bnBhY2tf YmxvYihwdWYtPmUsICZibG9iLCBOVUxMKTsKKwlzaXplID0gYWFfdW5wYWNrX2Jsb2IocHVm LT5lLCAmYmxvYiwgTlVMTCk7CiAKIAlLVU5JVF9BU1NFUlRfRVEodGVzdCwgc2l6ZSwgVEVT VF9CTE9CX0RBVEFfU0laRSk7CiAJS1VOSVRfRVhQRUNUX1RSVUUodGVzdCwKQEAgLTIwMyw3 ICsyMDYsNyBAQCBzdGF0aWMgdm9pZCBwb2xpY3lfdW5wYWNrX3Rlc3RfdW5wYWNrX2Jsb2Jf d2l0aF9uYW1lKHN0cnVjdCBrdW5pdCAqdGVzdCkKIAlzaXplX3Qgc2l6ZTsKIAogCXB1Zi0+ ZS0+cG9zICs9IFRFU1RfTkFNRURfQkxPQl9CVUZfT0ZGU0VUOwotCXNpemUgPSB1bnBhY2tf YmxvYihwdWYtPmUsICZibG9iLCBURVNUX0JMT0JfTkFNRSk7CisJc2l6ZSA9IGFhX3VucGFj a19ibG9iKHB1Zi0+ZSwgJmJsb2IsIFRFU1RfQkxPQl9OQU1FKTsKIAogCUtVTklUX0FTU0VS VF9FUSh0ZXN0LCBzaXplLCBURVNUX0JMT0JfREFUQV9TSVpFKTsKIAlLVU5JVF9FWFBFQ1Rf VFJVRSh0ZXN0LApAQCAtMjIyLDcgKzIyNSw3IEBAIHN0YXRpYyB2b2lkIHBvbGljeV91bnBh Y2tfdGVzdF91bnBhY2tfYmxvYl9vdXRfb2ZfYm91bmRzKHN0cnVjdCBrdW5pdCAqdGVzdCkK IAlwdWYtPmUtPmVuZCA9IHB1Zi0+ZS0+c3RhcnQgKyBURVNUX0JMT0JfQlVGX09GRlNFVAog CQkrIFRFU1RfQkxPQl9EQVRBX1NJWkUgLSAxOwogCi0Jc2l6ZSA9IHVucGFja19ibG9iKHB1 Zi0+ZSwgJmJsb2IsIFRFU1RfQkxPQl9OQU1FKTsKKwlzaXplID0gYWFfdW5wYWNrX2Jsb2Io cHVmLT5lLCAmYmxvYiwgVEVTVF9CTE9CX05BTUUpOwogCiAJS1VOSVRfRVhQRUNUX0VRKHRl c3QsIHNpemUsIDApOwogCUtVTklUX0VYUEVDVF9QVFJfRVEodGVzdCwgcHVmLT5lLT5wb3Ms IHN0YXJ0KTsKQEAgLTIzNSw3ICsyMzgsNyBAQCBzdGF0aWMgdm9pZCBwb2xpY3lfdW5wYWNr X3Rlc3RfdW5wYWNrX3N0cl93aXRoX251bGxfbmFtZShzdHJ1Y3Qga3VuaXQgKnRlc3QpCiAJ c2l6ZV90IHNpemU7CiAKIAlwdWYtPmUtPnBvcyArPSBURVNUX1NUUklOR19CVUZfT0ZGU0VU OwotCXNpemUgPSB1bnBhY2tfc3RyKHB1Zi0+ZSwgJnN0cmluZywgTlVMTCk7CisJc2l6ZSA9 IGFhX3VucGFja19zdHIocHVmLT5lLCAmc3RyaW5nLCBOVUxMKTsKIAogCUtVTklUX0VYUEVD VF9FUSh0ZXN0LCBzaXplLCBzdHJsZW4oVEVTVF9TVFJJTkdfREFUQSkgKyAxKTsKIAlLVU5J VF9FWFBFQ1RfU1RSRVEodGVzdCwgc3RyaW5nLCBURVNUX1NUUklOR19EQVRBKTsKQEAgLTI0 Nyw3ICsyNTAsNyBAQCBzdGF0aWMgdm9pZCBwb2xpY3lfdW5wYWNrX3Rlc3RfdW5wYWNrX3N0 cl93aXRoX25hbWUoc3RydWN0IGt1bml0ICp0ZXN0KQogCWNvbnN0IGNoYXIgKnN0cmluZyA9 IE5VTEw7CiAJc2l6ZV90IHNpemU7CiAKLQlzaXplID0gdW5wYWNrX3N0cihwdWYtPmUsICZz dHJpbmcsIFRFU1RfU1RSSU5HX05BTUUpOworCXNpemUgPSBhYV91bnBhY2tfc3RyKHB1Zi0+ ZSwgJnN0cmluZywgVEVTVF9TVFJJTkdfTkFNRSk7CiAKIAlLVU5JVF9FWFBFQ1RfRVEodGVz dCwgc2l6ZSwgc3RybGVuKFRFU1RfU1RSSU5HX0RBVEEpICsgMSk7CiAJS1VOSVRfRVhQRUNU X1NUUkVRKHRlc3QsIHN0cmluZywgVEVTVF9TVFJJTkdfREFUQSk7CkBAIC0yNjMsNyArMjY2 LDcgQEAgc3RhdGljIHZvaWQgcG9saWN5X3VucGFja190ZXN0X3VucGFja19zdHJfb3V0X29m X2JvdW5kcyhzdHJ1Y3Qga3VuaXQgKnRlc3QpCiAJcHVmLT5lLT5lbmQgPSBwdWYtPmUtPnBv cyArIFRFU1RfU1RSSU5HX0JVRl9PRkZTRVQKIAkJKyBzdHJsZW4oVEVTVF9TVFJJTkdfREFU QSkgLSAxOwogCi0Jc2l6ZSA9IHVucGFja19zdHIocHVmLT5lLCAmc3RyaW5nLCBURVNUX1NU UklOR19OQU1FKTsKKwlzaXplID0gYWFfdW5wYWNrX3N0cihwdWYtPmUsICZzdHJpbmcsIFRF U1RfU1RSSU5HX05BTUUpOwogCiAJS1VOSVRfRVhQRUNUX0VRKHRlc3QsIHNpemUsIDApOwog CUtVTklUX0VYUEVDVF9QVFJfRVEodGVzdCwgcHVmLT5lLT5wb3MsIHN0YXJ0KTsKQEAgLTI3 Niw3ICsyNzksNyBAQCBzdGF0aWMgdm9pZCBwb2xpY3lfdW5wYWNrX3Rlc3RfdW5wYWNrX3N0 cmR1cF93aXRoX251bGxfbmFtZShzdHJ1Y3Qga3VuaXQgKnRlc3QpCiAJc2l6ZV90IHNpemU7 CiAKIAlwdWYtPmUtPnBvcyArPSBURVNUX1NUUklOR19CVUZfT0ZGU0VUOwotCXNpemUgPSB1 bnBhY2tfc3RyZHVwKHB1Zi0+ZSwgJnN0cmluZywgTlVMTCk7CisJc2l6ZSA9IGFhX3VucGFj a19zdHJkdXAocHVmLT5lLCAmc3RyaW5nLCBOVUxMKTsKIAogCUtVTklUX0VYUEVDVF9FUSh0 ZXN0LCBzaXplLCBzdHJsZW4oVEVTVF9TVFJJTkdfREFUQSkgKyAxKTsKIAlLVU5JVF9FWFBF Q1RfRkFMU0UodGVzdCwKQEAgLTI5MSw3ICsyOTQsNyBAQCBzdGF0aWMgdm9pZCBwb2xpY3lf dW5wYWNrX3Rlc3RfdW5wYWNrX3N0cmR1cF93aXRoX25hbWUoc3RydWN0IGt1bml0ICp0ZXN0 KQogCWNoYXIgKnN0cmluZyA9IE5VTEw7CiAJc2l6ZV90IHNpemU7CiAKLQlzaXplID0gdW5w YWNrX3N0cmR1cChwdWYtPmUsICZzdHJpbmcsIFRFU1RfU1RSSU5HX05BTUUpOworCXNpemUg PSBhYV91bnBhY2tfc3RyZHVwKHB1Zi0+ZSwgJnN0cmluZywgVEVTVF9TVFJJTkdfTkFNRSk7 CiAKIAlLVU5JVF9FWFBFQ1RfRVEodGVzdCwgc2l6ZSwgc3RybGVuKFRFU1RfU1RSSU5HX0RB VEEpICsgMSk7CiAJS1VOSVRfRVhQRUNUX0ZBTFNFKHRlc3QsCkBAIC0zMTAsNyArMzEzLDcg QEAgc3RhdGljIHZvaWQgcG9saWN5X3VucGFja190ZXN0X3VucGFja19zdHJkdXBfb3V0X29m X2JvdW5kcyhzdHJ1Y3Qga3VuaXQgKnRlc3QpCiAJcHVmLT5lLT5lbmQgPSBwdWYtPmUtPnBv cyArIFRFU1RfU1RSSU5HX0JVRl9PRkZTRVQKIAkJKyBzdHJsZW4oVEVTVF9TVFJJTkdfREFU QSkgLSAxOwogCi0Jc2l6ZSA9IHVucGFja19zdHJkdXAocHVmLT5lLCAmc3RyaW5nLCBURVNU X1NUUklOR19OQU1FKTsKKwlzaXplID0gYWFfdW5wYWNrX3N0cmR1cChwdWYtPmUsICZzdHJp bmcsIFRFU1RfU1RSSU5HX05BTUUpOwogCiAJS1VOSVRfRVhQRUNUX0VRKHRlc3QsIHNpemUs IDApOwogCUtVTklUX0VYUEVDVF9OVUxMKHRlc3QsIHN0cmluZyk7CkBAIC0zMjQsNyArMzI3 LDcgQEAgc3RhdGljIHZvaWQgcG9saWN5X3VucGFja190ZXN0X3VucGFja19uYW1lWF93aXRo X251bGxfbmFtZShzdHJ1Y3Qga3VuaXQgKnRlc3QpCiAKIAlwdWYtPmUtPnBvcyArPSBURVNU X1UzMl9CVUZfT0ZGU0VUOwogCi0Jc3VjY2VzcyA9IHVucGFja19uYW1lWChwdWYtPmUsIEFB X1UzMiwgTlVMTCk7CisJc3VjY2VzcyA9IGFhX3VucGFja19uYW1lWChwdWYtPmUsIEFBX1Uz MiwgTlVMTCk7CiAKIAlLVU5JVF9FWFBFQ1RfVFJVRSh0ZXN0LCBzdWNjZXNzKTsKIAlLVU5J VF9FWFBFQ1RfUFRSX0VRKHRlc3QsIHB1Zi0+ZS0+cG9zLApAQCAtMzM4LDcgKzM0MSw3IEBA IHN0YXRpYyB2b2lkIHBvbGljeV91bnBhY2tfdGVzdF91bnBhY2tfbmFtZVhfd2l0aF93cm9u Z19jb2RlKHN0cnVjdCBrdW5pdCAqdGVzdCkKIAogCXB1Zi0+ZS0+cG9zICs9IFRFU1RfVTMy X0JVRl9PRkZTRVQ7CiAKLQlzdWNjZXNzID0gdW5wYWNrX25hbWVYKHB1Zi0+ZSwgQUFfQkxP QiwgTlVMTCk7CisJc3VjY2VzcyA9IGFhX3VucGFja19uYW1lWChwdWYtPmUsIEFBX0JMT0Is IE5VTEwpOwogCiAJS1VOSVRfRVhQRUNUX0ZBTFNFKHRlc3QsIHN1Y2Nlc3MpOwogCUtVTklU X0VYUEVDVF9QVFJfRVEodGVzdCwgcHVmLT5lLT5wb3MsCkBAIC0zNTMsNyArMzU2LDcgQEAg c3RhdGljIHZvaWQgcG9saWN5X3VucGFja190ZXN0X3VucGFja19uYW1lWF93aXRoX25hbWUo c3RydWN0IGt1bml0ICp0ZXN0KQogCiAJcHVmLT5lLT5wb3MgKz0gVEVTVF9OQU1FRF9VMzJf QlVGX09GRlNFVDsKIAotCXN1Y2Nlc3MgPSB1bnBhY2tfbmFtZVgocHVmLT5lLCBBQV9VMzIs IG5hbWUpOworCXN1Y2Nlc3MgPSBhYV91bnBhY2tfbmFtZVgocHVmLT5lLCBBQV9VMzIsIG5h bWUpOwogCiAJS1VOSVRfRVhQRUNUX1RSVUUodGVzdCwgc3VjY2Vzcyk7CiAJS1VOSVRfRVhQ RUNUX1BUUl9FUSh0ZXN0LCBwdWYtPmUtPnBvcywKQEAgLTM2OCw3ICszNzEsNyBAQCBzdGF0 aWMgdm9pZCBwb2xpY3lfdW5wYWNrX3Rlc3RfdW5wYWNrX25hbWVYX3dpdGhfd3JvbmdfbmFt ZShzdHJ1Y3Qga3VuaXQgKnRlc3QpCiAKIAlwdWYtPmUtPnBvcyArPSBURVNUX05BTUVEX1Uz Ml9CVUZfT0ZGU0VUOwogCi0Jc3VjY2VzcyA9IHVucGFja19uYW1lWChwdWYtPmUsIEFBX1Uz MiwgbmFtZSk7CisJc3VjY2VzcyA9IGFhX3VucGFja19uYW1lWChwdWYtPmUsIEFBX1UzMiwg bmFtZSk7CiAKIAlLVU5JVF9FWFBFQ1RfRkFMU0UodGVzdCwgc3VjY2Vzcyk7CiAJS1VOSVRf RVhQRUNUX1BUUl9FUSh0ZXN0LCBwdWYtPmUtPnBvcywKQEAgLTM4OSw3ICszOTIsNyBAQCBz dGF0aWMgdm9pZCBwb2xpY3lfdW5wYWNrX3Rlc3RfdW5wYWNrX3UxNl9jaHVua19iYXNpYyhz dHJ1Y3Qga3VuaXQgKnRlc3QpCiAJICovCiAJcHVmLT5lLT5lbmQgKz0gVEVTVF9VMTZfREFU QTsKIAotCXNpemUgPSB1bnBhY2tfdTE2X2NodW5rKHB1Zi0+ZSwgJmNodW5rKTsKKwlzaXpl ID0gYWFfdW5wYWNrX3UxNl9jaHVuayhwdWYtPmUsICZjaHVuayk7CiAKIAlLVU5JVF9FWFBF Q1RfUFRSX0VRKHRlc3QsIGNodW5rLAogCQkJICAgIHB1Zi0+ZS0+c3RhcnQgKyBURVNUX1Ux Nl9PRkZTRVQgKyAyKTsKQEAgLTQwNiw3ICs0MDksNyBAQCBzdGF0aWMgdm9pZCBwb2xpY3lf dW5wYWNrX3Rlc3RfdW5wYWNrX3UxNl9jaHVua19vdXRfb2ZfYm91bmRzXzEoCiAKIAlwdWYt PmUtPnBvcyA9IHB1Zi0+ZS0+ZW5kIC0gMTsKIAotCXNpemUgPSB1bnBhY2tfdTE2X2NodW5r KHB1Zi0+ZSwgJmNodW5rKTsKKwlzaXplID0gYWFfdW5wYWNrX3UxNl9jaHVuayhwdWYtPmUs ICZjaHVuayk7CiAKIAlLVU5JVF9FWFBFQ1RfRVEodGVzdCwgc2l6ZSwgMCk7CiAJS1VOSVRf RVhQRUNUX05VTEwodGVzdCwgY2h1bmspOwpAQCAtNDI4LDcgKzQzMSw3IEBAIHN0YXRpYyB2 b2lkIHBvbGljeV91bnBhY2tfdGVzdF91bnBhY2tfdTE2X2NodW5rX291dF9vZl9ib3VuZHNf MigKIAkgKi8KIAlwdWYtPmUtPmVuZCA9IHB1Zi0+ZS0+cG9zICsgVEVTVF9VMTZfREFUQSAt IDE7CiAKLQlzaXplID0gdW5wYWNrX3UxNl9jaHVuayhwdWYtPmUsICZjaHVuayk7CisJc2l6 ZSA9IGFhX3VucGFja191MTZfY2h1bmsocHVmLT5lLCAmY2h1bmspOwogCiAJS1VOSVRfRVhQ RUNUX0VRKHRlc3QsIHNpemUsIDApOwogCUtVTklUX0VYUEVDVF9OVUxMKHRlc3QsIGNodW5r KTsKQEAgLTQ0Myw3ICs0NDYsNyBAQCBzdGF0aWMgdm9pZCBwb2xpY3lfdW5wYWNrX3Rlc3Rf dW5wYWNrX3UzMl93aXRoX251bGxfbmFtZShzdHJ1Y3Qga3VuaXQgKnRlc3QpCiAKIAlwdWYt PmUtPnBvcyArPSBURVNUX1UzMl9CVUZfT0ZGU0VUOwogCi0Jc3VjY2VzcyA9IHVucGFja191 MzIocHVmLT5lLCAmZGF0YSwgTlVMTCk7CisJc3VjY2VzcyA9IGFhX3VucGFja191MzIocHVm LT5lLCAmZGF0YSwgTlVMTCk7CiAKIAlLVU5JVF9FWFBFQ1RfVFJVRSh0ZXN0LCBzdWNjZXNz KTsKIAlLVU5JVF9FWFBFQ1RfRVEodGVzdCwgZGF0YSwgVEVTVF9VMzJfREFUQSk7CkBAIC00 NjAsNyArNDYzLDcgQEAgc3RhdGljIHZvaWQgcG9saWN5X3VucGFja190ZXN0X3VucGFja191 MzJfd2l0aF9uYW1lKHN0cnVjdCBrdW5pdCAqdGVzdCkKIAogCXB1Zi0+ZS0+cG9zICs9IFRF U1RfTkFNRURfVTMyX0JVRl9PRkZTRVQ7CiAKLQlzdWNjZXNzID0gdW5wYWNrX3UzMihwdWYt PmUsICZkYXRhLCBuYW1lKTsKKwlzdWNjZXNzID0gYWFfdW5wYWNrX3UzMihwdWYtPmUsICZk YXRhLCBuYW1lKTsKIAogCUtVTklUX0VYUEVDVF9UUlVFKHRlc3QsIHN1Y2Nlc3MpOwogCUtV TklUX0VYUEVDVF9FUSh0ZXN0LCBkYXRhLCBURVNUX1UzMl9EQVRBKTsKQEAgLTQ3OCw3ICs0 ODEsNyBAQCBzdGF0aWMgdm9pZCBwb2xpY3lfdW5wYWNrX3Rlc3RfdW5wYWNrX3UzMl9vdXRf b2ZfYm91bmRzKHN0cnVjdCBrdW5pdCAqdGVzdCkKIAlwdWYtPmUtPnBvcyArPSBURVNUX05B TUVEX1UzMl9CVUZfT0ZGU0VUOwogCXB1Zi0+ZS0+ZW5kID0gcHVmLT5lLT5zdGFydCArIFRF U1RfVTMyX0JVRl9PRkZTRVQgKyBzaXplb2YodTMyKTsKIAotCXN1Y2Nlc3MgPSB1bnBhY2tf dTMyKHB1Zi0+ZSwgJmRhdGEsIG5hbWUpOworCXN1Y2Nlc3MgPSBhYV91bnBhY2tfdTMyKHB1 Zi0+ZSwgJmRhdGEsIG5hbWUpOwogCiAJS1VOSVRfRVhQRUNUX0ZBTFNFKHRlc3QsIHN1Y2Nl c3MpOwogCUtVTklUX0VYUEVDVF9QVFJfRVEodGVzdCwgcHVmLT5lLT5wb3MsCkBAIC00OTMs NyArNDk2LDcgQEAgc3RhdGljIHZvaWQgcG9saWN5X3VucGFja190ZXN0X3VucGFja191NjRf d2l0aF9udWxsX25hbWUoc3RydWN0IGt1bml0ICp0ZXN0KQogCiAJcHVmLT5lLT5wb3MgKz0g VEVTVF9VNjRfQlVGX09GRlNFVDsKIAotCXN1Y2Nlc3MgPSB1bnBhY2tfdTY0KHB1Zi0+ZSwg JmRhdGEsIE5VTEwpOworCXN1Y2Nlc3MgPSBhYV91bnBhY2tfdTY0KHB1Zi0+ZSwgJmRhdGEs IE5VTEwpOwogCiAJS1VOSVRfRVhQRUNUX1RSVUUodGVzdCwgc3VjY2Vzcyk7CiAJS1VOSVRf RVhQRUNUX0VRKHRlc3QsIGRhdGEsIFRFU1RfVTY0X0RBVEEpOwpAQCAtNTEwLDcgKzUxMyw3 IEBAIHN0YXRpYyB2b2lkIHBvbGljeV91bnBhY2tfdGVzdF91bnBhY2tfdTY0X3dpdGhfbmFt ZShzdHJ1Y3Qga3VuaXQgKnRlc3QpCiAKIAlwdWYtPmUtPnBvcyArPSBURVNUX05BTUVEX1U2 NF9CVUZfT0ZGU0VUOwogCi0Jc3VjY2VzcyA9IHVucGFja191NjQocHVmLT5lLCAmZGF0YSwg bmFtZSk7CisJc3VjY2VzcyA9IGFhX3VucGFja191NjQocHVmLT5lLCAmZGF0YSwgbmFtZSk7 CiAKIAlLVU5JVF9FWFBFQ1RfVFJVRSh0ZXN0LCBzdWNjZXNzKTsKIAlLVU5JVF9FWFBFQ1Rf RVEodGVzdCwgZGF0YSwgVEVTVF9VNjRfREFUQSk7CkBAIC01MjgsNyArNTMxLDcgQEAgc3Rh dGljIHZvaWQgcG9saWN5X3VucGFja190ZXN0X3VucGFja191NjRfb3V0X29mX2JvdW5kcyhz dHJ1Y3Qga3VuaXQgKnRlc3QpCiAJcHVmLT5lLT5wb3MgKz0gVEVTVF9OQU1FRF9VNjRfQlVG X09GRlNFVDsKIAlwdWYtPmUtPmVuZCA9IHB1Zi0+ZS0+c3RhcnQgKyBURVNUX1U2NF9CVUZf T0ZGU0VUICsgc2l6ZW9mKHU2NCk7CiAKLQlzdWNjZXNzID0gdW5wYWNrX3U2NChwdWYtPmUs ICZkYXRhLCBuYW1lKTsKKwlzdWNjZXNzID0gYWFfdW5wYWNrX3U2NChwdWYtPmUsICZkYXRh LCBuYW1lKTsKIAogCUtVTklUX0VYUEVDVF9GQUxTRSh0ZXN0LCBzdWNjZXNzKTsKIAlLVU5J VF9FWFBFQ1RfUFRSX0VRKHRlc3QsIHB1Zi0+ZS0+cG9zLApAQCAtNTM4LDcgKzU0MSw3IEBA IHN0YXRpYyB2b2lkIHBvbGljeV91bnBhY2tfdGVzdF91bnBhY2tfdTY0X291dF9vZl9ib3Vu ZHMoc3RydWN0IGt1bml0ICp0ZXN0KQogc3RhdGljIHZvaWQgcG9saWN5X3VucGFja190ZXN0 X3VucGFja19YX2NvZGVfbWF0Y2goc3RydWN0IGt1bml0ICp0ZXN0KQogewogCXN0cnVjdCBw b2xpY3lfdW5wYWNrX2ZpeHR1cmUgKnB1ZiA9IHRlc3QtPnByaXY7Ci0JYm9vbCBzdWNjZXNz ID0gdW5wYWNrX1gocHVmLT5lLCBBQV9OQU1FKTsKKwlib29sIHN1Y2Nlc3MgPSBhYV91bnBh Y2tfWChwdWYtPmUsIEFBX05BTUUpOwogCiAJS1VOSVRfRVhQRUNUX1RSVUUodGVzdCwgc3Vj Y2Vzcyk7CiAJS1VOSVRfRVhQRUNUX1RSVUUodGVzdCwgcHVmLT5lLT5wb3MgPT0gcHVmLT5l LT5zdGFydCArIDEpOwpAQCAtNTQ3LDcgKzU1MCw3IEBAIHN0YXRpYyB2b2lkIHBvbGljeV91 bnBhY2tfdGVzdF91bnBhY2tfWF9jb2RlX21hdGNoKHN0cnVjdCBrdW5pdCAqdGVzdCkKIHN0 YXRpYyB2b2lkIHBvbGljeV91bnBhY2tfdGVzdF91bnBhY2tfWF9jb2RlX21pc21hdGNoKHN0 cnVjdCBrdW5pdCAqdGVzdCkKIHsKIAlzdHJ1Y3QgcG9saWN5X3VucGFja19maXh0dXJlICpw dWYgPSB0ZXN0LT5wcml2OwotCWJvb2wgc3VjY2VzcyA9IHVucGFja19YKHB1Zi0+ZSwgQUFf U1RSSU5HKTsKKwlib29sIHN1Y2Nlc3MgPSBhYV91bnBhY2tfWChwdWYtPmUsIEFBX1NUUklO Ryk7CiAKIAlLVU5JVF9FWFBFQ1RfRkFMU0UodGVzdCwgc3VjY2Vzcyk7CiAJS1VOSVRfRVhQ RUNUX1RSVUUodGVzdCwgcHVmLT5lLT5wb3MgPT0gcHVmLT5lLT5zdGFydCk7CkBAIC01NTks NyArNTYyLDcgQEAgc3RhdGljIHZvaWQgcG9saWN5X3VucGFja190ZXN0X3VucGFja19YX291 dF9vZl9ib3VuZHMoc3RydWN0IGt1bml0ICp0ZXN0KQogCWJvb2wgc3VjY2VzczsKIAogCXB1 Zi0+ZS0+cG9zID0gcHVmLT5lLT5lbmQ7Ci0Jc3VjY2VzcyA9IHVucGFja19YKHB1Zi0+ZSwg QUFfTkFNRSk7CisJc3VjY2VzcyA9IGFhX3VucGFja19YKHB1Zi0+ZSwgQUFfTkFNRSk7CiAK IAlLVU5JVF9FWFBFQ1RfRkFMU0UodGVzdCwgc3VjY2Vzcyk7CiB9CkBAIC02MDUsMyArNjA4 LDUgQEAgc3RhdGljIHN0cnVjdCBrdW5pdF9zdWl0ZSBhcHBhcm1vcl9wb2xpY3lfdW5wYWNr X3Rlc3RfbW9kdWxlID0gewogfTsKIAoga3VuaXRfdGVzdF9zdWl0ZShhcHBhcm1vcl9wb2xp Y3lfdW5wYWNrX3Rlc3RfbW9kdWxlKTsKKworTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwpkaWZm IC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9rdW5pdC9rdW5pdC5weSBiL3Rvb2xzL3Rlc3Rpbmcv a3VuaXQva3VuaXQucHkKaW5kZXggNGQ0NjYzZmI1NzhiLi40M2ZiZTk2MzE4ZmUgMTAwNzU1 Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcva3VuaXQva3VuaXQucHkKKysrIGIvdG9vbHMvdGVzdGlu Zy9rdW5pdC9rdW5pdC5weQpAQCAtMTkyLDI4ICsxOTIsMzAgQEAgZGVmIF9tYXBfdG9fb3Zl cmFsbF9zdGF0dXModGVzdF9zdGF0dXM6IGt1bml0X3BhcnNlci5UZXN0U3RhdHVzKSAtPiBL dW5pdFN0YXR1czoKIGRlZiBwYXJzZV90ZXN0cyhyZXF1ZXN0OiBLdW5pdFBhcnNlUmVxdWVz dCwgbWV0YWRhdGE6IGt1bml0X2pzb24uTWV0YWRhdGEsIGlucHV0X2RhdGE6IEl0ZXJhYmxl W3N0cl0pIC0+IFR1cGxlW0t1bml0UmVzdWx0LCBrdW5pdF9wYXJzZXIuVGVzdF06CiAJcGFy c2Vfc3RhcnQgPSB0aW1lLnRpbWUoKQogCi0JdGVzdF9yZXN1bHQgPSBrdW5pdF9wYXJzZXIu VGVzdCgpCi0KIAlpZiByZXF1ZXN0LnJhd19vdXRwdXQ6CiAJCSMgVHJlYXQgdW5wYXJzZWQg cmVzdWx0cyBhcyBvbmUgcGFzc2luZyB0ZXN0LgotCQl0ZXN0X3Jlc3VsdC5zdGF0dXMgPSBr dW5pdF9wYXJzZXIuVGVzdFN0YXR1cy5TVUNDRVNTCi0JCXRlc3RfcmVzdWx0LmNvdW50cy5w YXNzZWQgPSAxCisJCWZha2VfdGVzdCA9IGt1bml0X3BhcnNlci5UZXN0KCkKKwkJZmFrZV90 ZXN0LnN0YXR1cyA9IGt1bml0X3BhcnNlci5UZXN0U3RhdHVzLlNVQ0NFU1MKKwkJZmFrZV90 ZXN0LmNvdW50cy5wYXNzZWQgPSAxCiAKIAkJb3V0cHV0OiBJdGVyYWJsZVtzdHJdID0gaW5w dXRfZGF0YQogCQlpZiByZXF1ZXN0LnJhd19vdXRwdXQgPT0gJ2FsbCc6CiAJCQlwYXNzCiAJ CWVsaWYgcmVxdWVzdC5yYXdfb3V0cHV0ID09ICdrdW5pdCc6Ci0JCQlvdXRwdXQgPSBrdW5p dF9wYXJzZXIuZXh0cmFjdF90YXBfbGluZXMob3V0cHV0LCBsc3RyaXA9RmFsc2UpCisJCQlv dXRwdXQgPSBrdW5pdF9wYXJzZXIuZXh0cmFjdF90YXBfbGluZXMob3V0cHV0KQogCQlmb3Ig bGluZSBpbiBvdXRwdXQ6CiAJCQlwcmludChsaW5lLnJzdHJpcCgpKQorCQlwYXJzZV90aW1l ID0gdGltZS50aW1lKCkgLSBwYXJzZV9zdGFydAorCQlyZXR1cm4gS3VuaXRSZXN1bHQoS3Vu aXRTdGF0dXMuU1VDQ0VTUywgcGFyc2VfdGltZSksIGZha2VfdGVzdAogCi0JZWxzZToKLQkJ dGVzdF9yZXN1bHQgPSBrdW5pdF9wYXJzZXIucGFyc2VfcnVuX3Rlc3RzKGlucHV0X2RhdGEp Ci0JcGFyc2VfZW5kID0gdGltZS50aW1lKCkKKworCSMgQWN0dWFsbHkgcGFyc2UgdGhlIHRl c3QgcmVzdWx0cy4KKwl0ZXN0ID0ga3VuaXRfcGFyc2VyLnBhcnNlX3J1bl90ZXN0cyhpbnB1 dF9kYXRhKQorCXBhcnNlX3RpbWUgPSB0aW1lLnRpbWUoKSAtIHBhcnNlX3N0YXJ0CiAKIAlp ZiByZXF1ZXN0Lmpzb246CiAJCWpzb25fc3RyID0ga3VuaXRfanNvbi5nZXRfanNvbl9yZXN1 bHQoCi0JCQkJCXRlc3Q9dGVzdF9yZXN1bHQsCisJCQkJCXRlc3Q9dGVzdCwKIAkJCQkJbWV0 YWRhdGE9bWV0YWRhdGEpCiAJCWlmIHJlcXVlc3QuanNvbiA9PSAnc3Rkb3V0JzoKIAkJCXBy aW50KGpzb25fc3RyKQpAQCAtMjIzLDEwICsyMjUsMTAgQEAgZGVmIHBhcnNlX3Rlc3RzKHJl cXVlc3Q6IEt1bml0UGFyc2VSZXF1ZXN0LCBtZXRhZGF0YToga3VuaXRfanNvbi5NZXRhZGF0 YSwgaW5wdXQKIAkJCXN0ZG91dC5wcmludF93aXRoX3RpbWVzdGFtcCgiVGVzdCByZXN1bHRz IHN0b3JlZCBpbiAlcyIgJQogCQkJCW9zLnBhdGguYWJzcGF0aChyZXF1ZXN0Lmpzb24pKQog Ci0JaWYgdGVzdF9yZXN1bHQuc3RhdHVzICE9IGt1bml0X3BhcnNlci5UZXN0U3RhdHVzLlNV Q0NFU1M6Ci0JCXJldHVybiBLdW5pdFJlc3VsdChLdW5pdFN0YXR1cy5URVNUX0ZBSUxVUkUs IHBhcnNlX2VuZCAtIHBhcnNlX3N0YXJ0KSwgdGVzdF9yZXN1bHQKKwlpZiB0ZXN0LnN0YXR1 cyAhPSBrdW5pdF9wYXJzZXIuVGVzdFN0YXR1cy5TVUNDRVNTOgorCQlyZXR1cm4gS3VuaXRS ZXN1bHQoS3VuaXRTdGF0dXMuVEVTVF9GQUlMVVJFLCBwYXJzZV90aW1lKSwgdGVzdAogCi0J cmV0dXJuIEt1bml0UmVzdWx0KEt1bml0U3RhdHVzLlNVQ0NFU1MsIHBhcnNlX2VuZCAtIHBh cnNlX3N0YXJ0KSwgdGVzdF9yZXN1bHQKKwlyZXR1cm4gS3VuaXRSZXN1bHQoS3VuaXRTdGF0 dXMuU1VDQ0VTUywgcGFyc2VfdGltZSksIHRlc3QKIAogZGVmIHJ1bl90ZXN0cyhsaW51eDog a3VuaXRfa2VybmVsLkxpbnV4U291cmNlVHJlZSwKIAkgICAgICByZXF1ZXN0OiBLdW5pdFJl cXVlc3QpIC0+IEt1bml0UmVzdWx0OgpAQCAtMzU5LDE0ICszNjEsMTQgQEAgZGVmIGFkZF9l eGVjX29wdHMocGFyc2VyKSAtPiBOb25lOgogCQkJICAgIGNob2ljZXM9WydzdWl0ZScsICd0 ZXN0J10pCiAKIGRlZiBhZGRfcGFyc2Vfb3B0cyhwYXJzZXIpIC0+IE5vbmU6Ci0JcGFyc2Vy LmFkZF9hcmd1bWVudCgnLS1yYXdfb3V0cHV0JywgaGVscD0nSWYgc2V0IGRvblwndCBmb3Jt YXQgb3V0cHV0IGZyb20ga2VybmVsLiAnCi0JCQkgICAgJ0lmIHNldCB0byAtLXJhd19vdXRw dXQ9a3VuaXQsIGZpbHRlcnMgdG8ganVzdCBLVW5pdCBvdXRwdXQuJywKKwlwYXJzZXIuYWRk X2FyZ3VtZW50KCctLXJhd19vdXRwdXQnLCBoZWxwPSdJZiBzZXQgZG9uXCd0IHBhcnNlIG91 dHB1dCBmcm9tIGtlcm5lbC4gJworCQkJICAgICdCeSBkZWZhdWx0LCBmaWx0ZXJzIHRvIGp1 c3QgS1VuaXQgb3V0cHV0LiBVc2UgJworCQkJICAgICctLXJhd19vdXRwdXQ9YWxsIHRvIHNo b3cgZXZlcnl0aGluZycsCiAJCQkgICAgIHR5cGU9c3RyLCBuYXJncz0nPycsIGNvbnN0PSdh bGwnLCBkZWZhdWx0PU5vbmUsIGNob2ljZXM9WydhbGwnLCAna3VuaXQnXSkKIAlwYXJzZXIu YWRkX2FyZ3VtZW50KCctLWpzb24nLAogCQkJICAgIG5hcmdzPSc/JywKLQkJCSAgICBoZWxw PSdTdG9yZXMgdGVzdCByZXN1bHRzIGluIGEgSlNPTiwgYW5kIGVpdGhlciAnCi0JCQkgICAg J3ByaW50cyB0byBzdGRvdXQgb3Igc2F2ZXMgdG8gZmlsZSBpZiBhICcKLQkJCSAgICAnZmls ZW5hbWUgaXMgc3BlY2lmaWVkJywKKwkJCSAgICBoZWxwPSdQcmludHMgcGFyc2VkIHRlc3Qg cmVzdWx0cyBhcyBKU09OIHRvIHN0ZG91dCBvciBhIGZpbGUgaWYgJworCQkJICAgICdhIGZp bGVuYW1lIGlzIHNwZWNpZmllZC4gRG9lcyBub3RoaW5nIGlmIC0tcmF3X291dHB1dCBpcyBz ZXQuJywKIAkJCSAgICB0eXBlPXN0ciwgY29uc3Q9J3N0ZG91dCcsIGRlZmF1bHQ9Tm9uZSwg bWV0YXZhcj0nRklMRScpCiAKIApkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9rdW5pdC9r dW5pdF9wYXJzZXIucHkgYi90b29scy90ZXN0aW5nL2t1bml0L2t1bml0X3BhcnNlci5weQpp bmRleCAxYWU4NzNlM2UzNDEuLmEyMjU3OTlmNmIxYiAxMDA2NDQKLS0tIGEvdG9vbHMvdGVz dGluZy9rdW5pdC9rdW5pdF9wYXJzZXIucHkKKysrIGIvdG9vbHMvdGVzdGluZy9rdW5pdC9r dW5pdF9wYXJzZXIucHkKQEAgLTEwLDggKzEwLDEwIEBACiAjIEF1dGhvcjogUmFlIE1vYXIg PHJtb2FyQGdvb2dsZS5jb20+CiAKIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgYW5ub3RhdGlv bnMKK2Zyb20gZGF0YWNsYXNzZXMgaW1wb3J0IGRhdGFjbGFzcwogaW1wb3J0IHJlCiBpbXBv cnQgc3lzCitpbXBvcnQgdGV4dHdyYXAKIAogZnJvbSBlbnVtIGltcG9ydCBFbnVtLCBhdXRv CiBmcm9tIHR5cGluZyBpbXBvcnQgSXRlcmFibGUsIEl0ZXJhdG9yLCBMaXN0LCBPcHRpb25h bCwgVHVwbGUKQEAgLTU4LDYgKzYwLDEwIEBAIGNsYXNzIFRlc3Q6CiAJCXNlbGYuY291bnRz LmVycm9ycyArPSAxCiAJCXN0ZG91dC5wcmludF93aXRoX3RpbWVzdGFtcChzdGRvdXQucmVk KCdbRVJST1JdJykgKyBmJyBUZXN0OiB7c2VsZi5uYW1lfToge2Vycm9yX21lc3NhZ2V9JykK IAorCWRlZiBva19zdGF0dXMoc2VsZikgLT4gYm9vbDoKKwkJIiIiUmV0dXJucyB0cnVlIGlm IHRoZSBzdGF0dXMgd2FzIG9rLCBpLmUuIHBhc3NlZCBvciBza2lwcGVkLiIiIgorCQlyZXR1 cm4gc2VsZi5zdGF0dXMgaW4gKFRlc3RTdGF0dXMuU1VDQ0VTUywgVGVzdFN0YXR1cy5TS0lQ UEVEKQorCiBjbGFzcyBUZXN0U3RhdHVzKEVudW0pOgogCSIiIkFuIGVudW1lcmF0aW9uIGNs YXNzIHRvIHJlcHJlc2VudCB0aGUgc3RhdHVzIG9mIGEgdGVzdC4iIiIKIAlTVUNDRVNTID0g YXV0bygpCkBAIC02NywyNyArNzMsMTcgQEAgY2xhc3MgVGVzdFN0YXR1cyhFbnVtKToKIAlO T19URVNUUyA9IGF1dG8oKQogCUZBSUxVUkVfVE9fUEFSU0VfVEVTVFMgPSBhdXRvKCkKIAor QGRhdGFjbGFzcwogY2xhc3MgVGVzdENvdW50czoKIAkiIiIKIAlUcmFja3MgdGhlIGNvdW50 cyBvZiBzdGF0dXNlcyBvZiBhbGwgdGVzdCBjYXNlcyBhbmQgYW55IGVycm9ycyB3aXRoaW4K IAlhIFRlc3QuCi0KLQlBdHRyaWJ1dGVzOgotCXBhc3NlZCA6IGludCAtIHRoZSBudW1iZXIg b2YgdGVzdHMgdGhhdCBoYXZlIHBhc3NlZAotCWZhaWxlZCA6IGludCAtIHRoZSBudW1iZXIg b2YgdGVzdHMgdGhhdCBoYXZlIGZhaWxlZAotCWNyYXNoZWQgOiBpbnQgLSB0aGUgbnVtYmVy IG9mIHRlc3RzIHRoYXQgaGF2ZSBjcmFzaGVkCi0Jc2tpcHBlZCA6IGludCAtIHRoZSBudW1i ZXIgb2YgdGVzdHMgdGhhdCBoYXZlIHNraXBwZWQKLQllcnJvcnMgOiBpbnQgLSB0aGUgbnVt YmVyIG9mIGVycm9ycyBpbiB0aGUgdGVzdCBhbmQgc3VidGVzdHMKLQkiIiIKLQlkZWYgX19p bml0X18oc2VsZik6Ci0JCSIiIkNyZWF0ZXMgVGVzdENvdW50cyBvYmplY3Qgd2l0aCBjb3Vu dHMgb2YgYWxsIHRlc3QKLQkJc3RhdHVzZXMgYW5kIHRlc3QgZXJyb3JzIHNldCB0byAwLgot CQkiIiIKLQkJc2VsZi5wYXNzZWQgPSAwCi0JCXNlbGYuZmFpbGVkID0gMAotCQlzZWxmLmNy YXNoZWQgPSAwCi0JCXNlbGYuc2tpcHBlZCA9IDAKLQkJc2VsZi5lcnJvcnMgPSAwCisJIiIi CisJcGFzc2VkOiBpbnQgPSAwCisJZmFpbGVkOiBpbnQgPSAwCisJY3Jhc2hlZDogaW50ID0g MAorCXNraXBwZWQ6IGludCA9IDAKKwllcnJvcnM6IGludCA9IDAKIAogCWRlZiBfX3N0cl9f KHNlbGYpIC0+IHN0cjoKIAkJIiIiUmV0dXJucyB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9u IG9mIGEgVGVzdENvdW50cyBvYmplY3QuIiIiCkBAIC0yMTMsMTIgKzIwOSwxMiBAQCBjbGFz cyBMaW5lU3RyZWFtOgogCiAjIFBhcnNpbmcgaGVscGVyIG1ldGhvZHM6CiAKLUtUQVBfU1RB UlQgPSByZS5jb21waWxlKHInS1RBUCB2ZXJzaW9uIChbMC05XSspJCcpCi1UQVBfU1RBUlQg PSByZS5jb21waWxlKHInVEFQIHZlcnNpb24gKFswLTldKykkJykKLUtUQVBfRU5EID0gcmUu Y29tcGlsZSgnKExpc3Qgb2YgYWxsIHBhcnRpdGlvbnM6fCcKK0tUQVBfU1RBUlQgPSByZS5j b21waWxlKHInXHMqS1RBUCB2ZXJzaW9uIChbMC05XSspJCcpCitUQVBfU1RBUlQgPSByZS5j b21waWxlKHInXHMqVEFQIHZlcnNpb24gKFswLTldKykkJykKK0tUQVBfRU5EID0gcmUuY29t cGlsZShyJ1xzKihMaXN0IG9mIGFsbCBwYXJ0aXRpb25zOnwnCiAJJ0tlcm5lbCBwYW5pYyAt IG5vdCBzeW5jaW5nOiBWRlM6fHJlYm9vdDogU3lzdGVtIGhhbHRlZCknKQogCi1kZWYgZXh0 cmFjdF90YXBfbGluZXMoa2VybmVsX291dHB1dDogSXRlcmFibGVbc3RyXSwgbHN0cmlwPVRy dWUpIC0+IExpbmVTdHJlYW06CitkZWYgZXh0cmFjdF90YXBfbGluZXMoa2VybmVsX291dHB1 dDogSXRlcmFibGVbc3RyXSkgLT4gTGluZVN0cmVhbToKIAkiIiJFeHRyYWN0cyBLVEFQIGxp bmVzIGZyb20gdGhlIGtlcm5lbCBvdXRwdXQuIiIiCiAJZGVmIGlzb2xhdGVfa3RhcF9vdXRw dXQoa2VybmVsX291dHB1dDogSXRlcmFibGVbc3RyXSkgXAogCQkJLT4gSXRlcmF0b3JbVHVw bGVbaW50LCBzdHJdXToKQEAgLTI0NCwxMSArMjQwLDggQEAgZGVmIGV4dHJhY3RfdGFwX2xp bmVzKGtlcm5lbF9vdXRwdXQ6IEl0ZXJhYmxlW3N0cl0sIGxzdHJpcD1UcnVlKSAtPiBMaW5l U3RyZWFtOgogCQkJCSMgc3RvcCBleHRyYWN0aW5nIEtUQVAgbGluZXMKIAkJCQlicmVhawog CQkJZWxpZiBzdGFydGVkOgotCQkJCSMgcmVtb3ZlIHRoZSBwcmVmaXggYW5kIG9wdGlvbmFs bHkgYW55IGxlYWRpbmcKLQkJCQkjIHdoaXRlc3BhY2UuIE91ciBwYXJzaW5nIGxvZ2ljIHJl bGllcyBvbiB0aGlzLgorCQkJCSMgcmVtb3ZlIHRoZSBwcmVmaXgsIGlmIGFueS4KIAkJCQls aW5lID0gbGluZVtwcmVmaXhfbGVuOl0KLQkJCQlpZiBsc3RyaXA6Ci0JCQkJCWxpbmUgPSBs aW5lLmxzdHJpcCgpCiAJCQkJeWllbGQgbGluZV9udW0sIGxpbmUKIAlyZXR1cm4gTGluZVN0 cmVhbShsaW5lcz1pc29sYXRlX2t0YXBfb3V0cHV0KGtlcm5lbF9vdXRwdXQpKQogCkBAIC0z MDAsMTAgKzI5MywxMCBAQCBkZWYgcGFyc2Vfa3RhcF9oZWFkZXIobGluZXM6IExpbmVTdHJl YW0sIHRlc3Q6IFRlc3QpIC0+IGJvb2w6CiAJCWNoZWNrX3ZlcnNpb24odmVyc2lvbl9udW0s IFRBUF9WRVJTSU9OUywgJ1RBUCcsIHRlc3QpCiAJZWxzZToKIAkJcmV0dXJuIEZhbHNlCi0J dGVzdC5sb2cuYXBwZW5kKGxpbmVzLnBvcCgpKQorCWxpbmVzLnBvcCgpCiAJcmV0dXJuIFRy dWUKIAotVEVTVF9IRUFERVIgPSByZS5jb21waWxlKHInXiMgU3VidGVzdDogKC4qKSQnKQor VEVTVF9IRUFERVIgPSByZS5jb21waWxlKHInXlxzKiMgU3VidGVzdDogKC4qKSQnKQogCiBk ZWYgcGFyc2VfdGVzdF9oZWFkZXIobGluZXM6IExpbmVTdHJlYW0sIHRlc3Q6IFRlc3QpIC0+ IGJvb2w6CiAJIiIiCkBAIC0zMjMsMTEgKzMxNiwxMSBAQCBkZWYgcGFyc2VfdGVzdF9oZWFk ZXIobGluZXM6IExpbmVTdHJlYW0sIHRlc3Q6IFRlc3QpIC0+IGJvb2w6CiAJbWF0Y2ggPSBU RVNUX0hFQURFUi5tYXRjaChsaW5lcy5wZWVrKCkpCiAJaWYgbm90IG1hdGNoOgogCQlyZXR1 cm4gRmFsc2UKLQl0ZXN0LmxvZy5hcHBlbmQobGluZXMucG9wKCkpCiAJdGVzdC5uYW1lID0g bWF0Y2guZ3JvdXAoMSkKKwlsaW5lcy5wb3AoKQogCXJldHVybiBUcnVlCiAKLVRFU1RfUExB TiA9IHJlLmNvbXBpbGUocicxXC5cLihbMC05XSspJykKK1RFU1RfUExBTiA9IHJlLmNvbXBp bGUocideXHMqMVwuXC4oWzAtOV0rKScpCiAKIGRlZiBwYXJzZV90ZXN0X3BsYW4obGluZXM6 IExpbmVTdHJlYW0sIHRlc3Q6IFRlc3QpIC0+IGJvb2w6CiAJIiIiCkBAIC0zNTAsMTQgKzM0 MywxNCBAQCBkZWYgcGFyc2VfdGVzdF9wbGFuKGxpbmVzOiBMaW5lU3RyZWFtLCB0ZXN0OiBU ZXN0KSAtPiBib29sOgogCWlmIG5vdCBtYXRjaDoKIAkJdGVzdC5leHBlY3RlZF9jb3VudCA9 IE5vbmUKIAkJcmV0dXJuIEZhbHNlCi0JdGVzdC5sb2cuYXBwZW5kKGxpbmVzLnBvcCgpKQog CWV4cGVjdGVkX2NvdW50ID0gaW50KG1hdGNoLmdyb3VwKDEpKQogCXRlc3QuZXhwZWN0ZWRf Y291bnQgPSBleHBlY3RlZF9jb3VudAorCWxpbmVzLnBvcCgpCiAJcmV0dXJuIFRydWUKIAot VEVTVF9SRVNVTFQgPSByZS5jb21waWxlKHInXihva3xub3Qgb2spIChbMC05XSspICgtICk/ KFteI10qKSggIyAuKik/JCcpCitURVNUX1JFU1VMVCA9IHJlLmNvbXBpbGUocideXHMqKG9r fG5vdCBvaykgKFswLTldKykgKC0gKT8oW14jXSopKCAjIC4qKT8kJykKIAotVEVTVF9SRVNV TFRfU0tJUCA9IHJlLmNvbXBpbGUocideKG9rfG5vdCBvaykgKFswLTldKykgKC0gKT8oLiop ICMgU0tJUCguKikkJykKK1RFU1RfUkVTVUxUX1NLSVAgPSByZS5jb21waWxlKHInXlxzKihv a3xub3Qgb2spIChbMC05XSspICgtICk/KC4qKSAjIFNLSVAoLiopJCcpCiAKIGRlZiBwZWVr X3Rlc3RfbmFtZV9tYXRjaChsaW5lczogTGluZVN0cmVhbSwgdGVzdDogVGVzdCkgLT4gYm9v bDoKIAkiIiIKQEAgLTQxNCw3ICs0MDcsNyBAQCBkZWYgcGFyc2VfdGVzdF9yZXN1bHQobGlu ZXM6IExpbmVTdHJlYW0sIHRlc3Q6IFRlc3QsCiAJIyBDaGVjayBpZiBsaW5lIG1hdGNoZXMg dGVzdCByZXN1bHQgbGluZSBmb3JtYXQKIAlpZiBub3QgbWF0Y2g6CiAJCXJldHVybiBGYWxz ZQotCXRlc3QubG9nLmFwcGVuZChsaW5lcy5wb3AoKSkKKwlsaW5lcy5wb3AoKQogCiAJIyBT ZXQgbmFtZSBvZiB0ZXN0IG9iamVjdAogCWlmIHNraXBfbWF0Y2g6CkBAIC00NDYsNiArNDM5 LDcgQEAgZGVmIHBhcnNlX2RpYWdub3N0aWMobGluZXM6IExpbmVTdHJlYW0pIC0+IExpc3Rb c3RyXToKIAktICcjIFN1YnRlc3Q6IFt0ZXN0IG5hbWVdJwogCS0gJ1tva3xub3Qgb2tdIFt0 ZXN0IG51bWJlcl0gWy1dIFt0ZXN0IG5hbWVdIFtvcHRpb25hbCBza2lwCiAJCWRpcmVjdGl2 ZV0nCisJLSAnS1RBUCB2ZXJzaW9uIFt2ZXJzaW9uIG51bWJlcl0nCiAKIAlQYXJhbWV0ZXJz OgogCWxpbmVzIC0gTGluZVN0cmVhbSBvZiBLVEFQIG91dHB1dCB0byBwYXJzZQpAQCAtNDU0 LDggKzQ0OCw5IEBAIGRlZiBwYXJzZV9kaWFnbm9zdGljKGxpbmVzOiBMaW5lU3RyZWFtKSAt PiBMaXN0W3N0cl06CiAJTG9nIG9mIGRpYWdub3N0aWMgbGluZXMKIAkiIiIKIAlsb2cgPSBb XSAgIyB0eXBlOiBMaXN0W3N0cl0KLQl3aGlsZSBsaW5lcyBhbmQgbm90IFRFU1RfUkVTVUxU Lm1hdGNoKGxpbmVzLnBlZWsoKSkgYW5kIG5vdCBcCi0JCQlURVNUX0hFQURFUi5tYXRjaChs aW5lcy5wZWVrKCkpOgorCW5vbl9kaWFnbm9zdGljX2xpbmVzID0gW1RFU1RfUkVTVUxULCBU RVNUX0hFQURFUiwgS1RBUF9TVEFSVF0KKwl3aGlsZSBsaW5lcyBhbmQgbm90IGFueShyZS5t YXRjaChsaW5lcy5wZWVrKCkpCisJCQlmb3IgcmUgaW4gbm9uX2RpYWdub3N0aWNfbGluZXMp OgogCQlsb2cuYXBwZW5kKGxpbmVzLnBvcCgpKQogCXJldHVybiBsb2cKIApAQCAtNTAxLDE3 ICs0OTYsMjIgQEAgZGVmIHByaW50X3Rlc3RfaGVhZGVyKHRlc3Q6IFRlc3QpIC0+IE5vbmU6 CiAJdGVzdCAtIFRlc3Qgb2JqZWN0IHJlcHJlc2VudGluZyBjdXJyZW50IHRlc3QgYmVpbmcg cHJpbnRlZAogCSIiIgogCW1lc3NhZ2UgPSB0ZXN0Lm5hbWUKKwlpZiBtZXNzYWdlICE9ICIi OgorCQkjIEFkZCBhIGxlYWRpbmcgc3BhY2UgYmVmb3JlIHRoZSBzdWJ0ZXN0IGNvdW50cyBv bmx5IGlmIGEgdGVzdCBuYW1lCisJCSMgaXMgcHJvdmlkZWQgdXNpbmcgYSAiIyBTdWJ0ZXN0 IiBoZWFkZXIgbGluZS4KKwkJbWVzc2FnZSArPSAiICIKIAlpZiB0ZXN0LmV4cGVjdGVkX2Nv dW50OgogCQlpZiB0ZXN0LmV4cGVjdGVkX2NvdW50ID09IDE6Ci0JCQltZXNzYWdlICs9ICcg KDEgc3VidGVzdCknCisJCQltZXNzYWdlICs9ICcoMSBzdWJ0ZXN0KScKIAkJZWxzZToKLQkJ CW1lc3NhZ2UgKz0gZicgKHt0ZXN0LmV4cGVjdGVkX2NvdW50fSBzdWJ0ZXN0cyknCisJCQlt ZXNzYWdlICs9IGYnKHt0ZXN0LmV4cGVjdGVkX2NvdW50fSBzdWJ0ZXN0cyknCiAJc3Rkb3V0 LnByaW50X3dpdGhfdGltZXN0YW1wKGZvcm1hdF90ZXN0X2RpdmlkZXIobWVzc2FnZSwgbGVu KG1lc3NhZ2UpKSkKIAogZGVmIHByaW50X2xvZyhsb2c6IEl0ZXJhYmxlW3N0cl0pIC0+IE5v bmU6CiAJIiIiUHJpbnRzIGFsbCBzdHJpbmdzIGluIHNhdmVkIGxvZyBmb3IgdGVzdCBpbiB5 ZWxsb3cuIiIiCi0JZm9yIG0gaW4gbG9nOgotCQlzdGRvdXQucHJpbnRfd2l0aF90aW1lc3Rh bXAoc3Rkb3V0LnllbGxvdyhtKSkKKwlmb3JtYXR0ZWQgPSB0ZXh0d3JhcC5kZWRlbnQoJ1xu Jy5qb2luKGxvZykpCisJZm9yIGxpbmUgaW4gZm9ybWF0dGVkLnNwbGl0bGluZXMoKToKKwkJ c3Rkb3V0LnByaW50X3dpdGhfdGltZXN0YW1wKHN0ZG91dC55ZWxsb3cobGluZSkpCiAKIGRl ZiBmb3JtYXRfdGVzdF9yZXN1bHQodGVzdDogVGVzdCkgLT4gc3RyOgogCSIiIgpAQCAtNTY1 LDYgKzU2NSw0MCBAQCBkZWYgcHJpbnRfdGVzdF9mb290ZXIodGVzdDogVGVzdCkgLT4gTm9u ZToKIAlzdGRvdXQucHJpbnRfd2l0aF90aW1lc3RhbXAoZm9ybWF0X3Rlc3RfZGl2aWRlciht ZXNzYWdlLAogCQlsZW4obWVzc2FnZSkgLSBzdGRvdXQuY29sb3JfbGVuKCkpKQogCisKKwor ZGVmIF9zdW1tYXJpemVfZmFpbGVkX3Rlc3RzKHRlc3Q6IFRlc3QpIC0+IHN0cjoKKwkiIiJU cmllcyB0byBzdW1tYXJpemUgYWxsIHRoZSBmYWlsaW5nIHN1YnRlc3RzIGluIGB0ZXN0YC4i IiIKKworCWRlZiBmYWlsZWRfbmFtZXModGVzdDogVGVzdCwgcGFyZW50X25hbWU6IHN0cikg LT4gTGlzdFtzdHJdOgorCQkjIE5vdGU6IHdlIHVzZSAnbWFpbicgaW50ZXJuYWxseSBmb3Ig dGhlIHRvcC1sZXZlbCB0ZXN0LgorCQlpZiBub3QgcGFyZW50X25hbWUgb3IgcGFyZW50X25h bWUgPT0gJ21haW4nOgorCQkJZnVsbF9uYW1lID0gdGVzdC5uYW1lCisJCWVsc2U6CisJCQlm dWxsX25hbWUgPSBwYXJlbnRfbmFtZSArICcuJyArIHRlc3QubmFtZQorCisJCWlmIG5vdCB0 ZXN0LnN1YnRlc3RzOiAgIyB0aGlzIGlzIGEgbGVhZiBub2RlCisJCQlyZXR1cm4gW2Z1bGxf bmFtZV0KKworCQkjIElmIGFsbCB0aGUgY2hpbGRyZW4gZmFpbGVkLCBqdXN0IHNheSB0aGlz IHN1YnRlc3QgZmFpbGVkLgorCQkjIERvbid0IHN1bW1hcml6ZSBpdCBkb3duICJ0aGUgdG9w LWxldmVsIHRlc3QgZmFpbGVkIiwgdGhvdWdoLgorCQlmYWlsZWRfc3VidGVzdHMgPSBbc3Vi IGZvciBzdWIgaW4gdGVzdC5zdWJ0ZXN0cyBpZiBub3Qgc3ViLm9rX3N0YXR1cygpXQorCQlp ZiBwYXJlbnRfbmFtZSBhbmQgbGVuKGZhaWxlZF9zdWJ0ZXN0cykgPT0gIGxlbih0ZXN0LnN1 YnRlc3RzKToKKwkJCXJldHVybiBbZnVsbF9uYW1lXQorCisJCWFsbF9mYWlsdXJlcyA9IFtd ICAjIHR5cGU6IExpc3Rbc3RyXQorCQlmb3IgdCBpbiBmYWlsZWRfc3VidGVzdHM6CisJCQlh bGxfZmFpbHVyZXMuZXh0ZW5kKGZhaWxlZF9uYW1lcyh0LCBmdWxsX25hbWUpKQorCQlyZXR1 cm4gYWxsX2ZhaWx1cmVzCisKKwlmYWlsdXJlcyA9IGZhaWxlZF9uYW1lcyh0ZXN0LCAnJykK KwkjIElmIHRoZXJlIGFyZSB0b28gbWFueSBmYWlsdXJlcywgcHJpbnRpbmcgdGhlbSBvdXQg d2lsbCBqdXN0IGJlIG5vaXN5LgorCWlmIGxlbihmYWlsdXJlcykgPiAxMDogICMgdGhpcyBp cyBhbiBhcmJpdHJhcnkgbGltaXQKKwkJcmV0dXJuICcnCisKKwlyZXR1cm4gJ0ZhaWx1cmVz OiAnICsgJywgJy5qb2luKGZhaWx1cmVzKQorCisKIGRlZiBwcmludF9zdW1tYXJ5X2xpbmUo dGVzdDogVGVzdCkgLT4gTm9uZToKIAkiIiIKIAlQcmludHMgc3VtbWFyeSBsaW5lIG9mIHRl c3Qgb2JqZWN0LiBDb2xvciBvZiBsaW5lIGlzIGRlcGVuZGVudCBvbgpAQCAtNTg3LDYgKzYy MSwxNSBAQCBkZWYgcHJpbnRfc3VtbWFyeV9saW5lKHRlc3Q6IFRlc3QpIC0+IE5vbmU6CiAJ CWNvbG9yID0gc3Rkb3V0LnJlZAogCXN0ZG91dC5wcmludF93aXRoX3RpbWVzdGFtcChjb2xv cihmJ1Rlc3RpbmcgY29tcGxldGUuIHt0ZXN0LmNvdW50c30nKSkKIAorCSMgU3VtbWFyaXpl IGZhaWx1cmVzIHRoYXQgbWlnaHQgaGF2ZSBnb25lIG9mZi1zY3JlZW4gc2luY2Ugd2UgaGFk IGEgbG90CisJIyBvZiB0ZXN0cyAoYXJiaXRyYXJpbHkgZGVmaW5lZCBhcyA+PTEwMCBmb3Ig bm93KS4KKwlpZiB0ZXN0Lm9rX3N0YXR1cygpIG9yIHRlc3QuY291bnRzLnRvdGFsKCkgPCAx MDA6CisJCXJldHVybgorCXN1bW1hcml6ZWQgPSBfc3VtbWFyaXplX2ZhaWxlZF90ZXN0cyh0 ZXN0KQorCWlmIG5vdCBzdW1tYXJpemVkOgorCQlyZXR1cm4KKwlzdGRvdXQucHJpbnRfd2l0 aF90aW1lc3RhbXAoY29sb3Ioc3VtbWFyaXplZCkpCisKICMgT3RoZXIgbWV0aG9kczoKIAog ZGVmIGJ1YmJsZV91cF90ZXN0X3Jlc3VsdHModGVzdDogVGVzdCkgLT4gTm9uZToKQEAgLTYw OSw3ICs2NTIsNyBAQCBkZWYgYnViYmxlX3VwX3Rlc3RfcmVzdWx0cyh0ZXN0OiBUZXN0KSAt PiBOb25lOgogCWVsaWYgdGVzdC5jb3VudHMuZ2V0X3N0YXR1cygpID09IFRlc3RTdGF0dXMu VEVTVF9DUkFTSEVEOgogCQl0ZXN0LnN0YXR1cyA9IFRlc3RTdGF0dXMuVEVTVF9DUkFTSEVE CiAKLWRlZiBwYXJzZV90ZXN0KGxpbmVzOiBMaW5lU3RyZWFtLCBleHBlY3RlZF9udW06IGlu dCwgbG9nOiBMaXN0W3N0cl0pIC0+IFRlc3Q6CitkZWYgcGFyc2VfdGVzdChsaW5lczogTGlu ZVN0cmVhbSwgZXhwZWN0ZWRfbnVtOiBpbnQsIGxvZzogTGlzdFtzdHJdLCBpc19zdWJ0ZXN0 OiBib29sKSAtPiBUZXN0OgogCSIiIgogCUZpbmRzIG5leHQgdGVzdCB0byBwYXJzZSBpbiBM aW5lU3RyZWFtLCBjcmVhdGVzIG5ldyBUZXN0IG9iamVjdCwKIAlwYXJzZXMgYW55IHN1YnRl c3RzIG9mIHRoZSB0ZXN0LCBwb3B1bGF0ZXMgVGVzdCBvYmplY3Qgd2l0aCBhbGwKQEAgLTYy NywxNSArNjcwLDMyIEBAIGRlZiBwYXJzZV90ZXN0KGxpbmVzOiBMaW5lU3RyZWFtLCBleHBl Y3RlZF9udW06IGludCwgbG9nOiBMaXN0W3N0cl0pIC0+IFRlc3Q6CiAJMS4uNAogCVtzdWJ0 ZXN0c10KIAotCS0gU3VidGVzdCBoZWFkZXIgbGluZQorCS0gU3VidGVzdCBoZWFkZXIgKG11 c3QgaW5jbHVkZSBlaXRoZXIgdGhlIEtUQVAgdmVyc2lvbiBsaW5lIG9yCisJICAiIyBTdWJ0 ZXN0IiBoZWFkZXIgbGluZSkKIAotCUV4YW1wbGU6CisJRXhhbXBsZSAocHJlZmVycmVkIGZv cm1hdCB3aXRoIGJvdGggS1RBUCB2ZXJzaW9uIGxpbmUgYW5kCisJIiMgU3VidGVzdCIgbGlu ZSk6CiAKKwlLVEFQIHZlcnNpb24gMQogCSMgU3VidGVzdDogbmFtZQogCTEuLjMKIAlbc3Vi dGVzdHNdCiAJb2sgMSBuYW1lCiAKKwlFeGFtcGxlIChvbmx5ICIjIFN1YnRlc3QiIGxpbmUp OgorCisJIyBTdWJ0ZXN0OiBuYW1lCisJMS4uMworCVtzdWJ0ZXN0c10KKwlvayAxIG5hbWUK KworCUV4YW1wbGUgKG9ubHkgS1RBUCB2ZXJzaW9uIGxpbmUsIGNvbXBsaWFudCB3aXRoIEtU QVAgdjEgc3BlYyk6CisKKwlLVEFQIHZlcnNpb24gMQorCTEuLjMKKwlbc3VidGVzdHNdCisJ b2sgMSBuYW1lCisKIAktIFRlc3QgcmVzdWx0IGxpbmUKIAogCUV4YW1wbGU6CkBAIC02NDcs MjggKzcwNywyOSBAQCBkZWYgcGFyc2VfdGVzdChsaW5lczogTGluZVN0cmVhbSwgZXhwZWN0 ZWRfbnVtOiBpbnQsIGxvZzogTGlzdFtzdHJdKSAtPiBUZXN0OgogCWV4cGVjdGVkX251bSAt IGV4cGVjdGVkIHRlc3QgbnVtYmVyIGZvciB0ZXN0IHRvIGJlIHBhcnNlZAogCWxvZyAtIGxp c3Qgb2Ygc3RyaW5ncyBjb250YWluaW5nIGFueSBwcmVjZWRpbmcgZGlhZ25vc3RpYyBsaW5l cwogCQljb3JyZXNwb25kaW5nIHRvIHRoZSBjdXJyZW50IHRlc3QKKwlpc19zdWJ0ZXN0IC0g Ym9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGVzdCBpcyBhIHN1YnRlc3QKIAogCVJldHVy bjoKIAlUZXN0IG9iamVjdCBwb3B1bGF0ZWQgd2l0aCBjaGFyYWN0ZXJpc3RpY3MgYW5kIGFu eSBzdWJ0ZXN0cwogCSIiIgogCXRlc3QgPSBUZXN0KCkKIAl0ZXN0LmxvZy5leHRlbmQobG9n KQotCXBhcmVudF90ZXN0ID0gRmFsc2UKLQltYWluID0gcGFyc2Vfa3RhcF9oZWFkZXIobGlu ZXMsIHRlc3QpCi0JaWYgbWFpbjoKLQkJIyBJZiBLVEFQL1RBUCBoZWFkZXIgaXMgZm91bmQs IGF0dGVtcHQgdG8gcGFyc2UKKwlpZiBub3QgaXNfc3VidGVzdDoKKwkJIyBJZiBwYXJzaW5n IHRoZSBtYWluL3RvcC1sZXZlbCB0ZXN0LCBwYXJzZSBLVEFQIHZlcnNpb24gbGluZSBhbmQK IAkJIyB0ZXN0IHBsYW4KIAkJdGVzdC5uYW1lID0gIm1haW4iCisJCWt0YXBfbGluZSA9IHBh cnNlX2t0YXBfaGVhZGVyKGxpbmVzLCB0ZXN0KQogCQlwYXJzZV90ZXN0X3BsYW4obGluZXMs IHRlc3QpCiAJCXBhcmVudF90ZXN0ID0gVHJ1ZQogCWVsc2U6Ci0JCSMgSWYgS1RBUC9UQVAg aGVhZGVyIGlzIG5vdCBmb3VuZCwgdGVzdCBtdXN0IGJlIHN1YnRlc3QKLQkJIyBoZWFkZXIg b3IgdGVzdCByZXN1bHQgbGluZSBzbyBwYXJzZSBhdHRlbXB0IHRvIHBhcnNlcgotCQkjIHN1 YnRlc3QgaGVhZGVyCi0JCXBhcmVudF90ZXN0ID0gcGFyc2VfdGVzdF9oZWFkZXIobGluZXMs IHRlc3QpCisJCSMgSWYgbm90IHRoZSBtYWluIHRlc3QsIGF0dGVtcHQgdG8gcGFyc2UgYSB0 ZXN0IGhlYWRlciBjb250YWluaW5nCisJCSMgdGhlIEtUQVAgdmVyc2lvbiBsaW5lIGFuZC9v ciBzdWJ0ZXN0IGhlYWRlciBsaW5lCisJCWt0YXBfbGluZSA9IHBhcnNlX2t0YXBfaGVhZGVy KGxpbmVzLCB0ZXN0KQorCQlzdWJ0ZXN0X2xpbmUgPSBwYXJzZV90ZXN0X2hlYWRlcihsaW5l cywgdGVzdCkKKwkJcGFyZW50X3Rlc3QgPSAoa3RhcF9saW5lIG9yIHN1YnRlc3RfbGluZSkK IAkJaWYgcGFyZW50X3Rlc3Q6Ci0JCQkjIElmIHN1YnRlc3QgaGVhZGVyIGlzIGZvdW5kLCBh dHRlbXB0IHRvIHBhcnNlCi0JCQkjIHRlc3QgcGxhbiBhbmQgcHJpbnQgaGVhZGVyCisJCQkj IElmIEtUQVAgdmVyc2lvbiBsaW5lIGFuZC9vciBzdWJ0ZXN0IGhlYWRlciBpcyBmb3VuZCwg YXR0ZW1wdAorCQkJIyB0byBwYXJzZSB0ZXN0IHBsYW4gYW5kIHByaW50IHRlc3QgaGVhZGVy CiAJCQlwYXJzZV90ZXN0X3BsYW4obGluZXMsIHRlc3QpCiAJCQlwcmludF90ZXN0X2hlYWRl cih0ZXN0KQogCWV4cGVjdGVkX2NvdW50ID0gdGVzdC5leHBlY3RlZF9jb3VudApAQCAtNjgz LDcgKzc0NCw3IEBAIGRlZiBwYXJzZV90ZXN0KGxpbmVzOiBMaW5lU3RyZWFtLCBleHBlY3Rl ZF9udW06IGludCwgbG9nOiBMaXN0W3N0cl0pIC0+IFRlc3Q6CiAJCXN1Yl9sb2cgPSBwYXJz ZV9kaWFnbm9zdGljKGxpbmVzKQogCQlzdWJfdGVzdCA9IFRlc3QoKQogCQlpZiBub3QgbGlu ZXMgb3IgKHBlZWtfdGVzdF9uYW1lX21hdGNoKGxpbmVzLCB0ZXN0KSBhbmQKLQkJCQlub3Qg bWFpbik6CisJCQkJaXNfc3VidGVzdCk6CiAJCQlpZiBleHBlY3RlZF9jb3VudCBhbmQgdGVz dF9udW0gPD0gZXhwZWN0ZWRfY291bnQ6CiAJCQkJIyBJZiBwYXJzZXIgcmVhY2hlcyBlbmQg b2YgdGVzdCBiZWZvcmUKIAkJCQkjIHBhcnNpbmcgZXhwZWN0ZWQgbnVtYmVyIG9mIHN1YnRl c3RzLCBwcmludApAQCAtNjk3LDIwICs3NTgsMTkgQEAgZGVmIHBhcnNlX3Rlc3QobGluZXM6 IExpbmVTdHJlYW0sIGV4cGVjdGVkX251bTogaW50LCBsb2c6IExpc3Rbc3RyXSkgLT4gVGVz dDoKIAkJCQl0ZXN0LmxvZy5leHRlbmQoc3ViX2xvZykKIAkJCQlicmVhawogCQllbHNlOgot CQkJc3ViX3Rlc3QgPSBwYXJzZV90ZXN0KGxpbmVzLCB0ZXN0X251bSwgc3ViX2xvZykKKwkJ CXN1Yl90ZXN0ID0gcGFyc2VfdGVzdChsaW5lcywgdGVzdF9udW0sIHN1Yl9sb2csIFRydWUp CiAJCXN1YnRlc3RzLmFwcGVuZChzdWJfdGVzdCkKIAkJdGVzdF9udW0gKz0gMQogCXRlc3Qu c3VidGVzdHMgPSBzdWJ0ZXN0cwotCWlmIG5vdCBtYWluOgorCWlmIGlzX3N1YnRlc3Q6CiAJ CSMgSWYgbm90IG1haW4gdGVzdCwgbG9vayBmb3IgdGVzdCByZXN1bHQgbGluZQogCQl0ZXN0 LmxvZy5leHRlbmQocGFyc2VfZGlhZ25vc3RpYyhsaW5lcykpCi0JCWlmIChwYXJlbnRfdGVz dCBhbmQgcGVla190ZXN0X25hbWVfbWF0Y2gobGluZXMsIHRlc3QpKSBvciBcCi0JCQkJbm90 IHBhcmVudF90ZXN0OgotCQkJcGFyc2VfdGVzdF9yZXN1bHQobGluZXMsIHRlc3QsIGV4cGVj dGVkX251bSkKLQkJZWxzZToKKwkJaWYgdGVzdC5uYW1lICE9ICIiIGFuZCBub3QgcGVla190 ZXN0X25hbWVfbWF0Y2gobGluZXMsIHRlc3QpOgogCQkJdGVzdC5hZGRfZXJyb3IoJ21pc3Np bmcgc3VidGVzdCByZXN1bHQgbGluZSEnKQorCQllbHNlOgorCQkJcGFyc2VfdGVzdF9yZXN1 bHQobGluZXMsIHRlc3QsIGV4cGVjdGVkX251bSkKIAotCSMgQ2hlY2sgZm9yIHRoZXJlIGJl aW5nIG5vIHRlc3RzCisJIyBDaGVjayBmb3IgdGhlcmUgYmVpbmcgbm8gc3VidGVzdHMgd2l0 aGluIHBhcmVudCB0ZXN0CiAJaWYgcGFyZW50X3Rlc3QgYW5kIGxlbihzdWJ0ZXN0cykgPT0g MDoKIAkJIyBEb24ndCBvdmVycmlkZSBhIGJhZCBzdGF0dXMgaWYgdGhpcyB0ZXN0IGhhZCBv bmUgcmVwb3J0ZWQuCiAJCSMgQXNzdW1wdGlvbjogbm8gc3VidGVzdHMgbWVhbnMgQ1JBU0hF RCBpcyBmcm9tIFRlc3QuX19pbml0X18oKQpAQCAtNzIwLDExICs3ODAsMTEgQEAgZGVmIHBh cnNlX3Rlc3QobGluZXM6IExpbmVTdHJlYW0sIGV4cGVjdGVkX251bTogaW50LCBsb2c6IExp c3Rbc3RyXSkgLT4gVGVzdDoKIAogCSMgQWRkIHN0YXR1c2VzIHRvIFRlc3RDb3VudHMgYXR0 cmlidXRlIGluIFRlc3Qgb2JqZWN0CiAJYnViYmxlX3VwX3Rlc3RfcmVzdWx0cyh0ZXN0KQot CWlmIHBhcmVudF90ZXN0IGFuZCBub3QgbWFpbjoKKwlpZiBwYXJlbnRfdGVzdCBhbmQgaXNf c3VidGVzdDoKIAkJIyBJZiB0ZXN0IGhhcyBzdWJ0ZXN0cyBhbmQgaXMgbm90IHRoZSBtYWlu IHRlc3Qgb2JqZWN0LCBwcmludAogCQkjIGZvb3Rlci4KIAkJcHJpbnRfdGVzdF9mb290ZXIo dGVzdCkKLQllbGlmIG5vdCBtYWluOgorCWVsaWYgaXNfc3VidGVzdDoKIAkJcHJpbnRfdGVz dF9yZXN1bHQodGVzdCkKIAlyZXR1cm4gdGVzdAogCkBAIC03NDQsMTAgKzgwNCwxMCBAQCBk ZWYgcGFyc2VfcnVuX3Rlc3RzKGtlcm5lbF9vdXRwdXQ6IEl0ZXJhYmxlW3N0cl0pIC0+IFRl c3Q6CiAJdGVzdCA9IFRlc3QoKQogCWlmIG5vdCBsaW5lczoKIAkJdGVzdC5uYW1lID0gJzxt aXNzaW5nPicKLQkJdGVzdC5hZGRfZXJyb3IoJ2NvdWxkIG5vdCBmaW5kIGFueSBLVEFQIG91 dHB1dCEnKQorCQl0ZXN0LmFkZF9lcnJvcignQ291bGQgbm90IGZpbmQgYW55IEtUQVAgb3V0 cHV0LiBEaWQgYW55IEtVbml0IHRlc3RzIHJ1bj8nKQogCQl0ZXN0LnN0YXR1cyA9IFRlc3RT dGF0dXMuRkFJTFVSRV9UT19QQVJTRV9URVNUUwogCWVsc2U6Ci0JCXRlc3QgPSBwYXJzZV90 ZXN0KGxpbmVzLCAwLCBbXSkKKwkJdGVzdCA9IHBhcnNlX3Rlc3QobGluZXMsIDAsIFtdLCBG YWxzZSkKIAkJaWYgdGVzdC5zdGF0dXMgIT0gVGVzdFN0YXR1cy5OT19URVNUUzoKIAkJCXRl c3Quc3RhdHVzID0gdGVzdC5jb3VudHMuZ2V0X3N0YXR1cygpCiAJc3Rkb3V0LnByaW50X3dp dGhfdGltZXN0YW1wKERJVklERVIpCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL2t1bml0 L2t1bml0X3Rvb2xfdGVzdC5weSBiL3Rvb2xzL3Rlc3Rpbmcva3VuaXQva3VuaXRfdG9vbF90 ZXN0LnB5CmluZGV4IGUyY2QyY2MyZTk4Zi4uMGMyMTkwNTE0MTAzIDEwMDc1NQotLS0gYS90 b29scy90ZXN0aW5nL2t1bml0L2t1bml0X3Rvb2xfdGVzdC5weQorKysgYi90b29scy90ZXN0 aW5nL2t1bml0L2t1bml0X3Rvb2xfdGVzdC5weQpAQCAtODAsNiArODAsMTMgQEAgY2xhc3Mg S2NvbmZpZ1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCQlzZWxmLmFzc2VydEVxdWFsKGFj dHVhbF9rY29uZmlnLCBleHBlY3RlZF9rY29uZmlnKQogCiBjbGFzcyBLVW5pdFBhcnNlclRl c3QodW5pdHRlc3QuVGVzdENhc2UpOgorCWRlZiBzZXRVcChzZWxmKToKKwkJc2VsZi5wcmlu dF9tb2NrID0gbW9jay5wYXRjaCgna3VuaXRfcHJpbnRlci5QcmludGVyLnByaW50Jykuc3Rh cnQoKQorCQlzZWxmLmFkZENsZWFudXAobW9jay5wYXRjaC5zdG9wYWxsKQorCisJZGVmIG5v UHJpbnRDYWxsQ29udGFpbnMoc2VsZiwgc3Vic3RyOiBzdHIpOgorCQlmb3IgY2FsbCBpbiBz ZWxmLnByaW50X21vY2subW9ja19jYWxsczoKKwkJCXNlbGYuYXNzZXJ0Tm90SW4oc3Vic3Ry LCBjYWxsLmFyZ3NbMF0pCiAKIAlkZWYgYXNzZXJ0Q29udGFpbnMoc2VsZiwgbmVlZGxlOiBz dHIsIGhheXN0YWNrOiBrdW5pdF9wYXJzZXIuTGluZVN0cmVhbSk6CiAJCSMgQ2xvbmUgdGhl IGl0ZXJhdG9yIHNvIHdlIGNhbiBwcmludCB0aGUgY29udGVudHMgb24gZmFpbHVyZS4KQEAg LTEzMywzMyArMTQwLDI5IEBAIGNsYXNzIEtVbml0UGFyc2VyVGVzdCh1bml0dGVzdC5UZXN0 Q2FzZSk6CiAJCWFsbF9wYXNzZWRfbG9nID0gdGVzdF9kYXRhX3BhdGgoJ3Rlc3RfaXNfdGVz dF9wYXNzZWQtYWxsX3Bhc3NlZC5sb2cnKQogCQl3aXRoIG9wZW4oYWxsX3Bhc3NlZF9sb2cp IGFzIGZpbGU6CiAJCQlyZXN1bHQgPSBrdW5pdF9wYXJzZXIucGFyc2VfcnVuX3Rlc3RzKGZp bGUucmVhZGxpbmVzKCkpCi0JCXNlbGYuYXNzZXJ0RXF1YWwoCi0JCQlrdW5pdF9wYXJzZXIu VGVzdFN0YXR1cy5TVUNDRVNTLAotCQkJcmVzdWx0LnN0YXR1cykKKwkJc2VsZi5hc3NlcnRF cXVhbChrdW5pdF9wYXJzZXIuVGVzdFN0YXR1cy5TVUNDRVNTLCByZXN1bHQuc3RhdHVzKQor CQlzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5jb3VudHMuZXJyb3JzLCAwKQogCiAJZGVmIHRl c3RfcGFyc2Vfc3VjY2Vzc2Z1bF9uZXN0ZWRfdGVzdHNfbG9nKHNlbGYpOgogCQlhbGxfcGFz c2VkX2xvZyA9IHRlc3RfZGF0YV9wYXRoKCd0ZXN0X2lzX3Rlc3RfcGFzc2VkLWFsbF9wYXNz ZWRfbmVzdGVkLmxvZycpCiAJCXdpdGggb3BlbihhbGxfcGFzc2VkX2xvZykgYXMgZmlsZToK IAkJCXJlc3VsdCA9IGt1bml0X3BhcnNlci5wYXJzZV9ydW5fdGVzdHMoZmlsZS5yZWFkbGlu ZXMoKSkKLQkJc2VsZi5hc3NlcnRFcXVhbCgKLQkJCWt1bml0X3BhcnNlci5UZXN0U3RhdHVz LlNVQ0NFU1MsCi0JCQlyZXN1bHQuc3RhdHVzKQorCQlzZWxmLmFzc2VydEVxdWFsKGt1bml0 X3BhcnNlci5UZXN0U3RhdHVzLlNVQ0NFU1MsIHJlc3VsdC5zdGF0dXMpCisJCXNlbGYuYXNz ZXJ0RXF1YWwocmVzdWx0LmNvdW50cy5lcnJvcnMsIDApCiAKIAlkZWYgdGVzdF9rc2VsZnRl c3RfbmVzdGVkKHNlbGYpOgogCQlrc2VsZnRlc3RfbG9nID0gdGVzdF9kYXRhX3BhdGgoJ3Rl c3RfaXNfdGVzdF9wYXNzZWQta3NlbGZ0ZXN0LmxvZycpCiAJCXdpdGggb3Blbihrc2VsZnRl c3RfbG9nKSBhcyBmaWxlOgogCQkJcmVzdWx0ID0ga3VuaXRfcGFyc2VyLnBhcnNlX3J1bl90 ZXN0cyhmaWxlLnJlYWRsaW5lcygpKQotCQkJc2VsZi5hc3NlcnRFcXVhbCgKLQkJCQlrdW5p dF9wYXJzZXIuVGVzdFN0YXR1cy5TVUNDRVNTLAotCQkJCXJlc3VsdC5zdGF0dXMpCisJCXNl bGYuYXNzZXJ0RXF1YWwoa3VuaXRfcGFyc2VyLlRlc3RTdGF0dXMuU1VDQ0VTUywgcmVzdWx0 LnN0YXR1cykKKwkJc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQuY291bnRzLmVycm9ycywgMCkK IAogCWRlZiB0ZXN0X3BhcnNlX2ZhaWxlZF90ZXN0X2xvZyhzZWxmKToKIAkJZmFpbGVkX2xv ZyA9IHRlc3RfZGF0YV9wYXRoKCd0ZXN0X2lzX3Rlc3RfcGFzc2VkLWZhaWx1cmUubG9nJykK IAkJd2l0aCBvcGVuKGZhaWxlZF9sb2cpIGFzIGZpbGU6CiAJCQlyZXN1bHQgPSBrdW5pdF9w YXJzZXIucGFyc2VfcnVuX3Rlc3RzKGZpbGUucmVhZGxpbmVzKCkpCi0JCXNlbGYuYXNzZXJ0 RXF1YWwoCi0JCQlrdW5pdF9wYXJzZXIuVGVzdFN0YXR1cy5GQUlMVVJFLAotCQkJcmVzdWx0 LnN0YXR1cykKKwkJc2VsZi5hc3NlcnRFcXVhbChrdW5pdF9wYXJzZXIuVGVzdFN0YXR1cy5G QUlMVVJFLCByZXN1bHQuc3RhdHVzKQorCQlzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5jb3Vu dHMuZXJyb3JzLCAwKQogCiAJZGVmIHRlc3Rfbm9faGVhZGVyKHNlbGYpOgogCQllbXB0eV9s b2cgPSB0ZXN0X2RhdGFfcGF0aCgndGVzdF9pc190ZXN0X3Bhc3NlZC1ub190ZXN0c19ydW5f bm9faGVhZGVyLmxvZycpCkBAIC0xNjcsOSArMTcwLDggQEAgY2xhc3MgS1VuaXRQYXJzZXJU ZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAkJCXJlc3VsdCA9IGt1bml0X3BhcnNlci5wYXJz ZV9ydW5fdGVzdHMoCiAJCQkJa3VuaXRfcGFyc2VyLmV4dHJhY3RfdGFwX2xpbmVzKGZpbGUu cmVhZGxpbmVzKCkpKQogCQlzZWxmLmFzc2VydEVxdWFsKDAsIGxlbihyZXN1bHQuc3VidGVz dHMpKQotCQlzZWxmLmFzc2VydEVxdWFsKAotCQkJa3VuaXRfcGFyc2VyLlRlc3RTdGF0dXMu RkFJTFVSRV9UT19QQVJTRV9URVNUUywKLQkJCXJlc3VsdC5zdGF0dXMpCisJCXNlbGYuYXNz ZXJ0RXF1YWwoa3VuaXRfcGFyc2VyLlRlc3RTdGF0dXMuRkFJTFVSRV9UT19QQVJTRV9URVNU UywgcmVzdWx0LnN0YXR1cykKKwkJc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQuY291bnRzLmVy cm9ycywgMSkKIAogCWRlZiB0ZXN0X21pc3NpbmdfdGVzdF9wbGFuKHNlbGYpOgogCQltaXNz aW5nX3BsYW5fbG9nID0gdGVzdF9kYXRhX3BhdGgoJ3Rlc3RfaXNfdGVzdF9wYXNzZWQtJwpA QCAtMTc5LDEyICsxODEsOCBAQCBjbGFzcyBLVW5pdFBhcnNlclRlc3QodW5pdHRlc3QuVGVz dENhc2UpOgogCQkJCWt1bml0X3BhcnNlci5leHRyYWN0X3RhcF9saW5lcygKIAkJCQlmaWxl LnJlYWRsaW5lcygpKSkKIAkJIyBBIG1pc3NpbmcgdGVzdCBwbGFuIGlzIG5vdCBhbiBlcnJv ci4KLQkJc2VsZi5hc3NlcnRFcXVhbCgwLCByZXN1bHQuY291bnRzLmVycm9ycykKLQkJIyBB bGwgdGVzdHMgc2hvdWxkIGJlIGFjY291bnRlZCBmb3IuCi0JCXNlbGYuYXNzZXJ0RXF1YWwo MTAsIHJlc3VsdC5jb3VudHMudG90YWwoKSkKLQkJc2VsZi5hc3NlcnRFcXVhbCgKLQkJCWt1 bml0X3BhcnNlci5UZXN0U3RhdHVzLlNVQ0NFU1MsCi0JCQlyZXN1bHQuc3RhdHVzKQorCQlz ZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5jb3VudHMsIGt1bml0X3BhcnNlci5UZXN0Q291bnRz KHBhc3NlZD0xMCwgZXJyb3JzPTApKQorCQlzZWxmLmFzc2VydEVxdWFsKGt1bml0X3BhcnNl ci5UZXN0U3RhdHVzLlNVQ0NFU1MsIHJlc3VsdC5zdGF0dXMpCiAKIAlkZWYgdGVzdF9ub190 ZXN0cyhzZWxmKToKIAkJaGVhZGVyX2xvZyA9IHRlc3RfZGF0YV9wYXRoKCd0ZXN0X2lzX3Rl c3RfcGFzc2VkLW5vX3Rlc3RzX3J1bl93aXRoX2hlYWRlci5sb2cnKQpAQCAtMTkyLDkgKzE5 MCw4IEBAIGNsYXNzIEtVbml0UGFyc2VyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAJCQly ZXN1bHQgPSBrdW5pdF9wYXJzZXIucGFyc2VfcnVuX3Rlc3RzKAogCQkJCWt1bml0X3BhcnNl ci5leHRyYWN0X3RhcF9saW5lcyhmaWxlLnJlYWRsaW5lcygpKSkKIAkJc2VsZi5hc3NlcnRF cXVhbCgwLCBsZW4ocmVzdWx0LnN1YnRlc3RzKSkKLQkJc2VsZi5hc3NlcnRFcXVhbCgKLQkJ CWt1bml0X3BhcnNlci5UZXN0U3RhdHVzLk5PX1RFU1RTLAotCQkJcmVzdWx0LnN0YXR1cykK KwkJc2VsZi5hc3NlcnRFcXVhbChrdW5pdF9wYXJzZXIuVGVzdFN0YXR1cy5OT19URVNUUywg cmVzdWx0LnN0YXR1cykKKwkJc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQuY291bnRzLmVycm9y cywgMSkKIAogCWRlZiB0ZXN0X25vX3Rlc3RzX25vX3BsYW4oc2VsZik6CiAJCW5vX3BsYW5f bG9nID0gdGVzdF9kYXRhX3BhdGgoJ3Rlc3RfaXNfdGVzdF9wYXNzZWQtbm9fdGVzdHNfbm9f cGxhbi5sb2cnKQpAQCAtMjA1LDcgKzIwMiw3IEBAIGNsYXNzIEtVbml0UGFyc2VyVGVzdCh1 bml0dGVzdC5UZXN0Q2FzZSk6CiAJCXNlbGYuYXNzZXJ0RXF1YWwoCiAJCQlrdW5pdF9wYXJz ZXIuVGVzdFN0YXR1cy5OT19URVNUUywKIAkJCXJlc3VsdC5zdWJ0ZXN0c1swXS5zdWJ0ZXN0 c1swXS5zdGF0dXMpCi0JCXNlbGYuYXNzZXJ0RXF1YWwoMSwgcmVzdWx0LmNvdW50cy5lcnJv cnMpCisJCXNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LmNvdW50cywga3VuaXRfcGFyc2VyLlRl c3RDb3VudHMocGFzc2VkPTEsIGVycm9ycz0xKSkKIAogCiAJZGVmIHRlc3Rfbm9fa3VuaXRf b3V0cHV0KHNlbGYpOgpAQCAtMjE0LDkgKzIxMSwxMCBAQCBjbGFzcyBLVW5pdFBhcnNlclRl c3QodW5pdHRlc3QuVGVzdENhc2UpOgogCQl3aXRoIG9wZW4oY3Jhc2hfbG9nKSBhcyBmaWxl OgogCQkJcmVzdWx0ID0ga3VuaXRfcGFyc2VyLnBhcnNlX3J1bl90ZXN0cygKIAkJCQlrdW5p dF9wYXJzZXIuZXh0cmFjdF90YXBfbGluZXMoZmlsZS5yZWFkbGluZXMoKSkpCi0JCXByaW50 X21vY2suYXNzZXJ0X2FueV9jYWxsKFN0ckNvbnRhaW5zKCdjb3VsZCBub3QgZmluZCBhbnkg S1RBUCBvdXRwdXQhJykpCisJCXByaW50X21vY2suYXNzZXJ0X2FueV9jYWxsKFN0ckNvbnRh aW5zKCdDb3VsZCBub3QgZmluZCBhbnkgS1RBUCBvdXRwdXQuJykpCiAJCXByaW50X21vY2su c3RvcCgpCiAJCXNlbGYuYXNzZXJ0RXF1YWwoMCwgbGVuKHJlc3VsdC5zdWJ0ZXN0cykpCisJ CXNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LmNvdW50cy5lcnJvcnMsIDEpCiAKIAlkZWYgdGVz dF9za2lwcGVkX3Rlc3Qoc2VsZik6CiAJCXNraXBwZWRfbG9nID0gdGVzdF9kYXRhX3BhdGgo J3Rlc3Rfc2tpcF90ZXN0cy5sb2cnKQpAQCAtMjI0LDE4ICsyMjIsMTYgQEAgY2xhc3MgS1Vu aXRQYXJzZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAkJCXJlc3VsdCA9IGt1bml0X3Bh cnNlci5wYXJzZV9ydW5fdGVzdHMoZmlsZS5yZWFkbGluZXMoKSkKIAogCQkjIEEgc2tpcHBl ZCB0ZXN0IGRvZXMgbm90IGZhaWwgdGhlIHdob2xlIHN1aXRlLgotCQlzZWxmLmFzc2VydEVx dWFsKAotCQkJa3VuaXRfcGFyc2VyLlRlc3RTdGF0dXMuU1VDQ0VTUywKLQkJCXJlc3VsdC5z dGF0dXMpCisJCXNlbGYuYXNzZXJ0RXF1YWwoa3VuaXRfcGFyc2VyLlRlc3RTdGF0dXMuU1VD Q0VTUywgcmVzdWx0LnN0YXR1cykKKwkJc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQuY291bnRz LCBrdW5pdF9wYXJzZXIuVGVzdENvdW50cyhwYXNzZWQ9NCwgc2tpcHBlZD0xKSkKIAogCWRl ZiB0ZXN0X3NraXBwZWRfYWxsX3Rlc3RzKHNlbGYpOgogCQlza2lwcGVkX2xvZyA9IHRlc3Rf ZGF0YV9wYXRoKCd0ZXN0X3NraXBfYWxsX3Rlc3RzLmxvZycpCiAJCXdpdGggb3Blbihza2lw cGVkX2xvZykgYXMgZmlsZToKIAkJCXJlc3VsdCA9IGt1bml0X3BhcnNlci5wYXJzZV9ydW5f dGVzdHMoZmlsZS5yZWFkbGluZXMoKSkKIAotCQlzZWxmLmFzc2VydEVxdWFsKAotCQkJa3Vu aXRfcGFyc2VyLlRlc3RTdGF0dXMuU0tJUFBFRCwKLQkJCXJlc3VsdC5zdGF0dXMpCisJCXNl bGYuYXNzZXJ0RXF1YWwoa3VuaXRfcGFyc2VyLlRlc3RTdGF0dXMuU0tJUFBFRCwgcmVzdWx0 LnN0YXR1cykKKwkJc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQuY291bnRzLCBrdW5pdF9wYXJz ZXIuVGVzdENvdW50cyhza2lwcGVkPTUpKQogCiAJZGVmIHRlc3RfaWdub3Jlc19oeXBoZW4o c2VsZik6CiAJCWh5cGhlbl9sb2cgPSB0ZXN0X2RhdGFfcGF0aCgndGVzdF9zdHJpcF9oeXBo ZW4ubG9nJykKQEAgLTI0Myw3MSArMjM5LDExMiBAQCBjbGFzcyBLVW5pdFBhcnNlclRlc3Qo dW5pdHRlc3QuVGVzdENhc2UpOgogCQkJcmVzdWx0ID0ga3VuaXRfcGFyc2VyLnBhcnNlX3J1 bl90ZXN0cyhmaWxlLnJlYWRsaW5lcygpKQogCiAJCSMgQSBza2lwcGVkIHRlc3QgZG9lcyBu b3QgZmFpbCB0aGUgd2hvbGUgc3VpdGUuCi0JCXNlbGYuYXNzZXJ0RXF1YWwoCi0JCQlrdW5p dF9wYXJzZXIuVGVzdFN0YXR1cy5TVUNDRVNTLAotCQkJcmVzdWx0LnN0YXR1cykKKwkJc2Vs Zi5hc3NlcnRFcXVhbChrdW5pdF9wYXJzZXIuVGVzdFN0YXR1cy5TVUNDRVNTLCByZXN1bHQu c3RhdHVzKQogCQlzZWxmLmFzc2VydEVxdWFsKAogCQkJInN5c2N0bF90ZXN0IiwKIAkJCXJl c3VsdC5zdWJ0ZXN0c1swXS5uYW1lKQogCQlzZWxmLmFzc2VydEVxdWFsKAogCQkJImV4YW1w bGUiLAogCQkJcmVzdWx0LnN1YnRlc3RzWzFdLm5hbWUpCi0JCWZpbGUuY2xvc2UoKQotCiAK IAlkZWYgdGVzdF9pZ25vcmVzX3ByZWZpeF9wcmludGtfdGltZShzZWxmKToKIAkJcHJlZml4 X2xvZyA9IHRlc3RfZGF0YV9wYXRoKCd0ZXN0X2NvbmZpZ19wcmludGtfdGltZS5sb2cnKQog CQl3aXRoIG9wZW4ocHJlZml4X2xvZykgYXMgZmlsZToKIAkJCXJlc3VsdCA9IGt1bml0X3Bh cnNlci5wYXJzZV9ydW5fdGVzdHMoZmlsZS5yZWFkbGluZXMoKSkKLQkJCXNlbGYuYXNzZXJ0 RXF1YWwoCi0JCQkJa3VuaXRfcGFyc2VyLlRlc3RTdGF0dXMuU1VDQ0VTUywKLQkJCQlyZXN1 bHQuc3RhdHVzKQotCQkJc2VsZi5hc3NlcnRFcXVhbCgna3VuaXQtcmVzb3VyY2UtdGVzdCcs IHJlc3VsdC5zdWJ0ZXN0c1swXS5uYW1lKQorCQlzZWxmLmFzc2VydEVxdWFsKGt1bml0X3Bh cnNlci5UZXN0U3RhdHVzLlNVQ0NFU1MsIHJlc3VsdC5zdGF0dXMpCisJCXNlbGYuYXNzZXJ0 RXF1YWwoJ2t1bml0LXJlc291cmNlLXRlc3QnLCByZXN1bHQuc3VidGVzdHNbMF0ubmFtZSkK KwkJc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQuY291bnRzLmVycm9ycywgMCkKIAogCWRlZiB0 ZXN0X2lnbm9yZXNfbXVsdGlwbGVfcHJlZml4ZXMoc2VsZik6CiAJCXByZWZpeF9sb2cgPSB0 ZXN0X2RhdGFfcGF0aCgndGVzdF9tdWx0aXBsZV9wcmVmaXhlcy5sb2cnKQogCQl3aXRoIG9w ZW4ocHJlZml4X2xvZykgYXMgZmlsZToKIAkJCXJlc3VsdCA9IGt1bml0X3BhcnNlci5wYXJz ZV9ydW5fdGVzdHMoZmlsZS5yZWFkbGluZXMoKSkKLQkJCXNlbGYuYXNzZXJ0RXF1YWwoCi0J CQkJa3VuaXRfcGFyc2VyLlRlc3RTdGF0dXMuU1VDQ0VTUywKLQkJCQlyZXN1bHQuc3RhdHVz KQotCQkJc2VsZi5hc3NlcnRFcXVhbCgna3VuaXQtcmVzb3VyY2UtdGVzdCcsIHJlc3VsdC5z dWJ0ZXN0c1swXS5uYW1lKQorCQlzZWxmLmFzc2VydEVxdWFsKGt1bml0X3BhcnNlci5UZXN0 U3RhdHVzLlNVQ0NFU1MsIHJlc3VsdC5zdGF0dXMpCisJCXNlbGYuYXNzZXJ0RXF1YWwoJ2t1 bml0LXJlc291cmNlLXRlc3QnLCByZXN1bHQuc3VidGVzdHNbMF0ubmFtZSkKKwkJc2VsZi5h c3NlcnRFcXVhbChyZXN1bHQuY291bnRzLmVycm9ycywgMCkKIAogCWRlZiB0ZXN0X3ByZWZp eF9taXhlZF9rZXJuZWxfb3V0cHV0KHNlbGYpOgogCQltaXhlZF9wcmVmaXhfbG9nID0gdGVz dF9kYXRhX3BhdGgoJ3Rlc3RfaW50ZXJydXB0ZWRfdGFwX291dHB1dC5sb2cnKQogCQl3aXRo IG9wZW4obWl4ZWRfcHJlZml4X2xvZykgYXMgZmlsZToKIAkJCXJlc3VsdCA9IGt1bml0X3Bh cnNlci5wYXJzZV9ydW5fdGVzdHMoZmlsZS5yZWFkbGluZXMoKSkKLQkJCXNlbGYuYXNzZXJ0 RXF1YWwoCi0JCQkJa3VuaXRfcGFyc2VyLlRlc3RTdGF0dXMuU1VDQ0VTUywKLQkJCQlyZXN1 bHQuc3RhdHVzKQotCQkJc2VsZi5hc3NlcnRFcXVhbCgna3VuaXQtcmVzb3VyY2UtdGVzdCcs IHJlc3VsdC5zdWJ0ZXN0c1swXS5uYW1lKQorCQlzZWxmLmFzc2VydEVxdWFsKGt1bml0X3Bh cnNlci5UZXN0U3RhdHVzLlNVQ0NFU1MsIHJlc3VsdC5zdGF0dXMpCisJCXNlbGYuYXNzZXJ0 RXF1YWwoJ2t1bml0LXJlc291cmNlLXRlc3QnLCByZXN1bHQuc3VidGVzdHNbMF0ubmFtZSkK KwkJc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQuY291bnRzLmVycm9ycywgMCkKIAogCWRlZiB0 ZXN0X3ByZWZpeF9wb3VuZHNpZ24oc2VsZik6CiAJCXBvdW5kX2xvZyA9IHRlc3RfZGF0YV9w YXRoKCd0ZXN0X3BvdW5kX3NpZ24ubG9nJykKIAkJd2l0aCBvcGVuKHBvdW5kX2xvZykgYXMg ZmlsZToKIAkJCXJlc3VsdCA9IGt1bml0X3BhcnNlci5wYXJzZV9ydW5fdGVzdHMoZmlsZS5y ZWFkbGluZXMoKSkKLQkJCXNlbGYuYXNzZXJ0RXF1YWwoCi0JCQkJa3VuaXRfcGFyc2VyLlRl c3RTdGF0dXMuU1VDQ0VTUywKLQkJCQlyZXN1bHQuc3RhdHVzKQotCQkJc2VsZi5hc3NlcnRF cXVhbCgna3VuaXQtcmVzb3VyY2UtdGVzdCcsIHJlc3VsdC5zdWJ0ZXN0c1swXS5uYW1lKQor CQlzZWxmLmFzc2VydEVxdWFsKGt1bml0X3BhcnNlci5UZXN0U3RhdHVzLlNVQ0NFU1MsIHJl c3VsdC5zdGF0dXMpCisJCXNlbGYuYXNzZXJ0RXF1YWwoJ2t1bml0LXJlc291cmNlLXRlc3Qn LCByZXN1bHQuc3VidGVzdHNbMF0ubmFtZSkKKwkJc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQu Y291bnRzLmVycm9ycywgMCkKIAogCWRlZiB0ZXN0X2tlcm5lbF9wYW5pY19lbmQoc2VsZik6 CiAJCXBhbmljX2xvZyA9IHRlc3RfZGF0YV9wYXRoKCd0ZXN0X2tlcm5lbF9wYW5pY19pbnRl cnJ1cHQubG9nJykKIAkJd2l0aCBvcGVuKHBhbmljX2xvZykgYXMgZmlsZToKIAkJCXJlc3Vs dCA9IGt1bml0X3BhcnNlci5wYXJzZV9ydW5fdGVzdHMoZmlsZS5yZWFkbGluZXMoKSkKLQkJ CXNlbGYuYXNzZXJ0RXF1YWwoCi0JCQkJa3VuaXRfcGFyc2VyLlRlc3RTdGF0dXMuVEVTVF9D UkFTSEVELAotCQkJCXJlc3VsdC5zdGF0dXMpCi0JCQlzZWxmLmFzc2VydEVxdWFsKCdrdW5p dC1yZXNvdXJjZS10ZXN0JywgcmVzdWx0LnN1YnRlc3RzWzBdLm5hbWUpCisJCXNlbGYuYXNz ZXJ0RXF1YWwoa3VuaXRfcGFyc2VyLlRlc3RTdGF0dXMuVEVTVF9DUkFTSEVELCByZXN1bHQu c3RhdHVzKQorCQlzZWxmLmFzc2VydEVxdWFsKCdrdW5pdC1yZXNvdXJjZS10ZXN0JywgcmVz dWx0LnN1YnRlc3RzWzBdLm5hbWUpCisJCXNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKHJlc3Vs dC5jb3VudHMuZXJyb3JzLCAxKQogCiAJZGVmIHRlc3RfcG91bmRfbm9fcHJlZml4KHNlbGYp OgogCQlwb3VuZF9sb2cgPSB0ZXN0X2RhdGFfcGF0aCgndGVzdF9wb3VuZF9ub19wcmVmaXgu bG9nJykKIAkJd2l0aCBvcGVuKHBvdW5kX2xvZykgYXMgZmlsZToKIAkJCXJlc3VsdCA9IGt1 bml0X3BhcnNlci5wYXJzZV9ydW5fdGVzdHMoZmlsZS5yZWFkbGluZXMoKSkKLQkJCXNlbGYu YXNzZXJ0RXF1YWwoCi0JCQkJa3VuaXRfcGFyc2VyLlRlc3RTdGF0dXMuU1VDQ0VTUywKLQkJ CQlyZXN1bHQuc3RhdHVzKQotCQkJc2VsZi5hc3NlcnRFcXVhbCgna3VuaXQtcmVzb3VyY2Ut dGVzdCcsIHJlc3VsdC5zdWJ0ZXN0c1swXS5uYW1lKQorCQlzZWxmLmFzc2VydEVxdWFsKGt1 bml0X3BhcnNlci5UZXN0U3RhdHVzLlNVQ0NFU1MsIHJlc3VsdC5zdGF0dXMpCisJCXNlbGYu YXNzZXJ0RXF1YWwoJ2t1bml0LXJlc291cmNlLXRlc3QnLCByZXN1bHQuc3VidGVzdHNbMF0u bmFtZSkKKwkJc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQuY291bnRzLmVycm9ycywgMCkKKwor CWRlZiB0ZXN0X3N1bW1hcml6ZV9mYWlsdXJlcyhzZWxmKToKKwkJb3V0cHV0ID0gIiIiCisJ CUtUQVAgdmVyc2lvbiAxCisJCTEuLjIKKwkJCSMgU3VidGVzdDogYWxsX2ZhaWxlZF9zdWl0 ZQorCQkJMS4uMgorCQkJbm90IG9rIDEgLSB0ZXN0MQorCQkJbm90IG9rIDIgLSB0ZXN0Mgor CQlub3Qgb2sgMSAtIGFsbF9mYWlsZWRfc3VpdGUKKwkJCSMgU3VidGVzdDogc29tZV9mYWls ZWRfc3VpdGUKKwkJCTEuLjIKKwkJCW9rIDEgLSB0ZXN0MQorCQkJbm90IG9rIDIgLSB0ZXN0 MgorCQlub3Qgb2sgMSAtIHNvbWVfZmFpbGVkX3N1aXRlCisJCSIiIgorCQlyZXN1bHQgPSBr dW5pdF9wYXJzZXIucGFyc2VfcnVuX3Rlc3RzKG91dHB1dC5zcGxpdGxpbmVzKCkpCisJCXNl bGYuYXNzZXJ0RXF1YWwoa3VuaXRfcGFyc2VyLlRlc3RTdGF0dXMuRkFJTFVSRSwgcmVzdWx0 LnN0YXR1cykKKworCQlzZWxmLmFzc2VydEVxdWFsKGt1bml0X3BhcnNlci5fc3VtbWFyaXpl X2ZhaWxlZF90ZXN0cyhyZXN1bHQpLAorCQkJJ0ZhaWx1cmVzOiBhbGxfZmFpbGVkX3N1aXRl LCBzb21lX2ZhaWxlZF9zdWl0ZS50ZXN0MicpCisKKwlkZWYgdGVzdF9rdGFwX2Zvcm1hdChz ZWxmKToKKwkJa3RhcF9sb2cgPSB0ZXN0X2RhdGFfcGF0aCgndGVzdF9wYXJzZV9rdGFwX291 dHB1dC5sb2cnKQorCQl3aXRoIG9wZW4oa3RhcF9sb2cpIGFzIGZpbGU6CisJCQlyZXN1bHQg PSBrdW5pdF9wYXJzZXIucGFyc2VfcnVuX3Rlc3RzKGZpbGUucmVhZGxpbmVzKCkpCisJCXNl bGYuYXNzZXJ0RXF1YWwocmVzdWx0LmNvdW50cywga3VuaXRfcGFyc2VyLlRlc3RDb3VudHMo cGFzc2VkPTMpKQorCQlzZWxmLmFzc2VydEVxdWFsKCdzdWl0ZScsIHJlc3VsdC5zdWJ0ZXN0 c1swXS5uYW1lKQorCQlzZWxmLmFzc2VydEVxdWFsKCdjYXNlXzEnLCByZXN1bHQuc3VidGVz dHNbMF0uc3VidGVzdHNbMF0ubmFtZSkKKwkJc2VsZi5hc3NlcnRFcXVhbCgnY2FzZV8yJywg cmVzdWx0LnN1YnRlc3RzWzBdLnN1YnRlc3RzWzFdLm5hbWUpCisKKwlkZWYgdGVzdF9wYXJz ZV9zdWJ0ZXN0X2hlYWRlcihzZWxmKToKKwkJa3RhcF9sb2cgPSB0ZXN0X2RhdGFfcGF0aCgn dGVzdF9wYXJzZV9zdWJ0ZXN0X2hlYWRlci5sb2cnKQorCQl3aXRoIG9wZW4oa3RhcF9sb2cp IGFzIGZpbGU6CisJCQlyZXN1bHQgPSBrdW5pdF9wYXJzZXIucGFyc2VfcnVuX3Rlc3RzKGZp bGUucmVhZGxpbmVzKCkpCisJCXNlbGYucHJpbnRfbW9jay5hc3NlcnRfYW55X2NhbGwoU3Ry Q29udGFpbnMoJ3N1aXRlICgxIHN1YnRlc3QpJykpCisKKwlkZWYgdGVzdF9zaG93X3Rlc3Rf b3V0cHV0X29uX2ZhaWx1cmUoc2VsZik6CisJCW91dHB1dCA9ICIiIgorCQlLVEFQIHZlcnNp b24gMQorCQkxLi4xCisJCSAgVGVzdCBvdXRwdXQuCisJCSAgICBJbmRlbnRlZCBtb3JlLgor CQlub3Qgb2sgMSB0ZXN0MQorCQkiIiIKKwkJcmVzdWx0ID0ga3VuaXRfcGFyc2VyLnBhcnNl X3J1bl90ZXN0cyhvdXRwdXQuc3BsaXRsaW5lcygpKQorCQlzZWxmLmFzc2VydEVxdWFsKGt1 bml0X3BhcnNlci5UZXN0U3RhdHVzLkZBSUxVUkUsIHJlc3VsdC5zdGF0dXMpCisKKwkJc2Vs Zi5wcmludF9tb2NrLmFzc2VydF9hbnlfY2FsbChTdHJDb250YWlucygnVGVzdCBvdXRwdXQu JykpCisJCXNlbGYucHJpbnRfbW9jay5hc3NlcnRfYW55X2NhbGwoU3RyQ29udGFpbnMoJyAg SW5kZW50ZWQgbW9yZS4nKSkKKwkJc2VsZi5ub1ByaW50Q2FsbENvbnRhaW5zKCdub3Qgb2sg MSB0ZXN0MScpCiAKIGRlZiBsaW5lX3N0cmVhbV9mcm9tX3N0cnMoc3RyczogSXRlcmFibGVb c3RyXSkgLT4ga3VuaXRfcGFyc2VyLkxpbmVTdHJlYW06CiAJcmV0dXJuIGt1bml0X3BhcnNl ci5MaW5lU3RyZWFtKGVudW1lcmF0ZShzdHJzLCBzdGFydD0xKSkKQEAgLTQ4NSw2ICs1MjIs OSBAQCBjbGFzcyBMaW51eFNvdXJjZVRyZWVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAog CiBjbGFzcyBLVW5pdEpzb25UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKwlkZWYgc2V0VXAo c2VsZik6CisJCXNlbGYucHJpbnRfbW9jayA9IG1vY2sucGF0Y2goJ2t1bml0X3ByaW50ZXIu UHJpbnRlci5wcmludCcpLnN0YXJ0KCkKKwkJc2VsZi5hZGRDbGVhbnVwKG1vY2sucGF0Y2gu c3RvcGFsbCkKIAogCWRlZiBfanNvbl9mb3Ioc2VsZiwgbG9nX2ZpbGUpOgogCQl3aXRoIG9w ZW4odGVzdF9kYXRhX3BhdGgobG9nX2ZpbGUpKSBhcyBmaWxlOgpAQCAtNTgxLDcgKzYyMSw3 IEBAIGNsYXNzIEtVbml0TWFpblRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCQlzZWxmLmFz c2VydEVxdWFsKGUuZXhjZXB0aW9uLmNvZGUsIDEpCiAJCXNlbGYuYXNzZXJ0RXF1YWwoc2Vs Zi5saW51eF9zb3VyY2VfbW9jay5idWlsZF9yZWNvbmZpZy5jYWxsX2NvdW50LCAxKQogCQlz ZWxmLmFzc2VydEVxdWFsKHNlbGYubGludXhfc291cmNlX21vY2sucnVuX2tlcm5lbC5jYWxs X2NvdW50LCAxKQotCQlzZWxmLnByaW50X21vY2suYXNzZXJ0X2FueV9jYWxsKFN0ckNvbnRh aW5zKCdjb3VsZCBub3QgZmluZCBhbnkgS1RBUCBvdXRwdXQhJykpCisJCXNlbGYucHJpbnRf bW9jay5hc3NlcnRfYW55X2NhbGwoU3RyQ29udGFpbnMoJ0NvdWxkIG5vdCBmaW5kIGFueSBL VEFQIG91dHB1dC4nKSkKIAogCWRlZiB0ZXN0X2V4ZWNfbm9fdGVzdHMoc2VsZik6CiAJCXNl bGYubGludXhfc291cmNlX21vY2sucnVuX2tlcm5lbCA9IG1vY2suTW9jayhyZXR1cm5fdmFs dWU9WydUQVAgdmVyc2lvbiAxNCcsICcxLi4wJ10pCmRpZmYgLS1naXQgYS90b29scy90ZXN0 aW5nL2t1bml0L3Rlc3RfZGF0YS90ZXN0X3BhcnNlX2t0YXBfb3V0cHV0LmxvZyBiL3Rvb2xz L3Rlc3Rpbmcva3VuaXQvdGVzdF9kYXRhL3Rlc3RfcGFyc2Vfa3RhcF9vdXRwdXQubG9nCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uY2NkZjI0NGU1MzAzCi0t LSAvZGV2L251bGwKKysrIGIvdG9vbHMvdGVzdGluZy9rdW5pdC90ZXN0X2RhdGEvdGVzdF9w YXJzZV9rdGFwX291dHB1dC5sb2cKQEAgLTAsMCArMSw4IEBACitLVEFQIHZlcnNpb24gMQor MS4uMQorICBLVEFQIHZlcnNpb24gMQorICAxLi4zCisgIG9rIDEgY2FzZV8xCisgIG9rIDIg Y2FzZV8yCisgIG9rIDMgY2FzZV8zCitvayAxIHN1aXRlCmRpZmYgLS1naXQgYS90b29scy90 ZXN0aW5nL2t1bml0L3Rlc3RfZGF0YS90ZXN0X3BhcnNlX3N1YnRlc3RfaGVhZGVyLmxvZyBi L3Rvb2xzL3Rlc3Rpbmcva3VuaXQvdGVzdF9kYXRhL3Rlc3RfcGFyc2Vfc3VidGVzdF9oZWFk ZXIubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMjE2NjMx MDkyZTdiCi0tLSAvZGV2L251bGwKKysrIGIvdG9vbHMvdGVzdGluZy9rdW5pdC90ZXN0X2Rh dGEvdGVzdF9wYXJzZV9zdWJ0ZXN0X2hlYWRlci5sb2cKQEAgLTAsMCArMSw3IEBACitLVEFQ IHZlcnNpb24gMQorMS4uMQorICBLVEFQIHZlcnNpb24gMQorICAjIFN1YnRlc3Q6IHN1aXRl CisgIDEuLjEKKyAgb2sgMSB0ZXN0CitvayAxIHN1aXRlClwgTm8gbmV3bGluZSBhdCBlbmQg b2YgZmlsZQo= --------------pbMrKdebrg0Sv7HJy6oRWDCM--