<?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>222241</bug_id>
          
          <creation_ts>2021-02-20 17:40:27 -0800</creation_ts>
          <short_desc>App-bound request parameter should be passed to main resource requests not the main frame</short_desc>
          <delta_ts>2021-02-24 23:29:24 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>WebKit 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>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>mkwst</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1731895</commentid>
    <comment_count>0</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-02-20 17:40:27 -0800</bug_when>
    <thetext>We should pass app-bound information to main resources not on the main frame.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731896</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-02-20 17:41:41 -0800</bug_when>
    <thetext>&lt;rdar://problem/74560966&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731898</commentid>
    <comment_count>2</comment_count>
      <attachid>421123</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-02-20 17:50:33 -0800</bug_when>
    <thetext>Created attachment 421123
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731900</commentid>
    <comment_count>3</comment_count>
      <attachid>421124</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-02-20 18:21:15 -0800</bug_when>
    <thetext>Created attachment 421124
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731901</commentid>
    <comment_count>4</comment_count>
      <attachid>421124</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-20 19:08:02 -0800</bug_when>
    <thetext>Comment on attachment 421124
Patch

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

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivateForTesting.h:91
&gt; +- (void)_appBoundNavigationData:(void(^)(NSArray&lt;NSNumber *&gt; *))completionHandler;

Missing WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivateForTesting.h:92
&gt; +- (void)_clearAppBoundNavigationReports:(void(^)(void))completionHandler;

Ditto.

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebViewTesting.mm:336
&gt; +- (void)_appBoundNavigationData:(void(^)(NSArray&lt;NSNumber *&gt; *))completionHandler

Really feels like this should pass to the lambda a struct with 2 BOOL data members. NSArray&lt;NSNumber *&gt; * is so opaque.

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/InAppBrowserPrivacy.mm:1446
&gt; +        EXPECT_EQ([navigationData objectAtIndex:0].intValue, 0);

I think it would read better as:
EXPECT_FALSE([navigationData[0].boolValue);

That said, I suggested using a different type in the SPI to make it even clearer.

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/InAppBrowserPrivacy.mm:1447
&gt; +        EXPECT_EQ([navigationData objectAtIndex:1].intValue, 1);

ditto

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/InAppBrowserPrivacy.mm:1479
&gt; +        EXPECT_EQ([navigationData objectAtIndex:0].intValue, 1);

ditto.

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/InAppBrowserPrivacy.mm:1480
&gt; +        EXPECT_EQ([navigationData objectAtIndex:1].intValue, 0);

ditto.

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/InAppBrowserPrivacy.mm:1521
&gt; +    RetainPtr&lt;WKWebViewConfiguration&gt; configuration = adoptNS([[WKWebViewConfiguration alloc] init]);

auto

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/InAppBrowserPrivacy.mm:1524
&gt; +    RetainPtr&lt;TestWKWebView&gt; webView = adoptNS([[TestWKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:configuration.get()]);

auto

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/InAppBrowserPrivacy.mm:1526
&gt; +    [webView loadRequest:request];

Can use [webView loadTestPageNamed:@&quot;page-with-csp&quot;];

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/InAppBrowserPrivacy.mm:1545
&gt; +    RetainPtr&lt;WKWebViewConfiguration&gt; configuration = adoptNS([[WKWebViewConfiguration alloc] init]);

auto

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/InAppBrowserPrivacy.mm:1548
&gt; +    RetainPtr&lt;TestWKWebView&gt; webView = adoptNS([[TestWKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:configuration.get()]);

auto

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/InAppBrowserPrivacy.mm:1557
&gt; +    static bool isDone = false;

Doesn&apos;t need to be static, can simply using
__block bool isDone = false;

&gt; Tools/TestWebKitAPI/cocoa/TestWKWebView.h:71
&gt; +- (void)appBoundNavigationData:(void(^)(NSArray&lt;NSNumber *&gt; *))completionHandler;

Why is this needed? TestWKWebView subclasses WKWebView so you should be able to call _appBoundNavigationData directly, no? (assuming you have included &lt;WebKit/WKWebViewPrivate.h&gt;)

&gt; Tools/TestWebKitAPI/cocoa/TestWKWebView.h:72
&gt; +- (void)clearAppBoundNavigationReports:(void(^)())completionHandler;

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731904</commentid>
    <comment_count>5</comment_count>
      <attachid>421124</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-02-20 19:56:52 -0800</bug_when>
    <thetext>Comment on attachment 421124
Patch

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

&gt;&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivateForTesting.h:91
&gt;&gt; +- (void)_appBoundNavigationData:(void(^)(NSArray&lt;NSNumber *&gt; *))completionHandler;
&gt; 
&gt; Missing WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));

Even for a private testing header file?

&gt;&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebViewTesting.mm:336
&gt;&gt; +- (void)_appBoundNavigationData:(void(^)(NSArray&lt;NSNumber *&gt; *))completionHandler
&gt; 
&gt; Really feels like this should pass to the lambda a struct with 2 BOOL data members. NSArray&lt;NSNumber *&gt; * is so opaque.

Yeah, you&apos;re probably right.

&gt;&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/InAppBrowserPrivacy.mm:1480
&gt;&gt; +        EXPECT_EQ([navigationData objectAtIndex:1].intValue, 0);
&gt; 
&gt; ditto.

will fix all of these.

&gt;&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/InAppBrowserPrivacy.mm:1521
&gt;&gt; +    RetainPtr&lt;WKWebViewConfiguration&gt; configuration = adoptNS([[WKWebViewConfiguration alloc] init]);
&gt; 
&gt; auto

Will fix.

&gt;&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/InAppBrowserPrivacy.mm:1524
&gt;&gt; +    RetainPtr&lt;TestWKWebView&gt; webView = adoptNS([[TestWKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:configuration.get()]);
&gt; 
&gt; auto

Ditto.

&gt;&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/InAppBrowserPrivacy.mm:1526
&gt;&gt; +    [webView loadRequest:request];
&gt; 
&gt; Can use [webView loadTestPageNamed:@&quot;page-with-csp&quot;];

Ditto.

&gt;&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/InAppBrowserPrivacy.mm:1557
&gt;&gt; +    static bool isDone = false;
&gt; 
&gt; Doesn&apos;t need to be static, can simply using
&gt; __block bool isDone = false;

OKay.

&gt;&gt; Tools/TestWebKitAPI/cocoa/TestWKWebView.h:71
&gt;&gt; +- (void)appBoundNavigationData:(void(^)(NSArray&lt;NSNumber *&gt; *))completionHandler;
&gt; 
&gt; Why is this needed? TestWKWebView subclasses WKWebView so you should be able to call _appBoundNavigationData directly, no? (assuming you have included &lt;WebKit/WKWebViewPrivate.h&gt;)

Yes, you&apos;re right.

&gt;&gt; Tools/TestWebKitAPI/cocoa/TestWKWebView.h:72
&gt;&gt; +- (void)clearAppBoundNavigationReports:(void(^)())completionHandler;
&gt; 
&gt; ditto.

Will remove.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731905</commentid>
    <comment_count>6</comment_count>
      <attachid>421124</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-20 20:01:11 -0800</bug_when>
    <thetext>Comment on attachment 421124
Patch

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

&gt;&gt;&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivateForTesting.h:91
&gt;&gt;&gt; +- (void)_appBoundNavigationData:(void(^)(NSArray&lt;NSNumber *&gt; *))completionHandler;
&gt;&gt; 
&gt;&gt; Missing WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));
&gt; 
&gt; Even for a private testing header file?

I am no API expert but this is what I noticed. Just look at other SPIs in this file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731915</commentid>
    <comment_count>7</comment_count>
      <attachid>421124</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-02-20 21:53:09 -0800</bug_when>
    <thetext>Comment on attachment 421124
Patch

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

&gt;&gt;&gt;&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivateForTesting.h:91
&gt;&gt;&gt;&gt; +- (void)_appBoundNavigationData:(void(^)(NSArray&lt;NSNumber *&gt; *))completionHandler;
&gt;&gt;&gt; 
&gt;&gt;&gt; Missing WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));
&gt;&gt; 
&gt;&gt; Even for a private testing header file?
&gt; 
&gt; I am no API expert but this is what I noticed. Just look at other SPIs in this file.

Some do but most in the file don&apos;t. I think it is ok to leave them out in this case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731916</commentid>
    <comment_count>8</comment_count>
      <attachid>421128</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-02-20 21:55:29 -0800</bug_when>
    <thetext>Created attachment 421128
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731917</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-20 22:18:40 -0800</bug_when>
    <thetext>+Alex/Geoff/Brady to answer if we need the availability macro for SPIs or not. I personally think we should have it but this is not my area of expertise.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731944</commentid>
    <comment_count>10</comment_count>
      <attachid>421128</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-02-21 07:35:32 -0800</bug_when>
    <thetext>Comment on attachment 421128
Patch

removing r flag while I figure out iOS bot issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732139</commentid>
    <comment_count>11</comment_count>
      <attachid>421128</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-22 08:31:57 -0800</bug_when>
    <thetext>Comment on attachment 421128
Patch

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

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivateForTesting.h:35
&gt; +@interface _WKAppBoundNavigationTestingData : NSObject

Why a NSObject? Can&apos;t we use a simple struct for this? I mean NSRect / CGRect are just structs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732140</commentid>
    <comment_count>12</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-02-22 08:35:24 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #11)
&gt; Comment on attachment 421128 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=421128&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivateForTesting.h:35
&gt; &gt; +@interface _WKAppBoundNavigationTestingData : NSObject
&gt; 
&gt; Why a NSObject? Can&apos;t we use a simple struct for this? I mean NSRect /
&gt; CGRect are just structs.

Yeah, it needs work, I also need to pass the C++ struct as an rvalue reference instead of copying. I&apos;ll upload a new patch in a bit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732151</commentid>
    <comment_count>13</comment_count>
      <attachid>421200</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-02-22 09:22:41 -0800</bug_when>
    <thetext>Created attachment 421200
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732153</commentid>
    <comment_count>14</comment_count>
      <attachid>421200</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-22 09:27:35 -0800</bug_when>
    <thetext>Comment on attachment 421200
Patch

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

&gt; Source/WebKit/NetworkProcess/NetworkSession.h:209
&gt; +    bool m_hasLoadedAppBoundRequest { false };

If AppBoundNavigationTestingData did not have &quot;Testing&quot; in the name, then you could have a single data member of type AppBoundNavigationTestingData and a single getter / setter on the class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732156</commentid>
    <comment_count>15</comment_count>
      <attachid>421200</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-22 09:30:45 -0800</bug_when>
    <thetext>Comment on attachment 421200
Patch

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

&gt;&gt; Source/WebKit/NetworkProcess/NetworkSession.h:209
&gt;&gt; +    bool m_hasLoadedAppBoundRequest { false };
&gt; 
&gt; If AppBoundNavigationTestingData did not have &quot;Testing&quot; in the name, then you could have a single data member of type AppBoundNavigationTestingData and a single getter / setter on the class.

Or maybe this is only used for Testing, in which case it is fine to have &quot;Testing&quot; in the type name. We may want to add &quot;Testing&quot; in the member name though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732158</commentid>
    <comment_count>16</comment_count>
      <attachid>421200</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-22 09:33:16 -0800</bug_when>
    <thetext>Comment on attachment 421200
Patch

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

&gt; Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:342
&gt; +    request.isAppBound() ? m_session-&gt;setHasLoadedAppBoundRequest(true) : m_session-&gt;setHasLoadedNonAppBoundRequest(true);

I see here that you do need separate setters. That said, you can probably have a single getter to get the AppBoundNavigationTestingData data member.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732557</commentid>
    <comment_count>17</comment_count>
      <attachid>421319</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-02-23 09:23:13 -0800</bug_when>
    <thetext>Created attachment 421319
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732559</commentid>
    <comment_count>18</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-02-23 09:24:33 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #15)
&gt; Comment on attachment 421200 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=421200&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit/NetworkProcess/NetworkSession.h:209
&gt; &gt;&gt; +    bool m_hasLoadedAppBoundRequest { false };
&gt; &gt; 
&gt; &gt; If AppBoundNavigationTestingData did not have &quot;Testing&quot; in the name, then you could have a single data member of type AppBoundNavigationTestingData and a single getter / setter on the class.
&gt; 
&gt; Or maybe this is only used for Testing, in which case it is fine to have
&gt; &quot;Testing&quot; in the type name. We may want to add &quot;Testing&quot; in the member name
&gt; though.

This is only used for testing. I updated it to have a single AppBoundNavigationTestingData data member.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732591</commentid>
    <comment_count>19</comment_count>
      <attachid>421325</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-02-23 10:30:25 -0800</bug_when>
    <thetext>Created attachment 421325
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732621</commentid>
    <comment_count>20</comment_count>
      <attachid>421333</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-02-23 11:10:21 -0800</bug_when>
    <thetext>Created attachment 421333
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732957</commentid>
    <comment_count>21</comment_count>
      <attachid>421333</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-24 10:38:20 -0800</bug_when>
    <thetext>Comment on attachment 421333
Patch

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

r=me with nits

&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:2777
&gt; +        completionHandler({ networkSession-&gt;appBoundNavigationTestingData().hasLoadedAppBoundRequestTesting, networkSession-&gt;appBoundNavigationTestingData().hasLoadedNonAppBoundRequestTesting });

Why not:
`completionHandler(networkSession-&gt;appBoundNavigationTestingData())` ?

Am I missing something?

&gt; Source/WebKit/Shared/NavigatingToAppBoundDomain.h:69
&gt; +        return {{ WTFMove(*hasLoadedAppBoundRequestTesting), WTFMove(*hasLoadedNonAppBoundRequestTesting) }};

No need for the WTFMove() since those are booleans</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732962</commentid>
    <comment_count>22</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-02-24 10:55:33 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #21)
&gt; Comment on attachment 421333 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=421333&amp;action=review
&gt; 
&gt; r=me with nits
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:2777
&gt; &gt; +        completionHandler({ networkSession-&gt;appBoundNavigationTestingData().hasLoadedAppBoundRequestTesting, networkSession-&gt;appBoundNavigationTestingData().hasLoadedNonAppBoundRequestTesting });
&gt; 
&gt; Why not:
&gt; `completionHandler(networkSession-&gt;appBoundNavigationTestingData())` ?
&gt; 
&gt; Am I missing something?

Oh — I meant to ask about this. I don’t think I can, because networkSession-&gt;appBoundNavigationTestingData() returns an lvalue reference and the completion handler takes an rvalue reference. I am not sure of the right thing to do in this case, I think there needs to be a copy, which is why I built a new AppBoundNavigationTestingData struct here.

&gt; 
&gt; &gt; Source/WebKit/Shared/NavigatingToAppBoundDomain.h:69
&gt; &gt; +        return {{ WTFMove(*hasLoadedAppBoundRequestTesting), WTFMove(*hasLoadedNonAppBoundRequestTesting) }};
&gt; 
&gt; No need for the WTFMove() since those are booleans</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732966</commentid>
    <comment_count>23</comment_count>
      <attachid>421333</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-24 11:03:28 -0800</bug_when>
    <thetext>Comment on attachment 421333
Patch

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

&gt;&gt;&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:2777
&gt;&gt;&gt; +        completionHandler({ networkSession-&gt;appBoundNavigationTestingData().hasLoadedAppBoundRequestTesting, networkSession-&gt;appBoundNavigationTestingData().hasLoadedNonAppBoundRequestTesting });
&gt;&gt; 
&gt;&gt; Why not:
&gt;&gt; `completionHandler(networkSession-&gt;appBoundNavigationTestingData())` ?
&gt;&gt; 
&gt;&gt; Am I missing something?
&gt; 
&gt; Oh — I meant to ask about this. I don’t think I can, because networkSession-&gt;appBoundNavigationTestingData() returns an lvalue reference and the completion handler takes an rvalue reference. I am not sure of the right thing to do in this case, I think there needs to be a copy, which is why I built a new AppBoundNavigationTestingData struct here.

Are you sure the CompletionHandler really needs to take a AppBoundNavigationTestingData&amp;&amp;. Wouldn&apos;t a const AppBoundNavigationTestingData&amp; be enough? IPC doesn&apos;t care about getting an rvalue reference.

If it really needs to be an rvalue reference, then the following might work:
completionHandler({ networkSession-&gt;appBoundNavigationTestingData() })
or
completionHandler(AppBoundNavigationTestingData { networkSession-&gt;appBoundNavigationTestingData() })</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732987</commentid>
    <comment_count>24</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-02-24 11:23:58 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #23)
&gt; Comment on attachment 421333 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=421333&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:2777
&gt; &gt;&gt;&gt; +        completionHandler({ networkSession-&gt;appBoundNavigationTestingData().hasLoadedAppBoundRequestTesting, networkSession-&gt;appBoundNavigationTestingData().hasLoadedNonAppBoundRequestTesting });
&gt; &gt;&gt; 
&gt; &gt;&gt; Why not:
&gt; &gt;&gt; `completionHandler(networkSession-&gt;appBoundNavigationTestingData())` ?
&gt; &gt;&gt; 
&gt; &gt;&gt; Am I missing something?
&gt; &gt; 
&gt; &gt; Oh — I meant to ask about this. I don’t think I can, because networkSession-&gt;appBoundNavigationTestingData() returns an lvalue reference and the completion handler takes an rvalue reference. I am not sure of the right thing to do in this case, I think there needs to be a copy, which is why I built a new AppBoundNavigationTestingData struct here.
&gt; 
&gt; Are you sure the CompletionHandler really needs to take a
&gt; AppBoundNavigationTestingData&amp;&amp;. Wouldn&apos;t a const
&gt; AppBoundNavigationTestingData&amp; be enough? IPC doesn&apos;t care about getting an
&gt; rvalue reference.
&gt; 

Yes in that case, I think const AppBoundNavigationTestingData&amp; is enough.

&gt; If it really needs to be an rvalue reference, then the following might work:
&gt; completionHandler({ networkSession-&gt;appBoundNavigationTestingData() })
&gt; or
&gt; completionHandler(AppBoundNavigationTestingData {
&gt; networkSession-&gt;appBoundNavigationTestingData() })</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732999</commentid>
    <comment_count>25</comment_count>
      <attachid>421434</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-02-24 11:39:37 -0800</bug_when>
    <thetext>Created attachment 421434
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1733000</commentid>
    <comment_count>26</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-02-24 11:39:53 -0800</bug_when>
    <thetext>(In reply to katherine_cheney from comment #25)
&gt; Created attachment 421434 [details]
&gt; Patch

Thanks for the review. I asked Brent to take a look as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1733087</commentid>
    <comment_count>27</comment_count>
      <attachid>421434</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2021-02-24 14:55:40 -0800</bug_when>
    <thetext>Comment on attachment 421434
Patch

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

&gt; Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp:110
&gt; +    if (resource.type() != CachedResource::Type::MainResource || !frame.isMainFrame()) {

Good catch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1733170</commentid>
    <comment_count>28</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-02-24 17:45:56 -0800</bug_when>
    <thetext>Committed r273465: &lt;https://commits.webkit.org/r273465&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 421434.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1733237</commentid>
    <comment_count>29</comment_count>
      <attachid>421434</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-02-24 23:29:24 -0800</bug_when>
    <thetext>Comment on attachment 421434
Patch

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

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/InAppBrowserPrivacy.mm:1549
&gt; +    __block bool isDone = false;

This isDone needs to be defined before NSMutableURLRequest requestWithURL...] above!
This change caused a build failure because of that.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421123</attachid>
            <date>2021-02-20 17:50:33 -0800</date>
            <delta_ts>2021-02-20 18:32:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222241-20210220175032.patch</filename>
            <type>text/plain</type>
            <size>19718</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDdjMDJiMWVhMmViNDRlNzE5
ZDgyNGY0ODU0Y2YwZDhiNjBiMzNmYWEuLjE0ZGU0YjUzMGNjYjA3MTgwYWQ2OTc4YjgxYmJiODAy
OGJmYTUyNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAKKzIwMjEtMDItMjAgIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgQXBwLWJvdW5kIHJl
cXVlc3QgcGFyYW1ldGVyIHNob3VsZCBiZSBwYXNzZWQgdG8gbWFpbiByZXNvdXJjZSByZXF1ZXN0
cyBub3QgdGhlIG1haW4gZnJhbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyMjI0MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzQ1NjA5NjY+IAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNldCB0aGUg
aXNBcHBCb3VuZCBwYXJhbWV0ZXIgb24gdGhlIHJlc291cmNlIHJlcXVlc3QgaWYgaXQgaXMgYSBt
YWluCisgICAgICAgIHJlc291cmNlIG5vdCBvbiB0aGUgbWFpbiBmcmFtZS4gT3RoZXJ3aXNlIG1v
c3RseSBjaGFuZ2VzIHRvIGFkZCBiZXR0ZXIgdGVzdGluZy4KKworICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6OmFwcEJvdW5kTmF2aWdhdGlvbkRhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6Y2xlYXJBcHBCb3VuZE5hdmlnYXRpb25SZXBvcnRzKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtT
ZXNzaW9uLmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpzZXRIYXNMb2FkZWRB
cHBCb3VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6aGFzTG9h
ZGVkQXBwQm91bmRSZXF1ZXN0IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Np
b246OnNldEhhc0xvYWRlZE5vbkFwcEJvdW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtTZXNzaW9uOjpoYXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3QgY29uc3QpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tDb2NvYTo6TmV0d29ya0RhdGFUYXNrQ29jb2EpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3Rpbmcu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1Rlc3RpbmcubW06Cisg
ICAgICAgICgtW1dLV2ViVmlldyBfYXBwQm91bmROYXZpZ2F0aW9uRGF0YTpdKToKKyAgICAgICAg
KC1bV0tXZWJWaWV3IF9jbGVhckFwcEJvdW5kTmF2aWdhdGlvblJlcG9ydHM6XSk6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6YXBwQm91bmROYXZpZ2F0aW9uRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6Y2xlYXJBcHBCb3VuZE5hdmlnYXRpb25SZXBvcnRzKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRl
clN0cmF0ZWd5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6OmxvYWRS
ZXNvdXJjZSk6CisgICAgICAgIFRoZSBmaXguCisKIDIwMjEtMDItMTkgIEthdGUgQ2hlbmV5ICA8
a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CiAKICAgICAgICAgQ3JlYXRlIFNRTGl0ZSBza2Vs
ZXRvbiBpbXBsZW1lbnRhdGlvbiBmb3IgUENNIGZyYXVkIHByZXZlbnRpb24KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggNjgzMDE1ZDE2
OWE4YzI5OTIzMzBmZjQ2MDg1NGNjNmMzMTYyODM2Yy4uZGMwNTVhZTkxN2VjNmRlZTM1ZmExNGI1
M2E2NWMyNDllZTNiYzBmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTI3NzAsNCArMjc3MCwyMiBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpzZXRDT1JTRGlzYWJsaW5nUGF0dGVybnMoUGFnZUlkZW50aWZpZXIgcGFnZUlkZW50aWZp
ZXIsIFZlYwogICAgIG1fZXh0ZW5zaW9uQ09SU0Rpc2FibGluZ1BhdHRlcm5zLnNldChwYWdlSWRl
bnRpZmllciwgV1RGTW92ZShwYXJzZWRQYXR0ZXJucykpOwogfQogCit2b2lkIE5ldHdvcmtQcm9j
ZXNzOjphcHBCb3VuZE5hdmlnYXRpb25EYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6OnBhaXI8Ym9vbCwgYm9vbD4pPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQoreworICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtT
ZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjptYWtl
X3BhaXIobmV0d29ya1Nlc3Npb24tPmhhc0xvYWRlZEFwcEJvdW5kUmVxdWVzdCgpLCBuZXR3b3Jr
U2Vzc2lvbi0+aGFzTG9hZGVkTm9uQXBwQm91bmRSZXF1ZXN0KCkpKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworfQorCit2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpjbGVhckFwcEJvdW5kTmF2aWdhdGlvblJlcG9ydHMoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7
CisgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vz
c2lvbklEKSkgeworICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+c2V0SGFzTG9hZGVkQXBwQm91bmRS
ZXF1ZXN0KGZhbHNlKTsKKyAgICAgICAgbmV0d29ya1Nlc3Npb24tPnNldEhhc0xvYWRlZE5vbkFw
cEJvdW5kUmVxdWVzdChmYWxzZSk7CisgICAgfQorICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IGVhMmRkN2Y1MzhjMDc0NjRiODY0YTAxYzVlMzhjY2Vk
YmFlYThjNzIuLjUwOWQ3MWFmODYxOTUxYjlkOGYzMjI3NzY2ZTI5MDAxNmJkM2FlMGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTM3Nyw2
ICszNzcsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBzaG91bGREaXNhYmxlQ09SU0ZvclJlcXVlc3RU
byhXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgVVJMJikgY29uc3Q7CiAgICAgdm9pZCBz
ZXRDT1JTRGlzYWJsaW5nUGF0dGVybnMoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFZlY3RvcjxT
dHJpbmc+JiYpOwogCisgICAgdm9pZCBhcHBCb3VuZE5hdmlnYXRpb25EYXRhKFBBTDo6U2Vzc2lv
bklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6cGFpcjxib29sLCBib29sPik+JiYpOwor
ICAgIHZvaWQgY2xlYXJBcHBCb3VuZE5hdmlnYXRpb25SZXBvcnRzKFBBTDo6U2Vzc2lvbklELCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworCiBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZv
cm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoY29uc3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggODQxMWJiZTlkNWVhNmZiZTNlYmM0ZWQw
ZmE1NDllOGY0YTc4Y2JhZi4uNWM1MzRjZDQ2ZTVhMWMxYmY4YTM5OTg0OWJlN2VjN2Q5NzdlNTRh
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0xODksNCArMTg5LDcgQEAgbWVzc2FnZXMgLT4gTmV0d29y
a1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogI2VuZGlmCiAgICAgVXBkYXRlQnVuZGxlSWRlbnRp
ZmllcihTdHJpbmcgYnVuZGxlSWRlbnRpZmllcikgLT4gKCkgQXN5bmMKICAgICBDbGVhckJ1bmRs
ZUlkZW50aWZpZXIoKSAtPiAoKSBBc3luYworICAgIAorICAgIEFwcEJvdW5kTmF2aWdhdGlvbkRh
dGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoc3RkOjpwYWlyPGJvb2wsIGJvb2w+IGRh
dGEpIEFzeW5jCisgICAgQ2xlYXJBcHBCb3VuZE5hdmlnYXRpb25SZXBvcnRzKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCkgLT4gKCkgQXN5bmMKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Nlc3Npb24uaAppbmRleCBmZjIxZjI4ZjNiN2RhZmY0YmY0ZThhYTRjNzQ0
YTI4OWZlZjBkZjhiLi4yNjNiNzFiNzJhZWM2OWVkYTI4ZjJhYWJlNmEyZDI5MDMyYjY3ZDQzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCkBAIC0x
NTYsNiArMTU2LDExIEBAIHB1YmxpYzoKICAgICBOZXR3b3JrTG9hZFNjaGVkdWxlciYgbmV0d29y
a0xvYWRTY2hlZHVsZXIoKTsKICAgICBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXImIHBy
aXZhdGVDbGlja01lYXN1cmVtZW50KCkgeyByZXR1cm4gKm1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQ7IH0KIAorICAgIHZvaWQgc2V0SGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0KGJvb2wgaGFzTG9h
ZGVkQXBwQm91bmRSZXF1ZXN0KSB7IG1faGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0ID0gaGFzTG9h
ZGVkQXBwQm91bmRSZXF1ZXN0OyB9CisgICAgYm9vbCBoYXNMb2FkZWRBcHBCb3VuZFJlcXVlc3Qo
KSBjb25zdCB7IHJldHVybiBtX2hhc0xvYWRlZEFwcEJvdW5kUmVxdWVzdDsgfQorICAgIHZvaWQg
c2V0SGFzTG9hZGVkTm9uQXBwQm91bmRSZXF1ZXN0KGJvb2wgaGFzTG9hZGVkTm9uQXBwQm91bmRS
ZXF1ZXN0KSB7IG1faGFzTG9hZGVkTm9uQXBwQm91bmRSZXF1ZXN0ID0gaGFzTG9hZGVkTm9uQXBw
Qm91bmRSZXF1ZXN0OyB9CisgICAgYm9vbCBoYXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3QoKSBj
b25zdCB7IHJldHVybiBtX2hhc0xvYWRlZE5vbkFwcEJvdW5kUmVxdWVzdDsgfQorCiBwcm90ZWN0
ZWQ6CiAgICAgTmV0d29ya1Nlc3Npb24oTmV0d29ya1Byb2Nlc3MmLCBjb25zdCBOZXR3b3JrU2Vz
c2lvbkNyZWF0aW9uUGFyYW1ldGVycyYpOwogCkBAIC0yMDAsNiArMjA1LDkgQEAgcHJvdGVjdGVk
OgogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0
cjxTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcj4+IG1fc29mdFVwZGF0ZUxvYWRlcnM7CiAj
ZW5kaWYKKyAgICAKKyAgICBib29sIG1faGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0IHsgZmFsc2Ug
fTsKKyAgICBib29sIG1faGFzTG9hZGVkTm9uQXBwQm91bmRSZXF1ZXN0IHsgZmFsc2UgfTsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KaW5kZXggZDU5M2I0
MmI1MThjYTRjM2ZjNTczNDM3MTNhYzUwYjNkYjVjMDdkMi4uOWJmOTlkMDM1ZGIyYjllZDg2MGU0
NjVkYjVhY2Y0ODM1OTc5ZjBiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCkBAIC0zMzksNiArMzM5
LDggQEAgTmV0d29ya0RhdGFUYXNrQ29jb2E6Ok5ldHdvcmtEYXRhVGFza0NvY29hKE5ldHdvcmtT
ZXNzaW9uJiBzZXNzaW9uLCBOZXR3b3JrRGF0YVQKIAogICAgIE5FVFdPUktfREFUQV9UQVNLX0NP
Q09BX0FERElUSU9OUwogCisgICAgcmVxdWVzdC5pc0FwcEJvdW5kKCkgPyBtX3Nlc3Npb24tPnNl
dEhhc0xvYWRlZEFwcEJvdW5kUmVxdWVzdCh0cnVlKSA6IG1fc2Vzc2lvbi0+c2V0SGFzTG9hZGVk
Tm9uQXBwQm91bmRSZXF1ZXN0KHRydWUpOworCiAgICAgYXBwbHlTbmlmZmluZ1BvbGljaWVzQW5k
QmluZFJlcXVlc3RUb0luZmVyZmFjZUlmTmVlZGVkKG5zUmVxdWVzdCwgc2hvdWxkQ29udGVudFNu
aWZmID09IFdlYkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeTo6U25pZmZDb250ZW50ICYmICF1
cmwuaXNMb2NhbEZpbGUoKSwgc2hvdWxkQ29udGVudEVuY29kaW5nU25pZmYgPT0gV2ViQ29yZTo6
Q29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3k6OlNuaWZmKTsKIAogICAgIG1fdGFzayA9IFtt
X3Nlc3Npb25XcmFwcGVyLT5zZXNzaW9uIGRhdGFUYXNrV2l0aFJlcXVlc3Q6bnNSZXF1ZXN0XTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQ
cml2YXRlRm9yVGVzdGluZy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nLmgKaW5kZXggODg0ZDhjMDg4NWZhN2EzNjNiMmFkODAy
NTQyMmMzM2Y3MTQ1ZWFhMS4uYmY5MmFmYWRlYzc0Y2Q2NjZkMTMzODdkYTJhM2Y4YWY4ZGI3NjNk
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
d1ByaXZhdGVGb3JUZXN0aW5nLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nLmgKQEAgLTg4LDUgKzg4LDcgQEAgdHlwZWRl
ZiBlbnVtIHsKIC0gKHZvaWQpX3NldFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25S
ZXBvcnRVUkxGb3JUZXN0aW5nOihOU1VSTCAqKXVybCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZChe
KSh2b2lkKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19U
QkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCiAtICh2b2lkKV9sYXN0TmF2aWdhdGlvbldhc0FwcEJv
dW5kOih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyOworLSAodm9pZClfYXBwQm91bmRO
YXZpZ2F0aW9uRGF0YToodm9pZCheKShOU0FycmF5PE5TTnVtYmVyICo+ICopKWNvbXBsZXRpb25I
YW5kbGVyOworLSAodm9pZClfY2xlYXJBcHBCb3VuZE5hdmlnYXRpb25SZXBvcnRzOih2b2lkKF4p
KCkpY29tcGxldGlvbkhhbmRsZXI7CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdUZXN0aW5nLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1Rlc3RpbmcubW0KaW5kZXggN2NjMzBlYTQxNDJh
MzUwMDAzYmUxZmM0OTMzOGQ1NGIwYWJkNTk4My4uNjI3NDQ3MmRjZjJhMjQ4ZjY5ODhhZTU2Zjcx
NTRmN2EwYjZkMTE2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlld1Rlc3RpbmcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlld1Rlc3RpbmcubW0KQEAgLTMzMyw0ICszMzMsMjEgQEAKICAgICB9KTsK
IH0KIAorLSAodm9pZClfYXBwQm91bmROYXZpZ2F0aW9uRGF0YToodm9pZCheKShOU0FycmF5PE5T
TnVtYmVyICo+ICopKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgX3BhZ2UtPmFwcEJvdW5kTmF2
aWdhdGlvbkRhdGEoW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25I
YW5kbGVyKV0gKGF1dG8gYXBwQm91bmREYXRhKSB7CisgICAgICAgIE5TTXV0YWJsZUFycmF5PE5T
TnVtYmVyICo+ICpkYXRhID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsKKyAgICAgICAgW2RhdGEg
YWRkT2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoQm9vbDphcHBCb3VuZERhdGEuZmlyc3RdXTsK
KyAgICAgICAgW2RhdGEgYWRkT2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoQm9vbDphcHBCb3Vu
ZERhdGEuc2Vjb25kXV07CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGRhdGEpOworICAgIH0p
OworfQorCistICh2b2lkKV9jbGVhckFwcEJvdW5kTmF2aWdhdGlvblJlcG9ydHM6KHZvaWQoXiko
KSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIF9wYWdlLT5jbGVhckFwcEJvdW5kTmF2aWdhdGlv
blJlcG9ydHMoW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5k
bGVyKV0geworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgIH0pOworfQorCiBAZW5k
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA0NjRiZGE5MWFh
ZjhkMDE1M2YxZTdlN2U5MTljMTQxZDY3MDliNzMxLi41MTE5OWRmMjY1YzRlMjlkNTRmMTM4MDUw
MWE2NTYxYzVhOTY5MTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKQEAgLTEwMzgxLDYgKzEwMzgxLDE2IEBAIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5
IFdlYlBhZ2VQcm94eTo6Y3JlYXRlTmV0d29ya0V4dGVuc2lvbnNTYW5kYm94RXh0ZW5zCiB9CiAj
ZW5kaWYKIAordm9pZCBXZWJQYWdlUHJveHk6OmFwcEJvdW5kTmF2aWdhdGlvbkRhdGEoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChzdGQ6OnBhaXI8Ym9vbCwgYm9vbD4pPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQoreworICAgIHdlYnNpdGVEYXRhU3RvcmUoKS5uZXR3b3JrUHJvY2VzcygpLnNlbmRXaXRo
QXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkFwcEJvdW5kTmF2aWdhdGlvbkRh
dGEobV93ZWJzaXRlRGF0YVN0b3JlLT5zZXNzaW9uSUQoKSksIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OmNsZWFyQXBwQm91bmROYXZpZ2F0aW9u
UmVwb3J0cyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7
CisgICAgd2Vic2l0ZURhdGFTdG9yZSgpLm5ldHdvcmtQcm9jZXNzKCkuc2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6Q2xlYXJBcHBCb3VuZE5hdmlnYXRpb25SZXBv
cnRzKG1fd2Vic2l0ZURhdGFTdG9yZS0+c2Vzc2lvbklEKCkpLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjdW5kZWYgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBh
MGNlYmQ5ZmI0NWU3NmY1MTk1NDUzY2I0OTVjYTNjZTAzODRhNzBmLi45MmY2ZWMxM2MyOTJkYWJk
YmMwNmY1YWJlYTlmN2FlMTY5NTA0NzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaApAQCAtMTg1OCw2ICsxODU4LDggQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIHZvaWQgc2V0TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZChXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmKTsKICAgICB2b2lkIGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBhcHBCb3VuZE5hdmlnYXRpb25EYXRh
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpwYWlyPGJvb2wsIGJvb2w+KT4mJik7CisgICAg
dm9pZCBjbGVhckFwcEJvdW5kTmF2aWdhdGlvblJlcG9ydHMoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKICNlbmRpZgogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCmluZGV4IGNjMjIwM2ZlOGM5
N2E1OTdhZGMzMDY5YjgwYTc4Nzg4ZmJkNWUzMDguLjIyY2UwOTI1OThmMTBkYTZjOGMxZTA0NjM3
ZjYyMDE5MWMwOWVlNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCBXZWJMb2Fk
ZXJTdHJhdGVneTo6fldlYkxvYWRlclN0cmF0ZWd5KCkKIAogdm9pZCBXZWJMb2FkZXJTdHJhdGVn
eTo6bG9hZFJlc291cmNlKEZyYW1lJiBmcmFtZSwgQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9w
dGlvbnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiYm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAocmVzb3VyY2UudHlwZSgpICE9IENh
Y2hlZFJlc291cmNlOjpUeXBlOjpNYWluUmVzb3VyY2UpIHsKKyAgICBpZiAocmVzb3VyY2UudHlw
ZSgpICE9IENhY2hlZFJlc291cmNlOjpUeXBlOjpNYWluUmVzb3VyY2UgfHwgIWZyYW1lLmlzTWFp
bkZyYW1lKCkpIHsKICAgICAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gZnJhbWUubWFpbkZyYW1l
KCkuZG9jdW1lbnQoKSkgewogICAgICAgICAgICAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LT5s
b2FkZXIoKSkKICAgICAgICAgICAgICAgICByZXF1ZXN0LnNldElzQXBwQm91bmQoZG9jdW1lbnQt
PmxvYWRlcigpLT5sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKCkpOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDc0ZTZlN2Y5NWNiYWQ0ODYwYzUx
MWZjZjQ3ZDI4NjZjYjk3ODA5NDYuLjQ2ZDhkZWE2ZGM2YjY3NjI2ZDE5MjYzOTA0M2M5YmEwNWFk
YTQ1MDIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyNSBAQAorMjAyMS0wMi0yMCAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hl
bmV5QGFwcGxlLmNvbT4KKworICAgICAgICBBcHAtYm91bmQgcmVxdWVzdCBwYXJhbWV0ZXIgc2hv
dWxkIGJlIHBhc3NlZCB0byBtYWluIHJlc291cmNlIHJlcXVlc3RzIG5vdCB0aGUgbWFpbiBmcmFt
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyMjQx
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NDU2MDk2Nj4gCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyBtb3JlIHJvYnVzdCB0ZXN0aW5nIHRv
IHJlcG9ydCB3aGVuIGFwcEJvdW5kL25vbkFwcEJvdW5kIHJlcXVlc3RzCisgICAgICAgIGxvYWQg
aW4gdGhlIG5ldHdvcmsgcHJvY2Vzcy4gVGhpcyB0ZXN0cyBub3Qgb25seSB0aGF0IHRoZSBtYWlu
IGZyYW1l4oCZcworICAgICAgICBkb2N1bWVudCBsb2FkZXIgaXMgcHJvcGVybHkgc2V0LCBidXQg
YWxzbyB0aGF0IGFsbCBsb2FkcyBpbml0aWF0ZWQgZnJvbQorICAgICAgICBhcHAtYm91bmQgcmVx
dWVzdHMgYXJlIGFsc28gYXBwLWJvdW5kIHRvIGF2b2lkIHJlZ3Jlc3Npb25zIGxpa2UgdGhpcyBp
biB0aGUgZnV0dXJlLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tOgorICAgICAgICBVdGlsaXplIHNvbWUgQ1NQIHRlc3Qg
cmVzb3VyY2VzIHRoYXQgaGF2ZSB0aGUgZXhhY3Qgc2V0dXAgbmVlZGVkIHRvCisgICAgICAgIHRl
c3QgdGhpcyBmaXguCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZp
ZXcuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW06Cisg
ICAgICAgICgtW1dLV2ViVmlldyBhcHBCb3VuZE5hdmlnYXRpb25EYXRhOl0pOgorICAgICAgICAo
LVtXS1dlYlZpZXcgY2xlYXJBcHBCb3VuZE5hdmlnYXRpb25SZXBvcnRzOl0pOgorCiAyMDIxLTAy
LTE5ICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CiAKICAgICAgICAgUENNOiBS
ZXF1ZXN0IHNlcnZlciBwdWJsaWMga2V5IHRvIGdlbmVyYXRlIHNlY3JldCB0b2tlbgpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQ
cml2YWN5Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJy
b3dzZXJQcml2YWN5Lm1tCmluZGV4IDczZDBjYzUyNWY0YWZmNmZkMjNkNmJkZTQ1MTYxZjYyODg3
OGY1ZDEuLmJhNTdmNWY3NGFjOTM5YTg2OWM0ODFlYWFlYTZlM2MxYzg0ZWI0ZWMgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJp
dmFjeS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBw
QnJvd3NlclByaXZhY3kubW0KQEAgLTE0MzgsNiArMTQzOCwxNyBAQCBURVNUKEluQXBwQnJvd3Nl
clByaXZhY3ksIEFwcEJvdW5kUmVxdWVzdCkKICAgICB9XTsKIAogICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmaXNEb25lKTsKKyAgICAKKyAgICBpc0RvbmUgPSBmYWxzZTsKKyAgICBbd2Vi
VmlldyBhcHBCb3VuZE5hdmlnYXRpb25EYXRhOl4oTlNBcnJheTxOU051bWJlciAqPiAqbmF2aWdh
dGlvbkRhdGEpIHsKKyAgICAgICAgLy8gRmlyc3QgaW5kZXggaXMgYXBwLWJvdW5kIGxvYWRzLCBz
ZWNvbmQgaXMgbm9uIGFwcC1ib3VuZCBsb2Fkcy4KKyAgICAgICAgLy8gV2UgZXhwZWN0IHRvIHNl
ZSBvbmx5IG5vbiBhcHAtYm91bmQgbG9hZHMuCisgICAgICAgIEVYUEVDVF9FUShbbmF2aWdhdGlv
bkRhdGEgb2JqZWN0QXRJbmRleDowXS5pbnRWYWx1ZSwgMCk7CisgICAgICAgIEVYUEVDVF9FUShb
bmF2aWdhdGlvbkRhdGEgb2JqZWN0QXRJbmRleDoxXS5pbnRWYWx1ZSwgMSk7CisgICAgICAgIGlz
RG9uZSA9IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlz
RG9uZSk7CiB9CiAKIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQXBwQm91bmRSZXF1ZXN0V2l0
aE5hdmlnYXRpb24pCkBAIC0xNDU0LDggKzE0NjUsMzQgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2
YWN5LCBBcHBCb3VuZFJlcXVlc3RXaXRoTmF2aWdhdGlvbikKICAgICBbd2ViVmlldyBfdGVzdF93
YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CiAKICAgICBzdGF0aWMgYm9vbCBpc0RvbmUgPSBm
YWxzZTsKKyAgICBbd2ViVmlldyBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kOl4oQk9PTCBpc0Fw
cEJvdW5kKSB7CisgICAgICAgIEVYUEVDVF9UUlVFKGlzQXBwQm91bmQpOworICAgICAgICBpc0Rv
bmUgPSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0Rv
bmUpOworICAgIAorICAgIGlzRG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IGFwcEJvdW5kTmF2
aWdhdGlvbkRhdGE6XihOU0FycmF5PE5TTnVtYmVyICo+ICpuYXZpZ2F0aW9uRGF0YSkgeworICAg
ICAgICAvLyBGaXJzdCBpbmRleCBpcyBhcHAtYm91bmQgbG9hZHMsIHNlY29uZCBpcyBub24gYXBw
LWJvdW5kIGxvYWRzLgorICAgICAgICAvLyBXZSBleHBlY3QgdG8gc2VlIG9ubHkgYXBwLWJvdW5k
IGxvYWRzLgorICAgICAgICBFWFBFQ1RfRVEoW25hdmlnYXRpb25EYXRhIG9iamVjdEF0SW5kZXg6
MF0uaW50VmFsdWUsIDEpOworICAgICAgICBFWFBFQ1RfRVEoW25hdmlnYXRpb25EYXRhIG9iamVj
dEF0SW5kZXg6MV0uaW50VmFsdWUsIDApOworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1d
OworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworICAgIAorICAgIGlz
RG9uZSA9IGZhbHNlOwogICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKm5vbkFwcEJvdW5kUmVxdWVz
dCA9IFtOU011dGFibGVVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3Ry
aW5nOm5vbkFwcEJvdW5kVVJMXV07CiAgICAgQVBQX0JPVU5EX1JFUVVFU1RfQURESVRJT05TCisg
ICAgCisgICAgaXNEb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgY2xlYXJBcHBCb3VuZE5hdmln
YXRpb25SZXBvcnRzOl57CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07CisKKyAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiAKICAgICBbd2ViVmlldyBsb2FkUmVx
dWVzdDpub25BcHBCb3VuZFJlcXVlc3RdOwogICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRG
aW5pc2hOYXZpZ2F0aW9uXTsKQEAgLTE0NjYsNSArMTUwMyw2NyBAQCBURVNUKEluQXBwQnJvd3Nl
clByaXZhY3ksIEFwcEJvdW5kUmVxdWVzdFdpdGhOYXZpZ2F0aW9uKQogICAgIH1dOwogCiAgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworICAgIAorICAgIGlzRG9uZSA9IGZh
bHNlOworICAgIFt3ZWJWaWV3IGFwcEJvdW5kTmF2aWdhdGlvbkRhdGE6XihOU0FycmF5PE5TTnVt
YmVyICo+ICpuYXZpZ2F0aW9uRGF0YSkgeworICAgICAgICAvLyBGaXJzdCBpbmRleCBpcyBhcHAt
Ym91bmQgbG9hZHMsIHNlY29uZCBpcyBub24gYXBwLWJvdW5kIGxvYWRzLgorICAgICAgICAvLyBX
ZSBleHBlY3QgdG8gc2VlIG9ubHkgbm9uIGFwcC1ib3VuZCBsb2Fkcy4KKyAgICAgICAgRVhQRUNU
X0VRKFtuYXZpZ2F0aW9uRGF0YSBvYmplY3RBdEluZGV4OjBdLmludFZhbHVlLCAwKTsKKyAgICAg
ICAgRVhQRUNUX0VRKFtuYXZpZ2F0aW9uRGF0YSBvYmplY3RBdEluZGV4OjFdLmludFZhbHVlLCAx
KTsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmaXNEb25lKTsKIH0KKworVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBBcHBC
b3VuZFJlcXVlc3RXaXRoU3ViRnJhbWUpCit7CisgICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZp
Z3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlv
biBhbGxvY10gaW5pdF0pOworICAgIFtjb25maWd1cmF0aW9uIF9zZXRPdmVycmlkZUNvbnRlbnRT
ZWN1cml0eVBvbGljeTpAInNjcmlwdC1zcmMgJ25vbmNlLWInIl07CisKKyAgICBSZXRhaW5QdHI8
VGVzdFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29u
ZmlndXJhdGlvbi5nZXQoKV0pOworICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJl
cXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJj
ZTpAInBhZ2Utd2l0aC1jc3AiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJU
ZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1
ZXN0XTsKKworICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAiTWFpbkZyYW1lOiBCIl07Cisg
ICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJTdWJmcmFtZTogQiJdOworCisgICAgc3RhdGlj
IGJvb2wgaXNEb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgYXBwQm91bmROYXZpZ2F0aW9uRGF0
YTpeKE5TQXJyYXk8TlNOdW1iZXIgKj4gKm5hdmlnYXRpb25EYXRhKSB7CisgICAgICAgIC8vIEZp
cnN0IGluZGV4IGlzIGFwcC1ib3VuZCBsb2Fkcywgc2Vjb25kIGlzIG5vbiBhcHAtYm91bmQgbG9h
ZHMuCisgICAgICAgIC8vIFdlIGV4cGVjdCB0byBzZWUgb25seSBhcHAtYm91bmQgbG9hZHMuCisg
ICAgICAgIEVYUEVDVF9FUShbbmF2aWdhdGlvbkRhdGEgb2JqZWN0QXRJbmRleDowXS5pbnRWYWx1
ZSwgMSk7CisgICAgICAgIEVYUEVDVF9FUShbbmF2aWdhdGlvbkRhdGEgb2JqZWN0QXRJbmRleDox
XS5pbnRWYWx1ZSwgMCk7CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07CisKKyAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7Cit9OworCitURVNUKEluQXBwQnJvd3Nl
clByaXZhY3ksIE5vbkFwcEJvdW5kUmVxdWVzdFdpdGhTdWJGcmFtZSkKK3sKKyAgICBSZXRhaW5Q
dHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dl
YlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgW2NvbmZpZ3VyYXRpb24gX3Nl
dE92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5OkAic2NyaXB0LXNyYyAnbm9uY2UtYiciXTsK
KworICAgIFJldGFpblB0cjxUZXN0V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RX
S1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkg
Y29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgTlNNdXRhYmxlVVJMUmVx
dWVzdCAqbm9uQXBwQm91bmRSZXF1ZXN0ID0gW05TTXV0YWJsZVVSTFJlcXVlc3QgcmVxdWVzdFdp
dGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInBhZ2Utd2l0aC1j
c3AiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJl
c291cmNlcyJdXTsKKyAgICBBUFBfQk9VTkRfUkVRVUVTVF9BRERJVElPTlMKKworICAgIFt3ZWJW
aWV3IGxvYWRSZXF1ZXN0Om5vbkFwcEJvdW5kUmVxdWVzdF07CisKKyAgICBbd2ViVmlldyB3YWl0
Rm9yTWVzc2FnZTpAIk1haW5GcmFtZTogQiJdOworICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdl
OkAiU3ViZnJhbWU6IEIiXTsKKworICAgIHN0YXRpYyBib29sIGlzRG9uZSA9IGZhbHNlOworICAg
IFt3ZWJWaWV3IGFwcEJvdW5kTmF2aWdhdGlvbkRhdGE6XihOU0FycmF5PE5TTnVtYmVyICo+ICpu
YXZpZ2F0aW9uRGF0YSkgeworICAgICAgICAvLyBGaXJzdCBpbmRleCBpcyBhcHAtYm91bmQgcmVx
dWVzdHMsIHNlY29uZCBpcyBub24gYXBwLWJvdW5kIHJlcXVlc3RzLgorICAgICAgICAvLyBXZSBl
eHBlY3QgdG8gc2VlIG9ubHkgbm9uIGFwcC1ib3VuZCBsb2Fkcy4KKyAgICAgICAgRVhQRUNUX0VR
KFtuYXZpZ2F0aW9uRGF0YSBvYmplY3RBdEluZGV4OjBdLmludFZhbHVlLCAwKTsKKyAgICAgICAg
RVhQRUNUX0VRKFtuYXZpZ2F0aW9uRGF0YSBvYmplY3RBdEluZGV4OjFdLmludFZhbHVlLCAxKTsK
KyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmaXNEb25lKTsKK307CisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3LmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29h
L1Rlc3RXS1dlYlZpZXcuaAppbmRleCBjMWRjMDhjZmE0Y2YwNjEzMzUyNDU3YmYxMWE4ZWUzMDYx
MDdhZThhLi40NjE2MGJmMmM0MzBmNzg3ZTgxYzk2MTJjMjVkYjI3YmI3MTM2ZDM3IDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaApAQCAtNjgsNiArNjgsOCBAQAog
LSAoaWQpb2JqZWN0QnlDYWxsaW5nQXN5bmNGdW5jdGlvbjooTlNTdHJpbmcgKilzY3JpcHQgd2l0
aEFyZ3VtZW50czooTlNEaWN0aW9uYXJ5ICopYXJndW1lbnRzIGVycm9yOihOU0Vycm9yICoqKWVy
cm9yT3V0OwogLSAodW5zaWduZWQpd2FpdFVudGlsQ2xpZW50V2lkdGhJczoodW5zaWduZWQpZXhw
ZWN0ZWRDbGllbnRXaWR0aDsKIC0gKHZvaWQpbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDoodm9p
ZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQpYXBwQm91bmROYXZpZ2F0aW9u
RGF0YToodm9pZCheKShOU0FycmF5PE5TTnVtYmVyICo+ICopKWNvbXBsZXRpb25IYW5kbGVyOwor
LSAodm9pZCljbGVhckFwcEJvdW5kTmF2aWdhdGlvblJlcG9ydHM6KHZvaWQoXikoKSljb21wbGV0
aW9uSGFuZGxlcjsKIEBlbmQKIAogQGludGVyZmFjZSBUZXN0TWVzc2FnZUhhbmRsZXIgOiBOU09i
amVjdCA8V0tTY3JpcHRNZXNzYWdlSGFuZGxlcj4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2Ev
VGVzdFdLV2ViVmlldy5tbQppbmRleCA4ZDk2NzE2M2I0NmRhNzkxOTkzNGU2NDkwNjQwM2NkMjMx
YjJlNjBjLi44ZTlhMzM1MjU0YzBlZGVmZWM5ZmVhYjIyM2U2YzA5YTA2M2U4MTkxIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0KKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCkBAIC0yNDMsNiArMjQzLDE3
IEBAIHN0YXRpYyBOU1N0cmluZyAqb3ZlcnJpZGVCdW5kbGVJZGVudGlmaWVyKGlkLCBTRUwpCiB7
CiAgICAgW3NlbGYgX2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ6Y29tcGxldGlvbkhhbmRsZXJd
OwogfQorCistICh2b2lkKWFwcEJvdW5kTmF2aWdhdGlvbkRhdGE6KHZvaWQoXikoTlNBcnJheTxO
U051bWJlciAqPiAqKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIFtzZWxmIF9hcHBCb3VuZE5h
dmlnYXRpb25EYXRhOmNvbXBsZXRpb25IYW5kbGVyXTsKK30KKworLSAodm9pZCljbGVhckFwcEJv
dW5kTmF2aWdhdGlvblJlcG9ydHM6KHZvaWQoXikoKSljb21wbGV0aW9uSGFuZGxlcgoreworICAg
IFtzZWxmIF9jbGVhckFwcEJvdW5kTmF2aWdhdGlvblJlcG9ydHM6Y29tcGxldGlvbkhhbmRsZXJd
OworfQorCiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBUZXN0TWVzc2FnZUhhbmRsZXIgewo=
</data>
<flag name="commit-queue"
          id="439879"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421124</attachid>
            <date>2021-02-20 18:21:15 -0800</date>
            <delta_ts>2021-02-20 21:55:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222241-20210220182114.patch</filename>
            <type>text/plain</type>
            <size>19726</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDdjMDJiMWVhMmViNDRlNzE5
ZDgyNGY0ODU0Y2YwZDhiNjBiMzNmYWEuLjE0ZGU0YjUzMGNjYjA3MTgwYWQ2OTc4YjgxYmJiODAy
OGJmYTUyNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAKKzIwMjEtMDItMjAgIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgQXBwLWJvdW5kIHJl
cXVlc3QgcGFyYW1ldGVyIHNob3VsZCBiZSBwYXNzZWQgdG8gbWFpbiByZXNvdXJjZSByZXF1ZXN0
cyBub3QgdGhlIG1haW4gZnJhbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyMjI0MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzQ1NjA5NjY+IAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNldCB0aGUg
aXNBcHBCb3VuZCBwYXJhbWV0ZXIgb24gdGhlIHJlc291cmNlIHJlcXVlc3QgaWYgaXQgaXMgYSBt
YWluCisgICAgICAgIHJlc291cmNlIG5vdCBvbiB0aGUgbWFpbiBmcmFtZS4gT3RoZXJ3aXNlIG1v
c3RseSBjaGFuZ2VzIHRvIGFkZCBiZXR0ZXIgdGVzdGluZy4KKworICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6OmFwcEJvdW5kTmF2aWdhdGlvbkRhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6Y2xlYXJBcHBCb3VuZE5hdmlnYXRpb25SZXBvcnRzKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtT
ZXNzaW9uLmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpzZXRIYXNMb2FkZWRB
cHBCb3VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6aGFzTG9h
ZGVkQXBwQm91bmRSZXF1ZXN0IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Np
b246OnNldEhhc0xvYWRlZE5vbkFwcEJvdW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtTZXNzaW9uOjpoYXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3QgY29uc3QpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tDb2NvYTo6TmV0d29ya0RhdGFUYXNrQ29jb2EpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3Rpbmcu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1Rlc3RpbmcubW06Cisg
ICAgICAgICgtW1dLV2ViVmlldyBfYXBwQm91bmROYXZpZ2F0aW9uRGF0YTpdKToKKyAgICAgICAg
KC1bV0tXZWJWaWV3IF9jbGVhckFwcEJvdW5kTmF2aWdhdGlvblJlcG9ydHM6XSk6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6YXBwQm91bmROYXZpZ2F0aW9uRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6Y2xlYXJBcHBCb3VuZE5hdmlnYXRpb25SZXBvcnRzKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRl
clN0cmF0ZWd5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6OmxvYWRS
ZXNvdXJjZSk6CisgICAgICAgIFRoZSBmaXguCisKIDIwMjEtMDItMTkgIEthdGUgQ2hlbmV5ICA8
a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CiAKICAgICAgICAgQ3JlYXRlIFNRTGl0ZSBza2Vs
ZXRvbiBpbXBsZW1lbnRhdGlvbiBmb3IgUENNIGZyYXVkIHByZXZlbnRpb24KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggNjgzMDE1ZDE2
OWE4YzI5OTIzMzBmZjQ2MDg1NGNjNmMzMTYyODM2Yy4uZGMwNTVhZTkxN2VjNmRlZTM1ZmExNGI1
M2E2NWMyNDllZTNiYzBmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTI3NzAsNCArMjc3MCwyMiBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpzZXRDT1JTRGlzYWJsaW5nUGF0dGVybnMoUGFnZUlkZW50aWZpZXIgcGFnZUlkZW50aWZp
ZXIsIFZlYwogICAgIG1fZXh0ZW5zaW9uQ09SU0Rpc2FibGluZ1BhdHRlcm5zLnNldChwYWdlSWRl
bnRpZmllciwgV1RGTW92ZShwYXJzZWRQYXR0ZXJucykpOwogfQogCit2b2lkIE5ldHdvcmtQcm9j
ZXNzOjphcHBCb3VuZE5hdmlnYXRpb25EYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6OnBhaXI8Ym9vbCwgYm9vbD4pPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQoreworICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtT
ZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjptYWtl
X3BhaXIobmV0d29ya1Nlc3Npb24tPmhhc0xvYWRlZEFwcEJvdW5kUmVxdWVzdCgpLCBuZXR3b3Jr
U2Vzc2lvbi0+aGFzTG9hZGVkTm9uQXBwQm91bmRSZXF1ZXN0KCkpKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworfQorCit2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpjbGVhckFwcEJvdW5kTmF2aWdhdGlvblJlcG9ydHMoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7
CisgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vz
c2lvbklEKSkgeworICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+c2V0SGFzTG9hZGVkQXBwQm91bmRS
ZXF1ZXN0KGZhbHNlKTsKKyAgICAgICAgbmV0d29ya1Nlc3Npb24tPnNldEhhc0xvYWRlZE5vbkFw
cEJvdW5kUmVxdWVzdChmYWxzZSk7CisgICAgfQorICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IGVhMmRkN2Y1MzhjMDc0NjRiODY0YTAxYzVlMzhjY2Vk
YmFlYThjNzIuLjUwOWQ3MWFmODYxOTUxYjlkOGYzMjI3NzY2ZTI5MDAxNmJkM2FlMGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTM3Nyw2
ICszNzcsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBzaG91bGREaXNhYmxlQ09SU0ZvclJlcXVlc3RU
byhXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgVVJMJikgY29uc3Q7CiAgICAgdm9pZCBz
ZXRDT1JTRGlzYWJsaW5nUGF0dGVybnMoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFZlY3RvcjxT
dHJpbmc+JiYpOwogCisgICAgdm9pZCBhcHBCb3VuZE5hdmlnYXRpb25EYXRhKFBBTDo6U2Vzc2lv
bklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6cGFpcjxib29sLCBib29sPik+JiYpOwor
ICAgIHZvaWQgY2xlYXJBcHBCb3VuZE5hdmlnYXRpb25SZXBvcnRzKFBBTDo6U2Vzc2lvbklELCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworCiBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZv
cm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoY29uc3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggODQxMWJiZTlkNWVhNmZiZTNlYmM0ZWQw
ZmE1NDllOGY0YTc4Y2JhZi4uNWM1MzRjZDQ2ZTVhMWMxYmY4YTM5OTg0OWJlN2VjN2Q5NzdlNTRh
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0xODksNCArMTg5LDcgQEAgbWVzc2FnZXMgLT4gTmV0d29y
a1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogI2VuZGlmCiAgICAgVXBkYXRlQnVuZGxlSWRlbnRp
ZmllcihTdHJpbmcgYnVuZGxlSWRlbnRpZmllcikgLT4gKCkgQXN5bmMKICAgICBDbGVhckJ1bmRs
ZUlkZW50aWZpZXIoKSAtPiAoKSBBc3luYworICAgIAorICAgIEFwcEJvdW5kTmF2aWdhdGlvbkRh
dGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoc3RkOjpwYWlyPGJvb2wsIGJvb2w+IGRh
dGEpIEFzeW5jCisgICAgQ2xlYXJBcHBCb3VuZE5hdmlnYXRpb25SZXBvcnRzKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCkgLT4gKCkgQXN5bmMKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Nlc3Npb24uaAppbmRleCBmZjIxZjI4ZjNiN2RhZmY0YmY0ZThhYTRjNzQ0
YTI4OWZlZjBkZjhiLi4yNjNiNzFiNzJhZWM2OWVkYTI4ZjJhYWJlNmEyZDI5MDMyYjY3ZDQzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCkBAIC0x
NTYsNiArMTU2LDExIEBAIHB1YmxpYzoKICAgICBOZXR3b3JrTG9hZFNjaGVkdWxlciYgbmV0d29y
a0xvYWRTY2hlZHVsZXIoKTsKICAgICBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXImIHBy
aXZhdGVDbGlja01lYXN1cmVtZW50KCkgeyByZXR1cm4gKm1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQ7IH0KIAorICAgIHZvaWQgc2V0SGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0KGJvb2wgaGFzTG9h
ZGVkQXBwQm91bmRSZXF1ZXN0KSB7IG1faGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0ID0gaGFzTG9h
ZGVkQXBwQm91bmRSZXF1ZXN0OyB9CisgICAgYm9vbCBoYXNMb2FkZWRBcHBCb3VuZFJlcXVlc3Qo
KSBjb25zdCB7IHJldHVybiBtX2hhc0xvYWRlZEFwcEJvdW5kUmVxdWVzdDsgfQorICAgIHZvaWQg
c2V0SGFzTG9hZGVkTm9uQXBwQm91bmRSZXF1ZXN0KGJvb2wgaGFzTG9hZGVkTm9uQXBwQm91bmRS
ZXF1ZXN0KSB7IG1faGFzTG9hZGVkTm9uQXBwQm91bmRSZXF1ZXN0ID0gaGFzTG9hZGVkTm9uQXBw
Qm91bmRSZXF1ZXN0OyB9CisgICAgYm9vbCBoYXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3QoKSBj
b25zdCB7IHJldHVybiBtX2hhc0xvYWRlZE5vbkFwcEJvdW5kUmVxdWVzdDsgfQorCiBwcm90ZWN0
ZWQ6CiAgICAgTmV0d29ya1Nlc3Npb24oTmV0d29ya1Byb2Nlc3MmLCBjb25zdCBOZXR3b3JrU2Vz
c2lvbkNyZWF0aW9uUGFyYW1ldGVycyYpOwogCkBAIC0yMDAsNiArMjA1LDkgQEAgcHJvdGVjdGVk
OgogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0
cjxTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcj4+IG1fc29mdFVwZGF0ZUxvYWRlcnM7CiAj
ZW5kaWYKKyAgICAKKyAgICBib29sIG1faGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0IHsgZmFsc2Ug
fTsKKyAgICBib29sIG1faGFzTG9hZGVkTm9uQXBwQm91bmRSZXF1ZXN0IHsgZmFsc2UgfTsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KaW5kZXggZDU5M2I0
MmI1MThjYTRjM2ZjNTczNDM3MTNhYzUwYjNkYjVjMDdkMi4uOWJmOTlkMDM1ZGIyYjllZDg2MGU0
NjVkYjVhY2Y0ODM1OTc5ZjBiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCkBAIC0zMzksNiArMzM5
LDggQEAgTmV0d29ya0RhdGFUYXNrQ29jb2E6Ok5ldHdvcmtEYXRhVGFza0NvY29hKE5ldHdvcmtT
ZXNzaW9uJiBzZXNzaW9uLCBOZXR3b3JrRGF0YVQKIAogICAgIE5FVFdPUktfREFUQV9UQVNLX0NP
Q09BX0FERElUSU9OUwogCisgICAgcmVxdWVzdC5pc0FwcEJvdW5kKCkgPyBtX3Nlc3Npb24tPnNl
dEhhc0xvYWRlZEFwcEJvdW5kUmVxdWVzdCh0cnVlKSA6IG1fc2Vzc2lvbi0+c2V0SGFzTG9hZGVk
Tm9uQXBwQm91bmRSZXF1ZXN0KHRydWUpOworCiAgICAgYXBwbHlTbmlmZmluZ1BvbGljaWVzQW5k
QmluZFJlcXVlc3RUb0luZmVyZmFjZUlmTmVlZGVkKG5zUmVxdWVzdCwgc2hvdWxkQ29udGVudFNu
aWZmID09IFdlYkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeTo6U25pZmZDb250ZW50ICYmICF1
cmwuaXNMb2NhbEZpbGUoKSwgc2hvdWxkQ29udGVudEVuY29kaW5nU25pZmYgPT0gV2ViQ29yZTo6
Q29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3k6OlNuaWZmKTsKIAogICAgIG1fdGFzayA9IFtt
X3Nlc3Npb25XcmFwcGVyLT5zZXNzaW9uIGRhdGFUYXNrV2l0aFJlcXVlc3Q6bnNSZXF1ZXN0XTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQ
cml2YXRlRm9yVGVzdGluZy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nLmgKaW5kZXggODg0ZDhjMDg4NWZhN2EzNjNiMmFkODAy
NTQyMmMzM2Y3MTQ1ZWFhMS4uOGU0NDEzYmZlOTU0YzBjNzc1MzIwNDNkOGEwNTA3Yzc4OGZhZmZj
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
d1ByaXZhdGVGb3JUZXN0aW5nLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nLmgKQEAgLTg4LDUgKzg4LDcgQEAgdHlwZWRl
ZiBlbnVtIHsKIC0gKHZvaWQpX3NldFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25S
ZXBvcnRVUkxGb3JUZXN0aW5nOihOU1VSTCAqKXVybCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZChe
KSh2b2lkKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19U
QkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCiAtICh2b2lkKV9sYXN0TmF2aWdhdGlvbldhc0FwcEJv
dW5kOih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyOworLSAodm9pZClfYXBwQm91bmRO
YXZpZ2F0aW9uRGF0YToodm9pZCheKShOU0FycmF5PE5TTnVtYmVyICo+ICopKWNvbXBsZXRpb25I
YW5kbGVyOworLSAodm9pZClfY2xlYXJBcHBCb3VuZE5hdmlnYXRpb25SZXBvcnRzOih2b2lkKF4p
KHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyOwogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3VGVzdGluZy5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdUZXN0aW5nLm1tCmluZGV4IDdjYzMwZWE0
MTQyYTM1MDAwM2JlMWZjNDkzMzhkNTRiMGFiZDU5ODMuLmVkMjRmZGZlN2RkNmE3NGI4ZWIwNmNj
M2VkMWNlMzQ2ZWFjNmRjMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXdUZXN0aW5nLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXdUZXN0aW5nLm1tCkBAIC0zMzMsNCArMzMzLDIxIEBACiAgICAg
fSk7CiB9CiAKKy0gKHZvaWQpX2FwcEJvdW5kTmF2aWdhdGlvbkRhdGE6KHZvaWQoXikoTlNBcnJh
eTxOU051bWJlciAqPiAqKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIF9wYWdlLT5hcHBCb3Vu
ZE5hdmlnYXRpb25EYXRhKFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0
aW9uSGFuZGxlcildIChhdXRvIGFwcEJvdW5kRGF0YSkgeworICAgICAgICBOU011dGFibGVBcnJh
eTxOU051bWJlciAqPiAqZGF0YSA9IFtOU011dGFibGVBcnJheSBhcnJheV07CisgICAgICAgIFtk
YXRhIGFkZE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6YXBwQm91bmREYXRhLmZpcnN0
XV07CisgICAgICAgIFtkYXRhIGFkZE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6YXBw
Qm91bmREYXRhLnNlY29uZF1dOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihkYXRhKTsKKyAg
ICB9KTsKK30KKworLSAodm9pZClfY2xlYXJBcHBCb3VuZE5hdmlnYXRpb25SZXBvcnRzOih2b2lk
KF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgX3BhZ2UtPmNsZWFyQXBwQm91bmRO
YXZpZ2F0aW9uUmVwb3J0cyhbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxl
dGlvbkhhbmRsZXIpXSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgfSk7Cit9
CisKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDQ2
NGJkYTkxYWFmOGQwMTUzZjFlN2U3ZTkxOWMxNDFkNjcwOWI3MzEuLjUxMTk5ZGYyNjVjNGUyOWQ1
NGYxMzgwNTAxYTY1NjFjNWE5NjkxNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcApAQCAtMTAzODEsNiArMTAzODEsMTYgQEAgU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlQXJyYXkgV2ViUGFnZVByb3h5OjpjcmVhdGVOZXR3b3JrRXh0ZW5zaW9uc1NhbmRib3hFeHRl
bnMKIH0KICNlbmRpZgogCit2b2lkIFdlYlBhZ2VQcm94eTo6YXBwQm91bmROYXZpZ2F0aW9uRGF0
YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6cGFpcjxib29sLCBib29sPik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit7CisgICAgd2Vic2l0ZURhdGFTdG9yZSgpLm5ldHdvcmtQcm9jZXNzKCku
c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6QXBwQm91bmROYXZp
Z2F0aW9uRGF0YShtX3dlYnNpdGVEYXRhU3RvcmUtPnNlc3Npb25JRCgpKSwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6Y2xlYXJBcHBCb3VuZE5h
dmlnYXRpb25SZXBvcnRzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3sKKyAgICB3ZWJzaXRlRGF0YVN0b3JlKCkubmV0d29ya1Byb2Nlc3MoKS5zZW5kV2l0
aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpDbGVhckFwcEJvdW5kTmF2aWdh
dGlvblJlcG9ydHMobV93ZWJzaXRlRGF0YVN0b3JlLT5zZXNzaW9uSUQoKSksIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBS
RUxFQVNFX0xPR19JRl9BTExPV0VECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CmluZGV4IGEwY2ViZDlmYjQ1ZTc2ZjUxOTU0NTNjYjQ5NWNhM2NlMDM4NGE3MGYuLjkyZjZlYzEz
YzI5MmRhYmRiYzA2ZjVhYmVhOWY3YWUxNjk1MDQ3OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCkBAIC0xODU4LDYgKzE4NTgsOCBAQCBwdWJsaWM6CiAjaWYgUExBVEZP
Uk0oQ09DT0EpCiAgICAgdm9pZCBzZXRMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYpOwogICAgIHZvaWQgbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZChD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIGFwcEJvdW5kTmF2aWdh
dGlvbkRhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6OnBhaXI8Ym9vbCwgYm9vbD4pPiYm
KTsKKyAgICB2b2lkIGNsZWFyQXBwQm91bmROYXZpZ2F0aW9uUmVwb3J0cyhDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwogI2VuZGlmCiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKaW5kZXggY2My
MjAzZmU4Yzk3YTU5N2FkYzMwNjliODBhNzg3ODhmYmQ1ZTMwOC4uMjJjZTA5MjU5OGYxMGRhNmM4
YzFlMDQ2MzdmNjIwMTkxYzA5ZWU2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcApAQCAtMTA3LDcgKzEwNyw3IEBA
IFdlYkxvYWRlclN0cmF0ZWd5Ojp+V2ViTG9hZGVyU3RyYXRlZ3koKQogCiB2b2lkIFdlYkxvYWRl
clN0cmF0ZWd5Ojpsb2FkUmVzb3VyY2UoRnJhbWUmIGZyYW1lLCBDYWNoZWRSZXNvdXJjZSYgcmVz
b3VyY2UsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0
aW9ucyYgb3B0aW9ucywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8U3VicmVzb3VyY2VM
b2FkZXI+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmIChyZXNvdXJjZS50eXBl
KCkgIT0gQ2FjaGVkUmVzb3VyY2U6OlR5cGU6Ok1haW5SZXNvdXJjZSkgeworICAgIGlmIChyZXNv
dXJjZS50eXBlKCkgIT0gQ2FjaGVkUmVzb3VyY2U6OlR5cGU6Ok1haW5SZXNvdXJjZSB8fCAhZnJh
bWUuaXNNYWluRnJhbWUoKSkgewogICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBmcmFtZS5t
YWluRnJhbWUoKS5kb2N1bWVudCgpKSB7CiAgICAgICAgICAgICBpZiAoZG9jdW1lbnQgJiYgZG9j
dW1lbnQtPmxvYWRlcigpKQogICAgICAgICAgICAgICAgIHJlcXVlc3Quc2V0SXNBcHBCb3VuZChk
b2N1bWVudC0+bG9hZGVyKCktPmxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoKSk7CmRpZmYgLS1n
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNzRlNmU3Zjk1Y2Jh
ZDQ4NjBjNTExZmNmNDdkMjg2NmNiOTc4MDk0Ni4uNDZkOGRlYTZkYzZiNjc2MjZkMTkyNjM5MDQz
YzliYTA1YWRhNDUwMiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIxLTAyLTIwICBLYXRlIENoZW5leSAgPGthdGhl
cmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIEFwcC1ib3VuZCByZXF1ZXN0IHBhcmFt
ZXRlciBzaG91bGQgYmUgcGFzc2VkIHRvIG1haW4gcmVzb3VyY2UgcmVxdWVzdHMgbm90IHRoZSBt
YWluIGZyYW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjIyNDEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc0NTYwOTY2PiAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIG1vcmUgcm9idXN0IHRl
c3RpbmcgdG8gcmVwb3J0IHdoZW4gYXBwQm91bmQvbm9uQXBwQm91bmQgcmVxdWVzdHMKKyAgICAg
ICAgbG9hZCBpbiB0aGUgbmV0d29yayBwcm9jZXNzLiBUaGlzIHRlc3RzIG5vdCBvbmx5IHRoYXQg
dGhlIG1haW4gZnJhbWXigJlzCisgICAgICAgIGRvY3VtZW50IGxvYWRlciBpcyBwcm9wZXJseSBz
ZXQsIGJ1dCBhbHNvIHRoYXQgYWxsIGxvYWRzIGluaXRpYXRlZCBmcm9tCisgICAgICAgIGFwcC1i
b3VuZCByZXF1ZXN0cyBhcmUgYWxzbyBhcHAtYm91bmQgdG8gYXZvaWQgcmVncmVzc2lvbnMgbGlr
ZSB0aGlzIGluIHRoZSBmdXR1cmUuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW06CisgICAgICAgIFV0aWxpemUgc29tZSBD
U1AgdGVzdCByZXNvdXJjZXMgdGhhdCBoYXZlIHRoZSBleGFjdCBzZXR1cCBuZWVkZWQgdG8KKyAg
ICAgICAgdGVzdCB0aGlzIGZpeC4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvVGVz
dFdLV2ViVmlldy5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmll
dy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IGFwcEJvdW5kTmF2aWdhdGlvbkRhdGE6XSk6Cisg
ICAgICAgICgtW1dLV2ViVmlldyBjbGVhckFwcEJvdW5kTmF2aWdhdGlvblJlcG9ydHM6XSk6CisK
IDIwMjEtMDItMTkgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KIAogICAgICAg
ICBQQ006IFJlcXVlc3Qgc2VydmVyIHB1YmxpYyBrZXkgdG8gZ2VuZXJhdGUgc2VjcmV0IHRva2Vu
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBw
QnJvd3NlclByaXZhY3kubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0luQXBwQnJvd3NlclByaXZhY3kubW0KaW5kZXggNzNkMGNjNTI1ZjRhZmY2ZmQyM2Q2YmRlNDUx
NjFmNjI4ODc4ZjVkMS4uYmE1N2Y1Zjc0YWM5MzlhODY5YzQ4MWVhYWVhNmUzYzFjODRlYjRlYyAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJy
b3dzZXJQcml2YWN5Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQpAQCAtMTQzOCw2ICsxNDM4LDE3IEBAIFRFU1QoSW5B
cHBCcm93c2VyUHJpdmFjeSwgQXBwQm91bmRSZXF1ZXN0KQogICAgIH1dOwogCiAgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworICAgIAorICAgIGlzRG9uZSA9IGZhbHNlOwor
ICAgIFt3ZWJWaWV3IGFwcEJvdW5kTmF2aWdhdGlvbkRhdGE6XihOU0FycmF5PE5TTnVtYmVyICo+
ICpuYXZpZ2F0aW9uRGF0YSkgeworICAgICAgICAvLyBGaXJzdCBpbmRleCBpcyBhcHAtYm91bmQg
bG9hZHMsIHNlY29uZCBpcyBub24gYXBwLWJvdW5kIGxvYWRzLgorICAgICAgICAvLyBXZSBleHBl
Y3QgdG8gc2VlIG9ubHkgbm9uIGFwcC1ib3VuZCBsb2Fkcy4KKyAgICAgICAgRVhQRUNUX0VRKFtu
YXZpZ2F0aW9uRGF0YSBvYmplY3RBdEluZGV4OjBdLmludFZhbHVlLCAwKTsKKyAgICAgICAgRVhQ
RUNUX0VRKFtuYXZpZ2F0aW9uRGF0YSBvYmplY3RBdEluZGV4OjFdLmludFZhbHVlLCAxKTsKKyAg
ICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmaXNEb25lKTsKIH0KIAogVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBBcHBCb3VuZFJl
cXVlc3RXaXRoTmF2aWdhdGlvbikKQEAgLTE0NTQsOCArMTQ2NSwzNCBAQCBURVNUKEluQXBwQnJv
d3NlclByaXZhY3ksIEFwcEJvdW5kUmVxdWVzdFdpdGhOYXZpZ2F0aW9uKQogICAgIFt3ZWJWaWV3
IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKIAogICAgIHN0YXRpYyBib29sIGlz
RG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ6XihC
T09MIGlzQXBwQm91bmQpIHsKKyAgICAgICAgRVhQRUNUX1RSVUUoaXNBcHBCb3VuZCk7CisgICAg
ICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJmlzRG9uZSk7CisgICAgCisgICAgaXNEb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgYXBw
Qm91bmROYXZpZ2F0aW9uRGF0YTpeKE5TQXJyYXk8TlNOdW1iZXIgKj4gKm5hdmlnYXRpb25EYXRh
KSB7CisgICAgICAgIC8vIEZpcnN0IGluZGV4IGlzIGFwcC1ib3VuZCBsb2Fkcywgc2Vjb25kIGlz
IG5vbiBhcHAtYm91bmQgbG9hZHMuCisgICAgICAgIC8vIFdlIGV4cGVjdCB0byBzZWUgb25seSBh
cHAtYm91bmQgbG9hZHMuCisgICAgICAgIEVYUEVDVF9FUShbbmF2aWdhdGlvbkRhdGEgb2JqZWN0
QXRJbmRleDowXS5pbnRWYWx1ZSwgMSk7CisgICAgICAgIEVYUEVDVF9FUShbbmF2aWdhdGlvbkRh
dGEgb2JqZWN0QXRJbmRleDoxXS5pbnRWYWx1ZSwgMCk7CisgICAgICAgIGlzRG9uZSA9IHRydWU7
CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CisgICAg
CisgICAgaXNEb25lID0gZmFsc2U7CiAgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqbm9uQXBwQm91
bmRSZXF1ZXN0ID0gW05TTXV0YWJsZVVSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVS
TFdpdGhTdHJpbmc6bm9uQXBwQm91bmRVUkxdXTsKICAgICBBUFBfQk9VTkRfUkVRVUVTVF9BRERJ
VElPTlMKKyAgICAKKyAgICBpc0RvbmUgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBjbGVhckFwcEJv
dW5kTmF2aWdhdGlvblJlcG9ydHM6XnsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsK
KworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKIAogICAgIFt3ZWJWaWV3
IGxvYWRSZXF1ZXN0Om5vbkFwcEJvdW5kUmVxdWVzdF07CiAgICAgW3dlYlZpZXcgX3Rlc3Rfd2Fp
dEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOwpAQCAtMTQ2Niw1ICsxNTAzLDY3IEBAIFRFU1QoSW5B
cHBCcm93c2VyUHJpdmFjeSwgQXBwQm91bmRSZXF1ZXN0V2l0aE5hdmlnYXRpb24pCiAgICAgfV07
CiAKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CisgICAgCisgICAgaXNE
b25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgYXBwQm91bmROYXZpZ2F0aW9uRGF0YTpeKE5TQXJy
YXk8TlNOdW1iZXIgKj4gKm5hdmlnYXRpb25EYXRhKSB7CisgICAgICAgIC8vIEZpcnN0IGluZGV4
IGlzIGFwcC1ib3VuZCBsb2Fkcywgc2Vjb25kIGlzIG5vbiBhcHAtYm91bmQgbG9hZHMuCisgICAg
ICAgIC8vIFdlIGV4cGVjdCB0byBzZWUgb25seSBub24gYXBwLWJvdW5kIGxvYWRzLgorICAgICAg
ICBFWFBFQ1RfRVEoW25hdmlnYXRpb25EYXRhIG9iamVjdEF0SW5kZXg6MF0uaW50VmFsdWUsIDAp
OworICAgICAgICBFWFBFQ1RfRVEoW25hdmlnYXRpb25EYXRhIG9iamVjdEF0SW5kZXg6MV0uaW50
VmFsdWUsIDEpOworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogfQorCitURVNUKEluQXBwQnJvd3NlclByaXZh
Y3ksIEFwcEJvdW5kUmVxdWVzdFdpdGhTdWJGcmFtZSkKK3sKKyAgICBSZXRhaW5QdHI8V0tXZWJW
aWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25m
aWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgW2NvbmZpZ3VyYXRpb24gX3NldE92ZXJyaWRl
Q29udGVudFNlY3VyaXR5UG9saWN5OkAic2NyaXB0LXNyYyAnbm9uY2UtYiciXTsKKworICAgIFJl
dGFpblB0cjxUZXN0V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcg
YWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJh
dGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0g
W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZv
clJlc291cmNlOkAicGFnZS13aXRoLWNzcCIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVj
dG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1
ZXN0OnJlcXVlc3RdOworCisgICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJNYWluRnJhbWU6
IEIiXTsKKyAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAIlN1YmZyYW1lOiBCIl07CisKKyAg
ICBzdGF0aWMgYm9vbCBpc0RvbmUgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBhcHBCb3VuZE5hdmln
YXRpb25EYXRhOl4oTlNBcnJheTxOU051bWJlciAqPiAqbmF2aWdhdGlvbkRhdGEpIHsKKyAgICAg
ICAgLy8gRmlyc3QgaW5kZXggaXMgYXBwLWJvdW5kIGxvYWRzLCBzZWNvbmQgaXMgbm9uIGFwcC1i
b3VuZCBsb2Fkcy4KKyAgICAgICAgLy8gV2UgZXhwZWN0IHRvIHNlZSBvbmx5IGFwcC1ib3VuZCBs
b2Fkcy4KKyAgICAgICAgRVhQRUNUX0VRKFtuYXZpZ2F0aW9uRGF0YSBvYmplY3RBdEluZGV4OjBd
LmludFZhbHVlLCAxKTsKKyAgICAgICAgRVhQRUNUX0VRKFtuYXZpZ2F0aW9uRGF0YSBvYmplY3RB
dEluZGV4OjFdLmludFZhbHVlLCAwKTsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsK
KworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKK307CisKK1RFU1QoSW5B
cHBCcm93c2VyUHJpdmFjeSwgTm9uQXBwQm91bmRSZXF1ZXN0V2l0aFN1YkZyYW1lKQoreworICAg
IFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHRO
UyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBbY29uZmlndXJh
dGlvbiBfc2V0T3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3k6QCJzY3JpcHQtc3JjICdub25j
ZS1iJyJdOworCisgICAgUmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5T
KFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgw
MCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBOU011dGFi
bGVVUkxSZXF1ZXN0ICpub25BcHBCb3VuZFJlcXVlc3QgPSBbTlNNdXRhYmxlVVJMUmVxdWVzdCBy
ZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAicGFn
ZS13aXRoLWNzcCIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJL
aXRBUEkucmVzb3VyY2VzIl1dOworICAgIEFQUF9CT1VORF9SRVFVRVNUX0FERElUSU9OUworCisg
ICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6bm9uQXBwQm91bmRSZXF1ZXN0XTsKKworICAgIFt3ZWJW
aWV3IHdhaXRGb3JNZXNzYWdlOkAiTWFpbkZyYW1lOiBCIl07CisgICAgW3dlYlZpZXcgd2FpdEZv
ck1lc3NhZ2U6QCJTdWJmcmFtZTogQiJdOworCisgICAgc3RhdGljIGJvb2wgaXNEb25lID0gZmFs
c2U7CisgICAgW3dlYlZpZXcgYXBwQm91bmROYXZpZ2F0aW9uRGF0YTpeKE5TQXJyYXk8TlNOdW1i
ZXIgKj4gKm5hdmlnYXRpb25EYXRhKSB7CisgICAgICAgIC8vIEZpcnN0IGluZGV4IGlzIGFwcC1i
b3VuZCByZXF1ZXN0cywgc2Vjb25kIGlzIG5vbiBhcHAtYm91bmQgcmVxdWVzdHMuCisgICAgICAg
IC8vIFdlIGV4cGVjdCB0byBzZWUgb25seSBub24gYXBwLWJvdW5kIGxvYWRzLgorICAgICAgICBF
WFBFQ1RfRVEoW25hdmlnYXRpb25EYXRhIG9iamVjdEF0SW5kZXg6MF0uaW50VmFsdWUsIDApOwor
ICAgICAgICBFWFBFQ1RfRVEoW25hdmlnYXRpb25EYXRhIG9iamVjdEF0SW5kZXg6MV0uaW50VmFs
dWUsIDEpOworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworfTsKKwogI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvY29jb2EvVGVzdFdLV2ViVmlldy5oCmluZGV4IGMxZGMwOGNmYTRjZjA2MTMzNTI0NTdiZjEx
YThlZTMwNjEwN2FlOGEuLjQ2MTYwYmYyYzQzMGY3ODdlODFjOTYxMmMyNWRiMjdiYjcxMzZkMzcg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5oCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5oCkBAIC02OCw2ICs2
OCw4IEBACiAtIChpZClvYmplY3RCeUNhbGxpbmdBc3luY0Z1bmN0aW9uOihOU1N0cmluZyAqKXNj
cmlwdCB3aXRoQXJndW1lbnRzOihOU0RpY3Rpb25hcnkgKilhcmd1bWVudHMgZXJyb3I6KE5TRXJy
b3IgKiopZXJyb3JPdXQ7CiAtICh1bnNpZ25lZCl3YWl0VW50aWxDbGllbnRXaWR0aElzOih1bnNp
Z25lZClleHBlY3RlZENsaWVudFdpZHRoOwogLSAodm9pZClsYXN0TmF2aWdhdGlvbldhc0FwcEJv
dW5kOih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyOworLSAodm9pZClhcHBCb3VuZE5h
dmlnYXRpb25EYXRhOih2b2lkKF4pKE5TQXJyYXk8TlNOdW1iZXIgKj4gKikpY29tcGxldGlvbkhh
bmRsZXI7CistICh2b2lkKWNsZWFyQXBwQm91bmROYXZpZ2F0aW9uUmVwb3J0czoodm9pZCheKSgp
KWNvbXBsZXRpb25IYW5kbGVyOwogQGVuZAogCiBAaW50ZXJmYWNlIFRlc3RNZXNzYWdlSGFuZGxl
ciA6IE5TT2JqZWN0IDxXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyPgpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCmluZGV4IDhkOTY3MTYzYjQ2ZGE3OTE5OTM0ZTY0OTA2
NDAzY2QyMzFiMmU2MGMuLjhlOWEzMzUyNTRjMGVkZWZlYzlmZWFiMjIzZTZjMDlhMDYzZTgxOTEg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbQor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0KQEAgLTI0Myw2
ICsyNDMsMTcgQEAgc3RhdGljIE5TU3RyaW5nICpvdmVycmlkZUJ1bmRsZUlkZW50aWZpZXIoaWQs
IFNFTCkKIHsKICAgICBbc2VsZiBfbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDpjb21wbGV0aW9u
SGFuZGxlcl07CiB9CisKKy0gKHZvaWQpYXBwQm91bmROYXZpZ2F0aW9uRGF0YToodm9pZCheKShO
U0FycmF5PE5TTnVtYmVyICo+ICopKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgW3NlbGYgX2Fw
cEJvdW5kTmF2aWdhdGlvbkRhdGE6Y29tcGxldGlvbkhhbmRsZXJdOworfQorCistICh2b2lkKWNs
ZWFyQXBwQm91bmROYXZpZ2F0aW9uUmVwb3J0czoodm9pZCheKSgpKWNvbXBsZXRpb25IYW5kbGVy
Cit7CisgICAgW3NlbGYgX2NsZWFyQXBwQm91bmROYXZpZ2F0aW9uUmVwb3J0czpjb21wbGV0aW9u
SGFuZGxlcl07Cit9CisKIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFRlc3RNZXNzYWdlSGFuZGxl
ciB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421128</attachid>
            <date>2021-02-20 21:55:29 -0800</date>
            <delta_ts>2021-02-22 09:22:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222241-20210220215528.patch</filename>
            <type>text/plain</type>
            <size>24660</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDdjMDJiMWVhMmViNDRlNzE5
ZDgyNGY0ODU0Y2YwZDhiNjBiMzNmYWEuLjk1NzRmZGZjODJhYzA1OWIzYTQwY2MxODAyMzVlYmZh
M2YyYzJlNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMjEtMDItMjAgIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgQXBwLWJvdW5kIHJl
cXVlc3QgcGFyYW1ldGVyIHNob3VsZCBiZSBwYXNzZWQgdG8gbWFpbiByZXNvdXJjZSByZXF1ZXN0
cyBub3QgdGhlIG1haW4gZnJhbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyMjI0MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzQ1NjA5NjY+IAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNldCB0aGUg
aXNBcHBCb3VuZCBwYXJhbWV0ZXIgb24gdGhlIHJlc291cmNlIHJlcXVlc3QgaWYgaXQgaXMgYSBt
YWluCisgICAgICAgIHJlc291cmNlIG5vdCBvbiB0aGUgbWFpbiBmcmFtZS4gT3RoZXJ3aXNlIG1v
c3RseSBjaGFuZ2VzIHRvIGFkZCBiZXR0ZXIgdGVzdGluZy4KKworICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6OmFwcEJvdW5kTmF2aWdhdGlvbkRhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6Y2xlYXJBcHBCb3VuZE5hdmlnYXRpb25SZXBvcnRzKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtT
ZXNzaW9uLmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpzZXRIYXNMb2FkZWRB
cHBCb3VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6aGFzTG9h
ZGVkQXBwQm91bmRSZXF1ZXN0IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Np
b246OnNldEhhc0xvYWRlZE5vbkFwcEJvdW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtTZXNzaW9uOjpoYXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3QgY29uc3QpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tDb2NvYTo6TmV0d29ya0RhdGFUYXNrQ29jb2EpOgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAqIFNoYXJlZC9O
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbi5oOgorICAgICAgICAoV2ViS2l0OjpBcHBCb3VuZE5h
dmlnYXRpb25UZXN0aW5nRGF0YTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6QXBw
Qm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGE6OmRlY29kZSk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3VGVzdGluZy5tbToKKyAgICAgICAgKC1bX1dLQXBwQm91
bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEgaGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0XSk6CisgICAg
ICAgICgtW19XS0FwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhIGhhc0xvYWRlZE5vbkFwcEJv
dW5kUmVxdWVzdF0pOgorICAgICAgICAoLVtfV0tBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0
YSBpbml0XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfYXBwQm91bmROYXZpZ2F0aW9uRGF0YTpd
KToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9jbGVhckFwcEJvdW5kTmF2aWdhdGlvblJlcG9ydHM6
XSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6YXBwQm91bmROYXZpZ2F0aW9uRGF0YSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6Y2xlYXJBcHBCb3VuZE5hdmlnYXRpb25SZXBvcnRzKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyU3Ry
YXRlZ3k6OmxvYWRSZXNvdXJjZSk6CisgICAgICAgIFRoZSBmaXguCisKIDIwMjEtMDItMTkgIEth
dGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CiAKICAgICAgICAgQ3JlYXRl
IFNRTGl0ZSBza2VsZXRvbiBpbXBsZW1lbnRhdGlvbiBmb3IgUENNIGZyYXVkIHByZXZlbnRpb24K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5k
ZXggNjgzMDE1ZDE2OWE4YzI5OTIzMzBmZjQ2MDg1NGNjNmMzMTYyODM2Yy4uNjYwZDEzNDE3Zjk5
ZGE2YTNiYWZiYzkyMDVkZWExNWI4NDVjMzY1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTI3NzAsNCArMjc3MCwyMiBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzOjpzZXRDT1JTRGlzYWJsaW5nUGF0dGVybnMoUGFnZUlkZW50aWZpZXIg
cGFnZUlkZW50aWZpZXIsIFZlYwogICAgIG1fZXh0ZW5zaW9uQ09SU0Rpc2FibGluZ1BhdHRlcm5z
LnNldChwYWdlSWRlbnRpZmllciwgV1RGTW92ZShwYXJzZWRQYXR0ZXJucykpOwogfQogCit2b2lk
IE5ldHdvcmtQcm9jZXNzOjphcHBCb3VuZE5hdmlnYXRpb25EYXRhKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5n
RGF0YSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNz
aW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcih7IG5ldHdvcmtTZXNzaW9uLT5oYXNMb2FkZWRBcHBCb3VuZFJlcXVlc3QoKSwg
bmV0d29ya1Nlc3Npb24tPmhhc0xvYWRlZE5vbkFwcEJvdW5kUmVxdWVzdCgpIH0pOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7Cit9CisKK3ZvaWQg
TmV0d29ya1Byb2Nlc3M6OmNsZWFyQXBwQm91bmROYXZpZ2F0aW9uUmVwb3J0cyhQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3sKKyAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vz
c2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIG5ldHdvcmtTZXNzaW9uLT5zZXRIYXNMb2FkZWRB
cHBCb3VuZFJlcXVlc3QoZmFsc2UpOworICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+c2V0SGFzTG9h
ZGVkTm9uQXBwQm91bmRSZXF1ZXN0KGZhbHNlKTsKKyAgICB9CisgICAgY29tcGxldGlvbkhhbmRs
ZXIoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggZWEyZGQ3ZjUzOGMwNzQ2NGI4NjRhMDFj
NWUzOGNjZWRiYWVhOGM3Mi4uZTNlMDE0ZWZkMDc1MDZkYmI4N2YwMjAyODAwZTNjMTkxNDdmNmZj
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApA
QCAtMzc3LDYgKzM3Nyw5IEBAIHB1YmxpYzoKICAgICBib29sIHNob3VsZERpc2FibGVDT1JTRm9y
UmVxdWVzdFRvKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBVUkwmKSBjb25zdDsKICAg
ICB2b2lkIHNldENPUlNEaXNhYmxpbmdQYXR0ZXJucyhXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwg
VmVjdG9yPFN0cmluZz4mJik7CiAKKyAgICB2b2lkIGFwcEJvdW5kTmF2aWdhdGlvbkRhdGEoUEFM
OjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQXBwQm91bmROYXZpZ2F0aW9uVGVz
dGluZ0RhdGEpPiYmKTsKKyAgICB2b2lkIGNsZWFyQXBwQm91bmROYXZpZ2F0aW9uUmVwb3J0cyhQ
QUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKwogcHJpdmF0ZToK
ICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKGNvbnN0IE5ldHdvcmtQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDg0MTFiYmU5
ZDVlYTZmYmUzZWJjNGVkMGZhNTQ5ZThmNGE3OGNiYWYuLmYzN2M0OTlmNTIyY2IyMDI3ZDZjZGI3
MTA3NzI0OGFmMDUwZDEzOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMTg5LDQgKzE4OSw3IEBAIG1l
c3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICNlbmRpZgogICAgIFVw
ZGF0ZUJ1bmRsZUlkZW50aWZpZXIoU3RyaW5nIGJ1bmRsZUlkZW50aWZpZXIpIC0+ICgpIEFzeW5j
CiAgICAgQ2xlYXJCdW5kbGVJZGVudGlmaWVyKCkgLT4gKCkgQXN5bmMKKworICAgIEFwcEJvdW5k
TmF2aWdhdGlvbkRhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoc3RydWN0IFdlYktp
dDo6QXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEgZGF0YSkgQXN5bmMKKyAgICBDbGVhckFw
cEJvdW5kTmF2aWdhdGlvblJlcG9ydHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBB
c3luYwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5o
CmluZGV4IGZmMjFmMjhmM2I3ZGFmZjRiZjRlOGFhNGM3NDRhMjg5ZmVmMGRmOGIuLjI2M2I3MWI3
MmFlYzY5ZWRhMjhmMmFhYmU2YTJkMjkwMzJiNjdkNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKQEAgLTE1Niw2ICsxNTYsMTEgQEAgcHVibGlj
OgogICAgIE5ldHdvcmtMb2FkU2NoZWR1bGVyJiBuZXR3b3JrTG9hZFNjaGVkdWxlcigpOwogICAg
IFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlciYgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQo
KSB7IHJldHVybiAqbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudDsgfQogCisgICAgdm9pZCBzZXRI
YXNMb2FkZWRBcHBCb3VuZFJlcXVlc3QoYm9vbCBoYXNMb2FkZWRBcHBCb3VuZFJlcXVlc3QpIHsg
bV9oYXNMb2FkZWRBcHBCb3VuZFJlcXVlc3QgPSBoYXNMb2FkZWRBcHBCb3VuZFJlcXVlc3Q7IH0K
KyAgICBib29sIGhhc0xvYWRlZEFwcEJvdW5kUmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1faGFz
TG9hZGVkQXBwQm91bmRSZXF1ZXN0OyB9CisgICAgdm9pZCBzZXRIYXNMb2FkZWROb25BcHBCb3Vu
ZFJlcXVlc3QoYm9vbCBoYXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3QpIHsgbV9oYXNMb2FkZWRO
b25BcHBCb3VuZFJlcXVlc3QgPSBoYXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3Q7IH0KKyAgICBi
b29sIGhhc0xvYWRlZE5vbkFwcEJvdW5kUmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzTG9h
ZGVkTm9uQXBwQm91bmRSZXF1ZXN0OyB9CisKIHByb3RlY3RlZDoKICAgICBOZXR3b3JrU2Vzc2lv
bihOZXR3b3JrUHJvY2VzcyYsIGNvbnN0IE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJz
Jik7CiAKQEAgLTIwMCw2ICsyMDUsOSBAQCBwcm90ZWN0ZWQ6CiAjaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQogICAgIEhhc2hTZXQ8c3RkOjp1bmlxdWVfcHRyPFNlcnZpY2VXb3JrZXJTb2Z0VXBk
YXRlTG9hZGVyPj4gbV9zb2Z0VXBkYXRlTG9hZGVyczsKICNlbmRpZgorICAgIAorICAgIGJvb2wg
bV9oYXNMb2FkZWRBcHBCb3VuZFJlcXVlc3QgeyBmYWxzZSB9OworICAgIGJvb2wgbV9oYXNMb2Fk
ZWROb25BcHBCb3VuZFJlcXVlc3QgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtEYXRhVGFza0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQppbmRleCBkNTkzYjQyYjUxOGNhNGMzZmM1NzM0MzcxM2Fj
NTBiM2RiNWMwN2QyLi45YmY5OWQwMzVkYjJiOWVkODYwZTQ2NWRiNWFjZjQ4MzU5NzlmMGJmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRh
VGFza0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya0RhdGFUYXNrQ29jb2EubW0KQEAgLTMzOSw2ICszMzksOCBAQCBOZXR3b3JrRGF0YVRhc2tD
b2NvYTo6TmV0d29ya0RhdGFUYXNrQ29jb2EoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdv
cmtEYXRhVAogCiAgICAgTkVUV09SS19EQVRBX1RBU0tfQ09DT0FfQURESVRJT05TCiAKKyAgICBy
ZXF1ZXN0LmlzQXBwQm91bmQoKSA/IG1fc2Vzc2lvbi0+c2V0SGFzTG9hZGVkQXBwQm91bmRSZXF1
ZXN0KHRydWUpIDogbV9zZXNzaW9uLT5zZXRIYXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3QodHJ1
ZSk7CisKICAgICBhcHBseVNuaWZmaW5nUG9saWNpZXNBbmRCaW5kUmVxdWVzdFRvSW5mZXJmYWNl
SWZOZWVkZWQobnNSZXF1ZXN0LCBzaG91bGRDb250ZW50U25pZmYgPT0gV2ViQ29yZTo6Q29udGVu
dFNuaWZmaW5nUG9saWN5OjpTbmlmZkNvbnRlbnQgJiYgIXVybC5pc0xvY2FsRmlsZSgpLCBzaG91
bGRDb250ZW50RW5jb2RpbmdTbmlmZiA9PSBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmlu
Z1BvbGljeTo6U25pZmYpOwogCiAgICAgbV90YXNrID0gW21fc2Vzc2lvbldyYXBwZXItPnNlc3Np
b24gZGF0YVRhc2tXaXRoUmVxdWVzdDpuc1JlcXVlc3RdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggZDU0MzAyMjc1M2FkZjMxOTM2MjQwY2YyYTQ4ZjUxYjcy
MzlkNWVjNS4uN2ExZmQ1OWMyYzM5ZTRkMGFkZjE3YjQ2YTQxMWQ0ZWE1ZDJhMmE0ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC03NDIsOCArNzQyLDggQEAg
ZGVmIGhlYWRlcnNfZm9yX3R5cGUodHlwZSk6CiAgICAgICAgICdXZWJDb3JlOjpXaWxsQ29udGlu
dWVMb2FkaW5nJzogWyc8V2ViQ29yZS9GcmFtZUxvYWRlclR5cGVzLmg+J10sCiAgICAgICAgICdX
ZWJDb3JlOjpTZWxlY3Rpb25SZWN0JzogWyciRWRpdG9yU3RhdGUuaCInXSwKICAgICAgICAgJ1dl
YktpdDo6QWN0aXZpdHlTdGF0ZUNoYW5nZUlEJzogWyciRHJhd2luZ0FyZWFJbmZvLmgiJ10sCisg
ICAgICAgICdXZWJLaXQ6OkFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhJzogWyciTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW4uaCInXSwKICAgICAgICAgJ1dlYktpdDo6QWxsb3dPdmVyd3Jp
dGUnOiBbJyJEb3dubG9hZElELmgiJ10sCi0gICAgICAgICdXZWJLaXQ6Okxhc3ROYXZpZ2F0aW9u
V2FzQXBwQm91bmQnOiBbJyJOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbi5oIiddLAogICAgICAg
ICAnV2ViS2l0OjpCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUnOiBbJyJTZXNzaW9uU3RhdGUuaCIn
XSwKICAgICAgICAgJ1dlYktpdDo6Q2FsbERvd25sb2FkRGlkU3RhcnQnOiBbJyJEb3dubG9hZE1h
bmFnZXIuaCInXSwKICAgICAgICAgJ1dlYktpdDo6Q29udGVudFdvcmxkSWRlbnRpZmllcic6IFsn
IkNvbnRlbnRXb3JsZFNoYXJlZC5oIiddLApAQCAtNzUyLDYgKzc1Miw3IEBAIGRlZiBoZWFkZXJz
X2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAnV2ViS2l0OjpHZXN0dXJlUmVjb2duaXplclN0YXRl
JzogWyciR2VzdHVyZVR5cGVzLmgiJ10sCiAgICAgICAgICdXZWJLaXQ6Okdlc3R1cmVUeXBlJzog
WyciR2VzdHVyZVR5cGVzLmgiJ10sCiAgICAgICAgICdXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lv
bkVycm9yJzogWyciSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuaCInXSwKKyAgICAgICAgJ1dlYktp
dDo6TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCc6IFsnIk5hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluLmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OkxheWVySG9zdGluZ0NvbnRleHRJRCc6IFsnIkxh
eWVySG9zdGluZ0NvbnRleHQuaCInXSwKICAgICAgICAgJ1dlYktpdDo6TGF5ZXJIb3N0aW5nTW9k
ZSc6IFsnIkxheWVyVHJlZUNvbnRleHQuaCInXSwKICAgICAgICAgJ1dlYktpdDo6UGFnZVN0YXRl
JzogWyciU2Vzc2lvblN0YXRlLmgiJ10sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9OYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbi5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4uaAppbmRleCAzMWUwNzE1NTk2NmJiN2ZiNmQ3M2FkYmI2
M2E3YTc5MzNiODY5YjRhLi4xODkwZDZmZDg1MzhjMDI4NDMzOWJhZTA2N2Y5OTBhMzk5OGQxNTEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9OYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluLmgKQEAgLTI1LDEwICsyNSw0MCBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkFy
Z3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiRGVjb2Rlci5oIgorI2luY2x1ZGUgIkVuY29kZXIu
aCIKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGVudW0gY2xhc3MgTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4gOiBib29sIHsgTm8sIFllcyB9OwogZW51bSBjbGFzcyBMYXN0TmF2aWdhdGlvbldh
c0FwcEJvdW5kIDogYm9vbCB7IE5vLCBZZXMgfTsKIAorc3RydWN0IEFwcEJvdW5kTmF2aWdhdGlv
blRlc3RpbmdEYXRhIHsKKyAgICBib29sIGhhc0xvYWRlZEFwcEJvdW5kUmVxdWVzdCB7IGZhbHNl
IH07CisgICAgYm9vbCBoYXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3QgeyBmYWxzZSB9OworICAg
IAorICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKKyAgICB7Cisg
ICAgICAgIGVuY29kZXIgPDwgaGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0OworICAgICAgICBlbmNv
ZGVyIDw8IGhhc0xvYWRlZE5vbkFwcEJvdW5kUmVxdWVzdDsKKyAgICB9CisKKyAgICBzdGF0aWMg
T3B0aW9uYWw8QXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGE+IGRlY29kZShJUEM6OkRlY29k
ZXImIGRlY29kZXIpCisgICAgeworICAgICAgICBPcHRpb25hbDxib29sPiBoYXNMb2FkZWRBcHBC
b3VuZFJlcXVlc3Q7CisgICAgICAgIGRlY29kZXIgPj4gaGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0
OworICAgICAgICBpZiAoIWhhc0xvYWRlZEFwcEJvdW5kUmVxdWVzdCkKKyAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8Ym9vbD4gaGFzTG9hZGVkTm9u
QXBwQm91bmRSZXF1ZXN0OworICAgICAgICBkZWNvZGVyID4+IGhhc0xvYWRlZE5vbkFwcEJvdW5k
UmVxdWVzdDsKKyAgICAgICAgaWYgKCFoYXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3QpCisgICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIHJldHVybiB7eyBXVEZNb3Zl
KCpoYXNMb2FkZWRBcHBCb3VuZFJlcXVlc3QpLCBXVEZNb3ZlKCpoYXNMb2FkZWROb25BcHBCb3Vu
ZFJlcXVlc3QpIH19OworICAgIH0KK307CisKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3Rpbmcu
aAppbmRleCA4ODRkOGMwODg1ZmE3YTM2M2IyYWQ4MDI1NDIyYzMzZjcxNDVlYWExLi44M2Q5NGVm
ZGQxOThhNzUxYTY5ZWU2OGY4MTZkYTJkMDc1ZTlhNzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmcuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZUZvclRl
c3RpbmcuaApAQCAtMzIsNiArMzIsMTEgQEAgdHlwZWRlZiBlbnVtIHsKICAgICBXS1dlYlZpZXdB
dWRpb1JvdXRpbmdBcmJpdHJhdGlvblN0YXR1c0FjdGl2ZSwKIH0gV0tXZWJWaWV3QXVkaW9Sb3V0
aW5nQXJiaXRyYXRpb25TdGF0dXM7CiAKK0BpbnRlcmZhY2UgX1dLQXBwQm91bmROYXZpZ2F0aW9u
VGVzdGluZ0RhdGEgOiBOU09iamVjdAorQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgaGFzTG9h
ZGVkQXBwQm91bmRSZXF1ZXN0OworQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgaGFzTG9hZGVk
Tm9uQXBwQm91bmRSZXF1ZXN0OworQGVuZAorCiBAaW50ZXJmYWNlIFdLV2ViVmlldyAoV0tUZXN0
aW5nKQogCiAtICh2b2lkKV9zZXRQYWdlU2NhbGU6KENHRmxvYXQpc2NhbGUgd2l0aE9yaWdpbjoo
Q0dQb2ludClvcmlnaW47CkBAIC04OCw1ICs5Myw3IEBAIHR5cGVkZWYgZW51bSB7CiAtICh2b2lk
KV9zZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uUmVwb3J0VVJMRm9yVGVzdGlu
ZzooTlNVUkwgKil1cmwgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikodm9pZCkpY29tcGxldGlv
bkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19U
QkEpKTsKIAogLSAodm9pZClfbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDoodm9pZCheKShCT09M
KSljb21wbGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQpX2FwcEJvdW5kTmF2aWdhdGlvbkRhdGE6KHZv
aWQoXikoX1dLQXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEgKikpY29tcGxldGlvbkhhbmRs
ZXI7CistICh2b2lkKV9jbGVhckFwcEJvdW5kTmF2aWdhdGlvblJlcG9ydHM6KHZvaWQoXikodm9p
ZCkpY29tcGxldGlvbkhhbmRsZXI7CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdUZXN0aW5nLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1Rlc3RpbmcubW0KaW5kZXggN2NjMzBlYTQxNDJh
MzUwMDAzYmUxZmM0OTMzOGQ1NGIwYWJkNTk4My4uM2ZjNDllOTQ3MjU4ZjNlZGM0YTRmOWQwNGFm
NjE4M2RjMDRjZWQ1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlld1Rlc3RpbmcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlld1Rlc3RpbmcubW0KQEAgLTQwLDYgKzQwLDI4IEBACiAjaW1wb3J0IDxX
ZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9WYWxp
ZGF0aW9uQnViYmxlLmg+CiAKK0BpbXBsZW1lbnRhdGlvbiBfV0tBcHBCb3VuZE5hdmlnYXRpb25U
ZXN0aW5nRGF0YSB7CisgICAgQk9PTCBfaGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0OworICAgIEJP
T0wgX2hhc0xvYWRlZE5vbkFwcEJvdW5kUmVxdWVzdDsKK30KKworLSAoQk9PTCloYXNMb2FkZWRB
cHBCb3VuZFJlcXVlc3QKK3sKKyAgICByZXR1cm4gX2hhc0xvYWRlZEFwcEJvdW5kUmVxdWVzdDsK
K30KKworLSAoQk9PTCloYXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3QKK3sKKyAgICByZXR1cm4g
X2hhc0xvYWRlZE5vbkFwcEJvdW5kUmVxdWVzdDsKK30KKworLSAoaW5zdGFuY2V0eXBlKSBpbml0
Cit7CisgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKKyAgICByZXR1cm4gc2VsZjsKK30KKworQGVu
ZAogCiBAaW1wbGVtZW50YXRpb24gV0tXZWJWaWV3IChXS1Rlc3RpbmcpCiAKQEAgLTMzMyw0ICsz
NTUsMjEgQEAKICAgICB9KTsKIH0KIAorLSAodm9pZClfYXBwQm91bmROYXZpZ2F0aW9uRGF0YToo
dm9pZCheKShfV0tBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSAqKSljb21wbGV0aW9uSGFu
ZGxlcgoreworICAgIF9wYWdlLT5hcHBCb3VuZE5hdmlnYXRpb25EYXRhKFtjb21wbGV0aW9uSGFu
ZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChhdXRvIGFwcEJvdW5kRGF0
YSkgeworICAgICAgICBhdXRvIHdrRGF0YSA9IGFkb3B0TlMoW1tfV0tBcHBCb3VuZE5hdmlnYXRp
b25UZXN0aW5nRGF0YSBhbGxvY10gaW5pdF0pOworICAgICAgICB3a0RhdGEuZ2V0KCkuaGFzTG9h
ZGVkQXBwQm91bmRSZXF1ZXN0ID0gYXBwQm91bmREYXRhLmhhc0xvYWRlZEFwcEJvdW5kUmVxdWVz
dDsKKyAgICAgICAgd2tEYXRhLmdldCgpLmhhc0xvYWRlZE5vbkFwcEJvdW5kUmVxdWVzdCA9IGFw
cEJvdW5kRGF0YS5oYXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3Q7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKHdrRGF0YS5nZXQoKSk7CisgICAgfSk7Cit9CisKKy0gKHZvaWQpX2NsZWFyQXBw
Qm91bmROYXZpZ2F0aW9uUmVwb3J0czoodm9pZCheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcgor
eworICAgIF9wYWdlLT5jbGVhckFwcEJvdW5kTmF2aWdhdGlvblJlcG9ydHMoW2NvbXBsZXRpb25I
YW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0geworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcigpOworICAgIH0pOworfQorCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA0NjRiZGE5MWFhZjhkMDE1M2YxZTdlN2U5MTljMTQx
ZDY3MDliNzMxLi5jNGIzODM5YzJiMzEyOWEwMDAwMjU3NmEwMjA4MjEwOTE3MmI2MGFjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTEwMzgxLDYgKzEwMzgx
LDE4IEBAIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IFdlYlBhZ2VQcm94eTo6Y3JlYXRl
TmV0d29ya0V4dGVuc2lvbnNTYW5kYm94RXh0ZW5zCiB9CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JN
KENPQ09BKQordm9pZCBXZWJQYWdlUHJveHk6OmFwcEJvdW5kTmF2aWdhdGlvbkRhdGEoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit7CisgICAgd2Vic2l0ZURhdGFTdG9yZSgpLm5ldHdvcmtQcm9jZXNzKCku
c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6QXBwQm91bmROYXZp
Z2F0aW9uRGF0YShtX3dlYnNpdGVEYXRhU3RvcmUtPnNlc3Npb25JRCgpKSwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6Y2xlYXJBcHBCb3VuZE5h
dmlnYXRpb25SZXBvcnRzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3sKKyAgICB3ZWJzaXRlRGF0YVN0b3JlKCkubmV0d29ya1Byb2Nlc3MoKS5zZW5kV2l0
aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpDbGVhckFwcEJvdW5kTmF2aWdh
dGlvblJlcG9ydHMobV93ZWJzaXRlRGF0YVN0b3JlLT5zZXNzaW9uSUQoKSksIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAog
I3VuZGVmIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKaW5kZXggYTBjZWJkOWZiNDVlNzZmNTE5NTQ1M2NiNDk1Y2EzY2UwMzg0YTcwZi4u
ZTRlMGExZGYwNzI0ZmUwNjFlOTRiMGZkYWYzMTkzZDc2ZGM2ZmQ5NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTE4NTgsNiArMTg1OCw4IEBAIHB1YmxpYzoKICNp
ZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIHNldExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQo
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgdm9pZCBsYXN0TmF2aWdhdGlvbldhc0Fw
cEJvdW5kKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgYXBwQm91
bmROYXZpZ2F0aW9uRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFwcEJvdW5kTmF2aWdhdGlv
blRlc3RpbmdEYXRhKT4mJik7CisgICAgdm9pZCBjbGVhckFwcEJvdW5kTmF2aWdhdGlvblJlcG9y
dHMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICNlbmRpZgogCiBwcml2YXRlOgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRl
Z3kuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRl
Z3kuY3BwCmluZGV4IGNjMjIwM2ZlOGM5N2E1OTdhZGMzMDY5YjgwYTc4Nzg4ZmJkNWUzMDguLjIy
Y2UwOTI1OThmMTBkYTZjOGMxZTA0NjM3ZjYyMDE5MWMwOWVlNjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKQEAg
LTEwNyw3ICsxMDcsNyBAQCBXZWJMb2FkZXJTdHJhdGVneTo6fldlYkxvYWRlclN0cmF0ZWd5KCkK
IAogdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6bG9hZFJlc291cmNlKEZyYW1lJiBmcmFtZSwgQ2Fj
aGVkUmVzb3VyY2UmIHJlc291cmNlLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBS
ZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVm
UHRyPFN1YnJlc291cmNlTG9hZGVyPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBp
ZiAocmVzb3VyY2UudHlwZSgpICE9IENhY2hlZFJlc291cmNlOjpUeXBlOjpNYWluUmVzb3VyY2Up
IHsKKyAgICBpZiAocmVzb3VyY2UudHlwZSgpICE9IENhY2hlZFJlc291cmNlOjpUeXBlOjpNYWlu
UmVzb3VyY2UgfHwgIWZyYW1lLmlzTWFpbkZyYW1lKCkpIHsKICAgICAgICAgaWYgKGF1dG8qIGRv
Y3VtZW50ID0gZnJhbWUubWFpbkZyYW1lKCkuZG9jdW1lbnQoKSkgewogICAgICAgICAgICAgaWYg
KGRvY3VtZW50ICYmIGRvY3VtZW50LT5sb2FkZXIoKSkKICAgICAgICAgICAgICAgICByZXF1ZXN0
LnNldElzQXBwQm91bmQoZG9jdW1lbnQtPmxvYWRlcigpLT5sYXN0TmF2aWdhdGlvbldhc0FwcEJv
dW5kKCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IDc0ZTZlN2Y5NWNiYWQ0ODYwYzUxMWZjZjQ3ZDI4NjZjYjk3ODA5NDYuLjQ2ZDhkZWE2ZGM2
YjY3NjI2ZDE5MjYzOTA0M2M5YmEwNWFkYTQ1MDIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAyMS0wMi0yMCAgS2F0
ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KKworICAgICAgICBBcHAtYm91
bmQgcmVxdWVzdCBwYXJhbWV0ZXIgc2hvdWxkIGJlIHBhc3NlZCB0byBtYWluIHJlc291cmNlIHJl
cXVlc3RzIG5vdCB0aGUgbWFpbiBmcmFtZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjIyMjQxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NDU2MDk2
Nj4gCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
cyBtb3JlIHJvYnVzdCB0ZXN0aW5nIHRvIHJlcG9ydCB3aGVuIGFwcEJvdW5kL25vbkFwcEJvdW5k
IHJlcXVlc3RzCisgICAgICAgIGxvYWQgaW4gdGhlIG5ldHdvcmsgcHJvY2Vzcy4gVGhpcyB0ZXN0
cyBub3Qgb25seSB0aGF0IHRoZSBtYWluIGZyYW1l4oCZcworICAgICAgICBkb2N1bWVudCBsb2Fk
ZXIgaXMgcHJvcGVybHkgc2V0LCBidXQgYWxzbyB0aGF0IGFsbCBsb2FkcyBpbml0aWF0ZWQgZnJv
bQorICAgICAgICBhcHAtYm91bmQgcmVxdWVzdHMgYXJlIGFsc28gYXBwLWJvdW5kIHRvIGF2b2lk
IHJlZ3Jlc3Npb25zIGxpa2UgdGhpcyBpbiB0aGUgZnV0dXJlLgorCisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tOgorICAgICAg
ICBVdGlsaXplIHNvbWUgQ1NQIHRlc3QgcmVzb3VyY2VzIHRoYXQgaGF2ZSB0aGUgZXhhY3Qgc2V0
dXAgbmVlZGVkIHRvCisgICAgICAgIHRlc3QgdGhpcyBmaXguCisKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2Nv
Y29hL1Rlc3RXS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBhcHBCb3VuZE5hdmln
YXRpb25EYXRhOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgY2xlYXJBcHBCb3VuZE5hdmlnYXRp
b25SZXBvcnRzOl0pOgorCiAyMDIxLTAyLTE5ICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgUENNOiBSZXF1ZXN0IHNlcnZlciBwdWJsaWMga2V5IHRvIGdlbmVy
YXRlIHNlY3JldCB0b2tlbgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCmluZGV4IDczZDBjYzUyNWY0
YWZmNmZkMjNkNmJkZTQ1MTYxZjYyODg3OGY1ZDEuLjI3NDljMzJiNTY2MDFmOGZmOWNmOTZhMjc2
NGI2MWNiOGFkYTdhZjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0KQEAgLTM3LDYgKzM3LDcg
QEAKICNpbXBvcnQgPFdlYktpdC9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2Vi
S2l0L1dLVVJMU2NoZW1lVGFza1ByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1VzZXJDb250
ZW50Q29udHJvbGxlclByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRl
Rm9yVGVzdGluZy5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUu
aD4KICNpbXBvcnQgPFdlYktpdC9fV0tVc2VyQ29udGVudFdvcmxkLmg+CiAjaW1wb3J0IDxXZWJL
aXQvX1dLVXNlclN0eWxlU2hlZXQuaD4KQEAgLTE0MjUsMTkgKzE0MjYsMzAgQEAgVEVTVChJbkFw
cEJyb3dzZXJQcml2YWN5LCBBcHBCb3VuZFJlcXVlc3QpCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRv
cHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVybyBjb25m
aWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKICAgICBOU1N0cmluZyAqdXJsID0gQCJo
dHRwczovL3dlYmtpdC5vcmciOwogCi0gICAgc3RhdGljIGJvb2wgaXNEb25lID0gZmFsc2U7Cisg
ICAgX19ibG9jayBib29sIGlzRG9uZSA9IGZhbHNlOwogICAgIE5TTXV0YWJsZVVSTFJlcXVlc3Qg
Km5vbkFwcEJvdW5kUmVxdWVzdCA9IFtOU011dGFibGVVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJM
OltOU1VSTCBVUkxXaXRoU3RyaW5nOnVybF1dOwogICAgIEFQUF9CT1VORF9SRVFVRVNUX0FERElU
SU9OUwogCiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6bm9uQXBwQm91bmRSZXF1ZXN0XTsKICAg
ICBbd2ViVmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CiAKLSAgICBbd2Vi
VmlldyBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kOl4oQk9PTCBpc0FwcEJvdW5kKSB7CisgICAg
W3dlYlZpZXcgX2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ6XihCT09MIGlzQXBwQm91bmQpIHsK
ICAgICAgICAgRVhQRUNUX0ZBTFNFKGlzQXBwQm91bmQpOwogICAgICAgICBpc0RvbmUgPSB0cnVl
OwogICAgIH1dOwogCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworICAg
IAorICAgIGlzRG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF9hcHBCb3VuZE5hdmlnYXRpb25E
YXRhOl4oX1dLQXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEgKmRhdGEpIHsKKyAgICAgICAg
Ly8gRmlyc3QgaW5kZXggaXMgYXBwLWJvdW5kIGxvYWRzLCBzZWNvbmQgaXMgbm9uIGFwcC1ib3Vu
ZCBsb2Fkcy4KKyAgICAgICAgLy8gV2UgZXhwZWN0IHRvIHNlZSBvbmx5IG5vbiBhcHAtYm91bmQg
bG9hZHMuCisgICAgICAgIEVYUEVDVF9GQUxTRShkYXRhLmhhc0xvYWRlZEFwcEJvdW5kUmVxdWVz
dCk7CisgICAgICAgIEVYUEVDVF9UUlVFKGRhdGEuaGFzTG9hZGVkTm9uQXBwQm91bmRSZXF1ZXN0
KTsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmaXNEb25lKTsKIH0KIAogVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBBcHBC
b3VuZFJlcXVlc3RXaXRoTmF2aWdhdGlvbikKQEAgLTE0NTMsMTggKzE0NjUsMTA1IEBAIFRFU1Qo
SW5BcHBCcm93c2VyUHJpdmFjeSwgQXBwQm91bmRSZXF1ZXN0V2l0aE5hdmlnYXRpb24pCiAgICAg
W3dlYlZpZXcgbG9hZFJlcXVlc3Q6c3RhcnRpbmdSZXF1ZXN0XTsKICAgICBbd2ViVmlldyBfdGVz
dF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CiAKLSAgICBzdGF0aWMgYm9vbCBpc0RvbmUg
PSBmYWxzZTsKKyAgICBfX2Jsb2NrIGJvb2wgaXNEb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcg
X2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ6XihCT09MIGlzQXBwQm91bmQpIHsKKyAgICAgICAg
RVhQRUNUX1RSVUUoaXNBcHBCb3VuZCk7CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07
CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CisgICAgCisgICAgaXNE
b25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgX2FwcEJvdW5kTmF2aWdhdGlvbkRhdGE6XihfV0tB
cHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSAqZGF0YSkgeworICAgICAgICAvLyBGaXJzdCBp
bmRleCBpcyBhcHAtYm91bmQgbG9hZHMsIHNlY29uZCBpcyBub24gYXBwLWJvdW5kIGxvYWRzLgor
ICAgICAgICAvLyBXZSBleHBlY3QgdG8gc2VlIG9ubHkgYXBwLWJvdW5kIGxvYWRzLgorICAgICAg
ICBFWFBFQ1RfVFJVRShkYXRhLmhhc0xvYWRlZEFwcEJvdW5kUmVxdWVzdCk7CisgICAgICAgIEVY
UEVDVF9GQUxTRShkYXRhLmhhc0xvYWRlZE5vbkFwcEJvdW5kUmVxdWVzdCk7CisgICAgICAgIGlz
RG9uZSA9IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlz
RG9uZSk7CisgICAgCisgICAgaXNEb25lID0gZmFsc2U7CiAgICAgTlNNdXRhYmxlVVJMUmVxdWVz
dCAqbm9uQXBwQm91bmRSZXF1ZXN0ID0gW05TTXV0YWJsZVVSTFJlcXVlc3QgcmVxdWVzdFdpdGhV
Ukw6W05TVVJMIFVSTFdpdGhTdHJpbmc6bm9uQXBwQm91bmRVUkxdXTsKICAgICBBUFBfQk9VTkRf
UkVRVUVTVF9BRERJVElPTlMKKyAgICAKKyAgICBpc0RvbmUgPSBmYWxzZTsKKyAgICBbd2ViVmll
dyBfY2xlYXJBcHBCb3VuZE5hdmlnYXRpb25SZXBvcnRzOl57CisgICAgICAgIGlzRG9uZSA9IHRy
dWU7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiAK
ICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpub25BcHBCb3VuZFJlcXVlc3RdOwogICAgIFt3ZWJW
aWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKIAotICAgIFt3ZWJWaWV3IGxh
c3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ6XihCT09MIGlzQXBwQm91bmQpIHsKKyAgICBbd2ViVmll
dyBfbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDpeKEJPT0wgaXNBcHBCb3VuZCkgewogICAgICAg
ICBFWFBFQ1RfRkFMU0UoaXNBcHBCb3VuZCk7CiAgICAgICAgIGlzRG9uZSA9IHRydWU7CiAgICAg
fV07CiAKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CisgICAgCisgICAg
aXNEb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgX2FwcEJvdW5kTmF2aWdhdGlvbkRhdGE6Xihf
V0tBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSAqZGF0YSkgeworICAgICAgICAvLyBGaXJz
dCBpbmRleCBpcyBhcHAtYm91bmQgbG9hZHMsIHNlY29uZCBpcyBub24gYXBwLWJvdW5kIGxvYWRz
LgorICAgICAgICAvLyBXZSBleHBlY3QgdG8gc2VlIG9ubHkgbm9uIGFwcC1ib3VuZCBsb2Fkcy4K
KyAgICAgICAgRVhQRUNUX0ZBTFNFKGRhdGEuaGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0KTsKKyAg
ICAgICAgRVhQRUNUX1RSVUUoZGF0YS5oYXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3QpOworICAg
ICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZpc0RvbmUpOwogfQorCitURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIEFwcEJvdW5kUmVx
dWVzdFdpdGhTdWJGcmFtZSkKK3sKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtb
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFtjb25maWd1cmF0aW9u
IF9zZXRPdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeTpAInNjcmlwdC1zcmMgJ25vbmNlLWIn
Il07CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNv
bmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAInBh
Z2Utd2l0aC1jc3AiXTsKKworICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAiTWFpbkZyYW1l
OiBCIl07CisgICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJTdWJmcmFtZTogQiJdOworCisg
ICAgX19ibG9jayBib29sIGlzRG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF9hcHBCb3VuZE5h
dmlnYXRpb25EYXRhOl4oX1dLQXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEgKmRhdGEpIHsK
KyAgICAgICAgLy8gRmlyc3QgaW5kZXggaXMgYXBwLWJvdW5kIGxvYWRzLCBzZWNvbmQgaXMgbm9u
IGFwcC1ib3VuZCBsb2Fkcy4KKyAgICAgICAgLy8gV2UgZXhwZWN0IHRvIHNlZSBvbmx5IGFwcC1i
b3VuZCBsb2Fkcy4KKyAgICAgICAgRVhQRUNUX1RSVUUoZGF0YS5oYXNMb2FkZWRBcHBCb3VuZFJl
cXVlc3QpOworICAgICAgICBFWFBFQ1RfRkFMU0UoZGF0YS5oYXNMb2FkZWROb25BcHBCb3VuZFJl
cXVlc3QpOworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworfTsKKworVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5
LCBOb25BcHBCb3VuZFJlcXVlc3RXaXRoU3ViRnJhbWUpCit7CisgICAgYXV0byBjb25maWd1cmF0
aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAg
ICBbY29uZmlndXJhdGlvbiBfc2V0T3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3k6QCJzY3Jp
cHQtc3JjICdub25jZS1iJyJdOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RX
S1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkg
Y29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgTlNNdXRhYmxlVVJMUmVx
dWVzdCAqbm9uQXBwQm91bmRSZXF1ZXN0ID0gW05TTXV0YWJsZVVSTFJlcXVlc3QgcmVxdWVzdFdp
dGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInBhZ2Utd2l0aC1j
c3AiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJl
c291cmNlcyJdXTsKKyAgICBBUFBfQk9VTkRfUkVRVUVTVF9BRERJVElPTlMKKworICAgIFt3ZWJW
aWV3IGxvYWRSZXF1ZXN0Om5vbkFwcEJvdW5kUmVxdWVzdF07CisKKyAgICBbd2ViVmlldyB3YWl0
Rm9yTWVzc2FnZTpAIk1haW5GcmFtZTogQiJdOworICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdl
OkAiU3ViZnJhbWU6IEIiXTsKKworICAgIF9fYmxvY2sgYm9vbCBpc0RvbmUgPSBmYWxzZTsKKyAg
ICBbd2ViVmlldyBfYXBwQm91bmROYXZpZ2F0aW9uRGF0YTogXihfV0tBcHBCb3VuZE5hdmlnYXRp
b25UZXN0aW5nRGF0YSAqZGF0YSkgeworICAgICAgICAvLyBGaXJzdCBpbmRleCBpcyBhcHAtYm91
bmQgcmVxdWVzdHMsIHNlY29uZCBpcyBub24gYXBwLWJvdW5kIHJlcXVlc3RzLgorICAgICAgICAv
LyBXZSBleHBlY3QgdG8gc2VlIG9ubHkgbm9uIGFwcC1ib3VuZCBsb2Fkcy4KKyAgICAgICAgRVhQ
RUNUX0ZBTFNFKGRhdGEuaGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0KTsKKyAgICAgICAgRVhQRUNU
X1RSVUUoZGF0YS5oYXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3QpOworICAgICAgICBpc0RvbmUg
PSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUp
OworfTsKKwogI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rl
c3RXS1dlYlZpZXcuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5o
CmluZGV4IGMxZGMwOGNmYTRjZjA2MTMzNTI0NTdiZjExYThlZTMwNjEwN2FlOGEuLjIyYTQ4MjZj
NDEyYjI5NDkzZTVjMzRkZDRhZWM4MzQwN2YxZjkzMjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
Y29jb2EvVGVzdFdLV2ViVmlldy5oCkBAIC02Nyw3ICs2Nyw2IEBACiAtIChpZClvYmplY3RCeUV2
YWx1YXRpbmdKYXZhU2NyaXB0OihOU1N0cmluZyAqKXNjcmlwdDsKIC0gKGlkKW9iamVjdEJ5Q2Fs
bGluZ0FzeW5jRnVuY3Rpb246KE5TU3RyaW5nICopc2NyaXB0IHdpdGhBcmd1bWVudHM6KE5TRGlj
dGlvbmFyeSAqKWFyZ3VtZW50cyBlcnJvcjooTlNFcnJvciAqKillcnJvck91dDsKIC0gKHVuc2ln
bmVkKXdhaXRVbnRpbENsaWVudFdpZHRoSXM6KHVuc2lnbmVkKWV4cGVjdGVkQ2xpZW50V2lkdGg7
Ci0tICh2b2lkKWxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ6KHZvaWQoXikoQk9PTCkpY29tcGxl
dGlvbkhhbmRsZXI7CiBAZW5kCiAKIEBpbnRlcmZhY2UgVGVzdE1lc3NhZ2VIYW5kbGVyIDogTlNP
YmplY3QgPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29h
L1Rlc3RXS1dlYlZpZXcubW0KaW5kZXggOGQ5NjcxNjNiNDZkYTc5MTk5MzRlNjQ5MDY0MDNjZDIz
MWIyZTYwYy4uMzRhNDY0MDljMTIyZWM3ZmEyYTY4NmViYWRmOTUxMTlhOGJhNTJhMiAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbQpAQCAtMjM5LDEwICsyMzks
NiBAQCBzdGF0aWMgTlNTdHJpbmcgKm92ZXJyaWRlQnVuZGxlSWRlbnRpZmllcihpZCwgU0VMKQog
ICAgIHJldHVybiBjbGllbnRXaWR0aDsKIH0KIAotLSAodm9pZClsYXN0TmF2aWdhdGlvbldhc0Fw
cEJvdW5kOih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyCi17Ci0gICAgW3NlbGYgX2xh
c3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ6Y29tcGxldGlvbkhhbmRsZXJdOwotfQogQGVuZAogCiBA
aW1wbGVtZW50YXRpb24gVGVzdE1lc3NhZ2VIYW5kbGVyIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421200</attachid>
            <date>2021-02-22 09:22:41 -0800</date>
            <delta_ts>2021-02-23 09:23:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222241-20210222092240.patch</filename>
            <type>text/plain</type>
            <size>23032</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDdjMDJiMWVhMmViNDRlNzE5
ZDgyNGY0ODU0Y2YwZDhiNjBiMzNmYWEuLjYxMmZmYzEwM2I1ODRmZjk2OGFiYjlhYjMwMzRmZjE1
MjliMGNiMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMjEtMDItMjIgIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgQXBwLWJvdW5kIHJl
cXVlc3QgcGFyYW1ldGVyIHNob3VsZCBiZSBwYXNzZWQgdG8gbWFpbiByZXNvdXJjZSByZXF1ZXN0
cyBub3QgdGhlIG1haW4gZnJhbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyMjI0MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzQ1NjA5NjY+IAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNldCB0aGUg
aXNBcHBCb3VuZCBwYXJhbWV0ZXIgb24gdGhlIHJlc291cmNlIHJlcXVlc3QgaWYgaXQgaXMgYSBt
YWluCisgICAgICAgIHJlc291cmNlIG5vdCBvbiB0aGUgbWFpbiBmcmFtZS4gT3RoZXJ3aXNlIG1v
c3RseSBjaGFuZ2VzIHRvIGFkZCBiZXR0ZXIgdGVzdGluZy4KKworICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6OmFwcEJvdW5kTmF2aWdhdGlvbkRhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6Y2xlYXJBcHBCb3VuZE5hdmlnYXRpb25SZXBvcnRzKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtT
ZXNzaW9uLmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpzZXRIYXNMb2FkZWRB
cHBCb3VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6aGFzTG9h
ZGVkQXBwQm91bmRSZXF1ZXN0IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Np
b246OnNldEhhc0xvYWRlZE5vbkFwcEJvdW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtTZXNzaW9uOjpoYXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3QgY29uc3QpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tDb2NvYTo6TmV0d29ya0RhdGFUYXNrQ29jb2EpOgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAqIFNoYXJlZC9O
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbi5oOgorICAgICAgICAoV2ViS2l0OjpBcHBCb3VuZE5h
dmlnYXRpb25UZXN0aW5nRGF0YTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6QXBw
Qm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGE6OmRlY29kZSk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3VGVzdGluZy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3
IF9hcHBCb3VuZE5hdmlnYXRpb25EYXRhOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2NsZWFy
QXBwQm91bmROYXZpZ2F0aW9uUmVwb3J0czpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjphcHBCb3VuZE5hdmln
YXRpb25EYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjbGVhckFwcEJvdW5k
TmF2aWdhdGlvblJlcG9ydHMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6bG9hZFJlc291cmNlKToKKyAgICAgICAg
VGhlIGZpeC4KKwogMjAyMS0wMi0xOSAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFw
cGxlLmNvbT4KIAogICAgICAgICBDcmVhdGUgU1FMaXRlIHNrZWxldG9uIGltcGxlbWVudGF0aW9u
IGZvciBQQ00gZnJhdWQgcHJldmVudGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCA2ODMwMTVkMTY5YThjMjk5MjMzMGZmNDYwODU0
Y2M2YzMxNjI4MzZjLi5mNjQ3MGZlYjkzOGZiY2QwM2U3YjdmMGJhNWFlNWY5NmI5ZmIzMWY2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApA
QCAtMjc3MCw0ICsyNzcwLDIyIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldENPUlNEaXNhYmxp
bmdQYXR0ZXJucyhQYWdlSWRlbnRpZmllciBwYWdlSWRlbnRpZmllciwgVmVjCiAgICAgbV9leHRl
bnNpb25DT1JTRGlzYWJsaW5nUGF0dGVybnMuc2V0KHBhZ2VJZGVudGlmaWVyLCBXVEZNb3ZlKHBh
cnNlZFBhdHRlcm5zKSk7CiB9CiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmFwcEJvdW5kTmF2aWdh
dGlvbkRhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KEFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
eworICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNl
c3Npb25JRCkpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyBuZXR3b3JrU2Vzc2lvbi0+
aGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0KCksIG5ldHdvcmtTZXNzaW9uLT5oYXNMb2FkZWROb25B
cHBCb3VuZFJlcXVlc3QoKSB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBjb21wbGV0
aW9uSGFuZGxlcih7IH0pOworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpjbGVhckFwcEJvdW5k
TmF2aWdhdGlvblJlcG9ydHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKGF1dG8qIG5ldHdv
cmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBu
ZXR3b3JrU2Vzc2lvbi0+c2V0SGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0KGZhbHNlKTsKKyAgICAg
ICAgbmV0d29ya1Nlc3Npb24tPnNldEhhc0xvYWRlZE5vbkFwcEJvdW5kUmVxdWVzdChmYWxzZSk7
CisgICAgfQorICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmlu
ZGV4IGVhMmRkN2Y1MzhjMDc0NjRiODY0YTAxYzVlMzhjY2VkYmFlYThjNzIuLmNlNGY1N2YxOGZl
NzQ4MjYzZGE2YjM1ODIxMzA5ZWYyNjRiY2IxMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTM3Nyw2ICszNzcsOSBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBzaG91bGREaXNhYmxlQ09SU0ZvclJlcXVlc3RUbyhXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciwgY29uc3QgVVJMJikgY29uc3Q7CiAgICAgdm9pZCBzZXRDT1JTRGlzYWJsaW5nUGF0dGVy
bnMoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFZlY3RvcjxTdHJpbmc+JiYpOwogCisgICAgdm9p
ZCBhcHBCb3VuZE5hdmlnYXRpb25EYXRhKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKEFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhJiYpPiYmKTsKKyAgICB2b2lkIGNs
ZWFyQXBwQm91bmROYXZpZ2F0aW9uUmVwb3J0cyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKKwogcHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6
ZU5ldHdvcmtQcm9jZXNzKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLm1lc3NhZ2VzLmluCmluZGV4IDg0MTFiYmU5ZDVlYTZmYmUzZWJjNGVkMGZhNTQ5ZThmNGE3
OGNiYWYuLmYzN2M0OTlmNTIyY2IyMDI3ZDZjZGI3MTA3NzI0OGFmMDUwZDEzOWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNz
YWdlcy5pbgpAQCAtMTg5LDQgKzE4OSw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExl
Z2FjeVJlY2VpdmVyIHsKICNlbmRpZgogICAgIFVwZGF0ZUJ1bmRsZUlkZW50aWZpZXIoU3RyaW5n
IGJ1bmRsZUlkZW50aWZpZXIpIC0+ICgpIEFzeW5jCiAgICAgQ2xlYXJCdW5kbGVJZGVudGlmaWVy
KCkgLT4gKCkgQXN5bmMKKworICAgIEFwcEJvdW5kTmF2aWdhdGlvbkRhdGEoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklEKSAtPiAoc3RydWN0IFdlYktpdDo6QXBwQm91bmROYXZpZ2F0aW9uVGVzdGlu
Z0RhdGEgZGF0YSkgQXN5bmMKKyAgICBDbGVhckFwcEJvdW5kTmF2aWdhdGlvblJlcG9ydHMoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBBc3luYwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCmluZGV4IGZmMjFmMjhmM2I3ZGFmZjRiZjRl
OGFhNGM3NDRhMjg5ZmVmMGRmOGIuLjI2M2I3MWI3MmFlYzY5ZWRhMjhmMmFhYmU2YTJkMjkwMzJi
NjdkNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nl
c3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9u
LmgKQEAgLTE1Niw2ICsxNTYsMTEgQEAgcHVibGljOgogICAgIE5ldHdvcmtMb2FkU2NoZWR1bGVy
JiBuZXR3b3JrTG9hZFNjaGVkdWxlcigpOwogICAgIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFu
YWdlciYgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoKSB7IHJldHVybiAqbV9wcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudDsgfQogCisgICAgdm9pZCBzZXRIYXNMb2FkZWRBcHBCb3VuZFJlcXVlc3QoYm9v
bCBoYXNMb2FkZWRBcHBCb3VuZFJlcXVlc3QpIHsgbV9oYXNMb2FkZWRBcHBCb3VuZFJlcXVlc3Qg
PSBoYXNMb2FkZWRBcHBCb3VuZFJlcXVlc3Q7IH0KKyAgICBib29sIGhhc0xvYWRlZEFwcEJvdW5k
UmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0OyB9Cisg
ICAgdm9pZCBzZXRIYXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3QoYm9vbCBoYXNMb2FkZWROb25B
cHBCb3VuZFJlcXVlc3QpIHsgbV9oYXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3QgPSBoYXNMb2Fk
ZWROb25BcHBCb3VuZFJlcXVlc3Q7IH0KKyAgICBib29sIGhhc0xvYWRlZE5vbkFwcEJvdW5kUmVx
dWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzTG9hZGVkTm9uQXBwQm91bmRSZXF1ZXN0OyB9CisK
IHByb3RlY3RlZDoKICAgICBOZXR3b3JrU2Vzc2lvbihOZXR3b3JrUHJvY2VzcyYsIGNvbnN0IE5l
dHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAKQEAgLTIwMCw2ICsyMDUsOSBAQCBw
cm90ZWN0ZWQ6CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIEhhc2hTZXQ8c3RkOjp1
bmlxdWVfcHRyPFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyPj4gbV9zb2Z0VXBkYXRlTG9h
ZGVyczsKICNlbmRpZgorICAgIAorICAgIGJvb2wgbV9oYXNMb2FkZWRBcHBCb3VuZFJlcXVlc3Qg
eyBmYWxzZSB9OworICAgIGJvb2wgbV9oYXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3QgeyBmYWxz
ZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQppbmRl
eCBkNTkzYjQyYjUxOGNhNGMzZmM1NzM0MzcxM2FjNTBiM2RiNWMwN2QyLi4yZGI5N2QyNmQzOWU5
MDI1ZTI4Nzg3MjViNzY0OGYwYTI4ODE5NzUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KQEAgLTMz
OSw2ICszMzksOCBAQCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6TmV0d29ya0RhdGFUYXNrQ29jb2Eo
TmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVAogCiAgICAgTkVUV09SS19EQVRB
X1RBU0tfQ09DT0FfQURESVRJT05TCiAKKyAgICByZXF1ZXN0LmlzQXBwQm91bmQoKSA/IG1fc2Vz
c2lvbi0+c2V0SGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0KHRydWUpIDogbV9zZXNzaW9uLT5zZXRI
YXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3QodHJ1ZSk7CisgICAgCiAgICAgYXBwbHlTbmlmZmlu
Z1BvbGljaWVzQW5kQmluZFJlcXVlc3RUb0luZmVyZmFjZUlmTmVlZGVkKG5zUmVxdWVzdCwgc2hv
dWxkQ29udGVudFNuaWZmID09IFdlYkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeTo6U25pZmZD
b250ZW50ICYmICF1cmwuaXNMb2NhbEZpbGUoKSwgc2hvdWxkQ29udGVudEVuY29kaW5nU25pZmYg
PT0gV2ViQ29yZTo6Q29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3k6OlNuaWZmKTsKIAogICAg
IG1fdGFzayA9IFttX3Nlc3Npb25XcmFwcGVyLT5zZXNzaW9uIGRhdGFUYXNrV2l0aFJlcXVlc3Q6
bnNSZXF1ZXN0XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVz
c2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4
IGQ1NDMwMjI3NTNhZGYzMTkzNjI0MGNmMmE0OGY1MWI3MjM5ZDVlYzUuLjdhMWZkNTljMmMzOWU0
ZDBhZGYxN2I0NmE0MTFkNGVhNWQyYTJhNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC9tZXNzYWdlcy5weQpAQCAtNzQyLDggKzc0Miw4IEBAIGRlZiBoZWFkZXJzX2Zvcl90eXBlKHR5
cGUpOgogICAgICAgICAnV2ViQ29yZTo6V2lsbENvbnRpbnVlTG9hZGluZyc6IFsnPFdlYkNvcmUv
RnJhbWVMb2FkZXJUeXBlcy5oPiddLAogICAgICAgICAnV2ViQ29yZTo6U2VsZWN0aW9uUmVjdCc6
IFsnIkVkaXRvclN0YXRlLmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OkFjdGl2aXR5U3RhdGVDaGFu
Z2VJRCc6IFsnIkRyYXdpbmdBcmVhSW5mby5oIiddLAorICAgICAgICAnV2ViS2l0OjpBcHBCb3Vu
ZE5hdmlnYXRpb25UZXN0aW5nRGF0YSc6IFsnIk5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLmgi
J10sCiAgICAgICAgICdXZWJLaXQ6OkFsbG93T3ZlcndyaXRlJzogWyciRG93bmxvYWRJRC5oIidd
LAotICAgICAgICAnV2ViS2l0OjpMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kJzogWyciTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW4uaCInXSwKICAgICAgICAgJ1dlYktpdDo6QmFja0ZvcndhcmRM
aXN0SXRlbVN0YXRlJzogWyciU2Vzc2lvblN0YXRlLmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OkNh
bGxEb3dubG9hZERpZFN0YXJ0JzogWyciRG93bmxvYWRNYW5hZ2VyLmgiJ10sCiAgICAgICAgICdX
ZWJLaXQ6OkNvbnRlbnRXb3JsZElkZW50aWZpZXInOiBbJyJDb250ZW50V29ybGRTaGFyZWQuaCIn
XSwKQEAgLTc1Miw2ICs3NTIsNyBAQCBkZWYgaGVhZGVyc19mb3JfdHlwZSh0eXBlKToKICAgICAg
ICAgJ1dlYktpdDo6R2VzdHVyZVJlY29nbml6ZXJTdGF0ZSc6IFsnIkdlc3R1cmVUeXBlcy5oIidd
LAogICAgICAgICAnV2ViS2l0OjpHZXN0dXJlVHlwZSc6IFsnIkdlc3R1cmVUeXBlcy5oIiddLAog
ICAgICAgICAnV2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25FcnJvcic6IFsnIkluc3BlY3RvckV4
dGVuc2lvblR5cGVzLmgiJ10sCisgICAgICAgICdXZWJLaXQ6Okxhc3ROYXZpZ2F0aW9uV2FzQXBw
Qm91bmQnOiBbJyJOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbi5oIiddLAogICAgICAgICAnV2Vi
S2l0OjpMYXllckhvc3RpbmdDb250ZXh0SUQnOiBbJyJMYXllckhvc3RpbmdDb250ZXh0LmgiJ10s
CiAgICAgICAgICdXZWJLaXQ6OkxheWVySG9zdGluZ01vZGUnOiBbJyJMYXllclRyZWVDb250ZXh0
LmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OlBhZ2VTdGF0ZSc6IFsnIlNlc3Npb25TdGF0ZS5oIidd
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvTmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4uaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
LmgKaW5kZXggMzFlMDcxNTU5NjZiYjdmYjZkNzNhZGJiNjNhN2E3OTMzYjg2OWI0YS4uMTg5MGQ2
ZmQ4NTM4YzAyODQzMzliYWUwNjdmOTkwYTM5OThkMTUxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9OYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbi5oCkBAIC0yNSwxMCArMjUsNDAg
QEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorI2luY2x1
ZGUgIkRlY29kZXIuaCIKKyNpbmNsdWRlICJFbmNvZGVyLmgiCisKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCiBlbnVtIGNsYXNzIE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluIDogYm9vbCB7IE5vLCBZ
ZXMgfTsKIGVudW0gY2xhc3MgTGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCA6IGJvb2wgeyBObywg
WWVzIH07CiAKK3N0cnVjdCBBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSB7CisgICAgYm9v
bCBoYXNMb2FkZWRBcHBCb3VuZFJlcXVlc3QgeyBmYWxzZSB9OworICAgIGJvb2wgaGFzTG9hZGVk
Tm9uQXBwQm91bmRSZXF1ZXN0IHsgZmFsc2UgfTsKKyAgICAKKyAgICB2b2lkIGVuY29kZShJUEM6
OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CisgICAgeworICAgICAgICBlbmNvZGVyIDw8IGhhc0xv
YWRlZEFwcEJvdW5kUmVxdWVzdDsKKyAgICAgICAgZW5jb2RlciA8PCBoYXNMb2FkZWROb25BcHBC
b3VuZFJlcXVlc3Q7CisgICAgfQorCisgICAgc3RhdGljIE9wdGlvbmFsPEFwcEJvdW5kTmF2aWdh
dGlvblRlc3RpbmdEYXRhPiBkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQorICAgIHsKKyAg
ICAgICAgT3B0aW9uYWw8Ym9vbD4gaGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0OworICAgICAgICBk
ZWNvZGVyID4+IGhhc0xvYWRlZEFwcEJvdW5kUmVxdWVzdDsKKyAgICAgICAgaWYgKCFoYXNMb2Fk
ZWRBcHBCb3VuZFJlcXVlc3QpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisg
ICAgICAgIE9wdGlvbmFsPGJvb2w+IGhhc0xvYWRlZE5vbkFwcEJvdW5kUmVxdWVzdDsKKyAgICAg
ICAgZGVjb2RlciA+PiBoYXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3Q7CisgICAgICAgIGlmICgh
aGFzTG9hZGVkTm9uQXBwQm91bmRSZXF1ZXN0KQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKworICAgICAgICByZXR1cm4ge3sgV1RGTW92ZSgqaGFzTG9hZGVkQXBwQm91bmRSZXF1
ZXN0KSwgV1RGTW92ZSgqaGFzTG9hZGVkTm9uQXBwQm91bmRSZXF1ZXN0KSB9fTsKKyAgICB9Cit9
OworCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nLmgKaW5kZXggODg0ZDhjMDg4NWZhN2Ez
NjNiMmFkODAyNTQyMmMzM2Y3MTQ1ZWFhMS4uZWFhMWMxZTdjNDFjZjFiMmRkMGJmMzhjMWY4OTI1
MDg2ZjVmNDk4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nLmgKQEAgLTMyLDYgKzMyLDEx
IEBAIHR5cGVkZWYgZW51bSB7CiAgICAgV0tXZWJWaWV3QXVkaW9Sb3V0aW5nQXJiaXRyYXRpb25T
dGF0dXNBY3RpdmUsCiB9IFdLV2ViVmlld0F1ZGlvUm91dGluZ0FyYml0cmF0aW9uU3RhdHVzOwog
CitzdHJ1Y3QgV0tBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSB7CisgICAgQk9PTCBoYXNM
b2FkZWRBcHBCb3VuZFJlcXVlc3Q7CisgICAgQk9PTCBoYXNMb2FkZWROb25BcHBCb3VuZFJlcXVl
c3Q7Cit9OworCiBAaW50ZXJmYWNlIFdLV2ViVmlldyAoV0tUZXN0aW5nKQogCiAtICh2b2lkKV9z
ZXRQYWdlU2NhbGU6KENHRmxvYXQpc2NhbGUgd2l0aE9yaWdpbjooQ0dQb2ludClvcmlnaW47CkBA
IC04OCw1ICs5Myw3IEBAIHR5cGVkZWYgZW51bSB7CiAtICh2b2lkKV9zZXRQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudEF0dHJpYnV0aW9uUmVwb3J0VVJMRm9yVGVzdGluZzooTlNVUkwgKil1cmwgY29t
cGxldGlvbkhhbmRsZXI6KHZvaWQoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FW
QUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAogLSAodm9pZClf
bGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDoodm9pZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxl
cjsKKy0gKHZvaWQpX2FwcEJvdW5kTmF2aWdhdGlvbkRhdGE6KHZvaWQoXikoV0tBcHBCb3VuZE5h
dmlnYXRpb25UZXN0aW5nRGF0YSkpY29tcGxldGlvbkhhbmRsZXI7CistICh2b2lkKV9jbGVhckFw
cEJvdW5kTmF2aWdhdGlvblJlcG9ydHM6KHZvaWQoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXI7
CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXdUZXN0aW5nLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlld1Rlc3RpbmcubW0KaW5kZXggN2NjMzBlYTQxNDJhMzUwMDAzYmUxZmM0OTMzOGQ1NGIw
YWJkNTk4My4uOWMwMWY4NGMxNmMwZjMyNWRjYTEyNzcxNTA3YWYwY2NmODQ3ZTk5NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1Rlc3Rpbmcu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1Rlc3Rp
bmcubW0KQEAgLTMzMyw0ICszMzMsMTggQEAKICAgICB9KTsKIH0KIAorLSAodm9pZClfYXBwQm91
bmROYXZpZ2F0aW9uRGF0YToodm9pZCheKShXS0FwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRh
KSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIF9wYWdlLT5hcHBCb3VuZE5hdmlnYXRpb25EYXRh
KFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChh
dXRvJiYgYXBwQm91bmREYXRhKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgYXBwQm91
bmREYXRhLmhhc0xvYWRlZEFwcEJvdW5kUmVxdWVzdCwgYXBwQm91bmREYXRhLmhhc0xvYWRlZE5v
bkFwcEJvdW5kUmVxdWVzdCB9KTsKKyAgICB9KTsKK30KKworLSAodm9pZClfY2xlYXJBcHBCb3Vu
ZE5hdmlnYXRpb25SZXBvcnRzOih2b2lkKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyCit7Cisg
ICAgX3BhZ2UtPmNsZWFyQXBwQm91bmROYXZpZ2F0aW9uUmVwb3J0cyhbY29tcGxldGlvbkhhbmRs
ZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSB7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKCk7CisgICAgfSk7Cit9CisKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCmluZGV4IDQ2NGJkYTkxYWFmOGQwMTUzZjFlN2U3ZTkxOWMxNDFkNjcw
OWI3MzEuLmQ2N2RiZjI2MjZiMTI3ZWRhNmEyMjBmYzc2OWYxOTg4YzNjYzE3N2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMTAzODEsNiArMTAzODEsMTgg
QEAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkgV2ViUGFnZVByb3h5OjpjcmVhdGVOZXR3
b3JrRXh0ZW5zaW9uc1NhbmRib3hFeHRlbnMKIH0KICNlbmRpZgogCisjaWYgUExBVEZPUk0oQ09D
T0EpCit2b2lkIFdlYlBhZ2VQcm94eTo6YXBwQm91bmROYXZpZ2F0aW9uRGF0YShDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKEFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhJiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQoreworICAgIHdlYnNpdGVEYXRhU3RvcmUoKS5uZXR3b3JrUHJvY2VzcygpLnNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkFwcEJvdW5kTmF2aWdh
dGlvbkRhdGEobV93ZWJzaXRlRGF0YVN0b3JlLT5zZXNzaW9uSUQoKSksIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OmNsZWFyQXBwQm91bmROYXZp
Z2F0aW9uUmVwb3J0cyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit7CisgICAgd2Vic2l0ZURhdGFTdG9yZSgpLm5ldHdvcmtQcm9jZXNzKCkuc2VuZFdpdGhB
c3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6Q2xlYXJBcHBCb3VuZE5hdmlnYXRp
b25SZXBvcnRzKG1fd2Vic2l0ZURhdGFTdG9yZS0+c2Vzc2lvbklEKCkpLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1
bmRlZiBSRUxFQVNFX0xPR19JRl9BTExPV0VECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCmluZGV4IGEwY2ViZDlmYjQ1ZTc2ZjUxOTU0NTNjYjQ5NWNhM2NlMDM4NGE3MGYuLmYy
NjZjN2U3YmRlNmE2MjE2OWY1YmZmZmM1OWJkMjZiNDU4YmQ4YTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xODU4LDYgKzE4NTgsOCBAQCBwdWJsaWM6CiAjaWYg
UExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBzZXRMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogICAgIHZvaWQgbGFzdE5hdmlnYXRpb25XYXNBcHBC
b3VuZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIGFwcEJvdW5k
TmF2aWdhdGlvbkRhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBcHBCb3VuZE5hdmlnYXRpb25U
ZXN0aW5nRGF0YSYmKT4mJik7CisgICAgdm9pZCBjbGVhckFwcEJvdW5kTmF2aWdhdGlvblJlcG9y
dHMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICNlbmRpZgogCiBwcml2YXRlOgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRl
Z3kuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRl
Z3kuY3BwCmluZGV4IGNjMjIwM2ZlOGM5N2E1OTdhZGMzMDY5YjgwYTc4Nzg4ZmJkNWUzMDguLjIy
Y2UwOTI1OThmMTBkYTZjOGMxZTA0NjM3ZjYyMDE5MWMwOWVlNjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKQEAg
LTEwNyw3ICsxMDcsNyBAQCBXZWJMb2FkZXJTdHJhdGVneTo6fldlYkxvYWRlclN0cmF0ZWd5KCkK
IAogdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6bG9hZFJlc291cmNlKEZyYW1lJiBmcmFtZSwgQ2Fj
aGVkUmVzb3VyY2UmIHJlc291cmNlLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBS
ZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVm
UHRyPFN1YnJlc291cmNlTG9hZGVyPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBp
ZiAocmVzb3VyY2UudHlwZSgpICE9IENhY2hlZFJlc291cmNlOjpUeXBlOjpNYWluUmVzb3VyY2Up
IHsKKyAgICBpZiAocmVzb3VyY2UudHlwZSgpICE9IENhY2hlZFJlc291cmNlOjpUeXBlOjpNYWlu
UmVzb3VyY2UgfHwgIWZyYW1lLmlzTWFpbkZyYW1lKCkpIHsKICAgICAgICAgaWYgKGF1dG8qIGRv
Y3VtZW50ID0gZnJhbWUubWFpbkZyYW1lKCkuZG9jdW1lbnQoKSkgewogICAgICAgICAgICAgaWYg
KGRvY3VtZW50ICYmIGRvY3VtZW50LT5sb2FkZXIoKSkKICAgICAgICAgICAgICAgICByZXF1ZXN0
LnNldElzQXBwQm91bmQoZG9jdW1lbnQtPmxvYWRlcigpLT5sYXN0TmF2aWdhdGlvbldhc0FwcEJv
dW5kKCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IDc0ZTZlN2Y5NWNiYWQ0ODYwYzUxMWZjZjQ3ZDI4NjZjYjk3ODA5NDYuLmQxMzJiMDc0Njcx
YThlN2JjZjY4ZmI0ZjVmMThkNGM5MWRhNzk4MDYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAyMS0wMi0yMiAgS2F0
ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KKworICAgICAgICBBcHAtYm91
bmQgcmVxdWVzdCBwYXJhbWV0ZXIgc2hvdWxkIGJlIHBhc3NlZCB0byBtYWluIHJlc291cmNlIHJl
cXVlc3RzIG5vdCB0aGUgbWFpbiBmcmFtZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjIyMjQxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NDU2MDk2
Nj4gCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
cyBtb3JlIHJvYnVzdCB0ZXN0aW5nIHRvIHJlcG9ydCB3aGVuIGFwcEJvdW5kL25vbkFwcEJvdW5k
IHJlcXVlc3RzCisgICAgICAgIGxvYWQgaW4gdGhlIG5ldHdvcmsgcHJvY2Vzcy4gVGhpcyB0ZXN0
cyBub3Qgb25seSB0aGF0IHRoZSBtYWluIGZyYW1l4oCZcworICAgICAgICBkb2N1bWVudCBsb2Fk
ZXIgaXMgcHJvcGVybHkgc2V0LCBidXQgYWxzbyB0aGF0IGFsbCBsb2FkcyBpbml0aWF0ZWQgZnJv
bQorICAgICAgICBhcHAtYm91bmQgcmVxdWVzdHMgYXJlIGFsc28gYXBwLWJvdW5kIHRvIGF2b2lk
IHJlZ3Jlc3Npb25zIGxpa2UgdGhpcyBpbiB0aGUgZnV0dXJlLgorCisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tOgorICAgICAg
ICBVdGlsaXplIHNvbWUgQ1NQIHRlc3QgcmVzb3VyY2VzIHRoYXQgaGF2ZSB0aGUgZXhhY3Qgc2V0
dXAgbmVlZGVkIHRvCisgICAgICAgIHRlc3QgdGhpcyBmaXguCisKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2Nv
Y29hL1Rlc3RXS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBhcHBCb3VuZE5hdmln
YXRpb25EYXRhOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgY2xlYXJBcHBCb3VuZE5hdmlnYXRp
b25SZXBvcnRzOl0pOgorCiAyMDIxLTAyLTE5ICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgUENNOiBSZXF1ZXN0IHNlcnZlciBwdWJsaWMga2V5IHRvIGdlbmVy
YXRlIHNlY3JldCB0b2tlbgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCmluZGV4IDczZDBjYzUyNWY0
YWZmNmZkMjNkNmJkZTQ1MTYxZjYyODg3OGY1ZDEuLjVmZTZlZjE5ZmIxZjE4YTc0MzRmODYzZWZj
Y2I1ZWFhZTU2Y2JiYjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0KQEAgLTM3LDYgKzM3LDcg
QEAKICNpbXBvcnQgPFdlYktpdC9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2Vi
S2l0L1dLVVJMU2NoZW1lVGFza1ByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1VzZXJDb250
ZW50Q29udHJvbGxlclByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRl
Rm9yVGVzdGluZy5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUu
aD4KICNpbXBvcnQgPFdlYktpdC9fV0tVc2VyQ29udGVudFdvcmxkLmg+CiAjaW1wb3J0IDxXZWJL
aXQvX1dLVXNlclN0eWxlU2hlZXQuaD4KQEAgLTE0MjUsMTkgKzE0MjYsMjggQEAgVEVTVChJbkFw
cEJyb3dzZXJQcml2YWN5LCBBcHBCb3VuZFJlcXVlc3QpCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRv
cHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVybyBjb25m
aWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKICAgICBOU1N0cmluZyAqdXJsID0gQCJo
dHRwczovL3dlYmtpdC5vcmciOwogCi0gICAgc3RhdGljIGJvb2wgaXNEb25lID0gZmFsc2U7Cisg
ICAgX19ibG9jayBib29sIGlzRG9uZSA9IGZhbHNlOwogICAgIE5TTXV0YWJsZVVSTFJlcXVlc3Qg
Km5vbkFwcEJvdW5kUmVxdWVzdCA9IFtOU011dGFibGVVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJM
OltOU1VSTCBVUkxXaXRoU3RyaW5nOnVybF1dOwogICAgIEFQUF9CT1VORF9SRVFVRVNUX0FERElU
SU9OUwogCiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6bm9uQXBwQm91bmRSZXF1ZXN0XTsKICAg
ICBbd2ViVmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CiAKLSAgICBbd2Vi
VmlldyBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kOl4oQk9PTCBpc0FwcEJvdW5kKSB7CisgICAg
W3dlYlZpZXcgX2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ6XihCT09MIGlzQXBwQm91bmQpIHsK
ICAgICAgICAgRVhQRUNUX0ZBTFNFKGlzQXBwQm91bmQpOwogICAgICAgICBpc0RvbmUgPSB0cnVl
OwogICAgIH1dOwogCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworICAg
IAorICAgIGlzRG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF9hcHBCb3VuZE5hdmlnYXRpb25E
YXRhOl4oV0tBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSBkYXRhKSB7CisgICAgICAgIEVY
UEVDVF9GQUxTRShkYXRhLmhhc0xvYWRlZEFwcEJvdW5kUmVxdWVzdCk7CisgICAgICAgIEVYUEVD
VF9UUlVFKGRhdGEuaGFzTG9hZGVkTm9uQXBwQm91bmRSZXF1ZXN0KTsKKyAgICAgICAgaXNEb25l
ID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25l
KTsKIH0KIAogVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBBcHBCb3VuZFJlcXVlc3RXaXRoTmF2
aWdhdGlvbikKQEAgLTE0NTMsMTggKzE0NjMsOTcgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5
LCBBcHBCb3VuZFJlcXVlc3RXaXRoTmF2aWdhdGlvbikKICAgICBbd2ViVmlldyBsb2FkUmVxdWVz
dDpzdGFydGluZ1JlcXVlc3RdOwogICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hO
YXZpZ2F0aW9uXTsKIAotICAgIHN0YXRpYyBib29sIGlzRG9uZSA9IGZhbHNlOworICAgIF9fYmxv
Y2sgYm9vbCBpc0RvbmUgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBfbGFzdE5hdmlnYXRpb25XYXNB
cHBCb3VuZDpeKEJPT0wgaXNBcHBCb3VuZCkgeworICAgICAgICBFWFBFQ1RfVFJVRShpc0FwcEJv
dW5kKTsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKKyAgICAKKyAgICBpc0RvbmUgPSBmYWxzZTsKKyAgICBb
d2ViVmlldyBfYXBwQm91bmROYXZpZ2F0aW9uRGF0YTpeKFdLQXBwQm91bmROYXZpZ2F0aW9uVGVz
dGluZ0RhdGEgZGF0YSkgeworICAgICAgICBFWFBFQ1RfVFJVRShkYXRhLmhhc0xvYWRlZEFwcEJv
dW5kUmVxdWVzdCk7CisgICAgICAgIEVYUEVDVF9GQUxTRShkYXRhLmhhc0xvYWRlZE5vbkFwcEJv
dW5kUmVxdWVzdCk7CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CisgICAgCisgICAgaXNEb25lID0gZmFsc2U7
CiAgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqbm9uQXBwQm91bmRSZXF1ZXN0ID0gW05TTXV0YWJs
ZVVSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6bm9uQXBwQm91
bmRVUkxdXTsKICAgICBBUFBfQk9VTkRfUkVRVUVTVF9BRERJVElPTlMKKyAgICAKKyAgICBpc0Rv
bmUgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBfY2xlYXJBcHBCb3VuZE5hdmlnYXRpb25SZXBvcnRz
Ol57CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJmlzRG9uZSk7CiAKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpub25BcHBC
b3VuZFJlcXVlc3RdOwogICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0
aW9uXTsKIAotICAgIFt3ZWJWaWV3IGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ6XihCT09MIGlz
QXBwQm91bmQpIHsKKyAgICBbd2ViVmlldyBfbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDpeKEJP
T0wgaXNBcHBCb3VuZCkgewogICAgICAgICBFWFBFQ1RfRkFMU0UoaXNBcHBCb3VuZCk7CiAgICAg
ICAgIGlzRG9uZSA9IHRydWU7CiAgICAgfV07CiAKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJmlzRG9uZSk7CisgICAgCisgICAgaXNEb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgX2Fw
cEJvdW5kTmF2aWdhdGlvbkRhdGE6XihXS0FwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhIGRh
dGEpIHsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKGRhdGEuaGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0
KTsKKyAgICAgICAgRVhQRUNUX1RSVUUoZGF0YS5oYXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3Qp
OworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZpc0RvbmUpOwogfQorCitURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIEFwcEJv
dW5kUmVxdWVzdFdpdGhTdWJGcmFtZSkKK3sKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9w
dE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFtjb25maWd1
cmF0aW9uIF9zZXRPdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeTpAInNjcmlwdC1zcmMgJ25v
bmNlLWInIl07CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0
aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1l
ZDpAInBhZ2Utd2l0aC1jc3AiXTsKKworICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAiTWFp
bkZyYW1lOiBCIl07CisgICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJTdWJmcmFtZTogQiJd
OworCisgICAgX19ibG9jayBib29sIGlzRG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF9hcHBC
b3VuZE5hdmlnYXRpb25EYXRhOl4oV0tBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSBkYXRh
KSB7CisgICAgICAgIEVYUEVDVF9UUlVFKGRhdGEuaGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0KTsK
KyAgICAgICAgRVhQRUNUX0ZBTFNFKGRhdGEuaGFzTG9hZGVkTm9uQXBwQm91bmRSZXF1ZXN0KTsK
KyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmaXNEb25lKTsKK307CisKK1RFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgTm9uQXBw
Qm91bmRSZXF1ZXN0V2l0aFN1YkZyYW1lKQoreworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFk
b3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgW2NvbmZp
Z3VyYXRpb24gX3NldE92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5OkAic2NyaXB0LXNyYyAn
bm9uY2UtYiciXTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3Vy
YXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKm5v
bkFwcEJvdW5kUmVxdWVzdCA9IFtOU011dGFibGVVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltb
TlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJwYWdlLXdpdGgtY3NwIiB3aXRo
RXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMi
XV07CisgICAgQVBQX0JPVU5EX1JFUVVFU1RfQURESVRJT05TCisKKyAgICBbd2ViVmlldyBsb2Fk
UmVxdWVzdDpub25BcHBCb3VuZFJlcXVlc3RdOworCisgICAgW3dlYlZpZXcgd2FpdEZvck1lc3Nh
Z2U6QCJNYWluRnJhbWU6IEIiXTsKKyAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAIlN1YmZy
YW1lOiBCIl07CisKKyAgICBfX2Jsb2NrIGJvb2wgaXNEb25lID0gZmFsc2U7CisgICAgW3dlYlZp
ZXcgX2FwcEJvdW5kTmF2aWdhdGlvbkRhdGE6IF4oV0tBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5n
RGF0YSBkYXRhKSB7CisgICAgICAgIEVYUEVDVF9GQUxTRShkYXRhLmhhc0xvYWRlZEFwcEJvdW5k
UmVxdWVzdCk7CisgICAgICAgIEVYUEVDVF9UUlVFKGRhdGEuaGFzTG9hZGVkTm9uQXBwQm91bmRS
ZXF1ZXN0KTsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKK307CisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3LmggYi9Ub29scy9UZXN0V2ViS2l0
QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaAppbmRleCBjMWRjMDhjZmE0Y2YwNjEzMzUyNDU3YmYx
MWE4ZWUzMDYxMDdhZThhLi4yMmE0ODI2YzQxMmIyOTQ5M2U1YzM0ZGQ0YWVjODM0MDdmMWY5MzI4
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaApAQCAtNjcsNyAr
NjcsNiBAQAogLSAoaWQpb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDooTlNTdHJpbmcgKilz
Y3JpcHQ7CiAtIChpZClvYmplY3RCeUNhbGxpbmdBc3luY0Z1bmN0aW9uOihOU1N0cmluZyAqKXNj
cmlwdCB3aXRoQXJndW1lbnRzOihOU0RpY3Rpb25hcnkgKilhcmd1bWVudHMgZXJyb3I6KE5TRXJy
b3IgKiopZXJyb3JPdXQ7CiAtICh1bnNpZ25lZCl3YWl0VW50aWxDbGllbnRXaWR0aElzOih1bnNp
Z25lZClleHBlY3RlZENsaWVudFdpZHRoOwotLSAodm9pZClsYXN0TmF2aWdhdGlvbldhc0FwcEJv
dW5kOih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyOwogQGVuZAogCiBAaW50ZXJmYWNl
IFRlc3RNZXNzYWdlSGFuZGxlciA6IE5TT2JqZWN0IDxXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyPgpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCmluZGV4IDhkOTY3MTYz
YjQ2ZGE3OTE5OTM0ZTY0OTA2NDAzY2QyMzFiMmU2MGMuLjM0YTQ2NDA5YzEyMmVjN2ZhMmE2ODZl
YmFkZjk1MTE5YThiYTUyYTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2Ev
VGVzdFdLV2ViVmlldy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dl
YlZpZXcubW0KQEAgLTIzOSwxMCArMjM5LDYgQEAgc3RhdGljIE5TU3RyaW5nICpvdmVycmlkZUJ1
bmRsZUlkZW50aWZpZXIoaWQsIFNFTCkKICAgICByZXR1cm4gY2xpZW50V2lkdGg7CiB9CiAKLS0g
KHZvaWQpbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDoodm9pZCheKShCT09MKSljb21wbGV0aW9u
SGFuZGxlcgotewotICAgIFtzZWxmIF9sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kOmNvbXBsZXRp
b25IYW5kbGVyXTsKLX0KIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFRlc3RNZXNzYWdlSGFuZGxl
ciB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421319</attachid>
            <date>2021-02-23 09:23:13 -0800</date>
            <delta_ts>2021-02-23 11:11:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222241-20210223092312.patch</filename>
            <type>text/plain</type>
            <size>23785</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDdjMDJiMWVhMmViNDRlNzE5
ZDgyNGY0ODU0Y2YwZDhiNjBiMzNmYWEuLjk5ODQ0MGE5NTAwYmViZmQ4MWVjY2ZmMDBiYjI5YjYx
MmM1ZTZhNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMgQEAKKzIwMjEtMDItMjMgIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgQXBwLWJvdW5kIHJl
cXVlc3QgcGFyYW1ldGVyIHNob3VsZCBiZSBwYXNzZWQgdG8gbWFpbiByZXNvdXJjZSByZXF1ZXN0
cyBub3QgdGhlIG1haW4gZnJhbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyMjI0MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzQ1NjA5NjY+IAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNldCB0aGUg
aXNBcHBCb3VuZCBwYXJhbWV0ZXIgb24gdGhlIHJlc291cmNlIHJlcXVlc3QgaWYgaXQgaXMgYSBt
YWluCisgICAgICAgIHJlc291cmNlIG5vdCBvbiB0aGUgbWFpbiBmcmFtZS4gT3RoZXJ3aXNlIG1v
c3RseSBjaGFuZ2VzIHRvIGFkZCBiZXR0ZXIgdGVzdGluZy4KKworICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6OmFwcEJvdW5kTmF2aWdhdGlvbkRhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6Y2xlYXJBcHBCb3VuZE5hdmlnYXRpb25EYXRhKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNz
aW9uLmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjphcHBCb3VuZE5hdmlnYXRp
b25UZXN0aW5nRGF0YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0Rh
dGFUYXNrQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0NvY29hOjpO
ZXR3b3JrRGF0YVRhc2tDb2NvYSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMu
cHk6CisgICAgICAgICogU2hhcmVkL05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLmg6CisgICAg
ICAgIChXZWJLaXQ6OkFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhOjpjbGVhckFwcEJvdW5k
TmF2aWdhdGlvbkRhdGFUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6QXBwQm91bmROYXZpZ2F0
aW9uVGVzdGluZ0RhdGE6OnVwZGF0ZUFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhKToKKyAg
ICAgICAgKFdlYktpdDo6QXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGE6OmVuY29kZSBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6OkFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhOjpkZWNv
ZGUpOgorICAgICAgICBTdHJ1Y3QgdG8gcmV0dXJuIGRhdGEgZm9yIHRlc3RzLgorCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3VGVzdGluZy5tbToKKyAgICAgICAg
KC1bV0tXZWJWaWV3IF9hcHBCb3VuZE5hdmlnYXRpb25EYXRhOl0pOgorICAgICAgICAoLVtXS1dl
YlZpZXcgX2NsZWFyQXBwQm91bmROYXZpZ2F0aW9uRGF0YTpdKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjphcHBC
b3VuZE5hdmlnYXRpb25EYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjbGVh
ckFwcEJvdW5kTmF2aWdhdGlvbkRhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6bG9hZFJlc291cmNlKToKKyAg
ICAgICAgVGhlIGZpeC4KKwogMjAyMS0wMi0xOSAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hl
bmV5QGFwcGxlLmNvbT4KIAogICAgICAgICBDcmVhdGUgU1FMaXRlIHNrZWxldG9uIGltcGxlbWVu
dGF0aW9uIGZvciBQQ00gZnJhdWQgcHJldmVudGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCA2ODMwMTVkMTY5YThjMjk5MjMzMGZm
NDYwODU0Y2M2YzMxNjI4MzZjLi42NTEwOGI5OTk1OGVhYWI1MGRjOWFjMzk3MWE0NDkwYjllN2I2
OWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcApAQCAtMjc3MCw0ICsyNzcwLDIzIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldENPUlNE
aXNhYmxpbmdQYXR0ZXJucyhQYWdlSWRlbnRpZmllciBwYWdlSWRlbnRpZmllciwgVmVjCiAgICAg
bV9leHRlbnNpb25DT1JTRGlzYWJsaW5nUGF0dGVybnMuc2V0KHBhZ2VJZGVudGlmaWVyLCBXVEZN
b3ZlKHBhcnNlZFBhdHRlcm5zKSk7CiB9CiAKKyNpZiBQTEFURk9STShDT0NPQSkKK3ZvaWQgTmV0
d29ya1Byb2Nlc3M6OmFwcEJvdW5kTmF2aWdhdGlvbkRhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRh
JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lv
biA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoeyBuZXR3b3JrU2Vzc2lvbi0+YXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEo
KS5oYXNMb2FkZWRBcHBCb3VuZFJlcXVlc3RUZXN0aW5nLCBuZXR3b3JrU2Vzc2lvbi0+YXBwQm91
bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEoKS5oYXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3RUZXN0
aW5nIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGNvbXBsZXRpb25IYW5kbGVyKHsg
fSk7Cit9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmNsZWFyQXBwQm91bmROYXZpZ2F0aW9uRGF0
YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlz
LT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKQorICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+YXBw
Qm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEoKS5jbGVhckFwcEJvdW5kTmF2aWdhdGlvbkRhdGFU
ZXN0aW5nKCk7CisKKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOworfQorI2VuZGlmCisKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5oCmluZGV4IGVhMmRkN2Y1MzhjMDc0NjRiODY0YTAxYzVlMzhjY2VkYmFlYThjNzIu
LjA4MTAyZDc2ZGQ4OWExNWNmMjU4YWZlNDdjMTIxNmVlZTRjMjMyNmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTM3Nyw2ICszNzcsMTEg
QEAgcHVibGljOgogICAgIGJvb2wgc2hvdWxkRGlzYWJsZUNPUlNGb3JSZXF1ZXN0VG8oV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFVSTCYpIGNvbnN0OwogICAgIHZvaWQgc2V0Q09SU0Rp
c2FibGluZ1BhdHRlcm5zKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBWZWN0b3I8U3RyaW5nPiYm
KTsKIAorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZvaWQgYXBwQm91bmROYXZpZ2F0aW9uRGF0
YShQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBcHBCb3VuZE5hdmlnYXRp
b25UZXN0aW5nRGF0YSYmKT4mJik7CisgICAgdm9pZCBjbGVhckFwcEJvdW5kTmF2aWdhdGlvbkRh
dGEoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisjZW5kaWYK
KwogcHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKGNv
bnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmlu
ZGV4IDg0MTFiYmU5ZDVlYTZmYmUzZWJjNGVkMGZhNTQ5ZThmNGE3OGNiYWYuLjM1YzI3ZmQ4MjMx
YjkyYjU5Zjk1N2RiZDViODBiNTQ4NWYxODY5OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMTg5LDQg
KzE4OSw5IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICNl
bmRpZgogICAgIFVwZGF0ZUJ1bmRsZUlkZW50aWZpZXIoU3RyaW5nIGJ1bmRsZUlkZW50aWZpZXIp
IC0+ICgpIEFzeW5jCiAgICAgQ2xlYXJCdW5kbGVJZGVudGlmaWVyKCkgLT4gKCkgQXN5bmMKKwor
I2lmIFBMQVRGT1JNKENPQ09BKQorICAgIEFwcEJvdW5kTmF2aWdhdGlvbkRhdGEoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklEKSAtPiAoc3RydWN0IFdlYktpdDo6QXBwQm91bmROYXZpZ2F0aW9uVGVz
dGluZ0RhdGEgZGF0YSkgQXN5bmMKKyAgICBDbGVhckFwcEJvdW5kTmF2aWdhdGlvbkRhdGEoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBBc3luYworI2VuZGlmCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKaW5kZXggZmYyMWYyOGYzYjdk
YWZmNGJmNGU4YWE0Yzc0NGEyODlmZWYwZGY4Yi4uMmU4MDg3ZGU4M2M4ZDk4MjBjNmViYzkyNmRm
YjEyMDUwODRjYzdhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Nlc3Npb24uaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUg
Ik5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLmgiCiAjaW5jbHVkZSAiUHJlZmV0Y2hDYWNoZS5o
IgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2Vy
U29mdFVwZGF0ZUxvYWRlci5oIgpAQCAtMTU2LDYgKzE1NywxMCBAQCBwdWJsaWM6CiAgICAgTmV0
d29ya0xvYWRTY2hlZHVsZXImIG5ldHdvcmtMb2FkU2NoZWR1bGVyKCk7CiAgICAgUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRNYW5hZ2VyJiBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpIHsgcmV0dXJu
ICptX3ByaXZhdGVDbGlja01lYXN1cmVtZW50OyB9CiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyAg
ICBBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSYgYXBwQm91bmROYXZpZ2F0aW9uVGVzdGlu
Z0RhdGEoKSB7IHJldHVybiBtX2FwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhOyB9CisjZW5k
aWYKKyAgICAKIHByb3RlY3RlZDoKICAgICBOZXR3b3JrU2Vzc2lvbihOZXR3b3JrUHJvY2VzcyYs
IGNvbnN0IE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAKQEAgLTIwMCw2ICsy
MDUsMTAgQEAgcHJvdGVjdGVkOgogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBIYXNo
U2V0PHN0ZDo6dW5pcXVlX3B0cjxTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcj4+IG1fc29m
dFVwZGF0ZUxvYWRlcnM7CiAjZW5kaWYKKyAgICAKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBB
cHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSBtX2FwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdE
YXRhOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0g
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29h
Lm1tCmluZGV4IGQ1OTNiNDJiNTE4Y2E0YzNmYzU3MzQzNzEzYWM1MGIzZGI1YzA3ZDIuLmFlYzc2
NGNiZTQyY2I4ZWJmNDlhZmU3YTA3ZDlhNjQwMDQ0MDljNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5t
bQpAQCAtMzM5LDYgKzMzOSw4IEBAIE5ldHdvcmtEYXRhVGFza0NvY29hOjpOZXR3b3JrRGF0YVRh
c2tDb2NvYShOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgTmV0d29ya0RhdGFUCiAKICAgICBORVRX
T1JLX0RBVEFfVEFTS19DT0NPQV9BRERJVElPTlMKIAorICAgIG1fc2Vzc2lvbi0+YXBwQm91bmRO
YXZpZ2F0aW9uVGVzdGluZ0RhdGEoKS51cGRhdGVBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0
YShyZXF1ZXN0LmlzQXBwQm91bmQoKSk7CisKICAgICBhcHBseVNuaWZmaW5nUG9saWNpZXNBbmRC
aW5kUmVxdWVzdFRvSW5mZXJmYWNlSWZOZWVkZWQobnNSZXF1ZXN0LCBzaG91bGRDb250ZW50U25p
ZmYgPT0gV2ViQ29yZTo6Q29udGVudFNuaWZmaW5nUG9saWN5OjpTbmlmZkNvbnRlbnQgJiYgIXVy
bC5pc0xvY2FsRmlsZSgpLCBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlmZiA9PSBXZWJDb3JlOjpD
b250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeTo6U25pZmYpOwogCiAgICAgbV90YXNrID0gW21f
c2Vzc2lvbldyYXBwZXItPnNlc3Npb24gZGF0YVRhc2tXaXRoUmVxdWVzdDpuc1JlcXVlc3RdOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggZDU0MzAyMjc1M2Fk
ZjMxOTM2MjQwY2YyYTQ4ZjUxYjcyMzlkNWVjNS4uN2ExZmQ1OWMyYzM5ZTRkMGFkZjE3YjQ2YTQx
MWQ0ZWE1ZDJhMmE0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9t
ZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5
CkBAIC03NDIsOCArNzQyLDggQEAgZGVmIGhlYWRlcnNfZm9yX3R5cGUodHlwZSk6CiAgICAgICAg
ICdXZWJDb3JlOjpXaWxsQ29udGludWVMb2FkaW5nJzogWyc8V2ViQ29yZS9GcmFtZUxvYWRlclR5
cGVzLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpTZWxlY3Rpb25SZWN0JzogWyciRWRpdG9yU3Rh
dGUuaCInXSwKICAgICAgICAgJ1dlYktpdDo6QWN0aXZpdHlTdGF0ZUNoYW5nZUlEJzogWyciRHJh
d2luZ0FyZWFJbmZvLmgiJ10sCisgICAgICAgICdXZWJLaXQ6OkFwcEJvdW5kTmF2aWdhdGlvblRl
c3RpbmdEYXRhJzogWyciTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4uaCInXSwKICAgICAgICAg
J1dlYktpdDo6QWxsb3dPdmVyd3JpdGUnOiBbJyJEb3dubG9hZElELmgiJ10sCi0gICAgICAgICdX
ZWJLaXQ6Okxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQnOiBbJyJOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbi5oIiddLAogICAgICAgICAnV2ViS2l0OjpCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUn
OiBbJyJTZXNzaW9uU3RhdGUuaCInXSwKICAgICAgICAgJ1dlYktpdDo6Q2FsbERvd25sb2FkRGlk
U3RhcnQnOiBbJyJEb3dubG9hZE1hbmFnZXIuaCInXSwKICAgICAgICAgJ1dlYktpdDo6Q29udGVu
dFdvcmxkSWRlbnRpZmllcic6IFsnIkNvbnRlbnRXb3JsZFNoYXJlZC5oIiddLApAQCAtNzUyLDYg
Kzc1Miw3IEBAIGRlZiBoZWFkZXJzX2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAnV2ViS2l0OjpH
ZXN0dXJlUmVjb2duaXplclN0YXRlJzogWyciR2VzdHVyZVR5cGVzLmgiJ10sCiAgICAgICAgICdX
ZWJLaXQ6Okdlc3R1cmVUeXBlJzogWyciR2VzdHVyZVR5cGVzLmgiJ10sCiAgICAgICAgICdXZWJL
aXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9yJzogWyciSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMu
aCInXSwKKyAgICAgICAgJ1dlYktpdDo6TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCc6IFsnIk5h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OkxheWVySG9z
dGluZ0NvbnRleHRJRCc6IFsnIkxheWVySG9zdGluZ0NvbnRleHQuaCInXSwKICAgICAgICAgJ1dl
YktpdDo6TGF5ZXJIb3N0aW5nTW9kZSc6IFsnIkxheWVyVHJlZUNvbnRleHQuaCInXSwKICAgICAg
ICAgJ1dlYktpdDo6UGFnZVN0YXRlJzogWyciU2Vzc2lvblN0YXRlLmgiJ10sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9OYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbi5oIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4uaAppbmRleCAzMWUw
NzE1NTk2NmJiN2ZiNmQ3M2FkYmI2M2E3YTc5MzNiODY5YjRhLi4yMWNlNzZhYzNjMDg4NTdlZWIy
ZTAxMjdhZWQzNjdlZTY2MjlkYjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9O
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLmgKQEAgLTI1LDEwICsyNSw1NCBAQAogCiAjcHJhZ21h
IG9uY2UKIAorI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXIuaCIKKyNpbmNsdWRlICJEZWNvZGVyLmgi
CisjaW5jbHVkZSAiRW5jb2Rlci5oIgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogZW51bSBjbGFz
cyBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiA6IGJvb2wgeyBObywgWWVzIH07CiBlbnVtIGNs
YXNzIExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgOiBib29sIHsgTm8sIFllcyB9OwogCisjaWYg
UExBVEZPUk0oQ09DT0EpCitzdHJ1Y3QgQXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEgewor
CisgICAgdm9pZCBjbGVhckFwcEJvdW5kTmF2aWdhdGlvbkRhdGFUZXN0aW5nKCkKKyAgICB7Cisg
ICAgICAgIGhhc0xvYWRlZEFwcEJvdW5kUmVxdWVzdFRlc3RpbmcgPSBmYWxzZTsKKyAgICAgICAg
aGFzTG9hZGVkTm9uQXBwQm91bmRSZXF1ZXN0VGVzdGluZyA9IGZhbHNlOworICAgIH0KKyAgICAK
KyAgICB2b2lkIHVwZGF0ZUFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhKGJvb2wgcmVxdWVz
dElzQXBwQm91bmQpCisgICAgeworICAgICAgICByZXF1ZXN0SXNBcHBCb3VuZCA/IGhhc0xvYWRl
ZEFwcEJvdW5kUmVxdWVzdFRlc3RpbmcgPSB0cnVlIDogaGFzTG9hZGVkTm9uQXBwQm91bmRSZXF1
ZXN0VGVzdGluZyA9IHRydWU7CisgICAgfQorCisgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgZW5jb2RlciA8PCBoYXNMb2FkZWRBcHBC
b3VuZFJlcXVlc3RUZXN0aW5nOworICAgICAgICBlbmNvZGVyIDw8IGhhc0xvYWRlZE5vbkFwcEJv
dW5kUmVxdWVzdFRlc3Rpbmc7CisgICAgfQorCisgICAgc3RhdGljIE9wdGlvbmFsPEFwcEJvdW5k
TmF2aWdhdGlvblRlc3RpbmdEYXRhPiBkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQorICAg
IHsKKyAgICAgICAgT3B0aW9uYWw8Ym9vbD4gaGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0VGVzdGlu
ZzsKKyAgICAgICAgZGVjb2RlciA+PiBoYXNMb2FkZWRBcHBCb3VuZFJlcXVlc3RUZXN0aW5nOwor
ICAgICAgICBpZiAoIWhhc0xvYWRlZEFwcEJvdW5kUmVxdWVzdFRlc3RpbmcpCisgICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIE9wdGlvbmFsPGJvb2w+IGhhc0xvYWRl
ZE5vbkFwcEJvdW5kUmVxdWVzdFRlc3Rpbmc7CisgICAgICAgIGRlY29kZXIgPj4gaGFzTG9hZGVk
Tm9uQXBwQm91bmRSZXF1ZXN0VGVzdGluZzsKKyAgICAgICAgaWYgKCFoYXNMb2FkZWROb25BcHBC
b3VuZFJlcXVlc3RUZXN0aW5nKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwor
ICAgICAgICByZXR1cm4ge3sgV1RGTW92ZSgqaGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0VGVzdGlu
ZyksIFdURk1vdmUoKmhhc0xvYWRlZE5vbkFwcEJvdW5kUmVxdWVzdFRlc3RpbmcpIH19OworICAg
IH0KKworICAgIGJvb2wgaGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0VGVzdGluZyB7IGZhbHNlIH07
CisgICAgYm9vbCBoYXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3RUZXN0aW5nIHsgZmFsc2UgfTsK
K307CisjZW5kaWYKKwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmcuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5oCmluZGV4IDg4NGQ4
YzA4ODVmYTdhMzYzYjJhZDgwMjU0MjJjMzNmNzE0NWVhYTEuLjViZTY0ODVjZmIxMjUyNDVlNmI1
ZGJhOGQ2MWZjYTM0N2VlMDc5NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5oCkBAIC0z
Miw2ICszMiwxMSBAQCB0eXBlZGVmIGVudW0gewogICAgIFdLV2ViVmlld0F1ZGlvUm91dGluZ0Fy
Yml0cmF0aW9uU3RhdHVzQWN0aXZlLAogfSBXS1dlYlZpZXdBdWRpb1JvdXRpbmdBcmJpdHJhdGlv
blN0YXR1czsKIAorc3RydWN0IFdLQXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEgeworICAg
IEJPT0wgaGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0VGVzdGluZzsKKyAgICBCT09MIGhhc0xvYWRl
ZE5vbkFwcEJvdW5kUmVxdWVzdFRlc3Rpbmc7Cit9OworCiBAaW50ZXJmYWNlIFdLV2ViVmlldyAo
V0tUZXN0aW5nKQogCiAtICh2b2lkKV9zZXRQYWdlU2NhbGU6KENHRmxvYXQpc2NhbGUgd2l0aE9y
aWdpbjooQ0dQb2ludClvcmlnaW47CkBAIC04OCw1ICs5Myw3IEBAIHR5cGVkZWYgZW51bSB7CiAt
ICh2b2lkKV9zZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uUmVwb3J0VVJMRm9y
VGVzdGluZzooTlNVUkwgKil1cmwgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikodm9pZCkpY29t
cGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdL
X0lPU19UQkEpKTsKIAogLSAodm9pZClfbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDoodm9pZChe
KShCT09MKSljb21wbGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQpX2FwcEJvdW5kTmF2aWdhdGlvbkRh
dGE6KHZvaWQoXikoV0tBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSkpY29tcGxldGlvbkhh
bmRsZXI7CistICh2b2lkKV9jbGVhckFwcEJvdW5kTmF2aWdhdGlvbkRhdGE6KHZvaWQoXikodm9p
ZCkpY29tcGxldGlvbkhhbmRsZXI7CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdUZXN0aW5nLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1Rlc3RpbmcubW0KaW5kZXggN2NjMzBlYTQxNDJh
MzUwMDAzYmUxZmM0OTMzOGQ1NGIwYWJkNTk4My4uZGU2MTY0NmUwN2VjY2I0ZTBiZWVlYWJiZDFh
ZmYyY2Y3MTBjN2NmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlld1Rlc3RpbmcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlld1Rlc3RpbmcubW0KQEAgLTMzMyw0ICszMzMsMTggQEAKICAgICB9KTsK
IH0KIAorLSAodm9pZClfYXBwQm91bmROYXZpZ2F0aW9uRGF0YToodm9pZCheKShXS0FwcEJvdW5k
TmF2aWdhdGlvblRlc3RpbmdEYXRhKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIF9wYWdlLT5h
cHBCb3VuZE5hdmlnYXRpb25EYXRhKFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihj
b21wbGV0aW9uSGFuZGxlcildIChhdXRvJiYgYXBwQm91bmREYXRhKSB7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHsgYXBwQm91bmREYXRhLmhhc0xvYWRlZEFwcEJvdW5kUmVxdWVzdFRlc3Rp
bmcsIGFwcEJvdW5kRGF0YS5oYXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3RUZXN0aW5nIH0pOwor
ICAgIH0pOworfQorCistICh2b2lkKV9jbGVhckFwcEJvdW5kTmF2aWdhdGlvbkRhdGE6KHZvaWQo
Xikodm9pZCkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBfcGFnZS0+Y2xlYXJBcHBCb3VuZE5h
dmlnYXRpb25EYXRhKFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9u
SGFuZGxlcildIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICB9KTsKK30KKwog
QGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggNDY0YmRh
OTFhYWY4ZDAxNTNmMWU3ZTdlOTE5YzE0MWQ2NzA5YjczMS4uZWRlMzkzMTMxODRmNWU1NWQzZTYx
OTc1YWU2ZWVlYzJmZmJlMjA4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCkBAIC0xMDM4MSw2ICsxMDM4MSwxOCBAQCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVB
cnJheSBXZWJQYWdlUHJveHk6OmNyZWF0ZU5ldHdvcmtFeHRlbnNpb25zU2FuZGJveEV4dGVucwog
fQogI2VuZGlmCiAKKyNpZiBQTEFURk9STShDT0NPQSkKK3ZvaWQgV2ViUGFnZVByb3h5OjphcHBC
b3VuZE5hdmlnYXRpb25EYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQXBwQm91bmROYXZpZ2F0
aW9uVGVzdGluZ0RhdGEmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgd2Vic2l0ZURh
dGFTdG9yZSgpLm5ldHdvcmtQcm9jZXNzKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpO
ZXR3b3JrUHJvY2Vzczo6QXBwQm91bmROYXZpZ2F0aW9uRGF0YShtX3dlYnNpdGVEYXRhU3RvcmUt
PnNlc3Npb25JRCgpKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCit2b2lkIFdl
YlBhZ2VQcm94eTo6Y2xlYXJBcHBCb3VuZE5hdmlnYXRpb25EYXRhKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICB3ZWJzaXRlRGF0YVN0b3JlKCku
bmV0d29ya1Byb2Nlc3MoKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9j
ZXNzOjpDbGVhckFwcEJvdW5kTmF2aWdhdGlvbkRhdGEobV93ZWJzaXRlRGF0YVN0b3JlLT5zZXNz
aW9uSUQoKSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKyNlbmRpZgorCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKIAogI3VuZGVmIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggYTBjZWJkOWZiNDVlNzZmNTE5NTQ1
M2NiNDk1Y2EzY2UwMzg0YTcwZi4uOWE0MjI5MmQ2YjIyMjQwYzk2ZDA0NmVmNmI1ODM2M2UyMjI1
ZWFlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTMwNiw2ICsz
MDYsNyBAQCB0eXBlZGVmIEhXTkQgUGxhdGZvcm1WaWV3V2lkZ2V0OwogI2VuZGlmCiAKIG5hbWVz
cGFjZSBXZWJLaXQgeworc3RydWN0IEFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhOwogY2xh
c3MgQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3JQcm94eTsKIGNsYXNzIERyYXdpbmdBcmVh
UHJveHk7CiBjbGFzcyBHYW1lcGFkRGF0YTsKQEAgLTE4NTgsNiArMTg1OSw4IEBAIHB1YmxpYzoK
ICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIHNldExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91
bmQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgdm9pZCBsYXN0TmF2aWdhdGlvbldh
c0FwcEJvdW5kKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgYXBw
Qm91bmROYXZpZ2F0aW9uRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFwcEJvdW5kTmF2aWdh
dGlvblRlc3RpbmdEYXRhJiYpPiYmKTsKKyAgICB2b2lkIGNsZWFyQXBwQm91bmROYXZpZ2F0aW9u
RGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogI2VuZGlmCiAKIHByaXZhdGU6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJh
dGVneS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJh
dGVneS5jcHAKaW5kZXggY2MyMjAzZmU4Yzk3YTU5N2FkYzMwNjliODBhNzg3ODhmYmQ1ZTMwOC4u
MjJjZTA5MjU5OGYxMGRhNmM4YzFlMDQ2MzdmNjIwMTkxYzA5ZWU2MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcApA
QCAtMTA3LDcgKzEwNyw3IEBAIFdlYkxvYWRlclN0cmF0ZWd5Ojp+V2ViTG9hZGVyU3RyYXRlZ3ko
KQogCiB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5Ojpsb2FkUmVzb3VyY2UoRnJhbWUmIGZyYW1lLCBD
YWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0
IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChS
ZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAg
IGlmIChyZXNvdXJjZS50eXBlKCkgIT0gQ2FjaGVkUmVzb3VyY2U6OlR5cGU6Ok1haW5SZXNvdXJj
ZSkgeworICAgIGlmIChyZXNvdXJjZS50eXBlKCkgIT0gQ2FjaGVkUmVzb3VyY2U6OlR5cGU6Ok1h
aW5SZXNvdXJjZSB8fCAhZnJhbWUuaXNNYWluRnJhbWUoKSkgewogICAgICAgICBpZiAoYXV0byog
ZG9jdW1lbnQgPSBmcmFtZS5tYWluRnJhbWUoKS5kb2N1bWVudCgpKSB7CiAgICAgICAgICAgICBp
ZiAoZG9jdW1lbnQgJiYgZG9jdW1lbnQtPmxvYWRlcigpKQogICAgICAgICAgICAgICAgIHJlcXVl
c3Quc2V0SXNBcHBCb3VuZChkb2N1bWVudC0+bG9hZGVyKCktPmxhc3ROYXZpZ2F0aW9uV2FzQXBw
Qm91bmQoKSk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cK
aW5kZXggNzRlNmU3Zjk1Y2JhZDQ4NjBjNTExZmNmNDdkMjg2NmNiOTc4MDk0Ni4uNDBkMGUwNzAx
ZDdhMGJhYzI1ZWI3YTc0Mjk1MmUzN2RlY2JlZGM2MiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdl
TG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIxLTAyLTIzICBL
YXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIEFwcC1i
b3VuZCByZXF1ZXN0IHBhcmFtZXRlciBzaG91bGQgYmUgcGFzc2VkIHRvIG1haW4gcmVzb3VyY2Ug
cmVxdWVzdHMgbm90IHRoZSBtYWluIGZyYW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjIyNDEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc0NTYw
OTY2PiAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGRzIG1vcmUgcm9idXN0IHRlc3RpbmcgdG8gcmVwb3J0IHdoZW4gYXBwQm91bmQvbm9uQXBwQm91
bmQgcmVxdWVzdHMKKyAgICAgICAgbG9hZCBpbiB0aGUgbmV0d29yayBwcm9jZXNzLiBUaGlzIHRl
c3RzIG5vdCBvbmx5IHRoYXQgdGhlIG1haW4gZnJhbWXigJlzCisgICAgICAgIGRvY3VtZW50IGxv
YWRlciBpcyBwcm9wZXJseSBzZXQsIGJ1dCBhbHNvIHRoYXQgYWxsIGxvYWRzIGluaXRpYXRlZCBm
cm9tCisgICAgICAgIGFwcC1ib3VuZCByZXF1ZXN0cyBhcmUgYWxzbyBhcHAtYm91bmQgdG8gYXZv
aWQgcmVncmVzc2lvbnMgbGlrZSB0aGlzIGluIHRoZSBmdXR1cmUuCisKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW06CisgICAg
ICAgIFV0aWxpemUgc29tZSBDU1AgdGVzdCByZXNvdXJjZXMgdGhhdCBoYXZlIHRoZSBleGFjdCBz
ZXR1cCBuZWVkZWQgdG8KKyAgICAgICAgdGVzdCB0aGlzIGZpeC4KKworICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
Y29jb2EvVGVzdFdLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IGFwcEJvdW5kTmF2
aWdhdGlvbkRhdGE6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBjbGVhckFwcEJvdW5kTmF2aWdh
dGlvblJlcG9ydHM6XSk6CisKIDIwMjEtMDItMTkgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFw
cGxlLmNvbT4KIAogICAgICAgICBQQ006IFJlcXVlc3Qgc2VydmVyIHB1YmxpYyBrZXkgdG8gZ2Vu
ZXJhdGUgc2VjcmV0IHRva2VuCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0KaW5kZXggNzNkMGNjNTI1
ZjRhZmY2ZmQyM2Q2YmRlNDUxNjFmNjI4ODc4ZjVkMS4uYTJiM2FiY2YzMGU1NDFhZjE4MmVmY2Zm
NjY1ZmU2ZWZiZjI2ZTU0OSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQpAQCAtMzcsNiArMzcs
NyBAQAogI2ltcG9ydCA8V2ViS2l0L1dLUHJlZmVyZW5jZXNQcml2YXRlLmg+CiAjaW1wb3J0IDxX
ZWJLaXQvV0tVUkxTY2hlbWVUYXNrUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLVXNlckNv
bnRlbnRDb250cm9sbGVyUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZh
dGVGb3JUZXN0aW5nLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0
ZS5oPgogI2ltcG9ydCA8V2ViS2l0L19XS1VzZXJDb250ZW50V29ybGQuaD4KICNpbXBvcnQgPFdl
YktpdC9fV0tVc2VyU3R5bGVTaGVldC5oPgpAQCAtMTQyNSwxOSArMTQyNiwyOCBAQCBURVNUKElu
QXBwQnJvd3NlclByaXZhY3ksIEFwcEJvdW5kUmVxdWVzdCkKICAgICBhdXRvIHdlYlZpZXcgPSBh
ZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RaZXJvIGNv
bmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogICAgIE5TU3RyaW5nICp1cmwgPSBA
Imh0dHBzOi8vd2Via2l0Lm9yZyI7CiAKLSAgICBzdGF0aWMgYm9vbCBpc0RvbmUgPSBmYWxzZTsK
KyAgICBfX2Jsb2NrIGJvb2wgaXNEb25lID0gZmFsc2U7CiAgICAgTlNNdXRhYmxlVVJMUmVxdWVz
dCAqbm9uQXBwQm91bmRSZXF1ZXN0ID0gW05TTXV0YWJsZVVSTFJlcXVlc3QgcmVxdWVzdFdpdGhV
Ukw6W05TVVJMIFVSTFdpdGhTdHJpbmc6dXJsXV07CiAgICAgQVBQX0JPVU5EX1JFUVVFU1RfQURE
SVRJT05TCiAKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpub25BcHBCb3VuZFJlcXVlc3RdOwog
ICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKIAotICAgIFt3
ZWJWaWV3IGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ6XihCT09MIGlzQXBwQm91bmQpIHsKKyAg
ICBbd2ViVmlldyBfbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDpeKEJPT0wgaXNBcHBCb3VuZCkg
ewogICAgICAgICBFWFBFQ1RfRkFMU0UoaXNBcHBCb3VuZCk7CiAgICAgICAgIGlzRG9uZSA9IHRy
dWU7CiAgICAgfV07CiAKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7Cisg
ICAgCisgICAgaXNEb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgX2FwcEJvdW5kTmF2aWdhdGlv
bkRhdGE6XihXS0FwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhIGRhdGEpIHsKKyAgICAgICAg
RVhQRUNUX0ZBTFNFKGRhdGEuaGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0VGVzdGluZyk7CisgICAg
ICAgIEVYUEVDVF9UUlVFKGRhdGEuaGFzTG9hZGVkTm9uQXBwQm91bmRSZXF1ZXN0VGVzdGluZyk7
CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4oJmlzRG9uZSk7CiB9CiAKIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQXBwQm91
bmRSZXF1ZXN0V2l0aE5hdmlnYXRpb24pCkBAIC0xNDUzLDE4ICsxNDYzLDk3IEBAIFRFU1QoSW5B
cHBCcm93c2VyUHJpdmFjeSwgQXBwQm91bmRSZXF1ZXN0V2l0aE5hdmlnYXRpb24pCiAgICAgW3dl
YlZpZXcgbG9hZFJlcXVlc3Q6c3RhcnRpbmdSZXF1ZXN0XTsKICAgICBbd2ViVmlldyBfdGVzdF93
YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CiAKLSAgICBzdGF0aWMgYm9vbCBpc0RvbmUgPSBm
YWxzZTsKKyAgICBfX2Jsb2NrIGJvb2wgaXNEb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgX2xh
c3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ6XihCT09MIGlzQXBwQm91bmQpIHsKKyAgICAgICAgRVhQ
RUNUX1RSVUUoaXNBcHBCb3VuZCk7CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07CisK
KyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CisgICAgCisgICAgaXNEb25l
ID0gZmFsc2U7CisgICAgW3dlYlZpZXcgX2FwcEJvdW5kTmF2aWdhdGlvbkRhdGE6XihXS0FwcEJv
dW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhIGRhdGEpIHsKKyAgICAgICAgRVhQRUNUX1RSVUUoZGF0
YS5oYXNMb2FkZWRBcHBCb3VuZFJlcXVlc3RUZXN0aW5nKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNF
KGRhdGEuaGFzTG9hZGVkTm9uQXBwQm91bmRSZXF1ZXN0VGVzdGluZyk7CisgICAgICAgIGlzRG9u
ZSA9IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9u
ZSk7CisgICAgCisgICAgaXNEb25lID0gZmFsc2U7CiAgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAq
bm9uQXBwQm91bmRSZXF1ZXN0ID0gW05TTXV0YWJsZVVSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6
W05TVVJMIFVSTFdpdGhTdHJpbmc6bm9uQXBwQm91bmRVUkxdXTsKICAgICBBUFBfQk9VTkRfUkVR
VUVTVF9BRERJVElPTlMKKyAgICAKKyAgICBpc0RvbmUgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBf
Y2xlYXJBcHBCb3VuZE5hdmlnYXRpb25EYXRhOl57CisgICAgICAgIGlzRG9uZSA9IHRydWU7Cisg
ICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiAKICAgICBb
d2ViVmlldyBsb2FkUmVxdWVzdDpub25BcHBCb3VuZFJlcXVlc3RdOwogICAgIFt3ZWJWaWV3IF90
ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKIAotICAgIFt3ZWJWaWV3IGxhc3ROYXZp
Z2F0aW9uV2FzQXBwQm91bmQ6XihCT09MIGlzQXBwQm91bmQpIHsKKyAgICBbd2ViVmlldyBfbGFz
dE5hdmlnYXRpb25XYXNBcHBCb3VuZDpeKEJPT0wgaXNBcHBCb3VuZCkgewogICAgICAgICBFWFBF
Q1RfRkFMU0UoaXNBcHBCb3VuZCk7CiAgICAgICAgIGlzRG9uZSA9IHRydWU7CiAgICAgfV07CiAK
ICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CisgICAgCisgICAgaXNEb25l
ID0gZmFsc2U7CisgICAgW3dlYlZpZXcgX2FwcEJvdW5kTmF2aWdhdGlvbkRhdGE6XihXS0FwcEJv
dW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhIGRhdGEpIHsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKGRh
dGEuaGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0VGVzdGluZyk7CisgICAgICAgIEVYUEVDVF9UUlVF
KGRhdGEuaGFzTG9hZGVkTm9uQXBwQm91bmRSZXF1ZXN0VGVzdGluZyk7CisgICAgICAgIGlzRG9u
ZSA9IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9u
ZSk7CiB9CisKK1RFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQXBwQm91bmRSZXF1ZXN0V2l0aFN1
YkZyYW1lKQoreworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdD
b25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgW2NvbmZpZ3VyYXRpb24gX3NldE92ZXJy
aWRlQ29udGVudFNlY3VyaXR5UG9saWN5OkAic2NyaXB0LXNyYyAnbm9uY2UtYiciXTsKKworICAg
IGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlv
bi5nZXQoKV0pOworICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAicGFnZS13aXRoLWNz
cCJdOworCisgICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJNYWluRnJhbWU6IEIiXTsKKyAg
ICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAIlN1YmZyYW1lOiBCIl07CisKKyAgICBfX2Jsb2Nr
IGJvb2wgaXNEb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgX2FwcEJvdW5kTmF2aWdhdGlvbkRh
dGE6XihXS0FwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhIGRhdGEpIHsKKyAgICAgICAgRVhQ
RUNUX1RSVUUoZGF0YS5oYXNMb2FkZWRBcHBCb3VuZFJlcXVlc3RUZXN0aW5nKTsKKyAgICAgICAg
RVhQRUNUX0ZBTFNFKGRhdGEuaGFzTG9hZGVkTm9uQXBwQm91bmRSZXF1ZXN0VGVzdGluZyk7Cisg
ICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGls
OjpydW4oJmlzRG9uZSk7Cit9OworCitURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIE5vbkFwcEJv
dW5kUmVxdWVzdFdpdGhTdWJGcmFtZSkKK3sKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9w
dE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFtjb25maWd1
cmF0aW9uIF9zZXRPdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeTpAInNjcmlwdC1zcmMgJ25v
bmNlLWInIl07CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0
aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBOU011dGFibGVVUkxSZXF1ZXN0ICpub25B
cHBCb3VuZFJlcXVlc3QgPSBbTlNNdXRhYmxlVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05T
QnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAicGFnZS13aXRoLWNzcCIgd2l0aEV4
dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1d
OworICAgIEFQUF9CT1VORF9SRVFVRVNUX0FERElUSU9OUworCisgICAgW3dlYlZpZXcgbG9hZFJl
cXVlc3Q6bm9uQXBwQm91bmRSZXF1ZXN0XTsKKworICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdl
OkAiTWFpbkZyYW1lOiBCIl07CisgICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJTdWJmcmFt
ZTogQiJdOworCisgICAgX19ibG9jayBib29sIGlzRG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3
IF9hcHBCb3VuZE5hdmlnYXRpb25EYXRhOiBeKFdLQXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0Rh
dGEgZGF0YSkgeworICAgICAgICBFWFBFQ1RfRkFMU0UoZGF0YS5oYXNMb2FkZWRBcHBCb3VuZFJl
cXVlc3RUZXN0aW5nKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoZGF0YS5oYXNMb2FkZWROb25BcHBC
b3VuZFJlcXVlc3RUZXN0aW5nKTsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKwor
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKK307CisKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3LmggYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaAppbmRleCBjMWRjMDhjZmE0Y2Yw
NjEzMzUyNDU3YmYxMWE4ZWUzMDYxMDdhZThhLi4yMmE0ODI2YzQxMmIyOTQ5M2U1YzM0ZGQ0YWVj
ODM0MDdmMWY5MzI4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RX
S1dlYlZpZXcuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcu
aApAQCAtNjcsNyArNjcsNiBAQAogLSAoaWQpb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDoo
TlNTdHJpbmcgKilzY3JpcHQ7CiAtIChpZClvYmplY3RCeUNhbGxpbmdBc3luY0Z1bmN0aW9uOihO
U1N0cmluZyAqKXNjcmlwdCB3aXRoQXJndW1lbnRzOihOU0RpY3Rpb25hcnkgKilhcmd1bWVudHMg
ZXJyb3I6KE5TRXJyb3IgKiopZXJyb3JPdXQ7CiAtICh1bnNpZ25lZCl3YWl0VW50aWxDbGllbnRX
aWR0aElzOih1bnNpZ25lZClleHBlY3RlZENsaWVudFdpZHRoOwotLSAodm9pZClsYXN0TmF2aWdh
dGlvbldhc0FwcEJvdW5kOih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyOwogQGVuZAog
CiBAaW50ZXJmYWNlIFRlc3RNZXNzYWdlSGFuZGxlciA6IE5TT2JqZWN0IDxXS1NjcmlwdE1lc3Nh
Z2VIYW5kbGVyPgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tX
ZWJWaWV3Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCmlu
ZGV4IDhkOTY3MTYzYjQ2ZGE3OTE5OTM0ZTY0OTA2NDAzY2QyMzFiMmU2MGMuLjM0YTQ2NDA5YzEy
MmVjN2ZhMmE2ODZlYmFkZjk1MTE5YThiYTUyYTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2Nv
Y29hL1Rlc3RXS1dlYlZpZXcubW0KQEAgLTIzOSwxMCArMjM5LDYgQEAgc3RhdGljIE5TU3RyaW5n
ICpvdmVycmlkZUJ1bmRsZUlkZW50aWZpZXIoaWQsIFNFTCkKICAgICByZXR1cm4gY2xpZW50V2lk
dGg7CiB9CiAKLS0gKHZvaWQpbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDoodm9pZCheKShCT09M
KSljb21wbGV0aW9uSGFuZGxlcgotewotICAgIFtzZWxmIF9sYXN0TmF2aWdhdGlvbldhc0FwcEJv
dW5kOmNvbXBsZXRpb25IYW5kbGVyXTsKLX0KIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFRlc3RN
ZXNzYWdlSGFuZGxlciB7Cg==
</data>
<flag name="commit-queue"
          id="440145"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421325</attachid>
            <date>2021-02-23 10:30:25 -0800</date>
            <delta_ts>2021-02-23 11:15:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222241-20210223103024.patch</filename>
            <type>text/plain</type>
            <size>23795</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDdjMDJiMWVhMmViNDRlNzE5
ZDgyNGY0ODU0Y2YwZDhiNjBiMzNmYWEuLjk5ODQ0MGE5NTAwYmViZmQ4MWVjY2ZmMDBiYjI5YjYx
MmM1ZTZhNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMgQEAKKzIwMjEtMDItMjMgIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgQXBwLWJvdW5kIHJl
cXVlc3QgcGFyYW1ldGVyIHNob3VsZCBiZSBwYXNzZWQgdG8gbWFpbiByZXNvdXJjZSByZXF1ZXN0
cyBub3QgdGhlIG1haW4gZnJhbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyMjI0MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzQ1NjA5NjY+IAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNldCB0aGUg
aXNBcHBCb3VuZCBwYXJhbWV0ZXIgb24gdGhlIHJlc291cmNlIHJlcXVlc3QgaWYgaXQgaXMgYSBt
YWluCisgICAgICAgIHJlc291cmNlIG5vdCBvbiB0aGUgbWFpbiBmcmFtZS4gT3RoZXJ3aXNlIG1v
c3RseSBjaGFuZ2VzIHRvIGFkZCBiZXR0ZXIgdGVzdGluZy4KKworICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6OmFwcEJvdW5kTmF2aWdhdGlvbkRhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6Y2xlYXJBcHBCb3VuZE5hdmlnYXRpb25EYXRhKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNz
aW9uLmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjphcHBCb3VuZE5hdmlnYXRp
b25UZXN0aW5nRGF0YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0Rh
dGFUYXNrQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0NvY29hOjpO
ZXR3b3JrRGF0YVRhc2tDb2NvYSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMu
cHk6CisgICAgICAgICogU2hhcmVkL05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLmg6CisgICAg
ICAgIChXZWJLaXQ6OkFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhOjpjbGVhckFwcEJvdW5k
TmF2aWdhdGlvbkRhdGFUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6QXBwQm91bmROYXZpZ2F0
aW9uVGVzdGluZ0RhdGE6OnVwZGF0ZUFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhKToKKyAg
ICAgICAgKFdlYktpdDo6QXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGE6OmVuY29kZSBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6OkFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhOjpkZWNv
ZGUpOgorICAgICAgICBTdHJ1Y3QgdG8gcmV0dXJuIGRhdGEgZm9yIHRlc3RzLgorCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3VGVzdGluZy5tbToKKyAgICAgICAg
KC1bV0tXZWJWaWV3IF9hcHBCb3VuZE5hdmlnYXRpb25EYXRhOl0pOgorICAgICAgICAoLVtXS1dl
YlZpZXcgX2NsZWFyQXBwQm91bmROYXZpZ2F0aW9uRGF0YTpdKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjphcHBC
b3VuZE5hdmlnYXRpb25EYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjbGVh
ckFwcEJvdW5kTmF2aWdhdGlvbkRhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6bG9hZFJlc291cmNlKToKKyAg
ICAgICAgVGhlIGZpeC4KKwogMjAyMS0wMi0xOSAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hl
bmV5QGFwcGxlLmNvbT4KIAogICAgICAgICBDcmVhdGUgU1FMaXRlIHNrZWxldG9uIGltcGxlbWVu
dGF0aW9uIGZvciBQQ00gZnJhdWQgcHJldmVudGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCA2ODMwMTVkMTY5YThjMjk5MjMzMGZm
NDYwODU0Y2M2YzMxNjI4MzZjLi42NTEwOGI5OTk1OGVhYWI1MGRjOWFjMzk3MWE0NDkwYjllN2I2
OWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcApAQCAtMjc3MCw0ICsyNzcwLDIzIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldENPUlNE
aXNhYmxpbmdQYXR0ZXJucyhQYWdlSWRlbnRpZmllciBwYWdlSWRlbnRpZmllciwgVmVjCiAgICAg
bV9leHRlbnNpb25DT1JTRGlzYWJsaW5nUGF0dGVybnMuc2V0KHBhZ2VJZGVudGlmaWVyLCBXVEZN
b3ZlKHBhcnNlZFBhdHRlcm5zKSk7CiB9CiAKKyNpZiBQTEFURk9STShDT0NPQSkKK3ZvaWQgTmV0
d29ya1Byb2Nlc3M6OmFwcEJvdW5kTmF2aWdhdGlvbkRhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRh
JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lv
biA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoeyBuZXR3b3JrU2Vzc2lvbi0+YXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEo
KS5oYXNMb2FkZWRBcHBCb3VuZFJlcXVlc3RUZXN0aW5nLCBuZXR3b3JrU2Vzc2lvbi0+YXBwQm91
bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEoKS5oYXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3RUZXN0
aW5nIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGNvbXBsZXRpb25IYW5kbGVyKHsg
fSk7Cit9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmNsZWFyQXBwQm91bmROYXZpZ2F0aW9uRGF0
YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlz
LT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKQorICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+YXBw
Qm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEoKS5jbGVhckFwcEJvdW5kTmF2aWdhdGlvbkRhdGFU
ZXN0aW5nKCk7CisKKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOworfQorI2VuZGlmCisKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5oCmluZGV4IGVhMmRkN2Y1MzhjMDc0NjRiODY0YTAxYzVlMzhjY2VkYmFlYThjNzIu
LjA4MTAyZDc2ZGQ4OWExNWNmMjU4YWZlNDdjMTIxNmVlZTRjMjMyNmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTM3Nyw2ICszNzcsMTEg
QEAgcHVibGljOgogICAgIGJvb2wgc2hvdWxkRGlzYWJsZUNPUlNGb3JSZXF1ZXN0VG8oV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFVSTCYpIGNvbnN0OwogICAgIHZvaWQgc2V0Q09SU0Rp
c2FibGluZ1BhdHRlcm5zKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBWZWN0b3I8U3RyaW5nPiYm
KTsKIAorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZvaWQgYXBwQm91bmROYXZpZ2F0aW9uRGF0
YShQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBcHBCb3VuZE5hdmlnYXRp
b25UZXN0aW5nRGF0YSYmKT4mJik7CisgICAgdm9pZCBjbGVhckFwcEJvdW5kTmF2aWdhdGlvbkRh
dGEoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisjZW5kaWYK
KwogcHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKGNv
bnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmlu
ZGV4IDg0MTFiYmU5ZDVlYTZmYmUzZWJjNGVkMGZhNTQ5ZThmNGE3OGNiYWYuLjM1YzI3ZmQ4MjMx
YjkyYjU5Zjk1N2RiZDViODBiNTQ4NWYxODY5OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMTg5LDQg
KzE4OSw5IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICNl
bmRpZgogICAgIFVwZGF0ZUJ1bmRsZUlkZW50aWZpZXIoU3RyaW5nIGJ1bmRsZUlkZW50aWZpZXIp
IC0+ICgpIEFzeW5jCiAgICAgQ2xlYXJCdW5kbGVJZGVudGlmaWVyKCkgLT4gKCkgQXN5bmMKKwor
I2lmIFBMQVRGT1JNKENPQ09BKQorICAgIEFwcEJvdW5kTmF2aWdhdGlvbkRhdGEoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklEKSAtPiAoc3RydWN0IFdlYktpdDo6QXBwQm91bmROYXZpZ2F0aW9uVGVz
dGluZ0RhdGEgZGF0YSkgQXN5bmMKKyAgICBDbGVhckFwcEJvdW5kTmF2aWdhdGlvbkRhdGEoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBBc3luYworI2VuZGlmCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKaW5kZXggZmYyMWYyOGYzYjdk
YWZmNGJmNGU4YWE0Yzc0NGEyODlmZWYwZGY4Yi4uMmU4MDg3ZGU4M2M4ZDk4MjBjNmViYzkyNmRm
YjEyMDUwODRjYzdhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Nlc3Npb24uaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUg
Ik5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLmgiCiAjaW5jbHVkZSAiUHJlZmV0Y2hDYWNoZS5o
IgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2Vy
U29mdFVwZGF0ZUxvYWRlci5oIgpAQCAtMTU2LDYgKzE1NywxMCBAQCBwdWJsaWM6CiAgICAgTmV0
d29ya0xvYWRTY2hlZHVsZXImIG5ldHdvcmtMb2FkU2NoZWR1bGVyKCk7CiAgICAgUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRNYW5hZ2VyJiBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpIHsgcmV0dXJu
ICptX3ByaXZhdGVDbGlja01lYXN1cmVtZW50OyB9CiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyAg
ICBBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSYgYXBwQm91bmROYXZpZ2F0aW9uVGVzdGlu
Z0RhdGEoKSB7IHJldHVybiBtX2FwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhOyB9CisjZW5k
aWYKKyAgICAKIHByb3RlY3RlZDoKICAgICBOZXR3b3JrU2Vzc2lvbihOZXR3b3JrUHJvY2VzcyYs
IGNvbnN0IE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAKQEAgLTIwMCw2ICsy
MDUsMTAgQEAgcHJvdGVjdGVkOgogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBIYXNo
U2V0PHN0ZDo6dW5pcXVlX3B0cjxTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcj4+IG1fc29m
dFVwZGF0ZUxvYWRlcnM7CiAjZW5kaWYKKyAgICAKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBB
cHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSBtX2FwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdE
YXRhOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0g
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29h
Lm1tCmluZGV4IGQ1OTNiNDJiNTE4Y2E0YzNmYzU3MzQzNzEzYWM1MGIzZGI1YzA3ZDIuLmFlYzc2
NGNiZTQyY2I4ZWJmNDlhZmU3YTA3ZDlhNjQwMDQ0MDljNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5t
bQpAQCAtMzM5LDYgKzMzOSw4IEBAIE5ldHdvcmtEYXRhVGFza0NvY29hOjpOZXR3b3JrRGF0YVRh
c2tDb2NvYShOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgTmV0d29ya0RhdGFUCiAKICAgICBORVRX
T1JLX0RBVEFfVEFTS19DT0NPQV9BRERJVElPTlMKIAorICAgIG1fc2Vzc2lvbi0+YXBwQm91bmRO
YXZpZ2F0aW9uVGVzdGluZ0RhdGEoKS51cGRhdGVBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0
YShyZXF1ZXN0LmlzQXBwQm91bmQoKSk7CisKICAgICBhcHBseVNuaWZmaW5nUG9saWNpZXNBbmRC
aW5kUmVxdWVzdFRvSW5mZXJmYWNlSWZOZWVkZWQobnNSZXF1ZXN0LCBzaG91bGRDb250ZW50U25p
ZmYgPT0gV2ViQ29yZTo6Q29udGVudFNuaWZmaW5nUG9saWN5OjpTbmlmZkNvbnRlbnQgJiYgIXVy
bC5pc0xvY2FsRmlsZSgpLCBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlmZiA9PSBXZWJDb3JlOjpD
b250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeTo6U25pZmYpOwogCiAgICAgbV90YXNrID0gW21f
c2Vzc2lvbldyYXBwZXItPnNlc3Npb24gZGF0YVRhc2tXaXRoUmVxdWVzdDpuc1JlcXVlc3RdOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggZDU0MzAyMjc1M2Fk
ZjMxOTM2MjQwY2YyYTQ4ZjUxYjcyMzlkNWVjNS4uN2ExZmQ1OWMyYzM5ZTRkMGFkZjE3YjQ2YTQx
MWQ0ZWE1ZDJhMmE0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9t
ZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5
CkBAIC03NDIsOCArNzQyLDggQEAgZGVmIGhlYWRlcnNfZm9yX3R5cGUodHlwZSk6CiAgICAgICAg
ICdXZWJDb3JlOjpXaWxsQ29udGludWVMb2FkaW5nJzogWyc8V2ViQ29yZS9GcmFtZUxvYWRlclR5
cGVzLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpTZWxlY3Rpb25SZWN0JzogWyciRWRpdG9yU3Rh
dGUuaCInXSwKICAgICAgICAgJ1dlYktpdDo6QWN0aXZpdHlTdGF0ZUNoYW5nZUlEJzogWyciRHJh
d2luZ0FyZWFJbmZvLmgiJ10sCisgICAgICAgICdXZWJLaXQ6OkFwcEJvdW5kTmF2aWdhdGlvblRl
c3RpbmdEYXRhJzogWyciTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4uaCInXSwKICAgICAgICAg
J1dlYktpdDo6QWxsb3dPdmVyd3JpdGUnOiBbJyJEb3dubG9hZElELmgiJ10sCi0gICAgICAgICdX
ZWJLaXQ6Okxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQnOiBbJyJOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbi5oIiddLAogICAgICAgICAnV2ViS2l0OjpCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUn
OiBbJyJTZXNzaW9uU3RhdGUuaCInXSwKICAgICAgICAgJ1dlYktpdDo6Q2FsbERvd25sb2FkRGlk
U3RhcnQnOiBbJyJEb3dubG9hZE1hbmFnZXIuaCInXSwKICAgICAgICAgJ1dlYktpdDo6Q29udGVu
dFdvcmxkSWRlbnRpZmllcic6IFsnIkNvbnRlbnRXb3JsZFNoYXJlZC5oIiddLApAQCAtNzUyLDYg
Kzc1Miw3IEBAIGRlZiBoZWFkZXJzX2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAnV2ViS2l0OjpH
ZXN0dXJlUmVjb2duaXplclN0YXRlJzogWyciR2VzdHVyZVR5cGVzLmgiJ10sCiAgICAgICAgICdX
ZWJLaXQ6Okdlc3R1cmVUeXBlJzogWyciR2VzdHVyZVR5cGVzLmgiJ10sCiAgICAgICAgICdXZWJL
aXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9yJzogWyciSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMu
aCInXSwKKyAgICAgICAgJ1dlYktpdDo6TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCc6IFsnIk5h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OkxheWVySG9z
dGluZ0NvbnRleHRJRCc6IFsnIkxheWVySG9zdGluZ0NvbnRleHQuaCInXSwKICAgICAgICAgJ1dl
YktpdDo6TGF5ZXJIb3N0aW5nTW9kZSc6IFsnIkxheWVyVHJlZUNvbnRleHQuaCInXSwKICAgICAg
ICAgJ1dlYktpdDo6UGFnZVN0YXRlJzogWyciU2Vzc2lvblN0YXRlLmgiJ10sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9OYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbi5oIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4uaAppbmRleCAzMWUw
NzE1NTk2NmJiN2ZiNmQ3M2FkYmI2M2E3YTc5MzNiODY5YjRhLi4yMWNlNzZhYzNjMDg4NTdlZWIy
ZTAxMjdhZWQzNjdlZTY2MjlkYjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9O
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLmgKQEAgLTI1LDEwICsyNSw1NCBAQAogCiAjcHJhZ21h
IG9uY2UKIAorI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXIuaCIKKyNpbmNsdWRlICJEZWNvZGVyLmgi
CisjaW5jbHVkZSAiRW5jb2Rlci5oIgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogZW51bSBjbGFz
cyBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiA6IGJvb2wgeyBObywgWWVzIH07CiBlbnVtIGNs
YXNzIExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgOiBib29sIHsgTm8sIFllcyB9OwogCisjaWYg
UExBVEZPUk0oQ09DT0EpCitzdHJ1Y3QgQXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEgewor
CisgICAgdm9pZCBjbGVhckFwcEJvdW5kTmF2aWdhdGlvbkRhdGFUZXN0aW5nKCkKKyAgICB7Cisg
ICAgICAgIGhhc0xvYWRlZEFwcEJvdW5kUmVxdWVzdFRlc3RpbmcgPSBmYWxzZTsKKyAgICAgICAg
aGFzTG9hZGVkTm9uQXBwQm91bmRSZXF1ZXN0VGVzdGluZyA9IGZhbHNlOworICAgIH0KKyAgICAK
KyAgICB2b2lkIHVwZGF0ZUFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhKGJvb2wgcmVxdWVz
dElzQXBwQm91bmQpCisgICAgeworICAgICAgICByZXF1ZXN0SXNBcHBCb3VuZCA/IGhhc0xvYWRl
ZEFwcEJvdW5kUmVxdWVzdFRlc3RpbmcgPSB0cnVlIDogaGFzTG9hZGVkTm9uQXBwQm91bmRSZXF1
ZXN0VGVzdGluZyA9IHRydWU7CisgICAgfQorCisgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgZW5jb2RlciA8PCBoYXNMb2FkZWRBcHBC
b3VuZFJlcXVlc3RUZXN0aW5nOworICAgICAgICBlbmNvZGVyIDw8IGhhc0xvYWRlZE5vbkFwcEJv
dW5kUmVxdWVzdFRlc3Rpbmc7CisgICAgfQorCisgICAgc3RhdGljIE9wdGlvbmFsPEFwcEJvdW5k
TmF2aWdhdGlvblRlc3RpbmdEYXRhPiBkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQorICAg
IHsKKyAgICAgICAgT3B0aW9uYWw8Ym9vbD4gaGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0VGVzdGlu
ZzsKKyAgICAgICAgZGVjb2RlciA+PiBoYXNMb2FkZWRBcHBCb3VuZFJlcXVlc3RUZXN0aW5nOwor
ICAgICAgICBpZiAoIWhhc0xvYWRlZEFwcEJvdW5kUmVxdWVzdFRlc3RpbmcpCisgICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIE9wdGlvbmFsPGJvb2w+IGhhc0xvYWRl
ZE5vbkFwcEJvdW5kUmVxdWVzdFRlc3Rpbmc7CisgICAgICAgIGRlY29kZXIgPj4gaGFzTG9hZGVk
Tm9uQXBwQm91bmRSZXF1ZXN0VGVzdGluZzsKKyAgICAgICAgaWYgKCFoYXNMb2FkZWROb25BcHBC
b3VuZFJlcXVlc3RUZXN0aW5nKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwor
ICAgICAgICByZXR1cm4ge3sgV1RGTW92ZSgqaGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0VGVzdGlu
ZyksIFdURk1vdmUoKmhhc0xvYWRlZE5vbkFwcEJvdW5kUmVxdWVzdFRlc3RpbmcpIH19OworICAg
IH0KKworICAgIGJvb2wgaGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0VGVzdGluZyB7IGZhbHNlIH07
CisgICAgYm9vbCBoYXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3RUZXN0aW5nIHsgZmFsc2UgfTsK
K307CisjZW5kaWYKKwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmcuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5oCmluZGV4IDg4NGQ4
YzA4ODVmYTdhMzYzYjJhZDgwMjU0MjJjMzNmNzE0NWVhYTEuLjRiNzdkZTVkZmFlMTRiYzUxY2Q1
MjJlY2EwMmEzZTMwZjY3NDM2ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5oCkBAIC0z
Miw2ICszMiwxMSBAQCB0eXBlZGVmIGVudW0gewogICAgIFdLV2ViVmlld0F1ZGlvUm91dGluZ0Fy
Yml0cmF0aW9uU3RhdHVzQWN0aXZlLAogfSBXS1dlYlZpZXdBdWRpb1JvdXRpbmdBcmJpdHJhdGlv
blN0YXR1czsKIAorc3RydWN0IFdLQXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEgeworICAg
IEJPT0wgaGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0VGVzdGluZzsKKyAgICBCT09MIGhhc0xvYWRl
ZE5vbkFwcEJvdW5kUmVxdWVzdFRlc3Rpbmc7Cit9OworCiBAaW50ZXJmYWNlIFdLV2ViVmlldyAo
V0tUZXN0aW5nKQogCiAtICh2b2lkKV9zZXRQYWdlU2NhbGU6KENHRmxvYXQpc2NhbGUgd2l0aE9y
aWdpbjooQ0dQb2ludClvcmlnaW47CkBAIC04OCw1ICs5Myw3IEBAIHR5cGVkZWYgZW51bSB7CiAt
ICh2b2lkKV9zZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uUmVwb3J0VVJMRm9y
VGVzdGluZzooTlNVUkwgKil1cmwgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikodm9pZCkpY29t
cGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdL
X0lPU19UQkEpKTsKIAogLSAodm9pZClfbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDoodm9pZChe
KShCT09MKSljb21wbGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQpX2FwcEJvdW5kTmF2aWdhdGlvbkRh
dGE6KHZvaWQoXikoV0tBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSBkYXRhKSljb21wbGV0
aW9uSGFuZGxlcjsKKy0gKHZvaWQpX2NsZWFyQXBwQm91bmROYXZpZ2F0aW9uRGF0YToodm9pZChe
KSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcjsKIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1Rlc3RpbmcubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3VGVzdGluZy5tbQppbmRleCA3Y2MzMGVh
NDE0MmEzNTAwMDNiZTFmYzQ5MzM4ZDU0YjBhYmQ1OTgzLi5jOTMwZGM4ZjBhODUwMTgxZWFiZjY1
M2YwYWRlZjcwODUzNTJjM2NlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3VGVzdGluZy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3VGVzdGluZy5tbQpAQCAtMzMzLDQgKzMzMywxOCBAQAogICAg
IH0pOwogfQogCistICh2b2lkKV9hcHBCb3VuZE5hdmlnYXRpb25EYXRhOih2b2lkKF4pKFdLQXBw
Qm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEgZGF0YSkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAg
ICBfcGFnZS0+YXBwQm91bmROYXZpZ2F0aW9uRGF0YShbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtl
QmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoYXV0byYmIGFwcEJvdW5kRGF0YSkgeworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcih7IGFwcEJvdW5kRGF0YS5oYXNMb2FkZWRBcHBCb3VuZFJl
cXVlc3RUZXN0aW5nLCBhcHBCb3VuZERhdGEuaGFzTG9hZGVkTm9uQXBwQm91bmRSZXF1ZXN0VGVz
dGluZyB9KTsKKyAgICB9KTsKK30KKworLSAodm9pZClfY2xlYXJBcHBCb3VuZE5hdmlnYXRpb25E
YXRhOih2b2lkKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgX3BhZ2UtPmNsZWFy
QXBwQm91bmROYXZpZ2F0aW9uRGF0YShbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIo
Y29tcGxldGlvbkhhbmRsZXIpXSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAg
fSk7Cit9CisKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmlu
ZGV4IDQ2NGJkYTkxYWFmOGQwMTUzZjFlN2U3ZTkxOWMxNDFkNjcwOWI3MzEuLmVkZTM5MzEzMTg0
ZjVlNTVkM2U2MTk3NWFlNmVlZWMyZmZiZTIwODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcApAQCAtMTAzODEsNiArMTAzODEsMTggQEAgU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlQXJyYXkgV2ViUGFnZVByb3h5OjpjcmVhdGVOZXR3b3JrRXh0ZW5zaW9uc1NhbmRi
b3hFeHRlbnMKIH0KICNlbmRpZgogCisjaWYgUExBVEZPUk0oQ09DT0EpCit2b2lkIFdlYlBhZ2VQ
cm94eTo6YXBwQm91bmROYXZpZ2F0aW9uRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFwcEJv
dW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAg
IHdlYnNpdGVEYXRhU3RvcmUoKS5uZXR3b3JrUHJvY2VzcygpLnNlbmRXaXRoQXN5bmNSZXBseShN
ZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkFwcEJvdW5kTmF2aWdhdGlvbkRhdGEobV93ZWJzaXRl
RGF0YVN0b3JlLT5zZXNzaW9uSUQoKSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30K
Kwordm9pZCBXZWJQYWdlUHJveHk6OmNsZWFyQXBwQm91bmROYXZpZ2F0aW9uRGF0YShDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgd2Vic2l0ZURh
dGFTdG9yZSgpLm5ldHdvcmtQcm9jZXNzKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpO
ZXR3b3JrUHJvY2Vzczo6Q2xlYXJBcHBCb3VuZE5hdmlnYXRpb25EYXRhKG1fd2Vic2l0ZURhdGFT
dG9yZS0+c2Vzc2lvbklEKCkpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisjZW5k
aWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBSRUxFQVNFX0xPR19JRl9BTExP
V0VECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGEwY2ViZDlmYjQ1
ZTc2ZjUxOTU0NTNjYjQ5NWNhM2NlMDM4NGE3MGYuLjlhNDIyOTJkNmIyMjI0MGM5NmQwNDZlZjZi
NTgzNjNlMjIyNWVhZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBA
IC0zMDYsNiArMzA2LDcgQEAgdHlwZWRlZiBIV05EIFBsYXRmb3JtVmlld1dpZGdldDsKICNlbmRp
ZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKK3N0cnVjdCBBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5n
RGF0YTsKIGNsYXNzIEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yUHJveHk7CiBjbGFzcyBE
cmF3aW5nQXJlYVByb3h5OwogY2xhc3MgR2FtZXBhZERhdGE7CkBAIC0xODU4LDYgKzE4NTksOCBA
QCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBzZXRMYXN0TmF2aWdhdGlv
bldhc0FwcEJvdW5kKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogICAgIHZvaWQgbGFzdE5h
dmlnYXRpb25XYXNBcHBCb3VuZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAg
ICB2b2lkIGFwcEJvdW5kTmF2aWdhdGlvbkRhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBcHBC
b3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSYmKT4mJik7CisgICAgdm9pZCBjbGVhckFwcEJvdW5k
TmF2aWdhdGlvbkRhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICNlbmRpZgogCiBw
cml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
TG9hZGVyU3RyYXRlZ3kuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
TG9hZGVyU3RyYXRlZ3kuY3BwCmluZGV4IGNjMjIwM2ZlOGM5N2E1OTdhZGMzMDY5YjgwYTc4Nzg4
ZmJkNWUzMDguLjIyY2UwOTI1OThmMTBkYTZjOGMxZTA0NjM3ZjYyMDE5MWMwOWVlNjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJh
dGVneS5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCBXZWJMb2FkZXJTdHJhdGVneTo6fldlYkxvYWRl
clN0cmF0ZWd5KCkKIAogdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6bG9hZFJlc291cmNlKEZyYW1l
JiBmcmFtZSwgQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1
ZXN0LCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKLSAgICBpZiAocmVzb3VyY2UudHlwZSgpICE9IENhY2hlZFJlc291cmNlOjpUeXBlOjpN
YWluUmVzb3VyY2UpIHsKKyAgICBpZiAocmVzb3VyY2UudHlwZSgpICE9IENhY2hlZFJlc291cmNl
OjpUeXBlOjpNYWluUmVzb3VyY2UgfHwgIWZyYW1lLmlzTWFpbkZyYW1lKCkpIHsKICAgICAgICAg
aWYgKGF1dG8qIGRvY3VtZW50ID0gZnJhbWUubWFpbkZyYW1lKCkuZG9jdW1lbnQoKSkgewogICAg
ICAgICAgICAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LT5sb2FkZXIoKSkKICAgICAgICAgICAg
ICAgICByZXF1ZXN0LnNldElzQXBwQm91bmQoZG9jdW1lbnQtPmxvYWRlcigpLT5sYXN0TmF2aWdh
dGlvbldhc0FwcEJvdW5kKCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMv
Q2hhbmdlTG9nCmluZGV4IDc0ZTZlN2Y5NWNiYWQ0ODYwYzUxMWZjZjQ3ZDI4NjZjYjk3ODA5NDYu
LjQwZDBlMDcwMWQ3YTBiYWMyNWViN2E3NDI5NTJlMzdkZWNiZWRjNjIgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAy
MS0wMi0yMyAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KKworICAg
ICAgICBBcHAtYm91bmQgcmVxdWVzdCBwYXJhbWV0ZXIgc2hvdWxkIGJlIHBhc3NlZCB0byBtYWlu
IHJlc291cmNlIHJlcXVlc3RzIG5vdCB0aGUgbWFpbiBmcmFtZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyMjQxCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS83NDU2MDk2Nj4gCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkcyBtb3JlIHJvYnVzdCB0ZXN0aW5nIHRvIHJlcG9ydCB3aGVuIGFwcEJvdW5k
L25vbkFwcEJvdW5kIHJlcXVlc3RzCisgICAgICAgIGxvYWQgaW4gdGhlIG5ldHdvcmsgcHJvY2Vz
cy4gVGhpcyB0ZXN0cyBub3Qgb25seSB0aGF0IHRoZSBtYWluIGZyYW1l4oCZcworICAgICAgICBk
b2N1bWVudCBsb2FkZXIgaXMgcHJvcGVybHkgc2V0LCBidXQgYWxzbyB0aGF0IGFsbCBsb2FkcyBp
bml0aWF0ZWQgZnJvbQorICAgICAgICBhcHAtYm91bmQgcmVxdWVzdHMgYXJlIGFsc28gYXBwLWJv
dW5kIHRvIGF2b2lkIHJlZ3Jlc3Npb25zIGxpa2UgdGhpcyBpbiB0aGUgZnV0dXJlLgorCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5
Lm1tOgorICAgICAgICBVdGlsaXplIHNvbWUgQ1NQIHRlc3QgcmVzb3VyY2VzIHRoYXQgaGF2ZSB0
aGUgZXhhY3Qgc2V0dXAgbmVlZGVkIHRvCisgICAgICAgIHRlc3QgdGhpcyBmaXguCisKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaDoKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBh
cHBCb3VuZE5hdmlnYXRpb25EYXRhOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgY2xlYXJBcHBC
b3VuZE5hdmlnYXRpb25SZXBvcnRzOl0pOgorCiAyMDIxLTAyLTE5ICBKaWV3ZW4gVGFuICA8amll
d2VuX3RhbkBhcHBsZS5jb20+CiAKICAgICAgICAgUENNOiBSZXF1ZXN0IHNlcnZlciBwdWJsaWMg
a2V5IHRvIGdlbmVyYXRlIHNlY3JldCB0b2tlbgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCmluZGV4
IDczZDBjYzUyNWY0YWZmNmZkMjNkNmJkZTQ1MTYxZjYyODg3OGY1ZDEuLmEyYjNhYmNmMzBlNTQx
YWYxODJlZmNmZjY2NWZlNmVmYmYyNmU1NDkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0KQEAg
LTM3LDYgKzM3LDcgQEAKICNpbXBvcnQgPFdlYktpdC9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oPgog
I2ltcG9ydCA8V2ViS2l0L1dLVVJMU2NoZW1lVGFza1ByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktp
dC9XS1VzZXJDb250ZW50Q29udHJvbGxlclByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dl
YlZpZXdQcml2YXRlRm9yVGVzdGluZy5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2Vic2l0ZURhdGFT
dG9yZVByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tVc2VyQ29udGVudFdvcmxkLmg+CiAj
aW1wb3J0IDxXZWJLaXQvX1dLVXNlclN0eWxlU2hlZXQuaD4KQEAgLTE0MjUsMTkgKzE0MjYsMjgg
QEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBBcHBCb3VuZFJlcXVlc3QpCiAgICAgYXV0byB3
ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dS
ZWN0WmVybyBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKICAgICBOU1N0cmlu
ZyAqdXJsID0gQCJodHRwczovL3dlYmtpdC5vcmciOwogCi0gICAgc3RhdGljIGJvb2wgaXNEb25l
ID0gZmFsc2U7CisgICAgX19ibG9jayBib29sIGlzRG9uZSA9IGZhbHNlOwogICAgIE5TTXV0YWJs
ZVVSTFJlcXVlc3QgKm5vbkFwcEJvdW5kUmVxdWVzdCA9IFtOU011dGFibGVVUkxSZXF1ZXN0IHJl
cXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOnVybF1dOwogICAgIEFQUF9CT1VORF9S
RVFVRVNUX0FERElUSU9OUwogCiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6bm9uQXBwQm91bmRS
ZXF1ZXN0XTsKICAgICBbd2ViVmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07
CiAKLSAgICBbd2ViVmlldyBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kOl4oQk9PTCBpc0FwcEJv
dW5kKSB7CisgICAgW3dlYlZpZXcgX2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ6XihCT09MIGlz
QXBwQm91bmQpIHsKICAgICAgICAgRVhQRUNUX0ZBTFNFKGlzQXBwQm91bmQpOwogICAgICAgICBp
c0RvbmUgPSB0cnVlOwogICAgIH1dOwogCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZp
c0RvbmUpOworICAgIAorICAgIGlzRG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF9hcHBCb3Vu
ZE5hdmlnYXRpb25EYXRhOl4oV0tBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSBkYXRhKSB7
CisgICAgICAgIEVYUEVDVF9GQUxTRShkYXRhLmhhc0xvYWRlZEFwcEJvdW5kUmVxdWVzdFRlc3Rp
bmcpOworICAgICAgICBFWFBFQ1RfVFJVRShkYXRhLmhhc0xvYWRlZE5vbkFwcEJvdW5kUmVxdWVz
dFRlc3RpbmcpOworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogfQogCiBURVNUKEluQXBwQnJvd3NlclByaXZh
Y3ksIEFwcEJvdW5kUmVxdWVzdFdpdGhOYXZpZ2F0aW9uKQpAQCAtMTQ1MywxOCArMTQ2Myw5NyBA
QCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIEFwcEJvdW5kUmVxdWVzdFdpdGhOYXZpZ2F0aW9u
KQogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnN0YXJ0aW5nUmVxdWVzdF07CiAgICAgW3dlYlZp
ZXcgX3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOwogCi0gICAgc3RhdGljIGJvb2wg
aXNEb25lID0gZmFsc2U7CisgICAgX19ibG9jayBib29sIGlzRG9uZSA9IGZhbHNlOworICAgIFt3
ZWJWaWV3IF9sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kOl4oQk9PTCBpc0FwcEJvdW5kKSB7Cisg
ICAgICAgIEVYUEVDVF9UUlVFKGlzQXBwQm91bmQpOworICAgICAgICBpc0RvbmUgPSB0cnVlOwor
ICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworICAgIAor
ICAgIGlzRG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF9hcHBCb3VuZE5hdmlnYXRpb25EYXRh
Ol4oV0tBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSBkYXRhKSB7CisgICAgICAgIEVYUEVD
VF9UUlVFKGRhdGEuaGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0VGVzdGluZyk7CisgICAgICAgIEVY
UEVDVF9GQUxTRShkYXRhLmhhc0xvYWRlZE5vbkFwcEJvdW5kUmVxdWVzdFRlc3RpbmcpOworICAg
ICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZpc0RvbmUpOworICAgIAorICAgIGlzRG9uZSA9IGZhbHNlOwogICAgIE5TTXV0YWJsZVVS
TFJlcXVlc3QgKm5vbkFwcEJvdW5kUmVxdWVzdCA9IFtOU011dGFibGVVUkxSZXF1ZXN0IHJlcXVl
c3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOm5vbkFwcEJvdW5kVVJMXV07CiAgICAgQVBQ
X0JPVU5EX1JFUVVFU1RfQURESVRJT05TCisgICAgCisgICAgaXNEb25lID0gZmFsc2U7CisgICAg
W3dlYlZpZXcgX2NsZWFyQXBwQm91bmROYXZpZ2F0aW9uRGF0YTpeeworICAgICAgICBpc0RvbmUg
PSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUp
OwogCiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6bm9uQXBwQm91bmRSZXF1ZXN0XTsKICAgICBb
d2ViVmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CiAKLSAgICBbd2ViVmll
dyBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kOl4oQk9PTCBpc0FwcEJvdW5kKSB7CisgICAgW3dl
YlZpZXcgX2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ6XihCT09MIGlzQXBwQm91bmQpIHsKICAg
ICAgICAgRVhQRUNUX0ZBTFNFKGlzQXBwQm91bmQpOwogICAgICAgICBpc0RvbmUgPSB0cnVlOwog
ICAgIH1dOwogCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworICAgIAor
ICAgIGlzRG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF9hcHBCb3VuZE5hdmlnYXRpb25EYXRh
Ol4oV0tBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSBkYXRhKSB7CisgICAgICAgIEVYUEVD
VF9GQUxTRShkYXRhLmhhc0xvYWRlZEFwcEJvdW5kUmVxdWVzdFRlc3RpbmcpOworICAgICAgICBF
WFBFQ1RfVFJVRShkYXRhLmhhc0xvYWRlZE5vbkFwcEJvdW5kUmVxdWVzdFRlc3RpbmcpOworICAg
ICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZpc0RvbmUpOwogfQorCitURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIEFwcEJvdW5kUmVx
dWVzdFdpdGhTdWJGcmFtZSkKK3sKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtb
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFtjb25maWd1cmF0aW9u
IF9zZXRPdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeTpAInNjcmlwdC1zcmMgJ25vbmNlLWIn
Il07CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNv
bmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAInBh
Z2Utd2l0aC1jc3AiXTsKKworICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAiTWFpbkZyYW1l
OiBCIl07CisgICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJTdWJmcmFtZTogQiJdOworCisg
ICAgX19ibG9jayBib29sIGlzRG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF9hcHBCb3VuZE5h
dmlnYXRpb25EYXRhOl4oV0tBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSBkYXRhKSB7Cisg
ICAgICAgIEVYUEVDVF9UUlVFKGRhdGEuaGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0VGVzdGluZyk7
CisgICAgICAgIEVYUEVDVF9GQUxTRShkYXRhLmhhc0xvYWRlZE5vbkFwcEJvdW5kUmVxdWVzdFRl
c3RpbmcpOworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworfTsKKworVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5
LCBOb25BcHBCb3VuZFJlcXVlc3RXaXRoU3ViRnJhbWUpCit7CisgICAgYXV0byBjb25maWd1cmF0
aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAg
ICBbY29uZmlndXJhdGlvbiBfc2V0T3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3k6QCJzY3Jp
cHQtc3JjICdub25jZS1iJyJdOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RX
S1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkg
Y29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgTlNNdXRhYmxlVVJMUmVx
dWVzdCAqbm9uQXBwQm91bmRSZXF1ZXN0ID0gW05TTXV0YWJsZVVSTFJlcXVlc3QgcmVxdWVzdFdp
dGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInBhZ2Utd2l0aC1j
c3AiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJl
c291cmNlcyJdXTsKKyAgICBBUFBfQk9VTkRfUkVRVUVTVF9BRERJVElPTlMKKworICAgIFt3ZWJW
aWV3IGxvYWRSZXF1ZXN0Om5vbkFwcEJvdW5kUmVxdWVzdF07CisKKyAgICBbd2ViVmlldyB3YWl0
Rm9yTWVzc2FnZTpAIk1haW5GcmFtZTogQiJdOworICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdl
OkAiU3ViZnJhbWU6IEIiXTsKKworICAgIF9fYmxvY2sgYm9vbCBpc0RvbmUgPSBmYWxzZTsKKyAg
ICBbd2ViVmlldyBfYXBwQm91bmROYXZpZ2F0aW9uRGF0YTogXihXS0FwcEJvdW5kTmF2aWdhdGlv
blRlc3RpbmdEYXRhIGRhdGEpIHsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKGRhdGEuaGFzTG9hZGVk
QXBwQm91bmRSZXF1ZXN0VGVzdGluZyk7CisgICAgICAgIEVYUEVDVF9UUlVFKGRhdGEuaGFzTG9h
ZGVkTm9uQXBwQm91bmRSZXF1ZXN0VGVzdGluZyk7CisgICAgICAgIGlzRG9uZSA9IHRydWU7Cisg
ICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7Cit9OworCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmll
dy5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3LmgKaW5kZXggYzFk
YzA4Y2ZhNGNmMDYxMzM1MjQ1N2JmMTFhOGVlMzA2MTA3YWU4YS4uMjJhNDgyNmM0MTJiMjk0OTNl
NWMzNGRkNGFlYzgzNDA3ZjFmOTMyOCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9j
b2NvYS9UZXN0V0tXZWJWaWV3LmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0
V0tXZWJWaWV3LmgKQEAgLTY3LDcgKzY3LDYgQEAKIC0gKGlkKW9iamVjdEJ5RXZhbHVhdGluZ0ph
dmFTY3JpcHQ6KE5TU3RyaW5nICopc2NyaXB0OwogLSAoaWQpb2JqZWN0QnlDYWxsaW5nQXN5bmNG
dW5jdGlvbjooTlNTdHJpbmcgKilzY3JpcHQgd2l0aEFyZ3VtZW50czooTlNEaWN0aW9uYXJ5ICop
YXJndW1lbnRzIGVycm9yOihOU0Vycm9yICoqKWVycm9yT3V0OwogLSAodW5zaWduZWQpd2FpdFVu
dGlsQ2xpZW50V2lkdGhJczoodW5zaWduZWQpZXhwZWN0ZWRDbGllbnRXaWR0aDsKLS0gKHZvaWQp
bGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDoodm9pZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxl
cjsKIEBlbmQKIAogQGludGVyZmFjZSBUZXN0TWVzc2FnZUhhbmRsZXIgOiBOU09iamVjdCA8V0tT
Y3JpcHRNZXNzYWdlSGFuZGxlcj4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29j
b2EvVGVzdFdLV2ViVmlldy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2Vi
Vmlldy5tbQppbmRleCA4ZDk2NzE2M2I0NmRhNzkxOTkzNGU2NDkwNjQwM2NkMjMxYjJlNjBjLi4z
NGE0NjQwOWMxMjJlYzdmYTJhNjg2ZWJhZGY5NTExOWE4YmE1MmEyIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0KKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCkBAIC0yMzksMTAgKzIzOSw2IEBAIHN0YXRp
YyBOU1N0cmluZyAqb3ZlcnJpZGVCdW5kbGVJZGVudGlmaWVyKGlkLCBTRUwpCiAgICAgcmV0dXJu
IGNsaWVudFdpZHRoOwogfQogCi0tICh2b2lkKWxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ6KHZv
aWQoXikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIKLXsKLSAgICBbc2VsZiBfbGFzdE5hdmlnYXRp
b25XYXNBcHBCb3VuZDpjb21wbGV0aW9uSGFuZGxlcl07Ci19CiBAZW5kCiAKIEBpbXBsZW1lbnRh
dGlvbiBUZXN0TWVzc2FnZUhhbmRsZXIgewo=
</data>
<flag name="commit-queue"
          id="440147"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421333</attachid>
            <date>2021-02-23 11:10:21 -0800</date>
            <delta_ts>2021-02-24 11:39:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222241-20210223111020.patch</filename>
            <type>text/plain</type>
            <size>23844</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDdjMDJiMWVhMmViNDRlNzE5
ZDgyNGY0ODU0Y2YwZDhiNjBiMzNmYWEuLjk5ODQ0MGE5NTAwYmViZmQ4MWVjY2ZmMDBiYjI5YjYx
MmM1ZTZhNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMgQEAKKzIwMjEtMDItMjMgIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgQXBwLWJvdW5kIHJl
cXVlc3QgcGFyYW1ldGVyIHNob3VsZCBiZSBwYXNzZWQgdG8gbWFpbiByZXNvdXJjZSByZXF1ZXN0
cyBub3QgdGhlIG1haW4gZnJhbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyMjI0MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzQ1NjA5NjY+IAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNldCB0aGUg
aXNBcHBCb3VuZCBwYXJhbWV0ZXIgb24gdGhlIHJlc291cmNlIHJlcXVlc3QgaWYgaXQgaXMgYSBt
YWluCisgICAgICAgIHJlc291cmNlIG5vdCBvbiB0aGUgbWFpbiBmcmFtZS4gT3RoZXJ3aXNlIG1v
c3RseSBjaGFuZ2VzIHRvIGFkZCBiZXR0ZXIgdGVzdGluZy4KKworICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6OmFwcEJvdW5kTmF2aWdhdGlvbkRhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6Y2xlYXJBcHBCb3VuZE5hdmlnYXRpb25EYXRhKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNz
aW9uLmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjphcHBCb3VuZE5hdmlnYXRp
b25UZXN0aW5nRGF0YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0Rh
dGFUYXNrQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0NvY29hOjpO
ZXR3b3JrRGF0YVRhc2tDb2NvYSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMu
cHk6CisgICAgICAgICogU2hhcmVkL05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLmg6CisgICAg
ICAgIChXZWJLaXQ6OkFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhOjpjbGVhckFwcEJvdW5k
TmF2aWdhdGlvbkRhdGFUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6QXBwQm91bmROYXZpZ2F0
aW9uVGVzdGluZ0RhdGE6OnVwZGF0ZUFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhKToKKyAg
ICAgICAgKFdlYktpdDo6QXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGE6OmVuY29kZSBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6OkFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhOjpkZWNv
ZGUpOgorICAgICAgICBTdHJ1Y3QgdG8gcmV0dXJuIGRhdGEgZm9yIHRlc3RzLgorCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3VGVzdGluZy5tbToKKyAgICAgICAg
KC1bV0tXZWJWaWV3IF9hcHBCb3VuZE5hdmlnYXRpb25EYXRhOl0pOgorICAgICAgICAoLVtXS1dl
YlZpZXcgX2NsZWFyQXBwQm91bmROYXZpZ2F0aW9uRGF0YTpdKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjphcHBC
b3VuZE5hdmlnYXRpb25EYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjbGVh
ckFwcEJvdW5kTmF2aWdhdGlvbkRhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6bG9hZFJlc291cmNlKToKKyAg
ICAgICAgVGhlIGZpeC4KKwogMjAyMS0wMi0xOSAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hl
bmV5QGFwcGxlLmNvbT4KIAogICAgICAgICBDcmVhdGUgU1FMaXRlIHNrZWxldG9uIGltcGxlbWVu
dGF0aW9uIGZvciBQQ00gZnJhdWQgcHJldmVudGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCA2ODMwMTVkMTY5YThjMjk5MjMzMGZm
NDYwODU0Y2M2YzMxNjI4MzZjLi42NTEwOGI5OTk1OGVhYWI1MGRjOWFjMzk3MWE0NDkwYjllN2I2
OWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcApAQCAtMjc3MCw0ICsyNzcwLDIzIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldENPUlNE
aXNhYmxpbmdQYXR0ZXJucyhQYWdlSWRlbnRpZmllciBwYWdlSWRlbnRpZmllciwgVmVjCiAgICAg
bV9leHRlbnNpb25DT1JTRGlzYWJsaW5nUGF0dGVybnMuc2V0KHBhZ2VJZGVudGlmaWVyLCBXVEZN
b3ZlKHBhcnNlZFBhdHRlcm5zKSk7CiB9CiAKKyNpZiBQTEFURk9STShDT0NPQSkKK3ZvaWQgTmV0
d29ya1Byb2Nlc3M6OmFwcEJvdW5kTmF2aWdhdGlvbkRhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRh
JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lv
biA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoeyBuZXR3b3JrU2Vzc2lvbi0+YXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEo
KS5oYXNMb2FkZWRBcHBCb3VuZFJlcXVlc3RUZXN0aW5nLCBuZXR3b3JrU2Vzc2lvbi0+YXBwQm91
bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEoKS5oYXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3RUZXN0
aW5nIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGNvbXBsZXRpb25IYW5kbGVyKHsg
fSk7Cit9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmNsZWFyQXBwQm91bmROYXZpZ2F0aW9uRGF0
YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlz
LT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKQorICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+YXBw
Qm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEoKS5jbGVhckFwcEJvdW5kTmF2aWdhdGlvbkRhdGFU
ZXN0aW5nKCk7CisKKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOworfQorI2VuZGlmCisKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5oCmluZGV4IGVhMmRkN2Y1MzhjMDc0NjRiODY0YTAxYzVlMzhjY2VkYmFlYThjNzIu
LjA4MTAyZDc2ZGQ4OWExNWNmMjU4YWZlNDdjMTIxNmVlZTRjMjMyNmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTM3Nyw2ICszNzcsMTEg
QEAgcHVibGljOgogICAgIGJvb2wgc2hvdWxkRGlzYWJsZUNPUlNGb3JSZXF1ZXN0VG8oV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFVSTCYpIGNvbnN0OwogICAgIHZvaWQgc2V0Q09SU0Rp
c2FibGluZ1BhdHRlcm5zKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBWZWN0b3I8U3RyaW5nPiYm
KTsKIAorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZvaWQgYXBwQm91bmROYXZpZ2F0aW9uRGF0
YShQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBcHBCb3VuZE5hdmlnYXRp
b25UZXN0aW5nRGF0YSYmKT4mJik7CisgICAgdm9pZCBjbGVhckFwcEJvdW5kTmF2aWdhdGlvbkRh
dGEoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisjZW5kaWYK
KwogcHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKGNv
bnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmlu
ZGV4IDg0MTFiYmU5ZDVlYTZmYmUzZWJjNGVkMGZhNTQ5ZThmNGE3OGNiYWYuLjM1YzI3ZmQ4MjMx
YjkyYjU5Zjk1N2RiZDViODBiNTQ4NWYxODY5OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMTg5LDQg
KzE4OSw5IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICNl
bmRpZgogICAgIFVwZGF0ZUJ1bmRsZUlkZW50aWZpZXIoU3RyaW5nIGJ1bmRsZUlkZW50aWZpZXIp
IC0+ICgpIEFzeW5jCiAgICAgQ2xlYXJCdW5kbGVJZGVudGlmaWVyKCkgLT4gKCkgQXN5bmMKKwor
I2lmIFBMQVRGT1JNKENPQ09BKQorICAgIEFwcEJvdW5kTmF2aWdhdGlvbkRhdGEoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklEKSAtPiAoc3RydWN0IFdlYktpdDo6QXBwQm91bmROYXZpZ2F0aW9uVGVz
dGluZ0RhdGEgZGF0YSkgQXN5bmMKKyAgICBDbGVhckFwcEJvdW5kTmF2aWdhdGlvbkRhdGEoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBBc3luYworI2VuZGlmCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKaW5kZXggZmYyMWYyOGYzYjdk
YWZmNGJmNGU4YWE0Yzc0NGEyODlmZWYwZGY4Yi4uMmU4MDg3ZGU4M2M4ZDk4MjBjNmViYzkyNmRm
YjEyMDUwODRjYzdhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Nlc3Npb24uaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUg
Ik5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLmgiCiAjaW5jbHVkZSAiUHJlZmV0Y2hDYWNoZS5o
IgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2Vy
U29mdFVwZGF0ZUxvYWRlci5oIgpAQCAtMTU2LDYgKzE1NywxMCBAQCBwdWJsaWM6CiAgICAgTmV0
d29ya0xvYWRTY2hlZHVsZXImIG5ldHdvcmtMb2FkU2NoZWR1bGVyKCk7CiAgICAgUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRNYW5hZ2VyJiBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpIHsgcmV0dXJu
ICptX3ByaXZhdGVDbGlja01lYXN1cmVtZW50OyB9CiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyAg
ICBBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSYgYXBwQm91bmROYXZpZ2F0aW9uVGVzdGlu
Z0RhdGEoKSB7IHJldHVybiBtX2FwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhOyB9CisjZW5k
aWYKKyAgICAKIHByb3RlY3RlZDoKICAgICBOZXR3b3JrU2Vzc2lvbihOZXR3b3JrUHJvY2VzcyYs
IGNvbnN0IE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAKQEAgLTIwMCw2ICsy
MDUsMTAgQEAgcHJvdGVjdGVkOgogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBIYXNo
U2V0PHN0ZDo6dW5pcXVlX3B0cjxTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcj4+IG1fc29m
dFVwZGF0ZUxvYWRlcnM7CiAjZW5kaWYKKyAgICAKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBB
cHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSBtX2FwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdE
YXRhOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0g
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29h
Lm1tCmluZGV4IGQ1OTNiNDJiNTE4Y2E0YzNmYzU3MzQzNzEzYWM1MGIzZGI1YzA3ZDIuLmFlYzc2
NGNiZTQyY2I4ZWJmNDlhZmU3YTA3ZDlhNjQwMDQ0MDljNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5t
bQpAQCAtMzM5LDYgKzMzOSw4IEBAIE5ldHdvcmtEYXRhVGFza0NvY29hOjpOZXR3b3JrRGF0YVRh
c2tDb2NvYShOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgTmV0d29ya0RhdGFUCiAKICAgICBORVRX
T1JLX0RBVEFfVEFTS19DT0NPQV9BRERJVElPTlMKIAorICAgIG1fc2Vzc2lvbi0+YXBwQm91bmRO
YXZpZ2F0aW9uVGVzdGluZ0RhdGEoKS51cGRhdGVBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0
YShyZXF1ZXN0LmlzQXBwQm91bmQoKSk7CisKICAgICBhcHBseVNuaWZmaW5nUG9saWNpZXNBbmRC
aW5kUmVxdWVzdFRvSW5mZXJmYWNlSWZOZWVkZWQobnNSZXF1ZXN0LCBzaG91bGRDb250ZW50U25p
ZmYgPT0gV2ViQ29yZTo6Q29udGVudFNuaWZmaW5nUG9saWN5OjpTbmlmZkNvbnRlbnQgJiYgIXVy
bC5pc0xvY2FsRmlsZSgpLCBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlmZiA9PSBXZWJDb3JlOjpD
b250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeTo6U25pZmYpOwogCiAgICAgbV90YXNrID0gW21f
c2Vzc2lvbldyYXBwZXItPnNlc3Npb24gZGF0YVRhc2tXaXRoUmVxdWVzdDpuc1JlcXVlc3RdOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggZDU0MzAyMjc1M2Fk
ZjMxOTM2MjQwY2YyYTQ4ZjUxYjcyMzlkNWVjNS4uN2ExZmQ1OWMyYzM5ZTRkMGFkZjE3YjQ2YTQx
MWQ0ZWE1ZDJhMmE0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9t
ZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5
CkBAIC03NDIsOCArNzQyLDggQEAgZGVmIGhlYWRlcnNfZm9yX3R5cGUodHlwZSk6CiAgICAgICAg
ICdXZWJDb3JlOjpXaWxsQ29udGludWVMb2FkaW5nJzogWyc8V2ViQ29yZS9GcmFtZUxvYWRlclR5
cGVzLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpTZWxlY3Rpb25SZWN0JzogWyciRWRpdG9yU3Rh
dGUuaCInXSwKICAgICAgICAgJ1dlYktpdDo6QWN0aXZpdHlTdGF0ZUNoYW5nZUlEJzogWyciRHJh
d2luZ0FyZWFJbmZvLmgiJ10sCisgICAgICAgICdXZWJLaXQ6OkFwcEJvdW5kTmF2aWdhdGlvblRl
c3RpbmdEYXRhJzogWyciTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4uaCInXSwKICAgICAgICAg
J1dlYktpdDo6QWxsb3dPdmVyd3JpdGUnOiBbJyJEb3dubG9hZElELmgiJ10sCi0gICAgICAgICdX
ZWJLaXQ6Okxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQnOiBbJyJOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbi5oIiddLAogICAgICAgICAnV2ViS2l0OjpCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUn
OiBbJyJTZXNzaW9uU3RhdGUuaCInXSwKICAgICAgICAgJ1dlYktpdDo6Q2FsbERvd25sb2FkRGlk
U3RhcnQnOiBbJyJEb3dubG9hZE1hbmFnZXIuaCInXSwKICAgICAgICAgJ1dlYktpdDo6Q29udGVu
dFdvcmxkSWRlbnRpZmllcic6IFsnIkNvbnRlbnRXb3JsZFNoYXJlZC5oIiddLApAQCAtNzUyLDYg
Kzc1Miw3IEBAIGRlZiBoZWFkZXJzX2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAnV2ViS2l0OjpH
ZXN0dXJlUmVjb2duaXplclN0YXRlJzogWyciR2VzdHVyZVR5cGVzLmgiJ10sCiAgICAgICAgICdX
ZWJLaXQ6Okdlc3R1cmVUeXBlJzogWyciR2VzdHVyZVR5cGVzLmgiJ10sCiAgICAgICAgICdXZWJL
aXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9yJzogWyciSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMu
aCInXSwKKyAgICAgICAgJ1dlYktpdDo6TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCc6IFsnIk5h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OkxheWVySG9z
dGluZ0NvbnRleHRJRCc6IFsnIkxheWVySG9zdGluZ0NvbnRleHQuaCInXSwKICAgICAgICAgJ1dl
YktpdDo6TGF5ZXJIb3N0aW5nTW9kZSc6IFsnIkxheWVyVHJlZUNvbnRleHQuaCInXSwKICAgICAg
ICAgJ1dlYktpdDo6UGFnZVN0YXRlJzogWyciU2Vzc2lvblN0YXRlLmgiJ10sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9OYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbi5oIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4uaAppbmRleCAzMWUw
NzE1NTk2NmJiN2ZiNmQ3M2FkYmI2M2E3YTc5MzNiODY5YjRhLi4yMWNlNzZhYzNjMDg4NTdlZWIy
ZTAxMjdhZWQzNjdlZTY2MjlkYjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9O
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLmgKQEAgLTI1LDEwICsyNSw1NCBAQAogCiAjcHJhZ21h
IG9uY2UKIAorI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXIuaCIKKyNpbmNsdWRlICJEZWNvZGVyLmgi
CisjaW5jbHVkZSAiRW5jb2Rlci5oIgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogZW51bSBjbGFz
cyBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiA6IGJvb2wgeyBObywgWWVzIH07CiBlbnVtIGNs
YXNzIExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgOiBib29sIHsgTm8sIFllcyB9OwogCisjaWYg
UExBVEZPUk0oQ09DT0EpCitzdHJ1Y3QgQXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEgewor
CisgICAgdm9pZCBjbGVhckFwcEJvdW5kTmF2aWdhdGlvbkRhdGFUZXN0aW5nKCkKKyAgICB7Cisg
ICAgICAgIGhhc0xvYWRlZEFwcEJvdW5kUmVxdWVzdFRlc3RpbmcgPSBmYWxzZTsKKyAgICAgICAg
aGFzTG9hZGVkTm9uQXBwQm91bmRSZXF1ZXN0VGVzdGluZyA9IGZhbHNlOworICAgIH0KKyAgICAK
KyAgICB2b2lkIHVwZGF0ZUFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhKGJvb2wgcmVxdWVz
dElzQXBwQm91bmQpCisgICAgeworICAgICAgICByZXF1ZXN0SXNBcHBCb3VuZCA/IGhhc0xvYWRl
ZEFwcEJvdW5kUmVxdWVzdFRlc3RpbmcgPSB0cnVlIDogaGFzTG9hZGVkTm9uQXBwQm91bmRSZXF1
ZXN0VGVzdGluZyA9IHRydWU7CisgICAgfQorCisgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgZW5jb2RlciA8PCBoYXNMb2FkZWRBcHBC
b3VuZFJlcXVlc3RUZXN0aW5nOworICAgICAgICBlbmNvZGVyIDw8IGhhc0xvYWRlZE5vbkFwcEJv
dW5kUmVxdWVzdFRlc3Rpbmc7CisgICAgfQorCisgICAgc3RhdGljIE9wdGlvbmFsPEFwcEJvdW5k
TmF2aWdhdGlvblRlc3RpbmdEYXRhPiBkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQorICAg
IHsKKyAgICAgICAgT3B0aW9uYWw8Ym9vbD4gaGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0VGVzdGlu
ZzsKKyAgICAgICAgZGVjb2RlciA+PiBoYXNMb2FkZWRBcHBCb3VuZFJlcXVlc3RUZXN0aW5nOwor
ICAgICAgICBpZiAoIWhhc0xvYWRlZEFwcEJvdW5kUmVxdWVzdFRlc3RpbmcpCisgICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIE9wdGlvbmFsPGJvb2w+IGhhc0xvYWRl
ZE5vbkFwcEJvdW5kUmVxdWVzdFRlc3Rpbmc7CisgICAgICAgIGRlY29kZXIgPj4gaGFzTG9hZGVk
Tm9uQXBwQm91bmRSZXF1ZXN0VGVzdGluZzsKKyAgICAgICAgaWYgKCFoYXNMb2FkZWROb25BcHBC
b3VuZFJlcXVlc3RUZXN0aW5nKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwor
ICAgICAgICByZXR1cm4ge3sgV1RGTW92ZSgqaGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0VGVzdGlu
ZyksIFdURk1vdmUoKmhhc0xvYWRlZE5vbkFwcEJvdW5kUmVxdWVzdFRlc3RpbmcpIH19OworICAg
IH0KKworICAgIGJvb2wgaGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0VGVzdGluZyB7IGZhbHNlIH07
CisgICAgYm9vbCBoYXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3RUZXN0aW5nIHsgZmFsc2UgfTsK
K307CisjZW5kaWYKKwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmcuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5oCmluZGV4IDg4NGQ4
YzA4ODVmYTdhMzYzYjJhZDgwMjU0MjJjMzNmNzE0NWVhYTEuLjYyZTQ2NzE0NGU5MTk0ZWIwYTY4
MmEwOGEyODRkNTk1Zjk1ZTNkOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5oCkBAIC0z
Miw2ICszMiwxMSBAQCB0eXBlZGVmIGVudW0gewogICAgIFdLV2ViVmlld0F1ZGlvUm91dGluZ0Fy
Yml0cmF0aW9uU3RhdHVzQWN0aXZlLAogfSBXS1dlYlZpZXdBdWRpb1JvdXRpbmdBcmJpdHJhdGlv
blN0YXR1czsKIAorc3RydWN0IFdLQXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEgeworICAg
IEJPT0wgaGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0VGVzdGluZzsKKyAgICBCT09MIGhhc0xvYWRl
ZE5vbkFwcEJvdW5kUmVxdWVzdFRlc3Rpbmc7Cit9OworCiBAaW50ZXJmYWNlIFdLV2ViVmlldyAo
V0tUZXN0aW5nKQogCiAtICh2b2lkKV9zZXRQYWdlU2NhbGU6KENHRmxvYXQpc2NhbGUgd2l0aE9y
aWdpbjooQ0dQb2ludClvcmlnaW47CkBAIC04OCw1ICs5Myw3IEBAIHR5cGVkZWYgZW51bSB7CiAt
ICh2b2lkKV9zZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uUmVwb3J0VVJMRm9y
VGVzdGluZzooTlNVUkwgKil1cmwgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikodm9pZCkpY29t
cGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdL
X0lPU19UQkEpKTsKIAogLSAodm9pZClfbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDoodm9pZChe
KShCT09MKSljb21wbGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQpX2FwcEJvdW5kTmF2aWdhdGlvbkRh
dGE6KHZvaWQoXikoc3RydWN0IFdLQXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEgZGF0YSkp
Y29tcGxldGlvbkhhbmRsZXI7CistICh2b2lkKV9jbGVhckFwcEJvdW5kTmF2aWdhdGlvbkRhdGE6
KHZvaWQoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXI7CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdUZXN0aW5nLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1Rlc3RpbmcubW0KaW5kZXgg
N2NjMzBlYTQxNDJhMzUwMDAzYmUxZmM0OTMzOGQ1NGIwYWJkNTk4My4uYWQwODRkNTJmMmI4NmVm
NzA0MTFmZmY1YjdjN2M0Y2MwZGY3YmM3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1Rlc3RpbmcubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1Rlc3RpbmcubW0KQEAgLTMzMyw0ICszMzMsMTgg
QEAKICAgICB9KTsKIH0KIAorLSAodm9pZClfYXBwQm91bmROYXZpZ2F0aW9uRGF0YToodm9pZChe
KShzdHJ1Y3QgV0tBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSBkYXRhKSljb21wbGV0aW9u
SGFuZGxlcgoreworICAgIF9wYWdlLT5hcHBCb3VuZE5hdmlnYXRpb25EYXRhKFtjb21wbGV0aW9u
SGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChhdXRvJiYgYXBwQm91
bmREYXRhKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgYXBwQm91bmREYXRhLmhhc0xv
YWRlZEFwcEJvdW5kUmVxdWVzdFRlc3RpbmcsIGFwcEJvdW5kRGF0YS5oYXNMb2FkZWROb25BcHBC
b3VuZFJlcXVlc3RUZXN0aW5nIH0pOworICAgIH0pOworfQorCistICh2b2lkKV9jbGVhckFwcEJv
dW5kTmF2aWdhdGlvbkRhdGE6KHZvaWQoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAg
ICBfcGFnZS0+Y2xlYXJBcHBCb3VuZE5hdmlnYXRpb25EYXRhKFtjb21wbGV0aW9uSGFuZGxlciA9
IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIHsKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoKTsKKyAgICB9KTsKK30KKwogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKaW5kZXggNDY0YmRhOTFhYWY4ZDAxNTNmMWU3ZTdlOTE5YzE0MWQ2NzA5Yjcz
MS4uZWRlMzkzMTMxODRmNWU1NWQzZTYxOTc1YWU2ZWVlYzJmZmJlMjA4MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xMDM4MSw2ICsxMDM4MSwxOCBAQCBT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSBXZWJQYWdlUHJveHk6OmNyZWF0ZU5ldHdvcmtF
eHRlbnNpb25zU2FuZGJveEV4dGVucwogfQogI2VuZGlmCiAKKyNpZiBQTEFURk9STShDT0NPQSkK
K3ZvaWQgV2ViUGFnZVByb3h5OjphcHBCb3VuZE5hdmlnYXRpb25EYXRhKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoQXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEmJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit7CisgICAgd2Vic2l0ZURhdGFTdG9yZSgpLm5ldHdvcmtQcm9jZXNzKCkuc2VuZFdp
dGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6QXBwQm91bmROYXZpZ2F0aW9u
RGF0YShtX3dlYnNpdGVEYXRhU3RvcmUtPnNlc3Npb25JRCgpKSwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6Y2xlYXJBcHBCb3VuZE5hdmlnYXRp
b25EYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sK
KyAgICB3ZWJzaXRlRGF0YVN0b3JlKCkubmV0d29ya1Byb2Nlc3MoKS5zZW5kV2l0aEFzeW5jUmVw
bHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpDbGVhckFwcEJvdW5kTmF2aWdhdGlvbkRhdGEo
bV93ZWJzaXRlRGF0YVN0b3JlLT5zZXNzaW9uSUQoKSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI3VuZGVmIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5k
ZXggYTBjZWJkOWZiNDVlNzZmNTE5NTQ1M2NiNDk1Y2EzY2UwMzg0YTcwZi4uOWE0MjI5MmQ2YjIy
MjQwYzk2ZDA0NmVmNmI1ODM2M2UyMjI1ZWFlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKQEAgLTMwNiw2ICszMDYsNyBAQCB0eXBlZGVmIEhXTkQgUGxhdGZvcm1WaWV3
V2lkZ2V0OwogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJLaXQgeworc3RydWN0IEFwcEJvdW5kTmF2
aWdhdGlvblRlc3RpbmdEYXRhOwogY2xhc3MgQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3JQ
cm94eTsKIGNsYXNzIERyYXdpbmdBcmVhUHJveHk7CiBjbGFzcyBHYW1lcGFkRGF0YTsKQEAgLTE4
NTgsNiArMTg1OSw4IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIHNl
dExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAg
ICAgdm9pZCBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYpOworICAgIHZvaWQgYXBwQm91bmROYXZpZ2F0aW9uRGF0YShDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKEFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhJiYpPiYmKTsKKyAgICB2b2lk
IGNsZWFyQXBwQm91bmROYXZpZ2F0aW9uRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwogI2VuZGlmCiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKaW5kZXggY2MyMjAzZmU4Yzk3YTU5N2Fk
YzMwNjliODBhNzg3ODhmYmQ1ZTMwOC4uMjJjZTA5MjU5OGYxMGRhNmM4YzFlMDQ2MzdmNjIwMTkx
YzA5ZWU2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
TG9hZGVyU3RyYXRlZ3kuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYkxvYWRlclN0cmF0ZWd5LmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIFdlYkxvYWRlclN0cmF0
ZWd5Ojp+V2ViTG9hZGVyU3RyYXRlZ3koKQogCiB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5Ojpsb2Fk
UmVzb3VyY2UoRnJhbWUmIGZyYW1lLCBDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIFJlc291cmNl
UmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucywg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+JiYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmIChyZXNvdXJjZS50eXBlKCkgIT0gQ2FjaGVkUmVz
b3VyY2U6OlR5cGU6Ok1haW5SZXNvdXJjZSkgeworICAgIGlmIChyZXNvdXJjZS50eXBlKCkgIT0g
Q2FjaGVkUmVzb3VyY2U6OlR5cGU6Ok1haW5SZXNvdXJjZSB8fCAhZnJhbWUuaXNNYWluRnJhbWUo
KSkgewogICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBmcmFtZS5tYWluRnJhbWUoKS5kb2N1
bWVudCgpKSB7CiAgICAgICAgICAgICBpZiAoZG9jdW1lbnQgJiYgZG9jdW1lbnQtPmxvYWRlcigp
KQogICAgICAgICAgICAgICAgIHJlcXVlc3Quc2V0SXNBcHBCb3VuZChkb2N1bWVudC0+bG9hZGVy
KCktPmxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoKSk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFu
Z2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNzRlNmU3Zjk1Y2JhZDQ4NjBjNTExZmNmNDdk
Mjg2NmNiOTc4MDk0Ni4uNDBkMGUwNzAxZDdhMGJhYzI1ZWI3YTc0Mjk1MmUzN2RlY2JlZGM2MiAx
MDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDI1IEBACisyMDIxLTAyLTIzICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBw
bGUuY29tPgorCisgICAgICAgIEFwcC1ib3VuZCByZXF1ZXN0IHBhcmFtZXRlciBzaG91bGQgYmUg
cGFzc2VkIHRvIG1haW4gcmVzb3VyY2UgcmVxdWVzdHMgbm90IHRoZSBtYWluIGZyYW1lCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjIyNDEKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzc0NTYwOTY2PiAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIG1vcmUgcm9idXN0IHRlc3RpbmcgdG8gcmVwb3J0
IHdoZW4gYXBwQm91bmQvbm9uQXBwQm91bmQgcmVxdWVzdHMKKyAgICAgICAgbG9hZCBpbiB0aGUg
bmV0d29yayBwcm9jZXNzLiBUaGlzIHRlc3RzIG5vdCBvbmx5IHRoYXQgdGhlIG1haW4gZnJhbWXi
gJlzCisgICAgICAgIGRvY3VtZW50IGxvYWRlciBpcyBwcm9wZXJseSBzZXQsIGJ1dCBhbHNvIHRo
YXQgYWxsIGxvYWRzIGluaXRpYXRlZCBmcm9tCisgICAgICAgIGFwcC1ib3VuZCByZXF1ZXN0cyBh
cmUgYWxzbyBhcHAtYm91bmQgdG8gYXZvaWQgcmVncmVzc2lvbnMgbGlrZSB0aGlzIGluIHRoZSBm
dXR1cmUuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBw
QnJvd3NlclByaXZhY3kubW06CisgICAgICAgIFV0aWxpemUgc29tZSBDU1AgdGVzdCByZXNvdXJj
ZXMgdGhhdCBoYXZlIHRoZSBleGFjdCBzZXR1cCBuZWVkZWQgdG8KKyAgICAgICAgdGVzdCB0aGlz
IGZpeC4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5oOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbToKKyAgICAgICAg
KC1bV0tXZWJWaWV3IGFwcEJvdW5kTmF2aWdhdGlvbkRhdGE6XSk6CisgICAgICAgICgtW1dLV2Vi
VmlldyBjbGVhckFwcEJvdW5kTmF2aWdhdGlvblJlcG9ydHM6XSk6CisKIDIwMjEtMDItMTkgIEpp
ZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBQQ006IFJlcXVlc3Qg
c2VydmVyIHB1YmxpYyBrZXkgdG8gZ2VuZXJhdGUgc2VjcmV0IHRva2VuCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3ku
bW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclBy
aXZhY3kubW0KaW5kZXggNzNkMGNjNTI1ZjRhZmY2ZmQyM2Q2YmRlNDUxNjFmNjI4ODc4ZjVkMS4u
MzFmY2Y2OGE1MDM5NjJlM2RlNGFkMzgwODI2MzI0MjRkNmI2MmZiZCAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1t
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2Vy
UHJpdmFjeS5tbQpAQCAtMzcsNiArMzcsNyBAQAogI2ltcG9ydCA8V2ViS2l0L1dLUHJlZmVyZW5j
ZXNQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tVUkxTY2hlbWVUYXNrUHJpdmF0ZS5oPgog
I2ltcG9ydCA8V2ViS2l0L1dLVXNlckNvbnRlbnRDb250cm9sbGVyUHJpdmF0ZS5oPgorI2ltcG9y
dCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nLmg+CiAjaW1wb3J0IDxXZWJLaXQv
V0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L19XS1VzZXJDb250
ZW50V29ybGQuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tVc2VyU3R5bGVTaGVldC5oPgpAQCAtMTQy
NSwxOSArMTQyNiwyOCBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIEFwcEJvdW5kUmVxdWVz
dCkKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpDR1JlY3RaZXJvIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0p
OwogICAgIE5TU3RyaW5nICp1cmwgPSBAImh0dHBzOi8vd2Via2l0Lm9yZyI7CiAKLSAgICBzdGF0
aWMgYm9vbCBpc0RvbmUgPSBmYWxzZTsKKyAgICBfX2Jsb2NrIGJvb2wgaXNEb25lID0gZmFsc2U7
CiAgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqbm9uQXBwQm91bmRSZXF1ZXN0ID0gW05TTXV0YWJs
ZVVSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6dXJsXV07CiAg
ICAgQVBQX0JPVU5EX1JFUVVFU1RfQURESVRJT05TCiAKICAgICBbd2ViVmlldyBsb2FkUmVxdWVz
dDpub25BcHBCb3VuZFJlcXVlc3RdOwogICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5p
c2hOYXZpZ2F0aW9uXTsKIAotICAgIFt3ZWJWaWV3IGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ6
XihCT09MIGlzQXBwQm91bmQpIHsKKyAgICBbd2ViVmlldyBfbGFzdE5hdmlnYXRpb25XYXNBcHBC
b3VuZDpeKEJPT0wgaXNBcHBCb3VuZCkgewogICAgICAgICBFWFBFQ1RfRkFMU0UoaXNBcHBCb3Vu
ZCk7CiAgICAgICAgIGlzRG9uZSA9IHRydWU7CiAgICAgfV07CiAKICAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJmlzRG9uZSk7CisgICAgCisgICAgaXNEb25lID0gZmFsc2U7CisgICAgW3dl
YlZpZXcgX2FwcEJvdW5kTmF2aWdhdGlvbkRhdGE6XihzdHJ1Y3QgV0tBcHBCb3VuZE5hdmlnYXRp
b25UZXN0aW5nRGF0YSBkYXRhKSB7CisgICAgICAgIEVYUEVDVF9GQUxTRShkYXRhLmhhc0xvYWRl
ZEFwcEJvdW5kUmVxdWVzdFRlc3RpbmcpOworICAgICAgICBFWFBFQ1RfVFJVRShkYXRhLmhhc0xv
YWRlZE5vbkFwcEJvdW5kUmVxdWVzdFRlc3RpbmcpOworICAgICAgICBpc0RvbmUgPSB0cnVlOwor
ICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogfQogCiBU
RVNUKEluQXBwQnJvd3NlclByaXZhY3ksIEFwcEJvdW5kUmVxdWVzdFdpdGhOYXZpZ2F0aW9uKQpA
QCAtMTQ1MywxOCArMTQ2Myw5NyBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIEFwcEJvdW5k
UmVxdWVzdFdpdGhOYXZpZ2F0aW9uKQogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnN0YXJ0aW5n
UmVxdWVzdF07CiAgICAgW3dlYlZpZXcgX3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25d
OwogCi0gICAgc3RhdGljIGJvb2wgaXNEb25lID0gZmFsc2U7CisgICAgX19ibG9jayBib29sIGlz
RG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF9sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kOl4o
Qk9PTCBpc0FwcEJvdW5kKSB7CisgICAgICAgIEVYUEVDVF9UUlVFKGlzQXBwQm91bmQpOworICAg
ICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZpc0RvbmUpOworICAgIAorICAgIGlzRG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF9h
cHBCb3VuZE5hdmlnYXRpb25EYXRhOl4oc3RydWN0IFdLQXBwQm91bmROYXZpZ2F0aW9uVGVzdGlu
Z0RhdGEgZGF0YSkgeworICAgICAgICBFWFBFQ1RfVFJVRShkYXRhLmhhc0xvYWRlZEFwcEJvdW5k
UmVxdWVzdFRlc3RpbmcpOworICAgICAgICBFWFBFQ1RfRkFMU0UoZGF0YS5oYXNMb2FkZWROb25B
cHBCb3VuZFJlcXVlc3RUZXN0aW5nKTsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsK
KworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKKyAgICAKKyAgICBpc0Rv
bmUgPSBmYWxzZTsKICAgICBOU011dGFibGVVUkxSZXF1ZXN0ICpub25BcHBCb3VuZFJlcXVlc3Qg
PSBbTlNNdXRhYmxlVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmlu
Zzpub25BcHBCb3VuZFVSTF1dOwogICAgIEFQUF9CT1VORF9SRVFVRVNUX0FERElUSU9OUworICAg
IAorICAgIGlzRG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF9jbGVhckFwcEJvdW5kTmF2aWdh
dGlvbkRhdGE6XnsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKIAogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0
Om5vbkFwcEJvdW5kUmVxdWVzdF07CiAgICAgW3dlYlZpZXcgX3Rlc3Rfd2FpdEZvckRpZEZpbmlz
aE5hdmlnYXRpb25dOwogCi0gICAgW3dlYlZpZXcgbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDpe
KEJPT0wgaXNBcHBCb3VuZCkgeworICAgIFt3ZWJWaWV3IF9sYXN0TmF2aWdhdGlvbldhc0FwcEJv
dW5kOl4oQk9PTCBpc0FwcEJvdW5kKSB7CiAgICAgICAgIEVYUEVDVF9GQUxTRShpc0FwcEJvdW5k
KTsKICAgICAgICAgaXNEb25lID0gdHJ1ZTsKICAgICB9XTsKIAogICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmaXNEb25lKTsKKyAgICAKKyAgICBpc0RvbmUgPSBmYWxzZTsKKyAgICBbd2Vi
VmlldyBfYXBwQm91bmROYXZpZ2F0aW9uRGF0YTpeKHN0cnVjdCBXS0FwcEJvdW5kTmF2aWdhdGlv
blRlc3RpbmdEYXRhIGRhdGEpIHsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKGRhdGEuaGFzTG9hZGVk
QXBwQm91bmRSZXF1ZXN0VGVzdGluZyk7CisgICAgICAgIEVYUEVDVF9UUlVFKGRhdGEuaGFzTG9h
ZGVkTm9uQXBwQm91bmRSZXF1ZXN0VGVzdGluZyk7CisgICAgICAgIGlzRG9uZSA9IHRydWU7Cisg
ICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiB9CisKK1RF
U1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQXBwQm91bmRSZXF1ZXN0V2l0aFN1YkZyYW1lKQorewor
ICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9u
IGFsbG9jXSBpbml0XSk7CisgICAgW2NvbmZpZ3VyYXRpb24gX3NldE92ZXJyaWRlQ29udGVudFNl
Y3VyaXR5UG9saWN5OkAic2NyaXB0LXNyYyAnbm9uY2UtYiciXTsKKworICAgIGF1dG8gd2ViVmll
dyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJl
Y3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwor
ICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAicGFnZS13aXRoLWNzcCJdOworCisgICAg
W3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJNYWluRnJhbWU6IEIiXTsKKyAgICBbd2ViVmlldyB3
YWl0Rm9yTWVzc2FnZTpAIlN1YmZyYW1lOiBCIl07CisKKyAgICBfX2Jsb2NrIGJvb2wgaXNEb25l
ID0gZmFsc2U7CisgICAgW3dlYlZpZXcgX2FwcEJvdW5kTmF2aWdhdGlvbkRhdGE6XihzdHJ1Y3Qg
V0tBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSBkYXRhKSB7CisgICAgICAgIEVYUEVDVF9U
UlVFKGRhdGEuaGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0VGVzdGluZyk7CisgICAgICAgIEVYUEVD
VF9GQUxTRShkYXRhLmhhc0xvYWRlZE5vbkFwcEJvdW5kUmVxdWVzdFRlc3RpbmcpOworICAgICAg
ICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZpc0RvbmUpOworfTsKKworVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBOb25BcHBCb3VuZFJl
cXVlc3RXaXRoU3ViRnJhbWUpCit7CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhb
W1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBbY29uZmlndXJhdGlv
biBfc2V0T3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3k6QCJzY3JpcHQtc3JjICdub25jZS1i
JyJdOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpj
b25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqbm9uQXBwQm91
bmRSZXF1ZXN0ID0gW05TTXV0YWJsZVVSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRs
ZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInBhZ2Utd2l0aC1jc3AiIHdpdGhFeHRlbnNp
b246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXTsKKyAg
ICBBUFBfQk9VTkRfUkVRVUVTVF9BRERJVElPTlMKKworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0
Om5vbkFwcEJvdW5kUmVxdWVzdF07CisKKyAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAIk1h
aW5GcmFtZTogQiJdOworICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAiU3ViZnJhbWU6IEIi
XTsKKworICAgIF9fYmxvY2sgYm9vbCBpc0RvbmUgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBfYXBw
Qm91bmROYXZpZ2F0aW9uRGF0YTogXihzdHJ1Y3QgV0tBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5n
RGF0YSBkYXRhKSB7CisgICAgICAgIEVYUEVDVF9GQUxTRShkYXRhLmhhc0xvYWRlZEFwcEJvdW5k
UmVxdWVzdFRlc3RpbmcpOworICAgICAgICBFWFBFQ1RfVFJVRShkYXRhLmhhc0xvYWRlZE5vbkFw
cEJvdW5kUmVxdWVzdFRlc3RpbmcpOworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOwor
CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworfTsKKwogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5oCmluZGV4IGMxZGMwOGNmYTRj
ZjA2MTMzNTI0NTdiZjExYThlZTMwNjEwN2FlOGEuLjIyYTQ4MjZjNDEyYjI5NDkzZTVjMzRkZDRh
ZWM4MzQwN2YxZjkzMjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVz
dFdLV2ViVmlldy5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmll
dy5oCkBAIC02Nyw3ICs2Nyw2IEBACiAtIChpZClvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0
OihOU1N0cmluZyAqKXNjcmlwdDsKIC0gKGlkKW9iamVjdEJ5Q2FsbGluZ0FzeW5jRnVuY3Rpb246
KE5TU3RyaW5nICopc2NyaXB0IHdpdGhBcmd1bWVudHM6KE5TRGljdGlvbmFyeSAqKWFyZ3VtZW50
cyBlcnJvcjooTlNFcnJvciAqKillcnJvck91dDsKIC0gKHVuc2lnbmVkKXdhaXRVbnRpbENsaWVu
dFdpZHRoSXM6KHVuc2lnbmVkKWV4cGVjdGVkQ2xpZW50V2lkdGg7Ci0tICh2b2lkKWxhc3ROYXZp
Z2F0aW9uV2FzQXBwQm91bmQ6KHZvaWQoXikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXI7CiBAZW5k
CiAKIEBpbnRlcmZhY2UgVGVzdE1lc3NhZ2VIYW5kbGVyIDogTlNPYmplY3QgPFdLU2NyaXB0TWVz
c2FnZUhhbmRsZXI+CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RX
S1dlYlZpZXcubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0K
aW5kZXggOGQ5NjcxNjNiNDZkYTc5MTk5MzRlNjQ5MDY0MDNjZDIzMWIyZTYwYy4uMzRhNDY0MDlj
MTIyZWM3ZmEyYTY4NmViYWRmOTUxMTlhOGJhNTJhMiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
Y29jb2EvVGVzdFdLV2ViVmlldy5tbQpAQCAtMjM5LDEwICsyMzksNiBAQCBzdGF0aWMgTlNTdHJp
bmcgKm92ZXJyaWRlQnVuZGxlSWRlbnRpZmllcihpZCwgU0VMKQogICAgIHJldHVybiBjbGllbnRX
aWR0aDsKIH0KIAotLSAodm9pZClsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kOih2b2lkKF4pKEJP
T0wpKWNvbXBsZXRpb25IYW5kbGVyCi17Ci0gICAgW3NlbGYgX2xhc3ROYXZpZ2F0aW9uV2FzQXBw
Qm91bmQ6Y29tcGxldGlvbkhhbmRsZXJdOwotfQogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gVGVz
dE1lc3NhZ2VIYW5kbGVyIHsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421434</attachid>
            <date>2021-02-24 11:39:37 -0800</date>
            <delta_ts>2021-02-24 17:45:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222241-20210224113936.patch</filename>
            <type>text/plain</type>
            <size>23780</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMzIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDI5NWE3ZWI3ODM5ZjAwZDYw
YTM5MWE3NDJiZjM2ZjlkNjE0ZDg5NWYuLmQzOTY2MTQ0ZDMyMGRhNGQ4NDNkODE2MTdkY2U2YTQy
MzNhMzMwZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDYgQEAKKzIwMjEtMDItMjQgIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgQXBwLWJvdW5kIHJl
cXVlc3QgcGFyYW1ldGVyIHNob3VsZCBiZSBwYXNzZWQgdG8gbWFpbiByZXNvdXJjZSByZXF1ZXN0
cyBub3QgdGhlIG1haW4gZnJhbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyMjI0MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzQ1NjA5NjY+IAor
CisgICAgICAgIFJldmlld2VkIGJ5IENocmlzIER1bWV6LgorCisgICAgICAgIEJ1ZyBmaXggdG8g
c2V0IHRoZSBpc0FwcEJvdW5kIHBhcmFtZXRlciBvbiB0aGUgcmVzb3VyY2UgcmVxdWVzdCBpZiBp
dAorICAgICAgICBpcyBub3Qgb24gdGhlIG1haW4gZnJhbWUuIFByZXZpb3VzbHkgdGhpcyBvbmx5
IGNoZWNrZWQgaWYgdGhlCisgICAgICAgIHJlc291cmNlIHdhcyBub3QgYSBtYWluIHJlc291cmNl
IGJlZm9yZSBzZXR0aW5nIHRoZSBwYXJhbWV0ZXIuCisKKyAgICAgICAgT3RoZXJ3aXNlIG1vc3Rs
eSBjaGFuZ2VzIHRvIGFkZCBiZXR0ZXIgdGVzdGluZy4KKworICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
OmFwcEJvdW5kTmF2aWdhdGlvbkRhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
czo6Y2xlYXJBcHBCb3VuZE5hdmlnYXRpb25EYXRhKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9u
Lmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjphcHBCb3VuZE5hdmlnYXRpb25U
ZXN0aW5nRGF0YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFU
YXNrQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0NvY29hOjpOZXR3
b3JrRGF0YVRhc2tDb2NvYSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6
CisgICAgICAgICogU2hhcmVkL05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLmg6CisgICAgICAg
IChXZWJLaXQ6OkFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhOjpjbGVhckFwcEJvdW5kTmF2
aWdhdGlvbkRhdGFUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6QXBwQm91bmROYXZpZ2F0aW9u
VGVzdGluZ0RhdGE6OnVwZGF0ZUFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhKToKKyAgICAg
ICAgKFdlYktpdDo6QXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGE6OmVuY29kZSBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OkFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhOjpkZWNvZGUp
OgorICAgICAgICBTdHJ1Y3QgdG8gcmV0dXJuIGRhdGEgZm9yIHRlc3RzLgorCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3VGVzdGluZy5tbToKKyAgICAgICAgKC1b
V0tXZWJWaWV3IF9hcHBCb3VuZE5hdmlnYXRpb25EYXRhOl0pOgorICAgICAgICAoLVtXS1dlYlZp
ZXcgX2NsZWFyQXBwQm91bmROYXZpZ2F0aW9uRGF0YTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjphcHBCb3Vu
ZE5hdmlnYXRpb25EYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjbGVhckFw
cEJvdW5kTmF2aWdhdGlvbkRhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6bG9hZFJlc291cmNlKToKKyAgICAg
ICAgVGhlIGZpeC4KKwogMjAyMS0wMi0yMyAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNzMzMDQuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDgw
ZTJhZjcxNzk3NjMxMGE5ZTZlZGUwNjcxYjkwZDQ1YjEwMGRjOGYuLjY5ZTcxZWYxODJiMDMzMzBj
ZWFhMDA4NDQ1NjkwODJmODQ0MjVlMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0yNzc4LDQgKzI3NzgsMjMgQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzczo6c2V0Q09SU0Rpc2FibGluZ1BhdHRlcm5zKFBhZ2VJZGVudGlmaWVyIHBhZ2VJ
ZGVudGlmaWVyLCBWZWMKICAgICBtX2V4dGVuc2lvbkNPUlNEaXNhYmxpbmdQYXR0ZXJucy5zZXQo
cGFnZUlkZW50aWZpZXIsIFdURk1vdmUocGFyc2VkUGF0dGVybnMpKTsKIH0KIAorI2lmIFBMQVRG
T1JNKENPQ09BKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6YXBwQm91bmROYXZpZ2F0aW9uRGF0YShQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgQXBw
Qm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAg
ICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9u
SUQpKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG5ldHdvcmtTZXNzaW9uLT5hcHBCb3Vu
ZE5hdmlnYXRpb25UZXN0aW5nRGF0YSgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBj
b21wbGV0aW9uSGFuZGxlcih7IH0pOworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpjbGVhckFw
cEJvdW5kTmF2aWdhdGlvbkRhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKGF1dG8qIG5l
dHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkKKyAgICAgICAg
bmV0d29ya1Nlc3Npb24tPmFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhKCkuY2xlYXJBcHBC
b3VuZE5hdmlnYXRpb25EYXRhVGVzdGluZygpOworCisgICAgY29tcGxldGlvbkhhbmRsZXIoKTsK
K30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCBkMGE4NTUzNjM3NzBhNGE3NTAwMGRk
MWUzMjA1YTFjZGZhNmVmZjAxLi5hNGI1MjcwMjljZGY2ZTk4MWU1OGYzOTUxOTdmNTRmZjE5ZDRj
MzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5o
CkBAIC0zNzgsNiArMzc4LDExIEBAIHB1YmxpYzoKICAgICBib29sIHNob3VsZERpc2FibGVDT1JT
Rm9yUmVxdWVzdFRvKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBVUkwmKSBjb25zdDsK
ICAgICB2b2lkIHNldENPUlNEaXNhYmxpbmdQYXR0ZXJucyhXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciwgVmVjdG9yPFN0cmluZz4mJik7CiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICB2b2lkIGFw
cEJvdW5kTmF2aWdhdGlvbkRhdGEoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgQXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEmKT4mJik7CisgICAgdm9pZCBj
bGVhckFwcEJvdW5kTmF2aWdhdGlvbkRhdGEoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3JtSW5p
dGlhbGl6ZU5ldHdvcmtQcm9jZXNzKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGVlZmVmYmI3YWY2MDk4NDdiYmIwNWE4ZmQwZGNh
Yjg3OTgzYzlhYjguLjU1NWE0NDBjMzA1NDc3ZGUzZDRiNTA4NTVkNDk5Y2FiMzRjMTJmMjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5tZXNzYWdlcy5pbgpAQCAtMTkwLDQgKzE5MCw5IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9j
ZXNzIExlZ2FjeVJlY2VpdmVyIHsKICNlbmRpZgogICAgIFVwZGF0ZUJ1bmRsZUlkZW50aWZpZXIo
U3RyaW5nIGJ1bmRsZUlkZW50aWZpZXIpIC0+ICgpIEFzeW5jCiAgICAgQ2xlYXJCdW5kbGVJZGVu
dGlmaWVyKCkgLT4gKCkgQXN5bmMKKworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIEFwcEJvdW5k
TmF2aWdhdGlvbkRhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoc3RydWN0IFdlYktp
dDo6QXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEgZGF0YSkgQXN5bmMKKyAgICBDbGVhckFw
cEJvdW5kTmF2aWdhdGlvbkRhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBBc3lu
YworI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtTZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNz
aW9uLmgKaW5kZXggYmI1N2ZhMzBhNmU3OTdkNGJkYWI2OTc2MjI0MWFmMDMzODM2YWMyYS4uYzgx
NDdlYzgyMmY5MmVjZDQ1ZGYwYjM5YWEyNzk2NzQxNGQ4Zjg2NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaApAQCAtMjUsNiArMjUsNyBAQAogCiAj
cHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIk5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLmgiCiAj
aW5jbHVkZSAiUHJlZmV0Y2hDYWNoZS5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIK
ICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oIgpAQCAtMTU3LDYgKzE1
OCwxMCBAQCBwdWJsaWM6CiAgICAgTmV0d29ya0xvYWRTY2hlZHVsZXImIG5ldHdvcmtMb2FkU2No
ZWR1bGVyKCk7CiAgICAgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyJiBwcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudCgpIHsgcmV0dXJuICptX3ByaXZhdGVDbGlja01lYXN1cmVtZW50OyB9CiAK
KyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSYg
YXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEoKSB7IHJldHVybiBtX2FwcEJvdW5kTmF2aWdh
dGlvblRlc3RpbmdEYXRhOyB9CisjZW5kaWYKKyAgICAKIHByb3RlY3RlZDoKICAgICBOZXR3b3Jr
U2Vzc2lvbihOZXR3b3JrUHJvY2VzcyYsIGNvbnN0IE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJh
bWV0ZXJzJik7CiAKQEAgLTIwMSw2ICsyMDYsMTAgQEAgcHJvdGVjdGVkOgogI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKICAgICBIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0cjxTZXJ2aWNlV29ya2Vy
U29mdFVwZGF0ZUxvYWRlcj4+IG1fc29mdFVwZGF0ZUxvYWRlcnM7CiAjZW5kaWYKKyAgICAKKyNp
ZiBQTEFURk9STShDT0NPQSkKKyAgICBBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSBtX2Fw
cEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TmV0d29ya0RhdGFUYXNrQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nv
Y29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCmluZGV4IGQ0OTVmMDAxN2M0ZjdkNzA3YjZiMDhi
NmIxYjIyNjhiOTNiNWEwMWQuLmY1OTQ0MjM5N2M5OTllYTIyNGRkNzBkYTg2ZTE5YWVlYmM1Njlk
YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a0RhdGFUYXNrQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQpAQCAtMzM5LDYgKzMzOSw4IEBAIE5ldHdvcmtEYXRh
VGFza0NvY29hOjpOZXR3b3JrRGF0YVRhc2tDb2NvYShOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwg
TmV0d29ya0RhdGFUCiAKICAgICBORVRXT1JLX0RBVEFfVEFTS19DT0NPQV9BRERJVElPTlMKIAor
ICAgIG1fc2Vzc2lvbi0+YXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEoKS51cGRhdGVBcHBC
b3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YShyZXF1ZXN0LmlzQXBwQm91bmQoKSk7CisKICAgICBh
cHBseVNuaWZmaW5nUG9saWNpZXNBbmRCaW5kUmVxdWVzdFRvSW5mZXJmYWNlSWZOZWVkZWQobnNS
ZXF1ZXN0LCBzaG91bGRDb250ZW50U25pZmYgPT0gV2ViQ29yZTo6Q29udGVudFNuaWZmaW5nUG9s
aWN5OjpTbmlmZkNvbnRlbnQgJiYgIXVybC5pc0xvY2FsRmlsZSgpLCBzaG91bGRDb250ZW50RW5j
b2RpbmdTbmlmZiA9PSBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeTo6U25p
ZmYpOwogCiAgICAgbV90YXNrID0gW21fc2Vzc2lvbldyYXBwZXItPnNlc3Npb24gZGF0YVRhc2tX
aXRoUmVxdWVzdDpuc1JlcXVlc3RdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2Fn
ZXMucHkKaW5kZXggYmEzY2M3ZDRkMmYzNDY2YzMyZWM1MDhjMjFmYzIzMTdlM2JjYjdkYi4uOTlk
ZGUwMGQxZTQ0MWUzMzNmNWI1ZjUyMTYzOTI2NTQ4ZWE4ZDMwOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC03NDQsOCArNzQ0LDggQEAgZGVmIGhlYWRlcnNf
Zm9yX3R5cGUodHlwZSk6CiAgICAgICAgICdXZWJDb3JlOjpXaWxsQ29udGludWVMb2FkaW5nJzog
Wyc8V2ViQ29yZS9GcmFtZUxvYWRlclR5cGVzLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpTZWxl
Y3Rpb25SZWN0JzogWyciRWRpdG9yU3RhdGUuaCInXSwKICAgICAgICAgJ1dlYktpdDo6QWN0aXZp
dHlTdGF0ZUNoYW5nZUlEJzogWyciRHJhd2luZ0FyZWFJbmZvLmgiJ10sCisgICAgICAgICdXZWJL
aXQ6OkFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhJzogWyciTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4uaCInXSwKICAgICAgICAgJ1dlYktpdDo6QWxsb3dPdmVyd3JpdGUnOiBbJyJEb3du
bG9hZElELmgiJ10sCi0gICAgICAgICdXZWJLaXQ6Okxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQn
OiBbJyJOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbi5oIiddLAogICAgICAgICAnV2ViS2l0OjpC
YWNrRm9yd2FyZExpc3RJdGVtU3RhdGUnOiBbJyJTZXNzaW9uU3RhdGUuaCInXSwKICAgICAgICAg
J1dlYktpdDo6Q2FsbERvd25sb2FkRGlkU3RhcnQnOiBbJyJEb3dubG9hZE1hbmFnZXIuaCInXSwK
ICAgICAgICAgJ1dlYktpdDo6Q29udGVudFdvcmxkSWRlbnRpZmllcic6IFsnIkNvbnRlbnRXb3Js
ZFNoYXJlZC5oIiddLApAQCAtNzU0LDYgKzc1NCw3IEBAIGRlZiBoZWFkZXJzX2Zvcl90eXBlKHR5
cGUpOgogICAgICAgICAnV2ViS2l0OjpHZXN0dXJlUmVjb2duaXplclN0YXRlJzogWyciR2VzdHVy
ZVR5cGVzLmgiJ10sCiAgICAgICAgICdXZWJLaXQ6Okdlc3R1cmVUeXBlJzogWyciR2VzdHVyZVR5
cGVzLmgiJ10sCiAgICAgICAgICdXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9yJzogWyci
SW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuaCInXSwKKyAgICAgICAgJ1dlYktpdDo6TGFzdE5hdmln
YXRpb25XYXNBcHBCb3VuZCc6IFsnIk5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLmgiJ10sCiAg
ICAgICAgICdXZWJLaXQ6OkxheWVySG9zdGluZ0NvbnRleHRJRCc6IFsnIkxheWVySG9zdGluZ0Nv
bnRleHQuaCInXSwKICAgICAgICAgJ1dlYktpdDo6TGF5ZXJIb3N0aW5nTW9kZSc6IFsnIkxheWVy
VHJlZUNvbnRleHQuaCInXSwKICAgICAgICAgJ1dlYktpdDo6UGFnZVN0YXRlJzogWyciU2Vzc2lv
blN0YXRlLmgiJ10sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9OYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbi5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4uaAppbmRleCAzMWUwNzE1NTk2NmJiN2ZiNmQ3M2FkYmI2M2E3YTc5MzNiODY5
YjRhLi40ZWNlNWYyYWFhZWYyNjQ5OGVjNDgxMjAxNzAzZGI4M2E2MmUxZTJiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9OYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbi5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLmgKQEAgLTI1
LDEwICsyNSw1NCBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXIu
aCIKKyNpbmNsdWRlICJEZWNvZGVyLmgiCisjaW5jbHVkZSAiRW5jb2Rlci5oIgorCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogZW51bSBjbGFzcyBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiA6IGJv
b2wgeyBObywgWWVzIH07CiBlbnVtIGNsYXNzIExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgOiBi
b29sIHsgTm8sIFllcyB9OwogCisjaWYgUExBVEZPUk0oQ09DT0EpCitzdHJ1Y3QgQXBwQm91bmRO
YXZpZ2F0aW9uVGVzdGluZ0RhdGEgeworCisgICAgdm9pZCBjbGVhckFwcEJvdW5kTmF2aWdhdGlv
bkRhdGFUZXN0aW5nKCkKKyAgICB7CisgICAgICAgIGhhc0xvYWRlZEFwcEJvdW5kUmVxdWVzdFRl
c3RpbmcgPSBmYWxzZTsKKyAgICAgICAgaGFzTG9hZGVkTm9uQXBwQm91bmRSZXF1ZXN0VGVzdGlu
ZyA9IGZhbHNlOworICAgIH0KKyAgICAKKyAgICB2b2lkIHVwZGF0ZUFwcEJvdW5kTmF2aWdhdGlv
blRlc3RpbmdEYXRhKGJvb2wgcmVxdWVzdElzQXBwQm91bmQpCisgICAgeworICAgICAgICByZXF1
ZXN0SXNBcHBCb3VuZCA/IGhhc0xvYWRlZEFwcEJvdW5kUmVxdWVzdFRlc3RpbmcgPSB0cnVlIDog
aGFzTG9hZGVkTm9uQXBwQm91bmRSZXF1ZXN0VGVzdGluZyA9IHRydWU7CisgICAgfQorCisgICAg
dm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAorICAgIHsKKyAgICAgICAg
ZW5jb2RlciA8PCBoYXNMb2FkZWRBcHBCb3VuZFJlcXVlc3RUZXN0aW5nOworICAgICAgICBlbmNv
ZGVyIDw8IGhhc0xvYWRlZE5vbkFwcEJvdW5kUmVxdWVzdFRlc3Rpbmc7CisgICAgfQorCisgICAg
c3RhdGljIE9wdGlvbmFsPEFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhPiBkZWNvZGUoSVBD
OjpEZWNvZGVyJiBkZWNvZGVyKQorICAgIHsKKyAgICAgICAgT3B0aW9uYWw8Ym9vbD4gaGFzTG9h
ZGVkQXBwQm91bmRSZXF1ZXN0VGVzdGluZzsKKyAgICAgICAgZGVjb2RlciA+PiBoYXNMb2FkZWRB
cHBCb3VuZFJlcXVlc3RUZXN0aW5nOworICAgICAgICBpZiAoIWhhc0xvYWRlZEFwcEJvdW5kUmVx
dWVzdFRlc3RpbmcpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAg
IE9wdGlvbmFsPGJvb2w+IGhhc0xvYWRlZE5vbkFwcEJvdW5kUmVxdWVzdFRlc3Rpbmc7CisgICAg
ICAgIGRlY29kZXIgPj4gaGFzTG9hZGVkTm9uQXBwQm91bmRSZXF1ZXN0VGVzdGluZzsKKyAgICAg
ICAgaWYgKCFoYXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3RUZXN0aW5nKQorICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICByZXR1cm4ge3sgKmhhc0xvYWRlZEFwcEJv
dW5kUmVxdWVzdFRlc3RpbmcsICpoYXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3RUZXN0aW5nIH19
OworICAgIH0KKworICAgIGJvb2wgaGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0VGVzdGluZyB7IGZh
bHNlIH07CisgICAgYm9vbCBoYXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3RUZXN0aW5nIHsgZmFs
c2UgfTsKK307CisjZW5kaWYKKwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmcuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5oCmluZGV4
IDg4NGQ4YzA4ODVmYTdhMzYzYjJhZDgwMjU0MjJjMzNmNzE0NWVhYTEuLjYyZTQ2NzE0NGU5MTk0
ZWIwYTY4MmEwOGEyODRkNTk1Zjk1ZTNkOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5o
CkBAIC0zMiw2ICszMiwxMSBAQCB0eXBlZGVmIGVudW0gewogICAgIFdLV2ViVmlld0F1ZGlvUm91
dGluZ0FyYml0cmF0aW9uU3RhdHVzQWN0aXZlLAogfSBXS1dlYlZpZXdBdWRpb1JvdXRpbmdBcmJp
dHJhdGlvblN0YXR1czsKIAorc3RydWN0IFdLQXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEg
eworICAgIEJPT0wgaGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0VGVzdGluZzsKKyAgICBCT09MIGhh
c0xvYWRlZE5vbkFwcEJvdW5kUmVxdWVzdFRlc3Rpbmc7Cit9OworCiBAaW50ZXJmYWNlIFdLV2Vi
VmlldyAoV0tUZXN0aW5nKQogCiAtICh2b2lkKV9zZXRQYWdlU2NhbGU6KENHRmxvYXQpc2NhbGUg
d2l0aE9yaWdpbjooQ0dQb2ludClvcmlnaW47CkBAIC04OCw1ICs5Myw3IEBAIHR5cGVkZWYgZW51
bSB7CiAtICh2b2lkKV9zZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uUmVwb3J0
VVJMRm9yVGVzdGluZzooTlNVUkwgKil1cmwgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikodm9p
ZCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwg
aW9zKFdLX0lPU19UQkEpKTsKIAogLSAodm9pZClfbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDoo
dm9pZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQpX2FwcEJvdW5kTmF2aWdh
dGlvbkRhdGE6KHZvaWQoXikoc3RydWN0IFdLQXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEg
ZGF0YSkpY29tcGxldGlvbkhhbmRsZXI7CistICh2b2lkKV9jbGVhckFwcEJvdW5kTmF2aWdhdGlv
bkRhdGE6KHZvaWQoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXI7CiAKIEBlbmQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdUZXN0aW5nLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1Rlc3RpbmcubW0K
aW5kZXggN2NjMzBlYTQxNDJhMzUwMDAzYmUxZmM0OTMzOGQ1NGIwYWJkNTk4My4uYWQwODRkNTJm
MmI4NmVmNzA0MTFmZmY1YjdjN2M0Y2MwZGY3YmM3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1Rlc3RpbmcubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1Rlc3RpbmcubW0KQEAgLTMzMyw0ICsz
MzMsMTggQEAKICAgICB9KTsKIH0KIAorLSAodm9pZClfYXBwQm91bmROYXZpZ2F0aW9uRGF0YToo
dm9pZCheKShzdHJ1Y3QgV0tBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSBkYXRhKSljb21w
bGV0aW9uSGFuZGxlcgoreworICAgIF9wYWdlLT5hcHBCb3VuZE5hdmlnYXRpb25EYXRhKFtjb21w
bGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChhdXRvJiYg
YXBwQm91bmREYXRhKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgYXBwQm91bmREYXRh
Lmhhc0xvYWRlZEFwcEJvdW5kUmVxdWVzdFRlc3RpbmcsIGFwcEJvdW5kRGF0YS5oYXNMb2FkZWRO
b25BcHBCb3VuZFJlcXVlc3RUZXN0aW5nIH0pOworICAgIH0pOworfQorCistICh2b2lkKV9jbGVh
ckFwcEJvdW5kTmF2aWdhdGlvbkRhdGE6KHZvaWQoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXIK
K3sKKyAgICBfcGFnZS0+Y2xlYXJBcHBCb3VuZE5hdmlnYXRpb25EYXRhKFtjb21wbGV0aW9uSGFu
ZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIHsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoKTsKKyAgICB9KTsKK30KKwogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggN2MyOTdmY2E4MWVkYzVjNzhhYzcwMWNmY2ExMjc4MTUw
NGYwYTNiYi4uYzAzYTcyMDg3MzJjY2UzYTQ4OGJjYmViZDMxYzQ4ZTM2ZjkxYmM0MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xMDM5NSw2ICsxMDM5NSwx
OCBAQCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSBXZWJQYWdlUHJveHk6OmNyZWF0ZU5l
dHdvcmtFeHRlbnNpb25zU2FuZGJveEV4dGVucwogfQogI2VuZGlmCiAKKyNpZiBQTEFURk9STShD
T0NPQSkKK3ZvaWQgV2ViUGFnZVByb3h5OjphcHBCb3VuZE5hdmlnYXRpb25EYXRhKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgQXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICB3ZWJzaXRlRGF0YVN0b3JlKCkubmV0d29ya1Byb2Nl
c3MoKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpBcHBCb3Vu
ZE5hdmlnYXRpb25EYXRhKG1fd2Vic2l0ZURhdGFTdG9yZS0+c2Vzc2lvbklEKCkpLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpjbGVhckFwcEJv
dW5kTmF2aWdhdGlvbkRhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQoreworICAgIHdlYnNpdGVEYXRhU3RvcmUoKS5uZXR3b3JrUHJvY2VzcygpLnNlbmRX
aXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkNsZWFyQXBwQm91bmROYXZp
Z2F0aW9uRGF0YShtX3dlYnNpdGVEYXRhU3RvcmUtPnNlc3Npb25JRCgpKSwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAj
dW5kZWYgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAppbmRleCA2MTE4MDA1NzRkMDZmMWM2OTMwZDc1MDZjZWUzMWNmN2VlZGRlZjJjLi4y
M2QzMzgyZGU4NGQ0MzUyYzQwMjM3OTE5YjI1ZGMwOTBiZjA2ZjllIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMzExLDYgKzMxMSw3IEBAIHR5cGVkZWYgSFdORCBQ
bGF0Zm9ybVZpZXdXaWRnZXQ7CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYktpdCB7CitzdHJ1Y3Qg
QXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGE7CiBjbGFzcyBBdWRpb1Nlc3Npb25Sb3V0aW5n
QXJiaXRyYXRvclByb3h5OwogY2xhc3MgRHJhd2luZ0FyZWFQcm94eTsKIGNsYXNzIEdhbWVwYWRE
YXRhOwpAQCAtMTg2OCw2ICsxODY5LDggQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgIHZvaWQgc2V0TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZChXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmKTsKICAgICB2b2lkIGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBhcHBCb3VuZE5hdmlnYXRpb25EYXRhKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgQXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEm
KT4mJik7CisgICAgdm9pZCBjbGVhckFwcEJvdW5kTmF2aWdhdGlvbkRhdGEoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKICNlbmRpZgogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCmluZGV4IGNj
MjIwM2ZlOGM5N2E1OTdhZGMzMDY5YjgwYTc4Nzg4ZmJkNWUzMDguLjIyY2UwOTI1OThmMTBkYTZj
OGMxZTA0NjM3ZjYyMDE5MWMwOWVlNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKQEAgLTEwNyw3ICsxMDcsNyBA
QCBXZWJMb2FkZXJTdHJhdGVneTo6fldlYkxvYWRlclN0cmF0ZWd5KCkKIAogdm9pZCBXZWJMb2Fk
ZXJTdHJhdGVneTo6bG9hZFJlc291cmNlKEZyYW1lJiBmcmFtZSwgQ2FjaGVkUmVzb3VyY2UmIHJl
c291cmNlLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZUxvYWRlck9w
dGlvbnMmIG9wdGlvbnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFN1YnJlc291cmNl
TG9hZGVyPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAocmVzb3VyY2UudHlw
ZSgpICE9IENhY2hlZFJlc291cmNlOjpUeXBlOjpNYWluUmVzb3VyY2UpIHsKKyAgICBpZiAocmVz
b3VyY2UudHlwZSgpICE9IENhY2hlZFJlc291cmNlOjpUeXBlOjpNYWluUmVzb3VyY2UgfHwgIWZy
YW1lLmlzTWFpbkZyYW1lKCkpIHsKICAgICAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gZnJhbWUu
bWFpbkZyYW1lKCkuZG9jdW1lbnQoKSkgewogICAgICAgICAgICAgaWYgKGRvY3VtZW50ICYmIGRv
Y3VtZW50LT5sb2FkZXIoKSkKICAgICAgICAgICAgICAgICByZXF1ZXN0LnNldElzQXBwQm91bmQo
ZG9jdW1lbnQtPmxvYWRlcigpLT5sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKCkpOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDZjZjNlNGZhNGUy
ZTMzYTE2MmI4NjQzMDU1ZDAzOTlkOGFiODkwODYuLmM2MTA1YThmYTUwYTIxMDU0MjJmNjU0ODEy
MzFjNDA1Y2U5NTE2ZmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAyMS0wMi0yNCAgS2F0ZSBDaGVuZXkgIDxrYXRo
ZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KKworICAgICAgICBBcHAtYm91bmQgcmVxdWVzdCBwYXJh
bWV0ZXIgc2hvdWxkIGJlIHBhc3NlZCB0byBtYWluIHJlc291cmNlIHJlcXVlc3RzIG5vdCB0aGUg
bWFpbiBmcmFtZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjIyMjQxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NDU2MDk2Nj4gCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisKKyAgICAgICAgQWRkcyBtb3JlIHJvYnVzdCB0ZXN0
aW5nIHRvIHJlcG9ydCB3aGVuIGFwcEJvdW5kL25vbkFwcEJvdW5kIHJlcXVlc3RzCisgICAgICAg
IGxvYWQgaW4gdGhlIG5ldHdvcmsgcHJvY2Vzcy4gVGhpcyB0ZXN0cyBub3Qgb25seSB0aGF0IHRo
ZSBtYWluIGZyYW1l4oCZcworICAgICAgICBkb2N1bWVudCBsb2FkZXIgaXMgcHJvcGVybHkgc2V0
LCBidXQgYWxzbyB0aGF0IGFsbCBsb2FkcyBpbml0aWF0ZWQgZnJvbQorICAgICAgICBhcHAtYm91
bmQgcmVxdWVzdHMgYXJlIGFsc28gYXBwLWJvdW5kIHRvIGF2b2lkIHJlZ3Jlc3Npb25zIGxpa2Ug
dGhpcyBpbiB0aGUgZnV0dXJlLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tOgorICAgICAgICBVdGlsaXplIHNvbWUgQ1NQ
IHRlc3QgcmVzb3VyY2VzIHRoYXQgaGF2ZSB0aGUgZXhhY3Qgc2V0dXAgbmVlZGVkIHRvCisgICAg
ICAgIHRlc3QgdGhpcyBmaXguCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RX
S1dlYlZpZXcuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcu
bW06CisgICAgICAgICgtW1dLV2ViVmlldyBhcHBCb3VuZE5hdmlnYXRpb25EYXRhOl0pOgorICAg
ICAgICAoLVtXS1dlYlZpZXcgY2xlYXJBcHBCb3VuZE5hdmlnYXRpb25SZXBvcnRzOl0pOgorCiAy
MDIxLTAyLTIzICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAg
ICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI3MzMwNy4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbSBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5t
bQppbmRleCBmMGI4YWQ5OTg2ZWY3MTEwOGJjODZiOTc4NTc2ZWU1NThkNDNkNmNmLi5kNjBjYjEz
ZTQzZGUyMjBlMjYyMGY5MmY1MzBiZjQ2OGE3YjU2YmIzIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0KKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5
Lm1tCkBAIC0zNyw2ICszNyw3IEBACiAjaW1wb3J0IDxXZWJLaXQvV0tQcmVmZXJlbmNlc1ByaXZh
dGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1VSTFNjaGVtZVRhc2tQcml2YXRlLmg+CiAjaW1wb3J0
IDxXZWJLaXQvV0tVc2VyQ29udGVudENvbnRyb2xsZXJQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJL
aXQvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmcuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYnNp
dGVEYXRhU3RvcmVQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLVXNlckNvbnRlbnRXb3Js
ZC5oPgogI2ltcG9ydCA8V2ViS2l0L19XS1VzZXJTdHlsZVNoZWV0Lmg+CkBAIC0xNDI1LDE5ICsx
NDI2LDI4IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQXBwQm91bmRSZXF1ZXN0KQogICAg
IGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOkNHUmVjdFplcm8gY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAg
TlNTdHJpbmcgKnVybCA9IEAiaHR0cHM6Ly93ZWJraXQub3JnIjsKIAotICAgIHN0YXRpYyBib29s
IGlzRG9uZSA9IGZhbHNlOworICAgIF9fYmxvY2sgYm9vbCBpc0RvbmUgPSBmYWxzZTsKICAgICBO
U011dGFibGVVUkxSZXF1ZXN0ICpub25BcHBCb3VuZFJlcXVlc3QgPSBbTlNNdXRhYmxlVVJMUmVx
dWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzp1cmxdXTsKICAgICBBUFBf
Qk9VTkRfUkVRVUVTVF9BRERJVElPTlMKIAogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0Om5vbkFw
cEJvdW5kUmVxdWVzdF07CiAgICAgW3dlYlZpZXcgX3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5hdmln
YXRpb25dOwogCi0gICAgW3dlYlZpZXcgbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDpeKEJPT0wg
aXNBcHBCb3VuZCkgeworICAgIFt3ZWJWaWV3IF9sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kOl4o
Qk9PTCBpc0FwcEJvdW5kKSB7CiAgICAgICAgIEVYUEVDVF9GQUxTRShpc0FwcEJvdW5kKTsKICAg
ICAgICAgaXNEb25lID0gdHJ1ZTsKICAgICB9XTsKIAogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmaXNEb25lKTsKKyAgICAKKyAgICBpc0RvbmUgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBf
YXBwQm91bmROYXZpZ2F0aW9uRGF0YTpeKHN0cnVjdCBXS0FwcEJvdW5kTmF2aWdhdGlvblRlc3Rp
bmdEYXRhIGRhdGEpIHsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKGRhdGEuaGFzTG9hZGVkQXBwQm91
bmRSZXF1ZXN0VGVzdGluZyk7CisgICAgICAgIEVYUEVDVF9UUlVFKGRhdGEuaGFzTG9hZGVkTm9u
QXBwQm91bmRSZXF1ZXN0VGVzdGluZyk7CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07
CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiB9CiAKIFRFU1QoSW5B
cHBCcm93c2VyUHJpdmFjeSwgQXBwQm91bmRSZXF1ZXN0V2l0aE5hdmlnYXRpb24pCkBAIC0xNDUz
LDE4ICsxNDYzLDk3IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQXBwQm91bmRSZXF1ZXN0
V2l0aE5hdmlnYXRpb24pCiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c3RhcnRpbmdSZXF1ZXN0
XTsKICAgICBbd2ViVmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CiAKLSAg
ICBzdGF0aWMgYm9vbCBpc0RvbmUgPSBmYWxzZTsKKyAgICBfX2Jsb2NrIGJvb2wgaXNEb25lID0g
ZmFsc2U7CisgICAgW3dlYlZpZXcgX2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ6XihCT09MIGlz
QXBwQm91bmQpIHsKKyAgICAgICAgRVhQRUNUX1RSVUUoaXNBcHBCb3VuZCk7CisgICAgICAgIGlz
RG9uZSA9IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlz
RG9uZSk7CisgICAgCisgICAgaXNEb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgX2FwcEJvdW5k
TmF2aWdhdGlvbkRhdGE6XihzdHJ1Y3QgV0tBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSBk
YXRhKSB7CisgICAgICAgIEVYUEVDVF9UUlVFKGRhdGEuaGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0
VGVzdGluZyk7CisgICAgICAgIEVYUEVDVF9GQUxTRShkYXRhLmhhc0xvYWRlZE5vbkFwcEJvdW5k
UmVxdWVzdFRlc3RpbmcpOworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworCisgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworICAgIAorICAgIGlzRG9uZSA9IGZh
bHNlOwogICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKm5vbkFwcEJvdW5kUmVxdWVzdCA9IFtOU011
dGFibGVVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOm5vbkFw
cEJvdW5kVVJMXV07CiAgICAgQVBQX0JPVU5EX1JFUVVFU1RfQURESVRJT05TCisgICAgCisgICAg
aXNEb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgX2NsZWFyQXBwQm91bmROYXZpZ2F0aW9uRGF0
YTpeeworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZpc0RvbmUpOwogCiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6bm9uQXBw
Qm91bmRSZXF1ZXN0XTsKICAgICBbd2ViVmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdh
dGlvbl07CiAKLSAgICBbd2ViVmlldyBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kOl4oQk9PTCBp
c0FwcEJvdW5kKSB7CisgICAgW3dlYlZpZXcgX2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ6XihC
T09MIGlzQXBwQm91bmQpIHsKICAgICAgICAgRVhQRUNUX0ZBTFNFKGlzQXBwQm91bmQpOwogICAg
ICAgICBpc0RvbmUgPSB0cnVlOwogICAgIH1dOwogCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZpc0RvbmUpOworICAgIAorICAgIGlzRG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF9h
cHBCb3VuZE5hdmlnYXRpb25EYXRhOl4oc3RydWN0IFdLQXBwQm91bmROYXZpZ2F0aW9uVGVzdGlu
Z0RhdGEgZGF0YSkgeworICAgICAgICBFWFBFQ1RfRkFMU0UoZGF0YS5oYXNMb2FkZWRBcHBCb3Vu
ZFJlcXVlc3RUZXN0aW5nKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoZGF0YS5oYXNMb2FkZWROb25B
cHBCb3VuZFJlcXVlc3RUZXN0aW5nKTsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsK
KworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKIH0KKworVEVTVChJbkFw
cEJyb3dzZXJQcml2YWN5LCBBcHBCb3VuZFJlcXVlc3RXaXRoU3ViRnJhbWUpCit7CisgICAgYXV0
byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2Nd
IGluaXRdKTsKKyAgICBbY29uZmlndXJhdGlvbiBfc2V0T3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQ
b2xpY3k6QCJzY3JpcHQtc3JjICdub25jZS1iJyJdOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRv
cHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAw
LCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgW3dl
YlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJwYWdlLXdpdGgtY3NwIl07CisKKyAgICBbd2ViVmll
dyB3YWl0Rm9yTWVzc2FnZTpAIk1haW5GcmFtZTogQiJdOworICAgIFt3ZWJWaWV3IHdhaXRGb3JN
ZXNzYWdlOkAiU3ViZnJhbWU6IEIiXTsKKworICAgIF9fYmxvY2sgYm9vbCBpc0RvbmUgPSBmYWxz
ZTsKKyAgICBbd2ViVmlldyBfYXBwQm91bmROYXZpZ2F0aW9uRGF0YTpeKHN0cnVjdCBXS0FwcEJv
dW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhIGRhdGEpIHsKKyAgICAgICAgRVhQRUNUX1RSVUUoZGF0
YS5oYXNMb2FkZWRBcHBCb3VuZFJlcXVlc3RUZXN0aW5nKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNF
KGRhdGEuaGFzTG9hZGVkTm9uQXBwQm91bmRSZXF1ZXN0VGVzdGluZyk7CisgICAgICAgIGlzRG9u
ZSA9IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9u
ZSk7Cit9OworCitURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIE5vbkFwcEJvdW5kUmVxdWVzdFdp
dGhTdWJGcmFtZSkKK3sKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJW
aWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFtjb25maWd1cmF0aW9uIF9zZXRP
dmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeTpAInNjcmlwdC1zcmMgJ25vbmNlLWInIl07CisK
KyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdp
dGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3Vy
YXRpb24uZ2V0KCldKTsKKyAgICBOU011dGFibGVVUkxSZXF1ZXN0ICpub25BcHBCb3VuZFJlcXVl
c3QgPSBbTlNNdXRhYmxlVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5C
dW5kbGVdIFVSTEZvclJlc291cmNlOkAicGFnZS13aXRoLWNzcCIgd2l0aEV4dGVuc2lvbjpAImh0
bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dOworICAgIEFQUF9C
T1VORF9SRVFVRVNUX0FERElUSU9OUworCisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6bm9uQXBw
Qm91bmRSZXF1ZXN0XTsKKworICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAiTWFpbkZyYW1l
OiBCIl07CisgICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJTdWJmcmFtZTogQiJdOworCisg
ICAgX19ibG9jayBib29sIGlzRG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF9hcHBCb3VuZE5h
dmlnYXRpb25EYXRhOiBeKHN0cnVjdCBXS0FwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhIGRh
dGEpIHsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKGRhdGEuaGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0
VGVzdGluZyk7CisgICAgICAgIEVYUEVDVF9UUlVFKGRhdGEuaGFzTG9hZGVkTm9uQXBwQm91bmRS
ZXF1ZXN0VGVzdGluZyk7CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07CisKKyAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7Cit9OworCiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5oIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3LmgKaW5kZXggNWVmM2Y4ZTRmYTZiMGM3MWZi
ZDFiNTQxMTk2ZjY5MDAyYWZkZGQwOS4uNDY2M2RmNzQwODMyNDI2NDgwYzMwODFkOGZhNjIzODk5
MDJjYTI3MiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJW
aWV3LmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3LmgKQEAg
LTY4LDcgKzY4LDYgQEAKIC0gKGlkKW9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6KE5TU3Ry
aW5nICopc2NyaXB0OwogLSAoaWQpb2JqZWN0QnlDYWxsaW5nQXN5bmNGdW5jdGlvbjooTlNTdHJp
bmcgKilzY3JpcHQgd2l0aEFyZ3VtZW50czooTlNEaWN0aW9uYXJ5ICopYXJndW1lbnRzIGVycm9y
OihOU0Vycm9yICoqKWVycm9yT3V0OwogLSAodW5zaWduZWQpd2FpdFVudGlsQ2xpZW50V2lkdGhJ
czoodW5zaWduZWQpZXhwZWN0ZWRDbGllbnRXaWR0aDsKLS0gKHZvaWQpbGFzdE5hdmlnYXRpb25X
YXNBcHBCb3VuZDoodm9pZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxlcjsKIEBlbmQKIAogQGlu
dGVyZmFjZSBUZXN0TWVzc2FnZUhhbmRsZXIgOiBOU09iamVjdCA8V0tTY3JpcHRNZXNzYWdlSGFu
ZGxlcj4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmll
dy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbQppbmRleCBl
NTcyOTgyMjRhMWI2YjVkN2QzYzI4YzU0OWZmOGNlOGI2NTIyMzhjLi4yZTliMTM0MzllMjg1ZmQy
MjdjZmMxOWM1MTczNjUzYzExYjY0N2UyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L2NvY29hL1Rlc3RXS1dlYlZpZXcubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9U
ZXN0V0tXZWJWaWV3Lm1tCkBAIC0yNTEsMTAgKzI1MSw2IEBAIHN0YXRpYyBOU1N0cmluZyAqb3Zl
cnJpZGVCdW5kbGVJZGVudGlmaWVyKGlkLCBTRUwpCiAgICAgcmV0dXJuIGNsaWVudFdpZHRoOwog
fQogCi0tICh2b2lkKWxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ6KHZvaWQoXikoQk9PTCkpY29t
cGxldGlvbkhhbmRsZXIKLXsKLSAgICBbc2VsZiBfbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDpj
b21wbGV0aW9uSGFuZGxlcl07Ci19CiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBUZXN0TWVzc2Fn
ZUhhbmRsZXIgewo=
</data>

          </attachment>
      

    </bug>

</bugzilla>