<?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>172730</bug_id>
          
          <creation_ts>2017-05-30 14:03:00 -0700</creation_ts>
          <short_desc>Make ResourceLoadStatistics testing more reliable</short_desc>
          <delta_ts>2017-05-31 09:58:55 -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>
          
          
          <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="Brent Fulgham">bfulgham</reporter>
          <assigned_to name="Brent Fulgham">bfulgham</assigned_to>
          <cc>aestes</cc>
    
    <cc>ap</cc>
    
    <cc>bfulgham</cc>
    
    <cc>jlewis3</cc>
    
    <cc>lforschler</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>wilander</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1313864</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2017-05-30 14:03:00 -0700</bug_when>
    <thetext>The tests for ResourceLoadStatistics are inherently flaky, because they expose the algorithm to various inputs, then immediately attempts to read back state even though the statistics are being processed in a background queue.

The test harness needs to be revised to work more like the scrolling tests, where a callback is registered to be called when the work is complete.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1313865</commentid>
    <comment_count>1</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2017-05-30 14:03:26 -0700</bug_when>
    <thetext>&lt;rdar://problem/32028373&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1314090</commentid>
    <comment_count>2</comment_count>
      <attachid>311574</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2017-05-30 22:37:49 -0700</bug_when>
    <thetext>Created attachment 311574
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1314183</commentid>
    <comment_count>3</comment_count>
      <attachid>311574</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-05-31 09:21:28 -0700</bug_when>
    <thetext>Comment on attachment 311574
Patch

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

&gt; Source/WebKit2/UIProcess/WebResourceLoadStatisticsStore.cpp:146
&gt; +            RunLoop::main().dispatch([this, protectedThis = makeRef(*this)] () mutable {
&gt; +                WebProcessProxy::notifyPageStatisticsAndDataRecordsProcessed();
&gt; +            });

It&apos;s not obvious why `this` has to be captured here since the lambda calls a static function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1314185</commentid>
    <comment_count>4</comment_count>
      <attachid>311574</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2017-05-31 09:30:38 -0700</bug_when>
    <thetext>Comment on attachment 311574
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/WebResourceLoadStatisticsStore.cpp:146
&gt;&gt; +            });
&gt; 
&gt; It&apos;s not obvious why `this` has to be captured here since the lambda calls a static function.

Good point. I&apos;ll remove that and double-check before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1314194</commentid>
    <comment_count>5</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2017-05-31 09:58:55 -0700</bug_when>
    <thetext>Committed r217606: &lt;http://trac.webkit.org/changeset/217606&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>311574</attachid>
            <date>2017-05-30 22:37:49 -0700</date>
            <delta_ts>2017-05-31 09:21:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172730-20170530223748.patch</filename>
            <type>text/plain</type>
            <size>35166</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNzU2NCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDE3LTA1LTMwICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyB0ZXN0aW5nIG1vcmUgcmVsaWFibGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MjczMAorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
MzIwMjgzNzM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc1Byb3h5Ojpub3RpZnlQYWdlU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzUHJvY2Vzc2Vk
KTogQWRkIGEgY29udmVuaWVuY2UgbWV0aG9kIHRvIG5vdGlmeSB0aGUKKyAgICAgICAgV2ViUHJv
Y2VzcyB3aGVuIHRoZSBVSVByb2Nlc3MgaGFzIGZpbmlzaGVkIHByb2Nlc3NpbmcgdGhlIGxvYWQg
c3RhdGlzdGljcyBkYXRhLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpwcm9jZXNz
U3RhdGlzdGljc0FuZERhdGFSZWNvcmRzKTogTm90aWZ5IGNsaWVudHMgKGlmIHRoZXkgcmVxdWVz
dGVkKSB3aGVuCisgICAgICAgIHN0YXRpc3RpY3MgaGF2ZSBiZWVuIHByb2Nlc3NlZC4KKwogMjAx
Ny0wNS0zMCAgS29uc3RhbnRpbiBUb2thcmV2ICA8YW5udWxlbkB5YW5kZXgucnU+CiAKICAgICAg
ICAgRG9uJ3QgdXNlIGRlc2lnbmF0ZWQgaW5pdGlhbGl6ZXJzIGluIFdlYkJhY2tGb3J3YXJkTGlz
dFByb3h5LmNwcApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5jcHAJKHJldmlzaW9uIDIxNzU2NCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjIsNyArMzIyLDEzIEBAIHZv
aWQgV2ViUHJvY2Vzc1Byb3h5Ojp0b3BQcml2YXRlbHlDb250cm8KICAgICAgICAgfSk7CiAgICAg
fQogfQotCisgICAgCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6bm90aWZ5UGFnZVN0YXRpc3RpY3NB
bmREYXRhUmVjb3Jkc1Byb2Nlc3NlZCgpCit7CisgICAgZm9yIChhdXRvJiBwYWdlIDogZ2xvYmFs
UGFnZU1hcCgpKQorICAgICAgICBwYWdlLnZhbHVlLT5wb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5k
bGUoIldlYnNpdGVEYXRhU2NhbkZvclRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW5zRmluaXNo
ZWQiLCBudWxscHRyKTsKK30KKyAgICAKIFJlZjxXZWJQYWdlUHJveHk+IFdlYlByb2Nlc3NQcm94
eTo6Y3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBSZWY8QVBJOjpQYWdlQ29u
ZmlndXJhdGlvbj4mJiBwYWdlQ29uZmlndXJhdGlvbikKIHsKICAgICB1aW50NjRfdCBwYWdlSUQg
PSBnZW5lcmF0ZVBhZ2VJRCgpOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuaAkocmV2aXNpb24gMjE3NTY0KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDMsNiArMTQzLDcgQEAg
cHVibGljOgogICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKFdlYkNvcmU6OlNl
c3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIGNvbnN0IFZlY3RvcjxXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGE+JiwgRnVuY3Rpb248dm9pZCgpPiBjb21wbGV0aW9uSGFuZGxl
cik7CiAgICAgc3RhdGljIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGFGb3JUb3BQcml2YXRlbHlDb250
cm9sbGVkRG9tYWluc0luQWxsUGVyc2lzdGVudERhdGFTdG9yZXMoT3B0aW9uU2V0PFdlYnNpdGVE
YXRhVHlwZT4sIFZlY3RvcjxTdHJpbmc+JiYgdG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnMs
IGJvb2wgc2hvdWxkTm90aWZ5UGFnZXMsIHN0ZDo6ZnVuY3Rpb248dm9pZChWZWN0b3I8U3RyaW5n
Pik+IGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICBzdGF0aWMgdm9pZCB0b3BQcml2YXRlbHlDb250
cm9sbGVkRG9tYWluc1dpdGhXZWJpdGVEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGRh
dGFUeXBlcywgYm9vbCBzaG91bGROb3RpZnlQYWdlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoSGFzaFNl
dDxTdHJpbmc+JiYpPiBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgc3RhdGljIHZvaWQgbm90aWZ5
UGFnZVN0YXRpc3RpY3NBbmREYXRhUmVjb3Jkc1Byb2Nlc3NlZCgpOwogCiAgICAgdm9pZCBlbmFi
bGVTdWRkZW5UZXJtaW5hdGlvbigpOwogICAgIHZvaWQgZGlzYWJsZVN1ZGRlblRlcm1pbmF0aW9u
KCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAkocmV2aXNpb24gMjE3NTY0KQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEzOSw3ICsxMzksMTMgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OnBybwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KICAgICAgICAg
cmVtb3ZlRGF0YVJlY29yZHMoKTsKLQorICAgICAgICAKKyAgICAgICAgaWYgKG5vdGlmeVBhZ2Vz
KSB7CisgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgV2Vi
UHJvY2Vzc1Byb3h5Ojpub3RpZnlQYWdlU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzUHJvY2Vzc2Vk
KCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAgICAgICAgICAgCiAgICAgICAgIHdy
aXRlU3RvcmVUb0Rpc2soKTsKICAgICB9KTsKIH0KSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNzU4OSkKKysrIFRvb2xzL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDE3LTA1LTMwICBCcmVu
dCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgUmVzb3VyY2VM
b2FkU3RhdGlzdGljcyB0ZXN0aW5nIG1vcmUgcmVsaWFibGUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MjczMAorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vMzIwMjgzNzM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgV2hlbiB3ZSB0ZWxsIHRoZSBVSVByb2Nlc3MgKFdlYktpdFRlc3RSdW5uZXIpIHRvIG5v
dGlmeSB0aGUgc3lzdGVtIGFib3V0IHN0YXRpc3RpY3MgdXBkYXRlIG5vdGlmaWNhdGlvbnMsCisg
ICAgICAgIHdlIGFsc28gbmVlZCB0byB0ZWxsIHRoZSBXZWJQcm9jZXNzIHRvIGRvIHNvLCB0b28s
IG9yIGVsc2UgdGhlIHRlc3Qgc3lzdGVtIGRvZXNuJ3QgZ2V0IG1lc3NhZ2VzLgorCisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcDoKKyAgICAg
ICAgKFdUUjo6VGVzdFJ1bm5lcjo6c2V0U3RhdGlzdGljc05vdGlmeVBhZ2VzV2hlbkRhdGFSZWNv
cmRzV2VyZVNjYW5uZWQpOgorCiAyMDE3LTA1LTMwICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0
b25AYXBwbGUuY29tPgogCiAgICAgICAgIEtleWJvYXJkIGF1dG9jb3JyZWN0aW9ucyBkbyBub3Qg
YXBwbHkgd2l0aCBhbiBhY3RpdmUgc2VsZWN0aW9uIChidXQga2V5Ym9hcmQgYWN0cyBsaWtlIHRo
ZXkgZGlkKQpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0
UnVubmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL1Rlc3RSdW5uZXIuY3BwCShyZXZpc2lvbiAyMTc1NjQpCisrKyBUb29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00Niw2ICs0Niw3IEBACiAjaW5jbHVkZSA8V2ViS2l0L1dLQnVuZGxlU2NyaXB0V29ybGQuaD4K
ICNpbmNsdWRlIDxXZWJLaXQvV0tEYXRhLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLUGFnZVByaXZh
dGUuaD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5o
PgogI2luY2x1ZGUgPFdlYktpdC9XS1JldGFpblB0ci5oPgogI2luY2x1ZGUgPFdlYktpdC9XS1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPFdlYktpdC9XZWJLaXQyX0MuaD4KQEAg
LTE0MzAsNiArMTQzMSw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0U3RhdGlzdGljc05vdGlmeVBh
Z2UKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUoQWRvcHRXSywgV0tT
dHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlN0YXRpc3RpY3NOb3RpZnlQYWdlc1doZW5EYXRh
UmVjb3Jkc1dlcmVTY2FubmVkIikpOwogICAgIFdLUmV0YWluUHRyPFdLQm9vbGVhblJlZj4gbWVz
c2FnZUJvZHkoQWRvcHRXSywgV0tCb29sZWFuQ3JlYXRlKHZhbHVlKSk7CiAgICAgV0tCdW5kbGVQ
b3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUo
KSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpLCBudWxscHRyKTsKKyAgICBX
S1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyU2V0Tm90aWZ5UGFnZXNXaGVuRGF0YVJlY29y
ZHNXZXJlU2Nhbm5lZCh2YWx1ZSk7CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6c2V0U3RhdGlzdGlj
c1Nob3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKGJvb2wgdmFs
dWUpCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMTc1NjQpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNyBAQAorMjAxNy0wNS0zMCAgQnJlbnQgRnVsZ2hh
bSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIFJlc291cmNlTG9hZFN0YXRp
c3RpY3MgdGVzdGluZyBtb3JlIHJlbGlhYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzI3MzAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMyMDI4
MzczPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJl
dmlzZSBzb21lIG9mIHRoZSB0ZXN0cyB0byB3YWl0IHRvIGNoZWNrIHN0YXRlIHVudGlsIGFmdGVy
IHRoZSBiYWNrZ3JvdW5kIHByb2Nlc3MgaGFzIGZpbmlzaGVkIHByb2Nlc3NpbmcgdGhlCisgICAg
ICAgIGxvYWQgaW5mb3JtYXRpb24uCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2xvYWRpbmcvcmVz
b3VyY2VMb2FkU3RhdGlzdGljcy9jbGFzc2lmeS1hcy1ub24tcHJldmFsZW50LWJhc2VkLW9uLW1p
eGVkLXN0YXRpc3RpY3MuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2xvYWRpbmcvcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy9jbGFzc2lmeS1hcy1ub24tcHJldmFsZW50LWJhc2VkLW9uLXN1Yi1m
cmFtZS11bmRlci10b3AtZnJhbWUtb3JpZ2lucy5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMv
bG9hZGluZy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NsYXNzaWZ5LWFzLW5vbi1wcmV2YWxlbnQt
YmFzZWQtb24tc3VicmVzb3VyY2UtdW5kZXItdG9wLWZyYW1lLW9yaWdpbnMuaHRtbDoKKyAgICAg
ICAgKiBodHRwL3Rlc3RzL2xvYWRpbmcvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbGFzc2lmeS1h
cy1ub24tcHJldmFsZW50LWJhc2VkLW9uLXN1YnJlc291cmNlLXVuaXF1ZS1yZWRpcmVjdHMtdG8u
aHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2xvYWRpbmcvcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy9jbGFzc2lmeS1hcy1wcmV2YWxlbnQtYmFzZWQtb24tbWl4ZWQtc3RhdGlzdGljcy5odG1sOgor
ICAgICAgICAqIGh0dHAvdGVzdHMvbG9hZGluZy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NsYXNz
aWZ5LWFzLXByZXZhbGVudC1iYXNlZC1vbi1zdWItZnJhbWUtdW5kZXItdG9wLWZyYW1lLW9yaWdp
bnMuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2xvYWRpbmcvcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy9jbGFzc2lmeS1hcy1wcmV2YWxlbnQtYmFzZWQtb24tc3VicmVzb3VyY2UtdW5kZXItdG9w
LWZyYW1lLW9yaWdpbnMuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2xvYWRpbmcvcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy9jbGFzc2lmeS1hcy1wcmV2YWxlbnQtYmFzZWQtb24tc3VicmVzb3Vy
Y2UtdW5pcXVlLXJlZGlyZWN0cy10by5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvbG9hZGlu
Zy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NsZWFyLWluLW1lbW9yeS1hbmQtcGVyc2lzdGVudC1z
dG9yZS1vbmUtaG91ci5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvbG9hZGluZy9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzL2NsZWFyLWluLW1lbW9yeS1hbmQtcGVyc2lzdGVudC1zdG9yZS5odG1s
OgorICAgICAgICAqIGh0dHAvdGVzdHMvbG9hZGluZy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Bh
cnRpdGlvbmVkLWFuZC11bnBhcnRpdGlvbmVkLWNvb2tpZS13aXRoLXBhcnRpdGlvbmluZy10aW1l
b3V0Lmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9sb2FkaW5nL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3MvcGFydGl0aW9uZWQtY29va2llcy13aXRoLWFuZC13aXRob3V0LXVzZXItaW50ZXJhY3Rp
b24uaHRtbDoKKwogMjAxNy0wNS0zMCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+
CiAKICAgICAgICAgUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlIHNob3VsZCBub3Qgcm90YXRl
IG11dGVkIGZyYW1lcwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL3Jlc291
cmNlTG9hZFN0YXRpc3RpY3MvY2xhc3NpZnktYXMtbm9uLXByZXZhbGVudC1iYXNlZC1vbi1taXhl
ZC1zdGF0aXN0aWNzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9s
b2FkaW5nL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY2xhc3NpZnktYXMtbm9uLXByZXZhbGVudC1i
YXNlZC1vbi1taXhlZC1zdGF0aXN0aWNzLmh0bWwJKHJldmlzaW9uIDIxNzU2NCkKKysrIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NsYXNzaWZ5
LWFzLW5vbi1wcmV2YWxlbnQtYmFzZWQtb24tbWl4ZWQtc3RhdGlzdGljcy5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0xMiw3ICsxMiwyMCBAQAogICAgIGNvbnN0IHRvcEZyYW1lT3JpZ2luMSA9ICJo
dHRwOi8vMTI3LjAuMC4yOjgwMDAvdGVtcCI7CiAgICAgY29uc3QgdG9wRnJhbWVPcmlnaW4yID0g
Imh0dHA6Ly8xMjcuMC4wLjM6ODAwMC90ZW1wIjsKICAgICBjb25zdCB0b3BGcmFtZU9yaWdpbjMg
PSAiaHR0cDovLzEyNy4wLjAuNDo4MDAwL3RlbXAiOworCisgICAgZnVuY3Rpb24gY29tcGxldGVU
ZXN0KCkgeworICAgICAgICBpZiAodGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNv
dXJjZShzdGF0aXN0aWNzVXJsKSkKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoIkhvc3QgY2xhc3Np
ZmllZCBhcyBwcmV2YWxlbnQgcmVzb3VyY2UuIik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IHRlc3RQYXNzZWQoIkhvc3QgZGlkIG5vdCBnZXQgY2xhc3NpZmllZCBhcyBwcmV2YWxlbnQgcmVz
b3VyY2UuIik7CisKKyAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3Rl
bnRTdGF0ZSgpOworICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICB9CisKICAg
ICBmdW5jdGlvbiBydW5UZXN0UnVubmVyVGVzdCgpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRT
dGF0aXN0aWNzTm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZCh0cnVlKTsKKwog
ICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShzdGF0aXN0
aWNzVXJsLCBmYWxzZSk7CiAgICAgICAgIGlmICh0ZXN0UnVubmVyLmlzU3RhdGlzdGljc1ByZXZh
bGVudFJlc291cmNlKHN0YXRpc3RpY3NVcmwpKQogICAgICAgICAgICAgdGVzdEZhaWxlZCgiSG9z
dCBkaWQgbm90IGdldCBzZXQgYXMgbm9uLXByZXZhbGVudCByZXNvdXJjZS4iKTsKQEAgLTIxLDE1
ICszNCw5IEBACiAgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5k
ZXJUb3BGcmFtZU9yaWdpbihzdGF0aXN0aWNzVXJsLCB0b3BGcmFtZU9yaWdpbjIpOwogICAgICAg
ICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8oc3Rh
dGlzdGljc1VybCwgdG9wRnJhbWVPcmlnaW4zKTsKIAotICAgICAgICB0ZXN0UnVubmVyLnN0YXRp
c3RpY3NGaXJlRGF0YU1vZGlmaWNhdGlvbkhhbmRsZXIoKTsKLQotICAgICAgICBpZiAodGVzdFJ1
bm5lci5pc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShzdGF0aXN0aWNzVXJsKSkKLSAgICAg
ICAgICAgIHRlc3RGYWlsZWQoIkhvc3QgY2xhc3NpZmllZCBhcyBwcmV2YWxlbnQgcmVzb3VyY2Uu
Iik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRlc3RQYXNzZWQoIkhvc3QgZGlkIG5vdCBn
ZXQgY2xhc3NpZmllZCBhcyBwcmV2YWxlbnQgcmVzb3VyY2UuIik7CisgICAgICAgIHRlc3RSdW5u
ZXIuaW5zdGFsbFN0YXRpc3RpY3NEaWRTY2FuRGF0YVJlY29yZHNDYWxsYmFjayhjb21wbGV0ZVRl
c3QpOwogCi0gICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3Rh
dGUoKTsKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgIHRlc3RSdW5u
ZXIuc3RhdGlzdGljc0ZpcmVEYXRhTW9kaWZpY2F0aW9uSGFuZGxlcigpOwogICAgIH0KIAogICAg
IGlmIChkb2N1bWVudC5sb2NhdGlvbi5ob3N0ID09PSBob3N0VW5kZXJUZXN0ICYmIHdpbmRvdy50
ZXN0UnVubmVyICYmIHdpbmRvdy5pbnRlcm5hbHMpIHsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAv
dGVzdHMvbG9hZGluZy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NsYXNzaWZ5LWFzLW5vbi1wcmV2
YWxlbnQtYmFzZWQtb24tc3ViLWZyYW1lLXVuZGVyLXRvcC1mcmFtZS1vcmlnaW5zLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL3Jlc291cmNlTG9hZFN0
YXRpc3RpY3MvY2xhc3NpZnktYXMtbm9uLXByZXZhbGVudC1iYXNlZC1vbi1zdWItZnJhbWUtdW5k
ZXItdG9wLWZyYW1lLW9yaWdpbnMuaHRtbAkocmV2aXNpb24gMjE3NTY0KQorKysgTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9sb2FkaW5nL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY2xhc3NpZnktYXMt
bm9uLXByZXZhbGVudC1iYXNlZC1vbi1zdWItZnJhbWUtdW5kZXItdG9wLWZyYW1lLW9yaWdpbnMu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTIsNyArMTIsMjAgQEAKICAgICBjb25zdCB0b3BGcmFt
ZU9yaWdpbjEgPSAiaHR0cDovLzEyNy4wLjAuMjo4MDAwL3RlbXAiOwogICAgIGNvbnN0IHRvcEZy
YW1lT3JpZ2luMiA9ICJodHRwOi8vMTI3LjAuMC4zOjgwMDAvdGVtcCI7CiAgICAgY29uc3QgdG9w
RnJhbWVPcmlnaW4zID0gImh0dHA6Ly8xMjcuMC4wLjQ6ODAwMC90ZW1wIjsKKworICAgIGZ1bmN0
aW9uIGNvbXBsZXRlVGVzdCgpIHsKKyAgICAgICAgaWYgKHRlc3RSdW5uZXIuaXNTdGF0aXN0aWNz
UHJldmFsZW50UmVzb3VyY2Uoc3RhdGlzdGljc1VybCkpCisgICAgICAgICAgICB0ZXN0RmFpbGVk
KCJIb3N0IGNsYXNzaWZpZWQgYXMgcHJldmFsZW50IHJlc291cmNlLiIpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICB0ZXN0UGFzc2VkKCJIb3N0IGRpZCBub3QgZ2V0IGNsYXNzaWZpZWQgYXMg
cHJldmFsZW50IHJlc291cmNlLiIpOworCisgICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc1Jl
c2V0VG9Db25zaXN0ZW50U3RhdGUoKTsKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
CisgICAgfQorCiAgICAgZnVuY3Rpb24gcnVuVGVzdFJ1bm5lclRlc3QoKSB7CisgICAgICAgIHRl
c3RSdW5uZXIuc2V0U3RhdGlzdGljc05vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5u
ZWQodHJ1ZSk7CisKICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzUHJldmFsZW50UmVz
b3VyY2Uoc3RhdGlzdGljc1VybCwgZmFsc2UpOwogICAgICAgICBpZiAodGVzdFJ1bm5lci5pc1N0
YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShzdGF0aXN0aWNzVXJsKSkKICAgICAgICAgICAgIHRl
c3RGYWlsZWQoIkhvc3QgZGlkIG5vdCBnZXQgc2V0IGFzIG5vbi1wcmV2YWxlbnQgcmVzb3VyY2Uu
Iik7CkBAIC0yMSwxNSArMzQsMTAgQEAKICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNz
U3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luKHN0YXRpc3RpY3NVcmwsIHRvcEZyYW1lT3JpZ2lu
Mik7CiAgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1N1YmZyYW1lVW5kZXJUb3BGcmFt
ZU9yaWdpbihzdGF0aXN0aWNzVXJsLCB0b3BGcmFtZU9yaWdpbjMpOwogCi0gICAgICAgIHRlc3RS
dW5uZXIuc3RhdGlzdGljc0ZpcmVEYXRhTW9kaWZpY2F0aW9uSGFuZGxlcigpOwotCi0gICAgICAg
IGlmICh0ZXN0UnVubmVyLmlzU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKHN0YXRpc3RpY3NV
cmwpKQotICAgICAgICAgICAgdGVzdEZhaWxlZCgiSG9zdCBjbGFzc2lmaWVkIGFzIHByZXZhbGVu
dCByZXNvdXJjZS4iKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdGVzdFBhc3NlZCgiSG9z
dCBkaWQgbm90IGdldCBjbGFzc2lmaWVkIGFzIHByZXZhbGVudCByZXNvdXJjZS4iKTsKKyAgICAg
ICAgdGVzdFJ1bm5lci5pbnN0YWxsU3RhdGlzdGljc0RpZFNjYW5EYXRhUmVjb3Jkc0NhbGxiYWNr
KGNvbXBsZXRlVGVzdCk7CisgICAgICAgIHRlc3RSdW5uZXIuaW5zdGFsbFN0YXRpc3RpY3NEaWRN
b2RpZnlEYXRhUmVjb3Jkc0NhbGxiYWNrKGNvbXBsZXRlVGVzdCk7CiAKLSAgICAgICAgdGVzdFJ1
bm5lci5zdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSgpOwotICAgICAgICB0ZXN0UnVu
bmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzRmlyZURhdGFN
b2RpZmljYXRpb25IYW5kbGVyKCk7CiAgICAgfQogCiAgICAgaWYgKGRvY3VtZW50LmxvY2F0aW9u
Lmhvc3QgPT09IGhvc3RVbmRlclRlc3QgJiYgd2luZG93LnRlc3RSdW5uZXIgJiYgd2luZG93Lmlu
dGVybmFscykgewpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL3Jlc291cmNl
TG9hZFN0YXRpc3RpY3MvY2xhc3NpZnktYXMtbm9uLXByZXZhbGVudC1iYXNlZC1vbi1zdWJyZXNv
dXJjZS11bmRlci10b3AtZnJhbWUtb3JpZ2lucy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvbG9hZGluZy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NsYXNzaWZ5LWFz
LW5vbi1wcmV2YWxlbnQtYmFzZWQtb24tc3VicmVzb3VyY2UtdW5kZXItdG9wLWZyYW1lLW9yaWdp
bnMuaHRtbAkocmV2aXNpb24gMjE3NTY0KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2Fk
aW5nL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY2xhc3NpZnktYXMtbm9uLXByZXZhbGVudC1iYXNl
ZC1vbi1zdWJyZXNvdXJjZS11bmRlci10b3AtZnJhbWUtb3JpZ2lucy5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0xMSw3ICsxMSwyMCBAQAogICAgIGNvbnN0IHN0YXRpc3RpY3NVcmwgPSAiaHR0cDov
LyIgKyBob3N0VW5kZXJUZXN0ICsgIi90ZW1wIjsKICAgICBjb25zdCB0b3BGcmFtZU9yaWdpbjEg
PSAiaHR0cDovLzEyNy4wLjAuMjo4MDAwL3RlbXAiOwogICAgIGNvbnN0IHRvcEZyYW1lT3JpZ2lu
MiA9ICJodHRwOi8vMTI3LjAuMC4zOjgwMDAvdGVtcCI7CisKKyAgICBmdW5jdGlvbiBjb21wbGV0
ZVRlc3QoKSB7CisgICAgICAgIGlmICh0ZXN0UnVubmVyLmlzU3RhdGlzdGljc1ByZXZhbGVudFJl
c291cmNlKHN0YXRpc3RpY3NVcmwpKQorICAgICAgICAgICAgdGVzdEZhaWxlZCgiSG9zdCBjbGFz
c2lmaWVkIGFzIHByZXZhbGVudCByZXNvdXJjZS4iKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgdGVzdFBhc3NlZCgiSG9zdCBkaWQgbm90IGdldCBjbGFzc2lmaWVkIGFzIHByZXZhbGVudCBy
ZXNvdXJjZS4iKTsKKworICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NSZXNldFRvQ29uc2lz
dGVudFN0YXRlKCk7CisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgIH0KKwog
ICAgIGZ1bmN0aW9uIHJ1blRlc3RSdW5uZXJUZXN0KCkgeworICAgICAgICB0ZXN0UnVubmVyLnNl
dFN0YXRpc3RpY3NOb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkKHRydWUpOwor
IAogICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShzdGF0
aXN0aWNzVXJsLCBmYWxzZSk7CiAgICAgICAgIGlmICh0ZXN0UnVubmVyLmlzU3RhdGlzdGljc1By
ZXZhbGVudFJlc291cmNlKHN0YXRpc3RpY3NVcmwpKQogICAgICAgICAgICAgdGVzdEZhaWxlZCgi
SG9zdCBkaWQgbm90IGdldCBzZXQgYXMgbm9uLXByZXZhbGVudCByZXNvdXJjZS4iKTsKQEAgLTE5
LDE1ICszMiw5IEBACiAgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1N1YnJlc291cmNl
VW5kZXJUb3BGcmFtZU9yaWdpbihzdGF0aXN0aWNzVXJsLCB0b3BGcmFtZU9yaWdpbjEpOwogICAg
ICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmln
aW4oc3RhdGlzdGljc1VybCwgdG9wRnJhbWVPcmlnaW4yKTsKIAotICAgICAgICB0ZXN0UnVubmVy
LnN0YXRpc3RpY3NGaXJlRGF0YU1vZGlmaWNhdGlvbkhhbmRsZXIoKTsKKyAgICAgICAgdGVzdFJ1
bm5lci5pbnN0YWxsU3RhdGlzdGljc0RpZFNjYW5EYXRhUmVjb3Jkc0NhbGxiYWNrKGNvbXBsZXRl
VGVzdCk7CiAKLSAgICAgICAgaWYgKHRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzUHJldmFsZW50UmVz
b3VyY2Uoc3RhdGlzdGljc1VybCkpCi0gICAgICAgICAgICB0ZXN0RmFpbGVkKCJIb3N0IGNsYXNz
aWZpZWQgYXMgcHJldmFsZW50IHJlc291cmNlLiIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAg
ICB0ZXN0UGFzc2VkKCJIb3N0IGRpZCBub3QgZ2V0IGNsYXNzaWZpZWQgYXMgcHJldmFsZW50IHJl
c291cmNlLiIpOwotCi0gICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0
ZW50U3RhdGUoKTsKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgIHRl
c3RSdW5uZXIuc3RhdGlzdGljc0ZpcmVEYXRhTW9kaWZpY2F0aW9uSGFuZGxlcigpOwogICAgIH0K
IAogICAgIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ob3N0ID09PSBob3N0VW5kZXJUZXN0ICYmIHdp
bmRvdy50ZXN0UnVubmVyICYmIHdpbmRvdy5pbnRlcm5hbHMpIHsKSW5kZXg6IExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvbG9hZGluZy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NsYXNzaWZ5LWFzLW5v
bi1wcmV2YWxlbnQtYmFzZWQtb24tc3VicmVzb3VyY2UtdW5pcXVlLXJlZGlyZWN0cy10by5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzL2NsYXNzaWZ5LWFzLW5vbi1wcmV2YWxlbnQtYmFzZWQtb24tc3VicmVzb3Vy
Y2UtdW5pcXVlLXJlZGlyZWN0cy10by5odG1sCShyZXZpc2lvbiAyMTc1NjQpCisrKyBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbGFzc2lmeS1h
cy1ub24tcHJldmFsZW50LWJhc2VkLW9uLXN1YnJlc291cmNlLXVuaXF1ZS1yZWRpcmVjdHMtdG8u
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTEsMTYgKzExLDggQEAKICAgICBjb25zdCBzdGF0aXN0
aWNzVXJsID0gImh0dHA6Ly8iICsgaG9zdFVuZGVyVGVzdCArICIvdGVtcCI7CiAgICAgY29uc3Qg
dG9wRnJhbWVPcmlnaW4xID0gImh0dHA6Ly8xMjcuMC4wLjI6ODAwMC90ZW1wIjsKICAgICBjb25z
dCB0b3BGcmFtZU9yaWdpbjIgPSAiaHR0cDovLzEyNy4wLjAuMzo4MDAwL3RlbXAiOwotICAgIGZ1
bmN0aW9uIHJ1blRlc3RSdW5uZXJUZXN0KCkgewotICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRp
c3RpY3NQcmV2YWxlbnRSZXNvdXJjZShzdGF0aXN0aWNzVXJsLCBmYWxzZSk7Ci0gICAgICAgIGlm
ICh0ZXN0UnVubmVyLmlzU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKHN0YXRpc3RpY3NVcmwp
KQotICAgICAgICAgICAgdGVzdEZhaWxlZCgiSG9zdCBkaWQgbm90IGdldCBzZXQgYXMgbm9uLXBy
ZXZhbGVudCByZXNvdXJjZS4iKTsKLQotICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NT
dWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8oc3RhdGlzdGljc1VybCwgdG9wRnJhbWVPcmlnaW4x
KTsKLSAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzU3VicmVzb3VyY2VVbmlxdWVSZWRp
cmVjdFRvKHN0YXRpc3RpY3NVcmwsIHRvcEZyYW1lT3JpZ2luMik7Ci0KLSAgICAgICAgdGVzdFJ1
bm5lci5zdGF0aXN0aWNzRmlyZURhdGFNb2RpZmljYXRpb25IYW5kbGVyKCk7CiAKKyAgICBmdW5j
dGlvbiBjb21wbGV0ZVRlc3QoKSB7CiAgICAgICAgIGlmICh0ZXN0UnVubmVyLmlzU3RhdGlzdGlj
c1ByZXZhbGVudFJlc291cmNlKHN0YXRpc3RpY3NVcmwpKQogICAgICAgICAgICAgdGVzdEZhaWxl
ZCgiSG9zdCBjbGFzc2lmaWVkIGFzIHByZXZhbGVudCByZXNvdXJjZS4iKTsKICAgICAgICAgZWxz
ZQpAQCAtMzEsNiArMjMsMjEgQEAKICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAg
ICAgfQogCisgICAgZnVuY3Rpb24gcnVuVGVzdFJ1bm5lclRlc3QoKSB7CisgICAgICAgIHRlc3RS
dW5uZXIuc2V0U3RhdGlzdGljc05vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQo
dHJ1ZSk7CisgCisgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1ByZXZhbGVudFJlc291
cmNlKHN0YXRpc3RpY3NVcmwsIGZhbHNlKTsKKyAgICAgICAgaWYgKHRlc3RSdW5uZXIuaXNTdGF0
aXN0aWNzUHJldmFsZW50UmVzb3VyY2Uoc3RhdGlzdGljc1VybCkpCisgICAgICAgICAgICB0ZXN0
RmFpbGVkKCJIb3N0IGRpZCBub3QgZ2V0IHNldCBhcyBub24tcHJldmFsZW50IHJlc291cmNlLiIp
OworCisgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVlUmVk
aXJlY3RUbyhzdGF0aXN0aWNzVXJsLCB0b3BGcmFtZU9yaWdpbjEpOworICAgICAgICB0ZXN0UnVu
bmVyLnNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8oc3RhdGlzdGljc1Vy
bCwgdG9wRnJhbWVPcmlnaW4yKTsKKworICAgICAgICB0ZXN0UnVubmVyLmluc3RhbGxTdGF0aXN0
aWNzRGlkU2NhbkRhdGFSZWNvcmRzQ2FsbGJhY2soY29tcGxldGVUZXN0KTsKKworICAgICAgICB0
ZXN0UnVubmVyLnN0YXRpc3RpY3NGaXJlRGF0YU1vZGlmaWNhdGlvbkhhbmRsZXIoKTsKKyAgICB9
CisKICAgICBpZiAoZG9jdW1lbnQubG9jYXRpb24uaG9zdCA9PT0gaG9zdFVuZGVyVGVzdCAmJiB3
aW5kb3cudGVzdFJ1bm5lciAmJiB3aW5kb3cuaW50ZXJuYWxzKSB7CiAgICAgICAgIHRlc3RSdW5u
ZXIud2FpdFVudGlsRG9uZSgpOwogICAgICAgICBpbnRlcm5hbHMuc2V0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0VuYWJsZWQodHJ1ZSk7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRp
bmcvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbGFzc2lmeS1hcy1wcmV2YWxlbnQtYmFzZWQtb24t
bWl4ZWQtc3RhdGlzdGljcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvbG9hZGluZy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NsYXNzaWZ5LWFzLXByZXZhbGVudC1i
YXNlZC1vbi1taXhlZC1zdGF0aXN0aWNzLmh0bWwJKHJldmlzaW9uIDIxNzU2NCkKKysrIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NsYXNzaWZ5
LWFzLXByZXZhbGVudC1iYXNlZC1vbi1taXhlZC1zdGF0aXN0aWNzLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTEzLDcgKzEzLDIxIEBACiAgICAgY29uc3QgdG9wRnJhbWVPcmlnaW4yID0gImh0dHA6
Ly8xMjcuMC4wLjM6ODAwMC90ZW1wIjsKICAgICBjb25zdCB0b3BGcmFtZU9yaWdpbjMgPSAiaHR0
cDovLzEyNy4wLjAuNDo4MDAwL3RlbXAiOwogICAgIGNvbnN0IHRvcEZyYW1lT3JpZ2luNCA9ICJo
dHRwOi8vMTI3LjAuMC41OjgwMDAvdGVtcCI7CisKKyAgICBmdW5jdGlvbiBjb21wbGV0ZVRlc3Qo
KSB7CisgICAgICAgIGlmICghdGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJj
ZShzdGF0aXN0aWNzVXJsKSkKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoIkhvc3QgZGlkIG5vdCBn
ZXQgY2xhc3NpZmllZCBhcyBwcmV2YWxlbnQgcmVzb3VyY2UuIik7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIHRlc3RQYXNzZWQoIkhvc3QgY2xhc3NpZmllZCBhcyBwcmV2YWxlbnQgcmVzb3Vy
Y2UuIik7CisKKyAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRT
dGF0ZSgpOworICAgICAgICBpbnRlcm5hbHMuc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJs
ZWQoZmFsc2UpOworICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsgICAgICAgIAorICAg
IH0KKwogICAgIGZ1bmN0aW9uIHJ1blRlc3RSdW5uZXJUZXN0KCkgeworICAgICAgICB0ZXN0UnVu
bmVyLnNldFN0YXRpc3RpY3NOb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkKHRy
dWUpOworIAogICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJj
ZShzdGF0aXN0aWNzVXJsLCBmYWxzZSk7CiAgICAgICAgIGlmICh0ZXN0UnVubmVyLmlzU3RhdGlz
dGljc1ByZXZhbGVudFJlc291cmNlKHN0YXRpc3RpY3NVcmwpKQogICAgICAgICAgICAgdGVzdEZh
aWxlZCgiSG9zdCBkaWQgbm90IGdldCBzZXQgYXMgbm9uLXByZXZhbGVudCByZXNvdXJjZS4iKTsK
QEAgLTI4LDE2ICs0Miw5IEBACiAgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1N1YnJl
c291cmNlVW5pcXVlUmVkaXJlY3RUbyhzdGF0aXN0aWNzVXJsLCB0b3BGcmFtZU9yaWdpbjMpOwog
ICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0
VG8oc3RhdGlzdGljc1VybCwgdG9wRnJhbWVPcmlnaW4xKTsKIAotICAgICAgICB0ZXN0UnVubmVy
LnN0YXRpc3RpY3NGaXJlRGF0YU1vZGlmaWNhdGlvbkhhbmRsZXIoKTsKKyAgICAgICAgdGVzdFJ1
bm5lci5pbnN0YWxsU3RhdGlzdGljc0RpZFNjYW5EYXRhUmVjb3Jkc0NhbGxiYWNrKGNvbXBsZXRl
VGVzdCk7CiAKLSAgICAgICAgaWYgKCF0ZXN0UnVubmVyLmlzU3RhdGlzdGljc1ByZXZhbGVudFJl
c291cmNlKHN0YXRpc3RpY3NVcmwpKQotICAgICAgICAgICAgdGVzdEZhaWxlZCgiSG9zdCBkaWQg
bm90IGdldCBjbGFzc2lmaWVkIGFzIHByZXZhbGVudCByZXNvdXJjZS4iKTsKLSAgICAgICAgZWxz
ZQotICAgICAgICAgICAgdGVzdFBhc3NlZCgiSG9zdCBjbGFzc2lmaWVkIGFzIHByZXZhbGVudCBy
ZXNvdXJjZS4iKTsKLQotICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NSZXNldFRvQ29uc2lz
dGVudFN0YXRlKCk7Ci0gICAgICAgIGludGVybmFscy5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RW5hYmxlZChmYWxzZSk7Ci0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAg
ICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NGaXJlRGF0YU1vZGlmaWNhdGlvbkhhbmRsZXIoKTsKICAg
ICB9CiAKICAgICBpZiAoZG9jdW1lbnQubG9jYXRpb24uaG9zdCA9PT0gaG9zdFVuZGVyVGVzdCAm
JiB3aW5kb3cudGVzdFJ1bm5lciAmJiB3aW5kb3cuaW50ZXJuYWxzKSB7CkluZGV4OiBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbGFzc2lmeS1h
cy1wcmV2YWxlbnQtYmFzZWQtb24tc3ViLWZyYW1lLXVuZGVyLXRvcC1mcmFtZS1vcmlnaW5zLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL3Jlc291cmNl
TG9hZFN0YXRpc3RpY3MvY2xhc3NpZnktYXMtcHJldmFsZW50LWJhc2VkLW9uLXN1Yi1mcmFtZS11
bmRlci10b3AtZnJhbWUtb3JpZ2lucy5odG1sCShyZXZpc2lvbiAyMTc1NjQpCisrKyBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbGFzc2lmeS1h
cy1wcmV2YWxlbnQtYmFzZWQtb24tc3ViLWZyYW1lLXVuZGVyLXRvcC1mcmFtZS1vcmlnaW5zLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTEzLDcgKzEzLDIxIEBACiAgICAgY29uc3QgdG9wRnJhbWVP
cmlnaW4yID0gImh0dHA6Ly8xMjcuMC4wLjM6ODAwMC90ZW1wIjsKICAgICBjb25zdCB0b3BGcmFt
ZU9yaWdpbjMgPSAiaHR0cDovLzEyNy4wLjAuNDo4MDAwL3RlbXAiOwogICAgIGNvbnN0IHRvcEZy
YW1lT3JpZ2luNCA9ICJodHRwOi8vMTI3LjAuMC41OjgwMDAvdGVtcCI7CisKKyAgICBmdW5jdGlv
biBjb21wbGV0ZVRlc3QoKSB7CisgICAgICAgIGlmICghdGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NQ
cmV2YWxlbnRSZXNvdXJjZShzdGF0aXN0aWNzVXJsKSkKKyAgICAgICAgICAgIHRlc3RGYWlsZWQo
Ikhvc3QgZGlkIG5vdCBnZXQgY2xhc3NpZmllZCBhcyBwcmV2YWxlbnQgcmVzb3VyY2UuIik7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRlc3RQYXNzZWQoIkhvc3QgY2xhc3NpZmllZCBhcyBw
cmV2YWxlbnQgcmVzb3VyY2UuIik7CisKKyAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzUmVz
ZXRUb0NvbnNpc3RlbnRTdGF0ZSgpOworICAgICAgICBpbnRlcm5hbHMuc2V0UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0VuYWJsZWQoZmFsc2UpOworICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKKyAgICB9CisKICAgICBmdW5jdGlvbiBydW5UZXN0UnVubmVyVGVzdCgpIHsKKyAgICAgICAg
dGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzTm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nh
bm5lZCh0cnVlKTsKKwogICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NQcmV2YWxlbnRS
ZXNvdXJjZShzdGF0aXN0aWNzVXJsLCBmYWxzZSk7CiAgICAgICAgIGlmICh0ZXN0UnVubmVyLmlz
U3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKHN0YXRpc3RpY3NVcmwpKQogICAgICAgICAgICAg
dGVzdEZhaWxlZCgiSG9zdCBkaWQgbm90IGdldCBzZXQgYXMgbm9uLXByZXZhbGVudCByZXNvdXJj
ZS4iKTsKQEAgLTIzLDE2ICszNyw5IEBACiAgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGlj
c1N1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbihzdGF0aXN0aWNzVXJsLCB0b3BGcmFtZU9yaWdp
bjMpOwogICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NTdWJmcmFtZVVuZGVyVG9wRnJh
bWVPcmlnaW4oc3RhdGlzdGljc1VybCwgdG9wRnJhbWVPcmlnaW40KTsKIAotICAgICAgICB0ZXN0
UnVubmVyLnN0YXRpc3RpY3NGaXJlRGF0YU1vZGlmaWNhdGlvbkhhbmRsZXIoKTsKKyAgICAgICAg
dGVzdFJ1bm5lci5pbnN0YWxsU3RhdGlzdGljc0RpZFNjYW5EYXRhUmVjb3Jkc0NhbGxiYWNrKGNv
bXBsZXRlVGVzdCk7CiAKLSAgICAgICAgaWYgKCF0ZXN0UnVubmVyLmlzU3RhdGlzdGljc1ByZXZh
bGVudFJlc291cmNlKHN0YXRpc3RpY3NVcmwpKQotICAgICAgICAgICAgdGVzdEZhaWxlZCgiSG9z
dCBkaWQgbm90IGdldCBjbGFzc2lmaWVkIGFzIHByZXZhbGVudCByZXNvdXJjZS4iKTsKLSAgICAg
ICAgZWxzZQotICAgICAgICAgICAgdGVzdFBhc3NlZCgiSG9zdCBjbGFzc2lmaWVkIGFzIHByZXZh
bGVudCByZXNvdXJjZS4iKTsKLQotICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NSZXNldFRv
Q29uc2lzdGVudFN0YXRlKCk7Ci0gICAgICAgIGludGVybmFscy5zZXRSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRW5hYmxlZChmYWxzZSk7Ci0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwor
ICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NGaXJlRGF0YU1vZGlmaWNhdGlvbkhhbmRsZXIo
KTsKICAgICB9CiAKICAgICBpZiAoZG9jdW1lbnQubG9jYXRpb24uaG9zdCA9PT0gaG9zdFVuZGVy
VGVzdCAmJiB3aW5kb3cudGVzdFJ1bm5lciAmJiB3aW5kb3cuaW50ZXJuYWxzKSB7CkluZGV4OiBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbGFz
c2lmeS1hcy1wcmV2YWxlbnQtYmFzZWQtb24tc3VicmVzb3VyY2UtdW5kZXItdG9wLWZyYW1lLW9y
aWdpbnMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcv
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbGFzc2lmeS1hcy1wcmV2YWxlbnQtYmFzZWQtb24tc3Vi
cmVzb3VyY2UtdW5kZXItdG9wLWZyYW1lLW9yaWdpbnMuaHRtbAkocmV2aXNpb24gMjE3NTY0KQor
KysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mv
Y2xhc3NpZnktYXMtcHJldmFsZW50LWJhc2VkLW9uLXN1YnJlc291cmNlLXVuZGVyLXRvcC1mcmFt
ZS1vcmlnaW5zLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEzLDcgKzEzLDIxIEBACiAgICAgY29u
c3QgdG9wRnJhbWVPcmlnaW4yID0gImh0dHA6Ly8xMjcuMC4wLjM6ODAwMC90ZW1wIjsKICAgICBj
b25zdCB0b3BGcmFtZU9yaWdpbjMgPSAiaHR0cDovLzEyNy4wLjAuNDo4MDAwL3RlbXAiOwogICAg
IGNvbnN0IHRvcEZyYW1lT3JpZ2luNCA9ICJodHRwOi8vMTI3LjAuMC41OjgwMDAvdGVtcCI7CisK
KyAgICBmdW5jdGlvbiBjb21wbGV0ZVRlc3QoKSB7CisgICAgICAgIGlmICghdGVzdFJ1bm5lci5p
c1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShzdGF0aXN0aWNzVXJsKSkKKyAgICAgICAgICAg
IHRlc3RGYWlsZWQoIkhvc3QgZGlkIG5vdCBnZXQgY2xhc3NpZmllZCBhcyBwcmV2YWxlbnQgcmVz
b3VyY2UuIik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRlc3RQYXNzZWQoIkhvc3QgY2xh
c3NpZmllZCBhcyBwcmV2YWxlbnQgcmVzb3VyY2UuIik7CisKKyAgICAgICAgdGVzdFJ1bm5lci5z
dGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSgpOworICAgICAgICBpbnRlcm5hbHMuc2V0
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoZmFsc2UpOworICAgICAgICB0ZXN0UnVubmVy
Lm5vdGlmeURvbmUoKTsKKyAgICB9CisKICAgICBmdW5jdGlvbiBydW5UZXN0UnVubmVyVGVzdCgp
IHsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzTm90aWZ5UGFnZXNXaGVuRGF0YVJl
Y29yZHNXZXJlU2Nhbm5lZCh0cnVlKTsKKyAKICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0
aWNzUHJldmFsZW50UmVzb3VyY2Uoc3RhdGlzdGljc1VybCwgZmFsc2UpOwogICAgICAgICBpZiAo
dGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShzdGF0aXN0aWNzVXJsKSkK
ICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkhvc3QgZGlkIG5vdCBnZXQgc2V0IGFzIG5vbi1wcmV2
YWxlbnQgcmVzb3VyY2UuIik7CkBAIC0yMywxNiArMzcsOSBAQAogICAgICAgICB0ZXN0UnVubmVy
LnNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW4oc3RhdGlzdGljc1Vy
bCwgdG9wRnJhbWVPcmlnaW4zKTsKICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzU3Vi
cmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luKHN0YXRpc3RpY3NVcmwsIHRvcEZyYW1lT3JpZ2lu
NCk7CiAKLSAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzRmlyZURhdGFNb2RpZmljYXRpb25I
YW5kbGVyKCk7Ci0KLSAgICAgICAgaWYgKCF0ZXN0UnVubmVyLmlzU3RhdGlzdGljc1ByZXZhbGVu
dFJlc291cmNlKHN0YXRpc3RpY3NVcmwpKQotICAgICAgICAgICAgdGVzdEZhaWxlZCgiSG9zdCBk
aWQgbm90IGdldCBjbGFzc2lmaWVkIGFzIHByZXZhbGVudCByZXNvdXJjZS4iKTsKLSAgICAgICAg
ZWxzZQotICAgICAgICAgICAgdGVzdFBhc3NlZCgiSG9zdCBjbGFzc2lmaWVkIGFzIHByZXZhbGVu
dCByZXNvdXJjZS4iKTsKKyAgICAgICAgdGVzdFJ1bm5lci5pbnN0YWxsU3RhdGlzdGljc0RpZFNj
YW5EYXRhUmVjb3Jkc0NhbGxiYWNrKGNvbXBsZXRlVGVzdCk7CiAKLSAgICAgICAgdGVzdFJ1bm5l
ci5zdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSgpOwotICAgICAgICBpbnRlcm5hbHMu
c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoZmFsc2UpOwotICAgICAgICB0ZXN0UnVu
bmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzRmlyZURhdGFN
b2RpZmljYXRpb25IYW5kbGVyKCk7CiAgICAgfQogCiAgICAgaWYgKGRvY3VtZW50LmxvY2F0aW9u
Lmhvc3QgPT09IGhvc3RVbmRlclRlc3QgJiYgd2luZG93LnRlc3RSdW5uZXIgJiYgd2luZG93Lmlu
dGVybmFscykgewpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL3Jlc291cmNl
TG9hZFN0YXRpc3RpY3MvY2xhc3NpZnktYXMtcHJldmFsZW50LWJhc2VkLW9uLXN1YnJlc291cmNl
LXVuaXF1ZS1yZWRpcmVjdHMtdG8uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2xvYWRpbmcvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbGFzc2lmeS1hcy1wcmV2YWxl
bnQtYmFzZWQtb24tc3VicmVzb3VyY2UtdW5pcXVlLXJlZGlyZWN0cy10by5odG1sCShyZXZpc2lv
biAyMTc1NjQpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy9jbGFzc2lmeS1hcy1wcmV2YWxlbnQtYmFzZWQtb24tc3VicmVzb3VyY2UtdW5p
cXVlLXJlZGlyZWN0cy10by5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMyw3ICsxMywyMSBAQAog
ICAgIGNvbnN0IHRvcEZyYW1lT3JpZ2luMiA9ICJodHRwOi8vMTI3LjAuMC4zOjgwMDAvdGVtcCI7
CiAgICAgY29uc3QgdG9wRnJhbWVPcmlnaW4zID0gImh0dHA6Ly8xMjcuMC4wLjQ6ODAwMC90ZW1w
IjsKICAgICBjb25zdCB0b3BGcmFtZU9yaWdpbjQgPSAiaHR0cDovLzEyNy4wLjAuNTo4MDAwL3Rl
bXAiOworCisgICAgZnVuY3Rpb24gY29tcGxldGVUZXN0KCkgeworICAgICAgICBpZiAoIXRlc3RS
dW5uZXIuaXNTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2Uoc3RhdGlzdGljc1VybCkpCisgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJIb3N0IGRpZCBub3QgZ2V0IGNsYXNzaWZpZWQgYXMgcHJldmFs
ZW50IHJlc291cmNlLiIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB0ZXN0UGFzc2VkKCJI
b3N0IGNsYXNzaWZpZWQgYXMgcHJldmFsZW50IHJlc291cmNlLiIpOworCisgICAgICAgIHRlc3RS
dW5uZXIuc3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUoKTsKKyAgICAgICAgaW50ZXJu
YWxzLnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGZhbHNlKTsKKyAgICAgICAgdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgfQorCiAgICAgZnVuY3Rpb24gcnVuVGVzdFJ1bm5l
clRlc3QoKSB7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc05vdGlmeVBhZ2VzV2hl
bkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQodHJ1ZSk7CisgCiAgICAgICAgIHRlc3RSdW5uZXIuc2V0
U3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKHN0YXRpc3RpY3NVcmwsIGZhbHNlKTsKICAgICAg
ICAgaWYgKHRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2Uoc3RhdGlzdGlj
c1VybCkpCiAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJIb3N0IGRpZCBub3QgZ2V0IHNldCBhcyBu
b24tcHJldmFsZW50IHJlc291cmNlLiIpOwpAQCAtMjMsMTYgKzM3LDkgQEAKICAgICAgICAgdGVz
dFJ1bm5lci5zZXRTdGF0aXN0aWNzU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdFRvKHN0YXRpc3Rp
Y3NVcmwsIHRvcEZyYW1lT3JpZ2luMyk7CiAgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGlj
c1N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyhzdGF0aXN0aWNzVXJsLCB0b3BGcmFtZU9yaWdp
bjQpOwogCi0gICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc0ZpcmVEYXRhTW9kaWZpY2F0aW9u
SGFuZGxlcigpOwotCi0gICAgICAgIGlmICghdGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NQcmV2YWxl
bnRSZXNvdXJjZShzdGF0aXN0aWNzVXJsKSkKLSAgICAgICAgICAgIHRlc3RGYWlsZWQoIkhvc3Qg
ZGlkIG5vdCBnZXQgY2xhc3NpZmllZCBhcyBwcmV2YWxlbnQgcmVzb3VyY2UuIik7Ci0gICAgICAg
IGVsc2UKLSAgICAgICAgICAgIHRlc3RQYXNzZWQoIkhvc3QgY2xhc3NpZmllZCBhcyBwcmV2YWxl
bnQgcmVzb3VyY2UuIik7CisgICAgICAgIHRlc3RSdW5uZXIuaW5zdGFsbFN0YXRpc3RpY3NEaWRT
Y2FuRGF0YVJlY29yZHNDYWxsYmFjayhjb21wbGV0ZVRlc3QpOwogCi0gICAgICAgIHRlc3RSdW5u
ZXIuc3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUoKTsKLSAgICAgICAgaW50ZXJuYWxz
LnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGZhbHNlKTsKLSAgICAgICAgdGVzdFJ1
bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc0ZpcmVEYXRh
TW9kaWZpY2F0aW9uSGFuZGxlcigpOwogICAgIH0KIAogICAgIGlmIChkb2N1bWVudC5sb2NhdGlv
bi5ob3N0ID09PSBob3N0VW5kZXJUZXN0ICYmIHdpbmRvdy50ZXN0UnVubmVyICYmIHdpbmRvdy5p
bnRlcm5hbHMpIHsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzL2NsZWFyLWluLW1lbW9yeS1hbmQtcGVyc2lzdGVudC1zdG9yZS1vbmUt
aG91ci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NsZWFyLWluLW1lbW9yeS1hbmQtcGVyc2lzdGVudC1zdG9y
ZS1vbmUtaG91ci5odG1sCShyZXZpc2lvbiAyMTc1NjQpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2xvYWRpbmcvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbGVhci1pbi1tZW1vcnktYW5kLXBl
cnNpc3RlbnQtc3RvcmUtb25lLWhvdXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTIsNyArMTIs
MzQgQEAKICAgICBjb25zdCB0b3BGcmFtZU9yaWdpbjEgPSAiaHR0cDovLzEyNy4wLjAuMjo4MDAw
L3RlbXAiOwogICAgIGNvbnN0IHRvcEZyYW1lT3JpZ2luMiA9ICJodHRwOi8vMTI3LjAuMC4zOjgw
MDAvdGVtcCI7CiAgICAgY29uc3QgdG9wRnJhbWVPcmlnaW4zID0gImh0dHA6Ly8xMjcuMC4wLjQ6
ODAwMC90ZW1wIjsKKworICAgIGZ1bmN0aW9uIGNvbXBsZXRlVGVzdCgpIHsKKyAgICAgICAgaWYg
KHRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2Uoc3RhdGlzdGljc1VybCkp
CisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJIb3N0IGlzIHN0aWxsIGEgcHJldmFsZW50IHJlc291
cmNlIGFmdGVyIHRoZSBzdG9yZSB3YXMgY2xlYXJlZC4iKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgdGVzdFBhc3NlZCgiSG9zdCBpcyBubyBsb25nZXIgYSBwcmV2YWxlbnQgcmVzb3VyY2Ug
YWZ0ZXIgdGhlIHN0b3JlIHdhcyBjbGVhcmVkLiIpOworCisgICAgICAgIHRlc3RSdW5uZXIuc3Rh
dGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUoKTsKKyAgICAgICAgaW50ZXJuYWxzLnNldFJl
c291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGZhbHNlKTsKKyAgICAgICAgdGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gdGVzdFN0ZXAyKCkgeworICAgICAg
ICBpZiAodGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShzdGF0aXN0aWNz
VXJsKSkKKyAgICAgICAgICAgIHRlc3RQYXNzZWQoIkhvc3QgY2xhc3NpZmllZCBhcyBwcmV2YWxl
bnQgcmVzb3VyY2UuIik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoIkhv
c3QgZGlkIG5vdCBnZXQgY2xhc3NpZmllZCBhcyBwcmV2YWxlbnQgcmVzb3VyY2UuIik7CisKKyAg
ICAgICAgdGVzdFJ1bm5lci5jbGVhclRlc3RSdW5uZXJDYWxsYmFja3MoKTsKKyAgICAgICAgdGVz
dFJ1bm5lci5pbnN0YWxsU3RhdGlzdGljc0RpZFNjYW5EYXRhUmVjb3Jkc0NhbGxiYWNrKGNvbXBs
ZXRlVGVzdCk7CisgICAgICAgIHRlc3RSdW5uZXIuaW5zdGFsbFN0YXRpc3RpY3NEaWRNb2RpZnlE
YXRhUmVjb3Jkc0NhbGxiYWNrKGNvbXBsZXRlVGVzdCk7CisKKyAgICAgICAgdGVzdFJ1bm5lci5z
dGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZU1vZGlmaWVkU2luY2VIb3Vy
cygxKTsKKyAgICB9CisKICAgICBmdW5jdGlvbiBydW5UZXN0UnVubmVyVGVzdCgpIHsKKyAgICAg
ICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzTm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJl
U2Nhbm5lZCh0cnVlKTsKKwogICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NQcmV2YWxl
bnRSZXNvdXJjZShzdGF0aXN0aWNzVXJsLCBmYWxzZSk7CiAgICAgICAgIGlmICh0ZXN0UnVubmVy
LmlzU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKHN0YXRpc3RpY3NVcmwpKQogICAgICAgICAg
ICAgdGVzdEZhaWxlZCgiSG9zdCBkaWQgbm90IGdldCBzZXQgYXMgbm9uLXByZXZhbGVudCByZXNv
dXJjZS4iKTsKQEAgLTI1LDIzICs1MiwxMCBAQAogICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRp
c3RpY3NTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8oc3RhdGlzdGljc1VybCwgdG9wRnJhbWVP
cmlnaW4zKTsKICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzU3VicmVzb3VyY2VVbmRl
clRvcEZyYW1lT3JpZ2luKHN0YXRpc3RpY3NVcmwsIHRvcEZyYW1lT3JpZ2luMyk7CiAKLSAgICAg
ICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzRmlyZURhdGFNb2RpZmljYXRpb25IYW5kbGVyKCk7Ci0K
LSAgICAgICAgaWYgKHRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2Uoc3Rh
dGlzdGljc1VybCkpCi0gICAgICAgICAgICB0ZXN0UGFzc2VkKCJIb3N0IGNsYXNzaWZpZWQgYXMg
cHJldmFsZW50IHJlc291cmNlLiIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0ZXN0RmFp
bGVkKCJIb3N0IGRpZCBub3QgZ2V0IGNsYXNzaWZpZWQgYXMgcHJldmFsZW50IHJlc291cmNlLiIp
OwotCi0gICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc0NsZWFySW5NZW1vcnlBbmRQZXJzaXN0
ZW50U3RvcmVNb2RpZmllZFNpbmNlSG91cnMoMSk7CisgICAgICAgIHRlc3RSdW5uZXIuaW5zdGFs
bFN0YXRpc3RpY3NEaWRTY2FuRGF0YVJlY29yZHNDYWxsYmFjayh0ZXN0U3RlcDIpOworICAgICAg
ICB0ZXN0UnVubmVyLmluc3RhbGxTdGF0aXN0aWNzRGlkTW9kaWZ5RGF0YVJlY29yZHNDYWxsYmFj
ayh0ZXN0U3RlcDIpOwogCi0gICAgICAgIGlmICh0ZXN0UnVubmVyLmlzU3RhdGlzdGljc1ByZXZh
bGVudFJlc291cmNlKHN0YXRpc3RpY3NVcmwpKQotICAgICAgICAgICAgdGVzdEZhaWxlZCgiSG9z
dCBpcyBzdGlsbCBhIHByZXZhbGVudCByZXNvdXJjZSBhZnRlciB0aGUgc3RvcmUgd2FzIGNsZWFy
ZWQuIik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRlc3RQYXNzZWQoIkhvc3QgaXMgbm8g
bG9uZ2VyIGEgcHJldmFsZW50IHJlc291cmNlIGFmdGVyIHRoZSBzdG9yZSB3YXMgY2xlYXJlZC4i
KTsKLQotICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRl
KCk7Ci0gICAgICAgIGludGVybmFscy5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChm
YWxzZSk7Ci0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICB0ZXN0UnVu
bmVyLnN0YXRpc3RpY3NGaXJlRGF0YU1vZGlmaWNhdGlvbkhhbmRsZXIoKTsKICAgICB9CiAKICAg
ICBpZiAoZG9jdW1lbnQubG9jYXRpb24uaG9zdCA9PT0gaG9zdFVuZGVyVGVzdCAmJiB3aW5kb3cu
dGVzdFJ1bm5lciAmJiB3aW5kb3cuaW50ZXJuYWxzKSB7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2xvYWRpbmcvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbGVhci1pbi1tZW1vcnktYW5k
LXBlcnNpc3RlbnQtc3RvcmUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2xvYWRpbmcvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbGVhci1pbi1tZW1vcnktYW5kLXBl
cnNpc3RlbnQtc3RvcmUuaHRtbAkocmV2aXNpb24gMjE3NTY0KQorKysgTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9sb2FkaW5nL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY2xlYXItaW4tbWVtb3J5LWFu
ZC1wZXJzaXN0ZW50LXN0b3JlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEyLDI4ICsxMiwyMSBA
QAogICAgIGNvbnN0IHRvcEZyYW1lT3JpZ2luMSA9ICJodHRwOi8vMTI3LjAuMC4yOjgwMDAvdGVt
cCI7CiAgICAgY29uc3QgdG9wRnJhbWVPcmlnaW4yID0gImh0dHA6Ly8xMjcuMC4wLjM6ODAwMC90
ZW1wIjsKICAgICBjb25zdCB0b3BGcmFtZU9yaWdpbjMgPSAiaHR0cDovLzEyNy4wLjAuNDo4MDAw
L3RlbXAiOwotICAgIGZ1bmN0aW9uIHJ1blRlc3RSdW5uZXJUZXN0KCkgewotICAgICAgICB0ZXN0
UnVubmVyLnNldFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShzdGF0aXN0aWNzVXJsLCBmYWxz
ZSk7Ci0gICAgICAgIGlmICh0ZXN0UnVubmVyLmlzU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNl
KHN0YXRpc3RpY3NVcmwpKQotICAgICAgICAgICAgdGVzdEZhaWxlZCgiSG9zdCBkaWQgbm90IGdl
dCBzZXQgYXMgbm9uLXByZXZhbGVudCByZXNvdXJjZS4iKTsKLQotICAgICAgICB0ZXN0UnVubmVy
LnNldFN0YXRpc3RpY3NTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW4oc3RhdGlzdGljc1VybCwg
dG9wRnJhbWVPcmlnaW4xKTsKLSAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzU3VicmVz
b3VyY2VVbmlxdWVSZWRpcmVjdFRvKHN0YXRpc3RpY3NVcmwsIHRvcEZyYW1lT3JpZ2luMSk7Ci0g
ICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9y
aWdpbihzdGF0aXN0aWNzVXJsLCB0b3BGcmFtZU9yaWdpbjEpOwotICAgICAgICB0ZXN0UnVubmVy
LnNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW4oc3RhdGlzdGljc1Vy
bCwgdG9wRnJhbWVPcmlnaW4yKTsKLSAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzU3Vi
ZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luKHN0YXRpc3RpY3NVcmwsIHRvcEZyYW1lT3JpZ2luMik7
Ci0gICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVlUmVkaXJl
Y3RUbyhzdGF0aXN0aWNzVXJsLCB0b3BGcmFtZU9yaWdpbjMpOwotICAgICAgICB0ZXN0UnVubmVy
LnNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW4oc3RhdGlzdGljc1Vy
bCwgdG9wRnJhbWVPcmlnaW4zKTsKLQotICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NGaXJl
RGF0YU1vZGlmaWNhdGlvbkhhbmRsZXIoKTsKIAorICAgIGZ1bmN0aW9uIHRlc3RTdGVwMigpIHsK
ICAgICAgICAgaWYgKHRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2Uoc3Rh
dGlzdGljc1VybCkpCiAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJIb3N0IGNsYXNzaWZpZWQgYXMg
cHJldmFsZW50IHJlc291cmNlLiIpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICB0ZXN0RmFp
bGVkKCJIb3N0IGRpZCBub3QgZ2V0IGNsYXNzaWZpZWQgYXMgcHJldmFsZW50IHJlc291cmNlLiIp
OwogCisgICAgICAgIHRlc3RSdW5uZXIuY2xlYXJUZXN0UnVubmVyQ2FsbGJhY2tzKCk7CisgICAg
ICAgIHRlc3RSdW5uZXIuaW5zdGFsbFN0YXRpc3RpY3NEaWRNb2RpZnlEYXRhUmVjb3Jkc0NhbGxi
YWNrKGNvbXBsZXRlVGVzdCk7CisgICAgICAgIHRlc3RSdW5uZXIuaW5zdGFsbFN0YXRpc3RpY3NE
aWRTY2FuRGF0YVJlY29yZHNDYWxsYmFjayhjb21wbGV0ZVRlc3QpOworCiAgICAgICAgIHRlc3RS
dW5uZXIuc3RhdGlzdGljc0NsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmUoKTsKKyAgICB9
CiAKKyAgICBmdW5jdGlvbiBjb21wbGV0ZVRlc3QoKSB7CiAgICAgICAgIGlmICh0ZXN0UnVubmVy
LmlzU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKHN0YXRpc3RpY3NVcmwpKQogICAgICAgICAg
ICAgdGVzdEZhaWxlZCgiSG9zdCBpcyBzdGlsbCBhIHByZXZhbGVudCByZXNvdXJjZSBhZnRlciB0
aGUgc3RvcmUgd2FzIGNsZWFyZWQuIik7CiAgICAgICAgIGVsc2UKQEAgLTQxLDcgKzM0LDI4IEBA
CiAKICAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSgp
OwogICAgICAgICBpbnRlcm5hbHMuc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoZmFs
c2UpOwotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgdGVzdFJ1bm5l
ci5ub3RpZnlEb25lKCk7ICAgICAgICAKKyAgICB9CisKKyAgICBmdW5jdGlvbiBydW5UZXN0UnVu
bmVyVGVzdCgpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzTm90aWZ5UGFnZXNX
aGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZCh0cnVlKTsKKworICAgICAgICB0ZXN0UnVubmVyLnNl
dFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShzdGF0aXN0aWNzVXJsLCBmYWxzZSk7CisgICAg
ICAgIGlmICh0ZXN0UnVubmVyLmlzU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKHN0YXRpc3Rp
Y3NVcmwpKQorICAgICAgICAgICAgdGVzdEZhaWxlZCgiSG9zdCBkaWQgbm90IGdldCBzZXQgYXMg
bm9uLXByZXZhbGVudCByZXNvdXJjZS4iKTsKKworICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRp
c3RpY3NTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW4oc3RhdGlzdGljc1VybCwgdG9wRnJhbWVP
cmlnaW4xKTsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzU3VicmVzb3VyY2VVbmlx
dWVSZWRpcmVjdFRvKHN0YXRpc3RpY3NVcmwsIHRvcEZyYW1lT3JpZ2luMSk7CisgICAgICAgIHRl
c3RSdW5uZXIuc2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbihzdGF0
aXN0aWNzVXJsLCB0b3BGcmFtZU9yaWdpbjEpOworICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRp
c3RpY3NTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW4oc3RhdGlzdGljc1VybCwgdG9wRnJh
bWVPcmlnaW4yKTsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzU3ViZnJhbWVVbmRl
clRvcEZyYW1lT3JpZ2luKHN0YXRpc3RpY3NVcmwsIHRvcEZyYW1lT3JpZ2luMik7CisgICAgICAg
IHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyhzdGF0
aXN0aWNzVXJsLCB0b3BGcmFtZU9yaWdpbjMpOworICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRp
c3RpY3NTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW4oc3RhdGlzdGljc1VybCwgdG9wRnJh
bWVPcmlnaW4zKTsKKworICAgICAgICB0ZXN0UnVubmVyLmluc3RhbGxTdGF0aXN0aWNzRGlkU2Nh
bkRhdGFSZWNvcmRzQ2FsbGJhY2sodGVzdFN0ZXAyKTsKKyAgICAgICAgdGVzdFJ1bm5lci5pbnN0
YWxsU3RhdGlzdGljc0RpZE1vZGlmeURhdGFSZWNvcmRzQ2FsbGJhY2sodGVzdFN0ZXAyKTsKKwor
ICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NGaXJlRGF0YU1vZGlmaWNhdGlvbkhhbmRsZXIo
KTsKICAgICB9CiAKICAgICBpZiAoZG9jdW1lbnQubG9jYXRpb24uaG9zdCA9PT0gaG9zdFVuZGVy
VGVzdCAmJiB3aW5kb3cudGVzdFJ1bm5lciAmJiB3aW5kb3cuaW50ZXJuYWxzKSB7CkluZGV4OiBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9wYXJ0
aXRpb25lZC1hbmQtdW5wYXJ0aXRpb25lZC1jb29raWUtd2l0aC1wYXJ0aXRpb25pbmctdGltZW91
dC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzL3BhcnRpdGlvbmVkLWFuZC11bnBhcnRpdGlvbmVkLWNvb2tpZS13
aXRoLXBhcnRpdGlvbmluZy10aW1lb3V0Lmh0bWwJKHJldmlzaW9uIDIxNzU2NCkKKysrIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3BhcnRpdGlv
bmVkLWFuZC11bnBhcnRpdGlvbmVkLWNvb2tpZS13aXRoLXBhcnRpdGlvbmluZy10aW1lb3V0Lmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTE4LDkgKzE4LDkgQEAKICAgICBjb25zdCBzdWJQYXRoVG9H
ZXRDb29raWVzID0gIi9nZXQtY29va2llcy5waHA/bmFtZTE9IiArIGZpcnN0UGFydHlDb29raWVO
YW1lICsgIiZuYW1lMj0iICsgdGhpcmRQYXJ0eUNvb2tpZU5hbWU7CiAKICAgICBmdW5jdGlvbiBz
ZXRFbmFibGVGZWF0dXJlKGVuYWJsZSkgewotICAgICAgICBpZiAoIWVuYWJsZSkgeworICAgICAg
ICBpZiAoIWVuYWJsZSkKICAgICAgICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc1Jlc2V0VG9D
b25zaXN0ZW50U3RhdGUoKTsKLSAgICAgICAgfQorICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRp
c3RpY3NOb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkKGVuYWJsZSk7CiAgICAg
ICAgIGludGVybmFscy5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChlbmFibGUpOwog
ICAgICAgICB0ZXN0UnVubmVyLnNldENvb2tpZVN0b3JhZ2VQYXJ0aXRpb25pbmdFbmFibGVkKGVu
YWJsZSk7CiAgICAgfQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL3Jlc291
cmNlTG9hZFN0YXRpc3RpY3MvcGFydGl0aW9uZWQtY29va2llcy13aXRoLWFuZC13aXRob3V0LXVz
ZXItaW50ZXJhY3Rpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2xvYWRpbmcvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9wYXJ0aXRpb25lZC1jb29raWVzLXdpdGgt
YW5kLXdpdGhvdXQtdXNlci1pbnRlcmFjdGlvbi5odG1sCShyZXZpc2lvbiAyMTc1NjQpCisrKyBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9wYXJ0
aXRpb25lZC1jb29raWVzLXdpdGgtYW5kLXdpdGhvdXQtdXNlci1pbnRlcmFjdGlvbi5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0yMSw2ICsyMSw3IEBACiAgICAgICAgIGlmICghZW5hYmxlKSB7CiAg
ICAgICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKCk7
CiAgICAgICAgIH0KKyAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzTm90aWZ5UGFnZXNX
aGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZChlbmFibGUpOwogICAgICAgICBpbnRlcm5hbHMuc2V0
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoZW5hYmxlKTsKICAgICAgICAgdGVzdFJ1bm5l
ci5zZXRDb29raWVTdG9yYWdlUGFydGl0aW9uaW5nRW5hYmxlZChlbmFibGUpOwogICAgIH0K
</data>
<flag name="review"
          id="332541"
          type_id="1"
          status="+"
          setter="aestes"
    />
          </attachment>
      

    </bug>

</bugzilla>