<?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>168219</bug_id>
          
          <creation_ts>2017-02-12 20:58:05 -0800</creation_ts>
          <short_desc>[WPE][GTK] Expose availability of certain editing commands in WebKitEditorState</short_desc>
          <delta_ts>2018-02-11 11:29:52 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          
          <see_also>https://bugzilla.gnome.org/show_bug.cgi?id=765145</see_also>
    
    <see_also>https://bugzilla.gnome.org/show_bug.cgi?id=772106</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=179797</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>161608</dependson>
    
    <dependson>177808</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Catanzaro">mcatanzaro</reporter>
          <assigned_to name="Michael Catanzaro">mcatanzaro</assigned_to>
          <cc>achristensen</cc>
    
    <cc>bdakin</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>buildbot</cc>
    
    <cc>cgarcia</cc>
    
    <cc>clopez</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>rniwa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>wenson_hsieh</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1276086</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-02-12 20:58:05 -0800</bug_when>
    <thetext>Add webkit_web_editor_is_editing_command_enabled() so that context menu item availability can be decided in the web process and then sent to the UI process via the WebKitContextMenu user data. This is superior to sending the WebKitContextMenu from the web process to the UI process without this information, and then subsequently performing several IPC queries from the UI process to the web process to check the availability of editing commands.

I want it to fix a context menu flickering problem in Epiphany. Since we have to show the WebKitContextMenu in a WebKitWebView::context-menu handler, but cannot check the availability of editing commands there without using sync IPC, we currently assume all editing commands are available, add them to the menu, start querying the availability with webkit_web_view_can_execute_editing_command(), show the menu, and later remove them from the menu once that finishes, causing the flicker.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1276087</commentid>
    <comment_count>1</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-02-12 20:59:53 -0800</bug_when>
    <thetext>Note: I decided not to name it webkit_web_editor_can_execute_editing_command() because there&apos;s still no API to do that from WebKitWebEditor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1276088</commentid>
    <comment_count>2</comment_count>
      <attachid>301330</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-02-12 21:07:26 -0800</bug_when>
    <thetext>Created attachment 301330
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1276122</commentid>
    <comment_count>3</comment_count>
      <attachid>301330</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-02-12 23:51:31 -0800</bug_when>
    <thetext>Comment on attachment 301330
Patch

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

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitEditingCommands.h:122
&gt; +/* If exposing new editing commands, also update WebKitWebEditor.h. */

No, we could simply make this header common to both APIs. Like WebKitURIRequest.h.

&gt; Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt:1356
&gt; +webkit_web_editor_is_editing_command_enabled

I know enabled is used internally, but it made me think as if it can be disabled or something, like a setting. I really like the can_execute and it would be consistent with the UI process API.

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebEditor.cpp:123
&gt; +    g_return_val_if_fail(WEBKIT_IS_WEB_EDITOR(editor), nullptr);

Oops, good catch.

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebEditor.cpp:135
&gt; + * Determines whether the editing command can currently be executed in
&gt; + * the #WebKitWebView corresponding to @editor using
&gt; + * webkit_web_view_execute_editing_command().

the #WebKitWebView corresponding to @editor. This doesn&apos;t belong to WebKitWebEditor object, but to WebKitWebPage. webkit_web_page_can_execute_editing_command().

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebEditor.cpp:145
&gt; +    return webkitWebPageGetPage(editor-&gt;priv-&gt;webPage)-&gt;isEditingCommandEnabled(String::fromUTF8(command));

It&apos;s indeed Page API. This web editor is actually a client. This will actually check if the command can be executed in the editor of the focused or main frame. If there&apos;s a plugin focused, the plugin will decide.

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebEditor.h:33
&gt; +/* Duplicated in WebKitEditingCommands.h. */

No, please.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1276123</commentid>
    <comment_count>4</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-02-12 23:55:27 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; Note: I decided not to name it
&gt; webkit_web_editor_can_execute_editing_command() because there&apos;s still no API
&gt; to do that from WebKitWebEditor.

But we could add it eventually. I prefer to be consistent with the UI process API. Also, user can execute editing commands with javascript, or using the DOM bindings (webkit_dom_document_exec_command), so we don&apos;t need the execute method to have a can execute.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1276208</commentid>
    <comment_count>5</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-02-13 09:20:00 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; No, we could simply make this header common to both APIs. Like
&gt; WebKitURIRequest.h.

OK.

&gt; &gt; Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt:1356
&gt; &gt; +webkit_web_editor_is_editing_command_enabled
&gt; 
&gt; I know enabled is used internally, but it made me think as if it can be
&gt; disabled or something, like a setting. I really like the can_execute and it
&gt; would be consistent with the UI process API.

OK.

&gt; &gt; Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebEditor.cpp:123
&gt; &gt; +    g_return_val_if_fail(WEBKIT_IS_WEB_EDITOR(editor), nullptr);
&gt; 
&gt; Oops, good catch.

Will do this in a separate patch now that this doesn&apos;t touch WebKitWebEditor.cpp anymore.

&gt; &gt; Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebEditor.cpp:135
&gt; &gt; + * Determines whether the editing command can currently be executed in
&gt; &gt; + * the #WebKitWebView corresponding to @editor using
&gt; &gt; + * webkit_web_view_execute_editing_command().
&gt; 
&gt; the #WebKitWebView corresponding to @editor. This doesn&apos;t belong to
&gt; WebKitWebEditor object, but to WebKitWebPage.
&gt; webkit_web_page_can_execute_editing_command().

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1276209</commentid>
    <comment_count>6</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-02-13 09:22:59 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #3)
&gt; &gt; No, we could simply make this header common to both APIs. Like
&gt; &gt; WebKitURIRequest.h.
&gt; 
&gt; OK.
&gt; 
&gt; &gt; &gt; Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt:1356
&gt; &gt; &gt; +webkit_web_editor_is_editing_command_enabled
&gt; &gt; 
&gt; &gt; I know enabled is used internally, but it made me think as if it can be
&gt; &gt; disabled or something, like a setting. I really like the can_execute and it
&gt; &gt; would be consistent with the UI process API.
&gt; 
&gt; OK.
&gt; 
&gt; &gt; &gt; Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebEditor.cpp:123
&gt; &gt; &gt; +    g_return_val_if_fail(WEBKIT_IS_WEB_EDITOR(editor), nullptr);
&gt; &gt; 
&gt; &gt; Oops, good catch.
&gt; 
&gt; Will do this in a separate patch now that this doesn&apos;t touch
&gt; WebKitWebEditor.cpp anymore.

You can land it unreviewed.

&gt; &gt; &gt; Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebEditor.cpp:135
&gt; &gt; &gt; + * Determines whether the editing command can currently be executed in
&gt; &gt; &gt; + * the #WebKitWebView corresponding to @editor using
&gt; &gt; &gt; + * webkit_web_view_execute_editing_command().
&gt; &gt; 
&gt; &gt; the #WebKitWebView corresponding to @editor. This doesn&apos;t belong to
&gt; &gt; WebKitWebEditor object, but to WebKitWebPage.
&gt; &gt; webkit_web_page_can_execute_editing_command().
&gt; 
&gt; OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1276210</commentid>
    <comment_count>7</comment_count>
      <attachid>301357</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-02-13 09:24:53 -0800</bug_when>
    <thetext>Created attachment 301357
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1276579</commentid>
    <comment_count>8</comment_count>
      <attachid>301357</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-02-13 22:22:01 -0800</bug_when>
    <thetext>Comment on attachment 301357
Patch

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

hmm, I&apos;ve just realized that what we want is already sent from web process to the ui process when showing the context, it was added long time ago in r176999, but we never exposed it in our API. So, I think it would be better to expose allowsCopy in our hit test result, and maybe other useful information not exposed.

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp:745
&gt; + * Determines whether the editing command can currently be executed in
&gt; + * the #WebKitWebView corresponding to @web_page using
&gt; + * webkit_web_view_execute_editing_command().

I wouldn&apos;t mention WebKitWebView here, people are already confused enough between the two APIs.

Determines whether the editing command can currently be executed in @web_page.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278057</commentid>
    <comment_count>9</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-02-16 18:16:29 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; hmm, I&apos;ve just realized that what we want is already sent from web process
&gt; to the ui process when showing the context, it was added long time ago in
&gt; r176999, but we never exposed it in our API. So, I think it would be better
&gt; to expose allowsCopy in our hit test result, and maybe other useful
&gt; information not exposed.

So looking at this, I at first thought it might indeed be better to expose more of this instead. But now I&apos;m not sure. I don&apos;t quite understand how to do it. What we need in Epiphany is whether cut, copy, paste, undo, and redo are allowed. WebHitTestResult only exposes Copy. I think we could get the answer for cut and paste using the existing webkit_hit_test_result_context_is_editable() and webkit_hit_test_result_context_is_selection() functions: they should be available if both are true, and not otherwise. Assuming there&apos;s no plugin container. But this feels more fragile than using the Editor. And I don&apos;t see any way to get undo/redo information via hit tests.

What do you think?

&gt; &gt; Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp:745
&gt; &gt; + * Determines whether the editing command can currently be executed in
&gt; &gt; + * the #WebKitWebView corresponding to @web_page using
&gt; &gt; + * webkit_web_view_execute_editing_command().
&gt; 
&gt; I wouldn&apos;t mention WebKitWebView here, people are already confused enough
&gt; between the two APIs.
&gt; 
&gt; Determines whether the editing command can currently be executed in
&gt; @web_page.

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278133</commentid>
    <comment_count>10</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-02-16 22:30:48 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; hmm, I&apos;ve just realized that what we want is already sent from web process
&gt; &gt; to the ui process when showing the context, it was added long time ago in
&gt; &gt; r176999, but we never exposed it in our API. So, I think it would be better
&gt; &gt; to expose allowsCopy in our hit test result, and maybe other useful
&gt; &gt; information not exposed.
&gt; 
&gt; So looking at this, I at first thought it might indeed be better to expose
&gt; more of this instead. But now I&apos;m not sure. I don&apos;t quite understand how to
&gt; do it. What we need in Epiphany is whether cut, copy, paste, undo, and redo
&gt; are allowed. WebHitTestResult only exposes Copy. I think we could get the
&gt; answer for cut and paste using the existing
&gt; webkit_hit_test_result_context_is_editable() and
&gt; webkit_hit_test_result_context_is_selection() functions: they should be
&gt; available if both are true, and not otherwise. Assuming there&apos;s no plugin
&gt; container. But this feels more fragile than using the Editor. And I don&apos;t
&gt; see any way to get undo/redo information via hit tests.
&gt; 
&gt; What do you think?
&gt; 

The problem of using the editor like your patch does is that it checks if the web page can execute the giving command. That&apos;s actually the editor associated to the main or focused frame. If the right click always focuses, then that&apos;s not a problem, though. The advantage of the hit test result is that it always refers to the most specific node where the right click happened. What I would do here, is extend hit test result to provide more editor capabilities (or state) and return a bitmask with CanCopy/CanCut/CanPaste/CanUndo/CanRedo and replace allowsCopy with that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278263</commentid>
    <comment_count>11</comment_count>
      <attachid>301357</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-02-17 08:11:28 -0800</bug_when>
    <thetext>Comment on attachment 301357
Patch

OK then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278444</commentid>
    <comment_count>12</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-02-17 14:32:39 -0800</bug_when>
    <thetext>(CCing Beth in case there&apos;s some reason that only copy was ever exposed in the past.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278496</commentid>
    <comment_count>13</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-02-17 16:11:53 -0800</bug_when>
    <thetext>Here&apos;s a first stab. Not tested yet; I&apos;ll wait for API comments first. Not really happy with how it turned out....</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278497</commentid>
    <comment_count>14</comment_count>
      <attachid>302007</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-02-17 16:13:24 -0800</bug_when>
    <thetext>Created attachment 302007
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278957</commentid>
    <comment_count>15</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-02-20 09:21:55 -0800</bug_when>
    <thetext>cgarcia:  mcatanzaro: btw, I think we can leave the new context menu api for the next cycle, and you can probably workaround the problem in ephy using dom bdings and context menu user data
mcatanzaro:  cgarcia: I don&apos;t have more time to think about it now. :(  Context menu user data is great. Do the DOM bindings provide canCut/Copy/Paste/Undo/Redo somehow...?
cgarcia:  yes
cgarcia:  in dom_document I think
mcatanzaro:  cgarcia: webkit_dom_document_query_command_enabled()
cgarcia:  right
mcatanzaro:  cgarcia: TBH if I knew that existed, I would not have bothered with writing a WebKit patch. :P</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278989</commentid>
    <comment_count>16</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-02-20 10:36:49 -0800</bug_when>
    <thetext>mcatanzaro:  cgarcia: Looks like we have to set settings.javaScriptCanAccessClipboard() and also settings.clipboardAccessPolicy()
mcatanzaro:  So DOM API looks like a no-go</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1324937</commentid>
    <comment_count>17</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-07-02 10:23:03 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #13)
&gt; Here&apos;s a first stab. Not tested yet; I&apos;ll wait for API comments first. Not
&gt; really happy with how it turned out....

Not sure why I said I was unhappy with this. It&apos;s more code than my original patch, but it seems nicer to use the hit test result for this. I&apos;ll rebase it and add a test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342322</commentid>
    <comment_count>18</comment_count>
      <attachid>319064</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-08-24 22:22:20 -0700</bug_when>
    <thetext>Created attachment 319064
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342378</commentid>
    <comment_count>19</comment_count>
      <attachid>319064</attachid>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2017-08-25 07:21:50 -0700</bug_when>
    <thetext>Comment on attachment 319064
Patch

Mac EWS are red with this patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342385</commentid>
    <comment_count>20</comment_count>
      <attachid>319080</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-08-25 07:48:48 -0700</bug_when>
    <thetext>Created attachment 319080
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350265</commentid>
    <comment_count>21</comment_count>
      <attachid>319080</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-09-19 00:33:06 -0700</bug_when>
    <thetext>Comment on attachment 319080
Patch

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

&gt; Source/WebCore/rendering/HitTestResult.cpp:599
&gt; -bool HitTestResult::allowsCopy() const
&gt; +auto HitTestResult::allowedEditCommands() const -&gt; EditCommands

You could use OptionSet instead of simple enum + static_cast

&gt; Source/WebCore/rendering/HitTestResult.h:135
&gt; +    enum EditCommands {

This should be an enum class AllowedEditCommands

&gt; Source/WebKit/Shared/API/glib/WebKitHitTestResult.cpp:510
&gt; + * webkit_hit_test_result_get_available_commands:

available commands sounds too generic, we are referring to editing commands. I&apos;m not sure about exposing an enum for this API here. I would rather expose methods to query them. It&apos;s more boilerplate, but the API is less confusing.

&gt; Source/WebKit/Shared/WebHitTestResultData.h:63
&gt; +    unsigned allowedEditCommands;

This should also be an OptionSet

&gt; Source/WebKit/UIProcess/API/gtk/WebKitHitTestResult.h:67
&gt; + * WebKitHitTestResultCommands:

So the name of the enum sounds like it&apos;s going to list commands, but it lists availability to run them

&gt; Source/WebKit/UIProcess/API/gtk/WebKitHitTestResult.h:75
&gt; + * Enum values with flags representing commands that can be performed at
&gt; + * hit test locations.

This is only about editing commands

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestContextMenu.cpp:567
&gt; +    // Copied from TestWebViewEditor. There&apos;s no way to know when the selection
&gt; +    // has been copied to the clipboard, so use a timeout source to query the
&gt; +    // clipboard. Note this function could quit early if some other text is
&gt; +    // already present in the clipboard, so this function can&apos;t be relied on to
&gt; +    // actually copy the desired text before returning, but our test only cares
&gt; +    // that *something* is copied to the clipboard.
&gt; +    webkit_web_view_execute_editing_command(test-&gt;m_webView, WEBKIT_EDITING_COMMAND_COPY);

We could move this to WebViewTest and then do test-&gt;waitUntilTextIsAvailableInClipboard().

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestContextMenu.cpp:584
&gt; +    webkit_web_view_run_javascript(test-&gt;m_webView, &quot;document.getElementById(&apos;editable&apos;).select();&quot;, nullptr, [](GObject* sourceObject, GAsyncResult* result, gpointer userData) {

Use test-&gt;runJavaScriptAndWaitUntilFinished()

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestContextMenu.cpp:593
&gt; +        auto mainLoop = static_cast&lt;GMainLoop*&gt;(userData);
&gt; +        auto webView = WEBKIT_WEB_VIEW(sourceObject);
&gt; +        GUniqueOutPtr&lt;GError&gt; error;
&gt; +        WebKitJavascriptResult* jsResult = webkit_web_view_run_javascript_finish(webView, result, &amp;error.outPtr());
&gt; +        g_assert_no_error(error.get());
&gt; +        webkit_javascript_result_unref(jsResult);
&gt; +        g_main_loop_quit(mainLoop);
&gt; +    }, test-&gt;m_mainLoop);
&gt; +    g_main_loop_run(test-&gt;m_mainLoop);

And you don&apos;t need to do all this.

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestContextMenu.cpp:605
&gt; +        webkit_web_view_run_javascript(test-&gt;m_webView, &quot;document.getElementById(&apos;editable&apos;).value;&quot;, nullptr, [](GObject* sourceObject, GAsyncResult* result, gpointer userData) {

test-&gt;runJavaScriptAndWaitUntilFinished()

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestContextMenu.cpp:621
&gt; +            JSGlobalContextRef context = webkit_javascript_result_get_global_context(jsResult);
&gt; +            JSValueRef value = webkit_javascript_result_get_value(jsResult);
&gt; +            g_assert(JSValueIsString(context, value));
&gt; +
&gt; +            JSStringRef jsStringValue = JSValueToStringCopy(context, value, nullptr);
&gt; +            gsize stringLength = JSStringGetMaximumUTF8CStringSize(jsStringValue);
&gt; +            GUniquePtr&lt;char&gt; stringValue(static_cast&lt;char*&gt;(g_malloc(stringLength)));
&gt; +            JSStringGetUTF8CString(jsStringValue, stringValue.get(), stringLength);
&gt; +            JSStringRelease(jsStringValue);
&gt; +            webkit_javascript_result_unref(jsResult);

test-&gt;javascriptResultToCString</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1351515</commentid>
    <comment_count>22</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-09-21 19:53:28 -0700</bug_when>
    <thetext>I&apos;ve made all the changes you suggested. Much better, thanks. Especially the test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1351519</commentid>
    <comment_count>23</comment_count>
      <attachid>321510</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-09-21 20:05:46 -0700</bug_when>
    <thetext>Created attachment 321510
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1351520</commentid>
    <comment_count>24</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-09-21 20:06:41 -0700</bug_when>
    <thetext>Could an owner review this patch, please?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1351521</commentid>
    <comment_count>25</comment_count>
      <attachid>321510</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-09-21 20:09:28 -0700</bug_when>
    <thetext>Comment on attachment 321510
Patch

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

&gt; Source/WebKit/Shared/API/glib/WebKitHitTestResult.cpp:252
&gt;          &quot;link-title&quot;, !hitTestResult.linkTitle.isEmpty() ? hitTestResult.linkTitle.utf8().data() : nullptr,
&gt;          &quot;link-label&quot;, !hitTestResult.linkLabel.isEmpty() ? hitTestResult.linkLabel.utf8().data() : nullptr,
&gt;          nullptr));
&gt; +    result-&gt;priv-&gt;availableEditCommands = hitTestResult.availableEditCommands;
&gt; +    return result;

Carlos, is this the proper idiomatic way to initialize a priv member that&apos;s not a GObject property? This would definitely be wrong if it was a public webkit_hit_test_result_new() method since those are not introspectable and bindings would be broken. But this is a private function, so there&apos;s no correctness issue, and I can&apos;t think of any better way to do it, so I guess it&apos;s fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1351524</commentid>
    <comment_count>26</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-09-21 20:33:18 -0700</bug_when>
    <thetext>You should be able to check this in EditorState. I don&apos;t think we should be tying this to HitTestResult.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1351527</commentid>
    <comment_count>27</comment_count>
      <attachid>321510</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-09-21 20:35:02 -0700</bug_when>
    <thetext>Comment on attachment 321510
Patch

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

r- because exposing editor states in HitTestResult is a clear layering violation.

&gt; Source/WebKit/ChangeLog:13
&gt; +        I want to fix a context menu flickering problem in Epiphany. Since we have to show the
&gt; +        WebKitContextMenu in a WebKitWebView::context-menu handler, but cannot check the
&gt; +        availability of editing commands there without using sync IPC, we currently assume all
&gt; +        editing commands are available, add them to the menu, start querying the availability with
&gt; +        webkit_web_view_can_execute_editing_command(), show the menu, and later remove them from the
&gt; +        menu once that finishes, causing the flicker.

You should be able to do that by checking EditorState.
If not, we should be sending EditorState update as we tell UI process to show the context menu.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1351630</commentid>
    <comment_count>28</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-09-22 06:41:24 -0700</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #27)
&gt; Comment on attachment 321510 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=321510&amp;action=review
&gt; 
&gt; r- because exposing editor states in HitTestResult is a clear layering
&gt; violation.

I guess there&apos;s two possible layering violations:

 * Do you not want WebCore types used in the WebKit C++ API? If we still care about this API, then I can add a matching WebKit-level enum class with functions to translate between the two.

 * Do you not want anything editor-related exposed in HitTestResult? If so, the copy availability state is already there, and I presume that Safari probably depends on that. And I think it&apos;s actually needed, see below.

&gt; You should be able to do that by checking EditorState.
&gt; If not, we should be sending EditorState update as we tell UI process to
&gt; show the context menu.

My original patch, attachment #301330, made that possible to do, but I got r- from Carlos because:

(In reply to Carlos Garcia Campos from comment #10)
&gt; The problem of using the editor like your patch does is that it checks if
&gt; the web page can execute the giving command. That&apos;s actually the editor
&gt; associated to the main or focused frame. If the right click always focuses,
&gt; then that&apos;s not a problem, though. The advantage of the hit test result is
&gt; that it always refers to the most specific node where the right click
&gt; happened. What I would do here, is extend hit test result to provide more
&gt; editor capabilities (or state) and return a bitmask with
&gt; CanCopy/CanCut/CanPaste/CanUndo/CanRedo and replace allowsCopy with that.

So that&apos;s why I took this more complicated approach. Do you have an alternative suggestion?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1351915</commentid>
    <comment_count>29</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-09-22 18:39:45 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #28)
&gt; (In reply to Ryosuke Niwa from comment #27)
&gt; &gt; Comment on attachment 321510 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=321510&amp;action=review
&gt; &gt; 
&gt; &gt; r- because exposing editor states in HitTestResult is a clear layering
&gt; &gt; violation.
&gt; 
&gt; I guess there&apos;s two possible layering violations:
&gt; 
&gt;  * Do you not want WebCore types used in the WebKit C++ API? If we still
&gt; care about this API, then I can add a matching WebKit-level enum class with
&gt; functions to translate between the two.
&gt; 
&gt;  * Do you not want anything editor-related exposed in HitTestResult? If so,
&gt; the copy availability state is already there, and I presume that Safari
&gt; probably depends on that. And I think it&apos;s actually needed, see below.

Well, that code is just wrong. As far as I can, that&apos;s a dead code at this point. We should just remove it.

&gt; &gt; You should be able to do that by checking EditorState.
&gt; &gt; If not, we should be sending EditorState update as we tell UI process to
&gt; &gt; show the context menu.
&gt; 
&gt; My original patch, attachment #301330 [details], made that possible to do,
&gt; but I got r- from Carlos because:
&gt; 
&gt; (In reply to Carlos Garcia Campos from comment #10)
&gt; &gt; The problem of using the editor like your patch does is that it checks if
&gt; &gt; the web page can execute the giving command. That&apos;s actually the editor
&gt; &gt; associated to the main or focused frame. If the right click always focuses,
&gt; &gt; then that&apos;s not a problem, though.

Well, you&apos;re still talking to Editor in which the hit test result occurred so you&apos;re still at mercy of editing code. EditorState is always reflecting the state of the currently focused frame&apos;s Editor object if that&apos;s the concern.

Also, Editor doesn&apos;t make decisions based on whether an element is focused or not. It only looks at the selection, and we always move the selection to the element upon which the user clicked or right clicked.

So, using Editor is the right thing to do here.

&gt; &gt; The advantage of the hit test result is
&gt; &gt; that it always refers to the most specific node where the right click
&gt; &gt; happened. What I would do here, is extend hit test result to provide more
&gt; &gt; editor capabilities (or state) and return a bitmask with
&gt; &gt; CanCopy/CanCut/CanPaste/CanUndo/CanRedo and replace allowsCopy with that.
&gt; 
&gt; So that&apos;s why I took this more complicated approach. Do you have an
&gt; alternative suggestion?

Here&apos;s the problem, HitTestResult sits in the layer below editing and other user interaction models. For example, there are CSS features like user-select: none which prohibits certain user actions from being operated on, and editing code is the one that respects these constraints so you should simply talk to EditorState which encapsulates and takes care of all those issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1352197</commentid>
    <comment_count>30</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-09-25 08:18:51 -0700</bug_when>
    <thetext>OK, I&apos;ll investigate EditorState then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1352858</commentid>
    <comment_count>31</comment_count>
      <attachid>321875</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-09-26 14:49:27 -0700</bug_when>
    <thetext>Created attachment 321875
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1352863</commentid>
    <comment_count>32</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-09-26 14:52:46 -0700</bug_when>
    <thetext>Hey Ryosuke, could you approve or reject this new approach, please? This adds canCut/Copy/Paste/Delete/Undo/Redo methods to EditorState. They could go into the GTK platform portion of the EditorState, since they&apos;re only used on GTK, but they should work fine on other platforms too and I imagine they&apos;ll be useful. I also removed canCopy from HitTestResult like you suggested. If you&apos;re OK with this, then I&apos;ll cook up some tests and then ask Carlos to do the final review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1352865</commentid>
    <comment_count>33</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-09-26 14:54:24 -0700</bug_when>
    <thetext>I&apos;ll also need to remember to update the bug title and the changelog entries, since the new patch does not do what the title says it does.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1352866</commentid>
    <comment_count>34</comment_count>
      <attachid>321875</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-09-26 14:56:11 -0700</bug_when>
    <thetext>Comment on attachment 321875
Patch

Oh yeah, this is much better but you&apos;d have to hide it under IncludePostLayoutDataHint section. Otherwise, some of those function calls can trigger a sync layout and massively regress Speedometer benchmark.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353865</commentid>
    <comment_count>35</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-09-27 14:58:55 -0700</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #34)
&gt; Oh yeah, this is much better but you&apos;d have to hide it under
&gt; IncludePostLayoutDataHint section. Otherwise, some of those function calls
&gt; can trigger a sync layout and massively regress Speedometer benchmark.

OK, but now this introduces problems when the post layout data isn&apos;t available. I&apos;m still trying to understand the code that schedules the editor state updates, but this is causing problems because flushPendingEditorStateUpdate is never called when running TestWebViewEditor. I see that it&apos;s only ever called by AcceleratedDrawingArea, CoordinatedLayerTreeHost, DrawingAreaImpl, or (Mac-only) TiledCoreAnimationDrawingArea, which is all graphics code I don&apos;t understand. But I wonder if it&apos;s because there&apos;s not an real window or any actual drawing when running API tests. I see flushPendingEditorStateUpdate is called all the time when running in browser mode. Continuing to investigate.

(Note: there&apos;s no context menu at all in this test.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353879</commentid>
    <comment_count>36</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-09-27 15:33:23 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #35)
&gt; (In reply to Ryosuke Niwa from comment #34)
&gt; &gt; Oh yeah, this is much better but you&apos;d have to hide it under
&gt; &gt; IncludePostLayoutDataHint section. Otherwise, some of those function calls
&gt; &gt; can trigger a sync layout and massively regress Speedometer benchmark.
&gt; 
&gt; OK, but now this introduces problems when the post layout data isn&apos;t
&gt; available. I&apos;m still trying to understand the code that schedules the editor
&gt; state updates, but this is causing problems because
&gt; flushPendingEditorStateUpdate is never called when running
&gt; TestWebViewEditor. I see that it&apos;s only ever called by
&gt; AcceleratedDrawingArea, CoordinatedLayerTreeHost, DrawingAreaImpl, or
&gt; (Mac-only) TiledCoreAnimationDrawingArea, which is all graphics code I don&apos;t
&gt; understand. But I wonder if it&apos;s because there&apos;s not an real window or any
&gt; actual drawing when running API tests. I see flushPendingEditorStateUpdate
&gt; is called all the time when running in browser mode. Continuing to
&gt; investigate.
&gt; 
&gt; (Note: there&apos;s no context menu at all in this test.)

The idea behind flushing pending EditorState updates is that we can defer computation of the EditorState until the next display flush. On iOS, we ferry this information across to the UI process via RemoteLayerTreeTransaction, and on Mac, we dispatch a pending EditorState update when flushing layers, after layout has happened.

So in many places, instead of performing layout to compute editor state, we instead schedule an editor state update by setting a flag.

To ensure consistency in API tests on Cocoa platforms w.r.t. editor states, we have testing hooks to wait until the next presentation update, forcing a drawing area flush it necessary, so by the time the UI process learns that the presentation update is finished, we will have computed in the web process and received in the UI process any pending editor state update that has been scheduled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353943</commentid>
    <comment_count>37</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-09-27 17:01:36 -0700</bug_when>
    <thetext>Thanks for the tips, Wenson.

(In reply to Wenson Hsieh from comment #36)
&gt; To ensure consistency in API tests on Cocoa platforms w.r.t. editor states,
&gt; we have testing hooks to wait until the next presentation update, forcing a
&gt; drawing area flush it necessary, so by the time the UI process learns that
&gt; the presentation update is finished, we will have computed in the web
&gt; process and received in the UI process any pending editor state update that
&gt; has been scheduled.

I&apos;ll start looking for these hooks since I&apos;ll probably need something similar for GTK/WPE... if you could point me in the right direction, that&apos;d be appreciated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353955</commentid>
    <comment_count>38</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-09-27 17:18:37 -0700</bug_when>
    <thetext>I found _doAfterNextPresentationUpdate in WKWebView.mm. Hm....</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353989</commentid>
    <comment_count>39</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-09-27 19:14:01 -0700</bug_when>
    <thetext>I think that for GTK/WPE we can&apos;t really wait for presentation updates, because our platform API doesn&apos;t allow for having private internal functions on the API objects. So we can&apos;t add a presentation hook accessible to API tests without exposing it in our public API. Now, we might eventually need to do that anyway (it&apos;s probably required for bug #164180), but that&apos;s not this bug....

Anyway, we probably don&apos;t need to, because the tests already wait for the load finished event. It works if I add a call to sendEditorStateUpdate() at the top of WebPage::didFinishLoad. Pretty sure that&apos;s both harmless and very much not correct. Will investigate more tomorrow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1354046</commentid>
    <comment_count>40</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-09-27 23:26:07 -0700</bug_when>
    <thetext>g_signal_connect_swapped(webView, &quot;draw&quot;, G_CALLBACK(webViewDrawCallback), mainLoop);
gtk_widget_queue_draw(webView);
g_main_loop_run(mainLoop);

static gboolean webViewDrawCallback(GMainLoop* mainLoop)
{
    g_main_loop_quit(mainLoop);
    return FALSE;
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1354047</commentid>
    <comment_count>41</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-09-27 23:27:50 -0700</bug_when>
    <thetext>Ah, and yes, I think you need the web view to be in a toplevel to ensure it receives draw events.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1354125</commentid>
    <comment_count>42</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-09-28 09:32:16 -0700</bug_when>
    <thetext>Yes, that works in combination with packing the web view into a temporary window. Yay!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1354391</commentid>
    <comment_count>43</comment_count>
      <attachid>322148</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-09-28 17:25:51 -0700</bug_when>
    <thetext>Created attachment 322148
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1354392</commentid>
    <comment_count>44</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-09-28 17:28:13 -0700</bug_when>
    <thetext>Phew... this patch is starting to feel like an odyssey.

Ryosuke, do you want to review the changes I made to post layout state?

Carlos, I think it&apos;s ready for API review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1354481</commentid>
    <comment_count>45</comment_count>
      <attachid>322148</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-09-29 01:21:48 -0700</bug_when>
    <thetext>Comment on attachment 322148
Patch

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

&gt; Source/WebKit/UIProcess/API/glib/WebKitEditorState.cpp:36
&gt; + * #WebKitEditorState represents the state of a #WebKitWebView editor.

This is on purpose, we don&apos;t use # for the class in its own section, because it makes a link to this point.

&gt; Source/WebKit/UIProcess/API/glib/WebKitEditorState.cpp:41
&gt; + * The #WebKitEditorState may not return accurate results if its
&gt; + * associated #WebKitWebView is not visible.

This just adds more confusion, we should either explain in detail the thing, or not say anything. You had problems in unit tests, in real cases it&apos;s not a problem because you always use the editor state on a web view that is mapped on a toplevel window.

&gt; Source/WebKit/UIProcess/API/glib/WebKitEditorState.cpp:58
&gt; +    unsigned isCutAvailable : 1;
&gt; +    unsigned isCopyAvailable : 1;
&gt; +    unsigned isPasteAvailable : 1;
&gt; +    unsigned isUndoAvailable : 1;
&gt; +    unsigned isRedoAvailable : 1;

Maybe we can use flags internally, even if they are exposed as separate functions to the API.

&gt; Source/WebKit/UIProcess/API/glib/WebKitEditorState.cpp:163
&gt; + * webkit_editor_state_get_is_cut_available:

I don&apos;t like get_is, I prefer just is

&gt; Source/WebKit/UIProcess/API/glib/WebKitEditorState.cpp:172
&gt; +gboolean webkit_editor_state_get_is_cut_available(WebKitEditorState* editorState)

So, this is the sync version of webkit_web_view_can_execute_editing_command? We can really deprecate the existing API, because it supports more commands, but for a few of them this duplicated. If we are going to keep both, we should at least explain when to use one or the other. Maybe we should consider cut/copy/paste/undo/redo special cases in webkit_web_view_can_execute_editing_command and use the editor state internally to avoid the IPC and return immediately.

&gt; Source/WebKit/UIProcess/API/glib/WebKitEditorState.cpp:189
&gt; +gboolean webkit_editor_state_get_is_copy_available(WebKitEditorState* editorState)

And same comments for all other commands.

&gt; Tools/TestWebKitAPI/Tests/WebKitGtk/TestWebViewEditor.cpp:48
&gt; +    void waitUntilDrawAfterLoadFinished()
&gt; +    {
&gt; +        waitUntilLoadFinished();
&gt; +        triggerDrawAndWaitUntilFinished();
&gt; +    }

This is not saving much, I think tests can call both methods directly.

&gt; Tools/TestWebKitAPI/Tests/WebKitGtk/TestWebViewEditor.cpp:67
&gt; +        if (!strcmp(command, WEBKIT_EDITING_COMMAND_CUT))
&gt; +            g_assert(m_canExecuteEditingCommand == webkit_editor_state_get_is_cut_available(editorState()));
&gt; +        else if (!strcmp(command, WEBKIT_EDITING_COMMAND_COPY))
&gt; +            g_assert(m_canExecuteEditingCommand == webkit_editor_state_get_is_copy_available(editorState()));
&gt; +        else if (!strcmp(command, WEBKIT_EDITING_COMMAND_PASTE))
&gt; +            g_assert(m_canExecuteEditingCommand == webkit_editor_state_get_is_paste_available(editorState()));
&gt; +        // FIXME: Figure out how to add tests for undo and redo. It will probably require using user
&gt; +        // scripts to message the UI process when the content has been altered.
&gt; +        else if (!strcmp(command, WEBKIT_EDITING_COMMAND_UNDO))
&gt; +            g_assert(m_canExecuteEditingCommand == webkit_editor_state_get_is_undo_available(editorState()));
&gt; +        else if (!strcmp(command, WEBKIT_EDITING_COMMAND_REDO))
&gt; +            g_assert(m_canExecuteEditingCommand == webkit_editor_state_get_is_redo_available(editorState()));

This is the proof we are duplicating the functionality in the API.

&gt; Tools/TestWebKitAPI/glib/WebKitGLib/WebViewTest.h:70
&gt; +    void waitUntilTextIsAvailableInClipboard();

Does this really belong here? It&apos;s only used by editor tests, no?

&gt; Tools/TestWebKitAPI/glib/WebKitGLib/gtk/WebViewTestGtk.cpp:97
&gt; +    g_main_loop_quit(mainLoop);
&gt; +    return FALSE;

This approach works for editor tests that don&apos;t really care about the repaint itself, but you added this to WebViewTest to make it generic. triggerDrawAndWaitUntilFinished() sounds like when done a draw has happened, but we are quitting the loop before it happens, if the test is using this, for example to take a screenshot of the web view, the contents will not be updated. So, I would either leave this in the editor tests as it is, or if you leave it here as generic, schedule an idle here to quit the main loop on the next iterations, after the draw has been done.

&gt; Tools/TestWebKitAPI/glib/WebKitGLib/gtk/WebViewTestGtk.cpp:100
&gt; +void WebViewTest::triggerDrawAndWaitUntilFinished()

repaintAndWaitUntilFinished?

&gt; Tools/TestWebKitAPI/glib/WebKitGLib/gtk/WebViewTestGtk.cpp:106
&gt; +    bool shouldDestroyTemporaryWindow = false;
&gt; +    if (!m_parentWindow) {
&gt; +        showInWindow(GTK_WINDOW_TOPLEVEL);
&gt; +        shouldDestroyTemporaryWindow = true;
&gt; +    }

Tests that will use this, should do this explicitly using showInWindowAndWaitUntilMapped at the beginning.

&gt; Tools/TestWebKitAPI/glib/WebKitGLib/gtk/WebViewTestGtk.cpp:129
&gt; +    g_timeout_add(50, [](gpointer userData) -&gt; gboolean {
&gt; +        auto* mainLoop = static_cast&lt;GMainLoop*&gt;(userData);
&gt; +        if (gtk_clipboard_wait_is_text_available(gtk_clipboard_get(GDK_SELECTION_CLIPBOARD))) {
&gt; +            g_main_loop_quit(mainLoop);
&gt; +            return G_SOURCE_REMOVE;
&gt; +        }
&gt; +        return G_SOURCE_CONTINUE;
&gt; +    }, m_mainLoop);
&gt; +    g_main_loop_run(m_mainLoop);

This can enter an infinite loop, the triesCount was there for a reason.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1354508</commentid>
    <comment_count>46</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-09-29 07:31:46 -0700</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #45)
&gt; This is on purpose, we don&apos;t use # for the class in its own section, because
&gt; it makes a link to this point.

OK. We should fix WebKitWebView then, since that&apos;s the class I checked first for an example.

&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitEditorState.cpp:41
&gt; &gt; + * The #WebKitEditorState may not return accurate results if its
&gt; &gt; + * associated #WebKitWebView is not visible.
&gt; 
&gt; This just adds more confusion, we should either explain in detail the thing,
&gt; or not say anything. You had problems in unit tests, in real cases it&apos;s not
&gt; a problem because you always use the editor state on a web view that is
&gt; mapped on a toplevel window.

It would be too much information to explain in detail, so I&apos;ll omit it.

&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitEditorState.cpp:58
&gt; &gt; +    unsigned isCutAvailable : 1;
&gt; &gt; +    unsigned isCopyAvailable : 1;
&gt; &gt; +    unsigned isPasteAvailable : 1;
&gt; &gt; +    unsigned isUndoAvailable : 1;
&gt; &gt; +    unsigned isRedoAvailable : 1;
&gt; 
&gt; Maybe we can use flags internally, even if they are exposed as separate
&gt; functions to the API.

We could, but I prefer using bools in EditorState to parallel Editor, and there&apos;s not much value in converting to flags in WebKitEditorState where it&apos;s easier to just use the bitfields.
 
&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitEditorState.cpp:163
&gt; &gt; + * webkit_editor_state_get_is_cut_available:
&gt; 
&gt; I don&apos;t like get_is, I prefer just is

OK.

I had asked you about this earlier. :P I settled on _get_is because that seems to be GLib style. But I don&apos;t really care; I&apos;ll change it to _is.

&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitEditorState.cpp:172
&gt; &gt; +gboolean webkit_editor_state_get_is_cut_available(WebKitEditorState* editorState)
&gt; 
&gt; So, this is the sync version of webkit_web_view_can_execute_editing_command?
&gt; We can really deprecate the existing API, because it supports more commands,
&gt; but for a few of them this duplicated. If we are going to keep both, we
&gt; should at least explain when to use one or the other. Maybe we should
&gt; consider cut/copy/paste/undo/redo special cases in
&gt; webkit_web_view_can_execute_editing_command and use the editor state
&gt; internally to avoid the IPC and return immediately.

It seems reasonable to use WebKitEditorState to implement webkit_web_view_can_execute_editing_command for those special cases. I&apos;ll do that.

I don&apos;t think we need to explain when to use one or the other, because they should both always return the same thing... it&apos;s fine to have two different ways of doing things. The advantage of can_execute_editing_command is obvious (it can handle dozens of commands) and the advantage of WebKitEditorState is also obvious (it returns immediately).
&gt; 
&gt; &gt; Tools/TestWebKitAPI/Tests/WebKitGtk/TestWebViewEditor.cpp:48
&gt; &gt; +    void waitUntilDrawAfterLoadFinished()
&gt; &gt; +    {
&gt; &gt; +        waitUntilLoadFinished();
&gt; &gt; +        triggerDrawAndWaitUntilFinished();
&gt; &gt; +    }
&gt; 
&gt; This is not saving much, I think tests can call both methods directly.

As you prefer.

&gt; &gt; Tools/TestWebKitAPI/glib/WebKitGLib/WebViewTest.h:70
&gt; &gt; +    void waitUntilTextIsAvailableInClipboard();
&gt; 
&gt; Does this really belong here? It&apos;s only used by editor tests, no?

Hm, it can go where you prefer. I figured it could be useful for other tests (as it was for TestContextMenu) in the future, but for now it&apos;s only used by TestWebViewEditor, indeed. You suggested moving it to WebViewTest in comment #21, but that was when I was using it in TestContextMenu as well.
 
&gt; &gt; Tools/TestWebKitAPI/glib/WebKitGLib/gtk/WebViewTestGtk.cpp:97
&gt; &gt; +    g_main_loop_quit(mainLoop);
&gt; &gt; +    return FALSE;
&gt; 
&gt; This approach works for editor tests that don&apos;t really care about the
&gt; repaint itself, but you added this to WebViewTest to make it generic.
&gt; triggerDrawAndWaitUntilFinished() sounds like when done a draw has happened,
&gt; but we are quitting the loop before it happens, if the test is using this,
&gt; for example to take a screenshot of the web view, the contents will not be
&gt; updated. So, I would either leave this in the editor tests as it is, or if
&gt; you leave it here as generic, schedule an idle here to quit the main loop on
&gt; the next iterations, after the draw has been done.

Good point. I&apos;d prefer to use an idle.

&gt; &gt; Tools/TestWebKitAPI/glib/WebKitGLib/gtk/WebViewTestGtk.cpp:100
&gt; &gt; +void WebViewTest::triggerDrawAndWaitUntilFinished()
&gt; 
&gt; repaintAndWaitUntilFinished?

I like keeping the word &quot;trigger&quot; since otherwise it&apos;s not really clear from the name of the function what there is to wait for. Also, it&apos;s not necessarily a repaint as it could be the first time the web view is painted!

&gt; &gt; Tools/TestWebKitAPI/glib/WebKitGLib/gtk/WebViewTestGtk.cpp:106
&gt; &gt; +    bool shouldDestroyTemporaryWindow = false;
&gt; &gt; +    if (!m_parentWindow) {
&gt; &gt; +        showInWindow(GTK_WINDOW_TOPLEVEL);
&gt; &gt; +        shouldDestroyTemporaryWindow = true;
&gt; &gt; +    }
&gt; 
&gt; Tests that will use this, should do this explicitly using
&gt; showInWindowAndWaitUntilMapped at the beginning.

Probably. I&apos;ll investigate this.

&gt; &gt; Tools/TestWebKitAPI/glib/WebKitGLib/gtk/WebViewTestGtk.cpp:129
&gt; &gt; +    g_timeout_add(50, [](gpointer userData) -&gt; gboolean {
&gt; &gt; +        auto* mainLoop = static_cast&lt;GMainLoop*&gt;(userData);
&gt; &gt; +        if (gtk_clipboard_wait_is_text_available(gtk_clipboard_get(GDK_SELECTION_CLIPBOARD))) {
&gt; &gt; +            g_main_loop_quit(mainLoop);
&gt; &gt; +            return G_SOURCE_REMOVE;
&gt; &gt; +        }
&gt; &gt; +        return G_SOURCE_CONTINUE;
&gt; &gt; +    }, m_mainLoop);
&gt; &gt; +    g_main_loop_run(m_mainLoop);
&gt; 
&gt; This can enter an infinite loop, the triesCount was there for a reason.

But that&apos;s fine. If it infinite loops, then the test is broken, and it will time out. I was more worried that 150ms might not be enough on a resource-constrained device, or even on a fast computer if it&apos;s overloaded with other tasks. That&apos;s unlikely, of course, but it could lead to spurious failures.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1355220</commentid>
    <comment_count>47</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-10-02 07:02:01 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #46)
&gt; &gt; &gt; Tools/TestWebKitAPI/glib/WebKitGLib/gtk/WebViewTestGtk.cpp:106
&gt; &gt; &gt; +    bool shouldDestroyTemporaryWindow = false;
&gt; &gt; &gt; +    if (!m_parentWindow) {
&gt; &gt; &gt; +        showInWindow(GTK_WINDOW_TOPLEVEL);
&gt; &gt; &gt; +        shouldDestroyTemporaryWindow = true;
&gt; &gt; &gt; +    }
&gt; &gt; 
&gt; &gt; Tests that will use this, should do this explicitly using
&gt; &gt; showInWindowAndWaitUntilMapped at the beginning.
&gt; 
&gt; Probably. I&apos;ll investigate this.

Unfortunately it doesn&apos;t work in this case. I suppose that probably means the API is broken and shouldn&apos;t be landed. It will need to wait until next week, because it will require more serious debugging than I want to do now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1355221</commentid>
    <comment_count>48</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-10-02 07:03:18 -0700</bug_when>
    <thetext>I&apos;m uploading my latest version (broken) just to have a backup here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1355222</commentid>
    <comment_count>49</comment_count>
      <attachid>322374</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-10-02 07:03:47 -0700</bug_when>
    <thetext>Created attachment 322374
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1355223</commentid>
    <comment_count>50</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-10-02 07:05:06 -0700</bug_when>
    <thetext>Attachment 322374 did not pass style-queue:


WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/UIProcess/API/wpe/WebKitEditorState.h&quot;
WARNING: File exempt from style guide. Skipping: &quot;Tools/TestWebKitAPI/Tests/WebKitGtk/TestWebViewEditor.cpp&quot;
ERROR: Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:3072:  One line control clauses should not use braces.  [whitespace/braces] [4]
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/UIProcess/API/gtk/WebKitEditorState.h&quot;
Total errors found: 1 in 16 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>1364916</commentid>
    <comment_count>51</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-10-26 11:02:27 -0700</bug_when>
    <thetext>&gt; This approach works for editor tests that don&apos;t really care about the
&gt; repaint itself, but you added this to WebViewTest to make it generic.
&gt; triggerDrawAndWaitUntilFinished() sounds like when done a draw has happened,
&gt; but we are quitting the loop before it happens, if the test is using this,
&gt; for example to take a screenshot of the web view, the contents will not be
&gt; updated. So, I would either leave this in the editor tests as it is, or if
&gt; you leave it here as generic, schedule an idle here to quit the main loop on
&gt; the next iterations, after the draw has been done.

I wound up moving it back to EditorTest, since I&apos;ve spent too much time trying to make your suggestion work.
 
&gt; &gt; Tools/TestWebKitAPI/glib/WebKitGLib/gtk/WebViewTestGtk.cpp:106
&gt; &gt; +    bool shouldDestroyTemporaryWindow = false;
&gt; &gt; +    if (!m_parentWindow) {
&gt; &gt; +        showInWindow(GTK_WINDOW_TOPLEVEL);
&gt; &gt; +        shouldDestroyTemporaryWindow = true;
&gt; &gt; +    }
&gt; 
&gt; Tests that will use this, should do this explicitly using
&gt; showInWindowAndWaitUntilMapped at the beginning.

I agree, but I&apos;ve spent way too long trying to make it work, and this is such a minor point to block this serious bug. I&apos;ll upload a new patch with a FIXME here; will you accept that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1364923</commentid>
    <comment_count>52</comment_count>
      <attachid>325033</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-10-26 11:14:05 -0700</bug_when>
    <thetext>Created attachment 325033
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366006</commentid>
    <comment_count>53</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-10-30 07:20:58 -0700</bug_when>
    <thetext>Committed r224179: &lt;https://trac.webkit.org/changeset/224179&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366046</commentid>
    <comment_count>54</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-10-30 09:43:59 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #51)
&gt; I agree, but I&apos;ve spent way too long trying to make it work, and this is
&gt; such a minor point to block this serious bug. I&apos;ll upload a new patch with a
&gt; FIXME here; will you accept that?

(He said yes. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1372772</commentid>
    <comment_count>55</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-11-16 13:10:41 -0800</bug_when>
    <thetext>This changed introduced additional sync IPC from the web process to the UI process inside WebPage::editorState(), which is showing up in profiles:

   75 WebCore::LayerFlushScheduler::layerFlushCallback()  (in WebCore) + 28  [0x10cceddbc]
     74 WebKit::TiledCoreAnimationDrawingArea::flushLayers()  (in WebKit) + 54  [0x10b0a75da]
     ! 72 WebKit::WebPage::sendEditorStateUpdate()  (in WebKit) + 79  [0x10b2f965f]
     ! : 47 WebKit::WebPage::editorState(WebKit::WebPage::IncludePostLayoutDataHint) const  (in WebKit) + 375  [0x10b2f36c1]
     ! : | 47 WebKit::WebEditorClient::canUndo() const  (in WebKit) + 103  [0x10b0f1dd7]
     ! : |   44 bool IPC::Connection::sendSync&lt;Messages::WebPageProxy::CanUndoRedo&gt;(Messages::WebPageProxy::CanUndoRedo&amp;&amp;, Messages::WebPageProxy::CanUndoRedo::Reply&amp;&amp;, unsigned long long, WTF::Seconds, WTF::OptionSet&lt;IPC::SendSyncOption&gt;)  (in WebKit) + 170  [0x10b2bcaf8]
     ! : |   + 44 IPC::Connection::sendSyncMessage(unsigned long long, std::__1::unique_ptr&lt;IPC::Encoder, std::__1::default_delete&lt;IPC::Encoder&gt; &gt;, WTF::Seconds, WTF::OptionSet&lt;IPC::SendSyncOption&gt;)  (in WebKit) + 292  [0x10b13b4c8]
     ! : |   +   44 IPC::Connection::waitForSyncReply(unsigned long long, WTF::Seconds, WTF::OptionSet&lt;IPC::SendSyncOption&gt;)  (in WebKit) + 162  [0x10b13bc2a]
     ! : |   +     44 WTF::BinarySemaphore::wait(WTF::TimeWithDynamicClockType)  (in JavaScriptCore) + 73  [0x10f25e139]
     ! : |   +       44 WTF::ThreadCondition::timedWait(WTF::Mutex&amp;, double)  (in JavaScriptCore) + 63  [0x10e6fd6ff]
     ! : |   +         44 _pthread_cond_wait  (in libsystem_pthread.dylib) + 732  [0x7fff7b282662]


This is a really bad time to do sync IPC, because we&apos;re in layerFlushCallback() which is blocking painting. Also, this stuff:

        postLayoutData.canCut = editor.canCut();
        postLayoutData.canCopy = editor.canCopy();
        postLayoutData.canPaste = editor.canPaste();
        postLayoutData.canUndo = editor.canUndo();
        postLayoutData.canRedo = editor.canRedo();

is stupid to do in the web process because what&apos;s the point of doing sync IPC to the UI process to get data that you just turn around and send back to the UI process?

I&apos;d like to roll back this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1372774</commentid>
    <comment_count>56</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-11-16 13:18:11 -0800</bug_when>
    <thetext>&gt;         postLayoutData.canCut = editor.canCut();
&gt;         postLayoutData.canCopy = editor.canCopy();
&gt;         postLayoutData.canPaste = editor.canPaste();
&gt;         postLayoutData.canUndo = editor.canUndo();
&gt;         postLayoutData.canRedo = editor.canRedo();

This also triggers IPCs from the web process to the UI process and back 5 times...I wonder if we can batch these together into a single struct? (or alternately, just a single unsigned value, and have these as flags).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1372780</commentid>
    <comment_count>57</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-11-16 13:34:21 -0800</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #55)
&gt; I&apos;d like to roll back this change.

Investigating. Will roll it out if I don&apos;t see an easy fix.

(In reply to Simon Fraser (smfr) from comment #55)
&gt; is stupid to do in the web process because what&apos;s the point of doing sync
&gt; IPC to the UI process to get data that you just turn around and send back to
&gt; the UI process?

Yes, that&apos;s definitely not how this is supposed to work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1372788</commentid>
    <comment_count>58</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-11-16 13:59:30 -0800</bug_when>
    <thetext>So, what went wrong here is I did not sufficiently investigate the implementations of Editor::canUndo and Editor::canRedo. I did not realize those operations require sync IPC to the UI process. So these definitely need to be removed from the editor state flush; they should be computed in the UI process instead.

canCut/canCopy/canPaste are all decided by the Editor in the web process without resorting to IPC to the WebEditorClient. So these need to be in the editor state flush for GTK/WPE, where this is needed to implement public API. (It&apos;s not being used by other ports and could be #ifdefed out, but as long as these three are not impacting performance, it seems better to avoid unneeded #ifdefs.)

(In reply to Wenson Hsieh from comment #56)
&gt; &gt;         postLayoutData.canCut = editor.canCut();
&gt; &gt;         postLayoutData.canCopy = editor.canCopy();
&gt; &gt;         postLayoutData.canPaste = editor.canPaste();
&gt; &gt;         postLayoutData.canUndo = editor.canUndo();
&gt; &gt;         postLayoutData.canRedo = editor.canRedo();
&gt; 
&gt; This also triggers IPCs from the web process to the UI process and back 5
&gt; times...I wonder if we can batch these together into a single struct? (or
&gt; alternately, just a single unsigned value, and have these as flags).

I think it&apos;s only twice, for canUndo and canRedo. Correct? Still twice too many. ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1372793</commentid>
    <comment_count>59</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-11-16 14:05:18 -0800</bug_when>
    <thetext>Simon, Wenson, I&apos;m working on a patch to try to eliminate the canUndo/canRedo, while leaving the other three calls. I assume canCut/canCopy/canPaste are not going to show up in profiles (if so, then this needs a rethink). Is that OK?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1372810</commentid>
    <comment_count>60</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-11-16 14:29:59 -0800</bug_when>
    <thetext>I think so. Reported bug #179797.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1372818</commentid>
    <comment_count>61</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-11-16 14:50:55 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #58)
&gt; So, what went wrong here is I did not sufficiently investigate the
&gt; implementations of Editor::canUndo and Editor::canRedo. I did not realize
&gt; those operations require sync IPC to the UI process. So these definitely
&gt; need to be removed from the editor state flush; they should be computed in
&gt; the UI process instead.
&gt; 
&gt; canCut/canCopy/canPaste are all decided by the Editor in the web process
&gt; without resorting to IPC to the WebEditorClient. So these need to be in the
&gt; editor state flush for GTK/WPE, where this is needed to implement public
&gt; API. (It&apos;s not being used by other ports and could be #ifdefed out, but as
&gt; long as these three are not impacting performance, it seems better to avoid
&gt; unneeded #ifdefs.)
&gt; 
&gt; (In reply to Wenson Hsieh from comment #56)
&gt; &gt; &gt;         postLayoutData.canCut = editor.canCut();
&gt; &gt; &gt;         postLayoutData.canCopy = editor.canCopy();
&gt; &gt; &gt;         postLayoutData.canPaste = editor.canPaste();
&gt; &gt; &gt;         postLayoutData.canUndo = editor.canUndo();
&gt; &gt; &gt;         postLayoutData.canRedo = editor.canRedo();
&gt; &gt; 
&gt; &gt; This also triggers IPCs from the web process to the UI process and back 5
&gt; &gt; times...I wonder if we can batch these together into a single struct? (or
&gt; &gt; alternately, just a single unsigned value, and have these as flags).
&gt; 
&gt; I think it&apos;s only twice, for canUndo and canRedo. Correct? Still twice too
&gt; many. ;)

Ah, that&apos;s correct — the calls for cut, copy and paste don&apos;t IPC out to the UI process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1398276</commentid>
    <comment_count>62</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-02-11 11:29:52 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #60)
&gt; I think so. Reported bug #179797.

This patch was never rolled out because I fixed the issue in bug #179797 instead. Closing again.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>301330</attachid>
            <date>2017-02-12 21:07:26 -0800</date>
            <delta_ts>2017-02-13 09:24:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-168219-20170212230454.patch</filename>
            <type>text/plain</type>
            <size>11866</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEyMjEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNWU4MjdjYmUwMzhmOWFi
ZTNlNDczNjgxYzg2ZGJmYTEwOTg4YzA4ZC4uNzZhZjE5ZWViZTI1ZWE2Yzc0OGIxMWQyYjI3Y2M2
MjA3MjY3YWE5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM2IEBACiAyMDE3LTAyLTEyICBNaWNo
YWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KIAorICAgICAgICBbR1RLXSBB
ZGQgd2Via2l0X3dlYl9lZGl0b3JfaXNfZWRpdGluZ19jb21tYW5kX2VuYWJsZWQoKQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY4MjE5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSSB3YW50IGl0IHRvIGZp
eCBhIGNvbnRleHQgbWVudSBmbGlja2VyaW5nIHByb2JsZW0gaW4gRXBpcGhhbnkuIFNpbmNlIHdl
IGhhdmUgdG8gc2hvdyB0aGUKKyAgICAgICAgV2ViS2l0Q29udGV4dE1lbnUgaW4gYSBXZWJLaXRX
ZWJWaWV3Ojpjb250ZXh0LW1lbnUgaGFuZGxlciwgYnV0IGNhbm5vdCBjaGVjayB0aGUKKyAgICAg
ICAgYXZhaWxhYmlsaXR5IG9mIGVkaXRpbmcgY29tbWFuZHMgdGhlcmUgd2l0aG91dCB1c2luZyBz
eW5jIElQQywgd2UgY3VycmVudGx5IGFzc3VtZSBhbGwKKyAgICAgICAgZWRpdGluZyBjb21tYW5k
cyBhcmUgYXZhaWxhYmxlLCBhZGQgdGhlbSB0byB0aGUgbWVudSwgc3RhcnQgcXVlcnlpbmcgdGhl
IGF2YWlsYWJpbGl0eSB3aXRoCisgICAgICAgIHdlYmtpdF93ZWJfdmlld19jYW5fZXhlY3V0ZV9l
ZGl0aW5nX2NvbW1hbmQoKSwgc2hvdyB0aGUgbWVudSwgYW5kIGxhdGVyIHJlbW92ZSB0aGVtIGZy
b20gdGhlCisgICAgICAgIG1lbnUgb25jZSB0aGF0IGZpbmlzaGVzLCBjYXVzaW5nIHRoZSBmbGlj
a2VyLgorCisgICAgICAgIEFkZCB3ZWJraXRfd2ViX2VkaXRvcl9pc19lZGl0aW5nX2NvbW1hbmRf
ZW5hYmxlZCgpIHNvIHRoYXQgY29udGV4dCBtZW51IGl0ZW0gYXZhaWxhYmlsaXR5CisgICAgICAg
IGNhbiBpbnN0ZWFkIGJlIGRlY2lkZWQgaW4gdGhlIHdlYiBwcm9jZXNzIGFuZCB0aGVuIHNlbnQg
dG8gdGhlIFVJIHByb2Nlc3MgdmlhIHRoZQorICAgICAgICBXZWJLaXRDb250ZXh0TWVudSB1c2Vy
IGRhdGEuIFRoaXMgaXMgc3VwZXJpb3IgdG8gc2VuZGluZyB0aGUgV2ViS2l0Q29udGV4dE1lbnUg
ZnJvbSB0aGUgd2ViCisgICAgICAgIHByb2Nlc3MgdG8gdGhlIFVJIHByb2Nlc3Mgd2l0aG91dCB0
aGlzIGluZm9ybWF0aW9uLCBhbmQgdGhlbiBzdWJzZXF1ZW50bHkgcGVyZm9ybWluZyBzZXZlcmFs
CisgICAgICAgIElQQyBxdWVyaWVzIGZyb20gdGhlIFVJIHByb2Nlc3MgdG8gdGhlIHdlYiBwcm9j
ZXNzIHRvIGNoZWNrIHRoZSBhdmFpbGFiaWxpdHkgb2YgZWRpdGluZworICAgICAgICBjb21tYW5k
cy4gQW5kIGl0IGF2b2lkcyB0aGUgZmxpY2tlci4KKworICAgICAgICBOb3RlOiBJIGRlY2lkZWQg
bm90IHRvIG5hbWUgaXQgd2Via2l0X3dlYl9lZGl0b3JfY2FuX2V4ZWN1dGVfZWRpdGluZ19jb21t
YW5kKCkgYmVjYXVzZQorICAgICAgICB0aGVyZSdzIHN0aWxsIG5vIEFQSSB0byBkbyB0aGF0IGZy
b20gV2ViS2l0V2ViRWRpdG9yLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
RWRpdGluZ0NvbW1hbmRzLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJr
aXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQ6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZ3RrL1dlYktpdFdlYkVkaXRvci5jcHA6CisgICAgICAgICh3ZWJraXRfd2ViX2Vk
aXRvcl9nZXRfcGFnZSk6CisgICAgICAgICh3ZWJraXRfd2ViX2VkaXRvcl9pc19lZGl0aW5nX2Nv
bW1hbmRfZW5hYmxlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Z3RrL1dlYktpdFdlYkVkaXRvci5oOgorCisyMDE3LTAyLTEyICBNaWNoYWVsIENhdGFuemFybyAg
PG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KKwogICAgICAgICBbR1RLXSBVbnJldmlld2VkLCBtaW5v
ciBkb2N1bWVudGF0aW9uIGltcHJvdmVtZW50cwogCiAgICAgICAgICogVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViVmlldy5jcHA6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRFZGl0aW5nQ29tbWFuZHMuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdEVkaXRpbmdDb21tYW5kcy5oCmluZGV4IGEzYmQwZmFiNmIwZGY4
ODI1MTA4MWU0NGFmZjk2OWMzODVhNDNjOGYuLjE2NWY1NTZmMWMzZDg2OGVhYmQ4MzJkNjhiMDJj
YzdhNTBjYjE4NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdEVkaXRpbmdDb21tYW5kcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdEVkaXRpbmdDb21tYW5kcy5oCkBAIC0xMTksNiArMTE5LDggQEAgR19CRUdJ
Tl9ERUNMUwogICovCiAjZGVmaW5lIFdFQktJVF9FRElUSU5HX0NPTU1BTkRfQ1JFQVRFX0xJTksg
IkNyZWF0ZUxpbmsiCiAKKy8qIElmIGV4cG9zaW5nIG5ldyBlZGl0aW5nIGNvbW1hbmRzLCBhbHNv
IHVwZGF0ZSBXZWJLaXRXZWJFZGl0b3IuaC4gKi8KKwogR19FTkRfREVDTFMKIAogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJn
dGstNC4wLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2Rv
Y3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0CmluZGV4IDIyYjU5NmQxYWM3YTFhYTgwMGI3
M2UxYjIwZDA2NmUyYjk1ODFkZDMuLjY5ZDc0MzRmYjI3MmNhNTJlY2EwMzkyOGVkNWYxMTA5ZDgy
YjA4NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mv
d2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0CkBAIC0xMzUzLDYgKzEz
NTMsNyBAQCB3ZWJraXRfd2ViX3BhZ2VfZ2V0X3R5cGUKIDxGSUxFPldlYktpdFdlYkVkaXRvcjwv
RklMRT4KIFdlYktpdFdlYkVkaXRvcgogd2Via2l0X3dlYl9lZGl0b3JfZ2V0X3BhZ2UKK3dlYmtp
dF93ZWJfZWRpdG9yX2lzX2VkaXRpbmdfY29tbWFuZF9lbmFibGVkCiAKIDxTVUJTRUNUSU9OIFN0
YW5kYXJkPgogV2ViS2l0V2ViRWRpdG9yQ2xhc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJFZGl0b3IuY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdl
YkVkaXRvci5jcHAKaW5kZXggNWUzNjUzZGU3ZmEyZDdhZDc4M2Y5ODE5ODcxYWRlZTUwNzc0ZmY3
NC4uNzA1ZjRlMTcxMTc2ODI2YmRkZjQ0MDc5NDQ3MmI1MjllMzVkNTJmZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdl
YkVkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ3RrL1dlYktpdFdlYkVkaXRvci5jcHAKQEAgLTEyMCw1ICsxMjAsMjcgQEAgV2ViS2l0
V2ViRWRpdG9yKiB3ZWJraXRXZWJFZGl0b3JDcmVhdGUoV2ViS2l0V2ViUGFnZSogd2ViUGFnZSkK
ICAqLwogV2ViS2l0V2ViUGFnZSogd2Via2l0X3dlYl9lZGl0b3JfZ2V0X3BhZ2UoV2ViS2l0V2Vi
RWRpdG9yKiBlZGl0b3IpCiB7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dF
Ql9FRElUT1IoZWRpdG9yKSwgbnVsbHB0cik7CisKICAgICByZXR1cm4gZWRpdG9yLT5wcml2LT53
ZWJQYWdlOwogfQorCisvKioKKyAqIHdlYmtpdF93ZWJfZWRpdG9yX2lzX2VkaXRpbmdfY29tbWFu
ZF9lbmFibGVkOgorICogQGVkaXRvcjogYSAjV2ViS2l0V2ViRWRpdG9yCisgKiBAY29tbWFuZDog
dGhlIGVkaXRpbmcgY29tbWFuZAorICoKKyAqIERldGVybWluZXMgd2hldGhlciB0aGUgZWRpdGlu
ZyBjb21tYW5kIGNhbiBjdXJyZW50bHkgYmUgZXhlY3V0ZWQgaW4KKyAqIHRoZSAjV2ViS2l0V2Vi
VmlldyBjb3JyZXNwb25kaW5nIHRvIEBlZGl0b3IgdXNpbmcKKyAqIHdlYmtpdF93ZWJfdmlld19l
eGVjdXRlX2VkaXRpbmdfY29tbWFuZCgpLgorICoKKyAqIFJldHVybnM6ICVUUlVFIGlmIHRoZSBj
b21tYW5kIGNhbiBiZSBleGVjdXRlZAorICoKKyAqIFNpbmNlOiAyLjE2CisgKi8KK2dib29sZWFu
IHdlYmtpdF93ZWJfZWRpdG9yX2lzX2VkaXRpbmdfY29tbWFuZF9lbmFibGVkKFdlYktpdFdlYkVk
aXRvciogZWRpdG9yLCBjb25zdCBnY2hhciogY29tbWFuZCkKK3sKKyAgICBnX3JldHVybl92YWxf
aWZfZmFpbChXRUJLSVRfSVNfV0VCX0VESVRPUihlZGl0b3IpLCBGQUxTRSk7CisKKyAgICByZXR1
cm4gd2Via2l0V2ViUGFnZUdldFBhZ2UoZWRpdG9yLT5wcml2LT53ZWJQYWdlKS0+aXNFZGl0aW5n
Q29tbWFuZEVuYWJsZWQoU3RyaW5nOjpmcm9tVVRGOChjb21tYW5kKSk7Cit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0
V2ViRWRpdG9yLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9ndGsvV2ViS2l0V2ViRWRpdG9yLmgKaW5kZXggMGNmZTlmMDA4MmFmNjkzYzJiNDdlZmE3ODM2
MjNlMDQwNzRkNzhmMi4uMDhiYzE4YmNlZWM2Nzg3NzhmZmM2ZWUxNjE2ZGIxNWJlY2Y5NmEzNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Z3RrL1dlYktpdFdlYkVkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJFZGl0b3IuaApAQCAtMzAsNiArMzAsMTYgQEAK
IAogR19CRUdJTl9ERUNMUwogCisvKiBEdXBsaWNhdGVkIGluIFdlYktpdEVkaXRpbmdDb21tYW5k
cy5oLiAqLworI2RlZmluZSBXRUJLSVRfRURJVElOR19DT01NQU5EX0NVVCAgICAgICAgICAgIkN1
dCIKKyNkZWZpbmUgV0VCS0lUX0VESVRJTkdfQ09NTUFORF9DT1BZICAgICAgICAgICJDb3B5Igor
I2RlZmluZSBXRUJLSVRfRURJVElOR19DT01NQU5EX1BBU1RFICAgICAgICAgIlBhc3RlIgorI2Rl
ZmluZSBXRUJLSVRfRURJVElOR19DT01NQU5EX1NFTEVDVF9BTEwgICAgIlNlbGVjdEFsbCIKKyNk
ZWZpbmUgV0VCS0lUX0VESVRJTkdfQ09NTUFORF9VTkRPICAgICAgICAgICJVbmRvIgorI2RlZmlu
ZSBXRUJLSVRfRURJVElOR19DT01NQU5EX1JFRE8gICAgICAgICAgIlJlZG8iCisjZGVmaW5lIFdF
QktJVF9FRElUSU5HX0NPTU1BTkRfSU5TRVJUX0lNQUdFICAiSW5zZXJ0SW1hZ2UiCisjZGVmaW5l
IFdFQktJVF9FRElUSU5HX0NPTU1BTkRfQ1JFQVRFX0xJTksgICAiQ3JlYXRlTGluayIKKwogI2Rl
ZmluZSBXRUJLSVRfVFlQRV9XRUJfRURJVE9SICAgICAgICAgICAgICAgKHdlYmtpdF93ZWJfZWRp
dG9yX2dldF90eXBlKCkpCiAjZGVmaW5lIFdFQktJVF9XRUJfRURJVE9SKG9iaikgICAgICAgICAg
ICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9UWVBFX1dFQl9F
RElUT1IsIFdlYktpdFdlYkVkaXRvcikpCiAjZGVmaW5lIFdFQktJVF9JU19XRUJfRURJVE9SKG9i
aikgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksIFdFQktJVF9U
WVBFX1dFQl9FRElUT1IpKQpAQCAtNjAsNiArNzAsMTAgQEAgd2Via2l0X3dlYl9lZGl0b3JfZ2V0
X3R5cGUgKHZvaWQpOwogV0VCS0lUX0FQSSBXZWJLaXRXZWJQYWdlICoKIHdlYmtpdF93ZWJfZWRp
dG9yX2dldF9wYWdlIChXZWJLaXRXZWJFZGl0b3IgKmVkaXRvcik7CiAKK1dFQktJVF9BUEkgZ2Jv
b2xlYW4KK3dlYmtpdF93ZWJfZWRpdG9yX2lzX2VkaXRpbmdfY29tbWFuZF9lbmFibGVkIChXZWJL
aXRXZWJFZGl0b3IgKmVkaXRvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBnY2hhciAgICAgKmNvbW1hbmQpOworCiBHX0VORF9ERUNMUwogCiAj
ZW5kaWYgLy8gV2ViS2l0V2ViRWRpdG9yX2gKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlZTllMDlkZGNjYmE4NjQ4YmNjNWY3ZTRmNmEzMzNkMDk5
ZDc3ZWFiLi4zNjljMzRkZjg3NWE3NmJhMTAyMGQ4MDcyMWE4Mzg4ZWVhZThlM2Q2IDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjEg
QEAKIDIwMTctMDItMTIgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29t
PgogCisgICAgICAgIFtHVEtdIEFkZCB3ZWJraXRfd2ViX2VkaXRvcl9pc19lZGl0aW5nX2NvbW1h
bmRfZW5hYmxlZCgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNjgyMTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUZXN0IGl0LiBFbnN1cmUgdGhlIHJlc3VsdHMgYXJlIGFsd2F5cyBpbiBzeW5jIHdpdGgK
KyAgICAgICAgd2Via2l0X3dlYl92aWV3X2Nhbl9leGVjdXRlX2VkaXRpbmdfY29tbWFuZCgpLgor
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJWaWV3RWRp
dG9yLmNwcDoKKyAgICAgICAgKGJlZm9yZUFsbCk6CisgICAgICAgIChhZnRlckFsbCk6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1dlYkV4dGVuc2lvblRlc3QuY3Bw
OgorICAgICAgICAobWV0aG9kQ2FsbENhbGxiYWNrKToKKworMjAxNy0wMi0xMiAgTWljaGFlbCBD
YXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CisKICAgICAgICAgVW5yZXZpZXdlZCwg
c2tpcCBmbGFreSBXZWJLaXRQcmludE9wZXJhdGlvbi9jdXN0b20td2lkZ2V0IHRlc3QKIAogICAg
ICAgICAqIFNjcmlwdHMvcnVuLWd0ay10ZXN0czoKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViVmlld0VkaXRvci5jcHAgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYlZpZXdFZGl0b3IuY3BwCmluZGV4IGQy
MGM3OTQ0ZjgwNDQ1NGM3MWE4ZGFkOTk5ODU5ZWIyZjYxYTlkNmIuLjY3YTgyOWEzMTYyY2U2YzJl
N2M2YTc3ZWY2ZTNiM2RhNjE2YmNjZDEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViVmlld0VkaXRvci5jcHAKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJWaWV3RWRpdG9yLmNwcApAQCAtMTgsOSAr
MTgsMTIgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViS2l0VGVz
dEJ1cy5oIgogI2luY2x1ZGUgIldlYlZpZXdUZXN0LmgiCiAjaW5jbHVkZSA8d3RmL2dsaWIvR1Jl
ZlB0ci5oPgogCitzdGF0aWMgV2ViS2l0VGVzdEJ1cyogYnVzOworCiBjbGFzcyBFZGl0b3JUZXN0
OiBwdWJsaWMgV2ViVmlld1Rlc3QgewogcHVibGljOgogICAgIE1BS0VfR0xJQl9URVNUX0ZJWFRV
UkUoRWRpdG9yVGVzdCk7CkBAIC0zMyw4ICszNiwxMiBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9j
YW5FeGVjdXRlRWRpdGluZ0NvbW1hbmQoZmFsc2UpCiAgICAgICAgICwgbV90cmllc0NvdW50KDAp
CiAgICAgICAgICwgbV9lZGl0b3JTdGF0ZShudWxscHRyKQorICAgICAgICAsIG1fZXh0ZW5zaW9u
QnVzTmFtZShnX3N0cmR1cF9wcmludGYoIm9yZy53ZWJraXQuZ3RrLldlYkV4dGVuc2lvblRlc3Ql
dSIsIHNfd2ViRXh0ZW5zaW9uSUQpKQogICAgIHsKICAgICAgICAgZ3RrX2NsaXBib2FyZF9jbGVh
cihtX2NsaXBib2FyZCk7CisKKyAgICAgICAgbV9EQnVzUHJveHkgPSBhZG9wdEdSZWYoYnVzLT5j
cmVhdGVQcm94eShtX2V4dGVuc2lvbkJ1c05hbWUuZ2V0KCksCisgICAgICAgICAgICAiL29yZy93
ZWJraXQvZ3RrL1dlYkV4dGVuc2lvblRlc3QiLCAib3JnLndlYmtpdC5ndGsuV2ViRXh0ZW5zaW9u
VGVzdCIsIG1fbWFpbkxvb3ApKTsKICAgICB9CiAKICAgICBzdGF0aWMgdm9pZCBjYW5FeGVjdXRl
RWRpdGluZ0NvbW1hbmRSZWFkeUNhbGxiYWNrKEdPYmplY3QqLCBHQXN5bmNSZXN1bHQqIHJlc3Vs
dCwgRWRpdG9yVGVzdCogdGVzdCkKQEAgLTUwLDYgKzU3LDIxIEBAIHB1YmxpYzoKICAgICAgICAg
bV9jYW5FeGVjdXRlRWRpdGluZ0NvbW1hbmQgPSBmYWxzZTsKICAgICAgICAgd2Via2l0X3dlYl92
aWV3X2Nhbl9leGVjdXRlX2VkaXRpbmdfY29tbWFuZChtX3dlYlZpZXcsIGNvbW1hbmQsIDAsIHJl
aW50ZXJwcmV0X2Nhc3Q8R0FzeW5jUmVhZHlDYWxsYmFjaz4oY2FuRXhlY3V0ZUVkaXRpbmdDb21t
YW5kUmVhZHlDYWxsYmFjayksIHRoaXMpOwogICAgICAgICBnX21haW5fbG9vcF9ydW4obV9tYWlu
TG9vcCk7CisKKyAgICAgICAgLy8gTm93IG1fY2FuRXhlY3V0ZUVkaXRpbmdDb21tYW5kIGhhcyB0
aGUgYW5zd2VyIG9idGFpbmVkIHZpYSB0aGUgVUkKKyAgICAgICAgLy8gcHJvY2VzcyBBUEkuIE1h
a2Ugc3VyZSB0aGUgd2ViIHByb2Nlc3MgQVBJIGdpdmVzIHRoZSBzYW1lIHJlc3VsdC4KKyAgICAg
ICAgR1JlZlB0cjxHVmFyaWFudD4gcmVzdWx0ID0gYWRvcHRHUmVmKGdfZGJ1c19wcm94eV9jYWxs
X3N5bmMoCisgICAgICAgICAgICBtX0RCdXNQcm94eS5nZXQoKSwKKyAgICAgICAgICAgICJJc0Vk
aXRpbmdDb21tYW5kRW5hYmxlZCIsCisgICAgICAgICAgICBnX3ZhcmlhbnRfbmV3KCIodHMpIiwg
d2Via2l0X3dlYl92aWV3X2dldF9wYWdlX2lkKG1fd2ViVmlldyksIGNvbW1hbmQpLAorICAgICAg
ICAgICAgR19EQlVTX0NBTExfRkxBR1NfTk9ORSwKKyAgICAgICAgICAgIC0xLCBudWxscHRyLCBu
dWxscHRyKSk7CisgICAgICAgIGdfYXNzZXJ0KHJlc3VsdCk7CisKKyAgICAgICAgZ2Jvb2xlYW4g
ZWRpdGFibGU7CisgICAgICAgIGdfdmFyaWFudF9nZXQocmVzdWx0LmdldCgpLCAiKGIpIiwgJmVk
aXRhYmxlKTsKKyAgICAgICAgZ19hc3NlcnQoZWRpdGFibGUgPT0gbV9jYW5FeGVjdXRlRWRpdGlu
Z0NvbW1hbmQpOworCiAgICAgICAgIHJldHVybiBtX2NhbkV4ZWN1dGVFZGl0aW5nQ29tbWFuZDsK
ICAgICB9CiAKQEAgLTEyMSw2ICsxNDMsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBtX2NhbkV4ZWN1
dGVFZGl0aW5nQ29tbWFuZDsKICAgICBzaXplX3QgbV90cmllc0NvdW50OwogICAgIFdlYktpdEVk
aXRvclN0YXRlKiBtX2VkaXRvclN0YXRlOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gbV9leHRlbnNp
b25CdXNOYW1lOworICAgIEdSZWZQdHI8R0RCdXNQcm94eT4gbV9EQnVzUHJveHk7CiB9OwogCiBz
dGF0aWMgY29uc3QgY2hhciogc2VsZWN0ZWRTcGFuSFRNTEZvcm1hdCA9CkBAIC00NTUsNiArNDc5
LDEwIEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3RWRpdG9yQ3JlYXRlTGluayhFZGl0b3JUZXN0
KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogCiB2b2lkIGJlZm9yZUFsbCgpCiB7CisgICAgYnVzID0g
bmV3IFdlYktpdFRlc3RCdXMoKTsKKyAgICBpZiAoIWJ1cy0+cnVuKCkpCisgICAgICAgIHJldHVy
bjsKKwogICAgIEVkaXRvclRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJlZGl0YWJsZS9lZGl0
YWJsZSIsIHRlc3RXZWJWaWV3RWRpdG9yRWRpdGFibGUpOwogICAgIEVkaXRvclRlc3Q6OmFkZCgi
V2ViS2l0V2ViVmlldyIsICJjdXQtY29weS1wYXN0ZS9ub24tZWRpdGFibGUiLCB0ZXN0V2ViVmll
d0VkaXRvckN1dENvcHlQYXN0ZU5vbkVkaXRhYmxlKTsKICAgICBFZGl0b3JUZXN0OjphZGQoIldl
YktpdFdlYlZpZXciLCAiY3V0LWNvcHktcGFzdGUvZWRpdGFibGUiLCB0ZXN0V2ViVmlld0VkaXRv
ckN1dENvcHlQYXN0ZUVkaXRhYmxlKTsKQEAgLTQ2Nyw0ICs0OTUsNSBAQCB2b2lkIGJlZm9yZUFs
bCgpCiAKIHZvaWQgYWZ0ZXJBbGwoKQogeworICAgIGRlbGV0ZSBidXM7CiB9CmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvV2ViRXh0ZW5zaW9uVGVzdC5j
cHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvV2ViRXh0ZW5zaW9uVGVz
dC5jcHAKaW5kZXggZjYzMmJjMzcxZWIwYWRiMWViOTIyYjEzZDQyOTk5N2VjZTQ1NmJjYS4uNDEw
ZmJhNTNjZjAzY2JiNjNkMTk3OWM4YjAwMGE3NDYzODRlNmJkNiAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1dlYkV4dGVuc2lvblRlc3QuY3BwCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9XZWJFeHRlbnNpb25UZXN0LmNw
cApAQCAtNTAsNiArNTAsMTEgQEAgc3RhdGljIGNvbnN0IGNoYXIgaW50cm9zcGVjdGlvblhNTFtd
ID0KICAgICAiICA8L21ldGhvZD4iCiAgICAgIiAgPG1ldGhvZCBuYW1lPSdSZW1vdmVBVlBsdWdp
bnNGcm9tR1NUUmVnaXN0cnknPiIKICAgICAiICA8L21ldGhvZD4iCisgICAgIiAgPG1ldGhvZCBu
YW1lPSdJc0VkaXRpbmdDb21tYW5kRW5hYmxlZCc+IgorICAgICIgICAgPGFyZyB0eXBlPSd0JyBu
YW1lPSdwYWdlSUQnIGRpcmVjdGlvbj0naW4nLz4iCisgICAgIiAgICA8YXJnIHR5cGU9J3MnIG5h
bWU9J2NvbW1hbmQnIGRpcmVjdGlvbj0naW4nLz4iCisgICAgIiAgICA8YXJnIHR5cGU9J2InIG5h
bWU9J2VuYWJsZWQnIGRpcmVjdGlvbj0nb3V0Jy8+IgorICAgICIgIDwvbWV0aG9kPiIKICAgICAi
ICA8c2lnbmFsIG5hbWU9J0RvY3VtZW50TG9hZGVkJy8+IgogICAgICIgIDxzaWduYWwgbmFtZT0n
Rm9ybUNvbnRyb2xzQXNzb2NpYXRlZCc+IgogICAgICIgICA8YXJnIHR5cGU9J3MnIG5hbWU9J2Zv
cm1JZHMnIGRpcmVjdGlvbj0nb3V0Jy8+IgpAQCAtMzYzLDYgKzM2OCwxNyBAQCBzdGF0aWMgdm9p
ZCBtZXRob2RDYWxsQ2FsbGJhY2soR0RCdXNDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBjb25zdCBj
aGFyKiBzZW5kZXIsCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgZ19kYnVzX21l
dGhvZF9pbnZvY2F0aW9uX3JldHVybl92YWx1ZShpbnZvY2F0aW9uLCBudWxscHRyKTsKKyAgICB9
IGVsc2UgaWYgKCFnX3N0cmNtcDAobWV0aG9kTmFtZSwgIklzRWRpdGluZ0NvbW1hbmRFbmFibGVk
IikpIHsKKyAgICAgICAgdWludDY0X3QgcGFnZUlEOworICAgICAgICBjb25zdCBjaGFyKiBjb21t
YW5kOworICAgICAgICBnX3ZhcmlhbnRfZ2V0KHBhcmFtZXRlcnMsICIodCZzKSIsICZwYWdlSUQs
ICZjb21tYW5kKTsKKyAgICAgICAgV2ViS2l0V2ViUGFnZSogcGFnZSA9IGdldFdlYlBhZ2UoV0VC
S0lUX1dFQl9FWFRFTlNJT04odXNlckRhdGEpLCBwYWdlSUQsIGludm9jYXRpb24pOworICAgICAg
ICBpZiAoIXBhZ2UpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgV2ViS2l0V2ViRWRp
dG9yKiBlZGl0b3IgPSB3ZWJraXRfd2ViX3BhZ2VfZ2V0X2VkaXRvcihwYWdlKTsKKyAgICAgICAg
Ym9vbCBlbmFibGVkID0gd2Via2l0X3dlYl9lZGl0b3JfaXNfZWRpdGluZ19jb21tYW5kX2VuYWJs
ZWQoZWRpdG9yLCBjb21tYW5kKTsKKyAgICAgICAgZ19kYnVzX21ldGhvZF9pbnZvY2F0aW9uX3Jl
dHVybl92YWx1ZShpbnZvY2F0aW9uLCBnX3ZhcmlhbnRfbmV3KCIoYikiLCBlbmFibGVkKSk7CiAg
ICAgfQogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>301357</attachid>
            <date>2017-02-13 09:24:53 -0800</date>
            <delta_ts>2017-02-17 16:13:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-168219-20170213112221.patch</filename>
            <type>text/plain</type>
            <size>12084</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEyMjEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNWU4MjdjYmUwMzhmOWFi
ZTNlNDczNjgxYzg2ZGJmYTEwOTg4YzA4ZC4uMTkyZjVlZTk1NmYwYzlmNzI2ODM3YmQxYzE5N2Ix
YTIzNmMyN2FmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE3LTAyLTEzICBNaWNo
YWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBB
ZGQgd2Via2l0X3dlYl9wYWdlX2Nhbl9leGVjdXRlX2VkaXRpbmdfY29tbWFuZCgpCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjgyMTkKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJIHdhbnQgaXQgdG8gZml4
IGEgY29udGV4dCBtZW51IGZsaWNrZXJpbmcgcHJvYmxlbSBpbiBFcGlwaGFueS4gU2luY2Ugd2Ug
aGF2ZSB0byBzaG93IHRoZQorICAgICAgICBXZWJLaXRDb250ZXh0TWVudSBpbiBhIFdlYktpdFdl
YlZpZXc6OmNvbnRleHQtbWVudSBoYW5kbGVyLCBidXQgY2Fubm90IGNoZWNrIHRoZQorICAgICAg
ICBhdmFpbGFiaWxpdHkgb2YgZWRpdGluZyBjb21tYW5kcyB0aGVyZSB3aXRob3V0IHVzaW5nIHN5
bmMgSVBDLCB3ZSBjdXJyZW50bHkgYXNzdW1lIGFsbAorICAgICAgICBlZGl0aW5nIGNvbW1hbmRz
IGFyZSBhdmFpbGFibGUsIGFkZCB0aGVtIHRvIHRoZSBtZW51LCBzdGFydCBxdWVyeWluZyB0aGUg
YXZhaWxhYmlsaXR5IHdpdGgKKyAgICAgICAgd2Via2l0X3dlYl92aWV3X2Nhbl9leGVjdXRlX2Vk
aXRpbmdfY29tbWFuZCgpLCBzaG93IHRoZSBtZW51LCBhbmQgbGF0ZXIgcmVtb3ZlIHRoZW0gZnJv
bSB0aGUKKyAgICAgICAgbWVudSBvbmNlIHRoYXQgZmluaXNoZXMsIGNhdXNpbmcgdGhlIGZsaWNr
ZXIuCisKKyAgICAgICAgQWRkIHdlYmtpdF93ZWJfcGFnZV9jYW5fZXhlY3V0ZV9lZGl0aW5nX2Nv
bW1hbmQoKSBzbyB0aGF0IGNvbnRleHQgbWVudSBpdGVtIGF2YWlsYWJpbGl0eQorICAgICAgICBj
YW4gaW5zdGVhZCBiZSBkZWNpZGVkIGluIHRoZSB3ZWIgcHJvY2VzcyBhbmQgdGhlbiBzZW50IHRv
IHRoZSBVSSBwcm9jZXNzIHZpYSB0aGUKKyAgICAgICAgV2ViS2l0Q29udGV4dE1lbnUgdXNlciBk
YXRhLiBUaGlzIGlzIHN1cGVyaW9yIHRvIHNlbmRpbmcgdGhlIFdlYktpdENvbnRleHRNZW51IGZy
b20gdGhlIHdlYgorICAgICAgICBwcm9jZXNzIHRvIHRoZSBVSSBwcm9jZXNzIHdpdGhvdXQgdGhp
cyBpbmZvcm1hdGlvbiwgYW5kIHRoZW4gc3Vic2VxdWVudGx5IHBlcmZvcm1pbmcgc2V2ZXJhbAor
ICAgICAgICBJUEMgcXVlcmllcyBmcm9tIHRoZSBVSSBwcm9jZXNzIHRvIHRoZSB3ZWIgcHJvY2Vz
cyB0byBjaGVjayB0aGUgYXZhaWxhYmlsaXR5IG9mIGVkaXRpbmcKKyAgICAgICAgY29tbWFuZHMu
IEFuZCBpdCBhdm9pZHMgdGhlIGZsaWNrZXIuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRFZGl0aW5nQ29tbWFuZHMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9k
b2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFnZS5jcHA6CisgICAgICAgICh3ZWJraXRf
d2ViX3BhZ2VfY2FuX2V4ZWN1dGVfZWRpdGluZ19jb21tYW5kKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFnZS5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay93ZWJraXQtd2ViLWV4dGVuc2lvbi5oOgor
CiAyMDE3LTAyLTEyICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4K
IAogICAgICAgICBbR1RLXSBVbnJldmlld2VkLCBtaW5vciBkb2N1bWVudGF0aW9uIGltcHJvdmVt
ZW50cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
RWRpdGluZ0NvbW1hbmRzLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRFZGl0aW5nQ29tbWFuZHMuaAppbmRleCBhM2JkMGZhYjZiMGRmODgyNTEwODFlNDRhZmY5Njlj
Mzg1YTQzYzhmLi5iOWRmODRhZjI5NzQwZmFkMzQzOWFkODhhMGUxNzRkN2Q2ZmMyOGYxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRFZGl0aW5nQ29t
bWFuZHMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRFZGl0
aW5nQ29tbWFuZHMuaApAQCAtMTcsNyArMTcsNyBAQAogICogQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCiAgKi8KIAotI2lmICFkZWZpbmVkKF9fV0VCS0lUMl9IX0lOU0lERV9fKSAmJiAhZGVm
aW5lZChXRUJLSVQyX0NPTVBJTEFUSU9OKQorI2lmICFkZWZpbmVkKF9fV0VCS0lUMl9IX0lOU0lE
RV9fKSAmJiAhZGVmaW5lZChXRUJLSVQyX0NPTVBJTEFUSU9OKSAmJiAhZGVmaW5lZChfX1dFQktJ
VF9XRUJfRVhURU5TSU9OX0hfSU5TSURFX18pCiAjZXJyb3IgIk9ubHkgPHdlYmtpdDIvd2Via2l0
Mi5oPiBjYW4gYmUgaW5jbHVkZWQgZGlyZWN0bHkuIgogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlv
bnMudHh0IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3Rr
LTQuMC1zZWN0aW9ucy50eHQKaW5kZXggMjJiNTk2ZDFhYzdhMWFhODAwYjczZTFiMjBkMDY2ZTJi
OTU4MWRkMy4uYWU4NDYwYTUzYzEyMWEzNzMyYjljNTEwMDgwNjE2ZWVjMGE1YTU1NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQu
MC1zZWN0aW9ucy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9j
cy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKQEAgLTEzMzQsNiArMTMzNCw3IEBAIHdlYmtp
dF93ZWJfcGFnZV9nZXRfaWQKIHdlYmtpdF93ZWJfcGFnZV9nZXRfdXJpCiB3ZWJraXRfd2ViX3Bh
Z2VfZ2V0X21haW5fZnJhbWUKIHdlYmtpdF93ZWJfcGFnZV9nZXRfZWRpdG9yCit3ZWJraXRfd2Vi
X3BhZ2VfY2FuX2V4ZWN1dGVfZWRpdGluZ19jb21tYW5kCiAKIDxTVUJTRUNUSU9OIFN0YW5kYXJk
PgogV2ViS2l0V2ViUGFnZUNsYXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFnZS5jcHAK
aW5kZXggMzdkYTEwZTdiYzA1N2RhZDY4YTI1ZDI5MGFhYTNiMDVhMmFmNDFlMC4uMmM4OGJiMWZj
MTg3ZjE2MmJhMDhlM2FkMzYzNTkwZTE2MDM1MzE4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYlBhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJL
aXRXZWJQYWdlLmNwcApAQCAtNzM0LDMgKzczNCwyMyBAQCBXZWJLaXRXZWJFZGl0b3IqIHdlYmtp
dF93ZWJfcGFnZV9nZXRfZWRpdG9yKFdlYktpdFdlYlBhZ2UqIHdlYlBhZ2UpCiAKICAgICByZXR1
cm4gd2ViUGFnZS0+cHJpdi0+d2ViRWRpdG9yLmdldCgpOwogfQorCisvKioKKyAqIHdlYmtpdF93
ZWJfcGFnZV9jYW5fZXhlY3V0ZV9lZGl0aW5nX2NvbW1hbmQ6CisgKiBAd2ViX3BhZ2U6IGEgI1dl
YktpdFdlYlBhZ2UKKyAqIEBjb21tYW5kOiB0aGUgZWRpdGluZyBjb21tYW5kCisgKgorICogRGV0
ZXJtaW5lcyB3aGV0aGVyIHRoZSBlZGl0aW5nIGNvbW1hbmQgY2FuIGN1cnJlbnRseSBiZSBleGVj
dXRlZCBpbgorICogdGhlICNXZWJLaXRXZWJWaWV3IGNvcnJlc3BvbmRpbmcgdG8gQHdlYl9wYWdl
IHVzaW5nCisgKiB3ZWJraXRfd2ViX3ZpZXdfZXhlY3V0ZV9lZGl0aW5nX2NvbW1hbmQoKS4KKyAq
CisgKiBSZXR1cm5zOiAlVFJVRSBpZiB0aGUgY29tbWFuZCBjYW4gYmUgZXhlY3V0ZWQKKyAqCisg
KiBTaW5jZTogMi4xNgorICovCitnYm9vbGVhbiB3ZWJraXRfd2ViX3BhZ2VfY2FuX2V4ZWN1dGVf
ZWRpdGluZ19jb21tYW5kKFdlYktpdFdlYlBhZ2UqIHBhZ2UsIGNvbnN0IGdjaGFyKiBjb21tYW5k
KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfUEFHRShwYWdlKSwg
RkFMU0UpOworCisgICAgcmV0dXJuIHBhZ2UtPnByaXYtPndlYlBhZ2UtPmlzRWRpdGluZ0NvbW1h
bmRFbmFibGVkKFN0cmluZzo6ZnJvbVVURjgoY29tbWFuZCkpOworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYlBh
Z2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9X
ZWJLaXRXZWJQYWdlLmgKaW5kZXggMDMzYjNjZDhiZjBiYjk0NmNhZDZkMDQwN2NlNGM3Nzg5OGU5
NGM1My4uZGMxMmUwMzdkNTQ2ZWU5YjUyZmQzMDY2NDA3ZDUxNjdkYzI5MzdiMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktp
dFdlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9ndGsvV2ViS2l0V2ViUGFnZS5oCkBAIC01NywyMiArNTcsMjYgQEAgc3RydWN0IF9XZWJL
aXRXZWJQYWdlQ2xhc3MgewogfTsKIAogV0VCS0lUX0FQSSBHVHlwZQotd2Via2l0X3dlYl9wYWdl
X2dldF90eXBlICAgICAgICAgKHZvaWQpOword2Via2l0X3dlYl9wYWdlX2dldF90eXBlICAgICAg
ICAgICAgICAgICAgICAodm9pZCk7CiAKIFdFQktJVF9BUEkgV2ViS2l0RE9NRG9jdW1lbnQgKgot
d2Via2l0X3dlYl9wYWdlX2dldF9kb21fZG9jdW1lbnQgKFdlYktpdFdlYlBhZ2UgKndlYl9wYWdl
KTsKK3dlYmtpdF93ZWJfcGFnZV9nZXRfZG9tX2RvY3VtZW50ICAgICAgICAgICAgKFdlYktpdFdl
YlBhZ2UgKndlYl9wYWdlKTsKIAogV0VCS0lUX0FQSSBndWludDY0Ci13ZWJraXRfd2ViX3BhZ2Vf
Z2V0X2lkICAgICAgICAgICAoV2ViS2l0V2ViUGFnZSAqd2ViX3BhZ2UpOword2Via2l0X3dlYl9w
YWdlX2dldF9pZCAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViUGFnZSAqd2ViX3BhZ2Up
OwogCiBXRUJLSVRfQVBJIGNvbnN0IGdjaGFyICoKLXdlYmtpdF93ZWJfcGFnZV9nZXRfdXJpICAg
ICAgICAgIChXZWJLaXRXZWJQYWdlICp3ZWJfcGFnZSk7Cit3ZWJraXRfd2ViX3BhZ2VfZ2V0X3Vy
aSAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJQYWdlICp3ZWJfcGFnZSk7CiAKIFdFQktJ
VF9BUEkgV2ViS2l0RnJhbWUgKgotd2Via2l0X3dlYl9wYWdlX2dldF9tYWluX2ZyYW1lICAgKFdl
YktpdFdlYlBhZ2UgKndlYl9wYWdlKTsKK3dlYmtpdF93ZWJfcGFnZV9nZXRfbWFpbl9mcmFtZSAg
ICAgICAgICAgICAgKFdlYktpdFdlYlBhZ2UgKndlYl9wYWdlKTsKIAogV0VCS0lUX0FQSSBXZWJL
aXRXZWJFZGl0b3IgKgotd2Via2l0X3dlYl9wYWdlX2dldF9lZGl0b3IgICAgICAgKFdlYktpdFdl
YlBhZ2UgKndlYl9wYWdlKTsKK3dlYmtpdF93ZWJfcGFnZV9nZXRfZWRpdG9yICAgICAgICAgICAg
ICAgICAgKFdlYktpdFdlYlBhZ2UgKndlYl9wYWdlKTsKKworV0VCS0lUX0FQSSBnYm9vbGVhbgor
d2Via2l0X3dlYl9wYWdlX2Nhbl9leGVjdXRlX2VkaXRpbmdfY29tbWFuZCAoV2ViS2l0V2ViUGFn
ZSAqd2ViX3BhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBnY2hhciAgICpjb21tYW5kKTsKIAogR19FTkRfREVDTFMKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL3dlYmtpdC13
ZWItZXh0ZW5zaW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9ndGsvd2Via2l0LXdlYi1leHRlbnNpb24uaAppbmRleCA3ZmY2ZDc3N2YwYWRhNDQyYTRk
ZjIwNzdmMzc4ZDZhYmQyNDZiYWY1Li5hZTcyY2YxZTE1MDNmMDM0MDY1MDc3Y2Y2ZGUwMGZkN2U2
N2UwOWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9ndGsvd2Via2l0LXdlYi1leHRlbnNpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvd2Via2l0LXdlYi1leHRlbnNpb24uaApA
QCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0Q29udGV4dE1lbnUuaD4K
ICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdENvbnRleHRNZW51QWN0aW9ucy5oPgogI2luY2x1ZGUg
PHdlYmtpdDIvV2ViS2l0Q29udGV4dE1lbnVJdGVtLmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJL
aXRFZGl0aW5nQ29tbWFuZHMuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEZyYW1lLmg+CiAj
aW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRTY3JpcHRXb3JsZC5oPgogI2luY2x1ZGUgPHdlYmtpdDIv
V2ViS2l0VVJJUmVxdWVzdC5oPgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMv
Q2hhbmdlTG9nCmluZGV4IGVlOWUwOWRkY2NiYTg2NDhiY2M1ZjdlNGY2YTMzM2QwOTlkNzdlYWIu
LjQwMDZmN2IzOTRkYTk5MzdlZjE4MzFmZTUwZDYwYTA0NTAyNjA4YjkgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAx
Ny0wMi0xMyAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CisKKyAg
ICAgICAgW0dUS10gQWRkIHdlYmtpdF93ZWJfcGFnZV9jYW5fZXhlY3V0ZV9lZGl0aW5nX2NvbW1h
bmQoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY4
MjE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVz
dCB0aGUgbmV3IEFQSS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0
ay9UZXN0V2ViVmlld0VkaXRvci5jcHA6CisgICAgICAgIChiZWZvcmVBbGwpOgorICAgICAgICAo
YWZ0ZXJBbGwpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9XZWJF
eHRlbnNpb25UZXN0LmNwcDoKKyAgICAgICAgKG1ldGhvZENhbGxDYWxsYmFjayk6CisKIDIwMTct
MDItMTIgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQsIHNraXAgZmxha3kgV2ViS2l0UHJpbnRPcGVyYXRpb24vY3VzdG9tLXdp
ZGdldCB0ZXN0CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJH
dGsvVGVzdFdlYlZpZXdFZGl0b3IuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQyR3RrL1Rlc3RXZWJWaWV3RWRpdG9yLmNwcAppbmRleCBkMjBjNzk0NGY4MDQ0NTRjNzFhOGRh
ZDk5OTg1OWViMmY2MWE5ZDZiLi43ODdlOTFjNzA1YTgwYWQ5ZGFkZmQ5YzAzM2FmZGM1NmI0YmZl
Yjk1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVz
dFdlYlZpZXdFZGl0b3IuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Mkd0ay9UZXN0V2ViVmlld0VkaXRvci5jcHAKQEAgLTE4LDkgKzE4LDEyIEBACiAgKi8KIAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYktpdFRlc3RCdXMuaCIKICNpbmNsdWRlICJX
ZWJWaWV3VGVzdC5oIgogI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KIAorc3RhdGljIFdl
YktpdFRlc3RCdXMqIGJ1czsKKwogY2xhc3MgRWRpdG9yVGVzdDogcHVibGljIFdlYlZpZXdUZXN0
IHsKIHB1YmxpYzoKICAgICBNQUtFX0dMSUJfVEVTVF9GSVhUVVJFKEVkaXRvclRlc3QpOwpAQCAt
MzMsOCArMzYsMTIgQEAgcHVibGljOgogICAgICAgICAsIG1fY2FuRXhlY3V0ZUVkaXRpbmdDb21t
YW5kKGZhbHNlKQogICAgICAgICAsIG1fdHJpZXNDb3VudCgwKQogICAgICAgICAsIG1fZWRpdG9y
U3RhdGUobnVsbHB0cikKKyAgICAgICAgLCBtX2V4dGVuc2lvbkJ1c05hbWUoZ19zdHJkdXBfcHJp
bnRmKCJvcmcud2Via2l0Lmd0ay5XZWJFeHRlbnNpb25UZXN0JXUiLCBzX3dlYkV4dGVuc2lvbklE
KSkKICAgICB7CiAgICAgICAgIGd0a19jbGlwYm9hcmRfY2xlYXIobV9jbGlwYm9hcmQpOworCisg
ICAgICAgIG1fREJ1c1Byb3h5ID0gYWRvcHRHUmVmKGJ1cy0+Y3JlYXRlUHJveHkobV9leHRlbnNp
b25CdXNOYW1lLmdldCgpLAorICAgICAgICAgICAgIi9vcmcvd2Via2l0L2d0ay9XZWJFeHRlbnNp
b25UZXN0IiwgIm9yZy53ZWJraXQuZ3RrLldlYkV4dGVuc2lvblRlc3QiLCBtX21haW5Mb29wKSk7
CiAgICAgfQogCiAgICAgc3RhdGljIHZvaWQgY2FuRXhlY3V0ZUVkaXRpbmdDb21tYW5kUmVhZHlD
YWxsYmFjayhHT2JqZWN0KiwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIEVkaXRvclRlc3QqIHRlc3Qp
CkBAIC01MCw2ICs1NywyMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fY2FuRXhlY3V0ZUVkaXRpbmdD
b21tYW5kID0gZmFsc2U7CiAgICAgICAgIHdlYmtpdF93ZWJfdmlld19jYW5fZXhlY3V0ZV9lZGl0
aW5nX2NvbW1hbmQobV93ZWJWaWV3LCBjb21tYW5kLCAwLCByZWludGVycHJldF9jYXN0PEdBc3lu
Y1JlYWR5Q2FsbGJhY2s+KGNhbkV4ZWN1dGVFZGl0aW5nQ29tbWFuZFJlYWR5Q2FsbGJhY2spLCB0
aGlzKTsKICAgICAgICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3ApOworCisgICAgICAgIC8v
IE5vdyBtX2NhbkV4ZWN1dGVFZGl0aW5nQ29tbWFuZCBoYXMgdGhlIGFuc3dlciBvYnRhaW5lZCB2
aWEgdGhlIFVJCisgICAgICAgIC8vIHByb2Nlc3MgQVBJLiBNYWtlIHN1cmUgdGhlIHdlYiBwcm9j
ZXNzIEFQSSBnaXZlcyB0aGUgc2FtZSByZXN1bHQuCisgICAgICAgIEdSZWZQdHI8R1ZhcmlhbnQ+
IHJlc3VsdCA9IGFkb3B0R1JlZihnX2RidXNfcHJveHlfY2FsbF9zeW5jKAorICAgICAgICAgICAg
bV9EQnVzUHJveHkuZ2V0KCksCisgICAgICAgICAgICAiQ2FuRXhlY3V0ZUVkaXRpbmdDb21tYW5k
IiwKKyAgICAgICAgICAgIGdfdmFyaWFudF9uZXcoIih0cykiLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0
X3BhZ2VfaWQobV93ZWJWaWV3KSwgY29tbWFuZCksCisgICAgICAgICAgICBHX0RCVVNfQ0FMTF9G
TEFHU19OT05FLAorICAgICAgICAgICAgLTEsIG51bGxwdHIsIG51bGxwdHIpKTsKKyAgICAgICAg
Z19hc3NlcnQocmVzdWx0KTsKKworICAgICAgICBnYm9vbGVhbiBlZGl0YWJsZTsKKyAgICAgICAg
Z192YXJpYW50X2dldChyZXN1bHQuZ2V0KCksICIoYikiLCAmZWRpdGFibGUpOworICAgICAgICBn
X2Fzc2VydChlZGl0YWJsZSA9PSBtX2NhbkV4ZWN1dGVFZGl0aW5nQ29tbWFuZCk7CisKICAgICAg
ICAgcmV0dXJuIG1fY2FuRXhlY3V0ZUVkaXRpbmdDb21tYW5kOwogICAgIH0KIApAQCAtMTIxLDYg
KzE0Myw4IEBAIHB1YmxpYzoKICAgICBib29sIG1fY2FuRXhlY3V0ZUVkaXRpbmdDb21tYW5kOwog
ICAgIHNpemVfdCBtX3RyaWVzQ291bnQ7CiAgICAgV2ViS2l0RWRpdG9yU3RhdGUqIG1fZWRpdG9y
U3RhdGU7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiBtX2V4dGVuc2lvbkJ1c05hbWU7CisgICAgR1Jl
ZlB0cjxHREJ1c1Byb3h5PiBtX0RCdXNQcm94eTsKIH07CiAKIHN0YXRpYyBjb25zdCBjaGFyKiBz
ZWxlY3RlZFNwYW5IVE1MRm9ybWF0ID0KQEAgLTQ1NSw2ICs0NzksMTAgQEAgc3RhdGljIHZvaWQg
dGVzdFdlYlZpZXdFZGl0b3JDcmVhdGVMaW5rKEVkaXRvclRlc3QqIHRlc3QsIGdjb25zdHBvaW50
ZXIpCiAKIHZvaWQgYmVmb3JlQWxsKCkKIHsKKyAgICBidXMgPSBuZXcgV2ViS2l0VGVzdEJ1cygp
OworICAgIGlmICghYnVzLT5ydW4oKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgRWRpdG9yVGVz
dDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgImVkaXRhYmxlL2VkaXRhYmxlIiwgdGVzdFdlYlZpZXdF
ZGl0b3JFZGl0YWJsZSk7CiAgICAgRWRpdG9yVGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgImN1
dC1jb3B5LXBhc3RlL25vbi1lZGl0YWJsZSIsIHRlc3RXZWJWaWV3RWRpdG9yQ3V0Q29weVBhc3Rl
Tm9uRWRpdGFibGUpOwogICAgIEVkaXRvclRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJjdXQt
Y29weS1wYXN0ZS9lZGl0YWJsZSIsIHRlc3RXZWJWaWV3RWRpdG9yQ3V0Q29weVBhc3RlRWRpdGFi
bGUpOwpAQCAtNDY3LDQgKzQ5NSw1IEBAIHZvaWQgYmVmb3JlQWxsKCkKIAogdm9pZCBhZnRlckFs
bCgpCiB7CisgICAgZGVsZXRlIGJ1czsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Mkd0ay9XZWJFeHRlbnNpb25UZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9XZWJFeHRlbnNpb25UZXN0LmNwcAppbmRleCBmNjMyYmMz
NzFlYjBhZGIxZWI5MjJiMTNkNDI5OTk3ZWNlNDU2YmNhLi5mZGU2NThjMjBjMjYwYzY3YmJkYjdj
YzBkYzExOTIxZmRlNmE1NDI3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDJHdGsvV2ViRXh0ZW5zaW9uVGVzdC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQyR3RrL1dlYkV4dGVuc2lvblRlc3QuY3BwCkBAIC01MCw2ICs1MCwxMSBA
QCBzdGF0aWMgY29uc3QgY2hhciBpbnRyb3NwZWN0aW9uWE1MW10gPQogICAgICIgIDwvbWV0aG9k
PiIKICAgICAiICA8bWV0aG9kIG5hbWU9J1JlbW92ZUFWUGx1Z2luc0Zyb21HU1RSZWdpc3RyeSc+
IgogICAgICIgIDwvbWV0aG9kPiIKKyAgICAiICA8bWV0aG9kIG5hbWU9J0NhbkV4ZWN1dGVFZGl0
aW5nQ29tbWFuZCc+IgorICAgICIgICAgPGFyZyB0eXBlPSd0JyBuYW1lPSdwYWdlSUQnIGRpcmVj
dGlvbj0naW4nLz4iCisgICAgIiAgICA8YXJnIHR5cGU9J3MnIG5hbWU9J2NvbW1hbmQnIGRpcmVj
dGlvbj0naW4nLz4iCisgICAgIiAgICA8YXJnIHR5cGU9J2InIG5hbWU9J2VuYWJsZWQnIGRpcmVj
dGlvbj0nb3V0Jy8+IgorICAgICIgIDwvbWV0aG9kPiIKICAgICAiICA8c2lnbmFsIG5hbWU9J0Rv
Y3VtZW50TG9hZGVkJy8+IgogICAgICIgIDxzaWduYWwgbmFtZT0nRm9ybUNvbnRyb2xzQXNzb2Np
YXRlZCc+IgogICAgICIgICA8YXJnIHR5cGU9J3MnIG5hbWU9J2Zvcm1JZHMnIGRpcmVjdGlvbj0n
b3V0Jy8+IgpAQCAtMzYzLDYgKzM2OCwxNCBAQCBzdGF0aWMgdm9pZCBtZXRob2RDYWxsQ2FsbGJh
Y2soR0RCdXNDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBjb25zdCBjaGFyKiBzZW5kZXIsCiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgZ19kYnVzX21ldGhvZF9pbnZvY2F0aW9uX3Jl
dHVybl92YWx1ZShpbnZvY2F0aW9uLCBudWxscHRyKTsKKyAgICB9IGVsc2UgaWYgKCFnX3N0cmNt
cDAobWV0aG9kTmFtZSwgIkNhbkV4ZWN1dGVFZGl0aW5nQ29tbWFuZCIpKSB7CisgICAgICAgIHVp
bnQ2NF90IHBhZ2VJRDsKKyAgICAgICAgY29uc3QgY2hhciogY29tbWFuZDsKKyAgICAgICAgZ192
YXJpYW50X2dldChwYXJhbWV0ZXJzLCAiKHQmcykiLCAmcGFnZUlELCAmY29tbWFuZCk7CisgICAg
ICAgIFdlYktpdFdlYlBhZ2UqIHBhZ2UgPSBnZXRXZWJQYWdlKFdFQktJVF9XRUJfRVhURU5TSU9O
KHVzZXJEYXRhKSwgcGFnZUlELCBpbnZvY2F0aW9uKTsKKyAgICAgICAgaWYgKCFwYWdlKQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICBnX2RidXNfbWV0aG9kX2ludm9jYXRpb25fcmV0dXJu
X3ZhbHVlKGludm9jYXRpb24sIGdfdmFyaWFudF9uZXcoIihiKSIsIHdlYmtpdF93ZWJfcGFnZV9j
YW5fZXhlY3V0ZV9lZGl0aW5nX2NvbW1hbmQocGFnZSwgY29tbWFuZCkpKTsKICAgICB9CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>302007</attachid>
            <date>2017-02-17 16:13:24 -0800</date>
            <delta_ts>2017-08-17 21:38:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-168219-20170217181045.patch</filename>
            <type>text/plain</type>
            <size>21971</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEyNTcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjhlN2I5YjliODZmMTE0
OTU1ZGI2MDIzMGJiZjFlZjg0Nzg1Njk4ZC4uYWNhOGZjOWJlYzk1NDMzZjk5NzBjMTg5NWExNDVj
MTJmZTNmNjFmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE3LTAyLTE3ICBNaWNo
YWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBB
ZGQgd2Via2l0X3dlYl9wYWdlX2Nhbl9leGVjdXRlX2VkaXRpbmdfY29tbWFuZCgpCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjgyMTkKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgKE9P
UFMhKS4KKworICAgICAgICAqIHJlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OmFsbG93c0NvcHkpOiBEZWxldGVkLgorICAgICAgICAq
IHJlbmRlcmluZy9IaXRUZXN0UmVzdWx0Lmg6CisKIDIwMTctMDItMTcgIEplciBOb2JsZSAgPGpl
ci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVmYWN0b3Jpbmc6IFJlbW92ZSBBdWRpb1Nv
dXJjZU9ic2VydmVyT2JqQyBhbmQgQXVkaW9DYXB0dXJlU291cmNlUHJvdmlkZXJPYmpDCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKaW5kZXggMDYyMTc0YjRkNTFiYWEzZmRkYzlkNGQyY2IwMjQ1MTU2OTIzNWM5Mi4uOTg4ZmMx
OTM2ZjYxMmQ2NWU4YzgyNDc5OTBlMTJlNTRmOTkwYmNhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsx
LDM1IEBACiAyMDE3LTAyLTE3ICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlh
LmNvbT4KIAorICAgICAgICBbR1RLXSBBZGQgd2Via2l0X3dlYl9wYWdlX2Nhbl9leGVjdXRlX2Vk
aXRpbmdfY29tbWFuZCgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNjgyMTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBTaGFy
ZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJIaXRUZXN0
UmVzdWx0RGF0YTo6V2ViSGl0VGVzdFJlc3VsdERhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJI
aXRUZXN0UmVzdWx0RGF0YTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSGl0VGVzdFJl
c3VsdERhdGE6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHREYXRh
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElIaXRUZXN0UmVzdWx0Lmg6CisgICAgICAg
IChBUEk6OkhpdFRlc3RSZXN1bHQ6OmFsbG93c0N1dCk6CisgICAgICAgIChBUEk6OkhpdFRlc3RS
ZXN1bHQ6OmFsbG93c0NvcHkpOgorICAgICAgICAoQVBJOjpIaXRUZXN0UmVzdWx0OjphbGxvd3NQ
YXN0ZSk6CisgICAgICAgIChBUEk6OkhpdFRlc3RSZXN1bHQ6OmFsbG93c1VuZG8pOgorICAgICAg
ICAoQVBJOjpIaXRUZXN0UmVzdWx0OjphbGxvd3NSZWRvKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRIaXRUZXN0UmVzdWx0LmNwcDoKKyAgICAgICAgKHdlYmtpdEhpdFRlc3RS
ZXN1bHRHZXRQcm9wZXJ0eSk6CisgICAgICAgICh3ZWJraXRIaXRUZXN0UmVzdWx0U2V0UHJvcGVy
dHkpOgorICAgICAgICAod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jbGFzc19pbml0KToKKyAgICAg
ICAgKHdlYmtpdEhpdFRlc3RSZXN1bHRDcmVhdGUpOgorICAgICAgICAod2Via2l0X2hpdF90ZXN0
X3Jlc3VsdF9nZXRfYXZhaWxhYmxlX2NvbW1hbmRzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRIaXRUZXN0UmVzdWx0Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsv
ZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQ6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwZXJm
b3JtSW1tZWRpYXRlQWN0aW9uSGl0VGVzdEF0TG9jYXRpb24pOgorCisyMDE3LTAyLTE3ICBNaWNo
YWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KKwogICAgICAgICBSZW1vdmUg
RUZMIGZyb20gV2ViS2l0MgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTY4NTExCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9I
aXRUZXN0UmVzdWx0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0
LmNwcAppbmRleCBkMjI1ODVhMDMyNWZhZWE2MGVkZmQyZDdmMDBmNjg4ZDg5NDI4YzkwLi5kZjA5
MzJjYWNkMjFkMGVkMGJhMmFkNGU0Zjk0MDk1OGNmNDRlMjhiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCkBAIC01OTYsMTkgKzU5NiwyOSBAQCBib29sIEhp
dFRlc3RSZXN1bHQ6OmlzT3ZlclRleHRJbnNpZGVGb3JtQ29udHJvbEVsZW1lbnQoKSBjb25zdAog
ICAgIHJldHVybiAhd29yZFJhbmdlLT50ZXh0KCkuaXNFbXB0eSgpOwogfQogCi1ib29sIEhpdFRl
c3RSZXN1bHQ6OmFsbG93c0NvcHkoKSBjb25zdAorYXV0byBIaXRUZXN0UmVzdWx0OjphbGxvd2Vk
RWRpdENvbW1hbmRzKCkgY29uc3QgLT4gRWRpdENvbW1hbmRzCiB7Ci0gICAgTm9kZSogbm9kZSA9
IGlubmVyTm9kZSgpOwotICAgIGlmICghbm9kZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IGludCBjb21tYW5kcyA9IEVkaXRDb21tYW5kTm9uZTsKIAotICAgIFJlbmRlck9iamVjdCogcmVu
ZGVyZXIgPSBub2RlLT5yZW5kZXJlcigpOwotICAgIGlmICghcmVuZGVyZXIpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBpZiAoIW1faW5uZXJOb25TaGFyZWROb2RlKQorICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8RWRpdENvbW1hbmRzPihjb21tYW5kcyk7CiAKLSAgICBib29sIGlzVXNl
clNlbGVjdE5vbmUgPSByZW5kZXJlci0+c3R5bGUoKS51c2VyU2VsZWN0KCkgPT0gU0VMRUNUX05P
TkU7Ci0gICAgYm9vbCBpc1Bhc3N3b3JkRmllbGQgPSBpczxIVE1MSW5wdXRFbGVtZW50Pihub2Rl
KSAmJiBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50Pigqbm9kZSkuaXNQYXNzd29yZEZpZWxkKCk7
Ci0gICAgcmV0dXJuICFpc1Bhc3N3b3JkRmllbGQgJiYgIWlzVXNlclNlbGVjdE5vbmU7CisgICAg
RnJhbWUqIGZyYW1lID0gaW5uZXJOb25TaGFyZWROb2RlKCktPmRvY3VtZW50KCkuZnJhbWUoKTsK
KyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RWRpdENvbW1hbmRz
Pihjb21tYW5kcyk7CisKKyAgICBpZiAoZnJhbWUtPmVkaXRvcigpLmNhbkN1dCgpKQorICAgICAg
ICBjb21tYW5kcyB8PSBFZGl0Q29tbWFuZEN1dDsKKyAgICBpZiAoZnJhbWUtPmVkaXRvcigpLmNh
bkNvcHkoKSkKKyAgICAgICAgY29tbWFuZHMgfD0gRWRpdENvbW1hbmRDb3B5OworICAgIGlmIChm
cmFtZS0+ZWRpdG9yKCkuY2FuUGFzdGUoKSkKKyAgICAgICAgY29tbWFuZHMgfD0gRWRpdENvbW1h
bmRQYXN0ZTsKKyAgICBpZiAoZnJhbWUtPmVkaXRvcigpLmNhblVuZG8oKSkKKyAgICAgICAgY29t
bWFuZHMgfD0gRWRpdENvbW1hbmRVbmRvOworICAgIGlmIChmcmFtZS0+ZWRpdG9yKCkuY2FuUmVk
bygpKQorICAgICAgICBjb21tYW5kcyB8PSBFZGl0Q29tbWFuZFJlZG87CisKKyAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8RWRpdENvbW1hbmRzPihjb21tYW5kcyk7CiB9CiAKIFVSTCBIaXRUZXN0UmVz
dWx0OjphYnNvbHV0ZUxpbmtVUkwoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRU
ZXN0UmVzdWx0LmgKaW5kZXggYmVlZGY4YjUxNjA2ZmYyNzAyOWQ2NzEzNDY2M2I4MzRhNzA5Yzk3
YS4uNmFiYjcyZWY0MTVlZDhmYTg2YzIzMzBkMjUyNzAyYzI0ZmRiNjMzOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oCkBAIC0xMzEsNyArMTMxLDE2IEBAIHB1Ymxp
YzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNEb3dubG9hZGFibGVNZWRpYSgpIGNvbnN0
OwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNPdmVyVGV4dEluc2lkZUZvcm1Db250cm9sRWxl
bWVudCgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgYWxsb3dzQ29weSgpIGNvbnN0
OworCisgICAgZW51bSBFZGl0Q29tbWFuZHMgeworICAgICAgICBFZGl0Q29tbWFuZE5vbmUgPSAw
LAorICAgICAgICBFZGl0Q29tbWFuZEN1dCA9IDEgPDwgMCwKKyAgICAgICAgRWRpdENvbW1hbmRD
b3B5ID0gMSA8PCAxLAorICAgICAgICBFZGl0Q29tbWFuZFBhc3RlID0gMSA8PCAyLAorICAgICAg
ICBFZGl0Q29tbWFuZFVuZG8gPSAxIDw8IDMsCisgICAgICAgIEVkaXRDb21tYW5kUmVkbyA9IDEg
PDwgNCwKKyAgICB9OworICAgIFdFQkNPUkVfRVhQT1JUIEVkaXRDb21tYW5kcyBhbGxvd2VkRWRp
dENvbW1hbmRzKCkgY29uc3Q7CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgaXQgaXMgcmVjdC1i
YXNlZCBoaXQgdGVzdCBhbmQgbmVlZHMgdG8gY29udGludWUgdW50aWwgdGhlIHJlY3QgaXMgZnVs
bHkKICAgICAvLyBlbmNsb3NlZCBieSB0aGUgYm91bmRhcmllcyBvZiBhIG5vZGUuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggZWFiMTMxYzg4
YmUwZDUwZjFlZThhOWNlYzE4ZWE3NzRhNmU0YTRkZS4uNjYwM2Y5NWY0ZjEzZjk0ZDQwODkwNGEz
NzEwMWQzZGIwNGQ5M2EzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3JT
cGFjZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVyVHlwZXMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0hp
dFRlc3RSZXN1bHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0luZGV4ZWREQi5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvUGF5bWVudEhlYWRlcnMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbFNuYXBP
ZmZzZXRzSW5mby5oPgpAQCAtNjYzLDQgKzY2NCwxNSBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVt
VHJhaXRzPFdlYkNvcmU6OkluZGV4ZWREQjo6R2V0QWxsVHlwZT4gewogfTsKICNlbmRpZgogCit0
ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OkVkaXRD
b21tYW5kcz4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNv
cmU6OkhpdFRlc3RSZXN1bHQ6OkVkaXRDb21tYW5kcywKKyAgICAgICAgV2ViQ29yZTo6SGl0VGVz
dFJlc3VsdDo6RWRpdENvbW1hbmRDdXQsCisgICAgICAgIFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6
OkVkaXRDb21tYW5kQ29weSwKKyAgICAgICAgV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6RWRpdENv
bW1hbmRQYXN0ZSwKKyAgICAgICAgV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6RWRpdENvbW1hbmRV
bmRvLAorICAgICAgICBXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjpFZGl0Q29tbWFuZFJlZG8KKyAg
ICA+OworfTsKKwogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYkhpdFRlc3RSZXN1bHREYXRhLmNwcAppbmRleCBiN2NlM2U0MzE4YmFhYTg2NDI4ZWU5ZjI2
M2U0YWQ0NzViMmY1MzA3Li4zMWI1MzJlNjU0YTFiYTUyN2I2YjdhY2RmMTZlZTExZjU2MmQwNjE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0YS5jcHAK
QEAgLTUzLDggKzUzLDggQEAgV2ViSGl0VGVzdFJlc3VsdERhdGE6OldlYkhpdFRlc3RSZXN1bHRE
YXRhKGNvbnN0IFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQmIGhpdFRlc3QKICAgICAsIGlzU2VsZWN0
ZWQoaGl0VGVzdFJlc3VsdC5pc1NlbGVjdGVkKCkpCiAgICAgLCBpc1RleHROb2RlKGhpdFRlc3RS
ZXN1bHQuaW5uZXJOb2RlKCkgJiYgaGl0VGVzdFJlc3VsdC5pbm5lck5vZGUoKS0+aXNUZXh0Tm9k
ZSgpKQogICAgICwgaXNPdmVyVGV4dEluc2lkZUZvcm1Db250cm9sRWxlbWVudChoaXRUZXN0UmVz
dWx0LmlzT3ZlclRleHRJbnNpZGVGb3JtQ29udHJvbEVsZW1lbnQoKSkKLSAgICAsIGFsbG93c0Nv
cHkoaGl0VGVzdFJlc3VsdC5hbGxvd3NDb3B5KCkpCiAgICAgLCBpc0Rvd25sb2FkYWJsZU1lZGlh
KGhpdFRlc3RSZXN1bHQuaXNEb3dubG9hZGFibGVNZWRpYSgpKQorICAgICwgYWxsb3dlZEVkaXRD
b21tYW5kcyhoaXRUZXN0UmVzdWx0LmFsbG93ZWRFZGl0Q29tbWFuZHMoKSkKICAgICAsIGltYWdl
U2l6ZSgwKQogewogfQpAQCAtNzMsOCArNzMsOCBAQCBXZWJIaXRUZXN0UmVzdWx0RGF0YTo6V2Vi
SGl0VGVzdFJlc3VsdERhdGEoY29uc3QgV2ViQ29yZTo6SGl0VGVzdFJlc3VsdCYgaGl0VGVzdAog
ICAgICwgaXNTZWxlY3RlZChoaXRUZXN0UmVzdWx0LmlzU2VsZWN0ZWQoKSkKICAgICAsIGlzVGV4
dE5vZGUoaGl0VGVzdFJlc3VsdC5pbm5lck5vZGUoKSAmJiBoaXRUZXN0UmVzdWx0LmlubmVyTm9k
ZSgpLT5pc1RleHROb2RlKCkpCiAgICAgLCBpc092ZXJUZXh0SW5zaWRlRm9ybUNvbnRyb2xFbGVt
ZW50KGhpdFRlc3RSZXN1bHQuaXNPdmVyVGV4dEluc2lkZUZvcm1Db250cm9sRWxlbWVudCgpKQot
ICAgICwgYWxsb3dzQ29weShoaXRUZXN0UmVzdWx0LmFsbG93c0NvcHkoKSkKICAgICAsIGlzRG93
bmxvYWRhYmxlTWVkaWEoaGl0VGVzdFJlc3VsdC5pc0Rvd25sb2FkYWJsZU1lZGlhKCkpCisgICAg
LCBhbGxvd2VkRWRpdENvbW1hbmRzKGhpdFRlc3RSZXN1bHQuYWxsb3dlZEVkaXRDb21tYW5kcygp
KQogICAgICwgaW1hZ2VTaXplKDApCiB7CiAgICAgaWYgKCFpbmNsdWRlSW1hZ2UpCkBAIC0xMDks
OCArMTA5LDggQEAgdm9pZCBXZWJIaXRUZXN0UmVzdWx0RGF0YTo6ZW5jb2RlKElQQzo6RW5jb2Rl
ciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IGlzU2VsZWN0ZWQ7CiAgICAgZW5jb2Rl
ciA8PCBpc1RleHROb2RlOwogICAgIGVuY29kZXIgPDwgaXNPdmVyVGV4dEluc2lkZUZvcm1Db250
cm9sRWxlbWVudDsKLSAgICBlbmNvZGVyIDw8IGFsbG93c0NvcHk7CiAgICAgZW5jb2RlciA8PCBp
c0Rvd25sb2FkYWJsZU1lZGlhOworICAgIGVuY29kZXIgPDwgYWxsb3dlZEVkaXRDb21tYW5kczsK
ICAgICBlbmNvZGVyIDw8IGxvb2t1cFRleHQ7CiAgICAgZW5jb2RlciA8PCBkaWN0aW9uYXJ5UG9w
dXBJbmZvOwogCkBAIC0xNDMsOCArMTQzLDggQEAgYm9vbCBXZWJIaXRUZXN0UmVzdWx0RGF0YTo6
ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgV2ViSGl0VGVzdFJlc3VsdERhdGEmIGgKICAg
ICAgICAgfHwgIWRlY29kZXIuZGVjb2RlKGhpdFRlc3RSZXN1bHREYXRhLmlzU2VsZWN0ZWQpCiAg
ICAgICAgIHx8ICFkZWNvZGVyLmRlY29kZShoaXRUZXN0UmVzdWx0RGF0YS5pc1RleHROb2RlKQog
ICAgICAgICB8fCAhZGVjb2Rlci5kZWNvZGUoaGl0VGVzdFJlc3VsdERhdGEuaXNPdmVyVGV4dElu
c2lkZUZvcm1Db250cm9sRWxlbWVudCkKLSAgICAgICAgfHwgIWRlY29kZXIuZGVjb2RlKGhpdFRl
c3RSZXN1bHREYXRhLmFsbG93c0NvcHkpCiAgICAgICAgIHx8ICFkZWNvZGVyLmRlY29kZShoaXRU
ZXN0UmVzdWx0RGF0YS5pc0Rvd25sb2FkYWJsZU1lZGlhKQorICAgICAgICB8fCAhZGVjb2Rlci5k
ZWNvZGUoaGl0VGVzdFJlc3VsdERhdGEuYWxsb3dlZEVkaXRDb21tYW5kcykKICAgICAgICAgfHwg
IWRlY29kZXIuZGVjb2RlKGhpdFRlc3RSZXN1bHREYXRhLmxvb2t1cFRleHQpCiAgICAgICAgIHx8
ICFkZWNvZGVyLmRlY29kZShoaXRUZXN0UmVzdWx0RGF0YS5kaWN0aW9uYXJ5UG9wdXBJbmZvKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYkhpdFRlc3RSZXN1bHREYXRhLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViSGl0VGVz
dFJlc3VsdERhdGEuaAppbmRleCAzMjQ2OGFiYTljNzU2MzE3OTBhODAwYzgyYjE4ZTBkMDBhZWQ5
MGM1Li42YzRlYjVlYzkyMzBjNjQwZDM1YzRiYzJhNTU5YjA0YWU3ZWMzODk5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuaApAQCAtMjQsNiArMjQsNyBA
QAogI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRGljdGlvbmFy
eVBvcHVwSW5mby5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRQb2ludC5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvSGl0VGVzdFJlc3VsdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvUGFnZU92ZXJsYXkuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgpAQCAtMzcsMTAgKzM4LDYgQEAgY2xhc3MgRGVjb2RlcjsKIGNsYXNzIEVuY29kZXI7CiB9CiAK
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIEhpdFRlc3RSZXN1bHQ7Ci19Ci0KIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiBzdHJ1Y3QgV2ViSGl0VGVzdFJlc3VsdERhdGEgewpAQCAtNTcsOSArNTQs
MTAgQEAgc3RydWN0IFdlYkhpdFRlc3RSZXN1bHREYXRhIHsKICAgICBib29sIGlzU2VsZWN0ZWQ7
CiAgICAgYm9vbCBpc1RleHROb2RlOwogICAgIGJvb2wgaXNPdmVyVGV4dEluc2lkZUZvcm1Db250
cm9sRWxlbWVudDsKLSAgICBib29sIGFsbG93c0NvcHk7CiAgICAgYm9vbCBpc0Rvd25sb2FkYWJs
ZU1lZGlhOwogCisgICAgV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6RWRpdENvbW1hbmRzIGFsbG93
ZWRFZGl0Q29tbWFuZHM7CisKICAgICBTdHJpbmcgbG9va3VwVGV4dDsKICAgICBSZWZQdHI8V2Vi
S2l0OjpTaGFyZWRNZW1vcnk+IGltYWdlU2hhcmVkTWVtb3J5OwogICAgIHVpbnQ2NF90IGltYWdl
U2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJSGl0VGVz
dFJlc3VsdC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElIaXRUZXN0UmVzdWx0
LmgKaW5kZXggZGM0ZjYxMGIyYjQ0YWFlYjM5NzZmMjFmMzFmYTE0YTBkNmE1NDlhNy4uZjUwZTAy
MmUwOGRiMjBmMWNlYTkxOWJlM2JhMzNiZjIyYWJjNzk2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9BUElIaXRUZXN0UmVzdWx0LmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9BUElIaXRUZXN0UmVzdWx0LmgKQEAgLTcyLDcgKzcyLDExIEBAIHB1
YmxpYzoKIAogICAgIGJvb2wgaXNPdmVyVGV4dEluc2lkZUZvcm1Db250cm9sRWxlbWVudCgpIGNv
bnN0IHsgcmV0dXJuIG1fZGF0YS5pc092ZXJUZXh0SW5zaWRlRm9ybUNvbnRyb2xFbGVtZW50OyB9
CiAKLSAgICBib29sIGFsbG93c0NvcHkoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuYWxsb3dzQ29w
eTsgfQorICAgIGJvb2wgYWxsb3dzQ3V0KCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmFsbG93ZWRF
ZGl0Q29tbWFuZHMgJiBXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjpFZGl0Q29tbWFuZEN1dDsgfQor
ICAgIGJvb2wgYWxsb3dzQ29weSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5hbGxvd2VkRWRpdENv
bW1hbmRzICYgV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6RWRpdENvbW1hbmRDb3B5OyB9CisgICAg
Ym9vbCBhbGxvd3NQYXN0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5hbGxvd2VkRWRpdENvbW1h
bmRzICYgV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6RWRpdENvbW1hbmRQYXN0ZTsgfQorICAgIGJv
b2wgYWxsb3dzVW5kbygpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5hbGxvd2VkRWRpdENvbW1hbmRz
ICYgV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6RWRpdENvbW1hbmRVbmRvOyB9CisgICAgYm9vbCBh
bGxvd3NSZWRvKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmFsbG93ZWRFZGl0Q29tbWFuZHMgJiBX
ZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjpFZGl0Q29tbWFuZFJlZG87IH0KIAogICAgIGJvb2wgaXNE
b3dubG9hZGFibGVNZWRpYSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5pc0Rvd25sb2FkYWJsZU1l
ZGlhOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdEhpdFRlc3RSZXN1bHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0SGl0VGVzdFJlc3VsdC5jcHAKaW5kZXggNjBiNWZiODUzMjNkMGVmNjY3NDQ5MGE4OGNl
NTU5MzA0OTFlZWUwYS4uYzJiMzFlYWY4ZDA2ZWExN2NhZTc2MjNjZTgzN2JmODdjOTE1OTUyYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0SGl0VGVz
dFJlc3VsdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
SGl0VGVzdFJlc3VsdC5jcHAKQEAgLTU4LDYgKzU4LDcgQEAgZW51bSB7CiAgICAgUFJPUF8wLAog
CiAgICAgUFJPUF9DT05URVhULAorICAgIFBST1BfQ09NTUFORFMsCiAgICAgUFJPUF9MSU5LX1VS
SSwKICAgICBQUk9QX0xJTktfVElUTEUsCiAgICAgUFJPUF9MSU5LX0xBQkVMLApAQCAtNjYsNyAr
NjcsOCBAQCBlbnVtIHsKIH07CiAKIHN0cnVjdCBfV2ViS2l0SGl0VGVzdFJlc3VsdFByaXZhdGUg
ewotICAgIHVuc2lnbmVkIGludCBjb250ZXh0OworICAgIHVuc2lnbmVkIGNvbnRleHQ7CisgICAg
dW5zaWduZWQgY29tbWFuZHM7CiAgICAgQ1N0cmluZyBsaW5rVVJJOwogICAgIENTdHJpbmcgbGlu
a1RpdGxlOwogICAgIENTdHJpbmcgbGlua0xhYmVsOwpAQCAtODQsNiArODYsOSBAQCBzdGF0aWMg
dm9pZCB3ZWJraXRIaXRUZXN0UmVzdWx0R2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWlu
dCBwcm9wSWQsIEdWYWx1ZQogICAgIGNhc2UgUFJPUF9DT05URVhUOgogICAgICAgICBnX3ZhbHVl
X3NldF91aW50KHZhbHVlLCB3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2dldF9jb250ZXh0KGhpdFRl
c3RSZXN1bHQpKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0NPTU1BTkRTOgorICAg
ICAgICBnX3ZhbHVlX3NldF91aW50KHZhbHVlLCB3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2dldF9h
dmFpbGFibGVfY29tbWFuZHMoaGl0VGVzdFJlc3VsdCkpOworICAgICAgICBicmVhazsKICAgICBj
YXNlIFBST1BfTElOS19VUkk6CiAgICAgICAgIGdfdmFsdWVfc2V0X3N0cmluZyh2YWx1ZSwgd2Vi
a2l0X2hpdF90ZXN0X3Jlc3VsdF9nZXRfbGlua191cmkoaGl0VGVzdFJlc3VsdCkpOwogICAgICAg
ICBicmVhazsKQEAgLTExMiw2ICsxMTcsOSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRIaXRUZXN0UmVz
dWx0U2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSWQsIGNvbnN0CiAgICAg
Y2FzZSBQUk9QX0NPTlRFWFQ6CiAgICAgICAgIGhpdFRlc3RSZXN1bHQtPnByaXYtPmNvbnRleHQg
PSBnX3ZhbHVlX2dldF91aW50KHZhbHVlKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9Q
X0NPTU1BTkRTOgorICAgICAgICBoaXRUZXN0UmVzdWx0LT5wcml2LT5jb21tYW5kcyA9IGdfdmFs
dWVfZ2V0X3VpbnQodmFsdWUpOworICAgICAgICBicmVhazsKICAgICBjYXNlIFBST1BfTElOS19V
Ukk6CiAgICAgICAgIGhpdFRlc3RSZXN1bHQtPnByaXYtPmxpbmtVUkkgPSBnX3ZhbHVlX2dldF9z
dHJpbmcodmFsdWUpOwogICAgICAgICBicmVhazsKQEAgLTE1NSw2ICsxNjMsMjIgQEAgc3RhdGlj
IHZvaWQgd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jbGFzc19pbml0KFdlYktpdEhpdFRlc3RSZXN1
bHRDbGFzcyogaGl0VGVzdFIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHBhcmFtRmxhZ3MpKTsKIAogICAgIC8qKgorICAgICAqIFdlYktpdEhp
dFRlc3RSZXN1bHQ6Y29tbWFuZHM6CisgICAgICoKKyAgICAgKiBCaXRtYXNrIG9mICNXZWJLaXRI
aXRUZXN0UmVzdWx0Q29tbWFuZHMgZmxhZ3MgcmVwcmVzZW50aW5nIHRoZQorICAgICAqIGF2YWls
YWJsZSBjb21tYW5kcyB0aGF0IGNhbiBiZSBwZXJmb3JtZWQgYXQgdGhlIHJlc3VsdC4KKyAgICAg
KgorICAgICAqIFNpbmNlOiAyLjE2CisgICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFs
bF9wcm9wZXJ0eShvYmplY3RDbGFzcywKKyAgICAgICAgUFJPUF9DT05URVhULAorICAgICAgICBn
X3BhcmFtX3NwZWNfdWludCgiY29tbWFuZHMiLAorICAgICAgICAgICAgXygiQ29tbWFuZHMiKSwK
KyAgICAgICAgICAgIF8oIkZsYWdzIGZvciB0aGUgYXZhaWxhYmxlIGNvbW1hbmRzIGF0IHRoZSBX
ZWJLaXRIaXRUZXN0UmVzdWx0IiksCisgICAgICAgICAgICAwLCBHX01BWFVJTlQsIDAsCisgICAg
ICAgICAgICBwYXJhbUZsYWdzKSk7CisKKyAgICAvKioKICAgICAgKiBXZWJLaXRIaXRUZXN0UmVz
dWx0OmxpbmstdXJpOgogICAgICAqCiAgICAgICogVGhlIFVSSSBvZiB0aGUgbGluayBpZiBmbGFn
ICVXRUJLSVRfSElUX1RFU1RfUkVTVUxUX0NPTlRFWFRfTElOSwpAQCAtMjI0LDI3ICsyNDgsMzQg
QEAgc3RhdGljIHZvaWQgd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jbGFzc19pbml0KFdlYktpdEhp
dFRlc3RSZXN1bHRDbGFzcyogaGl0VGVzdFIKIFdlYktpdEhpdFRlc3RSZXN1bHQqIHdlYmtpdEhp
dFRlc3RSZXN1bHRDcmVhdGUoY29uc3QgV2ViSGl0VGVzdFJlc3VsdERhdGEmIGhpdFRlc3RSZXN1
bHQpCiB7CiAgICAgdW5zaWduZWQgY29udGV4dCA9IFdFQktJVF9ISVRfVEVTVF9SRVNVTFRfQ09O
VEVYVF9ET0NVTUVOVDsKLQogICAgIGlmICghaGl0VGVzdFJlc3VsdC5hYnNvbHV0ZUxpbmtVUkwu
aXNFbXB0eSgpKQogICAgICAgICBjb250ZXh0IHw9IFdFQktJVF9ISVRfVEVTVF9SRVNVTFRfQ09O
VEVYVF9MSU5LOwotCiAgICAgaWYgKCFoaXRUZXN0UmVzdWx0LmFic29sdXRlSW1hZ2VVUkwuaXNF
bXB0eSgpKQogICAgICAgICBjb250ZXh0IHw9IFdFQktJVF9ISVRfVEVTVF9SRVNVTFRfQ09OVEVY
VF9JTUFHRTsKLQogICAgIGlmICghaGl0VGVzdFJlc3VsdC5hYnNvbHV0ZU1lZGlhVVJMLmlzRW1w
dHkoKSkKICAgICAgICAgY29udGV4dCB8PSBXRUJLSVRfSElUX1RFU1RfUkVTVUxUX0NPTlRFWFRf
TUVESUE7Ci0KICAgICBpZiAoaGl0VGVzdFJlc3VsdC5pc0NvbnRlbnRFZGl0YWJsZSkKICAgICAg
ICAgY29udGV4dCB8PSBXRUJLSVRfSElUX1RFU1RfUkVTVUxUX0NPTlRFWFRfRURJVEFCTEU7Ci0K
ICAgICBpZiAoaGl0VGVzdFJlc3VsdC5pc1Njcm9sbGJhcikKICAgICAgICAgY29udGV4dCB8PSBX
RUJLSVRfSElUX1RFU1RfUkVTVUxUX0NPTlRFWFRfU0NST0xMQkFSOwotCiAgICAgaWYgKGhpdFRl
c3RSZXN1bHQuaXNTZWxlY3RlZCkKICAgICAgICAgY29udGV4dCB8PSBXRUJLSVRfSElUX1RFU1Rf
UkVTVUxUX0NPTlRFWFRfU0VMRUNUSU9OOwogCisgICAgdW5zaWduZWQgY29tbWFuZHMgPSAwOwor
ICAgIGlmIChoaXRUZXN0UmVzdWx0LmFsbG93ZWRFZGl0Q29tbWFuZHMgJiBXZWJDb3JlOjpIaXRU
ZXN0UmVzdWx0OjpFZGl0Q29tbWFuZEN1dCkKKyAgICAgICAgY29tbWFuZHMgfD0gV0VCS0lUX0hJ
VF9URVNUX1JFU1VMVF9DQU5fQ1VUOworICAgIGlmIChoaXRUZXN0UmVzdWx0LmFsbG93ZWRFZGl0
Q29tbWFuZHMgJiBXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjpFZGl0Q29tbWFuZENvcHkpCisgICAg
ICAgIGNvbW1hbmRzIHw9IFdFQktJVF9ISVRfVEVTVF9SRVNVTFRfQ0FOX0NPUFk7CisgICAgaWYg
KGhpdFRlc3RSZXN1bHQuYWxsb3dlZEVkaXRDb21tYW5kcyAmIFdlYkNvcmU6OkhpdFRlc3RSZXN1
bHQ6OkVkaXRDb21tYW5kUGFzdGUpCisgICAgICAgIGNvbW1hbmRzIHw9IFdFQktJVF9ISVRfVEVT
VF9SRVNVTFRfQ0FOX1BBU1RFOworICAgIGlmIChoaXRUZXN0UmVzdWx0LmFsbG93ZWRFZGl0Q29t
bWFuZHMgJiBXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjpFZGl0Q29tbWFuZFVuZG8pCisgICAgICAg
IGNvbW1hbmRzIHw9IFdFQktJVF9ISVRfVEVTVF9SRVNVTFRfQ0FOX1VORE87CisgICAgaWYgKGhp
dFRlc3RSZXN1bHQuYWxsb3dlZEVkaXRDb21tYW5kcyAmIFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6
OkVkaXRDb21tYW5kUmVkbykKKyAgICAgICAgY29tbWFuZHMgfD0gV0VCS0lUX0hJVF9URVNUX1JF
U1VMVF9DQU5fUkVETzsKKwogICAgIHJldHVybiBXRUJLSVRfSElUX1RFU1RfUkVTVUxUKGdfb2Jq
ZWN0X25ldyhXRUJLSVRfVFlQRV9ISVRfVEVTVF9SRVNVTFQsCiAgICAgICAgICJjb250ZXh0Iiwg
Y29udGV4dCwKKyAgICAgICAgImNvbW1hbmRzIiwgY29tbWFuZHMsCiAgICAgICAgICJsaW5rLXVy
aSIsIGNvbnRleHQgJiBXRUJLSVRfSElUX1RFU1RfUkVTVUxUX0NPTlRFWFRfTElOSyA/IGhpdFRl
c3RSZXN1bHQuYWJzb2x1dGVMaW5rVVJMLnV0ZjgoKS5kYXRhKCkgOiBudWxscHRyLAogICAgICAg
ICAiaW1hZ2UtdXJpIiwgY29udGV4dCAmIFdFQktJVF9ISVRfVEVTVF9SRVNVTFRfQ09OVEVYVF9J
TUFHRSA/IGhpdFRlc3RSZXN1bHQuYWJzb2x1dGVJbWFnZVVSTC51dGY4KCkuZGF0YSgpIDogbnVs
bHB0ciwKICAgICAgICAgIm1lZGlhLXVyaSIsIGNvbnRleHQgJiBXRUJLSVRfSElUX1RFU1RfUkVT
VUxUX0NPTlRFWFRfTUVESUEgPyBoaXRUZXN0UmVzdWx0LmFic29sdXRlTWVkaWFVUkwudXRmOCgp
LmRhdGEoKSA6IG51bGxwdHIsCkBAIC00NzEsMyArNTAyLDIxIEBAIGdib29sZWFuIHdlYmtpdF9o
aXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19zY3JvbGxiYXIoV2ViS2l0SGl0VGVzdFJlc3VsdCog
aGl0VGVzCiAKICAgICByZXR1cm4gaGl0VGVzdFJlc3VsdC0+cHJpdi0+Y29udGV4dCAmIFdFQktJ
VF9ISVRfVEVTVF9SRVNVTFRfQ09OVEVYVF9TQ1JPTExCQVI7CiB9CisKKy8qKgorICogd2Via2l0
X2hpdF90ZXN0X3Jlc3VsdF9nZXRfYXZhaWxhYmxlX2NvbW1hbmRzOgorICogQGhpdF90ZXN0X3Jl
c3VsdDogYSAjV2ViS2l0SGl0VGVzdFJlc3VsdAorICoKKyAqIEdldHMgY29tbWFuZHMgdGhhdCBh
cmUgYXZhaWxhYmxlIHRvIGJlIHBlcmZvcm1lZCBhdCB0aGUgbG9jYXRpb24gb2YKKyAqIEBoaXRf
dGVzdF9yZXN1bHQuCisgKgorICogUmV0dXJuczogdGhlIGF2YWlsYWJsZSBjb21tYW5kcworICoK
KyAqIFNpbmNlOiAyLjE2CisgKi8KK2d1aW50IHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfZ2V0X2F2
YWlsYWJsZV9jb21tYW5kcyhXZWJLaXRIaXRUZXN0UmVzdWx0KiBoaXRUZXN0UmVzdWx0KQorewor
ICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19ISVRfVEVTVF9SRVNVTFQoaGl0VGVz
dFJlc3VsdCksIDApOworCisgICAgcmV0dXJuIGhpdFRlc3RSZXN1bHQtPnByaXYtPmNvbW1hbmRz
OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
SGl0VGVzdFJlc3VsdC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
SGl0VGVzdFJlc3VsdC5oCmluZGV4IDcxODU3M2I5MDA0ZjcwYTVmMmUxYmI0MGVlYjUwYjcyZTdl
ZmYyNWYuLjU5NWY2YjBiOGQwMjA1YTE2ZThjYWNhYzg5ZDZlYWZjZjc2ZDNkZTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEhpdFRlc3RSZXN1bHQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRIaXRUZXN0UmVz
dWx0LmgKQEAgLTYzLDYgKzYzLDI4IEBAIHR5cGVkZWYgZW51bQogICAgIFdFQktJVF9ISVRfVEVT
VF9SRVNVTFRfQ09OVEVYVF9TRUxFQ1RJT04gPSAxIDw8IDcKIH0gV2ViS2l0SGl0VGVzdFJlc3Vs
dENvbnRleHQ7CiAKKy8qKgorICogV2ViS2l0SGl0VGVzdFJlc3VsdENvbW1hbmRzOgorICogQFdF
QktJVF9ISVRfVEVTVF9SRVNVTFRfQ0FOX0NVVDogd2hldGhlciBpdCBpcyBwb3NzaWJsZSB0byBj
dXQgdGV4dC4KKyAqIEBXRUJLSVRfSElUX1RFU1RfUkVTVUxUX0NBTl9DT1BZOiB3aGV0aGVyIGl0
IGlzIHBvc3NpYmxlIHRvIGNvcHkgdGV4dC4KKyAqIEBXRUJLSVRfSElUX1RFU1RfUkVTVUxUX0NB
Tl9QQVNURTogd2hldGhlciBpdCBpcyBwb3NzaWJsZSB0byBwYXN0ZSB0ZXh0LgorICogQFdFQktJ
VF9ISVRfVEVTVF9SRVNVTFRfQ0FOX1VORE86IHdoZXRoZXIgaXQgaXMgcG9zc2libGUgdG8gdW5k
by4KKyAqIEBXRUJLSVRfSElUX1RFU1RfUkVTVUxUX0NBTl9SRURPOiB3aGV0aGVyIGl0IGlzIHBv
c3NpYmxlIHRvIHJlZG8uCisgKgorICogRW51bSB2YWx1ZXMgd2l0aCBmbGFncyByZXByZXNlbnRp
bmcgY29tbWFuZHMgdGhhdCBjYW4gYmUgcGVyZm9ybWVkIGF0CisgKiBoaXQgdGVzdCBsb2NhdGlv
bnMuCisgKgorICogU2luY2U6IDIuMTYKKyAqLwordHlwZWRlZiBlbnVtCit7CisgICAgV0VCS0lU
X0hJVF9URVNUX1JFU1VMVF9DQU5fQ1VUICAgID0gMSA8PCAwLAorICAgIFdFQktJVF9ISVRfVEVT
VF9SRVNVTFRfQ0FOX0NPUFkgICA9IDEgPDwgMSwKKyAgICBXRUJLSVRfSElUX1RFU1RfUkVTVUxU
X0NBTl9QQVNURSAgPSAxIDw8IDIsCisgICAgV0VCS0lUX0hJVF9URVNUX1JFU1VMVF9DQU5fVU5E
TyAgID0gMSA8PCAzLAorICAgIFdFQktJVF9ISVRfVEVTVF9SRVNVTFRfQ0FOX1JFRE8gICA9IDEg
PDwgNAorfSBXZWJLaXRIaXRUZXN0UmVzdWx0Q29tbWFuZHM7CisKIHN0cnVjdCBfV2ViS2l0SGl0
VGVzdFJlc3VsdCB7CiAgICAgR09iamVjdCBwYXJlbnQ7CiAKQEAgLTc5LDQzICsxMDEsNDYgQEAg
c3RydWN0IF9XZWJLaXRIaXRUZXN0UmVzdWx0Q2xhc3MgewogfTsKIAogV0VCS0lUX0FQSSBHVHlw
ZQotd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9nZXRfdHlwZSAgICAgICAgICAgICAodm9pZCk7Cit3
ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2dldF90eXBlICAgICAgICAgICAgICAgKHZvaWQpOwogCiBX
RUJLSVRfQVBJIGd1aW50Ci13ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2dldF9jb250ZXh0ICAgICAg
ICAgIChXZWJLaXRIaXRUZXN0UmVzdWx0ICpoaXRfdGVzdF9yZXN1bHQpOword2Via2l0X2hpdF90
ZXN0X3Jlc3VsdF9nZXRfY29udGV4dCAgICAgICAgICAgIChXZWJLaXRIaXRUZXN0UmVzdWx0ICpo
aXRfdGVzdF9yZXN1bHQpOwogCiBXRUJLSVRfQVBJIGdib29sZWFuCi13ZWJraXRfaGl0X3Rlc3Rf
cmVzdWx0X2NvbnRleHRfaXNfbGluayAgICAgIChXZWJLaXRIaXRUZXN0UmVzdWx0ICpoaXRfdGVz
dF9yZXN1bHQpOword2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2xpbmsgICAgICAg
IChXZWJLaXRIaXRUZXN0UmVzdWx0ICpoaXRfdGVzdF9yZXN1bHQpOwogCiBXRUJLSVRfQVBJIGdi
b29sZWFuCi13ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfaW1hZ2UgICAgIChXZWJL
aXRIaXRUZXN0UmVzdWx0ICpoaXRfdGVzdF9yZXN1bHQpOword2Via2l0X2hpdF90ZXN0X3Jlc3Vs
dF9jb250ZXh0X2lzX2ltYWdlICAgICAgIChXZWJLaXRIaXRUZXN0UmVzdWx0ICpoaXRfdGVzdF9y
ZXN1bHQpOwogCiBXRUJLSVRfQVBJIGdib29sZWFuCi13ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2Nv
bnRleHRfaXNfbWVkaWEgICAgIChXZWJLaXRIaXRUZXN0UmVzdWx0ICpoaXRfdGVzdF9yZXN1bHQp
Oword2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX21lZGlhICAgICAgIChXZWJLaXRI
aXRUZXN0UmVzdWx0ICpoaXRfdGVzdF9yZXN1bHQpOwogCiBXRUJLSVRfQVBJIGdib29sZWFuCi13
ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfZWRpdGFibGUgIChXZWJLaXRIaXRUZXN0
UmVzdWx0ICpoaXRfdGVzdF9yZXN1bHQpOword2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0
X2lzX2VkaXRhYmxlICAgIChXZWJLaXRIaXRUZXN0UmVzdWx0ICpoaXRfdGVzdF9yZXN1bHQpOwog
CiBXRUJLSVRfQVBJIGdib29sZWFuCi13ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNf
c2VsZWN0aW9uIChXZWJLaXRIaXRUZXN0UmVzdWx0ICpoaXRfdGVzdF9yZXN1bHQpOword2Via2l0
X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX3NlbGVjdGlvbiAgIChXZWJLaXRIaXRUZXN0UmVz
dWx0ICpoaXRfdGVzdF9yZXN1bHQpOwogCiBXRUJLSVRfQVBJIGNvbnN0IGdjaGFyICoKLXdlYmtp
dF9oaXRfdGVzdF9yZXN1bHRfZ2V0X2xpbmtfdXJpICAgICAgICAgKFdlYktpdEhpdFRlc3RSZXN1
bHQgKmhpdF90ZXN0X3Jlc3VsdCk7Cit3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2dldF9saW5rX3Vy
aSAgICAgICAgICAgKFdlYktpdEhpdFRlc3RSZXN1bHQgKmhpdF90ZXN0X3Jlc3VsdCk7CiAKIFdF
QktJVF9BUEkgY29uc3QgZ2NoYXIgKgotd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9nZXRfbGlua190
aXRsZSAgICAgICAoV2ViS2l0SGl0VGVzdFJlc3VsdCAqaGl0X3Rlc3RfcmVzdWx0KTsKK3dlYmtp
dF9oaXRfdGVzdF9yZXN1bHRfZ2V0X2xpbmtfdGl0bGUgICAgICAgICAoV2ViS2l0SGl0VGVzdFJl
c3VsdCAqaGl0X3Rlc3RfcmVzdWx0KTsKIAogV0VCS0lUX0FQSSBjb25zdCBnY2hhciAqCi13ZWJr
aXRfaGl0X3Rlc3RfcmVzdWx0X2dldF9saW5rX2xhYmVsICAgICAgIChXZWJLaXRIaXRUZXN0UmVz
dWx0ICpoaXRfdGVzdF9yZXN1bHQpOword2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9nZXRfbGlua19s
YWJlbCAgICAgICAgIChXZWJLaXRIaXRUZXN0UmVzdWx0ICpoaXRfdGVzdF9yZXN1bHQpOwogCiBX
RUJLSVRfQVBJIGNvbnN0IGdjaGFyICoKLXdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfZ2V0X2ltYWdl
X3VyaSAgICAgICAgKFdlYktpdEhpdFRlc3RSZXN1bHQgKmhpdF90ZXN0X3Jlc3VsdCk7Cit3ZWJr
aXRfaGl0X3Rlc3RfcmVzdWx0X2dldF9pbWFnZV91cmkgICAgICAgICAgKFdlYktpdEhpdFRlc3RS
ZXN1bHQgKmhpdF90ZXN0X3Jlc3VsdCk7CiAKIFdFQktJVF9BUEkgY29uc3QgZ2NoYXIgKgotd2Vi
a2l0X2hpdF90ZXN0X3Jlc3VsdF9nZXRfbWVkaWFfdXJpICAgICAgICAoV2ViS2l0SGl0VGVzdFJl
c3VsdCAqaGl0X3Rlc3RfcmVzdWx0KTsKK3dlYmtpdF9oaXRfdGVzdF9yZXN1bHRfZ2V0X21lZGlh
X3VyaSAgICAgICAgICAoV2ViS2l0SGl0VGVzdFJlc3VsdCAqaGl0X3Rlc3RfcmVzdWx0KTsKIAog
V0VCS0lUX0FQSSBnYm9vbGVhbgotd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX3Nj
cm9sbGJhciAoV2ViS2l0SGl0VGVzdFJlc3VsdCAqaGl0X3Rlc3RfcmVzdWx0KTsKK3dlYmtpdF9o
aXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19zY3JvbGxiYXIgICAoV2ViS2l0SGl0VGVzdFJlc3Vs
dCAqaGl0X3Rlc3RfcmVzdWx0KTsKKworV0VCS0lUX0FQSSBndWludAord2Via2l0X2hpdF90ZXN0
X3Jlc3VsdF9nZXRfYXZhaWxhYmxlX2NvbW1hbmRzIChXZWJLaXRIaXRUZXN0UmVzdWx0ICpoaXRf
dGVzdF9yZXN1bHQpOwogCiBHX0VORF9ERUNMUwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlv
bnMudHh0CmluZGV4IDk5NTQ5NzA3NTU2YTkzMmQ3ZjdjNTllM2NkMzQ2NTQxN2JiZjRiYzcuLjIw
MzlkNGQyZDFhNTEyNTUwZjc2ZDNiMjM1NTdlOWRmZTg4YzJmYjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMu
dHh0CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0
ay00LjAtc2VjdGlvbnMudHh0CkBAIC03ODcsNiArNzg3LDcgQEAgd2Via2l0X3Jlc3BvbnNlX3Bv
bGljeV9kZWNpc2lvbl9nZXRfdHlwZQogPEZJTEU+V2ViS2l0SGl0VGVzdFJlc3VsdDwvRklMRT4K
IFdlYktpdEhpdFRlc3RSZXN1bHQKIFdlYktpdEhpdFRlc3RSZXN1bHRDb250ZXh0CitXZWJLaXRI
aXRUZXN0UmVzdWx0Q29tbWFuZHMKIHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfZ2V0X2NvbnRleHQK
IHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19saW5rCiB3ZWJraXRfaGl0X3Rlc3Rf
cmVzdWx0X2NvbnRleHRfaXNfaW1hZ2UKQEAgLTc5OSw2ICs4MDAsNyBAQCB3ZWJraXRfaGl0X3Rl
c3RfcmVzdWx0X2dldF9saW5rX2xhYmVsCiB3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2dldF9pbWFn
ZV91cmkKIHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfZ2V0X21lZGlhX3VyaQogd2Via2l0X2hpdF90
ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX3Njcm9sbGJhcgord2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9n
ZXRfYXZhaWxhYmxlX2NvbW1hbmRzCiAKIDxTVUJTRUNUSU9OIFN0YW5kYXJkPgogV2ViS2l0SGl0
VGVzdFJlc3VsdENsYXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1dlYlBhZ2VNYWMubW0KaW5kZXggNjM1OTZkMjZkYjU5NDllNzM5NzUxZTg4YjcxOTdm
ODgyY2FmYzcwZi4uZmQ4OGY4ODQ1NzRjMzEyNTA1Y2JhMzU5ZTUyYjdkMGFjMDYyYzg3OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1h
Yy5tbQpAQCAtMTA2OSw3ICsxMDY5LDcgQEAgdm9pZCBXZWJQYWdlOjpwZXJmb3JtSW1tZWRpYXRl
QWN0aW9uSGl0VGVzdEF0TG9jYXRpb24oV2ViQ29yZTo6RmxvYXRQb2ludCBsb2NhdGkKICAgICAg
ICAgICAgICAgICBpbW1lZGlhdGVBY3Rpb25SZXN1bHQubG9va3VwVGV4dCA9IHNlbGVjdGVkVGV4
dDsKICAgICAgICAgICAgICAgICBpbW1lZGlhdGVBY3Rpb25SZXN1bHQuaXNUZXh0Tm9kZSA9IHRy
dWU7CiAgICAgICAgICAgICAgICAgaW1tZWRpYXRlQWN0aW9uUmVzdWx0LmlzU2VsZWN0ZWQgPSB0
cnVlOwotICAgICAgICAgICAgICAgIGltbWVkaWF0ZUFjdGlvblJlc3VsdC5hbGxvd3NDb3B5ID0g
dHJ1ZTsKKyAgICAgICAgICAgICAgICBpbW1lZGlhdGVBY3Rpb25SZXN1bHQuYWxsb3dlZEVkaXRD
b21tYW5kcyB8PSBXZWJDb3JlOjpXZWJIaXRUZXN0UmVzdWx0OjpFZGl0Q29tbWFuZENvcHk7CiAK
ICAgICAgICAgICAgICAgICBpbW1lZGlhdGVBY3Rpb25SZXN1bHQuZGljdGlvbmFyeVBvcHVwSW5m
byA9IGRpY3Rpb25hcnlQb3B1cEluZm9Gb3JTZWxlY3Rpb25JblBERlBsdWdpbihzZWxlY3Rpb24s
ICpwZGZQdWdpbiwgJm9wdGlvbnMsIFRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9u
OjpGYWRlSW4pOwogICAgICAgICAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319064</attachid>
            <date>2017-08-24 22:22:20 -0700</date>
            <delta_ts>2017-08-25 07:48:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-168219-20170825002219.patch</filename>
            <type>text/plain</type>
            <size>49440</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwOTE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjhhMDhmMDZmMDQzYWQ5
MDZkNTVhNTNmOWFkYzAwMjg2ZWJlY2I4Ni4uNDBkNmVkODdkYTE1YTRlNmJjNDdhYzk2ZDI4NzY2
OTAxOGE0YmY2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE3LTA4LTI0ICBNaWNo
YWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBF
eHBvc2UgZWRpdGluZyBjb21tYW5kIGF2YWlsYWJpbGl0eSBpbiBXZWJLaXRIaXRUZXN0UmVzdWx0
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjgyMTkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNl
IEhpdFRlc3RSZXN1bHQ6OmFsbG93c0NvcHkgd2l0aCBIaXRUZXN0UmVzdWx0OjphbGxvd2VkRWRp
dENvbW1hbmRzLgorCisgICAgICAgICogcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6YWxsb3dlZEVkaXRDb21tYW5kcyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjphbGxvd3NDb3B5IGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oOgorCiAyMDE3LTA4LTE4
ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ2FjaGUgQVBJ
XSBBZGQgYSBXSzIgaW1wbGVtZW50YXRpb24gb2YgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCBlMzhkNzJkZDc5NTRiMWY0MmFmNmUzOGM1ZTI0NDg5NTk2MmFiMmYxLi5hNTIyMmUx
YzhlYWQyNzlhNGEzNWQ4Y2IwZmUyOWQxYjM5MzM5N2I0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDUx
IEBACisyMDE3LTA4LTI0ICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNv
bT4KKworICAgICAgICBbR1RLXSBFeHBvc2UgZWRpdGluZyBjb21tYW5kIGF2YWlsYWJpbGl0eSBp
biBXZWJLaXRIaXRUZXN0UmVzdWx0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNjgyMTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBJIHdhbnQgdG8gZml4IGEgY29udGV4dCBtZW51IGZsaWNrZXJpbmcgcHJv
YmxlbSBpbiBFcGlwaGFueS4gU2luY2Ugd2UgaGF2ZSB0byBzaG93IHRoZQorICAgICAgICBXZWJL
aXRDb250ZXh0TWVudSBpbiBhIFdlYktpdFdlYlZpZXc6OmNvbnRleHQtbWVudSBoYW5kbGVyLCBi
dXQgY2Fubm90IGNoZWNrIHRoZQorICAgICAgICBhdmFpbGFiaWxpdHkgb2YgZWRpdGluZyBjb21t
YW5kcyB0aGVyZSB3aXRob3V0IHVzaW5nIHN5bmMgSVBDLCB3ZSBjdXJyZW50bHkgYXNzdW1lIGFs
bAorICAgICAgICBlZGl0aW5nIGNvbW1hbmRzIGFyZSBhdmFpbGFibGUsIGFkZCB0aGVtIHRvIHRo
ZSBtZW51LCBzdGFydCBxdWVyeWluZyB0aGUgYXZhaWxhYmlsaXR5IHdpdGgKKyAgICAgICAgd2Vi
a2l0X3dlYl92aWV3X2Nhbl9leGVjdXRlX2VkaXRpbmdfY29tbWFuZCgpLCBzaG93IHRoZSBtZW51
LCBhbmQgbGF0ZXIgcmVtb3ZlIHRoZW0gZnJvbSB0aGUKKyAgICAgICAgbWVudSBvbmNlIHRoYXQg
ZmluaXNoZXMsIGNhdXNpbmcgdGhlIGZsaWNrZXIuIChXZWxsLCBtb3JlIGFjY3VyYXRlbHksIHRo
YXQncyB3aGF0IHdlIHVzZWQgdG8KKyAgICAgICAgZG8gcHJpb3IgdG8gRXBpcGhhbnkgMy4yNC4g
Tm93YWRheXMgd2UganVzdCBsZWF2ZSB0aGUgY29udGV4dCBtZW51IGl0ZW1zIGVuYWJsZWQgYXQg
YWxsCisgICAgICAgIHRpbWVzLCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhlIHVuZGVybHlpbmcg
ZWRpdGluZyBjb21tYW5kIGlzIGF2YWlsYWJsZSBvciBub3QsIHdoaWNoIGlzCisgICAgICAgIGV2
ZW4gbW9yZSBicm9rZW4uKQorCisgICAgICAgIEFkZCB3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2dl
dF9hdmFpbGFibGVfY29tbWFuZHMoKSBBUEkgdG8gV2ViS2l0SGl0VGVzdFJlc3VsdCBzbyB0aGF0
CisgICAgICAgIGNvbnRleHQgbWVudSBpdGVtIGF2YWlsYWJpbGl0eSBjYW4gYmUgZGV0ZXJtaW5l
ZCB3aXRob3V0IHJlcXVpcmluZyBmdXJ0aGVyIElQQyB3aGVuIHNob3dpbmcKKyAgICAgICAgdGhl
IGNvbnRleHQgbWVudS4gVGhpcyBpcyBzdXBlcmlvciB0byBzZW5kaW5nIHRoZSBXZWJLaXRDb250
ZXh0TWVudSBmcm9tIHRoZSB3ZWIgcHJvY2VzcyB0bworICAgICAgICB0aGUgVUkgcHJvY2VzcyB3
aXRob3V0IHRoaXMgaW5mb3JtYXRpb24sIGFuZCB0aGVuIHN1YnNlcXVlbnRseSBwZXJmb3JtaW5n
IHNldmVyYWwgSVBDCisgICAgICAgIHF1ZXJpZXMgZnJvbSB0aGUgVUkgcHJvY2VzcyB0byB0aGUg
d2ViIHByb2Nlc3MgdG8gY2hlY2sgdGhlIGF2YWlsYWJpbGl0eSBvZiBlZGl0aW5nCisgICAgICAg
IGNvbW1hbmRzLgorCisgICAgICAgICogU2hhcmVkL0FQSS9nbGliL1dlYktpdEhpdFRlc3RSZXN1
bHQuY3BwOgorICAgICAgICAod2Via2l0SGl0VGVzdFJlc3VsdEdldFByb3BlcnR5KToKKyAgICAg
ICAgKHdlYmtpdEhpdFRlc3RSZXN1bHRTZXRQcm9wZXJ0eSk6CisgICAgICAgICh3ZWJraXRfaGl0
X3Rlc3RfcmVzdWx0X2NsYXNzX2luaXQpOgorICAgICAgICAod2Via2l0SGl0VGVzdFJlc3VsdENy
ZWF0ZSk6CisgICAgICAgICh3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2dldF9hdmFpbGFibGVfY29t
bWFuZHMpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAg
ICAgKiBTaGFyZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJIaXRUZXN0UmVzdWx0RGF0YTo6V2ViSGl0VGVzdFJlc3VsdERhdGEpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJIaXRUZXN0UmVzdWx0RGF0YTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktp
dDo6V2ViSGl0VGVzdFJlc3VsdERhdGE6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYkhp
dFRlc3RSZXN1bHREYXRhLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElIaXRUZXN0UmVz
dWx0Lmg6CisgICAgICAgIChBUEk6OkhpdFRlc3RSZXN1bHQ6OmFsbG93c0N1dCBjb25zdCk6Cisg
ICAgICAgIChBUEk6OkhpdFRlc3RSZXN1bHQ6OmFsbG93c0NvcHkgY29uc3QpOgorICAgICAgICAo
QVBJOjpIaXRUZXN0UmVzdWx0OjphbGxvd3NQYXN0ZSBjb25zdCk6CisgICAgICAgIChBUEk6Okhp
dFRlc3RSZXN1bHQ6OmFsbG93c1VuZG8gY29uc3QpOgorICAgICAgICAoQVBJOjpIaXRUZXN0UmVz
dWx0OjphbGxvd3NSZWRvIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRIaXRUZXN0UmVzdWx0Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJr
aXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS93cGUvV2Vi
S2l0SGl0VGVzdFJlc3VsdC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2Vi
UGFnZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGVyZm9ybUltbWVkaWF0ZUFj
dGlvbkhpdFRlc3RBdExvY2F0aW9uKToKKwogMjAxNy0wOC0xOCAgWW91ZW5uIEZhYmxldCAgPHlv
dWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgW0NhY2hlIEFQSV0gQWRkIGEgV0syIGltcGxlbWVu
dGF0aW9uIG9mIENhY2hlU3RvcmFnZUNvbm5lY3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9IaXRUZXN0UmVzdWx0LmNwcAppbmRleCBiNzI3MGE1MDJhZWVkNzQ3MWNlZDYzNmQ2MWVkNWU1
ZmY4N2Y3YWQ5Li5kNDI3N2JlOTBmZmQyYmIzNGI5Zjk2MGIyN2YwMzFlZGFiYTE1NDdlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCkBAIC01OTYsMTkgKzU5
NiwyOSBAQCBib29sIEhpdFRlc3RSZXN1bHQ6OmlzT3ZlclRleHRJbnNpZGVGb3JtQ29udHJvbEVs
ZW1lbnQoKSBjb25zdAogICAgIHJldHVybiAhd29yZFJhbmdlLT50ZXh0KCkuaXNFbXB0eSgpOwog
fQogCi1ib29sIEhpdFRlc3RSZXN1bHQ6OmFsbG93c0NvcHkoKSBjb25zdAorYXV0byBIaXRUZXN0
UmVzdWx0OjphbGxvd2VkRWRpdENvbW1hbmRzKCkgY29uc3QgLT4gRWRpdENvbW1hbmRzCiB7Ci0g
ICAgTm9kZSogbm9kZSA9IGlubmVyTm9kZSgpOwotICAgIGlmICghbm9kZSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIGludCBjb21tYW5kcyA9IEVkaXRDb21tYW5kTm9uZTsKIAotICAgIFJl
bmRlck9iamVjdCogcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigpOwotICAgIGlmICghcmVuZGVy
ZXIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIW1faW5uZXJOb25TaGFyZWROb2Rl
KQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RWRpdENvbW1hbmRzPihjb21tYW5kcyk7CiAK
LSAgICBib29sIGlzVXNlclNlbGVjdE5vbmUgPSByZW5kZXJlci0+c3R5bGUoKS51c2VyU2VsZWN0
KCkgPT0gU0VMRUNUX05PTkU7Ci0gICAgYm9vbCBpc1Bhc3N3b3JkRmllbGQgPSBpczxIVE1MSW5w
dXRFbGVtZW50Pihub2RlKSAmJiBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50Pigqbm9kZSkuaXNQ
YXNzd29yZEZpZWxkKCk7Ci0gICAgcmV0dXJuICFpc1Bhc3N3b3JkRmllbGQgJiYgIWlzVXNlclNl
bGVjdE5vbmU7CisgICAgRnJhbWUqIGZyYW1lID0gaW5uZXJOb25TaGFyZWROb2RlKCktPmRvY3Vt
ZW50KCkuZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8RWRpdENvbW1hbmRzPihjb21tYW5kcyk7CisKKyAgICBpZiAoZnJhbWUtPmVkaXRvcigpLmNh
bkN1dCgpKQorICAgICAgICBjb21tYW5kcyB8PSBFZGl0Q29tbWFuZEN1dDsKKyAgICBpZiAoZnJh
bWUtPmVkaXRvcigpLmNhbkNvcHkoKSkKKyAgICAgICAgY29tbWFuZHMgfD0gRWRpdENvbW1hbmRD
b3B5OworICAgIGlmIChmcmFtZS0+ZWRpdG9yKCkuY2FuUGFzdGUoKSkKKyAgICAgICAgY29tbWFu
ZHMgfD0gRWRpdENvbW1hbmRQYXN0ZTsKKyAgICBpZiAoZnJhbWUtPmVkaXRvcigpLmNhblVuZG8o
KSkKKyAgICAgICAgY29tbWFuZHMgfD0gRWRpdENvbW1hbmRVbmRvOworICAgIGlmIChmcmFtZS0+
ZWRpdG9yKCkuY2FuUmVkbygpKQorICAgICAgICBjb21tYW5kcyB8PSBFZGl0Q29tbWFuZFJlZG87
CisKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RWRpdENvbW1hbmRzPihjb21tYW5kcyk7CiB9CiAK
IFVSTCBIaXRUZXN0UmVzdWx0OjphYnNvbHV0ZUxpbmtVUkwoKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmgKaW5kZXggYmEyZDdhMmE1OTBiNWE3NDU0YjVhZjRk
Y2I5Njg2MmFjOWY4MDJlZC4uMThmYjg2MjUyMTEyZjM5ZWY5YzBiM2U0ODlhNzFkNzdmNjc2ZTQ4
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oCkBAIC0xMzEsNyAr
MTMxLDE2IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNEb3dubG9hZGFi
bGVNZWRpYSgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNPdmVyVGV4dEluc2lk
ZUZvcm1Db250cm9sRWxlbWVudCgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgYWxs
b3dzQ29weSgpIGNvbnN0OworCisgICAgZW51bSBFZGl0Q29tbWFuZHMgeworICAgICAgICBFZGl0
Q29tbWFuZE5vbmUgPSAwLAorICAgICAgICBFZGl0Q29tbWFuZEN1dCA9IDEgPDwgMCwKKyAgICAg
ICAgRWRpdENvbW1hbmRDb3B5ID0gMSA8PCAxLAorICAgICAgICBFZGl0Q29tbWFuZFBhc3RlID0g
MSA8PCAyLAorICAgICAgICBFZGl0Q29tbWFuZFVuZG8gPSAxIDw8IDMsCisgICAgICAgIEVkaXRD
b21tYW5kUmVkbyA9IDEgPDwgNCwKKyAgICB9OworICAgIFdFQkNPUkVfRVhQT1JUIEVkaXRDb21t
YW5kcyBhbGxvd2VkRWRpdENvbW1hbmRzKCkgY29uc3Q7CiAKICAgICBIaXRUZXN0UHJvZ3Jlc3Mg
YWRkTm9kZVRvTGlzdEJhc2VkVGVzdFJlc3VsdChOb2RlKiwgY29uc3QgSGl0VGVzdFJlcXVlc3Qm
LCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIHBvaW50SW5Db250YWluZXIsIGNvbnN0IExheW91dFJl
Y3QmID0gTGF5b3V0UmVjdCgpKTsKICAgICBIaXRUZXN0UHJvZ3Jlc3MgYWRkTm9kZVRvTGlzdEJh
c2VkVGVzdFJlc3VsdChOb2RlKiwgY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBjb25zdCBIaXRUZXN0
TG9jYXRpb24mIHBvaW50SW5Db250YWluZXIsIGNvbnN0IEZsb2F0UmVjdCYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2dsaWIvV2ViS2l0SGl0VGVzdFJlc3VsdC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRIaXRUZXN0UmVzdWx0LmNwcApp
bmRleCAzZjhhNmJjZDUxOTE4Y2IxNmRiZjU2N2M5MmE0NzE4MzMxMWZiY2M1Li45NTVmZWYyYTk0
YTk5NTkxYTA3NzNjYmIwMWEwY2EyZjlkY2ZhZDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRIaXRUZXN0UmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRIaXRUZXN0UmVzdWx0LmNwcApAQCAtMjEsNiArMjEs
NyBAQAogI2luY2x1ZGUgIldlYktpdEhpdFRlc3RSZXN1bHQuaCIKIAogI2luY2x1ZGUgIldlYkhp
dFRlc3RSZXN1bHREYXRhLmgiCisjaW5jbHVkZSAiV2ViS2l0RW51bVR5cGVzLmgiCiAjaW5jbHVk
ZSAiV2ViS2l0SGl0VGVzdFJlc3VsdFByaXZhdGUuaCIKICNpbmNsdWRlIDxnbGliL2dpMThuLWxp
Yi5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL1dURkdUeXBlLmg+CkBAIC01OSw2ICs2MCw3IEBAIGVu
dW0gewogICAgIFBST1BfMCwKIAogICAgIFBST1BfQ09OVEVYVCwKKyAgICBQUk9QX0NPTU1BTkRT
LAogICAgIFBST1BfTElOS19VUkksCiAgICAgUFJPUF9MSU5LX1RJVExFLAogICAgIFBST1BfTElO
S19MQUJFTCwKQEAgLTY3LDcgKzY5LDggQEAgZW51bSB7CiB9OwogCiBzdHJ1Y3QgX1dlYktpdEhp
dFRlc3RSZXN1bHRQcml2YXRlIHsKLSAgICB1bnNpZ25lZCBpbnQgY29udGV4dDsKKyAgICB1bnNp
Z25lZCBjb250ZXh0OworICAgIFdlYktpdEhpdFRlc3RSZXN1bHRDb21tYW5kcyBjb21tYW5kczsK
ICAgICBDU3RyaW5nIGxpbmtVUkk7CiAgICAgQ1N0cmluZyBsaW5rVGl0bGU7CiAgICAgQ1N0cmlu
ZyBsaW5rTGFiZWw7CkBAIC04NSw2ICs4OCw5IEBAIHN0YXRpYyB2b2lkIHdlYmtpdEhpdFRlc3RS
ZXN1bHRHZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwgR1ZhbHVlCiAg
ICAgY2FzZSBQUk9QX0NPTlRFWFQ6CiAgICAgICAgIGdfdmFsdWVfc2V0X3VpbnQodmFsdWUsIHdl
YmtpdF9oaXRfdGVzdF9yZXN1bHRfZ2V0X2NvbnRleHQoaGl0VGVzdFJlc3VsdCkpOwogICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFBST1BfQ09NTUFORFM6CisgICAgICAgIGdfdmFsdWVfc2V0X2Zs
YWdzKHZhbHVlLCBzdGF0aWNfY2FzdDxndWludD4od2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9nZXRf
YXZhaWxhYmxlX2NvbW1hbmRzKGhpdFRlc3RSZXN1bHQpKSk7CisgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgUFJPUF9MSU5LX1VSSToKICAgICAgICAgZ192YWx1ZV9zZXRfc3RyaW5nKHZhbHVlLCB3
ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2dldF9saW5rX3VyaShoaXRUZXN0UmVzdWx0KSk7CiAgICAg
ICAgIGJyZWFrOwpAQCAtMTEzLDYgKzExOSw5IEBAIHN0YXRpYyB2b2lkIHdlYmtpdEhpdFRlc3RS
ZXN1bHRTZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwgY29uc3QKICAg
ICBjYXNlIFBST1BfQ09OVEVYVDoKICAgICAgICAgaGl0VGVzdFJlc3VsdC0+cHJpdi0+Y29udGV4
dCA9IGdfdmFsdWVfZ2V0X3VpbnQodmFsdWUpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFBS
T1BfQ09NTUFORFM6CisgICAgICAgIGhpdFRlc3RSZXN1bHQtPnByaXYtPmNvbW1hbmRzID0gc3Rh
dGljX2Nhc3Q8V2ViS2l0SGl0VGVzdFJlc3VsdENvbW1hbmRzPihnX3ZhbHVlX2dldF9mbGFncyh2
YWx1ZSkpOworICAgICAgICBicmVhazsKICAgICBjYXNlIFBST1BfTElOS19VUkk6CiAgICAgICAg
IGhpdFRlc3RSZXN1bHQtPnByaXYtPmxpbmtVUkkgPSBnX3ZhbHVlX2dldF9zdHJpbmcodmFsdWUp
OwogICAgICAgICBicmVhazsKQEAgLTE1Niw2ICsxNjUsMjMgQEAgc3RhdGljIHZvaWQgd2Via2l0
X2hpdF90ZXN0X3Jlc3VsdF9jbGFzc19pbml0KFdlYktpdEhpdFRlc3RSZXN1bHRDbGFzcyogaGl0
VGVzdFIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHBhcmFtRmxhZ3MpKTsKIAogICAgIC8qKgorICAgICAqIFdlYktpdEhpdFRlc3RSZXN1bHQ6
Y29tbWFuZHM6CisgICAgICoKKyAgICAgKiBCaXRtYXNrIG9mICNXZWJLaXRIaXRUZXN0UmVzdWx0
Q29tbWFuZHMgZmxhZ3MgcmVwcmVzZW50aW5nIHRoZQorICAgICAqIGF2YWlsYWJsZSBlZGl0IGNv
bW1hbmRzIHRoYXQgY2FuIGJlIHBlcmZvcm1lZCBhdCB0aGUgcmVzdWx0LgorICAgICAqCisgICAg
ICogU2luY2U6IDIuMjAKKyAgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3Bl
cnR5KG9iamVjdENsYXNzLAorICAgICAgICBQUk9QX0NPTU1BTkRTLAorICAgICAgICBnX3BhcmFt
X3NwZWNfZmxhZ3MoImNvbW1hbmRzIiwKKyAgICAgICAgICAgIF8oIkNvbW1hbmRzIiksCisgICAg
ICAgICAgICBfKCJGbGFncyBmb3IgdGhlIGF2YWlsYWJsZSBlZGl0IGNvbW1hbmRzIGF0IHRoZSBX
ZWJLaXRIaXRUZXN0UmVzdWx0IiksCisgICAgICAgICAgICBXRUJLSVRfVFlQRV9ISVRfVEVTVF9S
RVNVTFRfQ09NTUFORFMsCisgICAgICAgICAgICAwLAorICAgICAgICAgICAgcGFyYW1GbGFncykp
OworCisgICAgLyoqCiAgICAgICogV2ViS2l0SGl0VGVzdFJlc3VsdDpsaW5rLXVyaToKICAgICAg
KgogICAgICAqIFRoZSBVUkkgb2YgdGhlIGxpbmsgaWYgZmxhZyAlV0VCS0lUX0hJVF9URVNUX1JF
U1VMVF9DT05URVhUX0xJTksKQEAgLTIyNSwyNyArMjUxLDM0IEBAIHN0YXRpYyB2b2lkIHdlYmtp
dF9oaXRfdGVzdF9yZXN1bHRfY2xhc3NfaW5pdChXZWJLaXRIaXRUZXN0UmVzdWx0Q2xhc3MqIGhp
dFRlc3RSCiBXZWJLaXRIaXRUZXN0UmVzdWx0KiB3ZWJraXRIaXRUZXN0UmVzdWx0Q3JlYXRlKGNv
bnN0IFdlYkhpdFRlc3RSZXN1bHREYXRhJiBoaXRUZXN0UmVzdWx0KQogewogICAgIHVuc2lnbmVk
IGNvbnRleHQgPSBXRUJLSVRfSElUX1RFU1RfUkVTVUxUX0NPTlRFWFRfRE9DVU1FTlQ7Ci0KICAg
ICBpZiAoIWhpdFRlc3RSZXN1bHQuYWJzb2x1dGVMaW5rVVJMLmlzRW1wdHkoKSkKICAgICAgICAg
Y29udGV4dCB8PSBXRUJLSVRfSElUX1RFU1RfUkVTVUxUX0NPTlRFWFRfTElOSzsKLQogICAgIGlm
ICghaGl0VGVzdFJlc3VsdC5hYnNvbHV0ZUltYWdlVVJMLmlzRW1wdHkoKSkKICAgICAgICAgY29u
dGV4dCB8PSBXRUJLSVRfSElUX1RFU1RfUkVTVUxUX0NPTlRFWFRfSU1BR0U7Ci0KICAgICBpZiAo
IWhpdFRlc3RSZXN1bHQuYWJzb2x1dGVNZWRpYVVSTC5pc0VtcHR5KCkpCiAgICAgICAgIGNvbnRl
eHQgfD0gV0VCS0lUX0hJVF9URVNUX1JFU1VMVF9DT05URVhUX01FRElBOwotCiAgICAgaWYgKGhp
dFRlc3RSZXN1bHQuaXNDb250ZW50RWRpdGFibGUpCiAgICAgICAgIGNvbnRleHQgfD0gV0VCS0lU
X0hJVF9URVNUX1JFU1VMVF9DT05URVhUX0VESVRBQkxFOwotCiAgICAgaWYgKGhpdFRlc3RSZXN1
bHQuaXNTY3JvbGxiYXIpCiAgICAgICAgIGNvbnRleHQgfD0gV0VCS0lUX0hJVF9URVNUX1JFU1VM
VF9DT05URVhUX1NDUk9MTEJBUjsKLQogICAgIGlmIChoaXRUZXN0UmVzdWx0LmlzU2VsZWN0ZWQp
CiAgICAgICAgIGNvbnRleHQgfD0gV0VCS0lUX0hJVF9URVNUX1JFU1VMVF9DT05URVhUX1NFTEVD
VElPTjsKIAorICAgIHVuc2lnbmVkIGNvbW1hbmRzID0gMDsKKyAgICBpZiAoaGl0VGVzdFJlc3Vs
dC5hbGxvd2VkRWRpdENvbW1hbmRzICYgV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6RWRpdENvbW1h
bmRDdXQpCisgICAgICAgIGNvbW1hbmRzIHw9IFdFQktJVF9ISVRfVEVTVF9SRVNVTFRfQ0FOX0NV
VDsKKyAgICBpZiAoaGl0VGVzdFJlc3VsdC5hbGxvd2VkRWRpdENvbW1hbmRzICYgV2ViQ29yZTo6
SGl0VGVzdFJlc3VsdDo6RWRpdENvbW1hbmRDb3B5KQorICAgICAgICBjb21tYW5kcyB8PSBXRUJL
SVRfSElUX1RFU1RfUkVTVUxUX0NBTl9DT1BZOworICAgIGlmIChoaXRUZXN0UmVzdWx0LmFsbG93
ZWRFZGl0Q29tbWFuZHMgJiBXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjpFZGl0Q29tbWFuZFBhc3Rl
KQorICAgICAgICBjb21tYW5kcyB8PSBXRUJLSVRfSElUX1RFU1RfUkVTVUxUX0NBTl9QQVNURTsK
KyAgICBpZiAoaGl0VGVzdFJlc3VsdC5hbGxvd2VkRWRpdENvbW1hbmRzICYgV2ViQ29yZTo6SGl0
VGVzdFJlc3VsdDo6RWRpdENvbW1hbmRVbmRvKQorICAgICAgICBjb21tYW5kcyB8PSBXRUJLSVRf
SElUX1RFU1RfUkVTVUxUX0NBTl9VTkRPOworICAgIGlmIChoaXRUZXN0UmVzdWx0LmFsbG93ZWRF
ZGl0Q29tbWFuZHMgJiBXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjpFZGl0Q29tbWFuZFJlZG8pCisg
ICAgICAgIGNvbW1hbmRzIHw9IFdFQktJVF9ISVRfVEVTVF9SRVNVTFRfQ0FOX1JFRE87CisKICAg
ICByZXR1cm4gV0VCS0lUX0hJVF9URVNUX1JFU1VMVChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVf
SElUX1RFU1RfUkVTVUxULAogICAgICAgICAiY29udGV4dCIsIGNvbnRleHQsCisgICAgICAgICJj
b21tYW5kcyIsIGNvbW1hbmRzLAogICAgICAgICAibGluay11cmkiLCBjb250ZXh0ICYgV0VCS0lU
X0hJVF9URVNUX1JFU1VMVF9DT05URVhUX0xJTksgPyBoaXRUZXN0UmVzdWx0LmFic29sdXRlTGlu
a1VSTC51dGY4KCkuZGF0YSgpIDogbnVsbHB0ciwKICAgICAgICAgImltYWdlLXVyaSIsIGNvbnRl
eHQgJiBXRUJLSVRfSElUX1RFU1RfUkVTVUxUX0NPTlRFWFRfSU1BR0UgPyBoaXRUZXN0UmVzdWx0
LmFic29sdXRlSW1hZ2VVUkwudXRmOCgpLmRhdGEoKSA6IG51bGxwdHIsCiAgICAgICAgICJtZWRp
YS11cmkiLCBjb250ZXh0ICYgV0VCS0lUX0hJVF9URVNUX1JFU1VMVF9DT05URVhUX01FRElBID8g
aGl0VGVzdFJlc3VsdC5hYnNvbHV0ZU1lZGlhVVJMLnV0ZjgoKS5kYXRhKCkgOiBudWxscHRyLApA
QCAtNDcyLDMgKzUwNSwyMSBAQCBnYm9vbGVhbiB3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRl
eHRfaXNfc2Nyb2xsYmFyKFdlYktpdEhpdFRlc3RSZXN1bHQqIGhpdFRlcwogCiAgICAgcmV0dXJu
IGhpdFRlc3RSZXN1bHQtPnByaXYtPmNvbnRleHQgJiBXRUJLSVRfSElUX1RFU1RfUkVTVUxUX0NP
TlRFWFRfU0NST0xMQkFSOwogfQorCisvKioKKyAqIHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfZ2V0
X2F2YWlsYWJsZV9jb21tYW5kczoKKyAqIEBoaXRfdGVzdF9yZXN1bHQ6IGEgI1dlYktpdEhpdFRl
c3RSZXN1bHQKKyAqCisgKiBHZXRzIGNvbW1hbmRzIHRoYXQgYXJlIGF2YWlsYWJsZSB0byBiZSBw
ZXJmb3JtZWQgYXQgdGhlIGxvY2F0aW9uIG9mCisgKiBAaGl0X3Rlc3RfcmVzdWx0LgorICoKKyAq
IFJldHVybnM6IHRoZSBhdmFpbGFibGUgY29tbWFuZHMKKyAqCisgKiBTaW5jZTogMi4yMAorICov
CitXZWJLaXRIaXRUZXN0UmVzdWx0Q29tbWFuZHMgd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9nZXRf
YXZhaWxhYmxlX2NvbW1hbmRzKFdlYktpdEhpdFRlc3RSZXN1bHQqIGhpdFRlc3RSZXN1bHQpCit7
CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX0hJVF9URVNUX1JFU1VMVChoaXRU
ZXN0UmVzdWx0KSwgc3RhdGljX2Nhc3Q8V2ViS2l0SGl0VGVzdFJlc3VsdENvbW1hbmRzPigwKSk7
CisKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViS2l0SGl0VGVzdFJlc3VsdENvbW1hbmRzPiho
aXRUZXN0UmVzdWx0LT5wcml2LT5jb21tYW5kcyk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IDY3ZWRhZjg3NGQ1MDdlOTY1ZDIxYmY1Mjhi
MWJkM2I2ZmM3NWVhY2MuLmI2YzA0NDU4YjVmYTY2NTUwNGFiMjgxMjIzY2M2ZmU1Mzg4ZTE3NWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC0z
Miw2ICszMiw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Db2xvclNwYWNlLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9EaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJh
bWVMb2FkZXJUeXBlcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSGl0VGVzdFJlc3VsdC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvSW5kZXhlZERCLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVNlbGVj
dGlvbk9wdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya0xvYWRNZXRyaWNzLmg+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0YS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0YS5jcHAKaW5kZXggZjNl
NmE1ZTdiNDZkYWRlZTc3ZDNkOTA1ZTYyYWMyNDA3OThjMjY2My4uYzFjOGMyM2UxZTczNzMwMDgw
YzU1MzFiMjBlNzlhOTQ0NmRiNWI5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViSGl0VGVzdFJlc3VsdERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkhp
dFRlc3RSZXN1bHREYXRhLmNwcApAQCAtNTMsOCArNTMsOCBAQCBXZWJIaXRUZXN0UmVzdWx0RGF0
YTo6V2ViSGl0VGVzdFJlc3VsdERhdGEoY29uc3QgV2ViQ29yZTo6SGl0VGVzdFJlc3VsdCYgaGl0
VGVzdAogICAgICwgaXNTZWxlY3RlZChoaXRUZXN0UmVzdWx0LmlzU2VsZWN0ZWQoKSkKICAgICAs
IGlzVGV4dE5vZGUoaGl0VGVzdFJlc3VsdC5pbm5lck5vZGUoKSAmJiBoaXRUZXN0UmVzdWx0Lmlu
bmVyTm9kZSgpLT5pc1RleHROb2RlKCkpCiAgICAgLCBpc092ZXJUZXh0SW5zaWRlRm9ybUNvbnRy
b2xFbGVtZW50KGhpdFRlc3RSZXN1bHQuaXNPdmVyVGV4dEluc2lkZUZvcm1Db250cm9sRWxlbWVu
dCgpKQotICAgICwgYWxsb3dzQ29weShoaXRUZXN0UmVzdWx0LmFsbG93c0NvcHkoKSkKICAgICAs
IGlzRG93bmxvYWRhYmxlTWVkaWEoaGl0VGVzdFJlc3VsdC5pc0Rvd25sb2FkYWJsZU1lZGlhKCkp
CisgICAgLCBhbGxvd2VkRWRpdENvbW1hbmRzKHN0YXRpY19jYXN0PHVuc2lnbmVkPihoaXRUZXN0
UmVzdWx0LmFsbG93ZWRFZGl0Q29tbWFuZHMoKSkpCiAgICAgLCBpbWFnZVNpemUoMCkKIHsKIH0K
QEAgLTczLDggKzczLDggQEAgV2ViSGl0VGVzdFJlc3VsdERhdGE6OldlYkhpdFRlc3RSZXN1bHRE
YXRhKGNvbnN0IFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQmIGhpdFRlc3QKICAgICAsIGlzU2VsZWN0
ZWQoaGl0VGVzdFJlc3VsdC5pc1NlbGVjdGVkKCkpCiAgICAgLCBpc1RleHROb2RlKGhpdFRlc3RS
ZXN1bHQuaW5uZXJOb2RlKCkgJiYgaGl0VGVzdFJlc3VsdC5pbm5lck5vZGUoKS0+aXNUZXh0Tm9k
ZSgpKQogICAgICwgaXNPdmVyVGV4dEluc2lkZUZvcm1Db250cm9sRWxlbWVudChoaXRUZXN0UmVz
dWx0LmlzT3ZlclRleHRJbnNpZGVGb3JtQ29udHJvbEVsZW1lbnQoKSkKLSAgICAsIGFsbG93c0Nv
cHkoaGl0VGVzdFJlc3VsdC5hbGxvd3NDb3B5KCkpCiAgICAgLCBpc0Rvd25sb2FkYWJsZU1lZGlh
KGhpdFRlc3RSZXN1bHQuaXNEb3dubG9hZGFibGVNZWRpYSgpKQorICAgICwgYWxsb3dlZEVkaXRD
b21tYW5kcyhzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaGl0VGVzdFJlc3VsdC5hbGxvd2VkRWRpdENv
bW1hbmRzKCkpKQogICAgICwgaW1hZ2VTaXplKDApCiB7CiAgICAgaWYgKCFpbmNsdWRlSW1hZ2Up
CkBAIC0xMDksOCArMTA5LDggQEAgdm9pZCBXZWJIaXRUZXN0UmVzdWx0RGF0YTo6ZW5jb2RlKElQ
Qzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IGlzU2VsZWN0ZWQ7CiAg
ICAgZW5jb2RlciA8PCBpc1RleHROb2RlOwogICAgIGVuY29kZXIgPDwgaXNPdmVyVGV4dEluc2lk
ZUZvcm1Db250cm9sRWxlbWVudDsKLSAgICBlbmNvZGVyIDw8IGFsbG93c0NvcHk7CiAgICAgZW5j
b2RlciA8PCBpc0Rvd25sb2FkYWJsZU1lZGlhOworICAgIGVuY29kZXIgPDwgYWxsb3dlZEVkaXRD
b21tYW5kczsKICAgICBlbmNvZGVyIDw8IGxvb2t1cFRleHQ7CiAgICAgZW5jb2RlciA8PCBkaWN0
aW9uYXJ5UG9wdXBJbmZvOwogCkBAIC0xNDMsOCArMTQzLDggQEAgYm9vbCBXZWJIaXRUZXN0UmVz
dWx0RGF0YTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgV2ViSGl0VGVzdFJlc3VsdERh
dGEmIGgKICAgICAgICAgfHwgIWRlY29kZXIuZGVjb2RlKGhpdFRlc3RSZXN1bHREYXRhLmlzU2Vs
ZWN0ZWQpCiAgICAgICAgIHx8ICFkZWNvZGVyLmRlY29kZShoaXRUZXN0UmVzdWx0RGF0YS5pc1Rl
eHROb2RlKQogICAgICAgICB8fCAhZGVjb2Rlci5kZWNvZGUoaGl0VGVzdFJlc3VsdERhdGEuaXNP
dmVyVGV4dEluc2lkZUZvcm1Db250cm9sRWxlbWVudCkKLSAgICAgICAgfHwgIWRlY29kZXIuZGVj
b2RlKGhpdFRlc3RSZXN1bHREYXRhLmFsbG93c0NvcHkpCiAgICAgICAgIHx8ICFkZWNvZGVyLmRl
Y29kZShoaXRUZXN0UmVzdWx0RGF0YS5pc0Rvd25sb2FkYWJsZU1lZGlhKQorICAgICAgICB8fCAh
ZGVjb2Rlci5kZWNvZGUoaGl0VGVzdFJlc3VsdERhdGEuYWxsb3dlZEVkaXRDb21tYW5kcykKICAg
ICAgICAgfHwgIWRlY29kZXIuZGVjb2RlKGhpdFRlc3RSZXN1bHREYXRhLmxvb2t1cFRleHQpCiAg
ICAgICAgIHx8ICFkZWNvZGVyLmRlY29kZShoaXRUZXN0UmVzdWx0RGF0YS5kaWN0aW9uYXJ5UG9w
dXBJbmZvKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkhpdFRlc3RSZXN1bHREYXRhLmgKaW5kZXggMzI0NjhhYmE5Yzc1NjMxNzkwYTgwMGM4MmIxOGUw
ZDAwYWVkOTBjNS4uZmQxNGJmNjNmNjg3OWJlMzQ4N2NhMWJhY2RhMzBkZjlhNmY1MmYwMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0YS5oCkBAIC0yNCw2ICsy
NCw3IEBACiAjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9EaWN0
aW9uYXJ5UG9wdXBJbmZvLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFBvaW50Lmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9IaXRUZXN0UmVzdWx0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlT3ZlcmxheS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CkBAIC01Nyw5ICs1OCwxMCBAQCBzdHJ1Y3QgV2ViSGl0VGVzdFJlc3VsdERhdGEgewog
ICAgIGJvb2wgaXNTZWxlY3RlZDsKICAgICBib29sIGlzVGV4dE5vZGU7CiAgICAgYm9vbCBpc092
ZXJUZXh0SW5zaWRlRm9ybUNvbnRyb2xFbGVtZW50OwotICAgIGJvb2wgYWxsb3dzQ29weTsKICAg
ICBib29sIGlzRG93bmxvYWRhYmxlTWVkaWE7CiAKKyAgICB1bnNpZ25lZCBhbGxvd2VkRWRpdENv
bW1hbmRzOworCiAgICAgU3RyaW5nIGxvb2t1cFRleHQ7CiAgICAgUmVmUHRyPFdlYktpdDo6U2hh
cmVkTWVtb3J5PiBpbWFnZVNoYXJlZE1lbW9yeTsKICAgICB1aW50NjRfdCBpbWFnZVNpemU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSGl0VGVzdFJlc3VsdC5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhpdFRlc3RSZXN1bHQuaAppbmRleCBj
ZDkzOWM5YjBhODdjY2MxYzY0N2JhYTJhOGE5MjcwNjlkYThmNmQ0Li42ZDkyYzE3YWM2YWMwNmJl
OWE4YmVkMjg2MGZmZjA2ZjA0MTMwODZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJSGl0VGVzdFJlc3VsdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElIaXRUZXN0UmVzdWx0LmgKQEAgLTcwLDcgKzcwLDExIEBAIHB1YmxpYzoKIAogICAg
IGJvb2wgaXNPdmVyVGV4dEluc2lkZUZvcm1Db250cm9sRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJu
IG1fZGF0YS5pc092ZXJUZXh0SW5zaWRlRm9ybUNvbnRyb2xFbGVtZW50OyB9CiAKLSAgICBib29s
IGFsbG93c0NvcHkoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuYWxsb3dzQ29weTsgfQorICAgIGJv
b2wgYWxsb3dzQ3V0KCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmFsbG93ZWRFZGl0Q29tbWFuZHMg
JiBXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjpFZGl0Q29tbWFuZEN1dDsgfQorICAgIGJvb2wgYWxs
b3dzQ29weSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5hbGxvd2VkRWRpdENvbW1hbmRzICYgV2Vi
Q29yZTo6SGl0VGVzdFJlc3VsdDo6RWRpdENvbW1hbmRDb3B5OyB9CisgICAgYm9vbCBhbGxvd3NQ
YXN0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5hbGxvd2VkRWRpdENvbW1hbmRzICYgV2ViQ29y
ZTo6SGl0VGVzdFJlc3VsdDo6RWRpdENvbW1hbmRQYXN0ZTsgfQorICAgIGJvb2wgYWxsb3dzVW5k
bygpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5hbGxvd2VkRWRpdENvbW1hbmRzICYgV2ViQ29yZTo6
SGl0VGVzdFJlc3VsdDo6RWRpdENvbW1hbmRVbmRvOyB9CisgICAgYm9vbCBhbGxvd3NSZWRvKCkg
Y29uc3QgeyByZXR1cm4gbV9kYXRhLmFsbG93ZWRFZGl0Q29tbWFuZHMgJiBXZWJDb3JlOjpIaXRU
ZXN0UmVzdWx0OjpFZGl0Q29tbWFuZFJlZG87IH0KIAogICAgIGJvb2wgaXNEb3dubG9hZGFibGVN
ZWRpYSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5pc0Rvd25sb2FkYWJsZU1lZGlhOyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0SGl0VGVzdFJl
c3VsdC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRIaXRUZXN0UmVz
dWx0LmgKaW5kZXggNzE4NTczYjkwMDRmNzBhNWYyZTFiYjQwZWViNTBiNzJlN2VmZjI1Zi4uMWY5
MjMzZDRmNzFjYWJjZmEwYzc4ZWMwM2M5MDc0MjMyNDI3Yjc1NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRIaXRUZXN0UmVzdWx0LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRIaXRUZXN0UmVzdWx0LmgKQEAgLTYz
LDYgKzYzLDI4IEBAIHR5cGVkZWYgZW51bQogICAgIFdFQktJVF9ISVRfVEVTVF9SRVNVTFRfQ09O
VEVYVF9TRUxFQ1RJT04gPSAxIDw8IDcKIH0gV2ViS2l0SGl0VGVzdFJlc3VsdENvbnRleHQ7CiAK
Ky8qKgorICogV2ViS2l0SGl0VGVzdFJlc3VsdENvbW1hbmRzOgorICogQFdFQktJVF9ISVRfVEVT
VF9SRVNVTFRfQ0FOX0NVVDogd2hldGhlciBpdCBpcyBwb3NzaWJsZSB0byBjdXQgdGV4dC4KKyAq
IEBXRUJLSVRfSElUX1RFU1RfUkVTVUxUX0NBTl9DT1BZOiB3aGV0aGVyIGl0IGlzIHBvc3NpYmxl
IHRvIGNvcHkgdGV4dC4KKyAqIEBXRUJLSVRfSElUX1RFU1RfUkVTVUxUX0NBTl9QQVNURTogd2hl
dGhlciBpdCBpcyBwb3NzaWJsZSB0byBwYXN0ZSB0ZXh0LgorICogQFdFQktJVF9ISVRfVEVTVF9S
RVNVTFRfQ0FOX1VORE86IHdoZXRoZXIgaXQgaXMgcG9zc2libGUgdG8gdW5kby4KKyAqIEBXRUJL
SVRfSElUX1RFU1RfUkVTVUxUX0NBTl9SRURPOiB3aGV0aGVyIGl0IGlzIHBvc3NpYmxlIHRvIHJl
ZG8uCisgKgorICogRW51bSB2YWx1ZXMgd2l0aCBmbGFncyByZXByZXNlbnRpbmcgY29tbWFuZHMg
dGhhdCBjYW4gYmUgcGVyZm9ybWVkIGF0CisgKiBoaXQgdGVzdCBsb2NhdGlvbnMuCisgKgorICog
U2luY2U6IDIuMjAKKyAqLwordHlwZWRlZiBlbnVtCit7CisgICAgV0VCS0lUX0hJVF9URVNUX1JF
U1VMVF9DQU5fQ1VUICAgID0gMSA8PCAwLAorICAgIFdFQktJVF9ISVRfVEVTVF9SRVNVTFRfQ0FO
X0NPUFkgICA9IDEgPDwgMSwKKyAgICBXRUJLSVRfSElUX1RFU1RfUkVTVUxUX0NBTl9QQVNURSAg
PSAxIDw8IDIsCisgICAgV0VCS0lUX0hJVF9URVNUX1JFU1VMVF9DQU5fVU5ETyAgID0gMSA8PCAz
LAorICAgIFdFQktJVF9ISVRfVEVTVF9SRVNVTFRfQ0FOX1JFRE8gICA9IDEgPDwgNAorfSBXZWJL
aXRIaXRUZXN0UmVzdWx0Q29tbWFuZHM7CisKIHN0cnVjdCBfV2ViS2l0SGl0VGVzdFJlc3VsdCB7
CiAgICAgR09iamVjdCBwYXJlbnQ7CiAKQEAgLTc5LDQzICsxMDEsNDYgQEAgc3RydWN0IF9XZWJL
aXRIaXRUZXN0UmVzdWx0Q2xhc3MgewogfTsKIAogV0VCS0lUX0FQSSBHVHlwZQotd2Via2l0X2hp
dF90ZXN0X3Jlc3VsdF9nZXRfdHlwZSAgICAgICAgICAgICAodm9pZCk7Cit3ZWJraXRfaGl0X3Rl
c3RfcmVzdWx0X2dldF90eXBlICAgICAgICAgICAgICAgKHZvaWQpOwogCiBXRUJLSVRfQVBJIGd1
aW50Ci13ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2dldF9jb250ZXh0ICAgICAgICAgIChXZWJLaXRI
aXRUZXN0UmVzdWx0ICpoaXRfdGVzdF9yZXN1bHQpOword2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9n
ZXRfY29udGV4dCAgICAgICAgICAgIChXZWJLaXRIaXRUZXN0UmVzdWx0ICpoaXRfdGVzdF9yZXN1
bHQpOwogCiBXRUJLSVRfQVBJIGdib29sZWFuCi13ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRl
eHRfaXNfbGluayAgICAgIChXZWJLaXRIaXRUZXN0UmVzdWx0ICpoaXRfdGVzdF9yZXN1bHQpOwor
d2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2xpbmsgICAgICAgIChXZWJLaXRIaXRU
ZXN0UmVzdWx0ICpoaXRfdGVzdF9yZXN1bHQpOwogCiBXRUJLSVRfQVBJIGdib29sZWFuCi13ZWJr
aXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfaW1hZ2UgICAgIChXZWJLaXRIaXRUZXN0UmVz
dWx0ICpoaXRfdGVzdF9yZXN1bHQpOword2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lz
X2ltYWdlICAgICAgIChXZWJLaXRIaXRUZXN0UmVzdWx0ICpoaXRfdGVzdF9yZXN1bHQpOwogCiBX
RUJLSVRfQVBJIGdib29sZWFuCi13ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfbWVk
aWEgICAgIChXZWJLaXRIaXRUZXN0UmVzdWx0ICpoaXRfdGVzdF9yZXN1bHQpOword2Via2l0X2hp
dF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX21lZGlhICAgICAgIChXZWJLaXRIaXRUZXN0UmVzdWx0
ICpoaXRfdGVzdF9yZXN1bHQpOwogCiBXRUJLSVRfQVBJIGdib29sZWFuCi13ZWJraXRfaGl0X3Rl
c3RfcmVzdWx0X2NvbnRleHRfaXNfZWRpdGFibGUgIChXZWJLaXRIaXRUZXN0UmVzdWx0ICpoaXRf
dGVzdF9yZXN1bHQpOword2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2VkaXRhYmxl
ICAgIChXZWJLaXRIaXRUZXN0UmVzdWx0ICpoaXRfdGVzdF9yZXN1bHQpOwogCiBXRUJLSVRfQVBJ
IGdib29sZWFuCi13ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfc2VsZWN0aW9uIChX
ZWJLaXRIaXRUZXN0UmVzdWx0ICpoaXRfdGVzdF9yZXN1bHQpOword2Via2l0X2hpdF90ZXN0X3Jl
c3VsdF9jb250ZXh0X2lzX3NlbGVjdGlvbiAgIChXZWJLaXRIaXRUZXN0UmVzdWx0ICpoaXRfdGVz
dF9yZXN1bHQpOwogCiBXRUJLSVRfQVBJIGNvbnN0IGdjaGFyICoKLXdlYmtpdF9oaXRfdGVzdF9y
ZXN1bHRfZ2V0X2xpbmtfdXJpICAgICAgICAgKFdlYktpdEhpdFRlc3RSZXN1bHQgKmhpdF90ZXN0
X3Jlc3VsdCk7Cit3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2dldF9saW5rX3VyaSAgICAgICAgICAg
KFdlYktpdEhpdFRlc3RSZXN1bHQgKmhpdF90ZXN0X3Jlc3VsdCk7CiAKIFdFQktJVF9BUEkgY29u
c3QgZ2NoYXIgKgotd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9nZXRfbGlua190aXRsZSAgICAgICAo
V2ViS2l0SGl0VGVzdFJlc3VsdCAqaGl0X3Rlc3RfcmVzdWx0KTsKK3dlYmtpdF9oaXRfdGVzdF9y
ZXN1bHRfZ2V0X2xpbmtfdGl0bGUgICAgICAgICAoV2ViS2l0SGl0VGVzdFJlc3VsdCAqaGl0X3Rl
c3RfcmVzdWx0KTsKIAogV0VCS0lUX0FQSSBjb25zdCBnY2hhciAqCi13ZWJraXRfaGl0X3Rlc3Rf
cmVzdWx0X2dldF9saW5rX2xhYmVsICAgICAgIChXZWJLaXRIaXRUZXN0UmVzdWx0ICpoaXRfdGVz
dF9yZXN1bHQpOword2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9nZXRfbGlua19sYWJlbCAgICAgICAg
IChXZWJLaXRIaXRUZXN0UmVzdWx0ICpoaXRfdGVzdF9yZXN1bHQpOwogCiBXRUJLSVRfQVBJIGNv
bnN0IGdjaGFyICoKLXdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfZ2V0X2ltYWdlX3VyaSAgICAgICAg
KFdlYktpdEhpdFRlc3RSZXN1bHQgKmhpdF90ZXN0X3Jlc3VsdCk7Cit3ZWJraXRfaGl0X3Rlc3Rf
cmVzdWx0X2dldF9pbWFnZV91cmkgICAgICAgICAgKFdlYktpdEhpdFRlc3RSZXN1bHQgKmhpdF90
ZXN0X3Jlc3VsdCk7CiAKIFdFQktJVF9BUEkgY29uc3QgZ2NoYXIgKgotd2Via2l0X2hpdF90ZXN0
X3Jlc3VsdF9nZXRfbWVkaWFfdXJpICAgICAgICAoV2ViS2l0SGl0VGVzdFJlc3VsdCAqaGl0X3Rl
c3RfcmVzdWx0KTsKK3dlYmtpdF9oaXRfdGVzdF9yZXN1bHRfZ2V0X21lZGlhX3VyaSAgICAgICAg
ICAoV2ViS2l0SGl0VGVzdFJlc3VsdCAqaGl0X3Rlc3RfcmVzdWx0KTsKIAogV0VCS0lUX0FQSSBn
Ym9vbGVhbgotd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX3Njcm9sbGJhciAoV2Vi
S2l0SGl0VGVzdFJlc3VsdCAqaGl0X3Rlc3RfcmVzdWx0KTsKK3dlYmtpdF9oaXRfdGVzdF9yZXN1
bHRfY29udGV4dF9pc19zY3JvbGxiYXIgICAoV2ViS2l0SGl0VGVzdFJlc3VsdCAqaGl0X3Rlc3Rf
cmVzdWx0KTsKKworV0VCS0lUX0FQSSBXZWJLaXRIaXRUZXN0UmVzdWx0Q29tbWFuZHMKK3dlYmtp
dF9oaXRfdGVzdF9yZXN1bHRfZ2V0X2F2YWlsYWJsZV9jb21tYW5kcyAoV2ViS2l0SGl0VGVzdFJl
c3VsdCAqaGl0X3Rlc3RfcmVzdWx0KTsKIAogR19FTkRfREVDTFMKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25z
LnR4dCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQu
MC1zZWN0aW9ucy50eHQKaW5kZXggYTEzYzMyZDJiOGViNGQ3YWRjNzAyN2QyMDYxNmFmZTQ2NmE1
NDE3Yi4uMzJlZjYwNzYxNzUyYWNlM2MwYjUxYTE4MzMwYTI4ZTA0YTFiOWFjOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNl
Y3Rpb25zLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Vi
a2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0CkBAIC03OTAsNiArNzkwLDcgQEAgd2Via2l0X3Jlc3Bv
bnNlX3BvbGljeV9kZWNpc2lvbl9nZXRfdHlwZQogPEZJTEU+V2ViS2l0SGl0VGVzdFJlc3VsdDwv
RklMRT4KIFdlYktpdEhpdFRlc3RSZXN1bHQKIFdlYktpdEhpdFRlc3RSZXN1bHRDb250ZXh0CitX
ZWJLaXRIaXRUZXN0UmVzdWx0Q29tbWFuZHMKIHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfZ2V0X2Nv
bnRleHQKIHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19saW5rCiB3ZWJraXRfaGl0
X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfaW1hZ2UKQEAgLTgwMiw2ICs4MDMsNyBAQCB3ZWJraXRf
aGl0X3Rlc3RfcmVzdWx0X2dldF9saW5rX2xhYmVsCiB3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2dl
dF9pbWFnZV91cmkKIHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfZ2V0X21lZGlhX3VyaQogd2Via2l0
X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX3Njcm9sbGJhcgord2Via2l0X2hpdF90ZXN0X3Jl
c3VsdF9nZXRfYXZhaWxhYmxlX2NvbW1hbmRzCiAKIDxTVUJTRUNUSU9OIFN0YW5kYXJkPgogV2Vi
S2l0SGl0VGVzdFJlc3VsdENsYXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvd3BlL1dlYktpdEhpdFRlc3RSZXN1bHQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS93cGUvV2ViS2l0SGl0VGVzdFJlc3VsdC5oCmluZGV4IDY3OWFhMDc2MGU0NTYzMmI2NzFh
NzcwMjUyMjc3Mzg5NDI0ZGNkMjYuLmQ1Y2VkMGY1ZWI5NmFhNjllNjZiOWQ3YTQwZDQ0NjZjZDc5
OTNjYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0
SGl0VGVzdFJlc3VsdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2Vi
S2l0SGl0VGVzdFJlc3VsdC5oCkBAIC02Myw2ICs2MywyOCBAQCB0eXBlZGVmIGVudW0KICAgICBX
RUJLSVRfSElUX1RFU1RfUkVTVUxUX0NPTlRFWFRfU0VMRUNUSU9OID0gMSA8PCA3CiB9IFdlYktp
dEhpdFRlc3RSZXN1bHRDb250ZXh0OwogCisvKioKKyAqIFdlYktpdEhpdFRlc3RSZXN1bHRDb21t
YW5kczoKKyAqIEBXRUJLSVRfSElUX1RFU1RfUkVTVUxUX0NBTl9DVVQ6IHdoZXRoZXIgaXQgaXMg
cG9zc2libGUgdG8gY3V0IHRleHQuCisgKiBAV0VCS0lUX0hJVF9URVNUX1JFU1VMVF9DQU5fQ09Q
WTogd2hldGhlciBpdCBpcyBwb3NzaWJsZSB0byBjb3B5IHRleHQuCisgKiBAV0VCS0lUX0hJVF9U
RVNUX1JFU1VMVF9DQU5fUEFTVEU6IHdoZXRoZXIgaXQgaXMgcG9zc2libGUgdG8gcGFzdGUgdGV4
dC4KKyAqIEBXRUJLSVRfSElUX1RFU1RfUkVTVUxUX0NBTl9VTkRPOiB3aGV0aGVyIGl0IGlzIHBv
c3NpYmxlIHRvIHVuZG8uCisgKiBAV0VCS0lUX0hJVF9URVNUX1JFU1VMVF9DQU5fUkVETzogd2hl
dGhlciBpdCBpcyBwb3NzaWJsZSB0byByZWRvLgorICoKKyAqIEVudW0gdmFsdWVzIHdpdGggZmxh
Z3MgcmVwcmVzZW50aW5nIGNvbW1hbmRzIHRoYXQgY2FuIGJlIHBlcmZvcm1lZCBhdAorICogaGl0
IHRlc3QgbG9jYXRpb25zLgorICoKKyAqIFNpbmNlOiAyLjIwCisgKi8KK3R5cGVkZWYgZW51bQor
eworICAgIFdFQktJVF9ISVRfVEVTVF9SRVNVTFRfQ0FOX0NVVCAgICA9IDEgPDwgMCwKKyAgICBX
RUJLSVRfSElUX1RFU1RfUkVTVUxUX0NBTl9DT1BZICAgPSAxIDw8IDEsCisgICAgV0VCS0lUX0hJ
VF9URVNUX1JFU1VMVF9DQU5fUEFTVEUgID0gMSA8PCAyLAorICAgIFdFQktJVF9ISVRfVEVTVF9S
RVNVTFRfQ0FOX1VORE8gICA9IDEgPDwgMywKKyAgICBXRUJLSVRfSElUX1RFU1RfUkVTVUxUX0NB
Tl9SRURPICAgPSAxIDw8IDQKK30gV2ViS2l0SGl0VGVzdFJlc3VsdENvbW1hbmRzOworCiBzdHJ1
Y3QgX1dlYktpdEhpdFRlc3RSZXN1bHQgewogICAgIEdPYmplY3QgcGFyZW50OwogCkBAIC03OSw0
MyArMTAxLDQ2IEBAIHN0cnVjdCBfV2ViS2l0SGl0VGVzdFJlc3VsdENsYXNzIHsKIH07CiAKIFdF
QktJVF9BUEkgR1R5cGUKLXdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfZ2V0X3R5cGUgICAgICAgICAg
ICAgKHZvaWQpOword2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9nZXRfdHlwZSAgICAgICAgICAgICAg
ICh2b2lkKTsKIAogV0VCS0lUX0FQSSBndWludAotd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9nZXRf
Y29udGV4dCAgICAgICAgICAoV2ViS2l0SGl0VGVzdFJlc3VsdCAqaGl0X3Rlc3RfcmVzdWx0KTsK
K3dlYmtpdF9oaXRfdGVzdF9yZXN1bHRfZ2V0X2NvbnRleHQgICAgICAgICAgICAoV2ViS2l0SGl0
VGVzdFJlc3VsdCAqaGl0X3Rlc3RfcmVzdWx0KTsKIAogV0VCS0lUX0FQSSBnYm9vbGVhbgotd2Vi
a2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2xpbmsgICAgICAoV2ViS2l0SGl0VGVzdFJl
c3VsdCAqaGl0X3Rlc3RfcmVzdWx0KTsKK3dlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9p
c19saW5rICAgICAgICAoV2ViS2l0SGl0VGVzdFJlc3VsdCAqaGl0X3Rlc3RfcmVzdWx0KTsKIAog
V0VCS0lUX0FQSSBnYm9vbGVhbgotd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2lt
YWdlICAgICAoV2ViS2l0SGl0VGVzdFJlc3VsdCAqaGl0X3Rlc3RfcmVzdWx0KTsKK3dlYmtpdF9o
aXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19pbWFnZSAgICAgICAoV2ViS2l0SGl0VGVzdFJlc3Vs
dCAqaGl0X3Rlc3RfcmVzdWx0KTsKIAogV0VCS0lUX0FQSSBnYm9vbGVhbgotd2Via2l0X2hpdF90
ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX21lZGlhICAgICAoV2ViS2l0SGl0VGVzdFJlc3VsdCAqaGl0
X3Rlc3RfcmVzdWx0KTsKK3dlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19tZWRpYSAg
ICAgICAoV2ViS2l0SGl0VGVzdFJlc3VsdCAqaGl0X3Rlc3RfcmVzdWx0KTsKIAogV0VCS0lUX0FQ
SSBnYm9vbGVhbgotd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2VkaXRhYmxlICAo
V2ViS2l0SGl0VGVzdFJlc3VsdCAqaGl0X3Rlc3RfcmVzdWx0KTsKK3dlYmtpdF9oaXRfdGVzdF9y
ZXN1bHRfY29udGV4dF9pc19lZGl0YWJsZSAgICAoV2ViS2l0SGl0VGVzdFJlc3VsdCAqaGl0X3Rl
c3RfcmVzdWx0KTsKIAogV0VCS0lUX0FQSSBnYm9vbGVhbgotd2Via2l0X2hpdF90ZXN0X3Jlc3Vs
dF9jb250ZXh0X2lzX3NlbGVjdGlvbiAoV2ViS2l0SGl0VGVzdFJlc3VsdCAqaGl0X3Rlc3RfcmVz
dWx0KTsKK3dlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19zZWxlY3Rpb24gICAoV2Vi
S2l0SGl0VGVzdFJlc3VsdCAqaGl0X3Rlc3RfcmVzdWx0KTsKIAogV0VCS0lUX0FQSSBjb25zdCBn
Y2hhciAqCi13ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2dldF9saW5rX3VyaSAgICAgICAgIChXZWJL
aXRIaXRUZXN0UmVzdWx0ICpoaXRfdGVzdF9yZXN1bHQpOword2Via2l0X2hpdF90ZXN0X3Jlc3Vs
dF9nZXRfbGlua191cmkgICAgICAgICAgIChXZWJLaXRIaXRUZXN0UmVzdWx0ICpoaXRfdGVzdF9y
ZXN1bHQpOwogCiBXRUJLSVRfQVBJIGNvbnN0IGdjaGFyICoKLXdlYmtpdF9oaXRfdGVzdF9yZXN1
bHRfZ2V0X2xpbmtfdGl0bGUgICAgICAgKFdlYktpdEhpdFRlc3RSZXN1bHQgKmhpdF90ZXN0X3Jl
c3VsdCk7Cit3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2dldF9saW5rX3RpdGxlICAgICAgICAgKFdl
YktpdEhpdFRlc3RSZXN1bHQgKmhpdF90ZXN0X3Jlc3VsdCk7CiAKIFdFQktJVF9BUEkgY29uc3Qg
Z2NoYXIgKgotd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9nZXRfbGlua19sYWJlbCAgICAgICAoV2Vi
S2l0SGl0VGVzdFJlc3VsdCAqaGl0X3Rlc3RfcmVzdWx0KTsKK3dlYmtpdF9oaXRfdGVzdF9yZXN1
bHRfZ2V0X2xpbmtfbGFiZWwgICAgICAgICAoV2ViS2l0SGl0VGVzdFJlc3VsdCAqaGl0X3Rlc3Rf
cmVzdWx0KTsKIAogV0VCS0lUX0FQSSBjb25zdCBnY2hhciAqCi13ZWJraXRfaGl0X3Rlc3RfcmVz
dWx0X2dldF9pbWFnZV91cmkgICAgICAgIChXZWJLaXRIaXRUZXN0UmVzdWx0ICpoaXRfdGVzdF9y
ZXN1bHQpOword2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9nZXRfaW1hZ2VfdXJpICAgICAgICAgIChX
ZWJLaXRIaXRUZXN0UmVzdWx0ICpoaXRfdGVzdF9yZXN1bHQpOwogCiBXRUJLSVRfQVBJIGNvbnN0
IGdjaGFyICoKLXdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfZ2V0X21lZGlhX3VyaSAgICAgICAgKFdl
YktpdEhpdFRlc3RSZXN1bHQgKmhpdF90ZXN0X3Jlc3VsdCk7Cit3ZWJraXRfaGl0X3Rlc3RfcmVz
dWx0X2dldF9tZWRpYV91cmkgICAgICAgICAgKFdlYktpdEhpdFRlc3RSZXN1bHQgKmhpdF90ZXN0
X3Jlc3VsdCk7CiAKIFdFQktJVF9BUEkgZ2Jvb2xlYW4KLXdlYmtpdF9oaXRfdGVzdF9yZXN1bHRf
Y29udGV4dF9pc19zY3JvbGxiYXIgKFdlYktpdEhpdFRlc3RSZXN1bHQgKmhpdF90ZXN0X3Jlc3Vs
dCk7Cit3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfc2Nyb2xsYmFyICAgKFdlYktp
dEhpdFRlc3RSZXN1bHQgKmhpdF90ZXN0X3Jlc3VsdCk7CisKK1dFQktJVF9BUEkgV2ViS2l0SGl0
VGVzdFJlc3VsdENvbW1hbmRzCit3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2dldF9hdmFpbGFibGVf
Y29tbWFuZHMgKFdlYktpdEhpdFRlc3RSZXN1bHQgKmhpdF90ZXN0X3Jlc3VsdCk7CiAKIEdfRU5E
X0RFQ0xTCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9XZWJQYWdlTWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dl
YlBhZ2VNYWMubW0KaW5kZXggMDE5MmZmMWMxNTczMGVhOTU3Y2RkYTdhNDViODBiMjk4MGZjNjIz
MC4uNDMxZGY0ZGY0ZWFmNzMyOTg2YjQ3NTM5ZTMxZDlmNWEzZTBlZmVlMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KQEAgLTEw
NzUsNyArMTA3NSw3IEBAIHZvaWQgV2ViUGFnZTo6cGVyZm9ybUltbWVkaWF0ZUFjdGlvbkhpdFRl
c3RBdExvY2F0aW9uKFdlYkNvcmU6OkZsb2F0UG9pbnQgbG9jYXRpCiAgICAgICAgICAgICAgICAg
aW1tZWRpYXRlQWN0aW9uUmVzdWx0Lmxvb2t1cFRleHQgPSBzZWxlY3RlZFRleHQ7CiAgICAgICAg
ICAgICAgICAgaW1tZWRpYXRlQWN0aW9uUmVzdWx0LmlzVGV4dE5vZGUgPSB0cnVlOwogICAgICAg
ICAgICAgICAgIGltbWVkaWF0ZUFjdGlvblJlc3VsdC5pc1NlbGVjdGVkID0gdHJ1ZTsKLSAgICAg
ICAgICAgICAgICBpbW1lZGlhdGVBY3Rpb25SZXN1bHQuYWxsb3dzQ29weSA9IHRydWU7CisgICAg
ICAgICAgICAgICAgaW1tZWRpYXRlQWN0aW9uUmVzdWx0LmFsbG93ZWRFZGl0Q29tbWFuZHMgfD0g
V2ViQ29yZTo6V2ViSGl0VGVzdFJlc3VsdDo6RWRpdENvbW1hbmRDb3B5OwogCiAgICAgICAgICAg
ICAgICAgaW1tZWRpYXRlQWN0aW9uUmVzdWx0LmRpY3Rpb25hcnlQb3B1cEluZm8gPSBkaWN0aW9u
YXJ5UG9wdXBJbmZvRm9yU2VsZWN0aW9uSW5QREZQbHVnaW4oc2VsZWN0aW9uLCAqcGRmUHVnaW4s
ICZvcHRpb25zLCBUZXh0SW5kaWNhdG9yUHJlc2VudGF0aW9uVHJhbnNpdGlvbjo6RmFkZUluKTsK
ICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5n
ZUxvZwppbmRleCA3MzI3ZjU0NzE2MGIwN2RiYWJkNGJhZDAwNzBkYTc1OGZmZjVjZDAxLi43MWJh
ZjM1MDU3ZmUxZTAxMGQ3ODg5NjUxOTQxYWM5NjJiZjc4ZWEwIDEwMDY0NAotLS0gYS9Ub29scy9D
aGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTctMDgt
MjQgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgorCisgICAgICAg
IFtHVEtdIEV4cG9zZSBlZGl0aW5nIGNvbW1hbmQgYXZhaWxhYmlsaXR5IGluIFdlYktpdEhpdFRl
c3RSZXN1bHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2ODIxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RDb250ZXh0TWVudS5jcHA6Cisg
ICAgICAgIChwcmVwYXJlQ29udGV4dE1lbnVUZXN0Vmlldyk6CisgICAgICAgIChjb3B5Q3VycmVu
dFNlbGVjdGlvblRvQ2xpcGJvYXJkKToKKyAgICAgICAgKHNlbGVjdFRleHRJbkVkaXRhYmxlKToK
KyAgICAgICAgKGV4ZWN1dGVVbmRvQ29tbWFuZCk6CisgICAgICAgICh0ZXN0Q29udGV4dE1lbnVE
ZWZhdWx0TWVudSk6CisKIDIwMTctMDgtMTggIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5n
QHNvbnkuY29tPgogCiAgICAgICAgIFtUb29sc10gQWRkIHNjcmlwdCB0byBkb3dubG9hZCBhIEdp
dEh1YiByZWxlYXNlCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dDJHdGsvVGVzdENvbnRleHRNZW51LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Mkd0ay9UZXN0Q29udGV4dE1lbnUuY3BwCmluZGV4IDdiZDcwOTcxOWE3MGZhZjFlZmYyYzlj
MTdiMDJjYzI0ZmNkZWFhYTEuLjRkOTg1N2Q5NDQ1NjI0MDJjNmMyODgzMDBkZDAwODFkMjUxY2I3
ZmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0
Q29udGV4dE1lbnUuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0
ay9UZXN0Q29udGV4dE1lbnUuY3BwCkBAIC0xOSw2ICsxOSw3IEBACiAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJXZWJWaWV3VGVzdC5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL2ds
aWIvR1JlZlB0ci5oPgogCkBAIC0yOTYsMTcgKzI5NywxNiBAQCBwdWJsaWM6CiAgICAgICAgIFZp
ZGVvLAogICAgICAgICBBdWRpbywKICAgICAgICAgRWRpdGFibGUsCi0gICAgICAgIFNlbGVjdGlv
bgorICAgICAgICBTZWxlY3Rpb24sCisgICAgICAgIEVkaXRhYmxlV2l0aFNlbGVjdGlvbiwKKyAg
ICAgICAgRWRpdGFibGVBbGxvd3NVbmRvLAorICAgICAgICBFZGl0YWJsZUFsbG93c1JlZG8KICAg
ICB9OwogCi0gICAgQ29udGV4dE1lbnVEZWZhdWx0VGVzdCgpCi0gICAgICAgIDogbV9leHBlY3Rl
ZE1lbnVUeXBlKE5hdmlnYXRpb24pCi0gICAgewotICAgIH0KLQogICAgIGJvb2wgY29udGV4dE1l
bnUoV2ViS2l0Q29udGV4dE1lbnUqIGNvbnRleHRNZW51LCBHZGtFdmVudCogZXZlbnQsIFdlYktp
dEhpdFRlc3RSZXN1bHQqIGhpdFRlc3RSZXN1bHQpCiAgICAgewogICAgICAgICBHTGlzdCogaXRl
ciA9IHdlYmtpdF9jb250ZXh0X21lbnVfZ2V0X2l0ZW1zKGNvbnRleHRNZW51KTsKKyAgICAgICAg
V2ViS2l0SGl0VGVzdFJlc3VsdENvbW1hbmRzIGNvbW1hbmRzID0gd2Via2l0X2hpdF90ZXN0X3Jl
c3VsdF9nZXRfYXZhaWxhYmxlX2NvbW1hbmRzKGhpdFRlc3RSZXN1bHQpOwogCiAgICAgICAgIHN3
aXRjaCAobV9leHBlY3RlZE1lbnVUeXBlKSB7CiAgICAgICAgIGNhc2UgTmF2aWdhdGlvbjoKQEAg
LTMxNSw2ICszMTUsMTEgQEAgcHVibGljOgogICAgICAgICAgICAgZ19hc3NlcnQoIXdlYmtpdF9o
aXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19tZWRpYShoaXRUZXN0UmVzdWx0KSk7CiAgICAgICAg
ICAgICBnX2Fzc2VydCghd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2VkaXRhYmxl
KGhpdFRlc3RSZXN1bHQpKTsKICAgICAgICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3Rf
cmVzdWx0X2NvbnRleHRfaXNfc2VsZWN0aW9uKGhpdFRlc3RSZXN1bHQpKTsKKyAgICAgICAgICAg
IGdfYXNzZXJ0KCEoY29tbWFuZHMgJiBXRUJLSVRfSElUX1RFU1RfUkVTVUxUX0NBTl9DVVQpKTsK
KyAgICAgICAgICAgIGdfYXNzZXJ0KCEoY29tbWFuZHMgJiBXRUJLSVRfSElUX1RFU1RfUkVTVUxU
X0NBTl9DT1BZKSk7CisgICAgICAgICAgICBnX2Fzc2VydCghKGNvbW1hbmRzICYgV0VCS0lUX0hJ
VF9URVNUX1JFU1VMVF9DQU5fUEFTVEUpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0KCEoY29tbWFu
ZHMgJiBXRUJLSVRfSElUX1RFU1RfUkVTVUxUX0NBTl9VTkRPKSk7CisgICAgICAgICAgICBnX2Fz
c2VydCghKGNvbW1hbmRzICYgV0VCS0lUX0hJVF9URVNUX1JFU1VMVF9DQU5fUkVETykpOwogICAg
ICAgICAgICAgaXRlciA9IGNoZWNrQ3VycmVudEl0ZW1Jc1N0b2NrQWN0aW9uQW5kR2V0TmV4dChp
dGVyLCBXRUJLSVRfQ09OVEVYVF9NRU5VX0FDVElPTl9HT19CQUNLLCBWaXNpYmxlKTsKICAgICAg
ICAgICAgIGl0ZXIgPSBjaGVja0N1cnJlbnRJdGVtSXNTdG9ja0FjdGlvbkFuZEdldE5leHQoaXRl
ciwgV0VCS0lUX0NPTlRFWFRfTUVOVV9BQ1RJT05fR09fRk9SV0FSRCwgVmlzaWJsZSk7CiAgICAg
ICAgICAgICBpdGVyID0gY2hlY2tDdXJyZW50SXRlbUlzU3RvY2tBY3Rpb25BbmRHZXROZXh0KGl0
ZXIsIFdFQktJVF9DT05URVhUX01FTlVfQUNUSU9OX1NUT1AsIFZpc2libGUpOwpAQCAtMzI2LDYg
KzMzMSwxMSBAQCBwdWJsaWM6CiAgICAgICAgICAgICBnX2Fzc2VydCghd2Via2l0X2hpdF90ZXN0
X3Jlc3VsdF9jb250ZXh0X2lzX21lZGlhKGhpdFRlc3RSZXN1bHQpKTsKICAgICAgICAgICAgIGdf
YXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfZWRpdGFibGUoaGl0VGVz
dFJlc3VsdCkpOwogICAgICAgICAgICAgZ19hc3NlcnQoIXdlYmtpdF9oaXRfdGVzdF9yZXN1bHRf
Y29udGV4dF9pc19zZWxlY3Rpb24oaGl0VGVzdFJlc3VsdCkpOworICAgICAgICAgICAgZ19hc3Nl
cnQoIShjb21tYW5kcyAmIFdFQktJVF9ISVRfVEVTVF9SRVNVTFRfQ0FOX0NVVCkpOworICAgICAg
ICAgICAgZ19hc3NlcnQoIShjb21tYW5kcyAmIFdFQktJVF9ISVRfVEVTVF9SRVNVTFRfQ0FOX0NP
UFkpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0KCEoY29tbWFuZHMgJiBXRUJLSVRfSElUX1RFU1Rf
UkVTVUxUX0NBTl9QQVNURSkpOworICAgICAgICAgICAgZ19hc3NlcnQoIShjb21tYW5kcyAmIFdF
QktJVF9ISVRfVEVTVF9SRVNVTFRfQ0FOX1VORE8pKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0KCEo
Y29tbWFuZHMgJiBXRUJLSVRfSElUX1RFU1RfUkVTVUxUX0NBTl9SRURPKSk7CiAgICAgICAgICAg
ICBpdGVyID0gY2hlY2tDdXJyZW50SXRlbUlzU3RvY2tBY3Rpb25BbmRHZXROZXh0KGl0ZXIsIFdF
QktJVF9DT05URVhUX01FTlVfQUNUSU9OX09QRU5fTElOSywgVmlzaWJsZSB8IEVuYWJsZWQpOwog
ICAgICAgICAgICAgaXRlciA9IGNoZWNrQ3VycmVudEl0ZW1Jc1N0b2NrQWN0aW9uQW5kR2V0TmV4
dChpdGVyLCBXRUJLSVRfQ09OVEVYVF9NRU5VX0FDVElPTl9PUEVOX0xJTktfSU5fTkVXX1dJTkRP
VywgVmlzaWJsZSB8IEVuYWJsZWQpOwogICAgICAgICAgICAgaXRlciA9IGNoZWNrQ3VycmVudEl0
ZW1Jc1N0b2NrQWN0aW9uQW5kR2V0TmV4dChpdGVyLCBXRUJLSVRfQ09OVEVYVF9NRU5VX0FDVElP
Tl9ET1dOTE9BRF9MSU5LX1RPX0RJU0ssIFZpc2libGUgfCBFbmFibGVkKTsKQEAgLTMzNyw2ICsz
NDcsMTEgQEAgcHVibGljOgogICAgICAgICAgICAgZ19hc3NlcnQoIXdlYmtpdF9oaXRfdGVzdF9y
ZXN1bHRfY29udGV4dF9pc19tZWRpYShoaXRUZXN0UmVzdWx0KSk7CiAgICAgICAgICAgICBnX2Fz
c2VydCghd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2VkaXRhYmxlKGhpdFRlc3RS
ZXN1bHQpKTsKICAgICAgICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2Nv
bnRleHRfaXNfc2VsZWN0aW9uKGhpdFRlc3RSZXN1bHQpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0
KCEoY29tbWFuZHMgJiBXRUJLSVRfSElUX1RFU1RfUkVTVUxUX0NBTl9DVVQpKTsKKyAgICAgICAg
ICAgIGdfYXNzZXJ0KCEoY29tbWFuZHMgJiBXRUJLSVRfSElUX1RFU1RfUkVTVUxUX0NBTl9DT1BZ
KSk7CisgICAgICAgICAgICBnX2Fzc2VydCghKGNvbW1hbmRzICYgV0VCS0lUX0hJVF9URVNUX1JF
U1VMVF9DQU5fUEFTVEUpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0KCEoY29tbWFuZHMgJiBXRUJL
SVRfSElUX1RFU1RfUkVTVUxUX0NBTl9VTkRPKSk7CisgICAgICAgICAgICBnX2Fzc2VydCghKGNv
bW1hbmRzICYgV0VCS0lUX0hJVF9URVNUX1JFU1VMVF9DQU5fUkVETykpOwogICAgICAgICAgICAg
aXRlciA9IGNoZWNrQ3VycmVudEl0ZW1Jc1N0b2NrQWN0aW9uQW5kR2V0TmV4dChpdGVyLCBXRUJL
SVRfQ09OVEVYVF9NRU5VX0FDVElPTl9PUEVOX0lNQUdFX0lOX05FV19XSU5ET1csIFZpc2libGUg
fCBFbmFibGVkKTsKICAgICAgICAgICAgIGl0ZXIgPSBjaGVja0N1cnJlbnRJdGVtSXNTdG9ja0Fj
dGlvbkFuZEdldE5leHQoaXRlciwgV0VCS0lUX0NPTlRFWFRfTUVOVV9BQ1RJT05fRE9XTkxPQURf
SU1BR0VfVE9fRElTSywgVmlzaWJsZSB8IEVuYWJsZWQpOwogICAgICAgICAgICAgaXRlciA9IGNo
ZWNrQ3VycmVudEl0ZW1Jc1N0b2NrQWN0aW9uQW5kR2V0TmV4dChpdGVyLCBXRUJLSVRfQ09OVEVY
VF9NRU5VX0FDVElPTl9DT1BZX0lNQUdFX1RPX0NMSVBCT0FSRCwgVmlzaWJsZSB8IEVuYWJsZWQp
OwpAQCAtMzQ4LDYgKzM2MywxMSBAQCBwdWJsaWM6CiAgICAgICAgICAgICBnX2Fzc2VydCghd2Vi
a2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX21lZGlhKGhpdFRlc3RSZXN1bHQpKTsKICAg
ICAgICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfZWRp
dGFibGUoaGl0VGVzdFJlc3VsdCkpOwogICAgICAgICAgICAgZ19hc3NlcnQoIXdlYmtpdF9oaXRf
dGVzdF9yZXN1bHRfY29udGV4dF9pc19zZWxlY3Rpb24oaGl0VGVzdFJlc3VsdCkpOworICAgICAg
ICAgICAgZ19hc3NlcnQoIShjb21tYW5kcyAmIFdFQktJVF9ISVRfVEVTVF9SRVNVTFRfQ0FOX0NV
VCkpOworICAgICAgICAgICAgZ19hc3NlcnQoIShjb21tYW5kcyAmIFdFQktJVF9ISVRfVEVTVF9S
RVNVTFRfQ0FOX0NPUFkpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0KCEoY29tbWFuZHMgJiBXRUJL
SVRfSElUX1RFU1RfUkVTVUxUX0NBTl9QQVNURSkpOworICAgICAgICAgICAgZ19hc3NlcnQoIShj
b21tYW5kcyAmIFdFQktJVF9ISVRfVEVTVF9SRVNVTFRfQ0FOX1VORE8pKTsKKyAgICAgICAgICAg
IGdfYXNzZXJ0KCEoY29tbWFuZHMgJiBXRUJLSVRfSElUX1RFU1RfUkVTVUxUX0NBTl9SRURPKSk7
CiAgICAgICAgICAgICBpdGVyID0gY2hlY2tDdXJyZW50SXRlbUlzU3RvY2tBY3Rpb25BbmRHZXRO
ZXh0KGl0ZXIsIFdFQktJVF9DT05URVhUX01FTlVfQUNUSU9OX09QRU5fTElOSywgVmlzaWJsZSB8
IEVuYWJsZWQpOwogICAgICAgICAgICAgaXRlciA9IGNoZWNrQ3VycmVudEl0ZW1Jc1N0b2NrQWN0
aW9uQW5kR2V0TmV4dChpdGVyLCBXRUJLSVRfQ09OVEVYVF9NRU5VX0FDVElPTl9PUEVOX0xJTktf
SU5fTkVXX1dJTkRPVywgVmlzaWJsZSB8IEVuYWJsZWQpOwogICAgICAgICAgICAgaXRlciA9IGNo
ZWNrQ3VycmVudEl0ZW1Jc1N0b2NrQWN0aW9uQW5kR2V0TmV4dChpdGVyLCBXRUJLSVRfQ09OVEVY
VF9NRU5VX0FDVElPTl9ET1dOTE9BRF9MSU5LX1RPX0RJU0ssIFZpc2libGUgfCBFbmFibGVkKTsK
QEAgLTM2NCw2ICszODQsMTEgQEAgcHVibGljOgogICAgICAgICAgICAgZ19hc3NlcnQod2Via2l0
X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX21lZGlhKGhpdFRlc3RSZXN1bHQpKTsKICAgICAg
ICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfZWRpdGFi
bGUoaGl0VGVzdFJlc3VsdCkpOwogICAgICAgICAgICAgZ19hc3NlcnQoIXdlYmtpdF9oaXRfdGVz
dF9yZXN1bHRfY29udGV4dF9pc19zZWxlY3Rpb24oaGl0VGVzdFJlc3VsdCkpOworICAgICAgICAg
ICAgZ19hc3NlcnQoIShjb21tYW5kcyAmIFdFQktJVF9ISVRfVEVTVF9SRVNVTFRfQ0FOX0NVVCkp
OworICAgICAgICAgICAgZ19hc3NlcnQoIShjb21tYW5kcyAmIFdFQktJVF9ISVRfVEVTVF9SRVNV
TFRfQ0FOX0NPUFkpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0KCEoY29tbWFuZHMgJiBXRUJLSVRf
SElUX1RFU1RfUkVTVUxUX0NBTl9QQVNURSkpOworICAgICAgICAgICAgZ19hc3NlcnQoIShjb21t
YW5kcyAmIFdFQktJVF9ISVRfVEVTVF9SRVNVTFRfQ0FOX1VORE8pKTsKKyAgICAgICAgICAgIGdf
YXNzZXJ0KCEoY29tbWFuZHMgJiBXRUJLSVRfSElUX1RFU1RfUkVTVUxUX0NBTl9SRURPKSk7CiAg
ICAgICAgICAgICBpdGVyID0gY2hlY2tDdXJyZW50SXRlbUlzU3RvY2tBY3Rpb25BbmRHZXROZXh0
KGl0ZXIsIFdFQktJVF9DT05URVhUX01FTlVfQUNUSU9OX01FRElBX1BMQVksIFZpc2libGUgfCBF
bmFibGVkKTsKICAgICAgICAgICAgIGl0ZXIgPSBjaGVja0N1cnJlbnRJdGVtSXNTdG9ja0FjdGlv
bkFuZEdldE5leHQoaXRlciwgV0VCS0lUX0NPTlRFWFRfTUVOVV9BQ1RJT05fTUVESUFfTVVURSwg
VmlzaWJsZSk7CiAgICAgICAgICAgICBpdGVyID0gY2hlY2tDdXJyZW50SXRlbUlzU3RvY2tBY3Rp
b25BbmRHZXROZXh0KGl0ZXIsIFdFQktJVF9DT05URVhUX01FTlVfQUNUSU9OX1RPR0dMRV9NRURJ
QV9DT05UUk9MUywgVmlzaWJsZSB8IEVuYWJsZWQgfCBDaGVja2VkKTsKQEAgLTM4MCw2ICs0MDUs
MTEgQEAgcHVibGljOgogICAgICAgICAgICAgZ19hc3NlcnQod2Via2l0X2hpdF90ZXN0X3Jlc3Vs
dF9jb250ZXh0X2lzX21lZGlhKGhpdFRlc3RSZXN1bHQpKTsKICAgICAgICAgICAgIGdfYXNzZXJ0
KCF3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfZWRpdGFibGUoaGl0VGVzdFJlc3Vs
dCkpOwogICAgICAgICAgICAgZ19hc3NlcnQoIXdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4
dF9pc19zZWxlY3Rpb24oaGl0VGVzdFJlc3VsdCkpOworICAgICAgICAgICAgZ19hc3NlcnQoIShj
b21tYW5kcyAmIFdFQktJVF9ISVRfVEVTVF9SRVNVTFRfQ0FOX0NVVCkpOworICAgICAgICAgICAg
Z19hc3NlcnQoIShjb21tYW5kcyAmIFdFQktJVF9ISVRfVEVTVF9SRVNVTFRfQ0FOX0NPUFkpKTsK
KyAgICAgICAgICAgIGdfYXNzZXJ0KCEoY29tbWFuZHMgJiBXRUJLSVRfSElUX1RFU1RfUkVTVUxU
X0NBTl9QQVNURSkpOworICAgICAgICAgICAgZ19hc3NlcnQoIShjb21tYW5kcyAmIFdFQktJVF9I
SVRfVEVTVF9SRVNVTFRfQ0FOX1VORE8pKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0KCEoY29tbWFu
ZHMgJiBXRUJLSVRfSElUX1RFU1RfUkVTVUxUX0NBTl9SRURPKSk7CiAgICAgICAgICAgICBpdGVy
ID0gY2hlY2tDdXJyZW50SXRlbUlzU3RvY2tBY3Rpb25BbmRHZXROZXh0KGl0ZXIsIFdFQktJVF9D
T05URVhUX01FTlVfQUNUSU9OX01FRElBX1BMQVksIFZpc2libGUgfCBFbmFibGVkKTsKICAgICAg
ICAgICAgIGl0ZXIgPSBjaGVja0N1cnJlbnRJdGVtSXNTdG9ja0FjdGlvbkFuZEdldE5leHQoaXRl
ciwgV0VCS0lUX0NPTlRFWFRfTUVOVV9BQ1RJT05fTUVESUFfTVVURSwgVmlzaWJsZSk7CiAgICAg
ICAgICAgICBpdGVyID0gY2hlY2tDdXJyZW50SXRlbUlzU3RvY2tBY3Rpb25BbmRHZXROZXh0KGl0
ZXIsIFdFQktJVF9DT05URVhUX01FTlVfQUNUSU9OX1RPR0dMRV9NRURJQV9DT05UUk9MUywgVmlz
aWJsZSB8IEVuYWJsZWQgfCBDaGVja2VkKTsKQEAgLTM5Niw2ICs0MjYsMTEgQEAgcHVibGljOgog
ICAgICAgICAgICAgZ19hc3NlcnQoIXdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19t
ZWRpYShoaXRUZXN0UmVzdWx0KSk7CiAgICAgICAgICAgICBnX2Fzc2VydCh3ZWJraXRfaGl0X3Rl
c3RfcmVzdWx0X2NvbnRleHRfaXNfZWRpdGFibGUoaGl0VGVzdFJlc3VsdCkpOwogICAgICAgICAg
ICAgZ19hc3NlcnQoIXdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19zZWxlY3Rpb24o
aGl0VGVzdFJlc3VsdCkpOworICAgICAgICAgICAgZ19hc3NlcnQoIShjb21tYW5kcyAmIFdFQktJ
VF9ISVRfVEVTVF9SRVNVTFRfQ0FOX0NVVCkpOworICAgICAgICAgICAgZ19hc3NlcnQoIShjb21t
YW5kcyAmIFdFQktJVF9ISVRfVEVTVF9SRVNVTFRfQ0FOX0NPUFkpKTsKKyAgICAgICAgICAgIGdf
YXNzZXJ0KGNvbW1hbmRzICYgV0VCS0lUX0hJVF9URVNUX1JFU1VMVF9DQU5fUEFTVEUpOworICAg
ICAgICAgICAgZ19hc3NlcnQoIShjb21tYW5kcyAmIFdFQktJVF9ISVRfVEVTVF9SRVNVTFRfQ0FO
X1VORE8pKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0KCEoY29tbWFuZHMgJiBXRUJLSVRfSElUX1RF
U1RfUkVTVUxUX0NBTl9SRURPKSk7CiAgICAgICAgICAgICBpdGVyID0gY2hlY2tDdXJyZW50SXRl
bUlzU3RvY2tBY3Rpb25BbmRHZXROZXh0KGl0ZXIsIFdFQktJVF9DT05URVhUX01FTlVfQUNUSU9O
X0NVVCwgVmlzaWJsZSk7CiAgICAgICAgICAgICBpdGVyID0gY2hlY2tDdXJyZW50SXRlbUlzU3Rv
Y2tBY3Rpb25BbmRHZXROZXh0KGl0ZXIsIFdFQktJVF9DT05URVhUX01FTlVfQUNUSU9OX0NPUFks
IFZpc2libGUpOwogICAgICAgICAgICAgaXRlciA9IGNoZWNrQ3VycmVudEl0ZW1Jc1N0b2NrQWN0
aW9uQW5kR2V0TmV4dChpdGVyLCBXRUJLSVRfQ09OVEVYVF9NRU5VX0FDVElPTl9QQVNURSwgVmlz
aWJsZSB8IEVuYWJsZWQpOwpAQCAtNDExLDggKzQ0Niw3MyBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICBnX2Fzc2VydCghd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX21lZGlhKGhpdFRl
c3RSZXN1bHQpKTsKICAgICAgICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0
X2NvbnRleHRfaXNfZWRpdGFibGUoaGl0VGVzdFJlc3VsdCkpOwogICAgICAgICAgICAgZ19hc3Nl
cnQod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX3NlbGVjdGlvbihoaXRUZXN0UmVz
dWx0KSk7CisgICAgICAgICAgICBnX2Fzc2VydCghKGNvbW1hbmRzICYgV0VCS0lUX0hJVF9URVNU
X1JFU1VMVF9DQU5fQ1VUKSk7CisgICAgICAgICAgICBnX2Fzc2VydChjb21tYW5kcyAmIFdFQktJ
VF9ISVRfVEVTVF9SRVNVTFRfQ0FOX0NPUFkpOworICAgICAgICAgICAgZ19hc3NlcnQoIShjb21t
YW5kcyAmIFdFQktJVF9ISVRfVEVTVF9SRVNVTFRfQ0FOX1BBU1RFKSk7CisgICAgICAgICAgICBn
X2Fzc2VydCghKGNvbW1hbmRzICYgV0VCS0lUX0hJVF9URVNUX1JFU1VMVF9DQU5fVU5ETykpOwor
ICAgICAgICAgICAgZ19hc3NlcnQoIShjb21tYW5kcyAmIFdFQktJVF9ISVRfVEVTVF9SRVNVTFRf
Q0FOX1JFRE8pKTsKICAgICAgICAgICAgIGl0ZXIgPSBjaGVja0N1cnJlbnRJdGVtSXNTdG9ja0Fj
dGlvbkFuZEdldE5leHQoaXRlciwgV0VCS0lUX0NPTlRFWFRfTUVOVV9BQ1RJT05fQ09QWSwgVmlz
aWJsZSB8IEVuYWJsZWQpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRWRpdGFi
bGVXaXRoU2VsZWN0aW9uOgorICAgICAgICAgICAgZ19hc3NlcnQoIXdlYmtpdF9oaXRfdGVzdF9y
ZXN1bHRfY29udGV4dF9pc19saW5rKGhpdFRlc3RSZXN1bHQpKTsKKyAgICAgICAgICAgIGdfYXNz
ZXJ0KCF3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfaW1hZ2UoaGl0VGVzdFJlc3Vs
dCkpOworICAgICAgICAgICAgZ19hc3NlcnQoIXdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4
dF9pc19tZWRpYShoaXRUZXN0UmVzdWx0KSk7CisgICAgICAgICAgICBnX2Fzc2VydCh3ZWJraXRf
aGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfZWRpdGFibGUoaGl0VGVzdFJlc3VsdCkpOworICAg
ICAgICAgICAgZ19hc3NlcnQod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX3NlbGVj
dGlvbihoaXRUZXN0UmVzdWx0KSk7CisgICAgICAgICAgICBnX2Fzc2VydChjb21tYW5kcyAmIFdF
QktJVF9ISVRfVEVTVF9SRVNVTFRfQ0FOX0NVVCk7CisgICAgICAgICAgICBnX2Fzc2VydChjb21t
YW5kcyAmIFdFQktJVF9ISVRfVEVTVF9SRVNVTFRfQ0FOX0NPUFkpOworICAgICAgICAgICAgZ19h
c3NlcnQoY29tbWFuZHMgJiBXRUJLSVRfSElUX1RFU1RfUkVTVUxUX0NBTl9QQVNURSk7CisgICAg
ICAgICAgICBnX2Fzc2VydCghKGNvbW1hbmRzICYgV0VCS0lUX0hJVF9URVNUX1JFU1VMVF9DQU5f
VU5ETykpOworICAgICAgICAgICAgZ19hc3NlcnQoIShjb21tYW5kcyAmIFdFQktJVF9ISVRfVEVT
VF9SRVNVTFRfQ0FOX1JFRE8pKTsKKyAgICAgICAgICAgIGl0ZXIgPSBjaGVja0N1cnJlbnRJdGVt
SXNTdG9ja0FjdGlvbkFuZEdldE5leHQoaXRlciwgV0VCS0lUX0NPTlRFWFRfTUVOVV9BQ1RJT05f
Q1VULCBWaXNpYmxlIHwgRW5hYmxlZCk7CisgICAgICAgICAgICBpdGVyID0gY2hlY2tDdXJyZW50
SXRlbUlzU3RvY2tBY3Rpb25BbmRHZXROZXh0KGl0ZXIsIFdFQktJVF9DT05URVhUX01FTlVfQUNU
SU9OX0NPUFksIFZpc2libGUgfCBFbmFibGVkKTsKKyAgICAgICAgICAgIGl0ZXIgPSBjaGVja0N1
cnJlbnRJdGVtSXNTdG9ja0FjdGlvbkFuZEdldE5leHQoaXRlciwgV0VCS0lUX0NPTlRFWFRfTUVO
VV9BQ1RJT05fUEFTVEUsIFZpc2libGUgfCBFbmFibGVkKTsKKyAgICAgICAgICAgIGl0ZXIgPSBj
aGVja0N1cnJlbnRJdGVtSXNTdG9ja0FjdGlvbkFuZEdldE5leHQoaXRlciwgV0VCS0lUX0NPTlRF
WFRfTUVOVV9BQ1RJT05fREVMRVRFLCBWaXNpYmxlIHwgRW5hYmxlZCk7CisgICAgICAgICAgICBp
dGVyID0gY2hlY2tDdXJyZW50SXRlbUlzU2VwYXJhdG9yQW5kR2V0TmV4dChpdGVyKTsKKyAgICAg
ICAgICAgIGl0ZXIgPSBjaGVja0N1cnJlbnRJdGVtSXNTdG9ja0FjdGlvbkFuZEdldE5leHQoaXRl
ciwgV0VCS0lUX0NPTlRFWFRfTUVOVV9BQ1RJT05fU0VMRUNUX0FMTCwgVmlzaWJsZSB8IEVuYWJs
ZWQpOworICAgICAgICAgICAgaXRlciA9IGNoZWNrQ3VycmVudEl0ZW1Jc1NlcGFyYXRvckFuZEdl
dE5leHQoaXRlcik7CisgICAgICAgICAgICBpdGVyID0gY2hlY2tDdXJyZW50SXRlbUlzU3RvY2tB
Y3Rpb25BbmRHZXROZXh0KGl0ZXIsIFdFQktJVF9DT05URVhUX01FTlVfQUNUSU9OX1VOSUNPREUs
IFZpc2libGUgfCBFbmFibGVkKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVk
aXRhYmxlQWxsb3dzVW5kbzoKKyAgICAgICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3Rf
cmVzdWx0X2NvbnRleHRfaXNfbGluayhoaXRUZXN0UmVzdWx0KSk7CisgICAgICAgICAgICBnX2Fz
c2VydCghd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2ltYWdlKGhpdFRlc3RSZXN1
bHQpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRl
eHRfaXNfbWVkaWEoaGl0VGVzdFJlc3VsdCkpOworICAgICAgICAgICAgZ19hc3NlcnQod2Via2l0
X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2VkaXRhYmxlKGhpdFRlc3RSZXN1bHQpKTsKKyAg
ICAgICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfc2Vs
ZWN0aW9uKGhpdFRlc3RSZXN1bHQpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0KCEoY29tbWFuZHMg
JiBXRUJLSVRfSElUX1RFU1RfUkVTVUxUX0NBTl9DVVQpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0
KCEoY29tbWFuZHMgJiBXRUJLSVRfSElUX1RFU1RfUkVTVUxUX0NBTl9DT1BZKSk7CisgICAgICAg
ICAgICBnX2Fzc2VydChjb21tYW5kcyAmIFdFQktJVF9ISVRfVEVTVF9SRVNVTFRfQ0FOX1BBU1RF
KTsKKyAgICAgICAgICAgIGdfYXNzZXJ0KGNvbW1hbmRzICYgV0VCS0lUX0hJVF9URVNUX1JFU1VM
VF9DQU5fVU5ETyk7CisgICAgICAgICAgICBnX2Fzc2VydCghKGNvbW1hbmRzICYgV0VCS0lUX0hJ
VF9URVNUX1JFU1VMVF9DQU5fUkVETykpOworICAgICAgICAgICAgaXRlciA9IGNoZWNrQ3VycmVu
dEl0ZW1Jc1N0b2NrQWN0aW9uQW5kR2V0TmV4dChpdGVyLCBXRUJLSVRfQ09OVEVYVF9NRU5VX0FD
VElPTl9DVVQsIFZpc2libGUpOworICAgICAgICAgICAgaXRlciA9IGNoZWNrQ3VycmVudEl0ZW1J
c1N0b2NrQWN0aW9uQW5kR2V0TmV4dChpdGVyLCBXRUJLSVRfQ09OVEVYVF9NRU5VX0FDVElPTl9D
T1BZLCBWaXNpYmxlKTsKKyAgICAgICAgICAgIGl0ZXIgPSBjaGVja0N1cnJlbnRJdGVtSXNTdG9j
a0FjdGlvbkFuZEdldE5leHQoaXRlciwgV0VCS0lUX0NPTlRFWFRfTUVOVV9BQ1RJT05fUEFTVEUs
IFZpc2libGUgfCBFbmFibGVkKTsKKyAgICAgICAgICAgIGl0ZXIgPSBjaGVja0N1cnJlbnRJdGVt
SXNTdG9ja0FjdGlvbkFuZEdldE5leHQoaXRlciwgV0VCS0lUX0NPTlRFWFRfTUVOVV9BQ1RJT05f
REVMRVRFLCBWaXNpYmxlKTsKKyAgICAgICAgICAgIGl0ZXIgPSBjaGVja0N1cnJlbnRJdGVtSXNT
ZXBhcmF0b3JBbmRHZXROZXh0KGl0ZXIpOworICAgICAgICAgICAgaXRlciA9IGNoZWNrQ3VycmVu
dEl0ZW1Jc1N0b2NrQWN0aW9uQW5kR2V0TmV4dChpdGVyLCBXRUJLSVRfQ09OVEVYVF9NRU5VX0FD
VElPTl9TRUxFQ1RfQUxMLCBWaXNpYmxlIHwgRW5hYmxlZCk7CisgICAgICAgICAgICBpdGVyID0g
Y2hlY2tDdXJyZW50SXRlbUlzU2VwYXJhdG9yQW5kR2V0TmV4dChpdGVyKTsKKyAgICAgICAgICAg
IGl0ZXIgPSBjaGVja0N1cnJlbnRJdGVtSXNTdG9ja0FjdGlvbkFuZEdldE5leHQoaXRlciwgV0VC
S0lUX0NPTlRFWFRfTUVOVV9BQ1RJT05fVU5JQ09ERSwgVmlzaWJsZSB8IEVuYWJsZWQpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRWRpdGFibGVBbGxvd3NSZWRvOgorICAgICAg
ICAgICAgZ19hc3NlcnQoIXdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19saW5rKGhp
dFRlc3RSZXN1bHQpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3RfcmVz
dWx0X2NvbnRleHRfaXNfaW1hZ2UoaGl0VGVzdFJlc3VsdCkpOworICAgICAgICAgICAgZ19hc3Nl
cnQoIXdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19tZWRpYShoaXRUZXN0UmVzdWx0
KSk7CisgICAgICAgICAgICBnX2Fzc2VydCh3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRf
aXNfZWRpdGFibGUoaGl0VGVzdFJlc3VsdCkpOworICAgICAgICAgICAgZ19hc3NlcnQod2Via2l0
X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX3NlbGVjdGlvbihoaXRUZXN0UmVzdWx0KSk7Cisg
ICAgICAgICAgICBnX2Fzc2VydChjb21tYW5kcyAmIFdFQktJVF9ISVRfVEVTVF9SRVNVTFRfQ0FO
X0NVVCk7CisgICAgICAgICAgICBnX2Fzc2VydChjb21tYW5kcyAmIFdFQktJVF9ISVRfVEVTVF9S
RVNVTFRfQ0FOX0NPUFkpOworICAgICAgICAgICAgZ19hc3NlcnQoY29tbWFuZHMgJiBXRUJLSVRf
SElUX1RFU1RfUkVTVUxUX0NBTl9QQVNURSk7CisgICAgICAgICAgICBnX2Fzc2VydCghKGNvbW1h
bmRzICYgV0VCS0lUX0hJVF9URVNUX1JFU1VMVF9DQU5fVU5ETykpOworICAgICAgICAgICAgZ19h
c3NlcnQoY29tbWFuZHMgJiBXRUJLSVRfSElUX1RFU1RfUkVTVUxUX0NBTl9SRURPKTsKKyAgICAg
ICAgICAgIGl0ZXIgPSBjaGVja0N1cnJlbnRJdGVtSXNTdG9ja0FjdGlvbkFuZEdldE5leHQoaXRl
ciwgV0VCS0lUX0NPTlRFWFRfTUVOVV9BQ1RJT05fQ1VULCBWaXNpYmxlIHwgRW5hYmxlZCk7Cisg
ICAgICAgICAgICBpdGVyID0gY2hlY2tDdXJyZW50SXRlbUlzU3RvY2tBY3Rpb25BbmRHZXROZXh0
KGl0ZXIsIFdFQktJVF9DT05URVhUX01FTlVfQUNUSU9OX0NPUFksIFZpc2libGUgfCBFbmFibGVk
KTsKKyAgICAgICAgICAgIGl0ZXIgPSBjaGVja0N1cnJlbnRJdGVtSXNTdG9ja0FjdGlvbkFuZEdl
dE5leHQoaXRlciwgV0VCS0lUX0NPTlRFWFRfTUVOVV9BQ1RJT05fUEFTVEUsIFZpc2libGUgfCBF
bmFibGVkKTsKKyAgICAgICAgICAgIGl0ZXIgPSBjaGVja0N1cnJlbnRJdGVtSXNTdG9ja0FjdGlv
bkFuZEdldE5leHQoaXRlciwgV0VCS0lUX0NPTlRFWFRfTUVOVV9BQ1RJT05fREVMRVRFLCBWaXNp
YmxlIHwgRW5hYmxlZCk7CisgICAgICAgICAgICBpdGVyID0gY2hlY2tDdXJyZW50SXRlbUlzU2Vw
YXJhdG9yQW5kR2V0TmV4dChpdGVyKTsKKyAgICAgICAgICAgIGl0ZXIgPSBjaGVja0N1cnJlbnRJ
dGVtSXNTdG9ja0FjdGlvbkFuZEdldE5leHQoaXRlciwgV0VCS0lUX0NPTlRFWFRfTUVOVV9BQ1RJ
T05fU0VMRUNUX0FMTCwgVmlzaWJsZSB8IEVuYWJsZWQpOworICAgICAgICAgICAgaXRlciA9IGNo
ZWNrQ3VycmVudEl0ZW1Jc1NlcGFyYXRvckFuZEdldE5leHQoaXRlcik7CisgICAgICAgICAgICBp
dGVyID0gY2hlY2tDdXJyZW50SXRlbUlzU3RvY2tBY3Rpb25BbmRHZXROZXh0KGl0ZXIsIFdFQktJ
VF9DT05URVhUX01FTlVfQUNUSU9OX1VOSUNPREUsIFZpc2libGUgfCBFbmFibGVkKTsKKyAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgZ19hc3NlcnRfbm90
X3JlYWNoZWQoKTsKICAgICAgICAgfQpAQCAtNDI4LDkgKzUyOCwxMSBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIERlZmF1bHRNZW51VHlwZSBtX2V4cGVjdGVk
TWVudVR5cGU7CisgICAgRGVmYXVsdE1lbnVUeXBlIG1fZXhwZWN0ZWRNZW51VHlwZSA9IE5hdmln
YXRpb247CiB9OwogCisjZGVmaW5lIFdJVFRJQ0lTTSAiSFRNTCBpcyB1c2VmdWwgZm9yIGEgd2Vi
IGNvbnRlbnQgcmVuZGVyaW5nIGVuZ2luZS4gLS0gTWFydGluIFJvYmluc29uIgorCiBzdGF0aWMg
dm9pZCBwcmVwYXJlQ29udGV4dE1lbnVUZXN0VmlldyhDb250ZXh0TWVudURlZmF1bHRUZXN0KiB0
ZXN0KQogewogICAgIEdVbmlxdWVQdHI8Y2hhcj4gYmFzZURpcihnX3N0cmR1cF9wcmludGYoImZp
bGU6Ly8lcy8iLCBUZXN0OjpnZXRSZXNvdXJjZXNEaXIoKS5kYXRhKCkpKTsKQEAgLTQzOSw3ICs1
NDEsNyBAQCBzdGF0aWMgdm9pZCBwcmVwYXJlQ29udGV4dE1lbnVUZXN0VmlldyhDb250ZXh0TWVu
dURlZmF1bHRUZXN0KiB0ZXN0KQogICAgICAgICAiIDxhIHN0eWxlPSdwb3NpdGlvbjphYnNvbHV0
ZTsgbGVmdDoxOyB0b3A6MScgaHJlZj0naHR0cDovL3d3dy53ZWJraXRndGsub3JnJyB0aXRsZT0n
V2ViS2l0R1RLKyBUaXRsZSc+V2ViS2l0R1RLKyBXZWJzaXRlPC9hPiIKICAgICAgICAgIiA8aW1n
IHN0eWxlPSdwb3NpdGlvbjphYnNvbHV0ZTsgbGVmdDoxOyB0b3A6MTAnIHNyYz0nYmxhbmsuaWNv
JyB3aWR0aD01IGhlaWdodD01PjwvaW1nPiIKICAgICAgICAgIiA8YSBzdHlsZT0ncG9zaXRpb246
YWJzb2x1dGU7IGxlZnQ6MTsgdG9wOjIwJyBocmVmPSdodHRwOi8vd3d3LndlYmtpdGd0ay5vcmcv
bG9nbycgdGl0bGU9J1dlYktpdEdUSysgTG9nbyc+PGltZyBzcmM9J2JsYW5rLmljbycgd2lkdGg9
NSBoZWlnaHQ9NT48L2ltZz48L2E+IgotICAgICAgICAiIDxpbnB1dCBzdHlsZT0ncG9zaXRpb246
YWJzb2x1dGU7IGxlZnQ6MTsgdG9wOjMwJyBzaXplPScxMCc+PC9pbnB1dD4iCisgICAgICAgICIg
PGlucHV0IHN0eWxlPSdwb3NpdGlvbjphYnNvbHV0ZTsgbGVmdDoxOyB0b3A6MzAnIHNpemU9JzEw
JyB2YWx1ZT0nIiBXSVRUSUNJU00gIicgaWQ9J2VkaXRhYmxlJz48L2lucHV0PiIKICAgICAgICAg
IiA8dmlkZW8gc3R5bGU9J3Bvc2l0aW9uOmFic29sdXRlOyBsZWZ0OjE7IHRvcDo1MCcgd2lkdGg9
JzMwMCcgaGVpZ2h0PSczMDAnIGNvbnRyb2xzPSdjb250cm9scycgcHJlbG9hZD0nbm9uZSc+PHNv
dXJjZSBzcmM9J3NpbGVuY2Uud2VibScgdHlwZT0ndmlkZW8vd2VibScgLz48L3ZpZGVvPiIKICAg
ICAgICAgIiA8YXVkaW8gc3R5bGU9J3Bvc2l0aW9uOmFic29sdXRlOyBsZWZ0OjE7IHRvcDo2MCcg
d2lkdGg9JzUwJyBoZWlnaHQ9JzIwJyBjb250cm9scz0nY29udHJvbHMnIHByZWxvYWQ9J25vbmUn
Pjxzb3VyY2Ugc3JjPSd0cmFjay5vZ2cnIHR5cGU9J2F1ZGlvL29nZycgLz48L2F1ZGlvPiIKICAg
ICAgICAgIiA8cCBzdHlsZT0ncG9zaXRpb246YWJzb2x1dGU7IGxlZnQ6MTsgdG9wOjkwJyBpZD0n
dGV4dF90b19zZWxlY3QnPkxvcmVtIGlwc3VtLjwvcD4iCkBAIC00NTQsMTEgKzU1Niw4OSBAQCBz
dGF0aWMgdm9pZCBwcmVwYXJlQ29udGV4dE1lbnVUZXN0VmlldyhDb250ZXh0TWVudURlZmF1bHRU
ZXN0KiB0ZXN0KQogICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwogfQogCitzdGF0
aWMgdm9pZCBjb3B5Q3VycmVudFNlbGVjdGlvblRvQ2xpcGJvYXJkKENvbnRleHRNZW51RGVmYXVs
dFRlc3QqIHRlc3QpCit7CisgICAgLy8gQ29waWVkIGZyb20gVGVzdFdlYlZpZXdFZGl0b3IuIFRo
ZXJlJ3Mgbm8gd2F5IHRvIGtub3cgd2hlbiB0aGUgc2VsZWN0aW9uCisgICAgLy8gaGFzIGJlZW4g
Y29waWVkIHRvIHRoZSBjbGlwYm9hcmQsIHNvIHVzZSBhIHRpbWVvdXQgc291cmNlIHRvIHF1ZXJ5
IHRoZQorICAgIC8vIGNsaXBib2FyZC4gTm90ZSB0aGlzIGZ1bmN0aW9uIGNvdWxkIHF1aXQgZWFy
bHkgaWYgc29tZSBvdGhlciB0ZXh0IGlzCisgICAgLy8gYWxyZWFkeSBwcmVzZW50IGluIHRoZSBj
bGlwYm9hcmQsIHNvIHRoaXMgZnVuY3Rpb24gY2FuJ3QgYmUgcmVsaWVkIG9uIHRvCisgICAgLy8g
YWN0dWFsbHkgY29weSB0aGUgZGVzaXJlZCB0ZXh0IGJlZm9yZSByZXR1cm5pbmcsIGJ1dCBvdXIg
dGVzdCBvbmx5IGNhcmVzCisgICAgLy8gdGhhdCAqc29tZXRoaW5nKiBpcyBjb3BpZWQgdG8gdGhl
IGNsaXBib2FyZC4KKyAgICB3ZWJraXRfd2ViX3ZpZXdfZXhlY3V0ZV9lZGl0aW5nX2NvbW1hbmQo
dGVzdC0+bV93ZWJWaWV3LCBXRUJLSVRfRURJVElOR19DT01NQU5EX0NPUFkpOworICAgIGdfdGlt
ZW91dF9hZGQoNTAsIFtdKGdwb2ludGVyIHVzZXJEYXRhKSAtPiBnYm9vbGVhbiB7CisgICAgICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCB3YWl0TWF4VHJpZXMgPSAzOworICAgICAgICBzdGF0aWMg
dW5zaWduZWQgdHJpZXNDb3VudCA9IDA7CisgICAgICAgIGF1dG8gbWFpbkxvb3AgPSBzdGF0aWNf
Y2FzdDxHTWFpbkxvb3AqPih1c2VyRGF0YSk7CisgICAgICAgIHRyaWVzQ291bnQrKzsKKyAgICAg
ICAgaWYgKGd0a19jbGlwYm9hcmRfd2FpdF9pc190ZXh0X2F2YWlsYWJsZShndGtfY2xpcGJvYXJk
X2dldChHREtfU0VMRUNUSU9OX0NMSVBCT0FSRCkpIHx8IHRyaWVzQ291bnQgPiB3YWl0TWF4VHJp
ZXMpIHsKKyAgICAgICAgICAgIGdfbWFpbl9sb29wX3F1aXQobWFpbkxvb3ApOworICAgICAgICAg
ICAgcmV0dXJuIEdfU09VUkNFX1JFTU9WRTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gR19T
T1VSQ0VfQ09OVElOVUU7CisgICAgfSwgdGVzdC0+bV9tYWluTG9vcCk7CisgICAgZ19tYWluX2xv
b3BfcnVuKHRlc3QtPm1fbWFpbkxvb3ApOworfQorCitzdGF0aWMgdm9pZCBzZWxlY3RUZXh0SW5F
ZGl0YWJsZShDb250ZXh0TWVudURlZmF1bHRUZXN0KiB0ZXN0KQoreworICAgIHdlYmtpdF93ZWJf
dmlld19ydW5famF2YXNjcmlwdCh0ZXN0LT5tX3dlYlZpZXcsICJkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnZWRpdGFibGUnKS5zZWxlY3QoKTsiLCBudWxscHRyLCBbXShHT2JqZWN0KiBzb3VyY2VP
YmplY3QsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBncG9pbnRlciB1c2VyRGF0YSkgeworICAgICAg
ICBhdXRvIG1haW5Mb29wID0gc3RhdGljX2Nhc3Q8R01haW5Mb29wKj4odXNlckRhdGEpOworICAg
ICAgICBhdXRvIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcoc291cmNlT2JqZWN0KTsKKyAgICAg
ICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOworICAgICAgICBXZWJLaXRKYXZhc2NyaXB0
UmVzdWx0KiBqc1Jlc3VsdCA9IHdlYmtpdF93ZWJfdmlld19ydW5famF2YXNjcmlwdF9maW5pc2go
d2ViVmlldywgcmVzdWx0LCAmZXJyb3Iub3V0UHRyKCkpOworICAgICAgICBnX2Fzc2VydF9ub19l
cnJvcihlcnJvci5nZXQoKSk7CisgICAgICAgIHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF91bnJl
Zihqc1Jlc3VsdCk7CisgICAgICAgIGdfbWFpbl9sb29wX3F1aXQobWFpbkxvb3ApOworICAgIH0s
IHRlc3QtPm1fbWFpbkxvb3ApOworICAgIGdfbWFpbl9sb29wX3J1bih0ZXN0LT5tX21haW5Mb29w
KTsKK30KKworc3RhdGljIHZvaWQgd2FpdFVudGlsRWRpdGFibGVDb250ZW50TWF0Y2hlcyhDb250
ZXh0TWVudURlZmF1bHRUZXN0KiB0ZXN0LCBjb25zdCBjaGFyKiBtYXRjaCkKK3sKKyAgICBzdHJ1
Y3QgQ29tbWFuZERhdGEgeworICAgICAgICBHTWFpbkxvb3AqIG1haW5Mb29wOworICAgICAgICBj
b25zdCBjaGFyKiBtYXRjaDsKKyAgICAgICAgYm9vbCBmaW5pc2hlZDsKKyAgICB9IGRhdGEgPSB7
IHRlc3QtPm1fbWFpbkxvb3AsIG1hdGNoLCBmYWxzZSB9OworCisgICAgd2hpbGUgKCFkYXRhLmZp
bmlzaGVkKSB7CisgICAgICAgIHdlYmtpdF93ZWJfdmlld19ydW5famF2YXNjcmlwdCh0ZXN0LT5t
X3dlYlZpZXcsICJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZWRpdGFibGUnKS52YWx1ZTsiLCBu
dWxscHRyLCBbXShHT2JqZWN0KiBzb3VyY2VPYmplY3QsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBn
cG9pbnRlciB1c2VyRGF0YSkgeworICAgICAgICAgICAgYXV0byBkYXRhID0gc3RhdGljX2Nhc3Q8
Q29tbWFuZERhdGEqPih1c2VyRGF0YSk7CisgICAgICAgICAgICBhdXRvIHdlYlZpZXcgPSBXRUJL
SVRfV0VCX1ZJRVcoc291cmNlT2JqZWN0KTsKKyAgICAgICAgICAgIEdVbmlxdWVPdXRQdHI8R0Vy
cm9yPiBlcnJvcjsKKyAgICAgICAgICAgIFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIGpzUmVzdWx0
ID0gd2Via2l0X3dlYl92aWV3X3J1bl9qYXZhc2NyaXB0X2ZpbmlzaCh3ZWJWaWV3LCByZXN1bHQs
ICZlcnJvci5vdXRQdHIoKSk7CisgICAgICAgICAgICBnX2Fzc2VydF9ub19lcnJvcihlcnJvci5n
ZXQoKSk7CisKKyAgICAgICAgICAgIEpTR2xvYmFsQ29udGV4dFJlZiBjb250ZXh0ID0gd2Via2l0
X2phdmFzY3JpcHRfcmVzdWx0X2dldF9nbG9iYWxfY29udGV4dChqc1Jlc3VsdCk7CisgICAgICAg
ICAgICBKU1ZhbHVlUmVmIHZhbHVlID0gd2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X2dldF92YWx1
ZShqc1Jlc3VsdCk7CisgICAgICAgICAgICBnX2Fzc2VydChKU1ZhbHVlSXNTdHJpbmcoY29udGV4
dCwgdmFsdWUpKTsKKworICAgICAgICAgICAgSlNTdHJpbmdSZWYganNTdHJpbmdWYWx1ZSA9IEpT
VmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgdmFsdWUsIG51bGxwdHIpOworICAgICAgICAgICAg
Z3NpemUgc3RyaW5nTGVuZ3RoID0gSlNTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXplKGpz
U3RyaW5nVmFsdWUpOworICAgICAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBzdHJpbmdWYWx1ZShz
dGF0aWNfY2FzdDxjaGFyKj4oZ19tYWxsb2Moc3RyaW5nTGVuZ3RoKSkpOworICAgICAgICAgICAg
SlNTdHJpbmdHZXRVVEY4Q1N0cmluZyhqc1N0cmluZ1ZhbHVlLCBzdHJpbmdWYWx1ZS5nZXQoKSwg
c3RyaW5nTGVuZ3RoKTsKKyAgICAgICAgICAgIEpTU3RyaW5nUmVsZWFzZShqc1N0cmluZ1ZhbHVl
KTsKKyAgICAgICAgICAgIHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF91bnJlZihqc1Jlc3VsdCk7
CisKKyAgICAgICAgICAgIGlmICghc3RyY21wKHN0cmluZ1ZhbHVlLmdldCgpLCBkYXRhLT5tYXRj
aCkpCisgICAgICAgICAgICAgICAgZGF0YS0+ZmluaXNoZWQgPSB0cnVlOworCisgICAgICAgICAg
ICBnX21haW5fbG9vcF9xdWl0KGRhdGEtPm1haW5Mb29wKTsKKyAgICAgICAgfSwgJmRhdGEpOwor
ICAgICAgICBnX21haW5fbG9vcF9ydW4odGVzdC0+bV9tYWluTG9vcCk7CisgICAgfQorfQorCiBz
dGF0aWMgdm9pZCB0ZXN0Q29udGV4dE1lbnVEZWZhdWx0TWVudShDb250ZXh0TWVudURlZmF1bHRU
ZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewogICAgIHRlc3QtPnNob3dJbldpbmRvd0FuZFdh
aXRVbnRpbE1hcHBlZCgpOwogCiAgICAgcHJlcGFyZUNvbnRleHRNZW51VGVzdFZpZXcodGVzdCk7
CisgICAgCisgICAgLy8gSnVzdCBnZXQgc29tZXRoaW5nIGludG8gdGhlIGNsaXBib2FyZCwgc28g
dGhlcmUgaXMgbm8gZG91YnQgdGhhdCBwYXN0ZQorICAgIC8vIHdpbGwgYmUgYXZhaWxhYmxlIHdo
ZW5ldmVyIHBvc3NpYmxlLiBXZSBvYnZpb3VzbHkgZG9uJ3Qgd2FudCB0aGlzIHRlc3QgdG8KKyAg
ICAvLyBkZXBlbmQgb24gdGhlIHByaW9yIGNvbnRlbnRzIG9mIHRoZSBjbGlwYm9hcmQuCisgICAg
Y29weUN1cnJlbnRTZWxlY3Rpb25Ub0NsaXBib2FyZCh0ZXN0KTsKIAogICAgIC8vIENvbnRleHQg
bWVudSBmb3Igc2VsZWN0aW9uLgogICAgIC8vIFRoaXMgdGVzdCBzaG91bGQgYWx3YXlzIGJlIHRo
ZSBmaXJzdCBiZWNhdXNlIGFueSBvdGhlciBjbGljayByZW1vdmVzIHRoZSBzZWxlY3Rpb24uCkBA
IC00OTMsOSArNjczLDI2IEBAIHN0YXRpYyB2b2lkIHRlc3RDb250ZXh0TWVudURlZmF1bHRNZW51
KENvbnRleHRNZW51RGVmYXVsdFRlc3QqIHRlc3QsIGdjb25zdHBvaW50CiAgICAgdGVzdC0+bV9l
eHBlY3RlZE1lbnVUeXBlID0gQ29udGV4dE1lbnVEZWZhdWx0VGVzdDo6QXVkaW87CiAgICAgdGVz
dC0+c2hvd0NvbnRleHRNZW51QXRQb3NpdGlvbkFuZFdhaXRVbnRpbEZpbmlzaGVkKDEsIDYwKTsK
IAotICAgIC8vIENvbnRleHQgbWVudSBmb3IgZWRpdGFibGUuCisgICAgLy8gQ29udGV4dCBtZW51
IGZvciBlZGl0YWJsZS4gTm8gdGV4dCBzZWxlY3RlZC4KICAgICB0ZXN0LT5tX2V4cGVjdGVkTWVu
dVR5cGUgPSBDb250ZXh0TWVudURlZmF1bHRUZXN0OjpFZGl0YWJsZTsKICAgICB0ZXN0LT5zaG93
Q29udGV4dE1lbnVBdFBvc2l0aW9uQW5kV2FpdFVudGlsRmluaXNoZWQoNSwgMzUpOworCisgICAg
Ly8gQ29udGV4dCBtZW51IGZvciBlZGl0YWJsZSBhZnRlciBzZWxlY3RpbmcgdGV4dC4KKyAgICBz
ZWxlY3RUZXh0SW5FZGl0YWJsZSh0ZXN0KTsKKyAgICB0ZXN0LT5tX2V4cGVjdGVkTWVudVR5cGUg
PSBDb250ZXh0TWVudURlZmF1bHRUZXN0OjpFZGl0YWJsZVdpdGhTZWxlY3Rpb247CisgICAgdGVz
dC0+c2hvd0NvbnRleHRNZW51QXRQb3NpdGlvbkFuZFdhaXRVbnRpbEZpbmlzaGVkKDUsIDM1KTsK
KworICAgIC8vIENvbnRlbnQgbWVudSBmb3IgZWRpdGFibGUgYWZ0ZXIgbW9kaWZ5aW5nIHRleHQu
CisgICAgdGVzdC0+a2V5U3Ryb2tlKEdES19LRVlfRGVsZXRlKTsKKyAgICB3YWl0VW50aWxFZGl0
YWJsZUNvbnRlbnRNYXRjaGVzKHRlc3QsICIiKTsKKyAgICB0ZXN0LT5tX2V4cGVjdGVkTWVudVR5
cGUgPSBDb250ZXh0TWVudURlZmF1bHRUZXN0OjpFZGl0YWJsZUFsbG93c1VuZG87CisgICAgdGVz
dC0+c2hvd0NvbnRleHRNZW51QXRQb3NpdGlvbkFuZFdhaXRVbnRpbEZpbmlzaGVkKDUsIDM1KTsK
KworICAgIC8vIENvbnRlbnQgbWVudSBmb3IgZWRpdGFibGUgYWZ0ZXIgdW5kby4KKyAgICB3ZWJr
aXRfd2ViX3ZpZXdfZXhlY3V0ZV9lZGl0aW5nX2NvbW1hbmQodGVzdC0+bV93ZWJWaWV3LCBXRUJL
SVRfRURJVElOR19DT01NQU5EX1VORE8pOworICAgIHdhaXRVbnRpbEVkaXRhYmxlQ29udGVudE1h
dGNoZXModGVzdCwgV0lUVElDSVNNKTsKKyAgICB0ZXN0LT5tX2V4cGVjdGVkTWVudVR5cGUgPSBD
b250ZXh0TWVudURlZmF1bHRUZXN0OjpFZGl0YWJsZUFsbG93c1JlZG87CisgICAgdGVzdC0+c2hv
d0NvbnRleHRNZW51QXRQb3NpdGlvbkFuZFdhaXRVbnRpbEZpbmlzaGVkKDUsIDM1KTsKIH0KIAog
c3RhdGljIHZvaWQgdGVzdFBvcHVwRXZlbnRTaWduYWwoQ29udGV4dE1lbnVEZWZhdWx0VGVzdCog
dGVzdCwgZ2NvbnN0cG9pbnRlcikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319080</attachid>
            <date>2017-08-25 07:48:48 -0700</date>
            <delta_ts>2017-09-21 20:05:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-168219-20170825094848.patch</filename>
            <type>text/plain</type>
            <size>49441</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxMTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWU3ZmQ2ZGM3NGJiMjNh
NmJiM2I0MmU5YjkzZDA5YzQ1ZTYzYzBmZS4uZmI5ODY2OTYzNGNhZjczZTQwYTFiMzFkZDYzZjQy
YTAxNTllMzExNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE3LTA4LTI1ICBNaWNo
YWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBF
eHBvc2UgZWRpdGluZyBjb21tYW5kIGF2YWlsYWJpbGl0eSBpbiBXZWJLaXRIaXRUZXN0UmVzdWx0
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjgyMTkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNl
IEhpdFRlc3RSZXN1bHQ6OmFsbG93c0NvcHkgd2l0aCBIaXRUZXN0UmVzdWx0OjphbGxvd2VkRWRp
dENvbW1hbmRzLgorCisgICAgICAgICogcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6YWxsb3dlZEVkaXRDb21tYW5kcyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjphbGxvd3NDb3B5IGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oOgorCiAyMDE3LTA4LTI1
ICBYYWJpZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgW0VNRV1bQ2xlYXJLZXldIEZpeGVkIHdhcm5pbmcgaW4gQ0RNIGNvbXBpbGF0aW9uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CmluZGV4IDEyZjg4NzBiOWM0ZTk1OTBhYzQwNzVjMGEzNzAwNmNiNGUwMjgxOTQuLjhiZmFhZGVh
YTliYmE3NmZlNWE5NWUzYTQ0NDdjZjEzMDYyZTgwN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTEg
QEAKKzIwMTctMDgtMjUgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29t
PgorCisgICAgICAgIFtHVEtdIEV4cG9zZSBlZGl0aW5nIGNvbW1hbmQgYXZhaWxhYmlsaXR5IGlu
IFdlYktpdEhpdFRlc3RSZXN1bHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE2ODIxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEkgd2FudCB0byBmaXggYSBjb250ZXh0IG1lbnUgZmxpY2tlcmluZyBwcm9i
bGVtIGluIEVwaXBoYW55LiBTaW5jZSB3ZSBoYXZlIHRvIHNob3cgdGhlCisgICAgICAgIFdlYktp
dENvbnRleHRNZW51IGluIGEgV2ViS2l0V2ViVmlldzo6Y29udGV4dC1tZW51IGhhbmRsZXIsIGJ1
dCBjYW5ub3QgY2hlY2sgdGhlCisgICAgICAgIGF2YWlsYWJpbGl0eSBvZiBlZGl0aW5nIGNvbW1h
bmRzIHRoZXJlIHdpdGhvdXQgdXNpbmcgc3luYyBJUEMsIHdlIGN1cnJlbnRseSBhc3N1bWUgYWxs
CisgICAgICAgIGVkaXRpbmcgY29tbWFuZHMgYXJlIGF2YWlsYWJsZSwgYWRkIHRoZW0gdG8gdGhl
IG1lbnUsIHN0YXJ0IHF1ZXJ5aW5nIHRoZSBhdmFpbGFiaWxpdHkgd2l0aAorICAgICAgICB3ZWJr
aXRfd2ViX3ZpZXdfY2FuX2V4ZWN1dGVfZWRpdGluZ19jb21tYW5kKCksIHNob3cgdGhlIG1lbnUs
IGFuZCBsYXRlciByZW1vdmUgdGhlbSBmcm9tIHRoZQorICAgICAgICBtZW51IG9uY2UgdGhhdCBm
aW5pc2hlcywgY2F1c2luZyB0aGUgZmxpY2tlci4gKFdlbGwsIG1vcmUgYWNjdXJhdGVseSwgdGhh
dCdzIHdoYXQgd2UgdXNlZCB0bworICAgICAgICBkbyBwcmlvciB0byBFcGlwaGFueSAzLjI0LiBO
b3dhZGF5cyB3ZSBqdXN0IGxlYXZlIHRoZSBjb250ZXh0IG1lbnUgaXRlbXMgZW5hYmxlZCBhdCBh
bGwKKyAgICAgICAgdGltZXMsIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGUgdW5kZXJseWluZyBl
ZGl0aW5nIGNvbW1hbmQgaXMgYXZhaWxhYmxlIG9yIG5vdCwgd2hpY2ggaXMKKyAgICAgICAgZXZl
biBtb3JlIGJyb2tlbi4pCisKKyAgICAgICAgQWRkIHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfZ2V0
X2F2YWlsYWJsZV9jb21tYW5kcygpIEFQSSB0byBXZWJLaXRIaXRUZXN0UmVzdWx0IHNvIHRoYXQK
KyAgICAgICAgY29udGV4dCBtZW51IGl0ZW0gYXZhaWxhYmlsaXR5IGNhbiBiZSBkZXRlcm1pbmVk
IHdpdGhvdXQgcmVxdWlyaW5nIGZ1cnRoZXIgSVBDIHdoZW4gc2hvd2luZworICAgICAgICB0aGUg
Y29udGV4dCBtZW51LiBUaGlzIGlzIHN1cGVyaW9yIHRvIHNlbmRpbmcgdGhlIFdlYktpdENvbnRl
eHRNZW51IGZyb20gdGhlIHdlYiBwcm9jZXNzIHRvCisgICAgICAgIHRoZSBVSSBwcm9jZXNzIHdp
dGhvdXQgdGhpcyBpbmZvcm1hdGlvbiwgYW5kIHRoZW4gc3Vic2VxdWVudGx5IHBlcmZvcm1pbmcg
c2V2ZXJhbCBJUEMKKyAgICAgICAgcXVlcmllcyBmcm9tIHRoZSBVSSBwcm9jZXNzIHRvIHRoZSB3
ZWIgcHJvY2VzcyB0byBjaGVjayB0aGUgYXZhaWxhYmlsaXR5IG9mIGVkaXRpbmcKKyAgICAgICAg
Y29tbWFuZHMuCisKKyAgICAgICAgKiBTaGFyZWQvQVBJL2dsaWIvV2ViS2l0SGl0VGVzdFJlc3Vs
dC5jcHA6CisgICAgICAgICh3ZWJraXRIaXRUZXN0UmVzdWx0R2V0UHJvcGVydHkpOgorICAgICAg
ICAod2Via2l0SGl0VGVzdFJlc3VsdFNldFByb3BlcnR5KToKKyAgICAgICAgKHdlYmtpdF9oaXRf
dGVzdF9yZXN1bHRfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRIaXRUZXN0UmVzdWx0Q3Jl
YXRlKToKKyAgICAgICAgKHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfZ2V0X2F2YWlsYWJsZV9jb21t
YW5kcyk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAg
ICAqIFNoYXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0YS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkhpdFRlc3RSZXN1bHREYXRhOjpXZWJIaXRUZXN0UmVzdWx0RGF0YSk6CisgICAgICAgIChXZWJL
aXQ6OldlYkhpdFRlc3RSZXN1bHREYXRhOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpXZWJIaXRUZXN0UmVzdWx0RGF0YTo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViSGl0
VGVzdFJlc3VsdERhdGEuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUhpdFRlc3RSZXN1
bHQuaDoKKyAgICAgICAgKEFQSTo6SGl0VGVzdFJlc3VsdDo6YWxsb3dzQ3V0IGNvbnN0KToKKyAg
ICAgICAgKEFQSTo6SGl0VGVzdFJlc3VsdDo6YWxsb3dzQ29weSBjb25zdCk6CisgICAgICAgIChB
UEk6OkhpdFRlc3RSZXN1bHQ6OmFsbG93c1Bhc3RlIGNvbnN0KToKKyAgICAgICAgKEFQSTo6SGl0
VGVzdFJlc3VsdDo6YWxsb3dzVW5kbyBjb25zdCk6CisgICAgICAgIChBUEk6OkhpdFRlc3RSZXN1
bHQ6OmFsbG93c1JlZG8gY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dEhpdFRlc3RSZXN1bHQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtp
dDJndGstNC4wLXNlY3Rpb25zLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9XZWJL
aXRIaXRUZXN0UmVzdWx0Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQ
YWdlTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwZXJmb3JtSW1tZWRpYXRlQWN0
aW9uSGl0VGVzdEF0TG9jYXRpb24pOgorCiAyMDE3LTA4LTI0ICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CiAKICAgICAgICAgW0RpcmVjdG9yeSBVcGxvYWRdIEFkZCBiYXNpYyBzdXBw
b3J0IGZvciBpbnB1dC53ZWJraXRkaXJlY3RvcnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9I
aXRUZXN0UmVzdWx0LmNwcAppbmRleCBiNzI3MGE1MDJhZWVkNzQ3MWNlZDYzNmQ2MWVkNWU1ZmY4
N2Y3YWQ5Li5kNDI3N2JlOTBmZmQyYmIzNGI5Zjk2MGIyN2YwMzFlZGFiYTE1NDdlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCkBAIC01OTYsMTkgKzU5Niwy
OSBAQCBib29sIEhpdFRlc3RSZXN1bHQ6OmlzT3ZlclRleHRJbnNpZGVGb3JtQ29udHJvbEVsZW1l
bnQoKSBjb25zdAogICAgIHJldHVybiAhd29yZFJhbmdlLT50ZXh0KCkuaXNFbXB0eSgpOwogfQog
Ci1ib29sIEhpdFRlc3RSZXN1bHQ6OmFsbG93c0NvcHkoKSBjb25zdAorYXV0byBIaXRUZXN0UmVz
dWx0OjphbGxvd2VkRWRpdENvbW1hbmRzKCkgY29uc3QgLT4gRWRpdENvbW1hbmRzCiB7Ci0gICAg
Tm9kZSogbm9kZSA9IGlubmVyTm9kZSgpOwotICAgIGlmICghbm9kZSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIGludCBjb21tYW5kcyA9IEVkaXRDb21tYW5kTm9uZTsKIAotICAgIFJlbmRl
ck9iamVjdCogcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigpOwotICAgIGlmICghcmVuZGVyZXIp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIW1faW5uZXJOb25TaGFyZWROb2RlKQor
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RWRpdENvbW1hbmRzPihjb21tYW5kcyk7CiAKLSAg
ICBib29sIGlzVXNlclNlbGVjdE5vbmUgPSByZW5kZXJlci0+c3R5bGUoKS51c2VyU2VsZWN0KCkg
PT0gU0VMRUNUX05PTkU7Ci0gICAgYm9vbCBpc1Bhc3N3b3JkRmllbGQgPSBpczxIVE1MSW5wdXRF
bGVtZW50Pihub2RlKSAmJiBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50Pigqbm9kZSkuaXNQYXNz
d29yZEZpZWxkKCk7Ci0gICAgcmV0dXJuICFpc1Bhc3N3b3JkRmllbGQgJiYgIWlzVXNlclNlbGVj
dE5vbmU7CisgICAgRnJhbWUqIGZyYW1lID0gaW5uZXJOb25TaGFyZWROb2RlKCktPmRvY3VtZW50
KCkuZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
RWRpdENvbW1hbmRzPihjb21tYW5kcyk7CisKKyAgICBpZiAoZnJhbWUtPmVkaXRvcigpLmNhbkN1
dCgpKQorICAgICAgICBjb21tYW5kcyB8PSBFZGl0Q29tbWFuZEN1dDsKKyAgICBpZiAoZnJhbWUt
PmVkaXRvcigpLmNhbkNvcHkoKSkKKyAgICAgICAgY29tbWFuZHMgfD0gRWRpdENvbW1hbmRDb3B5
OworICAgIGlmIChmcmFtZS0+ZWRpdG9yKCkuY2FuUGFzdGUoKSkKKyAgICAgICAgY29tbWFuZHMg
fD0gRWRpdENvbW1hbmRQYXN0ZTsKKyAgICBpZiAoZnJhbWUtPmVkaXRvcigpLmNhblVuZG8oKSkK
KyAgICAgICAgY29tbWFuZHMgfD0gRWRpdENvbW1hbmRVbmRvOworICAgIGlmIChmcmFtZS0+ZWRp
dG9yKCkuY2FuUmVkbygpKQorICAgICAgICBjb21tYW5kcyB8PSBFZGl0Q29tbWFuZFJlZG87CisK
KyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RWRpdENvbW1hbmRzPihjb21tYW5kcyk7CiB9CiAKIFVS
TCBIaXRUZXN0UmVzdWx0OjphYnNvbHV0ZUxpbmtVUkwoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9IaXRUZXN0UmVzdWx0LmgKaW5kZXggYmEyZDdhMmE1OTBiNWE3NDU0YjVhZjRkY2I5
Njg2MmFjOWY4MDJlZC4uMThmYjg2MjUyMTEyZjM5ZWY5YzBiM2U0ODlhNzFkNzdmNjc2ZTQ4NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oCkBAIC0xMzEsNyArMTMx
LDE2IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNEb3dubG9hZGFibGVN
ZWRpYSgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNPdmVyVGV4dEluc2lkZUZv
cm1Db250cm9sRWxlbWVudCgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgYWxsb3dz
Q29weSgpIGNvbnN0OworCisgICAgZW51bSBFZGl0Q29tbWFuZHMgeworICAgICAgICBFZGl0Q29t
bWFuZE5vbmUgPSAwLAorICAgICAgICBFZGl0Q29tbWFuZEN1dCA9IDEgPDwgMCwKKyAgICAgICAg
RWRpdENvbW1hbmRDb3B5ID0gMSA8PCAxLAorICAgICAgICBFZGl0Q29tbWFuZFBhc3RlID0gMSA8
PCAyLAorICAgICAgICBFZGl0Q29tbWFuZFVuZG8gPSAxIDw8IDMsCisgICAgICAgIEVkaXRDb21t
YW5kUmVkbyA9IDEgPDwgNCwKKyAgICB9OworICAgIFdFQkNPUkVfRVhQT1JUIEVkaXRDb21tYW5k
cyBhbGxvd2VkRWRpdENvbW1hbmRzKCkgY29uc3Q7CiAKICAgICBIaXRUZXN0UHJvZ3Jlc3MgYWRk
Tm9kZVRvTGlzdEJhc2VkVGVzdFJlc3VsdChOb2RlKiwgY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBj
b25zdCBIaXRUZXN0TG9jYXRpb24mIHBvaW50SW5Db250YWluZXIsIGNvbnN0IExheW91dFJlY3Qm
ID0gTGF5b3V0UmVjdCgpKTsKICAgICBIaXRUZXN0UHJvZ3Jlc3MgYWRkTm9kZVRvTGlzdEJhc2Vk
VGVzdFJlc3VsdChOb2RlKiwgY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBjb25zdCBIaXRUZXN0TG9j
YXRpb24mIHBvaW50SW5Db250YWluZXIsIGNvbnN0IEZsb2F0UmVjdCYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2dsaWIvV2ViS2l0SGl0VGVzdFJlc3VsdC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRIaXRUZXN0UmVzdWx0LmNwcAppbmRl
eCAzZjhhNmJjZDUxOTE4Y2IxNmRiZjU2N2M5MmE0NzE4MzMxMWZiY2M1Li45NTVmZWYyYTk0YTk5
NTkxYTA3NzNjYmIwMWEwY2EyZjlkY2ZhZDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvZ2xpYi9XZWJLaXRIaXRUZXN0UmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRIaXRUZXN0UmVzdWx0LmNwcApAQCAtMjEsNiArMjEsNyBA
QAogI2luY2x1ZGUgIldlYktpdEhpdFRlc3RSZXN1bHQuaCIKIAogI2luY2x1ZGUgIldlYkhpdFRl
c3RSZXN1bHREYXRhLmgiCisjaW5jbHVkZSAiV2ViS2l0RW51bVR5cGVzLmgiCiAjaW5jbHVkZSAi
V2ViS2l0SGl0VGVzdFJlc3VsdFByaXZhdGUuaCIKICNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5o
PgogI2luY2x1ZGUgPHd0Zi9nbGliL1dURkdUeXBlLmg+CkBAIC01OSw2ICs2MCw3IEBAIGVudW0g
ewogICAgIFBST1BfMCwKIAogICAgIFBST1BfQ09OVEVYVCwKKyAgICBQUk9QX0NPTU1BTkRTLAog
ICAgIFBST1BfTElOS19VUkksCiAgICAgUFJPUF9MSU5LX1RJVExFLAogICAgIFBST1BfTElOS19M
QUJFTCwKQEAgLTY3LDcgKzY5LDggQEAgZW51bSB7CiB9OwogCiBzdHJ1Y3QgX1dlYktpdEhpdFRl
c3RSZXN1bHRQcml2YXRlIHsKLSAgICB1bnNpZ25lZCBpbnQgY29udGV4dDsKKyAgICB1bnNpZ25l
ZCBjb250ZXh0OworICAgIFdlYktpdEhpdFRlc3RSZXN1bHRDb21tYW5kcyBjb21tYW5kczsKICAg
ICBDU3RyaW5nIGxpbmtVUkk7CiAgICAgQ1N0cmluZyBsaW5rVGl0bGU7CiAgICAgQ1N0cmluZyBs
aW5rTGFiZWw7CkBAIC04NSw2ICs4OCw5IEBAIHN0YXRpYyB2b2lkIHdlYmtpdEhpdFRlc3RSZXN1
bHRHZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwgR1ZhbHVlCiAgICAg
Y2FzZSBQUk9QX0NPTlRFWFQ6CiAgICAgICAgIGdfdmFsdWVfc2V0X3VpbnQodmFsdWUsIHdlYmtp
dF9oaXRfdGVzdF9yZXN1bHRfZ2V0X2NvbnRleHQoaGl0VGVzdFJlc3VsdCkpOwogICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFBST1BfQ09NTUFORFM6CisgICAgICAgIGdfdmFsdWVfc2V0X2ZsYWdz
KHZhbHVlLCBzdGF0aWNfY2FzdDxndWludD4od2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9nZXRfYXZh
aWxhYmxlX2NvbW1hbmRzKGhpdFRlc3RSZXN1bHQpKSk7CisgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgUFJPUF9MSU5LX1VSSToKICAgICAgICAgZ192YWx1ZV9zZXRfc3RyaW5nKHZhbHVlLCB3ZWJr
aXRfaGl0X3Rlc3RfcmVzdWx0X2dldF9saW5rX3VyaShoaXRUZXN0UmVzdWx0KSk7CiAgICAgICAg
IGJyZWFrOwpAQCAtMTEzLDYgKzExOSw5IEBAIHN0YXRpYyB2b2lkIHdlYmtpdEhpdFRlc3RSZXN1
bHRTZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwgY29uc3QKICAgICBj
YXNlIFBST1BfQ09OVEVYVDoKICAgICAgICAgaGl0VGVzdFJlc3VsdC0+cHJpdi0+Y29udGV4dCA9
IGdfdmFsdWVfZ2V0X3VpbnQodmFsdWUpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1Bf
Q09NTUFORFM6CisgICAgICAgIGhpdFRlc3RSZXN1bHQtPnByaXYtPmNvbW1hbmRzID0gc3RhdGlj
X2Nhc3Q8V2ViS2l0SGl0VGVzdFJlc3VsdENvbW1hbmRzPihnX3ZhbHVlX2dldF9mbGFncyh2YWx1
ZSkpOworICAgICAgICBicmVhazsKICAgICBjYXNlIFBST1BfTElOS19VUkk6CiAgICAgICAgIGhp
dFRlc3RSZXN1bHQtPnByaXYtPmxpbmtVUkkgPSBnX3ZhbHVlX2dldF9zdHJpbmcodmFsdWUpOwog
ICAgICAgICBicmVhazsKQEAgLTE1Niw2ICsxNjUsMjMgQEAgc3RhdGljIHZvaWQgd2Via2l0X2hp
dF90ZXN0X3Jlc3VsdF9jbGFzc19pbml0KFdlYktpdEhpdFRlc3RSZXN1bHRDbGFzcyogaGl0VGVz
dFIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHBhcmFtRmxhZ3MpKTsKIAogICAgIC8qKgorICAgICAqIFdlYktpdEhpdFRlc3RSZXN1bHQ6Y29t
bWFuZHM6CisgICAgICoKKyAgICAgKiBCaXRtYXNrIG9mICNXZWJLaXRIaXRUZXN0UmVzdWx0Q29t
bWFuZHMgZmxhZ3MgcmVwcmVzZW50aW5nIHRoZQorICAgICAqIGF2YWlsYWJsZSBlZGl0IGNvbW1h
bmRzIHRoYXQgY2FuIGJlIHBlcmZvcm1lZCBhdCB0aGUgcmVzdWx0LgorICAgICAqCisgICAgICog
U2luY2U6IDIuMjAKKyAgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5
KG9iamVjdENsYXNzLAorICAgICAgICBQUk9QX0NPTU1BTkRTLAorICAgICAgICBnX3BhcmFtX3Nw
ZWNfZmxhZ3MoImNvbW1hbmRzIiwKKyAgICAgICAgICAgIF8oIkNvbW1hbmRzIiksCisgICAgICAg
ICAgICBfKCJGbGFncyBmb3IgdGhlIGF2YWlsYWJsZSBlZGl0IGNvbW1hbmRzIGF0IHRoZSBXZWJL
aXRIaXRUZXN0UmVzdWx0IiksCisgICAgICAgICAgICBXRUJLSVRfVFlQRV9ISVRfVEVTVF9SRVNV
TFRfQ09NTUFORFMsCisgICAgICAgICAgICAwLAorICAgICAgICAgICAgcGFyYW1GbGFncykpOwor
CisgICAgLyoqCiAgICAgICogV2ViS2l0SGl0VGVzdFJlc3VsdDpsaW5rLXVyaToKICAgICAgKgog
ICAgICAqIFRoZSBVUkkgb2YgdGhlIGxpbmsgaWYgZmxhZyAlV0VCS0lUX0hJVF9URVNUX1JFU1VM
VF9DT05URVhUX0xJTksKQEAgLTIyNSwyNyArMjUxLDM0IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9o
aXRfdGVzdF9yZXN1bHRfY2xhc3NfaW5pdChXZWJLaXRIaXRUZXN0UmVzdWx0Q2xhc3MqIGhpdFRl
c3RSCiBXZWJLaXRIaXRUZXN0UmVzdWx0KiB3ZWJraXRIaXRUZXN0UmVzdWx0Q3JlYXRlKGNvbnN0
IFdlYkhpdFRlc3RSZXN1bHREYXRhJiBoaXRUZXN0UmVzdWx0KQogewogICAgIHVuc2lnbmVkIGNv
bnRleHQgPSBXRUJLSVRfSElUX1RFU1RfUkVTVUxUX0NPTlRFWFRfRE9DVU1FTlQ7Ci0KICAgICBp
ZiAoIWhpdFRlc3RSZXN1bHQuYWJzb2x1dGVMaW5rVVJMLmlzRW1wdHkoKSkKICAgICAgICAgY29u
dGV4dCB8PSBXRUJLSVRfSElUX1RFU1RfUkVTVUxUX0NPTlRFWFRfTElOSzsKLQogICAgIGlmICgh
aGl0VGVzdFJlc3VsdC5hYnNvbHV0ZUltYWdlVVJMLmlzRW1wdHkoKSkKICAgICAgICAgY29udGV4
dCB8PSBXRUJLSVRfSElUX1RFU1RfUkVTVUxUX0NPTlRFWFRfSU1BR0U7Ci0KICAgICBpZiAoIWhp
dFRlc3RSZXN1bHQuYWJzb2x1dGVNZWRpYVVSTC5pc0VtcHR5KCkpCiAgICAgICAgIGNvbnRleHQg
fD0gV0VCS0lUX0hJVF9URVNUX1JFU1VMVF9DT05URVhUX01FRElBOwotCiAgICAgaWYgKGhpdFRl
c3RSZXN1bHQuaXNDb250ZW50RWRpdGFibGUpCiAgICAgICAgIGNvbnRleHQgfD0gV0VCS0lUX0hJ
VF9URVNUX1JFU1VMVF9DT05URVhUX0VESVRBQkxFOwotCiAgICAgaWYgKGhpdFRlc3RSZXN1bHQu
aXNTY3JvbGxiYXIpCiAgICAgICAgIGNvbnRleHQgfD0gV0VCS0lUX0hJVF9URVNUX1JFU1VMVF9D
T05URVhUX1NDUk9MTEJBUjsKLQogICAgIGlmIChoaXRUZXN0UmVzdWx0LmlzU2VsZWN0ZWQpCiAg
ICAgICAgIGNvbnRleHQgfD0gV0VCS0lUX0hJVF9URVNUX1JFU1VMVF9DT05URVhUX1NFTEVDVElP
TjsKIAorICAgIHVuc2lnbmVkIGNvbW1hbmRzID0gMDsKKyAgICBpZiAoaGl0VGVzdFJlc3VsdC5h
bGxvd2VkRWRpdENvbW1hbmRzICYgV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6RWRpdENvbW1hbmRD
dXQpCisgICAgICAgIGNvbW1hbmRzIHw9IFdFQktJVF9ISVRfVEVTVF9SRVNVTFRfQ0FOX0NVVDsK
KyAgICBpZiAoaGl0VGVzdFJlc3VsdC5hbGxvd2VkRWRpdENvbW1hbmRzICYgV2ViQ29yZTo6SGl0
VGVzdFJlc3VsdDo6RWRpdENvbW1hbmRDb3B5KQorICAgICAgICBjb21tYW5kcyB8PSBXRUJLSVRf
SElUX1RFU1RfUkVTVUxUX0NBTl9DT1BZOworICAgIGlmIChoaXRUZXN0UmVzdWx0LmFsbG93ZWRF
ZGl0Q29tbWFuZHMgJiBXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjpFZGl0Q29tbWFuZFBhc3RlKQor
ICAgICAgICBjb21tYW5kcyB8PSBXRUJLSVRfSElUX1RFU1RfUkVTVUxUX0NBTl9QQVNURTsKKyAg
ICBpZiAoaGl0VGVzdFJlc3VsdC5hbGxvd2VkRWRpdENvbW1hbmRzICYgV2ViQ29yZTo6SGl0VGVz
dFJlc3VsdDo6RWRpdENvbW1hbmRVbmRvKQorICAgICAgICBjb21tYW5kcyB8PSBXRUJLSVRfSElU
X1RFU1RfUkVTVUxUX0NBTl9VTkRPOworICAgIGlmIChoaXRUZXN0UmVzdWx0LmFsbG93ZWRFZGl0
Q29tbWFuZHMgJiBXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjpFZGl0Q29tbWFuZFJlZG8pCisgICAg
ICAgIGNvbW1hbmRzIHw9IFdFQktJVF9ISVRfVEVTVF9SRVNVTFRfQ0FOX1JFRE87CisKICAgICBy
ZXR1cm4gV0VCS0lUX0hJVF9URVNUX1JFU1VMVChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfSElU
X1RFU1RfUkVTVUxULAogICAgICAgICAiY29udGV4dCIsIGNvbnRleHQsCisgICAgICAgICJjb21t
YW5kcyIsIGNvbW1hbmRzLAogICAgICAgICAibGluay11cmkiLCBjb250ZXh0ICYgV0VCS0lUX0hJ
VF9URVNUX1JFU1VMVF9DT05URVhUX0xJTksgPyBoaXRUZXN0UmVzdWx0LmFic29sdXRlTGlua1VS
TC51dGY4KCkuZGF0YSgpIDogbnVsbHB0ciwKICAgICAgICAgImltYWdlLXVyaSIsIGNvbnRleHQg
JiBXRUJLSVRfSElUX1RFU1RfUkVTVUxUX0NPTlRFWFRfSU1BR0UgPyBoaXRUZXN0UmVzdWx0LmFi
c29sdXRlSW1hZ2VVUkwudXRmOCgpLmRhdGEoKSA6IG51bGxwdHIsCiAgICAgICAgICJtZWRpYS11
cmkiLCBjb250ZXh0ICYgV0VCS0lUX0hJVF9URVNUX1JFU1VMVF9DT05URVhUX01FRElBID8gaGl0
VGVzdFJlc3VsdC5hYnNvbHV0ZU1lZGlhVVJMLnV0ZjgoKS5kYXRhKCkgOiBudWxscHRyLApAQCAt
NDcyLDMgKzUwNSwyMSBAQCBnYm9vbGVhbiB3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRf
aXNfc2Nyb2xsYmFyKFdlYktpdEhpdFRlc3RSZXN1bHQqIGhpdFRlcwogCiAgICAgcmV0dXJuIGhp
dFRlc3RSZXN1bHQtPnByaXYtPmNvbnRleHQgJiBXRUJLSVRfSElUX1RFU1RfUkVTVUxUX0NPTlRF
WFRfU0NST0xMQkFSOwogfQorCisvKioKKyAqIHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfZ2V0X2F2
YWlsYWJsZV9jb21tYW5kczoKKyAqIEBoaXRfdGVzdF9yZXN1bHQ6IGEgI1dlYktpdEhpdFRlc3RS
ZXN1bHQKKyAqCisgKiBHZXRzIGNvbW1hbmRzIHRoYXQgYXJlIGF2YWlsYWJsZSB0byBiZSBwZXJm
b3JtZWQgYXQgdGhlIGxvY2F0aW9uIG9mCisgKiBAaGl0X3Rlc3RfcmVzdWx0LgorICoKKyAqIFJl
dHVybnM6IHRoZSBhdmFpbGFibGUgY29tbWFuZHMKKyAqCisgKiBTaW5jZTogMi4yMAorICovCitX
ZWJLaXRIaXRUZXN0UmVzdWx0Q29tbWFuZHMgd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9nZXRfYXZh
aWxhYmxlX2NvbW1hbmRzKFdlYktpdEhpdFRlc3RSZXN1bHQqIGhpdFRlc3RSZXN1bHQpCit7Cisg
ICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX0hJVF9URVNUX1JFU1VMVChoaXRUZXN0
UmVzdWx0KSwgc3RhdGljX2Nhc3Q8V2ViS2l0SGl0VGVzdFJlc3VsdENvbW1hbmRzPigwKSk7CisK
KyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViS2l0SGl0VGVzdFJlc3VsdENvbW1hbmRzPihoaXRU
ZXN0UmVzdWx0LT5wcml2LT5jb21tYW5kcyk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IGU2ZGJjZDZlYjA2ZjhhNTljMzhkZmQ4MjNiNTk2
NDQ3ZWJhYTQ2YjYuLmFjZWE0MTY1ZmI4MDkwZDg2MzE2MDNlM2NhNjkxNTZiMjVjZmY5ZWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC0zMiw2
ICszMiw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Db2xvclNwYWNlLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9EaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVM
b2FkZXJUeXBlcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSGl0VGVzdFJlc3VsdC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvSW5kZXhlZERCLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVNlbGVjdGlv
bk9wdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya0xvYWRNZXRyaWNzLmg+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0YS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0YS5jcHAKaW5kZXggZjNlNmE1
ZTdiNDZkYWRlZTc3ZDNkOTA1ZTYyYWMyNDA3OThjMjY2My4uYzFjOGMyM2UxZTczNzMwMDgwYzU1
MzFiMjBlNzlhOTQ0NmRiNWI5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
SGl0VGVzdFJlc3VsdERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkhpdFRl
c3RSZXN1bHREYXRhLmNwcApAQCAtNTMsOCArNTMsOCBAQCBXZWJIaXRUZXN0UmVzdWx0RGF0YTo6
V2ViSGl0VGVzdFJlc3VsdERhdGEoY29uc3QgV2ViQ29yZTo6SGl0VGVzdFJlc3VsdCYgaGl0VGVz
dAogICAgICwgaXNTZWxlY3RlZChoaXRUZXN0UmVzdWx0LmlzU2VsZWN0ZWQoKSkKICAgICAsIGlz
VGV4dE5vZGUoaGl0VGVzdFJlc3VsdC5pbm5lck5vZGUoKSAmJiBoaXRUZXN0UmVzdWx0LmlubmVy
Tm9kZSgpLT5pc1RleHROb2RlKCkpCiAgICAgLCBpc092ZXJUZXh0SW5zaWRlRm9ybUNvbnRyb2xF
bGVtZW50KGhpdFRlc3RSZXN1bHQuaXNPdmVyVGV4dEluc2lkZUZvcm1Db250cm9sRWxlbWVudCgp
KQotICAgICwgYWxsb3dzQ29weShoaXRUZXN0UmVzdWx0LmFsbG93c0NvcHkoKSkKICAgICAsIGlz
RG93bmxvYWRhYmxlTWVkaWEoaGl0VGVzdFJlc3VsdC5pc0Rvd25sb2FkYWJsZU1lZGlhKCkpCisg
ICAgLCBhbGxvd2VkRWRpdENvbW1hbmRzKHN0YXRpY19jYXN0PHVuc2lnbmVkPihoaXRUZXN0UmVz
dWx0LmFsbG93ZWRFZGl0Q29tbWFuZHMoKSkpCiAgICAgLCBpbWFnZVNpemUoMCkKIHsKIH0KQEAg
LTczLDggKzczLDggQEAgV2ViSGl0VGVzdFJlc3VsdERhdGE6OldlYkhpdFRlc3RSZXN1bHREYXRh
KGNvbnN0IFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQmIGhpdFRlc3QKICAgICAsIGlzU2VsZWN0ZWQo
aGl0VGVzdFJlc3VsdC5pc1NlbGVjdGVkKCkpCiAgICAgLCBpc1RleHROb2RlKGhpdFRlc3RSZXN1
bHQuaW5uZXJOb2RlKCkgJiYgaGl0VGVzdFJlc3VsdC5pbm5lck5vZGUoKS0+aXNUZXh0Tm9kZSgp
KQogICAgICwgaXNPdmVyVGV4dEluc2lkZUZvcm1Db250cm9sRWxlbWVudChoaXRUZXN0UmVzdWx0
LmlzT3ZlclRleHRJbnNpZGVGb3JtQ29udHJvbEVsZW1lbnQoKSkKLSAgICAsIGFsbG93c0NvcHko
aGl0VGVzdFJlc3VsdC5hbGxvd3NDb3B5KCkpCiAgICAgLCBpc0Rvd25sb2FkYWJsZU1lZGlhKGhp
dFRlc3RSZXN1bHQuaXNEb3dubG9hZGFibGVNZWRpYSgpKQorICAgICwgYWxsb3dlZEVkaXRDb21t
YW5kcyhzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaGl0VGVzdFJlc3VsdC5hbGxvd2VkRWRpdENvbW1h
bmRzKCkpKQogICAgICwgaW1hZ2VTaXplKDApCiB7CiAgICAgaWYgKCFpbmNsdWRlSW1hZ2UpCkBA
IC0xMDksOCArMTA5LDggQEAgdm9pZCBXZWJIaXRUZXN0UmVzdWx0RGF0YTo6ZW5jb2RlKElQQzo6
RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IGlzU2VsZWN0ZWQ7CiAgICAg
ZW5jb2RlciA8PCBpc1RleHROb2RlOwogICAgIGVuY29kZXIgPDwgaXNPdmVyVGV4dEluc2lkZUZv
cm1Db250cm9sRWxlbWVudDsKLSAgICBlbmNvZGVyIDw8IGFsbG93c0NvcHk7CiAgICAgZW5jb2Rl
ciA8PCBpc0Rvd25sb2FkYWJsZU1lZGlhOworICAgIGVuY29kZXIgPDwgYWxsb3dlZEVkaXRDb21t
YW5kczsKICAgICBlbmNvZGVyIDw8IGxvb2t1cFRleHQ7CiAgICAgZW5jb2RlciA8PCBkaWN0aW9u
YXJ5UG9wdXBJbmZvOwogCkBAIC0xNDMsOCArMTQzLDggQEAgYm9vbCBXZWJIaXRUZXN0UmVzdWx0
RGF0YTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgV2ViSGl0VGVzdFJlc3VsdERhdGEm
IGgKICAgICAgICAgfHwgIWRlY29kZXIuZGVjb2RlKGhpdFRlc3RSZXN1bHREYXRhLmlzU2VsZWN0
ZWQpCiAgICAgICAgIHx8ICFkZWNvZGVyLmRlY29kZShoaXRUZXN0UmVzdWx0RGF0YS5pc1RleHRO
b2RlKQogICAgICAgICB8fCAhZGVjb2Rlci5kZWNvZGUoaGl0VGVzdFJlc3VsdERhdGEuaXNPdmVy
VGV4dEluc2lkZUZvcm1Db250cm9sRWxlbWVudCkKLSAgICAgICAgfHwgIWRlY29kZXIuZGVjb2Rl
KGhpdFRlc3RSZXN1bHREYXRhLmFsbG93c0NvcHkpCiAgICAgICAgIHx8ICFkZWNvZGVyLmRlY29k
ZShoaXRUZXN0UmVzdWx0RGF0YS5pc0Rvd25sb2FkYWJsZU1lZGlhKQorICAgICAgICB8fCAhZGVj
b2Rlci5kZWNvZGUoaGl0VGVzdFJlc3VsdERhdGEuYWxsb3dlZEVkaXRDb21tYW5kcykKICAgICAg
ICAgfHwgIWRlY29kZXIuZGVjb2RlKGhpdFRlc3RSZXN1bHREYXRhLmxvb2t1cFRleHQpCiAgICAg
ICAgIHx8ICFkZWNvZGVyLmRlY29kZShoaXRUZXN0UmVzdWx0RGF0YS5kaWN0aW9uYXJ5UG9wdXBJ
bmZvKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkhp
dFRlc3RSZXN1bHREYXRhLmgKaW5kZXggMzI0NjhhYmE5Yzc1NjMxNzkwYTgwMGM4MmIxOGUwZDAw
YWVkOTBjNS4uZmQxNGJmNjNmNjg3OWJlMzQ4N2NhMWJhY2RhMzBkZjlhNmY1MmYwMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0YS5oCkBAIC0yNCw2ICsyNCw3
IEBACiAjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9EaWN0aW9u
YXJ5UG9wdXBJbmZvLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFBvaW50Lmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9IaXRUZXN0UmVzdWx0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlT3ZlcmxheS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CkBAIC01Nyw5ICs1OCwxMCBAQCBzdHJ1Y3QgV2ViSGl0VGVzdFJlc3VsdERhdGEgewogICAg
IGJvb2wgaXNTZWxlY3RlZDsKICAgICBib29sIGlzVGV4dE5vZGU7CiAgICAgYm9vbCBpc092ZXJU
ZXh0SW5zaWRlRm9ybUNvbnRyb2xFbGVtZW50OwotICAgIGJvb2wgYWxsb3dzQ29weTsKICAgICBi
b29sIGlzRG93bmxvYWRhYmxlTWVkaWE7CiAKKyAgICB1bnNpZ25lZCBhbGxvd2VkRWRpdENvbW1h
bmRzOworCiAgICAgU3RyaW5nIGxvb2t1cFRleHQ7CiAgICAgUmVmUHRyPFdlYktpdDo6U2hhcmVk
TWVtb3J5PiBpbWFnZVNoYXJlZE1lbW9yeTsKICAgICB1aW50NjRfdCBpbWFnZVNpemU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSGl0VGVzdFJlc3VsdC5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhpdFRlc3RSZXN1bHQuaAppbmRleCBjZDkz
OWM5YjBhODdjY2MxYzY0N2JhYTJhOGE5MjcwNjlkYThmNmQ0Li42ZDkyYzE3YWM2YWMwNmJlOWE4
YmVkMjg2MGZmZjA2ZjA0MTMwODZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJSGl0VGVzdFJlc3VsdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElIaXRUZXN0UmVzdWx0LmgKQEAgLTcwLDcgKzcwLDExIEBAIHB1YmxpYzoKIAogICAgIGJv
b2wgaXNPdmVyVGV4dEluc2lkZUZvcm1Db250cm9sRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1f
ZGF0YS5pc092ZXJUZXh0SW5zaWRlRm9ybUNvbnRyb2xFbGVtZW50OyB9CiAKLSAgICBib29sIGFs
bG93c0NvcHkoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuYWxsb3dzQ29weTsgfQorICAgIGJvb2wg
YWxsb3dzQ3V0KCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmFsbG93ZWRFZGl0Q29tbWFuZHMgJiBX
ZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjpFZGl0Q29tbWFuZEN1dDsgfQorICAgIGJvb2wgYWxsb3dz
Q29weSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5hbGxvd2VkRWRpdENvbW1hbmRzICYgV2ViQ29y
ZTo6SGl0VGVzdFJlc3VsdDo6RWRpdENvbW1hbmRDb3B5OyB9CisgICAgYm9vbCBhbGxvd3NQYXN0
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5hbGxvd2VkRWRpdENvbW1hbmRzICYgV2ViQ29yZTo6
SGl0VGVzdFJlc3VsdDo6RWRpdENvbW1hbmRQYXN0ZTsgfQorICAgIGJvb2wgYWxsb3dzVW5kbygp
IGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5hbGxvd2VkRWRpdENvbW1hbmRzICYgV2ViQ29yZTo6SGl0
VGVzdFJlc3VsdDo6RWRpdENvbW1hbmRVbmRvOyB9CisgICAgYm9vbCBhbGxvd3NSZWRvKCkgY29u
c3QgeyByZXR1cm4gbV9kYXRhLmFsbG93ZWRFZGl0Q29tbWFuZHMgJiBXZWJDb3JlOjpIaXRUZXN0
UmVzdWx0OjpFZGl0Q29tbWFuZFJlZG87IH0KIAogICAgIGJvb2wgaXNEb3dubG9hZGFibGVNZWRp
YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5pc0Rvd25sb2FkYWJsZU1lZGlhOyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0SGl0VGVzdFJlc3Vs
dC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRIaXRUZXN0UmVzdWx0
LmgKaW5kZXggNzE4NTczYjkwMDRmNzBhNWYyZTFiYjQwZWViNTBiNzJlN2VmZjI1Zi4uMWY5MjMz
ZDRmNzFjYWJjZmEwYzc4ZWMwM2M5MDc0MjMyNDI3Yjc1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRIaXRUZXN0UmVzdWx0LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRIaXRUZXN0UmVzdWx0LmgKQEAgLTYzLDYg
KzYzLDI4IEBAIHR5cGVkZWYgZW51bQogICAgIFdFQktJVF9ISVRfVEVTVF9SRVNVTFRfQ09OVEVY
VF9TRUxFQ1RJT04gPSAxIDw8IDcKIH0gV2ViS2l0SGl0VGVzdFJlc3VsdENvbnRleHQ7CiAKKy8q
KgorICogV2ViS2l0SGl0VGVzdFJlc3VsdENvbW1hbmRzOgorICogQFdFQktJVF9ISVRfVEVTVF9S
RVNVTFRfQ0FOX0NVVDogd2hldGhlciBpdCBpcyBwb3NzaWJsZSB0byBjdXQgdGV4dC4KKyAqIEBX
RUJLSVRfSElUX1RFU1RfUkVTVUxUX0NBTl9DT1BZOiB3aGV0aGVyIGl0IGlzIHBvc3NpYmxlIHRv
IGNvcHkgdGV4dC4KKyAqIEBXRUJLSVRfSElUX1RFU1RfUkVTVUxUX0NBTl9QQVNURTogd2hldGhl
ciBpdCBpcyBwb3NzaWJsZSB0byBwYXN0ZSB0ZXh0LgorICogQFdFQktJVF9ISVRfVEVTVF9SRVNV
TFRfQ0FOX1VORE86IHdoZXRoZXIgaXQgaXMgcG9zc2libGUgdG8gdW5kby4KKyAqIEBXRUJLSVRf
SElUX1RFU1RfUkVTVUxUX0NBTl9SRURPOiB3aGV0aGVyIGl0IGlzIHBvc3NpYmxlIHRvIHJlZG8u
CisgKgorICogRW51bSB2YWx1ZXMgd2l0aCBmbGFncyByZXByZXNlbnRpbmcgY29tbWFuZHMgdGhh
dCBjYW4gYmUgcGVyZm9ybWVkIGF0CisgKiBoaXQgdGVzdCBsb2NhdGlvbnMuCisgKgorICogU2lu
Y2U6IDIuMjAKKyAqLwordHlwZWRlZiBlbnVtCit7CisgICAgV0VCS0lUX0hJVF9URVNUX1JFU1VM
VF9DQU5fQ1VUICAgID0gMSA8PCAwLAorICAgIFdFQktJVF9ISVRfVEVTVF9SRVNVTFRfQ0FOX0NP
UFkgICA9IDEgPDwgMSwKKyAgICBXRUJLSVRfSElUX1RFU1RfUkVTVUxUX0NBTl9QQVNURSAgPSAx
IDw8IDIsCisgICAgV0VCS0lUX0hJVF9URVNUX1JFU1VMVF9DQU5fVU5ETyAgID0gMSA8PCAzLAor
ICAgIFdFQktJVF9ISVRfVEVTVF9SRVNVTFRfQ0FOX1JFRE8gICA9IDEgPDwgNAorfSBXZWJLaXRI
aXRUZXN0UmVzdWx0Q29tbWFuZHM7CisKIHN0cnVjdCBfV2ViS2l0SGl0VGVzdFJlc3VsdCB7CiAg
ICAgR09iamVjdCBwYXJlbnQ7CiAKQEAgLTc5LDQzICsxMDEsNDYgQEAgc3RydWN0IF9XZWJLaXRI
aXRUZXN0UmVzdWx0Q2xhc3MgewogfTsKIAogV0VCS0lUX0FQSSBHVHlwZQotd2Via2l0X2hpdF90
ZXN0X3Jlc3VsdF9nZXRfdHlwZSAgICAgICAgICAgICAodm9pZCk7Cit3ZWJraXRfaGl0X3Rlc3Rf
cmVzdWx0X2dldF90eXBlICAgICAgICAgICAgICAgKHZvaWQpOwogCiBXRUJLSVRfQVBJIGd1aW50
Ci13ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2dldF9jb250ZXh0ICAgICAgICAgIChXZWJLaXRIaXRU
ZXN0UmVzdWx0ICpoaXRfdGVzdF9yZXN1bHQpOword2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9nZXRf
Y29udGV4dCAgICAgICAgICAgIChXZWJLaXRIaXRUZXN0UmVzdWx0ICpoaXRfdGVzdF9yZXN1bHQp
OwogCiBXRUJLSVRfQVBJIGdib29sZWFuCi13ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRf
aXNfbGluayAgICAgIChXZWJLaXRIaXRUZXN0UmVzdWx0ICpoaXRfdGVzdF9yZXN1bHQpOword2Vi
a2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2xpbmsgICAgICAgIChXZWJLaXRIaXRUZXN0
UmVzdWx0ICpoaXRfdGVzdF9yZXN1bHQpOwogCiBXRUJLSVRfQVBJIGdib29sZWFuCi13ZWJraXRf
aGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfaW1hZ2UgICAgIChXZWJLaXRIaXRUZXN0UmVzdWx0
ICpoaXRfdGVzdF9yZXN1bHQpOword2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2lt
YWdlICAgICAgIChXZWJLaXRIaXRUZXN0UmVzdWx0ICpoaXRfdGVzdF9yZXN1bHQpOwogCiBXRUJL
SVRfQVBJIGdib29sZWFuCi13ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfbWVkaWEg
ICAgIChXZWJLaXRIaXRUZXN0UmVzdWx0ICpoaXRfdGVzdF9yZXN1bHQpOword2Via2l0X2hpdF90
ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX21lZGlhICAgICAgIChXZWJLaXRIaXRUZXN0UmVzdWx0ICpo
aXRfdGVzdF9yZXN1bHQpOwogCiBXRUJLSVRfQVBJIGdib29sZWFuCi13ZWJraXRfaGl0X3Rlc3Rf
cmVzdWx0X2NvbnRleHRfaXNfZWRpdGFibGUgIChXZWJLaXRIaXRUZXN0UmVzdWx0ICpoaXRfdGVz
dF9yZXN1bHQpOword2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2VkaXRhYmxlICAg
IChXZWJLaXRIaXRUZXN0UmVzdWx0ICpoaXRfdGVzdF9yZXN1bHQpOwogCiBXRUJLSVRfQVBJIGdi
b29sZWFuCi13ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfc2VsZWN0aW9uIChXZWJL
aXRIaXRUZXN0UmVzdWx0ICpoaXRfdGVzdF9yZXN1bHQpOword2Via2l0X2hpdF90ZXN0X3Jlc3Vs
dF9jb250ZXh0X2lzX3NlbGVjdGlvbiAgIChXZWJLaXRIaXRUZXN0UmVzdWx0ICpoaXRfdGVzdF9y
ZXN1bHQpOwogCiBXRUJLSVRfQVBJIGNvbnN0IGdjaGFyICoKLXdlYmtpdF9oaXRfdGVzdF9yZXN1
bHRfZ2V0X2xpbmtfdXJpICAgICAgICAgKFdlYktpdEhpdFRlc3RSZXN1bHQgKmhpdF90ZXN0X3Jl
c3VsdCk7Cit3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2dldF9saW5rX3VyaSAgICAgICAgICAgKFdl
YktpdEhpdFRlc3RSZXN1bHQgKmhpdF90ZXN0X3Jlc3VsdCk7CiAKIFdFQktJVF9BUEkgY29uc3Qg
Z2NoYXIgKgotd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9nZXRfbGlua190aXRsZSAgICAgICAoV2Vi
S2l0SGl0VGVzdFJlc3VsdCAqaGl0X3Rlc3RfcmVzdWx0KTsKK3dlYmtpdF9oaXRfdGVzdF9yZXN1
bHRfZ2V0X2xpbmtfdGl0bGUgICAgICAgICAoV2ViS2l0SGl0VGVzdFJlc3VsdCAqaGl0X3Rlc3Rf
cmVzdWx0KTsKIAogV0VCS0lUX0FQSSBjb25zdCBnY2hhciAqCi13ZWJraXRfaGl0X3Rlc3RfcmVz
dWx0X2dldF9saW5rX2xhYmVsICAgICAgIChXZWJLaXRIaXRUZXN0UmVzdWx0ICpoaXRfdGVzdF9y
ZXN1bHQpOword2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9nZXRfbGlua19sYWJlbCAgICAgICAgIChX
ZWJLaXRIaXRUZXN0UmVzdWx0ICpoaXRfdGVzdF9yZXN1bHQpOwogCiBXRUJLSVRfQVBJIGNvbnN0
IGdjaGFyICoKLXdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfZ2V0X2ltYWdlX3VyaSAgICAgICAgKFdl
YktpdEhpdFRlc3RSZXN1bHQgKmhpdF90ZXN0X3Jlc3VsdCk7Cit3ZWJraXRfaGl0X3Rlc3RfcmVz
dWx0X2dldF9pbWFnZV91cmkgICAgICAgICAgKFdlYktpdEhpdFRlc3RSZXN1bHQgKmhpdF90ZXN0
X3Jlc3VsdCk7CiAKIFdFQktJVF9BUEkgY29uc3QgZ2NoYXIgKgotd2Via2l0X2hpdF90ZXN0X3Jl
c3VsdF9nZXRfbWVkaWFfdXJpICAgICAgICAoV2ViS2l0SGl0VGVzdFJlc3VsdCAqaGl0X3Rlc3Rf
cmVzdWx0KTsKK3dlYmtpdF9oaXRfdGVzdF9yZXN1bHRfZ2V0X21lZGlhX3VyaSAgICAgICAgICAo
V2ViS2l0SGl0VGVzdFJlc3VsdCAqaGl0X3Rlc3RfcmVzdWx0KTsKIAogV0VCS0lUX0FQSSBnYm9v
bGVhbgotd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX3Njcm9sbGJhciAoV2ViS2l0
SGl0VGVzdFJlc3VsdCAqaGl0X3Rlc3RfcmVzdWx0KTsKK3dlYmtpdF9oaXRfdGVzdF9yZXN1bHRf
Y29udGV4dF9pc19zY3JvbGxiYXIgICAoV2ViS2l0SGl0VGVzdFJlc3VsdCAqaGl0X3Rlc3RfcmVz
dWx0KTsKKworV0VCS0lUX0FQSSBXZWJLaXRIaXRUZXN0UmVzdWx0Q29tbWFuZHMKK3dlYmtpdF9o
aXRfdGVzdF9yZXN1bHRfZ2V0X2F2YWlsYWJsZV9jb21tYW5kcyAoV2ViS2l0SGl0VGVzdFJlc3Vs
dCAqaGl0X3Rlc3RfcmVzdWx0KTsKIAogR19FTkRfREVDTFMKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4
dCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1z
ZWN0aW9ucy50eHQKaW5kZXggYTEzYzMyZDJiOGViNGQ3YWRjNzAyN2QyMDYxNmFmZTQ2NmE1NDE3
Yi4uMzJlZjYwNzYxNzUyYWNlM2MwYjUxYTE4MzMwYTI4ZTA0YTFiOWFjOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rp
b25zLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0
Mmd0ay00LjAtc2VjdGlvbnMudHh0CkBAIC03OTAsNiArNzkwLDcgQEAgd2Via2l0X3Jlc3BvbnNl
X3BvbGljeV9kZWNpc2lvbl9nZXRfdHlwZQogPEZJTEU+V2ViS2l0SGl0VGVzdFJlc3VsdDwvRklM
RT4KIFdlYktpdEhpdFRlc3RSZXN1bHQKIFdlYktpdEhpdFRlc3RSZXN1bHRDb250ZXh0CitXZWJL
aXRIaXRUZXN0UmVzdWx0Q29tbWFuZHMKIHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfZ2V0X2NvbnRl
eHQKIHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19saW5rCiB3ZWJraXRfaGl0X3Rl
c3RfcmVzdWx0X2NvbnRleHRfaXNfaW1hZ2UKQEAgLTgwMiw2ICs4MDMsNyBAQCB3ZWJraXRfaGl0
X3Rlc3RfcmVzdWx0X2dldF9saW5rX2xhYmVsCiB3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2dldF9p
bWFnZV91cmkKIHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfZ2V0X21lZGlhX3VyaQogd2Via2l0X2hp
dF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX3Njcm9sbGJhcgord2Via2l0X2hpdF90ZXN0X3Jlc3Vs
dF9nZXRfYXZhaWxhYmxlX2NvbW1hbmRzCiAKIDxTVUJTRUNUSU9OIFN0YW5kYXJkPgogV2ViS2l0
SGl0VGVzdFJlc3VsdENsYXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvd3BlL1dlYktpdEhpdFRlc3RSZXN1bHQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS93cGUvV2ViS2l0SGl0VGVzdFJlc3VsdC5oCmluZGV4IDY3OWFhMDc2MGU0NTYzMmI2NzFhNzcw
MjUyMjc3Mzg5NDI0ZGNkMjYuLmQ1Y2VkMGY1ZWI5NmFhNjllNjZiOWQ3YTQwZDQ0NjZjZDc5OTNj
YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0SGl0
VGVzdFJlc3VsdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0
SGl0VGVzdFJlc3VsdC5oCkBAIC02Myw2ICs2MywyOCBAQCB0eXBlZGVmIGVudW0KICAgICBXRUJL
SVRfSElUX1RFU1RfUkVTVUxUX0NPTlRFWFRfU0VMRUNUSU9OID0gMSA8PCA3CiB9IFdlYktpdEhp
dFRlc3RSZXN1bHRDb250ZXh0OwogCisvKioKKyAqIFdlYktpdEhpdFRlc3RSZXN1bHRDb21tYW5k
czoKKyAqIEBXRUJLSVRfSElUX1RFU1RfUkVTVUxUX0NBTl9DVVQ6IHdoZXRoZXIgaXQgaXMgcG9z
c2libGUgdG8gY3V0IHRleHQuCisgKiBAV0VCS0lUX0hJVF9URVNUX1JFU1VMVF9DQU5fQ09QWTog
d2hldGhlciBpdCBpcyBwb3NzaWJsZSB0byBjb3B5IHRleHQuCisgKiBAV0VCS0lUX0hJVF9URVNU
X1JFU1VMVF9DQU5fUEFTVEU6IHdoZXRoZXIgaXQgaXMgcG9zc2libGUgdG8gcGFzdGUgdGV4dC4K
KyAqIEBXRUJLSVRfSElUX1RFU1RfUkVTVUxUX0NBTl9VTkRPOiB3aGV0aGVyIGl0IGlzIHBvc3Np
YmxlIHRvIHVuZG8uCisgKiBAV0VCS0lUX0hJVF9URVNUX1JFU1VMVF9DQU5fUkVETzogd2hldGhl
ciBpdCBpcyBwb3NzaWJsZSB0byByZWRvLgorICoKKyAqIEVudW0gdmFsdWVzIHdpdGggZmxhZ3Mg
cmVwcmVzZW50aW5nIGNvbW1hbmRzIHRoYXQgY2FuIGJlIHBlcmZvcm1lZCBhdAorICogaGl0IHRl
c3QgbG9jYXRpb25zLgorICoKKyAqIFNpbmNlOiAyLjIwCisgKi8KK3R5cGVkZWYgZW51bQorewor
ICAgIFdFQktJVF9ISVRfVEVTVF9SRVNVTFRfQ0FOX0NVVCAgICA9IDEgPDwgMCwKKyAgICBXRUJL
SVRfSElUX1RFU1RfUkVTVUxUX0NBTl9DT1BZICAgPSAxIDw8IDEsCisgICAgV0VCS0lUX0hJVF9U
RVNUX1JFU1VMVF9DQU5fUEFTVEUgID0gMSA8PCAyLAorICAgIFdFQktJVF9ISVRfVEVTVF9SRVNV
TFRfQ0FOX1VORE8gICA9IDEgPDwgMywKKyAgICBXRUJLSVRfSElUX1RFU1RfUkVTVUxUX0NBTl9S
RURPICAgPSAxIDw8IDQKK30gV2ViS2l0SGl0VGVzdFJlc3VsdENvbW1hbmRzOworCiBzdHJ1Y3Qg
X1dlYktpdEhpdFRlc3RSZXN1bHQgewogICAgIEdPYmplY3QgcGFyZW50OwogCkBAIC03OSw0MyAr
MTAxLDQ2IEBAIHN0cnVjdCBfV2ViS2l0SGl0VGVzdFJlc3VsdENsYXNzIHsKIH07CiAKIFdFQktJ
VF9BUEkgR1R5cGUKLXdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfZ2V0X3R5cGUgICAgICAgICAgICAg
KHZvaWQpOword2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9nZXRfdHlwZSAgICAgICAgICAgICAgICh2
b2lkKTsKIAogV0VCS0lUX0FQSSBndWludAotd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9nZXRfY29u
dGV4dCAgICAgICAgICAoV2ViS2l0SGl0VGVzdFJlc3VsdCAqaGl0X3Rlc3RfcmVzdWx0KTsKK3dl
YmtpdF9oaXRfdGVzdF9yZXN1bHRfZ2V0X2NvbnRleHQgICAgICAgICAgICAoV2ViS2l0SGl0VGVz
dFJlc3VsdCAqaGl0X3Rlc3RfcmVzdWx0KTsKIAogV0VCS0lUX0FQSSBnYm9vbGVhbgotd2Via2l0
X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2xpbmsgICAgICAoV2ViS2l0SGl0VGVzdFJlc3Vs
dCAqaGl0X3Rlc3RfcmVzdWx0KTsKK3dlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19s
aW5rICAgICAgICAoV2ViS2l0SGl0VGVzdFJlc3VsdCAqaGl0X3Rlc3RfcmVzdWx0KTsKIAogV0VC
S0lUX0FQSSBnYm9vbGVhbgotd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2ltYWdl
ICAgICAoV2ViS2l0SGl0VGVzdFJlc3VsdCAqaGl0X3Rlc3RfcmVzdWx0KTsKK3dlYmtpdF9oaXRf
dGVzdF9yZXN1bHRfY29udGV4dF9pc19pbWFnZSAgICAgICAoV2ViS2l0SGl0VGVzdFJlc3VsdCAq
aGl0X3Rlc3RfcmVzdWx0KTsKIAogV0VCS0lUX0FQSSBnYm9vbGVhbgotd2Via2l0X2hpdF90ZXN0
X3Jlc3VsdF9jb250ZXh0X2lzX21lZGlhICAgICAoV2ViS2l0SGl0VGVzdFJlc3VsdCAqaGl0X3Rl
c3RfcmVzdWx0KTsKK3dlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19tZWRpYSAgICAg
ICAoV2ViS2l0SGl0VGVzdFJlc3VsdCAqaGl0X3Rlc3RfcmVzdWx0KTsKIAogV0VCS0lUX0FQSSBn
Ym9vbGVhbgotd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2VkaXRhYmxlICAoV2Vi
S2l0SGl0VGVzdFJlc3VsdCAqaGl0X3Rlc3RfcmVzdWx0KTsKK3dlYmtpdF9oaXRfdGVzdF9yZXN1
bHRfY29udGV4dF9pc19lZGl0YWJsZSAgICAoV2ViS2l0SGl0VGVzdFJlc3VsdCAqaGl0X3Rlc3Rf
cmVzdWx0KTsKIAogV0VCS0lUX0FQSSBnYm9vbGVhbgotd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9j
b250ZXh0X2lzX3NlbGVjdGlvbiAoV2ViS2l0SGl0VGVzdFJlc3VsdCAqaGl0X3Rlc3RfcmVzdWx0
KTsKK3dlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19zZWxlY3Rpb24gICAoV2ViS2l0
SGl0VGVzdFJlc3VsdCAqaGl0X3Rlc3RfcmVzdWx0KTsKIAogV0VCS0lUX0FQSSBjb25zdCBnY2hh
ciAqCi13ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2dldF9saW5rX3VyaSAgICAgICAgIChXZWJLaXRI
aXRUZXN0UmVzdWx0ICpoaXRfdGVzdF9yZXN1bHQpOword2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9n
ZXRfbGlua191cmkgICAgICAgICAgIChXZWJLaXRIaXRUZXN0UmVzdWx0ICpoaXRfdGVzdF9yZXN1
bHQpOwogCiBXRUJLSVRfQVBJIGNvbnN0IGdjaGFyICoKLXdlYmtpdF9oaXRfdGVzdF9yZXN1bHRf
Z2V0X2xpbmtfdGl0bGUgICAgICAgKFdlYktpdEhpdFRlc3RSZXN1bHQgKmhpdF90ZXN0X3Jlc3Vs
dCk7Cit3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2dldF9saW5rX3RpdGxlICAgICAgICAgKFdlYktp
dEhpdFRlc3RSZXN1bHQgKmhpdF90ZXN0X3Jlc3VsdCk7CiAKIFdFQktJVF9BUEkgY29uc3QgZ2No
YXIgKgotd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9nZXRfbGlua19sYWJlbCAgICAgICAoV2ViS2l0
SGl0VGVzdFJlc3VsdCAqaGl0X3Rlc3RfcmVzdWx0KTsKK3dlYmtpdF9oaXRfdGVzdF9yZXN1bHRf
Z2V0X2xpbmtfbGFiZWwgICAgICAgICAoV2ViS2l0SGl0VGVzdFJlc3VsdCAqaGl0X3Rlc3RfcmVz
dWx0KTsKIAogV0VCS0lUX0FQSSBjb25zdCBnY2hhciAqCi13ZWJraXRfaGl0X3Rlc3RfcmVzdWx0
X2dldF9pbWFnZV91cmkgICAgICAgIChXZWJLaXRIaXRUZXN0UmVzdWx0ICpoaXRfdGVzdF9yZXN1
bHQpOword2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9nZXRfaW1hZ2VfdXJpICAgICAgICAgIChXZWJL
aXRIaXRUZXN0UmVzdWx0ICpoaXRfdGVzdF9yZXN1bHQpOwogCiBXRUJLSVRfQVBJIGNvbnN0IGdj
aGFyICoKLXdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfZ2V0X21lZGlhX3VyaSAgICAgICAgKFdlYktp
dEhpdFRlc3RSZXN1bHQgKmhpdF90ZXN0X3Jlc3VsdCk7Cit3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0
X2dldF9tZWRpYV91cmkgICAgICAgICAgKFdlYktpdEhpdFRlc3RSZXN1bHQgKmhpdF90ZXN0X3Jl
c3VsdCk7CiAKIFdFQktJVF9BUEkgZ2Jvb2xlYW4KLXdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29u
dGV4dF9pc19zY3JvbGxiYXIgKFdlYktpdEhpdFRlc3RSZXN1bHQgKmhpdF90ZXN0X3Jlc3VsdCk7
Cit3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfc2Nyb2xsYmFyICAgKFdlYktpdEhp
dFRlc3RSZXN1bHQgKmhpdF90ZXN0X3Jlc3VsdCk7CisKK1dFQktJVF9BUEkgV2ViS2l0SGl0VGVz
dFJlc3VsdENvbW1hbmRzCit3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2dldF9hdmFpbGFibGVfY29t
bWFuZHMgKFdlYktpdEhpdFRlc3RSZXN1bHQgKmhpdF90ZXN0X3Jlc3VsdCk7CiAKIEdfRU5EX0RF
Q0xTCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9X
ZWJQYWdlTWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBh
Z2VNYWMubW0KaW5kZXggM2Y4ZDVhZmYzMmViN2Q1ODc1Zjc0MzRkNTE5NjBlMjU3MDdkYTM5NS4u
NzY2ODI0MzU4YmQzYTViZjc0Mjk0ZGNlNDJlZGEzYWNiNWM5YmJhMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KQEAgLTEwNzUs
NyArMTA3NSw3IEBAIHZvaWQgV2ViUGFnZTo6cGVyZm9ybUltbWVkaWF0ZUFjdGlvbkhpdFRlc3RB
dExvY2F0aW9uKFdlYkNvcmU6OkZsb2F0UG9pbnQgbG9jYXRpCiAgICAgICAgICAgICAgICAgaW1t
ZWRpYXRlQWN0aW9uUmVzdWx0Lmxvb2t1cFRleHQgPSBzZWxlY3RlZFRleHQ7CiAgICAgICAgICAg
ICAgICAgaW1tZWRpYXRlQWN0aW9uUmVzdWx0LmlzVGV4dE5vZGUgPSB0cnVlOwogICAgICAgICAg
ICAgICAgIGltbWVkaWF0ZUFjdGlvblJlc3VsdC5pc1NlbGVjdGVkID0gdHJ1ZTsKLSAgICAgICAg
ICAgICAgICBpbW1lZGlhdGVBY3Rpb25SZXN1bHQuYWxsb3dzQ29weSA9IHRydWU7CisgICAgICAg
ICAgICAgICAgaW1tZWRpYXRlQWN0aW9uUmVzdWx0LmFsbG93ZWRFZGl0Q29tbWFuZHMgfD0gV2Vi
Q29yZTo6SGl0VGVzdFJlc3VsdDo6RWRpdENvbW1hbmRDb3B5OwogCiAgICAgICAgICAgICAgICAg
aW1tZWRpYXRlQWN0aW9uUmVzdWx0LmRpY3Rpb25hcnlQb3B1cEluZm8gPSBkaWN0aW9uYXJ5UG9w
dXBJbmZvRm9yU2VsZWN0aW9uSW5QREZQbHVnaW4oc2VsZWN0aW9uLCAqcGRmUHVnaW4sICZvcHRp
b25zLCBUZXh0SW5kaWNhdG9yUHJlc2VudGF0aW9uVHJhbnNpdGlvbjo6RmFkZUluKTsKICAgICAg
ICAgICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCA4NzRiYzA1NTc0ODZkMmEwYjZkM2ViODMyZjQwZmQzMzJhYmVkNjFkLi45ZWY2ODhhZDY5
MWVhMDJiOTUyMDE4ZGJkNDllOTU3ZjhiM2VkOWIwIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VM
b2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTctMDgtMjUgIE1p
Y2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtd
IEV4cG9zZSBlZGl0aW5nIGNvbW1hbmQgYXZhaWxhYmlsaXR5IGluIFdlYktpdEhpdFRlc3RSZXN1
bHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2ODIx
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RDb250ZXh0TWVudS5jcHA6CisgICAgICAg
IChwcmVwYXJlQ29udGV4dE1lbnVUZXN0Vmlldyk6CisgICAgICAgIChjb3B5Q3VycmVudFNlbGVj
dGlvblRvQ2xpcGJvYXJkKToKKyAgICAgICAgKHNlbGVjdFRleHRJbkVkaXRhYmxlKToKKyAgICAg
ICAgKGV4ZWN1dGVVbmRvQ29tbWFuZCk6CisgICAgICAgICh0ZXN0Q29udGV4dE1lbnVEZWZhdWx0
TWVudSk6CisKIDIwMTctMDgtMjQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAog
ICAgICAgICBbRGlyZWN0b3J5IFVwbG9hZF0gQWRkIGJhc2ljIHN1cHBvcnQgZm9yIGlucHV0Lndl
YmtpdGRpcmVjdG9yeQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQyR3RrL1Rlc3RDb250ZXh0TWVudS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDJHdGsvVGVzdENvbnRleHRNZW51LmNwcAppbmRleCA3YmQ3MDk3MTlhNzBmYWYxZWZmMmM5
YzE3YjAyY2MyNGZjZGVhYWExLi40ZDk4NTdkOTQ0NTYyNDAyYzZjMjg4MzAwZGQwMDgxZDI1MWNi
N2ZlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVz
dENvbnRleHRNZW51LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJH
dGsvVGVzdENvbnRleHRNZW51LmNwcApAQCAtMTksNiArMTksNyBAQAogCiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiV2ViVmlld1Rlc3QuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9n
bGliL0dSZWZQdHIuaD4KIApAQCAtMjk2LDE3ICsyOTcsMTYgQEAgcHVibGljOgogICAgICAgICBW
aWRlbywKICAgICAgICAgQXVkaW8sCiAgICAgICAgIEVkaXRhYmxlLAotICAgICAgICBTZWxlY3Rp
b24KKyAgICAgICAgU2VsZWN0aW9uLAorICAgICAgICBFZGl0YWJsZVdpdGhTZWxlY3Rpb24sCisg
ICAgICAgIEVkaXRhYmxlQWxsb3dzVW5kbywKKyAgICAgICAgRWRpdGFibGVBbGxvd3NSZWRvCiAg
ICAgfTsKIAotICAgIENvbnRleHRNZW51RGVmYXVsdFRlc3QoKQotICAgICAgICA6IG1fZXhwZWN0
ZWRNZW51VHlwZShOYXZpZ2F0aW9uKQotICAgIHsKLSAgICB9Ci0KICAgICBib29sIGNvbnRleHRN
ZW51KFdlYktpdENvbnRleHRNZW51KiBjb250ZXh0TWVudSwgR2RrRXZlbnQqIGV2ZW50LCBXZWJL
aXRIaXRUZXN0UmVzdWx0KiBoaXRUZXN0UmVzdWx0KQogICAgIHsKICAgICAgICAgR0xpc3QqIGl0
ZXIgPSB3ZWJraXRfY29udGV4dF9tZW51X2dldF9pdGVtcyhjb250ZXh0TWVudSk7CisgICAgICAg
IFdlYktpdEhpdFRlc3RSZXN1bHRDb21tYW5kcyBjb21tYW5kcyA9IHdlYmtpdF9oaXRfdGVzdF9y
ZXN1bHRfZ2V0X2F2YWlsYWJsZV9jb21tYW5kcyhoaXRUZXN0UmVzdWx0KTsKIAogICAgICAgICBz
d2l0Y2ggKG1fZXhwZWN0ZWRNZW51VHlwZSkgewogICAgICAgICBjYXNlIE5hdmlnYXRpb246CkBA
IC0zMTUsNiArMzE1LDExIEBAIHB1YmxpYzoKICAgICAgICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRf
aGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfbWVkaWEoaGl0VGVzdFJlc3VsdCkpOwogICAgICAg
ICAgICAgZ19hc3NlcnQoIXdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19lZGl0YWJs
ZShoaXRUZXN0UmVzdWx0KSk7CiAgICAgICAgICAgICBnX2Fzc2VydCghd2Via2l0X2hpdF90ZXN0
X3Jlc3VsdF9jb250ZXh0X2lzX3NlbGVjdGlvbihoaXRUZXN0UmVzdWx0KSk7CisgICAgICAgICAg
ICBnX2Fzc2VydCghKGNvbW1hbmRzICYgV0VCS0lUX0hJVF9URVNUX1JFU1VMVF9DQU5fQ1VUKSk7
CisgICAgICAgICAgICBnX2Fzc2VydCghKGNvbW1hbmRzICYgV0VCS0lUX0hJVF9URVNUX1JFU1VM
VF9DQU5fQ09QWSkpOworICAgICAgICAgICAgZ19hc3NlcnQoIShjb21tYW5kcyAmIFdFQktJVF9I
SVRfVEVTVF9SRVNVTFRfQ0FOX1BBU1RFKSk7CisgICAgICAgICAgICBnX2Fzc2VydCghKGNvbW1h
bmRzICYgV0VCS0lUX0hJVF9URVNUX1JFU1VMVF9DQU5fVU5ETykpOworICAgICAgICAgICAgZ19h
c3NlcnQoIShjb21tYW5kcyAmIFdFQktJVF9ISVRfVEVTVF9SRVNVTFRfQ0FOX1JFRE8pKTsKICAg
ICAgICAgICAgIGl0ZXIgPSBjaGVja0N1cnJlbnRJdGVtSXNTdG9ja0FjdGlvbkFuZEdldE5leHQo
aXRlciwgV0VCS0lUX0NPTlRFWFRfTUVOVV9BQ1RJT05fR09fQkFDSywgVmlzaWJsZSk7CiAgICAg
ICAgICAgICBpdGVyID0gY2hlY2tDdXJyZW50SXRlbUlzU3RvY2tBY3Rpb25BbmRHZXROZXh0KGl0
ZXIsIFdFQktJVF9DT05URVhUX01FTlVfQUNUSU9OX0dPX0ZPUldBUkQsIFZpc2libGUpOwogICAg
ICAgICAgICAgaXRlciA9IGNoZWNrQ3VycmVudEl0ZW1Jc1N0b2NrQWN0aW9uQW5kR2V0TmV4dChp
dGVyLCBXRUJLSVRfQ09OVEVYVF9NRU5VX0FDVElPTl9TVE9QLCBWaXNpYmxlKTsKQEAgLTMyNiw2
ICszMzEsMTEgQEAgcHVibGljOgogICAgICAgICAgICAgZ19hc3NlcnQoIXdlYmtpdF9oaXRfdGVz
dF9yZXN1bHRfY29udGV4dF9pc19tZWRpYShoaXRUZXN0UmVzdWx0KSk7CiAgICAgICAgICAgICBn
X2Fzc2VydCghd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2VkaXRhYmxlKGhpdFRl
c3RSZXN1bHQpKTsKICAgICAgICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0
X2NvbnRleHRfaXNfc2VsZWN0aW9uKGhpdFRlc3RSZXN1bHQpKTsKKyAgICAgICAgICAgIGdfYXNz
ZXJ0KCEoY29tbWFuZHMgJiBXRUJLSVRfSElUX1RFU1RfUkVTVUxUX0NBTl9DVVQpKTsKKyAgICAg
ICAgICAgIGdfYXNzZXJ0KCEoY29tbWFuZHMgJiBXRUJLSVRfSElUX1RFU1RfUkVTVUxUX0NBTl9D
T1BZKSk7CisgICAgICAgICAgICBnX2Fzc2VydCghKGNvbW1hbmRzICYgV0VCS0lUX0hJVF9URVNU
X1JFU1VMVF9DQU5fUEFTVEUpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0KCEoY29tbWFuZHMgJiBX
RUJLSVRfSElUX1RFU1RfUkVTVUxUX0NBTl9VTkRPKSk7CisgICAgICAgICAgICBnX2Fzc2VydCgh
KGNvbW1hbmRzICYgV0VCS0lUX0hJVF9URVNUX1JFU1VMVF9DQU5fUkVETykpOwogICAgICAgICAg
ICAgaXRlciA9IGNoZWNrQ3VycmVudEl0ZW1Jc1N0b2NrQWN0aW9uQW5kR2V0TmV4dChpdGVyLCBX
RUJLSVRfQ09OVEVYVF9NRU5VX0FDVElPTl9PUEVOX0xJTkssIFZpc2libGUgfCBFbmFibGVkKTsK
ICAgICAgICAgICAgIGl0ZXIgPSBjaGVja0N1cnJlbnRJdGVtSXNTdG9ja0FjdGlvbkFuZEdldE5l
eHQoaXRlciwgV0VCS0lUX0NPTlRFWFRfTUVOVV9BQ1RJT05fT1BFTl9MSU5LX0lOX05FV19XSU5E
T1csIFZpc2libGUgfCBFbmFibGVkKTsKICAgICAgICAgICAgIGl0ZXIgPSBjaGVja0N1cnJlbnRJ
dGVtSXNTdG9ja0FjdGlvbkFuZEdldE5leHQoaXRlciwgV0VCS0lUX0NPTlRFWFRfTUVOVV9BQ1RJ
T05fRE9XTkxPQURfTElOS19UT19ESVNLLCBWaXNpYmxlIHwgRW5hYmxlZCk7CkBAIC0zMzcsNiAr
MzQ3LDExIEBAIHB1YmxpYzoKICAgICAgICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3Rf
cmVzdWx0X2NvbnRleHRfaXNfbWVkaWEoaGl0VGVzdFJlc3VsdCkpOwogICAgICAgICAgICAgZ19h
c3NlcnQoIXdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19lZGl0YWJsZShoaXRUZXN0
UmVzdWx0KSk7CiAgICAgICAgICAgICBnX2Fzc2VydCghd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9j
b250ZXh0X2lzX3NlbGVjdGlvbihoaXRUZXN0UmVzdWx0KSk7CisgICAgICAgICAgICBnX2Fzc2Vy
dCghKGNvbW1hbmRzICYgV0VCS0lUX0hJVF9URVNUX1JFU1VMVF9DQU5fQ1VUKSk7CisgICAgICAg
ICAgICBnX2Fzc2VydCghKGNvbW1hbmRzICYgV0VCS0lUX0hJVF9URVNUX1JFU1VMVF9DQU5fQ09Q
WSkpOworICAgICAgICAgICAgZ19hc3NlcnQoIShjb21tYW5kcyAmIFdFQktJVF9ISVRfVEVTVF9S
RVNVTFRfQ0FOX1BBU1RFKSk7CisgICAgICAgICAgICBnX2Fzc2VydCghKGNvbW1hbmRzICYgV0VC
S0lUX0hJVF9URVNUX1JFU1VMVF9DQU5fVU5ETykpOworICAgICAgICAgICAgZ19hc3NlcnQoIShj
b21tYW5kcyAmIFdFQktJVF9ISVRfVEVTVF9SRVNVTFRfQ0FOX1JFRE8pKTsKICAgICAgICAgICAg
IGl0ZXIgPSBjaGVja0N1cnJlbnRJdGVtSXNTdG9ja0FjdGlvbkFuZEdldE5leHQoaXRlciwgV0VC
S0lUX0NPTlRFWFRfTUVOVV9BQ1RJT05fT1BFTl9JTUFHRV9JTl9ORVdfV0lORE9XLCBWaXNpYmxl
IHwgRW5hYmxlZCk7CiAgICAgICAgICAgICBpdGVyID0gY2hlY2tDdXJyZW50SXRlbUlzU3RvY2tB
Y3Rpb25BbmRHZXROZXh0KGl0ZXIsIFdFQktJVF9DT05URVhUX01FTlVfQUNUSU9OX0RPV05MT0FE
X0lNQUdFX1RPX0RJU0ssIFZpc2libGUgfCBFbmFibGVkKTsKICAgICAgICAgICAgIGl0ZXIgPSBj
aGVja0N1cnJlbnRJdGVtSXNTdG9ja0FjdGlvbkFuZEdldE5leHQoaXRlciwgV0VCS0lUX0NPTlRF
WFRfTUVOVV9BQ1RJT05fQ09QWV9JTUFHRV9UT19DTElQQk9BUkQsIFZpc2libGUgfCBFbmFibGVk
KTsKQEAgLTM0OCw2ICszNjMsMTEgQEAgcHVibGljOgogICAgICAgICAgICAgZ19hc3NlcnQoIXdl
YmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19tZWRpYShoaXRUZXN0UmVzdWx0KSk7CiAg
ICAgICAgICAgICBnX2Fzc2VydCghd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2Vk
aXRhYmxlKGhpdFRlc3RSZXN1bHQpKTsKICAgICAgICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRfaGl0
X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfc2VsZWN0aW9uKGhpdFRlc3RSZXN1bHQpKTsKKyAgICAg
ICAgICAgIGdfYXNzZXJ0KCEoY29tbWFuZHMgJiBXRUJLSVRfSElUX1RFU1RfUkVTVUxUX0NBTl9D
VVQpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0KCEoY29tbWFuZHMgJiBXRUJLSVRfSElUX1RFU1Rf
UkVTVUxUX0NBTl9DT1BZKSk7CisgICAgICAgICAgICBnX2Fzc2VydCghKGNvbW1hbmRzICYgV0VC
S0lUX0hJVF9URVNUX1JFU1VMVF9DQU5fUEFTVEUpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0KCEo
Y29tbWFuZHMgJiBXRUJLSVRfSElUX1RFU1RfUkVTVUxUX0NBTl9VTkRPKSk7CisgICAgICAgICAg
ICBnX2Fzc2VydCghKGNvbW1hbmRzICYgV0VCS0lUX0hJVF9URVNUX1JFU1VMVF9DQU5fUkVETykp
OwogICAgICAgICAgICAgaXRlciA9IGNoZWNrQ3VycmVudEl0ZW1Jc1N0b2NrQWN0aW9uQW5kR2V0
TmV4dChpdGVyLCBXRUJLSVRfQ09OVEVYVF9NRU5VX0FDVElPTl9PUEVOX0xJTkssIFZpc2libGUg
fCBFbmFibGVkKTsKICAgICAgICAgICAgIGl0ZXIgPSBjaGVja0N1cnJlbnRJdGVtSXNTdG9ja0Fj
dGlvbkFuZEdldE5leHQoaXRlciwgV0VCS0lUX0NPTlRFWFRfTUVOVV9BQ1RJT05fT1BFTl9MSU5L
X0lOX05FV19XSU5ET1csIFZpc2libGUgfCBFbmFibGVkKTsKICAgICAgICAgICAgIGl0ZXIgPSBj
aGVja0N1cnJlbnRJdGVtSXNTdG9ja0FjdGlvbkFuZEdldE5leHQoaXRlciwgV0VCS0lUX0NPTlRF
WFRfTUVOVV9BQ1RJT05fRE9XTkxPQURfTElOS19UT19ESVNLLCBWaXNpYmxlIHwgRW5hYmxlZCk7
CkBAIC0zNjQsNiArMzg0LDExIEBAIHB1YmxpYzoKICAgICAgICAgICAgIGdfYXNzZXJ0KHdlYmtp
dF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19tZWRpYShoaXRUZXN0UmVzdWx0KSk7CiAgICAg
ICAgICAgICBnX2Fzc2VydCghd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2VkaXRh
YmxlKGhpdFRlc3RSZXN1bHQpKTsKICAgICAgICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRfaGl0X3Rl
c3RfcmVzdWx0X2NvbnRleHRfaXNfc2VsZWN0aW9uKGhpdFRlc3RSZXN1bHQpKTsKKyAgICAgICAg
ICAgIGdfYXNzZXJ0KCEoY29tbWFuZHMgJiBXRUJLSVRfSElUX1RFU1RfUkVTVUxUX0NBTl9DVVQp
KTsKKyAgICAgICAgICAgIGdfYXNzZXJ0KCEoY29tbWFuZHMgJiBXRUJLSVRfSElUX1RFU1RfUkVT
VUxUX0NBTl9DT1BZKSk7CisgICAgICAgICAgICBnX2Fzc2VydCghKGNvbW1hbmRzICYgV0VCS0lU
X0hJVF9URVNUX1JFU1VMVF9DQU5fUEFTVEUpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0KCEoY29t
bWFuZHMgJiBXRUJLSVRfSElUX1RFU1RfUkVTVUxUX0NBTl9VTkRPKSk7CisgICAgICAgICAgICBn
X2Fzc2VydCghKGNvbW1hbmRzICYgV0VCS0lUX0hJVF9URVNUX1JFU1VMVF9DQU5fUkVETykpOwog
ICAgICAgICAgICAgaXRlciA9IGNoZWNrQ3VycmVudEl0ZW1Jc1N0b2NrQWN0aW9uQW5kR2V0TmV4
dChpdGVyLCBXRUJLSVRfQ09OVEVYVF9NRU5VX0FDVElPTl9NRURJQV9QTEFZLCBWaXNpYmxlIHwg
RW5hYmxlZCk7CiAgICAgICAgICAgICBpdGVyID0gY2hlY2tDdXJyZW50SXRlbUlzU3RvY2tBY3Rp
b25BbmRHZXROZXh0KGl0ZXIsIFdFQktJVF9DT05URVhUX01FTlVfQUNUSU9OX01FRElBX01VVEUs
IFZpc2libGUpOwogICAgICAgICAgICAgaXRlciA9IGNoZWNrQ3VycmVudEl0ZW1Jc1N0b2NrQWN0
aW9uQW5kR2V0TmV4dChpdGVyLCBXRUJLSVRfQ09OVEVYVF9NRU5VX0FDVElPTl9UT0dHTEVfTUVE
SUFfQ09OVFJPTFMsIFZpc2libGUgfCBFbmFibGVkIHwgQ2hlY2tlZCk7CkBAIC0zODAsNiArNDA1
LDExIEBAIHB1YmxpYzoKICAgICAgICAgICAgIGdfYXNzZXJ0KHdlYmtpdF9oaXRfdGVzdF9yZXN1
bHRfY29udGV4dF9pc19tZWRpYShoaXRUZXN0UmVzdWx0KSk7CiAgICAgICAgICAgICBnX2Fzc2Vy
dCghd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2VkaXRhYmxlKGhpdFRlc3RSZXN1
bHQpKTsKICAgICAgICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRl
eHRfaXNfc2VsZWN0aW9uKGhpdFRlc3RSZXN1bHQpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0KCEo
Y29tbWFuZHMgJiBXRUJLSVRfSElUX1RFU1RfUkVTVUxUX0NBTl9DVVQpKTsKKyAgICAgICAgICAg
IGdfYXNzZXJ0KCEoY29tbWFuZHMgJiBXRUJLSVRfSElUX1RFU1RfUkVTVUxUX0NBTl9DT1BZKSk7
CisgICAgICAgICAgICBnX2Fzc2VydCghKGNvbW1hbmRzICYgV0VCS0lUX0hJVF9URVNUX1JFU1VM
VF9DQU5fUEFTVEUpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0KCEoY29tbWFuZHMgJiBXRUJLSVRf
SElUX1RFU1RfUkVTVUxUX0NBTl9VTkRPKSk7CisgICAgICAgICAgICBnX2Fzc2VydCghKGNvbW1h
bmRzICYgV0VCS0lUX0hJVF9URVNUX1JFU1VMVF9DQU5fUkVETykpOwogICAgICAgICAgICAgaXRl
ciA9IGNoZWNrQ3VycmVudEl0ZW1Jc1N0b2NrQWN0aW9uQW5kR2V0TmV4dChpdGVyLCBXRUJLSVRf
Q09OVEVYVF9NRU5VX0FDVElPTl9NRURJQV9QTEFZLCBWaXNpYmxlIHwgRW5hYmxlZCk7CiAgICAg
ICAgICAgICBpdGVyID0gY2hlY2tDdXJyZW50SXRlbUlzU3RvY2tBY3Rpb25BbmRHZXROZXh0KGl0
ZXIsIFdFQktJVF9DT05URVhUX01FTlVfQUNUSU9OX01FRElBX01VVEUsIFZpc2libGUpOwogICAg
ICAgICAgICAgaXRlciA9IGNoZWNrQ3VycmVudEl0ZW1Jc1N0b2NrQWN0aW9uQW5kR2V0TmV4dChp
dGVyLCBXRUJLSVRfQ09OVEVYVF9NRU5VX0FDVElPTl9UT0dHTEVfTUVESUFfQ09OVFJPTFMsIFZp
c2libGUgfCBFbmFibGVkIHwgQ2hlY2tlZCk7CkBAIC0zOTYsNiArNDI2LDExIEBAIHB1YmxpYzoK
ICAgICAgICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNf
bWVkaWEoaGl0VGVzdFJlc3VsdCkpOwogICAgICAgICAgICAgZ19hc3NlcnQod2Via2l0X2hpdF90
ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2VkaXRhYmxlKGhpdFRlc3RSZXN1bHQpKTsKICAgICAgICAg
ICAgIGdfYXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfc2VsZWN0aW9u
KGhpdFRlc3RSZXN1bHQpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0KCEoY29tbWFuZHMgJiBXRUJL
SVRfSElUX1RFU1RfUkVTVUxUX0NBTl9DVVQpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0KCEoY29t
bWFuZHMgJiBXRUJLSVRfSElUX1RFU1RfUkVTVUxUX0NBTl9DT1BZKSk7CisgICAgICAgICAgICBn
X2Fzc2VydChjb21tYW5kcyAmIFdFQktJVF9ISVRfVEVTVF9SRVNVTFRfQ0FOX1BBU1RFKTsKKyAg
ICAgICAgICAgIGdfYXNzZXJ0KCEoY29tbWFuZHMgJiBXRUJLSVRfSElUX1RFU1RfUkVTVUxUX0NB
Tl9VTkRPKSk7CisgICAgICAgICAgICBnX2Fzc2VydCghKGNvbW1hbmRzICYgV0VCS0lUX0hJVF9U
RVNUX1JFU1VMVF9DQU5fUkVETykpOwogICAgICAgICAgICAgaXRlciA9IGNoZWNrQ3VycmVudEl0
ZW1Jc1N0b2NrQWN0aW9uQW5kR2V0TmV4dChpdGVyLCBXRUJLSVRfQ09OVEVYVF9NRU5VX0FDVElP
Tl9DVVQsIFZpc2libGUpOwogICAgICAgICAgICAgaXRlciA9IGNoZWNrQ3VycmVudEl0ZW1Jc1N0
b2NrQWN0aW9uQW5kR2V0TmV4dChpdGVyLCBXRUJLSVRfQ09OVEVYVF9NRU5VX0FDVElPTl9DT1BZ
LCBWaXNpYmxlKTsKICAgICAgICAgICAgIGl0ZXIgPSBjaGVja0N1cnJlbnRJdGVtSXNTdG9ja0Fj
dGlvbkFuZEdldE5leHQoaXRlciwgV0VCS0lUX0NPTlRFWFRfTUVOVV9BQ1RJT05fUEFTVEUsIFZp
c2libGUgfCBFbmFibGVkKTsKQEAgLTQxMSw4ICs0NDYsNzMgQEAgcHVibGljOgogICAgICAgICAg
ICAgZ19hc3NlcnQoIXdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19tZWRpYShoaXRU
ZXN0UmVzdWx0KSk7CiAgICAgICAgICAgICBnX2Fzc2VydCghd2Via2l0X2hpdF90ZXN0X3Jlc3Vs
dF9jb250ZXh0X2lzX2VkaXRhYmxlKGhpdFRlc3RSZXN1bHQpKTsKICAgICAgICAgICAgIGdfYXNz
ZXJ0KHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19zZWxlY3Rpb24oaGl0VGVzdFJl
c3VsdCkpOworICAgICAgICAgICAgZ19hc3NlcnQoIShjb21tYW5kcyAmIFdFQktJVF9ISVRfVEVT
VF9SRVNVTFRfQ0FOX0NVVCkpOworICAgICAgICAgICAgZ19hc3NlcnQoY29tbWFuZHMgJiBXRUJL
SVRfSElUX1RFU1RfUkVTVUxUX0NBTl9DT1BZKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0KCEoY29t
bWFuZHMgJiBXRUJLSVRfSElUX1RFU1RfUkVTVUxUX0NBTl9QQVNURSkpOworICAgICAgICAgICAg
Z19hc3NlcnQoIShjb21tYW5kcyAmIFdFQktJVF9ISVRfVEVTVF9SRVNVTFRfQ0FOX1VORE8pKTsK
KyAgICAgICAgICAgIGdfYXNzZXJ0KCEoY29tbWFuZHMgJiBXRUJLSVRfSElUX1RFU1RfUkVTVUxU
X0NBTl9SRURPKSk7CiAgICAgICAgICAgICBpdGVyID0gY2hlY2tDdXJyZW50SXRlbUlzU3RvY2tB
Y3Rpb25BbmRHZXROZXh0KGl0ZXIsIFdFQktJVF9DT05URVhUX01FTlVfQUNUSU9OX0NPUFksIFZp
c2libGUgfCBFbmFibGVkKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVkaXRh
YmxlV2l0aFNlbGVjdGlvbjoKKyAgICAgICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3Rf
cmVzdWx0X2NvbnRleHRfaXNfbGluayhoaXRUZXN0UmVzdWx0KSk7CisgICAgICAgICAgICBnX2Fz
c2VydCghd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2ltYWdlKGhpdFRlc3RSZXN1
bHQpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRl
eHRfaXNfbWVkaWEoaGl0VGVzdFJlc3VsdCkpOworICAgICAgICAgICAgZ19hc3NlcnQod2Via2l0
X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2VkaXRhYmxlKGhpdFRlc3RSZXN1bHQpKTsKKyAg
ICAgICAgICAgIGdfYXNzZXJ0KHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19zZWxl
Y3Rpb24oaGl0VGVzdFJlc3VsdCkpOworICAgICAgICAgICAgZ19hc3NlcnQoY29tbWFuZHMgJiBX
RUJLSVRfSElUX1RFU1RfUkVTVUxUX0NBTl9DVVQpOworICAgICAgICAgICAgZ19hc3NlcnQoY29t
bWFuZHMgJiBXRUJLSVRfSElUX1RFU1RfUkVTVUxUX0NBTl9DT1BZKTsKKyAgICAgICAgICAgIGdf
YXNzZXJ0KGNvbW1hbmRzICYgV0VCS0lUX0hJVF9URVNUX1JFU1VMVF9DQU5fUEFTVEUpOworICAg
ICAgICAgICAgZ19hc3NlcnQoIShjb21tYW5kcyAmIFdFQktJVF9ISVRfVEVTVF9SRVNVTFRfQ0FO
X1VORE8pKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0KCEoY29tbWFuZHMgJiBXRUJLSVRfSElUX1RF
U1RfUkVTVUxUX0NBTl9SRURPKSk7CisgICAgICAgICAgICBpdGVyID0gY2hlY2tDdXJyZW50SXRl
bUlzU3RvY2tBY3Rpb25BbmRHZXROZXh0KGl0ZXIsIFdFQktJVF9DT05URVhUX01FTlVfQUNUSU9O
X0NVVCwgVmlzaWJsZSB8IEVuYWJsZWQpOworICAgICAgICAgICAgaXRlciA9IGNoZWNrQ3VycmVu
dEl0ZW1Jc1N0b2NrQWN0aW9uQW5kR2V0TmV4dChpdGVyLCBXRUJLSVRfQ09OVEVYVF9NRU5VX0FD
VElPTl9DT1BZLCBWaXNpYmxlIHwgRW5hYmxlZCk7CisgICAgICAgICAgICBpdGVyID0gY2hlY2tD
dXJyZW50SXRlbUlzU3RvY2tBY3Rpb25BbmRHZXROZXh0KGl0ZXIsIFdFQktJVF9DT05URVhUX01F
TlVfQUNUSU9OX1BBU1RFLCBWaXNpYmxlIHwgRW5hYmxlZCk7CisgICAgICAgICAgICBpdGVyID0g
Y2hlY2tDdXJyZW50SXRlbUlzU3RvY2tBY3Rpb25BbmRHZXROZXh0KGl0ZXIsIFdFQktJVF9DT05U
RVhUX01FTlVfQUNUSU9OX0RFTEVURSwgVmlzaWJsZSB8IEVuYWJsZWQpOworICAgICAgICAgICAg
aXRlciA9IGNoZWNrQ3VycmVudEl0ZW1Jc1NlcGFyYXRvckFuZEdldE5leHQoaXRlcik7CisgICAg
ICAgICAgICBpdGVyID0gY2hlY2tDdXJyZW50SXRlbUlzU3RvY2tBY3Rpb25BbmRHZXROZXh0KGl0
ZXIsIFdFQktJVF9DT05URVhUX01FTlVfQUNUSU9OX1NFTEVDVF9BTEwsIFZpc2libGUgfCBFbmFi
bGVkKTsKKyAgICAgICAgICAgIGl0ZXIgPSBjaGVja0N1cnJlbnRJdGVtSXNTZXBhcmF0b3JBbmRH
ZXROZXh0KGl0ZXIpOworICAgICAgICAgICAgaXRlciA9IGNoZWNrQ3VycmVudEl0ZW1Jc1N0b2Nr
QWN0aW9uQW5kR2V0TmV4dChpdGVyLCBXRUJLSVRfQ09OVEVYVF9NRU5VX0FDVElPTl9VTklDT0RF
LCBWaXNpYmxlIHwgRW5hYmxlZCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBF
ZGl0YWJsZUFsbG93c1VuZG86CisgICAgICAgICAgICBnX2Fzc2VydCghd2Via2l0X2hpdF90ZXN0
X3Jlc3VsdF9jb250ZXh0X2lzX2xpbmsoaGl0VGVzdFJlc3VsdCkpOworICAgICAgICAgICAgZ19h
c3NlcnQoIXdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19pbWFnZShoaXRUZXN0UmVz
dWx0KSk7CisgICAgICAgICAgICBnX2Fzc2VydCghd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250
ZXh0X2lzX21lZGlhKGhpdFRlc3RSZXN1bHQpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0KHdlYmtp
dF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19lZGl0YWJsZShoaXRUZXN0UmVzdWx0KSk7Cisg
ICAgICAgICAgICBnX2Fzc2VydCghd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX3Nl
bGVjdGlvbihoaXRUZXN0UmVzdWx0KSk7CisgICAgICAgICAgICBnX2Fzc2VydCghKGNvbW1hbmRz
ICYgV0VCS0lUX0hJVF9URVNUX1JFU1VMVF9DQU5fQ1VUKSk7CisgICAgICAgICAgICBnX2Fzc2Vy
dCghKGNvbW1hbmRzICYgV0VCS0lUX0hJVF9URVNUX1JFU1VMVF9DQU5fQ09QWSkpOworICAgICAg
ICAgICAgZ19hc3NlcnQoY29tbWFuZHMgJiBXRUJLSVRfSElUX1RFU1RfUkVTVUxUX0NBTl9QQVNU
RSk7CisgICAgICAgICAgICBnX2Fzc2VydChjb21tYW5kcyAmIFdFQktJVF9ISVRfVEVTVF9SRVNV
TFRfQ0FOX1VORE8pOworICAgICAgICAgICAgZ19hc3NlcnQoIShjb21tYW5kcyAmIFdFQktJVF9I
SVRfVEVTVF9SRVNVTFRfQ0FOX1JFRE8pKTsKKyAgICAgICAgICAgIGl0ZXIgPSBjaGVja0N1cnJl
bnRJdGVtSXNTdG9ja0FjdGlvbkFuZEdldE5leHQoaXRlciwgV0VCS0lUX0NPTlRFWFRfTUVOVV9B
Q1RJT05fQ1VULCBWaXNpYmxlKTsKKyAgICAgICAgICAgIGl0ZXIgPSBjaGVja0N1cnJlbnRJdGVt
SXNTdG9ja0FjdGlvbkFuZEdldE5leHQoaXRlciwgV0VCS0lUX0NPTlRFWFRfTUVOVV9BQ1RJT05f
Q09QWSwgVmlzaWJsZSk7CisgICAgICAgICAgICBpdGVyID0gY2hlY2tDdXJyZW50SXRlbUlzU3Rv
Y2tBY3Rpb25BbmRHZXROZXh0KGl0ZXIsIFdFQktJVF9DT05URVhUX01FTlVfQUNUSU9OX1BBU1RF
LCBWaXNpYmxlIHwgRW5hYmxlZCk7CisgICAgICAgICAgICBpdGVyID0gY2hlY2tDdXJyZW50SXRl
bUlzU3RvY2tBY3Rpb25BbmRHZXROZXh0KGl0ZXIsIFdFQktJVF9DT05URVhUX01FTlVfQUNUSU9O
X0RFTEVURSwgVmlzaWJsZSk7CisgICAgICAgICAgICBpdGVyID0gY2hlY2tDdXJyZW50SXRlbUlz
U2VwYXJhdG9yQW5kR2V0TmV4dChpdGVyKTsKKyAgICAgICAgICAgIGl0ZXIgPSBjaGVja0N1cnJl
bnRJdGVtSXNTdG9ja0FjdGlvbkFuZEdldE5leHQoaXRlciwgV0VCS0lUX0NPTlRFWFRfTUVOVV9B
Q1RJT05fU0VMRUNUX0FMTCwgVmlzaWJsZSB8IEVuYWJsZWQpOworICAgICAgICAgICAgaXRlciA9
IGNoZWNrQ3VycmVudEl0ZW1Jc1NlcGFyYXRvckFuZEdldE5leHQoaXRlcik7CisgICAgICAgICAg
ICBpdGVyID0gY2hlY2tDdXJyZW50SXRlbUlzU3RvY2tBY3Rpb25BbmRHZXROZXh0KGl0ZXIsIFdF
QktJVF9DT05URVhUX01FTlVfQUNUSU9OX1VOSUNPREUsIFZpc2libGUgfCBFbmFibGVkKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVkaXRhYmxlQWxsb3dzUmVkbzoKKyAgICAg
ICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfbGluayho
aXRUZXN0UmVzdWx0KSk7CisgICAgICAgICAgICBnX2Fzc2VydCghd2Via2l0X2hpdF90ZXN0X3Jl
c3VsdF9jb250ZXh0X2lzX2ltYWdlKGhpdFRlc3RSZXN1bHQpKTsKKyAgICAgICAgICAgIGdfYXNz
ZXJ0KCF3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfbWVkaWEoaGl0VGVzdFJlc3Vs
dCkpOworICAgICAgICAgICAgZ19hc3NlcnQod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0
X2lzX2VkaXRhYmxlKGhpdFRlc3RSZXN1bHQpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0KHdlYmtp
dF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19zZWxlY3Rpb24oaGl0VGVzdFJlc3VsdCkpOwor
ICAgICAgICAgICAgZ19hc3NlcnQoY29tbWFuZHMgJiBXRUJLSVRfSElUX1RFU1RfUkVTVUxUX0NB
Tl9DVVQpOworICAgICAgICAgICAgZ19hc3NlcnQoY29tbWFuZHMgJiBXRUJLSVRfSElUX1RFU1Rf
UkVTVUxUX0NBTl9DT1BZKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0KGNvbW1hbmRzICYgV0VCS0lU
X0hJVF9URVNUX1JFU1VMVF9DQU5fUEFTVEUpOworICAgICAgICAgICAgZ19hc3NlcnQoIShjb21t
YW5kcyAmIFdFQktJVF9ISVRfVEVTVF9SRVNVTFRfQ0FOX1VORE8pKTsKKyAgICAgICAgICAgIGdf
YXNzZXJ0KGNvbW1hbmRzICYgV0VCS0lUX0hJVF9URVNUX1JFU1VMVF9DQU5fUkVETyk7CisgICAg
ICAgICAgICBpdGVyID0gY2hlY2tDdXJyZW50SXRlbUlzU3RvY2tBY3Rpb25BbmRHZXROZXh0KGl0
ZXIsIFdFQktJVF9DT05URVhUX01FTlVfQUNUSU9OX0NVVCwgVmlzaWJsZSB8IEVuYWJsZWQpOwor
ICAgICAgICAgICAgaXRlciA9IGNoZWNrQ3VycmVudEl0ZW1Jc1N0b2NrQWN0aW9uQW5kR2V0TmV4
dChpdGVyLCBXRUJLSVRfQ09OVEVYVF9NRU5VX0FDVElPTl9DT1BZLCBWaXNpYmxlIHwgRW5hYmxl
ZCk7CisgICAgICAgICAgICBpdGVyID0gY2hlY2tDdXJyZW50SXRlbUlzU3RvY2tBY3Rpb25BbmRH
ZXROZXh0KGl0ZXIsIFdFQktJVF9DT05URVhUX01FTlVfQUNUSU9OX1BBU1RFLCBWaXNpYmxlIHwg
RW5hYmxlZCk7CisgICAgICAgICAgICBpdGVyID0gY2hlY2tDdXJyZW50SXRlbUlzU3RvY2tBY3Rp
b25BbmRHZXROZXh0KGl0ZXIsIFdFQktJVF9DT05URVhUX01FTlVfQUNUSU9OX0RFTEVURSwgVmlz
aWJsZSB8IEVuYWJsZWQpOworICAgICAgICAgICAgaXRlciA9IGNoZWNrQ3VycmVudEl0ZW1Jc1Nl
cGFyYXRvckFuZEdldE5leHQoaXRlcik7CisgICAgICAgICAgICBpdGVyID0gY2hlY2tDdXJyZW50
SXRlbUlzU3RvY2tBY3Rpb25BbmRHZXROZXh0KGl0ZXIsIFdFQktJVF9DT05URVhUX01FTlVfQUNU
SU9OX1NFTEVDVF9BTEwsIFZpc2libGUgfCBFbmFibGVkKTsKKyAgICAgICAgICAgIGl0ZXIgPSBj
aGVja0N1cnJlbnRJdGVtSXNTZXBhcmF0b3JBbmRHZXROZXh0KGl0ZXIpOworICAgICAgICAgICAg
aXRlciA9IGNoZWNrQ3VycmVudEl0ZW1Jc1N0b2NrQWN0aW9uQW5kR2V0TmV4dChpdGVyLCBXRUJL
SVRfQ09OVEVYVF9NRU5VX0FDVElPTl9VTklDT0RFLCBWaXNpYmxlIHwgRW5hYmxlZCk7CisgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGdfYXNzZXJ0X25v
dF9yZWFjaGVkKCk7CiAgICAgICAgIH0KQEAgLTQyOCw5ICs1MjgsMTEgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBEZWZhdWx0TWVudVR5cGUgbV9leHBlY3Rl
ZE1lbnVUeXBlOworICAgIERlZmF1bHRNZW51VHlwZSBtX2V4cGVjdGVkTWVudVR5cGUgPSBOYXZp
Z2F0aW9uOwogfTsKIAorI2RlZmluZSBXSVRUSUNJU00gIkhUTUwgaXMgdXNlZnVsIGZvciBhIHdl
YiBjb250ZW50IHJlbmRlcmluZyBlbmdpbmUuIC0tIE1hcnRpbiBSb2JpbnNvbiIKKwogc3RhdGlj
IHZvaWQgcHJlcGFyZUNvbnRleHRNZW51VGVzdFZpZXcoQ29udGV4dE1lbnVEZWZhdWx0VGVzdCog
dGVzdCkKIHsKICAgICBHVW5pcXVlUHRyPGNoYXI+IGJhc2VEaXIoZ19zdHJkdXBfcHJpbnRmKCJm
aWxlOi8vJXMvIiwgVGVzdDo6Z2V0UmVzb3VyY2VzRGlyKCkuZGF0YSgpKSk7CkBAIC00MzksNyAr
NTQxLDcgQEAgc3RhdGljIHZvaWQgcHJlcGFyZUNvbnRleHRNZW51VGVzdFZpZXcoQ29udGV4dE1l
bnVEZWZhdWx0VGVzdCogdGVzdCkKICAgICAgICAgIiA8YSBzdHlsZT0ncG9zaXRpb246YWJzb2x1
dGU7IGxlZnQ6MTsgdG9wOjEnIGhyZWY9J2h0dHA6Ly93d3cud2Via2l0Z3RrLm9yZycgdGl0bGU9
J1dlYktpdEdUSysgVGl0bGUnPldlYktpdEdUSysgV2Vic2l0ZTwvYT4iCiAgICAgICAgICIgPGlt
ZyBzdHlsZT0ncG9zaXRpb246YWJzb2x1dGU7IGxlZnQ6MTsgdG9wOjEwJyBzcmM9J2JsYW5rLmlj
bycgd2lkdGg9NSBoZWlnaHQ9NT48L2ltZz4iCiAgICAgICAgICIgPGEgc3R5bGU9J3Bvc2l0aW9u
OmFic29sdXRlOyBsZWZ0OjE7IHRvcDoyMCcgaHJlZj0naHR0cDovL3d3dy53ZWJraXRndGsub3Jn
L2xvZ28nIHRpdGxlPSdXZWJLaXRHVEsrIExvZ28nPjxpbWcgc3JjPSdibGFuay5pY28nIHdpZHRo
PTUgaGVpZ2h0PTU+PC9pbWc+PC9hPiIKLSAgICAgICAgIiA8aW5wdXQgc3R5bGU9J3Bvc2l0aW9u
OmFic29sdXRlOyBsZWZ0OjE7IHRvcDozMCcgc2l6ZT0nMTAnPjwvaW5wdXQ+IgorICAgICAgICAi
IDxpbnB1dCBzdHlsZT0ncG9zaXRpb246YWJzb2x1dGU7IGxlZnQ6MTsgdG9wOjMwJyBzaXplPScx
MCcgdmFsdWU9JyIgV0lUVElDSVNNICInIGlkPSdlZGl0YWJsZSc+PC9pbnB1dD4iCiAgICAgICAg
ICIgPHZpZGVvIHN0eWxlPSdwb3NpdGlvbjphYnNvbHV0ZTsgbGVmdDoxOyB0b3A6NTAnIHdpZHRo
PSczMDAnIGhlaWdodD0nMzAwJyBjb250cm9scz0nY29udHJvbHMnIHByZWxvYWQ9J25vbmUnPjxz
b3VyY2Ugc3JjPSdzaWxlbmNlLndlYm0nIHR5cGU9J3ZpZGVvL3dlYm0nIC8+PC92aWRlbz4iCiAg
ICAgICAgICIgPGF1ZGlvIHN0eWxlPSdwb3NpdGlvbjphYnNvbHV0ZTsgbGVmdDoxOyB0b3A6NjAn
IHdpZHRoPSc1MCcgaGVpZ2h0PScyMCcgY29udHJvbHM9J2NvbnRyb2xzJyBwcmVsb2FkPSdub25l
Jz48c291cmNlIHNyYz0ndHJhY2sub2dnJyB0eXBlPSdhdWRpby9vZ2cnIC8+PC9hdWRpbz4iCiAg
ICAgICAgICIgPHAgc3R5bGU9J3Bvc2l0aW9uOmFic29sdXRlOyBsZWZ0OjE7IHRvcDo5MCcgaWQ9
J3RleHRfdG9fc2VsZWN0Jz5Mb3JlbSBpcHN1bS48L3A+IgpAQCAtNDU0LDExICs1NTYsODkgQEAg
c3RhdGljIHZvaWQgcHJlcGFyZUNvbnRleHRNZW51VGVzdFZpZXcoQ29udGV4dE1lbnVEZWZhdWx0
VGVzdCogdGVzdCkKICAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKIH0KIAorc3Rh
dGljIHZvaWQgY29weUN1cnJlbnRTZWxlY3Rpb25Ub0NsaXBib2FyZChDb250ZXh0TWVudURlZmF1
bHRUZXN0KiB0ZXN0KQoreworICAgIC8vIENvcGllZCBmcm9tIFRlc3RXZWJWaWV3RWRpdG9yLiBU
aGVyZSdzIG5vIHdheSB0byBrbm93IHdoZW4gdGhlIHNlbGVjdGlvbgorICAgIC8vIGhhcyBiZWVu
IGNvcGllZCB0byB0aGUgY2xpcGJvYXJkLCBzbyB1c2UgYSB0aW1lb3V0IHNvdXJjZSB0byBxdWVy
eSB0aGUKKyAgICAvLyBjbGlwYm9hcmQuIE5vdGUgdGhpcyBmdW5jdGlvbiBjb3VsZCBxdWl0IGVh
cmx5IGlmIHNvbWUgb3RoZXIgdGV4dCBpcworICAgIC8vIGFscmVhZHkgcHJlc2VudCBpbiB0aGUg
Y2xpcGJvYXJkLCBzbyB0aGlzIGZ1bmN0aW9uIGNhbid0IGJlIHJlbGllZCBvbiB0bworICAgIC8v
IGFjdHVhbGx5IGNvcHkgdGhlIGRlc2lyZWQgdGV4dCBiZWZvcmUgcmV0dXJuaW5nLCBidXQgb3Vy
IHRlc3Qgb25seSBjYXJlcworICAgIC8vIHRoYXQgKnNvbWV0aGluZyogaXMgY29waWVkIHRvIHRo
ZSBjbGlwYm9hcmQuCisgICAgd2Via2l0X3dlYl92aWV3X2V4ZWN1dGVfZWRpdGluZ19jb21tYW5k
KHRlc3QtPm1fd2ViVmlldywgV0VCS0lUX0VESVRJTkdfQ09NTUFORF9DT1BZKTsKKyAgICBnX3Rp
bWVvdXRfYWRkKDUwLCBbXShncG9pbnRlciB1c2VyRGF0YSkgLT4gZ2Jvb2xlYW4geworICAgICAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgd2FpdE1heFRyaWVzID0gMzsKKyAgICAgICAgc3RhdGlj
IHVuc2lnbmVkIHRyaWVzQ291bnQgPSAwOworICAgICAgICBhdXRvIG1haW5Mb29wID0gc3RhdGlj
X2Nhc3Q8R01haW5Mb29wKj4odXNlckRhdGEpOworICAgICAgICB0cmllc0NvdW50Kys7CisgICAg
ICAgIGlmIChndGtfY2xpcGJvYXJkX3dhaXRfaXNfdGV4dF9hdmFpbGFibGUoZ3RrX2NsaXBib2Fy
ZF9nZXQoR0RLX1NFTEVDVElPTl9DTElQQk9BUkQpKSB8fCB0cmllc0NvdW50ID4gd2FpdE1heFRy
aWVzKSB7CisgICAgICAgICAgICBnX21haW5fbG9vcF9xdWl0KG1haW5Mb29wKTsKKyAgICAgICAg
ICAgIHJldHVybiBHX1NPVVJDRV9SRU1PVkU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIEdf
U09VUkNFX0NPTlRJTlVFOworICAgIH0sIHRlc3QtPm1fbWFpbkxvb3ApOworICAgIGdfbWFpbl9s
b29wX3J1bih0ZXN0LT5tX21haW5Mb29wKTsKK30KKworc3RhdGljIHZvaWQgc2VsZWN0VGV4dElu
RWRpdGFibGUoQ29udGV4dE1lbnVEZWZhdWx0VGVzdCogdGVzdCkKK3sKKyAgICB3ZWJraXRfd2Vi
X3ZpZXdfcnVuX2phdmFzY3JpcHQodGVzdC0+bV93ZWJWaWV3LCAiZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2VkaXRhYmxlJykuc2VsZWN0KCk7IiwgbnVsbHB0ciwgW10oR09iamVjdCogc291cmNl
T2JqZWN0LCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgZ3BvaW50ZXIgdXNlckRhdGEpIHsKKyAgICAg
ICAgYXV0byBtYWluTG9vcCA9IHN0YXRpY19jYXN0PEdNYWluTG9vcCo+KHVzZXJEYXRhKTsKKyAg
ICAgICAgYXV0byB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKHNvdXJjZU9iamVjdCk7CisgICAg
ICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKKyAgICAgICAgV2ViS2l0SmF2YXNjcmlw
dFJlc3VsdCoganNSZXN1bHQgPSB3ZWJraXRfd2ViX3ZpZXdfcnVuX2phdmFzY3JpcHRfZmluaXNo
KHdlYlZpZXcsIHJlc3VsdCwgJmVycm9yLm91dFB0cigpKTsKKyAgICAgICAgZ19hc3NlcnRfbm9f
ZXJyb3IoZXJyb3IuZ2V0KCkpOworICAgICAgICB3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRfdW5y
ZWYoanNSZXN1bHQpOworICAgICAgICBnX21haW5fbG9vcF9xdWl0KG1haW5Mb29wKTsKKyAgICB9
LCB0ZXN0LT5tX21haW5Mb29wKTsKKyAgICBnX21haW5fbG9vcF9ydW4odGVzdC0+bV9tYWluTG9v
cCk7Cit9CisKK3N0YXRpYyB2b2lkIHdhaXRVbnRpbEVkaXRhYmxlQ29udGVudE1hdGNoZXMoQ29u
dGV4dE1lbnVEZWZhdWx0VGVzdCogdGVzdCwgY29uc3QgY2hhciogbWF0Y2gpCit7CisgICAgc3Ry
dWN0IENvbW1hbmREYXRhIHsKKyAgICAgICAgR01haW5Mb29wKiBtYWluTG9vcDsKKyAgICAgICAg
Y29uc3QgY2hhciogbWF0Y2g7CisgICAgICAgIGJvb2wgZmluaXNoZWQ7CisgICAgfSBkYXRhID0g
eyB0ZXN0LT5tX21haW5Mb29wLCBtYXRjaCwgZmFsc2UgfTsKKworICAgIHdoaWxlICghZGF0YS5m
aW5pc2hlZCkgeworICAgICAgICB3ZWJraXRfd2ViX3ZpZXdfcnVuX2phdmFzY3JpcHQodGVzdC0+
bV93ZWJWaWV3LCAiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VkaXRhYmxlJykudmFsdWU7Iiwg
bnVsbHB0ciwgW10oR09iamVjdCogc291cmNlT2JqZWN0LCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwg
Z3BvaW50ZXIgdXNlckRhdGEpIHsKKyAgICAgICAgICAgIGF1dG8gZGF0YSA9IHN0YXRpY19jYXN0
PENvbW1hbmREYXRhKj4odXNlckRhdGEpOworICAgICAgICAgICAgYXV0byB3ZWJWaWV3ID0gV0VC
S0lUX1dFQl9WSUVXKHNvdXJjZU9iamVjdCk7CisgICAgICAgICAgICBHVW5pcXVlT3V0UHRyPEdF
cnJvcj4gZXJyb3I7CisgICAgICAgICAgICBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBqc1Jlc3Vs
dCA9IHdlYmtpdF93ZWJfdmlld19ydW5famF2YXNjcmlwdF9maW5pc2god2ViVmlldywgcmVzdWx0
LCAmZXJyb3Iub3V0UHRyKCkpOworICAgICAgICAgICAgZ19hc3NlcnRfbm9fZXJyb3IoZXJyb3Iu
Z2V0KCkpOworCisgICAgICAgICAgICBKU0dsb2JhbENvbnRleHRSZWYgY29udGV4dCA9IHdlYmtp
dF9qYXZhc2NyaXB0X3Jlc3VsdF9nZXRfZ2xvYmFsX2NvbnRleHQoanNSZXN1bHQpOworICAgICAg
ICAgICAgSlNWYWx1ZVJlZiB2YWx1ZSA9IHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9nZXRfdmFs
dWUoanNSZXN1bHQpOworICAgICAgICAgICAgZ19hc3NlcnQoSlNWYWx1ZUlzU3RyaW5nKGNvbnRl
eHQsIHZhbHVlKSk7CisKKyAgICAgICAgICAgIEpTU3RyaW5nUmVmIGpzU3RyaW5nVmFsdWUgPSBK
U1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIHZhbHVlLCBudWxscHRyKTsKKyAgICAgICAgICAg
IGdzaXplIHN0cmluZ0xlbmd0aCA9IEpTU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShq
c1N0cmluZ1ZhbHVlKTsKKyAgICAgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gc3RyaW5nVmFsdWUo
c3RhdGljX2Nhc3Q8Y2hhcio+KGdfbWFsbG9jKHN0cmluZ0xlbmd0aCkpKTsKKyAgICAgICAgICAg
IEpTU3RyaW5nR2V0VVRGOENTdHJpbmcoanNTdHJpbmdWYWx1ZSwgc3RyaW5nVmFsdWUuZ2V0KCks
IHN0cmluZ0xlbmd0aCk7CisgICAgICAgICAgICBKU1N0cmluZ1JlbGVhc2UoanNTdHJpbmdWYWx1
ZSk7CisgICAgICAgICAgICB3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRfdW5yZWYoanNSZXN1bHQp
OworCisgICAgICAgICAgICBpZiAoIXN0cmNtcChzdHJpbmdWYWx1ZS5nZXQoKSwgZGF0YS0+bWF0
Y2gpKQorICAgICAgICAgICAgICAgIGRhdGEtPmZpbmlzaGVkID0gdHJ1ZTsKKworICAgICAgICAg
ICAgZ19tYWluX2xvb3BfcXVpdChkYXRhLT5tYWluTG9vcCk7CisgICAgICAgIH0sICZkYXRhKTsK
KyAgICAgICAgZ19tYWluX2xvb3BfcnVuKHRlc3QtPm1fbWFpbkxvb3ApOworICAgIH0KK30KKwog
c3RhdGljIHZvaWQgdGVzdENvbnRleHRNZW51RGVmYXVsdE1lbnUoQ29udGV4dE1lbnVEZWZhdWx0
VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKICAgICB0ZXN0LT5zaG93SW5XaW5kb3dBbmRX
YWl0VW50aWxNYXBwZWQoKTsKIAogICAgIHByZXBhcmVDb250ZXh0TWVudVRlc3RWaWV3KHRlc3Qp
OworICAgIAorICAgIC8vIEp1c3QgZ2V0IHNvbWV0aGluZyBpbnRvIHRoZSBjbGlwYm9hcmQsIHNv
IHRoZXJlIGlzIG5vIGRvdWJ0IHRoYXQgcGFzdGUKKyAgICAvLyB3aWxsIGJlIGF2YWlsYWJsZSB3
aGVuZXZlciBwb3NzaWJsZS4gV2Ugb2J2aW91c2x5IGRvbid0IHdhbnQgdGhpcyB0ZXN0IHRvCisg
ICAgLy8gZGVwZW5kIG9uIHRoZSBwcmlvciBjb250ZW50cyBvZiB0aGUgY2xpcGJvYXJkLgorICAg
IGNvcHlDdXJyZW50U2VsZWN0aW9uVG9DbGlwYm9hcmQodGVzdCk7CiAKICAgICAvLyBDb250ZXh0
IG1lbnUgZm9yIHNlbGVjdGlvbi4KICAgICAvLyBUaGlzIHRlc3Qgc2hvdWxkIGFsd2F5cyBiZSB0
aGUgZmlyc3QgYmVjYXVzZSBhbnkgb3RoZXIgY2xpY2sgcmVtb3ZlcyB0aGUgc2VsZWN0aW9uLgpA
QCAtNDkzLDkgKzY3MywyNiBAQCBzdGF0aWMgdm9pZCB0ZXN0Q29udGV4dE1lbnVEZWZhdWx0TWVu
dShDb250ZXh0TWVudURlZmF1bHRUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludAogICAgIHRlc3QtPm1f
ZXhwZWN0ZWRNZW51VHlwZSA9IENvbnRleHRNZW51RGVmYXVsdFRlc3Q6OkF1ZGlvOwogICAgIHRl
c3QtPnNob3dDb250ZXh0TWVudUF0UG9zaXRpb25BbmRXYWl0VW50aWxGaW5pc2hlZCgxLCA2MCk7
CiAKLSAgICAvLyBDb250ZXh0IG1lbnUgZm9yIGVkaXRhYmxlLgorICAgIC8vIENvbnRleHQgbWVu
dSBmb3IgZWRpdGFibGUuIE5vIHRleHQgc2VsZWN0ZWQuCiAgICAgdGVzdC0+bV9leHBlY3RlZE1l
bnVUeXBlID0gQ29udGV4dE1lbnVEZWZhdWx0VGVzdDo6RWRpdGFibGU7CiAgICAgdGVzdC0+c2hv
d0NvbnRleHRNZW51QXRQb3NpdGlvbkFuZFdhaXRVbnRpbEZpbmlzaGVkKDUsIDM1KTsKKworICAg
IC8vIENvbnRleHQgbWVudSBmb3IgZWRpdGFibGUgYWZ0ZXIgc2VsZWN0aW5nIHRleHQuCisgICAg
c2VsZWN0VGV4dEluRWRpdGFibGUodGVzdCk7CisgICAgdGVzdC0+bV9leHBlY3RlZE1lbnVUeXBl
ID0gQ29udGV4dE1lbnVEZWZhdWx0VGVzdDo6RWRpdGFibGVXaXRoU2VsZWN0aW9uOworICAgIHRl
c3QtPnNob3dDb250ZXh0TWVudUF0UG9zaXRpb25BbmRXYWl0VW50aWxGaW5pc2hlZCg1LCAzNSk7
CisKKyAgICAvLyBDb250ZW50IG1lbnUgZm9yIGVkaXRhYmxlIGFmdGVyIG1vZGlmeWluZyB0ZXh0
LgorICAgIHRlc3QtPmtleVN0cm9rZShHREtfS0VZX0RlbGV0ZSk7CisgICAgd2FpdFVudGlsRWRp
dGFibGVDb250ZW50TWF0Y2hlcyh0ZXN0LCAiIik7CisgICAgdGVzdC0+bV9leHBlY3RlZE1lbnVU
eXBlID0gQ29udGV4dE1lbnVEZWZhdWx0VGVzdDo6RWRpdGFibGVBbGxvd3NVbmRvOworICAgIHRl
c3QtPnNob3dDb250ZXh0TWVudUF0UG9zaXRpb25BbmRXYWl0VW50aWxGaW5pc2hlZCg1LCAzNSk7
CisKKyAgICAvLyBDb250ZW50IG1lbnUgZm9yIGVkaXRhYmxlIGFmdGVyIHVuZG8uCisgICAgd2Vi
a2l0X3dlYl92aWV3X2V4ZWN1dGVfZWRpdGluZ19jb21tYW5kKHRlc3QtPm1fd2ViVmlldywgV0VC
S0lUX0VESVRJTkdfQ09NTUFORF9VTkRPKTsKKyAgICB3YWl0VW50aWxFZGl0YWJsZUNvbnRlbnRN
YXRjaGVzKHRlc3QsIFdJVFRJQ0lTTSk7CisgICAgdGVzdC0+bV9leHBlY3RlZE1lbnVUeXBlID0g
Q29udGV4dE1lbnVEZWZhdWx0VGVzdDo6RWRpdGFibGVBbGxvd3NSZWRvOworICAgIHRlc3QtPnNo
b3dDb250ZXh0TWVudUF0UG9zaXRpb25BbmRXYWl0VW50aWxGaW5pc2hlZCg1LCAzNSk7CiB9CiAK
IHN0YXRpYyB2b2lkIHRlc3RQb3B1cEV2ZW50U2lnbmFsKENvbnRleHRNZW51RGVmYXVsdFRlc3Qq
IHRlc3QsIGdjb25zdHBvaW50ZXIpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321510</attachid>
            <date>2017-09-21 20:05:46 -0700</date>
            <delta_ts>2017-09-26 14:49:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-168219-20170921220545.patch</filename>
            <type>text/plain</type>
            <size>45857</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyMzE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzQ5ZjkyNDQwMWVmZTk2
MDVmYTIxMjI2ZmRkZWU0ZDllMWI0ZDdjYy4uNzBmM2UzOTQ3OGRjZWQ4YjE2MDAyNGUxN2RkYjY1
Y2IzODVkYzY1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE3LTA5LTIxICBNaWNo
YWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBF
eHBvc2UgZWRpdGluZyBjb21tYW5kIGF2YWlsYWJpbGl0eSBpbiBXZWJLaXRIaXRUZXN0UmVzdWx0
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjgyMTkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNl
IEhpdFRlc3RSZXN1bHQ6OmFsbG93c0NvcHkgd2l0aCBIaXRUZXN0UmVzdWx0OjphdmFpbGFibGVF
ZGl0Q29tbWFuZHMuCisKKyAgICAgICAgKiByZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjphdmFpbGFibGVFZGl0Q29tbWFuZHMgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6YWxsb3dzQ29weSBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaDoKKwogMjAxNy0w
OS0yMSAgSmF2aWVyIEZlcm5hbmRleiAgPGpmZXJuYW5kZXpAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBVbnByZWRpY3RhYmxlIHNlbGVjdGlvbiB3aGVuIGRyYWdnaW5nIG91dCBvZiBmbG9hdCBlbGVt
ZW50cyBjaGlsZHJlbiBvZiBpbi1mbG93IGJsb2NrLWxldmVsIGJveApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA1YmI4
ZTdiMTBiNWM4ZTJhMDI4ZDk2MTFjYWQ5YjkyYzg5ZDg0ZTg2Li42OWRlNTU2YzQ5ODVhYTEzM2Nj
NzY3NmQ2NGExODBmZjFkYzZmNDQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDE3LTA5
LTIxICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KKworICAgICAg
ICBbR1RLXSBFeHBvc2UgZWRpdGluZyBjb21tYW5kIGF2YWlsYWJpbGl0eSBpbiBXZWJLaXRIaXRU
ZXN0UmVzdWx0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjgyMTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBJIHdhbnQgdG8gZml4IGEgY29udGV4dCBtZW51IGZsaWNrZXJpbmcgcHJvYmxlbSBpbiBFcGlw
aGFueS4gU2luY2Ugd2UgaGF2ZSB0byBzaG93IHRoZQorICAgICAgICBXZWJLaXRDb250ZXh0TWVu
dSBpbiBhIFdlYktpdFdlYlZpZXc6OmNvbnRleHQtbWVudSBoYW5kbGVyLCBidXQgY2Fubm90IGNo
ZWNrIHRoZQorICAgICAgICBhdmFpbGFiaWxpdHkgb2YgZWRpdGluZyBjb21tYW5kcyB0aGVyZSB3
aXRob3V0IHVzaW5nIHN5bmMgSVBDLCB3ZSBjdXJyZW50bHkgYXNzdW1lIGFsbAorICAgICAgICBl
ZGl0aW5nIGNvbW1hbmRzIGFyZSBhdmFpbGFibGUsIGFkZCB0aGVtIHRvIHRoZSBtZW51LCBzdGFy
dCBxdWVyeWluZyB0aGUgYXZhaWxhYmlsaXR5IHdpdGgKKyAgICAgICAgd2Via2l0X3dlYl92aWV3
X2Nhbl9leGVjdXRlX2VkaXRpbmdfY29tbWFuZCgpLCBzaG93IHRoZSBtZW51LCBhbmQgbGF0ZXIg
cmVtb3ZlIHRoZW0gZnJvbSB0aGUKKyAgICAgICAgbWVudSBvbmNlIHRoYXQgZmluaXNoZXMsIGNh
dXNpbmcgdGhlIGZsaWNrZXIuCisKKyAgICAgICAgV2VsbCwgbW9yZSBhY2N1cmF0ZWx5LCB0aGF0
J3Mgd2hhdCB3ZSB1c2VkIHRvIGRvIHByaW9yIHRvIEVwaXBoYW55IDMuMjQuIE5vd2FkYXlzIHdl
IGp1c3QKKyAgICAgICAgbGVhdmUgdGhlIGNvbnRleHQgbWVudSBpdGVtcyBlbmFibGVkIGF0IGFs
bCB0aW1lcyBpZiB0aGV5J3JlIHJlbGV2YW50IHRvIHRoZSBoaXQgdGV4dAorICAgICAgICBjb250
ZXh0LCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhlIHVuZGVybHlpbmcgZWRpdGluZyBjb21tYW5k
IGlzIGF2YWlsYWJsZSBvciBub3QsIHdoaWNoIGlzCisgICAgICAgIGV2ZW4gbW9yZSBicm9rZW4u
IEUuZy4gY3VycmVudGx5IHRoZSBDb3B5IGNvbnRleHQgbWVudSBpdGVtIGlzIGFsbW9zdCBhbHdh
eXMgYXZhaWxhYmxlLAorICAgICAgICBzaW5jZSBpdCdzIHJlbGV2YW50IHRvIGFsbW9zdCBldmVy
eSBoaXQgdGVzdCByZXN1bHQgY29udGV4dC4KKworICAgICAgICBBZGQgbmV3IEFQSSB0byBXZWJL
aXRIaXRUZXN0UmVzdWx0IHNvIHRoYXQgY29udGV4dCBtZW51IGl0ZW0gYXZhaWxhYmlsaXR5IGNh
biBiZSBkZXRlcm1pbmVkCisgICAgICAgIHdpdGhvdXQgcmVxdWlyaW5nIGZ1cnRoZXIgSVBDIHdo
ZW4gc2hvd2luZyB0aGUgY29udGV4dCBtZW51LiBUaGlzIGlzIHN1cGVyaW9yIHRvIHNlbmRpbmcg
dGhlCisgICAgICAgIFdlYktpdENvbnRleHRNZW51IGZyb20gdGhlIHdlYiBwcm9jZXNzIHRvIHRo
ZSBVSSBwcm9jZXNzIHdpdGhvdXQgdGhpcyBpbmZvcm1hdGlvbiwgYW5kIHRoZW4KKyAgICAgICAg
c3Vic2VxdWVudGx5IHBlcmZvcm1pbmcgc2V2ZXJhbCBJUEMgcXVlcmllcyBmcm9tIHRoZSBVSSBw
cm9jZXNzIHRvIHRoZSB3ZWIgcHJvY2VzcyB0byBjaGVjaworICAgICAgICB0aGUgYXZhaWxhYmls
aXR5IG9mIGVkaXRpbmcgY29tbWFuZHMsIGxpa2Ugd2UgdXNlZCB0byBkby4KKworICAgICAgICAq
IFNoYXJlZC9BUEkvZ2xpYi9XZWJLaXRIaXRUZXN0UmVzdWx0LmNwcDoKKyAgICAgICAgKHdlYmtp
dF9oaXRfdGVzdF9yZXN1bHRfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRIaXRUZXN0UmVz
dWx0Q3JlYXRlKToKKyAgICAgICAgKHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfaXNfY3V0X2F2YWls
YWJsZSk6CisgICAgICAgICh3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2lzX2NvcHlfYXZhaWxhYmxl
KToKKyAgICAgICAgKHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfaXNfcGFzdGVfYXZhaWxhYmxlKToK
KyAgICAgICAgKHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfaXNfdW5kb19hdmFpbGFibGUpOgorICAg
ICAgICAod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9pc19yZWRvX2F2YWlsYWJsZSk6CisgICAgICAg
ICogU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHREYXRhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
SGl0VGVzdFJlc3VsdERhdGE6OldlYkhpdFRlc3RSZXN1bHREYXRhKToKKyAgICAgICAgKFdlYktp
dDo6V2ViSGl0VGVzdFJlc3VsdERhdGE6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6
OldlYkhpdFRlc3RSZXN1bHREYXRhOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJIaXRU
ZXN0UmVzdWx0RGF0YS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSGl0VGVzdFJlc3Vs
dC5oOgorICAgICAgICAoQVBJOjpIaXRUZXN0UmVzdWx0OjphbGxvd3NDdXQgY29uc3QpOgorICAg
ICAgICAoQVBJOjpIaXRUZXN0UmVzdWx0OjphbGxvd3NDb3B5IGNvbnN0KToKKyAgICAgICAgKEFQ
STo6SGl0VGVzdFJlc3VsdDo6YWxsb3dzUGFzdGUgY29uc3QpOgorICAgICAgICAoQVBJOjpIaXRU
ZXN0UmVzdWx0OjphbGxvd3NVbmRvIGNvbnN0KToKKyAgICAgICAgKEFQSTo6SGl0VGVzdFJlc3Vs
dDo6YWxsb3dzUmVkbyBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
SGl0VGVzdFJlc3VsdC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0
Mmd0ay00LjAtc2VjdGlvbnMudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL1dlYktp
dEhpdFRlc3RSZXN1bHQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBh
Z2VNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBlcmZvcm1JbW1lZGlhdGVBY3Rp
b25IaXRUZXN0QXRMb2NhdGlvbik6CisKIDIwMTctMDktMjAgIFN0ZXBoYW4gU3phYm8gIDxzdGVw
aGFuLnN6YWJvQHNvbnkuY29tPgogCiAgICAgICAgIFtXaW5dIFdURjogQWRkIGFsaWFzIGZvciBw
cm9jZXNzIGlkIHRvIHVzZSBpbiBwbGFjZSBvZiBkaXJlY3QgdXNlcyBvZiBwaWRfdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCmluZGV4IGI3MjcwYTUwMmFlZWQ3
NDcxY2VkNjM2ZDYxZWQ1ZTVmZjg3ZjdhZDkuLmI3YzhjMmUwMGZlNmM4NTIwZTJmMjZmMDg1MzJm
MTQ2MGZmMDNmN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0
UmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5j
cHAKQEAgLTU5NiwxOSArNTk2LDI5IEBAIGJvb2wgSGl0VGVzdFJlc3VsdDo6aXNPdmVyVGV4dElu
c2lkZUZvcm1Db250cm9sRWxlbWVudCgpIGNvbnN0CiAgICAgcmV0dXJuICF3b3JkUmFuZ2UtPnRl
eHQoKS5pc0VtcHR5KCk7CiB9CiAKLWJvb2wgSGl0VGVzdFJlc3VsdDo6YWxsb3dzQ29weSgpIGNv
bnN0CithdXRvIEhpdFRlc3RSZXN1bHQ6OmF2YWlsYWJsZUVkaXRDb21tYW5kcygpIGNvbnN0IC0+
IE9wdGlvblNldDxBdmFpbGFibGVFZGl0Q29tbWFuZHM+CiB7Ci0gICAgTm9kZSogbm9kZSA9IGlu
bmVyTm9kZSgpOwotICAgIGlmICghbm9kZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIE9w
dGlvblNldDxBdmFpbGFibGVFZGl0Q29tbWFuZHM+IGNvbW1hbmRzID0gQXZhaWxhYmxlRWRpdENv
bW1hbmRzOjpOb25lOwogCi0gICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUtPnJlbmRl
cmVyKCk7Ci0gICAgaWYgKCFyZW5kZXJlcikKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlm
ICghbV9pbm5lck5vblNoYXJlZE5vZGUpCisgICAgICAgIHJldHVybiBjb21tYW5kczsKIAotICAg
IGJvb2wgaXNVc2VyU2VsZWN0Tm9uZSA9IHJlbmRlcmVyLT5zdHlsZSgpLnVzZXJTZWxlY3QoKSA9
PSBTRUxFQ1RfTk9ORTsKLSAgICBib29sIGlzUGFzc3dvcmRGaWVsZCA9IGlzPEhUTUxJbnB1dEVs
ZW1lbnQ+KG5vZGUpICYmIGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCpub2RlKS5pc1Bhc3N3
b3JkRmllbGQoKTsKLSAgICByZXR1cm4gIWlzUGFzc3dvcmRGaWVsZCAmJiAhaXNVc2VyU2VsZWN0
Tm9uZTsKKyAgICBGcmFtZSogZnJhbWUgPSBpbm5lck5vblNoYXJlZE5vZGUoKS0+ZG9jdW1lbnQo
KS5mcmFtZSgpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybiBjb21tYW5kczsKKwor
ICAgIGlmIChmcmFtZS0+ZWRpdG9yKCkuY2FuQ3V0KCkpCisgICAgICAgIGNvbW1hbmRzIHw9IEF2
YWlsYWJsZUVkaXRDb21tYW5kczo6Q3V0OworICAgIGlmIChmcmFtZS0+ZWRpdG9yKCkuY2FuQ29w
eSgpKQorICAgICAgICBjb21tYW5kcyB8PSBBdmFpbGFibGVFZGl0Q29tbWFuZHM6OkNvcHk7Cisg
ICAgaWYgKGZyYW1lLT5lZGl0b3IoKS5jYW5QYXN0ZSgpKQorICAgICAgICBjb21tYW5kcyB8PSBB
dmFpbGFibGVFZGl0Q29tbWFuZHM6OlBhc3RlOworICAgIGlmIChmcmFtZS0+ZWRpdG9yKCkuY2Fu
VW5kbygpKQorICAgICAgICBjb21tYW5kcyB8PSBBdmFpbGFibGVFZGl0Q29tbWFuZHM6OlVuZG87
CisgICAgaWYgKGZyYW1lLT5lZGl0b3IoKS5jYW5SZWRvKCkpCisgICAgICAgIGNvbW1hbmRzIHw9
IEF2YWlsYWJsZUVkaXRDb21tYW5kczo6UmVkbzsKKworICAgIHJldHVybiBjb21tYW5kczsKIH0K
IAogVVJMIEhpdFRlc3RSZXN1bHQ6OmFic29sdXRlTGlua1VSTCgpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaAppbmRleCBiYTJkN2EyYTU5MGI1YTc0NTRiNWFm
NGRjYjk2ODYyYWM5ZjgwMmVkLi40NTc3YjZiZjAyYjZlNTk4ZDNlNjA4NmU0YjdiNjAxNmU2Yzhi
MzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmgKQEAgLTI4LDYg
KzI4LDcgQEAKICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNp
bmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+CiAj
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMzEsNyAr
MTMyLDE2IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNEb3dubG9hZGFi
bGVNZWRpYSgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNPdmVyVGV4dEluc2lk
ZUZvcm1Db250cm9sRWxlbWVudCgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgYWxs
b3dzQ29weSgpIGNvbnN0OworCisgICAgZW51bSBjbGFzcyBBdmFpbGFibGVFZGl0Q29tbWFuZHMg
eworICAgICAgICBOb25lID0gMCwKKyAgICAgICAgQ3V0ID0gMSA8PCAwLAorICAgICAgICBDb3B5
ID0gMSA8PCAxLAorICAgICAgICBQYXN0ZSA9IDEgPDwgMiwKKyAgICAgICAgVW5kbyA9IDEgPDwg
MywKKyAgICAgICAgUmVkbyA9IDEgPDwgNCwKKyAgICB9OworICAgIFdFQkNPUkVfRVhQT1JUIE9w
dGlvblNldDxBdmFpbGFibGVFZGl0Q29tbWFuZHM+IGF2YWlsYWJsZUVkaXRDb21tYW5kcygpIGNv
bnN0OwogCiAgICAgSGl0VGVzdFByb2dyZXNzIGFkZE5vZGVUb0xpc3RCYXNlZFRlc3RSZXN1bHQo
Tm9kZSosIGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiBwb2lu
dEluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRSZWN0JiA9IExheW91dFJlY3QoKSk7CiAgICAgSGl0
VGVzdFByb2dyZXNzIGFkZE5vZGVUb0xpc3RCYXNlZFRlc3RSZXN1bHQoTm9kZSosIGNvbnN0IEhp
dFRlc3RSZXF1ZXN0JiwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiBwb2ludEluQ29udGFpbmVyLCBj
b25zdCBGbG9hdFJlY3QmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9n
bGliL1dlYktpdEhpdFRlc3RSZXN1bHQuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2ds
aWIvV2ViS2l0SGl0VGVzdFJlc3VsdC5jcHAKaW5kZXggM2Y4YTZiY2Q1MTkxOGNiMTZkYmY1Njdj
OTJhNDcxODMzMTFmYmNjNS4uYWFlZDgzODc4NzNlYzRhOTRlY2Y0ZDYzZTcwMjcyZDk2Njg0NGZi
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2dsaWIvV2ViS2l0SGl0VGVz
dFJlc3VsdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2dsaWIvV2ViS2l0SGl0
VGVzdFJlc3VsdC5jcHAKQEAgLTIzLDYgKzIzLDcgQEAKICNpbmNsdWRlICJXZWJIaXRUZXN0UmVz
dWx0RGF0YS5oIgogI2luY2x1ZGUgIldlYktpdEhpdFRlc3RSZXN1bHRQcml2YXRlLmgiCiAjaW5j
bHVkZSA8Z2xpYi9naTE4bi1saWIuaD4KKyNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+CiAjaW5j
bHVkZSA8d3RmL2dsaWIvV1RGR1R5cGUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
CiAKQEAgLTY3LDEyICs2OCwxMyBAQCBlbnVtIHsKIH07CiAKIHN0cnVjdCBfV2ViS2l0SGl0VGVz
dFJlc3VsdFByaXZhdGUgewotICAgIHVuc2lnbmVkIGludCBjb250ZXh0OworICAgIHVuc2lnbmVk
IGNvbnRleHQ7CiAgICAgQ1N0cmluZyBsaW5rVVJJOwogICAgIENTdHJpbmcgbGlua1RpdGxlOwog
ICAgIENTdHJpbmcgbGlua0xhYmVsOwogICAgIENTdHJpbmcgaW1hZ2VVUkk7CiAgICAgQ1N0cmlu
ZyBtZWRpYVVSSTsKKyAgICBPcHRpb25TZXQ8V2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6QXZhaWxh
YmxlRWRpdENvbW1hbmRzPiBhdmFpbGFibGVFZGl0Q29tbWFuZHM7CiB9OwogCiBXRUJLSVRfREVG
SU5FX1RZUEUoV2ViS2l0SGl0VGVzdFJlc3VsdCwgd2Via2l0X2hpdF90ZXN0X3Jlc3VsdCwgR19U
WVBFX09CSkVDVCkKQEAgLTIyNSwyNiArMjI3LDIwIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9oaXRf
dGVzdF9yZXN1bHRfY2xhc3NfaW5pdChXZWJLaXRIaXRUZXN0UmVzdWx0Q2xhc3MqIGhpdFRlc3RS
CiBXZWJLaXRIaXRUZXN0UmVzdWx0KiB3ZWJraXRIaXRUZXN0UmVzdWx0Q3JlYXRlKGNvbnN0IFdl
YkhpdFRlc3RSZXN1bHREYXRhJiBoaXRUZXN0UmVzdWx0KQogewogICAgIHVuc2lnbmVkIGNvbnRl
eHQgPSBXRUJLSVRfSElUX1RFU1RfUkVTVUxUX0NPTlRFWFRfRE9DVU1FTlQ7Ci0KICAgICBpZiAo
IWhpdFRlc3RSZXN1bHQuYWJzb2x1dGVMaW5rVVJMLmlzRW1wdHkoKSkKICAgICAgICAgY29udGV4
dCB8PSBXRUJLSVRfSElUX1RFU1RfUkVTVUxUX0NPTlRFWFRfTElOSzsKLQogICAgIGlmICghaGl0
VGVzdFJlc3VsdC5hYnNvbHV0ZUltYWdlVVJMLmlzRW1wdHkoKSkKICAgICAgICAgY29udGV4dCB8
PSBXRUJLSVRfSElUX1RFU1RfUkVTVUxUX0NPTlRFWFRfSU1BR0U7Ci0KICAgICBpZiAoIWhpdFRl
c3RSZXN1bHQuYWJzb2x1dGVNZWRpYVVSTC5pc0VtcHR5KCkpCiAgICAgICAgIGNvbnRleHQgfD0g
V0VCS0lUX0hJVF9URVNUX1JFU1VMVF9DT05URVhUX01FRElBOwotCiAgICAgaWYgKGhpdFRlc3RS
ZXN1bHQuaXNDb250ZW50RWRpdGFibGUpCiAgICAgICAgIGNvbnRleHQgfD0gV0VCS0lUX0hJVF9U
RVNUX1JFU1VMVF9DT05URVhUX0VESVRBQkxFOwotCiAgICAgaWYgKGhpdFRlc3RSZXN1bHQuaXNT
Y3JvbGxiYXIpCiAgICAgICAgIGNvbnRleHQgfD0gV0VCS0lUX0hJVF9URVNUX1JFU1VMVF9DT05U
RVhUX1NDUk9MTEJBUjsKLQogICAgIGlmIChoaXRUZXN0UmVzdWx0LmlzU2VsZWN0ZWQpCiAgICAg
ICAgIGNvbnRleHQgfD0gV0VCS0lUX0hJVF9URVNUX1JFU1VMVF9DT05URVhUX1NFTEVDVElPTjsK
IAotICAgIHJldHVybiBXRUJLSVRfSElUX1RFU1RfUkVTVUxUKGdfb2JqZWN0X25ldyhXRUJLSVRf
VFlQRV9ISVRfVEVTVF9SRVNVTFQsCisgICAgYXV0byogcmVzdWx0ID0gV0VCS0lUX0hJVF9URVNU
X1JFU1VMVChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfSElUX1RFU1RfUkVTVUxULAogICAgICAg
ICAiY29udGV4dCIsIGNvbnRleHQsCiAgICAgICAgICJsaW5rLXVyaSIsIGNvbnRleHQgJiBXRUJL
SVRfSElUX1RFU1RfUkVTVUxUX0NPTlRFWFRfTElOSyA/IGhpdFRlc3RSZXN1bHQuYWJzb2x1dGVM
aW5rVVJMLnV0ZjgoKS5kYXRhKCkgOiBudWxscHRyLAogICAgICAgICAiaW1hZ2UtdXJpIiwgY29u
dGV4dCAmIFdFQktJVF9ISVRfVEVTVF9SRVNVTFRfQ09OVEVYVF9JTUFHRSA/IGhpdFRlc3RSZXN1
bHQuYWJzb2x1dGVJbWFnZVVSTC51dGY4KCkuZGF0YSgpIDogbnVsbHB0ciwKQEAgLTI1Miw2ICsy
NDgsOCBAQCBXZWJLaXRIaXRUZXN0UmVzdWx0KiB3ZWJraXRIaXRUZXN0UmVzdWx0Q3JlYXRlKGNv
bnN0IFdlYkhpdFRlc3RSZXN1bHREYXRhJiBoaXRUZQogICAgICAgICAibGluay10aXRsZSIsICFo
aXRUZXN0UmVzdWx0LmxpbmtUaXRsZS5pc0VtcHR5KCkgPyBoaXRUZXN0UmVzdWx0LmxpbmtUaXRs
ZS51dGY4KCkuZGF0YSgpIDogbnVsbHB0ciwKICAgICAgICAgImxpbmstbGFiZWwiLCAhaGl0VGVz
dFJlc3VsdC5saW5rTGFiZWwuaXNFbXB0eSgpID8gaGl0VGVzdFJlc3VsdC5saW5rTGFiZWwudXRm
OCgpLmRhdGEoKSA6IG51bGxwdHIsCiAgICAgICAgIG51bGxwdHIpKTsKKyAgICByZXN1bHQtPnBy
aXYtPmF2YWlsYWJsZUVkaXRDb21tYW5kcyA9IGhpdFRlc3RSZXN1bHQuYXZhaWxhYmxlRWRpdENv
bW1hbmRzOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHN0YXRpYyBib29sIHN0cmluZ0lzRXF1
YWxUb0NTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNvbnN0IENTdHJpbmcmIGNTdHJpbmcp
CkBAIC00NzIsMyArNDcwLDkzIEBAIGdib29sZWFuIHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29u
dGV4dF9pc19zY3JvbGxiYXIoV2ViS2l0SGl0VGVzdFJlc3VsdCogaGl0VGVzCiAKICAgICByZXR1
cm4gaGl0VGVzdFJlc3VsdC0+cHJpdi0+Y29udGV4dCAmIFdFQktJVF9ISVRfVEVTVF9SRVNVTFRf
Q09OVEVYVF9TQ1JPTExCQVI7CiB9CisKKy8qKgorICogd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9p
c19jdXRfYXZhaWxhYmxlOgorICogQGhpdF90ZXN0X3Jlc3VsdDogYSAjV2ViS2l0SGl0VGVzdFJl
c3VsdAorICoKKyAqIERldGVybWluZXMgd2hldGhlciBhIGN1dCBjb21tYW5kIGNjYW4gYmUgcGVy
Zm9ybWVkIGF0IHRoZSBsb2NhdGlvbiBvZgorICogQGhpdF90ZXN0X3Jlc3VsdC4KKyAqCisgKiBS
ZXR1cm5zOiAlVFJVRSBpZiBjdXQgaXMgYXZhaWxhYmxlCisgKgorICogU2luY2U6IDIuMjAKKyAq
LworZ2Jvb2xlYW4gd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9pc19jdXRfYXZhaWxhYmxlKFdlYktp
dEhpdFRlc3RSZXN1bHQqIGhpdFRlc3RSZXN1bHQpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2Zh
aWwoV0VCS0lUX0lTX0hJVF9URVNUX1JFU1VMVChoaXRUZXN0UmVzdWx0KSwgRkFMU0UpOworCisg
ICAgcmV0dXJuIGhpdFRlc3RSZXN1bHQtPnByaXYtPmF2YWlsYWJsZUVkaXRDb21tYW5kcy5jb250
YWlucyhXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjpBdmFpbGFibGVFZGl0Q29tbWFuZHM6OkN1dCk7
Cit9CisKKy8qKgorICogd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9pc19jb3B5X2F2YWlsYWJsZToK
KyAqIEBoaXRfdGVzdF9yZXN1bHQ6IGEgI1dlYktpdEhpdFRlc3RSZXN1bHQKKyAqCisgKiBEZXRl
cm1pbmVzIHdoZXRoZXIgYSBjb3B5IGNvbW1hbmQgY2NhbiBiZSBwZXJmb3JtZWQgYXQgdGhlIGxv
Y2F0aW9uIG9mCisgKiBAaGl0X3Rlc3RfcmVzdWx0LgorICoKKyAqIFJldHVybnM6ICVUUlVFIGlm
IGNvcHkgaXMgYXZhaWxhYmxlCisgKgorICogU2luY2U6IDIuMjAKKyAqLworZ2Jvb2xlYW4gd2Vi
a2l0X2hpdF90ZXN0X3Jlc3VsdF9pc19jb3B5X2F2YWlsYWJsZShXZWJLaXRIaXRUZXN0UmVzdWx0
KiBoaXRUZXN0UmVzdWx0KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19I
SVRfVEVTVF9SRVNVTFQoaGl0VGVzdFJlc3VsdCksIEZBTFNFKTsKKworICAgIHJldHVybiBoaXRU
ZXN0UmVzdWx0LT5wcml2LT5hdmFpbGFibGVFZGl0Q29tbWFuZHMuY29udGFpbnMoV2ViQ29yZTo6
SGl0VGVzdFJlc3VsdDo6QXZhaWxhYmxlRWRpdENvbW1hbmRzOjpDb3B5KTsKK30KKworLyoqCisg
KiB3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2lzX3Bhc3RlX2F2YWlsYWJsZToKKyAqIEBoaXRfdGVz
dF9yZXN1bHQ6IGEgI1dlYktpdEhpdFRlc3RSZXN1bHQKKyAqCisgKiBEZXRlcm1pbmVzIHdoZXRo
ZXIgYSBwYXN0ZSBjb21tYW5kIGNjYW4gYmUgcGVyZm9ybWVkIGF0IHRoZSBsb2NhdGlvbiBvZgor
ICogQGhpdF90ZXN0X3Jlc3VsdC4KKyAqCisgKiBSZXR1cm5zOiAlVFJVRSBpZiBwYXN0ZSBpcyBh
dmFpbGFibGUKKyAqCisgKiBTaW5jZTogMi4yMAorICovCitnYm9vbGVhbiB3ZWJraXRfaGl0X3Rl
c3RfcmVzdWx0X2lzX3Bhc3RlX2F2YWlsYWJsZShXZWJLaXRIaXRUZXN0UmVzdWx0KiBoaXRUZXN0
UmVzdWx0KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19ISVRfVEVTVF9S
RVNVTFQoaGl0VGVzdFJlc3VsdCksIEZBTFNFKTsKKworICAgIHJldHVybiBoaXRUZXN0UmVzdWx0
LT5wcml2LT5hdmFpbGFibGVFZGl0Q29tbWFuZHMuY29udGFpbnMoV2ViQ29yZTo6SGl0VGVzdFJl
c3VsdDo6QXZhaWxhYmxlRWRpdENvbW1hbmRzOjpQYXN0ZSk7Cit9CisKKy8qKgorICogd2Via2l0
X2hpdF90ZXN0X3Jlc3VsdF9pc191bmRvX2F2YWlsYWJsZToKKyAqIEBoaXRfdGVzdF9yZXN1bHQ6
IGEgI1dlYktpdEhpdFRlc3RSZXN1bHQKKyAqCisgKiBEZXRlcm1pbmVzIHdoZXRoZXIgYW4gdW5k
byBjb21tYW5kIGNjYW4gYmUgcGVyZm9ybWVkIGF0IHRoZSBsb2NhdGlvbiBvZgorICogQGhpdF90
ZXN0X3Jlc3VsdC4KKyAqCisgKiBSZXR1cm5zOiAlVFJVRSBpZiB1bmRvIGlzIGF2YWlsYWJsZQor
ICoKKyAqIFNpbmNlOiAyLjIwCisgKi8KK2dib29sZWFuIHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRf
aXNfdW5kb19hdmFpbGFibGUoV2ViS2l0SGl0VGVzdFJlc3VsdCogaGl0VGVzdFJlc3VsdCkKK3sK
KyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfSElUX1RFU1RfUkVTVUxUKGhpdFRl
c3RSZXN1bHQpLCBGQUxTRSk7CisKKyAgICByZXR1cm4gaGl0VGVzdFJlc3VsdC0+cHJpdi0+YXZh
aWxhYmxlRWRpdENvbW1hbmRzLmNvbnRhaW5zKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OkF2YWls
YWJsZUVkaXRDb21tYW5kczo6VW5kbyk7Cit9CisKKy8qKgorICogd2Via2l0X2hpdF90ZXN0X3Jl
c3VsdF9pc19yZWRvX2F2YWlsYWJsZToKKyAqIEBoaXRfdGVzdF9yZXN1bHQ6IGEgI1dlYktpdEhp
dFRlc3RSZXN1bHQKKyAqCisgKiBEZXRlcm1pbmVzIHdoZXRoZXIgYSByZWRvIGNvbW1hbmQgY2Nh
biBiZSBwZXJmb3JtZWQgYXQgdGhlIGxvY2F0aW9uIG9mCisgKiBAaGl0X3Rlc3RfcmVzdWx0Lgor
ICoKKyAqIFJldHVybnM6ICVUUlVFIGlmIHJlZG8gaXMgYXZhaWxhYmxlCisgKgorICogU2luY2U6
IDIuMjAKKyAqLworZ2Jvb2xlYW4gd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9pc19yZWRvX2F2YWls
YWJsZShXZWJLaXRIaXRUZXN0UmVzdWx0KiBoaXRUZXN0UmVzdWx0KQoreworICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsKFdFQktJVF9JU19ISVRfVEVTVF9SRVNVTFQoaGl0VGVzdFJlc3VsdCksIEZB
TFNFKTsKKworICAgIHJldHVybiBoaXRUZXN0UmVzdWx0LT5wcml2LT5hdmFpbGFibGVFZGl0Q29t
bWFuZHMuY29udGFpbnMoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6QXZhaWxhYmxlRWRpdENvbW1h
bmRzOjpSZWRvKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkhpdFRl
c3RSZXN1bHREYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHRE
YXRhLmNwcAppbmRleCBmM2U2YTVlN2I0NmRhZGVlNzdkM2Q5MDVlNjJhYzI0MDc5OGMyNjYzLi4w
NjlkNmFiNjc1YWVkYzY1MGI5MzcyY2VhMWZjNTk5NDJkY2I1NzcyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0YS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuY3BwCkBAIC01Myw4ICs1Myw4IEBAIFdl
YkhpdFRlc3RSZXN1bHREYXRhOjpXZWJIaXRUZXN0UmVzdWx0RGF0YShjb25zdCBXZWJDb3JlOjpI
aXRUZXN0UmVzdWx0JiBoaXRUZXN0CiAgICAgLCBpc1NlbGVjdGVkKGhpdFRlc3RSZXN1bHQuaXNT
ZWxlY3RlZCgpKQogICAgICwgaXNUZXh0Tm9kZShoaXRUZXN0UmVzdWx0LmlubmVyTm9kZSgpICYm
IGhpdFRlc3RSZXN1bHQuaW5uZXJOb2RlKCktPmlzVGV4dE5vZGUoKSkKICAgICAsIGlzT3ZlclRl
eHRJbnNpZGVGb3JtQ29udHJvbEVsZW1lbnQoaGl0VGVzdFJlc3VsdC5pc092ZXJUZXh0SW5zaWRl
Rm9ybUNvbnRyb2xFbGVtZW50KCkpCi0gICAgLCBhbGxvd3NDb3B5KGhpdFRlc3RSZXN1bHQuYWxs
b3dzQ29weSgpKQogICAgICwgaXNEb3dubG9hZGFibGVNZWRpYShoaXRUZXN0UmVzdWx0LmlzRG93
bmxvYWRhYmxlTWVkaWEoKSkKKyAgICAsIGF2YWlsYWJsZUVkaXRDb21tYW5kcyhoaXRUZXN0UmVz
dWx0LmF2YWlsYWJsZUVkaXRDb21tYW5kcygpKQogICAgICwgaW1hZ2VTaXplKDApCiB7CiB9CkBA
IC03Myw4ICs3Myw4IEBAIFdlYkhpdFRlc3RSZXN1bHREYXRhOjpXZWJIaXRUZXN0UmVzdWx0RGF0
YShjb25zdCBXZWJDb3JlOjpIaXRUZXN0UmVzdWx0JiBoaXRUZXN0CiAgICAgLCBpc1NlbGVjdGVk
KGhpdFRlc3RSZXN1bHQuaXNTZWxlY3RlZCgpKQogICAgICwgaXNUZXh0Tm9kZShoaXRUZXN0UmVz
dWx0LmlubmVyTm9kZSgpICYmIGhpdFRlc3RSZXN1bHQuaW5uZXJOb2RlKCktPmlzVGV4dE5vZGUo
KSkKICAgICAsIGlzT3ZlclRleHRJbnNpZGVGb3JtQ29udHJvbEVsZW1lbnQoaGl0VGVzdFJlc3Vs
dC5pc092ZXJUZXh0SW5zaWRlRm9ybUNvbnRyb2xFbGVtZW50KCkpCi0gICAgLCBhbGxvd3NDb3B5
KGhpdFRlc3RSZXN1bHQuYWxsb3dzQ29weSgpKQogICAgICwgaXNEb3dubG9hZGFibGVNZWRpYSho
aXRUZXN0UmVzdWx0LmlzRG93bmxvYWRhYmxlTWVkaWEoKSkKKyAgICAsIGF2YWlsYWJsZUVkaXRD
b21tYW5kcyhoaXRUZXN0UmVzdWx0LmF2YWlsYWJsZUVkaXRDb21tYW5kcygpKQogICAgICwgaW1h
Z2VTaXplKDApCiB7CiAgICAgaWYgKCFpbmNsdWRlSW1hZ2UpCkBAIC0xMDksOCArMTA5LDggQEAg
dm9pZCBXZWJIaXRUZXN0UmVzdWx0RGF0YTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKICAgICBlbmNvZGVyIDw8IGlzU2VsZWN0ZWQ7CiAgICAgZW5jb2RlciA8PCBpc1RleHRO
b2RlOwogICAgIGVuY29kZXIgPDwgaXNPdmVyVGV4dEluc2lkZUZvcm1Db250cm9sRWxlbWVudDsK
LSAgICBlbmNvZGVyIDw8IGFsbG93c0NvcHk7CiAgICAgZW5jb2RlciA8PCBpc0Rvd25sb2FkYWJs
ZU1lZGlhOworICAgIGVuY29kZXIgPDwgYXZhaWxhYmxlRWRpdENvbW1hbmRzOwogICAgIGVuY29k
ZXIgPDwgbG9va3VwVGV4dDsKICAgICBlbmNvZGVyIDw8IGRpY3Rpb25hcnlQb3B1cEluZm87CiAK
QEAgLTE0Myw4ICsxNDMsOCBAQCBib29sIFdlYkhpdFRlc3RSZXN1bHREYXRhOjpkZWNvZGUoSVBD
OjpEZWNvZGVyJiBkZWNvZGVyLCBXZWJIaXRUZXN0UmVzdWx0RGF0YSYgaAogICAgICAgICB8fCAh
ZGVjb2Rlci5kZWNvZGUoaGl0VGVzdFJlc3VsdERhdGEuaXNTZWxlY3RlZCkKICAgICAgICAgfHwg
IWRlY29kZXIuZGVjb2RlKGhpdFRlc3RSZXN1bHREYXRhLmlzVGV4dE5vZGUpCiAgICAgICAgIHx8
ICFkZWNvZGVyLmRlY29kZShoaXRUZXN0UmVzdWx0RGF0YS5pc092ZXJUZXh0SW5zaWRlRm9ybUNv
bnRyb2xFbGVtZW50KQotICAgICAgICB8fCAhZGVjb2Rlci5kZWNvZGUoaGl0VGVzdFJlc3VsdERh
dGEuYWxsb3dzQ29weSkKICAgICAgICAgfHwgIWRlY29kZXIuZGVjb2RlKGhpdFRlc3RSZXN1bHRE
YXRhLmlzRG93bmxvYWRhYmxlTWVkaWEpCisgICAgICAgIHx8ICFkZWNvZGVyLmRlY29kZShoaXRU
ZXN0UmVzdWx0RGF0YS5hdmFpbGFibGVFZGl0Q29tbWFuZHMpCiAgICAgICAgIHx8ICFkZWNvZGVy
LmRlY29kZShoaXRUZXN0UmVzdWx0RGF0YS5sb29rdXBUZXh0KQogICAgICAgICB8fCAhZGVjb2Rl
ci5kZWNvZGUoaGl0VGVzdFJlc3VsdERhdGEuZGljdGlvbmFyeVBvcHVwSW5mbykpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkhpdFRl
c3RSZXN1bHREYXRhLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0
YS5oCmluZGV4IDMyNDY4YWJhOWM3NTYzMTc5MGE4MDBjODJiMThlMGQwMGFlZDkwYzUuLjk0ZGRi
YTI1MzcyYjI2NGE4ZTk3NWRhMWEzNmU4YTc1OWI0OTRiNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHREYXRhLmgKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuaApAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUg
IlNoYXJlZE1lbW9yeS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRGljdGlvbmFyeVBvcHVwSW5mby5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRQb2ludC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSGl0
VGVzdFJlc3VsdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUGFnZU92ZXJsYXkuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAtNTcsOSAr
NTgsMTAgQEAgc3RydWN0IFdlYkhpdFRlc3RSZXN1bHREYXRhIHsKICAgICBib29sIGlzU2VsZWN0
ZWQ7CiAgICAgYm9vbCBpc1RleHROb2RlOwogICAgIGJvb2wgaXNPdmVyVGV4dEluc2lkZUZvcm1D
b250cm9sRWxlbWVudDsKLSAgICBib29sIGFsbG93c0NvcHk7CiAgICAgYm9vbCBpc0Rvd25sb2Fk
YWJsZU1lZGlhOwogCisgICAgT3B0aW9uU2V0PFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OkF2YWls
YWJsZUVkaXRDb21tYW5kcz4gYXZhaWxhYmxlRWRpdENvbW1hbmRzOworCiAgICAgU3RyaW5nIGxv
b2t1cFRleHQ7CiAgICAgUmVmUHRyPFdlYktpdDo6U2hhcmVkTWVtb3J5PiBpbWFnZVNoYXJlZE1l
bW9yeTsKICAgICB1aW50NjRfdCBpbWFnZVNpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJSGl0VGVzdFJlc3VsdC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSUhpdFRlc3RSZXN1bHQuaAppbmRleCBjZDkzOWM5YjBhODdjY2MxYzY0N2JhYTJh
OGE5MjcwNjlkYThmNmQ0Li43MGM3ZDE2MzEzMzcxODllOTU3ZTEwMGUxZGQ3ZmU3NGE0OTgyN2Q1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSGl0VGVzdFJlc3Vs
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElIaXRUZXN0UmVzdWx0LmgK
QEAgLTcwLDcgKzcwLDExIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNPdmVyVGV4dEluc2lkZUZv
cm1Db250cm9sRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5pc092ZXJUZXh0SW5zaWRl
Rm9ybUNvbnRyb2xFbGVtZW50OyB9CiAKLSAgICBib29sIGFsbG93c0NvcHkoKSBjb25zdCB7IHJl
dHVybiBtX2RhdGEuYWxsb3dzQ29weTsgfQorICAgIGJvb2wgYWxsb3dzQ3V0KCkgY29uc3QgeyBy
ZXR1cm4gbV9kYXRhLmF2YWlsYWJsZUVkaXRDb21tYW5kcy5jb250YWlucyhXZWJDb3JlOjpIaXRU
ZXN0UmVzdWx0OjpBdmFpbGFibGVFZGl0Q29tbWFuZHM6OkN1dCk7IH0KKyAgICBib29sIGFsbG93
c0NvcHkoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuYXZhaWxhYmxlRWRpdENvbW1hbmRzLmNvbnRh
aW5zKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OkF2YWlsYWJsZUVkaXRDb21tYW5kczo6Q29weSk7
IH0KKyAgICBib29sIGFsbG93c1Bhc3RlKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmF2YWlsYWJs
ZUVkaXRDb21tYW5kcy5jb250YWlucyhXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjpBdmFpbGFibGVF
ZGl0Q29tbWFuZHM6OlBhc3RlKTsgfQorICAgIGJvb2wgYWxsb3dzVW5kbygpIGNvbnN0IHsgcmV0
dXJuIG1fZGF0YS5hdmFpbGFibGVFZGl0Q29tbWFuZHMuY29udGFpbnMoV2ViQ29yZTo6SGl0VGVz
dFJlc3VsdDo6QXZhaWxhYmxlRWRpdENvbW1hbmRzOjpVbmRvKTsgfQorICAgIGJvb2wgYWxsb3dz
UmVkbygpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5hdmFpbGFibGVFZGl0Q29tbWFuZHMuY29udGFp
bnMoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6QXZhaWxhYmxlRWRpdENvbW1hbmRzOjpSZWRvKTsg
fQogCiAgICAgYm9vbCBpc0Rvd25sb2FkYWJsZU1lZGlhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRh
LmlzRG93bmxvYWRhYmxlTWVkaWE7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRIaXRUZXN0UmVzdWx0LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdEhpdFRlc3RSZXN1bHQuaAppbmRleCA3MTg1NzNiOTAwNGY3MGE1
ZjJlMWJiNDBlZWI1MGI3MmU3ZWZmMjVmLi5lZGVlYjYyYTk5MGE4ZmFhYjY3ZjcwN2MzYzE0NGEz
MmUwMzgzYzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdEhpdFRlc3RSZXN1bHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdEhpdFRlc3RSZXN1bHQuaApAQCAtMTE3LDYgKzExNywyMSBAQCB3ZWJraXRfaGl0X3Rl
c3RfcmVzdWx0X2dldF9tZWRpYV91cmkgICAgICAgIChXZWJLaXRIaXRUZXN0UmVzdWx0ICpoaXRf
dGVzdF9yZXN1bAogV0VCS0lUX0FQSSBnYm9vbGVhbgogd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9j
b250ZXh0X2lzX3Njcm9sbGJhciAoV2ViS2l0SGl0VGVzdFJlc3VsdCAqaGl0X3Rlc3RfcmVzdWx0
KTsKIAorV0VCS0lUX0FQSSBnYm9vbGVhbgord2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9pc19jdXRf
YXZhaWxhYmxlICAgICAoV2ViS2l0SGl0VGVzdFJlc3VsdCAqaGl0X3Rlc3RfcmVzdWx0KTsKKwor
V0VCS0lUX0FQSSBnYm9vbGVhbgord2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9pc19jb3B5X2F2YWls
YWJsZSAgICAoV2ViS2l0SGl0VGVzdFJlc3VsdCAqaGl0X3Rlc3RfcmVzdWx0KTsKKworV0VCS0lU
X0FQSSBnYm9vbGVhbgord2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9pc19wYXN0ZV9hdmFpbGFibGUg
ICAoV2ViS2l0SGl0VGVzdFJlc3VsdCAqaGl0X3Rlc3RfcmVzdWx0KTsKKworV0VCS0lUX0FQSSBn
Ym9vbGVhbgord2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9pc191bmRvX2F2YWlsYWJsZSAgICAoV2Vi
S2l0SGl0VGVzdFJlc3VsdCAqaGl0X3Rlc3RfcmVzdWx0KTsKKworV0VCS0lUX0FQSSBnYm9vbGVh
bgord2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9pc19yZWRvX2F2YWlsYWJsZSAgICAoV2ViS2l0SGl0
VGVzdFJlc3VsdCAqaGl0X3Rlc3RfcmVzdWx0KTsKKwogR19FTkRfREVDTFMKIAogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0
ay00LjAtc2VjdGlvbnMudHh0IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2Nz
L3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dAppbmRleCBhMTNjMzJkMmI4ZWI0ZDdhZGM3MDI3
ZDIwNjE2YWZlNDY2YTU0MTdiLi4yODUwYzMzMjA1YmUyMWQxNWY4N2JiZmJhMDIyOTc2NTE2YWJj
OTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Vi
a2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKQEAgLTc5NiwxMiArNzk2LDE3
IEBAIHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19pbWFnZQogd2Via2l0X2hpdF90
ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX21lZGlhCiB3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRl
eHRfaXNfZWRpdGFibGUKIHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19zZWxlY3Rp
b24KK3dlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19zY3JvbGxiYXIKIHdlYmtpdF9o
aXRfdGVzdF9yZXN1bHRfZ2V0X2xpbmtfdXJpCiB3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2dldF9s
aW5rX3RpdGxlCiB3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2dldF9saW5rX2xhYmVsCiB3ZWJraXRf
aGl0X3Rlc3RfcmVzdWx0X2dldF9pbWFnZV91cmkKIHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfZ2V0
X21lZGlhX3VyaQotd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX3Njcm9sbGJhcgor
d2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9pc19jdXRfYXZhaWxhYmxlCit3ZWJraXRfaGl0X3Rlc3Rf
cmVzdWx0X2lzX2NvcHlfYXZhaWxhYmxlCit3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2lzX3Bhc3Rl
X2F2YWlsYWJsZQord2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9pc191bmRvX2F2YWlsYWJsZQord2Vi
a2l0X2hpdF90ZXN0X3Jlc3VsdF9pc19yZWRvX2F2YWlsYWJsZQogCiA8U1VCU0VDVElPTiBTdGFu
ZGFyZD4KIFdlYktpdEhpdFRlc3RSZXN1bHRDbGFzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRIaXRUZXN0UmVzdWx0LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdEhpdFRlc3RSZXN1bHQuaAppbmRleCA2NzlhYTA3NjBl
NDU2MzJiNjcxYTc3MDI1MjI3NzM4OTQyNGRjZDI2Li5iYjU3ZGI0M2Q1MTIxYThmM2U0ZDQ5YTZl
NDM1ZTU1MTUzNDhlMTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
d3BlL1dlYktpdEhpdFRlc3RSZXN1bHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvd3BlL1dlYktpdEhpdFRlc3RSZXN1bHQuaApAQCAtMTE3LDYgKzExNywyMSBAQCB3ZWJraXRf
aGl0X3Rlc3RfcmVzdWx0X2dldF9tZWRpYV91cmkgICAgICAgIChXZWJLaXRIaXRUZXN0UmVzdWx0
ICpoaXRfdGVzdF9yZXN1bAogV0VCS0lUX0FQSSBnYm9vbGVhbgogd2Via2l0X2hpdF90ZXN0X3Jl
c3VsdF9jb250ZXh0X2lzX3Njcm9sbGJhciAoV2ViS2l0SGl0VGVzdFJlc3VsdCAqaGl0X3Rlc3Rf
cmVzdWx0KTsKIAorV0VCS0lUX0FQSSBnYm9vbGVhbgord2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9p
c19jdXRfYXZhaWxhYmxlICAgICAoV2ViS2l0SGl0VGVzdFJlc3VsdCAqaGl0X3Rlc3RfcmVzdWx0
KTsKKworV0VCS0lUX0FQSSBnYm9vbGVhbgord2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9pc19jb3B5
X2F2YWlsYWJsZSAgICAoV2ViS2l0SGl0VGVzdFJlc3VsdCAqaGl0X3Rlc3RfcmVzdWx0KTsKKwor
V0VCS0lUX0FQSSBnYm9vbGVhbgord2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9pc19wYXN0ZV9hdmFp
bGFibGUgICAoV2ViS2l0SGl0VGVzdFJlc3VsdCAqaGl0X3Rlc3RfcmVzdWx0KTsKKworV0VCS0lU
X0FQSSBnYm9vbGVhbgord2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9pc191bmRvX2F2YWlsYWJsZSAg
ICAoV2ViS2l0SGl0VGVzdFJlc3VsdCAqaGl0X3Rlc3RfcmVzdWx0KTsKKworV0VCS0lUX0FQSSBn
Ym9vbGVhbgord2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9pc19yZWRvX2F2YWlsYWJsZSAgICAoV2Vi
S2l0SGl0VGVzdFJlc3VsdCAqaGl0X3Rlc3RfcmVzdWx0KTsKKwogR19FTkRfREVDTFMKIAogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2Vi
UGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdl
TWFjLm1tCmluZGV4IDM2YWY1YTk2Zjg0MWQ1NzA3Nzk2MWIyNTlhYjk0MjI1YTNkNmVhZjAuLjhh
OGU3OWI4Y2E0OGEyMzRiYjk0YTJiZGVkYjkwMTMwYmVjOTJjNGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCkBAIC0xMDgwLDcg
KzEwODAsNyBAQCB2b2lkIFdlYlBhZ2U6OnBlcmZvcm1JbW1lZGlhdGVBY3Rpb25IaXRUZXN0QXRM
b2NhdGlvbihXZWJDb3JlOjpGbG9hdFBvaW50IGxvY2F0aQogICAgICAgICAgICAgICAgIGltbWVk
aWF0ZUFjdGlvblJlc3VsdC5sb29rdXBUZXh0ID0gc2VsZWN0ZWRUZXh0OwogICAgICAgICAgICAg
ICAgIGltbWVkaWF0ZUFjdGlvblJlc3VsdC5pc1RleHROb2RlID0gdHJ1ZTsKICAgICAgICAgICAg
ICAgICBpbW1lZGlhdGVBY3Rpb25SZXN1bHQuaXNTZWxlY3RlZCA9IHRydWU7Ci0gICAgICAgICAg
ICAgICAgaW1tZWRpYXRlQWN0aW9uUmVzdWx0LmFsbG93c0NvcHkgPSB0cnVlOworICAgICAgICAg
ICAgICAgIGltbWVkaWF0ZUFjdGlvblJlc3VsdC5hdmFpbGFibGVFZGl0Q29tbWFuZHMgfD0gV2Vi
Q29yZTo6SGl0VGVzdFJlc3VsdDo6QXZhaWxhYmxlRWRpdENvbW1hbmRzOjpDb3B5OwogCiAgICAg
ICAgICAgICAgICAgaW1tZWRpYXRlQWN0aW9uUmVzdWx0LmRpY3Rpb25hcnlQb3B1cEluZm8gPSBk
aWN0aW9uYXJ5UG9wdXBJbmZvRm9yU2VsZWN0aW9uSW5QREZQbHVnaW4oc2VsZWN0aW9uLCAqcGRm
UHVnaW4sICZvcHRpb25zLCBUZXh0SW5kaWNhdG9yUHJlc2VudGF0aW9uVHJhbnNpdGlvbjo6RmFk
ZUluKTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xz
L0NoYW5nZUxvZwppbmRleCAxMWZkOGYyYWQ4NzgyMDEwMThhNWFjMWJjOWQ5MjU2MThhYjE1MGQ4
Li5mYmQ4YmU2MDU1N2I2MDA1ZTg4MTM0ZGQ1NDUwOWY4NTY2NTk5NjZlIDEwMDY0NAotLS0gYS9U
b29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIw
MTctMDktMjEgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgorCisg
ICAgICAgIFtHVEtdIEV4cG9zZSBlZGl0aW5nIGNvbW1hbmQgYXZhaWxhYmlsaXR5IGluIFdlYktp
dEhpdFRlc3RSZXN1bHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2ODIxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRlc3QgdGhlIG5ldyBBUEkgaW4gVGVzdENvbnRleHRNZW51LgorCisgICAgICAgIFNv
bWUgdXNlZnVsIGNvZGUgaXMgbW92ZWQgZnJvbSBUZXN0V2ViVmlld0VkaXRvciB0byBXZWJWaWV3
VGVzdCBmb3IgcmV1c2UuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0
ay9UZXN0Q29udGV4dE1lbnUuY3BwOgorICAgICAgICAocHJlcGFyZUNvbnRleHRNZW51VGVzdFZp
ZXcpOgorICAgICAgICAoc2VsZWN0VGV4dEluRWRpdGFibGUpOgorICAgICAgICAod2FpdFVudGls
RWRpdGFibGVDb250ZW50TWF0Y2hlcyk6CisgICAgICAgICh0ZXN0Q29udGV4dE1lbnVEZWZhdWx0
TWVudSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvVGVzdFdlYlZp
ZXdFZGl0b3IuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dl
YlZpZXdUZXN0LmNwcDoKKyAgICAgICAgKFdlYlZpZXdUZXN0Ojp3YWl0VW50aWxUZXh0SXNBdmFp
bGFibGVJbkNsaXBib2FyZCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdM
aWIvV2ViVmlld1Rlc3QuaDoKKwogMjAxNy0wOS0yMCAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jh
cm9AYXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZSB0ZXN0MjYyIHRlc3RzCkBAIC0zMCw3ICs1
MSw2IEBACiAgICAgICAgICgtW1JlZGlyZWN0ZWREb3dubG9hZERlbGVnYXRlIF9kb3dubG9hZERp
ZEZpbmlzaDpdKToKICAgICAgICAgKFRFU1QpOgogCi0+Pj4+Pj4+IC5yMjIyMzA5CiAyMDE3LTA5
LTIwICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgQWRkIGluZnJhc3RydWN0dXJlIGZvciBhZGRpbmcgY3VzdG9tIGhlYWRlcnMgdG8gcmVxdWVz
dHMgcGVyIHdlYnNpdGUKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0R3RrL1Rlc3RDb250ZXh0TWVudS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdEd0ay9UZXN0Q29udGV4dE1lbnUuY3BwCmluZGV4IDdiZDcwOTcxOWE3MGZhZjFlZmYyYzlj
MTdiMDJjYzI0ZmNkZWFhYTEuLjFjNDgyNWQ5NzdjZDMxZTM5MmE1ODU5ZGQwZDQ3NzRlZGRmY2Vl
NjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL1Rlc3RD
b250ZXh0TWVudS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsv
VGVzdENvbnRleHRNZW51LmNwcApAQCAtMTksNiArMTksNyBAQAogCiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiV2ViVmlld1Rlc3QuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9nbGli
L0dSZWZQdHIuaD4KIApAQCAtMjk2LDE0ICsyOTcsMTIgQEAgcHVibGljOgogICAgICAgICBWaWRl
bywKICAgICAgICAgQXVkaW8sCiAgICAgICAgIEVkaXRhYmxlLAotICAgICAgICBTZWxlY3Rpb24K
KyAgICAgICAgU2VsZWN0aW9uLAorICAgICAgICBFZGl0YWJsZVdpdGhTZWxlY3Rpb24sCisgICAg
ICAgIEVkaXRhYmxlQWxsb3dzVW5kbywKKyAgICAgICAgRWRpdGFibGVBbGxvd3NSZWRvCiAgICAg
fTsKIAotICAgIENvbnRleHRNZW51RGVmYXVsdFRlc3QoKQotICAgICAgICA6IG1fZXhwZWN0ZWRN
ZW51VHlwZShOYXZpZ2F0aW9uKQotICAgIHsKLSAgICB9Ci0KICAgICBib29sIGNvbnRleHRNZW51
KFdlYktpdENvbnRleHRNZW51KiBjb250ZXh0TWVudSwgR2RrRXZlbnQqIGV2ZW50LCBXZWJLaXRI
aXRUZXN0UmVzdWx0KiBoaXRUZXN0UmVzdWx0KQogICAgIHsKICAgICAgICAgR0xpc3QqIGl0ZXIg
PSB3ZWJraXRfY29udGV4dF9tZW51X2dldF9pdGVtcyhjb250ZXh0TWVudSk7CkBAIC0zMTUsNiAr
MzE0LDExIEBAIHB1YmxpYzoKICAgICAgICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3Rf
cmVzdWx0X2NvbnRleHRfaXNfbWVkaWEoaGl0VGVzdFJlc3VsdCkpOwogICAgICAgICAgICAgZ19h
c3NlcnQoIXdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19lZGl0YWJsZShoaXRUZXN0
UmVzdWx0KSk7CiAgICAgICAgICAgICBnX2Fzc2VydCghd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9j
b250ZXh0X2lzX3NlbGVjdGlvbihoaXRUZXN0UmVzdWx0KSk7CisgICAgICAgICAgICBnX2Fzc2Vy
dCghd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9pc19jdXRfYXZhaWxhYmxlKGhpdFRlc3RSZXN1bHQp
KTsKKyAgICAgICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2lzX2NvcHlf
YXZhaWxhYmxlKGhpdFRlc3RSZXN1bHQpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRf
aGl0X3Rlc3RfcmVzdWx0X2lzX3Bhc3RlX2F2YWlsYWJsZShoaXRUZXN0UmVzdWx0KSk7CisgICAg
ICAgICAgICBnX2Fzc2VydCghd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9pc191bmRvX2F2YWlsYWJs
ZShoaXRUZXN0UmVzdWx0KSk7CisgICAgICAgICAgICBnX2Fzc2VydCghd2Via2l0X2hpdF90ZXN0
X3Jlc3VsdF9pc19yZWRvX2F2YWlsYWJsZShoaXRUZXN0UmVzdWx0KSk7CiAgICAgICAgICAgICBp
dGVyID0gY2hlY2tDdXJyZW50SXRlbUlzU3RvY2tBY3Rpb25BbmRHZXROZXh0KGl0ZXIsIFdFQktJ
VF9DT05URVhUX01FTlVfQUNUSU9OX0dPX0JBQ0ssIFZpc2libGUpOwogICAgICAgICAgICAgaXRl
ciA9IGNoZWNrQ3VycmVudEl0ZW1Jc1N0b2NrQWN0aW9uQW5kR2V0TmV4dChpdGVyLCBXRUJLSVRf
Q09OVEVYVF9NRU5VX0FDVElPTl9HT19GT1JXQVJELCBWaXNpYmxlKTsKICAgICAgICAgICAgIGl0
ZXIgPSBjaGVja0N1cnJlbnRJdGVtSXNTdG9ja0FjdGlvbkFuZEdldE5leHQoaXRlciwgV0VCS0lU
X0NPTlRFWFRfTUVOVV9BQ1RJT05fU1RPUCwgVmlzaWJsZSk7CkBAIC0zMjYsNiArMzMwLDExIEBA
IHB1YmxpYzoKICAgICAgICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2Nv
bnRleHRfaXNfbWVkaWEoaGl0VGVzdFJlc3VsdCkpOwogICAgICAgICAgICAgZ19hc3NlcnQoIXdl
YmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19lZGl0YWJsZShoaXRUZXN0UmVzdWx0KSk7
CiAgICAgICAgICAgICBnX2Fzc2VydCghd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lz
X3NlbGVjdGlvbihoaXRUZXN0UmVzdWx0KSk7CisgICAgICAgICAgICBnX2Fzc2VydCghd2Via2l0
X2hpdF90ZXN0X3Jlc3VsdF9pc19jdXRfYXZhaWxhYmxlKGhpdFRlc3RSZXN1bHQpKTsKKyAgICAg
ICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2lzX2NvcHlfYXZhaWxhYmxl
KGhpdFRlc3RSZXN1bHQpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3Rf
cmVzdWx0X2lzX3Bhc3RlX2F2YWlsYWJsZShoaXRUZXN0UmVzdWx0KSk7CisgICAgICAgICAgICBn
X2Fzc2VydCghd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9pc191bmRvX2F2YWlsYWJsZShoaXRUZXN0
UmVzdWx0KSk7CisgICAgICAgICAgICBnX2Fzc2VydCghd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9p
c19yZWRvX2F2YWlsYWJsZShoaXRUZXN0UmVzdWx0KSk7CiAgICAgICAgICAgICBpdGVyID0gY2hl
Y2tDdXJyZW50SXRlbUlzU3RvY2tBY3Rpb25BbmRHZXROZXh0KGl0ZXIsIFdFQktJVF9DT05URVhU
X01FTlVfQUNUSU9OX09QRU5fTElOSywgVmlzaWJsZSB8IEVuYWJsZWQpOwogICAgICAgICAgICAg
aXRlciA9IGNoZWNrQ3VycmVudEl0ZW1Jc1N0b2NrQWN0aW9uQW5kR2V0TmV4dChpdGVyLCBXRUJL
SVRfQ09OVEVYVF9NRU5VX0FDVElPTl9PUEVOX0xJTktfSU5fTkVXX1dJTkRPVywgVmlzaWJsZSB8
IEVuYWJsZWQpOwogICAgICAgICAgICAgaXRlciA9IGNoZWNrQ3VycmVudEl0ZW1Jc1N0b2NrQWN0
aW9uQW5kR2V0TmV4dChpdGVyLCBXRUJLSVRfQ09OVEVYVF9NRU5VX0FDVElPTl9ET1dOTE9BRF9M
SU5LX1RPX0RJU0ssIFZpc2libGUgfCBFbmFibGVkKTsKQEAgLTMzNyw2ICszNDYsMTEgQEAgcHVi
bGljOgogICAgICAgICAgICAgZ19hc3NlcnQoIXdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4
dF9pc19tZWRpYShoaXRUZXN0UmVzdWx0KSk7CiAgICAgICAgICAgICBnX2Fzc2VydCghd2Via2l0
X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2VkaXRhYmxlKGhpdFRlc3RSZXN1bHQpKTsKICAg
ICAgICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfc2Vs
ZWN0aW9uKGhpdFRlc3RSZXN1bHQpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRfaGl0
X3Rlc3RfcmVzdWx0X2lzX2N1dF9hdmFpbGFibGUoaGl0VGVzdFJlc3VsdCkpOworICAgICAgICAg
ICAgZ19hc3NlcnQoIXdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfaXNfY29weV9hdmFpbGFibGUoaGl0
VGVzdFJlc3VsdCkpOworICAgICAgICAgICAgZ19hc3NlcnQoIXdlYmtpdF9oaXRfdGVzdF9yZXN1
bHRfaXNfcGFzdGVfYXZhaWxhYmxlKGhpdFRlc3RSZXN1bHQpKTsKKyAgICAgICAgICAgIGdfYXNz
ZXJ0KCF3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2lzX3VuZG9fYXZhaWxhYmxlKGhpdFRlc3RSZXN1
bHQpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2lzX3Jl
ZG9fYXZhaWxhYmxlKGhpdFRlc3RSZXN1bHQpKTsKICAgICAgICAgICAgIGl0ZXIgPSBjaGVja0N1
cnJlbnRJdGVtSXNTdG9ja0FjdGlvbkFuZEdldE5leHQoaXRlciwgV0VCS0lUX0NPTlRFWFRfTUVO
VV9BQ1RJT05fT1BFTl9JTUFHRV9JTl9ORVdfV0lORE9XLCBWaXNpYmxlIHwgRW5hYmxlZCk7CiAg
ICAgICAgICAgICBpdGVyID0gY2hlY2tDdXJyZW50SXRlbUlzU3RvY2tBY3Rpb25BbmRHZXROZXh0
KGl0ZXIsIFdFQktJVF9DT05URVhUX01FTlVfQUNUSU9OX0RPV05MT0FEX0lNQUdFX1RPX0RJU0ss
IFZpc2libGUgfCBFbmFibGVkKTsKICAgICAgICAgICAgIGl0ZXIgPSBjaGVja0N1cnJlbnRJdGVt
SXNTdG9ja0FjdGlvbkFuZEdldE5leHQoaXRlciwgV0VCS0lUX0NPTlRFWFRfTUVOVV9BQ1RJT05f
Q09QWV9JTUFHRV9UT19DTElQQk9BUkQsIFZpc2libGUgfCBFbmFibGVkKTsKQEAgLTM0OCw2ICsz
NjIsMTEgQEAgcHVibGljOgogICAgICAgICAgICAgZ19hc3NlcnQoIXdlYmtpdF9oaXRfdGVzdF9y
ZXN1bHRfY29udGV4dF9pc19tZWRpYShoaXRUZXN0UmVzdWx0KSk7CiAgICAgICAgICAgICBnX2Fz
c2VydCghd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2VkaXRhYmxlKGhpdFRlc3RS
ZXN1bHQpKTsKICAgICAgICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2Nv
bnRleHRfaXNfc2VsZWN0aW9uKGhpdFRlc3RSZXN1bHQpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0
KCF3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2lzX2N1dF9hdmFpbGFibGUoaGl0VGVzdFJlc3VsdCkp
OworICAgICAgICAgICAgZ19hc3NlcnQoIXdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfaXNfY29weV9h
dmFpbGFibGUoaGl0VGVzdFJlc3VsdCkpOworICAgICAgICAgICAgZ19hc3NlcnQoIXdlYmtpdF9o
aXRfdGVzdF9yZXN1bHRfaXNfcGFzdGVfYXZhaWxhYmxlKGhpdFRlc3RSZXN1bHQpKTsKKyAgICAg
ICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2lzX3VuZG9fYXZhaWxhYmxl
KGhpdFRlc3RSZXN1bHQpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3Rf
cmVzdWx0X2lzX3JlZG9fYXZhaWxhYmxlKGhpdFRlc3RSZXN1bHQpKTsKICAgICAgICAgICAgIGl0
ZXIgPSBjaGVja0N1cnJlbnRJdGVtSXNTdG9ja0FjdGlvbkFuZEdldE5leHQoaXRlciwgV0VCS0lU
X0NPTlRFWFRfTUVOVV9BQ1RJT05fT1BFTl9MSU5LLCBWaXNpYmxlIHwgRW5hYmxlZCk7CiAgICAg
ICAgICAgICBpdGVyID0gY2hlY2tDdXJyZW50SXRlbUlzU3RvY2tBY3Rpb25BbmRHZXROZXh0KGl0
ZXIsIFdFQktJVF9DT05URVhUX01FTlVfQUNUSU9OX09QRU5fTElOS19JTl9ORVdfV0lORE9XLCBW
aXNpYmxlIHwgRW5hYmxlZCk7CiAgICAgICAgICAgICBpdGVyID0gY2hlY2tDdXJyZW50SXRlbUlz
U3RvY2tBY3Rpb25BbmRHZXROZXh0KGl0ZXIsIFdFQktJVF9DT05URVhUX01FTlVfQUNUSU9OX0RP
V05MT0FEX0xJTktfVE9fRElTSywgVmlzaWJsZSB8IEVuYWJsZWQpOwpAQCAtMzY0LDYgKzM4Mywx
MSBAQCBwdWJsaWM6CiAgICAgICAgICAgICBnX2Fzc2VydCh3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0
X2NvbnRleHRfaXNfbWVkaWEoaGl0VGVzdFJlc3VsdCkpOwogICAgICAgICAgICAgZ19hc3NlcnQo
IXdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19lZGl0YWJsZShoaXRUZXN0UmVzdWx0
KSk7CiAgICAgICAgICAgICBnX2Fzc2VydCghd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0
X2lzX3NlbGVjdGlvbihoaXRUZXN0UmVzdWx0KSk7CisgICAgICAgICAgICBnX2Fzc2VydCghd2Vi
a2l0X2hpdF90ZXN0X3Jlc3VsdF9pc19jdXRfYXZhaWxhYmxlKGhpdFRlc3RSZXN1bHQpKTsKKyAg
ICAgICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2lzX2NvcHlfYXZhaWxh
YmxlKGhpdFRlc3RSZXN1bHQpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRfaGl0X3Rl
c3RfcmVzdWx0X2lzX3Bhc3RlX2F2YWlsYWJsZShoaXRUZXN0UmVzdWx0KSk7CisgICAgICAgICAg
ICBnX2Fzc2VydCghd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9pc191bmRvX2F2YWlsYWJsZShoaXRU
ZXN0UmVzdWx0KSk7CisgICAgICAgICAgICBnX2Fzc2VydCghd2Via2l0X2hpdF90ZXN0X3Jlc3Vs
dF9pc19yZWRvX2F2YWlsYWJsZShoaXRUZXN0UmVzdWx0KSk7CiAgICAgICAgICAgICBpdGVyID0g
Y2hlY2tDdXJyZW50SXRlbUlzU3RvY2tBY3Rpb25BbmRHZXROZXh0KGl0ZXIsIFdFQktJVF9DT05U
RVhUX01FTlVfQUNUSU9OX01FRElBX1BMQVksIFZpc2libGUgfCBFbmFibGVkKTsKICAgICAgICAg
ICAgIGl0ZXIgPSBjaGVja0N1cnJlbnRJdGVtSXNTdG9ja0FjdGlvbkFuZEdldE5leHQoaXRlciwg
V0VCS0lUX0NPTlRFWFRfTUVOVV9BQ1RJT05fTUVESUFfTVVURSwgVmlzaWJsZSk7CiAgICAgICAg
ICAgICBpdGVyID0gY2hlY2tDdXJyZW50SXRlbUlzU3RvY2tBY3Rpb25BbmRHZXROZXh0KGl0ZXIs
IFdFQktJVF9DT05URVhUX01FTlVfQUNUSU9OX1RPR0dMRV9NRURJQV9DT05UUk9MUywgVmlzaWJs
ZSB8IEVuYWJsZWQgfCBDaGVja2VkKTsKQEAgLTM4MCw2ICs0MDQsMTEgQEAgcHVibGljOgogICAg
ICAgICAgICAgZ19hc3NlcnQod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX21lZGlh
KGhpdFRlc3RSZXN1bHQpKTsKICAgICAgICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3Rf
cmVzdWx0X2NvbnRleHRfaXNfZWRpdGFibGUoaGl0VGVzdFJlc3VsdCkpOwogICAgICAgICAgICAg
Z19hc3NlcnQoIXdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19zZWxlY3Rpb24oaGl0
VGVzdFJlc3VsdCkpOworICAgICAgICAgICAgZ19hc3NlcnQoIXdlYmtpdF9oaXRfdGVzdF9yZXN1
bHRfaXNfY3V0X2F2YWlsYWJsZShoaXRUZXN0UmVzdWx0KSk7CisgICAgICAgICAgICBnX2Fzc2Vy
dCghd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9pc19jb3B5X2F2YWlsYWJsZShoaXRUZXN0UmVzdWx0
KSk7CisgICAgICAgICAgICBnX2Fzc2VydCghd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9pc19wYXN0
ZV9hdmFpbGFibGUoaGl0VGVzdFJlc3VsdCkpOworICAgICAgICAgICAgZ19hc3NlcnQoIXdlYmtp
dF9oaXRfdGVzdF9yZXN1bHRfaXNfdW5kb19hdmFpbGFibGUoaGl0VGVzdFJlc3VsdCkpOworICAg
ICAgICAgICAgZ19hc3NlcnQoIXdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfaXNfcmVkb19hdmFpbGFi
bGUoaGl0VGVzdFJlc3VsdCkpOwogICAgICAgICAgICAgaXRlciA9IGNoZWNrQ3VycmVudEl0ZW1J
c1N0b2NrQWN0aW9uQW5kR2V0TmV4dChpdGVyLCBXRUJLSVRfQ09OVEVYVF9NRU5VX0FDVElPTl9N
RURJQV9QTEFZLCBWaXNpYmxlIHwgRW5hYmxlZCk7CiAgICAgICAgICAgICBpdGVyID0gY2hlY2tD
dXJyZW50SXRlbUlzU3RvY2tBY3Rpb25BbmRHZXROZXh0KGl0ZXIsIFdFQktJVF9DT05URVhUX01F
TlVfQUNUSU9OX01FRElBX01VVEUsIFZpc2libGUpOwogICAgICAgICAgICAgaXRlciA9IGNoZWNr
Q3VycmVudEl0ZW1Jc1N0b2NrQWN0aW9uQW5kR2V0TmV4dChpdGVyLCBXRUJLSVRfQ09OVEVYVF9N
RU5VX0FDVElPTl9UT0dHTEVfTUVESUFfQ09OVFJPTFMsIFZpc2libGUgfCBFbmFibGVkIHwgQ2hl
Y2tlZCk7CkBAIC0zOTYsNiArNDI1LDExIEBAIHB1YmxpYzoKICAgICAgICAgICAgIGdfYXNzZXJ0
KCF3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfbWVkaWEoaGl0VGVzdFJlc3VsdCkp
OwogICAgICAgICAgICAgZ19hc3NlcnQod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lz
X2VkaXRhYmxlKGhpdFRlc3RSZXN1bHQpKTsKICAgICAgICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRf
aGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfc2VsZWN0aW9uKGhpdFRlc3RSZXN1bHQpKTsKKyAg
ICAgICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2lzX2N1dF9hdmFpbGFi
bGUoaGl0VGVzdFJlc3VsdCkpOworICAgICAgICAgICAgZ19hc3NlcnQoIXdlYmtpdF9oaXRfdGVz
dF9yZXN1bHRfaXNfY29weV9hdmFpbGFibGUoaGl0VGVzdFJlc3VsdCkpOworICAgICAgICAgICAg
Z19hc3NlcnQod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9pc19wYXN0ZV9hdmFpbGFibGUoaGl0VGVz
dFJlc3VsdCkpOworICAgICAgICAgICAgZ19hc3NlcnQoIXdlYmtpdF9oaXRfdGVzdF9yZXN1bHRf
aXNfdW5kb19hdmFpbGFibGUoaGl0VGVzdFJlc3VsdCkpOworICAgICAgICAgICAgZ19hc3NlcnQo
IXdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfaXNfcmVkb19hdmFpbGFibGUoaGl0VGVzdFJlc3VsdCkp
OwogICAgICAgICAgICAgaXRlciA9IGNoZWNrQ3VycmVudEl0ZW1Jc1N0b2NrQWN0aW9uQW5kR2V0
TmV4dChpdGVyLCBXRUJLSVRfQ09OVEVYVF9NRU5VX0FDVElPTl9DVVQsIFZpc2libGUpOwogICAg
ICAgICAgICAgaXRlciA9IGNoZWNrQ3VycmVudEl0ZW1Jc1N0b2NrQWN0aW9uQW5kR2V0TmV4dChp
dGVyLCBXRUJLSVRfQ09OVEVYVF9NRU5VX0FDVElPTl9DT1BZLCBWaXNpYmxlKTsKICAgICAgICAg
ICAgIGl0ZXIgPSBjaGVja0N1cnJlbnRJdGVtSXNTdG9ja0FjdGlvbkFuZEdldE5leHQoaXRlciwg
V0VCS0lUX0NPTlRFWFRfTUVOVV9BQ1RJT05fUEFTVEUsIFZpc2libGUgfCBFbmFibGVkKTsKQEAg
LTQxMSw3ICs0NDUsNzIgQEAgcHVibGljOgogICAgICAgICAgICAgZ19hc3NlcnQoIXdlYmtpdF9o
aXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19tZWRpYShoaXRUZXN0UmVzdWx0KSk7CiAgICAgICAg
ICAgICBnX2Fzc2VydCghd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2VkaXRhYmxl
KGhpdFRlc3RSZXN1bHQpKTsKICAgICAgICAgICAgIGdfYXNzZXJ0KHdlYmtpdF9oaXRfdGVzdF9y
ZXN1bHRfY29udGV4dF9pc19zZWxlY3Rpb24oaGl0VGVzdFJlc3VsdCkpOworICAgICAgICAgICAg
Z19hc3NlcnQoIXdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfaXNfY3V0X2F2YWlsYWJsZShoaXRUZXN0
UmVzdWx0KSk7CisgICAgICAgICAgICBnX2Fzc2VydCh3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2lz
X2NvcHlfYXZhaWxhYmxlKGhpdFRlc3RSZXN1bHQpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0KCF3
ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2lzX3Bhc3RlX2F2YWlsYWJsZShoaXRUZXN0UmVzdWx0KSk7
CisgICAgICAgICAgICBnX2Fzc2VydCghd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9pc191bmRvX2F2
YWlsYWJsZShoaXRUZXN0UmVzdWx0KSk7CisgICAgICAgICAgICBnX2Fzc2VydCghd2Via2l0X2hp
dF90ZXN0X3Jlc3VsdF9pc19yZWRvX2F2YWlsYWJsZShoaXRUZXN0UmVzdWx0KSk7CisgICAgICAg
ICAgICBpdGVyID0gY2hlY2tDdXJyZW50SXRlbUlzU3RvY2tBY3Rpb25BbmRHZXROZXh0KGl0ZXIs
IFdFQktJVF9DT05URVhUX01FTlVfQUNUSU9OX0NPUFksIFZpc2libGUgfCBFbmFibGVkKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVkaXRhYmxlV2l0aFNlbGVjdGlvbjoKKyAg
ICAgICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfbGlu
ayhoaXRUZXN0UmVzdWx0KSk7CisgICAgICAgICAgICBnX2Fzc2VydCghd2Via2l0X2hpdF90ZXN0
X3Jlc3VsdF9jb250ZXh0X2lzX2ltYWdlKGhpdFRlc3RSZXN1bHQpKTsKKyAgICAgICAgICAgIGdf
YXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfbWVkaWEoaGl0VGVzdFJl
c3VsdCkpOworICAgICAgICAgICAgZ19hc3NlcnQod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250
ZXh0X2lzX2VkaXRhYmxlKGhpdFRlc3RSZXN1bHQpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0KHdl
YmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19zZWxlY3Rpb24oaGl0VGVzdFJlc3VsdCkp
OworICAgICAgICAgICAgZ19hc3NlcnQod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9pc19jdXRfYXZh
aWxhYmxlKGhpdFRlc3RSZXN1bHQpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0KHdlYmtpdF9oaXRf
dGVzdF9yZXN1bHRfaXNfY29weV9hdmFpbGFibGUoaGl0VGVzdFJlc3VsdCkpOworICAgICAgICAg
ICAgZ19hc3NlcnQod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9pc19wYXN0ZV9hdmFpbGFibGUoaGl0
VGVzdFJlc3VsdCkpOworICAgICAgICAgICAgZ19hc3NlcnQoIXdlYmtpdF9oaXRfdGVzdF9yZXN1
bHRfaXNfdW5kb19hdmFpbGFibGUoaGl0VGVzdFJlc3VsdCkpOworICAgICAgICAgICAgZ19hc3Nl
cnQoIXdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfaXNfcmVkb19hdmFpbGFibGUoaGl0VGVzdFJlc3Vs
dCkpOworICAgICAgICAgICAgaXRlciA9IGNoZWNrQ3VycmVudEl0ZW1Jc1N0b2NrQWN0aW9uQW5k
R2V0TmV4dChpdGVyLCBXRUJLSVRfQ09OVEVYVF9NRU5VX0FDVElPTl9DVVQsIFZpc2libGUgfCBF
bmFibGVkKTsKKyAgICAgICAgICAgIGl0ZXIgPSBjaGVja0N1cnJlbnRJdGVtSXNTdG9ja0FjdGlv
bkFuZEdldE5leHQoaXRlciwgV0VCS0lUX0NPTlRFWFRfTUVOVV9BQ1RJT05fQ09QWSwgVmlzaWJs
ZSB8IEVuYWJsZWQpOworICAgICAgICAgICAgaXRlciA9IGNoZWNrQ3VycmVudEl0ZW1Jc1N0b2Nr
QWN0aW9uQW5kR2V0TmV4dChpdGVyLCBXRUJLSVRfQ09OVEVYVF9NRU5VX0FDVElPTl9QQVNURSwg
VmlzaWJsZSB8IEVuYWJsZWQpOworICAgICAgICAgICAgaXRlciA9IGNoZWNrQ3VycmVudEl0ZW1J
c1N0b2NrQWN0aW9uQW5kR2V0TmV4dChpdGVyLCBXRUJLSVRfQ09OVEVYVF9NRU5VX0FDVElPTl9E
RUxFVEUsIFZpc2libGUgfCBFbmFibGVkKTsKKyAgICAgICAgICAgIGl0ZXIgPSBjaGVja0N1cnJl
bnRJdGVtSXNTZXBhcmF0b3JBbmRHZXROZXh0KGl0ZXIpOworICAgICAgICAgICAgaXRlciA9IGNo
ZWNrQ3VycmVudEl0ZW1Jc1N0b2NrQWN0aW9uQW5kR2V0TmV4dChpdGVyLCBXRUJLSVRfQ09OVEVY
VF9NRU5VX0FDVElPTl9TRUxFQ1RfQUxMLCBWaXNpYmxlIHwgRW5hYmxlZCk7CisgICAgICAgICAg
ICBpdGVyID0gY2hlY2tDdXJyZW50SXRlbUlzU2VwYXJhdG9yQW5kR2V0TmV4dChpdGVyKTsKKyAg
ICAgICAgICAgIGl0ZXIgPSBjaGVja0N1cnJlbnRJdGVtSXNTdG9ja0FjdGlvbkFuZEdldE5leHQo
aXRlciwgV0VCS0lUX0NPTlRFWFRfTUVOVV9BQ1RJT05fVU5JQ09ERSwgVmlzaWJsZSB8IEVuYWJs
ZWQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRWRpdGFibGVBbGxvd3NVbmRv
OgorICAgICAgICAgICAgZ19hc3NlcnQoIXdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9p
c19saW5rKGhpdFRlc3RSZXN1bHQpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRfaGl0
X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfaW1hZ2UoaGl0VGVzdFJlc3VsdCkpOworICAgICAgICAg
ICAgZ19hc3NlcnQoIXdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19tZWRpYShoaXRU
ZXN0UmVzdWx0KSk7CisgICAgICAgICAgICBnX2Fzc2VydCh3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0
X2NvbnRleHRfaXNfZWRpdGFibGUoaGl0VGVzdFJlc3VsdCkpOworICAgICAgICAgICAgZ19hc3Nl
cnQoIXdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19zZWxlY3Rpb24oaGl0VGVzdFJl
c3VsdCkpOworICAgICAgICAgICAgZ19hc3NlcnQoIXdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfaXNf
Y3V0X2F2YWlsYWJsZShoaXRUZXN0UmVzdWx0KSk7CisgICAgICAgICAgICBnX2Fzc2VydCghd2Vi
a2l0X2hpdF90ZXN0X3Jlc3VsdF9pc19jb3B5X2F2YWlsYWJsZShoaXRUZXN0UmVzdWx0KSk7Cisg
ICAgICAgICAgICBnX2Fzc2VydCh3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2lzX3Bhc3RlX2F2YWls
YWJsZShoaXRUZXN0UmVzdWx0KSk7CisgICAgICAgICAgICBnX2Fzc2VydCh3ZWJraXRfaGl0X3Rl
c3RfcmVzdWx0X2lzX3VuZG9fYXZhaWxhYmxlKGhpdFRlc3RSZXN1bHQpKTsKKyAgICAgICAgICAg
IGdfYXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2lzX3JlZG9fYXZhaWxhYmxlKGhpdFRl
c3RSZXN1bHQpKTsKKyAgICAgICAgICAgIGl0ZXIgPSBjaGVja0N1cnJlbnRJdGVtSXNTdG9ja0Fj
dGlvbkFuZEdldE5leHQoaXRlciwgV0VCS0lUX0NPTlRFWFRfTUVOVV9BQ1RJT05fQ1VULCBWaXNp
YmxlKTsKKyAgICAgICAgICAgIGl0ZXIgPSBjaGVja0N1cnJlbnRJdGVtSXNTdG9ja0FjdGlvbkFu
ZEdldE5leHQoaXRlciwgV0VCS0lUX0NPTlRFWFRfTUVOVV9BQ1RJT05fQ09QWSwgVmlzaWJsZSk7
CisgICAgICAgICAgICBpdGVyID0gY2hlY2tDdXJyZW50SXRlbUlzU3RvY2tBY3Rpb25BbmRHZXRO
ZXh0KGl0ZXIsIFdFQktJVF9DT05URVhUX01FTlVfQUNUSU9OX1BBU1RFLCBWaXNpYmxlIHwgRW5h
YmxlZCk7CisgICAgICAgICAgICBpdGVyID0gY2hlY2tDdXJyZW50SXRlbUlzU3RvY2tBY3Rpb25B
bmRHZXROZXh0KGl0ZXIsIFdFQktJVF9DT05URVhUX01FTlVfQUNUSU9OX0RFTEVURSwgVmlzaWJs
ZSk7CisgICAgICAgICAgICBpdGVyID0gY2hlY2tDdXJyZW50SXRlbUlzU2VwYXJhdG9yQW5kR2V0
TmV4dChpdGVyKTsKKyAgICAgICAgICAgIGl0ZXIgPSBjaGVja0N1cnJlbnRJdGVtSXNTdG9ja0Fj
dGlvbkFuZEdldE5leHQoaXRlciwgV0VCS0lUX0NPTlRFWFRfTUVOVV9BQ1RJT05fU0VMRUNUX0FM
TCwgVmlzaWJsZSB8IEVuYWJsZWQpOworICAgICAgICAgICAgaXRlciA9IGNoZWNrQ3VycmVudEl0
ZW1Jc1NlcGFyYXRvckFuZEdldE5leHQoaXRlcik7CisgICAgICAgICAgICBpdGVyID0gY2hlY2tD
dXJyZW50SXRlbUlzU3RvY2tBY3Rpb25BbmRHZXROZXh0KGl0ZXIsIFdFQktJVF9DT05URVhUX01F
TlVfQUNUSU9OX1VOSUNPREUsIFZpc2libGUgfCBFbmFibGVkKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIEVkaXRhYmxlQWxsb3dzUmVkbzoKKyAgICAgICAgICAgIGdfYXNzZXJ0
KCF3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfbGluayhoaXRUZXN0UmVzdWx0KSk7
CisgICAgICAgICAgICBnX2Fzc2VydCghd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lz
X2ltYWdlKGhpdFRlc3RSZXN1bHQpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRfaGl0
X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfbWVkaWEoaGl0VGVzdFJlc3VsdCkpOworICAgICAgICAg
ICAgZ19hc3NlcnQod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2VkaXRhYmxlKGhp
dFRlc3RSZXN1bHQpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0KHdlYmtpdF9oaXRfdGVzdF9yZXN1
bHRfY29udGV4dF9pc19zZWxlY3Rpb24oaGl0VGVzdFJlc3VsdCkpOworICAgICAgICAgICAgZ19h
c3NlcnQod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9pc19jdXRfYXZhaWxhYmxlKGhpdFRlc3RSZXN1
bHQpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0KHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfaXNfY29w
eV9hdmFpbGFibGUoaGl0VGVzdFJlc3VsdCkpOworICAgICAgICAgICAgZ19hc3NlcnQod2Via2l0
X2hpdF90ZXN0X3Jlc3VsdF9pc19wYXN0ZV9hdmFpbGFibGUoaGl0VGVzdFJlc3VsdCkpOworICAg
ICAgICAgICAgZ19hc3NlcnQoIXdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfaXNfdW5kb19hdmFpbGFi
bGUoaGl0VGVzdFJlc3VsdCkpOworICAgICAgICAgICAgZ19hc3NlcnQod2Via2l0X2hpdF90ZXN0
X3Jlc3VsdF9pc19yZWRvX2F2YWlsYWJsZShoaXRUZXN0UmVzdWx0KSk7CisgICAgICAgICAgICBp
dGVyID0gY2hlY2tDdXJyZW50SXRlbUlzU3RvY2tBY3Rpb25BbmRHZXROZXh0KGl0ZXIsIFdFQktJ
VF9DT05URVhUX01FTlVfQUNUSU9OX0NVVCwgVmlzaWJsZSB8IEVuYWJsZWQpOwogICAgICAgICAg
ICAgaXRlciA9IGNoZWNrQ3VycmVudEl0ZW1Jc1N0b2NrQWN0aW9uQW5kR2V0TmV4dChpdGVyLCBX
RUJLSVRfQ09OVEVYVF9NRU5VX0FDVElPTl9DT1BZLCBWaXNpYmxlIHwgRW5hYmxlZCk7CisgICAg
ICAgICAgICBpdGVyID0gY2hlY2tDdXJyZW50SXRlbUlzU3RvY2tBY3Rpb25BbmRHZXROZXh0KGl0
ZXIsIFdFQktJVF9DT05URVhUX01FTlVfQUNUSU9OX1BBU1RFLCBWaXNpYmxlIHwgRW5hYmxlZCk7
CisgICAgICAgICAgICBpdGVyID0gY2hlY2tDdXJyZW50SXRlbUlzU3RvY2tBY3Rpb25BbmRHZXRO
ZXh0KGl0ZXIsIFdFQktJVF9DT05URVhUX01FTlVfQUNUSU9OX0RFTEVURSwgVmlzaWJsZSB8IEVu
YWJsZWQpOworICAgICAgICAgICAgaXRlciA9IGNoZWNrQ3VycmVudEl0ZW1Jc1NlcGFyYXRvckFu
ZEdldE5leHQoaXRlcik7CisgICAgICAgICAgICBpdGVyID0gY2hlY2tDdXJyZW50SXRlbUlzU3Rv
Y2tBY3Rpb25BbmRHZXROZXh0KGl0ZXIsIFdFQktJVF9DT05URVhUX01FTlVfQUNUSU9OX1NFTEVD
VF9BTEwsIFZpc2libGUgfCBFbmFibGVkKTsKKyAgICAgICAgICAgIGl0ZXIgPSBjaGVja0N1cnJl
bnRJdGVtSXNTZXBhcmF0b3JBbmRHZXROZXh0KGl0ZXIpOworICAgICAgICAgICAgaXRlciA9IGNo
ZWNrQ3VycmVudEl0ZW1Jc1N0b2NrQWN0aW9uQW5kR2V0TmV4dChpdGVyLCBXRUJLSVRfQ09OVEVY
VF9NRU5VX0FDVElPTl9VTklDT0RFLCBWaXNpYmxlIHwgRW5hYmxlZCk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGdfYXNzZXJ0X25vdF9yZWFjaGVk
KCk7CkBAIC00MjgsOSArNTI3LDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogCi0gICAgRGVmYXVsdE1lbnVUeXBlIG1fZXhwZWN0ZWRNZW51VHlwZTsKKyAgICBEZWZh
dWx0TWVudVR5cGUgbV9leHBlY3RlZE1lbnVUeXBlID0gTmF2aWdhdGlvbjsKIH07CiAKKyNkZWZp
bmUgV0lUVElDSVNNICJIVE1MIGlzIHVzZWZ1bCBmb3IgYSB3ZWIgY29udGVudCByZW5kZXJpbmcg
ZW5naW5lLiAtLSBNYXJ0aW4gUm9iaW5zb24iCisKIHN0YXRpYyB2b2lkIHByZXBhcmVDb250ZXh0
TWVudVRlc3RWaWV3KENvbnRleHRNZW51RGVmYXVsdFRlc3QqIHRlc3QpCiB7CiAgICAgR1VuaXF1
ZVB0cjxjaGFyPiBiYXNlRGlyKGdfc3RyZHVwX3ByaW50ZigiZmlsZTovLyVzLyIsIFRlc3Q6Omdl
dFJlc291cmNlc0RpcigpLmRhdGEoKSkpOwpAQCAtNDM5LDcgKzU0MCw3IEBAIHN0YXRpYyB2b2lk
IHByZXBhcmVDb250ZXh0TWVudVRlc3RWaWV3KENvbnRleHRNZW51RGVmYXVsdFRlc3QqIHRlc3Qp
CiAgICAgICAgICIgPGEgc3R5bGU9J3Bvc2l0aW9uOmFic29sdXRlOyBsZWZ0OjE7IHRvcDoxJyBo
cmVmPSdodHRwOi8vd3d3LndlYmtpdGd0ay5vcmcnIHRpdGxlPSdXZWJLaXRHVEsrIFRpdGxlJz5X
ZWJLaXRHVEsrIFdlYnNpdGU8L2E+IgogICAgICAgICAiIDxpbWcgc3R5bGU9J3Bvc2l0aW9uOmFi
c29sdXRlOyBsZWZ0OjE7IHRvcDoxMCcgc3JjPSdibGFuay5pY28nIHdpZHRoPTUgaGVpZ2h0PTU+
PC9pbWc+IgogICAgICAgICAiIDxhIHN0eWxlPSdwb3NpdGlvbjphYnNvbHV0ZTsgbGVmdDoxOyB0
b3A6MjAnIGhyZWY9J2h0dHA6Ly93d3cud2Via2l0Z3RrLm9yZy9sb2dvJyB0aXRsZT0nV2ViS2l0
R1RLKyBMb2dvJz48aW1nIHNyYz0nYmxhbmsuaWNvJyB3aWR0aD01IGhlaWdodD01PjwvaW1nPjwv
YT4iCi0gICAgICAgICIgPGlucHV0IHN0eWxlPSdwb3NpdGlvbjphYnNvbHV0ZTsgbGVmdDoxOyB0
b3A6MzAnIHNpemU9JzEwJz48L2lucHV0PiIKKyAgICAgICAgIiA8aW5wdXQgc3R5bGU9J3Bvc2l0
aW9uOmFic29sdXRlOyBsZWZ0OjE7IHRvcDozMCcgc2l6ZT0nMTAnIHZhbHVlPSciIFdJVFRJQ0lT
TSAiJyBpZD0nZWRpdGFibGUnPjwvaW5wdXQ+IgogICAgICAgICAiIDx2aWRlbyBzdHlsZT0ncG9z
aXRpb246YWJzb2x1dGU7IGxlZnQ6MTsgdG9wOjUwJyB3aWR0aD0nMzAwJyBoZWlnaHQ9JzMwMCcg
Y29udHJvbHM9J2NvbnRyb2xzJyBwcmVsb2FkPSdub25lJz48c291cmNlIHNyYz0nc2lsZW5jZS53
ZWJtJyB0eXBlPSd2aWRlby93ZWJtJyAvPjwvdmlkZW8+IgogICAgICAgICAiIDxhdWRpbyBzdHls
ZT0ncG9zaXRpb246YWJzb2x1dGU7IGxlZnQ6MTsgdG9wOjYwJyB3aWR0aD0nNTAnIGhlaWdodD0n
MjAnIGNvbnRyb2xzPSdjb250cm9scycgcHJlbG9hZD0nbm9uZSc+PHNvdXJjZSBzcmM9J3RyYWNr
Lm9nZycgdHlwZT0nYXVkaW8vb2dnJyAvPjwvYXVkaW8+IgogICAgICAgICAiIDxwIHN0eWxlPSdw
b3NpdGlvbjphYnNvbHV0ZTsgbGVmdDoxOyB0b3A6OTAnIGlkPSd0ZXh0X3RvX3NlbGVjdCc+TG9y
ZW0gaXBzdW0uPC9wPiIKQEAgLTQ1NCwxMSArNTU1LDM3IEBAIHN0YXRpYyB2b2lkIHByZXBhcmVD
b250ZXh0TWVudVRlc3RWaWV3KENvbnRleHRNZW51RGVmYXVsdFRlc3QqIHRlc3QpCiAgICAgdGVz
dC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CiB9CiAKK3N0YXRpYyB2b2lkIHNlbGVjdFRleHRJ
bkVkaXRhYmxlKENvbnRleHRNZW51RGVmYXVsdFRlc3QqIHRlc3QpCit7CisgICAgR1VuaXF1ZU91
dFB0cjxHRXJyb3I+IGVycm9yOworICAgIFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIGpzUmVzdWx0
ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnZWRpdGFibGUnKS5zZWxlY3QoKTsiLCAmZXJyb3Iub3V0UHRyKCkpOworICAg
IGdfYXNzZXJ0X25vX2Vycm9yKGVycm9yLmdldCgpKTsKKyAgICB3ZWJraXRfamF2YXNjcmlwdF9y
ZXN1bHRfdW5yZWYoanNSZXN1bHQpOworfQorCitzdGF0aWMgdm9pZCB3YWl0VW50aWxFZGl0YWJs
ZUNvbnRlbnRNYXRjaGVzKENvbnRleHRNZW51RGVmYXVsdFRlc3QqIHRlc3QsIGNvbnN0IGNoYXIq
IG1hdGNoKQoreworICAgIEdVbmlxdWVQdHI8Y2hhcj4gY29udGVudFN0cmluZzsKKyAgICBkbyB7
CisgICAgICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKKyAgICAgICAgV2ViS2l0SmF2
YXNjcmlwdFJlc3VsdCoganNSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGls
RmluaXNoZWQoImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlZGl0YWJsZScpLnZhbHVlOyIsICZl
cnJvci5vdXRQdHIoKSk7CisgICAgICAgIGdfYXNzZXJ0X25vX2Vycm9yKGVycm9yLmdldCgpKTsK
KyAgICAgICAgY29udGVudFN0cmluZy5yZXNldChXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3Vs
dFRvQ1N0cmluZyhqc1Jlc3VsdCkpOworICAgICAgICB3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRf
dW5yZWYoanNSZXN1bHQpOworICAgIH0gd2hpbGUgKHN0cmNtcChjb250ZW50U3RyaW5nLmdldCgp
LCBtYXRjaCkpOworfQorCiBzdGF0aWMgdm9pZCB0ZXN0Q29udGV4dE1lbnVEZWZhdWx0TWVudShD
b250ZXh0TWVudURlZmF1bHRUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewogICAgIHRlc3Qt
PnNob3dJbldpbmRvd0FuZFdhaXRVbnRpbE1hcHBlZCgpOwogCiAgICAgcHJlcGFyZUNvbnRleHRN
ZW51VGVzdFZpZXcodGVzdCk7CisgICAgCisgICAgLy8gSnVzdCBnZXQgc29tZXRoaW5nIGludG8g
dGhlIGNsaXBib2FyZCwgc28gdGhlcmUgaXMgbm8gZG91YnQgdGhhdCBwYXN0ZQorICAgIC8vIHdp
bGwgYmUgYXZhaWxhYmxlIHdoZW5ldmVyIHBvc3NpYmxlLiBXZSBvYnZpb3VzbHkgZG9uJ3Qgd2Fu
dCB0aGlzIHRlc3QgdG8KKyAgICAvLyBkZXBlbmQgb24gdGhlIHByaW9yIGNvbnRlbnRzIG9mIHRo
ZSBjbGlwYm9hcmQuCisgICAgd2Via2l0X3dlYl92aWV3X2V4ZWN1dGVfZWRpdGluZ19jb21tYW5k
KHRlc3QtPm1fd2ViVmlldywgV0VCS0lUX0VESVRJTkdfQ09NTUFORF9DT1BZKTsKKyAgICB0ZXN0
LT53YWl0VW50aWxUZXh0SXNBdmFpbGFibGVJbkNsaXBib2FyZCgpOwogCiAgICAgLy8gQ29udGV4
dCBtZW51IGZvciBzZWxlY3Rpb24uCiAgICAgLy8gVGhpcyB0ZXN0IHNob3VsZCBhbHdheXMgYmUg
dGhlIGZpcnN0IGJlY2F1c2UgYW55IG90aGVyIGNsaWNrIHJlbW92ZXMgdGhlIHNlbGVjdGlvbi4K
QEAgLTQ5Myw5ICs2MjAsMjYgQEAgc3RhdGljIHZvaWQgdGVzdENvbnRleHRNZW51RGVmYXVsdE1l
bnUoQ29udGV4dE1lbnVEZWZhdWx0VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnQKICAgICB0ZXN0LT5t
X2V4cGVjdGVkTWVudVR5cGUgPSBDb250ZXh0TWVudURlZmF1bHRUZXN0OjpBdWRpbzsKICAgICB0
ZXN0LT5zaG93Q29udGV4dE1lbnVBdFBvc2l0aW9uQW5kV2FpdFVudGlsRmluaXNoZWQoMSwgNjAp
OwogCi0gICAgLy8gQ29udGV4dCBtZW51IGZvciBlZGl0YWJsZS4KKyAgICAvLyBDb250ZXh0IG1l
bnUgZm9yIGVkaXRhYmxlLiBObyB0ZXh0IHNlbGVjdGVkLgogICAgIHRlc3QtPm1fZXhwZWN0ZWRN
ZW51VHlwZSA9IENvbnRleHRNZW51RGVmYXVsdFRlc3Q6OkVkaXRhYmxlOwogICAgIHRlc3QtPnNo
b3dDb250ZXh0TWVudUF0UG9zaXRpb25BbmRXYWl0VW50aWxGaW5pc2hlZCg1LCAzNSk7CisKKyAg
ICAvLyBDb250ZXh0IG1lbnUgZm9yIGVkaXRhYmxlIGFmdGVyIHNlbGVjdGluZyB0ZXh0LgorICAg
IHNlbGVjdFRleHRJbkVkaXRhYmxlKHRlc3QpOworICAgIHRlc3QtPm1fZXhwZWN0ZWRNZW51VHlw
ZSA9IENvbnRleHRNZW51RGVmYXVsdFRlc3Q6OkVkaXRhYmxlV2l0aFNlbGVjdGlvbjsKKyAgICB0
ZXN0LT5zaG93Q29udGV4dE1lbnVBdFBvc2l0aW9uQW5kV2FpdFVudGlsRmluaXNoZWQoNSwgMzUp
OworCisgICAgLy8gQ29udGVudCBtZW51IGZvciBlZGl0YWJsZSBhZnRlciBtb2RpZnlpbmcgdGV4
dC4KKyAgICB0ZXN0LT5rZXlTdHJva2UoR0RLX0tFWV9EZWxldGUpOworICAgIHdhaXRVbnRpbEVk
aXRhYmxlQ29udGVudE1hdGNoZXModGVzdCwgIiIpOworICAgIHRlc3QtPm1fZXhwZWN0ZWRNZW51
VHlwZSA9IENvbnRleHRNZW51RGVmYXVsdFRlc3Q6OkVkaXRhYmxlQWxsb3dzVW5kbzsKKyAgICB0
ZXN0LT5zaG93Q29udGV4dE1lbnVBdFBvc2l0aW9uQW5kV2FpdFVudGlsRmluaXNoZWQoNSwgMzUp
OworCisgICAgLy8gQ29udGVudCBtZW51IGZvciBlZGl0YWJsZSBhZnRlciB1bmRvLgorICAgIHdl
YmtpdF93ZWJfdmlld19leGVjdXRlX2VkaXRpbmdfY29tbWFuZCh0ZXN0LT5tX3dlYlZpZXcsIFdF
QktJVF9FRElUSU5HX0NPTU1BTkRfVU5ETyk7CisgICAgd2FpdFVudGlsRWRpdGFibGVDb250ZW50
TWF0Y2hlcyh0ZXN0LCBXSVRUSUNJU00pOworICAgIHRlc3QtPm1fZXhwZWN0ZWRNZW51VHlwZSA9
IENvbnRleHRNZW51RGVmYXVsdFRlc3Q6OkVkaXRhYmxlQWxsb3dzUmVkbzsKKyAgICB0ZXN0LT5z
aG93Q29udGV4dE1lbnVBdFBvc2l0aW9uQW5kV2FpdFVudGlsRmluaXNoZWQoNSwgMzUpOwogfQog
CiBzdGF0aWMgdm9pZCB0ZXN0UG9wdXBFdmVudFNpZ25hbChDb250ZXh0TWVudURlZmF1bHRUZXN0
KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRHdGsvVGVzdFdlYlZpZXdFZGl0b3IuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRHdGsvVGVzdFdlYlZpZXdFZGl0b3IuY3BwCmluZGV4IDc2ZmI2Y2VhMGUy
ZDg4NjM1ODdmMmYyMDZjYmI5YzA4OTU3OGM2NzUuLjYyYTU0M2Q2ZDlmODUwNzdlY2QwYzVkODEy
ZTMyOWQyOTQ5NTAwNmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0R3RrL1Rlc3RXZWJWaWV3RWRpdG9yLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdEd0ay9UZXN0V2ViVmlld0VkaXRvci5jcHAKQEAgLTUzLDI1ICs1MywxMCBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiBtX2NhbkV4ZWN1dGVFZGl0aW5nQ29tbWFuZDsKICAgICB9
CiAKLSAgICBzdGF0aWMgZ2Jvb2xlYW4gd2FpdEZvckNsaXBib2FyZFRleHQoRWRpdG9yVGVzdCog
dGVzdCkKLSAgICB7Ci0gICAgICAgIHRlc3QtPm1fdHJpZXNDb3VudCsrOwotICAgICAgICBpZiAo
Z3RrX2NsaXBib2FyZF93YWl0X2lzX3RleHRfYXZhaWxhYmxlKHRlc3QtPm1fY2xpcGJvYXJkKSB8
fCB0ZXN0LT5tX3RyaWVzQ291bnQgPiBrQ2xpcGJvYXJkV2FpdE1heFRyaWVzKSB7Ci0gICAgICAg
ICAgICBnX21haW5fbG9vcF9xdWl0KHRlc3QtPm1fbWFpbkxvb3ApOwotICAgICAgICAgICAgcmV0
dXJuIEZBTFNFOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIFRSVUU7Ci0gICAgfQotCiAg
ICAgdm9pZCBjb3B5Q2xpcGJvYXJkKCkKICAgICB7CiAgICAgICAgIHdlYmtpdF93ZWJfdmlld19l
eGVjdXRlX2VkaXRpbmdfY29tbWFuZChtX3dlYlZpZXcsIFdFQktJVF9FRElUSU5HX0NPTU1BTkRf
Q09QWSk7Ci0gICAgICAgIC8vIFRoZXJlJ3Mgbm8gd2F5IHRvIGtub3cgd2hlbiB0aGUgc2VsZWN0
aW9uIGhhcyBiZWVuIGNvcGllZCB0bwotICAgICAgICAvLyB0aGUgY2xpcGJvYXJkLCBzbyB1c2Ug
YSB0aW1lb3V0IHNvdXJjZSB0byBxdWVyeSB0aGUgY2xpcGJvYXJkLgotICAgICAgICBtX3RyaWVz
Q291bnQgPSAwOwotICAgICAgICBnX3RpbWVvdXRfYWRkKGtDbGlwYm9hcmRXYWl0VGltZW91dCwg
cmVpbnRlcnByZXRfY2FzdDxHU291cmNlRnVuYz4od2FpdEZvckNsaXBib2FyZFRleHQpLCB0aGlz
KTsKLSAgICAgICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3ApOworICAgICAgICB3YWl0VW50
aWxUZXh0SXNBdmFpbGFibGVJbkNsaXBib2FyZCgpOwogICAgIH0KIAogICAgIGdjaGFyKiBjdXRT
ZWxlY3Rpb24oKQpAQCAtODAsMTEgKzY1LDcgQEAgcHVibGljOgogICAgICAgICBnX2Fzc2VydChj
YW5FeGVjdXRlRWRpdGluZ0NvbW1hbmQoV0VCS0lUX0VESVRJTkdfQ09NTUFORF9QQVNURSkpOwog
CiAgICAgICAgIHdlYmtpdF93ZWJfdmlld19leGVjdXRlX2VkaXRpbmdfY29tbWFuZChtX3dlYlZp
ZXcsIFdFQktJVF9FRElUSU5HX0NPTU1BTkRfQ1VUKTsKLSAgICAgICAgLy8gVGhlcmUncyBubyB3
YXkgdG8ga25vdyB3aGVuIHRoZSBzZWxlY3Rpb24gaGFzIGJlZW4gY3V0IHRvCi0gICAgICAgIC8v
IHRoZSBjbGlwYm9hcmQsIHNvIHVzZSBhIHRpbWVvdXQgc291cmNlIHRvIHF1ZXJ5IHRoZSBjbGlw
Ym9hcmQuCi0gICAgICAgIG1fdHJpZXNDb3VudCA9IDA7Ci0gICAgICAgIGdfdGltZW91dF9hZGQo
a0NsaXBib2FyZFdhaXRUaW1lb3V0LCByZWludGVycHJldF9jYXN0PEdTb3VyY2VGdW5jPih3YWl0
Rm9yQ2xpcGJvYXJkVGV4dCksIHRoaXMpOwotICAgICAgICBnX21haW5fbG9vcF9ydW4obV9tYWlu
TG9vcCk7CisgICAgICAgIHdhaXRVbnRpbFRleHRJc0F2YWlsYWJsZUluQ2xpcGJvYXJkKCk7CiAK
ICAgICAgICAgcmV0dXJuIGd0a19jbGlwYm9hcmRfd2FpdF9mb3JfdGV4dChtX2NsaXBib2FyZCk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIv
V2ViVmlld1Rlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2Vi
Vmlld1Rlc3QuY3BwCmluZGV4IGM4YmNkOGZiOTA0ZmZjZTExNWMxMGVhYjk2YTMwZDFkYmE3OGU5
MjguLjc3ODgxODVmZTIxMjIzMTYzNmMxM2JiMzgxMWIxYmY2YjA0NWU4ZjAgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmNwcAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5jcHAKQEAg
LTIxMSw2ICsyMTEsMTkgQEAgdm9pZCBXZWJWaWV3VGVzdDo6d2FpdFVudGlsVGl0bGVDaGFuZ2Vk
KCkKICAgICB3YWl0VW50aWxUaXRsZUNoYW5nZWRUbygwKTsKIH0KIAordm9pZCBXZWJWaWV3VGVz
dDo6d2FpdFVudGlsVGV4dElzQXZhaWxhYmxlSW5DbGlwYm9hcmQoKQoreworICAgIGdfdGltZW91
dF9hZGQoNTAsIFtdKGdwb2ludGVyIHVzZXJEYXRhKSAtPiBnYm9vbGVhbiB7CisgICAgICAgIGF1
dG8qIG1haW5Mb29wID0gc3RhdGljX2Nhc3Q8R01haW5Mb29wKj4odXNlckRhdGEpOworICAgICAg
ICBpZiAoZ3RrX2NsaXBib2FyZF93YWl0X2lzX3RleHRfYXZhaWxhYmxlKGd0a19jbGlwYm9hcmRf
Z2V0KEdES19TRUxFQ1RJT05fQ0xJUEJPQVJEKSkpIHsKKyAgICAgICAgICAgIGdfbWFpbl9sb29w
X3F1aXQobWFpbkxvb3ApOworICAgICAgICAgICAgcmV0dXJuIEdfU09VUkNFX1JFTU9WRTsKKyAg
ICAgICAgfQorICAgICAgICByZXR1cm4gR19TT1VSQ0VfQ09OVElOVUU7CisgICAgfSwgbV9tYWlu
TG9vcCk7CisgICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3ApOworfQorCiB2b2lkIFdlYlZp
ZXdUZXN0OjpzZWxlY3RBbGwoKQogewogICAgIHdlYmtpdF93ZWJfdmlld19leGVjdXRlX2VkaXRp
bmdfY29tbWFuZChtX3dlYlZpZXcsICJTZWxlY3RBbGwiKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmggYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5oCmluZGV4IDMyNmE0YWJkM2QwMDEz
MDFhMTUxZDQ5MzE1YmZhMzFiNTU3MzA4Y2QuLjE1MDJmMTNhNmIxMGQzODk0ODE0MjEzZjBlYjky
M2VkNDM2M2RhNWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRH
TGliL1dlYlZpZXdUZXN0LmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdM
aWIvV2ViVmlld1Rlc3QuaApAQCAtNTEsNiArNTEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB3YWl0
VW50aWxMb2FkRmluaXNoZWQoKTsKICAgICB2b2lkIHdhaXRVbnRpbFRpdGxlQ2hhbmdlZFRvKGNv
bnN0IGNoYXIqIGV4cGVjdGVkVGl0bGUpOwogICAgIHZvaWQgd2FpdFVudGlsVGl0bGVDaGFuZ2Vk
KCk7CisgICAgdm9pZCB3YWl0VW50aWxUZXh0SXNBdmFpbGFibGVJbkNsaXBib2FyZCgpOwogICAg
IHZvaWQgcmVzaXplVmlldyhpbnQgd2lkdGgsIGludCBoZWlnaHQpOwogICAgIHZvaWQgaGlkZVZp
ZXcoKTsKICAgICB2b2lkIHNlbGVjdEFsbCgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321875</attachid>
            <date>2017-09-26 14:49:27 -0700</date>
            <delta_ts>2017-09-28 17:25:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-168219-20170926164926.patch</filename>
            <type>text/plain</type>
            <size>20716</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyNTAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmQwNThhZmE4ODMwNjRj
OTAzMjllM2I4YjYzZThiMTRlYTllNmJhMy4uZDQ1MTdiNDBiZTY0M2UwYmY3OTUyOWQ2MzYzOGNm
ZjUxZDE4ZTQxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE3LTA5LTI2ICBNaWNo
YWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBF
eHBvc2UgZWRpdGluZyBjb21tYW5kIGF2YWlsYWJpbGl0eSBpbiBXZWJLaXRIaXRUZXN0UmVzdWx0
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjgyMTkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGVkaXRp
bmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Y2FuVW5kbyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmNhblJlZG8gY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RWRpdG9yOjpjYW5VbmRvKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkVkaXRv
cjo6Y2FuUmVkbyk6IERlbGV0ZWQuCisgICAgICAgICogZWRpdGluZy9FZGl0b3IuaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIaXRU
ZXN0UmVzdWx0OjphbGxvd3NDb3B5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJp
bmcvSGl0VGVzdFJlc3VsdC5oOgorCiAyMDE3LTA5LTI2ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJz
ZWtAaWdhbGlhLmNvbT4KIAogICAgICAgICBbRU1FXSBBZGQgQ2xlYXJLZXkgc3VwcG9ydCBmb3Ig
cGVyc2lzdGVudCBzZXNzaW9uIGRhdGEgbG9hZCBhbmQgcmVtb3ZhbApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBjZjNj
N2M0YjFlNTg4ZDU0YTBkMzgzYWJmN2Q0NDJlNDAzNTMzY2JhLi44YTE0MjBiNzZlYTRiNjY3ZGEy
NzFhNzJiOWJlNjc2YTg2MGNhZmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE3LTA5
LTI2ICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KKworICAgICAg
ICBbR1RLXSBFeHBvc2UgZWRpdGluZyBjb21tYW5kIGF2YWlsYWJpbGl0eSBpbiBXZWJLaXRIaXRU
ZXN0UmVzdWx0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjgyMTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFNoYXJlZC9FZGl0b3JTdGF0ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkVkaXRvclN0YXRl
OjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JTdGF0ZTo6ZGVjb2RlKToK
KyAgICAgICAgKiBTaGFyZWQvRWRpdG9yU3RhdGUuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViSGl0
VGVzdFJlc3VsdERhdGEuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJIaXRUZXN0UmVzdWx0RGF0
YTo6V2ViSGl0VGVzdFJlc3VsdERhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJIaXRUZXN0UmVz
dWx0RGF0YTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViSGl0VGVzdFJlc3Vs
dERhdGE6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHREYXRhLmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElIaXRUZXN0UmVzdWx0Lmg6CisgICAgICAgIChB
UEk6OkhpdFRlc3RSZXN1bHQ6OmFsbG93c0NvcHkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRFZGl0b3JTdGF0ZS5jcHA6CisgICAgICAgICh3ZWJr
aXRFZGl0b3JTdGF0ZUNoYW5nZWQpOgorICAgICAgICAod2Via2l0X2VkaXRvcl9zdGF0ZV9nZXRf
aXNfY3V0X2F2YWlsYWJsZSk6CisgICAgICAgICh3ZWJraXRfZWRpdG9yX3N0YXRlX2dldF9pc19j
b3B5X2F2YWlsYWJsZSk6CisgICAgICAgICh3ZWJraXRfZWRpdG9yX3N0YXRlX2dldF9pc19wYXN0
ZV9hdmFpbGFibGUpOgorICAgICAgICAod2Via2l0X2VkaXRvcl9zdGF0ZV9nZXRfaXNfZGVsZXRl
X2F2YWlsYWJsZSk6CisgICAgICAgICh3ZWJraXRfZWRpdG9yX3N0YXRlX2dldF9pc191bmRvX2F2
YWlsYWJsZSk6CisgICAgICAgICh3ZWJraXRfZWRpdG9yX3N0YXRlX2dldF9pc19yZWRvX2F2YWls
YWJsZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RWRpdG9yU3RhdGUuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25z
LnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRFZGl0b3JTdGF0ZS5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6ZWRpdG9yU3RhdGUgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGVyZm9y
bUltbWVkaWF0ZUFjdGlvbkhpdFRlc3RBdExvY2F0aW9uKToKKwogMjAxNy0wOS0yNSAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIE1ha2UgUG9s
aWN5QWN0aW9uIGFuIGVuY29kYWJsZSBlbnVtIGNsYXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5j
cHAKaW5kZXggMzY4YzI0NGMzYjc4YzBhY2QxOWQzZTFjMGZjN2MzNmYwYzQ3NGY1Mi4uZTI0N2M4
N2YyOTk3NGQyMDMyM2I1NDUzYmE5Mjk0MjRkOTk4ZjFlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dG9yLmNwcApAQCAtMTU5Myw3ICsxNTkzLDcgQEAgdm9pZCBFZGl0b3I6OmNsZWFyVW5kb1JlZG9P
cGVyYXRpb25zKCkKICAgICAgICAgY2xpZW50KCktPmNsZWFyVW5kb1JlZG9PcGVyYXRpb25zKCk7
CiB9CiAKLWJvb2wgRWRpdG9yOjpjYW5VbmRvKCkKK2Jvb2wgRWRpdG9yOjpjYW5VbmRvKCkgY29u
c3QKIHsKICAgICByZXR1cm4gY2xpZW50KCkgJiYgY2xpZW50KCktPmNhblVuZG8oKTsKIH0KQEAg
LTE2MDQsNyArMTYwNCw3IEBAIHZvaWQgRWRpdG9yOjp1bmRvKCkKICAgICAgICAgY2xpZW50KCkt
PnVuZG8oKTsKIH0KIAotYm9vbCBFZGl0b3I6OmNhblJlZG8oKQorYm9vbCBFZGl0b3I6OmNhblJl
ZG8oKSBjb25zdAogewogICAgIHJldHVybiBjbGllbnQoKSAmJiBjbGllbnQoKS0+Y2FuUmVkbygp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKaW5kZXggM2MwZmVlYTY3Mzg4MzRhNzE4ZGNhOTc5
Yzk5YWQ3YTllNGVkNGNmZi4uZTUxZTkwZjU5NDlmNmI5MDYyNWEyNTI5NTZjZjc4ZTQyODNiZTU1
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCkBAIC0zMDQsOSArMzA0LDkgQEAgcHVibGljOgog
ICAgIGJvb2wgc2hvdWxkRW5kRWRpdGluZyhSYW5nZSopOwogCiAgICAgdm9pZCBjbGVhclVuZG9S
ZWRvT3BlcmF0aW9ucygpOwotICAgIGJvb2wgY2FuVW5kbygpOworICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgY2FuVW5kbygpIGNvbnN0OwogICAgIHZvaWQgdW5kbygpOwotICAgIGJvb2wgY2FuUmVk
bygpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY2FuUmVkbygpIGNvbnN0OwogICAgIHZvaWQg
cmVkbygpOwogCiAgICAgdm9pZCBkaWRCZWdpbkVkaXRpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAppbmRleCBiNzI3MGE1MDJhZWVkNzQ3MWNlZDYzNmQ2
MWVkNWU1ZmY4N2Y3YWQ5Li40Y2VmOWJhODYxNTE2YTY5ZjNkN2FkODNhMjJmZDc4MWE0NDEyZmU4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCkBAIC01OTYs
MjEgKzU5Niw2IEBAIGJvb2wgSGl0VGVzdFJlc3VsdDo6aXNPdmVyVGV4dEluc2lkZUZvcm1Db250
cm9sRWxlbWVudCgpIGNvbnN0CiAgICAgcmV0dXJuICF3b3JkUmFuZ2UtPnRleHQoKS5pc0VtcHR5
KCk7CiB9CiAKLWJvb2wgSGl0VGVzdFJlc3VsdDo6YWxsb3dzQ29weSgpIGNvbnN0Ci17Ci0gICAg
Tm9kZSogbm9kZSA9IGlubmVyTm9kZSgpOwotICAgIGlmICghbm9kZSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7
Ci0gICAgaWYgKCFyZW5kZXJlcikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgYm9vbCBp
c1VzZXJTZWxlY3ROb25lID0gcmVuZGVyZXItPnN0eWxlKCkudXNlclNlbGVjdCgpID09IFNFTEVD
VF9OT05FOwotICAgIGJvb2wgaXNQYXNzd29yZEZpZWxkID0gaXM8SFRNTElucHV0RWxlbWVudD4o
bm9kZSkgJiYgZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oKm5vZGUpLmlzUGFzc3dvcmRGaWVs
ZCgpOwotICAgIHJldHVybiAhaXNQYXNzd29yZEZpZWxkICYmICFpc1VzZXJTZWxlY3ROb25lOwot
fQotCiBVUkwgSGl0VGVzdFJlc3VsdDo6YWJzb2x1dGVMaW5rVVJMKCkgY29uc3QKIHsKICAgICBp
ZiAobV9pbm5lclVSTEVsZW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvSGl0VGVzdFJlc3VsdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1
bHQuaAppbmRleCBiYTJkN2EyYTU5MGI1YTc0NTRiNWFmNGRjYjk2ODYyYWM5ZjgwMmVkLi4wNGIz
ODgyZjBlMmUwOGIyMjhkOTc0M2NkZjIxNTkzYTc0MGUwNWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9IaXRUZXN0UmVzdWx0LmgKQEAgLTEzMSw3ICsxMzEsNiBAQCBwdWJsaWM6CiAKICAg
ICBXRUJDT1JFX0VYUE9SVCBib29sIGlzRG93bmxvYWRhYmxlTWVkaWEoKSBjb25zdDsKICAgICBX
RUJDT1JFX0VYUE9SVCBib29sIGlzT3ZlclRleHRJbnNpZGVGb3JtQ29udHJvbEVsZW1lbnQoKSBj
b25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIGFsbG93c0NvcHkoKSBjb25zdDsKIAogICAg
IEhpdFRlc3RQcm9ncmVzcyBhZGROb2RlVG9MaXN0QmFzZWRUZXN0UmVzdWx0KE5vZGUqLCBjb25z
dCBIaXRUZXN0UmVxdWVzdCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgcG9pbnRJbkNvbnRhaW5l
ciwgY29uc3QgTGF5b3V0UmVjdCYgPSBMYXlvdXRSZWN0KCkpOwogICAgIEhpdFRlc3RQcm9ncmVz
cyBhZGROb2RlVG9MaXN0QmFzZWRUZXN0UmVzdWx0KE5vZGUqLCBjb25zdCBIaXRUZXN0UmVxdWVz
dCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgcG9pbnRJbkNvbnRhaW5lciwgY29uc3QgRmxvYXRS
ZWN0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0b3JTdGF0ZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0b3JTdGF0ZS5jcHAKaW5kZXggNmY5Y2Y0OGJlYmYw
YmIyOTFkMzY2NTRiOThmM2Y4ZDBhNTE0NjM5MS4uMjJlYThhN2Y2M2RmNTVmMTUzNTFhZmFlYzlm
Y2UzNmJiYzc4ZmM4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvRWRpdG9yU3Rh
dGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRvclN0YXRlLmNwcApAQCAtNDIs
NiArNDIsMTMgQEAgdm9pZCBFZGl0b3JTdGF0ZTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2Rl
cikgY29uc3QKICAgICBlbmNvZGVyIDw8IGhhc0NvbXBvc2l0aW9uOwogICAgIGVuY29kZXIgPDwg
aXNNaXNzaW5nUG9zdExheW91dERhdGE7CiAKKyAgICBlbmNvZGVyIDw8IGNhbkN1dDsKKyAgICBl
bmNvZGVyIDw8IGNhbkNvcHk7CisgICAgZW5jb2RlciA8PCBjYW5QYXN0ZTsKKyAgICBlbmNvZGVy
IDw8IGNhbkRlbGV0ZTsKKyAgICBlbmNvZGVyIDw8IGNhblVuZG87CisgICAgZW5jb2RlciA8PCBj
YW5SZWRvOworCiAjaWYgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShHVEspIHx8IFBMQVRGT1JN
KE1BQykKICAgICBpZiAoIWlzTWlzc2luZ1Bvc3RMYXlvdXREYXRhKQogICAgICAgICBtX3Bvc3RM
YXlvdXREYXRhLmVuY29kZShlbmNvZGVyKTsKQEAgLTgzLDYgKzkwLDI0IEBAIGJvb2wgRWRpdG9y
U3RhdGU6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIEVkaXRvclN0YXRlJiByZXN1bHQp
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuaXNNaXNzaW5nUG9zdExheW91dERhdGEp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3Vs
dC5jYW5DdXQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHJlc3VsdC5jYW5Db3B5KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShyZXN1bHQuY2FuUGFzdGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5jYW5EZWxldGUpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5jYW5VbmRvKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuY2Fu
UmVkbykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogI2lmIFBMQVRGT1JNKElPUykgfHwgUExB
VEZPUk0oR1RLKSB8fCBQTEFURk9STShNQUMpCiAgICAgaWYgKCFyZXN1bHQuaXNNaXNzaW5nUG9z
dExheW91dERhdGEpIHsKICAgICAgICAgaWYgKCFQb3N0TGF5b3V0RGF0YTo6ZGVjb2RlKGRlY29k
ZXIsIHJlc3VsdC5wb3N0TGF5b3V0RGF0YSgpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0VkaXRvclN0YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0b3JTdGF0ZS5o
CmluZGV4IDMzNDVkYzRjNGZhZjE0OWIzZWFjNDA5Nzc5YWFjYmQ1OTJkMGQ3MWQuLjYyNmYwYjRk
OGRhNDY1NDhlYTc4MzAzNDk4NWMzM2YwZWMwM2E4YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0VkaXRvclN0YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRWRpdG9y
U3RhdGUuaApAQCAtNzEsNiArNzEsMTMgQEAgc3RydWN0IEVkaXRvclN0YXRlIHsKICAgICBib29s
IGhhc0NvbXBvc2l0aW9uIHsgZmFsc2UgfTsKICAgICBib29sIGlzTWlzc2luZ1Bvc3RMYXlvdXRE
YXRhIHsgZmFsc2UgfTsKIAorICAgIGJvb2wgY2FuQ3V0IHsgZmFsc2UgfTsKKyAgICBib29sIGNh
bkNvcHkgeyBmYWxzZSB9OworICAgIGJvb2wgY2FuUGFzdGUgeyBmYWxzZSB9OworICAgIGJvb2wg
Y2FuRGVsZXRlIHsgZmFsc2UgfTsKKyAgICBib29sIGNhblVuZG8geyBmYWxzZSB9OworICAgIGJv
b2wgY2FuUmVkbyB7IGZhbHNlIH07CisKICNpZiBQTEFURk9STShJT1MpCiAgICAgV2ViQ29yZTo6
SW50UmVjdCBmaXJzdE1hcmtlZFJlY3Q7CiAgICAgV2ViQ29yZTo6SW50UmVjdCBsYXN0TWFya2Vk
UmVjdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHRE
YXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHREYXRhLmNwcApp
bmRleCBmM2U2YTVlN2I0NmRhZGVlNzdkM2Q5MDVlNjJhYzI0MDc5OGMyNjYzLi5kNzc3NTE0YTYy
NGJiZmEwZjdjYWMzMDUwMzZiNDc3MzgwYTAzNTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuY3BwCkBAIC01Myw3ICs1Myw2IEBAIFdlYkhpdFRlc3RS
ZXN1bHREYXRhOjpXZWJIaXRUZXN0UmVzdWx0RGF0YShjb25zdCBXZWJDb3JlOjpIaXRUZXN0UmVz
dWx0JiBoaXRUZXN0CiAgICAgLCBpc1NlbGVjdGVkKGhpdFRlc3RSZXN1bHQuaXNTZWxlY3RlZCgp
KQogICAgICwgaXNUZXh0Tm9kZShoaXRUZXN0UmVzdWx0LmlubmVyTm9kZSgpICYmIGhpdFRlc3RS
ZXN1bHQuaW5uZXJOb2RlKCktPmlzVGV4dE5vZGUoKSkKICAgICAsIGlzT3ZlclRleHRJbnNpZGVG
b3JtQ29udHJvbEVsZW1lbnQoaGl0VGVzdFJlc3VsdC5pc092ZXJUZXh0SW5zaWRlRm9ybUNvbnRy
b2xFbGVtZW50KCkpCi0gICAgLCBhbGxvd3NDb3B5KGhpdFRlc3RSZXN1bHQuYWxsb3dzQ29weSgp
KQogICAgICwgaXNEb3dubG9hZGFibGVNZWRpYShoaXRUZXN0UmVzdWx0LmlzRG93bmxvYWRhYmxl
TWVkaWEoKSkKICAgICAsIGltYWdlU2l6ZSgwKQogewpAQCAtNzMsNyArNzIsNiBAQCBXZWJIaXRU
ZXN0UmVzdWx0RGF0YTo6V2ViSGl0VGVzdFJlc3VsdERhdGEoY29uc3QgV2ViQ29yZTo6SGl0VGVz
dFJlc3VsdCYgaGl0VGVzdAogICAgICwgaXNTZWxlY3RlZChoaXRUZXN0UmVzdWx0LmlzU2VsZWN0
ZWQoKSkKICAgICAsIGlzVGV4dE5vZGUoaGl0VGVzdFJlc3VsdC5pbm5lck5vZGUoKSAmJiBoaXRU
ZXN0UmVzdWx0LmlubmVyTm9kZSgpLT5pc1RleHROb2RlKCkpCiAgICAgLCBpc092ZXJUZXh0SW5z
aWRlRm9ybUNvbnRyb2xFbGVtZW50KGhpdFRlc3RSZXN1bHQuaXNPdmVyVGV4dEluc2lkZUZvcm1D
b250cm9sRWxlbWVudCgpKQotICAgICwgYWxsb3dzQ29weShoaXRUZXN0UmVzdWx0LmFsbG93c0Nv
cHkoKSkKICAgICAsIGlzRG93bmxvYWRhYmxlTWVkaWEoaGl0VGVzdFJlc3VsdC5pc0Rvd25sb2Fk
YWJsZU1lZGlhKCkpCiAgICAgLCBpbWFnZVNpemUoMCkKIHsKQEAgLTEwOSw3ICsxMDcsNiBAQCB2
b2lkIFdlYkhpdFRlc3RSZXN1bHREYXRhOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAogICAgIGVuY29kZXIgPDwgaXNTZWxlY3RlZDsKICAgICBlbmNvZGVyIDw8IGlzVGV4dE5v
ZGU7CiAgICAgZW5jb2RlciA8PCBpc092ZXJUZXh0SW5zaWRlRm9ybUNvbnRyb2xFbGVtZW50Owot
ICAgIGVuY29kZXIgPDwgYWxsb3dzQ29weTsKICAgICBlbmNvZGVyIDw8IGlzRG93bmxvYWRhYmxl
TWVkaWE7CiAgICAgZW5jb2RlciA8PCBsb29rdXBUZXh0OwogICAgIGVuY29kZXIgPDwgZGljdGlv
bmFyeVBvcHVwSW5mbzsKQEAgLTE0Myw3ICsxNDAsNiBAQCBib29sIFdlYkhpdFRlc3RSZXN1bHRE
YXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBXZWJIaXRUZXN0UmVzdWx0RGF0YSYg
aAogICAgICAgICB8fCAhZGVjb2Rlci5kZWNvZGUoaGl0VGVzdFJlc3VsdERhdGEuaXNTZWxlY3Rl
ZCkKICAgICAgICAgfHwgIWRlY29kZXIuZGVjb2RlKGhpdFRlc3RSZXN1bHREYXRhLmlzVGV4dE5v
ZGUpCiAgICAgICAgIHx8ICFkZWNvZGVyLmRlY29kZShoaXRUZXN0UmVzdWx0RGF0YS5pc092ZXJU
ZXh0SW5zaWRlRm9ybUNvbnRyb2xFbGVtZW50KQotICAgICAgICB8fCAhZGVjb2Rlci5kZWNvZGUo
aGl0VGVzdFJlc3VsdERhdGEuYWxsb3dzQ29weSkKICAgICAgICAgfHwgIWRlY29kZXIuZGVjb2Rl
KGhpdFRlc3RSZXN1bHREYXRhLmlzRG93bmxvYWRhYmxlTWVkaWEpCiAgICAgICAgIHx8ICFkZWNv
ZGVyLmRlY29kZShoaXRUZXN0UmVzdWx0RGF0YS5sb29rdXBUZXh0KQogICAgICAgICB8fCAhZGVj
b2Rlci5kZWNvZGUoaGl0VGVzdFJlc3VsdERhdGEuZGljdGlvbmFyeVBvcHVwSW5mbykpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0YS5oIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuaAppbmRleCAzMjQ2OGFiYTlj
NzU2MzE3OTBhODAwYzgyYjE4ZTBkMDBhZWQ5MGM1Li5kM2NmZWVjOTk2YTA0MWFhZTBmYjkzMDcx
NTVlY2Y4MjljYmM5NWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJIaXRU
ZXN0UmVzdWx0RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkhpdFRlc3RSZXN1
bHREYXRhLmgKQEAgLTU3LDcgKzU3LDYgQEAgc3RydWN0IFdlYkhpdFRlc3RSZXN1bHREYXRhIHsK
ICAgICBib29sIGlzU2VsZWN0ZWQ7CiAgICAgYm9vbCBpc1RleHROb2RlOwogICAgIGJvb2wgaXNP
dmVyVGV4dEluc2lkZUZvcm1Db250cm9sRWxlbWVudDsKLSAgICBib29sIGFsbG93c0NvcHk7CiAg
ICAgYm9vbCBpc0Rvd25sb2FkYWJsZU1lZGlhOwogCiAgICAgU3RyaW5nIGxvb2t1cFRleHQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSGl0VGVzdFJlc3VsdC5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhpdFRlc3RSZXN1bHQuaAppbmRleCBj
ZDkzOWM5YjBhODdjY2MxYzY0N2JhYTJhOGE5MjcwNjlkYThmNmQ0Li4zMDYyMmI0ODY2NDc2NGJk
NTZkYzcwMGU1M2I5ZDg0NTcxYzc3MGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJSGl0VGVzdFJlc3VsdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElIaXRUZXN0UmVzdWx0LmgKQEAgLTcwLDggKzcwLDYgQEAgcHVibGljOgogCiAgICAg
Ym9vbCBpc092ZXJUZXh0SW5zaWRlRm9ybUNvbnRyb2xFbGVtZW50KCkgY29uc3QgeyByZXR1cm4g
bV9kYXRhLmlzT3ZlclRleHRJbnNpZGVGb3JtQ29udHJvbEVsZW1lbnQ7IH0KIAotICAgIGJvb2wg
YWxsb3dzQ29weSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5hbGxvd3NDb3B5OyB9Ci0KICAgICBi
b29sIGlzRG93bmxvYWRhYmxlTWVkaWEoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuaXNEb3dubG9h
ZGFibGVNZWRpYTsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0RWRpdG9yU3RhdGUuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0RWRpdG9yU3RhdGUuY3BwCmluZGV4IDY1NTNhOGQ1Zjg3MTM5
YTdiZWU0MTJhZWIwMWFjMDBmY2M3ZTA1ODIuLmYwMTU2ZGJlMjEzYTA3ZDNjZjIxNWFjZjdhYjEx
ZmI1MWRiMjNmNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdEVkaXRvclN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRFZGl0b3JTdGF0ZS5jcHAKQEAgLTQ4LDYgKzQ4LDEyIEBAIGVudW0gewogCiBz
dHJ1Y3QgX1dlYktpdEVkaXRvclN0YXRlUHJpdmF0ZSB7CiAgICAgdW5zaWduZWQgdHlwaW5nQXR0
cmlidXRlczsKKyAgICB1bnNpZ25lZCBpc0N1dEF2YWlsYWJsZSA6IDE7CisgICAgdW5zaWduZWQg
aXNDb3B5QXZhaWxhYmxlIDogMTsKKyAgICB1bnNpZ25lZCBpc1Bhc3RlQXZhaWxhYmxlIDogMTsK
KyAgICB1bnNpZ25lZCBpc0RlbGV0ZUF2YWlsYWJsZSA6IDE7CisgICAgdW5zaWduZWQgaXNVbmRv
QXZhaWxhYmxlIDogMTsKKyAgICB1bnNpZ25lZCBpc1JlZG9BdmFpbGFibGUgOiAxOwogfTsKIAog
V0VCS0lUX0RFRklORV9UWVBFKFdlYktpdEVkaXRvclN0YXRlLCB3ZWJraXRfZWRpdG9yX3N0YXRl
LCBHX1RZUEVfT0JKRUNUKQpAQCAtMTIzLDYgKzEyOSwxMyBAQCB2b2lkIHdlYmtpdEVkaXRvclN0
YXRlQ2hhbmdlZChXZWJLaXRFZGl0b3JTdGF0ZSogZWRpdG9yU3RhdGUsIGNvbnN0IEVkaXRvclN0
YXRlJgogICAgICAgICB0eXBpbmdBdHRyaWJ1dGVzIHw9IFdFQktJVF9FRElUT1JfVFlQSU5HX0FU
VFJJQlVURV9TVFJJS0VUSFJPVUdIOwogI2VuZGlmCiAgICAgd2Via2l0RWRpdG9yU3RhdGVTZXRU
eXBpbmdBdHRyaWJ1dGVzKGVkaXRvclN0YXRlLCB0eXBpbmdBdHRyaWJ1dGVzKTsKKworICAgIGVk
aXRvclN0YXRlLT5wcml2LT5pc0N1dEF2YWlsYWJsZSA9IG5ld1N0YXRlLmNhbkN1dDsKKyAgICBl
ZGl0b3JTdGF0ZS0+cHJpdi0+aXNDb3B5QXZhaWxhYmxlID0gbmV3U3RhdGUuY2FuQ29weTsKKyAg
ICBlZGl0b3JTdGF0ZS0+cHJpdi0+aXNQYXN0ZUF2YWlsYWJsZSA9IG5ld1N0YXRlLmNhblBhc3Rl
OworICAgIGVkaXRvclN0YXRlLT5wcml2LT5pc0RlbGV0ZUF2YWlsYWJsZSA9IG5ld1N0YXRlLmNh
bkRlbGV0ZTsKKyAgICBlZGl0b3JTdGF0ZS0+cHJpdi0+aXNVbmRvQXZhaWxhYmxlID0gbmV3U3Rh
dGUuY2FuVW5kbzsKKyAgICBlZGl0b3JTdGF0ZS0+cHJpdi0+aXNSZWRvQXZhaWxhYmxlID0gbmV3
U3RhdGUuY2FuUmVkbzsKIH0KIAogLyoqCkBAIC0xNDYsMyArMTU5LDEwNCBAQCBndWludCB3ZWJr
aXRfZWRpdG9yX3N0YXRlX2dldF90eXBpbmdfYXR0cmlidXRlcyhXZWJLaXRFZGl0b3JTdGF0ZSog
ZWRpdG9yU3RhdGUpCiAgICAgcmV0dXJuIGVkaXRvclN0YXRlLT5wcml2LT50eXBpbmdBdHRyaWJ1
dGVzOwogfQogCisvKioKKyAqIHdlYmtpdF9lZGl0b3Jfc3RhdGVfZ2V0X2lzX2N1dF9hdmFpbGFi
bGU6CisgKiBAZWRpdG9yX3N0YXRlOiBhICNXZWJLaXRFZGl0b3JTdGF0ZQorICoKKyAqIEdldHMg
d2hldGhlciBhIGN1dCBjb21tYW5kIGNhbiBiZSBpc3N1ZWQuCisgKgorICogUmV0dXJuczogJVRS
VUUgaWYgY3V0IGlzIGN1cnJlbnRseSBhdmFpbGFibGUKKyAqCisgKiBTaW5jZTogMi4yMAorICov
CitnYm9vbGVhbiB3ZWJraXRfZWRpdG9yX3N0YXRlX2dldF9pc19jdXRfYXZhaWxhYmxlKFdlYktp
dEVkaXRvclN0YXRlKiBlZGl0b3JTdGF0ZSkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChX
RUJLSVRfSVNfRURJVE9SX1NUQVRFKGVkaXRvclN0YXRlKSwgRkFMU0UpOworCisgICAgcmV0dXJu
IGVkaXRvclN0YXRlLT5wcml2LT5pc0N1dEF2YWlsYWJsZTsKK30KKworLyoqCisgKiB3ZWJraXRf
ZWRpdG9yX3N0YXRlX2dldF9pc19jb3B5X2F2YWlsYWJsZToKKyAqIEBlZGl0b3Jfc3RhdGU6IGEg
I1dlYktpdEVkaXRvclN0YXRlCisgKgorICogR2V0cyB3aGV0aGVyIGEgY29weSBjb21tYW5kIGNh
biBiZSBpc3N1ZWQuCisgKgorICogUmV0dXJuczogJVRSVUUgaWYgY29weSBpcyBjdXJyZW50bHkg
YXZhaWxhYmxlCisgKgorICogU2luY2U6IDIuMjAKKyAqLworZ2Jvb2xlYW4gd2Via2l0X2VkaXRv
cl9zdGF0ZV9nZXRfaXNfY29weV9hdmFpbGFibGUoV2ViS2l0RWRpdG9yU3RhdGUqIGVkaXRvclN0
YXRlKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19FRElUT1JfU1RBVEUo
ZWRpdG9yU3RhdGUpLCBGQUxTRSk7CisKKyAgICByZXR1cm4gZWRpdG9yU3RhdGUtPnByaXYtPmlz
Q29weUF2YWlsYWJsZTsKK30KKworLyoqCisgKiB3ZWJraXRfZWRpdG9yX3N0YXRlX2dldF9pc19w
YXN0ZV9hdmFpbGFibGU6CisgKiBAZWRpdG9yX3N0YXRlOiBhICNXZWJLaXRFZGl0b3JTdGF0ZQor
ICoKKyAqIEdldHMgd2hldGhlciBhIHBhc3RlIGNvbW1hbmQgY2FuIGJlIGlzc3VlZC4KKyAqCisg
KiBSZXR1cm5zOiAlVFJVRSBpZiBwYXN0ZSBpcyBjdXJyZW50bHkgYXZhaWxhYmxlCisgKgorICog
U2luY2U6IDIuMjAKKyAqLworZ2Jvb2xlYW4gd2Via2l0X2VkaXRvcl9zdGF0ZV9nZXRfaXNfcGFz
dGVfYXZhaWxhYmxlKFdlYktpdEVkaXRvclN0YXRlKiBlZGl0b3JTdGF0ZSkKK3sKKyAgICBnX3Jl
dHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfRURJVE9SX1NUQVRFKGVkaXRvclN0YXRlKSwgRkFM
U0UpOworCisgICAgcmV0dXJuIGVkaXRvclN0YXRlLT5wcml2LT5pc1Bhc3RlQXZhaWxhYmxlOwor
fQorCisvKioKKyAqIHdlYmtpdF9lZGl0b3Jfc3RhdGVfZ2V0X2lzX2RlbGV0ZV9hdmFpbGFibGU6
CisgKiBAZWRpdG9yX3N0YXRlOiBhICNXZWJLaXRFZGl0b3JTdGF0ZQorICoKKyAqIEdldHMgd2hl
dGhlciBhIGRlbGV0ZSBjb21tYW5kIGNhbiBiZSBpc3N1ZWQuCisgKgorICogUmV0dXJuczogJVRS
VUUgaWYgZGVsZXRlIGlzIGN1cnJlbnRseSBhdmFpbGFibGUKKyAqCisgKiBTaW5jZTogMi4yMAor
ICovCitnYm9vbGVhbiB3ZWJraXRfZWRpdG9yX3N0YXRlX2dldF9pc19kZWxldGVfYXZhaWxhYmxl
KFdlYktpdEVkaXRvclN0YXRlKiBlZGl0b3JTdGF0ZSkKK3sKKyAgICBnX3JldHVybl92YWxfaWZf
ZmFpbChXRUJLSVRfSVNfRURJVE9SX1NUQVRFKGVkaXRvclN0YXRlKSwgRkFMU0UpOworCisgICAg
cmV0dXJuIGVkaXRvclN0YXRlLT5wcml2LT5pc0RlbGV0ZUF2YWlsYWJsZTsKK30KKworLyoqCisg
KiB3ZWJraXRfZWRpdG9yX3N0YXRlX2dldF9pc191bmRvX2F2YWlsYWJsZToKKyAqIEBlZGl0b3Jf
c3RhdGU6IGEgI1dlYktpdEVkaXRvclN0YXRlCisgKgorICogR2V0cyB3aGV0aGVyIGFuIHVuZG8g
Y29tbWFuZCBjYW4gYmUgaXNzdWVkLgorICoKKyAqIFJldHVybnM6ICVUUlVFIGlmIHVuZG8gaXMg
Y3VycmVudGx5IGF2YWlsYWJsZQorICoKKyAqIFNpbmNlOiAyLjIwCisgKi8KK2dib29sZWFuIHdl
YmtpdF9lZGl0b3Jfc3RhdGVfZ2V0X2lzX3VuZG9fYXZhaWxhYmxlKFdlYktpdEVkaXRvclN0YXRl
KiBlZGl0b3JTdGF0ZSkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfRURJ
VE9SX1NUQVRFKGVkaXRvclN0YXRlKSwgRkFMU0UpOworCisgICAgcmV0dXJuIGVkaXRvclN0YXRl
LT5wcml2LT5pc1VuZG9BdmFpbGFibGU7Cit9CisKKy8qKgorICogd2Via2l0X2VkaXRvcl9zdGF0
ZV9nZXRfaXNfcmVkb19hdmFpbGFibGU6CisgKiBAZWRpdG9yX3N0YXRlOiBhICNXZWJLaXRFZGl0
b3JTdGF0ZQorICoKKyAqIEdldHMgd2hldGhlciBhIHJlZG8gY29tbWFuZCBjYW4gYmUgaXNzdWVk
LgorICoKKyAqIFJldHVybnM6ICVUUlVFIGlmIHJlZG8gaXMgY3VycmVudGx5IGF2YWlsYWJsZQor
ICoKKyAqIFNpbmNlOiAyLjIwCisgKi8KK2dib29sZWFuIHdlYmtpdF9lZGl0b3Jfc3RhdGVfZ2V0
X2lzX3JlZG9fYXZhaWxhYmxlKFdlYktpdEVkaXRvclN0YXRlKiBlZGl0b3JTdGF0ZSkKK3sKKyAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfRURJVE9SX1NUQVRFKGVkaXRvclN0YXRl
KSwgRkFMU0UpOworCisgICAgcmV0dXJuIGVkaXRvclN0YXRlLT5wcml2LT5pc1JlZG9BdmFpbGFi
bGU7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dEVkaXRvclN0YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEVk
aXRvclN0YXRlLmgKaW5kZXggOGE0Nzc1NWYwYzFiZGQwYWQ3MWQxMmE5M2RiYWFlYWVkYjM4MGIz
Yy4uYjEwZjc0ZDdkMTFkODU2N2YyOTE3OWIwOTY2YjQ5ODNiNmM5NjE4MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRFZGl0b3JTdGF0ZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RWRpdG9yU3RhdGUuaApAQCAt
NzcsMTAgKzc3LDI4IEBAIHN0cnVjdCBfV2ViS2l0RWRpdG9yU3RhdGVDbGFzcyB7CiB9OwogCiBX
RUJLSVRfQVBJIEdUeXBlCi13ZWJraXRfZWRpdG9yX3N0YXRlX2dldF90eXBlICAgICAgICAgICAg
ICAodm9pZCk7Cit3ZWJraXRfZWRpdG9yX3N0YXRlX2dldF90eXBlICAgICAgICAgICAgICAgKHZv
aWQpOwogCiBXRUJLSVRfQVBJIGd1aW50Ci13ZWJraXRfZWRpdG9yX3N0YXRlX2dldF90eXBpbmdf
YXR0cmlidXRlcyAoV2ViS2l0RWRpdG9yU3RhdGUgKmVkaXRvcl9zdGF0ZSk7Cit3ZWJraXRfZWRp
dG9yX3N0YXRlX2dldF90eXBpbmdfYXR0cmlidXRlcyAgIChXZWJLaXRFZGl0b3JTdGF0ZSAqZWRp
dG9yX3N0YXRlKTsKKworV0VCS0lUX0FQSSBnYm9vbGVhbgord2Via2l0X2VkaXRvcl9zdGF0ZV9n
ZXRfaXNfY3V0X2F2YWlsYWJsZSAgICAoV2ViS2l0RWRpdG9yU3RhdGUgKmVkaXRvcl9zdGF0ZSk7
CisKK1dFQktJVF9BUEkgZ2Jvb2xlYW4KK3dlYmtpdF9lZGl0b3Jfc3RhdGVfZ2V0X2lzX2NvcHlf
YXZhaWxhYmxlICAgKFdlYktpdEVkaXRvclN0YXRlICplZGl0b3Jfc3RhdGUpOworCitXRUJLSVRf
QVBJIGdib29sZWFuCit3ZWJraXRfZWRpdG9yX3N0YXRlX2dldF9pc19wYXN0ZV9hdmFpbGFibGUg
IChXZWJLaXRFZGl0b3JTdGF0ZSAqZWRpdG9yX3N0YXRlKTsKKworV0VCS0lUX0FQSSBnYm9vbGVh
bgord2Via2l0X2VkaXRvcl9zdGF0ZV9nZXRfaXNfZGVsZXRlX2F2YWlsYWJsZSAoV2ViS2l0RWRp
dG9yU3RhdGUgKmVkaXRvcl9zdGF0ZSk7CisKK1dFQktJVF9BUEkgZ2Jvb2xlYW4KK3dlYmtpdF9l
ZGl0b3Jfc3RhdGVfZ2V0X2lzX3VuZG9fYXZhaWxhYmxlICAgKFdlYktpdEVkaXRvclN0YXRlICpl
ZGl0b3Jfc3RhdGUpOworCitXRUJLSVRfQVBJIGdib29sZWFuCit3ZWJraXRfZWRpdG9yX3N0YXRl
X2dldF9pc19yZWRvX2F2YWlsYWJsZSAgIChXZWJLaXRFZGl0b3JTdGF0ZSAqZWRpdG9yX3N0YXRl
KTsKIAogR19FTkRfREVDTFMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKaW5kZXgg
NWRiNzhjOTc5Zjg0NGU3Yjk4OTFhMDRhMDk0NDY3NDVkMzkwMjgxZC4uYzZlMzY5MTBhYmEwZmI0
ZTFlMDE2YzVhYWUxNGRkOTU2ZTcxZDdjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMu
dHh0CkBAIC04MjIsNiArODIyLDEyIEBAIHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfZ2V0X3R5cGUK
IFdlYktpdEVkaXRvclN0YXRlCiBXZWJLaXRFZGl0b3JUeXBpbmdBdHRyaWJ1dGVzCiB3ZWJraXRf
ZWRpdG9yX3N0YXRlX2dldF90eXBpbmdfYXR0cmlidXRlcword2Via2l0X2VkaXRvcl9zdGF0ZV9n
ZXRfaXNfY3V0X2F2YWlsYWJsZQord2Via2l0X2VkaXRvcl9zdGF0ZV9nZXRfaXNfY29weV9hdmFp
bGFibGUKK3dlYmtpdF9lZGl0b3Jfc3RhdGVfZ2V0X2lzX3Bhc3RlX2F2YWlsYWJsZQord2Via2l0
X2VkaXRvcl9zdGF0ZV9nZXRfaXNfZGVsZXRlX2F2YWlsYWJsZQord2Via2l0X2VkaXRvcl9zdGF0
ZV9nZXRfaXNfdW5kb19hdmFpbGFibGUKK3dlYmtpdF9lZGl0b3Jfc3RhdGVfZ2V0X2lzX3JlZG9f
YXZhaWxhYmxlCiAKIDxTVUJTRUNUSU9OIFN0YW5kYXJkPgogV2ViS2l0RWRpdG9yU3RhdGVDbGFz
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRFZGl0
b3JTdGF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRFZGl0b3JT
dGF0ZS5oCmluZGV4IDhjZjY1OTVjMDBhZTM5ODIzMjRmNDE3YTRjOTIxZWYxYWI0MmYyMGYuLjky
Zjk0ZGQ4YmViYWJiN2Q2Y2QwZTgzOTBhOWNkNzBjMDcyMDA4NmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0RWRpdG9yU3RhdGUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdEVkaXRvclN0YXRlLmgKQEAgLTc3LDEw
ICs3NywyOCBAQCBzdHJ1Y3QgX1dlYktpdEVkaXRvclN0YXRlQ2xhc3MgewogfTsKIAogV0VCS0lU
X0FQSSBHVHlwZQotd2Via2l0X2VkaXRvcl9zdGF0ZV9nZXRfdHlwZSAgICAgICAgICAgICAgKHZv
aWQpOword2Via2l0X2VkaXRvcl9zdGF0ZV9nZXRfdHlwZSAgICAgICAgICAgICAgICh2b2lkKTsK
IAogV0VCS0lUX0FQSSBndWludAotd2Via2l0X2VkaXRvcl9zdGF0ZV9nZXRfdHlwaW5nX2F0dHJp
YnV0ZXMgKFdlYktpdEVkaXRvclN0YXRlICplZGl0b3Jfc3RhdGUpOword2Via2l0X2VkaXRvcl9z
dGF0ZV9nZXRfdHlwaW5nX2F0dHJpYnV0ZXMgICAoV2ViS2l0RWRpdG9yU3RhdGUgKmVkaXRvcl9z
dGF0ZSk7CisKK1dFQktJVF9BUEkgZ2Jvb2xlYW4KK3dlYmtpdF9lZGl0b3Jfc3RhdGVfZ2V0X2lz
X2N1dF9hdmFpbGFibGUgICAgKFdlYktpdEVkaXRvclN0YXRlICplZGl0b3Jfc3RhdGUpOworCitX
RUJLSVRfQVBJIGdib29sZWFuCit3ZWJraXRfZWRpdG9yX3N0YXRlX2dldF9pc19jb3B5X2F2YWls
YWJsZSAgIChXZWJLaXRFZGl0b3JTdGF0ZSAqZWRpdG9yX3N0YXRlKTsKKworV0VCS0lUX0FQSSBn
Ym9vbGVhbgord2Via2l0X2VkaXRvcl9zdGF0ZV9nZXRfaXNfcGFzdGVfYXZhaWxhYmxlICAoV2Vi
S2l0RWRpdG9yU3RhdGUgKmVkaXRvcl9zdGF0ZSk7CisKK1dFQktJVF9BUEkgZ2Jvb2xlYW4KK3dl
YmtpdF9lZGl0b3Jfc3RhdGVfZ2V0X2lzX2RlbGV0ZV9hdmFpbGFibGUgKFdlYktpdEVkaXRvclN0
YXRlICplZGl0b3Jfc3RhdGUpOworCitXRUJLSVRfQVBJIGdib29sZWFuCit3ZWJraXRfZWRpdG9y
X3N0YXRlX2dldF9pc191bmRvX2F2YWlsYWJsZSAgIChXZWJLaXRFZGl0b3JTdGF0ZSAqZWRpdG9y
X3N0YXRlKTsKKworV0VCS0lUX0FQSSBnYm9vbGVhbgord2Via2l0X2VkaXRvcl9zdGF0ZV9nZXRf
aXNfcmVkb19hdmFpbGFibGUgICAoV2ViS2l0RWRpdG9yU3RhdGUgKmVkaXRvcl9zdGF0ZSk7CiAK
IEdfRU5EX0RFQ0xTCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKaW5kZXggMWVhN2EzYzJmNWI3YTU4MzE5NTQ3ZTk2YTcyOTExMzc1M2IwNGM3ZC4uMTZk
NzUxZjdlYmI0MzY0MzkzZjY0N2ExYmQwMGI4OTZkOTM4MTRlYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTg1NSw2ICs4NTUsMTUgQEAgRWRp
dG9yU3RhdGUgV2ViUGFnZTo6ZWRpdG9yU3RhdGUoSW5jbHVkZVBvc3RMYXlvdXREYXRhSGludCBz
aG91bGRJbmNsdWRlUG9zdExheW8KICAgICByZXN1bHQuaGFzQ29tcG9zaXRpb24gPSBmcmFtZS5l
ZGl0b3IoKS5oYXNDb21wb3NpdGlvbigpOwogICAgIHJlc3VsdC5zaG91bGRJZ25vcmVTZWxlY3Rp
b25DaGFuZ2VzID0gZnJhbWUuZWRpdG9yKCkuaWdub3JlU2VsZWN0aW9uQ2hhbmdlcygpOwogCisg
ICAgY29uc3QgRWRpdG9yJiBlZGl0b3IgPSBmcmFtZS5lZGl0b3IoKTsKKworICAgIHJlc3VsdC5j
YW5DdXQgPSBlZGl0b3IuY2FuQ3V0KCk7CisgICAgcmVzdWx0LmNhbkNvcHkgPSBlZGl0b3IuY2Fu
Q29weSgpOworICAgIHJlc3VsdC5jYW5QYXN0ZSA9IGVkaXRvci5jYW5QYXN0ZSgpOworICAgIHJl
c3VsdC5jYW5EZWxldGUgPSBlZGl0b3IuY2FuRGVsZXRlKCk7CisgICAgcmVzdWx0LmNhblVuZG8g
PSBlZGl0b3IuY2FuVW5kbygpOworICAgIHJlc3VsdC5jYW5SZWRvID0gZWRpdG9yLmNhblJlZG8o
KTsKKwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGJvb2wgY2FuSW5jbHVkZVBvc3RMYXlvdXRE
YXRhID0gZnJhbWUudmlldygpICYmICFmcmFtZS52aWV3KCktPm5lZWRzTGF5b3V0KCk7CiAgICAg
aWYgKHNob3VsZEluY2x1ZGVQb3N0TGF5b3V0RGF0YSA9PSBJbmNsdWRlUG9zdExheW91dERhdGFI
aW50OjpZZXMgJiYgY2FuSW5jbHVkZVBvc3RMYXlvdXREYXRhICYmIHJlc3VsdC5pc0NvbnRlbnRF
ZGl0YWJsZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1dlYlBhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
V2ViUGFnZU1hYy5tbQppbmRleCAzNmFmNWE5NmY4NDFkNTcwNzc5NjFiMjU5YWI5NDIyNWEzZDZl
YWYwLi4zNjIxYWRlYmNiMGNkNjE5MzMzYWE2ZTFjZTNjNTZlOTdjNzAwZjYwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQpAQCAt
MTA4MCw3ICsxMDgwLDYgQEAgdm9pZCBXZWJQYWdlOjpwZXJmb3JtSW1tZWRpYXRlQWN0aW9uSGl0
VGVzdEF0TG9jYXRpb24oV2ViQ29yZTo6RmxvYXRQb2ludCBsb2NhdGkKICAgICAgICAgICAgICAg
ICBpbW1lZGlhdGVBY3Rpb25SZXN1bHQubG9va3VwVGV4dCA9IHNlbGVjdGVkVGV4dDsKICAgICAg
ICAgICAgICAgICBpbW1lZGlhdGVBY3Rpb25SZXN1bHQuaXNUZXh0Tm9kZSA9IHRydWU7CiAgICAg
ICAgICAgICAgICAgaW1tZWRpYXRlQWN0aW9uUmVzdWx0LmlzU2VsZWN0ZWQgPSB0cnVlOwotICAg
ICAgICAgICAgICAgIGltbWVkaWF0ZUFjdGlvblJlc3VsdC5hbGxvd3NDb3B5ID0gdHJ1ZTsKIAog
ICAgICAgICAgICAgICAgIGltbWVkaWF0ZUFjdGlvblJlc3VsdC5kaWN0aW9uYXJ5UG9wdXBJbmZv
ID0gZGljdGlvbmFyeVBvcHVwSW5mb0ZvclNlbGVjdGlvbkluUERGUGx1Z2luKHNlbGVjdGlvbiwg
KnBkZlB1Z2luLCAmb3B0aW9ucywgVGV4dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5zaXRpb246
OkZhZGVJbik7CiAgICAgICAgICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>322148</attachid>
            <date>2017-09-28 17:25:51 -0700</date>
            <delta_ts>2017-10-02 07:03:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-168219-20170928192550.patch</filename>
            <type>text/plain</type>
            <size>37567</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyNTAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmQwNThhZmE4ODMwNjRj
OTAzMjllM2I4YjYzZThiMTRlYTllNmJhMy4uMTM4YWFmOWQ1ZDJiNTRiY2QwZTgwOWZhN2QyMGIw
ZjY1NGQ4MDNhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE3LTA5LTI4ICBNaWNo
YWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KKworICAgICAgICBbV1BFXVtH
VEtdIEV4cG9zZSBhdmFpbGFiaWxpdHkgb2YgY2VydGFpbiBlZGl0aW5nIGNvbW1hbmRzIGluIFdl
YktpdEVkaXRvclN0YXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNjgyMTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBNYWtlIEVkaXRvcjo6Y2FuVW5kbyBhbmQgRWRpdG9yOjpjYW5SZWRvIGNvbnN0Lgor
CisgICAgICAgIEFsc28sIHJlbW92ZSB1bnVzZWQgYWxsb3dzQ29weSBmcm9tIEhpdFRlc3RSZXN1
bHQuCisKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0b3I6OmNhblVuZG8gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpjYW5SZWRv
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Y2FuVW5kbyk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmNhblJlZG8pOiBEZWxldGVkLgorICAgICAgICAqIGVk
aXRpbmcvRWRpdG9yLmg6CisgICAgICAgICogcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6YWxsb3dzQ29weSBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICogcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaDoKKwogMjAxNy0wOS0yNiAg
WmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0VNRV0gQWRk
IENsZWFyS2V5IHN1cHBvcnQgZm9yIHBlcnNpc3RlbnQgc2Vzc2lvbiBkYXRhIGxvYWQgYW5kIHJl
bW92YWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggY2YzYzdjNGIxZTU4OGQ1NGEwZDM4M2FiZjdkNDQyZTQwMzUzM2Ni
YS4uN2VhMDk2ZjcyZTlmZDRmMWZkNTgzNzE4ZmU4YzM5YzRjNjg1ZGMwYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw0OCBAQAorMjAxNy0wOS0yOCAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJv
QGlnYWxpYS5jb20+CisKKyAgICAgICAgW1dQRV1bR1RLXSBFeHBvc2UgYXZhaWxhYmlsaXR5IG9m
IGNlcnRhaW4gZWRpdGluZyBjb21tYW5kcyBpbiBXZWJLaXRFZGl0b3JTdGF0ZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY4MjE5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhwb3NlIGNhbkN1dCwgY2Fu
Q29weSwgY2FuUGFzdGUsIGNhblVuZG8sIGFuZCBjYW5SZWRvIGluIEVkaXRvclN0YXRlOjpQb3N0
TGF5b3VEYXRhLgorCisgICAgICAgIEFkZCBjb3JyZXNwb25kaW5nIG5ldyBXUEUvR1RLIEFQSS4K
KworICAgICAgICBSZW1vdmUgYWxsb3dzQ29weSBmcm9tIFdlYktpdFRlc3RSZXN1bHREYXRhLiBJ
dCdzIHVudXNlZCBhbmQgZG9lcyBub3Qgd29yayBjb3JyZWN0bHkgaW4gYWxsCisgICAgICAgIGNp
cmN1bXN0YW5jZXMuCisKKyAgICAgICAgQWxzbywgcmVtb3ZlIGEgYnVuY2ggb2YgI2lmcyBndWFy
ZGluZyBwb3N0IGxheW91dCBkYXRhLCBzaW5jZSBpdCdzIG5vdyB1c2VkIG9uIGFsbCBwb3J0cy4K
KworICAgICAgICAqIFNoYXJlZC9FZGl0b3JTdGF0ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkVk
aXRvclN0YXRlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JTdGF0ZTo6
ZGVjb2RlKToKKyAgICAgICAgKFdlYktpdDo6RWRpdG9yU3RhdGU6OlBvc3RMYXlvdXREYXRhOjpl
bmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JTdGF0ZTo6UG9zdExheW91dERh
dGE6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL0VkaXRvclN0YXRlLmg6CisgICAgICAgIChX
ZWJLaXQ6OkVkaXRvclN0YXRlOjpwb3N0TGF5b3V0RGF0YSBjb25zdCBjb25zdCk6CisgICAgICAg
ICogU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHREYXRhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
SGl0VGVzdFJlc3VsdERhdGE6OldlYkhpdFRlc3RSZXN1bHREYXRhKToKKyAgICAgICAgKFdlYktp
dDo6V2ViSGl0VGVzdFJlc3VsdERhdGE6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6
OldlYkhpdFRlc3RSZXN1bHREYXRhOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJIaXRU
ZXN0UmVzdWx0RGF0YS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSGl0VGVzdFJlc3Vs
dC5oOgorICAgICAgICAoQVBJOjpIaXRUZXN0UmVzdWx0OjphbGxvd3NDb3B5IGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RWRpdG9yU3RhdGUuY3Bw
OgorICAgICAgICAod2Via2l0RWRpdG9yU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKHdlYmtpdF9l
ZGl0b3Jfc3RhdGVfZ2V0X2lzX2N1dF9hdmFpbGFibGUpOgorICAgICAgICAod2Via2l0X2VkaXRv
cl9zdGF0ZV9nZXRfaXNfY29weV9hdmFpbGFibGUpOgorICAgICAgICAod2Via2l0X2VkaXRvcl9z
dGF0ZV9nZXRfaXNfcGFzdGVfYXZhaWxhYmxlKToKKyAgICAgICAgKHdlYmtpdF9lZGl0b3Jfc3Rh
dGVfZ2V0X2lzX3VuZG9fYXZhaWxhYmxlKToKKyAgICAgICAgKHdlYmtpdF9lZGl0b3Jfc3RhdGVf
Z2V0X2lzX3JlZG9fYXZhaWxhYmxlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRFZGl0b3JTdGF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0
Mmd0ay00LjAtc2VjdGlvbnMudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL1dlYktp
dEVkaXRvclN0YXRlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjplZGl0b3JTdGF0ZSBjb25zdCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjpwZXJmb3JtSW1tZWRpYXRlQWN0aW9uSGl0VGVzdEF0TG9jYXRpb24pOgorCiAy
MDE3LTA5LTI1ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgTWFrZSBQb2xpY3lBY3Rpb24gYW4gZW5jb2RhYmxlIGVudW0gY2xhc3MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCAzNjhjMjQ0YzNiNzhjMGFjZDE5ZDNlMWMwZmM3YzM2
ZjBjNDc0ZjUyLi5lMjQ3Yzg3ZjI5OTc0ZDIwMzIzYjU0NTNiYTkyOTQyNGQ5OThmMWUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC0xNTkzLDcgKzE1OTMsNyBAQCB2b2lkIEVkaXRv
cjo6Y2xlYXJVbmRvUmVkb09wZXJhdGlvbnMoKQogICAgICAgICBjbGllbnQoKS0+Y2xlYXJVbmRv
UmVkb09wZXJhdGlvbnMoKTsKIH0KIAotYm9vbCBFZGl0b3I6OmNhblVuZG8oKQorYm9vbCBFZGl0
b3I6OmNhblVuZG8oKSBjb25zdAogewogICAgIHJldHVybiBjbGllbnQoKSAmJiBjbGllbnQoKS0+
Y2FuVW5kbygpOwogfQpAQCAtMTYwNCw3ICsxNjA0LDcgQEAgdm9pZCBFZGl0b3I6OnVuZG8oKQog
ICAgICAgICBjbGllbnQoKS0+dW5kbygpOwogfQogCi1ib29sIEVkaXRvcjo6Y2FuUmVkbygpCiti
b29sIEVkaXRvcjo6Y2FuUmVkbygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGNsaWVudCgpICYmIGNs
aWVudCgpLT5jYW5SZWRvKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAppbmRleCAzYzBmZWVh
NjczODgzNGE3MThkY2E5NzljOTlhZDdhOWU0ZWQ0Y2ZmLi5lNTFlOTBmNTk0OWY2YjkwNjI1YTI1
Mjk1NmNmNzhlNDI4M2JlNTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAgLTMwNCw5ICsz
MDQsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBzaG91bGRFbmRFZGl0aW5nKFJhbmdlKik7CiAKICAg
ICB2b2lkIGNsZWFyVW5kb1JlZG9PcGVyYXRpb25zKCk7Ci0gICAgYm9vbCBjYW5VbmRvKCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjYW5VbmRvKCkgY29uc3Q7CiAgICAgdm9pZCB1bmRvKCk7
Ci0gICAgYm9vbCBjYW5SZWRvKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjYW5SZWRvKCkg
Y29uc3Q7CiAgICAgdm9pZCByZWRvKCk7CiAKICAgICB2b2lkIGRpZEJlZ2luRWRpdGluZygpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCmluZGV4IGI3MjcwYTUw
MmFlZWQ3NDcxY2VkNjM2ZDYxZWQ1ZTVmZjg3ZjdhZDkuLjRjZWY5YmE4NjE1MTZhNjlmM2Q3YWQ4
M2EyMmZkNzgxYTQ0MTJmZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9I
aXRUZXN0UmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJl
c3VsdC5jcHAKQEAgLTU5NiwyMSArNTk2LDYgQEAgYm9vbCBIaXRUZXN0UmVzdWx0Ojppc092ZXJU
ZXh0SW5zaWRlRm9ybUNvbnRyb2xFbGVtZW50KCkgY29uc3QKICAgICByZXR1cm4gIXdvcmRSYW5n
ZS0+dGV4dCgpLmlzRW1wdHkoKTsKIH0KIAotYm9vbCBIaXRUZXN0UmVzdWx0OjphbGxvd3NDb3B5
KCkgY29uc3QKLXsKLSAgICBOb2RlKiBub2RlID0gaW5uZXJOb2RlKCk7Ci0gICAgaWYgKCFub2Rl
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0g
bm9kZS0+cmVuZGVyZXIoKTsKLSAgICBpZiAoIXJlbmRlcmVyKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICBib29sIGlzVXNlclNlbGVjdE5vbmUgPSByZW5kZXJlci0+c3R5bGUoKS51c2Vy
U2VsZWN0KCkgPT0gU0VMRUNUX05PTkU7Ci0gICAgYm9vbCBpc1Bhc3N3b3JkRmllbGQgPSBpczxI
VE1MSW5wdXRFbGVtZW50Pihub2RlKSAmJiBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50Pigqbm9k
ZSkuaXNQYXNzd29yZEZpZWxkKCk7Ci0gICAgcmV0dXJuICFpc1Bhc3N3b3JkRmllbGQgJiYgIWlz
VXNlclNlbGVjdE5vbmU7Ci19Ci0KIFVSTCBIaXRUZXN0UmVzdWx0OjphYnNvbHV0ZUxpbmtVUkwo
KSBjb25zdAogewogICAgIGlmIChtX2lubmVyVVJMRWxlbWVudCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvSGl0VGVzdFJlc3VsdC5oCmluZGV4IGJhMmQ3YTJhNTkwYjVhNzQ1NGI1YWY0ZGNiOTY4
NjJhYzlmODAyZWQuLjA0YjM4ODJmMGUyZTA4YjIyOGQ5NzQzY2RmMjE1OTNhNzQwZTA1ZDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaApAQCAtMTMxLDcgKzEzMSw2
IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNEb3dubG9hZGFibGVNZWRp
YSgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNPdmVyVGV4dEluc2lkZUZvcm1D
b250cm9sRWxlbWVudCgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgYWxsb3dzQ29w
eSgpIGNvbnN0OwogCiAgICAgSGl0VGVzdFByb2dyZXNzIGFkZE5vZGVUb0xpc3RCYXNlZFRlc3RS
ZXN1bHQoTm9kZSosIGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgY29uc3QgSGl0VGVzdExvY2F0aW9u
JiBwb2ludEluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRSZWN0JiA9IExheW91dFJlY3QoKSk7CiAg
ICAgSGl0VGVzdFByb2dyZXNzIGFkZE5vZGVUb0xpc3RCYXNlZFRlc3RSZXN1bHQoTm9kZSosIGNv
bnN0IEhpdFRlc3RSZXF1ZXN0JiwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiBwb2ludEluQ29udGFp
bmVyLCBjb25zdCBGbG9hdFJlY3QmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0VkaXRvclN0YXRlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRvclN0YXRlLmNwcApp
bmRleCA2ZjljZjQ4YmViZjBiYjI5MWQzNjY1NGI5OGYzZjhkMGE1MTQ2MzkxLi5iZGY2OTM1NTZm
NmYwNzA0NDliMDkwN2Q2YTQxZDRkMzAwMTJhMmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9FZGl0b3JTdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRWRpdG9y
U3RhdGUuY3BwCkBAIC00MiwxMCArNDIsOCBAQCB2b2lkIEVkaXRvclN0YXRlOjplbmNvZGUoSVBD
OjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgaGFzQ29tcG9zaXRpb247
CiAgICAgZW5jb2RlciA8PCBpc01pc3NpbmdQb3N0TGF5b3V0RGF0YTsKIAotI2lmIFBMQVRGT1JN
KElPUykgfHwgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShNQUMpCiAgICAgaWYgKCFpc01pc3Np
bmdQb3N0TGF5b3V0RGF0YSkKICAgICAgICAgbV9wb3N0TGF5b3V0RGF0YS5lbmNvZGUoZW5jb2Rl
cik7Ci0jZW5kaWYKIAogI2lmIFBMQVRGT1JNKElPUykKICAgICBlbmNvZGVyIDw8IGZpcnN0TWFy
a2VkUmVjdDsKQEAgLTgzLDEyICs4MSwxMCBAQCBib29sIEVkaXRvclN0YXRlOjpkZWNvZGUoSVBD
OjpEZWNvZGVyJiBkZWNvZGVyLCBFZGl0b3JTdGF0ZSYgcmVzdWx0KQogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocmVzdWx0LmlzTWlzc2luZ1Bvc3RMYXlvdXREYXRhKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0jaWYgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShHVEspIHx8IFBMQVRGT1JN
KE1BQykKICAgICBpZiAoIXJlc3VsdC5pc01pc3NpbmdQb3N0TGF5b3V0RGF0YSkgewogICAgICAg
ICBpZiAoIVBvc3RMYXlvdXREYXRhOjpkZWNvZGUoZGVjb2RlciwgcmVzdWx0LnBvc3RMYXlvdXRE
YXRhKCkpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSNlbmRpZgogCiAjaWYg
UExBVEZPUk0oSU9TKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmZpcnN0TWFya2Vk
UmVjdCkpCkBAIC0xMDIsNyArOTgsNiBAQCBib29sIEVkaXRvclN0YXRlOjpkZWNvZGUoSVBDOjpE
ZWNvZGVyJiBkZWNvZGVyLCBFZGl0b3JTdGF0ZSYgcmVzdWx0KQogICAgIHJldHVybiB0cnVlOwog
fQogCi0jaWYgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKE1BQykK
IHZvaWQgRWRpdG9yU3RhdGU6OlBvc3RMYXlvdXREYXRhOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIgPDwgdHlwaW5nQXR0cmlidXRlczsKQEAgLTEz
Myw2ICsxMjgsMTEgQEAgdm9pZCBFZGl0b3JTdGF0ZTo6UG9zdExheW91dERhdGE6OmVuY29kZShJ
UEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBwYXJhZ3JhcGhDb250
ZXh0Rm9yQ2FuZGlkYXRlUmVxdWVzdDsKICAgICBlbmNvZGVyIDw8IHN0cmluZ0ZvckNhbmRpZGF0
ZVJlcXVlc3Q7CiAjZW5kaWYKKyAgICBlbmNvZGVyIDw8IGNhbkN1dDsKKyAgICBlbmNvZGVyIDw8
IGNhbkNvcHk7CisgICAgZW5jb2RlciA8PCBjYW5QYXN0ZTsKKyAgICBlbmNvZGVyIDw8IGNhblVu
ZG87CisgICAgZW5jb2RlciA8PCBjYW5SZWRvOwogfQogCiBib29sIEVkaXRvclN0YXRlOjpQb3N0
TGF5b3V0RGF0YTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgUG9zdExheW91dERhdGEm
IHJlc3VsdCkKQEAgLTE4OCw4ICsxODgsMTggQEAgYm9vbCBFZGl0b3JTdGF0ZTo6UG9zdExheW91
dERhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFBvc3RMYXlvdXREYXRhJgogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKIAorICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVz
dWx0LmNhbkN1dCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHJlc3VsdC5jYW5Db3B5KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocmVzdWx0LmNhblBhc3RlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmNhblVuZG8pKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuY2FuUmVkbykpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKwogICAgIHJldHVybiB0cnVlOwogfQotI2VuZGlmIC8vIFBMQVRGT1JNKElP
UykgfHwgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShNQUMpCiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRvclN0YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9F
ZGl0b3JTdGF0ZS5oCmluZGV4IDMzNDVkYzRjNGZhZjE0OWIzZWFjNDA5Nzc5YWFjYmQ1OTJkMGQ3
MWQuLjRmNTMyNjFhY2M0MmRhZTMwMDcyOWQxN2RjZDNjMGZhNzkyYWU4ZTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRvclN0YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvRWRpdG9yU3RhdGUuaApAQCAtNzcsNyArNzcsNiBAQCBzdHJ1Y3QgRWRpdG9yU3RhdGUg
ewogICAgIFN0cmluZyBtYXJrZWRUZXh0OwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1MpIHx8
IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oTUFDKQogICAgIHN0cnVjdCBQb3N0TGF5b3V0RGF0
YSB7CiAgICAgICAgIHVpbnQzMl90IHR5cGluZ0F0dHJpYnV0ZXMgeyBBdHRyaWJ1dGVOb25lIH07
CiAjaWYgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShHVEspCkBAIC0xMDgsMjQgKzEwNywyNiBA
QCBzdHJ1Y3QgRWRpdG9yU3RhdGUgewogICAgICAgICBTdHJpbmcgc3RyaW5nRm9yQ2FuZGlkYXRl
UmVxdWVzdDsKICNlbmRpZgogCisgICAgICAgIGJvb2wgY2FuQ3V0IHsgZmFsc2UgfTsKKyAgICAg
ICAgYm9vbCBjYW5Db3B5IHsgZmFsc2UgfTsKKyAgICAgICAgYm9vbCBjYW5QYXN0ZSB7IGZhbHNl
IH07CisgICAgICAgIGJvb2wgY2FuVW5kbyB7IGZhbHNlIH07CisgICAgICAgIGJvb2wgY2FuUmVk
byB7IGZhbHNlIH07CisKICAgICAgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7
CiAgICAgICAgIHN0YXRpYyBib29sIGRlY29kZShJUEM6OkRlY29kZXImLCBQb3N0TGF5b3V0RGF0
YSYpOwogICAgIH07CiAKICAgICBjb25zdCBQb3N0TGF5b3V0RGF0YSYgcG9zdExheW91dERhdGEo
KSBjb25zdDsKICAgICBQb3N0TGF5b3V0RGF0YSYgcG9zdExheW91dERhdGEoKTsKLSNlbmRpZiAv
LyBQTEFURk9STShJT1MpIHx8IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oTUFDKQogCiAgICAg
dm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7CiAgICAgc3RhdGljIGJvb2wgZGVjb2Rl
KElQQzo6RGVjb2RlciYsIEVkaXRvclN0YXRlJik7CiAKLSNpZiBQTEFURk9STShJT1MpIHx8IFBM
QVRGT1JNKEdUSykgfHwgUExBVEZPUk0oTUFDKQogcHJpdmF0ZToKICAgICBQb3N0TGF5b3V0RGF0
YSBtX3Bvc3RMYXlvdXREYXRhOwotI2VuZGlmCiB9OwogCi0jaWYgUExBVEZPUk0oSU9TKSB8fCBQ
TEFURk9STShHVEspIHx8IFBMQVRGT1JNKE1BQykKIGlubGluZSBhdXRvIEVkaXRvclN0YXRlOjpw
b3N0TGF5b3V0RGF0YSgpIC0+IFBvc3RMYXlvdXREYXRhJgogewogICAgIEFTU0VSVF9XSVRIX01F
U1NBR0UoIWlzTWlzc2luZ1Bvc3RMYXlvdXREYXRhLCAiQXR0ZW1wdCB0byBhY2Nlc3MgcG9zdCBs
YXlvdXQgZGF0YSBiZWZvcmUgcmVjZWl2aW5nIGl0Iik7CkBAIC0xMzcsNyArMTM4LDYgQEAgaW5s
aW5lIGF1dG8gRWRpdG9yU3RhdGU6OnBvc3RMYXlvdXREYXRhKCkgY29uc3QgLT4gY29uc3QgUG9z
dExheW91dERhdGEmCiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghaXNNaXNzaW5nUG9zdExheW91
dERhdGEsICJBdHRlbXB0IHRvIGFjY2VzcyBwb3N0IGxheW91dCBkYXRhIGJlZm9yZSByZWNlaXZp
bmcgaXQiKTsKICAgICByZXR1cm4gbV9wb3N0TGF5b3V0RGF0YTsKIH0KLSNlbmRpZgogCiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHREYXRhLmNw
cCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHREYXRhLmNwcAppbmRleCBm
M2U2YTVlN2I0NmRhZGVlNzdkM2Q5MDVlNjJhYzI0MDc5OGMyNjYzLi5kNzc3NTE0YTYyNGJiZmEw
ZjdjYWMzMDUwMzZiNDc3MzgwYTAzNTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJIaXRUZXN0UmVzdWx0RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
SGl0VGVzdFJlc3VsdERhdGEuY3BwCkBAIC01Myw3ICs1Myw2IEBAIFdlYkhpdFRlc3RSZXN1bHRE
YXRhOjpXZWJIaXRUZXN0UmVzdWx0RGF0YShjb25zdCBXZWJDb3JlOjpIaXRUZXN0UmVzdWx0JiBo
aXRUZXN0CiAgICAgLCBpc1NlbGVjdGVkKGhpdFRlc3RSZXN1bHQuaXNTZWxlY3RlZCgpKQogICAg
ICwgaXNUZXh0Tm9kZShoaXRUZXN0UmVzdWx0LmlubmVyTm9kZSgpICYmIGhpdFRlc3RSZXN1bHQu
aW5uZXJOb2RlKCktPmlzVGV4dE5vZGUoKSkKICAgICAsIGlzT3ZlclRleHRJbnNpZGVGb3JtQ29u
dHJvbEVsZW1lbnQoaGl0VGVzdFJlc3VsdC5pc092ZXJUZXh0SW5zaWRlRm9ybUNvbnRyb2xFbGVt
ZW50KCkpCi0gICAgLCBhbGxvd3NDb3B5KGhpdFRlc3RSZXN1bHQuYWxsb3dzQ29weSgpKQogICAg
ICwgaXNEb3dubG9hZGFibGVNZWRpYShoaXRUZXN0UmVzdWx0LmlzRG93bmxvYWRhYmxlTWVkaWEo
KSkKICAgICAsIGltYWdlU2l6ZSgwKQogewpAQCAtNzMsNyArNzIsNiBAQCBXZWJIaXRUZXN0UmVz
dWx0RGF0YTo6V2ViSGl0VGVzdFJlc3VsdERhdGEoY29uc3QgV2ViQ29yZTo6SGl0VGVzdFJlc3Vs
dCYgaGl0VGVzdAogICAgICwgaXNTZWxlY3RlZChoaXRUZXN0UmVzdWx0LmlzU2VsZWN0ZWQoKSkK
ICAgICAsIGlzVGV4dE5vZGUoaGl0VGVzdFJlc3VsdC5pbm5lck5vZGUoKSAmJiBoaXRUZXN0UmVz
dWx0LmlubmVyTm9kZSgpLT5pc1RleHROb2RlKCkpCiAgICAgLCBpc092ZXJUZXh0SW5zaWRlRm9y
bUNvbnRyb2xFbGVtZW50KGhpdFRlc3RSZXN1bHQuaXNPdmVyVGV4dEluc2lkZUZvcm1Db250cm9s
RWxlbWVudCgpKQotICAgICwgYWxsb3dzQ29weShoaXRUZXN0UmVzdWx0LmFsbG93c0NvcHkoKSkK
ICAgICAsIGlzRG93bmxvYWRhYmxlTWVkaWEoaGl0VGVzdFJlc3VsdC5pc0Rvd25sb2FkYWJsZU1l
ZGlhKCkpCiAgICAgLCBpbWFnZVNpemUoMCkKIHsKQEAgLTEwOSw3ICsxMDcsNiBAQCB2b2lkIFdl
YkhpdFRlc3RSZXN1bHREYXRhOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAog
ICAgIGVuY29kZXIgPDwgaXNTZWxlY3RlZDsKICAgICBlbmNvZGVyIDw8IGlzVGV4dE5vZGU7CiAg
ICAgZW5jb2RlciA8PCBpc092ZXJUZXh0SW5zaWRlRm9ybUNvbnRyb2xFbGVtZW50OwotICAgIGVu
Y29kZXIgPDwgYWxsb3dzQ29weTsKICAgICBlbmNvZGVyIDw8IGlzRG93bmxvYWRhYmxlTWVkaWE7
CiAgICAgZW5jb2RlciA8PCBsb29rdXBUZXh0OwogICAgIGVuY29kZXIgPDwgZGljdGlvbmFyeVBv
cHVwSW5mbzsKQEAgLTE0Myw3ICsxNDAsNiBAQCBib29sIFdlYkhpdFRlc3RSZXN1bHREYXRhOjpk
ZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBXZWJIaXRUZXN0UmVzdWx0RGF0YSYgaAogICAg
ICAgICB8fCAhZGVjb2Rlci5kZWNvZGUoaGl0VGVzdFJlc3VsdERhdGEuaXNTZWxlY3RlZCkKICAg
ICAgICAgfHwgIWRlY29kZXIuZGVjb2RlKGhpdFRlc3RSZXN1bHREYXRhLmlzVGV4dE5vZGUpCiAg
ICAgICAgIHx8ICFkZWNvZGVyLmRlY29kZShoaXRUZXN0UmVzdWx0RGF0YS5pc092ZXJUZXh0SW5z
aWRlRm9ybUNvbnRyb2xFbGVtZW50KQotICAgICAgICB8fCAhZGVjb2Rlci5kZWNvZGUoaGl0VGVz
dFJlc3VsdERhdGEuYWxsb3dzQ29weSkKICAgICAgICAgfHwgIWRlY29kZXIuZGVjb2RlKGhpdFRl
c3RSZXN1bHREYXRhLmlzRG93bmxvYWRhYmxlTWVkaWEpCiAgICAgICAgIHx8ICFkZWNvZGVyLmRl
Y29kZShoaXRUZXN0UmVzdWx0RGF0YS5sb29rdXBUZXh0KQogICAgICAgICB8fCAhZGVjb2Rlci5k
ZWNvZGUoaGl0VGVzdFJlc3VsdERhdGEuZGljdGlvbmFyeVBvcHVwSW5mbykpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0YS5oIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuaAppbmRleCAzMjQ2OGFiYTljNzU2MzE3
OTBhODAwYzgyYjE4ZTBkMDBhZWQ5MGM1Li5kM2NmZWVjOTk2YTA0MWFhZTBmYjkzMDcxNTVlY2Y4
MjljYmM5NWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJIaXRUZXN0UmVz
dWx0RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHREYXRh
LmgKQEAgLTU3LDcgKzU3LDYgQEAgc3RydWN0IFdlYkhpdFRlc3RSZXN1bHREYXRhIHsKICAgICBi
b29sIGlzU2VsZWN0ZWQ7CiAgICAgYm9vbCBpc1RleHROb2RlOwogICAgIGJvb2wgaXNPdmVyVGV4
dEluc2lkZUZvcm1Db250cm9sRWxlbWVudDsKLSAgICBib29sIGFsbG93c0NvcHk7CiAgICAgYm9v
bCBpc0Rvd25sb2FkYWJsZU1lZGlhOwogCiAgICAgU3RyaW5nIGxvb2t1cFRleHQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSGl0VGVzdFJlc3VsdC5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhpdFRlc3RSZXN1bHQuaAppbmRleCBjZDkzOWM5
YjBhODdjY2MxYzY0N2JhYTJhOGE5MjcwNjlkYThmNmQ0Li4zMDYyMmI0ODY2NDc2NGJkNTZkYzcw
MGU1M2I5ZDg0NTcxYzc3MGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJSGl0VGVzdFJlc3VsdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElIaXRUZXN0UmVzdWx0LmgKQEAgLTcwLDggKzcwLDYgQEAgcHVibGljOgogCiAgICAgYm9vbCBp
c092ZXJUZXh0SW5zaWRlRm9ybUNvbnRyb2xFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9kYXRh
LmlzT3ZlclRleHRJbnNpZGVGb3JtQ29udHJvbEVsZW1lbnQ7IH0KIAotICAgIGJvb2wgYWxsb3dz
Q29weSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5hbGxvd3NDb3B5OyB9Ci0KICAgICBib29sIGlz
RG93bmxvYWRhYmxlTWVkaWEoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuaXNEb3dubG9hZGFibGVN
ZWRpYTsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0RWRpdG9yU3RhdGUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0RWRpdG9yU3RhdGUuY3BwCmluZGV4IDY1NTNhOGQ1Zjg3MTM5YTdiZWU0
MTJhZWIwMWFjMDBmY2M3ZTA1ODIuLmUzZTY5MGZkMDAyMTQxMzI3MjhjYTEzNDg2ZTg4NDBlZWYy
MDJiZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dEVkaXRvclN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRFZGl0b3JTdGF0ZS5jcHAKQEAgLTMzLDkgKzMzLDEyIEBAIHVzaW5nIG5hbWVzcGFjZSBX
ZWJLaXQ7CiAgKiBAVGl0bGU6IFdlYktpdEVkaXRvclN0YXRlCiAgKiBAU2VlX2Fsc286ICNXZWJL
aXRXZWJWaWV3CiAgKgotICogV2ViS2l0RWRpdG9yU3RhdGUgcmVwcmVzZW50cyB0aGUgc3RhdGUg
b2YgYSAjV2ViS2l0V2ViVmlldyBlZGl0b3IuCi0gKiBVc2Ugd2Via2l0X3dlYl92aWV3X2dldF9l
ZGl0b3Jfc3RhdGUoKSB0byBnZXQgV2ViS2l0RWRpdG9yU3RhdGUgb2YKLSAqIGEgI1dlYktpdFdl
YlZpZXcuCisgKiAjV2ViS2l0RWRpdG9yU3RhdGUgcmVwcmVzZW50cyB0aGUgc3RhdGUgb2YgYSAj
V2ViS2l0V2ViVmlldyBlZGl0b3IuCisgKiBVc2Ugd2Via2l0X3dlYl92aWV3X2dldF9lZGl0b3Jf
c3RhdGUoKSB0byBnZXQgdGhlICNXZWJLaXRFZGl0b3JTdGF0ZQorICogb2YgYSAjV2ViS2l0V2Vi
Vmlldy4KKyAqCisgKiBUaGUgI1dlYktpdEVkaXRvclN0YXRlIG1heSBub3QgcmV0dXJuIGFjY3Vy
YXRlIHJlc3VsdHMgaWYgaXRzCisgKiBhc3NvY2lhdGVkICNXZWJLaXRXZWJWaWV3IGlzIG5vdCB2
aXNpYmxlLgogICoKICAqIFNpbmNlOiAyLjEwCiAgKi8KQEAgLTQ4LDYgKzUxLDExIEBAIGVudW0g
ewogCiBzdHJ1Y3QgX1dlYktpdEVkaXRvclN0YXRlUHJpdmF0ZSB7CiAgICAgdW5zaWduZWQgdHlw
aW5nQXR0cmlidXRlczsKKyAgICB1bnNpZ25lZCBpc0N1dEF2YWlsYWJsZSA6IDE7CisgICAgdW5z
aWduZWQgaXNDb3B5QXZhaWxhYmxlIDogMTsKKyAgICB1bnNpZ25lZCBpc1Bhc3RlQXZhaWxhYmxl
IDogMTsKKyAgICB1bnNpZ25lZCBpc1VuZG9BdmFpbGFibGUgOiAxOworICAgIHVuc2lnbmVkIGlz
UmVkb0F2YWlsYWJsZSA6IDE7CiB9OwogCiBXRUJLSVRfREVGSU5FX1RZUEUoV2ViS2l0RWRpdG9y
U3RhdGUsIHdlYmtpdF9lZGl0b3Jfc3RhdGUsIEdfVFlQRV9PQkpFQ1QpCkBAIC0xMTEsNyArMTE5
LDYgQEAgdm9pZCB3ZWJraXRFZGl0b3JTdGF0ZUNoYW5nZWQoV2ViS2l0RWRpdG9yU3RhdGUqIGVk
aXRvclN0YXRlLCBjb25zdCBFZGl0b3JTdGF0ZSYKICAgICAgICAgcmV0dXJuOwogCiAgICAgdW5z
aWduZWQgdHlwaW5nQXR0cmlidXRlcyA9IFdFQktJVF9FRElUT1JfVFlQSU5HX0FUVFJJQlVURV9O
T05FOwotI2lmIFBMQVRGT1JNKEdUSykKICAgICBjb25zdCBhdXRvJiBwb3N0TGF5b3V0RGF0YSA9
IG5ld1N0YXRlLnBvc3RMYXlvdXREYXRhKCk7CiAgICAgaWYgKHBvc3RMYXlvdXREYXRhLnR5cGlu
Z0F0dHJpYnV0ZXMgJiBBdHRyaWJ1dGVCb2xkKQogICAgICAgICB0eXBpbmdBdHRyaWJ1dGVzIHw9
IFdFQktJVF9FRElUT1JfVFlQSU5HX0FUVFJJQlVURV9CT0xEOwpAQCAtMTIxLDggKzEyOCwxNCBA
QCB2b2lkIHdlYmtpdEVkaXRvclN0YXRlQ2hhbmdlZChXZWJLaXRFZGl0b3JTdGF0ZSogZWRpdG9y
U3RhdGUsIGNvbnN0IEVkaXRvclN0YXRlJgogICAgICAgICB0eXBpbmdBdHRyaWJ1dGVzIHw9IFdF
QktJVF9FRElUT1JfVFlQSU5HX0FUVFJJQlVURV9VTkRFUkxJTkU7CiAgICAgaWYgKHBvc3RMYXlv
dXREYXRhLnR5cGluZ0F0dHJpYnV0ZXMgJiBBdHRyaWJ1dGVTdHJpa2VUaHJvdWdoKQogICAgICAg
ICB0eXBpbmdBdHRyaWJ1dGVzIHw9IFdFQktJVF9FRElUT1JfVFlQSU5HX0FUVFJJQlVURV9TVFJJ
S0VUSFJPVUdIOwotI2VuZGlmCisKICAgICB3ZWJraXRFZGl0b3JTdGF0ZVNldFR5cGluZ0F0dHJp
YnV0ZXMoZWRpdG9yU3RhdGUsIHR5cGluZ0F0dHJpYnV0ZXMpOworCisgICAgZWRpdG9yU3RhdGUt
PnByaXYtPmlzQ3V0QXZhaWxhYmxlID0gcG9zdExheW91dERhdGEuY2FuQ3V0OworICAgIGVkaXRv
clN0YXRlLT5wcml2LT5pc0NvcHlBdmFpbGFibGUgPSBwb3N0TGF5b3V0RGF0YS5jYW5Db3B5Owor
ICAgIGVkaXRvclN0YXRlLT5wcml2LT5pc1Bhc3RlQXZhaWxhYmxlID0gcG9zdExheW91dERhdGEu
Y2FuUGFzdGU7CisgICAgZWRpdG9yU3RhdGUtPnByaXYtPmlzVW5kb0F2YWlsYWJsZSA9IHBvc3RM
YXlvdXREYXRhLmNhblVuZG87CisgICAgZWRpdG9yU3RhdGUtPnByaXYtPmlzUmVkb0F2YWlsYWJs
ZSA9IHBvc3RMYXlvdXREYXRhLmNhblJlZG87CiB9CiAKIC8qKgpAQCAtMTQ2LDMgKzE1OSw4NyBA
QCBndWludCB3ZWJraXRfZWRpdG9yX3N0YXRlX2dldF90eXBpbmdfYXR0cmlidXRlcyhXZWJLaXRF
ZGl0b3JTdGF0ZSogZWRpdG9yU3RhdGUpCiAgICAgcmV0dXJuIGVkaXRvclN0YXRlLT5wcml2LT50
eXBpbmdBdHRyaWJ1dGVzOwogfQogCisvKioKKyAqIHdlYmtpdF9lZGl0b3Jfc3RhdGVfZ2V0X2lz
X2N1dF9hdmFpbGFibGU6CisgKiBAZWRpdG9yX3N0YXRlOiBhICNXZWJLaXRFZGl0b3JTdGF0ZQor
ICoKKyAqIEdldHMgd2hldGhlciBhIGN1dCBjb21tYW5kIGNhbiBiZSBpc3N1ZWQuCisgKgorICog
UmV0dXJuczogJVRSVUUgaWYgY3V0IGlzIGN1cnJlbnRseSBhdmFpbGFibGUKKyAqCisgKiBTaW5j
ZTogMi4yMAorICovCitnYm9vbGVhbiB3ZWJraXRfZWRpdG9yX3N0YXRlX2dldF9pc19jdXRfYXZh
aWxhYmxlKFdlYktpdEVkaXRvclN0YXRlKiBlZGl0b3JTdGF0ZSkKK3sKKyAgICBnX3JldHVybl92
YWxfaWZfZmFpbChXRUJLSVRfSVNfRURJVE9SX1NUQVRFKGVkaXRvclN0YXRlKSwgRkFMU0UpOwor
CisgICAgcmV0dXJuIGVkaXRvclN0YXRlLT5wcml2LT5pc0N1dEF2YWlsYWJsZTsKK30KKworLyoq
CisgKiB3ZWJraXRfZWRpdG9yX3N0YXRlX2dldF9pc19jb3B5X2F2YWlsYWJsZToKKyAqIEBlZGl0
b3Jfc3RhdGU6IGEgI1dlYktpdEVkaXRvclN0YXRlCisgKgorICogR2V0cyB3aGV0aGVyIGEgY29w
eSBjb21tYW5kIGNhbiBiZSBpc3N1ZWQuCisgKgorICogUmV0dXJuczogJVRSVUUgaWYgY29weSBp
cyBjdXJyZW50bHkgYXZhaWxhYmxlCisgKgorICogU2luY2U6IDIuMjAKKyAqLworZ2Jvb2xlYW4g
d2Via2l0X2VkaXRvcl9zdGF0ZV9nZXRfaXNfY29weV9hdmFpbGFibGUoV2ViS2l0RWRpdG9yU3Rh
dGUqIGVkaXRvclN0YXRlKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19F
RElUT1JfU1RBVEUoZWRpdG9yU3RhdGUpLCBGQUxTRSk7CisKKyAgICByZXR1cm4gZWRpdG9yU3Rh
dGUtPnByaXYtPmlzQ29weUF2YWlsYWJsZTsKK30KKworLyoqCisgKiB3ZWJraXRfZWRpdG9yX3N0
YXRlX2dldF9pc19wYXN0ZV9hdmFpbGFibGU6CisgKiBAZWRpdG9yX3N0YXRlOiBhICNXZWJLaXRF
ZGl0b3JTdGF0ZQorICoKKyAqIEdldHMgd2hldGhlciBhIHBhc3RlIGNvbW1hbmQgY2FuIGJlIGlz
c3VlZC4KKyAqCisgKiBSZXR1cm5zOiAlVFJVRSBpZiBwYXN0ZSBpcyBjdXJyZW50bHkgYXZhaWxh
YmxlCisgKgorICogU2luY2U6IDIuMjAKKyAqLworZ2Jvb2xlYW4gd2Via2l0X2VkaXRvcl9zdGF0
ZV9nZXRfaXNfcGFzdGVfYXZhaWxhYmxlKFdlYktpdEVkaXRvclN0YXRlKiBlZGl0b3JTdGF0ZSkK
K3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfRURJVE9SX1NUQVRFKGVkaXRv
clN0YXRlKSwgRkFMU0UpOworCisgICAgcmV0dXJuIGVkaXRvclN0YXRlLT5wcml2LT5pc1Bhc3Rl
QXZhaWxhYmxlOworfQorCisvKioKKyAqIHdlYmtpdF9lZGl0b3Jfc3RhdGVfZ2V0X2lzX3VuZG9f
YXZhaWxhYmxlOgorICogQGVkaXRvcl9zdGF0ZTogYSAjV2ViS2l0RWRpdG9yU3RhdGUKKyAqCisg
KiBHZXRzIHdoZXRoZXIgYW4gdW5kbyBjb21tYW5kIGNhbiBiZSBpc3N1ZWQuCisgKgorICogUmV0
dXJuczogJVRSVUUgaWYgdW5kbyBpcyBjdXJyZW50bHkgYXZhaWxhYmxlCisgKgorICogU2luY2U6
IDIuMjAKKyAqLworZ2Jvb2xlYW4gd2Via2l0X2VkaXRvcl9zdGF0ZV9nZXRfaXNfdW5kb19hdmFp
bGFibGUoV2ViS2l0RWRpdG9yU3RhdGUqIGVkaXRvclN0YXRlKQoreworICAgIGdfcmV0dXJuX3Zh
bF9pZl9mYWlsKFdFQktJVF9JU19FRElUT1JfU1RBVEUoZWRpdG9yU3RhdGUpLCBGQUxTRSk7CisK
KyAgICByZXR1cm4gZWRpdG9yU3RhdGUtPnByaXYtPmlzVW5kb0F2YWlsYWJsZTsKK30KKworLyoq
CisgKiB3ZWJraXRfZWRpdG9yX3N0YXRlX2dldF9pc19yZWRvX2F2YWlsYWJsZToKKyAqIEBlZGl0
b3Jfc3RhdGU6IGEgI1dlYktpdEVkaXRvclN0YXRlCisgKgorICogR2V0cyB3aGV0aGVyIGEgcmVk
byBjb21tYW5kIGNhbiBiZSBpc3N1ZWQuCisgKgorICogUmV0dXJuczogJVRSVUUgaWYgcmVkbyBp
cyBjdXJyZW50bHkgYXZhaWxhYmxlCisgKgorICogU2luY2U6IDIuMjAKKyAqLworZ2Jvb2xlYW4g
d2Via2l0X2VkaXRvcl9zdGF0ZV9nZXRfaXNfcmVkb19hdmFpbGFibGUoV2ViS2l0RWRpdG9yU3Rh
dGUqIGVkaXRvclN0YXRlKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19F
RElUT1JfU1RBVEUoZWRpdG9yU3RhdGUpLCBGQUxTRSk7CisKKyAgICByZXR1cm4gZWRpdG9yU3Rh
dGUtPnByaXYtPmlzUmVkb0F2YWlsYWJsZTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RWRpdG9yU3RhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0RWRpdG9yU3RhdGUuaAppbmRleCA4YTQ3NzU1ZjBjMWJkZDBh
ZDcxZDEyYTkzZGJhYWVhZWRiMzgwYjNjLi5mNjY0YTk1OWNhOTU5MDVhMjg0MjE5YzNjNDkxNTJl
MzFlNzM3MTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdEVkaXRvclN0YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRFZGl0b3JTdGF0ZS5oCkBAIC03NywxMCArNzcsMjUgQEAgc3RydWN0IF9XZWJLaXRFZGl0
b3JTdGF0ZUNsYXNzIHsKIH07CiAKIFdFQktJVF9BUEkgR1R5cGUKLXdlYmtpdF9lZGl0b3Jfc3Rh
dGVfZ2V0X3R5cGUgICAgICAgICAgICAgICh2b2lkKTsKK3dlYmtpdF9lZGl0b3Jfc3RhdGVfZ2V0
X3R5cGUgICAgICAgICAgICAgICAodm9pZCk7CiAKIFdFQktJVF9BUEkgZ3VpbnQKLXdlYmtpdF9l
ZGl0b3Jfc3RhdGVfZ2V0X3R5cGluZ19hdHRyaWJ1dGVzIChXZWJLaXRFZGl0b3JTdGF0ZSAqZWRp
dG9yX3N0YXRlKTsKK3dlYmtpdF9lZGl0b3Jfc3RhdGVfZ2V0X3R5cGluZ19hdHRyaWJ1dGVzICAg
KFdlYktpdEVkaXRvclN0YXRlICplZGl0b3Jfc3RhdGUpOworCitXRUJLSVRfQVBJIGdib29sZWFu
Cit3ZWJraXRfZWRpdG9yX3N0YXRlX2dldF9pc19jdXRfYXZhaWxhYmxlICAgIChXZWJLaXRFZGl0
b3JTdGF0ZSAqZWRpdG9yX3N0YXRlKTsKKworV0VCS0lUX0FQSSBnYm9vbGVhbgord2Via2l0X2Vk
aXRvcl9zdGF0ZV9nZXRfaXNfY29weV9hdmFpbGFibGUgICAoV2ViS2l0RWRpdG9yU3RhdGUgKmVk
aXRvcl9zdGF0ZSk7CisKK1dFQktJVF9BUEkgZ2Jvb2xlYW4KK3dlYmtpdF9lZGl0b3Jfc3RhdGVf
Z2V0X2lzX3Bhc3RlX2F2YWlsYWJsZSAgKFdlYktpdEVkaXRvclN0YXRlICplZGl0b3Jfc3RhdGUp
OworCitXRUJLSVRfQVBJIGdib29sZWFuCit3ZWJraXRfZWRpdG9yX3N0YXRlX2dldF9pc191bmRv
X2F2YWlsYWJsZSAgIChXZWJLaXRFZGl0b3JTdGF0ZSAqZWRpdG9yX3N0YXRlKTsKKworV0VCS0lU
X0FQSSBnYm9vbGVhbgord2Via2l0X2VkaXRvcl9zdGF0ZV9nZXRfaXNfcmVkb19hdmFpbGFibGUg
ICAoV2ViS2l0RWRpdG9yU3RhdGUgKmVkaXRvcl9zdGF0ZSk7CiAKIEdfRU5EX0RFQ0xTCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3Rr
LTQuMC1zZWN0aW9ucy50eHQgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mv
d2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0CmluZGV4IDVkYjc4Yzk3OWY4NDRlN2I5ODkxYTA0
YTA5NDQ2NzQ1ZDM5MDI4MWQuLmFhYWRmODRjMTY1ZDU5M2I3NmUwYzkzYjg2ZDhhN2QwYmE3Y2Zl
YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJr
aXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dApAQCAtODIyLDYgKzgyMiwxMSBA
QCB3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2dldF90eXBlCiBXZWJLaXRFZGl0b3JTdGF0ZQogV2Vi
S2l0RWRpdG9yVHlwaW5nQXR0cmlidXRlcwogd2Via2l0X2VkaXRvcl9zdGF0ZV9nZXRfdHlwaW5n
X2F0dHJpYnV0ZXMKK3dlYmtpdF9lZGl0b3Jfc3RhdGVfZ2V0X2lzX2N1dF9hdmFpbGFibGUKK3dl
YmtpdF9lZGl0b3Jfc3RhdGVfZ2V0X2lzX2NvcHlfYXZhaWxhYmxlCit3ZWJraXRfZWRpdG9yX3N0
YXRlX2dldF9pc19wYXN0ZV9hdmFpbGFibGUKK3dlYmtpdF9lZGl0b3Jfc3RhdGVfZ2V0X2lzX3Vu
ZG9fYXZhaWxhYmxlCit3ZWJraXRfZWRpdG9yX3N0YXRlX2dldF9pc19yZWRvX2F2YWlsYWJsZQog
CiA8U1VCU0VDVElPTiBTdGFuZGFyZD4KIFdlYktpdEVkaXRvclN0YXRlQ2xhc3MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0RWRpdG9yU3RhdGUuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0RWRpdG9yU3RhdGUuaAppbmRl
eCA4Y2Y2NTk1YzAwYWUzOTgyMzI0ZjQxN2E0YzkyMWVmMWFiNDJmMjBmLi5iODlmOGI0Mjc5YjFh
NmIxMmJiNTVhMDBjNGE4MTdhMWZmZmVjNTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvd3BlL1dlYktpdEVkaXRvclN0YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRFZGl0b3JTdGF0ZS5oCkBAIC03NywxMCArNzcsMjUgQEAg
c3RydWN0IF9XZWJLaXRFZGl0b3JTdGF0ZUNsYXNzIHsKIH07CiAKIFdFQktJVF9BUEkgR1R5cGUK
LXdlYmtpdF9lZGl0b3Jfc3RhdGVfZ2V0X3R5cGUgICAgICAgICAgICAgICh2b2lkKTsKK3dlYmtp
dF9lZGl0b3Jfc3RhdGVfZ2V0X3R5cGUgICAgICAgICAgICAgICAodm9pZCk7CiAKIFdFQktJVF9B
UEkgZ3VpbnQKLXdlYmtpdF9lZGl0b3Jfc3RhdGVfZ2V0X3R5cGluZ19hdHRyaWJ1dGVzIChXZWJL
aXRFZGl0b3JTdGF0ZSAqZWRpdG9yX3N0YXRlKTsKK3dlYmtpdF9lZGl0b3Jfc3RhdGVfZ2V0X3R5
cGluZ19hdHRyaWJ1dGVzICAgKFdlYktpdEVkaXRvclN0YXRlICplZGl0b3Jfc3RhdGUpOworCitX
RUJLSVRfQVBJIGdib29sZWFuCit3ZWJraXRfZWRpdG9yX3N0YXRlX2dldF9pc19jdXRfYXZhaWxh
YmxlICAgIChXZWJLaXRFZGl0b3JTdGF0ZSAqZWRpdG9yX3N0YXRlKTsKKworV0VCS0lUX0FQSSBn
Ym9vbGVhbgord2Via2l0X2VkaXRvcl9zdGF0ZV9nZXRfaXNfY29weV9hdmFpbGFibGUgICAoV2Vi
S2l0RWRpdG9yU3RhdGUgKmVkaXRvcl9zdGF0ZSk7CisKK1dFQktJVF9BUEkgZ2Jvb2xlYW4KK3dl
YmtpdF9lZGl0b3Jfc3RhdGVfZ2V0X2lzX3Bhc3RlX2F2YWlsYWJsZSAgKFdlYktpdEVkaXRvclN0
YXRlICplZGl0b3Jfc3RhdGUpOworCitXRUJLSVRfQVBJIGdib29sZWFuCit3ZWJraXRfZWRpdG9y
X3N0YXRlX2dldF9pc191bmRvX2F2YWlsYWJsZSAgIChXZWJLaXRFZGl0b3JTdGF0ZSAqZWRpdG9y
X3N0YXRlKTsKKworV0VCS0lUX0FQSSBnYm9vbGVhbgord2Via2l0X2VkaXRvcl9zdGF0ZV9nZXRf
aXNfcmVkb19hdmFpbGFibGUgICAoV2ViS2l0RWRpdG9yU3RhdGUgKmVkaXRvcl9zdGF0ZSk7CiAK
IEdfRU5EX0RFQ0xTCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKaW5kZXggMWVhN2EzYzJmNWI3YTU4MzE5NTQ3ZTk2YTcyOTExMzc1M2IwNGM3ZC4uYmY1
ZWQxMGQwMDM4NWFhYzEzMjQ0Nzk4ZTEzODY3ZWJiNWMxY2NiMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTg0NiwyMCArODQ2LDI3IEBAIEVk
aXRvclN0YXRlIFdlYlBhZ2U6OmVkaXRvclN0YXRlKEluY2x1ZGVQb3N0TGF5b3V0RGF0YUhpbnQg
c2hvdWxkSW5jbHVkZVBvc3RMYXlvCiAgICAgfQogCiAgICAgY29uc3QgVmlzaWJsZVNlbGVjdGlv
biYgc2VsZWN0aW9uID0gZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7CisgICAgY29uc3Qg
RWRpdG9yJiBlZGl0b3IgPSBmcmFtZS5lZGl0b3IoKTsKIAogICAgIHJlc3VsdC5zZWxlY3Rpb25J
c05vbmUgPSBzZWxlY3Rpb24uaXNOb25lKCk7CiAgICAgcmVzdWx0LnNlbGVjdGlvbklzUmFuZ2Ug
PSBzZWxlY3Rpb24uaXNSYW5nZSgpOwogICAgIHJlc3VsdC5pc0NvbnRlbnRFZGl0YWJsZSA9IHNl
bGVjdGlvbi5pc0NvbnRlbnRFZGl0YWJsZSgpOwogICAgIHJlc3VsdC5pc0NvbnRlbnRSaWNobHlF
ZGl0YWJsZSA9IHNlbGVjdGlvbi5pc0NvbnRlbnRSaWNobHlFZGl0YWJsZSgpOwogICAgIHJlc3Vs
dC5pc0luUGFzc3dvcmRGaWVsZCA9IHNlbGVjdGlvbi5pc0luUGFzc3dvcmRGaWVsZCgpOwotICAg
IHJlc3VsdC5oYXNDb21wb3NpdGlvbiA9IGZyYW1lLmVkaXRvcigpLmhhc0NvbXBvc2l0aW9uKCk7
Ci0gICAgcmVzdWx0LnNob3VsZElnbm9yZVNlbGVjdGlvbkNoYW5nZXMgPSBmcmFtZS5lZGl0b3Io
KS5pZ25vcmVTZWxlY3Rpb25DaGFuZ2VzKCk7CisgICAgcmVzdWx0Lmhhc0NvbXBvc2l0aW9uID0g
ZWRpdG9yLmhhc0NvbXBvc2l0aW9uKCk7CisgICAgcmVzdWx0LnNob3VsZElnbm9yZVNlbGVjdGlv
bkNoYW5nZXMgPSBlZGl0b3IuaWdub3JlU2VsZWN0aW9uQ2hhbmdlcygpOwogCi0jaWYgUExBVEZP
Uk0oQ09DT0EpCiAgICAgYm9vbCBjYW5JbmNsdWRlUG9zdExheW91dERhdGEgPSBmcmFtZS52aWV3
KCkgJiYgIWZyYW1lLnZpZXcoKS0+bmVlZHNMYXlvdXQoKTsKLSAgICBpZiAoc2hvdWxkSW5jbHVk
ZVBvc3RMYXlvdXREYXRhID09IEluY2x1ZGVQb3N0TGF5b3V0RGF0YUhpbnQ6OlllcyAmJiBjYW5J
bmNsdWRlUG9zdExheW91dERhdGEgJiYgcmVzdWx0LmlzQ29udGVudEVkaXRhYmxlKSB7CisgICAg
aWYgKHNob3VsZEluY2x1ZGVQb3N0TGF5b3V0RGF0YSA9PSBJbmNsdWRlUG9zdExheW91dERhdGFI
aW50OjpZZXMgJiYgY2FuSW5jbHVkZVBvc3RMYXlvdXREYXRhKSB7CiAgICAgICAgIGF1dG8mIHBv
c3RMYXlvdXREYXRhID0gcmVzdWx0LnBvc3RMYXlvdXREYXRhKCk7Ci0gICAgICAgIGlmICghc2Vs
ZWN0aW9uLmlzTm9uZSgpKSB7CisgICAgICAgIHBvc3RMYXlvdXREYXRhLmNhbkN1dCA9IGVkaXRv
ci5jYW5DdXQoKTsKKyAgICAgICAgcG9zdExheW91dERhdGEuY2FuQ29weSA9IGVkaXRvci5jYW5D
b3B5KCk7CisgICAgICAgIHBvc3RMYXlvdXREYXRhLmNhblBhc3RlID0gZWRpdG9yLmNhblBhc3Rl
KCk7CisgICAgICAgIHBvc3RMYXlvdXREYXRhLmNhblVuZG8gPSBlZGl0b3IuY2FuVW5kbygpOwor
ICAgICAgICBwb3N0TGF5b3V0RGF0YS5jYW5SZWRvID0gZWRpdG9yLmNhblJlZG8oKTsKKworI2lm
IFBMQVRGT1JNKENPQ09BKQorICAgICAgICBpZiAocmVzdWx0LmlzQ29udGVudEVkaXRhYmxlICYm
ICFzZWxlY3Rpb24uaXNOb25lKCkpIHsKICAgICAgICAgICAgIGlmIChhdXRvIGVkaXRpbmdTdHls
ZSA9IEVkaXRpbmdTdHlsZTo6c3R5bGVBdFNlbGVjdGlvblN0YXJ0KHNlbGVjdGlvbikpIHsKICAg
ICAgICAgICAgICAgICBpZiAoZWRpdGluZ1N0eWxlLT5oYXNTdHlsZShDU1NQcm9wZXJ0eUZvbnRX
ZWlnaHQsICJib2xkIikpCiAgICAgICAgICAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLnR5cGlu
Z0F0dHJpYnV0ZXMgfD0gQXR0cmlidXRlQm9sZDsKQEAgLTkxMSw4ICs5MTgsOCBAQCBFZGl0b3JT
dGF0ZSBXZWJQYWdlOjplZGl0b3JTdGF0ZShJbmNsdWRlUG9zdExheW91dERhdGFIaW50IHNob3Vs
ZEluY2x1ZGVQb3N0TGF5bwogICAgICAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgIH0KICNlbmRpZgorICAgIH0KIAogICAg
IHBsYXRmb3JtRWRpdG9yU3RhdGUoZnJhbWUsIHJlc3VsdCwgc2hvdWxkSW5jbHVkZVBvc3RMYXlv
dXREYXRhKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1dlYlBhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
V2ViUGFnZU1hYy5tbQppbmRleCAzNmFmNWE5NmY4NDFkNTcwNzc5NjFiMjU5YWI5NDIyNWEzZDZl
YWYwLi4zNjIxYWRlYmNiMGNkNjE5MzMzYWE2ZTFjZTNjNTZlOTdjNzAwZjYwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQpAQCAt
MTA4MCw3ICsxMDgwLDYgQEAgdm9pZCBXZWJQYWdlOjpwZXJmb3JtSW1tZWRpYXRlQWN0aW9uSGl0
VGVzdEF0TG9jYXRpb24oV2ViQ29yZTo6RmxvYXRQb2ludCBsb2NhdGkKICAgICAgICAgICAgICAg
ICBpbW1lZGlhdGVBY3Rpb25SZXN1bHQubG9va3VwVGV4dCA9IHNlbGVjdGVkVGV4dDsKICAgICAg
ICAgICAgICAgICBpbW1lZGlhdGVBY3Rpb25SZXN1bHQuaXNUZXh0Tm9kZSA9IHRydWU7CiAgICAg
ICAgICAgICAgICAgaW1tZWRpYXRlQWN0aW9uUmVzdWx0LmlzU2VsZWN0ZWQgPSB0cnVlOwotICAg
ICAgICAgICAgICAgIGltbWVkaWF0ZUFjdGlvblJlc3VsdC5hbGxvd3NDb3B5ID0gdHJ1ZTsKIAog
ICAgICAgICAgICAgICAgIGltbWVkaWF0ZUFjdGlvblJlc3VsdC5kaWN0aW9uYXJ5UG9wdXBJbmZv
ID0gZGljdGlvbmFyeVBvcHVwSW5mb0ZvclNlbGVjdGlvbkluUERGUGx1Z2luKHNlbGVjdGlvbiwg
KnBkZlB1Z2luLCAmb3B0aW9ucywgVGV4dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5zaXRpb246
OkZhZGVJbik7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9U
b29scy9DaGFuZ2VMb2cKaW5kZXggOGFkNzlkMzEwZTMzNDIyMmYxMzUyZmNjNTcxNzM4MWFmOWUx
MjZjOC4uYzJiM2YyMmM3YmNkZmQyNjhlMGJlNWJmYjM0ZGJlYjRiMDlhNTIxMiAxMDA2NDQKLS0t
IGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBA
CisyMDE3LTA5LTI4ICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4K
KworICAgICAgICBbV1BFXVtHVEtdIEV4cG9zZSBhdmFpbGFiaWxpdHkgb2YgY2VydGFpbiBlZGl0
aW5nIGNvbW1hbmRzIGluIFdlYktpdEVkaXRvclN0YXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjgyMTkKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0IGl0LgorCisgICAgICAgIFRvIGVuc3VyZSBw
b3N0IGxheW91dCBkYXRhIGlzIGZsdXNoZWQgdG8gdGhlIFVJIHByb2Nlc3MsIGFkZCB0aGUgaGVs
cGVyIGZ1bmN0aW9uCisgICAgICAgIFdlYlZpZXdUZXN0Ojp0cmlnZ2VyRHJhd0FuZFdhaXRVbnRp
bEZpbmlzaGVkIGFuZCB1c2UgaXQgdGhyb3VnaG91dCBUZXN0V2ViVmlld0VkaXRvci4KKworICAg
ICAgICBUaGlzIGFsc28gYWRkcyBXZWJWaWV3VGVzdDo6d2FpdFVudGlsVGV4dElzQXZhaWxhYmxl
SW5DbGlwYm9hcmQgYXMgYSBkcml2ZS1ieSBjbGVhbnVwLgorCisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRHdGsvVGVzdFdlYlZpZXdFZGl0b3IuY3BwOgorICAgICAgICAodGVz
dFdlYlZpZXdFZGl0b3JDdXRDb3B5UGFzdGVOb25FZGl0YWJsZSk6CisgICAgICAgICh0ZXN0V2Vi
Vmlld0VkaXRvckN1dENvcHlQYXN0ZUVkaXRhYmxlKToKKyAgICAgICAgKHRlc3RXZWJWaWV3RWRp
dG9yU2VsZWN0QWxsTm9uRWRpdGFibGUpOgorICAgICAgICAodGVzdFdlYlZpZXdFZGl0b3JTZWxl
Y3RBbGxFZGl0YWJsZSk6CisgICAgICAgIChsb2FkQ29udGVudHNBbmRUcnlUb0N1dFNlbGVjdGlv
bik6CisgICAgICAgICh0ZXN0V2ViVmlld0VkaXRvck5vbkVkaXRhYmxlKToKKyAgICAgICAgKHRl
c3RXZWJWaWV3RWRpdG9yRWRpdGFibGUpOgorICAgICAgICAodGVzdFdlYlZpZXdFZGl0b3JFZGl0
b3JTdGF0ZVR5cGluZ0F0dHJpYnV0ZXMpOgorICAgICAgICAodGVzdFdlYlZpZXdFZGl0b3JJbnNl
cnRJbWFnZSk6CisgICAgICAgICh0ZXN0V2ViVmlld0VkaXRvckNyZWF0ZUxpbmspOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0Lmg6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvZ3RrL1dlYlZpZXdUZXN0R3RrLmNwcDoK
KyAgICAgICAgKHdlYlZpZXdEcmF3Q2FsbGJhY2spOgorICAgICAgICAoV2ViVmlld1Rlc3Q6OnRy
aWdnZXJEcmF3QW5kV2FpdFVudGlsRmluaXNoZWQpOgorICAgICAgICAoV2ViVmlld1Rlc3Q6Ondh
aXRVbnRpbFRleHRJc0F2YWlsYWJsZUluQ2xpcGJvYXJkKToKKwogMjAxNy0wOS0yNSAgRnJlZGVy
aWsgUmllZGVsICA8cmllZGVsQGFwcGxlLmNvbT4KIAogICAgICAgICBFeHBvc2Ugd2F5IHRvIHNl
dCB2YWx1ZXMgb2YgY2xhc3NpZmllZCBmb3JtIGNvbnRyb2xzIGFzIHtMZWdhY3kgV2ViS2l0LCBX
ZWJLaXR9IFNQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
dGsvVGVzdFdlYlZpZXdFZGl0b3IuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRHdGsvVGVzdFdlYlZpZXdFZGl0b3IuY3BwCmluZGV4IDc2ZmI2Y2VhMGUyZDg4NjM1ODdmMmYy
MDZjYmI5YzA4OTU3OGM2NzUuLjQyNGI1Mjg5MjQwZWU1ZTkwOTJiZWU2NGM5N2E3OGNiN2Y2NDBi
NzMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL1Rlc3RX
ZWJWaWV3RWRpdG9yLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0
ay9UZXN0V2ViVmlld0VkaXRvci5jcHAKQEAgLTI1LDEzICsyNSw5IEBAIGNsYXNzIEVkaXRvclRl
c3Q6IHB1YmxpYyBXZWJWaWV3VGVzdCB7CiBwdWJsaWM6CiAgICAgTUFLRV9HTElCX1RFU1RfRklY
VFVSRShFZGl0b3JUZXN0KTsKIAotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBrQ2xpcGJvYXJk
V2FpdFRpbWVvdXQgPSA1MDsKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQga0NsaXBib2FyZFdh
aXRNYXhUcmllcyA9IDI7Ci0KICAgICBFZGl0b3JUZXN0KCkKICAgICAgICAgOiBtX2NsaXBib2Fy
ZChndGtfY2xpcGJvYXJkX2dldChHREtfU0VMRUNUSU9OX0NMSVBCT0FSRCkpCiAgICAgICAgICwg
bV9jYW5FeGVjdXRlRWRpdGluZ0NvbW1hbmQoZmFsc2UpCi0gICAgICAgICwgbV90cmllc0NvdW50
KDApCiAgICAgICAgICwgbV9lZGl0b3JTdGF0ZShudWxscHRyKQogICAgIHsKICAgICAgICAgZ3Rr
X2NsaXBib2FyZF9jbGVhcihtX2NsaXBib2FyZCk7CkBAIC00NSwzMyArNDEsMzggQEAgcHVibGlj
OgogICAgICAgICBnX21haW5fbG9vcF9xdWl0KHRlc3QtPm1fbWFpbkxvb3ApOwogICAgIH0KIAor
ICAgIHZvaWQgd2FpdFVudGlsRHJhd0FmdGVyTG9hZEZpbmlzaGVkKCkKKyAgICB7CisgICAgICAg
IHdhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworICAgICAgICB0cmlnZ2VyRHJhd0FuZFdhaXRVbnRp
bEZpbmlzaGVkKCk7CisgICAgfQorCiAgICAgYm9vbCBjYW5FeGVjdXRlRWRpdGluZ0NvbW1hbmQo
Y29uc3QgY2hhciogY29tbWFuZCkKICAgICB7CiAgICAgICAgIG1fY2FuRXhlY3V0ZUVkaXRpbmdD
b21tYW5kID0gZmFsc2U7CiAgICAgICAgIHdlYmtpdF93ZWJfdmlld19jYW5fZXhlY3V0ZV9lZGl0
aW5nX2NvbW1hbmQobV93ZWJWaWV3LCBjb21tYW5kLCAwLCByZWludGVycHJldF9jYXN0PEdBc3lu
Y1JlYWR5Q2FsbGJhY2s+KGNhbkV4ZWN1dGVFZGl0aW5nQ29tbWFuZFJlYWR5Q2FsbGJhY2spLCB0
aGlzKTsKICAgICAgICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3ApOwotICAgICAgICByZXR1
cm4gbV9jYW5FeGVjdXRlRWRpdGluZ0NvbW1hbmQ7Ci0gICAgfQogCi0gICAgc3RhdGljIGdib29s
ZWFuIHdhaXRGb3JDbGlwYm9hcmRUZXh0KEVkaXRvclRlc3QqIHRlc3QpCi0gICAgewotICAgICAg
ICB0ZXN0LT5tX3RyaWVzQ291bnQrKzsKLSAgICAgICAgaWYgKGd0a19jbGlwYm9hcmRfd2FpdF9p
c190ZXh0X2F2YWlsYWJsZSh0ZXN0LT5tX2NsaXBib2FyZCkgfHwgdGVzdC0+bV90cmllc0NvdW50
ID4ga0NsaXBib2FyZFdhaXRNYXhUcmllcykgewotICAgICAgICAgICAgZ19tYWluX2xvb3BfcXVp
dCh0ZXN0LT5tX21haW5Mb29wKTsKLSAgICAgICAgICAgIHJldHVybiBGQUxTRTsKLSAgICAgICAg
fQorICAgICAgICBpZiAoIXN0cmNtcChjb21tYW5kLCBXRUJLSVRfRURJVElOR19DT01NQU5EX0NV
VCkpCisgICAgICAgICAgICBnX2Fzc2VydChtX2NhbkV4ZWN1dGVFZGl0aW5nQ29tbWFuZCA9PSB3
ZWJraXRfZWRpdG9yX3N0YXRlX2dldF9pc19jdXRfYXZhaWxhYmxlKGVkaXRvclN0YXRlKCkpKTsK
KyAgICAgICAgZWxzZSBpZiAoIXN0cmNtcChjb21tYW5kLCBXRUJLSVRfRURJVElOR19DT01NQU5E
X0NPUFkpKQorICAgICAgICAgICAgZ19hc3NlcnQobV9jYW5FeGVjdXRlRWRpdGluZ0NvbW1hbmQg
PT0gd2Via2l0X2VkaXRvcl9zdGF0ZV9nZXRfaXNfY29weV9hdmFpbGFibGUoZWRpdG9yU3RhdGUo
KSkpOworICAgICAgICBlbHNlIGlmICghc3RyY21wKGNvbW1hbmQsIFdFQktJVF9FRElUSU5HX0NP
TU1BTkRfUEFTVEUpKQorICAgICAgICAgICAgZ19hc3NlcnQobV9jYW5FeGVjdXRlRWRpdGluZ0Nv
bW1hbmQgPT0gd2Via2l0X2VkaXRvcl9zdGF0ZV9nZXRfaXNfcGFzdGVfYXZhaWxhYmxlKGVkaXRv
clN0YXRlKCkpKTsKKyAgICAgICAgLy8gRklYTUU6IEZpZ3VyZSBvdXQgaG93IHRvIGFkZCB0ZXN0
cyBmb3IgdW5kbyBhbmQgcmVkby4gSXQgd2lsbCBwcm9iYWJseSByZXF1aXJlIHVzaW5nIHVzZXIK
KyAgICAgICAgLy8gc2NyaXB0cyB0byBtZXNzYWdlIHRoZSBVSSBwcm9jZXNzIHdoZW4gdGhlIGNv
bnRlbnQgaGFzIGJlZW4gYWx0ZXJlZC4KKyAgICAgICAgZWxzZSBpZiAoIXN0cmNtcChjb21tYW5k
LCBXRUJLSVRfRURJVElOR19DT01NQU5EX1VORE8pKQorICAgICAgICAgICAgZ19hc3NlcnQobV9j
YW5FeGVjdXRlRWRpdGluZ0NvbW1hbmQgPT0gd2Via2l0X2VkaXRvcl9zdGF0ZV9nZXRfaXNfdW5k
b19hdmFpbGFibGUoZWRpdG9yU3RhdGUoKSkpOworICAgICAgICBlbHNlIGlmICghc3RyY21wKGNv
bW1hbmQsIFdFQktJVF9FRElUSU5HX0NPTU1BTkRfUkVETykpCisgICAgICAgICAgICBnX2Fzc2Vy
dChtX2NhbkV4ZWN1dGVFZGl0aW5nQ29tbWFuZCA9PSB3ZWJraXRfZWRpdG9yX3N0YXRlX2dldF9p
c19yZWRvX2F2YWlsYWJsZShlZGl0b3JTdGF0ZSgpKSk7CiAKLSAgICAgICAgcmV0dXJuIFRSVUU7
CisgICAgICAgIHJldHVybiBtX2NhbkV4ZWN1dGVFZGl0aW5nQ29tbWFuZDsKICAgICB9CiAKICAg
ICB2b2lkIGNvcHlDbGlwYm9hcmQoKQogICAgIHsKICAgICAgICAgd2Via2l0X3dlYl92aWV3X2V4
ZWN1dGVfZWRpdGluZ19jb21tYW5kKG1fd2ViVmlldywgV0VCS0lUX0VESVRJTkdfQ09NTUFORF9D
T1BZKTsKLSAgICAgICAgLy8gVGhlcmUncyBubyB3YXkgdG8ga25vdyB3aGVuIHRoZSBzZWxlY3Rp
b24gaGFzIGJlZW4gY29waWVkIHRvCi0gICAgICAgIC8vIHRoZSBjbGlwYm9hcmQsIHNvIHVzZSBh
IHRpbWVvdXQgc291cmNlIHRvIHF1ZXJ5IHRoZSBjbGlwYm9hcmQuCi0gICAgICAgIG1fdHJpZXND
b3VudCA9IDA7Ci0gICAgICAgIGdfdGltZW91dF9hZGQoa0NsaXBib2FyZFdhaXRUaW1lb3V0LCBy
ZWludGVycHJldF9jYXN0PEdTb3VyY2VGdW5jPih3YWl0Rm9yQ2xpcGJvYXJkVGV4dCksIHRoaXMp
OwotICAgICAgICBnX21haW5fbG9vcF9ydW4obV9tYWluTG9vcCk7CisgICAgICAgIHdhaXRVbnRp
bFRleHRJc0F2YWlsYWJsZUluQ2xpcGJvYXJkKCk7CiAgICAgfQogCiAgICAgZ2NoYXIqIGN1dFNl
bGVjdGlvbigpCkBAIC04MCwxMSArODEsNyBAQCBwdWJsaWM6CiAgICAgICAgIGdfYXNzZXJ0KGNh
bkV4ZWN1dGVFZGl0aW5nQ29tbWFuZChXRUJLSVRfRURJVElOR19DT01NQU5EX1BBU1RFKSk7CiAK
ICAgICAgICAgd2Via2l0X3dlYl92aWV3X2V4ZWN1dGVfZWRpdGluZ19jb21tYW5kKG1fd2ViVmll
dywgV0VCS0lUX0VESVRJTkdfQ09NTUFORF9DVVQpOwotICAgICAgICAvLyBUaGVyZSdzIG5vIHdh
eSB0byBrbm93IHdoZW4gdGhlIHNlbGVjdGlvbiBoYXMgYmVlbiBjdXQgdG8KLSAgICAgICAgLy8g
dGhlIGNsaXBib2FyZCwgc28gdXNlIGEgdGltZW91dCBzb3VyY2UgdG8gcXVlcnkgdGhlIGNsaXBi
b2FyZC4KLSAgICAgICAgbV90cmllc0NvdW50ID0gMDsKLSAgICAgICAgZ190aW1lb3V0X2FkZChr
Q2xpcGJvYXJkV2FpdFRpbWVvdXQsIHJlaW50ZXJwcmV0X2Nhc3Q8R1NvdXJjZUZ1bmM+KHdhaXRG
b3JDbGlwYm9hcmRUZXh0KSwgdGhpcyk7Ci0gICAgICAgIGdfbWFpbl9sb29wX3J1bihtX21haW5M
b29wKTsKKyAgICAgICAgd2FpdFVudGlsVGV4dElzQXZhaWxhYmxlSW5DbGlwYm9hcmQoKTsKIAog
ICAgICAgICByZXR1cm4gZ3RrX2NsaXBib2FyZF93YWl0X2Zvcl90ZXh0KG1fY2xpcGJvYXJkKTsK
ICAgICB9CkBAIC0xMTksNyArMTE2LDYgQEAgcHVibGljOgogCiAgICAgR3RrQ2xpcGJvYXJkKiBt
X2NsaXBib2FyZDsKICAgICBib29sIG1fY2FuRXhlY3V0ZUVkaXRpbmdDb21tYW5kOwotICAgIHNp
emVfdCBtX3RyaWVzQ291bnQ7CiAgICAgV2ViS2l0RWRpdG9yU3RhdGUqIG1fZWRpdG9yU3RhdGU7
CiB9OwogCkBAIC0xMzksNyArMTM1LDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdFZGl0b3JD
dXRDb3B5UGFzdGVOb25FZGl0YWJsZShFZGl0b3JUZXN0KiB0ZXN0LCBnY29uc3Rwb2kKIAogICAg
IEdVbmlxdWVQdHI8Y2hhcj4gc2VsZWN0ZWRTcGFuSFRNTChnX3N0cmR1cF9wcmludGYoc2VsZWN0
ZWRTcGFuSFRNTEZvcm1hdCwgImZhbHNlIikpOwogICAgIHRlc3QtPmxvYWRIdG1sKHNlbGVjdGVk
U3BhbkhUTUwuZ2V0KCksIG51bGxwdHIpOwotICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hl
ZCgpOworICAgIHRlc3QtPndhaXRVbnRpbERyYXdBZnRlckxvYWRGaW5pc2hlZCgpOwogCiAgICAg
Z19hc3NlcnQodGVzdC0+Y2FuRXhlY3V0ZUVkaXRpbmdDb21tYW5kKFdFQktJVF9FRElUSU5HX0NP
TU1BTkRfQ09QWSkpOwogICAgIC8vIEl0J3Mgbm90IHBvc3NpYmxlIHRvIGN1dCBhbmQgcGFzdGUg
d2hlbiBjb250ZW50IGlzIG5vdCBlZGl0YWJsZQpAQCAtMTY1LDcgKzE2MSw3IEBAIHN0YXRpYyB2
b2lkIHRlc3RXZWJWaWV3RWRpdG9yQ3V0Q29weVBhc3RlRWRpdGFibGUoRWRpdG9yVGVzdCogdGVz
dCwgZ2NvbnN0cG9pbnRlCiAKICAgICBHVW5pcXVlUHRyPGNoYXI+IHNlbGVjdGVkU3BhbkhUTUwo
Z19zdHJkdXBfcHJpbnRmKHNlbGVjdGVkU3BhbkhUTUxGb3JtYXQsICJmYWxzZSIpKTsKICAgICB0
ZXN0LT5sb2FkSHRtbChzZWxlY3RlZFNwYW5IVE1MLmdldCgpLCBudWxscHRyKTsKLSAgICB0ZXN0
LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKKyAgICB0ZXN0LT53YWl0VW50aWxEcmF3QWZ0ZXJM
b2FkRmluaXNoZWQoKTsKIAogICAgIC8vIFRoZXJlJ3MgYSBzZWxlY3Rpb24uCiAgICAgZ19hc3Nl
cnQodGVzdC0+Y2FuRXhlY3V0ZUVkaXRpbmdDb21tYW5kKFdFQktJVF9FRElUSU5HX0NPTU1BTkRf
Q1VUKSk7CkBAIC0xODMsNyArMTc5LDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdFZGl0b3JT
ZWxlY3RBbGxOb25FZGl0YWJsZShFZGl0b3JUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGUKIAogICAg
IEdVbmlxdWVQdHI8Y2hhcj4gc2VsZWN0ZWRTcGFuSFRNTChnX3N0cmR1cF9wcmludGYoc2VsZWN0
ZWRTcGFuSFRNTEZvcm1hdCwgImZhbHNlIikpOwogICAgIHRlc3QtPmxvYWRIdG1sKHNlbGVjdGVk
U3BhbkhUTUwuZ2V0KCksIG51bGxwdHIpOwotICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hl
ZCgpOworICAgIHRlc3QtPndhaXRVbnRpbERyYXdBZnRlckxvYWRGaW5pc2hlZCgpOwogCiAgICAg
Z19hc3NlcnQodGVzdC0+Y2FuRXhlY3V0ZUVkaXRpbmdDb21tYW5kKFdFQktJVF9FRElUSU5HX0NP
TU1BTkRfU0VMRUNUX0FMTCkpOwogCkBAIC0yMTEsNyArMjA3LDcgQEAgc3RhdGljIHZvaWQgdGVz
dFdlYlZpZXdFZGl0b3JTZWxlY3RBbGxFZGl0YWJsZShFZGl0b3JUZXN0KiB0ZXN0LCBnY29uc3Rw
b2ludGVyKQogCiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBzZWxlY3RlZFNwYW5IVE1MKGdfc3RyZHVw
X3ByaW50ZihzZWxlY3RlZFNwYW5IVE1MRm9ybWF0LCAiZmFsc2UiKSk7CiAgICAgdGVzdC0+bG9h
ZEh0bWwoc2VsZWN0ZWRTcGFuSFRNTC5nZXQoKSwgbnVsbHB0cik7Ci0gICAgdGVzdC0+d2FpdFVu
dGlsTG9hZEZpbmlzaGVkKCk7CisgICAgdGVzdC0+d2FpdFVudGlsRHJhd0FmdGVyTG9hZEZpbmlz
aGVkKCk7CiAKICAgICBnX2Fzc2VydCh0ZXN0LT5jYW5FeGVjdXRlRWRpdGluZ0NvbW1hbmQoV0VC
S0lUX0VESVRJTkdfQ09NTUFORF9TRUxFQ1RfQUxMKSk7CiAKQEAgLTIzNiwxMiArMjMyLDE1IEBA
IHN0YXRpYyB2b2lkIGxvYWRDb250ZW50c0FuZFRyeVRvQ3V0U2VsZWN0aW9uKEVkaXRvclRlc3Qq
IHRlc3QsIGJvb2wgY29udGVudEVkaXRhCiAKICAgICBHVW5pcXVlUHRyPGNoYXI+IHNlbGVjdGVk
U3BhbkhUTUwoZ19zdHJkdXBfcHJpbnRmKHNlbGVjdGVkU3BhbkhUTUxGb3JtYXQsIGNvbnRlbnRF
ZGl0YWJsZSA/ICJ0cnVlIiA6ICJmYWxzZSIpKTsKICAgICB0ZXN0LT5sb2FkSHRtbChzZWxlY3Rl
ZFNwYW5IVE1MLmdldCgpLCBudWxscHRyKTsKLSAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNo
ZWQoKTsKKyAgICB0ZXN0LT53YWl0VW50aWxEcmF3QWZ0ZXJMb2FkRmluaXNoZWQoKTsKIAogICAg
IGdfYXNzZXJ0KCF0ZXN0LT5pc0VkaXRhYmxlKCkpOwogICAgIHRlc3QtPnNldEVkaXRhYmxlKHRy
dWUpOwogICAgIGdfYXNzZXJ0KHRlc3QtPmlzRWRpdGFibGUoKSk7CiAKKyAgICAvLyBFbnN1cmUg
dGhlIGVkaXRvciBzdGF0ZSBpcyByZWZyZXNoZWQgYWZ0ZXIgY2hhbmdpbmcgZWRpdGFiaWxpdHku
CisgICAgdGVzdC0+dHJpZ2dlckRyYXdBbmRXYWl0VW50aWxGaW5pc2hlZCgpOworCiAgICAgLy8g
Q3V0IHRoZSBzZWxlY3Rpb24gdG8gdGhlIGNsaXBib2FyZCB0byBzZWUgaWYgdGhlIHZpZXcgaXMg
aW5kZWVkIGVkaXRhYmxlLgogICAgIEdVbmlxdWVQdHI8Y2hhcj4gY2xpcGJvYXJkVGV4dCh0ZXN0
LT5jdXRTZWxlY3Rpb24oKSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKGNsaXBib2FyZFRleHQuZ2V0
KCksID09LCAibWFrZSBKYWNrIGEgZHVsbCIpOwpAQCAtMjU1LDcgKzI1NCw3IEBAIHN0YXRpYyB2
b2lkIHRlc3RXZWJWaWV3RWRpdG9yTm9uRWRpdGFibGUoRWRpdG9yVGVzdCogdGVzdCkKIHsKICAg
ICBHVW5pcXVlUHRyPGNoYXI+IHNlbGVjdGVkU3BhbkhUTUwoZ19zdHJkdXBfcHJpbnRmKHNlbGVj
dGVkU3BhbkhUTUxGb3JtYXQsICJmYWxzZSIpKTsKICAgICB0ZXN0LT5sb2FkSHRtbChzZWxlY3Rl
ZFNwYW5IVE1MLmdldCgpLCBudWxscHRyKTsKLSAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNo
ZWQoKTsKKyAgICB0ZXN0LT53YWl0VW50aWxEcmF3QWZ0ZXJMb2FkRmluaXNoZWQoKTsKIAogICAg
IGdfYXNzZXJ0KCF0ZXN0LT5pc0VkaXRhYmxlKCkpOwogICAgIHRlc3QtPnNldEVkaXRhYmxlKHRy
dWUpOwpAQCAtMjkzLDkgKzI5Miw4IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3RWRpdG9yRWRp
dG9yU3RhdGVUeXBpbmdBdHRyaWJ1dGVzKEVkaXRvclRlc3QqIHRlc3QsIGdjb25zCiAgICAgICAg
ICI8Yj48aT5ib2xkYW5kaXRhbGljIDwvaT48L2I+IgogICAgICAgICAiPC9ib2R5PjwvaHRtbD4i
OwogCi0gICAgdGVzdC0+c2hvd0luV2luZG93QW5kV2FpdFVudGlsTWFwcGVkKCk7CiAgICAgdGVz
dC0+bG9hZEh0bWwodHlwaW5nQXR0cmlidXRlc0hUTUwsIG51bGxwdHIpOwotICAgIHRlc3QtPndh
aXRVbnRpbExvYWRGaW5pc2hlZCgpOworICAgIHRlc3QtPndhaXRVbnRpbERyYXdBZnRlckxvYWRG
aW5pc2hlZCgpOwogICAgIHRlc3QtPnNldEVkaXRhYmxlKHRydWUpOwogCiAgICAgdW5zaWduZWQg
dHlwaW5nQXR0cmlidXRlcyA9IHRlc3QtPnR5cGluZ0F0dHJpYnV0ZXMoKTsKQEAgLTQwNSw3ICs0
MDMsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0VkaXRvckVkaXRvclN0YXRlVHlwaW5nQXR0
cmlidXRlcyhFZGl0b3JUZXN0KiB0ZXN0LCBnY29ucwogc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdF
ZGl0b3JJbnNlcnRJbWFnZShFZGl0b3JUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewogICAg
IHRlc3QtPmxvYWRIdG1sKCI8aHRtbD48Ym9keT48L2JvZHk+PC9odG1sPiIsICJmaWxlOi8vLyIp
OwotICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworICAgIHRlc3QtPndhaXRVbnRp
bERyYXdBZnRlckxvYWRGaW5pc2hlZCgpOwogICAgIHRlc3QtPnNldEVkaXRhYmxlKHRydWUpOwog
CiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBpbWFnZVBhdGgoZ19idWlsZF9maWxlbmFtZShUZXN0Ojpn
ZXRSZXNvdXJjZXNEaXIoKS5kYXRhKCksICJibGFuay5pY28iLCBudWxscHRyKSk7CkBAIC00MjIs
NyArNDIwLDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdFZGl0b3JJbnNlcnRJbWFnZShFZGl0
b3JUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdFZGl0
b3JDcmVhdGVMaW5rKEVkaXRvclRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7CiAgICAgdGVz
dC0+bG9hZEh0bWwoIjxodG1sPjxib2R5IG9ubG9hZD1cImRvY3VtZW50LmdldFNlbGVjdGlvbigp
LnNlbGVjdEFsbENoaWxkcmVuKGRvY3VtZW50LmJvZHkpO1wiPndlYmtpdGd0ay5vcmc8L2JvZHk+
PC9odG1sPiIsIG51bGxwdHIpOwotICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwor
ICAgIHRlc3QtPndhaXRVbnRpbERyYXdBZnRlckxvYWRGaW5pc2hlZCgpOwogICAgIHRlc3QtPnNl
dEVkaXRhYmxlKHRydWUpOwogCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHdlYmtpdEdUS1VSTCA9
ICJodHRwOi8vd3d3LndlYmtpdGd0ay5vcmcvIjsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmggYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5oCmluZGV4IDMyNmE0YWJkM2QwMDEzMDFhMTUx
ZDQ5MzE1YmZhMzFiNTU3MzA4Y2QuLjU0NDE1OTZhYmNiOWNjZTM0ZGIzZGUyMTM1ZTNiMDA5MzIy
MTI1ZjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dl
YlZpZXdUZXN0LmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2Vi
Vmlld1Rlc3QuaApAQCAtNjYsNiArNjYsOCBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oR1RLKQog
ICAgIHZvaWQgc2hvd0luV2luZG93KEd0a1dpbmRvd1R5cGUgPSBHVEtfV0lORE9XX1BPUFVQKTsK
ICAgICB2b2lkIHNob3dJbldpbmRvd0FuZFdhaXRVbnRpbE1hcHBlZChHdGtXaW5kb3dUeXBlID0g
R1RLX1dJTkRPV19QT1BVUCwgaW50IHdpZHRoID0gMCwgaW50IGhlaWdodCA9IDApOworICAgIHZv
aWQgdHJpZ2dlckRyYXdBbmRXYWl0VW50aWxGaW5pc2hlZCgpOworICAgIHZvaWQgd2FpdFVudGls
VGV4dElzQXZhaWxhYmxlSW5DbGlwYm9hcmQoKTsKICAgICB2b2lkIGVtaXRQb3B1cE1lbnVTaWdu
YWwoKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2Vi
S2l0R0xpYi9ndGsvV2ViVmlld1Rlc3RHdGsuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGli
L1dlYktpdEdMaWIvZ3RrL1dlYlZpZXdUZXN0R3RrLmNwcAppbmRleCBhMTM0MWE2ODQ4ZGYxZWNh
Mjc4Y2E4ZDY0MmQ3ZDZhODdhNDhjM2E0Li4wZWIzNzgyYjIzZDIyMDkzODRiMWZlZjAyYTllMjk3
MDQxZGE4ZDgyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xp
Yi9ndGsvV2ViVmlld1Rlc3RHdGsuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9X
ZWJLaXRHTGliL2d0ay9XZWJWaWV3VGVzdEd0ay5jcHAKQEAgLTkxLDYgKzkxLDQ0IEBAIHZvaWQg
V2ViVmlld1Rlc3Q6OnNob3dJbldpbmRvd0FuZFdhaXRVbnRpbE1hcHBlZChHdGtXaW5kb3dUeXBl
IHdpbmRvd1R5cGUsIGludCB3CiAgICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3ApOwogfQog
CitzdGF0aWMgZ2Jvb2xlYW4gd2ViVmlld0RyYXdDYWxsYmFjayhHTWFpbkxvb3AqIG1haW5Mb29w
KQoreworICAgIGdfbWFpbl9sb29wX3F1aXQobWFpbkxvb3ApOworICAgIHJldHVybiBGQUxTRTsK
K30KKwordm9pZCBXZWJWaWV3VGVzdDo6dHJpZ2dlckRyYXdBbmRXYWl0VW50aWxGaW5pc2hlZCgp
Cit7CisgICAgYm9vbCBzaG91bGREZXN0cm95VGVtcG9yYXJ5V2luZG93ID0gZmFsc2U7CisgICAg
aWYgKCFtX3BhcmVudFdpbmRvdykgeworICAgICAgICBzaG93SW5XaW5kb3coR1RLX1dJTkRPV19U
T1BMRVZFTCk7CisgICAgICAgIHNob3VsZERlc3Ryb3lUZW1wb3JhcnlXaW5kb3cgPSB0cnVlOwor
ICAgIH0KKworICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dhcHBlZChtX3dlYlZpZXcsICJkcmF3Iiwg
R19DQUxMQkFDSyh3ZWJWaWV3RHJhd0NhbGxiYWNrKSwgbV9tYWluTG9vcCk7CisgICAgZ3RrX3dp
ZGdldF9xdWV1ZV9kcmF3KEdUS19XSURHRVQobV93ZWJWaWV3KSk7CisgICAgZ19tYWluX2xvb3Bf
cnVuKG1fbWFpbkxvb3ApOworCisgICAgaWYgKHNob3VsZERlc3Ryb3lUZW1wb3JhcnlXaW5kb3cp
IHsKKyAgICAgICAgZ3RrX2NvbnRhaW5lcl9yZW1vdmUoR1RLX0NPTlRBSU5FUihtX3BhcmVudFdp
bmRvdyksIEdUS19XSURHRVQobV93ZWJWaWV3KSk7CisgICAgICAgIGd0a193aWRnZXRfZGVzdHJv
eShtX3BhcmVudFdpbmRvdyk7CisgICAgICAgIG1fcGFyZW50V2luZG93ID0gbnVsbHB0cjsKKyAg
ICB9Cit9CisKK3ZvaWQgV2ViVmlld1Rlc3Q6OndhaXRVbnRpbFRleHRJc0F2YWlsYWJsZUluQ2xp
cGJvYXJkKCkKK3sKKyAgICBnX3RpbWVvdXRfYWRkKDUwLCBbXShncG9pbnRlciB1c2VyRGF0YSkg
LT4gZ2Jvb2xlYW4geworICAgICAgICBhdXRvKiBtYWluTG9vcCA9IHN0YXRpY19jYXN0PEdNYWlu
TG9vcCo+KHVzZXJEYXRhKTsKKyAgICAgICAgaWYgKGd0a19jbGlwYm9hcmRfd2FpdF9pc190ZXh0
X2F2YWlsYWJsZShndGtfY2xpcGJvYXJkX2dldChHREtfU0VMRUNUSU9OX0NMSVBCT0FSRCkpKSB7
CisgICAgICAgICAgICBnX21haW5fbG9vcF9xdWl0KG1haW5Mb29wKTsKKyAgICAgICAgICAgIHJl
dHVybiBHX1NPVVJDRV9SRU1PVkU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIEdfU09VUkNF
X0NPTlRJTlVFOworICAgIH0sIG1fbWFpbkxvb3ApOworICAgIGdfbWFpbl9sb29wX3J1bihtX21h
aW5Mb29wKTsKK30KKwogdm9pZCBXZWJWaWV3VGVzdDo6bW91c2VNb3ZlVG8oaW50IHgsIGludCB5
LCB1bnNpZ25lZCBtb3VzZU1vZGlmaWVycykKIHsKICAgICBnX2Fzc2VydChtX3BhcmVudFdpbmRv
dyk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>322374</attachid>
            <date>2017-10-02 07:03:47 -0700</date>
            <delta_ts>2017-10-26 11:14:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-168219-20171002160345.patch</filename>
            <type>text/plain</type>
            <size>39323</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyNjg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWRmZmNmYjBlY2QyZTRm
ZmJlNmEwYjIzN2QwNDMyYzI2YWIzOWExNy4uNWM0OGFhNTVkYTY3NDRjZWJhNDUzZTM0ZGYyNTA1
MzkzMzI0MjdkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE3LTEwLTAxICBNaWNo
YWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KKworICAgICAgICBbV1BFXVtH
VEtdIEV4cG9zZSBhdmFpbGFiaWxpdHkgb2YgY2VydGFpbiBlZGl0aW5nIGNvbW1hbmRzIGluIFdl
YktpdEVkaXRvclN0YXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNjgyMTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBNYWtlIEVkaXRvcjo6Y2FuVW5kbyBhbmQgRWRpdG9yOjpjYW5SZWRvIGNvbnN0Lgor
CisgICAgICAgIEFsc28sIHJlbW92ZSB1bnVzZWQgYWxsb3dzQ29weSBmcm9tIEhpdFRlc3RSZXN1
bHQuCisKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0b3I6OmNhblVuZG8gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpjYW5SZWRv
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Y2FuVW5kbyk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmNhblJlZG8pOiBEZWxldGVkLgorICAgICAgICAqIGVk
aXRpbmcvRWRpdG9yLmg6CisgICAgICAgICogcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6YWxsb3dzQ29weSBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICogcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaDoKKwogMjAxNy0wOS0zMCAg
Unlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBEb24ndCByZXZlYWwg
ZmlsZSBVUkwgd2hlbiBwYXN0aW5nIGFuIGltYWdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGVkMDgzYzdmOGM1Njgw
OTIzODcxY2RiNTYwNGNkMTljODU2YTlhNzAuLjdmMjczMDNmMzMyMzU3OTBiNzg3MjA2ODY0NmNm
YTgzNTVmNWFkY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDggQEAKKzIwMTctMTAtMDEgIE1pY2hh
ZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtXUEVdW0dU
S10gRXhwb3NlIGF2YWlsYWJpbGl0eSBvZiBjZXJ0YWluIGVkaXRpbmcgY29tbWFuZHMgaW4gV2Vi
S2l0RWRpdG9yU3RhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2ODIxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEV4cG9zZSBjYW5DdXQsIGNhbkNvcHksIGNhblBhc3RlLCBjYW5VbmRvLCBhbmQgY2Fu
UmVkbyBpbiBFZGl0b3JTdGF0ZTo6UG9zdExheW91RGF0YS4KKworICAgICAgICBBZGQgY29ycmVz
cG9uZGluZyBuZXcgV1BFL0dUSyBBUEkuCisKKyAgICAgICAgUmVtb3ZlIGFsbG93c0NvcHkgZnJv
bSBXZWJLaXRUZXN0UmVzdWx0RGF0YS4gSXQncyB1bnVzZWQgYW5kIGRvZXMgbm90IHdvcmsgY29y
cmVjdGx5IGluIGFsbAorICAgICAgICBjaXJjdW1zdGFuY2VzLgorCisgICAgICAgIEFsc28sIHJl
bW92ZSBhIGJ1bmNoIG9mICNpZnMgZ3VhcmRpbmcgcG9zdCBsYXlvdXQgZGF0YSwgc2luY2UgaXQn
cyBub3cgdXNlZCBvbiBhbGwgcG9ydHMuCisKKyAgICAgICAgKiBTaGFyZWQvRWRpdG9yU3RhdGUu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JTdGF0ZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6RWRpdG9yU3RhdGU6OmRlY29kZSk6CisgICAgICAgIChXZWJLaXQ6OkVkaXRv
clN0YXRlOjpQb3N0TGF5b3V0RGF0YTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
RWRpdG9yU3RhdGU6OlBvc3RMYXlvdXREYXRhOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9F
ZGl0b3JTdGF0ZS5oOgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JTdGF0ZTo6cG9zdExheW91dERh
dGEgY29uc3QgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0YS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkhpdFRlc3RSZXN1bHREYXRhOjpXZWJIaXRUZXN0UmVz
dWx0RGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYkhpdFRlc3RSZXN1bHREYXRhOjplbmNvZGUg
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJIaXRUZXN0UmVzdWx0RGF0YTo6ZGVjb2RlKToK
KyAgICAgICAgKiBTaGFyZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0FQSUhpdFRlc3RSZXN1bHQuaDoKKyAgICAgICAgKEFQSTo6SGl0VGVzdFJlc3Vs
dDo6YWxsb3dzQ29weSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdEVkaXRvclN0YXRlLmNwcDoKKyAgICAgICAgKHdlYmtpdEVkaXRvclN0YXRlQ2hh
bmdlZCk6CisgICAgICAgICh3ZWJraXRfZWRpdG9yX3N0YXRlX2dldF9pc19jdXRfYXZhaWxhYmxl
KToKKyAgICAgICAgKHdlYmtpdF9lZGl0b3Jfc3RhdGVfZ2V0X2lzX2NvcHlfYXZhaWxhYmxlKToK
KyAgICAgICAgKHdlYmtpdF9lZGl0b3Jfc3RhdGVfZ2V0X2lzX3Bhc3RlX2F2YWlsYWJsZSk6Cisg
ICAgICAgICh3ZWJraXRfZWRpdG9yX3N0YXRlX2dldF9pc191bmRvX2F2YWlsYWJsZSk6CisgICAg
ICAgICh3ZWJraXRfZWRpdG9yX3N0YXRlX2dldF9pc19yZWRvX2F2YWlsYWJsZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RWRpdG9yU3RhdGUuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRFZGl0b3JTdGF0ZS5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZWRp
dG9yU3RhdGUgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFn
ZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGVyZm9ybUltbWVkaWF0ZUFjdGlv
bkhpdFRlc3RBdExvY2F0aW9uKToKKwogMjAxNy0wOS0zMCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBh
cHBsZS5jb20+CiAKICAgICAgICAgSGF2ZSBJUEM6OkNvbm5lY3Rpb246OkNsaWVudCBvYmplY3Rz
IGNvbnNpc3RlbnRseSBpbnZhbGlkYXRlIHRoZSBjb25uZWN0aW9uIHdoZW4gZGVzdHJveWVkCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggMTY1NTI1NDVjMzVlYWM2ZGEzOGMxOGZiYmQ0
ZDgzMjM1ZGRmOTEyMC4uYTE4ODBmYTA4YjgzOTNjMjA0NGNhYWM0NzcxYjhlNTIxNmE0NjI3OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtMTU5NSw3ICsxNTk1LDcgQEAgdm9pZCBF
ZGl0b3I6OmNsZWFyVW5kb1JlZG9PcGVyYXRpb25zKCkKICAgICAgICAgY2xpZW50KCktPmNsZWFy
VW5kb1JlZG9PcGVyYXRpb25zKCk7CiB9CiAKLWJvb2wgRWRpdG9yOjpjYW5VbmRvKCkKK2Jvb2wg
RWRpdG9yOjpjYW5VbmRvKCkgY29uc3QKIHsKICAgICByZXR1cm4gY2xpZW50KCkgJiYgY2xpZW50
KCktPmNhblVuZG8oKTsKIH0KQEAgLTE2MDYsNyArMTYwNiw3IEBAIHZvaWQgRWRpdG9yOjp1bmRv
KCkKICAgICAgICAgY2xpZW50KCktPnVuZG8oKTsKIH0KIAotYm9vbCBFZGl0b3I6OmNhblJlZG8o
KQorYm9vbCBFZGl0b3I6OmNhblJlZG8oKSBjb25zdAogewogICAgIHJldHVybiBjbGllbnQoKSAm
JiBjbGllbnQoKS0+Y2FuUmVkbygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKaW5kZXggODQ0
MDVjYjliN2ZmNjg1NWQzNWVkMzcxN2QwMWU0MzQ0OTkzZjY3ZS4uOWM2NWQzOTNmNmM0ZjVhMGFm
ZmM0NjU0OGNlYmRlMWU4ZTViYjU3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCkBAIC0zMDQs
OSArMzA0LDkgQEAgcHVibGljOgogICAgIGJvb2wgc2hvdWxkRW5kRWRpdGluZyhSYW5nZSopOwog
CiAgICAgdm9pZCBjbGVhclVuZG9SZWRvT3BlcmF0aW9ucygpOwotICAgIGJvb2wgY2FuVW5kbygp
OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY2FuVW5kbygpIGNvbnN0OwogICAgIHZvaWQgdW5k
bygpOwotICAgIGJvb2wgY2FuUmVkbygpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY2FuUmVk
bygpIGNvbnN0OwogICAgIHZvaWQgcmVkbygpOwogCiAgICAgdm9pZCBkaWRCZWdpbkVkaXRpbmco
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAppbmRleCBiNzI3
MGE1MDJhZWVkNzQ3MWNlZDYzNmQ2MWVkNWU1ZmY4N2Y3YWQ5Li40Y2VmOWJhODYxNTE2YTY5ZjNk
N2FkODNhMjJmZDc4MWE0NDEyZmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvSGl0VGVzdFJlc3VsdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRl
c3RSZXN1bHQuY3BwCkBAIC01OTYsMjEgKzU5Niw2IEBAIGJvb2wgSGl0VGVzdFJlc3VsdDo6aXNP
dmVyVGV4dEluc2lkZUZvcm1Db250cm9sRWxlbWVudCgpIGNvbnN0CiAgICAgcmV0dXJuICF3b3Jk
UmFuZ2UtPnRleHQoKS5pc0VtcHR5KCk7CiB9CiAKLWJvb2wgSGl0VGVzdFJlc3VsdDo6YWxsb3dz
Q29weSgpIGNvbnN0Ci17Ci0gICAgTm9kZSogbm9kZSA9IGlubmVyTm9kZSgpOwotICAgIGlmICgh
bm9kZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgUmVuZGVyT2JqZWN0KiByZW5kZXJl
ciA9IG5vZGUtPnJlbmRlcmVyKCk7Ci0gICAgaWYgKCFyZW5kZXJlcikKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgYm9vbCBpc1VzZXJTZWxlY3ROb25lID0gcmVuZGVyZXItPnN0eWxlKCku
dXNlclNlbGVjdCgpID09IFNFTEVDVF9OT05FOwotICAgIGJvb2wgaXNQYXNzd29yZEZpZWxkID0g
aXM8SFRNTElucHV0RWxlbWVudD4obm9kZSkgJiYgZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4o
Km5vZGUpLmlzUGFzc3dvcmRGaWVsZCgpOwotICAgIHJldHVybiAhaXNQYXNzd29yZEZpZWxkICYm
ICFpc1VzZXJTZWxlY3ROb25lOwotfQotCiBVUkwgSGl0VGVzdFJlc3VsdDo6YWJzb2x1dGVMaW5r
VVJMKCkgY29uc3QKIHsKICAgICBpZiAobV9pbm5lclVSTEVsZW1lbnQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaAppbmRleCBiYTJkN2EyYTU5MGI1YTc0NTRiNWFmNGRj
Yjk2ODYyYWM5ZjgwMmVkLi4wNGIzODgyZjBlMmUwOGIyMjhkOTc0M2NkZjIxNTkzYTc0MGUwNWQ0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmgKQEAgLTEzMSw3ICsx
MzEsNiBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzRG93bmxvYWRhYmxl
TWVkaWEoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzT3ZlclRleHRJbnNpZGVG
b3JtQ29udHJvbEVsZW1lbnQoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIGFsbG93
c0NvcHkoKSBjb25zdDsKIAogICAgIEhpdFRlc3RQcm9ncmVzcyBhZGROb2RlVG9MaXN0QmFzZWRU
ZXN0UmVzdWx0KE5vZGUqLCBjb25zdCBIaXRUZXN0UmVxdWVzdCYsIGNvbnN0IEhpdFRlc3RMb2Nh
dGlvbiYgcG9pbnRJbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UmVjdCYgPSBMYXlvdXRSZWN0KCkp
OwogICAgIEhpdFRlc3RQcm9ncmVzcyBhZGROb2RlVG9MaXN0QmFzZWRUZXN0UmVzdWx0KE5vZGUq
LCBjb25zdCBIaXRUZXN0UmVxdWVzdCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgcG9pbnRJbkNv
bnRhaW5lciwgY29uc3QgRmxvYXRSZWN0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9FZGl0b3JTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0b3JTdGF0ZS5j
cHAKaW5kZXggNWFmYWM1OWFiZWRiYWFkMDE3MzE0NmY3YzIwMjEzN2E0ZmFhZTMxOC4uZmM5NWY3
MGVhMmNlYTkzZGJmYjYzYWVmZjM4MzZhMjFhMGM4ZGI5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvRWRpdG9yU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Vk
aXRvclN0YXRlLmNwcApAQCAtNDIsMTAgKzQyLDggQEAgdm9pZCBFZGl0b3JTdGF0ZTo6ZW5jb2Rl
KElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IGhhc0NvbXBvc2l0
aW9uOwogICAgIGVuY29kZXIgPDwgaXNNaXNzaW5nUG9zdExheW91dERhdGE7CiAKLSNpZiBQTEFU
Rk9STShJT1MpIHx8IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oTUFDKQogICAgIGlmICghaXNN
aXNzaW5nUG9zdExheW91dERhdGEpCiAgICAgICAgIG1fcG9zdExheW91dERhdGEuZW5jb2RlKGVu
Y29kZXIpOwotI2VuZGlmCiAKICNpZiBQTEFURk9STShJT1MpCiAgICAgZW5jb2RlciA8PCBmaXJz
dE1hcmtlZFJlY3Q7CkBAIC04MywxMiArODEsMTAgQEAgYm9vbCBFZGl0b3JTdGF0ZTo6ZGVjb2Rl
KElQQzo6RGVjb2RlciYgZGVjb2RlciwgRWRpdG9yU3RhdGUmIHJlc3VsdCkKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHJlc3VsdC5pc01pc3NpbmdQb3N0TGF5b3V0RGF0YSkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotI2lmIFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0oR1RLKSB8fCBQTEFU
Rk9STShNQUMpCiAgICAgaWYgKCFyZXN1bHQuaXNNaXNzaW5nUG9zdExheW91dERhdGEpIHsKICAg
ICAgICAgaWYgKCFQb3N0TGF5b3V0RGF0YTo6ZGVjb2RlKGRlY29kZXIsIHJlc3VsdC5wb3N0TGF5
b3V0RGF0YSgpKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0jZW5kaWYKIAog
I2lmIFBMQVRGT1JNKElPUykKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5maXJzdE1h
cmtlZFJlY3QpKQpAQCAtMTAyLDcgKzk4LDYgQEAgYm9vbCBFZGl0b3JTdGF0ZTo6ZGVjb2RlKElQ
Qzo6RGVjb2RlciYgZGVjb2RlciwgRWRpdG9yU3RhdGUmIHJlc3VsdCkKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotI2lmIFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShN
QUMpCiB2b2lkIEVkaXRvclN0YXRlOjpQb3N0TGF5b3V0RGF0YTo6ZW5jb2RlKElQQzo6RW5jb2Rl
ciYgZW5jb2RlcikgY29uc3QKIHsKICAgICBlbmNvZGVyIDw8IHR5cGluZ0F0dHJpYnV0ZXM7CkBA
IC0xMzQsNiArMTI5LDExIEBAIHZvaWQgRWRpdG9yU3RhdGU6OlBvc3RMYXlvdXREYXRhOjplbmNv
ZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgcGFyYWdyYXBo
Q29udGV4dEZvckNhbmRpZGF0ZVJlcXVlc3Q7CiAgICAgZW5jb2RlciA8PCBzdHJpbmdGb3JDYW5k
aWRhdGVSZXF1ZXN0OwogI2VuZGlmCisgICAgZW5jb2RlciA8PCBjYW5DdXQ7CisgICAgZW5jb2Rl
ciA8PCBjYW5Db3B5OworICAgIGVuY29kZXIgPDwgY2FuUGFzdGU7CisgICAgZW5jb2RlciA8PCBj
YW5VbmRvOworICAgIGVuY29kZXIgPDwgY2FuUmVkbzsKIH0KIAogYm9vbCBFZGl0b3JTdGF0ZTo6
UG9zdExheW91dERhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFBvc3RMYXlvdXRE
YXRhJiByZXN1bHQpCkBAIC0xOTEsOCArMTkxLDE4IEBAIGJvb2wgRWRpdG9yU3RhdGU6OlBvc3RM
YXlvdXREYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBQb3N0TGF5b3V0RGF0YSYK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCiAKKyAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHJlc3VsdC5jYW5DdXQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShyZXN1bHQuY2FuQ29weSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHJlc3VsdC5jYW5QYXN0ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5jYW5VbmRvKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmNhblJlZG8pKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KLSNlbmRpZiAvLyBQTEFURk9S
TShJT1MpIHx8IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oTUFDKQogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0b3JTdGF0ZS5oIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvRWRpdG9yU3RhdGUuaAppbmRleCBiNzA1YTZlOThmODM1ZjNiMGYyMDVhZDA0ZWQzMWIzMzI4
MDEzNjg1Li5kYWM1YjkxYWQ3NjBhOTFlMjRjMDhlYjc3Yjk2MTY5MmQ4M2Q1Y2QyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0b3JTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0VkaXRvclN0YXRlLmgKQEAgLTc3LDcgKzc3LDYgQEAgc3RydWN0IEVkaXRvclN0
YXRlIHsKICAgICBTdHJpbmcgbWFya2VkVGV4dDsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9T
KSB8fCBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKE1BQykKICAgICBzdHJ1Y3QgUG9zdExheW91
dERhdGEgewogICAgICAgICB1aW50MzJfdCB0eXBpbmdBdHRyaWJ1dGVzIHsgQXR0cmlidXRlTm9u
ZSB9OwogI2lmIFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0oR1RLKQpAQCAtMTA5LDI0ICsxMDgs
MjYgQEAgc3RydWN0IEVkaXRvclN0YXRlIHsKICAgICAgICAgU3RyaW5nIHN0cmluZ0ZvckNhbmRp
ZGF0ZVJlcXVlc3Q7CiAjZW5kaWYKIAorICAgICAgICBib29sIGNhbkN1dCB7IGZhbHNlIH07Cisg
ICAgICAgIGJvb2wgY2FuQ29weSB7IGZhbHNlIH07CisgICAgICAgIGJvb2wgY2FuUGFzdGUgeyBm
YWxzZSB9OworICAgICAgICBib29sIGNhblVuZG8geyBmYWxzZSB9OworICAgICAgICBib29sIGNh
blJlZG8geyBmYWxzZSB9OworCiAgICAgICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNv
bnN0OwogICAgICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoSVBDOjpEZWNvZGVyJiwgUG9zdExheW91
dERhdGEmKTsKICAgICB9OwogCiAgICAgY29uc3QgUG9zdExheW91dERhdGEmIHBvc3RMYXlvdXRE
YXRhKCkgY29uc3Q7CiAgICAgUG9zdExheW91dERhdGEmIHBvc3RMYXlvdXREYXRhKCk7Ci0jZW5k
aWYgLy8gUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKE1BQykKIAog
ICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OwogICAgIHN0YXRpYyBib29sIGRl
Y29kZShJUEM6OkRlY29kZXImLCBFZGl0b3JTdGF0ZSYpOwogCi0jaWYgUExBVEZPUk0oSU9TKSB8
fCBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKE1BQykKIHByaXZhdGU6CiAgICAgUG9zdExheW91
dERhdGEgbV9wb3N0TGF5b3V0RGF0YTsKLSNlbmRpZgogfTsKIAotI2lmIFBMQVRGT1JNKElPUykg
fHwgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShNQUMpCiBpbmxpbmUgYXV0byBFZGl0b3JTdGF0
ZTo6cG9zdExheW91dERhdGEoKSAtPiBQb3N0TGF5b3V0RGF0YSYKIHsKICAgICBBU1NFUlRfV0lU
SF9NRVNTQUdFKCFpc01pc3NpbmdQb3N0TGF5b3V0RGF0YSwgIkF0dGVtcHQgdG8gYWNjZXNzIHBv
c3QgbGF5b3V0IGRhdGEgYmVmb3JlIHJlY2VpdmluZyBpdCIpOwpAQCAtMTM4LDcgKzEzOSw2IEBA
IGlubGluZSBhdXRvIEVkaXRvclN0YXRlOjpwb3N0TGF5b3V0RGF0YSgpIGNvbnN0IC0+IGNvbnN0
IFBvc3RMYXlvdXREYXRhJgogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIWlzTWlzc2luZ1Bvc3RM
YXlvdXREYXRhLCAiQXR0ZW1wdCB0byBhY2Nlc3MgcG9zdCBsYXlvdXQgZGF0YSBiZWZvcmUgcmVj
ZWl2aW5nIGl0Iik7CiAgICAgcmV0dXJuIG1fcG9zdExheW91dERhdGE7CiB9Ci0jZW5kaWYKIAog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0
YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0YS5jcHAKaW5k
ZXggYmIxMzFiYTc1YWE5OWUyMjMwYzI3OWQ5ZmJjZjNmYzRjNjY4ZmYwOC4uMTc5Y2E0YmUzN2Jl
ZDBlM2RjY2I1ZDMyNjNmM2YwNjliMDUyNTU1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkhpdFRlc3RSZXN1bHREYXRhLmNwcApAQCAtNTMsNyArNTMsNiBAQCBXZWJIaXRUZXN0UmVz
dWx0RGF0YTo6V2ViSGl0VGVzdFJlc3VsdERhdGEoY29uc3QgV2ViQ29yZTo6SGl0VGVzdFJlc3Vs
dCYgaGl0VGVzdAogICAgICwgaXNTZWxlY3RlZChoaXRUZXN0UmVzdWx0LmlzU2VsZWN0ZWQoKSkK
ICAgICAsIGlzVGV4dE5vZGUoaGl0VGVzdFJlc3VsdC5pbm5lck5vZGUoKSAmJiBoaXRUZXN0UmVz
dWx0LmlubmVyTm9kZSgpLT5pc1RleHROb2RlKCkpCiAgICAgLCBpc092ZXJUZXh0SW5zaWRlRm9y
bUNvbnRyb2xFbGVtZW50KGhpdFRlc3RSZXN1bHQuaXNPdmVyVGV4dEluc2lkZUZvcm1Db250cm9s
RWxlbWVudCgpKQotICAgICwgYWxsb3dzQ29weShoaXRUZXN0UmVzdWx0LmFsbG93c0NvcHkoKSkK
ICAgICAsIGlzRG93bmxvYWRhYmxlTWVkaWEoaGl0VGVzdFJlc3VsdC5pc0Rvd25sb2FkYWJsZU1l
ZGlhKCkpCiAgICAgLCBpbWFnZVNpemUoMCkKIHsKQEAgLTczLDcgKzcyLDYgQEAgV2ViSGl0VGVz
dFJlc3VsdERhdGE6OldlYkhpdFRlc3RSZXN1bHREYXRhKGNvbnN0IFdlYkNvcmU6OkhpdFRlc3RS
ZXN1bHQmIGhpdFRlc3QKICAgICAsIGlzU2VsZWN0ZWQoaGl0VGVzdFJlc3VsdC5pc1NlbGVjdGVk
KCkpCiAgICAgLCBpc1RleHROb2RlKGhpdFRlc3RSZXN1bHQuaW5uZXJOb2RlKCkgJiYgaGl0VGVz
dFJlc3VsdC5pbm5lck5vZGUoKS0+aXNUZXh0Tm9kZSgpKQogICAgICwgaXNPdmVyVGV4dEluc2lk
ZUZvcm1Db250cm9sRWxlbWVudChoaXRUZXN0UmVzdWx0LmlzT3ZlclRleHRJbnNpZGVGb3JtQ29u
dHJvbEVsZW1lbnQoKSkKLSAgICAsIGFsbG93c0NvcHkoaGl0VGVzdFJlc3VsdC5hbGxvd3NDb3B5
KCkpCiAgICAgLCBpc0Rvd25sb2FkYWJsZU1lZGlhKGhpdFRlc3RSZXN1bHQuaXNEb3dubG9hZGFi
bGVNZWRpYSgpKQogICAgICwgaW1hZ2VTaXplKDApCiB7CkBAIC0xMDksNyArMTA3LDYgQEAgdm9p
ZCBXZWJIaXRUZXN0UmVzdWx0RGF0YTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29u
c3QKICAgICBlbmNvZGVyIDw8IGlzU2VsZWN0ZWQ7CiAgICAgZW5jb2RlciA8PCBpc1RleHROb2Rl
OwogICAgIGVuY29kZXIgPDwgaXNPdmVyVGV4dEluc2lkZUZvcm1Db250cm9sRWxlbWVudDsKLSAg
ICBlbmNvZGVyIDw8IGFsbG93c0NvcHk7CiAgICAgZW5jb2RlciA8PCBpc0Rvd25sb2FkYWJsZU1l
ZGlhOwogICAgIGVuY29kZXIgPDwgbG9va3VwVGV4dDsKICAgICBlbmNvZGVyIDw8IGRpY3Rpb25h
cnlQb3B1cEluZm87CkBAIC0xNDMsNyArMTQwLDYgQEAgYm9vbCBXZWJIaXRUZXN0UmVzdWx0RGF0
YTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgV2ViSGl0VGVzdFJlc3VsdERhdGEmIGgK
ICAgICAgICAgfHwgIWRlY29kZXIuZGVjb2RlKGhpdFRlc3RSZXN1bHREYXRhLmlzU2VsZWN0ZWQp
CiAgICAgICAgIHx8ICFkZWNvZGVyLmRlY29kZShoaXRUZXN0UmVzdWx0RGF0YS5pc1RleHROb2Rl
KQogICAgICAgICB8fCAhZGVjb2Rlci5kZWNvZGUoaGl0VGVzdFJlc3VsdERhdGEuaXNPdmVyVGV4
dEluc2lkZUZvcm1Db250cm9sRWxlbWVudCkKLSAgICAgICAgfHwgIWRlY29kZXIuZGVjb2RlKGhp
dFRlc3RSZXN1bHREYXRhLmFsbG93c0NvcHkpCiAgICAgICAgIHx8ICFkZWNvZGVyLmRlY29kZSho
aXRUZXN0UmVzdWx0RGF0YS5pc0Rvd25sb2FkYWJsZU1lZGlhKQogICAgICAgICB8fCAhZGVjb2Rl
ci5kZWNvZGUoaGl0VGVzdFJlc3VsdERhdGEubG9va3VwVGV4dCkKICAgICAgICAgfHwgIWRlY29k
ZXIuZGVjb2RlKGhpdFRlc3RSZXN1bHREYXRhLmRpY3Rpb25hcnlQb3B1cEluZm8pKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuaCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHREYXRhLmgKaW5kZXggMzI0NjhhYmE5Yzc1
NjMxNzkwYTgwMGM4MmIxOGUwZDAwYWVkOTBjNS4uZDNjZmVlYzk5NmEwNDFhYWUwZmI5MzA3MTU1
ZWNmODI5Y2JjOTVmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViSGl0VGVz
dFJlc3VsdERhdGEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0
RGF0YS5oCkBAIC01Nyw3ICs1Nyw2IEBAIHN0cnVjdCBXZWJIaXRUZXN0UmVzdWx0RGF0YSB7CiAg
ICAgYm9vbCBpc1NlbGVjdGVkOwogICAgIGJvb2wgaXNUZXh0Tm9kZTsKICAgICBib29sIGlzT3Zl
clRleHRJbnNpZGVGb3JtQ29udHJvbEVsZW1lbnQ7Ci0gICAgYm9vbCBhbGxvd3NDb3B5OwogICAg
IGJvb2wgaXNEb3dubG9hZGFibGVNZWRpYTsKIAogICAgIFN0cmluZyBsb29rdXBUZXh0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhpdFRlc3RSZXN1bHQuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElIaXRUZXN0UmVzdWx0LmgKaW5kZXggY2Q5
MzljOWIwYTg3Y2NjMWM2NDdiYWEyYThhOTI3MDY5ZGE4ZjZkNC4uMzA2MjJiNDg2NjQ3NjRiZDU2
ZGM3MDBlNTNiOWQ4NDU3MWM3NzBiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSUhpdFRlc3RSZXN1bHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJSGl0VGVzdFJlc3VsdC5oCkBAIC03MCw4ICs3MCw2IEBAIHB1YmxpYzoKIAogICAgIGJv
b2wgaXNPdmVyVGV4dEluc2lkZUZvcm1Db250cm9sRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1f
ZGF0YS5pc092ZXJUZXh0SW5zaWRlRm9ybUNvbnRyb2xFbGVtZW50OyB9CiAKLSAgICBib29sIGFs
bG93c0NvcHkoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuYWxsb3dzQ29weTsgfQotCiAgICAgYm9v
bCBpc0Rvd25sb2FkYWJsZU1lZGlhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmlzRG93bmxvYWRh
YmxlTWVkaWE7IH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdEVkaXRvclN0YXRlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdEVkaXRvclN0YXRlLmNwcAppbmRleCA2NTUzYThkNWY4NzEzOWE3
YmVlNDEyYWViMDFhYzAwZmNjN2UwNTgyLi40MDZiZmRiNmJkY2ViNDVkYTYwNDcwYTFlYmYzOGUx
YmU2MGJhMGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRFZGl0b3JTdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0RWRpdG9yU3RhdGUuY3BwCkBAIC0zNCw4ICszNCw4IEBAIHVzaW5nIG5hbWVzcGFj
ZSBXZWJLaXQ7CiAgKiBAU2VlX2Fsc286ICNXZWJLaXRXZWJWaWV3CiAgKgogICogV2ViS2l0RWRp
dG9yU3RhdGUgcmVwcmVzZW50cyB0aGUgc3RhdGUgb2YgYSAjV2ViS2l0V2ViVmlldyBlZGl0b3Iu
Ci0gKiBVc2Ugd2Via2l0X3dlYl92aWV3X2dldF9lZGl0b3Jfc3RhdGUoKSB0byBnZXQgV2ViS2l0
RWRpdG9yU3RhdGUgb2YKLSAqIGEgI1dlYktpdFdlYlZpZXcuCisgKiBVc2Ugd2Via2l0X3dlYl92
aWV3X2dldF9lZGl0b3Jfc3RhdGUoKSB0byBnZXQgdGhlIFdlYktpdEVkaXRvclN0YXRlCisgKiBv
ZiBhICNXZWJLaXRXZWJWaWV3LgogICoKICAqIFNpbmNlOiAyLjEwCiAgKi8KQEAgLTQ4LDYgKzQ4
LDExIEBAIGVudW0gewogCiBzdHJ1Y3QgX1dlYktpdEVkaXRvclN0YXRlUHJpdmF0ZSB7CiAgICAg
dW5zaWduZWQgdHlwaW5nQXR0cmlidXRlczsKKyAgICB1bnNpZ25lZCBpc0N1dEF2YWlsYWJsZSA6
IDE7CisgICAgdW5zaWduZWQgaXNDb3B5QXZhaWxhYmxlIDogMTsKKyAgICB1bnNpZ25lZCBpc1Bh
c3RlQXZhaWxhYmxlIDogMTsKKyAgICB1bnNpZ25lZCBpc1VuZG9BdmFpbGFibGUgOiAxOworICAg
IHVuc2lnbmVkIGlzUmVkb0F2YWlsYWJsZSA6IDE7CiB9OwogCiBXRUJLSVRfREVGSU5FX1RZUEUo
V2ViS2l0RWRpdG9yU3RhdGUsIHdlYmtpdF9lZGl0b3Jfc3RhdGUsIEdfVFlQRV9PQkpFQ1QpCkBA
IC0xMTEsNyArMTE2LDYgQEAgdm9pZCB3ZWJraXRFZGl0b3JTdGF0ZUNoYW5nZWQoV2ViS2l0RWRp
dG9yU3RhdGUqIGVkaXRvclN0YXRlLCBjb25zdCBFZGl0b3JTdGF0ZSYKICAgICAgICAgcmV0dXJu
OwogCiAgICAgdW5zaWduZWQgdHlwaW5nQXR0cmlidXRlcyA9IFdFQktJVF9FRElUT1JfVFlQSU5H
X0FUVFJJQlVURV9OT05FOwotI2lmIFBMQVRGT1JNKEdUSykKICAgICBjb25zdCBhdXRvJiBwb3N0
TGF5b3V0RGF0YSA9IG5ld1N0YXRlLnBvc3RMYXlvdXREYXRhKCk7CiAgICAgaWYgKHBvc3RMYXlv
dXREYXRhLnR5cGluZ0F0dHJpYnV0ZXMgJiBBdHRyaWJ1dGVCb2xkKQogICAgICAgICB0eXBpbmdB
dHRyaWJ1dGVzIHw9IFdFQktJVF9FRElUT1JfVFlQSU5HX0FUVFJJQlVURV9CT0xEOwpAQCAtMTIx
LDggKzEyNSwxNCBAQCB2b2lkIHdlYmtpdEVkaXRvclN0YXRlQ2hhbmdlZChXZWJLaXRFZGl0b3JT
dGF0ZSogZWRpdG9yU3RhdGUsIGNvbnN0IEVkaXRvclN0YXRlJgogICAgICAgICB0eXBpbmdBdHRy
aWJ1dGVzIHw9IFdFQktJVF9FRElUT1JfVFlQSU5HX0FUVFJJQlVURV9VTkRFUkxJTkU7CiAgICAg
aWYgKHBvc3RMYXlvdXREYXRhLnR5cGluZ0F0dHJpYnV0ZXMgJiBBdHRyaWJ1dGVTdHJpa2VUaHJv
dWdoKQogICAgICAgICB0eXBpbmdBdHRyaWJ1dGVzIHw9IFdFQktJVF9FRElUT1JfVFlQSU5HX0FU
VFJJQlVURV9TVFJJS0VUSFJPVUdIOwotI2VuZGlmCisKICAgICB3ZWJraXRFZGl0b3JTdGF0ZVNl
dFR5cGluZ0F0dHJpYnV0ZXMoZWRpdG9yU3RhdGUsIHR5cGluZ0F0dHJpYnV0ZXMpOworCisgICAg
ZWRpdG9yU3RhdGUtPnByaXYtPmlzQ3V0QXZhaWxhYmxlID0gcG9zdExheW91dERhdGEuY2FuQ3V0
OworICAgIGVkaXRvclN0YXRlLT5wcml2LT5pc0NvcHlBdmFpbGFibGUgPSBwb3N0TGF5b3V0RGF0
YS5jYW5Db3B5OworICAgIGVkaXRvclN0YXRlLT5wcml2LT5pc1Bhc3RlQXZhaWxhYmxlID0gcG9z
dExheW91dERhdGEuY2FuUGFzdGU7CisgICAgZWRpdG9yU3RhdGUtPnByaXYtPmlzVW5kb0F2YWls
YWJsZSA9IHBvc3RMYXlvdXREYXRhLmNhblVuZG87CisgICAgZWRpdG9yU3RhdGUtPnByaXYtPmlz
UmVkb0F2YWlsYWJsZSA9IHBvc3RMYXlvdXREYXRhLmNhblJlZG87CiB9CiAKIC8qKgpAQCAtMTQ2
LDMgKzE1Niw4NyBAQCBndWludCB3ZWJraXRfZWRpdG9yX3N0YXRlX2dldF90eXBpbmdfYXR0cmli
dXRlcyhXZWJLaXRFZGl0b3JTdGF0ZSogZWRpdG9yU3RhdGUpCiAgICAgcmV0dXJuIGVkaXRvclN0
YXRlLT5wcml2LT50eXBpbmdBdHRyaWJ1dGVzOwogfQogCisvKioKKyAqIHdlYmtpdF9lZGl0b3Jf
c3RhdGVfaXNfY3V0X2F2YWlsYWJsZToKKyAqIEBlZGl0b3Jfc3RhdGU6IGEgI1dlYktpdEVkaXRv
clN0YXRlCisgKgorICogR2V0cyB3aGV0aGVyIGEgY3V0IGNvbW1hbmQgY2FuIGJlIGlzc3VlZC4K
KyAqCisgKiBSZXR1cm5zOiAlVFJVRSBpZiBjdXQgaXMgY3VycmVudGx5IGF2YWlsYWJsZQorICoK
KyAqIFNpbmNlOiAyLjIwCisgKi8KK2dib29sZWFuIHdlYmtpdF9lZGl0b3Jfc3RhdGVfaXNfY3V0
X2F2YWlsYWJsZShXZWJLaXRFZGl0b3JTdGF0ZSogZWRpdG9yU3RhdGUpCit7CisgICAgZ19yZXR1
cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX0VESVRPUl9TVEFURShlZGl0b3JTdGF0ZSksIEZBTFNF
KTsKKworICAgIHJldHVybiBlZGl0b3JTdGF0ZS0+cHJpdi0+aXNDdXRBdmFpbGFibGU7Cit9CisK
Ky8qKgorICogd2Via2l0X2VkaXRvcl9zdGF0ZV9pc19jb3B5X2F2YWlsYWJsZToKKyAqIEBlZGl0
b3Jfc3RhdGU6IGEgI1dlYktpdEVkaXRvclN0YXRlCisgKgorICogR2V0cyB3aGV0aGVyIGEgY29w
eSBjb21tYW5kIGNhbiBiZSBpc3N1ZWQuCisgKgorICogUmV0dXJuczogJVRSVUUgaWYgY29weSBp
cyBjdXJyZW50bHkgYXZhaWxhYmxlCisgKgorICogU2luY2U6IDIuMjAKKyAqLworZ2Jvb2xlYW4g
d2Via2l0X2VkaXRvcl9zdGF0ZV9pc19jb3B5X2F2YWlsYWJsZShXZWJLaXRFZGl0b3JTdGF0ZSog
ZWRpdG9yU3RhdGUpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX0VESVRP
Ul9TVEFURShlZGl0b3JTdGF0ZSksIEZBTFNFKTsKKworICAgIHJldHVybiBlZGl0b3JTdGF0ZS0+
cHJpdi0+aXNDb3B5QXZhaWxhYmxlOworfQorCisvKioKKyAqIHdlYmtpdF9lZGl0b3Jfc3RhdGVf
aXNfcGFzdGVfYXZhaWxhYmxlOgorICogQGVkaXRvcl9zdGF0ZTogYSAjV2ViS2l0RWRpdG9yU3Rh
dGUKKyAqCisgKiBHZXRzIHdoZXRoZXIgYSBwYXN0ZSBjb21tYW5kIGNhbiBiZSBpc3N1ZWQuCisg
KgorICogUmV0dXJuczogJVRSVUUgaWYgcGFzdGUgaXMgY3VycmVudGx5IGF2YWlsYWJsZQorICoK
KyAqIFNpbmNlOiAyLjIwCisgKi8KK2dib29sZWFuIHdlYmtpdF9lZGl0b3Jfc3RhdGVfaXNfcGFz
dGVfYXZhaWxhYmxlKFdlYktpdEVkaXRvclN0YXRlKiBlZGl0b3JTdGF0ZSkKK3sKKyAgICBnX3Jl
dHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfRURJVE9SX1NUQVRFKGVkaXRvclN0YXRlKSwgRkFM
U0UpOworCisgICAgcmV0dXJuIGVkaXRvclN0YXRlLT5wcml2LT5pc1Bhc3RlQXZhaWxhYmxlOwor
fQorCisvKioKKyAqIHdlYmtpdF9lZGl0b3Jfc3RhdGVfaXNfdW5kb19hdmFpbGFibGU6CisgKiBA
ZWRpdG9yX3N0YXRlOiBhICNXZWJLaXRFZGl0b3JTdGF0ZQorICoKKyAqIEdldHMgd2hldGhlciBh
biB1bmRvIGNvbW1hbmQgY2FuIGJlIGlzc3VlZC4KKyAqCisgKiBSZXR1cm5zOiAlVFJVRSBpZiB1
bmRvIGlzIGN1cnJlbnRseSBhdmFpbGFibGUKKyAqCisgKiBTaW5jZTogMi4yMAorICovCitnYm9v
bGVhbiB3ZWJraXRfZWRpdG9yX3N0YXRlX2lzX3VuZG9fYXZhaWxhYmxlKFdlYktpdEVkaXRvclN0
YXRlKiBlZGl0b3JTdGF0ZSkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNf
RURJVE9SX1NUQVRFKGVkaXRvclN0YXRlKSwgRkFMU0UpOworCisgICAgcmV0dXJuIGVkaXRvclN0
YXRlLT5wcml2LT5pc1VuZG9BdmFpbGFibGU7Cit9CisKKy8qKgorICogd2Via2l0X2VkaXRvcl9z
dGF0ZV9pc19yZWRvX2F2YWlsYWJsZToKKyAqIEBlZGl0b3Jfc3RhdGU6IGEgI1dlYktpdEVkaXRv
clN0YXRlCisgKgorICogR2V0cyB3aGV0aGVyIGEgcmVkbyBjb21tYW5kIGNhbiBiZSBpc3N1ZWQu
CisgKgorICogUmV0dXJuczogJVRSVUUgaWYgcmVkbyBpcyBjdXJyZW50bHkgYXZhaWxhYmxlCisg
KgorICogU2luY2U6IDIuMjAKKyAqLworZ2Jvb2xlYW4gd2Via2l0X2VkaXRvcl9zdGF0ZV9pc19y
ZWRvX2F2YWlsYWJsZShXZWJLaXRFZGl0b3JTdGF0ZSogZWRpdG9yU3RhdGUpCit7CisgICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX0VESVRPUl9TVEFURShlZGl0b3JTdGF0ZSksIEZB
TFNFKTsKKworICAgIHJldHVybiBlZGl0b3JTdGF0ZS0+cHJpdi0+aXNSZWRvQXZhaWxhYmxlOwor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vi
Vmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3
LmNwcAppbmRleCAwYzE3OTgzYmVkNTkyNWJiNzY4ODY5OTE1NTA3MzNmNWY3ZTdjNDBkLi4zMDhk
YzNjZWQ0MzIyMDhiZjRlZWY2ZjQzNWU4MzE1ZDYzY2YzZTRkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcApAQCAtMzQsNiArMzQs
NyBAQAogI2luY2x1ZGUgIldlYktpdENvbnRleHRNZW51SXRlbVByaXZhdGUuaCIKICNpbmNsdWRl
ICJXZWJLaXRDb250ZXh0TWVudVByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXREb3dubG9hZFBy
aXZhdGUuaCIKKyNpbmNsdWRlICJXZWJLaXRFZGl0aW5nQ29tbWFuZHMuaCIKICNpbmNsdWRlICJX
ZWJLaXRFZGl0b3JTdGF0ZVByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRFbnVtVHlwZXMuaCIK
ICNpbmNsdWRlICJXZWJLaXRFcnJvci5oIgpAQCAtMzA1Niw5ICszMDU3LDIzIEBAIHZvaWQgd2Vi
a2l0X3dlYl92aWV3X2Nhbl9leGVjdXRlX2VkaXRpbmdfY29tbWFuZChXZWJLaXRXZWJWaWV3KiB3
ZWJWaWV3LCBjb25zdCBjCiAgICAgZ19yZXR1cm5faWZfZmFpbChjb21tYW5kKTsKIAogICAgIEdU
YXNrKiB0YXNrID0gZ190YXNrX25ldyh3ZWJWaWV3LCBjYW5jZWxsYWJsZSwgY2FsbGJhY2ssIHVz
ZXJEYXRhKTsKLSAgICBnZXRQYWdlKHdlYlZpZXcpLnZhbGlkYXRlQ29tbWFuZChTdHJpbmc6OmZy
b21VVEY4KGNvbW1hbmQpLCBbdGFza10oY29uc3QgU3RyaW5nJiwgYm9vbCBpc0VuYWJsZWQsIGlu
dDMyX3QsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcikgewotICAgICAgICBnX3Rhc2tfcmV0
dXJuX2Jvb2xlYW4oYWRvcHRHUmVmKHRhc2spLmdldCgpLCBpc0VuYWJsZWQpOyAgICAgICAgCi0g
ICAgfSk7CisgICAgV2ViS2l0RWRpdG9yU3RhdGUqIHN0YXRlID0gd2Via2l0X3dlYl92aWV3X2dl
dF9lZGl0b3Jfc3RhdGUod2ViVmlldyk7CisKKyAgICBpZiAoIXN0cmNtcChjb21tYW5kLCBXRUJL
SVRfRURJVElOR19DT01NQU5EX0NVVCkpIHsKKyAgICAgICAgZ190YXNrX3JldHVybl9ib29sZWFu
KGFkb3B0R1JlZih0YXNrKS5nZXQoKSwgd2Via2l0X2VkaXRvcl9zdGF0ZV9pc19jdXRfYXZhaWxh
YmxlKHN0YXRlKSk7CisgICAgfSBlbHNlIGlmICghc3RyY21wKGNvbW1hbmQsIFdFQktJVF9FRElU
SU5HX0NPTU1BTkRfQ09QWSkpIHsKKyAgICAgICAgZ190YXNrX3JldHVybl9ib29sZWFuKGFkb3B0
R1JlZih0YXNrKS5nZXQoKSwgd2Via2l0X2VkaXRvcl9zdGF0ZV9pc19jb3B5X2F2YWlsYWJsZShz
dGF0ZSkpOworICAgIH0gZWxzZSBpZiAoIXN0cmNtcChjb21tYW5kLCBXRUJLSVRfRURJVElOR19D
T01NQU5EX1BBU1RFKSkgeworICAgICAgICBnX3Rhc2tfcmV0dXJuX2Jvb2xlYW4oYWRvcHRHUmVm
KHRhc2spLmdldCgpLCB3ZWJraXRfZWRpdG9yX3N0YXRlX2lzX3Bhc3RlX2F2YWlsYWJsZShzdGF0
ZSkpOworICAgIH0gZWxzZSBpZiAoIXN0cmNtcChjb21tYW5kLCBXRUJLSVRfRURJVElOR19DT01N
QU5EX1VORE8pKSB7CisgICAgICAgIGdfdGFza19yZXR1cm5fYm9vbGVhbihhZG9wdEdSZWYodGFz
aykuZ2V0KCksIHdlYmtpdF9lZGl0b3Jfc3RhdGVfaXNfdW5kb19hdmFpbGFibGUoc3RhdGUpKTsK
KyAgICB9IGVsc2UgaWYgKCFzdHJjbXAoY29tbWFuZCwgV0VCS0lUX0VESVRJTkdfQ09NTUFORF9S
RURPKSkgeworICAgICAgICBnX3Rhc2tfcmV0dXJuX2Jvb2xlYW4oYWRvcHRHUmVmKHRhc2spLmdl
dCgpLCB3ZWJraXRfZWRpdG9yX3N0YXRlX2lzX3JlZG9fYXZhaWxhYmxlKHN0YXRlKSk7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgZ2V0UGFnZSh3ZWJWaWV3KS52YWxpZGF0ZUNvbW1hbmQoU3RyaW5n
Ojpmcm9tVVRGOChjb21tYW5kKSwgW3Rhc2tdKGNvbnN0IFN0cmluZyYsIGJvb2wgaXNFbmFibGVk
LCBpbnQzMl90LCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IpIHsKKyAgICAgICAgICAgIGdf
dGFza19yZXR1cm5fYm9vbGVhbihhZG9wdEdSZWYodGFzaykuZ2V0KCksIGlzRW5hYmxlZCk7ICAg
ICAgICAKKyAgICAgICAgfSk7CisgICAgfQogfQogCiAvKioKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RWRpdG9yU3RhdGUuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RWRpdG9yU3RhdGUuaAppbmRleCA4YTQ3NzU1ZjBj
MWJkZDBhZDcxZDEyYTkzZGJhYWVhZWRiMzgwYjNjLi43MDE0MDUzZTIxNmE1YjQ4MDI5ODQ0MzZh
YWUwYTE3N2Y3MzQwNzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdEVkaXRvclN0YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRFZGl0b3JTdGF0ZS5oCkBAIC04Miw2ICs4MiwyMSBAQCB3ZWJraXRfZWRpdG9y
X3N0YXRlX2dldF90eXBlICAgICAgICAgICAgICAodm9pZCk7CiBXRUJLSVRfQVBJIGd1aW50CiB3
ZWJraXRfZWRpdG9yX3N0YXRlX2dldF90eXBpbmdfYXR0cmlidXRlcyAoV2ViS2l0RWRpdG9yU3Rh
dGUgKmVkaXRvcl9zdGF0ZSk7CiAKK1dFQktJVF9BUEkgZ2Jvb2xlYW4KK3dlYmtpdF9lZGl0b3Jf
c3RhdGVfaXNfY3V0X2F2YWlsYWJsZSAgICAgIChXZWJLaXRFZGl0b3JTdGF0ZSAqZWRpdG9yX3N0
YXRlKTsKKworV0VCS0lUX0FQSSBnYm9vbGVhbgord2Via2l0X2VkaXRvcl9zdGF0ZV9pc19jb3B5
X2F2YWlsYWJsZSAgICAgKFdlYktpdEVkaXRvclN0YXRlICplZGl0b3Jfc3RhdGUpOworCitXRUJL
SVRfQVBJIGdib29sZWFuCit3ZWJraXRfZWRpdG9yX3N0YXRlX2lzX3Bhc3RlX2F2YWlsYWJsZSAg
ICAoV2ViS2l0RWRpdG9yU3RhdGUgKmVkaXRvcl9zdGF0ZSk7CisKK1dFQktJVF9BUEkgZ2Jvb2xl
YW4KK3dlYmtpdF9lZGl0b3Jfc3RhdGVfaXNfdW5kb19hdmFpbGFibGUgICAgIChXZWJLaXRFZGl0
b3JTdGF0ZSAqZWRpdG9yX3N0YXRlKTsKKworV0VCS0lUX0FQSSBnYm9vbGVhbgord2Via2l0X2Vk
aXRvcl9zdGF0ZV9pc19yZWRvX2F2YWlsYWJsZSAgICAgKFdlYktpdEVkaXRvclN0YXRlICplZGl0
b3Jfc3RhdGUpOworCiBHX0VORF9ERUNMUwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2Vj
dGlvbnMudHh0CmluZGV4IDVkYjc4Yzk3OWY4NDRlN2I5ODkxYTA0YTA5NDQ2NzQ1ZDM5MDI4MWQu
LjRiMzk1OGRlZTQ5ZDkyOGUxZjEzMmE1YWMyODMxZmI0Yzk2M2RhODUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9u
cy50eHQKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJn
dGstNC4wLXNlY3Rpb25zLnR4dApAQCAtODIyLDYgKzgyMiwxMSBAQCB3ZWJraXRfaGl0X3Rlc3Rf
cmVzdWx0X2dldF90eXBlCiBXZWJLaXRFZGl0b3JTdGF0ZQogV2ViS2l0RWRpdG9yVHlwaW5nQXR0
cmlidXRlcwogd2Via2l0X2VkaXRvcl9zdGF0ZV9nZXRfdHlwaW5nX2F0dHJpYnV0ZXMKK3dlYmtp
dF9lZGl0b3Jfc3RhdGVfaXNfY3V0X2F2YWlsYWJsZQord2Via2l0X2VkaXRvcl9zdGF0ZV9pc19j
b3B5X2F2YWlsYWJsZQord2Via2l0X2VkaXRvcl9zdGF0ZV9pc19wYXN0ZV9hdmFpbGFibGUKK3dl
YmtpdF9lZGl0b3Jfc3RhdGVfaXNfdW5kb19hdmFpbGFibGUKK3dlYmtpdF9lZGl0b3Jfc3RhdGVf
aXNfcmVkb19hdmFpbGFibGUKIAogPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CiBXZWJLaXRFZGl0b3JT
dGF0ZUNsYXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dl
YktpdEVkaXRvclN0YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktp
dEVkaXRvclN0YXRlLmgKaW5kZXggOGNmNjU5NWMwMGFlMzk4MjMyNGY0MTdhNGM5MjFlZjFhYjQy
ZjIwZi4uZjllN2M3ZGVhYjQwZTY2YjNlNzY5Yjc4MjBmMmRiNGYwOWM1NGRiZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRFZGl0b3JTdGF0ZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0RWRpdG9yU3RhdGUuaApA
QCAtODIsNiArODIsMjEgQEAgd2Via2l0X2VkaXRvcl9zdGF0ZV9nZXRfdHlwZSAgICAgICAgICAg
ICAgKHZvaWQpOwogV0VCS0lUX0FQSSBndWludAogd2Via2l0X2VkaXRvcl9zdGF0ZV9nZXRfdHlw
aW5nX2F0dHJpYnV0ZXMgKFdlYktpdEVkaXRvclN0YXRlICplZGl0b3Jfc3RhdGUpOwogCitXRUJL
SVRfQVBJIGdib29sZWFuCit3ZWJraXRfZWRpdG9yX3N0YXRlX2lzX2N1dF9hdmFpbGFibGUgICAg
ICAoV2ViS2l0RWRpdG9yU3RhdGUgKmVkaXRvcl9zdGF0ZSk7CisKK1dFQktJVF9BUEkgZ2Jvb2xl
YW4KK3dlYmtpdF9lZGl0b3Jfc3RhdGVfaXNfY29weV9hdmFpbGFibGUgICAgIChXZWJLaXRFZGl0
b3JTdGF0ZSAqZWRpdG9yX3N0YXRlKTsKKworV0VCS0lUX0FQSSBnYm9vbGVhbgord2Via2l0X2Vk
aXRvcl9zdGF0ZV9pc19wYXN0ZV9hdmFpbGFibGUgICAgKFdlYktpdEVkaXRvclN0YXRlICplZGl0
b3Jfc3RhdGUpOworCitXRUJLSVRfQVBJIGdib29sZWFuCit3ZWJraXRfZWRpdG9yX3N0YXRlX2lz
X3VuZG9fYXZhaWxhYmxlICAgICAoV2ViS2l0RWRpdG9yU3RhdGUgKmVkaXRvcl9zdGF0ZSk7CisK
K1dFQktJVF9BUEkgZ2Jvb2xlYW4KK3dlYmtpdF9lZGl0b3Jfc3RhdGVfaXNfcmVkb19hdmFpbGFi
bGUgICAgIChXZWJLaXRFZGl0b3JTdGF0ZSAqZWRpdG9yX3N0YXRlKTsKKwogR19FTkRfREVDTFMK
IAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CmluZGV4IDMyMWVhNGY4NzhlMzhiYzJmZWNjOGNiYWNiNTEwY2E4MGUzNTc2ZTguLjMzMDkwMDE5
ZjZiYjI2ZWI2NDk4OGFiNDVjYTE4OWMzNjI2NjE4ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC04NDYsMjAgKzg0NiwyNyBAQCBFZGl0b3JT
dGF0ZSBXZWJQYWdlOjplZGl0b3JTdGF0ZShJbmNsdWRlUG9zdExheW91dERhdGFIaW50IHNob3Vs
ZEluY2x1ZGVQb3N0TGF5bwogICAgIH0KIAogICAgIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNl
bGVjdGlvbiA9IGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOworICAgIGNvbnN0IEVkaXRv
ciYgZWRpdG9yID0gZnJhbWUuZWRpdG9yKCk7CiAKICAgICByZXN1bHQuc2VsZWN0aW9uSXNOb25l
ID0gc2VsZWN0aW9uLmlzTm9uZSgpOwogICAgIHJlc3VsdC5zZWxlY3Rpb25Jc1JhbmdlID0gc2Vs
ZWN0aW9uLmlzUmFuZ2UoKTsKICAgICByZXN1bHQuaXNDb250ZW50RWRpdGFibGUgPSBzZWxlY3Rp
b24uaXNDb250ZW50RWRpdGFibGUoKTsKICAgICByZXN1bHQuaXNDb250ZW50UmljaGx5RWRpdGFi
bGUgPSBzZWxlY3Rpb24uaXNDb250ZW50UmljaGx5RWRpdGFibGUoKTsKICAgICByZXN1bHQuaXNJ
blBhc3N3b3JkRmllbGQgPSBzZWxlY3Rpb24uaXNJblBhc3N3b3JkRmllbGQoKTsKLSAgICByZXN1
bHQuaGFzQ29tcG9zaXRpb24gPSBmcmFtZS5lZGl0b3IoKS5oYXNDb21wb3NpdGlvbigpOwotICAg
IHJlc3VsdC5zaG91bGRJZ25vcmVTZWxlY3Rpb25DaGFuZ2VzID0gZnJhbWUuZWRpdG9yKCkuaWdu
b3JlU2VsZWN0aW9uQ2hhbmdlcygpOworICAgIHJlc3VsdC5oYXNDb21wb3NpdGlvbiA9IGVkaXRv
ci5oYXNDb21wb3NpdGlvbigpOworICAgIHJlc3VsdC5zaG91bGRJZ25vcmVTZWxlY3Rpb25DaGFu
Z2VzID0gZWRpdG9yLmlnbm9yZVNlbGVjdGlvbkNoYW5nZXMoKTsKIAotI2lmIFBMQVRGT1JNKENP
Q09BKQogICAgIGJvb2wgY2FuSW5jbHVkZVBvc3RMYXlvdXREYXRhID0gZnJhbWUudmlldygpICYm
ICFmcmFtZS52aWV3KCktPm5lZWRzTGF5b3V0KCk7Ci0gICAgaWYgKHNob3VsZEluY2x1ZGVQb3N0
TGF5b3V0RGF0YSA9PSBJbmNsdWRlUG9zdExheW91dERhdGFIaW50OjpZZXMgJiYgY2FuSW5jbHVk
ZVBvc3RMYXlvdXREYXRhICYmIHJlc3VsdC5pc0NvbnRlbnRFZGl0YWJsZSkgeworICAgIGlmIChz
aG91bGRJbmNsdWRlUG9zdExheW91dERhdGEgPT0gSW5jbHVkZVBvc3RMYXlvdXREYXRhSGludDo6
WWVzICYmIGNhbkluY2x1ZGVQb3N0TGF5b3V0RGF0YSkgewogICAgICAgICBhdXRvJiBwb3N0TGF5
b3V0RGF0YSA9IHJlc3VsdC5wb3N0TGF5b3V0RGF0YSgpOwotICAgICAgICBpZiAoIXNlbGVjdGlv
bi5pc05vbmUoKSkgeworICAgICAgICBwb3N0TGF5b3V0RGF0YS5jYW5DdXQgPSBlZGl0b3IuY2Fu
Q3V0KCk7CisgICAgICAgIHBvc3RMYXlvdXREYXRhLmNhbkNvcHkgPSBlZGl0b3IuY2FuQ29weSgp
OworICAgICAgICBwb3N0TGF5b3V0RGF0YS5jYW5QYXN0ZSA9IGVkaXRvci5jYW5QYXN0ZSgpOwor
ICAgICAgICBwb3N0TGF5b3V0RGF0YS5jYW5VbmRvID0gZWRpdG9yLmNhblVuZG8oKTsKKyAgICAg
ICAgcG9zdExheW91dERhdGEuY2FuUmVkbyA9IGVkaXRvci5jYW5SZWRvKCk7CisKKyNpZiBQTEFU
Rk9STShDT0NPQSkKKyAgICAgICAgaWYgKHJlc3VsdC5pc0NvbnRlbnRFZGl0YWJsZSAmJiAhc2Vs
ZWN0aW9uLmlzTm9uZSgpKSB7CiAgICAgICAgICAgICBpZiAoYXV0byBlZGl0aW5nU3R5bGUgPSBF
ZGl0aW5nU3R5bGU6OnN0eWxlQXRTZWxlY3Rpb25TdGFydChzZWxlY3Rpb24pKSB7CiAgICAgICAg
ICAgICAgICAgaWYgKGVkaXRpbmdTdHlsZS0+aGFzU3R5bGUoQ1NTUHJvcGVydHlGb250V2VpZ2h0
LCAiYm9sZCIpKQogICAgICAgICAgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS50eXBpbmdBdHRy
aWJ1dGVzIHw9IEF0dHJpYnV0ZUJvbGQ7CkBAIC05MTEsOCArOTE4LDggQEAgRWRpdG9yU3RhdGUg
V2ViUGFnZTo6ZWRpdG9yU3RhdGUoSW5jbHVkZVBvc3RMYXlvdXREYXRhSGludCBzaG91bGRJbmNs
dWRlUG9zdExheW8KICAgICAgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICB9CiAjZW5kaWYKKyAgICB9CiAKICAgICBwbGF0
Zm9ybUVkaXRvclN0YXRlKGZyYW1lLCByZXN1bHQsIHNob3VsZEluY2x1ZGVQb3N0TGF5b3V0RGF0
YSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9X
ZWJQYWdlTWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBh
Z2VNYWMubW0KaW5kZXggMzZhZjVhOTZmODQxZDU3MDc3OTYxYjI1OWFiOTQyMjVhM2Q2ZWFmMC4u
MzYyMWFkZWJjYjBjZDYxOTMzM2FhNmUxY2UzYzU2ZTk3YzcwMGY2MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KQEAgLTEwODAs
NyArMTA4MCw2IEBAIHZvaWQgV2ViUGFnZTo6cGVyZm9ybUltbWVkaWF0ZUFjdGlvbkhpdFRlc3RB
dExvY2F0aW9uKFdlYkNvcmU6OkZsb2F0UG9pbnQgbG9jYXRpCiAgICAgICAgICAgICAgICAgaW1t
ZWRpYXRlQWN0aW9uUmVzdWx0Lmxvb2t1cFRleHQgPSBzZWxlY3RlZFRleHQ7CiAgICAgICAgICAg
ICAgICAgaW1tZWRpYXRlQWN0aW9uUmVzdWx0LmlzVGV4dE5vZGUgPSB0cnVlOwogICAgICAgICAg
ICAgICAgIGltbWVkaWF0ZUFjdGlvblJlc3VsdC5pc1NlbGVjdGVkID0gdHJ1ZTsKLSAgICAgICAg
ICAgICAgICBpbW1lZGlhdGVBY3Rpb25SZXN1bHQuYWxsb3dzQ29weSA9IHRydWU7CiAKICAgICAg
ICAgICAgICAgICBpbW1lZGlhdGVBY3Rpb25SZXN1bHQuZGljdGlvbmFyeVBvcHVwSW5mbyA9IGRp
Y3Rpb25hcnlQb3B1cEluZm9Gb3JTZWxlY3Rpb25JblBERlBsdWdpbihzZWxlY3Rpb24sICpwZGZQ
dWdpbiwgJm9wdGlvbnMsIFRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uOjpGYWRl
SW4pOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMv
Q2hhbmdlTG9nCmluZGV4IDQxYjM2MWIwZjVmOTFlYjJjNDBlYmM5ZjBjNjJhYWVjZWM3ZjM0Y2Yu
LjBhNzAyY2MxZTkzNzMzYjhmYjQ3ZmZmZWIwYzQyYTM3YmE5ZTk5YmIgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNCBAQAorMjAx
Ny0xMC0wMSAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CisKKyAg
ICAgICAgW1dQRV1bR1RLXSBFeHBvc2UgYXZhaWxhYmlsaXR5IG9mIGNlcnRhaW4gZWRpdGluZyBj
b21tYW5kcyBpbiBXZWJLaXRFZGl0b3JTdGF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY4MjE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGVzdCBpdC4KKworICAgICAgICBUbyBlbnN1cmUgcG9zdCBs
YXlvdXQgZGF0YSBpcyBmbHVzaGVkIHRvIHRoZSBVSSBwcm9jZXNzLCBhZGQgdGhlIGhlbHBlciBm
dW5jdGlvbgorICAgICAgICBXZWJWaWV3VGVzdDo6dHJpZ2dlckRyYXdBbmRXYWl0VW50aWxGaW5p
c2hlZCBhbmQgdXNlIGl0IHRocm91Z2hvdXQgVGVzdFdlYlZpZXdFZGl0b3IuCisKKyAgICAgICAg
VGhpcyBhbHNvIGFkZHMgV2ViVmlld1Rlc3Q6OndhaXRVbnRpbFRleHRJc0F2YWlsYWJsZUluQ2xp
cGJvYXJkIGFzIGEgZHJpdmUtYnkgY2xlYW51cC4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R3RrL1Rlc3RXZWJWaWV3RWRpdG9yLmNwcDoKKyAgICAgICAgKHRlc3RXZWJW
aWV3RWRpdG9yQ3V0Q29weVBhc3RlTm9uRWRpdGFibGUpOgorICAgICAgICAodGVzdFdlYlZpZXdF
ZGl0b3JDdXRDb3B5UGFzdGVFZGl0YWJsZSk6CisgICAgICAgICh0ZXN0V2ViVmlld0VkaXRvclNl
bGVjdEFsbE5vbkVkaXRhYmxlKToKKyAgICAgICAgKHRlc3RXZWJWaWV3RWRpdG9yU2VsZWN0QWxs
RWRpdGFibGUpOgorICAgICAgICAobG9hZENvbnRlbnRzQW5kVHJ5VG9DdXRTZWxlY3Rpb24pOgor
ICAgICAgICAodGVzdFdlYlZpZXdFZGl0b3JOb25FZGl0YWJsZSk6CisgICAgICAgICh0ZXN0V2Vi
Vmlld0VkaXRvckVkaXRhYmxlKToKKyAgICAgICAgKHRlc3RXZWJWaWV3RWRpdG9yRWRpdG9yU3Rh
dGVUeXBpbmdBdHRyaWJ1dGVzKToKKyAgICAgICAgKHRlc3RXZWJWaWV3RWRpdG9ySW5zZXJ0SW1h
Z2UpOgorICAgICAgICAodGVzdFdlYlZpZXdFZGl0b3JDcmVhdGVMaW5rKToKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5oOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL2d0ay9XZWJWaWV3VGVzdEd0ay5jcHA6CisgICAg
ICAgICh3ZWJWaWV3RHJhd0NhbGxiYWNrKToKKyAgICAgICAgKFdlYlZpZXdUZXN0Ojp0cmlnZ2Vy
RHJhd0FuZFdhaXRVbnRpbEZpbmlzaGVkKToKKyAgICAgICAgKFdlYlZpZXdUZXN0Ojp3YWl0VW50
aWxUZXh0SXNBdmFpbGFibGVJbkNsaXBib2FyZCk6CisKIDIwMTctMDktMzAgIENhcmxvcyBHYXJj
aWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIFVw
Z3JhZGUgd2Via2l0Z3RrLXRlc3QtZm9udHMgdG8gdmVyc2lvbiAwLjAuNy4KZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL1Rlc3RXZWJWaWV3RWRpdG9yLmNw
cCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL1Rlc3RXZWJWaWV3RWRpdG9y
LmNwcAppbmRleCA3NmZiNmNlYTBlMmQ4ODYzNTg3ZjJmMjA2Y2JiOWMwODk1NzhjNjc1Li5lZTYz
NDM1NzcyN2VmNDFlYTQzMjJmYjcwODUyZjljOGE3ZjkzMWQ3IDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9UZXN0V2ViVmlld0VkaXRvci5jcHAKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvVGVzdFdlYlZpZXdFZGl0b3IuY3Bw
CkBAIC0yNSwxNSArMjUsMTIgQEAgY2xhc3MgRWRpdG9yVGVzdDogcHVibGljIFdlYlZpZXdUZXN0
IHsKIHB1YmxpYzoKICAgICBNQUtFX0dMSUJfVEVTVF9GSVhUVVJFKEVkaXRvclRlc3QpOwogCi0g
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGtDbGlwYm9hcmRXYWl0VGltZW91dCA9IDUwOwotICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBrQ2xpcGJvYXJkV2FpdE1heFRyaWVzID0gMjsKLQogICAg
IEVkaXRvclRlc3QoKQogICAgICAgICA6IG1fY2xpcGJvYXJkKGd0a19jbGlwYm9hcmRfZ2V0KEdE
S19TRUxFQ1RJT05fQ0xJUEJPQVJEKSkKICAgICAgICAgLCBtX2NhbkV4ZWN1dGVFZGl0aW5nQ29t
bWFuZChmYWxzZSkKLSAgICAgICAgLCBtX3RyaWVzQ291bnQoMCkKICAgICAgICAgLCBtX2VkaXRv
clN0YXRlKG51bGxwdHIpCiAgICAgeworICAgICAgICBzaG93SW5XaW5kb3dBbmRXYWl0VW50aWxN
YXBwZWQoR1RLX1dJTkRPV19UT1BMRVZFTCk7CiAgICAgICAgIGd0a19jbGlwYm9hcmRfY2xlYXIo
bV9jbGlwYm9hcmQpOwogICAgIH0KIApAQCAtNDUsMzMgKzQyLDM4IEBAIHB1YmxpYzoKICAgICAg
ICAgZ19tYWluX2xvb3BfcXVpdCh0ZXN0LT5tX21haW5Mb29wKTsKICAgICB9CiAKKyAgICB2b2lk
IHdhaXRVbnRpbERyYXdBZnRlckxvYWRGaW5pc2hlZCgpCisgICAgeworICAgICAgICB3YWl0VW50
aWxMb2FkRmluaXNoZWQoKTsKKyAgICAgICAgdHJpZ2dlckRyYXdBbmRXYWl0VW50aWxGaW5pc2hl
ZCgpOworICAgIH0KKwogICAgIGJvb2wgY2FuRXhlY3V0ZUVkaXRpbmdDb21tYW5kKGNvbnN0IGNo
YXIqIGNvbW1hbmQpCiAgICAgewogICAgICAgICBtX2NhbkV4ZWN1dGVFZGl0aW5nQ29tbWFuZCA9
IGZhbHNlOwogICAgICAgICB3ZWJraXRfd2ViX3ZpZXdfY2FuX2V4ZWN1dGVfZWRpdGluZ19jb21t
YW5kKG1fd2ViVmlldywgY29tbWFuZCwgMCwgcmVpbnRlcnByZXRfY2FzdDxHQXN5bmNSZWFkeUNh
bGxiYWNrPihjYW5FeGVjdXRlRWRpdGluZ0NvbW1hbmRSZWFkeUNhbGxiYWNrKSwgdGhpcyk7CiAg
ICAgICAgIGdfbWFpbl9sb29wX3J1bihtX21haW5Mb29wKTsKLSAgICAgICAgcmV0dXJuIG1fY2Fu
RXhlY3V0ZUVkaXRpbmdDb21tYW5kOwotICAgIH0KIAotICAgIHN0YXRpYyBnYm9vbGVhbiB3YWl0
Rm9yQ2xpcGJvYXJkVGV4dChFZGl0b3JUZXN0KiB0ZXN0KQotICAgIHsKLSAgICAgICAgdGVzdC0+
bV90cmllc0NvdW50Kys7Ci0gICAgICAgIGlmIChndGtfY2xpcGJvYXJkX3dhaXRfaXNfdGV4dF9h
dmFpbGFibGUodGVzdC0+bV9jbGlwYm9hcmQpIHx8IHRlc3QtPm1fdHJpZXNDb3VudCA+IGtDbGlw
Ym9hcmRXYWl0TWF4VHJpZXMpIHsKLSAgICAgICAgICAgIGdfbWFpbl9sb29wX3F1aXQodGVzdC0+
bV9tYWluTG9vcCk7Ci0gICAgICAgICAgICByZXR1cm4gRkFMU0U7Ci0gICAgICAgIH0KKyAgICAg
ICAgaWYgKCFzdHJjbXAoY29tbWFuZCwgV0VCS0lUX0VESVRJTkdfQ09NTUFORF9DVVQpKQorICAg
ICAgICAgICAgZ19hc3NlcnQobV9jYW5FeGVjdXRlRWRpdGluZ0NvbW1hbmQgPT0gd2Via2l0X2Vk
aXRvcl9zdGF0ZV9pc19jdXRfYXZhaWxhYmxlKGVkaXRvclN0YXRlKCkpKTsKKyAgICAgICAgZWxz
ZSBpZiAoIXN0cmNtcChjb21tYW5kLCBXRUJLSVRfRURJVElOR19DT01NQU5EX0NPUFkpKQorICAg
ICAgICAgICAgZ19hc3NlcnQobV9jYW5FeGVjdXRlRWRpdGluZ0NvbW1hbmQgPT0gd2Via2l0X2Vk
aXRvcl9zdGF0ZV9pc19jb3B5X2F2YWlsYWJsZShlZGl0b3JTdGF0ZSgpKSk7CisgICAgICAgIGVs
c2UgaWYgKCFzdHJjbXAoY29tbWFuZCwgV0VCS0lUX0VESVRJTkdfQ09NTUFORF9QQVNURSkpCisg
ICAgICAgICAgICBnX2Fzc2VydChtX2NhbkV4ZWN1dGVFZGl0aW5nQ29tbWFuZCA9PSB3ZWJraXRf
ZWRpdG9yX3N0YXRlX2lzX3Bhc3RlX2F2YWlsYWJsZShlZGl0b3JTdGF0ZSgpKSk7CisgICAgICAg
IC8vIEZJWE1FOiBGaWd1cmUgb3V0IGhvdyB0byBhZGQgdGVzdHMgZm9yIHVuZG8gYW5kIHJlZG8u
IEl0IHdpbGwgcHJvYmFibHkgcmVxdWlyZSB1c2luZyB1c2VyCisgICAgICAgIC8vIHNjcmlwdHMg
dG8gbWVzc2FnZSB0aGUgVUkgcHJvY2VzcyB3aGVuIHRoZSBjb250ZW50IGhhcyBiZWVuIGFsdGVy
ZWQuCisgICAgICAgIGVsc2UgaWYgKCFzdHJjbXAoY29tbWFuZCwgV0VCS0lUX0VESVRJTkdfQ09N
TUFORF9VTkRPKSkKKyAgICAgICAgICAgIGdfYXNzZXJ0KG1fY2FuRXhlY3V0ZUVkaXRpbmdDb21t
YW5kID09IHdlYmtpdF9lZGl0b3Jfc3RhdGVfaXNfdW5kb19hdmFpbGFibGUoZWRpdG9yU3RhdGUo
KSkpOworICAgICAgICBlbHNlIGlmICghc3RyY21wKGNvbW1hbmQsIFdFQktJVF9FRElUSU5HX0NP
TU1BTkRfUkVETykpCisgICAgICAgICAgICBnX2Fzc2VydChtX2NhbkV4ZWN1dGVFZGl0aW5nQ29t
bWFuZCA9PSB3ZWJraXRfZWRpdG9yX3N0YXRlX2lzX3JlZG9fYXZhaWxhYmxlKGVkaXRvclN0YXRl
KCkpKTsKIAotICAgICAgICByZXR1cm4gVFJVRTsKKyAgICAgICAgcmV0dXJuIG1fY2FuRXhlY3V0
ZUVkaXRpbmdDb21tYW5kOwogICAgIH0KIAogICAgIHZvaWQgY29weUNsaXBib2FyZCgpCiAgICAg
ewogICAgICAgICB3ZWJraXRfd2ViX3ZpZXdfZXhlY3V0ZV9lZGl0aW5nX2NvbW1hbmQobV93ZWJW
aWV3LCBXRUJLSVRfRURJVElOR19DT01NQU5EX0NPUFkpOwotICAgICAgICAvLyBUaGVyZSdzIG5v
IHdheSB0byBrbm93IHdoZW4gdGhlIHNlbGVjdGlvbiBoYXMgYmVlbiBjb3BpZWQgdG8KLSAgICAg
ICAgLy8gdGhlIGNsaXBib2FyZCwgc28gdXNlIGEgdGltZW91dCBzb3VyY2UgdG8gcXVlcnkgdGhl
IGNsaXBib2FyZC4KLSAgICAgICAgbV90cmllc0NvdW50ID0gMDsKLSAgICAgICAgZ190aW1lb3V0
X2FkZChrQ2xpcGJvYXJkV2FpdFRpbWVvdXQsIHJlaW50ZXJwcmV0X2Nhc3Q8R1NvdXJjZUZ1bmM+
KHdhaXRGb3JDbGlwYm9hcmRUZXh0KSwgdGhpcyk7Ci0gICAgICAgIGdfbWFpbl9sb29wX3J1biht
X21haW5Mb29wKTsKKyAgICAgICAgd2FpdFVudGlsVGV4dElzQXZhaWxhYmxlSW5DbGlwYm9hcmQo
KTsKICAgICB9CiAKICAgICBnY2hhciogY3V0U2VsZWN0aW9uKCkKQEAgLTgwLDExICs4Miw3IEBA
IHB1YmxpYzoKICAgICAgICAgZ19hc3NlcnQoY2FuRXhlY3V0ZUVkaXRpbmdDb21tYW5kKFdFQktJ
VF9FRElUSU5HX0NPTU1BTkRfUEFTVEUpKTsKIAogICAgICAgICB3ZWJraXRfd2ViX3ZpZXdfZXhl
Y3V0ZV9lZGl0aW5nX2NvbW1hbmQobV93ZWJWaWV3LCBXRUJLSVRfRURJVElOR19DT01NQU5EX0NV
VCk7Ci0gICAgICAgIC8vIFRoZXJlJ3Mgbm8gd2F5IHRvIGtub3cgd2hlbiB0aGUgc2VsZWN0aW9u
IGhhcyBiZWVuIGN1dCB0bwotICAgICAgICAvLyB0aGUgY2xpcGJvYXJkLCBzbyB1c2UgYSB0aW1l
b3V0IHNvdXJjZSB0byBxdWVyeSB0aGUgY2xpcGJvYXJkLgotICAgICAgICBtX3RyaWVzQ291bnQg
PSAwOwotICAgICAgICBnX3RpbWVvdXRfYWRkKGtDbGlwYm9hcmRXYWl0VGltZW91dCwgcmVpbnRl
cnByZXRfY2FzdDxHU291cmNlRnVuYz4od2FpdEZvckNsaXBib2FyZFRleHQpLCB0aGlzKTsKLSAg
ICAgICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3ApOworICAgICAgICB3YWl0VW50aWxUZXh0
SXNBdmFpbGFibGVJbkNsaXBib2FyZCgpOwogCiAgICAgICAgIHJldHVybiBndGtfY2xpcGJvYXJk
X3dhaXRfZm9yX3RleHQobV9jbGlwYm9hcmQpOwogICAgIH0KQEAgLTExOSw3ICsxMTcsNiBAQCBw
dWJsaWM6CiAKICAgICBHdGtDbGlwYm9hcmQqIG1fY2xpcGJvYXJkOwogICAgIGJvb2wgbV9jYW5F
eGVjdXRlRWRpdGluZ0NvbW1hbmQ7Ci0gICAgc2l6ZV90IG1fdHJpZXNDb3VudDsKICAgICBXZWJL
aXRFZGl0b3JTdGF0ZSogbV9lZGl0b3JTdGF0ZTsKIH07CiAKQEAgLTEzOSw3ICsxMzYsNyBAQCBz
dGF0aWMgdm9pZCB0ZXN0V2ViVmlld0VkaXRvckN1dENvcHlQYXN0ZU5vbkVkaXRhYmxlKEVkaXRv
clRlc3QqIHRlc3QsIGdjb25zdHBvaQogCiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBzZWxlY3RlZFNw
YW5IVE1MKGdfc3RyZHVwX3ByaW50ZihzZWxlY3RlZFNwYW5IVE1MRm9ybWF0LCAiZmFsc2UiKSk7
CiAgICAgdGVzdC0+bG9hZEh0bWwoc2VsZWN0ZWRTcGFuSFRNTC5nZXQoKSwgbnVsbHB0cik7Ci0g
ICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CisgICAgdGVzdC0+d2FpdFVudGlsRHJh
d0FmdGVyTG9hZEZpbmlzaGVkKCk7CiAKICAgICBnX2Fzc2VydCh0ZXN0LT5jYW5FeGVjdXRlRWRp
dGluZ0NvbW1hbmQoV0VCS0lUX0VESVRJTkdfQ09NTUFORF9DT1BZKSk7CiAgICAgLy8gSXQncyBu
b3QgcG9zc2libGUgdG8gY3V0IGFuZCBwYXN0ZSB3aGVuIGNvbnRlbnQgaXMgbm90IGVkaXRhYmxl
CkBAIC0xNjUsNyArMTYyLDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdFZGl0b3JDdXRDb3B5
UGFzdGVFZGl0YWJsZShFZGl0b3JUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGUKIAogICAgIEdVbmlx
dWVQdHI8Y2hhcj4gc2VsZWN0ZWRTcGFuSFRNTChnX3N0cmR1cF9wcmludGYoc2VsZWN0ZWRTcGFu
SFRNTEZvcm1hdCwgImZhbHNlIikpOwogICAgIHRlc3QtPmxvYWRIdG1sKHNlbGVjdGVkU3BhbkhU
TUwuZ2V0KCksIG51bGxwdHIpOwotICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwor
ICAgIHRlc3QtPndhaXRVbnRpbERyYXdBZnRlckxvYWRGaW5pc2hlZCgpOwogCiAgICAgLy8gVGhl
cmUncyBhIHNlbGVjdGlvbi4KICAgICBnX2Fzc2VydCh0ZXN0LT5jYW5FeGVjdXRlRWRpdGluZ0Nv
bW1hbmQoV0VCS0lUX0VESVRJTkdfQ09NTUFORF9DVVQpKTsKQEAgLTE4Myw3ICsxODAsNyBAQCBz
dGF0aWMgdm9pZCB0ZXN0V2ViVmlld0VkaXRvclNlbGVjdEFsbE5vbkVkaXRhYmxlKEVkaXRvclRl
c3QqIHRlc3QsIGdjb25zdHBvaW50ZQogCiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBzZWxlY3RlZFNw
YW5IVE1MKGdfc3RyZHVwX3ByaW50ZihzZWxlY3RlZFNwYW5IVE1MRm9ybWF0LCAiZmFsc2UiKSk7
CiAgICAgdGVzdC0+bG9hZEh0bWwoc2VsZWN0ZWRTcGFuSFRNTC5nZXQoKSwgbnVsbHB0cik7Ci0g
ICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CisgICAgdGVzdC0+d2FpdFVudGlsRHJh
d0FmdGVyTG9hZEZpbmlzaGVkKCk7CiAKICAgICBnX2Fzc2VydCh0ZXN0LT5jYW5FeGVjdXRlRWRp
dGluZ0NvbW1hbmQoV0VCS0lUX0VESVRJTkdfQ09NTUFORF9TRUxFQ1RfQUxMKSk7CiAKQEAgLTIx
MSw3ICsyMDgsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0VkaXRvclNlbGVjdEFsbEVkaXRh
YmxlKEVkaXRvclRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAKICAgICBHVW5pcXVlUHRyPGNo
YXI+IHNlbGVjdGVkU3BhbkhUTUwoZ19zdHJkdXBfcHJpbnRmKHNlbGVjdGVkU3BhbkhUTUxGb3Jt
YXQsICJmYWxzZSIpKTsKICAgICB0ZXN0LT5sb2FkSHRtbChzZWxlY3RlZFNwYW5IVE1MLmdldCgp
LCBudWxscHRyKTsKLSAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKKyAgICB0ZXN0
LT53YWl0VW50aWxEcmF3QWZ0ZXJMb2FkRmluaXNoZWQoKTsKIAogICAgIGdfYXNzZXJ0KHRlc3Qt
PmNhbkV4ZWN1dGVFZGl0aW5nQ29tbWFuZChXRUJLSVRfRURJVElOR19DT01NQU5EX1NFTEVDVF9B
TEwpKTsKIApAQCAtMjM2LDEyICsyMzMsMTUgQEAgc3RhdGljIHZvaWQgbG9hZENvbnRlbnRzQW5k
VHJ5VG9DdXRTZWxlY3Rpb24oRWRpdG9yVGVzdCogdGVzdCwgYm9vbCBjb250ZW50RWRpdGEKIAog
ICAgIEdVbmlxdWVQdHI8Y2hhcj4gc2VsZWN0ZWRTcGFuSFRNTChnX3N0cmR1cF9wcmludGYoc2Vs
ZWN0ZWRTcGFuSFRNTEZvcm1hdCwgY29udGVudEVkaXRhYmxlID8gInRydWUiIDogImZhbHNlIikp
OwogICAgIHRlc3QtPmxvYWRIdG1sKHNlbGVjdGVkU3BhbkhUTUwuZ2V0KCksIG51bGxwdHIpOwot
ICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworICAgIHRlc3QtPndhaXRVbnRpbERy
YXdBZnRlckxvYWRGaW5pc2hlZCgpOwogCiAgICAgZ19hc3NlcnQoIXRlc3QtPmlzRWRpdGFibGUo
KSk7CiAgICAgdGVzdC0+c2V0RWRpdGFibGUodHJ1ZSk7CiAgICAgZ19hc3NlcnQodGVzdC0+aXNF
ZGl0YWJsZSgpKTsKIAorICAgIC8vIEVuc3VyZSB0aGUgZWRpdG9yIHN0YXRlIGlzIHJlZnJlc2hl
ZCBhZnRlciBjaGFuZ2luZyBlZGl0YWJpbGl0eS4KKyAgICB0ZXN0LT50cmlnZ2VyRHJhd0FuZFdh
aXRVbnRpbEZpbmlzaGVkKCk7CisKICAgICAvLyBDdXQgdGhlIHNlbGVjdGlvbiB0byB0aGUgY2xp
cGJvYXJkIHRvIHNlZSBpZiB0aGUgdmlldyBpcyBpbmRlZWQgZWRpdGFibGUuCiAgICAgR1VuaXF1
ZVB0cjxjaGFyPiBjbGlwYm9hcmRUZXh0KHRlc3QtPmN1dFNlbGVjdGlvbigpKTsKICAgICBnX2Fz
c2VydF9jbXBzdHIoY2xpcGJvYXJkVGV4dC5nZXQoKSwgPT0sICJtYWtlIEphY2sgYSBkdWxsIik7
CkBAIC0yNTUsNyArMjU1LDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdFZGl0b3JOb25FZGl0
YWJsZShFZGl0b3JUZXN0KiB0ZXN0KQogewogICAgIEdVbmlxdWVQdHI8Y2hhcj4gc2VsZWN0ZWRT
cGFuSFRNTChnX3N0cmR1cF9wcmludGYoc2VsZWN0ZWRTcGFuSFRNTEZvcm1hdCwgImZhbHNlIikp
OwogICAgIHRlc3QtPmxvYWRIdG1sKHNlbGVjdGVkU3BhbkhUTUwuZ2V0KCksIG51bGxwdHIpOwot
ICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworICAgIHRlc3QtPndhaXRVbnRpbERy
YXdBZnRlckxvYWRGaW5pc2hlZCgpOwogCiAgICAgZ19hc3NlcnQoIXRlc3QtPmlzRWRpdGFibGUo
KSk7CiAgICAgdGVzdC0+c2V0RWRpdGFibGUodHJ1ZSk7CkBAIC0yOTMsOSArMjkzLDggQEAgc3Rh
dGljIHZvaWQgdGVzdFdlYlZpZXdFZGl0b3JFZGl0b3JTdGF0ZVR5cGluZ0F0dHJpYnV0ZXMoRWRp
dG9yVGVzdCogdGVzdCwgZ2NvbnMKICAgICAgICAgIjxiPjxpPmJvbGRhbmRpdGFsaWMgPC9pPjwv
Yj4iCiAgICAgICAgICI8L2JvZHk+PC9odG1sPiI7CiAKLSAgICB0ZXN0LT5zaG93SW5XaW5kb3dB
bmRXYWl0VW50aWxNYXBwZWQoKTsKICAgICB0ZXN0LT5sb2FkSHRtbCh0eXBpbmdBdHRyaWJ1dGVz
SFRNTCwgbnVsbHB0cik7Ci0gICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CisgICAg
dGVzdC0+d2FpdFVudGlsRHJhd0FmdGVyTG9hZEZpbmlzaGVkKCk7CiAgICAgdGVzdC0+c2V0RWRp
dGFibGUodHJ1ZSk7CiAKICAgICB1bnNpZ25lZCB0eXBpbmdBdHRyaWJ1dGVzID0gdGVzdC0+dHlw
aW5nQXR0cmlidXRlcygpOwpAQCAtNDA1LDcgKzQwNCw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJW
aWV3RWRpdG9yRWRpdG9yU3RhdGVUeXBpbmdBdHRyaWJ1dGVzKEVkaXRvclRlc3QqIHRlc3QsIGdj
b25zCiBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0VkaXRvckluc2VydEltYWdlKEVkaXRvclRlc3Qq
IHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7CiAgICAgdGVzdC0+bG9hZEh0bWwoIjxodG1sPjxib2R5
PjwvYm9keT48L2h0bWw+IiwgImZpbGU6Ly8vIik7Ci0gICAgdGVzdC0+d2FpdFVudGlsTG9hZEZp
bmlzaGVkKCk7CisgICAgdGVzdC0+d2FpdFVudGlsRHJhd0FmdGVyTG9hZEZpbmlzaGVkKCk7CiAg
ICAgdGVzdC0+c2V0RWRpdGFibGUodHJ1ZSk7CiAKICAgICBHVW5pcXVlUHRyPGNoYXI+IGltYWdl
UGF0aChnX2J1aWxkX2ZpbGVuYW1lKFRlc3Q6OmdldFJlc291cmNlc0RpcigpLmRhdGEoKSwgImJs
YW5rLmljbyIsIG51bGxwdHIpKTsKQEAgLTQyMiw3ICs0MjEsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0
V2ViVmlld0VkaXRvckluc2VydEltYWdlKEVkaXRvclRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIp
CiBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0VkaXRvckNyZWF0ZUxpbmsoRWRpdG9yVGVzdCogdGVz
dCwgZ2NvbnN0cG9pbnRlcikKIHsKICAgICB0ZXN0LT5sb2FkSHRtbCgiPGh0bWw+PGJvZHkgb25s
b2FkPVwiZG9jdW1lbnQuZ2V0U2VsZWN0aW9uKCkuc2VsZWN0QWxsQ2hpbGRyZW4oZG9jdW1lbnQu
Ym9keSk7XCI+d2Via2l0Z3RrLm9yZzwvYm9keT48L2h0bWw+IiwgbnVsbHB0cik7Ci0gICAgdGVz
dC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CisgICAgdGVzdC0+d2FpdFVudGlsRHJhd0FmdGVy
TG9hZEZpbmlzaGVkKCk7CiAgICAgdGVzdC0+c2V0RWRpdGFibGUodHJ1ZSk7CiAKICAgICBzdGF0
aWMgY29uc3QgY2hhciogd2Via2l0R1RLVVJMID0gImh0dHA6Ly93d3cud2Via2l0Z3RrLm9yZy8i
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmll
d1Rlc3QuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0
LmgKaW5kZXggMzI2YTRhYmQzZDAwMTMwMWExNTFkNDkzMTViZmEzMWI1NTczMDhjZC4uNTQ0MTU5
NmFiY2I5Y2NlMzRkYjNkZTIxMzVlM2IwMDkzMjIxMjVmOSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuaAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5oCkBAIC02Niw2ICs2Niw4IEBA
IHB1YmxpYzoKICNpZiBQTEFURk9STShHVEspCiAgICAgdm9pZCBzaG93SW5XaW5kb3coR3RrV2lu
ZG93VHlwZSA9IEdUS19XSU5ET1dfUE9QVVApOwogICAgIHZvaWQgc2hvd0luV2luZG93QW5kV2Fp
dFVudGlsTWFwcGVkKEd0a1dpbmRvd1R5cGUgPSBHVEtfV0lORE9XX1BPUFVQLCBpbnQgd2lkdGgg
PSAwLCBpbnQgaGVpZ2h0ID0gMCk7CisgICAgdm9pZCB0cmlnZ2VyRHJhd0FuZFdhaXRVbnRpbEZp
bmlzaGVkKCk7CisgICAgdm9pZCB3YWl0VW50aWxUZXh0SXNBdmFpbGFibGVJbkNsaXBib2FyZCgp
OwogICAgIHZvaWQgZW1pdFBvcHVwTWVudVNpZ25hbCgpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL2d0ay9XZWJWaWV3VGVzdEd0ay5j
cHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9ndGsvV2ViVmlld1Rlc3RH
dGsuY3BwCmluZGV4IGExMzQxYTY4NDhkZjFlY2EyNzhjYThkNjQyZDdkNmE4N2E0OGMzYTQuLmQ4
NjE0ODgyMGU5NmVhNzRiNTRjZTJiMzllY2E5YWI3OWQ5NWQ4ZGYgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL2d0ay9XZWJWaWV3VGVzdEd0ay5jcHAKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvZ3RrL1dlYlZpZXdUZXN0R3Rr
LmNwcApAQCAtOTEsNiArOTEsNTQgQEAgdm9pZCBXZWJWaWV3VGVzdDo6c2hvd0luV2luZG93QW5k
V2FpdFVudGlsTWFwcGVkKEd0a1dpbmRvd1R5cGUgd2luZG93VHlwZSwgaW50IHcKICAgICBnX21h
aW5fbG9vcF9ydW4obV9tYWluTG9vcCk7CiB9CiAKK3N0YXRpYyBnYm9vbGVhbiBkcmF3RmluaXNo
ZWRDYWxsYmFjayhHTWFpbkxvb3AqIG1haW5Mb29wKQoreworICAgIGdfbWFpbl9sb29wX3F1aXQo
bWFpbkxvb3ApOworICAgIHJldHVybiBHX1NPVVJDRV9SRU1PVkU7Cit9CisKK3N0YXRpYyBnYm9v
bGVhbiB3ZWJWaWV3RHJhd0NhbGxiYWNrKEdNYWluTG9vcCogbWFpbkxvb3ApCit7CisgICAgZ19p
ZGxlX2FkZCgoR1NvdXJjZUZ1bmMpZHJhd0ZpbmlzaGVkQ2FsbGJhY2ssIG1haW5Mb29wKTsKKyAg
ICByZXR1cm4gRkFMU0U7Cit9CisKK3ZvaWQgV2ViVmlld1Rlc3Q6OnRyaWdnZXJEcmF3QW5kV2Fp
dFVudGlsRmluaXNoZWQoKQoreworI2lmIDAKKyAgICBib29sIHNob3VsZERlc3Ryb3lUZW1wb3Jh
cnlXaW5kb3cgPSBmYWxzZTsKKyAgICBpZiAoIW1fcGFyZW50V2luZG93KSB7CisgICAgICAgIHNo
b3dJbldpbmRvdyhHVEtfV0lORE9XX1RPUExFVkVMKTsKKyAgICAgICAgc2hvdWxkRGVzdHJveVRl
bXBvcmFyeVdpbmRvdyA9IHRydWU7CisgICAgfQorI2VuZGlmCisKKyAgICBnX3NpZ25hbF9jb25u
ZWN0X3N3YXBwZWQobV93ZWJWaWV3LCAiZHJhdyIsIEdfQ0FMTEJBQ0sod2ViVmlld0RyYXdDYWxs
YmFjayksIG1fbWFpbkxvb3ApOworICAgIGd0a193aWRnZXRfcXVldWVfZHJhdyhHVEtfV0lER0VU
KG1fd2ViVmlldykpOworICAgIGdfbWFpbl9sb29wX3J1bihtX21haW5Mb29wKTsKKworI2lmIDAK
KyAgICBpZiAoc2hvdWxkRGVzdHJveVRlbXBvcmFyeVdpbmRvdykgeworICAgICAgICBndGtfY29u
dGFpbmVyX3JlbW92ZShHVEtfQ09OVEFJTkVSKG1fcGFyZW50V2luZG93KSwgR1RLX1dJREdFVCht
X3dlYlZpZXcpKTsKKyAgICAgICAgZ3RrX3dpZGdldF9kZXN0cm95KG1fcGFyZW50V2luZG93KTsK
KyAgICAgICAgbV9wYXJlbnRXaW5kb3cgPSBudWxscHRyOworICAgIH0KKyNlbmRpZgorfQorCit2
b2lkIFdlYlZpZXdUZXN0Ojp3YWl0VW50aWxUZXh0SXNBdmFpbGFibGVJbkNsaXBib2FyZCgpCit7
CisgICAgZ190aW1lb3V0X2FkZCg1MCwgW10oZ3BvaW50ZXIgdXNlckRhdGEpIC0+IGdib29sZWFu
IHsKKyAgICAgICAgYXV0byogbWFpbkxvb3AgPSBzdGF0aWNfY2FzdDxHTWFpbkxvb3AqPih1c2Vy
RGF0YSk7CisgICAgICAgIGlmIChndGtfY2xpcGJvYXJkX3dhaXRfaXNfdGV4dF9hdmFpbGFibGUo
Z3RrX2NsaXBib2FyZF9nZXQoR0RLX1NFTEVDVElPTl9DTElQQk9BUkQpKSkgeworICAgICAgICAg
ICAgZ19tYWluX2xvb3BfcXVpdChtYWluTG9vcCk7CisgICAgICAgICAgICByZXR1cm4gR19TT1VS
Q0VfUkVNT1ZFOworICAgICAgICB9CisgICAgICAgIHJldHVybiBHX1NPVVJDRV9DT05USU5VRTsK
KyAgICB9LCBtX21haW5Mb29wKTsKKyAgICBnX21haW5fbG9vcF9ydW4obV9tYWluTG9vcCk7Cit9
CisKIHZvaWQgV2ViVmlld1Rlc3Q6Om1vdXNlTW92ZVRvKGludCB4LCBpbnQgeSwgdW5zaWduZWQg
bW91c2VNb2RpZmllcnMpCiB7CiAgICAgZ19hc3NlcnQobV9wYXJlbnRXaW5kb3cpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>325033</attachid>
            <date>2017-10-26 11:14:05 -0700</date>
            <delta_ts>2017-10-27 01:19:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-168219-20171026131404.patch</filename>
            <type>text/plain</type>
            <size>34400</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIzOTk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDU5Y2MxZGMwYTRlNTE2
OWVkMDMyMzBmNzI3N2VlODNmOGM3NDExMS4uYTYwMzM3M2FjNWNiYjNjNmYwOGFjZmM1NzA3NmI3
YWM0ZTVhZjllMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE3LTEwLTI2ICBNaWNo
YWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KKworICAgICAgICBbV1BFXVtH
VEtdIEV4cG9zZSBhdmFpbGFiaWxpdHkgb2YgY2VydGFpbiBlZGl0aW5nIGNvbW1hbmRzIGluIFdl
YktpdEVkaXRvclN0YXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNjgyMTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBNYWtlIEVkaXRvcjo6Y2FuVW5kbyBhbmQgRWRpdG9yOjpjYW5SZWRvIGNvbnN0Lgor
CisgICAgICAgIEFsc28sIHJlbW92ZSB1bnVzZWQgYWxsb3dzQ29weSBmcm9tIEhpdFRlc3RSZXN1
bHQuCisKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0b3I6OmNhblVuZG8gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpjYW5SZWRv
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Y2FuVW5kbyk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmNhblJlZG8pOiBEZWxldGVkLgorICAgICAgICAqIGVk
aXRpbmcvRWRpdG9yLmg6CisgICAgICAgICogcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6YWxsb3dzQ29weSBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICogcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvU2VsZWN0aW9uUmFuZ2VEYXRhLmNwcDoKKwogMjAxNy0xMC0yNSAgUnlvc3VrZSBOaXdh
ICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBTdHlsZTo6U2NvcGU6OmZsdXNoUGVuZGlu
Z1VwZGF0ZSgpIGNhbiByZXBsYWNlIHRoZSBlbnRpcmUgZG9jdW1lbnQgaW4gWFNMVFByb2Nlc3Nv
cjo6Y3JlYXRlRG9jdW1lbnRGcm9tU291cmNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDM0MjMzMzkzMzM5NjlkYWNk
ZjQ3ZTk2YzY0MWE5NGIyNTJiYTMwMTAuLmM2N2VmNjBhZjE1ZTI2M2FjNWYwNDE2NzEwZjgyMzE1
ZmI5MTU3OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAgQEAKKzIwMTctMTAtMjYgIE1pY2hhZWwg
Q2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtXUEVdW0dUS10g
RXhwb3NlIGF2YWlsYWJpbGl0eSBvZiBjZXJ0YWluIGVkaXRpbmcgY29tbWFuZHMgaW4gV2ViS2l0
RWRpdG9yU3RhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2ODIxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEV4cG9zZSBjYW5DdXQsIGNhbkNvcHksIGNhblBhc3RlLCBjYW5VbmRvLCBhbmQgY2FuUmVk
byBpbiBFZGl0b3JTdGF0ZTo6UG9zdExheW91RGF0YS4KKworICAgICAgICBBZGQgY29ycmVzcG9u
ZGluZyBuZXcgV1BFL0dUSyBBUEkuCisKKyAgICAgICAgUmVtb3ZlIGFsbG93c0NvcHkgZnJvbSBX
ZWJLaXRUZXN0UmVzdWx0RGF0YS4gSXQncyB1bnVzZWQsIGRvZXMgbm90IHdvcmsgY29ycmVjdGx5
IGluIGFsbAorICAgICAgICBjaXJjdW1zdGFuY2VzLCBhbmQgaXJyaXRhdGVzIFJ5b3N1a2UuCisK
KyAgICAgICAgQWxzbywgcmVtb3ZlIGEgYnVuY2ggb2YgI2lmcyBndWFyZGluZyBwb3N0IGxheW91
dCBkYXRhLCBzaW5jZSBpdCdzIG5vdyB1c2VkIG9uIGFsbCBwb3J0cy4KKworICAgICAgICAqIFNo
YXJlZC9FZGl0b3JTdGF0ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkVkaXRvclN0YXRlOjplbmNv
ZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JTdGF0ZTo6ZGVjb2RlKToKKyAgICAg
ICAgKFdlYktpdDo6RWRpdG9yU3RhdGU6OlBvc3RMYXlvdXREYXRhOjplbmNvZGUgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpFZGl0b3JTdGF0ZTo6UG9zdExheW91dERhdGE6OmRlY29kZSk6Cisg
ICAgICAgICogU2hhcmVkL0VkaXRvclN0YXRlLmg6CisgICAgICAgIChXZWJLaXQ6OkVkaXRvclN0
YXRlOjpwb3N0TGF5b3V0RGF0YSBjb25zdCBjb25zdCk6CisgICAgICAgICogU2hhcmVkL1dlYkhp
dFRlc3RSZXN1bHREYXRhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSGl0VGVzdFJlc3VsdERh
dGE6OldlYkhpdFRlc3RSZXN1bHREYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViSGl0VGVzdFJl
c3VsdERhdGE6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkhpdFRlc3RSZXN1
bHREYXRhOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0YS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSGl0VGVzdFJlc3VsdC5oOgorICAgICAgICAo
QVBJOjpIaXRUZXN0UmVzdWx0OjphbGxvd3NDb3B5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RWRpdG9yU3RhdGUuY3BwOgorICAgICAgICAod2Vi
a2l0RWRpdG9yU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKHdlYmtpdF9lZGl0b3Jfc3RhdGVfaXNf
Y3V0X2F2YWlsYWJsZSk6CisgICAgICAgICh3ZWJraXRfZWRpdG9yX3N0YXRlX2lzX2NvcHlfYXZh
aWxhYmxlKToKKyAgICAgICAgKHdlYmtpdF9lZGl0b3Jfc3RhdGVfaXNfcGFzdGVfYXZhaWxhYmxl
KToKKyAgICAgICAgKHdlYmtpdF9lZGl0b3Jfc3RhdGVfaXNfdW5kb19hdmFpbGFibGUpOgorICAg
ICAgICAod2Via2l0X2VkaXRvcl9zdGF0ZV9pc19yZWRvX2F2YWlsYWJsZSk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwOgorICAgICAgICAod2Via2l0X3dl
Yl92aWV3X2Nhbl9leGVjdXRlX2VkaXRpbmdfY29tbWFuZCk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0RWRpdG9yU3RhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0
ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL3dwZS9XZWJLaXRFZGl0b3JTdGF0ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZWRpdG9yU3RhdGUgY29u
c3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGVyZm9ybUltbWVkaWF0ZUFjdGlvbkhpdFRlc3RBdExv
Y2F0aW9uKToKKwogMjAxNy0xMC0yNSAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5j
b20+CiAKICAgICAgICAgTmV0d29yayBwcm9jZXNzIGNyYXNoIHVuZGVyIFdlYktpdDo6QXV0aGVu
dGljYXRpb25NYW5hZ2VyOjpyZWplY3RQcm90ZWN0aW9uU3BhY2VBbmRDb250aW51ZUZvclNpbmds
ZUNoYWxsZW5nZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCBiZTNkYThlZTJmNzVl
YmUyZTc2N2JiYTZlNzc3ZjA5MTVmOTg4MjI1Li5lNDYzZGZjMWNmMzA4NmM2ZTkxMGUzN2U1NTRk
ODJkYjVhZTM5MjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC0xNjM5LDcgKzE2
MzksNyBAQCB2b2lkIEVkaXRvcjo6Y2xlYXJVbmRvUmVkb09wZXJhdGlvbnMoKQogICAgICAgICBj
bGllbnQoKS0+Y2xlYXJVbmRvUmVkb09wZXJhdGlvbnMoKTsKIH0KIAotYm9vbCBFZGl0b3I6OmNh
blVuZG8oKQorYm9vbCBFZGl0b3I6OmNhblVuZG8oKSBjb25zdAogewogICAgIHJldHVybiBjbGll
bnQoKSAmJiBjbGllbnQoKS0+Y2FuVW5kbygpOwogfQpAQCAtMTY1MCw3ICsxNjUwLDcgQEAgdm9p
ZCBFZGl0b3I6OnVuZG8oKQogICAgICAgICBjbGllbnQoKS0+dW5kbygpOwogfQogCi1ib29sIEVk
aXRvcjo6Y2FuUmVkbygpCitib29sIEVkaXRvcjo6Y2FuUmVkbygpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIGNsaWVudCgpICYmIGNsaWVudCgpLT5jYW5SZWRvKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3IuaAppbmRleCBhYTg4NWZmNTk5YzFhMDc1ZDNkYTBkMDdjZGYyMjU4NTE2YWVhMzdkLi5iMWU4
MmZlNmJlNGE3MDIwZWNlZjJjNGY4YTFlNmI5MjM0NjBlODE3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dG9yLmgKQEAgLTMwMyw5ICszMDMsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBzaG91bGRFbmRFZGl0
aW5nKFJhbmdlKik7CiAKICAgICB2b2lkIGNsZWFyVW5kb1JlZG9PcGVyYXRpb25zKCk7Ci0gICAg
Ym9vbCBjYW5VbmRvKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjYW5VbmRvKCkgY29uc3Q7
CiAgICAgdm9pZCB1bmRvKCk7Ci0gICAgYm9vbCBjYW5SZWRvKCk7CisgICAgV0VCQ09SRV9FWFBP
UlQgYm9vbCBjYW5SZWRvKCkgY29uc3Q7CiAgICAgdm9pZCByZWRvKCk7CiAKICAgICB2b2lkIGRp
ZEJlZ2luRWRpdGluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hp
dFRlc3RSZXN1bHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQu
Y3BwCmluZGV4IDUyZTQwOTExZDhmOTFlMTk1MGFhNzk0YzQyYzIyZDk2NDVlMDIyMjMuLmFjYjll
ZGNjMjJlYWEwOTgxOWRlZjYxNDczZGQ0ODFkMWE2ODlhODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKQEAgLTU5NCwyMSArNTk0LDYgQEAgYm9vbCBIaXRU
ZXN0UmVzdWx0Ojppc092ZXJUZXh0SW5zaWRlRm9ybUNvbnRyb2xFbGVtZW50KCkgY29uc3QKICAg
ICByZXR1cm4gIXdvcmRSYW5nZS0+dGV4dCgpLmlzRW1wdHkoKTsKIH0KIAotYm9vbCBIaXRUZXN0
UmVzdWx0OjphbGxvd3NDb3B5KCkgY29uc3QKLXsKLSAgICBOb2RlKiBub2RlID0gaW5uZXJOb2Rl
KCk7Ci0gICAgaWYgKCFub2RlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBSZW5kZXJP
YmplY3QqIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKLSAgICBpZiAoIXJlbmRlcmVyKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBib29sIGlzVXNlclNlbGVjdE5vbmUgPSByZW5k
ZXJlci0+c3R5bGUoKS51c2VyU2VsZWN0KCkgPT0gU0VMRUNUX05PTkU7Ci0gICAgYm9vbCBpc1Bh
c3N3b3JkRmllbGQgPSBpczxIVE1MSW5wdXRFbGVtZW50Pihub2RlKSAmJiBkb3duY2FzdDxIVE1M
SW5wdXRFbGVtZW50Pigqbm9kZSkuaXNQYXNzd29yZEZpZWxkKCk7Ci0gICAgcmV0dXJuICFpc1Bh
c3N3b3JkRmllbGQgJiYgIWlzVXNlclNlbGVjdE5vbmU7Ci19Ci0KIFVSTCBIaXRUZXN0UmVzdWx0
OjphYnNvbHV0ZUxpbmtVUkwoKSBjb25zdAogewogICAgIGlmIChtX2lubmVyVVJMRWxlbWVudCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oCmluZGV4IGJhMmQ3YTJhNTkw
YjVhNzQ1NGI1YWY0ZGNiOTY4NjJhYzlmODAyZWQuLjA0YjM4ODJmMGUyZTA4YjIyOGQ5NzQzY2Rm
MjE1OTNhNzQwZTA1ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRU
ZXN0UmVzdWx0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQu
aApAQCAtMTMxLDcgKzEzMSw2IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wg
aXNEb3dubG9hZGFibGVNZWRpYSgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNP
dmVyVGV4dEluc2lkZUZvcm1Db250cm9sRWxlbWVudCgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgYWxsb3dzQ29weSgpIGNvbnN0OwogCiAgICAgSGl0VGVzdFByb2dyZXNzIGFkZE5v
ZGVUb0xpc3RCYXNlZFRlc3RSZXN1bHQoTm9kZSosIGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgY29u
c3QgSGl0VGVzdExvY2F0aW9uJiBwb2ludEluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRSZWN0JiA9
IExheW91dFJlY3QoKSk7CiAgICAgSGl0VGVzdFByb2dyZXNzIGFkZE5vZGVUb0xpc3RCYXNlZFRl
c3RSZXN1bHQoTm9kZSosIGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgY29uc3QgSGl0VGVzdExvY2F0
aW9uJiBwb2ludEluQ29udGFpbmVyLCBjb25zdCBGbG9hdFJlY3QmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRvclN0YXRlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0VkaXRvclN0YXRlLmNwcAppbmRleCBkNGQwOTUwZjNjOWE0NmE3N2NhMWQwYTY3ZGJkYmQwZGUw
MjA5MWRhLi40OTBmMzBkMGRkMDRkMGE0ZDU2Nzk3NWEyMjQ3ZDlkYjE1Yjc0M2RhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0b3JTdGF0ZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvRWRpdG9yU3RhdGUuY3BwCkBAIC00MiwxMCArNDIsOCBAQCB2b2lkIEVkaXRv
clN0YXRlOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIg
PDwgaGFzQ29tcG9zaXRpb247CiAgICAgZW5jb2RlciA8PCBpc01pc3NpbmdQb3N0TGF5b3V0RGF0
YTsKIAotI2lmIFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShNQUMp
CiAgICAgaWYgKCFpc01pc3NpbmdQb3N0TGF5b3V0RGF0YSkKICAgICAgICAgbV9wb3N0TGF5b3V0
RGF0YS5lbmNvZGUoZW5jb2Rlcik7Ci0jZW5kaWYKIAogI2lmIFBMQVRGT1JNKElPUykKICAgICBl
bmNvZGVyIDw8IGZpcnN0TWFya2VkUmVjdDsKQEAgLTgzLDEyICs4MSwxMCBAQCBib29sIEVkaXRv
clN0YXRlOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBFZGl0b3JTdGF0ZSYgcmVzdWx0
KQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmlzTWlzc2luZ1Bvc3RMYXlvdXREYXRh
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0jaWYgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9S
TShHVEspIHx8IFBMQVRGT1JNKE1BQykKICAgICBpZiAoIXJlc3VsdC5pc01pc3NpbmdQb3N0TGF5
b3V0RGF0YSkgewogICAgICAgICBpZiAoIVBvc3RMYXlvdXREYXRhOjpkZWNvZGUoZGVjb2Rlciwg
cmVzdWx0LnBvc3RMYXlvdXREYXRhKCkpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KLSNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
cmVzdWx0LmZpcnN0TWFya2VkUmVjdCkpCkBAIC0xMDIsNyArOTgsNiBAQCBib29sIEVkaXRvclN0
YXRlOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBFZGl0b3JTdGF0ZSYgcmVzdWx0KQog
ICAgIHJldHVybiB0cnVlOwogfQogCi0jaWYgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShHVEsp
IHx8IFBMQVRGT1JNKE1BQykKIHZvaWQgRWRpdG9yU3RhdGU6OlBvc3RMYXlvdXREYXRhOjplbmNv
ZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIgPDwgdHlwaW5n
QXR0cmlidXRlczsKQEAgLTEzNSw2ICsxMzAsMTEgQEAgdm9pZCBFZGl0b3JTdGF0ZTo6UG9zdExh
eW91dERhdGE6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2Rl
ciA8PCBwYXJhZ3JhcGhDb250ZXh0Rm9yQ2FuZGlkYXRlUmVxdWVzdDsKICAgICBlbmNvZGVyIDw8
IHN0cmluZ0ZvckNhbmRpZGF0ZVJlcXVlc3Q7CiAjZW5kaWYKKyAgICBlbmNvZGVyIDw8IGNhbkN1
dDsKKyAgICBlbmNvZGVyIDw8IGNhbkNvcHk7CisgICAgZW5jb2RlciA8PCBjYW5QYXN0ZTsKKyAg
ICBlbmNvZGVyIDw8IGNhblVuZG87CisgICAgZW5jb2RlciA8PCBjYW5SZWRvOwogfQogCiBib29s
IEVkaXRvclN0YXRlOjpQb3N0TGF5b3V0RGF0YTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2Rl
ciwgUG9zdExheW91dERhdGEmIHJlc3VsdCkKQEAgLTE5NCw4ICsxOTQsMTggQEAgYm9vbCBFZGl0
b3JTdGF0ZTo6UG9zdExheW91dERhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFBv
c3RMYXlvdXREYXRhJgogICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKIAorICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocmVzdWx0LmNhbkN1dCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5jYW5Db3B5KSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmNhblBhc3RlKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmNhblVuZG8pKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuY2Fu
UmVkbykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIHJldHVybiB0cnVlOwogfQotI2Vu
ZGlmIC8vIFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShNQUMpCiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRvclN0YXRlLmggYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9FZGl0b3JTdGF0ZS5oCmluZGV4IGY3Njk3MjA2OTg1ZTE1Nzg1MjA1
MjBlMDQ4MzNmN2MzNTIzMTBlMjAuLjYwMGYyNTIyMjkxYTlmNTU3NDM2MmE5ZDNhMDRhMGM4ZTcw
YTA3ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRvclN0YXRlLmgKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvRWRpdG9yU3RhdGUuaApAQCAtNzcsNyArNzcsNiBAQCBz
dHJ1Y3QgRWRpdG9yU3RhdGUgewogICAgIFN0cmluZyBtYXJrZWRUZXh0OwogI2VuZGlmCiAKLSNp
ZiBQTEFURk9STShJT1MpIHx8IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oTUFDKQogICAgIHN0
cnVjdCBQb3N0TGF5b3V0RGF0YSB7CiAgICAgICAgIHVpbnQzMl90IHR5cGluZ0F0dHJpYnV0ZXMg
eyBBdHRyaWJ1dGVOb25lIH07CiAjaWYgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShHVEspCkBA
IC0xMTAsMjQgKzEwOSwyNiBAQCBzdHJ1Y3QgRWRpdG9yU3RhdGUgewogICAgICAgICBTdHJpbmcg
c3RyaW5nRm9yQ2FuZGlkYXRlUmVxdWVzdDsKICNlbmRpZgogCisgICAgICAgIGJvb2wgY2FuQ3V0
IHsgZmFsc2UgfTsKKyAgICAgICAgYm9vbCBjYW5Db3B5IHsgZmFsc2UgfTsKKyAgICAgICAgYm9v
bCBjYW5QYXN0ZSB7IGZhbHNlIH07CisgICAgICAgIGJvb2wgY2FuVW5kbyB7IGZhbHNlIH07Cisg
ICAgICAgIGJvb2wgY2FuUmVkbyB7IGZhbHNlIH07CisKICAgICAgICAgdm9pZCBlbmNvZGUoSVBD
OjpFbmNvZGVyJikgY29uc3Q7CiAgICAgICAgIHN0YXRpYyBib29sIGRlY29kZShJUEM6OkRlY29k
ZXImLCBQb3N0TGF5b3V0RGF0YSYpOwogICAgIH07CiAKICAgICBjb25zdCBQb3N0TGF5b3V0RGF0
YSYgcG9zdExheW91dERhdGEoKSBjb25zdDsKICAgICBQb3N0TGF5b3V0RGF0YSYgcG9zdExheW91
dERhdGEoKTsKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpIHx8IFBMQVRGT1JNKEdUSykgfHwgUExB
VEZPUk0oTUFDKQogCiAgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7CiAgICAg
c3RhdGljIGJvb2wgZGVjb2RlKElQQzo6RGVjb2RlciYsIEVkaXRvclN0YXRlJik7CiAKLSNpZiBQ
TEFURk9STShJT1MpIHx8IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oTUFDKQogcHJpdmF0ZToK
ICAgICBQb3N0TGF5b3V0RGF0YSBtX3Bvc3RMYXlvdXREYXRhOwotI2VuZGlmCiB9OwogCi0jaWYg
UExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKE1BQykKIGlubGluZSBh
dXRvIEVkaXRvclN0YXRlOjpwb3N0TGF5b3V0RGF0YSgpIC0+IFBvc3RMYXlvdXREYXRhJgogewog
ICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIWlzTWlzc2luZ1Bvc3RMYXlvdXREYXRhLCAiQXR0ZW1w
dCB0byBhY2Nlc3MgcG9zdCBsYXlvdXQgZGF0YSBiZWZvcmUgcmVjZWl2aW5nIGl0Iik7CkBAIC0x
MzksNyArMTQwLDYgQEAgaW5saW5lIGF1dG8gRWRpdG9yU3RhdGU6OnBvc3RMYXlvdXREYXRhKCkg
Y29uc3QgLT4gY29uc3QgUG9zdExheW91dERhdGEmCiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSgh
aXNNaXNzaW5nUG9zdExheW91dERhdGEsICJBdHRlbXB0IHRvIGFjY2VzcyBwb3N0IGxheW91dCBk
YXRhIGJlZm9yZSByZWNlaXZpbmcgaXQiKTsKICAgICByZXR1cm4gbV9wb3N0TGF5b3V0RGF0YTsK
IH0KLSNlbmRpZgogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkhp
dFRlc3RSZXN1bHREYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkhpdFRlc3RSZXN1
bHREYXRhLmNwcAppbmRleCBiYjEzMWJhNzVhYTk5ZTIyMzBjMjc5ZDlmYmNmM2ZjNGM2NjhmZjA4
Li4xNzljYTRiZTM3YmVkMGUzZGNjYjVkMzI2M2YzZjA2OWIwNTI1NTViIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuY3BwCkBAIC01Myw3ICs1Myw2IEBA
IFdlYkhpdFRlc3RSZXN1bHREYXRhOjpXZWJIaXRUZXN0UmVzdWx0RGF0YShjb25zdCBXZWJDb3Jl
OjpIaXRUZXN0UmVzdWx0JiBoaXRUZXN0CiAgICAgLCBpc1NlbGVjdGVkKGhpdFRlc3RSZXN1bHQu
aXNTZWxlY3RlZCgpKQogICAgICwgaXNUZXh0Tm9kZShoaXRUZXN0UmVzdWx0LmlubmVyTm9kZSgp
ICYmIGhpdFRlc3RSZXN1bHQuaW5uZXJOb2RlKCktPmlzVGV4dE5vZGUoKSkKICAgICAsIGlzT3Zl
clRleHRJbnNpZGVGb3JtQ29udHJvbEVsZW1lbnQoaGl0VGVzdFJlc3VsdC5pc092ZXJUZXh0SW5z
aWRlRm9ybUNvbnRyb2xFbGVtZW50KCkpCi0gICAgLCBhbGxvd3NDb3B5KGhpdFRlc3RSZXN1bHQu
YWxsb3dzQ29weSgpKQogICAgICwgaXNEb3dubG9hZGFibGVNZWRpYShoaXRUZXN0UmVzdWx0Lmlz
RG93bmxvYWRhYmxlTWVkaWEoKSkKICAgICAsIGltYWdlU2l6ZSgwKQogewpAQCAtNzMsNyArNzIs
NiBAQCBXZWJIaXRUZXN0UmVzdWx0RGF0YTo6V2ViSGl0VGVzdFJlc3VsdERhdGEoY29uc3QgV2Vi
Q29yZTo6SGl0VGVzdFJlc3VsdCYgaGl0VGVzdAogICAgICwgaXNTZWxlY3RlZChoaXRUZXN0UmVz
dWx0LmlzU2VsZWN0ZWQoKSkKICAgICAsIGlzVGV4dE5vZGUoaGl0VGVzdFJlc3VsdC5pbm5lck5v
ZGUoKSAmJiBoaXRUZXN0UmVzdWx0LmlubmVyTm9kZSgpLT5pc1RleHROb2RlKCkpCiAgICAgLCBp
c092ZXJUZXh0SW5zaWRlRm9ybUNvbnRyb2xFbGVtZW50KGhpdFRlc3RSZXN1bHQuaXNPdmVyVGV4
dEluc2lkZUZvcm1Db250cm9sRWxlbWVudCgpKQotICAgICwgYWxsb3dzQ29weShoaXRUZXN0UmVz
dWx0LmFsbG93c0NvcHkoKSkKICAgICAsIGlzRG93bmxvYWRhYmxlTWVkaWEoaGl0VGVzdFJlc3Vs
dC5pc0Rvd25sb2FkYWJsZU1lZGlhKCkpCiAgICAgLCBpbWFnZVNpemUoMCkKIHsKQEAgLTEwOSw3
ICsxMDcsNiBAQCB2b2lkIFdlYkhpdFRlc3RSZXN1bHREYXRhOjplbmNvZGUoSVBDOjpFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgaXNTZWxlY3RlZDsKICAgICBlbmNvZGVy
IDw8IGlzVGV4dE5vZGU7CiAgICAgZW5jb2RlciA8PCBpc092ZXJUZXh0SW5zaWRlRm9ybUNvbnRy
b2xFbGVtZW50OwotICAgIGVuY29kZXIgPDwgYWxsb3dzQ29weTsKICAgICBlbmNvZGVyIDw8IGlz
RG93bmxvYWRhYmxlTWVkaWE7CiAgICAgZW5jb2RlciA8PCBsb29rdXBUZXh0OwogICAgIGVuY29k
ZXIgPDwgZGljdGlvbmFyeVBvcHVwSW5mbzsKQEAgLTE0Myw3ICsxNDAsNiBAQCBib29sIFdlYkhp
dFRlc3RSZXN1bHREYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBXZWJIaXRUZXN0
UmVzdWx0RGF0YSYgaAogICAgICAgICB8fCAhZGVjb2Rlci5kZWNvZGUoaGl0VGVzdFJlc3VsdERh
dGEuaXNTZWxlY3RlZCkKICAgICAgICAgfHwgIWRlY29kZXIuZGVjb2RlKGhpdFRlc3RSZXN1bHRE
YXRhLmlzVGV4dE5vZGUpCiAgICAgICAgIHx8ICFkZWNvZGVyLmRlY29kZShoaXRUZXN0UmVzdWx0
RGF0YS5pc092ZXJUZXh0SW5zaWRlRm9ybUNvbnRyb2xFbGVtZW50KQotICAgICAgICB8fCAhZGVj
b2Rlci5kZWNvZGUoaGl0VGVzdFJlc3VsdERhdGEuYWxsb3dzQ29weSkKICAgICAgICAgfHwgIWRl
Y29kZXIuZGVjb2RlKGhpdFRlc3RSZXN1bHREYXRhLmlzRG93bmxvYWRhYmxlTWVkaWEpCiAgICAg
ICAgIHx8ICFkZWNvZGVyLmRlY29kZShoaXRUZXN0UmVzdWx0RGF0YS5sb29rdXBUZXh0KQogICAg
ICAgICB8fCAhZGVjb2Rlci5kZWNvZGUoaGl0VGVzdFJlc3VsdERhdGEuZGljdGlvbmFyeVBvcHVw
SW5mbykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0
RGF0YS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuaAppbmRl
eCAzMjQ2OGFiYTljNzU2MzE3OTBhODAwYzgyYjE4ZTBkMDBhZWQ5MGM1Li5kM2NmZWVjOTk2YTA0
MWFhZTBmYjkzMDcxNTVlY2Y4MjljYmM5NWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkhpdFRlc3RSZXN1bHREYXRhLmgKQEAgLTU3LDcgKzU3LDYgQEAgc3RydWN0IFdlYkhpdFRlc3RS
ZXN1bHREYXRhIHsKICAgICBib29sIGlzU2VsZWN0ZWQ7CiAgICAgYm9vbCBpc1RleHROb2RlOwog
ICAgIGJvb2wgaXNPdmVyVGV4dEluc2lkZUZvcm1Db250cm9sRWxlbWVudDsKLSAgICBib29sIGFs
bG93c0NvcHk7CiAgICAgYm9vbCBpc0Rvd25sb2FkYWJsZU1lZGlhOwogCiAgICAgU3RyaW5nIGxv
b2t1cFRleHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSGl0
VGVzdFJlc3VsdC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhpdFRlc3RSZXN1
bHQuaAppbmRleCBjZDkzOWM5YjBhODdjY2MxYzY0N2JhYTJhOGE5MjcwNjlkYThmNmQ0Li4zMDYy
MmI0ODY2NDc2NGJkNTZkYzcwMGU1M2I5ZDg0NTcxYzc3MGI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSGl0VGVzdFJlc3VsdC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElIaXRUZXN0UmVzdWx0LmgKQEAgLTcwLDggKzcwLDYgQEAgcHVi
bGljOgogCiAgICAgYm9vbCBpc092ZXJUZXh0SW5zaWRlRm9ybUNvbnRyb2xFbGVtZW50KCkgY29u
c3QgeyByZXR1cm4gbV9kYXRhLmlzT3ZlclRleHRJbnNpZGVGb3JtQ29udHJvbEVsZW1lbnQ7IH0K
IAotICAgIGJvb2wgYWxsb3dzQ29weSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5hbGxvd3NDb3B5
OyB9Ci0KICAgICBib29sIGlzRG93bmxvYWRhYmxlTWVkaWEoKSBjb25zdCB7IHJldHVybiBtX2Rh
dGEuaXNEb3dubG9hZGFibGVNZWRpYTsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RWRpdG9yU3RhdGUuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RWRpdG9yU3RhdGUuY3BwCmluZGV4IDY1
NTNhOGQ1Zjg3MTM5YTdiZWU0MTJhZWIwMWFjMDBmY2M3ZTA1ODIuLjQwNmJmZGI2YmRjZWI0NWRh
NjA0NzBhMWViZjM4ZTFiZTYwYmEwY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdEVkaXRvclN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRFZGl0b3JTdGF0ZS5jcHAKQEAgLTM0LDggKzM0LDggQEAg
dXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKICAqIEBTZWVfYWxzbzogI1dlYktpdFdlYlZpZXcKICAq
CiAgKiBXZWJLaXRFZGl0b3JTdGF0ZSByZXByZXNlbnRzIHRoZSBzdGF0ZSBvZiBhICNXZWJLaXRX
ZWJWaWV3IGVkaXRvci4KLSAqIFVzZSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2VkaXRvcl9zdGF0ZSgp
IHRvIGdldCBXZWJLaXRFZGl0b3JTdGF0ZSBvZgotICogYSAjV2ViS2l0V2ViVmlldy4KKyAqIFVz
ZSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2VkaXRvcl9zdGF0ZSgpIHRvIGdldCB0aGUgV2ViS2l0RWRp
dG9yU3RhdGUKKyAqIG9mIGEgI1dlYktpdFdlYlZpZXcuCiAgKgogICogU2luY2U6IDIuMTAKICAq
LwpAQCAtNDgsNiArNDgsMTEgQEAgZW51bSB7CiAKIHN0cnVjdCBfV2ViS2l0RWRpdG9yU3RhdGVQ
cml2YXRlIHsKICAgICB1bnNpZ25lZCB0eXBpbmdBdHRyaWJ1dGVzOworICAgIHVuc2lnbmVkIGlz
Q3V0QXZhaWxhYmxlIDogMTsKKyAgICB1bnNpZ25lZCBpc0NvcHlBdmFpbGFibGUgOiAxOworICAg
IHVuc2lnbmVkIGlzUGFzdGVBdmFpbGFibGUgOiAxOworICAgIHVuc2lnbmVkIGlzVW5kb0F2YWls
YWJsZSA6IDE7CisgICAgdW5zaWduZWQgaXNSZWRvQXZhaWxhYmxlIDogMTsKIH07CiAKIFdFQktJ
VF9ERUZJTkVfVFlQRShXZWJLaXRFZGl0b3JTdGF0ZSwgd2Via2l0X2VkaXRvcl9zdGF0ZSwgR19U
WVBFX09CSkVDVCkKQEAgLTExMSw3ICsxMTYsNiBAQCB2b2lkIHdlYmtpdEVkaXRvclN0YXRlQ2hh
bmdlZChXZWJLaXRFZGl0b3JTdGF0ZSogZWRpdG9yU3RhdGUsIGNvbnN0IEVkaXRvclN0YXRlJgog
ICAgICAgICByZXR1cm47CiAKICAgICB1bnNpZ25lZCB0eXBpbmdBdHRyaWJ1dGVzID0gV0VCS0lU
X0VESVRPUl9UWVBJTkdfQVRUUklCVVRFX05PTkU7Ci0jaWYgUExBVEZPUk0oR1RLKQogICAgIGNv
bnN0IGF1dG8mIHBvc3RMYXlvdXREYXRhID0gbmV3U3RhdGUucG9zdExheW91dERhdGEoKTsKICAg
ICBpZiAocG9zdExheW91dERhdGEudHlwaW5nQXR0cmlidXRlcyAmIEF0dHJpYnV0ZUJvbGQpCiAg
ICAgICAgIHR5cGluZ0F0dHJpYnV0ZXMgfD0gV0VCS0lUX0VESVRPUl9UWVBJTkdfQVRUUklCVVRF
X0JPTEQ7CkBAIC0xMjEsOCArMTI1LDE0IEBAIHZvaWQgd2Via2l0RWRpdG9yU3RhdGVDaGFuZ2Vk
KFdlYktpdEVkaXRvclN0YXRlKiBlZGl0b3JTdGF0ZSwgY29uc3QgRWRpdG9yU3RhdGUmCiAgICAg
ICAgIHR5cGluZ0F0dHJpYnV0ZXMgfD0gV0VCS0lUX0VESVRPUl9UWVBJTkdfQVRUUklCVVRFX1VO
REVSTElORTsKICAgICBpZiAocG9zdExheW91dERhdGEudHlwaW5nQXR0cmlidXRlcyAmIEF0dHJp
YnV0ZVN0cmlrZVRocm91Z2gpCiAgICAgICAgIHR5cGluZ0F0dHJpYnV0ZXMgfD0gV0VCS0lUX0VE
SVRPUl9UWVBJTkdfQVRUUklCVVRFX1NUUklLRVRIUk9VR0g7Ci0jZW5kaWYKKwogICAgIHdlYmtp
dEVkaXRvclN0YXRlU2V0VHlwaW5nQXR0cmlidXRlcyhlZGl0b3JTdGF0ZSwgdHlwaW5nQXR0cmli
dXRlcyk7CisKKyAgICBlZGl0b3JTdGF0ZS0+cHJpdi0+aXNDdXRBdmFpbGFibGUgPSBwb3N0TGF5
b3V0RGF0YS5jYW5DdXQ7CisgICAgZWRpdG9yU3RhdGUtPnByaXYtPmlzQ29weUF2YWlsYWJsZSA9
IHBvc3RMYXlvdXREYXRhLmNhbkNvcHk7CisgICAgZWRpdG9yU3RhdGUtPnByaXYtPmlzUGFzdGVB
dmFpbGFibGUgPSBwb3N0TGF5b3V0RGF0YS5jYW5QYXN0ZTsKKyAgICBlZGl0b3JTdGF0ZS0+cHJp
di0+aXNVbmRvQXZhaWxhYmxlID0gcG9zdExheW91dERhdGEuY2FuVW5kbzsKKyAgICBlZGl0b3JT
dGF0ZS0+cHJpdi0+aXNSZWRvQXZhaWxhYmxlID0gcG9zdExheW91dERhdGEuY2FuUmVkbzsKIH0K
IAogLyoqCkBAIC0xNDYsMyArMTU2LDg3IEBAIGd1aW50IHdlYmtpdF9lZGl0b3Jfc3RhdGVfZ2V0
X3R5cGluZ19hdHRyaWJ1dGVzKFdlYktpdEVkaXRvclN0YXRlKiBlZGl0b3JTdGF0ZSkKICAgICBy
ZXR1cm4gZWRpdG9yU3RhdGUtPnByaXYtPnR5cGluZ0F0dHJpYnV0ZXM7CiB9CiAKKy8qKgorICog
d2Via2l0X2VkaXRvcl9zdGF0ZV9pc19jdXRfYXZhaWxhYmxlOgorICogQGVkaXRvcl9zdGF0ZTog
YSAjV2ViS2l0RWRpdG9yU3RhdGUKKyAqCisgKiBHZXRzIHdoZXRoZXIgYSBjdXQgY29tbWFuZCBj
YW4gYmUgaXNzdWVkLgorICoKKyAqIFJldHVybnM6ICVUUlVFIGlmIGN1dCBpcyBjdXJyZW50bHkg
YXZhaWxhYmxlCisgKgorICogU2luY2U6IDIuMjAKKyAqLworZ2Jvb2xlYW4gd2Via2l0X2VkaXRv
cl9zdGF0ZV9pc19jdXRfYXZhaWxhYmxlKFdlYktpdEVkaXRvclN0YXRlKiBlZGl0b3JTdGF0ZSkK
K3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfRURJVE9SX1NUQVRFKGVkaXRv
clN0YXRlKSwgRkFMU0UpOworCisgICAgcmV0dXJuIGVkaXRvclN0YXRlLT5wcml2LT5pc0N1dEF2
YWlsYWJsZTsKK30KKworLyoqCisgKiB3ZWJraXRfZWRpdG9yX3N0YXRlX2lzX2NvcHlfYXZhaWxh
YmxlOgorICogQGVkaXRvcl9zdGF0ZTogYSAjV2ViS2l0RWRpdG9yU3RhdGUKKyAqCisgKiBHZXRz
IHdoZXRoZXIgYSBjb3B5IGNvbW1hbmQgY2FuIGJlIGlzc3VlZC4KKyAqCisgKiBSZXR1cm5zOiAl
VFJVRSBpZiBjb3B5IGlzIGN1cnJlbnRseSBhdmFpbGFibGUKKyAqCisgKiBTaW5jZTogMi4yMAor
ICovCitnYm9vbGVhbiB3ZWJraXRfZWRpdG9yX3N0YXRlX2lzX2NvcHlfYXZhaWxhYmxlKFdlYktp
dEVkaXRvclN0YXRlKiBlZGl0b3JTdGF0ZSkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChX
RUJLSVRfSVNfRURJVE9SX1NUQVRFKGVkaXRvclN0YXRlKSwgRkFMU0UpOworCisgICAgcmV0dXJu
IGVkaXRvclN0YXRlLT5wcml2LT5pc0NvcHlBdmFpbGFibGU7Cit9CisKKy8qKgorICogd2Via2l0
X2VkaXRvcl9zdGF0ZV9pc19wYXN0ZV9hdmFpbGFibGU6CisgKiBAZWRpdG9yX3N0YXRlOiBhICNX
ZWJLaXRFZGl0b3JTdGF0ZQorICoKKyAqIEdldHMgd2hldGhlciBhIHBhc3RlIGNvbW1hbmQgY2Fu
IGJlIGlzc3VlZC4KKyAqCisgKiBSZXR1cm5zOiAlVFJVRSBpZiBwYXN0ZSBpcyBjdXJyZW50bHkg
YXZhaWxhYmxlCisgKgorICogU2luY2U6IDIuMjAKKyAqLworZ2Jvb2xlYW4gd2Via2l0X2VkaXRv
cl9zdGF0ZV9pc19wYXN0ZV9hdmFpbGFibGUoV2ViS2l0RWRpdG9yU3RhdGUqIGVkaXRvclN0YXRl
KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19FRElUT1JfU1RBVEUoZWRp
dG9yU3RhdGUpLCBGQUxTRSk7CisKKyAgICByZXR1cm4gZWRpdG9yU3RhdGUtPnByaXYtPmlzUGFz
dGVBdmFpbGFibGU7Cit9CisKKy8qKgorICogd2Via2l0X2VkaXRvcl9zdGF0ZV9pc191bmRvX2F2
YWlsYWJsZToKKyAqIEBlZGl0b3Jfc3RhdGU6IGEgI1dlYktpdEVkaXRvclN0YXRlCisgKgorICog
R2V0cyB3aGV0aGVyIGFuIHVuZG8gY29tbWFuZCBjYW4gYmUgaXNzdWVkLgorICoKKyAqIFJldHVy
bnM6ICVUUlVFIGlmIHVuZG8gaXMgY3VycmVudGx5IGF2YWlsYWJsZQorICoKKyAqIFNpbmNlOiAy
LjIwCisgKi8KK2dib29sZWFuIHdlYmtpdF9lZGl0b3Jfc3RhdGVfaXNfdW5kb19hdmFpbGFibGUo
V2ViS2l0RWRpdG9yU3RhdGUqIGVkaXRvclN0YXRlKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsKFdFQktJVF9JU19FRElUT1JfU1RBVEUoZWRpdG9yU3RhdGUpLCBGQUxTRSk7CisKKyAgICBy
ZXR1cm4gZWRpdG9yU3RhdGUtPnByaXYtPmlzVW5kb0F2YWlsYWJsZTsKK30KKworLyoqCisgKiB3
ZWJraXRfZWRpdG9yX3N0YXRlX2lzX3JlZG9fYXZhaWxhYmxlOgorICogQGVkaXRvcl9zdGF0ZTog
YSAjV2ViS2l0RWRpdG9yU3RhdGUKKyAqCisgKiBHZXRzIHdoZXRoZXIgYSByZWRvIGNvbW1hbmQg
Y2FuIGJlIGlzc3VlZC4KKyAqCisgKiBSZXR1cm5zOiAlVFJVRSBpZiByZWRvIGlzIGN1cnJlbnRs
eSBhdmFpbGFibGUKKyAqCisgKiBTaW5jZTogMi4yMAorICovCitnYm9vbGVhbiB3ZWJraXRfZWRp
dG9yX3N0YXRlX2lzX3JlZG9fYXZhaWxhYmxlKFdlYktpdEVkaXRvclN0YXRlKiBlZGl0b3JTdGF0
ZSkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfRURJVE9SX1NUQVRFKGVk
aXRvclN0YXRlKSwgRkFMU0UpOworCisgICAgcmV0dXJuIGVkaXRvclN0YXRlLT5wcml2LT5pc1Jl
ZG9BdmFpbGFibGU7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRXZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdFdlYlZpZXcuY3BwCmluZGV4IDFkNmEzYWI0NGFhZjJlY2U5NDJlYjI0MDNkMzVkYjdk
NzAwZmJlNTMuLjc5YjkwZDAyMGQ4ZjlhN2IxYTg2ZmNlZmM4NzZkZWM3MjYzYzRjZWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3Bw
CkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiV2ViS2l0Q29udGV4dE1lbnVJdGVtUHJpdmF0
ZS5oIgogI2luY2x1ZGUgIldlYktpdENvbnRleHRNZW51UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldl
YktpdERvd25sb2FkUHJpdmF0ZS5oIgorI2luY2x1ZGUgIldlYktpdEVkaXRpbmdDb21tYW5kcy5o
IgogI2luY2x1ZGUgIldlYktpdEVkaXRvclN0YXRlUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktp
dEVudW1UeXBlcy5oIgogI2luY2x1ZGUgIldlYktpdEVycm9yLmgiCkBAIC0zMDg3LDkgKzMwODgs
MjMgQEAgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2FuX2V4ZWN1dGVfZWRpdGluZ19jb21tYW5kKFdl
YktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IGMKICAgICBnX3JldHVybl9pZl9mYWlsKGNvbW1h
bmQpOwogCiAgICAgR1Rhc2sqIHRhc2sgPSBnX3Rhc2tfbmV3KHdlYlZpZXcsIGNhbmNlbGxhYmxl
LCBjYWxsYmFjaywgdXNlckRhdGEpOwotICAgIGdldFBhZ2Uod2ViVmlldykudmFsaWRhdGVDb21t
YW5kKFN0cmluZzo6ZnJvbVVURjgoY29tbWFuZCksIFt0YXNrXShjb25zdCBTdHJpbmcmLCBib29s
IGlzRW5hYmxlZCwgaW50MzJfdCwgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKSB7Ci0gICAg
ICAgIGdfdGFza19yZXR1cm5fYm9vbGVhbihhZG9wdEdSZWYodGFzaykuZ2V0KCksIGlzRW5hYmxl
ZCk7ICAgICAgICAKLSAgICB9KTsKKyAgICBXZWJLaXRFZGl0b3JTdGF0ZSogc3RhdGUgPSB3ZWJr
aXRfd2ViX3ZpZXdfZ2V0X2VkaXRvcl9zdGF0ZSh3ZWJWaWV3KTsKKworICAgIGlmICghc3RyY21w
KGNvbW1hbmQsIFdFQktJVF9FRElUSU5HX0NPTU1BTkRfQ1VUKSkKKyAgICAgICAgZ190YXNrX3Jl
dHVybl9ib29sZWFuKGFkb3B0R1JlZih0YXNrKS5nZXQoKSwgd2Via2l0X2VkaXRvcl9zdGF0ZV9p
c19jdXRfYXZhaWxhYmxlKHN0YXRlKSk7CisgICAgZWxzZSBpZiAoIXN0cmNtcChjb21tYW5kLCBX
RUJLSVRfRURJVElOR19DT01NQU5EX0NPUFkpKQorICAgICAgICBnX3Rhc2tfcmV0dXJuX2Jvb2xl
YW4oYWRvcHRHUmVmKHRhc2spLmdldCgpLCB3ZWJraXRfZWRpdG9yX3N0YXRlX2lzX2NvcHlfYXZh
aWxhYmxlKHN0YXRlKSk7CisgICAgZWxzZSBpZiAoIXN0cmNtcChjb21tYW5kLCBXRUJLSVRfRURJ
VElOR19DT01NQU5EX1BBU1RFKSkKKyAgICAgICAgZ190YXNrX3JldHVybl9ib29sZWFuKGFkb3B0
R1JlZih0YXNrKS5nZXQoKSwgd2Via2l0X2VkaXRvcl9zdGF0ZV9pc19wYXN0ZV9hdmFpbGFibGUo
c3RhdGUpKTsKKyAgICBlbHNlIGlmICghc3RyY21wKGNvbW1hbmQsIFdFQktJVF9FRElUSU5HX0NP
TU1BTkRfVU5ETykpCisgICAgICAgIGdfdGFza19yZXR1cm5fYm9vbGVhbihhZG9wdEdSZWYodGFz
aykuZ2V0KCksIHdlYmtpdF9lZGl0b3Jfc3RhdGVfaXNfdW5kb19hdmFpbGFibGUoc3RhdGUpKTsK
KyAgICBlbHNlIGlmICghc3RyY21wKGNvbW1hbmQsIFdFQktJVF9FRElUSU5HX0NPTU1BTkRfUkVE
TykpCisgICAgICAgIGdfdGFza19yZXR1cm5fYm9vbGVhbihhZG9wdEdSZWYodGFzaykuZ2V0KCks
IHdlYmtpdF9lZGl0b3Jfc3RhdGVfaXNfcmVkb19hdmFpbGFibGUoc3RhdGUpKTsKKyAgICBlbHNl
IHsKKyAgICAgICAgZ2V0UGFnZSh3ZWJWaWV3KS52YWxpZGF0ZUNvbW1hbmQoU3RyaW5nOjpmcm9t
VVRGOChjb21tYW5kKSwgW3Rhc2tdKGNvbnN0IFN0cmluZyYsIGJvb2wgaXNFbmFibGVkLCBpbnQz
Ml90LCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IpIHsKKyAgICAgICAgICAgIGdfdGFza19y
ZXR1cm5fYm9vbGVhbihhZG9wdEdSZWYodGFzaykuZ2V0KCksIGlzRW5hYmxlZCk7ICAgICAgICAK
KyAgICAgICAgfSk7CisgICAgfQogfQogCiAvKioKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RWRpdG9yU3RhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0RWRpdG9yU3RhdGUuaAppbmRleCA4YTQ3NzU1ZjBjMWJkZDBh
ZDcxZDEyYTkzZGJhYWVhZWRiMzgwYjNjLi43MDE0MDUzZTIxNmE1YjQ4MDI5ODQ0MzZhYWUwYTE3
N2Y3MzQwNzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdEVkaXRvclN0YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRFZGl0b3JTdGF0ZS5oCkBAIC04Miw2ICs4MiwyMSBAQCB3ZWJraXRfZWRpdG9yX3N0YXRl
X2dldF90eXBlICAgICAgICAgICAgICAodm9pZCk7CiBXRUJLSVRfQVBJIGd1aW50CiB3ZWJraXRf
ZWRpdG9yX3N0YXRlX2dldF90eXBpbmdfYXR0cmlidXRlcyAoV2ViS2l0RWRpdG9yU3RhdGUgKmVk
aXRvcl9zdGF0ZSk7CiAKK1dFQktJVF9BUEkgZ2Jvb2xlYW4KK3dlYmtpdF9lZGl0b3Jfc3RhdGVf
aXNfY3V0X2F2YWlsYWJsZSAgICAgIChXZWJLaXRFZGl0b3JTdGF0ZSAqZWRpdG9yX3N0YXRlKTsK
KworV0VCS0lUX0FQSSBnYm9vbGVhbgord2Via2l0X2VkaXRvcl9zdGF0ZV9pc19jb3B5X2F2YWls
YWJsZSAgICAgKFdlYktpdEVkaXRvclN0YXRlICplZGl0b3Jfc3RhdGUpOworCitXRUJLSVRfQVBJ
IGdib29sZWFuCit3ZWJraXRfZWRpdG9yX3N0YXRlX2lzX3Bhc3RlX2F2YWlsYWJsZSAgICAoV2Vi
S2l0RWRpdG9yU3RhdGUgKmVkaXRvcl9zdGF0ZSk7CisKK1dFQktJVF9BUEkgZ2Jvb2xlYW4KK3dl
YmtpdF9lZGl0b3Jfc3RhdGVfaXNfdW5kb19hdmFpbGFibGUgICAgIChXZWJLaXRFZGl0b3JTdGF0
ZSAqZWRpdG9yX3N0YXRlKTsKKworV0VCS0lUX0FQSSBnYm9vbGVhbgord2Via2l0X2VkaXRvcl9z
dGF0ZV9pc19yZWRvX2F2YWlsYWJsZSAgICAgKFdlYktpdEVkaXRvclN0YXRlICplZGl0b3Jfc3Rh
dGUpOworCiBHX0VORF9ERUNMUwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMu
dHh0CmluZGV4IDNmN2Q4MjhlNWQ3MzRiMjk5ZDAzOTM0ODRlMDBmNTQ5M2NiNjVmZDMuLjM2ZjRm
ZjNkMjc1NmUyYThiYzhlOGY5MzNiNTEwYTU3YmNmNWFhZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4w
LXNlY3Rpb25zLnR4dApAQCAtODIzLDYgKzgyMywxMSBAQCB3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0
X2dldF90eXBlCiBXZWJLaXRFZGl0b3JTdGF0ZQogV2ViS2l0RWRpdG9yVHlwaW5nQXR0cmlidXRl
cwogd2Via2l0X2VkaXRvcl9zdGF0ZV9nZXRfdHlwaW5nX2F0dHJpYnV0ZXMKK3dlYmtpdF9lZGl0
b3Jfc3RhdGVfaXNfY3V0X2F2YWlsYWJsZQord2Via2l0X2VkaXRvcl9zdGF0ZV9pc19jb3B5X2F2
YWlsYWJsZQord2Via2l0X2VkaXRvcl9zdGF0ZV9pc19wYXN0ZV9hdmFpbGFibGUKK3dlYmtpdF9l
ZGl0b3Jfc3RhdGVfaXNfdW5kb19hdmFpbGFibGUKK3dlYmtpdF9lZGl0b3Jfc3RhdGVfaXNfcmVk
b19hdmFpbGFibGUKIAogPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CiBXZWJLaXRFZGl0b3JTdGF0ZUNs
YXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdEVk
aXRvclN0YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdEVkaXRv
clN0YXRlLmgKaW5kZXggOGNmNjU5NWMwMGFlMzk4MjMyNGY0MTdhNGM5MjFlZjFhYjQyZjIwZi4u
ZjllN2M3ZGVhYjQwZTY2YjNlNzY5Yjc4MjBmMmRiNGYwOWM1NGRiZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRFZGl0b3JTdGF0ZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0RWRpdG9yU3RhdGUuaApAQCAtODIs
NiArODIsMjEgQEAgd2Via2l0X2VkaXRvcl9zdGF0ZV9nZXRfdHlwZSAgICAgICAgICAgICAgKHZv
aWQpOwogV0VCS0lUX0FQSSBndWludAogd2Via2l0X2VkaXRvcl9zdGF0ZV9nZXRfdHlwaW5nX2F0
dHJpYnV0ZXMgKFdlYktpdEVkaXRvclN0YXRlICplZGl0b3Jfc3RhdGUpOwogCitXRUJLSVRfQVBJ
IGdib29sZWFuCit3ZWJraXRfZWRpdG9yX3N0YXRlX2lzX2N1dF9hdmFpbGFibGUgICAgICAoV2Vi
S2l0RWRpdG9yU3RhdGUgKmVkaXRvcl9zdGF0ZSk7CisKK1dFQktJVF9BUEkgZ2Jvb2xlYW4KK3dl
YmtpdF9lZGl0b3Jfc3RhdGVfaXNfY29weV9hdmFpbGFibGUgICAgIChXZWJLaXRFZGl0b3JTdGF0
ZSAqZWRpdG9yX3N0YXRlKTsKKworV0VCS0lUX0FQSSBnYm9vbGVhbgord2Via2l0X2VkaXRvcl9z
dGF0ZV9pc19wYXN0ZV9hdmFpbGFibGUgICAgKFdlYktpdEVkaXRvclN0YXRlICplZGl0b3Jfc3Rh
dGUpOworCitXRUJLSVRfQVBJIGdib29sZWFuCit3ZWJraXRfZWRpdG9yX3N0YXRlX2lzX3VuZG9f
YXZhaWxhYmxlICAgICAoV2ViS2l0RWRpdG9yU3RhdGUgKmVkaXRvcl9zdGF0ZSk7CisKK1dFQktJ
VF9BUEkgZ2Jvb2xlYW4KK3dlYmtpdF9lZGl0b3Jfc3RhdGVfaXNfcmVkb19hdmFpbGFibGUgICAg
IChXZWJLaXRFZGl0b3JTdGF0ZSAqZWRpdG9yX3N0YXRlKTsKKwogR19FTkRfREVDTFMKIAogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4
IDJmMzg3NmQ2OTRlNjRmM2ZiYTRiMTJjMGI0OTJjOGJiNjVjMDNlYTEuLmMyZTM1ZTUwNDg1Zjc0
NWJmMjBhN2Y5NDliMTgxNjFhOWYxYzBkZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC04NDcsMjAgKzg0NywyNyBAQCBFZGl0b3JTdGF0ZSBX
ZWJQYWdlOjplZGl0b3JTdGF0ZShJbmNsdWRlUG9zdExheW91dERhdGFIaW50IHNob3VsZEluY2x1
ZGVQb3N0TGF5bwogICAgIH0KIAogICAgIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlv
biA9IGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOworICAgIGNvbnN0IEVkaXRvciYgZWRp
dG9yID0gZnJhbWUuZWRpdG9yKCk7CiAKICAgICByZXN1bHQuc2VsZWN0aW9uSXNOb25lID0gc2Vs
ZWN0aW9uLmlzTm9uZSgpOwogICAgIHJlc3VsdC5zZWxlY3Rpb25Jc1JhbmdlID0gc2VsZWN0aW9u
LmlzUmFuZ2UoKTsKICAgICByZXN1bHQuaXNDb250ZW50RWRpdGFibGUgPSBzZWxlY3Rpb24uaXND
b250ZW50RWRpdGFibGUoKTsKICAgICByZXN1bHQuaXNDb250ZW50UmljaGx5RWRpdGFibGUgPSBz
ZWxlY3Rpb24uaXNDb250ZW50UmljaGx5RWRpdGFibGUoKTsKICAgICByZXN1bHQuaXNJblBhc3N3
b3JkRmllbGQgPSBzZWxlY3Rpb24uaXNJblBhc3N3b3JkRmllbGQoKTsKLSAgICByZXN1bHQuaGFz
Q29tcG9zaXRpb24gPSBmcmFtZS5lZGl0b3IoKS5oYXNDb21wb3NpdGlvbigpOwotICAgIHJlc3Vs
dC5zaG91bGRJZ25vcmVTZWxlY3Rpb25DaGFuZ2VzID0gZnJhbWUuZWRpdG9yKCkuaWdub3JlU2Vs
ZWN0aW9uQ2hhbmdlcygpOworICAgIHJlc3VsdC5oYXNDb21wb3NpdGlvbiA9IGVkaXRvci5oYXND
b21wb3NpdGlvbigpOworICAgIHJlc3VsdC5zaG91bGRJZ25vcmVTZWxlY3Rpb25DaGFuZ2VzID0g
ZWRpdG9yLmlnbm9yZVNlbGVjdGlvbkNoYW5nZXMoKTsKIAotI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgIGJvb2wgY2FuSW5jbHVkZVBvc3RMYXlvdXREYXRhID0gZnJhbWUudmlldygpICYmICFmcmFt
ZS52aWV3KCktPm5lZWRzTGF5b3V0KCk7Ci0gICAgaWYgKHNob3VsZEluY2x1ZGVQb3N0TGF5b3V0
RGF0YSA9PSBJbmNsdWRlUG9zdExheW91dERhdGFIaW50OjpZZXMgJiYgY2FuSW5jbHVkZVBvc3RM
YXlvdXREYXRhICYmIHJlc3VsdC5pc0NvbnRlbnRFZGl0YWJsZSkgeworICAgIGlmIChzaG91bGRJ
bmNsdWRlUG9zdExheW91dERhdGEgPT0gSW5jbHVkZVBvc3RMYXlvdXREYXRhSGludDo6WWVzICYm
IGNhbkluY2x1ZGVQb3N0TGF5b3V0RGF0YSkgewogICAgICAgICBhdXRvJiBwb3N0TGF5b3V0RGF0
YSA9IHJlc3VsdC5wb3N0TGF5b3V0RGF0YSgpOwotICAgICAgICBpZiAoIXNlbGVjdGlvbi5pc05v
bmUoKSkgeworICAgICAgICBwb3N0TGF5b3V0RGF0YS5jYW5DdXQgPSBlZGl0b3IuY2FuQ3V0KCk7
CisgICAgICAgIHBvc3RMYXlvdXREYXRhLmNhbkNvcHkgPSBlZGl0b3IuY2FuQ29weSgpOworICAg
ICAgICBwb3N0TGF5b3V0RGF0YS5jYW5QYXN0ZSA9IGVkaXRvci5jYW5QYXN0ZSgpOworICAgICAg
ICBwb3N0TGF5b3V0RGF0YS5jYW5VbmRvID0gZWRpdG9yLmNhblVuZG8oKTsKKyAgICAgICAgcG9z
dExheW91dERhdGEuY2FuUmVkbyA9IGVkaXRvci5jYW5SZWRvKCk7CisKKyNpZiBQTEFURk9STShD
T0NPQSkKKyAgICAgICAgaWYgKHJlc3VsdC5pc0NvbnRlbnRFZGl0YWJsZSAmJiAhc2VsZWN0aW9u
LmlzTm9uZSgpKSB7CiAgICAgICAgICAgICBpZiAoYXV0byBlZGl0aW5nU3R5bGUgPSBFZGl0aW5n
U3R5bGU6OnN0eWxlQXRTZWxlY3Rpb25TdGFydChzZWxlY3Rpb24pKSB7CiAgICAgICAgICAgICAg
ICAgaWYgKGVkaXRpbmdTdHlsZS0+aGFzU3R5bGUoQ1NTUHJvcGVydHlGb250V2VpZ2h0LCAiYm9s
ZCIpKQogICAgICAgICAgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS50eXBpbmdBdHRyaWJ1dGVz
IHw9IEF0dHJpYnV0ZUJvbGQ7CkBAIC05MTIsOCArOTE5LDggQEAgRWRpdG9yU3RhdGUgV2ViUGFn
ZTo6ZWRpdG9yU3RhdGUoSW5jbHVkZVBvc3RMYXlvdXREYXRhSGludCBzaG91bGRJbmNsdWRlUG9z
dExheW8KICAgICAgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KLSAgICB9CiAjZW5kaWYKKyAgICB9CiAKICAgICBwbGF0Zm9ybUVk
aXRvclN0YXRlKGZyYW1lLCByZXN1bHQsIHNob3VsZEluY2x1ZGVQb3N0TGF5b3V0RGF0YSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdl
TWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMu
bW0KaW5kZXggMWE3OTRkMTAxMmQ2YTc2ZThmMmM2MzAwYjg4NDc2M2RlNjYzYmZhMC4uNmE0NGEz
NmM5NTdiNmRhMjI1MDkyZjA4YTQ2YjYwZDcwMDNjZjE3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KQEAgLTEwNzksNyArMTA3
OSw2IEBAIHZvaWQgV2ViUGFnZTo6cGVyZm9ybUltbWVkaWF0ZUFjdGlvbkhpdFRlc3RBdExvY2F0
aW9uKFdlYkNvcmU6OkZsb2F0UG9pbnQgbG9jYXRpCiAgICAgICAgICAgICAgICAgaW1tZWRpYXRl
QWN0aW9uUmVzdWx0Lmxvb2t1cFRleHQgPSBzZWxlY3RlZFRleHQ7CiAgICAgICAgICAgICAgICAg
aW1tZWRpYXRlQWN0aW9uUmVzdWx0LmlzVGV4dE5vZGUgPSB0cnVlOwogICAgICAgICAgICAgICAg
IGltbWVkaWF0ZUFjdGlvblJlc3VsdC5pc1NlbGVjdGVkID0gdHJ1ZTsKLSAgICAgICAgICAgICAg
ICBpbW1lZGlhdGVBY3Rpb25SZXN1bHQuYWxsb3dzQ29weSA9IHRydWU7CiAKICAgICAgICAgICAg
ICAgICBpbW1lZGlhdGVBY3Rpb25SZXN1bHQuZGljdGlvbmFyeVBvcHVwSW5mbyA9IGRpY3Rpb25h
cnlQb3B1cEluZm9Gb3JTZWxlY3Rpb25JblBERlBsdWdpbihzZWxlY3Rpb24sICpwZGZQdWdpbiwg
Jm9wdGlvbnMsIFRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uOjpGYWRlSW4pOwog
ICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdl
TG9nCmluZGV4IDg3NmYxOTI0NjVhZmI2OWYyOGYxYTEzNmQwNTdmZmUxNDhkZGYzNDYuLmM3ZjQy
MWU2MjVlZDZlYzAyMGI4N2EzY2VmNTA2OTMwMGU3OTMyZTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxNy0xMC0y
NiAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CisKKyAgICAgICAg
W1dQRV1bR1RLXSBFeHBvc2UgYXZhaWxhYmlsaXR5IG9mIGNlcnRhaW4gZWRpdGluZyBjb21tYW5k
cyBpbiBXZWJLaXRFZGl0b3JTdGF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTY4MjE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGVzdCBpdC4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0R3RrL1Rlc3RXZWJWaWV3RWRpdG9yLmNwcDoKKyAgICAgICAgKHRlc3RXZWJWaWV3RWRp
dG9yQ3V0Q29weVBhc3RlTm9uRWRpdGFibGUpOgorICAgICAgICAodGVzdFdlYlZpZXdFZGl0b3JD
dXRDb3B5UGFzdGVFZGl0YWJsZSk6CisgICAgICAgICh0ZXN0V2ViVmlld0VkaXRvclNlbGVjdEFs
bE5vbkVkaXRhYmxlKToKKyAgICAgICAgKHRlc3RXZWJWaWV3RWRpdG9yU2VsZWN0QWxsRWRpdGFi
bGUpOgorICAgICAgICAobG9hZENvbnRlbnRzQW5kVHJ5VG9DdXRTZWxlY3Rpb24pOgorICAgICAg
ICAodGVzdFdlYlZpZXdFZGl0b3JOb25FZGl0YWJsZSk6CisgICAgICAgICh0ZXN0V2ViVmlld0Vk
aXRvckVkaXRvclN0YXRlVHlwaW5nQXR0cmlidXRlcyk6CisgICAgICAgICh0ZXN0V2ViVmlld0Vk
aXRvckluc2VydEltYWdlKToKKyAgICAgICAgKHRlc3RXZWJWaWV3RWRpdG9yQ3JlYXRlTGluayk6
CisKIDIwMTctMTAtMjUgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgW01lZGlhU3RyZWFtXSBDbGVhciBjYWNoZWQgZ1VNIHByb21wdCBzdGF0ZQpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvVGVzdFdlYlZpZXdF
ZGl0b3IuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvVGVzdFdlYlZp
ZXdFZGl0b3IuY3BwCmluZGV4IDc2ZmI2Y2VhMGUyZDg4NjM1ODdmMmYyMDZjYmI5YzA4OTU3OGM2
NzUuLjg2MmEyNGQ3ZDA0ZWUwY2JkZDg5NzcyOTEwNTQxNjRiNTExMTQ1MzEgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL1Rlc3RXZWJWaWV3RWRpdG9yLmNw
cAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9UZXN0V2ViVmlld0Vk
aXRvci5jcHAKQEAgLTM3LDYgKzM3LDI3IEBAIHB1YmxpYzoKICAgICAgICAgZ3RrX2NsaXBib2Fy
ZF9jbGVhcihtX2NsaXBib2FyZCk7CiAgICAgfQogCisgICAgc3RhdGljIGdib29sZWFuIHdlYlZp
ZXdEcmF3Q2FsbGJhY2soR01haW5Mb29wKiBtYWluTG9vcCkKKyAgICB7CisgICAgICAgIGdfbWFp
bl9sb29wX3F1aXQobWFpbkxvb3ApOworICAgICAgICByZXR1cm4gR19TT1VSQ0VfUkVNT1ZFOwor
ICAgIH0KKworICAgIHZvaWQgZmx1c2hFZGl0b3JTdGF0ZSgpCisgICAgeworICAgICAgICAvLyBG
SVhNRTogSXQgd291bGQgYmUgYmV0dGVyIHRvIGNhbGwgV2ViVmlld1Rlc3Q6OnNob3dJbldpbmRv
d0FuZFdhaXRVbnRpbE1hcHBlZAorICAgICAgICAvLyBhdCB0aGUgc3RhcnQgb2YgdGhlIHRlc3Qs
IHJhdGhlciB0aGFuIGNyZWF0aW5nIGFuZCBkZXN0cm95aW5nIHRlbXBvcmFyeSB3aW5kb3dzLgor
ICAgICAgICBzaG93SW5XaW5kb3coR1RLX1dJTkRPV19UT1BMRVZFTCk7CisKKyAgICAgICAgZ19z
aWduYWxfY29ubmVjdF9zd2FwcGVkKG1fd2ViVmlldywgImRyYXciLCBHX0NBTExCQUNLKHdlYlZp
ZXdEcmF3Q2FsbGJhY2spLCBtX21haW5Mb29wKTsKKyAgICAgICAgZ3RrX3dpZGdldF9xdWV1ZV9k
cmF3KEdUS19XSURHRVQobV93ZWJWaWV3KSk7CisgICAgICAgIGdfbWFpbl9sb29wX3J1bihtX21h
aW5Mb29wKTsKKworICAgICAgICBndGtfY29udGFpbmVyX3JlbW92ZShHVEtfQ09OVEFJTkVSKG1f
cGFyZW50V2luZG93KSwgR1RLX1dJREdFVChtX3dlYlZpZXcpKTsKKyAgICAgICAgZ3RrX3dpZGdl
dF9kZXN0cm95KG1fcGFyZW50V2luZG93KTsKKyAgICAgICAgbV9wYXJlbnRXaW5kb3cgPSBudWxs
cHRyOworICAgIH0KKwogICAgIHN0YXRpYyB2b2lkIGNhbkV4ZWN1dGVFZGl0aW5nQ29tbWFuZFJl
YWR5Q2FsbGJhY2soR09iamVjdCosIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBFZGl0b3JUZXN0KiB0
ZXN0KQogICAgIHsKICAgICAgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwpAQCAtNTAs
NiArNzEsMjAgQEAgcHVibGljOgogICAgICAgICBtX2NhbkV4ZWN1dGVFZGl0aW5nQ29tbWFuZCA9
IGZhbHNlOwogICAgICAgICB3ZWJraXRfd2ViX3ZpZXdfY2FuX2V4ZWN1dGVfZWRpdGluZ19jb21t
YW5kKG1fd2ViVmlldywgY29tbWFuZCwgMCwgcmVpbnRlcnByZXRfY2FzdDxHQXN5bmNSZWFkeUNh
bGxiYWNrPihjYW5FeGVjdXRlRWRpdGluZ0NvbW1hbmRSZWFkeUNhbGxiYWNrKSwgdGhpcyk7CiAg
ICAgICAgIGdfbWFpbl9sb29wX3J1bihtX21haW5Mb29wKTsKKworICAgICAgICBpZiAoIXN0cmNt
cChjb21tYW5kLCBXRUJLSVRfRURJVElOR19DT01NQU5EX0NVVCkpCisgICAgICAgICAgICBnX2Fz
c2VydChtX2NhbkV4ZWN1dGVFZGl0aW5nQ29tbWFuZCA9PSB3ZWJraXRfZWRpdG9yX3N0YXRlX2lz
X2N1dF9hdmFpbGFibGUoZWRpdG9yU3RhdGUoKSkpOworICAgICAgICBlbHNlIGlmICghc3RyY21w
KGNvbW1hbmQsIFdFQktJVF9FRElUSU5HX0NPTU1BTkRfQ09QWSkpCisgICAgICAgICAgICBnX2Fz
c2VydChtX2NhbkV4ZWN1dGVFZGl0aW5nQ29tbWFuZCA9PSB3ZWJraXRfZWRpdG9yX3N0YXRlX2lz
X2NvcHlfYXZhaWxhYmxlKGVkaXRvclN0YXRlKCkpKTsKKyAgICAgICAgZWxzZSBpZiAoIXN0cmNt
cChjb21tYW5kLCBXRUJLSVRfRURJVElOR19DT01NQU5EX1BBU1RFKSkKKyAgICAgICAgICAgIGdf
YXNzZXJ0KG1fY2FuRXhlY3V0ZUVkaXRpbmdDb21tYW5kID09IHdlYmtpdF9lZGl0b3Jfc3RhdGVf
aXNfcGFzdGVfYXZhaWxhYmxlKGVkaXRvclN0YXRlKCkpKTsKKyAgICAgICAgLy8gRklYTUU6IEZp
Z3VyZSBvdXQgaG93IHRvIGFkZCB0ZXN0cyBmb3IgdW5kbyBhbmQgcmVkby4gSXQgd2lsbCBwcm9i
YWJseSByZXF1aXJlIHVzaW5nIHVzZXIKKyAgICAgICAgLy8gc2NyaXB0cyB0byBtZXNzYWdlIHRo
ZSBVSSBwcm9jZXNzIHdoZW4gdGhlIGNvbnRlbnQgaGFzIGJlZW4gYWx0ZXJlZC4KKyAgICAgICAg
ZWxzZSBpZiAoIXN0cmNtcChjb21tYW5kLCBXRUJLSVRfRURJVElOR19DT01NQU5EX1VORE8pKQor
ICAgICAgICAgICAgZ19hc3NlcnQobV9jYW5FeGVjdXRlRWRpdGluZ0NvbW1hbmQgPT0gd2Via2l0
X2VkaXRvcl9zdGF0ZV9pc191bmRvX2F2YWlsYWJsZShlZGl0b3JTdGF0ZSgpKSk7CisgICAgICAg
IGVsc2UgaWYgKCFzdHJjbXAoY29tbWFuZCwgV0VCS0lUX0VESVRJTkdfQ09NTUFORF9SRURPKSkK
KyAgICAgICAgICAgIGdfYXNzZXJ0KG1fY2FuRXhlY3V0ZUVkaXRpbmdDb21tYW5kID09IHdlYmtp
dF9lZGl0b3Jfc3RhdGVfaXNfcmVkb19hdmFpbGFibGUoZWRpdG9yU3RhdGUoKSkpOworCiAgICAg
ICAgIHJldHVybiBtX2NhbkV4ZWN1dGVFZGl0aW5nQ29tbWFuZDsKICAgICB9CiAKQEAgLTE0MCw2
ICsxNzUsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0VkaXRvckN1dENvcHlQYXN0ZU5vbkVk
aXRhYmxlKEVkaXRvclRlc3QqIHRlc3QsIGdjb25zdHBvaQogICAgIEdVbmlxdWVQdHI8Y2hhcj4g
c2VsZWN0ZWRTcGFuSFRNTChnX3N0cmR1cF9wcmludGYoc2VsZWN0ZWRTcGFuSFRNTEZvcm1hdCwg
ImZhbHNlIikpOwogICAgIHRlc3QtPmxvYWRIdG1sKHNlbGVjdGVkU3BhbkhUTUwuZ2V0KCksIG51
bGxwdHIpOwogICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworICAgIHRlc3QtPmZs
dXNoRWRpdG9yU3RhdGUoKTsKIAogICAgIGdfYXNzZXJ0KHRlc3QtPmNhbkV4ZWN1dGVFZGl0aW5n
Q29tbWFuZChXRUJLSVRfRURJVElOR19DT01NQU5EX0NPUFkpKTsKICAgICAvLyBJdCdzIG5vdCBw
b3NzaWJsZSB0byBjdXQgYW5kIHBhc3RlIHdoZW4gY29udGVudCBpcyBub3QgZWRpdGFibGUKQEAg
LTE2Niw2ICsyMDIsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0VkaXRvckN1dENvcHlQYXN0
ZUVkaXRhYmxlKEVkaXRvclRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZQogICAgIEdVbmlxdWVQdHI8
Y2hhcj4gc2VsZWN0ZWRTcGFuSFRNTChnX3N0cmR1cF9wcmludGYoc2VsZWN0ZWRTcGFuSFRNTEZv
cm1hdCwgImZhbHNlIikpOwogICAgIHRlc3QtPmxvYWRIdG1sKHNlbGVjdGVkU3BhbkhUTUwuZ2V0
KCksIG51bGxwdHIpOwogICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworICAgIHRl
c3QtPmZsdXNoRWRpdG9yU3RhdGUoKTsKIAogICAgIC8vIFRoZXJlJ3MgYSBzZWxlY3Rpb24uCiAg
ICAgZ19hc3NlcnQodGVzdC0+Y2FuRXhlY3V0ZUVkaXRpbmdDb21tYW5kKFdFQktJVF9FRElUSU5H
X0NPTU1BTkRfQ1VUKSk7CkBAIC0xODQsNiArMjIxLDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZp
ZXdFZGl0b3JTZWxlY3RBbGxOb25FZGl0YWJsZShFZGl0b3JUZXN0KiB0ZXN0LCBnY29uc3Rwb2lu
dGUKICAgICBHVW5pcXVlUHRyPGNoYXI+IHNlbGVjdGVkU3BhbkhUTUwoZ19zdHJkdXBfcHJpbnRm
KHNlbGVjdGVkU3BhbkhUTUxGb3JtYXQsICJmYWxzZSIpKTsKICAgICB0ZXN0LT5sb2FkSHRtbChz
ZWxlY3RlZFNwYW5IVE1MLmdldCgpLCBudWxscHRyKTsKICAgICB0ZXN0LT53YWl0VW50aWxMb2Fk
RmluaXNoZWQoKTsKKyAgICB0ZXN0LT5mbHVzaEVkaXRvclN0YXRlKCk7CiAKICAgICBnX2Fzc2Vy
dCh0ZXN0LT5jYW5FeGVjdXRlRWRpdGluZ0NvbW1hbmQoV0VCS0lUX0VESVRJTkdfQ09NTUFORF9T
RUxFQ1RfQUxMKSk7CiAKQEAgLTIxMiw2ICsyNTAsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmll
d0VkaXRvclNlbGVjdEFsbEVkaXRhYmxlKEVkaXRvclRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIp
CiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBzZWxlY3RlZFNwYW5IVE1MKGdfc3RyZHVwX3ByaW50Zihz
ZWxlY3RlZFNwYW5IVE1MRm9ybWF0LCAiZmFsc2UiKSk7CiAgICAgdGVzdC0+bG9hZEh0bWwoc2Vs
ZWN0ZWRTcGFuSFRNTC5nZXQoKSwgbnVsbHB0cik7CiAgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZp
bmlzaGVkKCk7CisgICAgdGVzdC0+Zmx1c2hFZGl0b3JTdGF0ZSgpOwogCiAgICAgZ19hc3NlcnQo
dGVzdC0+Y2FuRXhlY3V0ZUVkaXRpbmdDb21tYW5kKFdFQktJVF9FRElUSU5HX0NPTU1BTkRfU0VM
RUNUX0FMTCkpOwogCkBAIC0yMzcsMTEgKzI3NiwxNCBAQCBzdGF0aWMgdm9pZCBsb2FkQ29udGVu
dHNBbmRUcnlUb0N1dFNlbGVjdGlvbihFZGl0b3JUZXN0KiB0ZXN0LCBib29sIGNvbnRlbnRFZGl0
YQogICAgIEdVbmlxdWVQdHI8Y2hhcj4gc2VsZWN0ZWRTcGFuSFRNTChnX3N0cmR1cF9wcmludGYo
c2VsZWN0ZWRTcGFuSFRNTEZvcm1hdCwgY29udGVudEVkaXRhYmxlID8gInRydWUiIDogImZhbHNl
IikpOwogICAgIHRlc3QtPmxvYWRIdG1sKHNlbGVjdGVkU3BhbkhUTUwuZ2V0KCksIG51bGxwdHIp
OwogICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworICAgIHRlc3QtPmZsdXNoRWRp
dG9yU3RhdGUoKTsKIAogICAgIGdfYXNzZXJ0KCF0ZXN0LT5pc0VkaXRhYmxlKCkpOwogICAgIHRl
c3QtPnNldEVkaXRhYmxlKHRydWUpOwogICAgIGdfYXNzZXJ0KHRlc3QtPmlzRWRpdGFibGUoKSk7
CiAKKyAgICB0ZXN0LT5mbHVzaEVkaXRvclN0YXRlKCk7CisKICAgICAvLyBDdXQgdGhlIHNlbGVj
dGlvbiB0byB0aGUgY2xpcGJvYXJkIHRvIHNlZSBpZiB0aGUgdmlldyBpcyBpbmRlZWQgZWRpdGFi
bGUuCiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBjbGlwYm9hcmRUZXh0KHRlc3QtPmN1dFNlbGVjdGlv
bigpKTsKICAgICBnX2Fzc2VydF9jbXBzdHIoY2xpcGJvYXJkVGV4dC5nZXQoKSwgPT0sICJtYWtl
IEphY2sgYSBkdWxsIik7CkBAIC0yNTYsNiArMjk4LDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZp
ZXdFZGl0b3JOb25FZGl0YWJsZShFZGl0b3JUZXN0KiB0ZXN0KQogICAgIEdVbmlxdWVQdHI8Y2hh
cj4gc2VsZWN0ZWRTcGFuSFRNTChnX3N0cmR1cF9wcmludGYoc2VsZWN0ZWRTcGFuSFRNTEZvcm1h
dCwgImZhbHNlIikpOwogICAgIHRlc3QtPmxvYWRIdG1sKHNlbGVjdGVkU3BhbkhUTUwuZ2V0KCks
IG51bGxwdHIpOwogICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworICAgIHRlc3Qt
PmZsdXNoRWRpdG9yU3RhdGUoKTsKIAogICAgIGdfYXNzZXJ0KCF0ZXN0LT5pc0VkaXRhYmxlKCkp
OwogICAgIHRlc3QtPnNldEVkaXRhYmxlKHRydWUpOwpAQCAtMjkzLDkgKzMzNiw5IEBAIHN0YXRp
YyB2b2lkIHRlc3RXZWJWaWV3RWRpdG9yRWRpdG9yU3RhdGVUeXBpbmdBdHRyaWJ1dGVzKEVkaXRv
clRlc3QqIHRlc3QsIGdjb25zCiAgICAgICAgICI8Yj48aT5ib2xkYW5kaXRhbGljIDwvaT48L2I+
IgogICAgICAgICAiPC9ib2R5PjwvaHRtbD4iOwogCi0gICAgdGVzdC0+c2hvd0luV2luZG93QW5k
V2FpdFVudGlsTWFwcGVkKCk7CiAgICAgdGVzdC0+bG9hZEh0bWwodHlwaW5nQXR0cmlidXRlc0hU
TUwsIG51bGxwdHIpOwogICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworICAgIHRl
c3QtPmZsdXNoRWRpdG9yU3RhdGUoKTsKICAgICB0ZXN0LT5zZXRFZGl0YWJsZSh0cnVlKTsKIAog
ICAgIHVuc2lnbmVkIHR5cGluZ0F0dHJpYnV0ZXMgPSB0ZXN0LT50eXBpbmdBdHRyaWJ1dGVzKCk7
CkBAIC00MDYsNiArNDQ5LDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdFZGl0b3JJbnNlcnRJ
bWFnZShFZGl0b3JUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewogICAgIHRlc3QtPmxvYWRI
dG1sKCI8aHRtbD48Ym9keT48L2JvZHk+PC9odG1sPiIsICJmaWxlOi8vLyIpOwogICAgIHRlc3Qt
PndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworICAgIHRlc3QtPmZsdXNoRWRpdG9yU3RhdGUoKTsK
ICAgICB0ZXN0LT5zZXRFZGl0YWJsZSh0cnVlKTsKIAogICAgIEdVbmlxdWVQdHI8Y2hhcj4gaW1h
Z2VQYXRoKGdfYnVpbGRfZmlsZW5hbWUoVGVzdDo6Z2V0UmVzb3VyY2VzRGlyKCkuZGF0YSgpLCAi
YmxhbmsuaWNvIiwgbnVsbHB0cikpOwpAQCAtNDIzLDYgKzQ2Nyw3IEBAIHN0YXRpYyB2b2lkIHRl
c3RXZWJWaWV3RWRpdG9yQ3JlYXRlTGluayhFZGl0b3JUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVy
KQogewogICAgIHRlc3QtPmxvYWRIdG1sKCI8aHRtbD48Ym9keSBvbmxvYWQ9XCJkb2N1bWVudC5n
ZXRTZWxlY3Rpb24oKS5zZWxlY3RBbGxDaGlsZHJlbihkb2N1bWVudC5ib2R5KTtcIj53ZWJraXRn
dGsub3JnPC9ib2R5PjwvaHRtbD4iLCBudWxscHRyKTsKICAgICB0ZXN0LT53YWl0VW50aWxMb2Fk
RmluaXNoZWQoKTsKKyAgICB0ZXN0LT5mbHVzaEVkaXRvclN0YXRlKCk7CiAgICAgdGVzdC0+c2V0
RWRpdGFibGUodHJ1ZSk7CiAKICAgICBzdGF0aWMgY29uc3QgY2hhciogd2Via2l0R1RLVVJMID0g
Imh0dHA6Ly93d3cud2Via2l0Z3RrLm9yZy8iOwo=
</data>
<flag name="review"
          id="344569"
          type_id="1"
          status="+"
          setter="rniwa"
    />
          </attachment>
      

    </bug>

</bugzilla>