<?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>181589</bug_id>
          
          <creation_ts>2018-01-12 06:11:47 -0800</creation_ts>
          <short_desc>[GTK][WPE] Add support for unit test expectations</short_desc>
          <delta_ts>2018-01-15 00:19:54 -0800</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>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk, InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bugs-noreply</cc>
    
    <cc>clopez</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>lforschler</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1388781</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-01-12 06:11:47 -0800</bug_when>
    <thetext>We currently have a way to skip tests by annotating them in the api test runner script. The main problem of this approach is that we skip test when they fail in the bots and we never notice if they stop failing, keeping the tests skipped forever. This is indeed the case of several WebKit2 C API tests. Annotating skipped tests in the script itself is not a good idea either.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1388782</commentid>
    <comment_count>1</comment_count>
      <attachid>331195</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-01-12 06:20:50 -0800</bug_when>
    <thetext>Created attachment 331195
Patch

This will also allow us to handle flaky tests, by re-running the unexpected failures.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389117</commentid>
    <comment_count>2</comment_count>
      <attachid>331195</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-01-13 09:23:33 -0800</bug_when>
    <thetext>Comment on attachment 331195
Patch

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

I haven&apos;t looked in detail at the python code, but it looks sane. Bonus points for including unit tests.

I don&apos;t really like json, but this is clearly superior to what we had before. Thanks.

The next step would be to update the expectations for WPE, since the WPE API tests are in real bad shape.

I would name the file TestExpectations.json, instead of expectations.json, since it will be more familiar to WebKit developers. The purpose of the file should then be immediately obvious.

&gt; Tools/ChangeLog:10
&gt; +        We currently have a way to skip tests by annotating them in the api test runner script. The main problem of this
&gt; +        approach is that we skip test when they fail in the bots and we never notice if they stop failing, keeping the
&gt; +        tests skipped forever. This is indeed the case of several WebKit2 C API tests. Annotating skipped tests in the

I think it&apos;s understood that skipped tests are broken and need to be fixed. We just need to actually start fixing them instead of ignoring them....

&gt; Tools/Scripts/webkitpy/common/test_expectations_unittest.py:33
&gt; +class MockTestExpectations(TestExpectations):

Are these tests run automatically, as part of testwebkitpy? If not, please find a way to make sure they are. Nobody (except maybe you) is ever going to run this manually: having tests is not worthwhile unless they&apos;re running on the bots.

IMO it&apos;s fine to run this test on all platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389197</commentid>
    <comment_count>3</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-01-14 00:48:06 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #2)
&gt; Comment on attachment 331195 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=331195&amp;action=review
&gt; 
&gt; I haven&apos;t looked in detail at the python code, but it looks sane. Bonus
&gt; points for including unit tests.
&gt; 
&gt; I don&apos;t really like json, but this is clearly superior to what we had
&gt; before. Thanks.
&gt; 
&gt; The next step would be to update the expectations for WPE, since the WPE API
&gt; tests are in real bad shape.

Yes, that&apos;s my idea.

&gt; I would name the file TestExpectations.json, instead of expectations.json,
&gt; since it will be more familiar to WebKit developers. The purpose of the file
&gt; should then be immediately obvious.

Ok.

&gt; &gt; Tools/ChangeLog:10
&gt; &gt; +        We currently have a way to skip tests by annotating them in the api test runner script. The main problem of this
&gt; &gt; +        approach is that we skip test when they fail in the bots and we never notice if they stop failing, keeping the
&gt; &gt; +        tests skipped forever. This is indeed the case of several WebKit2 C API tests. Annotating skipped tests in the
&gt; 
&gt; I think it&apos;s understood that skipped tests are broken and need to be fixed.
&gt; We just need to actually start fixing them instead of ignoring them....

That&apos;s not how things work unfortunately. Very often we skip unit tests that stop passing for a unknown reason only to keep the bots green, sometimes it even only fails on the bots and work locally. Then, the test suddenly start passing again for another unknown reason, but since it&apos;s skipped we never notice it. It has happened so many times, all WebKit2 C API tests currently skipped pass for me locally, and I bet they also pass in the bots, we&apos;ll see when this patch lands.

&gt; &gt; Tools/Scripts/webkitpy/common/test_expectations_unittest.py:33
&gt; &gt; +class MockTestExpectations(TestExpectations):
&gt; 
&gt; Are these tests run automatically, as part of testwebkitpy? If not, please
&gt; find a way to make sure they are. Nobody (except maybe you) is ever going to
&gt; run this manually: having tests is not worthwhile unless they&apos;re running on
&gt; the bots.
&gt; 
&gt; IMO it&apos;s fine to run this test on all platforms.

Yes, they are run automatically for all platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389242</commentid>
    <comment_count>4</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-01-15 00:17:55 -0800</bug_when>
    <thetext>Committed r226944: &lt;https://trac.webkit.org/changeset/226944&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389243</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-01-15 00:19:54 -0800</bug_when>
    <thetext>&lt;rdar://problem/36514890&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>331195</attachid>
            <date>2018-01-12 06:20:50 -0800</date>
            <delta_ts>2018-01-13 09:23:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wk-api-tests-expectations.diff</filename>
            <type>text/plain</type>
            <size>36195</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBjYzUy
Y2EzZTMwMS4uYWUzOTZkYzMxMDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1OCBAQAorMjAxOC0wMS0xMiAgQ2FybG9zIEdhcmNp
YSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bV1BFXSBBZGQg
c3VwcG9ydCBmb3IgdW5pdCB0ZXN0IGV4cGVjdGF0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgxNTg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgY3VycmVudGx5IGhhdmUgYSB3YXkgdG8gc2tp
cCB0ZXN0cyBieSBhbm5vdGF0aW5nIHRoZW0gaW4gdGhlIGFwaSB0ZXN0IHJ1bm5lciBzY3JpcHQu
IFRoZSBtYWluIHByb2JsZW0gb2YgdGhpcworICAgICAgICBhcHByb2FjaCBpcyB0aGF0IHdlIHNr
aXAgdGVzdCB3aGVuIHRoZXkgZmFpbCBpbiB0aGUgYm90cyBhbmQgd2UgbmV2ZXIgbm90aWNlIGlm
IHRoZXkgc3RvcCBmYWlsaW5nLCBrZWVwaW5nIHRoZQorICAgICAgICB0ZXN0cyBza2lwcGVkIGZv
cmV2ZXIuIFRoaXMgaXMgaW5kZWVkIHRoZSBjYXNlIG9mIHNldmVyYWwgV2ViS2l0MiBDIEFQSSB0
ZXN0cy4gQW5ub3RhdGluZyBza2lwcGVkIHRlc3RzIGluIHRoZQorICAgICAgICBzY3JpcHQgaXRz
ZWxmIGlzIG5vdCBhIGdvb2QgaWRlYSBlaXRoZXIuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRz
IGEgZ2VuZXJpYyBUZXN0RXhwZWN0YXRpb25zIGNsYXNzIGZvciBzaW1wbGUgdGVzdHMgYmFzZWQg
b24gdGVzdHMgd2l0aCBzdWJ0ZXN0cywgbGlrZSBvdXIgdW5pdAorICAgICAgICB0ZXN0cywgYnV0
IGFsc28gV2ViRHJpdmVyIHRlc3RzLiBJdCBwYXJzZXMgYSBqc29uIGZpbGUgd2l0aCB0aGUgdGVz
dHMgYW5kIHN1YnRlc3RzIGV4cGVjdGF0aW9ucyBhbmQgcHJvdmlkZXMKKyAgICAgICAgY29udmVu
aWVudCBtZXRob2RzIHRvIHF1ZXJ5IHRoZW0uCisKKyAgICAgICAgKiBTY3JpcHRzL3J1bi1ndGst
dGVzdHM6CisgICAgICAgIChHdGtUZXN0UnVubmVyKTogUmVtb3ZlIGFsbCBTa2lwcGVkIGFuZCBT
bG93IHRlc3RzIG1hcmtlZCBoZXJlLgorICAgICAgICAqIFNjcmlwdHMvcnVuLXdwZS10ZXN0czoK
KyAgICAgICAgKFdQRVRlc3RSdW5uZXIpOiBEaXR0by4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L2NvbW1vbi90ZXN0X2V4cGVjdGF0aW9ucy5weTogQWRkZWQuCisgICAgICAgIChUZXN0RXhw
ZWN0YXRpb25zKToKKyAgICAgICAgKFRlc3RFeHBlY3RhdGlvbnMuX19pbml0X18pOgorICAgICAg
ICAoVGVzdEV4cGVjdGF0aW9ucy5fcG9ydF9uYW1lX2Zvcl9leHBlY3RlZCk6CisgICAgICAgIChU
ZXN0RXhwZWN0YXRpb25zLl9leHBlY3RlZF92YWx1ZSk6CisgICAgICAgIChUZXN0RXhwZWN0YXRp
b25zLnNraXBwZWRfdGVzdHMpOgorICAgICAgICAoVGVzdEV4cGVjdGF0aW9ucy5za2lwcGVkX3N1
YnRlc3RzKToKKyAgICAgICAgKFRlc3RFeHBlY3RhdGlvbnMuX2V4cGVjdGF0aW9uX3ZhbHVlKToK
KyAgICAgICAgKFRlc3RFeHBlY3RhdGlvbnMuaXNfc2xvdyk6CisgICAgICAgIChUZXN0RXhwZWN0
YXRpb25zLmdldF9leHBlY3RhdGlvbik6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21t
b24vdGVzdF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHk6IEFkZGVkLgorICAgICAgICAoTW9ja1Rl
c3RFeHBlY3RhdGlvbnMpOgorICAgICAgICAoTW9ja1Rlc3RFeHBlY3RhdGlvbnMuX19pbml0X18p
OgorICAgICAgICAoTW9ja1Rlc3RFeHBlY3RhdGlvbnMuaXNfc2tpcCk6CisgICAgICAgIChFeHBl
Y3RhdGlvbnNUZXN0KToKKyAgICAgICAgKGFzc2VydF9leHApOgorICAgICAgICAoYXNzZXJ0X25v
dF9leHApOgorICAgICAgICAoYXNzZXJ0X2JhZF9leHApOgorICAgICAgICAoYXNzZXJ0X3NraXAp
OgorICAgICAgICAodGVzdF9iYXNpYyk6CisgICAgICAgICh0ZXN0X3NraXApOgorICAgICAgICAo
dGVzdF9mbGFreSk6CisgICAgICAgICh0ZXN0X2J1aWxkX3R5cGUpOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvZ2xpYi9leHBlY3RhdGlvbnMuanNvbjogQWRkZWQuCisgICAgICAgICogZ2xpYi9h
cGlfdGVzdF9ydW5uZXIucHk6CisgICAgICAgIChUZXN0UnVubmVyKTogUmVtb3ZlIFNraXBwZWRU
ZXN0IGltcGxlbWVudGF0aW9uLgorICAgICAgICAoVGVzdFJ1bm5lci5fX2luaXRfXyk6IENyZWF0
ZSBhIFRlc3RFeHBlY3RhdGlvbnMuCisgICAgICAgIChUZXN0UnVubmVyLl90ZXN0X2Nhc2VzX3Rv
X3NraXApOiBVc2UgVGVzdEV4cGVjdGF0aW9ucyB0byBjaGVjayBza2lwcGVkIHRlc3RzLgorICAg
ICAgICAoVGVzdFJ1bm5lci5fc2hvdWxkX3J1bl90ZXN0X3Byb2dyYW0pOiBEaXR0by4KKyAgICAg
ICAgKFRlc3RSdW5uZXIuX3J1bl90ZXN0X2dsaWIpOiBVc2UgVGVzdEV4cGVjdGF0aW9ucyB0byBj
aGVjayBpZiB0ZXN0IHN1aXRlIGlzIHNsb3cuCisgICAgICAgIChUZXN0UnVubmVyLl9ydW5fdGVz
dF9nbGliLnBhcnNlX2xpbmUuc2V0X3Rlc3RfcmVzdWx0KTogUmVnaXN0ZXIgYWxzbyB0ZXN0cyBw
YXNzaW5nLgorICAgICAgICAoVGVzdFJ1bm5lci5fcnVuX2dvb2dsZV90ZXN0KTogVXNlIFRlc3RF
eHBlY3RhdGlvbnMgdG8gY2hlY2sgaWYgdGVzdCBjYXNlcyBpcyBzbG93IGFuZCByZWdpc3RlciB0
ZXN0cyBwYXNzaW5nLgorICAgICAgICAoVGVzdFJ1bm5lci5ydW5fdGVzdHMpOiBDaGVjayBpZiBh
Y3R1YWwgcmVzdWx0IGlzIHRoZSBleHBlY3RlZCBvbmUgYW5kIHJlZ2lzdGVyIGFsc28gdW5leHBl
Y3RlZCBwYXNzZXMuCisgICAgICAgIChUZXN0UnVubmVyLnJ1bl90ZXN0cy5yZXBvcnQpOiBIZWxw
ZXIgdG8gd3JpdGUgcmVwb3J0IHRvIHN0ZG91dC4KKwogMjAxOC0wMS0xMSAgSmlld2VuIFRhbiAg
PGppZXdlbl90YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJBdXRoTl0gSW1wb3J0IGEgQ0JP
UiBjb2RlciBmcm9tIENocm9taXVtCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3J1bi1ndGst
dGVzdHMgYi9Ub29scy9TY3JpcHRzL3J1bi1ndGstdGVzdHMKaW5kZXggOWU1ZTRiNTRmNDIuLmI1
ZDcyNzZiNWUyIDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3J1bi1ndGstdGVzdHMKKysrIGIv
VG9vbHMvU2NyaXB0cy9ydW4tZ3RrLXRlc3RzCkBAIC0yOSw0MiArMjksMTEgQEAgc3lzLnBhdGgu
aW5zZXJ0KDAsIG9zLnBhdGguam9pbih0b3BfbGV2ZWxfZGlyZWN0b3J5LCAiVG9vbHMiLCAiamhi
dWlsZCIpKQogc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguam9pbih0b3BfbGV2ZWxfZGlyZWN0
b3J5LCAiVG9vbHMiLCAiZ2xpYiIpKQogaW1wb3J0IGNvbW1vbgogaW1wb3J0IGpoYnVpbGR1dGls
cwotZnJvbSBhcGlfdGVzdF9ydW5uZXIgaW1wb3J0IFRlc3RSdW5uZXIsIFNraXBwZWRUZXN0LCBh
ZGRfb3B0aW9ucworZnJvbSBhcGlfdGVzdF9ydW5uZXIgaW1wb3J0IFRlc3RSdW5uZXIsIGFkZF9v
cHRpb25zCiAKIGNsYXNzIEd0a1Rlc3RSdW5uZXIoVGVzdFJ1bm5lcik6CiAgICAgVGVzdFJ1bm5l
ci5URVNUX0RJUlMgPSBbICJXZWJLaXQyR3RrIiwgIldlYktpdCIsICJKYXZhU2NyaXB0Q29yZSIs
ICJXVEYiLCAiV2ViQ29yZSIgXQogCi0gICAgVGVzdFJ1bm5lci5TS0lQUEVEID0gWwotICAgICAg
ICBTa2lwcGVkVGVzdCgiV2ViS2l0Mkd0ay9UZXN0VUlDbGllbnQiLCAiL3dlYmtpdDIvV2ViS2l0
V2ViVmlldy9tb3VzZS10YXJnZXQiLCAiVGVzdCB0aW1lcyBvdXQgYWZ0ZXIgcjE1MDg5MCIsIDEx
NzY4OSksCi0gICAgICAgIFNraXBwZWRUZXN0KCJXZWJLaXQyR3RrL1Rlc3RVSUNsaWVudCIsICIv
d2Via2l0Mi9XZWJLaXRXZWJWaWV3L3VzZXJtZWRpYS1wZXJtaXNzaW9uLXJlcXVlc3RzIiwgIlRl
c3QgdGltZXMgb3V0IiwgMTU4MjU3KSwKLSAgICAgICAgU2tpcHBlZFRlc3QoIldlYktpdDJHdGsv
VGVzdFVJQ2xpZW50IiwgIi93ZWJraXQyL1dlYktpdFdlYlZpZXcvYXVkaW8tdXNlcm1lZGlhLXBl
cm1pc3Npb24tcmVxdWVzdCIsICJUZXN0IHRpbWVzIG91dCIsIDE1ODI1NyksCi0gICAgICAgIFNr
aXBwZWRUZXN0KCJXZWJLaXQyR3RrL1Rlc3RDb29raWVNYW5hZ2VyIiwgIi93ZWJraXQyL1dlYktp
dENvb2tpZU1hbmFnZXIvcGVyc2lzdGVudC1zdG9yYWdlIiwgIlRlc3QgaXMgZmxha3kiLCAxMzQ1
ODApLAotICAgICAgICBTa2lwcGVkVGVzdCgiV2ViS2l0Mkd0ay9UZXN0UHJpbnRpbmciLCAiL3dl
YmtpdDIvV2ViS2l0UHJpbnRPcGVyYXRpb24vY3VzdG9tLXdpZGdldCIsICJUZXN0IGlzIGZsYWt5
IiwgMTY4MTk2KSwKLSAgICAgICAgU2tpcHBlZFRlc3QoIldlYktpdDJHdGsvVGVzdFdlYlZpZXdF
ZGl0b3IiLCAiL3dlYmtpdDIvV2ViS2l0V2ViVmlldy9lZGl0YWJsZS9lZGl0YWJsZSIsICJUZXN0
IGhpdHMgYW4gYXNzZXJ0aW9uIGluIERlYnVnIGJ1aWxkcyIsIDE1MTY1NCwgIkRlYnVnIiksCi0g
ICAgICAgIFNraXBwZWRUZXN0KCJXZWJLaXQyR3RrL1Rlc3RXZWJFeHRlbnNpb25zIiwgIi93ZWJr
aXQyL1dlYktpdFdlYlZpZXcvaW5zdGFsbC1taXNzaW5nLXBsdWdpbnMtcGVybWlzc2lvbi1yZXF1
ZXN0IiwgIlRlc3QgdGltZXMgb3V0IiwgMTQ3ODIyKSwKLSAgICAgICAgU2tpcHBlZFRlc3QoIldl
YktpdDJHdGsvVGVzdFdlYnNpdGVEYXRhIiwgIi93ZWJraXQyL1dlYktpdFdlYnNpdGVEYXRhL2Rh
dGFiYXNlcyIsICJUZXN0IGZhaWxzIHRvIGNsZWFyIGRhdGFiYXNlIGRhdGEiLCAxODEyNTEpLAot
ICAgICAgICBTa2lwcGVkVGVzdCgiV2ViS2l0L1Rlc3RXZWJLaXQiLCAiV2ViS2l0Lk1vdXNlTW92
ZUFmdGVyQ3Jhc2giLCAiVGVzdCBpcyBmbGFreSIsIDg1MDY2KSwKLSAgICAgICAgU2tpcHBlZFRl
c3QoIldlYktpdC9UZXN0V2ViS2l0IiwgIldlYktpdC5OZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlM
YXlvdXRGb3JJbWFnZXMiLCAiVGVzdCBpcyBmbGFreSIsIDg1MDY2KSwKLSAgICAgICAgU2tpcHBl
ZFRlc3QoIldlYktpdC9UZXN0V2ViS2l0IiwgIldlYktpdC5OZXdGaXJzdFZpc3VhbGx5Tm9uRW1w
dHlMYXlvdXRGcmFtZXMiLCAiVGVzdCBmYWlscyIsIDg1MDM3KSwKLSAgICAgICAgU2tpcHBlZFRl
c3QoIldlYktpdC9UZXN0V2ViS2l0IiwgIldlYktpdC5TcGFjZWJhclNjcm9sbGluZyIsICJUZXN0
IGZhaWxzIiwgODQ5NjEpLAotICAgICAgICBTa2lwcGVkVGVzdCgiV2ViS2l0L1Rlc3RXZWJLaXQi
LCAiV2ViS2l0LldLQ29ubmVjdGlvbiIsICJUZXN0cyBmYWlsIGFuZCB0aW1lIG91dCBvdXQiLCA4
NDk1OSksCi0gICAgICAgIFNraXBwZWRUZXN0KCJXZWJLaXQvVGVzdFdlYktpdCIsICJXZWJLaXQu
Rm9yY2VSZXBhaW50IiwgIlRlc3QgdGltZXMgb3V0IiwgMTA1NTMyKSwKLSAgICAgICAgU2tpcHBl
ZFRlc3QoIldlYktpdC9UZXN0V2ViS2l0IiwgIldlYktpdC5SZWxvYWRQYWdlQWZ0ZXJDcmFzaCIs
ICJUZXN0IGZsYWtpbHkgdGltZXMgb3V0IiwgMTEwMTI5KSwKLSAgICAgICAgU2tpcHBlZFRlc3Qo
IldlYktpdC9UZXN0V2ViS2l0IiwgIldlYktpdC5EaWRBc3NvY2lhdGVGb3JtQ29udHJvbHMiLCAi
VGVzdCB0aW1lcyBvdXQiLCAxMjAzMDIpLAotICAgICAgICBTa2lwcGVkVGVzdCgiV2ViS2l0L1Rl
c3RXZWJLaXQiLCAiV2ViS2l0LkluamVjdGVkQnVuZGxlRnJhbWVIaXRUZXN0IiwgIlRlc3QgdGlt
ZXMgb3V0IiwgMTIwMzAzKSwKLSAgICAgICAgU2tpcHBlZFRlc3QoIldlYktpdC9UZXN0V2ViS2l0
IiwgIldlYktpdC5UZXJtaW5hdGVUd2ljZSIsICJUZXN0IGNhdXNlcyBjcmFzaCBvbiB0aGUgbmV4
dCB0ZXN0IiwgMTIxOTcwKSwKLSAgICAgICAgU2tpcHBlZFRlc3QoIldlYktpdC9UZXN0V2ViS2l0
IiwgIldlYktpdC5HZW9sb2NhdGlvblRyYW5zaXRpb25Ub0hpZ2hBY2N1cmFjeSIsICJUZXN0IGNh
dXNlcyBjcmFzaCBvbiB0aGUgbmV4dCB0ZXN0IiwgMTI1MDY4KSwKLSAgICAgICAgU2tpcHBlZFRl
c3QoIldlYktpdC9UZXN0V2ViS2l0IiwgIldlYktpdC5HZW9sb2NhdGlvblRyYW5zaXRpb25Ub0xv
d0FjY3VyYWN5IiwgIlRlc3QgY2F1c2VzIGNyYXNoIG9uIHRoZSBuZXh0IHRlc3QiLCAxMjUwNjgp
LAotICAgIF0KLQotICAgIFRlc3RSdW5uZXIuU0xPVyA9IFsKLSAgICAgICAgIldURl9Mb2NrLkNv
bnRlbmRlZFNob3J0U2VjdGlvbiIsCi0gICAgICAgICJXVEZfTG9jay5Db250ZW5kZWRMb25nU2Vj
dGlvbiIsCi0gICAgICAgICJXVEZfV29yZExvY2suQ29udGVuZGVkU2hvcnRTZWN0aW9uIiwKLSAg
ICAgICAgIldURl9Xb3JkTG9jay5Db250ZW5kZWRMb25nU2VjdGlvbiIsCi0gICAgICAgICJXZWJL
aXQyR3RrL1Rlc3RJbnNwZWN0b3JTZXJ2ZXIiLAotICAgIF0KLQogICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBvcHRpb25zLCB0ZXN0cz1bXSk6CiAgICAgICAgIHN1cGVyKEd0a1Rlc3RSdW5uZXIsIHNl
bGYpLl9faW5pdF9fKCJndGsiLCBvcHRpb25zLCB0ZXN0cykKIApkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy9ydW4td3BlLXRlc3RzIGIvVG9vbHMvU2NyaXB0cy9ydW4td3BlLXRlc3RzCmluZGV4
IDNmNzQ1NGYyYjE1Li5kOWFhZDhiZjBkMSAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy9ydW4t
d3BlLXRlc3RzCisrKyBiL1Rvb2xzL1NjcmlwdHMvcnVuLXdwZS10ZXN0cwpAQCAtMjYsMTggKzI2
LDExIEBAIHRvcF9sZXZlbF9kaXJlY3RvcnkgPSBvcy5wYXRoLm5vcm1wYXRoKG9zLnBhdGguam9p
bihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAiCiBzeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0
aC5qb2luKHRvcF9sZXZlbF9kaXJlY3RvcnksICJUb29scyIsICJqaGJ1aWxkIikpCiBzeXMucGF0
aC5pbnNlcnQoMCwgb3MucGF0aC5qb2luKHRvcF9sZXZlbF9kaXJlY3RvcnksICJUb29scyIsICJn
bGliIikpCiBpbXBvcnQgamhidWlsZHV0aWxzCi1mcm9tIGFwaV90ZXN0X3J1bm5lciBpbXBvcnQg
VGVzdFJ1bm5lciwgU2tpcHBlZFRlc3QsIGFkZF9vcHRpb25zCitmcm9tIGFwaV90ZXN0X3J1bm5l
ciBpbXBvcnQgVGVzdFJ1bm5lciwgYWRkX29wdGlvbnMKIAogY2xhc3MgV1BFVGVzdFJ1bm5lcihU
ZXN0UnVubmVyKToKICAgICBUZXN0UnVubmVyLlRFU1RfRElSUyA9IFsgIldQRSIsICJXZWJLaXQi
LCAiSmF2YVNjcmlwdENvcmUiLCAiV1RGIiwgIldlYkNvcmUiIF0KIAotICAgIFRlc3RSdW5uZXIu
U0xPVyA9IFsKLSAgICAgICAgIldURl9Mb2NrLkNvbnRlbmRlZFNob3J0U2VjdGlvbiIsCi0gICAg
ICAgICJXVEZfTG9jay5Db250ZW5kZWRMb25nU2VjdGlvbiIsCi0gICAgICAgICJXVEZfV29yZExv
Y2suQ29udGVuZGVkU2hvcnRTZWN0aW9uIiwKLSAgICAgICAgIldURl9Xb3JkTG9jay5Db250ZW5k
ZWRMb25nU2VjdGlvbiIsCi0gICAgXQotCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG9wdGlvbnMs
IHRlc3RzPVtdKToKICAgICAgICAgc3VwZXIoV1BFVGVzdFJ1bm5lciwgc2VsZikuX19pbml0X18o
IndwZSIsIG9wdGlvbnMsIHRlc3RzKQogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2NvbW1vbi90ZXN0X2V4cGVjdGF0aW9ucy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL3Rlc3RfZXhwZWN0YXRpb25zLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwLi43Y2Q3MDMxYTU0ZAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvY29tbW9uL3Rlc3RfZXhwZWN0YXRpb25zLnB5CkBAIC0wLDAgKzEsMTE0IEBACisj
IENvcHlyaWdodCAoQykgMjAxOCBJZ2FsaWEgUy5MLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycg
QU5EIEFOWQorIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCisjIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisjIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
KyMgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisjIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTCisjIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQganNvbgoraW1wb3J0IG9zCisKKworY2xhc3MgVGVz
dEV4cGVjdGF0aW9ucyhvYmplY3QpOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBvcnRfbmFt
ZSwgZXhwZWN0YXRpb25zX2ZpbGUsIGJ1aWxkX3R5cGU9J1JlbGVhc2UnKToKKyAgICAgICAgc2Vs
Zi5fcG9ydF9uYW1lID0gcG9ydF9uYW1lCisgICAgICAgIHNlbGYuX2J1aWxkX3R5cGUgPSBidWls
ZF90eXBlCisgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKGV4cGVjdGF0aW9uc19maWxlKToKKyAg
ICAgICAgICAgIHdpdGggb3BlbihleHBlY3RhdGlvbnNfZmlsZSwgJ3InKSBhcyBmZDoKKyAgICAg
ICAgICAgICAgICBzZWxmLl9leHBlY3RhdGlvbnMgPSBqc29uLmxvYWQoZmQpCisgICAgICAgIGVs
c2U6CisgICAgICAgICAgICBzZWxmLl9leHBlY3RhdGlvbnMgPSB7fQorCisgICAgZGVmIF9wb3J0
X25hbWVfZm9yX2V4cGVjdGVkKHNlbGYsIGV4cGVjdGVkKToKKyAgICAgICAgaWYgc2VsZi5fcG9y
dF9uYW1lIGluIGV4cGVjdGVkOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3BvcnRfbmFtZQor
CisgICAgICAgIG5hbWVfd2l0aF9idWlsZCA9IHNlbGYuX3BvcnRfbmFtZSArICdAJyArIHNlbGYu
X2J1aWxkX3R5cGUKKyAgICAgICAgaWYgbmFtZV93aXRoX2J1aWxkIGluIGV4cGVjdGVkOgorICAg
ICAgICAgICAgcmV0dXJuIG5hbWVfd2l0aF9idWlsZAorCisgICAgICAgIGlmICdhbGwnIGluIGV4
cGVjdGVkOgorICAgICAgICAgICAgcmV0dXJuICdhbGwnCisKKyAgICAgICAgbmFtZV93aXRoX2J1
aWxkID0gJ2FsbEAnICsgc2VsZi5fYnVpbGRfdHlwZQorICAgICAgICBpZiBuYW1lX3dpdGhfYnVp
bGQgaW4gZXhwZWN0ZWQ6CisgICAgICAgICAgICByZXR1cm4gbmFtZV93aXRoX2J1aWxkCisKKyAg
ICAgICAgcmV0dXJuIE5vbmUKKworICAgIGRlZiBfZXhwZWN0ZWRfdmFsdWUoc2VsZiwgZXhwZWN0
ZWQsIHZhbHVlLCBkZWZhdWx0KToKKyAgICAgICAgcG9ydF9uYW1lID0gc2VsZi5fcG9ydF9uYW1l
X2Zvcl9leHBlY3RlZChleHBlY3RlZCkKKyAgICAgICAgaWYgcG9ydF9uYW1lIGlzIE5vbmU6Cisg
ICAgICAgICAgICByZXR1cm4gZGVmYXVsdAorCisgICAgICAgIHBvcnRfZXhwZWN0ZWQgPSBleHBl
Y3RlZFtwb3J0X25hbWVdCisgICAgICAgIGlmIHZhbHVlIGluIHBvcnRfZXhwZWN0ZWQ6CisgICAg
ICAgICAgICByZXR1cm4gcG9ydF9leHBlY3RlZFt2YWx1ZV0KKworICAgICAgICByZXR1cm4gZGVm
YXVsdAorCisgICAgZGVmIHNraXBwZWRfdGVzdHMoc2VsZik6CisgICAgICAgIHNraXBwZWQgPSBb
XQorICAgICAgICBmb3IgdGVzdCBpbiBzZWxmLl9leHBlY3RhdGlvbnM6CisgICAgICAgICAgICBp
ZiAnZXhwZWN0ZWQnIG5vdCBpbiBzZWxmLl9leHBlY3RhdGlvbnNbdGVzdF06CisgICAgICAgICAg
ICAgICAgY29udGludWUKKworICAgICAgICAgICAgZXhwZWN0ZWQgPSBzZWxmLl9leHBlY3RhdGlv
bnNbdGVzdF1bJ2V4cGVjdGVkJ10KKyAgICAgICAgICAgIGlmICdTS0lQJyBpbiBzZWxmLl9leHBl
Y3RlZF92YWx1ZShleHBlY3RlZCwgJ3N0YXR1cycsIFtdKToKKyAgICAgICAgICAgICAgICBza2lw
cGVkLmFwcGVuZCh0ZXN0KQorICAgICAgICByZXR1cm4gc2tpcHBlZAorCisgICAgZGVmIHNraXBw
ZWRfc3VidGVzdHMoc2VsZiwgdGVzdCk6CisgICAgICAgIHNraXBwZWQgPSBbXQorICAgICAgICBp
ZiB0ZXN0IG5vdCBpbiBzZWxmLl9leHBlY3RhdGlvbnM6CisgICAgICAgICAgICByZXR1cm4gc2tp
cHBlZAorCisgICAgICAgIHRlc3RfZXhwZWN0YXRpb24gPSBzZWxmLl9leHBlY3RhdGlvbnNbdGVz
dF0KKyAgICAgICAgaWYgJ3N1YnRlc3RzJyBub3QgaW4gdGVzdF9leHBlY3RhdGlvbjoKKyAgICAg
ICAgICAgIHJldHVybiBza2lwcGVkCisKKyAgICAgICAgc3VidGVzdHMgPSB0ZXN0X2V4cGVjdGF0
aW9uWydzdWJ0ZXN0cyddCisgICAgICAgIGZvciBzdWJ0ZXN0IGluIHN1YnRlc3RzOgorICAgICAg
ICAgICAgaWYgJ1NLSVAnIGluIHNlbGYuX2V4cGVjdGVkX3ZhbHVlKHN1YnRlc3RzW3N1YnRlc3Rd
WydleHBlY3RlZCddLCAnc3RhdHVzJywgW10pOgorICAgICAgICAgICAgICAgIHNraXBwZWQuYXBw
ZW5kKHN1YnRlc3QpCisgICAgICAgIHJldHVybiBza2lwcGVkCisKKyAgICBkZWYgX2V4cGVjdGF0
aW9uX3ZhbHVlKHNlbGYsIHRlc3QsIHN1YnRlc3QsIHZhbHVlLCBkZWZhdWx0KToKKyAgICAgICAg
cmV0dmFsID0gZGVmYXVsdAorICAgICAgICBpZiB0ZXN0IG5vdCBpbiBzZWxmLl9leHBlY3RhdGlv
bnM6CisgICAgICAgICAgICByZXR1cm4gcmV0dmFsCisKKyAgICAgICAgdGVzdF9leHBlY3RhdGlv
biA9IHNlbGYuX2V4cGVjdGF0aW9uc1t0ZXN0XQorICAgICAgICBpZiAnZXhwZWN0ZWQnIGluIHRl
c3RfZXhwZWN0YXRpb246CisgICAgICAgICAgICByZXR2YWwgPSBzZWxmLl9leHBlY3RlZF92YWx1
ZSh0ZXN0X2V4cGVjdGF0aW9uWydleHBlY3RlZCddLCB2YWx1ZSwgcmV0dmFsKQorCisgICAgICAg
IGlmIHN1YnRlc3QgaXMgTm9uZSBvciAnc3VidGVzdHMnIG5vdCBpbiB0ZXN0X2V4cGVjdGF0aW9u
OgorICAgICAgICAgICAgcmV0dXJuIHJldHZhbAorCisgICAgICAgIHN1YnRlc3RzID0gdGVzdF9l
eHBlY3RhdGlvblsnc3VidGVzdHMnXQorICAgICAgICBpZiBzdWJ0ZXN0IG5vdCBpbiBzdWJ0ZXN0
czoKKyAgICAgICAgICAgIHJldHVybiByZXR2YWwKKworICAgICAgICByZXR1cm4gc2VsZi5fZXhw
ZWN0ZWRfdmFsdWUoc3VidGVzdHNbc3VidGVzdF1bJ2V4cGVjdGVkJ10sIHZhbHVlLCByZXR2YWwp
CisKKyAgICBkZWYgaXNfc2xvdyhzZWxmLCB0ZXN0LCBzdWJ0ZXN0PU5vbmUpOgorICAgICAgICBy
ZXR1cm4gc2VsZi5fZXhwZWN0YXRpb25fdmFsdWUodGVzdCwgc3VidGVzdCwgJ3Nsb3cnLCBGYWxz
ZSkKKworICAgIGRlZiBnZXRfZXhwZWN0YXRpb24oc2VsZiwgdGVzdCwgc3VidGVzdD1Ob25lKToK
KyAgICAgICAgcmV0dXJuIHNlbGYuX2V4cGVjdGF0aW9uX3ZhbHVlKHRlc3QsIHN1YnRlc3QsICdz
dGF0dXMnLCBbJ1BBU1MnXSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29t
bW9uL3Rlc3RfZXhwZWN0YXRpb25zX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9jb21tb24vdGVzdF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAuLjJiZjgzOGQxNzQ5Ci0tLSAvZGV2L251bGwKKysrIGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vdGVzdF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHkK
QEAgLTAsMCArMSwyNTQgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSBTLkwuCisjCisj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyMgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworIyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyMgQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCB1bml0dGVzdAor
CitpbXBvcnQganNvbgoraW1wb3J0IG9zCisKK2Zyb20gd2Via2l0cHkuY29tbW9uLmhvc3RfbW9j
ayBpbXBvcnQgTW9ja0hvc3QKK2Zyb20gd2Via2l0cHkuY29tbW9uLnRlc3RfZXhwZWN0YXRpb25z
IGltcG9ydCBUZXN0RXhwZWN0YXRpb25zCitmcm9tIHdlYmtpdHB5LmNvbW1vbi53ZWJraXRfZmlu
ZGVyIGltcG9ydCBXZWJLaXRGaW5kZXIKKworCitjbGFzcyBNb2NrVGVzdEV4cGVjdGF0aW9ucyhU
ZXN0RXhwZWN0YXRpb25zKToKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0LCBleHBlY3Rh
dGlvbnMsIGJ1aWxkX3R5cGU9J1JlbGVhc2UnKToKKyAgICAgICAgaG9zdCA9IE1vY2tIb3N0KCkK
KyAgICAgICAgcG9ydCA9IGhvc3QucG9ydF9mYWN0b3J5LmdldChwb3J0KQorICAgICAgICBzZWxm
Ll9wb3J0X25hbWUgPSBwb3J0Lm5hbWUoKQorICAgICAgICBzZWxmLl9idWlsZF90eXBlID0gYnVp
bGRfdHlwZQorICAgICAgICBzZWxmLl9leHBlY3RhdGlvbnMgPSBqc29uLmxvYWRzKGV4cGVjdGF0
aW9ucykKKworICAgIGRlZiBpc19za2lwKHNlbGYsIHRlc3QsIHN1YnRlc3QpOgorICAgICAgICBp
ZiB0ZXN0IGluIHNlbGYuc2tpcHBlZF90ZXN0cygpOgorICAgICAgICAgICAgcmV0dXJuIFRydWUK
KyAgICAgICAgcmV0dXJuIHN1YnRlc3QgaW4gc2VsZi5za2lwcGVkX3N1YnRlc3RzKHRlc3QpCisK
KworY2xhc3MgRXhwZWN0YXRpb25zVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBCQVNJ
QyA9ICIiIgoreworICAgICJpbXBvcnRlZC93M2Mvd2ViZHJpdmVyL3Rlc3RzL3Rlc3QxLnB5Ijog
eworICAgICAgICAic3VidGVzdHMiOiB7CisgICAgICAgICAgICAidGVzdDFfb25lIjogeworICAg
ICAgICAgICAgICAgICJleHBlY3RlZCI6IHsiYWxsIjogeyJzdGF0dXMiOiBbIkZBSUwiXSwgImJ1
ZyI6ICIxMjM0In19CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInRlc3QxX3R3byI6IHsK
KyAgICAgICAgICAgICAgICAiZXhwZWN0ZWQiOiB7CisgICAgICAgICAgICAgICAgICAgICJhbGwi
OiB7InN0YXR1cyI6IFsiRkFJTCJdLCAiYnVnIjogIjEyMzQifSwKKyAgICAgICAgICAgICAgICAg
ICAgImd0ayI6IHsic3RhdHVzIjogWyJQQVNTIl19CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgfSwKKyAgICAiaW1wb3J0ZWQvdzNjL3dlYmRyaXZlci90
ZXN0cy90ZXN0Mi5weSI6IHsKKyAgICAgICAgImV4cGVjdGVkIjogeyJhbGwiOiB7InN0YXR1cyI6
IFsiRkFJTCJdLCAiYnVnIjogIjEyMzQifX0KKyAgICB9LAorICAgICJpbXBvcnRlZC93M2Mvd2Vi
ZHJpdmVyL3Rlc3RzL3Rlc3QzLnB5IjogeworICAgICAgICAiZXhwZWN0ZWQiOiB7ImFsbCI6IHsi
c3RhdHVzIjogWyJGQUlMIl0sICJidWciOiAiMTIzNCJ9fSwKKyAgICAgICAgInN1YnRlc3RzIjog
eworICAgICAgICAgICAgInRlc3QzX29uZSI6IHsKKyAgICAgICAgICAgICAgICAiZXhwZWN0ZWQi
OiB7ImFsbCI6IHsic3RhdHVzIjogWyJQQVNTIl19fQorICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgfQorfSIiIgorCisgICAgU0tJUCA9ICIiIgoreworICAgICJpbXBvcnRlZC93M2Mvd2Vi
ZHJpdmVyL3Rlc3RzL3Rlc3QxLnB5IjogeworICAgICAgICAiZXhwZWN0ZWQiOiB7ImFsbCI6IHsi
c3RhdHVzIjogWyJTS0lQIl0sICJidWciOiAiMTIzNCJ9fQorICAgIH0sCisgICAgImltcG9ydGVk
L3czYy93ZWJkcml2ZXIvdGVzdHMvdGVzdDIucHkiOiB7CisgICAgICAgICJleHBlY3RlZCI6IHsi
Z3RrIjogeyJzdGF0dXMiOiBbIlNLSVAiXSwgImJ1ZyI6ICIxMjM0In19CisgICAgfSwKKyAgICAi
aW1wb3J0ZWQvdzNjL3dlYmRyaXZlci90ZXN0cy90ZXN0My5weSI6IHsKKyAgICAgICAgImV4cGVj
dGVkIjogeyJhbGwiOiB7InN0YXR1cyI6IFsiU0tJUCJdLCAiYnVnIjogIjEyMzQifX0sCisgICAg
ICAgICJzdWJ0ZXN0cyI6IHsKKyAgICAgICAgICAgICJ0ZXN0M19vbmUiOiB7CisgICAgICAgICAg
ICAgICAgImV4cGVjdGVkIjogeyJhbGwiOiB7InN0YXR1cyI6IFsiRkFJTCJdLCAiYnVnIjogIjEy
MzQifX0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0sCisgICAgImltcG9ydGVkL3cz
Yy93ZWJkcml2ZXIvdGVzdHMvdGVzdDQucHkiOiB7CisgICAgICAgICJzdWJ0ZXN0cyI6IHsKKyAg
ICAgICAgICAgICJ0ZXN0NF9vbmUiOiB7CisgICAgICAgICAgICAgICAgImV4cGVjdGVkIjogeyJh
bGwiOiB7InN0YXR1cyI6IFsiU0tJUCJdLCAiYnVnIjogIjEyMzQifX0KKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgIH0KK30iIiIKKworICAgIEZMQUtZID0gIiIiCit7CisgICAgIlRlc3RD
b29raWVNYW5hZ2VyIjogeworICAgICAgICAic3VidGVzdHMiOiB7CisgICAgICAgICAgICAiL3dl
YmtpdDIvV2ViS2l0Q29va2llTWFuYWdlci9wZXJzaXN0ZW50LXN0b3JhZ2UiOiB7CisgICAgICAg
ICAgICAgICAgImV4cGVjdGVkIjogeyJndGsiOiB7InN0YXR1cyI6IFsiRkFJTCIsICJQQVNTIl0s
ICJidWciOiAiMTIzNCJ9fQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfSwKKyAgICAi
VGVzdFdlYktpdCI6IHsKKyAgICAgICAgInN1YnRlc3RzIjogeworICAgICAgICAgICAgIldlYktp
dC5Nb3VzZU1vdmVBZnRlckNyYXNoIjogeworICAgICAgICAgICAgICAgICJleHBlY3RlZCI6IHsi
YWxsIjogeyJzdGF0dXMiOiBbIkNSQVNIIiwgIlBBU1MiXSwgImJ1ZyI6ICIxMjM0In19CisgICAg
ICAgICAgICB9LAorICAgICAgICAgICAgIldlYktpdC5XS0Nvbm5lY3Rpb24iOiB7CisgICAgICAg
ICAgICAgICAgImV4cGVjdGVkIjogeyJ3cGUiOiB7InN0YXR1cyI6IFsiRkFJTCIsICJUSU1FT1VU
Il0sICJidWciOiAiMTIzNCJ9fQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfSIi
IgorCisgICAgQlVJTERfVFlQRSA9ICIiIgoreworICAgICJUZXN0Q29va2llTWFuYWdlciI6IHsK
KyAgICAgICAgInN1YnRlc3RzIjogeworICAgICAgICAgICAgIi93ZWJraXQyL1dlYktpdENvb2tp
ZU1hbmFnZXIvcGVyc2lzdGVudC1zdG9yYWdlIjogeworICAgICAgICAgICAgICAgICJleHBlY3Rl
ZCI6IHsiYWxsIjogeyJzdGF0dXMiOiBbIkZBSUwiXSwgImJ1ZyI6ICIxMjM0In19CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICB9LAorICAgICJUZXN0V2ViS2l0IjogeworICAgICAgICAi
c3VidGVzdHMiOiB7CisgICAgICAgICAgICAiV2ViS2l0Lk1vdXNlTW92ZUFmdGVyQ3Jhc2giOiB7
CisgICAgICAgICAgICAgICAgImV4cGVjdGVkIjogeyJhbGxARGVidWciOiB7InN0YXR1cyI6IFsi
Q1JBU0giXSwgImJ1ZyI6ICIxMjM0In19CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgIldl
YktpdC5XS0Nvbm5lY3Rpb24iOiB7CisgICAgICAgICAgICAgICAgImV4cGVjdGVkIjogeyJndGtA
UmVsZWFzZSI6IHsic3RhdHVzIjogWyJGQUlMIl0sICJidWciOiAiMTIzNCJ9LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiZ3RrQERlYnVnIjogeyJzdGF0dXMiOiBbIkNSQVNIIl0sICJi
dWciOiAiMTIzNCJ9fQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfSwKKyAgICAiVGVz
dFdlYkNvcmUiOiB7CisgICAgICAgICJleHBlY3RlZCI6IHsiYWxsQERlYnVnIjogeyJzdGF0dXMi
OiBbIkNSQVNIIl19fSwKKyAgICAgICAgInN1YnRlc3RzIjogeworICAgICAgICAgICAgIkNvbXBs
ZXhUZXh0Q29udHJvbGxlclRlc3QuSW5pdGlhbEFkdmFuY2VXaXRoTGVmdFJ1bkluUlRMIjogewor
ICAgICAgICAgICAgICAgICJleHBlY3RlZCI6IHsiYWxsIjogeyJzdGF0dXMiOiBbIlBBU1MiXSwg
ImJ1ZyI6ICIxMjM0In19CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgIkZpbGVNb25pdG9y
VGVzdC5EZXRlY3RDaGFuZ2UiOiB7CisgICAgICAgICAgICAgICAgImV4cGVjdGVkIjogeyJhbGxA
UmVsZWFzZSI6IHsic3RhdHVzIjogWyJGQUlMIl0sICJidWciOiAiMTIzNCJ9fQorICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgfSwKKyAgICAiVGVzdFdlYlZpZXdFZGl0b3IiOiB7CisgICAg
ICAgICJleHBlY3RlZCI6IHsiYWxsQFJlbGVhc2UiOiB7InN0YXR1cyI6IFsiU0tJUCJdfSwKKyAg
ICAgICAgICAgICAgICAgICAgICJ3cGVARGVidWciOiB7InN0YXR1cyI6IFsiU0tJUCJdfX0sCisg
ICAgICAgICJzdWJ0ZXN0cyI6IHsKKyAgICAgICAgICAgICIvd2Via2l0Mi9XZWJLaXRXZWJWaWV3
L2VkaXRhYmxlL2VkaXRhYmxlIjogeworICAgICAgICAgICAgICAgICJleHBlY3RlZCI6IHsiZ3Rr
IjogeyJzdGF0dXMiOiBbIkZBSUwiXSwgImJ1ZyI6ICIxMjM0In19CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICB9Cit9IiIiCisKKyAgICBkZWYgYXNzZXJ0X2V4cChzZWxmLCB0ZXN0LCBz
dWJ0ZXN0LCByZXN1bHQpOgorICAgICAgICBzZWxmLmFzc2VydEluKHJlc3VsdCwgc2VsZi5leHBl
Y3RhdGlvbnMuZ2V0X2V4cGVjdGF0aW9uKHRlc3QsIHN1YnRlc3QpKQorCisgICAgZGVmIGFzc2Vy
dF9ub3RfZXhwKHNlbGYsIHRlc3QsIHN1YnRlc3QsIHJlc3VsdCk6CisgICAgICAgIHNlbGYuYXNz
ZXJ0Tm90SW4ocmVzdWx0LCBzZWxmLmV4cGVjdGF0aW9ucy5nZXRfZXhwZWN0YXRpb24odGVzdCwg
c3VidGVzdCkpCisKKyAgICBkZWYgYXNzZXJ0X2JhZF9leHAoc2VsZiwgdGVzdCk6CisgICAgICAg
IHNlbGYuYXNzZXJ0UmFpc2VzKEFzc2VydGlvbkVycm9yLCBzZWxmLmV4cGVjdGF0aW9ucy5nZXRf
ZXhwZWN0YXRpb24odGVzdCkpCisKKyAgICBkZWYgYXNzZXJ0X3NraXAoc2VsZiwgdGVzdCwgc3Vi
dGVzdCwgcmVzdWx0KToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmV4cGVjdGF0aW9u
cy5pc19za2lwKHRlc3QsIHN1YnRlc3QpLCByZXN1bHQpCisKKyAgICBkZWYgdGVzdF9iYXNpYyhz
ZWxmKToKKyAgICAgICAgc2VsZi5leHBlY3RhdGlvbnMgPSBNb2NrVGVzdEV4cGVjdGF0aW9ucygn
Z3RrJywgc2VsZi5CQVNJQykKKyAgICAgICAgc2VsZi5hc3NlcnRfZXhwKCdpbXBvcnRlZC93M2Mv
d2ViZHJpdmVyL3Rlc3RzL3Rlc3Q1LnB5JywgJ3Rlc3Q1X3R3bycsICdQQVNTJykKKworICAgICAg
ICBzZWxmLmFzc2VydF9leHAoJ2ltcG9ydGVkL3czYy93ZWJkcml2ZXIvdGVzdHMvdGVzdDEucHkn
LCAndGVzdDFfZml2ZScsICdQQVNTJykKKyAgICAgICAgc2VsZi5hc3NlcnRfZXhwKCdpbXBvcnRl
ZC93M2Mvd2ViZHJpdmVyL3Rlc3RzL3Rlc3QxLnB5JywgJ3Rlc3QxX29uZScsICdGQUlMJykKKyAg
ICAgICAgc2VsZi5hc3NlcnRfZXhwKCdpbXBvcnRlZC93M2Mvd2ViZHJpdmVyL3Rlc3RzL3Rlc3Qx
LnB5JywgJ3Rlc3QxX3R3bycsICdQQVNTJykKKworICAgICAgICBzZWxmLmFzc2VydF9leHAoJ2lt
cG9ydGVkL3czYy93ZWJkcml2ZXIvdGVzdHMvdGVzdDIucHknLCAndGVzdDJfb25lJywgJ0ZBSUwn
KQorCisgICAgICAgIHNlbGYuYXNzZXJ0X2V4cCgnaW1wb3J0ZWQvdzNjL3dlYmRyaXZlci90ZXN0
cy90ZXN0My5weScsICd0ZXN0M190d28nLCAnRkFJTCcpCisgICAgICAgIHNlbGYuYXNzZXJ0X2V4
cCgnaW1wb3J0ZWQvdzNjL3dlYmRyaXZlci90ZXN0cy90ZXN0My5weScsICd0ZXN0M19vbmUnLCAn
UEFTUycpCisKKyAgICAgICAgc2VsZi5leHBlY3RhdGlvbnMgPSBNb2NrVGVzdEV4cGVjdGF0aW9u
cygnd3BlJywgc2VsZi5CQVNJQykKKyAgICAgICAgc2VsZi5hc3NlcnRfZXhwKCdpbXBvcnRlZC93
M2Mvd2ViZHJpdmVyL3Rlc3RzL3Rlc3QxLnB5JywgJ3Rlc3QxX3R3bycsICdGQUlMJykKKworICAg
IGRlZiB0ZXN0X3NraXAoc2VsZik6CisgICAgICAgIHNlbGYuZXhwZWN0YXRpb25zID0gTW9ja1Rl
c3RFeHBlY3RhdGlvbnMoJ2d0aycsIHNlbGYuU0tJUCkKKyAgICAgICAgc2VsZi5hc3NlcnRfc2tp
cCgnaW1wb3J0ZWQvdzNjL3dlYmRyaXZlci90ZXN0cy90ZXN0NS5weScsIE5vbmUsIEZhbHNlKQor
ICAgICAgICBzZWxmLmFzc2VydF9za2lwKCdpbXBvcnRlZC93M2Mvd2ViZHJpdmVyL3Rlc3RzL3Rl
c3QxLnB5JywgTm9uZSwgVHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRfc2tpcCgnaW1wb3J0ZWQv
dzNjL3dlYmRyaXZlci90ZXN0cy90ZXN0Mi5weScsIE5vbmUsIFRydWUpCisgICAgICAgIHNlbGYu
YXNzZXJ0X3NraXAoJ2ltcG9ydGVkL3czYy93ZWJkcml2ZXIvdGVzdHMvdGVzdDMucHknLCBOb25l
LCBUcnVlKQorICAgICAgICBzZWxmLmFzc2VydF9za2lwKCdpbXBvcnRlZC93M2Mvd2ViZHJpdmVy
L3Rlc3RzL3Rlc3QzLnB5JywgJ3Rlc3QzX29uZScsIFRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0
X3NraXAoJ2ltcG9ydGVkL3czYy93ZWJkcml2ZXIvdGVzdHMvdGVzdDQucHknLCBOb25lLCBGYWxz
ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRfc2tpcCgnaW1wb3J0ZWQvdzNjL3dlYmRyaXZlci90ZXN0
cy90ZXN0NC5weScsICd0ZXN0NF9vbmUnLCBUcnVlKQorICAgICAgICBzZWxmLmFzc2VydF9leHAo
J2ltcG9ydGVkL3czYy93ZWJkcml2ZXIvdGVzdHMvdGVzdDQucHknLCAndGVzdDRfb25lJywgJ1NL
SVAnKQorCisgICAgICAgIHNlbGYuZXhwZWN0YXRpb25zID0gTW9ja1Rlc3RFeHBlY3RhdGlvbnMo
J3dwZScsIHNlbGYuU0tJUCkKKyAgICAgICAgc2VsZi5hc3NlcnRfc2tpcCgnaW1wb3J0ZWQvdzNj
L3dlYmRyaXZlci90ZXN0cy90ZXN0Mi5weScsIE5vbmUsIEZhbHNlKQorCisgICAgZGVmIHRlc3Rf
Zmxha3koc2VsZik6CisgICAgICAgIHNlbGYuZXhwZWN0YXRpb25zID0gTW9ja1Rlc3RFeHBlY3Rh
dGlvbnMoJ2d0aycsIHNlbGYuRkxBS1kpCisgICAgICAgIHNlbGYuYXNzZXJ0X2V4cCgnVGVzdENv
b2tpZU1hbmFnZXInLCAnL3dlYmtpdDIvV2ViS2l0Q29va2llTWFuYWdlci9wZXJzaXN0ZW50LXN0
b3JhZ2UnLCAnUEFTUycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2V4cCgnVGVzdENvb2tpZU1hbmFn
ZXInLCAnL3dlYmtpdDIvV2ViS2l0Q29va2llTWFuYWdlci9wZXJzaXN0ZW50LXN0b3JhZ2UnLCAn
RkFJTCcpCisgICAgICAgIHNlbGYuYXNzZXJ0X2V4cCgnVGVzdFdlYktpdCcsICdXZWJLaXQuTW91
c2VNb3ZlQWZ0ZXJDcmFzaCcsICdDUkFTSCcpCisgICAgICAgIHNlbGYuYXNzZXJ0X2V4cCgnVGVz
dFdlYktpdCcsICdXZWJLaXQuTW91c2VNb3ZlQWZ0ZXJDcmFzaCcsICdQQVNTJykKKyAgICAgICAg
c2VsZi5hc3NlcnRfZXhwKCdUZXN0V2ViS2l0JywgJ1dlYktpdC5XS0Nvbm5lY3Rpb24nLCAnUEFT
UycpCisgICAgICAgIHNlbGYuYXNzZXJ0X25vdF9leHAoJ1Rlc3RXZWJLaXQnLCAnV2ViS2l0LldL
Q29ubmVjdGlvbicsICdGQUlMJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbm90X2V4cCgnVGVzdFdl
YktpdCcsICdXZWJLaXQuV0tDb25uZWN0aW9uJywgJ1RJTUVPVVQnKQorCisgICAgICAgIHNlbGYu
ZXhwZWN0YXRpb25zID0gTW9ja1Rlc3RFeHBlY3RhdGlvbnMoJ3dwZScsIHNlbGYuRkxBS1kpCisg
ICAgICAgIHNlbGYuYXNzZXJ0X2V4cCgnVGVzdENvb2tpZU1hbmFnZXInLCAnL3dlYmtpdDIvV2Vi
S2l0Q29va2llTWFuYWdlci9wZXJzaXN0ZW50LXN0b3JhZ2UnLCAnUEFTUycpCisgICAgICAgIHNl
bGYuYXNzZXJ0X25vdF9leHAoJ1Rlc3RDb29raWVNYW5hZ2VyJywgJy93ZWJraXQyL1dlYktpdENv
b2tpZU1hbmFnZXIvcGVyc2lzdGVudC1zdG9yYWdlJywgJ0ZBSUwnKQorICAgICAgICBzZWxmLmFz
c2VydF9leHAoJ1Rlc3RXZWJLaXQnLCAnV2ViS2l0Lk1vdXNlTW92ZUFmdGVyQ3Jhc2gnLCAnQ1JB
U0gnKQorICAgICAgICBzZWxmLmFzc2VydF9leHAoJ1Rlc3RXZWJLaXQnLCAnV2ViS2l0Lk1vdXNl
TW92ZUFmdGVyQ3Jhc2gnLCAnUEFTUycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2V4cCgnVGVzdFdl
YktpdCcsICdXZWJLaXQuV0tDb25uZWN0aW9uJywgJ0ZBSUwnKQorICAgICAgICBzZWxmLmFzc2Vy
dF9leHAoJ1Rlc3RXZWJLaXQnLCAnV2ViS2l0LldLQ29ubmVjdGlvbicsICdUSU1FT1VUJykKKwor
ICAgIGRlZiB0ZXN0X2J1aWxkX3R5cGUoc2VsZik6CisgICAgICAgIHNlbGYuZXhwZWN0YXRpb25z
ID0gTW9ja1Rlc3RFeHBlY3RhdGlvbnMoJ2d0aycsIHNlbGYuQlVJTERfVFlQRSwgJ0RlYnVnJykK
KyAgICAgICAgc2VsZi5hc3NlcnRfZXhwKCdUZXN0Q29va2llTWFuYWdlcicsICcvd2Via2l0Mi9X
ZWJLaXRDb29raWVNYW5hZ2VyL3BlcnNpc3RlbnQtc3RvcmFnZScsICdGQUlMJykKKyAgICAgICAg
c2VsZi5hc3NlcnRfZXhwKCdUZXN0V2ViS2l0JywgJ1dlYktpdC5Nb3VzZU1vdmVBZnRlckNyYXNo
JywgJ0NSQVNIJykKKyAgICAgICAgc2VsZi5hc3NlcnRfZXhwKCdUZXN0V2ViS2l0JywgJ1dlYktp
dC5XS0Nvbm5lY3Rpb24nLCAnQ1JBU0gnKQorICAgICAgICBzZWxmLmFzc2VydF9leHAoJ1Rlc3RX
ZWJDb3JlJywgJ0NvbXBsZXhUZXh0Q29udHJvbGxlclRlc3QuSW5pdGlhbEFkdmFuY2VXaXRoTGVm
dFJ1bkluUlRMJywgJ1BBU1MnKQorICAgICAgICBzZWxmLmFzc2VydF9leHAoJ1Rlc3RXZWJDb3Jl
JywgJ0ZpbGVNb25pdG9yVGVzdC5EZXRlY3RDaGFuZ2UnLCAnQ1JBU0gnKQorICAgICAgICBzZWxm
LmFzc2VydF9leHAoJ1Rlc3RXZWJDb3JlJywgJ0ZpbGVTeXN0ZW1UZXN0Lk1hcHBpbmdNaXNzaW5n
RmlsZScsICdDUkFTSCcpCisgICAgICAgIHNlbGYuYXNzZXJ0X3NraXAoJ1Rlc3RXZWJWaWV3RWRp
dG9yJywgTm9uZSwgRmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0X3NraXAoJ1Rlc3RXZWJWaWV3
RWRpdG9yJywgJy93ZWJraXQyL1dlYktpdFdlYlZpZXcvZWRpdGFibGUvZWRpdGFibGUnLCBGYWxz
ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRfZXhwKCdUZXN0V2ViVmlld0VkaXRvcicsICcvd2Via2l0
Mi9XZWJLaXRXZWJWaWV3L2VkaXRhYmxlL2VkaXRhYmxlJywgJ0ZBSUwnKQorCisgICAgICAgIHNl
bGYuZXhwZWN0YXRpb25zID0gTW9ja1Rlc3RFeHBlY3RhdGlvbnMoJ2d0aycsIHNlbGYuQlVJTERf
VFlQRSwgJ1JlbGVhc2UnKQorICAgICAgICBzZWxmLmFzc2VydF9leHAoJ1Rlc3RDb29raWVNYW5h
Z2VyJywgJy93ZWJraXQyL1dlYktpdENvb2tpZU1hbmFnZXIvcGVyc2lzdGVudC1zdG9yYWdlJywg
J0ZBSUwnKQorICAgICAgICBzZWxmLmFzc2VydF9leHAoJ1Rlc3RXZWJLaXQnLCAnV2ViS2l0Lk1v
dXNlTW92ZUFmdGVyQ3Jhc2gnLCAnUEFTUycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2V4cCgnVGVz
dFdlYktpdCcsICdXZWJLaXQuV0tDb25uZWN0aW9uJywgJ0ZBSUwnKQorICAgICAgICBzZWxmLmFz
c2VydF9leHAoJ1Rlc3RXZWJDb3JlJywgJ0NvbXBsZXhUZXh0Q29udHJvbGxlclRlc3QuSW5pdGlh
bEFkdmFuY2VXaXRoTGVmdFJ1bkluUlRMJywgJ1BBU1MnKQorICAgICAgICBzZWxmLmFzc2VydF9l
eHAoJ1Rlc3RXZWJDb3JlJywgJ0ZpbGVNb25pdG9yVGVzdC5EZXRlY3RDaGFuZ2UnLCAnRkFJTCcp
CisgICAgICAgIHNlbGYuYXNzZXJ0X2V4cCgnVGVzdFdlYkNvcmUnLCAnRmlsZVN5c3RlbVRlc3Qu
TWFwcGluZ01pc3NpbmdGaWxlJywgJ1BBU1MnKQorICAgICAgICBzZWxmLmFzc2VydF9za2lwKCdU
ZXN0V2ViVmlld0VkaXRvcicsIE5vbmUsIFRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0X3NraXAo
J1Rlc3RXZWJWaWV3RWRpdG9yJywgJy93ZWJraXQyL1dlYktpdFdlYlZpZXcvZWRpdGFibGUvZWRp
dGFibGUnLCBUcnVlKQorCisgICAgICAgIHNlbGYuZXhwZWN0YXRpb25zID0gTW9ja1Rlc3RFeHBl
Y3RhdGlvbnMoJ3dwZScsIHNlbGYuQlVJTERfVFlQRSwgJ1JlbGVhc2UnKQorICAgICAgICBzZWxm
LmFzc2VydF9za2lwKCdUZXN0V2ViVmlld0VkaXRvcicsIE5vbmUsIFRydWUpCisgICAgICAgIHNl
bGYuYXNzZXJ0X3NraXAoJ1Rlc3RXZWJWaWV3RWRpdG9yJywgJy93ZWJraXQyL1dlYktpdFdlYlZp
ZXcvZWRpdGFibGUvZWRpdGFibGUnLCBUcnVlKQorCisgICAgICAgIHNlbGYuZXhwZWN0YXRpb25z
ID0gTW9ja1Rlc3RFeHBlY3RhdGlvbnMoJ3dwZScsIHNlbGYuQlVJTERfVFlQRSwgJ0RlYnVnJykK
KyAgICAgICAgc2VsZi5hc3NlcnRfc2tpcCgnVGVzdFdlYlZpZXdFZGl0b3InLCBOb25lLCBUcnVl
KQorICAgICAgICBzZWxmLmFzc2VydF9za2lwKCdUZXN0V2ViVmlld0VkaXRvcicsICcvd2Via2l0
Mi9XZWJLaXRXZWJWaWV3L2VkaXRhYmxlL2VkaXRhYmxlJywgVHJ1ZSkKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9leHBlY3RhdGlvbnMuanNvbiBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvZ2xpYi9leHBlY3RhdGlvbnMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMC4uMjc2MDkzNmNmMDMKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL2dsaWIvZXhwZWN0YXRpb25zLmpzb24KQEAgLTAsMCArMSwxMDkgQEAKK3sKKyAgICAi
VGVzdFVJQ2xpZW50IjogeworICAgICAgICAic3VidGVzdHMiOiB7CisgICAgICAgICAgICAiL3dl
YmtpdDIvV2ViS2l0V2ViVmlldy9tb3VzZS10YXJnZXQiOiB7CisgICAgICAgICAgICAgICAgImV4
cGVjdGVkIjogeyJndGsiOiB7InN0YXR1cyI6IFsiVElNRU9VVCJdLCAiYnVnIjogIndlYmtpdC5v
cmcvYi8xMTc2ODkifX0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAiL3dlYmtpdDIvV2Vi
S2l0V2ViVmlldy91c2VybWVkaWEtcGVybWlzc2lvbi1yZXF1ZXN0cyI6IHsKKyAgICAgICAgICAg
ICAgICAiZXhwZWN0ZWQiOiB7Imd0ayI6IHsic3RhdHVzIjogWyJUSU1FT1VUIl0sICJidWciOiAi
d2Via2l0Lm9yZy9iLzE1ODI1NyJ9fQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICIvd2Vi
a2l0Mi9XZWJLaXRXZWJWaWV3L2F1ZGlvLXVzZXJtZWRpYS1wZXJtaXNzaW9uLXJlcXVlc3QiOiB7
CisgICAgICAgICAgICAgICAgImV4cGVjdGVkIjogeyJndGsiOiB7InN0YXR1cyI6IFsiVElNRU9V
VCJdLCAiYnVnIjogIndlYmtpdC5vcmcvYi8xNTgyNTcifX0KKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgIH0sCisgICAgIlRlc3RDb29raWVNYW5hZ2VyIjogeworICAgICAgICAic3VidGVz
dHMiOiB7CisgICAgICAgICAgICAiL3dlYmtpdDIvV2ViS2l0Q29va2llTWFuYWdlci9wZXJzaXN0
ZW50LXN0b3JhZ2UiOiB7CisgICAgICAgICAgICAgICAgImV4cGVjdGVkIjogeyJndGsiOiB7InN0
YXR1cyI6IFsiRkFJTCIsICJQQVNTIl0sICJidWciOiAid2Via2l0Lm9yZy9iLzEzNDU4MCJ9fQor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfSwKKyAgICAiVGVzdFByaW50aW5nIjogewor
ICAgICAgICAic3VidGVzdHMiOiB7CisgICAgICAgICAgICAiL3dlYmtpdDIvV2ViS2l0UHJpbnRP
cGVyYXRpb24vY3VzdG9tLXdpZGdldCI6IHsKKyAgICAgICAgICAgICAgICAiZXhwZWN0ZWQiOiB7
Imd0ayI6IHsic3RhdHVzIjogWyJGQUlMIiwgIlBBU1MiXSwgImJ1ZyI6ICJ3ZWJraXQub3JnL2Iv
MTY4MTk2In19CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9LAorICAgICJUZXN0V2Vi
Vmlld0VkaXRvciI6IHsKKyAgICAgICAgInN1YnRlc3RzIjogeworICAgICAgICAgICAgIi93ZWJr
aXQyL1dlYktpdFdlYlZpZXcvZWRpdGFibGUvZWRpdGFibGUiOiB7CisgICAgICAgICAgICAgICAg
ImV4cGVjdGVkIjogeyJndGtARGVidWciOiB7InN0YXR1cyI6IFsiRkFJTCJdLCAiYnVnIjogIndl
YmtpdC5vcmcvYi8xMzQ1ODAifX0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0sCisg
ICAgIlRlc3RXZWJFeHRlbnNpb25zIjogeworICAgICAgICAic3VidGVzdHMiOiB7CisgICAgICAg
ICAgICAiL3dlYmtpdDIvV2ViS2l0V2ViVmlldy9pbnN0YWxsLW1pc3NpbmctcGx1Z2lucy1wZXJt
aXNzaW9uLXJlcXVlc3QiOiB7CisgICAgICAgICAgICAgICAgImV4cGVjdGVkIjogeyJndGsiOiB7
InN0YXR1cyI6IFsiVElNRU9VVCJdLCAiYnVnIjogIndlYmtpdC5vcmcvYi8xNDc4MjIifX0KKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0sCisgICAgIlRlc3RXZWJzaXRlRGF0YSI6IHsK
KyAgICAgICAgInN1YnRlc3RzIjogeworICAgICAgICAgICAgIi93ZWJraXQyL1dlYktpdFdlYnNp
dGVEYXRhL2RhdGFiYXNlcyI6IHsKKyAgICAgICAgICAgICAgICAiZXhwZWN0ZWQiOiB7Imd0ayI6
IHsic3RhdHVzIjogWyJGQUlMIl0sICJidWciOiAid2Via2l0Lm9yZy9iLzE4MTI1MSJ9fQorICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgfSwKKyAgICAiVGVzdEluc3BlY3RvclNlcnZlciI6
IHsKKyAgICAgICAgImV4cGVjdGVkIjogeyJhbGwiOiB7InNsb3ciOiB0cnVlfX0KKyAgICB9LAor
ICAgICJUZXN0V2ViS2l0IjogeworICAgICAgICAic3VidGVzdHMiOiB7CisgICAgICAgICAgICAi
V2ViS2l0Lk1vdXNlTW92ZUFmdGVyQ3Jhc2giOiB7CisgICAgICAgICAgICAgICAgImV4cGVjdGVk
IjogeyJndGsiOiB7InN0YXR1cyI6IFsiQ1JBU0giLCAiUEFTUyJdLCAiYnVnIjogIndlYmtpdC5v
cmcvYi84NTA2NiJ9fQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJXZWJLaXQuTmV3Rmly
c3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9ySW1hZ2VzIjogeworICAgICAgICAgICAgICAgICJl
eHBlY3RlZCI6IHsiZ3RrIjogeyJzdGF0dXMiOiBbIkZBSUwiLCAiUEFTUyJdLCAiYnVnIjogIndl
YmtpdC5vcmcvYi84NTA2NiJ9fQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJXZWJLaXQu
TmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0RnJhbWVzIjogeworICAgICAgICAgICAgICAg
ICJleHBlY3RlZCI6IHsiZ3RrIjogeyJzdGF0dXMiOiBbIkZBSUwiXSwgImJ1ZyI6ICJ3ZWJraXQu
b3JnL2IvODUwMzcifX0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAiV2ViS2l0LlNwYWNl
YmFyU2Nyb2xsaW5nIjogeworICAgICAgICAgICAgICAgICJleHBlY3RlZCI6IHsiZ3RrIjogeyJz
dGF0dXMiOiBbIkZBSUwiXSwgImJ1ZyI6ICJ3ZWJraXQub3JnL2IvODQ5NjEifX0KKyAgICAgICAg
ICAgIH0sCisgICAgICAgICAgICAiV2ViS2l0LldLQ29ubmVjdGlvbiI6IHsKKyAgICAgICAgICAg
ICAgICAiZXhwZWN0ZWQiOiB7Imd0ayI6IHsic3RhdHVzIjogWyJGQUlMIiwgIlRJTUVPVVQiXSwg
ImJ1ZyI6ICJ3ZWJraXQub3JnL2IvODQ5NTkifX0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAg
ICAiV2ViS2l0LkZvcmNlUmVwYWludCI6IHsKKyAgICAgICAgICAgICAgICAiZXhwZWN0ZWQiOiB7
Imd0ayI6IHsic3RhdHVzIjogWyJUSU1FT1VUIl0sICJidWciOiAid2Via2l0Lm9yZy9iLzEwNTUz
MiJ9fQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJXZWJLaXQuUmVsb2FkUGFnZUFmdGVy
Q3Jhc2giOiB7CisgICAgICAgICAgICAgICAgImV4cGVjdGVkIjogeyJndGsiOiB7InN0YXR1cyI6
IFsiVElNRU9VVCIsICJQQVNTIl0sICJidWciOiAid2Via2l0Lm9yZy9iLzExMDEyOSJ9fQorICAg
ICAgICAgICAgfSwKKyAgICAgICAgICAgICJXZWJLaXQuRGlkQXNzb2NpYXRlRm9ybUNvbnRyb2xz
IjogeworICAgICAgICAgICAgICAgICJleHBlY3RlZCI6IHsiZ3RrIjogeyJzdGF0dXMiOiBbIlRJ
TUVPVVQiXSwgImJ1ZyI6ICJ3ZWJraXQub3JnL2IvMTIwMzAyIn19CisgICAgICAgICAgICB9LAor
ICAgICAgICAgICAgIldlYktpdC5JbmplY3RlZEJ1bmRsZUZyYW1lSGl0VGVzdCI6IHsKKyAgICAg
ICAgICAgICAgICAiZXhwZWN0ZWQiOiB7Imd0ayI6IHsic3RhdHVzIjogWyJUSU1FT1VUIl0sICJi
dWciOiAid2Via2l0Lm9yZy9iLzEyMDMwMyJ9fQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAg
ICJXZWJLaXQuVGVybWluYXRlVHdpY2UiOiB7CisgICAgICAgICAgICAgICAgImV4cGVjdGVkIjog
eyJndGsiOiB7InN0YXR1cyI6IFsiU0tJUCJdLCAiYnVnIjogIndlYmtpdC5vcmcvYi8xMjE5NzAi
fX0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAiV2ViS2l0Lkdlb2xvY2F0aW9uVHJhbnNp
dGlvblRvSGlnaEFjY3VyYWN5IjogeworICAgICAgICAgICAgICAgICJleHBlY3RlZCI6IHsiZ3Rr
IjogeyJzdGF0dXMiOiBbIkNSQVNIIl0sICJidWciOiAid2Via2l0Lm9yZy9iLzEyNTA2OCJ9fQor
ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJXZWJLaXQuR2VvbG9jYXRpb25UcmFuc2l0aW9u
VG9Mb3dBY2N1cmFjeSI6IHsKKyAgICAgICAgICAgICAgICAiZXhwZWN0ZWQiOiB7Imd0ayI6IHsi
c3RhdHVzIjogWyJDUkFTSCJdLCAiYnVnIjogIndlYmtpdC5vcmcvYi8xMjUwNjgifX0KKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgIH0sCisgICAgIlRlc3RXVEYiOiB7CisgICAgICAgICJz
dWJ0ZXN0cyI6IHsKKyAgICAgICAgICAgICJXVEZfTG9jay5Db250ZW5kZWRTaG9ydFNlY3Rpb24i
OiB7CisgICAgICAgICAgICAgICAgImV4cGVjdGVkIjogeyJhbGwiOiB7InNsb3ciOiB0cnVlfX0K
KyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAiV1RGX0xvY2suQ29udGVuZGVkTG9uZ1NlY3Rp
b24iOiB7CisgICAgICAgICAgICAgICAgImV4cGVjdGVkIjogeyJhbGwiOiB7InNsb3ciOiB0cnVl
fX0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAiV1RGX1dvcmRMb2NrLkNvbnRlbmRlZFNo
b3J0U2VjdGlvbiI6IHsKKyAgICAgICAgICAgICAgICAiZXhwZWN0ZWQiOiB7ImFsbCI6IHsic2xv
dyI6IHRydWV9fQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJXVEZfV29yZExvY2suQ29u
dGVuZGVkTG9uZ1NlY3Rpb24iOiB7CisgICAgICAgICAgICAgICAgImV4cGVjdGVkIjogeyJhbGwi
OiB7InNsb3ciOiB0cnVlfX0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KZGlm
ZiAtLWdpdCBhL1Rvb2xzL2dsaWIvYXBpX3Rlc3RfcnVubmVyLnB5IGIvVG9vbHMvZ2xpYi9hcGlf
dGVzdF9ydW5uZXIucHkKaW5kZXggMTE3YzZhMDRjMmEuLjdhZDQ5YWJiOGIwIDEwMDc1NQotLS0g
YS9Ub29scy9nbGliL2FwaV90ZXN0X3J1bm5lci5weQorKysgYi9Ub29scy9nbGliL2FwaV90ZXN0
X3J1bm5lci5weQpAQCAtMjgsMzUgKzI4LDcgQEAgdG9wX2xldmVsX2RpcmVjdG9yeSA9IG9zLnBh
dGgubm9ybXBhdGgob3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICIKIHN5
cy5wYXRoLmluc2VydCgwLCBvcy5wYXRoLmpvaW4odG9wX2xldmVsX2RpcmVjdG9yeSwgIlRvb2xz
IiwgImdsaWIiKSkKIGltcG9ydCBjb21tb24KIGZyb20gd2Via2l0cHkuY29tbW9uLmhvc3QgaW1w
b3J0IEhvc3QKLQotCi1jbGFzcyBTa2lwcGVkVGVzdDoKLSAgICBFTlRJUkVfU1VJVEUgPSBOb25l
Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgdGVzdCwgdGVzdF9jYXNlLCByZWFzb24sIGJ1Zywg
YnVpbGRfdHlwZT1Ob25lKToKLSAgICAgICAgc2VsZi50ZXN0ID0gdGVzdAotICAgICAgICBzZWxm
LnRlc3RfY2FzZSA9IHRlc3RfY2FzZQotICAgICAgICBzZWxmLnJlYXNvbiA9IHJlYXNvbgotICAg
ICAgICBzZWxmLmJ1ZyA9IGJ1ZwotICAgICAgICBzZWxmLmJ1aWxkX3R5cGUgPSBidWlsZF90eXBl
Ci0KLSAgICBkZWYgX19zdHJfXyhzZWxmKToKLSAgICAgICAgc2tpcHBlZF90ZXN0X3N0ciA9ICIl
cyIgJSBzZWxmLnRlc3QKLQotICAgICAgICBpZiBub3Qoc2VsZi5za2lwX2VudGlyZV9zdWl0ZSgp
KToKLSAgICAgICAgICAgIHNraXBwZWRfdGVzdF9zdHIgKz0gIiBbJXNdIiAlIHNlbGYudGVzdF9j
YXNlCi0KLSAgICAgICAgc2tpcHBlZF90ZXN0X3N0ciArPSAiOiAlcyAoaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPSVkKSIgJSAoc2VsZi5yZWFzb24sIHNlbGYuYnVnKQot
ICAgICAgICByZXR1cm4gc2tpcHBlZF90ZXN0X3N0cgotCi0gICAgZGVmIHNraXBfZW50aXJlX3N1
aXRlKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi50ZXN0X2Nhc2UgPT0gU2tpcHBlZFRlc3Qu
RU5USVJFX1NVSVRFCi0KLSAgICBkZWYgc2tpcF9mb3JfYnVpbGRfdHlwZShzZWxmLCBidWlsZF90
eXBlKToKLSAgICAgICAgaWYgc2VsZi5idWlsZF90eXBlIGlzIE5vbmU6Ci0gICAgICAgICAgICBy
ZXR1cm4gVHJ1ZQotCi0gICAgICAgIHJldHVybiBzZWxmLmJ1aWxkX3R5cGUgPT0gYnVpbGRfdHlw
ZQorZnJvbSB3ZWJraXRweS5jb21tb24udGVzdF9leHBlY3RhdGlvbnMgaW1wb3J0IFRlc3RFeHBl
Y3RhdGlvbnMKIAogCiBjbGFzcyBUZXN0VGltZW91dChFeGNlcHRpb24pOgpAQCAtNjUsOCArMzcs
NiBAQCBjbGFzcyBUZXN0VGltZW91dChFeGNlcHRpb24pOgogCiBjbGFzcyBUZXN0UnVubmVyKG9i
amVjdCk6CiAgICAgVEVTVF9ESVJTID0gW10KLSAgICBTS0lQUEVEID0gW10KLSAgICBTTE9XID0g
W10KIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0LCBvcHRpb25zLCB0ZXN0cz1bXSk6CiAg
ICAgICAgIHNlbGYuX29wdGlvbnMgPSBvcHRpb25zCkBAIC03Nyw4ICs0Nyw5IEBAIGNsYXNzIFRl
c3RSdW5uZXIob2JqZWN0KToKICAgICAgICAgc2VsZi5fZHJpdmVyID0gc2VsZi5fY3JlYXRlX2Ry
aXZlcigpCiAKICAgICAgICAgc2VsZi5fcHJvZ3JhbXNfcGF0aCA9IGNvbW1vbi5iaW5hcnlfYnVp
bGRfcGF0aCgpCisgICAgICAgIGV4cGVjdGF0aW9uc19maWxlID0gb3MucGF0aC5qb2luKGNvbW1v
bi50b3BfbGV2ZWxfcGF0aCgpLCAiVG9vbHMiLCAiVGVzdFdlYktpdEFQSSIsICJnbGliIiwgImV4
cGVjdGF0aW9ucy5qc29uIikKKyAgICAgICAgc2VsZi5fZXhwZWN0YXRpb25zID0gVGVzdEV4cGVj
dGF0aW9ucyhzZWxmLl9wb3J0Lm5hbWUoKSwgZXhwZWN0YXRpb25zX2ZpbGUsIHNlbGYuX2J1aWxk
X3R5cGUpCiAgICAgICAgIHNlbGYuX3Rlc3RzID0gc2VsZi5fZ2V0X3Rlc3RzKHRlc3RzKQotICAg
ICAgICBzZWxmLl9za2lwcGVkX3Rlc3RzID0gW3NraXBwZWQgZm9yIHNraXBwZWQgaW4gVGVzdFJ1
bm5lci5TS0lQUEVEIGlmIHNraXBwZWQuc2tpcF9mb3JfYnVpbGRfdHlwZShzZWxmLl9idWlsZF90
eXBlKV0KICAgICAgICAgc2VsZi5fZGlzYWJsZWRfdGVzdHMgPSBbXQogCiAgICAgZGVmIF90ZXN0
X3Byb2dyYW1zX2Jhc2VfZGlyKHNlbGYpOgpAQCAtMTM2LDExICsxMDcsNyBAQCBjbGFzcyBUZXN0
UnVubmVyKG9iamVjdCk6CiAgICAgICAgIGlmIHNlbGYuX29wdGlvbnMuc2tpcHBlZF9hY3Rpb24g
IT0gJ3NraXAnOgogICAgICAgICAgICAgcmV0dXJuIFtdCiAKLSAgICAgICAgdGVzdF9jYXNlcyA9
IFtdCi0gICAgICAgIGZvciBza2lwcGVkIGluIHNlbGYuX3NraXBwZWRfdGVzdHM6Ci0gICAgICAg
ICAgICBpZiB0ZXN0X3Byb2dyYW0uZW5kc3dpdGgoc2tpcHBlZC50ZXN0KSBhbmQgbm90IHNraXBw
ZWQuc2tpcF9lbnRpcmVfc3VpdGUoKToKLSAgICAgICAgICAgICAgICB0ZXN0X2Nhc2VzLmFwcGVu
ZChza2lwcGVkLnRlc3RfY2FzZSkKLSAgICAgICAgcmV0dXJuIHRlc3RfY2FzZXMKKyAgICAgICAg
cmV0dXJuIHNlbGYuX2V4cGVjdGF0aW9ucy5za2lwcGVkX3N1YnRlc3RzKG9zLnBhdGguYmFzZW5h
bWUodGVzdF9wcm9ncmFtKSkKIAogICAgIGRlZiBfc2hvdWxkX3J1bl90ZXN0X3Byb2dyYW0oc2Vs
ZiwgdGVzdF9wcm9ncmFtKToKICAgICAgICAgZm9yIGRpc2FibGVkX3Rlc3QgaW4gc2VsZi5fZGlz
YWJsZWRfdGVzdHM6CkBAIC0xNTAsMTAgKzExNyw3IEBAIGNsYXNzIFRlc3RSdW5uZXIob2JqZWN0
KToKICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5za2lwcGVkX2FjdGlvbiAhPSAnc2tpcCc6CiAg
ICAgICAgICAgICByZXR1cm4gVHJ1ZQogCi0gICAgICAgIGZvciBza2lwcGVkIGluIHNlbGYuX3Nr
aXBwZWRfdGVzdHM6Ci0gICAgICAgICAgICBpZiB0ZXN0X3Byb2dyYW0uZW5kc3dpdGgoc2tpcHBl
ZC50ZXN0KSBhbmQgc2tpcHBlZC5za2lwX2VudGlyZV9zdWl0ZSgpOgotICAgICAgICAgICAgICAg
IHJldHVybiBGYWxzZQotICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICByZXR1cm4gb3MucGF0
aC5iYXNlbmFtZSh0ZXN0X3Byb2dyYW0pIG5vdCBpbiBzZWxmLl9leHBlY3RhdGlvbnMuc2tpcHBl
ZF90ZXN0cygpCiAKICAgICBkZWYgX2tpbGxfcHJvY2VzcyhzZWxmLCBwaWQpOgogICAgICAgICB0
cnk6CkBAIC0yMTEsNyArMTc1LDcgQEAgY2xhc3MgVGVzdFJ1bm5lcihvYmplY3QpOgogCiAgICAg
ICAgIHRpbWVvdXQgPSBzZWxmLl9vcHRpb25zLnRpbWVvdXQKICAgICAgICAgdGVzdCA9IG9zLnBh
dGguam9pbihvcy5wYXRoLmJhc2VuYW1lKG9zLnBhdGguZGlybmFtZSh0ZXN0X3Byb2dyYW0pKSwg
b3MucGF0aC5iYXNlbmFtZSh0ZXN0X3Byb2dyYW0pKQotICAgICAgICBpZiB0ZXN0IGluIFRlc3RS
dW5uZXIuU0xPVzoKKyAgICAgICAgaWYgc2VsZi5fZXhwZWN0YXRpb25zLmlzX3Nsb3cob3MucGF0
aC5iYXNlbmFtZSh0ZXN0X3Byb2dyYW0pKToKICAgICAgICAgICAgIHRpbWVvdXQgKj0gNQogCiAg
ICAgICAgIHRlc3RfY29udGV4dCA9IHsiY2hpbGQtcGlkIjogLTEsICJkaWQtdGltZW91dCI6IEZh
bHNlLCAiY3VycmVudF90ZXN0IjogTm9uZX0KQEAgLTIzMiw2ICsxOTYsOCBAQCBjbGFzcyBUZXN0
UnVubmVyKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2NvbnRleHRbdGVz
dF0gPSAiVElNRU9VVCIKICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAg
ICAgICAgICAgIHRlc3RfY29udGV4dFt0ZXN0XSA9IHJlc3VsdAorICAgICAgICAgICAgICAgIGVs
c2U6CisgICAgICAgICAgICAgICAgICAgIHRlc3RfY29udGV4dFt0ZXN0XSA9ICdQQVNTJwogICAg
ICAgICAgICAgICAgIHRlc3RfY29udGV4dFsiZGlkLXRpbWVvdXQiXSA9IEZhbHNlCiAgICAgICAg
ICAgICAgICAgdGVzdF9jb250ZXh0WyJjdXJyZW50X3Rlc3QiXSA9IE5vbmUKICAgICAgICAgICAg
ICAgICBzZWxmLl9zdG9wX3RpbWVvdXQodGltZW91dCkKQEAgLTMwMiw3ICsyNjgsNyBAQCBjbGFz
cyBUZXN0UnVubmVyKG9iamVjdCk6CiAgICAgZGVmIF9ydW5fZ29vZ2xlX3Rlc3Qoc2VsZiwgdGVz
dF9wcm9ncmFtLCBzdWJ0ZXN0KToKICAgICAgICAgY29tbWFuZCA9IFt0ZXN0X3Byb2dyYW0sICct
LWd0ZXN0X2ZpbHRlcj0lcycgJSAoc3VidGVzdCldCiAgICAgICAgIHRpbWVvdXQgPSBzZWxmLl9v
cHRpb25zLnRpbWVvdXQKLSAgICAgICAgaWYgc3VidGVzdCBpbiBUZXN0UnVubmVyLlNMT1c6Cisg
ICAgICAgIGlmIHNlbGYuX2V4cGVjdGF0aW9ucy5pc19zbG93KG9zLnBhdGguYmFzZW5hbWUodGVz
dF9wcm9ncmFtKSwgc3VidGVzdCk6CiAgICAgICAgICAgICB0aW1lb3V0ICo9IDUKIAogICAgICAg
ICBwaWQsIGZkID0gb3MuZm9ya3B0eSgpCkBAIC0zMjgsNyArMjk0LDcgQEAgY2xhc3MgVGVzdFJ1
bm5lcihvYmplY3QpOgogICAgICAgICBpZiBzdGF0dXMgIT0gMDoKICAgICAgICAgICAgIHJldHVy
biB7c3VidGVzdDogIkZBSUwifQogCi0gICAgICAgIHJldHVybiB7fQorICAgICAgICByZXR1cm4g
e3N1YnRlc3Q6ICJQQVNTIn0KIAogICAgIGRlZiBfcnVuX2dvb2dsZV90ZXN0X3N1aXRlKHNlbGYs
IHRlc3RfcHJvZ3JhbSk6CiAgICAgICAgIHJlc3VsdCA9IHt9CkBAIC0zNjcsNDIgKzMzMywzOSBA
QCBjbGFzcyBUZXN0UnVubmVyKG9iamVjdCk6CiAgICAgICAgIGNyYXNoZWRfdGVzdHMgPSB7fQog
ICAgICAgICBmYWlsZWRfdGVzdHMgPSB7fQogICAgICAgICB0aW1lZF9vdXRfdGVzdHMgPSB7fQor
ICAgICAgICBwYXNzZWRfdGVzdHMgPSB7fQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBmb3Ig
dGVzdCBpbiBzZWxmLl90ZXN0czoKICAgICAgICAgICAgICAgICByZXN1bHRzID0gc2VsZi5fcnVu
X3Rlc3QodGVzdCkKICAgICAgICAgICAgICAgICBmb3IgdGVzdF9jYXNlLCByZXN1bHQgaW4gcmVz
dWx0cy5pdGVyaXRlbXMoKToKKyAgICAgICAgICAgICAgICAgICAgaWYgcmVzdWx0IGluIHNlbGYu
X2V4cGVjdGF0aW9ucy5nZXRfZXhwZWN0YXRpb24ob3MucGF0aC5iYXNlbmFtZSh0ZXN0KSwgdGVz
dF9jYXNlKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKICAgICAgICAgICAg
ICAgICAgICAgaWYgcmVzdWx0ID09ICJGQUlMIjoKICAgICAgICAgICAgICAgICAgICAgICAgIGZh
aWxlZF90ZXN0cy5zZXRkZWZhdWx0KHRlc3QsIFtdKS5hcHBlbmQodGVzdF9jYXNlKQogICAgICAg
ICAgICAgICAgICAgICBlbGlmIHJlc3VsdCA9PSAiVElNRU9VVCI6CiAgICAgICAgICAgICAgICAg
ICAgICAgICB0aW1lZF9vdXRfdGVzdHMuc2V0ZGVmYXVsdCh0ZXN0LCBbXSkuYXBwZW5kKHRlc3Rf
Y2FzZSkKICAgICAgICAgICAgICAgICAgICAgZWxpZiByZXN1bHQgPT0gIkNSQVNIIjoKICAgICAg
ICAgICAgICAgICAgICAgICAgIGNyYXNoZWRfdGVzdHMuc2V0ZGVmYXVsdCh0ZXN0LCBbXSkuYXBw
ZW5kKHRlc3RfY2FzZSkKKyAgICAgICAgICAgICAgICAgICAgZWxpZiByZXN1bHQgPT0gIlBBU1Mi
OgorICAgICAgICAgICAgICAgICAgICAgICAgcGFzc2VkX3Rlc3RzLnNldGRlZmF1bHQodGVzdCwg
W10pLmFwcGVuZCh0ZXN0X2Nhc2UpCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBzZWxm
Ll90ZWFyX2Rvd25fdGVzdGluZ19lbnZpcm9ubWVudCgpCiAKLSAgICAgICAgaWYgZmFpbGVkX3Rl
c3RzOgotICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiXG5VbmV4cGVjdGVkIGZhaWx1cmVz
ICglZClcbiIgJSAoc3VtKGxlbih2YWx1ZSkgZm9yIHZhbHVlIGluIGZhaWxlZF90ZXN0cy5pdGVy
dmFsdWVzKCkpKSkKLSAgICAgICAgICAgIGZvciB0ZXN0IGluIGZhaWxlZF90ZXN0czoKLSAgICAg
ICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCIgICAgJXNcbiIgJSAodGVzdC5yZXBsYWNlKHNl
bGYuX3Rlc3RfcHJvZ3JhbXNfYmFzZV9kaXIoKSwgJycsIDEpKSkKLSAgICAgICAgICAgICAgICBm
b3IgdGVzdF9jYXNlIGluIGZhaWxlZF90ZXN0c1t0ZXN0XToKLSAgICAgICAgICAgICAgICAgICAg
c3lzLnN0ZG91dC53cml0ZSgiICAgICAgICAlc1xuIiAlICh0ZXN0X2Nhc2UpKQotICAgICAgICAg
ICAgc3lzLnN0ZG91dC5mbHVzaCgpCi0KLSAgICAgICAgaWYgY3Jhc2hlZF90ZXN0czoKLSAgICAg
ICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIlxuVW5leHBlY3RlZCBjcmFzaGVzICglZClcbiIgJSAo
c3VtKGxlbih2YWx1ZSkgZm9yIHZhbHVlIGluIGNyYXNoZWRfdGVzdHMuaXRlcnZhbHVlcygpKSkp
Ci0gICAgICAgICAgICBmb3IgdGVzdCBpbiBjcmFzaGVkX3Rlc3RzOgotICAgICAgICAgICAgICAg
IHN5cy5zdGRvdXQud3JpdGUoIiAgICAlc1xuIiAlICh0ZXN0LnJlcGxhY2Uoc2VsZi5fdGVzdF9w
cm9ncmFtc19iYXNlX2RpcigpLCAnJywgMSkpKQotICAgICAgICAgICAgICAgIGZvciB0ZXN0X2Nh
c2UgaW4gY3Jhc2hlZF90ZXN0c1t0ZXN0XToKKyAgICAgICAgZGVmIHJlcG9ydCh0ZXN0cywgdGl0
bGUsIGJhc2VfZGlyKToKKyAgICAgICAgICAgIGlmIG5vdCB0ZXN0czoKKyAgICAgICAgICAgICAg
ICByZXR1cm4KKyAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIlxuVW5leHBlY3RlZCAlcyAo
JWQpXG4iICUgKHRpdGxlLCBzdW0obGVuKHZhbHVlKSBmb3IgdmFsdWUgaW4gdGVzdHMuaXRlcnZh
bHVlcygpKSkpCisgICAgICAgICAgICBmb3IgdGVzdCBpbiB0ZXN0czoKKyAgICAgICAgICAgICAg
ICBzeXMuc3Rkb3V0LndyaXRlKCIgICAgJXNcbiIgJSAodGVzdC5yZXBsYWNlKGJhc2VfZGlyLCAn
JywgMSkpKQorICAgICAgICAgICAgICAgIGZvciB0ZXN0X2Nhc2UgaW4gdGVzdHNbdGVzdF06CiAg
ICAgICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIiAgICAgICAgJXNcbiIgJSAodGVz
dF9jYXNlKSkKICAgICAgICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQogCi0gICAgICAgIGlmIHRp
bWVkX291dF90ZXN0czoKLSAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIlxuVW5leHBlY3Rl
ZCB0aW1lb3V0cyAoJWQpXG4iICUgKHN1bShsZW4odmFsdWUpIGZvciB2YWx1ZSBpbiB0aW1lZF9v
dXRfdGVzdHMuaXRlcnZhbHVlcygpKSkpCi0gICAgICAgICAgICBmb3IgdGVzdCBpbiB0aW1lZF9v
dXRfdGVzdHM6Ci0gICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiICAgICVzXG4iICUg
KHRlc3QucmVwbGFjZShzZWxmLl90ZXN0X3Byb2dyYW1zX2Jhc2VfZGlyKCksICcnLCAxKSkpCi0g
ICAgICAgICAgICAgICAgZm9yIHRlc3RfY2FzZSBpbiB0aW1lZF9vdXRfdGVzdHNbdGVzdF06Ci0g
ICAgICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIiAgICAgICAgJXNcbiIgJSAodGVz
dF9jYXNlKSkKLSAgICAgICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQorICAgICAgICByZXBvcnQo
ZmFpbGVkX3Rlc3RzLCAiZmFpbHVyZXMiLCBzZWxmLl90ZXN0X3Byb2dyYW1zX2Jhc2VfZGlyKCkp
CisgICAgICAgIHJlcG9ydChjcmFzaGVkX3Rlc3RzLCAiY3Jhc2hlcyIsIHNlbGYuX3Rlc3RfcHJv
Z3JhbXNfYmFzZV9kaXIoKSkKKyAgICAgICAgcmVwb3J0KHRpbWVkX291dF90ZXN0cywgInRpbWVv
dXRzIiwgc2VsZi5fdGVzdF9wcm9ncmFtc19iYXNlX2RpcigpKQorICAgICAgICByZXBvcnQocGFz
c2VkX3Rlc3RzLCAicGFzc2VzIiwgc2VsZi5fdGVzdF9wcm9ncmFtc19iYXNlX2RpcigpKQogCiAg
ICAgICAgIHJldHVybiBsZW4oZmFpbGVkX3Rlc3RzKSArIGxlbih0aW1lZF9vdXRfdGVzdHMpCiAK
</data>
<flag name="review"
          id="350171"
          type_id="1"
          status="+"
          setter="mcatanzaro"
    />
          </attachment>
      

    </bug>

</bugzilla>