From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pf1-f169.google.com (mail-pf1-f169.google.com [209.85.210.169]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 190EA3396E9 for ; Fri, 30 Jan 2026 10:07:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.169 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769767683; cv=none; b=TRRLhF66sltUk3ulN7MyPYnV7Njh9wiYghmJDzJ6RqzN+Xo+iEjgIhjRkW6UL0sF5PAynGZOHP/FXi/mMuUj2MIsGOURps2pQrO5isiOegQjYs04n3/QM5SXLP2ycSa5RVxYoDV0AHy75uRsqS3bU3FdkgdZ7edbVQedibl9bEs= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769767683; c=relaxed/simple; bh=HxANKuCaDulvkYRh4kSOMCnPGX+f1VqnRWAK8oof64A=; h=Content-Type:Message-ID:Date:MIME-Version:To:Cc:From:Subject; b=DzwBg6r4E5zMyvQ0vWzoE3zWBrb4J3glJ3FpnE9AZ915ZeJDZUA9HWBQGrGi/UVH2Cvrg0iMXZsuH+ra3hkQyUOUA6DQn1PrASz4L0cc3dFIzPLd5GNPqq1uDKu+eEM2uakMMNN4F4Ajlc05nmC/Fo41/OWMZrTgY9XsNtlzXIw= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linuxfoundation.org; spf=pass smtp.mailfrom=linuxfoundation.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b=aqFriOfS; arc=none smtp.client-ip=209.85.210.169 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linuxfoundation.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linuxfoundation.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b="aqFriOfS" Received: by mail-pf1-f169.google.com with SMTP id d2e1a72fcca58-81e821c3d4eso1702361b3a.3 for ; Fri, 30 Jan 2026 02:07:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linuxfoundation.org; s=google; t=1769767679; x=1770372479; darn=vger.kernel.org; h=subject:from:cc:to:content-language:user-agent:mime-version:date :message-id:from:to:cc:subject:date:message-id:reply-to; bh=5RquKUxHPvFTr7PbwPvHDtoyH4QbymmBVE663bxNid0=; b=aqFriOfS8q4dJWet1z5DB4cHRXkqh63H0o4jnY2Qh2gS2eD1EHZxWXZ0QghfjsUbEk 0J9FRzSZ3UcqA6jVkse3hMNBThUE1xxWghAf4775TM0h+Iuz8zBzex/qmYGYpgCcsn/V Ma3MYPhfTCkFlmfS42m9OtVFTbxbBYe3P/GWI= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1769767679; x=1770372479; h=subject:from:cc:to:content-language:user-agent:mime-version:date :message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=5RquKUxHPvFTr7PbwPvHDtoyH4QbymmBVE663bxNid0=; b=XpoQ47K+tNX33WCjw4GFDxA5PFYdvb5flTuIgIT8nltFW3ZiCTfdTgcO44Y0/L1SaC qYjdrcb2UbzkZUiOUabdkjwWEDVnbILTfI0rulNzivilOasjJrtNJzlniw356SZOEPmk Wt5oMVP89rnoXbA33BUXR3mZWdpAG1T+8tVUKAvKJmIO1oRIjUSo7ARJEzTLLyTKeDw6 72VU+izEJoOtUhQh3A1Fnng3kUVCfvw/CPWoMznV5vCS4Zf6wwxPuEwcrGebtzPHbDfk 2wXKKClSaZs3/SVUNIjXLZ+xROisKEkAh9IICs0xlbNjeFTuwEY7jLZeVy1YGR1u4QDQ B12Q== X-Forwarded-Encrypted: i=1; AJvYcCWLtN3kwAZw8+Z/7dcQIPFRzkDjgmyzLEc6HqgkKrzB/9HB9o1Tg+t65+MVeI6UCYoWVelj8VNGYwJ3V/k=@vger.kernel.org X-Gm-Message-State: AOJu0YyuPFG940X7uaDq3XrFIdtwS81xj2ZxH/QtguHCrNiARtcFGXL8 b3WDQAyPHbxZBicKPgb5jd2FsclMLf3fuOTziA8nN7f3Sr47wP/s9vcNeB/EMUC8ZO8= X-Gm-Gg: AZuq6aJ0hpPJONquxo7fFN1wxL0HlIShrzfRHngWkBMQVGtsfOjVQv9+hrKNYqB59SG licJWIw2bZQ0L8ZYTSibLwxIudFvx0gWvjOdXp7+kGRZqDl309rxOkSJw2gefPhcO3L6nuFjNvO 5KzJRN94V1T5+P8rHgAAkpXR/vP5qzx950M1tHsKPxL0jqGJvLHCiGDj7+Y+4947lk7ueAF/TKP UQrFanoYvXORRIzkkv9A+7wUE2r5MZcwgZn0LMrbt1xLk2jYtOMPCMA76Vk0zeRDhnT4rDBopRQ PuWbmDuj0OVL5bYKL917RYU3k3t13mlE4PEXgCpG9TeZqxJeA+jsnc2Ni/SJPNg0zKL7K1uQ+X9 EZ/Wd7GUYSum2bmnjU3ZYO7/IXRIcv1hJU0ghaIvIYy1Y8bElBj8wZ8F7pBdkFxCW7lKxwzi5ff VpUMNxHl9tg3ZLZ5Zo0z6T8n8= X-Received: by 2002:a05:6a21:e94:b0:389:8ebc:e105 with SMTP id adf61e73a8af0-392dfffc6e6mr2260142637.12.1769767679443; Fri, 30 Jan 2026 02:07:59 -0800 (PST) Received: from [192.168.1.54] ([103.175.182.25]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c64277e4efdsm7397702a12.3.2026.01.30.02.07.55 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 30 Jan 2026 02:07:58 -0800 (PST) Content-Type: multipart/mixed; boundary="------------Oh0e4ogmMWJlZJrqRz0G0z4d" Message-ID: Date: Fri, 30 Jan 2026 03:07:53 -0700 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Content-Language: en-US To: Linus Torvalds Cc: Shuah Khan , shuah , Brendan Higgins , David Gow , Rae Moar , linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org From: Shuah Khan Subject: [GIT PULL] kunit next update for Linux 6.20-rc1 This is a multi-part message in MIME format. --------------Oh0e4ogmMWJlZJrqRz0G0z4d 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.20-rc1. kunit: - adds __rust_helper to helpers - fixes up const mis-match in many assert functions - fixes up const mismatch in test_list_sort - protects KUNIT_BINARY_STR_ASSERTION against ERR_PTR values - respects KBUILD_OUTPUT env variable by default - adds bash completion kunit tool: - adds test for nested test result reporting - fixes to not overwrite test status based on subtest counts - adds 32-bit big endian ARM configuration to qemu_configs - renames test_data_path() to _test_data_path() - fixes relying on implicit working directory change diff is attached. thanks, -- Shuah ---------------------------------------------------------------- The following changes since commit 9ace4753a5202b02191d54e9fdf7f9e3d02b85eb: Linux 6.19-rc4 (2026-01-04 14:41:55 -0800) are available in the Git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest tags/linux_kselftest-kunit-6.20-rc1 for you to fetch changes up to db0c35ca36526f3072affcb573631ccf8c85f827: kunit: add bash completion (2026-01-20 11:17:52 -0700) ---------------------------------------------------------------- linux_kselftest-kunit-6.20-rc1 kunit: - adds __rust_helper to helpers - fixes up const mis-match in many assert functions - fixes up const mismatch in test_list_sort - protects KUNIT_BINARY_STR_ASSERTION against ERR_PTR values - respects KBUILD_OUTPUT env variable by default - adds bash completion kunit tool: - adds test for nested test result reporting - fixes to not overwrite test status based on subtest counts - adds 32-bit big endian ARM configuration to qemu_configs - renames test_data_path() to _test_data_path() - fixes relying on implicit working directory change ---------------------------------------------------------------- Alice Ryhl (1): rust: kunit: add __rust_helper to helpers Greg Kroah-Hartman (2): kunit: fix up const mis-match in many assert functions test_list_sort: fix up const mismatch Richard Fitzgerald (1): kunit: Protect KUNIT_BINARY_STR_ASSERTION against ERR_PTR values Ryota Sakamoto (2): kunit: respect KBUILD_OUTPUT env variable by default kunit: add bash completion Thomas Weißschuh (5): kunit: tool: Add test for nested test result reporting kunit: tool: Don't overwrite test status based on subtest counts kunit: qemu_configs: Add 32-bit big endian ARM configuration kunit: tool: test: Rename test_data_path() to _test_data_path() kunit: tool: test: Don't rely on implicit working directory change Documentation/dev-tools/kunit/run_wrapper.rst | 9 ++ include/kunit/test.h | 3 +- lib/kunit/assert.c | 12 +-- lib/tests/test_list_sort.c | 4 +- rust/helpers/kunit.c | 2 +- tools/testing/kunit/kunit-completion.sh | 34 +++++++ tools/testing/kunit/kunit.py | 37 ++++++- tools/testing/kunit/kunit_parser.py | 3 + tools/testing/kunit/kunit_tool_test.py | 110 +++++++++++++++------ tools/testing/kunit/qemu_configs/armeb.py | 16 +++ .../test_is_test_passed-failure-nested.log | 10 ++ 11 files changed, 200 insertions(+), 40 deletions(-) create mode 100644 tools/testing/kunit/kunit-completion.sh create mode 100644 tools/testing/kunit/qemu_configs/armeb.py create mode 100644 tools/testing/kunit/test_data/test_is_test_passed-failure-nested.log ---------------------------------------------------------------- --------------Oh0e4ogmMWJlZJrqRz0G0z4d Content-Type: text/x-patch; charset=UTF-8; name="linux_kselftest-kunit-6.20-rc1.diff" Content-Disposition: attachment; filename="linux_kselftest-kunit-6.20-rc1.diff" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2LXRvb2xzL2t1bml0L3J1bl93cmFwcGVy LnJzdCBiL0RvY3VtZW50YXRpb24vZGV2LXRvb2xzL2t1bml0L3J1bl93cmFwcGVyLnJzdApp bmRleCA2Njk3YzcxZWU4Y2EuLjNjMGI1ODVkY2ZmZiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRh dGlvbi9kZXYtdG9vbHMva3VuaXQvcnVuX3dyYXBwZXIucnN0CisrKyBiL0RvY3VtZW50YXRp b24vZGV2LXRvb2xzL2t1bml0L3J1bl93cmFwcGVyLnJzdApAQCAtMzM1LDMgKzMzNSwxMiBA QCBjb21tYW5kIGxpbmUgYXJndW1lbnRzOgogCiAtIGBgLS1saXN0X3Rlc3RzX2F0dHJgYDog SWYgc2V0LCBsaXN0cyBhbGwgdGVzdHMgdGhhdCB3aWxsIGJlIHJ1biBhbmQgYWxsIG9mIHRo ZWlyCiAgIGF0dHJpYnV0ZXMuCisKK0NvbW1hbmQtbGluZSBjb21wbGV0aW9uCis9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlIGt1bml0X3Rvb2wgY29tZXMgd2l0aCBh IGJhc2ggY29tcGxldGlvbiBzY3JpcHQ6CisKKy4uIGNvZGUtYmxvY2s6OiBiYXNoCisKKwlz b3VyY2UgdG9vbHMvdGVzdGluZy9rdW5pdC9rdW5pdC1jb21wbGV0aW9uLnNoCmRpZmYgLS1n aXQgYS9pbmNsdWRlL2t1bml0L3Rlc3QuaCBiL2luY2x1ZGUva3VuaXQvdGVzdC5oCmluZGV4 IDVlYzUxODJiNWU1Ny4uOWNkMTU5NGFiNjk3IDEwMDY0NAotLS0gYS9pbmNsdWRlL2t1bml0 L3Rlc3QuaAorKysgYi9pbmNsdWRlL2t1bml0L3Rlc3QuaApAQCAtOTA2LDcgKzkwNiw4IEBA IGRvIHsJCQkJCQkJCQkgICAgICAgXAogCX07CQkJCQkJCQkgICAgICAgXAogCQkJCQkJCQkJ ICAgICAgIFwKIAlfS1VOSVRfU0FWRV9MT0ModGVzdCk7CQkJCQkJICAgICAgIFwKLQlpZiAo bGlrZWx5KChfX2xlZnQpICYmIChfX3JpZ2h0KSAmJiAoc3RyY21wKF9fbGVmdCwgX19yaWdo dCkgb3AgMCkpKSAgIFwKKwlpZiAobGlrZWx5KCFJU19FUlJfT1JfTlVMTChfX2xlZnQpICYm ICFJU19FUlJfT1JfTlVMTChfX3JpZ2h0KSAmJiAgICAgIFwKKwkgICAgKHN0cmNtcChfX2xl ZnQsIF9fcmlnaHQpIG9wIDApKSkJCQkJICAgICAgIFwKIAkJYnJlYWs7CQkJCQkJCSAgICAg ICBcCiAJCQkJCQkJCQkgICAgICAgXAogCQkJCQkJCQkJICAgICAgIFwKZGlmZiAtLWdpdCBh L2xpYi9rdW5pdC9hc3NlcnQuYyBiL2xpYi9rdW5pdC9hc3NlcnQuYwppbmRleCA4NjdhYTVj NGJjY2YuLjRjNzUxYWQ4NTA2YSAxMDA2NDQKLS0tIGEvbGliL2t1bml0L2Fzc2VydC5jCisr KyBiL2xpYi9rdW5pdC9hc3NlcnQuYwpAQCAtNTEsNyArNTEsNyBAQCB2b2lkIGt1bml0X3Vu YXJ5X2Fzc2VydF9mb3JtYXQoY29uc3Qgc3RydWN0IGt1bml0X2Fzc2VydCAqYXNzZXJ0LAog CQkJICAgICAgIGNvbnN0IHN0cnVjdCB2YV9mb3JtYXQgKm1lc3NhZ2UsCiAJCQkgICAgICAg c3RydWN0IHN0cmluZ19zdHJlYW0gKnN0cmVhbSkKIHsKLQlzdHJ1Y3Qga3VuaXRfdW5hcnlf YXNzZXJ0ICp1bmFyeV9hc3NlcnQ7CisJY29uc3Qgc3RydWN0IGt1bml0X3VuYXJ5X2Fzc2Vy dCAqdW5hcnlfYXNzZXJ0OwogCiAJdW5hcnlfYXNzZXJ0ID0gY29udGFpbmVyX29mKGFzc2Vy dCwgc3RydWN0IGt1bml0X3VuYXJ5X2Fzc2VydCwgYXNzZXJ0KTsKIApAQCAtNzEsNyArNzEs NyBAQCB2b2lkIGt1bml0X3B0cl9ub3RfZXJyX2Fzc2VydF9mb3JtYXQoY29uc3Qgc3RydWN0 IGt1bml0X2Fzc2VydCAqYXNzZXJ0LAogCQkJCSAgICAgY29uc3Qgc3RydWN0IHZhX2Zvcm1h dCAqbWVzc2FnZSwKIAkJCQkgICAgIHN0cnVjdCBzdHJpbmdfc3RyZWFtICpzdHJlYW0pCiB7 Ci0Jc3RydWN0IGt1bml0X3B0cl9ub3RfZXJyX2Fzc2VydCAqcHRyX2Fzc2VydDsKKwljb25z dCBzdHJ1Y3Qga3VuaXRfcHRyX25vdF9lcnJfYXNzZXJ0ICpwdHJfYXNzZXJ0OwogCiAJcHRy X2Fzc2VydCA9IGNvbnRhaW5lcl9vZihhc3NlcnQsIHN0cnVjdCBrdW5pdF9wdHJfbm90X2Vy cl9hc3NlcnQsCiAJCQkJICBhc3NlcnQpOwpAQCAtMTE3LDcgKzExNyw3IEBAIHZvaWQga3Vu aXRfYmluYXJ5X2Fzc2VydF9mb3JtYXQoY29uc3Qgc3RydWN0IGt1bml0X2Fzc2VydCAqYXNz ZXJ0LAogCQkJCWNvbnN0IHN0cnVjdCB2YV9mb3JtYXQgKm1lc3NhZ2UsCiAJCQkJc3RydWN0 IHN0cmluZ19zdHJlYW0gKnN0cmVhbSkKIHsKLQlzdHJ1Y3Qga3VuaXRfYmluYXJ5X2Fzc2Vy dCAqYmluYXJ5X2Fzc2VydDsKKwljb25zdCBzdHJ1Y3Qga3VuaXRfYmluYXJ5X2Fzc2VydCAq YmluYXJ5X2Fzc2VydDsKIAogCWJpbmFyeV9hc3NlcnQgPSBjb250YWluZXJfb2YoYXNzZXJ0 LCBzdHJ1Y3Qga3VuaXRfYmluYXJ5X2Fzc2VydCwKIAkJCQkgICAgIGFzc2VydCk7CkBAIC0x NDUsNyArMTQ1LDcgQEAgdm9pZCBrdW5pdF9iaW5hcnlfcHRyX2Fzc2VydF9mb3JtYXQoY29u c3Qgc3RydWN0IGt1bml0X2Fzc2VydCAqYXNzZXJ0LAogCQkJCSAgICBjb25zdCBzdHJ1Y3Qg dmFfZm9ybWF0ICptZXNzYWdlLAogCQkJCSAgICBzdHJ1Y3Qgc3RyaW5nX3N0cmVhbSAqc3Ry ZWFtKQogewotCXN0cnVjdCBrdW5pdF9iaW5hcnlfcHRyX2Fzc2VydCAqYmluYXJ5X2Fzc2Vy dDsKKwljb25zdCBzdHJ1Y3Qga3VuaXRfYmluYXJ5X3B0cl9hc3NlcnQgKmJpbmFyeV9hc3Nl cnQ7CiAKIAliaW5hcnlfYXNzZXJ0ID0gY29udGFpbmVyX29mKGFzc2VydCwgc3RydWN0IGt1 bml0X2JpbmFyeV9wdHJfYXNzZXJ0LAogCQkJCSAgICAgYXNzZXJ0KTsKQEAgLTE4NSw3ICsx ODUsNyBAQCB2b2lkIGt1bml0X2JpbmFyeV9zdHJfYXNzZXJ0X2Zvcm1hdChjb25zdCBzdHJ1 Y3Qga3VuaXRfYXNzZXJ0ICphc3NlcnQsCiAJCQkJICAgIGNvbnN0IHN0cnVjdCB2YV9mb3Jt YXQgKm1lc3NhZ2UsCiAJCQkJICAgIHN0cnVjdCBzdHJpbmdfc3RyZWFtICpzdHJlYW0pCiB7 Ci0Jc3RydWN0IGt1bml0X2JpbmFyeV9zdHJfYXNzZXJ0ICpiaW5hcnlfYXNzZXJ0OworCWNv bnN0IHN0cnVjdCBrdW5pdF9iaW5hcnlfc3RyX2Fzc2VydCAqYmluYXJ5X2Fzc2VydDsKIAog CWJpbmFyeV9hc3NlcnQgPSBjb250YWluZXJfb2YoYXNzZXJ0LCBzdHJ1Y3Qga3VuaXRfYmlu YXJ5X3N0cl9hc3NlcnQsCiAJCQkJICAgICBhc3NlcnQpOwpAQCAtMjM3LDcgKzIzNyw3IEBA IHZvaWQga3VuaXRfbWVtX2Fzc2VydF9mb3JtYXQoY29uc3Qgc3RydWN0IGt1bml0X2Fzc2Vy dCAqYXNzZXJ0LAogCQkJICAgICBjb25zdCBzdHJ1Y3QgdmFfZm9ybWF0ICptZXNzYWdlLAog CQkJICAgICBzdHJ1Y3Qgc3RyaW5nX3N0cmVhbSAqc3RyZWFtKQogewotCXN0cnVjdCBrdW5p dF9tZW1fYXNzZXJ0ICptZW1fYXNzZXJ0OworCWNvbnN0IHN0cnVjdCBrdW5pdF9tZW1fYXNz ZXJ0ICptZW1fYXNzZXJ0OwogCiAJbWVtX2Fzc2VydCA9IGNvbnRhaW5lcl9vZihhc3NlcnQs IHN0cnVjdCBrdW5pdF9tZW1fYXNzZXJ0LAogCQkJCSAgYXNzZXJ0KTsKZGlmZiAtLWdpdCBh L2xpYi90ZXN0cy90ZXN0X2xpc3Rfc29ydC5jIGIvbGliL3Rlc3RzL3Rlc3RfbGlzdF9zb3J0 LmMKaW5kZXggMzA4NzlhYmM4YTQyLi4yODE1ODU1N2IxNjQgMTAwNjQ0Ci0tLSBhL2xpYi90 ZXN0cy90ZXN0X2xpc3Rfc29ydC5jCisrKyBiL2xpYi90ZXN0cy90ZXN0X2xpc3Rfc29ydC5j CkBAIC0yNiw3ICsyNiw3IEBAIHN0cnVjdCBkZWJ1Z19lbCB7CiAJdW5zaWduZWQgaW50IHNl cmlhbDsKIH07CiAKLXN0YXRpYyB2b2lkIGNoZWNrKHN0cnVjdCBrdW5pdCAqdGVzdCwgc3Ry dWN0IGRlYnVnX2VsICplbGEsIHN0cnVjdCBkZWJ1Z19lbCAqZWxiKQorc3RhdGljIHZvaWQg Y2hlY2soc3RydWN0IGt1bml0ICp0ZXN0LCBjb25zdCBzdHJ1Y3QgZGVidWdfZWwgKmVsYSwg Y29uc3Qgc3RydWN0IGRlYnVnX2VsICplbGIpCiB7CiAJc3RydWN0IGRlYnVnX2VsICoqZWx0 cyA9IHRlc3QtPnByaXY7CiAKQEAgLTQ2LDcgKzQ2LDcgQEAgc3RhdGljIHZvaWQgY2hlY2so c3RydWN0IGt1bml0ICp0ZXN0LCBzdHJ1Y3QgZGVidWdfZWwgKmVsYSwgc3RydWN0IGRlYnVn X2VsICplbGIKIC8qIGBwcml2YCBpcyB0aGUgdGVzdCBwb2ludGVyIHNvIGNoZWNrKCkgY2Fu IGZhaWwgdGhlIHRlc3QgaWYgdGhlIGxpc3QgaXMgaW52YWxpZC4gKi8KIHN0YXRpYyBpbnQg Y21wKHZvaWQgKnByaXYsIGNvbnN0IHN0cnVjdCBsaXN0X2hlYWQgKmEsIGNvbnN0IHN0cnVj dCBsaXN0X2hlYWQgKmIpCiB7Ci0Jc3RydWN0IGRlYnVnX2VsICplbGEsICplbGI7CisJY29u c3Qgc3RydWN0IGRlYnVnX2VsICplbGEsICplbGI7CiAKIAllbGEgPSBjb250YWluZXJfb2Yo YSwgc3RydWN0IGRlYnVnX2VsLCBsaXN0KTsKIAllbGIgPSBjb250YWluZXJfb2YoYiwgc3Ry dWN0IGRlYnVnX2VsLCBsaXN0KTsKZGlmZiAtLWdpdCBhL3J1c3QvaGVscGVycy9rdW5pdC5j IGIvcnVzdC9oZWxwZXJzL2t1bml0LmMKaW5kZXggYjg1YTRkMzk0YzExLi5jYWZiOTRiNjc3 NmMgMTAwNjQ0Ci0tLSBhL3J1c3QvaGVscGVycy9rdW5pdC5jCisrKyBiL3J1c3QvaGVscGVy cy9rdW5pdC5jCkBAIC0yLDcgKzIsNyBAQAogCiAjaW5jbHVkZSA8a3VuaXQvdGVzdC1idWcu aD4KIAotc3RydWN0IGt1bml0ICpydXN0X2hlbHBlcl9rdW5pdF9nZXRfY3VycmVudF90ZXN0 KHZvaWQpCitfX3J1c3RfaGVscGVyIHN0cnVjdCBrdW5pdCAqcnVzdF9oZWxwZXJfa3VuaXRf Z2V0X2N1cnJlbnRfdGVzdCh2b2lkKQogewogCXJldHVybiBrdW5pdF9nZXRfY3VycmVudF90 ZXN0KCk7CiB9CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL2t1bml0L2t1bml0LWNvbXBs ZXRpb24uc2ggYi90b29scy90ZXN0aW5nL2t1bml0L2t1bml0LWNvbXBsZXRpb24uc2gKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5mMDUzZTdiNWQyNjUKLS0t IC9kZXYvbnVsbAorKysgYi90b29scy90ZXN0aW5nL2t1bml0L2t1bml0LWNvbXBsZXRpb24u c2gKQEAgLTAsMCArMSwzNCBAQAorIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIu MAorIyBiYXNoIGNvbXBsZXRpb24gc3VwcG9ydCBmb3IgS1VuaXQKKworX2t1bml0X2Rpcj0k KGNkICIkKGRpcm5hbWUgIiR7QkFTSF9TT1VSQ0VbMF19IikiICYmIHB3ZCkKKworX2t1bml0 KCkKK3sKKwlsb2NhbCBjdXIgcHJldiB3b3JkcyBjd29yZAorCV9pbml0X2NvbXBsZXRpb24g fHwgcmV0dXJuCisKKwlsb2NhbCBzY3JpcHQ9IiR7X2t1bml0X2Rpcn0va3VuaXQucHkiCisK KwlpZiBbWyAkY3dvcmQgLWVxIDEgJiYgIiRjdXIiICE9IC0qIF1dOyB0aGVuCisJCWxvY2Fs IGNtZHM9JCgke3NjcmlwdH0gLS1saXN0LWNtZHMgMj4vZGV2L251bGwpCisJCUNPTVBSRVBM WT0oJChjb21wZ2VuIC1XICIke2NtZHN9IiAtLSAiJGN1ciIpKQorCQlyZXR1cm4gMAorCWZp CisKKwlpZiBbWyAiJGN1ciIgPT0gLSogXV07IHRoZW4KKwkJaWYgW1sgLW4gIiR7d29yZHNb MV19IiAmJiAiJHt3b3Jkc1sxXX0iICE9IC0qIF1dOyB0aGVuCisJCQlsb2NhbCBvcHRzPSQo JHtzY3JpcHR9ICR7d29yZHNbMV19IC0tbGlzdC1vcHRzIDI+L2Rldi9udWxsKQorCQkJQ09N UFJFUExZPSgkKGNvbXBnZW4gLVcgIiR7b3B0c30iIC0tICIkY3VyIikpCisJCQlyZXR1cm4g MAorCQllbHNlCisJCQlsb2NhbCBvcHRzPSQoJHtzY3JpcHR9IC0tbGlzdC1vcHRzIDI+L2Rl di9udWxsKQorCQkJQ09NUFJFUExZPSgkKGNvbXBnZW4gLVcgIiR7b3B0c30iIC0tICIkY3Vy IikpCisJCQlyZXR1cm4gMAorCQlmaQorCWZpCit9CisKK2NvbXBsZXRlIC1vIGRlZmF1bHQg LUYgX2t1bml0IGt1bml0LnB5Citjb21wbGV0ZSAtbyBkZWZhdWx0IC1GIF9rdW5pdCBrdW5p dAorY29tcGxldGUgLW8gZGVmYXVsdCAtRiBfa3VuaXQgLi90b29scy90ZXN0aW5nL2t1bml0 L2t1bml0LnB5CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL2t1bml0L2t1bml0LnB5IGIv dG9vbHMvdGVzdGluZy9rdW5pdC9rdW5pdC5weQppbmRleCBjZDk5YzE5NTYzMzEuLjRlYzVl Y2JhNmQ0OSAxMDA3NTUKLS0tIGEvdG9vbHMvdGVzdGluZy9rdW5pdC9rdW5pdC5weQorKysg Yi90b29scy90ZXN0aW5nL2t1bml0L2t1bml0LnB5CkBAIC0zMjMsMTEgKzMyMywyNyBAQCBk ZWYgZ2V0X2RlZmF1bHRfam9icygpIC0+IGludDoKIAkJcmV0dXJuIG5jcHUKIAlyYWlzZSBS dW50aW1lRXJyb3IoIm9zLmNwdV9jb3VudCgpIHJldHVybmVkIE5vbmUiKQogCitkZWYgZ2V0 X2RlZmF1bHRfYnVpbGRfZGlyKCkgLT4gc3RyOgorCWlmICdLQlVJTERfT1VUUFVUJyBpbiBv cy5lbnZpcm9uOgorCQlyZXR1cm4gb3MucGF0aC5qb2luKG9zLmVudmlyb25bJ0tCVUlMRF9P VVRQVVQnXSwgJy5rdW5pdCcpCisJcmV0dXJuICcua3VuaXQnCisKK2RlZiBhZGRfY29tcGxl dGlvbl9vcHRzKHBhcnNlcjogYXJncGFyc2UuQXJndW1lbnRQYXJzZXIpIC0+IE5vbmU6CisJ cGFyc2VyLmFkZF9hcmd1bWVudCgnLS1saXN0LW9wdHMnLAorCQkJICAgIGhlbHA9YXJncGFy c2UuU1VQUFJFU1MsCisJCQkgICAgYWN0aW9uPSdzdG9yZV90cnVlJykKKworZGVmIGFkZF9y b290X29wdHMocGFyc2VyOiBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcikgLT4gTm9uZToKKwlw YXJzZXIuYWRkX2FyZ3VtZW50KCctLWxpc3QtY21kcycsCisJCQkgICAgaGVscD1hcmdwYXJz ZS5TVVBQUkVTUywKKwkJCSAgICBhY3Rpb249J3N0b3JlX3RydWUnKQorCWFkZF9jb21wbGV0 aW9uX29wdHMocGFyc2VyKQorCiBkZWYgYWRkX2NvbW1vbl9vcHRzKHBhcnNlcjogYXJncGFy c2UuQXJndW1lbnRQYXJzZXIpIC0+IE5vbmU6CiAJcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1i dWlsZF9kaXInLAogCQkJICAgIGhlbHA9J0FzIGluIHRoZSBtYWtlIGNvbW1hbmQsIGl0IHNw ZWNpZmllcyB0aGUgYnVpbGQgJwogCQkJICAgICdkaXJlY3RvcnkuJywKLQkJCSAgICB0eXBl PXN0ciwgZGVmYXVsdD0nLmt1bml0JywgbWV0YXZhcj0nRElSJykKKwkJCSAgICB0eXBlPXN0 ciwgZGVmYXVsdD1nZXRfZGVmYXVsdF9idWlsZF9kaXIoKSwgbWV0YXZhcj0nRElSJykKIAlw YXJzZXIuYWRkX2FyZ3VtZW50KCctLW1ha2Vfb3B0aW9ucycsCiAJCQkgICAgaGVscD0nWD1Z IG1ha2Ugb3B0aW9uLCBjYW4gYmUgcmVwZWF0ZWQuJywKIAkJCSAgICBhY3Rpb249J2FwcGVu ZCcsIG1ldGF2YXI9J1g9WScpCkBAIC0zNzQsNiArMzkwLDggQEAgZGVmIGFkZF9jb21tb25f b3B0cyhwYXJzZXI6IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKSAtPiBOb25lOgogCQkJICAg IGhlbHA9J0FkZGl0aW9uYWwgUUVNVSBhcmd1bWVudHMsIGUuZy4gIi1zbXAgOCInLAogCQkJ ICAgIGFjdGlvbj0nYXBwZW5kJywgbWV0YXZhcj0nJykKIAorCWFkZF9jb21wbGV0aW9uX29w dHMocGFyc2VyKQorCiBkZWYgYWRkX2J1aWxkX29wdHMocGFyc2VyOiBhcmdwYXJzZS5Bcmd1 bWVudFBhcnNlcikgLT4gTm9uZToKIAlwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWpvYnMnLAog CQkJICAgIGhlbHA9J0FzIGluIHRoZSBtYWtlIGNvbW1hbmQsICJTcGVjaWZpZXMgIHRoZSBu dW1iZXIgb2YgJwpAQCAtNTY5LDYgKzU4Nyw3IEBAIHN1YmNvbW1hbmRfaGFuZGxlcnNfbWFw ID0gewogZGVmIG1haW4oYXJndjogU2VxdWVuY2Vbc3RyXSkgLT4gTm9uZToKIAlwYXJzZXIg PSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigKIAkJCWRlc2NyaXB0aW9uPSdIZWxwcyB3cml0 aW5nIGFuZCBydW5uaW5nIEtVbml0IHRlc3RzLicpCisJYWRkX3Jvb3Rfb3B0cyhwYXJzZXIp CiAJc3VicGFyc2VyID0gcGFyc2VyLmFkZF9zdWJwYXJzZXJzKGRlc3Q9J3N1YmNvbW1hbmQn KQogCiAJIyBUaGUgJ3J1bicgY29tbWFuZCB3aWxsIGNvbmZpZywgYnVpbGQsIGV4ZWMsIGFu ZCBwYXJzZSBpbiBvbmUgZ28uCkBAIC02MDMsMTIgKzYyMiwyOCBAQCBkZWYgbWFpbihhcmd2 OiBTZXF1ZW5jZVtzdHJdKSAtPiBOb25lOgogCXBhcnNlX3BhcnNlci5hZGRfYXJndW1lbnQo J2ZpbGUnLAogCQkJCSAgaGVscD0nU3BlY2lmaWVzIHRoZSBmaWxlIHRvIHJlYWQgcmVzdWx0 cyBmcm9tLicsCiAJCQkJICB0eXBlPXN0ciwgbmFyZ3M9Jz8nLCBtZXRhdmFyPSdpbnB1dF9m aWxlJykKKwlhZGRfY29tcGxldGlvbl9vcHRzKHBhcnNlX3BhcnNlcikKIAogCWNsaV9hcmdz ID0gcGFyc2VyLnBhcnNlX2FyZ3MobWFzc2FnZV9hcmd2KGFyZ3YpKQogCiAJaWYgZ2V0X2tl cm5lbF9yb290X3BhdGgoKToKIAkJb3MuY2hkaXIoZ2V0X2tlcm5lbF9yb290X3BhdGgoKSkK IAorCWlmIGNsaV9hcmdzLmxpc3RfY21kczoKKwkJcHJpbnQoIiAiLmpvaW4oc3VicGFyc2Vy LmNob2ljZXMua2V5cygpKSkKKwkJcmV0dXJuCisKKwlpZiBjbGlfYXJncy5saXN0X29wdHM6 CisJCXRhcmdldF9wYXJzZXIgPSBzdWJwYXJzZXIuY2hvaWNlcy5nZXQoY2xpX2FyZ3Muc3Vi Y29tbWFuZCkKKwkJaWYgbm90IHRhcmdldF9wYXJzZXI6CisJCQl0YXJnZXRfcGFyc2VyID0g cGFyc2VyCisKKwkJIyBBY2Nlc3NpbmcgcHJpdmF0ZSBhdHRyaWJ1dGUgX29wdGlvbl9zdHJp bmdfYWN0aW9ucyB0byBnZXQKKwkJIyB0aGUgbGlzdCBvZiBvcHRpb25zLiBUaGlzIGlzIG5v dCBhIHB1YmxpYyBBUEksIGJ1dCBhcmdwYXJzZQorCQkjIGRvZXMgbm90IHByb3ZpZGUgYSB3 YXkgdG8gaW5zcGVjdCBvcHRpb25zIHByb2dyYW1tYXRpY2FsbHkuCisJCXByaW50KCcgJy5q b2luKHRhcmdldF9wYXJzZXIuX29wdGlvbl9zdHJpbmdfYWN0aW9ucy5rZXlzKCkpKQorCQly ZXR1cm4KKwogCXN1YmNvbWFuZF9oYW5kbGVyID0gc3ViY29tbWFuZF9oYW5kbGVyc19tYXAu Z2V0KGNsaV9hcmdzLnN1YmNvbW1hbmQsIE5vbmUpCiAKIAlpZiBzdWJjb21hbmRfaGFuZGxl ciBpcyBOb25lOgpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9rdW5pdC9rdW5pdF9wYXJz ZXIucHkgYi90b29scy90ZXN0aW5nL2t1bml0L2t1bml0X3BhcnNlci5weQppbmRleCAzMzNj ZDNhNGE1NmIuLjUzMzg0ODlkY2JlNCAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9rdW5p dC9rdW5pdF9wYXJzZXIucHkKKysrIGIvdG9vbHMvdGVzdGluZy9rdW5pdC9rdW5pdF9wYXJz ZXIucHkKQEAgLTY4OSw2ICs2ODksOSBAQCBkZWYgYnViYmxlX3VwX3Rlc3RfcmVzdWx0cyh0 ZXN0OiBUZXN0KSAtPiBOb25lOgogCWVsaWYgdGVzdC5jb3VudHMuZ2V0X3N0YXR1cygpID09 IFRlc3RTdGF0dXMuVEVTVF9DUkFTSEVEOgogCQl0ZXN0LnN0YXR1cyA9IFRlc3RTdGF0dXMu VEVTVF9DUkFTSEVECiAKKwlpZiBzdGF0dXMgPT0gVGVzdFN0YXR1cy5GQUlMVVJFIGFuZCB0 ZXN0LmNvdW50cy5nZXRfc3RhdHVzKCkgPT0gVGVzdFN0YXR1cy5TVUNDRVNTOgorCQljb3Vu dHMuYWRkX3N0YXR1cyhzdGF0dXMpCisKIGRlZiBwYXJzZV90ZXN0KGxpbmVzOiBMaW5lU3Ry ZWFtLCBleHBlY3RlZF9udW06IGludCwgbG9nOiBMaXN0W3N0cl0sIGlzX3N1YnRlc3Q6IGJv b2wsIHByaW50ZXI6IFByaW50ZXIpIC0+IFRlc3Q6CiAJIiIiCiAJRmluZHMgbmV4dCB0ZXN0 IHRvIHBhcnNlIGluIExpbmVTdHJlYW0sIGNyZWF0ZXMgbmV3IFRlc3Qgb2JqZWN0LApkaWZm IC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9rdW5pdC9rdW5pdF90b29sX3Rlc3QucHkgYi90b29s cy90ZXN0aW5nL2t1bml0L2t1bml0X3Rvb2xfdGVzdC5weQppbmRleCBiYmJhOTIxZTBlYWMu LmI2NzQwODE0N2MxZiAxMDA3NTUKLS0tIGEvdG9vbHMvdGVzdGluZy9rdW5pdC9rdW5pdF90 b29sX3Rlc3QucHkKKysrIGIvdG9vbHMvdGVzdGluZy9rdW5pdC9rdW5pdF90b29sX3Rlc3Qu cHkKQEAgLTExLDExICsxMSwxMyBAQCBmcm9tIHVuaXR0ZXN0IGltcG9ydCBtb2NrCiAKIGlt cG9ydCB0ZW1wZmlsZSwgc2h1dGlsICMgSGFuZGxpbmcgdGVzdF90bXBkaXIKIAoraW1wb3J0 IGlvCiBpbXBvcnQgaXRlcnRvb2xzCiBpbXBvcnQganNvbgogaW1wb3J0IG9zCiBpbXBvcnQg c2lnbmFsCiBpbXBvcnQgc3VicHJvY2VzcworaW1wb3J0IHN5cwogZnJvbSB0eXBpbmcgaW1w b3J0IEl0ZXJhYmxlCiAKIGltcG9ydCBrdW5pdF9jb25maWcKQEAgLTM2LDcgKzM4LDcgQEAg ZGVmIHNldFVwTW9kdWxlKCk6CiBkZWYgdGVhckRvd25Nb2R1bGUoKToKIAlzaHV0aWwucm10 cmVlKHRlc3RfdG1wZGlyKQogCi1kZWYgdGVzdF9kYXRhX3BhdGgocGF0aCk6CitkZWYgX3Rl c3RfZGF0YV9wYXRoKHBhdGgpOgogCXJldHVybiBvcy5wYXRoLmpvaW4oYWJzX3Rlc3RfZGF0 YV9kaXIsIHBhdGgpCiAKIGNsYXNzIEtjb25maWdUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToK QEAgLTUyLDcgKzU0LDcgQEAgY2xhc3MgS2NvbmZpZ1Rlc3QodW5pdHRlc3QuVGVzdENhc2Up OgogCQlzZWxmLmFzc2VydEZhbHNlKGtjb25maWcxLmlzX3N1YnNldF9vZihrY29uZmlnMCkp CiAKIAlkZWYgdGVzdF9yZWFkX2Zyb21fZmlsZShzZWxmKToKLQkJa2NvbmZpZ19wYXRoID0g dGVzdF9kYXRhX3BhdGgoJ3Rlc3RfcmVhZF9mcm9tX2ZpbGUua2NvbmZpZycpCisJCWtjb25m aWdfcGF0aCA9IF90ZXN0X2RhdGFfcGF0aCgndGVzdF9yZWFkX2Zyb21fZmlsZS5rY29uZmln JykKIAogCQlrY29uZmlnID0ga3VuaXRfY29uZmlnLnBhcnNlX2ZpbGUoa2NvbmZpZ19wYXRo KQogCkBAIC05OCw3ICsxMDAsNyBAQCBjbGFzcyBLVW5pdFBhcnNlclRlc3QodW5pdHRlc3Qu VGVzdENhc2UpOgogCQlyYWlzZSBBc3NlcnRpb25FcnJvcihmJyJ7bmVlZGxlfSIgbm90IGZv dW5kIGluIHtsaXN0KGJhY2t1cCl9IScpCiAKIAlkZWYgdGVzdF9vdXRwdXRfaXNvbGF0ZWRf Y29ycmVjdGx5KHNlbGYpOgotCQlsb2dfcGF0aCA9IHRlc3RfZGF0YV9wYXRoKCd0ZXN0X291 dHB1dF9pc29sYXRlZF9jb3JyZWN0bHkubG9nJykKKwkJbG9nX3BhdGggPSBfdGVzdF9kYXRh X3BhdGgoJ3Rlc3Rfb3V0cHV0X2lzb2xhdGVkX2NvcnJlY3RseS5sb2cnKQogCQl3aXRoIG9w ZW4obG9nX3BhdGgpIGFzIGZpbGU6CiAJCQlyZXN1bHQgPSBrdW5pdF9wYXJzZXIuZXh0cmFj dF90YXBfbGluZXMoZmlsZS5yZWFkbGluZXMoKSkKIAkJc2VsZi5hc3NlcnRDb250YWlucygn VEFQIHZlcnNpb24gMTQnLCByZXN1bHQpCkBAIC0xMDksNyArMTExLDcgQEAgY2xhc3MgS1Vu aXRQYXJzZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAkJc2VsZi5hc3NlcnRDb250YWlu cygnb2sgMSAtIGV4YW1wbGUnLCByZXN1bHQpCiAKIAlkZWYgdGVzdF9vdXRwdXRfd2l0aF9w cmVmaXhfaXNvbGF0ZWRfY29ycmVjdGx5KHNlbGYpOgotCQlsb2dfcGF0aCA9IHRlc3RfZGF0 YV9wYXRoKCd0ZXN0X3BvdW5kX3NpZ24ubG9nJykKKwkJbG9nX3BhdGggPSBfdGVzdF9kYXRh X3BhdGgoJ3Rlc3RfcG91bmRfc2lnbi5sb2cnKQogCQl3aXRoIG9wZW4obG9nX3BhdGgpIGFz IGZpbGU6CiAJCQlyZXN1bHQgPSBrdW5pdF9wYXJzZXIuZXh0cmFjdF90YXBfbGluZXMoZmls ZS5yZWFkbGluZXMoKSkKIAkJc2VsZi5hc3NlcnRDb250YWlucygnVEFQIHZlcnNpb24gMTQn LCByZXN1bHQpCkBAIC0xMzgsMzUgKzE0MCw0NiBAQCBjbGFzcyBLVW5pdFBhcnNlclRlc3Qo dW5pdHRlc3QuVGVzdENhc2UpOgogCQlzZWxmLmFzc2VydENvbnRhaW5zKCdvayAzIC0gc3Ry aW5nLXN0cmVhbS10ZXN0JywgcmVzdWx0KQogCiAJZGVmIHRlc3RfcGFyc2Vfc3VjY2Vzc2Z1 bF90ZXN0X2xvZyhzZWxmKToKLQkJYWxsX3Bhc3NlZF9sb2cgPSB0ZXN0X2RhdGFfcGF0aCgn dGVzdF9pc190ZXN0X3Bhc3NlZC1hbGxfcGFzc2VkLmxvZycpCisJCWFsbF9wYXNzZWRfbG9n ID0gX3Rlc3RfZGF0YV9wYXRoKCd0ZXN0X2lzX3Rlc3RfcGFzc2VkLWFsbF9wYXNzZWQubG9n JykKIAkJd2l0aCBvcGVuKGFsbF9wYXNzZWRfbG9nKSBhcyBmaWxlOgogCQkJcmVzdWx0ID0g a3VuaXRfcGFyc2VyLnBhcnNlX3J1bl90ZXN0cyhmaWxlLnJlYWRsaW5lcygpLCBzdGRvdXQp CiAJCXNlbGYuYXNzZXJ0RXF1YWwoa3VuaXRfcGFyc2VyLlRlc3RTdGF0dXMuU1VDQ0VTUywg cmVzdWx0LnN0YXR1cykKIAkJc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQuY291bnRzLmVycm9y cywgMCkKIAogCWRlZiB0ZXN0X3BhcnNlX3N1Y2Nlc3NmdWxfbmVzdGVkX3Rlc3RzX2xvZyhz ZWxmKToKLQkJYWxsX3Bhc3NlZF9sb2cgPSB0ZXN0X2RhdGFfcGF0aCgndGVzdF9pc190ZXN0 X3Bhc3NlZC1hbGxfcGFzc2VkX25lc3RlZC5sb2cnKQorCQlhbGxfcGFzc2VkX2xvZyA9IF90 ZXN0X2RhdGFfcGF0aCgndGVzdF9pc190ZXN0X3Bhc3NlZC1hbGxfcGFzc2VkX25lc3RlZC5s b2cnKQogCQl3aXRoIG9wZW4oYWxsX3Bhc3NlZF9sb2cpIGFzIGZpbGU6CiAJCQlyZXN1bHQg PSBrdW5pdF9wYXJzZXIucGFyc2VfcnVuX3Rlc3RzKGZpbGUucmVhZGxpbmVzKCksIHN0ZG91 dCkKIAkJc2VsZi5hc3NlcnRFcXVhbChrdW5pdF9wYXJzZXIuVGVzdFN0YXR1cy5TVUNDRVNT LCByZXN1bHQuc3RhdHVzKQogCQlzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5jb3VudHMuZXJy b3JzLCAwKQogCiAJZGVmIHRlc3Rfa3NlbGZ0ZXN0X25lc3RlZChzZWxmKToKLQkJa3NlbGZ0 ZXN0X2xvZyA9IHRlc3RfZGF0YV9wYXRoKCd0ZXN0X2lzX3Rlc3RfcGFzc2VkLWtzZWxmdGVz dC5sb2cnKQorCQlrc2VsZnRlc3RfbG9nID0gX3Rlc3RfZGF0YV9wYXRoKCd0ZXN0X2lzX3Rl c3RfcGFzc2VkLWtzZWxmdGVzdC5sb2cnKQogCQl3aXRoIG9wZW4oa3NlbGZ0ZXN0X2xvZykg YXMgZmlsZToKIAkJCXJlc3VsdCA9IGt1bml0X3BhcnNlci5wYXJzZV9ydW5fdGVzdHMoZmls ZS5yZWFkbGluZXMoKSwgc3Rkb3V0KQogCQlzZWxmLmFzc2VydEVxdWFsKGt1bml0X3BhcnNl ci5UZXN0U3RhdHVzLlNVQ0NFU1MsIHJlc3VsdC5zdGF0dXMpCiAJCXNlbGYuYXNzZXJ0RXF1 YWwocmVzdWx0LmNvdW50cy5lcnJvcnMsIDApCiAKIAlkZWYgdGVzdF9wYXJzZV9mYWlsZWRf dGVzdF9sb2coc2VsZik6Ci0JCWZhaWxlZF9sb2cgPSB0ZXN0X2RhdGFfcGF0aCgndGVzdF9p c190ZXN0X3Bhc3NlZC1mYWlsdXJlLmxvZycpCisJCWZhaWxlZF9sb2cgPSBfdGVzdF9kYXRh X3BhdGgoJ3Rlc3RfaXNfdGVzdF9wYXNzZWQtZmFpbHVyZS5sb2cnKQogCQl3aXRoIG9wZW4o ZmFpbGVkX2xvZykgYXMgZmlsZToKIAkJCXJlc3VsdCA9IGt1bml0X3BhcnNlci5wYXJzZV9y dW5fdGVzdHMoZmlsZS5yZWFkbGluZXMoKSwgc3Rkb3V0KQogCQlzZWxmLmFzc2VydEVxdWFs KGt1bml0X3BhcnNlci5UZXN0U3RhdHVzLkZBSUxVUkUsIHJlc3VsdC5zdGF0dXMpCiAJCXNl bGYuYXNzZXJ0RXF1YWwocmVzdWx0LmNvdW50cy5lcnJvcnMsIDApCiAKKwlkZWYgdGVzdF9w YXJzZV9mYWlsZWRfbmVzdGVkX3Rlc3RzX2xvZyhzZWxmKToKKwkJbmVzdGVkX2xvZyA9IF90 ZXN0X2RhdGFfcGF0aCgndGVzdF9pc190ZXN0X3Bhc3NlZC1mYWlsdXJlLW5lc3RlZC5sb2cn KQorCQl3aXRoIG9wZW4obmVzdGVkX2xvZykgYXMgZmlsZToKKwkJCXJlc3VsdCA9IGt1bml0 X3BhcnNlci5wYXJzZV9ydW5fdGVzdHMoZmlsZS5yZWFkbGluZXMoKSwgc3Rkb3V0KQorCQlz ZWxmLmFzc2VydEVxdWFsKGt1bml0X3BhcnNlci5UZXN0U3RhdHVzLkZBSUxVUkUsIHJlc3Vs dC5zdGF0dXMpCisJCXNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LmNvdW50cy5mYWlsZWQsIDIp CisJCXNlbGYuYXNzZXJ0RXF1YWwoa3VuaXRfcGFyc2VyLlRlc3RTdGF0dXMuRkFJTFVSRSwg cmVzdWx0LnN1YnRlc3RzWzBdLnN0YXR1cykKKwkJc2VsZi5hc3NlcnRFcXVhbChrdW5pdF9w YXJzZXIuVGVzdFN0YXR1cy5TVUNDRVNTLCByZXN1bHQuc3VidGVzdHNbMF0uc3VidGVzdHNb MF0uc3RhdHVzKQorCQlzZWxmLmFzc2VydEVxdWFsKGt1bml0X3BhcnNlci5UZXN0U3RhdHVz LkZBSUxVUkUsIHJlc3VsdC5zdWJ0ZXN0c1sxXS5zdGF0dXMpCisJCXNlbGYuYXNzZXJ0RXF1 YWwoa3VuaXRfcGFyc2VyLlRlc3RTdGF0dXMuRkFJTFVSRSwgcmVzdWx0LnN1YnRlc3RzWzFd LnN1YnRlc3RzWzBdLnN0YXR1cykKKwogCWRlZiB0ZXN0X25vX2hlYWRlcihzZWxmKToKLQkJ ZW1wdHlfbG9nID0gdGVzdF9kYXRhX3BhdGgoJ3Rlc3RfaXNfdGVzdF9wYXNzZWQtbm9fdGVz dHNfcnVuX25vX2hlYWRlci5sb2cnKQorCQllbXB0eV9sb2cgPSBfdGVzdF9kYXRhX3BhdGgo J3Rlc3RfaXNfdGVzdF9wYXNzZWQtbm9fdGVzdHNfcnVuX25vX2hlYWRlci5sb2cnKQogCQl3 aXRoIG9wZW4oZW1wdHlfbG9nKSBhcyBmaWxlOgogCQkJcmVzdWx0ID0ga3VuaXRfcGFyc2Vy LnBhcnNlX3J1bl90ZXN0cygKIAkJCQlrdW5pdF9wYXJzZXIuZXh0cmFjdF90YXBfbGluZXMo ZmlsZS5yZWFkbGluZXMoKSksIHN0ZG91dCkKQEAgLTE3NSw3ICsxODgsNyBAQCBjbGFzcyBL VW5pdFBhcnNlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCQlzZWxmLmFzc2VydEVxdWFs KHJlc3VsdC5jb3VudHMuZXJyb3JzLCAxKQogCiAJZGVmIHRlc3RfbWlzc2luZ190ZXN0X3Bs YW4oc2VsZik6Ci0JCW1pc3NpbmdfcGxhbl9sb2cgPSB0ZXN0X2RhdGFfcGF0aCgndGVzdF9p c190ZXN0X3Bhc3NlZC0nCisJCW1pc3NpbmdfcGxhbl9sb2cgPSBfdGVzdF9kYXRhX3BhdGgo J3Rlc3RfaXNfdGVzdF9wYXNzZWQtJwogCQkJJ21pc3NpbmdfcGxhbi5sb2cnKQogCQl3aXRo IG9wZW4obWlzc2luZ19wbGFuX2xvZykgYXMgZmlsZToKIAkJCXJlc3VsdCA9IGt1bml0X3Bh cnNlci5wYXJzZV9ydW5fdGVzdHMoCkBAIC0xODYsNyArMTk5LDcgQEAgY2xhc3MgS1VuaXRQ YXJzZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAkJc2VsZi5hc3NlcnRFcXVhbChrdW5p dF9wYXJzZXIuVGVzdFN0YXR1cy5TVUNDRVNTLCByZXN1bHQuc3RhdHVzKQogCiAJZGVmIHRl c3Rfbm9fdGVzdHMoc2VsZik6Ci0JCWhlYWRlcl9sb2cgPSB0ZXN0X2RhdGFfcGF0aCgndGVz dF9pc190ZXN0X3Bhc3NlZC1ub190ZXN0c19ydW5fd2l0aF9oZWFkZXIubG9nJykKKwkJaGVh ZGVyX2xvZyA9IF90ZXN0X2RhdGFfcGF0aCgndGVzdF9pc190ZXN0X3Bhc3NlZC1ub190ZXN0 c19ydW5fd2l0aF9oZWFkZXIubG9nJykKIAkJd2l0aCBvcGVuKGhlYWRlcl9sb2cpIGFzIGZp bGU6CiAJCQlyZXN1bHQgPSBrdW5pdF9wYXJzZXIucGFyc2VfcnVuX3Rlc3RzKAogCQkJCWt1 bml0X3BhcnNlci5leHRyYWN0X3RhcF9saW5lcyhmaWxlLnJlYWRsaW5lcygpKSwgc3Rkb3V0 KQpAQCAtMTk1LDcgKzIwOCw3IEBAIGNsYXNzIEtVbml0UGFyc2VyVGVzdCh1bml0dGVzdC5U ZXN0Q2FzZSk6CiAJCXNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LmNvdW50cy5lcnJvcnMsIDEp CiAKIAlkZWYgdGVzdF9ub190ZXN0c19ub19wbGFuKHNlbGYpOgotCQlub19wbGFuX2xvZyA9 IHRlc3RfZGF0YV9wYXRoKCd0ZXN0X2lzX3Rlc3RfcGFzc2VkLW5vX3Rlc3RzX25vX3BsYW4u bG9nJykKKwkJbm9fcGxhbl9sb2cgPSBfdGVzdF9kYXRhX3BhdGgoJ3Rlc3RfaXNfdGVzdF9w YXNzZWQtbm9fdGVzdHNfbm9fcGxhbi5sb2cnKQogCQl3aXRoIG9wZW4obm9fcGxhbl9sb2cp IGFzIGZpbGU6CiAJCQlyZXN1bHQgPSBrdW5pdF9wYXJzZXIucGFyc2VfcnVuX3Rlc3RzKAog CQkJCWt1bml0X3BhcnNlci5leHRyYWN0X3RhcF9saW5lcyhmaWxlLnJlYWRsaW5lcygpKSwg c3Rkb3V0KQpAQCAtMjA3LDcgKzIyMCw3IEBAIGNsYXNzIEtVbml0UGFyc2VyVGVzdCh1bml0 dGVzdC5UZXN0Q2FzZSk6CiAKIAogCWRlZiB0ZXN0X25vX2t1bml0X291dHB1dChzZWxmKToK LQkJY3Jhc2hfbG9nID0gdGVzdF9kYXRhX3BhdGgoJ3Rlc3RfaW5zdWZmaWNpZW50X21lbW9y eS5sb2cnKQorCQljcmFzaF9sb2cgPSBfdGVzdF9kYXRhX3BhdGgoJ3Rlc3RfaW5zdWZmaWNp ZW50X21lbW9yeS5sb2cnKQogCQlwcmludF9tb2NrID0gbW9jay5wYXRjaCgna3VuaXRfcHJp bnRlci5QcmludGVyLnByaW50Jykuc3RhcnQoKQogCQl3aXRoIG9wZW4oY3Jhc2hfbG9nKSBh cyBmaWxlOgogCQkJcmVzdWx0ID0ga3VuaXRfcGFyc2VyLnBhcnNlX3J1bl90ZXN0cygKQEAg LTIxOCw3ICsyMzEsNyBAQCBjbGFzcyBLVW5pdFBhcnNlclRlc3QodW5pdHRlc3QuVGVzdENh c2UpOgogCQlzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5jb3VudHMuZXJyb3JzLCAxKQogCiAJ ZGVmIHRlc3Rfc2tpcHBlZF90ZXN0KHNlbGYpOgotCQlza2lwcGVkX2xvZyA9IHRlc3RfZGF0 YV9wYXRoKCd0ZXN0X3NraXBfdGVzdHMubG9nJykKKwkJc2tpcHBlZF9sb2cgPSBfdGVzdF9k YXRhX3BhdGgoJ3Rlc3Rfc2tpcF90ZXN0cy5sb2cnKQogCQl3aXRoIG9wZW4oc2tpcHBlZF9s b2cpIGFzIGZpbGU6CiAJCQlyZXN1bHQgPSBrdW5pdF9wYXJzZXIucGFyc2VfcnVuX3Rlc3Rz KGZpbGUucmVhZGxpbmVzKCksIHN0ZG91dCkKIApAQCAtMjI3LDcgKzI0MCw3IEBAIGNsYXNz IEtVbml0UGFyc2VyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAJCXNlbGYuYXNzZXJ0RXF1 YWwocmVzdWx0LmNvdW50cywga3VuaXRfcGFyc2VyLlRlc3RDb3VudHMocGFzc2VkPTQsIHNr aXBwZWQ9MSkpCiAKIAlkZWYgdGVzdF9za2lwcGVkX2FsbF90ZXN0cyhzZWxmKToKLQkJc2tp cHBlZF9sb2cgPSB0ZXN0X2RhdGFfcGF0aCgndGVzdF9za2lwX2FsbF90ZXN0cy5sb2cnKQor CQlza2lwcGVkX2xvZyA9IF90ZXN0X2RhdGFfcGF0aCgndGVzdF9za2lwX2FsbF90ZXN0cy5s b2cnKQogCQl3aXRoIG9wZW4oc2tpcHBlZF9sb2cpIGFzIGZpbGU6CiAJCQlyZXN1bHQgPSBr dW5pdF9wYXJzZXIucGFyc2VfcnVuX3Rlc3RzKGZpbGUucmVhZGxpbmVzKCksIHN0ZG91dCkK IApAQCAtMjM1LDcgKzI0OCw3IEBAIGNsYXNzIEtVbml0UGFyc2VyVGVzdCh1bml0dGVzdC5U ZXN0Q2FzZSk6CiAJCXNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LmNvdW50cywga3VuaXRfcGFy c2VyLlRlc3RDb3VudHMoc2tpcHBlZD01KSkKIAogCWRlZiB0ZXN0X2lnbm9yZXNfaHlwaGVu KHNlbGYpOgotCQloeXBoZW5fbG9nID0gdGVzdF9kYXRhX3BhdGgoJ3Rlc3Rfc3RyaXBfaHlw aGVuLmxvZycpCisJCWh5cGhlbl9sb2cgPSBfdGVzdF9kYXRhX3BhdGgoJ3Rlc3Rfc3RyaXBf aHlwaGVuLmxvZycpCiAJCXdpdGggb3BlbihoeXBoZW5fbG9nKSBhcyBmaWxlOgogCQkJcmVz dWx0ID0ga3VuaXRfcGFyc2VyLnBhcnNlX3J1bl90ZXN0cyhmaWxlLnJlYWRsaW5lcygpLCBz dGRvdXQpCiAKQEAgLTI0OSw3ICsyNjIsNyBAQCBjbGFzcyBLVW5pdFBhcnNlclRlc3QodW5p dHRlc3QuVGVzdENhc2UpOgogCQkJcmVzdWx0LnN1YnRlc3RzWzFdLm5hbWUpCiAKIAlkZWYg dGVzdF9pZ25vcmVzX3ByZWZpeF9wcmludGtfdGltZShzZWxmKToKLQkJcHJlZml4X2xvZyA9 IHRlc3RfZGF0YV9wYXRoKCd0ZXN0X2NvbmZpZ19wcmludGtfdGltZS5sb2cnKQorCQlwcmVm aXhfbG9nID0gX3Rlc3RfZGF0YV9wYXRoKCd0ZXN0X2NvbmZpZ19wcmludGtfdGltZS5sb2cn KQogCQl3aXRoIG9wZW4ocHJlZml4X2xvZykgYXMgZmlsZToKIAkJCXJlc3VsdCA9IGt1bml0 X3BhcnNlci5wYXJzZV9ydW5fdGVzdHMoZmlsZS5yZWFkbGluZXMoKSwgc3Rkb3V0KQogCQlz ZWxmLmFzc2VydEVxdWFsKGt1bml0X3BhcnNlci5UZXN0U3RhdHVzLlNVQ0NFU1MsIHJlc3Vs dC5zdGF0dXMpCkBAIC0yNTcsNyArMjcwLDcgQEAgY2xhc3MgS1VuaXRQYXJzZXJUZXN0KHVu aXR0ZXN0LlRlc3RDYXNlKToKIAkJc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQuY291bnRzLmVy cm9ycywgMCkKIAogCWRlZiB0ZXN0X2lnbm9yZXNfbXVsdGlwbGVfcHJlZml4ZXMoc2VsZik6 Ci0JCXByZWZpeF9sb2cgPSB0ZXN0X2RhdGFfcGF0aCgndGVzdF9tdWx0aXBsZV9wcmVmaXhl cy5sb2cnKQorCQlwcmVmaXhfbG9nID0gX3Rlc3RfZGF0YV9wYXRoKCd0ZXN0X211bHRpcGxl X3ByZWZpeGVzLmxvZycpCiAJCXdpdGggb3BlbihwcmVmaXhfbG9nKSBhcyBmaWxlOgogCQkJ cmVzdWx0ID0ga3VuaXRfcGFyc2VyLnBhcnNlX3J1bl90ZXN0cyhmaWxlLnJlYWRsaW5lcygp LCBzdGRvdXQpCiAJCXNlbGYuYXNzZXJ0RXF1YWwoa3VuaXRfcGFyc2VyLlRlc3RTdGF0dXMu U1VDQ0VTUywgcmVzdWx0LnN0YXR1cykKQEAgLTI2NSw3ICsyNzgsNyBAQCBjbGFzcyBLVW5p dFBhcnNlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCQlzZWxmLmFzc2VydEVxdWFsKHJl c3VsdC5jb3VudHMuZXJyb3JzLCAwKQogCiAJZGVmIHRlc3RfcHJlZml4X21peGVkX2tlcm5l bF9vdXRwdXQoc2VsZik6Ci0JCW1peGVkX3ByZWZpeF9sb2cgPSB0ZXN0X2RhdGFfcGF0aCgn dGVzdF9pbnRlcnJ1cHRlZF90YXBfb3V0cHV0LmxvZycpCisJCW1peGVkX3ByZWZpeF9sb2cg PSBfdGVzdF9kYXRhX3BhdGgoJ3Rlc3RfaW50ZXJydXB0ZWRfdGFwX291dHB1dC5sb2cnKQog CQl3aXRoIG9wZW4obWl4ZWRfcHJlZml4X2xvZykgYXMgZmlsZToKIAkJCXJlc3VsdCA9IGt1 bml0X3BhcnNlci5wYXJzZV9ydW5fdGVzdHMoZmlsZS5yZWFkbGluZXMoKSwgc3Rkb3V0KQog CQlzZWxmLmFzc2VydEVxdWFsKGt1bml0X3BhcnNlci5UZXN0U3RhdHVzLlNVQ0NFU1MsIHJl c3VsdC5zdGF0dXMpCkBAIC0yNzMsNyArMjg2LDcgQEAgY2xhc3MgS1VuaXRQYXJzZXJUZXN0 KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAkJc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQuY291bnRz LmVycm9ycywgMCkKIAogCWRlZiB0ZXN0X3ByZWZpeF9wb3VuZHNpZ24oc2VsZik6Ci0JCXBv dW5kX2xvZyA9IHRlc3RfZGF0YV9wYXRoKCd0ZXN0X3BvdW5kX3NpZ24ubG9nJykKKwkJcG91 bmRfbG9nID0gX3Rlc3RfZGF0YV9wYXRoKCd0ZXN0X3BvdW5kX3NpZ24ubG9nJykKIAkJd2l0 aCBvcGVuKHBvdW5kX2xvZykgYXMgZmlsZToKIAkJCXJlc3VsdCA9IGt1bml0X3BhcnNlci5w YXJzZV9ydW5fdGVzdHMoZmlsZS5yZWFkbGluZXMoKSwgc3Rkb3V0KQogCQlzZWxmLmFzc2Vy dEVxdWFsKGt1bml0X3BhcnNlci5UZXN0U3RhdHVzLlNVQ0NFU1MsIHJlc3VsdC5zdGF0dXMp CkBAIC0yODEsNyArMjk0LDcgQEAgY2xhc3MgS1VuaXRQYXJzZXJUZXN0KHVuaXR0ZXN0LlRl c3RDYXNlKToKIAkJc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQuY291bnRzLmVycm9ycywgMCkK IAogCWRlZiB0ZXN0X2tlcm5lbF9wYW5pY19lbmQoc2VsZik6Ci0JCXBhbmljX2xvZyA9IHRl c3RfZGF0YV9wYXRoKCd0ZXN0X2tlcm5lbF9wYW5pY19pbnRlcnJ1cHQubG9nJykKKwkJcGFu aWNfbG9nID0gX3Rlc3RfZGF0YV9wYXRoKCd0ZXN0X2tlcm5lbF9wYW5pY19pbnRlcnJ1cHQu bG9nJykKIAkJd2l0aCBvcGVuKHBhbmljX2xvZykgYXMgZmlsZToKIAkJCXJlc3VsdCA9IGt1 bml0X3BhcnNlci5wYXJzZV9ydW5fdGVzdHMoZmlsZS5yZWFkbGluZXMoKSwgc3Rkb3V0KQog CQlzZWxmLmFzc2VydEVxdWFsKGt1bml0X3BhcnNlci5UZXN0U3RhdHVzLlRFU1RfQ1JBU0hF RCwgcmVzdWx0LnN0YXR1cykKQEAgLTI4OSw3ICszMDIsNyBAQCBjbGFzcyBLVW5pdFBhcnNl clRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCQlzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChy ZXN1bHQuY291bnRzLmVycm9ycywgMSkKIAogCWRlZiB0ZXN0X3BvdW5kX25vX3ByZWZpeChz ZWxmKToKLQkJcG91bmRfbG9nID0gdGVzdF9kYXRhX3BhdGgoJ3Rlc3RfcG91bmRfbm9fcHJl Zml4LmxvZycpCisJCXBvdW5kX2xvZyA9IF90ZXN0X2RhdGFfcGF0aCgndGVzdF9wb3VuZF9u b19wcmVmaXgubG9nJykKIAkJd2l0aCBvcGVuKHBvdW5kX2xvZykgYXMgZmlsZToKIAkJCXJl c3VsdCA9IGt1bml0X3BhcnNlci5wYXJzZV9ydW5fdGVzdHMoZmlsZS5yZWFkbGluZXMoKSwg c3Rkb3V0KQogCQlzZWxmLmFzc2VydEVxdWFsKGt1bml0X3BhcnNlci5UZXN0U3RhdHVzLlNV Q0NFU1MsIHJlc3VsdC5zdGF0dXMpCkBAIC0zMTgsNyArMzMxLDcgQEAgY2xhc3MgS1VuaXRQ YXJzZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAkJCSdGYWlsdXJlczogYWxsX2ZhaWxl ZF9zdWl0ZSwgc29tZV9mYWlsZWRfc3VpdGUudGVzdDInKQogCiAJZGVmIHRlc3Rfa3RhcF9m b3JtYXQoc2VsZik6Ci0JCWt0YXBfbG9nID0gdGVzdF9kYXRhX3BhdGgoJ3Rlc3RfcGFyc2Vf a3RhcF9vdXRwdXQubG9nJykKKwkJa3RhcF9sb2cgPSBfdGVzdF9kYXRhX3BhdGgoJ3Rlc3Rf cGFyc2Vfa3RhcF9vdXRwdXQubG9nJykKIAkJd2l0aCBvcGVuKGt0YXBfbG9nKSBhcyBmaWxl OgogCQkJcmVzdWx0ID0ga3VuaXRfcGFyc2VyLnBhcnNlX3J1bl90ZXN0cyhmaWxlLnJlYWRs aW5lcygpLCBzdGRvdXQpCiAJCXNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LmNvdW50cywga3Vu aXRfcGFyc2VyLlRlc3RDb3VudHMocGFzc2VkPTMpKQpAQCAtMzI3LDEzICszNDAsMTMgQEAg Y2xhc3MgS1VuaXRQYXJzZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAkJc2VsZi5hc3Nl cnRFcXVhbCgnY2FzZV8yJywgcmVzdWx0LnN1YnRlc3RzWzBdLnN1YnRlc3RzWzFdLm5hbWUp CiAKIAlkZWYgdGVzdF9wYXJzZV9zdWJ0ZXN0X2hlYWRlcihzZWxmKToKLQkJa3RhcF9sb2cg PSB0ZXN0X2RhdGFfcGF0aCgndGVzdF9wYXJzZV9zdWJ0ZXN0X2hlYWRlci5sb2cnKQorCQlr dGFwX2xvZyA9IF90ZXN0X2RhdGFfcGF0aCgndGVzdF9wYXJzZV9zdWJ0ZXN0X2hlYWRlci5s b2cnKQogCQl3aXRoIG9wZW4oa3RhcF9sb2cpIGFzIGZpbGU6CiAJCQlrdW5pdF9wYXJzZXIu cGFyc2VfcnVuX3Rlc3RzKGZpbGUucmVhZGxpbmVzKCksIHN0ZG91dCkKIAkJc2VsZi5wcmlu dF9tb2NrLmFzc2VydF9hbnlfY2FsbChTdHJDb250YWlucygnc3VpdGUgKDEgc3VidGVzdCkn KSkKIAogCWRlZiB0ZXN0X3BhcnNlX2F0dHJpYnV0ZXMoc2VsZik6Ci0JCWt0YXBfbG9nID0g dGVzdF9kYXRhX3BhdGgoJ3Rlc3RfcGFyc2VfYXR0cmlidXRlcy5sb2cnKQorCQlrdGFwX2xv ZyA9IF90ZXN0X2RhdGFfcGF0aCgndGVzdF9wYXJzZV9hdHRyaWJ1dGVzLmxvZycpCiAJCXdp dGggb3BlbihrdGFwX2xvZykgYXMgZmlsZToKIAkJCXJlc3VsdCA9IGt1bml0X3BhcnNlci5w YXJzZV9ydW5fdGVzdHMoZmlsZS5yZWFkbGluZXMoKSwgc3Rkb3V0KQogCkBAIC00NjYsNyAr NDc5LDggQEAgY2xhc3MgTGludXhTb3VyY2VUcmVlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6 CiAJCXdhbnRfa2NvbmZpZyA9IGt1bml0X2NvbmZpZy5LY29uZmlnKCkKIAkJd2FudF9rY29u ZmlnLmFkZF9lbnRyeSgnTk9UX1JFQUwnLCAneScpCiAKLQkJdHJlZSA9IGt1bml0X2tlcm5l bC5MaW51eFNvdXJjZVRyZWUoJycsIGtjb25maWdfYWRkPVsnQ09ORklHX05PVF9SRUFMPXkn XSkKKwkJdHJlZSA9IGt1bml0X2tlcm5lbC5MaW51eFNvdXJjZVRyZWUoJycsIGt1bml0Y29u ZmlnX3BhdGhzPVtvcy5kZXZudWxsXSwKKwkJCQkJCSAgICBrY29uZmlnX2FkZD1bJ0NPTkZJ R19OT1RfUkVBTD15J10pCiAJCXNlbGYuYXNzZXJ0VHJ1ZSh3YW50X2tjb25maWcuaXNfc3Vi c2V0X29mKHRyZWUuX2tjb25maWcpLCBtc2c9dHJlZS5fa2NvbmZpZykKIAogCWRlZiB0ZXN0 X2ludmFsaWRfYXJjaChzZWxmKToKQEAgLTQ3OCw3ICs0OTIsNyBAQCBjbGFzcyBMaW51eFNv dXJjZVRyZWVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAkJCXJldHVybiBzdWJwcm9jZXNz LlBvcGVuKFsnZWNobyAiaGlcbmJ5ZSInXSwgc2hlbGw9VHJ1ZSwgdGV4dD1UcnVlLCBzdGRv dXQ9c3VicHJvY2Vzcy5QSVBFKQogCiAJCXdpdGggdGVtcGZpbGUuVGVtcG9yYXJ5RGlyZWN0 b3J5KCcnKSBhcyBidWlsZF9kaXI6Ci0JCQl0cmVlID0ga3VuaXRfa2VybmVsLkxpbnV4U291 cmNlVHJlZShidWlsZF9kaXIpCisJCQl0cmVlID0ga3VuaXRfa2VybmVsLkxpbnV4U291cmNl VHJlZShidWlsZF9kaXIsIGt1bml0Y29uZmlnX3BhdGhzPVtvcy5kZXZudWxsXSkKIAkJCW1v Y2sucGF0Y2gub2JqZWN0KHRyZWUuX29wcywgJ3N0YXJ0Jywgc2lkZV9lZmZlY3Q9ZmFrZV9z dGFydCkuc3RhcnQoKQogCiAJCQl3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3Ip OgpAQCAtNTU1LDcgKzU2OSw3IEBAIGNsYXNzIEtVbml0SnNvblRlc3QodW5pdHRlc3QuVGVz dENhc2UpOgogCQlzZWxmLmFkZENsZWFudXAobW9jay5wYXRjaC5zdG9wYWxsKQogCiAJZGVm IF9qc29uX2ZvcihzZWxmLCBsb2dfZmlsZSk6Ci0JCXdpdGggb3Blbih0ZXN0X2RhdGFfcGF0 aChsb2dfZmlsZSkpIGFzIGZpbGU6CisJCXdpdGggb3BlbihfdGVzdF9kYXRhX3BhdGgobG9n X2ZpbGUpKSBhcyBmaWxlOgogCQkJdGVzdF9yZXN1bHQgPSBrdW5pdF9wYXJzZXIucGFyc2Vf cnVuX3Rlc3RzKGZpbGUsIHN0ZG91dCkKIAkJCWpzb25fb2JqID0ga3VuaXRfanNvbi5nZXRf anNvbl9yZXN1bHQoCiAJCQkJdGVzdD10ZXN0X3Jlc3VsdCwKQEAgLTU5NiwxMSArNjEwLDEy IEBAIGNsYXNzIFN0ckNvbnRhaW5zKHN0cik6CiAKIGNsYXNzIEtVbml0TWFpblRlc3QodW5p dHRlc3QuVGVzdENhc2UpOgogCWRlZiBzZXRVcChzZWxmKToKLQkJcGF0aCA9IHRlc3RfZGF0 YV9wYXRoKCd0ZXN0X2lzX3Rlc3RfcGFzc2VkLWFsbF9wYXNzZWQubG9nJykKKwkJcGF0aCA9 IF90ZXN0X2RhdGFfcGF0aCgndGVzdF9pc190ZXN0X3Bhc3NlZC1hbGxfcGFzc2VkLmxvZycp CiAJCXdpdGggb3BlbihwYXRoKSBhcyBmaWxlOgogCQkJYWxsX3Bhc3NlZF9sb2cgPSBmaWxl LnJlYWRsaW5lcygpCiAKIAkJc2VsZi5wcmludF9tb2NrID0gbW9jay5wYXRjaCgna3VuaXRf cHJpbnRlci5QcmludGVyLnByaW50Jykuc3RhcnQoKQorCQltb2NrLnBhdGNoLmRpY3Qob3Mu ZW52aXJvbiwgY2xlYXI9VHJ1ZSkuc3RhcnQoKQogCQlzZWxmLmFkZENsZWFudXAobW9jay5w YXRjaC5zdG9wYWxsKQogCiAJCXNlbGYubW9ja19saW51eF9pbml0ID0gbW9jay5wYXRjaC5v YmplY3Qoa3VuaXRfa2VybmVsLCAnTGludXhTb3VyY2VUcmVlJykuc3RhcnQoKQpAQCAtNzIz LDYgKzczOCwyNCBAQCBjbGFzcyBLVW5pdE1haW5UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToK IAkJCWFyZ3M9Tm9uZSwgYnVpbGRfZGlyPWJ1aWxkX2RpciwgZmlsdGVyX2dsb2I9JycsIGZp bHRlcj0nJywgZmlsdGVyX2FjdGlvbj1Ob25lLCB0aW1lb3V0PTMwMCkKIAkJc2VsZi5wcmlu dF9tb2NrLmFzc2VydF9hbnlfY2FsbChTdHJDb250YWlucygnVGVzdGluZyBjb21wbGV0ZS4n KSkKIAorCUBtb2NrLnBhdGNoLmRpY3Qob3MuZW52aXJvbiwgeydLQlVJTERfT1VUUFVUJzog Jy90bXAnfSkKKwlkZWYgdGVzdF9ydW5fYnVpbGRkaXJfZnJvbV9lbnYoc2VsZik6CisJCWJ1 aWxkX2RpciA9ICcvdG1wLy5rdW5pdCcKKwkJa3VuaXQubWFpbihbJ3J1biddKQorCQlzZWxm LmFzc2VydEVxdWFsKHNlbGYubGludXhfc291cmNlX21vY2suYnVpbGRfcmVjb25maWcuY2Fs bF9jb3VudCwgMSkKKwkJc2VsZi5saW51eF9zb3VyY2VfbW9jay5ydW5fa2VybmVsLmFzc2Vy dF9jYWxsZWRfb25jZV93aXRoKAorCQkJYXJncz1Ob25lLCBidWlsZF9kaXI9YnVpbGRfZGly LCBmaWx0ZXJfZ2xvYj0nJywgZmlsdGVyPScnLCBmaWx0ZXJfYWN0aW9uPU5vbmUsIHRpbWVv dXQ9MzAwKQorCQlzZWxmLnByaW50X21vY2suYXNzZXJ0X2FueV9jYWxsKFN0ckNvbnRhaW5z KCdUZXN0aW5nIGNvbXBsZXRlLicpKQorCisJQG1vY2sucGF0Y2guZGljdChvcy5lbnZpcm9u LCB7J0tCVUlMRF9PVVRQVVQnOiAnL3RtcCd9KQorCWRlZiB0ZXN0X3J1bl9idWlsZGRpcl9v dmVycmlkZShzZWxmKToKKwkJYnVpbGRfZGlyID0gJy5rdW5pdCcKKwkJa3VuaXQubWFpbihb J3J1bicsICctLWJ1aWxkX2Rpcj0ua3VuaXQnXSkKKwkJc2VsZi5hc3NlcnRFcXVhbChzZWxm LmxpbnV4X3NvdXJjZV9tb2NrLmJ1aWxkX3JlY29uZmlnLmNhbGxfY291bnQsIDEpCisJCXNl bGYubGludXhfc291cmNlX21vY2sucnVuX2tlcm5lbC5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0 aCgKKwkJCWFyZ3M9Tm9uZSwgYnVpbGRfZGlyPWJ1aWxkX2RpciwgZmlsdGVyX2dsb2I9Jycs IGZpbHRlcj0nJywgZmlsdGVyX2FjdGlvbj1Ob25lLCB0aW1lb3V0PTMwMCkKKwkJc2VsZi5w cmludF9tb2NrLmFzc2VydF9hbnlfY2FsbChTdHJDb250YWlucygnVGVzdGluZyBjb21wbGV0 ZS4nKSkKKwogCWRlZiB0ZXN0X2NvbmZpZ19idWlsZGRpcihzZWxmKToKIAkJYnVpbGRfZGly ID0gJy5rdW5pdCcKIAkJa3VuaXQubWFpbihbJ2NvbmZpZycsICctLWJ1aWxkX2RpcicsIGJ1 aWxkX2Rpcl0pCkBAIC04NTUsNSArODg4LDI0IEBAIGNsYXNzIEtVbml0TWFpblRlc3QodW5p dHRlc3QuVGVzdENhc2UpOgogCQkJbW9jay5jYWxsKGFyZ3M9Tm9uZSwgYnVpbGRfZGlyPScu a3VuaXQnLCBmaWx0ZXJfZ2xvYj0nc3VpdGUyLnRlc3QxJywgZmlsdGVyPScnLCBmaWx0ZXJf YWN0aW9uPU5vbmUsIHRpbWVvdXQ9MzAwKSwKIAkJXSkKIAorCUBtb2NrLnBhdGNoLm9iamVj dChzeXMsICdzdGRvdXQnLCBuZXdfY2FsbGFibGU9aW8uU3RyaW5nSU8pCisJZGVmIHRlc3Rf bGlzdF9jbWRzKHNlbGYsIG1vY2tfc3Rkb3V0KToKKwkJa3VuaXQubWFpbihbJy0tbGlzdC1j bWRzJ10pCisJCW91dHB1dCA9IG1vY2tfc3Rkb3V0LmdldHZhbHVlKCkKKwkJb3V0cHV0X2Nt ZHMgPSBzb3J0ZWQob3V0cHV0LnNwbGl0KCkpCisJCWV4cGVjdGVkX2NtZHMgPSBzb3J0ZWQo WydidWlsZCcsICdjb25maWcnLCAnZXhlYycsICdwYXJzZScsICdydW4nXSkKKwkJc2VsZi5h c3NlcnRFcXVhbChvdXRwdXRfY21kcywgZXhwZWN0ZWRfY21kcykKKworCUBtb2NrLnBhdGNo Lm9iamVjdChzeXMsICdzdGRvdXQnLCBuZXdfY2FsbGFibGU9aW8uU3RyaW5nSU8pCisJZGVm IHRlc3RfcnVuX2xpc3Rfb3B0cyhzZWxmLCBtb2NrX3N0ZG91dCk6CisJCWt1bml0Lm1haW4o WydydW4nLCAnLS1saXN0LW9wdHMnXSkKKwkJb3V0cHV0ID0gbW9ja19zdGRvdXQuZ2V0dmFs dWUoKQorCQlvdXRwdXRfY21kcyA9IHNldChvdXRwdXQuc3BsaXQoKSkKKwkJc2VsZi5hc3Nl cnRJbignLS1oZWxwJywgb3V0cHV0X2NtZHMpCisJCXNlbGYuYXNzZXJ0SW4oJy0ta3VuaXRj b25maWcnLCBvdXRwdXRfY21kcykKKwkJc2VsZi5hc3NlcnRJbignLS1qb2JzJywgb3V0cHV0 X2NtZHMpCisJCXNlbGYuYXNzZXJ0SW4oJy0ta2VybmVsX2FyZ3MnLCBvdXRwdXRfY21kcykK KwkJc2VsZi5hc3NlcnRJbignLS1yYXdfb3V0cHV0Jywgb3V0cHV0X2NtZHMpCisKIGlmIF9f bmFtZV9fID09ICdfX21haW5fXyc6CiAJdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS90 b29scy90ZXN0aW5nL2t1bml0L3FlbXVfY29uZmlncy9hcm1lYi5weSBiL3Rvb2xzL3Rlc3Rp bmcva3VuaXQvcWVtdV9jb25maWdzL2FybWViLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwMC4uODZkMzI2NjUxNDkwCi0tLSAvZGV2L251bGwKKysrIGIvdG9v bHMvdGVzdGluZy9rdW5pdC9xZW11X2NvbmZpZ3MvYXJtZWIucHkKQEAgLTAsMCArMSwxNiBA QAorIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAorCitmcm9tIC4ucWVtdV9j b25maWcgaW1wb3J0IFFlbXVBcmNoUGFyYW1zCisKK1FFTVVfQVJDSCA9IFFlbXVBcmNoUGFy YW1zKGxpbnV4X2FyY2g9J2FybScsCisJCQkgICBrY29uZmlnPScnJworQ09ORklHX0NQVV9C SUdfRU5ESUFOPXkKK0NPTkZJR19BUkNIX1ZJUlQ9eQorQ09ORklHX1NFUklBTF9BTUJBX1BM MDEwPXkKK0NPTkZJR19TRVJJQUxfQU1CQV9QTDAxMF9DT05TT0xFPXkKK0NPTkZJR19TRVJJ QUxfQU1CQV9QTDAxMT15CitDT05GSUdfU0VSSUFMX0FNQkFfUEwwMTFfQ09OU09MRT15Jycn LAorCQkJICAgcWVtdV9hcmNoPSdhcm0nLAorCQkJICAga2VybmVsX3BhdGg9J2FyY2gvYXJt L2Jvb3QvekltYWdlJywKKwkJCSAgIGtlcm5lbF9jb21tYW5kX2xpbmU9J2NvbnNvbGU9dHR5 QU1BMCcsCisJCQkgICBleHRyYV9xZW11X3BhcmFtcz1bJy1tYWNoaW5lJywgJ3ZpcnQnXSkK ZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcva3VuaXQvdGVzdF9kYXRhL3Rlc3RfaXNfdGVz dF9wYXNzZWQtZmFpbHVyZS1uZXN0ZWQubG9nIGIvdG9vbHMvdGVzdGluZy9rdW5pdC90ZXN0 X2RhdGEvdGVzdF9pc190ZXN0X3Bhc3NlZC1mYWlsdXJlLW5lc3RlZC5sb2cKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi41NDk4ZGZkMGIwZGIKLS0tIC9kZXYv bnVsbAorKysgYi90b29scy90ZXN0aW5nL2t1bml0L3Rlc3RfZGF0YS90ZXN0X2lzX3Rlc3Rf cGFzc2VkLWZhaWx1cmUtbmVzdGVkLmxvZwpAQCAtMCwwICsxLDEwIEBACitLVEFQIHZlcnNp b24gMQorMS4uMgorICAgIEtUQVAgdmVyc2lvbiAxCisgICAgMS4uMQorICAgICAgICBvayAx IHRlc3QgMQorbm90IG9rIDEgc3VidGVzdCAxCisgICAgS1RBUCB2ZXJzaW9uIDEKKyAgICAx Li4xCisgICAgICAgIG5vdCBvayAxIHN1YnN1YnRlc3QgMQorbm90IG9rIDIgc3VidGVzdCAy Cg== --------------Oh0e4ogmMWJlZJrqRz0G0z4d--