<?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>204779</bug_id>
          
          <creation_ts>2019-12-02 18:53:15 -0800</creation_ts>
          <short_desc>Resource Load Statistics (experimental): Delete non-cookie website data after 7 days of no user interaction</short_desc>
          <delta_ts>2019-12-04 13:46:48 -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>WebKit Misc.</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=204858</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="John Wilander">wilander</reporter>
          <assigned_to name="John Wilander">wilander</assigned_to>
          <cc>achristensen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1594883</commentid>
    <comment_count>0</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-12-02 18:53:15 -0800</bug_when>
    <thetext>Trackers are continuing to move cross-site tracking IDs into first-party storage. We should age out script-writable non-cookie website data in alignment with the 7-day cap on client-side cookies.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594884</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-12-02 18:53:43 -0800</bug_when>
    <thetext>&lt;rdar://problem/57578989&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594891</commentid>
    <comment_count>2</comment_count>
      <attachid>384681</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-12-02 19:23:50 -0800</bug_when>
    <thetext>Created attachment 384681
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594987</commentid>
    <comment_count>3</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-12-03 05:59:55 -0800</bug_when>
    <thetext>The Win test failures are all over the place and seem unrelated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595238</commentid>
    <comment_count>4</comment_count>
      <attachid>384681</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-12-03 15:49:26 -0800</bug_when>
    <thetext>Comment on attachment 384681
Patch

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

&gt; Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:488
&gt; +    postTask([this, mode, completionHandler = WTFMove(completionHandler)]() mutable {

Not for this patch, but I don&apos;t like it how in this one file it&apos;s ok to use this without protecting it or checking a weak pointer, but everywhere else we need to be careful.  Let&apos;s make it so postTask doesn&apos;t implicitly protect this and require all callers to protect this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595239</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-12-03 15:51:07 -0800</bug_when>
    <thetext>(In reply to Alex Christensen from comment #4)
&gt; Comment on attachment 384681 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=384681&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:488
&gt; &gt; +    postTask([this, mode, completionHandler = WTFMove(completionHandler)]() mutable {
&gt; 
&gt; Not for this patch, but I don&apos;t like it how in this one file it&apos;s ok to use
&gt; this without protecting it or checking a weak pointer, but everywhere else
&gt; we need to be careful.  Let&apos;s make it so postTask doesn&apos;t implicitly protect
&gt; this and require all callers to protect this.

Previously it was like that and people kept forgetting to protect this and we had tons of similar crashes. As a result, I made postTask() protect this. Worse case scenario, the caller protects again, which is a bit inefficient but at least does not cause crashes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595295</commentid>
    <comment_count>6</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-12-03 17:57:50 -0800</bug_when>
    <thetext>Thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595321</commentid>
    <comment_count>7</comment_count>
      <attachid>384681</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-03 18:41:58 -0800</bug_when>
    <thetext>Comment on attachment 384681
Patch

Clearing flags on attachment: 384681

Committed r253082: &lt;https://trac.webkit.org/changeset/253082&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595322</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-03 18:41:59 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384681</attachid>
            <date>2019-12-02 19:23:50 -0800</date>
            <delta_ts>2019-12-03 18:41:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204779-20191202192349.patch</filename>
            <type>text/plain</type>
            <size>106379</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzMDIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGU0MDkzOTRjYzhhZGY1
OWI5MGFhN2YxNjhhMmE4M2RmOGFlYjlkNi4uMTRkZGYwMDEzMTQ2MGNhZTczMTBhOGEwMTg3YzJj
YWJkM2MwYzEzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE5LTEyLTAyICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlIExvYWQg
U3RhdGlzdGljcyAoZXhwZXJpbWVudGFsKTogRGVsZXRlIG5vbi1jb29raWUgd2Vic2l0ZSBkYXRh
IGFmdGVyIDcgZGF5cyBvZiBubyB1c2VyIGludGVyYWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDQ3NzkKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzU3NTc4OTg5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRyYWNrZXJzIGFyZSBjb250aW51aW5nIHRvIG1vdmUgY3Jvc3Mtc2l0ZSB0cmFja2lu
ZyBJRHMgaW50byBmaXJzdC1wYXJ0eSBzdG9yYWdlLgorICAgICAgICBUaGlzIGNoYW5nZSBhZ2Vz
IG91dCBzY3JpcHQtd3JpdGFibGUgbm9uLWNvb2tpZSB3ZWJzaXRlIGRhdGEgaW4gYWxpZ25tZW50
IHdpdGggdGhlCisgICAgICAgIDctZGF5IGNhcCBvbiBjbGllbnQtc2lkZSBjb29raWVzLgorCisg
ICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvd2Vic2l0ZS1k
YXRhLXJlbW92YWwtZm9yLXNpdGUtd2l0aC11c2VyLWludGVyYWN0aW9uLWRhdGFiYXNlLmh0bWwK
KyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy93ZWJzaXRl
LWRhdGEtcmVtb3ZhbC1mb3Itc2l0ZS13aXRoLXVzZXItaW50ZXJhY3Rpb24uaHRtbAorICAgICAg
ICAgICAgICAgaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3dlYnNpdGUtZGF0YS1y
ZW1vdmFsLWZvci1zaXRlLXdpdGhvdXQtdXNlci1pbnRlcmFjdGlvbi1kYXRhYmFzZS5odG1sCisg
ICAgICAgICAgICAgICBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvd2Vic2l0ZS1k
YXRhLXJlbW92YWwtZm9yLXNpdGUtd2l0aG91dC11c2VyLWludGVyYWN0aW9uLmh0bWwKKworICAg
ICAgICAqIHBhZ2UvU2V0dGluZ3MueWFtbDoKKyAgICAgICAgICAgIE5ldyBleHBlcmltZW50YWwg
ZmVhdHVyZSwgb2ZmIGJ5IGRlZmF1bHQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9OZXR3
b3JrU3RvcmFnZVNlc3Npb24uaDoKKyAgICAgICAgICAgIEFkZGVkIGEgYm9vbGVhbiBlbnVtIFdl
YkNvcmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlLgorCiAyMDE5LTEyLTAyICBG
dWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgogCiAgICAgICAgIFtNU1ZD
XSBBZGQgL2V4cGVyaW1lbnRhbDpuZXdMYW1iZGFQcm9jZXNzb3Igc3dpdGNoIGZvciBiZXR0ZXIg
QysrIGNvbmZvcm1hbmNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDlkYjk1NGJhZWFhMGY2YTEyOGMwMmU0YmUyOTQ3
ZTc4NDQxMzc4ZTguLmRkNDBmODk0MzM0N2UyZWJiZjQ4M2UwZTA0NzVmNmE3MzVhZTQ4ZDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNjQgQEAKKzIwMTktMTItMDIgIEpvaG4gV2lsYW5kZXIgIDx3aWxh
bmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVzb3VyY2UgTG9hZCBTdGF0aXN0aWNzIChleHBl
cmltZW50YWwpOiBEZWxldGUgbm9uLWNvb2tpZSB3ZWJzaXRlIGRhdGEgYWZ0ZXIgNyBkYXlzIG9m
IG5vIHVzZXIgaW50ZXJhY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwNDc3OQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTc1Nzg5ODk+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVHJhY2tlcnMg
YXJlIGNvbnRpbnVpbmcgdG8gbW92ZSBjcm9zcy1zaXRlIHRyYWNraW5nIElEcyBpbnRvIGZpcnN0
LXBhcnR5IHN0b3JhZ2UuCisgICAgICAgIFRoaXMgY2hhbmdlIGFnZXMgb3V0IHNjcmlwdC13cml0
YWJsZSBub24tY29va2llIHdlYnNpdGUgZGF0YSBpbiBhbGlnbm1lbnQgd2l0aCB0aGUKKyAgICAg
ICAgNy1kYXkgY2FwIG9uIGNsaWVudC1zaWRlIGNvb2tpZXMuCisKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OnNob3VsZFJlbW92ZUFsbEJ1dENvb2tpZXNGb3IgY29uc3QpOgorICAgICAgICAgICAgTm93IG1h
a2VzIHVzZSBvZiB0aGUgc2V0IFdlYkNvcmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxN
b2RlLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01lbW9yeVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01lbW9yeVN0b3JlOjpzaG91bGRSZW1vdmVBbGxCdXRDb29raWVzRm9yIGNvbnN0KToK
KyAgICAgICAgICAgIE5vdyBtYWtlcyB1c2Ugb2YgdGhlIHNldCBXZWJDb3JlOjpGaXJzdFBhcnR5
V2Vic2l0ZURhdGFSZW1vdmFsTW9kZS4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oOgorICAgICAgICAoV2ViS2l0OjpSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldEZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxN
b2RlKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpmaXJz
dFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSBjb25zdCk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldEZpcnN0UGFy
dHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3M6OnNldEZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlRm9yVGVzdGluZyk6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNz
aW9uOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtTZXNzaW9uOjpyZWNyZWF0ZVJlc291cmNlTG9hZFN0YXRpc3RpY1N0b3JlKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OmZvcndhcmRSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU2V0dGluZ3MpOgorICAgICAgICAgICAgTmV3IGNvbnZlbmllbmNlIGZ1bmN0aW9uIHRvIGF2
b2lkIGNvZGUgZHVwbGljYXRpb24gaW4KKyAgICAgICAgICAgIE5ldHdvcmtTZXNzaW9uOjpzZXRS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCgpIGFuZCAKKyAgICAgICAgICAgIE5ldHdvcmtT
ZXNzaW9uOjpmb3J3YXJkUmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldHRpbmdzKCkuCisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaDoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVy
cy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2Eu
bW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6Ok5ldHdvcmtTZXNzaW9u
Q29jb2EpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAg
ICAgTWFrZXMgc3VyZSB0aGUgV2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1v
ZGUgaXMgZm91bmQgaW4gV2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaC4KKyAgICAgICAg
KiBTaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbDoKKyAgICAgICAgICAgIE5ldyBleHBlcmltZW50
YWwgZmVhdHVyZSwgb2ZmIGJ5IGRlZmF1bHQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dL
V2Vic2l0ZURhdGFTdG9yZVJlZi5jcHA6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGVGb3JU
ZXN0aW5nKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NSZXNldFRvQ29u
c2lzdGVudFN0YXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0
b3JlUmVmLmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnNldEZpcnN0UGFy
dHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlRm9yVGVzdGluZyk6CisgICAgICAgICogVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjplbnN1cmVO
ZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dl
YnNpdGVEYXRhU3RvcmVDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9y
ZTo6cGFyYW1ldGVycyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpzZXRSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGVGb3JUZXN0
aW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5o
OgorCiAyMDE5LTEyLTAyICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbaU9TXSBDcmVhdGUgc2FuZGJveCBleHRlbnNpb24gZm9yICJjb20uYXBwbGUudGNj
ZCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbAppbmRleCBhMDFkMmY2NTJmZjMzZjFiZWQzOTI2
ZGYyYjk4OTA2NGJmNjVhMzRiLi43ZjY2MjBiZjgwZTdhNDhjZGU4OGZhMjQ2MGRmYTc2ZmYxYTBk
ZTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy55YW1sCkBAIC04ODMsNiArODgzLDkgQEAgd2Vi
UlRDRW5jcnlwdGlvbkVuYWJsZWQ6CiBpc1RoaXJkUGFydHlDb29raWVCbG9ja2luZ0VuYWJsZWQ6
CiAgIGluaXRpYWw6IHRydWUKIAoraXNGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsRW5hYmxl
ZDoKKyAgaW5pdGlhbDogZmFsc2UKKwogaXNMb2dnZWRJbkFQSUVuYWJsZWQ6CiAgIGluaXRpYWw6
IGZhbHNlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0
d29ya1N0b3JhZ2VTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbi5oCmluZGV4IGFhNzdjM2E0ODMwN2U2N2E4MmI5YmYzMTQ5MTJl
MjZmNDU2OWFhNGYuLjFiYTdiZjkzYTJhZTAxMTIwNDE2OGRhMjQ0YTRlNWNhYzMzNzc2ZDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3Rv
cmFnZVNlc3Npb24uaApAQCAtNzUsNiArNzUsNyBAQCBzdHJ1Y3QgU2FtZVNpdGVJbmZvOwogZW51
bSBjbGFzcyBJbmNsdWRlU2VjdXJlQ29va2llcyA6IGJvb2w7CiBlbnVtIGNsYXNzIEluY2x1ZGVI
dHRwT25seUNvb2tpZXMgOiBib29sOwogZW51bSBjbGFzcyBUaGlyZFBhcnR5Q29va2llQmxvY2tp
bmdNb2RlIDogdWludDhfdCB7IEFsbCwgQWxsT25TaXRlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24s
IE9ubHlBY2NvcmRpbmdUb1BlckRvbWFpblBvbGljeSB9OworZW51bSBjbGFzcyBGaXJzdFBhcnR5
V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSA6IGJvb2wgeyBBbGxCdXRDb29raWVzLCBOb25lIH07CiAK
IGNsYXNzIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
TmV0d29ya1N0b3JhZ2VTZXNzaW9uKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcAppbmRl
eCBjYzIwZGE3ODA3YzQ4OTc2YTgxMTNlMjVhNTBmZGVhOGNmYTY5OWQ5Li5iNTNlMGMyNmVmOTU4
NzI4MTY4MjNmZDg1OTUwMTY1ZjAzYmRlMTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKQEAgLTIwODcsNyArMjA4NywxMCBA
QCBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpzaG91bGRSZW1vdmVB
bGxXZWJzaXRlRGF0YUZvcihjb25zdCBEbwogCiBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjpzaG91bGRSZW1vdmVBbGxCdXRDb29raWVzRm9yKGNvbnN0IERvbWFpbkRh
dGEmIHJlc291cmNlU3RhdGlzdGljLCBib29sIHNob3VsZENoZWNrRm9yR3JhbmRmYXRoZXJpbmcp
CiB7Ci0gICAgcmV0dXJuIHJlc291cmNlU3RhdGlzdGljLmlzU2NoZWR1bGVkRm9yQWxsQnV0Q29v
a2llRGF0YVJlbW92YWwgJiYgIWhhc0hhZFVuZXhwaXJlZFJlY2VudFVzZXJJbnRlcmFjdGlvbihy
ZXNvdXJjZVN0YXRpc3RpYywgT3BlcmF0aW5nRGF0ZXNXaW5kb3c6OlNob3J0KSAmJiAoIXNob3Vs
ZENoZWNrRm9yR3JhbmRmYXRoZXJpbmcgfHwgIXJlc291cmNlU3RhdGlzdGljLmdyYW5kZmF0aGVy
ZWQpOworICAgIGJvb2wgaXNSZW1vdmFsRW5hYmxlZCA9IGZpcnN0UGFydHlXZWJzaXRlRGF0YVJl
bW92YWxNb2RlKCkgIT0gRmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU6Ok5vbmUgfHwg
cmVzb3VyY2VTdGF0aXN0aWMuaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbDsK
KyAgICBib29sIGlzUmVzb3VyY2VHcmFuZGZhdGhlcmVkID0gc2hvdWxkQ2hlY2tGb3JHcmFuZGZh
dGhlcmluZyAmJiByZXNvdXJjZVN0YXRpc3RpYy5ncmFuZGZhdGhlcmVkOworCisgICAgcmV0dXJu
IGlzUmVtb3ZhbEVuYWJsZWQgJiYgIWlzUmVzb3VyY2VHcmFuZGZhdGhlcmVkICYmICFoYXNIYWRV
bmV4cGlyZWRSZWNlbnRVc2VySW50ZXJhY3Rpb24ocmVzb3VyY2VTdGF0aXN0aWMsIE9wZXJhdGlu
Z0RhdGVzV2luZG93OjpTaG9ydCk7CiB9CiAKIFZlY3RvcjxzdGQ6OnBhaXI8UmVnaXN0cmFibGVE
b21haW4sIFdlYnNpdGVEYXRhVG9SZW1vdmU+PiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6cmVnaXN0cmFibGVEb21haW5zVG9SZW1vdmVXZWJzaXRlRGF0YUZvcigpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwCmluZGV4
IGM0ZTdkNGFmMjdiMTFjMGMxMGM5Yjg3YWFhMGY2MWE0NDlmNjBlMzcuLmY4MzY0OTM4ZGE5ODNi
MjMyZWE5NDAwZmZkZGM3MDYwZjU5MzBmYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwCkBAIC04MzIsNyArODMyLDEwIEBAIGJvb2wg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpzaG91bGRSZW1vdmVBbGxXZWJzaXRl
RGF0YUZvcihSZXNvdXJjZUxvCiAKIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0
b3JlOjpzaG91bGRSZW1vdmVBbGxCdXRDb29raWVzRm9yKFJlc291cmNlTG9hZFN0YXRpc3RpY3Mm
IHJlc291cmNlU3RhdGlzdGljLCBib29sIHNob3VsZENoZWNrRm9yR3JhbmRmYXRoZXJpbmcpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIHJlc291cmNlU3RhdGlzdGljLmdvdExpbmtEZWNvcmF0aW9uRnJv
bVByZXZhbGVudFJlc291cmNlICYmICFoYXNIYWRVbmV4cGlyZWRSZWNlbnRVc2VySW50ZXJhY3Rp
b24ocmVzb3VyY2VTdGF0aXN0aWMsIE9wZXJhdGluZ0RhdGVzV2luZG93OjpTaG9ydCkgJiYgKCFz
aG91bGRDaGVja0ZvckdyYW5kZmF0aGVyaW5nIHx8ICFyZXNvdXJjZVN0YXRpc3RpYy5ncmFuZGZh
dGhlcmVkKTsKKyAgICBib29sIGlzUmVtb3ZhbEVuYWJsZWQgPSBmaXJzdFBhcnR5V2Vic2l0ZURh
dGFSZW1vdmFsTW9kZSgpICE9IEZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlOjpOb25l
IHx8IHJlc291cmNlU3RhdGlzdGljLmdvdExpbmtEZWNvcmF0aW9uRnJvbVByZXZhbGVudFJlc291
cmNlOworICAgIGJvb2wgaXNSZXNvdXJjZUdyYW5kZmF0aGVyZWQgPSBzaG91bGRDaGVja0Zvckdy
YW5kZmF0aGVyaW5nICYmIHJlc291cmNlU3RhdGlzdGljLmdyYW5kZmF0aGVyZWQ7CisKKyAgICBy
ZXR1cm4gaXNSZW1vdmFsRW5hYmxlZCAmJiAhaXNSZXNvdXJjZUdyYW5kZmF0aGVyZWQgJiYgIWhh
c0hhZFVuZXhwaXJlZFJlY2VudFVzZXJJbnRlcmFjdGlvbihyZXNvdXJjZVN0YXRpc3RpYywgT3Bl
cmF0aW5nRGF0ZXNXaW5kb3c6OlNob3J0KTsKIH0KIAogVmVjdG9yPHN0ZDo6cGFpcjxSZWdpc3Ry
YWJsZURvbWFpbiwgV2Vic2l0ZURhdGFUb1JlbW92ZT4+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NN
ZW1vcnlTdG9yZTo6cmVnaXN0cmFibGVEb21haW5zVG9SZW1vdmVXZWJzaXRlRGF0YUZvcigpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKaW5kZXggYmZhNGQ3MGIyNjlh
Y2FiZDllNTU4OThmZTdkYzdmMzgxYmFhMzlmOS4uOTg3MzY5MjZmOWRkZGY0MzgwYzUwNGRlOTVk
ZDY5ODY3ZTM0NDBiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUu
aApAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUgIlJlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFz
c2lmaWVyLmgiCiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgiCiAj
aW5jbHVkZSA8V2ViQ29yZS9GcmFtZUlkZW50aWZpZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5o
PgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgpAQCAt
MTY0LDYgKzE2Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFByZXZhbGVudFJlc291cmNlRm9y
RGVidWdNb2RlKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik7CiAgICAgdm9pZCBzZXRUaGlyZFBh
cnR5Q29va2llQmxvY2tpbmdNb2RlKFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01v
ZGUgbW9kZSkgeyBtX3RoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgPSBtb2RlOyB9OwogICAg
IFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgdGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9k
ZTsgfTsKKyAgICB2b2lkIHNldEZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlKFdlYkNv
cmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlIG1vZGUpIHsgbV9maXJzdFBhcnR5
V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSA9IG1vZGU7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBhcmVB
bGxUaGlyZFBhcnR5Q29va2llc0Jsb2NrZWRVbmRlcihjb25zdCBUb3BGcmFtZURvbWFpbiYpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgaGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFp
biYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyPiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYpID0gMDsKQEAgLTIzNyw2ICsyMzcsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIGRlYnVnU3RhdGljUHJldmFsZW50UmVzb3VyY2UoKSBjb25zdCB7IHJl
dHVybiBtX2RlYnVnU3RhdGljUHJldmFsZW50UmVzb3VyY2U7IH0KICAgICBib29sIGRlYnVnTG9n
Z2luZ0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2RlYnVnTG9nZ2luZ0VuYWJsZWQ7IH07CiAg
ICAgYm9vbCBkZWJ1Z01vZGVFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1Z01vZGVFbmFi
bGVkOyB9CisgICAgV2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgZmly
c3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0UGFy
dHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlOyB9CiAKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2ln
bmVkIG1heE51bWJlck9mUmVjdXJzaXZlQ2FsbHNJblJlZGlyZWN0VHJhY2VCYWNrIHsgNTAgfTsK
ICAgICAKQEAgLTI3NSw2ICsyNzYsNyBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OlRoaXJkUGFy
dHlDb29raWVCbG9ja2luZ01vZGUgbV90aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIHsgV2Vi
Q29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6QWxsT25TaXRlc1dpdGhvdXRVc2Vy
SW50ZXJhY3Rpb24gfTsKICAgICBib29sIG1fZGF0YVJlY29yZHNCZWluZ1JlbW92ZWQgeyBmYWxz
ZSB9OwogICAgIFNob3VsZEluY2x1ZGVMb2NhbGhvc3QgbV9zaG91bGRJbmNsdWRlTG9jYWxob3N0
IHsgU2hvdWxkSW5jbHVkZUxvY2FsaG9zdDo6WWVzIH07CisgICAgV2ViQ29yZTo6Rmlyc3RQYXJ0
eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgbV9maXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9k
ZSB7IFdlYkNvcmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlOjpOb25lIH07CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5jcHAKaW5kZXggNGQ2Njk5N2Y0OWU5ZmI4MDk4MjJmMzg1MmQ2OGNk
ZDliODQ5OTQ0Yy4uNzRhYTdkNTQ0N2RkMjYxZDk3YTc1MzA1MTY5MzRmOGMyMGViMThkYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKQEAgLTQ4
MSw2ICs0ODEsMTkgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFRo
aXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoVGhpcmRQYXJ0eUMKICAgICB9KTsKIH0KIAordm9p
ZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldEZpcnN0UGFydHlXZWJzaXRlRGF0
YVJlbW92YWxNb2RlKEZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlIG1vZGUsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBBU1NFUlQo
UnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgcG9zdFRhc2soW3RoaXMsIG1vZGUsIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAg
ICAgIGlmIChtX3N0YXRpc3RpY3NTdG9yZSkKKyAgICAgICAgICAgIG1fc3RhdGlzdGljc1N0b3Jl
LT5zZXRGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZShtb2RlKTsKKyAgICAgICAgcG9z
dFRhc2tSZXBseShbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAg
IH0pOworICAgIH0pOworfQorCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
ZGlkQ3JlYXRlTmV0d29ya1Byb2Nlc3MoKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4o
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKaW5kZXgg
MGNhNDI2YTA2Mjg5ZjI4ODIxMmYwMzhhOTZkOGE3MjJiYzE5M2Q2OC4uMWQ0MDQ0YzI0YjlhZTFm
MTRiMWNkMGFmNTEyN2FjOGFmNTY4YWY2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIldlYlBhZ2VQ
cm94eUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVR5cGUuaCIKICNpbmNsdWRl
IDxXZWJDb3JlL0ZyYW1lSWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KICNpbmNsdWRlIDx3dGYvQ29tcGxl
dGlvbkhhbmRsZXIuaD4KQEAgLTE4MSw2ICsxODIsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGhh
c0Nvb2tpZXMoY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmKTsKICAgICB2b2lkIHNldFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoV2Vi
Q29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSk7CisgICAgdm9pZCBzZXRGaXJzdFBh
cnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZShXZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFS
ZW1vdmFsTW9kZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGRpZENy
ZWF0ZU5ldHdvcmtQcm9jZXNzKCk7CiAKICAgICB2b2lkIG5vdGlmeVJlc291cmNlTG9hZFN0YXRp
c3RpY3NQcm9jZXNzZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5jcHAKaW5kZXggMTNmY2UyZTdjNTljNGE0NDIzZmFmNzJhNjM1YzljOWRlNDlh
NGUxZS4uODQ3MjkwZWFiZWE4YWIxNDhjZGYzZDQ5ODNlMGFkZjJjYzFlYzUzZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTEyNjEs
NiArMTI2MSwxOSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRTaG91bGRCbG9ja1RoaXJkUGFy
dHlDb29raWVzRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZQogICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQorCit2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpzZXRGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZUZvclRlc3RpbmcoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1v
dmFsTW9kZSBtb2RlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit7CisgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Np
b24oc2Vzc2lvbklEKSkgeworICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCisgICAgICAgICAg
ICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5zZXRGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFs
TW9kZShtb2RlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgfQor
fQogI2VuZGlmIC8vIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAKIGJvb2wgTmV0
d29ya1Byb2Nlc3M6OnNlc3Npb25Jc0NvbnRyb2xsZWRCeUF1dG9tYXRpb24oUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklEKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5oCmluZGV4IGYwODA2YjI3OThlZjg5MzkxMGNhNzk1MzZjNGFiYjAxNmI1NTI3
M2UuLjM5MTJjMGQxOThiZjFlMjhhYzE1ZDA0ZWUxMmM4Nzg0ZmRlMjcxMzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTI2MSw2ICsyNjEs
NyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0lUUERhdGFiYXNlRW5hYmxlZCgpIGNvbnN0IHsgcmV0
dXJuIG1faXNJVFBEYXRhYmFzZUVuYWJsZWQ7IH0KICAgICB2b2lkIHNldFNob3VsZERvd25ncmFk
ZVJlZmVycmVyRm9yVGVzdGluZyhib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwog
ICAgIHZvaWQgc2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmcoUEFMOjpT
ZXNzaW9uSUQsIFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBzZXRGaXJzdFBhcnR5V2Vic2l0ZURhdGFS
ZW1vdmFsTW9kZUZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OkZpcnN0UGFydHlX
ZWJzaXRlRGF0YVJlbW92YWxNb2RlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogI2Vu
ZGlmCiAKICAgICB1c2luZyBDYWNoZVN0b3JhZ2VSb290UGF0aENhbGxiYWNrID0gQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChTdHJpbmcmJik+OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggZTFlZTE3NDBmZDlj
ZGY1OTEwZjhlM2NmM2JhMDk3ZDI2ODE5ZDJhNS4uY2QyNzUyYjYyNmYzY2JlZjMzMjg2YmFmOTJh
Mzg0ZTg1M2U4MDE3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0xMzgsNiArMTM4LDcgQEAgbWVzc2Fn
ZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIEhhc0lzb2xhdGVkU2Vz
c2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
IGRvbWFpbikgLT4gKGJvb2wgaGFzSXNvbGF0ZWRTZXNzaW9uKSBBc3luYwogICAgIFNldFNob3Vs
ZERvd25ncmFkZVJlZmVycmVyRm9yVGVzdGluZyhib29sIGVuYWJsZWQpIC0+ICgpIEFzeW5jCiAg
ICAgU2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2Nr
aW5nTW9kZSBibG9ja2luZ01vZGUpIC0+ICgpIEFzeW5jCisgICAgU2V0Rmlyc3RQYXJ0eVdlYnNp
dGVEYXRhUmVtb3ZhbE1vZGVGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgZW51
bTpib29sIFdlYkNvcmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlIG1vZGUpIC0+
ICgpIEFzeW5jCiAjZW5kaWYKIAogICAgIFNldFNlc3Npb25Jc0NvbnRyb2xsZWRCeUF1dG9tYXRp
b24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBib29sIGNvbnRyb2xsZWQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAppbmRleCA5MTkzZjg4
MmU5NDIwN2ZhOWQ5ODM3ZTExYzQ5OGVmMmQ2Y2ZkN2I2Li4yYTY1MzI5YmYxZWMxNjI4ZWJlZGQ1
M2I0MTAyNjA5YzM5MTlhNTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtTZXNzaW9uLmNwcApAQCAtMTc1LDcgKzE3NSw3IEBAIHZvaWQgTmV0d29ya1Nlc3Np
b246OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGJvb2wgZW5hYmxlKQogICAgIC8v
IFRoaXMgc2hvdWxkIGFsd2F5cyBiZSBmb3J3YXJkZWQgc2luY2UgZGVidWcgbW9kZSBtYXkgYmUg
ZW5hYmxlZCBhdCBydW50aW1lLgogICAgIGlmICghbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFu
dWFsUHJldmFsZW50UmVzb3VyY2UuaXNFbXB0eSgpKQogICAgICAgICBtX3Jlc291cmNlTG9hZFN0
YXRpc3RpY3MtPnNldFByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlKG1fcmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01hbnVhbFByZXZhbGVudFJlc291cmNlLCBbXSB7IH0pOwotICAgIG1fcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy0+c2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZShtX3RoaXJk
UGFydHlDb29raWVCbG9ja2luZ01vZGUpOworICAgIGZvcndhcmRSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU2V0dGluZ3MoKTsKIH0KIAogdm9pZCBOZXR3b3JrU2Vzc2lvbjo6cmVjcmVhdGVSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNTdG9yZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCkBAIC0xODMsNyArMTgzLDEzIEBAIHZvaWQgTmV0d29ya1Nlc3Npb246OnJlY3Jl
YXRlUmVzb3VyY2VMb2FkU3RhdGlzdGljU3RvcmUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpCiAg
ICAgZGVzdHJveVJlc291cmNlTG9hZFN0YXRpc3RpY3MoKTsKICAgICBtX3Jlc291cmNlTG9hZFN0
YXRpc3RpY3MgPSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0ZSgqdGhpcywg
bV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBtX3Nob3VsZEluY2x1ZGVMb2NhbGhv
c3RJblJlc291cmNlTG9hZFN0YXRpc3RpY3MpOwogICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy0+cG9wdWxhdGVNZW1vcnlTdG9yZUZyb21EaXNrKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKKyAgICBmb3J3YXJkUmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldHRpbmdzKCk7Cit9CisKK3Zv
aWQgTmV0d29ya1Nlc3Npb246OmZvcndhcmRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0dGluZ3Mo
KQorewogICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0VGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nTW9kZShtX3RoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUpOworICAgIG1fcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy0+c2V0Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUobV9m
aXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSwgW10geyB9KTsKIH0KIAogYm9vbCBOZXR3
b3JrU2Vzc2lvbjo6aXNSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCgpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKaW5kZXggNjk4Y2Uw
ZDc0MjJjZjE1NDNkZDJmM2E0NjEyZGU4NDdjNDJhYWE4OC4uYmM0MzUxZmExZTExN2IyNzZjMTAz
ZjdiNzgzYmJmM2JlZTQ4YTg3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Nlc3Npb24uaApAQCAtMTMyLDYgKzEzMiw3IEBAIHByb3RlY3RlZDoKIAogI2lmIEVO
QUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgdm9pZCBkZXN0cm95UmVzb3VyY2VM
b2FkU3RhdGlzdGljcygpOworICAgIHZvaWQgZm9yd2FyZFJlc291cmNlTG9hZFN0YXRpc3RpY3NT
ZXR0aW5ncygpOwogI2VuZGlmCiAKICAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKQEAg
LTE0Niw2ICsxNDcsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBtX2VuYWJsZVJlc291cmNlTG9h
ZFN0YXRpc3RpY3NMb2dUZXN0aW5nRXZlbnQ7CiAgICAgYm9vbCBtX2Rvd25ncmFkZVJlZmVycmVy
IHsgdHJ1ZSB9OwogICAgIFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgbV90
aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIHsgV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nTW9kZTo6QWxsT25TaXRlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24gfTsKKyAgICBXZWJD
b3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSBtX2ZpcnN0UGFydHlXZWJzaXRl
RGF0YVJlbW92YWxNb2RlIHsgV2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1v
ZGU6Ok5vbmUgfTsKICNlbmRpZgogICAgIGJvb2wgbV9pc1N0YWxlV2hpbGVSZXZhbGlkYXRlRW5h
YmxlZCB7IGZhbHNlIH07CiAgICAgVW5pcXVlUmVmPEFkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXI+
IG1fYWRDbGlja0F0dHJpYnV0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApp
bmRleCAxMjJhMWE4ZjQ4YjM0Nzc2ZjZjZGExZTJhNWFkZTM0MmI4M2QxOWJkLi43ZDgwOWVlMjBm
ODVmYTk0MThiNDIyZmJiODExNzkyNzI1ZTE2ZGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJh
bWV0ZXJzLmNwcApAQCAtNjksNiArNjksNyBAQCB2b2lkIE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25Q
YXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29k
ZXIgPDwgZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZTsKICAgICBlbmNvZGVy
IDw8IHJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW51YWxQcmV2YWxlbnRSZXNvdXJjZTsKICAgICBl
bmNvZGVyIDw8IHRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU7CisgICAgZW5jb2RlciA8PCBm
aXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZTsKIAogICAgIGVuY29kZXIgPDwgbmV0d29y
a0NhY2hlRGlyZWN0b3J5IDw8IG5ldHdvcmtDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsK
IApAQCAtMjA1LDYgKzIwNiwxMSBAQCBPcHRpb25hbDxOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFy
YW1ldGVycz4gTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM6OmRlYwogICAgIGlmICgh
dGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKIAorICAgIE9wdGlvbmFsPFdlYkNvcmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxN
b2RlPiBmaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZTsKKyAgICBkZWNvZGVyID4+IGZp
cnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlOworICAgIGlmICghZmlyc3RQYXJ0eVdlYnNp
dGVEYXRhUmVtb3ZhbE1vZGUpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKICAgICBP
cHRpb25hbDxTdHJpbmc+IG5ldHdvcmtDYWNoZURpcmVjdG9yeTsKICAgICBkZWNvZGVyID4+IG5l
dHdvcmtDYWNoZURpcmVjdG9yeTsKICAgICBpZiAoIW5ldHdvcmtDYWNoZURpcmVjdG9yeSkKQEAg
LTI4OSw2ICsyOTUsNyBAQCBPcHRpb25hbDxOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVy
cz4gTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM6OmRlYwogICAgICAgICAsIFdURk1v
dmUoKnNob3VsZEluY2x1ZGVMb2NhbGhvc3RJblJlc291cmNlTG9hZFN0YXRpc3RpY3MpCiAgICAg
ICAgICwgV1RGTW92ZSgqZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZSkKICAg
ICAgICAgLCBXVEZNb3ZlKCp0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKQorICAgICAgICAs
IFdURk1vdmUoKmZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlKQogICAgICAgICAsIFdU
Rk1vdmUoKmRldmljZU1hbmFnZW1lbnRSZXN0cmljdGlvbnNFbmFibGVkKQogICAgICAgICAsIFdU
Rk1vdmUoKmFsbExvYWRzQmxvY2tlZEJ5RGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9uc0ZvclRl
c3RpbmcpCiAgICAgICAgICwgV1RGTW92ZSgqcmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbnVhbFBy
ZXZhbGVudFJlc291cmNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4IGY3ZTA1
ZjhkNjY0ZmE3NmU2NzVkN2QxMmU0NjYyZTYzNjczMjA3NmEuLjM4MTM0NDhlYjI4YWMxMGRkYTM0
NzZhOWU2YTVlYzFjM2U1MzZhZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAg
LTg3LDYgKzg3LDcgQEAgc3RydWN0IE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzIHsK
ICAgICBib29sIHNob3VsZEluY2x1ZGVMb2NhbGhvc3RJblJlc291cmNlTG9hZFN0YXRpc3RpY3Mg
eyB0cnVlIH07CiAgICAgYm9vbCBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2Rl
IHsgZmFsc2UgfTsKICAgICBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIHRo
aXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgeyBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxv
Y2tpbmdNb2RlOjpBbGxPblNpdGVzV2l0aG91dFVzZXJJbnRlcmFjdGlvbiB9OworICAgIFdlYkNv
cmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlIGZpcnN0UGFydHlXZWJzaXRlRGF0
YVJlbW92YWxNb2RlIHsgV2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU6
Ok5vbmUgfTsKICAgICBib29sIGRldmljZU1hbmFnZW1lbnRSZXN0cmljdGlvbnNFbmFibGVkIHsg
ZmFsc2UgfTsKICAgICBib29sIGFsbExvYWRzQmxvY2tlZEJ5RGV2aWNlTWFuYWdlbWVudFJlc3Ry
aWN0aW9uc0ZvclRlc3RpbmcgeyBmYWxzZSB9OwogICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluIHJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW51YWxQcmV2YWxlbnRSZXNvdXJjZSB7IH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNz
aW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtT
ZXNzaW9uQ29jb2EubW0KaW5kZXggNmRjNTgwZDI1ZGE3YTllMmE3NGNjYzc0ZTFlNmY0MmIwNzZj
ZjVhNi4uM2E1YmQyMDM5MzU4YTU4Yjk1ZjIyYTExNjI0ZmI0MTUwMTNlMmE4ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Np
b25Db2NvYS5tbQpAQCAtMTEzNiw2ICsxMTM2LDcgQEAgTmV0d29ya1Nlc3Npb25Db2NvYTo6TmV0
d29ya1Nlc3Npb25Db2NvYShOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIE5ldHdvcmsK
ICAgICBtX2VuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUgPSBwYXJhbWV0ZXJz
LmVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUgPyBFbmFibGVSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGVidWdNb2RlOjpZZXMgOiBFbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGVidWdNb2RlOjpObzsKICAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW51YWxQcmV2YWxl
bnRSZXNvdXJjZSA9IHBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbnVhbFByZXZh
bGVudFJlc291cmNlOwogICAgIG1fdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSA9IHBhcmFt
ZXRlcnMudGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTsKKyAgICBtX2ZpcnN0UGFydHlXZWJz
aXRlRGF0YVJlbW92YWxNb2RlID0gcGFyYW1ldGVycy5maXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1v
dmFsTW9kZTsKICAgICBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChwYXJhbWV0ZXJz
LmVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3MpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IGEyYzVhNmE0ZjkzNWY3YTM4Y2Y2MWJkYjRm
YTJiMmNkZjRmY2M2Y2QuLmVkMTFhYzI3MjUyMjZlNDdhMmI1NmJjYzllY2YyMjJkYWMwMDA5YWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysr
IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtNTg5LDYgKzU4
OSw3IEBAIGRlZiBoZWFkZXJzX2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAnV2ViQ29yZTo6VGV4
dENoZWNraW5nVHlwZSc6IFsnPFdlYkNvcmUvVGV4dENoZWNraW5nLmg+J10sCiAgICAgICAgICdX
ZWJDb3JlOjpUZXh0SW5kaWNhdG9yRGF0YSc6IFsnPFdlYkNvcmUvVGV4dEluZGljYXRvci5oPidd
LAogICAgICAgICAnV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSc6IFsnPFdl
YkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+J10sCisgICAgICAgICdXZWJDb3JlOjpGaXJz
dFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSc6IFsnPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpWaWV3cG9ydEF0dHJpYnV0ZXMnOiBbJzxX
ZWJDb3JlL1ZpZXdwb3J0QXJndW1lbnRzLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpXaWxsQ29u
dGludWVMb2FkaW5nJzogWyc8V2ViQ29yZS9GcmFtZUxvYWRlclR5cGVzLmg+J10sCiAgICAgICAg
ICdXZWJDb3JlOjpTZWxlY3Rpb25SZWN0JzogWyciRWRpdG9yU3RhdGUuaCInXSwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sCmluZGV4IGU2NDIxZjdjYjNlODcyZDk1Y2Rk
OWU5N2FjN2QzNjQ4M2MzMGU5NjIuLmY0NmJjZWJlNTdhYmE2MTJjMzNiMWYzZTIxODVlMjE3NzIx
Y2NlNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlh
bWwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbApAQCAtMTgw
OSw2ICsxODA5LDEzIEBAIElzVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nRW5hYmxlZDoKICAgaHVt
YW5SZWFkYWJsZURlc2NyaXB0aW9uOiAiQmxvY2sgYWxsIHRoaXJkLXBhcnR5IGNvb2tpZXMgd2hl
biBJbnRlbGxpZ2VudCBUcmFja2luZyBQcmV2ZW50aW9uIGlzIGVuYWJsZWQiCiAgIGNhdGVnb3J5
OiBleHBlcmltZW50YWwKIAorSXNGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsRW5hYmxlZDoK
KyAgdHlwZTogYm9vbAorICBkZWZhdWx0VmFsdWU6IGZhbHNlCisgIGh1bWFuUmVhZGFibGVOYW1l
OiAiUmVtb3ZlIE5vbi1Db29raWUgRGF0YSBBZnRlciA3IERheXMgb2YgTm8gVXNlciBJbnRlcmFj
dGlvbiAoSVRQKSIKKyAgaHVtYW5SZWFkYWJsZURlc2NyaXB0aW9uOiAiUmVtb3ZlIGFsbCBub24t
Y29va2llIHdlYnNpdGUgZGF0YSBhZnRlciBzZXZlbiBkYXlzIG9mIG5vIHVzZXIgaW50ZXJhY3Rp
b24gd2hlbiBJbnRlbGxpZ2VudCBUcmFja2luZyBQcmV2ZW50aW9uIGlzIGVuYWJsZWQiCisgIGNh
dGVnb3J5OiBleHBlcmltZW50YWwKKwogSXNMb2dnZWRJbkFQSUVuYWJsZWQ6CiAgICAgdHlwZTog
Ym9vbAogICAgIGRlZmF1bHRWYWx1ZTogZmFsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCmluZGV4IDI0Y2MxYWZj
N2ViNzcyZDA2MDQ4MjYxZWRmY2YyZjU3YWRhMWE2ZmQuLjI4YzM3MWI4ODNhZDM3ZmEzNjk1OWYy
YWRiZmEyNWQyMWEwNzc5ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcApAQCAtNTQ5LDYgKzU0OSwxNyBAQCB2
b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NTaG91bGRCbG9j
a1RoaXJkUGFydHlDb29raWVzRm9yVAogI2VuZGlmCiB9CiAKK3ZvaWQgV0tXZWJzaXRlRGF0YVN0
b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxN
b2RlRm9yVGVzdGluZyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBib29sIGVu
YWJsZWQsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0
YXRpc3RpY3NGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZUZvclRlc3RpbmdGdW5jdGlv
biBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNU
SUNTKQorICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldFJlc291cmNlTG9hZFN0
YXRpc3RpY3NGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZUZvclRlc3RpbmcoZW5hYmxl
ZCwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKGNvbnRleHQpOworICAgIH0pOworI2Vsc2UKKyAgICBjb21wbGV0aW9uSGFuZGxlcihjb250
ZXh0KTsKKyNlbmRpZgorfQorCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NSZXNl
dFRvQ29uc2lzdGVudFN0YXRlKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHZv
aWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVu
dFN0YXRlRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNF
X0xPQURfU1RBVElTVElDUykKQEAgLTU2Miw2ICs1NzMsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFT
dG9yZVN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKFdLV2Vic2l0ZURhdGFTdG9yZVJl
ZiBkYQogICAgIHN0b3JlLnJlc2V0Q3Jvc3NTaXRlTG9hZHNXaXRoTGlua0RlY29yYXRpb25Gb3JU
ZXN0aW5nKFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigp
XSB7IH0pOwogICAgIHN0b3JlLnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NTaG91bGREb3duZ3Jh
ZGVSZWZlcnJlckZvclRlc3RpbmcodHJ1ZSwgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNr
QWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CiAgICAgc3RvcmUuc2V0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1Nob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKGZhbHNlLCBmYWxz
ZSwgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsg
fSk7CisgICAgc3RvcmUuc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHlXZWJzaXRl
RGF0YVJlbW92YWxNb2RlRm9yVGVzdGluZyhmYWxzZSwgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNh
bGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CiAgICAgc3RvcmUucmVzZXRQYXJhbWV0
ZXJzVG9EZWZhdWx0VmFsdWVzKFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0
b3IuY29weVJlZigpXSB7IH0pOwogICAgIHN0b3JlLnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBl
cnNpc3RlbnQoV2ViS2l0OjpTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3M6Ok5vLCBbY2FsbGJh
Y2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKICAgICBz
dG9yZS5zZXRVc2VJVFBEYXRhYmFzZShmYWxzZSwgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxi
YWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oCmluZGV4IDEwYmFmN2VlMzM2
ZDQ0ZmRkZTI0MTE5ODRlMThkNjEyNjkzZmM2MWEuLmQ0ZWIwMzJhNWU4Y2EwN2UwNGU5YWYxNDIw
OTQ0MGQ5MzRlNTA0OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oCkBAIC0xMjEsNiArMTIxLDggQEAgdHlwZWRlZiB2
b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Nob3VsZERv
d25ncmFkZVJlZmVycmUKIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291
cmNlTG9hZFN0YXRpc3RpY3NTaG91bGREb3duZ3JhZGVSZWZlcnJlckZvclRlc3RpbmcoV0tXZWJz
aXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgYm9vbCBlbmFibGVkLCB2b2lkKiBjb250ZXh0
LCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2hvdWxkRG93bmdy
YWRlUmVmZXJyZXJGb3JUZXN0aW5nRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpOwogdHlwZWRl
ZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Nob3Vs
ZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nRnVuY3Rpb24pKHZvaWQqIGZ1bmN0aW9u
Q29udGV4dCk7CiBXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmcoV0tXZWJz
aXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgYm9vbCBlbmFibGVkLCBib29sIG9ubHlPblNp
dGVzV2l0aG91dFVzZXJJbnRlcmFjdGlvbiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0
b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Nob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNG
b3JUZXN0aW5nRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpOwordHlwZWRlZiB2b2lkICgqV0tX
ZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHlXZWJzaXRl
RGF0YVJlbW92YWxNb2RlRm9yVGVzdGluZ0Z1bmN0aW9uKSh2b2lkKiBmdW5jdGlvbkNvbnRleHQp
OworV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlz
dGljc0ZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlRm9yVGVzdGluZyhXS1dlYnNpdGVE
YXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBib29sIGVuYWJsZWQsIHZvaWQqIGNvbnRleHQsIFdL
V2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5V2Vic2l0
ZURhdGFSZW1vdmFsTW9kZUZvclRlc3RpbmdGdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxlcik7CiB0
eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3Rl
bnRTdGF0ZUZ1bmN0aW9uKSh2b2lkKiBmdW5jdGlvbkNvbnRleHQpOwogV0tfRVhQT1JUIHZvaWQg
V0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUoV0tXZWJz
aXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0
YVN0b3JlU3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGVGdW5jdGlvbiBjb21wbGV0aW9u
SGFuZGxlcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IDE3MmJiMzMwNTBiYzM1ZjExYjUxZTkzZTk3
MTU1NTY5Y2Y5ZDEwMmQuLmUxNDE2Nzk3MWU3YWMwMzBkYjk0ZjQyZWQwODU2MTBhNzU3NTNkYzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmNwcApAQCAtMTA2Niw2ICsxMDY2LDE2IEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3NQcm94eTo6c2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmcoUEFMOjpT
ZXNzaW9uCiAgICAgCiAgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJv
Y2Vzczo6U2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3Rpbmcoc2Vzc2lvbklE
LCBibG9ja2luZ01vZGUpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CisKK3ZvaWQg
TmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGVG
b3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRmlyc3RQYXJ0eVdlYnNpdGVEYXRh
UmVtb3ZhbE1vZGUgbW9kZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQoreworICAgIGlmICghY2FuU2VuZE1lc3NhZ2UoKSkgeworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcigpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0Rmlyc3RQYXJ0eVdlYnNpdGVEYXRh
UmVtb3ZhbE1vZGVGb3JUZXN0aW5nKHNlc3Npb25JRCwgbW9kZSksIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKK30KICNlbmRpZiAvLyBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNT
KQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNlbmRQcm9jZXNzV2lsbFN1c3BlbmRJbW1p
bmVudGx5Rm9yVGVzdGluZygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4IGIxMzIyYmJjNjZhNTg4YWJiYWFiNTAw
YmQ1M2EyYmU5ZTdiZDI5ZmYuLmU2ZWJkZjgxY2VhY2M2NjQ5ZjU2NzYxMDFlNjllZGZiMjM2NjI2
OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5oCkBAIC0xNTgsNiArMTU4LDcgQEAgcHVibGljOgogICAgIHZvaWQgaGFz
SXNvbGF0ZWRTZXNzaW9uKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgc2V0U2hvdWxkRG93
bmdyYWRlUmVmZXJyZXJGb3JUZXN0aW5nKGJvb2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CiAgICAgdm9pZCBzZXRTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGluZyhQ
QUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHNldEZpcnN0UGFydHlXZWJzaXRl
RGF0YVJlbW92YWxNb2RlRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6Rmlyc3RQ
YXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
CiAjZW5kaWYKICAgICAKICAgICB2b2lkIHN5bnRoZXNpemVBcHBJc0JhY2tncm91bmQoYm9vbCBi
YWNrZ3JvdW5kKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApp
bmRleCA0MDI1NTU2YmM5Y2YwYTdiYTQzNzBjMzIxYmM2YzExYWYyZDYyYWNkLi5kN2VhZjk2YmNj
NzMzY2Q3MDU0ZjVlYWQyMGVhMmQ5YzkzYWE5MWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC01NjMsNiArNTYzLDcgQEAgTmV0d29ya1Byb2Nlc3NQ
cm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKFdlYnNpdGVEYXRhU3Rv
cmUqIHdpdGgKICAgICBib29sIHNob3VsZEluY2x1ZGVMb2NhbGhvc3QgPSB0cnVlOwogICAgIGJv
b2wgZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZSA9IGZhbHNlOwogICAgIFdl
YkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgdGhpcmRQYXJ0eUNvb2tpZUJsb2Nr
aW5nTW9kZSA9IFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6OkFsbE9uU2l0
ZXNXaXRob3V0VXNlckludGVyYWN0aW9uOworICAgIFdlYkNvcmU6OkZpcnN0UGFydHlXZWJzaXRl
RGF0YVJlbW92YWxNb2RlIGZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlID0gV2ViQ29y
ZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU6Ok5vbmU7CiAgICAgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4gbWFudWFsUHJldmFsZW50UmVzb3VyY2UgeyB9OwogICAgIGlmICh3
aXRoV2Vic2l0ZURhdGFTdG9yZSkgewogICAgICAgICBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzID0gd2l0aFdlYnNpdGVEYXRhU3RvcmUtPnJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVk
KCk7CkBAIC01NzQsNiArNTc1LDcgQEAgTmV0d29ya1Byb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bv
b2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKFdlYnNpdGVEYXRhU3RvcmUqIHdpdGgKICAgICAgICAg
ICAgIHNob3VsZEluY2x1ZGVMb2NhbGhvc3QgPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuc2hv
dWxkSW5jbHVkZUxvY2FsaG9zdEluUmVzb3VyY2VMb2FkU3RhdGlzdGljczsKICAgICAgICAgICAg
IGVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUgPSBuZXR3b3JrU2Vzc2lvblBh
cmFtZXRlcnMuZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZTsKICAgICAgICAg
ICAgIHRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRl
cnMudGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTsKKyAgICAgICAgICAgIGZpcnN0UGFydHlX
ZWJzaXRlRGF0YVJlbW92YWxNb2RlID0gbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLmZpcnN0UGFy
dHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlOwogICAgICAgICAgICAgbWFudWFsUHJldmFsZW50UmVz
b3VyY2UgPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc01h
bnVhbFByZXZhbGVudFJlc291cmNlOwogICAgICAgICB9CiAKQEAgLTU5NSw2ICs1OTcsNyBAQCBO
ZXR3b3JrUHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3Mo
V2Vic2l0ZURhdGFTdG9yZSogd2l0aAogICAgICAgICAgICAgc2hvdWxkSW5jbHVkZUxvY2FsaG9z
dCA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5zaG91bGRJbmNsdWRlTG9jYWxob3N0SW5SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzOwogICAgICAgICAgICAgZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RlYnVnTW9kZSA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5lbmFibGVSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGVidWdNb2RlOwogICAgICAgICAgICAgdGhpcmRQYXJ0eUNvb2tpZUJsb2Nr
aW5nTW9kZSA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy50aGlyZFBhcnR5Q29va2llQmxvY2tp
bmdNb2RlOworICAgICAgICAgICAgZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgPSBu
ZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU7
CiAgICAgICAgICAgICBtYW51YWxQcmV2YWxlbnRSZXNvdXJjZSA9IG5ldHdvcmtTZXNzaW9uUGFy
YW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFudWFsUHJldmFsZW50UmVzb3VyY2U7CiAg
ICAgICAgIH0KIApAQCAtNjE5LDYgKzYyMiw4IEBAIE5ldHdvcmtQcm9jZXNzUHJveHkmIFdlYlBy
b2Nlc3NQb29sOjplbnN1cmVOZXR3b3JrUHJvY2VzcyhXZWJzaXRlRGF0YVN0b3JlKiB3aXRoCiAg
ICAgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBh
cmFtZXRlcnMuc2hvdWxkSW5jbHVkZUxvY2FsaG9zdEluUmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9
IHNob3VsZEluY2x1ZGVMb2NhbGhvc3Q7CiAgICAgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3Jl
UGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuZW5hYmxlUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RlYnVnTW9kZSA9IGVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGU7
CiAgICAgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lv
blBhcmFtZXRlcnMudGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSA9IHRoaXJkUGFydHlDb29r
aWVCbG9ja2luZ01vZGU7CisgICAgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVy
cy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1v
ZGUgPSBmaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZTsKKwogICAgIHBhcmFtZXRlcnMu
ZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291
cmNlTG9hZFN0YXRpc3RpY3NNYW51YWxQcmV2YWxlbnRSZXNvdXJjZSA9IG1hbnVhbFByZXZhbGVu
dFJlc291cmNlOwogCiAgICAgLy8gQWRkIGFueSBwbGF0Zm9ybSBzcGVjaWZpYyBwYXJhbWV0ZXJz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9X
ZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KaW5kZXggYjFmNTQwMWI3YmEzNzky
YjU4YWU4MTFjNGU0OTE1NjQ0NzcxZDM5YS4uNWNkYjM0MTY3MzFkYWIwMDZmOWY5YWQ4Mzc0MjYy
NjIyOGRjMmQwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQpAQCAtNzEs
NiArNzEsNyBAQCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBXZWJzaXRlRGF0YVN0b3JlOjpw
YXJhbWV0ZXJzKCkKICAgICBib29sIHNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uID0gZmFsc2U7
CiAgICAgYm9vbCBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlID0gZmFsc2U7
CiAgICAgYXV0byB0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlID0gV2ViQ29yZTo6VGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6T25seUFjY29yZGluZ1RvUGVyRG9tYWluUG9saWN5Owor
ICAgIGF1dG8gZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgPSBXZWJDb3JlOjpGaXJz
dFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZTo6Tm9uZTsKICAgICBib29sIGVuYWJsZUxlZ2Fj
eVRMUyA9IHRydWU7CiAgICAgaWYgKGlkIHZhbHVlID0gW2RlZmF1bHRzIG9iamVjdEZvcktleTpA
IldlYktpdEVuYWJsZUxlZ2FjeVRMUyJdKQogICAgICAgICBlbmFibGVMZWdhY3lUTFMgPSBbdmFs
dWUgYm9vbFZhbHVlXTsKQEAgLTgxLDYgKzgyLDggQEAgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRl
cnMgV2Vic2l0ZURhdGFTdG9yZTo6cGFyYW1ldGVycygpCiAgICAgICAgIHRoaXJkUGFydHlDb29r
aWVCbG9ja2luZ01vZGUgPSBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOjpB
bGw7CiAgICAgZWxzZQogICAgICAgICB0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlID0gV2Vi
Q29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6QWxsT25TaXRlc1dpdGhvdXRVc2Vy
SW50ZXJhY3Rpb247CisgICAgaWYgKFtkZWZhdWx0cyBib29sRm9yS2V5OltOU1N0cmluZyBzdHJp
bmdXaXRoRm9ybWF0OkAiRXhwZXJpbWVudGFsJUAiLCBXZWJQcmVmZXJlbmNlc0tleTo6aXNGaXJz
dFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsRW5hYmxlZEtleSgpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0
KCldXSkKKyAgICAgICAgZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgPSBXZWJDb3Jl
OjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZTo6QWxsQnV0Q29va2llczsKICAgICBh
dXRvKiBtYW51YWxQcmV2YWxlbnRSZXNvdXJjZSA9IFtkZWZhdWx0cyBzdHJpbmdGb3JLZXk6QCJJ
VFBNYW51YWxQcmV2YWxlbnRSZXNvdXJjZSJdOwogICAgIGlmIChtYW51YWxQcmV2YWxlbnRSZXNv
dXJjZSkgewogICAgICAgICBVUkwgdXJsIHsgVVJMKCksIG1hbnVhbFByZXZhbGVudFJlc291cmNl
IH07CkBAIC0xNDUsNiArMTQ4LDcgQEAgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMgV2Vic2l0
ZURhdGFTdG9yZTo6cGFyYW1ldGVycygpCiAgICAgICAgIHNob3VsZEluY2x1ZGVMb2NhbGhvc3RJ
blJlc291cmNlTG9hZFN0YXRpc3RpY3MsCiAgICAgICAgIGVuYWJsZVJlc291cmNlTG9hZFN0YXRp
c3RpY3NEZWJ1Z01vZGUsCiAgICAgICAgIHRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUsCisg
ICAgICAgIGZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlLAogICAgICAgICBtX2NvbmZp
Z3VyYXRpb24tPmRldmljZU1hbmFnZW1lbnRSZXN0cmljdGlvbnNFbmFibGVkKCksCiAgICAgICAg
IG1fY29uZmlndXJhdGlvbi0+YWxsTG9hZHNCbG9ja2VkQnlEZXZpY2VNYW5hZ2VtZW50UmVzdHJp
Y3Rpb25zRm9yVGVzdGluZygpLAogICAgICAgICBXVEZNb3ZlKHJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNYW51YWxQcmV2YWxlbnRSZXNvdXJjZSksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCmluZGV4IDZiNGIwMmM3
NGNjOWUwMTYwNzUzMDA4MWJkYjFlY2RkYjUzZWNhNmMuLmU2ZGY3M2E0YzQ5MjYyNmM0NGM2OWNh
NzcwMjc5Y2U3OGRjNzNiNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCkBAIC0xODA0LDYgKzE4MDQsMjEg
QEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2hvdWxk
QmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclQKICAgICB9CiAgICAgQVNTRVJUKCFjb21wbGV0aW9u
SGFuZGxlcik7CiB9CisKK3ZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0ZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlRm9yVGVzdGluZyhib29sIGVu
YWJsZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sK
KyAgICBhdXRvIGNhbGxiYWNrQWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRl
KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBhdXRvIG1vZGUgPSBlbmFibGVkID8g
V2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU6OkFsbEJ1dENvb2tpZXMg
OiBXZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZTo6Tm9uZTsKKworICAg
IGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkgeworICAgICAgICBpZiAo
YXV0byogbmV0d29ya1Byb2Nlc3MgPSBwcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkgewor
ICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3MtPnNldEZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92
YWxNb2RlRm9yVGVzdGluZyhtX3Nlc3Npb25JRCwgbW9kZSwgW2NhbGxiYWNrQWdncmVnYXRvciA9
IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CisgICAgICAgICAgICBBU1NFUlQo
cHJvY2Vzc1Bvb2xzKCkuc2l6ZSgpID09IDEpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKyAgICB9CisgICAgQVNTRVJUKCFjb21wbGV0aW9uSGFuZGxlcik7Cit9CiAjZW5kaWYgLy8g
RU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKIAogdm9pZCBXZWJzaXRlRGF0YVN0b3Jl
OjpzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhTZWNvbmRzIHNlY29uZHMs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
aAppbmRleCBlYjk2MDRlM2FmMzJjNTQ1YjViY2RmMDgyMjZkYmZjZDI2MmU5ZWVkLi4zN2E3NTgx
ZTI5NDM1N2UxOTdmZGU3ODg4NzgyZDVlM2Q2M2U4MmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCkBAIC0xOTUs
NiArMTk1LDcgQEAgcHVibGljOgogICAgIHZvaWQgaGFzSXNvbGF0ZWRTZXNzaW9uRm9yVGVzdGlu
Zyhjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBjb25zdDsKICAg
ICB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NTaG91bGREb3duZ3JhZGVSZWZlcnJlckZv
clRlc3RpbmcoYm9vbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNl
dFJlc291cmNlTG9hZFN0YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVz
dGluZyhib29sIGVuYWJsZWQsIGJvb2wgb25seU9uU2l0ZXNXaXRob3V0VXNlckludGVyYWN0aW9u
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgc2V0UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0ZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlRm9yVGVzdGluZyhib29s
IGVuYWJsZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAjZW5kaWYKICAgICB2b2lk
IHNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFNlY29uZHMsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCByZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJl
dmFsZW50UmVzb3VyY2VzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggN2NhODIxYzYwMjQxZjk1
MzI4NjRkNjdhMTdlNGNjN2RjM2UzMDhkOS4uN2I0MGRiMGNhYjhiMjhkNGVmMWI0Yzc1MmI1MmQw
MmI0N2ZiODFlOCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE5LTEyLTAyICBKb2huIFdpbGFuZGVyICA8d2lsYW5k
ZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlIExvYWQgU3RhdGlzdGljcyAoZXhwZXJp
bWVudGFsKTogRGVsZXRlIG5vbi1jb29raWUgd2Vic2l0ZSBkYXRhIGFmdGVyIDcgZGF5cyBvZiBu
byB1c2VyIGludGVyYWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDQ3NzkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU3NTc4OTg5PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZXNlIGNoYW5n
ZXMgYXJlIHRlc3QgaW5mcmFzdHJ1Y3R1cmUgc28gdGhhdCBUZXN0UnVubmVyIGNhbgorICAgICAg
ICBjb250cm9sIHRoZSBuZXcgc2V0dGluZy4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGw6CisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAgICAgIChX
VFI6OkluamVjdGVkQnVuZGxlOjpkaWRSZWNlaXZlTWVzc2FnZVRvUGFnZSk6CisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAg
KFdUUjo6VGVzdFJ1bm5lcjo6c2V0U3RhdGlzdGljc0ZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92
YWxNb2RlKToKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6c3RhdGlzdGljc0NhbGxEaWRTZXRG
aXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZUNhbGxiYWNrKToKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaDoKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRy
b2xsZXI6OnNldFN0YXRpc3RpY3NGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSk6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwOgorICAgICAgICAoV1RSOjpUZXN0SW52
b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6
CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkaWRTZXRGaXJzdFBhcnR5V2Vic2l0ZURh
dGFSZW1vdmFsTW9kZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlv
bi5oOgorCiAyMDE5LTEyLTAyICBBYWthc2ggSmFpbiAgPGFha2FzaF9qYWluQGFwcGxlLmNvbT4K
IAogICAgICAgICBSZXZlcnQgLSBbRVdTXSBEbyBub3QgcmV0cnkgbGF5b3V0LXRlc3RzIGJ1aWxk
IGlmIHRoZSBmbGFreSB0ZXN0IGZhaWx1cmVzIGFyZSBhbHNvIHByZXNlbnQgaW4gY2xlYW4gdHJl
ZSBydW4KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
QmluZGluZ3MvVGVzdFJ1bm5lci5pZGwgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCmluZGV4IDA4OTg5YmY3NGZlNjVlNTEwM2U1
YjRhZGQ1MTA4ZTU4ZDRlYzA2N2UuLjZlZDliZmI2MjI5ODg3YTg1MWRhYTBmMDA0OTk3YzFmMzQ3
ODc5ZmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
QmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbApAQCAtMzQzLDYgKzM0Myw3IEBAIGlu
dGVyZmFjZSBUZXN0UnVubmVyIHsKICAgICBib29sZWFuIGhhc1N0YXRpc3RpY3NJc29sYXRlZFNl
c3Npb24oRE9NU3RyaW5nIGhvc3ROYW1lKTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NTaG91bGRE
b3duZ3JhZGVSZWZlcnJlcihib29sZWFuIHZhbHVlLCBvYmplY3QgY2FsbGJhY2spOwogICAgIHZv
aWQgc2V0U3RhdGlzdGljc1Nob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXMoYm9vbGVhbiB2YWx1
ZSwgb2JqZWN0IGNhbGxiYWNrLCBvcHRpb25hbCBib29sZWFuIG9ubHlPblNpdGVzV2l0aG91dFVz
ZXJJbnRlcmFjdGlvbik7CisgICAgdm9pZCBzZXRTdGF0aXN0aWNzRmlyc3RQYXJ0eVdlYnNpdGVE
YXRhUmVtb3ZhbE1vZGUoYm9vbGVhbiB2YWx1ZSwgb2JqZWN0IGNhbGxiYWNrKTsKIAogICAgIC8v
IEluamVjdGVkIGJ1bmRsZSBmb3JtIGNsaWVudC4KICAgICB2b2lkIGluc3RhbGxUZXh0RGlkQ2hh
bmdlSW5UZXh0RmllbGRDYWxsYmFjayhvYmplY3QgY2FsbGJhY2spOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcApp
bmRleCA3ZWE1MzU4OGRlOWU2ZGZmNzQ0ODI2MjdlNGM5OGI4M2YyZTAwMGQzLi5mYWVkYWY1NzQ1
YmJjNzhiOWRiNWM4NzU3ZGM0ODlmMmY5YTAyZjk4IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcApAQCAtMzM3
LDYgKzMzNywxMSBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpkaWRSZWNlaXZlTWVzc2FnZVRvUGFn
ZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgbQogICAgICAgICByZXR1cm47CiAg
ICAgfQogCisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUs
ICJDYWxsRGlkU2V0Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUiKSkgeworICAgICAg
ICBtX3Rlc3RSdW5uZXItPnN0YXRpc3RpY3NDYWxsRGlkU2V0Rmlyc3RQYXJ0eVdlYnNpdGVEYXRh
UmVtb3ZhbE1vZGVDYWxsYmFjaygpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgaWYg
KFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJDYWxsRGlkUmVzZXRT
dGF0aXN0aWNzVG9Db25zaXN0ZW50U3RhdGUiKSkgewogICAgICAgICBtX3Rlc3RSdW5uZXItPnN0
YXRpc3RpY3NDYWxsRGlkUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZUNhbGxiYWNrKCk7CiAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L1Rlc3RSdW5uZXIuY3BwCmluZGV4IDI4NGJiODg5YWNhODI1MGRhODJjZjI3MWViNzcwNzNlOGFm
ZDg1MmYuLjE1MjQxZjliYzhmMWViZTIwMjJhMDI3YzhiZWVhNWQ1YmI1YTQ5M2MgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAK
KysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNw
cApAQCAtNzUyLDYgKzc1Miw3IEBAIGVudW0gewogICAgIFN0YXRpc3RpY3NEaWRTZXRCbG9ja0Nv
b2tpZXNGb3JIb3N0Q2FsbGJhY2tJRCwKICAgICBTdGF0aXN0aWNzRGlkU2V0U2hvdWxkRG93bmdy
YWRlUmVmZXJyZXJDYWxsYmFja0lELAogICAgIFN0YXRpc3RpY3NEaWRTZXRTaG91bGRCbG9ja1Ro
aXJkUGFydHlDb29raWVzQ2FsbGJhY2tJRCwKKyAgICBTdGF0aXN0aWNzRGlkU2V0Rmlyc3RQYXJ0
eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGVDYWxsYmFja0lELAogICAgIEFsbFN0b3JhZ2VBY2Nlc3NF
bnRyaWVzQ2FsbGJhY2tJRCwKICAgICBEaWRSZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHNDYWxs
YmFja0lELAogICAgIEdldEFwcGxpY2F0aW9uTWFuaWZlc3RDYWxsYmFja0lELApAQCAtMjI0NCw2
ICsyMjQ1LDI0IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c3RhdGlzdGljc0NhbGxEaWRTZXRTaG91bGRC
bG9ja1RoaXJkUGFydHlDb29raWVzQ2FsbGJhY2soKQogICAgIG1faGFzU2V0QmxvY2tUaGlyZFBh
cnR5Q29va2llc0NhbGxiYWNrID0gZmFsc2U7CiB9CiAKK3ZvaWQgVGVzdFJ1bm5lcjo6c2V0U3Rh
dGlzdGljc0ZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlKGJvb2wgdmFsdWUsIEpTVmFs
dWVSZWYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKG1faGFzU2V0Rmlyc3RQYXJ0eVdl
YnNpdGVEYXRhUmVtb3ZhbE1vZGVDYWxsYmFjaykKKyAgICAgICAgcmV0dXJuOworCisgICAgY2Fj
aGVUZXN0UnVubmVyQ2FsbGJhY2soU3RhdGlzdGljc0RpZFNldEZpcnN0UGFydHlXZWJzaXRlRGF0
YVJlbW92YWxNb2RlQ2FsbGJhY2tJRCwgY29tcGxldGlvbkhhbmRsZXIpOworICAgIFdLUmV0YWlu
UHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRo
VVRGOENTdHJpbmcoIlNldFN0YXRpc3RpY3NGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9k
ZSIpKTsKKyAgICBXS1JldGFpblB0cjxXS0Jvb2xlYW5SZWY+IG1lc3NhZ2VCb2R5ID0gYWRvcHRX
SyhXS0Jvb2xlYW5DcmVhdGUodmFsdWUpKTsKKyAgICBXS0J1bmRsZVBvc3RTeW5jaHJvbm91c01l
c3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1bmRsZSgpLCBtZXNzYWdlTmFtZS5n
ZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCksIG51bGxwdHIpOworICAgIG1faGFzU2V0Rmlyc3RQYXJ0
eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGVDYWxsYmFjayA9IHRydWU7Cit9CisKK3ZvaWQgVGVzdFJ1
bm5lcjo6c3RhdGlzdGljc0NhbGxEaWRTZXRGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9k
ZUNhbGxiYWNrKCkKK3sKKyAgICBjYWxsVGVzdFJ1bm5lckNhbGxiYWNrKFN0YXRpc3RpY3NEaWRT
ZXRGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZUNhbGxiYWNrSUQpOworICAgIG1faGFz
U2V0Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGVDYWxsYmFjayA9IGZhbHNlOworfQor
CiB2b2lkIFRlc3RSdW5uZXI6OnN0YXRpc3RpY3NDYWxsQ2xlYXJUaHJvdWdoV2Vic2l0ZURhdGFS
ZW1vdmFsQ2FsbGJhY2soKQogewogICAgIGNhbGxUZXN0UnVubmVyQ2FsbGJhY2soU3RhdGlzdGlj
c0RpZENsZWFyVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbENhbGxiYWNrSUQpOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmggYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAppbmRleCA1
ZjNjYmU4NzNhM2IxNWFjYWRiNmJlMzBkZjVhZGM2MzFhNzBhZDUxLi41MGRiODc3MmM4ZmZlZjhh
NzM4MWE3MDE4NDdiM2YyNjdhOGY5NGM4IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaApAQCAtNDQ0LDYgKzQ0NCw4IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHN0YXRpc3RpY3NDYWxsRGlkU2V0U2hvdWxkRG93bmdyYWRlUmVmZXJyZXJD
YWxsYmFjaygpOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc1Nob3VsZEJsb2NrVGhpcmRQYXJ0eUNv
b2tpZXMoYm9vbCB2YWx1ZSwgSlNWYWx1ZVJlZiBjYWxsYmFjaywgYm9vbCBvbmx5T25TaXRlc1dp
dGhvdXRVc2VySW50ZXJhY3Rpb24pOwogICAgIHZvaWQgc3RhdGlzdGljc0NhbGxEaWRTZXRTaG91
bGRCbG9ja1RoaXJkUGFydHlDb29raWVzQ2FsbGJhY2soKTsKKyAgICB2b2lkIHNldFN0YXRpc3Rp
Y3NGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZShib29sIHZhbHVlLCBKU1ZhbHVlUmVm
IGNhbGxiYWNrKTsKKyAgICB2b2lkIHN0YXRpc3RpY3NDYWxsRGlkU2V0Rmlyc3RQYXJ0eVdlYnNp
dGVEYXRhUmVtb3ZhbE1vZGVDYWxsYmFjaygpOwogICAgIHZvaWQgc3RhdGlzdGljc1Jlc2V0VG9D
b25zaXN0ZW50U3RhdGUoSlNWYWx1ZVJlZiBjb21wbGV0aW9uSGFuZGxlcik7CiAgICAgdm9pZCBz
dGF0aXN0aWNzQ2FsbERpZFJlc2V0VG9Db25zaXN0ZW50U3RhdGVDYWxsYmFjaygpOwogCkBAIC01
ODAsNiArNTgyLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fZHVtcEFsbEhUVFBSZWRpcmVjdGVk
UmVzcG9uc2VIZWFkZXJzIHsgZmFsc2UgfTsKICAgICBib29sIG1faGFzU2V0RG93bmdyYWRlUmVm
ZXJyZXJDYWxsYmFjayB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhc1NldEJsb2NrVGhpcmRQYXJ0
eUNvb2tpZXNDYWxsYmFjayB7IGZhbHNlIH07CisgICAgYm9vbCBtX2hhc1NldEZpcnN0UGFydHlX
ZWJzaXRlRGF0YVJlbW92YWxNb2RlQ2FsbGJhY2sgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV1RSCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9s
bGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4
IGYyMWU4OWJlNzdmNjAxODYzZTExYWVhNzY1ZDYxNDg2OTFkY2UwOGUuLmZhNjNmZTJmNGIwNDVj
N2FiM2Q0YjBmZmJjOGIyOTg1ZmM4NWNmMTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dENvbnRyb2xsZXIuY3BwCkBAIC0zNTgyLDYgKzM1ODIsMTQgQEAgdm9pZCBUZXN0Q29udHJvbGxl
cjo6c2V0U3RhdGlzdGljc1Nob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXMoYm9vbCB2YWx1ZSwg
Ym9vbAogICAgIG1fY3VycmVudEludm9jYXRpb24tPmRpZFNldFNob3VsZEJsb2NrVGhpcmRQYXJ0
eUNvb2tpZXMoKTsKIH0KIAordm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc0ZpcnN0
UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlKGJvb2wgdmFsdWUpCit7CisgICAgUmVzb3VyY2VT
dGF0aXN0aWNzQ2FsbGJhY2tDb250ZXh0IGNvbnRleHQoKnRoaXMpOworICAgIFdLV2Vic2l0ZURh
dGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1v
dmFsTW9kZUZvclRlc3RpbmcoVGVzdENvbnRyb2xsZXI6OndlYnNpdGVEYXRhU3RvcmUoKSwgdmFs
dWUsICZjb250ZXh0LCByZXNvdXJjZVN0YXRpc3RpY3NWb2lkUmVzdWx0Q2FsbGJhY2spOworICAg
IHJ1blVudGlsKGNvbnRleHQuZG9uZSwgbm9UaW1lb3V0KTsKKyAgICBtX2N1cnJlbnRJbnZvY2F0
aW9uLT5kaWRTZXRGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSgpOworfQorCiB2b2lk
IFRlc3RDb250cm9sbGVyOjpzdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSgpCiB7CiAg
ICAgUmVzb3VyY2VTdGF0aXN0aWNzQ2FsbGJhY2tDb250ZXh0IGNvbnRleHQoKnRoaXMpOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCmluZGV4IGQ2Y2IwZTIwN2I5ZmU4ZTJl
MDYzODM3YzY3NmQ4ZTAxYjZmOWM2MDUuLjliNWU2NmYzZmI0MTZhMjdlN2Y3ZGUyYzUyY2RiNGQ4
ZTFjM2Y0MGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xs
ZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKQEAgLTI1
NCw2ICsyNTQsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNTdGF0aXN0aWNzSXNvbGF0ZWRTZXNz
aW9uKFdLU3RyaW5nUmVmIGhvc3ROYW1lKTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NTaG91bGRE
b3duZ3JhZGVSZWZlcnJlcihib29sIHZhbHVlKTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NTaG91
bGRCbG9ja1RoaXJkUGFydHlDb29raWVzKGJvb2wgdmFsdWUsIGJvb2wgb25seU9uU2l0ZXNXaXRo
b3V0VXNlckludGVyYWN0aW9uKTsKKyAgICB2b2lkIHNldFN0YXRpc3RpY3NGaXJzdFBhcnR5V2Vi
c2l0ZURhdGFSZW1vdmFsTW9kZShib29sIHZhbHVlKTsKICAgICB2b2lkIHN0YXRpc3RpY3NSZXNl
dFRvQ29uc2lzdGVudFN0YXRlKCk7CiAKICAgICB2b2lkIGdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRy
aWVzKCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9u
LmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCmluZGV4IDdi
MjdkYTE3NTZjNmZkZmQ1ZTdmYzQ4NmM1ZWVhN2I5Y2M1ZWI0ZTEuLjhkNmEyNDZiNDNhYzJhZDE4
ZjcwMTJkMjg0Y2M2OTJlNDA2MWNjN2UgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdEludm9jYXRpb24uY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdElu
dm9jYXRpb24uY3BwCkBAIC0xNTYzLDYgKzE1NjMsMTMgQEAgV0tSZXRhaW5QdHI8V0tUeXBlUmVm
PiBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3Rl
ZEIKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAgIAorICAgIGlmIChXS1N0cmlu
Z0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiU2V0U3RhdGlzdGljc0ZpcnN0UGFy
dHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlIikpIHsKKyAgICAgICAgQVNTRVJUKFdLR2V0VHlwZUlE
KG1lc3NhZ2VCb2R5KSA9PSBXS0Jvb2xlYW5HZXRUeXBlSUQoKSk7CisgICAgICAgIFdLQm9vbGVh
blJlZiB2YWx1ZSA9IHN0YXRpY19jYXN0PFdLQm9vbGVhblJlZj4obWVzc2FnZUJvZHkpOworICAg
ICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuc2V0U3RhdGlzdGljc0ZpcnN0UGFydHlX
ZWJzaXRlRGF0YVJlbW92YWxNb2RlKFdLQm9vbGVhbkdldFZhbHVlKHZhbHVlKSk7CisgICAgICAg
IHJldHVybiBudWxscHRyOworICAgIH0KKyAgICAKICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9V
VEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFscyIpKSB7
CiAgICAgICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5yZW1vdmVBbGxTZXNzaW9uQ3Jl
ZGVudGlhbHMoKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xODUyLDYgKzE4NTksMTIg
QEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkU2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2ll
cygpCiAgICAgV0tQYWdlUG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKFRlc3RDb250cm9sbGVy
OjpzaW5nbGV0b24oKS5tYWluV2ViVmlldygpLT5wYWdlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBu
dWxscHRyKTsKIH0KIAordm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkU2V0Rmlyc3RQYXJ0eVdlYnNp
dGVEYXRhUmVtb3ZhbE1vZGUoKQoreworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNz
YWdlTmFtZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkNhbGxEaWRT
ZXRGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSIpKTsKKyAgICBXS1BhZ2VQb3N0TWVz
c2FnZVRvSW5qZWN0ZWRCdW5kbGUoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJW
aWV3KCktPnBhZ2UoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG51bGxwdHIpOworfQorCiB2b2lkIFRl
c3RJbnZvY2F0aW9uOjpkaWRSZXNldFN0YXRpc3RpY3NUb0NvbnNpc3RlbnRTdGF0ZSgpCiB7CiAg
ICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lID0gYWRvcHRXSyhXS1N0cmlu
Z0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQ2FsbERpZFJlc2V0U3RhdGlzdGljc1RvQ29uc2lzdGVu
dFN0YXRlIikpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2Nh
dGlvbi5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCmluZGV4IDc4
MDZmYTI5N2RmMmUwMTZhNmI4YjRhMDY2YzU2NmUzYTY4YWYyZjEuLmUxYzJjNWRiZTUyNjY3MWU4
M2IxNDdkNTFjY2JiNjcxYzIxNzRmMmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdEludm9jYXRpb24uaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZv
Y2F0aW9uLmgKQEAgLTc1LDYgKzc1LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkQ2xlYXJTdGF0
aXN0aWNzVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbCgpOwogICAgIHZvaWQgZGlkU2V0U2hvdWxk
RG93bmdyYWRlUmVmZXJyZXIoKTsKICAgICB2b2lkIGRpZFNldFNob3VsZEJsb2NrVGhpcmRQYXJ0
eUNvb2tpZXMoKTsKKyAgICB2b2lkIGRpZFNldEZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxN
b2RlKCk7CiAgICAgdm9pZCBkaWRSZXNldFN0YXRpc3RpY3NUb0NvbnNpc3RlbnRTdGF0ZSgpOwog
ICAgIHZvaWQgZGlkU2V0QmxvY2tDb29raWVzRm9ySG9zdCgpOwogICAgIHZvaWQgZGlkU2V0U3Rh
dGlzdGljc0RlYnVnTW9kZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDhiYmVjODUxMGFiZGJkZDkzM2YxZjgwZThiOThl
M2ZhMGM5MGEwM2QuLjUzY2ZmOGNmMDBkMjMxMzY3MzYxZGU1MDk5M2YwMzIyOGU4MGFlMTEgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyMyBAQAorMjAxOS0xMi0wMiAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVy
QGFwcGxlLmNvbT4KKworICAgICAgICBSZXNvdXJjZSBMb2FkIFN0YXRpc3RpY3MgKGV4cGVyaW1l
bnRhbCk6IERlbGV0ZSBub24tY29va2llIHdlYnNpdGUgZGF0YSBhZnRlciA3IGRheXMgb2Ygbm8g
dXNlciBpbnRlcmFjdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA0Nzc5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NzU3ODk4OT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvdGVzdHMv
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy93ZWJzaXRlLWRhdGEtcmVtb3ZhbC1mb3Itc2l0ZS1uYXZp
Z2F0ZWQtdG8td2l0aC1saW5rLWRlY29yYXRpb24tZGF0YWJhc2UuaHRtbDoKKyAgICAgICAgKiBo
dHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvd2Vic2l0ZS1kYXRhLXJlbW92YWwtZm9y
LXNpdGUtbmF2aWdhdGVkLXRvLXdpdGgtbGluay1kZWNvcmF0aW9uLmh0bWw6CisgICAgICAgICAg
ICBGaXhlZCBzb21lIG1pbm9yIHN0dWZmIGluIHRoZXNlIHR3byB0ZXN0IGNhc2VzIHRvIG1ha2Ug
YW55IGZhaWx1cmVzIG1vcmUgY2xlYXIuCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzL3dlYnNpdGUtZGF0YS1yZW1vdmFsLWZvci1zaXRlLXdpdGgtdXNlci1pbnRl
cmFjdGlvbi1kYXRhYmFzZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVz
dHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy93ZWJzaXRlLWRhdGEtcmVtb3ZhbC1mb3Itc2l0ZS13
aXRoLXVzZXItaW50ZXJhY3Rpb24tZGF0YWJhc2UuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0
cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3dlYnNpdGUtZGF0YS1yZW1vdmFsLWZvci1z
aXRlLXdpdGgtdXNlci1pbnRlcmFjdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy93ZWJzaXRlLWRhdGEtcmVtb3ZhbC1m
b3Itc2l0ZS13aXRoLXVzZXItaW50ZXJhY3Rpb24uaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0
cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3dlYnNpdGUtZGF0YS1yZW1vdmFsLWZvci1z
aXRlLXdpdGhvdXQtdXNlci1pbnRlcmFjdGlvbi1kYXRhYmFzZS1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy93ZWJzaXRlLWRh
dGEtcmVtb3ZhbC1mb3Itc2l0ZS13aXRob3V0LXVzZXItaW50ZXJhY3Rpb24tZGF0YWJhc2UuaHRt
bDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3dl
YnNpdGUtZGF0YS1yZW1vdmFsLWZvci1zaXRlLXdpdGhvdXQtdXNlci1pbnRlcmFjdGlvbi1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy93ZWJzaXRlLWRhdGEtcmVtb3ZhbC1mb3Itc2l0ZS13aXRob3V0LXVzZXItaW50ZXJhY3Rp
b24uaHRtbDogQWRkZWQuCisKIDIwMTktMTItMDIgIE5pa2l0YSBWYXNpbHlldiAgPG52YXNpbHll
dkBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogUHJvdmlkZSBVSSB0byBjb252
ZXJ0IGJldHdlZW4gc1JHQiBhbmQgcDMgY29sb3Igc3BhY2VzCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvd2Vic2l0ZS1kYXRhLXJlbW92
YWwtZm9yLXNpdGUtbmF2aWdhdGVkLXRvLXdpdGgtbGluay1kZWNvcmF0aW9uLWRhdGFiYXNlLmh0
bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvd2Vic2l0
ZS1kYXRhLXJlbW92YWwtZm9yLXNpdGUtbmF2aWdhdGVkLXRvLXdpdGgtbGluay1kZWNvcmF0aW9u
LWRhdGFiYXNlLmh0bWwKaW5kZXggMWY4NDgxMzgyNGZkZmVmNDhhZTRhNDczZTExNzU4NDAzY2Ux
ODJkNS4uZWIwY2Y1YzU2Yjk3Yjc5M2IwODM2N2FiMGM5YWZjNjZlNTRhNzcxOCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3dlYnNpdGUt
ZGF0YS1yZW1vdmFsLWZvci1zaXRlLW5hdmlnYXRlZC10by13aXRoLWxpbmstZGVjb3JhdGlvbi1k
YXRhYmFzZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy93ZWJzaXRlLWRhdGEtcmVtb3ZhbC1mb3Itc2l0ZS1uYXZpZ2F0ZWQtdG8td2l0aC1s
aW5rLWRlY29yYXRpb24tZGF0YWJhc2UuaHRtbApAQCAtMTI3LDcgKzEyNyw3IEBACiAKICAgICAg
ICAgICAgICAgICBpZiAoKytpbnRlcnZhbENvdW50ZXJJREIgPj0gbWF4SW50ZXJ2YWxzKSB7CiAg
ICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tJREJJbnRlcnZhbElEKTsKLSAg
ICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJCZWZvcmUgZGVsZXRpb246IElEQiBlbnRyeSBk
b2VzIG5vdCBleGlzdC4iKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJBZnRlciBk
ZWxldGlvbjogSURCIGVudHJ5IGNoZWNrcyBleGhhdXN0ZWQuIik7CiAgICAgICAgICAgICAgICAg
ICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgIGNoZWNr
SURCQ2FsbGJhY2soKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewpAQCAtMTY2LDYgKzE2Niw4
IEBACiAgICAgICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUludGVydmFsSUQgPSBzZXRJbnRlcnZh
bChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICBpZiAoKytpbnRlcnZhbENvdW50ZXJMb2Nh
bFN0b3JhZ2UgPj0gbWF4SW50ZXJ2YWxzKSB7CiAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50
ZXJ2YWwoY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAg
bGV0IHZhbHVlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0obG9jYWxTdG9yYWdlTmFtZSk7CisgICAg
ICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQmVmb3JlIGRlbGV0aW9uOiBMb2NhbFN0b3JhZ2Ug
ZW50cnkgIiArICh2YWx1ZSA9PT0gbG9jYWxTdG9yYWdlVmFsdWUgPyAiZG9lcyIgOiAiZG9lcyBu
b3QiKSArICIgZXhpc3QuIik7CiAgICAgICAgICAgICAgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdl
Q2FsbGJhY2soKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRlc3RSdW5uZXIuaXNTdGF0
aXN0aWNzSGFzTG9jYWxTdG9yYWdlKGRlc3RpbmF0aW9uT3JpZ2luKSkgewogICAgICAgICAgICAg
ICAgICAgICBjbGVhckludGVydmFsKGNoZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJRCk7CkBAIC0x
NzksNiArMTgxLDggQEAKICAgICAgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJRCA9
IHNldEludGVydmFsKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgIGlmICgrK2ludGVydmFs
Q291bnRlckxvY2FsU3RvcmFnZSA+PSBtYXhJbnRlcnZhbHMpIHsKICAgICAgICAgICAgICAgICAg
ICAgY2xlYXJJbnRlcnZhbChjaGVja0xvY2FsU3RvcmFnZUludGVydmFsSUQpOworICAgICAgICAg
ICAgICAgICAgICBsZXQgdmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShsb2NhbFN0b3JhZ2VO
YW1lKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJBZnRlciBkZWxldGlvbjogTG9j
YWxTdG9yYWdlIGVudHJ5ICIgKyAodmFsdWUgPT09IGxvY2FsU3RvcmFnZVZhbHVlID8gImRvZXMi
IDogImRvZXMgbm90IikgKyAiIGV4aXN0LiIpOwogICAgICAgICAgICAgICAgICAgICBjaGVja0xv
Y2FsU3RvcmFnZUNhbGxiYWNrKCk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICghdGVzdFJ1
bm5lci5pc1N0YXRpc3RpY3NIYXNMb2NhbFN0b3JhZ2UoZGVzdGluYXRpb25PcmlnaW4pKSB7CiAg
ICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZh
bElEKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy93ZWJzaXRlLWRhdGEtcmVtb3ZhbC1mb3Itc2l0ZS1uYXZpZ2F0ZWQtdG8td2l0aC1s
aW5rLWRlY29yYXRpb24uaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy93ZWJzaXRlLWRhdGEtcmVtb3ZhbC1mb3Itc2l0ZS1uYXZpZ2F0ZWQtdG8td2l0
aC1saW5rLWRlY29yYXRpb24uaHRtbAppbmRleCBiNWIyOGNjYzczY2U0Mjc2NzY0MTBkMjQwNDQx
NDZhZTY4ZWVkYzg3Li5hNzkwZWFkM2Y5Y2FmMmQ5ZDI2NjlhMzM0N2Q3ZDdhOTk1Y2E4YmYwIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mv
d2Vic2l0ZS1kYXRhLXJlbW92YWwtZm9yLXNpdGUtbmF2aWdhdGVkLXRvLXdpdGgtbGluay1kZWNv
cmF0aW9uLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzL3dlYnNpdGUtZGF0YS1yZW1vdmFsLWZvci1zaXRlLW5hdmlnYXRlZC10by13aXRoLWxp
bmstZGVjb3JhdGlvbi5odG1sCkBAIC0xMjYsNyArMTI2LDcgQEAKIAogICAgICAgICAgICAgICAg
IGlmICgrK2ludGVydmFsQ291bnRlcklEQiA+PSBtYXhJbnRlcnZhbHMpIHsKICAgICAgICAgICAg
ICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0lEQkludGVydmFsSUQpOwotICAgICAgICAgICAg
ICAgICAgICBhZGRPdXRwdXQoIkJlZm9yZSBkZWxldGlvbjogSURCIGVudHJ5IGRvZXMgbm90IGV4
aXN0LiIpOworICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkFmdGVyIGRlbGV0aW9uOiBJ
REIgZW50cnkgY2hlY2tzIGV4aGF1c3RlZC4iKTsKICAgICAgICAgICAgICAgICAgICAgc2VtYXBo
b3JlSURCQ2hlY2sgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgY2hlY2tJREJDYWxsYmFj
aygpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CkBAIC0xNjUsNiArMTY1LDggQEAKICAgICAg
ICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJRCA9IHNldEludGVydmFsKGZ1bmN0aW9u
KCkgewogICAgICAgICAgICAgICAgIGlmICgrK2ludGVydmFsQ291bnRlckxvY2FsU3RvcmFnZSA+
PSBtYXhJbnRlcnZhbHMpIHsKICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVj
a0xvY2FsU3RvcmFnZUludGVydmFsSUQpOworICAgICAgICAgICAgICAgICAgICBsZXQgdmFsdWUg
PSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShsb2NhbFN0b3JhZ2VOYW1lKTsKKyAgICAgICAgICAgICAg
ICAgICAgYWRkT3V0cHV0KCJCZWZvcmUgZGVsZXRpb246IExvY2FsU3RvcmFnZSBlbnRyeSAiICsg
KHZhbHVlID09PSBsb2NhbFN0b3JhZ2VWYWx1ZSA/ICJkb2VzIiA6ICJkb2VzIG5vdCIpICsgIiBl
eGlzdC4iKTsKICAgICAgICAgICAgICAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VDYWxsYmFjaygp
OwogICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NIYXNM
b2NhbFN0b3JhZ2UoZGVzdGluYXRpb25PcmlnaW4pKSB7CiAgICAgICAgICAgICAgICAgICAgIGNs
ZWFySW50ZXJ2YWwoY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEKTsKQEAgLTE3OCw2ICsxODAs
OCBAQAogICAgICAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEID0gc2V0SW50ZXJ2
YWwoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgaWYgKCsraW50ZXJ2YWxDb3VudGVyTG9j
YWxTdG9yYWdlID49IG1heEludGVydmFscykgewogICAgICAgICAgICAgICAgICAgICBjbGVhcklu
dGVydmFsKGNoZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAg
IGxldCB2YWx1ZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGxvY2FsU3RvcmFnZU5hbWUpOworICAg
ICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkFmdGVyIGRlbGV0aW9uOiBMb2NhbFN0b3JhZ2Ug
ZW50cnkgIiArICh2YWx1ZSA9PT0gbG9jYWxTdG9yYWdlVmFsdWUgPyAiZG9lcyIgOiAiZG9lcyBu
b3QiKSArICIgZXhpc3QuIik7CiAgICAgICAgICAgICAgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdl
Q2FsbGJhY2soKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCF0ZXN0UnVubmVyLmlzU3Rh
dGlzdGljc0hhc0xvY2FsU3RvcmFnZShkZXN0aW5hdGlvbk9yaWdpbikpIHsKICAgICAgICAgICAg
ICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0xvY2FsU3RvcmFnZUludGVydmFsSUQpOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3dl
YnNpdGUtZGF0YS1yZW1vdmFsLWZvci1zaXRlLXdpdGgtdXNlci1pbnRlcmFjdGlvbi1kYXRhYmFz
ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3Mvd2Vic2l0ZS1kYXRhLXJlbW92YWwtZm9yLXNpdGUtd2l0aC11c2VyLWludGVyYWN0aW9u
LWRhdGFiYXNlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYzA3NmRiNWNlMGIwZGU0ZWVmMThm
NTI4NmQ0ZjdjZmJiMGRhNDk0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3dlYnNpdGUtZGF0YS1yZW1vdmFsLWZvci1zaXRl
LXdpdGgtdXNlci1pbnRlcmFjdGlvbi1kYXRhYmFzZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwx
NSBAQAorQ2hlY2sgdGhhdCBub24tY29va2llIHdlYnNpdGUgZGF0YSBkb2VzIG5vdCBnZXQgcmVt
b3ZlZCBmb3Igc2l0ZXMgd2l0aCB1c2VyIGludGVyYWN0aW9uLgorCitCZWZvcmUgZGVsZXRpb246
IENsaWVudC1zaWRlIGNvb2tpZSBleGlzdHMuCitCZWZvcmUgZGVsZXRpb246IEh0dHBPbmx5IGNv
b2tpZSBleGlzdHMuCitCZWZvcmUgZGVsZXRpb246IFJlZ3VsYXIgc2VydmVyLXNpZGUgY29va2ll
IGV4aXN0cy4KK0JlZm9yZSBkZWxldGlvbjogTG9jYWxTdG9yYWdlIGVudHJ5IGRvZXMgZXhpc3Qu
CitCZWZvcmUgZGVsZXRpb246IElEQiBlbnRyeSBkb2VzIGV4aXN0LgorCitBZnRlciBkZWxldGlv
bjogSHR0cE9ubHkgY29va2llIGV4aXN0cy4KK0FmdGVyIGRlbGV0aW9uOiBDbGllbnQtc2lkZSBj
b29raWUgZXhpc3RzLgorQWZ0ZXIgZGVsZXRpb246IFJlZ3VsYXIgc2VydmVyLXNpZGUgY29va2ll
IGV4aXN0cy4KK0FmdGVyIGRlbGV0aW9uOiBMb2NhbFN0b3JhZ2UgZW50cnkgZG9lcyBleGlzdC4K
K0FmdGVyIGRlbGV0aW9uOiBJREIgZW50cnkgZG9lcyBleGlzdC4KKworCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvd2Vic2l0ZS1kYXRh
LXJlbW92YWwtZm9yLXNpdGUtd2l0aC11c2VyLWludGVyYWN0aW9uLWRhdGFiYXNlLmh0bWwgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvd2Vic2l0ZS1kYXRh
LXJlbW92YWwtZm9yLXNpdGUtd2l0aC11c2VyLWludGVyYWN0aW9uLWRhdGFiYXNlLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMTllNjc3YzkyMjQ3NTk2MGYwNDVmNTE1YjA0MTkyZWI2ZjJmNjY5YwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy93ZWJzaXRlLWRhdGEtcmVtb3ZhbC1mb3Itc2l0ZS13aXRoLXVzZXItaW50ZXJhY3Rpb24tZGF0
YWJhc2UuaHRtbApAQCAtMCwwICsxLDI1NCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorICAgIDxzY3JpcHQgc3JjPSIvY29va2llcy9yZXNvdXJjZXMvY29va2llLXV0aWxpdGll
cy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy91dGlsLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0ic2V0VGltZW91dCgncnVuVGVzdCgpJywgMCki
PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPkNoZWNrIHRoYXQgbm9uLWNvb2tpZSB3ZWJzaXRlIGRh
dGEgZG9lcyBub3QgZ2V0IHJlbW92ZWQgZm9yIHNpdGVzIHdpdGggdXNlciBpbnRlcmFjdGlvbi48
L2Rpdj4KKzxicj4KKzxkaXYgaWQ9Im91dHB1dCI+PC9kaXY+Cis8YnI+Cis8c2NyaXB0PgorICAg
IHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OworICAgIHRlc3RSdW5uZXIuc2V0VXNlSVRQRGF0YWJhc2UodHJ1ZSk7CisKKyAgICBjb25zdCBo
dHRwT25seUNvb2tpZU5hbWUgPSAiaHR0cC1vbmx5LWNvb2tpZSI7CisgICAgY29uc3Qgc2VydmVy
U2lkZUNvb2tpZU5hbWUgPSAic2VydmVyLXNpZGUtY29va2llIjsKKyAgICBjb25zdCBjbGllbnRT
aWRlQ29va2llTmFtZSA9ICJjbGllbnQtc2lkZS1jb29raWUiOworCisgICAgZnVuY3Rpb24gc29y
dFN0cmluZ0FycmF5KGEsIGIpIHsKKyAgICAgICAgYSA9IGEudG9Mb3dlckNhc2UoKTsKKyAgICAg
ICAgYiA9IGIudG9Mb3dlckNhc2UoKTsKKworICAgICAgICByZXR1cm4gYSA+IGIgPyAxIDogYiA+
IGEgPyAtMSA6IDA7CisgICAgfQorCisgICAgZnVuY3Rpb24gYWRkTGluZWJyZWFrVG9PdXRwdXQo
KSB7CisgICAgICAgIGxldCBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnIiKTsK
KyAgICAgICAgb3V0cHV0LmFwcGVuZENoaWxkKGVsZW1lbnQpOworICAgIH0KKworICAgIGZ1bmN0
aW9uIGFkZE91dHB1dChtZXNzYWdlKSB7CisgICAgICAgIGxldCBlbGVtZW50ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIGVsZW1lbnQuaW5uZXJUZXh0ID0gbWVzc2Fn
ZTsKKyAgICAgICAgb3V0cHV0LmFwcGVuZENoaWxkKGVsZW1lbnQpOworICAgIH0KKworICAgIGZ1
bmN0aW9uIGNoZWNrQ29va2llcyhpc0FmdGVyRGVsZXRpb24pIHsKKyAgICAgICAgbGV0IHVuc29y
dGVkVGVzdFBhc3NlZE1lc3NhZ2VzID0gW107CisgICAgICAgIGxldCBjb29raWVzID0gaW50ZXJu
YWxzLmdldENvb2tpZXMoKTsKKyAgICAgICAgaWYgKCFjb29raWVzLmxlbmd0aCkKKyAgICAgICAg
ICAgIHRlc3RGYWlsZWQoKGlzQWZ0ZXJEZWxldGlvbiA/ICJBZnRlciIgOiAiQmVmb3JlIikgKyAi
IHNjcmlwdC1hY2Nlc3NpYmxlIGRlbGV0aW9uOiBObyBjb29raWVzIGZvdW5kLiIpOworICAgICAg
ICBmb3IgKGxldCBjb29raWUgb2YgY29va2llcykgeworICAgICAgICAgICAgc3dpdGNoIChjb29r
aWUubmFtZSkgeworICAgICAgICAgICAgICAgIGNhc2UgaHR0cE9ubHlDb29raWVOYW1lOgorICAg
ICAgICAgICAgICAgICAgICB1bnNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcy5wdXNoKChpc0FmdGVy
RGVsZXRpb24gPyAiQWZ0ZXIiIDogIkJlZm9yZSIpICsgIiBkZWxldGlvbjogIiArIChpc0FmdGVy
RGVsZXRpb24gPyAiICIgOiAiIikgKyAiSHR0cE9ubHkgY29va2llIGV4aXN0cy4iKTsKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBzZXJ2ZXJTaWRlQ29v
a2llTmFtZToKKyAgICAgICAgICAgICAgICAgICAgdW5zb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMu
cHVzaCgoaXNBZnRlckRlbGV0aW9uID8gIkFmdGVyIiA6ICJCZWZvcmUiKSArICIgZGVsZXRpb246
IFJlZ3VsYXIgc2VydmVyLXNpZGUgY29va2llIGV4aXN0cy4iKTsKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBjbGllbnRTaWRlQ29va2llTmFtZToKKyAg
ICAgICAgICAgICAgICAgICAgdW5zb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMucHVzaCgoaXNBZnRl
ckRlbGV0aW9uID8gIkFmdGVyIiA6ICJCZWZvcmUiKSArICIgZGVsZXRpb246IENsaWVudC1zaWRl
IGNvb2tpZSBleGlzdHMuIik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIGxldCBzb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMgPSB1
bnNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcy5zb3J0KHNvcnRTdHJpbmdBcnJheSk7CisgICAgICAg
IGZvciAobGV0IHRlc3RQYXNzZWRNZXNzYWdlIG9mIHNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcykg
eworICAgICAgICAgICAgYWRkT3V0cHV0KHRlc3RQYXNzZWRNZXNzYWdlKTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIGNvbnN0IGRiTmFtZSA9ICJUZXN0RGF0YWJhc2UiOworCisgICAgZnVuY3Rp
b24gY3JlYXRlSURCRGF0YVN0b3JlKGNhbGxiYWNrKSB7CisgICAgICAgIGxldCByZXF1ZXN0ID0g
aW5kZXhlZERCLm9wZW4oZGJOYW1lKTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICBhZGRPdXRwdXQoIkNvdWxkbid0IGNyZWF0ZSBpbmRleGVkREIu
Iik7CisgICAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAgIH07CisgICAgICAgIHJlcXVl
c3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgICAgIGxldCBk
YiA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CisgICAgICAgICAgICBsZXQgb2JqU3RvcmUgPSBkYi5j
cmVhdGVPYmplY3RTdG9yZSgidGVzdCIsIHthdXRvSW5jcmVtZW50OiB0cnVlfSk7CisgICAgICAg
ICAgICBvYmpTdG9yZS5hZGQoInZhbHVlIik7CisgICAgICAgICAgICBjYWxsYmFjaygpOworICAg
ICAgICB9CisgICAgfQorCisgICAgY29uc3QgbWF4SW50ZXJ2YWxzID0gMjA7CisKKyAgICBsZXQg
aW50ZXJ2YWxDb3VudGVySURCOworICAgIGxldCBjaGVja0lEQkNhbGxiYWNrOworICAgIGxldCBj
aGVja0lEQkludGVydmFsSUQ7CisgICAgbGV0IHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7Cisg
ICAgZnVuY3Rpb24gY2hlY2tJREJEYXRhU3RvcmVFeGlzdHMoaXNBZnRlckRlbGV0aW9uLCBjYWxs
YmFjaykgeworICAgICAgICBsZXQgcmVxdWVzdDsKKyAgICAgICAgaW50ZXJ2YWxDb3VudGVySURC
ID0gMDsKKyAgICAgICAgY2hlY2tJREJDYWxsYmFjayA9IGNhbGxiYWNrOworICAgICAgICBpZiAo
IWlzQWZ0ZXJEZWxldGlvbikgeworICAgICAgICAgICAgLy8gQ2hlY2sgdW50aWwgdGhlcmUgaXMg
YSBJREIuCisgICAgICAgICAgICBjaGVja0lEQkludGVydmFsSUQgPSBzZXRJbnRlcnZhbChmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgICAgICBpZiAoc2VtYXBob3JlSURCQ2hlY2spCisgICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9
IHRydWU7CisKKyAgICAgICAgICAgICAgICBpZiAoKytpbnRlcnZhbENvdW50ZXJJREIgPj0gbWF4
SW50ZXJ2YWxzKSB7CisgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tJREJJ
bnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJCZWZvcmUgZGVsZXRp
b246IElEQiBlbnRyeSBkb2VzIG5vdCBleGlzdC4iKTsKKyAgICAgICAgICAgICAgICAgICAgc2Vt
YXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tJREJDYWxs
YmFjaygpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHJl
cXVlc3QgPSBpbmRleGVkREIub3BlbihkYk5hbWUpOworICAgICAgICAgICAgICAgICAgICByZXF1
ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjbGVh
ckludGVydmFsKGNoZWNrSURCSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAgICAgICBh
ZGRPdXRwdXQoIkNvdWxkbid0IG9wZW4gaW5kZXhlZERCLiIpOworICAgICAgICAgICAgICAgICAg
ICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGZpbmlzaFRlc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAg
ICAgcmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBMZXQgdGhlIG5leHQgaW50ZXJ2YWwgY2hlY2sgYWdhaW4uCisgICAgICAg
ICAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOworICAgICAgICAgICAg
ICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tJREJJ
bnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQmVmb3JlIGRl
bGV0aW9uOiBJREIgZW50cnkgZG9lcyBleGlzdC4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBjaGVj
a0lEQkNhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfSwgMjAwKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8v
IENoZWNrIHVudGlsIHRoZXJlIGlzIG5vIElEQi4KKyAgICAgICAgICAgIGNoZWNrSURCSW50ZXJ2
YWxJRCA9IHNldEludGVydmFsKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBpZiAoc2Vt
YXBob3JlSURCQ2hlY2spCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
ICAgICBzZW1hcGhvcmVJREJDaGVjayA9IHRydWU7CisKKyAgICAgICAgICAgICAgICBpZiAoKytp
bnRlcnZhbENvdW50ZXJJREIgPj0gbWF4SW50ZXJ2YWxzKSB7CisgICAgICAgICAgICAgICAgICAg
IGNsZWFySW50ZXJ2YWwoY2hlY2tJREJJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAg
YWRkT3V0cHV0KCJBZnRlciBkZWxldGlvbjogSURCIGVudHJ5IGRvZXMgZXhpc3QuIik7CisgICAg
ICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7CisgICAgICAgICAgICAg
ICAgICAgIGNoZWNrSURCQ2FsbGJhY2soKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgICAgICByZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJOYW1lKTsKKyAgICAg
ICAgICAgICAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24gKCkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0lEQkludGVydmFsSUQpOworICAgICAg
ICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJDb3VsZG4ndCBvcGVuIGluZGV4ZWREQi4iKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7CisgICAg
ICAgICAgICAgICAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAgICAgICAgICAgICAgIH07
CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24g
KCkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0lEQkludGVy
dmFsSUQpOworICAgICAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJBZnRlciBkZWxldGlv
bjogSURCIGVudHJ5IGRvZXMgbm90IGV4aXN0LiIpOworICAgICAgICAgICAgICAgICAgICAgICAg
c2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbmlz
aFRlc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAv
LyBMZXQgdGhlIG5leHQgaW50ZXJ2YWwgY2hlY2sgYWdhaW4gYmVjYXVzZSBkZWxldGlvbiBtaWdo
dCBiZSBkZWxheWVkLgorICAgICAgICAgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sg
PSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9LCAyMDApOworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IGludGVydmFsQ291
bnRlckxvY2FsU3RvcmFnZTsKKyAgICBsZXQgY2hlY2tMb2NhbFN0b3JhZ2VDYWxsYmFjazsKKyAg
ICBsZXQgY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEOworICAgIGNvbnN0IGxvY2FsU3RvcmFn
ZU5hbWUgPSAidGVzdCI7CisgICAgY29uc3QgbG9jYWxTdG9yYWdlVmFsdWUgPSAidmFsdWUiOwor
ICAgIGZ1bmN0aW9uIGNoZWNrTG9jYWxTdG9yYWdlRXhpc3RzKGlzQWZ0ZXJEZWxldGlvbiwgY2Fs
bGJhY2spIHsKKyAgICAgICAgaW50ZXJ2YWxDb3VudGVyTG9jYWxTdG9yYWdlID0gMDsKKyAgICAg
ICAgY2hlY2tMb2NhbFN0b3JhZ2VDYWxsYmFjayA9IGNhbGxiYWNrOworICAgICAgICBpZiAoIWlz
QWZ0ZXJEZWxldGlvbikgeworICAgICAgICAgICAgLy8gQ2hlY2sgdW50aWwgdGhlcmUgaXMgTG9j
YWxTdG9yYWdlLgorICAgICAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEID0gc2V0
SW50ZXJ2YWwoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgaWYgKCsraW50ZXJ2YWxDb3Vu
dGVyTG9jYWxTdG9yYWdlID49IG1heEludGVydmFscykgeworICAgICAgICAgICAgICAgICAgICBj
bGVhckludGVydmFsKGNoZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAg
ICAgICAgIGxldCB2YWx1ZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGxvY2FsU3RvcmFnZU5hbWUp
OworICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkJlZm9yZSBkZWxldGlvbjogTG9jYWxT
dG9yYWdlIGVudHJ5ICIgKyAodmFsdWUgPT09IGxvY2FsU3RvcmFnZVZhbHVlID8gImRvZXMiIDog
ImRvZXMgbm90IikgKyAiIGV4aXN0LiIpOworICAgICAgICAgICAgICAgICAgICBjaGVja0xvY2Fs
U3RvcmFnZUNhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0ZXN0UnVubmVy
LmlzU3RhdGlzdGljc0hhc0xvY2FsU3RvcmFnZShvcmlnaW5VbmRlclRlc3QpKSB7CisgICAgICAg
ICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEKTsK
KyAgICAgICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0obG9j
YWxTdG9yYWdlTmFtZSk7CisgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQmVmb3JlIGRl
bGV0aW9uOiBMb2NhbFN0b3JhZ2UgZW50cnkgIiArICh2YWx1ZSA9PT0gbG9jYWxTdG9yYWdlVmFs
dWUgPyAiZG9lcyIgOiAiZG9lcyBub3QiKSArICIgZXhpc3QuIik7CisgICAgICAgICAgICAgICAg
ICAgIGNoZWNrTG9jYWxTdG9yYWdlQ2FsbGJhY2soKTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9LCAxMDApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gQ2hlY2sg
dW50aWwgdGhlcmUgaXMgbm8gTG9jYWxTdG9yYWdlLgorICAgICAgICAgICAgY2hlY2tMb2NhbFN0
b3JhZ2VJbnRlcnZhbElEID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAg
ICAgaWYgKCsraW50ZXJ2YWxDb3VudGVyTG9jYWxTdG9yYWdlID49IG1heEludGVydmFscykgewor
ICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrTG9jYWxTdG9yYWdlSW50ZXJ2
YWxJRCk7CisgICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IGxvY2FsU3RvcmFnZS5nZXRJ
dGVtKGxvY2FsU3RvcmFnZU5hbWUpOworICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkFm
dGVyIGRlbGV0aW9uOiBMb2NhbFN0b3JhZ2UgZW50cnkgIiArICh2YWx1ZSA9PT0gbG9jYWxTdG9y
YWdlVmFsdWUgPyAiZG9lcyIgOiAiZG9lcyBub3QiKSArICIgZXhpc3QuIik7CisgICAgICAgICAg
ICAgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlQ2FsbGJhY2soKTsKKyAgICAgICAgICAgICAgICB9
IGVsc2UgaWYgKCF0ZXN0UnVubmVyLmlzU3RhdGlzdGljc0hhc0xvY2FsU3RvcmFnZShvcmlnaW5V
bmRlclRlc3QpKSB7CisgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tMb2Nh
bFN0b3JhZ2VJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gbG9j
YWxTdG9yYWdlLmdldEl0ZW0obG9jYWxTdG9yYWdlTmFtZSk7CisgICAgICAgICAgICAgICAgICAg
IGFkZE91dHB1dCgiQWZ0ZXIgZGVsZXRpb246IExvY2FsU3RvcmFnZSBlbnRyeSAiICsgKHZhbHVl
ID09PSBsb2NhbFN0b3JhZ2VWYWx1ZSA/ICJkb2VzIiA6ICJkb2VzIG5vdCIpICsgIiBleGlzdC4i
KTsKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VDYWxsYmFjaygpOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sIDEwMCk7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBhc3luYyBmdW5jdGlvbiB3cml0ZVdlYnNpdGVEYXRhQW5kQ29udGludWUoKSB7CisgICAg
ICAgIC8vIFdyaXRlIGNvb2tpZXMuCisgICAgICAgIGF3YWl0IGZldGNoKCIvY29va2llcy9yZXNv
dXJjZXMvc2V0LWh0dHAtb25seS1jb29raWUucGhwP2Nvb2tpZU5hbWU9IiArIGh0dHBPbmx5Q29v
a2llTmFtZSwgeyBjcmVkZW50aWFsczogInNhbWUtb3JpZ2luIiB9KTsKKyAgICAgICAgYXdhaXQg
ZmV0Y2goIi9jb29raWVzL3Jlc291cmNlcy9zZXRDb29raWVzLmNnaSIsIHsgaGVhZGVyczogeyAi
U2V0LUNvb2tpZSI6IHNlcnZlclNpZGVDb29raWVOYW1lICsgIj0xOyBwYXRoPS87IiB9LCBjcmVk
ZW50aWFsczogInNhbWUtb3JpZ2luIiB9KTsKKyAgICAgICAgZG9jdW1lbnQuY29va2llID0gY2xp
ZW50U2lkZUNvb2tpZU5hbWUgKyAiPTEiOworCisgICAgICAgIGNoZWNrQ29va2llcyhmYWxzZSk7
CisKKyAgICAgICAgLy8gV3JpdGUgTG9jYWxTdG9yYWdlCisgICAgICAgIGxvY2FsU3RvcmFnZS5z
ZXRJdGVtKGxvY2FsU3RvcmFnZU5hbWUsIGxvY2FsU3RvcmFnZVZhbHVlKTsKKyAgICAgICAgY2hl
Y2tMb2NhbFN0b3JhZ2VFeGlzdHMoZmFsc2UsIGZ1bmN0aW9uKCkgeworCisgICAgICAgICAgICAv
LyBXcml0ZSBJbmRleGVkREIuCisgICAgICAgICAgICBjcmVhdGVJREJEYXRhU3RvcmUoZnVuY3Rp
b24gKCkgeworICAgICAgICAgICAgICAgIGNoZWNrSURCRGF0YVN0b3JlRXhpc3RzKGZhbHNlLCBm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgYWRkTGluZWJyZWFrVG9PdXRwdXQoKTsK
KyAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc1dlYnNpdGVEYXRhQW5kQ29udGludWUoKTsKKyAg
ICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9CisK
KyAgICBmdW5jdGlvbiBwcm9jZXNzV2Vic2l0ZURhdGFBbmRDb250aW51ZSgpIHsKKyAgICAgICAg
dGVzdFJ1bm5lci5pbnN0YWxsU3RhdGlzdGljc0RpZFNjYW5EYXRhUmVjb3Jkc0NhbGxiYWNrKGNo
ZWNrV2Vic2l0ZURhdGFBbmRDb250aW51ZSk7CisgICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGlj
c1Byb2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHMoKTsKKyAgICB9CisKKyAgICBmdW5jdGlv
biBjaGVja1dlYnNpdGVEYXRhQW5kQ29udGludWUoKSB7CisgICAgICAgIGNoZWNrQ29va2llcyh0
cnVlKTsKKyAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VFeGlzdHModHJ1ZSwgZnVuY3Rpb24gKCkg
eworICAgICAgICAgICAgY2hlY2tJREJEYXRhU3RvcmVFeGlzdHModHJ1ZSwgZmluaXNoVGVzdCk7
CisgICAgICAgIH0pOworICAgIH0KKworICAgIGZ1bmN0aW9uIGZpbmlzaFRlc3QoKSB7CisgICAg
ICAgIHJlc2V0Q29va2llcygpOworICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NGaXJz
dFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZShmYWxzZSwgZnVuY3Rpb24oKSB7CisgICAgICAg
ICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsK
KyAgICB9CisKKyAgICBjb25zdCBvcmlnaW5VbmRlclRlc3QgID0gImh0dHA6Ly8xMjcuMC4wLjE6
ODAwMCI7CisgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICAgICAgc2V0RW5hYmxlRmVhdHVy
ZSh0cnVlLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3Rp
Y3NGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSh0cnVlLCBmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJhY3Rp
b24ob3JpZ2luVW5kZXJUZXN0LCB0cnVlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKCF0ZXN0UnVubmVyLmlzU3RhdGlzdGljc0hhc0hhZFVzZXJJbnRlcmFjdGlvbihvcmln
aW5VbmRlclRlc3QpKQorICAgICAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJGQUlMOiAi
ICsgb3JpZ2luVW5kZXJUZXN0ICsgIiBkaWQgbm90IGdldCBsb2dnZWQgZm9yIHVzZXIgaW50ZXJh
Y3Rpb24uIik7CisgICAgICAgICAgICAgICAgICAgIHdyaXRlV2Vic2l0ZURhdGFBbmRDb250aW51
ZSgpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOwor
ICAgIH0KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3dlYnNpdGUtZGF0YS1yZW1vdmFs
LWZvci1zaXRlLXdpdGgtdXNlci1pbnRlcmFjdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvd2Vic2l0ZS1kYXRhLXJlbW92YWwt
Zm9yLXNpdGUtd2l0aC11c2VyLWludGVyYWN0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5m
MTYzZDM1ZGI2YmYxZTYwYzA3MjNiMWFiMDJlY2I5ODU3ZGYxYmVjCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3dlYnNpdGUt
ZGF0YS1yZW1vdmFsLWZvci1zaXRlLXdpdGgtdXNlci1pbnRlcmFjdGlvbi1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwxNSBAQAorQ2hlY2sgdGhhdCBub24tY29va2llIHdlYnNpdGUgZGF0YSBkb2Vz
IG5vdCBnZXQgcmVtb3ZlZCBmb3Igc2l0ZXMgd2l0aCB1c2VyIGludGVyYWN0aW9uLgorCitCZWZv
cmUgZGVsZXRpb246IENsaWVudC1zaWRlIGNvb2tpZSBleGlzdHMuCitCZWZvcmUgZGVsZXRpb246
IEh0dHBPbmx5IGNvb2tpZSBleGlzdHMuCitCZWZvcmUgZGVsZXRpb246IFJlZ3VsYXIgc2VydmVy
LXNpZGUgY29va2llIGV4aXN0cy4KK0JlZm9yZSBkZWxldGlvbjogTG9jYWxTdG9yYWdlIGVudHJ5
IGRvZXMgZXhpc3QuCitCZWZvcmUgZGVsZXRpb246IElEQiBlbnRyeSBkb2VzIGV4aXN0LgorCitB
ZnRlciBkZWxldGlvbjogSHR0cE9ubHkgY29va2llIGV4aXN0cy4KK0FmdGVyIGRlbGV0aW9uOiBD
bGllbnQtc2lkZSBjb29raWUgZXhpc3RzLgorQWZ0ZXIgZGVsZXRpb246IFJlZ3VsYXIgc2VydmVy
LXNpZGUgY29va2llIGV4aXN0cy4KK0FmdGVyIGRlbGV0aW9uOiBMb2NhbFN0b3JhZ2UgZW50cnkg
ZG9lcyBleGlzdC4KK0FmdGVyIGRlbGV0aW9uOiBJREIgZW50cnkgY2hlY2tzIGRvZXMgZXhpc3Qu
CisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzL3dlYnNpdGUtZGF0YS1yZW1vdmFsLWZvci1zaXRlLXdpdGgtdXNlci1pbnRlcmFjdGlv
bi5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3dl
YnNpdGUtZGF0YS1yZW1vdmFsLWZvci1zaXRlLXdpdGgtdXNlci1pbnRlcmFjdGlvbi5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjE5ODJhMjRiYTQxYWMwNTE1YTgzNzA4NWU5NTVkMDZjZGFhZWEzZmMKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3Mvd2Vic2l0ZS1kYXRhLXJlbW92YWwtZm9yLXNpdGUtd2l0aC11c2VyLWludGVyYWN0aW9uLmh0
bWwKQEAgLTAsMCArMSwyNTMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAg
ICA8c2NyaXB0IHNyYz0iL2Nvb2tpZXMvcmVzb3VyY2VzL2Nvb2tpZS11dGlsaXRpZXMuanMiPjwv
c2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InNldFRpbWVvdXQoJ3J1blRlc3QoKScsIDApIj4KKzxkaXYg
aWQ9ImRlc2NyaXB0aW9uIj5DaGVjayB0aGF0IG5vbi1jb29raWUgd2Vic2l0ZSBkYXRhIGRvZXMg
bm90IGdldCByZW1vdmVkIGZvciBzaXRlcyB3aXRoIHVzZXIgaW50ZXJhY3Rpb24uPC9kaXY+Cis8
YnI+Cis8ZGl2IGlkPSJvdXRwdXQiPjwvZGl2PgorPGJyPgorPHNjcmlwdD4KKyAgICB0ZXN0UnVu
bmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKworICAg
IGNvbnN0IGh0dHBPbmx5Q29va2llTmFtZSA9ICJodHRwLW9ubHktY29va2llIjsKKyAgICBjb25z
dCBzZXJ2ZXJTaWRlQ29va2llTmFtZSA9ICJzZXJ2ZXItc2lkZS1jb29raWUiOworICAgIGNvbnN0
IGNsaWVudFNpZGVDb29raWVOYW1lID0gImNsaWVudC1zaWRlLWNvb2tpZSI7CisKKyAgICBmdW5j
dGlvbiBzb3J0U3RyaW5nQXJyYXkoYSwgYikgeworICAgICAgICBhID0gYS50b0xvd2VyQ2FzZSgp
OworICAgICAgICBiID0gYi50b0xvd2VyQ2FzZSgpOworCisgICAgICAgIHJldHVybiBhID4gYiA/
IDEgOiBiID4gYSA/IC0xIDogMDsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBhZGRMaW5lYnJlYWtU
b091dHB1dCgpIHsKKyAgICAgICAgbGV0IGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJiciIpOworICAgICAgICBvdXRwdXQuYXBwZW5kQ2hpbGQoZWxlbWVudCk7CisgICAgfQorCisg
ICAgZnVuY3Rpb24gYWRkT3V0cHV0KG1lc3NhZ2UpIHsKKyAgICAgICAgbGV0IGVsZW1lbnQgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgZWxlbWVudC5pbm5lclRleHQg
PSBtZXNzYWdlOworICAgICAgICBvdXRwdXQuYXBwZW5kQ2hpbGQoZWxlbWVudCk7CisgICAgfQor
CisgICAgZnVuY3Rpb24gY2hlY2tDb29raWVzKGlzQWZ0ZXJEZWxldGlvbikgeworICAgICAgICBs
ZXQgdW5zb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMgPSBbXTsKKyAgICAgICAgbGV0IGNvb2tpZXMg
PSBpbnRlcm5hbHMuZ2V0Q29va2llcygpOworICAgICAgICBpZiAoIWNvb2tpZXMubGVuZ3RoKQor
ICAgICAgICAgICAgdGVzdEZhaWxlZCgoaXNBZnRlckRlbGV0aW9uID8gIkFmdGVyIiA6ICJCZWZv
cmUiKSArICIgc2NyaXB0LWFjY2Vzc2libGUgZGVsZXRpb246IE5vIGNvb2tpZXMgZm91bmQuIik7
CisgICAgICAgIGZvciAobGV0IGNvb2tpZSBvZiBjb29raWVzKSB7CisgICAgICAgICAgICBzd2l0
Y2ggKGNvb2tpZS5uYW1lKSB7CisgICAgICAgICAgICAgICAgY2FzZSBodHRwT25seUNvb2tpZU5h
bWU6CisgICAgICAgICAgICAgICAgICAgIHVuc29ydGVkVGVzdFBhc3NlZE1lc3NhZ2VzLnB1c2go
KGlzQWZ0ZXJEZWxldGlvbiA/ICJBZnRlciIgOiAiQmVmb3JlIikgKyAiIGRlbGV0aW9uOiAiICsg
KGlzQWZ0ZXJEZWxldGlvbiA/ICIgIiA6ICIiKSArICJIdHRwT25seSBjb29raWUgZXhpc3RzLiIp
OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIHNlcnZl
clNpZGVDb29raWVOYW1lOgorICAgICAgICAgICAgICAgICAgICB1bnNvcnRlZFRlc3RQYXNzZWRN
ZXNzYWdlcy5wdXNoKChpc0FmdGVyRGVsZXRpb24gPyAiQWZ0ZXIiIDogIkJlZm9yZSIpICsgIiBk
ZWxldGlvbjogUmVndWxhciBzZXJ2ZXItc2lkZSBjb29raWUgZXhpc3RzLiIpOworICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIGNsaWVudFNpZGVDb29raWVO
YW1lOgorICAgICAgICAgICAgICAgICAgICB1bnNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcy5wdXNo
KChpc0FmdGVyRGVsZXRpb24gPyAiQWZ0ZXIiIDogIkJlZm9yZSIpICsgIiBkZWxldGlvbjogQ2xp
ZW50LXNpZGUgY29va2llIGV4aXN0cy4iKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgbGV0IHNvcnRlZFRlc3RQYXNzZWRNZXNz
YWdlcyA9IHVuc29ydGVkVGVzdFBhc3NlZE1lc3NhZ2VzLnNvcnQoc29ydFN0cmluZ0FycmF5KTsK
KyAgICAgICAgZm9yIChsZXQgdGVzdFBhc3NlZE1lc3NhZ2Ugb2Ygc29ydGVkVGVzdFBhc3NlZE1l
c3NhZ2VzKSB7CisgICAgICAgICAgICBhZGRPdXRwdXQodGVzdFBhc3NlZE1lc3NhZ2UpOworICAg
ICAgICB9CisgICAgfQorCisgICAgY29uc3QgZGJOYW1lID0gIlRlc3REYXRhYmFzZSI7CisKKyAg
ICBmdW5jdGlvbiBjcmVhdGVJREJEYXRhU3RvcmUoY2FsbGJhY2spIHsKKyAgICAgICAgbGV0IHJl
cXVlc3QgPSBpbmRleGVkREIub3BlbihkYk5hbWUpOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGFkZE91dHB1dCgiQ291bGRuJ3QgY3JlYXRlIGlu
ZGV4ZWREQi4iKTsKKyAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgfTsKKyAgICAg
ICAgcmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICAg
ICAgbGV0IGRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKyAgICAgICAgICAgIGxldCBvYmpTdG9y
ZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCJ0ZXN0Iiwge2F1dG9JbmNyZW1lbnQ6IHRydWV9KTsK
KyAgICAgICAgICAgIG9ialN0b3JlLmFkZCgidmFsdWUiKTsKKyAgICAgICAgICAgIGNhbGxiYWNr
KCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjb25zdCBtYXhJbnRlcnZhbHMgPSAyMDsKKwor
ICAgIGxldCBpbnRlcnZhbENvdW50ZXJJREI7CisgICAgbGV0IGNoZWNrSURCQ2FsbGJhY2s7Cisg
ICAgbGV0IGNoZWNrSURCSW50ZXJ2YWxJRDsKKyAgICBsZXQgc2VtYXBob3JlSURCQ2hlY2sgPSBm
YWxzZTsKKyAgICBmdW5jdGlvbiBjaGVja0lEQkRhdGFTdG9yZUV4aXN0cyhpc0FmdGVyRGVsZXRp
b24sIGNhbGxiYWNrKSB7CisgICAgICAgIGxldCByZXF1ZXN0OworICAgICAgICBpbnRlcnZhbENv
dW50ZXJJREIgPSAwOworICAgICAgICBjaGVja0lEQkNhbGxiYWNrID0gY2FsbGJhY2s7CisgICAg
ICAgIGlmICghaXNBZnRlckRlbGV0aW9uKSB7CisgICAgICAgICAgICAvLyBDaGVjayB1bnRpbCB0
aGVyZSBpcyBhIElEQi4KKyAgICAgICAgICAgIGNoZWNrSURCSW50ZXJ2YWxJRCA9IHNldEludGVy
dmFsKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGlmIChzZW1hcGhvcmVJREJDaGVjaykK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlE
QkNoZWNrID0gdHJ1ZTsKKworICAgICAgICAgICAgICAgIGlmICgrK2ludGVydmFsQ291bnRlcklE
QiA+PSBtYXhJbnRlcnZhbHMpIHsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChj
aGVja0lEQkludGVydmFsSUQpOworICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkJlZm9y
ZSBkZWxldGlvbjogSURCIGVudHJ5IGRvZXMgbm90IGV4aXN0LiIpOworICAgICAgICAgICAgICAg
ICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICBjaGVj
a0lEQkNhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICAgICAgcmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRiTmFtZSk7CisgICAgICAgICAgICAgICAg
ICAgIHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tJREJJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGFkZE91dHB1dCgiQ291bGRuJ3Qgb3BlbiBpbmRleGVkREIuIik7CisgICAgICAgICAg
ICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOworICAgICAgICAgICAgICAg
ICAgICAgICAgZmluaXNoVGVzdCgpOworICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAg
ICAgICAgICAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIExldCB0aGUgbmV4dCBpbnRlcnZhbCBjaGVjayBhZ2Fpbi4K
KyAgICAgICAgICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7CisgICAg
ICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChj
aGVja0lEQkludGVydmFsSUQpOworICAgICAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJC
ZWZvcmUgZGVsZXRpb246IElEQiBlbnRyeSBkb2VzIGV4aXN0LiIpOworICAgICAgICAgICAgICAg
ICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGNoZWNrSURCQ2FsbGJhY2soKTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9LCAyMDApOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgLy8gQ2hlY2sgdW50aWwgdGhlcmUgaXMgbm8gSURCLgorICAgICAgICAgICAgY2hlY2tJ
REJJbnRlcnZhbElEID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAg
IGlmIChzZW1hcGhvcmVJREJDaGVjaykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gdHJ1ZTsKKworICAgICAgICAgICAgICAg
IGlmICgrK2ludGVydmFsQ291bnRlcklEQiA+PSBtYXhJbnRlcnZhbHMpIHsKKyAgICAgICAgICAg
ICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0lEQkludGVydmFsSUQpOworICAgICAgICAgICAg
ICAgICAgICBhZGRPdXRwdXQoIkFmdGVyIGRlbGV0aW9uOiBJREIgZW50cnkgY2hlY2tzIGRvZXMg
ZXhpc3QuIik7CisgICAgICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7
CisgICAgICAgICAgICAgICAgICAgIGNoZWNrSURCQ2FsbGJhY2soKTsKKyAgICAgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4o
ZGJOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24g
KCkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0lEQkludGVy
dmFsSUQpOworICAgICAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJDb3VsZG4ndCBvcGVu
IGluZGV4ZWREQi4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNr
ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAg
ICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qub251cGdyYWRlbmVl
ZGVkID0gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZh
bChjaGVja0lEQkludGVydmFsSUQpOworICAgICAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0
KCJBZnRlciBkZWxldGlvbjogSURCIGVudHJ5IGRvZXMgbm90IGV4aXN0LiIpOworICAgICAgICAg
ICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAg
ICAgICAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBMZXQgdGhlIG5leHQgaW50ZXJ2YWwgY2hlY2sgYWdhaW4gYmVjYXVz
ZSBkZWxldGlvbiBtaWdodCBiZSBkZWxheWVkLgorICAgICAgICAgICAgICAgICAgICAgICAgc2Vt
YXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9LCAyMDApOworICAgICAgICB9CisgICAgfQorCisgICAg
bGV0IGludGVydmFsQ291bnRlckxvY2FsU3RvcmFnZTsKKyAgICBsZXQgY2hlY2tMb2NhbFN0b3Jh
Z2VDYWxsYmFjazsKKyAgICBsZXQgY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEOworICAgIGNv
bnN0IGxvY2FsU3RvcmFnZU5hbWUgPSAidGVzdCI7CisgICAgY29uc3QgbG9jYWxTdG9yYWdlVmFs
dWUgPSAidmFsdWUiOworICAgIGZ1bmN0aW9uIGNoZWNrTG9jYWxTdG9yYWdlRXhpc3RzKGlzQWZ0
ZXJEZWxldGlvbiwgY2FsbGJhY2spIHsKKyAgICAgICAgaW50ZXJ2YWxDb3VudGVyTG9jYWxTdG9y
YWdlID0gMDsKKyAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VDYWxsYmFjayA9IGNhbGxiYWNrOwor
ICAgICAgICBpZiAoIWlzQWZ0ZXJEZWxldGlvbikgeworICAgICAgICAgICAgLy8gQ2hlY2sgdW50
aWwgdGhlcmUgaXMgTG9jYWxTdG9yYWdlLgorICAgICAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VJ
bnRlcnZhbElEID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgaWYg
KCsraW50ZXJ2YWxDb3VudGVyTG9jYWxTdG9yYWdlID49IG1heEludGVydmFscykgeworICAgICAg
ICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJRCk7
CisgICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGxv
Y2FsU3RvcmFnZU5hbWUpOworICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkJlZm9yZSBk
ZWxldGlvbjogTG9jYWxTdG9yYWdlIGVudHJ5ICIgKyAodmFsdWUgPT09IGxvY2FsU3RvcmFnZVZh
bHVlID8gImRvZXMiIDogImRvZXMgbm90IikgKyAiIGV4aXN0LiIpOworICAgICAgICAgICAgICAg
ICAgICBjaGVja0xvY2FsU3RvcmFnZUNhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAgfSBlbHNl
IGlmICh0ZXN0UnVubmVyLmlzU3RhdGlzdGljc0hhc0xvY2FsU3RvcmFnZShvcmlnaW5VbmRlclRl
c3QpKSB7CisgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tMb2NhbFN0b3Jh
Z2VJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gbG9jYWxTdG9y
YWdlLmdldEl0ZW0obG9jYWxTdG9yYWdlTmFtZSk7CisgICAgICAgICAgICAgICAgICAgIGFkZE91
dHB1dCgiQmVmb3JlIGRlbGV0aW9uOiBMb2NhbFN0b3JhZ2UgZW50cnkgIiArICh2YWx1ZSA9PT0g
bG9jYWxTdG9yYWdlVmFsdWUgPyAiZG9lcyIgOiAiZG9lcyBub3QiKSArICIgZXhpc3QuIik7Cisg
ICAgICAgICAgICAgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlQ2FsbGJhY2soKTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9LCAxMDApOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgLy8gQ2hlY2sgdW50aWwgdGhlcmUgaXMgbm8gTG9jYWxTdG9yYWdlLgorICAgICAgICAg
ICAgY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7
CisgICAgICAgICAgICAgICAgaWYgKCsraW50ZXJ2YWxDb3VudGVyTG9jYWxTdG9yYWdlID49IG1h
eEludGVydmFscykgeworICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrTG9j
YWxTdG9yYWdlSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IGxv
Y2FsU3RvcmFnZS5nZXRJdGVtKGxvY2FsU3RvcmFnZU5hbWUpOworICAgICAgICAgICAgICAgICAg
ICBhZGRPdXRwdXQoIkFmdGVyIGRlbGV0aW9uOiBMb2NhbFN0b3JhZ2UgZW50cnkgIiArICh2YWx1
ZSA9PT0gbG9jYWxTdG9yYWdlVmFsdWUgPyAiZG9lcyIgOiAiZG9lcyBub3QiKSArICIgZXhpc3Qu
Iik7CisgICAgICAgICAgICAgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlQ2FsbGJhY2soKTsKKyAg
ICAgICAgICAgICAgICB9IGVsc2UgaWYgKCF0ZXN0UnVubmVyLmlzU3RhdGlzdGljc0hhc0xvY2Fs
U3RvcmFnZShvcmlnaW5VbmRlclRlc3QpKSB7CisgICAgICAgICAgICAgICAgICAgIGNsZWFySW50
ZXJ2YWwoY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAg
bGV0IHZhbHVlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0obG9jYWxTdG9yYWdlTmFtZSk7CisgICAg
ICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQWZ0ZXIgZGVsZXRpb246IExvY2FsU3RvcmFnZSBl
bnRyeSAiICsgKHZhbHVlID09PSBsb2NhbFN0b3JhZ2VWYWx1ZSA/ICJkb2VzIiA6ICJkb2VzIG5v
dCIpICsgIiBleGlzdC4iKTsKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VD
YWxsYmFjaygpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sIDEwMCk7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBhc3luYyBmdW5jdGlvbiB3cml0ZVdlYnNpdGVEYXRhQW5kQ29u
dGludWUoKSB7CisgICAgICAgIC8vIFdyaXRlIGNvb2tpZXMuCisgICAgICAgIGF3YWl0IGZldGNo
KCIvY29va2llcy9yZXNvdXJjZXMvc2V0LWh0dHAtb25seS1jb29raWUucGhwP2Nvb2tpZU5hbWU9
IiArIGh0dHBPbmx5Q29va2llTmFtZSwgeyBjcmVkZW50aWFsczogInNhbWUtb3JpZ2luIiB9KTsK
KyAgICAgICAgYXdhaXQgZmV0Y2goIi9jb29raWVzL3Jlc291cmNlcy9zZXRDb29raWVzLmNnaSIs
IHsgaGVhZGVyczogeyAiU2V0LUNvb2tpZSI6IHNlcnZlclNpZGVDb29raWVOYW1lICsgIj0xOyBw
YXRoPS87IiB9LCBjcmVkZW50aWFsczogInNhbWUtb3JpZ2luIiB9KTsKKyAgICAgICAgZG9jdW1l
bnQuY29va2llID0gY2xpZW50U2lkZUNvb2tpZU5hbWUgKyAiPTEiOworCisgICAgICAgIGNoZWNr
Q29va2llcyhmYWxzZSk7CisKKyAgICAgICAgLy8gV3JpdGUgTG9jYWxTdG9yYWdlCisgICAgICAg
IGxvY2FsU3RvcmFnZS5zZXRJdGVtKGxvY2FsU3RvcmFnZU5hbWUsIGxvY2FsU3RvcmFnZVZhbHVl
KTsKKyAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VFeGlzdHMoZmFsc2UsIGZ1bmN0aW9uKCkgewor
CisgICAgICAgICAgICAvLyBXcml0ZSBJbmRleGVkREIuCisgICAgICAgICAgICBjcmVhdGVJREJE
YXRhU3RvcmUoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGNoZWNrSURCRGF0YVN0b3Jl
RXhpc3RzKGZhbHNlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgYWRkTGluZWJy
ZWFrVG9PdXRwdXQoKTsKKyAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc1dlYnNpdGVEYXRhQW5k
Q29udGludWUoKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAg
ICB9KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBwcm9jZXNzV2Vic2l0ZURhdGFBbmRDb250aW51
ZSgpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5pbnN0YWxsU3RhdGlzdGljc0RpZFNjYW5EYXRhUmVj
b3Jkc0NhbGxiYWNrKGNoZWNrV2Vic2l0ZURhdGFBbmRDb250aW51ZSk7CisgICAgICAgIHRlc3RS
dW5uZXIuc3RhdGlzdGljc1Byb2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHMoKTsKKyAgICB9
CisKKyAgICBmdW5jdGlvbiBjaGVja1dlYnNpdGVEYXRhQW5kQ29udGludWUoKSB7CisgICAgICAg
IGNoZWNrQ29va2llcyh0cnVlKTsKKyAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VFeGlzdHModHJ1
ZSwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgY2hlY2tJREJEYXRhU3RvcmVFeGlzdHModHJ1
ZSwgZmluaXNoVGVzdCk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIGZ1bmN0aW9uIGZpbmlz
aFRlc3QoKSB7CisgICAgICAgIHJlc2V0Q29va2llcygpOworICAgICAgICB0ZXN0UnVubmVyLnNl
dFN0YXRpc3RpY3NGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZShmYWxzZSwgZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmdW5jdGlvbigpIHsK
KyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgIH0p
OworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBjb25zdCBvcmlnaW5VbmRlclRlc3QgID0gImh0
dHA6Ly8xMjcuMC4wLjE6ODAwMCI7CisgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICAgICAg
c2V0RW5hYmxlRmVhdHVyZSh0cnVlLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0ZXN0UnVu
bmVyLnNldFN0YXRpc3RpY3NGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSh0cnVlLCBm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NIYXNI
YWRVc2VySW50ZXJhY3Rpb24ob3JpZ2luVW5kZXJUZXN0LCB0cnVlLCBmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKCF0ZXN0UnVubmVyLmlzU3RhdGlzdGljc0hhc0hhZFVzZXJJ
bnRlcmFjdGlvbihvcmlnaW5VbmRlclRlc3QpKQorICAgICAgICAgICAgICAgICAgICAgICAgYWRk
T3V0cHV0KCJGQUlMOiAiICsgb3JpZ2luVW5kZXJUZXN0ICsgIiBkaWQgbm90IGdldCBsb2dnZWQg
Zm9yIHVzZXIgaW50ZXJhY3Rpb24uIik7CisgICAgICAgICAgICAgICAgICAgIHdyaXRlV2Vic2l0
ZURhdGFBbmRDb250aW51ZSgpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7
CisgICAgICAgIH0pOworICAgIH0KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3dlYnNp
dGUtZGF0YS1yZW1vdmFsLWZvci1zaXRlLXdpdGhvdXQtdXNlci1pbnRlcmFjdGlvbi1kYXRhYmFz
ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3Mvd2Vic2l0ZS1kYXRhLXJlbW92YWwtZm9yLXNpdGUtd2l0aG91dC11c2VyLWludGVyYWN0
aW9uLWRhdGFiYXNlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZWI4NmNhMzIwZjQ2OGVhYWZh
ZWU1OTkzZDQxY2IzZmU3NTUzZWM4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3dlYnNpdGUtZGF0YS1yZW1vdmFsLWZvci1z
aXRlLXdpdGhvdXQtdXNlci1pbnRlcmFjdGlvbi1kYXRhYmFzZS1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwxNSBAQAorQ2hlY2sgdGhhdCBub24tY29va2llIHdlYnNpdGUgZGF0YSBnZXRzIHJlbW92
ZWQgYWZ0ZXIgYSBwZXJpb2Qgb2Ygbm8gdXNlciBpbnRlcmFjdGlvbi4KKworQmVmb3JlIGRlbGV0
aW9uOiBDbGllbnQtc2lkZSBjb29raWUgZXhpc3RzLgorQmVmb3JlIGRlbGV0aW9uOiBIdHRwT25s
eSBjb29raWUgZXhpc3RzLgorQmVmb3JlIGRlbGV0aW9uOiBSZWd1bGFyIHNlcnZlci1zaWRlIGNv
b2tpZSBleGlzdHMuCitCZWZvcmUgZGVsZXRpb246IExvY2FsU3RvcmFnZSBlbnRyeSBkb2VzIGV4
aXN0LgorQmVmb3JlIGRlbGV0aW9uOiBJREIgZW50cnkgZG9lcyBleGlzdC4KKworQWZ0ZXIgZGVs
ZXRpb246IEh0dHBPbmx5IGNvb2tpZSBleGlzdHMuCitBZnRlciBkZWxldGlvbjogQ2xpZW50LXNp
ZGUgY29va2llIGV4aXN0cy4KK0FmdGVyIGRlbGV0aW9uOiBSZWd1bGFyIHNlcnZlci1zaWRlIGNv
b2tpZSBleGlzdHMuCitBZnRlciBkZWxldGlvbjogTG9jYWxTdG9yYWdlIGVudHJ5IGRvZXMgbm90
IGV4aXN0LgorQWZ0ZXIgZGVsZXRpb246IElEQiBlbnRyeSBkb2VzIG5vdCBleGlzdC4KKworCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mv
d2Vic2l0ZS1kYXRhLXJlbW92YWwtZm9yLXNpdGUtd2l0aG91dC11c2VyLWludGVyYWN0aW9uLWRh
dGFiYXNlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3Mvd2Vic2l0ZS1kYXRhLXJlbW92YWwtZm9yLXNpdGUtd2l0aG91dC11c2VyLWludGVyYWN0aW9u
LWRhdGFiYXNlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmUwMDE0YzdmOTUwZTA5YjFjOTJkOGQ3OWRkODY2
NjQ3MWQ0ZGEzMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVz
b3VyY2VMb2FkU3RhdGlzdGljcy93ZWJzaXRlLWRhdGEtcmVtb3ZhbC1mb3Itc2l0ZS13aXRob3V0
LXVzZXItaW50ZXJhY3Rpb24tZGF0YWJhc2UuaHRtbApAQCAtMCwwICsxLDI1NCBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQgc3JjPSIvY29va2llcy9yZXNv
dXJjZXMvY29va2llLXV0aWxpdGllcy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJl
c291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0ic2V0VGlt
ZW91dCgncnVuVGVzdCgpJywgMCkiPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPkNoZWNrIHRoYXQg
bm9uLWNvb2tpZSB3ZWJzaXRlIGRhdGEgZ2V0cyByZW1vdmVkIGFmdGVyIGEgcGVyaW9kIG9mIG5v
IHVzZXIgaW50ZXJhY3Rpb24uPC9kaXY+Cis8YnI+Cis8ZGl2IGlkPSJvdXRwdXQiPjwvZGl2Pgor
PGJyPgorPHNjcmlwdD4KKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0
UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLnNldFVzZUlUUERhdGFiYXNlKHRy
dWUpOworCisgICAgY29uc3QgaHR0cE9ubHlDb29raWVOYW1lID0gImh0dHAtb25seS1jb29raWUi
OworICAgIGNvbnN0IHNlcnZlclNpZGVDb29raWVOYW1lID0gInNlcnZlci1zaWRlLWNvb2tpZSI7
CisgICAgY29uc3QgY2xpZW50U2lkZUNvb2tpZU5hbWUgPSAiY2xpZW50LXNpZGUtY29va2llIjsK
KworICAgIGZ1bmN0aW9uIHNvcnRTdHJpbmdBcnJheShhLCBiKSB7CisgICAgICAgIGEgPSBhLnRv
TG93ZXJDYXNlKCk7CisgICAgICAgIGIgPSBiLnRvTG93ZXJDYXNlKCk7CisKKyAgICAgICAgcmV0
dXJuIGEgPiBiID8gMSA6IGIgPiBhID8gLTEgOiAwOworICAgIH0KKworICAgIGZ1bmN0aW9uIGFk
ZExpbmVicmVha1RvT3V0cHV0KCkgeworICAgICAgICBsZXQgZWxlbWVudCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImJyIik7CisgICAgICAgIG91dHB1dC5hcHBlbmRDaGlsZChlbGVtZW50KTsK
KyAgICB9CisKKyAgICBmdW5jdGlvbiBhZGRPdXRwdXQobWVzc2FnZSkgeworICAgICAgICBsZXQg
ZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICBlbGVtZW50
LmlubmVyVGV4dCA9IG1lc3NhZ2U7CisgICAgICAgIG91dHB1dC5hcHBlbmRDaGlsZChlbGVtZW50
KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBjaGVja0Nvb2tpZXMoaXNBZnRlckRlbGV0aW9uKSB7
CisgICAgICAgIGxldCB1bnNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcyA9IFtdOworICAgICAgICBs
ZXQgY29va2llcyA9IGludGVybmFscy5nZXRDb29raWVzKCk7CisgICAgICAgIGlmICghY29va2ll
cy5sZW5ndGgpCisgICAgICAgICAgICB0ZXN0RmFpbGVkKChpc0FmdGVyRGVsZXRpb24gPyAiQWZ0
ZXIiIDogIkJlZm9yZSIpICsgIiBzY3JpcHQtYWNjZXNzaWJsZSBkZWxldGlvbjogTm8gY29va2ll
cyBmb3VuZC4iKTsKKyAgICAgICAgZm9yIChsZXQgY29va2llIG9mIGNvb2tpZXMpIHsKKyAgICAg
ICAgICAgIHN3aXRjaCAoY29va2llLm5hbWUpIHsKKyAgICAgICAgICAgICAgICBjYXNlIGh0dHBP
bmx5Q29va2llTmFtZToKKyAgICAgICAgICAgICAgICAgICAgdW5zb3J0ZWRUZXN0UGFzc2VkTWVz
c2FnZXMucHVzaCgoaXNBZnRlckRlbGV0aW9uID8gIkFmdGVyIiA6ICJCZWZvcmUiKSArICIgZGVs
ZXRpb246ICIgKyAoaXNBZnRlckRlbGV0aW9uID8gIiAiIDogIiIpICsgIkh0dHBPbmx5IGNvb2tp
ZSBleGlzdHMuIik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
IGNhc2Ugc2VydmVyU2lkZUNvb2tpZU5hbWU6CisgICAgICAgICAgICAgICAgICAgIHVuc29ydGVk
VGVzdFBhc3NlZE1lc3NhZ2VzLnB1c2goKGlzQWZ0ZXJEZWxldGlvbiA/ICJBZnRlciIgOiAiQmVm
b3JlIikgKyAiIGRlbGV0aW9uOiBSZWd1bGFyIHNlcnZlci1zaWRlIGNvb2tpZSBleGlzdHMuIik7
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgY2xpZW50
U2lkZUNvb2tpZU5hbWU6CisgICAgICAgICAgICAgICAgICAgIHVuc29ydGVkVGVzdFBhc3NlZE1l
c3NhZ2VzLnB1c2goKGlzQWZ0ZXJEZWxldGlvbiA/ICJBZnRlciIgOiAiQmVmb3JlIikgKyAiIGRl
bGV0aW9uOiBDbGllbnQtc2lkZSBjb29raWUgZXhpc3RzLiIpOworICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBsZXQgc29ydGVkVGVz
dFBhc3NlZE1lc3NhZ2VzID0gdW5zb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMuc29ydChzb3J0U3Ry
aW5nQXJyYXkpOworICAgICAgICBmb3IgKGxldCB0ZXN0UGFzc2VkTWVzc2FnZSBvZiBzb3J0ZWRU
ZXN0UGFzc2VkTWVzc2FnZXMpIHsKKyAgICAgICAgICAgIGFkZE91dHB1dCh0ZXN0UGFzc2VkTWVz
c2FnZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjb25zdCBkYk5hbWUgPSAiVGVzdERhdGFi
YXNlIjsKKworICAgIGZ1bmN0aW9uIGNyZWF0ZUlEQkRhdGFTdG9yZShjYWxsYmFjaykgeworICAg
ICAgICBsZXQgcmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRiTmFtZSk7CisgICAgICAgIHJlcXVl
c3Qub25lcnJvciA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgYWRkT3V0cHV0KCJDb3VsZG4n
dCBjcmVhdGUgaW5kZXhlZERCLiIpOworICAgICAgICAgICAgZmluaXNoVGVzdCgpOworICAgICAg
ICB9OworICAgICAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7
CisgICAgICAgICAgICBsZXQgZGIgPSBldmVudC50YXJnZXQucmVzdWx0OworICAgICAgICAgICAg
bGV0IG9ialN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoInRlc3QiLCB7YXV0b0luY3JlbWVu
dDogdHJ1ZX0pOworICAgICAgICAgICAgb2JqU3RvcmUuYWRkKCJ2YWx1ZSIpOworICAgICAgICAg
ICAgY2FsbGJhY2soKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGNvbnN0IG1heEludGVydmFs
cyA9IDIwOworCisgICAgbGV0IGludGVydmFsQ291bnRlcklEQjsKKyAgICBsZXQgY2hlY2tJREJD
YWxsYmFjazsKKyAgICBsZXQgY2hlY2tJREJJbnRlcnZhbElEOworICAgIGxldCBzZW1hcGhvcmVJ
REJDaGVjayA9IGZhbHNlOworICAgIGZ1bmN0aW9uIGNoZWNrSURCRGF0YVN0b3JlRXhpc3RzKGlz
QWZ0ZXJEZWxldGlvbiwgY2FsbGJhY2spIHsKKyAgICAgICAgbGV0IHJlcXVlc3Q7CisgICAgICAg
IGludGVydmFsQ291bnRlcklEQiA9IDA7CisgICAgICAgIGNoZWNrSURCQ2FsbGJhY2sgPSBjYWxs
YmFjazsKKyAgICAgICAgaWYgKCFpc0FmdGVyRGVsZXRpb24pIHsKKyAgICAgICAgICAgIC8vIENo
ZWNrIHVudGlsIHRoZXJlIGlzIGEgSURCLgorICAgICAgICAgICAgY2hlY2tJREJJbnRlcnZhbElE
ID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgaWYgKHNlbWFwaG9y
ZUlEQkNoZWNrKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAg
c2VtYXBob3JlSURCQ2hlY2sgPSB0cnVlOworCisgICAgICAgICAgICAgICAgaWYgKCsraW50ZXJ2
YWxDb3VudGVySURCID49IG1heEludGVydmFscykgeworICAgICAgICAgICAgICAgICAgICBjbGVh
ckludGVydmFsKGNoZWNrSURCSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAgIGFkZE91
dHB1dCgiQmVmb3JlIGRlbGV0aW9uOiBJREIgZW50cnkgZG9lcyBub3QgZXhpc3QuIik7CisgICAg
ICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7CisgICAgICAgICAgICAg
ICAgICAgIGNoZWNrSURCQ2FsbGJhY2soKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgICAgICByZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJOYW1lKTsKKyAgICAg
ICAgICAgICAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24gKCkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0lEQkludGVydmFsSUQpOworICAgICAg
ICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJDb3VsZG4ndCBvcGVuIGluZGV4ZWREQi4iKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7CisgICAg
ICAgICAgICAgICAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAgICAgICAgICAgICAgIH07
CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24g
KCkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gTGV0IHRoZSBuZXh0IGludGVydmFsIGNo
ZWNrIGFnYWluLgorICAgICAgICAgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBm
YWxzZTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjbGVh
ckludGVydmFsKGNoZWNrSURCSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAgICAgICBh
ZGRPdXRwdXQoIkJlZm9yZSBkZWxldGlvbjogSURCIGVudHJ5IGRvZXMgZXhpc3QuIik7CisgICAg
ICAgICAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOworICAgICAgICAg
ICAgICAgICAgICAgICAgY2hlY2tJREJDYWxsYmFjaygpOworICAgICAgICAgICAgICAgICAgICB9
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sIDIwMCk7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAvLyBDaGVjayB1bnRpbCB0aGVyZSBpcyBubyBJREIuCisgICAgICAg
ICAgICBjaGVja0lEQkludGVydmFsSUQgPSBzZXRJbnRlcnZhbChmdW5jdGlvbiAoKSB7CisgICAg
ICAgICAgICAgICAgaWYgKHNlbWFwaG9yZUlEQkNoZWNrKQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSB0cnVlOworCisgICAg
ICAgICAgICAgICAgaWYgKCsraW50ZXJ2YWxDb3VudGVySURCID49IG1heEludGVydmFscykgewor
ICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrSURCSW50ZXJ2YWxJRCk7Cisg
ICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQWZ0ZXIgZGVsZXRpb246IElEQiBlbnRyeSBj
aGVja3MgZXhoYXVzdGVkLiIpOworICAgICAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVj
ayA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICBjaGVja0lEQkNhbGxiYWNrKCk7CisgICAg
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdCA9IGluZGV4
ZWREQi5vcGVuKGRiTmFtZSk7CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qub25lcnJvciA9
IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hl
Y2tJREJJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQ291
bGRuJ3Qgb3BlbiBpbmRleGVkREIuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBzZW1hcGhv
cmVJREJDaGVjayA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgZmluaXNoVGVzdCgp
OworICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lm9u
dXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNs
ZWFySW50ZXJ2YWwoY2hlY2tJREJJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGFkZE91dHB1dCgiQWZ0ZXIgZGVsZXRpb246IElEQiBlbnRyeSBkb2VzIG5vdCBleGlzdC4iKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7CisgICAg
ICAgICAgICAgICAgICAgICAgICBjaGVja0lEQkNhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAg
ICAgIH07CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24g
KCkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gTGV0IHRoZSBuZXh0IGludGVydmFsIGNo
ZWNrIGFnYWluLgorICAgICAgICAgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBm
YWxzZTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9LCAyMDApOworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IGludGVydmFsQ291bnRl
ckxvY2FsU3RvcmFnZTsKKyAgICBsZXQgY2hlY2tMb2NhbFN0b3JhZ2VDYWxsYmFjazsKKyAgICBs
ZXQgY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEOworICAgIGNvbnN0IGxvY2FsU3RvcmFnZU5h
bWUgPSAidGVzdCI7CisgICAgY29uc3QgbG9jYWxTdG9yYWdlVmFsdWUgPSAidmFsdWUiOworICAg
IGZ1bmN0aW9uIGNoZWNrTG9jYWxTdG9yYWdlRXhpc3RzKGlzQWZ0ZXJEZWxldGlvbiwgY2FsbGJh
Y2spIHsKKyAgICAgICAgaW50ZXJ2YWxDb3VudGVyTG9jYWxTdG9yYWdlID0gMDsKKyAgICAgICAg
Y2hlY2tMb2NhbFN0b3JhZ2VDYWxsYmFjayA9IGNhbGxiYWNrOworICAgICAgICBpZiAoIWlzQWZ0
ZXJEZWxldGlvbikgeworICAgICAgICAgICAgLy8gQ2hlY2sgdW50aWwgdGhlcmUgaXMgTG9jYWxT
dG9yYWdlLgorICAgICAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEID0gc2V0SW50
ZXJ2YWwoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgaWYgKCsraW50ZXJ2YWxDb3VudGVy
TG9jYWxTdG9yYWdlID49IG1heEludGVydmFscykgeworICAgICAgICAgICAgICAgICAgICBjbGVh
ckludGVydmFsKGNoZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAg
ICAgIGxldCB2YWx1ZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGxvY2FsU3RvcmFnZU5hbWUpOwor
ICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkJlZm9yZSBkZWxldGlvbjogTG9jYWxTdG9y
YWdlIGVudHJ5ICIgKyAodmFsdWUgPT09IGxvY2FsU3RvcmFnZVZhbHVlID8gImRvZXMiIDogImRv
ZXMgbm90IikgKyAiIGV4aXN0LiIpOworICAgICAgICAgICAgICAgICAgICBjaGVja0xvY2FsU3Rv
cmFnZUNhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0ZXN0UnVubmVyLmlz
U3RhdGlzdGljc0hhc0xvY2FsU3RvcmFnZShvcmlnaW5VbmRlclRlc3QpKSB7CisgICAgICAgICAg
ICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEKTsKKyAg
ICAgICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0obG9jYWxT
dG9yYWdlTmFtZSk7CisgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQmVmb3JlIGRlbGV0
aW9uOiBMb2NhbFN0b3JhZ2UgZW50cnkgIiArICh2YWx1ZSA9PT0gbG9jYWxTdG9yYWdlVmFsdWUg
PyAiZG9lcyIgOiAiZG9lcyBub3QiKSArICIgZXhpc3QuIik7CisgICAgICAgICAgICAgICAgICAg
IGNoZWNrTG9jYWxTdG9yYWdlQ2FsbGJhY2soKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9LCAxMDApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gQ2hlY2sgdW50
aWwgdGhlcmUgaXMgbm8gTG9jYWxTdG9yYWdlLgorICAgICAgICAgICAgY2hlY2tMb2NhbFN0b3Jh
Z2VJbnRlcnZhbElEID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAg
aWYgKCsraW50ZXJ2YWxDb3VudGVyTG9jYWxTdG9yYWdlID49IG1heEludGVydmFscykgeworICAg
ICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJ
RCk7CisgICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVt
KGxvY2FsU3RvcmFnZU5hbWUpOworICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkFmdGVy
IGRlbGV0aW9uOiBMb2NhbFN0b3JhZ2UgZW50cnkgIiArICh2YWx1ZSA9PT0gbG9jYWxTdG9yYWdl
VmFsdWUgPyAiZG9lcyIgOiAiZG9lcyBub3QiKSArICIgZXhpc3QuIik7CisgICAgICAgICAgICAg
ICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlQ2FsbGJhY2soKTsKKyAgICAgICAgICAgICAgICB9IGVs
c2UgaWYgKCF0ZXN0UnVubmVyLmlzU3RhdGlzdGljc0hhc0xvY2FsU3RvcmFnZShvcmlnaW5VbmRl
clRlc3QpKSB7CisgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tMb2NhbFN0
b3JhZ2VJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gbG9jYWxT
dG9yYWdlLmdldEl0ZW0obG9jYWxTdG9yYWdlTmFtZSk7CisgICAgICAgICAgICAgICAgICAgIGFk
ZE91dHB1dCgiQWZ0ZXIgZGVsZXRpb246IExvY2FsU3RvcmFnZSBlbnRyeSAiICsgKHZhbHVlID09
PSBsb2NhbFN0b3JhZ2VWYWx1ZSA/ICJkb2VzIiA6ICJkb2VzIG5vdCIpICsgIiBleGlzdC4iKTsK
KyAgICAgICAgICAgICAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VDYWxsYmFjaygpOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sIDEwMCk7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBhc3luYyBmdW5jdGlvbiB3cml0ZVdlYnNpdGVEYXRhQW5kQ29udGludWUoKSB7CisgICAgICAg
IC8vIFdyaXRlIGNvb2tpZXMuCisgICAgICAgIGF3YWl0IGZldGNoKCIvY29va2llcy9yZXNvdXJj
ZXMvc2V0LWh0dHAtb25seS1jb29raWUucGhwP2Nvb2tpZU5hbWU9IiArIGh0dHBPbmx5Q29va2ll
TmFtZSwgeyBjcmVkZW50aWFsczogInNhbWUtb3JpZ2luIiB9KTsKKyAgICAgICAgYXdhaXQgZmV0
Y2goIi9jb29raWVzL3Jlc291cmNlcy9zZXRDb29raWVzLmNnaSIsIHsgaGVhZGVyczogeyAiU2V0
LUNvb2tpZSI6IHNlcnZlclNpZGVDb29raWVOYW1lICsgIj0xOyBwYXRoPS87IiB9LCBjcmVkZW50
aWFsczogInNhbWUtb3JpZ2luIiB9KTsKKyAgICAgICAgZG9jdW1lbnQuY29va2llID0gY2xpZW50
U2lkZUNvb2tpZU5hbWUgKyAiPTEiOworCisgICAgICAgIGNoZWNrQ29va2llcyhmYWxzZSk7CisK
KyAgICAgICAgLy8gV3JpdGUgTG9jYWxTdG9yYWdlCisgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJ
dGVtKGxvY2FsU3RvcmFnZU5hbWUsIGxvY2FsU3RvcmFnZVZhbHVlKTsKKyAgICAgICAgY2hlY2tM
b2NhbFN0b3JhZ2VFeGlzdHMoZmFsc2UsIGZ1bmN0aW9uKCkgeworCisgICAgICAgICAgICAvLyBX
cml0ZSBJbmRleGVkREIuCisgICAgICAgICAgICBjcmVhdGVJREJEYXRhU3RvcmUoZnVuY3Rpb24g
KCkgeworICAgICAgICAgICAgICAgIGNoZWNrSURCRGF0YVN0b3JlRXhpc3RzKGZhbHNlLCBmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgYWRkTGluZWJyZWFrVG9PdXRwdXQoKTsKKyAg
ICAgICAgICAgICAgICAgICAgcHJvY2Vzc1dlYnNpdGVEYXRhQW5kQ29udGludWUoKTsKKyAgICAg
ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9CisKKyAg
ICBmdW5jdGlvbiBwcm9jZXNzV2Vic2l0ZURhdGFBbmRDb250aW51ZSgpIHsKKyAgICAgICAgdGVz
dFJ1bm5lci5pbnN0YWxsU3RhdGlzdGljc0RpZFNjYW5EYXRhUmVjb3Jkc0NhbGxiYWNrKGNoZWNr
V2Vic2l0ZURhdGFBbmRDb250aW51ZSk7CisgICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc1By
b2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHMoKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBj
aGVja1dlYnNpdGVEYXRhQW5kQ29udGludWUoKSB7CisgICAgICAgIGNoZWNrQ29va2llcyh0cnVl
KTsKKyAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VFeGlzdHModHJ1ZSwgZnVuY3Rpb24gKCkgewor
ICAgICAgICAgICAgY2hlY2tJREJEYXRhU3RvcmVFeGlzdHModHJ1ZSwgZmluaXNoVGVzdCk7Cisg
ICAgICAgIH0pOworICAgIH0KKworICAgIGZ1bmN0aW9uIGZpbmlzaFRlc3QoKSB7CisgICAgICAg
IHJlc2V0Q29va2llcygpOworICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NGaXJzdFBh
cnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZShmYWxzZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAg
ICB9CisKKyAgICBjb25zdCBvcmlnaW5VbmRlclRlc3QgID0gImh0dHA6Ly8xMjcuMC4wLjE6ODAw
MCI7CisgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICAgICAgc2V0RW5hYmxlRmVhdHVyZSh0
cnVlLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NG
aXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSh0cnVlLCBmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJhY3Rpb24o
b3JpZ2luVW5kZXJUZXN0LCBmYWxzZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAg
IGlmICh0ZXN0UnVubmVyLmlzU3RhdGlzdGljc0hhc0hhZFVzZXJJbnRlcmFjdGlvbihvcmlnaW5V
bmRlclRlc3QpKQorICAgICAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJGQUlMOiAiICsg
b3JpZ2luVW5kZXJUZXN0ICsgIiBnb3QgbG9nZ2VkIGZvciB1c2VyIGludGVyYWN0aW9uLiIpOwor
ICAgICAgICAgICAgICAgICAgICB3cml0ZVdlYnNpdGVEYXRhQW5kQ29udGludWUoKTsKKyAgICAg
ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9Cis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy93ZWJzaXRlLWRhdGEtcmVtb3ZhbC1mb3Itc2l0ZS13
aXRob3V0LXVzZXItaW50ZXJhY3Rpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3dlYnNpdGUtZGF0YS1yZW1vdmFsLWZvci1zaXRl
LXdpdGhvdXQtdXNlci1pbnRlcmFjdGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGViODZj
YTMyMGY0NjhlYWFmYWVlNTk5M2Q0MWNiM2ZlNzU1M2VjOAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy93ZWJzaXRlLWRhdGEt
cmVtb3ZhbC1mb3Itc2l0ZS13aXRob3V0LXVzZXItaW50ZXJhY3Rpb24tZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMTUgQEAKK0NoZWNrIHRoYXQgbm9uLWNvb2tpZSB3ZWJzaXRlIGRhdGEgZ2V0cyBy
ZW1vdmVkIGFmdGVyIGEgcGVyaW9kIG9mIG5vIHVzZXIgaW50ZXJhY3Rpb24uCisKK0JlZm9yZSBk
ZWxldGlvbjogQ2xpZW50LXNpZGUgY29va2llIGV4aXN0cy4KK0JlZm9yZSBkZWxldGlvbjogSHR0
cE9ubHkgY29va2llIGV4aXN0cy4KK0JlZm9yZSBkZWxldGlvbjogUmVndWxhciBzZXJ2ZXItc2lk
ZSBjb29raWUgZXhpc3RzLgorQmVmb3JlIGRlbGV0aW9uOiBMb2NhbFN0b3JhZ2UgZW50cnkgZG9l
cyBleGlzdC4KK0JlZm9yZSBkZWxldGlvbjogSURCIGVudHJ5IGRvZXMgZXhpc3QuCisKK0FmdGVy
IGRlbGV0aW9uOiBIdHRwT25seSBjb29raWUgZXhpc3RzLgorQWZ0ZXIgZGVsZXRpb246IENsaWVu
dC1zaWRlIGNvb2tpZSBleGlzdHMuCitBZnRlciBkZWxldGlvbjogUmVndWxhciBzZXJ2ZXItc2lk
ZSBjb29raWUgZXhpc3RzLgorQWZ0ZXIgZGVsZXRpb246IExvY2FsU3RvcmFnZSBlbnRyeSBkb2Vz
IG5vdCBleGlzdC4KK0FmdGVyIGRlbGV0aW9uOiBJREIgZW50cnkgZG9lcyBub3QgZXhpc3QuCisK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzL3dlYnNpdGUtZGF0YS1yZW1vdmFsLWZvci1zaXRlLXdpdGhvdXQtdXNlci1pbnRlcmFjdGlv
bi5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3dl
YnNpdGUtZGF0YS1yZW1vdmFsLWZvci1zaXRlLXdpdGhvdXQtdXNlci1pbnRlcmFjdGlvbi5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjA1MzcxZWI4ODA3YWVkNzk5Zjc0YjFmNmRhMjQxNWU4NDRiMzk4MGYKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3Mvd2Vic2l0ZS1kYXRhLXJlbW92YWwtZm9yLXNpdGUtd2l0aG91dC11c2VyLWludGVyYWN0
aW9uLmh0bWwKQEAgLTAsMCArMSwyNTMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVh
ZD4KKyAgICA8c2NyaXB0IHNyYz0iL2Nvb2tpZXMvcmVzb3VyY2VzL2Nvb2tpZS11dGlsaXRpZXMu
anMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InNldFRpbWVvdXQoJ3J1blRlc3QoKScsIDApIj4K
KzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj5DaGVjayB0aGF0IG5vbi1jb29raWUgd2Vic2l0ZSBkYXRh
IGdldHMgcmVtb3ZlZCBhZnRlciBhIHBlcmlvZCBvZiBubyB1c2VyIGludGVyYWN0aW9uLjwvZGl2
PgorPGJyPgorPGRpdiBpZD0ib3V0cHV0Ij48L2Rpdj4KKzxicj4KKzxzY3JpcHQ+CisgICAgdGVz
dFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisK
KyAgICBjb25zdCBodHRwT25seUNvb2tpZU5hbWUgPSAiaHR0cC1vbmx5LWNvb2tpZSI7CisgICAg
Y29uc3Qgc2VydmVyU2lkZUNvb2tpZU5hbWUgPSAic2VydmVyLXNpZGUtY29va2llIjsKKyAgICBj
b25zdCBjbGllbnRTaWRlQ29va2llTmFtZSA9ICJjbGllbnQtc2lkZS1jb29raWUiOworCisgICAg
ZnVuY3Rpb24gc29ydFN0cmluZ0FycmF5KGEsIGIpIHsKKyAgICAgICAgYSA9IGEudG9Mb3dlckNh
c2UoKTsKKyAgICAgICAgYiA9IGIudG9Mb3dlckNhc2UoKTsKKworICAgICAgICByZXR1cm4gYSA+
IGIgPyAxIDogYiA+IGEgPyAtMSA6IDA7CisgICAgfQorCisgICAgZnVuY3Rpb24gYWRkTGluZWJy
ZWFrVG9PdXRwdXQoKSB7CisgICAgICAgIGxldCBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiYnIiKTsKKyAgICAgICAgb3V0cHV0LmFwcGVuZENoaWxkKGVsZW1lbnQpOworICAgIH0K
KworICAgIGZ1bmN0aW9uIGFkZE91dHB1dChtZXNzYWdlKSB7CisgICAgICAgIGxldCBlbGVtZW50
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIGVsZW1lbnQuaW5uZXJU
ZXh0ID0gbWVzc2FnZTsKKyAgICAgICAgb3V0cHV0LmFwcGVuZENoaWxkKGVsZW1lbnQpOworICAg
IH0KKworICAgIGZ1bmN0aW9uIGNoZWNrQ29va2llcyhpc0FmdGVyRGVsZXRpb24pIHsKKyAgICAg
ICAgbGV0IHVuc29ydGVkVGVzdFBhc3NlZE1lc3NhZ2VzID0gW107CisgICAgICAgIGxldCBjb29r
aWVzID0gaW50ZXJuYWxzLmdldENvb2tpZXMoKTsKKyAgICAgICAgaWYgKCFjb29raWVzLmxlbmd0
aCkKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoKGlzQWZ0ZXJEZWxldGlvbiA/ICJBZnRlciIgOiAi
QmVmb3JlIikgKyAiIHNjcmlwdC1hY2Nlc3NpYmxlIGRlbGV0aW9uOiBObyBjb29raWVzIGZvdW5k
LiIpOworICAgICAgICBmb3IgKGxldCBjb29raWUgb2YgY29va2llcykgeworICAgICAgICAgICAg
c3dpdGNoIChjb29raWUubmFtZSkgeworICAgICAgICAgICAgICAgIGNhc2UgaHR0cE9ubHlDb29r
aWVOYW1lOgorICAgICAgICAgICAgICAgICAgICB1bnNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcy5w
dXNoKChpc0FmdGVyRGVsZXRpb24gPyAiQWZ0ZXIiIDogIkJlZm9yZSIpICsgIiBkZWxldGlvbjog
IiArIChpc0FmdGVyRGVsZXRpb24gPyAiICIgOiAiIikgKyAiSHR0cE9ubHkgY29va2llIGV4aXN0
cy4iKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBz
ZXJ2ZXJTaWRlQ29va2llTmFtZToKKyAgICAgICAgICAgICAgICAgICAgdW5zb3J0ZWRUZXN0UGFz
c2VkTWVzc2FnZXMucHVzaCgoaXNBZnRlckRlbGV0aW9uID8gIkFmdGVyIiA6ICJCZWZvcmUiKSAr
ICIgZGVsZXRpb246IFJlZ3VsYXIgc2VydmVyLXNpZGUgY29va2llIGV4aXN0cy4iKTsKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBjbGllbnRTaWRlQ29v
a2llTmFtZToKKyAgICAgICAgICAgICAgICAgICAgdW5zb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMu
cHVzaCgoaXNBZnRlckRlbGV0aW9uID8gIkFmdGVyIiA6ICJCZWZvcmUiKSArICIgZGVsZXRpb246
IENsaWVudC1zaWRlIGNvb2tpZSBleGlzdHMuIik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGxldCBzb3J0ZWRUZXN0UGFzc2Vk
TWVzc2FnZXMgPSB1bnNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcy5zb3J0KHNvcnRTdHJpbmdBcnJh
eSk7CisgICAgICAgIGZvciAobGV0IHRlc3RQYXNzZWRNZXNzYWdlIG9mIHNvcnRlZFRlc3RQYXNz
ZWRNZXNzYWdlcykgeworICAgICAgICAgICAgYWRkT3V0cHV0KHRlc3RQYXNzZWRNZXNzYWdlKTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIGNvbnN0IGRiTmFtZSA9ICJUZXN0RGF0YWJhc2UiOwor
CisgICAgZnVuY3Rpb24gY3JlYXRlSURCRGF0YVN0b3JlKGNhbGxiYWNrKSB7CisgICAgICAgIGxl
dCByZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJOYW1lKTsKKyAgICAgICAgcmVxdWVzdC5vbmVy
cm9yID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBhZGRPdXRwdXQoIkNvdWxkbid0IGNyZWF0
ZSBpbmRleGVkREIuIik7CisgICAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAgIH07Cisg
ICAgICAgIHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAg
ICAgICAgIGxldCBkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CisgICAgICAgICAgICBsZXQgb2Jq
U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgidGVzdCIsIHthdXRvSW5jcmVtZW50OiB0cnVl
fSk7CisgICAgICAgICAgICBvYmpTdG9yZS5hZGQoInZhbHVlIik7CisgICAgICAgICAgICBjYWxs
YmFjaygpOworICAgICAgICB9CisgICAgfQorCisgICAgY29uc3QgbWF4SW50ZXJ2YWxzID0gMjA7
CisKKyAgICBsZXQgaW50ZXJ2YWxDb3VudGVySURCOworICAgIGxldCBjaGVja0lEQkNhbGxiYWNr
OworICAgIGxldCBjaGVja0lEQkludGVydmFsSUQ7CisgICAgbGV0IHNlbWFwaG9yZUlEQkNoZWNr
ID0gZmFsc2U7CisgICAgZnVuY3Rpb24gY2hlY2tJREJEYXRhU3RvcmVFeGlzdHMoaXNBZnRlckRl
bGV0aW9uLCBjYWxsYmFjaykgeworICAgICAgICBsZXQgcmVxdWVzdDsKKyAgICAgICAgaW50ZXJ2
YWxDb3VudGVySURCID0gMDsKKyAgICAgICAgY2hlY2tJREJDYWxsYmFjayA9IGNhbGxiYWNrOwor
ICAgICAgICBpZiAoIWlzQWZ0ZXJEZWxldGlvbikgeworICAgICAgICAgICAgLy8gQ2hlY2sgdW50
aWwgdGhlcmUgaXMgYSBJREIuCisgICAgICAgICAgICBjaGVja0lEQkludGVydmFsSUQgPSBzZXRJ
bnRlcnZhbChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBpZiAoc2VtYXBob3JlSURCQ2hl
Y2spCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICBzZW1hcGhv
cmVJREJDaGVjayA9IHRydWU7CisKKyAgICAgICAgICAgICAgICBpZiAoKytpbnRlcnZhbENvdW50
ZXJJREIgPj0gbWF4SW50ZXJ2YWxzKSB7CisgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2
YWwoY2hlY2tJREJJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJC
ZWZvcmUgZGVsZXRpb246IElEQiBlbnRyeSBkb2VzIG5vdCBleGlzdC4iKTsKKyAgICAgICAgICAg
ICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAg
Y2hlY2tJREJDYWxsYmFjaygpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgICAgIHJlcXVlc3QgPSBpbmRleGVkREIub3BlbihkYk5hbWUpOworICAgICAgICAgICAg
ICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBjbGVhckludGVydmFsKGNoZWNrSURCSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBhZGRPdXRwdXQoIkNvdWxkbid0IG9wZW4gaW5kZXhlZERCLiIpOworICAgICAg
ICAgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAg
ICAgICAgICAgICAgICAgcmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbiAoKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBMZXQgdGhlIG5leHQgaW50ZXJ2YWwgY2hlY2sgYWdh
aW4uCisgICAgICAgICAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOwor
ICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2
YWwoY2hlY2tJREJJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1
dCgiQmVmb3JlIGRlbGV0aW9uOiBJREIgZW50cnkgZG9lcyBleGlzdC4iKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7CisgICAgICAgICAgICAgICAg
ICAgICAgICBjaGVja0lEQkNhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAgICAgIH07CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwgMjAwKTsKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIC8vIENoZWNrIHVudGlsIHRoZXJlIGlzIG5vIElEQi4KKyAgICAgICAgICAgIGNo
ZWNrSURCSW50ZXJ2YWxJRCA9IHNldEludGVydmFsKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
ICAgICBpZiAoc2VtYXBob3JlSURCQ2hlY2spCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IHRydWU7CisKKyAgICAgICAgICAg
ICAgICBpZiAoKytpbnRlcnZhbENvdW50ZXJJREIgPj0gbWF4SW50ZXJ2YWxzKSB7CisgICAgICAg
ICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tJREJJbnRlcnZhbElEKTsKKyAgICAgICAg
ICAgICAgICAgICAgYWRkT3V0cHV0KCJBZnRlciBkZWxldGlvbjogSURCIGVudHJ5IGNoZWNrcyBl
eGhhdXN0ZWQuIik7CisgICAgICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gZmFs
c2U7CisgICAgICAgICAgICAgICAgICAgIGNoZWNrSURCQ2FsbGJhY2soKTsKKyAgICAgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0ID0gaW5kZXhlZERCLm9w
ZW4oZGJOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rp
b24gKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0lEQklu
dGVydmFsSUQpOworICAgICAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJDb3VsZG4ndCBv
cGVuIGluZGV4ZWREQi4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNo
ZWNrID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAg
ICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qub251cGdyYWRl
bmVlZGVkID0gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRl
cnZhbChjaGVja0lEQkludGVydmFsSUQpOworICAgICAgICAgICAgICAgICAgICAgICAgYWRkT3V0
cHV0KCJBZnRlciBkZWxldGlvbjogSURCIGVudHJ5IGRvZXMgbm90IGV4aXN0LiIpOworICAgICAg
ICAgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNoZWNrSURCQ2FsbGJhY2soKTsKKyAgICAgICAgICAgICAgICAgICAgfTsK
KyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBMZXQgdGhlIG5leHQgaW50ZXJ2YWwgY2hlY2sgYWdh
aW4uCisgICAgICAgICAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOwor
ICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0s
IDIwMCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgaW50ZXJ2YWxDb3VudGVyTG9jYWxT
dG9yYWdlOworICAgIGxldCBjaGVja0xvY2FsU3RvcmFnZUNhbGxiYWNrOworICAgIGxldCBjaGVj
a0xvY2FsU3RvcmFnZUludGVydmFsSUQ7CisgICAgY29uc3QgbG9jYWxTdG9yYWdlTmFtZSA9ICJ0
ZXN0IjsKKyAgICBjb25zdCBsb2NhbFN0b3JhZ2VWYWx1ZSA9ICJ2YWx1ZSI7CisgICAgZnVuY3Rp
b24gY2hlY2tMb2NhbFN0b3JhZ2VFeGlzdHMoaXNBZnRlckRlbGV0aW9uLCBjYWxsYmFjaykgewor
ICAgICAgICBpbnRlcnZhbENvdW50ZXJMb2NhbFN0b3JhZ2UgPSAwOworICAgICAgICBjaGVja0xv
Y2FsU3RvcmFnZUNhbGxiYWNrID0gY2FsbGJhY2s7CisgICAgICAgIGlmICghaXNBZnRlckRlbGV0
aW9uKSB7CisgICAgICAgICAgICAvLyBDaGVjayB1bnRpbCB0aGVyZSBpcyBMb2NhbFN0b3JhZ2Uu
CisgICAgICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUludGVydmFsSUQgPSBzZXRJbnRlcnZhbChm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBpZiAoKytpbnRlcnZhbENvdW50ZXJMb2NhbFN0
b3JhZ2UgPj0gbWF4SW50ZXJ2YWxzKSB7CisgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2
YWwoY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgbGV0
IHZhbHVlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0obG9jYWxTdG9yYWdlTmFtZSk7CisgICAgICAg
ICAgICAgICAgICAgIGFkZE91dHB1dCgiQmVmb3JlIGRlbGV0aW9uOiBMb2NhbFN0b3JhZ2UgZW50
cnkgIiArICh2YWx1ZSA9PT0gbG9jYWxTdG9yYWdlVmFsdWUgPyAiZG9lcyIgOiAiZG9lcyBub3Qi
KSArICIgZXhpc3QuIik7CisgICAgICAgICAgICAgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlQ2Fs
bGJhY2soKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRlc3RSdW5uZXIuaXNTdGF0aXN0
aWNzSGFzTG9jYWxTdG9yYWdlKG9yaWdpblVuZGVyVGVzdCkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgY2xlYXJJbnRlcnZhbChjaGVja0xvY2FsU3RvcmFnZUludGVydmFsSUQpOworICAgICAgICAg
ICAgICAgICAgICBsZXQgdmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShsb2NhbFN0b3JhZ2VO
YW1lKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJCZWZvcmUgZGVsZXRpb246IExv
Y2FsU3RvcmFnZSBlbnRyeSAiICsgKHZhbHVlID09PSBsb2NhbFN0b3JhZ2VWYWx1ZSA/ICJkb2Vz
IiA6ICJkb2VzIG5vdCIpICsgIiBleGlzdC4iKTsKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tM
b2NhbFN0b3JhZ2VDYWxsYmFjaygpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0s
IDEwMCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBDaGVjayB1bnRpbCB0aGVy
ZSBpcyBubyBMb2NhbFN0b3JhZ2UuCisgICAgICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUludGVy
dmFsSUQgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBpZiAoKytp
bnRlcnZhbENvdW50ZXJMb2NhbFN0b3JhZ2UgPj0gbWF4SW50ZXJ2YWxzKSB7CisgICAgICAgICAg
ICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEKTsKKyAg
ICAgICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0obG9jYWxT
dG9yYWdlTmFtZSk7CisgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQWZ0ZXIgZGVsZXRp
b246IExvY2FsU3RvcmFnZSBlbnRyeSAiICsgKHZhbHVlID09PSBsb2NhbFN0b3JhZ2VWYWx1ZSA/
ICJkb2VzIiA6ICJkb2VzIG5vdCIpICsgIiBleGlzdC4iKTsKKyAgICAgICAgICAgICAgICAgICAg
Y2hlY2tMb2NhbFN0b3JhZ2VDYWxsYmFjaygpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAo
IXRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzSGFzTG9jYWxTdG9yYWdlKG9yaWdpblVuZGVyVGVzdCkp
IHsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0xvY2FsU3RvcmFnZUlu
dGVydmFsSUQpOworICAgICAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBsb2NhbFN0b3JhZ2Uu
Z2V0SXRlbShsb2NhbFN0b3JhZ2VOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0
KCJBZnRlciBkZWxldGlvbjogTG9jYWxTdG9yYWdlIGVudHJ5ICIgKyAodmFsdWUgPT09IGxvY2Fs
U3RvcmFnZVZhbHVlID8gImRvZXMiIDogImRvZXMgbm90IikgKyAiIGV4aXN0LiIpOworICAgICAg
ICAgICAgICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUNhbGxiYWNrKCk7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfSwgMTAwKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGFzeW5j
IGZ1bmN0aW9uIHdyaXRlV2Vic2l0ZURhdGFBbmRDb250aW51ZSgpIHsKKyAgICAgICAgLy8gV3Jp
dGUgY29va2llcy4KKyAgICAgICAgYXdhaXQgZmV0Y2goIi9jb29raWVzL3Jlc291cmNlcy9zZXQt
aHR0cC1vbmx5LWNvb2tpZS5waHA/Y29va2llTmFtZT0iICsgaHR0cE9ubHlDb29raWVOYW1lLCB7
IGNyZWRlbnRpYWxzOiAic2FtZS1vcmlnaW4iIH0pOworICAgICAgICBhd2FpdCBmZXRjaCgiL2Nv
b2tpZXMvcmVzb3VyY2VzL3NldENvb2tpZXMuY2dpIiwgeyBoZWFkZXJzOiB7ICJTZXQtQ29va2ll
Ijogc2VydmVyU2lkZUNvb2tpZU5hbWUgKyAiPTE7IHBhdGg9LzsiIH0sIGNyZWRlbnRpYWxzOiAi
c2FtZS1vcmlnaW4iIH0pOworICAgICAgICBkb2N1bWVudC5jb29raWUgPSBjbGllbnRTaWRlQ29v
a2llTmFtZSArICI9MSI7CisKKyAgICAgICAgY2hlY2tDb29raWVzKGZhbHNlKTsKKworICAgICAg
ICAvLyBXcml0ZSBMb2NhbFN0b3JhZ2UKKyAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0obG9j
YWxTdG9yYWdlTmFtZSwgbG9jYWxTdG9yYWdlVmFsdWUpOworICAgICAgICBjaGVja0xvY2FsU3Rv
cmFnZUV4aXN0cyhmYWxzZSwgZnVuY3Rpb24oKSB7CisKKyAgICAgICAgICAgIC8vIFdyaXRlIElu
ZGV4ZWREQi4KKyAgICAgICAgICAgIGNyZWF0ZUlEQkRhdGFTdG9yZShmdW5jdGlvbiAoKSB7Cisg
ICAgICAgICAgICAgICAgY2hlY2tJREJEYXRhU3RvcmVFeGlzdHMoZmFsc2UsIGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgICAgICAgICBhZGRMaW5lYnJlYWtUb091dHB1dCgpOworICAgICAgICAg
ICAgICAgICAgICBwcm9jZXNzV2Vic2l0ZURhdGFBbmRDb250aW51ZSgpOworICAgICAgICAgICAg
ICAgIH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIGZ1bmN0
aW9uIHByb2Nlc3NXZWJzaXRlRGF0YUFuZENvbnRpbnVlKCkgeworICAgICAgICB0ZXN0UnVubmVy
Lmluc3RhbGxTdGF0aXN0aWNzRGlkU2NhbkRhdGFSZWNvcmRzQ2FsbGJhY2soY2hlY2tXZWJzaXRl
RGF0YUFuZENvbnRpbnVlKTsKKyAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzUHJvY2Vzc1N0
YXRpc3RpY3NBbmREYXRhUmVjb3JkcygpOworICAgIH0KKworICAgIGZ1bmN0aW9uIGNoZWNrV2Vi
c2l0ZURhdGFBbmRDb250aW51ZSgpIHsKKyAgICAgICAgY2hlY2tDb29raWVzKHRydWUpOworICAg
ICAgICBjaGVja0xvY2FsU3RvcmFnZUV4aXN0cyh0cnVlLCBmdW5jdGlvbiAoKSB7CisgICAgICAg
ICAgICBjaGVja0lEQkRhdGFTdG9yZUV4aXN0cyh0cnVlLCBmaW5pc2hUZXN0KTsKKyAgICAgICAg
fSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gZmluaXNoVGVzdCgpIHsKKyAgICAgICAgcmVzZXRD
b29raWVzKCk7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc0ZpcnN0UGFydHlXZWJz
aXRlRGF0YVJlbW92YWxNb2RlKGZhbHNlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHNldEVu
YWJsZUZlYXR1cmUoZmFsc2UsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0KKwor
ICAgIGNvbnN0IG9yaWdpblVuZGVyVGVzdCAgPSAiaHR0cDovLzEyNy4wLjAuMTo4MDAwIjsKKyAg
ICBmdW5jdGlvbiBydW5UZXN0KCkgeworICAgICAgICBzZXRFbmFibGVGZWF0dXJlKHRydWUsIGZ1
bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc0ZpcnN0UGFy
dHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlKHRydWUsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
ICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc0hhc0hhZFVzZXJJbnRlcmFjdGlvbihvcmlnaW5V
bmRlclRlc3QsIGZhbHNlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRl
c3RSdW5uZXIuaXNTdGF0aXN0aWNzSGFzSGFkVXNlckludGVyYWN0aW9uKG9yaWdpblVuZGVyVGVz
dCkpCisgICAgICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkZBSUw6ICIgKyBvcmlnaW5V
bmRlclRlc3QgKyAiIGdvdCBsb2dnZWQgZm9yIHVzZXIgaW50ZXJhY3Rpb24uIik7CisgICAgICAg
ICAgICAgICAgICAgIHdyaXRlV2Vic2l0ZURhdGFBbmRDb250aW51ZSgpOworICAgICAgICAgICAg
ICAgIH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0KKzwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>