<?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>210864</bug_id>
          
          <creation_ts>2020-04-22 10:19:01 -0700</creation_ts>
          <short_desc>Removing website data for a domain should delete corresponding ITP entry</short_desc>
          <delta_ts>2020-04-24 14:08:15 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kate Cheney">katherine_cheney</reporter>
          <assigned_to name="Kate Cheney">katherine_cheney</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>wilander</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1644372</commentid>
    <comment_count>0</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-04-22 10:19:01 -0700</bug_when>
    <thetext>Individual deletion of Website Data should selectively delete ITP entries</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1644375</commentid>
    <comment_count>1</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-04-22 10:20:13 -0700</bug_when>
    <thetext>&lt;rdar://problem/59473193&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1645024</commentid>
    <comment_count>2</comment_count>
      <attachid>397402</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-04-23 17:20:54 -0700</bug_when>
    <thetext>Created attachment 397402
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1645258</commentid>
    <comment_count>3</comment_count>
      <attachid>397402</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-04-24 10:37:30 -0700</bug_when>
    <thetext>Comment on attachment 397402
Patch

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

r=me with comments.

&gt; Source/WebKit/ChangeLog:18
&gt; +        in the database due to cascading deletions.

Does it also delete for the plist-based store? If so, the terms differ there. No domainID.

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:2252
&gt; +    SQLiteStatement removeAllData(m_database, &quot;DELETE FROM ObservedDomains WHERE domainID = ?&quot;);

Do we typically inline these static strings? Or should it be declared somewhere else? If here, should we use _s?

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:2909
&gt; +    SQLiteStatement linkDecorationStatement(m_database, &quot;SELECT EXISTS (SELECT * FROM TopFrameLinkDecorationsFrom WHERE toDomainID = ? OR fromDomainID = ?)&quot;);

Ditto for these strings.

&gt; Source/WebKit/NetworkProcess/NetworkProcess.h:403
&gt; +    void deleteWebsiteDataForOrigins(PAL::SessionID, OptionSet&lt;WebsiteDataType&gt;, const Vector&lt;WebCore::SecurityOriginData&gt;&amp; origins, const Vector&lt;String&gt;&amp; cookieHostNames, const Vector&lt;String&gt;&amp; HSTSCacheHostnames, const Vector&lt;RegistrableDomain&gt;&amp; registrableDomains, CallbackID);

Doesn&apos;t need the parameter name registrableDomains.

&gt; Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreRef.cpp:69
&gt; +void WKWebsiteDataStoreRemoveITPDataForDomain(WKWebsiteDataStoreRef dataStoreRef, WKStringRef host, void* context, WKWebsiteDataStoreRemoveITPDataForDomainFunction callback)

We should check if this API should be made SPI since clients could call this to exempt specific domains from ITP treatment.

&gt; Source/WebKit/UIProcess/Network/NetworkProcessProxy.h:110
&gt; +    void deleteWebsiteDataForOrigins(PAL::SessionID, OptionSet&lt;WebKit::WebsiteDataType&gt;, const Vector&lt;WebCore::SecurityOriginData&gt;&amp; origins, const Vector&lt;String&gt;&amp; cookieHostNames, const Vector&lt;String&gt;&amp; HSTSCacheHostNames, const Vector&lt;RegistrableDomain&gt;&amp; registrableDomains, CompletionHandler&lt;void()&gt;&amp;&amp;);

Doesn&apos;t need the parameter name registrableDomains.

&gt; Tools/ChangeLog:9
&gt; +        Created 2 new SPIs for testing. One to mimic clearing website data

I think they are C APIs.

&gt; Tools/WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:296
&gt; +    boolean domainIDExistsInDatabase(unsigned long domainID);

The &quot;statistics&quot; term was added to these function names as a weak namespace since it&apos;s all a flat set of functions under testRunner. We should probably stick to it but then rename it to ITP once we rename ResourceLoadStatistics in source code. Or we could figure out a way to have testRunner.itp.* functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1645281</commentid>
    <comment_count>4</comment_count>
      <attachid>397402</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-04-24 11:08:29 -0700</bug_when>
    <thetext>Comment on attachment 397402
Patch

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

Thanks! I&apos;ll address these before landing.

&gt;&gt; Source/WebKit/ChangeLog:18
&gt;&gt; +        in the database due to cascading deletions.
&gt; 
&gt; Does it also delete for the plist-based store? If so, the terms differ there. No domainID.

Good catch! plist handling was so much simpler I forgot to even include it in here.

&gt;&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:2252
&gt;&gt; +    SQLiteStatement removeAllData(m_database, &quot;DELETE FROM ObservedDomains WHERE domainID = ?&quot;);
&gt; 
&gt; Do we typically inline these static strings? Or should it be declared somewhere else? If here, should we use _s?

Good point, the statement could be a constexpr value.

&gt;&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:2909
&gt;&gt; +    SQLiteStatement linkDecorationStatement(m_database, &quot;SELECT EXISTS (SELECT * FROM TopFrameLinkDecorationsFrom WHERE toDomainID = ? OR fromDomainID = ?)&quot;);
&gt; 
&gt; Ditto for these strings.

I&apos;ll predeclare these as well.

&gt;&gt; Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreRef.cpp:69
&gt;&gt; +void WKWebsiteDataStoreRemoveITPDataForDomain(WKWebsiteDataStoreRef dataStoreRef, WKStringRef host, void* context, WKWebsiteDataStoreRemoveITPDataForDomainFunction callback)
&gt; 
&gt; We should check if this API should be made SPI since clients could call this to exempt specific domains from ITP treatment.

Good point, I&apos;ve never had to do that for a WKWebsiteDataStoreRef function before. Maybe I can do this in WKWebsiteDataStore instead.

&gt;&gt; Tools/ChangeLog:9
&gt;&gt; +        Created 2 new SPIs for testing. One to mimic clearing website data
&gt; 
&gt; I think they are C APIs.

Ah, good catch. But one should probably be an SPI. I&apos;ll fix this.

&gt;&gt; Tools/WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:296
&gt;&gt; +    boolean domainIDExistsInDatabase(unsigned long domainID);
&gt; 
&gt; The &quot;statistics&quot; term was added to these function names as a weak namespace since it&apos;s all a flat set of functions under testRunner. We should probably stick to it but then rename it to ITP once we rename ResourceLoadStatistics in source code. Or we could figure out a way to have testRunner.itp.* functions.

Will do!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1645363</commentid>
    <comment_count>5</comment_count>
      <attachid>397500</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-04-24 13:35:51 -0700</bug_when>
    <thetext>Created attachment 397500
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1645368</commentid>
    <comment_count>6</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-04-24 13:40:57 -0700</bug_when>
    <thetext>(In reply to katherine_cheney from comment #4)
&gt; Comment on attachment 397402 [details]
&gt; Patch

&gt; &gt;&gt; Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreRef.cpp:69
&gt; &gt;&gt; +void WKWebsiteDataStoreRemoveITPDataForDomain(WKWebsiteDataStoreRef dataStoreRef, WKStringRef host, void* context, WKWebsiteDataStoreRemoveITPDataForDomainFunction callback)
&gt; &gt; 
&gt; &gt; We should check if this API should be made SPI since clients could call this to exempt specific domains from ITP treatment.
&gt; 
&gt; Good point, I&apos;ve never had to do that for a WKWebsiteDataStoreRef function
&gt; before. Maybe I can do this in WKWebsiteDataStore instead.

Landing the patch with an API but tracking the potential change to SPI in a separate radar &lt;rdar://problem/62335968&gt;. I think there may be other APIs for ITP that could/should also be made SPIs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1645385</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-04-24 14:08:14 -0700</bug_when>
    <thetext>Committed r260668: &lt;https://trac.webkit.org/changeset/260668&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 397500.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>397402</attachid>
            <date>2020-04-23 17:20:54 -0700</date>
            <delta_ts>2020-04-24 13:35:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210864-20200423172053.patch</filename>
            <type>text/plain</type>
            <size>69877</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwNTk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGFlNmZlNDc3MjMxZTM3ZDBj
Y2Y1N2MwZGI4NjRiYjE1MjM3ODA5YzguLjQxZDNmM2EzZmNmMjQxMzQ2MTc2NjlhNjVlMzhjN2Y2
NGNmYzRjMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjEgQEAKKzIwMjAtMDQtMjMgIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3Zpbmcgd2Vi
c2l0ZSBkYXRhIGZvciBhIGRvbWFpbiBzaG91bGQgZGVsZXRlIGNvcnJlc3BvbmRpbmcgSVRQIGVu
dHJ5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTA4
NjQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU5NDczMTkzPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL3Jlc291cmNl
TG9hZFN0YXRpc3RpY3MvcmVtb3ZlLXdlYnNpdGUtZGF0YS1mb3Itb3JpZ2luLWRlbGV0ZXMtbGlu
ay1kZWNvcmF0aW9uLWRhdGFiYXNlLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvcmVz
b3VyY2VMb2FkU3RhdGlzdGljcy9yZW1vdmUtd2Vic2l0ZS1kYXRhLWZvci1vcmlnaW4tZGVsZXRl
cy1saW5rLWRlY29yYXRpb24uaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzL3JlbW92ZS13ZWJzaXRlLWRhdGEtZm9yLW9yaWdpbi1kZWxldGVzLW1p
eGVkLXN0YXRpc3RpY3MtZW50cmllcy1kYXRhYmFzZS5odG1sCisgICAgICAgICAgICAgICBodHRw
L3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVtb3ZlLXdlYnNpdGUtZGF0YS1mb3Itb3Jp
Z2luLWRlbGV0ZXMtbWl4ZWQtc3RhdGlzdGljcy1lbnRyaWVzLmh0bWwKKyAgICAgICAgICAgICAg
IGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZW1vdmUtd2Vic2l0ZS1kYXRhLWZv
ci1vcmlnaW4tZGVsZXRlcy10aGlyZC1wYXJ0eS1zY3JpcHQtbG9hZHMtZGF0YWJhc2UuaHRtbAor
ICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3JlbW92ZS13
ZWJzaXRlLWRhdGEtZm9yLW9yaWdpbi1kZWxldGVzLXRoaXJkLXBhcnR5LXNjcmlwdC1sb2Fkcy5o
dG1sCisKKyAgICAgICAgRGVsZXRlcyBkb21haW4gZnJvbSB0aGUgT2JzZXJ2ZWREb21haW5zIHRh
YmxlIHdoZW4gd2Vic2l0ZSBkYXRhIGlzCisgICAgICAgIGRlbGV0ZWQgZm9yIHRoYXQgZG9tYWlu
LiBUaGlzIGRlbGV0ZXMgZXZlcnkgaW5zdGFuY2Ugb2YgdGhlIGRvbWFpbklECisgICAgICAgIGlu
IHRoZSBkYXRhYmFzZSBkdWUgdG8gY2FzY2FkaW5nIGRlbGV0aW9ucy4KKworICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZTo6cmVtb3ZlRGF0YUZvckRvbWFpbik6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpkb21haW5JREV4aXN0c0luRGF0YWJhc2UpOgorICAg
ICAgICBOZWVkZWQgYSBuZXcgZnVuY3Rpb24gdG8gY2hlY2sgZm9yIHRoZSBleGlzdGVuY2Ugb2Yg
ZG9tYWluSUQgaW4gYW55CisgICAgICAgIHRhYmxlLiBFeGlzdGluZyBxdWVyaWVzIHJlbHkgb24g
dGhlIE9ic2VydmVkRG9tYWlucyBlbnRyeSwgd2hpY2ggbWVhbnMKKyAgICAgICAgdGVzdGluZyB1
c2luZyB0aG9zZSBjb3VsZCByZXN1bHQgaW4gYSBmYWxzZSBwb3NpdGl2ZSBpZiB0aGUgZG9tYWlu
SUQKKyAgICAgICAgd2FzIGRlbGV0ZWQgZnJvbSBPYnNlcnZlZERvbWFpbnMgYnV0IGlzIGZsb2F0
aW5nIGFyb3VuZCBpbiBhbm90aGVyCisgICAgICAgIHRhYmxlLgorCisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5o
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01lbW9yeVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlz
dGljc01lbW9yeVN0b3JlOjpyZW1vdmVEYXRhRm9yRG9tYWluKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OmRvbWFpbklERXhpc3RzSW5EYXRhYmFzZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVtb3ZlRGF0YUZvckRvbWFp
bik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkb21haW5JREV4aXN0c0lu
RGF0YWJhc2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0
ZURhdGFGb3JPcmlnaW5zKToKKyAgICAgICAgUGFzcyBSZWdpc3RyYWJsZURvbWFpbnMgdmVjdG9y
IHRvIGRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucywKKyAgICAgICAgY2FwdHVyZWQgYmFzZWQg
b24gdGhlIFdlYnNpdGVEYXRhIGRpc3BsYXkgbmFtZS4KKworICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURh
dGFTdG9yZVJlZi5jcHA6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVJVFBEYXRh
Rm9yRG9tYWluKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZURvbWFpbklERXhpc3RzSW5E
YXRhYmFzZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJl
Zi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkZWxldGVXZWJzaXRlRGF0
YUZvck9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpkb21h
aW5JREV4aXN0c0luRGF0YWJhc2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnJlbW92
ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkb21haW5JREV4aXN0
c0luRGF0YWJhc2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlLmg6CisKIDIwMjAtMDQtMjMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
IAogICAgICAgICBbaU9TXSBDcmFzaCBvbiBSdW5uaW5nQm9hcmQgcHJvY2VzcyBhc3NlcnRpb24g
aW52YWxpZGF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlLmNwcAppbmRleCBkNDIxNzJlODc2N2EwNTc2MTRiNTI5ZWExYjU2OGEwMGU1
MjViZDkwLi44N2JhYjQ4OWY4OGVlNTliYjA4YzFkNzk4MmIyMmIyNWY1YzE3ZTU2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAK
QEAgLTIyNDMsNiArMjI0MywyMSBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOjpjbGVhckRhdGFiYXNlQ29udGVudHMoKQogICAgIH0KIH0KIAordm9pZCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVtb3ZlRGF0YUZvckRvbWFpbihjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluKQoreworICAgIGF1dG8gZG9tYWluSURUb1JlbW92ZSA9
IGRvbWFpbklEKGRvbWFpbik7CisgICAgaWYgKCFkb21haW5JRFRvUmVtb3ZlKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBTUUxpdGVTdGF0ZW1lbnQgcmVtb3ZlQWxsRGF0YShtX2RhdGFiYXNlLCAi
REVMRVRFIEZST00gT2JzZXJ2ZWREb21haW5zIFdIRVJFIGRvbWFpbklEID0gPyIpOworICAgIGlm
IChyZW1vdmVBbGxEYXRhLnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgcmVtb3Zl
QWxsRGF0YS5iaW5kSW50KDEsICpkb21haW5JRFRvUmVtb3ZlKSAhPSBTUUxJVEVfT0sKKyAgICAg
ICAgfHwgcmVtb3ZlQWxsRGF0YS5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKKyAgICAgICAgUkVM
RUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlbW92ZURhdGFGb3JEb21haW4gZmFpbGVkLCBlcnJv
ciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkp
OworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9Cit9CisKIHZvaWQgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsZWFyKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFp
bigpKTsKQEAgLTI4ODksNiArMjkwNCw1NiBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjpyZXNvdXJjZVRvU3RyaW5nKFN0cmluZ0J1aWxkZXImIGJ1aWxkZQogICAg
IHJlc2V0U3RhdGVtZW50KG1fZ2V0UmVzb3VyY2VEYXRhQnlEb21haW5OYW1lU3RhdGVtZW50KTsK
IH0KIAorYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZG9tYWluSURF
eGlzdHNJbkRhdGFiYXNlKGludCBkb21haW5JRCkKK3sKKyAgICBTUUxpdGVTdGF0ZW1lbnQgbGlu
a0RlY29yYXRpb25TdGF0ZW1lbnQobV9kYXRhYmFzZSwgIlNFTEVDVCBFWElTVFMgKFNFTEVDVCAq
IEZST00gVG9wRnJhbWVMaW5rRGVjb3JhdGlvbnNGcm9tIFdIRVJFIHRvRG9tYWluSUQgPSA/IE9S
IGZyb21Eb21haW5JRCA9ID8pIik7CisgICAgU1FMaXRlU3RhdGVtZW50IHNjcmlwdExvYWRTdGF0
ZW1lbnQobV9kYXRhYmFzZSwgIlNFTEVDVCBFWElTVFMgKFNFTEVDVCAqIEZST00gVG9wRnJhbWVM
b2FkZWRUaGlyZFBhcnR5U2NyaXB0cyBXSEVSRSB0b3BGcmFtZURvbWFpbklEID0gPyBPUiBzdWJy
ZXNvdXJjZURvbWFpbklEID0gPykiKTsKKyAgICBTUUxpdGVTdGF0ZW1lbnQgc3ViRnJhbWVTdGF0
ZW1lbnQobV9kYXRhYmFzZSwgIlNFTEVDVCBFWElTVFMgKFNFTEVDVCAqIEZST00gU3ViZnJhbWVV
bmRlclRvcEZyYW1lRG9tYWlucyBXSEVSRSBzdWJGcmFtZURvbWFpbklEID0gPyBPUiB0b3BGcmFt
ZURvbWFpbklEID0gPykiKTsKKyAgICBTUUxpdGVTdGF0ZW1lbnQgc3ViUmVzb3VyY2VTdGF0ZW1l
bnQobV9kYXRhYmFzZSwgIlNFTEVDVCBFWElTVFMgKFNFTEVDVCAqIEZST00gU3VicmVzb3VyY2VV
bmRlclRvcEZyYW1lRG9tYWlucyBXSEVSRSBzdWJyZXNvdXJjZURvbWFpbklEID0gPyBPUiB0b3BG
cmFtZURvbWFpbklEID0gPykiKTsKKyAgICBTUUxpdGVTdGF0ZW1lbnQgdW5pcXVlUmVkaXJlY3RT
dGF0ZW1lbnQobV9kYXRhYmFzZSwgIlNFTEVDVCBFWElTVFMgKFNFTEVDVCAqIEZST00gU3VicmVz
b3VyY2VVbmlxdWVSZWRpcmVjdHNUbyBXSEVSRSBzdWJyZXNvdXJjZURvbWFpbklEID0gPyBPUiB0
b0RvbWFpbklEID0gPykiKTsKKyAgICBTUUxpdGVTdGF0ZW1lbnQgb2JzZXJ2ZWREb21haW5zU3Rh
dGVtZW50KG1fZGF0YWJhc2UsICJTRUxFQ1QgRVhJU1RTIChTRUxFQ1QgKiBGUk9NIE9ic2VydmVk
RG9tYWlucyBXSEVSRSBkb21haW5JRCA9ID8pIik7CisKKyAgICBpZiAobGlua0RlY29yYXRpb25T
dGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSworICAgICAgICB8fCBzY3JpcHRMb2FkU3Rh
dGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgc3ViRnJhbWVTdGF0ZW1l
bnQucHJlcGFyZSgpICE9IFNRTElURV9PSworICAgICAgICB8fCBzdWJSZXNvdXJjZVN0YXRlbWVu
dC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IHVuaXF1ZVJlZGlyZWN0U3RhdGVt
ZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgb2JzZXJ2ZWREb21haW5zU3Rh
dGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0spIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6OmRvbWFpbklERXhpc3RzSW5EYXRhYmFzZSBmYWlsZWQgdG8gcHJlcGFyZSwg
ZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1z
ZygpKTsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisKKyAgICBpZiAobGlua0RlY29yYXRpb25TdGF0ZW1lbnQuYmluZEludCgxLCBk
b21haW5JRCkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IGxpbmtEZWNvcmF0aW9uU3RhdGVtZW50
LmJpbmRJbnQoMiwgZG9tYWluSUQpICE9IFNRTElURV9PSworICAgICAgICB8fCBzY3JpcHRMb2Fk
U3RhdGVtZW50LmJpbmRJbnQoMSwgZG9tYWluSUQpICE9IFNRTElURV9PSworICAgICAgICB8fCBz
Y3JpcHRMb2FkU3RhdGVtZW50LmJpbmRJbnQoMiwgZG9tYWluSUQpICE9IFNRTElURV9PSworICAg
ICAgICB8fCBzdWJGcmFtZVN0YXRlbWVudC5iaW5kSW50KDEsIGRvbWFpbklEKSAhPSBTUUxJVEVf
T0sKKyAgICAgICAgfHwgc3ViRnJhbWVTdGF0ZW1lbnQuYmluZEludCgyLCBkb21haW5JRCkgIT0g
U1FMSVRFX09LCisgICAgICAgIHx8IHN1YlJlc291cmNlU3RhdGVtZW50LmJpbmRJbnQoMSwgZG9t
YWluSUQpICE9IFNRTElURV9PSworICAgICAgICB8fCBzdWJSZXNvdXJjZVN0YXRlbWVudC5iaW5k
SW50KDIsIGRvbWFpbklEKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgdW5pcXVlUmVkaXJlY3RT
dGF0ZW1lbnQuYmluZEludCgxLCBkb21haW5JRCkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IHVu
aXF1ZVJlZGlyZWN0U3RhdGVtZW50LmJpbmRJbnQoMiwgZG9tYWluSUQpICE9IFNRTElURV9PSwor
ICAgICAgICB8fCBvYnNlcnZlZERvbWFpbnNTdGF0ZW1lbnQuYmluZEludCgxLCBkb21haW5JRCkg
IT0gU1FMSVRFX09LKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9z
ZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpkb21h
aW5JREV4aXN0c0luRGF0YWJhc2UgZmFpbGVkIHRvIGJpbmQsIGVycm9yIG1lc3NhZ2U6ICV7cHJp
dmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYg
KGxpbmtEZWNvcmF0aW9uU3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxJVEVfUk9XCisgICAgICAgIHx8
IHNjcmlwdExvYWRTdGF0ZW1lbnQuc3RlcCgpICE9IFNRTElURV9ST1cKKyAgICAgICAgfHwgc3Vi
RnJhbWVTdGF0ZW1lbnQuc3RlcCgpICE9IFNRTElURV9ST1cKKyAgICAgICAgfHwgc3ViUmVzb3Vy
Y2VTdGF0ZW1lbnQuc3RlcCgpICE9IFNRTElURV9ST1cKKyAgICAgICAgfHwgdW5pcXVlUmVkaXJl
Y3RTdGF0ZW1lbnQuc3RlcCgpICE9IFNRTElURV9ST1cKKyAgICAgICAgfHwgb2JzZXJ2ZWREb21h
aW5zU3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxJVEVfUk9XKSB7CisgICAgICAgIFJFTEVBU0VfTE9H
X0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjpkb21haW5JREV4aXN0c0luRGF0YWJhc2UgZmFpbGVkIHRvIHN0ZXAs
IGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JN
c2coKSk7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCisgICAgcmV0dXJuIGxpbmtEZWNvcmF0aW9uU3RhdGVtZW50LmdldENvbHVt
bkludCgwKSB8fCBzY3JpcHRMb2FkU3RhdGVtZW50LmdldENvbHVtbkludCgwKSB8fCBzdWJGcmFt
ZVN0YXRlbWVudC5nZXRDb2x1bW5JbnQoMCkgfHwgc3ViUmVzb3VyY2VTdGF0ZW1lbnQuZ2V0Q29s
dW1uSW50KDApIHx8IHVuaXF1ZVJlZGlyZWN0U3RhdGVtZW50LmdldENvbHVtbkludCgwKSB8fCBv
YnNlcnZlZERvbWFpbnNTdGF0ZW1lbnQuZ2V0Q29sdW1uSW50KDApOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZS5oCmluZGV4IDA5NzdjNTFhOTg3ZTQ1MDJiMjUxNjI2MDI1ZjQ3
MDllNWZmZjc0M2EuLjExN2ZiOWYyNzg1ZDkxYmExODI0NGQ4YmJlMTIzMTc1YTg4Mjg4ZWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5o
CkBAIC0xMzgsNiArMTM4LDggQEAgcHVibGljOgogICAgIFNlY29uZHMgZ2V0TW9zdFJlY2VudGx5
VXBkYXRlZFRpbWVzdGFtcChjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1l
RG9tYWluJikgY29uc3Q7CiAgICAgYm9vbCBpc05ld1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZUZpbGUoKSBjb25zdCB7IHJldHVybiBtX2lzTmV3UmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlRmlsZTsgfQogICAgIHZvaWQgc2V0SXNOZXdSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VGaWxlKGJvb2wgaXNOZXdSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VGaWxlKSB7
IG1faXNOZXdSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VGaWxlID0gaXNOZXdSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VGaWxlOyB9CisgICAgdm9pZCByZW1vdmVEYXRhRm9yRG9t
YWluKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJikgb3ZlcnJpZGU7CisgICAgYm9vbCBkb21haW5J
REV4aXN0c0luRGF0YWJhc2UoaW50KTsKIAogcHJpdmF0ZToKICAgICB2b2lkIG9wZW5JVFBEYXRh
YmFzZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0
b3JlLmNwcAppbmRleCA2M2U2M2Y5OTRhZjUzNTkwNDVlNTM1MzgwYjNmZjViOGQyMjE3YzcxLi42
NTA2Nzk3MTk2MjJhZjEyZmFkNWMxNjJmMmNkZGNhYWFiOTBlNDc2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01lbW9yeVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcApAQCAtMTA0Miw2ICsx
MDQyLDIzIEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpzZXRMYXN0
U2Vlbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tCiAgICAgc3RhdGlzdGljcy5sYXN0U2Vl
biA9IFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhzZWNvbmRzLnNlY29uZHMoKSk7CiB9CiAKK3Zv
aWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpyZW1vdmVEYXRhRm9yRG9tYWlu
KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4pCit7CisgICAgbV9yZXNvdXJjZVN0YXRp
c3RpY3NNYXAucmVtb3ZlKGRvbWFpbik7CisgICAgCisgICAgZm9yIChhdXRvJiBzdGF0aXN0aWMg
OiBtX3Jlc291cmNlU3RhdGlzdGljc01hcCkgeworICAgICAgICBzdGF0aXN0aWMudmFsdWUudG9w
RnJhbWVVbmlxdWVSZWRpcmVjdHNUby5yZW1vdmUoZG9tYWluKTsKKyAgICAgICAgc3RhdGlzdGlj
LnZhbHVlLnRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG9TaW5jZVNhbWVTaXRlU3RyaWN0RW5mb3Jj
ZW1lbnQucmVtb3ZlKGRvbWFpbik7CisgICAgICAgIHN0YXRpc3RpYy52YWx1ZS50b3BGcmFtZVVu
aXF1ZVJlZGlyZWN0c0Zyb20ucmVtb3ZlKGRvbWFpbik7CisgICAgICAgIHN0YXRpc3RpYy52YWx1
ZS50b3BGcmFtZUxpbmtEZWNvcmF0aW9uc0Zyb20ucmVtb3ZlKGRvbWFpbik7CisgICAgICAgIHN0
YXRpc3RpYy52YWx1ZS50b3BGcmFtZUxvYWRlZFRoaXJkUGFydHlTY3JpcHRzLnJlbW92ZShkb21h
aW4pOworICAgICAgICBzdGF0aXN0aWMudmFsdWUuc3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWlu
cy5yZW1vdmUoZG9tYWluKTsKKyAgICAgICAgc3RhdGlzdGljLnZhbHVlLnN1YnJlc291cmNlVW5k
ZXJUb3BGcmFtZURvbWFpbnMucmVtb3ZlKGRvbWFpbik7CisgICAgICAgIHN0YXRpc3RpYy52YWx1
ZS5zdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvLnJlbW92ZShkb21haW4pOworICAgICAgICBz
dGF0aXN0aWMudmFsdWUuc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tLnJlbW92ZShkb21h
aW4pOworICAgIH0KK30KKwogdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6
OnNldFByZXZhbGVudFJlc291cmNlKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4pCiB7
CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9y
eVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmgKaW5kZXggOGQ2NzY2NGUwMGQ2YjMxYzc0MWY4
NzI4MjQxYTdjODZkOTMyZDYxMi4uMjQ2ZTc2NzFlYTE4NTA1Mjk1N2UzMjIwZjdiZjExYzVlMjRi
MDhiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3Rv
cmUuaApAQCAtMTEyLDYgKzExMiw3IEBAIHB1YmxpYzoKICAgICBib29sIGhhc0hhZFVzZXJJbnRl
cmFjdGlvbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIE9wZXJhdGluZ0RhdGVzV2luZG93KSBv
dmVycmlkZTsKIAogICAgIHZvaWQgc2V0TGFzdFNlZW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4m
LCBTZWNvbmRzKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlbW92ZURhdGFGb3JEb21haW4oY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBzdGF0aWMgYm9v
bCBzaG91bGRCbG9ja0FuZEtlZXBDb29raWVzKGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3Mm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAppbmRleCBlZjRjNjZm
ODdhODZiZWQ5ZTM2Nzk2ZTQ5MmJhNTk0NWFkNWEwMDRkLi40NDgzMzNjNDlmNjNiMmYxOTIwYjg2
ZTMzMjA1ODdmY2UzNWI2OTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5oCkBAIC0xODQsNiArMTg0LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHNl
dExhc3RTZWVuKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBwcmltYXJ5RG9tYWluLCBTZWNvbmRz
KSA9IDA7CiAKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRGF0YUZvckRvbWFpbihjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYpID0gMDsKKyAgICAKICAgICB2b2lkIGRpZENyZWF0ZU5ldHdvcmtQcm9j
ZXNzKCk7CiAKICAgICBjb25zdCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUmIHN0b3Jl
KCkgY29uc3QgeyByZXR1cm4gbV9zdG9yZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCAxZWY4YWNkYjU1NTBhOGY2ZmFkZmY2Y2MxOGYw
NGFjNzhhZDEwMTQ2Li5iZmU5YmMzMjI4ZjU5MDE1ZDZiYjlkYzEyZTI2NzJiZmYwMzcyOWFhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcApAQCAt
MTE1NSw2ICsxMTU1LDIzIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpj
bGVhckluTWVtb3J5RXBoZW1lcmFsKENvbXBsZXRpb25IYW5kbGVyPHZvCiAgICAgY29tcGxldGlv
bkhhbmRsZXIoKTsKIH0KIAordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmRv
bWFpbklERXhpc3RzSW5EYXRhYmFzZShpbnQgZG9tYWluSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6Omlz
TWFpbigpKTsKKworICAgIHBvc3RUYXNrKFt0aGlzLCBkb21haW5JRCwgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgaWYg
KCFtX3N0YXRpc3RpY3NTdG9yZSB8fCAhaXM8UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU+KCptX3N0YXRpc3RpY3NTdG9yZSkpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKGZhbHNlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBhdXRv
JiBkYXRhYmFzZVN0b3JlID0gZG93bmNhc3Q8UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU+KCptX3N0YXRpc3RpY3NTdG9yZSk7CisgICAgICAgIGJvb2wgZG9tYWluSURFeGlzdHMg
PSBkYXRhYmFzZVN0b3JlLmRvbWFpbklERXhpc3RzSW5EYXRhYmFzZShkb21haW5JRCk7CisgICAg
ICAgIHBvc3RUYXNrUmVwbHkoW2RvbWFpbklERXhpc3RzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoZG9tYWluSURFeGlzdHMpOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKwog
dm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFRpbWVUb0xpdmVVc2VySW50
ZXJhY3Rpb24oU2Vjb25kcyBzZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKQEAgLTEy
ODMsNiArMTMwMCwxNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aW52
YWxpZGF0ZUFuZENhbmNlbCgpCiAgICAgbV9uZXR3b3JrU2Vzc2lvbiA9IG51bGxwdHI7CiB9CiAK
K3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZW1vdmVEYXRhRm9yRG9tYWlu
KFJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQoreworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAg
cG9zdFRhc2soW3RoaXMsIGRvbWFpbiA9IFdURk1vdmUoZG9tYWluKSwgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgaWYg
KG1fc3RhdGlzdGljc1N0b3JlKQorICAgICAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUtPnJlbW92
ZURhdGFGb3JEb21haW4oZG9tYWluKTsKKworICAgICAgICBwb3N0VGFza1JlcGx5KFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICB9KTsKK30KKwogdm9pZCBXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OmRlbGV0ZUFuZFJlc3RyaWN0V2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJs
ZURvbWFpbnMoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBSZWdpc3RyYWJs
ZURvbWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZvciYmIGRvbWFpbnNUb0RlbGV0
ZUFuZFJlc3RyaWN0V2Vic2l0ZURhdGFGb3IsIGJvb2wgc2hvdWxkTm90aWZ5UGFnZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKaW5kZXggMzAzMGE0ZDg2
MDJjODY1YzU4MzgyNmRkMmFiZDBjNjQ0OGM2ZWQyNi4uZGU0MTU5Yzk3M2E4MzBjZmNiZjQ2ZDQ3
NDYwNWMxMDFmMzNmM2E1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuaApAQCAtMjE4LDYgKzIxOCw3IEBAIHN0cnVjdCBUaGlyZFBhcnR5RGF0YSB7CiAg
ICAgdm9pZCBsb2dVc2VySW50ZXJhY3Rpb24oY29uc3QgVG9wRnJhbWVEb21haW4mLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgbG9nQ3Jvc3NTaXRlTG9hZFdpdGhMaW5r
RGVjb3JhdGlvbihjb25zdCBOYXZpZ2F0ZWRGcm9tRG9tYWluJiwgY29uc3QgTmF2aWdhdGVkVG9E
b21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgY2xlYXJVc2Vy
SW50ZXJhY3Rpb24oY29uc3QgVG9wRnJhbWVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOworICAgIHZvaWQgcmVtb3ZlRGF0YUZvckRvbWFpbihjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGRlbGV0ZUFuZFJl
c3RyaWN0V2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoT3B0aW9uU2V0PFdlYnNpdGVE
YXRhVHlwZT4sIFJlZ2lzdHJhYmxlRG9tYWluc1RvRGVsZXRlT3JSZXN0cmljdFdlYnNpdGVEYXRh
Rm9yJiYsIGJvb2wgc2hvdWxkTm90aWZ5UGFnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYpPiYmKTsKICAgICB2b2lkIHJlZ2lzdHJhYmxl
RG9tYWluc1dpdGhXZWJzaXRlRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgYm9vbCBz
aG91bGROb3RpZnlQYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc2hTZXQ8UmVnaXN0cmFi
bGVEb21haW4+JiYpPiYmKTsKICAgICBTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCBncmFudFN0b3Jh
Z2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIE9w
dGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
KTsKQEAgLTI1NCw2ICsyNTUsNyBAQCBzdHJ1Y3QgVGhpcmRQYXJ0eURhdGEgewogICAgIHZvaWQg
c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChTaG91bGRHcmFuZGZhdGhlclN0YXRp
c3RpY3MsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzY2hlZHVsZUNs
ZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFdhbGxUaW1lIG1vZGlmaWVkU2luY2UsIFNob3VsZEdy
YW5kZmF0aGVyU3RhdGlzdGljcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2
b2lkIGNsZWFySW5NZW1vcnlFcGhlbWVyYWwoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
KyAgICB2b2lkIGRvbWFpbklERXhpc3RzSW5EYXRhYmFzZShpbnQgZG9tYWluSUQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogCiAgICAgdm9pZCBzZXRUaW1lVG9MaXZlVXNlcklu
dGVyYWN0aW9uKFNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9p
ZCBzZXRNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwoU2Vjb25kcywgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggZjYyZTk4NjEwZGQyZTc0ZWZjZjBjODk5NDc1ZTZk
MDk1YjhmOTE2Yi4uZjhjYTYzZDA2YjgwMTNkYTkwY2YyNDE5OGY1MzdhOWM1MzVkMjAwZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAg
LTk5MCw2ICs5OTAsMTkgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0TGFzdFNlZW4oUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWEKICAgICB9CiB9CiAKK3Zv
aWQgTmV0d29ya1Byb2Nlc3M6OmRvbWFpbklERXhpc3RzSW5EYXRhYmFzZShQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIGludCBkb21haW5JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0
aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIGlmIChhdXRvKiByZXNv
dXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MoKSkKKyAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmRvbWFpbklERXhpc3Rz
SW5EYXRhYmFzZShkb21haW5JRCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKGZhbHNlKTsKKyAgICB9Cit9CisKIHZvaWQgTmV0d29ya1Byb2Nlc3M6Om1lcmdlU3RhdGlz
dGljRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiBkb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbjEs
IGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbjIsIFNlY29uZHMgbGFzdFNl
ZW4sIGJvb2wgaGFkVXNlckludGVyYWN0aW9uLCBTZWNvbmRzIG1vc3RSZWNlbnRVc2VySW50ZXJh
Y3Rpb24sIGJvb2wgaXNHcmFuZGZhdGhlcmVkLCBib29sIGlzUHJldmFsZW50LCBib29sIGlzVmVy
eVByZXZhbGVudCwgdW5zaWduZWQgZGF0YVJlY29yZHNSZW1vdmVkLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtT
ZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewpAQCAtMTYwNCw3ICsx
NjE3LDcgQEAgc3RhdGljIHZvaWQgY2xlYXJEaXNrQ2FjaGVFbnRyaWVzKE5ldHdvcmtDYWNoZTo6
Q2FjaGUqIGNhY2hlLCBjb25zdCBWZWN0b3I8U2VjdXIKICAgICB9KTsKIH0KIAotdm9pZCBOZXR3
b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBlcywgY29u
c3QgVmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4mIG9yaWdpbkRhdGFzLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgY29va2llSG9zdE5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgSFNUU0NhY2hl
SG9zdE5hbWVzLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpk
ZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRp
b25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzLCBjb25zdCBWZWN0b3I8U2Vj
dXJpdHlPcmlnaW5EYXRhPiYgb3JpZ2luRGF0YXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBjb29r
aWVIb3N0TmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBIU1RTQ2FjaGVIb3N0TmFtZXMsIGNv
bnN0IFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4mIHJlZ2lzdHJhYmxlRG9tYWlucywgQ2FsbGJh
Y2tJRCBjYWxsYmFja0lEKQogewogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdl
YnNpdGVEYXRhVHlwZTo6Q29va2llcykpIHsKICAgICAgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCkBAIC0xNjc4LDYgKzE2OTEs
MTcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW8KICAgICAgICAgfQogICAgICAgICBXZWJDb3Jl
OjpDcmVkZW50aWFsU3RvcmFnZTo6cmVtb3ZlU2Vzc2lvbkNyZWRlbnRpYWxzV2l0aE9yaWdpbnMo
b3JpZ2luRGF0YXMpOwogICAgIH0KKworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJ
Q1MpCisgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzKSkgeworICAgICAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Np
b24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgICAgICBmb3Ig
KGF1dG8mIGRvbWFpbiA6IHJlZ2lzdHJhYmxlRG9tYWlucykgeworICAgICAgICAgICAgICAgIGlm
IChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNl
TG9hZFN0YXRpc3RpY3MoKSkKKyAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy0+cmVtb3ZlRGF0YUZvckRvbWFpbihkb21haW4sIFtjbGVhclRhc2tzSGFuZGxlciA9IGNs
ZWFyVGFza3NIYW5kbGVyLmNvcHlSZWYoKV0geyB9KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIH0KKyNlbmRpZgogfQogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElD
UykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRl
eCA2ZDg2Y2E5NDQwOWJiMGY5ZDkzMzhkZmE1NmQ2ZDI3YmNlZTE4ZjMxLi5hNTc3MDU0YzRhNGI4
MDBmYTk4NThlMDQ2MjY0YWM2MTExZTY1YWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0yNDEsNiArMjQxLDcgQEAgcHVibGljOgogICAg
IHZvaWQgc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoUEFMOjpTZXNzaW9u
SUQsIFNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRH
cmFuZGZhdGhlcmluZ1RpbWUoUEFMOjpTZXNzaW9uSUQsIFNlY29uZHMsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRMYXN0U2VlbihQQUw6OlNlc3Npb25JRCwgY29u
c3QgUmVnaXN0cmFibGVEb21haW4mLCBTZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOworICAgIHZvaWQgZG9tYWluSURFeGlzdHNJbkRhdGFiYXNlKFBBTDo6U2Vzc2lvbklELCBp
bnQgZG9tYWluSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQg
bWVyZ2VTdGF0aXN0aWNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiB0b3BGcmFtZURvbWFpbjEsIGNvbnN0IFRv
cEZyYW1lRG9tYWluJiB0b3BGcmFtZURvbWFpbjIsIFNlY29uZHMgbGFzdFNlZW4sIGJvb2wgaGFk
VXNlckludGVyYWN0aW9uLCBTZWNvbmRzIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb24sIGJvb2wg
aXNHcmFuZGZhdGhlcmVkLCBib29sIGlzUHJldmFsZW50LCBib29sIGlzVmVyeVByZXZhbGVudCwg
dW5zaWduZWQgZGF0YVJlY29yZHNSZW1vdmVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwogICAgIHZvaWQgc2V0TWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKFBBTDo6
U2Vzc2lvbklELCBTZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZv
aWQgc2V0Tm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZChQQUw6OlNlc3Npb25J
RCwgYm9vbCB2YWx1ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKQEAgLTM5OSw3ICs0
MDAsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBmZXRjaFdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lv
bklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhRmV0
Y2hPcHRpb24+LCBDYWxsYmFja0lEKTsKICAgICB2b2lkIGRlbGV0ZVdlYnNpdGVEYXRhKFBBTDo6
U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgV2FsbFRpbWUgbW9kaWZpZWRT
aW5jZSwgQ2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMo
UEFMOjpTZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBjb25zdCBWZWN0b3I8
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYgb3JpZ2lucywgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGNvb2tpZUhvc3ROYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIEhTVFNDYWNoZUhvc3Ru
YW1lcywgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMo
UEFMOjpTZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBjb25zdCBWZWN0b3I8
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYgb3JpZ2lucywgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGNvb2tpZUhvc3ROYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIEhTVFNDYWNoZUhvc3Ru
YW1lcywgY29uc3QgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYgcmVnaXN0cmFibGVEb21haW5z
LCBDYWxsYmFja0lEKTsKIAogICAgIHZvaWQgY2xlYXJDYWNoZWRDcmVkZW50aWFscygpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5t
ZXNzYWdlcy5pbgppbmRleCBjN2ViZGYwYWYxN2I1NjgyMTY5NmZhMTg2MWQ3M2NmMTNiMDJlYmYz
Li41ZWFiYTM3YWUwYmI5MjM1NjVkMDA4MTFjOTY0ZDUzNzg5NjY3ZTExIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMu
aW4KQEAgLTQ1LDcgKzQ1LDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVj
ZWl2ZXIgewogCiAgICAgRmV0Y2hXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBlcywgT3B0
aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4gZmV0Y2hPcHRpb25zLCBXZWJL
aXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBEZWxldGVXZWJzaXRlRGF0YShQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZT4gd2Vi
c2l0ZURhdGFUeXBlcywgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwgV2ViS2l0OjpDYWxsYmFja0lE
IGNhbGxiYWNrSUQpCi0gICAgRGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlPiB3ZWJzaXRl
RGF0YVR5cGVzLCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBvcmlnaW5zLCBW
ZWN0b3I8U3RyaW5nPiBjb29raWVIb3N0TmFtZXMsIFZlY3RvcjxTdHJpbmc+IEhTVFNDYWNoZUhv
c3ROYW1lcywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgRGVsZXRlV2Vic2l0
ZURhdGFGb3JPcmlnaW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYktp
dDo6V2Vic2l0ZURhdGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzLCBWZWN0b3I8V2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhPiBvcmlnaW5zLCBWZWN0b3I8U3RyaW5nPiBjb29raWVIb3N0TmFtZXMs
IFZlY3RvcjxTdHJpbmc+IEhTVFNDYWNoZUhvc3ROYW1lcywgVmVjdG9yPFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluPiByZWdpc3RyYWJsZURvbWFpbnMsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxs
YmFja0lEKQogCiAgICAgRG93bmxvYWRSZXF1ZXN0KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
V2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBy
ZXF1ZXN0LCBlbnVtOmJvb2wgT3B0aW9uYWw8V2ViS2l0OjpOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgU3RyaW5nIHN1Z2dlc3RlZEZpbGVu
YW1lKQogICAgIFJlc3VtZURvd25sb2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViS2l0
OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIElQQzo6RGF0YVJlZmVyZW5jZSByZXN1bWVEYXRhLCBT
dHJpbmcgcGF0aCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVu
c2lvbkhhbmRsZSkKQEAgLTEwNCw2ICsxMDQsNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vz
cyBMZWdhY3lSZWNlaXZlciB7CiAgICAgSXNSZWdpc3RlcmVkQXNSZWRpcmVjdGluZ1RvKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVkaXJlY3Rl
ZEZyb21Eb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZGlyZWN0ZWRUb0RvbWFp
bikgLT4gKGJvb2wgaXNSZWRpcmVjdGluZ1RvKSBBc3luYwogICAgIElzUmVnaXN0ZXJlZEFzU3Vi
RnJhbWVVbmRlcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluIHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFt
ZURvbWFpbikgLT4gKGJvb2wgaXNTdWJmcmFtZVVuZGVyKSBBc3luYwogICAgIElzUmVnaXN0ZXJl
ZEFzU3VicmVzb3VyY2VVbmRlcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluIHN1YnJlc291cmNlRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiB0b3BGcmFtZURvbWFpbikgLT4gKGJvb2wgaXNTdWJyZXNvdXJjZVVuZGVyKSBBc3luYwor
ICAgIERvbWFpbklERXhpc3RzSW5EYXRhYmFzZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGlu
dCBkb21haW5JRCkgLT4gKGJvb2wgZXhpc3RzKSBBc3luYwogICAgIExvZ0ZyYW1lTmF2aWdhdGlv
bihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRh
cmdldERvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9wRnJhbWVEb21haW4sIFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHNvdXJjZURvbWFpbiwgYm9vbCBpc1JlZGlyZWN0LCBi
b29sIGlzTWFpbkZyYW1lLCBTZWNvbmRzIGRlbGF5QWZ0ZXJNYWluRnJhbWVEb2N1bWVudExvYWQs
IGJvb2wgd2FzUG90ZW50aWFsbHlJbml0aWF0ZWRCeVVzZXIpCiAgICAgTG9nVXNlckludGVyYWN0
aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4g
dG9wRnJhbWVEb21haW4pIC0+ICgpIEFzeW5jCiAgICAgUmVzZXRQYXJhbWV0ZXJzVG9EZWZhdWx0
VmFsdWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKCkgQXN5bmMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3Bw
CmluZGV4IDY1NzZlNmY3OGU0NzVlMjU2OWZjMzk3MzI1MWE1Zjg2NThlZTM4YzguLmUxNGY4MzA5
ZDg4MmQ2NzEzYjE5YTBjY2EzZDU5MzAwNDI5NTBjMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcApAQCAtNjYs
NiArNjYsMzAgQEAgV0tXZWJzaXRlRGF0YVN0b3JlUmVmIFdLV2Vic2l0ZURhdGFTdG9yZUNyZWF0
ZVdpdGhDb25maWd1cmF0aW9uKFdLV2Vic2l0ZURhdGFTdG8KICAgICByZXR1cm4gV2ViS2l0Ojp0
b0FQSSgmV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGUoKldlYktpdDo6dG9JbXBsKGNv
bmZpZ3VyYXRpb24pLCBzZXNzaW9uSUQpLmxlYWtSZWYoKSk7CiB9CiAKK3ZvaWQgV0tXZWJzaXRl
RGF0YVN0b3JlUmVtb3ZlSVRQRGF0YUZvckRvbWFpbihXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0
YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0LCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRh
U3RvcmVSZW1vdmVJVFBEYXRhRm9yRG9tYWluRnVuY3Rpb24gY2FsbGJhY2spCit7CisgICAgV2Vi
S2l0OjpXZWJzaXRlRGF0YVJlY29yZCBkYXRhUmVjb3JkOworICAgIGRhdGFSZWNvcmQudHlwZXMu
YWRkKFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKTsKKyAg
ICBkYXRhUmVjb3JkLmRpc3BsYXlOYW1lID0gV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygp
OworICAgIFZlY3RvcjxXZWJLaXQ6OldlYnNpdGVEYXRhUmVjb3JkPiBkYXRhUmVjb3JkcyA9IHsg
V1RGTW92ZShkYXRhUmVjb3JkKSB9OworCisgICAgT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURh
dGFUeXBlPiBkYXRhVHlwZXMgPSBXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZTo6UmVzb3VyY2VMb2Fk
U3RhdGlzdGljczsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5yZW1vdmVEYXRh
KGRhdGFUeXBlcywgZGF0YVJlY29yZHMsIFtjb250ZXh0LCBjYWxsYmFja10geworICAgICAgICBj
YWxsYmFjayhjb250ZXh0KTsKKyAgICB9KTsKK30KKwordm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVE
b21haW5JREV4aXN0c0luRGF0YWJhc2UoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJl
ZiwgaW50IGRvbWFpbklELCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVEb21haW5J
REV4aXN0c0luRGF0YWJhc2VGdW5jdGlvbiBjYWxsYmFjaykKK3sKKyNpZiBFTkFCTEUoUkVTT1VS
Q0VfTE9BRF9TVEFUSVNUSUNTKQorICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPmRv
bWFpbklERXhpc3RzSW5EYXRhYmFzZShkb21haW5JRCwgW2NvbnRleHQsIGNhbGxiYWNrXShib29s
IGV4aXN0cykgeworICAgICAgICBjYWxsYmFjayhleGlzdHMsIGNvbnRleHQpOworICAgIH0pOwor
I2Vsc2UKKyAgICBjYWxsYmFjayhmYWxzZSwgY29udGV4dCk7CisjZW5kaWYKK30KKwogdm9pZCBX
S1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChXS1dlYnNp
dGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBib29sIGVuYWJsZSkKIHsKICAgICBhdXRvKiB3
ZWJzaXRlRGF0YVN0b3JlID0gV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmgK
aW5kZXggZTViOGJlZGFkZmVkOGFjMjc3NTgxYWFlOGRiZTQwYzY3NzE1OWM2ZC4uNjg1MjE0OWY5
ZTZlZTIzMWRjYWI4ZTJkYjBlZjEyNDdkODg5MjhlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmgKQEAgLTEzNiw2ICsx
MzYsMTEgQEAgdHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlUmVtb3ZlRmV0Y2hDYWNo
ZVJlbW92YWxGdW5jdGlvbikodm9pZCogZnVuY3Rpb24KIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0
ZURhdGFTdG9yZVJlbW92ZUZldGNoQ2FjaGVGb3JPcmlnaW4oV0tXZWJzaXRlRGF0YVN0b3JlUmVm
IGRhdGFTdG9yZVJlZiwgV0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW4sIHZvaWQqIGNvbnRleHQs
IFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUZldGNoQ2FjaGVSZW1vdmFsRnVuY3Rpb24gY2FsbGJh
Y2spOwogV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlUmVtb3ZlQWxsRmV0Y2hDYWNo
ZXMoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9pZCogY29udGV4dCwgV0tX
ZWJzaXRlRGF0YVN0b3JlUmVtb3ZlRmV0Y2hDYWNoZVJlbW92YWxGdW5jdGlvbiBjYWxsYmFjayk7
CiAKK3R5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUlUUERhdGFGb3JEb21h
aW5GdW5jdGlvbikodm9pZCogZnVuY3Rpb25Db250ZXh0KTsKK1dLX0VYUE9SVCB2b2lkIFdLV2Vi
c2l0ZURhdGFTdG9yZVJlbW92ZUlUUERhdGFGb3JEb21haW4oV0tXZWJzaXRlRGF0YVN0b3JlUmVm
IGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgb3JpZ2luLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNp
dGVEYXRhU3RvcmVSZW1vdmVJVFBEYXRhRm9yRG9tYWluRnVuY3Rpb24gY2FsbGJhY2spOwordHlw
ZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlRG9tYWluSURFeGlzdHNJbkRhdGFiYXNlRnVu
Y3Rpb24pKGJvb2wgZG9tYWluRXhpc3RzSW5EYXRhYmFzZSwgdm9pZCogZnVuY3Rpb25Db250ZXh0
KTsKK1dLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZURvbWFpbklERXhpc3RzSW5EYXRh
YmFzZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBpbnQgZG9tYWluSUQsIHZv
aWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZURvbWFpbklERXhpc3RzSW5EYXRhYmFzZUZ1
bmN0aW9uIGNhbGxiYWNrKTsKKwogdHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlUmVt
b3ZlQWxsU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnNDYWxsYmFjaykodm9pZCogZnVuY3Rpb25D
b250ZXh0KTsKIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUFsbFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25zKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYs
IHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUFsbFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25zQ2FsbGJhY2sgY2FsbGJhY2spOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAxM2E3
NmE3YjFhMzBjMjAyNWZjNGJhNTg0YTdmODYwZmY2Yjk0NDkxLi4wMGUwMTNlMjAwMzY5OGUwMmE3
YTQ0YTg5ZjE4ZTQ4YTQ4ZDk2NDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTE5OCw3ICsxOTgsNyBA
QCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRlbGV0ZVdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PAogICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9j
ZXNzOjpEZWxldGVXZWJzaXRlRGF0YShzZXNzaW9uSUQsIGRhdGFUeXBlcywgbW9kaWZpZWRTaW5j
ZSwgY2FsbGJhY2tJRCksIDApOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRlbGV0
ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNl
dDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YT4mIG9yaWdpbnMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBjb29raWVIb3N0
TmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBIU1RTQ2FjaGVIb3N0TmFtZXMsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya1Byb2Nl
c3NQcm94eTo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBjb25zdCBWZWN0b3I8
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYgb3JpZ2lucywgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGNvb2tpZUhvc3ROYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIEhTVFNDYWNoZUhvc3RO
YW1lcywgY29uc3QgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYgcmVnaXN0cmFibGVEb21haW5z
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
QVNTRVJUKGNhblNlbmRNZXNzYWdlKCkpOwogCkBAIC0yMTQsNyArMjE0LDcgQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELAogICAgICAgICBSRUxFQVNFX0xPR19JRihzZXNzaW9uSUQuaXNBbHdheXNP
bkxvZ2dpbmdBbGxvd2VkKCksIFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBOZXR3b3JrUHJvY2Vz
c1Byb3h5IGlzIHJlbGVhc2luZyBhIGJhY2tncm91bmQgYXNzZXJ0aW9uIGJlY2F1c2UgdGhlIE5l
dHdvcmsgcHJvY2VzcyBpcyBkb25lIGRlbGV0aW5nIFdlYnNpdGUgZGF0YSBmb3Igc2V2ZXJhbCBv
cmlnaW5zIiwgdGhpcyk7CiAgICAgfSk7CiAKLSAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJv
Y2Vzczo6RGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKHNlc3Npb25JRCwgZGF0YVR5cGVzLCBv
cmlnaW5zLCBjb29raWVIb3N0TmFtZXMsIEhTVFNDYWNoZUhvc3ROYW1lcywgY2FsbGJhY2tJRCks
IDApOworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpEZWxldGVXZWJzaXRlRGF0
YUZvck9yaWdpbnMoc2Vzc2lvbklELCBkYXRhVHlwZXMsIG9yaWdpbnMsIGNvb2tpZUhvc3ROYW1l
cywgSFNUU0NhY2hlSG9zdE5hbWVzLCByZWdpc3RyYWJsZURvbWFpbnMsIGNhbGxiYWNrSUQpLCAw
KTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpuZXR3b3JrUHJvY2Vzc0NyYXNoZWQo
KQpAQCAtNTY4LDYgKzU2OCwxNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNldExhc3RT
ZWVuKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibAogICAgIHNlbmRX
aXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldExhc3RTZWVuKHNlc3Np
b25JRCwgcmVzb3VyY2VEb21haW4sIGxhc3RTZWVuKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOwogfQogCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRvbWFpbklERXhpc3RzSW5EYXRh
YmFzZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGludCBkb21haW5JRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoIWNhblNl
bmRNZXNzYWdlKCkpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIAorICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
TmV0d29ya1Byb2Nlc3M6OkRvbWFpbklERXhpc3RzSW5EYXRhYmFzZShzZXNzaW9uSUQsIGRvbWFp
bklEKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCiB2b2lkIE5ldHdvcmtQcm9j
ZXNzUHJveHk6Om1lcmdlU3RhdGlzdGljRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluMSwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRv
cEZyYW1lRG9tYWluMiwgU2Vjb25kcyBsYXN0U2VlbiwgYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24s
IFNlY29uZHMgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc0dyYW5kZmF0aGVyZWQs
IGJvb2wgaXNQcmV2YWxlbnQsIGJvb2wgaXNWZXJ5UHJldmFsZW50LCB1bnNpZ25lZCBkYXRhUmVj
b3Jkc1JlbW92ZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpN
ZXJnZVN0YXRpc3RpY0ZvclRlc3Rpbmcoc2Vzc2lvbklELCByZXNvdXJjZURvbWFpbiwgdG9wRnJh
bWVEb21haW4xLCB0b3BGcmFtZURvbWFpbjIsIGxhc3RTZWVuLCBoYWRVc2VySW50ZXJhY3Rpb24s
IG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb24sIGlzR3JhbmRmYXRoZXJlZCwgaXNQcmV2YWxlbnQs
IGlzVmVyeVByZXZhbGVudCwgZGF0YVJlY29yZHNSZW1vdmVkKSwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCA0YTczZjRjMjlmMmYzZTZkMzQwZmJlM2ZmN2E2ZjFh
ZDgwY2RlMWY0Li5kMTU4NmQxYzEyMTBkZGJkNDBlMThhZjNhMzc0ODc3NTA2YmYxZTY1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuaApAQCAtMTA3LDcgKzEwNyw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZmV0Y2hXZWJz
aXRlRGF0YShQQUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIE9wdGlv
blNldDxXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJz
aXRlRGF0YSk+JiYpOwogICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQs
IE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBXYWxsVGltZSBtb2RpZmllZFNpbmNlLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwotICAgIHZvaWQgZGVs
ZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKFBBTDo6U2Vzc2lvbklELCBPcHRpb25TZXQ8V2ViS2l0
OjpXZWJzaXRlRGF0YVR5cGU+LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhPiYgb3JpZ2lucywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGNvb2tpZUhvc3ROYW1lcywgY29u
c3QgVmVjdG9yPFN0cmluZz4mIEhTVFNDYWNoZUhvc3ROYW1lcywgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKKyAgICB2b2lkIGRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhQQUw6OlNl
c3Npb25JRCwgT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlPiwgY29uc3QgVmVjdG9y
PFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mIG9yaWdpbnMsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBjb29raWVIb3N0TmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBIU1RTQ2FjaGVIb3N0
TmFtZXMsIGNvbnN0IFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4mIHJlZ2lzdHJhYmxlRG9tYWlu
cywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAogICAgIHZvaWQgZ2V0TG9jYWxTdG9y
YWdlRGV0YWlscyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8
TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpPcmlnaW5EZXRhaWxzPiYmKT4mJik7CiAKQEAg
LTEzMCw2ICsxMzAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2dVc2VySW50ZXJhY3Rpb24oUEFM
OjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKICAgICB2b2lkIHNjaGVkdWxlU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzUHJv
Y2Vzc2luZyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAg
ICB2b2lkIHNldExhc3RTZWVuKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYsIFNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBkb21h
aW5JREV4aXN0c0luRGF0YWJhc2UoUEFMOjpTZXNzaW9uSUQsIGludCBkb21haW5JRCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBtZXJnZVN0YXRpc3RpY0ZvclRl
c3RpbmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgY29uc3QgVG9w
RnJhbWVEb21haW4mIHRvcEZyYW1lRG9tYWluMSwgY29uc3QgVG9wRnJhbWVEb21haW4mIHRvcEZy
YW1lRG9tYWluMiwgU2Vjb25kcyBsYXN0U2VlbiwgYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24sIFNl
Y29uZHMgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc0dyYW5kZmF0aGVyZWQsIGJv
b2wgaXNQcmV2YWxlbnQsIGJvb2wgaXNWZXJ5UHJldmFsZW50LCB1bnNpZ25lZCBkYXRhUmVjb3Jk
c1JlbW92ZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRBZ2VD
YXBGb3JDbGllbnRTaWRlQ29va2llcyhQQUw6OlNlc3Npb25JRCwgT3B0aW9uYWw8U2Vjb25kcz4s
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRDYWNoZU1heEFnZUNh
cChQQUw6OlNlc3Npb25JRCwgU2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZS5jcHAKaW5kZXggNTBkOTc5MzFkNGMwNWM3MDQ2NTIxYmZhNzYyZjUyMGZmZjNj
MTE4NC4uNzczNTY2ODE4YWI4NmRlZDNmNTY4NjEzYjI1NzY1ZWYyYWZiNTM1OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZS5jcHAKQEAgLTk5MCwxNSArOTkwLDE3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVt
b3ZlRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIGNvbnN0IFZlCiAK
ICAgICAgICAgICAgIFZlY3RvcjxTdHJpbmc+IGNvb2tpZUhvc3ROYW1lczsKICAgICAgICAgICAg
IFZlY3RvcjxTdHJpbmc+IEhTVFNDYWNoZUhvc3ROYW1lczsKKyAgICAgICAgICAgIFZlY3RvcjxX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gcmVnaXN0cmFibGVEb21haW5zOwogICAgICAgICAg
ICAgZm9yIChjb25zdCBhdXRvJiBkYXRhUmVjb3JkIDogZGF0YVJlY29yZHMpIHsKICAgICAgICAg
ICAgICAgICBmb3IgKGF1dG8mIGhvc3ROYW1lIDogZGF0YVJlY29yZC5jb29raWVIb3N0TmFtZXMp
CiAgICAgICAgICAgICAgICAgICAgIGNvb2tpZUhvc3ROYW1lcy5hcHBlbmQoaG9zdE5hbWUpOwog
ICAgICAgICAgICAgICAgIGZvciAoYXV0byYgaG9zdE5hbWUgOiBkYXRhUmVjb3JkLkhTVFNDYWNo
ZUhvc3ROYW1lcykKICAgICAgICAgICAgICAgICAgICAgSFNUU0NhY2hlSG9zdE5hbWVzLmFwcGVu
ZChob3N0TmFtZSk7CisgICAgICAgICAgICAgICAgcmVnaXN0cmFibGVEb21haW5zLmFwcGVuZChX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3QoZGF0YVJl
Y29yZC5kaXNwbGF5TmFtZSkpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBjYWxsYmFj
a0FnZ3JlZ2F0b3ItPmFkZFBlbmRpbmdDYWxsYmFjaygpOwotICAgICAgICAgICAgcHJvY2Vzc1Bv
b2wtPm5ldHdvcmtQcm9jZXNzKCktPmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhtX3Nlc3Np
b25JRCwgZGF0YVR5cGVzLCBvcmlnaW5zLCBjb29raWVIb3N0TmFtZXMsIEhTVFNDYWNoZUhvc3RO
YW1lcywgW2NhbGxiYWNrQWdncmVnYXRvciwgcHJvY2Vzc1Bvb2xdIHsKKyAgICAgICAgICAgIHBy
b2Nlc3NQb29sLT5uZXR3b3JrUHJvY2VzcygpLT5kZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMo
bV9zZXNzaW9uSUQsIGRhdGFUeXBlcywgb3JpZ2lucywgY29va2llSG9zdE5hbWVzLCBIU1RTQ2Fj
aGVIb3N0TmFtZXMsIHJlZ2lzdHJhYmxlRG9tYWlucywgW2NhbGxiYWNrQWdncmVnYXRvciwgcHJv
Y2Vzc1Bvb2xdIHsKICAgICAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPnJlbW92ZVBl
bmRpbmdDYWxsYmFjaygpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KQEAgLTE1OTYsNiAr
MTU5OCwxOCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldExhc3RTZWVuKGNvbnN0IFVSTCYg
dXJsLCBTZWNvbmRzIHNlY29uZHMsIENvbXBsZXRpb25IYQogICAgIH0KIH0KIAordm9pZCBXZWJz
aXRlRGF0YVN0b3JlOjpkb21haW5JREV4aXN0c0luRGF0YWJhc2UoaW50IGRvbWFpbklELCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIEFT
U0VSVChSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDog
cHJvY2Vzc1Bvb2xzKCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHByb2Nlc3MgPSBwcm9jZXNzUG9v
bC0+bmV0d29ya1Byb2Nlc3MoKSkgeworICAgICAgICAgICAgcHJvY2Vzcy0+ZG9tYWluSURFeGlz
dHNJbkRhdGFiYXNlKG1fc2Vzc2lvbklELCBkb21haW5JRCwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9Cit9CisKIHZvaWQg
V2Vic2l0ZURhdGFTdG9yZTo6bWVyZ2VTdGF0aXN0aWNGb3JUZXN0aW5nKGNvbnN0IFVSTCYgdXJs
ICwgY29uc3QgVVJMJiB0b3BGcmFtZVVybDEsIGNvbnN0IFVSTCYgdG9wRnJhbWVVcmwyLCBTZWNv
bmRzIGxhc3RTZWVuLCBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiwgU2Vjb25kcyBtb3N0UmVjZW50
VXNlckludGVyYWN0aW9uLCBib29sIGlzR3JhbmRmYXRoZXJlZCwgYm9vbCBpc1ByZXZhbGVudCwg
Ym9vbCBpc1ZlcnlQcmV2YWxlbnQsIHVuc2lnbmVkIGRhdGFSZWNvcmRzUmVtb3ZlZCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICh1cmwu
cHJvdG9jb2xJc0Fib3V0KCkgfHwgdXJsLmlzRW1wdHkoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCmluZGV4IGU4
NDIzMTMyNTZiYTMxYmRkOGE3NTBjYTU1YjMzYWJkYWIyYzAwOTIuLjVkYTVmYTUxYWUyOTMwOGRm
ZTk5ZmExNWE0YTg1MGQ2ODkwMjY1ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKQEAgLTE2Nyw2ICsxNjcsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXRVc2VJVFBEYXRhYmFzZShib29sLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0R3JhbmRmYXRoZXJpbmdUaW1lKFNlY29uZHMs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRMYXN0U2Vlbihjb25z
dCBVUkwmLCBTZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQg
ZG9tYWluSURFeGlzdHNJbkRhdGFiYXNlKGludCBkb21haW5JRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBtZXJnZVN0YXRpc3RpY0ZvclRlc3RpbmcoY29uc3Qg
VVJMJiwgY29uc3QgVVJMJiB0b3BGcmFtZVVybDEsIGNvbnN0IFVSTCYgdG9wRnJhbWVVcmwyLCBT
ZWNvbmRzIGxhc3RTZWVuLCBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiwgU2Vjb25kcyBtb3N0UmVj
ZW50VXNlckludGVyYWN0aW9uLCBib29sIGlzR3JhbmRmYXRoZXJlZCwgYm9vbCBpc1ByZXZhbGVu
dCwgYm9vbCBpc1ZlcnlQcmV2YWxlbnQsIHVuc2lnbmVkIGRhdGFSZWNvcmRzUmVtb3ZlZCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldE5vdGlmeVBhZ2VzV2hlbkRh
dGFSZWNvcmRzV2VyZVNjYW5uZWQoYm9vbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
ICAgICB2b2lkIHNldElzUnVubmluZ1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUZXN0KGJvb2wsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMTJmZWM1MTk2NjYwMzNjMDc4MTQyZDQxMGI5Y2Q1OWIx
OWQ5MDMwOS4uYTUxOGEzM2Q0NTc2ZjViYTMyNmIxOGVmMDk5MzQ4OGQ2Njg1NjQzMSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3
IEBACisyMDIwLTA0LTIzICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29t
PgorCisgICAgICAgIFJlbW92aW5nIHdlYnNpdGUgZGF0YSBmb3IgYSBkb21haW4gc2hvdWxkIGRl
bGV0ZSBjb3JyZXNwb25kaW5nIElUUCBlbnRyeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwODY0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81OTQ3
MzE5Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBD
cmVhdGVkIDIgbmV3IFNQSXMgZm9yIHRlc3RpbmcuIE9uZSB0byBtaW1pYyBjbGVhcmluZyB3ZWJz
aXRlIGRhdGEKKyAgICAgICAgZm9yIGEgZG9tYWluLCBhbmQgb25lIHRvIGNoZWNrIGlmIHRoZSBk
b21haW4gZXhpc3RzIGluIHRoZSBkYXRhYmFzZQorICAgICAgICBhZnRlciBhIGRlbGV0aW9uIHdh
cyByZXF1ZXN0ZWQuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OmNs
ZWFyU3RhdGlzdGljc0RhdGFGb3JEb21haW4pOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpk
b21haW5JREV4aXN0c0luRGF0YWJhc2UpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVz
dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Y2xlYXJTdGF0
aXN0aWNzRGF0YUZvckRvbWFpbik6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpkb21h
aW5JREV4aXN0c0luRGF0YWJhc2UpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENv
bnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNw
cDoKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5jaHJvbm91c01l
c3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorCiAyMDIwLTA0LTIzICBLYXRlIENoZW5leSAgPGth
dGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgogCiAgICAgICAgIEFsbCBJVFAgZGF0YWJhc2UgdGFi
bGVzIHNob3VsZCByZWZlcmVuY2UgdGhlIE9ic2VydmVkRG9tYWlucyB0YWJsZSBvbiBERUxFVEUg
Q0FTQ0FERQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKaW5kZXggZmE2N2YzN2E4ZGFiOThiMzA1
ZjAwNWNkMTBjMTFmNTAzMGFiOWQxMi4uNTE0ZjZlMjExZDk3MmFlNzgxYjhhZWE5NjQ3ODg0MjA4
YjFkYTg2NiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCkBAIC0yOTIsNiArMjkyLDggQEAg
aW50ZXJmYWNlIFRlc3RSdW5uZXIgewogICAgIHZvaWQgZGlzY29ubmVjdE1vY2tHYW1lcGFkKHVu
c2lnbmVkIGxvbmcgaW5kZXgpOwogCiAgICAgLy8gUmVzb3VyY2UgTG9hZCBTdGF0aXN0aWNzCisg
ICAgdm9pZCBjbGVhclN0YXRpc3RpY3NEYXRhRm9yRG9tYWluKERPTVN0cmluZyBkb21haW4pOwor
ICAgIGJvb2xlYW4gZG9tYWluSURFeGlzdHNJbkRhdGFiYXNlKHVuc2lnbmVkIGxvbmcgZG9tYWlu
SUQpOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc0VuYWJsZWQoYm9vbGVhbiB2YWx1ZSk7CiAgICAg
Ym9vbGVhbiBpc1N0YXRpc3RpY3NFcGhlbWVyYWwoKTsKICAgICB2b2lkIGluc3RhbGxTdGF0aXN0
aWNzRGlkTW9kaWZ5RGF0YVJlY29yZHNDYWxsYmFjayhvYmplY3QgY2FsbGJhY2spOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNw
cCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAK
aW5kZXggOTVhZTY0MjQ4ZTRmZTk0NTI5ZDZkMzAyNzNlZjZmNTk4YWIzNTliZS4uZjhhMmFkNDk5
ZjA1MDc1ZGU4M2JiOTk2ZDYzMjA3N2IyNTNjNmZlOSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCkBAIC0xNDE1LDYgKzE0
MTUsMzcgQEAgdm9pZCBUZXN0UnVubmVyOjpjYWxsRGlkUmVtb3ZlU3dpcGVTbmFwc2hvdENhbGxi
YWNrKCkKICAgICBjYWxsVGVzdFJ1bm5lckNhbGxiYWNrKERpZFJlbW92ZVN3aXBlU25hcHNob3RD
YWxsYmFja0lEKTsKIH0KIAordm9pZCBUZXN0UnVubmVyOjpjbGVhclN0YXRpc3RpY3NEYXRhRm9y
RG9tYWluKEpTU3RyaW5nUmVmIGRvbWFpbikKK3sKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1Jl
Zj4gbWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJD
bGVhclN0YXRpc3RpY3NEYXRhRm9yRG9tYWluIikpOworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5n
UmVmPiBtZXNzYWdlQm9keSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoSlNTdHJpbmcoZG9t
YWluKSk7CisgICAgV0tCdW5kbGVQb3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxl
OjpzaW5nbGV0b24oKS5idW5kbGUoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5Lmdl
dCgpLCBudWxscHRyKTsKK30KKworYm9vbCBUZXN0UnVubmVyOjpkb21haW5JREV4aXN0c0luRGF0
YWJhc2UodW5zaWduZWQgZG9tYWluSUQpCit7CisgICAgVmVjdG9yPFdLUmV0YWluUHRyPFdLU3Ry
aW5nUmVmPj4ga2V5czsKKyAgICBWZWN0b3I8V0tSZXRhaW5QdHI8V0tUeXBlUmVmPj4gdmFsdWVz
OworCisgICAga2V5cy5hcHBlbmQoYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
ZygiRG9tYWluSUQiKSkpOworICAgIHZhbHVlcy5hcHBlbmQoYWRvcHRXSyhXS1VJbnQ2NENyZWF0
ZShkb21haW5JRCkpKTsKKworICAgIFZlY3RvcjxXS1N0cmluZ1JlZj4gcmF3S2V5cyhrZXlzLnNp
emUoKSk7CisgICAgVmVjdG9yPFdLVHlwZVJlZj4gcmF3VmFsdWVzKHZhbHVlcy5zaXplKCkpOwor
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBrZXlzLnNpemUoKTsgKytpKSB7CisgICAgICAg
IHJhd0tleXNbaV0gPSBrZXlzW2ldLmdldCgpOworICAgICAgICByYXdWYWx1ZXNbaV0gPSB2YWx1
ZXNbaV0uZ2V0KCk7CisgICAgfQorCisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3Nh
Z2VOYW1lID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiRG9tYWluSURF
eGlzdHNJbkRhdGFiYXNlIikpOworICAgIFdLUmV0YWluUHRyPFdLRGljdGlvbmFyeVJlZj4gbWVz
c2FnZUJvZHkgPSBhZG9wdFdLKFdLRGljdGlvbmFyeUNyZWF0ZShyYXdLZXlzLmRhdGEoKSwgcmF3
VmFsdWVzLmRhdGEoKSwgcmF3S2V5cy5zaXplKCkpKTsKKyAgICBXS1R5cGVSZWYgcmV0dXJuRGF0
YSA9IG51bGxwdHI7CisgICAgV0tCdW5kbGVQYWdlUG9zdFN5bmNocm9ub3VzTWVzc2FnZUZvclRl
c3RpbmcoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLnBhZ2UoKS0+cGFnZSgpLCBtZXNzYWdl
TmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCksICZyZXR1cm5EYXRhKTsKKyAgICBBU1NFUlQo
V0tHZXRUeXBlSUQocmV0dXJuRGF0YSkgPT0gV0tCb29sZWFuR2V0VHlwZUlEKCkpOworICAgIHJl
dHVybiBXS0Jvb2xlYW5HZXRWYWx1ZShhZG9wdFdLKHN0YXRpY19jYXN0PFdLQm9vbGVhblJlZj4o
cmV0dXJuRGF0YSkpLmdldCgpKTsKK30KKwogdm9pZCBUZXN0UnVubmVyOjpzZXRTdGF0aXN0aWNz
RW5hYmxlZChib29sIHZhbHVlKQogewogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNz
YWdlTmFtZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlNldFN0YXRp
c3RpY3NFbmFibGVkIikpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9UZXN0UnVubmVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL1Rlc3RSdW5uZXIuaAppbmRleCA3MjhkMzZlMmE5ODJhMThmYWNiNTY5OThkZDZjMDRi
ZDVjMDI3M2M0Li5mOGY4Y2U3ZDhiNjM4ZmQ5NGRmZDMzZDAwOTg0OGQ2YmIyMjU0NDkyIDEwMDY0
NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIu
aAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIu
aApAQCAtMzgwLDYgKzM4MCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE1vY2tHYW1lcGFkQnV0
dG9uVmFsdWUodW5zaWduZWQgaW5kZXgsIHVuc2lnbmVkIGJ1dHRvbkluZGV4LCBkb3VibGUgdmFs
dWUpOwogICAgIAogICAgIC8vIFJlc291cmNlIExvYWQgU3RhdGlzdGljcworICAgIHZvaWQgY2xl
YXJTdGF0aXN0aWNzRGF0YUZvckRvbWFpbihKU1N0cmluZ1JlZiBkb21haW4pOworICAgIGJvb2wg
ZG9tYWluSURFeGlzdHNJbkRhdGFiYXNlKHVuc2lnbmVkIGRvbWFpbklEKTsKICAgICB2b2lkIHNl
dFN0YXRpc3RpY3NFbmFibGVkKGJvb2wgdmFsdWUpOwogICAgIGJvb2wgaXNTdGF0aXN0aWNzRXBo
ZW1lcmFsKCk7CiAgICAgdm9pZCBpbnN0YWxsU3RhdGlzdGljc0RpZE1vZGlmeURhdGFSZWNvcmRz
Q2FsbGJhY2soSlNWYWx1ZVJlZiBjYWxsYmFjayk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dENvbnRyb2xsZXIuY3BwCmluZGV4IDBjNjIxMGQ0MjZkZDM3N2EwOTI5MzE3OWFmYTkxNTMxY2Nl
YzU4YzIuLjBkNjhkNWU5ZmJhMGUxMTBhOTg2YjNkMWFhZWY2NWFmZDQ1ZDQ5NGMgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC0zNDE3LDYgKzM0MTcsMjIg
QEAgc3RhdGljIHZvaWQgcmVzb3VyY2VTdGF0aXN0aWNzQm9vbGVhblJlc3VsdENhbGxiYWNrKGJv
b2wgcmVzdWx0LCB2b2lkKiB1c2VyRGF0YSkKICAgICBjb250ZXh0LT50ZXN0Q29udHJvbGxlci5u
b3RpZnlEb25lKCk7CiB9CiAKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmNsZWFyU3RhdGlzdGljc0Rh
dGFGb3JEb21haW4oV0tTdHJpbmdSZWYgZG9tYWluKQoreworICAgIFJlc291cmNlU3RhdGlzdGlj
c0NhbGxiYWNrQ29udGV4dCBjb250ZXh0KCp0aGlzKTsKKworICAgIFdLV2Vic2l0ZURhdGFTdG9y
ZVJlbW92ZUlUUERhdGFGb3JEb21haW4oVGVzdENvbnRyb2xsZXI6OmRlZmF1bHRXZWJzaXRlRGF0
YVN0b3JlKCksIGRvbWFpbiwgJmNvbnRleHQsIHJlc291cmNlU3RhdGlzdGljc1ZvaWRSZXN1bHRD
YWxsYmFjayk7CisgICAgcnVuVW50aWwoY29udGV4dC5kb25lLCBub1RpbWVvdXQpOworfQorCiti
b29sIFRlc3RDb250cm9sbGVyOjpkb21haW5JREV4aXN0c0luRGF0YWJhc2UodW5zaWduZWQgZG9t
YWluSUQpCit7CisgICAgUmVzb3VyY2VTdGF0aXN0aWNzQ2FsbGJhY2tDb250ZXh0IGNvbnRleHQo
KnRoaXMpOworICAgIFdLV2Vic2l0ZURhdGFTdG9yZURvbWFpbklERXhpc3RzSW5EYXRhYmFzZSh3
ZWJzaXRlRGF0YVN0b3JlKCksIGRvbWFpbklELCAmY29udGV4dCwgcmVzb3VyY2VTdGF0aXN0aWNz
Qm9vbGVhblJlc3VsdENhbGxiYWNrKTsKKyAgICBydW5VbnRpbChjb250ZXh0LmRvbmUsIG5vVGlt
ZW91dCk7CisgICAgcmV0dXJuIGNvbnRleHQucmVzdWx0OworfQorCiB2b2lkIFRlc3RDb250cm9s
bGVyOjpzZXRTdGF0aXN0aWNzRW5hYmxlZChib29sIHZhbHVlKQogewogICAgIFdLV2Vic2l0ZURh
dGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKHdlYnNpdGVEYXRhU3RvcmUo
KSwgdmFsdWUpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJv
bGxlci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCmluZGV4IGJj
M2FkNzUzYTZiNzQxNWE0ZDljMWVjMzM2ZDVkMzhmNWQ4MjVmNGEuLjAzOGI3ODEwYWM5ZjY2NGE1
NWZjMzc1ZmJhOGZmNGUwOTgxNDg5ZjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250
cm9sbGVyLmgKQEAgLTIxNCw2ICsyMTQsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTaG91bGRE
b3dubG9hZFVuZGlzcGxheWFibGVNSU1FVHlwZXMoYm9vbCB2YWx1ZSkgeyBtX3Nob3VsZERvd25s
b2FkVW5kaXNwbGF5YWJsZU1JTUVUeXBlcyA9IHZhbHVlOyB9CiAgICAgdm9pZCBzZXRTaG91bGRB
bGxvd0RldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzKGJvb2wgdmFsdWUpIHsgbV9zaG91
bGRBbGxvd0RldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzID0gdmFsdWU7IH0KIAorICAg
IHZvaWQgY2xlYXJTdGF0aXN0aWNzRGF0YUZvckRvbWFpbihXS1N0cmluZ1JlZiBkb21haW4pOwor
ICAgIGJvb2wgZG9tYWluSURFeGlzdHNJbkRhdGFiYXNlKHVuc2lnbmVkIGRvbWFpbklEKTsKICAg
ICB2b2lkIHNldFN0YXRpc3RpY3NFbmFibGVkKGJvb2wgdmFsdWUpOwogICAgIGJvb2wgaXNTdGF0
aXN0aWNzRXBoZW1lcmFsKCk7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzRGVidWdNb2RlKGJvb2wg
dmFsdWUpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlv
bi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAppbmRleCA2
MWNkZjBlYzE0YTdlYzg3NzUzMTEzMjUzZWU1Yjc2OTNhOGUxNzU1Li5jM2UzNzRkMGJkM2FlZTMx
MjcxMmY0NjI1MzZmYzVlZGU2NDZjOGQ1IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJ
bnZvY2F0aW9uLmNwcApAQCAtMTI4OCw2ICsxMjg4LDI0IEBAIFdLUmV0YWluUHRyPFdLVHlwZVJl
Zj4gVGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0
ZWRCCiAgICAgICAgIFdLUmV0YWluUHRyPFdLVHlwZVJlZj4gcmVzdWx0ID0gYWRvcHRXSyhXS0Jv
b2xlYW5DcmVhdGUoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLmlzRG9pbmdNZWRpYUNhcHR1
cmUoKSkpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KKyAgICAKKyAgICBpZiAoV0tT
dHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkNsZWFyU3RhdGlzdGljc0Rh
dGFGb3JEb21haW4iKSkgeworICAgICAgICBBU1NFUlQoV0tHZXRUeXBlSUQobWVzc2FnZUJvZHkp
ID09IFdLU3RyaW5nR2V0VHlwZUlEKCkpOworICAgICAgICBXS1N0cmluZ1JlZiBkb21haW4gPSBz
dGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4obWVzc2FnZUJvZHkpOworCisgICAgICAgIFRlc3RDb250
cm9sbGVyOjpzaW5nbGV0b24oKS5jbGVhclN0YXRpc3RpY3NEYXRhRm9yRG9tYWluKGRvbWFpbik7
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIGlmIChXS1N0cmluZ0lzRXF1
YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiRG9tYWluSURFeGlzdHNJbkRhdGFiYXNlIikp
IHsKKyAgICAgICAgQVNTRVJUKFdLR2V0VHlwZUlEKG1lc3NhZ2VCb2R5KSA9PSBXS0RpY3Rpb25h
cnlHZXRUeXBlSUQoKSk7CisgICAgICAgIFdLRGljdGlvbmFyeVJlZiBtZXNzYWdlQm9keURpY3Rp
b25hcnkgPSBzdGF0aWNfY2FzdDxXS0RpY3Rpb25hcnlSZWY+KG1lc3NhZ2VCb2R5KTsKKyAgICAg
ICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGRvbWFpbklES2V5ID0gYWRvcHRXSyhXS1N0cmlu
Z0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiRG9tYWluSUQiKSk7CisgICAgICAgIFdLVUludDY0UmVm
IGRvbWFpbklEID0gc3RhdGljX2Nhc3Q8V0tVSW50NjRSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1G
b3JLZXkobWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCBkb21haW5JREtleS5nZXQoKSkpOworICAgICAg
ICBib29sIGRvbWFpbklERXhpc3RzID0gVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLmRvbWFp
bklERXhpc3RzSW5EYXRhYmFzZShXS1VJbnQ2NEdldFZhbHVlKGRvbWFpbklEKSk7CisgICAgICAg
IFdLUmV0YWluUHRyPFdLVHlwZVJlZj4gcmVzdWx0ID0gYWRvcHRXSyhXS0Jvb2xlYW5DcmVhdGUo
ZG9tYWluSURFeGlzdHMpKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CiAKICAgICBp
ZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlNldFN0YXRpc3Rp
Y3NFbmFibGVkIikpIHsKICAgICAgICAgQVNTRVJUKFdLR2V0VHlwZUlEKG1lc3NhZ2VCb2R5KSA9
PSBXS0Jvb2xlYW5HZXRUeXBlSUQoKSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNzU2MWNkODg4NWIxYmZhNGE3Mjc0Yzg1
NzY1MGVjMzZhNjIwNjNlNy4uN2MzM2Q3NjEwOTRiODdiNGU2YWUxOWZhM2E2YTM3MWY5NDkwOTZj
MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDIwLTA0LTIzICBLYXRlIENoZW5leSAgPGthdGhl
cmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92aW5nIHdlYnNpdGUgZGF0YSBm
b3IgYSBkb21haW4gc2hvdWxkIGRlbGV0ZSBjb3JyZXNwb25kaW5nIElUUCBlbnRyeQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwODY0CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS81OTQ3MzE5Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBJbnNlcnRzIHZhbHVlcyBpbnRvIHRoZSBJVFAgZGF0YWJhc2Ug
dGhlbiB0ZXN0cyByZW1vdmluZyB0aGUgZG9tYWluJ3MKKyAgICAgICAgd2Vic2l0ZSBkYXRhIHdp
bGwgcmVtb3ZlIGFsbCBpbnN0YW5jZXMgb2YgdGhhdCBkb21haW4gaW4gdGhlIElUUAorICAgICAg
ICBkYXRhYmFzZS4KKworICAgICAgICBEYXRhYmFzZSBzdG9yZSBleHBlY3RhdGlvbnMgd2lsbCBy
ZWZsZWN0IHRoZSByZXN1bHQgb2YgdGhlIG5ldworICAgICAgICBkb21haW5JREV4aXN0c0luRGF0
YWJhc2UgZnVuY3Rpb24uIE1lbW9yeSBzdG9yZSB0ZXN0cyB3aWxsIHVzZSB0aGUKKyAgICAgICAg
ZHVtcCBvdXRwdXQgd2hpY2ggc2hvdWxkIG5vdCBpbmNsdWRlIHRoZSBkZWxldGVkIGluZm9ybWF0
aW9uLgorCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3JlbW92
ZS13ZWJzaXRlLWRhdGEtZm9yLW9yaWdpbi1kZWxldGVzLWxpbmstZGVjb3JhdGlvbi1kYXRhYmFz
ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy9yZW1vdmUtd2Vic2l0ZS1kYXRhLWZvci1vcmlnaW4tZGVsZXRlcy1saW5rLWRl
Y29yYXRpb24tZGF0YWJhc2UuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzL3JlbW92ZS13ZWJzaXRlLWRhdGEtZm9yLW9yaWdpbi1kZWxldGVz
LWxpbmstZGVjb3JhdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVz
dHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZW1vdmUtd2Vic2l0ZS1kYXRhLWZvci1vcmlnaW4t
ZGVsZXRlcy1saW5rLWRlY29yYXRpb24uaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0
cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3JlbW92ZS13ZWJzaXRlLWRhdGEtZm9yLW9yaWdpbi1k
ZWxldGVzLW1peGVkLXN0YXRpc3RpY3MtZW50cmllcy1kYXRhYmFzZS1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZW1vdmUt
d2Vic2l0ZS1kYXRhLWZvci1vcmlnaW4tZGVsZXRlcy1taXhlZC1zdGF0aXN0aWNzLWVudHJpZXMt
ZGF0YWJhc2UuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzL3JlbW92ZS13ZWJzaXRlLWRhdGEtZm9yLW9yaWdpbi1kZWxldGVzLW1peGVkLXN0
YXRpc3RpY3MtZW50cmllcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVz
dHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZW1vdmUtd2Vic2l0ZS1kYXRhLWZvci1vcmlnaW4t
ZGVsZXRlcy1taXhlZC1zdGF0aXN0aWNzLWVudHJpZXMuaHRtbDogQWRkZWQuCisgICAgICAgICog
aHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3JlbW92ZS13ZWJzaXRlLWRhdGEtZm9y
LW9yaWdpbi1kZWxldGVzLXRoaXJkLXBhcnR5LXNjcmlwdC1sb2Fkcy1kYXRhYmFzZS1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy9yZW1vdmUtd2Vic2l0ZS1kYXRhLWZvci1vcmlnaW4tZGVsZXRlcy10aGlyZC1wYXJ0eS1zY3Jp
cHQtbG9hZHMtZGF0YWJhc2UuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzL3JlbW92ZS13ZWJzaXRlLWRhdGEtZm9yLW9yaWdpbi1kZWxldGVz
LXRoaXJkLXBhcnR5LXNjcmlwdC1sb2Fkcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZW1vdmUtd2Vic2l0ZS1kYXRhLWZv
ci1vcmlnaW4tZGVsZXRlcy10aGlyZC1wYXJ0eS1zY3JpcHQtbG9hZHMuaHRtbDogQWRkZWQuCisK
IDIwMjAtMDQtMjMgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4K
IAogICAgICAgICBBbGxvdyBjcmVkZW50aWFscyBmb3Igc2FtZS1vcmlnaW4gY3NzIG1hc2sgaW1h
Z2VzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3MvcmVtb3ZlLXdlYnNpdGUtZGF0YS1mb3Itb3JpZ2luLWRlbGV0ZXMtbGluay1kZWNvcmF0
aW9uLWRhdGFiYXNlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy9yZW1vdmUtd2Vic2l0ZS1kYXRhLWZvci1vcmlnaW4tZGVsZXRlcy1s
aW5rLWRlY29yYXRpb24tZGF0YWJhc2UtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM5M2U4Njcy
MTcyNDJjMmI2OTllN2NiOTk1NzQ4MWRiNTQwMTQ2MTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVtb3ZlLXdlYnNpdGUt
ZGF0YS1mb3Itb3JpZ2luLWRlbGV0ZXMtbGluay1kZWNvcmF0aW9uLWRhdGFiYXNlLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDUgQEAKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorUEFTUyBEb21haW4gSUQgd2FzIHN1Y2Nlc3NmdWxseSBkZWxldGVkIGZy
b20gdGhlIGRhdGFiYXNlLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jl
c291cmNlTG9hZFN0YXRpc3RpY3MvcmVtb3ZlLXdlYnNpdGUtZGF0YS1mb3Itb3JpZ2luLWRlbGV0
ZXMtbGluay1kZWNvcmF0aW9uLWRhdGFiYXNlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVtb3ZlLXdlYnNpdGUtZGF0YS1mb3Itb3JpZ2luLWRl
bGV0ZXMtbGluay1kZWNvcmF0aW9uLWRhdGFiYXNlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDVmMTJkNDQ0
YmI0OTUzYWE0YTk0MDI3YTc0ZGEyOTUyYWQyNjlkOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZW1vdmUtd2Vic2l0ZS1k
YXRhLWZvci1vcmlnaW4tZGVsZXRlcy1saW5rLWRlY29yYXRpb24tZGF0YWJhc2UuaHRtbApAQCAt
MCwwICsxLDUyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlw
dCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICA8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25s
b2FkPSJzZXRUaW1lb3V0KCdydW5UZXN0KCknLCAwKSI+Cis8ZGl2IGlkPSJvdXRwdXQiPjwvZGl2
PgorPHNjcmlwdD4KKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1
bm5lci5zZXRVc2VJVFBEYXRhYmFzZSh0cnVlKTsKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50
aWxEb25lKCk7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIH0KKworICAg
IGZ1bmN0aW9uIG5hdmlnYXRlQ3Jvc3NPcmlnaW4oKSB7CisgICAgICAgIGRvY3VtZW50LmxvY2F0
aW9uLmhyZWYgPSBkZXN0aW5hdGlvbk9yaWdpbiArICIvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9y
ZW1vdmUtd2Vic2l0ZS1kYXRhLWZvci1vcmlnaW4tZGVsZXRlcy1saW5rLWRlY29yYXRpb24tZGF0
YWJhc2UuaHRtbD9saW5rPWRlY29yYXRpb24iOworICAgIH0KKworICAgIGNvbnN0IGhvc3QgPSAi
bG9jYWxob3N0IjsKKyAgICBjb25zdCBkZXN0aW5hdGlvbk9yaWdpbiA9ICJodHRwOi8vbG9jYWxo
b3N0OjgwMDAiOworICAgIGNvbnN0IHByZXZhbGVudFJlc291cmNlT3JpZ2luID0gImh0dHA6Ly8x
MjcuMC4wLjE6ODAwMCI7CisgICAgY29uc3QgdGVzdE9yaWdpbiA9ICJodHRwOi8vMTI3LjAuMC4y
OjgwMDAiOworICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgICAgIGlmIChkb2N1bWVudC5s
b2NhdGlvbi5vcmlnaW4gPT09IHByZXZhbGVudFJlc291cmNlT3JpZ2luKSB7CisgICAgICAgICAg
ICBzZXRFbmFibGVGZWF0dXJlKHRydWUsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICB0
ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShwcmV2YWxlbnRSZXNvdXJj
ZU9yaWdpbiwgdHJ1ZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghdGVz
dFJ1bm5lci5pc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShwcmV2YWxlbnRSZXNvdXJjZU9y
aWdpbikpCisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJIb3N0IGRpZCBub3Qg
Z2V0IHNldCBhcyBwcmV2YWxlbnQgcmVzb3VyY2UuIik7CisgICAgICAgICAgICAgICAgICAgICAg
ICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9u
KHRlc3RPcmlnaW4sIGRlc3RpbmF0aW9uT3JpZ2luKTsKKyAgICAgICAgICAgICAgICAgICAgdGVz
dFJ1bm5lci5zdGF0aXN0aWNzVXBkYXRlQ29va2llQmxvY2tpbmcobmF2aWdhdGVDcm9zc09yaWdp
bik7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIH0pOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgdGVzdFJ1bm5lci5jbGVhclN0YXRpc3RpY3NEYXRhRm9yRG9tYWlu
KGhvc3QpOworICAgICAgICAgICAgLy8gTXVzdCB1c2UgZG9tYWluSUQgdG8gZW5zdXJlIHRoaXMg
d2FzIHByb3Blcmx5CisgICAgICAgICAgICAvLyBkZWxldGVkLCBvdGhlcndpc2UgdGhlIGxhY2sg
b2YgcmVnaXN0cmFibGUgZG9tYWluIC0tPiBkb21haW5JRCBtYXBwaW5nCisgICAgICAgICAgICAv
LyBjb3VsZCBjcmVhdGUgYSBmYWxzZS1wb3NpdGl2ZSB0ZXN0IHJlc3VsdCBldmVuIHdoZW4gdGhl
IGRvbWFpbklEIHBlcnNpc3RzLgorICAgICAgICAgICAgaWYgKHRlc3RSdW5uZXIuZG9tYWluSURF
eGlzdHNJbkRhdGFiYXNlKDIpKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkRvbWFpbiBJ
RCB3YXMgbm90IGRlbGV0ZWQgZnJvbSB0aGUgZGF0YWJhc2UuIik7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiRG9tYWluIElEIHdhcyBzdWNjZXNzZnVsbHkg
ZGVsZXRlZCBmcm9tIHRoZSBkYXRhYmFzZS4iKQorCisgICAgICAgICAgICBzZXRFbmFibGVGZWF0
dXJlKGZhbHNlLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAgIH0KKzwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzL3JlbW92ZS13ZWJzaXRlLWRhdGEtZm9yLW9yaWdpbi1kZWxldGVz
LWxpbmstZGVjb3JhdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jl
c291cmNlTG9hZFN0YXRpc3RpY3MvcmVtb3ZlLXdlYnNpdGUtZGF0YS1mb3Itb3JpZ2luLWRlbGV0
ZXMtbGluay1kZWNvcmF0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZWNlMzg1YTljNDJh
OTQwZjE4ZDNhMzBmZTQxMzU5MTY0YmMyZDlhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3JlbW92ZS13ZWJzaXRlLWRhdGEt
Zm9yLW9yaWdpbi1kZWxldGVzLWxpbmstZGVjb3JhdGlvbi1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxMSBAQAorCitSZXNvdXJjZSBsb2FkIHN0YXRpc3RpY3M6CisKK1JlZ2lzdHJhYmxlIGRvbWFp
bjogMTI3LjAuMC4xCisgICAgaGFkVXNlckludGVyYWN0aW9uOiBObworICAgIG1vc3RSZWNlbnRV
c2VySW50ZXJhY3Rpb246IC0xCisgICAgZ3JhbmRmYXRoZXJlZDogTm8KKyAgICBnb3RMaW5rRGVj
b3JhdGlvbkZyb21QcmV2YWxlbnRSZXNvdXJjZTogTm8KKyAgICBpc1ByZXZhbGVudFJlc291cmNl
OiBZZXMKKyAgICBpc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZTogTm8KKyAgICBkYXRhUmVjb3Jkc1Jl
bW92ZWQ6IDAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy9yZW1vdmUtd2Vic2l0ZS1kYXRhLWZvci1vcmlnaW4tZGVsZXRlcy1saW5rLWRl
Y29yYXRpb24uaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy9yZW1vdmUtd2Vic2l0ZS1kYXRhLWZvci1vcmlnaW4tZGVsZXRlcy1saW5rLWRlY29yYXRp
b24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42YTU3ZGZjYmRhNTRkN2I3OWM3ZTFkN2Y1MTgwOGQ1ZWJjNThj
YTU3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzL3JlbW92ZS13ZWJzaXRlLWRhdGEtZm9yLW9yaWdpbi1kZWxldGVzLWxpbmst
ZGVjb3JhdGlvbi5odG1sCkBAIC0wLDAgKzEsNDEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHkgb25sb2FkPSJzZXRUaW1lb3V0KCdydW5UZXN0KCknLCAwKSI+Cis8ZGl2
IGlkPSJvdXRwdXQiPjwvZGl2PgorPHNjcmlwdD4KKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
IHsKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOworICAgIH0KKworICAgIGZ1bmN0aW9uIG5hdmlnYXRlQ3Jvc3NPcmln
aW4oKSB7CisgICAgICAgIGRvY3VtZW50LmxvY2F0aW9uLmhyZWYgPSBkZXN0aW5hdGlvbk9yaWdp
biArICIvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZW1vdmUtd2Vic2l0ZS1kYXRhLWZvci1vcmln
aW4tZGVsZXRlcy1saW5rLWRlY29yYXRpb24uaHRtbD9saW5rPWRlY29yYXRpb24iOworICAgIH0K
KworICAgIGNvbnN0IGhvc3QgPSAibG9jYWxob3N0IjsKKyAgICBjb25zdCBkZXN0aW5hdGlvbk9y
aWdpbiA9ICJodHRwOi8vbG9jYWxob3N0OjgwMDAiOworICAgIGNvbnN0IHByZXZhbGVudFJlc291
cmNlT3JpZ2luID0gImh0dHA6Ly8xMjcuMC4wLjE6ODAwMCI7CisgICAgZnVuY3Rpb24gcnVuVGVz
dCgpIHsKKyAgICAgICAgaWYgKGRvY3VtZW50LmxvY2F0aW9uLm9yaWdpbiA9PT0gcHJldmFsZW50
UmVzb3VyY2VPcmlnaW4pIHsKKyAgICAgICAgICAgIHNldEVuYWJsZUZlYXR1cmUodHJ1ZSwgZnVu
Y3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1ByZXZh
bGVudFJlc291cmNlKHByZXZhbGVudFJlc291cmNlT3JpZ2luLCB0cnVlLCBmdW5jdGlvbigpIHsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKCF0ZXN0UnVubmVyLmlzU3RhdGlzdGljc1ByZXZhbGVu
dFJlc291cmNlKHByZXZhbGVudFJlc291cmNlT3JpZ2luKSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHRlc3RGYWlsZWQoIkhvc3QgZGlkIG5vdCBnZXQgc2V0IGFzIHByZXZhbGVudCByZXNvdXJj
ZS4iKTsKKyAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzVXBkYXRlQ29v
a2llQmxvY2tpbmcobmF2aWdhdGVDcm9zc09yaWdpbik7CisgICAgICAgICAgICAgICAgfSk7CisK
KyAgICAgICAgICAgIH0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGVzdFJ1bm5l
ci5jbGVhclN0YXRpc3RpY3NEYXRhRm9yRG9tYWluKGhvc3QpOworICAgICAgICAgICAgdGVzdFJ1
bm5lci5kdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcygpOworICAgICAgICAgICAgc2V0RW5hYmxl
RmVhdHVyZShmYWxzZSwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICB9Cis8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZW1vdmUtd2Vic2l0ZS1kYXRhLWZvci1vcmlnaW4tZGVs
ZXRlcy1taXhlZC1zdGF0aXN0aWNzLWVudHJpZXMtZGF0YWJhc2UtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3JlbW92ZS13ZWJzaXRl
LWRhdGEtZm9yLW9yaWdpbi1kZWxldGVzLW1peGVkLXN0YXRpc3RpY3MtZW50cmllcy1kYXRhYmFz
ZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjI4NzJjZDlkN2EwOGUwMzYxYjMyNmFiOTIwMWQ1
YWY3MzgxMGJlZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVz
b3VyY2VMb2FkU3RhdGlzdGljcy9yZW1vdmUtd2Vic2l0ZS1kYXRhLWZvci1vcmlnaW4tZGVsZXRl
cy1taXhlZC1zdGF0aXN0aWNzLWVudHJpZXMtZGF0YWJhc2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsNSBAQAorUEFTUyBEb21haW4gSUQgd2FzIHN1Y2Nlc3NmdWxseSBkZWxldGVkIGZyb20gdGhl
IGRhdGFiYXNlLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy9yZW1vdmUtd2Vic2l0ZS1kYXRhLWZvci1vcmlnaW4tZGVsZXRlcy1taXhlZC1zdGF0
aXN0aWNzLWVudHJpZXMtZGF0YWJhc2UuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVz
b3VyY2VMb2FkU3RhdGlzdGljcy9yZW1vdmUtd2Vic2l0ZS1kYXRhLWZvci1vcmlnaW4tZGVsZXRl
cy1taXhlZC1zdGF0aXN0aWNzLWVudHJpZXMtZGF0YWJhc2UuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOTY3
MWU2OGQyZGI2Y2YxMTM5NzYwM2M2ZTJmNzRkMGExOTM2NWFlCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3JlbW92ZS13ZWJz
aXRlLWRhdGEtZm9yLW9yaWdpbi1kZWxldGVzLW1peGVkLXN0YXRpc3RpY3MtZW50cmllcy1kYXRh
YmFzZS5odG1sCkBAIC0wLDAgKzEsNTUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWwgbGFuZz0i
ZW4iPgorPGhlYWQ+CisgICAgPG1ldGEgY2hhcnNldD0iVVRGLTgiPgorICAgIDx0aXRsZT5UZXN0
cyB0aGF0IHJlbW92YWwgb2Ygd2Vic2l0ZSBkYXRhIGRlbGV0ZXMgSVRQIGRhdGE8L3RpdGxlPgor
ICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+
CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPHNjcmlwdD4KKyAgICBjb25zdCBob3N0VW5kZXJUZXN0ID0gIjEyNy4wLjAuMSI7
CisgICAgY29uc3Qgc3RhdGlzdGljc1VybCA9ICJodHRwOi8vIiArIGhvc3RVbmRlclRlc3QgKyAi
L3RlbXAiOworICAgIGNvbnN0IHRvcEZyYW1lT3JpZ2luMSA9ICJodHRwOi8vMTI3LjAuMC4yOjgw
MDAvdGVtcCI7CisgICAgY29uc3QgdG9wRnJhbWVPcmlnaW4yID0gImh0dHA6Ly8xMjcuMC4wLjM6
ODAwMC90ZW1wIjsKKyAgICBjb25zdCB0b3BGcmFtZU9yaWdpbjMgPSAiaHR0cDovLzEyNy4wLjAu
NDo4MDAwL3RlbXAiOworICAgIGNvbnN0IHRvcEZyYW1lT3JpZ2luNCA9ICJodHRwOi8vMTI3LjAu
MC41OjgwMDAvdGVtcCI7CisKKyAgICBmdW5jdGlvbiBjb21wbGV0ZVRlc3QoKSB7CisgICAgICAg
IHRlc3RSdW5uZXIuY2xlYXJTdGF0aXN0aWNzRGF0YUZvckRvbWFpbihob3N0VW5kZXJUZXN0KTsK
KyAgICAgICAgLy8gTXVzdCB1c2UgZG9tYWluSUQgdG8gZW5zdXJlIHRoaXMgd2FzIHByb3Blcmx5
CisgICAgICAgIC8vIGRlbGV0ZWQsIG90aGVyd2lzZSB0aGUgbGFjayBvZiByZWdpc3RyYWJsZSBk
b21haW4gLS0+IGRvbWFpbklEIG1hcHBpbmcKKyAgICAgICAgLy8gY291bGQgY3JlYXRlIGEgZmFs
c2UtcG9zaXRpdmUgdGVzdCByZXN1bHQgZXZlbiB3aGVuIHRoZSBkb21haW5JRCBwZXJzaXN0cy4K
KyAgICAgICAgaWYgKHRlc3RSdW5uZXIuZG9tYWluSURFeGlzdHNJbkRhdGFiYXNlKDEpKQorICAg
ICAgICAgICAgdGVzdEZhaWxlZCgiRG9tYWluIElEIHdhcyBub3QgZGVsZXRlZCBmcm9tIHRoZSBk
YXRhYmFzZS4iKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGVzdFBhc3NlZCgiRG9tYWlu
IElEIHdhcyBzdWNjZXNzZnVsbHkgZGVsZXRlZCBmcm9tIHRoZSBkYXRhYmFzZS4iKQorICAgICAg
ICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHRlc3RS
dW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBy
dW5UZXN0UnVubmVyVGVzdCgpIHsKKyAgICAgICAgLy8gQ3JlYXRlIGVudHJpZXMgaW4gbXVsdGlw
bGUgZGF0YWJhc2UgdGFibGVzIHdpdGggdGhlIGhvc3RVbmRlclRlc3QuCisgICAgICAgIHRlc3RS
dW5uZXIuc2V0U3RhdGlzdGljc1N1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbihzdGF0aXN0aWNz
VXJsLCB0b3BGcmFtZU9yaWdpbjEpOworICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NT
dWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW4odG9wRnJhbWVPcmlnaW4yLCBzdGF0aXN0aWNz
VXJsKTsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzU3VicmVzb3VyY2VVbmRlclRv
cEZyYW1lT3JpZ2luKHN0YXRpc3RpY3NVcmwsIHRvcEZyYW1lT3JpZ2luMyk7CisgICAgICAgIHRl
c3RSdW5uZXIuc2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyhzdGF0aXN0
aWNzVXJsLCB0b3BGcmFtZU9yaWdpbjQpOworCisgICAgICAgIGlmICghdGVzdFJ1bm5lci5pc1N0
YXRpc3RpY3NSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVyKHN0YXRpc3RpY3NVcmwsIHRvcEZyYW1l
T3JpZ2luMSkKKyAgICAgICAgICAgICAgICB8fCAhdGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NSZWdp
c3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyKHRvcEZyYW1lT3JpZ2luMiwgc3RhdGlzdGljc1VybCkK
KyAgICAgICAgICAgICAgICB8fCAhdGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NSZWdpc3RlcmVkQXNT
dWJyZXNvdXJjZVVuZGVyKHN0YXRpc3RpY3NVcmwsIHRvcEZyYW1lT3JpZ2luMykKKyAgICAgICAg
ICAgICAgICB8fCAhdGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NSZWdpc3RlcmVkQXNSZWRpcmVjdGlu
Z1RvKHN0YXRpc3RpY3NVcmwsIHRvcEZyYW1lT3JpZ2luNCkpCisgICAgICAgICAgICB0ZXN0RmFp
bGVkKCJGYWlsZWQgdG8gcmVnaXN0ZXIgc3ViU3RhdGlzdGljcy4iKTsKKworICAgICAgICBjb21w
bGV0ZVRlc3QoKTsKKyAgICB9CisKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIgJiYgd2luZG93
LmludGVybmFscykgeworICAgICAgICB0ZXN0UnVubmVyLnNldFVzZUlUUERhdGFiYXNlKHRydWUp
OworICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgc2V0RW5hYmxl
RmVhdHVyZSh0cnVlLCBydW5UZXN0UnVubmVyVGVzdCk7CisgICAgfQorPC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNl
TG9hZFN0YXRpc3RpY3MvcmVtb3ZlLXdlYnNpdGUtZGF0YS1mb3Itb3JpZ2luLWRlbGV0ZXMtbWl4
ZWQtc3RhdGlzdGljcy1lbnRyaWVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZW1vdmUtd2Vic2l0ZS1kYXRhLWZvci1vcmlnaW4t
ZGVsZXRlcy1taXhlZC1zdGF0aXN0aWNzLWVudHJpZXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjVhYjJiZmE5NDAxZmEyYmU1MTEzMTA0YjU4NDA5MWUxZGExYmViNGIKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVtb3Zl
LXdlYnNpdGUtZGF0YS1mb3Itb3JpZ2luLWRlbGV0ZXMtbWl4ZWQtc3RhdGlzdGljcy1lbnRyaWVz
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKK1BBU1MgSG9zdCBkZWxldGVkIGZyb20gbWVt
b3J5IHN0b3JlLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy9yZW1vdmUtd2Vic2l0ZS1kYXRhLWZvci1vcmlnaW4tZGVsZXRlcy1taXhlZC1zdGF0
aXN0aWNzLWVudHJpZXMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy9yZW1vdmUtd2Vic2l0ZS1kYXRhLWZvci1vcmlnaW4tZGVsZXRlcy1taXhlZC1z
dGF0aXN0aWNzLWVudHJpZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOTk1MWU5NzQ1MDM3NTA3MGIyZjM0
MTVkNDZkYzEzZDk5NmQyYTkxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3JlbW92ZS13ZWJzaXRlLWRhdGEtZm9yLW9yaWdp
bi1kZWxldGVzLW1peGVkLXN0YXRpc3RpY3MtZW50cmllcy5odG1sCkBAIC0wLDAgKzEsNTUgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWwgbGFuZz0iZW4iPgorPGhlYWQ+CisgICAgPG1ldGEgY2hh
cnNldD0iVVRGLTgiPgorICAgIDx0aXRsZT5UZXN0cyB0aGF0IHJlbW92YWwgb2Ygd2Vic2l0ZSBk
YXRhIGRlbGV0ZXMgSVRQIGRhdGE8L3RpdGxlPgorICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1y
ZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNl
cy91dGlsLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4KKyAgICBjb25z
dCBob3N0VW5kZXJUZXN0ID0gIjEyNy4wLjAuMSI7CisgICAgY29uc3Qgc3RhdGlzdGljc1VybCA9
ICJodHRwOi8vIiArIGhvc3RVbmRlclRlc3QgKyAiL3RlbXAiOworICAgIGNvbnN0IHRvcEZyYW1l
T3JpZ2luMSA9ICJodHRwOi8vMTI3LjAuMC4yOjgwMDAvdGVtcCI7CisgICAgY29uc3QgdG9wRnJh
bWVPcmlnaW4yID0gImh0dHA6Ly8xMjcuMC4wLjM6ODAwMC90ZW1wIjsKKyAgICBjb25zdCB0b3BG
cmFtZU9yaWdpbjMgPSAiaHR0cDovLzEyNy4wLjAuNDo4MDAwL3RlbXAiOworICAgIGNvbnN0IHRv
cEZyYW1lT3JpZ2luNCA9ICJodHRwOi8vMTI3LjAuMC41OjgwMDAvdGVtcCI7CisKKyAgICBmdW5j
dGlvbiBjb21wbGV0ZVRlc3QoKSB7CisgICAgICAgIGlmICh0ZXN0UnVubmVyLmlzU3RhdGlzdGlj
c1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5kZXIoc3RhdGlzdGljc1VybCwgdG9wRnJhbWVPcmlnaW4x
KQorICAgICAgICAgICAgICAgIHx8IHRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzUmVnaXN0ZXJlZEFz
U3VicmVzb3VyY2VVbmRlcih0b3BGcmFtZU9yaWdpbjIsIHN0YXRpc3RpY3NVcmwpCisgICAgICAg
ICAgICAgICAgfHwgdGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NSZWdpc3RlcmVkQXNTdWJyZXNvdXJj
ZVVuZGVyKHN0YXRpc3RpY3NVcmwsIHRvcEZyYW1lT3JpZ2luMykKKyAgICAgICAgICAgICAgICB8
fCB0ZXN0UnVubmVyLmlzU3RhdGlzdGljc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8oc3RhdGlz
dGljc1VybCwgdG9wRnJhbWVPcmlnaW40KSkKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoIkhvc3Qg
bm90IGRlbGV0ZWQgZnJvbSBtZW1vcnkgc3RvcmUuIik7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIHRlc3RQYXNzZWQoIkhvc3QgZGVsZXRlZCBmcm9tIG1lbW9yeSBzdG9yZS4iKTsKKworICAg
ICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHRl
c3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBmdW5jdGlv
biBydW5UZXN0UnVubmVyVGVzdCgpIHsKKyAgICAgICAgLy8gQ3JlYXRlIGVudHJpZXMgaW4gbXVs
dGlwbGUgZGF0YWJhc2UgdGFibGVzIHdpdGggdGhlIGhvc3RVbmRlclRlc3QuCisgICAgICAgIHRl
c3RSdW5uZXIuc2V0U3RhdGlzdGljc1N1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbihzdGF0aXN0
aWNzVXJsLCB0b3BGcmFtZU9yaWdpbjEpOworICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3Rp
Y3NTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW4odG9wRnJhbWVPcmlnaW4yLCBzdGF0aXN0
aWNzVXJsKTsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzU3VicmVzb3VyY2VVbmRl
clRvcEZyYW1lT3JpZ2luKHN0YXRpc3RpY3NVcmwsIHRvcEZyYW1lT3JpZ2luMyk7CisgICAgICAg
IHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyhzdGF0
aXN0aWNzVXJsLCB0b3BGcmFtZU9yaWdpbjQpOworCisgICAgICAgIGlmICghdGVzdFJ1bm5lci5p
c1N0YXRpc3RpY3NSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVyKHN0YXRpc3RpY3NVcmwsIHRvcEZy
YW1lT3JpZ2luMSkKKyAgICAgICAgICAgICAgICB8fCAhdGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NS
ZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyKHRvcEZyYW1lT3JpZ2luMiwgc3RhdGlzdGljc1Vy
bCkKKyAgICAgICAgICAgICAgICB8fCAhdGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NSZWdpc3RlcmVk
QXNTdWJyZXNvdXJjZVVuZGVyKHN0YXRpc3RpY3NVcmwsIHRvcEZyYW1lT3JpZ2luMykKKyAgICAg
ICAgICAgICAgICB8fCAhdGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NSZWdpc3RlcmVkQXNSZWRpcmVj
dGluZ1RvKHN0YXRpc3RpY3NVcmwsIHRvcEZyYW1lT3JpZ2luNCkpCisgICAgICAgICAgICB0ZXN0
RmFpbGVkKCJGYWlsZWQgdG8gcmVnaXN0ZXIgc3ViU3RhdGlzdGljcy4iKTsKKworICAgICAgICB0
ZXN0UnVubmVyLmNsZWFyU3RhdGlzdGljc0RhdGFGb3JEb21haW4oaG9zdFVuZGVyVGVzdCk7Cisg
ICAgICAgIGNvbXBsZXRlVGVzdCgpOworICAgIH0KKworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
ciAmJiB3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9u
ZSgpOworICAgICAgICBzZXRFbmFibGVGZWF0dXJlKHRydWUsIHJ1blRlc3RSdW5uZXJUZXN0KTsK
KyAgICB9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZW1vdmUtd2Vic2l0ZS1kYXRh
LWZvci1vcmlnaW4tZGVsZXRlcy10aGlyZC1wYXJ0eS1zY3JpcHQtbG9hZHMtZGF0YWJhc2UtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
L3JlbW92ZS13ZWJzaXRlLWRhdGEtZm9yLW9yaWdpbi1kZWxldGVzLXRoaXJkLXBhcnR5LXNjcmlw
dC1sb2Fkcy1kYXRhYmFzZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzkzZTg2NzIxNzI0MmMy
YjY5OWU3Y2I5OTU3NDgxZGI1NDAxNDYxNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZW1vdmUtd2Vic2l0ZS1kYXRhLWZv
ci1vcmlnaW4tZGVsZXRlcy10aGlyZC1wYXJ0eS1zY3JpcHQtbG9hZHMtZGF0YWJhc2UtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCitQQVNTIERvbWFpbiBJRCB3YXMgc3VjY2Vzc2Z1bGx5IGRlbGV0ZWQg
ZnJvbSB0aGUgZGF0YWJhc2UuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZW1vdmUtd2Vic2l0ZS1kYXRhLWZvci1vcmlnaW4tZGVs
ZXRlcy10aGlyZC1wYXJ0eS1zY3JpcHQtbG9hZHMtZGF0YWJhc2UuaHRtbCBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZW1vdmUtd2Vic2l0ZS1kYXRhLWZv
ci1vcmlnaW4tZGVsZXRlcy10aGlyZC1wYXJ0eS1zY3JpcHQtbG9hZHMtZGF0YWJhc2UuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lYThkY2I0ZTY5NGQ3NzdhNmNhYTZhNTUwYmYzODdjZTk5ZTE5MTZlCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzL3JlbW92ZS13ZWJzaXRlLWRhdGEtZm9yLW9yaWdpbi1kZWxldGVzLXRoaXJkLXBhcnR5LXNj
cmlwdC1sb2Fkcy1kYXRhYmFzZS5odG1sCkBAIC0wLDAgKzEsNTcgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWwgbGFuZz0iZW4iPgorPGhlYWQ+CisgICAgPG1ldGEgY2hhcnNldD0iVVRGLTgiPgor
ICAgIDx0aXRsZT5UZXN0cyB0aGF0IHJlbW92YWwgb2Ygd2Vic2l0ZSBkYXRhIGRlbGV0ZXMgSVRQ
IGRhdGE8L3RpdGxlPgorICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVz
dC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy91dGlsLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxzY3JpcHQ+CisgICAg
Y29uc3QgaG9zdCA9ICJsb2NhbGhvc3QiOworICAgIGNvbnN0IHRoaXJkUGFydHlPcmlnaW4gPSAi
aHR0cDovL2xvY2FsaG9zdDo4MDAwIjsKKyAgICBjb25zdCB0aGlyZFBhcnR5QmFzZVVybCA9IHRo
aXJkUGFydHlPcmlnaW4gKyAiL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzIjsKKwor
ICAgIGZ1bmN0aW9uIGZpbmlzaFRlc3QoKSB7CisgICAgICAgIHRlc3RSdW5uZXIuY2xlYXJTdGF0
aXN0aWNzRGF0YUZvckRvbWFpbihob3N0KTsKKyAgICAgICAgLy8gTXVzdCB1c2UgZG9tYWluSUQg
dG8gZW5zdXJlIHRoaXMgd2FzIHByb3Blcmx5CisgICAgICAgIC8vIGRlbGV0ZWQsIG90aGVyd2lz
ZSB0aGUgbGFjayBvZiByZWdpc3RyYWJsZSBkb21haW4gLS0+IGRvbWFpbklEIG1hcHBpbmcKKyAg
ICAgICAgLy8gY291bGQgY3JlYXRlIGEgZmFsc2UtcG9zaXRpdmUgdGVzdCByZXN1bHQgZXZlbiB3
aGVuIHRoZSBkb21haW5JRCBwZXJzaXN0cy4KKyAgICAgICAgaWYgKHRlc3RSdW5uZXIuZG9tYWlu
SURFeGlzdHNJbkRhdGFiYXNlKDEpKQorICAgICAgICAgICAgdGVzdEZhaWxlZCgiRG9tYWluIElE
IHdhcyBub3QgZGVsZXRlZCBmcm9tIHRoZSBkYXRhYmFzZS4iKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgdGVzdFBhc3NlZCgiRG9tYWluIElEIHdhcyBzdWNjZXNzZnVsbHkgZGVsZXRlZCBm
cm9tIHRoZSBkYXRhYmFzZS4iKQorICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICB9
KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBydW5UZXN0KCkgeworICAgICAgICBzd2l0Y2ggKGRv
Y3VtZW50LmxvY2F0aW9uLmhhc2gpIHsKKyAgICAgICAgICAgIGNhc2UgIiI6CisgICAgICAgICAg
ICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyICYmIHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAg
ICAgICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgICAgICAgICAg
ICAgICAgIHRlc3RSdW5uZXIuc2V0VXNlSVRQRGF0YWJhc2UodHJ1ZSk7CisgICAgICAgICAgICAg
ICAgICAgIHNldEVuYWJsZUZlYXR1cmUodHJ1ZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NOb3RpZnlQYWdlc1doZW5EYXRhUmVj
b3Jkc1dlcmVTY2FubmVkKHRydWUpOworICAgICAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5l
ci5pbnN0YWxsU3RhdGlzdGljc0RpZFNjYW5EYXRhUmVjb3Jkc0NhbGxiYWNrKGZpbmlzaFRlc3Qp
OworICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQubG9jYXRpb24uaGFzaCA9ICJzdGVw
MSI7CisgICAgICAgICAgICAgICAgICAgICAgICBydW5UZXN0KCk7CisgICAgICAgICAgICAgICAg
ICAgIH0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIGNhc2UgIiNzdGVwMSI6CisgICAgICAgICAgICAgICAgZG9jdW1lbnQubG9jYXRpb24u
aGFzaCA9ICJzdGVwMiI7CisgICAgICAgICAgICAgICAgbGV0IHNjcmlwdEVsZW1lbnQgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTsKKyAgICAgICAgICAgICAgICBzY3JpcHRFbGVt
ZW50Lm9ubG9hZCA9IHJ1blRlc3Q7CisgICAgICAgICAgICAgICAgc2NyaXB0RWxlbWVudC5zcmMg
PSB0aGlyZFBhcnR5QmFzZVVybCArICIvZHVtbXkuanM/ZHVtbXlQYXJhbT0iICsgTWF0aC5yYW5k
b20oKTsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHNjcmlwdEVs
ZW1lbnQpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAiI3N0ZXAy
IjoKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NOb3RpZnlPYnNlcnZlcigp
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291
cmNlTG9hZFN0YXRpc3RpY3MvcmVtb3ZlLXdlYnNpdGUtZGF0YS1mb3Itb3JpZ2luLWRlbGV0ZXMt
dGhpcmQtcGFydHktc2NyaXB0LWxvYWRzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZW1vdmUtd2Vic2l0ZS1kYXRhLWZvci1vcmln
aW4tZGVsZXRlcy10aGlyZC1wYXJ0eS1zY3JpcHQtbG9hZHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjJjNjJkZWUzYzE4YTIyMmRlZTU2MmU1YTA5ZmJjZjk5ODVhNDZiNTMKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVt
b3ZlLXdlYnNpdGUtZGF0YS1mb3Itb3JpZ2luLWRlbGV0ZXMtdGhpcmQtcGFydHktc2NyaXB0LWxv
YWRzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKworUmVzb3VyY2UgbG9hZCBzdGF0aXN0aWNzOgor
CitSZWdpc3RyYWJsZSBkb21haW46IDEyNy4wLjAuMQorICAgIGhhZFVzZXJJbnRlcmFjdGlvbjog
Tm8KKyAgICBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uOiAtMQorICAgIGdyYW5kZmF0aGVyZWQ6
IE5vCisgICAgZ290TGlua0RlY29yYXRpb25Gcm9tUHJldmFsZW50UmVzb3VyY2U6IE5vCisgICAg
aXNQcmV2YWxlbnRSZXNvdXJjZTogTm8KKyAgICBpc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZTogTm8K
KyAgICBkYXRhUmVjb3Jkc1JlbW92ZWQ6IDAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZW1vdmUtd2Vic2l0ZS1kYXRhLWZvci1vcmln
aW4tZGVsZXRlcy10aGlyZC1wYXJ0eS1zY3JpcHQtbG9hZHMuaHRtbCBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZW1vdmUtd2Vic2l0ZS1kYXRhLWZvci1v
cmlnaW4tZGVsZXRlcy10aGlyZC1wYXJ0eS1zY3JpcHQtbG9hZHMuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5j
MzNlOThkNzVlYTEwY2ViMDRjNzQ2NTdkYTQwZTgwZGU3ODMwMmQ3Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3JlbW92ZS13
ZWJzaXRlLWRhdGEtZm9yLW9yaWdpbi1kZWxldGVzLXRoaXJkLXBhcnR5LXNjcmlwdC1sb2Fkcy5o
dG1sCkBAIC0wLDAgKzEsNTAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWwgbGFuZz0iZW4iPgor
PGhlYWQ+CisgICAgPG1ldGEgY2hhcnNldD0iVVRGLTgiPgorICAgIDx0aXRsZT5UZXN0cyB0aGF0
IHJlbW92YWwgb2Ygd2Vic2l0ZSBkYXRhIGRlbGV0ZXMgSVRQIGRhdGE8L3RpdGxlPgorICAgIDxz
Y3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAg
PHNjcmlwdCBzcmM9InJlc291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxzY3JpcHQ+CisgICAgY29uc3QgaG9zdCA9ICJsb2NhbGhv
c3QiOworICAgIGNvbnN0IHRoaXJkUGFydHlPcmlnaW4gPSAiaHR0cDovL2xvY2FsaG9zdDo4MDAw
IjsKKyAgICBjb25zdCB0aGlyZFBhcnR5QmFzZVVybCA9IHRoaXJkUGFydHlPcmlnaW4gKyAiL3Jl
c291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzIjsKKworICAgIGZ1bmN0aW9uIGZpbmlzaFRl
c3QoKSB7CisgICAgICAgIHRlc3RSdW5uZXIuY2xlYXJTdGF0aXN0aWNzRGF0YUZvckRvbWFpbiho
b3N0KTsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcygpOwor
ICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBmdW5j
dGlvbiBydW5UZXN0KCkgeworICAgICAgICBzd2l0Y2ggKGRvY3VtZW50LmxvY2F0aW9uLmhhc2gp
IHsKKyAgICAgICAgICAgIGNhc2UgIiI6CisgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyICYmIHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdFJ1
bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgICAgICAgICAgICAgICAgIHNldEVuYWJsZUZlYXR1
cmUodHJ1ZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVy
LnNldFN0YXRpc3RpY3NOb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkKHRydWUp
OworICAgICAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5pbnN0YWxsU3RhdGlzdGljc0Rp
ZFNjYW5EYXRhUmVjb3Jkc0NhbGxiYWNrKGZpbmlzaFRlc3QpOworICAgICAgICAgICAgICAgICAg
ICAgICAgZG9jdW1lbnQubG9jYXRpb24uaGFzaCA9ICJzdGVwMSI7CisgICAgICAgICAgICAgICAg
ICAgICAgICBydW5UZXN0KCk7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgIiNzdGVwMSI6
CisgICAgICAgICAgICAgICAgZG9jdW1lbnQubG9jYXRpb24uaGFzaCA9ICJzdGVwMiI7CisgICAg
ICAgICAgICAgICAgbGV0IHNjcmlwdEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJz
Y3JpcHQiKTsKKyAgICAgICAgICAgICAgICBzY3JpcHRFbGVtZW50Lm9ubG9hZCA9IHJ1blRlc3Q7
CisgICAgICAgICAgICAgICAgc2NyaXB0RWxlbWVudC5zcmMgPSB0aGlyZFBhcnR5QmFzZVVybCAr
ICIvZHVtbXkuanM/ZHVtbXlQYXJhbT0iICsgTWF0aC5yYW5kb20oKTsKKyAgICAgICAgICAgICAg
ICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHNjcmlwdEVsZW1lbnQpOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAiI3N0ZXAyIjoKKyAgICAgICAgICAgICAgICB0
ZXN0UnVubmVyLnN0YXRpc3RpY3NOb3RpZnlPYnNlcnZlcigpOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisgICAgfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>397500</attachid>
            <date>2020-04-24 13:35:51 -0700</date>
            <delta_ts>2020-04-24 14:08:15 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-210864-20200424133550.patch</filename>
            <type>text/plain</type>
            <size>73283</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwNTk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGFlNmZlNDc3MjMxZTM3ZDBj
Y2Y1N2MwZGI4NjRiYjE1MjM3ODA5YzguLmJkNmE1ZjA4MDIyN2JkNjA2Yjg5NDExYzI2NDM4ZjE3
NmIwNTU3MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjQgQEAKKzIwMjAtMDQtMjQgIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3Zpbmcgd2Vi
c2l0ZSBkYXRhIGZvciBhIGRvbWFpbiBzaG91bGQgZGVsZXRlIGNvcnJlc3BvbmRpbmcgSVRQIGVu
dHJ5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTA4
NjQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU5NDczMTkzPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IEpvaG4gV2lsYW5kZXIuCisKKyAgICAgICAgVGVzdHM6IGh0dHAvdGVzdHMvcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy9yZW1vdmUtd2Vic2l0ZS1kYXRhLWZvci1vcmlnaW4tZGVsZXRlcy1saW5r
LWRlY29yYXRpb24tZGF0YWJhc2UuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzL3JlbW92ZS13ZWJzaXRlLWRhdGEtZm9yLW9yaWdpbi1kZWxldGVz
LWxpbmstZGVjb3JhdGlvbi5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3Jlc291cmNl
TG9hZFN0YXRpc3RpY3MvcmVtb3ZlLXdlYnNpdGUtZGF0YS1mb3Itb3JpZ2luLWRlbGV0ZXMtbWl4
ZWQtc3RhdGlzdGljcy1lbnRyaWVzLWRhdGFiYXNlLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAv
dGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZW1vdmUtd2Vic2l0ZS1kYXRhLWZvci1vcmln
aW4tZGVsZXRlcy1taXhlZC1zdGF0aXN0aWNzLWVudHJpZXMuaHRtbAorICAgICAgICAgICAgICAg
aHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3JlbW92ZS13ZWJzaXRlLWRhdGEtZm9y
LW9yaWdpbi1kZWxldGVzLXRoaXJkLXBhcnR5LXNjcmlwdC1sb2Fkcy1kYXRhYmFzZS5odG1sCisg
ICAgICAgICAgICAgICBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVtb3ZlLXdl
YnNpdGUtZGF0YS1mb3Itb3JpZ2luLWRlbGV0ZXMtdGhpcmQtcGFydHktc2NyaXB0LWxvYWRzLmh0
bWwKKworICAgICAgICBJbiB0aGUgZGF0YWJhc2Ugc3RvcmU6IGRlbGV0ZXMgZG9tYWluIGZyb20g
dGhlIE9ic2VydmVkRG9tYWlucyB0YWJsZQorICAgICAgICB3aGVuIHdlYnNpdGUgZGF0YSBpcyBk
ZWxldGVkIGZvciB0aGF0IGRvbWFpbi4gVGhpcyBkZWxldGVzIGV2ZXJ5CisgICAgICAgIGluc3Rh
bmNlIG9mIHRoZSBkb21haW5JRCBpbiB0aGUgZGF0YWJhc2UgZHVlIHRvIGNhc2NhZGluZyBkZWxl
dGlvbnMuCisKKyAgICAgICAgSW4gdGhlIG1lbW9yeSBzdG9yZTogZGVsZXRlcyBldmVyeSBpbnN0
YW5jZSBvZiB0aGUgZG9tYWluIGluIHRoZQorICAgICAgICBzdGF0aXN0aWNzIG1hcCwgd2hpY2gg
d2lsbCB1cGRhdGUgdGhlIHBsaXN0LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZW1vdmVEYXRhRm9y
RG9tYWluKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6OmRvbWFpbklERXhpc3RzSW5EYXRhYmFzZSk6CisgICAgICAgIE5lZWRlZCBhIG5ldyBm
dW5jdGlvbiB0byBjaGVjayBmb3IgdGhlIGV4aXN0ZW5jZSBvZiBkb21haW5JRCBpbiBhbnkKKyAg
ICAgICAgdGFibGUuIEV4aXN0aW5nIHF1ZXJpZXMgcmVseSBvbiB0aGUgT2JzZXJ2ZWREb21haW5z
IGVudHJ5LCB3aGljaCBtZWFucworICAgICAgICB0ZXN0aW5nIHVzaW5nIHRob3NlIGNvdWxkIHJl
c3VsdCBpbiBhIGZhbHNlIHBvc2l0aXZlIGlmIHRoZSBkb21haW5JRAorICAgICAgICB3YXMgZGVs
ZXRlZCBmcm9tIE9ic2VydmVkRG9tYWlucyBidXQgaXMgZmxvYXRpbmcgYXJvdW5kIGluIGFub3Ro
ZXIKKyAgICAgICAgdGFibGUuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OnJl
bW92ZURhdGFGb3JEb21haW4pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmg6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
ZG9tYWluSURFeGlzdHNJbkRhdGFiYXNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpyZW1vdmVEYXRhRm9yRG9tYWluKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3M6OmRvbWFpbklERXhpc3RzSW5EYXRhYmFzZSk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMpOgor
ICAgICAgICBQYXNzIFJlZ2lzdHJhYmxlRG9tYWlucyB2ZWN0b3IgdG8gZGVsZXRlV2Vic2l0ZURh
dGFGb3JPcmlnaW5zLAorICAgICAgICBjYXB0dXJlZCBiYXNlZCBvbiB0aGUgV2Vic2l0ZURhdGEg
ZGlzcGxheSBuYW1lLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
aDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcDoKKyAg
ICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUlUUERhdGFGb3JEb21haW4pOgorICAgICAg
ICAoV0tXZWJzaXRlRGF0YVN0b3JlRG9lc1N0YXRpc3RpY3NEb21haW5JREV4aXN0SW5EYXRhYmFz
ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkZWxldGVXZWJzaXRlRGF0YUZvck9y
aWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpkb21haW5JREV4
aXN0c0luRGF0YWJhc2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZURhdGEp
OgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkb21haW5JREV4aXN0c0luRGF0
YWJhc2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
Lmg6CisKIDIwMjAtMDQtMjMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAg
ICAgICBbaU9TXSBDcmFzaCBvbiBSdW5uaW5nQm9hcmQgcHJvY2VzcyBhc3NlcnRpb24gaW52YWxp
ZGF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZp
ZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlLmNwcAppbmRleCBkNDIxNzJlODc2N2EwNTc2MTRiNTI5ZWExYjU2OGEwMGU1MjViZDkw
Li4yOTZhOWEyYzA4MmI2ZDhhZGM0NzBhYTI2Zjk5NzFkMzVlZGFlMzk1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKQEAgLTEz
NSw2ICsxMzUsMTcgQEAgY29uc3RleHByIGF1dG8gZ2V0QWxsU3ViU3RhdGlzdGljc1VuZGVyRG9t
YWluUXVlcnkgPSAiU0VMRUNUIHRvcEZyYW1lRG9tYWluSUQgRlIKICAgICAiVU5JT04gQUxMIFNF
TEVDVCB0b3BGcmFtZURvbWFpbklEIEZST00gU3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWlu
cyBXSEVSRSBzdWJyZXNvdXJjZURvbWFpbklEID0gPyIKICAgICAiVU5JT04gQUxMIFNFTEVDVCB0
b0RvbWFpbklEIEZST00gU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbyBXSEVSRSBzdWJyZXNv
dXJjZURvbWFpbklEID0gPyJfczsKIAorLy8gRVhJU1RTIGZvciB0ZXN0aW5nIHF1ZXJpZXMKK2Nv
bnN0ZXhwciBhdXRvIGxpbmtEZWNvcmF0aW9uRXhpc3RzUXVlcnkgPSAiU0VMRUNUIEVYSVNUUyAo
U0VMRUNUICogRlJPTSBUb3BGcmFtZUxpbmtEZWNvcmF0aW9uc0Zyb20gV0hFUkUgdG9Eb21haW5J
RCA9ID8gT1IgZnJvbURvbWFpbklEID0gPykiX3M7Citjb25zdGV4cHIgYXV0byBzY3JpcHRMb2Fk
RXhpc3RzUXVlcnkgPSAiU0VMRUNUIEVYSVNUUyAoU0VMRUNUICogRlJPTSBUb3BGcmFtZUxvYWRl
ZFRoaXJkUGFydHlTY3JpcHRzIFdIRVJFIHRvcEZyYW1lRG9tYWluSUQgPSA/IE9SIHN1YnJlc291
cmNlRG9tYWluSUQgPSA/KSJfczsKK2NvbnN0ZXhwciBhdXRvIHN1YkZyYW1lRXhpc3RzUXVlcnkg
PSAiU0VMRUNUIEVYSVNUUyAoU0VMRUNUICogRlJPTSBTdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21h
aW5zIFdIRVJFIHN1YkZyYW1lRG9tYWluSUQgPSA/IE9SIHRvcEZyYW1lRG9tYWluSUQgPSA/KSJf
czsKK2NvbnN0ZXhwciBhdXRvIHN1YlJlc291cmNlRXhpc3RzUXVlcnkgPSAiU0VMRUNUIEVYSVNU
UyAoU0VMRUNUICogRlJPTSBTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zIFdIRVJFIHN1
YnJlc291cmNlRG9tYWluSUQgPSA/IE9SIHRvcEZyYW1lRG9tYWluSUQgPSA/KSJfczsKK2NvbnN0
ZXhwciBhdXRvIHVuaXF1ZVJlZGlyZWN0RXhpc3RzUXVlcnkgPSAiU0VMRUNUIEVYSVNUUyAoU0VM
RUNUICogRlJPTSBTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvIFdIRVJFIHN1YnJlc291cmNl
RG9tYWluSUQgPSA/IE9SIHRvRG9tYWluSUQgPSA/KSJfczsKK2NvbnN0ZXhwciBhdXRvIG9ic2Vy
dmVkRG9tYWluc0V4aXN0c1F1ZXJ5ID0gIlNFTEVDVCBFWElTVFMgKFNFTEVDVCAqIEZST00gT2Jz
ZXJ2ZWREb21haW5zIFdIRVJFIGRvbWFpbklEID0gPykiX3M7CisKKy8vIERFTEVURSBRdWVyaWVz
Citjb25zdGV4cHIgYXV0byByZW1vdmVBbGxEYXRhUXVlcnkgPSAiREVMRVRFIEZST00gT2JzZXJ2
ZWREb21haW5zIFdIRVJFIGRvbWFpbklEID0gPyJfczsKKwogY29uc3QgY2hhciogdGFibGVzW10g
PSB7CiAgICAgIk9ic2VydmVkRG9tYWlucyIsCiAgICAgIlRvcExldmVsRG9tYWlucyIsCkBAIC0y
OTAsNiArMzAxLDEzIEBAIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZShXZWJSZXNvCiAgICAgLCBtX2dldEFsbFN1
YlN0YXRpc3RpY3NTdGF0ZW1lbnQobV9kYXRhYmFzZSwgZ2V0QWxsU3ViU3RhdGlzdGljc1VuZGVy
RG9tYWluUXVlcnkpCiAgICAgLCBtX3N0b3JhZ2VBY2Nlc3NFeGlzdHNTdGF0ZW1lbnQobV9kYXRh
YmFzZSwgc3RvcmFnZUFjY2Vzc0V4aXN0c1F1ZXJ5KQogICAgICwgbV9nZXRNb3N0UmVjZW50bHlV
cGRhdGVkVGltZXN0YW1wU3RhdGVtZW50KG1fZGF0YWJhc2UsIGdldE1vc3RSZWNlbnRseVVwZGF0
ZWRUaW1lc3RhbXBRdWVyeSkKKyAgICAsIG1fbGlua0RlY29yYXRpb25FeGlzdHNTdGF0ZW1lbnQo
bV9kYXRhYmFzZSwgbGlua0RlY29yYXRpb25FeGlzdHNRdWVyeSkKKyAgICAsIG1fc2NyaXB0TG9h
ZEV4aXN0c1N0YXRlbWVudChtX2RhdGFiYXNlLCBzY3JpcHRMb2FkRXhpc3RzUXVlcnkpCisgICAg
LCBtX3N1YkZyYW1lRXhpc3RzU3RhdGVtZW50KG1fZGF0YWJhc2UsIHN1YkZyYW1lRXhpc3RzUXVl
cnkpCisgICAgLCBtX3N1YlJlc291cmNlRXhpc3RzU3RhdGVtZW50KG1fZGF0YWJhc2UsIHN1YlJl
c291cmNlRXhpc3RzUXVlcnkpCisgICAgLCBtX3VuaXF1ZVJlZGlyZWN0RXhpc3RzU3RhdGVtZW50
KG1fZGF0YWJhc2UsIHVuaXF1ZVJlZGlyZWN0RXhpc3RzUXVlcnkpCisgICAgLCBtX29ic2VydmVk
RG9tYWluc0V4aXN0c1N0YXRlbWVudChtX2RhdGFiYXNlLCBvYnNlcnZlZERvbWFpbnNFeGlzdHNR
dWVyeSkKKyAgICAsIG1fcmVtb3ZlQWxsRGF0YVN0YXRlbWVudChtX2RhdGFiYXNlLCByZW1vdmVB
bGxEYXRhUXVlcnkpCiAgICAgLCBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCiB7CiAgICAgQVNTRVJU
KCFSdW5Mb29wOjppc01haW4oKSk7CkBAIC02MzEsNiArNjQ5LDEzIEBAIGJvb2wgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnByZXBhcmVTdGF0ZW1lbnRzKCkKICAgICAgICAg
fHwgbV9nZXRBbGxTdWJTdGF0aXN0aWNzU3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sK
ICAgICAgICAgfHwgbV9zdG9yYWdlQWNjZXNzRXhpc3RzU3RhdGVtZW50LnByZXBhcmUoKSAhPSBT
UUxJVEVfT0sKICAgICAgICAgfHwgbV9nZXRNb3N0UmVjZW50bHlVcGRhdGVkVGltZXN0YW1wU3Rh
dGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgbV9saW5rRGVjb3JhdGlv
bkV4aXN0c1N0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IG1fc2Ny
aXB0TG9hZEV4aXN0c1N0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8
IG1fc3ViRnJhbWVFeGlzdHNTdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSworICAgICAg
ICB8fCBtX3N1YlJlc291cmNlRXhpc3RzU3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sK
KyAgICAgICAgfHwgbV91bmlxdWVSZWRpcmVjdEV4aXN0c1N0YXRlbWVudC5wcmVwYXJlKCkgIT0g
U1FMSVRFX09LCisgICAgICAgIHx8IG1fb2JzZXJ2ZWREb21haW5zRXhpc3RzU3RhdGVtZW50LnBy
ZXBhcmUoKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgbV9yZW1vdmVBbGxEYXRhU3RhdGVtZW50
LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKICAgICAgICAgKSB7CiAgICAgICAgIFJFTEVBU0VfTE9H
X0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjpwcmVwYXJlU3RhdGVtZW50cyBmYWlsZWQgdG8gcHJlcGFyZSwgZXJyb3IgbWVzc2FnZTogJSIg
UFVCTElDX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTIyNDMsNiArMjI2OCwyMSBAQCB2b2lkIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjbGVhckRhdGFiYXNlQ29udGVudHMo
KQogICAgIH0KIH0KIAordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
cmVtb3ZlRGF0YUZvckRvbWFpbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluKQorewor
ICAgIGF1dG8gZG9tYWluSURUb1JlbW92ZSA9IGRvbWFpbklEKGRvbWFpbik7CisgICAgaWYgKCFk
b21haW5JRFRvUmVtb3ZlKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9yZW1vdmVBbGxE
YXRhU3RhdGVtZW50LmJpbmRJbnQoMSwgKmRvbWFpbklEVG9SZW1vdmUpICE9IFNRTElURV9PSwor
ICAgICAgICB8fCBtX3JlbW92ZUFsbERhdGFTdGF0ZW1lbnQuc3RlcCgpICE9IFNRTElURV9ET05F
KSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIl
cCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZW1vdmVEYXRhRm9yRG9t
YWluIGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNl
Lmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQor
ICAgIAorICAgIHJlc2V0U3RhdGVtZW50KG1fcmVtb3ZlQWxsRGF0YVN0YXRlbWVudCk7Cit9CisK
IHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsZWFyKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoIVJ1
bkxvb3A6OmlzTWFpbigpKTsKQEAgLTI4ODksNiArMjkyOSw0NSBAQCB2b2lkIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZXNvdXJjZVRvU3RyaW5nKFN0cmluZ0J1aWxkZXIm
IGJ1aWxkZQogICAgIHJlc2V0U3RhdGVtZW50KG1fZ2V0UmVzb3VyY2VEYXRhQnlEb21haW5OYW1l
U3RhdGVtZW50KTsKIH0KIAorYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZTo6ZG9tYWluSURFeGlzdHNJbkRhdGFiYXNlKGludCBkb21haW5JRCkKK3sKKyAgICBpZiAobV9s
aW5rRGVjb3JhdGlvbkV4aXN0c1N0YXRlbWVudC5iaW5kSW50KDEsIGRvbWFpbklEKSAhPSBTUUxJ
VEVfT0sKKyAgICAgICAgfHwgbV9saW5rRGVjb3JhdGlvbkV4aXN0c1N0YXRlbWVudC5iaW5kSW50
KDIsIGRvbWFpbklEKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgbV9zY3JpcHRMb2FkRXhpc3Rz
U3RhdGVtZW50LmJpbmRJbnQoMSwgZG9tYWluSUQpICE9IFNRTElURV9PSworICAgICAgICB8fCBt
X3NjcmlwdExvYWRFeGlzdHNTdGF0ZW1lbnQuYmluZEludCgyLCBkb21haW5JRCkgIT0gU1FMSVRF
X09LCisgICAgICAgIHx8IG1fc3ViRnJhbWVFeGlzdHNTdGF0ZW1lbnQuYmluZEludCgxLCBkb21h
aW5JRCkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IG1fc3ViRnJhbWVFeGlzdHNTdGF0ZW1lbnQu
YmluZEludCgyLCBkb21haW5JRCkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IG1fc3ViUmVzb3Vy
Y2VFeGlzdHNTdGF0ZW1lbnQuYmluZEludCgxLCBkb21haW5JRCkgIT0gU1FMSVRFX09LCisgICAg
ICAgIHx8IG1fc3ViUmVzb3VyY2VFeGlzdHNTdGF0ZW1lbnQuYmluZEludCgyLCBkb21haW5JRCkg
IT0gU1FMSVRFX09LCisgICAgICAgIHx8IG1fdW5pcXVlUmVkaXJlY3RFeGlzdHNTdGF0ZW1lbnQu
YmluZEludCgxLCBkb21haW5JRCkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IG1fdW5pcXVlUmVk
aXJlY3RFeGlzdHNTdGF0ZW1lbnQuYmluZEludCgyLCBkb21haW5JRCkgIT0gU1FMSVRFX09LCisg
ICAgICAgIHx8IG1fb2JzZXJ2ZWREb21haW5zRXhpc3RzU3RhdGVtZW50LmJpbmRJbnQoMSwgZG9t
YWluSUQpICE9IFNRTElURV9PSykgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExP
V0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZTo6ZG9tYWluSURFeGlzdHNJbkRhdGFiYXNlIGZhaWxlZCB0byBiaW5kLCBlcnJvciBtZXNzYWdl
OiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwor
ICAgIGlmIChtX2xpbmtEZWNvcmF0aW9uRXhpc3RzU3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxJVEVf
Uk9XCisgICAgICAgIHx8IG1fc2NyaXB0TG9hZEV4aXN0c1N0YXRlbWVudC5zdGVwKCkgIT0gU1FM
SVRFX1JPVworICAgICAgICB8fCBtX3N1YkZyYW1lRXhpc3RzU3RhdGVtZW50LnN0ZXAoKSAhPSBT
UUxJVEVfUk9XCisgICAgICAgIHx8IG1fc3ViUmVzb3VyY2VFeGlzdHNTdGF0ZW1lbnQuc3RlcCgp
ICE9IFNRTElURV9ST1cKKyAgICAgICAgfHwgbV91bmlxdWVSZWRpcmVjdEV4aXN0c1N0YXRlbWVu
dC5zdGVwKCkgIT0gU1FMSVRFX1JPVworICAgICAgICB8fCBtX29ic2VydmVkRG9tYWluc0V4aXN0
c1N0YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRFX1JPVykgeworICAgICAgICBSRUxFQVNFX0xPR19F
UlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6ZG9tYWluSURFeGlzdHNJbkRhdGFiYXNlIGZhaWxlZCB0byBzdGVwLCBl
cnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNn
KCkpOworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKyAgICAKKyAgICByZXNldFN0YXRlbWVudChtX2xpbmtEZWNvcmF0aW9uRXhpc3Rz
U3RhdGVtZW50KTsKKyAgICByZXNldFN0YXRlbWVudChtX3NjcmlwdExvYWRFeGlzdHNTdGF0ZW1l
bnQpOworICAgIHJlc2V0U3RhdGVtZW50KG1fc3ViRnJhbWVFeGlzdHNTdGF0ZW1lbnQpOworICAg
IHJlc2V0U3RhdGVtZW50KG1fc3ViUmVzb3VyY2VFeGlzdHNTdGF0ZW1lbnQpOworICAgIHJlc2V0
U3RhdGVtZW50KG1fdW5pcXVlUmVkaXJlY3RFeGlzdHNTdGF0ZW1lbnQpOworICAgIHJlc2V0U3Rh
dGVtZW50KG1fb2JzZXJ2ZWREb21haW5zRXhpc3RzU3RhdGVtZW50KTsKKworICAgIHJldHVybiBt
X2xpbmtEZWNvcmF0aW9uRXhpc3RzU3RhdGVtZW50LmdldENvbHVtbkludCgwKSB8fCBtX3Njcmlw
dExvYWRFeGlzdHNTdGF0ZW1lbnQuZ2V0Q29sdW1uSW50KDApIHx8IG1fc3ViRnJhbWVFeGlzdHNT
dGF0ZW1lbnQuZ2V0Q29sdW1uSW50KDApIHx8IG1fc3ViUmVzb3VyY2VFeGlzdHNTdGF0ZW1lbnQu
Z2V0Q29sdW1uSW50KDApIHx8IG1fdW5pcXVlUmVkaXJlY3RFeGlzdHNTdGF0ZW1lbnQuZ2V0Q29s
dW1uSW50KDApIHx8IG1fb2JzZXJ2ZWREb21haW5zRXhpc3RzU3RhdGVtZW50LmdldENvbHVtbklu
dCgwKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaAppbmRleCAwOTc3YzUx
YTk4N2U0NTAyYjI1MTYyNjAyNWY0NzA5ZTVmZmY3NDNhLi40MzAzNTgzODA0ODZlNmYwOWIxNzQ3
MTcyNWUxODI2MWFiZWYwYmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmUuaApAQCAtMTM4LDYgKzEzOCw4IEBAIHB1YmxpYzoKICAgICBT
ZWNvbmRzIGdldE1vc3RSZWNlbnRseVVwZGF0ZWRUaW1lc3RhbXAoY29uc3QgUmVnaXN0cmFibGVE
b21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYpIGNvbnN0OwogICAgIGJvb2wgaXNOZXdSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VGaWxlKCkgY29uc3QgeyByZXR1cm4gbV9pc05ld1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZUZpbGU7IH0KICAgICB2b2lkIHNldElzTmV3UmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlRmlsZShib29sIGlzTmV3UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlRmlsZSkgeyBtX2lzTmV3UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlRmlsZSA9IGlzTmV3UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlRmlsZTsgfQorICAg
IHZvaWQgcmVtb3ZlRGF0YUZvckRvbWFpbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpIG92ZXJy
aWRlOworICAgIGJvb2wgZG9tYWluSURFeGlzdHNJbkRhdGFiYXNlKGludCk7CiAKIHByaXZhdGU6
CiAgICAgdm9pZCBvcGVuSVRQRGF0YWJhc2UoKTsKQEAgLTI2Myw2ICsyNjUsMTMgQEAgcHJpdmF0
ZToKICAgICBtdXRhYmxlIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCBtX2dldEFsbFN1YlN0YXRp
c3RpY3NTdGF0ZW1lbnQ7CiAgICAgbXV0YWJsZSBXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQgbV9z
dG9yYWdlQWNjZXNzRXhpc3RzU3RhdGVtZW50OwogICAgIG11dGFibGUgV2ViQ29yZTo6U1FMaXRl
U3RhdGVtZW50IG1fZ2V0TW9zdFJlY2VudGx5VXBkYXRlZFRpbWVzdGFtcFN0YXRlbWVudDsKKyAg
ICBtdXRhYmxlIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCBtX2xpbmtEZWNvcmF0aW9uRXhpc3Rz
U3RhdGVtZW50OworICAgIG11dGFibGUgV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50IG1fc2NyaXB0
TG9hZEV4aXN0c1N0YXRlbWVudDsKKyAgICBtdXRhYmxlIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVu
dCBtX3N1YkZyYW1lRXhpc3RzU3RhdGVtZW50OworICAgIG11dGFibGUgV2ViQ29yZTo6U1FMaXRl
U3RhdGVtZW50IG1fc3ViUmVzb3VyY2VFeGlzdHNTdGF0ZW1lbnQ7CisgICAgbXV0YWJsZSBXZWJD
b3JlOjpTUUxpdGVTdGF0ZW1lbnQgbV91bmlxdWVSZWRpcmVjdEV4aXN0c1N0YXRlbWVudDsKKyAg
ICBtdXRhYmxlIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCBtX29ic2VydmVkRG9tYWluc0V4aXN0
c1N0YXRlbWVudDsKKyAgICBtdXRhYmxlIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCBtX3JlbW92
ZUFsbERhdGFTdGF0ZW1lbnQ7CiAgICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAgICAg
Ym9vbCBtX2lzTmV3UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlRmlsZSB7IGZhbHNlIH07
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3Jl
LmNwcAppbmRleCA2M2U2M2Y5OTRhZjUzNTkwNDVlNTM1MzgwYjNmZjViOGQyMjE3YzcxLi42NTA2
Nzk3MTk2MjJhZjEyZmFkNWMxNjJmMmNkZGNhYWFiOTBlNDc2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01l
bW9yeVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZp
ZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcApAQCAtMTA0Miw2ICsxMDQy
LDIzIEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpzZXRMYXN0U2Vl
bihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tCiAgICAgc3RhdGlzdGljcy5sYXN0U2VlbiA9
IFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhzZWNvbmRzLnNlY29uZHMoKSk7CiB9CiAKK3ZvaWQg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpyZW1vdmVEYXRhRm9yRG9tYWluKGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4pCit7CisgICAgbV9yZXNvdXJjZVN0YXRpc3Rp
Y3NNYXAucmVtb3ZlKGRvbWFpbik7CisgICAgCisgICAgZm9yIChhdXRvJiBzdGF0aXN0aWMgOiBt
X3Jlc291cmNlU3RhdGlzdGljc01hcCkgeworICAgICAgICBzdGF0aXN0aWMudmFsdWUudG9wRnJh
bWVVbmlxdWVSZWRpcmVjdHNUby5yZW1vdmUoZG9tYWluKTsKKyAgICAgICAgc3RhdGlzdGljLnZh
bHVlLnRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG9TaW5jZVNhbWVTaXRlU3RyaWN0RW5mb3JjZW1l
bnQucmVtb3ZlKGRvbWFpbik7CisgICAgICAgIHN0YXRpc3RpYy52YWx1ZS50b3BGcmFtZVVuaXF1
ZVJlZGlyZWN0c0Zyb20ucmVtb3ZlKGRvbWFpbik7CisgICAgICAgIHN0YXRpc3RpYy52YWx1ZS50
b3BGcmFtZUxpbmtEZWNvcmF0aW9uc0Zyb20ucmVtb3ZlKGRvbWFpbik7CisgICAgICAgIHN0YXRp
c3RpYy52YWx1ZS50b3BGcmFtZUxvYWRlZFRoaXJkUGFydHlTY3JpcHRzLnJlbW92ZShkb21haW4p
OworICAgICAgICBzdGF0aXN0aWMudmFsdWUuc3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWlucy5y
ZW1vdmUoZG9tYWluKTsKKyAgICAgICAgc3RhdGlzdGljLnZhbHVlLnN1YnJlc291cmNlVW5kZXJU
b3BGcmFtZURvbWFpbnMucmVtb3ZlKGRvbWFpbik7CisgICAgICAgIHN0YXRpc3RpYy52YWx1ZS5z
dWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvLnJlbW92ZShkb21haW4pOworICAgICAgICBzdGF0
aXN0aWMudmFsdWUuc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tLnJlbW92ZShkb21haW4p
OworICAgIH0KK30KKwogdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OnNl
dFByZXZhbGVudFJlc291cmNlKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4pCiB7CiAg
ICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0
b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmgKaW5kZXggOGQ2NzY2NGUwMGQ2YjMxYzc0MWY4NzI4
MjQxYTdjODZkOTMyZDYxMi4uMjQ2ZTc2NzFlYTE4NTA1Mjk1N2UzMjIwZjdiZjExYzVlMjRiMDhi
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUu
aApAQCAtMTEyLDYgKzExMiw3IEBAIHB1YmxpYzoKICAgICBib29sIGhhc0hhZFVzZXJJbnRlcmFj
dGlvbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIE9wZXJhdGluZ0RhdGVzV2luZG93KSBvdmVy
cmlkZTsKIAogICAgIHZvaWQgc2V0TGFzdFNlZW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBT
ZWNvbmRzKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlbW92ZURhdGFGb3JEb21haW4oY29uc3QgUmVn
aXN0cmFibGVEb21haW4mKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBzdGF0aWMgYm9vbCBz
aG91bGRCbG9ja0FuZEtlZXBDb29raWVzKGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAppbmRleCBlZjRjNjZmODdh
ODZiZWQ5ZTM2Nzk2ZTQ5MmJhNTk0NWFkNWEwMDRkLi40NDgzMzNjNDlmNjNiMmYxOTIwYjg2ZTMz
MjA1ODdmY2UzNWI2OTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5oCkBAIC0xODQsNiArMTg0LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHNldExh
c3RTZWVuKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBwcmltYXJ5RG9tYWluLCBTZWNvbmRzKSA9
IDA7CiAKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRGF0YUZvckRvbWFpbihjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYpID0gMDsKKyAgICAKICAgICB2b2lkIGRpZENyZWF0ZU5ldHdvcmtQcm9jZXNz
KCk7CiAKICAgICBjb25zdCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUmIHN0b3JlKCkg
Y29uc3QgeyByZXR1cm4gbV9zdG9yZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCAxZWY4YWNkYjU1NTBhOGY2ZmFkZmY2Y2MxOGYwNGFj
NzhhZDEwMTQ2Li5iZmU5YmMzMjI4ZjU5MDE1ZDZiYjlkYzEyZTI2NzJiZmYwMzcyOWFhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcApAQCAtMTE1
NSw2ICsxMTU1LDIzIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjbGVh
ckluTWVtb3J5RXBoZW1lcmFsKENvbXBsZXRpb25IYW5kbGVyPHZvCiAgICAgY29tcGxldGlvbkhh
bmRsZXIoKTsKIH0KIAordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmRvbWFp
bklERXhpc3RzSW5EYXRhYmFzZShpbnQgZG9tYWluSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFp
bigpKTsKKworICAgIHBvc3RUYXNrKFt0aGlzLCBkb21haW5JRCwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCFt
X3N0YXRpc3RpY3NTdG9yZSB8fCAhaXM8UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmU+KCptX3N0YXRpc3RpY3NTdG9yZSkpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KGZhbHNlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBhdXRvJiBk
YXRhYmFzZVN0b3JlID0gZG93bmNhc3Q8UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmU+KCptX3N0YXRpc3RpY3NTdG9yZSk7CisgICAgICAgIGJvb2wgZG9tYWluSURFeGlzdHMgPSBk
YXRhYmFzZVN0b3JlLmRvbWFpbklERXhpc3RzSW5EYXRhYmFzZShkb21haW5JRCk7CisgICAgICAg
IHBvc3RUYXNrUmVwbHkoW2RvbWFpbklERXhpc3RzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoZG9tYWluSURFeGlzdHMpOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKwogdm9p
ZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFRpbWVUb0xpdmVVc2VySW50ZXJh
Y3Rpb24oU2Vjb25kcyBzZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKQEAgLTEyODMs
NiArMTMwMCwxNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aW52YWxp
ZGF0ZUFuZENhbmNlbCgpCiAgICAgbV9uZXR3b3JrU2Vzc2lvbiA9IG51bGxwdHI7CiB9CiAKK3Zv
aWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZW1vdmVEYXRhRm9yRG9tYWluKFJl
Z2lzdHJhYmxlRG9tYWluIGRvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQoreworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgcG9z
dFRhc2soW3RoaXMsIGRvbWFpbiA9IFdURk1vdmUoZG9tYWluKSwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKG1f
c3RhdGlzdGljc1N0b3JlKQorICAgICAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUtPnJlbW92ZURh
dGFGb3JEb21haW4oZG9tYWluKTsKKworICAgICAgICBwb3N0VGFza1JlcGx5KFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKKyAgICB9KTsKK30KKwogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OmRlbGV0ZUFuZFJlc3RyaWN0V2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURv
bWFpbnMoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBSZWdpc3RyYWJsZURv
bWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZvciYmIGRvbWFpbnNUb0RlbGV0ZUFu
ZFJlc3RyaWN0V2Vic2l0ZURhdGFGb3IsIGJvb2wgc2hvdWxkTm90aWZ5UGFnZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKaW5kZXggMzAzMGE0ZDg2MDJj
ODY1YzU4MzgyNmRkMmFiZDBjNjQ0OGM2ZWQyNi4uZGU0MTU5Yzk3M2E4MzBjZmNiZjQ2ZDQ3NDYw
NWMxMDFmMzNmM2E1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUuaApAQCAtMjE4LDYgKzIxOCw3IEBAIHN0cnVjdCBUaGlyZFBhcnR5RGF0YSB7CiAgICAg
dm9pZCBsb2dVc2VySW50ZXJhY3Rpb24oY29uc3QgVG9wRnJhbWVEb21haW4mLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgbG9nQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVj
b3JhdGlvbihjb25zdCBOYXZpZ2F0ZWRGcm9tRG9tYWluJiwgY29uc3QgTmF2aWdhdGVkVG9Eb21h
aW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgY2xlYXJVc2VySW50
ZXJhY3Rpb24oY29uc3QgVG9wRnJhbWVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOworICAgIHZvaWQgcmVtb3ZlRGF0YUZvckRvbWFpbihjb25zdCBSZWdpc3RyYWJsZURvbWFp
biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGRlbGV0ZUFuZFJlc3Ry
aWN0V2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoT3B0aW9uU2V0PFdlYnNpdGVEYXRh
VHlwZT4sIFJlZ2lzdHJhYmxlRG9tYWluc1RvRGVsZXRlT3JSZXN0cmljdFdlYnNpdGVEYXRhRm9y
JiYsIGJvb2wgc2hvdWxkTm90aWZ5UGFnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBI
YXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYpPiYmKTsKICAgICB2b2lkIHJlZ2lzdHJhYmxlRG9t
YWluc1dpdGhXZWJzaXRlRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgYm9vbCBzaG91
bGROb3RpZnlQYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc2hTZXQ8UmVnaXN0cmFibGVE
b21haW4+JiYpPiYmKTsKICAgICBTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCBncmFudFN0b3JhZ2VB
Y2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIE9wdGlv
bmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsK
QEAgLTI1NCw2ICsyNTUsNyBAQCBzdHJ1Y3QgVGhpcmRQYXJ0eURhdGEgewogICAgIHZvaWQgc2No
ZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChTaG91bGRHcmFuZGZhdGhlclN0YXRpc3Rp
Y3MsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzY2hlZHVsZUNsZWFy
SW5NZW1vcnlBbmRQZXJzaXN0ZW50KFdhbGxUaW1lIG1vZGlmaWVkU2luY2UsIFNob3VsZEdyYW5k
ZmF0aGVyU3RhdGlzdGljcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lk
IGNsZWFySW5NZW1vcnlFcGhlbWVyYWwoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAg
ICB2b2lkIGRvbWFpbklERXhpc3RzSW5EYXRhYmFzZShpbnQgZG9tYWluSUQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogCiAgICAgdm9pZCBzZXRUaW1lVG9MaXZlVXNlckludGVy
YWN0aW9uKFNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBz
ZXRNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwoU2Vjb25kcywgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggZjYyZTk4NjEwZGQyZTc0ZWZjZjBjODk5NDc1ZTZkMDk1
YjhmOTE2Yi4uZjhjYTYzZDA2YjgwMTNkYTkwY2YyNDE5OGY1MzdhOWM1MzVkMjAwZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTk5
MCw2ICs5OTAsMTkgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0TGFzdFNlZW4oUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWEKICAgICB9CiB9CiAKK3ZvaWQg
TmV0d29ya1Byb2Nlc3M6OmRvbWFpbklERXhpc3RzSW5EYXRhYmFzZShQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIGludCBkb21haW5JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlz
LT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3Mo
KSkKKyAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmRvbWFpbklERXhpc3RzSW5E
YXRhYmFzZShkb21haW5JRCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KGZhbHNlKTsKKyAgICB9Cit9CisKIHZvaWQgTmV0d29ya1Byb2Nlc3M6Om1lcmdlU3RhdGlzdGlj
Rm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiBkb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbjEsIGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbjIsIFNlY29uZHMgbGFzdFNlZW4s
IGJvb2wgaGFkVXNlckludGVyYWN0aW9uLCBTZWNvbmRzIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rp
b24sIGJvb2wgaXNHcmFuZGZhdGhlcmVkLCBib29sIGlzUHJldmFsZW50LCBib29sIGlzVmVyeVBy
ZXZhbGVudCwgdW5zaWduZWQgZGF0YVJlY29yZHNSZW1vdmVkLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNz
aW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewpAQCAtMTYwNCw3ICsxNjE3
LDcgQEAgc3RhdGljIHZvaWQgY2xlYXJEaXNrQ2FjaGVFbnRyaWVzKE5ldHdvcmtDYWNoZTo6Q2Fj
aGUqIGNhY2hlLCBjb25zdCBWZWN0b3I8U2VjdXIKICAgICB9KTsKIH0KIAotdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBlcywgY29uc3Qg
VmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4mIG9yaWdpbkRhdGFzLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgY29va2llSG9zdE5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgSFNUU0NhY2hlSG9z
dE5hbWVzLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxl
dGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25T
ZXQ8V2Vic2l0ZURhdGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzLCBjb25zdCBWZWN0b3I8U2VjdXJp
dHlPcmlnaW5EYXRhPiYgb3JpZ2luRGF0YXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBjb29raWVI
b3N0TmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBIU1RTQ2FjaGVIb3N0TmFtZXMsIGNvbnN0
IFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4mIHJlZ2lzdHJhYmxlRG9tYWlucywgQ2FsbGJhY2tJ
RCBjYWxsYmFja0lEKQogewogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNp
dGVEYXRhVHlwZTo6Q29va2llcykpIHsKICAgICAgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCkBAIC0xNjc4LDYgKzE2OTEsMTcg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW8KICAgICAgICAgfQogICAgICAgICBXZWJDb3JlOjpD
cmVkZW50aWFsU3RvcmFnZTo6cmVtb3ZlU2Vzc2lvbkNyZWRlbnRpYWxzV2l0aE9yaWdpbnMob3Jp
Z2luRGF0YXMpOwogICAgIH0KKworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1Mp
CisgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzKSkgeworICAgICAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24g
PSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgICAgICBmb3IgKGF1
dG8mIGRvbWFpbiA6IHJlZ2lzdHJhYmxlRG9tYWlucykgeworICAgICAgICAgICAgICAgIGlmIChh
dXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9h
ZFN0YXRpc3RpY3MoKSkKKyAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy0+cmVtb3ZlRGF0YUZvckRvbWFpbihkb21haW4sIFtjbGVhclRhc2tzSGFuZGxlciA9IGNsZWFy
VGFza3NIYW5kbGVyLmNvcHlSZWYoKV0geyB9KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgIH0KKyNlbmRpZgogfQogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
aCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCA2
ZDg2Y2E5NDQwOWJiMGY5ZDkzMzhkZmE1NmQ2ZDI3YmNlZTE4ZjMxLi5kYTZhZDdhODc4YTdhOTkx
YjA1YWI3MzhlM2I5MDdkZDk5MGJmODlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0yNDEsNiArMjQxLDcgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoUEFMOjpTZXNzaW9uSUQs
IFNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRHcmFu
ZGZhdGhlcmluZ1RpbWUoUEFMOjpTZXNzaW9uSUQsIFNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRMYXN0U2VlbihQQUw6OlNlc3Npb25JRCwgY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mLCBTZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OworICAgIHZvaWQgZG9tYWluSURFeGlzdHNJbkRhdGFiYXNlKFBBTDo6U2Vzc2lvbklELCBpbnQg
ZG9tYWluSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgbWVy
Z2VTdGF0aXN0aWNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiB0b3BGcmFtZURvbWFpbjEsIGNvbnN0IFRvcEZy
YW1lRG9tYWluJiB0b3BGcmFtZURvbWFpbjIsIFNlY29uZHMgbGFzdFNlZW4sIGJvb2wgaGFkVXNl
ckludGVyYWN0aW9uLCBTZWNvbmRzIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb24sIGJvb2wgaXNH
cmFuZGZhdGhlcmVkLCBib29sIGlzUHJldmFsZW50LCBib29sIGlzVmVyeVByZXZhbGVudCwgdW5z
aWduZWQgZGF0YVJlY29yZHNSZW1vdmVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwog
ICAgIHZvaWQgc2V0TWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKFBBTDo6U2Vz
c2lvbklELCBTZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQg
c2V0Tm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZChQQUw6OlNlc3Npb25JRCwg
Ym9vbCB2YWx1ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKQEAgLTM5OSw3ICs0MDAs
NyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBmZXRjaFdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklE
LCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhRmV0Y2hP
cHRpb24+LCBDYWxsYmFja0lEKTsKICAgICB2b2lkIGRlbGV0ZVdlYnNpdGVEYXRhKFBBTDo6U2Vz
c2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgV2FsbFRpbWUgbW9kaWZpZWRTaW5j
ZSwgQ2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoUEFM
OjpTZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBjb25zdCBWZWN0b3I8V2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYgb3JpZ2lucywgY29uc3QgVmVjdG9yPFN0cmluZz4m
IGNvb2tpZUhvc3ROYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIEhTVFNDYWNoZUhvc3RuYW1l
cywgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoUEFM
OjpTZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBjb25zdCBWZWN0b3I8V2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYgb3JpZ2lucywgY29uc3QgVmVjdG9yPFN0cmluZz4m
IGNvb2tpZUhvc3ROYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIEhTVFNDYWNoZUhvc3RuYW1l
cywgY29uc3QgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYsIENhbGxiYWNrSUQpOwogCiAgICAg
dm9pZCBjbGVhckNhY2hlZENyZWRlbnRpYWxzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGM3ZWJk
ZjBhZjE3YjU2ODIxNjk2ZmExODYxZDczY2YxM2IwMmViZjMuLjVlYWJhMzdhZTBiYjkyMzU2NWQw
MDgxMWM5NjRkNTM3ODk2NjdlMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtNDUsNyArNDUsNyBAQCBt
ZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAKICAgICBGZXRjaFdl
YnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYktpdDo6V2Vi
c2l0ZURhdGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzLCBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRl
RGF0YUZldGNoT3B0aW9uPiBmZXRjaE9wdGlvbnMsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFj
a0lEKQogICAgIERlbGV0ZVdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0
aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzLCBXYWxsVGlt
ZSBtb2RpZmllZFNpbmNlLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKLSAgICBEZWxl
dGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25T
ZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU+IHdlYnNpdGVEYXRhVHlwZXMsIFZlY3RvcjxXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IG9yaWdpbnMsIFZlY3RvcjxTdHJpbmc+IGNvb2tpZUhv
c3ROYW1lcywgVmVjdG9yPFN0cmluZz4gSFNUU0NhY2hlSG9zdE5hbWVzLCBXZWJLaXQ6OkNhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKKyAgICBEZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU+IHdl
YnNpdGVEYXRhVHlwZXMsIFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IG9yaWdp
bnMsIFZlY3RvcjxTdHJpbmc+IGNvb2tpZUhvc3ROYW1lcywgVmVjdG9yPFN0cmluZz4gSFNUU0Nh
Y2hlSG9zdE5hbWVzLCBWZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IHJlZ2lzdHJh
YmxlRG9tYWlucywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAKICAgICBEb3dubG9h
ZFJlcXVlc3QoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93
bmxvYWRJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIGVudW06Ym9vbCBPcHRp
b25hbDxXZWJLaXQ6Ok5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluLCBTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWUpCiAgICAgUmVzdW1lRG93bmxv
YWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJ
RCwgSVBDOjpEYXRhUmVmZXJlbmNlIHJlc3VtZURhdGEsIFN0cmluZyBwYXRoLCBXZWJLaXQ6OlNh
bmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQpAQCAtMTA0LDYg
KzEwNCw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAg
ICBJc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZWRpcmVjdGVkRnJvbURvbWFpbiwgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4gcmVkaXJlY3RlZFRvRG9tYWluKSAtPiAoYm9vbCBpc1JlZGlyZWN0
aW5nVG8pIEFzeW5jCiAgICAgSXNSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVyKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gc3ViRnJhbWVEb21haW4s
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvcEZyYW1lRG9tYWluKSAtPiAoYm9vbCBpc1N1
YmZyYW1lVW5kZXIpIEFzeW5jCiAgICAgSXNSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gc3VicmVz
b3VyY2VEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvcEZyYW1lRG9tYWluKSAt
PiAoYm9vbCBpc1N1YnJlc291cmNlVW5kZXIpIEFzeW5jCisgICAgRG9tYWluSURFeGlzdHNJbkRh
dGFiYXNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgaW50IGRvbWFpbklEKSAtPiAoYm9vbCBl
eGlzdHMpIEFzeW5jCiAgICAgTG9nRnJhbWVOYXZpZ2F0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdGFyZ2V0RG9tYWluLCBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4gc291cmNlRG9tYWluLCBib29sIGlzUmVkaXJlY3QsIGJvb2wgaXNNYWluRnJhbWUsIFNlY29u
ZHMgZGVsYXlBZnRlck1haW5GcmFtZURvY3VtZW50TG9hZCwgYm9vbCB3YXNQb3RlbnRpYWxseUlu
aXRpYXRlZEJ5VXNlcikKICAgICBMb2dVc2VySW50ZXJhY3Rpb24oUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbikgLT4gKCkg
QXN5bmMKICAgICBSZXNldFBhcmFtZXRlcnNUb0RlZmF1bHRWYWx1ZXMoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklEKSAtPiAoKSBBc3luYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKaW5kZXggNjU3NmU2Zjc4ZTQ3NWUy
NTY5ZmMzOTczMjUxYTVmODY1OGVlMzhjOC4uZjMwMjkwYzBmYjM3Mzg1ZTEwNDA5MjU1ZTk2YTNl
NjBhNzgwMTE5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCkBAIC02Niw2ICs2NiwzMCBAQCBXS1dlYnNpdGVE
YXRhU3RvcmVSZWYgV0tXZWJzaXRlRGF0YVN0b3JlQ3JlYXRlV2l0aENvbmZpZ3VyYXRpb24oV0tX
ZWJzaXRlRGF0YVN0bwogICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKCZXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmU6OmNyZWF0ZSgqV2ViS2l0Ojp0b0ltcGwoY29uZmlndXJhdGlvbiksIHNlc3Npb25J
RCkubGVha1JlZigpKTsKIH0KIAordm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVJVFBEYXRh
Rm9yRG9tYWluKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVm
IGhvc3QsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUlUUERhdGFGb3JE
b21haW5GdW5jdGlvbiBjYWxsYmFjaykKK3sKKyAgICBXZWJLaXQ6OldlYnNpdGVEYXRhUmVjb3Jk
IGRhdGFSZWNvcmQ7CisgICAgZGF0YVJlY29yZC50eXBlcy5hZGQoV2ViS2l0OjpXZWJzaXRlRGF0
YVR5cGU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3MpOworICAgIGRhdGFSZWNvcmQuZGlzcGxheU5h
bWUgPSBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCk7CisgICAgVmVjdG9yPFdlYktpdDo6
V2Vic2l0ZURhdGFSZWNvcmQ+IGRhdGFSZWNvcmRzID0geyBXVEZNb3ZlKGRhdGFSZWNvcmQpIH07
CisKKyAgICBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcyA9IFdl
YktpdDo6V2Vic2l0ZURhdGFUeXBlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOworICAgIFdlYktp
dDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnJlbW92ZURhdGEoZGF0YVR5cGVzLCBkYXRhUmVjb3Jk
cywgW2NvbnRleHQsIGNhbGxiYWNrXSB7CisgICAgICAgIGNhbGxiYWNrKGNvbnRleHQpOworICAg
IH0pOworfQorCit2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZURvZXNTdGF0aXN0aWNzRG9tYWluSURF
eGlzdEluRGF0YWJhc2UoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgaW50IGRv
bWFpbklELCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVEb2VzU3RhdGlzdGljc0Rv
bWFpbklERXhpc3RJbkRhdGFiYXNlRnVuY3Rpb24gY2FsbGJhY2spCit7CisjaWYgRU5BQkxFKFJF
U09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYp
LT5kb21haW5JREV4aXN0c0luRGF0YWJhc2UoZG9tYWluSUQsIFtjb250ZXh0LCBjYWxsYmFja10o
Ym9vbCBleGlzdHMpIHsKKyAgICAgICAgY2FsbGJhY2soZXhpc3RzLCBjb250ZXh0KTsKKyAgICB9
KTsKKyNlbHNlCisgICAgY2FsbGJhY2soZmFsc2UsIGNvbnRleHQpOworI2VuZGlmCit9CisKIHZv
aWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgYm9vbCBlbmFibGUpCiB7CiAgICAgYXV0
byogd2Vic2l0ZURhdGFTdG9yZSA9IFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVS
ZWYuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJl
Zi5oCmluZGV4IGU1YjhiZWRhZGZlZDhhYzI3NzU4MWFhZThkYmU0MGM2NzcxNTljNmQuLjAxODQ0
ZmQwZjFmOGZmNmE1YTY4OWNjNjQxODEwMTBhNjEzYTU5ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oCkBAIC0xMzYs
NiArMTM2LDExIEBAIHR5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUZldGNo
Q2FjaGVSZW1vdmFsRnVuY3Rpb24pKHZvaWQqIGZ1bmN0aW9uCiBXS19FWFBPUlQgdm9pZCBXS1dl
YnNpdGVEYXRhU3RvcmVSZW1vdmVGZXRjaENhY2hlRm9yT3JpZ2luKFdLV2Vic2l0ZURhdGFTdG9y
ZVJlZiBkYXRhU3RvcmVSZWYsIFdLU2VjdXJpdHlPcmlnaW5SZWYgb3JpZ2luLCB2b2lkKiBjb250
ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVGZXRjaENhY2hlUmVtb3ZhbEZ1bmN0aW9uIGNh
bGxiYWNrKTsKIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUFsbEZldGNo
Q2FjaGVzKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHZvaWQqIGNvbnRleHQs
IFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUZldGNoQ2FjaGVSZW1vdmFsRnVuY3Rpb24gY2FsbGJh
Y2spOwogCit0eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVJVFBEYXRhRm9y
RG9tYWluRnVuY3Rpb24pKHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7CitXS19FWFBPUlQgdm9pZCBX
S1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVJVFBEYXRhRm9yRG9tYWluKFdLV2Vic2l0ZURhdGFTdG9y
ZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIG9yaWdpbiwgdm9pZCogY29udGV4dCwgV0tX
ZWJzaXRlRGF0YVN0b3JlUmVtb3ZlSVRQRGF0YUZvckRvbWFpbkZ1bmN0aW9uIGNhbGxiYWNrKTsK
K3R5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZURvZXNTdGF0aXN0aWNzRG9tYWluSURF
eGlzdEluRGF0YWJhc2VGdW5jdGlvbikoYm9vbCBkb21haW5FeGlzdHNJbkRhdGFiYXNlLCB2b2lk
KiBmdW5jdGlvbkNvbnRleHQpOworV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlRG9l
c1N0YXRpc3RpY3NEb21haW5JREV4aXN0SW5EYXRhYmFzZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYg
ZGF0YVN0b3JlUmVmLCBpbnQgZG9tYWluSUQsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFT
dG9yZURvZXNTdGF0aXN0aWNzRG9tYWluSURFeGlzdEluRGF0YWJhc2VGdW5jdGlvbiBjYWxsYmFj
ayk7CisKIHR5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUFsbFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25zQ2FsbGJhY2spKHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7CiBXS19F
WFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVBbGxTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9ucyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCB2b2lkKiBjb250ZXh0
LCBXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVBbGxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uc0Nh
bGxiYWNrIGNhbGxiYWNrKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggMTNhNzZhN2IxYTMwYzIwMjVm
YzRiYTU4NGE3Zjg2MGZmNmI5NDQ5MS4uMDBlMDEzZTIwMDM2OThlMDJhN2E0NGE4OWYxOGU0OGE0
OGQ5NjQwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC0xOTgsNyArMTk4LDcgQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpkZWxldGVXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IE9wdGlvblNldDwKICAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6RGVsZXRlV2Vi
c2l0ZURhdGEoc2Vzc2lvbklELCBkYXRhVHlwZXMsIG1vZGlmaWVkU2luY2UsIGNhbGxiYWNrSUQp
LCAwKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkZWxldGVXZWJzaXRlRGF0YUZv
ck9yaWdpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFU
eXBlPiBkYXRhVHlwZXMsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+
JiBvcmlnaW5zLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgY29va2llSG9zdE5hbWVzLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgSFNUU0NhY2hlSG9zdE5hbWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRlbGV0
ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNl
dDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YT4mIG9yaWdpbnMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBjb29raWVIb3N0
TmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBIU1RTQ2FjaGVIb3N0TmFtZXMsIGNvbnN0IFZl
Y3RvcjxSZWdpc3RyYWJsZURvbWFpbj4mIHJlZ2lzdHJhYmxlRG9tYWlucywgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChjYW5TZW5k
TWVzc2FnZSgpKTsKIApAQCAtMjE0LDcgKzIxNCw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94
eTo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwK
ICAgICAgICAgUkVMRUFTRV9MT0dfSUYoc2Vzc2lvbklELmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dl
ZCgpLCBQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gTmV0d29ya1Byb2Nlc3NQcm94eSBpcyByZWxl
YXNpbmcgYSBiYWNrZ3JvdW5kIGFzc2VydGlvbiBiZWNhdXNlIHRoZSBOZXR3b3JrIHByb2Nlc3Mg
aXMgZG9uZSBkZWxldGluZyBXZWJzaXRlIGRhdGEgZm9yIHNldmVyYWwgb3JpZ2lucyIsIHRoaXMp
OwogICAgIH0pOwogCi0gICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkRlbGV0ZVdl
YnNpdGVEYXRhRm9yT3JpZ2lucyhzZXNzaW9uSUQsIGRhdGFUeXBlcywgb3JpZ2lucywgY29va2ll
SG9zdE5hbWVzLCBIU1RTQ2FjaGVIb3N0TmFtZXMsIGNhbGxiYWNrSUQpLCAwKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6RGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKHNl
c3Npb25JRCwgZGF0YVR5cGVzLCBvcmlnaW5zLCBjb29raWVIb3N0TmFtZXMsIEhTVFNDYWNoZUhv
c3ROYW1lcywgcmVnaXN0cmFibGVEb21haW5zLCBjYWxsYmFja0lEKSwgMCk7CiB9CiAKIHZvaWQg
TmV0d29ya1Byb2Nlc3NQcm94eTo6bmV0d29ya1Byb2Nlc3NDcmFzaGVkKCkKQEAgLTU2OCw2ICs1
NjgsMTYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRMYXN0U2VlbihQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmwKICAgICBzZW5kV2l0aEFzeW5jUmVwbHko
TWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRMYXN0U2VlbihzZXNzaW9uSUQsIHJlc291cmNl
RG9tYWluLCBsYXN0U2VlbiksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAordm9p
ZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpkb21haW5JREV4aXN0c0luRGF0YWJhc2UoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBpbnQgZG9tYWluSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKCFjYW5TZW5kTWVzc2FnZSgpKSB7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICAKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNz
OjpEb21haW5JREV4aXN0c0luRGF0YWJhc2Uoc2Vzc2lvbklELCBkb21haW5JRCksIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjptZXJn
ZVN0YXRpc3RpY0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0
b3BGcmFtZURvbWFpbjEsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbjIs
IFNlY29uZHMgbGFzdFNlZW4sIGJvb2wgaGFkVXNlckludGVyYWN0aW9uLCBTZWNvbmRzIG1vc3RS
ZWNlbnRVc2VySW50ZXJhY3Rpb24sIGJvb2wgaXNHcmFuZGZhdGhlcmVkLCBib29sIGlzUHJldmFs
ZW50LCBib29sIGlzVmVyeVByZXZhbGVudCwgdW5zaWduZWQgZGF0YVJlY29yZHNSZW1vdmVkLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgc2Vu
ZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6TWVyZ2VTdGF0aXN0aWNG
b3JUZXN0aW5nKHNlc3Npb25JRCwgcmVzb3VyY2VEb21haW4sIHRvcEZyYW1lRG9tYWluMSwgdG9w
RnJhbWVEb21haW4yLCBsYXN0U2VlbiwgaGFkVXNlckludGVyYWN0aW9uLCBtb3N0UmVjZW50VXNl
ckludGVyYWN0aW9uLCBpc0dyYW5kZmF0aGVyZWQsIGlzUHJldmFsZW50LCBpc1ZlcnlQcmV2YWxl
bnQsIGRhdGFSZWNvcmRzUmVtb3ZlZCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmgKaW5kZXggNGE3M2Y0YzI5ZjJmM2U2ZDM0MGZiZTNmZjdhNmYxYWQ4MGNkZTFmNC4uOTIz
ZmQzOWIzZWU0OWU3YTk1OWUyMTk5NDgyZTk0NmI3ZWRhOTU0NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTEw
Nyw3ICsxMDcsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGZldGNoV2Vic2l0ZURhdGEoUEFMOjpT
ZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBPcHRpb25TZXQ8V2Vic2l0ZURh
dGFGZXRjaE9wdGlvbj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2Vic2l0ZURhdGEpPiYmKTsK
ICAgICB2b2lkIGRlbGV0ZVdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vi
c2l0ZURhdGFUeXBlPiwgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKLSAgICB2b2lkIGRlbGV0ZVdlYnNpdGVEYXRh
Rm9yT3JpZ2lucyhQQUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURhdGFU
eXBlPiwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mIG9yaWdpbnMs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBjb29raWVIb3N0TmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBIU1RTQ2FjaGVIb3N0TmFtZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Cisg
ICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoUEFMOjpTZXNzaW9uSUQsIE9wdGlv
blNldDxXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZT4sIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGE+JiBvcmlnaW5zLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgY29va2llSG9z
dE5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgSFNUU0NhY2hlSG9zdE5hbWVzLCBjb25zdCBW
ZWN0b3I8UmVnaXN0cmFibGVEb21haW4+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
IAogICAgIHZvaWQgZ2V0TG9jYWxTdG9yYWdlRGV0YWlscyhQQUw6OlNlc3Npb25JRCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpPcmln
aW5EZXRhaWxzPiYmKT4mJik7CiAKQEAgLTEzMCw2ICsxMzAsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBsb2dVc2VySW50ZXJhY3Rpb24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNjaGVkdWxlU3Rh
dGlzdGljc0FuZERhdGFSZWNvcmRzUHJvY2Vzc2luZyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldExhc3RTZWVuKFBBTDo6U2Vzc2lvbklE
LCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIFNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CisgICAgdm9pZCBkb21haW5JREV4aXN0c0luRGF0YWJhc2UoUEFMOjpTZXNzaW9u
SUQsIGludCBkb21haW5JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAg
dm9pZCBtZXJnZVN0YXRpc3RpY0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mIHRvcEZyYW1lRG9tYWluMSwgY29u
c3QgVG9wRnJhbWVEb21haW4mIHRvcEZyYW1lRG9tYWluMiwgU2Vjb25kcyBsYXN0U2VlbiwgYm9v
bCBoYWRVc2VySW50ZXJhY3Rpb24sIFNlY29uZHMgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbiwg
Ym9vbCBpc0dyYW5kZmF0aGVyZWQsIGJvb2wgaXNQcmV2YWxlbnQsIGJvb2wgaXNWZXJ5UHJldmFs
ZW50LCB1bnNpZ25lZCBkYXRhUmVjb3Jkc1JlbW92ZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CiAgICAgdm9pZCBzZXRBZ2VDYXBGb3JDbGllbnRTaWRlQ29va2llcyhQQUw6OlNlc3Np
b25JRCwgT3B0aW9uYWw8U2Vjb25kcz4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAg
ICAgdm9pZCBzZXRDYWNoZU1heEFnZUNhcChQQUw6OlNlc3Npb25JRCwgU2Vjb25kcywgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5kZXggNTBkOTc5MzFkNGMw
NWM3MDQ2NTIxYmZhNzYyZjUyMGZmZjNjMTE4NC4uNzczNTY2ODE4YWI4NmRlZDNmNTY4NjEzYjI1
NzY1ZWYyYWZiNTM1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTk5MCwxNSArOTkwLDE3IEBAIHZv
aWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVtb3ZlRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBl
PiBkYXRhVHlwZXMsIGNvbnN0IFZlCiAKICAgICAgICAgICAgIFZlY3RvcjxTdHJpbmc+IGNvb2tp
ZUhvc3ROYW1lczsKICAgICAgICAgICAgIFZlY3RvcjxTdHJpbmc+IEhTVFNDYWNoZUhvc3ROYW1l
czsKKyAgICAgICAgICAgIFZlY3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gcmVnaXN0
cmFibGVEb21haW5zOwogICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBkYXRhUmVjb3JkIDog
ZGF0YVJlY29yZHMpIHsKICAgICAgICAgICAgICAgICBmb3IgKGF1dG8mIGhvc3ROYW1lIDogZGF0
YVJlY29yZC5jb29raWVIb3N0TmFtZXMpCiAgICAgICAgICAgICAgICAgICAgIGNvb2tpZUhvc3RO
YW1lcy5hcHBlbmQoaG9zdE5hbWUpOwogICAgICAgICAgICAgICAgIGZvciAoYXV0byYgaG9zdE5h
bWUgOiBkYXRhUmVjb3JkLkhTVFNDYWNoZUhvc3ROYW1lcykKICAgICAgICAgICAgICAgICAgICAg
SFNUU0NhY2hlSG9zdE5hbWVzLmFwcGVuZChob3N0TmFtZSk7CisgICAgICAgICAgICAgICAgcmVn
aXN0cmFibGVEb21haW5zLmFwcGVuZChXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVj
a2VkQ3JlYXRlRnJvbUhvc3QoZGF0YVJlY29yZC5kaXNwbGF5TmFtZSkpOwogICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPmFkZFBlbmRpbmdDYWxsYmFjaygp
OwotICAgICAgICAgICAgcHJvY2Vzc1Bvb2wtPm5ldHdvcmtQcm9jZXNzKCktPmRlbGV0ZVdlYnNp
dGVEYXRhRm9yT3JpZ2lucyhtX3Nlc3Npb25JRCwgZGF0YVR5cGVzLCBvcmlnaW5zLCBjb29raWVI
b3N0TmFtZXMsIEhTVFNDYWNoZUhvc3ROYW1lcywgW2NhbGxiYWNrQWdncmVnYXRvciwgcHJvY2Vz
c1Bvb2xdIHsKKyAgICAgICAgICAgIHByb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2VzcygpLT5kZWxl
dGVXZWJzaXRlRGF0YUZvck9yaWdpbnMobV9zZXNzaW9uSUQsIGRhdGFUeXBlcywgb3JpZ2lucywg
Y29va2llSG9zdE5hbWVzLCBIU1RTQ2FjaGVIb3N0TmFtZXMsIHJlZ2lzdHJhYmxlRG9tYWlucywg
W2NhbGxiYWNrQWdncmVnYXRvciwgcHJvY2Vzc1Bvb2xdIHsKICAgICAgICAgICAgICAgICBjYWxs
YmFja0FnZ3JlZ2F0b3ItPnJlbW92ZVBlbmRpbmdDYWxsYmFjaygpOwogICAgICAgICAgICAgfSk7
CiAgICAgICAgIH0KQEAgLTE1OTYsNiArMTU5OCwxOCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6
OnNldExhc3RTZWVuKGNvbnN0IFVSTCYgdXJsLCBTZWNvbmRzIHNlY29uZHMsIENvbXBsZXRpb25I
YQogICAgIH0KIH0KIAordm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpkb21haW5JREV4aXN0c0luRGF0
YWJhc2UoaW50IGRvbWFpbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQoreworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBm
b3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsKKyAgICAgICAgaWYgKGF1
dG8qIHByb2Nlc3MgPSBwcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkgeworICAgICAgICAg
ICAgcHJvY2Vzcy0+ZG9tYWluSURFeGlzdHNJbkRhdGFiYXNlKG1fc2Vzc2lvbklELCBkb21haW5J
RCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKyAgICB9Cit9CisKIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6bWVyZ2VTdGF0aXN0aWNG
b3JUZXN0aW5nKGNvbnN0IFVSTCYgdXJsICwgY29uc3QgVVJMJiB0b3BGcmFtZVVybDEsIGNvbnN0
IFVSTCYgdG9wRnJhbWVVcmwyLCBTZWNvbmRzIGxhc3RTZWVuLCBib29sIGhhZFVzZXJJbnRlcmFj
dGlvbiwgU2Vjb25kcyBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uLCBib29sIGlzR3JhbmRmYXRo
ZXJlZCwgYm9vbCBpc1ByZXZhbGVudCwgYm9vbCBpc1ZlcnlQcmV2YWxlbnQsIHVuc2lnbmVkIGRh
dGFSZWNvcmRzUmVtb3ZlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIGlmICh1cmwucHJvdG9jb2xJc0Fib3V0KCkgfHwgdXJsLmlzRW1wdHko
KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5oCmluZGV4IGU4NDIzMTMyNTZiYTMxYmRkOGE3NTBjYTU1YjMzYWJkYWIy
YzAwOTIuLjVkYTVmYTUxYWUyOTMwOGRmZTk5ZmExNWE0YTg1MGQ2ODkwMjY1ZjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlLmgKQEAgLTE2Nyw2ICsxNjcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRVc2VJVFBEYXRh
YmFzZShib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0R3Jh
bmRmYXRoZXJpbmdUaW1lKFNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAg
ICAgdm9pZCBzZXRMYXN0U2Vlbihjb25zdCBVUkwmLCBTZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOworICAgIHZvaWQgZG9tYWluSURFeGlzdHNJbkRhdGFiYXNlKGludCBkb21h
aW5JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBtZXJnZVN0
YXRpc3RpY0ZvclRlc3RpbmcoY29uc3QgVVJMJiwgY29uc3QgVVJMJiB0b3BGcmFtZVVybDEsIGNv
bnN0IFVSTCYgdG9wRnJhbWVVcmwyLCBTZWNvbmRzIGxhc3RTZWVuLCBib29sIGhhZFVzZXJJbnRl
cmFjdGlvbiwgU2Vjb25kcyBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uLCBib29sIGlzR3JhbmRm
YXRoZXJlZCwgYm9vbCBpc1ByZXZhbGVudCwgYm9vbCBpc1ZlcnlQcmV2YWxlbnQsIHVuc2lnbmVk
IGRhdGFSZWNvcmRzUmVtb3ZlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2
b2lkIHNldE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQoYm9vbCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldElzUnVubmluZ1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NUZXN0KGJvb2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CmRpZmYg
LS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMTJmZWM1MTk2
NjYwMzNjMDc4MTQyZDQxMGI5Y2Q1OWIxOWQ5MDMwOS4uNjA5MTkwMThlYWNlNTgwYmRkZGUxMzg5
NWJmOTNmYTFiM2ExNGM4NCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIwLTA0LTI0ICBLYXRlIENoZW5leSAgPGth
dGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92aW5nIHdlYnNpdGUgZGF0
YSBmb3IgYSBkb21haW4gc2hvdWxkIGRlbGV0ZSBjb3JyZXNwb25kaW5nIElUUCBlbnRyeQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwODY0CisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS81OTQ3MzE5Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBKb2hu
IFdpbGFuZGVyLgorCisgICAgICAgIENyZWF0ZWQgMiBuZXcgQVBJcyBmb3IgdGVzdGluZy4gT25l
IHRvIG1pbWljIGNsZWFyaW5nIHdlYnNpdGUgZGF0YQorICAgICAgICBmb3IgYSBkb21haW4sIGFu
ZCBvbmUgdG8gY2hlY2sgaWYgdGhlIGRvbWFpbiBleGlzdHMgaW4gdGhlIGRhdGFiYXNlCisgICAg
ICAgIGFmdGVyIGEgZGVsZXRpb24gd2FzIHJlcXVlc3RlZC4KKworICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGw6CisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcDoKKyAgICAg
ICAgKFdUUjo6VGVzdFJ1bm5lcjo6ZG9lc1N0YXRpc3RpY3NEb21haW5JREV4aXN0SW5EYXRhYmFz
ZSk6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OmRvbWFpbklERXhpc3RzSW5EYXRhYmFzZSk6
IERlbGV0ZWQuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0
UnVubmVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6
CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpkb2VzU3RhdGlzdGljc0RvbWFpbklERXhp
c3RJbkRhdGFiYXNlKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmRvbWFpbklERXhp
c3RzSW5EYXRhYmFzZSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0
Q29udHJvbGxlci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24u
Y3BwOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3Vz
TWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6CisKIDIwMjAtMDQtMjMgIEthdGUgQ2hlbmV5ICA8
a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CiAKICAgICAgICAgQWxsIElUUCBkYXRhYmFzZSB0
YWJsZXMgc2hvdWxkIHJlZmVyZW5jZSB0aGUgT2JzZXJ2ZWREb21haW5zIHRhYmxlIG9uIERFTEVU
RSBDQVNDQURFCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAppbmRleCBmYTY3ZjM3YThkYWI5OGIz
MDVmMDA1Y2QxMGMxMWY1MDMwYWI5ZDEyLi4yN2ZkYzkyZjFjNTE3MWYyZDQxNDBkYWUzMzkwMTA2
YWYwNjAzNWM5IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKQEAgLTI5Miw2ICsyOTIsOCBA
QCBpbnRlcmZhY2UgVGVzdFJ1bm5lciB7CiAgICAgdm9pZCBkaXNjb25uZWN0TW9ja0dhbWVwYWQo
dW5zaWduZWQgbG9uZyBpbmRleCk7CiAKICAgICAvLyBSZXNvdXJjZSBMb2FkIFN0YXRpc3RpY3MK
KyAgICB2b2lkIGNsZWFyU3RhdGlzdGljc0RhdGFGb3JEb21haW4oRE9NU3RyaW5nIGRvbWFpbik7
CisgICAgYm9vbGVhbiBkb2VzU3RhdGlzdGljc0RvbWFpbklERXhpc3RJbkRhdGFiYXNlKHVuc2ln
bmVkIGxvbmcgZG9tYWluSUQpOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc0VuYWJsZWQoYm9vbGVh
biB2YWx1ZSk7CiAgICAgYm9vbGVhbiBpc1N0YXRpc3RpY3NFcGhlbWVyYWwoKTsKICAgICB2b2lk
IGluc3RhbGxTdGF0aXN0aWNzRGlkTW9kaWZ5RGF0YVJlY29yZHNDYWxsYmFjayhvYmplY3QgY2Fs
bGJhY2spOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
VGVzdFJ1bm5lci5jcHAKaW5kZXggOTVhZTY0MjQ4ZTRmZTk0NTI5ZDZkMzAyNzNlZjZmNTk4YWIz
NTliZS4uY2NmM2E0ODg2NTYzNjVhN2JjNzc4OWI0YTVhZmI2MDZlMzkwZTZkZSAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3Bw
CkBAIC0xNDE1LDYgKzE0MTUsMzcgQEAgdm9pZCBUZXN0UnVubmVyOjpjYWxsRGlkUmVtb3ZlU3dp
cGVTbmFwc2hvdENhbGxiYWNrKCkKICAgICBjYWxsVGVzdFJ1bm5lckNhbGxiYWNrKERpZFJlbW92
ZVN3aXBlU25hcHNob3RDYWxsYmFja0lEKTsKIH0KIAordm9pZCBUZXN0UnVubmVyOjpjbGVhclN0
YXRpc3RpY3NEYXRhRm9yRG9tYWluKEpTU3RyaW5nUmVmIGRvbWFpbikKK3sKKyAgICBXS1JldGFp
blB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0
aFVURjhDU3RyaW5nKCJDbGVhclN0YXRpc3RpY3NEYXRhRm9yRG9tYWluIikpOworICAgIFdLUmV0
YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlQm9keSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVX
aXRoSlNTdHJpbmcoZG9tYWluKSk7CisgICAgV0tCdW5kbGVQb3N0U3luY2hyb25vdXNNZXNzYWdl
KEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwgbWVzc2FnZU5hbWUuZ2V0KCks
IG1lc3NhZ2VCb2R5LmdldCgpLCBudWxscHRyKTsKK30KKworYm9vbCBUZXN0UnVubmVyOjpkb2Vz
U3RhdGlzdGljc0RvbWFpbklERXhpc3RJbkRhdGFiYXNlKHVuc2lnbmVkIGRvbWFpbklEKQorewor
ICAgIFZlY3RvcjxXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4+IGtleXM7CisgICAgVmVjdG9yPFdL
UmV0YWluUHRyPFdLVHlwZVJlZj4+IHZhbHVlczsKKworICAgIGtleXMuYXBwZW5kKGFkb3B0V0so
V0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkRvbWFpbklEIikpKTsKKyAgICB2YWx1ZXMu
YXBwZW5kKGFkb3B0V0soV0tVSW50NjRDcmVhdGUoZG9tYWluSUQpKSk7CisKKyAgICBWZWN0b3I8
V0tTdHJpbmdSZWY+IHJhd0tleXMoa2V5cy5zaXplKCkpOworICAgIFZlY3RvcjxXS1R5cGVSZWY+
IHJhd1ZhbHVlcyh2YWx1ZXMuc2l6ZSgpKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
a2V5cy5zaXplKCk7ICsraSkgeworICAgICAgICByYXdLZXlzW2ldID0ga2V5c1tpXS5nZXQoKTsK
KyAgICAgICAgcmF3VmFsdWVzW2ldID0gdmFsdWVzW2ldLmdldCgpOworICAgIH0KKworICAgIFdL
UmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoIkRvZXNTdGF0aXN0aWNzRG9tYWluSURFeGlzdEluRGF0YWJhc2Ui
KSk7CisgICAgV0tSZXRhaW5QdHI8V0tEaWN0aW9uYXJ5UmVmPiBtZXNzYWdlQm9keSA9IGFkb3B0
V0soV0tEaWN0aW9uYXJ5Q3JlYXRlKHJhd0tleXMuZGF0YSgpLCByYXdWYWx1ZXMuZGF0YSgpLCBy
YXdLZXlzLnNpemUoKSkpOworICAgIFdLVHlwZVJlZiByZXR1cm5EYXRhID0gbnVsbHB0cjsKKyAg
ICBXS0J1bmRsZVBhZ2VQb3N0U3luY2hyb25vdXNNZXNzYWdlRm9yVGVzdGluZyhJbmplY3RlZEJ1
bmRsZTo6c2luZ2xldG9uKCkucGFnZSgpLT5wYWdlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNz
YWdlQm9keS5nZXQoKSwgJnJldHVybkRhdGEpOworICAgIEFTU0VSVChXS0dldFR5cGVJRChyZXR1
cm5EYXRhKSA9PSBXS0Jvb2xlYW5HZXRUeXBlSUQoKSk7CisgICAgcmV0dXJuIFdLQm9vbGVhbkdl
dFZhbHVlKGFkb3B0V0soc3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPihyZXR1cm5EYXRhKSkuZ2V0
KCkpOworfQorCiB2b2lkIFRlc3RSdW5uZXI6OnNldFN0YXRpc3RpY3NFbmFibGVkKGJvb2wgdmFs
dWUpCiB7CiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lID0gYWRvcHRX
SyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiU2V0U3RhdGlzdGljc0VuYWJsZWQiKSk7
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RS
dW5uZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5l
ci5oCmluZGV4IDcyOGQzNmUyYTk4MmExOGZhY2I1Njk5OGRkNmMwNGJkNWMwMjczYzQuLmU3YjI1
MjhhYjk5ZmZhZjBlNGFhMzZiOWU3MjFmOWU5YTBjNjYwNGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCkBAIC0zODAsNiArMzgw
LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0TW9ja0dhbWVwYWRCdXR0b25WYWx1ZSh1bnNpZ25l
ZCBpbmRleCwgdW5zaWduZWQgYnV0dG9uSW5kZXgsIGRvdWJsZSB2YWx1ZSk7CiAgICAgCiAgICAg
Ly8gUmVzb3VyY2UgTG9hZCBTdGF0aXN0aWNzCisgICAgdm9pZCBjbGVhclN0YXRpc3RpY3NEYXRh
Rm9yRG9tYWluKEpTU3RyaW5nUmVmIGRvbWFpbik7CisgICAgYm9vbCBkb2VzU3RhdGlzdGljc0Rv
bWFpbklERXhpc3RJbkRhdGFiYXNlKHVuc2lnbmVkIGRvbWFpbklEKTsKICAgICB2b2lkIHNldFN0
YXRpc3RpY3NFbmFibGVkKGJvb2wgdmFsdWUpOwogICAgIGJvb2wgaXNTdGF0aXN0aWNzRXBoZW1l
cmFsKCk7CiAgICAgdm9pZCBpbnN0YWxsU3RhdGlzdGljc0RpZE1vZGlmeURhdGFSZWNvcmRzQ2Fs
bGJhY2soSlNWYWx1ZVJlZiBjYWxsYmFjayk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENv
bnRyb2xsZXIuY3BwCmluZGV4IDBjNjIxMGQ0MjZkZDM3N2EwOTI5MzE3OWFmYTkxNTMxY2NlYzU4
YzIuLmFhNzIzZWQ4ZjQ5NjFhMjA4NDZmMTNhYWM4NTEwYmVhMWQzZmVmZWMgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC0zNDE3LDYgKzM0MTcsMjIgQEAg
c3RhdGljIHZvaWQgcmVzb3VyY2VTdGF0aXN0aWNzQm9vbGVhblJlc3VsdENhbGxiYWNrKGJvb2wg
cmVzdWx0LCB2b2lkKiB1c2VyRGF0YSkKICAgICBjb250ZXh0LT50ZXN0Q29udHJvbGxlci5ub3Rp
ZnlEb25lKCk7CiB9CiAKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmNsZWFyU3RhdGlzdGljc0RhdGFG
b3JEb21haW4oV0tTdHJpbmdSZWYgZG9tYWluKQoreworICAgIFJlc291cmNlU3RhdGlzdGljc0Nh
bGxiYWNrQ29udGV4dCBjb250ZXh0KCp0aGlzKTsKKworICAgIFdLV2Vic2l0ZURhdGFTdG9yZVJl
bW92ZUlUUERhdGFGb3JEb21haW4oVGVzdENvbnRyb2xsZXI6OmRlZmF1bHRXZWJzaXRlRGF0YVN0
b3JlKCksIGRvbWFpbiwgJmNvbnRleHQsIHJlc291cmNlU3RhdGlzdGljc1ZvaWRSZXN1bHRDYWxs
YmFjayk7CisgICAgcnVuVW50aWwoY29udGV4dC5kb25lLCBub1RpbWVvdXQpOworfQorCitib29s
IFRlc3RDb250cm9sbGVyOjpkb2VzU3RhdGlzdGljc0RvbWFpbklERXhpc3RJbkRhdGFiYXNlKHVu
c2lnbmVkIGRvbWFpbklEKQoreworICAgIFJlc291cmNlU3RhdGlzdGljc0NhbGxiYWNrQ29udGV4
dCBjb250ZXh0KCp0aGlzKTsKKyAgICBXS1dlYnNpdGVEYXRhU3RvcmVEb2VzU3RhdGlzdGljc0Rv
bWFpbklERXhpc3RJbkRhdGFiYXNlKHdlYnNpdGVEYXRhU3RvcmUoKSwgZG9tYWluSUQsICZjb250
ZXh0LCByZXNvdXJjZVN0YXRpc3RpY3NCb29sZWFuUmVzdWx0Q2FsbGJhY2spOworICAgIHJ1blVu
dGlsKGNvbnRleHQuZG9uZSwgbm9UaW1lb3V0KTsKKyAgICByZXR1cm4gY29udGV4dC5yZXN1bHQ7
Cit9CisKIHZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NFbmFibGVkKGJvb2wgdmFs
dWUpCiB7CiAgICAgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0Vu
YWJsZWQod2Vic2l0ZURhdGFTdG9yZSgpLCB2YWx1ZSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RDb250cm9sbGVyLmgKaW5kZXggYmMzYWQ3NTNhNmI3NDE1YTRkOWMxZWMzMzZkNWQzOGY1ZDgy
NWY0YS4uMTUyNzg3YWE3MzQ5MzZhMTgyNjhlMmNmYjVhMTFjNGQ3Yzg5ZjA5ZCAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaApAQCAtMjE0LDYgKzIxNCw4IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldFNob3VsZERvd25sb2FkVW5kaXNwbGF5YWJsZU1JTUVUeXBlcyhib29s
IHZhbHVlKSB7IG1fc2hvdWxkRG93bmxvYWRVbmRpc3BsYXlhYmxlTUlNRVR5cGVzID0gdmFsdWU7
IH0KICAgICB2b2lkIHNldFNob3VsZEFsbG93RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nl
c3MoYm9vbCB2YWx1ZSkgeyBtX3Nob3VsZEFsbG93RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25B
Y2Nlc3MgPSB2YWx1ZTsgfQogCisgICAgdm9pZCBjbGVhclN0YXRpc3RpY3NEYXRhRm9yRG9tYWlu
KFdLU3RyaW5nUmVmIGRvbWFpbik7CisgICAgYm9vbCBkb2VzU3RhdGlzdGljc0RvbWFpbklERXhp
c3RJbkRhdGFiYXNlKHVuc2lnbmVkIGRvbWFpbklEKTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NF
bmFibGVkKGJvb2wgdmFsdWUpOwogICAgIGJvb2wgaXNTdGF0aXN0aWNzRXBoZW1lcmFsKCk7CiAg
ICAgdm9pZCBzZXRTdGF0aXN0aWNzRGVidWdNb2RlKGJvb2wgdmFsdWUpOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAppbmRleCA2MWNkZjBlYzE0YTdlYzg3NzUzMTEz
MjUzZWU1Yjc2OTNhOGUxNzU1Li43MTljNTJjY2IwZWYwNjIzNDUzMjA5MmE5NTQzMGUwM2U1Mzc4
MzRlIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNw
cAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcApAQCAtMTI4
OCw2ICsxMjg4LDI0IEBAIFdLUmV0YWluUHRyPFdLVHlwZVJlZj4gVGVzdEludm9jYXRpb246OmRp
ZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCCiAgICAgICAgIFdLUmV0YWlu
UHRyPFdLVHlwZVJlZj4gcmVzdWx0ID0gYWRvcHRXSyhXS0Jvb2xlYW5DcmVhdGUoVGVzdENvbnRy
b2xsZXI6OnNpbmdsZXRvbigpLmlzRG9pbmdNZWRpYUNhcHR1cmUoKSkpOwogICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgIH0KKyAgICAKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0
cmluZyhtZXNzYWdlTmFtZSwgIkNsZWFyU3RhdGlzdGljc0RhdGFGb3JEb21haW4iKSkgeworICAg
ICAgICBBU1NFUlQoV0tHZXRUeXBlSUQobWVzc2FnZUJvZHkpID09IFdLU3RyaW5nR2V0VHlwZUlE
KCkpOworICAgICAgICBXS1N0cmluZ1JlZiBkb21haW4gPSBzdGF0aWNfY2FzdDxXS1N0cmluZ1Jl
Zj4obWVzc2FnZUJvZHkpOworCisgICAgICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5j
bGVhclN0YXRpc3RpY3NEYXRhRm9yRG9tYWluKGRvbWFpbik7CisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIH0KKworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3Nh
Z2VOYW1lLCAiRG9lc1N0YXRpc3RpY3NEb21haW5JREV4aXN0SW5EYXRhYmFzZSIpKSB7CisgICAg
ICAgIEFTU0VSVChXS0dldFR5cGVJRChtZXNzYWdlQm9keSkgPT0gV0tEaWN0aW9uYXJ5R2V0VHlw
ZUlEKCkpOworICAgICAgICBXS0RpY3Rpb25hcnlSZWYgbWVzc2FnZUJvZHlEaWN0aW9uYXJ5ID0g
c3RhdGljX2Nhc3Q8V0tEaWN0aW9uYXJ5UmVmPihtZXNzYWdlQm9keSk7CisgICAgICAgIFdLUmV0
YWluUHRyPFdLU3RyaW5nUmVmPiBkb21haW5JREtleSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVX
aXRoVVRGOENTdHJpbmcoIkRvbWFpbklEIikpOworICAgICAgICBXS1VJbnQ2NFJlZiBkb21haW5J
RCA9IHN0YXRpY19jYXN0PFdLVUludDY0UmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KG1l
c3NhZ2VCb2R5RGljdGlvbmFyeSwgZG9tYWluSURLZXkuZ2V0KCkpKTsKKyAgICAgICAgYm9vbCBk
b21haW5JREV4aXN0cyA9IFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5kb2VzU3RhdGlzdGlj
c0RvbWFpbklERXhpc3RJbkRhdGFiYXNlKFdLVUludDY0R2V0VmFsdWUoZG9tYWluSUQpKTsKKyAg
ICAgICAgV0tSZXRhaW5QdHI8V0tUeXBlUmVmPiByZXN1bHQgPSBhZG9wdFdLKFdLQm9vbGVhbkNy
ZWF0ZShkb21haW5JREV4aXN0cykpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KIAog
ICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiU2V0U3Rh
dGlzdGljc0VuYWJsZWQiKSkgewogICAgICAgICBBU1NFUlQoV0tHZXRUeXBlSUQobWVzc2FnZUJv
ZHkpID09IFdLQm9vbGVhbkdldFR5cGVJRCgpKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3NTYxY2Q4ODg1YjFiZmE0YTcy
NzRjODU3NjUwZWMzNmE2MjA2M2U3Li41ZGNmODliODQ2MGZmOTZiYjQxY2QwZDczMjZkZWIyZjJj
ZTc4MWQ0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMjAtMDQtMjQgIEthdGUgQ2hlbmV5ICA8
a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3Zpbmcgd2Vic2l0ZSBk
YXRhIGZvciBhIGRvbWFpbiBzaG91bGQgZGVsZXRlIGNvcnJlc3BvbmRpbmcgSVRQIGVudHJ5Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTA4NjQKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU5NDczMTkzPgorCisgICAgICAgIFJldmlld2VkIGJ5IEpv
aG4gV2lsYW5kZXIuCisKKyAgICAgICAgSW5zZXJ0cyB2YWx1ZXMgaW50byB0aGUgSVRQIGRhdGFi
YXNlIHRoZW4gdGVzdHMgcmVtb3ZpbmcgdGhlIGRvbWFpbidzCisgICAgICAgIHdlYnNpdGUgZGF0
YSB3aWxsIHJlbW92ZSBhbGwgaW5zdGFuY2VzIG9mIHRoYXQgZG9tYWluIGluIHRoZSBJVFAKKyAg
ICAgICAgZGF0YWJhc2UuCisKKyAgICAgICAgRGF0YWJhc2Ugc3RvcmUgZXhwZWN0YXRpb25zIHdp
bGwgcmVmbGVjdCB0aGUgcmVzdWx0IG9mIHRoZSBuZXcKKyAgICAgICAgZG9tYWluSURFeGlzdHNJ
bkRhdGFiYXNlIGZ1bmN0aW9uLiBNZW1vcnkgc3RvcmUgdGVzdHMgd2lsbCB1c2UgdGhlCisgICAg
ICAgIGR1bXAgb3V0cHV0IHdoaWNoIHNob3VsZCBub3QgaW5jbHVkZSB0aGUgZGVsZXRlZCBpbmZv
cm1hdGlvbi4KKworICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9y
ZW1vdmUtd2Vic2l0ZS1kYXRhLWZvci1vcmlnaW4tZGVsZXRlcy1saW5rLWRlY29yYXRpb24tZGF0
YWJhc2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNl
TG9hZFN0YXRpc3RpY3MvcmVtb3ZlLXdlYnNpdGUtZGF0YS1mb3Itb3JpZ2luLWRlbGV0ZXMtbGlu
ay1kZWNvcmF0aW9uLWRhdGFiYXNlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMv
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZW1vdmUtd2Vic2l0ZS1kYXRhLWZvci1vcmlnaW4tZGVs
ZXRlcy1saW5rLWRlY29yYXRpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVtb3ZlLXdlYnNpdGUtZGF0YS1mb3Itb3Jp
Z2luLWRlbGV0ZXMtbGluay1kZWNvcmF0aW9uLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAv
dGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZW1vdmUtd2Vic2l0ZS1kYXRhLWZvci1vcmln
aW4tZGVsZXRlcy1taXhlZC1zdGF0aXN0aWNzLWVudHJpZXMtZGF0YWJhc2UtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVt
b3ZlLXdlYnNpdGUtZGF0YS1mb3Itb3JpZ2luLWRlbGV0ZXMtbWl4ZWQtc3RhdGlzdGljcy1lbnRy
aWVzLWRhdGFiYXNlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy9yZW1vdmUtd2Vic2l0ZS1kYXRhLWZvci1vcmlnaW4tZGVsZXRlcy1taXhl
ZC1zdGF0aXN0aWNzLWVudHJpZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVtb3ZlLXdlYnNpdGUtZGF0YS1mb3Itb3Jp
Z2luLWRlbGV0ZXMtbWl4ZWQtc3RhdGlzdGljcy1lbnRyaWVzLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZW1vdmUtd2Vic2l0ZS1kYXRh
LWZvci1vcmlnaW4tZGVsZXRlcy10aGlyZC1wYXJ0eS1zY3JpcHQtbG9hZHMtZGF0YWJhc2UtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3MvcmVtb3ZlLXdlYnNpdGUtZGF0YS1mb3Itb3JpZ2luLWRlbGV0ZXMtdGhpcmQtcGFydHkt
c2NyaXB0LWxvYWRzLWRhdGFiYXNlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMv
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZW1vdmUtd2Vic2l0ZS1kYXRhLWZvci1vcmlnaW4tZGVs
ZXRlcy10aGlyZC1wYXJ0eS1zY3JpcHQtbG9hZHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVtb3ZlLXdlYnNpdGUtZGF0
YS1mb3Itb3JpZ2luLWRlbGV0ZXMtdGhpcmQtcGFydHktc2NyaXB0LWxvYWRzLmh0bWw6IEFkZGVk
LgorCiAyMDIwLTA0LTIzICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgQWxsb3cgY3JlZGVudGlhbHMgZm9yIHNhbWUtb3JpZ2luIGNzcyBtYXNr
IGltYWdlcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzL3JlbW92ZS13ZWJzaXRlLWRhdGEtZm9yLW9yaWdpbi1kZWxldGVzLWxpbmstZGVj
b3JhdGlvbi1kYXRhYmFzZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jl
c291cmNlTG9hZFN0YXRpc3RpY3MvcmVtb3ZlLXdlYnNpdGUtZGF0YS1mb3Itb3JpZ2luLWRlbGV0
ZXMtbGluay1kZWNvcmF0aW9uLWRhdGFiYXNlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jOTNl
ODY3MjE3MjQyYzJiNjk5ZTdjYjk5NTc0ODFkYjU0MDE0NjE1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3JlbW92ZS13ZWJz
aXRlLWRhdGEtZm9yLW9yaWdpbi1kZWxldGVzLWxpbmstZGVjb3JhdGlvbi1kYXRhYmFzZS1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSw1IEBACitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKK1BBU1MgRG9tYWluIElEIHdhcyBzdWNjZXNzZnVsbHkgZGVsZXRl
ZCBmcm9tIHRoZSBkYXRhYmFzZS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3JlbW92ZS13ZWJzaXRlLWRhdGEtZm9yLW9yaWdpbi1k
ZWxldGVzLWxpbmstZGVjb3JhdGlvbi1kYXRhYmFzZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3JlbW92ZS13ZWJzaXRlLWRhdGEtZm9yLW9yaWdp
bi1kZWxldGVzLWxpbmstZGVjb3JhdGlvbi1kYXRhYmFzZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ2OWJh
MzYxMTQzMzVlMmE5OGU2NDljNmEyNmU2MDJmYjIyNmM2NzYKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVtb3ZlLXdlYnNp
dGUtZGF0YS1mb3Itb3JpZ2luLWRlbGV0ZXMtbGluay1kZWNvcmF0aW9uLWRhdGFiYXNlLmh0bWwK
QEAgLTAsMCArMSw1MiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxz
Y3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAg
PHNjcmlwdCBzcmM9InJlc291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
IG9ubG9hZD0ic2V0VGltZW91dCgncnVuVGVzdCgpJywgMCkiPgorPGRpdiBpZD0ib3V0cHV0Ij48
L2Rpdj4KKzxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRl
c3RSdW5uZXIuc2V0VXNlSVRQRGF0YWJhc2UodHJ1ZSk7CisgICAgICAgIHRlc3RSdW5uZXIud2Fp
dFVudGlsRG9uZSgpOworICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB9CisK
KyAgICBmdW5jdGlvbiBuYXZpZ2F0ZUNyb3NzT3JpZ2luKCkgeworICAgICAgICBkb2N1bWVudC5s
b2NhdGlvbi5ocmVmID0gZGVzdGluYXRpb25PcmlnaW4gKyAiL3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MvcmVtb3ZlLXdlYnNpdGUtZGF0YS1mb3Itb3JpZ2luLWRlbGV0ZXMtbGluay1kZWNvcmF0aW9u
LWRhdGFiYXNlLmh0bWw/bGluaz1kZWNvcmF0aW9uIjsKKyAgICB9CisKKyAgICBjb25zdCBob3N0
ID0gImxvY2FsaG9zdCI7CisgICAgY29uc3QgZGVzdGluYXRpb25PcmlnaW4gPSAiaHR0cDovL2xv
Y2FsaG9zdDo4MDAwIjsKKyAgICBjb25zdCBwcmV2YWxlbnRSZXNvdXJjZU9yaWdpbiA9ICJodHRw
Oi8vMTI3LjAuMC4xOjgwMDAiOworICAgIGNvbnN0IHRlc3RPcmlnaW4gPSAiaHR0cDovLzEyNy4w
LjAuMjo4MDAwIjsKKyAgICBmdW5jdGlvbiBydW5UZXN0KCkgeworICAgICAgICBpZiAoZG9jdW1l
bnQubG9jYXRpb24ub3JpZ2luID09PSBwcmV2YWxlbnRSZXNvdXJjZU9yaWdpbikgeworICAgICAg
ICAgICAgc2V0RW5hYmxlRmVhdHVyZSh0cnVlLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAg
ICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2UocHJldmFsZW50UmVz
b3VyY2VPcmlnaW4sIHRydWUsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICBpZiAo
IXRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2UocHJldmFsZW50UmVzb3Vy
Y2VPcmlnaW4pKQorICAgICAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiSG9zdCBkaWQg
bm90IGdldCBzZXQgYXMgcHJldmFsZW50IHJlc291cmNlLiIpOworICAgICAgICAgICAgICAgICAg
ICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3Jh
dGlvbih0ZXN0T3JpZ2luLCBkZXN0aW5hdGlvbk9yaWdpbik7CisgICAgICAgICAgICAgICAgICAg
IHRlc3RSdW5uZXIuc3RhdGlzdGljc1VwZGF0ZUNvb2tpZUJsb2NraW5nKG5hdmlnYXRlQ3Jvc3NP
cmlnaW4pOworICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICB9KTsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuY2xlYXJTdGF0aXN0aWNzRGF0YUZvckRv
bWFpbihob3N0KTsKKyAgICAgICAgICAgIC8vIE11c3QgdXNlIGRvbWFpbklEIHRvIGVuc3VyZSB0
aGlzIHdhcyBwcm9wZXJseQorICAgICAgICAgICAgLy8gZGVsZXRlZCwgb3RoZXJ3aXNlIHRoZSBs
YWNrIG9mIHJlZ2lzdHJhYmxlIGRvbWFpbiAtLT4gZG9tYWluSUQgbWFwcGluZworICAgICAgICAg
ICAgLy8gY291bGQgY3JlYXRlIGEgZmFsc2UtcG9zaXRpdmUgdGVzdCByZXN1bHQgZXZlbiB3aGVu
IHRoZSBkb21haW5JRCBwZXJzaXN0cy4KKyAgICAgICAgICAgIGlmICh0ZXN0UnVubmVyLmRvZXNT
dGF0aXN0aWNzRG9tYWluSURFeGlzdEluRGF0YWJhc2UoMikpCisgICAgICAgICAgICAgICAgdGVz
dEZhaWxlZCgiRG9tYWluIElEIHdhcyBub3QgZGVsZXRlZCBmcm9tIHRoZSBkYXRhYmFzZS4iKTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJEb21haW4gSUQg
d2FzIHN1Y2Nlc3NmdWxseSBkZWxldGVkIGZyb20gdGhlIGRhdGFiYXNlLiIpCisKKyAgICAgICAg
ICAgIHNldEVuYWJsZUZlYXR1cmUoZmFsc2UsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9Cisg
ICAgfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVtb3ZlLXdlYnNpdGUtZGF0YS1m
b3Itb3JpZ2luLWRlbGV0ZXMtbGluay1kZWNvcmF0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZW1vdmUtd2Vic2l0ZS1kYXRh
LWZvci1vcmlnaW4tZGVsZXRlcy1saW5rLWRlY29yYXRpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZlY2UzODVhOWM0MmE5NDBmMThkM2EzMGZlNDEzNTkxNjRiYzJkOWEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVt
b3ZlLXdlYnNpdGUtZGF0YS1mb3Itb3JpZ2luLWRlbGV0ZXMtbGluay1kZWNvcmF0aW9uLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDExIEBACisKK1Jlc291cmNlIGxvYWQgc3RhdGlzdGljczoKKwor
UmVnaXN0cmFibGUgZG9tYWluOiAxMjcuMC4wLjEKKyAgICBoYWRVc2VySW50ZXJhY3Rpb246IE5v
CisgICAgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbjogLTEKKyAgICBncmFuZGZhdGhlcmVkOiBO
bworICAgIGdvdExpbmtEZWNvcmF0aW9uRnJvbVByZXZhbGVudFJlc291cmNlOiBObworICAgIGlz
UHJldmFsZW50UmVzb3VyY2U6IFllcworICAgIGlzVmVyeVByZXZhbGVudFJlc291cmNlOiBObwor
ICAgIGRhdGFSZWNvcmRzUmVtb3ZlZDogMApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3JlbW92ZS13ZWJzaXRlLWRhdGEtZm9yLW9yaWdp
bi1kZWxldGVzLWxpbmstZGVjb3JhdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3JlbW92ZS13ZWJzaXRlLWRhdGEtZm9yLW9yaWdpbi1kZWxl
dGVzLWxpbmstZGVjb3JhdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZhNTdkZmNiZGE1NGQ3Yjc5Yzdl
MWQ3ZjUxODA4ZDVlYmM1OGNhNTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVtb3ZlLXdlYnNpdGUtZGF0YS1mb3Itb3Jp
Z2luLWRlbGV0ZXMtbGluay1kZWNvcmF0aW9uLmh0bWwKQEAgLTAsMCArMSw0MSBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdXRp
bC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InNldFRpbWVvdXQoJ3J1blRl
c3QoKScsIDApIj4KKzxkaXYgaWQ9Im91dHB1dCI+PC9kaXY+Cis8c2NyaXB0PgorICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsK
KyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgfQorCisgICAgZnVuY3Rpb24g
bmF2aWdhdGVDcm9zc09yaWdpbigpIHsKKyAgICAgICAgZG9jdW1lbnQubG9jYXRpb24uaHJlZiA9
IGRlc3RpbmF0aW9uT3JpZ2luICsgIi9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3JlbW92ZS13ZWJz
aXRlLWRhdGEtZm9yLW9yaWdpbi1kZWxldGVzLWxpbmstZGVjb3JhdGlvbi5odG1sP2xpbms9ZGVj
b3JhdGlvbiI7CisgICAgfQorCisgICAgY29uc3QgaG9zdCA9ICJsb2NhbGhvc3QiOworICAgIGNv
bnN0IGRlc3RpbmF0aW9uT3JpZ2luID0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMCI7CisgICAgY29u
c3QgcHJldmFsZW50UmVzb3VyY2VPcmlnaW4gPSAiaHR0cDovLzEyNy4wLjAuMTo4MDAwIjsKKyAg
ICBmdW5jdGlvbiBydW5UZXN0KCkgeworICAgICAgICBpZiAoZG9jdW1lbnQubG9jYXRpb24ub3Jp
Z2luID09PSBwcmV2YWxlbnRSZXNvdXJjZU9yaWdpbikgeworICAgICAgICAgICAgc2V0RW5hYmxl
RmVhdHVyZSh0cnVlLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5z
ZXRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2UocHJldmFsZW50UmVzb3VyY2VPcmlnaW4sIHRy
dWUsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoIXRlc3RSdW5uZXIuaXNT
dGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2UocHJldmFsZW50UmVzb3VyY2VPcmlnaW4pKQorICAg
ICAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiSG9zdCBkaWQgbm90IGdldCBzZXQgYXMg
cHJldmFsZW50IHJlc291cmNlLiIpOworICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnN0
YXRpc3RpY3NVcGRhdGVDb29raWVCbG9ja2luZyhuYXZpZ2F0ZUNyb3NzT3JpZ2luKTsKKyAgICAg
ICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgfSk7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICB0ZXN0UnVubmVyLmNsZWFyU3RhdGlzdGljc0RhdGFGb3JEb21haW4oaG9zdCk7Cisg
ICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCk7CisgICAg
ICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
ICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAg
fQorICAgIH0KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3JlbW92ZS13ZWJzaXRlLWRh
dGEtZm9yLW9yaWdpbi1kZWxldGVzLW1peGVkLXN0YXRpc3RpY3MtZW50cmllcy1kYXRhYmFzZS1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MvcmVtb3ZlLXdlYnNpdGUtZGF0YS1mb3Itb3JpZ2luLWRlbGV0ZXMtbWl4ZWQtc3RhdGlzdGlj
cy1lbnRyaWVzLWRhdGFiYXNlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMjg3MmNkOWQ3YTA4
ZTAzNjFiMzI2YWI5MjAxZDVhZjczODEwYmVmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3JlbW92ZS13ZWJzaXRlLWRhdGEt
Zm9yLW9yaWdpbi1kZWxldGVzLW1peGVkLXN0YXRpc3RpY3MtZW50cmllcy1kYXRhYmFzZS1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSw1IEBACitQQVNTIERvbWFpbiBJRCB3YXMgc3VjY2Vzc2Z1bGx5
IGRlbGV0ZWQgZnJvbSB0aGUgZGF0YWJhc2UuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3JlbW92ZS13ZWJzaXRlLWRhdGEtZm9yLW9yaWdpbi1k
ZWxldGVzLW1peGVkLXN0YXRpc3RpY3MtZW50cmllcy1kYXRhYmFzZS5odG1sIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3JlbW92ZS13ZWJzaXRlLWRhdGEt
Zm9yLW9yaWdpbi1kZWxldGVzLW1peGVkLXN0YXRpc3RpY3MtZW50cmllcy1kYXRhYmFzZS5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmY3MzY4MmVjNmZhNTk3ODk0ZTU4ODUzOGRmNGRhZjJjNjdjODJlMzQKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3MvcmVtb3ZlLXdlYnNpdGUtZGF0YS1mb3Itb3JpZ2luLWRlbGV0ZXMtbWl4ZWQtc3RhdGlz
dGljcy1lbnRyaWVzLWRhdGFiYXNlLmh0bWwKQEAgLTAsMCArMSw1NSBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbCBsYW5nPSJlbiI+Cis8aGVhZD4KKyAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+
CisgICAgPHRpdGxlPlRlc3RzIHRoYXQgcmVtb3ZhbCBvZiB3ZWJzaXRlIGRhdGEgZGVsZXRlcyBJ
VFAgZGF0YTwvdGl0bGU+CisgICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10
ZXN0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0aWwuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorICAgIGNvbnN0IGhvc3RVbmRlclRl
c3QgPSAiMTI3LjAuMC4xIjsKKyAgICBjb25zdCBzdGF0aXN0aWNzVXJsID0gImh0dHA6Ly8iICsg
aG9zdFVuZGVyVGVzdCArICIvdGVtcCI7CisgICAgY29uc3QgdG9wRnJhbWVPcmlnaW4xID0gImh0
dHA6Ly8xMjcuMC4wLjI6ODAwMC90ZW1wIjsKKyAgICBjb25zdCB0b3BGcmFtZU9yaWdpbjIgPSAi
aHR0cDovLzEyNy4wLjAuMzo4MDAwL3RlbXAiOworICAgIGNvbnN0IHRvcEZyYW1lT3JpZ2luMyA9
ICJodHRwOi8vMTI3LjAuMC40OjgwMDAvdGVtcCI7CisgICAgY29uc3QgdG9wRnJhbWVPcmlnaW40
ID0gImh0dHA6Ly8xMjcuMC4wLjU6ODAwMC90ZW1wIjsKKworICAgIGZ1bmN0aW9uIGNvbXBsZXRl
VGVzdCgpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5jbGVhclN0YXRpc3RpY3NEYXRhRm9yRG9tYWlu
KGhvc3RVbmRlclRlc3QpOworICAgICAgICAvLyBNdXN0IHVzZSBkb21haW5JRCB0byBlbnN1cmUg
dGhpcyB3YXMgcHJvcGVybHkKKyAgICAgICAgLy8gZGVsZXRlZCwgb3RoZXJ3aXNlIHRoZSBsYWNr
IG9mIHJlZ2lzdHJhYmxlIGRvbWFpbiAtLT4gZG9tYWluSUQgbWFwcGluZworICAgICAgICAvLyBj
b3VsZCBjcmVhdGUgYSBmYWxzZS1wb3NpdGl2ZSB0ZXN0IHJlc3VsdCBldmVuIHdoZW4gdGhlIGRv
bWFpbklEIHBlcnNpc3RzLgorICAgICAgICBpZiAodGVzdFJ1bm5lci5kb2VzU3RhdGlzdGljc0Rv
bWFpbklERXhpc3RJbkRhdGFiYXNlKDEpKQorICAgICAgICAgICAgdGVzdEZhaWxlZCgiRG9tYWlu
IElEIHdhcyBub3QgZGVsZXRlZCBmcm9tIHRoZSBkYXRhYmFzZS4iKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgdGVzdFBhc3NlZCgiRG9tYWluIElEIHdhcyBzdWNjZXNzZnVsbHkgZGVsZXRl
ZCBmcm9tIHRoZSBkYXRhYmFzZS4iKQorICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAg
ICB9KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBydW5UZXN0UnVubmVyVGVzdCgpIHsKKyAgICAg
ICAgLy8gQ3JlYXRlIGVudHJpZXMgaW4gbXVsdGlwbGUgZGF0YWJhc2UgdGFibGVzIHdpdGggdGhl
IGhvc3RVbmRlclRlc3QuCisgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1N1YmZyYW1l
VW5kZXJUb3BGcmFtZU9yaWdpbihzdGF0aXN0aWNzVXJsLCB0b3BGcmFtZU9yaWdpbjEpOworICAg
ICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmln
aW4odG9wRnJhbWVPcmlnaW4yLCBzdGF0aXN0aWNzVXJsKTsKKyAgICAgICAgdGVzdFJ1bm5lci5z
ZXRTdGF0aXN0aWNzU3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luKHN0YXRpc3RpY3NVcmws
IHRvcEZyYW1lT3JpZ2luMyk7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1N1YnJl
c291cmNlVW5pcXVlUmVkaXJlY3RUbyhzdGF0aXN0aWNzVXJsLCB0b3BGcmFtZU9yaWdpbjQpOwor
CisgICAgICAgIGlmICghdGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NSZWdpc3RlcmVkQXNTdWJGcmFt
ZVVuZGVyKHN0YXRpc3RpY3NVcmwsIHRvcEZyYW1lT3JpZ2luMSkKKyAgICAgICAgICAgICAgICB8
fCAhdGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyKHRv
cEZyYW1lT3JpZ2luMiwgc3RhdGlzdGljc1VybCkKKyAgICAgICAgICAgICAgICB8fCAhdGVzdFJ1
bm5lci5pc1N0YXRpc3RpY3NSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyKHN0YXRpc3RpY3NV
cmwsIHRvcEZyYW1lT3JpZ2luMykKKyAgICAgICAgICAgICAgICB8fCAhdGVzdFJ1bm5lci5pc1N0
YXRpc3RpY3NSZWdpc3RlcmVkQXNSZWRpcmVjdGluZ1RvKHN0YXRpc3RpY3NVcmwsIHRvcEZyYW1l
T3JpZ2luNCkpCisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJGYWlsZWQgdG8gcmVnaXN0ZXIgc3Vi
U3RhdGlzdGljcy4iKTsKKworICAgICAgICBjb21wbGV0ZVRlc3QoKTsKKyAgICB9CisKKyAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIgJiYgd2luZG93LmludGVybmFscykgeworICAgICAgICB0ZXN0
UnVubmVyLnNldFVzZUlUUERhdGFiYXNlKHRydWUpOworICAgICAgICB0ZXN0UnVubmVyLndhaXRV
bnRpbERvbmUoKTsKKyAgICAgICAgc2V0RW5hYmxlRmVhdHVyZSh0cnVlLCBydW5UZXN0UnVubmVy
VGVzdCk7CisgICAgfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVtb3ZlLXdlYnNp
dGUtZGF0YS1mb3Itb3JpZ2luLWRlbGV0ZXMtbWl4ZWQtc3RhdGlzdGljcy1lbnRyaWVzLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9y
ZW1vdmUtd2Vic2l0ZS1kYXRhLWZvci1vcmlnaW4tZGVsZXRlcy1taXhlZC1zdGF0aXN0aWNzLWVu
dHJpZXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVhYjJiZmE5NDAxZmEyYmU1MTEzMTA0YjU4
NDA5MWUxZGExYmViNGIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVtb3ZlLXdlYnNpdGUtZGF0YS1mb3Itb3JpZ2luLWRl
bGV0ZXMtbWl4ZWQtc3RhdGlzdGljcy1lbnRyaWVzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUg
QEAKK1BBU1MgSG9zdCBkZWxldGVkIGZyb20gbWVtb3J5IHN0b3JlLgorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZW1vdmUtd2Vic2l0ZS1kYXRh
LWZvci1vcmlnaW4tZGVsZXRlcy1taXhlZC1zdGF0aXN0aWNzLWVudHJpZXMuaHRtbCBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZW1vdmUtd2Vic2l0ZS1k
YXRhLWZvci1vcmlnaW4tZGVsZXRlcy1taXhlZC1zdGF0aXN0aWNzLWVudHJpZXMuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4yOTk1MWU5NzQ1MDM3NTA3MGIyZjM0MTVkNDZkYzEzZDk5NmQyYTkxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
L3JlbW92ZS13ZWJzaXRlLWRhdGEtZm9yLW9yaWdpbi1kZWxldGVzLW1peGVkLXN0YXRpc3RpY3Mt
ZW50cmllcy5odG1sCkBAIC0wLDAgKzEsNTUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWwgbGFu
Zz0iZW4iPgorPGhlYWQ+CisgICAgPG1ldGEgY2hhcnNldD0iVVRGLTgiPgorICAgIDx0aXRsZT5U
ZXN0cyB0aGF0IHJlbW92YWwgb2Ygd2Vic2l0ZSBkYXRhIGRlbGV0ZXMgSVRQIGRhdGE8L3RpdGxl
PgorICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3Jp
cHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPHNjcmlwdD4KKyAgICBjb25zdCBob3N0VW5kZXJUZXN0ID0gIjEyNy4wLjAu
MSI7CisgICAgY29uc3Qgc3RhdGlzdGljc1VybCA9ICJodHRwOi8vIiArIGhvc3RVbmRlclRlc3Qg
KyAiL3RlbXAiOworICAgIGNvbnN0IHRvcEZyYW1lT3JpZ2luMSA9ICJodHRwOi8vMTI3LjAuMC4y
OjgwMDAvdGVtcCI7CisgICAgY29uc3QgdG9wRnJhbWVPcmlnaW4yID0gImh0dHA6Ly8xMjcuMC4w
LjM6ODAwMC90ZW1wIjsKKyAgICBjb25zdCB0b3BGcmFtZU9yaWdpbjMgPSAiaHR0cDovLzEyNy4w
LjAuNDo4MDAwL3RlbXAiOworICAgIGNvbnN0IHRvcEZyYW1lT3JpZ2luNCA9ICJodHRwOi8vMTI3
LjAuMC41OjgwMDAvdGVtcCI7CisKKyAgICBmdW5jdGlvbiBjb21wbGV0ZVRlc3QoKSB7CisgICAg
ICAgIGlmICh0ZXN0UnVubmVyLmlzU3RhdGlzdGljc1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5kZXIo
c3RhdGlzdGljc1VybCwgdG9wRnJhbWVPcmlnaW4xKQorICAgICAgICAgICAgICAgIHx8IHRlc3RS
dW5uZXIuaXNTdGF0aXN0aWNzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlcih0b3BGcmFtZU9y
aWdpbjIsIHN0YXRpc3RpY3NVcmwpCisgICAgICAgICAgICAgICAgfHwgdGVzdFJ1bm5lci5pc1N0
YXRpc3RpY3NSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyKHN0YXRpc3RpY3NVcmwsIHRvcEZy
YW1lT3JpZ2luMykKKyAgICAgICAgICAgICAgICB8fCB0ZXN0UnVubmVyLmlzU3RhdGlzdGljc1Jl
Z2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8oc3RhdGlzdGljc1VybCwgdG9wRnJhbWVPcmlnaW40KSkK
KyAgICAgICAgICAgIHRlc3RGYWlsZWQoIkhvc3Qgbm90IGRlbGV0ZWQgZnJvbSBtZW1vcnkgc3Rv
cmUuIik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRlc3RQYXNzZWQoIkhvc3QgZGVsZXRl
ZCBmcm9tIG1lbW9yeSBzdG9yZS4iKTsKKworICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNl
LCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAg
ICAgICB9KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBydW5UZXN0UnVubmVyVGVzdCgpIHsKKyAg
ICAgICAgLy8gQ3JlYXRlIGVudHJpZXMgaW4gbXVsdGlwbGUgZGF0YWJhc2UgdGFibGVzIHdpdGgg
dGhlIGhvc3RVbmRlclRlc3QuCisgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1N1YmZy
YW1lVW5kZXJUb3BGcmFtZU9yaWdpbihzdGF0aXN0aWNzVXJsLCB0b3BGcmFtZU9yaWdpbjEpOwor
ICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVP
cmlnaW4odG9wRnJhbWVPcmlnaW4yLCBzdGF0aXN0aWNzVXJsKTsKKyAgICAgICAgdGVzdFJ1bm5l
ci5zZXRTdGF0aXN0aWNzU3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luKHN0YXRpc3RpY3NV
cmwsIHRvcEZyYW1lT3JpZ2luMyk7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1N1
YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyhzdGF0aXN0aWNzVXJsLCB0b3BGcmFtZU9yaWdpbjQp
OworCisgICAgICAgIGlmICghdGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NSZWdpc3RlcmVkQXNTdWJG
cmFtZVVuZGVyKHN0YXRpc3RpY3NVcmwsIHRvcEZyYW1lT3JpZ2luMSkKKyAgICAgICAgICAgICAg
ICB8fCAhdGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVy
KHRvcEZyYW1lT3JpZ2luMiwgc3RhdGlzdGljc1VybCkKKyAgICAgICAgICAgICAgICB8fCAhdGVz
dFJ1bm5lci5pc1N0YXRpc3RpY3NSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyKHN0YXRpc3Rp
Y3NVcmwsIHRvcEZyYW1lT3JpZ2luMykKKyAgICAgICAgICAgICAgICB8fCAhdGVzdFJ1bm5lci5p
c1N0YXRpc3RpY3NSZWdpc3RlcmVkQXNSZWRpcmVjdGluZ1RvKHN0YXRpc3RpY3NVcmwsIHRvcEZy
YW1lT3JpZ2luNCkpCisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJGYWlsZWQgdG8gcmVnaXN0ZXIg
c3ViU3RhdGlzdGljcy4iKTsKKworICAgICAgICB0ZXN0UnVubmVyLmNsZWFyU3RhdGlzdGljc0Rh
dGFGb3JEb21haW4oaG9zdFVuZGVyVGVzdCk7CisgICAgICAgIGNvbXBsZXRlVGVzdCgpOworICAg
IH0KKworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lciAmJiB3aW5kb3cuaW50ZXJuYWxzKSB7Cisg
ICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICBzZXRFbmFibGVGZWF0
dXJlKHRydWUsIHJ1blRlc3RSdW5uZXJUZXN0KTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy9yZW1vdmUtd2Vic2l0ZS1kYXRhLWZvci1vcmlnaW4tZGVsZXRlcy10aGlyZC1w
YXJ0eS1zY3JpcHQtbG9hZHMtZGF0YWJhc2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3JlbW92ZS13ZWJzaXRlLWRhdGEtZm9yLW9y
aWdpbi1kZWxldGVzLXRoaXJkLXBhcnR5LXNjcmlwdC1sb2Fkcy1kYXRhYmFzZS1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYzkzZTg2NzIxNzI0MmMyYjY5OWU3Y2I5OTU3NDgxZGI1NDAxNDYxNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy9yZW1vdmUtd2Vic2l0ZS1kYXRhLWZvci1vcmlnaW4tZGVsZXRlcy10aGlyZC1wYXJ0
eS1zY3JpcHQtbG9hZHMtZGF0YWJhc2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCitQQVNTIERvbWFp
biBJRCB3YXMgc3VjY2Vzc2Z1bGx5IGRlbGV0ZWQgZnJvbSB0aGUgZGF0YWJhc2UuCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZW1v
dmUtd2Vic2l0ZS1kYXRhLWZvci1vcmlnaW4tZGVsZXRlcy10aGlyZC1wYXJ0eS1zY3JpcHQtbG9h
ZHMtZGF0YWJhc2UuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy9yZW1vdmUtd2Vic2l0ZS1kYXRhLWZvci1vcmlnaW4tZGVsZXRlcy10aGlyZC1wYXJ0
eS1zY3JpcHQtbG9hZHMtZGF0YWJhc2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYTlkMTRjYmYzNmUzZTM0
MDI2NTQ2Yzc0ZGM5MDU0MDhkZDFiNGU4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3JlbW92ZS13ZWJzaXRlLWRhdGEtZm9y
LW9yaWdpbi1kZWxldGVzLXRoaXJkLXBhcnR5LXNjcmlwdC1sb2Fkcy1kYXRhYmFzZS5odG1sCkBA
IC0wLDAgKzEsNTcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWwgbGFuZz0iZW4iPgorPGhlYWQ+
CisgICAgPG1ldGEgY2hhcnNldD0iVVRGLTgiPgorICAgIDx0aXRsZT5UZXN0cyB0aGF0IHJlbW92
YWwgb2Ygd2Vic2l0ZSBkYXRhIGRlbGV0ZXMgSVRQIGRhdGE8L3RpdGxlPgorICAgIDxzY3JpcHQg
c3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlw
dCBzcmM9InJlc291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9h
ZD0icnVuVGVzdCgpIj4KKzxzY3JpcHQ+CisgICAgY29uc3QgaG9zdCA9ICJsb2NhbGhvc3QiOwor
ICAgIGNvbnN0IHRoaXJkUGFydHlPcmlnaW4gPSAiaHR0cDovL2xvY2FsaG9zdDo4MDAwIjsKKyAg
ICBjb25zdCB0aGlyZFBhcnR5QmFzZVVybCA9IHRoaXJkUGFydHlPcmlnaW4gKyAiL3Jlc291cmNl
TG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzIjsKKworICAgIGZ1bmN0aW9uIGZpbmlzaFRlc3QoKSB7
CisgICAgICAgIHRlc3RSdW5uZXIuY2xlYXJTdGF0aXN0aWNzRGF0YUZvckRvbWFpbihob3N0KTsK
KyAgICAgICAgLy8gTXVzdCB1c2UgZG9tYWluSUQgdG8gZW5zdXJlIHRoaXMgd2FzIHByb3Blcmx5
CisgICAgICAgIC8vIGRlbGV0ZWQsIG90aGVyd2lzZSB0aGUgbGFjayBvZiByZWdpc3RyYWJsZSBk
b21haW4gLS0+IGRvbWFpbklEIG1hcHBpbmcKKyAgICAgICAgLy8gY291bGQgY3JlYXRlIGEgZmFs
c2UtcG9zaXRpdmUgdGVzdCByZXN1bHQgZXZlbiB3aGVuIHRoZSBkb21haW5JRCBwZXJzaXN0cy4K
KyAgICAgICAgaWYgKHRlc3RSdW5uZXIuZG9lc1N0YXRpc3RpY3NEb21haW5JREV4aXN0SW5EYXRh
YmFzZSgxKSkKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoIkRvbWFpbiBJRCB3YXMgbm90IGRlbGV0
ZWQgZnJvbSB0aGUgZGF0YWJhc2UuIik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRlc3RQ
YXNzZWQoIkRvbWFpbiBJRCB3YXMgc3VjY2Vzc2Z1bGx5IGRlbGV0ZWQgZnJvbSB0aGUgZGF0YWJh
c2UuIikKKyAgICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSwgZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgfSk7CisgICAgfQorCisg
ICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICAgICAgc3dpdGNoIChkb2N1bWVudC5sb2NhdGlv
bi5oYXNoKSB7CisgICAgICAgICAgICBjYXNlICIiOgorICAgICAgICAgICAgICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lciAmJiB3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgICAgICAgICAgICAg
IHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICAgICAgICAgICAgICB0ZXN0UnVu
bmVyLnNldFVzZUlUUERhdGFiYXNlKHRydWUpOworICAgICAgICAgICAgICAgICAgICBzZXRFbmFi
bGVGZWF0dXJlKHRydWUsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgdGVz
dFJ1bm5lci5zZXRTdGF0aXN0aWNzTm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5l
ZCh0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuaW5zdGFsbFN0YXRp
c3RpY3NEaWRTY2FuRGF0YVJlY29yZHNDYWxsYmFjayhmaW5pc2hUZXN0KTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGRvY3VtZW50LmxvY2F0aW9uLmhhc2ggPSAic3RlcDEiOworICAgICAgICAg
ICAgICAgICAgICAgICAgcnVuVGVzdCgpOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICIj
c3RlcDEiOgorICAgICAgICAgICAgICAgIGRvY3VtZW50LmxvY2F0aW9uLmhhc2ggPSAic3RlcDIi
OworICAgICAgICAgICAgICAgIGxldCBzY3JpcHRFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgic2NyaXB0Iik7CisgICAgICAgICAgICAgICAgc2NyaXB0RWxlbWVudC5vbmxvYWQgPSBy
dW5UZXN0OworICAgICAgICAgICAgICAgIHNjcmlwdEVsZW1lbnQuc3JjID0gdGhpcmRQYXJ0eUJh
c2VVcmwgKyAiL2R1bW15LmpzP2R1bW15UGFyYW09IiArIE1hdGgucmFuZG9tKCk7CisgICAgICAg
ICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChzY3JpcHRFbGVtZW50KTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgIiNzdGVwMiI6CisgICAgICAgICAg
ICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzTm90aWZ5T2JzZXJ2ZXIoKTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzL3JlbW92ZS13ZWJzaXRlLWRhdGEtZm9yLW9yaWdpbi1kZWxldGVzLXRoaXJkLXBhcnR5LXNj
cmlwdC1sb2Fkcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNl
TG9hZFN0YXRpc3RpY3MvcmVtb3ZlLXdlYnNpdGUtZGF0YS1mb3Itb3JpZ2luLWRlbGV0ZXMtdGhp
cmQtcGFydHktc2NyaXB0LWxvYWRzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYzYyZGVlM2Mx
OGEyMjJkZWU1NjJlNWEwOWZiY2Y5OTg1YTQ2YjUzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3JlbW92ZS13ZWJzaXRlLWRh
dGEtZm9yLW9yaWdpbi1kZWxldGVzLXRoaXJkLXBhcnR5LXNjcmlwdC1sb2Fkcy1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwxNCBAQAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKK1Jlc291cmNlIGxvYWQgc3RhdGlzdGljczoKKworUmVnaXN0cmFibGUg
ZG9tYWluOiAxMjcuMC4wLjEKKyAgICBoYWRVc2VySW50ZXJhY3Rpb246IE5vCisgICAgbW9zdFJl
Y2VudFVzZXJJbnRlcmFjdGlvbjogLTEKKyAgICBncmFuZGZhdGhlcmVkOiBObworICAgIGdvdExp
bmtEZWNvcmF0aW9uRnJvbVByZXZhbGVudFJlc291cmNlOiBObworICAgIGlzUHJldmFsZW50UmVz
b3VyY2U6IE5vCisgICAgaXNWZXJ5UHJldmFsZW50UmVzb3VyY2U6IE5vCisgICAgZGF0YVJlY29y
ZHNSZW1vdmVkOiAwCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNl
TG9hZFN0YXRpc3RpY3MvcmVtb3ZlLXdlYnNpdGUtZGF0YS1mb3Itb3JpZ2luLWRlbGV0ZXMtdGhp
cmQtcGFydHktc2NyaXB0LWxvYWRzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291
cmNlTG9hZFN0YXRpc3RpY3MvcmVtb3ZlLXdlYnNpdGUtZGF0YS1mb3Itb3JpZ2luLWRlbGV0ZXMt
dGhpcmQtcGFydHktc2NyaXB0LWxvYWRzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzMzZTk4ZDc1ZWExMGNl
YjA0Yzc0NjU3ZGE0MGU4MGRlNzgzMDJkNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZW1vdmUtd2Vic2l0ZS1kYXRhLWZv
ci1vcmlnaW4tZGVsZXRlcy10aGlyZC1wYXJ0eS1zY3JpcHQtbG9hZHMuaHRtbApAQCAtMCwwICsx
LDUwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sIGxhbmc9ImVuIj4KKzxoZWFkPgorICAgIDxt
ZXRhIGNoYXJzZXQ9IlVURi04Ij4KKyAgICA8dGl0bGU+VGVzdHMgdGhhdCByZW1vdmFsIG9mIHdl
YnNpdGUgZGF0YSBkZWxldGVzIElUUCBkYXRhPC90aXRsZT4KKyAgICA8c2NyaXB0IHNyYz0iL2pz
LXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRl
c3QoKSI+Cis8c2NyaXB0PgorICAgIGNvbnN0IGhvc3QgPSAibG9jYWxob3N0IjsKKyAgICBjb25z
dCB0aGlyZFBhcnR5T3JpZ2luID0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMCI7CisgICAgY29uc3Qg
dGhpcmRQYXJ0eUJhc2VVcmwgPSB0aGlyZFBhcnR5T3JpZ2luICsgIi9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzL3Jlc291cmNlcyI7CisKKyAgICBmdW5jdGlvbiBmaW5pc2hUZXN0KCkgeworICAgICAg
ICB0ZXN0UnVubmVyLmNsZWFyU3RhdGlzdGljc0RhdGFGb3JEb21haW4oaG9zdCk7CisgICAgICAg
IHRlc3RSdW5uZXIuZHVtcFJlc291cmNlTG9hZFN0YXRpc3RpY3MoKTsKKyAgICAgICAgc2V0RW5h
YmxlRmVhdHVyZShmYWxzZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gcnVuVGVzdCgp
IHsKKyAgICAgICAgc3dpdGNoIChkb2N1bWVudC5sb2NhdGlvbi5oYXNoKSB7CisgICAgICAgICAg
ICBjYXNlICIiOgorICAgICAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lciAmJiB3aW5k
b3cuaW50ZXJuYWxzKSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGls
RG9uZSgpOworICAgICAgICAgICAgICAgICAgICBzZXRFbmFibGVGZWF0dXJlKHRydWUsIGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNz
Tm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZCh0cnVlKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHRlc3RSdW5uZXIuaW5zdGFsbFN0YXRpc3RpY3NEaWRTY2FuRGF0YVJlY29y
ZHNDYWxsYmFjayhmaW5pc2hUZXN0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50
LmxvY2F0aW9uLmhhc2ggPSAic3RlcDEiOworICAgICAgICAgICAgICAgICAgICAgICAgcnVuVGVz
dCgpOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICIjc3RlcDEiOgorICAgICAgICAgICAg
ICAgIGRvY3VtZW50LmxvY2F0aW9uLmhhc2ggPSAic3RlcDIiOworICAgICAgICAgICAgICAgIGxl
dCBzY3JpcHRFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7CisgICAg
ICAgICAgICAgICAgc2NyaXB0RWxlbWVudC5vbmxvYWQgPSBydW5UZXN0OworICAgICAgICAgICAg
ICAgIHNjcmlwdEVsZW1lbnQuc3JjID0gdGhpcmRQYXJ0eUJhc2VVcmwgKyAiL2R1bW15LmpzP2R1
bW15UGFyYW09IiArIE1hdGgucmFuZG9tKCk7CisgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9k
eS5hcHBlbmRDaGlsZChzY3JpcHRFbGVtZW50KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIGNhc2UgIiNzdGVwMiI6CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zdGF0
aXN0aWNzTm90aWZ5T2JzZXJ2ZXIoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorICAgIH0KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>