<?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>209032</bug_id>
          
          <creation_ts>2020-03-12 18:30:36 -0700</creation_ts>
          <short_desc>Report all third party loads on a per-page basis</short_desc>
          <delta_ts>2020-03-13 12:44:17 -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>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>japhet</cc>
    
    <cc>toyoshim</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wilander</cc>
    
    <cc>yutak</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1629445</commentid>
    <comment_count>0</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-03-12 18:30:36 -0700</bug_when>
    <thetext>WKWebsiteDataStore should have an SPI call to report all third party domains loaded for a specific WebView. This should replace the call reporting only prevalent domains.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1629446</commentid>
    <comment_count>1</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-03-12 18:31:07 -0700</bug_when>
    <thetext>&lt;rdar://problem/60397323&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1629447</commentid>
    <comment_count>2</comment_count>
      <attachid>393438</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-03-12 18:44:38 -0700</bug_when>
    <thetext>Created attachment 393438
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1629452</commentid>
    <comment_count>3</comment_count>
      <attachid>393441</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-03-12 19:06:37 -0700</bug_when>
    <thetext>Created attachment 393441
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1629464</commentid>
    <comment_count>4</comment_count>
      <attachid>393441</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-03-12 19:53:21 -0700</bug_when>
    <thetext>Comment on attachment 393441
Patch

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

Bots seem unhappy.

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm:393
&gt; +- (void)_getLoadedDomainsFor:(WKWebView *)webView completionHandler:(void (^)(NSArray&lt;NSString *&gt; *domains))completionHandler

If this truly returns third-party loads I think the name should include that, _getLoadedThirdPartyDomains(). Likewise for the rest of the re-naming.

&gt; Tools/WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:348
&gt; +    void getLoadedDomains(object callback);

Likewise for re-naming in Tools code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1629465</commentid>
    <comment_count>5</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-03-12 19:54:49 -0700</bug_when>
    <thetext>Build failure in WebPage.cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1629605</commentid>
    <comment_count>6</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-03-13 08:09:04 -0700</bug_when>
    <thetext>(In reply to John Wilander from comment #5)
&gt; Build failure in WebPage.cpp.

(In reply to John Wilander from comment #4)
&gt; Comment on attachment 393441 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=393441&amp;action=review
&gt; 
&gt; Bots seem unhappy.
&gt; 

Whoops, not sure why that wasn&apos;t caught by my local build

&gt; &gt; Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm:393
&gt; &gt; +- (void)_getLoadedDomainsFor:(WKWebView *)webView completionHandler:(void (^)(NSArray&lt;NSString *&gt; *domains))completionHandler
&gt; 
&gt; If this truly returns third-party loads I think the name should include
&gt; that, _getLoadedThirdPartyDomains(). Likewise for the rest of the re-naming.
&gt; 
&gt; &gt; Tools/WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:348
&gt; &gt; +    void getLoadedDomains(object callback);
&gt; 
&gt; Likewise for re-naming in Tools code.

Good call, uploading a new patch with this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1629613</commentid>
    <comment_count>7</comment_count>
      <attachid>393483</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-03-13 08:25:28 -0700</bug_when>
    <thetext>Created attachment 393483
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1629618</commentid>
    <comment_count>8</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-03-13 08:45:47 -0700</bug_when>
    <thetext>(In reply to katherine_cheney from comment #7)
&gt; Created attachment 393483 [details]
&gt; Patch

Style bot always seems upset when adding a function to Source/WebCore/loader/FrameLoaderClient.h :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1629628</commentid>
    <comment_count>9</comment_count>
      <attachid>393483</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-03-13 09:02:08 -0700</bug_when>
    <thetext>Comment on attachment 393483
Patch

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

&gt; Source/WebKit/WebProcess/WebPage/WebPage.h:1192
&gt; +    void getLoadedThirdPartyDomains(CompletionHandler&lt;void(Vector&lt;WebCore::RegistrableDomain&gt;)&gt;&amp;&amp;);

No get prefixes for getters please.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1629631</commentid>
    <comment_count>10</comment_count>
      <attachid>393483</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-03-13 09:08:31 -0700</bug_when>
    <thetext>Comment on attachment 393483
Patch

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

&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:6700
&gt; +    m_loadedThirdPartyDomains.add(domain);

Where in your code are you checking that it is a third-party domain? As far as I can tell, you are adding the first-party domain to this set too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1629636</commentid>
    <comment_count>11</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-03-13 09:19:27 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #10)
&gt; Comment on attachment 393483 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=393483&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:6700
&gt; &gt; +    m_loadedThirdPartyDomains.add(domain);
&gt; 
&gt; Where in your code are you checking that it is a third-party domain? As far
&gt; as I can tell, you are adding the first-party domain to this set too.

You&apos;re right. I think I need to add a check for if the mainFrameURL == targetURL</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1629638</commentid>
    <comment_count>12</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-03-13 09:22:56 -0700</bug_when>
    <thetext>(In reply to katherine_cheney from comment #11)
&gt; (In reply to Chris Dumez from comment #10)
&gt; &gt; Comment on attachment 393483 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=393483&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:6700
&gt; &gt; &gt; +    m_loadedThirdPartyDomains.add(domain);
&gt; &gt; 
&gt; &gt; Where in your code are you checking that it is a third-party domain? As far
&gt; &gt; as I can tell, you are adding the first-party domain to this set too.
&gt; 
&gt; You&apos;re right. I think I need to add a check for if the mainFrameURL ==
&gt; targetURL

I believe you want to be checking registrable domains, not URLs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1629640</commentid>
    <comment_count>13</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-03-13 09:24:13 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #12)
&gt; (In reply to katherine_cheney from comment #11)
&gt; &gt; (In reply to Chris Dumez from comment #10)
&gt; &gt; &gt; Comment on attachment 393483 [details]
&gt; &gt; &gt; Patch
&gt; &gt; &gt; 
&gt; &gt; &gt; View in context:
&gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=393483&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:6700
&gt; &gt; &gt; &gt; +    m_loadedThirdPartyDomains.add(domain);
&gt; &gt; &gt; 
&gt; &gt; &gt; Where in your code are you checking that it is a third-party domain? As far
&gt; &gt; &gt; as I can tell, you are adding the first-party domain to this set too.
&gt; &gt; 
&gt; &gt; You&apos;re right. I think I need to add a check for if the mainFrameURL ==
&gt; &gt; targetURL
&gt; 
&gt; I believe you want to be checking registrable domains, not URLs.

Yes, typo. I will be comparing the RegistrableDomains in WebPage::addLoadedThirdPartyDomain before adding to the HashSet. Thank you for pointing this out!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1629658</commentid>
    <comment_count>14</comment_count>
      <attachid>393494</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-03-13 09:58:01 -0700</bug_when>
    <thetext>Created attachment 393494
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1629695</commentid>
    <comment_count>15</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-03-13 10:48:43 -0700</bug_when>
    <thetext>(In reply to katherine_cheney from comment #11)
&gt; (In reply to Chris Dumez from comment #10)
&gt; &gt; Comment on attachment 393483 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=393483&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:6700
&gt; &gt; &gt; +    m_loadedThirdPartyDomains.add(domain);
&gt; &gt; 
&gt; &gt; Where in your code are you checking that it is a third-party domain? As far
&gt; &gt; as I can tell, you are adding the first-party domain to this set too.
&gt; 
&gt; You&apos;re right. I think I need to add a check for if the mainFrameURL ==
&gt; targetURL

I actually thought about this but reckoned that it must be checked already since the same bug would otherwise apply to existing code with the isPrevalent check. Apparently we do have that bug in trunk then. Good catch, Chris!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1629700</commentid>
    <comment_count>16</comment_count>
      <attachid>393494</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-03-13 10:50:19 -0700</bug_when>
    <thetext>Comment on attachment 393494
Patch

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

&gt; Source/WebCore/Modules/websockets/WebSocket.cpp:331
&gt; +            frame-&gt;loader().client().addLoadedThirdPartyDomain(WTFMove(domain));

You&apos;re calling addLoadedThirdPartyDomain() with a domain that is not necessarily third-party. As a result, I think this method is badly named. Maybe something like FrameLoaderClient::didLoadFromRegistrableDomain(), very generic and then it is up to the client implementation to decide what to do with it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1629752</commentid>
    <comment_count>17</comment_count>
      <attachid>393513</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-03-13 11:56:58 -0700</bug_when>
    <thetext>Created attachment 393513
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1629753</commentid>
    <comment_count>18</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-03-13 11:57:30 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #16)
&gt; Comment on attachment 393494 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=393494&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/websockets/WebSocket.cpp:331
&gt; &gt; +            frame-&gt;loader().client().addLoadedThirdPartyDomain(WTFMove(domain));
&gt; 
&gt; You&apos;re calling addLoadedThirdPartyDomain() with a domain that is not
&gt; necessarily third-party. As a result, I think this method is badly named.
&gt; Maybe something like FrameLoaderClient::didLoadFromRegistrableDomain(), very
&gt; generic and then it is up to the client implementation to decide what to do
&gt; with it.

Made these changes, thanks Chris!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1629778</commentid>
    <comment_count>19</comment_count>
      <attachid>393513</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-03-13 12:43:48 -0700</bug_when>
    <thetext>Comment on attachment 393513
Patch for landing

Clearing flags on attachment: 393513

Committed r258421: &lt;https://trac.webkit.org/changeset/258421&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1629779</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-03-13 12:43:50 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1629780</commentid>
    <comment_count>21</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-03-13 12:44:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/60429255&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393438</attachid>
            <date>2020-03-12 18:44:38 -0700</date>
            <delta_ts>2020-03-12 19:06:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209032-20200312184438.patch</filename>
            <type>text/plain</type>
            <size>44224</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4MzQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDA2ZDVjMGY4Mzc3Y2EyMzcy
MTZlMDdlNjU3N2ZmMmEyZjM0ODMxMmUuLmM3ZmIyNTMzNTVhMWVlMDgxODRiOTU5YTc0NTkxZmI3
ZDVjNDZjODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMjAtMDMtMTIgIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVwb3J0IGFsbCB0
aGlyZCBwYXJ0eSBsb2FkcyBvbiBhIHBlci1wYWdlIGJhc2lzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDkwMzIKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzYwMzk3MzIzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9sb2FkZWQtcmVn
aXN0cmFibGUtZG9tYWlucy1nZXQtcmVwb3J0ZWQuaHRtbAorCisgICAgICAgIFJlbW92ZWQgSVBD
IHRvIHRoZSBOZXR3b3JrIFByb2Nlc3MgYXNraW5nIGlmIGEgcmVzb3VyY2UgbG9hZCBpcyBmcm9t
CisgICAgICAgIGEgcHJldmFsZW50IGRvbWFpbi4gVGhpcyBub3cgc3RvcmVzIGFuZCBzZW5kcyBh
bGwgbG9hZGVkIHJlZ2lzdHJhYmxlCisgICAgICAgIGRvbWFpbnMuIFRoaXMgcGF0Y2ggaXMgbW9z
dGx5IHVwZGF0aW5nIG5hbWluZyB0byByZWZsZWN0IHRoaXMgYW5kCisgICAgICAgIGRlbGV0aW5n
IHVubmVjZXNzYXJ5IGNvZGUuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmlzUHJldmFsZW50U3Vi
cmVzb3VyY2VMb2FkKTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tOgorICAgICAgICAoLVtXS1dlYnNpdGVE
YXRhU3RvcmUgX2dldExvYWRlZERvbWFpbnNGb3I6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAg
ICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfY2xlYXJMb2FkZWREb21haW5zRm9yOl0pOgorICAg
ICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX2dldFByZXZhbGVudERvbWFpbnNGb3I6Y29tcGxl
dGlvbkhhbmRsZXI6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBf
Y2xlYXJQcmV2YWxlbnREb21haW5zRm9yOl0pOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OmRpZENvbW1pdExvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjphZGRMb2FkZWRSZWdpc3RyYWJsZURvbWFpbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OmdldExvYWRlZERvbWFpbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjbGVhckxvYWRl
ZERvbWFpbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRQcmV2YWxlbnREb21haW5z
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y2xlYXJQcmV2YWxlbnREb21h
aW5zKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCiAyMDIw
LTAzLTEyICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgV0tXZWJWaWV3Lmhhc09ubHlTZWN1cmVDb250ZW50IHNob3VsZCBiZSBjb3JyZWN0IGFm
dGVyIGJhY2svZm9yd2FyZCBuYXZpZ2F0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApp
bmRleCAyY2I5OWM1YjAzYmQ1NTZmZTUxODI5ZDY5YWVkZDBkMTlkYjM2ZGQ0Li5jNGI5ZWNlNDg2
ZTRkNzAwYjYwOTRmMzVlZGRlZjFkMjU4YzI3Y2E2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNwcApAQCAtODY1LDE3ICs4NjUsNiBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFdlYkNvcmU6OlJlZwogICAgICAg
ICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9w
ZW5lcihXVEZNb3ZlKGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyksIG9wZW5lclBhZ2VJRCwg
V1RGTW92ZShvcGVuZXJEb21haW4pKTsKICAgICB9CiB9Ci0KLXZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmlzUHJldmFsZW50U3VicmVzb3VyY2VMb2FkKFJlZ2lzdHJhYmxlRG9t
YWluJiYgZG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQotewotICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtT
ZXNzaW9uKCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBu
ZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKSB7Ci0gICAgICAgICAgICBy
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5pc1ByZXZhbGVudFJlc291cmNlKGRvbWFpbiwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0g
ICAgfQotICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKLX0KICNlbmRpZgogCiB2b2lkIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjphZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRy
eShjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblBy
b3RvY29sLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uSG9zdCwgYm9vbCBhbGxvd0Rlc3RpbmF0
aW9uU3ViZG9tYWlucykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCBiNzU5YzI5ZDI0ZDY3
OWZiOTMwNDllZDJhYjlhNDRjZTRmMDE4NzUwLi4xZjg3MzEyNzlhNDZlYjY4NzljM2M1ZWEyOTQw
ZDJmNGRiMjJlMTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0yNjYsNyArMjY2LDYg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVE
b21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVE
b21haW4sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgcmVxdWVzdFN0b3Jh
Z2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFdlYkNv
cmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bik+JiYpOwogICAgIHZvaWQgcmVxdWVzdFN0
b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIGRvbWFp
bkluTmVlZE9mU3RvcmFnZUFjY2VzcywgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgb3BlbmVyUGFn
ZUlELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIG9wZW5lckRvbWFpbik7Ci0gICAgdm9p
ZCBpc1ByZXZhbGVudFN1YnJlc291cmNlTG9hZChSZWdpc3RyYWJsZURvbWFpbiYmLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICNlbmRpZgogCiAgICAgdm9pZCBhZGRPcmlnaW5B
Y2Nlc3NXaGl0ZWxpc3RFbnRyeShjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbiwgY29uc3QgU3Ry
aW5nJiBkZXN0aW5hdGlvblByb3RvY29sLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uSG9zdCwg
Ym9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCAyNGY1ZTVjODRiN2JhMzRiNjg0MTRiY2MwMzM1Y2Qz
ZjhkYjRjYjk5Li42ZmY3YTQwODcxMGFlZTNjMTNjOGZiYzU0ZmEyY2NlNGE4NTY2MGEyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTY3LDcgKzY3LDYg
QEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgTGVnYWN5UmVjZWl2
ZXIgewogICAgIEhhc1N0b3JhZ2VBY2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gc3Vi
RnJhbWVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvcEZyYW1lRG9tYWluLCBX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIg
cGFnZUlEKSAtPiAoYm9vbCBoYXNTdG9yYWdlQWNjZXNzKSBBc3luYwogICAgIFJlcXVlc3RTdG9y
YWdlQWNjZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN1YkZyYW1lRG9tYWluLCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbiwgV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgV2ViS2l0
OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlEKSAtPiAoZW51bTpib29sIFdl
YkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIHdhc0dyYW50ZWQsIGVudW06Ym9vbCBXZWJD
b3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd24pIEFzeW5jCiAg
ICAgUmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
IG9wZW5lclBhZ2VJRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gb3BlbmVyRG9tYWluKQot
ICAgIElzUHJldmFsZW50U3VicmVzb3VyY2VMb2FkKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
IGRvbWFpbikgLT4gKGJvb2wgaXNQcmV2YWxlbnQpIEFzeW5jCiAjZW5kaWYKIAogICAgIEFkZE9y
aWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KFN0cmluZyBzb3VyY2VPcmlnaW4sIFN0cmluZyBkZXN0
aW5hdGlvblByb3RvY29sLCBTdHJpbmcgZGVzdGluYXRpb25Ib3N0LCBib29sIGFsbG93RGVzdGlu
YXRpb25TdWJkb21haW5zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCmluZGV4IGVkMmU1ZWY2ODIxNjRhZTVkNTJj
NGEzYmZjM2QyYzhkNWQ1ODc2M2EuLjRmODgwNTU3NGIzY2QwZTBiOTI0ZGE0NGFmMTgyZDI4NTM5
NWIwMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YnNpdGVEYXRhU3RvcmUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2Vic2l0ZURhdGFTdG9yZS5tbQpAQCAtMzkwLDcgKzM5MCw3IEBAICsgKHZvaWQpX2FsbG93
V2Vic2l0ZURhdGFSZWNvcmRzRm9yQWxsT3JpZ2lucwogICAgIFdlYktpdDo6V2Vic2l0ZURhdGFT
dG9yZTo6YWxsb3dXZWJzaXRlRGF0YVJlY29yZHNGb3JBbGxPcmlnaW5zKCk7CiB9CiAKLS0gKHZv
aWQpX2dldFByZXZhbGVudERvbWFpbnNGb3I6KFdLV2ViVmlldyAqKXdlYlZpZXcgY29tcGxldGlv
bkhhbmRsZXI6KHZvaWQgKF4pKE5TQXJyYXk8TlNTdHJpbmcgKj4gKmRvbWFpbnMpKWNvbXBsZXRp
b25IYW5kbGVyCistICh2b2lkKV9nZXRMb2FkZWREb21haW5zRm9yOihXS1dlYlZpZXcgKil3ZWJW
aWV3IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU0FycmF5PE5TU3RyaW5nICo+ICpkb21h
aW5zKSljb21wbGV0aW9uSGFuZGxlcgogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJ
U1RJQ1MpCiAgICAgaWYgKCF3ZWJWaWV3KSB7CkBAIC00MDQsOCArNDA0LDggQEAgLSAodm9pZClf
Z2V0UHJldmFsZW50RG9tYWluc0ZvcjooV0tXZWJWaWV3ICopd2ViVmlldyBjb21wbGV0aW9uSGFu
ZGxlcjoodm9pZCAoXikKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICB3ZWJQYWdl
UHJveHktPmdldFByZXZhbGVudERvbWFpbnMoW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2Nr
UHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKFZlY3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
bj4mJiBwcmV2YWxlbnREb21haW5zKSB7Ci0gICAgICAgIFZlY3RvcjxSZWZQdHI8QVBJOjpPYmpl
Y3Q+PiBhcGlEb21haW5zID0gV1RGOjptYXAocHJldmFsZW50RG9tYWlucywgW10oYXV0byYgZG9t
YWluKSB7CisgICAgd2ViUGFnZVByb3h5LT5nZXRMb2FkZWREb21haW5zKFtjb21wbGV0aW9uSGFu
ZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChWZWN0b3I8V2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4+JiYgbG9hZGVkRG9tYWlucykgeworICAgICAgICBWZWN0b3I8UmVm
UHRyPEFQSTo6T2JqZWN0Pj4gYXBpRG9tYWlucyA9IFdURjo6bWFwKGxvYWRlZERvbWFpbnMsIFtd
KGF1dG8mIGRvbWFpbikgewogICAgICAgICAgICAgcmV0dXJuIFJlZlB0cjxBUEk6Ok9iamVjdD4o
QVBJOjpTdHJpbmc6OmNyZWF0ZShXVEZNb3ZlKGRvbWFpbi5zdHJpbmcoKSkpKTsKICAgICAgICAg
fSk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHdyYXBwZXIoQVBJOjpBcnJheTo6Y3JlYXRl
KFdURk1vdmUoYXBpRG9tYWlucykpKSk7CkBAIC00MTUsNyArNDE1LDcgQEAgLSAodm9pZClfZ2V0
UHJldmFsZW50RG9tYWluc0ZvcjooV0tXZWJWaWV3ICopd2ViVmlldyBjb21wbGV0aW9uSGFuZGxl
cjoodm9pZCAoXikKICNlbmRpZgogfQogCi0tICh2b2lkKV9jbGVhclByZXZhbGVudERvbWFpbnNG
b3I6KFdLV2ViVmlldyAqKXdlYlZpZXcKKy0gKHZvaWQpX2NsZWFyTG9hZGVkRG9tYWluc0Zvcjoo
V0tXZWJWaWV3ICopd2ViVmlldwogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJ
Q1MpCiAgICAgaWYgKCF3ZWJWaWV3KQpAQCAtNDI1LDcgKzQyNSw3IEBAIC0gKHZvaWQpX2NsZWFy
UHJldmFsZW50RG9tYWluc0ZvcjooV0tXZWJWaWV3ICopd2ViVmlldwogICAgIGlmICghd2ViUGFn
ZVByb3h5KQogICAgICAgICByZXR1cm47CiAKLSAgICB3ZWJQYWdlUHJveHktPmNsZWFyUHJldmFs
ZW50RG9tYWlucygpOworICAgIHdlYlBhZ2VQcm94eS0+Y2xlYXJMb2FkZWREb21haW5zKCk7CiAj
ZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgKaW5kZXggZWRkYmYzMDA5MDJhODYy
MjIyM2Y2MGM2OTViMjVhMWM0OTMzMjIyNC4uYmEyOTEwYjgzYjEwMTI4OWI3Yzk1NGY4YzhhYzky
Y2NiNDgzYWUwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCkBAIC02MSw4ICs2MSw4IEBA
IHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tXZWJzaXRlRGF0YVN0b3JlRmV0Y2hP
cHRpb25zKSB7CiAKIC0gKHZvaWQpX3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NUZXN0aW5nQ2Fs
bGJhY2s6KG51bGxhYmxlIHZvaWQgKF4pKFdLV2Vic2l0ZURhdGFTdG9yZSAqLCBOU1N0cmluZyAq
KSljYWxsYmFjayBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzKSwgaW9zKDExLjApKTsKIC0g
KHZvaWQpX2dldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzRm9yOihXS1dlYlZpZXcgKil3ZWJWaWV3
IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU0FycmF5PE5TU3RyaW5nICo+ICpkb21haW5z
KSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE0KSwgaW9zKDEy
LjApKTsKLS0gKHZvaWQpX2dldFByZXZhbGVudERvbWFpbnNGb3I6KFdLV2ViVmlldyAqKXdlYlZp
ZXcgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TQXJyYXk8TlNTdHJpbmcgKj4gKmRvbWFp
bnMpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSks
IGlvcyhXS19JT1NfVEJBKSk7Ci0tICh2b2lkKV9jbGVhclByZXZhbGVudERvbWFpbnNGb3I6KFdL
V2ViVmlldyAqKXdlYlZpZXcgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9z
KFdLX0lPU19UQkEpKTsKKy0gKHZvaWQpX2dldExvYWRlZERvbWFpbnNGb3I6KFdLV2ViVmlldyAq
KXdlYlZpZXcgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TQXJyYXk8TlNTdHJpbmcgKj4g
KmRvbWFpbnMpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFD
X1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CistICh2b2lkKV9jbGVhckxvYWRlZERvbWFpbnNGb3I6
KFdLV2ViVmlldyAqKXdlYlZpZXcgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwg
aW9zKFdLX0lPU19UQkEpKTsKIC0gKHZvaWQpX2dldFdlYlZpZXdDYXRlZ29yeUZvcjooV0tXZWJW
aWV3ICopd2ViVmlldyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoX1dLV2ViVmlld0NhdGVn
b3J5IGNhdGVnb3J5KSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdL
X01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogKyAodm9pZClfYWxsb3dXZWJzaXRlRGF0YVJl
Y29yZHNGb3JBbGxPcmlnaW5zIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCksIGlvcygx
MS4zKSk7CiAtIChib29sKV9oYXNSZWdpc3RlcmVkU2VydmljZVdvcmtlciBXS19BUElfQVZBSUxB
QkxFKG1hY29zKDEwLjE0KSwgaW9zKDEyLjApKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCmluZGV4IDUzOGZhNTc2ZTIxYWQyNDk4ZWM4M2QxMTkyMGFhZmE5MGUyZTJi
ZWYuLjA1M2ViNzUzNWE0NmEzZDVlY2RjYmQ4MmUxZTEwNWZhNDhmY2UzZGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtOTk0NywxNCArOTk0NywxNCBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6c2V0T3JpZW50YXRpb25Gb3JNZWRpYUNhcHR1cmUodWludDY0X3Qg
b3JpZW50YXRpb24pCiB9CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQot
dm9pZCBXZWJQYWdlUHJveHk6OmdldFByZXZhbGVudERvbWFpbnMoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
dm9pZCBXZWJQYWdlUHJveHk6OmdldExvYWRlZERvbWFpbnMoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewot
ICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6R2V0UHJldmFsZW50RG9t
YWlucygpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgc2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRMb2FkZWREb21haW5zKCksIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmNsZWFyUHJldmFsZW50RG9t
YWlucygpCit2b2lkIFdlYlBhZ2VQcm94eTo6Y2xlYXJMb2FkZWREb21haW5zKCkKIHsKLSAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDbGVhclByZXZhbGVudERvbWFpbnMoKSk7CisgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6Q2xlYXJMb2FkZWREb21haW5zKCkpOwogfQogI2VuZGlmCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggOTc5N2Y4ZDI3MDY4OGVj
ZWZmODQ4Y2JiNDUxM2YyYzViYmZhYjJiMS4uNmZlOTk0ZDc0NDk2MGNlZmU1NzgyMjVhNGY2ZDcz
ZWE5ZDA2YzllYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTE1
NjcsOCArMTU2Nyw4IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNU
SUNTKQogICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb25maXJtKGNvbnN0IFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgZGlkQ29tbWl0Q3Jvc3NT
aXRlTG9hZFdpdGhEYXRhVHJhbnNmZXJGcm9tUHJldmFsZW50UmVzb3VyY2UoKTsKLSAgICB2b2lk
IGdldFByZXZhbGVudERvbWFpbnMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4+JiYpPiYmKTsKLSAgICB2b2lkIGNsZWFyUHJldmFsZW50RG9t
YWlucygpOworICAgIHZvaWQgZ2V0TG9hZGVkRG9tYWlucyhDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFZlY3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mJik+JiYpOworICAgIHZvaWQgY2xl
YXJMb2FkZWREb21haW5zKCk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJ
T04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4
IGFlZjI4NTk1ODE1MjkyN2IwMDVlOTU3NTdiYjY5MDc1ZDJhNzllY2UuLmIzYzZiMTk1NTA3MGM4
MDNiYmQ1NGVjNDI0NmQ1N2Y4YjkyODU1YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC01ODU4LDcgKzU4NTgsNyBAQCB2b2lkIFdlYlBhZ2U6
OmRpZENvbW1pdExvYWQoV2ViRnJhbWUqIGZyYW1lKQogICAgICAgICByZXR1cm47CiAKICNpZiBF
TkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIGNsZWFyUHJldmFsZW50RG9tYWlu
cygpOworICAgIGNsZWFyTG9hZGVkRG9tYWlucygpOwogI2VuZGlmCiAgICAgCiAgICAgLy8gSWYg
cHJldmlvdXMgVVJMIGlzIGludmFsaWQsIHRoZW4gaXQncyBub3QgYSByZWFsIHBhZ2UgdGhhdCdz
IGJlaW5nIG5hdmlnYXRlZCBhd2F5IGZyb20uCkBAIC02Njk4LDIyICs2Njk4LDE1IEBAIHZvaWQg
V2ViUGFnZTo6d2FzTG9hZGVkV2l0aERhdGFUcmFuc2ZlckZyb21QcmV2YWxlbnRSZXNvdXJjZSgp
CiB2b2lkIFdlYlBhZ2U6OmFkZExvYWRlZFJlZ2lzdHJhYmxlRG9tYWluKFJlZ2lzdHJhYmxlRG9t
YWluJiYgZG9tYWluKQogewogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9sb2FkZWREb21haW5zLmFk
ZChkb21haW4pOwotICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkgewotICAgICAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25u
ZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6SXNQcmV2YWxlbnRTdWJyZXNvdXJjZUxvYWQoZG9tYWluKSwgW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZG9tYWluXSAoYm9vbCBpc1ByZXZhbGVudCkg
ewotICAgICAgICAgICAgaWYgKGlzUHJldmFsZW50KQotICAgICAgICAgICAgICAgIG1fcHJldmFs
ZW50RG9tYWlucy5hZGQoZG9tYWluKTsKLSAgICAgICAgfSk7Ci0gICAgfQogfQogCi12b2lkIFdl
YlBhZ2U6OmdldFByZXZhbGVudERvbWFpbnMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8
UmVnaXN0cmFibGVEb21haW4+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFnZTo6
Z2V0TG9hZGVkRG9tYWlucyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxSZWdpc3RyYWJs
ZURvbWFpbj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGNvbXBsZXRpb25IYW5kbGVy
KGNvcHlUb1ZlY3RvcihtX3ByZXZhbGVudERvbWFpbnMpKTsKKyAgICBjb21wbGV0aW9uSGFuZGxl
cihjb3B5VG9WZWN0b3IobV9sb2FkZWREb21haW5zKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6Y2xl
YXJQcmV2YWxlbnREb21haW5zKCkKK3ZvaWQgV2ViUGFnZTo6Y2xlYXJMb2FkZWREb21haW5zKCkK
IHsKLSAgICBtX3ByZXZhbGVudERvbWFpbnMuY2xlYXIoKTsKICAgICBtX2xvYWRlZERvbWFpbnMu
Y2xlYXIoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
CmluZGV4IDBjMDViZmFmODdmODRjOWIzNDZkNjQ0YWEzZDE5ODNjZjhjYjg3NmUuLjljNGZlOGM1
Yjc0YWZiMTcyYTQ3YTI0ZWFjNWE4NDVlN2I4MWMxMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTExODgsOCArMTE4OCw4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGFkZERvbWFpbldpdGhQYWdlTGV2ZWxTdG9yYWdlQWNjZXNzKGNvbnN0IFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluJiB0b3BMZXZlbERvbWFpbiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4mIHJlc291cmNlRG9tYWluKTsKICAgICB2b2lkIHdhc0xvYWRlZFdpdGhEYXRh
VHJhbnNmZXJGcm9tUHJldmFsZW50UmVzb3VyY2UoKTsKICAgICB2b2lkIGFkZExvYWRlZFJlZ2lz
dHJhYmxlRG9tYWluKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYpOwotICAgIHZvaWQgY2xl
YXJQcmV2YWxlbnREb21haW5zKCk7Ci0gICAgdm9pZCBnZXRQcmV2YWxlbnREb21haW5zKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPik+JiYp
OworICAgIHZvaWQgY2xlYXJMb2FkZWREb21haW5zKCk7CisgICAgdm9pZCBnZXRMb2FkZWREb21h
aW5zKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluPik+JiYpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQpAQCAt
MjA2NCw3ICsyMDY0LDYgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFU
SVNUSUNTKQogICAgIEhhc2hNYXA8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4sIFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluPiBtX2RvbWFpbnNXaXRoUGFnZUxldmVsU3RvcmFnZUFjY2VzczsK
ICAgICBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBtX2xvYWRlZERvbWFpbnM7
Ci0gICAgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gbV9wcmV2YWxlbnREb21h
aW5zOwogI2VuZGlmCiAKICAgICBTdHJpbmcgbV9vdmVycmlkZGVuTWVkaWFUeXBlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4K
aW5kZXggZTYwMWNmZjcyYjM0YmYwNGQwZTAzYWFhYzU1YmY2ZWFiMzVkOTkyZC4uZGVmNGFlYjAw
NzRjMWVkZGQzNWYyOWJlNDI5OWZmODNjMzgzMDMxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC01NzcsOCArNTc3
LDggQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0
OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FE
X1NUQVRJU1RJQ1MpCiAgICAgV2FzTG9hZGVkV2l0aERhdGFUcmFuc2ZlckZyb21QcmV2YWxlbnRS
ZXNvdXJjZSgpCi0gICAgQ2xlYXJQcmV2YWxlbnREb21haW5zKCkKLSAgICBHZXRQcmV2YWxlbnRE
b21haW5zKCkgLT4gKFZlY3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gZG9tYWlucykg
QXN5bmMKKyAgICBDbGVhckxvYWRlZERvbWFpbnMoKQorICAgIEdldExvYWRlZERvbWFpbnMoKSAt
PiAoVmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5zKSBBc3luYwogI2Vu
ZGlmCiAKICNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VM
b2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggN2NiYzc1NTk4OGFiODg4ZTU5Y2Q2ZGI4ZjMxMTFl
Yjg0YmE0MTY0Mi4uZGUzMTI0Y2M5MzkyNTdjNDQ4ZjQ3NjM3OTNhYmMwNjQ0YzlhMjZjMyAxMDA2
NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDQxIEBACisyMDIwLTAzLTEyICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUu
Y29tPgorCisgICAgICAgIFJlcG9ydCBhbGwgdGhpcmQgcGFydHkgbG9hZHMgb24gYSBwZXItcGFn
ZSBiYXNpcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjA5MDMyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MDM5NzMyMz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3N0bHkgbmFtaW5nIHVwZGF0ZXMg
dG8gcmVmbGVjdCB0aGUgY2hhbmdlIGluIHVzZSBmb3IgdGhpcyBTUEkgY2FsbC4KKyAgICAgICAg
SXQgbm93IHJldHVybnMgYWxsIGxvYWRlZCBkb21haW5zLCBub3QganVzdCBwcmV2YWxlbnQgb25l
cy4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3Mv
VGVzdFJ1bm5lci5pZGw6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlOjpkaWRS
ZWNlaXZlTWVzc2FnZVRvUGFnZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6Z2V0TG9h
ZGVkRG9tYWlucyk6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OmNhbGxEaWRSZWNlaXZlTG9h
ZGVkRG9tYWluc0NhbGxiYWNrKToKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6Z2V0UHJldmFs
ZW50RG9tYWlucyk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OmNhbGxEaWRS
ZWNlaXZlUHJldmFsZW50RG9tYWluc0NhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaDoKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRy
b2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMpOgorICAgICAgICAoV1RSOjpUZXN0
Q29udHJvbGxlcjo6Z2V0TG9hZGVkRG9tYWlucyk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9s
bGVyOjpjbGVhckxvYWRlZERvbWFpbnMpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6
Z2V0UHJldmFsZW50RG9tYWlucyk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OlRlc3RDb250cm9s
bGVyOjpjbGVhclByZXZhbGVudERvbWFpbnMpOiBEZWxldGVkLgorICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rl
c3RJbnZvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRpZFJlY2Vp
dmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKToKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRp
b246OmRpZFJlY2VpdmVMb2FkZWREb21haW5zKToKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRp
b246OmRpZFJlY2VpdmVQcmV2YWxlbnREb21haW5zKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJv
bGxlcjo6Z2V0TG9hZGVkRG9tYWlucyk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpj
bGVhckxvYWRlZERvbWFpbnMpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Z2V0UHJl
dmFsZW50RG9tYWlucyk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpj
bGVhclByZXZhbGVudERvbWFpbnMpOiBEZWxldGVkLgorCiAyMDIwLTAzLTEyICBNYXR0IExld2lz
ICA8amxld2lzM0BhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBmbGF0cGFjayBpbXBvcnQgZm9y
IHJ1bi13ZWJraXQtdGVzdHMgb25seSBoYXBwZW4gb24gbGludXggc3lzdGVtcwpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVu
bmVyLmlkbCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3Mv
VGVzdFJ1bm5lci5pZGwKaW5kZXggMTMwMjcxMGY2NGU1Yjc5Mzg1ZDAzYTk2MjJiNmU2ZGJmZmRl
OTZkMi4uYjJmNDA3ODk5MDE1MTVhYWNlODk4NzI2ZjQ2ZWUzMTJiNTZhYmFiOSAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVu
bmVyLmlkbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRp
bmdzL1Rlc3RSdW5uZXIuaWRsCkBAIC0zNDUsNyArMzQ1LDcgQEAgaW50ZXJmYWNlIFRlc3RSdW5u
ZXIgewogICAgIHZvaWQgc2V0U3RhdGlzdGljc1Nob3VsZERvd25ncmFkZVJlZmVycmVyKGJvb2xl
YW4gdmFsdWUsIG9iamVjdCBjYWxsYmFjayk7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzU2hvdWxk
QmxvY2tUaGlyZFBhcnR5Q29va2llcyhib29sZWFuIHZhbHVlLCBvYmplY3QgY2FsbGJhY2ssIG9w
dGlvbmFsIGJvb2xlYW4gb25seU9uU2l0ZXNXaXRob3V0VXNlckludGVyYWN0aW9uKTsKICAgICB2
b2lkIHNldFN0YXRpc3RpY3NGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZShib29sZWFu
IHZhbHVlLCBvYmplY3QgY2FsbGJhY2spOwotICAgIHZvaWQgZ2V0UHJldmFsZW50RG9tYWlucyhv
YmplY3QgY2FsbGJhY2spOworICAgIHZvaWQgZ2V0TG9hZGVkRG9tYWlucyhvYmplY3QgY2FsbGJh
Y2spOwogCiAgICAgLy8gSW5qZWN0ZWQgYnVuZGxlIGZvcm0gY2xpZW50LgogICAgIHZvaWQgaW5z
dGFsbFRleHREaWRDaGFuZ2VJblRleHRGaWVsZENhbGxiYWNrKG9iamVjdCBjYWxsYmFjayk7CmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGUuY3BwCmluZGV4IDAwYzllNzUzMjg3YjA3ZGE2NGYzOGI1N2U2YWJhYmM1ZGRhOTdh
YTEuLmRiZDUyYzdjMDU4NDBiODU2NmQ3ZmZkYTA5ZGFhM2E4MjcxZjhhYTIgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3Bw
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGUuY3BwCkBAIC00MTUsNyArNDE1LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6ZGlkUmVjZWl2
ZU1lc3NhZ2VUb1BhZ2UoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIG0KICAgICAg
ICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0
cmluZyhtZXNzYWdlTmFtZSwgIkNhbGxEaWRSZWNlaXZlUHJldmFsZW50RG9tYWlucyIpKSB7Cisg
ICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJDYWxsRGlk
UmVjZWl2ZUxvYWRlZERvbWFpbnMiKSkgewogICAgICAgICBBU1NFUlQobWVzc2FnZUJvZHkpOwog
ICAgICAgICBBU1NFUlQoV0tHZXRUeXBlSUQobWVzc2FnZUJvZHkpID09IFdLQXJyYXlHZXRUeXBl
SUQoKSk7CiAKQEAgLTQyOSw3ICs0MjksNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpkaWRSZWNl
aXZlTWVzc2FnZVRvUGFnZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgbQogICAg
ICAgICAgICAgICAgIGRvbWFpbnMudW5jaGVja2VkQXBwZW5kKHRvV1RGU3RyaW5nKHN0YXRpY19j
YXN0PFdLU3RyaW5nUmVmPihpdGVtKSkpOwogICAgICAgICB9CiAKLSAgICAgICAgbV90ZXN0UnVu
bmVyLT5jYWxsRGlkUmVjZWl2ZVByZXZhbGVudERvbWFpbnNDYWxsYmFjayhXVEZNb3ZlKGRvbWFp
bnMpKTsKKyAgICAgICAgbV90ZXN0UnVubmVyLT5jYWxsRGlkUmVjZWl2ZUxvYWRlZERvbWFpbnND
YWxsYmFjayhXVEZNb3ZlKGRvbWFpbnMpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1
bm5lci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5u
ZXIuY3BwCmluZGV4IDJlOThjZjVkNTZhZTE2YTFjZjA2MjYxZDQ5MjBkOGNmZjZmY2QzOWIuLjg4
MTVhYzQzOTVhZjljYmVmNTlkOGMzMjM3ZjVkNGZlZmU0ZGY1ZjcgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcApAQCAtNzU0
LDcgKzc1NCw3IEBAIGVudW0gewogICAgIFN0YXRpc3RpY3NEaWRTZXRTaG91bGRCbG9ja1RoaXJk
UGFydHlDb29raWVzQ2FsbGJhY2tJRCwKICAgICBTdGF0aXN0aWNzRGlkU2V0Rmlyc3RQYXJ0eVdl
YnNpdGVEYXRhUmVtb3ZhbE1vZGVDYWxsYmFja0lELAogICAgIEFsbFN0b3JhZ2VBY2Nlc3NFbnRy
aWVzQ2FsbGJhY2tJRCwKLSAgICBHZXRQcmV2YWxlbnREb21haW5zQ2FsbGJhY2tJRCwKKyAgICBH
ZXRMb2FkZWREb21haW5zQ2FsbGJhY2tJRCwKICAgICBEaWRSZW1vdmVBbGxTZXNzaW9uQ3JlZGVu
dGlhbHNDYWxsYmFja0lELAogICAgIEdldEFwcGxpY2F0aW9uTWFuaWZlc3RDYWxsYmFja0lELAog
ICAgIFRleHREaWRDaGFuZ2VJblRleHRGaWVsZENhbGxiYWNrSUQsCkBAIC0yMzU1LDE1ICsyMzU1
LDE1IEBAIHZvaWQgVGVzdFJ1bm5lcjo6Y2FsbERpZFJlY2VpdmVBbGxTdG9yYWdlQWNjZXNzRW50
cmllc0NhbGxiYWNrKFZlY3RvcjxTdHJpbmc+JiBkCiAgICAgY2FsbFRlc3RSdW5uZXJDYWxsYmFj
ayhBbGxTdG9yYWdlQWNjZXNzRW50cmllc0NhbGxiYWNrSUQsIDEsICZyZXN1bHQpOwogfQogCi12
b2lkIFRlc3RSdW5uZXI6OmdldFByZXZhbGVudERvbWFpbnMoSlNWYWx1ZVJlZiBjYWxsYmFjaykK
K3ZvaWQgVGVzdFJ1bm5lcjo6Z2V0TG9hZGVkRG9tYWlucyhKU1ZhbHVlUmVmIGNhbGxiYWNrKQog
ewotICAgIGNhY2hlVGVzdFJ1bm5lckNhbGxiYWNrKEdldFByZXZhbGVudERvbWFpbnNDYWxsYmFj
a0lELCBjYWxsYmFjayk7CisgICAgY2FjaGVUZXN0UnVubmVyQ2FsbGJhY2soR2V0TG9hZGVkRG9t
YWluc0NhbGxiYWNrSUQsIGNhbGxiYWNrKTsKICAgICAKLSAgICBXS1JldGFpblB0cjxXS1N0cmlu
Z1JlZj4gbWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KCJHZXRQcmV2YWxlbnREb21haW5zIikpOworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBt
ZXNzYWdlTmFtZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkdldExv
YWRlZERvbWFpbnMiKSk7CiAgICAgV0tCdW5kbGVQb3N0TWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6
c2luZ2xldG9uKCkuYnVuZGxlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBudWxscHRyKTsKIH0KIAot
dm9pZCBUZXN0UnVubmVyOjpjYWxsRGlkUmVjZWl2ZVByZXZhbGVudERvbWFpbnNDYWxsYmFjayhW
ZWN0b3I8U3RyaW5nPiYmIGRvbWFpbnMpCit2b2lkIFRlc3RSdW5uZXI6OmNhbGxEaWRSZWNlaXZl
TG9hZGVkRG9tYWluc0NhbGxiYWNrKFZlY3RvcjxTdHJpbmc+JiYgZG9tYWlucykKIHsKICAgICBX
S0J1bmRsZUZyYW1lUmVmIG1haW5GcmFtZSA9IFdLQnVuZGxlUGFnZUdldE1haW5GcmFtZShJbmpl
Y3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkucGFnZSgpLT5wYWdlKCkpOwogICAgIEpTQ29udGV4dFJl
ZiBjb250ZXh0ID0gV0tCdW5kbGVGcmFtZUdldEphdmFTY3JpcHRDb250ZXh0KG1haW5GcmFtZSk7
CkBAIC0yMzg0LDcgKzIzODQsNyBAQCB2b2lkIFRlc3RSdW5uZXI6OmNhbGxEaWRSZWNlaXZlUHJl
dmFsZW50RG9tYWluc0NhbGxiYWNrKFZlY3RvcjxTdHJpbmc+JiYgZG9tYWlucwogICAgIAogICAg
IEpTVmFsdWVSZWYgcmVzdWx0ID0gSlNWYWx1ZU1ha2VGcm9tSlNPTlN0cmluZyhjb250ZXh0LCBh
ZG9wdChKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhzdHJpbmdCdWlsZGVyLnRvU3RyaW5n
KCkudXRmOCgpLmRhdGEoKSkpLmdldCgpKTsKIAotICAgIGNhbGxUZXN0UnVubmVyQ2FsbGJhY2so
R2V0UHJldmFsZW50RG9tYWluc0NhbGxiYWNrSUQsIDEsICZyZXN1bHQpOworICAgIGNhbGxUZXN0
UnVubmVyQ2FsbGJhY2soR2V0TG9hZGVkRG9tYWluc0NhbGxiYWNrSUQsIDEsICZyZXN1bHQpOwog
fQogCiB2b2lkIFRlc3RSdW5uZXI6OmFkZE1vY2tNZWRpYURldmljZShKU1N0cmluZ1JlZiBwZXJz
aXN0ZW50SWQsIEpTU3RyaW5nUmVmIGxhYmVsLCBjb25zdCBjaGFyKiB0eXBlKQpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmggYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAppbmRleCBk
YTBhZDFmYmE5YjkyNDg3MTNkMDRmMWFiYTE0ZTFmNjYwOGI4M2E3Li4xNjMwNWQzZmYzOTM0N2Nj
ZDllYTNjMTdlZWMxZTkwMWEyMWY2ZDEyIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaApAQCAtNDQ5LDggKzQ0OSw4IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHN0YXRpc3RpY3NDYWxsRGlkU2V0Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVt
b3ZhbE1vZGVDYWxsYmFjaygpOwogICAgIHZvaWQgc3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50
U3RhdGUoSlNWYWx1ZVJlZiBjb21wbGV0aW9uSGFuZGxlcik7CiAgICAgdm9pZCBzdGF0aXN0aWNz
Q2FsbERpZFJlc2V0VG9Db25zaXN0ZW50U3RhdGVDYWxsYmFjaygpOwotICAgIHZvaWQgZ2V0UHJl
dmFsZW50RG9tYWlucyhKU1ZhbHVlUmVmIGNhbGxiYWNrKTsKLSAgICB2b2lkIGNhbGxEaWRSZWNl
aXZlUHJldmFsZW50RG9tYWluc0NhbGxiYWNrKFZlY3RvcjxTdHJpbmc+JiYgZG9tYWlucyk7Cisg
ICAgdm9pZCBnZXRMb2FkZWREb21haW5zKEpTVmFsdWVSZWYgY2FsbGJhY2spOworICAgIHZvaWQg
Y2FsbERpZFJlY2VpdmVMb2FkZWREb21haW5zQ2FsbGJhY2soVmVjdG9yPFN0cmluZz4mJiBkb21h
aW5zKTsKIAogICAgIC8vIEluamVjdGVkIGJ1bmRsZSBmb3JtIGNsaWVudC4KICAgICB2b2lkIGlu
c3RhbGxUZXh0RGlkQ2hhbmdlSW5UZXh0RmllbGRDYWxsYmFjayhKU1ZhbHVlUmVmIGNhbGxiYWNr
KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3Bw
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKaW5kZXggNzFjMzU4
YTI3ZGUyNmM4ZmM5ZTY4ZTcyZmM2NzUzYTUyYTZhOTI3ZS4uMzFlZjJlYTNlZGU5NzJlYjIyMzQw
OTdmMmU2OWY3OTg3M2RlMTQ5ZSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJv
bGxlci5jcHAKQEAgLTExMjYsNyArMTEyNiw3IEBAIGJvb2wgVGVzdENvbnRyb2xsZXI6OnJlc2V0
U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMoY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMsIFJlCiAg
ICAgc2V0QWxsb3dzQW55U1NMQ2VydGlmaWNhdGUodHJ1ZSk7CiAKICAgICBzdGF0aXN0aWNzUmVz
ZXRUb0NvbnNpc3RlbnRTdGF0ZSgpOwotICAgIGNsZWFyUHJldmFsZW50RG9tYWlucygpOworICAg
IGNsZWFyTG9hZGVkRG9tYWlucygpOwogCiAgICAgY2xlYXJBZENsaWNrQXR0cmlidXRpb24oKTsK
IApAQCAtMzEzMCwxMSArMzEzMCwxMSBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpnZXRBbGxTdG9y
YWdlQWNjZXNzRW50cmllcygpCiB7CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6OmdldFByZXZh
bGVudERvbWFpbnMoKQordm9pZCBUZXN0Q29udHJvbGxlcjo6Z2V0TG9hZGVkRG9tYWlucygpCiB7
CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6OmNsZWFyUHJldmFsZW50RG9tYWlucygpCit2b2lk
IFRlc3RDb250cm9sbGVyOjpjbGVhckxvYWRlZERvbWFpbnMoKQogewogfQogCmRpZmYgLS1naXQg
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmggYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKaW5kZXggYThhZDU4ZmUxYTc4OTAxZjM1YjllODNm
NmQyYzU1ZjdiMTM2MDViNi4uZjA5MzFjN2VlNTU3ZDUyODFhNjk2OTliMDliYTMxMmRjODI4MTFi
MCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaApAQCAtMjY1LDggKzI2
NSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRl
KCk7CiAKICAgICB2b2lkIGdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKCk7Ci0gICAgdm9pZCBn
ZXRQcmV2YWxlbnREb21haW5zKCk7Ci0gICAgdm9pZCBjbGVhclByZXZhbGVudERvbWFpbnMoKTsK
KyAgICB2b2lkIGdldExvYWRlZERvbWFpbnMoKTsKKyAgICB2b2lkIGNsZWFyTG9hZGVkRG9tYWlu
cygpOwogICAgIHZvaWQgZ2V0V2ViVmlld0NhdGVnb3J5KCk7CiAgICAgdm9pZCBzZXRJbkFwcEJy
b3dzZXJQcml2YWN5RW5hYmxlZChib29sKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJ
bnZvY2F0aW9uLmNwcAppbmRleCBmOGNjZTI3ZmM0NjE3ZWE3NmM2YjUzNzc1NGNjNDYyY2Q5ZTBl
YzE5Li5iZDMyYWE1YTI3YzRiODI1MmZkZDhlN2E2NjJjYjVlODUxMTAwZDE2IDEwMDY0NAotLS0g
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcApAQCAtODIwLDggKzgyMCw4IEBAIHZv
aWQgVGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdL
U3RyaW5nUmVmIG1lc3NhZ2VOYW1lCiAgICAgfQogI2VuZGlmCiAgICAgCi0gICAgaWYgKFdLU3Ry
aW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJHZXRQcmV2YWxlbnREb21haW5z
IikpIHsKLSAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLmdldFByZXZhbGVudERv
bWFpbnMoKTsKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFt
ZSwgIkdldExvYWRlZERvbWFpbnMiKSkgeworICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xl
dG9uKCkuZ2V0TG9hZGVkRG9tYWlucygpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0x
OTcwLDkgKzE5NzAsOSBAQCB2b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlQWxsU3RvcmFn
ZUFjY2Vzc0VudHJpZXMoVmVjdG9yPFN0cmluZz4mIGRvbWFpbnMpCiAgICAgV0tQYWdlUG9zdE1l
c3NhZ2VUb0luamVjdGVkQnVuZGxlKFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5tYWluV2Vi
VmlldygpLT5wYWdlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSk7CiB9
CiAKLXZvaWQgVGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVQcmV2YWxlbnREb21haW5zKFZlY3Rv
cjxTdHJpbmc+JiYgZG9tYWlucykKK3ZvaWQgVGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVMb2Fk
ZWREb21haW5zKFZlY3RvcjxTdHJpbmc+JiYgZG9tYWlucykKIHsKLSAgICBXS1JldGFpblB0cjxX
S1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKCJDYWxsRGlkUmVjZWl2ZVByZXZhbGVudERvbWFpbnMiKSk7CisgICAgV0tSZXRhaW5Q
dHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZygiQ2FsbERpZFJlY2VpdmVMb2FkZWREb21haW5zIikpOwogICAgIAogICAgIFdL
UmV0YWluUHRyPFdLTXV0YWJsZUFycmF5UmVmPiBtZXNzYWdlQm9keSA9IGFkb3B0V0soV0tNdXRh
YmxlQXJyYXlDcmVhdGUoKSk7CiAgICAgZm9yIChhdXRvJiBkb21haW4gOiBkb21haW5zKQpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCmluZGV4IGVjNGY1OTY2MmM3YjViZTAz
NjYxNTA3MmMyMjA1OTYyZTg0ODU1NjYuLjljYmQyYzZiNTExODNlYzU4YzUzOTc2MDU2NDljZTU3
ODZlYzY3ZDQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRp
b24uaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgKQEAgLTg2
LDcgKzg2LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkU2V0VmVyeVByZXZhbGVudFJlc291cmNl
KCk7CiAgICAgdm9pZCBkaWRTZXRIYXNIYWRVc2VySW50ZXJhY3Rpb24oKTsKICAgICB2b2lkIGRp
ZFJlY2VpdmVBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhWZWN0b3I8U3RyaW5nPiYgZG9tYWlucyk7
Ci0gICAgdm9pZCBkaWRSZWNlaXZlUHJldmFsZW50RG9tYWlucyhWZWN0b3I8U3RyaW5nPiYmIGRv
bWFpbnMpOworICAgIHZvaWQgZGlkUmVjZWl2ZUxvYWRlZERvbWFpbnMoVmVjdG9yPFN0cmluZz4m
JiBkb21haW5zKTsKICAgICB2b2lkIGRpZFJlY2VpdmVXZWJWaWV3Q2F0ZWdvcnkoU3RyaW5nJik7
CiAgICAgdm9pZCBkaWRTZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZCgpOwogCmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0g
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KaW5k
ZXggZmMxZDUxYjc0OWM4YjMyMWZlNGY3YTIyNTU3YjgxYWQ5ZTZiOTAxMi4uZDkxYmU5YWE3NDQ5
OTE5OWE3NTI2OWRjOWU0OTM4YzJmMjE3YWMxOSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQpAQCAtMzQyLDI4ICszNDIsMjgg
QEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6Z2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoKQogICAg
IH1dOwogfQogCi12b2lkIFRlc3RDb250cm9sbGVyOjpnZXRQcmV2YWxlbnREb21haW5zKCkKK3Zv
aWQgVGVzdENvbnRyb2xsZXI6OmdldExvYWRlZERvbWFpbnMoKQogewogICAgIGF1dG8qIHBhcmVu
dFZpZXcgPSBtYWluV2ViVmlldygpOwogICAgIGlmICghcGFyZW50VmlldykKICAgICAgICAgcmV0
dXJuOwogICAgIAotICAgIFtnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0
b3JlIF9nZXRQcmV2YWxlbnREb21haW5zRm9yOnBhcmVudFZpZXctPnBsYXRmb3JtVmlldygpIGNv
bXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxOU1N0cmluZyAqPiAqbnNEb21haW5zKSB7CisgICAg
W2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgX2dldExvYWRlZERv
bWFpbnNGb3I6cGFyZW50Vmlldy0+cGxhdGZvcm1WaWV3KCkgY29tcGxldGlvbkhhbmRsZXI6XihO
U0FycmF5PE5TU3RyaW5nICo+ICpuc0RvbWFpbnMpIHsKICAgICAgICAgVmVjdG9yPFN0cmluZz4g
ZG9tYWluczsKICAgICAgICAgZG9tYWlucy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG5zRG9tYWlu
cy5jb3VudCk7CiAgICAgICAgIGZvciAoTlNTdHJpbmcgKmRvbWFpbiA6IG5zRG9tYWlucykKICAg
ICAgICAgICAgIGRvbWFpbnMudW5jaGVja2VkQXBwZW5kKGRvbWFpbik7Ci0gICAgICAgIG1fY3Vy
cmVudEludm9jYXRpb24tPmRpZFJlY2VpdmVQcmV2YWxlbnREb21haW5zKFdURk1vdmUoZG9tYWlu
cykpOworICAgICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5kaWRSZWNlaXZlTG9hZGVkRG9tYWlu
cyhXVEZNb3ZlKGRvbWFpbnMpKTsKICAgICB9XTsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6
Y2xlYXJQcmV2YWxlbnREb21haW5zKCkKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmNsZWFyTG9hZGVk
RG9tYWlucygpCiB7CiAgICAgYXV0byogcGFyZW50VmlldyA9IG1haW5XZWJWaWV3KCk7CiAgICAg
aWYgKCFwYXJlbnRWaWV3KQogICAgICAgICByZXR1cm47CiAKLSAgICBbZ2xvYmFsV2ViVmlld0Nv
bmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfY2xlYXJQcmV2YWxlbnREb21haW5zRm9yOnBh
cmVudFZpZXctPnBsYXRmb3JtVmlldygpXTsKKyAgICBbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRp
b24ud2Vic2l0ZURhdGFTdG9yZSBfY2xlYXJMb2FkZWREb21haW5zRm9yOnBhcmVudFZpZXctPnBs
YXRmb3JtVmlldygpXTsKIH0KIAogdm9pZCBUZXN0Q29udHJvbGxlcjo6Z2V0V2ViVmlld0NhdGVn
b3J5KCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCBmNjY1NGIxNjI0NmU2MGQ4ZGE2YWRiYjFjODIzYmQ2ZGQyNTJmMDNlLi5h
MzMyYWUzMDBmMWQ5ZDYyOTY4ZDY4ZmQ4NTMxMGFhNWE5ZGQyZjk0IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjcgQEAKKzIwMjAtMDMtMTIgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5j
b20+CisKKyAgICAgICAgUmVwb3J0IGFsbCB0aGlyZCBwYXJ0eSBsb2FkcyBvbiBhIHBlci1wYWdl
IGJhc2lzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDkwMzIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYwMzk3MzIzPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vdyB0aGF0IHdlIHJlcG9ydCBhbGwg
bG9hZGVkIHRoaXJkIHBhcnR5IGRvbWFpbnMsIHdlIG5vIGxvbmdlciBuZWVkCisgICAgICAgIElU
UCB0byB0ZXN0IHRoaXMgY2FsbC4gV2UgY2FuIGVsaW1pbmF0ZSB0aGUgZHVhbCB0ZXN0aW5nIGZv
cgorICAgICAgICBtZW1vcnkvZGF0YWJhc2Ugc2V0dXAgYW5kIGFueSBsb2dpYyByZWxhdGVkIHRv
IHNldHRpbmcgYSByZXNvdXJjZQorICAgICAgICBhcyBwcmV2YWxlbnQuCisKKyAgICAgICAgKiBo
dHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvbG9hZGVkLXJlZ2lzdHJhYmxlLWRvbWFp
bnMtZ2V0LXJlcG9ydGVkLWV4cGVjdGVkLnR4dDogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy93ZWJzb2NrZXQvd2ViLXNvY2tldC1sb2Fkcy1jYXB0dXJlZC1pbi1wZXItcGFnZS1k
b21haW5zLWV4cGVjdGVkLnR4dC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0
YXRpc3RpY3MvbG9hZGVkLXJlZ2lzdHJhYmxlLWRvbWFpbnMtZ2V0LXJlcG9ydGVkLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9wcmV2YWxl
bnQtZG9tYWlucy1wZXItcGFnZS1kYXRhYmFzZS1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3ByZXZhbGVudC1kb21haW5z
LXBlci1wYWdlLWRhdGFiYXNlLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3ByZXZhbGVudC1kb21haW5zLXBlci1wYWdlLmh0bWw6IFJl
bW92ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvd2ViLXNvY2tldC1sb2Fkcy1j
YXB0dXJlZC1pbi1wZXItcGFnZS1kb21haW5zLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRw
L3Rlc3RzL3dlYnNvY2tldC93ZWItc29ja2V0LWxvYWRzLWNhcHR1cmVkLWluLXBlci1wYWdlLWRv
bWFpbnMuaHRtbDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9uczoKKyAg
ICAgICAgU2luY2UgdGhpcyB0ZXN0IG5vIGxvbmdlciB1c2VzIFVJSGVscGVyLmFjdGl2YXRlQXQs
IGl0IGNhbiBiZQorICAgICAgICB1bnNraXBwZWQgaW4gaU9TCisKIDIwMjAtMDMtMTIgIERpZWdv
IFBpbm8gR2FyY2lhICA8ZHBpbm9AaWdhbGlhLmNvbT4KIAogICAgICAgICBbV1BFXSBHYXJkZW5p
bmcsIHVwZGF0ZSBUZXN0RXhwZWN0YXRpb25zCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvbG9hZGVkLXJlZ2lzdHJhYmxlLWRvbWFpbnMt
Z2V0LXJlcG9ydGVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy9sb2FkZWQtcmVnaXN0cmFibGUtZG9tYWlucy1nZXQtcmVwb3J0ZWQt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM5ZmEyZmNiZTlkMTM3YmEwM2M1ODYxMmRlZjY3ODc0
YWYwMTI3ZjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291
cmNlTG9hZFN0YXRpc3RpY3MvbG9hZGVkLXJlZ2lzdHJhYmxlLWRvbWFpbnMtZ2V0LXJlcG9ydGVk
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitUZXN0cyB0aGF0IGEgaWZyYW1lIGdldHMg
cmVwb3J0ZWQgYXMgYSBsb2FkZWQgdGhpcmQgcGFydHkgZG9tYWluLgorCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCisKKworUEFTUyBMb2FkZWQgZG9tYWluIHdhcyBzdWNjZXNzZnVsbHkgY2Fw
dHVyZWQuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzL2xvYWRlZC1yZWdpc3RyYWJsZS1kb21haW5zLWdldC1yZXBvcnRlZC5odG1sIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2xvYWRlZC1yZWdpc3RyYWJs
ZS1kb21haW5zLWdldC1yZXBvcnRlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI3ZDBhNTJjOGIxYzViNzJk
NGUwNGViNjZjOWEzYzIwZGQyNWY0ZjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvbG9hZGVkLXJlZ2lzdHJhYmxlLWRvbWFp
bnMtZ2V0LXJlcG9ydGVkLmh0bWwKQEAgLTAsMCArMSwzMyBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVz
dC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy91aS1o
ZWxwZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIvcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy9yZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdD4KKyAgICAgICAg
ZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgYSBpZnJhbWUgZ2V0cyByZXBvcnRlZCBhcyBhIGxvYWRl
ZCB0aGlyZCBwYXJ0eSBkb21haW4uIik7CisgICAgICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOwor
CisgICAgICAgIGZ1bmN0aW9uIGFza0ZvckxvYWRlZERvbWFpbnMoKSB7CisgICAgICAgICAgICB0
ZXN0UnVubmVyLmdldExvYWRlZERvbWFpbnMoZnVuY3Rpb24gKGFycmF5T2ZEb21haW5zKSB7Cisg
ICAgICAgICAgICAgICAgdmFyIHBhc3NlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBhcnJheU9mRG9tYWlucy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAg
ICAgICAgICBpZiAoYXJyYXlPZkRvbWFpbnNbaV0gPT09ICJsb2NhbGhvc3QiKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBwYXNzZWQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgaWYgKHBhc3NlZCkKKyAgICAgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiTG9h
ZGVkIGRvbWFpbiB3YXMgc3VjY2Vzc2Z1bGx5IGNhcHR1cmVkLiIpOworICAgICAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiTG9hZGVkIGRvbWFpbiB3YXMg
bm90IHN1Y2Nlc3NmdWxseSBjYXB0dXJlZC4iKTsKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rl
c3QoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxpZnJhbWUgb25sb2FkPSdhc2tGb3JMb2FkZWREb21haW5zKCknIHNyYz0iaHR0
cDovL2xvY2FsaG9zdDo4MDAwL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzL2Jhc2lj
LWlmcmFtZS5odG1sIj4KKzwvaWZyYW1lPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3ByZXZhbGVudC1k
b21haW5zLXBlci1wYWdlLWRhdGFiYXNlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9wcmV2YWxlbnQtZG9tYWlucy1wZXItcGFnZS1k
YXRhYmFzZS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3ZTFh
YmJlOTNhN2YwZDczNWI3M2IzNzI1NzE0ZjA0NmM0ZDc1ZWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzL3ByZXZhbGVudC1kb21haW5zLXBlci1wYWdlLWRhdGFiYXNlLWV4cGVj
dGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLVRlc3RzIHRoYXQgYSBpZnJh
bWUgZnJvbSBhIHByZXZhbGVudCBkb21haW4gd2lsbCBiZSByZXBvcnRlZCBhcyBwcmV2YWxlbnQg
dW5kZXIgdGhpcyBwYWdlLgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLQotUEFTUyBE
b21haW4gd2FzIHN1Y2Nlc3NmdWxseSBtYXJrZWQgcHJldmFsZW50LgotUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9wcmV2YWxlbnQtZG9tYWlucy1w
ZXItcGFnZS1kYXRhYmFzZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzL3ByZXZhbGVudC1kb21haW5zLXBlci1wYWdlLWRhdGFiYXNlLmh0bWwKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgxMmVhZWUyMzQ3ZWI2ZWViMDkzNDhlYTUxNTdh
MGY4OTZmMDdjOTMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3ByZXZhbGVu
dC1kb21haW5zLXBlci1wYWdlLWRhdGFiYXNlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw3NCAr
MCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci0gICAgPHNjcmlwdCBzcmM9
Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNy
Yz0iL2pzLXRlc3QtcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlw
dCBzcmM9Ii9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Jlc291cmNlcy91dGlsLmpzIj48L3Njcmlw
dD4KLSAgICA8c2NyaXB0PgotICAgICAgICBkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBhIGlmcmFt
ZSBmcm9tIGEgcHJldmFsZW50IGRvbWFpbiB3aWxsIGJlIHJlcG9ydGVkIGFzIHByZXZhbGVudCB1
bmRlciB0aGlzIHBhZ2UuIik7Ci0gICAgICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOwotCi0gICAg
ICAgIGZ1bmN0aW9uIGZpbmlzaFRlc3QoKSB7Ci0gICAgICAgICAgICBzZXRFbmFibGVGZWF0dXJl
KGZhbHNlLCBmaW5pc2hKU1Rlc3QpOwotICAgICAgICB9Ci0KLSAgICAgICAgY29uc3QgaWZyYW1l
SUQgPSAiaUZyYW1lRnJvbVByZXZhbGVudERvbWFpbiI7Ci0gICAgICAgIGZ1bmN0aW9uIGFza0Zv
clByZXZhbGVudFJlc291cmNlcygpIHsKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuZ2V0UHJldmFs
ZW50RG9tYWlucyhmdW5jdGlvbiAoYXJyYXlPZkRvbWFpbnMpIHsKLSAgICAgICAgICAgICAgICB2
YXIgcGFzc2VkID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFy
cmF5T2ZEb21haW5zLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChhcnJh
eU9mRG9tYWluc1tpXSA9PT0gImxvY2FsaG9zdCIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IHBhc3NlZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAocGFz
c2VkKQotICAgICAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJEb21haW4gd2FzIHN1Y2Nlc3Nm
dWxseSBtYXJrZWQgcHJldmFsZW50LiIpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgICAgICAgICAgdGVzdEZhaWxlZCgiRG9tYWluIHdhcyBub3Qgc3VjY2Vzc2Z1bGx5IG1hcmtl
ZCBwcmV2YWxlbnQuIik7Ci0gICAgICAgICAgICAgICAgZmluaXNoVGVzdCgpOwotICAgICAgICAg
ICAgfSk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBhY3RpdmF0ZUVsZW1lbnQoZWxl
bWVudElkKSB7Ci0gICAgICAgICAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKGVsZW1lbnRJZCk7Ci0gICAgICAgICAgICB2YXIgY2VudGVyWCA9IGVsZW1lbnQub2Zmc2V0
TGVmdCArIGVsZW1lbnQub2Zmc2V0V2lkdGggLyAyOwotICAgICAgICAgICAgdmFyIGNlbnRlclkg
PSBlbGVtZW50Lm9mZnNldFRvcCArIGVsZW1lbnQub2Zmc2V0SGVpZ2h0IC8gMjsKLSAgICAgICAg
ICAgIFVJSGVscGVyLmFjdGl2YXRlQXQoY2VudGVyWCwgY2VudGVyWSkudGhlbigKLSAgICAgICAg
ICAgICAgICBmdW5jdGlvbiAoKSB7IH0sCi0gICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgewot
ICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJQcm9taXNlIHJlamVjdGVkLiIpOwotICAg
ICAgICAgICAgICAgICAgICBmaW5pc2hUZXN0KCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgKTsKLSAgICAgICAgICAgIGFza0ZvclByZXZhbGVudFJlc291cmNlcygpOwotICAgICAg
ICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKLSAgICAgICAgICAgIGlmIChkb2N1
bWVudC5sb2NhdGlvbi5oYXNoICE9PSAiI2VsZW1lbnRBY3RpdmF0ZWQiKSB7Ci0gICAgICAgICAg
ICAgICAgZG9jdW1lbnQubG9jYXRpb24uaGFzaCA9ICJlbGVtZW50QWN0aXZhdGVkIjsKLSAgICAg
ICAgICAgICAgICBhY3RpdmF0ZUVsZW1lbnQoaWZyYW1lSUQpOwotICAgICAgICAgICAgfQotICAg
ICAgICB9Ci0KLSAgICAgICAgY29uc3QgaG9zdFVuZGVyVGVzdCA9ICJsb2NhbGhvc3Q6ODAwMCI7
Ci0gICAgICAgIGNvbnN0IHN0YXRpc3RpY3NVcmwgPSAiaHR0cDovLyIgKyBob3N0VW5kZXJUZXN0
OwotICAgICAgICAKLSAgICAgICAgdGVzdFJ1bm5lci5zZXRVc2VJVFBEYXRhYmFzZSh0cnVlKTsK
LSAgICAgICAgc2V0RW5hYmxlRmVhdHVyZSh0cnVlLCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAg
IHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKHN0YXRpc3RpY3NVcmws
IHRydWUsIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIGlmICghdGVzdFJ1bm5lci5pc1N0
YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShzdGF0aXN0aWNzVXJsKSkKLSAgICAgICAgICAgICAg
ICAgICAgdGVzdEZhaWxlZCgiSG9zdCBkaWQgbm90IGdldCBzZXQgYXMgcHJldmFsZW50IHJlc291
cmNlLiIpOwotCi0gICAgICAgICAgICAgICAgbGV0IGlmcmFtZUVsZW1lbnQgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJpZnJhbWUiKTsKLSAgICAgICAgICAgICAgICBpZnJhbWVFbGVtZW50Lm9u
bG9hZCA9IHJ1blRlc3Q7Ci0gICAgICAgICAgICAgICAgaWZyYW1lRWxlbWVudC5pZCA9ICJpRnJh
bWVGcm9tUHJldmFsZW50RG9tYWluIjsKLSAgICAgICAgICAgICAgICBpZnJhbWVFbGVtZW50LnNy
YyA9ICJodHRwOi8vbG9jYWxob3N0OjgwMDAvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZXNvdXJj
ZXMvYmFzaWMtaWZyYW1lLmh0bWwiOwotICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBw
ZW5kQ2hpbGQoaWZyYW1lRWxlbWVudCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7Ci0g
ICAgPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9wcmV2YWxl
bnQtZG9tYWlucy1wZXItcGFnZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzL3ByZXZhbGVudC1kb21haW5zLXBlci1wYWdlLmh0bWwKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMxOGM2ZmJhNzA3YTgxODY3NWVhYThiM2QyMTA2OTFlNzcy
NjNlM2YuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3ByZXZhbGVudC1kb21h
aW5zLXBlci1wYWdlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw3MyArMCwwIEBACi08IURPQ1RZ
UEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291
cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVz
b3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzL3Jlc291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0
PgotICAgICAgICBkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBhIGlmcmFtZSBmcm9tIGEgcHJldmFs
ZW50IGRvbWFpbiB3aWxsIGJlIHJlcG9ydGVkIGFzIHByZXZhbGVudCB1bmRlciB0aGlzIHBhZ2Uu
Iik7Ci0gICAgICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOwotCi0gICAgICAgIGZ1bmN0aW9uIGZp
bmlzaFRlc3QoKSB7Ci0gICAgICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmaW5pc2hK
U1Rlc3QpOwotICAgICAgICB9Ci0KLSAgICAgICAgY29uc3QgaWZyYW1lSUQgPSAiaUZyYW1lRnJv
bVByZXZhbGVudERvbWFpbiI7Ci0gICAgICAgIGZ1bmN0aW9uIGFza0ZvclByZXZhbGVudFJlc291
cmNlcygpIHsKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuZ2V0UHJldmFsZW50RG9tYWlucyhmdW5j
dGlvbiAoYXJyYXlPZkRvbWFpbnMpIHsKLSAgICAgICAgICAgICAgICB2YXIgcGFzc2VkID0gZmFs
c2U7Ci0gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnJheU9mRG9tYWlucy5s
ZW5ndGg7ICsraSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoYXJyYXlPZkRvbWFpbnNbaV0g
PT09ICJsb2NhbGhvc3QiKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwYXNzZWQgPSB0cnVl
OwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKHBhc3NlZCkKLSAgICAgICAg
ICAgICAgICAgICAgdGVzdFBhc3NlZCgiRG9tYWluIHdhcyBzdWNjZXNzZnVsbHkgbWFya2VkIHBy
ZXZhbGVudC4iKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHRl
c3RGYWlsZWQoIkRvbWFpbiB3YXMgbm90IHN1Y2Nlc3NmdWxseSBtYXJrZWQgcHJldmFsZW50LiIp
OwotICAgICAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKLSAgICAgICAgICAgIH0pOwotICAgICAg
ICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gYWN0aXZhdGVFbGVtZW50KGVsZW1lbnRJZCkgewotICAg
ICAgICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50SWQp
OwotICAgICAgICAgICAgdmFyIGNlbnRlclggPSBlbGVtZW50Lm9mZnNldExlZnQgKyBlbGVtZW50
Lm9mZnNldFdpZHRoIC8gMjsKLSAgICAgICAgICAgIHZhciBjZW50ZXJZID0gZWxlbWVudC5vZmZz
ZXRUb3AgKyBlbGVtZW50Lm9mZnNldEhlaWdodCAvIDI7Ci0gICAgICAgICAgICBVSUhlbHBlci5h
Y3RpdmF0ZUF0KGNlbnRlclgsIGNlbnRlclkpLnRoZW4oCi0gICAgICAgICAgICAgICAgZnVuY3Rp
b24gKCkgeyB9LAotICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgICAg
ICAgICAgdGVzdEZhaWxlZCgiUHJvbWlzZSByZWplY3RlZC4iKTsKLSAgICAgICAgICAgICAgICAg
ICAgZmluaXNoVGVzdCgpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICk7Ci0gICAg
ICAgICAgICBhc2tGb3JQcmV2YWxlbnRSZXNvdXJjZXMoKTsKLSAgICAgICAgfQotCi0gICAgICAg
IGZ1bmN0aW9uIHJ1blRlc3QoKSB7Ci0gICAgICAgICAgICBpZiAoZG9jdW1lbnQubG9jYXRpb24u
aGFzaCAhPT0gIiNlbGVtZW50QWN0aXZhdGVkIikgewotICAgICAgICAgICAgICAgIGRvY3VtZW50
LmxvY2F0aW9uLmhhc2ggPSAiZWxlbWVudEFjdGl2YXRlZCI7Ci0gICAgICAgICAgICAgICAgYWN0
aXZhdGVFbGVtZW50KGlmcmFtZUlEKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAg
ICAgIGNvbnN0IGhvc3RVbmRlclRlc3QgPSAibG9jYWxob3N0OjgwMDAiOwotICAgICAgICBjb25z
dCBzdGF0aXN0aWNzVXJsID0gImh0dHA6Ly8iICsgaG9zdFVuZGVyVGVzdDsKLSAgICAgICAgCi0g
ICAgICAgIHNldEVuYWJsZUZlYXR1cmUodHJ1ZSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICB0
ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShzdGF0aXN0aWNzVXJsLCB0
cnVlLCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICBpZiAoIXRlc3RSdW5uZXIuaXNTdGF0
aXN0aWNzUHJldmFsZW50UmVzb3VyY2Uoc3RhdGlzdGljc1VybCkpCi0gICAgICAgICAgICAgICAg
ICAgIHRlc3RGYWlsZWQoIkhvc3QgZGlkIG5vdCBnZXQgc2V0IGFzIHByZXZhbGVudCByZXNvdXJj
ZS4iKTsKLQotICAgICAgICAgICAgICAgIGxldCBpZnJhbWVFbGVtZW50ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiaWZyYW1lIik7Ci0gICAgICAgICAgICAgICAgaWZyYW1lRWxlbWVudC5vbmxv
YWQgPSBydW5UZXN0OwotICAgICAgICAgICAgICAgIGlmcmFtZUVsZW1lbnQuaWQgPSAiaUZyYW1l
RnJvbVByZXZhbGVudERvbWFpbiI7Ci0gICAgICAgICAgICAgICAgaWZyYW1lRWxlbWVudC5zcmMg
PSAiaHR0cDovL2xvY2FsaG9zdDo4MDAwL3N0b3JhZ2VBY2Nlc3MvcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy9iYXNpYy1pZnJhbWUuaHRtbCI7Ci0gICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5h
cHBlbmRDaGlsZChpZnJhbWVFbGVtZW50KTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsK
LSAgICA8L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvd2ViLXNvY2tldC1sb2Fkcy1j
YXB0dXJlZC1pbi1wZXItcGFnZS1kb21haW5zLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvd2Vic29ja2V0L3dlYi1zb2NrZXQtbG9hZHMtY2FwdHVyZWQtaW4tcGVyLXBhZ2Ut
ZG9tYWlucy1leHBlY3RlZC50eHQKaW5kZXggMTgzNTViY2JiYjk3ZTM0MTMyNjlkYTE4ZjQ3NmQz
NjU1OTkyMzAzMi4uZTE0NzM1ZTZjMTViOWQyZDhmZTQwYmIxZGYxMTI0Y2ZmMmYyOGZlOCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvd2ViLXNvY2tldC1sb2Fk
cy1jYXB0dXJlZC1pbi1wZXItcGFnZS1kb21haW5zLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC93ZWItc29ja2V0LWxvYWRzLWNhcHR1cmVkLWluLXBl
ci1wYWdlLWRvbWFpbnMtZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsNCBAQAotRW5zdXJlIHdlYiBz
b2NrZXQgbG9hZHMgYXJlIGNhcHR1cmVkIGJ5IHBlci1wYWdlIHByZXZhbGVudCBkb21haW4gbG9n
Z2luZy4KK0Vuc3VyZSB3ZWIgc29ja2V0IGxvYWRzIGFyZSByZXBvcnRlZCBhcyBsb2FkZWQgdGhp
cmQgcGFydHkgZG9tYWlucy4KIAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC93ZWItc29ja2V0LWxvYWRzLWNh
cHR1cmVkLWluLXBlci1wYWdlLWRvbWFpbnMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
d2Vic29ja2V0L3dlYi1zb2NrZXQtbG9hZHMtY2FwdHVyZWQtaW4tcGVyLXBhZ2UtZG9tYWlucy5o
dG1sCmluZGV4IGMzZjFiMTMwY2Y2YzFhNTgzODdhMjI4N2RkNzQzNGM0MjNmMDM5YjAuLmUyN2Q0
NWU5NmIyNGMyODJiZDdlZTU2NDdhMzI0ZmQyMjY5MmU2NGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3dlYi1zb2NrZXQtbG9hZHMtY2FwdHVyZWQtaW4tcGVy
LXBhZ2UtZG9tYWlucy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0
L3dlYi1zb2NrZXQtbG9hZHMtY2FwdHVyZWQtaW4tcGVyLXBhZ2UtZG9tYWlucy5odG1sCkBAIC01
LDE3ICs1LDE3IEBACiA8L2hlYWQ+CiA8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CiA8c2NyaXB0
PgotICAgIGRlc2NyaXB0aW9uKCdFbnN1cmUgd2ViIHNvY2tldCBsb2FkcyBhcmUgY2FwdHVyZWQg
YnkgcGVyLXBhZ2UgcHJldmFsZW50IGRvbWFpbiBsb2dnaW5nLicpOworICAgIGRlc2NyaXB0aW9u
KCdFbnN1cmUgd2ViIHNvY2tldCBsb2FkcyBhcmUgcmVwb3J0ZWQgYXMgbG9hZGVkIHRoaXJkIHBh
cnR5IGRvbWFpbnMuJyk7CiAKICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CiAgICAg
CiAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQogICAgICAgICB0ZXN0UnVubmVyLnNldEFsbG93
c0FueVNTTENlcnRpZmljYXRlKHRydWUpOwogCi0gICAgZnVuY3Rpb24gYXNrRm9yUHJldmFsZW50
UmVzb3VyY2VzKCkgewotICAgICAgICB0ZXN0UnVubmVyLmdldFByZXZhbGVudERvbWFpbnMoZnVu
Y3Rpb24gKGFycmF5T2ZEb21haW5zKSB7CisgICAgZnVuY3Rpb24gYXNrRm9yTG9hZGVkRG9tYWlu
cygpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5nZXRMb2FkZWREb21haW5zKGZ1bmN0aW9uIChhcnJh
eU9mRG9tYWlucykgewogICAgICAgICAgICAgaWYgKGFycmF5T2ZEb21haW5zLmxlbmd0aCA9PSAw
KSB7Ci0gICAgICAgICAgICAgICAgYXNrRm9yUHJldmFsZW50UmVzb3VyY2VzKCk7CisgICAgICAg
ICAgICAgICAgYXNrRm9yTG9hZGVkRG9tYWlucygpOwogICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChhcnJheU9mRG9tYWlucy5pbmNsdWRlcygi
bG9jYWxob3N0IikpCkBAIC0yNywxMiArMjcsOCBAQAogICAgIH0KIAogICAgIGZ1bmN0aW9uIHJ1
blRlc3QoKSB7Ci0gICAgICAgIHNldEVuYWJsZUZlYXR1cmUodHJ1ZSwgZnVuY3Rpb24oKSB7Ci0g
ICAgICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZSgiaHR0
cDovL2xvY2FsaG9zdCIsIHRydWUsIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgICAgICBuZXcg
V2ViU29ja2V0KCd3czovL2xvY2FsaG9zdDo4ODgwL3dlYnNvY2tldC90ZXN0cy9oeWJpL3NpbXBs
ZScpOwotICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoYXNrRm9yUHJldmFsZW50UmVzb3VyY2Vz
LCAwKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsKKyAgICAgICAgbmV3IFdlYlNvY2tl
dCgnd3M6Ly9sb2NhbGhvc3Q6ODg4MC93ZWJzb2NrZXQvdGVzdHMvaHliaS9zaW1wbGUnKTsKKyAg
ICAgICAgc2V0VGltZW91dChhc2tGb3JMb2FkZWREb21haW5zLCAwKTsKICAgICB9CiA8L3Njcmlw
dD4KIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggYmE0ZWRmOThk
OWI3N2Y3MDRkNDY0NGJjM2U4MzA5NjlmODk3MTUwNC4uMzE5NGUyMzdjZGQ0NjkwNWZiYWIwZTUx
YmY3MTBjZjlkYmVlMGU4NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rl
c3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3Rh
dGlvbnMKQEAgLTI3MjYsOCArMjcyNiw2IEBAIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy91c2VyLWludGVyYWN0aW9uLXJlcG9ydGVkLWFmdGVyLXdlYnNpdGUtZGF0YS1yCiB3ZWJr
aXQub3JnL2IvMTc0MTIwIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy91c2VyLWlu
dGVyYWN0aW9uLWluLWNyb3NzLW9yaWdpbi1zdWItZnJhbWUtZGF0YWJhc2UuaHRtbCBbIFNraXAg
XQogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3VzZXItaW50ZXJhY3Rpb24tb25s
eS1yZXBvcnRlZC1vbmNlLXdpdGhpbi1zaG9ydC1wZXJpb2Qtb2YtdGltZS1kYXRhYmFzZS5odG1s
IFsgU2tpcCBdCiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvdXNlci1pbnRlcmFj
dGlvbi1yZXBvcnRlZC1hZnRlci13ZWJzaXRlLWRhdGEtcmVtb3ZhbC1kYXRhYmFzZS5odG1sIFsg
U2tpcCBdCi1odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcHJldmFsZW50LWRvbWFp
bnMtcGVyLXBhZ2UtZGF0YWJhc2UuaHRtbCBbIFNraXAgXQotaHR0cC90ZXN0cy9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzL3ByZXZhbGVudC1kb21haW5zLXBlci1wYWdlLmh0bWwgWyBTa2lwIF0KICMg
U2tpcHBlZCBpbiBXSzIgZXhwZWN0YXRpb25zIGJlY2F1c2UgY29va2llIHBhcnRpdGlvbmluZyBp
cyBvbmx5IGF2YWlsYWJsZSBpbiBtYWNPUyBIaWdoIFNpZXJyYSBhbmQgaU9TIDExLgogaHR0cC90
ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2Nvb2tpZS1kZWxldGlvbi5odG1sIFsgUGFzcyBd
CiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY29va2llcy13aXRoLWFuZC13aXRo
b3V0LXVzZXItaW50ZXJhY3Rpb24uaHRtbCBbIFBhc3MgXQpAQCAtMzUwNyw0ICszNTA1LDQgQEAg
d2Via2l0Lm9yZy9iLzIwODA1MyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ludGVy
c2VjdGlvbi1vYnNlcnZlci92Mi9jcm8KIAogd2Via2l0Lm9yZy9iLzIwNDMxMiBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3N2Zy9pbXBvcnQvc3RydWN0LWRvbS0wNi1iLW1hbnVhbC5z
dmcgWyBGYWlsdXJlIFBhc3MgXQogCi13ZWJraXQub3JnL2IvMjA4NTkyIHN2Zy9jdXN0b20vb2Jq
ZWN0LXNpemluZy1leHBsaWNpdC1oZWlnaHQueGh0bWwgWyBQYXNzIEZhaWx1cmUgXQpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKK3dlYmtpdC5vcmcvYi8yMDg1OTIgc3ZnL2N1c3RvbS9vYmpl
Y3Qtc2l6aW5nLWV4cGxpY2l0LWhlaWdodC54aHRtbCBbIFBhc3MgRmFpbHVyZSBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393441</attachid>
            <date>2020-03-12 19:06:37 -0700</date>
            <delta_ts>2020-03-13 08:25:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209032-20200312190635.patch</filename>
            <type>text/plain</type>
            <size>43818</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4Mzc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGViNzk1MzkyNTY5ZTE4OGVk
MTcyZDIwOTVkZTkwYjdiZWM0YTBlY2YuLmY4MDBhZjgyMGUwOTE5YTc5MTRmOWJjZTk4ZWFlZjlj
YzVmYjJhNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMjAtMDMtMTIgIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVwb3J0IGFsbCB0
aGlyZCBwYXJ0eSBsb2FkcyBvbiBhIHBlci1wYWdlIGJhc2lzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDkwMzIKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzYwMzk3MzIzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9sb2FkZWQtcmVn
aXN0cmFibGUtZG9tYWlucy1nZXQtcmVwb3J0ZWQuaHRtbAorCisgICAgICAgIFJlbW92ZWQgSVBD
IHRvIHRoZSBOZXR3b3JrIFByb2Nlc3MgYXNraW5nIGlmIGEgcmVzb3VyY2UgbG9hZCBpcyBmcm9t
CisgICAgICAgIGEgcHJldmFsZW50IGRvbWFpbi4gVGhpcyBub3cgc3RvcmVzIGFuZCBzZW5kcyBh
bGwgbG9hZGVkIHJlZ2lzdHJhYmxlCisgICAgICAgIGRvbWFpbnMuIFRoaXMgcGF0Y2ggaXMgbW9z
dGx5IHVwZGF0aW5nIG5hbWluZyB0byByZWZsZWN0IHRoaXMgYW5kCisgICAgICAgIGRlbGV0aW5n
IHVubmVjZXNzYXJ5IGNvZGUuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmlzUHJldmFsZW50U3Vi
cmVzb3VyY2VMb2FkKTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tOgorICAgICAgICAoLVtXS1dlYnNpdGVE
YXRhU3RvcmUgX2dldExvYWRlZERvbWFpbnNGb3I6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAg
ICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfY2xlYXJMb2FkZWREb21haW5zRm9yOl0pOgorICAg
ICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX2dldFByZXZhbGVudERvbWFpbnNGb3I6Y29tcGxl
dGlvbkhhbmRsZXI6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBf
Y2xlYXJQcmV2YWxlbnREb21haW5zRm9yOl0pOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OmRpZENvbW1pdExvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjphZGRMb2FkZWRSZWdpc3RyYWJsZURvbWFpbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OmdldExvYWRlZERvbWFpbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjbGVhckxvYWRl
ZERvbWFpbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRQcmV2YWxlbnREb21haW5z
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y2xlYXJQcmV2YWxlbnREb21h
aW5zKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCiAyMDIw
LTAzLTEyICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgV2Vi
UGFnZVByb3h5OjpTYXZlSW1hZ2VUb0xpYnJhcnkgc2hvdWxkIHZhbGlkYXRlIGl0cyBgaW1hZ2VT
aXplYCBwYXJhbWV0ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggMmNiOTljNWIw
M2JkNTU2ZmU1MTgyOWQ2OWFlZGQwZDE5ZGIzNmRkNC4uYzRiOWVjZTQ4NmU0ZDcwMGI2MDk0ZjM1
ZWRkZWYxZDI1OGMyN2NhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTg2NSwx
NyArODY1LDYgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVxdWVzdFN0
b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihXZWJDb3JlOjpSZWcKICAgICAgICAgICAgIHJlc291cmNl
TG9hZFN0YXRpc3RpY3MtPnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoV1RGTW92ZShk
b21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MpLCBvcGVuZXJQYWdlSUQsIFdURk1vdmUob3BlbmVy
RG9tYWluKSk7CiAgICAgfQogfQotCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Ojppc1ByZXZhbGVudFN1YnJlc291cmNlTG9hZChSZWdpc3RyYWJsZURvbWFpbiYmIGRvbWFpbiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAg
ICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbigpKSB7Ci0g
ICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24t
PnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkgewotICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy0+aXNQcmV2YWxlbnRSZXNvdXJjZShkb21haW4sIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLSAgICBjb21w
bGV0aW9uSGFuZGxlcihmYWxzZSk7Ci19CiAjZW5kaWYKIAogdm9pZCBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoY29uc3QgU3RyaW5n
JiBzb3VyY2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Qcm90b2NvbCwgY29uc3Qg
U3RyaW5nJiBkZXN0aW5hdGlvbkhvc3QsIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggYjc1OWMyOWQyNGQ2NzlmYjkzMDQ5ZWQyYWI5
YTQ0Y2U0ZjAxODc1MC4uMWY4NzMxMjc5YTQ2ZWI2ODc5YzNjNWVhMjk0MGQyZjRkYjIyZTE5OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtMjY2LDcgKzI2Niw2IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFt
ZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIHRvcEZyYW1lRG9tYWluLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBXZWJDb3JlOjpTdG9yYWdlQWNj
ZXNzUHJvbXB0V2FzU2hvd24pPiYmKTsKICAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5k
ZXJPcGVuZXIoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBkb21haW5Jbk5lZWRPZlN0b3Jh
Z2VBY2Nlc3MsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4mJiBvcGVuZXJEb21haW4pOwotICAgIHZvaWQgaXNQcmV2YWxlbnRT
dWJyZXNvdXJjZUxvYWQoUmVnaXN0cmFibGVEb21haW4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJik7CiAjZW5kaWYKIAogICAgIHZvaWQgYWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0
RW50cnkoY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgZGVzdGluYXRp
b25Qcm90b2NvbCwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbkhvc3QsIGJvb2wgYWxsb3dEZXN0
aW5hdGlvblN1YmRvbWFpbnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2Fn
ZXMuaW4KaW5kZXggMjRmNWU1Yzg0YjdiYTM0YjY4NDE0YmNjMDMzNWNkM2Y4ZGI0Y2I5OS4uNmZm
N2E0MDg3MTBhZWUzYzEzYzhmYmM1NGZhMmNjZTRhODU2NjBhMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC02Nyw3ICs2Nyw2IEBAIG1lc3NhZ2VzIC0+
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBIYXNT
dG9yYWdlQWNjZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN1YkZyYW1lRG9tYWluLCBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbiwgV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkgLT4gKGJv
b2wgaGFzU3RvcmFnZUFjY2VzcykgQXN5bmMKICAgICBSZXF1ZXN0U3RvcmFnZUFjY2VzcyhXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiBzdWJGcmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4gdG9wRnJhbWVEb21haW4sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlE
LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIFdlYktpdDo6V2ViUGFnZVByb3h5
SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCkgLT4gKGVudW06Ym9vbCBXZWJDb3JlOjpTdG9yYWdl
QWNjZXNzV2FzR3JhbnRlZCB3YXNHcmFudGVkLCBlbnVtOmJvb2wgV2ViQ29yZTo6U3RvcmFnZUFj
Y2Vzc1Byb21wdFdhc1Nob3duIHByb21wdFdhc1Nob3duKSBBc3luYwogICAgIFJlcXVlc3RTdG9y
YWdlQWNjZXNzVW5kZXJPcGVuZXIoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluSW5O
ZWVkT2ZTdG9yYWdlQWNjZXNzLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBvcGVuZXJQYWdlSUQs
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIG9wZW5lckRvbWFpbikKLSAgICBJc1ByZXZhbGVu
dFN1YnJlc291cmNlTG9hZChXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW4pIC0+IChi
b29sIGlzUHJldmFsZW50KSBBc3luYwogI2VuZGlmCiAKICAgICBBZGRPcmlnaW5BY2Nlc3NXaGl0
ZWxpc3RFbnRyeShTdHJpbmcgc291cmNlT3JpZ2luLCBTdHJpbmcgZGVzdGluYXRpb25Qcm90b2Nv
bCwgU3RyaW5nIGRlc3RpbmF0aW9uSG9zdCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlu
cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJz
aXRlRGF0YVN0b3JlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
c2l0ZURhdGFTdG9yZS5tbQppbmRleCA4NGRjMmM4OGZkNzc5OTlkNTEwNzYzYzY3OWZiMzQ3ZDNj
YTNiNTUyLi40YTc1Y2IyNTI4NjAyOGUxNGFmOWEyNGFlOTJiNTI0YTc2MWI5YzQyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3Jl
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRh
U3RvcmUubW0KQEAgLTM5MCw3ICszOTAsNyBAQCArICh2b2lkKV9hbGxvd1dlYnNpdGVEYXRhUmVj
b3Jkc0ZvckFsbE9yaWdpbnMKICAgICBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmFsbG93V2Vi
c2l0ZURhdGFSZWNvcmRzRm9yQWxsT3JpZ2lucygpOwogfQogCi0tICh2b2lkKV9nZXRQcmV2YWxl
bnREb21haW5zRm9yOihXS1dlYlZpZXcgKil3ZWJWaWV3IGNvbXBsZXRpb25IYW5kbGVyOih2b2lk
ICheKShOU0FycmF5PE5TU3RyaW5nICo+ICpkb21haW5zKSljb21wbGV0aW9uSGFuZGxlcgorLSAo
dm9pZClfZ2V0TG9hZGVkRG9tYWluc0ZvcjooV0tXZWJWaWV3ICopd2ViVmlldyBjb21wbGV0aW9u
SGFuZGxlcjoodm9pZCAoXikoTlNBcnJheTxOU1N0cmluZyAqPiAqZG9tYWlucykpY29tcGxldGlv
bkhhbmRsZXIKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIGlm
ICghd2ViVmlldykgewpAQCAtNDA0LDggKzQwNCw4IEBAIC0gKHZvaWQpX2dldFByZXZhbGVudERv
bWFpbnNGb3I6KFdLV2ViVmlldyAqKXdlYlZpZXcgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4p
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgd2ViUGFnZVByb3h5LT5nZXRQcmV2
YWxlbnREb21haW5zKFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9u
SGFuZGxlcildIChWZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiYgcHJldmFsZW50
RG9tYWlucykgewotICAgICAgICBWZWN0b3I8UmVmUHRyPEFQSTo6T2JqZWN0Pj4gYXBpRG9tYWlu
cyA9IFdURjo6bWFwKHByZXZhbGVudERvbWFpbnMsIFtdKGF1dG8mIGRvbWFpbikgeworICAgIHdl
YlBhZ2VQcm94eS0+Z2V0TG9hZGVkRG9tYWlucyhbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxv
Y2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoVmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluPiYmIGxvYWRlZERvbWFpbnMpIHsKKyAgICAgICAgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVj
dD4+IGFwaURvbWFpbnMgPSBXVEY6Om1hcChsb2FkZWREb21haW5zLCBbXShhdXRvJiBkb21haW4p
IHsKICAgICAgICAgICAgIHJldHVybiBSZWZQdHI8QVBJOjpPYmplY3Q+KEFQSTo6U3RyaW5nOjpj
cmVhdGUoV1RGTW92ZShkb21haW4uc3RyaW5nKCkpKSk7CiAgICAgICAgIH0pOwogICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcih3cmFwcGVyKEFQSTo6QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGFwaURv
bWFpbnMpKSkpOwpAQCAtNDE1LDcgKzQxNSw3IEBAIC0gKHZvaWQpX2dldFByZXZhbGVudERvbWFp
bnNGb3I6KFdLV2ViVmlldyAqKXdlYlZpZXcgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pCiAj
ZW5kaWYKIH0KIAotLSAodm9pZClfY2xlYXJQcmV2YWxlbnREb21haW5zRm9yOihXS1dlYlZpZXcg
Kil3ZWJWaWV3CistICh2b2lkKV9jbGVhckxvYWRlZERvbWFpbnNGb3I6KFdLV2ViVmlldyAqKXdl
YlZpZXcKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIGlmICgh
d2ViVmlldykKQEAgLTQyNSw3ICs0MjUsNyBAQCAtICh2b2lkKV9jbGVhclByZXZhbGVudERvbWFp
bnNGb3I6KFdLV2ViVmlldyAqKXdlYlZpZXcKICAgICBpZiAoIXdlYlBhZ2VQcm94eSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgd2ViUGFnZVByb3h5LT5jbGVhclByZXZhbGVudERvbWFpbnMoKTsK
KyAgICB3ZWJQYWdlUHJveHktPmNsZWFyTG9hZGVkRG9tYWlucygpOwogI2VuZGlmCiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRh
U3RvcmVQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJz
aXRlRGF0YVN0b3JlUHJpdmF0ZS5oCmluZGV4IGVkZTc1OGYwNDAxNDJmNDVhY2I3ZTVkZGIyMWNl
ODM3ODBkYWIzZmEuLjRmYzc4Y2U0NjU5YTczZGQ4ODJhOTcxMmE3YTA5NGJlZTk0MmI0YWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRh
U3RvcmVQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaApAQCAtNjEsOCArNjEsOCBAQCB0eXBlZGVmIE5TX09Q
VElPTlMoTlNVSW50ZWdlciwgX1dLV2Vic2l0ZURhdGFTdG9yZUZldGNoT3B0aW9ucykgewogCiAt
ICh2b2lkKV9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVzdGluZ0NhbGxiYWNrOihudWxsYWJs
ZSB2b2lkICheKShXS1dlYnNpdGVEYXRhU3RvcmUgKiwgTlNTdHJpbmcgKikpY2FsbGJhY2sgV0tf
QVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMyksIGlvcygxMS4wKSk7CiAtICh2b2lkKV9nZXRBbGxT
dG9yYWdlQWNjZXNzRW50cmllc0ZvcjooV0tXZWJWaWV3ICopd2ViVmlldyBjb21wbGV0aW9uSGFu
ZGxlcjoodm9pZCAoXikoTlNBcnJheTxOU1N0cmluZyAqPiAqZG9tYWlucykpY29tcGxldGlvbkhh
bmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNCksIGlvcygxMi4wKSk7Ci0tICh2b2lk
KV9nZXRQcmV2YWxlbnREb21haW5zRm9yOihXS1dlYlZpZXcgKil3ZWJWaWV3IGNvbXBsZXRpb25I
YW5kbGVyOih2b2lkICheKShOU0FycmF5PE5TU3RyaW5nICo+ICpkb21haW5zKSljb21wbGV0aW9u
SGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RC
QSkpOwotLSAodm9pZClfY2xlYXJQcmV2YWxlbnREb21haW5zRm9yOihXS1dlYlZpZXcgKil3ZWJW
aWV3IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7
CistICh2b2lkKV9nZXRMb2FkZWREb21haW5zRm9yOihXS1dlYlZpZXcgKil3ZWJWaWV3IGNvbXBs
ZXRpb25IYW5kbGVyOih2b2lkICheKShOU0FycmF5PE5TU3RyaW5nICo+ICpkb21haW5zKSljb21w
bGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tf
SU9TX1RCQSkpOworLSAodm9pZClfY2xlYXJMb2FkZWREb21haW5zRm9yOihXS1dlYlZpZXcgKil3
ZWJWaWV3IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJB
KSk7CiAtICh2b2lkKV9nZXRXZWJWaWV3Q2F0ZWdvcnlGb3I6KFdLV2ViVmlldyAqKXdlYlZpZXcg
Y29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKF9XS1dlYlZpZXdDYXRlZ29yeSBjYXRlZ29yeSkp
Y29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9z
KFdLX0lPU19UQkEpKTsKICsgKHZvaWQpX2FsbG93V2Vic2l0ZURhdGFSZWNvcmRzRm9yQWxsT3Jp
Z2lucyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpLCBpb3MoMTEuMykpOwogLSAoYm9v
bClfaGFzUmVnaXN0ZXJlZFNlcnZpY2VXb3JrZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4x
NCksIGlvcygxMi4wKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApp
bmRleCA1MzhmYTU3NmUyMWFkMjQ5OGVjODNkMTE5MjBhYWZhOTBlMmUyYmVmLi4wNTNlYjc1MzVh
NDZhM2Q1ZWNkY2JkODJlMWUxMDVmYTQ4ZmNlM2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKQEAgLTk5NDcsMTQgKzk5NDcsMTQgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnNldE9yaWVudGF0aW9uRm9yTWVkaWFDYXB0dXJlKHVpbnQ2NF90IG9yaWVudGF0aW9uKQog
fQogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLXZvaWQgV2ViUGFnZVBy
b3h5OjpnZXRQcmV2YWxlbnREb21haW5zKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFJl
Z2lzdHJhYmxlRG9tYWluPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFnZVBy
b3h5OjpnZXRMb2FkZWREb21haW5zKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFJlZ2lz
dHJhYmxlRG9tYWluPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBzZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFByZXZhbGVudERvbWFpbnMoKSwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
V2ViUGFnZTo6R2V0TG9hZGVkRG9tYWlucygpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpjbGVhclByZXZhbGVudERvbWFpbnMoKQordm9pZCBX
ZWJQYWdlUHJveHk6OmNsZWFyTG9hZGVkRG9tYWlucygpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6Q2xlYXJQcmV2YWxlbnREb21haW5zKCkpOworICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkNsZWFyTG9hZGVkRG9tYWlucygpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDk3OTdmOGQyNzA2ODhlY2VmZjg0OGNiYjQ1MTNm
MmM1YmJmYWIyYjEuLjZmZTk5NGQ3NDQ5NjBjZWZlNTc4MjI1YTRmNmQ3M2VhOWQwNmM5ZWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xNTY3LDggKzE1NjcsOCBA
QCBwdWJsaWM6CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICB2b2lk
IHJlcXVlc3RTdG9yYWdlQWNjZXNzQ29uZmlybShjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiB0
b3BGcmFtZURvbWFpbiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIGRpZENvbW1pdENyb3NzU2l0ZUxvYWRXaXRoRGF0
YVRyYW5zZmVyRnJvbVByZXZhbGVudFJlc291cmNlKCk7Ci0gICAgdm9pZCBnZXRQcmV2YWxlbnRE
b21haW5zKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluPiYmKT4mJik7Ci0gICAgdm9pZCBjbGVhclByZXZhbGVudERvbWFpbnMoKTsKKyAgICB2
b2lkIGdldExvYWRlZERvbWFpbnMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4+JiYpPiYmKTsKKyAgICB2b2lkIGNsZWFyTG9hZGVkRG9tYWlu
cygpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBhZWYyODU5NTgxNTI5
MjdiMDA1ZTk1NzU3YmI2OTA3NWQyYTc5ZWNlLi5iM2M2YjE5NTUwNzBjODAzYmJkNTRlYzQyNDZk
NTdmOGI5Mjg1NWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcApAQCAtNTg1OCw3ICs1ODU4LDcgQEAgdm9pZCBXZWJQYWdlOjpkaWRDb21taXRMb2Fk
KFdlYkZyYW1lKiBmcmFtZSkKICAgICAgICAgcmV0dXJuOwogCiAjaWYgRU5BQkxFKFJFU09VUkNF
X0xPQURfU1RBVElTVElDUykKLSAgICBjbGVhclByZXZhbGVudERvbWFpbnMoKTsKKyAgICBjbGVh
ckxvYWRlZERvbWFpbnMoKTsKICNlbmRpZgogICAgIAogICAgIC8vIElmIHByZXZpb3VzIFVSTCBp
cyBpbnZhbGlkLCB0aGVuIGl0J3Mgbm90IGEgcmVhbCBwYWdlIHRoYXQncyBiZWluZyBuYXZpZ2F0
ZWQgYXdheSBmcm9tLgpAQCAtNjY5OCwyMiArNjY5OCwxNSBAQCB2b2lkIFdlYlBhZ2U6Ondhc0xv
YWRlZFdpdGhEYXRhVHJhbnNmZXJGcm9tUHJldmFsZW50UmVzb3VyY2UoKQogdm9pZCBXZWJQYWdl
OjphZGRMb2FkZWRSZWdpc3RyYWJsZURvbWFpbihSZWdpc3RyYWJsZURvbWFpbiYmIGRvbWFpbikK
IHsKICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fbG9hZGVkRG9tYWlucy5hZGQoZG9tYWluKTsKLSAg
ICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpIHsKLSAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRX
aXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Oklz
UHJldmFsZW50U3VicmVzb3VyY2VMb2FkKGRvbWFpbiksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIGRvbWFpbl0gKGJvb2wgaXNQcmV2YWxlbnQpIHsKLSAgICAgICAgICAg
IGlmIChpc1ByZXZhbGVudCkKLSAgICAgICAgICAgICAgICBtX3ByZXZhbGVudERvbWFpbnMuYWRk
KGRvbWFpbik7Ci0gICAgICAgIH0pOwotICAgIH0KIH0KIAotdm9pZCBXZWJQYWdlOjpnZXRQcmV2
YWxlbnREb21haW5zKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFJlZ2lzdHJhYmxlRG9t
YWluPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhZ2U6OmdldExvYWRlZERvbWFp
bnMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+KT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBjb21wbGV0aW9uSGFuZGxlcihjb3B5VG9WZWN0b3Io
bV9wcmV2YWxlbnREb21haW5zKSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoY29weVRvVmVjdG9y
KG1fbG9hZGVkRG9tYWlucykpOwogfQogCi12b2lkIFdlYlBhZ2U6OmNsZWFyUHJldmFsZW50RG9t
YWlucygpCit2b2lkIFdlYlBhZ2U6OmNsZWFyTG9hZGVkRG9tYWlucygpCiB7Ci0gICAgbV9wcmV2
YWxlbnREb21haW5zLmNsZWFyKCk7CiAgICAgbV9sb2FkZWREb21haW5zLmNsZWFyKCk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCAwYzA1YmZh
Zjg3Zjg0YzliMzQ2ZDY0NGFhM2QxOTgzY2Y4Y2I4NzZlLi45YzRmZThjNWI3NGFmYjE3MmE0N2Ey
NGVhYzVhODQ1ZTdiODFjMTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCkBAIC0xMTg4LDggKzExODgsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGREb21h
aW5XaXRoUGFnZUxldmVsU3RvcmFnZUFjY2Vzcyhjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiYgdG9wTGV2ZWxEb21haW4sIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiBy
ZXNvdXJjZURvbWFpbik7CiAgICAgdm9pZCB3YXNMb2FkZWRXaXRoRGF0YVRyYW5zZmVyRnJvbVBy
ZXZhbGVudFJlc291cmNlKCk7CiAgICAgdm9pZCBhZGRMb2FkZWRSZWdpc3RyYWJsZURvbWFpbihX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmKTsKLSAgICB2b2lkIGNsZWFyUHJldmFsZW50RG9t
YWlucygpOwotICAgIHZvaWQgZ2V0UHJldmFsZW50RG9tYWlucyhDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFZlY3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4pPiYmKTsKKyAgICB2b2lkIGNs
ZWFyTG9hZGVkRG9tYWlucygpOworICAgIHZvaWQgZ2V0TG9hZGVkRG9tYWlucyhDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4pPiYmKTsKICNl
bmRpZgogCiAjaWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKQEAgLTIwNjQsNyArMjA2NCw2
IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBI
YXNoTWFwPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbj4gbV9kb21haW5zV2l0aFBhZ2VMZXZlbFN0b3JhZ2VBY2Nlc3M7CiAgICAgSGFzaFNldDxX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gbV9sb2FkZWREb21haW5zOwotICAgIEhhc2hTZXQ8
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IG1fcHJldmFsZW50RG9tYWluczsKICNlbmRpZgog
CiAgICAgU3RyaW5nIG1fb3ZlcnJpZGRlbk1lZGlhVHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IGU2MDFjZmY3
MmIzNGJmMDRkMGUwM2FhYWM1NWJmNmVhYjM1ZDk5MmQuLmRlZjRhZWIwMDc0YzFlZGRkMzVmMjli
ZTQyOTlmZjgzYzM4MzAzMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtNTc3LDggKzU3Nyw4IEBAIEdlbmVyYXRl
U3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRp
dGluZ0NvbW1hbmRUeXBlCiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQog
ICAgIFdhc0xvYWRlZFdpdGhEYXRhVHJhbnNmZXJGcm9tUHJldmFsZW50UmVzb3VyY2UoKQotICAg
IENsZWFyUHJldmFsZW50RG9tYWlucygpCi0gICAgR2V0UHJldmFsZW50RG9tYWlucygpIC0+IChW
ZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnMpIEFzeW5jCisgICAgQ2xl
YXJMb2FkZWREb21haW5zKCkKKyAgICBHZXRMb2FkZWREb21haW5zKCkgLT4gKFZlY3RvcjxXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gZG9tYWlucykgQXN5bmMKICNlbmRpZgogCiAjaWYgVVNF
KFNZU1RFTV9QUkVWSUVXKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hh
bmdlTG9nCmluZGV4IDJmYTk0OGQwM2UwNTgyMzQ0MjkzNWQwYjJmMmRmNDc1NjBmN2NiNjkuLjVl
YWQ3OWEyMDk3OGI4YTQxNjg5NTdkOThjNmFlYmZhN2YxNDU1NmUgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MSBAQAorMjAyMC0w
My0xMiAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KKworICAgICAg
ICBSZXBvcnQgYWxsIHRoaXJkIHBhcnR5IGxvYWRzIG9uIGEgcGVyLXBhZ2UgYmFzaXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTAzMgorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNjAzOTczMjM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgTW9zdGx5IG5hbWluZyB1cGRhdGVzIHRvIHJlZmxlY3QgdGhl
IGNoYW5nZSBpbiB1c2UgZm9yIHRoaXMgU1BJIGNhbGwuCisgICAgICAgIEl0IG5vdyByZXR1cm5z
IGFsbCBsb2FkZWQgZG9tYWlucywgbm90IGp1c3QgcHJldmFsZW50IG9uZXMuCisKKyAgICAgICAg
KiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRs
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGUuY3BwOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6ZGlkUmVjZWl2ZU1lc3NhZ2VU
b1BhZ2UpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1
bm5lci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OmdldExvYWRlZERvbWFpbnMpOgor
ICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpjYWxsRGlkUmVjZWl2ZUxvYWRlZERvbWFpbnNDYWxs
YmFjayk6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OmdldFByZXZhbGVudERvbWFpbnMpOiBE
ZWxldGVkLgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpjYWxsRGlkUmVjZWl2ZVByZXZhbGVu
dERvbWFpbnNDYWxsYmFjayk6IERlbGV0ZWQuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpyZXNldFN0
YXRlVG9Db25zaXN0ZW50VmFsdWVzKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6Omdl
dExvYWRlZERvbWFpbnMpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Y2xlYXJMb2Fk
ZWREb21haW5zKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmdldFByZXZhbGVudERv
bWFpbnMpOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Y2xlYXJQcmV2
YWxlbnREb21haW5zKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RD
b250cm9sbGVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5j
cHA6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZUZyb21J
bmplY3RlZEJ1bmRsZSk6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZl
TG9hZGVkRG9tYWlucyk6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZl
UHJldmFsZW50RG9tYWlucyk6IERlbGV0ZWQuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0SW52b2NhdGlvbi5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENv
bnRyb2xsZXJDb2NvYS5tbToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmdldExvYWRl
ZERvbWFpbnMpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Y2xlYXJMb2FkZWREb21h
aW5zKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmdldFByZXZhbGVudERvbWFpbnMp
OiBEZWxldGVkLgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Y2xlYXJQcmV2YWxlbnRE
b21haW5zKTogRGVsZXRlZC4KKwogMjAyMC0wMy0xMiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBDcmFzaCBpbiBUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6
cmVwbGFjZQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKaW5kZXggMTMwMjcxMGY2NGU1Yjc5Mzg1
ZDAzYTk2MjJiNmU2ZGJmZmRlOTZkMi4uYjJmNDA3ODk5MDE1MTVhYWNlODk4NzI2ZjQ2ZWUzMTJi
NTZhYmFiOSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCkBAIC0zNDUsNyArMzQ1LDcgQEAg
aW50ZXJmYWNlIFRlc3RSdW5uZXIgewogICAgIHZvaWQgc2V0U3RhdGlzdGljc1Nob3VsZERvd25n
cmFkZVJlZmVycmVyKGJvb2xlYW4gdmFsdWUsIG9iamVjdCBjYWxsYmFjayk7CiAgICAgdm9pZCBz
ZXRTdGF0aXN0aWNzU2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llcyhib29sZWFuIHZhbHVlLCBv
YmplY3QgY2FsbGJhY2ssIG9wdGlvbmFsIGJvb2xlYW4gb25seU9uU2l0ZXNXaXRob3V0VXNlcklu
dGVyYWN0aW9uKTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NGaXJzdFBhcnR5V2Vic2l0ZURhdGFS
ZW1vdmFsTW9kZShib29sZWFuIHZhbHVlLCBvYmplY3QgY2FsbGJhY2spOwotICAgIHZvaWQgZ2V0
UHJldmFsZW50RG9tYWlucyhvYmplY3QgY2FsbGJhY2spOworICAgIHZvaWQgZ2V0TG9hZGVkRG9t
YWlucyhvYmplY3QgY2FsbGJhY2spOwogCiAgICAgLy8gSW5qZWN0ZWQgYnVuZGxlIGZvcm0gY2xp
ZW50LgogICAgIHZvaWQgaW5zdGFsbFRleHREaWRDaGFuZ2VJblRleHRGaWVsZENhbGxiYWNrKG9i
amVjdCBjYWxsYmFjayk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCmluZGV4IDAwYzllNzUzMjg3YjA3ZGE2NGYz
OGI1N2U2YWJhYmM1ZGRhOTdhYTEuLmRiZDUyYzdjMDU4NDBiODU2NmQ3ZmZkYTA5ZGFhM2E4Mjcx
ZjhhYTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGUuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCkBAIC00MTUsNyArNDE1LDcgQEAgdm9pZCBJbmplY3Rl
ZEJ1bmRsZTo6ZGlkUmVjZWl2ZU1lc3NhZ2VUb1BhZ2UoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdL
U3RyaW5nUmVmIG0KICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBpZiAoV0tTdHJp
bmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkNhbGxEaWRSZWNlaXZlUHJldmFs
ZW50RG9tYWlucyIpKSB7CisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVz
c2FnZU5hbWUsICJDYWxsRGlkUmVjZWl2ZUxvYWRlZERvbWFpbnMiKSkgewogICAgICAgICBBU1NF
UlQobWVzc2FnZUJvZHkpOwogICAgICAgICBBU1NFUlQoV0tHZXRUeXBlSUQobWVzc2FnZUJvZHkp
ID09IFdLQXJyYXlHZXRUeXBlSUQoKSk7CiAKQEAgLTQyOSw3ICs0MjksNyBAQCB2b2lkIEluamVj
dGVkQnVuZGxlOjpkaWRSZWNlaXZlTWVzc2FnZVRvUGFnZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwg
V0tTdHJpbmdSZWYgbQogICAgICAgICAgICAgICAgIGRvbWFpbnMudW5jaGVja2VkQXBwZW5kKHRv
V1RGU3RyaW5nKHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihpdGVtKSkpOwogICAgICAgICB9CiAK
LSAgICAgICAgbV90ZXN0UnVubmVyLT5jYWxsRGlkUmVjZWl2ZVByZXZhbGVudERvbWFpbnNDYWxs
YmFjayhXVEZNb3ZlKGRvbWFpbnMpKTsKKyAgICAgICAgbV90ZXN0UnVubmVyLT5jYWxsRGlkUmVj
ZWl2ZUxvYWRlZERvbWFpbnNDYWxsYmFjayhXVEZNb3ZlKGRvbWFpbnMpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCmluZGV4IDJlOThjZjVkNTZhZTE2YTFjZjA2MjYxZDQ5
MjBkOGNmZjZmY2QzOWIuLjg4MTVhYzQzOTVhZjljYmVmNTlkOGMzMjM3ZjVkNGZlZmU0ZGY1Zjcg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1
bm5lci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0
UnVubmVyLmNwcApAQCAtNzU0LDcgKzc1NCw3IEBAIGVudW0gewogICAgIFN0YXRpc3RpY3NEaWRT
ZXRTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzQ2FsbGJhY2tJRCwKICAgICBTdGF0aXN0aWNz
RGlkU2V0Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGVDYWxsYmFja0lELAogICAgIEFs
bFN0b3JhZ2VBY2Nlc3NFbnRyaWVzQ2FsbGJhY2tJRCwKLSAgICBHZXRQcmV2YWxlbnREb21haW5z
Q2FsbGJhY2tJRCwKKyAgICBHZXRMb2FkZWREb21haW5zQ2FsbGJhY2tJRCwKICAgICBEaWRSZW1v
dmVBbGxTZXNzaW9uQ3JlZGVudGlhbHNDYWxsYmFja0lELAogICAgIEdldEFwcGxpY2F0aW9uTWFu
aWZlc3RDYWxsYmFja0lELAogICAgIFRleHREaWRDaGFuZ2VJblRleHRGaWVsZENhbGxiYWNrSUQs
CkBAIC0yMzU1LDE1ICsyMzU1LDE1IEBAIHZvaWQgVGVzdFJ1bm5lcjo6Y2FsbERpZFJlY2VpdmVB
bGxTdG9yYWdlQWNjZXNzRW50cmllc0NhbGxiYWNrKFZlY3RvcjxTdHJpbmc+JiBkCiAgICAgY2Fs
bFRlc3RSdW5uZXJDYWxsYmFjayhBbGxTdG9yYWdlQWNjZXNzRW50cmllc0NhbGxiYWNrSUQsIDEs
ICZyZXN1bHQpOwogfQogCi12b2lkIFRlc3RSdW5uZXI6OmdldFByZXZhbGVudERvbWFpbnMoSlNW
YWx1ZVJlZiBjYWxsYmFjaykKK3ZvaWQgVGVzdFJ1bm5lcjo6Z2V0TG9hZGVkRG9tYWlucyhKU1Zh
bHVlUmVmIGNhbGxiYWNrKQogewotICAgIGNhY2hlVGVzdFJ1bm5lckNhbGxiYWNrKEdldFByZXZh
bGVudERvbWFpbnNDYWxsYmFja0lELCBjYWxsYmFjayk7CisgICAgY2FjaGVUZXN0UnVubmVyQ2Fs
bGJhY2soR2V0TG9hZGVkRG9tYWluc0NhbGxiYWNrSUQsIGNhbGxiYWNrKTsKICAgICAKLSAgICBX
S1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3Jl
YXRlV2l0aFVURjhDU3RyaW5nKCJHZXRQcmV2YWxlbnREb21haW5zIikpOworICAgIFdLUmV0YWlu
UHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRo
VVRGOENTdHJpbmcoIkdldExvYWRlZERvbWFpbnMiKSk7CiAgICAgV0tCdW5kbGVQb3N0TWVzc2Fn
ZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxlKCksIG1lc3NhZ2VOYW1lLmdldCgp
LCBudWxscHRyKTsKIH0KIAotdm9pZCBUZXN0UnVubmVyOjpjYWxsRGlkUmVjZWl2ZVByZXZhbGVu
dERvbWFpbnNDYWxsYmFjayhWZWN0b3I8U3RyaW5nPiYmIGRvbWFpbnMpCit2b2lkIFRlc3RSdW5u
ZXI6OmNhbGxEaWRSZWNlaXZlTG9hZGVkRG9tYWluc0NhbGxiYWNrKFZlY3RvcjxTdHJpbmc+JiYg
ZG9tYWlucykKIHsKICAgICBXS0J1bmRsZUZyYW1lUmVmIG1haW5GcmFtZSA9IFdLQnVuZGxlUGFn
ZUdldE1haW5GcmFtZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkucGFnZSgpLT5wYWdlKCkp
OwogICAgIEpTQ29udGV4dFJlZiBjb250ZXh0ID0gV0tCdW5kbGVGcmFtZUdldEphdmFTY3JpcHRD
b250ZXh0KG1haW5GcmFtZSk7CkBAIC0yMzg0LDcgKzIzODQsNyBAQCB2b2lkIFRlc3RSdW5uZXI6
OmNhbGxEaWRSZWNlaXZlUHJldmFsZW50RG9tYWluc0NhbGxiYWNrKFZlY3RvcjxTdHJpbmc+JiYg
ZG9tYWlucwogICAgIAogICAgIEpTVmFsdWVSZWYgcmVzdWx0ID0gSlNWYWx1ZU1ha2VGcm9tSlNP
TlN0cmluZyhjb250ZXh0LCBhZG9wdChKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhzdHJp
bmdCdWlsZGVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSkpLmdldCgpKTsKIAotICAgIGNhbGxU
ZXN0UnVubmVyQ2FsbGJhY2soR2V0UHJldmFsZW50RG9tYWluc0NhbGxiYWNrSUQsIDEsICZyZXN1
bHQpOworICAgIGNhbGxUZXN0UnVubmVyQ2FsbGJhY2soR2V0TG9hZGVkRG9tYWluc0NhbGxiYWNr
SUQsIDEsICZyZXN1bHQpOwogfQogCiB2b2lkIFRlc3RSdW5uZXI6OmFkZE1vY2tNZWRpYURldmlj
ZShKU1N0cmluZ1JlZiBwZXJzaXN0ZW50SWQsIEpTU3RyaW5nUmVmIGxhYmVsLCBjb25zdCBjaGFy
KiB0eXBlKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9UZXN0UnVubmVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rl
c3RSdW5uZXIuaAppbmRleCBkYTBhZDFmYmE5YjkyNDg3MTNkMDRmMWFiYTE0ZTFmNjYwOGI4M2E3
Li4xNjMwNWQzZmYzOTM0N2NjZDllYTNjMTdlZWMxZTkwMWEyMWY2ZDEyIDEwMDY0NAotLS0gYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAorKysgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaApAQCAtNDQ5
LDggKzQ0OSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0YXRpc3RpY3NDYWxsRGlkU2V0Rmlyc3RQ
YXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGVDYWxsYmFjaygpOwogICAgIHZvaWQgc3RhdGlzdGlj
c1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUoSlNWYWx1ZVJlZiBjb21wbGV0aW9uSGFuZGxlcik7CiAg
ICAgdm9pZCBzdGF0aXN0aWNzQ2FsbERpZFJlc2V0VG9Db25zaXN0ZW50U3RhdGVDYWxsYmFjaygp
OwotICAgIHZvaWQgZ2V0UHJldmFsZW50RG9tYWlucyhKU1ZhbHVlUmVmIGNhbGxiYWNrKTsKLSAg
ICB2b2lkIGNhbGxEaWRSZWNlaXZlUHJldmFsZW50RG9tYWluc0NhbGxiYWNrKFZlY3RvcjxTdHJp
bmc+JiYgZG9tYWlucyk7CisgICAgdm9pZCBnZXRMb2FkZWREb21haW5zKEpTVmFsdWVSZWYgY2Fs
bGJhY2spOworICAgIHZvaWQgY2FsbERpZFJlY2VpdmVMb2FkZWREb21haW5zQ2FsbGJhY2soVmVj
dG9yPFN0cmluZz4mJiBkb21haW5zKTsKIAogICAgIC8vIEluamVjdGVkIGJ1bmRsZSBmb3JtIGNs
aWVudC4KICAgICB2b2lkIGluc3RhbGxUZXh0RGlkQ2hhbmdlSW5UZXh0RmllbGRDYWxsYmFjayhK
U1ZhbHVlUmVmIGNhbGxiYWNrKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxl
ci5jcHAKaW5kZXggNzFjMzU4YTI3ZGUyNmM4ZmM5ZTY4ZTcyZmM2NzUzYTUyYTZhOTI3ZS4uMzFl
ZjJlYTNlZGU5NzJlYjIyMzQwOTdmMmU2OWY3OTg3M2RlMTQ5ZSAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKQEAgLTExMjYsNyArMTEyNiw3IEBAIGJvb2wgVGVz
dENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMoY29uc3QgVGVzdE9wdGlv
bnMmIG9wdGlvbnMsIFJlCiAgICAgc2V0QWxsb3dzQW55U1NMQ2VydGlmaWNhdGUodHJ1ZSk7CiAK
ICAgICBzdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSgpOwotICAgIGNsZWFyUHJldmFs
ZW50RG9tYWlucygpOworICAgIGNsZWFyTG9hZGVkRG9tYWlucygpOwogCiAgICAgY2xlYXJBZENs
aWNrQXR0cmlidXRpb24oKTsKIApAQCAtMzEzMCwxMSArMzEzMCwxMSBAQCB2b2lkIFRlc3RDb250
cm9sbGVyOjpnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcygpCiB7CiB9CiAKLXZvaWQgVGVzdENv
bnRyb2xsZXI6OmdldFByZXZhbGVudERvbWFpbnMoKQordm9pZCBUZXN0Q29udHJvbGxlcjo6Z2V0
TG9hZGVkRG9tYWlucygpCiB7CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6OmNsZWFyUHJldmFs
ZW50RG9tYWlucygpCit2b2lkIFRlc3RDb250cm9sbGVyOjpjbGVhckxvYWRlZERvbWFpbnMoKQog
ewogfQogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKaW5kZXggYThhZDU4
ZmUxYTc4OTAxZjM1YjllODNmNmQyYzU1ZjdiMTM2MDViNi4uZjA5MzFjN2VlNTU3ZDUyODFhNjk2
OTliMDliYTMxMmRjODI4MTFiMCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xs
ZXIuaApAQCAtMjY1LDggKzI2NSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0YXRpc3RpY3NSZXNl
dFRvQ29uc2lzdGVudFN0YXRlKCk7CiAKICAgICB2b2lkIGdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRy
aWVzKCk7Ci0gICAgdm9pZCBnZXRQcmV2YWxlbnREb21haW5zKCk7Ci0gICAgdm9pZCBjbGVhclBy
ZXZhbGVudERvbWFpbnMoKTsKKyAgICB2b2lkIGdldExvYWRlZERvbWFpbnMoKTsKKyAgICB2b2lk
IGNsZWFyTG9hZGVkRG9tYWlucygpOwogICAgIHZvaWQgZ2V0V2ViVmlld0NhdGVnb3J5KCk7CiAg
ICAgdm9pZCBzZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZChib29sKTsKIApkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAppbmRleCBmOGNjZTI3ZmM0NjE3ZWE3NmM2
YjUzNzc1NGNjNDYyY2Q5ZTBlYzE5Li5iZDMyYWE1YTI3YzRiODI1MmZkZDhlN2E2NjJjYjVlODUx
MTAwZDE2IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9u
LmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcApAQCAt
ODIwLDggKzgyMCw4IEBAIHZvaWQgVGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVNZXNzYWdlRnJv
bUluamVjdGVkQnVuZGxlKFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lCiAgICAgfQogI2VuZGlmCiAg
ICAgCi0gICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJH
ZXRQcmV2YWxlbnREb21haW5zIikpIHsKLSAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRv
bigpLmdldFByZXZhbGVudERvbWFpbnMoKTsKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4
Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkdldExvYWRlZERvbWFpbnMiKSkgeworICAgICAgICBUZXN0
Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuZ2V0TG9hZGVkRG9tYWlucygpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkBAIC0xOTcwLDkgKzE5NzAsOSBAQCB2b2lkIFRlc3RJbnZvY2F0aW9uOjpk
aWRSZWNlaXZlQWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoVmVjdG9yPFN0cmluZz4mIGRvbWFpbnMp
CiAgICAgV0tQYWdlUG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKFRlc3RDb250cm9sbGVyOjpz
aW5nbGV0b24oKS5tYWluV2ViVmlldygpLT5wYWdlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNz
YWdlQm9keS5nZXQoKSk7CiB9CiAKLXZvaWQgVGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVQcmV2
YWxlbnREb21haW5zKFZlY3RvcjxTdHJpbmc+JiYgZG9tYWlucykKK3ZvaWQgVGVzdEludm9jYXRp
b246OmRpZFJlY2VpdmVMb2FkZWREb21haW5zKFZlY3RvcjxTdHJpbmc+JiYgZG9tYWlucykKIHsK
LSAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3Ry
aW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJDYWxsRGlkUmVjZWl2ZVByZXZhbGVudERvbWFpbnMi
KSk7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lID0gYWRvcHRXSyhX
S1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQ2FsbERpZFJlY2VpdmVMb2FkZWREb21haW5z
IikpOwogICAgIAogICAgIFdLUmV0YWluUHRyPFdLTXV0YWJsZUFycmF5UmVmPiBtZXNzYWdlQm9k
eSA9IGFkb3B0V0soV0tNdXRhYmxlQXJyYXlDcmVhdGUoKSk7CiAgICAgZm9yIChhdXRvJiBkb21h
aW4gOiBkb21haW5zKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52
b2NhdGlvbi5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCmluZGV4
IGVjNGY1OTY2MmM3YjViZTAzNjYxNTA3MmMyMjA1OTYyZTg0ODU1NjYuLjljYmQyYzZiNTExODNl
YzU4YzUzOTc2MDU2NDljZTU3ODZlYzY3ZDQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdEludm9jYXRpb24uaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJ
bnZvY2F0aW9uLmgKQEAgLTg2LDcgKzg2LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkU2V0VmVy
eVByZXZhbGVudFJlc291cmNlKCk7CiAgICAgdm9pZCBkaWRTZXRIYXNIYWRVc2VySW50ZXJhY3Rp
b24oKTsKICAgICB2b2lkIGRpZFJlY2VpdmVBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhWZWN0b3I8
U3RyaW5nPiYgZG9tYWlucyk7Ci0gICAgdm9pZCBkaWRSZWNlaXZlUHJldmFsZW50RG9tYWlucyhW
ZWN0b3I8U3RyaW5nPiYmIGRvbWFpbnMpOworICAgIHZvaWQgZGlkUmVjZWl2ZUxvYWRlZERvbWFp
bnMoVmVjdG9yPFN0cmluZz4mJiBkb21haW5zKTsKICAgICB2b2lkIGRpZFJlY2VpdmVXZWJWaWV3
Q2F0ZWdvcnkoU3RyaW5nJik7CiAgICAgdm9pZCBkaWRTZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5h
YmxlZCgpOwogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RD
b250cm9sbGVyQ29jb2EubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250
cm9sbGVyQ29jb2EubW0KaW5kZXggZmMxZDUxYjc0OWM4YjMyMWZlNGY3YTIyNTU3YjgxYWQ5ZTZi
OTAxMi4uZDkxYmU5YWE3NDQ5OTE5OWE3NTI2OWRjOWU0OTM4YzJmMjE3YWMxOSAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQpA
QCAtMzQyLDI4ICszNDIsMjggQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6Z2V0QWxsU3RvcmFnZUFj
Y2Vzc0VudHJpZXMoKQogICAgIH1dOwogfQogCi12b2lkIFRlc3RDb250cm9sbGVyOjpnZXRQcmV2
YWxlbnREb21haW5zKCkKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmdldExvYWRlZERvbWFpbnMoKQog
ewogICAgIGF1dG8qIHBhcmVudFZpZXcgPSBtYWluV2ViVmlldygpOwogICAgIGlmICghcGFyZW50
VmlldykKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIFtnbG9iYWxXZWJWaWV3Q29uZmlndXJh
dGlvbi53ZWJzaXRlRGF0YVN0b3JlIF9nZXRQcmV2YWxlbnREb21haW5zRm9yOnBhcmVudFZpZXct
PnBsYXRmb3JtVmlldygpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxOU1N0cmluZyAqPiAq
bnNEb21haW5zKSB7CisgICAgW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLndlYnNpdGVEYXRh
U3RvcmUgX2dldExvYWRlZERvbWFpbnNGb3I6cGFyZW50Vmlldy0+cGxhdGZvcm1WaWV3KCkgY29t
cGxldGlvbkhhbmRsZXI6XihOU0FycmF5PE5TU3RyaW5nICo+ICpuc0RvbWFpbnMpIHsKICAgICAg
ICAgVmVjdG9yPFN0cmluZz4gZG9tYWluczsKICAgICAgICAgZG9tYWlucy5yZXNlcnZlSW5pdGlh
bENhcGFjaXR5KG5zRG9tYWlucy5jb3VudCk7CiAgICAgICAgIGZvciAoTlNTdHJpbmcgKmRvbWFp
biA6IG5zRG9tYWlucykKICAgICAgICAgICAgIGRvbWFpbnMudW5jaGVja2VkQXBwZW5kKGRvbWFp
bik7Ci0gICAgICAgIG1fY3VycmVudEludm9jYXRpb24tPmRpZFJlY2VpdmVQcmV2YWxlbnREb21h
aW5zKFdURk1vdmUoZG9tYWlucykpOworICAgICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5kaWRS
ZWNlaXZlTG9hZGVkRG9tYWlucyhXVEZNb3ZlKGRvbWFpbnMpKTsKICAgICB9XTsKIH0KIAotdm9p
ZCBUZXN0Q29udHJvbGxlcjo6Y2xlYXJQcmV2YWxlbnREb21haW5zKCkKK3ZvaWQgVGVzdENvbnRy
b2xsZXI6OmNsZWFyTG9hZGVkRG9tYWlucygpCiB7CiAgICAgYXV0byogcGFyZW50VmlldyA9IG1h
aW5XZWJWaWV3KCk7CiAgICAgaWYgKCFwYXJlbnRWaWV3KQogICAgICAgICByZXR1cm47CiAKLSAg
ICBbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfY2xlYXJQcmV2
YWxlbnREb21haW5zRm9yOnBhcmVudFZpZXctPnBsYXRmb3JtVmlldygpXTsKKyAgICBbZ2xvYmFs
V2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfY2xlYXJMb2FkZWREb21haW5z
Rm9yOnBhcmVudFZpZXctPnBsYXRmb3JtVmlldygpXTsKIH0KIAogdm9pZCBUZXN0Q29udHJvbGxl
cjo6Z2V0V2ViVmlld0NhdGVnb3J5KCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1ZTEyNTk4NmQ5NmRhYTE4ODIwMzYzOTA2
ZWNiMjRiMjRhZGI3MmIyLi4yMjlhNzBjMGVmMDk1ZmRmN2NhZWJiZGZjNDgxOGMwNjcyNDM4OGNj
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMjAtMDMtMTIgIEthdGUgQ2hlbmV5ICA8a2F0aGVy
aW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVwb3J0IGFsbCB0aGlyZCBwYXJ0eSBs
b2FkcyBvbiBhIHBlci1wYWdlIGJhc2lzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDkwMzIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYwMzk3MzIz
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vdyB0
aGF0IHdlIHJlcG9ydCBhbGwgbG9hZGVkIHRoaXJkIHBhcnR5IGRvbWFpbnMsIHdlIG5vIGxvbmdl
ciBuZWVkCisgICAgICAgIElUUCB0byB0ZXN0IHRoaXMgY2FsbC4gV2UgY2FuIGVsaW1pbmF0ZSB0
aGUgZHVhbCB0ZXN0aW5nIGZvcgorICAgICAgICBtZW1vcnkvZGF0YWJhc2Ugc2V0dXAgYW5kIGFu
eSBsb2dpYyByZWxhdGVkIHRvIHNldHRpbmcgYSByZXNvdXJjZQorICAgICAgICBhcyBwcmV2YWxl
bnQuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvbG9hZGVk
LXJlZ2lzdHJhYmxlLWRvbWFpbnMtZ2V0LXJlcG9ydGVkLWV4cGVjdGVkLnR4dDogQ29waWVkIGZy
b20gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvd2ViLXNvY2tldC1sb2Fkcy1jYXB0
dXJlZC1pbi1wZXItcGFnZS1kb21haW5zLWV4cGVjdGVkLnR4dC4KKyAgICAgICAgKiBodHRwL3Rl
c3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvbG9hZGVkLXJlZ2lzdHJhYmxlLWRvbWFpbnMtZ2V0
LXJlcG9ydGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy9wcmV2YWxlbnQtZG9tYWlucy1wZXItcGFnZS1kYXRhYmFzZS1leHBlY3RlZC50
eHQ6IFJlbW92ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
L3ByZXZhbGVudC1kb21haW5zLXBlci1wYWdlLWRhdGFiYXNlLmh0bWw6IFJlbW92ZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3ByZXZhbGVudC1kb21haW5z
LXBlci1wYWdlLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQv
d2ViLXNvY2tldC1sb2Fkcy1jYXB0dXJlZC1pbi1wZXItcGFnZS1kb21haW5zLWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC93ZWItc29ja2V0LWxvYWRzLWNhcHR1
cmVkLWluLXBlci1wYWdlLWRvbWFpbnMuaHRtbDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvVGVz
dEV4cGVjdGF0aW9uczoKKyAgICAgICAgU2luY2UgdGhpcyB0ZXN0IG5vIGxvbmdlciB1c2VzIFVJ
SGVscGVyLmFjdGl2YXRlQXQsIGl0IGNhbiBiZQorICAgICAgICB1bnNraXBwZWQgaW4gaU9TCisK
IDIwMjAtMDMtMTIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBo
dHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BhZ2UtY2FjaGUtY29tcGxldGVkLXBheW1lbnQtcmVz
cG9uc2UuaHR0cHMuaHRtbCBpcyBmbGFreSBmYWlsaW5nLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2xvYWRlZC1yZWdpc3RyYWJsZS1k
b21haW5zLWdldC1yZXBvcnRlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvbG9hZGVkLXJlZ2lzdHJhYmxlLWRvbWFpbnMtZ2V0LXJl
cG9ydGVkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jOWZhMmZjYmU5ZDEzN2JhMDNjNTg2MTJk
ZWY2Nzg3NGFmMDEyN2YwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2xvYWRlZC1yZWdpc3RyYWJsZS1kb21haW5zLWdldC1y
ZXBvcnRlZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorVGVzdHMgdGhhdCBhIGlmcmFt
ZSBnZXRzIHJlcG9ydGVkIGFzIGEgbG9hZGVkIHRoaXJkIHBhcnR5IGRvbWFpbi4KKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgTG9hZGVkIGRvbWFpbiB3YXMgc3VjY2Vzc2Z1
bGx5IGNhcHR1cmVkLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy9sb2FkZWQtcmVnaXN0cmFibGUtZG9tYWlucy1nZXQtcmVwb3J0ZWQuaHRtbCBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9sb2FkZWQtcmVn
aXN0cmFibGUtZG9tYWlucy1nZXQtcmVwb3J0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iN2QwYTUyYzhi
MWM1YjcyZDRlMDRlYjY2YzlhM2MyMGRkMjVmNGY5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2xvYWRlZC1yZWdpc3RyYWJs
ZS1kb21haW5zLWdldC1yZXBvcnRlZC5odG1sCkBAIC0wLDAgKzEsMzMgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2Vz
L2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJj
ZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iL3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3MvcmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+Cisg
ICAgICAgIGRlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IGEgaWZyYW1lIGdldHMgcmVwb3J0ZWQgYXMg
YSBsb2FkZWQgdGhpcmQgcGFydHkgZG9tYWluLiIpOworICAgICAgICBqc1Rlc3RJc0FzeW5jID0g
dHJ1ZTsKKworICAgICAgICBmdW5jdGlvbiBhc2tGb3JMb2FkZWREb21haW5zKCkgeworICAgICAg
ICAgICAgdGVzdFJ1bm5lci5nZXRMb2FkZWREb21haW5zKGZ1bmN0aW9uIChhcnJheU9mRG9tYWlu
cykgeworICAgICAgICAgICAgICAgIHZhciBwYXNzZWQgPSB0cnVlOworICAgICAgICAgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXlPZkRvbWFpbnMubGVuZ3RoOyArK2kpIHsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKGFycmF5T2ZEb21haW5zW2ldID09PSAibG9jYWxob3N0Iikgewor
ICAgICAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIGlmIChwYXNzZWQpCisgICAgICAgICAgICAgICAgICAgIHRlc3RQYXNz
ZWQoIkxvYWRlZCBkb21haW4gd2FzIHN1Y2Nlc3NmdWxseSBjYXB0dXJlZC4iKTsKKyAgICAgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkxvYWRlZCBkb21h
aW4gd2FzIG5vdCBzdWNjZXNzZnVsbHkgY2FwdHVyZWQuIik7CisgICAgICAgICAgICAgICAgZmlu
aXNoSlNUZXN0KCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAgIDwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8aWZyYW1lIG9ubG9hZD0nYXNrRm9yTG9hZGVkRG9tYWlucygpJyBz
cmM9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Jlc291cmNl
cy9iYXNpYy1pZnJhbWUuaHRtbCI+Cis8L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9wcmV2
YWxlbnQtZG9tYWlucy1wZXItcGFnZS1kYXRhYmFzZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcHJldmFsZW50LWRvbWFpbnMtcGVy
LXBhZ2UtZGF0YWJhc2UtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA5N2UxYWJiZTkzYTdmMGQ3MzViNzNiMzcyNTcxNGYwNDZjNGQ3NWViLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy9wcmV2YWxlbnQtZG9tYWlucy1wZXItcGFnZS1kYXRhYmFz
ZS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi1UZXN0cyB0aGF0
IGEgaWZyYW1lIGZyb20gYSBwcmV2YWxlbnQgZG9tYWluIHdpbGwgYmUgcmVwb3J0ZWQgYXMgcHJl
dmFsZW50IHVuZGVyIHRoaXMgcGFnZS4KLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi0K
LVBBU1MgRG9tYWluIHdhcyBzdWNjZXNzZnVsbHkgbWFya2VkIHByZXZhbGVudC4KLVBBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcHJldmFsZW50LWRv
bWFpbnMtcGVyLXBhZ2UtZGF0YWJhc2UuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVz
b3VyY2VMb2FkU3RhdGlzdGljcy9wcmV2YWxlbnQtZG9tYWlucy1wZXItcGFnZS1kYXRhYmFzZS5o
dG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MTJlYWVlMjM0N2ViNmVlYjA5MzQ4
ZWE1MTU3YTBmODk2ZjA3YzkzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9w
cmV2YWxlbnQtZG9tYWlucy1wZXItcGFnZS1kYXRhYmFzZS5odG1sCisrKyAvZGV2L251bGwKQEAg
LTEsNzQgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotICAgIDxzY3Jp
cHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNj
cmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgotICAg
IDxzY3JpcHQgc3JjPSIvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZXNvdXJjZXMvdXRpbC5qcyI+
PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdD4KLSAgICAgICAgZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQg
YSBpZnJhbWUgZnJvbSBhIHByZXZhbGVudCBkb21haW4gd2lsbCBiZSByZXBvcnRlZCBhcyBwcmV2
YWxlbnQgdW5kZXIgdGhpcyBwYWdlLiIpOwotICAgICAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsK
LQotICAgICAgICBmdW5jdGlvbiBmaW5pc2hUZXN0KCkgewotICAgICAgICAgICAgc2V0RW5hYmxl
RmVhdHVyZShmYWxzZSwgZmluaXNoSlNUZXN0KTsKLSAgICAgICAgfQotCi0gICAgICAgIGNvbnN0
IGlmcmFtZUlEID0gImlGcmFtZUZyb21QcmV2YWxlbnREb21haW4iOwotICAgICAgICBmdW5jdGlv
biBhc2tGb3JQcmV2YWxlbnRSZXNvdXJjZXMoKSB7Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLmdl
dFByZXZhbGVudERvbWFpbnMoZnVuY3Rpb24gKGFycmF5T2ZEb21haW5zKSB7Ci0gICAgICAgICAg
ICAgICAgdmFyIHBhc3NlZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBhcnJheU9mRG9tYWlucy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgICAgICAgICBp
ZiAoYXJyYXlPZkRvbWFpbnNbaV0gPT09ICJsb2NhbGhvc3QiKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBwYXNzZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
aWYgKHBhc3NlZCkKLSAgICAgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiRG9tYWluIHdhcyBz
dWNjZXNzZnVsbHkgbWFya2VkIHByZXZhbGVudC4iKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkRvbWFpbiB3YXMgbm90IHN1Y2Nlc3NmdWxs
eSBtYXJrZWQgcHJldmFsZW50LiIpOwotICAgICAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKLSAg
ICAgICAgICAgIH0pOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gYWN0aXZhdGVFbGVt
ZW50KGVsZW1lbnRJZCkgewotICAgICAgICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZChlbGVtZW50SWQpOwotICAgICAgICAgICAgdmFyIGNlbnRlclggPSBlbGVtZW50
Lm9mZnNldExlZnQgKyBlbGVtZW50Lm9mZnNldFdpZHRoIC8gMjsKLSAgICAgICAgICAgIHZhciBj
ZW50ZXJZID0gZWxlbWVudC5vZmZzZXRUb3AgKyBlbGVtZW50Lm9mZnNldEhlaWdodCAvIDI7Ci0g
ICAgICAgICAgICBVSUhlbHBlci5hY3RpdmF0ZUF0KGNlbnRlclgsIGNlbnRlclkpLnRoZW4oCi0g
ICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeyB9LAotICAgICAgICAgICAgICAgIGZ1bmN0aW9u
ICgpIHsKLSAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiUHJvbWlzZSByZWplY3RlZC4i
KTsKLSAgICAgICAgICAgICAgICAgICAgZmluaXNoVGVzdCgpOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICk7Ci0gICAgICAgICAgICBhc2tGb3JQcmV2YWxlbnRSZXNvdXJjZXMoKTsK
LSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7Ci0gICAgICAgICAgICBp
ZiAoZG9jdW1lbnQubG9jYXRpb24uaGFzaCAhPT0gIiNlbGVtZW50QWN0aXZhdGVkIikgewotICAg
ICAgICAgICAgICAgIGRvY3VtZW50LmxvY2F0aW9uLmhhc2ggPSAiZWxlbWVudEFjdGl2YXRlZCI7
Ci0gICAgICAgICAgICAgICAgYWN0aXZhdGVFbGVtZW50KGlmcmFtZUlEKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotCi0gICAgICAgIGNvbnN0IGhvc3RVbmRlclRlc3QgPSAibG9jYWxob3N0
OjgwMDAiOwotICAgICAgICBjb25zdCBzdGF0aXN0aWNzVXJsID0gImh0dHA6Ly8iICsgaG9zdFVu
ZGVyVGVzdDsKLSAgICAgICAgCi0gICAgICAgIHRlc3RSdW5uZXIuc2V0VXNlSVRQRGF0YWJhc2Uo
dHJ1ZSk7Ci0gICAgICAgIHNldEVuYWJsZUZlYXR1cmUodHJ1ZSwgZnVuY3Rpb24oKSB7Ci0gICAg
ICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShzdGF0aXN0
aWNzVXJsLCB0cnVlLCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICBpZiAoIXRlc3RSdW5u
ZXIuaXNTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2Uoc3RhdGlzdGljc1VybCkpCi0gICAgICAg
ICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkhvc3QgZGlkIG5vdCBnZXQgc2V0IGFzIHByZXZhbGVu
dCByZXNvdXJjZS4iKTsKLQotICAgICAgICAgICAgICAgIGxldCBpZnJhbWVFbGVtZW50ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7Ci0gICAgICAgICAgICAgICAgaWZyYW1lRWxl
bWVudC5vbmxvYWQgPSBydW5UZXN0OwotICAgICAgICAgICAgICAgIGlmcmFtZUVsZW1lbnQuaWQg
PSAiaUZyYW1lRnJvbVByZXZhbGVudERvbWFpbiI7Ci0gICAgICAgICAgICAgICAgaWZyYW1lRWxl
bWVudC5zcmMgPSAiaHR0cDovL2xvY2FsaG9zdDo4MDAwL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mv
cmVzb3VyY2VzL2Jhc2ljLWlmcmFtZS5odG1sIjsKLSAgICAgICAgICAgICAgICBkb2N1bWVudC5i
b2R5LmFwcGVuZENoaWxkKGlmcmFtZUVsZW1lbnQpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAg
IH0pOwotICAgIDwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08L2JvZHk+Ci08L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mv
cHJldmFsZW50LWRvbWFpbnMtcGVyLXBhZ2UuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy9wcmV2YWxlbnQtZG9tYWlucy1wZXItcGFnZS5odG1sCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMThjNmZiYTcwN2E4MTg2NzVlYWE4YjNkMjEw
NjkxZTc3MjYzZTNmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9wcmV2YWxl
bnQtZG9tYWlucy1wZXItcGFnZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNzMgKzAsMCBAQAot
PCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotICAgIDxzY3JpcHQgc3JjPSIvanMtdGVz
dC1yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii9qcy10
ZXN0LXJlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSIv
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+Ci0gICAg
PHNjcmlwdD4KLSAgICAgICAgZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgYSBpZnJhbWUgZnJvbSBh
IHByZXZhbGVudCBkb21haW4gd2lsbCBiZSByZXBvcnRlZCBhcyBwcmV2YWxlbnQgdW5kZXIgdGhp
cyBwYWdlLiIpOwotICAgICAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLQotICAgICAgICBmdW5j
dGlvbiBmaW5pc2hUZXN0KCkgewotICAgICAgICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSwg
ZmluaXNoSlNUZXN0KTsKLSAgICAgICAgfQotCi0gICAgICAgIGNvbnN0IGlmcmFtZUlEID0gImlG
cmFtZUZyb21QcmV2YWxlbnREb21haW4iOwotICAgICAgICBmdW5jdGlvbiBhc2tGb3JQcmV2YWxl
bnRSZXNvdXJjZXMoKSB7Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLmdldFByZXZhbGVudERvbWFp
bnMoZnVuY3Rpb24gKGFycmF5T2ZEb21haW5zKSB7Ci0gICAgICAgICAgICAgICAgdmFyIHBhc3Nl
ZCA9IGZhbHNlOwotICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXlPZkRv
bWFpbnMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGFycmF5T2ZEb21h
aW5zW2ldID09PSAibG9jYWxob3N0IikgewotICAgICAgICAgICAgICAgICAgICAgICAgcGFzc2Vk
ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChwYXNzZWQpCi0g
ICAgICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIkRvbWFpbiB3YXMgc3VjY2Vzc2Z1bGx5IG1h
cmtlZCBwcmV2YWxlbnQuIik7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAg
ICAgICB0ZXN0RmFpbGVkKCJEb21haW4gd2FzIG5vdCBzdWNjZXNzZnVsbHkgbWFya2VkIHByZXZh
bGVudC4iKTsKLSAgICAgICAgICAgICAgICBmaW5pc2hUZXN0KCk7Ci0gICAgICAgICAgICB9KTsK
LSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIGFjdGl2YXRlRWxlbWVudChlbGVtZW50SWQp
IHsKLSAgICAgICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxl
bWVudElkKTsKLSAgICAgICAgICAgIHZhciBjZW50ZXJYID0gZWxlbWVudC5vZmZzZXRMZWZ0ICsg
ZWxlbWVudC5vZmZzZXRXaWR0aCAvIDI7Ci0gICAgICAgICAgICB2YXIgY2VudGVyWSA9IGVsZW1l
bnQub2Zmc2V0VG9wICsgZWxlbWVudC5vZmZzZXRIZWlnaHQgLyAyOwotICAgICAgICAgICAgVUlI
ZWxwZXIuYWN0aXZhdGVBdChjZW50ZXJYLCBjZW50ZXJZKS50aGVuKAotICAgICAgICAgICAgICAg
IGZ1bmN0aW9uICgpIHsgfSwKLSAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIHRlc3RGYWlsZWQoIlByb21pc2UgcmVqZWN0ZWQuIik7Ci0gICAgICAgICAg
ICAgICAgICAgIGZpbmlzaFRlc3QoKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAp
OwotICAgICAgICAgICAgYXNrRm9yUHJldmFsZW50UmVzb3VyY2VzKCk7Ci0gICAgICAgIH0KLQot
ICAgICAgICBmdW5jdGlvbiBydW5UZXN0KCkgewotICAgICAgICAgICAgaWYgKGRvY3VtZW50Lmxv
Y2F0aW9uLmhhc2ggIT09ICIjZWxlbWVudEFjdGl2YXRlZCIpIHsKLSAgICAgICAgICAgICAgICBk
b2N1bWVudC5sb2NhdGlvbi5oYXNoID0gImVsZW1lbnRBY3RpdmF0ZWQiOwotICAgICAgICAgICAg
ICAgIGFjdGl2YXRlRWxlbWVudChpZnJhbWVJRCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LQotICAgICAgICBjb25zdCBob3N0VW5kZXJUZXN0ID0gImxvY2FsaG9zdDo4MDAwIjsKLSAgICAg
ICAgY29uc3Qgc3RhdGlzdGljc1VybCA9ICJodHRwOi8vIiArIGhvc3RVbmRlclRlc3Q7Ci0gICAg
ICAgIAotICAgICAgICBzZXRFbmFibGVGZWF0dXJlKHRydWUsIGZ1bmN0aW9uKCkgewotICAgICAg
ICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2Uoc3RhdGlzdGlj
c1VybCwgdHJ1ZSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCF0ZXN0UnVubmVy
LmlzU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKHN0YXRpc3RpY3NVcmwpKQotICAgICAgICAg
ICAgICAgICAgICB0ZXN0RmFpbGVkKCJIb3N0IGRpZCBub3QgZ2V0IHNldCBhcyBwcmV2YWxlbnQg
cmVzb3VyY2UuIik7Ci0KLSAgICAgICAgICAgICAgICBsZXQgaWZyYW1lRWxlbWVudCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOwotICAgICAgICAgICAgICAgIGlmcmFtZUVsZW1l
bnQub25sb2FkID0gcnVuVGVzdDsKLSAgICAgICAgICAgICAgICBpZnJhbWVFbGVtZW50LmlkID0g
ImlGcmFtZUZyb21QcmV2YWxlbnREb21haW4iOwotICAgICAgICAgICAgICAgIGlmcmFtZUVsZW1l
bnQuc3JjID0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zdG9yYWdlQWNjZXNzL3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3MvYmFzaWMtaWZyYW1lLmh0bWwiOwotICAgICAgICAgICAgICAgIGRvY3VtZW50
LmJvZHkuYXBwZW5kQ2hpbGQoaWZyYW1lRWxlbWVudCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAg
ICAgfSk7Ci0gICAgPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTwvYm9keT4KLTwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3dlYi1zb2NrZXQt
bG9hZHMtY2FwdHVyZWQtaW4tcGVyLXBhZ2UtZG9tYWlucy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC93ZWItc29ja2V0LWxvYWRzLWNhcHR1cmVkLWluLXBl
ci1wYWdlLWRvbWFpbnMtZXhwZWN0ZWQudHh0CmluZGV4IDE4MzU1YmNiYmI5N2UzNDEzMjY5ZGEx
OGY0NzZkMzY1NTk5MjMwMzIuLmUxNDczNWU2YzE1YjlkMmQ4ZmU0MGJiMWRmMTEyNGNmZjJmMjhm
ZTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3dlYi1zb2Nr
ZXQtbG9hZHMtY2FwdHVyZWQtaW4tcGVyLXBhZ2UtZG9tYWlucy1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvd2ViLXNvY2tldC1sb2Fkcy1jYXB0dXJl
ZC1pbi1wZXItcGFnZS1kb21haW5zLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDQgQEAKLUVuc3Vy
ZSB3ZWIgc29ja2V0IGxvYWRzIGFyZSBjYXB0dXJlZCBieSBwZXItcGFnZSBwcmV2YWxlbnQgZG9t
YWluIGxvZ2dpbmcuCitFbnN1cmUgd2ViIHNvY2tldCBsb2FkcyBhcmUgcmVwb3J0ZWQgYXMgbG9h
ZGVkIHRoaXJkIHBhcnR5IGRvbWFpbnMuCiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvd2ViLXNvY2tldC1s
b2Fkcy1jYXB0dXJlZC1pbi1wZXItcGFnZS1kb21haW5zLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3dlYnNvY2tldC93ZWItc29ja2V0LWxvYWRzLWNhcHR1cmVkLWluLXBlci1wYWdlLWRv
bWFpbnMuaHRtbAppbmRleCBjM2YxYjEzMGNmNmMxYTU4Mzg3YTIyODdkZDc0MzRjNDIzZjAzOWIw
Li5lMjdkNDVlOTZiMjRjMjgyYmQ3ZWU1NjQ3YTMyNGZkMjI2OTJlNjRjIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC93ZWItc29ja2V0LWxvYWRzLWNhcHR1cmVk
LWluLXBlci1wYWdlLWRvbWFpbnMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dl
YnNvY2tldC93ZWItc29ja2V0LWxvYWRzLWNhcHR1cmVkLWluLXBlci1wYWdlLWRvbWFpbnMuaHRt
bApAQCAtNSwxNyArNSwxNyBAQAogPC9oZWFkPgogPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgog
PHNjcmlwdD4KLSAgICBkZXNjcmlwdGlvbignRW5zdXJlIHdlYiBzb2NrZXQgbG9hZHMgYXJlIGNh
cHR1cmVkIGJ5IHBlci1wYWdlIHByZXZhbGVudCBkb21haW4gbG9nZ2luZy4nKTsKKyAgICBkZXNj
cmlwdGlvbignRW5zdXJlIHdlYiBzb2NrZXQgbG9hZHMgYXJlIHJlcG9ydGVkIGFzIGxvYWRlZCB0
aGlyZCBwYXJ0eSBkb21haW5zLicpOwogCiAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVl
OwogICAgIAogICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKICAgICAgICAgdGVzdFJ1bm5lci5z
ZXRBbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZSh0cnVlKTsKIAotICAgIGZ1bmN0aW9uIGFza0ZvclBy
ZXZhbGVudFJlc291cmNlcygpIHsKLSAgICAgICAgdGVzdFJ1bm5lci5nZXRQcmV2YWxlbnREb21h
aW5zKGZ1bmN0aW9uIChhcnJheU9mRG9tYWlucykgeworICAgIGZ1bmN0aW9uIGFza0ZvckxvYWRl
ZERvbWFpbnMoKSB7CisgICAgICAgIHRlc3RSdW5uZXIuZ2V0TG9hZGVkRG9tYWlucyhmdW5jdGlv
biAoYXJyYXlPZkRvbWFpbnMpIHsKICAgICAgICAgICAgIGlmIChhcnJheU9mRG9tYWlucy5sZW5n
dGggPT0gMCkgewotICAgICAgICAgICAgICAgIGFza0ZvclByZXZhbGVudFJlc291cmNlcygpOwor
ICAgICAgICAgICAgICAgIGFza0ZvckxvYWRlZERvbWFpbnMoKTsKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoYXJyYXlPZkRvbWFpbnMuaW5j
bHVkZXMoImxvY2FsaG9zdCIpKQpAQCAtMjcsMTIgKzI3LDggQEAKICAgICB9CiAKICAgICBmdW5j
dGlvbiBydW5UZXN0KCkgewotICAgICAgICBzZXRFbmFibGVGZWF0dXJlKHRydWUsIGZ1bmN0aW9u
KCkgewotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3Vy
Y2UoImh0dHA6Ly9sb2NhbGhvc3QiLCB0cnVlLCBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICAg
ICAgbmV3IFdlYlNvY2tldCgnd3M6Ly9sb2NhbGhvc3Q6ODg4MC93ZWJzb2NrZXQvdGVzdHMvaHli
aS9zaW1wbGUnKTsKLSAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGFza0ZvclByZXZhbGVudFJl
c291cmNlcywgMCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7CisgICAgICAgIG5ldyBX
ZWJTb2NrZXQoJ3dzOi8vbG9jYWxob3N0Ojg4ODAvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2ltcGxl
Jyk7CisgICAgICAgIHNldFRpbWVvdXQoYXNrRm9yTG9hZGVkRG9tYWlucywgMCk7CiAgICAgfQog
PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0
aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDMy
N2U4NTEzNGJjZGM0ZjViYTQ0NzhjY2NjMzYwMzQyOGE3YTM4ZjIuLjVkMjI3YWYzMzRkYjhlNDBm
ZDcxYmRkNWE0ZDNhOGFkZjI4MGFmZGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2lvcy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0
RXhwZWN0YXRpb25zCkBAIC0yNzI2LDggKzI3MjYsNiBAQCBodHRwL3Rlc3RzL3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3MvdXNlci1pbnRlcmFjdGlvbi1yZXBvcnRlZC1hZnRlci13ZWJzaXRlLWRhdGEt
cgogd2Via2l0Lm9yZy9iLzE3NDEyMCBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mv
dXNlci1pbnRlcmFjdGlvbi1pbi1jcm9zcy1vcmlnaW4tc3ViLWZyYW1lLWRhdGFiYXNlLmh0bWwg
WyBTa2lwIF0KIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy91c2VyLWludGVyYWN0
aW9uLW9ubHktcmVwb3J0ZWQtb25jZS13aXRoaW4tc2hvcnQtcGVyaW9kLW9mLXRpbWUtZGF0YWJh
c2UuaHRtbCBbIFNraXAgXQogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3VzZXIt
aW50ZXJhY3Rpb24tcmVwb3J0ZWQtYWZ0ZXItd2Vic2l0ZS1kYXRhLXJlbW92YWwtZGF0YWJhc2Uu
aHRtbCBbIFNraXAgXQotaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3ByZXZhbGVu
dC1kb21haW5zLXBlci1wYWdlLWRhdGFiYXNlLmh0bWwgWyBTa2lwIF0KLWh0dHAvdGVzdHMvcmVz
b3VyY2VMb2FkU3RhdGlzdGljcy9wcmV2YWxlbnQtZG9tYWlucy1wZXItcGFnZS5odG1sIFsgU2tp
cCBdCiAjIFNraXBwZWQgaW4gV0syIGV4cGVjdGF0aW9ucyBiZWNhdXNlIGNvb2tpZSBwYXJ0aXRp
b25pbmcgaXMgb25seSBhdmFpbGFibGUgaW4gbWFjT1MgSGlnaCBTaWVycmEgYW5kIGlPUyAxMS4K
IGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jb29raWUtZGVsZXRpb24uaHRtbCBb
IFBhc3MgXQogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2Nvb2tpZXMtd2l0aC1h
bmQtd2l0aG91dC11c2VyLWludGVyYWN0aW9uLmh0bWwgWyBQYXNzIF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393483</attachid>
            <date>2020-03-13 08:25:28 -0700</date>
            <delta_ts>2020-03-13 09:57:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209032-20200313082527.patch</filename>
            <type>text/plain</type>
            <size>51974</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4Mzc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmIwMjcxZGNlNTljMjcz
OGU5MGE0NDEzMGNhNjM1Mzk0MDlmY2UxNy4uMGVmZDM2ZDMwMmRmMTdlYjhiMTBlMGZiYTNiOGQy
NjM0OThhNDA1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIwLTAzLTEzICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIFJlcG9ydCBh
bGwgdGhpcmQgcGFydHkgbG9hZHMgb24gYSBwZXItcGFnZSBiYXNpcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5MDMyCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS82MDM5NzMyMz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvbG9hZGVk
LXJlZ2lzdHJhYmxlLWRvbWFpbnMtZ2V0LXJlcG9ydGVkLmh0bWwKKworICAgICAgICBVcGRhdGUg
bmFtaW5nIHRvIG1vcmUgYWNjdXJhdGVseSByZWZsZWN0IHRoZSBmdW5jdGlvbidzIHB1cnBvc2Uu
IEl0CisgICAgICAgIGlzIGNhcHR1cmluZyBhbmQgcmV0dXJuaW5nIGFsbCBsb2FkZWQgdGhpcmQg
cGFydHkgZG9tYWlucy4KKyAgICAgICAgCisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmNvbm5lY3QpOgorICAg
ICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIGxvYWRlci9SZXNv
dXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6d2lsbFNl
bmRSZXF1ZXN0SW50ZXJuYWwpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVx
dWVzdFJlc291cmNlKToKKwogMjAyMC0wMy0xMiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0
Lm9yZz4KIAogICAgICAgICBDcmFzaCBpbiBUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6cmVw
bGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCBlYjc5NTM5MjU2OWUxODhlZDE3MmQyMDk1ZGU5MGI3YmVjNGEwZWNm
Li5hYTNmZWQ4ODRiODZjMTY0ZmUzNmQ2YWMyZTFlMmJjMzBiODBiY2E2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDQ3IEBACisyMDIwLTAzLTEzICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlA
YXBwbGUuY29tPgorCisgICAgICAgIFJlcG9ydCBhbGwgdGhpcmQgcGFydHkgbG9hZHMgb24gYSBw
ZXItcGFnZSBiYXNpcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjA5MDMyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MDM5NzMyMz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBodHRwL3Rlc3Rz
L3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvbG9hZGVkLXJlZ2lzdHJhYmxlLWRvbWFpbnMtZ2V0LXJl
cG9ydGVkLmh0bWwKKworICAgICAgICBSZW1vdmVkIElQQyB0byB0aGUgTmV0d29yayBQcm9jZXNz
IGFza2luZyBpZiBhIHJlc291cmNlIGxvYWQgaXMgZnJvbQorICAgICAgICBhIHByZXZhbGVudCBk
b21haW4uIFRoaXMgbm93IHN0b3JlcyBhbmQgc2VuZHMgYWxsIGxvYWRlZCByZWdpc3RyYWJsZQor
ICAgICAgICBkb21haW5zLiBUaGlzIHBhdGNoIGlzIG1vc3RseSB1cGRhdGluZyBuYW1pbmcgdG8g
cmVmbGVjdCB0aGlzIGFuZAorICAgICAgICBkZWxldGluZyB0aGUgdW5uZWNlc3NhcnkgY29kZSB0
byBjb21tdW5pY2F0ZSB3aXRoIHRoZQorICAgICAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmlzUHJldmFsZW50U3VicmVzb3VyY2VMb2FkKTog
RGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJzaXRlRGF0YVN0b3JlLm1tOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX2dldExv
YWRlZFRoaXJkUGFydHlEb21haW5zRm9yOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAo
LVtXS1dlYnNpdGVEYXRhU3RvcmUgX2NsZWFyTG9hZGVkVGhpcmRQYXJ0eURvbWFpbnNGb3I6XSk6
CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfZ2V0UHJldmFsZW50RG9tYWluc0Zvcjpj
b21wbGV0aW9uSGFuZGxlcjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0
b3JlIF9jbGVhclByZXZhbGVudERvbWFpbnNGb3I6XSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmg6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6YWRk
TG9hZGVkVGhpcmRQYXJ0eURvbWFpbik6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVy
Q2xpZW50OjphZGRMb2FkZWRSZWdpc3RyYWJsZURvbWFpbik6IERlbGV0ZWQuCisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6ZGlkQ29tbWl0TG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmFkZExvYWRl
ZFRoaXJkUGFydHlEb21haW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRMb2FkZWRU
aGlyZFBhcnR5RG9tYWlucyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNsZWFyTG9hZGVk
VGhpcmRQYXJ0eURvbWFpbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjphZGRMb2FkZWRS
ZWdpc3RyYWJsZURvbWFpbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omdl
dFByZXZhbGVudERvbWFpbnMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpj
bGVhclByZXZhbGVudERvbWFpbnMpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVz
c2FnZXMuaW46CisKIDIwMjAtMDMtMTIgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNv
bT4KIAogICAgICAgICBXZWJQYWdlUHJveHk6OlNhdmVJbWFnZVRvTGlicmFyeSBzaG91bGQgdmFs
aWRhdGUgaXRzIGBpbWFnZVNpemVgIHBhcmFtZXRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAppbmRleCA5ZDgzNGMyNGI5ZTAyZTQyNmE2Mjgx
ZmEyYWEzMTE5NDU2MDJlMTQ4Li5kOTc3ZmI4ZmI1ZTdiMzdmNjQxNDg2MzFmMzIzYTM1NGZlMzFk
NmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0
LmNwcApAQCAtMzI4LDcgKzMyOCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFdlYlNvY2tldDo6Y29u
bmVjdChjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHByCiAjaWYgRU5B
QkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBhdXRvIHJlcG9ydFJlZ2lzdHJhYmxl
RG9tYWluID0gW2RvbWFpbiA9IFJlZ2lzdHJhYmxlRG9tYWluKG1fdXJsKS5pc29sYXRlZENvcHko
KV0oYXV0byYgY29udGV4dCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChhdXRvKiBmcmFtZSA9IGRv
d25jYXN0PERvY3VtZW50Pihjb250ZXh0KS5mcmFtZSgpKQotICAgICAgICAgICAgZnJhbWUtPmxv
YWRlcigpLmNsaWVudCgpLmFkZExvYWRlZFJlZ2lzdHJhYmxlRG9tYWluKFdURk1vdmUoZG9tYWlu
KSk7CisgICAgICAgICAgICBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuYWRkTG9hZGVkVGhpcmRQ
YXJ0eURvbWFpbihXVEZNb3ZlKGRvbWFpbikpOwogICAgIH07CiAgICAgaWYgKGlzPERvY3VtZW50
Pihjb250ZXh0KSkKICAgICAgICAgcmVwb3J0UmVnaXN0cmFibGVEb21haW4oY29udGV4dCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IGFiYTY2MmQzNGQ5
Njc1ZDJmNzJjMmIxNzBiN2VjMGJhOWI5YzAzNzguLjNhZjVlZjExZmExZTE5OWUxNTQ5NGQzOWE3
MGQxMjJiMDNkM2VmZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVu
dC5oCkBAIC0zNzQsNyArMzc0LDcgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xP
QURfU1RBVElTVElDUykKICAgICB2aXJ0dWFsIGJvb2wgaGFzRnJhbWVTcGVjaWZpY1N0b3JhZ2VB
Y2Nlc3MoKSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBhZGRMb2FkZWRSZWdp
c3RyYWJsZURvbWFpbihSZWdpc3RyYWJsZURvbWFpbiYmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
YWRkTG9hZGVkVGhpcmRQYXJ0eURvbWFpbihSZWdpc3RyYWJsZURvbWFpbiYmKSB7IH0KICNlbmRp
ZgogCiAgICAgdmlydHVhbCBBbGxvd3NDb250ZW50SmF2YVNjcmlwdCBhbGxvd3NDb250ZW50SmF2
YVNjcmlwdEZyb21Nb3N0UmVjZW50TmF2aWdhdGlvbigpIGNvbnN0IHsgcmV0dXJuIEFsbG93c0Nv
bnRlbnRKYXZhU2NyaXB0OjpZZXM7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
ZXIuY3BwCmluZGV4IDg3NmM5ZDU4NTc3Yzc2NGUzMzU1NmYzNjkyZWViZmNjMDg4ZDEyZDkuLjli
NGU3Y2ViOTk5YmJhNzI2ZDRiMjBkM2E0Yzc1ZTYzY2NjYzFjOWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcApAQCAtNDE2LDcgKzQxNiw3IEBAIHZvaWQgUmVzb3Vy
Y2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdEludGVybmFsKFJlc291cmNlUmVxdWVzdCYmIHJlcXVl
c3QsIGNvbnN0IFJlCiAgICAgaWYgKGlzUmVkaXJlY3QpIHsKICAgICAgICAgcGxhdGZvcm1TdHJh
dGVnaWVzKCktPmxvYWRlclN0cmF0ZWd5KCktPmNyb3NzT3JpZ2luUmVkaXJlY3RSZWNlaXZlZCh0
aGlzLCByZXF1ZXN0LnVybCgpKTsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNT
KQotICAgICAgICBmcmFtZUxvYWRlcigpLT5jbGllbnQoKS5hZGRMb2FkZWRSZWdpc3RyYWJsZURv
bWFpbihSZWdpc3RyYWJsZURvbWFpbihyZXF1ZXN0LnVybCgpKSk7CisgICAgICAgIGZyYW1lTG9h
ZGVyKCktPmNsaWVudCgpLmFkZExvYWRlZFRoaXJkUGFydHlEb21haW4oUmVnaXN0cmFibGVEb21h
aW4ocmVxdWVzdC51cmwoKSkpOwogI2VuZGlmCiAgICAgfQogICAgIG1fcmVxdWVzdCA9IHJlcXVl
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
TG9hZGVyLmNwcAppbmRleCA1YWRjN2RlMzJiMTQ5NjFjNWExMzlhMDcyNDQyNzZlNTdjYjA1NWJh
Li43YmNjYmZjOTBmZDkzOWNiMzc4YTY2NzcwMDEzNzE0ZDhlY2UwOTBhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKQEAg
LTk5Myw3ICs5OTMsNyBAQCBSZXNvdXJjZUVycm9yT3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2Fj
aGVkUmVzb3VyY2U+PiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdQogICAgIEFTU0VSVChyZXNv
dXJjZS0+dXJsKCkgPT0gdXJsLnN0cmluZygpKTsKICAgICBtX2RvY3VtZW50UmVzb3VyY2VzLnNl
dChyZXNvdXJjZS0+dXJsKCksIHJlc291cmNlKTsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9T
VEFUSVNUSUNTKQotICAgIGZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmFkZExvYWRlZFJlZ2lzdHJh
YmxlRG9tYWluKFJlZ2lzdHJhYmxlRG9tYWluKHJlc291cmNlLT5yZXNvdXJjZVJlcXVlc3QoKS51
cmwoKSkpOworICAgIGZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmFkZExvYWRlZFRoaXJkUGFydHlE
b21haW4oUmVnaXN0cmFibGVEb21haW4ocmVzb3VyY2UtPnJlc291cmNlUmVxdWVzdCgpLnVybCgp
KSk7CiAjZW5kaWYKICAgICByZXR1cm4gcmVzb3VyY2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwCmluZGV4IDJjYjk5YzViMDNiZDU1NmZlNTE4MjlkNjlhZWRkMGQxOWRiMzZkZDQuLmM0
YjllY2U0ODZlNGQ3MDBiNjA5NGYzNWVkZGVmMWQyNThjMjdjYTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwCkBAIC04NjUsMTcgKzg2NSw2IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoV2ViQ29yZTo6UmVn
CiAgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5yZXF1ZXN0U3RvcmFnZUFjY2Vz
c1VuZGVyT3BlbmVyKFdURk1vdmUoZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzKSwgb3BlbmVy
UGFnZUlELCBXVEZNb3ZlKG9wZW5lckRvbWFpbikpOwogICAgIH0KIH0KLQotdm9pZCBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6aXNQcmV2YWxlbnRTdWJyZXNvdXJjZUxvYWQoUmVnaXN0
cmFibGVEb21haW4mJiBkb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCi17Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+
bmV0d29ya1Nlc3Npb24oKSkgewotICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlz
dGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpIHsKLSAgICAg
ICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmlzUHJldmFsZW50UmVzb3VyY2UoZG9tYWlu
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIH0KLSAgICB9Ci0gICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwotfQogI2VuZGlmCiAK
IHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmFkZE9yaWdpbkFjY2Vzc1doaXRl
bGlzdEVudHJ5KGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luLCBjb25zdCBTdHJpbmcmIGRlc3Rp
bmF0aW9uUHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Ib3N0LCBib29sIGFsbG93
RGVzdGluYXRpb25TdWJkb21haW5zKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IGI3NTlj
MjlkMjRkNjc5ZmI5MzA0OWVkMmFiOWE0NGNlNGYwMTg3NTAuLjFmODczMTI3OWE0NmViNjg3OWMz
YzVlYTI5NDBkMmY0ZGIyMmUxOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTI2Niw3
ICsyNjYsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgaGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0
b3BGcmFtZURvbWFpbiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCByZXF1
ZXN0U3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4s
IGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViUGFnZVByb3h5SWRlbnRpZmll
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRl
ZCwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duKT4mJik7CiAgICAgdm9pZCBy
ZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
JiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBv
cGVuZXJQYWdlSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgb3BlbmVyRG9tYWluKTsK
LSAgICB2b2lkIGlzUHJldmFsZW50U3VicmVzb3VyY2VMb2FkKFJlZ2lzdHJhYmxlRG9tYWluJiYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogI2VuZGlmCiAKICAgICB2b2lkIGFk
ZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luLCBj
b25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRp
b25Ib3N0LCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDI0ZjVlNWM4NGI3YmEzNGI2ODQxNGJj
YzAzMzVjZDNmOGRiNGNiOTkuLjZmZjdhNDA4NzEwYWVlM2MxM2M4ZmJjNTRmYTJjY2U0YTg1NjYw
YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtNjcs
NyArNjcsNiBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBMZWdh
Y3lSZWNlaXZlciB7CiAgICAgSGFzU3RvcmFnZUFjY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiBzdWJGcmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9wRnJhbWVE
b21haW4sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciBwYWdlSUQpIC0+IChib29sIGhhc1N0b3JhZ2VBY2Nlc3MpIEFzeW5jCiAgICAgUmVx
dWVzdFN0b3JhZ2VBY2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gc3ViRnJhbWVEb21h
aW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvcEZyYW1lRG9tYWluLCBXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlE
LCBXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQpIC0+IChlbnVt
OmJvb2wgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgd2FzR3JhbnRlZCwgZW51bTpi
b29sIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93bikg
QXN5bmMKICAgICBSZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIgb3BlbmVyUGFnZUlELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBvcGVuZXJE
b21haW4pCi0gICAgSXNQcmV2YWxlbnRTdWJyZXNvdXJjZUxvYWQoV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4gZG9tYWluKSAtPiAoYm9vbCBpc1ByZXZhbGVudCkgQXN5bmMKICNlbmRpZgogCiAg
ICAgQWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoU3RyaW5nIHNvdXJjZU9yaWdpbiwgU3Ry
aW5nIGRlc3RpbmF0aW9uUHJvdG9jb2wsIFN0cmluZyBkZXN0aW5hdGlvbkhvc3QsIGJvb2wgYWxs
b3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KaW5kZXggODRkYzJjODhmZDc3
OTk5ZDUxMDc2M2M2NzlmYjM0N2QzY2EzYjU1Mi4uNGNhNWVmMTI3N2JiMTUwOWUzOGQ3MDJhODBh
MDlkMzNmMGQ1ZDhlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCkBAIC0zOTAsNyArMzkwLDcgQEAgKyAodm9p
ZClfYWxsb3dXZWJzaXRlRGF0YVJlY29yZHNGb3JBbGxPcmlnaW5zCiAgICAgV2ViS2l0OjpXZWJz
aXRlRGF0YVN0b3JlOjphbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnMoKTsKIH0K
IAotLSAodm9pZClfZ2V0UHJldmFsZW50RG9tYWluc0ZvcjooV0tXZWJWaWV3ICopd2ViVmlldyBj
b21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNBcnJheTxOU1N0cmluZyAqPiAqZG9tYWlucykp
Y29tcGxldGlvbkhhbmRsZXIKKy0gKHZvaWQpX2dldExvYWRlZFRoaXJkUGFydHlEb21haW5zRm9y
OihXS1dlYlZpZXcgKil3ZWJWaWV3IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU0FycmF5
PE5TU3RyaW5nICo+ICpkb21haW5zKSljb21wbGV0aW9uSGFuZGxlcgogewogI2lmIEVOQUJMRShS
RVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgaWYgKCF3ZWJWaWV3KSB7CkBAIC00MDQsOCAr
NDA0LDggQEAgLSAodm9pZClfZ2V0UHJldmFsZW50RG9tYWluc0ZvcjooV0tXZWJWaWV3ICopd2Vi
VmlldyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICAgICAKLSAgICB3ZWJQYWdlUHJveHktPmdldFByZXZhbGVudERvbWFpbnMoW2NvbXBsZXRpb25I
YW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKFZlY3RvcjxXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbj4mJiBwcmV2YWxlbnREb21haW5zKSB7Ci0gICAgICAgIFZlY3Rv
cjxSZWZQdHI8QVBJOjpPYmplY3Q+PiBhcGlEb21haW5zID0gV1RGOjptYXAocHJldmFsZW50RG9t
YWlucywgW10oYXV0byYgZG9tYWluKSB7CisgICAgd2ViUGFnZVByb3h5LT5nZXRMb2FkZWRUaGly
ZFBhcnR5RG9tYWlucyhbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlv
bkhhbmRsZXIpXSAoVmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYmIGxvYWRlZFRo
aXJkUGFydHlEb21haW5zKSB7CisgICAgICAgIFZlY3RvcjxSZWZQdHI8QVBJOjpPYmplY3Q+PiBh
cGlEb21haW5zID0gV1RGOjptYXAobG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMsIFtdKGF1dG8mIGRv
bWFpbikgewogICAgICAgICAgICAgcmV0dXJuIFJlZlB0cjxBUEk6Ok9iamVjdD4oQVBJOjpTdHJp
bmc6OmNyZWF0ZShXVEZNb3ZlKGRvbWFpbi5zdHJpbmcoKSkpKTsKICAgICAgICAgfSk7CiAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKHdyYXBwZXIoQVBJOjpBcnJheTo6Y3JlYXRlKFdURk1vdmUo
YXBpRG9tYWlucykpKSk7CkBAIC00MTUsNyArNDE1LDcgQEAgLSAodm9pZClfZ2V0UHJldmFsZW50
RG9tYWluc0ZvcjooV0tXZWJWaWV3ICopd2ViVmlldyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAo
XikKICNlbmRpZgogfQogCi0tICh2b2lkKV9jbGVhclByZXZhbGVudERvbWFpbnNGb3I6KFdLV2Vi
VmlldyAqKXdlYlZpZXcKKy0gKHZvaWQpX2NsZWFyTG9hZGVkVGhpcmRQYXJ0eURvbWFpbnNGb3I6
KFdLV2ViVmlldyAqKXdlYlZpZXcKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNU
SUNTKQogICAgIGlmICghd2ViVmlldykKQEAgLTQyNSw3ICs0MjUsNyBAQCAtICh2b2lkKV9jbGVh
clByZXZhbGVudERvbWFpbnNGb3I6KFdLV2ViVmlldyAqKXdlYlZpZXcKICAgICBpZiAoIXdlYlBh
Z2VQcm94eSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgd2ViUGFnZVByb3h5LT5jbGVhclByZXZh
bGVudERvbWFpbnMoKTsKKyAgICB3ZWJQYWdlUHJveHktPmNsZWFyTG9hZGVkVGhpcmRQYXJ0eURv
bWFpbnMoKTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaAppbmRleCBlZGU3
NThmMDQwMTQyZjQ1YWNiN2U1ZGRiMjFjZTgzNzgwZGFiM2ZhLi45YTlkNjBkYzU3YzEyN2EzNzkz
MzJhMTczNWJmMmI4ZTA1N2JkMmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgKQEAgLTYx
LDggKzYxLDggQEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIF9XS1dlYnNpdGVEYXRh
U3RvcmVGZXRjaE9wdGlvbnMpIHsKIAogLSAodm9pZClfc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1Rlc3RpbmdDYWxsYmFjazoobnVsbGFibGUgdm9pZCAoXikoV0tXZWJzaXRlRGF0YVN0b3JlICos
IE5TU3RyaW5nICopKWNhbGxiYWNrIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMpLCBpb3Mo
MTEuMCkpOwogLSAodm9pZClfZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXNGb3I6KFdLV2ViVmll
dyAqKXdlYlZpZXcgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TQXJyYXk8TlNTdHJpbmcg
Kj4gKmRvbWFpbnMpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAu
MTQpLCBpb3MoMTIuMCkpOwotLSAodm9pZClfZ2V0UHJldmFsZW50RG9tYWluc0ZvcjooV0tXZWJW
aWV3ICopd2ViVmlldyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNBcnJheTxOU1N0cmlu
ZyAqPiAqZG9tYWlucykpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhX
S19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKLS0gKHZvaWQpX2NsZWFyUHJldmFsZW50RG9t
YWluc0ZvcjooV0tXZWJWaWV3ICopd2ViVmlldyBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01B
Q19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAodm9pZClfZ2V0TG9hZGVkVGhpcmRQYXJ0eURv
bWFpbnNGb3I6KFdLV2ViVmlldyAqKXdlYlZpZXcgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4p
KE5TQXJyYXk8TlNTdHJpbmcgKj4gKmRvbWFpbnMpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9B
VkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CistICh2b2lkKV9j
bGVhckxvYWRlZFRoaXJkUGFydHlEb21haW5zRm9yOihXS1dlYlZpZXcgKil3ZWJWaWV3IFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAtICh2b2lk
KV9nZXRXZWJWaWV3Q2F0ZWdvcnlGb3I6KFdLV2ViVmlldyAqKXdlYlZpZXcgY29tcGxldGlvbkhh
bmRsZXI6KHZvaWQgKF4pKF9XS1dlYlZpZXdDYXRlZ29yeSBjYXRlZ29yeSkpY29tcGxldGlvbkhh
bmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEp
KTsKICsgKHZvaWQpX2FsbG93V2Vic2l0ZURhdGFSZWNvcmRzRm9yQWxsT3JpZ2lucyBXS19BUElf
QVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpLCBpb3MoMTEuMykpOwogLSAoYm9vbClfaGFzUmVnaXN0
ZXJlZFNlcnZpY2VXb3JrZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNCksIGlvcygxMi4w
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA1MzhmYTU3
NmUyMWFkMjQ5OGVjODNkMTE5MjBhYWZhOTBlMmUyYmVmLi4wODI3MzQ1MmU2ZGQ5MjNjYzg1Mzky
N2E1ZTY1OTk4YjdhZDY0MzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKQEAgLTk5NDcsMTQgKzk5NDcsMTQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldE9yaWVu
dGF0aW9uRm9yTWVkaWFDYXB0dXJlKHVpbnQ2NF90IG9yaWVudGF0aW9uKQogfQogCiAjaWYgRU5B
QkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLXZvaWQgV2ViUGFnZVByb3h5OjpnZXRQcmV2
YWxlbnREb21haW5zKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFJlZ2lzdHJhYmxlRG9t
YWluPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFnZVByb3h5OjpnZXRMb2Fk
ZWRUaGlyZFBhcnR5RG9tYWlucyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxSZWdpc3Ry
YWJsZURvbWFpbj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgc2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRQcmV2YWxlbnREb21haW5zKCksIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Oldl
YlBhZ2U6OkdldExvYWRlZFRoaXJkUGFydHlEb21haW5zKCksIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmNsZWFyUHJldmFsZW50RG9tYWlucygp
Cit2b2lkIFdlYlBhZ2VQcm94eTo6Y2xlYXJMb2FkZWRUaGlyZFBhcnR5RG9tYWlucygpCiB7Ci0g
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2xlYXJQcmV2YWxlbnREb21haW5zKCkpOworICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNsZWFyTG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMoKSk7
CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA5
Nzk3ZjhkMjcwNjg4ZWNlZmY4NDhjYmI0NTEzZjJjNWJiZmFiMmIxLi5iNDk4YjkzMDAzNGRjZWI0
ZjhkMDNkMzdjMDlhOWYwNGZhZThkMWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaApAQCAtMTU2Nyw4ICsxNTY3LDggQEAgcHVibGljOgogI2lmIEVOQUJMRShSRVNPVVJD
RV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzc0NvbmZpcm0o
Y29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBk
aWRDb21taXRDcm9zc1NpdGVMb2FkV2l0aERhdGFUcmFuc2ZlckZyb21QcmV2YWxlbnRSZXNvdXJj
ZSgpOwotICAgIHZvaWQgZ2V0UHJldmFsZW50RG9tYWlucyhDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFZlY3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mJik+JiYpOwotICAgIHZvaWQgY2xl
YXJQcmV2YWxlbnREb21haW5zKCk7CisgICAgdm9pZCBnZXRMb2FkZWRUaGlyZFBhcnR5RG9tYWlu
cyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
bj4mJik+JiYpOworICAgIHZvaWQgY2xlYXJMb2FkZWRUaGlyZFBhcnR5RG9tYWlucygpOwogI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHAKaW5kZXggMDc2ODhlYzdkYjBkYmNiMWU5YjQ2ZDI5MDk4Y2QxYmJlOWJiMzlj
NS4uY2IyYWJlM2MyMDE1ZmJjYmJmMGVlNTllMTI1MTM2MDYzOWM0NjY1YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xNDksMTMgKzE0OSwxMyBAQCB2b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpzZXRIYXNGcmFtZVNwZWNpZmljU3RvcmFnZUFjY2VzcyhGcmFtZVNwZWNp
ZmljU3RvcmFnZQogICAgIG1fZnJhbWVTcGVjaWZpY1N0b3JhZ2VBY2Nlc3NJZGVudGlmaWVyID0g
V1RGTW92ZShmcmFtZVNwZWNpZmljU3RvcmFnZUFjY2Vzc0lkZW50aWZpZXIpOwogfQogCi12b2lk
IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjphZGRMb2FkZWRSZWdpc3RyYWJsZURvbWFpbihSZWdpc3Ry
YWJsZURvbWFpbiYmIGRvbWFpbikKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmFkZExvYWRl
ZFRoaXJkUGFydHlEb21haW4oUmVnaXN0cmFibGVEb21haW4mJiBkb21haW4pCiB7CiAgICAgYXV0
byogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKICAgICBpZiAoIXdlYlBhZ2UpCiAgICAgICAg
IHJldHVybjsKICAgICAKLSAgICB3ZWJQYWdlLT5hZGRMb2FkZWRSZWdpc3RyYWJsZURvbWFpbihX
VEZNb3ZlKGRvbWFpbikpOworICAgIHdlYlBhZ2UtPmFkZExvYWRlZFRoaXJkUGFydHlEb21haW4o
V1RGTW92ZShkb21haW4pKTsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5o
CmluZGV4IGIwNThlNjJhNDRjYjY5YzE3NjkzNzRiN2RmZGJlYmEwM2Y0MjU1MjAuLmRkNjI2OTZi
NjhiZjNjYTdjM2U0MjhhNzU5ZDIzNGUzNzc2MTZhNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5oCkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICAgICAgV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIgcGFnZUlEOwogICAgIH07CiAgICAgdm9pZCBzZXRIYXNGcmFtZVNwZWNpZmljU3Rv
cmFnZUFjY2VzcyhGcmFtZVNwZWNpZmljU3RvcmFnZUFjY2Vzc0lkZW50aWZpZXImJik7Ci0gICAg
dm9pZCBhZGRMb2FkZWRSZWdpc3RyYWJsZURvbWFpbihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biYmKSBmaW5hbDsKKyAgICB2b2lkIGFkZExvYWRlZFRoaXJkUGFydHlEb21haW4oV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4mJikgZmluYWw7CiAjZW5kaWYKIAogICAgIFdlYkNvcmU6OkFsbG93
c0NvbnRlbnRKYXZhU2NyaXB0IGFsbG93c0NvbnRlbnRKYXZhU2NyaXB0RnJvbU1vc3RSZWNlbnRO
YXZpZ2F0aW9uKCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCmluZGV4IGFlZjI4NTk1ODE1MjkyN2IwMDVlOTU3NTdiYjY5MDc1ZDJh
NzllY2UuLjU4ZGJmZjgwYWFjYjg0NTM5ZDk5ODkyZGRlM2JmNjdkY2E5MjFiMTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC01ODU4LDcgKzU4
NTgsNyBAQCB2b2lkIFdlYlBhZ2U6OmRpZENvbW1pdExvYWQoV2ViRnJhbWUqIGZyYW1lKQogICAg
ICAgICByZXR1cm47CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAg
IGNsZWFyUHJldmFsZW50RG9tYWlucygpOworICAgIGNsZWFyTG9hZGVkVGhpcmRQYXJ0eURvbWFp
bnMoKTsKICNlbmRpZgogICAgIAogICAgIC8vIElmIHByZXZpb3VzIFVSTCBpcyBpbnZhbGlkLCB0
aGVuIGl0J3Mgbm90IGEgcmVhbCBwYWdlIHRoYXQncyBiZWluZyBuYXZpZ2F0ZWQgYXdheSBmcm9t
LgpAQCAtNjY5NSwyNiArNjY5NSwxOSBAQCB2b2lkIFdlYlBhZ2U6Ondhc0xvYWRlZFdpdGhEYXRh
VHJhbnNmZXJGcm9tUHJldmFsZW50UmVzb3VyY2UoKQogICAgIGZyYW1lLT5kb2N1bWVudCgpLT53
YXNMb2FkZWRXaXRoRGF0YVRyYW5zZmVyRnJvbVByZXZhbGVudFJlc291cmNlKCk7CiB9CiAKLXZv
aWQgV2ViUGFnZTo6YWRkTG9hZGVkUmVnaXN0cmFibGVEb21haW4oUmVnaXN0cmFibGVEb21haW4m
JiBkb21haW4pCit2b2lkIFdlYlBhZ2U6OmFkZExvYWRlZFRoaXJkUGFydHlEb21haW4oUmVnaXN0
cmFibGVEb21haW4mJiBkb21haW4pCiB7Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBtX2xvYWRlZERv
bWFpbnMuYWRkKGRvbWFpbik7Ci0gICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KSB7Ci0gICAg
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpJc1ByZXZhbGVudFN1YnJlc291cmNlTG9hZChkb21haW4pLCBb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBkb21haW5dIChib29sIGlzUHJl
dmFsZW50KSB7Ci0gICAgICAgICAgICBpZiAoaXNQcmV2YWxlbnQpCi0gICAgICAgICAgICAgICAg
bV9wcmV2YWxlbnREb21haW5zLmFkZChkb21haW4pOwotICAgICAgICB9KTsKLSAgICB9CisgICAg
bV9sb2FkZWRUaGlyZFBhcnR5RG9tYWlucy5hZGQoZG9tYWluKTsKIH0KIAotdm9pZCBXZWJQYWdl
OjpnZXRQcmV2YWxlbnREb21haW5zKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFJlZ2lz
dHJhYmxlRG9tYWluPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhZ2U6OmdldExv
YWRlZFRoaXJkUGFydHlEb21haW5zKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFJlZ2lz
dHJhYmxlRG9tYWluPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgY29tcGxldGlvbkhh
bmRsZXIoY29weVRvVmVjdG9yKG1fcHJldmFsZW50RG9tYWlucykpOworICAgIGNvbXBsZXRpb25I
YW5kbGVyKGNvcHlUb1ZlY3RvcihtX2xvYWRlZFRoaXJkUGFydHlEb21haW5zKSk7CiB9CiAKLXZv
aWQgV2ViUGFnZTo6Y2xlYXJQcmV2YWxlbnREb21haW5zKCkKK3ZvaWQgV2ViUGFnZTo6Y2xlYXJM
b2FkZWRUaGlyZFBhcnR5RG9tYWlucygpCiB7Ci0gICAgbV9wcmV2YWxlbnREb21haW5zLmNsZWFy
KCk7Ci0gICAgbV9sb2FkZWREb21haW5zLmNsZWFyKCk7CisgICAgbV9sb2FkZWRUaGlyZFBhcnR5
RG9tYWlucy5jbGVhcigpOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaAppbmRleCAwYzA1YmZhZjg3Zjg0YzliMzQ2ZDY0NGFhM2QxOTgzY2Y4
Y2I4NzZlLi44ZGU0MDI0YmYyN2FmMWRlMzkwMDg2M2QzYmQwMjVmYTA1YTUxMjg3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xMTg3LDkgKzExODcs
OSBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNQYWdlTGV2ZWxTdG9yYWdlQWNjZXNzKGNvbnN0IFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiB0b3BMZXZlbERvbWFpbiwgY29uc3QgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4mIHJlc291cmNlRG9tYWluKSBjb25zdDsKICAgICB2b2lkIGFkZERv
bWFpbldpdGhQYWdlTGV2ZWxTdG9yYWdlQWNjZXNzKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluJiB0b3BMZXZlbERvbWFpbiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4m
IHJlc291cmNlRG9tYWluKTsKICAgICB2b2lkIHdhc0xvYWRlZFdpdGhEYXRhVHJhbnNmZXJGcm9t
UHJldmFsZW50UmVzb3VyY2UoKTsKLSAgICB2b2lkIGFkZExvYWRlZFJlZ2lzdHJhYmxlRG9tYWlu
KFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYpOwotICAgIHZvaWQgY2xlYXJQcmV2YWxlbnRE
b21haW5zKCk7Ci0gICAgdm9pZCBnZXRQcmV2YWxlbnREb21haW5zKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoVmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPik+JiYpOworICAgIHZvaWQg
YWRkTG9hZGVkVGhpcmRQYXJ0eURvbWFpbihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmKTsK
KyAgICB2b2lkIGNsZWFyTG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMoKTsKKyAgICB2b2lkIGdldExv
YWRlZFRoaXJkUGFydHlEb21haW5zKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluPik+JiYpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoREVWSUNF
X09SSUVOVEFUSU9OKQpAQCAtMjA2Myw4ICsyMDYzLDcgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJM
RShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgSGFzaE1hcDxXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IG1fZG9tYWluc1dpdGhQYWdl
TGV2ZWxTdG9yYWdlQWNjZXNzOwotICAgIEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4+IG1fbG9hZGVkRG9tYWluczsKLSAgICBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluPiBtX3ByZXZhbGVudERvbWFpbnM7CisgICAgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbj4gbV9sb2FkZWRUaGlyZFBhcnR5RG9tYWluczsKICNlbmRpZgogCiAgICAgU3RyaW5n
IG1fb3ZlcnJpZGRlbk1lZGlhVHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IGU2MDFjZmY3MmIzNGJmMDRkMGUw
M2FhYWM1NWJmNmVhYjM1ZDk5MmQuLmJiY2ZjZmUwYzM2MzI5MGM4NzBmNjg0Yzg0OTE3ZTBhOWRm
ZWYyZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbgpAQCAtNTc3LDggKzU3Nyw4IEBAIEdlbmVyYXRlU3ludGhldGljRWRp
dGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRU
eXBlCiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIFdhc0xvYWRl
ZFdpdGhEYXRhVHJhbnNmZXJGcm9tUHJldmFsZW50UmVzb3VyY2UoKQotICAgIENsZWFyUHJldmFs
ZW50RG9tYWlucygpCi0gICAgR2V0UHJldmFsZW50RG9tYWlucygpIC0+IChWZWN0b3I8V2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnMpIEFzeW5jCisgICAgQ2xlYXJMb2FkZWRUaGly
ZFBhcnR5RG9tYWlucygpCisgICAgR2V0TG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMoKSAtPiAoVmVj
dG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5zKSBBc3luYwogI2VuZGlmCiAK
ICNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9U
b29scy9DaGFuZ2VMb2cKaW5kZXggMmZhOTQ4ZDAzZTA1ODIzNDQyOTM1ZDBiMmYyZGY0NzU2MGY3
Y2I2OS4uZmY3ZTYxZmEyNTJhMTU1MzZlMjBlYWJlOGVjNjZiMzljOGY5ZWRjOCAxMDA2NDQKLS0t
IGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBA
CisyMDIwLTAzLTEzICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgor
CisgICAgICAgIFJlcG9ydCBhbGwgdGhpcmQgcGFydHkgbG9hZHMgb24gYSBwZXItcGFnZSBiYXNp
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5MDMy
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MDM5NzMyMz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3N0bHkgbmFtaW5nIHVwZGF0ZXMgdG8gcmVm
bGVjdCB0aGUgY2hhbmdlIGluIHVzZSBmb3IgdGhpcyBTUEkgY2FsbC4KKyAgICAgICAgSXQgbm93
IHJldHVybnMgYWxsIGxvYWRlZCB0aGlyZCBwYXJ0eSBkb21haW5zLCBub3QganVzdCBwcmV2YWxl
bnQgb25lcy4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmlu
ZGluZ3MvVGVzdFJ1bm5lci5pZGw6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxl
OjpkaWRSZWNlaXZlTWVzc2FnZVRvUGFnZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6
Z2V0TG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMpOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpj
YWxsRGlkUmVjZWl2ZUxvYWRlZFRoaXJkUGFydHlEb21haW5zQ2FsbGJhY2spOgorICAgICAgICAo
V1RSOjpUZXN0UnVubmVyOjpnZXRQcmV2YWxlbnREb21haW5zKTogRGVsZXRlZC4KKyAgICAgICAg
KFdUUjo6VGVzdFJ1bm5lcjo6Y2FsbERpZFJlY2VpdmVQcmV2YWxlbnREb21haW5zQ2FsbGJhY2sp
OiBEZWxldGVkLgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVz
dFJ1bm5lci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZh
bHVlcyk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpnZXRMb2FkZWRUaGlyZFBhcnR5
RG9tYWlucyk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpjbGVhckxvYWRlZFRoaXJk
UGFydHlEb21haW5zKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmdldFByZXZhbGVu
dERvbWFpbnMpOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Y2xlYXJQ
cmV2YWxlbnREb21haW5zKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rl
c3RDb250cm9sbGVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlv
bi5jcHA6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZUZy
b21JbmplY3RlZEJ1bmRsZSk6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkaWRSZWNl
aXZlTG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMpOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlv
bjo6ZGlkUmVjZWl2ZVByZXZhbGVudERvbWFpbnMpOiBEZWxldGVkLgorICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW06CisgICAgICAgIChXVFI6OlRlc3RDb250cm9s
bGVyOjpnZXRMb2FkZWRUaGlyZFBhcnR5RG9tYWlucyk6CisgICAgICAgIChXVFI6OlRlc3RDb250
cm9sbGVyOjpjbGVhckxvYWRlZFRoaXJkUGFydHlEb21haW5zKToKKyAgICAgICAgKFdUUjo6VGVz
dENvbnRyb2xsZXI6OmdldFByZXZhbGVudERvbWFpbnMpOiBEZWxldGVkLgorICAgICAgICAoV1RS
OjpUZXN0Q29udHJvbGxlcjo6Y2xlYXJQcmV2YWxlbnREb21haW5zKTogRGVsZXRlZC4KKwogMjAy
MC0wMy0xMiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBDcmFz
aCBpbiBUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6cmVwbGFjZQpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlk
bCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1
bm5lci5pZGwKaW5kZXggMTMwMjcxMGY2NGU1Yjc5Mzg1ZDAzYTk2MjJiNmU2ZGJmZmRlOTZkMi4u
MTBlM2Q3ZDQxZTJlODY0MmQ3YWVkNTA5MjI3ZDU2OGNkODA5YWI5ZSAxMDA2NDQKLS0tIGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlk
bAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rl
c3RSdW5uZXIuaWRsCkBAIC0zNDUsNyArMzQ1LDcgQEAgaW50ZXJmYWNlIFRlc3RSdW5uZXIgewog
ICAgIHZvaWQgc2V0U3RhdGlzdGljc1Nob3VsZERvd25ncmFkZVJlZmVycmVyKGJvb2xlYW4gdmFs
dWUsIG9iamVjdCBjYWxsYmFjayk7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzU2hvdWxkQmxvY2tU
aGlyZFBhcnR5Q29va2llcyhib29sZWFuIHZhbHVlLCBvYmplY3QgY2FsbGJhY2ssIG9wdGlvbmFs
IGJvb2xlYW4gb25seU9uU2l0ZXNXaXRob3V0VXNlckludGVyYWN0aW9uKTsKICAgICB2b2lkIHNl
dFN0YXRpc3RpY3NGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZShib29sZWFuIHZhbHVl
LCBvYmplY3QgY2FsbGJhY2spOwotICAgIHZvaWQgZ2V0UHJldmFsZW50RG9tYWlucyhvYmplY3Qg
Y2FsbGJhY2spOworICAgIHZvaWQgZ2V0TG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMob2JqZWN0IGNh
bGxiYWNrKTsKIAogICAgIC8vIEluamVjdGVkIGJ1bmRsZSBmb3JtIGNsaWVudC4KICAgICB2b2lk
IGluc3RhbGxUZXh0RGlkQ2hhbmdlSW5UZXh0RmllbGRDYWxsYmFjayhvYmplY3QgY2FsbGJhY2sp
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZS5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlLmNwcAppbmRleCAwMGM5ZTc1MzI4N2IwN2RhNjRmMzhiNTdlNmFiYWJjNWRk
YTk3YWExLi5hMmI4ZjdhZThjYTk4Y2M1YmZmODM1NTMwYmIxMzMzZWFlMjhjNTg3IDEwMDY0NAot
LS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
LmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlLmNwcApAQCAtNDE1LDcgKzQxNSw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OmRpZFJl
Y2VpdmVNZXNzYWdlVG9QYWdlKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiBtCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRG
OENTdHJpbmcobWVzc2FnZU5hbWUsICJDYWxsRGlkUmVjZWl2ZVByZXZhbGVudERvbWFpbnMiKSkg
eworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiQ2Fs
bERpZFJlY2VpdmVMb2FkZWRUaGlyZFBhcnR5RG9tYWlucyIpKSB7CiAgICAgICAgIEFTU0VSVCht
ZXNzYWdlQm9keSk7CiAgICAgICAgIEFTU0VSVChXS0dldFR5cGVJRChtZXNzYWdlQm9keSkgPT0g
V0tBcnJheUdldFR5cGVJRCgpKTsKIApAQCAtNDI5LDcgKzQyOSw3IEBAIHZvaWQgSW5qZWN0ZWRC
dW5kbGU6OmRpZFJlY2VpdmVNZXNzYWdlVG9QYWdlKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS1N0
cmluZ1JlZiBtCiAgICAgICAgICAgICAgICAgZG9tYWlucy51bmNoZWNrZWRBcHBlbmQodG9XVEZT
dHJpbmcoc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KGl0ZW0pKSk7CiAgICAgICAgIH0KIAotICAg
ICAgICBtX3Rlc3RSdW5uZXItPmNhbGxEaWRSZWNlaXZlUHJldmFsZW50RG9tYWluc0NhbGxiYWNr
KFdURk1vdmUoZG9tYWlucykpOworICAgICAgICBtX3Rlc3RSdW5uZXItPmNhbGxEaWRSZWNlaXZl
TG9hZGVkVGhpcmRQYXJ0eURvbWFpbnNDYWxsYmFjayhXVEZNb3ZlKGRvbWFpbnMpKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCmluZGV4IDJlOThjZjVkNTZhZTE2YTFjZjA2
MjYxZDQ5MjBkOGNmZjZmY2QzOWIuLjM1YjE2NGRmMjJjOTE1YTQ5MTQzMWNhOWMxMzQ2NTU3MzNi
ODczYjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
VGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9UZXN0UnVubmVyLmNwcApAQCAtNzU0LDcgKzc1NCw3IEBAIGVudW0gewogICAgIFN0YXRpc3Rp
Y3NEaWRTZXRTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzQ2FsbGJhY2tJRCwKICAgICBTdGF0
aXN0aWNzRGlkU2V0Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGVDYWxsYmFja0lELAog
ICAgIEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzQ2FsbGJhY2tJRCwKLSAgICBHZXRQcmV2YWxlbnRE
b21haW5zQ2FsbGJhY2tJRCwKKyAgICBHZXRMb2FkZWRUaGlyZFBhcnR5RG9tYWluc0NhbGxiYWNr
SUQsCiAgICAgRGlkUmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzQ2FsbGJhY2tJRCwKICAgICBH
ZXRBcHBsaWNhdGlvbk1hbmlmZXN0Q2FsbGJhY2tJRCwKICAgICBUZXh0RGlkQ2hhbmdlSW5UZXh0
RmllbGRDYWxsYmFja0lELApAQCAtMjM1NSwxNSArMjM1NSwxNSBAQCB2b2lkIFRlc3RSdW5uZXI6
OmNhbGxEaWRSZWNlaXZlQWxsU3RvcmFnZUFjY2Vzc0VudHJpZXNDYWxsYmFjayhWZWN0b3I8U3Ry
aW5nPiYgZAogICAgIGNhbGxUZXN0UnVubmVyQ2FsbGJhY2soQWxsU3RvcmFnZUFjY2Vzc0VudHJp
ZXNDYWxsYmFja0lELCAxLCAmcmVzdWx0KTsKIH0KIAotdm9pZCBUZXN0UnVubmVyOjpnZXRQcmV2
YWxlbnREb21haW5zKEpTVmFsdWVSZWYgY2FsbGJhY2spCit2b2lkIFRlc3RSdW5uZXI6OmdldExv
YWRlZFRoaXJkUGFydHlEb21haW5zKEpTVmFsdWVSZWYgY2FsbGJhY2spCiB7Ci0gICAgY2FjaGVU
ZXN0UnVubmVyQ2FsbGJhY2soR2V0UHJldmFsZW50RG9tYWluc0NhbGxiYWNrSUQsIGNhbGxiYWNr
KTsKKyAgICBjYWNoZVRlc3RSdW5uZXJDYWxsYmFjayhHZXRMb2FkZWRUaGlyZFBhcnR5RG9tYWlu
c0NhbGxiYWNrSUQsIGNhbGxiYWNrKTsKICAgICAKLSAgICBXS1JldGFpblB0cjxXS1N0cmluZ1Jl
Zj4gbWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJH
ZXRQcmV2YWxlbnREb21haW5zIikpOworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNz
YWdlTmFtZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkdldExvYWRl
ZFRoaXJkUGFydHlEb21haW5zIikpOwogICAgIFdLQnVuZGxlUG9zdE1lc3NhZ2UoSW5qZWN0ZWRC
dW5kbGU6OnNpbmdsZXRvbigpLmJ1bmRsZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbnVsbHB0cik7
CiB9CiAKLXZvaWQgVGVzdFJ1bm5lcjo6Y2FsbERpZFJlY2VpdmVQcmV2YWxlbnREb21haW5zQ2Fs
bGJhY2soVmVjdG9yPFN0cmluZz4mJiBkb21haW5zKQordm9pZCBUZXN0UnVubmVyOjpjYWxsRGlk
UmVjZWl2ZUxvYWRlZFRoaXJkUGFydHlEb21haW5zQ2FsbGJhY2soVmVjdG9yPFN0cmluZz4mJiBk
b21haW5zKQogewogICAgIFdLQnVuZGxlRnJhbWVSZWYgbWFpbkZyYW1lID0gV0tCdW5kbGVQYWdl
R2V0TWFpbkZyYW1lKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5wYWdlKCktPnBhZ2UoKSk7
CiAgICAgSlNDb250ZXh0UmVmIGNvbnRleHQgPSBXS0J1bmRsZUZyYW1lR2V0SmF2YVNjcmlwdENv
bnRleHQobWFpbkZyYW1lKTsKQEAgLTIzODQsNyArMjM4NCw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6
Y2FsbERpZFJlY2VpdmVQcmV2YWxlbnREb21haW5zQ2FsbGJhY2soVmVjdG9yPFN0cmluZz4mJiBk
b21haW5zCiAgICAgCiAgICAgSlNWYWx1ZVJlZiByZXN1bHQgPSBKU1ZhbHVlTWFrZUZyb21KU09O
U3RyaW5nKGNvbnRleHQsIGFkb3B0KEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHN0cmlu
Z0J1aWxkZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKSkuZ2V0KCkpOwogCi0gICAgY2FsbFRl
c3RSdW5uZXJDYWxsYmFjayhHZXRQcmV2YWxlbnREb21haW5zQ2FsbGJhY2tJRCwgMSwgJnJlc3Vs
dCk7CisgICAgY2FsbFRlc3RSdW5uZXJDYWxsYmFjayhHZXRMb2FkZWRUaGlyZFBhcnR5RG9tYWlu
c0NhbGxiYWNrSUQsIDEsICZyZXN1bHQpOwogfQogCiB2b2lkIFRlc3RSdW5uZXI6OmFkZE1vY2tN
ZWRpYURldmljZShKU1N0cmluZ1JlZiBwZXJzaXN0ZW50SWQsIEpTU3RyaW5nUmVmIGxhYmVsLCBj
b25zdCBjaGFyKiB0eXBlKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9UZXN0UnVubmVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL1Rlc3RSdW5uZXIuaAppbmRleCBkYTBhZDFmYmE5YjkyNDg3MTNkMDRmMWFiYTE0ZTFm
NjYwOGI4M2E3Li5iNGI0NzU2ZGZjZTM2YmUxYTE0YjFlNTAyNjk1MzJkYjQyNGU0ZTc2IDEwMDY0
NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIu
aAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIu
aApAQCAtNDQ5LDggKzQ0OSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0YXRpc3RpY3NDYWxsRGlk
U2V0Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGVDYWxsYmFjaygpOwogICAgIHZvaWQg
c3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUoSlNWYWx1ZVJlZiBjb21wbGV0aW9uSGFu
ZGxlcik7CiAgICAgdm9pZCBzdGF0aXN0aWNzQ2FsbERpZFJlc2V0VG9Db25zaXN0ZW50U3RhdGVD
YWxsYmFjaygpOwotICAgIHZvaWQgZ2V0UHJldmFsZW50RG9tYWlucyhKU1ZhbHVlUmVmIGNhbGxi
YWNrKTsKLSAgICB2b2lkIGNhbGxEaWRSZWNlaXZlUHJldmFsZW50RG9tYWluc0NhbGxiYWNrKFZl
Y3RvcjxTdHJpbmc+JiYgZG9tYWlucyk7CisgICAgdm9pZCBnZXRMb2FkZWRUaGlyZFBhcnR5RG9t
YWlucyhKU1ZhbHVlUmVmIGNhbGxiYWNrKTsKKyAgICB2b2lkIGNhbGxEaWRSZWNlaXZlTG9hZGVk
VGhpcmRQYXJ0eURvbWFpbnNDYWxsYmFjayhWZWN0b3I8U3RyaW5nPiYmIGRvbWFpbnMpOwogCiAg
ICAgLy8gSW5qZWN0ZWQgYnVuZGxlIGZvcm0gY2xpZW50LgogICAgIHZvaWQgaW5zdGFsbFRleHRE
aWRDaGFuZ2VJblRleHRGaWVsZENhbGxiYWNrKEpTVmFsdWVSZWYgY2FsbGJhY2spOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAppbmRleCA3MWMzNThhMjdkZTI2Yzhm
YzllNjhlNzJmYzY3NTNhNTJhNmE5MjdlLi5iYWYzMDQyN2JmOTQ5MGNhMzNjZmE1Y2UzYzE0MzI2
MjBlMjgwZDljIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9s
bGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcApA
QCAtMTEyNiw3ICsxMTI2LDcgQEAgYm9vbCBUZXN0Q29udHJvbGxlcjo6cmVzZXRTdGF0ZVRvQ29u
c2lzdGVudFZhbHVlcyhjb25zdCBUZXN0T3B0aW9ucyYgb3B0aW9ucywgUmUKICAgICBzZXRBbGxv
d3NBbnlTU0xDZXJ0aWZpY2F0ZSh0cnVlKTsKIAogICAgIHN0YXRpc3RpY3NSZXNldFRvQ29uc2lz
dGVudFN0YXRlKCk7Ci0gICAgY2xlYXJQcmV2YWxlbnREb21haW5zKCk7CisgICAgY2xlYXJMb2Fk
ZWRUaGlyZFBhcnR5RG9tYWlucygpOwogCiAgICAgY2xlYXJBZENsaWNrQXR0cmlidXRpb24oKTsK
IApAQCAtMzEzMCwxMSArMzEzMCwxMSBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpnZXRBbGxTdG9y
YWdlQWNjZXNzRW50cmllcygpCiB7CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6OmdldFByZXZh
bGVudERvbWFpbnMoKQordm9pZCBUZXN0Q29udHJvbGxlcjo6Z2V0TG9hZGVkVGhpcmRQYXJ0eURv
bWFpbnMoKQogewogfQogCi12b2lkIFRlc3RDb250cm9sbGVyOjpjbGVhclByZXZhbGVudERvbWFp
bnMoKQordm9pZCBUZXN0Q29udHJvbGxlcjo6Y2xlYXJMb2FkZWRUaGlyZFBhcnR5RG9tYWlucygp
CiB7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xs
ZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAppbmRleCBhOGFk
NThmZTFhNzg5MDFmMzViOWU4M2Y2ZDJjNTVmN2IxMzYwNWI2Li5iZjU3ZjRkZTk1ZDlhZTAzODk3
OGIxNWFkNDcyZDYyYmUwMGVhZmRiIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJv
bGxlci5oCkBAIC0yNjUsOCArMjY1LDggQEAgcHVibGljOgogICAgIHZvaWQgc3RhdGlzdGljc1Jl
c2V0VG9Db25zaXN0ZW50U3RhdGUoKTsKIAogICAgIHZvaWQgZ2V0QWxsU3RvcmFnZUFjY2Vzc0Vu
dHJpZXMoKTsKLSAgICB2b2lkIGdldFByZXZhbGVudERvbWFpbnMoKTsKLSAgICB2b2lkIGNsZWFy
UHJldmFsZW50RG9tYWlucygpOworICAgIHZvaWQgZ2V0TG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMo
KTsKKyAgICB2b2lkIGNsZWFyTG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMoKTsKICAgICB2b2lkIGdl
dFdlYlZpZXdDYXRlZ29yeSgpOwogICAgIHZvaWQgc2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJs
ZWQoYm9vbCk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9j
YXRpb24uY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKaW5k
ZXggZjhjY2UyN2ZjNDYxN2VhNzZjNmI1Mzc3NTRjYzQ2MmNkOWUwZWMxOS4uMjJlODk2Y2Y4MTU3
ZDRkYjk0M2JmZTlhMGNlMTFkOWZkYzYxNTllMiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0SW52b2NhdGlvbi5jcHAKQEAgLTgyMCw4ICs4MjAsOCBAQCB2b2lkIFRlc3RJbnZvY2F0aW9u
OjpkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS1N0cmluZ1JlZiBtZXNzYWdl
TmFtZQogICAgIH0KICNlbmRpZgogICAgIAotICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhD
U3RyaW5nKG1lc3NhZ2VOYW1lLCAiR2V0UHJldmFsZW50RG9tYWlucyIpKSB7Ci0gICAgICAgIFRl
c3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5nZXRQcmV2YWxlbnREb21haW5zKCk7CisgICAgaWYg
KFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJHZXRMb2FkZWRUaGly
ZFBhcnR5RG9tYWlucyIpKSB7CisgICAgICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5n
ZXRMb2FkZWRUaGlyZFBhcnR5RG9tYWlucygpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC0xOTcwLDkgKzE5NzAsOSBAQCB2b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlQWxsU3Rv
cmFnZUFjY2Vzc0VudHJpZXMoVmVjdG9yPFN0cmluZz4mIGRvbWFpbnMpCiAgICAgV0tQYWdlUG9z
dE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5tYWlu
V2ViVmlldygpLT5wYWdlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSk7
CiB9CiAKLXZvaWQgVGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVQcmV2YWxlbnREb21haW5zKFZl
Y3RvcjxTdHJpbmc+JiYgZG9tYWlucykKK3ZvaWQgVGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVM
b2FkZWRUaGlyZFBhcnR5RG9tYWlucyhWZWN0b3I8U3RyaW5nPiYmIGRvbWFpbnMpCiB7Ci0gICAg
V0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lID0gYWRvcHRXSyhXS1N0cmluZ0Ny
ZWF0ZVdpdGhVVEY4Q1N0cmluZygiQ2FsbERpZFJlY2VpdmVQcmV2YWxlbnREb21haW5zIikpOwor
ICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZSA9IGFkb3B0V0soV0tTdHJp
bmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkNhbGxEaWRSZWNlaXZlTG9hZGVkVGhpcmRQYXJ0eURv
bWFpbnMiKSk7CiAgICAgCiAgICAgV0tSZXRhaW5QdHI8V0tNdXRhYmxlQXJyYXlSZWY+IG1lc3Nh
Z2VCb2R5ID0gYWRvcHRXSyhXS011dGFibGVBcnJheUNyZWF0ZSgpKTsKICAgICBmb3IgKGF1dG8m
IGRvbWFpbiA6IGRvbWFpbnMpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RJbnZvY2F0aW9uLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgK
aW5kZXggZWM0ZjU5NjYyYzdiNWJlMDM2NjE1MDcyYzIyMDU5NjJlODQ4NTU2Ni4uYTRhZDM5MWY1
M2UxZjQ3NjNmMjNjZDQ3ZWQ3YzAwNTE1YmE3NWM2MiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdEludm9jYXRpb24uaApAQCAtODYsNyArODYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRT
ZXRWZXJ5UHJldmFsZW50UmVzb3VyY2UoKTsKICAgICB2b2lkIGRpZFNldEhhc0hhZFVzZXJJbnRl
cmFjdGlvbigpOwogICAgIHZvaWQgZGlkUmVjZWl2ZUFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKFZl
Y3RvcjxTdHJpbmc+JiBkb21haW5zKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVQcmV2YWxlbnREb21h
aW5zKFZlY3RvcjxTdHJpbmc+JiYgZG9tYWlucyk7CisgICAgdm9pZCBkaWRSZWNlaXZlTG9hZGVk
VGhpcmRQYXJ0eURvbWFpbnMoVmVjdG9yPFN0cmluZz4mJiBkb21haW5zKTsKICAgICB2b2lkIGRp
ZFJlY2VpdmVXZWJWaWV3Q2F0ZWdvcnkoU3RyaW5nJik7CiAgICAgdm9pZCBkaWRTZXRJbkFwcEJy
b3dzZXJQcml2YWN5RW5hYmxlZCgpOwogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KaW5kZXggZmMxZDUxYjc0OWM4YjMyMWZlNGY3
YTIyNTU3YjgxYWQ5ZTZiOTAxMi4uMzQ3MDAxOTM3MzMzNDIyZGM1YmMxNWIxZDU3MjgzNzI5OGNk
NDM0NSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJv
bGxlckNvY29hLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRy
b2xsZXJDb2NvYS5tbQpAQCAtMzQyLDI4ICszNDIsMjggQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6
Z2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoKQogICAgIH1dOwogfQogCi12b2lkIFRlc3RDb250
cm9sbGVyOjpnZXRQcmV2YWxlbnREb21haW5zKCkKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmdldExv
YWRlZFRoaXJkUGFydHlEb21haW5zKCkKIHsKICAgICBhdXRvKiBwYXJlbnRWaWV3ID0gbWFpbldl
YlZpZXcoKTsKICAgICBpZiAoIXBhcmVudFZpZXcpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAg
ICBbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfZ2V0UHJldmFs
ZW50RG9tYWluc0ZvcjpwYXJlbnRWaWV3LT5wbGF0Zm9ybVZpZXcoKSBjb21wbGV0aW9uSGFuZGxl
cjpeKE5TQXJyYXk8TlNTdHJpbmcgKj4gKm5zRG9tYWlucykgeworICAgIFtnbG9iYWxXZWJWaWV3
Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlIF9nZXRMb2FkZWRUaGlyZFBhcnR5RG9tYWlu
c0ZvcjpwYXJlbnRWaWV3LT5wbGF0Zm9ybVZpZXcoKSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TQXJy
YXk8TlNTdHJpbmcgKj4gKm5zRG9tYWlucykgewogICAgICAgICBWZWN0b3I8U3RyaW5nPiBkb21h
aW5zOwogICAgICAgICBkb21haW5zLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobnNEb21haW5zLmNv
dW50KTsKICAgICAgICAgZm9yIChOU1N0cmluZyAqZG9tYWluIDogbnNEb21haW5zKQogICAgICAg
ICAgICAgZG9tYWlucy51bmNoZWNrZWRBcHBlbmQoZG9tYWluKTsKLSAgICAgICAgbV9jdXJyZW50
SW52b2NhdGlvbi0+ZGlkUmVjZWl2ZVByZXZhbGVudERvbWFpbnMoV1RGTW92ZShkb21haW5zKSk7
CisgICAgICAgIG1fY3VycmVudEludm9jYXRpb24tPmRpZFJlY2VpdmVMb2FkZWRUaGlyZFBhcnR5
RG9tYWlucyhXVEZNb3ZlKGRvbWFpbnMpKTsKICAgICB9XTsKIH0KIAotdm9pZCBUZXN0Q29udHJv
bGxlcjo6Y2xlYXJQcmV2YWxlbnREb21haW5zKCkKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmNsZWFy
TG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMoKQogewogICAgIGF1dG8qIHBhcmVudFZpZXcgPSBtYWlu
V2ViVmlldygpOwogICAgIGlmICghcGFyZW50VmlldykKICAgICAgICAgcmV0dXJuOwogCi0gICAg
W2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgX2NsZWFyUHJldmFs
ZW50RG9tYWluc0ZvcjpwYXJlbnRWaWV3LT5wbGF0Zm9ybVZpZXcoKV07CisgICAgW2dsb2JhbFdl
YlZpZXdDb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgX2NsZWFyTG9hZGVkVGhpcmRQYXJ0
eURvbWFpbnNGb3I6cGFyZW50Vmlldy0+cGxhdGZvcm1WaWV3KCldOwogfQogCiB2b2lkIFRlc3RD
b250cm9sbGVyOjpnZXRXZWJWaWV3Q2F0ZWdvcnkoKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDVlMTI1OTg2ZDk2ZGFhMTg4
MjAzNjM5MDZlY2IyNGIyNGFkYjcyYjIuLjg0MDZmZjU1YTVkOTBmMGFhZjgzMDRhODk4Nzk1MjI4
ODMzYjU3NWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAyMC0wMy0xMyAgS2F0ZSBDaGVuZXkg
IDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KKworICAgICAgICBSZXBvcnQgYWxsIHRoaXJk
IHBhcnR5IGxvYWRzIG9uIGEgcGVyLXBhZ2UgYmFzaXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTAzMgorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NjAzOTczMjM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgTm93IHRoYXQgd2UgcmVwb3J0IGFsbCBsb2FkZWQgdGhpcmQgcGFydHkgZG9tYWlucywgd2Ug
bm8gbG9uZ2VyIG5lZWQKKyAgICAgICAgSVRQIHRvIHRlc3QgdGhpcyBjYWxsLiBXZSBjYW4gZWxp
bWluYXRlIHRoZSBkdWFsIHRlc3RpbmcgZm9yCisgICAgICAgIG1lbW9yeS9kYXRhYmFzZSBzZXR1
cCBhbmQgYW55IGxvZ2ljIHJlbGF0ZWQgdG8gc2V0dGluZyBhIHJlc291cmNlCisgICAgICAgIGFz
IHByZXZhbGVudC4KKworICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy9sb2FkZWQtcmVnaXN0cmFibGUtZG9tYWlucy1nZXQtcmVwb3J0ZWQtZXhwZWN0ZWQudHh0OiBD
b3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC93ZWItc29ja2V0LWxv
YWRzLWNhcHR1cmVkLWluLXBlci1wYWdlLWRvbWFpbnMtZXhwZWN0ZWQudHh0LgorICAgICAgICAq
IGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9sb2FkZWQtcmVnaXN0cmFibGUtZG9t
YWlucy1nZXQtcmVwb3J0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzL3ByZXZhbGVudC1kb21haW5zLXBlci1wYWdlLWRhdGFiYXNlLWV4
cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0
YXRpc3RpY3MvcHJldmFsZW50LWRvbWFpbnMtcGVyLXBhZ2UtZGF0YWJhc2UuaHRtbDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcHJldmFsZW50
LWRvbWFpbnMtcGVyLXBhZ2UuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dl
YnNvY2tldC93ZWItc29ja2V0LWxvYWRzLWNhcHR1cmVkLWluLXBlci1wYWdlLWRvbWFpbnMtZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3dlYi1zb2NrZXQtbG9h
ZHMtY2FwdHVyZWQtaW4tcGVyLXBhZ2UtZG9tYWlucy5odG1sOgorICAgICAgICAqIHBsYXRmb3Jt
L2lvcy9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICBTaW5jZSB0aGlzIHRlc3Qgbm8gbG9uZ2Vy
IHVzZXMgVUlIZWxwZXIuYWN0aXZhdGVBdCwgaXQgY2FuIGJlCisgICAgICAgIHVuc2tpcHBlZCBp
biBpT1MKKwogMjAyMC0wMy0xMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAg
ICAgICAgIGh0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcGFnZS1jYWNoZS1jb21wbGV0ZWQtcGF5
bWVudC1yZXNwb25zZS5odHRwcy5odG1sIGlzIGZsYWt5IGZhaWxpbmcuCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvbG9hZGVkLXJlZ2lz
dHJhYmxlLWRvbWFpbnMtZ2V0LXJlcG9ydGVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9sb2FkZWQtcmVnaXN0cmFibGUtZG9tYWlu
cy1nZXQtcmVwb3J0ZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM5ZmEyZmNiZTlkMTM3YmEw
M2M1ODYxMmRlZjY3ODc0YWYwMTI3ZjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvbG9hZGVkLXJlZ2lzdHJhYmxlLWRvbWFp
bnMtZ2V0LXJlcG9ydGVkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitUZXN0cyB0aGF0
IGEgaWZyYW1lIGdldHMgcmVwb3J0ZWQgYXMgYSBsb2FkZWQgdGhpcmQgcGFydHkgZG9tYWluLgor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBMb2FkZWQgZG9tYWluIHdhcyBz
dWNjZXNzZnVsbHkgY2FwdHVyZWQuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzL2xvYWRlZC1yZWdpc3RyYWJsZS1kb21haW5zLWdldC1yZXBvcnRl
ZC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2xv
YWRlZC1yZWdpc3RyYWJsZS1kb21haW5zLWdldC1yZXBvcnRlZC5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMz
MTg0YTNmNmFmZGU5ZGQyYTFhOWY2MDIwMTQ2MDQwZGU2YWU5NjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvbG9hZGVkLXJl
Z2lzdHJhYmxlLWRvbWFpbnMtZ2V0LXJlcG9ydGVkLmh0bWwKQEAgLTAsMCArMSwzMCBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1y
ZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0
LXJlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIvcmVz
b3VyY2VMb2FkU3RhdGlzdGljcy9yZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+CisgICAgPHNj
cmlwdD4KKyAgICAgICAgZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgYSBpZnJhbWUgZ2V0cyByZXBv
cnRlZCBhcyBhIGxvYWRlZCB0aGlyZCBwYXJ0eSBkb21haW4uIik7CisgICAgICAgIGpzVGVzdElz
QXN5bmMgPSB0cnVlOworCisgICAgICAgIGZ1bmN0aW9uIGFza0ZvckxvYWRlZFRoaXJkUGFydHlE
b21haW5zKCkgeworICAgICAgICAgICAgdGVzdFJ1bm5lci5nZXRMb2FkZWRUaGlyZFBhcnR5RG9t
YWlucyhmdW5jdGlvbiAoYXJyYXlPZkRvbWFpbnMpIHsKKyAgICAgICAgICAgICAgICBpZiAoYXJy
YXlPZkRvbWFpbnMubGVuZ3RoID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgYXNrRm9yTG9h
ZGVkVGhpcmRQYXJ0eURvbWFpbnMoKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoYXJyYXlPZkRvbWFpbnMuaW5jbHVk
ZXMoImxvY2FsaG9zdCIpKQorICAgICAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJMb2FkZWQg
ZG9tYWluIHdhcyBzdWNjZXNzZnVsbHkgY2FwdHVyZWQuIik7CisgICAgICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJMb2FkZWQgZG9tYWluIHdhcyBub3Qg
c3VjY2Vzc2Z1bGx5IGNhcHR1cmVkLiIpOworICAgICAgICAgICAgICAgIHNldEVuYWJsZUZlYXR1
cmUoZmFsc2UsIGZpbmlzaEpTVGVzdCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAg
IDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8aWZyYW1lIG9ubG9hZD0nYXNrRm9yTG9hZGVk
VGhpcmRQYXJ0eURvbWFpbnMoKScgc3JjPSJodHRwOi8vbG9jYWxob3N0OjgwMDAvcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy9yZXNvdXJjZXMvYmFzaWMtaWZyYW1lLmh0bWwiPgorPC9pZnJhbWU+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291
cmNlTG9hZFN0YXRpc3RpY3MvcHJldmFsZW50LWRvbWFpbnMtcGVyLXBhZ2UtZGF0YWJhc2UtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
L3ByZXZhbGVudC1kb21haW5zLXBlci1wYWdlLWRhdGFiYXNlLWV4cGVjdGVkLnR4dApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTdlMWFiYmU5M2E3ZjBkNzM1YjczYjM3MjU3MTRmMDQ2
YzRkNzVlYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcHJldmFsZW50LWRv
bWFpbnMtcGVyLXBhZ2UtZGF0YWJhc2UtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEs
MTAgKzAsMCBAQAotVGVzdHMgdGhhdCBhIGlmcmFtZSBmcm9tIGEgcHJldmFsZW50IGRvbWFpbiB3
aWxsIGJlIHJlcG9ydGVkIGFzIHByZXZhbGVudCB1bmRlciB0aGlzIHBhZ2UuCi0KLU9uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KLQotCi1QQVNTIERvbWFpbiB3YXMgc3VjY2Vzc2Z1bGx5IG1hcmtl
ZCBwcmV2YWxlbnQuCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09N
UExFVEUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzL3ByZXZhbGVudC1kb21haW5zLXBlci1wYWdlLWRhdGFiYXNlLmh0bWwgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcHJldmFsZW50LWRvbWFp
bnMtcGVyLXBhZ2UtZGF0YWJhc2UuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ODEyZWFlZTIzNDdlYjZlZWIwOTM0OGVhNTE1N2EwZjg5NmYwN2M5My4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jl
c291cmNlTG9hZFN0YXRpc3RpY3MvcHJldmFsZW50LWRvbWFpbnMtcGVyLXBhZ2UtZGF0YWJhc2Uu
aHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDc0ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0
bWw+Ci08aGVhZD4KLSAgICA8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3Qu
anMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvdWktaGVs
cGVyLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iL3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MvcmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQ+Ci0gICAgICAgIGRl
c2NyaXB0aW9uKCJUZXN0cyB0aGF0IGEgaWZyYW1lIGZyb20gYSBwcmV2YWxlbnQgZG9tYWluIHdp
bGwgYmUgcmVwb3J0ZWQgYXMgcHJldmFsZW50IHVuZGVyIHRoaXMgcGFnZS4iKTsKLSAgICAgICAg
anNUZXN0SXNBc3luYyA9IHRydWU7Ci0KLSAgICAgICAgZnVuY3Rpb24gZmluaXNoVGVzdCgpIHsK
LSAgICAgICAgICAgIHNldEVuYWJsZUZlYXR1cmUoZmFsc2UsIGZpbmlzaEpTVGVzdCk7Ci0gICAg
ICAgIH0KLQotICAgICAgICBjb25zdCBpZnJhbWVJRCA9ICJpRnJhbWVGcm9tUHJldmFsZW50RG9t
YWluIjsKLSAgICAgICAgZnVuY3Rpb24gYXNrRm9yUHJldmFsZW50UmVzb3VyY2VzKCkgewotICAg
ICAgICAgICAgdGVzdFJ1bm5lci5nZXRQcmV2YWxlbnREb21haW5zKGZ1bmN0aW9uIChhcnJheU9m
RG9tYWlucykgewotICAgICAgICAgICAgICAgIHZhciBwYXNzZWQgPSB0cnVlOwotICAgICAgICAg
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXlPZkRvbWFpbnMubGVuZ3RoOyArK2kpIHsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKGFycmF5T2ZEb21haW5zW2ldID09PSAibG9jYWxob3N0
IikgewotICAgICAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gdHJ1ZTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIGlmIChwYXNzZWQpCi0gICAgICAgICAgICAgICAgICAgIHRl
c3RQYXNzZWQoIkRvbWFpbiB3YXMgc3VjY2Vzc2Z1bGx5IG1hcmtlZCBwcmV2YWxlbnQuIik7Ci0g
ICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJEb21h
aW4gd2FzIG5vdCBzdWNjZXNzZnVsbHkgbWFya2VkIHByZXZhbGVudC4iKTsKLSAgICAgICAgICAg
ICAgICBmaW5pc2hUZXN0KCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfQotCi0gICAgICAg
IGZ1bmN0aW9uIGFjdGl2YXRlRWxlbWVudChlbGVtZW50SWQpIHsKLSAgICAgICAgICAgIHZhciBl
bGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlbWVudElkKTsKLSAgICAgICAgICAg
IHZhciBjZW50ZXJYID0gZWxlbWVudC5vZmZzZXRMZWZ0ICsgZWxlbWVudC5vZmZzZXRXaWR0aCAv
IDI7Ci0gICAgICAgICAgICB2YXIgY2VudGVyWSA9IGVsZW1lbnQub2Zmc2V0VG9wICsgZWxlbWVu
dC5vZmZzZXRIZWlnaHQgLyAyOwotICAgICAgICAgICAgVUlIZWxwZXIuYWN0aXZhdGVBdChjZW50
ZXJYLCBjZW50ZXJZKS50aGVuKAotICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsgfSwKLSAg
ICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRlc3RGYWls
ZWQoIlByb21pc2UgcmVqZWN0ZWQuIik7Ci0gICAgICAgICAgICAgICAgICAgIGZpbmlzaFRlc3Qo
KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICApOwotICAgICAgICAgICAgYXNrRm9y
UHJldmFsZW50UmVzb3VyY2VzKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBydW5U
ZXN0KCkgewotICAgICAgICAgICAgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhhc2ggIT09ICIjZWxl
bWVudEFjdGl2YXRlZCIpIHsKLSAgICAgICAgICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5oYXNo
ID0gImVsZW1lbnRBY3RpdmF0ZWQiOwotICAgICAgICAgICAgICAgIGFjdGl2YXRlRWxlbWVudChp
ZnJhbWVJRCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBjb25zdCBob3N0
VW5kZXJUZXN0ID0gImxvY2FsaG9zdDo4MDAwIjsKLSAgICAgICAgY29uc3Qgc3RhdGlzdGljc1Vy
bCA9ICJodHRwOi8vIiArIGhvc3RVbmRlclRlc3Q7Ci0gICAgICAgIAotICAgICAgICB0ZXN0UnVu
bmVyLnNldFVzZUlUUERhdGFiYXNlKHRydWUpOwotICAgICAgICBzZXRFbmFibGVGZWF0dXJlKHRy
dWUsIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzUHJl
dmFsZW50UmVzb3VyY2Uoc3RhdGlzdGljc1VybCwgdHJ1ZSwgZnVuY3Rpb24oKSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKCF0ZXN0UnVubmVyLmlzU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKHN0
YXRpc3RpY3NVcmwpKQotICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJIb3N0IGRpZCBu
b3QgZ2V0IHNldCBhcyBwcmV2YWxlbnQgcmVzb3VyY2UuIik7Ci0KLSAgICAgICAgICAgICAgICBs
ZXQgaWZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOwotICAg
ICAgICAgICAgICAgIGlmcmFtZUVsZW1lbnQub25sb2FkID0gcnVuVGVzdDsKLSAgICAgICAgICAg
ICAgICBpZnJhbWVFbGVtZW50LmlkID0gImlGcmFtZUZyb21QcmV2YWxlbnREb21haW4iOwotICAg
ICAgICAgICAgICAgIGlmcmFtZUVsZW1lbnQuc3JjID0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Jlc291cmNlcy9iYXNpYy1pZnJhbWUuaHRtbCI7Ci0gICAg
ICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpZnJhbWVFbGVtZW50KTsKLSAg
ICAgICAgICAgIH0pOwotICAgICAgICB9KTsKLSAgICA8L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5
PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3ByZXZhbGVudC1kb21haW5zLXBlci1wYWdlLmh0bWwgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcHJldmFsZW50LWRv
bWFpbnMtcGVyLXBhZ2UuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzE4YzZm
YmE3MDdhODE4Njc1ZWFhOGIzZDIxMDY5MWU3NzI2M2UzZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNl
TG9hZFN0YXRpc3RpY3MvcHJldmFsZW50LWRvbWFpbnMtcGVyLXBhZ2UuaHRtbAorKysgL2Rldi9u
dWxsCkBAIC0xLDczICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLSAg
ICA8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0Pgot
ICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3Njcmlw
dD4KLSAgICA8c2NyaXB0IHNyYz0iL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzL3V0
aWwuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQ+Ci0gICAgICAgIGRlc2NyaXB0aW9uKCJUZXN0
cyB0aGF0IGEgaWZyYW1lIGZyb20gYSBwcmV2YWxlbnQgZG9tYWluIHdpbGwgYmUgcmVwb3J0ZWQg
YXMgcHJldmFsZW50IHVuZGVyIHRoaXMgcGFnZS4iKTsKLSAgICAgICAganNUZXN0SXNBc3luYyA9
IHRydWU7Ci0KLSAgICAgICAgZnVuY3Rpb24gZmluaXNoVGVzdCgpIHsKLSAgICAgICAgICAgIHNl
dEVuYWJsZUZlYXR1cmUoZmFsc2UsIGZpbmlzaEpTVGVzdCk7Ci0gICAgICAgIH0KLQotICAgICAg
ICBjb25zdCBpZnJhbWVJRCA9ICJpRnJhbWVGcm9tUHJldmFsZW50RG9tYWluIjsKLSAgICAgICAg
ZnVuY3Rpb24gYXNrRm9yUHJldmFsZW50UmVzb3VyY2VzKCkgewotICAgICAgICAgICAgdGVzdFJ1
bm5lci5nZXRQcmV2YWxlbnREb21haW5zKGZ1bmN0aW9uIChhcnJheU9mRG9tYWlucykgewotICAg
ICAgICAgICAgICAgIHZhciBwYXNzZWQgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IGFycmF5T2ZEb21haW5zLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmIChhcnJheU9mRG9tYWluc1tpXSA9PT0gImxvY2FsaG9zdCIpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHBhc3NlZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICBpZiAocGFzc2VkKQotICAgICAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJEb21h
aW4gd2FzIHN1Y2Nlc3NmdWxseSBtYXJrZWQgcHJldmFsZW50LiIpOwotICAgICAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiRG9tYWluIHdhcyBub3Qgc3Vj
Y2Vzc2Z1bGx5IG1hcmtlZCBwcmV2YWxlbnQuIik7Ci0gICAgICAgICAgICAgICAgZmluaXNoVGVz
dCgpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBhY3Rp
dmF0ZUVsZW1lbnQoZWxlbWVudElkKSB7Ci0gICAgICAgICAgICB2YXIgZWxlbWVudCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJZCk7Ci0gICAgICAgICAgICB2YXIgY2VudGVyWCA9
IGVsZW1lbnQub2Zmc2V0TGVmdCArIGVsZW1lbnQub2Zmc2V0V2lkdGggLyAyOwotICAgICAgICAg
ICAgdmFyIGNlbnRlclkgPSBlbGVtZW50Lm9mZnNldFRvcCArIGVsZW1lbnQub2Zmc2V0SGVpZ2h0
IC8gMjsKLSAgICAgICAgICAgIFVJSGVscGVyLmFjdGl2YXRlQXQoY2VudGVyWCwgY2VudGVyWSku
dGhlbigKLSAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7IH0sCi0gICAgICAgICAgICAgICAg
ZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJQcm9taXNlIHJl
amVjdGVkLiIpOwotICAgICAgICAgICAgICAgICAgICBmaW5pc2hUZXN0KCk7Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgKTsKLSAgICAgICAgICAgIGFza0ZvclByZXZhbGVudFJlc291
cmNlcygpOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKLSAgICAg
ICAgICAgIGlmIChkb2N1bWVudC5sb2NhdGlvbi5oYXNoICE9PSAiI2VsZW1lbnRBY3RpdmF0ZWQi
KSB7Ci0gICAgICAgICAgICAgICAgZG9jdW1lbnQubG9jYXRpb24uaGFzaCA9ICJlbGVtZW50QWN0
aXZhdGVkIjsKLSAgICAgICAgICAgICAgICBhY3RpdmF0ZUVsZW1lbnQoaWZyYW1lSUQpOwotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgY29uc3QgaG9zdFVuZGVyVGVzdCA9ICJs
b2NhbGhvc3Q6ODAwMCI7Ci0gICAgICAgIGNvbnN0IHN0YXRpc3RpY3NVcmwgPSAiaHR0cDovLyIg
KyBob3N0VW5kZXJUZXN0OwotICAgICAgICAKLSAgICAgICAgc2V0RW5hYmxlRmVhdHVyZSh0cnVl
LCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1ByZXZh
bGVudFJlc291cmNlKHN0YXRpc3RpY3NVcmwsIHRydWUsIGZ1bmN0aW9uKCkgewotICAgICAgICAg
ICAgICAgIGlmICghdGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShzdGF0
aXN0aWNzVXJsKSkKLSAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiSG9zdCBkaWQgbm90
IGdldCBzZXQgYXMgcHJldmFsZW50IHJlc291cmNlLiIpOwotCi0gICAgICAgICAgICAgICAgbGV0
IGlmcmFtZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTsKLSAgICAg
ICAgICAgICAgICBpZnJhbWVFbGVtZW50Lm9ubG9hZCA9IHJ1blRlc3Q7Ci0gICAgICAgICAgICAg
ICAgaWZyYW1lRWxlbWVudC5pZCA9ICJpRnJhbWVGcm9tUHJldmFsZW50RG9tYWluIjsKLSAgICAg
ICAgICAgICAgICBpZnJhbWVFbGVtZW50LnNyYyA9ICJodHRwOi8vbG9jYWxob3N0OjgwMDAvc3Rv
cmFnZUFjY2Vzcy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2Jhc2ljLWlmcmFtZS5odG1sIjsKLSAg
ICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGlmcmFtZUVsZW1lbnQpOwot
ICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOwotICAgIDwvc2NyaXB0PgotPC9oZWFkPgotPGJv
ZHk+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dlYnNvY2tldC93ZWItc29ja2V0LWxvYWRzLWNhcHR1cmVkLWluLXBlci1wYWdlLWRvbWFpbnMt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvd2ViLXNvY2tl
dC1sb2Fkcy1jYXB0dXJlZC1pbi1wZXItcGFnZS1kb21haW5zLWV4cGVjdGVkLnR4dAppbmRleCAx
ODM1NWJjYmJiOTdlMzQxMzI2OWRhMThmNDc2ZDM2NTU5OTIzMDMyLi40MzMyOWZiOWJiNTMzOGEz
NWJiZDhlZWQzNWI2NzEyM2Q3ZTI0ZjBjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3dlYnNvY2tldC93ZWItc29ja2V0LWxvYWRzLWNhcHR1cmVkLWluLXBlci1wYWdlLWRvbWFp
bnMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3dl
Yi1zb2NrZXQtbG9hZHMtY2FwdHVyZWQtaW4tcGVyLXBhZ2UtZG9tYWlucy1leHBlY3RlZC50eHQK
QEAgLTEsOSArMSw5IEBACi1FbnN1cmUgd2ViIHNvY2tldCBsb2FkcyBhcmUgY2FwdHVyZWQgYnkg
cGVyLXBhZ2UgcHJldmFsZW50IGRvbWFpbiBsb2dnaW5nLgorRW5zdXJlIHdlYiBzb2NrZXQgbG9h
ZHMgYXJlIHJlcG9ydGVkIGFzIGxvYWRlZCB0aGlyZCBwYXJ0eSBkb21haW5zLgogCiBPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCiAKIAotUEFTUyBEb21haW4gd2FzIHN1Y2Nlc3NmdWxseSBtYXJr
ZWQgcHJldmFsZW50LgorUEFTUyBMb2FkZWQgZG9tYWluIHdhcyBzdWNjZXNzZnVsbHkgY2FwdHVy
ZWQuCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3dlYi1zb2NrZXQtbG9h
ZHMtY2FwdHVyZWQtaW4tcGVyLXBhZ2UtZG9tYWlucy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy93ZWJzb2NrZXQvd2ViLXNvY2tldC1sb2Fkcy1jYXB0dXJlZC1pbi1wZXItcGFnZS1kb21h
aW5zLmh0bWwKaW5kZXggYzNmMWIxMzBjZjZjMWE1ODM4N2EyMjg3ZGQ3NDM0YzQyM2YwMzliMC4u
ZmFiNzM5MTgxZTkwM2EzM2EyNTNkZjYwZDIzYmNlNTExYTMzOWQwNSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvd2ViLXNvY2tldC1sb2Fkcy1jYXB0dXJlZC1p
bi1wZXItcGFnZS1kb21haW5zLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJz
b2NrZXQvd2ViLXNvY2tldC1sb2Fkcy1jYXB0dXJlZC1pbi1wZXItcGFnZS1kb21haW5zLmh0bWwK
QEAgLTUsMzQgKzUsMzAgQEAKIDwvaGVhZD4KIDxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KIDxz
Y3JpcHQ+Ci0gICAgZGVzY3JpcHRpb24oJ0Vuc3VyZSB3ZWIgc29ja2V0IGxvYWRzIGFyZSBjYXB0
dXJlZCBieSBwZXItcGFnZSBwcmV2YWxlbnQgZG9tYWluIGxvZ2dpbmcuJyk7CisgICAgZGVzY3Jp
cHRpb24oJ0Vuc3VyZSB3ZWIgc29ja2V0IGxvYWRzIGFyZSByZXBvcnRlZCBhcyBsb2FkZWQgdGhp
cmQgcGFydHkgZG9tYWlucy4nKTsKIAogICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsK
ICAgICAKICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCiAgICAgICAgIHRlc3RSdW5uZXIuc2V0
QWxsb3dzQW55U1NMQ2VydGlmaWNhdGUodHJ1ZSk7CiAKLSAgICBmdW5jdGlvbiBhc2tGb3JQcmV2
YWxlbnRSZXNvdXJjZXMoKSB7Ci0gICAgICAgIHRlc3RSdW5uZXIuZ2V0UHJldmFsZW50RG9tYWlu
cyhmdW5jdGlvbiAoYXJyYXlPZkRvbWFpbnMpIHsKKyAgICBmdW5jdGlvbiBhc2tGb3JMb2FkZWRU
aGlyZFBhcnR5RG9tYWlucygpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5nZXRMb2FkZWRUaGlyZFBh
cnR5RG9tYWlucyhmdW5jdGlvbiAoYXJyYXlPZkRvbWFpbnMpIHsKICAgICAgICAgICAgIGlmIChh
cnJheU9mRG9tYWlucy5sZW5ndGggPT0gMCkgewotICAgICAgICAgICAgICAgIGFza0ZvclByZXZh
bGVudFJlc291cmNlcygpOworICAgICAgICAgICAgICAgIGFza0ZvckxvYWRlZFRoaXJkUGFydHlE
b21haW5zKCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgaWYgKGFycmF5T2ZEb21haW5zLmluY2x1ZGVzKCJsb2NhbGhvc3QiKSkKLSAgICAgICAg
ICAgICAgICB0ZXN0UGFzc2VkKCJEb21haW4gd2FzIHN1Y2Nlc3NmdWxseSBtYXJrZWQgcHJldmFs
ZW50LiIpOworICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIkxvYWRlZCBkb21haW4gd2FzIHN1
Y2Nlc3NmdWxseSBjYXB0dXJlZC4iKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJEb21haW4gd2FzIG5vdCBzdWNjZXNzZnVsbHkgbWFya2VkIHByZXZhbGVu
dC4iKTsKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJMb2FkZWQgZG9tYWluIHdhcyBub3Qg
c3VjY2Vzc2Z1bGx5IGNhcHR1cmVkLiIpOwogICAgICAgICAgICAgc2V0RW5hYmxlRmVhdHVyZShm
YWxzZSwgZmluaXNoSlNUZXN0KTsKICAgICAgICAgfSk7CiAgICAgfQogCiAgICAgZnVuY3Rpb24g
cnVuVGVzdCgpIHsKLSAgICAgICAgc2V0RW5hYmxlRmVhdHVyZSh0cnVlLCBmdW5jdGlvbigpIHsK
LSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKCJo
dHRwOi8vbG9jYWxob3N0IiwgdHJ1ZSwgZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgICAgIG5l
dyBXZWJTb2NrZXQoJ3dzOi8vbG9jYWxob3N0Ojg4ODAvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2lt
cGxlJyk7Ci0gICAgICAgICAgICAgICAgc2V0VGltZW91dChhc2tGb3JQcmV2YWxlbnRSZXNvdXJj
ZXMsIDApOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOworICAgICAgICBuZXcgV2ViU29j
a2V0KCd3czovL2xvY2FsaG9zdDo4ODgwL3dlYnNvY2tldC90ZXN0cy9oeWJpL3NpbXBsZScpOwor
ICAgICAgICBzZXRUaW1lb3V0KGFza0ZvckxvYWRlZFRoaXJkUGFydHlEb21haW5zLCAwKTsKICAg
ICB9CiA8L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhw
ZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMKaW5k
ZXggMzI3ZTg1MTM0YmNkYzRmNWJhNDQ3OGNjY2MzNjAzNDI4YTdhMzhmMi4uNWQyMjdhZjMzNGRi
OGU0MGZkNzFiZGQ1YTRkM2E4YWRmMjgwYWZkYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9z
L1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTI3MjYsOCArMjcyNiw2IEBAIGh0dHAvdGVzdHMvcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy91c2VyLWludGVyYWN0aW9uLXJlcG9ydGVkLWFmdGVyLXdlYnNpdGUt
ZGF0YS1yCiB3ZWJraXQub3JnL2IvMTc0MTIwIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy91c2VyLWludGVyYWN0aW9uLWluLWNyb3NzLW9yaWdpbi1zdWItZnJhbWUtZGF0YWJhc2Uu
aHRtbCBbIFNraXAgXQogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3VzZXItaW50
ZXJhY3Rpb24tb25seS1yZXBvcnRlZC1vbmNlLXdpdGhpbi1zaG9ydC1wZXJpb2Qtb2YtdGltZS1k
YXRhYmFzZS5odG1sIFsgU2tpcCBdCiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mv
dXNlci1pbnRlcmFjdGlvbi1yZXBvcnRlZC1hZnRlci13ZWJzaXRlLWRhdGEtcmVtb3ZhbC1kYXRh
YmFzZS5odG1sIFsgU2tpcCBdCi1odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcHJl
dmFsZW50LWRvbWFpbnMtcGVyLXBhZ2UtZGF0YWJhc2UuaHRtbCBbIFNraXAgXQotaHR0cC90ZXN0
cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3ByZXZhbGVudC1kb21haW5zLXBlci1wYWdlLmh0bWwg
WyBTa2lwIF0KICMgU2tpcHBlZCBpbiBXSzIgZXhwZWN0YXRpb25zIGJlY2F1c2UgY29va2llIHBh
cnRpdGlvbmluZyBpcyBvbmx5IGF2YWlsYWJsZSBpbiBtYWNPUyBIaWdoIFNpZXJyYSBhbmQgaU9T
IDExLgogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2Nvb2tpZS1kZWxldGlvbi5o
dG1sIFsgUGFzcyBdCiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY29va2llcy13
aXRoLWFuZC13aXRob3V0LXVzZXItaW50ZXJhY3Rpb24uaHRtbCBbIFBhc3MgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393494</attachid>
            <date>2020-03-13 09:58:01 -0700</date>
            <delta_ts>2020-03-13 11:56:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209032-20200313095800.patch</filename>
            <type>text/plain</type>
            <size>52101</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4Mzc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmIwMjcxZGNlNTljMjcz
OGU5MGE0NDEzMGNhNjM1Mzk0MDlmY2UxNy4uMGVmZDM2ZDMwMmRmMTdlYjhiMTBlMGZiYTNiOGQy
NjM0OThhNDA1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIwLTAzLTEzICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIFJlcG9ydCBh
bGwgdGhpcmQgcGFydHkgbG9hZHMgb24gYSBwZXItcGFnZSBiYXNpcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5MDMyCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS82MDM5NzMyMz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvbG9hZGVk
LXJlZ2lzdHJhYmxlLWRvbWFpbnMtZ2V0LXJlcG9ydGVkLmh0bWwKKworICAgICAgICBVcGRhdGUg
bmFtaW5nIHRvIG1vcmUgYWNjdXJhdGVseSByZWZsZWN0IHRoZSBmdW5jdGlvbidzIHB1cnBvc2Uu
IEl0CisgICAgICAgIGlzIGNhcHR1cmluZyBhbmQgcmV0dXJuaW5nIGFsbCBsb2FkZWQgdGhpcmQg
cGFydHkgZG9tYWlucy4KKyAgICAgICAgCisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmNvbm5lY3QpOgorICAg
ICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIGxvYWRlci9SZXNv
dXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6d2lsbFNl
bmRSZXF1ZXN0SW50ZXJuYWwpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVx
dWVzdFJlc291cmNlKToKKwogMjAyMC0wMy0xMiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0
Lm9yZz4KIAogICAgICAgICBDcmFzaCBpbiBUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6cmVw
bGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCBlYjc5NTM5MjU2OWUxODhlZDE3MmQyMDk1ZGU5MGI3YmVjNGEwZWNm
Li5hZDc0Yjk3MDJiYTAxZGJhMzE1NTBlNzdkYjdlMWU5YmVlYzU2ZDhmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDUwIEBACisyMDIwLTAzLTEzICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlA
YXBwbGUuY29tPgorCisgICAgICAgIFJlcG9ydCBhbGwgdGhpcmQgcGFydHkgbG9hZHMgb24gYSBw
ZXItcGFnZSBiYXNpcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjA5MDMyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MDM5NzMyMz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBodHRwL3Rlc3Rz
L3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvbG9hZGVkLXJlZ2lzdHJhYmxlLWRvbWFpbnMtZ2V0LXJl
cG9ydGVkLmh0bWwKKworICAgICAgICBSZW1vdmVkIElQQyB0byB0aGUgTmV0d29yayBQcm9jZXNz
IGFza2luZyBpZiBhIHJlc291cmNlIGxvYWQgaXMgZnJvbQorICAgICAgICBhIHByZXZhbGVudCBk
b21haW4uIFRoaXMgbm93IHN0b3JlcyBhbmQgc2VuZHMgYWxsIGxvYWRlZCByZWdpc3RyYWJsZQor
ICAgICAgICBkb21haW5zLiBUaGlzIHBhdGNoIGlzIG1vc3RseSB1cGRhdGluZyBuYW1pbmcgdG8g
cmVmbGVjdCB0aGlzIGFuZAorICAgICAgICBkZWxldGluZyB0aGUgdW5uZWNlc3NhcnkgY29kZSB0
byBjb21tdW5pY2F0ZSB3aXRoIHRoZQorICAgICAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmlzUHJldmFsZW50U3VicmVzb3VyY2VMb2FkKTog
RGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJzaXRlRGF0YVN0b3JlLm1tOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX2dldExv
YWRlZFRoaXJkUGFydHlEb21haW5zRm9yOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAo
LVtXS1dlYnNpdGVEYXRhU3RvcmUgX2NsZWFyTG9hZGVkVGhpcmRQYXJ0eURvbWFpbnNGb3I6XSk6
CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfZ2V0UHJldmFsZW50RG9tYWluc0Zvcjpj
b21wbGV0aW9uSGFuZGxlcjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0
b3JlIF9jbGVhclByZXZhbGVudERvbWFpbnNGb3I6XSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmg6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6YWRk
TG9hZGVkVGhpcmRQYXJ0eURvbWFpbik6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVy
Q2xpZW50OjphZGRMb2FkZWRSZWdpc3RyYWJsZURvbWFpbik6IERlbGV0ZWQuCisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6ZGlkQ29tbWl0TG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmFkZExvYWRl
ZFRoaXJkUGFydHlEb21haW4pOgorICAgICAgICBBZGQgYSBjaGVjayB0aGF0IHRoaXMgaXMgYSB0
aGlyZCBwYXJ0eSBieSBjb21wYXJpbmcgdGhlIHRhcmdldCBkb21haW4KKyAgICAgICAgdG8gdGhl
IG1haW4gZnJhbWUgZG9tYWluLgorCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldExvYWRl
ZFRoaXJkUGFydHlEb21haW5zKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y2xlYXJMb2Fk
ZWRUaGlyZFBhcnR5RG9tYWlucyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmFkZExvYWRl
ZFJlZ2lzdHJhYmxlRG9tYWluKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
Z2V0UHJldmFsZW50RG9tYWlucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OmNsZWFyUHJldmFsZW50RG9tYWlucyk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbjoKKwogMjAyMC0wMy0xMiAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUu
Y29tPgogCiAgICAgICAgIFdlYlBhZ2VQcm94eTo6U2F2ZUltYWdlVG9MaWJyYXJ5IHNob3VsZCB2
YWxpZGF0ZSBpdHMgYGltYWdlU2l6ZWAgcGFyYW1ldGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCmluZGV4IDlkODM0YzI0YjllMDJlNDI2YTYy
ODFmYTJhYTMxMTk0NTYwMmUxNDguLmQ5NzdmYjhmYjVlN2IzN2Y2NDE0ODYzMWYzMjNhMzU0ZmUz
MWQ2ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJT
b2NrZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2Nr
ZXQuY3BwCkBAIC0zMjgsNyArMzI4LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gV2ViU29ja2V0Ojpj
b25uZWN0KGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcHIKICNpZiBF
TkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIGF1dG8gcmVwb3J0UmVnaXN0cmFi
bGVEb21haW4gPSBbZG9tYWluID0gUmVnaXN0cmFibGVEb21haW4obV91cmwpLmlzb2xhdGVkQ29w
eSgpXShhdXRvJiBjb250ZXh0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGF1dG8qIGZyYW1lID0g
ZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpLmZyYW1lKCkpCi0gICAgICAgICAgICBmcmFtZS0+
bG9hZGVyKCkuY2xpZW50KCkuYWRkTG9hZGVkUmVnaXN0cmFibGVEb21haW4oV1RGTW92ZShkb21h
aW4pKTsKKyAgICAgICAgICAgIGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5hZGRMb2FkZWRUaGly
ZFBhcnR5RG9tYWluKFdURk1vdmUoZG9tYWluKSk7CiAgICAgfTsKICAgICBpZiAoaXM8RG9jdW1l
bnQ+KGNvbnRleHQpKQogICAgICAgICByZXBvcnRSZWdpc3RyYWJsZURvbWFpbihjb250ZXh0KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggYWJhNjYyZDM0
ZDk2NzVkMmY3MmMyYjE3MGI3ZWMwYmE5YjljMDM3OC4uM2FmNWVmMTFmYTFlMTk5ZTE1NDk0ZDM5
YTcwZDEyMmIwM2QzZWZkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xp
ZW50LmgKQEAgLTM3NCw3ICszNzQsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0Vf
TE9BRF9TVEFUSVNUSUNTKQogICAgIHZpcnR1YWwgYm9vbCBoYXNGcmFtZVNwZWNpZmljU3RvcmFn
ZUFjY2VzcygpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2b2lkIGFkZExvYWRlZFJl
Z2lzdHJhYmxlRG9tYWluKFJlZ2lzdHJhYmxlRG9tYWluJiYpIHsgfQorICAgIHZpcnR1YWwgdm9p
ZCBhZGRMb2FkZWRUaGlyZFBhcnR5RG9tYWluKFJlZ2lzdHJhYmxlRG9tYWluJiYpIHsgfQogI2Vu
ZGlmCiAKICAgICB2aXJ0dWFsIEFsbG93c0NvbnRlbnRKYXZhU2NyaXB0IGFsbG93c0NvbnRlbnRK
YXZhU2NyaXB0RnJvbU1vc3RSZWNlbnROYXZpZ2F0aW9uKCkgY29uc3QgeyByZXR1cm4gQWxsb3dz
Q29udGVudEphdmFTY3JpcHQ6OlllczsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWRlci5jcHAKaW5kZXggODc2YzlkNTg1NzdjNzY0ZTMzNTU2ZjM2OTJlZWJmY2MwODhkMTJkOS4u
OWI0ZTdjZWI5OTliYmE3MjZkNGIyMGQzYTRjNzVlNjNjY2NjMWM5YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC00MTYsNyArNDE2LDcgQEAgdm9pZCBSZXNv
dXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWwoUmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCwgY29uc3QgUmUKICAgICBpZiAoaXNSZWRpcmVjdCkgewogICAgICAgICBwbGF0Zm9ybVN0
cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+Y3Jvc3NPcmlnaW5SZWRpcmVjdFJlY2VpdmVk
KHRoaXMsIHJlcXVlc3QudXJsKCkpOwogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJ
Q1MpCi0gICAgICAgIGZyYW1lTG9hZGVyKCktPmNsaWVudCgpLmFkZExvYWRlZFJlZ2lzdHJhYmxl
RG9tYWluKFJlZ2lzdHJhYmxlRG9tYWluKHJlcXVlc3QudXJsKCkpKTsKKyAgICAgICAgZnJhbWVM
b2FkZXIoKS0+Y2xpZW50KCkuYWRkTG9hZGVkVGhpcmRQYXJ0eURvbWFpbihSZWdpc3RyYWJsZURv
bWFpbihyZXF1ZXN0LnVybCgpKSk7CiAjZW5kaWYKICAgICB9CiAgICAgbV9yZXF1ZXN0ID0gcmVx
dWVzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXIuY3BwCmluZGV4IDVhZGM3ZGUzMmIxNDk2MWM1YTEzOWEwNzI0NDI3NmU1N2NiMDU1
YmEuLjdiY2NiZmM5MGZkOTM5Y2IzNzhhNjY3NzAwMTM3MTRkOGVjZTA5MGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcApA
QCAtOTkzLDcgKzk5Myw3IEBAIFJlc291cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxD
YWNoZWRSZXNvdXJjZT4+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1CiAgICAgQVNTRVJUKHJl
c291cmNlLT51cmwoKSA9PSB1cmwuc3RyaW5nKCkpOwogICAgIG1fZG9jdW1lbnRSZXNvdXJjZXMu
c2V0KHJlc291cmNlLT51cmwoKSwgcmVzb3VyY2UpOwogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FE
X1NUQVRJU1RJQ1MpCi0gICAgZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuYWRkTG9hZGVkUmVnaXN0
cmFibGVEb21haW4oUmVnaXN0cmFibGVEb21haW4ocmVzb3VyY2UtPnJlc291cmNlUmVxdWVzdCgp
LnVybCgpKSk7CisgICAgZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuYWRkTG9hZGVkVGhpcmRQYXJ0
eURvbWFpbihSZWdpc3RyYWJsZURvbWFpbihyZXNvdXJjZS0+cmVzb3VyY2VSZXF1ZXN0KCkudXJs
KCkpKTsKICNlbmRpZgogICAgIHJldHVybiByZXNvdXJjZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5jcHAKaW5kZXggMmNiOTljNWIwM2JkNTU2ZmU1MTgyOWQ2OWFlZGQwZDE5ZGIzNmRkNC4u
YzRiOWVjZTQ4NmU0ZDcwMGI2MDk0ZjM1ZWRkZWYxZDI1OGMyN2NhNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5jcHAKQEAgLTg2NSwxNyArODY1LDYgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihXZWJDb3JlOjpS
ZWcKICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnJlcXVlc3RTdG9yYWdlQWNj
ZXNzVW5kZXJPcGVuZXIoV1RGTW92ZShkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MpLCBvcGVu
ZXJQYWdlSUQsIFdURk1vdmUob3BlbmVyRG9tYWluKSk7CiAgICAgfQogfQotCi12b2lkIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjppc1ByZXZhbGVudFN1YnJlc291cmNlTG9hZChSZWdp
c3RyYWJsZURvbWFpbiYmIGRvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlz
LT5uZXR3b3JrU2Vzc2lvbigpKSB7Ci0gICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkgewotICAg
ICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+aXNQcmV2YWxlbnRSZXNvdXJjZShkb21h
aW4sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgfQotICAgIH0KLSAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7Ci19CiAjZW5kaWYK
IAogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6YWRkT3JpZ2luQWNjZXNzV2hp
dGVsaXN0RW50cnkoY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgZGVz
dGluYXRpb25Qcm90b2NvbCwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbkhvc3QsIGJvb2wgYWxs
b3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggYjc1
OWMyOWQyNGQ2NzlmYjkzMDQ5ZWQyYWI5YTQ0Y2U0ZjAxODc1MC4uMWY4NzMxMjc5YTQ2ZWI2ODc5
YzNjNWVhMjk0MGQyZjRkYjIyZTE5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtMjY2
LDcgKzI2Niw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IHRvcEZyYW1lRG9tYWluLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIHJl
cXVlc3RTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFp
biwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJQYWdlUHJveHlJZGVudGlm
aWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFu
dGVkLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmKTsKICAgICB2b2lk
IHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4mJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
IG9wZW5lclBhZ2VJRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBvcGVuZXJEb21haW4p
OwotICAgIHZvaWQgaXNQcmV2YWxlbnRTdWJyZXNvdXJjZUxvYWQoUmVnaXN0cmFibGVEb21haW4m
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAjZW5kaWYKIAogICAgIHZvaWQg
YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4s
IGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Qcm90b2NvbCwgY29uc3QgU3RyaW5nJiBkZXN0aW5h
dGlvbkhvc3QsIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggMjRmNWU1Yzg0YjdiYTM0YjY4NDE0
YmNjMDMzNWNkM2Y4ZGI0Y2I5OS4uNmZmN2E0MDg3MTBhZWUzYzEzYzhmYmM1NGZhMmNjZTRhODU2
NjBhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC02
Nyw3ICs2Nyw2IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIExl
Z2FjeVJlY2VpdmVyIHsKICAgICBIYXNTdG9yYWdlQWNjZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluIHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFt
ZURvbWFpbiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyIHBhZ2VJRCkgLT4gKGJvb2wgaGFzU3RvcmFnZUFjY2VzcykgQXN5bmMKICAgICBS
ZXF1ZXN0U3RvcmFnZUFjY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBzdWJGcmFtZURv
bWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9wRnJhbWVEb21haW4sIFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQYWdl
SUQsIFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCkgLT4gKGVu
dW06Ym9vbCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCB3YXNHcmFudGVkLCBlbnVt
OmJvb2wgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIHByb21wdFdhc1Nob3du
KSBBc3luYwogICAgIFJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4gZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciBvcGVuZXJQYWdlSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIG9wZW5l
ckRvbWFpbikKLSAgICBJc1ByZXZhbGVudFN1YnJlc291cmNlTG9hZChXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiBkb21haW4pIC0+IChib29sIGlzUHJldmFsZW50KSBBc3luYwogI2VuZGlmCiAK
ICAgICBBZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShTdHJpbmcgc291cmNlT3JpZ2luLCBT
dHJpbmcgZGVzdGluYXRpb25Qcm90b2NvbCwgU3RyaW5nIGRlc3RpbmF0aW9uSG9zdCwgYm9vbCBh
bGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQppbmRleCA4NGRjMmM4OGZk
Nzc5OTlkNTEwNzYzYzY3OWZiMzQ3ZDNjYTNiNTUyLi42ZTU3OGUwM2RlMjMyMDQwMTU5MzkxZTUz
YWQ1MjA0NzBiYWJiMDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KQEAgLTM5MCw3ICszOTAsNyBAQCArICh2
b2lkKV9hbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnMKICAgICBXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmU6OmFsbG93V2Vic2l0ZURhdGFSZWNvcmRzRm9yQWxsT3JpZ2lucygpOwog
fQogCi0tICh2b2lkKV9nZXRQcmV2YWxlbnREb21haW5zRm9yOihXS1dlYlZpZXcgKil3ZWJWaWV3
IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU0FycmF5PE5TU3RyaW5nICo+ICpkb21haW5z
KSljb21wbGV0aW9uSGFuZGxlcgorLSAodm9pZClfbG9hZGVkVGhpcmRQYXJ0eURvbWFpbnNGb3I6
KFdLV2ViVmlldyAqKXdlYlZpZXcgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TQXJyYXk8
TlNTdHJpbmcgKj4gKmRvbWFpbnMpKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAjaWYgRU5BQkxFKFJF
U09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBpZiAoIXdlYlZpZXcpIHsKQEAgLTQwNCw4ICs0
MDQsOCBAQCAtICh2b2lkKV9nZXRQcmV2YWxlbnREb21haW5zRm9yOihXS1dlYlZpZXcgKil3ZWJW
aWV3IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKQogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIAotICAgIHdlYlBhZ2VQcm94eS0+Z2V0UHJldmFsZW50RG9tYWlucyhbY29tcGxldGlvbkhh
bmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoVmVjdG9yPFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluPiYmIHByZXZhbGVudERvbWFpbnMpIHsKLSAgICAgICAgVmVjdG9y
PFJlZlB0cjxBUEk6Ok9iamVjdD4+IGFwaURvbWFpbnMgPSBXVEY6Om1hcChwcmV2YWxlbnREb21h
aW5zLCBbXShhdXRvJiBkb21haW4pIHsKKyAgICB3ZWJQYWdlUHJveHktPmxvYWRlZFRoaXJkUGFy
dHlEb21haW5zKFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFu
ZGxlcildIChWZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiYgbG9hZGVkVGhpcmRQ
YXJ0eURvbWFpbnMpIHsKKyAgICAgICAgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+IGFwaURv
bWFpbnMgPSBXVEY6Om1hcChsb2FkZWRUaGlyZFBhcnR5RG9tYWlucywgW10oYXV0byYgZG9tYWlu
KSB7CiAgICAgICAgICAgICByZXR1cm4gUmVmUHRyPEFQSTo6T2JqZWN0PihBUEk6OlN0cmluZzo6
Y3JlYXRlKFdURk1vdmUoZG9tYWluLnN0cmluZygpKSkpOwogICAgICAgICB9KTsKICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIod3JhcHBlcihBUEk6OkFycmF5OjpjcmVhdGUoV1RGTW92ZShhcGlE
b21haW5zKSkpKTsKQEAgLTQxNSw3ICs0MTUsNyBAQCAtICh2b2lkKV9nZXRQcmV2YWxlbnREb21h
aW5zRm9yOihXS1dlYlZpZXcgKil3ZWJWaWV3IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKQog
I2VuZGlmCiB9CiAKLS0gKHZvaWQpX2NsZWFyUHJldmFsZW50RG9tYWluc0ZvcjooV0tXZWJWaWV3
ICopd2ViVmlldworLSAodm9pZClfY2xlYXJMb2FkZWRUaGlyZFBhcnR5RG9tYWluc0ZvcjooV0tX
ZWJWaWV3ICopd2ViVmlldwogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1Mp
CiAgICAgaWYgKCF3ZWJWaWV3KQpAQCAtNDI1LDcgKzQyNSw3IEBAIC0gKHZvaWQpX2NsZWFyUHJl
dmFsZW50RG9tYWluc0ZvcjooV0tXZWJWaWV3ICopd2ViVmlldwogICAgIGlmICghd2ViUGFnZVBy
b3h5KQogICAgICAgICByZXR1cm47CiAKLSAgICB3ZWJQYWdlUHJveHktPmNsZWFyUHJldmFsZW50
RG9tYWlucygpOworICAgIHdlYlBhZ2VQcm94eS0+Y2xlYXJMb2FkZWRUaGlyZFBhcnR5RG9tYWlu
cygpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCmluZGV4IGVkZTc1OGYw
NDAxNDJmNDVhY2I3ZTVkZGIyMWNlODM3ODBkYWIzZmEuLmYzYmMyN2Q0MzEyNTYxMTVhYjhmZTFh
M2Q5OGFjZDE2YmE5NThmNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaApAQCAtNjEsOCAr
NjEsOCBAQCB0eXBlZGVmIE5TX09QVElPTlMoTlNVSW50ZWdlciwgX1dLV2Vic2l0ZURhdGFTdG9y
ZUZldGNoT3B0aW9ucykgewogCiAtICh2b2lkKV9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVz
dGluZ0NhbGxiYWNrOihudWxsYWJsZSB2b2lkICheKShXS1dlYnNpdGVEYXRhU3RvcmUgKiwgTlNT
dHJpbmcgKikpY2FsbGJhY2sgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMyksIGlvcygxMS4w
KSk7CiAtICh2b2lkKV9nZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllc0ZvcjooV0tXZWJWaWV3ICop
d2ViVmlldyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNBcnJheTxOU1N0cmluZyAqPiAq
ZG9tYWlucykpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNCks
IGlvcygxMi4wKSk7Ci0tICh2b2lkKV9nZXRQcmV2YWxlbnREb21haW5zRm9yOihXS1dlYlZpZXcg
Kil3ZWJWaWV3IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU0FycmF5PE5TU3RyaW5nICo+
ICpkb21haW5zKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01B
Q19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwotLSAodm9pZClfY2xlYXJQcmV2YWxlbnREb21haW5z
Rm9yOihXS1dlYlZpZXcgKil3ZWJWaWV3IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RC
QSksIGlvcyhXS19JT1NfVEJBKSk7CistICh2b2lkKV9sb2FkZWRUaGlyZFBhcnR5RG9tYWluc0Zv
cjooV0tXZWJWaWV3ICopd2ViVmlldyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNBcnJh
eTxOU1N0cmluZyAqPiAqZG9tYWlucykpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJM
RShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKHZvaWQpX2NsZWFyTG9h
ZGVkVGhpcmRQYXJ0eURvbWFpbnNGb3I6KFdLV2ViVmlldyAqKXdlYlZpZXcgV0tfQVBJX0FWQUlM
QUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIC0gKHZvaWQpX2dldFdl
YlZpZXdDYXRlZ29yeUZvcjooV0tXZWJWaWV3ICopd2ViVmlldyBjb21wbGV0aW9uSGFuZGxlcjoo
dm9pZCAoXikoX1dLV2ViVmlld0NhdGVnb3J5IGNhdGVnb3J5KSljb21wbGV0aW9uSGFuZGxlciBX
S19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogKyAo
dm9pZClfYWxsb3dXZWJzaXRlRGF0YVJlY29yZHNGb3JBbGxPcmlnaW5zIFdLX0FQSV9BVkFJTEFC
TEUobWFjb3MoMTAuMTMuNCksIGlvcygxMS4zKSk7CiAtIChib29sKV9oYXNSZWdpc3RlcmVkU2Vy
dmljZVdvcmtlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE0KSwgaW9zKDEyLjApKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDUzOGZhNTc2ZTIxYWQy
NDk4ZWM4M2QxMTkyMGFhZmE5MGUyZTJiZWYuLjIxMTU0M2M3YjA4Mzk4MmQ2MTdiYWM3MTQ0YmUw
MTJjMTY5MmQ2NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApA
QCAtOTk0NywxNCArOTk0NywxNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0T3JpZW50YXRpb25G
b3JNZWRpYUNhcHR1cmUodWludDY0X3Qgb3JpZW50YXRpb24pCiB9CiAKICNpZiBFTkFCTEUoUkVT
T1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotdm9pZCBXZWJQYWdlUHJveHk6OmdldFByZXZhbGVudERv
bWFpbnMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+JiYp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYWdlUHJveHk6OmxvYWRlZFRoaXJkUGFy
dHlEb21haW5zKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWlu
PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVz
c2FnZXM6OldlYlBhZ2U6OkdldFByZXZhbGVudERvbWFpbnMoKSwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6TG9h
ZGVkVGhpcmRQYXJ0eURvbWFpbnMoKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQog
Ci12b2lkIFdlYlBhZ2VQcm94eTo6Y2xlYXJQcmV2YWxlbnREb21haW5zKCkKK3ZvaWQgV2ViUGFn
ZVByb3h5OjpjbGVhckxvYWRlZFRoaXJkUGFydHlEb21haW5zKCkKIHsKLSAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpDbGVhclByZXZhbGVudERvbWFpbnMoKSk7CisgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6Q2xlYXJMb2FkZWRUaGlyZFBhcnR5RG9tYWlucygpKTsKIH0KICNlbmRpZgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDk3OTdmOGQyNzA2ODhl
Y2VmZjg0OGNiYjQ1MTNmMmM1YmJmYWIyYjEuLjkyY2ZjNGNmNDQzMTZmZTgxNmQ3NGQ4MTEzYjFl
YWQ5YmE1NTU3MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0x
NTY3LDggKzE1NjcsOCBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElT
VElDUykKICAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzQ29uZmlybShjb25zdCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIGRpZENvbW1pdENyb3Nz
U2l0ZUxvYWRXaXRoRGF0YVRyYW5zZmVyRnJvbVByZXZhbGVudFJlc291cmNlKCk7Ci0gICAgdm9p
ZCBnZXRQcmV2YWxlbnREb21haW5zKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYmKT4mJik7Ci0gICAgdm9pZCBjbGVhclByZXZhbGVudERv
bWFpbnMoKTsKKyAgICB2b2lkIGxvYWRlZFRoaXJkUGFydHlEb21haW5zKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYmKT4mJik7CisgICAg
dm9pZCBjbGVhckxvYWRlZFRoaXJkUGFydHlEb21haW5zKCk7CiAjZW5kaWYKIAogI2lmIEVOQUJM
RShERVZJQ0VfT1JJRU5UQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRl
eCAwNzY4OGVjN2RiMGRiY2IxZTliNDZkMjkwOThjZDFiYmU5YmIzOWM1Li5jYjJhYmUzYzIwMTVm
YmNiYmYwZWU1OWUxMjUxMzYwNjM5YzQ2NjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHAKQEAgLTE0OSwxMyArMTQ5LDEzIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNl
dEhhc0ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzKEZyYW1lU3BlY2lmaWNTdG9yYWdlCiAgICAg
bV9mcmFtZVNwZWNpZmljU3RvcmFnZUFjY2Vzc0lkZW50aWZpZXIgPSBXVEZNb3ZlKGZyYW1lU3Bl
Y2lmaWNTdG9yYWdlQWNjZXNzSWRlbnRpZmllcik7CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmFkZExvYWRlZFJlZ2lzdHJhYmxlRG9tYWluKFJlZ2lzdHJhYmxlRG9tYWluJiYgZG9t
YWluKQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6YWRkTG9hZGVkVGhpcmRQYXJ0eURvbWFp
bihSZWdpc3RyYWJsZURvbWFpbiYmIGRvbWFpbikKIHsKICAgICBhdXRvKiB3ZWJQYWdlID0gbV9m
cmFtZS0+cGFnZSgpOwogICAgIGlmICghd2ViUGFnZSkKICAgICAgICAgcmV0dXJuOwogICAgIAot
ICAgIHdlYlBhZ2UtPmFkZExvYWRlZFJlZ2lzdHJhYmxlRG9tYWluKFdURk1vdmUoZG9tYWluKSk7
CisgICAgd2ViUGFnZS0+YWRkTG9hZGVkVGhpcmRQYXJ0eURvbWFpbihXVEZNb3ZlKGRvbWFpbikp
OwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggYjA1OGU2MmE0
NGNiNjljMTc2OTM3NGI3ZGZkYmViYTAzZjQyNTUyMC4uZGQ2MjY5NmI2OGJmM2NhN2MzZTQyOGE3
NTlkMjM0ZTM3NzYxNmE1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTYwLDcg
KzYwLDcgQEAgcHVibGljOgogICAgICAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQ7
CiAgICAgfTsKICAgICB2b2lkIHNldEhhc0ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzKEZyYW1l
U3BlY2lmaWNTdG9yYWdlQWNjZXNzSWRlbnRpZmllciYmKTsKLSAgICB2b2lkIGFkZExvYWRlZFJl
Z2lzdHJhYmxlRG9tYWluKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYpIGZpbmFsOworICAg
IHZvaWQgYWRkTG9hZGVkVGhpcmRQYXJ0eURvbWFpbihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biYmKSBmaW5hbDsKICNlbmRpZgogCiAgICAgV2ViQ29yZTo6QWxsb3dzQ29udGVudEphdmFTY3Jp
cHQgYWxsb3dzQ29udGVudEphdmFTY3JpcHRGcm9tTW9zdFJlY2VudE5hdmlnYXRpb24oKSBjb25z
dCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
aW5kZXggYWVmMjg1OTU4MTUyOTI3YjAwNWU5NTc1N2JiNjkwNzVkMmE3OWVjZS4uMjhmNTI0NzU1
MGRmMzY1NDcwZDFhMTZlYTQxZWJlZjcwNGY0YjQ1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTU4NTgsNyArNTg1OCw3IEBAIHZvaWQgV2Vi
UGFnZTo6ZGlkQ29tbWl0TG9hZChXZWJGcmFtZSogZnJhbWUpCiAgICAgICAgIHJldHVybjsKIAog
I2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgY2xlYXJQcmV2YWxlbnRE
b21haW5zKCk7CisgICAgY2xlYXJMb2FkZWRUaGlyZFBhcnR5RG9tYWlucygpOwogI2VuZGlmCiAg
ICAgCiAgICAgLy8gSWYgcHJldmlvdXMgVVJMIGlzIGludmFsaWQsIHRoZW4gaXQncyBub3QgYSBy
ZWFsIHBhZ2UgdGhhdCdzIGJlaW5nIG5hdmlnYXRlZCBhd2F5IGZyb20uCkBAIC02Njk1LDI2ICs2
Njk1LDIwIEBAIHZvaWQgV2ViUGFnZTo6d2FzTG9hZGVkV2l0aERhdGFUcmFuc2ZlckZyb21QcmV2
YWxlbnRSZXNvdXJjZSgpCiAgICAgZnJhbWUtPmRvY3VtZW50KCktPndhc0xvYWRlZFdpdGhEYXRh
VHJhbnNmZXJGcm9tUHJldmFsZW50UmVzb3VyY2UoKTsKIH0KIAotdm9pZCBXZWJQYWdlOjphZGRM
b2FkZWRSZWdpc3RyYWJsZURvbWFpbihSZWdpc3RyYWJsZURvbWFpbiYmIGRvbWFpbikKK3ZvaWQg
V2ViUGFnZTo6YWRkTG9hZGVkVGhpcmRQYXJ0eURvbWFpbihSZWdpc3RyYWJsZURvbWFpbiYmIHRh
cmdldERvbWFpbikKIHsKLSAgICBhdXRvIGFkZFJlc3VsdCA9IG1fbG9hZGVkRG9tYWlucy5hZGQo
ZG9tYWluKTsKLSAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpIHsKLSAgICAgICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVj
dGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OklzUHJldmFsZW50U3VicmVzb3VyY2VMb2FkKGRvbWFpbiksIFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGRvbWFpbl0gKGJvb2wgaXNQcmV2YWxlbnQpIHsK
LSAgICAgICAgICAgIGlmIChpc1ByZXZhbGVudCkKLSAgICAgICAgICAgICAgICBtX3ByZXZhbGVu
dERvbWFpbnMuYWRkKGRvbWFpbik7Ci0gICAgICAgIH0pOwotICAgIH0KKyAgICBpZiAodGFyZ2V0
RG9tYWluICE9IFJlZ2lzdHJhYmxlRG9tYWluKG1haW5XZWJGcmFtZSgpLT51cmwoKSkpCisgICAg
ICAgIG1fbG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMuYWRkKHRhcmdldERvbWFpbik7CiB9CiAKLXZv
aWQgV2ViUGFnZTo6Z2V0UHJldmFsZW50RG9tYWlucyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZl
Y3RvcjxSZWdpc3RyYWJsZURvbWFpbj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQ
YWdlOjpsb2FkZWRUaGlyZFBhcnR5RG9tYWlucyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3Rv
cjxSZWdpc3RyYWJsZURvbWFpbj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGNvbXBs
ZXRpb25IYW5kbGVyKGNvcHlUb1ZlY3RvcihtX3ByZXZhbGVudERvbWFpbnMpKTsKKyAgICBjb21w
bGV0aW9uSGFuZGxlcihjb3B5VG9WZWN0b3IobV9sb2FkZWRUaGlyZFBhcnR5RG9tYWlucykpOwog
fQogCi12b2lkIFdlYlBhZ2U6OmNsZWFyUHJldmFsZW50RG9tYWlucygpCit2b2lkIFdlYlBhZ2U6
OmNsZWFyTG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMoKQogewotICAgIG1fcHJldmFsZW50RG9tYWlu
cy5jbGVhcigpOwotICAgIG1fbG9hZGVkRG9tYWlucy5jbGVhcigpOworICAgIG1fbG9hZGVkVGhp
cmRQYXJ0eURvbWFpbnMuY2xlYXIoKTsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggMGMwNWJmYWY4N2Y4NGM5YjM0NmQ2NDRhYTNk
MTk4M2NmOGNiODc2ZS4uMDFlNDgzYjc2ZmJkZTQzODZmOWYwMjExMmRhNWYyMjJkZDlmNTZhYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTE4Nyw5
ICsxMTg3LDkgQEAgcHVibGljOgogICAgIGJvb2wgaGFzUGFnZUxldmVsU3RvcmFnZUFjY2Vzcyhj
b25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgdG9wTGV2ZWxEb21haW4sIGNvbnN0IFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbikgY29uc3Q7CiAgICAgdm9p
ZCBhZGREb21haW5XaXRoUGFnZUxldmVsU3RvcmFnZUFjY2Vzcyhjb25zdCBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiYgdG9wTGV2ZWxEb21haW4sIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluJiByZXNvdXJjZURvbWFpbik7CiAgICAgdm9pZCB3YXNMb2FkZWRXaXRoRGF0YVRyYW5z
ZmVyRnJvbVByZXZhbGVudFJlc291cmNlKCk7Ci0gICAgdm9pZCBhZGRMb2FkZWRSZWdpc3RyYWJs
ZURvbWFpbihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmKTsKLSAgICB2b2lkIGNsZWFyUHJl
dmFsZW50RG9tYWlucygpOwotICAgIHZvaWQgZ2V0UHJldmFsZW50RG9tYWlucyhDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4pPiYmKTsKKyAg
ICB2b2lkIGFkZExvYWRlZFRoaXJkUGFydHlEb21haW4oV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4mJik7CisgICAgdm9pZCBjbGVhckxvYWRlZFRoaXJkUGFydHlEb21haW5zKCk7CisgICAgdm9p
ZCBsb2FkZWRUaGlyZFBhcnR5RG9tYWlucyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4pPiYmKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKERF
VklDRV9PUklFTlRBVElPTikKQEAgLTIwNjMsOCArMjA2Myw3IEBAIHByaXZhdGU6CiAKICNpZiBF
TkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIEhhc2hNYXA8V2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBtX2RvbWFpbnNXaXRo
UGFnZUxldmVsU3RvcmFnZUFjY2VzczsKLSAgICBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluPiBtX2xvYWRlZERvbWFpbnM7Ci0gICAgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbj4gbV9wcmV2YWxlbnREb21haW5zOworICAgIEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4+IG1fbG9hZGVkVGhpcmRQYXJ0eURvbWFpbnM7CiAjZW5kaWYKIAogICAgIFN0
cmluZyBtX292ZXJyaWRkZW5NZWRpYVR5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCBlNjAxY2ZmNzJiMzRiZjA0
ZDBlMDNhYWFjNTViZjZlYWIzNWQ5OTJkLi4wZmVmZmY1Njk2OTkwMmQyYWY1ZTdlYTk1ODU2MjNl
NGFlMjFlOTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTU3Nyw4ICs1NzcsOCBAQCBHZW5lcmF0ZVN5bnRoZXRp
Y0VkaXRpbmdDb21tYW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21t
YW5kVHlwZQogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBXYXNM
b2FkZWRXaXRoRGF0YVRyYW5zZmVyRnJvbVByZXZhbGVudFJlc291cmNlKCkKLSAgICBDbGVhclBy
ZXZhbGVudERvbWFpbnMoKQotICAgIEdldFByZXZhbGVudERvbWFpbnMoKSAtPiAoVmVjdG9yPFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5zKSBBc3luYworICAgIENsZWFyTG9hZGVk
VGhpcmRQYXJ0eURvbWFpbnMoKQorICAgIExvYWRlZFRoaXJkUGFydHlEb21haW5zKCkgLT4gKFZl
Y3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gZG9tYWlucykgQXN5bmMKICNlbmRpZgog
CiAjaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDJmYTk0OGQwM2UwNTgyMzQ0MjkzNWQwYjJmMmRmNDc1NjBm
N2NiNjkuLmZmN2U2MWZhMjUyYTE1NTM2ZTIwZWFiZThlYzY2YjM5YzhmOWVkYzggMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MSBA
QAorMjAyMC0wMy0xMyAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4K
KworICAgICAgICBSZXBvcnQgYWxsIHRoaXJkIHBhcnR5IGxvYWRzIG9uIGEgcGVyLXBhZ2UgYmFz
aXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTAz
MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjAzOTczMjM+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW9zdGx5IG5hbWluZyB1cGRhdGVzIHRvIHJl
ZmxlY3QgdGhlIGNoYW5nZSBpbiB1c2UgZm9yIHRoaXMgU1BJIGNhbGwuCisgICAgICAgIEl0IG5v
dyByZXR1cm5zIGFsbCBsb2FkZWQgdGhpcmQgcGFydHkgZG9tYWlucywgbm90IGp1c3QgcHJldmFs
ZW50IG9uZXMuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0Jp
bmRpbmdzL1Rlc3RSdW5uZXIuaWRsOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRs
ZTo6ZGlkUmVjZWl2ZU1lc3NhZ2VUb1BhZ2UpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6
OmdldExvYWRlZFRoaXJkUGFydHlEb21haW5zKToKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6
Y2FsbERpZFJlY2VpdmVMb2FkZWRUaGlyZFBhcnR5RG9tYWluc0NhbGxiYWNrKToKKyAgICAgICAg
KFdUUjo6VGVzdFJ1bm5lcjo6Z2V0UHJldmFsZW50RG9tYWlucyk6IERlbGV0ZWQuCisgICAgICAg
IChXVFI6OlRlc3RSdW5uZXI6OmNhbGxEaWRSZWNlaXZlUHJldmFsZW50RG9tYWluc0NhbGxiYWNr
KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rl
c3RSdW5uZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3RlbnRW
YWx1ZXMpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Z2V0TG9hZGVkVGhpcmRQYXJ0
eURvbWFpbnMpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Y2xlYXJMb2FkZWRUaGly
ZFBhcnR5RG9tYWlucyk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpnZXRQcmV2YWxl
bnREb21haW5zKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmNsZWFy
UHJldmFsZW50RG9tYWlucyk6IERlbGV0ZWQuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRp
b24uY3BwOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2VG
cm9tSW5qZWN0ZWRCdW5kbGUpOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkUmVj
ZWl2ZUxvYWRlZFRoaXJkUGFydHlEb21haW5zKToKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRp
b246OmRpZFJlY2VpdmVQcmV2YWxlbnREb21haW5zKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJv
bGxlcjo6Z2V0TG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMpOgorICAgICAgICAoV1RSOjpUZXN0Q29u
dHJvbGxlcjo6Y2xlYXJMb2FkZWRUaGlyZFBhcnR5RG9tYWlucyk6CisgICAgICAgIChXVFI6OlRl
c3RDb250cm9sbGVyOjpnZXRQcmV2YWxlbnREb21haW5zKTogRGVsZXRlZC4KKyAgICAgICAgKFdU
Ujo6VGVzdENvbnRyb2xsZXI6OmNsZWFyUHJldmFsZW50RG9tYWlucyk6IERlbGV0ZWQuCisKIDIw
MjAtMDMtMTIgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQ3Jh
c2ggaW4gVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OnJlcGxhY2UKZGlmZiAtLWdpdCBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5p
ZGwgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RS
dW5uZXIuaWRsCmluZGV4IDEzMDI3MTBmNjRlNWI3OTM4NWQwM2E5NjIyYjZlNmRiZmZkZTk2ZDIu
LjFlOTdjNjZiNzhmZTUxZTc0YTliNGZjNWYzN2IzYWZhM2Y0ZTU3ZTggMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5p
ZGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9U
ZXN0UnVubmVyLmlkbApAQCAtMzQ1LDcgKzM0NSw3IEBAIGludGVyZmFjZSBUZXN0UnVubmVyIHsK
ICAgICB2b2lkIHNldFN0YXRpc3RpY3NTaG91bGREb3duZ3JhZGVSZWZlcnJlcihib29sZWFuIHZh
bHVlLCBvYmplY3QgY2FsbGJhY2spOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc1Nob3VsZEJsb2Nr
VGhpcmRQYXJ0eUNvb2tpZXMoYm9vbGVhbiB2YWx1ZSwgb2JqZWN0IGNhbGxiYWNrLCBvcHRpb25h
bCBib29sZWFuIG9ubHlPblNpdGVzV2l0aG91dFVzZXJJbnRlcmFjdGlvbik7CiAgICAgdm9pZCBz
ZXRTdGF0aXN0aWNzRmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUoYm9vbGVhbiB2YWx1
ZSwgb2JqZWN0IGNhbGxiYWNrKTsKLSAgICB2b2lkIGdldFByZXZhbGVudERvbWFpbnMob2JqZWN0
IGNhbGxiYWNrKTsKKyAgICB2b2lkIGxvYWRlZFRoaXJkUGFydHlEb21haW5zKG9iamVjdCBjYWxs
YmFjayk7CiAKICAgICAvLyBJbmplY3RlZCBidW5kbGUgZm9ybSBjbGllbnQuCiAgICAgdm9pZCBp
bnN0YWxsVGV4dERpZENoYW5nZUluVGV4dEZpZWxkQ2FsbGJhY2sob2JqZWN0IGNhbGxiYWNrKTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGUuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZS5jcHAKaW5kZXggMDBjOWU3NTMyODdiMDdkYTY0ZjM4YjU3ZTZhYmFiYzVkZGE5
N2FhMS4uYTJiOGY3YWU4Y2E5OGNjNWJmZjgzNTUzMGJiMTMzM2VhZTI4YzU4NyAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5j
cHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZS5jcHAKQEAgLTQxNSw3ICs0MTUsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpkaWRSZWNl
aXZlTWVzc2FnZVRvUGFnZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgbQogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhD
U3RyaW5nKG1lc3NhZ2VOYW1lLCAiQ2FsbERpZFJlY2VpdmVQcmV2YWxlbnREb21haW5zIikpIHsK
KyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkNhbGxE
aWRSZWNlaXZlTG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMiKSkgewogICAgICAgICBBU1NFUlQobWVz
c2FnZUJvZHkpOwogICAgICAgICBBU1NFUlQoV0tHZXRUeXBlSUQobWVzc2FnZUJvZHkpID09IFdL
QXJyYXlHZXRUeXBlSUQoKSk7CiAKQEAgLTQyOSw3ICs0MjksNyBAQCB2b2lkIEluamVjdGVkQnVu
ZGxlOjpkaWRSZWNlaXZlTWVzc2FnZVRvUGFnZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tTdHJp
bmdSZWYgbQogICAgICAgICAgICAgICAgIGRvbWFpbnMudW5jaGVja2VkQXBwZW5kKHRvV1RGU3Ry
aW5nKHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihpdGVtKSkpOwogICAgICAgICB9CiAKLSAgICAg
ICAgbV90ZXN0UnVubmVyLT5jYWxsRGlkUmVjZWl2ZVByZXZhbGVudERvbWFpbnNDYWxsYmFjayhX
VEZNb3ZlKGRvbWFpbnMpKTsKKyAgICAgICAgbV90ZXN0UnVubmVyLT5jYWxsRGlkUmVjZWl2ZUxv
YWRlZFRoaXJkUGFydHlEb21haW5zQ2FsbGJhY2soV1RGTW92ZShkb21haW5zKSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAppbmRleCAyZTk4Y2Y1ZDU2YWUxNmExY2YwNjI2
MWQ0OTIwZDhjZmY2ZmNkMzliLi43YjdhMDNmYzBlNDUxMDk3MjQ4NDdjNjEwZTUzMDY5Mjc4MjVj
OWM0IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rl
c3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
VGVzdFJ1bm5lci5jcHAKQEAgLTc1NCw3ICs3NTQsNyBAQCBlbnVtIHsKICAgICBTdGF0aXN0aWNz
RGlkU2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0NhbGxiYWNrSUQsCiAgICAgU3RhdGlz
dGljc0RpZFNldEZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlQ2FsbGJhY2tJRCwKICAg
ICBBbGxTdG9yYWdlQWNjZXNzRW50cmllc0NhbGxiYWNrSUQsCi0gICAgR2V0UHJldmFsZW50RG9t
YWluc0NhbGxiYWNrSUQsCisgICAgTG9hZGVkVGhpcmRQYXJ0eURvbWFpbnNDYWxsYmFja0lELAog
ICAgIERpZFJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFsc0NhbGxiYWNrSUQsCiAgICAgR2V0QXBw
bGljYXRpb25NYW5pZmVzdENhbGxiYWNrSUQsCiAgICAgVGV4dERpZENoYW5nZUluVGV4dEZpZWxk
Q2FsbGJhY2tJRCwKQEAgLTIzNTUsMTUgKzIzNTUsMTUgQEAgdm9pZCBUZXN0UnVubmVyOjpjYWxs
RGlkUmVjZWl2ZUFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzQ2FsbGJhY2soVmVjdG9yPFN0cmluZz4m
IGQKICAgICBjYWxsVGVzdFJ1bm5lckNhbGxiYWNrKEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzQ2Fs
bGJhY2tJRCwgMSwgJnJlc3VsdCk7CiB9CiAKLXZvaWQgVGVzdFJ1bm5lcjo6Z2V0UHJldmFsZW50
RG9tYWlucyhKU1ZhbHVlUmVmIGNhbGxiYWNrKQordm9pZCBUZXN0UnVubmVyOjpsb2FkZWRUaGly
ZFBhcnR5RG9tYWlucyhKU1ZhbHVlUmVmIGNhbGxiYWNrKQogewotICAgIGNhY2hlVGVzdFJ1bm5l
ckNhbGxiYWNrKEdldFByZXZhbGVudERvbWFpbnNDYWxsYmFja0lELCBjYWxsYmFjayk7CisgICAg
Y2FjaGVUZXN0UnVubmVyQ2FsbGJhY2soTG9hZGVkVGhpcmRQYXJ0eURvbWFpbnNDYWxsYmFja0lE
LCBjYWxsYmFjayk7CiAgICAgCi0gICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VO
YW1lID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiR2V0UHJldmFsZW50
RG9tYWlucyIpKTsKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUgPSBh
ZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJMb2FkZWRUaGlyZFBhcnR5RG9t
YWlucyIpKTsKICAgICBXS0J1bmRsZVBvc3RNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0
b24oKS5idW5kbGUoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG51bGxwdHIpOwogfQogCi12b2lkIFRl
c3RSdW5uZXI6OmNhbGxEaWRSZWNlaXZlUHJldmFsZW50RG9tYWluc0NhbGxiYWNrKFZlY3RvcjxT
dHJpbmc+JiYgZG9tYWlucykKK3ZvaWQgVGVzdFJ1bm5lcjo6Y2FsbERpZFJlY2VpdmVMb2FkZWRU
aGlyZFBhcnR5RG9tYWluc0NhbGxiYWNrKFZlY3RvcjxTdHJpbmc+JiYgZG9tYWlucykKIHsKICAg
ICBXS0J1bmRsZUZyYW1lUmVmIG1haW5GcmFtZSA9IFdLQnVuZGxlUGFnZUdldE1haW5GcmFtZShJ
bmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkucGFnZSgpLT5wYWdlKCkpOwogICAgIEpTQ29udGV4
dFJlZiBjb250ZXh0ID0gV0tCdW5kbGVGcmFtZUdldEphdmFTY3JpcHRDb250ZXh0KG1haW5GcmFt
ZSk7CkBAIC0yMzg0LDcgKzIzODQsNyBAQCB2b2lkIFRlc3RSdW5uZXI6OmNhbGxEaWRSZWNlaXZl
UHJldmFsZW50RG9tYWluc0NhbGxiYWNrKFZlY3RvcjxTdHJpbmc+JiYgZG9tYWlucwogICAgIAog
ICAgIEpTVmFsdWVSZWYgcmVzdWx0ID0gSlNWYWx1ZU1ha2VGcm9tSlNPTlN0cmluZyhjb250ZXh0
LCBhZG9wdChKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhzdHJpbmdCdWlsZGVyLnRvU3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSkpLmdldCgpKTsKIAotICAgIGNhbGxUZXN0UnVubmVyQ2FsbGJh
Y2soR2V0UHJldmFsZW50RG9tYWluc0NhbGxiYWNrSUQsIDEsICZyZXN1bHQpOworICAgIGNhbGxU
ZXN0UnVubmVyQ2FsbGJhY2soTG9hZGVkVGhpcmRQYXJ0eURvbWFpbnNDYWxsYmFja0lELCAxLCAm
cmVzdWx0KTsKIH0KIAogdm9pZCBUZXN0UnVubmVyOjphZGRNb2NrTWVkaWFEZXZpY2UoSlNTdHJp
bmdSZWYgcGVyc2lzdGVudElkLCBKU1N0cmluZ1JlZiBsYWJlbCwgY29uc3QgY2hhciogdHlwZSkK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1
bm5lci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVy
LmgKaW5kZXggZGEwYWQxZmJhOWI5MjQ4NzEzZDA0ZjFhYmExNGUxZjY2MDhiODNhNy4uNjFkYjkz
ZjYwMjRiMWM3OGY2YWE3YTU1MGEyYTRkNzM0ZGU2YWMyNSAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKKysrIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKQEAgLTQ0OSw4ICs0NDks
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdGF0aXN0aWNzQ2FsbERpZFNldEZpcnN0UGFydHlXZWJz
aXRlRGF0YVJlbW92YWxNb2RlQ2FsbGJhY2soKTsKICAgICB2b2lkIHN0YXRpc3RpY3NSZXNldFRv
Q29uc2lzdGVudFN0YXRlKEpTVmFsdWVSZWYgY29tcGxldGlvbkhhbmRsZXIpOwogICAgIHZvaWQg
c3RhdGlzdGljc0NhbGxEaWRSZXNldFRvQ29uc2lzdGVudFN0YXRlQ2FsbGJhY2soKTsKLSAgICB2
b2lkIGdldFByZXZhbGVudERvbWFpbnMoSlNWYWx1ZVJlZiBjYWxsYmFjayk7Ci0gICAgdm9pZCBj
YWxsRGlkUmVjZWl2ZVByZXZhbGVudERvbWFpbnNDYWxsYmFjayhWZWN0b3I8U3RyaW5nPiYmIGRv
bWFpbnMpOworICAgIHZvaWQgbG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMoSlNWYWx1ZVJlZiBjYWxs
YmFjayk7CisgICAgdm9pZCBjYWxsRGlkUmVjZWl2ZUxvYWRlZFRoaXJkUGFydHlEb21haW5zQ2Fs
bGJhY2soVmVjdG9yPFN0cmluZz4mJiBkb21haW5zKTsKIAogICAgIC8vIEluamVjdGVkIGJ1bmRs
ZSBmb3JtIGNsaWVudC4KICAgICB2b2lkIGluc3RhbGxUZXh0RGlkQ2hhbmdlSW5UZXh0RmllbGRD
YWxsYmFjayhKU1ZhbHVlUmVmIGNhbGxiYWNrKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
Q29udHJvbGxlci5jcHAKaW5kZXggNzFjMzU4YTI3ZGUyNmM4ZmM5ZTY4ZTcyZmM2NzUzYTUyYTZh
OTI3ZS4uMzljNDFhMDU5ZWExMWYwYmUxMmY0ZGE4ODc3MjUzMzA1YTFjYzc5YSAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKQEAgLTExMjYsNyArMTEyNiw3IEBA
IGJvb2wgVGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMoY29uc3Qg
VGVzdE9wdGlvbnMmIG9wdGlvbnMsIFJlCiAgICAgc2V0QWxsb3dzQW55U1NMQ2VydGlmaWNhdGUo
dHJ1ZSk7CiAKICAgICBzdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSgpOwotICAgIGNs
ZWFyUHJldmFsZW50RG9tYWlucygpOworICAgIGNsZWFyTG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMo
KTsKIAogICAgIGNsZWFyQWRDbGlja0F0dHJpYnV0aW9uKCk7CiAKQEAgLTMxMzAsMTEgKzMxMzAs
MTEgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6Z2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoKQog
ewogfQogCi12b2lkIFRlc3RDb250cm9sbGVyOjpnZXRQcmV2YWxlbnREb21haW5zKCkKK3ZvaWQg
VGVzdENvbnRyb2xsZXI6OmxvYWRlZFRoaXJkUGFydHlEb21haW5zKCkKIHsKIH0KIAotdm9pZCBU
ZXN0Q29udHJvbGxlcjo6Y2xlYXJQcmV2YWxlbnREb21haW5zKCkKK3ZvaWQgVGVzdENvbnRyb2xs
ZXI6OmNsZWFyTG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMoKQogewogfQogCmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmggYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKaW5kZXggYThhZDU4ZmUxYTc4OTAxZjM1YjllODNmNmQy
YzU1ZjdiMTM2MDViNi4uZDg4MWMwNzc0YmE0MDNhNGQ5ZDA3YTM3MDRjODAwNjVkZGE4YmJhMCAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaApAQCAtMjY1LDggKzI2NSw4
IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKCk7
CiAKICAgICB2b2lkIGdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKCk7Ci0gICAgdm9pZCBnZXRQ
cmV2YWxlbnREb21haW5zKCk7Ci0gICAgdm9pZCBjbGVhclByZXZhbGVudERvbWFpbnMoKTsKKyAg
ICB2b2lkIGxvYWRlZFRoaXJkUGFydHlEb21haW5zKCk7CisgICAgdm9pZCBjbGVhckxvYWRlZFRo
aXJkUGFydHlEb21haW5zKCk7CiAgICAgdm9pZCBnZXRXZWJWaWV3Q2F0ZWdvcnkoKTsKICAgICB2
b2lkIHNldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkKGJvb2wpOwogCmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcCBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCmluZGV4IGY4Y2NlMjdmYzQ2MTdlYTc2YzZiNTM3
NzU0Y2M0NjJjZDllMGVjMTkuLjY5ZjIxOWVlMzBlMzQ3Y2UyYzM5ZmU4OGI1NTBlODVhNjg2OGIz
MjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3Bw
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCkBAIC04MjAs
OCArODIwLDggQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5q
ZWN0ZWRCdW5kbGUoV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUKICAgICB9CiAjZW5kaWYKICAgICAK
LSAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkdldFBy
ZXZhbGVudERvbWFpbnMiKSkgewotICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCku
Z2V0UHJldmFsZW50RG9tYWlucygpOworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3Ry
aW5nKG1lc3NhZ2VOYW1lLCAiTG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMiKSkgeworICAgICAgICBU
ZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMoKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTk3MCw5ICsxOTcwLDkgQEAgdm9pZCBUZXN0SW52
b2NhdGlvbjo6ZGlkUmVjZWl2ZUFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKFZlY3RvcjxTdHJpbmc+
JiBkb21haW5zKQogICAgIFdLUGFnZVBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZShUZXN0Q29u
dHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGFnZSgpLCBtZXNzYWdlTmFtZS5n
ZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCkpOwogfQogCi12b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRS
ZWNlaXZlUHJldmFsZW50RG9tYWlucyhWZWN0b3I8U3RyaW5nPiYmIGRvbWFpbnMpCit2b2lkIFRl
c3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlTG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMoVmVjdG9yPFN0
cmluZz4mJiBkb21haW5zKQogewotICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdl
TmFtZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkNhbGxEaWRSZWNl
aXZlUHJldmFsZW50RG9tYWlucyIpKTsKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVz
c2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJDYWxsRGlk
UmVjZWl2ZUxvYWRlZFRoaXJkUGFydHlEb21haW5zIikpOwogICAgIAogICAgIFdLUmV0YWluUHRy
PFdLTXV0YWJsZUFycmF5UmVmPiBtZXNzYWdlQm9keSA9IGFkb3B0V0soV0tNdXRhYmxlQXJyYXlD
cmVhdGUoKSk7CiAgICAgZm9yIChhdXRvJiBkb21haW4gOiBkb21haW5zKQpkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCmluZGV4IGVjNGY1OTY2MmM3YjViZTAzNjYxNTA3MmMy
MjA1OTYyZTg0ODU1NjYuLmE0YWQzOTFmNTNlMWY0NzYzZjIzY2Q0N2VkN2MwMDUxNWJhNzVjNjIg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaAorKysg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgKQEAgLTg2LDcgKzg2LDcg
QEAgcHVibGljOgogICAgIHZvaWQgZGlkU2V0VmVyeVByZXZhbGVudFJlc291cmNlKCk7CiAgICAg
dm9pZCBkaWRTZXRIYXNIYWRVc2VySW50ZXJhY3Rpb24oKTsKICAgICB2b2lkIGRpZFJlY2VpdmVB
bGxTdG9yYWdlQWNjZXNzRW50cmllcyhWZWN0b3I8U3RyaW5nPiYgZG9tYWlucyk7Ci0gICAgdm9p
ZCBkaWRSZWNlaXZlUHJldmFsZW50RG9tYWlucyhWZWN0b3I8U3RyaW5nPiYmIGRvbWFpbnMpOwor
ICAgIHZvaWQgZGlkUmVjZWl2ZUxvYWRlZFRoaXJkUGFydHlEb21haW5zKFZlY3RvcjxTdHJpbmc+
JiYgZG9tYWlucyk7CiAgICAgdm9pZCBkaWRSZWNlaXZlV2ViVmlld0NhdGVnb3J5KFN0cmluZyYp
OwogICAgIHZvaWQgZGlkU2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQoKTsKIApkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1t
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tCmlu
ZGV4IGZjMWQ1MWI3NDljOGIzMjFmZTRmN2EyMjU1N2I4MWFkOWU2YjkwMTIuLjk3MWFjNTAzZDg2
YWQxN2E3M2Y1YTVhYjIyODM5NmU1Nzg4ZDM0ZTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KQEAgLTM0MiwyOCArMzQyLDI4
IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKCkKICAg
ICB9XTsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6Z2V0UHJldmFsZW50RG9tYWlucygpCit2
b2lkIFRlc3RDb250cm9sbGVyOjpsb2FkZWRUaGlyZFBhcnR5RG9tYWlucygpCiB7CiAgICAgYXV0
byogcGFyZW50VmlldyA9IG1haW5XZWJWaWV3KCk7CiAgICAgaWYgKCFwYXJlbnRWaWV3KQogICAg
ICAgICByZXR1cm47CiAgICAgCi0gICAgW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLndlYnNp
dGVEYXRhU3RvcmUgX2dldFByZXZhbGVudERvbWFpbnNGb3I6cGFyZW50Vmlldy0+cGxhdGZvcm1W
aWV3KCkgY29tcGxldGlvbkhhbmRsZXI6XihOU0FycmF5PE5TU3RyaW5nICo+ICpuc0RvbWFpbnMp
IHsKKyAgICBbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfbG9h
ZGVkVGhpcmRQYXJ0eURvbWFpbnNGb3I6cGFyZW50Vmlldy0+cGxhdGZvcm1WaWV3KCkgY29tcGxl
dGlvbkhhbmRsZXI6XihOU0FycmF5PE5TU3RyaW5nICo+ICpuc0RvbWFpbnMpIHsKICAgICAgICAg
VmVjdG9yPFN0cmluZz4gZG9tYWluczsKICAgICAgICAgZG9tYWlucy5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KG5zRG9tYWlucy5jb3VudCk7CiAgICAgICAgIGZvciAoTlNTdHJpbmcgKmRvbWFpbiA6
IG5zRG9tYWlucykKICAgICAgICAgICAgIGRvbWFpbnMudW5jaGVja2VkQXBwZW5kKGRvbWFpbik7
Ci0gICAgICAgIG1fY3VycmVudEludm9jYXRpb24tPmRpZFJlY2VpdmVQcmV2YWxlbnREb21haW5z
KFdURk1vdmUoZG9tYWlucykpOworICAgICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5kaWRSZWNl
aXZlTG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMoV1RGTW92ZShkb21haW5zKSk7CiAgICAgfV07CiB9
CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6OmNsZWFyUHJldmFsZW50RG9tYWlucygpCit2b2lkIFRl
c3RDb250cm9sbGVyOjpjbGVhckxvYWRlZFRoaXJkUGFydHlEb21haW5zKCkKIHsKICAgICBhdXRv
KiBwYXJlbnRWaWV3ID0gbWFpbldlYlZpZXcoKTsKICAgICBpZiAoIXBhcmVudFZpZXcpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIFtnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0
YVN0b3JlIF9jbGVhclByZXZhbGVudERvbWFpbnNGb3I6cGFyZW50Vmlldy0+cGxhdGZvcm1WaWV3
KCldOworICAgIFtnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlIF9j
bGVhckxvYWRlZFRoaXJkUGFydHlEb21haW5zRm9yOnBhcmVudFZpZXctPnBsYXRmb3JtVmlldygp
XTsKIH0KIAogdm9pZCBUZXN0Q29udHJvbGxlcjo6Z2V0V2ViVmlld0NhdGVnb3J5KCkKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCA1ZTEyNTk4NmQ5NmRhYTE4ODIwMzYzOTA2ZWNiMjRiMjRhZGI3MmIyLi44NDA2ZmY1NWE1ZDkw
ZjBhYWY4MzA0YTg5ODc5NTIyODgzM2I1NzVmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMjAt
MDMtMTMgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAg
ICAgUmVwb3J0IGFsbCB0aGlyZCBwYXJ0eSBsb2FkcyBvbiBhIHBlci1wYWdlIGJhc2lzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDkwMzIKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzYwMzk3MzIzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIE5vdyB0aGF0IHdlIHJlcG9ydCBhbGwgbG9hZGVkIHRoaXJk
IHBhcnR5IGRvbWFpbnMsIHdlIG5vIGxvbmdlciBuZWVkCisgICAgICAgIElUUCB0byB0ZXN0IHRo
aXMgY2FsbC4gV2UgY2FuIGVsaW1pbmF0ZSB0aGUgZHVhbCB0ZXN0aW5nIGZvcgorICAgICAgICBt
ZW1vcnkvZGF0YWJhc2Ugc2V0dXAgYW5kIGFueSBsb2dpYyByZWxhdGVkIHRvIHNldHRpbmcgYSBy
ZXNvdXJjZQorICAgICAgICBhcyBwcmV2YWxlbnQuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jl
c291cmNlTG9hZFN0YXRpc3RpY3MvbG9hZGVkLXJlZ2lzdHJhYmxlLWRvbWFpbnMtZ2V0LXJlcG9y
dGVkLWV4cGVjdGVkLnR4dDogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJz
b2NrZXQvd2ViLXNvY2tldC1sb2Fkcy1jYXB0dXJlZC1pbi1wZXItcGFnZS1kb21haW5zLWV4cGVj
dGVkLnR4dC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvbG9h
ZGVkLXJlZ2lzdHJhYmxlLWRvbWFpbnMtZ2V0LXJlcG9ydGVkLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9wcmV2YWxlbnQtZG9tYWlucy1w
ZXItcGFnZS1kYXRhYmFzZS1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3ByZXZhbGVudC1kb21haW5zLXBlci1wYWdlLWRh
dGFiYXNlLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzL3ByZXZhbGVudC1kb21haW5zLXBlci1wYWdlLmh0bWw6IFJlbW92ZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvd2ViLXNvY2tldC1sb2Fkcy1jYXB0dXJlZC1pbi1w
ZXItcGFnZS1kb21haW5zLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNv
Y2tldC93ZWItc29ja2V0LWxvYWRzLWNhcHR1cmVkLWluLXBlci1wYWdlLWRvbWFpbnMuaHRtbDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgU2luY2Ug
dGhpcyB0ZXN0IG5vIGxvbmdlciB1c2VzIFVJSGVscGVyLmFjdGl2YXRlQXQsIGl0IGNhbiBiZQor
ICAgICAgICB1bnNraXBwZWQgaW4gaU9TCisKIDIwMjAtMDMtMTIgIENocmlzIER1bWV6ICA8Y2R1
bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBodHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BhZ2Ut
Y2FjaGUtY29tcGxldGVkLXBheW1lbnQtcmVzcG9uc2UuaHR0cHMuaHRtbCBpcyBmbGFreSBmYWls
aW5nLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzL2xvYWRlZC1yZWdpc3RyYWJsZS1kb21haW5zLWdldC1yZXBvcnRlZC1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvbG9hZGVk
LXJlZ2lzdHJhYmxlLWRvbWFpbnMtZ2V0LXJlcG9ydGVkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5jOWZhMmZjYmU5ZDEzN2JhMDNjNTg2MTJkZWY2Nzg3NGFmMDEyN2YwCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2xvYWRl
ZC1yZWdpc3RyYWJsZS1kb21haW5zLWdldC1yZXBvcnRlZC1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxMCBAQAorVGVzdHMgdGhhdCBhIGlmcmFtZSBnZXRzIHJlcG9ydGVkIGFzIGEgbG9hZGVkIHRo
aXJkIHBhcnR5IGRvbWFpbi4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mg
TG9hZGVkIGRvbWFpbiB3YXMgc3VjY2Vzc2Z1bGx5IGNhcHR1cmVkLgorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9sb2FkZWQtcmVnaXN0cmFibGUt
ZG9tYWlucy1nZXQtcmVwb3J0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy9sb2FkZWQtcmVnaXN0cmFibGUtZG9tYWlucy1nZXQtcmVwb3J0ZWQu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5hOGIwODdlODllOWNhZjM1ZGEwY2NlY2RmMzU4NzE5OTVkYzE2YTM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzL2xvYWRlZC1yZWdpc3RyYWJsZS1kb21haW5zLWdldC1yZXBvcnRlZC5odG1sCkBA
IC0wLDAgKzEsMzAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2Ny
aXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgIDxz
Y3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKyAg
ICA8c2NyaXB0IHNyYz0iL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzL3V0aWwuanMi
Pjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAgICAgIGRlc2NyaXB0aW9uKCJUZXN0cyB0aGF0
IGEgaWZyYW1lIGdldHMgcmVwb3J0ZWQgYXMgYSBsb2FkZWQgdGhpcmQgcGFydHkgZG9tYWluLiIp
OworICAgICAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICBmdW5jdGlvbiBhc2tG
b3JMb2FkZWRUaGlyZFBhcnR5RG9tYWlucygpIHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubG9h
ZGVkVGhpcmRQYXJ0eURvbWFpbnMoZnVuY3Rpb24gKGFycmF5T2ZEb21haW5zKSB7CisgICAgICAg
ICAgICAgICAgaWYgKGFycmF5T2ZEb21haW5zLmxlbmd0aCA9PSAwKSB7CisgICAgICAgICAgICAg
ICAgICAgIGFza0ZvckxvYWRlZFRoaXJkUGFydHlEb21haW5zKCk7CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGFycmF5
T2ZEb21haW5zLmluY2x1ZGVzKCJsb2NhbGhvc3QiKSkKKyAgICAgICAgICAgICAgICAgICAgdGVz
dFBhc3NlZCgiTG9hZGVkIGRvbWFpbiB3YXMgc3VjY2Vzc2Z1bGx5IGNhcHR1cmVkLiIpOworICAg
ICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiTG9hZGVk
IGRvbWFpbiB3YXMgbm90IHN1Y2Nlc3NmdWxseSBjYXB0dXJlZC4iKTsKKyAgICAgICAgICAgICAg
ICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmaW5pc2hKU1Rlc3QpOworICAgICAgICAgICAgfSk7
CisgICAgICAgIH0KKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGlmcmFtZSBvbmxv
YWQ9J2Fza0ZvckxvYWRlZFRoaXJkUGFydHlEb21haW5zKCknIHNyYz0iaHR0cDovL2xvY2FsaG9z
dDo4MDAwL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzL2Jhc2ljLWlmcmFtZS5odG1s
Ij4KKzwvaWZyYW1lPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3ByZXZhbGVudC1kb21haW5zLXBlci1w
YWdlLWRhdGFiYXNlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy9wcmV2YWxlbnQtZG9tYWlucy1wZXItcGFnZS1kYXRhYmFzZS1leHBl
Y3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3ZTFhYmJlOTNhN2YwZDcz
NWI3M2IzNzI1NzE0ZjA0NmM0ZDc1ZWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzL3ByZXZhbGVudC1kb21haW5zLXBlci1wYWdlLWRhdGFiYXNlLWV4cGVjdGVkLnR4dAorKysg
L2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLVRlc3RzIHRoYXQgYSBpZnJhbWUgZnJvbSBhIHBy
ZXZhbGVudCBkb21haW4gd2lsbCBiZSByZXBvcnRlZCBhcyBwcmV2YWxlbnQgdW5kZXIgdGhpcyBw
YWdlLgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLQotUEFTUyBEb21haW4gd2FzIHN1
Y2Nlc3NmdWxseSBtYXJrZWQgcHJldmFsZW50LgotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9wcmV2YWxlbnQtZG9tYWlucy1wZXItcGFnZS1kYXRh
YmFzZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
L3ByZXZhbGVudC1kb21haW5zLXBlci1wYWdlLWRhdGFiYXNlLmh0bWwKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDgxMmVhZWUyMzQ3ZWI2ZWViMDkzNDhlYTUxNTdhMGY4OTZmMDdjOTMu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3ByZXZhbGVudC1kb21haW5zLXBl
ci1wYWdlLWRhdGFiYXNlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw3NCArMCwwIEBACi08IURP
Q1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJl
c291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iL2pzLXRlc3Qt
cmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzL3Jlc291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KLSAgICA8c2Ny
aXB0PgotICAgICAgICBkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBhIGlmcmFtZSBmcm9tIGEgcHJl
dmFsZW50IGRvbWFpbiB3aWxsIGJlIHJlcG9ydGVkIGFzIHByZXZhbGVudCB1bmRlciB0aGlzIHBh
Z2UuIik7Ci0gICAgICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOwotCi0gICAgICAgIGZ1bmN0aW9u
IGZpbmlzaFRlc3QoKSB7Ci0gICAgICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmaW5p
c2hKU1Rlc3QpOwotICAgICAgICB9Ci0KLSAgICAgICAgY29uc3QgaWZyYW1lSUQgPSAiaUZyYW1l
RnJvbVByZXZhbGVudERvbWFpbiI7Ci0gICAgICAgIGZ1bmN0aW9uIGFza0ZvclByZXZhbGVudFJl
c291cmNlcygpIHsKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuZ2V0UHJldmFsZW50RG9tYWlucyhm
dW5jdGlvbiAoYXJyYXlPZkRvbWFpbnMpIHsKLSAgICAgICAgICAgICAgICB2YXIgcGFzc2VkID0g
dHJ1ZTsKLSAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFycmF5T2ZEb21haW5z
Lmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChhcnJheU9mRG9tYWluc1tp
XSA9PT0gImxvY2FsaG9zdCIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NlZCA9IHRy
dWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAocGFzc2VkKQotICAgICAg
ICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJEb21haW4gd2FzIHN1Y2Nlc3NmdWxseSBtYXJrZWQg
cHJldmFsZW50LiIpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAg
dGVzdEZhaWxlZCgiRG9tYWluIHdhcyBub3Qgc3VjY2Vzc2Z1bGx5IG1hcmtlZCBwcmV2YWxlbnQu
Iik7Ci0gICAgICAgICAgICAgICAgZmluaXNoVGVzdCgpOwotICAgICAgICAgICAgfSk7Ci0gICAg
ICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBhY3RpdmF0ZUVsZW1lbnQoZWxlbWVudElkKSB7Ci0g
ICAgICAgICAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJ
ZCk7Ci0gICAgICAgICAgICB2YXIgY2VudGVyWCA9IGVsZW1lbnQub2Zmc2V0TGVmdCArIGVsZW1l
bnQub2Zmc2V0V2lkdGggLyAyOwotICAgICAgICAgICAgdmFyIGNlbnRlclkgPSBlbGVtZW50Lm9m
ZnNldFRvcCArIGVsZW1lbnQub2Zmc2V0SGVpZ2h0IC8gMjsKLSAgICAgICAgICAgIFVJSGVscGVy
LmFjdGl2YXRlQXQoY2VudGVyWCwgY2VudGVyWSkudGhlbigKLSAgICAgICAgICAgICAgICBmdW5j
dGlvbiAoKSB7IH0sCi0gICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgewotICAgICAgICAgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJQcm9taXNlIHJlamVjdGVkLiIpOwotICAgICAgICAgICAgICAg
ICAgICBmaW5pc2hUZXN0KCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgKTsKLSAg
ICAgICAgICAgIGFza0ZvclByZXZhbGVudFJlc291cmNlcygpOwotICAgICAgICB9Ci0KLSAgICAg
ICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKLSAgICAgICAgICAgIGlmIChkb2N1bWVudC5sb2NhdGlv
bi5oYXNoICE9PSAiI2VsZW1lbnRBY3RpdmF0ZWQiKSB7Ci0gICAgICAgICAgICAgICAgZG9jdW1l
bnQubG9jYXRpb24uaGFzaCA9ICJlbGVtZW50QWN0aXZhdGVkIjsKLSAgICAgICAgICAgICAgICBh
Y3RpdmF0ZUVsZW1lbnQoaWZyYW1lSUQpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAg
ICAgICAgY29uc3QgaG9zdFVuZGVyVGVzdCA9ICJsb2NhbGhvc3Q6ODAwMCI7Ci0gICAgICAgIGNv
bnN0IHN0YXRpc3RpY3NVcmwgPSAiaHR0cDovLyIgKyBob3N0VW5kZXJUZXN0OwotICAgICAgICAK
LSAgICAgICAgdGVzdFJ1bm5lci5zZXRVc2VJVFBEYXRhYmFzZSh0cnVlKTsKLSAgICAgICAgc2V0
RW5hYmxlRmVhdHVyZSh0cnVlLCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHRlc3RSdW5uZXIu
c2V0U3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKHN0YXRpc3RpY3NVcmwsIHRydWUsIGZ1bmN0
aW9uKCkgewotICAgICAgICAgICAgICAgIGlmICghdGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NQcmV2
YWxlbnRSZXNvdXJjZShzdGF0aXN0aWNzVXJsKSkKLSAgICAgICAgICAgICAgICAgICAgdGVzdEZh
aWxlZCgiSG9zdCBkaWQgbm90IGdldCBzZXQgYXMgcHJldmFsZW50IHJlc291cmNlLiIpOwotCi0g
ICAgICAgICAgICAgICAgbGV0IGlmcmFtZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJpZnJhbWUiKTsKLSAgICAgICAgICAgICAgICBpZnJhbWVFbGVtZW50Lm9ubG9hZCA9IHJ1blRl
c3Q7Ci0gICAgICAgICAgICAgICAgaWZyYW1lRWxlbWVudC5pZCA9ICJpRnJhbWVGcm9tUHJldmFs
ZW50RG9tYWluIjsKLSAgICAgICAgICAgICAgICBpZnJhbWVFbGVtZW50LnNyYyA9ICJodHRwOi8v
bG9jYWxob3N0OjgwMDAvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZXNvdXJjZXMvYmFzaWMtaWZy
YW1lLmh0bWwiOwotICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaWZy
YW1lRWxlbWVudCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7Ci0gICAgPC9zY3JpcHQ+
Ci08L2hlYWQ+Ci08Ym9keT4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9wcmV2YWxlbnQtZG9tYWlucy1w
ZXItcGFnZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzL3ByZXZhbGVudC1kb21haW5zLXBlci1wYWdlLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGMxOGM2ZmJhNzA3YTgxODY3NWVhYThiM2QyMTA2OTFlNzcyNjNlM2YuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3ByZXZhbGVudC1kb21haW5zLXBlci1wYWdl
Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw3MyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxo
dG1sPgotPGhlYWQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0
LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL3VpLWhl
bHBlci5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzL3Jlc291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0PgotICAgICAgICBk
ZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBhIGlmcmFtZSBmcm9tIGEgcHJldmFsZW50IGRvbWFpbiB3
aWxsIGJlIHJlcG9ydGVkIGFzIHByZXZhbGVudCB1bmRlciB0aGlzIHBhZ2UuIik7Ci0gICAgICAg
IGpzVGVzdElzQXN5bmMgPSB0cnVlOwotCi0gICAgICAgIGZ1bmN0aW9uIGZpbmlzaFRlc3QoKSB7
Ci0gICAgICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmaW5pc2hKU1Rlc3QpOwotICAg
ICAgICB9Ci0KLSAgICAgICAgY29uc3QgaWZyYW1lSUQgPSAiaUZyYW1lRnJvbVByZXZhbGVudERv
bWFpbiI7Ci0gICAgICAgIGZ1bmN0aW9uIGFza0ZvclByZXZhbGVudFJlc291cmNlcygpIHsKLSAg
ICAgICAgICAgIHRlc3RSdW5uZXIuZ2V0UHJldmFsZW50RG9tYWlucyhmdW5jdGlvbiAoYXJyYXlP
ZkRvbWFpbnMpIHsKLSAgICAgICAgICAgICAgICB2YXIgcGFzc2VkID0gZmFsc2U7Ci0gICAgICAg
ICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnJheU9mRG9tYWlucy5sZW5ndGg7ICsraSkg
ewotICAgICAgICAgICAgICAgICAgICBpZiAoYXJyYXlPZkRvbWFpbnNbaV0gPT09ICJsb2NhbGhv
c3QiKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwYXNzZWQgPSB0cnVlOwotICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKHBhc3NlZCkKLSAgICAgICAgICAgICAgICAgICAg
dGVzdFBhc3NlZCgiRG9tYWluIHdhcyBzdWNjZXNzZnVsbHkgbWFya2VkIHByZXZhbGVudC4iKTsK
LSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkRv
bWFpbiB3YXMgbm90IHN1Y2Nlc3NmdWxseSBtYXJrZWQgcHJldmFsZW50LiIpOwotICAgICAgICAg
ICAgICAgIGZpbmlzaFRlc3QoKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9Ci0KLSAgICAg
ICAgZnVuY3Rpb24gYWN0aXZhdGVFbGVtZW50KGVsZW1lbnRJZCkgewotICAgICAgICAgICAgdmFy
IGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50SWQpOwotICAgICAgICAg
ICAgdmFyIGNlbnRlclggPSBlbGVtZW50Lm9mZnNldExlZnQgKyBlbGVtZW50Lm9mZnNldFdpZHRo
IC8gMjsKLSAgICAgICAgICAgIHZhciBjZW50ZXJZID0gZWxlbWVudC5vZmZzZXRUb3AgKyBlbGVt
ZW50Lm9mZnNldEhlaWdodCAvIDI7Ci0gICAgICAgICAgICBVSUhlbHBlci5hY3RpdmF0ZUF0KGNl
bnRlclgsIGNlbnRlclkpLnRoZW4oCi0gICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeyB9LAot
ICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgICAgICAgICAgdGVzdEZh
aWxlZCgiUHJvbWlzZSByZWplY3RlZC4iKTsKLSAgICAgICAgICAgICAgICAgICAgZmluaXNoVGVz
dCgpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICk7Ci0gICAgICAgICAgICBhc2tG
b3JQcmV2YWxlbnRSZXNvdXJjZXMoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIHJ1
blRlc3QoKSB7Ci0gICAgICAgICAgICBpZiAoZG9jdW1lbnQubG9jYXRpb24uaGFzaCAhPT0gIiNl
bGVtZW50QWN0aXZhdGVkIikgewotICAgICAgICAgICAgICAgIGRvY3VtZW50LmxvY2F0aW9uLmhh
c2ggPSAiZWxlbWVudEFjdGl2YXRlZCI7Ci0gICAgICAgICAgICAgICAgYWN0aXZhdGVFbGVtZW50
KGlmcmFtZUlEKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGNvbnN0IGhv
c3RVbmRlclRlc3QgPSAibG9jYWxob3N0OjgwMDAiOwotICAgICAgICBjb25zdCBzdGF0aXN0aWNz
VXJsID0gImh0dHA6Ly8iICsgaG9zdFVuZGVyVGVzdDsKLSAgICAgICAgCi0gICAgICAgIHNldEVu
YWJsZUZlYXR1cmUodHJ1ZSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLnNl
dFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShzdGF0aXN0aWNzVXJsLCB0cnVlLCBmdW5jdGlv
bigpIHsKLSAgICAgICAgICAgICAgICBpZiAoIXRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzUHJldmFs
ZW50UmVzb3VyY2Uoc3RhdGlzdGljc1VybCkpCi0gICAgICAgICAgICAgICAgICAgIHRlc3RGYWls
ZWQoIkhvc3QgZGlkIG5vdCBnZXQgc2V0IGFzIHByZXZhbGVudCByZXNvdXJjZS4iKTsKLQotICAg
ICAgICAgICAgICAgIGxldCBpZnJhbWVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
aWZyYW1lIik7Ci0gICAgICAgICAgICAgICAgaWZyYW1lRWxlbWVudC5vbmxvYWQgPSBydW5UZXN0
OwotICAgICAgICAgICAgICAgIGlmcmFtZUVsZW1lbnQuaWQgPSAiaUZyYW1lRnJvbVByZXZhbGVu
dERvbWFpbiI7Ci0gICAgICAgICAgICAgICAgaWZyYW1lRWxlbWVudC5zcmMgPSAiaHR0cDovL2xv
Y2FsaG9zdDo4MDAwL3N0b3JhZ2VBY2Nlc3MvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9iYXNpYy1p
ZnJhbWUuaHRtbCI7Ci0gICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChp
ZnJhbWVFbGVtZW50KTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsKLSAgICA8L3Njcmlw
dD4KLTwvaGVhZD4KLTxib2R5PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvd2ViLXNvY2tldC1sb2Fkcy1jYXB0dXJlZC1pbi1w
ZXItcGFnZS1kb21haW5zLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vi
c29ja2V0L3dlYi1zb2NrZXQtbG9hZHMtY2FwdHVyZWQtaW4tcGVyLXBhZ2UtZG9tYWlucy1leHBl
Y3RlZC50eHQKaW5kZXggMTgzNTViY2JiYjk3ZTM0MTMyNjlkYTE4ZjQ3NmQzNjU1OTkyMzAzMi4u
NDMzMjlmYjliYjUzMzhhMzViYmQ4ZWVkMzViNjcxMjNkN2UyNGYwYyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvd2ViLXNvY2tldC1sb2Fkcy1jYXB0dXJlZC1p
bi1wZXItcGFnZS1kb21haW5zLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3dlYnNvY2tldC93ZWItc29ja2V0LWxvYWRzLWNhcHR1cmVkLWluLXBlci1wYWdlLWRvbWFp
bnMtZXhwZWN0ZWQudHh0CkBAIC0xLDkgKzEsOSBAQAotRW5zdXJlIHdlYiBzb2NrZXQgbG9hZHMg
YXJlIGNhcHR1cmVkIGJ5IHBlci1wYWdlIHByZXZhbGVudCBkb21haW4gbG9nZ2luZy4KK0Vuc3Vy
ZSB3ZWIgc29ja2V0IGxvYWRzIGFyZSByZXBvcnRlZCBhcyBsb2FkZWQgdGhpcmQgcGFydHkgZG9t
YWlucy4KIAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCiAKLVBBU1MgRG9tYWluIHdhcyBz
dWNjZXNzZnVsbHkgbWFya2VkIHByZXZhbGVudC4KK1BBU1MgTG9hZGVkIGRvbWFpbiB3YXMgc3Vj
Y2Vzc2Z1bGx5IGNhcHR1cmVkLgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBU
RVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tl
dC93ZWItc29ja2V0LWxvYWRzLWNhcHR1cmVkLWluLXBlci1wYWdlLWRvbWFpbnMuaHRtbCBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3dlYi1zb2NrZXQtbG9hZHMtY2FwdHVyZWQt
aW4tcGVyLXBhZ2UtZG9tYWlucy5odG1sCmluZGV4IGMzZjFiMTMwY2Y2YzFhNTgzODdhMjI4N2Rk
NzQzNGM0MjNmMDM5YjAuLmNkZTAzZjcyOTlkOGUwMDE5Mzk5YTcyZTk1ZDQwYTEyMDczZTc3NTIg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3dlYi1zb2NrZXQt
bG9hZHMtY2FwdHVyZWQtaW4tcGVyLXBhZ2UtZG9tYWlucy5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd2Vic29ja2V0L3dlYi1zb2NrZXQtbG9hZHMtY2FwdHVyZWQtaW4tcGVyLXBh
Z2UtZG9tYWlucy5odG1sCkBAIC01LDM0ICs1LDMwIEBACiA8L2hlYWQ+CiA8Ym9keSBvbmxvYWQ9
InJ1blRlc3QoKSI+CiA8c2NyaXB0PgotICAgIGRlc2NyaXB0aW9uKCdFbnN1cmUgd2ViIHNvY2tl
dCBsb2FkcyBhcmUgY2FwdHVyZWQgYnkgcGVyLXBhZ2UgcHJldmFsZW50IGRvbWFpbiBsb2dnaW5n
LicpOworICAgIGRlc2NyaXB0aW9uKCdFbnN1cmUgd2ViIHNvY2tldCBsb2FkcyBhcmUgcmVwb3J0
ZWQgYXMgbG9hZGVkIHRoaXJkIHBhcnR5IGRvbWFpbnMuJyk7CiAKICAgICB3aW5kb3cuanNUZXN0
SXNBc3luYyA9IHRydWU7CiAgICAgCiAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQogICAgICAg
ICB0ZXN0UnVubmVyLnNldEFsbG93c0FueVNTTENlcnRpZmljYXRlKHRydWUpOwogCi0gICAgZnVu
Y3Rpb24gYXNrRm9yUHJldmFsZW50UmVzb3VyY2VzKCkgewotICAgICAgICB0ZXN0UnVubmVyLmdl
dFByZXZhbGVudERvbWFpbnMoZnVuY3Rpb24gKGFycmF5T2ZEb21haW5zKSB7CisgICAgZnVuY3Rp
b24gYXNrRm9yTG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMoKSB7CisgICAgICAgIHRlc3RSdW5uZXIu
bG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMoZnVuY3Rpb24gKGFycmF5T2ZEb21haW5zKSB7CiAgICAg
ICAgICAgICBpZiAoYXJyYXlPZkRvbWFpbnMubGVuZ3RoID09IDApIHsKLSAgICAgICAgICAgICAg
ICBhc2tGb3JQcmV2YWxlbnRSZXNvdXJjZXMoKTsKKyAgICAgICAgICAgICAgICBhc2tGb3JMb2Fk
ZWRUaGlyZFBhcnR5RG9tYWlucygpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGlmIChhcnJheU9mRG9tYWlucy5pbmNsdWRlcygibG9jYWxob3N0
IikpCi0gICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiRG9tYWluIHdhcyBzdWNjZXNzZnVsbHkg
bWFya2VkIHByZXZhbGVudC4iKTsKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJMb2FkZWQg
ZG9tYWluIHdhcyBzdWNjZXNzZnVsbHkgY2FwdHVyZWQuIik7CiAgICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiRG9tYWluIHdhcyBub3Qgc3VjY2Vzc2Z1bGx5IG1h
cmtlZCBwcmV2YWxlbnQuIik7CisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiTG9hZGVkIGRv
bWFpbiB3YXMgbm90IHN1Y2Nlc3NmdWxseSBjYXB0dXJlZC4iKTsKICAgICAgICAgICAgIHNldEVu
YWJsZUZlYXR1cmUoZmFsc2UsIGZpbmlzaEpTVGVzdCk7CiAgICAgICAgIH0pOwogICAgIH0KIAog
ICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7Ci0gICAgICAgIHNldEVuYWJsZUZlYXR1cmUodHJ1ZSwg
ZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NQcmV2YWxl
bnRSZXNvdXJjZSgiaHR0cDovL2xvY2FsaG9zdCIsIHRydWUsIGZ1bmN0aW9uICgpIHsKLSAgICAg
ICAgICAgICAgICBuZXcgV2ViU29ja2V0KCd3czovL2xvY2FsaG9zdDo4ODgwL3dlYnNvY2tldC90
ZXN0cy9oeWJpL3NpbXBsZScpOwotICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoYXNrRm9yUHJl
dmFsZW50UmVzb3VyY2VzLCAwKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsKKyAgICAg
ICAgbmV3IFdlYlNvY2tldCgnd3M6Ly9sb2NhbGhvc3Q6ODg4MC93ZWJzb2NrZXQvdGVzdHMvaHli
aS9zaW1wbGUnKTsKKyAgICAgICAgc2V0VGltZW91dChhc2tGb3JMb2FkZWRUaGlyZFBhcnR5RG9t
YWlucywgMCk7CiAgICAgfQogPC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9pb3MvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhw
ZWN0YXRpb25zCmluZGV4IDMyN2U4NTEzNGJjZGM0ZjViYTQ0NzhjY2NjMzYwMzQyOGE3YTM4ZjIu
LjVkMjI3YWYzMzRkYjhlNDBmZDcxYmRkNWE0ZDNhOGFkZjI4MGFmZGIgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zCkBAIC0yNzI2LDggKzI3MjYsNiBAQCBodHRw
L3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvdXNlci1pbnRlcmFjdGlvbi1yZXBvcnRlZC1h
ZnRlci13ZWJzaXRlLWRhdGEtcgogd2Via2l0Lm9yZy9iLzE3NDEyMCBodHRwL3Rlc3RzL3Jlc291
cmNlTG9hZFN0YXRpc3RpY3MvdXNlci1pbnRlcmFjdGlvbi1pbi1jcm9zcy1vcmlnaW4tc3ViLWZy
YW1lLWRhdGFiYXNlLmh0bWwgWyBTa2lwIF0KIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy91c2VyLWludGVyYWN0aW9uLW9ubHktcmVwb3J0ZWQtb25jZS13aXRoaW4tc2hvcnQtcGVy
aW9kLW9mLXRpbWUtZGF0YWJhc2UuaHRtbCBbIFNraXAgXQogaHR0cC90ZXN0cy9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzL3VzZXItaW50ZXJhY3Rpb24tcmVwb3J0ZWQtYWZ0ZXItd2Vic2l0ZS1kYXRh
LXJlbW92YWwtZGF0YWJhc2UuaHRtbCBbIFNraXAgXQotaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzL3ByZXZhbGVudC1kb21haW5zLXBlci1wYWdlLWRhdGFiYXNlLmh0bWwgWyBTa2lw
IF0KLWh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9wcmV2YWxlbnQtZG9tYWlucy1w
ZXItcGFnZS5odG1sIFsgU2tpcCBdCiAjIFNraXBwZWQgaW4gV0syIGV4cGVjdGF0aW9ucyBiZWNh
dXNlIGNvb2tpZSBwYXJ0aXRpb25pbmcgaXMgb25seSBhdmFpbGFibGUgaW4gbWFjT1MgSGlnaCBT
aWVycmEgYW5kIGlPUyAxMS4KIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jb29r
aWUtZGVsZXRpb24uaHRtbCBbIFBhc3MgXQogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzL2Nvb2tpZXMtd2l0aC1hbmQtd2l0aG91dC11c2VyLWludGVyYWN0aW9uLmh0bWwgWyBQYXNz
IF0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393513</attachid>
            <date>2020-03-13 11:56:58 -0700</date>
            <delta_ts>2020-03-13 12:43:48 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-209032-20200313115657.patch</filename>
            <type>text/plain</type>
            <size>52095</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4Mzc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmIwMjcxZGNlNTljMjcz
OGU5MGE0NDEzMGNhNjM1Mzk0MDlmY2UxNy4uMTgxZmVjMGFjOTIwYzM4ZDZlNTAwMTQwNWE1OTE3
MjJlZjY0ZGY4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIwLTAzLTEzICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIFJlcG9ydCBh
bGwgdGhpcmQgcGFydHkgbG9hZHMgb24gYSBwZXItcGFnZSBiYXNpcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5MDMyCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS82MDM5NzMyMz4KKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1lei4KKwor
ICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvbG9hZGVkLXJl
Z2lzdHJhYmxlLWRvbWFpbnMtZ2V0LXJlcG9ydGVkLmh0bWwKKworICAgICAgICBSZW5hbWUgdGhp
cyBmdW5jdGlvbiB0byBtb3JlIGFjY3VyYXRlbHkgcmVmbGVjdCBpdHMgcHVycG9zZSBvZiBzZW5k
aW5nCisgICAgICAgIGxvYWRlZCByZWdpc3RyYWJsZSBkb21haW5zIHRvIHRoZSBXZWJQYWdlLgor
CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJTb2NrZXQ6OmNvbm5lY3QpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRl
ckNsaWVudC5oOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWwpOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKToKKwogMjAyMC0w
My0xMiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBDcmFzaCBp
biBUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6cmVwbGFjZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBlYjc5NTM5
MjU2OWUxODhlZDE3MmQyMDk1ZGU5MGI3YmVjNGEwZWNmLi5iYjA4YWExYjY2NTdmMDI3MTEyYjU5
M2Q3ZGVmMDI2YmNjZjIxZjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDIwLTAzLTEz
ICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIFJl
cG9ydCBhbGwgdGhpcmQgcGFydHkgbG9hZHMgb24gYSBwZXItcGFnZSBiYXNpcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5MDMyCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS82MDM5NzMyMz4KKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1l
ei4KKworICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvbG9h
ZGVkLXJlZ2lzdHJhYmxlLWRvbWFpbnMtZ2V0LXJlcG9ydGVkLmh0bWwKKworICAgICAgICBSZW1v
dmVkIElQQyB0byB0aGUgTmV0d29yayBQcm9jZXNzIGFza2luZyBpZiBhIHJlc291cmNlIGxvYWQg
aXMgZnJvbQorICAgICAgICBhIHByZXZhbGVudCBkb21haW4uIFRoaXMgbm93IHN0b3JlcyBhbmQg
c2VuZHMgYWxsIGxvYWRlZCByZWdpc3RyYWJsZQorICAgICAgICBkb21haW5zLiBUaGlzIHBhdGNo
IGlzIG1vc3RseSB1cGRhdGluZyBuYW1pbmcgdG8gcmVmbGVjdCB0aGlzIGFuZAorICAgICAgICBk
ZWxldGluZyB0aGUgdW5uZWNlc3NhcnkgY29kZSB0byBjb21tdW5pY2F0ZSB3aXRoIHRoZQorICAg
ICAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuCisKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVy
T3BlbmVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OmlzUHJldmFsZW50U3VicmVzb3VyY2VMb2FkKTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tOgorICAgICAg
ICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX2xvYWRlZFRoaXJkUGFydHlEb21haW5zRm9yOmNvbXBs
ZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX2NsZWFyTG9h
ZGVkVGhpcmRQYXJ0eURvbWFpbnNGb3I6XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9y
ZSBfZ2V0UHJldmFsZW50RG9tYWluc0Zvcjpjb21wbGV0aW9uSGFuZGxlcjpdKTogRGVsZXRlZC4K
KyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9jbGVhclByZXZhbGVudERvbWFpbnNGb3I6
XSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRh
U3RvcmVQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkTG9hZEZyb21SZWdpc3RyYWJsZURvbWFpbik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjphZGRMb2FkZWRSZWdpc3RyYWJs
ZURvbWFpbik6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkQ29tbWl0TG9hZCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpZExvYWRGcm9tUmVnaXN0cmFibGVEb21haW4pOgorICAg
ICAgICBBZGQgYSBjaGVjayB0aGF0IHRoaXMgaXMgYSB0aGlyZCBwYXJ0eSBieSBjb21wYXJpbmcg
dGhlIHRhcmdldCBkb21haW4KKyAgICAgICAgdG8gdGhlIG1haW4gZnJhbWUgZG9tYWluLgorCisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmxvYWRlZFRoaXJkUGFydHlEb21haW5zKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6Y2xlYXJMb2FkZWRUaGlyZFBhcnR5RG9tYWlucyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OmFkZExvYWRlZFJlZ2lzdHJhYmxlRG9tYWluKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0UHJldmFsZW50RG9tYWlucyk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNsZWFyUHJldmFsZW50RG9tYWlucyk6IERl
bGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKwogMjAyMC0wMy0xMiAg
RGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYlBhZ2VQcm94
eTo6U2F2ZUltYWdlVG9MaWJyYXJ5IHNob3VsZCB2YWxpZGF0ZSBpdHMgYGltYWdlU2l6ZWAgcGFy
YW1ldGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2Vi
U29ja2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQu
Y3BwCmluZGV4IDlkODM0YzI0YjllMDJlNDI2YTYyODFmYTJhYTMxMTk0NTYwMmUxNDguLmJlNmQ5
NDVkNGYxY2M0NmMyOTYxNjE4NDhiNmIwZmJkODcwNzEyZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCkBAIC0zMjgsNyArMzI4LDcgQEAg
RXhjZXB0aW9uT3I8dm9pZD4gV2ViU29ja2V0Ojpjb25uZWN0KGNvbnN0IFN0cmluZyYgdXJsLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgcHIKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNU
SUNTKQogICAgIGF1dG8gcmVwb3J0UmVnaXN0cmFibGVEb21haW4gPSBbZG9tYWluID0gUmVnaXN0
cmFibGVEb21haW4obV91cmwpLmlzb2xhdGVkQ29weSgpXShhdXRvJiBjb250ZXh0KSBtdXRhYmxl
IHsKICAgICAgICAgaWYgKGF1dG8qIGZyYW1lID0gZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQp
LmZyYW1lKCkpCi0gICAgICAgICAgICBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuYWRkTG9hZGVk
UmVnaXN0cmFibGVEb21haW4oV1RGTW92ZShkb21haW4pKTsKKyAgICAgICAgICAgIGZyYW1lLT5s
b2FkZXIoKS5jbGllbnQoKS5kaWRMb2FkRnJvbVJlZ2lzdHJhYmxlRG9tYWluKFdURk1vdmUoZG9t
YWluKSk7CiAgICAgfTsKICAgICBpZiAoaXM8RG9jdW1lbnQ+KGNvbnRleHQpKQogICAgICAgICBy
ZXBvcnRSZWdpc3RyYWJsZURvbWFpbihjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggYWJhNjYyZDM0ZDk2NzVkMmY3MmMyYjE3MGI3ZWMwYmE5
YjljMDM3OC4uMjg3MmE0YTEyYjJkYzdlNDJmMjczMzk2MTEwNWFhNmJmZDBlODQwMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTM3NCw3ICszNzQsNyBA
QCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIHZp
cnR1YWwgYm9vbCBoYXNGcmFtZVNwZWNpZmljU3RvcmFnZUFjY2VzcygpIHsgcmV0dXJuIGZhbHNl
OyB9Ci0gICAgdmlydHVhbCB2b2lkIGFkZExvYWRlZFJlZ2lzdHJhYmxlRG9tYWluKFJlZ2lzdHJh
YmxlRG9tYWluJiYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRMb2FkRnJvbVJlZ2lzdHJhYmxl
RG9tYWluKFJlZ2lzdHJhYmxlRG9tYWluJiYpIHsgfQogI2VuZGlmCiAKICAgICB2aXJ0dWFsIEFs
bG93c0NvbnRlbnRKYXZhU2NyaXB0IGFsbG93c0NvbnRlbnRKYXZhU2NyaXB0RnJvbU1vc3RSZWNl
bnROYXZpZ2F0aW9uKCkgY29uc3QgeyByZXR1cm4gQWxsb3dzQ29udGVudEphdmFTY3JpcHQ6Olll
czsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggODc2Yzlk
NTg1NzdjNzY0ZTMzNTU2ZjM2OTJlZWJmY2MwODhkMTJkOS4uNjdhY2M2ZjgxOTAwYzQwMjI0NTc4
YWMxMWU5NWVkOGU5YWNiNTQzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jl
c291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
ZXIuY3BwCkBAIC00MTYsNyArNDE2LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRS
ZXF1ZXN0SW50ZXJuYWwoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmUKICAgICBp
ZiAoaXNSZWRpcmVjdCkgewogICAgICAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3Ry
YXRlZ3koKS0+Y3Jvc3NPcmlnaW5SZWRpcmVjdFJlY2VpdmVkKHRoaXMsIHJlcXVlc3QudXJsKCkp
OwogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgICAgIGZyYW1lTG9h
ZGVyKCktPmNsaWVudCgpLmFkZExvYWRlZFJlZ2lzdHJhYmxlRG9tYWluKFJlZ2lzdHJhYmxlRG9t
YWluKHJlcXVlc3QudXJsKCkpKTsKKyAgICAgICAgZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkuZGlk
TG9hZEZyb21SZWdpc3RyYWJsZURvbWFpbihSZWdpc3RyYWJsZURvbWFpbihyZXF1ZXN0LnVybCgp
KSk7CiAjZW5kaWYKICAgICB9CiAgICAgbV9yZXF1ZXN0ID0gcmVxdWVzdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4
IDVhZGM3ZGUzMmIxNDk2MWM1YTEzOWEwNzI0NDI3NmU1N2NiMDU1YmEuLmIyMGUxY2M2YWYyYWI1
Y2IzYTNhNjU4YTZjZTQwMjg0NmI4YzZlMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcApAQCAtOTkzLDcgKzk5Myw3IEBA
IFJlc291cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4+IENh
Y2hlZFJlc291cmNlTG9hZGVyOjpyZXF1CiAgICAgQVNTRVJUKHJlc291cmNlLT51cmwoKSA9PSB1
cmwuc3RyaW5nKCkpOwogICAgIG1fZG9jdW1lbnRSZXNvdXJjZXMuc2V0KHJlc291cmNlLT51cmwo
KSwgcmVzb3VyY2UpOwogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAg
ZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuYWRkTG9hZGVkUmVnaXN0cmFibGVEb21haW4oUmVnaXN0
cmFibGVEb21haW4ocmVzb3VyY2UtPnJlc291cmNlUmVxdWVzdCgpLnVybCgpKSk7CisgICAgZnJh
bWUubG9hZGVyKCkuY2xpZW50KCkuZGlkTG9hZEZyb21SZWdpc3RyYWJsZURvbWFpbihSZWdpc3Ry
YWJsZURvbWFpbihyZXNvdXJjZS0+cmVzb3VyY2VSZXF1ZXN0KCkudXJsKCkpKTsKICNlbmRpZgog
ICAgIHJldHVybiByZXNvdXJjZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXgg
MmNiOTljNWIwM2JkNTU2ZmU1MTgyOWQ2OWFlZGQwZDE5ZGIzNmRkNC4uYzRiOWVjZTQ4NmU0ZDcw
MGI2MDk0ZjM1ZWRkZWYxZDI1OGMyN2NhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAK
QEAgLTg2NSwxNyArODY1LDYgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihXZWJDb3JlOjpSZWcKICAgICAgICAgICAg
IHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIo
V1RGTW92ZShkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MpLCBvcGVuZXJQYWdlSUQsIFdURk1v
dmUob3BlbmVyRG9tYWluKSk7CiAgICAgfQogfQotCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjppc1ByZXZhbGVudFN1YnJlc291cmNlTG9hZChSZWdpc3RyYWJsZURvbWFpbiYm
IGRvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKLXsKLSAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lv
bigpKSB7Ci0gICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29y
a1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkgewotICAgICAgICAgICAgcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy0+aXNQcmV2YWxlbnRSZXNvdXJjZShkb21haW4sIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0K
LSAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7Ci19CiAjZW5kaWYKIAogdm9pZCBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoY29u
c3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Qcm90b2Nv
bCwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbkhvc3QsIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1
YmRvbWFpbnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggYjc1OWMyOWQyNGQ2NzlmYjkz
MDQ5ZWQyYWI5YTQ0Y2U0ZjAxODc1MC4uMWY4NzMxMjc5YTQ2ZWI2ODc5YzNjNWVhMjk0MGQyZjRk
YjIyZTE5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtMjY2LDcgKzI2Niw2IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWlu
LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNj
ZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBXZWJDb3JlOjpT
dG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmKTsKICAgICB2b2lkIHJlcXVlc3RTdG9yYWdl
QWNjZXNzVW5kZXJPcGVuZXIoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBkb21haW5Jbk5l
ZWRPZlN0b3JhZ2VBY2Nlc3MsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBvcGVuZXJEb21haW4pOwotICAgIHZvaWQgaXNQ
cmV2YWxlbnRTdWJyZXNvdXJjZUxvYWQoUmVnaXN0cmFibGVEb21haW4mJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJik7CiAjZW5kaWYKIAogICAgIHZvaWQgYWRkT3JpZ2luQWNjZXNz
V2hpdGVsaXN0RW50cnkoY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFN0cmluZyYg
ZGVzdGluYXRpb25Qcm90b2NvbCwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbkhvc3QsIGJvb2wg
YWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MubWVzc2FnZXMuaW4KaW5kZXggMjRmNWU1Yzg0YjdiYTM0YjY4NDE0YmNjMDMzNWNkM2Y4ZGI0
Y2I5OS4uNmZmN2E0MDg3MTBhZWUzYzEzYzhmYmM1NGZhMmNjZTRhODU2NjBhMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC02Nyw3ICs2Nyw2IEBAIG1l
c3NhZ2VzIC0+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsK
ICAgICBIYXNTdG9yYWdlQWNjZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN1YkZyYW1l
RG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbiwgV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RCkgLT4gKGJvb2wgaGFzU3RvcmFnZUFjY2VzcykgQXN5bmMKICAgICBSZXF1ZXN0U3RvcmFnZUFj
Y2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBzdWJGcmFtZURvbWFpbiwgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4gdG9wRnJhbWVEb21haW4sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIFdlYktpdDo6V2Vi
UGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCkgLT4gKGVudW06Ym9vbCBXZWJDb3Jl
OjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCB3YXNHcmFudGVkLCBlbnVtOmJvb2wgV2ViQ29yZTo6
U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIHByb21wdFdhc1Nob3duKSBBc3luYwogICAgIFJl
cXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4g
ZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBvcGVu
ZXJQYWdlSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIG9wZW5lckRvbWFpbikKLSAgICBJ
c1ByZXZhbGVudFN1YnJlc291cmNlTG9hZChXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21h
aW4pIC0+IChib29sIGlzUHJldmFsZW50KSBBc3luYwogI2VuZGlmCiAKICAgICBBZGRPcmlnaW5B
Y2Nlc3NXaGl0ZWxpc3RFbnRyeShTdHJpbmcgc291cmNlT3JpZ2luLCBTdHJpbmcgZGVzdGluYXRp
b25Qcm90b2NvbCwgU3RyaW5nIGRlc3RpbmF0aW9uSG9zdCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9u
U3ViZG9tYWlucyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQppbmRleCA4NGRjMmM4OGZkNzc5OTlkNTEwNzYzYzY3
OWZiMzQ3ZDNjYTNiNTUyLi42ZTU3OGUwM2RlMjMyMDQwMTU5MzkxZTUzYWQ1MjA0NzBiYWJiMDU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRl
RGF0YVN0b3JlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YnNpdGVEYXRhU3RvcmUubW0KQEAgLTM5MCw3ICszOTAsNyBAQCArICh2b2lkKV9hbGxvd1dlYnNp
dGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnMKICAgICBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6
OmFsbG93V2Vic2l0ZURhdGFSZWNvcmRzRm9yQWxsT3JpZ2lucygpOwogfQogCi0tICh2b2lkKV9n
ZXRQcmV2YWxlbnREb21haW5zRm9yOihXS1dlYlZpZXcgKil3ZWJWaWV3IGNvbXBsZXRpb25IYW5k
bGVyOih2b2lkICheKShOU0FycmF5PE5TU3RyaW5nICo+ICpkb21haW5zKSljb21wbGV0aW9uSGFu
ZGxlcgorLSAodm9pZClfbG9hZGVkVGhpcmRQYXJ0eURvbWFpbnNGb3I6KFdLV2ViVmlldyAqKXdl
YlZpZXcgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TQXJyYXk8TlNTdHJpbmcgKj4gKmRv
bWFpbnMpKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RB
VElTVElDUykKICAgICBpZiAoIXdlYlZpZXcpIHsKQEAgLTQwNCw4ICs0MDQsOCBAQCAtICh2b2lk
KV9nZXRQcmV2YWxlbnREb21haW5zRm9yOihXS1dlYlZpZXcgKil3ZWJWaWV3IGNvbXBsZXRpb25I
YW5kbGVyOih2b2lkICheKQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIHdlYlBh
Z2VQcm94eS0+Z2V0UHJldmFsZW50RG9tYWlucyhbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxv
Y2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoVmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluPiYmIHByZXZhbGVudERvbWFpbnMpIHsKLSAgICAgICAgVmVjdG9yPFJlZlB0cjxBUEk6Ok9i
amVjdD4+IGFwaURvbWFpbnMgPSBXVEY6Om1hcChwcmV2YWxlbnREb21haW5zLCBbXShhdXRvJiBk
b21haW4pIHsKKyAgICB3ZWJQYWdlUHJveHktPmxvYWRlZFRoaXJkUGFydHlEb21haW5zKFtjb21w
bGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChWZWN0b3I8
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiYgbG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMpIHsK
KyAgICAgICAgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+IGFwaURvbWFpbnMgPSBXVEY6Om1h
cChsb2FkZWRUaGlyZFBhcnR5RG9tYWlucywgW10oYXV0byYgZG9tYWluKSB7CiAgICAgICAgICAg
ICByZXR1cm4gUmVmUHRyPEFQSTo6T2JqZWN0PihBUEk6OlN0cmluZzo6Y3JlYXRlKFdURk1vdmUo
ZG9tYWluLnN0cmluZygpKSkpOwogICAgICAgICB9KTsKICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIod3JhcHBlcihBUEk6OkFycmF5OjpjcmVhdGUoV1RGTW92ZShhcGlEb21haW5zKSkpKTsKQEAg
LTQxNSw3ICs0MTUsNyBAQCAtICh2b2lkKV9nZXRQcmV2YWxlbnREb21haW5zRm9yOihXS1dlYlZp
ZXcgKil3ZWJWaWV3IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKQogI2VuZGlmCiB9CiAKLS0g
KHZvaWQpX2NsZWFyUHJldmFsZW50RG9tYWluc0ZvcjooV0tXZWJWaWV3ICopd2ViVmlldworLSAo
dm9pZClfY2xlYXJMb2FkZWRUaGlyZFBhcnR5RG9tYWluc0ZvcjooV0tXZWJWaWV3ICopd2ViVmll
dwogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgaWYgKCF3ZWJW
aWV3KQpAQCAtNDI1LDcgKzQyNSw3IEBAIC0gKHZvaWQpX2NsZWFyUHJldmFsZW50RG9tYWluc0Zv
cjooV0tXZWJWaWV3ICopd2ViVmlldwogICAgIGlmICghd2ViUGFnZVByb3h5KQogICAgICAgICBy
ZXR1cm47CiAKLSAgICB3ZWJQYWdlUHJveHktPmNsZWFyUHJldmFsZW50RG9tYWlucygpOworICAg
IHdlYlBhZ2VQcm94eS0+Y2xlYXJMb2FkZWRUaGlyZFBhcnR5RG9tYWlucygpOwogI2VuZGlmCiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNp
dGVEYXRhU3RvcmVQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCmluZGV4IGVkZTc1OGYwNDAxNDJmNDVhY2I3ZTVk
ZGIyMWNlODM3ODBkYWIzZmEuLmYzYmMyN2Q0MzEyNTYxMTVhYjhmZTFhM2Q5OGFjZDE2YmE5NThm
NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNp
dGVEYXRhU3RvcmVQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaApAQCAtNjEsOCArNjEsOCBAQCB0eXBlZGVm
IE5TX09QVElPTlMoTlNVSW50ZWdlciwgX1dLV2Vic2l0ZURhdGFTdG9yZUZldGNoT3B0aW9ucykg
ewogCiAtICh2b2lkKV9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVzdGluZ0NhbGxiYWNrOihu
dWxsYWJsZSB2b2lkICheKShXS1dlYnNpdGVEYXRhU3RvcmUgKiwgTlNTdHJpbmcgKikpY2FsbGJh
Y2sgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMyksIGlvcygxMS4wKSk7CiAtICh2b2lkKV9n
ZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllc0ZvcjooV0tXZWJWaWV3ICopd2ViVmlldyBjb21wbGV0
aW9uSGFuZGxlcjoodm9pZCAoXikoTlNBcnJheTxOU1N0cmluZyAqPiAqZG9tYWlucykpY29tcGxl
dGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNCksIGlvcygxMi4wKSk7Ci0t
ICh2b2lkKV9nZXRQcmV2YWxlbnREb21haW5zRm9yOihXS1dlYlZpZXcgKil3ZWJWaWV3IGNvbXBs
ZXRpb25IYW5kbGVyOih2b2lkICheKShOU0FycmF5PE5TU3RyaW5nICo+ICpkb21haW5zKSljb21w
bGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tf
SU9TX1RCQSkpOwotLSAodm9pZClfY2xlYXJQcmV2YWxlbnREb21haW5zRm9yOihXS1dlYlZpZXcg
Kil3ZWJWaWV3IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1Nf
VEJBKSk7CistICh2b2lkKV9sb2FkZWRUaGlyZFBhcnR5RG9tYWluc0ZvcjooV0tXZWJWaWV3ICop
d2ViVmlldyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNBcnJheTxOU1N0cmluZyAqPiAq
ZG9tYWlucykpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNf
VEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKHZvaWQpX2NsZWFyTG9hZGVkVGhpcmRQYXJ0eURv
bWFpbnNGb3I6KFdLV2ViVmlldyAqKXdlYlZpZXcgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19N
QUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIC0gKHZvaWQpX2dldFdlYlZpZXdDYXRlZ29yeUZv
cjooV0tXZWJWaWV3ICopd2ViVmlldyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoX1dLV2Vi
Vmlld0NhdGVnb3J5IGNhdGVnb3J5KSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxF
KG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogKyAodm9pZClfYWxsb3dXZWJz
aXRlRGF0YVJlY29yZHNGb3JBbGxPcmlnaW5zIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMu
NCksIGlvcygxMS4zKSk7CiAtIChib29sKV9oYXNSZWdpc3RlcmVkU2VydmljZVdvcmtlciBXS19B
UElfQVZBSUxBQkxFKG1hY29zKDEwLjE0KSwgaW9zKDEyLjApKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDUzOGZhNTc2ZTIxYWQyNDk4ZWM4M2QxMTkyMGFh
ZmE5MGUyZTJiZWYuLjIxMTU0M2M3YjA4Mzk4MmQ2MTdiYWM3MTQ0YmUwMTJjMTY5MmQ2NjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtOTk0NywxNCArOTk0
NywxNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0T3JpZW50YXRpb25Gb3JNZWRpYUNhcHR1cmUo
dWludDY0X3Qgb3JpZW50YXRpb24pCiB9CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFU
SVNUSUNTKQotdm9pZCBXZWJQYWdlUHJveHk6OmdldFByZXZhbGVudERvbWFpbnMoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+JiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQordm9pZCBXZWJQYWdlUHJveHk6OmxvYWRlZFRoaXJkUGFydHlEb21haW5zKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKLSAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6
OkdldFByZXZhbGVudERvbWFpbnMoKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAg
IHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6TG9hZGVkVGhpcmRQYXJ0eURv
bWFpbnMoKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIFdlYlBhZ2VQ
cm94eTo6Y2xlYXJQcmV2YWxlbnREb21haW5zKCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpjbGVhckxv
YWRlZFRoaXJkUGFydHlEb21haW5zKCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpD
bGVhclByZXZhbGVudERvbWFpbnMoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2xl
YXJMb2FkZWRUaGlyZFBhcnR5RG9tYWlucygpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDk3OTdmOGQyNzA2ODhlY2VmZjg0OGNiYjQ1MTNm
MmM1YmJmYWIyYjEuLjkyY2ZjNGNmNDQzMTZmZTgxNmQ3NGQ4MTEzYjFlYWQ5YmE1NTU3MjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xNTY3LDggKzE1NjcsOCBA
QCBwdWJsaWM6CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICB2b2lk
IHJlcXVlc3RTdG9yYWdlQWNjZXNzQ29uZmlybShjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiB0
b3BGcmFtZURvbWFpbiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIGRpZENvbW1pdENyb3NzU2l0ZUxvYWRXaXRoRGF0
YVRyYW5zZmVyRnJvbVByZXZhbGVudFJlc291cmNlKCk7Ci0gICAgdm9pZCBnZXRQcmV2YWxlbnRE
b21haW5zKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluPiYmKT4mJik7Ci0gICAgdm9pZCBjbGVhclByZXZhbGVudERvbWFpbnMoKTsKKyAgICB2
b2lkIGxvYWRlZFRoaXJkUGFydHlEb21haW5zKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9y
PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYmKT4mJik7CisgICAgdm9pZCBjbGVhckxvYWRl
ZFRoaXJkUGFydHlEb21haW5zKCk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5U
QVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCAwNzY4OGVjN2RiMGRi
Y2IxZTliNDZkMjkwOThjZDFiYmU5YmIzOWM1Li5kODQwYzUwMzBmYzEwZmNjNzFkMzI2Y2U0YzVm
MzhiMTBmZjJlOTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTE0OSwx
MyArMTQ5LDEzIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNldEhhc0ZyYW1lU3BlY2lm
aWNTdG9yYWdlQWNjZXNzKEZyYW1lU3BlY2lmaWNTdG9yYWdlCiAgICAgbV9mcmFtZVNwZWNpZmlj
U3RvcmFnZUFjY2Vzc0lkZW50aWZpZXIgPSBXVEZNb3ZlKGZyYW1lU3BlY2lmaWNTdG9yYWdlQWNj
ZXNzSWRlbnRpZmllcik7CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmFkZExvYWRl
ZFJlZ2lzdHJhYmxlRG9tYWluKFJlZ2lzdHJhYmxlRG9tYWluJiYgZG9tYWluKQordm9pZCBXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZGlkTG9hZEZyb21SZWdpc3RyYWJsZURvbWFpbihSZWdpc3RyYWJs
ZURvbWFpbiYmIGRvbWFpbikKIHsKICAgICBhdXRvKiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgp
OwogICAgIGlmICghd2ViUGFnZSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIHdlYlBhZ2Ut
PmFkZExvYWRlZFJlZ2lzdHJhYmxlRG9tYWluKFdURk1vdmUoZG9tYWluKSk7CisgICAgd2ViUGFn
ZS0+ZGlkTG9hZEZyb21SZWdpc3RyYWJsZURvbWFpbihXVEZNb3ZlKGRvbWFpbikpOwogfQogCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggYjA1OGU2MmE0NGNiNjljMTc2
OTM3NGI3ZGZkYmViYTAzZjQyNTUyMC4uMjE5NDE5MDBjNTUzMmVlY2Y0YzI3ODZiZTc0YjNhNTgw
MjIyYzQ1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTYwLDcgKzYwLDcgQEAg
cHVibGljOgogICAgICAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQ7CiAgICAgfTsK
ICAgICB2b2lkIHNldEhhc0ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzKEZyYW1lU3BlY2lmaWNT
dG9yYWdlQWNjZXNzSWRlbnRpZmllciYmKTsKLSAgICB2b2lkIGFkZExvYWRlZFJlZ2lzdHJhYmxl
RG9tYWluKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYpIGZpbmFsOworICAgIHZvaWQgZGlk
TG9hZEZyb21SZWdpc3RyYWJsZURvbWFpbihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmKSBm
aW5hbDsKICNlbmRpZgogCiAgICAgV2ViQ29yZTo6QWxsb3dzQ29udGVudEphdmFTY3JpcHQgYWxs
b3dzQ29udGVudEphdmFTY3JpcHRGcm9tTW9zdFJlY2VudE5hdmlnYXRpb24oKSBjb25zdCBmaW5h
bDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXgg
YWVmMjg1OTU4MTUyOTI3YjAwNWU5NTc1N2JiNjkwNzVkMmE3OWVjZS4uOTliOTZlMjg2OTk2MzFk
NTk2ODJmN2I5MDQ5MjRjMWY3ZTFlMGVhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTU4NTgsNyArNTg1OCw3IEBAIHZvaWQgV2ViUGFnZTo6
ZGlkQ29tbWl0TG9hZChXZWJGcmFtZSogZnJhbWUpCiAgICAgICAgIHJldHVybjsKIAogI2lmIEVO
QUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgY2xlYXJQcmV2YWxlbnREb21haW5z
KCk7CisgICAgY2xlYXJMb2FkZWRUaGlyZFBhcnR5RG9tYWlucygpOwogI2VuZGlmCiAgICAgCiAg
ICAgLy8gSWYgcHJldmlvdXMgVVJMIGlzIGludmFsaWQsIHRoZW4gaXQncyBub3QgYSByZWFsIHBh
Z2UgdGhhdCdzIGJlaW5nIG5hdmlnYXRlZCBhd2F5IGZyb20uCkBAIC02Njk1LDI2ICs2Njk1LDIw
IEBAIHZvaWQgV2ViUGFnZTo6d2FzTG9hZGVkV2l0aERhdGFUcmFuc2ZlckZyb21QcmV2YWxlbnRS
ZXNvdXJjZSgpCiAgICAgZnJhbWUtPmRvY3VtZW50KCktPndhc0xvYWRlZFdpdGhEYXRhVHJhbnNm
ZXJGcm9tUHJldmFsZW50UmVzb3VyY2UoKTsKIH0KIAotdm9pZCBXZWJQYWdlOjphZGRMb2FkZWRS
ZWdpc3RyYWJsZURvbWFpbihSZWdpc3RyYWJsZURvbWFpbiYmIGRvbWFpbikKK3ZvaWQgV2ViUGFn
ZTo6ZGlkTG9hZEZyb21SZWdpc3RyYWJsZURvbWFpbihSZWdpc3RyYWJsZURvbWFpbiYmIHRhcmdl
dERvbWFpbikKIHsKLSAgICBhdXRvIGFkZFJlc3VsdCA9IG1fbG9hZGVkRG9tYWlucy5hZGQoZG9t
YWluKTsKLSAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpIHsKLSAgICAgICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlv
bigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OklzUHJldmFsZW50U3VicmVzb3VyY2VMb2FkKGRvbWFpbiksIFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGRvbWFpbl0gKGJvb2wgaXNQcmV2YWxlbnQpIHsKLSAg
ICAgICAgICAgIGlmIChpc1ByZXZhbGVudCkKLSAgICAgICAgICAgICAgICBtX3ByZXZhbGVudERv
bWFpbnMuYWRkKGRvbWFpbik7Ci0gICAgICAgIH0pOwotICAgIH0KKyAgICBpZiAodGFyZ2V0RG9t
YWluICE9IFJlZ2lzdHJhYmxlRG9tYWluKG1haW5XZWJGcmFtZSgpLT51cmwoKSkpCisgICAgICAg
IG1fbG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMuYWRkKHRhcmdldERvbWFpbik7CiB9CiAKLXZvaWQg
V2ViUGFnZTo6Z2V0UHJldmFsZW50RG9tYWlucyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3Rv
cjxSZWdpc3RyYWJsZURvbWFpbj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYWdl
Ojpsb2FkZWRUaGlyZFBhcnR5RG9tYWlucyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxS
ZWdpc3RyYWJsZURvbWFpbj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGNvbXBsZXRp
b25IYW5kbGVyKGNvcHlUb1ZlY3RvcihtX3ByZXZhbGVudERvbWFpbnMpKTsKKyAgICBjb21wbGV0
aW9uSGFuZGxlcihjb3B5VG9WZWN0b3IobV9sb2FkZWRUaGlyZFBhcnR5RG9tYWlucykpOwogfQog
Ci12b2lkIFdlYlBhZ2U6OmNsZWFyUHJldmFsZW50RG9tYWlucygpCit2b2lkIFdlYlBhZ2U6OmNs
ZWFyTG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMoKQogewotICAgIG1fcHJldmFsZW50RG9tYWlucy5j
bGVhcigpOwotICAgIG1fbG9hZGVkRG9tYWlucy5jbGVhcigpOworICAgIG1fbG9hZGVkVGhpcmRQ
YXJ0eURvbWFpbnMuY2xlYXIoKTsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggMGMwNWJmYWY4N2Y4NGM5YjM0NmQ2NDRhYTNkMTk4
M2NmOGNiODc2ZS4uMWQ3YTJkNTU4NWZkODEyZGRhODVjMTc2MzQ4ZTFmM2I2NzdhMGYwZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTE4Nyw5ICsx
MTg3LDkgQEAgcHVibGljOgogICAgIGJvb2wgaGFzUGFnZUxldmVsU3RvcmFnZUFjY2Vzcyhjb25z
dCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgdG9wTGV2ZWxEb21haW4sIGNvbnN0IFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbikgY29uc3Q7CiAgICAgdm9pZCBh
ZGREb21haW5XaXRoUGFnZUxldmVsU3RvcmFnZUFjY2Vzcyhjb25zdCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiYgdG9wTGV2ZWxEb21haW4sIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluJiByZXNvdXJjZURvbWFpbik7CiAgICAgdm9pZCB3YXNMb2FkZWRXaXRoRGF0YVRyYW5zZmVy
RnJvbVByZXZhbGVudFJlc291cmNlKCk7Ci0gICAgdm9pZCBhZGRMb2FkZWRSZWdpc3RyYWJsZURv
bWFpbihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmKTsKLSAgICB2b2lkIGNsZWFyUHJldmFs
ZW50RG9tYWlucygpOwotICAgIHZvaWQgZ2V0UHJldmFsZW50RG9tYWlucyhDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4pPiYmKTsKKyAgICB2
b2lkIGRpZExvYWRGcm9tUmVnaXN0cmFibGVEb21haW4oV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4mJik7CisgICAgdm9pZCBjbGVhckxvYWRlZFRoaXJkUGFydHlEb21haW5zKCk7CisgICAgdm9p
ZCBsb2FkZWRUaGlyZFBhcnR5RG9tYWlucyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4pPiYmKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKERF
VklDRV9PUklFTlRBVElPTikKQEAgLTIwNjMsOCArMjA2Myw3IEBAIHByaXZhdGU6CiAKICNpZiBF
TkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIEhhc2hNYXA8V2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBtX2RvbWFpbnNXaXRo
UGFnZUxldmVsU3RvcmFnZUFjY2VzczsKLSAgICBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluPiBtX2xvYWRlZERvbWFpbnM7Ci0gICAgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbj4gbV9wcmV2YWxlbnREb21haW5zOworICAgIEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4+IG1fbG9hZGVkVGhpcmRQYXJ0eURvbWFpbnM7CiAjZW5kaWYKIAogICAgIFN0
cmluZyBtX292ZXJyaWRkZW5NZWRpYVR5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCBlNjAxY2ZmNzJiMzRiZjA0
ZDBlMDNhYWFjNTViZjZlYWIzNWQ5OTJkLi4wZmVmZmY1Njk2OTkwMmQyYWY1ZTdlYTk1ODU2MjNl
NGFlMjFlOTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTU3Nyw4ICs1NzcsOCBAQCBHZW5lcmF0ZVN5bnRoZXRp
Y0VkaXRpbmdDb21tYW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21t
YW5kVHlwZQogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBXYXNM
b2FkZWRXaXRoRGF0YVRyYW5zZmVyRnJvbVByZXZhbGVudFJlc291cmNlKCkKLSAgICBDbGVhclBy
ZXZhbGVudERvbWFpbnMoKQotICAgIEdldFByZXZhbGVudERvbWFpbnMoKSAtPiAoVmVjdG9yPFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5zKSBBc3luYworICAgIENsZWFyTG9hZGVk
VGhpcmRQYXJ0eURvbWFpbnMoKQorICAgIExvYWRlZFRoaXJkUGFydHlEb21haW5zKCkgLT4gKFZl
Y3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gZG9tYWlucykgQXN5bmMKICNlbmRpZgog
CiAjaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDJmYTk0OGQwM2UwNTgyMzQ0MjkzNWQwYjJmMmRmNDc1NjBm
N2NiNjkuLjlmYzAyYWNlOGNkY2IzZTZmMjkxYWMyYzVmODBlYTk4YjU4OGEzMDUgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MSBA
QAorMjAyMC0wMy0xMyAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4K
KworICAgICAgICBSZXBvcnQgYWxsIHRoaXJkIHBhcnR5IGxvYWRzIG9uIGEgcGVyLXBhZ2UgYmFz
aXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTAz
MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjAzOTczMjM+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgQ2hyaXMgRHVtZXouCisKKyAgICAgICAgTW9zdGx5IG5hbWluZyB1cGRhdGVzIHRvIHJlZmxl
Y3QgdGhlIGNoYW5nZSBpbiB1c2UgZm9yIHRoaXMgU1BJIGNhbGwuCisgICAgICAgIEl0IG5vdyBy
ZXR1cm5zIGFsbCBsb2FkZWQgdGhpcmQgcGFydHkgZG9tYWlucywgbm90IGp1c3QgcHJldmFsZW50
IG9uZXMuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRp
bmdzL1Rlc3RSdW5uZXIuaWRsOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6
ZGlkUmVjZWl2ZU1lc3NhZ2VUb1BhZ2UpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6Omdl
dExvYWRlZFRoaXJkUGFydHlEb21haW5zKToKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6Y2Fs
bERpZFJlY2VpdmVMb2FkZWRUaGlyZFBhcnR5RG9tYWluc0NhbGxiYWNrKToKKyAgICAgICAgKFdU
Ujo6VGVzdFJ1bm5lcjo6Z2V0UHJldmFsZW50RG9tYWlucyk6IERlbGV0ZWQuCisgICAgICAgIChX
VFI6OlRlc3RSdW5uZXI6OmNhbGxEaWRSZWNlaXZlUHJldmFsZW50RG9tYWluc0NhbGxiYWNrKTog
RGVsZXRlZC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RS
dW5uZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoK
KyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1
ZXMpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Z2V0TG9hZGVkVGhpcmRQYXJ0eURv
bWFpbnMpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Y2xlYXJMb2FkZWRUaGlyZFBh
cnR5RG9tYWlucyk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpnZXRQcmV2YWxlbnRE
b21haW5zKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmNsZWFyUHJl
dmFsZW50RG9tYWlucyk6IERlbGV0ZWQuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0
Q29udHJvbGxlci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24u
Y3BwOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9t
SW5qZWN0ZWRCdW5kbGUpOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2
ZUxvYWRlZFRoaXJkUGFydHlEb21haW5zKToKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246
OmRpZFJlY2VpdmVQcmV2YWxlbnREb21haW5zKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9j
b2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxl
cjo6Z2V0TG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJv
bGxlcjo6Y2xlYXJMb2FkZWRUaGlyZFBhcnR5RG9tYWlucyk6CisgICAgICAgIChXVFI6OlRlc3RD
b250cm9sbGVyOjpnZXRQcmV2YWxlbnREb21haW5zKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6
VGVzdENvbnRyb2xsZXI6OmNsZWFyUHJldmFsZW50RG9tYWlucyk6IERlbGV0ZWQuCisKIDIwMjAt
MDMtMTIgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQ3Jhc2gg
aW4gVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OnJlcGxhY2UKZGlmZiAtLWdpdCBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5u
ZXIuaWRsCmluZGV4IDEzMDI3MTBmNjRlNWI3OTM4NWQwM2E5NjIyYjZlNmRiZmZkZTk2ZDIuLjFl
OTdjNjZiNzhmZTUxZTc0YTliNGZjNWYzN2IzYWZhM2Y0ZTU3ZTggMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwK
KysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0
UnVubmVyLmlkbApAQCAtMzQ1LDcgKzM0NSw3IEBAIGludGVyZmFjZSBUZXN0UnVubmVyIHsKICAg
ICB2b2lkIHNldFN0YXRpc3RpY3NTaG91bGREb3duZ3JhZGVSZWZlcnJlcihib29sZWFuIHZhbHVl
LCBvYmplY3QgY2FsbGJhY2spOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc1Nob3VsZEJsb2NrVGhp
cmRQYXJ0eUNvb2tpZXMoYm9vbGVhbiB2YWx1ZSwgb2JqZWN0IGNhbGxiYWNrLCBvcHRpb25hbCBi
b29sZWFuIG9ubHlPblNpdGVzV2l0aG91dFVzZXJJbnRlcmFjdGlvbik7CiAgICAgdm9pZCBzZXRT
dGF0aXN0aWNzRmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUoYm9vbGVhbiB2YWx1ZSwg
b2JqZWN0IGNhbGxiYWNrKTsKLSAgICB2b2lkIGdldFByZXZhbGVudERvbWFpbnMob2JqZWN0IGNh
bGxiYWNrKTsKKyAgICB2b2lkIGxvYWRlZFRoaXJkUGFydHlEb21haW5zKG9iamVjdCBjYWxsYmFj
ayk7CiAKICAgICAvLyBJbmplY3RlZCBidW5kbGUgZm9ybSBjbGllbnQuCiAgICAgdm9pZCBpbnN0
YWxsVGV4dERpZENoYW5nZUluVGV4dEZpZWxkQ2FsbGJhY2sob2JqZWN0IGNhbGxiYWNrKTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGUuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZS5jcHAKaW5kZXggMDBjOWU3NTMyODdiMDdkYTY0ZjM4YjU3ZTZhYmFiYzVkZGE5N2Fh
MS4uYTJiOGY3YWU4Y2E5OGNjNWJmZjgzNTUzMGJiMTMzM2VhZTI4YzU4NyAxMDA2NDQKLS0tIGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAK
KysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZS5jcHAKQEAgLTQxNSw3ICs0MTUsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpkaWRSZWNlaXZl
TWVzc2FnZVRvUGFnZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgbQogICAgICAg
ICByZXR1cm47CiAgICAgfQogICAgIAotICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3Ry
aW5nKG1lc3NhZ2VOYW1lLCAiQ2FsbERpZFJlY2VpdmVQcmV2YWxlbnREb21haW5zIikpIHsKKyAg
ICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkNhbGxEaWRS
ZWNlaXZlTG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMiKSkgewogICAgICAgICBBU1NFUlQobWVzc2Fn
ZUJvZHkpOwogICAgICAgICBBU1NFUlQoV0tHZXRUeXBlSUQobWVzc2FnZUJvZHkpID09IFdLQXJy
YXlHZXRUeXBlSUQoKSk7CiAKQEAgLTQyOSw3ICs0MjksNyBAQCB2b2lkIEluamVjdGVkQnVuZGxl
OjpkaWRSZWNlaXZlTWVzc2FnZVRvUGFnZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tTdHJpbmdS
ZWYgbQogICAgICAgICAgICAgICAgIGRvbWFpbnMudW5jaGVja2VkQXBwZW5kKHRvV1RGU3RyaW5n
KHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihpdGVtKSkpOwogICAgICAgICB9CiAKLSAgICAgICAg
bV90ZXN0UnVubmVyLT5jYWxsRGlkUmVjZWl2ZVByZXZhbGVudERvbWFpbnNDYWxsYmFjayhXVEZN
b3ZlKGRvbWFpbnMpKTsKKyAgICAgICAgbV90ZXN0UnVubmVyLT5jYWxsRGlkUmVjZWl2ZUxvYWRl
ZFRoaXJkUGFydHlEb21haW5zQ2FsbGJhY2soV1RGTW92ZShkb21haW5zKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAppbmRleCAyZTk4Y2Y1ZDU2YWUxNmExY2YwNjI2MWQ0
OTIwZDhjZmY2ZmNkMzliLi43YjdhMDNmYzBlNDUxMDk3MjQ4NDdjNjEwZTUzMDY5Mjc4MjVjOWM0
IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RS
dW5uZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVz
dFJ1bm5lci5jcHAKQEAgLTc1NCw3ICs3NTQsNyBAQCBlbnVtIHsKICAgICBTdGF0aXN0aWNzRGlk
U2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0NhbGxiYWNrSUQsCiAgICAgU3RhdGlzdGlj
c0RpZFNldEZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlQ2FsbGJhY2tJRCwKICAgICBB
bGxTdG9yYWdlQWNjZXNzRW50cmllc0NhbGxiYWNrSUQsCi0gICAgR2V0UHJldmFsZW50RG9tYWlu
c0NhbGxiYWNrSUQsCisgICAgTG9hZGVkVGhpcmRQYXJ0eURvbWFpbnNDYWxsYmFja0lELAogICAg
IERpZFJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFsc0NhbGxiYWNrSUQsCiAgICAgR2V0QXBwbGlj
YXRpb25NYW5pZmVzdENhbGxiYWNrSUQsCiAgICAgVGV4dERpZENoYW5nZUluVGV4dEZpZWxkQ2Fs
bGJhY2tJRCwKQEAgLTIzNTUsMTUgKzIzNTUsMTUgQEAgdm9pZCBUZXN0UnVubmVyOjpjYWxsRGlk
UmVjZWl2ZUFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzQ2FsbGJhY2soVmVjdG9yPFN0cmluZz4mIGQK
ICAgICBjYWxsVGVzdFJ1bm5lckNhbGxiYWNrKEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzQ2FsbGJh
Y2tJRCwgMSwgJnJlc3VsdCk7CiB9CiAKLXZvaWQgVGVzdFJ1bm5lcjo6Z2V0UHJldmFsZW50RG9t
YWlucyhKU1ZhbHVlUmVmIGNhbGxiYWNrKQordm9pZCBUZXN0UnVubmVyOjpsb2FkZWRUaGlyZFBh
cnR5RG9tYWlucyhKU1ZhbHVlUmVmIGNhbGxiYWNrKQogewotICAgIGNhY2hlVGVzdFJ1bm5lckNh
bGxiYWNrKEdldFByZXZhbGVudERvbWFpbnNDYWxsYmFja0lELCBjYWxsYmFjayk7CisgICAgY2Fj
aGVUZXN0UnVubmVyQ2FsbGJhY2soTG9hZGVkVGhpcmRQYXJ0eURvbWFpbnNDYWxsYmFja0lELCBj
YWxsYmFjayk7CiAgICAgCi0gICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1l
ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiR2V0UHJldmFsZW50RG9t
YWlucyIpKTsKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUgPSBhZG9w
dFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJMb2FkZWRUaGlyZFBhcnR5RG9tYWlu
cyIpKTsKICAgICBXS0J1bmRsZVBvc3RNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24o
KS5idW5kbGUoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG51bGxwdHIpOwogfQogCi12b2lkIFRlc3RS
dW5uZXI6OmNhbGxEaWRSZWNlaXZlUHJldmFsZW50RG9tYWluc0NhbGxiYWNrKFZlY3RvcjxTdHJp
bmc+JiYgZG9tYWlucykKK3ZvaWQgVGVzdFJ1bm5lcjo6Y2FsbERpZFJlY2VpdmVMb2FkZWRUaGly
ZFBhcnR5RG9tYWluc0NhbGxiYWNrKFZlY3RvcjxTdHJpbmc+JiYgZG9tYWlucykKIHsKICAgICBX
S0J1bmRsZUZyYW1lUmVmIG1haW5GcmFtZSA9IFdLQnVuZGxlUGFnZUdldE1haW5GcmFtZShJbmpl
Y3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkucGFnZSgpLT5wYWdlKCkpOwogICAgIEpTQ29udGV4dFJl
ZiBjb250ZXh0ID0gV0tCdW5kbGVGcmFtZUdldEphdmFTY3JpcHRDb250ZXh0KG1haW5GcmFtZSk7
CkBAIC0yMzg0LDcgKzIzODQsNyBAQCB2b2lkIFRlc3RSdW5uZXI6OmNhbGxEaWRSZWNlaXZlUHJl
dmFsZW50RG9tYWluc0NhbGxiYWNrKFZlY3RvcjxTdHJpbmc+JiYgZG9tYWlucwogICAgIAogICAg
IEpTVmFsdWVSZWYgcmVzdWx0ID0gSlNWYWx1ZU1ha2VGcm9tSlNPTlN0cmluZyhjb250ZXh0LCBh
ZG9wdChKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhzdHJpbmdCdWlsZGVyLnRvU3RyaW5n
KCkudXRmOCgpLmRhdGEoKSkpLmdldCgpKTsKIAotICAgIGNhbGxUZXN0UnVubmVyQ2FsbGJhY2so
R2V0UHJldmFsZW50RG9tYWluc0NhbGxiYWNrSUQsIDEsICZyZXN1bHQpOworICAgIGNhbGxUZXN0
UnVubmVyQ2FsbGJhY2soTG9hZGVkVGhpcmRQYXJ0eURvbWFpbnNDYWxsYmFja0lELCAxLCAmcmVz
dWx0KTsKIH0KIAogdm9pZCBUZXN0UnVubmVyOjphZGRNb2NrTWVkaWFEZXZpY2UoSlNTdHJpbmdS
ZWYgcGVyc2lzdGVudElkLCBKU1N0cmluZ1JlZiBsYWJlbCwgY29uc3QgY2hhciogdHlwZSkKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5l
ci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgK
aW5kZXggZGEwYWQxZmJhOWI5MjQ4NzEzZDA0ZjFhYmExNGUxZjY2MDhiODNhNy4uNjFkYjkzZjYw
MjRiMWM3OGY2YWE3YTU1MGEyYTRkNzM0ZGU2YWMyNSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKKysrIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKQEAgLTQ0OSw4ICs0NDksOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzdGF0aXN0aWNzQ2FsbERpZFNldEZpcnN0UGFydHlXZWJzaXRl
RGF0YVJlbW92YWxNb2RlQ2FsbGJhY2soKTsKICAgICB2b2lkIHN0YXRpc3RpY3NSZXNldFRvQ29u
c2lzdGVudFN0YXRlKEpTVmFsdWVSZWYgY29tcGxldGlvbkhhbmRsZXIpOwogICAgIHZvaWQgc3Rh
dGlzdGljc0NhbGxEaWRSZXNldFRvQ29uc2lzdGVudFN0YXRlQ2FsbGJhY2soKTsKLSAgICB2b2lk
IGdldFByZXZhbGVudERvbWFpbnMoSlNWYWx1ZVJlZiBjYWxsYmFjayk7Ci0gICAgdm9pZCBjYWxs
RGlkUmVjZWl2ZVByZXZhbGVudERvbWFpbnNDYWxsYmFjayhWZWN0b3I8U3RyaW5nPiYmIGRvbWFp
bnMpOworICAgIHZvaWQgbG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMoSlNWYWx1ZVJlZiBjYWxsYmFj
ayk7CisgICAgdm9pZCBjYWxsRGlkUmVjZWl2ZUxvYWRlZFRoaXJkUGFydHlEb21haW5zQ2FsbGJh
Y2soVmVjdG9yPFN0cmluZz4mJiBkb21haW5zKTsKIAogICAgIC8vIEluamVjdGVkIGJ1bmRsZSBm
b3JtIGNsaWVudC4KICAgICB2b2lkIGluc3RhbGxUZXh0RGlkQ2hhbmdlSW5UZXh0RmllbGRDYWxs
YmFjayhKU1ZhbHVlUmVmIGNhbGxiYWNrKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29u
dHJvbGxlci5jcHAKaW5kZXggNzFjMzU4YTI3ZGUyNmM4ZmM5ZTY4ZTcyZmM2NzUzYTUyYTZhOTI3
ZS4uMzljNDFhMDU5ZWExMWYwYmUxMmY0ZGE4ODc3MjUzMzA1YTFjYzc5YSAxMDA2NDQKLS0tIGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKQEAgLTExMjYsNyArMTEyNiw3IEBAIGJv
b2wgVGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMoY29uc3QgVGVz
dE9wdGlvbnMmIG9wdGlvbnMsIFJlCiAgICAgc2V0QWxsb3dzQW55U1NMQ2VydGlmaWNhdGUodHJ1
ZSk7CiAKICAgICBzdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSgpOwotICAgIGNsZWFy
UHJldmFsZW50RG9tYWlucygpOworICAgIGNsZWFyTG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMoKTsK
IAogICAgIGNsZWFyQWRDbGlja0F0dHJpYnV0aW9uKCk7CiAKQEAgLTMxMzAsMTEgKzMxMzAsMTEg
QEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6Z2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoKQogewog
fQogCi12b2lkIFRlc3RDb250cm9sbGVyOjpnZXRQcmV2YWxlbnREb21haW5zKCkKK3ZvaWQgVGVz
dENvbnRyb2xsZXI6OmxvYWRlZFRoaXJkUGFydHlEb21haW5zKCkKIHsKIH0KIAotdm9pZCBUZXN0
Q29udHJvbGxlcjo6Y2xlYXJQcmV2YWxlbnREb21haW5zKCkKK3ZvaWQgVGVzdENvbnRyb2xsZXI6
OmNsZWFyTG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMoKQogewogfQogCmRpZmYgLS1naXQgYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RDb250cm9sbGVyLmgKaW5kZXggYThhZDU4ZmUxYTc4OTAxZjM1YjllODNmNmQyYzU1
ZjdiMTM2MDViNi4uZDg4MWMwNzc0YmE0MDNhNGQ5ZDA3YTM3MDRjODAwNjVkZGE4YmJhMCAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCisrKyBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaApAQCAtMjY1LDggKzI2NSw4IEBA
IHB1YmxpYzoKICAgICB2b2lkIHN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKCk7CiAK
ICAgICB2b2lkIGdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKCk7Ci0gICAgdm9pZCBnZXRQcmV2
YWxlbnREb21haW5zKCk7Ci0gICAgdm9pZCBjbGVhclByZXZhbGVudERvbWFpbnMoKTsKKyAgICB2
b2lkIGxvYWRlZFRoaXJkUGFydHlEb21haW5zKCk7CisgICAgdm9pZCBjbGVhckxvYWRlZFRoaXJk
UGFydHlEb21haW5zKCk7CiAgICAgdm9pZCBnZXRXZWJWaWV3Q2F0ZWdvcnkoKTsKICAgICB2b2lk
IHNldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkKGJvb2wpOwogCmRpZmYgLS1naXQgYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdEludm9jYXRpb24uY3BwCmluZGV4IGY4Y2NlMjdmYzQ2MTdlYTc2YzZiNTM3NzU0
Y2M0NjJjZDllMGVjMTkuLjY5ZjIxOWVlMzBlMzQ3Y2UyYzM5ZmU4OGI1NTBlODVhNjg2OGIzMjQg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCkBAIC04MjAsOCAr
ODIwLDggQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0
ZWRCdW5kbGUoV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUKICAgICB9CiAjZW5kaWYKICAgICAKLSAg
ICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkdldFByZXZh
bGVudERvbWFpbnMiKSkgewotICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuZ2V0
UHJldmFsZW50RG9tYWlucygpOworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5n
KG1lc3NhZ2VOYW1lLCAiTG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMiKSkgeworICAgICAgICBUZXN0
Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMoKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTk3MCw5ICsxOTcwLDkgQEAgdm9pZCBUZXN0SW52b2Nh
dGlvbjo6ZGlkUmVjZWl2ZUFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKFZlY3RvcjxTdHJpbmc+JiBk
b21haW5zKQogICAgIFdLUGFnZVBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZShUZXN0Q29udHJv
bGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGFnZSgpLCBtZXNzYWdlTmFtZS5nZXQo
KSwgbWVzc2FnZUJvZHkuZ2V0KCkpOwogfQogCi12b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNl
aXZlUHJldmFsZW50RG9tYWlucyhWZWN0b3I8U3RyaW5nPiYmIGRvbWFpbnMpCit2b2lkIFRlc3RJ
bnZvY2F0aW9uOjpkaWRSZWNlaXZlTG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMoVmVjdG9yPFN0cmlu
Zz4mJiBkb21haW5zKQogewotICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFt
ZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkNhbGxEaWRSZWNlaXZl
UHJldmFsZW50RG9tYWlucyIpKTsKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2Fn
ZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJDYWxsRGlkUmVj
ZWl2ZUxvYWRlZFRoaXJkUGFydHlEb21haW5zIikpOwogICAgIAogICAgIFdLUmV0YWluUHRyPFdL
TXV0YWJsZUFycmF5UmVmPiBtZXNzYWdlQm9keSA9IGFkb3B0V0soV0tNdXRhYmxlQXJyYXlDcmVh
dGUoKSk7CiAgICAgZm9yIChhdXRvJiBkb21haW4gOiBkb21haW5zKQpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0SW52b2NhdGlvbi5oCmluZGV4IGVjNGY1OTY2MmM3YjViZTAzNjYxNTA3MmMyMjA1
OTYyZTg0ODU1NjYuLmE0YWQzOTFmNTNlMWY0NzYzZjIzY2Q0N2VkN2MwMDUxNWJhNzVjNjIgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaAorKysgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgKQEAgLTg2LDcgKzg2LDcgQEAg
cHVibGljOgogICAgIHZvaWQgZGlkU2V0VmVyeVByZXZhbGVudFJlc291cmNlKCk7CiAgICAgdm9p
ZCBkaWRTZXRIYXNIYWRVc2VySW50ZXJhY3Rpb24oKTsKICAgICB2b2lkIGRpZFJlY2VpdmVBbGxT
dG9yYWdlQWNjZXNzRW50cmllcyhWZWN0b3I8U3RyaW5nPiYgZG9tYWlucyk7Ci0gICAgdm9pZCBk
aWRSZWNlaXZlUHJldmFsZW50RG9tYWlucyhWZWN0b3I8U3RyaW5nPiYmIGRvbWFpbnMpOworICAg
IHZvaWQgZGlkUmVjZWl2ZUxvYWRlZFRoaXJkUGFydHlEb21haW5zKFZlY3RvcjxTdHJpbmc+JiYg
ZG9tYWlucyk7CiAgICAgdm9pZCBkaWRSZWNlaXZlV2ViVmlld0NhdGVnb3J5KFN0cmluZyYpOwog
ICAgIHZvaWQgZGlkU2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQoKTsKIApkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tCmluZGV4
IGZjMWQ1MWI3NDljOGIzMjFmZTRmN2EyMjU1N2I4MWFkOWU2YjkwMTIuLjk3MWFjNTAzZDg2YWQx
N2E3M2Y1YTVhYjIyODM5NmU1Nzg4ZDM0ZTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KQEAgLTM0MiwyOCArMzQyLDI4IEBA
IHZvaWQgVGVzdENvbnRyb2xsZXI6OmdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKCkKICAgICB9
XTsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6Z2V0UHJldmFsZW50RG9tYWlucygpCit2b2lk
IFRlc3RDb250cm9sbGVyOjpsb2FkZWRUaGlyZFBhcnR5RG9tYWlucygpCiB7CiAgICAgYXV0byog
cGFyZW50VmlldyA9IG1haW5XZWJWaWV3KCk7CiAgICAgaWYgKCFwYXJlbnRWaWV3KQogICAgICAg
ICByZXR1cm47CiAgICAgCi0gICAgW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLndlYnNpdGVE
YXRhU3RvcmUgX2dldFByZXZhbGVudERvbWFpbnNGb3I6cGFyZW50Vmlldy0+cGxhdGZvcm1WaWV3
KCkgY29tcGxldGlvbkhhbmRsZXI6XihOU0FycmF5PE5TU3RyaW5nICo+ICpuc0RvbWFpbnMpIHsK
KyAgICBbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfbG9hZGVk
VGhpcmRQYXJ0eURvbWFpbnNGb3I6cGFyZW50Vmlldy0+cGxhdGZvcm1WaWV3KCkgY29tcGxldGlv
bkhhbmRsZXI6XihOU0FycmF5PE5TU3RyaW5nICo+ICpuc0RvbWFpbnMpIHsKICAgICAgICAgVmVj
dG9yPFN0cmluZz4gZG9tYWluczsKICAgICAgICAgZG9tYWlucy5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KG5zRG9tYWlucy5jb3VudCk7CiAgICAgICAgIGZvciAoTlNTdHJpbmcgKmRvbWFpbiA6IG5z
RG9tYWlucykKICAgICAgICAgICAgIGRvbWFpbnMudW5jaGVja2VkQXBwZW5kKGRvbWFpbik7Ci0g
ICAgICAgIG1fY3VycmVudEludm9jYXRpb24tPmRpZFJlY2VpdmVQcmV2YWxlbnREb21haW5zKFdU
Rk1vdmUoZG9tYWlucykpOworICAgICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5kaWRSZWNlaXZl
TG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMoV1RGTW92ZShkb21haW5zKSk7CiAgICAgfV07CiB9CiAK
LXZvaWQgVGVzdENvbnRyb2xsZXI6OmNsZWFyUHJldmFsZW50RG9tYWlucygpCit2b2lkIFRlc3RD
b250cm9sbGVyOjpjbGVhckxvYWRlZFRoaXJkUGFydHlEb21haW5zKCkKIHsKICAgICBhdXRvKiBw
YXJlbnRWaWV3ID0gbWFpbldlYlZpZXcoKTsKICAgICBpZiAoIXBhcmVudFZpZXcpCiAgICAgICAg
IHJldHVybjsKIAotICAgIFtnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0
b3JlIF9jbGVhclByZXZhbGVudERvbWFpbnNGb3I6cGFyZW50Vmlldy0+cGxhdGZvcm1WaWV3KCld
OworICAgIFtnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlIF9jbGVh
ckxvYWRlZFRoaXJkUGFydHlEb21haW5zRm9yOnBhcmVudFZpZXctPnBsYXRmb3JtVmlldygpXTsK
IH0KIAogdm9pZCBUZXN0Q29udHJvbGxlcjo6Z2V0V2ViVmlld0NhdGVnb3J5KCkKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1
ZTEyNTk4NmQ5NmRhYTE4ODIwMzYzOTA2ZWNiMjRiMjRhZGI3MmIyLi43NDBlZGFmMjMwYmU1ZTIw
ZGE1Zjk1M2I0Y2NiZGQ0ZGU5YjFhMGE1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMjAtMDMt
MTMgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAg
UmVwb3J0IGFsbCB0aGlyZCBwYXJ0eSBsb2FkcyBvbiBhIHBlci1wYWdlIGJhc2lzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDkwMzIKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzYwMzk3MzIzPgorCisgICAgICAgIFJldmlld2VkIGJ5IENocmlzIER1
bWV6LgorCisgICAgICAgIE5vdyB0aGF0IHdlIHJlcG9ydCBhbGwgbG9hZGVkIHRoaXJkIHBhcnR5
IGRvbWFpbnMsIHdlIG5vIGxvbmdlciBuZWVkCisgICAgICAgIElUUCB0byB0ZXN0IHRoaXMgY2Fs
bC4gV2UgY2FuIGVsaW1pbmF0ZSB0aGUgZHVhbCB0ZXN0aW5nIGZvcgorICAgICAgICBtZW1vcnkv
ZGF0YWJhc2Ugc2V0dXAgYW5kIGFueSBsb2dpYyByZWxhdGVkIHRvIHNldHRpbmcgYSByZXNvdXJj
ZQorICAgICAgICBhcyBwcmV2YWxlbnQuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNl
TG9hZFN0YXRpc3RpY3MvbG9hZGVkLXJlZ2lzdHJhYmxlLWRvbWFpbnMtZ2V0LXJlcG9ydGVkLWV4
cGVjdGVkLnR4dDogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQv
d2ViLXNvY2tldC1sb2Fkcy1jYXB0dXJlZC1pbi1wZXItcGFnZS1kb21haW5zLWV4cGVjdGVkLnR4
dC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvbG9hZGVkLXJl
Z2lzdHJhYmxlLWRvbWFpbnMtZ2V0LXJlcG9ydGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0
dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9wcmV2YWxlbnQtZG9tYWlucy1wZXItcGFn
ZS1kYXRhYmFzZS1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3ByZXZhbGVudC1kb21haW5zLXBlci1wYWdlLWRhdGFiYXNl
Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzL3ByZXZhbGVudC1kb21haW5zLXBlci1wYWdlLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICog
aHR0cC90ZXN0cy93ZWJzb2NrZXQvd2ViLXNvY2tldC1sb2Fkcy1jYXB0dXJlZC1pbi1wZXItcGFn
ZS1kb21haW5zLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC93
ZWItc29ja2V0LWxvYWRzLWNhcHR1cmVkLWluLXBlci1wYWdlLWRvbWFpbnMuaHRtbDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgU2luY2UgdGhpcyB0
ZXN0IG5vIGxvbmdlciB1c2VzIFVJSGVscGVyLmFjdGl2YXRlQXQsIGl0IGNhbiBiZQorICAgICAg
ICB1bnNraXBwZWQgaW4gaU9TCisKIDIwMjAtMDMtMTIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KIAogICAgICAgICBodHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BhZ2UtY2FjaGUt
Y29tcGxldGVkLXBheW1lbnQtcmVzcG9uc2UuaHR0cHMuaHRtbCBpcyBmbGFreSBmYWlsaW5nLgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
L2xvYWRlZC1yZWdpc3RyYWJsZS1kb21haW5zLWdldC1yZXBvcnRlZC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvbG9hZGVkLXJlZ2lz
dHJhYmxlLWRvbWFpbnMtZ2V0LXJlcG9ydGVkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jOWZh
MmZjYmU5ZDEzN2JhMDNjNTg2MTJkZWY2Nzg3NGFmMDEyN2YwCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2xvYWRlZC1yZWdp
c3RyYWJsZS1kb21haW5zLWdldC1yZXBvcnRlZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBA
QAorVGVzdHMgdGhhdCBhIGlmcmFtZSBnZXRzIHJlcG9ydGVkIGFzIGEgbG9hZGVkIHRoaXJkIHBh
cnR5IGRvbWFpbi4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgTG9hZGVk
IGRvbWFpbiB3YXMgc3VjY2Vzc2Z1bGx5IGNhcHR1cmVkLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9sb2FkZWQtcmVnaXN0cmFibGUtZG9tYWlu
cy1nZXQtcmVwb3J0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy9sb2FkZWQtcmVnaXN0cmFibGUtZG9tYWlucy1nZXQtcmVwb3J0ZWQuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5hOGIwODdlODllOWNhZjM1ZGEwY2NlY2RmMzU4NzE5OTVkYzE2YTM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzL2xvYWRlZC1yZWdpc3RyYWJsZS1kb21haW5zLWdldC1yZXBvcnRlZC5odG1sCkBAIC0wLDAg
KzEsMzAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHNy
Yz0iL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQg
c3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2Ny
aXB0IHNyYz0iL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzL3V0aWwuanMiPjwvc2Ny
aXB0PgorICAgIDxzY3JpcHQ+CisgICAgICAgIGRlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IGEgaWZy
YW1lIGdldHMgcmVwb3J0ZWQgYXMgYSBsb2FkZWQgdGhpcmQgcGFydHkgZG9tYWluLiIpOworICAg
ICAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICBmdW5jdGlvbiBhc2tGb3JMb2Fk
ZWRUaGlyZFBhcnR5RG9tYWlucygpIHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubG9hZGVkVGhp
cmRQYXJ0eURvbWFpbnMoZnVuY3Rpb24gKGFycmF5T2ZEb21haW5zKSB7CisgICAgICAgICAgICAg
ICAgaWYgKGFycmF5T2ZEb21haW5zLmxlbmd0aCA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAg
IGFza0ZvckxvYWRlZFRoaXJkUGFydHlEb21haW5zKCk7CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGFycmF5T2ZEb21h
aW5zLmluY2x1ZGVzKCJsb2NhbGhvc3QiKSkKKyAgICAgICAgICAgICAgICAgICAgdGVzdFBhc3Nl
ZCgiTG9hZGVkIGRvbWFpbiB3YXMgc3VjY2Vzc2Z1bGx5IGNhcHR1cmVkLiIpOworICAgICAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiTG9hZGVkIGRvbWFp
biB3YXMgbm90IHN1Y2Nlc3NmdWxseSBjYXB0dXJlZC4iKTsKKyAgICAgICAgICAgICAgICBzZXRF
bmFibGVGZWF0dXJlKGZhbHNlLCBmaW5pc2hKU1Rlc3QpOworICAgICAgICAgICAgfSk7CisgICAg
ICAgIH0KKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGlmcmFtZSBvbmxvYWQ9J2Fz
a0ZvckxvYWRlZFRoaXJkUGFydHlEb21haW5zKCknIHNyYz0iaHR0cDovL2xvY2FsaG9zdDo4MDAw
L3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzL2Jhc2ljLWlmcmFtZS5odG1sIj4KKzwv
aWZyYW1lPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3ByZXZhbGVudC1kb21haW5zLXBlci1wYWdlLWRh
dGFiYXNlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy9wcmV2YWxlbnQtZG9tYWlucy1wZXItcGFnZS1kYXRhYmFzZS1leHBlY3RlZC50
eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3ZTFhYmJlOTNhN2YwZDczNWI3M2Iz
NzI1NzE0ZjA0NmM0ZDc1ZWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3By
ZXZhbGVudC1kb21haW5zLXBlci1wYWdlLWRhdGFiYXNlLWV4cGVjdGVkLnR4dAorKysgL2Rldi9u
dWxsCkBAIC0xLDEwICswLDAgQEAKLVRlc3RzIHRoYXQgYSBpZnJhbWUgZnJvbSBhIHByZXZhbGVu
dCBkb21haW4gd2lsbCBiZSByZXBvcnRlZCBhcyBwcmV2YWxlbnQgdW5kZXIgdGhpcyBwYWdlLgot
Ci1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLQotUEFTUyBEb21haW4gd2FzIHN1Y2Nlc3Nm
dWxseSBtYXJrZWQgcHJldmFsZW50LgotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQot
Ci1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVz
b3VyY2VMb2FkU3RhdGlzdGljcy9wcmV2YWxlbnQtZG9tYWlucy1wZXItcGFnZS1kYXRhYmFzZS5o
dG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3ByZXZh
bGVudC1kb21haW5zLXBlci1wYWdlLWRhdGFiYXNlLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDgxMmVhZWUyMzQ3ZWI2ZWViMDkzNDhlYTUxNTdhMGY4OTZmMDdjOTMuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3ByZXZhbGVudC1kb21haW5zLXBlci1wYWdl
LWRhdGFiYXNlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw3NCArMCwwIEBACi08IURPQ1RZUEUg
aHRtbD4KLTxodG1sPgotPGhlYWQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNl
cy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3Vy
Y2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzL3Jlc291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0Pgot
ICAgICAgICBkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBhIGlmcmFtZSBmcm9tIGEgcHJldmFsZW50
IGRvbWFpbiB3aWxsIGJlIHJlcG9ydGVkIGFzIHByZXZhbGVudCB1bmRlciB0aGlzIHBhZ2UuIik7
Ci0gICAgICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOwotCi0gICAgICAgIGZ1bmN0aW9uIGZpbmlz
aFRlc3QoKSB7Ci0gICAgICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmaW5pc2hKU1Rl
c3QpOwotICAgICAgICB9Ci0KLSAgICAgICAgY29uc3QgaWZyYW1lSUQgPSAiaUZyYW1lRnJvbVBy
ZXZhbGVudERvbWFpbiI7Ci0gICAgICAgIGZ1bmN0aW9uIGFza0ZvclByZXZhbGVudFJlc291cmNl
cygpIHsKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuZ2V0UHJldmFsZW50RG9tYWlucyhmdW5jdGlv
biAoYXJyYXlPZkRvbWFpbnMpIHsKLSAgICAgICAgICAgICAgICB2YXIgcGFzc2VkID0gdHJ1ZTsK
LSAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFycmF5T2ZEb21haW5zLmxlbmd0
aDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChhcnJheU9mRG9tYWluc1tpXSA9PT0g
ImxvY2FsaG9zdCIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NlZCA9IHRydWU7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAocGFzc2VkKQotICAgICAgICAgICAg
ICAgICAgICB0ZXN0UGFzc2VkKCJEb21haW4gd2FzIHN1Y2Nlc3NmdWxseSBtYXJrZWQgcHJldmFs
ZW50LiIpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgdGVzdEZh
aWxlZCgiRG9tYWluIHdhcyBub3Qgc3VjY2Vzc2Z1bGx5IG1hcmtlZCBwcmV2YWxlbnQuIik7Ci0g
ICAgICAgICAgICAgICAgZmluaXNoVGVzdCgpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0K
LQotICAgICAgICBmdW5jdGlvbiBhY3RpdmF0ZUVsZW1lbnQoZWxlbWVudElkKSB7Ci0gICAgICAg
ICAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJZCk7Ci0g
ICAgICAgICAgICB2YXIgY2VudGVyWCA9IGVsZW1lbnQub2Zmc2V0TGVmdCArIGVsZW1lbnQub2Zm
c2V0V2lkdGggLyAyOwotICAgICAgICAgICAgdmFyIGNlbnRlclkgPSBlbGVtZW50Lm9mZnNldFRv
cCArIGVsZW1lbnQub2Zmc2V0SGVpZ2h0IC8gMjsKLSAgICAgICAgICAgIFVJSGVscGVyLmFjdGl2
YXRlQXQoY2VudGVyWCwgY2VudGVyWSkudGhlbigKLSAgICAgICAgICAgICAgICBmdW5jdGlvbiAo
KSB7IH0sCi0gICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJQcm9taXNlIHJlamVjdGVkLiIpOwotICAgICAgICAgICAgICAgICAgICBm
aW5pc2hUZXN0KCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgKTsKLSAgICAgICAg
ICAgIGFza0ZvclByZXZhbGVudFJlc291cmNlcygpOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVu
Y3Rpb24gcnVuVGVzdCgpIHsKLSAgICAgICAgICAgIGlmIChkb2N1bWVudC5sb2NhdGlvbi5oYXNo
ICE9PSAiI2VsZW1lbnRBY3RpdmF0ZWQiKSB7Ci0gICAgICAgICAgICAgICAgZG9jdW1lbnQubG9j
YXRpb24uaGFzaCA9ICJlbGVtZW50QWN0aXZhdGVkIjsKLSAgICAgICAgICAgICAgICBhY3RpdmF0
ZUVsZW1lbnQoaWZyYW1lSUQpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAg
Y29uc3QgaG9zdFVuZGVyVGVzdCA9ICJsb2NhbGhvc3Q6ODAwMCI7Ci0gICAgICAgIGNvbnN0IHN0
YXRpc3RpY3NVcmwgPSAiaHR0cDovLyIgKyBob3N0VW5kZXJUZXN0OwotICAgICAgICAKLSAgICAg
ICAgdGVzdFJ1bm5lci5zZXRVc2VJVFBEYXRhYmFzZSh0cnVlKTsKLSAgICAgICAgc2V0RW5hYmxl
RmVhdHVyZSh0cnVlLCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0U3Rh
dGlzdGljc1ByZXZhbGVudFJlc291cmNlKHN0YXRpc3RpY3NVcmwsIHRydWUsIGZ1bmN0aW9uKCkg
ewotICAgICAgICAgICAgICAgIGlmICghdGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NQcmV2YWxlbnRS
ZXNvdXJjZShzdGF0aXN0aWNzVXJsKSkKLSAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgi
SG9zdCBkaWQgbm90IGdldCBzZXQgYXMgcHJldmFsZW50IHJlc291cmNlLiIpOwotCi0gICAgICAg
ICAgICAgICAgbGV0IGlmcmFtZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJh
bWUiKTsKLSAgICAgICAgICAgICAgICBpZnJhbWVFbGVtZW50Lm9ubG9hZCA9IHJ1blRlc3Q7Ci0g
ICAgICAgICAgICAgICAgaWZyYW1lRWxlbWVudC5pZCA9ICJpRnJhbWVGcm9tUHJldmFsZW50RG9t
YWluIjsKLSAgICAgICAgICAgICAgICBpZnJhbWVFbGVtZW50LnNyYyA9ICJodHRwOi8vbG9jYWxo
b3N0OjgwMDAvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZXNvdXJjZXMvYmFzaWMtaWZyYW1lLmh0
bWwiOwotICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaWZyYW1lRWxl
bWVudCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7Ci0gICAgPC9zY3JpcHQ+Ci08L2hl
YWQ+Ci08Ym9keT4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9wcmV2YWxlbnQtZG9tYWlucy1wZXItcGFn
ZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3By
ZXZhbGVudC1kb21haW5zLXBlci1wYWdlLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGMxOGM2ZmJhNzA3YTgxODY3NWVhYThiM2QyMTA2OTFlNzcyNjNlM2YuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3ByZXZhbGVudC1kb21haW5zLXBlci1wYWdlLmh0bWwK
KysrIC9kZXYvbnVsbApAQCAtMSw3MyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgot
PGhlYWQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LmpzIj48
L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL3VpLWhlbHBlci5q
cyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Jl
c291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0PgotICAgICAgICBkZXNjcmlw
dGlvbigiVGVzdHMgdGhhdCBhIGlmcmFtZSBmcm9tIGEgcHJldmFsZW50IGRvbWFpbiB3aWxsIGJl
IHJlcG9ydGVkIGFzIHByZXZhbGVudCB1bmRlciB0aGlzIHBhZ2UuIik7Ci0gICAgICAgIGpzVGVz
dElzQXN5bmMgPSB0cnVlOwotCi0gICAgICAgIGZ1bmN0aW9uIGZpbmlzaFRlc3QoKSB7Ci0gICAg
ICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmaW5pc2hKU1Rlc3QpOwotICAgICAgICB9
Ci0KLSAgICAgICAgY29uc3QgaWZyYW1lSUQgPSAiaUZyYW1lRnJvbVByZXZhbGVudERvbWFpbiI7
Ci0gICAgICAgIGZ1bmN0aW9uIGFza0ZvclByZXZhbGVudFJlc291cmNlcygpIHsKLSAgICAgICAg
ICAgIHRlc3RSdW5uZXIuZ2V0UHJldmFsZW50RG9tYWlucyhmdW5jdGlvbiAoYXJyYXlPZkRvbWFp
bnMpIHsKLSAgICAgICAgICAgICAgICB2YXIgcGFzc2VkID0gZmFsc2U7Ci0gICAgICAgICAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnJheU9mRG9tYWlucy5sZW5ndGg7ICsraSkgewotICAg
ICAgICAgICAgICAgICAgICBpZiAoYXJyYXlPZkRvbWFpbnNbaV0gPT09ICJsb2NhbGhvc3QiKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBwYXNzZWQgPSB0cnVlOwotICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgaWYgKHBhc3NlZCkKLSAgICAgICAgICAgICAgICAgICAgdGVzdFBh
c3NlZCgiRG9tYWluIHdhcyBzdWNjZXNzZnVsbHkgbWFya2VkIHByZXZhbGVudC4iKTsKLSAgICAg
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkRvbWFpbiB3
YXMgbm90IHN1Y2Nlc3NmdWxseSBtYXJrZWQgcHJldmFsZW50LiIpOwotICAgICAgICAgICAgICAg
IGZpbmlzaFRlc3QoKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVu
Y3Rpb24gYWN0aXZhdGVFbGVtZW50KGVsZW1lbnRJZCkgewotICAgICAgICAgICAgdmFyIGVsZW1l
bnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50SWQpOwotICAgICAgICAgICAgdmFy
IGNlbnRlclggPSBlbGVtZW50Lm9mZnNldExlZnQgKyBlbGVtZW50Lm9mZnNldFdpZHRoIC8gMjsK
LSAgICAgICAgICAgIHZhciBjZW50ZXJZID0gZWxlbWVudC5vZmZzZXRUb3AgKyBlbGVtZW50Lm9m
ZnNldEhlaWdodCAvIDI7Ci0gICAgICAgICAgICBVSUhlbHBlci5hY3RpdmF0ZUF0KGNlbnRlclgs
IGNlbnRlclkpLnRoZW4oCi0gICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeyB9LAotICAgICAg
ICAgICAgICAgIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgi
UHJvbWlzZSByZWplY3RlZC4iKTsKLSAgICAgICAgICAgICAgICAgICAgZmluaXNoVGVzdCgpOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICk7Ci0gICAgICAgICAgICBhc2tGb3JQcmV2
YWxlbnRSZXNvdXJjZXMoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIHJ1blRlc3Qo
KSB7Ci0gICAgICAgICAgICBpZiAoZG9jdW1lbnQubG9jYXRpb24uaGFzaCAhPT0gIiNlbGVtZW50
QWN0aXZhdGVkIikgewotICAgICAgICAgICAgICAgIGRvY3VtZW50LmxvY2F0aW9uLmhhc2ggPSAi
ZWxlbWVudEFjdGl2YXRlZCI7Ci0gICAgICAgICAgICAgICAgYWN0aXZhdGVFbGVtZW50KGlmcmFt
ZUlEKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGNvbnN0IGhvc3RVbmRl
clRlc3QgPSAibG9jYWxob3N0OjgwMDAiOwotICAgICAgICBjb25zdCBzdGF0aXN0aWNzVXJsID0g
Imh0dHA6Ly8iICsgaG9zdFVuZGVyVGVzdDsKLSAgICAgICAgCi0gICAgICAgIHNldEVuYWJsZUZl
YXR1cmUodHJ1ZSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRp
c3RpY3NQcmV2YWxlbnRSZXNvdXJjZShzdGF0aXN0aWNzVXJsLCB0cnVlLCBmdW5jdGlvbigpIHsK
LSAgICAgICAgICAgICAgICBpZiAoIXRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzUHJldmFsZW50UmVz
b3VyY2Uoc3RhdGlzdGljc1VybCkpCi0gICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkhv
c3QgZGlkIG5vdCBnZXQgc2V0IGFzIHByZXZhbGVudCByZXNvdXJjZS4iKTsKLQotICAgICAgICAg
ICAgICAgIGxldCBpZnJhbWVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1l
Iik7Ci0gICAgICAgICAgICAgICAgaWZyYW1lRWxlbWVudC5vbmxvYWQgPSBydW5UZXN0OwotICAg
ICAgICAgICAgICAgIGlmcmFtZUVsZW1lbnQuaWQgPSAiaUZyYW1lRnJvbVByZXZhbGVudERvbWFp
biI7Ci0gICAgICAgICAgICAgICAgaWZyYW1lRWxlbWVudC5zcmMgPSAiaHR0cDovL2xvY2FsaG9z
dDo4MDAwL3N0b3JhZ2VBY2Nlc3MvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9iYXNpYy1pZnJhbWUu
aHRtbCI7Ci0gICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpZnJhbWVF
bGVtZW50KTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsKLSAgICA8L3NjcmlwdD4KLTwv
aGVhZD4KLTxib2R5PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy93ZWJzb2NrZXQvd2ViLXNvY2tldC1sb2Fkcy1jYXB0dXJlZC1pbi1wZXItcGFn
ZS1kb21haW5zLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0
L3dlYi1zb2NrZXQtbG9hZHMtY2FwdHVyZWQtaW4tcGVyLXBhZ2UtZG9tYWlucy1leHBlY3RlZC50
eHQKaW5kZXggMTgzNTViY2JiYjk3ZTM0MTMyNjlkYTE4ZjQ3NmQzNjU1OTkyMzAzMi4uNDMzMjlm
YjliYjUzMzhhMzViYmQ4ZWVkMzViNjcxMjNkN2UyNGYwYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvd2ViLXNvY2tldC1sb2Fkcy1jYXB0dXJlZC1pbi1wZXIt
cGFnZS1kb21haW5zLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dl
YnNvY2tldC93ZWItc29ja2V0LWxvYWRzLWNhcHR1cmVkLWluLXBlci1wYWdlLWRvbWFpbnMtZXhw
ZWN0ZWQudHh0CkBAIC0xLDkgKzEsOSBAQAotRW5zdXJlIHdlYiBzb2NrZXQgbG9hZHMgYXJlIGNh
cHR1cmVkIGJ5IHBlci1wYWdlIHByZXZhbGVudCBkb21haW4gbG9nZ2luZy4KK0Vuc3VyZSB3ZWIg
c29ja2V0IGxvYWRzIGFyZSByZXBvcnRlZCBhcyBsb2FkZWQgdGhpcmQgcGFydHkgZG9tYWlucy4K
IAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywg
Zm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCiAKLVBBU1MgRG9tYWluIHdhcyBzdWNjZXNz
ZnVsbHkgbWFya2VkIHByZXZhbGVudC4KK1BBU1MgTG9hZGVkIGRvbWFpbiB3YXMgc3VjY2Vzc2Z1
bGx5IGNhcHR1cmVkLgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENP
TVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC93ZWIt
c29ja2V0LWxvYWRzLWNhcHR1cmVkLWluLXBlci1wYWdlLWRvbWFpbnMuaHRtbCBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3dlYi1zb2NrZXQtbG9hZHMtY2FwdHVyZWQtaW4tcGVy
LXBhZ2UtZG9tYWlucy5odG1sCmluZGV4IGMzZjFiMTMwY2Y2YzFhNTgzODdhMjI4N2RkNzQzNGM0
MjNmMDM5YjAuLmNkZTAzZjcyOTlkOGUwMDE5Mzk5YTcyZTk1ZDQwYTEyMDczZTc3NTIgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3dlYi1zb2NrZXQtbG9hZHMt
Y2FwdHVyZWQtaW4tcGVyLXBhZ2UtZG9tYWlucy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd2Vic29ja2V0L3dlYi1zb2NrZXQtbG9hZHMtY2FwdHVyZWQtaW4tcGVyLXBhZ2UtZG9t
YWlucy5odG1sCkBAIC01LDM0ICs1LDMwIEBACiA8L2hlYWQ+CiA8Ym9keSBvbmxvYWQ9InJ1blRl
c3QoKSI+CiA8c2NyaXB0PgotICAgIGRlc2NyaXB0aW9uKCdFbnN1cmUgd2ViIHNvY2tldCBsb2Fk
cyBhcmUgY2FwdHVyZWQgYnkgcGVyLXBhZ2UgcHJldmFsZW50IGRvbWFpbiBsb2dnaW5nLicpOwor
ICAgIGRlc2NyaXB0aW9uKCdFbnN1cmUgd2ViIHNvY2tldCBsb2FkcyBhcmUgcmVwb3J0ZWQgYXMg
bG9hZGVkIHRoaXJkIHBhcnR5IGRvbWFpbnMuJyk7CiAKICAgICB3aW5kb3cuanNUZXN0SXNBc3lu
YyA9IHRydWU7CiAgICAgCiAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQogICAgICAgICB0ZXN0
UnVubmVyLnNldEFsbG93c0FueVNTTENlcnRpZmljYXRlKHRydWUpOwogCi0gICAgZnVuY3Rpb24g
YXNrRm9yUHJldmFsZW50UmVzb3VyY2VzKCkgewotICAgICAgICB0ZXN0UnVubmVyLmdldFByZXZh
bGVudERvbWFpbnMoZnVuY3Rpb24gKGFycmF5T2ZEb21haW5zKSB7CisgICAgZnVuY3Rpb24gYXNr
Rm9yTG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMoKSB7CisgICAgICAgIHRlc3RSdW5uZXIubG9hZGVk
VGhpcmRQYXJ0eURvbWFpbnMoZnVuY3Rpb24gKGFycmF5T2ZEb21haW5zKSB7CiAgICAgICAgICAg
ICBpZiAoYXJyYXlPZkRvbWFpbnMubGVuZ3RoID09IDApIHsKLSAgICAgICAgICAgICAgICBhc2tG
b3JQcmV2YWxlbnRSZXNvdXJjZXMoKTsKKyAgICAgICAgICAgICAgICBhc2tGb3JMb2FkZWRUaGly
ZFBhcnR5RG9tYWlucygpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIGlmIChhcnJheU9mRG9tYWlucy5pbmNsdWRlcygibG9jYWxob3N0IikpCi0g
ICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiRG9tYWluIHdhcyBzdWNjZXNzZnVsbHkgbWFya2Vk
IHByZXZhbGVudC4iKTsKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJMb2FkZWQgZG9tYWlu
IHdhcyBzdWNjZXNzZnVsbHkgY2FwdHVyZWQuIik7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgdGVzdEZhaWxlZCgiRG9tYWluIHdhcyBub3Qgc3VjY2Vzc2Z1bGx5IG1hcmtlZCBw
cmV2YWxlbnQuIik7CisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiTG9hZGVkIGRvbWFpbiB3
YXMgbm90IHN1Y2Nlc3NmdWxseSBjYXB0dXJlZC4iKTsKICAgICAgICAgICAgIHNldEVuYWJsZUZl
YXR1cmUoZmFsc2UsIGZpbmlzaEpTVGVzdCk7CiAgICAgICAgIH0pOwogICAgIH0KIAogICAgIGZ1
bmN0aW9uIHJ1blRlc3QoKSB7Ci0gICAgICAgIHNldEVuYWJsZUZlYXR1cmUodHJ1ZSwgZnVuY3Rp
b24oKSB7Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNv
dXJjZSgiaHR0cDovL2xvY2FsaG9zdCIsIHRydWUsIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAg
ICAgICBuZXcgV2ViU29ja2V0KCd3czovL2xvY2FsaG9zdDo4ODgwL3dlYnNvY2tldC90ZXN0cy9o
eWJpL3NpbXBsZScpOwotICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoYXNrRm9yUHJldmFsZW50
UmVzb3VyY2VzLCAwKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsKKyAgICAgICAgbmV3
IFdlYlNvY2tldCgnd3M6Ly9sb2NhbGhvc3Q6ODg4MC93ZWJzb2NrZXQvdGVzdHMvaHliaS9zaW1w
bGUnKTsKKyAgICAgICAgc2V0VGltZW91dChhc2tGb3JMb2FkZWRUaGlyZFBhcnR5RG9tYWlucywg
MCk7CiAgICAgfQogPC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mv
VGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRp
b25zCmluZGV4IDMyN2U4NTEzNGJjZGM0ZjViYTQ0NzhjY2NjMzYwMzQyOGE3YTM4ZjIuLjVkMjI3
YWYzMzRkYjhlNDBmZDcxYmRkNWE0ZDNhOGFkZjI4MGFmZGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zCkBAIC0yNzI2LDggKzI3MjYsNiBAQCBodHRwL3Rlc3Rz
L3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvdXNlci1pbnRlcmFjdGlvbi1yZXBvcnRlZC1hZnRlci13
ZWJzaXRlLWRhdGEtcgogd2Via2l0Lm9yZy9iLzE3NDEyMCBodHRwL3Rlc3RzL3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3MvdXNlci1pbnRlcmFjdGlvbi1pbi1jcm9zcy1vcmlnaW4tc3ViLWZyYW1lLWRh
dGFiYXNlLmh0bWwgWyBTa2lwIF0KIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy91
c2VyLWludGVyYWN0aW9uLW9ubHktcmVwb3J0ZWQtb25jZS13aXRoaW4tc2hvcnQtcGVyaW9kLW9m
LXRpbWUtZGF0YWJhc2UuaHRtbCBbIFNraXAgXQogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzL3VzZXItaW50ZXJhY3Rpb24tcmVwb3J0ZWQtYWZ0ZXItd2Vic2l0ZS1kYXRhLXJlbW92
YWwtZGF0YWJhc2UuaHRtbCBbIFNraXAgXQotaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzL3ByZXZhbGVudC1kb21haW5zLXBlci1wYWdlLWRhdGFiYXNlLmh0bWwgWyBTa2lwIF0KLWh0
dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9wcmV2YWxlbnQtZG9tYWlucy1wZXItcGFn
ZS5odG1sIFsgU2tpcCBdCiAjIFNraXBwZWQgaW4gV0syIGV4cGVjdGF0aW9ucyBiZWNhdXNlIGNv
b2tpZSBwYXJ0aXRpb25pbmcgaXMgb25seSBhdmFpbGFibGUgaW4gbWFjT1MgSGlnaCBTaWVycmEg
YW5kIGlPUyAxMS4KIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jb29raWUtZGVs
ZXRpb24uaHRtbCBbIFBhc3MgXQogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2Nv
b2tpZXMtd2l0aC1hbmQtd2l0aG91dC11c2VyLWludGVyYWN0aW9uLmh0bWwgWyBQYXNzIF0K
</data>

          </attachment>
      

    </bug>

</bugzilla>