<?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>194131</bug_id>
          
          <creation_ts>2019-01-31 17:38:22 -0800</creation_ts>
          <short_desc>[WPE][GTK] Load events may occur in unexpected order when JS redirects page before subresource load finishes</short_desc>
          <delta_ts>2019-03-12 01:30:50 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>194208</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Catanzaro">mcatanzaro</reporter>
          <assigned_to name="Michael Catanzaro">mcatanzaro</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>berto</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>gustavo</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>rniwa</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1500932</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-01-31 17:38:22 -0800</bug_when>
    <thetext>Save the following as test.html and load it in MiniBrowser:

&lt;img src=&quot;https://www.example.com:8080/example.png&quot;/&gt;
&lt;script&gt;
function run()
{
    location = &quot;https://www.example.com:8080&quot;;
}

setInterval(run(),100000);
&lt;/script&gt;

Open that with WEBKIT_DEBUG=&quot;loading&quot; and observe the load proceeds as follows: didStartProvisionalLoadForFrame -&gt; didCommitLoadForFrame -&gt; didStartProvisionalLoadForFrame.

But I think the expected behavior would be  didStartProvisionalLoadForFrame -&gt; didCommitLoadForFrame -&gt; didFinishLoadForFrame -&gt; didStartProvisionalLoadForFrame. Right?

Applications (at least applications using the GTK/WPE APIs) expect load events to occur in the well-defined order start -&gt; reload (optional) -&gt; committed -&gt; finished. When start occurs before finished, very strange bugs occur. It would be nice to fix this in WebCore rather than papering over it at the GTK/WPE API layer. (We used to paper over weird load event quirks there, but it resulted in many bugs, and I think this is the first trouble we&apos;ve found since we stopped doing so.)

Note: this is related to Epiphany CVE-2019-6251.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1500985</commentid>
    <comment_count>1</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-01-31 20:48:46 -0800</bug_when>
    <thetext>After a few hours staring at FrameLoader.cpp, I think the current behavior of WebCore is OK -- because the load really never finishes -- and we could choose to just run the finished event at the WPE/GTK API level. Alternatively, it looks like FrameLoader::setState would be a good place to run m_client.dispatchDidFinishLoad to fake the finish, but I&apos;d worry about unintended side effects. CCing people who&apos;ve touched loader and NavigationClient for opinions on intended behavior.

P.S. In this example, didFinishDocumentLoadForFrame is executed, but the subresource never finishes because there&apos;s no HTTP server running on www.example.com:8080, so didFinishLoadForFrame never runs. (We have to use a valid host to ensure it resolves, or the load will fail.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1501106</commentid>
    <comment_count>2</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-02-01 08:17:38 -0800</bug_when>
    <thetext>We could also add a new callback to FrameLoaderClient to indicate a load has been cancelled without being finished, but it would just always be called immediately before load started, so it&apos;s not needed. The higher layers have enough information to add it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1501207</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-02-01 12:09:35 -0800</bug_when>
    <thetext>I&apos;m not sure there is anything wrong with the current behavior in WebCore since the load never finished before new one had started.

I guess there is nothing with adding a new delegate callback to indicate that the previous load had been canceled / stopped before new load started.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1501224</commentid>
    <comment_count>4</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-02-01 12:51:36 -0800</bug_when>
    <thetext>I&apos;m leaning towards just modifying the WPE/GTK API layer for now, and leave WebCore unchanged unless Carlos Garcia suggests otherwise.

And I&apos;ve discovered that WPE/GTK API does not actually guarantee LOAD_COMMITTED always occurs if there is an error. Only LOAD_FINISHED is guaranteed. So it&apos;s actually legit for us to skip LOAD_COMMITTED (although it&apos;s not being skipped in my test case there). But I&apos;ll document this, because otherwise code might expect that to only be skipped on error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1501251</commentid>
    <comment_count>5</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-02-01 13:27:41 -0800</bug_when>
    <thetext>I&apos;m planning to add this documentation:

     * If a new load is started when the previous load has not yet
     * finished, or if the load fails, then %WEBKIT_LOAD_COMMITTED may
     * or may not be emitted. In contrast, %WEBKIT_LOAD_FINISHED is
     * guaranteed to be emitted before the next %WEBKIT_LOAD_STARTED,
     * even if the load did not actually complete.

Carlos, does it look OK? It has the disadvantage that apps no longer have any way to detect the load has been cancelled by looking for %WEBKIT_LOAD_FINISHED to be skipped. We could alternatively document that %WEBKIT_LOAD_FINISHED is simply not guaranteed to occur and expect that apps be prepared for it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1501295</commentid>
    <comment_count>6</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-02-01 14:43:27 -0800</bug_when>
    <thetext>Yet another alternative would be to treat it as a cancellation and emit load-failed *and* LOAD_FINISHED. We have a lot of options here....</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1501697</commentid>
    <comment_count>7</comment_count>
      <attachid>361033</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-02-03 16:41:58 -0800</bug_when>
    <thetext>Created attachment 361033
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1501698</commentid>
    <comment_count>8</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-02-03 16:42:58 -0800</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1501699</commentid>
    <comment_count>9</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-02-03 16:43:09 -0800</bug_when>
    <thetext>Attachment 361033 did not pass style-queue:


ERROR: Source/WebKit/UIProcess/API/glib/WebKitNavigationClient.cpp:49:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 1 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1501710</commentid>
    <comment_count>10</comment_count>
      <attachid>361033</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-02-03 18:01:41 -0800</bug_when>
    <thetext>Comment on attachment 361033
Patch

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

&gt; Source/WebKit/UIProcess/API/glib/WebKitNavigationClient.cpp:71
&gt; +            // ensure the Finished event occurs. (But Committed may skipped.)

Should read: &quot;But Committed may be skipped.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1501711</commentid>
    <comment_count>11</comment_count>
      <attachid>361033</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-02-03 18:02:55 -0800</bug_when>
    <thetext>Comment on attachment 361033
Patch

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

&gt; Source/WebKit/ChangeLog:11
&gt; +        If a new page load starts before the previous one completes, run LOAD_FINISHED before
&gt; +        LOAD_STARTED to avoid confusing applications that expect LOAD_FINISHED to occur. We could
&gt; +        also perhaps run load-failed as well, with a cancellation error, but this patch doesn&apos;t
&gt; +        implement that.

BTW I think we probably should run load-failed, otherwise  it looks like a successful load. That&apos;s a bit harder, though, and probably WebCore should emit the error....</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1501769</commentid>
    <comment_count>12</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-02-04 00:05:59 -0800</bug_when>
    <thetext>I&apos;m not sure I understand. When a new load starts, previous ongoing load should be cancelled, no? What I would expect is that load-failed is called with cancelled error, which is generally handled as a special case by applications (not showing any error message). I don&apos;t understand the committed behavior either, do you mean that committed is not called even after the ongoing load was already committed? or is it because the load is cancelled before being committed? The former sounds like a bug to me, the latter is what I would expect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1501809</commentid>
    <comment_count>13</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-02-04 07:16:21 -0800</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #12)
&gt; I&apos;m not sure I understand. When a new load starts, previous ongoing load
&gt; should be cancelled, no? What I would expect is that load-failed is called
&gt; with cancelled error, which is generally handled as a special case by
&gt; applications (not showing any error message).

Yeah, I think I want to do that too. The current behavior is that it transitions from COMMITTED -&gt; STARTED, skipping FINISHED and not emitting load-failed at all. My patch adds in only the FINISHED. I think I agree that it would be best to do load-failed as well. The implementation problem is we then need to either (a) remember in the navigation client the URI we are loading, so we can fake it when emitting load-failed, which isn&apos;t great, or else (b) change WebCore to emit the cancellation, which is probably too hard for me.

&gt; I don&apos;t understand the
&gt; committed behavior either, do you mean that committed is not called even
&gt; after the ongoing load was already committed?

No.

&gt; or is it because the load is
&gt; cancelled before being committed? The former sounds like a bug to me, the
&gt; latter is what I would expect.

Right, I agree we should expect it, so my patch just clarifies that in the documentation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1501810</commentid>
    <comment_count>14</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-02-04 07:23:03 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #13)
&gt; (In reply to Carlos Garcia Campos from comment #12)
&gt; &gt; I&apos;m not sure I understand. When a new load starts, previous ongoing load
&gt; &gt; should be cancelled, no? What I would expect is that load-failed is called
&gt; &gt; with cancelled error, which is generally handled as a special case by
&gt; &gt; applications (not showing any error message).
&gt; 
&gt; Yeah, I think I want to do that too. The current behavior is that it
&gt; transitions from COMMITTED -&gt; STARTED, skipping FINISHED and not emitting
&gt; load-failed at all. My patch adds in only the FINISHED. I think I agree that
&gt; it would be best to do load-failed as well. The implementation problem is we
&gt; then need to either (a) remember in the navigation client the URI we are
&gt; loading, so we can fake it when emitting load-failed, which isn&apos;t great, or
&gt; else (b) change WebCore to emit the cancellation, which is probably too hard
&gt; for me.

I don&apos;t see why it would be too hard for you.

&gt; &gt; I don&apos;t understand the
&gt; &gt; committed behavior either, do you mean that committed is not called even
&gt; &gt; after the ongoing load was already committed?
&gt; 
&gt; No.
&gt; 
&gt; &gt; or is it because the load is
&gt; &gt; cancelled before being committed? The former sounds like a bug to me, the
&gt; &gt; latter is what I would expect.
&gt; 
&gt; Right, I agree we should expect it, so my patch just clarifies that in the
&gt; documentation.

I think it makes it more confusing, that&apos;s why I thought you meant committed was not emitted even when the load was committed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1509519</commentid>
    <comment_count>15</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-02-24 19:08:52 -0800</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #14)
&gt; &gt; Yeah, I think I want to do that too. The current behavior is that it
&gt; &gt; transitions from COMMITTED -&gt; STARTED, skipping FINISHED and not emitting
&gt; &gt; load-failed at all. My patch adds in only the FINISHED. I think I agree that
&gt; &gt; it would be best to do load-failed as well. The implementation problem is we
&gt; &gt; then need to either (a) remember in the navigation client the URI we are
&gt; &gt; loading, so we can fake it when emitting load-failed, which isn&apos;t great, or
&gt; &gt; else (b) change WebCore to emit the cancellation, which is probably too hard
&gt; &gt; for me.
&gt; 
&gt; I don&apos;t see why it would be too hard for you.

I spent several hours investigating this. It&apos;s hard. As far as I can tell, WebCore isn&apos;t the right place after all, since the FrameLoader for the previous page load is different than the FrameLoader for the new load, so I guess it should be solved at a higher level than FrameLoader. The next-higher level is WebFrameLoaderClient, which is surely the wrong place, and then WebPageProxy. But WebPageProxy&apos;s PageLoadState member is carefully designed to make it impossible to actually check the current page load state, which is frustrating. And then the next-higher level is WPE/GTK NavigationClient, so then we&apos;re back to working around this at the API level.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1509533</commentid>
    <comment_count>16</comment_count>
      <attachid>362880</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-02-24 20:58:03 -0800</bug_when>
    <thetext>Created attachment 362880
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1509534</commentid>
    <comment_count>17</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-02-24 21:00:01 -0800</bug_when>
    <thetext>Attachment 362880 did not pass style-queue:


ERROR: Source/WebKit/UIProcess/API/glib/WebKitNavigationClient.cpp:57:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 1 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1509535</commentid>
    <comment_count>18</comment_count>
      <attachid>362881</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-02-24 21:01:02 -0800</bug_when>
    <thetext>Created attachment 362881
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1509537</commentid>
    <comment_count>19</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-02-24 21:03:24 -0800</bug_when>
    <thetext>Attachment 362881 did not pass style-queue:


ERROR: Source/WebKit/UIProcess/API/glib/WebKitNavigationClient.cpp:57:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 1 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1509581</commentid>
    <comment_count>20</comment_count>
      <attachid>362881</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-02-25 02:20:11 -0800</bug_when>
    <thetext>Comment on attachment 362881
Patch

Do we really need to add another page load state tracker? Why can&apos;t we do this in WebPageProxy with PageLoadState?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1509639</commentid>
    <comment_count>21</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-02-25 08:11:30 -0800</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #20)
&gt; Comment on attachment 362881 [details]
&gt; Patch
&gt; 
&gt; Do we really need to add another page load state tracker? Why can&apos;t we do
&gt; this in WebPageProxy with PageLoadState?

We could do it for this bug, at the cost of having an API-level state machine, which is nice because it all but guarantees it won&apos;t be changed except by someone familiar with WPE/GTK API. But anyway, yes, I think we can do it in PageLoadState. For this bug, all we&apos;d need to do is have WebPageProxy emit extra loadFailed events on the navigation/loader client. Should be easy, and possible to get owner approval for this.

But then we need to consider bug #194208 as well, which is the next part. And that gets trickier, since it requires us to maintain a fake URL, which would then have to be done in WebPageProxy instead of WebKitWebView, as I had been planning. That might be hard to get owner approval for. Maybe you&apos;d better look at my patch in that bug now, too. If we want to do this in WebPageProxy, it will probably need to become one bug report with the two handled together.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1511271</commentid>
    <comment_count>22</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-02-28 19:42:36 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #21)
&gt; But then we need to consider bug #194208 as well, which is the next part.
&gt; And that gets trickier, since it requires us to maintain a fake URL, which
&gt; would then have to be done in WebPageProxy instead of WebKitWebView, as I
&gt; had been planning.

That&apos;s not true, it can still be done in WebKitWebView. Problem is we need somewhere to trigger the call to webkitWebViewResetToLastCommittedURI. If we do the reset only when a new load starts before the previous one finished, then that would require a new vfunc in APINavigationClient, which would be nice to avoid. But I think if we do the reset always for any cancelled load, we would not need a new vfunc and things should be fine. Let me try that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1511419</commentid>
    <comment_count>23</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-03-01 09:29:00 -0800</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #20)
&gt; Do we really need to add another page load state tracker? Why can&apos;t we do
&gt; this in WebPageProxy with PageLoadState?

Here&apos;s a new version. Needs owner approval (CC: Alex and Youenn).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1511421</commentid>
    <comment_count>24</comment_count>
      <attachid>363333</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-03-01 09:29:15 -0800</bug_when>
    <thetext>Created attachment 363333
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1511465</commentid>
    <comment_count>25</comment_count>
      <attachid>363333</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-03-01 10:56:16 -0800</bug_when>
    <thetext>Comment on attachment 363333
Patch

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

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:3895
&gt; +            m_navigationClient-&gt;didFailProvisionalNavigationWithError(*this, *frame, previousNavigation, { ResourceError::Type::Cancellation }, process-&gt;transformHandlesToObjects(userData.object()).get());
&gt; +        else if (previousState == PageLoadState::State::Committed)
&gt; +            m_navigationClient-&gt;didFailNavigationWithError(*this, *frame, previousNavigation, { ResourceError::Type::Cancellation }, m_process-&gt;transformHandlesToObjects(userData.object()).get());

I don&apos;t think invoking clients in this case is backwards compatible change.
Please make this change in such a way that it won&apos;t affect Apple maintained ports (macOS / iOS).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1511535</commentid>
    <comment_count>26</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-03-01 12:38:48 -0800</bug_when>
    <thetext>OK, I&apos;ve obsoleted the new patch (attachment #363333) and requested r? again for the previous platform-specific version of the patch (attachment #362881).

(In reply to Carlos Garcia Campos from comment #20)
&gt; Do we really need to add another page load state tracker? Why can&apos;t we do
&gt; this in WebPageProxy with PageLoadState?

That actually was almost nice, but doesn&apos;t do us any good if Apple doesn&apos;t want it. So back to the original patch. Please remember this is blocking a security bug that was reported several months ago.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1511538</commentid>
    <comment_count>27</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-03-01 12:40:52 -0800</bug_when>
    <thetext>Note that updating PageLoadState would be okay. It&apos;s just that we need some mechanism to preserve the old behavior in our ports. But GTK+ port specific solution would be okay too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1511662</commentid>
    <comment_count>28</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-03-01 16:05:03 -0800</bug_when>
    <thetext>I mean, we could add a new vfunc to NavigationClient, didStartLoadWithoutFinishingPreviousLoad, something like that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1513447</commentid>
    <comment_count>29</comment_count>
      <attachid>363333</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-03-07 01:08:56 -0800</bug_when>
    <thetext>Comment on attachment 363333
Patch

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

I think the behavior has changed in WebCore at some point. We need to update the existing unit tests, because we have different expectations see:

https://trac.webkit.org/browser/webkit/trunk/Tools/TestWebKitAPI/glib/WebKitGLib/LoadTrackingTest.cpp#L54
https://trac.webkit.org/browser/webkit/trunk/Tools/TestWebKitAPI/glib/WebKitGLib/LoadTrackingTest.cpp#L74

We expect the load to be cancelled when a new load starts. We need to update that in the tests too.

&gt;&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:3895
&gt;&gt; +            m_navigationClient-&gt;didFailNavigationWithError(*this, *frame, previousNavigation, { ResourceError::Type::Cancellation }, m_process-&gt;transformHandlesToObjects(userData.object()).get());
&gt; 
&gt; I don&apos;t think invoking clients in this case is backwards compatible change.
&gt; Please make this change in such a way that it won&apos;t affect Apple maintained ports (macOS / iOS).

This is all happening in the UI process, but the previous load will not be actually stopped, shouldn&apos;t we ensure FrameLoader::stopForUserCancel() is called in the web process?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1513476</commentid>
    <comment_count>30</comment_count>
      <attachid>363867</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-03-07 03:43:44 -0800</bug_when>
    <thetext>Created attachment 363867
Patch

What about something like this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1513477</commentid>
    <comment_count>31</comment_count>
      <attachid>363868</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-03-07 03:55:18 -0800</bug_when>
    <thetext>Created attachment 363868
Fix WPE build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1513516</commentid>
    <comment_count>32</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-03-07 08:55:14 -0800</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #30)
&gt; What about something like this?

I like this better than either of mine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1513517</commentid>
    <comment_count>33</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-03-07 08:56:07 -0800</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #29)
&gt; This is all happening in the UI process, but the previous load will not be
&gt; actually stopped, shouldn&apos;t we ensure FrameLoader::stopForUserCancel() is
&gt; called in the web process?

It&apos;s not necessarily a user cancel, though. E.g. in the case we are testing, the load is cancelled by JavaScript, not by API request.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1513996</commentid>
    <comment_count>34</comment_count>
      <attachid>363868</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-03-08 07:38:44 -0800</bug_when>
    <thetext>Comment on attachment 363868
Fix WPE build

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

&gt; Source/WebKit/UIProcess/PageLoadState.h:124
&gt; +    State state() const { return m_committedState.state; }

Ah, I think this is probably not exposed by design... that&apos;s why my patches are so much more complex. Everything is a lot easier if we expose PageLoadState::state.

It&apos;s not the first time I&apos;ve wanted to be able to get at the State of a PageLoadState, so if Apple is OK with this, then great.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1514456</commentid>
    <comment_count>35</comment_count>
      <attachid>363868</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-03-09 18:29:37 -0800</bug_when>
    <thetext>Comment on attachment 363868
Fix WPE build

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

&gt;&gt; Source/WebKit/UIProcess/PageLoadState.h:124
&gt;&gt; +    State state() const { return m_committedState.state; }
&gt; 
&gt; Ah, I think this is probably not exposed by design... that&apos;s why my patches are so much more complex. Everything is a lot easier if we expose PageLoadState::state.
&gt; 
&gt; It&apos;s not the first time I&apos;ve wanted to be able to get at the State of a PageLoadState, so if Apple is OK with this, then great.

Yeah, let&apos;s add isFinished() instead. We don&apos;t want to repeat the mistake of WebCore where every class depends on each other&apos;s states.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1514723</commentid>
    <comment_count>36</comment_count>
      <attachid>364239</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-03-11 01:05:17 -0700</bug_when>
    <thetext>Created attachment 364239
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1514806</commentid>
    <comment_count>37</comment_count>
      <attachid>364239</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-03-11 09:38:04 -0700</bug_when>
    <thetext>Comment on attachment 364239
Patch

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

&gt; Source/WebKit/ChangeLog:17
&gt; +        (API::ViewClient::willStartLoad): Add willStartLoad() to API::ViowClient

ViewClient

&gt; Source/WebKit/UIProcess/PageLoadState.h:126
&gt;      bool isLoading() const;
&gt; +    bool isProvisional() const { return m_committedState.state == State::Provisional; }
&gt; +    bool isCommitted() const { return m_committedState.state == State::Committed; }
&gt; +    bool isFinished() const { return m_committedState.state == State::Finished; }

I think we should do this, because easy problems are unnecessarily hard if we don&apos;t expose the load state of PageLoadState. (You can see my previous two attempts at this fix.) It needs owner approval, though. This is the only part of the patch that requires an owner. The rest is r=me.

&gt; Tools/TestWebKitAPI/Tests/WebKitGLib/TestLoaderClient.cpp:247
&gt; +    const char* uri = webkit_web_view_get_uri(webView);
&gt; +    if (g_str_has_suffix(uri, &quot;/normal&quot;))
&gt; +        test-&gt;m_activeURI = uri;

Smart.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1514811</commentid>
    <comment_count>38</comment_count>
      <attachid>364239</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-03-11 09:39:36 -0700</bug_when>
    <thetext>Comment on attachment 364239
Patch

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

&gt;&gt; Source/WebKit/UIProcess/PageLoadState.h:126
&gt;&gt; +    bool isFinished() const { return m_committedState.state == State::Finished; }
&gt; 
&gt; I think we should do this, because easy problems are unnecessarily hard if we don&apos;t expose the load state of PageLoadState. (You can see my previous two attempts at this fix.) It needs owner approval, though. This is the only part of the patch that requires an owner. The rest is r=me.

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1514815</commentid>
    <comment_count>39</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-03-11 09:42:25 -0700</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #35)
&gt; Yeah, let&apos;s add isFinished() instead. We don&apos;t want to repeat the mistake of
&gt; WebCore where every class depends on each other&apos;s states.

Oh, I missed this comment. We need more than just isFinished(), since the load-failed signal is emitted differently based on whether the load is provisional or committed. (Alternative is to build our own API-layer state machine, which Carlos is trying to avoid here.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1515348</commentid>
    <comment_count>40</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-03-12 00:13:00 -0700</bug_when>
    <thetext>Yet another approach here is to make this behavior configurable in WebCore, or add new delegate callbacks in WebCore. For example, it&apos;s possible that the proposed behavior in GTK+ is also compatible with existing iOS / macOS apps but we need a way to toggle it so that we can disable it if it&apos;s not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1515361</commentid>
    <comment_count>41</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-03-12 01:30:50 -0700</bug_when>
    <thetext>Committed r242788: &lt;https://trac.webkit.org/changeset/242788&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>361033</attachid>
            <date>2019-02-03 16:41:58 -0800</date>
            <delta_ts>2019-02-24 20:58:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194131-20190203184157.patch</filename>
            <type>text/plain</type>
            <size>17282</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwODUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDYxZTczYjQ5MGJlOTYzZDAz
ZGMyMDY1YjVhNTljMjAwMjA0NjI5ODYuLmY3ODllYzJlZDY3MGNlYTM3MzU4OWJhODE4ZGY4Nzdj
N2E5NTk0NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTktMDItMDMgIE1pY2hhZWwg
Q2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtXUEVdW0dUS10g
TG9hZCBldmVudHMgbWF5IG9jY3VyIGluIHVuZXhwZWN0ZWQgb3JkZXIgd2hlbiBKUyByZWRpcmVj
dHMgcGFnZSBiZWZvcmUgc3VicmVzb3VyY2UgbG9hZCBmaW5pc2hlcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0MTMxCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSWYgYSBuZXcgcGFnZSBsb2FkIHN0YXJ0
cyBiZWZvcmUgdGhlIHByZXZpb3VzIG9uZSBjb21wbGV0ZXMsIHJ1biBMT0FEX0ZJTklTSEVEIGJl
Zm9yZQorICAgICAgICBMT0FEX1NUQVJURUQgdG8gYXZvaWQgY29uZnVzaW5nIGFwcGxpY2F0aW9u
cyB0aGF0IGV4cGVjdCBMT0FEX0ZJTklTSEVEIHRvIG9jY3VyLiBXZSBjb3VsZAorICAgICAgICBh
bHNvIHBlcmhhcHMgcnVuIGxvYWQtZmFpbGVkIGFzIHdlbGwsIHdpdGggYSBjYW5jZWxsYXRpb24g
ZXJyb3IsIGJ1dCB0aGlzIHBhdGNoIGRvZXNuJ3QKKyAgICAgICAgaW1wbGVtZW50IHRoYXQuCisK
KyAgICAgICAgKEl0J3Mgc3RpbGwgcG9zc2libGUgZm9yIExPQURfQ09NTUlUVEVEIHRvIGJlIHNr
aXBwZWQsIGFsdGhvdWdoIG5vdCB3aGVuIHRoZSBuZXcgbG9hZCBpcworICAgICAgICB0cmlnZ2Vy
ZWQgYnkgSlMsIHNpbmNlIG9mIGNvdXJzZSB0aGVyZSdzIG5vIEpTIHRvIHJ1biBiZWZvcmUgTE9B
RF9DT01NSVRURUQuKQorCisgICAgICAgIEFsc28sIGFkZCBhIHN0YXRlIHRyYWNrZXIgdG8gZW5z
dXJlIHdlIGRvbid0IG1ha2UgdW5leHBlY3RlZCBzdGF0ZSB0cmFuc2l0aW9ucyBsaWtlIHRoaXMu
CisgICAgICAgIFdpdGhvdXQgdGhlIHN0YXRlIHRyYWNrZXIsIHdlIGFyZSBwdXR0aW5nIHRvbyBt
dWNoIHRydXN0IGluIEZyYW1lTG9hZGVyIHRvIGVtaXQgZXZlbnRzIGluCisgICAgICAgIHRoZSBv
cmRlciB3ZSBleHBlY3QsIGFuZCBGcmFtZUxvYWRlciBpcyBleHRyZW1lbHkgY29tcGxleCBzbyB0
aGlzIGlzIGRpZmZpY3VsdCB0byBndWFyYW50ZWUuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0TmF2aWdhdGlvbkNsaWVudC5jcHA6CisgICAgICAgIChOYXZpZ2F0aW9uU3Rh
dGVUcmFja2VyOjpOYXZpZ2F0aW9uU3RhdGVUcmFja2VyKToKKyAgICAgICAgKE5hdmlnYXRpb25T
dGF0ZVRyYWNrZXI6OmlzRmluaXNoZWRTdGF0ZSk6CisgICAgICAgIChOYXZpZ2F0aW9uU3RhdGVU
cmFja2VyOjphZHZhbmNlU3RhdGUpOgorICAgICAgICAoTmF2aWdhdGlvbkNsaWVudDo6TmF2aWdh
dGlvbkNsaWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcu
Y3BwOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQpOgorCiAyMDE5LTAyLTAx
ICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KIAogICAgICAgICBb
U09VUF0gSW1wcm92ZSB1c2Ugb2YgUEFMOjpTZXNzaW9uSUQgaW4gV2ViS2l0Q29va2llTWFuYWdl
cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0TmF2
aWdhdGlvbkNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXROYXZpZ2F0aW9uQ2xpZW50LmNwcAppbmRleCAwOGFiNjlhMDUwMTg0MjM3NDhjZjEzMmEwMzYx
MDAxMjE0NWUyY2Q4Li5mYzFjOTQzMTIzYzVkMmU0OGQ3ZmQ3Y2JkYWM4NzQ5ZjdlMWI0NzhhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXROYXZpZ2F0
aW9uQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXROYXZpZ2F0aW9uQ2xpZW50LmNwcApAQCAtMzQsMjEgKzM0LDg3IEBACiB1c2luZyBuYW1lc3Bh
Y2UgV2ViS2l0OwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKK2VudW0gY2xhc3MgTmF2aWdh
dGlvblN0YXRlIHsKKyAgICBOb3RTdGFydGVkLAorICAgIFN0YXJ0ZWQsCisgICAgUmVkaXJlY3Rl
ZCwKKyAgICBGYWlsZWRQcm92aXNpb25hbE5hdmlnYXRpb24sCisgICAgQ29tbWl0dGVkLAorICAg
IEZhaWxlZE5hdmlnYXRpb24sCisgICAgRmluaXNoZWQsCit9OworCitjbGFzcyBOYXZpZ2F0aW9u
U3RhdGVUcmFja2VyIHsKK3B1YmxpYzoKKyAgICB1c2luZyBNdXN0RmluaXNoTmF2aWdhdGlvbkNh
bGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkICh2b2lkKT47CisKKyAgICBleHBsaWNpdCBOYXZp
Z2F0aW9uU3RhdGVUcmFja2VyKE11c3RGaW5pc2hOYXZpZ2F0aW9uQ2FsbGJhY2smJiBtdXN0Rmlu
aXNoTmF2aWdhdGlvbkNhbGxiYWNrKQorICAgICAgICA6IG1fbXVzdEZpbmlzaE5hdmlnYXRpb25D
YWxsYmFjayhXVEZNb3ZlKG11c3RGaW5pc2hOYXZpZ2F0aW9uQ2FsbGJhY2spKQorICAgIHsKKyAg
ICB9CisKKyAgICBzdGF0aWMgYm9vbCBpc0ZpbmlzaGVkU3RhdGUoTmF2aWdhdGlvblN0YXRlIHN0
YXRlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0YXRlID09IE5hdmlnYXRpb25TdGF0ZTo6RmFp
bGVkUHJvdmlzaW9uYWxOYXZpZ2F0aW9uCisgICAgICAgICAgICB8fCBzdGF0ZSA9PSBOYXZpZ2F0
aW9uU3RhdGU6OkZhaWxlZE5hdmlnYXRpb24KKyAgICAgICAgICAgIHx8IHN0YXRlID09IE5hdmln
YXRpb25TdGF0ZTo6RmluaXNoZWQ7CisgICAgfQorCisgICAgdm9pZCBhZHZhbmNlU3RhdGUoTmF2
aWdhdGlvblN0YXRlIHN0YXRlKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChzdGF0ZSkgeworICAg
ICAgICBjYXNlIE5hdmlnYXRpb25TdGF0ZTo6Tm90U3RhcnRlZDoKKyAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTmF2aWdh
dGlvblN0YXRlOjpTdGFydGVkOgorICAgICAgICAgICAgLy8gSWYgU3RhcnRlZCBpcyByZWNlaXZl
ZCBiZWZvcmUgQ29tbWl0dGVkIG9yIEZpbmlzaGVkLCB3ZSB3YW50IHRvCisgICAgICAgICAgICAv
LyBlbnN1cmUgdGhlIEZpbmlzaGVkIGV2ZW50IG9jY3Vycy4gKEJ1dCBDb21taXR0ZWQgbWF5IHNr
aXBwZWQuKQorICAgICAgICAgICAgaWYgKG1fY3VycmVudFN0YXRlICE9IE5hdmlnYXRpb25TdGF0
ZTo6Tm90U3RhcnRlZCAmJiAhaXNGaW5pc2hlZFN0YXRlKG1fY3VycmVudFN0YXRlKSkKKyAgICAg
ICAgICAgICAgICBtX211c3RGaW5pc2hOYXZpZ2F0aW9uQ2FsbGJhY2soKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIE5hdmlnYXRpb25TdGF0ZTo6UmVkaXJlY3RlZDoKKyAgICAg
ICAgICAgIEFTU0VSVChtX2N1cnJlbnRTdGF0ZSA9PSBOYXZpZ2F0aW9uU3RhdGU6OlN0YXJ0ZWQg
fHwgbV9jdXJyZW50U3RhdGUgPT0gTmF2aWdhdGlvblN0YXRlOjpSZWRpcmVjdGVkKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE5hdmlnYXRpb25TdGF0ZTo6RmFpbGVkUHJvdmlz
aW9uYWxOYXZpZ2F0aW9uOgorICAgICAgICAgICAgQVNTRVJUKG1fY3VycmVudFN0YXRlID09IE5h
dmlnYXRpb25TdGF0ZTo6U3RhcnRlZCB8fCBtX2N1cnJlbnRTdGF0ZSA9PSBOYXZpZ2F0aW9uU3Rh
dGU6OlJlZGlyZWN0ZWQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTmF2aWdh
dGlvblN0YXRlOjpDb21taXR0ZWQ6CisgICAgICAgICAgICBBU1NFUlQobV9jdXJyZW50U3RhdGUg
PT0gTmF2aWdhdGlvblN0YXRlOjpTdGFydGVkIHx8IG1fY3VycmVudFN0YXRlID09IE5hdmlnYXRp
b25TdGF0ZTo6UmVkaXJlY3RlZCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBO
YXZpZ2F0aW9uU3RhdGU6OkZhaWxlZE5hdmlnYXRpb246CisgICAgICAgICAgICBBU1NFUlQobV9j
dXJyZW50U3RhdGUgPT0gTmF2aWdhdGlvblN0YXRlOjpDb21taXR0ZWQpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgTmF2aWdhdGlvblN0YXRlOjpGaW5pc2hlZDoKKyAgICAgICAg
ICAgIEFTU0VSVChtX2N1cnJlbnRTdGF0ZSA9PSBOYXZpZ2F0aW9uU3RhdGU6OkNvbW1pdHRlZCk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIG1fY3VycmVudFN0YXRl
ID0gc3RhdGU7CisgICAgfQorCitwcml2YXRlOgorICAgIE5hdmlnYXRpb25TdGF0ZSBtX2N1cnJl
bnRTdGF0ZSA9IE5hdmlnYXRpb25TdGF0ZTo6Tm90U3RhcnRlZDsKKyAgICBNdXN0RmluaXNoTmF2
aWdhdGlvbkNhbGxiYWNrIG1fbXVzdEZpbmlzaE5hdmlnYXRpb25DYWxsYmFjazsKK307CisKIGNs
YXNzIE5hdmlnYXRpb25DbGllbnQgOiBwdWJsaWMgQVBJOjpOYXZpZ2F0aW9uQ2xpZW50IHsKIHB1
YmxpYzoKICAgICBleHBsaWNpdCBOYXZpZ2F0aW9uQ2xpZW50KFdlYktpdFdlYlZpZXcqIHdlYlZp
ZXcpCiAgICAgICAgIDogbV93ZWJWaWV3KHdlYlZpZXcpCisgICAgICAgICwgbV9uYXZpZ2F0aW9u
U3RhdGVUcmFja2VyKFt0aGlzXSB7IHdlYmtpdFdlYlZpZXdMb2FkQ2hhbmdlZChtX3dlYlZpZXcs
IFdFQktJVF9MT0FEX0ZJTklTSEVEKTsgfSkKICAgICB7CiAgICAgfQogCiBwcml2YXRlOgogICAg
IHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbE5hdmlnYXRpb24oV2ViUGFnZVByb3h5JiwgQVBJOjpO
YXZpZ2F0aW9uKiwgQVBJOjpPYmplY3QqIC8qIHVzZXJEYXRhICovKSBvdmVycmlkZQogICAgIHsK
KyAgICAgICAgbV9uYXZpZ2F0aW9uU3RhdGVUcmFja2VyLmFkdmFuY2VTdGF0ZShOYXZpZ2F0aW9u
U3RhdGU6OlN0YXJ0ZWQpOwogICAgICAgICB3ZWJraXRXZWJWaWV3TG9hZENoYW5nZWQobV93ZWJW
aWV3LCBXRUJLSVRfTE9BRF9TVEFSVEVEKTsKICAgICB9CiAKICAgICB2b2lkIGRpZFJlY2VpdmVT
ZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTmF2aWdhdGlvbihXZWJQYWdlUHJveHkmLCBBUEk6
Ok5hdmlnYXRpb24qLCBBUEk6Ok9iamVjdCogLyogdXNlckRhdGEgKi8pIG92ZXJyaWRlCiAgICAg
eworICAgICAgICBtX25hdmlnYXRpb25TdGF0ZVRyYWNrZXIuYWR2YW5jZVN0YXRlKE5hdmlnYXRp
b25TdGF0ZTo6UmVkaXJlY3RlZCk7CiAgICAgICAgIHdlYmtpdFdlYlZpZXdMb2FkQ2hhbmdlZCht
X3dlYlZpZXcsIFdFQktJVF9MT0FEX1JFRElSRUNURUQpOwogICAgIH0KIApAQCAtNTYsNiArMTIy
LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIGlmICghZnJhbWUuaXNNYWluRnJhbWUoKSkK
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9uYXZpZ2F0aW9uU3RhdGVUcmFja2VyLmFk
dmFuY2VTdGF0ZShOYXZpZ2F0aW9uU3RhdGU6OkZhaWxlZFByb3Zpc2lvbmFsTmF2aWdhdGlvbik7
CiAgICAgICAgIEdVbmlxdWVQdHI8R0Vycm9yPiBlcnJvcihnX2Vycm9yX25ld19saXRlcmFsKGdf
cXVhcmtfZnJvbV9zdHJpbmcocmVzb3VyY2VFcnJvci5kb21haW4oKS51dGY4KCkuZGF0YSgpKSwK
ICAgICAgICAgICAgIHRvV2ViS2l0RXJyb3IocmVzb3VyY2VFcnJvci5lcnJvckNvZGUoKSksIHJl
c291cmNlRXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKS51dGY4KCkuZGF0YSgpKSk7CiAgICAg
ICAgIGlmIChyZXNvdXJjZUVycm9yLnRsc0Vycm9ycygpKSB7CkBAIC02NywxMSArMTM0LDEzIEBA
IHByaXZhdGU6CiAKICAgICB2b2lkIGRpZENvbW1pdE5hdmlnYXRpb24oV2ViUGFnZVByb3h5Jiwg
QVBJOjpOYXZpZ2F0aW9uKiwgQVBJOjpPYmplY3QqIC8qIHVzZXJEYXRhICovKSBvdmVycmlkZQog
ICAgIHsKKyAgICAgICAgbV9uYXZpZ2F0aW9uU3RhdGVUcmFja2VyLmFkdmFuY2VTdGF0ZShOYXZp
Z2F0aW9uU3RhdGU6OkNvbW1pdHRlZCk7CiAgICAgICAgIHdlYmtpdFdlYlZpZXdMb2FkQ2hhbmdl
ZChtX3dlYlZpZXcsIFdFQktJVF9MT0FEX0NPTU1JVFRFRCk7CiAgICAgfQogCiAgICAgdm9pZCBk
aWRGaW5pc2hOYXZpZ2F0aW9uKFdlYlBhZ2VQcm94eSYsIEFQSTo6TmF2aWdhdGlvbiosIEFQSTo6
T2JqZWN0KiAvKiB1c2VyRGF0YSAqLykgb3ZlcnJpZGUKICAgICB7CisgICAgICAgIG1fbmF2aWdh
dGlvblN0YXRlVHJhY2tlci5hZHZhbmNlU3RhdGUoTmF2aWdhdGlvblN0YXRlOjpGaW5pc2hlZCk7
CiAgICAgICAgIHdlYmtpdFdlYlZpZXdMb2FkQ2hhbmdlZChtX3dlYlZpZXcsIFdFQktJVF9MT0FE
X0ZJTklTSEVEKTsKICAgICB9CiAKQEAgLTc5LDYgKzE0OCw3IEBAIHByaXZhdGU6CiAgICAgewog
ICAgICAgICBpZiAoIWZyYW1lLmlzTWFpbkZyYW1lKCkpCiAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIG1fbmF2aWdhdGlvblN0YXRlVHJhY2tlci5hZHZhbmNlU3RhdGUoTmF2aWdhdGlvblN0
YXRlOjpGYWlsZWROYXZpZ2F0aW9uKTsKICAgICAgICAgR1VuaXF1ZVB0cjxHRXJyb3I+IGVycm9y
KGdfZXJyb3JfbmV3X2xpdGVyYWwoZ19xdWFya19mcm9tX3N0cmluZyhyZXNvdXJjZUVycm9yLmRv
bWFpbigpLnV0ZjgoKS5kYXRhKCkpLAogICAgICAgICAgICAgdG9XZWJLaXRFcnJvcihyZXNvdXJj
ZUVycm9yLmVycm9yQ29kZSgpKSwgcmVzb3VyY2VFcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigp
LnV0ZjgoKS5kYXRhKCkpKTsKICAgICAgICAgd2Via2l0V2ViVmlld0xvYWRGYWlsZWQobV93ZWJW
aWV3LCBXRUJLSVRfTE9BRF9DT01NSVRURUQsIHJlc291cmNlRXJyb3IuZmFpbGluZ1VSTCgpLnN0
cmluZygpLnV0ZjgoKS5kYXRhKCksIGVycm9yLmdldCgpKTsKQEAgLTEzNiw2ICsyMDYsNyBAQCBw
cml2YXRlOgogICAgIH0KIAogICAgIFdlYktpdFdlYlZpZXcqIG1fd2ViVmlldzsKKyAgICBOYXZp
Z2F0aW9uU3RhdGVUcmFja2VyIG1fbmF2aWdhdGlvblN0YXRlVHJhY2tlcjsKIH07CiAKIHZvaWQg
YXR0YWNoTmF2aWdhdGlvbkNsaWVudFRvVmlldyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcApp
bmRleCA2NzIwMWQ4OWVhYTFmM2YyMGRmOGI5MWYxZGExNWQ5YzI1OGI2MzhmLi4yOTc5YjhhNTIz
OGM3ZThkNjM1YmRiNDQwZjUyOTQ4YzVmYzg1MzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcApAQCAtMTE3Niw2ICsxMTc2LDEy
IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KFdlYktpdFdlYlZpZXdD
bGFzcyogd2ViVmlld0NsYXNzKQogICAgICAqIFdoZW4gdGhlIHBhZ2UgY29udGVudCBzdGFydHMg
YXJyaXZpbmcgdGhlIHNpZ25hbCBpcyBlbWl0dGVkIHdpdGgKICAgICAgKiAlV0VCS0lUX0xPQURf
Q09NTUlUVEVEIGV2ZW50LgogICAgICAqCisgICAgICogSWYgYSBuZXcgbG9hZCBpcyBzdGFydGVk
IHdoZW4gdGhlIHByZXZpb3VzIGxvYWQgaGFzIG5vdCB5ZXQKKyAgICAgKiBmaW5pc2hlZCwgb3Ig
aWYgdGhlIGxvYWQgZmFpbHMsIHRoZW4gJVdFQktJVF9MT0FEX0NPTU1JVFRFRCBtYXkKKyAgICAg
KiBvciBtYXkgbm90IGJlIGVtaXR0ZWQuIEluIGNvbnRyYXN0LCAlV0VCS0lUX0xPQURfRklOSVNI
RUQgaXMKKyAgICAgKiBndWFyYW50ZWVkIHRvIGJlIGVtaXR0ZWQgYmVmb3JlIHRoZSBuZXh0ICVX
RUJLSVRfTE9BRF9TVEFSVEVELAorICAgICAqIGV2ZW4gaWYgdGhlIGxvYWQgZGlkIG5vdCBhY3R1
YWxseSBjb21wbGV0ZS4KKyAgICAgKgogICAgICAqIFlvdSBjYW4gaGFuZGxlIHRoaXMgc2lnbmFs
IGFuZCB1c2UgYSBzd2l0Y2ggdG8gdHJhY2sgYW55IG9uZ29pbmcKICAgICAgKiBsb2FkIG9wZXJh
dGlvbi4KICAgICAgKgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdl
TG9nCmluZGV4IGZhMDU3NDZiYzQxYjBiNzBkOGFlMDYwZmI2ZWE5ODVhOWQ3OGYzNGUuLmQxNDU5
ZmRhYjhmOWUyMTI0ZDcyNTgzMjg3MTMzNzExOTRlODEwMzUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxOS0wMi0w
MyAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CisKKyAgICAgICAg
W1dQRV1bR1RLXSBMb2FkIGV2ZW50cyBtYXkgb2NjdXIgaW4gdW5leHBlY3RlZCBvcmRlciB3aGVu
IEpTIHJlZGlyZWN0cyBwYWdlIGJlZm9yZSBzdWJyZXNvdXJjZSBsb2FkIGZpbmlzaGVzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTQxMzEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0TG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKHRlc3RV
bmZpbmlzaGVkU3VicmVzb3VyY2VMb2FkKToKKyAgICAgICAgKHNlcnZlckNhbGxiYWNrKToKKyAg
ICAgICAgKGJlZm9yZUFsbCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdM
aWIvTG9hZFRyYWNraW5nVGVzdC5jcHA6CisgICAgICAgIChsb2FkQ2hhbmdlZENhbGxiYWNrKToK
KyAgICAgICAgKGxvYWRGYWlsZWRDYWxsYmFjayk6CisgICAgICAgIChMb2FkVHJhY2tpbmdUZXN0
OjpMb2FkVHJhY2tpbmdUZXN0KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0
R0xpYi9Mb2FkVHJhY2tpbmdUZXN0Lmg6CisKIDIwMTktMDItMDEgIFphbGFuIEJ1anRhcyAgPHph
bGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXSBBZGp1c3QgcmVwbGFjZWQgZWxlbWVudCdz
IGludHJpbnNpYyByYXRpbwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRHTGliL1Rlc3RMb2FkZXJDbGllbnQuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRHTGliL1Rlc3RMb2FkZXJDbGllbnQuY3BwCmluZGV4IGM2N2FmMTY4NGZmY2RmMjM4
NTliYzQ3NWQwOTA1ZDJhZjk4YTRiYWQuLjE3ZTQwNTE0ZGEwYzA0N2M0MDU2Nzk1NzM2ZmZkNTIz
ZWRmOWYwNTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xp
Yi9UZXN0TG9hZGVyQ2xpZW50LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdEdMaWIvVGVzdExvYWRlckNsaWVudC5jcHAKQEAgLTI0MCw2ICsyNDAsMjUgQEAgc3RhdGlj
IHZvaWQgdGVzdFdlYlZpZXdMb2FkVHdpY2VBbmRSZWxvYWQoTG9hZFR3aWNlQW5kUmVsb2FkVGVz
dCogdGVzdCwgZ2NvbnN0cG8KICAgICB0ZXN0LT53YWl0VW50aWxGaW5pc2hlZCgpOwogfQogCitz
dGF0aWMgdm9pZCB0ZXN0VW5maW5pc2hlZFN1YnJlc291cmNlTG9hZChMb2FkVHJhY2tpbmdUZXN0
KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQoreworICAgIC8vIFZlcmlmeSB0aGF0IExvYWRGaW5pc2hl
ZCBvY2N1cnMgZXZlbiBpZiB0aGUgbmV4dCBsb2FkIHN0YXJ0cyBiZWZvcmUgdGhlCisgICAgLy8g
cHJldmlvdXMgbG9hZCBhY3R1YWxseSBmaW5pc2hlcy4KKyAgICB0ZXN0LT5tX2xvYWRNYXlUcmln
Z2VyU3Vic2VxdWVudExvYWQgPSB0cnVlOworICAgIHRlc3QtPmxvYWRVUkkoa1NlcnZlci0+Z2V0
VVJJRm9yUGF0aCgiL3VuZmluaXNoZWQtc3VicmVzb3VyY2UtbG9hZCIpLmRhdGEoKSk7CisgICAg
dGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CisgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZp
bmlzaGVkKCk7CisKKyAgICBWZWN0b3I8TG9hZFRyYWNraW5nVGVzdDo6TG9hZEV2ZW50cz4mIGV2
ZW50cyA9IHRlc3QtPm1fbG9hZEV2ZW50czsKKyAgICBnX2Fzc2VydF9jbXBpbnQoZXZlbnRzLnNp
emUoKSwgPT0sIDYpOworICAgIGdfYXNzZXJ0X2NtcGludChldmVudHNbMF0sID09LCBMb2FkVHJh
Y2tpbmdUZXN0OjpQcm92aXNpb25hbExvYWRTdGFydGVkKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQo
ZXZlbnRzWzFdLCA9PSwgTG9hZFRyYWNraW5nVGVzdDo6TG9hZENvbW1pdHRlZCk7CisgICAgZ19h
c3NlcnRfY21waW50KGV2ZW50c1syXSwgPT0sIExvYWRUcmFja2luZ1Rlc3Q6OkxvYWRGaW5pc2hl
ZCk7CisgICAgZ19hc3NlcnRfY21waW50KGV2ZW50c1szXSwgPT0sIExvYWRUcmFja2luZ1Rlc3Q6
OlByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQpOworICAgIGdfYXNzZXJ0X2NtcGludChldmVudHNbNF0s
ID09LCBMb2FkVHJhY2tpbmdUZXN0OjpMb2FkQ29tbWl0dGVkKTsKKyAgICBnX2Fzc2VydF9jbXBp
bnQoZXZlbnRzWzVdLCA9PSwgTG9hZFRyYWNraW5nVGVzdDo6TG9hZEZpbmlzaGVkKTsKK30KKwog
Y2xhc3MgVmlld1VSSVRyYWNraW5nVGVzdDogcHVibGljIExvYWRUcmFja2luZ1Rlc3QgewogcHVi
bGljOgogICAgIE1BS0VfR0xJQl9URVNUX0ZJWFRVUkUoVmlld1VSSVRyYWNraW5nVGVzdCk7CkBA
IC01OTAsNiArNjA5LDE2IEBAIHN0YXRpYyB2b2lkIHNlcnZlckNhbGxiYWNrKFNvdXBTZXJ2ZXIq
IHNlcnZlciwgU291cE1lc3NhZ2UqIG1lc3NhZ2UsIGNvbnN0IGNoYXIqCiAgICAgICAgICJUZXN0
aW5nIVRlc3RpbmchVGVzdGluZyFUZXN0aW5nIVRlc3RpbmchVGVzdGluZyFUZXN0aW5nIVRlc3Rp
bmchVGVzdGluZyFUZXN0aW5nIVRlc3RpbmchVGVzdGluZyEiCiAgICAgICAgICJUZXN0aW5nIVRl
c3RpbmchVGVzdGluZyFUZXN0aW5nIVRlc3RpbmchVGVzdGluZyFUZXN0aW5nIVRlc3RpbmchVGVz
dGluZyFUZXN0aW5nIVRlc3RpbmchVGVzdGluZyE8L2JvZHk+PC9odG1sPiI7CiAKKyAgICBzdGF0
aWMgY29uc3QgY2hhciogdW5maW5pc2hlZFN1YnJlc291cmNlTG9hZFJlc3BvbnNlU3RyaW5nID0g
IjxodG1sPjxib2R5PiIKKyAgICAgICAgIjxpbWcgc3JjPVwiL3N0YWxsXCIvPiIKKyAgICAgICAg
IjxzY3JpcHQ+IgorICAgICAgICAiICBmdW5jdGlvbiBydW4oKSB7IgorICAgICAgICAiICAgICAg
bG9jYXRpb24gPSAnL25vcm1hbCc7IgorICAgICAgICAiICB9IgorICAgICAgICAiICBzZXRJbnRl
cnZhbChydW4oKSwgNTApOyIKKyAgICAgICAgIjwvc2NyaXB0PiIKKyAgICAgICAgIjwvYm9keT48
L2h0bWw+IjsKKwogICAgIGlmIChtZXNzYWdlLT5tZXRob2QgIT0gU09VUF9NRVRIT0RfR0VUKSB7
CiAgICAgICAgIHNvdXBfbWVzc2FnZV9zZXRfc3RhdHVzKG1lc3NhZ2UsIFNPVVBfU1RBVFVTX05P
VF9JTVBMRU1FTlRFRCk7CiAgICAgICAgIHJldHVybjsKQEAgLTYyNSw2ICs2NTQsMTIgQEAgc3Rh
dGljIHZvaWQgc2VydmVyQ2FsbGJhY2soU291cFNlcnZlciogc2VydmVyLCBTb3VwTWVzc2FnZSog
bWVzc2FnZSwgY29uc3QgY2hhcioKICAgICB9IGVsc2UgaWYgKGdfc3RyX2VxdWFsKHBhdGgsICIv
cmVkaXJlY3QtdG8tZGF0YSIpKSB7CiAgICAgICAgIHNvdXBfbWVzc2FnZV9zZXRfc3RhdHVzKG1l
c3NhZ2UsIFNPVVBfU1RBVFVTX01PVkVEX1BFUk1BTkVOVExZKTsKICAgICAgICAgc291cF9tZXNz
YWdlX2hlYWRlcnNfYXBwZW5kKG1lc3NhZ2UtPnJlc3BvbnNlX2hlYWRlcnMsICJMb2NhdGlvbiIs
ICJkYXRhOnRleHQvcGxhaW47Y2hhcnNldD11dGYtOCxkYXRhLXVyaSIpOworICAgIH0gZWxzZSBp
ZiAoZ19zdHJfZXF1YWwocGF0aCwgIi91bmZpbmlzaGVkLXN1YnJlc291cmNlLWxvYWQiKSkgewor
ICAgICAgICBzb3VwX21lc3NhZ2VfYm9keV9hcHBlbmQobWVzc2FnZS0+cmVzcG9uc2VfYm9keSwg
U09VUF9NRU1PUllfU1RBVElDLCB1bmZpbmlzaGVkU3VicmVzb3VyY2VMb2FkUmVzcG9uc2VTdHJp
bmcsIHN0cmxlbih1bmZpbmlzaGVkU3VicmVzb3VyY2VMb2FkUmVzcG9uc2VTdHJpbmcpKTsKKyAg
ICB9IGVsc2UgaWYgKGdfc3RyX2VxdWFsKHBhdGgsICIvc3RhbGwiKSkgeworICAgICAgICAvLyBU
aGlzIHJlcXVlc3QgaXMgbmV2ZXIgdW5wYXVzZWQgYW5kIHN0YWxscyBmb3JldmVyLgorICAgICAg
ICBzb3VwX3NlcnZlcl9wYXVzZV9tZXNzYWdlKHNlcnZlciwgbWVzc2FnZSk7CisgICAgICAgIHJl
dHVybjsKICAgICB9IGVsc2UKICAgICAgICAgc291cF9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2Fn
ZSwgU09VUF9TVEFUVVNfTk9UX0ZPVU5EKTsKIApAQCAtNjU1LDYgKzY5MCw3IEBAIHZvaWQgYmVm
b3JlQWxsKCkKICAgICBMb2FkVHJhY2tpbmdUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAicmVs
b2FkIiwgdGVzdFdlYlZpZXdSZWxvYWQpOwogICAgIExvYWRUcmFja2luZ1Rlc3Q6OmFkZCgiV2Vi
S2l0V2ViVmlldyIsICJoaXN0b3J5LWxvYWQiLCB0ZXN0V2ViVmlld0hpc3RvcnlMb2FkKTsKICAg
ICBMb2FkVHdpY2VBbmRSZWxvYWRUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAibG9hZC10d2lj
ZS1hbmQtcmVsb2FkIiwgdGVzdFdlYlZpZXdMb2FkVHdpY2VBbmRSZWxvYWQpOworICAgIExvYWRU
cmFja2luZ1Rlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJ1bmZpbmlzaGVkLXN1YnJlc291cmNl
LWxvYWQiLCB0ZXN0VW5maW5pc2hlZFN1YnJlc291cmNlTG9hZCk7CiAKICAgICAvLyBUaGlzIHRl
c3QgY2hlY2tzIHRoYXQgd2ViIHZpZXcgbm90aWZ5Ojp1cmkgc2lnbmFsIGlzIGNvcnJlY3RseSBl
bWl0dGVkCiAgICAgLy8gYW5kIHRoZSB1cmkgaXMgYWxyZWFkeSB1cGRhdGVkIHdoZW4gbG9hZGVy
IGNsaWVudCBzaWduYWxzIGFyZSBlbWl0dGVkLgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9nbGliL1dlYktpdEdMaWIvTG9hZFRyYWNraW5nVGVzdC5jcHAgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9Mb2FkVHJhY2tpbmdUZXN0LmNwcAppbmRleCAyZGRkZWNh
MzYyZTliMjI4MjQ3NmY5OTVkMzI2NzcxYjVhODg1MjBlLi4zYzFhMmE1NzNiMjFiYjJhMzBiOTli
OTc3YjQ4NTQyYzdiZmUxMmE2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIv
V2ViS2l0R0xpYi9Mb2FkVHJhY2tpbmdUZXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L2dsaWIvV2ViS2l0R0xpYi9Mb2FkVHJhY2tpbmdUZXN0LmNwcApAQCAtMjUsNyArMjUsOCBAQCBz
dGF0aWMgdm9pZCBsb2FkQ2hhbmdlZENhbGxiYWNrKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdl
YktpdExvYWRFdmVudCBsb2FkRXZlbgogICAgIHN3aXRjaCAobG9hZEV2ZW50KSB7CiAgICAgY2Fz
ZSBXRUJLSVRfTE9BRF9TVEFSVEVEOgogICAgICAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF93ZWJf
dmlld19pc19sb2FkaW5nKHdlYlZpZXcpKTsKLSAgICAgICAgZ19hc3NlcnRfY21wc3RyKHRlc3Qt
Pm1fYWN0aXZlVVJJLmRhdGEoKSwgPT0sIHdlYmtpdF93ZWJfdmlld19nZXRfdXJpKHdlYlZpZXcp
KTsKKyAgICAgICAgaWYgKCF0ZXN0LT5tX2xvYWRNYXlUcmlnZ2VyU3Vic2VxdWVudExvYWQpCisg
ICAgICAgICAgICBnX2Fzc2VydF9jbXBzdHIodGVzdC0+bV9hY3RpdmVVUkkuZGF0YSgpLCA9PSwg
d2Via2l0X3dlYl92aWV3X2dldF91cmkod2ViVmlldykpOwogICAgICAgICB0ZXN0LT5wcm92aXNp
b25hbExvYWRTdGFydGVkKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV0VCS0lUX0xPQURf
UkVESVJFQ1RFRDoKQEAgLTQ4LDE0ICs0OSwxNSBAQCBzdGF0aWMgdm9pZCBsb2FkQ2hhbmdlZENh
bGxiYWNrKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdExvYWRFdmVudCBsb2FkRXZlbgog
ICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBXRUJLSVRfTE9BRF9GSU5JU0hFRDoKLSAg
ICAgICAgaWYgKCF0ZXN0LT5tX2xvYWRGYWlsZWQpIHsKLSAgICAgICAgICAgIGdfYXNzZXJ0X2Zh
bHNlKHdlYmtpdF93ZWJfdmlld19pc19sb2FkaW5nKHdlYlZpZXcpKTsKLSAgICAgICAgICAgIGdf
YXNzZXJ0X2NtcHN0cih0ZXN0LT5tX2FjdGl2ZVVSSS5kYXRhKCksID09LCB3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X3VyaSh3ZWJWaWV3KSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoIWdfZXJyb3JfbWF0Y2hl
cyh0ZXN0LT5tX2Vycm9yLmdldCgpLCBXRUJLSVRfTkVUV09SS19FUlJPUiwgV0VCS0lUX05FVFdP
UktfRVJST1JfQ0FOQ0VMTEVEKSkgewotICAgICAgICAgICAgLy8gV2hlbiBhIG5ldyBsb2FkIGlz
IHN0YXJ0ZWQgYmVmb3JlIHRoZSBwcmV2aW91cyBvbmUgaGFzIGZpbmlzaGVkLCB3ZSByZWNlaXZl
IHRoZSBsb2FkLWZpbmlzaGVkIHNpZ25hbAotICAgICAgICAgICAgLy8gb2YgdGhlIG9uZ29pbmcg
bG9hZCB3aGlsZSB3ZSBhbHJlYWR5IGhhdmUgYSBwcm92aXNpb25hbCBVUkwgZm9yIHRoZSBuZXcg
bG9hZC4gVGhpcyBpcyB0aGUgb25seSBjYXNlCi0gICAgICAgICAgICAvLyB3aGVyZSBpc2xvYWRp
bmcgaXMgdHJ1ZSB3aGVuIHRoZSBsb2FkIGhhcyBmaW5pc2hlZC4KLSAgICAgICAgICAgIGdfYXNz
ZXJ0X2ZhbHNlKHdlYmtpdF93ZWJfdmlld19pc19sb2FkaW5nKHdlYlZpZXcpKTsKKyAgICAgICAg
aWYgKCF0ZXN0LT5tX2xvYWRNYXlUcmlnZ2VyU3Vic2VxdWVudExvYWQpIHsKKyAgICAgICAgICAg
IGlmICghdGVzdC0+bV9sb2FkRmFpbGVkKSB7CisgICAgICAgICAgICAgICAgZ19hc3NlcnRfZmFs
c2Uod2Via2l0X3dlYl92aWV3X2lzX2xvYWRpbmcod2ViVmlldykpOworICAgICAgICAgICAgICAg
IGdfYXNzZXJ0X2NtcHN0cih0ZXN0LT5tX2FjdGl2ZVVSSS5kYXRhKCksID09LCB3ZWJraXRfd2Vi
X3ZpZXdfZ2V0X3VyaSh3ZWJWaWV3KSk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKCFnX2Vycm9y
X21hdGNoZXModGVzdC0+bV9lcnJvci5nZXQoKSwgV0VCS0lUX05FVFdPUktfRVJST1IsIFdFQktJ
VF9ORVRXT1JLX0VSUk9SX0NBTkNFTExFRCkpIHsKKyAgICAgICAgICAgICAgICAvLyBXaGVuIGEg
bmV3IGxvYWQgaXMgc3RhcnRlZCBiZWZvcmUgdGhlIHByZXZpb3VzIG9uZSBoYXMgZmluaXNoZWQs
IHdlIHJlY2VpdmUgdGhlIGxvYWQtZmluaXNoZWQgc2lnbmFsCisgICAgICAgICAgICAgICAgLy8g
b2YgdGhlIG9uZ29pbmcgbG9hZCB3aGlsZSB3ZSBhbHJlYWR5IGhhdmUgYSBwcm92aXNpb25hbCBV
UkwgZm9yIHRoZSBuZXcgbG9hZC4KKyAgICAgICAgICAgICAgICBnX2Fzc2VydF9mYWxzZSh3ZWJr
aXRfd2ViX3ZpZXdfaXNfbG9hZGluZyh3ZWJWaWV3KSk7CisgICAgICAgICAgICB9CiAgICAgICAg
IH0KICAgICAgICAgdGVzdC0+bG9hZEZpbmlzaGVkKCk7CiAgICAgICAgIGJyZWFrOwpAQCAtNzEs
MTAgKzczLDkgQEAgc3RhdGljIHZvaWQgbG9hZEZhaWxlZENhbGxiYWNrKFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcsIFdlYktpdExvYWRFdmVudCBsb2FkRXZlbnQKICAgICBnX2Fzc2VydF9ub25udWxs
KGVycm9yKTsKICAgICB0ZXN0LT5tX2Vycm9yLnJlc2V0KGdfZXJyb3JfY29weShlcnJvcikpOwog
Ci0gICAgaWYgKCFnX2Vycm9yX21hdGNoZXMoZXJyb3IsIFdFQktJVF9ORVRXT1JLX0VSUk9SLCBX
RUJLSVRfTkVUV09SS19FUlJPUl9DQU5DRUxMRUQpKSB7CisgICAgaWYgKCF0ZXN0LT5tX2xvYWRN
YXlUcmlnZ2VyU3Vic2VxdWVudExvYWQgJiYgIWdfZXJyb3JfbWF0Y2hlcyhlcnJvciwgV0VCS0lU
X05FVFdPUktfRVJST1IsIFdFQktJVF9ORVRXT1JLX0VSUk9SX0NBTkNFTExFRCkpIHsKICAgICAg
ICAgLy8gV2hlbiBhIG5ldyBsb2FkIGlzIHN0YXJ0ZWQgYmVmb3JlIHRoZSBwcmV2aW91cyBvbmUg
aGFzIGZpbmlzaGVkLCB3ZSByZWNlaXZlIHRoZSBsb2FkLWZhaWxlZCBzaWduYWwKLSAgICAgICAg
Ly8gb2YgdGhlIG9uZ29pbmcgbG9hZCB3aGlsZSB3ZSBhbHJlYWR5IGhhdmUgYSBwcm92aXNpb25h
bCBVUkwgZm9yIHRoZSBuZXcgbG9hZC4gVGhpcyBpcyB0aGUgb25seSBjYXNlCi0gICAgICAgIC8v
IHdoZXJlIGlzLWxvYWRpbmcgaXMgdHJ1ZSB3aGVuIHRoZSBsb2FkIGhhcyBmYWlsZWQuCisgICAg
ICAgIC8vIG9mIHRoZSBvbmdvaW5nIGxvYWQgd2hpbGUgd2UgYWxyZWFkeSBoYXZlIGEgcHJvdmlz
aW9uYWwgVVJMIGZvciB0aGUgbmV3IGxvYWQuCiAgICAgICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtp
dF93ZWJfdmlld19pc19sb2FkaW5nKHdlYlZpZXcpKTsKICAgICB9CiAKQEAgLTEwOCw4ICsxMDks
NiBAQCBzdGF0aWMgdm9pZCBlc3RpbWF0ZWRQcm9ncmVzc0NoYW5nZWRDYWxsYmFjayhHT2JqZWN0
KiwgR1BhcmFtU3BlYyosIExvYWRUcmFja2luZwogfQogCiBMb2FkVHJhY2tpbmdUZXN0OjpMb2Fk
VHJhY2tpbmdUZXN0KCkKLSAgICA6IG1fcnVuTG9hZFVudGlsQ29tcGxldGlvbihmYWxzZSkKLSAg
ICAsIG1fbG9hZEZhaWxlZChmYWxzZSkKIHsKICAgICBnX3NpZ25hbF9jb25uZWN0KG1fd2ViVmll
dywgImxvYWQtY2hhbmdlZCIsIEdfQ0FMTEJBQ0sobG9hZENoYW5nZWRDYWxsYmFjayksIHRoaXMp
OwogICAgIGdfc2lnbmFsX2Nvbm5lY3QobV93ZWJWaWV3LCAibG9hZC1mYWlsZWQiLCBHX0NBTExC
QUNLKGxvYWRGYWlsZWRDYWxsYmFjayksIHRoaXMpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9nbGliL1dlYktpdEdMaWIvTG9hZFRyYWNraW5nVGVzdC5oIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9nbGliL1dlYktpdEdMaWIvTG9hZFRyYWNraW5nVGVzdC5oCmluZGV4IDAyODgwOTA0
YTc0MmYyMWIxNGE4OTM2NjAxYjcxZTJkNmIxZTc5ODUuLjgwZDFjNzMzZDg4MWU4NDNjNDYxNmRk
ZWRlYTUxZDQxOGU0YjcyNDIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9X
ZWJLaXRHTGliL0xvYWRUcmFja2luZ1Rlc3QuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2ds
aWIvV2ViS2l0R0xpYi9Mb2FkVHJhY2tpbmdUZXN0LmgKQEAgLTU5LDggKzU5LDkgQEAgcHVibGlj
OgogICAgICAgICBMb2FkRmFpbGVkLAogICAgICAgICBMb2FkRmFpbGVkV2l0aFRMU0Vycm9ycwog
ICAgIH07Ci0gICAgYm9vbCBtX3J1bkxvYWRVbnRpbENvbXBsZXRpb247Ci0gICAgYm9vbCBtX2xv
YWRGYWlsZWQ7CisgICAgYm9vbCBtX3J1bkxvYWRVbnRpbENvbXBsZXRpb24gPSBmYWxzZTsKKyAg
ICBib29sIG1fbG9hZEZhaWxlZCA9IGZhbHNlOworICAgIGJvb2wgbV9sb2FkTWF5VHJpZ2dlclN1
YnNlcXVlbnRMb2FkID0gZmFsc2U7CiAgICAgR1VuaXF1ZVB0cjxHRXJyb3I+IG1fZXJyb3I7CiAg
ICAgVmVjdG9yPExvYWRFdmVudHM+IG1fbG9hZEV2ZW50czsKICAgICBmbG9hdCBtX2VzdGltYXRl
ZFByb2dyZXNzOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>362880</attachid>
            <date>2019-02-24 20:58:03 -0800</date>
            <delta_ts>2019-02-24 21:01:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194131-20190224225802.patch</filename>
            <type>text/plain</type>
            <size>20271</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQxOTk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDdlOGVmZjMyNGI5ZDQ0N2Vk
ZjY5ZDRiYzNlNDI3NGM0YjVmMmVmZDYuLjdjYWUwNDYxNjQwNTViOTFjM2I1NmYwNjNhZWJiYTk1
MTUzMzVkNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTktMDItMjQgIE1pY2hhZWwg
Q2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtXUEVdW0dUS10g
TG9hZCBldmVudHMgbWF5IG9jY3VyIGluIHVuZXhwZWN0ZWQgb3JkZXIgd2hlbiBKUyByZWRpcmVj
dHMgcGFnZSBiZWZvcmUgc3VicmVzb3VyY2UgbG9hZCBmaW5pc2hlcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0MTMxCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSWYgYSBuZXcgcGFnZSBsb2FkIHN0YXJ0
cyBiZWZvcmUgdGhlIHByZXZpb3VzIG9uZSBjb21wbGV0ZXMsIHJ1biBsb2FkLWZhaWxlZCB3aXRo
CisgICAgICAgIFdFQktJVF9ORVRXT1JLX0VSUk9SX0NBTkNFTExFRCBMT0FEX0ZJTklTSEVEIGFu
ZCB0aGVuIExPQURfRklOSVNIRUQgYmVmb3JlIExPQURfU1RBUlRFRCB0bworICAgICAgICBhdm9p
ZCBjb25mdXNpbmcgYXBwbGljYXRpb25zIHRoYXQgZXhwZWN0IExPQURfRklOSVNIRUQgdG8gb2Nj
dXIuCisKKyAgICAgICAgQWxzbywgYWRkIGEgc3RhdGUgdHJhY2tlciB0byBlbnN1cmUgd2UgZG9u
J3QgbWFrZSB1bmV4cGVjdGVkIHN0YXRlIHRyYW5zaXRpb25zIGxpa2UgdGhpcy4KKyAgICAgICAg
V2l0aG91dCB0aGUgc3RhdGUgdHJhY2tlciwgd2UgYXJlIHB1dHRpbmcgdG9vIG11Y2ggdHJ1c3Qg
aW4gRnJhbWVMb2FkZXIgdG8gZW1pdCBldmVudHMgaW4KKyAgICAgICAgdGhlIG9yZGVyIHdlIGV4
cGVjdCwgYW5kIEZyYW1lTG9hZGVyIGlzIGV4dHJlbWVseSBjb21wbGV4IHNvIHRoaXMgaXMgZGlm
ZmljdWx0IHRvIGd1YXJhbnRlZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXROYXZpZ2F0aW9uQ2xpZW50LmNwcDoKKyAgICAgICAgKGlzRmluaXNoZWRTdGF0ZSk6CisgICAg
ICAgIChOYXZpZ2F0aW9uU3RhdGVUcmFja2VyOjphZHZhbmNlU3RhdGUpOgorICAgICAgICAoTmF2
aWdhdGlvblN0YXRlVHJhY2tlcjo6c3RhdGUgY29uc3QpOgorICAgICAgICAoTmF2aWdhdGlvbkNs
aWVudDo6dG9HRXJyb3IpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJW
aWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KToKKwogMjAxOS0w
Mi0yMyAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZW1vdmUgcmVtbmFudHMgb2YgaU9TIFdLMSBzY3JvbGxpbmcgdHJlZSBjb2RlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXROYXZpZ2F0aW9uQ2xpZW50
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE5hdmlnYXRpb25D
bGllbnQuY3BwCmluZGV4IDA4YWI2OWEwNTAxODQyMzc0OGNmMTMyYTAzNjEwMDEyMTQ1ZTJjZDgu
LjNjNmVhMWY4MmNhNGRkZDFjZjI0NDZkZTNkMjNiZjFhNzY4YWViMWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE5hdmlnYXRpb25DbGllbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE5hdmlnYXRpb25D
bGllbnQuY3BwCkBAIC0yMiw2ICsyMiw3IEBACiAKICNpbmNsdWRlICJBUElOYXZpZ2F0aW9uQWN0
aW9uLmgiCiAjaW5jbHVkZSAiQVBJTmF2aWdhdGlvbkNsaWVudC5oIgorI2luY2x1ZGUgIldlYkVy
cm9ycy5oIgogI2luY2x1ZGUgIldlYktpdEJhY2tGb3J3YXJkTGlzdFByaXZhdGUuaCIKICNpbmNs
dWRlICJXZWJLaXROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb25Qcml2YXRlLmgiCiAjaW5jbHVkZSAi
V2ViS2l0UHJpdmF0ZS5oIgpAQCAtMzQsNiArMzUsNjIgQEAKIHVzaW5nIG5hbWVzcGFjZSBXZWJL
aXQ7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAorZW51bSBjbGFzcyBOYXZpZ2F0aW9uU3Rh
dGUgeworICAgIE5vdFN0YXJ0ZWQsCisgICAgU3RhcnRlZCwKKyAgICBSZWRpcmVjdGVkLAorICAg
IEZhaWxlZFByb3Zpc2lvbmFsTmF2aWdhdGlvbiwKKyAgICBDb21taXR0ZWQsCisgICAgRmFpbGVk
TmF2aWdhdGlvbiwKKyAgICBGaW5pc2hlZCwKK307CisKK3N0YXRpYyBib29sIGlzRmluaXNoZWRT
dGF0ZShOYXZpZ2F0aW9uU3RhdGUgc3RhdGUpCit7CisgICAgcmV0dXJuIHN0YXRlID09IE5hdmln
YXRpb25TdGF0ZTo6RmFpbGVkUHJvdmlzaW9uYWxOYXZpZ2F0aW9uCisgICAgICAgIHx8IHN0YXRl
ID09IE5hdmlnYXRpb25TdGF0ZTo6RmFpbGVkTmF2aWdhdGlvbgorICAgICAgICB8fCBzdGF0ZSA9
PSBOYXZpZ2F0aW9uU3RhdGU6OkZpbmlzaGVkOworfQorCitjbGFzcyBOYXZpZ2F0aW9uU3RhdGVU
cmFja2VyIHsKK3B1YmxpYzoKKyAgICB1c2luZyBNdXN0RmluaXNoTmF2aWdhdGlvbkNhbGxiYWNr
ID0gV1RGOjpGdW5jdGlvbjx2b2lkICh2b2lkKT47CisKKyAgICB2b2lkIGFkdmFuY2VTdGF0ZShO
YXZpZ2F0aW9uU3RhdGUgc3RhdGUpCisgICAgeworICAgICAgICBzd2l0Y2ggKHN0YXRlKSB7Cisg
ICAgICAgIGNhc2UgTmF2aWdhdGlvblN0YXRlOjpOb3RTdGFydGVkOgorICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBOYXZp
Z2F0aW9uU3RhdGU6OlN0YXJ0ZWQ6CisgICAgICAgICAgICAvLyBTdGFydGVkIGNhbiBvY2N1ciBh
dCBhbnkgdGltZS4KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE5hdmlnYXRpb25T
dGF0ZTo6UmVkaXJlY3RlZDoKKyAgICAgICAgICAgIEFTU0VSVChtX2N1cnJlbnRTdGF0ZSA9PSBO
YXZpZ2F0aW9uU3RhdGU6OlN0YXJ0ZWQgfHwgbV9jdXJyZW50U3RhdGUgPT0gTmF2aWdhdGlvblN0
YXRlOjpSZWRpcmVjdGVkKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE5hdmln
YXRpb25TdGF0ZTo6RmFpbGVkUHJvdmlzaW9uYWxOYXZpZ2F0aW9uOgorICAgICAgICAgICAgQVNT
RVJUKG1fY3VycmVudFN0YXRlID09IE5hdmlnYXRpb25TdGF0ZTo6U3RhcnRlZCB8fCBtX2N1cnJl
bnRTdGF0ZSA9PSBOYXZpZ2F0aW9uU3RhdGU6OlJlZGlyZWN0ZWQpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgTmF2aWdhdGlvblN0YXRlOjpDb21taXR0ZWQ6CisgICAgICAgICAg
ICBBU1NFUlQobV9jdXJyZW50U3RhdGUgPT0gTmF2aWdhdGlvblN0YXRlOjpTdGFydGVkIHx8IG1f
Y3VycmVudFN0YXRlID09IE5hdmlnYXRpb25TdGF0ZTo6UmVkaXJlY3RlZCk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBOYXZpZ2F0aW9uU3RhdGU6OkZhaWxlZE5hdmlnYXRpb246
CisgICAgICAgICAgICBBU1NFUlQobV9jdXJyZW50U3RhdGUgPT0gTmF2aWdhdGlvblN0YXRlOjpD
b21taXR0ZWQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTmF2aWdhdGlvblN0
YXRlOjpGaW5pc2hlZDoKKyAgICAgICAgICAgIEFTU0VSVChtX2N1cnJlbnRTdGF0ZSA9PSBOYXZp
Z2F0aW9uU3RhdGU6OkNvbW1pdHRlZCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
CisgICAgICAgIG1fY3VycmVudFN0YXRlID0gc3RhdGU7CisgICAgfQorCisgICAgTmF2aWdhdGlv
blN0YXRlIHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50U3RhdGU7IH0KKworcHJpdmF0
ZToKKyAgICBOYXZpZ2F0aW9uU3RhdGUgbV9jdXJyZW50U3RhdGUgPSBOYXZpZ2F0aW9uU3RhdGU6
Ok5vdFN0YXJ0ZWQ7Cit9OworCiBjbGFzcyBOYXZpZ2F0aW9uQ2xpZW50IDogcHVibGljIEFQSTo6
TmF2aWdhdGlvbkNsaWVudCB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgTmF2aWdhdGlvbkNsaWVu
dChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQpAQCAtNDIsMTMgKzk5LDQ0IEBAIHB1YmxpYzoKICAg
ICB9CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTmF2aWdhdGlvbihX
ZWJQYWdlUHJveHkmLCBBUEk6Ok5hdmlnYXRpb24qLCBBUEk6Ok9iamVjdCogLyogdXNlckRhdGEg
Ki8pIG92ZXJyaWRlCisgICAgR1VuaXF1ZVB0cjxHRXJyb3I+IHRvR0Vycm9yKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImIHJlc291cmNlRXJyb3IpCiAgICAgeworICAgICAgICBHVW5pcXVl
UHRyPEdFcnJvcj4gZXJyb3IoZ19lcnJvcl9uZXdfbGl0ZXJhbChnX3F1YXJrX2Zyb21fc3RyaW5n
KHJlc291cmNlRXJyb3IuZG9tYWluKCkudXRmOCgpLmRhdGEoKSksCisgICAgICAgICAgICB0b1dl
YktpdEVycm9yKHJlc291cmNlRXJyb3IuZXJyb3JDb2RlKCkpLCByZXNvdXJjZUVycm9yLmxvY2Fs
aXplZERlc2NyaXB0aW9uKCkudXRmOCgpLmRhdGEoKSkpOworICAgICAgICByZXR1cm4gZXJyb3I7
CisgICAgfQorCisgICAgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTmF2aWdhdGlvbihXZWJQYWdl
UHJveHkmLCBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24sIEFQSTo6T2JqZWN0KiAvKiB1c2Vy
RGF0YSAqLykgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIE5hdmlnYXRpb25TdGF0ZSBzdGF0ZSA9
IG1fbmF2aWdhdGlvblN0YXRlVHJhY2tlci5zdGF0ZSgpOworICAgICAgICBpZiAoc3RhdGUgIT0g
TmF2aWdhdGlvblN0YXRlOjpOb3RTdGFydGVkICYmICFpc0ZpbmlzaGVkU3RhdGUoc3RhdGUpKSB7
CisgICAgICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIHJlc291cmNlRXJyb3IgPSBjYW5j
ZWxsZWRFcnJvcihtX2N1cnJlbnRSZXF1ZXN0KTsKKyAgICAgICAgICAgIEdVbmlxdWVQdHI8R0Vy
cm9yPiBlcnJvciA9IHRvR0Vycm9yKHJlc291cmNlRXJyb3IpOworCisgICAgICAgICAgICBzd2l0
Y2ggKHN0YXRlKSB7CisgICAgICAgICAgICBjYXNlIE5hdmlnYXRpb25TdGF0ZTo6U3RhcnRlZDoK
KyAgICAgICAgICAgICAgICBGQUxMVEhST1VHSDsKKyAgICAgICAgICAgIGNhc2UgTmF2aWdhdGlv
blN0YXRlOjpSZWRpcmVjdGVkOgorICAgICAgICAgICAgICAgIC8vIE91ciBBUEkgZ3VhcmFudGVl
cyBsb2FkIGZhaWxlZCBpcyBuZXZlciBlbWl0dGVkIHdpdGggUkVESVJFQ1RFRC4KKyAgICAgICAg
ICAgICAgICB3ZWJraXRXZWJWaWV3TG9hZEZhaWxlZChtX3dlYlZpZXcsIFdFQktJVF9MT0FEX1NU
QVJURUQsIHJlc291cmNlRXJyb3IuZmFpbGluZ1VSTCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCks
IGVycm9yLmdldCgpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2Ug
TmF2aWdhdGlvblN0YXRlOjpDb21taXR0ZWQ6CisgICAgICAgICAgICAgICAgd2Via2l0V2ViVmll
d0xvYWRGYWlsZWQobV93ZWJWaWV3LCBXRUJLSVRfTE9BRF9DT01NSVRURUQsIHJlc291cmNlRXJy
b3IuZmFpbGluZ1VSTCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIGVycm9yLmdldCgpKTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAg
ICAgICBtX2N1cnJlbnRSZXF1ZXN0ID0gbmF2aWdhdGlvbiA/IG5hdmlnYXRpb24tPmN1cnJlbnRS
ZXF1ZXN0KCkgOiBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QoKTsKKyAgICAgICAgbV9uYXZpZ2F0
aW9uU3RhdGVUcmFja2VyLmFkdmFuY2VTdGF0ZShOYXZpZ2F0aW9uU3RhdGU6OlN0YXJ0ZWQpOwog
ICAgICAgICB3ZWJraXRXZWJWaWV3TG9hZENoYW5nZWQobV93ZWJWaWV3LCBXRUJLSVRfTE9BRF9T
VEFSVEVEKTsKICAgICB9CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclBy
b3Zpc2lvbmFsTmF2aWdhdGlvbihXZWJQYWdlUHJveHkmLCBBUEk6Ok5hdmlnYXRpb24qLCBBUEk6
Ok9iamVjdCogLyogdXNlckRhdGEgKi8pIG92ZXJyaWRlCisgICAgdm9pZCBkaWRSZWNlaXZlU2Vy
dmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbE5hdmlnYXRpb24oV2ViUGFnZVByb3h5JiwgQVBJOjpO
YXZpZ2F0aW9uKiBuYXZpZ2F0aW9uLCBBUEk6Ok9iamVjdCogLyogdXNlckRhdGEgKi8pIG92ZXJy
aWRlCiAgICAgeworICAgICAgICBtX2N1cnJlbnRSZXF1ZXN0ID0gbmF2aWdhdGlvbiA/IG5hdmln
YXRpb24tPmN1cnJlbnRSZXF1ZXN0KCkgOiBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QoKTsKKyAg
ICAgICAgbV9uYXZpZ2F0aW9uU3RhdGVUcmFja2VyLmFkdmFuY2VTdGF0ZShOYXZpZ2F0aW9uU3Rh
dGU6OlJlZGlyZWN0ZWQpOwogICAgICAgICB3ZWJraXRXZWJWaWV3TG9hZENoYW5nZWQobV93ZWJW
aWV3LCBXRUJLSVRfTE9BRF9SRURJUkVDVEVEKTsKICAgICB9CiAKQEAgLTU2LDYgKzE0NCw4IEBA
IHByaXZhdGU6CiAgICAgewogICAgICAgICBpZiAoIWZyYW1lLmlzTWFpbkZyYW1lKCkpCiAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIG1fY3VycmVudFJlcXVlc3QgPSBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QoKTsKKyAgICAgICAgbV9uYXZpZ2F0aW9uU3RhdGVUcmFja2VyLmFkdmFuY2VT
dGF0ZShOYXZpZ2F0aW9uU3RhdGU6OkZhaWxlZFByb3Zpc2lvbmFsTmF2aWdhdGlvbik7CiAgICAg
ICAgIEdVbmlxdWVQdHI8R0Vycm9yPiBlcnJvcihnX2Vycm9yX25ld19saXRlcmFsKGdfcXVhcmtf
ZnJvbV9zdHJpbmcocmVzb3VyY2VFcnJvci5kb21haW4oKS51dGY4KCkuZGF0YSgpKSwKICAgICAg
ICAgICAgIHRvV2ViS2l0RXJyb3IocmVzb3VyY2VFcnJvci5lcnJvckNvZGUoKSksIHJlc291cmNl
RXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKS51dGY4KCkuZGF0YSgpKSk7CiAgICAgICAgIGlm
IChyZXNvdXJjZUVycm9yLnRsc0Vycm9ycygpKSB7CkBAIC02NSwxMyArMTU1LDE3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICB3ZWJraXRXZWJWaWV3TG9hZEZhaWxlZChtX3dlYlZpZXcsIFdFQktJ
VF9MT0FEX1NUQVJURUQsIHJlc291cmNlRXJyb3IuZmFpbGluZ1VSTCgpLnN0cmluZygpLnV0Zjgo
KS5kYXRhKCksIGVycm9yLmdldCgpKTsKICAgICB9CiAKLSAgICB2b2lkIGRpZENvbW1pdE5hdmln
YXRpb24oV2ViUGFnZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9uKiwgQVBJOjpPYmplY3QqIC8qIHVz
ZXJEYXRhICovKSBvdmVycmlkZQorICAgIHZvaWQgZGlkQ29tbWl0TmF2aWdhdGlvbihXZWJQYWdl
UHJveHkmLCBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24sIEFQSTo6T2JqZWN0KiAvKiB1c2Vy
RGF0YSAqLykgb3ZlcnJpZGUKICAgICB7CisgICAgICAgIG1fY3VycmVudFJlcXVlc3QgPSBuYXZp
Z2F0aW9uID8gbmF2aWdhdGlvbi0+Y3VycmVudFJlcXVlc3QoKSA6IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCgpOworICAgICAgICBtX25hdmlnYXRpb25TdGF0ZVRyYWNrZXIuYWR2YW5jZVN0YXRl
KE5hdmlnYXRpb25TdGF0ZTo6Q29tbWl0dGVkKTsKICAgICAgICAgd2Via2l0V2ViVmlld0xvYWRD
aGFuZ2VkKG1fd2ViVmlldywgV0VCS0lUX0xPQURfQ09NTUlUVEVEKTsKICAgICB9CiAKICAgICB2
b2lkIGRpZEZpbmlzaE5hdmlnYXRpb24oV2ViUGFnZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9uKiwg
QVBJOjpPYmplY3QqIC8qIHVzZXJEYXRhICovKSBvdmVycmlkZQogICAgIHsKKyAgICAgICAgbV9j
dXJyZW50UmVxdWVzdCA9IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCgpOworICAgICAgICBtX25h
dmlnYXRpb25TdGF0ZVRyYWNrZXIuYWR2YW5jZVN0YXRlKE5hdmlnYXRpb25TdGF0ZTo6RmluaXNo
ZWQpOwogICAgICAgICB3ZWJraXRXZWJWaWV3TG9hZENoYW5nZWQobV93ZWJWaWV3LCBXRUJLSVRf
TE9BRF9GSU5JU0hFRCk7CiAgICAgfQogCkBAIC03OSw2ICsxNzMsOCBAQCBwcml2YXRlOgogICAg
IHsKICAgICAgICAgaWYgKCFmcmFtZS5pc01haW5GcmFtZSgpKQogICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICBtX2N1cnJlbnRSZXF1ZXN0ID0gV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0KCk7
CisgICAgICAgIG1fbmF2aWdhdGlvblN0YXRlVHJhY2tlci5hZHZhbmNlU3RhdGUoTmF2aWdhdGlv
blN0YXRlOjpGYWlsZWROYXZpZ2F0aW9uKTsKICAgICAgICAgR1VuaXF1ZVB0cjxHRXJyb3I+IGVy
cm9yKGdfZXJyb3JfbmV3X2xpdGVyYWwoZ19xdWFya19mcm9tX3N0cmluZyhyZXNvdXJjZUVycm9y
LmRvbWFpbigpLnV0ZjgoKS5kYXRhKCkpLAogICAgICAgICAgICAgdG9XZWJLaXRFcnJvcihyZXNv
dXJjZUVycm9yLmVycm9yQ29kZSgpKSwgcmVzb3VyY2VFcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlv
bigpLnV0ZjgoKS5kYXRhKCkpKTsKICAgICAgICAgd2Via2l0V2ViVmlld0xvYWRGYWlsZWQobV93
ZWJWaWV3LCBXRUJLSVRfTE9BRF9DT01NSVRURUQsIHJlc291cmNlRXJyb3IuZmFpbGluZ1VSTCgp
LnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIGVycm9yLmdldCgpKTsKQEAgLTEzNiw2ICsyMzIsOCBA
QCBwcml2YXRlOgogICAgIH0KIAogICAgIFdlYktpdFdlYlZpZXcqIG1fd2ViVmlldzsKKyAgICBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgbV9jdXJyZW50UmVxdWVzdDsKKyAgICBOYXZpZ2F0aW9u
U3RhdGVUcmFja2VyIG1fbmF2aWdhdGlvblN0YXRlVHJhY2tlcjsKIH07CiAKIHZvaWQgYXR0YWNo
TmF2aWdhdGlvbkNsaWVudFRvVmlldyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcAppbmRleCA4
N2QwMjJkM2NiNTZiNDg0YzhmNTQzZTJkNTUwNDM1NTBmMDRkMTRlLi5mMDc1YzIzYTRmZGIwYjBh
ZjlmYjExYmE2MWExNjAxYWNiNWM1YTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcApAQCAtMTE4OSwxMiArMTE4OSwyMyBAQCBz
dGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdChXZWJLaXRXZWJWaWV3Q2xhc3Mq
IHdlYlZpZXdDbGFzcykKICAgICAgKiBvcGVyYXRpb24gZmFpbHMgI1dlYktpdFdlYlZpZXc6Omxv
YWQtZmFpbGVkIHNpZ25hbCBpcyBlbWl0dGVkCiAgICAgICogYmVmb3JlICNXZWJLaXRXZWJWaWV3
Ojpsb2FkLWNoYW5nZWQgaXMgZW1pdHRlZCB3aXRoCiAgICAgICogJVdFQktJVF9MT0FEX0ZJTklT
SEVELgorICAgICAqCiAgICAgICogSWYgYSByZWRpcmVjdGlvbiBpcyByZWNlaXZlZCBmcm9tIHRo
ZSBzZXJ2ZXIsIHRoaXMgc2lnbmFsIGlzIGVtaXR0ZWQKICAgICAgKiB3aXRoICVXRUJLSVRfTE9B
RF9SRURJUkVDVEVEIGFmdGVyIHRoZSBpbml0aWFsIGVtaXNzaW9uIHdpdGgKICAgICAgKiAlV0VC
S0lUX0xPQURfU1RBUlRFRCBhbmQgYmVmb3JlICVXRUJLSVRfTE9BRF9DT01NSVRURUQuCiAgICAg
ICogV2hlbiB0aGUgcGFnZSBjb250ZW50IHN0YXJ0cyBhcnJpdmluZyB0aGUgc2lnbmFsIGlzIGVt
aXR0ZWQgd2l0aAogICAgICAqICVXRUJLSVRfTE9BRF9DT01NSVRURUQgZXZlbnQuCiAgICAgICoK
KyAgICAgKiBJZiBhIG5ldyBsb2FkIGlzIHN0YXJ0ZWQgd2hlbiB0aGUgcHJldmlvdXMgbG9hZCBo
YXMgbm90IHlldAorICAgICAqIGZpbmlzaGVkLCAjV2ViS2l0V2ViVmlldzo6bG9hZC1mYWlsZWQg
d2lsbCBiZSBlbWl0dGVkIHdpdGgKKyAgICAgKiAlV0VCS0lUX05FVFdPUktfRVJST1JfQ0FOQ0VM
TEVEIGJlZm9yZSAlV0VCS0lUX0xPQURfRklOSVNIRUQuCisgICAgICoKKyAgICAgKiAlV0VCS0lU
X0xPQURfRklOSVNIRUQgaXMgZ3VhcmFudGVlZCB0byBhbHdheXMgYmUgZW1pdHRlZCBiZWZvcmUK
KyAgICAgKiB0aGUgbmV4dCAlV0VCS0lUX0xPQURfU1RBUlRFRC4gSG93ZXZlciwgJVdFQktJVF9M
T0FEX1JFRElSRUNURUQKKyAgICAgKiB3aWxsIGJlIHNraXBwZWQgaWYgdGhlcmUgaXMgbm8gcmVk
aXJlY3Rpb24sIGFuZAorICAgICAqICVXRUJLSVRfTE9BRF9DT01NSVRURUQgd2lsbCBiZSBza2lw
cGVkIGlmIHRoZSBsb2FkIGZhaWxzIGJlZm9yZQorICAgICAqIHRoZSBsb2FkIGlzIGNvbW1pdHRl
ZC4KKyAgICAgKgogICAgICAqIFlvdSBjYW4gaGFuZGxlIHRoaXMgc2lnbmFsIGFuZCB1c2UgYSBz
d2l0Y2ggdG8gdHJhY2sgYW55IG9uZ29pbmcKICAgICAgKiBsb2FkIG9wZXJhdGlvbi4KICAgICAg
KgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDhm
YmI4MmUzZDcxNGQ4YTAzNWNlZWRlMGYyYmI1Nzg3NWFiYWYzYjcuLjg4ZGM0MWM0YjE4OGYxNGVi
NzI3YjM5YTc2YTk1OGRkZWQ5MTM2YjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysg
Yi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxOS0wMi0yNCAgTWljaGFlbCBD
YXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CisKKyAgICAgICAgW1dQRV1bR1RLXSBM
b2FkIGV2ZW50cyBtYXkgb2NjdXIgaW4gdW5leHBlY3RlZCBvcmRlciB3aGVuIEpTIHJlZGlyZWN0
cyBwYWdlIGJlZm9yZSBzdWJyZXNvdXJjZSBsb2FkIGZpbmlzaGVzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTQxMzEKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0R0xpYi9UZXN0TG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKHRlc3RVbmZpbmlzaGVkU3Vi
cmVzb3VyY2VMb2FkKToKKyAgICAgICAgKHNlcnZlckNhbGxiYWNrKToKKyAgICAgICAgKGJlZm9y
ZUFsbCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvTG9hZFRyYWNr
aW5nVGVzdC5jcHA6CisgICAgICAgIChsb2FkQ2hhbmdlZENhbGxiYWNrKToKKyAgICAgICAgKGxv
YWRGYWlsZWRDYWxsYmFjayk6CisgICAgICAgIChMb2FkVHJhY2tpbmdUZXN0OjpMb2FkVHJhY2tp
bmdUZXN0KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9Mb2FkVHJh
Y2tpbmdUZXN0Lmg6CisKIDIwMTktMDItMjMgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBh
cHBsZS5jb20+CiAKICAgICAgICAgQWRkIG5ldyBtYWMgdGFyZ2V0IG51bWJlcnMKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0TG9hZGVyQ2xpZW50
LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0TG9hZGVyQ2xp
ZW50LmNwcAppbmRleCBjNjdhZjE2ODRmZmNkZjIzODU5YmM0NzVkMDkwNWQyYWY5OGE0YmFkLi5l
ZTI3Zjg3ODcxYzQ3ZGIyNDRlZGQzZmIzMDYwMTRjMjhkZDgyOGNkIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdExvYWRlckNsaWVudC5jcHAKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RMb2FkZXJDbGllbnQu
Y3BwCkBAIC0yNDAsNiArMjQwLDI2IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3TG9hZFR3aWNl
QW5kUmVsb2FkKExvYWRUd2ljZUFuZFJlbG9hZFRlc3QqIHRlc3QsIGdjb25zdHBvCiAgICAgdGVz
dC0+d2FpdFVudGlsRmluaXNoZWQoKTsKIH0KIAorc3RhdGljIHZvaWQgdGVzdFVuZmluaXNoZWRT
dWJyZXNvdXJjZUxvYWQoTG9hZFRyYWNraW5nVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKK3sK
KyAgICAvLyBWZXJpZnkgdGhhdCBMb2FkRmluaXNoZWQgb2NjdXJzIGV2ZW4gaWYgdGhlIG5leHQg
bG9hZCBzdGFydHMgYmVmb3JlIHRoZQorICAgIC8vIHByZXZpb3VzIGxvYWQgYWN0dWFsbHkgZmlu
aXNoZXMuCisgICAgdGVzdC0+bV9sb2FkTWF5VHJpZ2dlclN1YnNlcXVlbnRMb2FkID0gdHJ1ZTsK
KyAgICB0ZXN0LT5sb2FkVVJJKGtTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi91bmZpbmlzaGVkLXN1
YnJlc291cmNlLWxvYWQiKS5kYXRhKCkpOworICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hl
ZCgpOworICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworCisgICAgVmVjdG9yPExv
YWRUcmFja2luZ1Rlc3Q6OkxvYWRFdmVudHM+JiBldmVudHMgPSB0ZXN0LT5tX2xvYWRFdmVudHM7
CisgICAgZ19hc3NlcnRfY21waW50KGV2ZW50cy5zaXplKCksID09LCA3KTsKKyAgICBnX2Fzc2Vy
dF9jbXBpbnQoZXZlbnRzWzBdLCA9PSwgTG9hZFRyYWNraW5nVGVzdDo6UHJvdmlzaW9uYWxMb2Fk
U3RhcnRlZCk7CisgICAgZ19hc3NlcnRfY21waW50KGV2ZW50c1sxXSwgPT0sIExvYWRUcmFja2lu
Z1Rlc3Q6OkxvYWRDb21taXR0ZWQpOworICAgIGdfYXNzZXJ0X2NtcGludChldmVudHNbMl0sID09
LCBMb2FkVHJhY2tpbmdUZXN0OjpMb2FkRmFpbGVkKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoZXZl
bnRzWzNdLCA9PSwgTG9hZFRyYWNraW5nVGVzdDo6TG9hZEZpbmlzaGVkKTsKKyAgICBnX2Fzc2Vy
dF9jbXBpbnQoZXZlbnRzWzRdLCA9PSwgTG9hZFRyYWNraW5nVGVzdDo6UHJvdmlzaW9uYWxMb2Fk
U3RhcnRlZCk7CisgICAgZ19hc3NlcnRfY21waW50KGV2ZW50c1s1XSwgPT0sIExvYWRUcmFja2lu
Z1Rlc3Q6OkxvYWRDb21taXR0ZWQpOworICAgIGdfYXNzZXJ0X2NtcGludChldmVudHNbNl0sID09
LCBMb2FkVHJhY2tpbmdUZXN0OjpMb2FkRmluaXNoZWQpOworfQorCiBjbGFzcyBWaWV3VVJJVHJh
Y2tpbmdUZXN0OiBwdWJsaWMgTG9hZFRyYWNraW5nVGVzdCB7CiBwdWJsaWM6CiAgICAgTUFLRV9H
TElCX1RFU1RfRklYVFVSRShWaWV3VVJJVHJhY2tpbmdUZXN0KTsKQEAgLTU5MCw2ICs2MTAsMTYg
QEAgc3RhdGljIHZvaWQgc2VydmVyQ2FsbGJhY2soU291cFNlcnZlciogc2VydmVyLCBTb3VwTWVz
c2FnZSogbWVzc2FnZSwgY29uc3QgY2hhcioKICAgICAgICAgIlRlc3RpbmchVGVzdGluZyFUZXN0
aW5nIVRlc3RpbmchVGVzdGluZyFUZXN0aW5nIVRlc3RpbmchVGVzdGluZyFUZXN0aW5nIVRlc3Rp
bmchVGVzdGluZyFUZXN0aW5nISIKICAgICAgICAgIlRlc3RpbmchVGVzdGluZyFUZXN0aW5nIVRl
c3RpbmchVGVzdGluZyFUZXN0aW5nIVRlc3RpbmchVGVzdGluZyFUZXN0aW5nIVRlc3RpbmchVGVz
dGluZyFUZXN0aW5nITwvYm9keT48L2h0bWw+IjsKIAorICAgIHN0YXRpYyBjb25zdCBjaGFyKiB1
bmZpbmlzaGVkU3VicmVzb3VyY2VMb2FkUmVzcG9uc2VTdHJpbmcgPSAiPGh0bWw+PGJvZHk+Igor
ICAgICAgICAiPGltZyBzcmM9XCIvc3RhbGxcIi8+IgorICAgICAgICAiPHNjcmlwdD4iCisgICAg
ICAgICIgIGZ1bmN0aW9uIHJ1bigpIHsiCisgICAgICAgICIgICAgICBsb2NhdGlvbiA9ICcvbm9y
bWFsJzsiCisgICAgICAgICIgIH0iCisgICAgICAgICIgIHNldEludGVydmFsKHJ1bigpLCA1MCk7
IgorICAgICAgICAiPC9zY3JpcHQ+IgorICAgICAgICAiPC9ib2R5PjwvaHRtbD4iOworCiAgICAg
aWYgKG1lc3NhZ2UtPm1ldGhvZCAhPSBTT1VQX01FVEhPRF9HRVQpIHsKICAgICAgICAgc291cF9t
ZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09VUF9TVEFUVVNfTk9UX0lNUExFTUVOVEVEKTsK
ICAgICAgICAgcmV0dXJuOwpAQCAtNjI1LDYgKzY1NSwxMiBAQCBzdGF0aWMgdm9pZCBzZXJ2ZXJD
YWxsYmFjayhTb3VwU2VydmVyKiBzZXJ2ZXIsIFNvdXBNZXNzYWdlKiBtZXNzYWdlLCBjb25zdCBj
aGFyKgogICAgIH0gZWxzZSBpZiAoZ19zdHJfZXF1YWwocGF0aCwgIi9yZWRpcmVjdC10by1kYXRh
IikpIHsKICAgICAgICAgc291cF9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09VUF9TVEFU
VVNfTU9WRURfUEVSTUFORU5UTFkpOwogICAgICAgICBzb3VwX21lc3NhZ2VfaGVhZGVyc19hcHBl
bmQobWVzc2FnZS0+cmVzcG9uc2VfaGVhZGVycywgIkxvY2F0aW9uIiwgImRhdGE6dGV4dC9wbGFp
bjtjaGFyc2V0PXV0Zi04LGRhdGEtdXJpIik7CisgICAgfSBlbHNlIGlmIChnX3N0cl9lcXVhbChw
YXRoLCAiL3VuZmluaXNoZWQtc3VicmVzb3VyY2UtbG9hZCIpKSB7CisgICAgICAgIHNvdXBfbWVz
c2FnZV9ib2R5X2FwcGVuZChtZXNzYWdlLT5yZXNwb25zZV9ib2R5LCBTT1VQX01FTU9SWV9TVEFU
SUMsIHVuZmluaXNoZWRTdWJyZXNvdXJjZUxvYWRSZXNwb25zZVN0cmluZywgc3RybGVuKHVuZmlu
aXNoZWRTdWJyZXNvdXJjZUxvYWRSZXNwb25zZVN0cmluZykpOworICAgIH0gZWxzZSBpZiAoZ19z
dHJfZXF1YWwocGF0aCwgIi9zdGFsbCIpKSB7CisgICAgICAgIC8vIFRoaXMgcmVxdWVzdCBpcyBu
ZXZlciB1bnBhdXNlZCBhbmQgc3RhbGxzIGZvcmV2ZXIuCisgICAgICAgIHNvdXBfc2VydmVyX3Bh
dXNlX21lc3NhZ2Uoc2VydmVyLCBtZXNzYWdlKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0gZWxz
ZQogICAgICAgICBzb3VwX21lc3NhZ2Vfc2V0X3N0YXR1cyhtZXNzYWdlLCBTT1VQX1NUQVRVU19O
T1RfRk9VTkQpOwogCkBAIC02NTUsNiArNjkxLDcgQEAgdm9pZCBiZWZvcmVBbGwoKQogICAgIExv
YWRUcmFja2luZ1Rlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJyZWxvYWQiLCB0ZXN0V2ViVmll
d1JlbG9hZCk7CiAgICAgTG9hZFRyYWNraW5nVGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgImhp
c3RvcnktbG9hZCIsIHRlc3RXZWJWaWV3SGlzdG9yeUxvYWQpOwogICAgIExvYWRUd2ljZUFuZFJl
bG9hZFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJsb2FkLXR3aWNlLWFuZC1yZWxvYWQiLCB0
ZXN0V2ViVmlld0xvYWRUd2ljZUFuZFJlbG9hZCk7CisgICAgTG9hZFRyYWNraW5nVGVzdDo6YWRk
KCJXZWJLaXRXZWJWaWV3IiwgInVuZmluaXNoZWQtc3VicmVzb3VyY2UtbG9hZCIsIHRlc3RVbmZp
bmlzaGVkU3VicmVzb3VyY2VMb2FkKTsKIAogICAgIC8vIFRoaXMgdGVzdCBjaGVja3MgdGhhdCB3
ZWIgdmlldyBub3RpZnk6OnVyaSBzaWduYWwgaXMgY29ycmVjdGx5IGVtaXR0ZWQKICAgICAvLyBh
bmQgdGhlIHVyaSBpcyBhbHJlYWR5IHVwZGF0ZWQgd2hlbiBsb2FkZXIgY2xpZW50IHNpZ25hbHMg
YXJlIGVtaXR0ZWQuCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0
R0xpYi9Mb2FkVHJhY2tpbmdUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJL
aXRHTGliL0xvYWRUcmFja2luZ1Rlc3QuY3BwCmluZGV4IDJkZGRlY2EzNjJlOWIyMjgyNDc2Zjk5
NWQzMjY3NzFiNWE4ODUyMGUuLjRlZmE1MTZjNjc0ZTdjOTNjMGNhODllYzQxYjg4NDAwNzg2YTFj
YmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL0xvYWRU
cmFja2luZ1Rlc3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGli
L0xvYWRUcmFja2luZ1Rlc3QuY3BwCkBAIC0yNSw3ICsyNSw4IEBAIHN0YXRpYyB2b2lkIGxvYWRD
aGFuZ2VkQ2FsbGJhY2soV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0TG9hZEV2ZW50IGxv
YWRFdmVuCiAgICAgc3dpdGNoIChsb2FkRXZlbnQpIHsKICAgICBjYXNlIFdFQktJVF9MT0FEX1NU
QVJURUQ6CiAgICAgICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3dlYl92aWV3X2lzX2xvYWRpbmco
d2ViVmlldykpOwotICAgICAgICBnX2Fzc2VydF9jbXBzdHIodGVzdC0+bV9hY3RpdmVVUkkuZGF0
YSgpLCA9PSwgd2Via2l0X3dlYl92aWV3X2dldF91cmkod2ViVmlldykpOworICAgICAgICBpZiAo
IXRlc3QtPm1fbG9hZE1heVRyaWdnZXJTdWJzZXF1ZW50TG9hZCkKKyAgICAgICAgICAgIGdfYXNz
ZXJ0X2NtcHN0cih0ZXN0LT5tX2FjdGl2ZVVSSS5kYXRhKCksID09LCB3ZWJraXRfd2ViX3ZpZXdf
Z2V0X3VyaSh3ZWJWaWV3KSk7CiAgICAgICAgIHRlc3QtPnByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQo
KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXRUJLSVRfTE9BRF9SRURJUkVDVEVEOgpAQCAt
NDgsMTQgKzQ5LDE1IEBAIHN0YXRpYyB2b2lkIGxvYWRDaGFuZ2VkQ2FsbGJhY2soV2ViS2l0V2Vi
Vmlldyogd2ViVmlldywgV2ViS2l0TG9hZEV2ZW50IGxvYWRFdmVuCiAgICAgICAgIGJyZWFrOwog
ICAgIH0KICAgICBjYXNlIFdFQktJVF9MT0FEX0ZJTklTSEVEOgotICAgICAgICBpZiAoIXRlc3Qt
Pm1fbG9hZEZhaWxlZCkgewotICAgICAgICAgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3dlYl92
aWV3X2lzX2xvYWRpbmcod2ViVmlldykpOwotICAgICAgICAgICAgZ19hc3NlcnRfY21wc3RyKHRl
c3QtPm1fYWN0aXZlVVJJLmRhdGEoKSwgPT0sIHdlYmtpdF93ZWJfdmlld19nZXRfdXJpKHdlYlZp
ZXcpKTsKLSAgICAgICAgfSBlbHNlIGlmICghZ19lcnJvcl9tYXRjaGVzKHRlc3QtPm1fZXJyb3Iu
Z2V0KCksIFdFQktJVF9ORVRXT1JLX0VSUk9SLCBXRUJLSVRfTkVUV09SS19FUlJPUl9DQU5DRUxM
RUQpKSB7Ci0gICAgICAgICAgICAvLyBXaGVuIGEgbmV3IGxvYWQgaXMgc3RhcnRlZCBiZWZvcmUg
dGhlIHByZXZpb3VzIG9uZSBoYXMgZmluaXNoZWQsIHdlIHJlY2VpdmUgdGhlIGxvYWQtZmluaXNo
ZWQgc2lnbmFsCi0gICAgICAgICAgICAvLyBvZiB0aGUgb25nb2luZyBsb2FkIHdoaWxlIHdlIGFs
cmVhZHkgaGF2ZSBhIHByb3Zpc2lvbmFsIFVSTCBmb3IgdGhlIG5ldyBsb2FkLiBUaGlzIGlzIHRo
ZSBvbmx5IGNhc2UKLSAgICAgICAgICAgIC8vIHdoZXJlIGlzbG9hZGluZyBpcyB0cnVlIHdoZW4g
dGhlIGxvYWQgaGFzIGZpbmlzaGVkLgotICAgICAgICAgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0
X3dlYl92aWV3X2lzX2xvYWRpbmcod2ViVmlldykpOworICAgICAgICBpZiAoIXRlc3QtPm1fbG9h
ZE1heVRyaWdnZXJTdWJzZXF1ZW50TG9hZCkgeworICAgICAgICAgICAgaWYgKCF0ZXN0LT5tX2xv
YWRGYWlsZWQpIHsKKyAgICAgICAgICAgICAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfd2ViX3Zp
ZXdfaXNfbG9hZGluZyh3ZWJWaWV3KSk7CisgICAgICAgICAgICAgICAgZ19hc3NlcnRfY21wc3Ry
KHRlc3QtPm1fYWN0aXZlVVJJLmRhdGEoKSwgPT0sIHdlYmtpdF93ZWJfdmlld19nZXRfdXJpKHdl
YlZpZXcpKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoIWdfZXJyb3JfbWF0Y2hlcyh0ZXN0LT5t
X2Vycm9yLmdldCgpLCBXRUJLSVRfTkVUV09SS19FUlJPUiwgV0VCS0lUX05FVFdPUktfRVJST1Jf
Q0FOQ0VMTEVEKSkgeworICAgICAgICAgICAgICAgIC8vIFdoZW4gYSBuZXcgbG9hZCBpcyBzdGFy
dGVkIGJlZm9yZSB0aGUgcHJldmlvdXMgb25lIGhhcyBmaW5pc2hlZCwgd2UgcmVjZWl2ZSB0aGUg
bG9hZC1maW5pc2hlZCBzaWduYWwKKyAgICAgICAgICAgICAgICAvLyBvZiB0aGUgb25nb2luZyBs
b2FkIHdoaWxlIHdlIGFscmVhZHkgaGF2ZSBhIHByb3Zpc2lvbmFsIFVSTCBmb3IgdGhlIG5ldyBs
b2FkLgorICAgICAgICAgICAgICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF93ZWJfdmlld19pc19s
b2FkaW5nKHdlYlZpZXcpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICB0ZXN0
LT5sb2FkRmluaXNoZWQoKTsKICAgICAgICAgYnJlYWs7CkBAIC03MSwyMCArNzMsMjEgQEAgc3Rh
dGljIHZvaWQgbG9hZEZhaWxlZENhbGxiYWNrKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktp
dExvYWRFdmVudCBsb2FkRXZlbnQKICAgICBnX2Fzc2VydF9ub25udWxsKGVycm9yKTsKICAgICB0
ZXN0LT5tX2Vycm9yLnJlc2V0KGdfZXJyb3JfY29weShlcnJvcikpOwogCi0gICAgaWYgKCFnX2Vy
cm9yX21hdGNoZXMoZXJyb3IsIFdFQktJVF9ORVRXT1JLX0VSUk9SLCBXRUJLSVRfTkVUV09SS19F
UlJPUl9DQU5DRUxMRUQpKSB7CisgICAgaWYgKCF0ZXN0LT5tX2xvYWRNYXlUcmlnZ2VyU3Vic2Vx
dWVudExvYWQgJiYgIWdfZXJyb3JfbWF0Y2hlcyhlcnJvciwgV0VCS0lUX05FVFdPUktfRVJST1Is
IFdFQktJVF9ORVRXT1JLX0VSUk9SX0NBTkNFTExFRCkpIHsKICAgICAgICAgLy8gV2hlbiBhIG5l
dyBsb2FkIGlzIHN0YXJ0ZWQgYmVmb3JlIHRoZSBwcmV2aW91cyBvbmUgaGFzIGZpbmlzaGVkLCB3
ZSByZWNlaXZlIHRoZSBsb2FkLWZhaWxlZCBzaWduYWwKLSAgICAgICAgLy8gb2YgdGhlIG9uZ29p
bmcgbG9hZCB3aGlsZSB3ZSBhbHJlYWR5IGhhdmUgYSBwcm92aXNpb25hbCBVUkwgZm9yIHRoZSBu
ZXcgbG9hZC4gVGhpcyBpcyB0aGUgb25seSBjYXNlCi0gICAgICAgIC8vIHdoZXJlIGlzLWxvYWRp
bmcgaXMgdHJ1ZSB3aGVuIHRoZSBsb2FkIGhhcyBmYWlsZWQuCisgICAgICAgIC8vIG9mIHRoZSBv
bmdvaW5nIGxvYWQgd2hpbGUgd2UgYWxyZWFkeSBoYXZlIGEgcHJvdmlzaW9uYWwgVVJMIGZvciB0
aGUgbmV3IGxvYWQuCiAgICAgICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF93ZWJfdmlld19pc19s
b2FkaW5nKHdlYlZpZXcpKTsKICAgICB9CiAKICAgICBzd2l0Y2ggKGxvYWRFdmVudCkgewogICAg
IGNhc2UgV0VCS0lUX0xPQURfU1RBUlRFRDoKLSAgICAgICAgZ19hc3NlcnRfY21wc3RyKHRlc3Qt
Pm1fYWN0aXZlVVJJLmRhdGEoKSwgPT0sIGZhaWxpbmdVUkkpOworICAgICAgICBpZiAoIXRlc3Qt
Pm1fbG9hZE1heVRyaWdnZXJTdWJzZXF1ZW50TG9hZCkKKyAgICAgICAgICAgIGdfYXNzZXJ0X2Nt
cHN0cih0ZXN0LT5tX2FjdGl2ZVVSSS5kYXRhKCksID09LCBmYWlsaW5nVVJJKTsKICAgICAgICAg
dGVzdC0+cHJvdmlzaW9uYWxMb2FkRmFpbGVkKGZhaWxpbmdVUkksIGVycm9yKTsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBXRUJLSVRfTE9BRF9DT01NSVRURUQ6Ci0gICAgICAgIGdfYXNzZXJ0
X2NtcHN0cih0ZXN0LT5tX2FjdGl2ZVVSSS5kYXRhKCksID09LCB3ZWJraXRfd2ViX3ZpZXdfZ2V0
X3VyaSh3ZWJWaWV3KSk7CisgICAgICAgIGlmICghdGVzdC0+bV9sb2FkTWF5VHJpZ2dlclN1YnNl
cXVlbnRMb2FkKQorICAgICAgICAgICAgZ19hc3NlcnRfY21wc3RyKHRlc3QtPm1fYWN0aXZlVVJJ
LmRhdGEoKSwgPT0sIHdlYmtpdF93ZWJfdmlld19nZXRfdXJpKHdlYlZpZXcpKTsKICAgICAgICAg
dGVzdC0+bG9hZEZhaWxlZChmYWlsaW5nVVJJLCBlcnJvcik7CiAgICAgICAgIGJyZWFrOwogICAg
IGRlZmF1bHQ6CkBAIC0xMDgsOCArMTExLDYgQEAgc3RhdGljIHZvaWQgZXN0aW1hdGVkUHJvZ3Jl
c3NDaGFuZ2VkQ2FsbGJhY2soR09iamVjdCosIEdQYXJhbVNwZWMqLCBMb2FkVHJhY2tpbmcKIH0K
IAogTG9hZFRyYWNraW5nVGVzdDo6TG9hZFRyYWNraW5nVGVzdCgpCi0gICAgOiBtX3J1bkxvYWRV
bnRpbENvbXBsZXRpb24oZmFsc2UpCi0gICAgLCBtX2xvYWRGYWlsZWQoZmFsc2UpCiB7CiAgICAg
Z19zaWduYWxfY29ubmVjdChtX3dlYlZpZXcsICJsb2FkLWNoYW5nZWQiLCBHX0NBTExCQUNLKGxv
YWRDaGFuZ2VkQ2FsbGJhY2spLCB0aGlzKTsKICAgICBnX3NpZ25hbF9jb25uZWN0KG1fd2ViVmll
dywgImxvYWQtZmFpbGVkIiwgR19DQUxMQkFDSyhsb2FkRmFpbGVkQ2FsbGJhY2spLCB0aGlzKTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL0xvYWRUcmFj
a2luZ1Rlc3QuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL0xvYWRUcmFj
a2luZ1Rlc3QuaAppbmRleCAwMjg4MDkwNGE3NDJmMjFiMTRhODkzNjYwMWI3MWUyZDZiMWU3OTg1
Li44MGQxYzczM2Q4ODFlODQzYzQ2MTZkZGVkZWE1MWQ0MThlNGI3MjQyIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9Mb2FkVHJhY2tpbmdUZXN0LmgKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvTG9hZFRyYWNraW5nVGVzdC5o
CkBAIC01OSw4ICs1OSw5IEBAIHB1YmxpYzoKICAgICAgICAgTG9hZEZhaWxlZCwKICAgICAgICAg
TG9hZEZhaWxlZFdpdGhUTFNFcnJvcnMKICAgICB9OwotICAgIGJvb2wgbV9ydW5Mb2FkVW50aWxD
b21wbGV0aW9uOwotICAgIGJvb2wgbV9sb2FkRmFpbGVkOworICAgIGJvb2wgbV9ydW5Mb2FkVW50
aWxDb21wbGV0aW9uID0gZmFsc2U7CisgICAgYm9vbCBtX2xvYWRGYWlsZWQgPSBmYWxzZTsKKyAg
ICBib29sIG1fbG9hZE1heVRyaWdnZXJTdWJzZXF1ZW50TG9hZCA9IGZhbHNlOwogICAgIEdVbmlx
dWVQdHI8R0Vycm9yPiBtX2Vycm9yOwogICAgIFZlY3RvcjxMb2FkRXZlbnRzPiBtX2xvYWRFdmVu
dHM7CiAgICAgZmxvYXQgbV9lc3RpbWF0ZWRQcm9ncmVzczsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>362881</attachid>
            <date>2019-02-24 21:01:02 -0800</date>
            <delta_ts>2019-03-11 09:38:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194131-20190224230101.patch</filename>
            <type>text/plain</type>
            <size>20190</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQxOTk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDdlOGVmZjMyNGI5ZDQ0N2Vk
ZjY5ZDRiYzNlNDI3NGM0YjVmMmVmZDYuLjdjYWUwNDYxNjQwNTViOTFjM2I1NmYwNjNhZWJiYTk1
MTUzMzVkNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTktMDItMjQgIE1pY2hhZWwg
Q2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtXUEVdW0dUS10g
TG9hZCBldmVudHMgbWF5IG9jY3VyIGluIHVuZXhwZWN0ZWQgb3JkZXIgd2hlbiBKUyByZWRpcmVj
dHMgcGFnZSBiZWZvcmUgc3VicmVzb3VyY2UgbG9hZCBmaW5pc2hlcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0MTMxCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSWYgYSBuZXcgcGFnZSBsb2FkIHN0YXJ0
cyBiZWZvcmUgdGhlIHByZXZpb3VzIG9uZSBjb21wbGV0ZXMsIHJ1biBsb2FkLWZhaWxlZCB3aXRo
CisgICAgICAgIFdFQktJVF9ORVRXT1JLX0VSUk9SX0NBTkNFTExFRCBMT0FEX0ZJTklTSEVEIGFu
ZCB0aGVuIExPQURfRklOSVNIRUQgYmVmb3JlIExPQURfU1RBUlRFRCB0bworICAgICAgICBhdm9p
ZCBjb25mdXNpbmcgYXBwbGljYXRpb25zIHRoYXQgZXhwZWN0IExPQURfRklOSVNIRUQgdG8gb2Nj
dXIuCisKKyAgICAgICAgQWxzbywgYWRkIGEgc3RhdGUgdHJhY2tlciB0byBlbnN1cmUgd2UgZG9u
J3QgbWFrZSB1bmV4cGVjdGVkIHN0YXRlIHRyYW5zaXRpb25zIGxpa2UgdGhpcy4KKyAgICAgICAg
V2l0aG91dCB0aGUgc3RhdGUgdHJhY2tlciwgd2UgYXJlIHB1dHRpbmcgdG9vIG11Y2ggdHJ1c3Qg
aW4gRnJhbWVMb2FkZXIgdG8gZW1pdCBldmVudHMgaW4KKyAgICAgICAgdGhlIG9yZGVyIHdlIGV4
cGVjdCwgYW5kIEZyYW1lTG9hZGVyIGlzIGV4dHJlbWVseSBjb21wbGV4IHNvIHRoaXMgaXMgZGlm
ZmljdWx0IHRvIGd1YXJhbnRlZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXROYXZpZ2F0aW9uQ2xpZW50LmNwcDoKKyAgICAgICAgKGlzRmluaXNoZWRTdGF0ZSk6CisgICAg
ICAgIChOYXZpZ2F0aW9uU3RhdGVUcmFja2VyOjphZHZhbmNlU3RhdGUpOgorICAgICAgICAoTmF2
aWdhdGlvblN0YXRlVHJhY2tlcjo6c3RhdGUgY29uc3QpOgorICAgICAgICAoTmF2aWdhdGlvbkNs
aWVudDo6dG9HRXJyb3IpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJW
aWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KToKKwogMjAxOS0w
Mi0yMyAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZW1vdmUgcmVtbmFudHMgb2YgaU9TIFdLMSBzY3JvbGxpbmcgdHJlZSBjb2RlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXROYXZpZ2F0aW9uQ2xpZW50
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE5hdmlnYXRpb25D
bGllbnQuY3BwCmluZGV4IDA4YWI2OWEwNTAxODQyMzc0OGNmMTMyYTAzNjEwMDEyMTQ1ZTJjZDgu
LjgxYWQxM2ZiMjAxZWQ5NDM0Yjk4ZGIzNWM5MDFhMmYzMjI1ZWVmZDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE5hdmlnYXRpb25DbGllbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE5hdmlnYXRpb25D
bGllbnQuY3BwCkBAIC0yMiw2ICsyMiw3IEBACiAKICNpbmNsdWRlICJBUElOYXZpZ2F0aW9uQWN0
aW9uLmgiCiAjaW5jbHVkZSAiQVBJTmF2aWdhdGlvbkNsaWVudC5oIgorI2luY2x1ZGUgIldlYkVy
cm9ycy5oIgogI2luY2x1ZGUgIldlYktpdEJhY2tGb3J3YXJkTGlzdFByaXZhdGUuaCIKICNpbmNs
dWRlICJXZWJLaXROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb25Qcml2YXRlLmgiCiAjaW5jbHVkZSAi
V2ViS2l0UHJpdmF0ZS5oIgpAQCAtMzQsNiArMzUsNjIgQEAKIHVzaW5nIG5hbWVzcGFjZSBXZWJL
aXQ7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAorZW51bSBjbGFzcyBOYXZpZ2F0aW9uU3Rh
dGUgeworICAgIE5vdFN0YXJ0ZWQsCisgICAgU3RhcnRlZCwKKyAgICBSZWRpcmVjdGVkLAorICAg
IEZhaWxlZFByb3Zpc2lvbmFsTmF2aWdhdGlvbiwKKyAgICBDb21taXR0ZWQsCisgICAgRmFpbGVk
TmF2aWdhdGlvbiwKKyAgICBGaW5pc2hlZCwKK307CisKK3N0YXRpYyBib29sIGlzRmluaXNoZWRT
dGF0ZShOYXZpZ2F0aW9uU3RhdGUgc3RhdGUpCit7CisgICAgcmV0dXJuIHN0YXRlID09IE5hdmln
YXRpb25TdGF0ZTo6RmFpbGVkUHJvdmlzaW9uYWxOYXZpZ2F0aW9uCisgICAgICAgIHx8IHN0YXRl
ID09IE5hdmlnYXRpb25TdGF0ZTo6RmFpbGVkTmF2aWdhdGlvbgorICAgICAgICB8fCBzdGF0ZSA9
PSBOYXZpZ2F0aW9uU3RhdGU6OkZpbmlzaGVkOworfQorCitjbGFzcyBOYXZpZ2F0aW9uU3RhdGVU
cmFja2VyIHsKK3B1YmxpYzoKKyAgICB1c2luZyBNdXN0RmluaXNoTmF2aWdhdGlvbkNhbGxiYWNr
ID0gV1RGOjpGdW5jdGlvbjx2b2lkICh2b2lkKT47CisKKyAgICB2b2lkIGFkdmFuY2VTdGF0ZShO
YXZpZ2F0aW9uU3RhdGUgc3RhdGUpCisgICAgeworICAgICAgICBzd2l0Y2ggKHN0YXRlKSB7Cisg
ICAgICAgIGNhc2UgTmF2aWdhdGlvblN0YXRlOjpOb3RTdGFydGVkOgorICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBOYXZp
Z2F0aW9uU3RhdGU6OlN0YXJ0ZWQ6CisgICAgICAgICAgICAvLyBTdGFydGVkIGNhbiBvY2N1ciBh
dCBhbnkgdGltZS4KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE5hdmlnYXRpb25T
dGF0ZTo6UmVkaXJlY3RlZDoKKyAgICAgICAgICAgIEFTU0VSVChtX2N1cnJlbnRTdGF0ZSA9PSBO
YXZpZ2F0aW9uU3RhdGU6OlN0YXJ0ZWQgfHwgbV9jdXJyZW50U3RhdGUgPT0gTmF2aWdhdGlvblN0
YXRlOjpSZWRpcmVjdGVkKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE5hdmln
YXRpb25TdGF0ZTo6RmFpbGVkUHJvdmlzaW9uYWxOYXZpZ2F0aW9uOgorICAgICAgICAgICAgQVNT
RVJUKG1fY3VycmVudFN0YXRlID09IE5hdmlnYXRpb25TdGF0ZTo6U3RhcnRlZCB8fCBtX2N1cnJl
bnRTdGF0ZSA9PSBOYXZpZ2F0aW9uU3RhdGU6OlJlZGlyZWN0ZWQpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgTmF2aWdhdGlvblN0YXRlOjpDb21taXR0ZWQ6CisgICAgICAgICAg
ICBBU1NFUlQobV9jdXJyZW50U3RhdGUgPT0gTmF2aWdhdGlvblN0YXRlOjpTdGFydGVkIHx8IG1f
Y3VycmVudFN0YXRlID09IE5hdmlnYXRpb25TdGF0ZTo6UmVkaXJlY3RlZCk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBOYXZpZ2F0aW9uU3RhdGU6OkZhaWxlZE5hdmlnYXRpb246
CisgICAgICAgICAgICBBU1NFUlQobV9jdXJyZW50U3RhdGUgPT0gTmF2aWdhdGlvblN0YXRlOjpD
b21taXR0ZWQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTmF2aWdhdGlvblN0
YXRlOjpGaW5pc2hlZDoKKyAgICAgICAgICAgIEFTU0VSVChtX2N1cnJlbnRTdGF0ZSA9PSBOYXZp
Z2F0aW9uU3RhdGU6OkNvbW1pdHRlZCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
CisgICAgICAgIG1fY3VycmVudFN0YXRlID0gc3RhdGU7CisgICAgfQorCisgICAgTmF2aWdhdGlv
blN0YXRlIHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50U3RhdGU7IH0KKworcHJpdmF0
ZToKKyAgICBOYXZpZ2F0aW9uU3RhdGUgbV9jdXJyZW50U3RhdGUgPSBOYXZpZ2F0aW9uU3RhdGU6
Ok5vdFN0YXJ0ZWQ7Cit9OworCiBjbGFzcyBOYXZpZ2F0aW9uQ2xpZW50IDogcHVibGljIEFQSTo6
TmF2aWdhdGlvbkNsaWVudCB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgTmF2aWdhdGlvbkNsaWVu
dChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQpAQCAtNDIsMTMgKzk5LDQ0IEBAIHB1YmxpYzoKICAg
ICB9CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTmF2aWdhdGlvbihX
ZWJQYWdlUHJveHkmLCBBUEk6Ok5hdmlnYXRpb24qLCBBUEk6Ok9iamVjdCogLyogdXNlckRhdGEg
Ki8pIG92ZXJyaWRlCisgICAgR1VuaXF1ZVB0cjxHRXJyb3I+IHRvR0Vycm9yKGNvbnN0IFJlc291
cmNlRXJyb3ImIHJlc291cmNlRXJyb3IpCiAgICAgeworICAgICAgICBHVW5pcXVlUHRyPEdFcnJv
cj4gZXJyb3IoZ19lcnJvcl9uZXdfbGl0ZXJhbChnX3F1YXJrX2Zyb21fc3RyaW5nKHJlc291cmNl
RXJyb3IuZG9tYWluKCkudXRmOCgpLmRhdGEoKSksCisgICAgICAgICAgICB0b1dlYktpdEVycm9y
KHJlc291cmNlRXJyb3IuZXJyb3JDb2RlKCkpLCByZXNvdXJjZUVycm9yLmxvY2FsaXplZERlc2Ny
aXB0aW9uKCkudXRmOCgpLmRhdGEoKSkpOworICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgfQor
CisgICAgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTmF2aWdhdGlvbihXZWJQYWdlUHJveHkmLCBB
UEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24sIEFQSTo6T2JqZWN0KiAvKiB1c2VyRGF0YSAqLykg
b3ZlcnJpZGUKKyAgICB7CisgICAgICAgIE5hdmlnYXRpb25TdGF0ZSBzdGF0ZSA9IG1fbmF2aWdh
dGlvblN0YXRlVHJhY2tlci5zdGF0ZSgpOworICAgICAgICBpZiAoc3RhdGUgIT0gTmF2aWdhdGlv
blN0YXRlOjpOb3RTdGFydGVkICYmICFpc0ZpbmlzaGVkU3RhdGUoc3RhdGUpKSB7CisgICAgICAg
ICAgICBSZXNvdXJjZUVycm9yIHJlc291cmNlRXJyb3IgPSBjYW5jZWxsZWRFcnJvcihtX2N1cnJl
bnRSZXF1ZXN0KTsKKyAgICAgICAgICAgIEdVbmlxdWVQdHI8R0Vycm9yPiBlcnJvciA9IHRvR0Vy
cm9yKHJlc291cmNlRXJyb3IpOworCisgICAgICAgICAgICBzd2l0Y2ggKHN0YXRlKSB7CisgICAg
ICAgICAgICBjYXNlIE5hdmlnYXRpb25TdGF0ZTo6U3RhcnRlZDoKKyAgICAgICAgICAgICAgICBG
QUxMVEhST1VHSDsKKyAgICAgICAgICAgIGNhc2UgTmF2aWdhdGlvblN0YXRlOjpSZWRpcmVjdGVk
OgorICAgICAgICAgICAgICAgIC8vIE91ciBBUEkgZ3VhcmFudGVlcyBsb2FkIGZhaWxlZCBpcyBu
ZXZlciBlbWl0dGVkIHdpdGggUkVESVJFQ1RFRC4KKyAgICAgICAgICAgICAgICB3ZWJraXRXZWJW
aWV3TG9hZEZhaWxlZChtX3dlYlZpZXcsIFdFQktJVF9MT0FEX1NUQVJURUQsIHJlc291cmNlRXJy
b3IuZmFpbGluZ1VSTCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIGVycm9yLmdldCgpKTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgTmF2aWdhdGlvblN0YXRlOjpD
b21taXR0ZWQ6CisgICAgICAgICAgICAgICAgd2Via2l0V2ViVmlld0xvYWRGYWlsZWQobV93ZWJW
aWV3LCBXRUJLSVRfTE9BRF9DT01NSVRURUQsIHJlc291cmNlRXJyb3IuZmFpbGluZ1VSTCgpLnN0
cmluZygpLnV0ZjgoKS5kYXRhKCksIGVycm9yLmdldCgpKTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBtX2N1cnJlbnRSZXF1
ZXN0ID0gbmF2aWdhdGlvbiA/IG5hdmlnYXRpb24tPmN1cnJlbnRSZXF1ZXN0KCkgOiBSZXNvdXJj
ZVJlcXVlc3QoKTsKKyAgICAgICAgbV9uYXZpZ2F0aW9uU3RhdGVUcmFja2VyLmFkdmFuY2VTdGF0
ZShOYXZpZ2F0aW9uU3RhdGU6OlN0YXJ0ZWQpOwogICAgICAgICB3ZWJraXRXZWJWaWV3TG9hZENo
YW5nZWQobV93ZWJWaWV3LCBXRUJLSVRfTE9BRF9TVEFSVEVEKTsKICAgICB9CiAKLSAgICB2b2lk
IGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTmF2aWdhdGlvbihXZWJQYWdl
UHJveHkmLCBBUEk6Ok5hdmlnYXRpb24qLCBBUEk6Ok9iamVjdCogLyogdXNlckRhdGEgKi8pIG92
ZXJyaWRlCisgICAgdm9pZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbE5h
dmlnYXRpb24oV2ViUGFnZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0aW9uLCBBUEk6
Ok9iamVjdCogLyogdXNlckRhdGEgKi8pIG92ZXJyaWRlCiAgICAgeworICAgICAgICBtX2N1cnJl
bnRSZXF1ZXN0ID0gbmF2aWdhdGlvbiA/IG5hdmlnYXRpb24tPmN1cnJlbnRSZXF1ZXN0KCkgOiBS
ZXNvdXJjZVJlcXVlc3QoKTsKKyAgICAgICAgbV9uYXZpZ2F0aW9uU3RhdGVUcmFja2VyLmFkdmFu
Y2VTdGF0ZShOYXZpZ2F0aW9uU3RhdGU6OlJlZGlyZWN0ZWQpOwogICAgICAgICB3ZWJraXRXZWJW
aWV3TG9hZENoYW5nZWQobV93ZWJWaWV3LCBXRUJLSVRfTE9BRF9SRURJUkVDVEVEKTsKICAgICB9
CiAKQEAgLTU2LDYgKzE0NCw4IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBpZiAoIWZyYW1l
LmlzTWFpbkZyYW1lKCkpCiAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fY3VycmVudFJl
cXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QoKTsKKyAgICAgICAgbV9uYXZpZ2F0aW9uU3RhdGVUcmFj
a2VyLmFkdmFuY2VTdGF0ZShOYXZpZ2F0aW9uU3RhdGU6OkZhaWxlZFByb3Zpc2lvbmFsTmF2aWdh
dGlvbik7CiAgICAgICAgIEdVbmlxdWVQdHI8R0Vycm9yPiBlcnJvcihnX2Vycm9yX25ld19saXRl
cmFsKGdfcXVhcmtfZnJvbV9zdHJpbmcocmVzb3VyY2VFcnJvci5kb21haW4oKS51dGY4KCkuZGF0
YSgpKSwKICAgICAgICAgICAgIHRvV2ViS2l0RXJyb3IocmVzb3VyY2VFcnJvci5lcnJvckNvZGUo
KSksIHJlc291cmNlRXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKS51dGY4KCkuZGF0YSgpKSk7
CiAgICAgICAgIGlmIChyZXNvdXJjZUVycm9yLnRsc0Vycm9ycygpKSB7CkBAIC02NSwxMyArMTU1
LDE3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB3ZWJraXRXZWJWaWV3TG9hZEZhaWxlZChtX3dl
YlZpZXcsIFdFQktJVF9MT0FEX1NUQVJURUQsIHJlc291cmNlRXJyb3IuZmFpbGluZ1VSTCgpLnN0
cmluZygpLnV0ZjgoKS5kYXRhKCksIGVycm9yLmdldCgpKTsKICAgICB9CiAKLSAgICB2b2lkIGRp
ZENvbW1pdE5hdmlnYXRpb24oV2ViUGFnZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9uKiwgQVBJOjpP
YmplY3QqIC8qIHVzZXJEYXRhICovKSBvdmVycmlkZQorICAgIHZvaWQgZGlkQ29tbWl0TmF2aWdh
dGlvbihXZWJQYWdlUHJveHkmLCBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24sIEFQSTo6T2Jq
ZWN0KiAvKiB1c2VyRGF0YSAqLykgb3ZlcnJpZGUKICAgICB7CisgICAgICAgIG1fY3VycmVudFJl
cXVlc3QgPSBuYXZpZ2F0aW9uID8gbmF2aWdhdGlvbi0+Y3VycmVudFJlcXVlc3QoKSA6IFJlc291
cmNlUmVxdWVzdCgpOworICAgICAgICBtX25hdmlnYXRpb25TdGF0ZVRyYWNrZXIuYWR2YW5jZVN0
YXRlKE5hdmlnYXRpb25TdGF0ZTo6Q29tbWl0dGVkKTsKICAgICAgICAgd2Via2l0V2ViVmlld0xv
YWRDaGFuZ2VkKG1fd2ViVmlldywgV0VCS0lUX0xPQURfQ09NTUlUVEVEKTsKICAgICB9CiAKICAg
ICB2b2lkIGRpZEZpbmlzaE5hdmlnYXRpb24oV2ViUGFnZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9u
KiwgQVBJOjpPYmplY3QqIC8qIHVzZXJEYXRhICovKSBvdmVycmlkZQogICAgIHsKKyAgICAgICAg
bV9jdXJyZW50UmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdCgpOworICAgICAgICBtX25hdmlnYXRp
b25TdGF0ZVRyYWNrZXIuYWR2YW5jZVN0YXRlKE5hdmlnYXRpb25TdGF0ZTo6RmluaXNoZWQpOwog
ICAgICAgICB3ZWJraXRXZWJWaWV3TG9hZENoYW5nZWQobV93ZWJWaWV3LCBXRUJLSVRfTE9BRF9G
SU5JU0hFRCk7CiAgICAgfQogCkBAIC03OSw2ICsxNzMsOCBAQCBwcml2YXRlOgogICAgIHsKICAg
ICAgICAgaWYgKCFmcmFtZS5pc01haW5GcmFtZSgpKQogICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICBtX2N1cnJlbnRSZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KCk7CisgICAgICAgIG1fbmF2
aWdhdGlvblN0YXRlVHJhY2tlci5hZHZhbmNlU3RhdGUoTmF2aWdhdGlvblN0YXRlOjpGYWlsZWRO
YXZpZ2F0aW9uKTsKICAgICAgICAgR1VuaXF1ZVB0cjxHRXJyb3I+IGVycm9yKGdfZXJyb3JfbmV3
X2xpdGVyYWwoZ19xdWFya19mcm9tX3N0cmluZyhyZXNvdXJjZUVycm9yLmRvbWFpbigpLnV0Zjgo
KS5kYXRhKCkpLAogICAgICAgICAgICAgdG9XZWJLaXRFcnJvcihyZXNvdXJjZUVycm9yLmVycm9y
Q29kZSgpKSwgcmVzb3VyY2VFcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpLnV0ZjgoKS5kYXRh
KCkpKTsKICAgICAgICAgd2Via2l0V2ViVmlld0xvYWRGYWlsZWQobV93ZWJWaWV3LCBXRUJLSVRf
TE9BRF9DT01NSVRURUQsIHJlc291cmNlRXJyb3IuZmFpbGluZ1VSTCgpLnN0cmluZygpLnV0Zjgo
KS5kYXRhKCksIGVycm9yLmdldCgpKTsKQEAgLTEzNiw2ICsyMzIsOCBAQCBwcml2YXRlOgogICAg
IH0KIAogICAgIFdlYktpdFdlYlZpZXcqIG1fd2ViVmlldzsKKyAgICBSZXNvdXJjZVJlcXVlc3Qg
bV9jdXJyZW50UmVxdWVzdDsKKyAgICBOYXZpZ2F0aW9uU3RhdGVUcmFja2VyIG1fbmF2aWdhdGlv
blN0YXRlVHJhY2tlcjsKIH07CiAKIHZvaWQgYXR0YWNoTmF2aWdhdGlvbkNsaWVudFRvVmlldyhX
ZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcAppbmRleCA4N2QwMjJkM2NiNTZiNDg0YzhmNTQzZTJk
NTUwNDM1NTBmMDRkMTRlLi5mMDc1YzIzYTRmZGIwYjBhZjlmYjExYmE2MWExNjAxYWNiNWM1YTUw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJW
aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJW
aWV3LmNwcApAQCAtMTE4OSwxMiArMTE4OSwyMyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3Zp
ZXdfY2xhc3NfaW5pdChXZWJLaXRXZWJWaWV3Q2xhc3MqIHdlYlZpZXdDbGFzcykKICAgICAgKiBv
cGVyYXRpb24gZmFpbHMgI1dlYktpdFdlYlZpZXc6OmxvYWQtZmFpbGVkIHNpZ25hbCBpcyBlbWl0
dGVkCiAgICAgICogYmVmb3JlICNXZWJLaXRXZWJWaWV3Ojpsb2FkLWNoYW5nZWQgaXMgZW1pdHRl
ZCB3aXRoCiAgICAgICogJVdFQktJVF9MT0FEX0ZJTklTSEVELgorICAgICAqCiAgICAgICogSWYg
YSByZWRpcmVjdGlvbiBpcyByZWNlaXZlZCBmcm9tIHRoZSBzZXJ2ZXIsIHRoaXMgc2lnbmFsIGlz
IGVtaXR0ZWQKICAgICAgKiB3aXRoICVXRUJLSVRfTE9BRF9SRURJUkVDVEVEIGFmdGVyIHRoZSBp
bml0aWFsIGVtaXNzaW9uIHdpdGgKICAgICAgKiAlV0VCS0lUX0xPQURfU1RBUlRFRCBhbmQgYmVm
b3JlICVXRUJLSVRfTE9BRF9DT01NSVRURUQuCiAgICAgICogV2hlbiB0aGUgcGFnZSBjb250ZW50
IHN0YXJ0cyBhcnJpdmluZyB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQgd2l0aAogICAgICAqICVXRUJL
SVRfTE9BRF9DT01NSVRURUQgZXZlbnQuCiAgICAgICoKKyAgICAgKiBJZiBhIG5ldyBsb2FkIGlz
IHN0YXJ0ZWQgd2hlbiB0aGUgcHJldmlvdXMgbG9hZCBoYXMgbm90IHlldAorICAgICAqIGZpbmlz
aGVkLCAjV2ViS2l0V2ViVmlldzo6bG9hZC1mYWlsZWQgd2lsbCBiZSBlbWl0dGVkIHdpdGgKKyAg
ICAgKiAlV0VCS0lUX05FVFdPUktfRVJST1JfQ0FOQ0VMTEVEIGJlZm9yZSAlV0VCS0lUX0xPQURf
RklOSVNIRUQuCisgICAgICoKKyAgICAgKiAlV0VCS0lUX0xPQURfRklOSVNIRUQgaXMgZ3VhcmFu
dGVlZCB0byBhbHdheXMgYmUgZW1pdHRlZCBiZWZvcmUKKyAgICAgKiB0aGUgbmV4dCAlV0VCS0lU
X0xPQURfU1RBUlRFRC4gSG93ZXZlciwgJVdFQktJVF9MT0FEX1JFRElSRUNURUQKKyAgICAgKiB3
aWxsIGJlIHNraXBwZWQgaWYgdGhlcmUgaXMgbm8gcmVkaXJlY3Rpb24sIGFuZAorICAgICAqICVX
RUJLSVRfTE9BRF9DT01NSVRURUQgd2lsbCBiZSBza2lwcGVkIGlmIHRoZSBsb2FkIGZhaWxzIGJl
Zm9yZQorICAgICAqIHRoZSBsb2FkIGlzIGNvbW1pdHRlZC4KKyAgICAgKgogICAgICAqIFlvdSBj
YW4gaGFuZGxlIHRoaXMgc2lnbmFsIGFuZCB1c2UgYSBzd2l0Y2ggdG8gdHJhY2sgYW55IG9uZ29p
bmcKICAgICAgKiBsb2FkIG9wZXJhdGlvbi4KICAgICAgKgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hh
bmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDhmYmI4MmUzZDcxNGQ4YTAzNWNlZWRlMGYy
YmI1Nzg3NWFiYWYzYjcuLjg4ZGM0MWM0YjE4OGYxNGViNzI3YjM5YTc2YTk1OGRkZWQ5MTM2YjYg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAxOS0wMi0yNCAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGln
YWxpYS5jb20+CisKKyAgICAgICAgW1dQRV1bR1RLXSBMb2FkIGV2ZW50cyBtYXkgb2NjdXIgaW4g
dW5leHBlY3RlZCBvcmRlciB3aGVuIEpTIHJlZGlyZWN0cyBwYWdlIGJlZm9yZSBzdWJyZXNvdXJj
ZSBsb2FkIGZpbmlzaGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xOTQxMzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0TG9hZGVyQ2xpZW50
LmNwcDoKKyAgICAgICAgKHRlc3RVbmZpbmlzaGVkU3VicmVzb3VyY2VMb2FkKToKKyAgICAgICAg
KHNlcnZlckNhbGxiYWNrKToKKyAgICAgICAgKGJlZm9yZUFsbCk6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9nbGliL1dlYktpdEdMaWIvTG9hZFRyYWNraW5nVGVzdC5jcHA6CisgICAgICAgIChs
b2FkQ2hhbmdlZENhbGxiYWNrKToKKyAgICAgICAgKGxvYWRGYWlsZWRDYWxsYmFjayk6CisgICAg
ICAgIChMb2FkVHJhY2tpbmdUZXN0OjpMb2FkVHJhY2tpbmdUZXN0KToKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9Mb2FkVHJhY2tpbmdUZXN0Lmg6CisKIDIwMTktMDIt
MjMgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgQWRk
IG5ldyBtYWMgdGFyZ2V0IG51bWJlcnMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R0xpYi9UZXN0TG9hZGVyQ2xpZW50LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0TG9hZGVyQ2xpZW50LmNwcAppbmRleCBjNjdhZjE2ODRm
ZmNkZjIzODU5YmM0NzVkMDkwNWQyYWY5OGE0YmFkLi5lZTI3Zjg3ODcxYzQ3ZGIyNDRlZGQzZmIz
MDYwMTRjMjhkZDgyOGNkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdEdMaWIvVGVzdExvYWRlckNsaWVudC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRHTGliL1Rlc3RMb2FkZXJDbGllbnQuY3BwCkBAIC0yNDAsNiArMjQwLDI2IEBA
IHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3TG9hZFR3aWNlQW5kUmVsb2FkKExvYWRUd2ljZUFuZFJl
bG9hZFRlc3QqIHRlc3QsIGdjb25zdHBvCiAgICAgdGVzdC0+d2FpdFVudGlsRmluaXNoZWQoKTsK
IH0KIAorc3RhdGljIHZvaWQgdGVzdFVuZmluaXNoZWRTdWJyZXNvdXJjZUxvYWQoTG9hZFRyYWNr
aW5nVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKK3sKKyAgICAvLyBWZXJpZnkgdGhhdCBMb2Fk
RmluaXNoZWQgb2NjdXJzIGV2ZW4gaWYgdGhlIG5leHQgbG9hZCBzdGFydHMgYmVmb3JlIHRoZQor
ICAgIC8vIHByZXZpb3VzIGxvYWQgYWN0dWFsbHkgZmluaXNoZXMuCisgICAgdGVzdC0+bV9sb2Fk
TWF5VHJpZ2dlclN1YnNlcXVlbnRMb2FkID0gdHJ1ZTsKKyAgICB0ZXN0LT5sb2FkVVJJKGtTZXJ2
ZXItPmdldFVSSUZvclBhdGgoIi91bmZpbmlzaGVkLXN1YnJlc291cmNlLWxvYWQiKS5kYXRhKCkp
OworICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworICAgIHRlc3QtPndhaXRVbnRp
bExvYWRGaW5pc2hlZCgpOworCisgICAgVmVjdG9yPExvYWRUcmFja2luZ1Rlc3Q6OkxvYWRFdmVu
dHM+JiBldmVudHMgPSB0ZXN0LT5tX2xvYWRFdmVudHM7CisgICAgZ19hc3NlcnRfY21waW50KGV2
ZW50cy5zaXplKCksID09LCA3KTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoZXZlbnRzWzBdLCA9PSwg
TG9hZFRyYWNraW5nVGVzdDo6UHJvdmlzaW9uYWxMb2FkU3RhcnRlZCk7CisgICAgZ19hc3NlcnRf
Y21waW50KGV2ZW50c1sxXSwgPT0sIExvYWRUcmFja2luZ1Rlc3Q6OkxvYWRDb21taXR0ZWQpOwor
ICAgIGdfYXNzZXJ0X2NtcGludChldmVudHNbMl0sID09LCBMb2FkVHJhY2tpbmdUZXN0OjpMb2Fk
RmFpbGVkKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoZXZlbnRzWzNdLCA9PSwgTG9hZFRyYWNraW5n
VGVzdDo6TG9hZEZpbmlzaGVkKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoZXZlbnRzWzRdLCA9PSwg
TG9hZFRyYWNraW5nVGVzdDo6UHJvdmlzaW9uYWxMb2FkU3RhcnRlZCk7CisgICAgZ19hc3NlcnRf
Y21waW50KGV2ZW50c1s1XSwgPT0sIExvYWRUcmFja2luZ1Rlc3Q6OkxvYWRDb21taXR0ZWQpOwor
ICAgIGdfYXNzZXJ0X2NtcGludChldmVudHNbNl0sID09LCBMb2FkVHJhY2tpbmdUZXN0OjpMb2Fk
RmluaXNoZWQpOworfQorCiBjbGFzcyBWaWV3VVJJVHJhY2tpbmdUZXN0OiBwdWJsaWMgTG9hZFRy
YWNraW5nVGVzdCB7CiBwdWJsaWM6CiAgICAgTUFLRV9HTElCX1RFU1RfRklYVFVSRShWaWV3VVJJ
VHJhY2tpbmdUZXN0KTsKQEAgLTU5MCw2ICs2MTAsMTYgQEAgc3RhdGljIHZvaWQgc2VydmVyQ2Fs
bGJhY2soU291cFNlcnZlciogc2VydmVyLCBTb3VwTWVzc2FnZSogbWVzc2FnZSwgY29uc3QgY2hh
cioKICAgICAgICAgIlRlc3RpbmchVGVzdGluZyFUZXN0aW5nIVRlc3RpbmchVGVzdGluZyFUZXN0
aW5nIVRlc3RpbmchVGVzdGluZyFUZXN0aW5nIVRlc3RpbmchVGVzdGluZyFUZXN0aW5nISIKICAg
ICAgICAgIlRlc3RpbmchVGVzdGluZyFUZXN0aW5nIVRlc3RpbmchVGVzdGluZyFUZXN0aW5nIVRl
c3RpbmchVGVzdGluZyFUZXN0aW5nIVRlc3RpbmchVGVzdGluZyFUZXN0aW5nITwvYm9keT48L2h0
bWw+IjsKIAorICAgIHN0YXRpYyBjb25zdCBjaGFyKiB1bmZpbmlzaGVkU3VicmVzb3VyY2VMb2Fk
UmVzcG9uc2VTdHJpbmcgPSAiPGh0bWw+PGJvZHk+IgorICAgICAgICAiPGltZyBzcmM9XCIvc3Rh
bGxcIi8+IgorICAgICAgICAiPHNjcmlwdD4iCisgICAgICAgICIgIGZ1bmN0aW9uIHJ1bigpIHsi
CisgICAgICAgICIgICAgICBsb2NhdGlvbiA9ICcvbm9ybWFsJzsiCisgICAgICAgICIgIH0iCisg
ICAgICAgICIgIHNldEludGVydmFsKHJ1bigpLCA1MCk7IgorICAgICAgICAiPC9zY3JpcHQ+Igor
ICAgICAgICAiPC9ib2R5PjwvaHRtbD4iOworCiAgICAgaWYgKG1lc3NhZ2UtPm1ldGhvZCAhPSBT
T1VQX01FVEhPRF9HRVQpIHsKICAgICAgICAgc291cF9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2Fn
ZSwgU09VUF9TVEFUVVNfTk9UX0lNUExFTUVOVEVEKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNjI1
LDYgKzY1NSwxMiBAQCBzdGF0aWMgdm9pZCBzZXJ2ZXJDYWxsYmFjayhTb3VwU2VydmVyKiBzZXJ2
ZXIsIFNvdXBNZXNzYWdlKiBtZXNzYWdlLCBjb25zdCBjaGFyKgogICAgIH0gZWxzZSBpZiAoZ19z
dHJfZXF1YWwocGF0aCwgIi9yZWRpcmVjdC10by1kYXRhIikpIHsKICAgICAgICAgc291cF9tZXNz
YWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09VUF9TVEFUVVNfTU9WRURfUEVSTUFORU5UTFkpOwog
ICAgICAgICBzb3VwX21lc3NhZ2VfaGVhZGVyc19hcHBlbmQobWVzc2FnZS0+cmVzcG9uc2VfaGVh
ZGVycywgIkxvY2F0aW9uIiwgImRhdGE6dGV4dC9wbGFpbjtjaGFyc2V0PXV0Zi04LGRhdGEtdXJp
Iik7CisgICAgfSBlbHNlIGlmIChnX3N0cl9lcXVhbChwYXRoLCAiL3VuZmluaXNoZWQtc3VicmVz
b3VyY2UtbG9hZCIpKSB7CisgICAgICAgIHNvdXBfbWVzc2FnZV9ib2R5X2FwcGVuZChtZXNzYWdl
LT5yZXNwb25zZV9ib2R5LCBTT1VQX01FTU9SWV9TVEFUSUMsIHVuZmluaXNoZWRTdWJyZXNvdXJj
ZUxvYWRSZXNwb25zZVN0cmluZywgc3RybGVuKHVuZmluaXNoZWRTdWJyZXNvdXJjZUxvYWRSZXNw
b25zZVN0cmluZykpOworICAgIH0gZWxzZSBpZiAoZ19zdHJfZXF1YWwocGF0aCwgIi9zdGFsbCIp
KSB7CisgICAgICAgIC8vIFRoaXMgcmVxdWVzdCBpcyBuZXZlciB1bnBhdXNlZCBhbmQgc3RhbGxz
IGZvcmV2ZXIuCisgICAgICAgIHNvdXBfc2VydmVyX3BhdXNlX21lc3NhZ2Uoc2VydmVyLCBtZXNz
YWdlKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0gZWxzZQogICAgICAgICBzb3VwX21lc3NhZ2Vf
c2V0X3N0YXR1cyhtZXNzYWdlLCBTT1VQX1NUQVRVU19OT1RfRk9VTkQpOwogCkBAIC02NTUsNiAr
NjkxLDcgQEAgdm9pZCBiZWZvcmVBbGwoKQogICAgIExvYWRUcmFja2luZ1Rlc3Q6OmFkZCgiV2Vi
S2l0V2ViVmlldyIsICJyZWxvYWQiLCB0ZXN0V2ViVmlld1JlbG9hZCk7CiAgICAgTG9hZFRyYWNr
aW5nVGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgImhpc3RvcnktbG9hZCIsIHRlc3RXZWJWaWV3
SGlzdG9yeUxvYWQpOwogICAgIExvYWRUd2ljZUFuZFJlbG9hZFRlc3Q6OmFkZCgiV2ViS2l0V2Vi
VmlldyIsICJsb2FkLXR3aWNlLWFuZC1yZWxvYWQiLCB0ZXN0V2ViVmlld0xvYWRUd2ljZUFuZFJl
bG9hZCk7CisgICAgTG9hZFRyYWNraW5nVGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgInVuZmlu
aXNoZWQtc3VicmVzb3VyY2UtbG9hZCIsIHRlc3RVbmZpbmlzaGVkU3VicmVzb3VyY2VMb2FkKTsK
IAogICAgIC8vIFRoaXMgdGVzdCBjaGVja3MgdGhhdCB3ZWIgdmlldyBub3RpZnk6OnVyaSBzaWdu
YWwgaXMgY29ycmVjdGx5IGVtaXR0ZWQKICAgICAvLyBhbmQgdGhlIHVyaSBpcyBhbHJlYWR5IHVw
ZGF0ZWQgd2hlbiBsb2FkZXIgY2xpZW50IHNpZ25hbHMgYXJlIGVtaXR0ZWQuCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9Mb2FkVHJhY2tpbmdUZXN0LmNw
cCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL0xvYWRUcmFja2luZ1Rlc3Qu
Y3BwCmluZGV4IDJkZGRlY2EzNjJlOWIyMjgyNDc2Zjk5NWQzMjY3NzFiNWE4ODUyMGUuLjRlZmE1
MTZjNjc0ZTdjOTNjMGNhODllYzQxYjg4NDAwNzg2YTFjYmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL0xvYWRUcmFja2luZ1Rlc3QuY3BwCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL0xvYWRUcmFja2luZ1Rlc3QuY3BwCkBA
IC0yNSw3ICsyNSw4IEBAIHN0YXRpYyB2b2lkIGxvYWRDaGFuZ2VkQ2FsbGJhY2soV2ViS2l0V2Vi
Vmlldyogd2ViVmlldywgV2ViS2l0TG9hZEV2ZW50IGxvYWRFdmVuCiAgICAgc3dpdGNoIChsb2Fk
RXZlbnQpIHsKICAgICBjYXNlIFdFQktJVF9MT0FEX1NUQVJURUQ6CiAgICAgICAgIGdfYXNzZXJ0
X3RydWUod2Via2l0X3dlYl92aWV3X2lzX2xvYWRpbmcod2ViVmlldykpOwotICAgICAgICBnX2Fz
c2VydF9jbXBzdHIodGVzdC0+bV9hY3RpdmVVUkkuZGF0YSgpLCA9PSwgd2Via2l0X3dlYl92aWV3
X2dldF91cmkod2ViVmlldykpOworICAgICAgICBpZiAoIXRlc3QtPm1fbG9hZE1heVRyaWdnZXJT
dWJzZXF1ZW50TG9hZCkKKyAgICAgICAgICAgIGdfYXNzZXJ0X2NtcHN0cih0ZXN0LT5tX2FjdGl2
ZVVSSS5kYXRhKCksID09LCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VyaSh3ZWJWaWV3KSk7CiAgICAg
ICAgIHRlc3QtPnByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQoKTsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBXRUJLSVRfTE9BRF9SRURJUkVDVEVEOgpAQCAtNDgsMTQgKzQ5LDE1IEBAIHN0YXRpYyB2
b2lkIGxvYWRDaGFuZ2VkQ2FsbGJhY2soV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0TG9h
ZEV2ZW50IGxvYWRFdmVuCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIFdFQktJVF9M
T0FEX0ZJTklTSEVEOgotICAgICAgICBpZiAoIXRlc3QtPm1fbG9hZEZhaWxlZCkgewotICAgICAg
ICAgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3dlYl92aWV3X2lzX2xvYWRpbmcod2ViVmlldykp
OwotICAgICAgICAgICAgZ19hc3NlcnRfY21wc3RyKHRlc3QtPm1fYWN0aXZlVVJJLmRhdGEoKSwg
PT0sIHdlYmtpdF93ZWJfdmlld19nZXRfdXJpKHdlYlZpZXcpKTsKLSAgICAgICAgfSBlbHNlIGlm
ICghZ19lcnJvcl9tYXRjaGVzKHRlc3QtPm1fZXJyb3IuZ2V0KCksIFdFQktJVF9ORVRXT1JLX0VS
Uk9SLCBXRUJLSVRfTkVUV09SS19FUlJPUl9DQU5DRUxMRUQpKSB7Ci0gICAgICAgICAgICAvLyBX
aGVuIGEgbmV3IGxvYWQgaXMgc3RhcnRlZCBiZWZvcmUgdGhlIHByZXZpb3VzIG9uZSBoYXMgZmlu
aXNoZWQsIHdlIHJlY2VpdmUgdGhlIGxvYWQtZmluaXNoZWQgc2lnbmFsCi0gICAgICAgICAgICAv
LyBvZiB0aGUgb25nb2luZyBsb2FkIHdoaWxlIHdlIGFscmVhZHkgaGF2ZSBhIHByb3Zpc2lvbmFs
IFVSTCBmb3IgdGhlIG5ldyBsb2FkLiBUaGlzIGlzIHRoZSBvbmx5IGNhc2UKLSAgICAgICAgICAg
IC8vIHdoZXJlIGlzbG9hZGluZyBpcyB0cnVlIHdoZW4gdGhlIGxvYWQgaGFzIGZpbmlzaGVkLgot
ICAgICAgICAgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3dlYl92aWV3X2lzX2xvYWRpbmcod2Vi
VmlldykpOworICAgICAgICBpZiAoIXRlc3QtPm1fbG9hZE1heVRyaWdnZXJTdWJzZXF1ZW50TG9h
ZCkgeworICAgICAgICAgICAgaWYgKCF0ZXN0LT5tX2xvYWRGYWlsZWQpIHsKKyAgICAgICAgICAg
ICAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfd2ViX3ZpZXdfaXNfbG9hZGluZyh3ZWJWaWV3KSk7
CisgICAgICAgICAgICAgICAgZ19hc3NlcnRfY21wc3RyKHRlc3QtPm1fYWN0aXZlVVJJLmRhdGEo
KSwgPT0sIHdlYmtpdF93ZWJfdmlld19nZXRfdXJpKHdlYlZpZXcpKTsKKyAgICAgICAgICAgIH0g
ZWxzZSBpZiAoIWdfZXJyb3JfbWF0Y2hlcyh0ZXN0LT5tX2Vycm9yLmdldCgpLCBXRUJLSVRfTkVU
V09SS19FUlJPUiwgV0VCS0lUX05FVFdPUktfRVJST1JfQ0FOQ0VMTEVEKSkgeworICAgICAgICAg
ICAgICAgIC8vIFdoZW4gYSBuZXcgbG9hZCBpcyBzdGFydGVkIGJlZm9yZSB0aGUgcHJldmlvdXMg
b25lIGhhcyBmaW5pc2hlZCwgd2UgcmVjZWl2ZSB0aGUgbG9hZC1maW5pc2hlZCBzaWduYWwKKyAg
ICAgICAgICAgICAgICAvLyBvZiB0aGUgb25nb2luZyBsb2FkIHdoaWxlIHdlIGFscmVhZHkgaGF2
ZSBhIHByb3Zpc2lvbmFsIFVSTCBmb3IgdGhlIG5ldyBsb2FkLgorICAgICAgICAgICAgICAgIGdf
YXNzZXJ0X2ZhbHNlKHdlYmtpdF93ZWJfdmlld19pc19sb2FkaW5nKHdlYlZpZXcpKTsKKyAgICAg
ICAgICAgIH0KICAgICAgICAgfQogICAgICAgICB0ZXN0LT5sb2FkRmluaXNoZWQoKTsKICAgICAg
ICAgYnJlYWs7CkBAIC03MSwyMCArNzMsMjEgQEAgc3RhdGljIHZvaWQgbG9hZEZhaWxlZENhbGxi
YWNrKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdExvYWRFdmVudCBsb2FkRXZlbnQKICAg
ICBnX2Fzc2VydF9ub25udWxsKGVycm9yKTsKICAgICB0ZXN0LT5tX2Vycm9yLnJlc2V0KGdfZXJy
b3JfY29weShlcnJvcikpOwogCi0gICAgaWYgKCFnX2Vycm9yX21hdGNoZXMoZXJyb3IsIFdFQktJ
VF9ORVRXT1JLX0VSUk9SLCBXRUJLSVRfTkVUV09SS19FUlJPUl9DQU5DRUxMRUQpKSB7CisgICAg
aWYgKCF0ZXN0LT5tX2xvYWRNYXlUcmlnZ2VyU3Vic2VxdWVudExvYWQgJiYgIWdfZXJyb3JfbWF0
Y2hlcyhlcnJvciwgV0VCS0lUX05FVFdPUktfRVJST1IsIFdFQktJVF9ORVRXT1JLX0VSUk9SX0NB
TkNFTExFRCkpIHsKICAgICAgICAgLy8gV2hlbiBhIG5ldyBsb2FkIGlzIHN0YXJ0ZWQgYmVmb3Jl
IHRoZSBwcmV2aW91cyBvbmUgaGFzIGZpbmlzaGVkLCB3ZSByZWNlaXZlIHRoZSBsb2FkLWZhaWxl
ZCBzaWduYWwKLSAgICAgICAgLy8gb2YgdGhlIG9uZ29pbmcgbG9hZCB3aGlsZSB3ZSBhbHJlYWR5
IGhhdmUgYSBwcm92aXNpb25hbCBVUkwgZm9yIHRoZSBuZXcgbG9hZC4gVGhpcyBpcyB0aGUgb25s
eSBjYXNlCi0gICAgICAgIC8vIHdoZXJlIGlzLWxvYWRpbmcgaXMgdHJ1ZSB3aGVuIHRoZSBsb2Fk
IGhhcyBmYWlsZWQuCisgICAgICAgIC8vIG9mIHRoZSBvbmdvaW5nIGxvYWQgd2hpbGUgd2UgYWxy
ZWFkeSBoYXZlIGEgcHJvdmlzaW9uYWwgVVJMIGZvciB0aGUgbmV3IGxvYWQuCiAgICAgICAgIGdf
YXNzZXJ0X2ZhbHNlKHdlYmtpdF93ZWJfdmlld19pc19sb2FkaW5nKHdlYlZpZXcpKTsKICAgICB9
CiAKICAgICBzd2l0Y2ggKGxvYWRFdmVudCkgewogICAgIGNhc2UgV0VCS0lUX0xPQURfU1RBUlRF
RDoKLSAgICAgICAgZ19hc3NlcnRfY21wc3RyKHRlc3QtPm1fYWN0aXZlVVJJLmRhdGEoKSwgPT0s
IGZhaWxpbmdVUkkpOworICAgICAgICBpZiAoIXRlc3QtPm1fbG9hZE1heVRyaWdnZXJTdWJzZXF1
ZW50TG9hZCkKKyAgICAgICAgICAgIGdfYXNzZXJ0X2NtcHN0cih0ZXN0LT5tX2FjdGl2ZVVSSS5k
YXRhKCksID09LCBmYWlsaW5nVVJJKTsKICAgICAgICAgdGVzdC0+cHJvdmlzaW9uYWxMb2FkRmFp
bGVkKGZhaWxpbmdVUkksIGVycm9yKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXRUJLSVRf
TE9BRF9DT01NSVRURUQ6Ci0gICAgICAgIGdfYXNzZXJ0X2NtcHN0cih0ZXN0LT5tX2FjdGl2ZVVS
SS5kYXRhKCksID09LCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VyaSh3ZWJWaWV3KSk7CisgICAgICAg
IGlmICghdGVzdC0+bV9sb2FkTWF5VHJpZ2dlclN1YnNlcXVlbnRMb2FkKQorICAgICAgICAgICAg
Z19hc3NlcnRfY21wc3RyKHRlc3QtPm1fYWN0aXZlVVJJLmRhdGEoKSwgPT0sIHdlYmtpdF93ZWJf
dmlld19nZXRfdXJpKHdlYlZpZXcpKTsKICAgICAgICAgdGVzdC0+bG9hZEZhaWxlZChmYWlsaW5n
VVJJLCBlcnJvcik7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CkBAIC0xMDgsOCArMTEx
LDYgQEAgc3RhdGljIHZvaWQgZXN0aW1hdGVkUHJvZ3Jlc3NDaGFuZ2VkQ2FsbGJhY2soR09iamVj
dCosIEdQYXJhbVNwZWMqLCBMb2FkVHJhY2tpbmcKIH0KIAogTG9hZFRyYWNraW5nVGVzdDo6TG9h
ZFRyYWNraW5nVGVzdCgpCi0gICAgOiBtX3J1bkxvYWRVbnRpbENvbXBsZXRpb24oZmFsc2UpCi0g
ICAgLCBtX2xvYWRGYWlsZWQoZmFsc2UpCiB7CiAgICAgZ19zaWduYWxfY29ubmVjdChtX3dlYlZp
ZXcsICJsb2FkLWNoYW5nZWQiLCBHX0NBTExCQUNLKGxvYWRDaGFuZ2VkQ2FsbGJhY2spLCB0aGlz
KTsKICAgICBnX3NpZ25hbF9jb25uZWN0KG1fd2ViVmlldywgImxvYWQtZmFpbGVkIiwgR19DQUxM
QkFDSyhsb2FkRmFpbGVkQ2FsbGJhY2spLCB0aGlzKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL0xvYWRUcmFja2luZ1Rlc3QuaCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL0xvYWRUcmFja2luZ1Rlc3QuaAppbmRleCAwMjg4MDkw
NGE3NDJmMjFiMTRhODkzNjYwMWI3MWUyZDZiMWU3OTg1Li44MGQxYzczM2Q4ODFlODQzYzQ2MTZk
ZGVkZWE1MWQ0MThlNGI3MjQyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIv
V2ViS2l0R0xpYi9Mb2FkVHJhY2tpbmdUZXN0LmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9n
bGliL1dlYktpdEdMaWIvTG9hZFRyYWNraW5nVGVzdC5oCkBAIC01OSw4ICs1OSw5IEBAIHB1Ymxp
YzoKICAgICAgICAgTG9hZEZhaWxlZCwKICAgICAgICAgTG9hZEZhaWxlZFdpdGhUTFNFcnJvcnMK
ICAgICB9OwotICAgIGJvb2wgbV9ydW5Mb2FkVW50aWxDb21wbGV0aW9uOwotICAgIGJvb2wgbV9s
b2FkRmFpbGVkOworICAgIGJvb2wgbV9ydW5Mb2FkVW50aWxDb21wbGV0aW9uID0gZmFsc2U7Cisg
ICAgYm9vbCBtX2xvYWRGYWlsZWQgPSBmYWxzZTsKKyAgICBib29sIG1fbG9hZE1heVRyaWdnZXJT
dWJzZXF1ZW50TG9hZCA9IGZhbHNlOwogICAgIEdVbmlxdWVQdHI8R0Vycm9yPiBtX2Vycm9yOwog
ICAgIFZlY3RvcjxMb2FkRXZlbnRzPiBtX2xvYWRFdmVudHM7CiAgICAgZmxvYXQgbV9lc3RpbWF0
ZWRQcm9ncmVzczsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>363333</attachid>
            <date>2019-03-01 09:29:15 -0800</date>
            <delta_ts>2019-03-01 12:30:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194131-20190301112914.patch</filename>
            <type>text/plain</type>
            <size>17914</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQyMjYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDlmZmFhNDkxNGE3N2IzYjhj
OWE2NmE4ZWZjMDMyZWViZmRlMzg3NmMuLjAxOTU3NTU4YWRmZGZmY2VmOWNkZGNmOTMzOTU3NGNh
NDQzODg5MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTktMDMtMDEgIE1pY2hhZWwg
Q2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgorCisgICAgICAgIExvYWQgZXZlbnRz
IG1heSBvY2N1ciBpbiB1bmV4cGVjdGVkIG9yZGVyIHdoZW4gSlMgcmVkaXJlY3RzIHBhZ2UgYmVm
b3JlIHN1YnJlc291cmNlIGxvYWQgZmluaXNoZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDEzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIElmIGEgbmV3IHBhZ2UgbG9hZCBzdGFydHMgYmVmb3JlIHRo
ZSBwcmV2aW91cyBvbmUgY29tcGxldGVzLCB3ZSBzaG91bGQgZW1pdCBhIGZhaWx1cmUgZXZlbnQK
KyAgICAgICAgb24gdGhlIE5hdmlnYXRpb25DbGllbnQgd2l0aCBhIGNhbmNlbGxhdGlvbiBlcnJv
ciwgdG8gYXZvaWQgY29uZnVzaW5nIGFwcGxpY2F0aW9ucyB0aGF0CisgICAgICAgIGV4cGVjdCB0
aGUgcHJldmlvdXMgbG9hZCB0byBoYXZlIGZpbmlzaGVkIGJlZm9yZSB0aGUgbmV3IGxvYWQgc3Rh
cnRzLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwOgor
ICAgICAgICAod2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9QYWdlTG9hZFN0YXRlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFnZUxvYWRTdGF0ZTo6ZGlk
U3RhcnRQcm92aXNpb25hbExvYWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlTG9hZFN0YXRl
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6ZGlkRGVzdHJveU5hdmlnYXRpb24pOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKwogMjAxOS0wMi0yOCAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEhUVFBTVXBncmFkZUxpc3QuZGIg
ZGF0YWJhc2Ugc2hvdWxkIGJlIG9wZW5lZCBpbiByZWFkb25seSBtb2RlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCmluZGV4IDk3NzE2
ZGJkMTU5MTRlODU2NjM2ZWRkYTFlM2JkMTU4NDA4Nzk2MTIuLjk3ZjFjYTkyYjJkN2Q5N2U0MTYx
Nzk0N2E3YjE1OGQ2OTU0YTdlZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCkBAIC0xMTg5LDEyICsxMTg5LDIzIEBAIHN0YXRp
YyB2b2lkIHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KFdlYktpdFdlYlZpZXdDbGFzcyogd2Vi
Vmlld0NsYXNzKQogICAgICAqIG9wZXJhdGlvbiBmYWlscyAjV2ViS2l0V2ViVmlldzo6bG9hZC1m
YWlsZWQgc2lnbmFsIGlzIGVtaXR0ZWQKICAgICAgKiBiZWZvcmUgI1dlYktpdFdlYlZpZXc6Omxv
YWQtY2hhbmdlZCBpcyBlbWl0dGVkIHdpdGgKICAgICAgKiAlV0VCS0lUX0xPQURfRklOSVNIRUQu
CisgICAgICoKICAgICAgKiBJZiBhIHJlZGlyZWN0aW9uIGlzIHJlY2VpdmVkIGZyb20gdGhlIHNl
cnZlciwgdGhpcyBzaWduYWwgaXMgZW1pdHRlZAogICAgICAqIHdpdGggJVdFQktJVF9MT0FEX1JF
RElSRUNURUQgYWZ0ZXIgdGhlIGluaXRpYWwgZW1pc3Npb24gd2l0aAogICAgICAqICVXRUJLSVRf
TE9BRF9TVEFSVEVEIGFuZCBiZWZvcmUgJVdFQktJVF9MT0FEX0NPTU1JVFRFRC4KICAgICAgKiBX
aGVuIHRoZSBwYWdlIGNvbnRlbnQgc3RhcnRzIGFycml2aW5nIHRoZSBzaWduYWwgaXMgZW1pdHRl
ZCB3aXRoCiAgICAgICogJVdFQktJVF9MT0FEX0NPTU1JVFRFRCBldmVudC4KICAgICAgKgorICAg
ICAqIElmIGEgbmV3IGxvYWQgaXMgc3RhcnRlZCB3aGVuIHRoZSBwcmV2aW91cyBsb2FkIGhhcyBu
b3QgeWV0CisgICAgICogZmluaXNoZWQsICNXZWJLaXRXZWJWaWV3Ojpsb2FkLWZhaWxlZCB3aWxs
IGJlIGVtaXR0ZWQgd2l0aAorICAgICAqICVXRUJLSVRfTkVUV09SS19FUlJPUl9DQU5DRUxMRUQg
YmVmb3JlICVXRUJLSVRfTE9BRF9GSU5JU0hFRC4KKyAgICAgKgorICAgICAqICVXRUJLSVRfTE9B
RF9GSU5JU0hFRCBpcyBndWFyYW50ZWVkIHRvIGFsd2F5cyBiZSBlbWl0dGVkIGJlZm9yZQorICAg
ICAqIHRoZSBuZXh0ICVXRUJLSVRfTE9BRF9TVEFSVEVELiBIb3dldmVyLCAlV0VCS0lUX0xPQURf
UkVESVJFQ1RFRAorICAgICAqIHdpbGwgYmUgc2tpcHBlZCBpZiB0aGVyZSBpcyBubyByZWRpcmVj
dGlvbiwgYW5kCisgICAgICogJVdFQktJVF9MT0FEX0NPTU1JVFRFRCB3aWxsIGJlIHNraXBwZWQg
aWYgdGhlIGxvYWQgZmFpbHMgYmVmb3JlCisgICAgICogdGhlIGxvYWQgaXMgY29tbWl0dGVkLgor
ICAgICAqCiAgICAgICogWW91IGNhbiBoYW5kbGUgdGhpcyBzaWduYWwgYW5kIHVzZSBhIHN3aXRj
aCB0byB0cmFjayBhbnkgb25nb2luZwogICAgICAqIGxvYWQgb3BlcmF0aW9uLgogICAgICAqCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlTG9hZFN0YXRlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VMb2FkU3RhdGUuY3BwCmluZGV4IGMyYWU2ZjAzYmUz
YzQ4ODNlOGRhZjJkNzdiYmQ4NmQ2OTI3MThlZDIuLjMyYTM4M2M3ZTAzZDNjMDQzYWIzNDcwMmVj
NTUwYzQ4NGMzZTRiZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VM
b2FkU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VMb2FkU3RhdGUu
Y3BwCkBAIC0yNDYsMTEgKzI0NiwxMyBAQCB2b2lkIFBhZ2VMb2FkU3RhdGU6OmNsZWFyUGVuZGlu
Z0FQSVJlcXVlc3RVUkwoY29uc3QgVHJhbnNhY3Rpb246OlRva2VuJiB0b2tlbikKICAgICBtX3Vu
Y29tbWl0dGVkU3RhdGUucGVuZGluZ0FQSVJlcXVlc3RVUkwgPSBTdHJpbmcoKTsKIH0KIAotdm9p
ZCBQYWdlTG9hZFN0YXRlOjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZChjb25zdCBUcmFuc2FjdGlv
bjo6VG9rZW4mIHRva2VuLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB1bnJlYWNo
YWJsZVVSTCkKK3ZvaWQgUGFnZUxvYWRTdGF0ZTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWQoY29u
c3QgVHJhbnNhY3Rpb246OlRva2VuJiB0b2tlbiwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0
cmluZyYgdW5yZWFjaGFibGVVUkwsIFN0YXRlJiBwcmV2aW91c1N0YXRlKQogewogICAgIEFTU0VS
VF9VTlVTRUQodG9rZW4sICZ0b2tlbi5tX3BhZ2VMb2FkU3RhdGUgPT0gdGhpcyk7CiAgICAgQVNT
RVJUKG1fdW5jb21taXR0ZWRTdGF0ZS5wcm92aXNpb25hbFVSTC5pc0VtcHR5KCkpOwogCisgICAg
cHJldmlvdXNTdGF0ZSA9IG1fdW5jb21taXR0ZWRTdGF0ZS5zdGF0ZTsKKwogICAgIG1fdW5jb21t
aXR0ZWRTdGF0ZS5zdGF0ZSA9IFN0YXRlOjpQcm92aXNpb25hbDsKIAogICAgIG1fdW5jb21taXR0
ZWRTdGF0ZS5wcm92aXNpb25hbFVSTCA9IHVybDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1BhZ2VMb2FkU3RhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VM
b2FkU3RhdGUuaAppbmRleCBjYWNiY2U0MjFlZDJmNjdjNWZmZTg2NmVhZTJlOTFjNWRhMjBhZGMw
Li5mOWNmNjNkNGE1NmQ4YTc3Y2I1NmMxNmRkZTdmNDVhN2M2YjEyZDI2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlTG9hZFN0YXRlLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUGFnZUxvYWRTdGF0ZS5oCkBAIC0xMzksNyArMTM5LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0UGVuZGluZ0FQSVJlcXVlc3RVUkwoY29uc3QgVHJhbnNhY3Rpb246OlRva2Vu
JiwgY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBjbGVhclBlbmRpbmdBUElSZXF1ZXN0VVJMKGNv
bnN0IFRyYW5zYWN0aW9uOjpUb2tlbiYpOwogCi0gICAgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFs
TG9hZChjb25zdCBUcmFuc2FjdGlvbjo6VG9rZW4mLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3Qg
U3RyaW5nJiB1bnJlYWNoYWJsZVVSTCk7CisgICAgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9h
ZChjb25zdCBUcmFuc2FjdGlvbjo6VG9rZW4mLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3Ry
aW5nJiB1bnJlYWNoYWJsZVVSTCwgU3RhdGUmIHByZXZpb3VzU3RhdGUpOwogICAgIHZvaWQgZGlk
UmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFRyYW5zYWN0aW9u
OjpUb2tlbiYsIGNvbnN0IFN0cmluZyYgdXJsKTsKICAgICB2b2lkIGRpZEZhaWxQcm92aXNpb25h
bExvYWQoY29uc3QgVHJhbnNhY3Rpb246OlRva2VuJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDg3MGMxN2UxYzQ4OGI2YWFiNWM1OGY0MjAwMDVhOTMy
ZThiOWExZmUuLmM1Mzg1Mjc5NTBiYmM3NWNjNGZhODUxODRhOWM3NTcyZWI4ZDhjMDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMzgzNCw2ICszODM0LDgg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZERlc3Ryb3lOYXZpZ2F0aW9uKHVpbnQ2NF90IG5hdmln
YXRpb25JRCkKICAgICBpZiAobV9wcm92aXNpb25hbFBhZ2UgJiYgbV9wcm92aXNpb25hbFBhZ2Ut
Pm5hdmlnYXRpb25JRCgpID09IG5hdmlnYXRpb25JRCkKICAgICAgICAgcmV0dXJuOwogCisgICAg
bV9wcmV2aW91c05hdmlnYXRpb25JRCA9IDA7CisKICAgICAvLyBGSVhNRTogTWVzc2FnZSBjaGVj
ayB0aGUgbmF2aWdhdGlvbklELgogICAgIG1fbmF2aWdhdGlvblN0YXRlLT5kaWREZXN0cm95TmF2
aWdhdGlvbihuYXZpZ2F0aW9uSUQpOwogfQpAQCAtMzg2OSwxMSArMzg3MSwxMiBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZVNoYXJlZChSZWY8V2Vi
UHJvY2Vzc1Byb3h5PiYmCiAKICAgICBtX3BhZ2VMb2FkU3RhdGUuY2xlYXJQZW5kaW5nQVBJUmVx
dWVzdFVSTCh0cmFuc2FjdGlvbik7CiAKKyAgICBhdXRvIHByZXZpb3VzU3RhdGUgPSBQYWdlTG9h
ZFN0YXRlOjpTdGF0ZTo6RmluaXNoZWQ7CiAgICAgaWYgKGZyYW1lLT5pc01haW5GcmFtZSgpKSB7
CiAgICAgICAgIHByb2Nlc3MtPmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yTWFpbkZyYW1lKHVy
bCk7CiAgICAgICAgIHJlcG9ydFBhZ2VMb2FkUmVzdWx0KFJlc291cmNlRXJyb3IgeyBSZXNvdXJj
ZUVycm9yOjpUeXBlOjpDYW5jZWxsYXRpb24gfSk7CiAgICAgICAgIG1fcGFnZUxvYWRTdGFydCA9
IE1vbm90b25pY1RpbWU6Om5vdygpOwotICAgICAgICBtX3BhZ2VMb2FkU3RhdGUuZGlkU3RhcnRQ
cm92aXNpb25hbExvYWQodHJhbnNhY3Rpb24sIHVybCwgdW5yZWFjaGFibGVVUkwpOworICAgICAg
ICBtX3BhZ2VMb2FkU3RhdGUuZGlkU3RhcnRQcm92aXNpb25hbExvYWQodHJhbnNhY3Rpb24sIHVy
bCwgdW5yZWFjaGFibGVVUkwsIHByZXZpb3VzU3RhdGUpOwogICAgICAgICBwYWdlQ2xpZW50KCku
ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JNYWluRnJhbWUoKTsKICAgICAgICAgY2xvc2VPdmVy
bGF5ZWRWaWV3cygpOwogICAgIH0KQEAgLTM4ODQsOCArMzg4NywxNiBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZVNoYXJlZChSZWY8V2ViUHJvY2Vz
c1Byb3h5PiYmCiAgICAgbV9wYWdlTG9hZFN0YXRlLmNvbW1pdENoYW5nZXMoKTsKICAgICBpZiAo
bV9sb2FkZXJDbGllbnQpCiAgICAgICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRTdGFydFByb3Zpc2lv
bmFsTG9hZEZvckZyYW1lKCp0aGlzLCAqZnJhbWUsIG5hdmlnYXRpb24uZ2V0KCksIHByb2Nlc3Mt
PnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKLSAg
ICBlbHNlIGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSkKKyAgICBlbHNlIGlmIChmcmFtZS0+aXNN
YWluRnJhbWUoKSkgeworICAgICAgICBBUEk6Ok5hdmlnYXRpb24qIHByZXZpb3VzTmF2aWdhdGlv
biA9IG1fcHJldmlvdXNOYXZpZ2F0aW9uSUQgPyBuYXZpZ2F0aW9uU3RhdGUoKS5uYXZpZ2F0aW9u
KG1fcHJldmlvdXNOYXZpZ2F0aW9uSUQpIDogbnVsbHB0cjsKKyAgICAgICAgaWYgKHByZXZpb3Vz
U3RhdGUgPT0gUGFnZUxvYWRTdGF0ZTo6U3RhdGU6OlByb3Zpc2lvbmFsKQorICAgICAgICAgICAg
bV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uV2l0aEVycm9y
KCp0aGlzLCAqZnJhbWUsIHByZXZpb3VzTmF2aWdhdGlvbiwgeyBSZXNvdXJjZUVycm9yOjpUeXBl
OjpDYW5jZWxsYXRpb24gfSwgcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2Vy
RGF0YS5vYmplY3QoKSkuZ2V0KCkpOworICAgICAgICBlbHNlIGlmIChwcmV2aW91c1N0YXRlID09
IFBhZ2VMb2FkU3RhdGU6OlN0YXRlOjpDb21taXR0ZWQpCisgICAgICAgICAgICBtX25hdmlnYXRp
b25DbGllbnQtPmRpZEZhaWxOYXZpZ2F0aW9uV2l0aEVycm9yKCp0aGlzLCAqZnJhbWUsIHByZXZp
b3VzTmF2aWdhdGlvbiwgeyBSZXNvdXJjZUVycm9yOjpUeXBlOjpDYW5jZWxsYXRpb24gfSwgbV9w
cm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQo
KSk7CiAgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlkU3RhcnRQcm92aXNpb25hbE5hdmln
YXRpb24oKnRoaXMsIG5hdmlnYXRpb24uZ2V0KCksIHByb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNU
b09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKKyAgICB9CisKKyAgICBtX3ByZXZp
b3VzTmF2aWdhdGlvbklEID0gbmF2aWdhdGlvbklEOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0
X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1
ZXN0LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCmluZGV4IDJhNTM5ZjU1NGQ2MTFkZGM3ZTI2OTJkZWVlYzU3M2FiYjUxZTI4NTYu
LmYzZTRkYWRiMzg1YTM0ZTY2OTY0MzExNzlmOGE1MjdiYzFjNmRhOWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0yMjA2LDYgKzIyMDYsOCBAQCBwcml2YXRlOgog
CiAgICAgY29uc3QgdWludDY0X3QgbV9wYWdlSUQ7CiAKKyAgICB1aW50NjRfdCBtX3ByZXZpb3Vz
TmF2aWdhdGlvbklEIHsgMCB9OworCiAgICAgYm9vbCBtX2lzUGFnZVN1c3BlbmRlZCB7IGZhbHNl
IH07CiAgICAgYm9vbCBtX2FkZHNWaXNpdGVkTGlua3MgeyB0cnVlIH07CiAKZGlmZiAtLWdpdCBh
L1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA2Y2Y3MDhlYjg4NTE3YWRj
NmU1MzBkNmMwZmUxMjM2ZGY1ODM4YWZjLi5lY2U5NzQzZDBmMGViMGI2YjExNjgwNWJhMGNmM2Ix
NWFkOGQ0Y2E0IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTktMDMtMDEgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNh
dGFuemFyb0BpZ2FsaWEuY29tPgorCisgICAgICAgIExvYWQgZXZlbnRzIG1heSBvY2N1ciBpbiB1
bmV4cGVjdGVkIG9yZGVyIHdoZW4gSlMgcmVkaXJlY3RzIHBhZ2UgYmVmb3JlIHN1YnJlc291cmNl
IGxvYWQgZmluaXNoZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5NDEzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RMb2FkZXJDbGllbnQu
Y3BwOgorICAgICAgICAodGVzdFVuZmluaXNoZWRTdWJyZXNvdXJjZUxvYWQpOgorICAgICAgICAo
c2VydmVyQ2FsbGJhY2spOgorICAgICAgICAoYmVmb3JlQWxsKToKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9Mb2FkVHJhY2tpbmdUZXN0LmNwcDoKKyAgICAgICAgKGxv
YWRDaGFuZ2VkQ2FsbGJhY2spOgorICAgICAgICAobG9hZEZhaWxlZENhbGxiYWNrKToKKyAgICAg
ICAgKExvYWRUcmFja2luZ1Rlc3Q6OkxvYWRUcmFja2luZ1Rlc3QpOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL0xvYWRUcmFja2luZ1Rlc3QuaDoKKwogMjAxOS0wMy0w
MSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3
ZWQsIGZpeCBsbGRiIHdlYmtpdHB5IHRlc3RzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdExvYWRlckNsaWVudC5jcHAgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdExvYWRlckNsaWVudC5jcHAKaW5kZXggYzY3YWYx
Njg0ZmZjZGYyMzg1OWJjNDc1ZDA5MDVkMmFmOThhNGJhZC4uZWUyN2Y4Nzg3MWM0N2RiMjQ0ZWRk
M2ZiMzA2MDE0YzI4ZGQ4MjhjZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRHTGliL1Rlc3RMb2FkZXJDbGllbnQuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0TG9hZGVyQ2xpZW50LmNwcApAQCAtMjQwLDYgKzI0MCwy
NiBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0xvYWRUd2ljZUFuZFJlbG9hZChMb2FkVHdpY2VB
bmRSZWxvYWRUZXN0KiB0ZXN0LCBnY29uc3RwbwogICAgIHRlc3QtPndhaXRVbnRpbEZpbmlzaGVk
KCk7CiB9CiAKK3N0YXRpYyB2b2lkIHRlc3RVbmZpbmlzaGVkU3VicmVzb3VyY2VMb2FkKExvYWRU
cmFja2luZ1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCit7CisgICAgLy8gVmVyaWZ5IHRoYXQg
TG9hZEZpbmlzaGVkIG9jY3VycyBldmVuIGlmIHRoZSBuZXh0IGxvYWQgc3RhcnRzIGJlZm9yZSB0
aGUKKyAgICAvLyBwcmV2aW91cyBsb2FkIGFjdHVhbGx5IGZpbmlzaGVzLgorICAgIHRlc3QtPm1f
bG9hZE1heVRyaWdnZXJTdWJzZXF1ZW50TG9hZCA9IHRydWU7CisgICAgdGVzdC0+bG9hZFVSSShr
U2VydmVyLT5nZXRVUklGb3JQYXRoKCIvdW5maW5pc2hlZC1zdWJyZXNvdXJjZS1sb2FkIikuZGF0
YSgpKTsKKyAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKKyAgICB0ZXN0LT53YWl0
VW50aWxMb2FkRmluaXNoZWQoKTsKKworICAgIFZlY3RvcjxMb2FkVHJhY2tpbmdUZXN0OjpMb2Fk
RXZlbnRzPiYgZXZlbnRzID0gdGVzdC0+bV9sb2FkRXZlbnRzOworICAgIGdfYXNzZXJ0X2NtcGlu
dChldmVudHMuc2l6ZSgpLCA9PSwgNyk7CisgICAgZ19hc3NlcnRfY21waW50KGV2ZW50c1swXSwg
PT0sIExvYWRUcmFja2luZ1Rlc3Q6OlByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQpOworICAgIGdfYXNz
ZXJ0X2NtcGludChldmVudHNbMV0sID09LCBMb2FkVHJhY2tpbmdUZXN0OjpMb2FkQ29tbWl0dGVk
KTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoZXZlbnRzWzJdLCA9PSwgTG9hZFRyYWNraW5nVGVzdDo6
TG9hZEZhaWxlZCk7CisgICAgZ19hc3NlcnRfY21waW50KGV2ZW50c1szXSwgPT0sIExvYWRUcmFj
a2luZ1Rlc3Q6OkxvYWRGaW5pc2hlZCk7CisgICAgZ19hc3NlcnRfY21waW50KGV2ZW50c1s0XSwg
PT0sIExvYWRUcmFja2luZ1Rlc3Q6OlByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQpOworICAgIGdfYXNz
ZXJ0X2NtcGludChldmVudHNbNV0sID09LCBMb2FkVHJhY2tpbmdUZXN0OjpMb2FkQ29tbWl0dGVk
KTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoZXZlbnRzWzZdLCA9PSwgTG9hZFRyYWNraW5nVGVzdDo6
TG9hZEZpbmlzaGVkKTsKK30KKwogY2xhc3MgVmlld1VSSVRyYWNraW5nVGVzdDogcHVibGljIExv
YWRUcmFja2luZ1Rlc3QgewogcHVibGljOgogICAgIE1BS0VfR0xJQl9URVNUX0ZJWFRVUkUoVmll
d1VSSVRyYWNraW5nVGVzdCk7CkBAIC01OTAsNiArNjEwLDE2IEBAIHN0YXRpYyB2b2lkIHNlcnZl
ckNhbGxiYWNrKFNvdXBTZXJ2ZXIqIHNlcnZlciwgU291cE1lc3NhZ2UqIG1lc3NhZ2UsIGNvbnN0
IGNoYXIqCiAgICAgICAgICJUZXN0aW5nIVRlc3RpbmchVGVzdGluZyFUZXN0aW5nIVRlc3Rpbmch
VGVzdGluZyFUZXN0aW5nIVRlc3RpbmchVGVzdGluZyFUZXN0aW5nIVRlc3RpbmchVGVzdGluZyEi
CiAgICAgICAgICJUZXN0aW5nIVRlc3RpbmchVGVzdGluZyFUZXN0aW5nIVRlc3RpbmchVGVzdGlu
ZyFUZXN0aW5nIVRlc3RpbmchVGVzdGluZyFUZXN0aW5nIVRlc3RpbmchVGVzdGluZyE8L2JvZHk+
PC9odG1sPiI7CiAKKyAgICBzdGF0aWMgY29uc3QgY2hhciogdW5maW5pc2hlZFN1YnJlc291cmNl
TG9hZFJlc3BvbnNlU3RyaW5nID0gIjxodG1sPjxib2R5PiIKKyAgICAgICAgIjxpbWcgc3JjPVwi
L3N0YWxsXCIvPiIKKyAgICAgICAgIjxzY3JpcHQ+IgorICAgICAgICAiICBmdW5jdGlvbiBydW4o
KSB7IgorICAgICAgICAiICAgICAgbG9jYXRpb24gPSAnL25vcm1hbCc7IgorICAgICAgICAiICB9
IgorICAgICAgICAiICBzZXRJbnRlcnZhbChydW4oKSwgNTApOyIKKyAgICAgICAgIjwvc2NyaXB0
PiIKKyAgICAgICAgIjwvYm9keT48L2h0bWw+IjsKKwogICAgIGlmIChtZXNzYWdlLT5tZXRob2Qg
IT0gU09VUF9NRVRIT0RfR0VUKSB7CiAgICAgICAgIHNvdXBfbWVzc2FnZV9zZXRfc3RhdHVzKG1l
c3NhZ2UsIFNPVVBfU1RBVFVTX05PVF9JTVBMRU1FTlRFRCk7CiAgICAgICAgIHJldHVybjsKQEAg
LTYyNSw2ICs2NTUsMTIgQEAgc3RhdGljIHZvaWQgc2VydmVyQ2FsbGJhY2soU291cFNlcnZlciog
c2VydmVyLCBTb3VwTWVzc2FnZSogbWVzc2FnZSwgY29uc3QgY2hhcioKICAgICB9IGVsc2UgaWYg
KGdfc3RyX2VxdWFsKHBhdGgsICIvcmVkaXJlY3QtdG8tZGF0YSIpKSB7CiAgICAgICAgIHNvdXBf
bWVzc2FnZV9zZXRfc3RhdHVzKG1lc3NhZ2UsIFNPVVBfU1RBVFVTX01PVkVEX1BFUk1BTkVOVExZ
KTsKICAgICAgICAgc291cF9tZXNzYWdlX2hlYWRlcnNfYXBwZW5kKG1lc3NhZ2UtPnJlc3BvbnNl
X2hlYWRlcnMsICJMb2NhdGlvbiIsICJkYXRhOnRleHQvcGxhaW47Y2hhcnNldD11dGYtOCxkYXRh
LXVyaSIpOworICAgIH0gZWxzZSBpZiAoZ19zdHJfZXF1YWwocGF0aCwgIi91bmZpbmlzaGVkLXN1
YnJlc291cmNlLWxvYWQiKSkgeworICAgICAgICBzb3VwX21lc3NhZ2VfYm9keV9hcHBlbmQobWVz
c2FnZS0+cmVzcG9uc2VfYm9keSwgU09VUF9NRU1PUllfU1RBVElDLCB1bmZpbmlzaGVkU3VicmVz
b3VyY2VMb2FkUmVzcG9uc2VTdHJpbmcsIHN0cmxlbih1bmZpbmlzaGVkU3VicmVzb3VyY2VMb2Fk
UmVzcG9uc2VTdHJpbmcpKTsKKyAgICB9IGVsc2UgaWYgKGdfc3RyX2VxdWFsKHBhdGgsICIvc3Rh
bGwiKSkgeworICAgICAgICAvLyBUaGlzIHJlcXVlc3QgaXMgbmV2ZXIgdW5wYXVzZWQgYW5kIHN0
YWxscyBmb3JldmVyLgorICAgICAgICBzb3VwX3NlcnZlcl9wYXVzZV9tZXNzYWdlKHNlcnZlciwg
bWVzc2FnZSk7CisgICAgICAgIHJldHVybjsKICAgICB9IGVsc2UKICAgICAgICAgc291cF9tZXNz
YWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09VUF9TVEFUVVNfTk9UX0ZPVU5EKTsKIApAQCAtNjU1
LDYgKzY5MSw3IEBAIHZvaWQgYmVmb3JlQWxsKCkKICAgICBMb2FkVHJhY2tpbmdUZXN0OjphZGQo
IldlYktpdFdlYlZpZXciLCAicmVsb2FkIiwgdGVzdFdlYlZpZXdSZWxvYWQpOwogICAgIExvYWRU
cmFja2luZ1Rlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJoaXN0b3J5LWxvYWQiLCB0ZXN0V2Vi
Vmlld0hpc3RvcnlMb2FkKTsKICAgICBMb2FkVHdpY2VBbmRSZWxvYWRUZXN0OjphZGQoIldlYktp
dFdlYlZpZXciLCAibG9hZC10d2ljZS1hbmQtcmVsb2FkIiwgdGVzdFdlYlZpZXdMb2FkVHdpY2VB
bmRSZWxvYWQpOworICAgIExvYWRUcmFja2luZ1Rlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJ1
bmZpbmlzaGVkLXN1YnJlc291cmNlLWxvYWQiLCB0ZXN0VW5maW5pc2hlZFN1YnJlc291cmNlTG9h
ZCk7CiAKICAgICAvLyBUaGlzIHRlc3QgY2hlY2tzIHRoYXQgd2ViIHZpZXcgbm90aWZ5Ojp1cmkg
c2lnbmFsIGlzIGNvcnJlY3RseSBlbWl0dGVkCiAgICAgLy8gYW5kIHRoZSB1cmkgaXMgYWxyZWFk
eSB1cGRhdGVkIHdoZW4gbG9hZGVyIGNsaWVudCBzaWduYWxzIGFyZSBlbWl0dGVkLgpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvTG9hZFRyYWNraW5nVGVz
dC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9Mb2FkVHJhY2tpbmdU
ZXN0LmNwcAppbmRleCAyZGRkZWNhMzYyZTliMjI4MjQ3NmY5OTVkMzI2NzcxYjVhODg1MjBlLi40
ZWZhNTE2YzY3NGU3YzkzYzBjYTg5ZWM0MWI4ODQwMDc4NmExY2JjIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9Mb2FkVHJhY2tpbmdUZXN0LmNwcAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9Mb2FkVHJhY2tpbmdUZXN0LmNw
cApAQCAtMjUsNyArMjUsOCBAQCBzdGF0aWMgdm9pZCBsb2FkQ2hhbmdlZENhbGxiYWNrKFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdExvYWRFdmVudCBsb2FkRXZlbgogICAgIHN3aXRjaCAo
bG9hZEV2ZW50KSB7CiAgICAgY2FzZSBXRUJLSVRfTE9BRF9TVEFSVEVEOgogICAgICAgICBnX2Fz
c2VydF90cnVlKHdlYmtpdF93ZWJfdmlld19pc19sb2FkaW5nKHdlYlZpZXcpKTsKLSAgICAgICAg
Z19hc3NlcnRfY21wc3RyKHRlc3QtPm1fYWN0aXZlVVJJLmRhdGEoKSwgPT0sIHdlYmtpdF93ZWJf
dmlld19nZXRfdXJpKHdlYlZpZXcpKTsKKyAgICAgICAgaWYgKCF0ZXN0LT5tX2xvYWRNYXlUcmln
Z2VyU3Vic2VxdWVudExvYWQpCisgICAgICAgICAgICBnX2Fzc2VydF9jbXBzdHIodGVzdC0+bV9h
Y3RpdmVVUkkuZGF0YSgpLCA9PSwgd2Via2l0X3dlYl92aWV3X2dldF91cmkod2ViVmlldykpOwog
ICAgICAgICB0ZXN0LT5wcm92aXNpb25hbExvYWRTdGFydGVkKCk7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgV0VCS0lUX0xPQURfUkVESVJFQ1RFRDoKQEAgLTQ4LDE0ICs0OSwxNSBAQCBzdGF0
aWMgdm9pZCBsb2FkQ2hhbmdlZENhbGxiYWNrKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktp
dExvYWRFdmVudCBsb2FkRXZlbgogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBXRUJL
SVRfTE9BRF9GSU5JU0hFRDoKLSAgICAgICAgaWYgKCF0ZXN0LT5tX2xvYWRGYWlsZWQpIHsKLSAg
ICAgICAgICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF93ZWJfdmlld19pc19sb2FkaW5nKHdlYlZp
ZXcpKTsKLSAgICAgICAgICAgIGdfYXNzZXJ0X2NtcHN0cih0ZXN0LT5tX2FjdGl2ZVVSSS5kYXRh
KCksID09LCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VyaSh3ZWJWaWV3KSk7Ci0gICAgICAgIH0gZWxz
ZSBpZiAoIWdfZXJyb3JfbWF0Y2hlcyh0ZXN0LT5tX2Vycm9yLmdldCgpLCBXRUJLSVRfTkVUV09S
S19FUlJPUiwgV0VCS0lUX05FVFdPUktfRVJST1JfQ0FOQ0VMTEVEKSkgewotICAgICAgICAgICAg
Ly8gV2hlbiBhIG5ldyBsb2FkIGlzIHN0YXJ0ZWQgYmVmb3JlIHRoZSBwcmV2aW91cyBvbmUgaGFz
IGZpbmlzaGVkLCB3ZSByZWNlaXZlIHRoZSBsb2FkLWZpbmlzaGVkIHNpZ25hbAotICAgICAgICAg
ICAgLy8gb2YgdGhlIG9uZ29pbmcgbG9hZCB3aGlsZSB3ZSBhbHJlYWR5IGhhdmUgYSBwcm92aXNp
b25hbCBVUkwgZm9yIHRoZSBuZXcgbG9hZC4gVGhpcyBpcyB0aGUgb25seSBjYXNlCi0gICAgICAg
ICAgICAvLyB3aGVyZSBpc2xvYWRpbmcgaXMgdHJ1ZSB3aGVuIHRoZSBsb2FkIGhhcyBmaW5pc2hl
ZC4KLSAgICAgICAgICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF93ZWJfdmlld19pc19sb2FkaW5n
KHdlYlZpZXcpKTsKKyAgICAgICAgaWYgKCF0ZXN0LT5tX2xvYWRNYXlUcmlnZ2VyU3Vic2VxdWVu
dExvYWQpIHsKKyAgICAgICAgICAgIGlmICghdGVzdC0+bV9sb2FkRmFpbGVkKSB7CisgICAgICAg
ICAgICAgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3dlYl92aWV3X2lzX2xvYWRpbmcod2ViVmll
dykpOworICAgICAgICAgICAgICAgIGdfYXNzZXJ0X2NtcHN0cih0ZXN0LT5tX2FjdGl2ZVVSSS5k
YXRhKCksID09LCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VyaSh3ZWJWaWV3KSk7CisgICAgICAgICAg
ICB9IGVsc2UgaWYgKCFnX2Vycm9yX21hdGNoZXModGVzdC0+bV9lcnJvci5nZXQoKSwgV0VCS0lU
X05FVFdPUktfRVJST1IsIFdFQktJVF9ORVRXT1JLX0VSUk9SX0NBTkNFTExFRCkpIHsKKyAgICAg
ICAgICAgICAgICAvLyBXaGVuIGEgbmV3IGxvYWQgaXMgc3RhcnRlZCBiZWZvcmUgdGhlIHByZXZp
b3VzIG9uZSBoYXMgZmluaXNoZWQsIHdlIHJlY2VpdmUgdGhlIGxvYWQtZmluaXNoZWQgc2lnbmFs
CisgICAgICAgICAgICAgICAgLy8gb2YgdGhlIG9uZ29pbmcgbG9hZCB3aGlsZSB3ZSBhbHJlYWR5
IGhhdmUgYSBwcm92aXNpb25hbCBVUkwgZm9yIHRoZSBuZXcgbG9hZC4KKyAgICAgICAgICAgICAg
ICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfd2ViX3ZpZXdfaXNfbG9hZGluZyh3ZWJWaWV3KSk7Cisg
ICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgdGVzdC0+bG9hZEZpbmlzaGVkKCk7CiAg
ICAgICAgIGJyZWFrOwpAQCAtNzEsMjAgKzczLDIxIEBAIHN0YXRpYyB2b2lkIGxvYWRGYWlsZWRD
YWxsYmFjayhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRMb2FkRXZlbnQgbG9hZEV2ZW50
CiAgICAgZ19hc3NlcnRfbm9ubnVsbChlcnJvcik7CiAgICAgdGVzdC0+bV9lcnJvci5yZXNldChn
X2Vycm9yX2NvcHkoZXJyb3IpKTsKIAotICAgIGlmICghZ19lcnJvcl9tYXRjaGVzKGVycm9yLCBX
RUJLSVRfTkVUV09SS19FUlJPUiwgV0VCS0lUX05FVFdPUktfRVJST1JfQ0FOQ0VMTEVEKSkgewor
ICAgIGlmICghdGVzdC0+bV9sb2FkTWF5VHJpZ2dlclN1YnNlcXVlbnRMb2FkICYmICFnX2Vycm9y
X21hdGNoZXMoZXJyb3IsIFdFQktJVF9ORVRXT1JLX0VSUk9SLCBXRUJLSVRfTkVUV09SS19FUlJP
Ul9DQU5DRUxMRUQpKSB7CiAgICAgICAgIC8vIFdoZW4gYSBuZXcgbG9hZCBpcyBzdGFydGVkIGJl
Zm9yZSB0aGUgcHJldmlvdXMgb25lIGhhcyBmaW5pc2hlZCwgd2UgcmVjZWl2ZSB0aGUgbG9hZC1m
YWlsZWQgc2lnbmFsCi0gICAgICAgIC8vIG9mIHRoZSBvbmdvaW5nIGxvYWQgd2hpbGUgd2UgYWxy
ZWFkeSBoYXZlIGEgcHJvdmlzaW9uYWwgVVJMIGZvciB0aGUgbmV3IGxvYWQuIFRoaXMgaXMgdGhl
IG9ubHkgY2FzZQotICAgICAgICAvLyB3aGVyZSBpcy1sb2FkaW5nIGlzIHRydWUgd2hlbiB0aGUg
bG9hZCBoYXMgZmFpbGVkLgorICAgICAgICAvLyBvZiB0aGUgb25nb2luZyBsb2FkIHdoaWxlIHdl
IGFscmVhZHkgaGF2ZSBhIHByb3Zpc2lvbmFsIFVSTCBmb3IgdGhlIG5ldyBsb2FkLgogICAgICAg
ICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfd2ViX3ZpZXdfaXNfbG9hZGluZyh3ZWJWaWV3KSk7CiAg
ICAgfQogCiAgICAgc3dpdGNoIChsb2FkRXZlbnQpIHsKICAgICBjYXNlIFdFQktJVF9MT0FEX1NU
QVJURUQ6Ci0gICAgICAgIGdfYXNzZXJ0X2NtcHN0cih0ZXN0LT5tX2FjdGl2ZVVSSS5kYXRhKCks
ID09LCBmYWlsaW5nVVJJKTsKKyAgICAgICAgaWYgKCF0ZXN0LT5tX2xvYWRNYXlUcmlnZ2VyU3Vi
c2VxdWVudExvYWQpCisgICAgICAgICAgICBnX2Fzc2VydF9jbXBzdHIodGVzdC0+bV9hY3RpdmVV
UkkuZGF0YSgpLCA9PSwgZmFpbGluZ1VSSSk7CiAgICAgICAgIHRlc3QtPnByb3Zpc2lvbmFsTG9h
ZEZhaWxlZChmYWlsaW5nVVJJLCBlcnJvcik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV0VC
S0lUX0xPQURfQ09NTUlUVEVEOgotICAgICAgICBnX2Fzc2VydF9jbXBzdHIodGVzdC0+bV9hY3Rp
dmVVUkkuZGF0YSgpLCA9PSwgd2Via2l0X3dlYl92aWV3X2dldF91cmkod2ViVmlldykpOworICAg
ICAgICBpZiAoIXRlc3QtPm1fbG9hZE1heVRyaWdnZXJTdWJzZXF1ZW50TG9hZCkKKyAgICAgICAg
ICAgIGdfYXNzZXJ0X2NtcHN0cih0ZXN0LT5tX2FjdGl2ZVVSSS5kYXRhKCksID09LCB3ZWJraXRf
d2ViX3ZpZXdfZ2V0X3VyaSh3ZWJWaWV3KSk7CiAgICAgICAgIHRlc3QtPmxvYWRGYWlsZWQoZmFp
bGluZ1VSSSwgZXJyb3IpOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgpAQCAtMTA4LDgg
KzExMSw2IEBAIHN0YXRpYyB2b2lkIGVzdGltYXRlZFByb2dyZXNzQ2hhbmdlZENhbGxiYWNrKEdP
YmplY3QqLCBHUGFyYW1TcGVjKiwgTG9hZFRyYWNraW5nCiB9CiAKIExvYWRUcmFja2luZ1Rlc3Q6
OkxvYWRUcmFja2luZ1Rlc3QoKQotICAgIDogbV9ydW5Mb2FkVW50aWxDb21wbGV0aW9uKGZhbHNl
KQotICAgICwgbV9sb2FkRmFpbGVkKGZhbHNlKQogewogICAgIGdfc2lnbmFsX2Nvbm5lY3QobV93
ZWJWaWV3LCAibG9hZC1jaGFuZ2VkIiwgR19DQUxMQkFDSyhsb2FkQ2hhbmdlZENhbGxiYWNrKSwg
dGhpcyk7CiAgICAgZ19zaWduYWxfY29ubmVjdChtX3dlYlZpZXcsICJsb2FkLWZhaWxlZCIsIEdf
Q0FMTEJBQ0sobG9hZEZhaWxlZENhbGxiYWNrKSwgdGhpcyk7CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9Mb2FkVHJhY2tpbmdUZXN0LmggYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9Mb2FkVHJhY2tpbmdUZXN0LmgKaW5kZXggMDI4
ODA5MDRhNzQyZjIxYjE0YTg5MzY2MDFiNzFlMmQ2YjFlNzk4NS4uODBkMWM3MzNkODgxZTg0M2M0
NjE2ZGRlZGVhNTFkNDE4ZTRiNzI0MiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9n
bGliL1dlYktpdEdMaWIvTG9hZFRyYWNraW5nVGVzdC5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvZ2xpYi9XZWJLaXRHTGliL0xvYWRUcmFja2luZ1Rlc3QuaApAQCAtNTksOCArNTksOSBAQCBw
dWJsaWM6CiAgICAgICAgIExvYWRGYWlsZWQsCiAgICAgICAgIExvYWRGYWlsZWRXaXRoVExTRXJy
b3JzCiAgICAgfTsKLSAgICBib29sIG1fcnVuTG9hZFVudGlsQ29tcGxldGlvbjsKLSAgICBib29s
IG1fbG9hZEZhaWxlZDsKKyAgICBib29sIG1fcnVuTG9hZFVudGlsQ29tcGxldGlvbiA9IGZhbHNl
OworICAgIGJvb2wgbV9sb2FkRmFpbGVkID0gZmFsc2U7CisgICAgYm9vbCBtX2xvYWRNYXlUcmln
Z2VyU3Vic2VxdWVudExvYWQgPSBmYWxzZTsKICAgICBHVW5pcXVlUHRyPEdFcnJvcj4gbV9lcnJv
cjsKICAgICBWZWN0b3I8TG9hZEV2ZW50cz4gbV9sb2FkRXZlbnRzOwogICAgIGZsb2F0IG1fZXN0
aW1hdGVkUHJvZ3Jlc3M7Cg==
</data>
<flag name="review"
          id="379932"
          type_id="1"
          status="-"
          setter="rniwa"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>363867</attachid>
            <date>2019-03-07 03:43:44 -0800</date>
            <delta_ts>2019-03-07 03:55:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-load-events.diff</filename>
            <type>text/plain</type>
            <size>10143</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZp
ZXcuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5j
cHAKaW5kZXggOTc3MTZkYmQxNTkuLmNhYWU2ZjA5Y2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcApAQCAtNDI0LDYgKzQyNCwx
MSBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAgfQogCisgICAgdm9pZCB3aWxsU3RhcnRMb2Fk
KCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIHdlYmtpdFdlYlZpZXdXaWxsU3RhcnRMb2FkKG1f
d2ViVmlldyk7CisgICAgfQorCiAgICAgV2ViS2l0V2ViVmlldyogbV93ZWJWaWV3OwogfTsKICNl
bmRpZgpAQCAtMjA3MCw2ICsyMDc1LDE4IEBAIFdlYlBhZ2VQcm94eSYgd2Via2l0V2ViVmlld0dl
dFBhZ2UoV2ViS2l0V2ViVmlldyogd2ViVmlldykKICAgICByZXR1cm4gZ2V0UGFnZSh3ZWJWaWV3
KTsKIH0KIAordm9pZCB3ZWJraXRXZWJWaWV3V2lsbFN0YXJ0TG9hZChXZWJLaXRXZWJWaWV3KiB3
ZWJWaWV3KQoreworICAgIC8vIFRoaXMgaXMgY2FsbGVkIGJlZm9yZSBOYXZpZ2F0aW9uQ2xpZW50
OjpkaWRTdGFydFByb3Zpc2lvbmFsTmF2aWdhdGlvbigpLCB0aGUgcGFnZSBsb2FkIHN0YXRlIGhh
c24ndCBiZWVuIGNvbW1pdHRlZCB5ZXQuCisgICAgYXV0byYgcGFnZUxvYWRTdGF0ZSA9IGdldFBh
Z2Uod2ViVmlldykucGFnZUxvYWRTdGF0ZSgpOworICAgIGlmIChwYWdlTG9hZFN0YXRlLnN0YXRl
KCkgPT0gUGFnZUxvYWRTdGF0ZTo6U3RhdGU6OkZpbmlzaGVkKQorICAgICAgICByZXR1cm47CisK
KyAgICBHVW5pcXVlUHRyPEdFcnJvcj4gZXJyb3IoZ19lcnJvcl9uZXdfbGl0ZXJhbChXRUJLSVRf
TkVUV09SS19FUlJPUiwgV0VCS0lUX05FVFdPUktfRVJST1JfQ0FOQ0VMTEVELCBfKCJMb2FkIHJl
cXVlc3QgY2FuY2VsbGVkIikpKTsKKyAgICB3ZWJraXRXZWJWaWV3TG9hZEZhaWxlZCh3ZWJWaWV3
LCBwYWdlTG9hZFN0YXRlLnN0YXRlKCkgPT0gUGFnZUxvYWRTdGF0ZTo6U3RhdGU6OlByb3Zpc2lv
bmFsID8gV0VCS0lUX0xPQURfU1RBUlRFRCA6IFdFQktJVF9MT0FEX0NPTU1JVFRFRCwKKyAgICAg
ICAgd2ViVmlldy0+cHJpdi0+YWN0aXZlVVJJLmRhdGEoKSwgZXJyb3IuZ2V0KCkpOworfQorCiB2
b2lkIHdlYmtpdFdlYlZpZXdMb2FkQ2hhbmdlZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJL
aXRMb2FkRXZlbnQgbG9hZEV2ZW50KQogewogICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2
ID0gd2ViVmlldy0+cHJpdjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdFdlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IGI1ZTE0ZTEwMjdhLi4zMGRmZjU3
MDViOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
V2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRXZWJWaWV3UHJpdmF0ZS5oCkBAIC00MSw2ICs0MSw3IEBACiAKIHZvaWQgd2Via2l0V2Vi
Vmlld0NyZWF0ZVBhZ2UoV2ViS2l0V2ViVmlldyosIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9u
PiYmKTsKIFdlYktpdDo6V2ViUGFnZVByb3h5JiB3ZWJraXRXZWJWaWV3R2V0UGFnZShXZWJLaXRX
ZWJWaWV3Kik7Cit2b2lkIHdlYmtpdFdlYlZpZXdXaWxsU3RhcnRMb2FkKFdlYktpdFdlYlZpZXcq
KTsKIHZvaWQgd2Via2l0V2ViVmlld0xvYWRDaGFuZ2VkKFdlYktpdFdlYlZpZXcqLCBXZWJLaXRM
b2FkRXZlbnQpOwogdm9pZCB3ZWJraXRXZWJWaWV3TG9hZEZhaWxlZChXZWJLaXRXZWJWaWV3Kiwg
V2ViS2l0TG9hZEV2ZW50LCBjb25zdCBjaGFyKiBmYWlsaW5nVVJJLCBHRXJyb3IqKTsKIHZvaWQg
d2Via2l0V2ViVmlld0xvYWRGYWlsZWRXaXRoVExTRXJyb3JzKFdlYktpdFdlYlZpZXcqLCBjb25z
dCBjaGFyKiBmYWlsaW5nVVJJLCBHRXJyb3IqLCBHVGxzQ2VydGlmaWNhdGVGbGFncywgR1Rsc0Nl
cnRpZmljYXRlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L1BhZ2VDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvUGFn
ZUNsaWVudEltcGwuY3BwCmluZGV4IDRjNzM0ZTMxZDViLi5mZWUzYTU0MTY4ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAKQEAg
LTQ2MSw2ICs0NjEsOSBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRSZW1vdmVOYXZpZ2F0aW9u
R2VzdHVyZVNuYXBzaG90KCkKIAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkU3RhcnRQcm92aXNp
b25hbExvYWRGb3JNYWluRnJhbWUoKQogeworICAgIGlmIChXRUJLSVRfSVNfV0VCX1ZJRVcobV92
aWV3V2lkZ2V0KSkKKyAgICAgICAgd2Via2l0V2ViVmlld1dpbGxTdGFydExvYWQoV0VCS0lUX1dF
Ql9WSUVXKG1fdmlld1dpZGdldCkpOworCiAgICAgd2Via2l0V2ViVmlld0Jhc2VEaWRTdGFydFBy
b3Zpc2lvbmFsTG9hZEZvck1haW5GcmFtZShXRUJLSVRfV0VCX1ZJRVdfQkFTRShtX3ZpZXdXaWRn
ZXQpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9B
UElWaWV3Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL0FQSVZpZXdD
bGllbnQuaAppbmRleCA0YWRhZjQ2OGE2Ni4uMjE5OTFmOGRhZjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvQVBJVmlld0NsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvQVBJVmlld0NsaWVudC5oCkBAIC00Myw2ICs0Myw3IEBA
IHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBmcmFtZURpc3BsYXllZChXS1dQRTo6VmlldyYp
IHsgfQogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVEb3dubG9hZFJlcXVlc3QoV0tXUEU6OlZpZXcm
LCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgd2lsbFN0YXJ0
TG9hZChXS1dQRTo6VmlldyYpIHsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgQVBJCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvUGFnZUNsaWVudEltcGwuY3BwCmluZGV4
IGMzNDgxMGVjODc2Li43ZWJhZDA4ZTQwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL3dwZS9QYWdlQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL3dwZS9QYWdlQ2xpZW50SW1wbC5jcHAKQEAgLTI5MSw2ICsyOTEsMTEgQEAgdm9p
ZCBQYWdlQ2xpZW50SW1wbDo6ZGlkUmVtb3ZlTmF2aWdhdGlvbkdlc3R1cmVTbmFwc2hvdCgpCiB7
CiB9CiAKK3ZvaWQgUGFnZUNsaWVudEltcGw6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yTWFp
bkZyYW1lKCkKK3sKKyAgICBtX3ZpZXcud2lsbFN0YXJ0TG9hZCgpOworfQorCiB2b2lkIFBhZ2VD
bGllbnRJbXBsOjpkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JNYWluRnJhbWUoKQog
ewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9QYWdlQ2xp
ZW50SW1wbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9QYWdlQ2xpZW50SW1w
bC5oCmluZGV4IGY5ZTI1Yjc5YThjLi5hY2U2NzU2NzJjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL3dwZS9QYWdlQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS93cGUvUGFnZUNsaWVudEltcGwuaApAQCAtMTEyLDYgKzExMiw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCB3aWxsUmVjb3JkTmF2aWdhdGlvblNuYXBzaG90KFdlYkJhY2tG
b3J3YXJkTGlzdEl0ZW0mKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlbW92ZU5hdmlnYXRpb25H
ZXN0dXJlU25hcHNob3QoKSBvdmVycmlkZTsKIAorICAgIHZvaWQgZGlkU3RhcnRQcm92aXNpb25h
bExvYWRGb3JNYWluRnJhbWUoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpcnN0VmlzdWFsbHlO
b25FbXB0eUxheW91dEZvck1haW5GcmFtZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNo
TG9hZEZvck1haW5GcmFtZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbExvYWRGb3JNYWlu
RnJhbWUoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS93cGUvV1BFVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dQRVZp
ZXcuY3BwCmluZGV4IGRiYjUxYjQwNDVlLi4wYmM3Y2I4ZDdjMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvd3BlL1dQRVZpZXcuY3BwCkBAIC0xNzEsNiArMTcxLDExIEBAIHZvaWQg
Vmlldzo6aGFuZGxlRG93bmxvYWRSZXF1ZXN0KERvd25sb2FkUHJveHkmIGRvd25sb2FkKQogICAg
IG1fY2xpZW50LT5oYW5kbGVEb3dubG9hZFJlcXVlc3QoKnRoaXMsIGRvd25sb2FkKTsKIH0KIAor
dm9pZCBWaWV3Ojp3aWxsU3RhcnRMb2FkKCkKK3sKKyAgICBtX2NsaWVudC0+d2lsbFN0YXJ0TG9h
ZCgqdGhpcyk7Cit9CisKIHZvaWQgVmlldzo6c2V0U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXpl
JiBzaXplKQogewogICAgIG1fc2l6ZSA9IHNpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvd3BlL1dQRVZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS93cGUvV1BFVmlldy5oCmluZGV4IDBkZmM0MmZmNjBkLi4xNjQ4NmJmZWUyNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmgKQEAgLTU5LDYgKzU5LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0Q2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OlZpZXdDbGllbnQ+
JiYpOwogICAgIHZvaWQgZnJhbWVEaXNwbGF5ZWQoKTsKICAgICB2b2lkIGhhbmRsZURvd25sb2Fk
UmVxdWVzdChXZWJLaXQ6OkRvd25sb2FkUHJveHkmKTsKKyAgICB2b2lkIHdpbGxTdGFydExvYWQo
KTsKIAogICAgIFdlYktpdDo6V2ViUGFnZVByb3h5JiBwYWdlKCkgeyByZXR1cm4gKm1fcGFnZVBy
b3h5OyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VMb2FkU3Rh
dGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VMb2FkU3RhdGUuaAppbmRleCBjYWNi
Y2U0MjFlZC4uZjczYjM3Y2ZmMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1BhZ2VMb2FkU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlTG9hZFN0
YXRlLmgKQEAgLTEyMSw2ICsxMjEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNldChjb25zdCBU
cmFuc2FjdGlvbjo6VG9rZW4mKTsKIAogICAgIGJvb2wgaXNMb2FkaW5nKCkgY29uc3Q7CisgICAg
U3RhdGUgc3RhdGUoKSBjb25zdCB7IHJldHVybiBtX2NvbW1pdHRlZFN0YXRlLnN0YXRlOyB9CiAK
ICAgICBjb25zdCBTdHJpbmcmIHByb3Zpc2lvbmFsVVJMKCkgY29uc3QgeyByZXR1cm4gbV9jb21t
aXR0ZWRTdGF0ZS5wcm92aXNpb25hbFVSTDsgfQogICAgIGNvbnN0IFN0cmluZyYgdXJsKCkgY29u
c3QgeyByZXR1cm4gbV9jb21taXR0ZWRTdGF0ZS51cmw7IH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0TG9hZGVyQ2xpZW50LmNwcCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0TG9hZGVyQ2xpZW50LmNwcAppbmRl
eCBjNjdhZjE2ODRmZi4uNjFmYzE1ZmM2MjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0TG9hZGVyQ2xpZW50LmNwcAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdExvYWRlckNsaWVudC5jcHAKQEAgLTI0MCw2
ICsyNDAsMzQgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdMb2FkVHdpY2VBbmRSZWxvYWQoTG9h
ZFR3aWNlQW5kUmVsb2FkVGVzdCogdGVzdCwgZ2NvbnN0cG8KICAgICB0ZXN0LT53YWl0VW50aWxG
aW5pc2hlZCgpOwogfQogCitzdGF0aWMgdm9pZCB1cmlDaGFuZ2VkKFdlYktpdFdlYlZpZXcqIHdl
YlZpZXcsIEdQYXJhbVNwZWMqLCBMb2FkVHJhY2tpbmdUZXN0KiB0ZXN0KQoreworICAgIGNvbnN0
IGNoYXIqIHVyaSA9IHdlYmtpdF93ZWJfdmlld19nZXRfdXJpKHdlYlZpZXcpOworICAgIGlmIChn
X3N0cl9oYXNfc3VmZml4KHVyaSwgIi9ub3JtYWwiKSkKKyAgICAgICAgdGVzdC0+bV9hY3RpdmVV
UkkgPSB1cmk7Cit9CisKK3N0YXRpYyB2b2lkIHRlc3RVbmZpbmlzaGVkU3VicmVzb3VyY2VMb2Fk
KExvYWRUcmFja2luZ1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCit7CisgICAgLy8gVmVyaWZ5
IHRoYXQgTG9hZEZpbmlzaGVkIG9jY3VycyBldmVuIGlmIHRoZSBuZXh0IGxvYWQgc3RhcnRzIGJl
Zm9yZSB0aGUKKyAgICAvLyBwcmV2aW91cyBsb2FkIGFjdHVhbGx5IGZpbmlzaGVzLgorICAgIHRl
c3QtPmxvYWRVUkkoa1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL3VuZmluaXNoZWQtc3VicmVzb3Vy
Y2UtbG9hZCIpLmRhdGEoKSk7CisgICAgYXV0byBzaWduYWxJRCA9IGdfc2lnbmFsX2Nvbm5lY3Qo
dGVzdC0+bV93ZWJWaWV3LCAibm90aWZ5Ojp1cmkiLCBHX0NBTExCQUNLKHVyaUNoYW5nZWQpLCB0
ZXN0KTsKKyAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKKyAgICB0ZXN0LT53YWl0
VW50aWxMb2FkRmluaXNoZWQoKTsKKyAgICBnX3NpZ25hbF9oYW5kbGVyX2Rpc2Nvbm5lY3QodGVz
dC0+bV93ZWJWaWV3LCBzaWduYWxJRCk7CisKKyAgICBWZWN0b3I8TG9hZFRyYWNraW5nVGVzdDo6
TG9hZEV2ZW50cz4mIGV2ZW50cyA9IHRlc3QtPm1fbG9hZEV2ZW50czsKKyAgICBnX2Fzc2VydF9j
bXBpbnQoZXZlbnRzLnNpemUoKSwgPT0sIDcpOworICAgIGdfYXNzZXJ0X2NtcGludChldmVudHNb
MF0sID09LCBMb2FkVHJhY2tpbmdUZXN0OjpQcm92aXNpb25hbExvYWRTdGFydGVkKTsKKyAgICBn
X2Fzc2VydF9jbXBpbnQoZXZlbnRzWzFdLCA9PSwgTG9hZFRyYWNraW5nVGVzdDo6TG9hZENvbW1p
dHRlZCk7CisgICAgZ19hc3NlcnRfY21waW50KGV2ZW50c1syXSwgPT0sIExvYWRUcmFja2luZ1Rl
c3Q6OkxvYWRGYWlsZWQpOworICAgIGdfYXNzZXJ0X2NtcGludChldmVudHNbM10sID09LCBMb2Fk
VHJhY2tpbmdUZXN0OjpMb2FkRmluaXNoZWQpOworICAgIGdfYXNzZXJ0X2NtcGludChldmVudHNb
NF0sID09LCBMb2FkVHJhY2tpbmdUZXN0OjpQcm92aXNpb25hbExvYWRTdGFydGVkKTsKKyAgICBn
X2Fzc2VydF9jbXBpbnQoZXZlbnRzWzVdLCA9PSwgTG9hZFRyYWNraW5nVGVzdDo6TG9hZENvbW1p
dHRlZCk7CisgICAgZ19hc3NlcnRfY21waW50KGV2ZW50c1s2XSwgPT0sIExvYWRUcmFja2luZ1Rl
c3Q6OkxvYWRGaW5pc2hlZCk7Cit9CisKIGNsYXNzIFZpZXdVUklUcmFja2luZ1Rlc3Q6IHB1Ymxp
YyBMb2FkVHJhY2tpbmdUZXN0IHsKIHB1YmxpYzoKICAgICBNQUtFX0dMSUJfVEVTVF9GSVhUVVJF
KFZpZXdVUklUcmFja2luZ1Rlc3QpOwpAQCAtNTkwLDYgKzYxOCwxNiBAQCBzdGF0aWMgdm9pZCBz
ZXJ2ZXJDYWxsYmFjayhTb3VwU2VydmVyKiBzZXJ2ZXIsIFNvdXBNZXNzYWdlKiBtZXNzYWdlLCBj
b25zdCBjaGFyKgogICAgICAgICAiVGVzdGluZyFUZXN0aW5nIVRlc3RpbmchVGVzdGluZyFUZXN0
aW5nIVRlc3RpbmchVGVzdGluZyFUZXN0aW5nIVRlc3RpbmchVGVzdGluZyFUZXN0aW5nIVRlc3Rp
bmchIgogICAgICAgICAiVGVzdGluZyFUZXN0aW5nIVRlc3RpbmchVGVzdGluZyFUZXN0aW5nIVRl
c3RpbmchVGVzdGluZyFUZXN0aW5nIVRlc3RpbmchVGVzdGluZyFUZXN0aW5nIVRlc3RpbmchPC9i
b2R5PjwvaHRtbD4iOwogCisgICAgc3RhdGljIGNvbnN0IGNoYXIqIHVuZmluaXNoZWRTdWJyZXNv
dXJjZUxvYWRSZXNwb25zZVN0cmluZyA9ICI8aHRtbD48Ym9keT4iCisgICAgICAgICI8aW1nIHNy
Yz1cIi9zdGFsbFwiLz4iCisgICAgICAgICI8c2NyaXB0PiIKKyAgICAgICAgIiAgZnVuY3Rpb24g
cnVuKCkgeyIKKyAgICAgICAgIiAgICAgIGxvY2F0aW9uID0gJy9ub3JtYWwnOyIKKyAgICAgICAg
IiAgfSIKKyAgICAgICAgIiAgc2V0SW50ZXJ2YWwocnVuKCksIDUwKTsiCisgICAgICAgICI8L3Nj
cmlwdD4iCisgICAgICAgICI8L2JvZHk+PC9odG1sPiI7CisKICAgICBpZiAobWVzc2FnZS0+bWV0
aG9kICE9IFNPVVBfTUVUSE9EX0dFVCkgewogICAgICAgICBzb3VwX21lc3NhZ2Vfc2V0X3N0YXR1
cyhtZXNzYWdlLCBTT1VQX1NUQVRVU19OT1RfSU1QTEVNRU5URUQpOwogICAgICAgICByZXR1cm47
CkBAIC02MjUsNiArNjYzLDEyIEBAIHN0YXRpYyB2b2lkIHNlcnZlckNhbGxiYWNrKFNvdXBTZXJ2
ZXIqIHNlcnZlciwgU291cE1lc3NhZ2UqIG1lc3NhZ2UsIGNvbnN0IGNoYXIqCiAgICAgfSBlbHNl
IGlmIChnX3N0cl9lcXVhbChwYXRoLCAiL3JlZGlyZWN0LXRvLWRhdGEiKSkgewogICAgICAgICBz
b3VwX21lc3NhZ2Vfc2V0X3N0YXR1cyhtZXNzYWdlLCBTT1VQX1NUQVRVU19NT1ZFRF9QRVJNQU5F
TlRMWSk7CiAgICAgICAgIHNvdXBfbWVzc2FnZV9oZWFkZXJzX2FwcGVuZChtZXNzYWdlLT5yZXNw
b25zZV9oZWFkZXJzLCAiTG9jYXRpb24iLCAiZGF0YTp0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTgs
ZGF0YS11cmkiKTsKKyAgICB9IGVsc2UgaWYgKGdfc3RyX2VxdWFsKHBhdGgsICIvdW5maW5pc2hl
ZC1zdWJyZXNvdXJjZS1sb2FkIikpIHsKKyAgICAgICAgc291cF9tZXNzYWdlX2JvZHlfYXBwZW5k
KG1lc3NhZ2UtPnJlc3BvbnNlX2JvZHksIFNPVVBfTUVNT1JZX1NUQVRJQywgdW5maW5pc2hlZFN1
YnJlc291cmNlTG9hZFJlc3BvbnNlU3RyaW5nLCBzdHJsZW4odW5maW5pc2hlZFN1YnJlc291cmNl
TG9hZFJlc3BvbnNlU3RyaW5nKSk7CisgICAgfSBlbHNlIGlmIChnX3N0cl9lcXVhbChwYXRoLCAi
L3N0YWxsIikpIHsKKyAgICAgICAgLy8gVGhpcyByZXF1ZXN0IGlzIG5ldmVyIHVucGF1c2VkIGFu
ZCBzdGFsbHMgZm9yZXZlci4KKyAgICAgICAgc291cF9zZXJ2ZXJfcGF1c2VfbWVzc2FnZShzZXJ2
ZXIsIG1lc3NhZ2UpOworICAgICAgICByZXR1cm47CiAgICAgfSBlbHNlCiAgICAgICAgIHNvdXBf
bWVzc2FnZV9zZXRfc3RhdHVzKG1lc3NhZ2UsIFNPVVBfU1RBVFVTX05PVF9GT1VORCk7CiAKQEAg
LTY1NSw2ICs2OTksNyBAQCB2b2lkIGJlZm9yZUFsbCgpCiAgICAgTG9hZFRyYWNraW5nVGVzdDo6
YWRkKCJXZWJLaXRXZWJWaWV3IiwgInJlbG9hZCIsIHRlc3RXZWJWaWV3UmVsb2FkKTsKICAgICBM
b2FkVHJhY2tpbmdUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAiaGlzdG9yeS1sb2FkIiwgdGVz
dFdlYlZpZXdIaXN0b3J5TG9hZCk7CiAgICAgTG9hZFR3aWNlQW5kUmVsb2FkVGVzdDo6YWRkKCJX
ZWJLaXRXZWJWaWV3IiwgImxvYWQtdHdpY2UtYW5kLXJlbG9hZCIsIHRlc3RXZWJWaWV3TG9hZFR3
aWNlQW5kUmVsb2FkKTsKKyAgICBMb2FkVHJhY2tpbmdUZXN0OjphZGQoIldlYktpdFdlYlZpZXci
LCAidW5maW5pc2hlZC1zdWJyZXNvdXJjZS1sb2FkIiwgdGVzdFVuZmluaXNoZWRTdWJyZXNvdXJj
ZUxvYWQpOwogCiAgICAgLy8gVGhpcyB0ZXN0IGNoZWNrcyB0aGF0IHdlYiB2aWV3IG5vdGlmeTo6
dXJpIHNpZ25hbCBpcyBjb3JyZWN0bHkgZW1pdHRlZAogICAgIC8vIGFuZCB0aGUgdXJpIGlzIGFs
cmVhZHkgdXBkYXRlZCB3aGVuIGxvYWRlciBjbGllbnQgc2lnbmFscyBhcmUgZW1pdHRlZC4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>363868</attachid>
            <date>2019-03-07 03:55:18 -0800</date>
            <delta_ts>2019-03-11 01:05:17 -0700</delta_ts>
            <desc>Fix WPE build</desc>
            <filename>wk2-load-events.diff</filename>
            <type>text/plain</type>
            <size>10155</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZp
ZXcuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5j
cHAKaW5kZXggOTc3MTZkYmQxNTkuLjU1NGNlMWQ5NzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcApAQCAtNDI0LDYgKzQyNCwx
MSBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAgfQogCisgICAgdm9pZCB3aWxsU3RhcnRMb2Fk
KFdLV1BFOjpWaWV3Jikgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIHdlYmtpdFdlYlZpZXdXaWxs
U3RhcnRMb2FkKG1fd2ViVmlldyk7CisgICAgfQorCiAgICAgV2ViS2l0V2ViVmlldyogbV93ZWJW
aWV3OwogfTsKICNlbmRpZgpAQCAtMjA3MCw2ICsyMDc1LDE4IEBAIFdlYlBhZ2VQcm94eSYgd2Vi
a2l0V2ViVmlld0dldFBhZ2UoV2ViS2l0V2ViVmlldyogd2ViVmlldykKICAgICByZXR1cm4gZ2V0
UGFnZSh3ZWJWaWV3KTsKIH0KIAordm9pZCB3ZWJraXRXZWJWaWV3V2lsbFN0YXJ0TG9hZChXZWJL
aXRXZWJWaWV3KiB3ZWJWaWV3KQoreworICAgIC8vIFRoaXMgaXMgY2FsbGVkIGJlZm9yZSBOYXZp
Z2F0aW9uQ2xpZW50OjpkaWRTdGFydFByb3Zpc2lvbmFsTmF2aWdhdGlvbigpLCB0aGUgcGFnZSBs
b2FkIHN0YXRlIGhhc24ndCBiZWVuIGNvbW1pdHRlZCB5ZXQuCisgICAgYXV0byYgcGFnZUxvYWRT
dGF0ZSA9IGdldFBhZ2Uod2ViVmlldykucGFnZUxvYWRTdGF0ZSgpOworICAgIGlmIChwYWdlTG9h
ZFN0YXRlLnN0YXRlKCkgPT0gUGFnZUxvYWRTdGF0ZTo6U3RhdGU6OkZpbmlzaGVkKQorICAgICAg
ICByZXR1cm47CisKKyAgICBHVW5pcXVlUHRyPEdFcnJvcj4gZXJyb3IoZ19lcnJvcl9uZXdfbGl0
ZXJhbChXRUJLSVRfTkVUV09SS19FUlJPUiwgV0VCS0lUX05FVFdPUktfRVJST1JfQ0FOQ0VMTEVE
LCBfKCJMb2FkIHJlcXVlc3QgY2FuY2VsbGVkIikpKTsKKyAgICB3ZWJraXRXZWJWaWV3TG9hZEZh
aWxlZCh3ZWJWaWV3LCBwYWdlTG9hZFN0YXRlLnN0YXRlKCkgPT0gUGFnZUxvYWRTdGF0ZTo6U3Rh
dGU6OlByb3Zpc2lvbmFsID8gV0VCS0lUX0xPQURfU1RBUlRFRCA6IFdFQktJVF9MT0FEX0NPTU1J
VFRFRCwKKyAgICAgICAgd2ViVmlldy0+cHJpdi0+YWN0aXZlVVJJLmRhdGEoKSwgZXJyb3IuZ2V0
KCkpOworfQorCiB2b2lkIHdlYmtpdFdlYlZpZXdMb2FkQ2hhbmdlZChXZWJLaXRXZWJWaWV3KiB3
ZWJWaWV3LCBXZWJLaXRMb2FkRXZlbnQgbG9hZEV2ZW50KQogewogICAgIFdlYktpdFdlYlZpZXdQ
cml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IGI1ZTE0ZTEw
MjdhLi4zMGRmZjU3MDViOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0V2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oCkBAIC00MSw2ICs0MSw3IEBACiAKIHZv
aWQgd2Via2l0V2ViVmlld0NyZWF0ZVBhZ2UoV2ViS2l0V2ViVmlldyosIFJlZjxBUEk6OlBhZ2VD
b25maWd1cmF0aW9uPiYmKTsKIFdlYktpdDo6V2ViUGFnZVByb3h5JiB3ZWJraXRXZWJWaWV3R2V0
UGFnZShXZWJLaXRXZWJWaWV3Kik7Cit2b2lkIHdlYmtpdFdlYlZpZXdXaWxsU3RhcnRMb2FkKFdl
YktpdFdlYlZpZXcqKTsKIHZvaWQgd2Via2l0V2ViVmlld0xvYWRDaGFuZ2VkKFdlYktpdFdlYlZp
ZXcqLCBXZWJLaXRMb2FkRXZlbnQpOwogdm9pZCB3ZWJraXRXZWJWaWV3TG9hZEZhaWxlZChXZWJL
aXRXZWJWaWV3KiwgV2ViS2l0TG9hZEV2ZW50LCBjb25zdCBjaGFyKiBmYWlsaW5nVVJJLCBHRXJy
b3IqKTsKIHZvaWQgd2Via2l0V2ViVmlld0xvYWRGYWlsZWRXaXRoVExTRXJyb3JzKFdlYktpdFdl
YlZpZXcqLCBjb25zdCBjaGFyKiBmYWlsaW5nVVJJLCBHRXJyb3IqLCBHVGxzQ2VydGlmaWNhdGVG
bGFncywgR1Rsc0NlcnRpZmljYXRlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwCmluZGV4IDRjNzM0ZTMxZDViLi5mZWUzYTU0MTY4
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50
SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50
SW1wbC5jcHAKQEAgLTQ2MSw2ICs0NjEsOSBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRSZW1v
dmVOYXZpZ2F0aW9uR2VzdHVyZVNuYXBzaG90KCkKIAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlk
U3RhcnRQcm92aXNpb25hbExvYWRGb3JNYWluRnJhbWUoKQogeworICAgIGlmIChXRUJLSVRfSVNf
V0VCX1ZJRVcobV92aWV3V2lkZ2V0KSkKKyAgICAgICAgd2Via2l0V2ViVmlld1dpbGxTdGFydExv
YWQoV0VCS0lUX1dFQl9WSUVXKG1fdmlld1dpZGdldCkpOworCiAgICAgd2Via2l0V2ViVmlld0Jh
c2VEaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvck1haW5GcmFtZShXRUJLSVRfV0VCX1ZJRVdfQkFT
RShtX3ZpZXdXaWRnZXQpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL3dwZS9BUElWaWV3Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
d3BlL0FQSVZpZXdDbGllbnQuaAppbmRleCA0YWRhZjQ2OGE2Ni4uMjE5OTFmOGRhZjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvQVBJVmlld0NsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvQVBJVmlld0NsaWVudC5oCkBAIC00
Myw2ICs0Myw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBmcmFtZURpc3BsYXllZChX
S1dQRTo6VmlldyYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVEb3dubG9hZFJlcXVlc3Qo
V0tXUEU6OlZpZXcmLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmKSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgd2lsbFN0YXJ0TG9hZChXS1dQRTo6VmlldyYpIHsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
QVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGll
bnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvUGFnZUNsaWVudElt
cGwuY3BwCmluZGV4IGMzNDgxMGVjODc2Li43ZWJhZDA4ZTQwNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9QYWdlQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9QYWdlQ2xpZW50SW1wbC5jcHAKQEAgLTI5MSw2ICsy
OTEsMTEgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkUmVtb3ZlTmF2aWdhdGlvbkdlc3R1cmVT
bmFwc2hvdCgpCiB7CiB9CiAKK3ZvaWQgUGFnZUNsaWVudEltcGw6OmRpZFN0YXJ0UHJvdmlzaW9u
YWxMb2FkRm9yTWFpbkZyYW1lKCkKK3sKKyAgICBtX3ZpZXcud2lsbFN0YXJ0TG9hZCgpOworfQor
CiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JN
YWluRnJhbWUoKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L3dwZS9QYWdlQ2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9Q
YWdlQ2xpZW50SW1wbC5oCmluZGV4IGY5ZTI1Yjc5YThjLi5hY2U2NzU2NzJjMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9QYWdlQ2xpZW50SW1wbC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvUGFnZUNsaWVudEltcGwuaApAQCAtMTEy
LDYgKzExMiw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsUmVjb3JkTmF2aWdhdGlvblNuYXBz
aG90KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlbW92
ZU5hdmlnYXRpb25HZXN0dXJlU25hcHNob3QoKSBvdmVycmlkZTsKIAorICAgIHZvaWQgZGlkU3Rh
cnRQcm92aXNpb25hbExvYWRGb3JNYWluRnJhbWUoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZp
cnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvck1haW5GcmFtZSgpIG92ZXJyaWRlOwogICAgIHZv
aWQgZGlkRmluaXNoTG9hZEZvck1haW5GcmFtZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFp
bExvYWRGb3JNYWluRnJhbWUoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS93cGUvV1BFVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvd3BlL1dQRVZpZXcuY3BwCmluZGV4IGRiYjUxYjQwNDVlLi4wYmM3Y2I4ZDdjMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dQRVZpZXcuY3BwCkBAIC0xNzEsNiArMTcx
LDExIEBAIHZvaWQgVmlldzo6aGFuZGxlRG93bmxvYWRSZXF1ZXN0KERvd25sb2FkUHJveHkmIGRv
d25sb2FkKQogICAgIG1fY2xpZW50LT5oYW5kbGVEb3dubG9hZFJlcXVlc3QoKnRoaXMsIGRvd25s
b2FkKTsKIH0KIAordm9pZCBWaWV3Ojp3aWxsU3RhcnRMb2FkKCkKK3sKKyAgICBtX2NsaWVudC0+
d2lsbFN0YXJ0TG9hZCgqdGhpcyk7Cit9CisKIHZvaWQgVmlldzo6c2V0U2l6ZShjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiBzaXplKQogewogICAgIG1fc2l6ZSA9IHNpemU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dQRVZpZXcuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS93cGUvV1BFVmlldy5oCmluZGV4IDBkZmM0MmZmNjBkLi4xNjQ4NmJmZWUy
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmgKQEAgLTU5LDYg
KzU5LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6
OlZpZXdDbGllbnQ+JiYpOwogICAgIHZvaWQgZnJhbWVEaXNwbGF5ZWQoKTsKICAgICB2b2lkIGhh
bmRsZURvd25sb2FkUmVxdWVzdChXZWJLaXQ6OkRvd25sb2FkUHJveHkmKTsKKyAgICB2b2lkIHdp
bGxTdGFydExvYWQoKTsKIAogICAgIFdlYktpdDo6V2ViUGFnZVByb3h5JiBwYWdlKCkgeyByZXR1
cm4gKm1fcGFnZVByb3h5OyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1BhZ2VMb2FkU3RhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VMb2FkU3RhdGUu
aAppbmRleCBjYWNiY2U0MjFlZC4uZjczYjM3Y2ZmMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1BhZ2VMb2FkU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9QYWdlTG9hZFN0YXRlLmgKQEAgLTEyMSw2ICsxMjEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBy
ZXNldChjb25zdCBUcmFuc2FjdGlvbjo6VG9rZW4mKTsKIAogICAgIGJvb2wgaXNMb2FkaW5nKCkg
Y29uc3Q7CisgICAgU3RhdGUgc3RhdGUoKSBjb25zdCB7IHJldHVybiBtX2NvbW1pdHRlZFN0YXRl
LnN0YXRlOyB9CiAKICAgICBjb25zdCBTdHJpbmcmIHByb3Zpc2lvbmFsVVJMKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb21taXR0ZWRTdGF0ZS5wcm92aXNpb25hbFVSTDsgfQogICAgIGNvbnN0IFN0cmlu
ZyYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV9jb21taXR0ZWRTdGF0ZS51cmw7IH0KZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0TG9hZGVyQ2xpZW50
LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0TG9hZGVyQ2xp
ZW50LmNwcAppbmRleCBjNjdhZjE2ODRmZi4uNjFmYzE1ZmM2MjYgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0TG9hZGVyQ2xpZW50LmNwcAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdExvYWRlckNsaWVudC5j
cHAKQEAgLTI0MCw2ICsyNDAsMzQgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdMb2FkVHdpY2VB
bmRSZWxvYWQoTG9hZFR3aWNlQW5kUmVsb2FkVGVzdCogdGVzdCwgZ2NvbnN0cG8KICAgICB0ZXN0
LT53YWl0VW50aWxGaW5pc2hlZCgpOwogfQogCitzdGF0aWMgdm9pZCB1cmlDaGFuZ2VkKFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcsIEdQYXJhbVNwZWMqLCBMb2FkVHJhY2tpbmdUZXN0KiB0ZXN0KQor
eworICAgIGNvbnN0IGNoYXIqIHVyaSA9IHdlYmtpdF93ZWJfdmlld19nZXRfdXJpKHdlYlZpZXcp
OworICAgIGlmIChnX3N0cl9oYXNfc3VmZml4KHVyaSwgIi9ub3JtYWwiKSkKKyAgICAgICAgdGVz
dC0+bV9hY3RpdmVVUkkgPSB1cmk7Cit9CisKK3N0YXRpYyB2b2lkIHRlc3RVbmZpbmlzaGVkU3Vi
cmVzb3VyY2VMb2FkKExvYWRUcmFja2luZ1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCit7Cisg
ICAgLy8gVmVyaWZ5IHRoYXQgTG9hZEZpbmlzaGVkIG9jY3VycyBldmVuIGlmIHRoZSBuZXh0IGxv
YWQgc3RhcnRzIGJlZm9yZSB0aGUKKyAgICAvLyBwcmV2aW91cyBsb2FkIGFjdHVhbGx5IGZpbmlz
aGVzLgorICAgIHRlc3QtPmxvYWRVUkkoa1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL3VuZmluaXNo
ZWQtc3VicmVzb3VyY2UtbG9hZCIpLmRhdGEoKSk7CisgICAgYXV0byBzaWduYWxJRCA9IGdfc2ln
bmFsX2Nvbm5lY3QodGVzdC0+bV93ZWJWaWV3LCAibm90aWZ5Ojp1cmkiLCBHX0NBTExCQUNLKHVy
aUNoYW5nZWQpLCB0ZXN0KTsKKyAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKKyAg
ICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKKyAgICBnX3NpZ25hbF9oYW5kbGVyX2Rp
c2Nvbm5lY3QodGVzdC0+bV93ZWJWaWV3LCBzaWduYWxJRCk7CisKKyAgICBWZWN0b3I8TG9hZFRy
YWNraW5nVGVzdDo6TG9hZEV2ZW50cz4mIGV2ZW50cyA9IHRlc3QtPm1fbG9hZEV2ZW50czsKKyAg
ICBnX2Fzc2VydF9jbXBpbnQoZXZlbnRzLnNpemUoKSwgPT0sIDcpOworICAgIGdfYXNzZXJ0X2Nt
cGludChldmVudHNbMF0sID09LCBMb2FkVHJhY2tpbmdUZXN0OjpQcm92aXNpb25hbExvYWRTdGFy
dGVkKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoZXZlbnRzWzFdLCA9PSwgTG9hZFRyYWNraW5nVGVz
dDo6TG9hZENvbW1pdHRlZCk7CisgICAgZ19hc3NlcnRfY21waW50KGV2ZW50c1syXSwgPT0sIExv
YWRUcmFja2luZ1Rlc3Q6OkxvYWRGYWlsZWQpOworICAgIGdfYXNzZXJ0X2NtcGludChldmVudHNb
M10sID09LCBMb2FkVHJhY2tpbmdUZXN0OjpMb2FkRmluaXNoZWQpOworICAgIGdfYXNzZXJ0X2Nt
cGludChldmVudHNbNF0sID09LCBMb2FkVHJhY2tpbmdUZXN0OjpQcm92aXNpb25hbExvYWRTdGFy
dGVkKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoZXZlbnRzWzVdLCA9PSwgTG9hZFRyYWNraW5nVGVz
dDo6TG9hZENvbW1pdHRlZCk7CisgICAgZ19hc3NlcnRfY21waW50KGV2ZW50c1s2XSwgPT0sIExv
YWRUcmFja2luZ1Rlc3Q6OkxvYWRGaW5pc2hlZCk7Cit9CisKIGNsYXNzIFZpZXdVUklUcmFja2lu
Z1Rlc3Q6IHB1YmxpYyBMb2FkVHJhY2tpbmdUZXN0IHsKIHB1YmxpYzoKICAgICBNQUtFX0dMSUJf
VEVTVF9GSVhUVVJFKFZpZXdVUklUcmFja2luZ1Rlc3QpOwpAQCAtNTkwLDYgKzYxOCwxNiBAQCBz
dGF0aWMgdm9pZCBzZXJ2ZXJDYWxsYmFjayhTb3VwU2VydmVyKiBzZXJ2ZXIsIFNvdXBNZXNzYWdl
KiBtZXNzYWdlLCBjb25zdCBjaGFyKgogICAgICAgICAiVGVzdGluZyFUZXN0aW5nIVRlc3Rpbmch
VGVzdGluZyFUZXN0aW5nIVRlc3RpbmchVGVzdGluZyFUZXN0aW5nIVRlc3RpbmchVGVzdGluZyFU
ZXN0aW5nIVRlc3RpbmchIgogICAgICAgICAiVGVzdGluZyFUZXN0aW5nIVRlc3RpbmchVGVzdGlu
ZyFUZXN0aW5nIVRlc3RpbmchVGVzdGluZyFUZXN0aW5nIVRlc3RpbmchVGVzdGluZyFUZXN0aW5n
IVRlc3RpbmchPC9ib2R5PjwvaHRtbD4iOwogCisgICAgc3RhdGljIGNvbnN0IGNoYXIqIHVuZmlu
aXNoZWRTdWJyZXNvdXJjZUxvYWRSZXNwb25zZVN0cmluZyA9ICI8aHRtbD48Ym9keT4iCisgICAg
ICAgICI8aW1nIHNyYz1cIi9zdGFsbFwiLz4iCisgICAgICAgICI8c2NyaXB0PiIKKyAgICAgICAg
IiAgZnVuY3Rpb24gcnVuKCkgeyIKKyAgICAgICAgIiAgICAgIGxvY2F0aW9uID0gJy9ub3JtYWwn
OyIKKyAgICAgICAgIiAgfSIKKyAgICAgICAgIiAgc2V0SW50ZXJ2YWwocnVuKCksIDUwKTsiCisg
ICAgICAgICI8L3NjcmlwdD4iCisgICAgICAgICI8L2JvZHk+PC9odG1sPiI7CisKICAgICBpZiAo
bWVzc2FnZS0+bWV0aG9kICE9IFNPVVBfTUVUSE9EX0dFVCkgewogICAgICAgICBzb3VwX21lc3Nh
Z2Vfc2V0X3N0YXR1cyhtZXNzYWdlLCBTT1VQX1NUQVRVU19OT1RfSU1QTEVNRU5URUQpOwogICAg
ICAgICByZXR1cm47CkBAIC02MjUsNiArNjYzLDEyIEBAIHN0YXRpYyB2b2lkIHNlcnZlckNhbGxi
YWNrKFNvdXBTZXJ2ZXIqIHNlcnZlciwgU291cE1lc3NhZ2UqIG1lc3NhZ2UsIGNvbnN0IGNoYXIq
CiAgICAgfSBlbHNlIGlmIChnX3N0cl9lcXVhbChwYXRoLCAiL3JlZGlyZWN0LXRvLWRhdGEiKSkg
ewogICAgICAgICBzb3VwX21lc3NhZ2Vfc2V0X3N0YXR1cyhtZXNzYWdlLCBTT1VQX1NUQVRVU19N
T1ZFRF9QRVJNQU5FTlRMWSk7CiAgICAgICAgIHNvdXBfbWVzc2FnZV9oZWFkZXJzX2FwcGVuZCht
ZXNzYWdlLT5yZXNwb25zZV9oZWFkZXJzLCAiTG9jYXRpb24iLCAiZGF0YTp0ZXh0L3BsYWluO2No
YXJzZXQ9dXRmLTgsZGF0YS11cmkiKTsKKyAgICB9IGVsc2UgaWYgKGdfc3RyX2VxdWFsKHBhdGgs
ICIvdW5maW5pc2hlZC1zdWJyZXNvdXJjZS1sb2FkIikpIHsKKyAgICAgICAgc291cF9tZXNzYWdl
X2JvZHlfYXBwZW5kKG1lc3NhZ2UtPnJlc3BvbnNlX2JvZHksIFNPVVBfTUVNT1JZX1NUQVRJQywg
dW5maW5pc2hlZFN1YnJlc291cmNlTG9hZFJlc3BvbnNlU3RyaW5nLCBzdHJsZW4odW5maW5pc2hl
ZFN1YnJlc291cmNlTG9hZFJlc3BvbnNlU3RyaW5nKSk7CisgICAgfSBlbHNlIGlmIChnX3N0cl9l
cXVhbChwYXRoLCAiL3N0YWxsIikpIHsKKyAgICAgICAgLy8gVGhpcyByZXF1ZXN0IGlzIG5ldmVy
IHVucGF1c2VkIGFuZCBzdGFsbHMgZm9yZXZlci4KKyAgICAgICAgc291cF9zZXJ2ZXJfcGF1c2Vf
bWVzc2FnZShzZXJ2ZXIsIG1lc3NhZ2UpOworICAgICAgICByZXR1cm47CiAgICAgfSBlbHNlCiAg
ICAgICAgIHNvdXBfbWVzc2FnZV9zZXRfc3RhdHVzKG1lc3NhZ2UsIFNPVVBfU1RBVFVTX05PVF9G
T1VORCk7CiAKQEAgLTY1NSw2ICs2OTksNyBAQCB2b2lkIGJlZm9yZUFsbCgpCiAgICAgTG9hZFRy
YWNraW5nVGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgInJlbG9hZCIsIHRlc3RXZWJWaWV3UmVs
b2FkKTsKICAgICBMb2FkVHJhY2tpbmdUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAiaGlzdG9y
eS1sb2FkIiwgdGVzdFdlYlZpZXdIaXN0b3J5TG9hZCk7CiAgICAgTG9hZFR3aWNlQW5kUmVsb2Fk
VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgImxvYWQtdHdpY2UtYW5kLXJlbG9hZCIsIHRlc3RX
ZWJWaWV3TG9hZFR3aWNlQW5kUmVsb2FkKTsKKyAgICBMb2FkVHJhY2tpbmdUZXN0OjphZGQoIldl
YktpdFdlYlZpZXciLCAidW5maW5pc2hlZC1zdWJyZXNvdXJjZS1sb2FkIiwgdGVzdFVuZmluaXNo
ZWRTdWJyZXNvdXJjZUxvYWQpOwogCiAgICAgLy8gVGhpcyB0ZXN0IGNoZWNrcyB0aGF0IHdlYiB2
aWV3IG5vdGlmeTo6dXJpIHNpZ25hbCBpcyBjb3JyZWN0bHkgZW1pdHRlZAogICAgIC8vIGFuZCB0
aGUgdXJpIGlzIGFscmVhZHkgdXBkYXRlZCB3aGVuIGxvYWRlciBjbGllbnQgc2lnbmFscyBhcmUg
ZW1pdHRlZC4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>364239</attachid>
            <date>2019-03-11 01:05:17 -0700</date>
            <delta_ts>2019-03-11 09:38:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-load-events.diff</filename>
            <type>text/plain</type>
            <size>12980</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggMzZlYmQyNWU1ZmIuLmM0ZGE3YTllYmM5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDMxIEBACisyMDE5LTAzLTExICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlh
LmNvbT4KKworICAgICAgICBbV1BFXVtHVEtdIExvYWQgZXZlbnRzIG1heSBvY2N1ciBpbiB1bmV4
cGVjdGVkIG9yZGVyIHdoZW4gSlMgcmVkaXJlY3RzIHBhZ2UgYmVmb3JlIHN1YnJlc291cmNlIGxv
YWQgZmluaXNoZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5NDEzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEVuc3VyZSB3ZSBlbWl0IHRoZSBsb2FkLWZhaWxlZCBhbmQgbG9hZC1jaGFuZ2VkIHdpdGgg
ZmluaXNoZWQgZXZlbnQgd2hlbiB0aGVyZSdzIHN0aWxsIGFuIG9uZ29pbmcgbG9hZCB3aGVuIGEK
KyAgICAgICAgbmV3IHByb3Zpc2lvbmFsIGxvYWQgc3RyYXJ0cy4gUHJldmlvdXMgbG9hZCBmYWls
cyB3aXRoIGNhbmNlbGxlZCBlcnJvci4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdXaWxsU3RhcnRMb2FkKTog
Q2FsbCB3ZWJraXRXZWJWaWV3TG9hZEZhaWxlZCgpIGlmIGN1cnJlbnQgcGFnZSBsb2FkIHN0YXRl
IGlzIG5vdCBmaW5pc2hlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vi
Vmlld1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1w
bC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpkaWRTdGFydFByb3Zpc2lv
bmFsTG9hZEZvck1haW5GcmFtZSk6IENhbGwgd2Via2l0V2ViVmlld1dpbGxTdGFydExvYWQoKS4K
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9BUElWaWV3Q2xpZW50Lmg6CisgICAgICAgIChB
UEk6OlZpZXdDbGllbnQ6OndpbGxTdGFydExvYWQpOiBBZGQgd2lsbFN0YXJ0TG9hZCgpIHRvIEFQ
STo6Vmlvd0NsaWVudAorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBs
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmRpZFN0YXJ0UHJvdmlzaW9u
YWxMb2FkRm9yTWFpbkZyYW1lKTogQ2FsbCBXUEVWaWV3Ojp3aWxsU3RhcnRMb2FkKCkuCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS93cGUvUGFnZUNsaWVudEltcGwuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmNwcDoKKyAgICAgICAgKFdLV1BFOjpWaWV3Ojp3aWxsU3Rh
cnRMb2FkKTogQ2FsbCBBUEk6OlZpZXdDbGllbnQ6OndpbGxTdGFydExvYWQoKS4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VM
b2FkU3RhdGUuaDoKKyAgICAgICAgKFdlYktpdDo6UGFnZUxvYWRTdGF0ZTo6aXNQcm92aXNpb25h
bCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VMb2FkU3RhdGU6OmlzQ29tbWl0dGVkIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6UGFnZUxvYWRTdGF0ZTo6aXNGaW5pc2hlZCBjb25zdCk6
CisKIDIwMTktMDMtMTAgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9y
Zz4KIAogICAgICAgICBBZGQgYSBXS0NvbnRlbnRSdWxlTGlzdCB2YXJpYW50IHRoYXQgdXNlcyBj
b3BpZWQgbWVtb3J5IGluc3RlYWQgb2YgbW1hcCdkIHNoYXJlZCBtZW1vcnkgZm9yIGNsYXNzIEEg
Y29udGFpbmVyaXplZCBhcHBzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdFdlYlZpZXcuY3BwCmluZGV4IDk3NzE2ZGJkMTU5Li43MjE4NTQ1NWU2OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5j
cHAKQEAgLTQyNCw2ICs0MjQsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgIH0KIAorICAg
IHZvaWQgd2lsbFN0YXJ0TG9hZChXS1dQRTo6VmlldyYpIG92ZXJyaWRlCisgICAgeworICAgICAg
ICB3ZWJraXRXZWJWaWV3V2lsbFN0YXJ0TG9hZChtX3dlYlZpZXcpOworICAgIH0KKwogICAgIFdl
YktpdFdlYlZpZXcqIG1fd2ViVmlldzsKIH07CiAjZW5kaWYKQEAgLTIwNzAsNiArMjA3NSwxOCBA
QCBXZWJQYWdlUHJveHkmIHdlYmtpdFdlYlZpZXdHZXRQYWdlKFdlYktpdFdlYlZpZXcqIHdlYlZp
ZXcpCiAgICAgcmV0dXJuIGdldFBhZ2Uod2ViVmlldyk7CiB9CiAKK3ZvaWQgd2Via2l0V2ViVmll
d1dpbGxTdGFydExvYWQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKK3sKKyAgICAvLyBUaGlzIGlz
IGNhbGxlZCBiZWZvcmUgTmF2aWdhdGlvbkNsaWVudDo6ZGlkU3RhcnRQcm92aXNpb25hbE5hdmln
YXRpb24oKSwgdGhlIHBhZ2UgbG9hZCBzdGF0ZSBoYXNuJ3QgYmVlbiBjb21taXR0ZWQgeWV0Lgor
ICAgIGF1dG8mIHBhZ2VMb2FkU3RhdGUgPSBnZXRQYWdlKHdlYlZpZXcpLnBhZ2VMb2FkU3RhdGUo
KTsKKyAgICBpZiAocGFnZUxvYWRTdGF0ZS5pc0ZpbmlzaGVkKCkpCisgICAgICAgIHJldHVybjsK
KworICAgIEdVbmlxdWVQdHI8R0Vycm9yPiBlcnJvcihnX2Vycm9yX25ld19saXRlcmFsKFdFQktJ
VF9ORVRXT1JLX0VSUk9SLCBXRUJLSVRfTkVUV09SS19FUlJPUl9DQU5DRUxMRUQsIF8oIkxvYWQg
cmVxdWVzdCBjYW5jZWxsZWQiKSkpOworICAgIHdlYmtpdFdlYlZpZXdMb2FkRmFpbGVkKHdlYlZp
ZXcsIHBhZ2VMb2FkU3RhdGUuaXNQcm92aXNpb25hbCgpID8gV0VCS0lUX0xPQURfU1RBUlRFRCA6
IFdFQktJVF9MT0FEX0NPTU1JVFRFRCwKKyAgICAgICAgd2ViVmlldy0+cHJpdi0+YWN0aXZlVVJJ
LmRhdGEoKSwgZXJyb3IuZ2V0KCkpOworfQorCiB2b2lkIHdlYmtpdFdlYlZpZXdMb2FkQ2hhbmdl
ZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRMb2FkRXZlbnQgbG9hZEV2ZW50KQogewog
ICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXdQcml2YXRl
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3UHJpdmF0
ZS5oCmluZGV4IGI1ZTE0ZTEwMjdhLi4zMGRmZjU3MDViOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oCkBAIC00
MSw2ICs0MSw3IEBACiAKIHZvaWQgd2Via2l0V2ViVmlld0NyZWF0ZVBhZ2UoV2ViS2l0V2ViVmll
dyosIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmKTsKIFdlYktpdDo6V2ViUGFnZVByb3h5
JiB3ZWJraXRXZWJWaWV3R2V0UGFnZShXZWJLaXRXZWJWaWV3Kik7Cit2b2lkIHdlYmtpdFdlYlZp
ZXdXaWxsU3RhcnRMb2FkKFdlYktpdFdlYlZpZXcqKTsKIHZvaWQgd2Via2l0V2ViVmlld0xvYWRD
aGFuZ2VkKFdlYktpdFdlYlZpZXcqLCBXZWJLaXRMb2FkRXZlbnQpOwogdm9pZCB3ZWJraXRXZWJW
aWV3TG9hZEZhaWxlZChXZWJLaXRXZWJWaWV3KiwgV2ViS2l0TG9hZEV2ZW50LCBjb25zdCBjaGFy
KiBmYWlsaW5nVVJJLCBHRXJyb3IqKTsKIHZvaWQgd2Via2l0V2ViVmlld0xvYWRGYWlsZWRXaXRo
VExTRXJyb3JzKFdlYktpdFdlYlZpZXcqLCBjb25zdCBjaGFyKiBmYWlsaW5nVVJJLCBHRXJyb3Iq
LCBHVGxzQ2VydGlmaWNhdGVGbGFncywgR1Rsc0NlcnRpZmljYXRlKik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwCmluZGV4IDg4ZjQ3
MzEwM2FlLi44M2U3YTRkNTBjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAKQEAgLTQ3Miw2ICs0NzIsOSBAQCB2b2lkIFBhZ2VD
bGllbnRJbXBsOjpkaWRSZW1vdmVOYXZpZ2F0aW9uR2VzdHVyZVNuYXBzaG90KCkKIAogdm9pZCBQ
YWdlQ2xpZW50SW1wbDo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JNYWluRnJhbWUoKQogewor
ICAgIGlmIChXRUJLSVRfSVNfV0VCX1ZJRVcobV92aWV3V2lkZ2V0KSkKKyAgICAgICAgd2Via2l0
V2ViVmlld1dpbGxTdGFydExvYWQoV0VCS0lUX1dFQl9WSUVXKG1fdmlld1dpZGdldCkpOworCiAg
ICAgd2Via2l0V2ViVmlld0Jhc2VEaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvck1haW5GcmFtZShX
RUJLSVRfV0VCX1ZJRVdfQkFTRShtX3ZpZXdXaWRnZXQpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9BUElWaWV3Q2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvd3BlL0FQSVZpZXdDbGllbnQuaAppbmRleCA0YWRhZjQ2OGE2Ni4u
MjE5OTFmOGRhZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUv
QVBJVmlld0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvQVBJ
Vmlld0NsaWVudC5oCkBAIC00Myw2ICs0Myw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9p
ZCBmcmFtZURpc3BsYXllZChXS1dQRTo6VmlldyYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBoYW5k
bGVEb3dubG9hZFJlcXVlc3QoV0tXUEU6OlZpZXcmLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmKSB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgd2lsbFN0YXJ0TG9hZChXS1dQRTo6VmlldyYpIHsgfQogfTsK
IAogfSAvLyBuYW1lc3BhY2UgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS93cGUvUGFnZUNsaWVudEltcGwuY3BwCmluZGV4IGMxMmZlNjc0MmEzLi45Yjg2ZDcwMjMxZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9QYWdlQ2xpZW50SW1w
bC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9QYWdlQ2xpZW50SW1w
bC5jcHAKQEAgLTMwMiw2ICszMDIsMTEgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkUmVtb3Zl
TmF2aWdhdGlvbkdlc3R1cmVTbmFwc2hvdCgpCiB7CiB9CiAKK3ZvaWQgUGFnZUNsaWVudEltcGw6
OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yTWFpbkZyYW1lKCkKK3sKKyAgICBtX3ZpZXcud2ls
bFN0YXJ0TG9hZCgpOworfQorCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRGaXJzdFZpc3VhbGx5
Tm9uRW1wdHlMYXlvdXRGb3JNYWluRnJhbWUoKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL3dwZS9QYWdlQ2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL3dwZS9QYWdlQ2xpZW50SW1wbC5oCmluZGV4IDBkOGQwNDBmYzdiLi4zZDhk
ODhjNGY0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9QYWdl
Q2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvUGFnZUNs
aWVudEltcGwuaApAQCAtMTE4LDYgKzExOCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsUmVj
b3JkTmF2aWdhdGlvblNuYXBzaG90KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mKSBvdmVycmlkZTsK
ICAgICB2b2lkIGRpZFJlbW92ZU5hdmlnYXRpb25HZXN0dXJlU25hcHNob3QoKSBvdmVycmlkZTsK
IAorICAgIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JNYWluRnJhbWUoKSBvdmVycmlk
ZTsKICAgICB2b2lkIGRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvck1haW5GcmFtZSgp
IG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZEZvck1haW5GcmFtZSgpIG92ZXJyaWRl
OwogICAgIHZvaWQgZGlkRmFpbExvYWRGb3JNYWluRnJhbWUoKSBvdmVycmlkZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV1BFVmlldy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dQRVZpZXcuY3BwCmluZGV4IGRiYjUxYjQwNDVlLi4w
YmM3Y2I4ZDdjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9X
UEVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dQRVZpZXcu
Y3BwCkBAIC0xNzEsNiArMTcxLDExIEBAIHZvaWQgVmlldzo6aGFuZGxlRG93bmxvYWRSZXF1ZXN0
KERvd25sb2FkUHJveHkmIGRvd25sb2FkKQogICAgIG1fY2xpZW50LT5oYW5kbGVEb3dubG9hZFJl
cXVlc3QoKnRoaXMsIGRvd25sb2FkKTsKIH0KIAordm9pZCBWaWV3Ojp3aWxsU3RhcnRMb2FkKCkK
K3sKKyAgICBtX2NsaWVudC0+d2lsbFN0YXJ0TG9hZCgqdGhpcyk7Cit9CisKIHZvaWQgVmlldzo6
c2V0U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplKQogewogICAgIG1fc2l6ZSA9IHNp
emU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dQRVZpZXcu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV1BFVmlldy5oCmluZGV4IDBkZmM0
MmZmNjBkLi4xNjQ4NmJmZWUyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL3dwZS9XUEVWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9X
UEVWaWV3LmgKQEAgLTU5LDYgKzU5LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q2xpZW50KHN0
ZDo6dW5pcXVlX3B0cjxBUEk6OlZpZXdDbGllbnQ+JiYpOwogICAgIHZvaWQgZnJhbWVEaXNwbGF5
ZWQoKTsKICAgICB2b2lkIGhhbmRsZURvd25sb2FkUmVxdWVzdChXZWJLaXQ6OkRvd25sb2FkUHJv
eHkmKTsKKyAgICB2b2lkIHdpbGxTdGFydExvYWQoKTsKIAogICAgIFdlYktpdDo6V2ViUGFnZVBy
b3h5JiBwYWdlKCkgeyByZXR1cm4gKm1fcGFnZVByb3h5OyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VMb2FkU3RhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1BhZ2VMb2FkU3RhdGUuaAppbmRleCBjYWNiY2U0MjFlZC4uNmYwM2Y4NjQ0ZGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VMb2FkU3RhdGUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlTG9hZFN0YXRlLmgKQEAgLTEyMSw2ICsxMjEsOSBAQCBw
dWJsaWM6CiAgICAgdm9pZCByZXNldChjb25zdCBUcmFuc2FjdGlvbjo6VG9rZW4mKTsKIAogICAg
IGJvb2wgaXNMb2FkaW5nKCkgY29uc3Q7CisgICAgYm9vbCBpc1Byb3Zpc2lvbmFsKCkgY29uc3Qg
eyByZXR1cm4gbV9jb21taXR0ZWRTdGF0ZS5zdGF0ZSA9PSBTdGF0ZTo6UHJvdmlzaW9uYWw7IH0K
KyAgICBib29sIGlzQ29tbWl0dGVkKCkgY29uc3QgeyByZXR1cm4gbV9jb21taXR0ZWRTdGF0ZS5z
dGF0ZSA9PSBTdGF0ZTo6Q29tbWl0dGVkOyB9CisgICAgYm9vbCBpc0ZpbmlzaGVkKCkgY29uc3Qg
eyByZXR1cm4gbV9jb21taXR0ZWRTdGF0ZS5zdGF0ZSA9PSBTdGF0ZTo6RmluaXNoZWQ7IH0KIAog
ICAgIGNvbnN0IFN0cmluZyYgcHJvdmlzaW9uYWxVUkwoKSBjb25zdCB7IHJldHVybiBtX2NvbW1p
dHRlZFN0YXRlLnByb3Zpc2lvbmFsVVJMOyB9CiAgICAgY29uc3QgU3RyaW5nJiB1cmwoKSBjb25z
dCB7IHJldHVybiBtX2NvbW1pdHRlZFN0YXRlLnVybDsgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hh
bmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDU2NjQzY2VmNDAzLi4wODU2M2VhNjc2YSAx
MDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE2IEBACisyMDE5LTAzLTExICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdh
bGlhLmNvbT4KKworICAgICAgICBbV1BFXVtHVEtdIExvYWQgZXZlbnRzIG1heSBvY2N1ciBpbiB1
bmV4cGVjdGVkIG9yZGVyIHdoZW4gSlMgcmVkaXJlY3RzIHBhZ2UgYmVmb3JlIHN1YnJlc291cmNl
IGxvYWQgZmluaXNoZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5NDEzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RMb2FkZXJDbGllbnQu
Y3BwOgorICAgICAgICAodXJpQ2hhbmdlZCk6CisgICAgICAgICh0ZXN0VW5maW5pc2hlZFN1YnJl
c291cmNlTG9hZCk6CisgICAgICAgIChzZXJ2ZXJDYWxsYmFjayk6CisgICAgICAgIChiZWZvcmVB
bGwpOgorCiAyMDE5LTAzLTEwICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgQWRkIGEgV0tDb250ZW50UnVsZUxpc3QgdmFyaWFudCB0aGF0IHVz
ZXMgY29waWVkIG1lbW9yeSBpbnN0ZWFkIG9mIG1tYXAnZCBzaGFyZWQgbWVtb3J5IGZvciBjbGFz
cyBBIGNvbnRhaW5lcml6ZWQgYXBwcwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRHTGliL1Rlc3RMb2FkZXJDbGllbnQuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RMb2FkZXJDbGllbnQuY3BwCmluZGV4IGM2N2FmMTY4NGZm
Li42MWZjMTVmYzYyNiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRHTGliL1Rlc3RMb2FkZXJDbGllbnQuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0R0xpYi9UZXN0TG9hZGVyQ2xpZW50LmNwcApAQCAtMjQwLDYgKzI0MCwzNCBAQCBz
dGF0aWMgdm9pZCB0ZXN0V2ViVmlld0xvYWRUd2ljZUFuZFJlbG9hZChMb2FkVHdpY2VBbmRSZWxv
YWRUZXN0KiB0ZXN0LCBnY29uc3RwbwogICAgIHRlc3QtPndhaXRVbnRpbEZpbmlzaGVkKCk7CiB9
CiAKK3N0YXRpYyB2b2lkIHVyaUNoYW5nZWQoV2ViS2l0V2ViVmlldyogd2ViVmlldywgR1BhcmFt
U3BlYyosIExvYWRUcmFja2luZ1Rlc3QqIHRlc3QpCit7CisgICAgY29uc3QgY2hhciogdXJpID0g
d2Via2l0X3dlYl92aWV3X2dldF91cmkod2ViVmlldyk7CisgICAgaWYgKGdfc3RyX2hhc19zdWZm
aXgodXJpLCAiL25vcm1hbCIpKQorICAgICAgICB0ZXN0LT5tX2FjdGl2ZVVSSSA9IHVyaTsKK30K
Kworc3RhdGljIHZvaWQgdGVzdFVuZmluaXNoZWRTdWJyZXNvdXJjZUxvYWQoTG9hZFRyYWNraW5n
VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKK3sKKyAgICAvLyBWZXJpZnkgdGhhdCBMb2FkRmlu
aXNoZWQgb2NjdXJzIGV2ZW4gaWYgdGhlIG5leHQgbG9hZCBzdGFydHMgYmVmb3JlIHRoZQorICAg
IC8vIHByZXZpb3VzIGxvYWQgYWN0dWFsbHkgZmluaXNoZXMuCisgICAgdGVzdC0+bG9hZFVSSShr
U2VydmVyLT5nZXRVUklGb3JQYXRoKCIvdW5maW5pc2hlZC1zdWJyZXNvdXJjZS1sb2FkIikuZGF0
YSgpKTsKKyAgICBhdXRvIHNpZ25hbElEID0gZ19zaWduYWxfY29ubmVjdCh0ZXN0LT5tX3dlYlZp
ZXcsICJub3RpZnk6OnVyaSIsIEdfQ0FMTEJBQ0sodXJpQ2hhbmdlZCksIHRlc3QpOworICAgIHRl
c3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5p
c2hlZCgpOworICAgIGdfc2lnbmFsX2hhbmRsZXJfZGlzY29ubmVjdCh0ZXN0LT5tX3dlYlZpZXcs
IHNpZ25hbElEKTsKKworICAgIFZlY3RvcjxMb2FkVHJhY2tpbmdUZXN0OjpMb2FkRXZlbnRzPiYg
ZXZlbnRzID0gdGVzdC0+bV9sb2FkRXZlbnRzOworICAgIGdfYXNzZXJ0X2NtcGludChldmVudHMu
c2l6ZSgpLCA9PSwgNyk7CisgICAgZ19hc3NlcnRfY21waW50KGV2ZW50c1swXSwgPT0sIExvYWRU
cmFja2luZ1Rlc3Q6OlByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQpOworICAgIGdfYXNzZXJ0X2NtcGlu
dChldmVudHNbMV0sID09LCBMb2FkVHJhY2tpbmdUZXN0OjpMb2FkQ29tbWl0dGVkKTsKKyAgICBn
X2Fzc2VydF9jbXBpbnQoZXZlbnRzWzJdLCA9PSwgTG9hZFRyYWNraW5nVGVzdDo6TG9hZEZhaWxl
ZCk7CisgICAgZ19hc3NlcnRfY21waW50KGV2ZW50c1szXSwgPT0sIExvYWRUcmFja2luZ1Rlc3Q6
OkxvYWRGaW5pc2hlZCk7CisgICAgZ19hc3NlcnRfY21waW50KGV2ZW50c1s0XSwgPT0sIExvYWRU
cmFja2luZ1Rlc3Q6OlByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQpOworICAgIGdfYXNzZXJ0X2NtcGlu
dChldmVudHNbNV0sID09LCBMb2FkVHJhY2tpbmdUZXN0OjpMb2FkQ29tbWl0dGVkKTsKKyAgICBn
X2Fzc2VydF9jbXBpbnQoZXZlbnRzWzZdLCA9PSwgTG9hZFRyYWNraW5nVGVzdDo6TG9hZEZpbmlz
aGVkKTsKK30KKwogY2xhc3MgVmlld1VSSVRyYWNraW5nVGVzdDogcHVibGljIExvYWRUcmFja2lu
Z1Rlc3QgewogcHVibGljOgogICAgIE1BS0VfR0xJQl9URVNUX0ZJWFRVUkUoVmlld1VSSVRyYWNr
aW5nVGVzdCk7CkBAIC01OTAsNiArNjE4LDE2IEBAIHN0YXRpYyB2b2lkIHNlcnZlckNhbGxiYWNr
KFNvdXBTZXJ2ZXIqIHNlcnZlciwgU291cE1lc3NhZ2UqIG1lc3NhZ2UsIGNvbnN0IGNoYXIqCiAg
ICAgICAgICJUZXN0aW5nIVRlc3RpbmchVGVzdGluZyFUZXN0aW5nIVRlc3RpbmchVGVzdGluZyFU
ZXN0aW5nIVRlc3RpbmchVGVzdGluZyFUZXN0aW5nIVRlc3RpbmchVGVzdGluZyEiCiAgICAgICAg
ICJUZXN0aW5nIVRlc3RpbmchVGVzdGluZyFUZXN0aW5nIVRlc3RpbmchVGVzdGluZyFUZXN0aW5n
IVRlc3RpbmchVGVzdGluZyFUZXN0aW5nIVRlc3RpbmchVGVzdGluZyE8L2JvZHk+PC9odG1sPiI7
CiAKKyAgICBzdGF0aWMgY29uc3QgY2hhciogdW5maW5pc2hlZFN1YnJlc291cmNlTG9hZFJlc3Bv
bnNlU3RyaW5nID0gIjxodG1sPjxib2R5PiIKKyAgICAgICAgIjxpbWcgc3JjPVwiL3N0YWxsXCIv
PiIKKyAgICAgICAgIjxzY3JpcHQ+IgorICAgICAgICAiICBmdW5jdGlvbiBydW4oKSB7IgorICAg
ICAgICAiICAgICAgbG9jYXRpb24gPSAnL25vcm1hbCc7IgorICAgICAgICAiICB9IgorICAgICAg
ICAiICBzZXRJbnRlcnZhbChydW4oKSwgNTApOyIKKyAgICAgICAgIjwvc2NyaXB0PiIKKyAgICAg
ICAgIjwvYm9keT48L2h0bWw+IjsKKwogICAgIGlmIChtZXNzYWdlLT5tZXRob2QgIT0gU09VUF9N
RVRIT0RfR0VUKSB7CiAgICAgICAgIHNvdXBfbWVzc2FnZV9zZXRfc3RhdHVzKG1lc3NhZ2UsIFNP
VVBfU1RBVFVTX05PVF9JTVBMRU1FTlRFRCk7CiAgICAgICAgIHJldHVybjsKQEAgLTYyNSw2ICs2
NjMsMTIgQEAgc3RhdGljIHZvaWQgc2VydmVyQ2FsbGJhY2soU291cFNlcnZlciogc2VydmVyLCBT
b3VwTWVzc2FnZSogbWVzc2FnZSwgY29uc3QgY2hhcioKICAgICB9IGVsc2UgaWYgKGdfc3RyX2Vx
dWFsKHBhdGgsICIvcmVkaXJlY3QtdG8tZGF0YSIpKSB7CiAgICAgICAgIHNvdXBfbWVzc2FnZV9z
ZXRfc3RhdHVzKG1lc3NhZ2UsIFNPVVBfU1RBVFVTX01PVkVEX1BFUk1BTkVOVExZKTsKICAgICAg
ICAgc291cF9tZXNzYWdlX2hlYWRlcnNfYXBwZW5kKG1lc3NhZ2UtPnJlc3BvbnNlX2hlYWRlcnMs
ICJMb2NhdGlvbiIsICJkYXRhOnRleHQvcGxhaW47Y2hhcnNldD11dGYtOCxkYXRhLXVyaSIpOwor
ICAgIH0gZWxzZSBpZiAoZ19zdHJfZXF1YWwocGF0aCwgIi91bmZpbmlzaGVkLXN1YnJlc291cmNl
LWxvYWQiKSkgeworICAgICAgICBzb3VwX21lc3NhZ2VfYm9keV9hcHBlbmQobWVzc2FnZS0+cmVz
cG9uc2VfYm9keSwgU09VUF9NRU1PUllfU1RBVElDLCB1bmZpbmlzaGVkU3VicmVzb3VyY2VMb2Fk
UmVzcG9uc2VTdHJpbmcsIHN0cmxlbih1bmZpbmlzaGVkU3VicmVzb3VyY2VMb2FkUmVzcG9uc2VT
dHJpbmcpKTsKKyAgICB9IGVsc2UgaWYgKGdfc3RyX2VxdWFsKHBhdGgsICIvc3RhbGwiKSkgewor
ICAgICAgICAvLyBUaGlzIHJlcXVlc3QgaXMgbmV2ZXIgdW5wYXVzZWQgYW5kIHN0YWxscyBmb3Jl
dmVyLgorICAgICAgICBzb3VwX3NlcnZlcl9wYXVzZV9tZXNzYWdlKHNlcnZlciwgbWVzc2FnZSk7
CisgICAgICAgIHJldHVybjsKICAgICB9IGVsc2UKICAgICAgICAgc291cF9tZXNzYWdlX3NldF9z
dGF0dXMobWVzc2FnZSwgU09VUF9TVEFUVVNfTk9UX0ZPVU5EKTsKIApAQCAtNjU1LDYgKzY5OSw3
IEBAIHZvaWQgYmVmb3JlQWxsKCkKICAgICBMb2FkVHJhY2tpbmdUZXN0OjphZGQoIldlYktpdFdl
YlZpZXciLCAicmVsb2FkIiwgdGVzdFdlYlZpZXdSZWxvYWQpOwogICAgIExvYWRUcmFja2luZ1Rl
c3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJoaXN0b3J5LWxvYWQiLCB0ZXN0V2ViVmlld0hpc3Rv
cnlMb2FkKTsKICAgICBMb2FkVHdpY2VBbmRSZWxvYWRUZXN0OjphZGQoIldlYktpdFdlYlZpZXci
LCAibG9hZC10d2ljZS1hbmQtcmVsb2FkIiwgdGVzdFdlYlZpZXdMb2FkVHdpY2VBbmRSZWxvYWQp
OworICAgIExvYWRUcmFja2luZ1Rlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJ1bmZpbmlzaGVk
LXN1YnJlc291cmNlLWxvYWQiLCB0ZXN0VW5maW5pc2hlZFN1YnJlc291cmNlTG9hZCk7CiAKICAg
ICAvLyBUaGlzIHRlc3QgY2hlY2tzIHRoYXQgd2ViIHZpZXcgbm90aWZ5Ojp1cmkgc2lnbmFsIGlz
IGNvcnJlY3RseSBlbWl0dGVkCiAgICAgLy8gYW5kIHRoZSB1cmkgaXMgYWxyZWFkeSB1cGRhdGVk
IHdoZW4gbG9hZGVyIGNsaWVudCBzaWduYWxzIGFyZSBlbWl0dGVkLgo=
</data>
<flag name="review"
          id="380758"
          type_id="1"
          status="+"
          setter="mcatanzaro"
    />
          </attachment>
      

    </bug>

</bugzilla>