<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>224989</bug_id>
          
          <creation_ts>2021-04-23 12:31:47 -0700</creation_ts>
          <short_desc>Make TestInput immutable</short_desc>
          <delta_ts>2021-04-27 15:10:23 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=225115</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Sneddon [:gsnedders]">gsnedders</reporter>
          <assigned_to name="Sam Sneddon [:gsnedders]">gsnedders</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jbedard</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1753676</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Sneddon [:gsnedders]">gsnedders</who>
    <bug_when>2021-04-23 12:31:47 -0700</bug_when>
    <thetext>The main point here is moving computing reference_files and should_run_pixel_test to when we initially construct TestInput, as at this point this happens in the some process and thread (since bug 221577), hence there&apos;s no real reason for it to happen later. With this done, it should then be possible to make TestInput immutable, which should help make things easier to understand.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1753682</commentid>
    <comment_count>1</comment_count>
      <attachid>426935</attachid>
    <who name="Sam Sneddon [:gsnedders]">gsnedders</who>
    <bug_when>2021-04-23 12:38:07 -0700</bug_when>
    <thetext>Created attachment 426935
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754424</commentid>
    <comment_count>2</comment_count>
      <attachid>426935</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-04-26 16:22:26 -0700</bug_when>
    <thetext>Comment on attachment 426935
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=426935&amp;action=review

&gt; Tools/Scripts/webkitpy/layout_tests/models/test_input.py:-48
&gt; -        # because they require us to look at the filesystem and we want to be able to do that in parallel.

I was curious if this comment was actually true and makes a difference, and it looks like make a pretty large difference. I tested this with the following command:
    `time run-webkit-tests --root ../buildToTest --dry-run fast`
Without the patch, this takes 27 seconds, with the patch, 56 seconds. I think things comes out to being about a minute with all 60 tests, but it&apos;s hard to tell because starting the web servers takes so much time. I think we need to construct the TestInput objects in parallel in some capacity</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754508</commentid>
    <comment_count>3</comment_count>
    <who name="Sam Sneddon [:gsnedders]">gsnedders</who>
    <bug_when>2021-04-26 23:40:30 -0700</bug_when>
    <thetext>(In reply to Jonathan Bedard from comment #2)
&gt; Comment on attachment 426935 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=426935&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/models/test_input.py:-48
&gt; &gt; -        # because they require us to look at the filesystem and we want to be able to do that in parallel.
&gt; 
&gt; I was curious if this comment was actually true and makes a difference, and
&gt; it looks like make a pretty large difference. I tested this with the
&gt; following command:
&gt;     `time run-webkit-tests --root ../buildToTest --dry-run fast`
&gt; Without the patch, this takes 27 seconds, with the patch, 56 seconds. I
&gt; think things comes out to being about a minute with all 60 tests, but it&apos;s
&gt; hard to tell because starting the web servers takes so much time. I think we
&gt; need to construct the TestInput objects in parallel in some capacity

Will investigate the perf regression later today, but note that that comment has been wrong since bug 221577.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754581</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Sneddon [:gsnedders]">gsnedders</who>
    <bug_when>2021-04-27 06:39:01 -0700</bug_when>
    <thetext>Oh, but of course, we generate all the TestInputs twice!

&gt; reference_files (/Volumes/gsnedders/projects/Safari/OpenSource/Tools/Scripts/webkitpy/port/base.py:510)
&gt; _test_input_for_file (/Volumes/gsnedders/projects/Safari/OpenSource/Tools/Scripts/webkitpy/layout_tests/controllers/manager.py:218)
&gt; _get_test_inputs (/Volumes/gsnedders/projects/Safari/OpenSource/Tools/Scripts/webkitpy/layout_tests/controllers/manager.py:266)
&gt; _update_worker_count (/Volumes/gsnedders/projects/Safari/OpenSource/Tools/Scripts/webkitpy/layout_tests/controllers/manager.py:270)
&gt; _set_up_run (/Volumes/gsnedders/projects/Safari/OpenSource/Tools/Scripts/webkitpy/layout_tests/controllers/manager.py:281)
&gt; run (/Volumes/gsnedders/projects/Safari/OpenSource/Tools/Scripts/webkitpy/layout_tests/controllers/manager.py:385)

and

&gt; reference_files (/Volumes/gsnedders/projects/Safari/OpenSource/Tools/Scripts/webkitpy/port/base.py:510)
&gt; _test_input_for_file (/Volumes/gsnedders/projects/Safari/OpenSource/Tools/Scripts/webkitpy/layout_tests/controllers/manager.py:218)
&gt; _get_test_inputs (/Volumes/gsnedders/projects/Safari/OpenSource/Tools/Scripts/webkitpy/layout_tests/controllers/manager.py:266)
&gt; _run_tests (/Volumes/gsnedders/projects/Safari/OpenSource/Tools/Scripts/webkitpy/layout_tests/controllers/manager.py:533)
&gt; _run_test_subset (/Volumes/gsnedders/projects/Safari/OpenSource/Tools/Scripts/webkitpy/layout_tests/controllers/manager.py:465)
&gt; run (/Volumes/gsnedders/projects/Safari/OpenSource/Tools/Scripts/webkitpy/layout_tests/controllers/manager.py:391)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754598</commentid>
    <comment_count>5</comment_count>
    <who name="Sam Sneddon [:gsnedders]">gsnedders</who>
    <bug_when>2021-04-27 07:24:24 -0700</bug_when>
    <thetext>For reference, on main, redundantly creating all the TestInputs twice is only about 1% of the cost of the Manager process.

Some rough measurements for the above command:

r272567 (i.e., pre bug 221577): 9.5s
main: 22.1s
main+patch: 33.7s</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754710</commentid>
    <comment_count>6</comment_count>
      <attachid>427174</attachid>
    <who name="Sam Sneddon [:gsnedders]">gsnedders</who>
    <bug_when>2021-04-27 11:19:12 -0700</bug_when>
    <thetext>Created attachment 427174
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754717</commentid>
    <comment_count>7</comment_count>
    <who name="Sam Sneddon [:gsnedders]">gsnedders</who>
    <bug_when>2021-04-27 11:30:21 -0700</bug_when>
    <thetext>With the new patch we&apos;re back to the performance of the main branch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754724</commentid>
    <comment_count>8</comment_count>
      <attachid>427174</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-04-27 11:49:55 -0700</bug_when>
    <thetext>Comment on attachment 427174
Patch

Lets wait for iOS results before landing, but I&apos;m happy with this change</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754802</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-04-27 15:09:52 -0700</bug_when>
    <thetext>Committed r276670 (237089@main): &lt;https://commits.webkit.org/237089@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 427174.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754803</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-04-27 15:10:23 -0700</bug_when>
    <thetext>&lt;rdar://problem/77232886&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426935</attachid>
            <date>2021-04-23 12:38:07 -0700</date>
            <delta_ts>2021-04-27 11:19:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224989-20210423203806.patch</filename>
            <type>text/plain</type>
            <size>8172</size>
            <attacher name="Sam Sneddon [:gsnedders]">gsnedders</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2NDUwCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9sYXlvdXRfdGVzdF9ydW5uZXIucHkgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9sYXlvdXRfdGVz
dF9ydW5uZXIucHkKaW5kZXggMmU2MGIzMTJkZTZlYzhiMjNiNzM3MmE3YzcyNWY2NzE1OGNkNjZl
Yy4uNjJkNDkwNjE5OTQ2YmEwOGUxMTI4M2M0ZjNkZjk3OWRmYTgzYTQ2MSAxMDA2NDQKLS0tIGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbGF5b3V0X3Rl
c3RfcnVubmVyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2Nv
bnRyb2xsZXJzL2xheW91dF90ZXN0X3J1bm5lci5weQpAQCAtOTQsMTAgKzk0LDcgQEAgY2xhc3Mg
TGF5b3V0VGVzdFJ1bm5lcihvYmplY3QpOgogCiAgICAgZGVmIHJ1bl90ZXN0cyhzZWxmLCBleHBl
Y3RhdGlvbnMsIHRlc3RfaW5wdXRzLCBudW1fd29ya2VycywgcmV0cnlpbmcsIGRldmljZV90eXBl
PU5vbmUpOgogICAgICAgICBzZWxmLl9leHBlY3RhdGlvbnMgPSBleHBlY3RhdGlvbnMKLSAgICAg
ICAgc2VsZi5fdGVzdF9pbnB1dHMgPSBbXQotICAgICAgICBmb3IgdGVzdF9pbnB1dCBpbiB0ZXN0
X2lucHV0czoKLSAgICAgICAgICAgIHNlbGYuX3VwZGF0ZV90ZXN0X2lucHV0KHRlc3RfaW5wdXQs
IGRldmljZV90eXBlKQotICAgICAgICAgICAgc2VsZi5fdGVzdF9pbnB1dHMuYXBwZW5kKHRlc3Rf
aW5wdXQpCisgICAgICAgIHNlbGYuX3Rlc3RfaW5wdXRzID0gbGlzdCh0ZXN0X2lucHV0cykKIAog
ICAgICAgICBzZWxmLl9yZXRyeWluZyA9IHJldHJ5aW5nCiAKQEAgLTEzNiwxNSArMTMzLDYgQEAg
Y2xhc3MgTGF5b3V0VGVzdFJ1bm5lcihvYmplY3QpOgogCiAgICAgICAgIHJldHVybiBydW5fcmVz
dWx0cwogCi0gICAgZGVmIF91cGRhdGVfdGVzdF9pbnB1dChzZWxmLCB0ZXN0X2lucHV0LCBkZXZp
Y2VfdHlwZT1Ob25lKToKLSAgICAgICAgaWYgdGVzdF9pbnB1dC5yZWZlcmVuY2VfZmlsZXMgaXMg
Tm9uZToKLSAgICAgICAgICAgICMgTGF6eSBpbml0aWFsaXphdGlvbi4KLSAgICAgICAgICAgIHRl
c3RfaW5wdXQucmVmZXJlbmNlX2ZpbGVzID0gc2VsZi5fcG9ydC5yZWZlcmVuY2VfZmlsZXModGVz
dF9pbnB1dC50ZXN0X25hbWUsIGRldmljZV90eXBlPWRldmljZV90eXBlKQotICAgICAgICBpZiB0
ZXN0X2lucHV0LnJlZmVyZW5jZV9maWxlczoKLSAgICAgICAgICAgIHRlc3RfaW5wdXQuc2hvdWxk
X3J1bl9waXhlbF90ZXN0ID0gVHJ1ZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgdGVzdF9p
bnB1dC5zaG91bGRfcnVuX3BpeGVsX3Rlc3QgPSBzZWxmLl9wb3J0LnNob3VsZF9ydW5fYXNfcGl4
ZWxfdGVzdCh0ZXN0X2lucHV0KQotCiAgICAgZGVmIF93b3JrZXJfZmFjdG9yeShzZWxmLCB3b3Jr
ZXJfY29ubmVjdGlvbik6CiAgICAgICAgIHJlc3VsdHNfZGlyZWN0b3J5ID0gc2VsZi5fcmVzdWx0
c19kaXJlY3RvcnkKICAgICAgICAgaWYgc2VsZi5fcmV0cnlpbmc6CmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyLnB5IGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlci5w
eQppbmRleCA3MjhhMTY1MDM3MzlhY2NjNjhhNTRmNDAzNjJlNzA3ZjkyMThlNTU4Li40ZWFlOTRl
YTkxNTRiNzRlMDRiNWM3YzFhZDI3YjdhMmQ4OTEyYTZhIDEwMDY0NAotLS0gYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyLnB5CisrKyBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXIucHkK
QEAgLTIxNSwxMSArMjE1LDQwIEBAIGNsYXNzIE1hbmFnZXIob2JqZWN0KToKICAgICAgICAgcmV0
dXJuIHRlc3RzX3RvX3J1bgogCiAgICAgZGVmIF90ZXN0X2lucHV0X2Zvcl9maWxlKHNlbGYsIHRl
c3RfZmlsZSwgZGV2aWNlX3R5cGUpOgorICAgICAgICByZWZlcmVuY2VfZmlsZXMgPSBzZWxmLl9w
b3J0LnJlZmVyZW5jZV9maWxlcygKKyAgICAgICAgICAgIHRlc3RfZmlsZS50ZXN0X3BhdGgsIGRl
dmljZV90eXBlPWRldmljZV90eXBlCisgICAgICAgICkKKyAgICAgICAgdGltZW91dCA9ICgKKyAg
ICAgICAgICAgIHNlbGYuX29wdGlvbnMuc2xvd190aW1lX291dF9tcworICAgICAgICAgICAgaWYg
c2VsZi5fdGVzdF9pc19zbG93KHRlc3RfZmlsZS50ZXN0X3BhdGgsIGRldmljZV90eXBlPWRldmlj
ZV90eXBlKQorICAgICAgICAgICAgZWxzZSBzZWxmLl9vcHRpb25zLnRpbWVfb3V0X21zCisgICAg
ICAgICkKKyAgICAgICAgc2hvdWxkX2R1bXBfanNjb25zb2xlbG9nX2luX3N0ZGVyciA9ICgKKyAg
ICAgICAgICAgIHNlbGYuX3Rlc3Rfc2hvdWxkX2R1bXBfanNjb25zb2xlbG9nX2luX3N0ZGVycigK
KyAgICAgICAgICAgICAgICB0ZXN0X2ZpbGUudGVzdF9wYXRoLCBkZXZpY2VfdHlwZT1kZXZpY2Vf
dHlwZQorICAgICAgICAgICAgKQorICAgICAgICApCisKKyAgICAgICAgaWYgcmVmZXJlbmNlX2Zp
bGVzOgorICAgICAgICAgICAgc2hvdWxkX3J1bl9waXhlbF90ZXN0ID0gVHJ1ZQorICAgICAgICBl
bGlmIG5vdCBzZWxmLl9vcHRpb25zLnBpeGVsX3Rlc3RzOgorICAgICAgICAgICAgc2hvdWxkX3J1
bl9waXhlbF90ZXN0ID0gRmFsc2UKKyAgICAgICAgZWxpZiBzZWxmLl9vcHRpb25zLnBpeGVsX3Rl
c3RfZGlyZWN0b3JpZXM6CisgICAgICAgICAgICBzaG91bGRfcnVuX3BpeGVsX3Rlc3QgPSBhbnko
CisgICAgICAgICAgICAgICAgdGVzdF9maWxlLnRlc3RfcGF0aC5zdGFydHN3aXRoKGRpcmVjdG9y
eSkKKyAgICAgICAgICAgICAgICBmb3IgZGlyZWN0b3J5IGluIHNlbGYuX29wdGlvbnMucGl4ZWxf
dGVzdF9kaXJlY3RvcmllcworICAgICAgICAgICAgKQorICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgc2hvdWxkX3J1bl9waXhlbF90ZXN0ID0gVHJ1ZQorCiAgICAgICAgIHJldHVybiBUZXN0SW5w
dXQoCiAgICAgICAgICAgICB0ZXN0X2ZpbGUsCi0gICAgICAgICAgICBzZWxmLl9vcHRpb25zLnNs
b3dfdGltZV9vdXRfbXMgaWYgc2VsZi5fdGVzdF9pc19zbG93KHRlc3RfZmlsZS50ZXN0X3BhdGgs
IGRldmljZV90eXBlPWRldmljZV90eXBlKSBlbHNlIHNlbGYuX29wdGlvbnMudGltZV9vdXRfbXMs
Ci0gICAgICAgICAgICB0ZXN0X2ZpbGUubmVlZHNfYW55X3NlcnZlciwKLSAgICAgICAgICAgIHNo
b3VsZF9kdW1wX2pzY29uc29sZWxvZ19pbl9zdGRlcnI9c2VsZi5fdGVzdF9zaG91bGRfZHVtcF9q
c2NvbnNvbGVsb2dfaW5fc3RkZXJyKHRlc3RfZmlsZS50ZXN0X3BhdGgsIGRldmljZV90eXBlPWRl
dmljZV90eXBlKSkKKyAgICAgICAgICAgIHRpbWVvdXQ9dGltZW91dCwKKyAgICAgICAgICAgIG5l
ZWRzX3NlcnZlcnM9dGVzdF9maWxlLm5lZWRzX2FueV9zZXJ2ZXIsCisgICAgICAgICAgICBzaG91
bGRfZHVtcF9qc2NvbnNvbGVsb2dfaW5fc3RkZXJyPXNob3VsZF9kdW1wX2pzY29uc29sZWxvZ19p
bl9zdGRlcnIsCisgICAgICAgICAgICByZWZlcmVuY2VfZmlsZXM9cmVmZXJlbmNlX2ZpbGVzLAor
ICAgICAgICAgICAgc2hvdWxkX3J1bl9waXhlbF90ZXN0PXNob3VsZF9ydW5fcGl4ZWxfdGVzdCwK
KyAgICAgICAgKQogCiAgICAgZGVmIF90ZXN0X2lzX3Nsb3coc2VsZiwgdGVzdF9maWxlLCBkZXZp
Y2VfdHlwZSk6CiAgICAgICAgIGlmIHNlbGYuX2V4cGVjdGF0aW9uc1tkZXZpY2VfdHlwZV0ubW9k
ZWwoKS5oYXNfbW9kaWZpZXIodGVzdF9maWxlLCB0ZXN0X2V4cGVjdGF0aW9ucy5TTE9XKToKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0
LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3QucHkK
aW5kZXggYmQ1ODYxNmRlMDc3NGUxOWY0NTVhYzU1OTlhY2ZiNjU3YjRlYWZhZS4uMDczZjA0YTM2
YTBmNTE1MTk1NjVjMWZiMTQ1MDBkYzYwYTEwNGQzZSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3QucHkKQEAgLTMwLDcgKzMwLDcgQEAK
IGltcG9ydCBhdHRyCiAKIAotQGF0dHIucyhmcm96ZW49VHJ1ZSkKK0BhdHRyLnMoZnJvemVuPVRy
dWUsIHNsb3RzPVRydWUpCiBjbGFzcyBUZXN0KG9iamVjdCk6CiAgICAgIiIiRGF0YSBhYm91dCBh
IHRlc3QgYW5kIGl0cyBleHBlY3RhdGlvbnMuCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X2lucHV0LnB5IGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfaW5wdXQucHkKaW5kZXggM2RiYzVj
Y2YwNDIwMTQyNzk1MDkzYTk5MDA0M2EzZDg3NDA4NDRkYS4uYzk5M2EwMzcyM2QwZjUzMmVkZWJi
OWQwZGMxOWZlMTliZDlmOTQ2ZSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfaW5wdXQucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfaW5wdXQucHkKQEAgLTEsNSArMSw2IEBACiAj
IENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIyBD
b3B5cmlnaHQgKEMpIDIwMTAgR2Fib3IgUmFwY3NhbnlpIChyZ2Fib3JAaW5mLnUtc3plZ2VkLmh1
KSwgVW5pdmVyc2l0eSBvZiBTemVnZWQKKyMgQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAg
LTI4LDMzICsyOSwyNSBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiAKK2ltcG9ydCBhdHRyCisKIGZyb20g
LnRlc3QgaW1wb3J0IFRlc3QKIAorCitAYXR0ci5zKGZyb3plbj1UcnVlLCBzbG90cz1UcnVlKQog
Y2xhc3MgVGVzdElucHV0KG9iamVjdCk6CiAgICAgIiIiSW5mb3JtYXRpb24gYWJvdXQgYSB0ZXN0
IG5lZWRlZCB0byBydW4gaXQuCiAKICAgICBUaGlzIGRpZmZlcnMgZnJvbSBhIFRlc3Qgb2JqZWN0
IGluc29mYXIgYXMgaXQgY29udGFpbnMgbWV0YWRhdGEgbm90IHNwZWNpZmljIHRvIHRoZSB0ZXN0
LAogICAgIGRlcml2ZWQgZnJvbSBUZXN0RXhwZWN0YXRpb25zL3Rlc3QgZXhlY3V0aW9uIG9wdGlv
bnMgKGUuZy4sIHRpbWVvdXQpLgogICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsCi0g
ICAgICAgICAgICAgICAgIHRlc3QsICAjIHR5cGU6IFRlc3QKLSAgICAgICAgICAgICAgICAgdGlt
ZW91dD1Ob25lLCAgIyB0eXBlOiBVbmlvbltOb25lLCBpbnQsIHN0cl0KLSAgICAgICAgICAgICAg
ICAgbmVlZHNfc2VydmVycz1Ob25lLCAgIyB0eXBlOiBPcHRpb25hbFtib29sXQotICAgICAgICAg
ICAgICAgICBzaG91bGRfZHVtcF9qc2NvbnNvbGVsb2dfaW5fc3RkZXJyPU5vbmUsICAjIHR5cGU6
IE9wdGlvbmFsW2Jvb2xdCi0gICAgICAgICAgICAgICAgICk6Ci0gICAgICAgICMgVGVzdElucHV0
IG9iamVjdHMgYXJlIG5vcm1hbGx5IGNvbnN0cnVjdGVkIGJ5IHRoZSBtYW5hZ2VyIGFuZCBwYXNz
ZWQKLSAgICAgICAgIyB0byB0aGUgd29ya2VycywgYnV0IHRoZXNlIHNvbWUgZmllbGRzIGFyZSBz
ZXQgbGF6aWx5IGluIHRoZSB3b3JrZXJzIHdoZXJlIHBvc3NpYmxlCi0gICAgICAgICMgYmVjYXVz
ZSB0aGV5IHJlcXVpcmUgdXMgdG8gbG9vayBhdCB0aGUgZmlsZXN5c3RlbSBhbmQgd2Ugd2FudCB0
byBiZSBhYmxlIHRvIGRvIHRoYXQgaW4gcGFyYWxsZWwuCi0gICAgICAgIHNlbGYudGVzdCA9IHRl
c3QKLSAgICAgICAgc2VsZi50aW1lb3V0ID0gdGltZW91dCAgIyBpbiBtc2Vjczsgc2hvdWxkIHJl
bmFtZSB0aGlzIGZvciBjb25zaXN0ZW5jeQotICAgICAgICBzZWxmLm5lZWRzX3NlcnZlcnMgPSBu
ZWVkc19zZXJ2ZXJzCi0gICAgICAgIHNlbGYuc2hvdWxkX2R1bXBfanNjb25zb2xlbG9nX2luX3N0
ZGVyciA9IHNob3VsZF9kdW1wX2pzY29uc29sZWxvZ19pbl9zdGRlcnIKLSAgICAgICAgc2VsZi5y
ZWZlcmVuY2VfZmlsZXMgPSBOb25lCisgICAgdGVzdCA9IGF0dHIuaWIodHlwZT1UZXN0KQorICAg
IHRpbWVvdXQgPSBhdHRyLmliKGRlZmF1bHQ9Tm9uZSkgICMgdHlwZTogVW5pb25bTm9uZSwgaW50
LCBzdHJdCisgICAgbmVlZHNfc2VydmVycyA9IGF0dHIuaWIoZGVmYXVsdD1Ob25lKSAgIyB0eXBl
OiBPcHRpb25hbFtib29sXQorICAgIHNob3VsZF9kdW1wX2pzY29uc29sZWxvZ19pbl9zdGRlcnIg
PSBhdHRyLmliKGRlZmF1bHQ9Tm9uZSkgICMgdHlwZTogT3B0aW9uYWxbYm9vbF0KKyAgICByZWZl
cmVuY2VfZmlsZXMgPSBhdHRyLmliKGRlZmF1bHQ9Tm9uZSkgICMgdHlwZTogT3B0aW9uYWxbTGlz
dFtUdXBsZVtzdHIgc3RyXV1dCisgICAgc2hvdWxkX3J1bl9waXhlbF90ZXN0ID0gYXR0ci5pYihk
ZWZhdWx0PU5vbmUpICAjIHR5cGU6IE9wdGlvbmFsW2Jvb2xdCiAKICAgICBAcHJvcGVydHkKICAg
ICBkZWYgdGVzdF9uYW1lKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi50ZXN0LnRlc3RfcGF0
aAotCi0gICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gIlRlc3RJbnB1dCgn
JXMnLCB0aW1lb3V0PSVzLCBuZWVkc19zZXJ2ZXJzPSVzLCByZWZlcmVuY2VfZmlsZXM9JXMsIHNo
b3VsZF9kdW1wX2pzY29uc29sZWxvZ19pbl9zdGRlcnI9JXMpIiAlIChzZWxmLnRlc3RfbmFtZSwg
c2VsZi50aW1lb3V0LCBzZWxmLm5lZWRzX3NlcnZlcnMsIHNlbGYucmVmZXJlbmNlX2ZpbGVzLCBz
ZWxmLnNob3VsZF9kdW1wX2pzY29uc29sZWxvZ19pbl9zdGRlcnIpCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
cG9ydC9iYXNlLnB5CmluZGV4IGQzYmMxOTJjMTU0MGU3YTQxMzBmYmU1N2FkZDQzNmRmMTU2MDA3
MDguLjI0NGFkZmUwMTkzYzRiZTVjZWM0MmEzYzdmMWZhZWFjMmNmM2YyYjMgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvcG9ydC9iYXNlLnB5CkBAIC0xMzU4LDE4ICsxMzU4LDYgQEAgY2xhc3MgUG9ydChv
YmplY3QpOgogICAgIGRlZiBzYW1wbGVfcHJvY2VzcyhzZWxmLCBuYW1lLCBwaWQsIHRhcmdldF9o
b3N0PU5vbmUpOgogICAgICAgICBwYXNzCiAKLSAgICBkZWYgc2hvdWxkX3J1bl9hc19waXhlbF90
ZXN0KHNlbGYsIHRlc3RfaW5wdXQpOgotICAgICAgICBpZiBub3Qgc2VsZi5fb3B0aW9ucy5waXhl
bF90ZXN0czoKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICBpZiBzZWxmLl9vcHRp
b25zLnBpeGVsX3Rlc3RfZGlyZWN0b3JpZXM6Ci0gICAgICAgICAgICByZXR1cm4gYW55KHRlc3Rf
aW5wdXQudGVzdF9uYW1lLnN0YXJ0c3dpdGgoZGlyZWN0b3J5KSBmb3IgZGlyZWN0b3J5IGluIHNl
bGYuX29wdGlvbnMucGl4ZWxfdGVzdF9kaXJlY3RvcmllcykKLSAgICAgICAgcmV0dXJuIHNlbGYu
X3Nob3VsZF9ydW5fYXNfcGl4ZWxfdGVzdCh0ZXN0X2lucHV0KQotCi0gICAgZGVmIF9zaG91bGRf
cnVuX2FzX3BpeGVsX3Rlc3Qoc2VsZiwgdGVzdF9pbnB1dCk6Ci0gICAgICAgICMgRGVmYXVsdCBi
ZWhhdmlvciBpcyB0byBhbGxvdyBhbGwgdGVzdCB0byBydW4gYXMgcGl4ZWwgdGVzdHMgaWYgLS1w
aXhlbC10ZXN0cyBpcyBvbiBhbmQKLSAgICAgICAgIyAtLXBpeGVsLXRlc3QtZGlyZWN0b3J5IGlz
IG5vdCBzcGVjaWZpZWQuCi0gICAgICAgIHJldHVybiBUcnVlCi0KICAgICBkZWYgX2luX2ZsYXRw
YWtfc2FuZGJveChzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGVzeXN0ZW0uZXhpc3Rz
KCIvLmZsYXRwYWstaW5mbyIpCiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427174</attachid>
            <date>2021-04-27 11:19:12 -0700</date>
            <delta_ts>2021-04-27 15:09:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224989-20210427191910.patch</filename>
            <type>text/plain</type>
            <size>18483</size>
            <attacher name="Sam Sneddon [:gsnedders]">gsnedders</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2NjMxCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYjc1MGIyZmNkOGM1OTY5ZjlkYzJiMzljZDkzNTFhMmE5
MjQ0MWEzMC4uNTk5N2I0YTRjMWE3YjRkMTRlODY1ZjJlMmVlZjU1NWZmZTY5OGNiYiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2
IEBACisyMDIxLTA0LTI3ICBTYW0gU25lZGRvbiAgPGdzbmVkZGVyc0BhcHBsZS5jb20+CisKKyAg
ICAgICAgTWFrZSBUZXN0SW5wdXQgaW1tdXRhYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQ5ODkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgbWFpbiBwb2ludCBoZXJlIGlzIG1vdmluZyBjb21w
dXRpbmcgcmVmZXJlbmNlX2ZpbGVzIGFuZAorICAgICAgICBzaG91bGRfcnVuX3BpeGVsX3Rlc3Qg
dG8gd2hlbiB3ZSBpbml0aWFsbHkgY29uc3RydWN0IFRlc3RJbnB1dCwgYXMgYXQKKyAgICAgICAg
dGhpcyBwb2ludCB0aGlzIGhhcHBlbnMgaW4gdGhlIHNvbWUgcHJvY2VzcyBhbmQgdGhyZWFkIChz
aW5jZSBidWcKKyAgICAgICAgMjIxNTc3KSwgaGVuY2UgdGhlcmUncyBubyByZWFsIHJlYXNvbiBm
b3IgaXQgdG8gaGFwcGVuIGxhdGVyLgorCisgICAgICAgIEluIGRvaW5nIHRoaXMsIEkndmUgZWxp
bWluYXRlZCBQb3J0LnNob3VsZF9ydW5fYXNfcGl4ZWxfdGVzdCBvbiB0aGUKKyAgICAgICAgYmFz
aXMgdGhhdCBubyBwb3J0IGFjdHVhbGx5IG92ZXJyb2RlIHRoaXMgdG8gYXBwbHkgYW55IGRpZmZl
cmVudCBsb2dpYywKKyAgICAgICAgZXNwZWNpYWxseSBnaXZlbiBpdCBzZWVtcyB1bmxpa2VseSB0
aGF0IGFueSBwb3J0IHdvdWxkIHdhbnQgdG8gdXNlCisgICAgICAgIGRpZmZlcmVudCBsb2dpYyBo
ZXJlLiAoTm90ZSB0aGF0IHBvcnRzIHN0aWxsIGhhdmUgc29tZSBjb250cm9sIHRocm91Z2gKKyAg
ICAgICAgUG9ydC5kZWZhdWx0X3BpeGVsX3Rlc3RzLikKKworICAgICAgICBXaXRoIHRoaXMgZG9u
ZSwgaXQgc2hvdWxkIHRoZW4gYmUgcG9zc2libGUgdG8gbWFrZSBUZXN0SW5wdXQgaW1tdXRhYmxl
LAorICAgICAgICB3aGljaCBzaG91bGQgaGVscCBtYWtlIHRoaW5ncyBlYXNpZXIgdG8gdW5kZXJz
dGFuZC4KKworICAgICAgICBFeHBlY3QsIGFzIGl0IGhhcHBlbnMsIHRoZXJlIHdhcyBhIHJlYXNv
biBmb3IgaXQgdG8gaGFwcGVuIGxhdGVyOiB3ZQorICAgICAgICBwcmV2aW91c2x5IGdlbmVyYXRl
ZCBhbGwgdGhlIFRlc3RJbnB1dHMgdHdpY2UsIG9uY2UgdG8gZmluZCBvdXQgaG93CisgICAgICAg
IG1hbnkgd29ya2VycyB3ZSBuZWVkIGFuZCB0aGVuIGFub3RoZXIgdGltZSB0byBhY3R1YWxseSBy
dW4gdGhlbSAocGx1cworICAgICAgICBwb3RlbnRpYWxseSBhIHRoaXJkIHRpbWUgZm9yIHJldHJp
ZXMhKS4gVGhlcmUncyBubyBhY3R1YWwgcmVhc29uIHRvIGRvCisgICAgICAgIHRoaXMsIHNvIG1v
dmUgdGhlIGNyZWF0aW9uIHRvIE1hbmFnZXIucnVuIGFuZCBwYXNzIHRoYXQgbGlzdCBhcm91bmQK
KyAgICAgICAgaW5zdGVhZCBvZiB0aGUgVGVzdHMuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9sYXlvdXRfdGVzdF9ydW5uZXIucHk6CisgICAg
ICAgIChMYXlvdXRUZXN0UnVubmVyLnJ1bl90ZXN0cyk6IERvbid0IHVwZGF0ZSBUZXN0SW5wdXQu
CisgICAgICAgIChMYXlvdXRUZXN0UnVubmVyLl91cGRhdGVfdGVzdF9pbnB1dCk6IERlbGV0ZWQu
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFu
YWdlci5weToKKyAgICAgICAgKE1hbmFnZXIuX3Rlc3RfaW5wdXRfZm9yX2ZpbGUpOiBNb3ZlZCBm
cm9tIF91cGRhdGVfdGVzdF9pbnB1dCBhbmQKKyAgICAgICAgUG9ydC5zaG91bGRfcnVuX2FzX3Bp
eGVsX3Rlc3QuCisgICAgICAgIChNYW5hZ2VyLl9nZXRfdGVzdF9pbnB1dHMpOiBEZWxldGVkLgor
ICAgICAgICAoTWFuYWdlci5fbXVsdGlwbHlfdGVzdF9pbnB1dHMpOiBTaW1wbGlmeSBjb2RlIHVz
ZWQgdG8gZ2VuZXJhdGVkCisgICAgICAgIHJlcGVhdGVkL3JlcnVuIHRlc3QgaW5wdXRzLgorICAg
ICAgICAoTWFuYWdlci5fdXBkYXRlX3dvcmtlcl9jb3VudCk6IERvbid0IGNyZWF0ZSBUZXN0SW5w
dXRzOyB0YWtlCisgICAgICAgIHRlc3RfaW5wdXRzIGFzIGFyZy4KKyAgICAgICAgKE1hbmFnZXIu
X3NldF91cF9ydW4pOiBSZW5hbWUgdGVzdF9uYW1lcyB0byB0ZXN0X2lucHV0cy4KKyAgICAgICAg
KE1hbmFnZXIucnVuKTogQ3JlYXRlIFRlc3RJbnB1dCBvYmplY3RzIGhlcmUuCisgICAgICAgIChN
YW5hZ2VyLl9ydW5fdGVzdF9zdWJzZXQpOiBUYWtlIFRlc3RJbnB1dHMgbm90IFRlc3RzLCBnZW5l
cmF0ZSBuZXcKKyAgICAgICAgVGVzdElucHV0cyBmb3IgcmV0cnkgaWYgbmVlZGVkLgorICAgICAg
ICAoTWFuYWdlci5fcnVuX3Rlc3RzKTogRG9uJ3QgY3JlYXRlIFRlc3RJbnB1dHM7IHRha2UgdGVz
dF9pbnB1dHMgYXMgYXJnLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L21vZGVscy90ZXN0LnB5OiBGbHktYnk6IHVzZSBfX3Nsb3RzX18uCisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfaW5wdXQucHk6CisgICAgICAgIChU
ZXN0SW5wdXQpOiBNaWdyYXRlIHRvIGF0dHJzLgorICAgICAgICAoVGVzdElucHV0Ll9faW5pdF9f
KTogRGVsZXRlZC4KKyAgICAgICAgKFRlc3RJbnB1dC5fX3JlcHJfXyk6IERlbGV0ZWQuCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2UucHk6CisgICAgICAgIChQb3J0LnNob3Vs
ZF9ydW5fYXNfcGl4ZWxfdGVzdCk6IERlbGV0ZWQuCisgICAgICAgIChQb3J0Ll9zaG91bGRfcnVu
X2FzX3BpeGVsX3Rlc3QpOiBEZWxldGVkLgorCiAyMDIxLTA0LTI2ICBXZW5zb24gSHNpZWggIDx3
ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFN1YmRpdmlkZSBpbWFnZSBvdmVybGF5
IHRleHQgaW50byBvbmUgb3IgbW9yZSBlbGVtZW50cyBwZXIgbGluZQpkaWZmIC0tZ2l0IGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbGF5b3V0X3Rlc3Rf
cnVubmVyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxl
cnMvbGF5b3V0X3Rlc3RfcnVubmVyLnB5CmluZGV4IDJlNjBiMzEyZGU2ZWM4YjIzYjczNzJhN2M3
MjVmNjcxNThjZDY2ZWMuLjYyZDQ5MDYxOTk0NmJhMDhlMTEyODNjNGYzZGY5NzlkZmE4M2E0NjEg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xs
ZXJzL2xheW91dF90ZXN0X3J1bm5lci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9jb250cm9sbGVycy9sYXlvdXRfdGVzdF9ydW5uZXIucHkKQEAgLTk0LDEwICs5
NCw3IEBAIGNsYXNzIExheW91dFRlc3RSdW5uZXIob2JqZWN0KToKIAogICAgIGRlZiBydW5fdGVz
dHMoc2VsZiwgZXhwZWN0YXRpb25zLCB0ZXN0X2lucHV0cywgbnVtX3dvcmtlcnMsIHJldHJ5aW5n
LCBkZXZpY2VfdHlwZT1Ob25lKToKICAgICAgICAgc2VsZi5fZXhwZWN0YXRpb25zID0gZXhwZWN0
YXRpb25zCi0gICAgICAgIHNlbGYuX3Rlc3RfaW5wdXRzID0gW10KLSAgICAgICAgZm9yIHRlc3Rf
aW5wdXQgaW4gdGVzdF9pbnB1dHM6Ci0gICAgICAgICAgICBzZWxmLl91cGRhdGVfdGVzdF9pbnB1
dCh0ZXN0X2lucHV0LCBkZXZpY2VfdHlwZSkKLSAgICAgICAgICAgIHNlbGYuX3Rlc3RfaW5wdXRz
LmFwcGVuZCh0ZXN0X2lucHV0KQorICAgICAgICBzZWxmLl90ZXN0X2lucHV0cyA9IGxpc3QodGVz
dF9pbnB1dHMpCiAKICAgICAgICAgc2VsZi5fcmV0cnlpbmcgPSByZXRyeWluZwogCkBAIC0xMzYs
MTUgKzEzMyw2IEBAIGNsYXNzIExheW91dFRlc3RSdW5uZXIob2JqZWN0KToKIAogICAgICAgICBy
ZXR1cm4gcnVuX3Jlc3VsdHMKIAotICAgIGRlZiBfdXBkYXRlX3Rlc3RfaW5wdXQoc2VsZiwgdGVz
dF9pbnB1dCwgZGV2aWNlX3R5cGU9Tm9uZSk6Ci0gICAgICAgIGlmIHRlc3RfaW5wdXQucmVmZXJl
bmNlX2ZpbGVzIGlzIE5vbmU6Ci0gICAgICAgICAgICAjIExhenkgaW5pdGlhbGl6YXRpb24uCi0g
ICAgICAgICAgICB0ZXN0X2lucHV0LnJlZmVyZW5jZV9maWxlcyA9IHNlbGYuX3BvcnQucmVmZXJl
bmNlX2ZpbGVzKHRlc3RfaW5wdXQudGVzdF9uYW1lLCBkZXZpY2VfdHlwZT1kZXZpY2VfdHlwZSkK
LSAgICAgICAgaWYgdGVzdF9pbnB1dC5yZWZlcmVuY2VfZmlsZXM6Ci0gICAgICAgICAgICB0ZXN0
X2lucHV0LnNob3VsZF9ydW5fcGl4ZWxfdGVzdCA9IFRydWUKLSAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgIHRlc3RfaW5wdXQuc2hvdWxkX3J1bl9waXhlbF90ZXN0ID0gc2VsZi5fcG9ydC5zaG91
bGRfcnVuX2FzX3BpeGVsX3Rlc3QodGVzdF9pbnB1dCkKLQogICAgIGRlZiBfd29ya2VyX2ZhY3Rv
cnkoc2VsZiwgd29ya2VyX2Nvbm5lY3Rpb24pOgogICAgICAgICByZXN1bHRzX2RpcmVjdG9yeSA9
IHNlbGYuX3Jlc3VsdHNfZGlyZWN0b3J5CiAgICAgICAgIGlmIHNlbGYuX3JldHJ5aW5nOgpkaWZm
IC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMv
bWFuYWdlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xs
ZXJzL21hbmFnZXIucHkKaW5kZXggNzI4YTE2NTAzNzM5YWNjYzY4YTU0ZjQwMzYyZTcwN2Y5MjE4
ZTU1OC4uYmQwNzQ1MzQwMzQzMGU3MTU3NTBkMDNjZGI4NWM4NmFiN2I1ZDhjMCAxMDA2NDQKLS0t
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdl
ci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVy
cy9tYW5hZ2VyLnB5CkBAIC0yMTUsMTEgKzIxNSw0MCBAQCBjbGFzcyBNYW5hZ2VyKG9iamVjdCk6
CiAgICAgICAgIHJldHVybiB0ZXN0c190b19ydW4KIAogICAgIGRlZiBfdGVzdF9pbnB1dF9mb3Jf
ZmlsZShzZWxmLCB0ZXN0X2ZpbGUsIGRldmljZV90eXBlKToKKyAgICAgICAgcmVmZXJlbmNlX2Zp
bGVzID0gc2VsZi5fcG9ydC5yZWZlcmVuY2VfZmlsZXMoCisgICAgICAgICAgICB0ZXN0X2ZpbGUu
dGVzdF9wYXRoLCBkZXZpY2VfdHlwZT1kZXZpY2VfdHlwZQorICAgICAgICApCisgICAgICAgIHRp
bWVvdXQgPSAoCisgICAgICAgICAgICBzZWxmLl9vcHRpb25zLnNsb3dfdGltZV9vdXRfbXMKKyAg
ICAgICAgICAgIGlmIHNlbGYuX3Rlc3RfaXNfc2xvdyh0ZXN0X2ZpbGUudGVzdF9wYXRoLCBkZXZp
Y2VfdHlwZT1kZXZpY2VfdHlwZSkKKyAgICAgICAgICAgIGVsc2Ugc2VsZi5fb3B0aW9ucy50aW1l
X291dF9tcworICAgICAgICApCisgICAgICAgIHNob3VsZF9kdW1wX2pzY29uc29sZWxvZ19pbl9z
dGRlcnIgPSAoCisgICAgICAgICAgICBzZWxmLl90ZXN0X3Nob3VsZF9kdW1wX2pzY29uc29sZWxv
Z19pbl9zdGRlcnIoCisgICAgICAgICAgICAgICAgdGVzdF9maWxlLnRlc3RfcGF0aCwgZGV2aWNl
X3R5cGU9ZGV2aWNlX3R5cGUKKyAgICAgICAgICAgICkKKyAgICAgICAgKQorCisgICAgICAgIGlm
IHJlZmVyZW5jZV9maWxlczoKKyAgICAgICAgICAgIHNob3VsZF9ydW5fcGl4ZWxfdGVzdCA9IFRy
dWUKKyAgICAgICAgZWxpZiBub3Qgc2VsZi5fb3B0aW9ucy5waXhlbF90ZXN0czoKKyAgICAgICAg
ICAgIHNob3VsZF9ydW5fcGl4ZWxfdGVzdCA9IEZhbHNlCisgICAgICAgIGVsaWYgc2VsZi5fb3B0
aW9ucy5waXhlbF90ZXN0X2RpcmVjdG9yaWVzOgorICAgICAgICAgICAgc2hvdWxkX3J1bl9waXhl
bF90ZXN0ID0gYW55KAorICAgICAgICAgICAgICAgIHRlc3RfZmlsZS50ZXN0X3BhdGguc3RhcnRz
d2l0aChkaXJlY3RvcnkpCisgICAgICAgICAgICAgICAgZm9yIGRpcmVjdG9yeSBpbiBzZWxmLl9v
cHRpb25zLnBpeGVsX3Rlc3RfZGlyZWN0b3JpZXMKKyAgICAgICAgICAgICkKKyAgICAgICAgZWxz
ZToKKyAgICAgICAgICAgIHNob3VsZF9ydW5fcGl4ZWxfdGVzdCA9IFRydWUKKwogICAgICAgICBy
ZXR1cm4gVGVzdElucHV0KAogICAgICAgICAgICAgdGVzdF9maWxlLAotICAgICAgICAgICAgc2Vs
Zi5fb3B0aW9ucy5zbG93X3RpbWVfb3V0X21zIGlmIHNlbGYuX3Rlc3RfaXNfc2xvdyh0ZXN0X2Zp
bGUudGVzdF9wYXRoLCBkZXZpY2VfdHlwZT1kZXZpY2VfdHlwZSkgZWxzZSBzZWxmLl9vcHRpb25z
LnRpbWVfb3V0X21zLAotICAgICAgICAgICAgdGVzdF9maWxlLm5lZWRzX2FueV9zZXJ2ZXIsCi0g
ICAgICAgICAgICBzaG91bGRfZHVtcF9qc2NvbnNvbGVsb2dfaW5fc3RkZXJyPXNlbGYuX3Rlc3Rf
c2hvdWxkX2R1bXBfanNjb25zb2xlbG9nX2luX3N0ZGVycih0ZXN0X2ZpbGUudGVzdF9wYXRoLCBk
ZXZpY2VfdHlwZT1kZXZpY2VfdHlwZSkpCisgICAgICAgICAgICB0aW1lb3V0PXRpbWVvdXQsCisg
ICAgICAgICAgICBuZWVkc19zZXJ2ZXJzPXRlc3RfZmlsZS5uZWVkc19hbnlfc2VydmVyLAorICAg
ICAgICAgICAgc2hvdWxkX2R1bXBfanNjb25zb2xlbG9nX2luX3N0ZGVycj1zaG91bGRfZHVtcF9q
c2NvbnNvbGVsb2dfaW5fc3RkZXJyLAorICAgICAgICAgICAgcmVmZXJlbmNlX2ZpbGVzPXJlZmVy
ZW5jZV9maWxlcywKKyAgICAgICAgICAgIHNob3VsZF9ydW5fcGl4ZWxfdGVzdD1zaG91bGRfcnVu
X3BpeGVsX3Rlc3QsCisgICAgICAgICkKIAogICAgIGRlZiBfdGVzdF9pc19zbG93KHNlbGYsIHRl
c3RfZmlsZSwgZGV2aWNlX3R5cGUpOgogICAgICAgICBpZiBzZWxmLl9leHBlY3RhdGlvbnNbZGV2
aWNlX3R5cGVdLm1vZGVsKCkuaGFzX21vZGlmaWVyKHRlc3RfZmlsZSwgdGVzdF9leHBlY3RhdGlv
bnMuU0xPVyk6CkBAIC0yMjksMjcgKzI1OCwyOSBAQCBjbGFzcyBNYW5hZ2VyKG9iamVjdCk6CiAg
ICAgZGVmIF90ZXN0X3Nob3VsZF9kdW1wX2pzY29uc29sZWxvZ19pbl9zdGRlcnIoc2VsZiwgdGVz
dF9maWxlLCBkZXZpY2VfdHlwZSk6CiAgICAgICAgIHJldHVybiBzZWxmLl9leHBlY3RhdGlvbnNb
ZGV2aWNlX3R5cGVdLm1vZGVsKCkuaGFzX21vZGlmaWVyKHRlc3RfZmlsZSwgdGVzdF9leHBlY3Rh
dGlvbnMuRFVNUEpTQ09OU09MRUxPR0lOU1RERVJSKQogCi0gICAgZGVmIF9nZXRfdGVzdF9pbnB1
dHMoc2VsZiwgdGVzdHNfdG9fcnVuLCByZXBlYXRfZWFjaCwgaXRlcmF0aW9ucywgZGV2aWNlX3R5
cGUpOgotICAgICAgICB0ZXN0X2lucHV0cyA9IFtdCi0gICAgICAgIGZvciBfIGluIHJhbmdlKGl0
ZXJhdGlvbnMpOgotICAgICAgICAgICAgZm9yIHRlc3QgaW4gdGVzdHNfdG9fcnVuOgotICAgICAg
ICAgICAgICAgIGZvciBfIGluIHJhbmdlKHJlcGVhdF9lYWNoKToKLSAgICAgICAgICAgICAgICAg
ICAgdGVzdF9pbnB1dHMuYXBwZW5kKHNlbGYuX3Rlc3RfaW5wdXRfZm9yX2ZpbGUodGVzdCwgZGV2
aWNlX3R5cGU9ZGV2aWNlX3R5cGUpKQotICAgICAgICByZXR1cm4gdGVzdF9pbnB1dHMKLQotICAg
IGRlZiBfdXBkYXRlX3dvcmtlcl9jb3VudChzZWxmLCB0ZXN0X25hbWVzLCBkZXZpY2VfdHlwZSk6
Ci0gICAgICAgIHRlc3RfaW5wdXRzID0gc2VsZi5fZ2V0X3Rlc3RfaW5wdXRzKHRlc3RfbmFtZXMs
IHNlbGYuX29wdGlvbnMucmVwZWF0X2VhY2gsIHNlbGYuX29wdGlvbnMuaXRlcmF0aW9ucywgZGV2
aWNlX3R5cGU9ZGV2aWNlX3R5cGUpCi0gICAgICAgIHdvcmtlcl9jb3VudCA9IHNlbGYuX3J1bm5l
ci5nZXRfd29ya2VyX2NvdW50KHRlc3RfaW5wdXRzLCBpbnQoc2VsZi5fb3B0aW9ucy5jaGlsZF9w
cm9jZXNzZXMpKQorICAgIGRlZiBfbXVsdGlwbHlfdGVzdF9pbnB1dHMoc2VsZiwgdGVzdF9pbnB1
dHMsIHJlcGVhdF9lYWNoLCBpdGVyYXRpb25zKToKKyAgICAgICAgaWYgcmVwZWF0X2VhY2ggPT0g
MToKKyAgICAgICAgICAgIHBlcl9pdGVyYXRpb24gPSBsaXN0KHRlc3RfaW5wdXRzKVs6XQorICAg
ICAgICBlbHNlOgorICAgICAgICAgICAgcGVyX2l0ZXJhdGlvbiA9IFtdCisgICAgICAgICAgICBm
b3IgdGVzdF9pbnB1dCBpbiB0ZXN0X2lucHV0czoKKyAgICAgICAgICAgICAgICBwZXJfaXRlcmF0
aW9uLmV4dGVuZChbdGVzdF9pbnB1dF0gKiByZXBlYXRfZWFjaCkKKworICAgICAgICByZXR1cm4g
cGVyX2l0ZXJhdGlvbiAqIGl0ZXJhdGlvbnMKKworICAgIGRlZiBfdXBkYXRlX3dvcmtlcl9jb3Vu
dChzZWxmLCB0ZXN0X2lucHV0cyk6CisgICAgICAgIG5ld190ZXN0X2lucHV0cyA9IHNlbGYuX211
bHRpcGx5X3Rlc3RfaW5wdXRzKHRlc3RfaW5wdXRzLCBzZWxmLl9vcHRpb25zLnJlcGVhdF9lYWNo
LCBzZWxmLl9vcHRpb25zLml0ZXJhdGlvbnMpCisgICAgICAgIHdvcmtlcl9jb3VudCA9IHNlbGYu
X3J1bm5lci5nZXRfd29ya2VyX2NvdW50KG5ld190ZXN0X2lucHV0cywgaW50KHNlbGYuX29wdGlv
bnMuY2hpbGRfcHJvY2Vzc2VzKSkKICAgICAgICAgc2VsZi5fb3B0aW9ucy5jaGlsZF9wcm9jZXNz
ZXMgPSB3b3JrZXJfY291bnQKIAotICAgIGRlZiBfc2V0X3VwX3J1bihzZWxmLCB0ZXN0X25hbWVz
LCBkZXZpY2VfdHlwZSk6CisgICAgZGVmIF9zZXRfdXBfcnVuKHNlbGYsIHRlc3RfaW5wdXRzLCBk
ZXZpY2VfdHlwZSk6CiAgICAgICAgICMgVGhpcyBtdXN0IGJlIHN0YXJ0ZWQgYmVmb3JlIHdlIGNo
ZWNrIHRoZSBzeXN0ZW0gZGVwZW5kZW5jaWVzLAogICAgICAgICAjIHNpbmNlIHRoZSBoZWxwZXIg
bWF5IGRvIHRoaW5ncyB0byBtYWtlIHRoZSBzZXR1cCBjb3JyZWN0LgogICAgICAgICBzZWxmLl9w
cmludGVyLndyaXRlX3VwZGF0ZSgiU3RhcnRpbmcgaGVscGVyIC4uLiIpCiAgICAgICAgIGlmIG5v
dCBzZWxmLl9wb3J0LnN0YXJ0X2hlbHBlcihwaXhlbF90ZXN0cz1zZWxmLl9vcHRpb25zLnBpeGVs
X3Rlc3RzLCBwcmVmZXJfaW50ZWdyYXRlZF9ncHU9c2VsZi5fb3B0aW9ucy5wcmVmZXJfaW50ZWdy
YXRlZF9ncHUpOgogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAKLSAgICAgICAgc2VsZi5fdXBk
YXRlX3dvcmtlcl9jb3VudCh0ZXN0X25hbWVzLCBkZXZpY2VfdHlwZT1kZXZpY2VfdHlwZSkKKyAg
ICAgICAgc2VsZi5fdXBkYXRlX3dvcmtlcl9jb3VudCh0ZXN0X2lucHV0cykKICAgICAgICAgc2Vs
Zi5fcG9ydC5yZXNldF9wcmVmZXJlbmNlcygpCiAKICAgICAgICAgIyBDaGVjayB0aGF0IHRoZSBz
eXN0ZW0gZGVwZW5kZW5jaWVzICh0aGVtZXMsIGZvbnRzLCAuLi4pIGFyZSBjb3JyZWN0LgpAQCAt
MzUzLDEzICszODQsMTcgQEAgY2xhc3MgTWFuYWdlcihvYmplY3QpOgogICAgICAgICAgICAgc3Rh
cnRfdGltZV9mb3JfZGV2aWNlID0gdGltZS50aW1lKCkKICAgICAgICAgICAgIGlmIG5vdCB0ZXN0
c190b19ydW5fYnlfZGV2aWNlW2RldmljZV90eXBlXToKICAgICAgICAgICAgICAgICBjb250aW51
ZQotICAgICAgICAgICAgaWYgbm90IHNlbGYuX3NldF91cF9ydW4odGVzdHNfdG9fcnVuX2J5X2Rl
dmljZVtkZXZpY2VfdHlwZV0sIGRldmljZV90eXBlPWRldmljZV90eXBlKToKKworICAgICAgICAg
ICAgdGVzdF9pbnB1dHMgPSBbc2VsZi5fdGVzdF9pbnB1dF9mb3JfZmlsZSh0ZXN0LCBkZXZpY2Vf
dHlwZT1kZXZpY2VfdHlwZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciB0ZXN0IGlu
IHRlc3RzX3RvX3J1bl9ieV9kZXZpY2VbZGV2aWNlX3R5cGVdXQorCisgICAgICAgICAgICBpZiBu
b3Qgc2VsZi5fc2V0X3VwX3J1bih0ZXN0X2lucHV0cywgZGV2aWNlX3R5cGU9ZGV2aWNlX3R5cGUp
OgogICAgICAgICAgICAgICAgIHJldHVybiB0ZXN0X3J1bl9yZXN1bHRzLlJ1bkRldGFpbHMoZXhp
dF9jb2RlPS0xKQogCiAgICAgICAgICAgICBjb25maWd1cmF0aW9uID0gc2VsZi5fcG9ydC5jb25m
aWd1cmF0aW9uX2Zvcl91cGxvYWQoc2VsZi5fcG9ydC50YXJnZXRfaG9zdCgwKSkKICAgICAgICAg
ICAgIGlmIG5vdCBjb25maWd1cmF0aW9uLmdldCgnZmxhdm9yJywgTm9uZSk6ICAjIFRoZSAtLXJl
c3VsdC1yZXBvcnQtZmxhdm9yIGFyZ3VtZW50IHNob3VsZCBvdmVycmlkZSB3azEvd2syCiAgICAg
ICAgICAgICAgICAgY29uZmlndXJhdGlvblsnZmxhdm9yJ10gPSAnd2syJyBpZiBzZWxmLl9vcHRp
b25zLndlYmtpdF90ZXN0X3J1bm5lciBlbHNlICd3azEnCi0gICAgICAgICAgICB0ZW1wX2luaXRp
YWxfcmVzdWx0cywgdGVtcF9yZXRyeV9yZXN1bHRzLCB0ZW1wX2VuYWJsZWRfcGl4ZWxfdGVzdHNf
aW5fcmV0cnkgPSBzZWxmLl9ydW5fdGVzdF9zdWJzZXQodGVzdHNfdG9fcnVuX2J5X2RldmljZVtk
ZXZpY2VfdHlwZV0sIGRldmljZV90eXBlPWRldmljZV90eXBlKQorICAgICAgICAgICAgdGVtcF9p
bml0aWFsX3Jlc3VsdHMsIHRlbXBfcmV0cnlfcmVzdWx0cywgdGVtcF9lbmFibGVkX3BpeGVsX3Rl
c3RzX2luX3JldHJ5ID0gc2VsZi5fcnVuX3Rlc3Rfc3Vic2V0KHRlc3RfaW5wdXRzLCBkZXZpY2Vf
dHlwZT1kZXZpY2VfdHlwZSkKIAogICAgICAgICAgICAgc2tpcHBlZF9yZXN1bHRzID0gVGVzdFJ1
blJlc3VsdHMoc2VsZi5fZXhwZWN0YXRpb25zW2RldmljZV90eXBlXSwgbGVuKGFnZ3JlZ2F0ZV90
ZXN0c190b19za2lwKSkKICAgICAgICAgICAgIGZvciBza2lwcGVkX3Rlc3QgaW4gc2V0KGFnZ3Jl
Z2F0ZV90ZXN0c190b19za2lwKToKQEAgLTQyOCwyMyArNDYzLDMxIEBAIGNsYXNzIE1hbmFnZXIo
b2JqZWN0KToKICAgICAgICAgcmV0dXJuIHJlc3VsdAogCiAgICAgZGVmIF9ydW5fdGVzdF9zdWJz
ZXQoc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0c190b19ydW4sICAjIHR5cGU6
IExpc3RbVGVzdF0KKyAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2lucHV0cywgICMgdHlw
ZTogTGlzdFtUZXN0SW5wdXRdCiAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlX3R5cGUs
ICAjIHR5cGU6IE9wdGlvbmFsW0RldmljZVR5cGVdCiAgICAgICAgICAgICAgICAgICAgICAgICAg
KToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZW5hYmxlZF9waXhlbF90ZXN0c19pbl9yZXRy
eSA9IEZhbHNlCi0gICAgICAgICAgICBpbml0aWFsX3Jlc3VsdHMgPSBzZWxmLl9ydW5fdGVzdHMo
dGVzdHNfdG9fcnVuLCBzZWxmLl9vcHRpb25zLnJlcGVhdF9lYWNoLCBzZWxmLl9vcHRpb25zLml0
ZXJhdGlvbnMsIGludChzZWxmLl9vcHRpb25zLmNoaWxkX3Byb2Nlc3NlcyksIHJldHJ5aW5nPUZh
bHNlLCBkZXZpY2VfdHlwZT1kZXZpY2VfdHlwZSkKKyAgICAgICAgICAgIGluaXRpYWxfcmVzdWx0
cyA9IHNlbGYuX3J1bl90ZXN0cyh0ZXN0X2lucHV0cywgc2VsZi5fb3B0aW9ucy5yZXBlYXRfZWFj
aCwgc2VsZi5fb3B0aW9ucy5pdGVyYXRpb25zLCBpbnQoc2VsZi5fb3B0aW9ucy5jaGlsZF9wcm9j
ZXNzZXMpLCByZXRyeWluZz1GYWxzZSwgZGV2aWNlX3R5cGU9ZGV2aWNlX3R5cGUpCiAKICAgICAg
ICAgICAgIHRlc3RzX3RvX3JldHJ5ID0gc2VsZi5fdGVzdHNfdG9fcmV0cnkoaW5pdGlhbF9yZXN1
bHRzLCBpbmNsdWRlX2NyYXNoZXM9c2VsZi5fcG9ydC5zaG91bGRfcmV0cnlfY3Jhc2hlcygpKQog
ICAgICAgICAgICAgIyBEb24ndCByZXRyeSBmYWlsdXJlcyB3aGVuIGludGVycnVwdGVkIGJ5IHVz
ZXIgb3IgZmFpbHVyZXMgbGltaXQgZXhjZXB0aW9uLgogICAgICAgICAgICAgcmV0cnlfZmFpbHVy
ZXMgPSBzZWxmLl9vcHRpb25zLnJldHJ5X2ZhaWx1cmVzIGFuZCBub3QgKGluaXRpYWxfcmVzdWx0
cy5pbnRlcnJ1cHRlZCBvciBpbml0aWFsX3Jlc3VsdHMua2V5Ym9hcmRfaW50ZXJydXB0ZWQpCiAg
ICAgICAgICAgICBpZiByZXRyeV9mYWlsdXJlcyBhbmQgdGVzdHNfdG9fcmV0cnk6CiAgICAgICAg
ICAgICAgICAgZW5hYmxlZF9waXhlbF90ZXN0c19pbl9yZXRyeSA9IHNlbGYuX2ZvcmNlX3BpeGVs
X3Rlc3RzX2lmX25lZWRlZCgpCisgICAgICAgICAgICAgICAgaWYgZW5hYmxlZF9waXhlbF90ZXN0
c19pbl9yZXRyeToKKyAgICAgICAgICAgICAgICAgICAgcmV0cnlfdGVzdF9pbnB1dHMgPSBbc2Vs
Zi5fdGVzdF9pbnB1dF9mb3JfZmlsZSh0ZXN0X2lucHV0LnRlc3QsIGRldmljZV90eXBlPWRldmlj
ZV90eXBlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGVz
dF9pbnB1dCBpbiB0ZXN0X2lucHV0cworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiB0ZXN0X2lucHV0LnRlc3QudGVzdF9wYXRoIGluIHRlc3RzX3RvX3JldHJ5XQor
ICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJldHJ5X3Rlc3RfaW5w
dXRzID0gW3Rlc3RfaW5wdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZm9yIHRlc3RfaW5wdXQgaW4gdGVzdF9pbnB1dHMKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgdGVzdF9pbnB1dC50ZXN0LnRlc3RfcGF0aCBpbiB0ZXN0c190
b19yZXRyeV0KIAogICAgICAgICAgICAgICAgIF9sb2cuaW5mbygnJykKICAgICAgICAgICAgICAg
ICBfbG9nLmluZm8oIlJldHJ5aW5nICVzIC4uLiIgJSBwbHVyYWxpemUobGVuKHRlc3RzX3RvX3Jl
dHJ5KSwgInVuZXhwZWN0ZWQgZmFpbHVyZSIpKQogICAgICAgICAgICAgICAgIF9sb2cuaW5mbygn
JykKLSAgICAgICAgICAgICAgICByZXRyeV9yZXN1bHRzID0gc2VsZi5fcnVuX3Rlc3RzKFt0ZXN0
IGZvciB0ZXN0IGluIHRlc3RzX3RvX3J1biBpZiB0ZXN0LnRlc3RfcGF0aCBpbiB0ZXN0c190b19y
ZXRyeV0sCisgICAgICAgICAgICAgICAgcmV0cnlfcmVzdWx0cyA9IHNlbGYuX3J1bl90ZXN0cyhy
ZXRyeV90ZXN0X2lucHV0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlcGVhdF9lYWNoPTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpdGVyYXRpb25zPTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBudW1fd29ya2Vycz0xLApAQCAtNDk0LDE3ICs1MzcsMTcg
QEAgY2xhc3MgTWFuYWdlcihvYmplY3QpOgogICAgICAgICByZXR1cm4gdGVzdF9ydW5fcmVzdWx0
cy5SdW5EZXRhaWxzKGV4aXRfY29kZSwgc3VtbWFyaXplZF9yZXN1bHRzLCBpbml0aWFsX3Jlc3Vs
dHMsIHJldHJ5X3Jlc3VsdHMsIGVuYWJsZWRfcGl4ZWxfdGVzdHNfaW5fcmV0cnkpCiAKICAgICBk
ZWYgX3J1bl90ZXN0cyhzZWxmLAotICAgICAgICAgICAgICAgICAgIHRlc3RzX3RvX3J1biwgICMg
dHlwZTogTGlzdFtUZXN0XQorICAgICAgICAgICAgICAgICAgIHRlc3RfaW5wdXRzLCAgIyB0eXBl
OiBMaXN0W1Rlc3RJbnB1dF0KICAgICAgICAgICAgICAgICAgICByZXBlYXRfZWFjaCwgICMgdHlw
ZTogaW50CiAgICAgICAgICAgICAgICAgICAgaXRlcmF0aW9ucywgICMgdHlwZTogaW50CiAgICAg
ICAgICAgICAgICAgICAgbnVtX3dvcmtlcnMsICAjIHR5cGU6IGludAogICAgICAgICAgICAgICAg
ICAgIHJldHJ5aW5nLCAgIyB0eXBlOiBib29sCiAgICAgICAgICAgICAgICAgICAgZGV2aWNlX3R5
cGUsICAjIHR5cGU6IE9wdGlvbmFsW0RldmljZVR5cGVdCiAgICAgICAgICAgICAgICAgICAgKToK
LSAgICAgICAgdGVzdF9pbnB1dHMgPSBzZWxmLl9nZXRfdGVzdF9pbnB1dHModGVzdHNfdG9fcnVu
LCByZXBlYXRfZWFjaCwgaXRlcmF0aW9ucywgZGV2aWNlX3R5cGU9ZGV2aWNlX3R5cGUpCisgICAg
ICAgIG5ld190ZXN0X2lucHV0cyA9IHNlbGYuX211bHRpcGx5X3Rlc3RfaW5wdXRzKHRlc3RfaW5w
dXRzLCByZXBlYXRfZWFjaCwgaXRlcmF0aW9ucykKIAogICAgICAgICBhc3NlcnQgc2VsZi5fcnVu
bmVyIGlzIG5vdCBOb25lCi0gICAgICAgIHJldHVybiBzZWxmLl9ydW5uZXIucnVuX3Rlc3RzKHNl
bGYuX2V4cGVjdGF0aW9uc1tkZXZpY2VfdHlwZV0sIHRlc3RfaW5wdXRzLCBudW1fd29ya2Vycywg
cmV0cnlpbmcsIGRldmljZV90eXBlKQorICAgICAgICByZXR1cm4gc2VsZi5fcnVubmVyLnJ1bl90
ZXN0cyhzZWxmLl9leHBlY3RhdGlvbnNbZGV2aWNlX3R5cGVdLCBuZXdfdGVzdF9pbnB1dHMsIG51
bV93b3JrZXJzLCByZXRyeWluZywgZGV2aWNlX3R5cGUpCiAKICAgICBkZWYgX2NsZWFuX3VwX3J1
bihzZWxmKToKICAgICAgICAgX2xvZy5kZWJ1ZygiRmx1c2hpbmcgc3Rkb3V0IikKZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0LnB5IGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3QucHkKaW5kZXgg
YmQ1ODYxNmRlMDc3NGUxOWY0NTVhYzU1OTlhY2ZiNjU3YjRlYWZhZS4uMDczZjA0YTM2YTBmNTE1
MTk1NjVjMWZiMTQ1MDBkYzYwYTEwNGQzZSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3QucHkKQEAgLTMwLDcgKzMwLDcgQEAKIGltcG9y
dCBhdHRyCiAKIAotQGF0dHIucyhmcm96ZW49VHJ1ZSkKK0BhdHRyLnMoZnJvemVuPVRydWUsIHNs
b3RzPVRydWUpCiBjbGFzcyBUZXN0KG9iamVjdCk6CiAgICAgIiIiRGF0YSBhYm91dCBhIHRlc3Qg
YW5kIGl0cyBleHBlY3RhdGlvbnMuCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X2lucHV0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfaW5wdXQucHkKaW5kZXggM2RiYzVjY2YwNDIw
MTQyNzk1MDkzYTk5MDA0M2EzZDg3NDA4NDRkYS4uYzk5M2EwMzcyM2QwZjUzMmVkZWJiOWQwZGMx
OWZlMTliZDlmOTQ2ZSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvbW9kZWxzL3Rlc3RfaW5wdXQucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfaW5wdXQucHkKQEAgLTEsNSArMSw2IEBACiAjIENvcHly
aWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIyBDb3B5cmln
aHQgKEMpIDIwMTAgR2Fib3IgUmFwY3NhbnlpIChyZ2Fib3JAaW5mLnUtc3plZ2VkLmh1KSwgVW5p
dmVyc2l0eSBvZiBTemVnZWQKKyMgQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTI4LDMz
ICsyOSwyNSBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiAKK2ltcG9ydCBhdHRyCisKIGZyb20gLnRlc3Qg
aW1wb3J0IFRlc3QKIAorCitAYXR0ci5zKGZyb3plbj1UcnVlLCBzbG90cz1UcnVlKQogY2xhc3Mg
VGVzdElucHV0KG9iamVjdCk6CiAgICAgIiIiSW5mb3JtYXRpb24gYWJvdXQgYSB0ZXN0IG5lZWRl
ZCB0byBydW4gaXQuCiAKICAgICBUaGlzIGRpZmZlcnMgZnJvbSBhIFRlc3Qgb2JqZWN0IGluc29m
YXIgYXMgaXQgY29udGFpbnMgbWV0YWRhdGEgbm90IHNwZWNpZmljIHRvIHRoZSB0ZXN0LAogICAg
IGRlcml2ZWQgZnJvbSBUZXN0RXhwZWN0YXRpb25zL3Rlc3QgZXhlY3V0aW9uIG9wdGlvbnMgKGUu
Zy4sIHRpbWVvdXQpLgogICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsCi0gICAgICAg
ICAgICAgICAgIHRlc3QsICAjIHR5cGU6IFRlc3QKLSAgICAgICAgICAgICAgICAgdGltZW91dD1O
b25lLCAgIyB0eXBlOiBVbmlvbltOb25lLCBpbnQsIHN0cl0KLSAgICAgICAgICAgICAgICAgbmVl
ZHNfc2VydmVycz1Ob25lLCAgIyB0eXBlOiBPcHRpb25hbFtib29sXQotICAgICAgICAgICAgICAg
ICBzaG91bGRfZHVtcF9qc2NvbnNvbGVsb2dfaW5fc3RkZXJyPU5vbmUsICAjIHR5cGU6IE9wdGlv
bmFsW2Jvb2xdCi0gICAgICAgICAgICAgICAgICk6Ci0gICAgICAgICMgVGVzdElucHV0IG9iamVj
dHMgYXJlIG5vcm1hbGx5IGNvbnN0cnVjdGVkIGJ5IHRoZSBtYW5hZ2VyIGFuZCBwYXNzZWQKLSAg
ICAgICAgIyB0byB0aGUgd29ya2VycywgYnV0IHRoZXNlIHNvbWUgZmllbGRzIGFyZSBzZXQgbGF6
aWx5IGluIHRoZSB3b3JrZXJzIHdoZXJlIHBvc3NpYmxlCi0gICAgICAgICMgYmVjYXVzZSB0aGV5
IHJlcXVpcmUgdXMgdG8gbG9vayBhdCB0aGUgZmlsZXN5c3RlbSBhbmQgd2Ugd2FudCB0byBiZSBh
YmxlIHRvIGRvIHRoYXQgaW4gcGFyYWxsZWwuCi0gICAgICAgIHNlbGYudGVzdCA9IHRlc3QKLSAg
ICAgICAgc2VsZi50aW1lb3V0ID0gdGltZW91dCAgIyBpbiBtc2Vjczsgc2hvdWxkIHJlbmFtZSB0
aGlzIGZvciBjb25zaXN0ZW5jeQotICAgICAgICBzZWxmLm5lZWRzX3NlcnZlcnMgPSBuZWVkc19z
ZXJ2ZXJzCi0gICAgICAgIHNlbGYuc2hvdWxkX2R1bXBfanNjb25zb2xlbG9nX2luX3N0ZGVyciA9
IHNob3VsZF9kdW1wX2pzY29uc29sZWxvZ19pbl9zdGRlcnIKLSAgICAgICAgc2VsZi5yZWZlcmVu
Y2VfZmlsZXMgPSBOb25lCisgICAgdGVzdCA9IGF0dHIuaWIodHlwZT1UZXN0KQorICAgIHRpbWVv
dXQgPSBhdHRyLmliKGRlZmF1bHQ9Tm9uZSkgICMgdHlwZTogVW5pb25bTm9uZSwgaW50LCBzdHJd
CisgICAgbmVlZHNfc2VydmVycyA9IGF0dHIuaWIoZGVmYXVsdD1Ob25lKSAgIyB0eXBlOiBPcHRp
b25hbFtib29sXQorICAgIHNob3VsZF9kdW1wX2pzY29uc29sZWxvZ19pbl9zdGRlcnIgPSBhdHRy
LmliKGRlZmF1bHQ9Tm9uZSkgICMgdHlwZTogT3B0aW9uYWxbYm9vbF0KKyAgICByZWZlcmVuY2Vf
ZmlsZXMgPSBhdHRyLmliKGRlZmF1bHQ9Tm9uZSkgICMgdHlwZTogT3B0aW9uYWxbTGlzdFtUdXBs
ZVtzdHIgc3RyXV1dCisgICAgc2hvdWxkX3J1bl9waXhlbF90ZXN0ID0gYXR0ci5pYihkZWZhdWx0
PU5vbmUpICAjIHR5cGU6IE9wdGlvbmFsW2Jvb2xdCiAKICAgICBAcHJvcGVydHkKICAgICBkZWYg
dGVzdF9uYW1lKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi50ZXN0LnRlc3RfcGF0aAotCi0g
ICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gIlRlc3RJbnB1dCgnJXMnLCB0
aW1lb3V0PSVzLCBuZWVkc19zZXJ2ZXJzPSVzLCByZWZlcmVuY2VfZmlsZXM9JXMsIHNob3VsZF9k
dW1wX2pzY29uc29sZWxvZ19pbl9zdGRlcnI9JXMpIiAlIChzZWxmLnRlc3RfbmFtZSwgc2VsZi50
aW1lb3V0LCBzZWxmLm5lZWRzX3NlcnZlcnMsIHNlbGYucmVmZXJlbmNlX2ZpbGVzLCBzZWxmLnNo
b3VsZF9kdW1wX2pzY29uc29sZWxvZ19pbl9zdGRlcnIpCmRpZmYgLS1naXQgYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9i
YXNlLnB5CmluZGV4IGQzYmMxOTJjMTU0MGU3YTQxMzBmYmU1N2FkZDQzNmRmMTU2MDA3MDguLjI0
NGFkZmUwMTkzYzRiZTVjZWM0MmEzYzdmMWZhZWFjMmNmM2YyYjMgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvcG9ydC9iYXNlLnB5CkBAIC0xMzU4LDE4ICsxMzU4LDYgQEAgY2xhc3MgUG9ydChvYmplY3Qp
OgogICAgIGRlZiBzYW1wbGVfcHJvY2VzcyhzZWxmLCBuYW1lLCBwaWQsIHRhcmdldF9ob3N0PU5v
bmUpOgogICAgICAgICBwYXNzCiAKLSAgICBkZWYgc2hvdWxkX3J1bl9hc19waXhlbF90ZXN0KHNl
bGYsIHRlc3RfaW5wdXQpOgotICAgICAgICBpZiBub3Qgc2VsZi5fb3B0aW9ucy5waXhlbF90ZXN0
czoKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnBp
eGVsX3Rlc3RfZGlyZWN0b3JpZXM6Ci0gICAgICAgICAgICByZXR1cm4gYW55KHRlc3RfaW5wdXQu
dGVzdF9uYW1lLnN0YXJ0c3dpdGgoZGlyZWN0b3J5KSBmb3IgZGlyZWN0b3J5IGluIHNlbGYuX29w
dGlvbnMucGl4ZWxfdGVzdF9kaXJlY3RvcmllcykKLSAgICAgICAgcmV0dXJuIHNlbGYuX3Nob3Vs
ZF9ydW5fYXNfcGl4ZWxfdGVzdCh0ZXN0X2lucHV0KQotCi0gICAgZGVmIF9zaG91bGRfcnVuX2Fz
X3BpeGVsX3Rlc3Qoc2VsZiwgdGVzdF9pbnB1dCk6Ci0gICAgICAgICMgRGVmYXVsdCBiZWhhdmlv
ciBpcyB0byBhbGxvdyBhbGwgdGVzdCB0byBydW4gYXMgcGl4ZWwgdGVzdHMgaWYgLS1waXhlbC10
ZXN0cyBpcyBvbiBhbmQKLSAgICAgICAgIyAtLXBpeGVsLXRlc3QtZGlyZWN0b3J5IGlzIG5vdCBz
cGVjaWZpZWQuCi0gICAgICAgIHJldHVybiBUcnVlCi0KICAgICBkZWYgX2luX2ZsYXRwYWtfc2Fu
ZGJveChzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGVzeXN0ZW0uZXhpc3RzKCIvLmZs
YXRwYWstaW5mbyIpCiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>