<?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>192305</bug_id>
          
          <creation_ts>2018-12-03 02:36:22 -0800</creation_ts>
          <short_desc>[WPE] Add API for webview background color configuration</short_desc>
          <delta_ts>2019-03-18 06:12:39 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WPE WebKit</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Philippe Normand">pnormand</reporter>
          <assigned_to name="Philippe Normand">pnormand</assigned_to>
          <cc>achristensen</cc>
    
    <cc>aperez</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>dino</cc>
    
    <cc>gdesmott</cc>
    
    <cc>koivisto</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>timothy</cc>
    
    <cc>wenson_hsieh</cc>
    
    <cc>youennf</cc>
    
    <cc>zalan</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1484313</commentid>
    <comment_count>0</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2018-12-03 02:36:22 -0800</bug_when>
    <thetext>This should be useful when the WebView is overlaying content on top of another graphics scene.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1484314</commentid>
    <comment_count>1</comment_count>
      <attachid>356371</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2018-12-03 02:44:36 -0800</bug_when>
    <thetext>Created attachment 356371
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1484315</commentid>
    <comment_count>2</comment_count>
      <attachid>356371</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-12-03 02:59:21 -0800</bug_when>
    <thetext>Comment on attachment 356371
Patch

I planned to expose this with the same API as GTK+ webkit_web_view_set_background_color(). Setting a fully transparent color is the same as passing FALSE to set_draws_background(). Have you checked this patch doesn&apos;t break GTK+?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1484318</commentid>
    <comment_count>3</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2018-12-03 03:11:28 -0800</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #2)
&gt; Comment on attachment 356371 [details]
&gt; Patch
&gt; 
&gt; I planned to expose this with the same API as GTK+
&gt; webkit_web_view_set_background_color(). 

Yeah I saw that one but it uses some GDK type :/

&gt; Setting a fully transparent color is
&gt; the same as passing FALSE to set_draws_background(). Have you checked this
&gt; patch doesn&apos;t break GTK+?

Not yet, will check now!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1484320</commentid>
    <comment_count>4</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-12-03 03:22:57 -0800</bug_when>
    <thetext>(In reply to Philippe Normand from comment #3)
&gt; (In reply to Carlos Garcia Campos from comment #2)
&gt; &gt; Comment on attachment 356371 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; I planned to expose this with the same API as GTK+
&gt; &gt; webkit_web_view_set_background_color(). 
&gt; 
&gt; Yeah I saw that one but it uses some GDK type :/

Right, in the case of WPE we can either add a color type or simply use double r, g, b, a.

&gt; &gt; Setting a fully transparent color is
&gt; &gt; the same as passing FALSE to set_draws_background(). Have you checked this
&gt; &gt; patch doesn&apos;t break GTK+?
&gt; 
&gt; Not yet, will check now!

Please. You can easily test it with MiniBrowser --bg-color. Make sure to force AC mode, since this patch only affects AC mode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1484326</commentid>
    <comment_count>5</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2018-12-03 03:39:11 -0800</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #4)
&gt; (In reply to Philippe Normand from comment #3)
&gt; &gt; (In reply to Carlos Garcia Campos from comment #2)
&gt; &gt; &gt; Comment on attachment 356371 [details]
&gt; &gt; &gt; Patch
&gt; &gt; &gt; 
&gt; &gt; &gt; I planned to expose this with the same API as GTK+
&gt; &gt; &gt; webkit_web_view_set_background_color(). 
&gt; &gt; 
&gt; &gt; Yeah I saw that one but it uses some GDK type :/
&gt; 
&gt; Right, in the case of WPE we can either add a color type or simply use
&gt; double r, g, b, a.
&gt; 

Any preference? I&apos;d probably aim for the latter for simplicity reasons.

&gt; &gt; &gt; Setting a fully transparent color is
&gt; &gt; &gt; the same as passing FALSE to set_draws_background(). Have you checked this
&gt; &gt; &gt; patch doesn&apos;t break GTK+?
&gt; &gt; 
&gt; &gt; Not yet, will check now!
&gt; 
&gt; Please. You can easily test it with MiniBrowser --bg-color. Make sure to
&gt; force AC mode, since this patch only affects AC mode.

It still works as expected:

WEBKIT_FORCE_COMPOSITING_MODE=1 run-minibrowser --gtk --bg-color=&quot;rgba(0,0,0,0)&quot; about:blank 

shows a transparent window

Loading an non-empty url still works as expected as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1484339</commentid>
    <comment_count>6</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-12-03 06:44:55 -0800</bug_when>
    <thetext>(In reply to Philippe Normand from comment #5)
&gt; (In reply to Carlos Garcia Campos from comment #4)
&gt; &gt; (In reply to Philippe Normand from comment #3)
&gt; &gt; &gt; (In reply to Carlos Garcia Campos from comment #2)
&gt; &gt; &gt; &gt; Comment on attachment 356371 [details]
&gt; &gt; &gt; &gt; Patch
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; I planned to expose this with the same API as GTK+
&gt; &gt; &gt; &gt; webkit_web_view_set_background_color(). 
&gt; &gt; &gt; 
&gt; &gt; &gt; Yeah I saw that one but it uses some GDK type :/
&gt; &gt; 
&gt; &gt; Right, in the case of WPE we can either add a color type or simply use
&gt; &gt; double r, g, b, a.
&gt; &gt; 
&gt; 
&gt; Any preference? I&apos;d probably aim for the latter for simplicity reasons.

I don&apos;t mind. Good thing about adding a type is that we could grow it to support things like parsing color strings similar to GdkRGBA

&gt; &gt; &gt; &gt; Setting a fully transparent color is
&gt; &gt; &gt; &gt; the same as passing FALSE to set_draws_background(). Have you checked this
&gt; &gt; &gt; &gt; patch doesn&apos;t break GTK+?
&gt; &gt; &gt; 
&gt; &gt; &gt; Not yet, will check now!
&gt; &gt; 
&gt; &gt; Please. You can easily test it with MiniBrowser --bg-color. Make sure to
&gt; &gt; force AC mode, since this patch only affects AC mode.
&gt; 
&gt; It still works as expected:
&gt; 
&gt; WEBKIT_FORCE_COMPOSITING_MODE=1 run-minibrowser --gtk
&gt; --bg-color=&quot;rgba(0,0,0,0)&quot; about:blank 
&gt; 
&gt; shows a transparent window

What about opaque or semi-transparent colors?

&gt; Loading an non-empty url still works as expected as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1484343</commentid>
    <comment_count>7</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2018-12-03 07:37:06 -0800</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #6)
&gt; (In reply to Philippe Normand from comment #5)
&gt; &gt; (In reply to Carlos Garcia Campos from comment #4)
&gt; &gt; &gt; (In reply to Philippe Normand from comment #3)
&gt; &gt; &gt; &gt; (In reply to Carlos Garcia Campos from comment #2)
&gt; &gt; &gt; &gt; &gt; Comment on attachment 356371 [details]
&gt; &gt; &gt; &gt; &gt; Patch
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; I planned to expose this with the same API as GTK+
&gt; &gt; &gt; &gt; &gt; webkit_web_view_set_background_color(). 
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Yeah I saw that one but it uses some GDK type :/
&gt; &gt; &gt; 
&gt; &gt; &gt; Right, in the case of WPE we can either add a color type or simply use
&gt; &gt; &gt; double r, g, b, a.
&gt; &gt; &gt; 
&gt; &gt; 
&gt; &gt; Any preference? I&apos;d probably aim for the latter for simplicity reasons.
&gt; 
&gt; I don&apos;t mind. Good thing about adding a type is that we could grow it to
&gt; support things like parsing color strings similar to GdkRGBA
&gt; 

That&apos;s true yeah, but I&apos;m not sure how useful it would be. :)

&gt; &gt; &gt; &gt; &gt; Setting a fully transparent color is
&gt; &gt; &gt; &gt; &gt; the same as passing FALSE to set_draws_background(). Have you checked this
&gt; &gt; &gt; &gt; &gt; patch doesn&apos;t break GTK+?
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Not yet, will check now!
&gt; &gt; &gt; 
&gt; &gt; &gt; Please. You can easily test it with MiniBrowser --bg-color. Make sure to
&gt; &gt; &gt; force AC mode, since this patch only affects AC mode.
&gt; &gt; 
&gt; &gt; It still works as expected:
&gt; &gt; 
&gt; &gt; WEBKIT_FORCE_COMPOSITING_MODE=1 run-minibrowser --gtk
&gt; &gt; --bg-color=&quot;rgba(0,0,0,0)&quot; about:blank 
&gt; &gt; 
&gt; &gt; shows a transparent window
&gt; 
&gt; What about opaque or semi-transparent colors?
&gt; 
&gt; &gt; Loading an non-empty url still works as expected as well.

Yeah that works too, but only if I first load a normal URI and then manually load about:blank in the existing browser.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1484346</commentid>
    <comment_count>8</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2018-12-03 07:50:00 -0800</bug_when>
    <thetext>gtk-doc seems to be confused by 2 impls of the same function with different signatures :/

/app/webkit/Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:4003: warning: Parameter description for webkit_web_view_set_background_color::r is not used from source code comment block.
/app/webkit/Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:4003: warning: Parameter description for webkit_web_view_set_background_color::g is not used from source code comment block.
/app/webkit/Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:4003: warning: Parameter description for webkit_web_view_set_background_color::b is not used from source code comment block.
/app/webkit/Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:4003: warning: Parameter description for webkit_web_view_set_background_color::a is not used from source code comment block.
/app/webkit/Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:4003: warning: Parameter description for webkit_web_view_set_background_color::rgba is missing in source code comment block.
/app/webkit/Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:4029: warning: Parameter description for webkit_web_view_get_background_color::r is not used from source code comment block.
/app/webkit/Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:4029: warning: Parameter description for webkit_web_view_get_background_color::g is not used from source code comment block.
/app/webkit/Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:4029: warning: Parameter description for webkit_web_view_get_background_color::b is not used from source code comment block.
/app/webkit/Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:4029: warning: Parameter description for webkit_web_view_get_background_color::a is not used from source code comment block.
/app/webkit/Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:4029: warning: Parameter description for webkit_web_view_get_background_color::rgba is missing in source code comment block.
./webkit2gtk-4.0-unused.txt:1: warning: 2 unused declarations.They should be added to webkit2gtk-4.0-sections.txt in the appropriate place.

The following API are missing documentation:
	webkit_web_view_get_background_color(r, g, b, a)
	webkit_web_view_set_background_color(r, g, b, a)


Also I tried to properly set the background color in the threaded compositor, without success yet. :(
I&apos;m not sure what&apos;s the use-case for a full-blown set_background_color API anyway? Seems to me what&apos;s the most important is the opacity anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1484348</commentid>
    <comment_count>9</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-12-03 08:05:04 -0800</bug_when>
    <thetext>You could move it to WebKitWebViewWPE.cpp and WebKitWebViewGTK.cpp?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492139</commentid>
    <comment_count>10</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2019-01-06 10:02:34 -0800</bug_when>
    <thetext>(In reply to Philippe Normand from comment #5)
&gt; &gt; Please. You can easily test it with MiniBrowser --bg-color. Make sure to
&gt; &gt; force AC mode, since this patch only affects AC mode.
&gt; 
&gt; It still works as expected:
&gt; 
&gt; WEBKIT_FORCE_COMPOSITING_MODE=1 run-minibrowser --gtk
&gt; --bg-color=&quot;rgba(0,0,0,0)&quot; about:blank 
&gt; 
&gt; shows a transparent window
&gt; 

Seems like this regressed recently. Does it work for you?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492140</commentid>
    <comment_count>11</comment_count>
      <attachid>358458</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2019-01-06 10:15:51 -0800</bug_when>
    <thetext>Created attachment 358458
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492141</commentid>
    <comment_count>12</comment_count>
      <attachid>358459</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2019-01-06 10:16:58 -0800</bug_when>
    <thetext>Created attachment 358459
WiP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492612</commentid>
    <comment_count>13</comment_count>
      <attachid>358597</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2019-01-08 08:53:49 -0800</bug_when>
    <thetext>Created attachment 358597
WiP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1493316</commentid>
    <comment_count>14</comment_count>
      <attachid>358799</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2019-01-10 08:54:03 -0800</bug_when>
    <thetext>Created attachment 358799
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1493654</commentid>
    <comment_count>15</comment_count>
      <attachid>358799</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-01-11 04:14:51 -0800</bug_when>
    <thetext>Comment on attachment 358799
Patch

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

&gt; Source/WebCore/ChangeLog:3
&gt; +        [WPE] Add API to allow application to disable background rendering

We should update the bug title now that we are adding api to set a background color.

&gt; Source/WebKit/Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:85
&gt; +    if (!drawsBackground &amp;&amp; (currentRootLayer-&gt;opacity() != opacity))

Parentheses aren&apos;t needed in (currentRootLayer-&gt;opacity() != opacity). Shouldn&apos;t we set the opacity even when !drawsBackground?

&gt; Source/WebKit/UIProcess/API/wpe/WebKitColor.cpp:31
&gt; + * A WebKitColor is a boxed type wrapping a WebCore color.

Don&apos;t mention WebCore here, that&apos;s an impl detail and user don&apos;t need to know what a WebCore color is.

&gt; Source/WebKit/UIProcess/API/wpe/WebKitColor.cpp:36
&gt; +struct _WebKitColor {

This is very simple type that is very unlikely to change, so I would make the struct public so that it can be stack allocated.

&gt; Source/WebKit/UIProcess/API/wpe/WebKitColor.cpp:48
&gt; +    WebCore::Color m_color;

And keep here the channels as members instead of wrapping a WebCore color. Using double values for consistency with GdkRGBA.

&gt; Source/WebKit/UIProcess/API/wpe/WebKitColor.cpp:49
&gt; +    int referenceCount { 1 };

I don&apos;t think it&apos;s worth making this ref counted.

&gt; Source/WebKit/UIProcess/API/wpe/WebKitColor.cpp:52
&gt; +static WebKitColor* webkitColorRef(WebKitColor* color)

But if refcounted this should be public. I would provide copy/free public functions in any case.

&gt; Source/WebKit/UIProcess/API/wpe/WebKitColor.cpp:70
&gt; +WebKitColor* webkitColorFromColor(const WebCore::Color&amp; color)

webkitColorCreate

&gt; Source/WebKit/UIProcess/API/wpe/WebKitColor.cpp:77
&gt; +const WebCore::Color&amp; webkitColorGetColor(WebKitColor* backgroundColor)

This would be webkitColorToWebCoreColor and returns a new WebCore::Color instead of a ref.

&gt; Source/WebKit/UIProcess/API/wpe/WebKitColor.cpp:83
&gt; + * webkit_color_new_from_string:

I would use webkit_color_parse(), again for consistency with GdkRGBA, returning gboolean and receiving a WebKitColor* so that it can be used with stack allocated colors.

&gt; Source/WebKit/UIProcess/API/wpe/WebKitColor.cpp:84
&gt; + * @colorString: color representation as color nickname or HEX string

color_string

&gt; Source/WebKit/UIProcess/API/wpe/WebKitColor.cpp:110
&gt; +gint webkit_color_get_red_channel(WebKitColor* color)

And then we don&apos;t need these public getters

&gt; Source/WebKit/UIProcess/API/wpe/WebKitColor.h:40
&gt; +webkit_color_new_from_string    (const char* colorString);

const char *color_string

&gt; Source/WebKit/UIProcess/API/wpe/WebKitColor.h:43
&gt; +webkit_color_get_red_channel    (WebKitColor* color);

WebKitColor *color

&gt; Source/WebKit/UIProcess/API/wpe/WebKitColor.h:46
&gt; +webkit_color_get_green_channel  (WebKitColor* color);

Ditto.

&gt; Source/WebKit/UIProcess/API/wpe/WebKitColor.h:49
&gt; +webkit_color_get_blue_channel   (WebKitColor* color);

Ditto.

&gt; Source/WebKit/UIProcess/API/wpe/WebKitColor.h:52
&gt; +webkit_color_get_alpha_channel  (WebKitColor* color);

Ditto.

&gt; Source/WebKit/UIProcess/API/wpe/WebKitWebView.h:522
&gt; +webkit_web_view_set_background_color                 (WebKitWebView                *web_view,

I think there&apos;s an exytra space between WebKitWebView and *web_view

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:1549
&gt; +    m_backgroundColor = color;
&gt; +    if (isValid())
&gt; +        m_process-&gt;send(Messages::WebPage::SetBackgroundColor(color), m_pageID);

We should also add a creation parameter for the background color now that we are sending it to the web process.

&gt; Source/WebKit/WebProcess/WebPage/WebPage.h:1269
&gt; +    void setBackgroundColor(const WebCore::Color&amp;);

This is specific to WPE and GTK in the ui process, it should be the same here.

&gt; Source/WebKit/WebProcess/WebPage/WebPage.messages.in:29
&gt; +    SetBackgroundColor(WebCore::Color color)

Ditto.

&gt; Tools/MiniBrowser/wpe/main.cpp:201
&gt; +    g_boxed_free(WEBKIT_TYPE_COLOR, backgroundColor);

Boxed types are expected to provide their copy and free functions.

&gt; Tools/MiniBrowser/wpe/main.cpp:211
&gt; +    if (privateMode || automationMode)

This doesn&apos;t belong to this patch, but good catch! File a new bug report and r=me

&gt; Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebKitWebView.cpp:1158
&gt; +#if PLATFORM(WPE)

We shouldn&apos;t need different tests for WPE and GTK, and if WebKitColor is compatible with GdkRGBA we could even use almost the same code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1494035</commentid>
    <comment_count>16</comment_count>
      <attachid>359005</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2019-01-13 08:01:45 -0800</bug_when>
    <thetext>Created attachment 359005
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1494123</commentid>
    <comment_count>17</comment_count>
      <attachid>359005</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-01-14 05:31:07 -0800</bug_when>
    <thetext>Comment on attachment 359005
Patch

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

&gt; Source/WebCore/ChangeLog:3
&gt; +        [WPE] Add API to allow application to disable background rendering

We should update the bug title now that we are adding api to set a background color.

&gt; Source/WebCore/page/Frame.cpp:905
&gt; +void Frame::createView(const IntSize&amp; viewportSize, bool transparent, const Color&amp; backgroundColor,

transparent and backgroundColor are kind of redundant now, could we use a single parameter and use Color::transparent when transparent=true? The bg color parameter could then be std::optional.

&gt; Source/WebKit/Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:68
&gt; -void CoordinatedGraphicsScene::paintToCurrentGLContext(const TransformationMatrix&amp; matrix, float opacity, const FloatRect&amp; clipRect, const Color&amp; backgroundColor, bool drawsBackground, TextureMapper::PaintFlags PaintFlags)
&gt; +void CoordinatedGraphicsScene::paintToCurrentGLContext(const TransformationMatrix&amp; matrix, const FloatRect&amp; clipRect, const Color&amp; backgroundColor, bool drawsBackground, TextureMapper::PaintFlags PaintFlags)

This is only called by the threaded compositor nowadays, I think we can remove the bg color + opacity from here.

&gt; Source/WebKit/Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:82
&gt; +    auto&amp; color = drawsBackground ? backgroundColor : m_viewBackgroundColor;
&gt; +    m_textureMapper-&gt;clearColor(color);

Because we are applying the bg color twice, since it&apos;s already drawn by the frame.

&gt; Source/WebKit/Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:84
&gt; +    float opacity = drawsBackground ? color.alphaAsFloat() : 1;

The layer opacity shouldn&apos;t be the same as the bg color opacity.

&gt; Source/WebKit/Shared/CoordinatedGraphics/CoordinatedGraphicsScene.h:75
&gt; +    void paintToCurrentGLContext(const WebCore::TransformationMatrix&amp;, const WebCore::FloatRect&amp;, const WebCore::Color&amp; backgroundColor, bool drawsBackground, WebCore::TextureMapper::PaintFlags = 0);

If we make the bg color parameter optional we don&apos;t need the drawsBackground one.

&gt; Source/WebKit/UIProcess/API/gtk/WebKitWebViewGtk.cpp:408
&gt; +    if (!color.isOpaque())
&gt; +        page.setDrawsBackground(false);

I think we should do the same in GTK and WPE, otherwise we don&apos;t need to send the bg color to the web process in GTK case.

&gt; Source/WebKit/UIProcess/API/wpe/WebKitColor.cpp:95
&gt; + * Create a new #WebKitColor for the given @color_string

It doesn&apos;t create a new WebKitColor, it fills the passed in one.

&gt; Source/WebKit/UIProcess/API/wpe/WebKitColor.cpp:100
&gt; + * Returns: a #gboolean indicating if the @color was correctly filled in or not.

%TRUE if parse succeeded or %FALSE otherwise

&gt; Source/WebKit/UIProcess/API/wpe/WebKitColor.cpp:106
&gt; +    auto webCoreColor = WebCore::Color(colorString);

g_return_val_if_fail(color, nullptr);

&gt; Source/WebKit/UIProcess/API/wpe/WebKitColor.cpp:110
&gt; +    if (color) {

This should always be non-null

&gt; Source/WebKit/UIProcess/API/wpe/WebKitColor.h:38
&gt; + */

Since: 2.24

&gt; Source/WebKit/UIProcess/API/wpe/WebKitColorPrivate.h:22
&gt; +#include &quot;Color.h&quot;

&lt;WebCore/Color.h&gt;

&gt; Source/WebKit/UIProcess/API/wpe/WebKitWebViewWPE.cpp:190
&gt; + * the actual contents are rendered. Note that if the web page loaded in @web_view
&gt; + * specifies a background color, it will take precedence over the background color.

Have we checked this is still true?

&gt; Source/WebKit/UIProcess/API/wpe/WebKitWebViewWPE.cpp:221
&gt; +    auto&amp; webCoreColor = page.backgroundColor();
&gt; +    g_return_if_fail(webCoreColor.isValid());

This should never happen, use an assert instead if you want to be extra sure.

&gt; Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp:233
&gt; +

Remove this empty line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495788</commentid>
    <comment_count>18</comment_count>
      <attachid>359470</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-01-18 03:36:16 -0800</bug_when>
    <thetext>Created attachment 359470
Updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495803</commentid>
    <comment_count>19</comment_count>
      <attachid>359477</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-01-18 05:10:04 -0800</bug_when>
    <thetext>Created attachment 359477
Try to fix win builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495804</commentid>
    <comment_count>20</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-01-18 05:10:30 -0800</bug_when>
    <thetext>We will need a wk2 owner approval for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1498217</commentid>
    <comment_count>21</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-01-25 05:51:25 -0800</bug_when>
    <thetext>WebKit2 owners, please, could any of you take a look at the cross-platform changes in this patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1498285</commentid>
    <comment_count>22</comment_count>
      <attachid>359477</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-01-25 09:46:28 -0800</bug_when>
    <thetext>Comment on attachment 359477
Try to fix win builds

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

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:1539
&gt; +    setBackgroundColor(backgroundColor);

Let&apos;s say we call setDrawsBackground to false.
We will change background color from let&apos;s say black to transparent.
Let&apos;s say we now call setDrawsBackground to true.
I would expect background color to be back to black, but it seems it will be WTF::nullopt.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1498949</commentid>
    <comment_count>23</comment_count>
      <attachid>359477</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-01-28 00:15:38 -0800</bug_when>
    <thetext>Comment on attachment 359477
Try to fix win builds

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

&gt;&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:1539
&gt;&gt; +    setBackgroundColor(backgroundColor);
&gt; 
&gt; Let&apos;s say we call setDrawsBackground to false.
&gt; We will change background color from let&apos;s say black to transparent.
&gt; Let&apos;s say we now call setDrawsBackground to true.
&gt; I would expect background color to be back to black, but it seems it will be WTF::nullopt.

There&apos;s no change in behavior here. Before this patch false means use transparent color and true means use the default background color (white). It&apos;s not actually expected to use both setDrawsBackground and setBackgroundColor, so ports using setDrawsBackground will always use the default bg color on true (as they currently do). And ports using setBackgroundColor don&apos;t need to use setDrawsBakground, because they are expected to pass a transparent color instead. Ideally we can simply remove setDrawsBackgroiund (as I&apos;ve done with the IPC message), but I was afraid of breaking apple ports (there aren&apos;t tests for this right?).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1499973</commentid>
    <comment_count>24</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-01-30 06:08:23 -0800</bug_when>
    <thetext>Any other concern youenn?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1501055</commentid>
    <comment_count>25</comment_count>
      <attachid>360849</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-02-01 01:30:33 -0800</bug_when>
    <thetext>Created attachment 360849
Rebased patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1501780</commentid>
    <comment_count>26</comment_count>
      <attachid>361048</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-02-04 02:42:05 -0800</bug_when>
    <thetext>Created attachment 361048
Rebased patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1501850</commentid>
    <comment_count>27</comment_count>
      <attachid>361048</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-02-04 09:09:21 -0800</bug_when>
    <thetext>Comment on attachment 361048
Rebased patch

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

This looks good to me, but this still needs owner approval. The changes here are extensive.

&gt; Source/WebKit/Shared/WebPageCreationParameters.cpp:354
&gt;  #endif
&gt; +    Optional&lt;Optional&lt;WebCore::Color&gt;&gt; backgroundColor;

There should be a blank line here.

&gt; Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebKitWebView.cpp:1142
&gt; +#if PLATFORM(GTK)
&gt; +#define ColorType GdkRGBA
&gt; +#elif PLATFORM(WPE)
&gt; +#define ColorType WebKitColor
&gt; +#endif

using ColorType = GdkRGBA;
using ColorType = WebKitColor;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1504844</commentid>
    <comment_count>28</comment_count>
      <attachid>361672</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-02-11 04:46:35 -0800</bug_when>
    <thetext>Created attachment 361672
Patch for landing

Ping owners, please. I&apos;ve removed WebPageProxy::drawsBackground() and WebPageProxy::setDrawsBackground() to avoid confusion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1504852</commentid>
    <comment_count>29</comment_count>
      <attachid>361676</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-02-11 05:52:07 -0800</bug_when>
    <thetext>Created attachment 361676
Try to fix mac builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1504857</commentid>
    <comment_count>30</comment_count>
      <attachid>361678</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-02-11 06:47:45 -0800</bug_when>
    <thetext>Created attachment 361678
Try to fix mac builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1509622</commentid>
    <comment_count>31</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2019-02-25 07:13:52 -0800</bug_when>
    <thetext>Another ping for WK2 owners.. Youenn, are you back? Can you have a look please?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1509730</commentid>
    <comment_count>32</comment_count>
      <attachid>361678</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2019-02-25 12:05:58 -0800</bug_when>
    <thetext>Comment on attachment 361678
Try to fix mac builds

I&apos;m not a WK2 owner, but this looks fine for Mac.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1509938</commentid>
    <comment_count>33</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-02-25 21:22:02 -0800</bug_when>
    <thetext>(In reply to Philippe Normand from comment #31)
&gt; Another ping for WK2 owners.. Youenn, are you back? Can you have a look
&gt; please?

LGTM too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1509996</commentid>
    <comment_count>34</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-02-26 01:55:49 -0800</bug_when>
    <thetext>Committed r242082: &lt;https://trac.webkit.org/changeset/242082&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1517665</commentid>
    <comment_count>35</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2019-03-18 06:12:39 -0700</bug_when>
    <thetext>*** Bug 187646 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>356371</attachid>
            <date>2018-12-03 02:44:36 -0800</date>
            <delta_ts>2019-01-06 10:15:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192305-20181203104435.patch</filename>
            <type>text/plain</type>
            <size>6862</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4NzkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDFiY2RkY2JhOTUxOTFlMjA2
N2RhMzNjZTI5NWJjNDI0MWFkYzY3NmQuLmUwZTNmYmI3MTA3NjBjZDc1ODg0YmZmYTczM2E4NzRm
ZWIzMjI0MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTgtMTItMDMgIFBoaWxpcHBl
IE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtXUEVdIEFkZCBBUEkg
dG8gYWxsb3cgYXBwbGljYXRpb24gdG8gZGlzYWJsZSBiYWNrZ3JvdW5kIHJlbmRlcmluZworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyMzA1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBuZXcgQVBJ
IHNob3VsZCBiZSB1c2VmdWwgd2hlbiB0aGUgV2ViVmlldyBpcyBvdmVybGF5aW5nCisgICAgICAg
IGNvbnRlbnQgb24gdG9wIG9mIGFub3RoZXIgZ3JhcGhpY3Mgc2NlbmUuCisKKyAgICAgICAgKiBT
aGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnBhaW50VG9DdXJyZW50
R0xDb250ZXh0KTogVGFrZQorICAgICAgICBvcGFjaXR5IGludG8gYWNjb3VudCB3aGVuIGRyYXdp
bmcgdGhlIHZpZXcgYmFja2dyb3VuZCBjb2xvciB0b28uCisgICAgICAgICogU2hhcmVkL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmg6IE1ha2UgdGhlCisgICAg
ICAgIHZpZXcgYmFja2dyb3VuZCB0cmFuc3BhcmVudC4gV2hlbiBvcGFjaXR5IGlzIDEgdGhlIHRl
eHR1cmUgbWFwcGVyCisgICAgICAgIHdpbGwgcmVuZGVyIGl0IHdoaXRlIGFueXdheS4KKyAgICAg
ICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFk
ZWRDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6VGhyZWFkZWRDb21wb3NpdG9yOjpy
ZW5kZXJMYXllclRyZWUpOiBGaXggdHlwby4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfc2V0X2RyYXdzX2Jh
Y2tncm91bmQpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2RyYXdzX2JhY2tncm91bmQpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXcuaDoKKwogMjAxOC0xMi0w
MyAgS2VpdGggUm9sbGluICA8a3JvbGxpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIE5l
dHdvcmsgQ2FwdHVyZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCmlu
ZGV4IDFiMmVkMWIwMjc1ZTY1YmJlMTkxOTU1OTk4YzI5M2E4M2JhNjQ2MDguLjJmNzJhN2U0NjQy
NjAxMTIxMmNiMGQwYWZlNzExZWE5MzQzNTVkNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3NTY2VuZS5jcHAKQEAgLTc4LDEzICs3OCw5IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFw
aGljc1NjZW5lOjpwYWludFRvQ3VycmVudEdMQ29udGV4dChjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpCiAgICAgbV90ZXh0dXJlTWFwcGVyLT5iZWdpblBhaW50aW5nKFBhaW50RmxhZ3MpOwogICAg
IG1fdGV4dHVyZU1hcHBlci0+YmVnaW5DbGlwKFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIGNsaXBS
ZWN0KTsKIAotICAgIGlmIChkcmF3c0JhY2tncm91bmQpIHsKLSAgICAgICAgUkdCQTMyIHJnYmEg
PSBtYWtlUkdCQTMyRnJvbUZsb2F0cyhiYWNrZ3JvdW5kQ29sb3IucmVkKCksCi0gICAgICAgICAg
ICBiYWNrZ3JvdW5kQ29sb3IuZ3JlZW4oKSwgYmFja2dyb3VuZENvbG9yLmJsdWUoKSwKLSAgICAg
ICAgICAgIGJhY2tncm91bmRDb2xvci5hbHBoYSgpICogb3BhY2l0eSk7Ci0gICAgICAgIG1fdGV4
dHVyZU1hcHBlci0+ZHJhd1NvbGlkQ29sb3IoY2xpcFJlY3QsIFRyYW5zZm9ybWF0aW9uTWF0cml4
KCksIENvbG9yKHJnYmEpKTsKLSAgICB9IGVsc2UKLSAgICAgICAgbV90ZXh0dXJlTWFwcGVyLT5j
bGVhckNvbG9yKG1fdmlld0JhY2tncm91bmRDb2xvcik7CisgICAgYXV0byYgY29sb3IgPSBkcmF3
c0JhY2tncm91bmQgPyBiYWNrZ3JvdW5kQ29sb3IgOiBtX3ZpZXdCYWNrZ3JvdW5kQ29sb3I7Cisg
ICAgUkdCQTMyIHJnYmEgPSBtYWtlUkdCQTMyRnJvbUZsb2F0cyhjb2xvci5yZWQoKSwgY29sb3Iu
Z3JlZW4oKSwgY29sb3IuYmx1ZSgpLCBjb2xvci5hbHBoYSgpICogb3BhY2l0eSk7CisgICAgbV90
ZXh0dXJlTWFwcGVyLT5kcmF3U29saWRDb2xvcihjbGlwUmVjdCwgVHJhbnNmb3JtYXRpb25NYXRy
aXgoKSwgQ29sb3IocmdiYSkpOwogCiAgICAgaWYgKGN1cnJlbnRSb290TGF5ZXItPm9wYWNpdHko
KSAhPSBvcGFjaXR5IHx8IGN1cnJlbnRSb290TGF5ZXItPnRyYW5zZm9ybSgpICE9IG1hdHJpeCkg
ewogICAgICAgICBjdXJyZW50Um9vdExheWVyLT5zZXRPcGFjaXR5KG9wYWNpdHkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZEdyYXBoaWNzU2NlbmUuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmgKaW5kZXggZDRiYjU4MjY4ZmU3NTIyMTYxMzhk
NTY0MTE3YjRiNzZlYzhhOWY5My4uOGZhNTQyNGE5NGJkODIwYmRjOGI5NjBjZGUxOWU2YTU3NTJk
YWVhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5oCkBAIC0xMTMsNyAr
MTEzLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6VGV4dHVyZU1h
cHBlckxheWVyPiBtX3Jvb3RMYXllcjsKIAogICAgIE5pY29zaWE6OlBsYXRmb3JtTGF5ZXI6Okxh
eWVySUQgbV9yb290TGF5ZXJJRCB7IDAgfTsKLSAgICBXZWJDb3JlOjpDb2xvciBtX3ZpZXdCYWNr
Z3JvdW5kQ29sb3IgeyBXZWJDb3JlOjpDb2xvcjo6d2hpdGUgfTsKKyAgICBXZWJDb3JlOjpDb2xv
ciBtX3ZpZXdCYWNrZ3JvdW5kQ29sb3IgeyBXZWJDb3JlOjpDb2xvcjo6dHJhbnNwYXJlbnQgfTsK
IAogICAgIFdlYkNvcmU6OlRleHR1cmVNYXBwZXJGUFNDb3VudGVyIG1fZnBzQ291bnRlcjsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3Ro
cmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21w
b3NpdG9yLmNwcAppbmRleCA3NTIyZjg0ZWE4ZjhhNjgyM2JiOTIxZmZjM2YwNWNmYmQ4N2ViNTgx
Li5hMWJlYzA4MWM2ODkyYTk5MGIxZTEwZmY5NTZkNzdmYmE2OWRjOTFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRv
ci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHAK
QEAgLTI1NCw3ICsyNTQsNyBAQCB2b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6cmVuZGVyTGF5ZXJU
cmVlKCkKIAogICAgIG1fc2NlbmUtPmFwcGx5U3RhdGVDaGFuZ2VzKHN0YXRlcyk7CiAgICAgbV9z
Y2VuZS0+cGFpbnRUb0N1cnJlbnRHTENvbnRleHQodmlld3BvcnRUcmFuc2Zvcm0sIDEsIEZsb2F0
UmVjdCB7IEZsb2F0UG9pbnQgeyB9LCB2aWV3cG9ydFNpemUgfSwKLSAgICAgICAgQ29sb3I6OnRy
YW5zcGFyZW50LCAhZHJhd3NCYWNrZ3JvdW5kLCBtX3BhaW50RmxhZ3MpOworICAgICAgICBDb2xv
cjo6dHJhbnNwYXJlbnQsIGRyYXdzQmFja2dyb3VuZCwgbV9wYWludEZsYWdzKTsKIAogICAgIG1f
Y29udGV4dC0+c3dhcEJ1ZmZlcnMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcAppbmRleCAyMzQ4NTk2NjNkMWYyYzc4MDg5OGYw
NjBmNDAxNDk4OGU3ODZiNGY2Li40MzU3ZTBmZTcyNTJkYzdkZGZjMDExZDEwY2FiNzZhODgyNDY5
YTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRX
ZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRX
ZWJWaWV3LmNwcApAQCAtMzk4NSw2ICszOTg1LDQwIEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X2dl
dF9iYWNrZ3JvdW5kX2NvbG9yKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIEdka1JHQkEqIHJnYmEp
CiB9CiAjZW5kaWYgLy8gUExBVEZPUk0oR1RLKQogCisjaWYgUExBVEZPUk0oV1BFKQorLyoqCisg
KiB3ZWJraXRfd2ViX3ZpZXdfc2V0X2RyYXdzX2JhY2tncm91bmQ6CisgKiBAd2ViX3ZpZXc6IGEg
I1dlYktpdFdlYlZpZXcKKyAqIEBkcmF3c19iYWNrZ3JvdW5kOiBXZXRoZXIgdGhlIEB3ZWJfdmll
dyBiYWNrZ3JvdW5kIHNob3VsZCBiZSByZW5kZXJlZCBvciBub3QKKyAqCisgKiBCeSBkZWZhdWx0
IHRoZSBAd2ViX3ZpZXcgYmFja2dyb3VuZCBpcyByZW5kZXJlZCBidXQgaW4gc29tZSBjYXNlcyBp
dCBjYW4gYmUKKyAqIHVzZWZ1bCB0byBkaXNhYmxlIGl0LCBzdWNoIGFzIHdoZW4gdGhlIEB3ZWJf
dmlldyByZW5kZXJpbmcgaXMgYmxlbmRlZCB3aXRoCisgKiBhbm90aGVyIGdyYXBoaWNzIHNjZW5l
LgorICovCit2b2lkIHdlYmtpdF93ZWJfdmlld19zZXRfZHJhd3NfYmFja2dyb3VuZChXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3LCBnYm9vbGVhbiBkcmF3c0JhY2tncm91bmQpCit7CisgICAgZ19yZXR1
cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldykpOworCisgICAgZ2V0UGFnZSh3
ZWJWaWV3KS5zZXREcmF3c0JhY2tncm91bmQoZHJhd3NCYWNrZ3JvdW5kKTsKK30KKworLyoqCisg
KiB3ZWJraXRfd2ViX3ZpZXdfZHJhd3NfYmFja2dyb3VuZDoKKyAqIEB3ZWJfdmlldzogYSAjV2Vi
S2l0V2ViVmlldworICoKKyAqIEdldHMgd2hldGhlciB0aGUgQHdlYl92aWV3IGJhY2tncm91bmQg
aXMgYmVpbmcgcmVuZGVyZWQgb3Igbm90LgorICoKKyAqIFJldHVybnM6ICVUUlVFIGlmIHRoZSBi
YWNrZ3JvdW5kIGlzIHJlbmRlcmVkLCBvciAlRkFMU0Ugb3RoZXJ3aXNlLgorICovCitnYm9vbGVh
biB3ZWJraXRfd2ViX3ZpZXdfZHJhd3NfYmFja2dyb3VuZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3
KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3
KSwgRkFMU0UpOworCisgICAgcmV0dXJuIGdldFBhZ2Uod2ViVmlldykuZHJhd3NCYWNrZ3JvdW5k
KCk7Cit9CisjZW5kaWYgLy8gUExBVEZPUk0oV1BFKQorCisKIC8qCiAgKiB3ZWJraXRfd2ViX3Zp
ZXdfaXNfZWRpdGFibGU6CiAgKiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZpZXcKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViVmlldy5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3LmgKaW5kZXggMmUzODlm
ZDBiM2NlYzI5OTNlYjA5NmVjZDNmNzNiNTY2NmVmY2ZhYi4uMTI5YzIyMWJmY2M0N2U5M2QxMDkz
MmU2OWViZjhmNjU4MWIwZmJkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL3dwZS9XZWJLaXRXZWJWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L3dwZS9XZWJLaXRXZWJWaWV3LmgKQEAgLTQ5NSw2ICs0OTUsMTMgQEAgV0VCS0lUX0FQSSB2b2lk
CiB3ZWJraXRfd2ViX3ZpZXdfcmVzdG9yZV9zZXNzaW9uX3N0YXRlICAgICAgICAgICAgICAgIChX
ZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFdlYlZpZXdTZXNzaW9uU3Rh
dGUgKnN0YXRlKTsKIAorV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfd2ViX3ZpZXdfc2V0X2RyYXdz
X2JhY2tncm91bmQgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3
ZWJfdmlldywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGdib29sZWFuICAgICAgICAgICAgICAgICAgZHJhd3NfYmFja2dyb3VuZCk7CisKK1dF
QktJVF9BUEkgZ2Jvb2xlYW4KK3dlYmtpdF93ZWJfdmlld19kcmF3c19iYWNrZ3JvdW5kICAgICAg
ICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgKndlYl92aWV3KTsKKwog
R19FTkRfREVDTFMKIAogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>358458</attachid>
            <date>2019-01-06 10:15:51 -0800</date>
            <delta_ts>2019-01-06 10:16:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192305-20190106181549.patch</filename>
            <type>text/plain</type>
            <size>48250</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5NjYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4IDczYmFm
ZGI0NjYwMjc4NWZmNDE0MTVmZTI2OTlhMGFiNzEwYTE5Y2EuLmI0ZTBhMzUwODk3NmEwODE0ZGE0
NzNhNjc1MjkzZjZkZjcwMDEzYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC05MDIsNyArOTAy
LDcgQEAgUmVmUHRyPFJhbmdlPiBGcmFtZTo6cmFuZ2VGb3JQb2ludChjb25zdCBJbnRQb2ludCYg
ZnJhbWVQb2ludCkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotdm9pZCBGcmFtZTo6Y3JlYXRl
Vmlldyhjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUsIGJvb2wgdHJhbnNwYXJlbnQsCit2b2lk
IEZyYW1lOjpjcmVhdGVWaWV3KGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSwgYm9vbCB0cmFu
c3BhcmVudCwgY29uc3QgQ29sb3ImIGJhY2tncm91bmRDb2xvciwKICAgICBjb25zdCBJbnRTaXpl
JiBmaXhlZExheW91dFNpemUsIGNvbnN0IEludFJlY3QmIGZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0
LAogICAgIGJvb2wgdXNlRml4ZWRMYXlvdXQsIFNjcm9sbGJhck1vZGUgaG9yaXpvbnRhbFNjcm9s
bGJhck1vZGUsIGJvb2wgaG9yaXpvbnRhbExvY2ssCiAgICAgU2Nyb2xsYmFyTW9kZSB2ZXJ0aWNh
bFNjcm9sbGJhck1vZGUsIGJvb2wgdmVydGljYWxMb2NrKQpAQCAtOTMzLDcgKzkzMyw3IEBAIHZv
aWQgRnJhbWU6OmNyZWF0ZVZpZXcoY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplLCBib29sIHRy
YW5zcGFyZW50LAogCiAgICAgc2V0VmlldyhmcmFtZVZpZXcuY29weVJlZigpKTsKIAotICAgIGZy
YW1lVmlldy0+dXBkYXRlQmFja2dyb3VuZFJlY3Vyc2l2ZWx5KHRyYW5zcGFyZW50KTsKKyAgICBm
cmFtZVZpZXctPnVwZGF0ZUJhY2tncm91bmRSZWN1cnNpdmVseSh0cmFuc3BhcmVudCwgYmFja2dy
b3VuZENvbG9yKTsKIAogICAgIGlmIChpc01haW5GcmFtZSkKICAgICAgICAgZnJhbWVWaWV3LT5z
ZXRQYXJlbnRWaXNpYmxlKHRydWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCmluZGV4IDlmYWYyNDM3ZjU3MjFl
OTZhMjU4MjEyN2UyZWFlMjY0M2RiOWI3MWUuLjYzY2IxMmE3MWY4OTVlNjdhNzZhZWE0OWZiZGFi
YTMwNTZmYzZjZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKQEAgLTEyOCw3ICsxMjgsNyBAQCBwdWJsaWM6
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbml0V2l0aFNpbXBsZUhUTUxEb2N1bWVudChjb25z
dCBTdHJpbmcmIHN0eWxlLCBjb25zdCBVUkwmKTsKICNlbmRpZgogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0VmlldyhSZWZQdHI8RnJhbWVWaWV3PiYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGNyZWF0ZVZpZXcoY29uc3QgSW50U2l6ZSYsIGJvb2wgdHJhbnNwYXJlbnQsCisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBjcmVhdGVWaWV3KGNvbnN0IEludFNpemUmLCBib29sIHRyYW5zcGFy
ZW50LCBjb25zdCBDb2xvciYgYmFja2dyb3VuZENvbG9yLAogICAgICAgICBjb25zdCBJbnRTaXpl
JiBmaXhlZExheW91dFNpemUsIGNvbnN0IEludFJlY3QmIGZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0
LAogICAgICAgICBib29sIHVzZUZpeGVkTGF5b3V0ID0gZmFsc2UsIFNjcm9sbGJhck1vZGUgPSBT
Y3JvbGxiYXJBdXRvLCBib29sIGhvcml6b250YWxMb2NrID0gZmFsc2UsCiAgICAgICAgIFNjcm9s
bGJhck1vZGUgPSBTY3JvbGxiYXJBdXRvLCBib29sIHZlcnRpY2FsTG9jayA9IGZhbHNlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCBkZjBlMTA1YTUxZTFhODQxOTdkZjQwMDQzNzFm
ODFhNjMxZmEzYjNlLi5hZTIxZTk2ODU3ZDA3ZWI2YTNmMzI1ZjIyMTA5NTQ3ZGZiNGZhN2U2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC0zMDAwLDEyICszMDAwLDEzIEBAIHZvaWQg
RnJhbWVWaWV3OjpzZXRCYXNlQmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJiBiYWNrZ3JvdW5k
Q29sb3IpCiAgICAgcmVuZGVyVmlldygpLT5jb21wb3NpdG9yKCkucm9vdEJhY2tncm91bmRDb2xv
ck9yVHJhbnNwYXJlbmN5Q2hhbmdlZCgpOwogfQogCi12b2lkIEZyYW1lVmlldzo6dXBkYXRlQmFj
a2dyb3VuZFJlY3Vyc2l2ZWx5KGJvb2wgdHJhbnNwYXJlbnQpCit2b2lkIEZyYW1lVmlldzo6dXBk
YXRlQmFja2dyb3VuZFJlY3Vyc2l2ZWx5KGJvb2wgdHJhbnNwYXJlbnQsIGNvbnN0IENvbG9yJiBk
ZWZhdWx0QmFja2dyb3VuZENvbG9yKQogewogI2lmIEVOQUJMRShEQVJLX01PREVfQ1NTKQorICAg
IFVOVVNFRF9QQVJBTShkZWZhdWx0QmFja2dyb3VuZENvbG9yKTsKICAgICBDb2xvciBiYWNrZ3Jv
dW5kQ29sb3IgPSB0cmFuc3BhcmVudCA/IENvbG9yOjp0cmFuc3BhcmVudCA6IFJlbmRlclRoZW1l
OjpzaW5nbGV0b24oKS5zeXN0ZW1Db2xvcihDU1NWYWx1ZUFwcGxlU3lzdGVtQ29udHJvbEJhY2tn
cm91bmQsIHN0eWxlQ29sb3JPcHRpb25zKCkpOwogI2Vsc2UKLSAgICBDb2xvciBiYWNrZ3JvdW5k
Q29sb3IgPSB0cmFuc3BhcmVudCA/IENvbG9yOjp0cmFuc3BhcmVudCA6IENvbG9yOjp3aGl0ZTsK
KyAgICBDb2xvciBiYWNrZ3JvdW5kQ29sb3IgPSB0cmFuc3BhcmVudCA/IENvbG9yOjp0cmFuc3Bh
cmVudCA6IGRlZmF1bHRCYWNrZ3JvdW5kQ29sb3I7CiAjZW5kaWYKIAogICAgIGZvciAoYXV0byog
ZnJhbWUgPSBtX2ZyYW1lLnB0cigpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZl
cnNlTmV4dChtX2ZyYW1lLnB0cigpKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKaW5kZXggNGY5
ODAwOTRjMDg2NDJmZThiMmZlOWU2YjdiYmFjYWM0YWU5MmJhZC4uZGM3MjFjOGQ0YTg2NGZmNDFj
Mzk2ZGRkYzBmMDk4YjBhYmI2ODY4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCkBAIC0xOTAs
NyArMTkwLDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgQ29sb3IgYmFzZUJhY2tn
cm91bmRDb2xvcigpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0QmFzZUJhY2tn
cm91bmRDb2xvcihjb25zdCBDb2xvciYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRl
QmFja2dyb3VuZFJlY3Vyc2l2ZWx5KGJvb2wpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBk
YXRlQmFja2dyb3VuZFJlY3Vyc2l2ZWx5KGJvb2wsIGNvbnN0IENvbG9yJiBiYWNrZ3JvdW5kQ29s
b3IgPSBDb2xvcjo6d2hpdGUpOwogCiAgICAgZW51bSBFeHRlbmRlZEJhY2tncm91bmRNb2RlRmxh
Z3MgewogICAgICAgICBFeHRlbmRlZEJhY2tncm91bmRNb2RlTm9uZSAgICAgICAgICA9IDAsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV1BFLmNtYWtlIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybVdQRS5jbWFrZQppbmRleCAxZjY3NWM0NGU0Yzc0NTljMDA1ZGQ2NzgxYWRiNzYy
YTU2YTdhYzM3Li4zY2RlZmQyYmVkMjE3MDVlNDMyM2I2NTM3ZmRkNmRjZmVhOTcyNDhlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV1BFLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm1XUEUuY21ha2UKQEAgLTk3LDYgKzk3LDcgQEAgc2V0KFdQRV9BUElfSU5TVEFM
TEVEX0hFQURFUlMKICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdEJh
Y2tGb3J3YXJkTGlzdC5oCiAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL3dwZS9XZWJL
aXRCYWNrRm9yd2FyZExpc3RJdGVtLmgKICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkv
d3BlL1dlYktpdENyZWRlbnRpYWwuaAorICAgICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS93
cGUvV2ViS2l0Q29sb3IuaAogICAgICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS93cGUvV2Vi
S2l0Q29udGV4dE1lbnUuaAogICAgICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS93cGUvV2Vi
S2l0Q29udGV4dE1lbnVBY3Rpb25zLmgKICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkv
d3BlL1dlYktpdENvbnRleHRNZW51SXRlbS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3NTY2VuZS5jcHAKaW5kZXggMWIyZWQxYjAyNzVlNjViYmUxOTE5NTU5OThjMjkzYTgzYmE2NDYw
OC4uYjhhZGQ0YTQyZWJjMzNlNjJlNDM5NGEwOWQ3YjM0OGNhYzY0YTRkMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBo
aWNzU2NlbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcApAQCAtNjUsNyArNjUsNyBAQCB2b2lkIENv
b3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6YXBwbHlTdGF0ZUNoYW5nZXMoY29uc3QgVmVjdG9yPENv
b3JkaW5hdGVkR3JhcGhpYwogICAgICAgICBjb21taXRTY2VuZVN0YXRlKHN0YXRlLm5pY29zaWEp
OwogfQogCi12b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6cGFpbnRUb0N1cnJlbnRHTENv
bnRleHQoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCwgZmxvYXQgb3BhY2l0eSwg
Y29uc3QgRmxvYXRSZWN0JiBjbGlwUmVjdCwgY29uc3QgQ29sb3ImIGJhY2tncm91bmRDb2xvciwg
Ym9vbCBkcmF3c0JhY2tncm91bmQsIFRleHR1cmVNYXBwZXI6OlBhaW50RmxhZ3MgUGFpbnRGbGFn
cykKK3ZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpwYWludFRvQ3VycmVudEdMQ29udGV4
dChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4LCBjb25zdCBGbG9hdFJlY3QmIGNs
aXBSZWN0LCBjb25zdCBDb2xvciYgYmFja2dyb3VuZENvbG9yLCBib29sIGRyYXdzQmFja2dyb3Vu
ZCwgVGV4dHVyZU1hcHBlcjo6UGFpbnRGbGFncyBQYWludEZsYWdzKQogewogICAgIHVwZGF0ZVNj
ZW5lU3RhdGUoKTsKIApAQCAtNzgsMTggKzc4LDE1IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGlj
c1NjZW5lOjpwYWludFRvQ3VycmVudEdMQ29udGV4dChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
CiAgICAgbV90ZXh0dXJlTWFwcGVyLT5iZWdpblBhaW50aW5nKFBhaW50RmxhZ3MpOwogICAgIG1f
dGV4dHVyZU1hcHBlci0+YmVnaW5DbGlwKFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIGNsaXBSZWN0
KTsKIAotICAgIGlmIChkcmF3c0JhY2tncm91bmQpIHsKLSAgICAgICAgUkdCQTMyIHJnYmEgPSBt
YWtlUkdCQTMyRnJvbUZsb2F0cyhiYWNrZ3JvdW5kQ29sb3IucmVkKCksCi0gICAgICAgICAgICBi
YWNrZ3JvdW5kQ29sb3IuZ3JlZW4oKSwgYmFja2dyb3VuZENvbG9yLmJsdWUoKSwKLSAgICAgICAg
ICAgIGJhY2tncm91bmRDb2xvci5hbHBoYSgpICogb3BhY2l0eSk7Ci0gICAgICAgIG1fdGV4dHVy
ZU1hcHBlci0+ZHJhd1NvbGlkQ29sb3IoY2xpcFJlY3QsIFRyYW5zZm9ybWF0aW9uTWF0cml4KCks
IENvbG9yKHJnYmEpKTsKLSAgICB9IGVsc2UKLSAgICAgICAgbV90ZXh0dXJlTWFwcGVyLT5jbGVh
ckNvbG9yKG1fdmlld0JhY2tncm91bmRDb2xvcik7CisgICAgYXV0byYgY29sb3IgPSBkcmF3c0Jh
Y2tncm91bmQgPyBiYWNrZ3JvdW5kQ29sb3IgOiBtX3ZpZXdCYWNrZ3JvdW5kQ29sb3I7CisgICAg
bV90ZXh0dXJlTWFwcGVyLT5jbGVhckNvbG9yKGNvbG9yKTsKIAotICAgIGlmIChjdXJyZW50Um9v
dExheWVyLT5vcGFjaXR5KCkgIT0gb3BhY2l0eSB8fCBjdXJyZW50Um9vdExheWVyLT50cmFuc2Zv
cm0oKSAhPSBtYXRyaXgpIHsKKyAgICBmbG9hdCBvcGFjaXR5ID0gZHJhd3NCYWNrZ3JvdW5kID8g
Y29sb3IuYWxwaGFBc0Zsb2F0KCkgOiAxOworICAgIGlmICghZHJhd3NCYWNrZ3JvdW5kICYmIChj
dXJyZW50Um9vdExheWVyLT5vcGFjaXR5KCkgIT0gb3BhY2l0eSkpCiAgICAgICAgIGN1cnJlbnRS
b290TGF5ZXItPnNldE9wYWNpdHkob3BhY2l0eSk7CisKKyAgICBpZiAoY3VycmVudFJvb3RMYXll
ci0+dHJhbnNmb3JtKCkgIT0gbWF0cml4KQogICAgICAgICBjdXJyZW50Um9vdExheWVyLT5zZXRU
cmFuc2Zvcm0obWF0cml4KTsKLSAgICB9CiAKICAgICBjdXJyZW50Um9vdExheWVyLT5wYWludCgp
OwogICAgIG1fZnBzQ291bnRlci51cGRhdGVGUFNBbmREaXNwbGF5KCptX3RleHR1cmVNYXBwZXIs
IGNsaXBSZWN0LmxvY2F0aW9uKCksIG1hdHJpeCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5oIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBo
aWNzU2NlbmUuaAppbmRleCBkNGJiNTgyNjhmZTc1MjIxNjEzOGQ1NjQxMTdiNGI3NmVjOGE5Zjkz
Li5kNjhmNGY5OTAyYmNmZGJhODhhZWI5NDU0YWE1NGFlNDgxOGI3N2JlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3NTY2VuZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmgKQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgfkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSgpOwogCiAgICAgdm9pZCBhcHBseVN0
YXRlQ2hhbmdlcyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1N0YXRl
PiYpOwotICAgIHZvaWQgcGFpbnRUb0N1cnJlbnRHTENvbnRleHQoY29uc3QgV2ViQ29yZTo6VHJh
bnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29u
c3QgV2ViQ29yZTo6Q29sb3ImIGJhY2tncm91bmRDb2xvciwgYm9vbCBkcmF3c0JhY2tncm91bmQs
IFdlYkNvcmU6OlRleHR1cmVNYXBwZXI6OlBhaW50RmxhZ3MgPSAwKTsKKyAgICB2b2lkIHBhaW50
VG9DdXJyZW50R0xDb250ZXh0KGNvbnN0IFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4Jiwg
Y29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6Q29sb3ImIGJhY2tncm91
bmRDb2xvciwgYm9vbCBkcmF3c0JhY2tncm91bmQsIFdlYkNvcmU6OlRleHR1cmVNYXBwZXI6OlBh
aW50RmxhZ3MgPSAwKTsKICAgICB2b2lkIGRldGFjaCgpOwogCiAgICAgLy8gVGhlIHBhaW50aW5n
IHRocmVhZCBtdXN0IGxvY2sgdGhlIG1haW4gdGhyZWFkIHRvIHVzZSBiZWxvdyB0d28gbWV0aG9k
cywgYmVjYXVzZSB0d28gbWV0aG9kcyBhY2Nlc3MgbWVtYmVycyB0aGF0IHRoZSBtYWluIHRocmVh
ZCBtYW5hZ2VzLiBTZWUgbV9jbGllbnQuCkBAIC0xMTMsNyArMTEzLDcgQEAgcHJpdmF0ZToKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyPiBtX3Jvb3RMYXll
cjsKIAogICAgIE5pY29zaWE6OlBsYXRmb3JtTGF5ZXI6OkxheWVySUQgbV9yb290TGF5ZXJJRCB7
IDAgfTsKLSAgICBXZWJDb3JlOjpDb2xvciBtX3ZpZXdCYWNrZ3JvdW5kQ29sb3IgeyBXZWJDb3Jl
OjpDb2xvcjo6d2hpdGUgfTsKKyAgICBXZWJDb3JlOjpDb2xvciBtX3ZpZXdCYWNrZ3JvdW5kQ29s
b3IgeyBXZWJDb3JlOjpDb2xvcjo6dHJhbnNwYXJlbnQgfTsKIAogICAgIFdlYkNvcmU6OlRleHR1
cmVNYXBwZXJGUFNDb3VudGVyIG1fZnBzQ291bnRlcjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJl
YWRlZENvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFw
aGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcAppbmRleCA3NTIy
Zjg0ZWE4ZjhhNjgyM2JiOTIxZmZjM2YwNWNmYmQ4N2ViNTgxLi5kZGJlZjU2Zjc1Njg3NWE0NmM3
ODZjMmQ1MDhiZTIxN2ZkYTg2YjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9D
b29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFk
ZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHAKQEAgLTE2Myw2ICsxNjMsMTMgQEAg
dm9pZCBUaHJlYWRlZENvbXBvc2l0b3I6OnNldERyYXdzQmFja2dyb3VuZChib29sIGRyYXdzQmFj
a2dyb3VuZCkKICAgICBtX2NvbXBvc2l0aW5nUnVuTG9vcC0+c2NoZWR1bGVVcGRhdGUoKTsKIH0K
IAordm9pZCBUaHJlYWRlZENvbXBvc2l0b3I6OnNldEJhY2tncm91bmRDb2xvcihjb25zdCBDb2xv
ciYgYmFja2dyb3VuZENvbG9yKQoreworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fYXR0cmlidXRl
cy5sb2NrKTsKKyAgICBtX2F0dHJpYnV0ZXMuYmFja2dyb3VuZENvbG9yID0gYmFja2dyb3VuZENv
bG9yOworICAgIG1fY29tcG9zaXRpbmdSdW5Mb29wLT5zY2hlZHVsZVVwZGF0ZSgpOworfQorCiB2
b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6dXBkYXRlVmlld3BvcnQoKQogewogICAgIG1fY29tcG9z
aXRpbmdSdW5Mb29wLT5zY2hlZHVsZVVwZGF0ZSgpOwpAQCAtMTk2LDYgKzIwMyw4IEBAIHZvaWQg
VGhyZWFkZWRDb21wb3NpdG9yOjpyZW5kZXJMYXllclRyZWUoKQogICAgIGZsb2F0IHNjYWxlRmFj
dG9yOwogICAgIGJvb2wgZHJhd3NCYWNrZ3JvdW5kOwogICAgIGJvb2wgbmVlZHNSZXNpemU7Cisg
ICAgV2ViQ29yZTo6Q29sb3IgYmFja2dyb3VuZENvbG9yOworCiAgICAgVmVjdG9yPFdlYkNvcmU6
OkNvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZT4gc3RhdGVzOwogCiAgICAgewpAQCAtMjA1LDYgKzIx
NCw3IEBAIHZvaWQgVGhyZWFkZWRDb21wb3NpdG9yOjpyZW5kZXJMYXllclRyZWUoKQogICAgICAg
ICBzY2FsZUZhY3RvciA9IG1fYXR0cmlidXRlcy5zY2FsZUZhY3RvcjsKICAgICAgICAgZHJhd3NC
YWNrZ3JvdW5kID0gbV9hdHRyaWJ1dGVzLmRyYXdzQmFja2dyb3VuZDsKICAgICAgICAgbmVlZHNS
ZXNpemUgPSBtX2F0dHJpYnV0ZXMubmVlZHNSZXNpemU7CisgICAgICAgIGJhY2tncm91bmRDb2xv
ciA9IG1fYXR0cmlidXRlcy5iYWNrZ3JvdW5kQ29sb3I7CiAKICAgICAgICAgc3RhdGVzID0gV1RG
TW92ZShtX2F0dHJpYnV0ZXMuc3RhdGVzKTsKIApAQCAtMjUzLDggKzI2Myw4IEBAIHZvaWQgVGhy
ZWFkZWRDb21wb3NpdG9yOjpyZW5kZXJMYXllclRyZWUoKQogICAgIH0KIAogICAgIG1fc2NlbmUt
PmFwcGx5U3RhdGVDaGFuZ2VzKHN0YXRlcyk7Ci0gICAgbV9zY2VuZS0+cGFpbnRUb0N1cnJlbnRH
TENvbnRleHQodmlld3BvcnRUcmFuc2Zvcm0sIDEsIEZsb2F0UmVjdCB7IEZsb2F0UG9pbnQgeyB9
LCB2aWV3cG9ydFNpemUgfSwKLSAgICAgICAgQ29sb3I6OnRyYW5zcGFyZW50LCAhZHJhd3NCYWNr
Z3JvdW5kLCBtX3BhaW50RmxhZ3MpOworICAgIG1fc2NlbmUtPnBhaW50VG9DdXJyZW50R0xDb250
ZXh0KHZpZXdwb3J0VHJhbnNmb3JtLCBGbG9hdFJlY3QgeyBGbG9hdFBvaW50IHsgfSwgdmlld3Bv
cnRTaXplIH0sCisgICAgICAgIGJhY2tncm91bmRDb2xvciwgZHJhd3NCYWNrZ3JvdW5kLCBtX3Bh
aW50RmxhZ3MpOwogCiAgICAgbV9jb250ZXh0LT5zd2FwQnVmZmVycygpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9z
aXRvci9UaHJlYWRlZENvbXBvc2l0b3IuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5oCmluZGV4
IDZkNzA1Mzg1MGRhZDU3YTE2NGYxOWU5MTg2ZjRmYTJhNmE4NjZhZmYuLmJjOWFjNjE2ZTM4MTI3
ODA0MDdiN2M5NmMyMWUyZDlmN2RhN2NjNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9z
aXRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhy
ZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5oCkBAIC03MSw2ICs3MSw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldFNjcm9sbFBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiwgZmxvYXQgc2NhbGUpOwogICAgIHZvaWQgc2V0Vmlld3BvcnRTaXplKGNvbnN0IFdlYkNvcmU6
OkludFNpemUmLCBmbG9hdCBzY2FsZSk7CiAgICAgdm9pZCBzZXREcmF3c0JhY2tncm91bmQoYm9v
bCk7CisgICAgdm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImKTsK
IAogICAgIHZvaWQgdXBkYXRlU2NlbmVTdGF0ZShjb25zdCBXZWJDb3JlOjpDb29yZGluYXRlZEdy
YXBoaWNzU3RhdGUmKTsKIApAQCAtMTE0LDcgKzExNSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGZs
b2F0IHNjYWxlRmFjdG9yIHsgMSB9OwogICAgICAgICBib29sIGRyYXdzQmFja2dyb3VuZCB7IHRy
dWUgfTsKICAgICAgICAgYm9vbCBuZWVkc1Jlc2l6ZSB7IGZhbHNlIH07Ci0KKyAgICAgICAgV2Vi
Q29yZTo6Q29sb3IgYmFja2dyb3VuZENvbG9yOwogICAgICAgICBWZWN0b3I8V2ViQ29yZTo6Q29v
cmRpbmF0ZWRHcmFwaGljc1N0YXRlPiBzdGF0ZXM7CiAKICAgICAgICAgYm9vbCBjbGllbnRSZW5k
ZXJzTmV4dEZyYW1lIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNl
c1dQRS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNXUEUudHh0CmluZGV4IDhlZTJmZWY0MmE2
NjQ3ODU5ZjM1ZjhkMzQ3OTNhZjk0YTAyOTM5M2UuLjg3NTgzYmFkMWZhNTViNDY2Yjg5NTIwN2I0
ZGYwNDA2ZDkxMTdhZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc1dQRS50eHQK
KysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzV1BFLnR4dApAQCAtMTY3LDYgKzE2Nyw3IEBAIFVJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXaW5kb3dQcm9wZXJ0aWVzLmNwcCBAbm8tdW5pZnkKIFVJ
UHJvY2Vzcy9BUEkvd3BlL0NvbXBvc2l0aW5nTWFuYWdlclByb3h5LmNwcCBAbm8tdW5pZnkKIFVJ
UHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9B
UEkvd3BlL1Njcm9sbEdlc3R1cmVDb250cm9sbGVyLmNwcCBAbm8tdW5pZnkKK1VJUHJvY2Vzcy9B
UEkvd3BlL1dlYktpdENvbG9yLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvd3BlL1dlYktp
dFNjcmlwdERpYWxvZ1dQRS5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRX
ZWJWaWV3QmFja2VuZC5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJW
aWV3V1BFLmNwcCBAbm8tdW5pZnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKaW5kZXggNjcyMDFkODllYWExZjNmMjBkZjhiOTFmMWRh
MTVkOWMyNThiNjM4Zi4uN2E4YTEwZjVjMWM4MDE1OWEyOGE3NjEzNjRhMjYyMDU5ZWVjN2M4YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmll
dy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmll
dy5jcHAKQEAgLTM5NjksNzQgKzM5NjksNiBAQCB2b2lkIHdlYmtpdFdlYlZpZXdXZWJQcm9jZXNz
VGVybWluYXRlZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRXZWJQcm9jZXNzVAogICAg
IGdfc2lnbmFsX2VtaXQod2ViVmlldywgc2lnbmFsc1tXRUJfUFJPQ0VTU19URVJNSU5BVEVEXSwg
MCwgcmVhc29uKTsKIH0KIAotI2lmIFBMQVRGT1JNKEdUSykKLS8qKgotICogd2Via2l0X3dlYl92
aWV3X3NldF9iYWNrZ3JvdW5kX2NvbG9yOgotICogQHdlYl92aWV3OiBhICNXZWJLaXRXZWJWaWV3
Ci0gKiBAcmdiYTogYSAjR2RrUkdCQQotICoKLSAqIFNldHMgdGhlIGNvbG9yIHRoYXQgd2lsbCBi
ZSB1c2VkIHRvIGRyYXcgdGhlIEB3ZWJfdmlldyBiYWNrZ3JvdW5kIGJlZm9yZQotICogdGhlIGFj
dHVhbCBjb250ZW50cyBhcmUgcmVuZGVyZWQuIE5vdGUgdGhhdCBpZiB0aGUgd2ViIHBhZ2UgbG9h
ZGVkIGluIEB3ZWJfdmlldwotICogc3BlY2lmaWVzIGEgYmFja2dyb3VuZCBjb2xvciwgaXQgd2ls
bCB0YWtlIHByZWNlZGVuY2Ugb3ZlciB0aGUgQHJnYmEgY29sb3IuCi0gKiBCeSBkZWZhdWx0IHRo
ZSBAd2ViX3ZpZXcgYmFja2dyb3VuZCBjb2xvciBpcyBvcGFxdWUgd2hpdGUuCi0gKiBOb3RlIHRo
YXQgdGhlIHBhcmVudCB3aW5kb3cgbXVzdCBoYXZlIGEgUkdCQSB2aXN1YWwgYW5kCi0gKiAjR3Rr
V2lkZ2V0OmFwcC1wYWludGFibGUgcHJvcGVydHkgc2V0IHRvICVUUlVFIGZvciBiYWNrZ3JvdW5k
cyBjb2xvcnMgdG8gd29yay4KLSAqCi0gKiA8aW5mb3JtYWxleGFtcGxlPjxwcm9ncmFtbGlzdGlu
Zz4KLSAqIHN0YXRpYyB2b2lkIGJyb3dzZXJfd2luZG93X3NldF9iYWNrZ3JvdW5kX2NvbG9yIChC
cm93c2VyV2luZG93ICp3aW5kb3csCi0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR2RrUkdCQSAqcmdiYSkKLSAqIHsKLSAqICAgICBXZWJL
aXRXZWJWaWV3ICp3ZWJfdmlldzsKLSAqICAgICBHZGtTY3JlZW4gKnNjcmVlbiA9IGd0a193aW5k
b3dfZ2V0X3NjcmVlbiAoR1RLX1dJTkRPVyAod2luZG93KSk7Ci0gKiAgICAgR2RrVmlzdWFsICpy
Z2JhX3Zpc3VhbCA9IGdka19zY3JlZW5fZ2V0X3JnYmFfdmlzdWFsIChzY3JlZW4pOwotICoKLSAq
ICAgICBpZiAoIXJnYmFfdmlzdWFsKQotICogICAgICAgICAgcmV0dXJuOwotICoKLSAqICAgICBn
dGtfd2lkZ2V0X3NldF92aXN1YWwgKEdUS19XSURHRVQgKHdpbmRvdyksIHJnYmFfdmlzdWFsKTsK
LSAqICAgICBndGtfd2lkZ2V0X3NldF9hcHBfcGFpbnRhYmxlIChHVEtfV0lER0VUICh3aW5kb3cp
LCBUUlVFKTsKLSAqCi0gKiAgICAgd2ViX3ZpZXcgPSBicm93c2VyX3dpbmRvd19nZXRfd2ViX3Zp
ZXcgKHdpbmRvdyk7Ci0gKiAgICAgd2Via2l0X3dlYl92aWV3X3NldF9iYWNrZ3JvdW5kX2NvbG9y
ICh3ZWJfdmlldywgcmdiYSk7Ci0gKiB9Ci0gKiA8L3Byb2dyYW1saXN0aW5nPjwvaW5mb3JtYWxl
eGFtcGxlPgotICoKLSAqIFNpbmNlOiAyLjgKLSAqLwotdm9pZCB3ZWJraXRfd2ViX3ZpZXdfc2V0
X2JhY2tncm91bmRfY29sb3IoV2ViS2l0V2ViVmlldyogd2ViVmlldywgY29uc3QgR2RrUkdCQSog
cmdiYSkKLXsKLSAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3
KSk7Ci0gICAgZ19yZXR1cm5faWZfZmFpbChyZ2JhKTsKLQotICAgIENvbG9yIGNvbG9yKCpyZ2Jh
KTsKLSAgICBhdXRvJiBwYWdlID0gZ2V0UGFnZSh3ZWJWaWV3KTsKLSAgICBpZiAocGFnZS5iYWNr
Z3JvdW5kQ29sb3IoKSA9PSBjb2xvcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgcGFnZS5zZXRC
YWNrZ3JvdW5kQ29sb3IoY29sb3IpOwotICAgIHBhZ2Uuc2V0RHJhd3NCYWNrZ3JvdW5kKGNvbG9y
ID09IENvbG9yOjp3aGl0ZSk7Ci19Ci0KLS8qKgotICogd2Via2l0X3dlYl92aWV3X2dldF9iYWNr
Z3JvdW5kX2NvbG9yOgotICogQHdlYl92aWV3OiBhICNXZWJLaXRXZWJWaWV3Ci0gKiBAcmdiYTog
KG91dCk6IGEgI0dka1JHQkEgdG8gZmlsbCBpbiB3aXRoIHRoZSBiYWNrZ3JvdW5kIGNvbG9yCi0g
KgotICogR2V0cyB0aGUgY29sb3IgdGhhdCBpcyB1c2VkIHRvIGRyYXcgdGhlIEB3ZWJfdmlldyBi
YWNrZ3JvdW5kIGJlZm9yZQotICogdGhlIGFjdHVhbCBjb250ZW50cyBhcmUgcmVuZGVyZWQuCi0g
KiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUgYWxzbyB3ZWJraXRfd2ViX3ZpZXdfc2V0X2JhY2tn
cm91bmRfY29sb3IoKQotICoKLSAqIFNpbmNlOiAyLjgKLSAqLwotdm9pZCB3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X2JhY2tncm91bmRfY29sb3IoV2ViS2l0V2ViVmlldyogd2ViVmlldywgR2RrUkdCQSog
cmdiYSkKLXsKLSAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3
KSk7Ci0gICAgZ19yZXR1cm5faWZfZmFpbChyZ2JhKTsKLQotICAgICpyZ2JhID0gZ2V0UGFnZSh3
ZWJWaWV3KS5iYWNrZ3JvdW5kQ29sb3IoKTsKLX0KLSNlbmRpZiAvLyBQTEFURk9STShHVEspCi0K
IC8qCiAgKiB3ZWJraXRfd2ViX3ZpZXdfaXNfZWRpdGFibGU6CiAgKiBAd2ViX3ZpZXc6IGEgI1dl
YktpdFdlYlZpZXcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViVmlld0d0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYlZpZXdHdGsuY3BwCmluZGV4IGJjODIxNzk5MTI4MjZhYjQ3YWY3Yzk2NTc1ZTFiYThi
YTQyNmU4ODEuLmVkNTY5ZTYyZGMwYjU0OWIzMWE3Y2RkNzQwNzNiMjY0Y2I4NGJmNTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0d0ay5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3R3Rr
LmNwcApAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgIldlYktpdFNjcmlwdERpYWxvZ0ltcGwu
aCIKICNpbmNsdWRlICJXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJL
aXRXZWJWaWV3UHJpdmF0ZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3IuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0d0a1V0aWxpdGllcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1EaXNw
bGF5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVNjcmVlbi5oPgpAQCAtMzU5LDMgKzM2
MCw3MSBAQCBHdGtXaWRnZXQqIHdlYmtpdF93ZWJfdmlld19uZXdfd2l0aF91c2VyX2NvbnRlbnRf
bWFuYWdlcihXZWJLaXRVc2VyQ29udGVudE1hbmFnZQogCiAgICAgcmV0dXJuIEdUS19XSURHRVQo
Z19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9WSUVXLCAidXNlci1jb250ZW50LW1hbmFnZXIi
LCB1c2VyQ29udGVudE1hbmFnZXIsIG51bGxwdHIpKTsKIH0KKworLyoqCisgKiB3ZWJraXRfd2Vi
X3ZpZXdfc2V0X2JhY2tncm91bmRfY29sb3I6CisgKiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZp
ZXcKKyAqIEByZ2JhOiBhICNHZGtSR0JBCisgKgorICogU2V0cyB0aGUgY29sb3IgdGhhdCB3aWxs
IGJlIHVzZWQgdG8gZHJhdyB0aGUgQHdlYl92aWV3IGJhY2tncm91bmQgYmVmb3JlCisgKiB0aGUg
YWN0dWFsIGNvbnRlbnRzIGFyZSByZW5kZXJlZC4gTm90ZSB0aGF0IGlmIHRoZSB3ZWIgcGFnZSBs
b2FkZWQgaW4gQHdlYl92aWV3CisgKiBzcGVjaWZpZXMgYSBiYWNrZ3JvdW5kIGNvbG9yLCBpdCB3
aWxsIHRha2UgcHJlY2VkZW5jZSBvdmVyIHRoZSBAcmdiYSBjb2xvci4KKyAqIEJ5IGRlZmF1bHQg
dGhlIEB3ZWJfdmlldyBiYWNrZ3JvdW5kIGNvbG9yIGlzIG9wYXF1ZSB3aGl0ZS4KKyAqIE5vdGUg
dGhhdCB0aGUgcGFyZW50IHdpbmRvdyBtdXN0IGhhdmUgYSBSR0JBIHZpc3VhbCBhbmQKKyAqICNH
dGtXaWRnZXQ6YXBwLXBhaW50YWJsZSBwcm9wZXJ0eSBzZXQgdG8gJVRSVUUgZm9yIGJhY2tncm91
bmRzIGNvbG9ycyB0byB3b3JrLgorICoKKyAqIDxpbmZvcm1hbGV4YW1wbGU+PHByb2dyYW1saXN0
aW5nPgorICogc3RhdGljIHZvaWQgYnJvd3Nlcl93aW5kb3dfc2V0X2JhY2tncm91bmRfY29sb3Ig
KEJyb3dzZXJXaW5kb3cgKndpbmRvdywKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHZGtSR0JBICpyZ2JhKQorICogeworICogICAgIFdl
YktpdFdlYlZpZXcgKndlYl92aWV3OworICogICAgIEdka1NjcmVlbiAqc2NyZWVuID0gZ3RrX3dp
bmRvd19nZXRfc2NyZWVuIChHVEtfV0lORE9XICh3aW5kb3cpKTsKKyAqICAgICBHZGtWaXN1YWwg
KnJnYmFfdmlzdWFsID0gZ2RrX3NjcmVlbl9nZXRfcmdiYV92aXN1YWwgKHNjcmVlbik7CisgKgor
ICogICAgIGlmICghcmdiYV92aXN1YWwpCisgKiAgICAgICAgICByZXR1cm47CisgKgorICogICAg
IGd0a193aWRnZXRfc2V0X3Zpc3VhbCAoR1RLX1dJREdFVCAod2luZG93KSwgcmdiYV92aXN1YWwp
OworICogICAgIGd0a193aWRnZXRfc2V0X2FwcF9wYWludGFibGUgKEdUS19XSURHRVQgKHdpbmRv
dyksIFRSVUUpOworICoKKyAqICAgICB3ZWJfdmlldyA9IGJyb3dzZXJfd2luZG93X2dldF93ZWJf
dmlldyAod2luZG93KTsKKyAqICAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0X2JhY2tncm91bmRfY29s
b3IgKHdlYl92aWV3LCByZ2JhKTsKKyAqIH0KKyAqIDwvcHJvZ3JhbWxpc3Rpbmc+PC9pbmZvcm1h
bGV4YW1wbGU+CisgKgorICogU2luY2U6IDIuOAorICovCit2b2lkIHdlYmtpdF93ZWJfdmlld19z
ZXRfYmFja2dyb3VuZF9jb2xvcihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBHZGtSR0JB
KiByZ2JhKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZp
ZXcpKTsKKyAgICBnX3JldHVybl9pZl9mYWlsKHJnYmEpOworCisgICAgV2ViQ29yZTo6Q29sb3Ig
Y29sb3IoKnJnYmEpOworICAgIGF1dG8mIHBhZ2UgPSAqd2Via2l0V2ViVmlld0Jhc2VHZXRQYWdl
KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViS2l0V2ViVmlld0Jhc2UqPih3ZWJWaWV3KSk7CisgICAgaWYg
KHBhZ2UuYmFja2dyb3VuZENvbG9yKCkgPT0gY29sb3IpCisgICAgICAgIHJldHVybjsKKworICAg
IGlmICghY29sb3IuaXNPcGFxdWUoKSkKKyAgICAgICAgcGFnZS5zZXREcmF3c0JhY2tncm91bmQo
ZmFsc2UpOworICAgIHBhZ2Uuc2V0QmFja2dyb3VuZENvbG9yKGNvbG9yKTsKK30KKworLyoqCisg
KiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2JhY2tncm91bmRfY29sb3I6CisgKiBAd2ViX3ZpZXc6IGEg
I1dlYktpdFdlYlZpZXcKKyAqIEByZ2JhOiAob3V0KTogYSAjR2RrUkdCQSB0byBmaWxsIGluIHdp
dGggdGhlIGJhY2tncm91bmQgY29sb3IKKyAqCisgKiBHZXRzIHRoZSBjb2xvciB0aGF0IGlzIHVz
ZWQgdG8gZHJhdyB0aGUgQHdlYl92aWV3IGJhY2tncm91bmQgYmVmb3JlCisgKiB0aGUgYWN0dWFs
IGNvbnRlbnRzIGFyZSByZW5kZXJlZC4KKyAqIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZSBhbHNv
IHdlYmtpdF93ZWJfdmlld19zZXRfYmFja2dyb3VuZF9jb2xvcigpCisgKgorICogU2luY2U6IDIu
OAorICovCit2b2lkIHdlYmtpdF93ZWJfdmlld19nZXRfYmFja2dyb3VuZF9jb2xvcihXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3LCBHZGtSR0JBKiByZ2JhKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwo
V0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpKTsKKyAgICBnX3JldHVybl9pZl9mYWlsKHJnYmEp
OworCisgICAgYXV0byYgcGFnZSA9ICp3ZWJraXRXZWJWaWV3QmFzZUdldFBhZ2UocmVpbnRlcnBy
ZXRfY2FzdDxXZWJLaXRXZWJWaWV3QmFzZSo+KHdlYlZpZXcpKTsKKyAgICAqcmdiYSA9IHBhZ2Uu
YmFja2dyb3VuZENvbG9yKCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvd3BlL1dlYktpdENvbG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93
cGUvV2ViS2l0Q29sb3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRhNGE2ZTEzMTk5NzllNDMyOTliZDc2MjAy
NTk3ZmVjOGRiZGYzNmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvd3BlL1dlYktpdENvbG9yLmNwcApAQCAtMCwwICsxLDE3OSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxOSBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAq
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
V2ViS2l0Q29sb3IuaCIKKworI2luY2x1ZGUgIldlYktpdENvbG9yUHJpdmF0ZS5oIgorCisvKioK
KyAqIFNFQ1RJT046IFdlYktpdENvbG9yCisgKiBAU2hvcnRfZGVzY3JpcHRpb246IEEgd2ViIHZp
ZXcgYmFja2dyb3VuZCBjb2xvcgorICogQFRpdGxlOiBXZWJLaXRDb2xvcgorICogQFNlZV9hbHNv
OiAjV2ViS2l0V2ViVmlldy4KKyAqCisgKiBBIFdlYktpdENvbG9yIGlzIGEgYm94ZWQgdHlwZSB3
cmFwcGluZyBhIFdlYkNvcmUgY29sb3IuCisgKgorICogU2luY2U6IDIuMjQKKyAqLworCitzdHJ1
Y3QgX1dlYktpdENvbG9yIHsKKyAgICBfV2ViS2l0Q29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3Im
IGNvbG9yKQorICAgICAgICA6IG1fY29sb3IoY29sb3IpCisgICAgeworICAgIH0KKworICAgIH5f
V2ViS2l0Q29sb3IoKQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBXZWJDb3JlOjpDb2xvciYg
Y29sb3IoKSBjb25zdCB7IHJldHVybiBtX2NvbG9yOyB9CisKKyAgICBXZWJDb3JlOjpDb2xvciBt
X2NvbG9yOworICAgIGludCByZWZlcmVuY2VDb3VudCB7IDEgfTsKK307CisKK3N0YXRpYyBXZWJL
aXRDb2xvciogd2Via2l0Q29sb3JSZWYoV2ViS2l0Q29sb3IqIGNvbG9yKQoreworICAgIEFTU0VS
VChjb2xvcik7CisgICAgZ19hdG9taWNfaW50X2luYygmY29sb3ItPnJlZmVyZW5jZUNvdW50KTsK
KyAgICByZXR1cm4gY29sb3I7Cit9CisKK0dfREVGSU5FX0JPWEVEX1RZUEUoV2ViS2l0Q29sb3Is
IHdlYmtpdF9jb2xvciwgd2Via2l0Q29sb3JSZWYsIHdlYmtpdENvbG9yVW5yZWYpCisKK3ZvaWQg
d2Via2l0Q29sb3JVbnJlZihXZWJLaXRDb2xvciogY29sb3IpCit7CisgICAgQVNTRVJUKGNvbG9y
KTsKKyAgICBpZiAoZ19hdG9taWNfaW50X2RlY19hbmRfdGVzdCgmY29sb3ItPnJlZmVyZW5jZUNv
dW50KSkgeworICAgICAgICBjb2xvci0+fldlYktpdENvbG9yKCk7CisgICAgICAgIGZhc3RGcmVl
KGNvbG9yKTsKKyAgICB9Cit9CisKK1dlYktpdENvbG9yKiB3ZWJraXRDb2xvckZyb21Db2xvcihj
b25zdCBXZWJDb3JlOjpDb2xvciYgY29sb3IpCit7CisgICAgYXV0byogcmVzdWx0ID0gc3RhdGlj
X2Nhc3Q8V2ViS2l0Q29sb3IqPihmYXN0TWFsbG9jKHNpemVvZihXZWJLaXRDb2xvcikpKTsKKyAg
ICBuZXcgKHJlc3VsdCkgV2ViS2l0Q29sb3IoY29sb3IpOworICAgIHJldHVybiByZXN1bHQ7Cit9
CisKK2NvbnN0IFdlYkNvcmU6OkNvbG9yJiB3ZWJraXRDb2xvckdldENvbG9yKFdlYktpdENvbG9y
KiBiYWNrZ3JvdW5kQ29sb3IpCit7CisgICAgcmV0dXJuIGJhY2tncm91bmRDb2xvci0+Y29sb3Io
KTsKK30KKworLyoqCisgKiB3ZWJraXRfY29sb3JfbmV3X2Zyb21fc3RyaW5nOgorICogQGNvbG9y
U3RyaW5nOiBjb2xvciByZXByZXNlbnRhdGlvbiBhcyBjb2xvciBuaWNrbmFtZSBvciBIRVggc3Ry
aW5nCisgKgorICogQ3JlYXRlIGEgbmV3ICNXZWJLaXRDb2xvciBmb3IgdGhlIGdpdmVuIGNvbG9y
IHN0cmluZworICogcmVwcmVzZW50YXRpb24uIFRoZXJlIGFyZSB0d28gdmFsaWQgcmVwcmVzZW50
YXRpb24gdHlwZXM6IHN0YW5kYXJkIGNvbG9yCisgKiBuYW1lcyAoc2VlIGh0dHBzOi8vaHRtbGNv
bG9yY29kZXMuY29tL2NvbG9yLW5hbWVzLyBmb3IgaW5zdGFuY2UpIG9yIEhFWAorICogdmFsdWVz
LgorICoKKyAqIFJldHVybnM6IGEgbmV3bHkgY3JlYXRlZCAjV2ViS2l0Q29sb3IKKyAqCisgKiBT
aW5jZTogMi4yNAorICovCitXZWJLaXRDb2xvciogd2Via2l0X2NvbG9yX25ld19mcm9tX3N0cmlu
Zyhjb25zdCBjaGFyKiBjb2xvclN0cmluZykKK3sKKyAgICByZXR1cm4gd2Via2l0Q29sb3JGcm9t
Q29sb3IoV2ViQ29yZTo6Q29sb3IoY29sb3JTdHJpbmcpKTsKK30KKworLyoqCisgKiB3ZWJraXRf
Y29sb3JfZ2V0X3JlZF9jaGFubmVsOgorICogQGNvbG9yOiBhICNXZWJLaXRDb2xvcgorICoKKyAq
IFByb3ZpZGVzIHJlYWQtb25seSBhY2Nlc3MgdG8gdGhlIHJlZCBjb21wb25lbnQgb2YgdGhlIGNv
bG9yLgorICoKKyAqIFJldHVybnM6IGEgI2dpbnQgY2xhbXBlZCBiZXR3ZWVuIDAgYW5kIDI1NS4K
KyAqCisgKiBTaW5jZTogMi4yNAorICovCitnaW50IHdlYmtpdF9jb2xvcl9nZXRfcmVkX2NoYW5u
ZWwoV2ViS2l0Q29sb3IqIGNvbG9yKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGNvbG9y
LCAwKTsKKyAgICByZXR1cm4gY29sb3ItPmNvbG9yKCkucmVkKCk7Cit9CisKKy8qKgorICogd2Vi
a2l0X2NvbG9yX2dldF9ncmVlbl9jaGFubmVsOgorICogQGNvbG9yOiBhICNXZWJLaXRDb2xvcgor
ICoKKyAqIFByb3ZpZGVzIHJlYWQtb25seSBhY2Nlc3MgdG8gdGhlIGdyZWVuIGNvbXBvbmVudCBv
ZiB0aGUgY29sb3IuCisgKgorICogUmV0dXJuczogYSAjZ2ludCBjbGFtcGVkIGJldHdlZW4gMCBh
bmQgMjU1LgorICoKKyAqIFNpbmNlOiAyLjI0CisgKi8KK2dpbnQgd2Via2l0X2NvbG9yX2dldF9n
cmVlbl9jaGFubmVsKFdlYktpdENvbG9yKiBjb2xvcikKK3sKKyAgICBnX3JldHVybl92YWxfaWZf
ZmFpbChjb2xvciwgMCk7CisgICAgcmV0dXJuIGNvbG9yLT5jb2xvcigpLmdyZWVuKCk7Cit9CisK
Ky8qKgorICogd2Via2l0X2NvbG9yX2dldF9ibHVlX2NoYW5uZWw6CisgKiBAY29sb3I6IGEgI1dl
YktpdENvbG9yCisgKgorICogUHJvdmlkZXMgcmVhZC1vbmx5IGFjY2VzcyB0byB0aGUgYmx1ZSBj
b21wb25lbnQgb2YgdGhlIGNvbG9yLgorICoKKyAqIFJldHVybnM6IGEgI2dpbnQgY2xhbXBlZCBi
ZXR3ZWVuIDAgYW5kIDI1NS4KKyAqCisgKiBTaW5jZTogMi4yNAorICovCitnaW50IHdlYmtpdF9j
b2xvcl9nZXRfYmx1ZV9jaGFubmVsKFdlYktpdENvbG9yKiBjb2xvcikKK3sKKyAgICBnX3JldHVy
bl92YWxfaWZfZmFpbChjb2xvciwgMCk7CisgICAgcmV0dXJuIGNvbG9yLT5jb2xvcigpLmJsdWUo
KTsKK30KKworLyoqCisgKiB3ZWJraXRfY29sb3JfZ2V0X2FscGhhX2NoYW5uZWw6CisgKiBAY29s
b3I6IGEgI1dlYktpdENvbG9yCisgKgorICogUHJvdmlkZXMgcmVhZC1vbmx5IGFjY2VzcyB0byB0
aGUgYWxwaGEgY29tcG9uZW50IG9mIHRoZSBjb2xvci4KKyAqCisgKiBSZXR1cm5zOiBhICNnaW50
IGNsYW1wZWQgYmV0d2VlbiAwIGFuZCAyNTUuCisgKgorICogU2luY2U6IDIuMjQKKyAqLworZ2lu
dCB3ZWJraXRfY29sb3JfZ2V0X2FscGhhX2NoYW5uZWwoV2ViS2l0Q29sb3IqIGNvbG9yKQorewor
ICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGNvbG9yLCAwKTsKKyAgICByZXR1cm4gY29sb3ItPmNv
bG9yKCkuYWxwaGEoKTsKK30KKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlIDw+IFdlYktp
dENvbG9yKiByZWZHUHRyKFdlYktpdENvbG9yKiBwdHIpCit7CisgICAgaWYgKHB0cikKKyAgICAg
ICAgd2Via2l0Q29sb3JSZWYocHRyKTsKKyAgICByZXR1cm4gcHRyOworfQorCit0ZW1wbGF0ZSA8
PiB2b2lkIGRlcmVmR1B0cihXZWJLaXRDb2xvciogcHRyKQoreworICAgIGlmIChwdHIpCisgICAg
ICAgIHdlYmtpdENvbG9yVW5yZWYocHRyKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRDb2xvci5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL3dwZS9XZWJLaXRDb2xvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU1NTlkMjJmZWU1YmFkODM1
OGY0N2UxNmNiODFiMGExZmM4NWY1MTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdENvbG9yLmgKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxOSBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICog
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWYgIWRlZmluZWQoX19XRUJLSVRfSF9J
TlNJREVfXykgJiYgIWRlZmluZWQoV0VCS0lUMl9DT01QSUxBVElPTikKKyNlcnJvciAiT25seSA8
d3BlL3dlYmtpdC5oPiBjYW4gYmUgaW5jbHVkZWQgZGlyZWN0bHkuIgorI2VuZGlmCisKKyNpZm5k
ZWYgV2ViS2l0Q29sb3JfaAorI2RlZmluZSBXZWJLaXRDb2xvcl9oCisKKyNpbmNsdWRlIDxnbGli
LW9iamVjdC5oPgorI2luY2x1ZGUgPHdwZS9XZWJLaXREZWZpbmVzLmg+CisKK0dfQkVHSU5fREVD
TFMKKworI2RlZmluZSBXRUJLSVRfVFlQRV9DT0xPUiAod2Via2l0X2NvbG9yX2dldF90eXBlKCkp
CisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRDb2xvciBXZWJLaXRDb2xvcjsKKworV0VCS0lUX0FQ
SSBHVHlwZQord2Via2l0X2NvbG9yX2dldF90eXBlICAgICAgICAgICAodm9pZCk7CisKK1dFQktJ
VF9BUEkgV2ViS2l0Q29sb3IgKgord2Via2l0X2NvbG9yX25ld19mcm9tX3N0cmluZyAgICAoY29u
c3QgY2hhciogY29sb3JTdHJpbmcpOworCitXRUJLSVRfQVBJIGdpbnQKK3dlYmtpdF9jb2xvcl9n
ZXRfcmVkX2NoYW5uZWwgICAgKFdlYktpdENvbG9yKiBjb2xvcik7CisKK1dFQktJVF9BUEkgZ2lu
dAord2Via2l0X2NvbG9yX2dldF9ncmVlbl9jaGFubmVsICAoV2ViS2l0Q29sb3IqIGNvbG9yKTsK
KworV0VCS0lUX0FQSSBnaW50Cit3ZWJraXRfY29sb3JfZ2V0X2JsdWVfY2hhbm5lbCAgIChXZWJL
aXRDb2xvciogY29sb3IpOworCitXRUJLSVRfQVBJIGdpbnQKK3dlYmtpdF9jb2xvcl9nZXRfYWxw
aGFfY2hhbm5lbCAgKFdlYktpdENvbG9yKiBjb2xvcik7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRp
ZiAvKiBXZWJLaXRDb2xvcl9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvd3BlL1dlYktpdENvbG9yUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL3dwZS9XZWJLaXRDb2xvclByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMGJiODY1NjQ2MWQyNDBl
YTBkYzI2MTlkMDE0NGU2N2M0MzNjNWE3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRDb2xvclByaXZhdGUuaApAQCAtMCwwICsxLDM3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
KyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJXZWJLaXRDb2xvci5oIgorCisjaW5jbHVkZSA8
d3RmL2dsaWIvR1JlZlB0ci5oPgorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGUgPD4gV2Vi
S2l0Q29sb3IqIHJlZkdQdHIoV2ViS2l0Q29sb3IqIHB0cik7Cit0ZW1wbGF0ZSA8PiB2b2lkIGRl
cmVmR1B0cihXZWJLaXRDb2xvciogcHRyKTsKKworfQorCit2b2lkIHdlYmtpdENvbG9yVW5yZWYo
V2ViS2l0Q29sb3IqKTsKKworV2ViS2l0Q29sb3IqIHdlYmtpdENvbG9yRnJvbUNvbG9yKGNvbnN0
IFdlYkNvcmU6OkNvbG9yJik7Citjb25zdCBXZWJDb3JlOjpDb2xvciYgd2Via2l0Q29sb3JHZXRD
b2xvcihXZWJLaXRDb2xvciopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL3dwZS9XZWJLaXRXZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3Bl
L1dlYktpdFdlYlZpZXcuaAppbmRleCA0MTAyYTc1MjZkNmJkZjAxM2NiYjkwNGE1MjQyNWQ2MWQx
MmUzY2Q5Li45ZGYzODgzOWVlN2Q0MjZhMjBlMTQ1OGFkNTU5MTMyYzk4OGYyZDdhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXcuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXcuaApAQCAtNDks
NiArNDksNyBAQAogI2luY2x1ZGUgPHdwZS9XZWJLaXRXZWJDb250ZXh0Lmg+CiAjaW5jbHVkZSA8
d3BlL1dlYktpdFdlYlJlc291cmNlLmg+CiAjaW5jbHVkZSA8d3BlL1dlYktpdFdlYlZpZXdCYWNr
ZW5kLmg+CisjaW5jbHVkZSA8d3BlL1dlYktpdENvbG9yLmg+CiAjaW5jbHVkZSA8d3BlL1dlYktp
dFdlYlZpZXdTZXNzaW9uU3RhdGUuaD4KICNpbmNsdWRlIDx3cGUvV2ViS2l0V2luZG93UHJvcGVy
dGllcy5oPgogCkBAIC01MTcsNiArNTE4LDEyIEBAIFdFQktJVF9BUEkgdm9pZAogd2Via2l0X3dl
Yl92aWV3X3JlbW92ZV9mcmFtZV9kaXNwbGF5ZWRfY2FsbGJhY2sgICAgICAoV2ViS2l0V2ViVmll
dyAgICAgICAgICAgICAgICp3ZWJfdmlldywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50ICAgICAgICAgICAgICAgICAgICAgICAgaWQp
OwogCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF93ZWJfdmlld19zZXRfYmFja2dyb3VuZF9jb2xv
ciAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAgKndlYl92aWV3
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
V2ViS2l0Q29sb3IgICAgICAgICAgICAgICAgICAqY29sb3IpOworV0VCS0lUX0FQSSBXZWJLaXRD
b2xvciAqCit3ZWJraXRfd2ViX3ZpZXdfZ2V0X2JhY2tncm91bmRfY29sb3IgICAgICAgICAgICAg
ICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgICp3ZWJfdmlldyk7CisKIEdfRU5EX0RF
Q0xTCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dw
ZS9XZWJLaXRXZWJWaWV3V1BFLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUv
V2ViS2l0V2ViVmlld1dQRS5jcHAKaW5kZXggYTM0OTVlODUyZTE5ZjkyZDFjNGYwZTkzN2I0Yjlm
MTE4MzJlYWRhNC4uMzUyN2RjNmQ1Yzg3ZTQ1NWMwODEzODEwYjA2ZTQxNGNiNTQ5NTYzZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3V1BF
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXdX
UEUuY3BwCkBAIC0yMCw2ICsyMCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
V2ViS2l0V2ViVmlldy5oIgogCisjaW5jbHVkZSAiV2ViS2l0Q29sb3JQcml2YXRlLmgiCiAjaW5j
bHVkZSAiV2ViS2l0V2ViVmlld1ByaXZhdGUuaCIKIAogZ2Jvb2xlYW4gd2Via2l0V2ViVmlld0F1
dGhlbnRpY2F0ZShXZWJLaXRXZWJWaWV3KiwgV2ViS2l0QXV0aGVudGljYXRpb25SZXF1ZXN0KikK
QEAgLTE3OCwzICsxNzksNDggQEAgV2ViS2l0V2ViVmlldyogd2Via2l0X3dlYl92aWV3X25ld193
aXRoX3VzZXJfY29udGVudF9tYW5hZ2VyKFdlYktpdFdlYlZpZXdCYWNrZW4KICAgICAgICAgInVz
ZXItY29udGVudC1tYW5hZ2VyIiwgdXNlckNvbnRlbnRNYW5hZ2VyLAogICAgICAgICBudWxscHRy
KSk7CiB9CisKKy8qKgorICogd2Via2l0X3dlYl92aWV3X3NldF9iYWNrZ3JvdW5kX2NvbG9yOgor
ICogQHdlYl92aWV3OiBhICNXZWJLaXRXZWJWaWV3CisgKiBAYmFja2dyb3VuZENvbG9yOiBhICNX
ZWJLaXRDb2xvcgorICoKKyAqIFNldHMgdGhlIGNvbG9yIHRoYXQgd2lsbCBiZSB1c2VkIHRvIGRy
YXcgdGhlIEB3ZWJfdmlldyBiYWNrZ3JvdW5kIGJlZm9yZQorICogdGhlIGFjdHVhbCBjb250ZW50
cyBhcmUgcmVuZGVyZWQuIE5vdGUgdGhhdCBpZiB0aGUgd2ViIHBhZ2UgbG9hZGVkIGluIEB3ZWJf
dmlldworICogc3BlY2lmaWVzIGEgYmFja2dyb3VuZCBjb2xvciwgaXQgd2lsbCB0YWtlIHByZWNl
ZGVuY2Ugb3ZlciB0aGUgYmFja2dyb3VuZCBjb2xvci4KKyAqIEJ5IGRlZmF1bHQgdGhlIEB3ZWJf
dmlldyBiYWNrZ3JvdW5kIGNvbG9yIGlzIG9wYXF1ZSB3aGl0ZS4KKyAqCisgKiBTaW5jZTogMi4y
NAorICovCit2b2lkIHdlYmtpdF93ZWJfdmlld19zZXRfYmFja2dyb3VuZF9jb2xvcihXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRDb2xvciogYmFja2dyb3VuZENvbG9yKQoreworICAgIGdf
cmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpKTsKKyAgICBnX3JldHVy
bl9pZl9mYWlsKGJhY2tncm91bmRDb2xvcik7CisKKyAgICBhdXRvJiBwYWdlID0gd2Via2l0V2Vi
Vmlld0dldFBhZ2Uod2ViVmlldyk7CisgICAgYXV0byYgY29sb3IgPSB3ZWJraXRDb2xvckdldENv
bG9yKGJhY2tncm91bmRDb2xvcik7CisgICAgaWYgKCFjb2xvci5pc09wYXF1ZSgpKQorICAgICAg
ICBwYWdlLnNldERyYXdzQmFja2dyb3VuZChmYWxzZSk7CisKKyAgICBwYWdlLnNldEJhY2tncm91
bmRDb2xvcihjb2xvcik7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl92aWV3X2dldF9iYWNrZ3Jv
dW5kX2NvbG9yOgorICogQHdlYl92aWV3OiBhICNXZWJLaXRXZWJWaWV3CisgKgorICogR2V0cyB0
aGUgY29sb3IgdGhhdCBpcyB1c2VkIHRvIGRyYXcgdGhlIEB3ZWJfdmlldyBiYWNrZ3JvdW5kIGJl
Zm9yZSB0aGUKKyAqIGFjdHVhbCBjb250ZW50cyBhcmUgcmVuZGVyZWQuIEZvciBtb3JlIGluZm9y
bWF0aW9uIHNlZSBhbHNvCisgKiB3ZWJraXRfd2ViX3ZpZXdfc2V0X2JhY2tncm91bmRfY29sb3Io
KS4KKyAqCisgKiBSZXR1cm5zOiBhICNXZWJLaXRDb2xvcgorICoKKyAqIFNpbmNlOiAyLjI0Cisg
Ki8KK1dlYktpdENvbG9yKiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2JhY2tncm91bmRfY29sb3IoV2Vi
S2l0V2ViVmlldyogd2ViVmlldykKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRf
SVNfV0VCX1ZJRVcod2ViVmlldyksIG51bGxwdHIpOworICAgIGF1dG8mIHBhZ2UgPSB3ZWJraXRX
ZWJWaWV3R2V0UGFnZSh3ZWJWaWV3KTsKKworICAgIHJldHVybiB3ZWJraXRDb2xvckZyb21Db2xv
cihwYWdlLmJhY2tncm91bmRDb2xvcigpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS93cGUvZG9jcy93cGUtMC4xLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS93cGUvZG9jcy93cGUtMC4xLXNlY3Rpb25zLnR4dAppbmRleCA2Mjhk
YjQyNTJhNGQyYmY0OGY0OTBkYTU0MDg3YWM0YzJjOTViYzkxLi5mN2E2YjQ0ZDk2YzMxZTA4N2Y4
MTYxZDllMDMzNTZhNjcyN2U3YTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvd3BlL2RvY3Mvd3BlLTAuMS1zZWN0aW9ucy50eHQKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dwZS0wLjEtc2VjdGlvbnMudHh0CkBAIC0yMDYsNiArMjA2
LDggQEAgd2Via2l0X3dlYl92aWV3X3Jlc3RvcmVfc2Vzc2lvbl9zdGF0ZQogd2Via2l0X3dlYl92
aWV3X2dldF9tYWluX3Jlc291cmNlCiB3ZWJraXRfd2ViX3ZpZXdfYWRkX2ZyYW1lX2Rpc3BsYXll
ZF9jYWxsYmFjawogd2Via2l0X3dlYl92aWV3X3JlbW92ZV9mcmFtZV9kaXNwbGF5ZWRfY2FsbGJh
Y2sKK3dlYmtpdF93ZWJfdmlld19nZXRfYmFja2dyb3VuZF9jb2xvcgord2Via2l0X3dlYl92aWV3
X3NldF9iYWNrZ3JvdW5kX2NvbG9yCiAKIDxTVUJTRUNUSU9OIFdlYktpdEphdmFzY3JpcHRSZXN1
bHQ+CiBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0CkBAIC0yNjYsNiArMjY4LDIwIEBAIHdlYmtpdF93
ZWJfdmlld19iYWNrZW5kX25ldwogd2Via2l0X3dlYl92aWV3X2JhY2tlbmRfZ2V0X3R5cGUKIDwv
U0VDVElPTj4KIAorPFNFQ1RJT04+Cis8RklMRT5XZWJLaXRDb2xvcjwvRklMRT4KK1dFQktJVF9U
WVBFX0NPTE9SCitXZWJLaXRDb2xvcgord2Via2l0X2NvbG9yX25ld19mcm9tX3N0cmluZword2Vi
a2l0X2NvbG9yX2dldF9yZWRfY2hhbm5lbAord2Via2l0X2NvbG9yX2dldF9ncmVlbl9jaGFubmVs
Cit3ZWJraXRfY29sb3JfZ2V0X2JsdWVfY2hhbm5lbAord2Via2l0X2NvbG9yX2dldF9hbHBoYV9j
aGFubmVsCisKKzxTVUJTRUNUSU9OIFByaXZhdGU+Cit3ZWJraXRfY29sb3JfZ2V0X3R5cGUKKzwv
U0VDVElPTj4KKwogPFNFQ1RJT04+CiA8RklMRT5XZWJLaXRBdXRoZW50aWNhdGlvblJlcXVlc3Q8
L0ZJTEU+CiBXZWJLaXRBdXRoZW50aWNhdGlvblJlcXVlc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDU1ZTNhODI2ODFlNDJlMDU0ZmQwMGI4OWU5NGRiZmQz
ZDY2ZTBmNzUuLjcxYTQxMTY5ODU3NWE2N2EwNTgzNTlkMDg5ZDYyOWNlZjJlZGZkZDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMTU0Niw2ICsxNTQ2LDE2
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXREcmF3c0JhY2tncm91bmQoYm9vbCBkcmF3c0JhY2tn
cm91bmQpCiAgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0RHJh
d3NCYWNrZ3JvdW5kKGRyYXdzQmFja2dyb3VuZCksIG1fcGFnZUlEKTsKIH0KIAordm9pZCBXZWJQ
YWdlUHJveHk6OnNldEJhY2tncm91bmRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYgY29sb3Ip
Cit7CisgICAgaWYgKG1fYmFja2dyb3VuZENvbG9yID09IGNvbG9yKQorICAgICAgICByZXR1cm47
CisKKyAgICBtX2JhY2tncm91bmRDb2xvciA9IGNvbG9yOworICAgIGlmIChpc1ZhbGlkKCkpCisg
ICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0QmFja2dyb3VuZENv
bG9yKGNvbG9yKSwgbV9wYWdlSUQpOworfQorCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VG9wQ29u
dGVudEluc2V0KGZsb2F0IGNvbnRlbnRJbnNldCkKIHsKICAgICBpZiAobV90b3BDb250ZW50SW5z
ZXQgPT0gY29udGVudEluc2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApp
bmRleCA3OGVhOTUwMDY3NjllNjgzMTkxMjc1YjhlZTVmOWY4ZjhhMmEzMjNlLi5hODdhNWI2MjU0
ODZmNzc4ZWIzMjEwNTljNTA3OWNmZjA0YzAyYTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaApAQCAtNzUxLDggKzc1MSwxMCBAQCBwdWJsaWM6CiAKICNpZiBQTEFURk9S
TShHVEspCiAgICAgUGxhdGZvcm1XaWRnZXQgdmlld1dpZGdldCgpOworI2VuZGlmCisjaWYgUExB
VEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpCiAgICAgY29uc3QgV2ViQ29yZTo6Q29sb3ImIGJh
Y2tncm91bmRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZENvbG9yOyB9Ci0gICAg
dm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9yKSB7IG1f
YmFja2dyb3VuZENvbG9yID0gY29sb3I7IH0KKyAgICB2b2lkIHNldEJhY2tncm91bmRDb2xvcihj
b25zdCBXZWJDb3JlOjpDb2xvciYpOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShXSU4pCkBAIC0y
MTU5LDYgKzIxNjEsOCBAQCBwcml2YXRlOgogCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIFN0cmlu
ZyBtX2FjY2Vzc2liaWxpdHlQbHVnSUQ7CisjZW5kaWYKKyNpZiBQTEFURk9STShHVEspIHx8IFBM
QVRGT1JNKFdQRSkKICAgICBXZWJDb3JlOjpDb2xvciBtX2JhY2tncm91bmRDb2xvciB7IFdlYkNv
cmU6OkNvbG9yOjp3aGl0ZSB9OwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwCmluZGV4IGFhY2I1YjljZTYxYjgxNjU3MTQ2YTRiY2E2NTM4MzRiYTBkNDAwYjAuLjcwMDM1
YmEzYjhkYjMwYTQ2MmUxOTdkMTIzMjZmMTAwMDMyZjY0NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmNwcApAQCAtMTM5NCw2ICsxMzk0LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNs
aWVudDo6dHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFnZSgpCiAKICAgICBib29sIGlzTWFp
bkZyYW1lID0gbV9mcmFtZS0+aXNNYWluRnJhbWUoKTsKICAgICBib29sIGlzVHJhbnNwYXJlbnQg
PSAhd2ViUGFnZS0+ZHJhd3NCYWNrZ3JvdW5kKCk7CisgICAgQ29sb3IgYmFja2dyb3VuZENvbG9y
ID0gd2ViUGFnZS0+YmFja2dyb3VuZENvbG9yKCk7CiAgICAgYm9vbCBzaG91bGRVc2VGaXhlZExh
eW91dCA9IGlzTWFpbkZyYW1lICYmIHdlYlBhZ2UtPnVzZUZpeGVkTGF5b3V0KCk7CiAgICAgYm9v
bCBzaG91bGREaXNhYmxlU2Nyb2xsaW5nID0gaXNNYWluRnJhbWUgJiYgIXdlYlBhZ2UtPm1haW5G
cmFtZUlzU2Nyb2xsYWJsZSgpOwogICAgIGJvb2wgc2hvdWxkSGlkZVNjcm9sbGJhcnMgPSBzaG91
bGREaXNhYmxlU2Nyb2xsaW5nOwpAQCAtMTQxOCw3ICsxNDE5LDcgQEAgdm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6dHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFnZSgpCiAgICAgYm9vbCBo
b3Jpem9udGFsTG9jayA9IHNob3VsZEhpZGVTY3JvbGxiYXJzIHx8IHdlYlBhZ2UtPmFsd2F5c1No
b3dzSG9yaXpvbnRhbFNjcm9sbGVyKCk7CiAgICAgYm9vbCB2ZXJ0aWNhbExvY2sgPSBzaG91bGRI
aWRlU2Nyb2xsYmFycyB8fCB3ZWJQYWdlLT5hbHdheXNTaG93c1ZlcnRpY2FsU2Nyb2xsZXIoKTsK
IAotICAgIG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5jcmVhdGVWaWV3KHdlYlBhZ2UtPnNpemUoKSwg
aXNUcmFuc3BhcmVudCwKKyAgICBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+Y3JlYXRlVmlldyh3ZWJQ
YWdlLT5zaXplKCksIGlzVHJhbnNwYXJlbnQsIGJhY2tncm91bmRDb2xvciwKICAgICAgICAgd2Vi
UGFnZS0+Zml4ZWRMYXlvdXRTaXplKCksIGZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0LCBzaG91bGRV
c2VGaXhlZExheW91dCwKICAgICAgICAgaG9yaXpvbnRhbFNjcm9sbGJhck1vZGUsIGhvcml6b250
YWxMb2NrLCB2ZXJ0aWNhbFNjcm9sbGJhck1vZGUsIHZlcnRpY2FsTG9jayk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0Fy
ZWEuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3
aW5nQXJlYS5jcHAKaW5kZXggOTkyMDQ2NWIxNzM5MmE4MzE0Y2YyZDA1YzMxNTMzZjU2MDZkMjAx
MS4uZjgzZWMwNjRmNGUxYjZkODJlNGVmMjU2NTNmMjg4NzdhYzc2ZmMyZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3aW5nQXJlYS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3
aW5nQXJlYS5jcHAKQEAgLTEwMSw2ICsxMDEsMTQgQEAgdm9pZCBBY2NlbGVyYXRlZERyYXdpbmdB
cmVhOjpwYWdlQmFja2dyb3VuZFRyYW5zcGFyZW5jeUNoYW5nZWQoKQogICAgICAgICBtX3ByZXZp
b3VzTGF5ZXJUcmVlSG9zdC0+cGFnZUJhY2tncm91bmRUcmFuc3BhcmVuY3lDaGFuZ2VkKCk7CiB9
CiAKK3ZvaWQgQWNjZWxlcmF0ZWREcmF3aW5nQXJlYTo6cGFnZUJhY2tncm91bmRDb2xvckNoYW5n
ZWQoKQoreworICAgIGlmIChtX2xheWVyVHJlZUhvc3QpCisgICAgICAgIG1fbGF5ZXJUcmVlSG9z
dC0+cGFnZUJhY2tncm91bmRDb2xvckNoYW5nZWQoKTsKKyAgICBlbHNlIGlmIChtX3ByZXZpb3Vz
TGF5ZXJUcmVlSG9zdCkKKyAgICAgICAgbV9wcmV2aW91c0xheWVyVHJlZUhvc3QtPnBhZ2VCYWNr
Z3JvdW5kQ29sb3JDaGFuZ2VkKCk7Cit9CisKIHZvaWQgQWNjZWxlcmF0ZWREcmF3aW5nQXJlYTo6
c2V0TGF5ZXJUcmVlU3RhdGVJc0Zyb3plbihib29sIGlzRnJvemVuKQogewogICAgIGlmIChtX2xh
eWVyVHJlZVN0YXRlSXNGcm96ZW4gPT0gaXNGcm96ZW4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZERyYXdpbmdBcmVhLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZERyYXdpbmdBcmVhLmgKaW5kZXgg
NzBhYmU0MzU5MjVjYmYzN2RiYzNkMmQ4NzRkYmY0ODNmNGM4ZjE5ZS4uYzJiZDVmNzZhOTY1ZjVk
YmIyNTIxNTk2NzgzZDViOGI2OGFlNjJmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3aW5nQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEuaApAQCAtNDQsNiAr
NDQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBzZXROZWVkc0Rpc3BsYXlJblJlY3QoY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2Nyb2xsKGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmIHNjcm9sbFJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNjcm9sbERl
bHRhKSBvdmVycmlkZTsKICAgICB2b2lkIHBhZ2VCYWNrZ3JvdW5kVHJhbnNwYXJlbmN5Q2hhbmdl
ZCgpIG92ZXJyaWRlOworICAgIHZvaWQgcGFnZUJhY2tncm91bmRDb2xvckNoYW5nZWQoKSBvdmVy
cmlkZTsKICAgICB2b2lkIHNldExheWVyVHJlZVN0YXRlSXNGcm96ZW4oYm9vbCkgb3ZlcnJpZGU7
CiAgICAgYm9vbCBsYXllclRyZWVTdGF0ZUlzRnJvemVuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gbV9sYXllclRyZWVTdGF0ZUlzRnJvemVuOyB9CiAgICAgTGF5ZXJUcmVlSG9zdCogbGF5ZXJU
cmVlSG9zdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fbGF5ZXJUcmVlSG9zdC5nZXQoKTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJl
ZUhvc3QuY3BwCmluZGV4IDE1MjBmNTIwZGFjOThlNDNlNDViN2UwNjM3NTcxYjkzMDI1OGNjYWMu
LmFlZjRmMDE1ZDZjYWQxZGUyZTA1NzY2Y2UxYTViY2IyZmViZGEzNjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKQEAg
LTIyOCw2ICsyMjgsMTEgQEAgdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnBhZ2VCYWNr
Z3JvdW5kVHJhbnNwYXJlbmN5Q2hhbmdlZCgpCiB7CiB9CiAKK3ZvaWQgQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0OjpwYWdlQmFja2dyb3VuZENvbG9yQ2hhbmdlZCgpCit7CisKK30KKwogR3JhcGhp
Y3NMYXllckZhY3RvcnkqIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Z3JhcGhpY3NMYXllckZh
Y3RvcnkoKQogewogICAgIHJldHVybiAmbV9jb29yZGluYXRvcjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCmluZGV4IDBhOGJlYzhh
Mzk4NmNlYTJhODBkYTUwOTkyYWJhMmE4MzFjMzUzNmEuLjI3Y2FlMDA0ZTQyNDc1NjIzMjdkNWY5
NjZhM2QwN2RjN2JlODA4MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9D
b29yZGluYXRlZExheWVyVHJlZUhvc3QuaApAQCAtNTYsNiArNTYsNyBAQCBwcm90ZWN0ZWQ6CiAK
ICAgICB2b2lkIGRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCgpIG92ZXJyaWRlOwogICAg
IHZvaWQgcGFnZUJhY2tncm91bmRUcmFuc3BhcmVuY3lDaGFuZ2VkKCkgb3ZlcnJpZGU7CisgICAg
dm9pZCBwYWdlQmFja2dyb3VuZENvbG9yQ2hhbmdlZCgpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBz
ZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpOwogICAgIHZv
aWQgcmVuZGVyTmV4dEZyYW1lKGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcAppbmRleCA4
MjNiN2ZhMmFjNzU5N2EzYWVhYjI3NDQzMWJjMGNjOWI5MjkwOGM5Li5mOGUyYjVkMGVjZTI1NmRh
NzU0ODUzMWMwYmQ3YTU2YjAwYWQ4Y2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29y
ZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcApAQCAt
MTk1LDYgKzE5NSwxNyBAQCB2b2lkIFRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Ojpw
YWdlQmFja2dyb3VuZFRyYW5zcGFyZW5jeUNoYW5nZWQoKQogICAgIG1fY29tcG9zaXRvci0+c2V0
RHJhd3NCYWNrZ3JvdW5kKG1fd2ViUGFnZS5kcmF3c0JhY2tncm91bmQoKSk7CiB9CiAKK3ZvaWQg
VGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnBhZ2VCYWNrZ3JvdW5kQ29sb3JDaGFu
Z2VkKCkKK3sKKyAgICBpZiAobV9pc0Rpc2NhcmRhYmxlKSB7CisgICAgICAgIG1fZGlzY2FyZGFi
bGVTeW5jQWN0aW9ucy5hZGQoRGlzY2FyZGFibGVTeW5jQWN0aW9uczo6VXBkYXRlQmFja2dyb3Vu
ZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBDb29yZGluYXRlZExheWVyVHJlZUhv
c3Q6OnBhZ2VCYWNrZ3JvdW5kQ29sb3JDaGFuZ2VkKCk7CisgICAgbV9jb21wb3NpdG9yLT5zZXRC
YWNrZ3JvdW5kQ29sb3IobV93ZWJQYWdlLmJhY2tncm91bmRDb2xvcigpKTsKK30KKwogdm9pZCBU
aHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2l6ZURpZENoYW5nZShjb25zdCBJbnRT
aXplJiBzaXplKQogewogICAgIGlmIChtX2lzRGlzY2FyZGFibGUpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVGhyZWFk
ZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhv
c3QuaAppbmRleCBiNzg0NjgxNjc5YjIyN2JiODEyMjc3NDVlMWI3NjhlMWEzYjA2M2NkLi44NGIz
Zjg4MzI4MzhjMzdlNzEyOTA2N2FlYjkxOGMzZmMyOTk3OGVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29v
cmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dC5oCkBAIC01OCw2ICs1OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzaXplRGlkQ2hhbmdlKGNv
bnN0IFdlYkNvcmU6OkludFNpemUmKSBvdmVycmlkZTsKICAgICB2b2lkIGRldmljZU9yUGFnZVNj
YWxlRmFjdG9yQ2hhbmdlZCgpIG92ZXJyaWRlOwogICAgIHZvaWQgcGFnZUJhY2tncm91bmRUcmFu
c3BhcmVuY3lDaGFuZ2VkKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBwYWdlQmFja2dyb3VuZENvbG9y
Q2hhbmdlZCgpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBjb250ZW50c1NpemVDaGFuZ2VkKGNvbnN0
IFdlYkNvcmU6OkludFNpemUmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENoYW5nZVZpZXdwb3J0
QXR0cmlidXRlcyhXZWJDb3JlOjpWaWV3cG9ydEF0dHJpYnV0ZXMmJikgb3ZlcnJpZGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAppbmRleCBmOWM4
OTE3NGE0YTM3YmY0ZGIyMmMxZDJjNDI2MjRjZjlkZjJhNzQyLi4xYjJiY2JlYWI4MzU2OGY1ZDg4
Yzg0ZWIwOGQyNWJiZGYzZWMxMjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0RyYXdpbmdBcmVhLmgKQEAgLTgwLDYgKzgwLDcgQEAgcHVibGljOgogCiAgICAgLy8g
RklYTUU6IFRoZXNlIHNob3VsZCBiZSBwdXJlIHZpcnR1YWwuCiAgICAgdmlydHVhbCB2b2lkIHBh
Z2VCYWNrZ3JvdW5kVHJhbnNwYXJlbmN5Q2hhbmdlZCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBw
YWdlQmFja2dyb3VuZENvbG9yQ2hhbmdlZCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBmb3JjZVJl
cGFpbnQoKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgZm9yY2VSZXBhaW50QXN5bmMoQ2FsbGJhY2tJ
RCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0TGF5ZXJUcmVlU3RhdGVJ
c0Zyb3plbihib29sKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0xheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L0xheWVyVHJlZUhvc3QuaAppbmRleCA4NWRkNDU4ZTAxODAwMzExYzM4YjU2ZGEwMGZkMjAxOTA5
MGQyMDdhLi4xNjY4YmJiOWQ2MzczYWVmMjQ1ODM5ZDI5OTUyYTM0ZGNlODA5NDYyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9MYXllclRyZWVIb3N0LmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvTGF5ZXJUcmVlSG9zdC5oCkBAIC03
NSw2ICs3NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgZm9yY2VSZXBhaW50QXN5bmMo
Q2FsbGJhY2tJRCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2l6ZURpZENo
YW5nZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBuZXdTaXplKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHBhZ2VCYWNrZ3JvdW5kVHJhbnNwYXJlbmN5Q2hhbmdlZCgpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgcGFnZUJhY2tncm91bmRDb2xvckNoYW5nZWQoKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZv
aWQgcGF1c2VSZW5kZXJpbmcoKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lUmVuZGVyaW5nKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGY2
ZDRiZWExZDM1ODU3OGExYmU2MzQ1NDQ3NDkxNjM1ZGZiZjAyY2QuLjU1Mzg3YjBiNzlmZTQ0MzBm
YWE1NmU2ZTkxMzc1ZGQ0ZTYxMDRlMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0yODg0LDYgKzI4ODQsMjAgQEAgdm9pZCBXZWJQYWdlOjpz
ZXREcmF3c0JhY2tncm91bmQoYm9vbCBkcmF3c0JhY2tncm91bmQpCiAgICAgbV9kcmF3aW5nQXJl
YS0+c2V0TmVlZHNEaXNwbGF5KCk7CiB9CiAKK3ZvaWQgV2ViUGFnZTo6c2V0QmFja2dyb3VuZENv
bG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBiYWNrZ3JvdW5kQ29sb3IpCit7CisgICAgaWYgKG1f
YmFja2dyb3VuZENvbG9yID09IGJhY2tncm91bmRDb2xvcikKKyAgICAgICAgcmV0dXJuOworCisg
ICAgbV9iYWNrZ3JvdW5kQ29sb3IgPSBiYWNrZ3JvdW5kQ29sb3I7CisKKyAgICBpZiAoRnJhbWVW
aWV3KiBmcmFtZVZpZXcgPSBtYWluRnJhbWVWaWV3KCkpCisgICAgICAgIGZyYW1lVmlldy0+c2V0
QmFzZUJhY2tncm91bmRDb2xvcihiYWNrZ3JvdW5kQ29sb3IpOworCisgICAgbV9kcmF3aW5nQXJl
YS0+cGFnZUJhY2tncm91bmRDb2xvckNoYW5nZWQoKTsKKyAgICBtX2RyYXdpbmdBcmVhLT5zZXRO
ZWVkc0Rpc3BsYXkoKTsKK30KKwogI2lmIFBMQVRGT1JNKENPQ09BKQogdm9pZCBXZWJQYWdlOjpz
ZXRUb3BDb250ZW50SW5zZXRGZW5jZWQoZmxvYXQgY29udGVudEluc2V0LCBJUEM6OkF0dGFjaG1l
bnQgZmVuY2VQb3J0KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCmluZGV4IDZlNWM5MmU1ODQ4NDY1ZjZmNmY0ZGU4YjU3YjJiYWU1OGRjMzZmNWMuLjM3ZGNm
M2FjOTY1OTNlZTk1NjM5N2EyMWY0OTNkMTU1YTk4Nzk1YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTExMzYsNiArMTEzNiw4IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgZGlkUmVjZWl2ZVdlYlBhZ2VNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQ
Qzo6RGVjb2RlciYpOwogCisgICAgY29uc3QgV2ViQ29yZTo6Q29sb3ImIGJhY2tncm91bmRDb2xv
cigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZENvbG9yOyB9CisKIHByaXZhdGU6CiAgICAg
V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJik7CiAK
QEAgLTEyNjMsNiArMTI2NSw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIHZvaWQgc2V0RHJh
d3NCYWNrZ3JvdW5kKGJvb2wpOworICAgIHZvaWQgc2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IFdl
YkNvcmU6OkNvbG9yJik7CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIHNldFRvcENv
bnRlbnRJbnNldEZlbmNlZChmbG9hdCwgSVBDOjpBdHRhY2htZW50KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDU0
YWJiYWY4OTM0Y2NkY2Y4ZTRmMjBmNzgzZmNiNmI5ZjAzMDQwZWIuLjVmYWZmZjNkNDk3ZTUxNWU4
NGFiNzdjNGI5MGE4MWFkMTRiMmFhM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtMjYsNiArMjYsNyBAQCBtZXNz
YWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKICAgICBTZXRMYXllckhvc3RpbmdNb2Rl
KGVudW06dWludDhfdCBXZWJLaXQ6OkxheWVySG9zdGluZ01vZGUgbGF5ZXJIb3N0aW5nTW9kZSkK
IAogICAgIFNldERyYXdzQmFja2dyb3VuZChib29sIGRyYXdzQmFja2dyb3VuZCkKKyAgICBTZXRC
YWNrZ3JvdW5kQ29sb3IoV2ViQ29yZTo6Q29sb3IgY29sb3IpCiAKICAgICBBZGRDb25zb2xlTWVz
c2FnZSh1aW50NjRfdCBmcmFtZUlELCBlbnVtOnVpbnQ4X3QgSlNDOjpNZXNzYWdlU291cmNlIG1l
c3NhZ2VTb3VyY2UsIGVudW06dWludDhfdCBKU0M6Ok1lc3NhZ2VMZXZlbCBtZXNzYWdlTGV2ZWws
IFN0cmluZyBtZXNzYWdlLCB1aW50NjRfdCByZXF1ZXN0SUQpCiAgICAgU2VuZENTUFZpb2xhdGlv
blJlcG9ydCh1aW50NjRfdCBmcmFtZUlELCBVUkwgcmVwb3J0VVJMLCBJUEM6OkZvcm1EYXRhUmVm
ZXJlbmNlIHJlcG9ydERhdGEpCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci93cGUvbWFp
bi5jcHAgYi9Ub29scy9NaW5pQnJvd3Nlci93cGUvbWFpbi5jcHAKaW5kZXggZTBjMjliMjEyOTkz
NDM3MTI3NGE2ZjI1NDUxZWFlOTgyMWM0Njg5Zi4uMWNlMTI3OGUzNWQ2MTg4MzM2MjEyOTg0Yjdj
NjBiNDMxZWNhNzM1MyAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvd3BlL21haW4uY3Bw
CisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3dwZS9tYWluLmNwcApAQCAtNDIsNiArNDIsNyBAQCBz
dGF0aWMgZ2Jvb2xlYW4gaWdub3JlVExTRXJyb3JzOwogc3RhdGljIGNvbnN0IGNoYXIqIGNvb2tp
ZXNGaWxlOwogc3RhdGljIGNvbnN0IGNoYXIqIGNvb2tpZXNQb2xpY3k7CiBzdGF0aWMgY29uc3Qg
Y2hhciogcHJveHk7Citjb25zdCBjaGFyKiBiZ0NvbG9yOwogCiBzdGF0aWMgY29uc3QgR09wdGlv
bkVudHJ5IGNvbW1hbmRMaW5lT3B0aW9uc1tdID0KIHsKQEAgLTUzLDYgKzU0LDcgQEAgc3RhdGlj
IGNvbnN0IEdPcHRpb25FbnRyeSBjb21tYW5kTGluZU9wdGlvbnNbXSA9CiAgICAgeyAicHJveHki
LCAwLCAwLCBHX09QVElPTl9BUkdfU1RSSU5HLCAmcHJveHksICJTZXQgcHJveHkiLCAiUFJPWFki
IH0sCiAgICAgeyAiaWdub3JlLWhvc3QiLCAwLCAwLCBHX09QVElPTl9BUkdfU1RSSU5HX0FSUkFZ
LCAmaWdub3JlSG9zdHMsICJTZXQgcHJveHkgaWdub3JlIGhvc3RzIiwgIkhPU1RTIiB9LAogICAg
IHsgImlnbm9yZS10bHMtZXJyb3JzIiwgMCwgMCwgR19PUFRJT05fQVJHX05PTkUsICZpZ25vcmVU
TFNFcnJvcnMsICJJZ25vcmUgVExTIGVycm9ycyIsIG51bGxwdHIgfSwKKyAgICB7ICJiZy1jb2xv
ciIsIDAsIDAsIEdfT1BUSU9OX0FSR19TVFJJTkcsICZiZ0NvbG9yLCAiV2luZG93IGJhY2tncm91
bmQgY29sb3IgKHdoaXRlIGJ5IGRlZmF1bHQpIiwgIndoaXRlIiB9LAogICAgIHsgR19PUFRJT05f
UkVNQUlOSU5HLCAwLCAwLCBHX09QVElPTl9BUkdfRklMRU5BTUVfQVJSQVksICZ1cmlBcmd1bWVu
dHMsIG51bGxwdHIsICJbVVJMXSIgfSwKICAgICB7IG51bGxwdHIsIDAsIDAsIEdfT1BUSU9OX0FS
R19OT05FLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyIH0KIH07CkBAIC0xOTQsNiArMTk2LDEw
IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAgICAgaWYgKGlnbm9yZVRMU0Vy
cm9ycykKICAgICAgICAgd2Via2l0X3dlYl9jb250ZXh0X3NldF90bHNfZXJyb3JzX3BvbGljeSh3
ZWJDb250ZXh0LCBXRUJLSVRfVExTX0VSUk9SU19QT0xJQ1lfSUdOT1JFKTsKIAorICAgIGF1dG8q
IGJhY2tncm91bmRDb2xvciA9IHdlYmtpdF9jb2xvcl9uZXdfZnJvbV9zdHJpbmcoYmdDb2xvcik7
CisgICAgd2Via2l0X3dlYl92aWV3X3NldF9iYWNrZ3JvdW5kX2NvbG9yKHdlYlZpZXcsIGJhY2tn
cm91bmRDb2xvcik7CisgICAgZ19ib3hlZF9mcmVlKFdFQktJVF9UWVBFX0NPTE9SLCBiYWNrZ3Jv
dW5kQ29sb3IpOworCiAgICAgaWYgKHVyaUFyZ3VtZW50cykKICAgICAgICAgd2Via2l0X3dlYl92
aWV3X2xvYWRfdXJpKHdlYlZpZXcsIHVyaUFyZ3VtZW50c1swXSk7CiAgICAgZWxzZSBpZiAoIWF1
dG9tYXRpb25Nb2RlKQpAQCAtMjAyLDcgKzIwOCw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFy
ICphcmd2W10pCiAgICAgZ19tYWluX2xvb3BfcnVuKGxvb3ApOwogCiAgICAgZ19vYmplY3RfdW5y
ZWYod2ViVmlldyk7Ci0gICAgaWYgKHByaXZhdGVNb2RlKQorICAgIGlmIChwcml2YXRlTW9kZSB8
fCBhdXRvbWF0aW9uTW9kZSkKICAgICAgICAgZ19vYmplY3RfdW5yZWYod2ViQ29udGV4dCk7CiAg
ICAgZ19tYWluX2xvb3BfdW5yZWYobG9vcCk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0V2ViVmlldy5jcHAgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYlZpZXcuY3BwCmluZGV4IGQ3
NTczNDFiMGZiYTM0ZjI3MmYyNjhkOGQzMzM5NmM3N2ZlODcwMDUuLmE1MzE3ODExYTRjOWZjMjhh
Y2ZjN2Y4YTdiYjJiMGJkZjQ3MTQ1ZDQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0V2ViVmlldy5jcHAKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcApAQCAtMTEzMyw5
ICsxMTMzLDkgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdJc1BsYXlpbmdBdWRpbyhJc1BsYXlp
bmdBdWRpb1dlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2kKICAgICBnX2Fzc2VydCghd2Via2l0
X3dlYl92aWV3X2lzX3BsYXlpbmdfYXVkaW8odGVzdC0+bV93ZWJWaWV3KSk7CiB9CiAKLSNpZiBQ
TEFURk9STShHVEspCiBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0JhY2tncm91bmRDb2xvcihXZWJW
aWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKKyNpZiBQTEFURk9STShHVEspCiAgICAg
Ly8gV2hpdGUgaXMgdGhlIGRlZmF1bHQgYmFja2dyb3VuZC4KICAgICBHZGtSR0JBIHJnYmE7CiAg
ICAgd2Via2l0X3dlYl92aWV3X2dldF9iYWNrZ3JvdW5kX2NvbG9yKHRlc3QtPm1fd2ViVmlldywg
JnJnYmEpOwpAQCAtMTE1NCwxMSArMTE1NCw0NiBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0Jh
Y2tncm91bmRDb2xvcihXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBnX2Fz
c2VydF9jbXBmbG9hdChyZ2JhLmdyZWVuLCA9PSwgMCk7CiAgICAgZ19hc3NlcnRfY21wZmxvYXQo
cmdiYS5ibHVlLCA9PSwgMCk7CiAgICAgZ19hc3NlcnRfY21wZmxvYXQocmdiYS5hbHBoYSwgPT0s
IDAuNSk7CisjZW5kaWYKKyNpZiBQTEFURk9STShXUEUpCisgICAgLy8gV2hpdGUgaXMgdGhlIGRl
ZmF1bHQgYmFja2dyb3VuZC4KKyAgICBXZWJLaXRDb2xvciogY29sb3IgPSB3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X2JhY2tncm91bmRfY29sb3IodGVzdC0+bV93ZWJWaWV3KTsKKyAgICBnX2Fzc2VydF9j
bXBpbnQod2Via2l0X2NvbG9yX2dldF9yZWRfY2hhbm5lbChjb2xvciksID09LCAyNTUpOworICAg
IGdfYXNzZXJ0X2NtcGludCh3ZWJraXRfY29sb3JfZ2V0X2dyZWVuX2NoYW5uZWwoY29sb3IpLCA9
PSwgMjU1KTsKKyAgICBnX2Fzc2VydF9jbXBpbnQod2Via2l0X2NvbG9yX2dldF9ibHVlX2NoYW5u
ZWwoY29sb3IpLCA9PSwgMjU1KTsKKyAgICBnX2Fzc2VydF9jbXBpbnQod2Via2l0X2NvbG9yX2dl
dF9hbHBoYV9jaGFubmVsKGNvbG9yKSwgPT0sIDI1NSk7CisgICAgZ19ib3hlZF9mcmVlKFdFQktJ
VF9UWVBFX0NPTE9SLCBjb2xvcik7CisKKyAgICAvLyBTZXQgdG8gZ3JlZW4uCisgICAgV2ViS2l0
Q29sb3IqIGNvbG9yMiA9IHdlYmtpdF9jb2xvcl9uZXdfZnJvbV9zdHJpbmcoImdyZWVuIik7Cisg
ICAgd2Via2l0X3dlYl92aWV3X3NldF9iYWNrZ3JvdW5kX2NvbG9yKHRlc3QtPm1fd2ViVmlldywg
Y29sb3IyKTsKKyAgICBnX2JveGVkX2ZyZWUoV0VCS0lUX1RZUEVfQ09MT1IsIGNvbG9yMik7CisK
KyAgICBjb2xvciA9IHdlYmtpdF93ZWJfdmlld19nZXRfYmFja2dyb3VuZF9jb2xvcih0ZXN0LT5t
X3dlYlZpZXcpOworICAgIGdfYXNzZXJ0X2NtcGludCh3ZWJraXRfY29sb3JfZ2V0X3JlZF9jaGFu
bmVsKGNvbG9yKSwgPT0sIDApOworICAgIGdfYXNzZXJ0X2NtcGludCh3ZWJraXRfY29sb3JfZ2V0
X2dyZWVuX2NoYW5uZWwoY29sb3IpLCA9PSwgMTI4KTsKKyAgICBnX2Fzc2VydF9jbXBpbnQod2Vi
a2l0X2NvbG9yX2dldF9ibHVlX2NoYW5uZWwoY29sb3IpLCA9PSwgMCk7CisgICAgZ19hc3NlcnRf
Y21waW50KHdlYmtpdF9jb2xvcl9nZXRfYWxwaGFfY2hhbm5lbChjb2xvciksID09LCAyNTUpOwor
ICAgIGdfYm94ZWRfZnJlZShXRUJLSVRfVFlQRV9DT0xPUiwgY29sb3IpOworCisgICAgLy8gRnVs
bHkgdHJhbnNwYXJlbnQKKyAgICBjb2xvcjIgPSB3ZWJraXRfY29sb3JfbmV3X2Zyb21fc3RyaW5n
KCJ0cmFuc3BhcmVudCIpOworICAgIHdlYmtpdF93ZWJfdmlld19zZXRfYmFja2dyb3VuZF9jb2xv
cih0ZXN0LT5tX3dlYlZpZXcsIGNvbG9yMik7CisgICAgZ19ib3hlZF9mcmVlKFdFQktJVF9UWVBF
X0NPTE9SLCBjb2xvcjIpOworCisgICAgY29sb3IgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2JhY2tn
cm91bmRfY29sb3IodGVzdC0+bV93ZWJWaWV3KTsKKyAgICBnX2Fzc2VydF9jbXBpbnQod2Via2l0
X2NvbG9yX2dldF9yZWRfY2hhbm5lbChjb2xvciksID09LCAwKTsKKyAgICBnX2Fzc2VydF9jbXBp
bnQod2Via2l0X2NvbG9yX2dldF9ncmVlbl9jaGFubmVsKGNvbG9yKSwgPT0sIDApOworICAgIGdf
YXNzZXJ0X2NtcGludCh3ZWJraXRfY29sb3JfZ2V0X2JsdWVfY2hhbm5lbChjb2xvciksID09LCAw
KTsKKyAgICBnX2Fzc2VydF9jbXBpbnQod2Via2l0X2NvbG9yX2dldF9hbHBoYV9jaGFubmVsKGNv
bG9yKSwgPT0sIDApOworICAgIGdfYm94ZWRfZnJlZShXRUJLSVRfVFlQRV9DT0xPUiwgY29sb3Ip
OwogCisjZW5kaWYKICAgICAvLyBUaGUgYWN0dWFsIHJlbmRlcmluZyBjYW4ndCBiZSB0ZXN0ZWQg
dXNpbmcgdW5pdCB0ZXN0cywgdXNlCiAgICAgLy8gTWluaUJyb3dzZXIgLS1iZy1jb2xvcj0iPGNv
bG9yLXZhbHVlPiIgZm9yIG1hbnVhbGx5IHRlc3RpbmcgdGhpcyBBUEkuCiB9CiAKKyNpZiBQTEFU
Rk9STShHVEspCiBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld1ByZWZlcnJlZFNpemUoV2ViVmlld1Rl
c3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7CiAgICAgdGVzdC0+bG9hZEh0bWwoIjxodG1sIHN0
eWxlPSd3aWR0aDogMzI1cHg7IGhlaWdodDogNjE1cHgnPjwvaHRtbD4iLCBudWxscHRyKTsKQEAg
LTEzNjMsOCArMTM5OCw4IEBAIHZvaWQgYmVmb3JlQWxsKCkKICAgICBOb3RpZmljYXRpb25XZWJW
aWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgIm5vdGlmaWNhdGlvbi1pbml0aWFsLXBlcm1p
c3Npb24tZGlzYWxsb3dlZCIsIHRlc3RXZWJWaWV3Tm90aWZpY2F0aW9uSW5pdGlhbFBlcm1pc3Np
b25EaXNhbGxvd2VkKTsKICNlbmRpZgogICAgIElzUGxheWluZ0F1ZGlvV2ViVmlld1Rlc3Q6OmFk
ZCgiV2ViS2l0V2ViVmlldyIsICJpcy1wbGF5aW5nLWF1ZGlvIiwgdGVzdFdlYlZpZXdJc1BsYXlp
bmdBdWRpbyk7Ci0jaWYgUExBVEZPUk0oR1RLKQogICAgIFdlYlZpZXdUZXN0OjphZGQoIldlYktp
dFdlYlZpZXciLCAiYmFja2dyb3VuZC1jb2xvciIsIHRlc3RXZWJWaWV3QmFja2dyb3VuZENvbG9y
KTsKKyNpZiBQTEFURk9STShHVEspCiAgICAgV2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0V2ViVmll
dyIsICJwcmVmZXJyZWQtc2l6ZSIsIHRlc3RXZWJWaWV3UHJlZmVycmVkU2l6ZSk7CiAjZW5kaWYK
ICAgICBXZWJWaWV3VGl0bGVUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAidGl0bGUtY2hhbmdl
IiwgdGVzdFdlYlZpZXdUaXRsZUNoYW5nZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>358459</attachid>
            <date>2019-01-06 10:16:58 -0800</date>
            <delta_ts>2019-01-08 08:53:49 -0800</delta_ts>
            <desc>WiP patch</desc>
            <filename>0001-WIP.patch</filename>
            <type>text/plain</type>
            <size>48639</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSA4YjNjNDFjNGUzNDk4N2QxMzg1YWQ3ODFlMGZkMWRiNTYzOTMzMmU2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBTdW4sIDYgSmFuIDIwMTkgMTg6MDY6NDAgKzAwMDAKU3ViamVjdDogW1BBVENIIHhz
ZXJ2ZXJdIFdJUAoKLS0tCiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCAgICAgICAgICAg
ICAgICAgfCAgIDQgKy0KIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaCAgICAgICAgICAgICAg
ICAgICB8ICAgMiArLQogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwICAgICAgICAg
ICAgIHwgICA1ICstCiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oICAgICAgICAgICAg
ICAgfCAgIDIgKy0KIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm1XUEUuY21ha2UgICAgICAgICAgICAg
ICB8ICAgMSArCiAuLi4vQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcCAgICAgICAgICAgICAg
fCAgMTcgKy0KIC4uLi9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaCAgICAgICAgICAgICAgICB8
ICAgNCArLQogLi4uL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwIHwg
IDE0ICstCiAuLi4vdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5oICAgfCAg
IDMgKy0KIFNvdXJjZS9XZWJLaXQvU291cmNlc1dQRS50eHQgICAgICAgICAgICAgICAgICB8ICAg
MSArCiAuLi4vVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwICAgICAgfCAgNjgg
LS0tLS0tLQogLi4uL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdHdGsuY3BwICAgIHwg
IDY5ICsrKysrKysKIC4uLi9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0Q29sb3IuY3Bw
ICB8IDE3OSArKysrKysrKysrKysrKysrKysKIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93
cGUvV2ViS2l0Q29sb3IuaCB8ICA1NiArKysrKysKIC4uLi9VSVByb2Nlc3MvQVBJL3dwZS9XZWJL
aXRDb2xvclByaXZhdGUuaCAgICB8ICAzNyArKysrCiAuLi4vV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
d3BlL1dlYktpdFdlYlZpZXcuaCAgfCAgIDcgKwogLi4uL1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktp
dFdlYlZpZXdXUEUuY3BwICAgIHwgIDQ2ICsrKysrCiAuLi4vQVBJL3dwZS9kb2NzL3dwZS0wLjEt
c2VjdGlvbnMudHh0ICAgICAgICAgfCAgMTYgKysKIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAgICAgICB8ICAxMCArCiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaCAgICAgICAgfCAgIDYgKy0KIC4uLi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHAgICB8ICAgMyArLQogLi4uL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3aW5n
QXJlYS5jcHAgICAgICAgIHwgICA4ICsKIC4uLi9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0Fy
ZWEuaCAgICAgICAgICB8ICAgMSArCiAuLi4vQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcCAg
ICAgICAgICAgICAgfCAgIDUgKwogLi4uL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oICAgICAg
ICAgICAgICAgIHwgICAxICsKIC4uLi9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5j
cHAgICAgICB8ICAxMSArKwogLi4uL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Lmgg
ICAgICAgIHwgICAxICsKIC4uLi9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVh
LmggICB8ICAgMSArCiAuLi4vV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9MYXllclRyZWVIb3N0
LmggfCAgIDEgKwogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAg
IHwgIDE0ICsrCiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggICAg
fCAgIDMgKwogLi4uL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluICAgIHwg
ICAxICsKIFRvb2xzL01pbmlCcm93c2VyL3dwZS9tYWluLmNwcCAgICAgICAgICAgICAgICB8ICAg
OCArLQogLi4uL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYlZpZXcuY3BwICAgIHwgIDM5
ICsrKy0KIDM0IGZpbGVzIGNoYW5nZWQsIDU1MCBpbnNlcnRpb25zKCspLCA5NCBkZWxldGlvbnMo
LSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dl
YktpdENvbG9yLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS93cGUvV2ViS2l0Q29sb3IuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0Q29sb3JQcml2YXRlLmgKCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3Bw
CmluZGV4IDczYmFmZGI0NjYwLi5iNGUwYTM1MDg5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKQEAg
LTkwMiw3ICs5MDIsNyBAQCBSZWZQdHI8UmFuZ2U+IEZyYW1lOjpyYW5nZUZvclBvaW50KGNvbnN0
IEludFBvaW50JiBmcmFtZVBvaW50KQogICAgIHJldHVybiBudWxscHRyOwogfQogCi12b2lkIEZy
YW1lOjpjcmVhdGVWaWV3KGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSwgYm9vbCB0cmFuc3Bh
cmVudCwKK3ZvaWQgRnJhbWU6OmNyZWF0ZVZpZXcoY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXpl
LCBib29sIHRyYW5zcGFyZW50LCBjb25zdCBDb2xvciYgYmFja2dyb3VuZENvbG9yLAogICAgIGNv
bnN0IEludFNpemUmIGZpeGVkTGF5b3V0U2l6ZSwgY29uc3QgSW50UmVjdCYgZml4ZWRWaXNpYmxl
Q29udGVudFJlY3QsCiAgICAgYm9vbCB1c2VGaXhlZExheW91dCwgU2Nyb2xsYmFyTW9kZSBob3Jp
em9udGFsU2Nyb2xsYmFyTW9kZSwgYm9vbCBob3Jpem9udGFsTG9jaywKICAgICBTY3JvbGxiYXJN
b2RlIHZlcnRpY2FsU2Nyb2xsYmFyTW9kZSwgYm9vbCB2ZXJ0aWNhbExvY2spCkBAIC05MzMsNyAr
OTMzLDcgQEAgdm9pZCBGcmFtZTo6Y3JlYXRlVmlldyhjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNp
emUsIGJvb2wgdHJhbnNwYXJlbnQsCiAKICAgICBzZXRWaWV3KGZyYW1lVmlldy5jb3B5UmVmKCkp
OwogCi0gICAgZnJhbWVWaWV3LT51cGRhdGVCYWNrZ3JvdW5kUmVjdXJzaXZlbHkodHJhbnNwYXJl
bnQpOworICAgIGZyYW1lVmlldy0+dXBkYXRlQmFja2dyb3VuZFJlY3Vyc2l2ZWx5KHRyYW5zcGFy
ZW50LCBiYWNrZ3JvdW5kQ29sb3IpOwogCiAgICAgaWYgKGlzTWFpbkZyYW1lKQogICAgICAgICBm
cmFtZVZpZXctPnNldFBhcmVudFZpc2libGUodHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKaW5kZXggOWZh
ZjI0MzdmNTcuLjYzY2IxMmE3MWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCkBAIC0xMjgsNyArMTI4LDcg
QEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5pdFdpdGhTaW1wbGVIVE1MRG9j
dW1lbnQoY29uc3QgU3RyaW5nJiBzdHlsZSwgY29uc3QgVVJMJik7CiAjZW5kaWYKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldFZpZXcoUmVmUHRyPEZyYW1lVmlldz4mJik7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBjcmVhdGVWaWV3KGNvbnN0IEludFNpemUmLCBib29sIHRyYW5zcGFyZW50
LAorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY3JlYXRlVmlldyhjb25zdCBJbnRTaXplJiwgYm9v
bCB0cmFuc3BhcmVudCwgY29uc3QgQ29sb3ImIGJhY2tncm91bmRDb2xvciwKICAgICAgICAgY29u
c3QgSW50U2l6ZSYgZml4ZWRMYXlvdXRTaXplLCBjb25zdCBJbnRSZWN0JiBmaXhlZFZpc2libGVD
b250ZW50UmVjdCwKICAgICAgICAgYm9vbCB1c2VGaXhlZExheW91dCA9IGZhbHNlLCBTY3JvbGxi
YXJNb2RlID0gU2Nyb2xsYmFyQXV0bywgYm9vbCBob3Jpem9udGFsTG9jayA9IGZhbHNlLAogICAg
ICAgICBTY3JvbGxiYXJNb2RlID0gU2Nyb2xsYmFyQXV0bywgYm9vbCB2ZXJ0aWNhbExvY2sgPSBm
YWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggZGYwZTEwNWE1MWUuLmFlMjFl
OTY4NTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC0zMDAwLDEyICszMDAwLDEz
IEBAIHZvaWQgRnJhbWVWaWV3OjpzZXRCYXNlQmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJiBi
YWNrZ3JvdW5kQ29sb3IpCiAgICAgcmVuZGVyVmlldygpLT5jb21wb3NpdG9yKCkucm9vdEJhY2tn
cm91bmRDb2xvck9yVHJhbnNwYXJlbmN5Q2hhbmdlZCgpOwogfQogCi12b2lkIEZyYW1lVmlldzo6
dXBkYXRlQmFja2dyb3VuZFJlY3Vyc2l2ZWx5KGJvb2wgdHJhbnNwYXJlbnQpCit2b2lkIEZyYW1l
Vmlldzo6dXBkYXRlQmFja2dyb3VuZFJlY3Vyc2l2ZWx5KGJvb2wgdHJhbnNwYXJlbnQsIGNvbnN0
IENvbG9yJiBkZWZhdWx0QmFja2dyb3VuZENvbG9yKQogewogI2lmIEVOQUJMRShEQVJLX01PREVf
Q1NTKQorICAgIFVOVVNFRF9QQVJBTShkZWZhdWx0QmFja2dyb3VuZENvbG9yKTsKICAgICBDb2xv
ciBiYWNrZ3JvdW5kQ29sb3IgPSB0cmFuc3BhcmVudCA/IENvbG9yOjp0cmFuc3BhcmVudCA6IFJl
bmRlclRoZW1lOjpzaW5nbGV0b24oKS5zeXN0ZW1Db2xvcihDU1NWYWx1ZUFwcGxlU3lzdGVtQ29u
dHJvbEJhY2tncm91bmQsIHN0eWxlQ29sb3JPcHRpb25zKCkpOwogI2Vsc2UKLSAgICBDb2xvciBi
YWNrZ3JvdW5kQ29sb3IgPSB0cmFuc3BhcmVudCA/IENvbG9yOjp0cmFuc3BhcmVudCA6IENvbG9y
Ojp3aGl0ZTsKKyAgICBDb2xvciBiYWNrZ3JvdW5kQ29sb3IgPSB0cmFuc3BhcmVudCA/IENvbG9y
Ojp0cmFuc3BhcmVudCA6IGRlZmF1bHRCYWNrZ3JvdW5kQ29sb3I7CiAjZW5kaWYKIAogICAgIGZv
ciAoYXV0byogZnJhbWUgPSBtX2ZyYW1lLnB0cigpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJl
ZSgpLnRyYXZlcnNlTmV4dChtX2ZyYW1lLnB0cigpKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgK
aW5kZXggNGY5ODAwOTRjMDguLmRjNzIxYzhkNGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgK
QEAgLTE5MCw3ICsxOTAsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBDb2xvciBi
YXNlQmFja2dyb3VuZENvbG9yKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRC
YXNlQmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCB1cGRhdGVCYWNrZ3JvdW5kUmVjdXJzaXZlbHkoYm9vbCk7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCB1cGRhdGVCYWNrZ3JvdW5kUmVjdXJzaXZlbHkoYm9vbCwgY29uc3QgQ29sb3ImIGJhY2tn
cm91bmRDb2xvciA9IENvbG9yOjp3aGl0ZSk7CiAKICAgICBlbnVtIEV4dGVuZGVkQmFja2dyb3Vu
ZE1vZGVGbGFncyB7CiAgICAgICAgIEV4dGVuZGVkQmFja2dyb3VuZE1vZGVOb25lICAgICAgICAg
ID0gMCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1XUEUuY21ha2UgYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtV1BFLmNtYWtlCmluZGV4IDFmNjc1YzQ0ZTRjLi4zY2RlZmQyYmVk
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdQRS5jbWFrZQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtV1BFLmNtYWtlCkBAIC05Nyw2ICs5Nyw3IEBAIHNldChXUEVfQVBJ
X0lOU1RBTExFRF9IRUFERVJTCiAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL3dwZS9X
ZWJLaXRCYWNrRm9yd2FyZExpc3QuaAogICAgICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS93
cGUvV2ViS2l0QmFja0ZvcndhcmRMaXN0SXRlbS5oCiAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nl
c3MvQVBJL3dwZS9XZWJLaXRDcmVkZW50aWFsLmgKKyAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vz
cy9BUEkvd3BlL1dlYktpdENvbG9yLmgKICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkv
d3BlL1dlYktpdENvbnRleHRNZW51LmgKICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkv
d3BlL1dlYktpdENvbnRleHRNZW51QWN0aW9ucy5oCiAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nl
c3MvQVBJL3dwZS9XZWJLaXRDb250ZXh0TWVudUl0ZW0uaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUu
Y3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZEdyYXBoaWNzU2NlbmUuY3BwCmluZGV4IDFiMmVkMWIwMjc1Li5iOGFkZDRhNDJlYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZEdyYXBoaWNzU2NlbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcApAQCAtNjUsNyArNjUsNyBAQCB2
b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6YXBwbHlTdGF0ZUNoYW5nZXMoY29uc3QgVmVj
dG9yPENvb3JkaW5hdGVkR3JhcGhpYwogICAgICAgICBjb21taXRTY2VuZVN0YXRlKHN0YXRlLm5p
Y29zaWEpOwogfQogCi12b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6cGFpbnRUb0N1cnJl
bnRHTENvbnRleHQoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCwgZmxvYXQgb3Bh
Y2l0eSwgY29uc3QgRmxvYXRSZWN0JiBjbGlwUmVjdCwgY29uc3QgQ29sb3ImIGJhY2tncm91bmRD
b2xvciwgYm9vbCBkcmF3c0JhY2tncm91bmQsIFRleHR1cmVNYXBwZXI6OlBhaW50RmxhZ3MgUGFp
bnRGbGFncykKK3ZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpwYWludFRvQ3VycmVudEdM
Q29udGV4dChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4LCBjb25zdCBGbG9hdFJl
Y3QmIGNsaXBSZWN0LCBjb25zdCBDb2xvciYgYmFja2dyb3VuZENvbG9yLCBib29sIGRyYXdzQmFj
a2dyb3VuZCwgVGV4dHVyZU1hcHBlcjo6UGFpbnRGbGFncyBQYWludEZsYWdzKQogewogICAgIHVw
ZGF0ZVNjZW5lU3RhdGUoKTsKIApAQCAtNzgsMTggKzc4LDE1IEBAIHZvaWQgQ29vcmRpbmF0ZWRH
cmFwaGljc1NjZW5lOjpwYWludFRvQ3VycmVudEdMQ29udGV4dChjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpCiAgICAgbV90ZXh0dXJlTWFwcGVyLT5iZWdpblBhaW50aW5nKFBhaW50RmxhZ3MpOwog
ICAgIG1fdGV4dHVyZU1hcHBlci0+YmVnaW5DbGlwKFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIGNs
aXBSZWN0KTsKIAotICAgIGlmIChkcmF3c0JhY2tncm91bmQpIHsKLSAgICAgICAgUkdCQTMyIHJn
YmEgPSBtYWtlUkdCQTMyRnJvbUZsb2F0cyhiYWNrZ3JvdW5kQ29sb3IucmVkKCksCi0gICAgICAg
ICAgICBiYWNrZ3JvdW5kQ29sb3IuZ3JlZW4oKSwgYmFja2dyb3VuZENvbG9yLmJsdWUoKSwKLSAg
ICAgICAgICAgIGJhY2tncm91bmRDb2xvci5hbHBoYSgpICogb3BhY2l0eSk7Ci0gICAgICAgIG1f
dGV4dHVyZU1hcHBlci0+ZHJhd1NvbGlkQ29sb3IoY2xpcFJlY3QsIFRyYW5zZm9ybWF0aW9uTWF0
cml4KCksIENvbG9yKHJnYmEpKTsKLSAgICB9IGVsc2UKLSAgICAgICAgbV90ZXh0dXJlTWFwcGVy
LT5jbGVhckNvbG9yKG1fdmlld0JhY2tncm91bmRDb2xvcik7CisgICAgYXV0byYgY29sb3IgPSBk
cmF3c0JhY2tncm91bmQgPyBiYWNrZ3JvdW5kQ29sb3IgOiBtX3ZpZXdCYWNrZ3JvdW5kQ29sb3I7
CisgICAgbV90ZXh0dXJlTWFwcGVyLT5jbGVhckNvbG9yKGNvbG9yKTsKIAotICAgIGlmIChjdXJy
ZW50Um9vdExheWVyLT5vcGFjaXR5KCkgIT0gb3BhY2l0eSB8fCBjdXJyZW50Um9vdExheWVyLT50
cmFuc2Zvcm0oKSAhPSBtYXRyaXgpIHsKKyAgICBmbG9hdCBvcGFjaXR5ID0gZHJhd3NCYWNrZ3Jv
dW5kID8gY29sb3IuYWxwaGFBc0Zsb2F0KCkgOiAxOworICAgIGlmICghZHJhd3NCYWNrZ3JvdW5k
ICYmIChjdXJyZW50Um9vdExheWVyLT5vcGFjaXR5KCkgIT0gb3BhY2l0eSkpCiAgICAgICAgIGN1
cnJlbnRSb290TGF5ZXItPnNldE9wYWNpdHkob3BhY2l0eSk7CisKKyAgICBpZiAoY3VycmVudFJv
b3RMYXllci0+dHJhbnNmb3JtKCkgIT0gbWF0cml4KQogICAgICAgICBjdXJyZW50Um9vdExheWVy
LT5zZXRUcmFuc2Zvcm0obWF0cml4KTsKLSAgICB9CiAKICAgICBjdXJyZW50Um9vdExheWVyLT5w
YWludCgpOwogICAgIG1fZnBzQ291bnRlci51cGRhdGVGUFNBbmREaXNwbGF5KCptX3RleHR1cmVN
YXBwZXIsIGNsaXBSZWN0LmxvY2F0aW9uKCksIG1hdHJpeCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2Vu
ZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZEdyYXBoaWNzU2NlbmUuaAppbmRleCBkNGJiNTgyNjhmZS4uZDY4ZjRmOTkwMmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRH
cmFwaGljc1NjZW5lLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaApAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB+Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lKCk7CiAKICAgICB2b2lkIGFw
cGx5U3RhdGVDaGFuZ2VzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNz
U3RhdGU+Jik7Ci0gICAgdm9pZCBwYWludFRvQ3VycmVudEdMQ29udGV4dChjb25zdCBXZWJDb3Jl
OjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0LCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3Qm
LCBjb25zdCBXZWJDb3JlOjpDb2xvciYgYmFja2dyb3VuZENvbG9yLCBib29sIGRyYXdzQmFja2dy
b3VuZCwgV2ViQ29yZTo6VGV4dHVyZU1hcHBlcjo6UGFpbnRGbGFncyA9IDApOworICAgIHZvaWQg
cGFpbnRUb0N1cnJlbnRHTENvbnRleHQoY29uc3QgV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRy
aXgmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpDb2xvciYgYmFj
a2dyb3VuZENvbG9yLCBib29sIGRyYXdzQmFja2dyb3VuZCwgV2ViQ29yZTo6VGV4dHVyZU1hcHBl
cjo6UGFpbnRGbGFncyA9IDApOwogICAgIHZvaWQgZGV0YWNoKCk7CiAKICAgICAvLyBUaGUgcGFp
bnRpbmcgdGhyZWFkIG11c3QgbG9jayB0aGUgbWFpbiB0aHJlYWQgdG8gdXNlIGJlbG93IHR3byBt
ZXRob2RzLCBiZWNhdXNlIHR3byBtZXRob2RzIGFjY2VzcyBtZW1iZXJzIHRoYXQgdGhlIG1haW4g
dGhyZWFkIG1hbmFnZXMuIFNlZSBtX2NsaWVudC4KQEAgLTExMyw3ICsxMTMsNyBAQCBwcml2YXRl
OgogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI+IG1fcm9v
dExheWVyOwogCiAgICAgTmljb3NpYTo6UGxhdGZvcm1MYXllcjo6TGF5ZXJJRCBtX3Jvb3RMYXll
cklEIHsgMCB9OwotICAgIFdlYkNvcmU6OkNvbG9yIG1fdmlld0JhY2tncm91bmRDb2xvciB7IFdl
YkNvcmU6OkNvbG9yOjp3aGl0ZSB9OworICAgIFdlYkNvcmU6OkNvbG9yIG1fdmlld0JhY2tncm91
bmRDb2xvciB7IFdlYkNvcmU6OkNvbG9yOjp0cmFuc3BhcmVudCB9OwogCiAgICAgV2ViQ29yZTo6
VGV4dHVyZU1hcHBlckZQU0NvdW50ZXIgbV9mcHNDb3VudGVyOwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9y
L1RocmVhZGVkQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRl
ZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwCmluZGV4
IDc1MjJmODRlYThmLi5kZGJlZjU2Zjc1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3Np
dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3Ro
cmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwCkBAIC0xNjMsNiArMTYzLDEz
IEBAIHZvaWQgVGhyZWFkZWRDb21wb3NpdG9yOjpzZXREcmF3c0JhY2tncm91bmQoYm9vbCBkcmF3
c0JhY2tncm91bmQpCiAgICAgbV9jb21wb3NpdGluZ1J1bkxvb3AtPnNjaGVkdWxlVXBkYXRlKCk7
CiB9CiAKK3ZvaWQgVGhyZWFkZWRDb21wb3NpdG9yOjpzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3Qg
Q29sb3ImIGJhY2tncm91bmRDb2xvcikKK3sKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2F0dHJp
YnV0ZXMubG9jayk7CisgICAgbV9hdHRyaWJ1dGVzLmJhY2tncm91bmRDb2xvciA9IGJhY2tncm91
bmRDb2xvcjsKKyAgICBtX2NvbXBvc2l0aW5nUnVuTG9vcC0+c2NoZWR1bGVVcGRhdGUoKTsKK30K
Kwogdm9pZCBUaHJlYWRlZENvbXBvc2l0b3I6OnVwZGF0ZVZpZXdwb3J0KCkKIHsKICAgICBtX2Nv
bXBvc2l0aW5nUnVuTG9vcC0+c2NoZWR1bGVVcGRhdGUoKTsKQEAgLTE5Niw2ICsyMDMsOCBAQCB2
b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6cmVuZGVyTGF5ZXJUcmVlKCkKICAgICBmbG9hdCBzY2Fs
ZUZhY3RvcjsKICAgICBib29sIGRyYXdzQmFja2dyb3VuZDsKICAgICBib29sIG5lZWRzUmVzaXpl
OworICAgIFdlYkNvcmU6OkNvbG9yIGJhY2tncm91bmRDb2xvcjsKKwogICAgIFZlY3RvcjxXZWJD
b3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU3RhdGU+IHN0YXRlczsKIAogICAgIHsKQEAgLTIwNSw2
ICsyMTQsNyBAQCB2b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6cmVuZGVyTGF5ZXJUcmVlKCkKICAg
ICAgICAgc2NhbGVGYWN0b3IgPSBtX2F0dHJpYnV0ZXMuc2NhbGVGYWN0b3I7CiAgICAgICAgIGRy
YXdzQmFja2dyb3VuZCA9IG1fYXR0cmlidXRlcy5kcmF3c0JhY2tncm91bmQ7CiAgICAgICAgIG5l
ZWRzUmVzaXplID0gbV9hdHRyaWJ1dGVzLm5lZWRzUmVzaXplOworICAgICAgICBiYWNrZ3JvdW5k
Q29sb3IgPSBtX2F0dHJpYnV0ZXMuYmFja2dyb3VuZENvbG9yOwogCiAgICAgICAgIHN0YXRlcyA9
IFdURk1vdmUobV9hdHRyaWJ1dGVzLnN0YXRlcyk7CiAKQEAgLTI1Myw4ICsyNjMsOCBAQCB2b2lk
IFRocmVhZGVkQ29tcG9zaXRvcjo6cmVuZGVyTGF5ZXJUcmVlKCkKICAgICB9CiAKICAgICBtX3Nj
ZW5lLT5hcHBseVN0YXRlQ2hhbmdlcyhzdGF0ZXMpOwotICAgIG1fc2NlbmUtPnBhaW50VG9DdXJy
ZW50R0xDb250ZXh0KHZpZXdwb3J0VHJhbnNmb3JtLCAxLCBGbG9hdFJlY3QgeyBGbG9hdFBvaW50
IHsgfSwgdmlld3BvcnRTaXplIH0sCi0gICAgICAgIENvbG9yOjp0cmFuc3BhcmVudCwgIWRyYXdz
QmFja2dyb3VuZCwgbV9wYWludEZsYWdzKTsKKyAgICBtX3NjZW5lLT5wYWludFRvQ3VycmVudEdM
Q29udGV4dCh2aWV3cG9ydFRyYW5zZm9ybSwgRmxvYXRSZWN0IHsgRmxvYXRQb2ludCB7IH0sIHZp
ZXdwb3J0U2l6ZSB9LAorICAgICAgICBiYWNrZ3JvdW5kQ29sb3IsIGRyYXdzQmFja2dyb3VuZCwg
bV9wYWludEZsYWdzKTsKIAogICAgIG1fY29udGV4dC0+c3dhcEJ1ZmZlcnMoKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNv
bXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29y
ZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuaApp
bmRleCA2ZDcwNTM4NTBkYS4uYmM5YWM2MTZlMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29t
cG9zaXRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
dGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5oCkBAIC03MSw2ICs3MSw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldFNjcm9sbFBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OkludFBv
aW50JiwgZmxvYXQgc2NhbGUpOwogICAgIHZvaWQgc2V0Vmlld3BvcnRTaXplKGNvbnN0IFdlYkNv
cmU6OkludFNpemUmLCBmbG9hdCBzY2FsZSk7CiAgICAgdm9pZCBzZXREcmF3c0JhY2tncm91bmQo
Ym9vbCk7CisgICAgdm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3Im
KTsKIAogICAgIHZvaWQgdXBkYXRlU2NlbmVTdGF0ZShjb25zdCBXZWJDb3JlOjpDb29yZGluYXRl
ZEdyYXBoaWNzU3RhdGUmKTsKIApAQCAtMTE0LDcgKzExNSw3IEBAIHByaXZhdGU6CiAgICAgICAg
IGZsb2F0IHNjYWxlRmFjdG9yIHsgMSB9OwogICAgICAgICBib29sIGRyYXdzQmFja2dyb3VuZCB7
IHRydWUgfTsKICAgICAgICAgYm9vbCBuZWVkc1Jlc2l6ZSB7IGZhbHNlIH07Ci0KKyAgICAgICAg
V2ViQ29yZTo6Q29sb3IgYmFja2dyb3VuZENvbG9yOwogICAgICAgICBWZWN0b3I8V2ViQ29yZTo6
Q29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlPiBzdGF0ZXM7CiAKICAgICAgICAgYm9vbCBjbGllbnRS
ZW5kZXJzTmV4dEZyYW1lIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291
cmNlc1dQRS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNXUEUudHh0CmluZGV4IDhlZTJmZWY0
MmE2Li44NzU4M2JhZDFmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzV1BFLnR4
dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNXUEUudHh0CkBAIC0xNjcsNiArMTY3LDcgQEAg
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdpbmRvd1Byb3BlcnRpZXMuY3BwIEBuby11bmlmeQog
VUlQcm9jZXNzL0FQSS93cGUvQ29tcG9zaXRpbmdNYW5hZ2VyUHJveHkuY3BwIEBuby11bmlmeQog
VUlQcm9jZXNzL0FQSS93cGUvUGFnZUNsaWVudEltcGwuY3BwIEBuby11bmlmeQogVUlQcm9jZXNz
L0FQSS93cGUvU2Nyb2xsR2VzdHVyZUNvbnRyb2xsZXIuY3BwIEBuby11bmlmeQorVUlQcm9jZXNz
L0FQSS93cGUvV2ViS2l0Q29sb3IuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS93cGUvV2Vi
S2l0U2NyaXB0RGlhbG9nV1BFLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvd3BlL1dlYktp
dFdlYlZpZXdCYWNrZW5kLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdl
YlZpZXdXUEUuY3BwIEBuby11bmlmeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcAppbmRleCA2NzIwMWQ4OWVhYS4uN2E4YTEwZjVjMWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZp
ZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZp
ZXcuY3BwCkBAIC0zOTY5LDc0ICszOTY5LDYgQEAgdm9pZCB3ZWJraXRXZWJWaWV3V2ViUHJvY2Vz
c1Rlcm1pbmF0ZWQoV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0V2ViUHJvY2Vzc1QKICAg
ICBnX3NpZ25hbF9lbWl0KHdlYlZpZXcsIHNpZ25hbHNbV0VCX1BST0NFU1NfVEVSTUlOQVRFRF0s
IDAsIHJlYXNvbik7CiB9CiAKLSNpZiBQTEFURk9STShHVEspCi0vKioKLSAqIHdlYmtpdF93ZWJf
dmlld19zZXRfYmFja2dyb3VuZF9jb2xvcjoKLSAqIEB3ZWJfdmlldzogYSAjV2ViS2l0V2ViVmll
dwotICogQHJnYmE6IGEgI0dka1JHQkEKLSAqCi0gKiBTZXRzIHRoZSBjb2xvciB0aGF0IHdpbGwg
YmUgdXNlZCB0byBkcmF3IHRoZSBAd2ViX3ZpZXcgYmFja2dyb3VuZCBiZWZvcmUKLSAqIHRoZSBh
Y3R1YWwgY29udGVudHMgYXJlIHJlbmRlcmVkLiBOb3RlIHRoYXQgaWYgdGhlIHdlYiBwYWdlIGxv
YWRlZCBpbiBAd2ViX3ZpZXcKLSAqIHNwZWNpZmllcyBhIGJhY2tncm91bmQgY29sb3IsIGl0IHdp
bGwgdGFrZSBwcmVjZWRlbmNlIG92ZXIgdGhlIEByZ2JhIGNvbG9yLgotICogQnkgZGVmYXVsdCB0
aGUgQHdlYl92aWV3IGJhY2tncm91bmQgY29sb3IgaXMgb3BhcXVlIHdoaXRlLgotICogTm90ZSB0
aGF0IHRoZSBwYXJlbnQgd2luZG93IG11c3QgaGF2ZSBhIFJHQkEgdmlzdWFsIGFuZAotICogI0d0
a1dpZGdldDphcHAtcGFpbnRhYmxlIHByb3BlcnR5IHNldCB0byAlVFJVRSBmb3IgYmFja2dyb3Vu
ZHMgY29sb3JzIHRvIHdvcmsuCi0gKgotICogPGluZm9ybWFsZXhhbXBsZT48cHJvZ3JhbWxpc3Rp
bmc+Ci0gKiBzdGF0aWMgdm9pZCBicm93c2VyX3dpbmRvd19zZXRfYmFja2dyb3VuZF9jb2xvciAo
QnJvd3NlcldpbmRvdyAqd2luZG93LAotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdka1JHQkEgKnJnYmEpCi0gKiB7Ci0gKiAgICAgV2Vi
S2l0V2ViVmlldyAqd2ViX3ZpZXc7Ci0gKiAgICAgR2RrU2NyZWVuICpzY3JlZW4gPSBndGtfd2lu
ZG93X2dldF9zY3JlZW4gKEdUS19XSU5ET1cgKHdpbmRvdykpOwotICogICAgIEdka1Zpc3VhbCAq
cmdiYV92aXN1YWwgPSBnZGtfc2NyZWVuX2dldF9yZ2JhX3Zpc3VhbCAoc2NyZWVuKTsKLSAqCi0g
KiAgICAgaWYgKCFyZ2JhX3Zpc3VhbCkKLSAqICAgICAgICAgIHJldHVybjsKLSAqCi0gKiAgICAg
Z3RrX3dpZGdldF9zZXRfdmlzdWFsIChHVEtfV0lER0VUICh3aW5kb3cpLCByZ2JhX3Zpc3VhbCk7
Ci0gKiAgICAgZ3RrX3dpZGdldF9zZXRfYXBwX3BhaW50YWJsZSAoR1RLX1dJREdFVCAod2luZG93
KSwgVFJVRSk7Ci0gKgotICogICAgIHdlYl92aWV3ID0gYnJvd3Nlcl93aW5kb3dfZ2V0X3dlYl92
aWV3ICh3aW5kb3cpOwotICogICAgIHdlYmtpdF93ZWJfdmlld19zZXRfYmFja2dyb3VuZF9jb2xv
ciAod2ViX3ZpZXcsIHJnYmEpOwotICogfQotICogPC9wcm9ncmFtbGlzdGluZz48L2luZm9ybWFs
ZXhhbXBsZT4KLSAqCi0gKiBTaW5jZTogMi44Ci0gKi8KLXZvaWQgd2Via2l0X3dlYl92aWV3X3Nl
dF9iYWNrZ3JvdW5kX2NvbG9yKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IEdka1JHQkEq
IHJnYmEpCi17Ci0gICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmll
dykpOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwocmdiYSk7Ci0KLSAgICBDb2xvciBjb2xvcigqcmdi
YSk7Ci0gICAgYXV0byYgcGFnZSA9IGdldFBhZ2Uod2ViVmlldyk7Ci0gICAgaWYgKHBhZ2UuYmFj
a2dyb3VuZENvbG9yKCkgPT0gY29sb3IpCi0gICAgICAgIHJldHVybjsKLQotICAgIHBhZ2Uuc2V0
QmFja2dyb3VuZENvbG9yKGNvbG9yKTsKLSAgICBwYWdlLnNldERyYXdzQmFja2dyb3VuZChjb2xv
ciA9PSBDb2xvcjo6d2hpdGUpOwotfQotCi0vKioKLSAqIHdlYmtpdF93ZWJfdmlld19nZXRfYmFj
a2dyb3VuZF9jb2xvcjoKLSAqIEB3ZWJfdmlldzogYSAjV2ViS2l0V2ViVmlldwotICogQHJnYmE6
IChvdXQpOiBhICNHZGtSR0JBIHRvIGZpbGwgaW4gd2l0aCB0aGUgYmFja2dyb3VuZCBjb2xvcgot
ICoKLSAqIEdldHMgdGhlIGNvbG9yIHRoYXQgaXMgdXNlZCB0byBkcmF3IHRoZSBAd2ViX3ZpZXcg
YmFja2dyb3VuZCBiZWZvcmUKLSAqIHRoZSBhY3R1YWwgY29udGVudHMgYXJlIHJlbmRlcmVkLgot
ICogRm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlIGFsc28gd2Via2l0X3dlYl92aWV3X3NldF9iYWNr
Z3JvdW5kX2NvbG9yKCkKLSAqCi0gKiBTaW5jZTogMi44Ci0gKi8KLXZvaWQgd2Via2l0X3dlYl92
aWV3X2dldF9iYWNrZ3JvdW5kX2NvbG9yKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIEdka1JHQkEq
IHJnYmEpCi17Ci0gICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmll
dykpOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwocmdiYSk7Ci0KLSAgICAqcmdiYSA9IGdldFBhZ2Uo
d2ViVmlldykuYmFja2dyb3VuZENvbG9yKCk7Ci19Ci0jZW5kaWYgLy8gUExBVEZPUk0oR1RLKQot
CiAvKgogICogd2Via2l0X3dlYl92aWV3X2lzX2VkaXRhYmxlOgogICogQHdlYl92aWV3OiBhICNX
ZWJLaXRXZWJWaWV3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlZpZXdHdGsuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJWaWV3R3RrLmNwcAppbmRleCBiYzgyMTc5OTEyOC4uZWQ1NjllNjJkYzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0d0ay5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3R3Rr
LmNwcApAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgIldlYktpdFNjcmlwdERpYWxvZ0ltcGwu
aCIKICNpbmNsdWRlICJXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJL
aXRXZWJWaWV3UHJpdmF0ZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3IuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0d0a1V0aWxpdGllcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1EaXNw
bGF5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVNjcmVlbi5oPgpAQCAtMzU5LDMgKzM2
MCw3MSBAQCBHdGtXaWRnZXQqIHdlYmtpdF93ZWJfdmlld19uZXdfd2l0aF91c2VyX2NvbnRlbnRf
bWFuYWdlcihXZWJLaXRVc2VyQ29udGVudE1hbmFnZQogCiAgICAgcmV0dXJuIEdUS19XSURHRVQo
Z19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9WSUVXLCAidXNlci1jb250ZW50LW1hbmFnZXIi
LCB1c2VyQ29udGVudE1hbmFnZXIsIG51bGxwdHIpKTsKIH0KKworLyoqCisgKiB3ZWJraXRfd2Vi
X3ZpZXdfc2V0X2JhY2tncm91bmRfY29sb3I6CisgKiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZp
ZXcKKyAqIEByZ2JhOiBhICNHZGtSR0JBCisgKgorICogU2V0cyB0aGUgY29sb3IgdGhhdCB3aWxs
IGJlIHVzZWQgdG8gZHJhdyB0aGUgQHdlYl92aWV3IGJhY2tncm91bmQgYmVmb3JlCisgKiB0aGUg
YWN0dWFsIGNvbnRlbnRzIGFyZSByZW5kZXJlZC4gTm90ZSB0aGF0IGlmIHRoZSB3ZWIgcGFnZSBs
b2FkZWQgaW4gQHdlYl92aWV3CisgKiBzcGVjaWZpZXMgYSBiYWNrZ3JvdW5kIGNvbG9yLCBpdCB3
aWxsIHRha2UgcHJlY2VkZW5jZSBvdmVyIHRoZSBAcmdiYSBjb2xvci4KKyAqIEJ5IGRlZmF1bHQg
dGhlIEB3ZWJfdmlldyBiYWNrZ3JvdW5kIGNvbG9yIGlzIG9wYXF1ZSB3aGl0ZS4KKyAqIE5vdGUg
dGhhdCB0aGUgcGFyZW50IHdpbmRvdyBtdXN0IGhhdmUgYSBSR0JBIHZpc3VhbCBhbmQKKyAqICNH
dGtXaWRnZXQ6YXBwLXBhaW50YWJsZSBwcm9wZXJ0eSBzZXQgdG8gJVRSVUUgZm9yIGJhY2tncm91
bmRzIGNvbG9ycyB0byB3b3JrLgorICoKKyAqIDxpbmZvcm1hbGV4YW1wbGU+PHByb2dyYW1saXN0
aW5nPgorICogc3RhdGljIHZvaWQgYnJvd3Nlcl93aW5kb3dfc2V0X2JhY2tncm91bmRfY29sb3Ig
KEJyb3dzZXJXaW5kb3cgKndpbmRvdywKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHZGtSR0JBICpyZ2JhKQorICogeworICogICAgIFdl
YktpdFdlYlZpZXcgKndlYl92aWV3OworICogICAgIEdka1NjcmVlbiAqc2NyZWVuID0gZ3RrX3dp
bmRvd19nZXRfc2NyZWVuIChHVEtfV0lORE9XICh3aW5kb3cpKTsKKyAqICAgICBHZGtWaXN1YWwg
KnJnYmFfdmlzdWFsID0gZ2RrX3NjcmVlbl9nZXRfcmdiYV92aXN1YWwgKHNjcmVlbik7CisgKgor
ICogICAgIGlmICghcmdiYV92aXN1YWwpCisgKiAgICAgICAgICByZXR1cm47CisgKgorICogICAg
IGd0a193aWRnZXRfc2V0X3Zpc3VhbCAoR1RLX1dJREdFVCAod2luZG93KSwgcmdiYV92aXN1YWwp
OworICogICAgIGd0a193aWRnZXRfc2V0X2FwcF9wYWludGFibGUgKEdUS19XSURHRVQgKHdpbmRv
dyksIFRSVUUpOworICoKKyAqICAgICB3ZWJfdmlldyA9IGJyb3dzZXJfd2luZG93X2dldF93ZWJf
dmlldyAod2luZG93KTsKKyAqICAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0X2JhY2tncm91bmRfY29s
b3IgKHdlYl92aWV3LCByZ2JhKTsKKyAqIH0KKyAqIDwvcHJvZ3JhbWxpc3Rpbmc+PC9pbmZvcm1h
bGV4YW1wbGU+CisgKgorICogU2luY2U6IDIuOAorICovCit2b2lkIHdlYmtpdF93ZWJfdmlld19z
ZXRfYmFja2dyb3VuZF9jb2xvcihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBHZGtSR0JB
KiByZ2JhKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZp
ZXcpKTsKKyAgICBnX3JldHVybl9pZl9mYWlsKHJnYmEpOworCisgICAgV2ViQ29yZTo6Q29sb3Ig
Y29sb3IoKnJnYmEpOworICAgIGF1dG8mIHBhZ2UgPSAqd2Via2l0V2ViVmlld0Jhc2VHZXRQYWdl
KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViS2l0V2ViVmlld0Jhc2UqPih3ZWJWaWV3KSk7CisgICAgaWYg
KHBhZ2UuYmFja2dyb3VuZENvbG9yKCkgPT0gY29sb3IpCisgICAgICAgIHJldHVybjsKKworICAg
IGlmICghY29sb3IuaXNPcGFxdWUoKSkKKyAgICAgICAgcGFnZS5zZXREcmF3c0JhY2tncm91bmQo
ZmFsc2UpOworICAgIHBhZ2Uuc2V0QmFja2dyb3VuZENvbG9yKGNvbG9yKTsKK30KKworLyoqCisg
KiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2JhY2tncm91bmRfY29sb3I6CisgKiBAd2ViX3ZpZXc6IGEg
I1dlYktpdFdlYlZpZXcKKyAqIEByZ2JhOiAob3V0KTogYSAjR2RrUkdCQSB0byBmaWxsIGluIHdp
dGggdGhlIGJhY2tncm91bmQgY29sb3IKKyAqCisgKiBHZXRzIHRoZSBjb2xvciB0aGF0IGlzIHVz
ZWQgdG8gZHJhdyB0aGUgQHdlYl92aWV3IGJhY2tncm91bmQgYmVmb3JlCisgKiB0aGUgYWN0dWFs
IGNvbnRlbnRzIGFyZSByZW5kZXJlZC4KKyAqIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZSBhbHNv
IHdlYmtpdF93ZWJfdmlld19zZXRfYmFja2dyb3VuZF9jb2xvcigpCisgKgorICogU2luY2U6IDIu
OAorICovCit2b2lkIHdlYmtpdF93ZWJfdmlld19nZXRfYmFja2dyb3VuZF9jb2xvcihXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3LCBHZGtSR0JBKiByZ2JhKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwo
V0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpKTsKKyAgICBnX3JldHVybl9pZl9mYWlsKHJnYmEp
OworCisgICAgYXV0byYgcGFnZSA9ICp3ZWJraXRXZWJWaWV3QmFzZUdldFBhZ2UocmVpbnRlcnBy
ZXRfY2FzdDxXZWJLaXRXZWJWaWV3QmFzZSo+KHdlYlZpZXcpKTsKKyAgICAqcmdiYSA9IHBhZ2Uu
YmFja2dyb3VuZENvbG9yKCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvd3BlL1dlYktpdENvbG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93
cGUvV2ViS2l0Q29sb3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
Li40YTRhNmUxMzE5OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS93cGUvV2ViS2l0Q29sb3IuY3BwCkBAIC0wLDAgKzEsMTc5IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE5IElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICog
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJX
ZWJLaXRDb2xvci5oIgorCisjaW5jbHVkZSAiV2ViS2l0Q29sb3JQcml2YXRlLmgiCisKKy8qKgor
ICogU0VDVElPTjogV2ViS2l0Q29sb3IKKyAqIEBTaG9ydF9kZXNjcmlwdGlvbjogQSB3ZWIgdmll
dyBiYWNrZ3JvdW5kIGNvbG9yCisgKiBAVGl0bGU6IFdlYktpdENvbG9yCisgKiBAU2VlX2Fsc286
ICNXZWJLaXRXZWJWaWV3LgorICoKKyAqIEEgV2ViS2l0Q29sb3IgaXMgYSBib3hlZCB0eXBlIHdy
YXBwaW5nIGEgV2ViQ29yZSBjb2xvci4KKyAqCisgKiBTaW5jZTogMi4yNAorICovCisKK3N0cnVj
dCBfV2ViS2l0Q29sb3IgeworICAgIF9XZWJLaXRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYg
Y29sb3IpCisgICAgICAgIDogbV9jb2xvcihjb2xvcikKKyAgICB7CisgICAgfQorCisgICAgfl9X
ZWJLaXRDb2xvcigpCisgICAgeworICAgIH0KKworICAgIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBj
b2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fY29sb3I7IH0KKworICAgIFdlYkNvcmU6OkNvbG9yIG1f
Y29sb3I7CisgICAgaW50IHJlZmVyZW5jZUNvdW50IHsgMSB9OworfTsKKworc3RhdGljIFdlYktp
dENvbG9yKiB3ZWJraXRDb2xvclJlZihXZWJLaXRDb2xvciogY29sb3IpCit7CisgICAgQVNTRVJU
KGNvbG9yKTsKKyAgICBnX2F0b21pY19pbnRfaW5jKCZjb2xvci0+cmVmZXJlbmNlQ291bnQpOwor
ICAgIHJldHVybiBjb2xvcjsKK30KKworR19ERUZJTkVfQk9YRURfVFlQRShXZWJLaXRDb2xvciwg
d2Via2l0X2NvbG9yLCB3ZWJraXRDb2xvclJlZiwgd2Via2l0Q29sb3JVbnJlZikKKwordm9pZCB3
ZWJraXRDb2xvclVucmVmKFdlYktpdENvbG9yKiBjb2xvcikKK3sKKyAgICBBU1NFUlQoY29sb3Ip
OworICAgIGlmIChnX2F0b21pY19pbnRfZGVjX2FuZF90ZXN0KCZjb2xvci0+cmVmZXJlbmNlQ291
bnQpKSB7CisgICAgICAgIGNvbG9yLT5+V2ViS2l0Q29sb3IoKTsKKyAgICAgICAgZmFzdEZyZWUo
Y29sb3IpOworICAgIH0KK30KKworV2ViS2l0Q29sb3IqIHdlYmtpdENvbG9yRnJvbUNvbG9yKGNv
bnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvcikKK3sKKyAgICBhdXRvKiByZXN1bHQgPSBzdGF0aWNf
Y2FzdDxXZWJLaXRDb2xvcio+KGZhc3RNYWxsb2Moc2l6ZW9mKFdlYktpdENvbG9yKSkpOworICAg
IG5ldyAocmVzdWx0KSBXZWJLaXRDb2xvcihjb2xvcik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30K
KworY29uc3QgV2ViQ29yZTo6Q29sb3ImIHdlYmtpdENvbG9yR2V0Q29sb3IoV2ViS2l0Q29sb3Iq
IGJhY2tncm91bmRDb2xvcikKK3sKKyAgICByZXR1cm4gYmFja2dyb3VuZENvbG9yLT5jb2xvcigp
OworfQorCisvKioKKyAqIHdlYmtpdF9jb2xvcl9uZXdfZnJvbV9zdHJpbmc6CisgKiBAY29sb3JT
dHJpbmc6IGNvbG9yIHJlcHJlc2VudGF0aW9uIGFzIGNvbG9yIG5pY2tuYW1lIG9yIEhFWCBzdHJp
bmcKKyAqCisgKiBDcmVhdGUgYSBuZXcgI1dlYktpdENvbG9yIGZvciB0aGUgZ2l2ZW4gY29sb3Ig
c3RyaW5nCisgKiByZXByZXNlbnRhdGlvbi4gVGhlcmUgYXJlIHR3byB2YWxpZCByZXByZXNlbnRh
dGlvbiB0eXBlczogc3RhbmRhcmQgY29sb3IKKyAqIG5hbWVzIChzZWUgaHR0cHM6Ly9odG1sY29s
b3Jjb2Rlcy5jb20vY29sb3ItbmFtZXMvIGZvciBpbnN0YW5jZSkgb3IgSEVYCisgKiB2YWx1ZXMu
CisgKgorICogUmV0dXJuczogYSBuZXdseSBjcmVhdGVkICNXZWJLaXRDb2xvcgorICoKKyAqIFNp
bmNlOiAyLjI0CisgKi8KK1dlYktpdENvbG9yKiB3ZWJraXRfY29sb3JfbmV3X2Zyb21fc3RyaW5n
KGNvbnN0IGNoYXIqIGNvbG9yU3RyaW5nKQoreworICAgIHJldHVybiB3ZWJraXRDb2xvckZyb21D
b2xvcihXZWJDb3JlOjpDb2xvcihjb2xvclN0cmluZykpOworfQorCisvKioKKyAqIHdlYmtpdF9j
b2xvcl9nZXRfcmVkX2NoYW5uZWw6CisgKiBAY29sb3I6IGEgI1dlYktpdENvbG9yCisgKgorICog
UHJvdmlkZXMgcmVhZC1vbmx5IGFjY2VzcyB0byB0aGUgcmVkIGNvbXBvbmVudCBvZiB0aGUgY29s
b3IuCisgKgorICogUmV0dXJuczogYSAjZ2ludCBjbGFtcGVkIGJldHdlZW4gMCBhbmQgMjU1Lgor
ICoKKyAqIFNpbmNlOiAyLjI0CisgKi8KK2dpbnQgd2Via2l0X2NvbG9yX2dldF9yZWRfY2hhbm5l
bChXZWJLaXRDb2xvciogY29sb3IpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoY29sb3Is
IDApOworICAgIHJldHVybiBjb2xvci0+Y29sb3IoKS5yZWQoKTsKK30KKworLyoqCisgKiB3ZWJr
aXRfY29sb3JfZ2V0X2dyZWVuX2NoYW5uZWw6CisgKiBAY29sb3I6IGEgI1dlYktpdENvbG9yCisg
KgorICogUHJvdmlkZXMgcmVhZC1vbmx5IGFjY2VzcyB0byB0aGUgZ3JlZW4gY29tcG9uZW50IG9m
IHRoZSBjb2xvci4KKyAqCisgKiBSZXR1cm5zOiBhICNnaW50IGNsYW1wZWQgYmV0d2VlbiAwIGFu
ZCAyNTUuCisgKgorICogU2luY2U6IDIuMjQKKyAqLworZ2ludCB3ZWJraXRfY29sb3JfZ2V0X2dy
ZWVuX2NoYW5uZWwoV2ViS2l0Q29sb3IqIGNvbG9yKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsKGNvbG9yLCAwKTsKKyAgICByZXR1cm4gY29sb3ItPmNvbG9yKCkuZ3JlZW4oKTsKK30KKwor
LyoqCisgKiB3ZWJraXRfY29sb3JfZ2V0X2JsdWVfY2hhbm5lbDoKKyAqIEBjb2xvcjogYSAjV2Vi
S2l0Q29sb3IKKyAqCisgKiBQcm92aWRlcyByZWFkLW9ubHkgYWNjZXNzIHRvIHRoZSBibHVlIGNv
bXBvbmVudCBvZiB0aGUgY29sb3IuCisgKgorICogUmV0dXJuczogYSAjZ2ludCBjbGFtcGVkIGJl
dHdlZW4gMCBhbmQgMjU1LgorICoKKyAqIFNpbmNlOiAyLjI0CisgKi8KK2dpbnQgd2Via2l0X2Nv
bG9yX2dldF9ibHVlX2NoYW5uZWwoV2ViS2l0Q29sb3IqIGNvbG9yKQoreworICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsKGNvbG9yLCAwKTsKKyAgICByZXR1cm4gY29sb3ItPmNvbG9yKCkuYmx1ZSgp
OworfQorCisvKioKKyAqIHdlYmtpdF9jb2xvcl9nZXRfYWxwaGFfY2hhbm5lbDoKKyAqIEBjb2xv
cjogYSAjV2ViS2l0Q29sb3IKKyAqCisgKiBQcm92aWRlcyByZWFkLW9ubHkgYWNjZXNzIHRvIHRo
ZSBhbHBoYSBjb21wb25lbnQgb2YgdGhlIGNvbG9yLgorICoKKyAqIFJldHVybnM6IGEgI2dpbnQg
Y2xhbXBlZCBiZXR3ZWVuIDAgYW5kIDI1NS4KKyAqCisgKiBTaW5jZTogMi4yNAorICovCitnaW50
IHdlYmtpdF9jb2xvcl9nZXRfYWxwaGFfY2hhbm5lbChXZWJLaXRDb2xvciogY29sb3IpCit7Cisg
ICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoY29sb3IsIDApOworICAgIHJldHVybiBjb2xvci0+Y29s
b3IoKS5hbHBoYSgpOworfQorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGUgPD4gV2ViS2l0
Q29sb3IqIHJlZkdQdHIoV2ViS2l0Q29sb3IqIHB0cikKK3sKKyAgICBpZiAocHRyKQorICAgICAg
ICB3ZWJraXRDb2xvclJlZihwdHIpOworICAgIHJldHVybiBwdHI7Cit9CisKK3RlbXBsYXRlIDw+
IHZvaWQgZGVyZWZHUHRyKFdlYktpdENvbG9yKiBwdHIpCit7CisgICAgaWYgKHB0cikKKyAgICAg
ICAgd2Via2l0Q29sb3JVbnJlZihwdHIpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdENvbG9yLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvd3BlL1dlYktpdENvbG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAuLjU1NTlkMjJmZWU1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRDb2xvci5oCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTkgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
CisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmICFkZWZpbmVkKF9fV0VCS0lUX0hfSU5T
SURFX18pICYmICFkZWZpbmVkKFdFQktJVDJfQ09NUElMQVRJT04pCisjZXJyb3IgIk9ubHkgPHdw
ZS93ZWJraXQuaD4gY2FuIGJlIGluY2x1ZGVkIGRpcmVjdGx5LiIKKyNlbmRpZgorCisjaWZuZGVm
IFdlYktpdENvbG9yX2gKKyNkZWZpbmUgV2ViS2l0Q29sb3JfaAorCisjaW5jbHVkZSA8Z2xpYi1v
YmplY3QuaD4KKyNpbmNsdWRlIDx3cGUvV2ViS2l0RGVmaW5lcy5oPgorCitHX0JFR0lOX0RFQ0xT
CisKKyNkZWZpbmUgV0VCS0lUX1RZUEVfQ09MT1IgKHdlYmtpdF9jb2xvcl9nZXRfdHlwZSgpKQor
Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0Q29sb3IgV2ViS2l0Q29sb3I7CisKK1dFQktJVF9BUEkg
R1R5cGUKK3dlYmtpdF9jb2xvcl9nZXRfdHlwZSAgICAgICAgICAgKHZvaWQpOworCitXRUJLSVRf
QVBJIFdlYktpdENvbG9yICoKK3dlYmtpdF9jb2xvcl9uZXdfZnJvbV9zdHJpbmcgICAgKGNvbnN0
IGNoYXIqIGNvbG9yU3RyaW5nKTsKKworV0VCS0lUX0FQSSBnaW50Cit3ZWJraXRfY29sb3JfZ2V0
X3JlZF9jaGFubmVsICAgIChXZWJLaXRDb2xvciogY29sb3IpOworCitXRUJLSVRfQVBJIGdpbnQK
K3dlYmtpdF9jb2xvcl9nZXRfZ3JlZW5fY2hhbm5lbCAgKFdlYktpdENvbG9yKiBjb2xvcik7CisK
K1dFQktJVF9BUEkgZ2ludAord2Via2l0X2NvbG9yX2dldF9ibHVlX2NoYW5uZWwgICAoV2ViS2l0
Q29sb3IqIGNvbG9yKTsKKworV0VCS0lUX0FQSSBnaW50Cit3ZWJraXRfY29sb3JfZ2V0X2FscGhh
X2NoYW5uZWwgIChXZWJLaXRDb2xvciogY29sb3IpOworCitHX0VORF9ERUNMUworCisjZW5kaWYg
LyogV2ViS2l0Q29sb3JfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL3dwZS9XZWJLaXRDb2xvclByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS93cGUvV2ViS2l0Q29sb3JQcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAuLmYwYmI4NjU2NDYxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRDb2xvclByaXZhdGUuaApAQCAtMCwwICsxLDM3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE5IElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
KyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAq
CisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAq
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJXZWJLaXRDb2xvci5oIgorCisjaW5jbHVkZSA8d3Rm
L2dsaWIvR1JlZlB0ci5oPgorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGUgPD4gV2ViS2l0
Q29sb3IqIHJlZkdQdHIoV2ViS2l0Q29sb3IqIHB0cik7Cit0ZW1wbGF0ZSA8PiB2b2lkIGRlcmVm
R1B0cihXZWJLaXRDb2xvciogcHRyKTsKKworfQorCit2b2lkIHdlYmtpdENvbG9yVW5yZWYoV2Vi
S2l0Q29sb3IqKTsKKworV2ViS2l0Q29sb3IqIHdlYmtpdENvbG9yRnJvbUNvbG9yKGNvbnN0IFdl
YkNvcmU6OkNvbG9yJik7Citjb25zdCBXZWJDb3JlOjpDb2xvciYgd2Via2l0Q29sb3JHZXRDb2xv
cihXZWJLaXRDb2xvciopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L3dwZS9XZWJLaXRXZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dl
YktpdFdlYlZpZXcuaAppbmRleCA0MTAyYTc1MjZkNi4uOWRmMzg4MzllZTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViVmlldy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViVmlldy5oCkBAIC00OSw2ICs0
OSw3IEBACiAjaW5jbHVkZSA8d3BlL1dlYktpdFdlYkNvbnRleHQuaD4KICNpbmNsdWRlIDx3cGUv
V2ViS2l0V2ViUmVzb3VyY2UuaD4KICNpbmNsdWRlIDx3cGUvV2ViS2l0V2ViVmlld0JhY2tlbmQu
aD4KKyNpbmNsdWRlIDx3cGUvV2ViS2l0Q29sb3IuaD4KICNpbmNsdWRlIDx3cGUvV2ViS2l0V2Vi
Vmlld1Nlc3Npb25TdGF0ZS5oPgogI2luY2x1ZGUgPHdwZS9XZWJLaXRXaW5kb3dQcm9wZXJ0aWVz
Lmg+CiAKQEAgLTUxNyw2ICs1MTgsMTIgQEAgV0VCS0lUX0FQSSB2b2lkCiB3ZWJraXRfd2ViX3Zp
ZXdfcmVtb3ZlX2ZyYW1lX2Rpc3BsYXllZF9jYWxsYmFjayAgICAgIChXZWJLaXRXZWJWaWV3ICAg
ICAgICAgICAgICAgKndlYl92aWV3LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgICAgICAgICAgICAgICAgICAgICAgICBpZCk7CiAK
K1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl92aWV3X3NldF9iYWNrZ3JvdW5kX2NvbG9yICAg
ICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJL
aXRDb2xvciAgICAgICAgICAgICAgICAgICpjb2xvcik7CitXRUJLSVRfQVBJIFdlYktpdENvbG9y
ICoKK3dlYmtpdF93ZWJfdmlld19nZXRfYmFja2dyb3VuZF9jb2xvciAgICAgICAgICAgICAgICAg
KFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAgKndlYl92aWV3KTsKKwogR19FTkRfREVDTFMK
IAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dl
YktpdFdlYlZpZXdXUEUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJL
aXRXZWJWaWV3V1BFLmNwcAppbmRleCBhMzQ5NWU4NTJlMS4uMzUyN2RjNmQ1YzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViVmlld1dQRS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3V1BFLmNw
cApAQCAtMjAsNiArMjAsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYktp
dFdlYlZpZXcuaCIKIAorI2luY2x1ZGUgIldlYktpdENvbG9yUHJpdmF0ZS5oIgogI2luY2x1ZGUg
IldlYktpdFdlYlZpZXdQcml2YXRlLmgiCiAKIGdib29sZWFuIHdlYmtpdFdlYlZpZXdBdXRoZW50
aWNhdGUoV2ViS2l0V2ViVmlldyosIFdlYktpdEF1dGhlbnRpY2F0aW9uUmVxdWVzdCopCkBAIC0x
NzgsMyArMTc5LDQ4IEBAIFdlYktpdFdlYlZpZXcqIHdlYmtpdF93ZWJfdmlld19uZXdfd2l0aF91
c2VyX2NvbnRlbnRfbWFuYWdlcihXZWJLaXRXZWJWaWV3QmFja2VuCiAgICAgICAgICJ1c2VyLWNv
bnRlbnQtbWFuYWdlciIsIHVzZXJDb250ZW50TWFuYWdlciwKICAgICAgICAgbnVsbHB0cikpOwog
fQorCisvKioKKyAqIHdlYmtpdF93ZWJfdmlld19zZXRfYmFja2dyb3VuZF9jb2xvcjoKKyAqIEB3
ZWJfdmlldzogYSAjV2ViS2l0V2ViVmlldworICogQGJhY2tncm91bmRDb2xvcjogYSAjV2ViS2l0
Q29sb3IKKyAqCisgKiBTZXRzIHRoZSBjb2xvciB0aGF0IHdpbGwgYmUgdXNlZCB0byBkcmF3IHRo
ZSBAd2ViX3ZpZXcgYmFja2dyb3VuZCBiZWZvcmUKKyAqIHRoZSBhY3R1YWwgY29udGVudHMgYXJl
IHJlbmRlcmVkLiBOb3RlIHRoYXQgaWYgdGhlIHdlYiBwYWdlIGxvYWRlZCBpbiBAd2ViX3ZpZXcK
KyAqIHNwZWNpZmllcyBhIGJhY2tncm91bmQgY29sb3IsIGl0IHdpbGwgdGFrZSBwcmVjZWRlbmNl
IG92ZXIgdGhlIGJhY2tncm91bmQgY29sb3IuCisgKiBCeSBkZWZhdWx0IHRoZSBAd2ViX3ZpZXcg
YmFja2dyb3VuZCBjb2xvciBpcyBvcGFxdWUgd2hpdGUuCisgKgorICogU2luY2U6IDIuMjQKKyAq
Lwordm9pZCB3ZWJraXRfd2ViX3ZpZXdfc2V0X2JhY2tncm91bmRfY29sb3IoV2ViS2l0V2ViVmll
dyogd2ViVmlldywgV2ViS2l0Q29sb3IqIGJhY2tncm91bmRDb2xvcikKK3sKKyAgICBnX3JldHVy
bl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSk7CisgICAgZ19yZXR1cm5faWZf
ZmFpbChiYWNrZ3JvdW5kQ29sb3IpOworCisgICAgYXV0byYgcGFnZSA9IHdlYmtpdFdlYlZpZXdH
ZXRQYWdlKHdlYlZpZXcpOworICAgIGF1dG8mIGNvbG9yID0gd2Via2l0Q29sb3JHZXRDb2xvcihi
YWNrZ3JvdW5kQ29sb3IpOworICAgIGlmICghY29sb3IuaXNPcGFxdWUoKSkKKyAgICAgICAgcGFn
ZS5zZXREcmF3c0JhY2tncm91bmQoZmFsc2UpOworCisgICAgcGFnZS5zZXRCYWNrZ3JvdW5kQ29s
b3IoY29sb3IpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfdmlld19nZXRfYmFja2dyb3VuZF9j
b2xvcjoKKyAqIEB3ZWJfdmlldzogYSAjV2ViS2l0V2ViVmlldworICoKKyAqIEdldHMgdGhlIGNv
bG9yIHRoYXQgaXMgdXNlZCB0byBkcmF3IHRoZSBAd2ViX3ZpZXcgYmFja2dyb3VuZCBiZWZvcmUg
dGhlCisgKiBhY3R1YWwgY29udGVudHMgYXJlIHJlbmRlcmVkLiBGb3IgbW9yZSBpbmZvcm1hdGlv
biBzZWUgYWxzbworICogd2Via2l0X3dlYl92aWV3X3NldF9iYWNrZ3JvdW5kX2NvbG9yKCkuCisg
KgorICogUmV0dXJuczogYSAjV2ViS2l0Q29sb3IKKyAqCisgKiBTaW5jZTogMi4yNAorICovCitX
ZWJLaXRDb2xvciogd2Via2l0X3dlYl92aWV3X2dldF9iYWNrZ3JvdW5kX2NvbG9yKFdlYktpdFdl
YlZpZXcqIHdlYlZpZXcpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dF
Ql9WSUVXKHdlYlZpZXcpLCBudWxscHRyKTsKKyAgICBhdXRvJiBwYWdlID0gd2Via2l0V2ViVmll
d0dldFBhZ2Uod2ViVmlldyk7CisKKyAgICByZXR1cm4gd2Via2l0Q29sb3JGcm9tQ29sb3IocGFn
ZS5iYWNrZ3JvdW5kQ29sb3IoKSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTAuMS1zZWN0aW9ucy50eHQgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTAuMS1zZWN0aW9ucy50eHQKaW5kZXggNjI4ZGI0MjUy
YTQuLmY3YTZiNDRkOTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
d3BlL2RvY3Mvd3BlLTAuMS1zZWN0aW9ucy50eHQKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL3dwZS9kb2NzL3dwZS0wLjEtc2VjdGlvbnMudHh0CkBAIC0yMDYsNiArMjA2LDggQEAg
d2Via2l0X3dlYl92aWV3X3Jlc3RvcmVfc2Vzc2lvbl9zdGF0ZQogd2Via2l0X3dlYl92aWV3X2dl
dF9tYWluX3Jlc291cmNlCiB3ZWJraXRfd2ViX3ZpZXdfYWRkX2ZyYW1lX2Rpc3BsYXllZF9jYWxs
YmFjawogd2Via2l0X3dlYl92aWV3X3JlbW92ZV9mcmFtZV9kaXNwbGF5ZWRfY2FsbGJhY2sKK3dl
YmtpdF93ZWJfdmlld19nZXRfYmFja2dyb3VuZF9jb2xvcgord2Via2l0X3dlYl92aWV3X3NldF9i
YWNrZ3JvdW5kX2NvbG9yCiAKIDxTVUJTRUNUSU9OIFdlYktpdEphdmFzY3JpcHRSZXN1bHQ+CiBX
ZWJLaXRKYXZhc2NyaXB0UmVzdWx0CkBAIC0yNjYsNiArMjY4LDIwIEBAIHdlYmtpdF93ZWJfdmll
d19iYWNrZW5kX25ldwogd2Via2l0X3dlYl92aWV3X2JhY2tlbmRfZ2V0X3R5cGUKIDwvU0VDVElP
Tj4KIAorPFNFQ1RJT04+Cis8RklMRT5XZWJLaXRDb2xvcjwvRklMRT4KK1dFQktJVF9UWVBFX0NP
TE9SCitXZWJLaXRDb2xvcgord2Via2l0X2NvbG9yX25ld19mcm9tX3N0cmluZword2Via2l0X2Nv
bG9yX2dldF9yZWRfY2hhbm5lbAord2Via2l0X2NvbG9yX2dldF9ncmVlbl9jaGFubmVsCit3ZWJr
aXRfY29sb3JfZ2V0X2JsdWVfY2hhbm5lbAord2Via2l0X2NvbG9yX2dldF9hbHBoYV9jaGFubmVs
CisKKzxTVUJTRUNUSU9OIFByaXZhdGU+Cit3ZWJraXRfY29sb3JfZ2V0X3R5cGUKKzwvU0VDVElP
Tj4KKwogPFNFQ1RJT04+CiA8RklMRT5XZWJLaXRBdXRoZW50aWNhdGlvblJlcXVlc3Q8L0ZJTEU+
CiBXZWJLaXRBdXRoZW50aWNhdGlvblJlcXVlc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCmluZGV4IDU1ZTNhODI2ODFlLi43MWE0MTE2OTg1NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xNTQ2LDYgKzE1NDYsMTYgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnNldERyYXdzQmFja2dyb3VuZChib29sIGRyYXdzQmFja2dyb3VuZCkK
ICAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXREcmF3c0JhY2tn
cm91bmQoZHJhd3NCYWNrZ3JvdW5kKSwgbV9wYWdlSUQpOwogfQogCit2b2lkIFdlYlBhZ2VQcm94
eTo6c2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvcikKK3sKKyAg
ICBpZiAobV9iYWNrZ3JvdW5kQ29sb3IgPT0gY29sb3IpCisgICAgICAgIHJldHVybjsKKworICAg
IG1fYmFja2dyb3VuZENvbG9yID0gY29sb3I7CisgICAgaWYgKGlzVmFsaWQoKSkKKyAgICAgICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRCYWNrZ3JvdW5kQ29sb3IoY29s
b3IpLCBtX3BhZ2VJRCk7Cit9CisKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRUb3BDb250ZW50SW5z
ZXQoZmxvYXQgY29udGVudEluc2V0KQogewogICAgIGlmIChtX3RvcENvbnRlbnRJbnNldCA9PSBj
b250ZW50SW5zZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDc4
ZWE5NTAwNjc2Li5hODdhNWI2MjU0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKQEAgLTc1MSw4ICs3NTEsMTAgQEAgcHVibGljOgogCiAjaWYgUExBVEZPUk0oR1RLKQog
ICAgIFBsYXRmb3JtV2lkZ2V0IHZpZXdXaWRnZXQoKTsKKyNlbmRpZgorI2lmIFBMQVRGT1JNKEdU
SykgfHwgUExBVEZPUk0oV1BFKQogICAgIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBiYWNrZ3JvdW5k
Q29sb3IoKSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91bmRDb2xvcjsgfQotICAgIHZvaWQgc2V0
QmFja2dyb3VuZENvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvcikgeyBtX2JhY2tncm91
bmRDb2xvciA9IGNvbG9yOyB9CisgICAgdm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgV2Vi
Q29yZTo6Q29sb3ImKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oV0lOKQpAQCAtMjE1OSw2ICsy
MTYxLDggQEAgcHJpdmF0ZToKIAogI2lmIFBMQVRGT1JNKEdUSykKICAgICBTdHJpbmcgbV9hY2Nl
c3NpYmlsaXR5UGx1Z0lEOworI2VuZGlmCisjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShX
UEUpCiAgICAgV2ViQ29yZTo6Q29sb3IgbV9iYWNrZ3JvdW5kQ29sb3IgeyBXZWJDb3JlOjpDb2xv
cjo6d2hpdGUgfTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRl
eCBhYWNiNWI5Y2U2MS4uNzAwMzViYTNiOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcApAQCAtMTM5NCw2ICsxMzk0LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6dHJh
bnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFnZSgpCiAKICAgICBib29sIGlzTWFpbkZyYW1lID0g
bV9mcmFtZS0+aXNNYWluRnJhbWUoKTsKICAgICBib29sIGlzVHJhbnNwYXJlbnQgPSAhd2ViUGFn
ZS0+ZHJhd3NCYWNrZ3JvdW5kKCk7CisgICAgQ29sb3IgYmFja2dyb3VuZENvbG9yID0gd2ViUGFn
ZS0+YmFja2dyb3VuZENvbG9yKCk7CiAgICAgYm9vbCBzaG91bGRVc2VGaXhlZExheW91dCA9IGlz
TWFpbkZyYW1lICYmIHdlYlBhZ2UtPnVzZUZpeGVkTGF5b3V0KCk7CiAgICAgYm9vbCBzaG91bGRE
aXNhYmxlU2Nyb2xsaW5nID0gaXNNYWluRnJhbWUgJiYgIXdlYlBhZ2UtPm1haW5GcmFtZUlzU2Ny
b2xsYWJsZSgpOwogICAgIGJvb2wgc2hvdWxkSGlkZVNjcm9sbGJhcnMgPSBzaG91bGREaXNhYmxl
U2Nyb2xsaW5nOwpAQCAtMTQxOCw3ICsxNDE5LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6dHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFnZSgpCiAgICAgYm9vbCBob3Jpem9udGFs
TG9jayA9IHNob3VsZEhpZGVTY3JvbGxiYXJzIHx8IHdlYlBhZ2UtPmFsd2F5c1Nob3dzSG9yaXpv
bnRhbFNjcm9sbGVyKCk7CiAgICAgYm9vbCB2ZXJ0aWNhbExvY2sgPSBzaG91bGRIaWRlU2Nyb2xs
YmFycyB8fCB3ZWJQYWdlLT5hbHdheXNTaG93c1ZlcnRpY2FsU2Nyb2xsZXIoKTsKIAotICAgIG1f
ZnJhbWUtPmNvcmVGcmFtZSgpLT5jcmVhdGVWaWV3KHdlYlBhZ2UtPnNpemUoKSwgaXNUcmFuc3Bh
cmVudCwKKyAgICBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+Y3JlYXRlVmlldyh3ZWJQYWdlLT5zaXpl
KCksIGlzVHJhbnNwYXJlbnQsIGJhY2tncm91bmRDb2xvciwKICAgICAgICAgd2ViUGFnZS0+Zml4
ZWRMYXlvdXRTaXplKCksIGZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0LCBzaG91bGRVc2VGaXhlZExh
eW91dCwKICAgICAgICAgaG9yaXpvbnRhbFNjcm9sbGJhck1vZGUsIGhvcml6b250YWxMb2NrLCB2
ZXJ0aWNhbFNjcm9sbGJhck1vZGUsIHZlcnRpY2FsTG9jayk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3aW5nQXJlYS5j
cHAKaW5kZXggOTkyMDQ2NWIxNzMuLmY4M2VjMDY0ZjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZERyYXdpbmdBcmVhLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZERyYXdpbmdBcmVhLmNw
cApAQCAtMTAxLDYgKzEwMSwxNCBAQCB2b2lkIEFjY2VsZXJhdGVkRHJhd2luZ0FyZWE6OnBhZ2VC
YWNrZ3JvdW5kVHJhbnNwYXJlbmN5Q2hhbmdlZCgpCiAgICAgICAgIG1fcHJldmlvdXNMYXllclRy
ZWVIb3N0LT5wYWdlQmFja2dyb3VuZFRyYW5zcGFyZW5jeUNoYW5nZWQoKTsKIH0KIAordm9pZCBB
Y2NlbGVyYXRlZERyYXdpbmdBcmVhOjpwYWdlQmFja2dyb3VuZENvbG9yQ2hhbmdlZCgpCit7Cisg
ICAgaWYgKG1fbGF5ZXJUcmVlSG9zdCkKKyAgICAgICAgbV9sYXllclRyZWVIb3N0LT5wYWdlQmFj
a2dyb3VuZENvbG9yQ2hhbmdlZCgpOworICAgIGVsc2UgaWYgKG1fcHJldmlvdXNMYXllclRyZWVI
b3N0KQorICAgICAgICBtX3ByZXZpb3VzTGF5ZXJUcmVlSG9zdC0+cGFnZUJhY2tncm91bmRDb2xv
ckNoYW5nZWQoKTsKK30KKwogdm9pZCBBY2NlbGVyYXRlZERyYXdpbmdBcmVhOjpzZXRMYXllclRy
ZWVTdGF0ZUlzRnJvemVuKGJvb2wgaXNGcm96ZW4pCiB7CiAgICAgaWYgKG1fbGF5ZXJUcmVlU3Rh
dGVJc0Zyb3plbiA9PSBpc0Zyb3plbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEuaAppbmRleCA3MGFiZTQzNTky
NS4uYzJiZDVmNzZhOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9BY2NlbGVyYXRlZERyYXdpbmdBcmVhLmgKQEAgLTQ0LDYgKzQ0LDcgQEAgcHJv
dGVjdGVkOgogICAgIHZvaWQgc2V0TmVlZHNEaXNwbGF5SW5SZWN0KGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmKSBvdmVycmlkZTsKICAgICB2b2lkIHNjcm9sbChjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JiBzY3JvbGxSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzY3JvbGxEZWx0YSkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBwYWdlQmFja2dyb3VuZFRyYW5zcGFyZW5jeUNoYW5nZWQoKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHBhZ2VCYWNrZ3JvdW5kQ29sb3JDaGFuZ2VkKCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBzZXRMYXllclRyZWVTdGF0ZUlzRnJvemVuKGJvb2wpIG92ZXJyaWRlOwogICAgIGJvb2wg
bGF5ZXJUcmVlU3RhdGVJc0Zyb3plbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fbGF5ZXJU
cmVlU3RhdGVJc0Zyb3plbjsgfQogICAgIExheWVyVHJlZUhvc3QqIGxheWVyVHJlZUhvc3QoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBtX2xheWVyVHJlZUhvc3QuZ2V0KCk7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcApp
bmRleCAxNTIwZjUyMGRhYy4uYWVmNGYwMTVkNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTIyOCw2ICsyMjgs
MTEgQEAgdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnBhZ2VCYWNrZ3JvdW5kVHJhbnNw
YXJlbmN5Q2hhbmdlZCgpCiB7CiB9CiAKK3ZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Ojpw
YWdlQmFja2dyb3VuZENvbG9yQ2hhbmdlZCgpCit7CisKK30KKwogR3JhcGhpY3NMYXllckZhY3Rv
cnkqIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Z3JhcGhpY3NMYXllckZhY3RvcnkoKQogewog
ICAgIHJldHVybiAmbV9jb29yZGluYXRvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCmluZGV4IDBhOGJlYzhhMzk4Li4yN2NhZTAw
NGU0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRp
bmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdC5oCkBAIC01Niw2ICs1Niw3IEBAIHByb3RlY3RlZDoKIAogICAgIHZvaWQgZGV2
aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBwYWdlQmFj
a2dyb3VuZFRyYW5zcGFyZW5jeUNoYW5nZWQoKSBvdmVycmlkZTsKKyAgICB2b2lkIHBhZ2VCYWNr
Z3JvdW5kQ29sb3JDaGFuZ2VkKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHNldFZpc2libGVDb250
ZW50c1JlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jik7CiAgICAgdm9pZCByZW5kZXJOZXh0
RnJhbWUoYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
VGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwCmluZGV4IDgyM2I3ZmEyYWM3Li5m
OGUyYjVkMGVjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Q29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTE5NSw2ICsxOTUsMTcg
QEAgdm9pZCBUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6cGFnZUJhY2tncm91bmRU
cmFuc3BhcmVuY3lDaGFuZ2VkKCkKICAgICBtX2NvbXBvc2l0b3ItPnNldERyYXdzQmFja2dyb3Vu
ZChtX3dlYlBhZ2UuZHJhd3NCYWNrZ3JvdW5kKCkpOwogfQogCit2b2lkIFRocmVhZGVkQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0OjpwYWdlQmFja2dyb3VuZENvbG9yQ2hhbmdlZCgpCit7CisgICAg
aWYgKG1faXNEaXNjYXJkYWJsZSkgeworICAgICAgICBtX2Rpc2NhcmRhYmxlU3luY0FjdGlvbnMu
YWRkKERpc2NhcmRhYmxlU3luY0FjdGlvbnM6OlVwZGF0ZUJhY2tncm91bmQpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpwYWdlQmFja2dy
b3VuZENvbG9yQ2hhbmdlZCgpOworICAgIG1fY29tcG9zaXRvci0+c2V0QmFja2dyb3VuZENvbG9y
KG1fd2ViUGFnZS5iYWNrZ3JvdW5kQ29sb3IoKSk7Cit9CisKIHZvaWQgVGhyZWFkZWRDb29yZGlu
YXRlZExheWVyVHJlZUhvc3Q6OnNpemVEaWRDaGFuZ2UoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsK
ICAgICBpZiAobV9pc0Rpc2NhcmRhYmxlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKaW5kZXggYjc4
NDY4MTY3OWIuLjg0YjNmODgzMjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0
ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCkBAIC01OCw2ICs1
OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzaXplRGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6Oklu
dFNpemUmKSBvdmVycmlkZTsKICAgICB2b2lkIGRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdl
ZCgpIG92ZXJyaWRlOwogICAgIHZvaWQgcGFnZUJhY2tncm91bmRUcmFuc3BhcmVuY3lDaGFuZ2Vk
KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBwYWdlQmFja2dyb3VuZENvbG9yQ2hhbmdlZCgpIG92ZXJy
aWRlOwogCiAgICAgdm9pZCBjb250ZW50c1NpemVDaGFuZ2VkKGNvbnN0IFdlYkNvcmU6OkludFNp
emUmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENoYW5nZVZpZXdwb3J0QXR0cmlidXRlcyhXZWJD
b3JlOjpWaWV3cG9ydEF0dHJpYnV0ZXMmJikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAppbmRleCBmOWM4OTE3NGE0YS4uMWIyYmNi
ZWFiODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdp
bmdBcmVhLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0Fy
ZWEuaApAQCAtODAsNiArODAsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBGSVhNRTogVGhlc2Ugc2hv
dWxkIGJlIHB1cmUgdmlydHVhbC4KICAgICB2aXJ0dWFsIHZvaWQgcGFnZUJhY2tncm91bmRUcmFu
c3BhcmVuY3lDaGFuZ2VkKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHBhZ2VCYWNrZ3JvdW5kQ29s
b3JDaGFuZ2VkKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGZvcmNlUmVwYWludCgpIHsgfQogICAg
IHZpcnR1YWwgYm9vbCBmb3JjZVJlcGFpbnRBc3luYyhDYWxsYmFja0lEKSB7IHJldHVybiBmYWxz
ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRMYXllclRyZWVTdGF0ZUlzRnJvemVuKGJvb2wpIHsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvTGF5ZXJUcmVl
SG9zdC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvTGF5ZXJUcmVlSG9zdC5o
CmluZGV4IDg1ZGQ0NThlMDE4Li4xNjY4YmJiOWQ2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJlZUhvc3QuaApAQCAtNzUsNiArNzUsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBib29sIGZvcmNlUmVwYWludEFzeW5jKENhbGxiYWNrSUQpIHsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIHNpemVEaWRDaGFuZ2UoY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYgbmV3U2l6ZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwYWdlQmFja2dyb3Vu
ZFRyYW5zcGFyZW5jeUNoYW5nZWQoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBhZ2VCYWNrZ3Jv
dW5kQ29sb3JDaGFuZ2VkKCkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHBhdXNlUmVuZGVyaW5n
KCk7CiAgICAgdmlydHVhbCB2b2lkIHJlc3VtZVJlbmRlcmluZygpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBmNmQ0YmVhMWQzNS4uNTUzODdi
MGI3OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CkBAIC0yODg0LDYgKzI4ODQsMjAgQEAgdm9pZCBXZWJQYWdlOjpzZXREcmF3c0JhY2tncm91bmQo
Ym9vbCBkcmF3c0JhY2tncm91bmQpCiAgICAgbV9kcmF3aW5nQXJlYS0+c2V0TmVlZHNEaXNwbGF5
KCk7CiB9CiAKK3ZvaWQgV2ViUGFnZTo6c2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IFdlYkNvcmU6
OkNvbG9yJiBiYWNrZ3JvdW5kQ29sb3IpCit7CisgICAgaWYgKG1fYmFja2dyb3VuZENvbG9yID09
IGJhY2tncm91bmRDb2xvcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9iYWNrZ3JvdW5kQ29s
b3IgPSBiYWNrZ3JvdW5kQ29sb3I7CisKKyAgICBpZiAoRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBt
YWluRnJhbWVWaWV3KCkpCisgICAgICAgIGZyYW1lVmlldy0+c2V0QmFzZUJhY2tncm91bmRDb2xv
cihiYWNrZ3JvdW5kQ29sb3IpOworCisgICAgbV9kcmF3aW5nQXJlYS0+cGFnZUJhY2tncm91bmRD
b2xvckNoYW5nZWQoKTsKKyAgICBtX2RyYXdpbmdBcmVhLT5zZXROZWVkc0Rpc3BsYXkoKTsKK30K
KwogI2lmIFBMQVRGT1JNKENPQ09BKQogdm9pZCBXZWJQYWdlOjpzZXRUb3BDb250ZW50SW5zZXRG
ZW5jZWQoZmxvYXQgY29udGVudEluc2V0LCBJUEM6OkF0dGFjaG1lbnQgZmVuY2VQb3J0KQogewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDZlNWM5MmU1
ODQ4Li4zN2RjZjNhYzk2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaApAQCAtMTEzNiw2ICsxMTM2LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBkaWRSZWNl
aXZlV2ViUGFnZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CiAKKyAg
ICBjb25zdCBXZWJDb3JlOjpDb2xvciYgYmFja2dyb3VuZENvbG9yKCkgY29uc3QgeyByZXR1cm4g
bV9iYWNrZ3JvdW5kQ29sb3I7IH0KKwogcHJpdmF0ZToKICAgICBXZWJQYWdlKHVpbnQ2NF90IHBh
Z2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmKTsKIApAQCAtMTI2Myw2ICsxMjY1LDcg
QEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgdm9pZCBzZXREcmF3c0JhY2tncm91bmQoYm9vbCk7
CisgICAgdm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImKTsKIAog
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgc2V0VG9wQ29udGVudEluc2V0RmVuY2VkKGZs
b2F0LCBJUEM6OkF0dGFjaG1lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggNTRhYmJhZjg5MzQuLjVmYWZmZjNk
NDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UubWVzc2FnZXMuaW4KQEAgLTI2LDYgKzI2LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdh
Y3lSZWNlaXZlciB7CiAgICAgU2V0TGF5ZXJIb3N0aW5nTW9kZShlbnVtOnVpbnQ4X3QgV2ViS2l0
OjpMYXllckhvc3RpbmdNb2RlIGxheWVySG9zdGluZ01vZGUpCiAKICAgICBTZXREcmF3c0JhY2tn
cm91bmQoYm9vbCBkcmF3c0JhY2tncm91bmQpCisgICAgU2V0QmFja2dyb3VuZENvbG9yKFdlYkNv
cmU6OkNvbG9yIGNvbG9yKQogCiAgICAgQWRkQ29uc29sZU1lc3NhZ2UodWludDY0X3QgZnJhbWVJ
RCwgZW51bTp1aW50OF90IEpTQzo6TWVzc2FnZVNvdXJjZSBtZXNzYWdlU291cmNlLCBlbnVtOnVp
bnQ4X3QgSlNDOjpNZXNzYWdlTGV2ZWwgbWVzc2FnZUxldmVsLCBTdHJpbmcgbWVzc2FnZSwgdWlu
dDY0X3QgcmVxdWVzdElEKQogICAgIFNlbmRDU1BWaW9sYXRpb25SZXBvcnQodWludDY0X3QgZnJh
bWVJRCwgVVJMIHJlcG9ydFVSTCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSByZXBvcnREYXRhKQpk
aWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvd3BlL21haW4uY3BwIGIvVG9vbHMvTWluaUJy
b3dzZXIvd3BlL21haW4uY3BwCmluZGV4IGUwYzI5YjIxMjk5Li4xY2UxMjc4ZTM1ZCAxMDA2NDQK
LS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvd3BlL21haW4uY3BwCisrKyBiL1Rvb2xzL01pbmlCcm93
c2VyL3dwZS9tYWluLmNwcApAQCAtNDIsNiArNDIsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gaWdub3Jl
VExTRXJyb3JzOwogc3RhdGljIGNvbnN0IGNoYXIqIGNvb2tpZXNGaWxlOwogc3RhdGljIGNvbnN0
IGNoYXIqIGNvb2tpZXNQb2xpY3k7CiBzdGF0aWMgY29uc3QgY2hhciogcHJveHk7Citjb25zdCBj
aGFyKiBiZ0NvbG9yOwogCiBzdGF0aWMgY29uc3QgR09wdGlvbkVudHJ5IGNvbW1hbmRMaW5lT3B0
aW9uc1tdID0KIHsKQEAgLTUzLDYgKzU0LDcgQEAgc3RhdGljIGNvbnN0IEdPcHRpb25FbnRyeSBj
b21tYW5kTGluZU9wdGlvbnNbXSA9CiAgICAgeyAicHJveHkiLCAwLCAwLCBHX09QVElPTl9BUkdf
U1RSSU5HLCAmcHJveHksICJTZXQgcHJveHkiLCAiUFJPWFkiIH0sCiAgICAgeyAiaWdub3JlLWhv
c3QiLCAwLCAwLCBHX09QVElPTl9BUkdfU1RSSU5HX0FSUkFZLCAmaWdub3JlSG9zdHMsICJTZXQg
cHJveHkgaWdub3JlIGhvc3RzIiwgIkhPU1RTIiB9LAogICAgIHsgImlnbm9yZS10bHMtZXJyb3Jz
IiwgMCwgMCwgR19PUFRJT05fQVJHX05PTkUsICZpZ25vcmVUTFNFcnJvcnMsICJJZ25vcmUgVExT
IGVycm9ycyIsIG51bGxwdHIgfSwKKyAgICB7ICJiZy1jb2xvciIsIDAsIDAsIEdfT1BUSU9OX0FS
R19TVFJJTkcsICZiZ0NvbG9yLCAiV2luZG93IGJhY2tncm91bmQgY29sb3IgKHdoaXRlIGJ5IGRl
ZmF1bHQpIiwgIndoaXRlIiB9LAogICAgIHsgR19PUFRJT05fUkVNQUlOSU5HLCAwLCAwLCBHX09Q
VElPTl9BUkdfRklMRU5BTUVfQVJSQVksICZ1cmlBcmd1bWVudHMsIG51bGxwdHIsICJbVVJMXSIg
fSwKICAgICB7IG51bGxwdHIsIDAsIDAsIEdfT1BUSU9OX0FSR19OT05FLCBudWxscHRyLCBudWxs
cHRyLCBudWxscHRyIH0KIH07CkBAIC0xOTQsNiArMTk2LDEwIEBAIGludCBtYWluKGludCBhcmdj
LCBjaGFyICphcmd2W10pCiAgICAgaWYgKGlnbm9yZVRMU0Vycm9ycykKICAgICAgICAgd2Via2l0
X3dlYl9jb250ZXh0X3NldF90bHNfZXJyb3JzX3BvbGljeSh3ZWJDb250ZXh0LCBXRUJLSVRfVExT
X0VSUk9SU19QT0xJQ1lfSUdOT1JFKTsKIAorICAgIGF1dG8qIGJhY2tncm91bmRDb2xvciA9IHdl
YmtpdF9jb2xvcl9uZXdfZnJvbV9zdHJpbmcoYmdDb2xvcik7CisgICAgd2Via2l0X3dlYl92aWV3
X3NldF9iYWNrZ3JvdW5kX2NvbG9yKHdlYlZpZXcsIGJhY2tncm91bmRDb2xvcik7CisgICAgZ19i
b3hlZF9mcmVlKFdFQktJVF9UWVBFX0NPTE9SLCBiYWNrZ3JvdW5kQ29sb3IpOworCiAgICAgaWYg
KHVyaUFyZ3VtZW50cykKICAgICAgICAgd2Via2l0X3dlYl92aWV3X2xvYWRfdXJpKHdlYlZpZXcs
IHVyaUFyZ3VtZW50c1swXSk7CiAgICAgZWxzZSBpZiAoIWF1dG9tYXRpb25Nb2RlKQpAQCAtMjAy
LDcgKzIwOCw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAgICAgZ19tYWlu
X2xvb3BfcnVuKGxvb3ApOwogCiAgICAgZ19vYmplY3RfdW5yZWYod2ViVmlldyk7Ci0gICAgaWYg
KHByaXZhdGVNb2RlKQorICAgIGlmIChwcml2YXRlTW9kZSB8fCBhdXRvbWF0aW9uTW9kZSkKICAg
ICAgICAgZ19vYmplY3RfdW5yZWYod2ViQ29udGV4dCk7CiAgICAgZ19tYWluX2xvb3BfdW5yZWYo
bG9vcCk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xp
Yi9UZXN0V2ViS2l0V2ViVmlldy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dEdMaWIvVGVzdFdlYktpdFdlYlZpZXcuY3BwCmluZGV4IGQ3NTczNDFiMGZiLi5hNTMxNzgxMWE0
YyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RX
ZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdM
aWIvVGVzdFdlYktpdFdlYlZpZXcuY3BwCkBAIC0xMTMzLDkgKzExMzMsOSBAQCBzdGF0aWMgdm9p
ZCB0ZXN0V2ViVmlld0lzUGxheWluZ0F1ZGlvKElzUGxheWluZ0F1ZGlvV2ViVmlld1Rlc3QqIHRl
c3QsIGdjb25zdHBvaQogICAgIGdfYXNzZXJ0KCF3ZWJraXRfd2ViX3ZpZXdfaXNfcGxheWluZ19h
dWRpbyh0ZXN0LT5tX3dlYlZpZXcpKTsKIH0KIAotI2lmIFBMQVRGT1JNKEdUSykKIHN0YXRpYyB2
b2lkIHRlc3RXZWJWaWV3QmFja2dyb3VuZENvbG9yKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rw
b2ludGVyKQogeworI2lmIFBMQVRGT1JNKEdUSykKICAgICAvLyBXaGl0ZSBpcyB0aGUgZGVmYXVs
dCBiYWNrZ3JvdW5kLgogICAgIEdka1JHQkEgcmdiYTsKICAgICB3ZWJraXRfd2ViX3ZpZXdfZ2V0
X2JhY2tncm91bmRfY29sb3IodGVzdC0+bV93ZWJWaWV3LCAmcmdiYSk7CkBAIC0xMTU0LDExICsx
MTU0LDQ2IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3QmFja2dyb3VuZENvbG9yKFdlYlZpZXdU
ZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIGdfYXNzZXJ0X2NtcGZsb2F0KHJnYmEuZ3Jl
ZW4sID09LCAwKTsKICAgICBnX2Fzc2VydF9jbXBmbG9hdChyZ2JhLmJsdWUsID09LCAwKTsKICAg
ICBnX2Fzc2VydF9jbXBmbG9hdChyZ2JhLmFscGhhLCA9PSwgMC41KTsKKyNlbmRpZgorI2lmIFBM
QVRGT1JNKFdQRSkKKyAgICAvLyBXaGl0ZSBpcyB0aGUgZGVmYXVsdCBiYWNrZ3JvdW5kLgorICAg
IFdlYktpdENvbG9yKiBjb2xvciA9IHdlYmtpdF93ZWJfdmlld19nZXRfYmFja2dyb3VuZF9jb2xv
cih0ZXN0LT5tX3dlYlZpZXcpOworICAgIGdfYXNzZXJ0X2NtcGludCh3ZWJraXRfY29sb3JfZ2V0
X3JlZF9jaGFubmVsKGNvbG9yKSwgPT0sIDI1NSk7CisgICAgZ19hc3NlcnRfY21waW50KHdlYmtp
dF9jb2xvcl9nZXRfZ3JlZW5fY2hhbm5lbChjb2xvciksID09LCAyNTUpOworICAgIGdfYXNzZXJ0
X2NtcGludCh3ZWJraXRfY29sb3JfZ2V0X2JsdWVfY2hhbm5lbChjb2xvciksID09LCAyNTUpOwor
ICAgIGdfYXNzZXJ0X2NtcGludCh3ZWJraXRfY29sb3JfZ2V0X2FscGhhX2NoYW5uZWwoY29sb3Ip
LCA9PSwgMjU1KTsKKyAgICBnX2JveGVkX2ZyZWUoV0VCS0lUX1RZUEVfQ09MT1IsIGNvbG9yKTsK
KworICAgIC8vIFNldCB0byBncmVlbi4KKyAgICBXZWJLaXRDb2xvciogY29sb3IyID0gd2Via2l0
X2NvbG9yX25ld19mcm9tX3N0cmluZygiZ3JlZW4iKTsKKyAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0
X2JhY2tncm91bmRfY29sb3IodGVzdC0+bV93ZWJWaWV3LCBjb2xvcjIpOworICAgIGdfYm94ZWRf
ZnJlZShXRUJLSVRfVFlQRV9DT0xPUiwgY29sb3IyKTsKKworICAgIGNvbG9yID0gd2Via2l0X3dl
Yl92aWV3X2dldF9iYWNrZ3JvdW5kX2NvbG9yKHRlc3QtPm1fd2ViVmlldyk7CisgICAgZ19hc3Nl
cnRfY21waW50KHdlYmtpdF9jb2xvcl9nZXRfcmVkX2NoYW5uZWwoY29sb3IpLCA9PSwgMCk7Cisg
ICAgZ19hc3NlcnRfY21waW50KHdlYmtpdF9jb2xvcl9nZXRfZ3JlZW5fY2hhbm5lbChjb2xvciks
ID09LCAxMjgpOworICAgIGdfYXNzZXJ0X2NtcGludCh3ZWJraXRfY29sb3JfZ2V0X2JsdWVfY2hh
bm5lbChjb2xvciksID09LCAwKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQod2Via2l0X2NvbG9yX2dl
dF9hbHBoYV9jaGFubmVsKGNvbG9yKSwgPT0sIDI1NSk7CisgICAgZ19ib3hlZF9mcmVlKFdFQktJ
VF9UWVBFX0NPTE9SLCBjb2xvcik7CisKKyAgICAvLyBGdWxseSB0cmFuc3BhcmVudAorICAgIGNv
bG9yMiA9IHdlYmtpdF9jb2xvcl9uZXdfZnJvbV9zdHJpbmcoInRyYW5zcGFyZW50Iik7CisgICAg
d2Via2l0X3dlYl92aWV3X3NldF9iYWNrZ3JvdW5kX2NvbG9yKHRlc3QtPm1fd2ViVmlldywgY29s
b3IyKTsKKyAgICBnX2JveGVkX2ZyZWUoV0VCS0lUX1RZUEVfQ09MT1IsIGNvbG9yMik7CisKKyAg
ICBjb2xvciA9IHdlYmtpdF93ZWJfdmlld19nZXRfYmFja2dyb3VuZF9jb2xvcih0ZXN0LT5tX3dl
YlZpZXcpOworICAgIGdfYXNzZXJ0X2NtcGludCh3ZWJraXRfY29sb3JfZ2V0X3JlZF9jaGFubmVs
KGNvbG9yKSwgPT0sIDApOworICAgIGdfYXNzZXJ0X2NtcGludCh3ZWJraXRfY29sb3JfZ2V0X2dy
ZWVuX2NoYW5uZWwoY29sb3IpLCA9PSwgMCk7CisgICAgZ19hc3NlcnRfY21waW50KHdlYmtpdF9j
b2xvcl9nZXRfYmx1ZV9jaGFubmVsKGNvbG9yKSwgPT0sIDApOworICAgIGdfYXNzZXJ0X2NtcGlu
dCh3ZWJraXRfY29sb3JfZ2V0X2FscGhhX2NoYW5uZWwoY29sb3IpLCA9PSwgMCk7CisgICAgZ19i
b3hlZF9mcmVlKFdFQktJVF9UWVBFX0NPTE9SLCBjb2xvcik7CiAKKyNlbmRpZgogICAgIC8vIFRo
ZSBhY3R1YWwgcmVuZGVyaW5nIGNhbid0IGJlIHRlc3RlZCB1c2luZyB1bml0IHRlc3RzLCB1c2UK
ICAgICAvLyBNaW5pQnJvd3NlciAtLWJnLWNvbG9yPSI8Y29sb3ItdmFsdWU+IiBmb3IgbWFudWFs
bHkgdGVzdGluZyB0aGlzIEFQSS4KIH0KIAorI2lmIFBMQVRGT1JNKEdUSykKIHN0YXRpYyB2b2lk
IHRlc3RXZWJWaWV3UHJlZmVycmVkU2l6ZShXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRl
cikKIHsKICAgICB0ZXN0LT5sb2FkSHRtbCgiPGh0bWwgc3R5bGU9J3dpZHRoOiAzMjVweDsgaGVp
Z2h0OiA2MTVweCc+PC9odG1sPiIsIG51bGxwdHIpOwpAQCAtMTM2Myw4ICsxMzk4LDggQEAgdm9p
ZCBiZWZvcmVBbGwoKQogICAgIE5vdGlmaWNhdGlvbldlYlZpZXdUZXN0OjphZGQoIldlYktpdFdl
YlZpZXciLCAibm90aWZpY2F0aW9uLWluaXRpYWwtcGVybWlzc2lvbi1kaXNhbGxvd2VkIiwgdGVz
dFdlYlZpZXdOb3RpZmljYXRpb25Jbml0aWFsUGVybWlzc2lvbkRpc2FsbG93ZWQpOwogI2VuZGlm
CiAgICAgSXNQbGF5aW5nQXVkaW9XZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgImlz
LXBsYXlpbmctYXVkaW8iLCB0ZXN0V2ViVmlld0lzUGxheWluZ0F1ZGlvKTsKLSNpZiBQTEFURk9S
TShHVEspCiAgICAgV2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJiYWNrZ3JvdW5k
LWNvbG9yIiwgdGVzdFdlYlZpZXdCYWNrZ3JvdW5kQ29sb3IpOworI2lmIFBMQVRGT1JNKEdUSykK
ICAgICBXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgInByZWZlcnJlZC1zaXplIiwg
dGVzdFdlYlZpZXdQcmVmZXJyZWRTaXplKTsKICNlbmRpZgogICAgIFdlYlZpZXdUaXRsZVRlc3Q6
OmFkZCgiV2ViS2l0V2ViVmlldyIsICJ0aXRsZS1jaGFuZ2UiLCB0ZXN0V2ViVmlld1RpdGxlQ2hh
bmdlKTsKLS0gCjIuMjAuMQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>358597</attachid>
            <date>2019-01-08 08:53:49 -0800</date>
            <delta_ts>2019-01-10 08:53:58 -0800</delta_ts>
            <desc>WiP patch</desc>
            <filename>0001-WIP.patch</filename>
            <type>text/plain</type>
            <size>48676</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSAwMzdiMzRlMDQ0YzBjMjZmNmEyODcyNmVjZmM5NWQ5NDBjZjdlYTE2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBTdW4sIDYgSmFuIDIwMTkgMTg6MDY6NDAgKzAwMDAKU3ViamVjdDogW1BBVENIXSBX
SVAKCi0tLQogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAgICAgICAgICAgICAgICAgIHwg
ICA0ICstCiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmggICAgICAgICAgICAgICAgICAgfCAg
IDIgKy0KIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCAgICAgICAgICAgICB8ICAg
NSArLQogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaCAgICAgICAgICAgICAgIHwgICAy
ICstCiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtV1BFLmNtYWtlICAgICAgICAgICAgICAgfCAgIDEg
KwogLi4uL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAgICAgICAgICAgICAgIHwgIDE3ICst
CiAuLi4vQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmggICAgICAgICAgICAgICAgfCAgIDQgKy0K
IC4uLi90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcCB8ICAxNCArLQog
Li4uL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuaCAgIHwgICAzICstCiBT
b3VyY2UvV2ViS2l0L1NvdXJjZXNXUEUudHh0ICAgICAgICAgICAgICAgICAgfCAgIDEgKwogLi4u
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcCAgICAgIHwgIDY4IC0tLS0tLS0K
IC4uLi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3R3RrLmNwcCAgICB8ICA2OSArKysr
KysrCiAuLi4vV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdENvbG9yLmNwcCAgfCAxNzkg
KysrKysrKysrKysrKysrKysrCiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktp
dENvbG9yLmggfCAgNTYgKysrKysrCiAuLi4vVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0Q29sb3JQ
cml2YXRlLmggICAgfCAgMzcgKysrKwogLi4uL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJL
aXRXZWJWaWV3LmggIHwgICA3ICsKIC4uLi9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3
V1BFLmNwcCAgICB8ICA0NiArKysrKwogLi4uL0FQSS93cGUvZG9jcy93cGUtMC4xLXNlY3Rpb25z
LnR4dCAgICAgICAgIHwgIDE2ICsrCiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwICAgICAgfCAgMTIgKysKIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oICAgICAgICB8ICAgNiArLQogLi4uL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcCAgIHwgICAzICstCiAuLi4vV2ViUGFnZS9BY2NlbGVyYXRlZERyYXdpbmdBcmVhLmNw
cCAgICAgICAgfCAgIDggKwogLi4uL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3aW5nQXJlYS5oICAg
ICAgICAgIHwgICAxICsKIC4uLi9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwICAgICAgICAg
ICAgICB8ICAgNSArCiAuLi4vQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmggICAgICAgICAgICAg
ICAgfCAgIDEgKwogLi4uL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcCAgICAg
IHwgIDExICsrCiAuLi4vVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3QuaCAgICAgICAg
fCAgIDEgKwogLi4uL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaCAgIHwg
ICAxICsKIC4uLi9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJlZUhvc3QuaCB8ICAg
MSArCiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCAgfCAgMTQg
KysKIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCAgICB8ICAgMyAr
CiAuLi4vV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gICAgfCAgIDEgKwog
VG9vbHMvTWluaUJyb3dzZXIvd3BlL21haW4uY3BwICAgICAgICAgICAgICAgIHwgICA4ICstCiAu
Li4vVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0V2ViVmlldy5jcHAgICAgfCAgMzkgKysrLQog
MzQgZmlsZXMgY2hhbmdlZCwgNTUyIGluc2VydGlvbnMoKyksIDk0IGRlbGV0aW9ucygtKQogY3Jl
YXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0Q29s
b3IuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dw
ZS9XZWJLaXRDb2xvci5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL3dwZS9XZWJLaXRDb2xvclByaXZhdGUuaAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKaW5kZXgg
NzNiYWZkYjQ2NjAuLmI0ZTBhMzUwODk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcApAQCAtOTAyLDcg
KzkwMiw3IEBAIFJlZlB0cjxSYW5nZT4gRnJhbWU6OnJhbmdlRm9yUG9pbnQoY29uc3QgSW50UG9p
bnQmIGZyYW1lUG9pbnQpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXZvaWQgRnJhbWU6OmNy
ZWF0ZVZpZXcoY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplLCBib29sIHRyYW5zcGFyZW50LAor
dm9pZCBGcmFtZTo6Y3JlYXRlVmlldyhjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUsIGJvb2wg
dHJhbnNwYXJlbnQsIGNvbnN0IENvbG9yJiBiYWNrZ3JvdW5kQ29sb3IsCiAgICAgY29uc3QgSW50
U2l6ZSYgZml4ZWRMYXlvdXRTaXplLCBjb25zdCBJbnRSZWN0JiBmaXhlZFZpc2libGVDb250ZW50
UmVjdCwKICAgICBib29sIHVzZUZpeGVkTGF5b3V0LCBTY3JvbGxiYXJNb2RlIGhvcml6b250YWxT
Y3JvbGxiYXJNb2RlLCBib29sIGhvcml6b250YWxMb2NrLAogICAgIFNjcm9sbGJhck1vZGUgdmVy
dGljYWxTY3JvbGxiYXJNb2RlLCBib29sIHZlcnRpY2FsTG9jaykKQEAgLTkzMyw3ICs5MzMsNyBA
QCB2b2lkIEZyYW1lOjpjcmVhdGVWaWV3KGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSwgYm9v
bCB0cmFuc3BhcmVudCwKIAogICAgIHNldFZpZXcoZnJhbWVWaWV3LmNvcHlSZWYoKSk7CiAKLSAg
ICBmcmFtZVZpZXctPnVwZGF0ZUJhY2tncm91bmRSZWN1cnNpdmVseSh0cmFuc3BhcmVudCk7Cisg
ICAgZnJhbWVWaWV3LT51cGRhdGVCYWNrZ3JvdW5kUmVjdXJzaXZlbHkodHJhbnNwYXJlbnQsIGJh
Y2tncm91bmRDb2xvcik7CiAKICAgICBpZiAoaXNNYWluRnJhbWUpCiAgICAgICAgIGZyYW1lVmll
dy0+c2V0UGFyZW50VmlzaWJsZSh0cnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAppbmRleCA5ZmFmMjQzN2Y1
Ny4uNjNjYjEyYTcxZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKQEAgLTEyOCw3ICsxMjgsNyBAQCBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbml0V2l0aFNpbXBsZUhUTUxEb2N1bWVudChj
b25zdCBTdHJpbmcmIHN0eWxlLCBjb25zdCBVUkwmKTsKICNlbmRpZgogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0VmlldyhSZWZQdHI8RnJhbWVWaWV3PiYmKTsKLSAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGNyZWF0ZVZpZXcoY29uc3QgSW50U2l6ZSYsIGJvb2wgdHJhbnNwYXJlbnQsCisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBjcmVhdGVWaWV3KGNvbnN0IEludFNpemUmLCBib29sIHRyYW5z
cGFyZW50LCBjb25zdCBDb2xvciYgYmFja2dyb3VuZENvbG9yLAogICAgICAgICBjb25zdCBJbnRT
aXplJiBmaXhlZExheW91dFNpemUsIGNvbnN0IEludFJlY3QmIGZpeGVkVmlzaWJsZUNvbnRlbnRS
ZWN0LAogICAgICAgICBib29sIHVzZUZpeGVkTGF5b3V0ID0gZmFsc2UsIFNjcm9sbGJhck1vZGUg
PSBTY3JvbGxiYXJBdXRvLCBib29sIGhvcml6b250YWxMb2NrID0gZmFsc2UsCiAgICAgICAgIFNj
cm9sbGJhck1vZGUgPSBTY3JvbGxiYXJBdXRvLCBib29sIHZlcnRpY2FsTG9jayA9IGZhbHNlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCBkMjVhN2U2MWE3YS4uZmM3NjEwNDljNjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTMwMDAsMTIgKzMwMDAsMTMgQEAgdm9p
ZCBGcmFtZVZpZXc6OnNldEJhc2VCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImIGJhY2tncm91
bmRDb2xvcikKICAgICByZW5kZXJWaWV3KCktPmNvbXBvc2l0b3IoKS5yb290QmFja2dyb3VuZENv
bG9yT3JUcmFuc3BhcmVuY3lDaGFuZ2VkKCk7CiB9CiAKLXZvaWQgRnJhbWVWaWV3Ojp1cGRhdGVC
YWNrZ3JvdW5kUmVjdXJzaXZlbHkoYm9vbCB0cmFuc3BhcmVudCkKK3ZvaWQgRnJhbWVWaWV3Ojp1
cGRhdGVCYWNrZ3JvdW5kUmVjdXJzaXZlbHkoYm9vbCB0cmFuc3BhcmVudCwgY29uc3QgQ29sb3Im
IGRlZmF1bHRCYWNrZ3JvdW5kQ29sb3IpCiB7CiAjaWYgRU5BQkxFKERBUktfTU9ERV9DU1MpCisg
ICAgVU5VU0VEX1BBUkFNKGRlZmF1bHRCYWNrZ3JvdW5kQ29sb3IpOwogICAgIENvbG9yIGJhY2tn
cm91bmRDb2xvciA9IHRyYW5zcGFyZW50ID8gQ29sb3I6OnRyYW5zcGFyZW50IDogUmVuZGVyVGhl
bWU6OnNpbmdsZXRvbigpLnN5c3RlbUNvbG9yKENTU1ZhbHVlQXBwbGVTeXN0ZW1Db250cm9sQmFj
a2dyb3VuZCwgc3R5bGVDb2xvck9wdGlvbnMoKSk7CiAjZWxzZQotICAgIENvbG9yIGJhY2tncm91
bmRDb2xvciA9IHRyYW5zcGFyZW50ID8gQ29sb3I6OnRyYW5zcGFyZW50IDogQ29sb3I6OndoaXRl
OworICAgIENvbG9yIGJhY2tncm91bmRDb2xvciA9IHRyYW5zcGFyZW50ID8gQ29sb3I6OnRyYW5z
cGFyZW50IDogZGVmYXVsdEJhY2tncm91bmRDb2xvcjsKICNlbmRpZgogCiAgICAgZm9yIChhdXRv
KiBmcmFtZSA9IG1fZnJhbWUucHRyKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJh
dmVyc2VOZXh0KG1fZnJhbWUucHRyKCkpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAppbmRleCAy
OTc2YjU2N2RiZi4uODc2ZWYzY2EzZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaApAQCAtMTkw
LDcgKzE5MCw3IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIENvbG9yIGJhc2VCYWNr
Z3JvdW5kQ29sb3IoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEJhc2VCYWNr
Z3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0
ZUJhY2tncm91bmRSZWN1cnNpdmVseShib29sKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVw
ZGF0ZUJhY2tncm91bmRSZWN1cnNpdmVseShib29sLCBjb25zdCBDb2xvciYgYmFja2dyb3VuZENv
bG9yID0gQ29sb3I6OndoaXRlKTsKIAogICAgIGVudW0gRXh0ZW5kZWRCYWNrZ3JvdW5kTW9kZUZs
YWdzIHsKICAgICAgICAgRXh0ZW5kZWRCYWNrZ3JvdW5kTW9kZU5vbmUgICAgICAgICAgPSAwLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdQRS5jbWFrZSBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm1XUEUuY21ha2UKaW5kZXggMWY2NzVjNDRlNGMuLjNjZGVmZDJiZWQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV1BFLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm1XUEUuY21ha2UKQEAgLTk3LDYgKzk3LDcgQEAgc2V0KFdQRV9BUElfSU5TVEFM
TEVEX0hFQURFUlMKICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdEJh
Y2tGb3J3YXJkTGlzdC5oCiAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL3dwZS9XZWJL
aXRCYWNrRm9yd2FyZExpc3RJdGVtLmgKICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkv
d3BlL1dlYktpdENyZWRlbnRpYWwuaAorICAgICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS93
cGUvV2ViS2l0Q29sb3IuaAogICAgICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS93cGUvV2Vi
S2l0Q29udGV4dE1lbnUuaAogICAgICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS93cGUvV2Vi
S2l0Q29udGV4dE1lbnVBY3Rpb25zLmgKICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkv
d3BlL1dlYktpdENvbnRleHRNZW51SXRlbS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3NTY2VuZS5jcHAKaW5kZXggMWIyZWQxYjAyNzUuLmI4YWRkNGE0MmViIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3NTY2VuZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCkBAIC02NSw3ICs2NSw3IEBAIHZvaWQgQ29v
cmRpbmF0ZWRHcmFwaGljc1NjZW5lOjphcHBseVN0YXRlQ2hhbmdlcyhjb25zdCBWZWN0b3I8Q29v
cmRpbmF0ZWRHcmFwaGljCiAgICAgICAgIGNvbW1pdFNjZW5lU3RhdGUoc3RhdGUubmljb3NpYSk7
CiB9CiAKLXZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpwYWludFRvQ3VycmVudEdMQ29u
dGV4dChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4LCBmbG9hdCBvcGFjaXR5LCBj
b25zdCBGbG9hdFJlY3QmIGNsaXBSZWN0LCBjb25zdCBDb2xvciYgYmFja2dyb3VuZENvbG9yLCBi
b29sIGRyYXdzQmFja2dyb3VuZCwgVGV4dHVyZU1hcHBlcjo6UGFpbnRGbGFncyBQYWludEZsYWdz
KQordm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnBhaW50VG9DdXJyZW50R0xDb250ZXh0
KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgsIGNvbnN0IEZsb2F0UmVjdCYgY2xp
cFJlY3QsIGNvbnN0IENvbG9yJiBiYWNrZ3JvdW5kQ29sb3IsIGJvb2wgZHJhd3NCYWNrZ3JvdW5k
LCBUZXh0dXJlTWFwcGVyOjpQYWludEZsYWdzIFBhaW50RmxhZ3MpCiB7CiAgICAgdXBkYXRlU2Nl
bmVTdGF0ZSgpOwogCkBAIC03OCwxOCArNzgsMTUgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNz
U2NlbmU6OnBhaW50VG9DdXJyZW50R0xDb250ZXh0KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cmkK
ICAgICBtX3RleHR1cmVNYXBwZXItPmJlZ2luUGFpbnRpbmcoUGFpbnRGbGFncyk7CiAgICAgbV90
ZXh0dXJlTWFwcGVyLT5iZWdpbkNsaXAoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgY2xpcFJlY3Qp
OwogCi0gICAgaWYgKGRyYXdzQmFja2dyb3VuZCkgewotICAgICAgICBSR0JBMzIgcmdiYSA9IG1h
a2VSR0JBMzJGcm9tRmxvYXRzKGJhY2tncm91bmRDb2xvci5yZWQoKSwKLSAgICAgICAgICAgIGJh
Y2tncm91bmRDb2xvci5ncmVlbigpLCBiYWNrZ3JvdW5kQ29sb3IuYmx1ZSgpLAotICAgICAgICAg
ICAgYmFja2dyb3VuZENvbG9yLmFscGhhKCkgKiBvcGFjaXR5KTsKLSAgICAgICAgbV90ZXh0dXJl
TWFwcGVyLT5kcmF3U29saWRDb2xvcihjbGlwUmVjdCwgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwg
Q29sb3IocmdiYSkpOwotICAgIH0gZWxzZQotICAgICAgICBtX3RleHR1cmVNYXBwZXItPmNsZWFy
Q29sb3IobV92aWV3QmFja2dyb3VuZENvbG9yKTsKKyAgICBhdXRvJiBjb2xvciA9IGRyYXdzQmFj
a2dyb3VuZCA/IGJhY2tncm91bmRDb2xvciA6IG1fdmlld0JhY2tncm91bmRDb2xvcjsKKyAgICBt
X3RleHR1cmVNYXBwZXItPmNsZWFyQ29sb3IoY29sb3IpOwogCi0gICAgaWYgKGN1cnJlbnRSb290
TGF5ZXItPm9wYWNpdHkoKSAhPSBvcGFjaXR5IHx8IGN1cnJlbnRSb290TGF5ZXItPnRyYW5zZm9y
bSgpICE9IG1hdHJpeCkgeworICAgIGZsb2F0IG9wYWNpdHkgPSBkcmF3c0JhY2tncm91bmQgPyBj
b2xvci5hbHBoYUFzRmxvYXQoKSA6IDE7CisgICAgaWYgKCFkcmF3c0JhY2tncm91bmQgJiYgKGN1
cnJlbnRSb290TGF5ZXItPm9wYWNpdHkoKSAhPSBvcGFjaXR5KSkKICAgICAgICAgY3VycmVudFJv
b3RMYXllci0+c2V0T3BhY2l0eShvcGFjaXR5KTsKKworICAgIGlmIChjdXJyZW50Um9vdExheWVy
LT50cmFuc2Zvcm0oKSAhPSBtYXRyaXgpCiAgICAgICAgIGN1cnJlbnRSb290TGF5ZXItPnNldFRy
YW5zZm9ybShtYXRyaXgpOwotICAgIH0KIAogICAgIGN1cnJlbnRSb290TGF5ZXItPnBhaW50KCk7
CiAgICAgbV9mcHNDb3VudGVyLnVwZGF0ZUZQU0FuZERpc3BsYXkoKm1fdGV4dHVyZU1hcHBlciwg
Y2xpcFJlY3QubG9jYXRpb24oKSwgbWF0cml4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmggYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3NTY2VuZS5oCmluZGV4IGQ0YmI1ODI2OGZlLi5kNjhmNGY5OTAyYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNz
U2NlbmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nv
b3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5oCkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIH5Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUoKTsKIAogICAgIHZvaWQgYXBwbHlTdGF0
ZUNoYW5nZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZT4m
KTsKLSAgICB2b2lkIHBhaW50VG9DdXJyZW50R0xDb250ZXh0KGNvbnN0IFdlYkNvcmU6OlRyYW5z
Zm9ybWF0aW9uTWF0cml4JiwgZmxvYXQsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0
IFdlYkNvcmU6OkNvbG9yJiBiYWNrZ3JvdW5kQ29sb3IsIGJvb2wgZHJhd3NCYWNrZ3JvdW5kLCBX
ZWJDb3JlOjpUZXh0dXJlTWFwcGVyOjpQYWludEZsYWdzID0gMCk7CisgICAgdm9pZCBwYWludFRv
Q3VycmVudEdMQ29udGV4dChjb25zdCBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNv
bnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBiYWNrZ3JvdW5k
Q29sb3IsIGJvb2wgZHJhd3NCYWNrZ3JvdW5kLCBXZWJDb3JlOjpUZXh0dXJlTWFwcGVyOjpQYWlu
dEZsYWdzID0gMCk7CiAgICAgdm9pZCBkZXRhY2goKTsKIAogICAgIC8vIFRoZSBwYWludGluZyB0
aHJlYWQgbXVzdCBsb2NrIHRoZSBtYWluIHRocmVhZCB0byB1c2UgYmVsb3cgdHdvIG1ldGhvZHMs
IGJlY2F1c2UgdHdvIG1ldGhvZHMgYWNjZXNzIG1lbWJlcnMgdGhhdCB0aGUgbWFpbiB0aHJlYWQg
bWFuYWdlcy4gU2VlIG1fY2xpZW50LgpAQCAtMTEzLDcgKzExMyw3IEBAIHByaXZhdGU6CiAgICAg
c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcj4gbV9yb290TGF5ZXI7
CiAKICAgICBOaWNvc2lhOjpQbGF0Zm9ybUxheWVyOjpMYXllcklEIG1fcm9vdExheWVySUQgeyAw
IH07Ci0gICAgV2ViQ29yZTo6Q29sb3IgbV92aWV3QmFja2dyb3VuZENvbG9yIHsgV2ViQ29yZTo6
Q29sb3I6OndoaXRlIH07CisgICAgV2ViQ29yZTo6Q29sb3IgbV92aWV3QmFja2dyb3VuZENvbG9y
IHsgV2ViQ29yZTo6Q29sb3I6OnRyYW5zcGFyZW50IH07CiAKICAgICBXZWJDb3JlOjpUZXh0dXJl
TWFwcGVyRlBTQ291bnRlciBtX2Zwc0NvdW50ZXI7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFk
ZWRDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHAKaW5kZXggNzUyMmY4
NGVhOGYuLmRkYmVmNTZmNzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29y
ZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRj
b21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHAKQEAgLTE2Myw2ICsxNjMsMTMgQEAgdm9p
ZCBUaHJlYWRlZENvbXBvc2l0b3I6OnNldERyYXdzQmFja2dyb3VuZChib29sIGRyYXdzQmFja2dy
b3VuZCkKICAgICBtX2NvbXBvc2l0aW5nUnVuTG9vcC0+c2NoZWR1bGVVcGRhdGUoKTsKIH0KIAor
dm9pZCBUaHJlYWRlZENvbXBvc2l0b3I6OnNldEJhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciYg
YmFja2dyb3VuZENvbG9yKQoreworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fYXR0cmlidXRlcy5s
b2NrKTsKKyAgICBtX2F0dHJpYnV0ZXMuYmFja2dyb3VuZENvbG9yID0gYmFja2dyb3VuZENvbG9y
OworICAgIG1fY29tcG9zaXRpbmdSdW5Mb29wLT5zY2hlZHVsZVVwZGF0ZSgpOworfQorCiB2b2lk
IFRocmVhZGVkQ29tcG9zaXRvcjo6dXBkYXRlVmlld3BvcnQoKQogewogICAgIG1fY29tcG9zaXRp
bmdSdW5Mb29wLT5zY2hlZHVsZVVwZGF0ZSgpOwpAQCAtMTk2LDYgKzIwMyw4IEBAIHZvaWQgVGhy
ZWFkZWRDb21wb3NpdG9yOjpyZW5kZXJMYXllclRyZWUoKQogICAgIGZsb2F0IHNjYWxlRmFjdG9y
OwogICAgIGJvb2wgZHJhd3NCYWNrZ3JvdW5kOwogICAgIGJvb2wgbmVlZHNSZXNpemU7CisgICAg
V2ViQ29yZTo6Q29sb3IgYmFja2dyb3VuZENvbG9yOworCiAgICAgVmVjdG9yPFdlYkNvcmU6OkNv
b3JkaW5hdGVkR3JhcGhpY3NTdGF0ZT4gc3RhdGVzOwogCiAgICAgewpAQCAtMjA1LDYgKzIxNCw3
IEBAIHZvaWQgVGhyZWFkZWRDb21wb3NpdG9yOjpyZW5kZXJMYXllclRyZWUoKQogICAgICAgICBz
Y2FsZUZhY3RvciA9IG1fYXR0cmlidXRlcy5zY2FsZUZhY3RvcjsKICAgICAgICAgZHJhd3NCYWNr
Z3JvdW5kID0gbV9hdHRyaWJ1dGVzLmRyYXdzQmFja2dyb3VuZDsKICAgICAgICAgbmVlZHNSZXNp
emUgPSBtX2F0dHJpYnV0ZXMubmVlZHNSZXNpemU7CisgICAgICAgIGJhY2tncm91bmRDb2xvciA9
IG1fYXR0cmlidXRlcy5iYWNrZ3JvdW5kQ29sb3I7CiAKICAgICAgICAgc3RhdGVzID0gV1RGTW92
ZShtX2F0dHJpYnV0ZXMuc3RhdGVzKTsKIApAQCAtMjUzLDggKzI2Myw4IEBAIHZvaWQgVGhyZWFk
ZWRDb21wb3NpdG9yOjpyZW5kZXJMYXllclRyZWUoKQogICAgIH0KIAogICAgIG1fc2NlbmUtPmFw
cGx5U3RhdGVDaGFuZ2VzKHN0YXRlcyk7Ci0gICAgbV9zY2VuZS0+cGFpbnRUb0N1cnJlbnRHTENv
bnRleHQodmlld3BvcnRUcmFuc2Zvcm0sIDEsIEZsb2F0UmVjdCB7IEZsb2F0UG9pbnQgeyB9LCB2
aWV3cG9ydFNpemUgfSwKLSAgICAgICAgQ29sb3I6OnRyYW5zcGFyZW50LCAhZHJhd3NCYWNrZ3Jv
dW5kLCBtX3BhaW50RmxhZ3MpOworICAgIG1fc2NlbmUtPnBhaW50VG9DdXJyZW50R0xDb250ZXh0
KHZpZXdwb3J0VHJhbnNmb3JtLCBGbG9hdFJlY3QgeyBGbG9hdFBvaW50IHsgfSwgdmlld3BvcnRT
aXplIH0sCisgICAgICAgIGJhY2tncm91bmRDb2xvciwgZHJhd3NCYWNrZ3JvdW5kLCBtX3BhaW50
RmxhZ3MpOwogCiAgICAgbV9jb250ZXh0LT5zd2FwQnVmZmVycygpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRv
ci9UaHJlYWRlZENvbXBvc2l0b3IuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5oCmluZGV4IDZk
NzA1Mzg1MGRhLi5iYzlhYzYxNmUzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
Q29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9y
LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRl
ZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmgKQEAgLTcxLDYgKzcxLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0U2Nyb2xsUG9zaXRpb24oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBm
bG9hdCBzY2FsZSk7CiAgICAgdm9pZCBzZXRWaWV3cG9ydFNpemUoY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYsIGZsb2F0IHNjYWxlKTsKICAgICB2b2lkIHNldERyYXdzQmFja2dyb3VuZChib29sKTsK
KyAgICB2b2lkIHNldEJhY2tncm91bmRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYpOwogCiAg
ICAgdm9pZCB1cGRhdGVTY2VuZVN0YXRlKGNvbnN0IFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhp
Y3NTdGF0ZSYpOwogCkBAIC0xMTQsNyArMTE1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgZmxvYXQg
c2NhbGVGYWN0b3IgeyAxIH07CiAgICAgICAgIGJvb2wgZHJhd3NCYWNrZ3JvdW5kIHsgdHJ1ZSB9
OwogICAgICAgICBib29sIG5lZWRzUmVzaXplIHsgZmFsc2UgfTsKLQorICAgICAgICBXZWJDb3Jl
OjpDb2xvciBiYWNrZ3JvdW5kQ29sb3I7CiAgICAgICAgIFZlY3RvcjxXZWJDb3JlOjpDb29yZGlu
YXRlZEdyYXBoaWNzU3RhdGU+IHN0YXRlczsKIAogICAgICAgICBib29sIGNsaWVudFJlbmRlcnNO
ZXh0RnJhbWUgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzV1BF
LnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc1dQRS50eHQKaW5kZXggOGVlMmZlZjQyYTYuLjg3
NTgzYmFkMWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNXUEUudHh0CisrKyBi
L1NvdXJjZS9XZWJLaXQvU291cmNlc1dQRS50eHQKQEAgLTE2Nyw2ICsxNjcsNyBAQCBVSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0V2luZG93UHJvcGVydGllcy5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nl
c3MvQVBJL3dwZS9Db21wb3NpdGluZ01hbmFnZXJQcm94eS5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nl
c3MvQVBJL3dwZS9QYWdlQ2xpZW50SW1wbC5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL3dw
ZS9TY3JvbGxHZXN0dXJlQ29udHJvbGxlci5jcHAgQG5vLXVuaWZ5CitVSVByb2Nlc3MvQVBJL3dw
ZS9XZWJLaXRDb2xvci5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRTY3Jp
cHREaWFsb2dXUEUuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViVmll
d0JhY2tlbmQuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViVmlld1dQ
RS5jcHAgQG5vLXVuaWZ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRXZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdFdlYlZpZXcuY3BwCmluZGV4IDY3MjAxZDg5ZWFhLi43YThhMTBmNWMxYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAK
QEAgLTM5NjksNzQgKzM5NjksNiBAQCB2b2lkIHdlYmtpdFdlYlZpZXdXZWJQcm9jZXNzVGVybWlu
YXRlZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRXZWJQcm9jZXNzVAogICAgIGdfc2ln
bmFsX2VtaXQod2ViVmlldywgc2lnbmFsc1tXRUJfUFJPQ0VTU19URVJNSU5BVEVEXSwgMCwgcmVh
c29uKTsKIH0KIAotI2lmIFBMQVRGT1JNKEdUSykKLS8qKgotICogd2Via2l0X3dlYl92aWV3X3Nl
dF9iYWNrZ3JvdW5kX2NvbG9yOgotICogQHdlYl92aWV3OiBhICNXZWJLaXRXZWJWaWV3Ci0gKiBA
cmdiYTogYSAjR2RrUkdCQQotICoKLSAqIFNldHMgdGhlIGNvbG9yIHRoYXQgd2lsbCBiZSB1c2Vk
IHRvIGRyYXcgdGhlIEB3ZWJfdmlldyBiYWNrZ3JvdW5kIGJlZm9yZQotICogdGhlIGFjdHVhbCBj
b250ZW50cyBhcmUgcmVuZGVyZWQuIE5vdGUgdGhhdCBpZiB0aGUgd2ViIHBhZ2UgbG9hZGVkIGlu
IEB3ZWJfdmlldwotICogc3BlY2lmaWVzIGEgYmFja2dyb3VuZCBjb2xvciwgaXQgd2lsbCB0YWtl
IHByZWNlZGVuY2Ugb3ZlciB0aGUgQHJnYmEgY29sb3IuCi0gKiBCeSBkZWZhdWx0IHRoZSBAd2Vi
X3ZpZXcgYmFja2dyb3VuZCBjb2xvciBpcyBvcGFxdWUgd2hpdGUuCi0gKiBOb3RlIHRoYXQgdGhl
IHBhcmVudCB3aW5kb3cgbXVzdCBoYXZlIGEgUkdCQSB2aXN1YWwgYW5kCi0gKiAjR3RrV2lkZ2V0
OmFwcC1wYWludGFibGUgcHJvcGVydHkgc2V0IHRvICVUUlVFIGZvciBiYWNrZ3JvdW5kcyBjb2xv
cnMgdG8gd29yay4KLSAqCi0gKiA8aW5mb3JtYWxleGFtcGxlPjxwcm9ncmFtbGlzdGluZz4KLSAq
IHN0YXRpYyB2b2lkIGJyb3dzZXJfd2luZG93X3NldF9iYWNrZ3JvdW5kX2NvbG9yIChCcm93c2Vy
V2luZG93ICp3aW5kb3csCi0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR2RrUkdCQSAqcmdiYSkKLSAqIHsKLSAqICAgICBXZWJLaXRXZWJW
aWV3ICp3ZWJfdmlldzsKLSAqICAgICBHZGtTY3JlZW4gKnNjcmVlbiA9IGd0a193aW5kb3dfZ2V0
X3NjcmVlbiAoR1RLX1dJTkRPVyAod2luZG93KSk7Ci0gKiAgICAgR2RrVmlzdWFsICpyZ2JhX3Zp
c3VhbCA9IGdka19zY3JlZW5fZ2V0X3JnYmFfdmlzdWFsIChzY3JlZW4pOwotICoKLSAqICAgICBp
ZiAoIXJnYmFfdmlzdWFsKQotICogICAgICAgICAgcmV0dXJuOwotICoKLSAqICAgICBndGtfd2lk
Z2V0X3NldF92aXN1YWwgKEdUS19XSURHRVQgKHdpbmRvdyksIHJnYmFfdmlzdWFsKTsKLSAqICAg
ICBndGtfd2lkZ2V0X3NldF9hcHBfcGFpbnRhYmxlIChHVEtfV0lER0VUICh3aW5kb3cpLCBUUlVF
KTsKLSAqCi0gKiAgICAgd2ViX3ZpZXcgPSBicm93c2VyX3dpbmRvd19nZXRfd2ViX3ZpZXcgKHdp
bmRvdyk7Ci0gKiAgICAgd2Via2l0X3dlYl92aWV3X3NldF9iYWNrZ3JvdW5kX2NvbG9yICh3ZWJf
dmlldywgcmdiYSk7Ci0gKiB9Ci0gKiA8L3Byb2dyYW1saXN0aW5nPjwvaW5mb3JtYWxleGFtcGxl
PgotICoKLSAqIFNpbmNlOiAyLjgKLSAqLwotdm9pZCB3ZWJraXRfd2ViX3ZpZXdfc2V0X2JhY2tn
cm91bmRfY29sb3IoV2ViS2l0V2ViVmlldyogd2ViVmlldywgY29uc3QgR2RrUkdCQSogcmdiYSkK
LXsKLSAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSk7Ci0g
ICAgZ19yZXR1cm5faWZfZmFpbChyZ2JhKTsKLQotICAgIENvbG9yIGNvbG9yKCpyZ2JhKTsKLSAg
ICBhdXRvJiBwYWdlID0gZ2V0UGFnZSh3ZWJWaWV3KTsKLSAgICBpZiAocGFnZS5iYWNrZ3JvdW5k
Q29sb3IoKSA9PSBjb2xvcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgcGFnZS5zZXRCYWNrZ3Jv
dW5kQ29sb3IoY29sb3IpOwotICAgIHBhZ2Uuc2V0RHJhd3NCYWNrZ3JvdW5kKGNvbG9yID09IENv
bG9yOjp3aGl0ZSk7Ci19Ci0KLS8qKgotICogd2Via2l0X3dlYl92aWV3X2dldF9iYWNrZ3JvdW5k
X2NvbG9yOgotICogQHdlYl92aWV3OiBhICNXZWJLaXRXZWJWaWV3Ci0gKiBAcmdiYTogKG91dCk6
IGEgI0dka1JHQkEgdG8gZmlsbCBpbiB3aXRoIHRoZSBiYWNrZ3JvdW5kIGNvbG9yCi0gKgotICog
R2V0cyB0aGUgY29sb3IgdGhhdCBpcyB1c2VkIHRvIGRyYXcgdGhlIEB3ZWJfdmlldyBiYWNrZ3Jv
dW5kIGJlZm9yZQotICogdGhlIGFjdHVhbCBjb250ZW50cyBhcmUgcmVuZGVyZWQuCi0gKiBGb3Ig
bW9yZSBpbmZvcm1hdGlvbiBzZWUgYWxzbyB3ZWJraXRfd2ViX3ZpZXdfc2V0X2JhY2tncm91bmRf
Y29sb3IoKQotICoKLSAqIFNpbmNlOiAyLjgKLSAqLwotdm9pZCB3ZWJraXRfd2ViX3ZpZXdfZ2V0
X2JhY2tncm91bmRfY29sb3IoV2ViS2l0V2ViVmlldyogd2ViVmlldywgR2RrUkdCQSogcmdiYSkK
LXsKLSAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSk7Ci0g
ICAgZ19yZXR1cm5faWZfZmFpbChyZ2JhKTsKLQotICAgICpyZ2JhID0gZ2V0UGFnZSh3ZWJWaWV3
KS5iYWNrZ3JvdW5kQ29sb3IoKTsKLX0KLSNlbmRpZiAvLyBQTEFURk9STShHVEspCi0KIC8qCiAg
KiB3ZWJraXRfd2ViX3ZpZXdfaXNfZWRpdGFibGU6CiAgKiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdl
YlZpZXcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2ViVmlld0d0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YlZpZXdHdGsuY3BwCmluZGV4IGJjODIxNzk5MTI4Li5lZDU2OWU2MmRjMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3R3RrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdHdGsuY3BwCkBA
IC0yNCw2ICsyNCw3IEBACiAjaW5jbHVkZSAiV2ViS2l0U2NyaXB0RGlhbG9nSW1wbC5oIgogI2lu
Y2x1ZGUgIldlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYlZp
ZXdQcml2YXRlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Db2xvci5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvR3RrVXRpbGl0aWVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybURpc3BsYXkuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtU2NyZWVuLmg+CkBAIC0zNTksMyArMzYwLDcxIEBA
IEd0a1dpZGdldCogd2Via2l0X3dlYl92aWV3X25ld193aXRoX3VzZXJfY29udGVudF9tYW5hZ2Vy
KFdlYktpdFVzZXJDb250ZW50TWFuYWdlCiAKICAgICByZXR1cm4gR1RLX1dJREdFVChnX29iamVj
dF9uZXcoV0VCS0lUX1RZUEVfV0VCX1ZJRVcsICJ1c2VyLWNvbnRlbnQtbWFuYWdlciIsIHVzZXJD
b250ZW50TWFuYWdlciwgbnVsbHB0cikpOwogfQorCisvKioKKyAqIHdlYmtpdF93ZWJfdmlld19z
ZXRfYmFja2dyb3VuZF9jb2xvcjoKKyAqIEB3ZWJfdmlldzogYSAjV2ViS2l0V2ViVmlldworICog
QHJnYmE6IGEgI0dka1JHQkEKKyAqCisgKiBTZXRzIHRoZSBjb2xvciB0aGF0IHdpbGwgYmUgdXNl
ZCB0byBkcmF3IHRoZSBAd2ViX3ZpZXcgYmFja2dyb3VuZCBiZWZvcmUKKyAqIHRoZSBhY3R1YWwg
Y29udGVudHMgYXJlIHJlbmRlcmVkLiBOb3RlIHRoYXQgaWYgdGhlIHdlYiBwYWdlIGxvYWRlZCBp
biBAd2ViX3ZpZXcKKyAqIHNwZWNpZmllcyBhIGJhY2tncm91bmQgY29sb3IsIGl0IHdpbGwgdGFr
ZSBwcmVjZWRlbmNlIG92ZXIgdGhlIEByZ2JhIGNvbG9yLgorICogQnkgZGVmYXVsdCB0aGUgQHdl
Yl92aWV3IGJhY2tncm91bmQgY29sb3IgaXMgb3BhcXVlIHdoaXRlLgorICogTm90ZSB0aGF0IHRo
ZSBwYXJlbnQgd2luZG93IG11c3QgaGF2ZSBhIFJHQkEgdmlzdWFsIGFuZAorICogI0d0a1dpZGdl
dDphcHAtcGFpbnRhYmxlIHByb3BlcnR5IHNldCB0byAlVFJVRSBmb3IgYmFja2dyb3VuZHMgY29s
b3JzIHRvIHdvcmsuCisgKgorICogPGluZm9ybWFsZXhhbXBsZT48cHJvZ3JhbWxpc3Rpbmc+Cisg
KiBzdGF0aWMgdm9pZCBicm93c2VyX3dpbmRvd19zZXRfYmFja2dyb3VuZF9jb2xvciAoQnJvd3Nl
cldpbmRvdyAqd2luZG93LAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdka1JHQkEgKnJnYmEpCisgKiB7CisgKiAgICAgV2ViS2l0V2Vi
VmlldyAqd2ViX3ZpZXc7CisgKiAgICAgR2RrU2NyZWVuICpzY3JlZW4gPSBndGtfd2luZG93X2dl
dF9zY3JlZW4gKEdUS19XSU5ET1cgKHdpbmRvdykpOworICogICAgIEdka1Zpc3VhbCAqcmdiYV92
aXN1YWwgPSBnZGtfc2NyZWVuX2dldF9yZ2JhX3Zpc3VhbCAoc2NyZWVuKTsKKyAqCisgKiAgICAg
aWYgKCFyZ2JhX3Zpc3VhbCkKKyAqICAgICAgICAgIHJldHVybjsKKyAqCisgKiAgICAgZ3RrX3dp
ZGdldF9zZXRfdmlzdWFsIChHVEtfV0lER0VUICh3aW5kb3cpLCByZ2JhX3Zpc3VhbCk7CisgKiAg
ICAgZ3RrX3dpZGdldF9zZXRfYXBwX3BhaW50YWJsZSAoR1RLX1dJREdFVCAod2luZG93KSwgVFJV
RSk7CisgKgorICogICAgIHdlYl92aWV3ID0gYnJvd3Nlcl93aW5kb3dfZ2V0X3dlYl92aWV3ICh3
aW5kb3cpOworICogICAgIHdlYmtpdF93ZWJfdmlld19zZXRfYmFja2dyb3VuZF9jb2xvciAod2Vi
X3ZpZXcsIHJnYmEpOworICogfQorICogPC9wcm9ncmFtbGlzdGluZz48L2luZm9ybWFsZXhhbXBs
ZT4KKyAqCisgKiBTaW5jZTogMi44CisgKi8KK3ZvaWQgd2Via2l0X3dlYl92aWV3X3NldF9iYWNr
Z3JvdW5kX2NvbG9yKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IEdka1JHQkEqIHJnYmEp
Cit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldykpOwor
ICAgIGdfcmV0dXJuX2lmX2ZhaWwocmdiYSk7CisKKyAgICBXZWJDb3JlOjpDb2xvciBjb2xvcigq
cmdiYSk7CisgICAgYXV0byYgcGFnZSA9ICp3ZWJraXRXZWJWaWV3QmFzZUdldFBhZ2UocmVpbnRl
cnByZXRfY2FzdDxXZWJLaXRXZWJWaWV3QmFzZSo+KHdlYlZpZXcpKTsKKyAgICBpZiAocGFnZS5i
YWNrZ3JvdW5kQ29sb3IoKSA9PSBjb2xvcikKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFj
b2xvci5pc09wYXF1ZSgpKQorICAgICAgICBwYWdlLnNldERyYXdzQmFja2dyb3VuZChmYWxzZSk7
CisgICAgcGFnZS5zZXRCYWNrZ3JvdW5kQ29sb3IoY29sb3IpOworfQorCisvKioKKyAqIHdlYmtp
dF93ZWJfdmlld19nZXRfYmFja2dyb3VuZF9jb2xvcjoKKyAqIEB3ZWJfdmlldzogYSAjV2ViS2l0
V2ViVmlldworICogQHJnYmE6IChvdXQpOiBhICNHZGtSR0JBIHRvIGZpbGwgaW4gd2l0aCB0aGUg
YmFja2dyb3VuZCBjb2xvcgorICoKKyAqIEdldHMgdGhlIGNvbG9yIHRoYXQgaXMgdXNlZCB0byBk
cmF3IHRoZSBAd2ViX3ZpZXcgYmFja2dyb3VuZCBiZWZvcmUKKyAqIHRoZSBhY3R1YWwgY29udGVu
dHMgYXJlIHJlbmRlcmVkLgorICogRm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlIGFsc28gd2Via2l0
X3dlYl92aWV3X3NldF9iYWNrZ3JvdW5kX2NvbG9yKCkKKyAqCisgKiBTaW5jZTogMi44CisgKi8K
K3ZvaWQgd2Via2l0X3dlYl92aWV3X2dldF9iYWNrZ3JvdW5kX2NvbG9yKFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcsIEdka1JHQkEqIHJnYmEpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRf
SVNfV0VCX1ZJRVcod2ViVmlldykpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwocmdiYSk7CisKKyAg
ICBhdXRvJiBwYWdlID0gKndlYmtpdFdlYlZpZXdCYXNlR2V0UGFnZShyZWludGVycHJldF9jYXN0
PFdlYktpdFdlYlZpZXdCYXNlKj4od2ViVmlldykpOworICAgICpyZ2JhID0gcGFnZS5iYWNrZ3Jv
dW5kQ29sb3IoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93
cGUvV2ViS2l0Q29sb3IuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJL
aXRDb2xvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjRhNGE2
ZTEzMTk5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dw
ZS9XZWJLaXRDb2xvci5jcHAKQEAgLTAsMCArMSwxNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTkgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIu
ICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYktpdENv
bG9yLmgiCisKKyNpbmNsdWRlICJXZWJLaXRDb2xvclByaXZhdGUuaCIKKworLyoqCisgKiBTRUNU
SU9OOiBXZWJLaXRDb2xvcgorICogQFNob3J0X2Rlc2NyaXB0aW9uOiBBIHdlYiB2aWV3IGJhY2tn
cm91bmQgY29sb3IKKyAqIEBUaXRsZTogV2ViS2l0Q29sb3IKKyAqIEBTZWVfYWxzbzogI1dlYktp
dFdlYlZpZXcuCisgKgorICogQSBXZWJLaXRDb2xvciBpcyBhIGJveGVkIHR5cGUgd3JhcHBpbmcg
YSBXZWJDb3JlIGNvbG9yLgorICoKKyAqIFNpbmNlOiAyLjI0CisgKi8KKworc3RydWN0IF9XZWJL
aXRDb2xvciB7CisgICAgX1dlYktpdENvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvcikK
KyAgICAgICAgOiBtX2NvbG9yKGNvbG9yKQorICAgIHsKKyAgICB9CisKKyAgICB+X1dlYktpdENv
bG9yKCkKKyAgICB7CisgICAgfQorCisgICAgY29uc3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9yKCkg
Y29uc3QgeyByZXR1cm4gbV9jb2xvcjsgfQorCisgICAgV2ViQ29yZTo6Q29sb3IgbV9jb2xvcjsK
KyAgICBpbnQgcmVmZXJlbmNlQ291bnQgeyAxIH07Cit9OworCitzdGF0aWMgV2ViS2l0Q29sb3Iq
IHdlYmtpdENvbG9yUmVmKFdlYktpdENvbG9yKiBjb2xvcikKK3sKKyAgICBBU1NFUlQoY29sb3Ip
OworICAgIGdfYXRvbWljX2ludF9pbmMoJmNvbG9yLT5yZWZlcmVuY2VDb3VudCk7CisgICAgcmV0
dXJuIGNvbG9yOworfQorCitHX0RFRklORV9CT1hFRF9UWVBFKFdlYktpdENvbG9yLCB3ZWJraXRf
Y29sb3IsIHdlYmtpdENvbG9yUmVmLCB3ZWJraXRDb2xvclVucmVmKQorCit2b2lkIHdlYmtpdENv
bG9yVW5yZWYoV2ViS2l0Q29sb3IqIGNvbG9yKQoreworICAgIEFTU0VSVChjb2xvcik7CisgICAg
aWYgKGdfYXRvbWljX2ludF9kZWNfYW5kX3Rlc3QoJmNvbG9yLT5yZWZlcmVuY2VDb3VudCkpIHsK
KyAgICAgICAgY29sb3ItPn5XZWJLaXRDb2xvcigpOworICAgICAgICBmYXN0RnJlZShjb2xvcik7
CisgICAgfQorfQorCitXZWJLaXRDb2xvciogd2Via2l0Q29sb3JGcm9tQ29sb3IoY29uc3QgV2Vi
Q29yZTo6Q29sb3ImIGNvbG9yKQoreworICAgIGF1dG8qIHJlc3VsdCA9IHN0YXRpY19jYXN0PFdl
YktpdENvbG9yKj4oZmFzdE1hbGxvYyhzaXplb2YoV2ViS2l0Q29sb3IpKSk7CisgICAgbmV3IChy
ZXN1bHQpIFdlYktpdENvbG9yKGNvbG9yKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitjb25z
dCBXZWJDb3JlOjpDb2xvciYgd2Via2l0Q29sb3JHZXRDb2xvcihXZWJLaXRDb2xvciogYmFja2dy
b3VuZENvbG9yKQoreworICAgIHJldHVybiBiYWNrZ3JvdW5kQ29sb3ItPmNvbG9yKCk7Cit9CisK
Ky8qKgorICogd2Via2l0X2NvbG9yX25ld19mcm9tX3N0cmluZzoKKyAqIEBjb2xvclN0cmluZzog
Y29sb3IgcmVwcmVzZW50YXRpb24gYXMgY29sb3Igbmlja25hbWUgb3IgSEVYIHN0cmluZworICoK
KyAqIENyZWF0ZSBhIG5ldyAjV2ViS2l0Q29sb3IgZm9yIHRoZSBnaXZlbiBjb2xvciBzdHJpbmcK
KyAqIHJlcHJlc2VudGF0aW9uLiBUaGVyZSBhcmUgdHdvIHZhbGlkIHJlcHJlc2VudGF0aW9uIHR5
cGVzOiBzdGFuZGFyZCBjb2xvcgorICogbmFtZXMgKHNlZSBodHRwczovL2h0bWxjb2xvcmNvZGVz
LmNvbS9jb2xvci1uYW1lcy8gZm9yIGluc3RhbmNlKSBvciBIRVgKKyAqIHZhbHVlcy4KKyAqCisg
KiBSZXR1cm5zOiBhIG5ld2x5IGNyZWF0ZWQgI1dlYktpdENvbG9yCisgKgorICogU2luY2U6IDIu
MjQKKyAqLworV2ViS2l0Q29sb3IqIHdlYmtpdF9jb2xvcl9uZXdfZnJvbV9zdHJpbmcoY29uc3Qg
Y2hhciogY29sb3JTdHJpbmcpCit7CisgICAgcmV0dXJuIHdlYmtpdENvbG9yRnJvbUNvbG9yKFdl
YkNvcmU6OkNvbG9yKGNvbG9yU3RyaW5nKSk7Cit9CisKKy8qKgorICogd2Via2l0X2NvbG9yX2dl
dF9yZWRfY2hhbm5lbDoKKyAqIEBjb2xvcjogYSAjV2ViS2l0Q29sb3IKKyAqCisgKiBQcm92aWRl
cyByZWFkLW9ubHkgYWNjZXNzIHRvIHRoZSByZWQgY29tcG9uZW50IG9mIHRoZSBjb2xvci4KKyAq
CisgKiBSZXR1cm5zOiBhICNnaW50IGNsYW1wZWQgYmV0d2VlbiAwIGFuZCAyNTUuCisgKgorICog
U2luY2U6IDIuMjQKKyAqLworZ2ludCB3ZWJraXRfY29sb3JfZ2V0X3JlZF9jaGFubmVsKFdlYktp
dENvbG9yKiBjb2xvcikKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChjb2xvciwgMCk7Cisg
ICAgcmV0dXJuIGNvbG9yLT5jb2xvcigpLnJlZCgpOworfQorCisvKioKKyAqIHdlYmtpdF9jb2xv
cl9nZXRfZ3JlZW5fY2hhbm5lbDoKKyAqIEBjb2xvcjogYSAjV2ViS2l0Q29sb3IKKyAqCisgKiBQ
cm92aWRlcyByZWFkLW9ubHkgYWNjZXNzIHRvIHRoZSBncmVlbiBjb21wb25lbnQgb2YgdGhlIGNv
bG9yLgorICoKKyAqIFJldHVybnM6IGEgI2dpbnQgY2xhbXBlZCBiZXR3ZWVuIDAgYW5kIDI1NS4K
KyAqCisgKiBTaW5jZTogMi4yNAorICovCitnaW50IHdlYmtpdF9jb2xvcl9nZXRfZ3JlZW5fY2hh
bm5lbChXZWJLaXRDb2xvciogY29sb3IpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoY29s
b3IsIDApOworICAgIHJldHVybiBjb2xvci0+Y29sb3IoKS5ncmVlbigpOworfQorCisvKioKKyAq
IHdlYmtpdF9jb2xvcl9nZXRfYmx1ZV9jaGFubmVsOgorICogQGNvbG9yOiBhICNXZWJLaXRDb2xv
cgorICoKKyAqIFByb3ZpZGVzIHJlYWQtb25seSBhY2Nlc3MgdG8gdGhlIGJsdWUgY29tcG9uZW50
IG9mIHRoZSBjb2xvci4KKyAqCisgKiBSZXR1cm5zOiBhICNnaW50IGNsYW1wZWQgYmV0d2VlbiAw
IGFuZCAyNTUuCisgKgorICogU2luY2U6IDIuMjQKKyAqLworZ2ludCB3ZWJraXRfY29sb3JfZ2V0
X2JsdWVfY2hhbm5lbChXZWJLaXRDb2xvciogY29sb3IpCit7CisgICAgZ19yZXR1cm5fdmFsX2lm
X2ZhaWwoY29sb3IsIDApOworICAgIHJldHVybiBjb2xvci0+Y29sb3IoKS5ibHVlKCk7Cit9CisK
Ky8qKgorICogd2Via2l0X2NvbG9yX2dldF9hbHBoYV9jaGFubmVsOgorICogQGNvbG9yOiBhICNX
ZWJLaXRDb2xvcgorICoKKyAqIFByb3ZpZGVzIHJlYWQtb25seSBhY2Nlc3MgdG8gdGhlIGFscGhh
IGNvbXBvbmVudCBvZiB0aGUgY29sb3IuCisgKgorICogUmV0dXJuczogYSAjZ2ludCBjbGFtcGVk
IGJldHdlZW4gMCBhbmQgMjU1LgorICoKKyAqIFNpbmNlOiAyLjI0CisgKi8KK2dpbnQgd2Via2l0
X2NvbG9yX2dldF9hbHBoYV9jaGFubmVsKFdlYktpdENvbG9yKiBjb2xvcikKK3sKKyAgICBnX3Jl
dHVybl92YWxfaWZfZmFpbChjb2xvciwgMCk7CisgICAgcmV0dXJuIGNvbG9yLT5jb2xvcigpLmFs
cGhhKCk7Cit9CisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZSA8PiBXZWJLaXRDb2xvciog
cmVmR1B0cihXZWJLaXRDb2xvciogcHRyKQoreworICAgIGlmIChwdHIpCisgICAgICAgIHdlYmtp
dENvbG9yUmVmKHB0cik7CisgICAgcmV0dXJuIHB0cjsKK30KKwordGVtcGxhdGUgPD4gdm9pZCBk
ZXJlZkdQdHIoV2ViS2l0Q29sb3IqIHB0cikKK3sKKyAgICBpZiAocHRyKQorICAgICAgICB3ZWJr
aXRDb2xvclVucmVmKHB0cik7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS93cGUvV2ViS2l0Q29sb3IuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS93cGUvV2ViS2l0Q29sb3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MC4uNTU1OWQyMmZlZTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvd3BlL1dlYktpdENvbG9yLmgKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOSBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWYgIWRlZmluZWQoX19XRUJLSVRfSF9JTlNJREVfXykg
JiYgIWRlZmluZWQoV0VCS0lUMl9DT01QSUxBVElPTikKKyNlcnJvciAiT25seSA8d3BlL3dlYmtp
dC5oPiBjYW4gYmUgaW5jbHVkZWQgZGlyZWN0bHkuIgorI2VuZGlmCisKKyNpZm5kZWYgV2ViS2l0
Q29sb3JfaAorI2RlZmluZSBXZWJLaXRDb2xvcl9oCisKKyNpbmNsdWRlIDxnbGliLW9iamVjdC5o
PgorI2luY2x1ZGUgPHdwZS9XZWJLaXREZWZpbmVzLmg+CisKK0dfQkVHSU5fREVDTFMKKworI2Rl
ZmluZSBXRUJLSVRfVFlQRV9DT0xPUiAod2Via2l0X2NvbG9yX2dldF90eXBlKCkpCisKK3R5cGVk
ZWYgc3RydWN0IF9XZWJLaXRDb2xvciBXZWJLaXRDb2xvcjsKKworV0VCS0lUX0FQSSBHVHlwZQor
d2Via2l0X2NvbG9yX2dldF90eXBlICAgICAgICAgICAodm9pZCk7CisKK1dFQktJVF9BUEkgV2Vi
S2l0Q29sb3IgKgord2Via2l0X2NvbG9yX25ld19mcm9tX3N0cmluZyAgICAoY29uc3QgY2hhciog
Y29sb3JTdHJpbmcpOworCitXRUJLSVRfQVBJIGdpbnQKK3dlYmtpdF9jb2xvcl9nZXRfcmVkX2No
YW5uZWwgICAgKFdlYktpdENvbG9yKiBjb2xvcik7CisKK1dFQktJVF9BUEkgZ2ludAord2Via2l0
X2NvbG9yX2dldF9ncmVlbl9jaGFubmVsICAoV2ViS2l0Q29sb3IqIGNvbG9yKTsKKworV0VCS0lU
X0FQSSBnaW50Cit3ZWJraXRfY29sb3JfZ2V0X2JsdWVfY2hhbm5lbCAgIChXZWJLaXRDb2xvciog
Y29sb3IpOworCitXRUJLSVRfQVBJIGdpbnQKK3dlYmtpdF9jb2xvcl9nZXRfYWxwaGFfY2hhbm5l
bCAgKFdlYktpdENvbG9yKiBjb2xvcik7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZiAvKiBXZWJL
aXRDb2xvcl9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3Bl
L1dlYktpdENvbG9yUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9X
ZWJLaXRDb2xvclByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MC4uZjBiYjg2NTY0NjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvd3BlL1dlYktpdENvbG9yUHJpdmF0ZS5oCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTkgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
CisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJD
b2xvci5oIgorI2luY2x1ZGUgIldlYktpdENvbG9yLmgiCisKKyNpbmNsdWRlIDx3dGYvZ2xpYi9H
UmVmUHRyLmg+CisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZSA8PiBXZWJLaXRDb2xvciog
cmVmR1B0cihXZWJLaXRDb2xvciogcHRyKTsKK3RlbXBsYXRlIDw+IHZvaWQgZGVyZWZHUHRyKFdl
YktpdENvbG9yKiBwdHIpOworCit9CisKK3ZvaWQgd2Via2l0Q29sb3JVbnJlZihXZWJLaXRDb2xv
ciopOworCitXZWJLaXRDb2xvciogd2Via2l0Q29sb3JGcm9tQ29sb3IoY29uc3QgV2ViQ29yZTo6
Q29sb3ImKTsKK2NvbnN0IFdlYkNvcmU6OkNvbG9yJiB3ZWJraXRDb2xvckdldENvbG9yKFdlYktp
dENvbG9yKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dl
YktpdFdlYlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2Vi
Vmlldy5oCmluZGV4IDQxMDJhNzUyNmQ2Li45ZGYzODgzOWVlNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3LmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3LmgKQEAgLTQ5LDYgKzQ5LDcgQEAK
ICNpbmNsdWRlIDx3cGUvV2ViS2l0V2ViQ29udGV4dC5oPgogI2luY2x1ZGUgPHdwZS9XZWJLaXRX
ZWJSZXNvdXJjZS5oPgogI2luY2x1ZGUgPHdwZS9XZWJLaXRXZWJWaWV3QmFja2VuZC5oPgorI2lu
Y2x1ZGUgPHdwZS9XZWJLaXRDb2xvci5oPgogI2luY2x1ZGUgPHdwZS9XZWJLaXRXZWJWaWV3U2Vz
c2lvblN0YXRlLmg+CiAjaW5jbHVkZSA8d3BlL1dlYktpdFdpbmRvd1Byb3BlcnRpZXMuaD4KIApA
QCAtNTE3LDYgKzUxOCwxMiBAQCBXRUJLSVRfQVBJIHZvaWQKIHdlYmtpdF93ZWJfdmlld19yZW1v
dmVfZnJhbWVfZGlzcGxheWVkX2NhbGxiYWNrICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAg
ICAgICAqd2ViX3ZpZXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBndWludCAgICAgICAgICAgICAgICAgICAgICAgIGlkKTsKIAorV0VCS0lU
X0FQSSB2b2lkCit3ZWJraXRfd2ViX3ZpZXdfc2V0X2JhY2tncm91bmRfY29sb3IgICAgICAgICAg
ICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgICp3ZWJfdmlldywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdENvbG9y
ICAgICAgICAgICAgICAgICAgKmNvbG9yKTsKK1dFQktJVF9BUEkgV2ViS2l0Q29sb3IgKgord2Vi
a2l0X3dlYl92aWV3X2dldF9iYWNrZ3JvdW5kX2NvbG9yICAgICAgICAgICAgICAgICAoV2ViS2l0
V2ViVmlldyAgICAgICAgICAgICAgICAqd2ViX3ZpZXcpOworCiBHX0VORF9ERUNMUwogCiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2Vi
Vmlld1dQRS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZp
ZXdXUEUuY3BwCmluZGV4IGEzNDk1ZTg1MmUxLi4zNTI3ZGM2ZDVjOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3V1BFLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXdXUEUuY3BwCkBAIC0y
MCw2ICsyMCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViVmll
dy5oIgogCisjaW5jbHVkZSAiV2ViS2l0Q29sb3JQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0
V2ViVmlld1ByaXZhdGUuaCIKIAogZ2Jvb2xlYW4gd2Via2l0V2ViVmlld0F1dGhlbnRpY2F0ZShX
ZWJLaXRXZWJWaWV3KiwgV2ViS2l0QXV0aGVudGljYXRpb25SZXF1ZXN0KikKQEAgLTE3OCwzICsx
NzksNDggQEAgV2ViS2l0V2ViVmlldyogd2Via2l0X3dlYl92aWV3X25ld193aXRoX3VzZXJfY29u
dGVudF9tYW5hZ2VyKFdlYktpdFdlYlZpZXdCYWNrZW4KICAgICAgICAgInVzZXItY29udGVudC1t
YW5hZ2VyIiwgdXNlckNvbnRlbnRNYW5hZ2VyLAogICAgICAgICBudWxscHRyKSk7CiB9CisKKy8q
KgorICogd2Via2l0X3dlYl92aWV3X3NldF9iYWNrZ3JvdW5kX2NvbG9yOgorICogQHdlYl92aWV3
OiBhICNXZWJLaXRXZWJWaWV3CisgKiBAYmFja2dyb3VuZENvbG9yOiBhICNXZWJLaXRDb2xvcgor
ICoKKyAqIFNldHMgdGhlIGNvbG9yIHRoYXQgd2lsbCBiZSB1c2VkIHRvIGRyYXcgdGhlIEB3ZWJf
dmlldyBiYWNrZ3JvdW5kIGJlZm9yZQorICogdGhlIGFjdHVhbCBjb250ZW50cyBhcmUgcmVuZGVy
ZWQuIE5vdGUgdGhhdCBpZiB0aGUgd2ViIHBhZ2UgbG9hZGVkIGluIEB3ZWJfdmlldworICogc3Bl
Y2lmaWVzIGEgYmFja2dyb3VuZCBjb2xvciwgaXQgd2lsbCB0YWtlIHByZWNlZGVuY2Ugb3ZlciB0
aGUgYmFja2dyb3VuZCBjb2xvci4KKyAqIEJ5IGRlZmF1bHQgdGhlIEB3ZWJfdmlldyBiYWNrZ3Jv
dW5kIGNvbG9yIGlzIG9wYXF1ZSB3aGl0ZS4KKyAqCisgKiBTaW5jZTogMi4yNAorICovCit2b2lk
IHdlYmtpdF93ZWJfdmlld19zZXRfYmFja2dyb3VuZF9jb2xvcihXZWJLaXRXZWJWaWV3KiB3ZWJW
aWV3LCBXZWJLaXRDb2xvciogYmFja2dyb3VuZENvbG9yKQoreworICAgIGdfcmV0dXJuX2lmX2Zh
aWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpKTsKKyAgICBnX3JldHVybl9pZl9mYWlsKGJh
Y2tncm91bmRDb2xvcik7CisKKyAgICBhdXRvJiBwYWdlID0gd2Via2l0V2ViVmlld0dldFBhZ2Uo
d2ViVmlldyk7CisgICAgYXV0byYgY29sb3IgPSB3ZWJraXRDb2xvckdldENvbG9yKGJhY2tncm91
bmRDb2xvcik7CisgICAgaWYgKCFjb2xvci5pc09wYXF1ZSgpKQorICAgICAgICBwYWdlLnNldERy
YXdzQmFja2dyb3VuZChmYWxzZSk7CisKKyAgICBwYWdlLnNldEJhY2tncm91bmRDb2xvcihjb2xv
cik7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl92aWV3X2dldF9iYWNrZ3JvdW5kX2NvbG9yOgor
ICogQHdlYl92aWV3OiBhICNXZWJLaXRXZWJWaWV3CisgKgorICogR2V0cyB0aGUgY29sb3IgdGhh
dCBpcyB1c2VkIHRvIGRyYXcgdGhlIEB3ZWJfdmlldyBiYWNrZ3JvdW5kIGJlZm9yZSB0aGUKKyAq
IGFjdHVhbCBjb250ZW50cyBhcmUgcmVuZGVyZWQuIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZSBh
bHNvCisgKiB3ZWJraXRfd2ViX3ZpZXdfc2V0X2JhY2tncm91bmRfY29sb3IoKS4KKyAqCisgKiBS
ZXR1cm5zOiBhICNXZWJLaXRDb2xvcgorICoKKyAqIFNpbmNlOiAyLjI0CisgKi8KK1dlYktpdENv
bG9yKiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2JhY2tncm91bmRfY29sb3IoV2ViS2l0V2ViVmlldyog
d2ViVmlldykKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVco
d2ViVmlldyksIG51bGxwdHIpOworICAgIGF1dG8mIHBhZ2UgPSB3ZWJraXRXZWJWaWV3R2V0UGFn
ZSh3ZWJWaWV3KTsKKworICAgIHJldHVybiB3ZWJraXRDb2xvckZyb21Db2xvcihwYWdlLmJhY2tn
cm91bmRDb2xvcigpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS93cGUvZG9jcy93cGUtMC4xLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS93cGUvZG9jcy93cGUtMC4xLXNlY3Rpb25zLnR4dAppbmRleCA2MjhkYjQyNTJhNC4uZjdh
NmI0NGQ5NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvZG9j
cy93cGUtMC4xLXNlY3Rpb25zLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
d3BlL2RvY3Mvd3BlLTAuMS1zZWN0aW9ucy50eHQKQEAgLTIwNiw2ICsyMDYsOCBAQCB3ZWJraXRf
d2ViX3ZpZXdfcmVzdG9yZV9zZXNzaW9uX3N0YXRlCiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X21haW5f
cmVzb3VyY2UKIHdlYmtpdF93ZWJfdmlld19hZGRfZnJhbWVfZGlzcGxheWVkX2NhbGxiYWNrCiB3
ZWJraXRfd2ViX3ZpZXdfcmVtb3ZlX2ZyYW1lX2Rpc3BsYXllZF9jYWxsYmFjaword2Via2l0X3dl
Yl92aWV3X2dldF9iYWNrZ3JvdW5kX2NvbG9yCit3ZWJraXRfd2ViX3ZpZXdfc2V0X2JhY2tncm91
bmRfY29sb3IKIAogPFNVQlNFQ1RJT04gV2ViS2l0SmF2YXNjcmlwdFJlc3VsdD4KIFdlYktpdEph
dmFzY3JpcHRSZXN1bHQKQEAgLTI2Niw2ICsyNjgsMjAgQEAgd2Via2l0X3dlYl92aWV3X2JhY2tl
bmRfbmV3CiB3ZWJraXRfd2ViX3ZpZXdfYmFja2VuZF9nZXRfdHlwZQogPC9TRUNUSU9OPgogCis8
U0VDVElPTj4KKzxGSUxFPldlYktpdENvbG9yPC9GSUxFPgorV0VCS0lUX1RZUEVfQ09MT1IKK1dl
YktpdENvbG9yCit3ZWJraXRfY29sb3JfbmV3X2Zyb21fc3RyaW5nCit3ZWJraXRfY29sb3JfZ2V0
X3JlZF9jaGFubmVsCit3ZWJraXRfY29sb3JfZ2V0X2dyZWVuX2NoYW5uZWwKK3dlYmtpdF9jb2xv
cl9nZXRfYmx1ZV9jaGFubmVsCit3ZWJraXRfY29sb3JfZ2V0X2FscGhhX2NoYW5uZWwKKworPFNV
QlNFQ1RJT04gUHJpdmF0ZT4KK3dlYmtpdF9jb2xvcl9nZXRfdHlwZQorPC9TRUNUSU9OPgorCiA8
U0VDVElPTj4KIDxGSUxFPldlYktpdEF1dGhlbnRpY2F0aW9uUmVxdWVzdDwvRklMRT4KIFdlYktp
dEF1dGhlbnRpY2F0aW9uUmVxdWVzdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKaW5kZXggYTI5OGUzZmY0NGYuLjA4OGQ0YWFhZjg1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTE1NDYsNiArMTU0NiwxOCBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6c2V0RHJhd3NCYWNrZ3JvdW5kKGJvb2wgZHJhd3NCYWNrZ3JvdW5kKQogICAgICAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldERyYXdzQmFja2dyb3VuZChk
cmF3c0JhY2tncm91bmQpLCBtX3BhZ2VJRCk7CiB9CiAKKyNpZiBQTEFURk9STShHVEspIHx8IFBM
QVRGT1JNKFdQRSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3Qg
V2ViQ29yZTo6Q29sb3ImIGNvbG9yKQoreworICAgIGlmIChtX2JhY2tncm91bmRDb2xvciA9PSBj
b2xvcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9iYWNrZ3JvdW5kQ29sb3IgPSBjb2xvcjsK
KyAgICBpZiAoaXNWYWxpZCgpKQorICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlNldEJhY2tncm91bmRDb2xvcihjb2xvciksIG1fcGFnZUlEKTsKK30KKyNlbmRpZgor
CiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VG9wQ29udGVudEluc2V0KGZsb2F0IGNvbnRlbnRJbnNl
dCkKIHsKICAgICBpZiAobV90b3BDb250ZW50SW5zZXQgPT0gY29udGVudEluc2V0KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA0NTZjOGEyOWVjMy4uYWMwNGZiOGYz
MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC03NTIsOCArNzUy
LDEwIEBAIHB1YmxpYzoKIAogI2lmIFBMQVRGT1JNKEdUSykKICAgICBQbGF0Zm9ybVdpZGdldCB2
aWV3V2lkZ2V0KCk7CisjZW5kaWYKKyNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkK
ICAgICBjb25zdCBXZWJDb3JlOjpDb2xvciYgYmFja2dyb3VuZENvbG9yKCkgY29uc3QgeyByZXR1
cm4gbV9iYWNrZ3JvdW5kQ29sb3I7IH0KLSAgICB2b2lkIHNldEJhY2tncm91bmRDb2xvcihjb25z
dCBXZWJDb3JlOjpDb2xvciYgY29sb3IpIHsgbV9iYWNrZ3JvdW5kQ29sb3IgPSBjb2xvcjsgfQor
ICAgIHZvaWQgc2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJik7CiAjZW5k
aWYKIAogI2lmIFBMQVRGT1JNKFdJTikKQEAgLTIxNjAsNiArMjE2Miw4IEBAIHByaXZhdGU6CiAK
ICNpZiBQTEFURk9STShHVEspCiAgICAgU3RyaW5nIG1fYWNjZXNzaWJpbGl0eVBsdWdJRDsKKyNl
bmRpZgorI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQogICAgIFdlYkNvcmU6OkNv
bG9yIG1fYmFja2dyb3VuZENvbG9yIHsgV2ViQ29yZTo6Q29sb3I6OndoaXRlIH07CiAjZW5kaWYK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggYWFjYjViOWNlNjEuLjcwMDM1
YmEzYjhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTEzOTQsNiArMTM5
NCw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZv
ck5ld1BhZ2UoKQogCiAgICAgYm9vbCBpc01haW5GcmFtZSA9IG1fZnJhbWUtPmlzTWFpbkZyYW1l
KCk7CiAgICAgYm9vbCBpc1RyYW5zcGFyZW50ID0gIXdlYlBhZ2UtPmRyYXdzQmFja2dyb3VuZCgp
OworICAgIENvbG9yIGJhY2tncm91bmRDb2xvciA9IHdlYlBhZ2UtPmJhY2tncm91bmRDb2xvcigp
OwogICAgIGJvb2wgc2hvdWxkVXNlRml4ZWRMYXlvdXQgPSBpc01haW5GcmFtZSAmJiB3ZWJQYWdl
LT51c2VGaXhlZExheW91dCgpOwogICAgIGJvb2wgc2hvdWxkRGlzYWJsZVNjcm9sbGluZyA9IGlz
TWFpbkZyYW1lICYmICF3ZWJQYWdlLT5tYWluRnJhbWVJc1Njcm9sbGFibGUoKTsKICAgICBib29s
IHNob3VsZEhpZGVTY3JvbGxiYXJzID0gc2hvdWxkRGlzYWJsZVNjcm9sbGluZzsKQEAgLTE0MTgs
NyArMTQxOSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnRyYW5zaXRpb25Ub0NvbW1p
dHRlZEZvck5ld1BhZ2UoKQogICAgIGJvb2wgaG9yaXpvbnRhbExvY2sgPSBzaG91bGRIaWRlU2Ny
b2xsYmFycyB8fCB3ZWJQYWdlLT5hbHdheXNTaG93c0hvcml6b250YWxTY3JvbGxlcigpOwogICAg
IGJvb2wgdmVydGljYWxMb2NrID0gc2hvdWxkSGlkZVNjcm9sbGJhcnMgfHwgd2ViUGFnZS0+YWx3
YXlzU2hvd3NWZXJ0aWNhbFNjcm9sbGVyKCk7CiAKLSAgICBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+
Y3JlYXRlVmlldyh3ZWJQYWdlLT5zaXplKCksIGlzVHJhbnNwYXJlbnQsCisgICAgbV9mcmFtZS0+
Y29yZUZyYW1lKCktPmNyZWF0ZVZpZXcod2ViUGFnZS0+c2l6ZSgpLCBpc1RyYW5zcGFyZW50LCBi
YWNrZ3JvdW5kQ29sb3IsCiAgICAgICAgIHdlYlBhZ2UtPmZpeGVkTGF5b3V0U2l6ZSgpLCBmaXhl
ZFZpc2libGVDb250ZW50UmVjdCwgc2hvdWxkVXNlRml4ZWRMYXlvdXQsCiAgICAgICAgIGhvcml6
b250YWxTY3JvbGxiYXJNb2RlLCBob3Jpem9udGFsTG9jaywgdmVydGljYWxTY3JvbGxiYXJNb2Rl
LCB2ZXJ0aWNhbExvY2spOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9BY2NlbGVyYXRlZERyYXdpbmdBcmVhLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEuY3BwCmluZGV4IDk5MjA0NjViMTcz
Li5mODNlYzA2NGY0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvQWNjZWxlcmF0ZWREcmF3aW5nQXJlYS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3aW5nQXJlYS5jcHAKQEAgLTEwMSw2ICsxMDEsMTQg
QEAgdm9pZCBBY2NlbGVyYXRlZERyYXdpbmdBcmVhOjpwYWdlQmFja2dyb3VuZFRyYW5zcGFyZW5j
eUNoYW5nZWQoKQogICAgICAgICBtX3ByZXZpb3VzTGF5ZXJUcmVlSG9zdC0+cGFnZUJhY2tncm91
bmRUcmFuc3BhcmVuY3lDaGFuZ2VkKCk7CiB9CiAKK3ZvaWQgQWNjZWxlcmF0ZWREcmF3aW5nQXJl
YTo6cGFnZUJhY2tncm91bmRDb2xvckNoYW5nZWQoKQoreworICAgIGlmIChtX2xheWVyVHJlZUhv
c3QpCisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+cGFnZUJhY2tncm91bmRDb2xvckNoYW5nZWQo
KTsKKyAgICBlbHNlIGlmIChtX3ByZXZpb3VzTGF5ZXJUcmVlSG9zdCkKKyAgICAgICAgbV9wcmV2
aW91c0xheWVyVHJlZUhvc3QtPnBhZ2VCYWNrZ3JvdW5kQ29sb3JDaGFuZ2VkKCk7Cit9CisKIHZv
aWQgQWNjZWxlcmF0ZWREcmF3aW5nQXJlYTo6c2V0TGF5ZXJUcmVlU3RhdGVJc0Zyb3plbihib29s
IGlzRnJvemVuKQogewogICAgIGlmIChtX2xheWVyVHJlZVN0YXRlSXNGcm96ZW4gPT0gaXNGcm96
ZW4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVy
YXRlZERyYXdpbmdBcmVhLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9BY2Nl
bGVyYXRlZERyYXdpbmdBcmVhLmgKaW5kZXggNzBhYmU0MzU5MjUuLmMyYmQ1Zjc2YTk2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZERyYXdp
bmdBcmVhLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0
ZWREcmF3aW5nQXJlYS5oCkBAIC00NCw2ICs0NCw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHNl
dE5lZWRzRGlzcGxheUluUmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBzY3JvbGwoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc2Nyb2xsUmVjdCwgY29uc3Qg
V2ViQ29yZTo6SW50U2l6ZSYgc2Nyb2xsRGVsdGEpIG92ZXJyaWRlOwogICAgIHZvaWQgcGFnZUJh
Y2tncm91bmRUcmFuc3BhcmVuY3lDaGFuZ2VkKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBwYWdlQmFj
a2dyb3VuZENvbG9yQ2hhbmdlZCgpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0TGF5ZXJUcmVlU3Rh
dGVJc0Zyb3plbihib29sKSBvdmVycmlkZTsKICAgICBib29sIGxheWVyVHJlZVN0YXRlSXNGcm96
ZW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2xheWVyVHJlZVN0YXRlSXNGcm96ZW47IH0K
ICAgICBMYXllclRyZWVIb3N0KiBsYXllclRyZWVIb3N0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gbV9sYXllclRyZWVIb3N0LmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdy
YXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggMTUyMGY1MjBkYWMuLmFl
ZjRmMDE1ZDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGlu
YXRlZExheWVyVHJlZUhvc3QuY3BwCkBAIC0yMjgsNiArMjI4LDExIEBAIHZvaWQgQ29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0OjpwYWdlQmFja2dyb3VuZFRyYW5zcGFyZW5jeUNoYW5nZWQoKQogewog
fQogCit2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6cGFnZUJhY2tncm91bmRDb2xvckNo
YW5nZWQoKQoreworCit9CisKIEdyYXBoaWNzTGF5ZXJGYWN0b3J5KiBDb29yZGluYXRlZExheWVy
VHJlZUhvc3Q6OmdyYXBoaWNzTGF5ZXJGYWN0b3J5KCkKIHsKICAgICByZXR1cm4gJm1fY29vcmRp
bmF0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVy
VHJlZUhvc3QuaAppbmRleCAwYThiZWM4YTM5OC4uMjdjYWUwMDRlNDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaApAQCAtNTYs
NiArNTYsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2b2lkIGRldmljZU9yUGFnZVNjYWxlRmFjdG9y
Q2hhbmdlZCgpIG92ZXJyaWRlOwogICAgIHZvaWQgcGFnZUJhY2tncm91bmRUcmFuc3BhcmVuY3lD
aGFuZ2VkKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBwYWdlQmFja2dyb3VuZENvbG9yQ2hhbmdlZCgp
IG92ZXJyaWRlOwogCiAgICAgdm9pZCBzZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IFdlYkNv
cmU6OkZsb2F0UmVjdCYpOwogICAgIHZvaWQgcmVuZGVyTmV4dEZyYW1lKGJvb2wpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0LmNwcAppbmRleCA4MjNiN2ZhMmFjNy4uZjhlMmI1ZDBlY2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
VGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVGhyZWFkZWRDb29yZGluYXRl
ZExheWVyVHJlZUhvc3QuY3BwCkBAIC0xOTUsNiArMTk1LDE3IEBAIHZvaWQgVGhyZWFkZWRDb29y
ZGluYXRlZExheWVyVHJlZUhvc3Q6OnBhZ2VCYWNrZ3JvdW5kVHJhbnNwYXJlbmN5Q2hhbmdlZCgp
CiAgICAgbV9jb21wb3NpdG9yLT5zZXREcmF3c0JhY2tncm91bmQobV93ZWJQYWdlLmRyYXdzQmFj
a2dyb3VuZCgpKTsKIH0KIAordm9pZCBUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6
cGFnZUJhY2tncm91bmRDb2xvckNoYW5nZWQoKQoreworICAgIGlmIChtX2lzRGlzY2FyZGFibGUp
IHsKKyAgICAgICAgbV9kaXNjYXJkYWJsZVN5bmNBY3Rpb25zLmFkZChEaXNjYXJkYWJsZVN5bmNB
Y3Rpb25zOjpVcGRhdGVCYWNrZ3JvdW5kKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6cGFnZUJhY2tncm91bmRDb2xvckNoYW5nZWQoKTsK
KyAgICBtX2NvbXBvc2l0b3ItPnNldEJhY2tncm91bmRDb2xvcihtX3dlYlBhZ2UuYmFja2dyb3Vu
ZENvbG9yKCkpOworfQorCiB2b2lkIFRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Ojpz
aXplRGlkQ2hhbmdlKGNvbnN0IEludFNpemUmIHNpemUpCiB7CiAgICAgaWYgKG1faXNEaXNjYXJk
YWJsZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRl
ZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCmluZGV4IGI3ODQ2ODE2NzliLi44NGIzZjg4MzI4
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0
ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVGhyZWFkZWRD
b29yZGluYXRlZExheWVyVHJlZUhvc3QuaApAQCAtNTgsNiArNTgsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgc2l6ZURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNoYW5nZWQoKSBvdmVycmlkZTsKICAgICB2
b2lkIHBhZ2VCYWNrZ3JvdW5kVHJhbnNwYXJlbmN5Q2hhbmdlZCgpIG92ZXJyaWRlOworICAgIHZv
aWQgcGFnZUJhY2tncm91bmRDb2xvckNoYW5nZWQoKSBvdmVycmlkZTsKIAogICAgIHZvaWQgY29u
dGVudHNTaXplQ2hhbmdlZChjb25zdCBXZWJDb3JlOjpJbnRTaXplJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBkaWRDaGFuZ2VWaWV3cG9ydEF0dHJpYnV0ZXMoV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1
dGVzJiYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvRHJhd2luZ0FyZWEuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Ry
YXdpbmdBcmVhLmgKaW5kZXggZjljODkxNzRhNGEuLjFiMmJjYmVhYjgzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgKQEAgLTgwLDYgKzgwLDcg
QEAgcHVibGljOgogCiAgICAgLy8gRklYTUU6IFRoZXNlIHNob3VsZCBiZSBwdXJlIHZpcnR1YWwu
CiAgICAgdmlydHVhbCB2b2lkIHBhZ2VCYWNrZ3JvdW5kVHJhbnNwYXJlbmN5Q2hhbmdlZCgpIHsg
fQorICAgIHZpcnR1YWwgdm9pZCBwYWdlQmFja2dyb3VuZENvbG9yQ2hhbmdlZCgpIHsgfQogICAg
IHZpcnR1YWwgdm9pZCBmb3JjZVJlcGFpbnQoKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgZm9yY2VS
ZXBhaW50QXN5bmMoQ2FsbGJhY2tJRCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZv
aWQgc2V0TGF5ZXJUcmVlU3RhdGVJc0Zyb3plbihib29sKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJlZUhvc3QuaAppbmRleCA4NWRkNDU4ZTAxOC4u
MTY2OGJiYjlkNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L0xheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9M
YXllclRyZWVIb3N0LmgKQEAgLTc1LDYgKzc1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9v
bCBmb3JjZVJlcGFpbnRBc3luYyhDYWxsYmFja0lEKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZp
cnR1YWwgdm9pZCBzaXplRGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIG5ld1NpemUp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcGFnZUJhY2tncm91bmRUcmFuc3BhcmVuY3lDaGFuZ2Vk
KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwYWdlQmFja2dyb3VuZENvbG9yQ2hhbmdlZCgpID0g
MDsKIAogICAgIHZpcnR1YWwgdm9pZCBwYXVzZVJlbmRlcmluZygpOwogICAgIHZpcnR1YWwgdm9p
ZCByZXN1bWVSZW5kZXJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKaW5kZXggYjZjNTMzMDUxOTQuLmI0MjQxMzNiM2Q5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMjg4OSw2ICsyODg5LDIw
IEBAIHZvaWQgV2ViUGFnZTo6c2V0RHJhd3NCYWNrZ3JvdW5kKGJvb2wgZHJhd3NCYWNrZ3JvdW5k
KQogICAgIG1fZHJhd2luZ0FyZWEtPnNldE5lZWRzRGlzcGxheSgpOwogfQogCit2b2lkIFdlYlBh
Z2U6OnNldEJhY2tncm91bmRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYgYmFja2dyb3VuZENv
bG9yKQoreworICAgIGlmIChtX2JhY2tncm91bmRDb2xvciA9PSBiYWNrZ3JvdW5kQ29sb3IpCisg
ICAgICAgIHJldHVybjsKKworICAgIG1fYmFja2dyb3VuZENvbG9yID0gYmFja2dyb3VuZENvbG9y
OworCisgICAgaWYgKEZyYW1lVmlldyogZnJhbWVWaWV3ID0gbWFpbkZyYW1lVmlldygpKQorICAg
ICAgICBmcmFtZVZpZXctPnNldEJhc2VCYWNrZ3JvdW5kQ29sb3IoYmFja2dyb3VuZENvbG9yKTsK
KworICAgIG1fZHJhd2luZ0FyZWEtPnBhZ2VCYWNrZ3JvdW5kQ29sb3JDaGFuZ2VkKCk7CisgICAg
bV9kcmF3aW5nQXJlYS0+c2V0TmVlZHNEaXNwbGF5KCk7Cit9CisKICNpZiBQTEFURk9STShDT0NP
QSkKIHZvaWQgV2ViUGFnZTo6c2V0VG9wQ29udGVudEluc2V0RmVuY2VkKGZsb2F0IGNvbnRlbnRJ
bnNldCwgSVBDOjpBdHRhY2htZW50IGZlbmNlUG9ydCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCA2ZTVjOTJlNTg0OC4uMzdkY2YzYWM5NjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTExMzYsNiAr
MTEzNiw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGlkUmVjZWl2ZVdlYlBhZ2VNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwogCisgICAgY29uc3QgV2ViQ29yZTo6Q29s
b3ImIGJhY2tncm91bmRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZENvbG9yOyB9
CisKIHByaXZhdGU6CiAgICAgV2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnMmJik7CiAKQEAgLTEyNjMsNiArMTI2NSw3IEBAIHByaXZhdGU6CiAjZW5kaWYK
IAogICAgIHZvaWQgc2V0RHJhd3NCYWNrZ3JvdW5kKGJvb2wpOworICAgIHZvaWQgc2V0QmFja2dy
b3VuZENvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJik7CiAKICNpZiBQTEFURk9STShDT0NPQSkK
ICAgICB2b2lkIHNldFRvcENvbnRlbnRJbnNldEZlbmNlZChmbG9hdCwgSVBDOjpBdHRhY2htZW50
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluCmluZGV4IDU0YWJiYWY4OTM0Li41ZmFmZmYzZDQ5NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0y
Niw2ICsyNiw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIFNl
dExheWVySG9zdGluZ01vZGUoZW51bTp1aW50OF90IFdlYktpdDo6TGF5ZXJIb3N0aW5nTW9kZSBs
YXllckhvc3RpbmdNb2RlKQogCiAgICAgU2V0RHJhd3NCYWNrZ3JvdW5kKGJvb2wgZHJhd3NCYWNr
Z3JvdW5kKQorICAgIFNldEJhY2tncm91bmRDb2xvcihXZWJDb3JlOjpDb2xvciBjb2xvcikKIAog
ICAgIEFkZENvbnNvbGVNZXNzYWdlKHVpbnQ2NF90IGZyYW1lSUQsIGVudW06dWludDhfdCBKU0M6
Ok1lc3NhZ2VTb3VyY2UgbWVzc2FnZVNvdXJjZSwgZW51bTp1aW50OF90IEpTQzo6TWVzc2FnZUxl
dmVsIG1lc3NhZ2VMZXZlbCwgU3RyaW5nIG1lc3NhZ2UsIHVpbnQ2NF90IHJlcXVlc3RJRCkKICAg
ICBTZW5kQ1NQVmlvbGF0aW9uUmVwb3J0KHVpbnQ2NF90IGZyYW1lSUQsIFVSTCByZXBvcnRVUkws
IElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgcmVwb3J0RGF0YSkKZGlmZiAtLWdpdCBhL1Rvb2xzL01p
bmlCcm93c2VyL3dwZS9tYWluLmNwcCBiL1Rvb2xzL01pbmlCcm93c2VyL3dwZS9tYWluLmNwcApp
bmRleCBlMGMyOWIyMTI5OS4uMWNlMTI3OGUzNWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93
c2VyL3dwZS9tYWluLmNwcAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci93cGUvbWFpbi5jcHAKQEAg
LTQyLDYgKzQyLDcgQEAgc3RhdGljIGdib29sZWFuIGlnbm9yZVRMU0Vycm9yczsKIHN0YXRpYyBj
b25zdCBjaGFyKiBjb29raWVzRmlsZTsKIHN0YXRpYyBjb25zdCBjaGFyKiBjb29raWVzUG9saWN5
Owogc3RhdGljIGNvbnN0IGNoYXIqIHByb3h5OworY29uc3QgY2hhciogYmdDb2xvcjsKIAogc3Rh
dGljIGNvbnN0IEdPcHRpb25FbnRyeSBjb21tYW5kTGluZU9wdGlvbnNbXSA9CiB7CkBAIC01Myw2
ICs1NCw3IEBAIHN0YXRpYyBjb25zdCBHT3B0aW9uRW50cnkgY29tbWFuZExpbmVPcHRpb25zW10g
PQogICAgIHsgInByb3h5IiwgMCwgMCwgR19PUFRJT05fQVJHX1NUUklORywgJnByb3h5LCAiU2V0
IHByb3h5IiwgIlBST1hZIiB9LAogICAgIHsgImlnbm9yZS1ob3N0IiwgMCwgMCwgR19PUFRJT05f
QVJHX1NUUklOR19BUlJBWSwgJmlnbm9yZUhvc3RzLCAiU2V0IHByb3h5IGlnbm9yZSBob3N0cyIs
ICJIT1NUUyIgfSwKICAgICB7ICJpZ25vcmUtdGxzLWVycm9ycyIsIDAsIDAsIEdfT1BUSU9OX0FS
R19OT05FLCAmaWdub3JlVExTRXJyb3JzLCAiSWdub3JlIFRMUyBlcnJvcnMiLCBudWxscHRyIH0s
CisgICAgeyAiYmctY29sb3IiLCAwLCAwLCBHX09QVElPTl9BUkdfU1RSSU5HLCAmYmdDb2xvciwg
IldpbmRvdyBiYWNrZ3JvdW5kIGNvbG9yICh3aGl0ZSBieSBkZWZhdWx0KSIsICJ3aGl0ZSIgfSwK
ICAgICB7IEdfT1BUSU9OX1JFTUFJTklORywgMCwgMCwgR19PUFRJT05fQVJHX0ZJTEVOQU1FX0FS
UkFZLCAmdXJpQXJndW1lbnRzLCBudWxscHRyLCAiW1VSTF0iIH0sCiAgICAgeyBudWxscHRyLCAw
LCAwLCBHX09QVElPTl9BUkdfTk9ORSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciB9CiB9OwpA
QCAtMTk0LDYgKzE5NiwxMCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogICAg
IGlmIChpZ25vcmVUTFNFcnJvcnMpCiAgICAgICAgIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfdGxz
X2Vycm9yc19wb2xpY3kod2ViQ29udGV4dCwgV0VCS0lUX1RMU19FUlJPUlNfUE9MSUNZX0lHTk9S
RSk7CiAKKyAgICBhdXRvKiBiYWNrZ3JvdW5kQ29sb3IgPSB3ZWJraXRfY29sb3JfbmV3X2Zyb21f
c3RyaW5nKGJnQ29sb3IpOworICAgIHdlYmtpdF93ZWJfdmlld19zZXRfYmFja2dyb3VuZF9jb2xv
cih3ZWJWaWV3LCBiYWNrZ3JvdW5kQ29sb3IpOworICAgIGdfYm94ZWRfZnJlZShXRUJLSVRfVFlQ
RV9DT0xPUiwgYmFja2dyb3VuZENvbG9yKTsKKwogICAgIGlmICh1cmlBcmd1bWVudHMpCiAgICAg
ICAgIHdlYmtpdF93ZWJfdmlld19sb2FkX3VyaSh3ZWJWaWV3LCB1cmlBcmd1bWVudHNbMF0pOwog
ICAgIGVsc2UgaWYgKCFhdXRvbWF0aW9uTW9kZSkKQEAgLTIwMiw3ICsyMDgsNyBAQCBpbnQgbWFp
bihpbnQgYXJnYywgY2hhciAqYXJndltdKQogICAgIGdfbWFpbl9sb29wX3J1bihsb29wKTsKIAog
ICAgIGdfb2JqZWN0X3VucmVmKHdlYlZpZXcpOwotICAgIGlmIChwcml2YXRlTW9kZSkKKyAgICBp
ZiAocHJpdmF0ZU1vZGUgfHwgYXV0b21hdGlvbk1vZGUpCiAgICAgICAgIGdfb2JqZWN0X3VucmVm
KHdlYkNvbnRleHQpOwogICAgIGdfbWFpbl9sb29wX3VucmVmKGxvb3ApOwogCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYlZpZXcu
Y3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJW
aWV3LmNwcAppbmRleCBkNzU3MzQxYjBmYi4uYTUzMTc4MTFhNGMgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0V2ViVmlldy5jcHAKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJWaWV3
LmNwcApAQCAtMTEzMyw5ICsxMTMzLDkgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdJc1BsYXlp
bmdBdWRpbyhJc1BsYXlpbmdBdWRpb1dlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2kKICAgICBn
X2Fzc2VydCghd2Via2l0X3dlYl92aWV3X2lzX3BsYXlpbmdfYXVkaW8odGVzdC0+bV93ZWJWaWV3
KSk7CiB9CiAKLSNpZiBQTEFURk9STShHVEspCiBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0JhY2tn
cm91bmRDb2xvcihXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKKyNpZiBQTEFU
Rk9STShHVEspCiAgICAgLy8gV2hpdGUgaXMgdGhlIGRlZmF1bHQgYmFja2dyb3VuZC4KICAgICBH
ZGtSR0JBIHJnYmE7CiAgICAgd2Via2l0X3dlYl92aWV3X2dldF9iYWNrZ3JvdW5kX2NvbG9yKHRl
c3QtPm1fd2ViVmlldywgJnJnYmEpOwpAQCAtMTE1NCwxMSArMTE1NCw0NiBAQCBzdGF0aWMgdm9p
ZCB0ZXN0V2ViVmlld0JhY2tncm91bmRDb2xvcihXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9p
bnRlcikKICAgICBnX2Fzc2VydF9jbXBmbG9hdChyZ2JhLmdyZWVuLCA9PSwgMCk7CiAgICAgZ19h
c3NlcnRfY21wZmxvYXQocmdiYS5ibHVlLCA9PSwgMCk7CiAgICAgZ19hc3NlcnRfY21wZmxvYXQo
cmdiYS5hbHBoYSwgPT0sIDAuNSk7CisjZW5kaWYKKyNpZiBQTEFURk9STShXUEUpCisgICAgLy8g
V2hpdGUgaXMgdGhlIGRlZmF1bHQgYmFja2dyb3VuZC4KKyAgICBXZWJLaXRDb2xvciogY29sb3Ig
PSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2JhY2tncm91bmRfY29sb3IodGVzdC0+bV93ZWJWaWV3KTsK
KyAgICBnX2Fzc2VydF9jbXBpbnQod2Via2l0X2NvbG9yX2dldF9yZWRfY2hhbm5lbChjb2xvciks
ID09LCAyNTUpOworICAgIGdfYXNzZXJ0X2NtcGludCh3ZWJraXRfY29sb3JfZ2V0X2dyZWVuX2No
YW5uZWwoY29sb3IpLCA9PSwgMjU1KTsKKyAgICBnX2Fzc2VydF9jbXBpbnQod2Via2l0X2NvbG9y
X2dldF9ibHVlX2NoYW5uZWwoY29sb3IpLCA9PSwgMjU1KTsKKyAgICBnX2Fzc2VydF9jbXBpbnQo
d2Via2l0X2NvbG9yX2dldF9hbHBoYV9jaGFubmVsKGNvbG9yKSwgPT0sIDI1NSk7CisgICAgZ19i
b3hlZF9mcmVlKFdFQktJVF9UWVBFX0NPTE9SLCBjb2xvcik7CisKKyAgICAvLyBTZXQgdG8gZ3Jl
ZW4uCisgICAgV2ViS2l0Q29sb3IqIGNvbG9yMiA9IHdlYmtpdF9jb2xvcl9uZXdfZnJvbV9zdHJp
bmcoImdyZWVuIik7CisgICAgd2Via2l0X3dlYl92aWV3X3NldF9iYWNrZ3JvdW5kX2NvbG9yKHRl
c3QtPm1fd2ViVmlldywgY29sb3IyKTsKKyAgICBnX2JveGVkX2ZyZWUoV0VCS0lUX1RZUEVfQ09M
T1IsIGNvbG9yMik7CisKKyAgICBjb2xvciA9IHdlYmtpdF93ZWJfdmlld19nZXRfYmFja2dyb3Vu
ZF9jb2xvcih0ZXN0LT5tX3dlYlZpZXcpOworICAgIGdfYXNzZXJ0X2NtcGludCh3ZWJraXRfY29s
b3JfZ2V0X3JlZF9jaGFubmVsKGNvbG9yKSwgPT0sIDApOworICAgIGdfYXNzZXJ0X2NtcGludCh3
ZWJraXRfY29sb3JfZ2V0X2dyZWVuX2NoYW5uZWwoY29sb3IpLCA9PSwgMTI4KTsKKyAgICBnX2Fz
c2VydF9jbXBpbnQod2Via2l0X2NvbG9yX2dldF9ibHVlX2NoYW5uZWwoY29sb3IpLCA9PSwgMCk7
CisgICAgZ19hc3NlcnRfY21waW50KHdlYmtpdF9jb2xvcl9nZXRfYWxwaGFfY2hhbm5lbChjb2xv
ciksID09LCAyNTUpOworICAgIGdfYm94ZWRfZnJlZShXRUJLSVRfVFlQRV9DT0xPUiwgY29sb3Ip
OworCisgICAgLy8gRnVsbHkgdHJhbnNwYXJlbnQKKyAgICBjb2xvcjIgPSB3ZWJraXRfY29sb3Jf
bmV3X2Zyb21fc3RyaW5nKCJ0cmFuc3BhcmVudCIpOworICAgIHdlYmtpdF93ZWJfdmlld19zZXRf
YmFja2dyb3VuZF9jb2xvcih0ZXN0LT5tX3dlYlZpZXcsIGNvbG9yMik7CisgICAgZ19ib3hlZF9m
cmVlKFdFQktJVF9UWVBFX0NPTE9SLCBjb2xvcjIpOworCisgICAgY29sb3IgPSB3ZWJraXRfd2Vi
X3ZpZXdfZ2V0X2JhY2tncm91bmRfY29sb3IodGVzdC0+bV93ZWJWaWV3KTsKKyAgICBnX2Fzc2Vy
dF9jbXBpbnQod2Via2l0X2NvbG9yX2dldF9yZWRfY2hhbm5lbChjb2xvciksID09LCAwKTsKKyAg
ICBnX2Fzc2VydF9jbXBpbnQod2Via2l0X2NvbG9yX2dldF9ncmVlbl9jaGFubmVsKGNvbG9yKSwg
PT0sIDApOworICAgIGdfYXNzZXJ0X2NtcGludCh3ZWJraXRfY29sb3JfZ2V0X2JsdWVfY2hhbm5l
bChjb2xvciksID09LCAwKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQod2Via2l0X2NvbG9yX2dldF9h
bHBoYV9jaGFubmVsKGNvbG9yKSwgPT0sIDApOworICAgIGdfYm94ZWRfZnJlZShXRUJLSVRfVFlQ
RV9DT0xPUiwgY29sb3IpOwogCisjZW5kaWYKICAgICAvLyBUaGUgYWN0dWFsIHJlbmRlcmluZyBj
YW4ndCBiZSB0ZXN0ZWQgdXNpbmcgdW5pdCB0ZXN0cywgdXNlCiAgICAgLy8gTWluaUJyb3dzZXIg
LS1iZy1jb2xvcj0iPGNvbG9yLXZhbHVlPiIgZm9yIG1hbnVhbGx5IHRlc3RpbmcgdGhpcyBBUEku
CiB9CiAKKyNpZiBQTEFURk9STShHVEspCiBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld1ByZWZlcnJl
ZFNpemUoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7CiAgICAgdGVzdC0+bG9h
ZEh0bWwoIjxodG1sIHN0eWxlPSd3aWR0aDogMzI1cHg7IGhlaWdodDogNjE1cHgnPjwvaHRtbD4i
LCBudWxscHRyKTsKQEAgLTEzNjMsOCArMTM5OCw4IEBAIHZvaWQgYmVmb3JlQWxsKCkKICAgICBO
b3RpZmljYXRpb25XZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgIm5vdGlmaWNhdGlv
bi1pbml0aWFsLXBlcm1pc3Npb24tZGlzYWxsb3dlZCIsIHRlc3RXZWJWaWV3Tm90aWZpY2F0aW9u
SW5pdGlhbFBlcm1pc3Npb25EaXNhbGxvd2VkKTsKICNlbmRpZgogICAgIElzUGxheWluZ0F1ZGlv
V2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJpcy1wbGF5aW5nLWF1ZGlvIiwgdGVz
dFdlYlZpZXdJc1BsYXlpbmdBdWRpbyk7Ci0jaWYgUExBVEZPUk0oR1RLKQogICAgIFdlYlZpZXdU
ZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAiYmFja2dyb3VuZC1jb2xvciIsIHRlc3RXZWJWaWV3
QmFja2dyb3VuZENvbG9yKTsKKyNpZiBQTEFURk9STShHVEspCiAgICAgV2ViVmlld1Rlc3Q6OmFk
ZCgiV2ViS2l0V2ViVmlldyIsICJwcmVmZXJyZWQtc2l6ZSIsIHRlc3RXZWJWaWV3UHJlZmVycmVk
U2l6ZSk7CiAjZW5kaWYKICAgICBXZWJWaWV3VGl0bGVUZXN0OjphZGQoIldlYktpdFdlYlZpZXci
LCAidGl0bGUtY2hhbmdlIiwgdGVzdFdlYlZpZXdUaXRsZUNoYW5nZSk7Ci0tIAoyLjIwLjEKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>358799</attachid>
            <date>2019-01-10 08:54:03 -0800</date>
            <delta_ts>2019-01-13 08:01:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192305-20190110165401.patch</filename>
            <type>text/plain</type>
            <size>57000</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5ODI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmQ3YjE4ZWZiNzNhNmMz
OWY0MTdlNTkwNjNiMGFhNDUwMDdkYTBmYi4uMWE5ZjU5ZjQ2YmFmZDY3YmYwYWM5ZDZhMmNlMzhh
NDgzYWZkOTgxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE5LTAxLTEwICBQaGls
aXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbV1BFXSBBZGQg
QVBJIHRvIGFsbG93IGFwcGxpY2F0aW9uIHRvIGRpc2FibGUgYmFja2dyb3VuZCByZW5kZXJpbmcK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MjMwNQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkYXB0IHRo
ZSBGcmFtZVZpZXcgQVBJIHRvIGFsbG93IGEgZGVmYXVsdCBub24td2hpdGUgYmFja2dyb3VuZCBj
b2xvci4KKworICAgICAgICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWU6OmNyZWF0ZVZpZXcpOiBBIG5ldyBhcmd1bWVudCBpcyBub3cgZXhwZWN0ZWQsIHRvCisgICAg
ICAgIGNvbmZpZ3VyZSB0aGUgYmFja2dyb3VuZCBjb2xvciBvZiB0aGUgdmlldy4KKyAgICAgICAg
KiBwYWdlL0ZyYW1lLmg6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVWaWV3Ojp1cGRhdGVCYWNrZ3JvdW5kUmVjdXJzaXZlbHkpOiBBbGxvdyB0
aGUKKyAgICAgICAgZmFsbGJhY2sgYmFja2dyb3VuZCBjb2xvciB0byBiZSBub24td2hpdGUsIHRo
aXMgaXMgdXNlZCBvbmx5IGluCisgICAgICAgIG5vbi1kYXJrLW1vZGUtY3NzIGJ1aWxkIGNvbmZp
Z3VyYXRpb25zLgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3Lmg6CisKIDIwMTktMDEtMTAgIEFs
aWNpYSBCb3lhIEdhcmPDrWEgIDxhYm95YUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtNU0VdW0dT
dHJlYW1lcl0gVXNlIEdSZWZQdHIgaW4gQXBwZW5kUGlwZWxpbmU6OnB1c2hOZXdCdWZmZXIoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwppbmRleCBjZjIyYThjMDgwMzk2OWE3MjVjMTc3Njg0NDc5MjAyYWJhYWMzZjE1Li5lMWRi
MDBkMDJmODEzNDJhMzMyMTM2MTBiMTg1MDBjZjlmZGMxYzk3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDg0IEBACisyMDE5LTAxLTEwICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNv
bT4KKworICAgICAgICBbV1BFXSBBZGQgQVBJIHRvIGFsbG93IGFwcGxpY2F0aW9uIHRvIGRpc2Fi
bGUgYmFja2dyb3VuZCByZW5kZXJpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5MjMwNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogUGxhdGZvcm1XUEUuY21ha2U6IEFkZCBuZXcgV1BFIEFQSSBmb3Ig
V2ViS2l0Q29sb3IgYm94ZWQgdHlwZS4KKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpDb29y
ZGluYXRlZEdyYXBoaWNzU2NlbmU6OnBhaW50VG9DdXJyZW50R0xDb250ZXh0KToKKyAgICAgICAg
U2ltcGxpZmllZCBtZXRob2Qgc2lnbmF0dXJlIGFuZCBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAg
KiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaDoK
KyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3Iv
VGhyZWFkZWRDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6VGhyZWFkZWRDb21wb3Np
dG9yOjpzZXRCYWNrZ3JvdW5kQ29sb3IpOiBUaGUgd2VidmlldworICAgICAgICBiYWNrZ3JvdW5k
IGNvbG9yIGlzIG5vdyBjYXJyaWVkIG9uIHRocm91Z2ggdGhlIGNvbXBvc2l0b3IKKyAgICAgICAg
YXR0cmlidXRlcy4KKyAgICAgICAgKFdlYktpdDo6VGhyZWFkZWRDb21wb3NpdG9yOjpyZW5kZXJM
YXllclRyZWUpOiBEaXR0by4KKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90
aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmg6CisgICAgICAgICogU291cmNl
c1dQRS50eHQ6IEFkZCBuZXcgV1BFIEFQSSBmb3IgV2ViS2l0Q29sb3IgYm94ZWQgdHlwZS4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHA6IE1vdmUgR1RLIGlt
cGxlbWVudGF0aW9uIG9mCisgICAgICAgIHdlYmtpdF93ZWJfdmlld19zZXRfYmFja2dyb3VuZF9j
b2xvciB0byB0aGUgR1RLIGltcGxlbWVudGF0aW9uCisgICAgICAgIGZpbGUuCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0d0ay5jcHA6IERpdHRvLgorICAgICAgICAo
d2Via2l0X3dlYl92aWV3X3NldF9iYWNrZ3JvdW5kX2NvbG9yKToKKyAgICAgICAgKHdlYmtpdF93
ZWJfdmlld19nZXRfYmFja2dyb3VuZF9jb2xvcik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS93
cGUvV2ViS2l0Q29sb3IuY3BwOiBBZGRlZC4gVmVyeSBzaW1wbGUgd3JhcHBlciBhcm91bmQgV2Vi
Q29yZTo6Q29sb3IsIGJhc2ljYWxseS4KKyAgICAgICAgKF9XZWJLaXRDb2xvcjo6X1dlYktpdENv
bG9yKToKKyAgICAgICAgKF9XZWJLaXRDb2xvcjo6fl9XZWJLaXRDb2xvcik6CisgICAgICAgIChf
V2ViS2l0Q29sb3I6OmNvbG9yIGNvbnN0KToKKyAgICAgICAgKHdlYmtpdENvbG9yUmVmKToKKyAg
ICAgICAgKHdlYmtpdENvbG9yVW5yZWYpOgorICAgICAgICAod2Via2l0Q29sb3JGcm9tQ29sb3Ip
OgorICAgICAgICAod2Via2l0Q29sb3JHZXRDb2xvcik6CisgICAgICAgICh3ZWJraXRfY29sb3Jf
bmV3X2Zyb21fc3RyaW5nKToKKyAgICAgICAgKHdlYmtpdF9jb2xvcl9nZXRfcmVkX2NoYW5uZWwp
OgorICAgICAgICAod2Via2l0X2NvbG9yX2dldF9ncmVlbl9jaGFubmVsKToKKyAgICAgICAgKHdl
YmtpdF9jb2xvcl9nZXRfYmx1ZV9jaGFubmVsKToKKyAgICAgICAgKHdlYmtpdF9jb2xvcl9nZXRf
YWxwaGFfY2hhbm5lbCk6CisgICAgICAgIChXVEY6OnJlZkdQdHIpOgorICAgICAgICAoV1RGOjpk
ZXJlZkdQdHIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdENvbG9yLmg6IEFk
ZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdENvbG9yUHJpdmF0ZS5oOiBB
ZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3Lmg6IEltcGxl
bWVudCB3ZWJraXRfd2ViX3ZpZXdfc2V0X2JhY2tncm91bmRfY29sb3IgQVBJLgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXdXUEUuY3BwOiBEaXR0by4KKyAgICAgICAg
KHdlYmtpdF93ZWJfdmlld19zZXRfYmFja2dyb3VuZF9jb2xvcik6CisgICAgICAgICh3ZWJraXRf
d2ViX3ZpZXdfZ2V0X2JhY2tncm91bmRfY29sb3IpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
d3BlL2RvY3Mvd3BlLTAuMS1zZWN0aW9ucy50eHQ6IEFkZCBuZXcgc3ltYm9scy4KKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpzZXRCYWNrZ3JvdW5kQ29sb3IpOiBTZW5kIGJhY2tncm91bmQgY29sb3IKKyAgICAgICAg
Y2hhbmdlIG5vdGlmaWNhdGlvbiB0byB0aGUgV2ViUHJvY2Vzcy4KKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lmg6IEVuYWJsZSBiYWNrZ3JvdW5kIGNvbG9yIGNvbmZpZ3VyYXRpb24g
QVBJIGZvciBXUEUuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50
Ojp0cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKToKKyAgICAgICAgVXNlIGJhY2tncm91
bmQgY29sb3IgYXMgcHJvdmlkZWQgYnkgdGhlIFVJUHJvY2VzcyB3aGVuIGNyZWF0aW5nCisgICAg
ICAgIHRoZSBGcmFtZVZpZXcuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJh
dGVkRHJhd2luZ0FyZWEuY3BwOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZERyYXdpbmdB
cmVhOjpwYWdlQmFja2dyb3VuZENvbG9yQ2hhbmdlZCk6CisgICAgICAgIFByb3BhZ2F0ZSBiYWNr
Z3JvdW5kIGNvbG9yIG5vdGlmaWNhdGlvbiB0byB0aGUgTGF5ZXJUcmVlSG9zdC4gSXQKKyAgICAg
ICAgd2lsbCBlbmQgdXAgaW4gdGhlIFRocmVhZGVkQ29tcG9zaXRvciBmb3IgV1BFLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZERyYXdpbmdBcmVhLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0LmNwcDoKKyAgICAgICAgRW1wdHkgaW1wbGVtZW50YXRpb24gb2YgYmFja2dyb3Vu
ZCBjb2xvciBub3RpZmljYXRpb24gQVBJLgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExh
eWVyVHJlZUhvc3Q6OnBhZ2VCYWNrZ3JvdW5kQ29sb3JDaGFuZ2VkKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhv
c3QuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9U
aHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlRo
cmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpwYWdlQmFja2dyb3VuZENvbG9yQ2hhbmdl
ZCk6CisgICAgICAgIFByb3BhZ2F0ZSBiYWNrZ3JvdW5kIGNvbG9yIG5vdGlmaWNhdGlvbiB0byB0
aGUgVGhyZWFkZWRDb21wb3NpdG9yLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29y
ZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Lmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmg6CisgICAgICAgIChXZWJLaXQ6
OkRyYXdpbmdBcmVhOjpwYWdlQmFja2dyb3VuZENvbG9yQ2hhbmdlZCk6IG5ldyB2aXJ0dWFsCisg
ICAgICAgIG1ldGhvZCBmb3IgYmFja2dyb3VuZCBjb2xvciBub3RpZmljYXRpb25zLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9MYXllclRyZWVIb3N0Lmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRC
YWNrZ3JvdW5kQ29sb3IpOiBOZXcgQVBJIGZvciBiYWNrZ3JvdW5kCisgICAgICAgIGNvbG9yIGNv
bmZpZ3VyYXRpb24uIFByb3hpZXMgdG8gRnJhbWVWaWV3IGFuZCBEcmF3aW5nQXJlYS4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpiYWNrZ3JvdW5kQ29sb3IgY29uc3QpOiBSZWFkLW9ubHkgYWNjZXNzIHRvIHRoZSBjdXJy
ZW50IGJhY2tncm91bmQgY29sb3IuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UubWVzc2FnZXMuaW46IE5ldyBtZXNzYWdlIGZvcgorICAgICAgICBiYWNrZ3JvdW5kIGNvbG9y
IGNvbmZpZ3VyYXRpb24gc3VwcG9ydCBmcm9tIHRoZSBVSVByb2Nlc3MgdG8gdGhlCisgICAgICAg
IFdlYlByb2Nlc3MuCisKIDIwMTktMDEtMTAgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBh
cHBsZS5jb20+CiAKICAgICAgICAgUmVuYW1lIHNvbWUgZW50aXRsZW1lbnRzIGZpbGVzIHRvIGJl
IG1vcmUgY2xlYXIgYWJvdXQgdGhlaXIgdGFyZ2V0IHBsYXRmb3JtCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9D
aGFuZ2VMb2cKaW5kZXggMjY3MDQ5NzU0MTYwNWM2YTI3ODQyZjg3MDYwZjBjNDgxY2U4ZWY2Ni4u
ZDM2Y2U4NmNkZmEzZDVmZmNkYTI3NWU2N2Y0ZDNkZjZmYjJiMmZjOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE5LTAxLTEwICBQaGlsaXBwZSBOb3Jt
YW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbV1BFXSBBZGQgQVBJIHRvIGFs
bG93IGFwcGxpY2F0aW9uIHRvIGRpc2FibGUgYmFja2dyb3VuZCByZW5kZXJpbmcKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MjMwNQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UpOiBDcmVhdGUKKyAgICAgICAgRnJhbWVW
aWV3IHdpdGggZXhwbGljaXQgZGVmYXVsdCB3aGl0ZSBiYWNrZ3JvdW5kLiBUaGlzIHVzZWQgdG8g
YmUKKyAgICAgICAgaW1wbGljaXQuIEhlbmNlIG5vIGJlaGF2aW9yIGNoYW5nZSBleHBlY3RlZC4K
KwogMjAxOS0wMS0wOCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFN0b3AgdXNpbmcgTmV0d29ya1N0b3JhZ2VTZXNzaW9uIGluIFdlYlByb2Nl
c3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZS5jcHAKaW5kZXggNzNiYWZkYjQ2NjAyNzg1ZmY0MTQxNWZlMjY5OWEw
YWI3MTBhMTljYS4uYjRlMGEzNTA4OTc2YTA4MTRkYTQ3M2E2NzUyOTNmNmRmNzAwMTNjNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZS5jcHAKQEAgLTkwMiw3ICs5MDIsNyBAQCBSZWZQdHI8UmFuZ2U+IEZyYW1l
OjpyYW5nZUZvclBvaW50KGNvbnN0IEludFBvaW50JiBmcmFtZVBvaW50KQogICAgIHJldHVybiBu
dWxscHRyOwogfQogCi12b2lkIEZyYW1lOjpjcmVhdGVWaWV3KGNvbnN0IEludFNpemUmIHZpZXdw
b3J0U2l6ZSwgYm9vbCB0cmFuc3BhcmVudCwKK3ZvaWQgRnJhbWU6OmNyZWF0ZVZpZXcoY29uc3Qg
SW50U2l6ZSYgdmlld3BvcnRTaXplLCBib29sIHRyYW5zcGFyZW50LCBjb25zdCBDb2xvciYgYmFj
a2dyb3VuZENvbG9yLAogICAgIGNvbnN0IEludFNpemUmIGZpeGVkTGF5b3V0U2l6ZSwgY29uc3Qg
SW50UmVjdCYgZml4ZWRWaXNpYmxlQ29udGVudFJlY3QsCiAgICAgYm9vbCB1c2VGaXhlZExheW91
dCwgU2Nyb2xsYmFyTW9kZSBob3Jpem9udGFsU2Nyb2xsYmFyTW9kZSwgYm9vbCBob3Jpem9udGFs
TG9jaywKICAgICBTY3JvbGxiYXJNb2RlIHZlcnRpY2FsU2Nyb2xsYmFyTW9kZSwgYm9vbCB2ZXJ0
aWNhbExvY2spCkBAIC05MzMsNyArOTMzLDcgQEAgdm9pZCBGcmFtZTo6Y3JlYXRlVmlldyhjb25z
dCBJbnRTaXplJiB2aWV3cG9ydFNpemUsIGJvb2wgdHJhbnNwYXJlbnQsCiAKICAgICBzZXRWaWV3
KGZyYW1lVmlldy5jb3B5UmVmKCkpOwogCi0gICAgZnJhbWVWaWV3LT51cGRhdGVCYWNrZ3JvdW5k
UmVjdXJzaXZlbHkodHJhbnNwYXJlbnQpOworICAgIGZyYW1lVmlldy0+dXBkYXRlQmFja2dyb3Vu
ZFJlY3Vyc2l2ZWx5KHRyYW5zcGFyZW50LCBiYWNrZ3JvdW5kQ29sb3IpOwogCiAgICAgaWYgKGlz
TWFpbkZyYW1lKQogICAgICAgICBmcmFtZVZpZXctPnNldFBhcmVudFZpc2libGUodHJ1ZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lLmgKaW5kZXggOGFkMTNkNmUxY2NjMjdhNjM4MTU3ZDgxMWFiMWNmNDhjZTJlMjA2
OS4uZDExNzA4MzQxMmIyNTdjMGQwNDhjZWQ2MGY5ZTQ3YWUzY2QzMTU3OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWUuaApAQCAtMTI4LDcgKzEyOCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGluaXRXaXRoU2ltcGxlSFRNTERvY3VtZW50KGNvbnN0IFN0cmluZyYgc3R5bGUsIGNvbnN0IFVS
TCYpOwogI2VuZGlmCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWaWV3KFJlZlB0cjxGcmFt
ZVZpZXc+JiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY3JlYXRlVmlldyhjb25zdCBJbnRT
aXplJiwgYm9vbCB0cmFuc3BhcmVudCwKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNyZWF0ZVZp
ZXcoY29uc3QgSW50U2l6ZSYsIGJvb2wgdHJhbnNwYXJlbnQsIGNvbnN0IENvbG9yJiBiYWNrZ3Jv
dW5kQ29sb3IsCiAgICAgICAgIGNvbnN0IEludFNpemUmIGZpeGVkTGF5b3V0U2l6ZSwgY29uc3Qg
SW50UmVjdCYgZml4ZWRWaXNpYmxlQ29udGVudFJlY3QsCiAgICAgICAgIGJvb2wgdXNlRml4ZWRM
YXlvdXQgPSBmYWxzZSwgU2Nyb2xsYmFyTW9kZSA9IFNjcm9sbGJhckF1dG8sIGJvb2wgaG9yaXpv
bnRhbExvY2sgPSBmYWxzZSwKICAgICAgICAgU2Nyb2xsYmFyTW9kZSA9IFNjcm9sbGJhckF1dG8s
IGJvb2wgdmVydGljYWxMb2NrID0gZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmlu
ZGV4IGQyNWE3ZTYxYTdhZTM0Y2IyNTdlMTRmMGU1MjVjNzM5ODIyODJkZTkuLmZjNzYxMDQ5YzYw
MDU3YjI5NDQ1OGI1ZTllYjE2MzQ0ZTY2NTA2ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5j
cHAKQEAgLTMwMDAsMTIgKzMwMDAsMTMgQEAgdm9pZCBGcmFtZVZpZXc6OnNldEJhc2VCYWNrZ3Jv
dW5kQ29sb3IoY29uc3QgQ29sb3ImIGJhY2tncm91bmRDb2xvcikKICAgICByZW5kZXJWaWV3KCkt
PmNvbXBvc2l0b3IoKS5yb290QmFja2dyb3VuZENvbG9yT3JUcmFuc3BhcmVuY3lDaGFuZ2VkKCk7
CiB9CiAKLXZvaWQgRnJhbWVWaWV3Ojp1cGRhdGVCYWNrZ3JvdW5kUmVjdXJzaXZlbHkoYm9vbCB0
cmFuc3BhcmVudCkKK3ZvaWQgRnJhbWVWaWV3Ojp1cGRhdGVCYWNrZ3JvdW5kUmVjdXJzaXZlbHko
Ym9vbCB0cmFuc3BhcmVudCwgY29uc3QgQ29sb3ImIGRlZmF1bHRCYWNrZ3JvdW5kQ29sb3IpCiB7
CiAjaWYgRU5BQkxFKERBUktfTU9ERV9DU1MpCisgICAgVU5VU0VEX1BBUkFNKGRlZmF1bHRCYWNr
Z3JvdW5kQ29sb3IpOwogICAgIENvbG9yIGJhY2tncm91bmRDb2xvciA9IHRyYW5zcGFyZW50ID8g
Q29sb3I6OnRyYW5zcGFyZW50IDogUmVuZGVyVGhlbWU6OnNpbmdsZXRvbigpLnN5c3RlbUNvbG9y
KENTU1ZhbHVlQXBwbGVTeXN0ZW1Db250cm9sQmFja2dyb3VuZCwgc3R5bGVDb2xvck9wdGlvbnMo
KSk7CiAjZWxzZQotICAgIENvbG9yIGJhY2tncm91bmRDb2xvciA9IHRyYW5zcGFyZW50ID8gQ29s
b3I6OnRyYW5zcGFyZW50IDogQ29sb3I6OndoaXRlOworICAgIENvbG9yIGJhY2tncm91bmRDb2xv
ciA9IHRyYW5zcGFyZW50ID8gQ29sb3I6OnRyYW5zcGFyZW50IDogZGVmYXVsdEJhY2tncm91bmRD
b2xvcjsKICNlbmRpZgogCiAgICAgZm9yIChhdXRvKiBmcmFtZSA9IG1fZnJhbWUucHRyKCk7IGZy
YW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KG1fZnJhbWUucHRyKCkpKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuaAppbmRleCAyOTc2YjU2N2RiZjBhMTk3ODliNzZlNjA5YTEx
N2U2MmI1MTE4MjViLi44NzZlZjNjYTNmNDViYTNhNDk3NzhmNGEyZTFmMjQ4OGJhYWUyYmQzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTE5MCw3ICsxOTAsNyBAQCBwdWJsaWM6CiAKICAg
ICBXRUJDT1JFX0VYUE9SVCBDb2xvciBiYXNlQmFja2dyb3VuZENvbG9yKCkgY29uc3Q7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRCYXNlQmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJik7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVCYWNrZ3JvdW5kUmVjdXJzaXZlbHkoYm9v
bCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVCYWNrZ3JvdW5kUmVjdXJzaXZlbHko
Ym9vbCwgY29uc3QgQ29sb3ImIGJhY2tncm91bmRDb2xvciA9IENvbG9yOjp3aGl0ZSk7CiAKICAg
ICBlbnVtIEV4dGVuZGVkQmFja2dyb3VuZE1vZGVGbGFncyB7CiAgICAgICAgIEV4dGVuZGVkQmFj
a2dyb3VuZE1vZGVOb25lICAgICAgICAgID0gMCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm1XUEUuY21ha2UgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV1BFLmNtYWtlCmluZGV4
IDFmNjc1YzQ0ZTRjNzQ1OWMwMDVkZDY3ODFhZGI3NjJhNTZhN2FjMzcuLjNjZGVmZDJiZWQyMTcw
NWU0MzIzYjY1MzdmZGQ2ZGNmZWE5NzI0OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm1XUEUuY21ha2UKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdQRS5jbWFrZQpAQCAt
OTcsNiArOTcsNyBAQCBzZXQoV1BFX0FQSV9JTlNUQUxMRURfSEVBREVSUwogICAgICR7V0VCS0lU
X0RJUn0vVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0QmFja0ZvcndhcmRMaXN0LmgKICAgICAke1dF
QktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdEJhY2tGb3J3YXJkTGlzdEl0ZW0uaAog
ICAgICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0Q3JlZGVudGlhbC5oCisg
ICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRDb2xvci5oCiAgICAgJHtX
RUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRDb250ZXh0TWVudS5oCiAgICAgJHtX
RUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRDb250ZXh0TWVudUFjdGlvbnMuaAog
ICAgICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0Q29udGV4dE1lbnVJdGVt
LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcAppbmRleCAxYjJlZDFi
MDI3NWU2NWJiZTE5MTk1NTk5OGMyOTNhODNiYTY0NjA4Li5iOGFkZDRhNDJlYmMzM2U2MmU0Mzk0
YTA5ZDdiMzQ4Y2FjNjRhNGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2Nl
bmUuY3BwCkBAIC02NSw3ICs2NSw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjph
cHBseVN0YXRlQ2hhbmdlcyhjb25zdCBWZWN0b3I8Q29vcmRpbmF0ZWRHcmFwaGljCiAgICAgICAg
IGNvbW1pdFNjZW5lU3RhdGUoc3RhdGUubmljb3NpYSk7CiB9CiAKLXZvaWQgQ29vcmRpbmF0ZWRH
cmFwaGljc1NjZW5lOjpwYWludFRvQ3VycmVudEdMQ29udGV4dChjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgbWF0cml4LCBmbG9hdCBvcGFjaXR5LCBjb25zdCBGbG9hdFJlY3QmIGNsaXBSZWN0
LCBjb25zdCBDb2xvciYgYmFja2dyb3VuZENvbG9yLCBib29sIGRyYXdzQmFja2dyb3VuZCwgVGV4
dHVyZU1hcHBlcjo6UGFpbnRGbGFncyBQYWludEZsYWdzKQordm9pZCBDb29yZGluYXRlZEdyYXBo
aWNzU2NlbmU6OnBhaW50VG9DdXJyZW50R0xDb250ZXh0KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4JiBtYXRyaXgsIGNvbnN0IEZsb2F0UmVjdCYgY2xpcFJlY3QsIGNvbnN0IENvbG9yJiBiYWNr
Z3JvdW5kQ29sb3IsIGJvb2wgZHJhd3NCYWNrZ3JvdW5kLCBUZXh0dXJlTWFwcGVyOjpQYWludEZs
YWdzIFBhaW50RmxhZ3MpCiB7CiAgICAgdXBkYXRlU2NlbmVTdGF0ZSgpOwogCkBAIC03OCwxOCAr
NzgsMTUgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnBhaW50VG9DdXJyZW50R0xD
b250ZXh0KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cmkKICAgICBtX3RleHR1cmVNYXBwZXItPmJl
Z2luUGFpbnRpbmcoUGFpbnRGbGFncyk7CiAgICAgbV90ZXh0dXJlTWFwcGVyLT5iZWdpbkNsaXAo
VHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgY2xpcFJlY3QpOwogCi0gICAgaWYgKGRyYXdzQmFja2dy
b3VuZCkgewotICAgICAgICBSR0JBMzIgcmdiYSA9IG1ha2VSR0JBMzJGcm9tRmxvYXRzKGJhY2tn
cm91bmRDb2xvci5yZWQoKSwKLSAgICAgICAgICAgIGJhY2tncm91bmRDb2xvci5ncmVlbigpLCBi
YWNrZ3JvdW5kQ29sb3IuYmx1ZSgpLAotICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yLmFscGhh
KCkgKiBvcGFjaXR5KTsKLSAgICAgICAgbV90ZXh0dXJlTWFwcGVyLT5kcmF3U29saWRDb2xvcihj
bGlwUmVjdCwgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgQ29sb3IocmdiYSkpOwotICAgIH0gZWxz
ZQotICAgICAgICBtX3RleHR1cmVNYXBwZXItPmNsZWFyQ29sb3IobV92aWV3QmFja2dyb3VuZENv
bG9yKTsKKyAgICBhdXRvJiBjb2xvciA9IGRyYXdzQmFja2dyb3VuZCA/IGJhY2tncm91bmRDb2xv
ciA6IG1fdmlld0JhY2tncm91bmRDb2xvcjsKKyAgICBtX3RleHR1cmVNYXBwZXItPmNsZWFyQ29s
b3IoY29sb3IpOwogCi0gICAgaWYgKGN1cnJlbnRSb290TGF5ZXItPm9wYWNpdHkoKSAhPSBvcGFj
aXR5IHx8IGN1cnJlbnRSb290TGF5ZXItPnRyYW5zZm9ybSgpICE9IG1hdHJpeCkgeworICAgIGZs
b2F0IG9wYWNpdHkgPSBkcmF3c0JhY2tncm91bmQgPyBjb2xvci5hbHBoYUFzRmxvYXQoKSA6IDE7
CisgICAgaWYgKCFkcmF3c0JhY2tncm91bmQgJiYgKGN1cnJlbnRSb290TGF5ZXItPm9wYWNpdHko
KSAhPSBvcGFjaXR5KSkKICAgICAgICAgY3VycmVudFJvb3RMYXllci0+c2V0T3BhY2l0eShvcGFj
aXR5KTsKKworICAgIGlmIChjdXJyZW50Um9vdExheWVyLT50cmFuc2Zvcm0oKSAhPSBtYXRyaXgp
CiAgICAgICAgIGN1cnJlbnRSb290TGF5ZXItPnNldFRyYW5zZm9ybShtYXRyaXgpOwotICAgIH0K
IAogICAgIGN1cnJlbnRSb290TGF5ZXItPnBhaW50KCk7CiAgICAgbV9mcHNDb3VudGVyLnVwZGF0
ZUZQU0FuZERpc3BsYXkoKm1fdGV4dHVyZU1hcHBlciwgY2xpcFJlY3QubG9jYXRpb24oKSwgbWF0
cml4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5oCmluZGV4IGQ0YmI1ODI2
OGZlNzUyMjE2MTM4ZDU2NDExN2I0Yjc2ZWM4YTlmOTMuLmQ2OGY0Zjk5MDJiY2ZkYmE4OGFlYjk0
NTRhYTU0YWU0ODE4Yjc3YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmgKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUu
aApAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q29vcmRpbmF0ZWRHcmFw
aGljc1NjZW5lKCk7CiAKICAgICB2b2lkIGFwcGx5U3RhdGVDaGFuZ2VzKGNvbnN0IFZlY3RvcjxX
ZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU3RhdGU+Jik7Ci0gICAgdm9pZCBwYWludFRvQ3Vy
cmVudEdMQ29udGV4dChjb25zdCBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0
LCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpDb2xvciYgYmFja2dy
b3VuZENvbG9yLCBib29sIGRyYXdzQmFja2dyb3VuZCwgV2ViQ29yZTo6VGV4dHVyZU1hcHBlcjo6
UGFpbnRGbGFncyA9IDApOworICAgIHZvaWQgcGFpbnRUb0N1cnJlbnRHTENvbnRleHQoY29uc3Qg
V2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3Qm
LCBjb25zdCBXZWJDb3JlOjpDb2xvciYgYmFja2dyb3VuZENvbG9yLCBib29sIGRyYXdzQmFja2dy
b3VuZCwgV2ViQ29yZTo6VGV4dHVyZU1hcHBlcjo6UGFpbnRGbGFncyA9IDApOwogICAgIHZvaWQg
ZGV0YWNoKCk7CiAKICAgICAvLyBUaGUgcGFpbnRpbmcgdGhyZWFkIG11c3QgbG9jayB0aGUgbWFp
biB0aHJlYWQgdG8gdXNlIGJlbG93IHR3byBtZXRob2RzLCBiZWNhdXNlIHR3byBtZXRob2RzIGFj
Y2VzcyBtZW1iZXJzIHRoYXQgdGhlIG1haW4gdGhyZWFkIG1hbmFnZXMuIFNlZSBtX2NsaWVudC4K
QEAgLTExMyw3ICsxMTMsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3Jl
OjpUZXh0dXJlTWFwcGVyTGF5ZXI+IG1fcm9vdExheWVyOwogCiAgICAgTmljb3NpYTo6UGxhdGZv
cm1MYXllcjo6TGF5ZXJJRCBtX3Jvb3RMYXllcklEIHsgMCB9OwotICAgIFdlYkNvcmU6OkNvbG9y
IG1fdmlld0JhY2tncm91bmRDb2xvciB7IFdlYkNvcmU6OkNvbG9yOjp3aGl0ZSB9OworICAgIFdl
YkNvcmU6OkNvbG9yIG1fdmlld0JhY2tncm91bmRDb2xvciB7IFdlYkNvcmU6OkNvbG9yOjp0cmFu
c3BhcmVudCB9OwogCiAgICAgV2ViQ29yZTo6VGV4dHVyZU1hcHBlckZQU0NvdW50ZXIgbV9mcHND
b3VudGVyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9U
aHJlYWRlZENvbXBvc2l0b3IuY3BwCmluZGV4IDc1MjJmODRlYThmOGE2ODIzYmI5MjFmZmMzZjA1
Y2ZiZDg3ZWI1ODEuLmRkYmVmNTZmNzU2ODc1YTQ2Yzc4NmMyZDUwOGJlMjE3ZmRhODZiNDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFk
ZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21w
b3NpdG9yLmNwcApAQCAtMTYzLDYgKzE2MywxMyBAQCB2b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6
c2V0RHJhd3NCYWNrZ3JvdW5kKGJvb2wgZHJhd3NCYWNrZ3JvdW5kKQogICAgIG1fY29tcG9zaXRp
bmdSdW5Mb29wLT5zY2hlZHVsZVVwZGF0ZSgpOwogfQogCit2b2lkIFRocmVhZGVkQ29tcG9zaXRv
cjo6c2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJiBiYWNrZ3JvdW5kQ29sb3IpCit7Cisg
ICAgTG9ja0hvbGRlciBsb2NrZXIobV9hdHRyaWJ1dGVzLmxvY2spOworICAgIG1fYXR0cmlidXRl
cy5iYWNrZ3JvdW5kQ29sb3IgPSBiYWNrZ3JvdW5kQ29sb3I7CisgICAgbV9jb21wb3NpdGluZ1J1
bkxvb3AtPnNjaGVkdWxlVXBkYXRlKCk7Cit9CisKIHZvaWQgVGhyZWFkZWRDb21wb3NpdG9yOjp1
cGRhdGVWaWV3cG9ydCgpCiB7CiAgICAgbV9jb21wb3NpdGluZ1J1bkxvb3AtPnNjaGVkdWxlVXBk
YXRlKCk7CkBAIC0xOTYsNiArMjAzLDggQEAgdm9pZCBUaHJlYWRlZENvbXBvc2l0b3I6OnJlbmRl
ckxheWVyVHJlZSgpCiAgICAgZmxvYXQgc2NhbGVGYWN0b3I7CiAgICAgYm9vbCBkcmF3c0JhY2tn
cm91bmQ7CiAgICAgYm9vbCBuZWVkc1Jlc2l6ZTsKKyAgICBXZWJDb3JlOjpDb2xvciBiYWNrZ3Jv
dW5kQ29sb3I7CisKICAgICBWZWN0b3I8V2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1N0YXRl
PiBzdGF0ZXM7CiAKICAgICB7CkBAIC0yMDUsNiArMjE0LDcgQEAgdm9pZCBUaHJlYWRlZENvbXBv
c2l0b3I6OnJlbmRlckxheWVyVHJlZSgpCiAgICAgICAgIHNjYWxlRmFjdG9yID0gbV9hdHRyaWJ1
dGVzLnNjYWxlRmFjdG9yOwogICAgICAgICBkcmF3c0JhY2tncm91bmQgPSBtX2F0dHJpYnV0ZXMu
ZHJhd3NCYWNrZ3JvdW5kOwogICAgICAgICBuZWVkc1Jlc2l6ZSA9IG1fYXR0cmlidXRlcy5uZWVk
c1Jlc2l6ZTsKKyAgICAgICAgYmFja2dyb3VuZENvbG9yID0gbV9hdHRyaWJ1dGVzLmJhY2tncm91
bmRDb2xvcjsKIAogICAgICAgICBzdGF0ZXMgPSBXVEZNb3ZlKG1fYXR0cmlidXRlcy5zdGF0ZXMp
OwogCkBAIC0yNTMsOCArMjYzLDggQEAgdm9pZCBUaHJlYWRlZENvbXBvc2l0b3I6OnJlbmRlckxh
eWVyVHJlZSgpCiAgICAgfQogCiAgICAgbV9zY2VuZS0+YXBwbHlTdGF0ZUNoYW5nZXMoc3RhdGVz
KTsKLSAgICBtX3NjZW5lLT5wYWludFRvQ3VycmVudEdMQ29udGV4dCh2aWV3cG9ydFRyYW5zZm9y
bSwgMSwgRmxvYXRSZWN0IHsgRmxvYXRQb2ludCB7IH0sIHZpZXdwb3J0U2l6ZSB9LAotICAgICAg
ICBDb2xvcjo6dHJhbnNwYXJlbnQsICFkcmF3c0JhY2tncm91bmQsIG1fcGFpbnRGbGFncyk7Cisg
ICAgbV9zY2VuZS0+cGFpbnRUb0N1cnJlbnRHTENvbnRleHQodmlld3BvcnRUcmFuc2Zvcm0sIEZs
b2F0UmVjdCB7IEZsb2F0UG9pbnQgeyB9LCB2aWV3cG9ydFNpemUgfSwKKyAgICAgICAgYmFja2dy
b3VuZENvbG9yLCBkcmF3c0JhY2tncm91bmQsIG1fcGFpbnRGbGFncyk7CiAKICAgICBtX2NvbnRl
eHQtPnN3YXBCdWZmZXJzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5o
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBv
c2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmgKaW5kZXggNmQ3MDUzODUwZGFkNTdhMTY0ZjE5ZTkx
ODZmNGZhMmE2YTg2NmFmZi4uYmM5YWM2MTZlMzgxMjc4MDQwN2I3Yzk2YzIxZTJkOWY3ZGE3Y2M1
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90
aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmgKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRD
b21wb3NpdG9yLmgKQEAgLTcxLDYgKzcxLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U2Nyb2xs
UG9zaXRpb24oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBmbG9hdCBzY2FsZSk7CiAgICAgdm9p
ZCBzZXRWaWV3cG9ydFNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIGZsb2F0IHNjYWxlKTsK
ICAgICB2b2lkIHNldERyYXdzQmFja2dyb3VuZChib29sKTsKKyAgICB2b2lkIHNldEJhY2tncm91
bmRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYpOwogCiAgICAgdm9pZCB1cGRhdGVTY2VuZVN0
YXRlKGNvbnN0IFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZSYpOwogCkBAIC0xMTQs
NyArMTE1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgZmxvYXQgc2NhbGVGYWN0b3IgeyAxIH07CiAg
ICAgICAgIGJvb2wgZHJhd3NCYWNrZ3JvdW5kIHsgdHJ1ZSB9OwogICAgICAgICBib29sIG5lZWRz
UmVzaXplIHsgZmFsc2UgfTsKLQorICAgICAgICBXZWJDb3JlOjpDb2xvciBiYWNrZ3JvdW5kQ29s
b3I7CiAgICAgICAgIFZlY3RvcjxXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU3RhdGU+IHN0
YXRlczsKIAogICAgICAgICBib29sIGNsaWVudFJlbmRlcnNOZXh0RnJhbWUgeyBmYWxzZSB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzV1BFLnR4dCBiL1NvdXJjZS9XZWJLaXQv
U291cmNlc1dQRS50eHQKaW5kZXggNTExOWNhZTU2YmMwNmYyMjk3M2Y2NzMzYzA4NDM3YWIyZTNl
M2UxMi4uMWE4MjBhODViNTFhNTUwN2Q4ZDZiMzA5ZjkwZjU4MzQxZTY4MDI1MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzV1BFLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXNXUEUudHh0CkBAIC0xNjgsNiArMTY4LDcgQEAgVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdp
bmRvd1Byb3BlcnRpZXMuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS93cGUvQ29tcG9zaXRp
bmdNYW5hZ2VyUHJveHkuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS93cGUvUGFnZUNsaWVu
dEltcGwuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS93cGUvU2Nyb2xsR2VzdHVyZUNvbnRy
b2xsZXIuY3BwIEBuby11bmlmeQorVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0Q29sb3IuY3BwIEBu
by11bmlmeQogVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0U2NyaXB0RGlhbG9nV1BFLmNwcCBAbm8t
dW5pZnkKIFVJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXdCYWNrZW5kLmNwcCBAbm8tdW5p
ZnkKIFVJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXdXUEUuY3BwIEBuby11bmlmeQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcApp
bmRleCA2NzIwMWQ4OWVhYTFmM2YyMGRmOGI5MWYxZGExNWQ5YzI1OGI2MzhmLi43YThhMTBmNWMx
YzgwMTU5YTI4YTc2MTM2NGEyNjIwNTllZWM3YzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcApAQCAtMzk2OSw3NCArMzk2OSw2
IEBAIHZvaWQgd2Via2l0V2ViVmlld1dlYlByb2Nlc3NUZXJtaW5hdGVkKFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcsIFdlYktpdFdlYlByb2Nlc3NUCiAgICAgZ19zaWduYWxfZW1pdCh3ZWJWaWV3LCBz
aWduYWxzW1dFQl9QUk9DRVNTX1RFUk1JTkFURURdLCAwLCByZWFzb24pOwogfQogCi0jaWYgUExB
VEZPUk0oR1RLKQotLyoqCi0gKiB3ZWJraXRfd2ViX3ZpZXdfc2V0X2JhY2tncm91bmRfY29sb3I6
Ci0gKiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZpZXcKLSAqIEByZ2JhOiBhICNHZGtSR0JBCi0g
KgotICogU2V0cyB0aGUgY29sb3IgdGhhdCB3aWxsIGJlIHVzZWQgdG8gZHJhdyB0aGUgQHdlYl92
aWV3IGJhY2tncm91bmQgYmVmb3JlCi0gKiB0aGUgYWN0dWFsIGNvbnRlbnRzIGFyZSByZW5kZXJl
ZC4gTm90ZSB0aGF0IGlmIHRoZSB3ZWIgcGFnZSBsb2FkZWQgaW4gQHdlYl92aWV3Ci0gKiBzcGVj
aWZpZXMgYSBiYWNrZ3JvdW5kIGNvbG9yLCBpdCB3aWxsIHRha2UgcHJlY2VkZW5jZSBvdmVyIHRo
ZSBAcmdiYSBjb2xvci4KLSAqIEJ5IGRlZmF1bHQgdGhlIEB3ZWJfdmlldyBiYWNrZ3JvdW5kIGNv
bG9yIGlzIG9wYXF1ZSB3aGl0ZS4KLSAqIE5vdGUgdGhhdCB0aGUgcGFyZW50IHdpbmRvdyBtdXN0
IGhhdmUgYSBSR0JBIHZpc3VhbCBhbmQKLSAqICNHdGtXaWRnZXQ6YXBwLXBhaW50YWJsZSBwcm9w
ZXJ0eSBzZXQgdG8gJVRSVUUgZm9yIGJhY2tncm91bmRzIGNvbG9ycyB0byB3b3JrLgotICoKLSAq
IDxpbmZvcm1hbGV4YW1wbGU+PHByb2dyYW1saXN0aW5nPgotICogc3RhdGljIHZvaWQgYnJvd3Nl
cl93aW5kb3dfc2V0X2JhY2tncm91bmRfY29sb3IgKEJyb3dzZXJXaW5kb3cgKndpbmRvdywKLSAq
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
ZGtSR0JBICpyZ2JhKQotICogewotICogICAgIFdlYktpdFdlYlZpZXcgKndlYl92aWV3OwotICog
ICAgIEdka1NjcmVlbiAqc2NyZWVuID0gZ3RrX3dpbmRvd19nZXRfc2NyZWVuIChHVEtfV0lORE9X
ICh3aW5kb3cpKTsKLSAqICAgICBHZGtWaXN1YWwgKnJnYmFfdmlzdWFsID0gZ2RrX3NjcmVlbl9n
ZXRfcmdiYV92aXN1YWwgKHNjcmVlbik7Ci0gKgotICogICAgIGlmICghcmdiYV92aXN1YWwpCi0g
KiAgICAgICAgICByZXR1cm47Ci0gKgotICogICAgIGd0a193aWRnZXRfc2V0X3Zpc3VhbCAoR1RL
X1dJREdFVCAod2luZG93KSwgcmdiYV92aXN1YWwpOwotICogICAgIGd0a193aWRnZXRfc2V0X2Fw
cF9wYWludGFibGUgKEdUS19XSURHRVQgKHdpbmRvdyksIFRSVUUpOwotICoKLSAqICAgICB3ZWJf
dmlldyA9IGJyb3dzZXJfd2luZG93X2dldF93ZWJfdmlldyAod2luZG93KTsKLSAqICAgICB3ZWJr
aXRfd2ViX3ZpZXdfc2V0X2JhY2tncm91bmRfY29sb3IgKHdlYl92aWV3LCByZ2JhKTsKLSAqIH0K
LSAqIDwvcHJvZ3JhbWxpc3Rpbmc+PC9pbmZvcm1hbGV4YW1wbGU+Ci0gKgotICogU2luY2U6IDIu
OAotICovCi12b2lkIHdlYmtpdF93ZWJfdmlld19zZXRfYmFja2dyb3VuZF9jb2xvcihXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBHZGtSR0JBKiByZ2JhKQotewotICAgIGdfcmV0dXJuX2lm
X2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpKTsKLSAgICBnX3JldHVybl9pZl9mYWls
KHJnYmEpOwotCi0gICAgQ29sb3IgY29sb3IoKnJnYmEpOwotICAgIGF1dG8mIHBhZ2UgPSBnZXRQ
YWdlKHdlYlZpZXcpOwotICAgIGlmIChwYWdlLmJhY2tncm91bmRDb2xvcigpID09IGNvbG9yKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBwYWdlLnNldEJhY2tncm91bmRDb2xvcihjb2xvcik7Ci0g
ICAgcGFnZS5zZXREcmF3c0JhY2tncm91bmQoY29sb3IgPT0gQ29sb3I6OndoaXRlKTsKLX0KLQot
LyoqCi0gKiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2JhY2tncm91bmRfY29sb3I6Ci0gKiBAd2ViX3Zp
ZXc6IGEgI1dlYktpdFdlYlZpZXcKLSAqIEByZ2JhOiAob3V0KTogYSAjR2RrUkdCQSB0byBmaWxs
IGluIHdpdGggdGhlIGJhY2tncm91bmQgY29sb3IKLSAqCi0gKiBHZXRzIHRoZSBjb2xvciB0aGF0
IGlzIHVzZWQgdG8gZHJhdyB0aGUgQHdlYl92aWV3IGJhY2tncm91bmQgYmVmb3JlCi0gKiB0aGUg
YWN0dWFsIGNvbnRlbnRzIGFyZSByZW5kZXJlZC4KLSAqIEZvciBtb3JlIGluZm9ybWF0aW9uIHNl
ZSBhbHNvIHdlYmtpdF93ZWJfdmlld19zZXRfYmFja2dyb3VuZF9jb2xvcigpCi0gKgotICogU2lu
Y2U6IDIuOAotICovCi12b2lkIHdlYmtpdF93ZWJfdmlld19nZXRfYmFja2dyb3VuZF9jb2xvcihX
ZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBHZGtSR0JBKiByZ2JhKQotewotICAgIGdfcmV0dXJuX2lm
X2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpKTsKLSAgICBnX3JldHVybl9pZl9mYWls
KHJnYmEpOwotCi0gICAgKnJnYmEgPSBnZXRQYWdlKHdlYlZpZXcpLmJhY2tncm91bmRDb2xvcigp
OwotfQotI2VuZGlmIC8vIFBMQVRGT1JNKEdUSykKLQogLyoKICAqIHdlYmtpdF93ZWJfdmlld19p
c19lZGl0YWJsZToKICAqIEB3ZWJfdmlldzogYSAjV2ViS2l0V2ViVmlldwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3R3RrLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0d0ay5jcHAKaW5kZXgg
YmM4MjE3OTkxMjgyNmFiNDdhZjdjOTY1NzVlMWJhOGJhNDI2ZTg4MS4uZWQ1NjllNjJkYzBiNTQ5
YjMxYTdjZGQ3NDA3M2IyNjRjYjg0YmY1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdHdGsuY3BwCkBAIC0yNCw2ICsyNCw3IEBACiAj
aW5jbHVkZSAiV2ViS2l0U2NyaXB0RGlhbG9nSW1wbC5oIgogI2luY2x1ZGUgIldlYktpdFdlYlZp
ZXdCYXNlUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYlZpZXdQcml2YXRlLmgiCisjaW5j
bHVkZSA8V2ViQ29yZS9Db2xvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3RrVXRpbGl0aWVzLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybURpc3BsYXkuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1BsYXRmb3JtU2NyZWVuLmg+CkBAIC0zNTksMyArMzYwLDcxIEBAIEd0a1dpZGdldCogd2Via2l0
X3dlYl92aWV3X25ld193aXRoX3VzZXJfY29udGVudF9tYW5hZ2VyKFdlYktpdFVzZXJDb250ZW50
TWFuYWdlCiAKICAgICByZXR1cm4gR1RLX1dJREdFVChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVf
V0VCX1ZJRVcsICJ1c2VyLWNvbnRlbnQtbWFuYWdlciIsIHVzZXJDb250ZW50TWFuYWdlciwgbnVs
bHB0cikpOwogfQorCisvKioKKyAqIHdlYmtpdF93ZWJfdmlld19zZXRfYmFja2dyb3VuZF9jb2xv
cjoKKyAqIEB3ZWJfdmlldzogYSAjV2ViS2l0V2ViVmlldworICogQHJnYmE6IGEgI0dka1JHQkEK
KyAqCisgKiBTZXRzIHRoZSBjb2xvciB0aGF0IHdpbGwgYmUgdXNlZCB0byBkcmF3IHRoZSBAd2Vi
X3ZpZXcgYmFja2dyb3VuZCBiZWZvcmUKKyAqIHRoZSBhY3R1YWwgY29udGVudHMgYXJlIHJlbmRl
cmVkLiBOb3RlIHRoYXQgaWYgdGhlIHdlYiBwYWdlIGxvYWRlZCBpbiBAd2ViX3ZpZXcKKyAqIHNw
ZWNpZmllcyBhIGJhY2tncm91bmQgY29sb3IsIGl0IHdpbGwgdGFrZSBwcmVjZWRlbmNlIG92ZXIg
dGhlIEByZ2JhIGNvbG9yLgorICogQnkgZGVmYXVsdCB0aGUgQHdlYl92aWV3IGJhY2tncm91bmQg
Y29sb3IgaXMgb3BhcXVlIHdoaXRlLgorICogTm90ZSB0aGF0IHRoZSBwYXJlbnQgd2luZG93IG11
c3QgaGF2ZSBhIFJHQkEgdmlzdWFsIGFuZAorICogI0d0a1dpZGdldDphcHAtcGFpbnRhYmxlIHBy
b3BlcnR5IHNldCB0byAlVFJVRSBmb3IgYmFja2dyb3VuZHMgY29sb3JzIHRvIHdvcmsuCisgKgor
ICogPGluZm9ybWFsZXhhbXBsZT48cHJvZ3JhbWxpc3Rpbmc+CisgKiBzdGF0aWMgdm9pZCBicm93
c2VyX3dpbmRvd19zZXRfYmFja2dyb3VuZF9jb2xvciAoQnJvd3NlcldpbmRvdyAqd2luZG93LAor
ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdka1JHQkEgKnJnYmEpCisgKiB7CisgKiAgICAgV2ViS2l0V2ViVmlldyAqd2ViX3ZpZXc7Cisg
KiAgICAgR2RrU2NyZWVuICpzY3JlZW4gPSBndGtfd2luZG93X2dldF9zY3JlZW4gKEdUS19XSU5E
T1cgKHdpbmRvdykpOworICogICAgIEdka1Zpc3VhbCAqcmdiYV92aXN1YWwgPSBnZGtfc2NyZWVu
X2dldF9yZ2JhX3Zpc3VhbCAoc2NyZWVuKTsKKyAqCisgKiAgICAgaWYgKCFyZ2JhX3Zpc3VhbCkK
KyAqICAgICAgICAgIHJldHVybjsKKyAqCisgKiAgICAgZ3RrX3dpZGdldF9zZXRfdmlzdWFsIChH
VEtfV0lER0VUICh3aW5kb3cpLCByZ2JhX3Zpc3VhbCk7CisgKiAgICAgZ3RrX3dpZGdldF9zZXRf
YXBwX3BhaW50YWJsZSAoR1RLX1dJREdFVCAod2luZG93KSwgVFJVRSk7CisgKgorICogICAgIHdl
Yl92aWV3ID0gYnJvd3Nlcl93aW5kb3dfZ2V0X3dlYl92aWV3ICh3aW5kb3cpOworICogICAgIHdl
YmtpdF93ZWJfdmlld19zZXRfYmFja2dyb3VuZF9jb2xvciAod2ViX3ZpZXcsIHJnYmEpOworICog
fQorICogPC9wcm9ncmFtbGlzdGluZz48L2luZm9ybWFsZXhhbXBsZT4KKyAqCisgKiBTaW5jZTog
Mi44CisgKi8KK3ZvaWQgd2Via2l0X3dlYl92aWV3X3NldF9iYWNrZ3JvdW5kX2NvbG9yKFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IEdka1JHQkEqIHJnYmEpCit7CisgICAgZ19yZXR1cm5f
aWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldykpOworICAgIGdfcmV0dXJuX2lmX2Zh
aWwocmdiYSk7CisKKyAgICBXZWJDb3JlOjpDb2xvciBjb2xvcigqcmdiYSk7CisgICAgYXV0byYg
cGFnZSA9ICp3ZWJraXRXZWJWaWV3QmFzZUdldFBhZ2UocmVpbnRlcnByZXRfY2FzdDxXZWJLaXRX
ZWJWaWV3QmFzZSo+KHdlYlZpZXcpKTsKKyAgICBpZiAocGFnZS5iYWNrZ3JvdW5kQ29sb3IoKSA9
PSBjb2xvcikKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFjb2xvci5pc09wYXF1ZSgpKQor
ICAgICAgICBwYWdlLnNldERyYXdzQmFja2dyb3VuZChmYWxzZSk7CisgICAgcGFnZS5zZXRCYWNr
Z3JvdW5kQ29sb3IoY29sb3IpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfdmlld19nZXRfYmFj
a2dyb3VuZF9jb2xvcjoKKyAqIEB3ZWJfdmlldzogYSAjV2ViS2l0V2ViVmlldworICogQHJnYmE6
IChvdXQpOiBhICNHZGtSR0JBIHRvIGZpbGwgaW4gd2l0aCB0aGUgYmFja2dyb3VuZCBjb2xvcgor
ICoKKyAqIEdldHMgdGhlIGNvbG9yIHRoYXQgaXMgdXNlZCB0byBkcmF3IHRoZSBAd2ViX3ZpZXcg
YmFja2dyb3VuZCBiZWZvcmUKKyAqIHRoZSBhY3R1YWwgY29udGVudHMgYXJlIHJlbmRlcmVkLgor
ICogRm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlIGFsc28gd2Via2l0X3dlYl92aWV3X3NldF9iYWNr
Z3JvdW5kX2NvbG9yKCkKKyAqCisgKiBTaW5jZTogMi44CisgKi8KK3ZvaWQgd2Via2l0X3dlYl92
aWV3X2dldF9iYWNrZ3JvdW5kX2NvbG9yKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIEdka1JHQkEq
IHJnYmEpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmll
dykpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwocmdiYSk7CisKKyAgICBhdXRvJiBwYWdlID0gKndl
YmtpdFdlYlZpZXdCYXNlR2V0UGFnZShyZWludGVycHJldF9jYXN0PFdlYktpdFdlYlZpZXdCYXNl
Kj4od2ViVmlldykpOworICAgICpyZ2JhID0gcGFnZS5iYWNrZ3JvdW5kQ29sb3IoKTsKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0Q29sb3IuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRDb2xvci5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGE0YTZlMTMxOTk3OWU0MzI5OWJkNzYyMDI1OTdmZWM4ZGJkZjM2ZAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0Q29sb3IuY3Bw
CkBAIC0wLDAgKzEsMTc5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IElnYWxpYSBTLkwu
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJLaXRDb2xvci5oIgorCisjaW5jbHVk
ZSAiV2ViS2l0Q29sb3JQcml2YXRlLmgiCisKKy8qKgorICogU0VDVElPTjogV2ViS2l0Q29sb3IK
KyAqIEBTaG9ydF9kZXNjcmlwdGlvbjogQSB3ZWIgdmlldyBiYWNrZ3JvdW5kIGNvbG9yCisgKiBA
VGl0bGU6IFdlYktpdENvbG9yCisgKiBAU2VlX2Fsc286ICNXZWJLaXRXZWJWaWV3LgorICoKKyAq
IEEgV2ViS2l0Q29sb3IgaXMgYSBib3hlZCB0eXBlIHdyYXBwaW5nIGEgV2ViQ29yZSBjb2xvci4K
KyAqCisgKiBTaW5jZTogMi4yNAorICovCisKK3N0cnVjdCBfV2ViS2l0Q29sb3IgeworICAgIF9X
ZWJLaXRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYgY29sb3IpCisgICAgICAgIDogbV9jb2xv
cihjb2xvcikKKyAgICB7CisgICAgfQorCisgICAgfl9XZWJLaXRDb2xvcigpCisgICAgeworICAg
IH0KKworICAgIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1f
Y29sb3I7IH0KKworICAgIFdlYkNvcmU6OkNvbG9yIG1fY29sb3I7CisgICAgaW50IHJlZmVyZW5j
ZUNvdW50IHsgMSB9OworfTsKKworc3RhdGljIFdlYktpdENvbG9yKiB3ZWJraXRDb2xvclJlZihX
ZWJLaXRDb2xvciogY29sb3IpCit7CisgICAgQVNTRVJUKGNvbG9yKTsKKyAgICBnX2F0b21pY19p
bnRfaW5jKCZjb2xvci0+cmVmZXJlbmNlQ291bnQpOworICAgIHJldHVybiBjb2xvcjsKK30KKwor
R19ERUZJTkVfQk9YRURfVFlQRShXZWJLaXRDb2xvciwgd2Via2l0X2NvbG9yLCB3ZWJraXRDb2xv
clJlZiwgd2Via2l0Q29sb3JVbnJlZikKKwordm9pZCB3ZWJraXRDb2xvclVucmVmKFdlYktpdENv
bG9yKiBjb2xvcikKK3sKKyAgICBBU1NFUlQoY29sb3IpOworICAgIGlmIChnX2F0b21pY19pbnRf
ZGVjX2FuZF90ZXN0KCZjb2xvci0+cmVmZXJlbmNlQ291bnQpKSB7CisgICAgICAgIGNvbG9yLT5+
V2ViS2l0Q29sb3IoKTsKKyAgICAgICAgZmFzdEZyZWUoY29sb3IpOworICAgIH0KK30KKworV2Vi
S2l0Q29sb3IqIHdlYmtpdENvbG9yRnJvbUNvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xv
cikKK3sKKyAgICBhdXRvKiByZXN1bHQgPSBzdGF0aWNfY2FzdDxXZWJLaXRDb2xvcio+KGZhc3RN
YWxsb2Moc2l6ZW9mKFdlYktpdENvbG9yKSkpOworICAgIG5ldyAocmVzdWx0KSBXZWJLaXRDb2xv
cihjb2xvcik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworY29uc3QgV2ViQ29yZTo6Q29sb3Im
IHdlYmtpdENvbG9yR2V0Q29sb3IoV2ViS2l0Q29sb3IqIGJhY2tncm91bmRDb2xvcikKK3sKKyAg
ICByZXR1cm4gYmFja2dyb3VuZENvbG9yLT5jb2xvcigpOworfQorCisvKioKKyAqIHdlYmtpdF9j
b2xvcl9uZXdfZnJvbV9zdHJpbmc6CisgKiBAY29sb3JTdHJpbmc6IGNvbG9yIHJlcHJlc2VudGF0
aW9uIGFzIGNvbG9yIG5pY2tuYW1lIG9yIEhFWCBzdHJpbmcKKyAqCisgKiBDcmVhdGUgYSBuZXcg
I1dlYktpdENvbG9yIGZvciB0aGUgZ2l2ZW4gY29sb3Igc3RyaW5nCisgKiByZXByZXNlbnRhdGlv
bi4gVGhlcmUgYXJlIHR3byB2YWxpZCByZXByZXNlbnRhdGlvbiB0eXBlczogc3RhbmRhcmQgY29s
b3IKKyAqIG5hbWVzIChzZWUgaHR0cHM6Ly9odG1sY29sb3Jjb2Rlcy5jb20vY29sb3ItbmFtZXMv
IGZvciBpbnN0YW5jZSkgb3IgSEVYCisgKiB2YWx1ZXMuCisgKgorICogUmV0dXJuczogYSBuZXds
eSBjcmVhdGVkICNXZWJLaXRDb2xvcgorICoKKyAqIFNpbmNlOiAyLjI0CisgKi8KK1dlYktpdENv
bG9yKiB3ZWJraXRfY29sb3JfbmV3X2Zyb21fc3RyaW5nKGNvbnN0IGNoYXIqIGNvbG9yU3RyaW5n
KQoreworICAgIHJldHVybiB3ZWJraXRDb2xvckZyb21Db2xvcihXZWJDb3JlOjpDb2xvcihjb2xv
clN0cmluZykpOworfQorCisvKioKKyAqIHdlYmtpdF9jb2xvcl9nZXRfcmVkX2NoYW5uZWw6Cisg
KiBAY29sb3I6IGEgI1dlYktpdENvbG9yCisgKgorICogUHJvdmlkZXMgcmVhZC1vbmx5IGFjY2Vz
cyB0byB0aGUgcmVkIGNvbXBvbmVudCBvZiB0aGUgY29sb3IuCisgKgorICogUmV0dXJuczogYSAj
Z2ludCBjbGFtcGVkIGJldHdlZW4gMCBhbmQgMjU1LgorICoKKyAqIFNpbmNlOiAyLjI0CisgKi8K
K2dpbnQgd2Via2l0X2NvbG9yX2dldF9yZWRfY2hhbm5lbChXZWJLaXRDb2xvciogY29sb3IpCit7
CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoY29sb3IsIDApOworICAgIHJldHVybiBjb2xvci0+
Y29sb3IoKS5yZWQoKTsKK30KKworLyoqCisgKiB3ZWJraXRfY29sb3JfZ2V0X2dyZWVuX2NoYW5u
ZWw6CisgKiBAY29sb3I6IGEgI1dlYktpdENvbG9yCisgKgorICogUHJvdmlkZXMgcmVhZC1vbmx5
IGFjY2VzcyB0byB0aGUgZ3JlZW4gY29tcG9uZW50IG9mIHRoZSBjb2xvci4KKyAqCisgKiBSZXR1
cm5zOiBhICNnaW50IGNsYW1wZWQgYmV0d2VlbiAwIGFuZCAyNTUuCisgKgorICogU2luY2U6IDIu
MjQKKyAqLworZ2ludCB3ZWJraXRfY29sb3JfZ2V0X2dyZWVuX2NoYW5uZWwoV2ViS2l0Q29sb3Iq
IGNvbG9yKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGNvbG9yLCAwKTsKKyAgICByZXR1
cm4gY29sb3ItPmNvbG9yKCkuZ3JlZW4oKTsKK30KKworLyoqCisgKiB3ZWJraXRfY29sb3JfZ2V0
X2JsdWVfY2hhbm5lbDoKKyAqIEBjb2xvcjogYSAjV2ViS2l0Q29sb3IKKyAqCisgKiBQcm92aWRl
cyByZWFkLW9ubHkgYWNjZXNzIHRvIHRoZSBibHVlIGNvbXBvbmVudCBvZiB0aGUgY29sb3IuCisg
KgorICogUmV0dXJuczogYSAjZ2ludCBjbGFtcGVkIGJldHdlZW4gMCBhbmQgMjU1LgorICoKKyAq
IFNpbmNlOiAyLjI0CisgKi8KK2dpbnQgd2Via2l0X2NvbG9yX2dldF9ibHVlX2NoYW5uZWwoV2Vi
S2l0Q29sb3IqIGNvbG9yKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGNvbG9yLCAwKTsK
KyAgICByZXR1cm4gY29sb3ItPmNvbG9yKCkuYmx1ZSgpOworfQorCisvKioKKyAqIHdlYmtpdF9j
b2xvcl9nZXRfYWxwaGFfY2hhbm5lbDoKKyAqIEBjb2xvcjogYSAjV2ViS2l0Q29sb3IKKyAqCisg
KiBQcm92aWRlcyByZWFkLW9ubHkgYWNjZXNzIHRvIHRoZSBhbHBoYSBjb21wb25lbnQgb2YgdGhl
IGNvbG9yLgorICoKKyAqIFJldHVybnM6IGEgI2dpbnQgY2xhbXBlZCBiZXR3ZWVuIDAgYW5kIDI1
NS4KKyAqCisgKiBTaW5jZTogMi4yNAorICovCitnaW50IHdlYmtpdF9jb2xvcl9nZXRfYWxwaGFf
Y2hhbm5lbChXZWJLaXRDb2xvciogY29sb3IpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwo
Y29sb3IsIDApOworICAgIHJldHVybiBjb2xvci0+Y29sb3IoKS5hbHBoYSgpOworfQorCituYW1l
c3BhY2UgV1RGIHsKKwordGVtcGxhdGUgPD4gV2ViS2l0Q29sb3IqIHJlZkdQdHIoV2ViS2l0Q29s
b3IqIHB0cikKK3sKKyAgICBpZiAocHRyKQorICAgICAgICB3ZWJraXRDb2xvclJlZihwdHIpOwor
ICAgIHJldHVybiBwdHI7Cit9CisKK3RlbXBsYXRlIDw+IHZvaWQgZGVyZWZHUHRyKFdlYktpdENv
bG9yKiBwdHIpCit7CisgICAgaWYgKHB0cikKKyAgICAgICAgd2Via2l0Q29sb3JVbnJlZihwdHIp
OworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dl
YktpdENvbG9yLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdENvbG9y
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNTU1OWQyMmZlZTViYWQ4MzU4ZjQ3ZTE2Y2I4MWIwYTFmYzg1ZjUxOAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0
Q29sb3IuaApAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IElnYWxp
YSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgor
ICovCisKKyNpZiAhZGVmaW5lZChfX1dFQktJVF9IX0lOU0lERV9fKSAmJiAhZGVmaW5lZChXRUJL
SVQyX0NPTVBJTEFUSU9OKQorI2Vycm9yICJPbmx5IDx3cGUvd2Via2l0Lmg+IGNhbiBiZSBpbmNs
dWRlZCBkaXJlY3RseS4iCisjZW5kaWYKKworI2lmbmRlZiBXZWJLaXRDb2xvcl9oCisjZGVmaW5l
IFdlYktpdENvbG9yX2gKKworI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8d3Bl
L1dlYktpdERlZmluZXMuaD4KKworR19CRUdJTl9ERUNMUworCisjZGVmaW5lIFdFQktJVF9UWVBF
X0NPTE9SICh3ZWJraXRfY29sb3JfZ2V0X3R5cGUoKSkKKwordHlwZWRlZiBzdHJ1Y3QgX1dlYktp
dENvbG9yIFdlYktpdENvbG9yOworCitXRUJLSVRfQVBJIEdUeXBlCit3ZWJraXRfY29sb3JfZ2V0
X3R5cGUgICAgICAgICAgICh2b2lkKTsKKworV0VCS0lUX0FQSSBXZWJLaXRDb2xvciAqCit3ZWJr
aXRfY29sb3JfbmV3X2Zyb21fc3RyaW5nICAgIChjb25zdCBjaGFyKiBjb2xvclN0cmluZyk7CisK
K1dFQktJVF9BUEkgZ2ludAord2Via2l0X2NvbG9yX2dldF9yZWRfY2hhbm5lbCAgICAoV2ViS2l0
Q29sb3IqIGNvbG9yKTsKKworV0VCS0lUX0FQSSBnaW50Cit3ZWJraXRfY29sb3JfZ2V0X2dyZWVu
X2NoYW5uZWwgIChXZWJLaXRDb2xvciogY29sb3IpOworCitXRUJLSVRfQVBJIGdpbnQKK3dlYmtp
dF9jb2xvcl9nZXRfYmx1ZV9jaGFubmVsICAgKFdlYktpdENvbG9yKiBjb2xvcik7CisKK1dFQktJ
VF9BUEkgZ2ludAord2Via2l0X2NvbG9yX2dldF9hbHBoYV9jaGFubmVsICAoV2ViS2l0Q29sb3Iq
IGNvbG9yKTsKKworR19FTkRfREVDTFMKKworI2VuZGlmIC8qIFdlYktpdENvbG9yX2ggKi8KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0Q29sb3JQcml2
YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdENvbG9yUHJpdmF0
ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmYwYmI4NjU2NDYxZDI0MGVhMGRjMjYxOWQwMTQ0ZTY3YzQzM2M1YTcK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktp
dENvbG9yUHJpdmF0ZS5oCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTkgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
KyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDb2xvci5oIgorI2luY2x1
ZGUgIldlYktpdENvbG9yLmgiCisKKyNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CisKK25h
bWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZSA8PiBXZWJLaXRDb2xvciogcmVmR1B0cihXZWJLaXRD
b2xvciogcHRyKTsKK3RlbXBsYXRlIDw+IHZvaWQgZGVyZWZHUHRyKFdlYktpdENvbG9yKiBwdHIp
OworCit9CisKK3ZvaWQgd2Via2l0Q29sb3JVbnJlZihXZWJLaXRDb2xvciopOworCitXZWJLaXRD
b2xvciogd2Via2l0Q29sb3JGcm9tQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImKTsKK2NvbnN0
IFdlYkNvcmU6OkNvbG9yJiB3ZWJraXRDb2xvckdldENvbG9yKFdlYktpdENvbG9yKik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXcuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViVmlldy5oCmluZGV4IDQx
MDJhNzUyNmQ2YmRmMDEzY2JiOTA0YTUyNDI1ZDYxZDEyZTNjZDkuLjlkZjM4ODM5ZWU3ZDQyNmEy
MGUxNDU4YWQ1NTkxMzJjOTg4ZjJkN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS93cGUvV2ViS2l0V2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS93cGUvV2ViS2l0V2ViVmlldy5oCkBAIC00OSw2ICs0OSw3IEBACiAjaW5jbHVkZSA8d3Bl
L1dlYktpdFdlYkNvbnRleHQuaD4KICNpbmNsdWRlIDx3cGUvV2ViS2l0V2ViUmVzb3VyY2UuaD4K
ICNpbmNsdWRlIDx3cGUvV2ViS2l0V2ViVmlld0JhY2tlbmQuaD4KKyNpbmNsdWRlIDx3cGUvV2Vi
S2l0Q29sb3IuaD4KICNpbmNsdWRlIDx3cGUvV2ViS2l0V2ViVmlld1Nlc3Npb25TdGF0ZS5oPgog
I2luY2x1ZGUgPHdwZS9XZWJLaXRXaW5kb3dQcm9wZXJ0aWVzLmg+CiAKQEAgLTUxNyw2ICs1MTgs
MTIgQEAgV0VCS0lUX0FQSSB2b2lkCiB3ZWJraXRfd2ViX3ZpZXdfcmVtb3ZlX2ZyYW1lX2Rpc3Bs
YXllZF9jYWxsYmFjayAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Z3VpbnQgICAgICAgICAgICAgICAgICAgICAgICBpZCk7CiAKK1dFQktJVF9BUEkgdm9pZAord2Vi
a2l0X3dlYl92aWV3X3NldF9iYWNrZ3JvdW5kX2NvbG9yICAgICAgICAgICAgICAgICAoV2ViS2l0
V2ViVmlldyAgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRDb2xvciAgICAgICAgICAgICAg
ICAgICpjb2xvcik7CitXRUJLSVRfQVBJIFdlYktpdENvbG9yICoKK3dlYmtpdF93ZWJfdmlld19n
ZXRfYmFja2dyb3VuZF9jb2xvciAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAg
ICAgICAgICAgKndlYl92aWV3KTsKKwogR19FTkRfREVDTFMKIAogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXdXUEUuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3V1BFLmNwcAppbmRl
eCBhMzQ5NWU4NTJlMTlmOTJkMWM0ZjBlOTM3YjRiOWYxMTgzMmVhZGE0Li4zNTI3ZGM2ZDVjODdl
NDU1YzA4MTM4MTBiMDZlNDE0Y2I1NDk1NjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXdXUEUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViVmlld1dQRS5jcHAKQEAgLTIwLDYgKzIwLDcgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJWaWV3LmgiCiAKKyNpbmNs
dWRlICJXZWJLaXRDb2xvclByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJWaWV3UHJpdmF0
ZS5oIgogCiBnYm9vbGVhbiB3ZWJraXRXZWJWaWV3QXV0aGVudGljYXRlKFdlYktpdFdlYlZpZXcq
LCBXZWJLaXRBdXRoZW50aWNhdGlvblJlcXVlc3QqKQpAQCAtMTc4LDMgKzE3OSw0OCBAQCBXZWJL
aXRXZWJWaWV3KiB3ZWJraXRfd2ViX3ZpZXdfbmV3X3dpdGhfdXNlcl9jb250ZW50X21hbmFnZXIo
V2ViS2l0V2ViVmlld0JhY2tlbgogICAgICAgICAidXNlci1jb250ZW50LW1hbmFnZXIiLCB1c2Vy
Q29udGVudE1hbmFnZXIsCiAgICAgICAgIG51bGxwdHIpKTsKIH0KKworLyoqCisgKiB3ZWJraXRf
d2ViX3ZpZXdfc2V0X2JhY2tncm91bmRfY29sb3I6CisgKiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdl
YlZpZXcKKyAqIEBiYWNrZ3JvdW5kQ29sb3I6IGEgI1dlYktpdENvbG9yCisgKgorICogU2V0cyB0
aGUgY29sb3IgdGhhdCB3aWxsIGJlIHVzZWQgdG8gZHJhdyB0aGUgQHdlYl92aWV3IGJhY2tncm91
bmQgYmVmb3JlCisgKiB0aGUgYWN0dWFsIGNvbnRlbnRzIGFyZSByZW5kZXJlZC4gTm90ZSB0aGF0
IGlmIHRoZSB3ZWIgcGFnZSBsb2FkZWQgaW4gQHdlYl92aWV3CisgKiBzcGVjaWZpZXMgYSBiYWNr
Z3JvdW5kIGNvbG9yLCBpdCB3aWxsIHRha2UgcHJlY2VkZW5jZSBvdmVyIHRoZSBiYWNrZ3JvdW5k
IGNvbG9yLgorICogQnkgZGVmYXVsdCB0aGUgQHdlYl92aWV3IGJhY2tncm91bmQgY29sb3IgaXMg
b3BhcXVlIHdoaXRlLgorICoKKyAqIFNpbmNlOiAyLjI0CisgKi8KK3ZvaWQgd2Via2l0X3dlYl92
aWV3X3NldF9iYWNrZ3JvdW5kX2NvbG9yKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdENv
bG9yKiBiYWNrZ3JvdW5kQ29sb3IpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNf
V0VCX1ZJRVcod2ViVmlldykpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoYmFja2dyb3VuZENvbG9y
KTsKKworICAgIGF1dG8mIHBhZ2UgPSB3ZWJraXRXZWJWaWV3R2V0UGFnZSh3ZWJWaWV3KTsKKyAg
ICBhdXRvJiBjb2xvciA9IHdlYmtpdENvbG9yR2V0Q29sb3IoYmFja2dyb3VuZENvbG9yKTsKKyAg
ICBpZiAoIWNvbG9yLmlzT3BhcXVlKCkpCisgICAgICAgIHBhZ2Uuc2V0RHJhd3NCYWNrZ3JvdW5k
KGZhbHNlKTsKKworICAgIHBhZ2Uuc2V0QmFja2dyb3VuZENvbG9yKGNvbG9yKTsKK30KKworLyoq
CisgKiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2JhY2tncm91bmRfY29sb3I6CisgKiBAd2ViX3ZpZXc6
IGEgI1dlYktpdFdlYlZpZXcKKyAqCisgKiBHZXRzIHRoZSBjb2xvciB0aGF0IGlzIHVzZWQgdG8g
ZHJhdyB0aGUgQHdlYl92aWV3IGJhY2tncm91bmQgYmVmb3JlIHRoZQorICogYWN0dWFsIGNvbnRl
bnRzIGFyZSByZW5kZXJlZC4gRm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlIGFsc28KKyAqIHdlYmtp
dF93ZWJfdmlld19zZXRfYmFja2dyb3VuZF9jb2xvcigpLgorICoKKyAqIFJldHVybnM6IGEgI1dl
YktpdENvbG9yCisgKgorICogU2luY2U6IDIuMjQKKyAqLworV2ViS2l0Q29sb3IqIHdlYmtpdF93
ZWJfdmlld19nZXRfYmFja2dyb3VuZF9jb2xvcihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQorewor
ICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSwgbnVs
bHB0cik7CisgICAgYXV0byYgcGFnZSA9IHdlYmtpdFdlYlZpZXdHZXRQYWdlKHdlYlZpZXcpOwor
CisgICAgcmV0dXJuIHdlYmtpdENvbG9yRnJvbUNvbG9yKHBhZ2UuYmFja2dyb3VuZENvbG9yKCkp
OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dw
ZS0wLjEtc2VjdGlvbnMudHh0IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9kb2Nz
L3dwZS0wLjEtc2VjdGlvbnMudHh0CmluZGV4IDYyOGRiNDI1MmE0ZDJiZjQ4ZjQ5MGRhNTQwODdh
YzRjMmM5NWJjOTEuLmY3YTZiNDRkOTZjMzFlMDg3ZjgxNjFkOWUwMzM1NmE2NzI3ZTdhNDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvZG9jcy93cGUtMC4xLXNl
Y3Rpb25zLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3Bl
LTAuMS1zZWN0aW9ucy50eHQKQEAgLTIwNiw2ICsyMDYsOCBAQCB3ZWJraXRfd2ViX3ZpZXdfcmVz
dG9yZV9zZXNzaW9uX3N0YXRlCiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X21haW5fcmVzb3VyY2UKIHdl
YmtpdF93ZWJfdmlld19hZGRfZnJhbWVfZGlzcGxheWVkX2NhbGxiYWNrCiB3ZWJraXRfd2ViX3Zp
ZXdfcmVtb3ZlX2ZyYW1lX2Rpc3BsYXllZF9jYWxsYmFjaword2Via2l0X3dlYl92aWV3X2dldF9i
YWNrZ3JvdW5kX2NvbG9yCit3ZWJraXRfd2ViX3ZpZXdfc2V0X2JhY2tncm91bmRfY29sb3IKIAog
PFNVQlNFQ1RJT04gV2ViS2l0SmF2YXNjcmlwdFJlc3VsdD4KIFdlYktpdEphdmFzY3JpcHRSZXN1
bHQKQEAgLTI2Niw2ICsyNjgsMjAgQEAgd2Via2l0X3dlYl92aWV3X2JhY2tlbmRfbmV3CiB3ZWJr
aXRfd2ViX3ZpZXdfYmFja2VuZF9nZXRfdHlwZQogPC9TRUNUSU9OPgogCis8U0VDVElPTj4KKzxG
SUxFPldlYktpdENvbG9yPC9GSUxFPgorV0VCS0lUX1RZUEVfQ09MT1IKK1dlYktpdENvbG9yCit3
ZWJraXRfY29sb3JfbmV3X2Zyb21fc3RyaW5nCit3ZWJraXRfY29sb3JfZ2V0X3JlZF9jaGFubmVs
Cit3ZWJraXRfY29sb3JfZ2V0X2dyZWVuX2NoYW5uZWwKK3dlYmtpdF9jb2xvcl9nZXRfYmx1ZV9j
aGFubmVsCit3ZWJraXRfY29sb3JfZ2V0X2FscGhhX2NoYW5uZWwKKworPFNVQlNFQ1RJT04gUHJp
dmF0ZT4KK3dlYmtpdF9jb2xvcl9nZXRfdHlwZQorPC9TRUNUSU9OPgorCiA8U0VDVElPTj4KIDxG
SUxFPldlYktpdEF1dGhlbnRpY2F0aW9uUmVxdWVzdDwvRklMRT4KIFdlYktpdEF1dGhlbnRpY2F0
aW9uUmVxdWVzdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXgg
MzkyNzQzYmQ1Njc5Y2JkMjI2N2EyYzEwZWNjZTE5NWE2MWMzM2QyOS4uZDVhMjEzY2M1ZDA0ZjA0
MTUyZDkzYjIzY2JlYjY4MDcyOTg5Yjc2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCkBAIC0xNTM4LDYgKzE1MzgsMTggQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNl
dERyYXdzQmFja2dyb3VuZChib29sIGRyYXdzQmFja2dyb3VuZCkKICAgICAgICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXREcmF3c0JhY2tncm91bmQoZHJhd3NCYWNrZ3Jv
dW5kKSwgbV9wYWdlSUQpOwogfQogCisjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUp
Cit2b2lkIFdlYlBhZ2VQcm94eTo6c2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IFdlYkNvcmU6OkNv
bG9yJiBjb2xvcikKK3sKKyAgICBpZiAobV9iYWNrZ3JvdW5kQ29sb3IgPT0gY29sb3IpCisgICAg
ICAgIHJldHVybjsKKworICAgIG1fYmFja2dyb3VuZENvbG9yID0gY29sb3I7CisgICAgaWYgKGlz
VmFsaWQoKSkKKyAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRC
YWNrZ3JvdW5kQ29sb3IoY29sb3IpLCBtX3BhZ2VJRCk7Cit9CisjZW5kaWYKKwogdm9pZCBXZWJQ
YWdlUHJveHk6OnNldFRvcENvbnRlbnRJbnNldChmbG9hdCBjb250ZW50SW5zZXQpCiB7CiAgICAg
aWYgKG1fdG9wQ29udGVudEluc2V0ID09IGNvbnRlbnRJbnNldCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmgKaW5kZXggY2Q4MDFiODA4YzQ2ZTQ1MGQ4Y2RhZDQ5NzA4ZjQ3Zjhm
MDEzNzAyOS4uYjA4ZjVmMWE1YmZiMTNjNzAwODFlMjUwMjcyYWE5MjU1ZWU3ODFkZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTc1Miw4ICs3NTIsMTAgQEAgcHVi
bGljOgogCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIFBsYXRmb3JtV2lkZ2V0IHZpZXdXaWRnZXQo
KTsKKyNlbmRpZgorI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQogICAgIGNvbnN0
IFdlYkNvcmU6OkNvbG9yJiBiYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2JhY2tn
cm91bmRDb2xvcjsgfQotICAgIHZvaWQgc2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IFdlYkNvcmU6
OkNvbG9yJiBjb2xvcikgeyBtX2JhY2tncm91bmRDb2xvciA9IGNvbG9yOyB9CisgICAgdm9pZCBz
ZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImKTsKICNlbmRpZgogCiAjaWYg
UExBVEZPUk0oV0lOKQpAQCAtMjE2NCw2ICsyMTY2LDggQEAgcHJpdmF0ZToKIAogI2lmIFBMQVRG
T1JNKEdUSykKICAgICBTdHJpbmcgbV9hY2Nlc3NpYmlsaXR5UGx1Z0lEOworI2VuZGlmCisjaWYg
UExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpCiAgICAgV2ViQ29yZTo6Q29sb3IgbV9iYWNr
Z3JvdW5kQ29sb3IgeyBXZWJDb3JlOjpDb2xvcjo6d2hpdGUgfTsKICNlbmRpZgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCBhYWNiNWI5Y2U2MWI4MTY1NzE0NmE0YmNhNjUz
ODM0YmEwZDQwMGIwLi43MDAzNWJhM2I4ZGIzMGE0NjJlMTk3ZDEyMzI2ZjEwMDAzMmY2NDc4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTEzOTQsNiArMTM5NCw3IEBAIHZv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2Uo
KQogCiAgICAgYm9vbCBpc01haW5GcmFtZSA9IG1fZnJhbWUtPmlzTWFpbkZyYW1lKCk7CiAgICAg
Ym9vbCBpc1RyYW5zcGFyZW50ID0gIXdlYlBhZ2UtPmRyYXdzQmFja2dyb3VuZCgpOworICAgIENv
bG9yIGJhY2tncm91bmRDb2xvciA9IHdlYlBhZ2UtPmJhY2tncm91bmRDb2xvcigpOwogICAgIGJv
b2wgc2hvdWxkVXNlRml4ZWRMYXlvdXQgPSBpc01haW5GcmFtZSAmJiB3ZWJQYWdlLT51c2VGaXhl
ZExheW91dCgpOwogICAgIGJvb2wgc2hvdWxkRGlzYWJsZVNjcm9sbGluZyA9IGlzTWFpbkZyYW1l
ICYmICF3ZWJQYWdlLT5tYWluRnJhbWVJc1Njcm9sbGFibGUoKTsKICAgICBib29sIHNob3VsZEhp
ZGVTY3JvbGxiYXJzID0gc2hvdWxkRGlzYWJsZVNjcm9sbGluZzsKQEAgLTE0MTgsNyArMTQxOSw3
IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5l
d1BhZ2UoKQogICAgIGJvb2wgaG9yaXpvbnRhbExvY2sgPSBzaG91bGRIaWRlU2Nyb2xsYmFycyB8
fCB3ZWJQYWdlLT5hbHdheXNTaG93c0hvcml6b250YWxTY3JvbGxlcigpOwogICAgIGJvb2wgdmVy
dGljYWxMb2NrID0gc2hvdWxkSGlkZVNjcm9sbGJhcnMgfHwgd2ViUGFnZS0+YWx3YXlzU2hvd3NW
ZXJ0aWNhbFNjcm9sbGVyKCk7CiAKLSAgICBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+Y3JlYXRlVmll
dyh3ZWJQYWdlLT5zaXplKCksIGlzVHJhbnNwYXJlbnQsCisgICAgbV9mcmFtZS0+Y29yZUZyYW1l
KCktPmNyZWF0ZVZpZXcod2ViUGFnZS0+c2l6ZSgpLCBpc1RyYW5zcGFyZW50LCBiYWNrZ3JvdW5k
Q29sb3IsCiAgICAgICAgIHdlYlBhZ2UtPmZpeGVkTGF5b3V0U2l6ZSgpLCBmaXhlZFZpc2libGVD
b250ZW50UmVjdCwgc2hvdWxkVXNlRml4ZWRMYXlvdXQsCiAgICAgICAgIGhvcml6b250YWxTY3Jv
bGxiYXJNb2RlLCBob3Jpem9udGFsTG9jaywgdmVydGljYWxTY3JvbGxiYXJNb2RlLCB2ZXJ0aWNh
bExvY2spOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9B
Y2NlbGVyYXRlZERyYXdpbmdBcmVhLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEuY3BwCmluZGV4IDk5MjA0NjViMTczOTJhODMxNGNm
MmQwNWMzMTUzM2Y1NjA2ZDIwMTEuLmY4M2VjMDY0ZjRlMWI2ZDgyZTRlZjI1NjUzZjI4ODc3YWM3
NmZjMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2Vs
ZXJhdGVkRHJhd2luZ0FyZWEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEuY3BwCkBAIC0xMDEsNiArMTAxLDE0IEBAIHZvaWQg
QWNjZWxlcmF0ZWREcmF3aW5nQXJlYTo6cGFnZUJhY2tncm91bmRUcmFuc3BhcmVuY3lDaGFuZ2Vk
KCkKICAgICAgICAgbV9wcmV2aW91c0xheWVyVHJlZUhvc3QtPnBhZ2VCYWNrZ3JvdW5kVHJhbnNw
YXJlbmN5Q2hhbmdlZCgpOwogfQogCit2b2lkIEFjY2VsZXJhdGVkRHJhd2luZ0FyZWE6OnBhZ2VC
YWNrZ3JvdW5kQ29sb3JDaGFuZ2VkKCkKK3sKKyAgICBpZiAobV9sYXllclRyZWVIb3N0KQorICAg
ICAgICBtX2xheWVyVHJlZUhvc3QtPnBhZ2VCYWNrZ3JvdW5kQ29sb3JDaGFuZ2VkKCk7CisgICAg
ZWxzZSBpZiAobV9wcmV2aW91c0xheWVyVHJlZUhvc3QpCisgICAgICAgIG1fcHJldmlvdXNMYXll
clRyZWVIb3N0LT5wYWdlQmFja2dyb3VuZENvbG9yQ2hhbmdlZCgpOworfQorCiB2b2lkIEFjY2Vs
ZXJhdGVkRHJhd2luZ0FyZWE6OnNldExheWVyVHJlZVN0YXRlSXNGcm96ZW4oYm9vbCBpc0Zyb3pl
bikKIHsKICAgICBpZiAobV9sYXllclRyZWVTdGF0ZUlzRnJvemVuID09IGlzRnJvemVuKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3
aW5nQXJlYS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWRE
cmF3aW5nQXJlYS5oCmluZGV4IDcwYWJlNDM1OTI1Y2JmMzdkYmMzZDJkODc0ZGJmNDgzZjRjOGYx
OWUuLmMyYmQ1Zjc2YTk2NWY1ZGJiMjUyMTU5Njc4M2Q1YjhiNjhhZTYyZjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZERyYXdp
bmdBcmVhLmgKQEAgLTQ0LDYgKzQ0LDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgc2V0TmVlZHNE
aXNwbGF5SW5SZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBvdmVycmlkZTsKICAgICB2b2lk
IHNjcm9sbChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzY3JvbGxSZWN0LCBjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJiBzY3JvbGxEZWx0YSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBwYWdlQmFja2dyb3Vu
ZFRyYW5zcGFyZW5jeUNoYW5nZWQoKSBvdmVycmlkZTsKKyAgICB2b2lkIHBhZ2VCYWNrZ3JvdW5k
Q29sb3JDaGFuZ2VkKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRMYXllclRyZWVTdGF0ZUlzRnJv
emVuKGJvb2wpIG92ZXJyaWRlOwogICAgIGJvb2wgbGF5ZXJUcmVlU3RhdGVJc0Zyb3plbigpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fbGF5ZXJUcmVlU3RhdGVJc0Zyb3plbjsgfQogICAgIExh
eWVyVHJlZUhvc3QqIGxheWVyVHJlZUhvc3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2xh
eWVyVHJlZUhvc3QuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcAppbmRleCAxNTIwZjUyMGRhYzk4ZTQzZTQ1Yjdl
MDYzNzU3MWI5MzAyNThjY2FjLi5hZWY0ZjAxNWQ2Y2FkMWRlMmUwNTc2NmNlMWE1YmNiMmZlYmRh
MzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExh
eWVyVHJlZUhvc3QuY3BwCkBAIC0yMjgsNiArMjI4LDExIEBAIHZvaWQgQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0OjpwYWdlQmFja2dyb3VuZFRyYW5zcGFyZW5jeUNoYW5nZWQoKQogewogfQogCit2
b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6cGFnZUJhY2tncm91bmRDb2xvckNoYW5nZWQo
KQoreworCit9CisKIEdyYXBoaWNzTGF5ZXJGYWN0b3J5KiBDb29yZGluYXRlZExheWVyVHJlZUhv
c3Q6OmdyYXBoaWNzTGF5ZXJGYWN0b3J5KCkKIHsKICAgICByZXR1cm4gJm1fY29vcmRpbmF0b3I7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhv
c3QuaAppbmRleCAwYThiZWM4YTM5ODZjZWEyYTgwZGE1MDk5MmFiYTJhODMxYzM1MzZhLi4yN2Nh
ZTAwNGU0MjQ3NTYyMzI3ZDVmOTY2YTNkMDdkYzdiZTgwODA3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKQEAgLTU2LDYgKzU2
LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgdm9pZCBkZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNoYW5n
ZWQoKSBvdmVycmlkZTsKICAgICB2b2lkIHBhZ2VCYWNrZ3JvdW5kVHJhbnNwYXJlbmN5Q2hhbmdl
ZCgpIG92ZXJyaWRlOworICAgIHZvaWQgcGFnZUJhY2tncm91bmRDb2xvckNoYW5nZWQoKSBvdmVy
cmlkZTsKIAogICAgIHZvaWQgc2V0VmlzaWJsZUNvbnRlbnRzUmVjdChjb25zdCBXZWJDb3JlOjpG
bG9hdFJlY3QmKTsKICAgICB2b2lkIHJlbmRlck5leHRGcmFtZShib29sKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVGhy
ZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdC5jcHAKaW5kZXggODIzYjdmYTJhYzc1OTdhM2FlYWIyNzQ0MzFiYzBjYzliOTI5MDhj
OS4uZjhlMmI1ZDBlY2UyNTZkYTc1NDg1MzFjMGJkN2E1NmIwMGFkOGNlYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9UaHJl
YWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdC5jcHAKQEAgLTE5NSw2ICsxOTUsMTcgQEAgdm9pZCBUaHJlYWRlZENvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdDo6cGFnZUJhY2tncm91bmRUcmFuc3BhcmVuY3lDaGFuZ2VkKCkKICAg
ICBtX2NvbXBvc2l0b3ItPnNldERyYXdzQmFja2dyb3VuZChtX3dlYlBhZ2UuZHJhd3NCYWNrZ3Jv
dW5kKCkpOwogfQogCit2b2lkIFRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpwYWdl
QmFja2dyb3VuZENvbG9yQ2hhbmdlZCgpCit7CisgICAgaWYgKG1faXNEaXNjYXJkYWJsZSkgewor
ICAgICAgICBtX2Rpc2NhcmRhYmxlU3luY0FjdGlvbnMuYWRkKERpc2NhcmRhYmxlU3luY0FjdGlv
bnM6OlVwZGF0ZUJhY2tncm91bmQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQ29v
cmRpbmF0ZWRMYXllclRyZWVIb3N0OjpwYWdlQmFja2dyb3VuZENvbG9yQ2hhbmdlZCgpOworICAg
IG1fY29tcG9zaXRvci0+c2V0QmFja2dyb3VuZENvbG9yKG1fd2ViUGFnZS5iYWNrZ3JvdW5kQ29s
b3IoKSk7Cit9CisKIHZvaWQgVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnNpemVE
aWRDaGFuZ2UoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKICAgICBpZiAobV9pc0Rpc2NhcmRhYmxl
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29v
cmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKaW5kZXggYjc4NDY4MTY3OWIyMjdiYjgxMjI3NzQ1ZTFi
NzY4ZTFhM2IwNjNjZC4uODRiM2Y4ODMyODM4YzM3ZTcxMjkwNjdhZWI5MThjM2ZjMjk5NzhlYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRH
cmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVGhyZWFkZWRDb29y
ZGluYXRlZExheWVyVHJlZUhvc3QuaApAQCAtNTgsNiArNTgsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgc2l6ZURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBkZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNoYW5nZWQoKSBvdmVycmlkZTsKICAgICB2b2lk
IHBhZ2VCYWNrZ3JvdW5kVHJhbnNwYXJlbmN5Q2hhbmdlZCgpIG92ZXJyaWRlOworICAgIHZvaWQg
cGFnZUJhY2tncm91bmRDb2xvckNoYW5nZWQoKSBvdmVycmlkZTsKIAogICAgIHZvaWQgY29udGVu
dHNTaXplQ2hhbmdlZChjb25zdCBXZWJDb3JlOjpJbnRTaXplJikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkaWRDaGFuZ2VWaWV3cG9ydEF0dHJpYnV0ZXMoV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVz
JiYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvRHJhd2luZ0FyZWEuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdp
bmdBcmVhLmgKaW5kZXggZjljODkxNzRhNGEzN2JmNGRiMjJjMWQyYzQyNjI0Y2Y5ZGYyYTc0Mi4u
MWIyYmNiZWFiODM1NjhmNWQ4OGM4NGViMDhkMjViYmRmM2VjMTI1NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCkBAIC04MCw2ICs4MCw3IEBA
IHB1YmxpYzoKIAogICAgIC8vIEZJWE1FOiBUaGVzZSBzaG91bGQgYmUgcHVyZSB2aXJ0dWFsLgog
ICAgIHZpcnR1YWwgdm9pZCBwYWdlQmFja2dyb3VuZFRyYW5zcGFyZW5jeUNoYW5nZWQoKSB7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgcGFnZUJhY2tncm91bmRDb2xvckNoYW5nZWQoKSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgZm9yY2VSZXBhaW50KCkgeyB9CiAgICAgdmlydHVhbCBib29sIGZvcmNlUmVw
YWludEFzeW5jKENhbGxiYWNrSUQpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lk
IHNldExheWVyVHJlZVN0YXRlSXNGcm96ZW4oYm9vbCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9MYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9MYXllclRyZWVIb3N0LmgKaW5kZXggODVkZDQ1OGUwMTgwMDMx
MWMzOGI1NmRhMDBmZDIwMTkwOTBkMjA3YS4uMTY2OGJiYjlkNjM3M2FlZjI0NTgzOWQyOTk1MmEz
NGRjZTgwOTQ2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
TGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0xh
eWVyVHJlZUhvc3QuaApAQCAtNzUsNiArNzUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29s
IGZvcmNlUmVwYWludEFzeW5jKENhbGxiYWNrSUQpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmly
dHVhbCB2b2lkIHNpemVEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgbmV3U2l6ZSkg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBwYWdlQmFja2dyb3VuZFRyYW5zcGFyZW5jeUNoYW5nZWQo
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBhZ2VCYWNrZ3JvdW5kQ29sb3JDaGFuZ2VkKCkgPSAw
OwogCiAgICAgdmlydHVhbCB2b2lkIHBhdXNlUmVuZGVyaW5nKCk7CiAgICAgdmlydHVhbCB2b2lk
IHJlc3VtZVJlbmRlcmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAppbmRleCAyNWQ2ZGZiNzFkMDNhNDk2NjQ0YzYyMzJmNmZiNDIxOGZhOGQyZmJi
Li5iMTA2YmQ5Y2M2NzhmNDNmYmUyMTMzZGQyZTY4OGNjYmY4ZTEzNTM0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMjg5MSw2ICsyODkxLDIw
IEBAIHZvaWQgV2ViUGFnZTo6c2V0RHJhd3NCYWNrZ3JvdW5kKGJvb2wgZHJhd3NCYWNrZ3JvdW5k
KQogICAgIG1fZHJhd2luZ0FyZWEtPnNldE5lZWRzRGlzcGxheSgpOwogfQogCit2b2lkIFdlYlBh
Z2U6OnNldEJhY2tncm91bmRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYgYmFja2dyb3VuZENv
bG9yKQoreworICAgIGlmIChtX2JhY2tncm91bmRDb2xvciA9PSBiYWNrZ3JvdW5kQ29sb3IpCisg
ICAgICAgIHJldHVybjsKKworICAgIG1fYmFja2dyb3VuZENvbG9yID0gYmFja2dyb3VuZENvbG9y
OworCisgICAgaWYgKEZyYW1lVmlldyogZnJhbWVWaWV3ID0gbWFpbkZyYW1lVmlldygpKQorICAg
ICAgICBmcmFtZVZpZXctPnNldEJhc2VCYWNrZ3JvdW5kQ29sb3IoYmFja2dyb3VuZENvbG9yKTsK
KworICAgIG1fZHJhd2luZ0FyZWEtPnBhZ2VCYWNrZ3JvdW5kQ29sb3JDaGFuZ2VkKCk7CisgICAg
bV9kcmF3aW5nQXJlYS0+c2V0TmVlZHNEaXNwbGF5KCk7Cit9CisKICNpZiBQTEFURk9STShDT0NP
QSkKIHZvaWQgV2ViUGFnZTo6c2V0VG9wQ29udGVudEluc2V0RmVuY2VkKGZsb2F0IGNvbnRlbnRJ
bnNldCwgSVBDOjpBdHRhY2htZW50IGZlbmNlUG9ydCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCA3MTVlMTI0NTIwZmYwNzZiOTYwYWVkNzBlOWI5
MjA3NWE2NTUyYWVmLi4zZTk2MmQzYzY4NGNkNjljY2IyODhhYjc4NTRmNGQ1OWRjZWZmZWYwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xMTM3LDYg
KzExMzcsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGRpZFJlY2VpdmVXZWJQYWdlTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKIAorICAgIGNvbnN0IFdlYkNvcmU6OkNv
bG9yJiBiYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91bmRDb2xvcjsg
fQorCiBwcml2YXRlOgogICAgIFdlYlBhZ2UodWludDY0X3QgcGFnZUlELCBXZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzJiYpOwogCkBAIC0xMjY0LDYgKzEyNjYsNyBAQCBwcml2YXRlOgogI2VuZGlm
CiAKICAgICB2b2lkIHNldERyYXdzQmFja2dyb3VuZChib29sKTsKKyAgICB2b2lkIHNldEJhY2tn
cm91bmRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYpOwogCiAjaWYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgdm9pZCBzZXRUb3BDb250ZW50SW5zZXRGZW5jZWQoZmxvYXQsIElQQzo6QXR0YWNobWVu
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbgppbmRleCA1NGFiYmFmODkzNGNjZGNmOGU0ZjIwZjc4M2ZjYjZiOWYwMzA0MGVi
Li41ZmFmZmYzZDQ5N2U1MTVlODRhYjc3YzRiOTBhODFhZDE0YjJhYTNhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAg
LTI2LDYgKzI2LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAg
U2V0TGF5ZXJIb3N0aW5nTW9kZShlbnVtOnVpbnQ4X3QgV2ViS2l0OjpMYXllckhvc3RpbmdNb2Rl
IGxheWVySG9zdGluZ01vZGUpCiAKICAgICBTZXREcmF3c0JhY2tncm91bmQoYm9vbCBkcmF3c0Jh
Y2tncm91bmQpCisgICAgU2V0QmFja2dyb3VuZENvbG9yKFdlYkNvcmU6OkNvbG9yIGNvbG9yKQog
CiAgICAgQWRkQ29uc29sZU1lc3NhZ2UodWludDY0X3QgZnJhbWVJRCwgZW51bTp1aW50OF90IEpT
Qzo6TWVzc2FnZVNvdXJjZSBtZXNzYWdlU291cmNlLCBlbnVtOnVpbnQ4X3QgSlNDOjpNZXNzYWdl
TGV2ZWwgbWVzc2FnZUxldmVsLCBTdHJpbmcgbWVzc2FnZSwgdWludDY0X3QgcmVxdWVzdElEKQog
ICAgIFNlbmRDU1BWaW9sYXRpb25SZXBvcnQodWludDY0X3QgZnJhbWVJRCwgVVJMIHJlcG9ydFVS
TCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSByZXBvcnREYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuY3BwCmluZGV4IGVlODE5OGE4ODI3MTY4MWU1MWJjMWNlYzIxNzU1ZTFmNTc0ZGRmYTku
LjA1ZTNkNzM0MWY3MWI3OTYwODJkZDcxMGM5Y2U5MjY5MzA4NGM0YTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHAKQEAgLTk4Nyw3ICs5ODcsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVy
Q2xpZW50Ojp0cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKCkKICAgICBib29sIHRyYW5z
cGFyZW50ID0gdmlldy0+dHJhbnNwYXJlbnQoKTsKICAgICBGbG9hdFJlY3QgbG9naWNhbEZyYW1l
KHBpeGVsUmVjdCk7CiAgICAgbG9naWNhbEZyYW1lLnNjYWxlKDEuMGYgLyB2aWV3LT5kZXZpY2VT
Y2FsZUZhY3RvcigpKTsKLSAgICBjb3JlKG1fd2ViRnJhbWUpLT5jcmVhdGVWaWV3KGVuY2xvc2lu
Z0ludFJlY3QobG9naWNhbEZyYW1lKS5zaXplKCksIHRyYW5zcGFyZW50LCAvKiBmaXhlZExheW91
dFNpemUgKi8geyB9LCAvKiBmaXhlZFZpc2libGVDb250ZW50UmVjdCAqLyB7IH0pOworICAgIGNv
cmUobV93ZWJGcmFtZSktPmNyZWF0ZVZpZXcoZW5jbG9zaW5nSW50UmVjdChsb2dpY2FsRnJhbWUp
LnNpemUoKSwgdHJhbnNwYXJlbnQsIENvbG9yOjp3aGl0ZSwgLyogZml4ZWRMYXlvdXRTaXplICov
IHsgfSwgLyogZml4ZWRWaXNpYmxlQ29udGVudFJlY3QgKi8geyB9KTsKIH0KIAogdm9pZCBXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZGlkU2F2ZVRvUGFnZUNhY2hlKCkKZGlmZiAtLWdpdCBhL1Rvb2xz
L0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAwZDlmNjRkNzUwZDllNDc2NmY2M2My
YzI5Njg5ZGI4NzZlNzRkZDAyLi5mYmYwMTVmZTkxODM4OWU2YzUxMGU5YzAzMzFlZTg5MDEwZDFi
MGFjIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMTktMDEtMTAgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBp
Z2FsaWEuY29tPgorCisgICAgICAgIFtXUEVdIEFkZCBBUEkgdG8gYWxsb3cgYXBwbGljYXRpb24g
dG8gZGlzYWJsZSBiYWNrZ3JvdW5kIHJlbmRlcmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyMzA1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci93cGUvbWFpbi5jcHA6CisgICAg
ICAgIChtYWluKTogQWRkIGEgbmV3IG9wdGlvbiB0byBjb25maWd1cmUgdGhlIHdlYnZpZXcgYmFj
a2dyb3VuZAorICAgICAgICBjb2xvci4gRXhhbXBsZTogLS1iZy1jb2xvcj10cmFuc3BhcmVudC4K
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYlZp
ZXcuY3BwOgorICAgICAgICAodGVzdFdlYlZpZXdCYWNrZ3JvdW5kQ29sb3IpOiBFbmFibGUgYmFj
a2dyb3VuZCBjb2xvciBBUEkgdGVzdHMgZm9yIFdQRS4KKyAgICAgICAgKGJlZm9yZUFsbCk6IERp
dHRvLgorCiAyMDE5LTAxLTEwICBEb21pbmlrIEluZnVlaHIgIDxkaW5mdWVockBpZ2FsaWEuY29t
PgogCiAgICAgICAgIEVuYWJsZSBERkcgb24gQVJNL0xpbnV4IGFnYWluCmRpZmYgLS1naXQgYS9U
b29scy9NaW5pQnJvd3Nlci93cGUvbWFpbi5jcHAgYi9Ub29scy9NaW5pQnJvd3Nlci93cGUvbWFp
bi5jcHAKaW5kZXggZTBjMjliMjEyOTkzNDM3MTI3NGE2ZjI1NDUxZWFlOTgyMWM0Njg5Zi4uMWNl
MTI3OGUzNWQ2MTg4MzM2MjEyOTg0YjdjNjBiNDMxZWNhNzM1MyAxMDA2NDQKLS0tIGEvVG9vbHMv
TWluaUJyb3dzZXIvd3BlL21haW4uY3BwCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3dwZS9tYWlu
LmNwcApAQCAtNDIsNiArNDIsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gaWdub3JlVExTRXJyb3JzOwog
c3RhdGljIGNvbnN0IGNoYXIqIGNvb2tpZXNGaWxlOwogc3RhdGljIGNvbnN0IGNoYXIqIGNvb2tp
ZXNQb2xpY3k7CiBzdGF0aWMgY29uc3QgY2hhciogcHJveHk7Citjb25zdCBjaGFyKiBiZ0NvbG9y
OwogCiBzdGF0aWMgY29uc3QgR09wdGlvbkVudHJ5IGNvbW1hbmRMaW5lT3B0aW9uc1tdID0KIHsK
QEAgLTUzLDYgKzU0LDcgQEAgc3RhdGljIGNvbnN0IEdPcHRpb25FbnRyeSBjb21tYW5kTGluZU9w
dGlvbnNbXSA9CiAgICAgeyAicHJveHkiLCAwLCAwLCBHX09QVElPTl9BUkdfU1RSSU5HLCAmcHJv
eHksICJTZXQgcHJveHkiLCAiUFJPWFkiIH0sCiAgICAgeyAiaWdub3JlLWhvc3QiLCAwLCAwLCBH
X09QVElPTl9BUkdfU1RSSU5HX0FSUkFZLCAmaWdub3JlSG9zdHMsICJTZXQgcHJveHkgaWdub3Jl
IGhvc3RzIiwgIkhPU1RTIiB9LAogICAgIHsgImlnbm9yZS10bHMtZXJyb3JzIiwgMCwgMCwgR19P
UFRJT05fQVJHX05PTkUsICZpZ25vcmVUTFNFcnJvcnMsICJJZ25vcmUgVExTIGVycm9ycyIsIG51
bGxwdHIgfSwKKyAgICB7ICJiZy1jb2xvciIsIDAsIDAsIEdfT1BUSU9OX0FSR19TVFJJTkcsICZi
Z0NvbG9yLCAiV2luZG93IGJhY2tncm91bmQgY29sb3IgKHdoaXRlIGJ5IGRlZmF1bHQpIiwgIndo
aXRlIiB9LAogICAgIHsgR19PUFRJT05fUkVNQUlOSU5HLCAwLCAwLCBHX09QVElPTl9BUkdfRklM
RU5BTUVfQVJSQVksICZ1cmlBcmd1bWVudHMsIG51bGxwdHIsICJbVVJMXSIgfSwKICAgICB7IG51
bGxwdHIsIDAsIDAsIEdfT1BUSU9OX0FSR19OT05FLCBudWxscHRyLCBudWxscHRyLCBudWxscHRy
IH0KIH07CkBAIC0xOTQsNiArMTk2LDEwIEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2
W10pCiAgICAgaWYgKGlnbm9yZVRMU0Vycm9ycykKICAgICAgICAgd2Via2l0X3dlYl9jb250ZXh0
X3NldF90bHNfZXJyb3JzX3BvbGljeSh3ZWJDb250ZXh0LCBXRUJLSVRfVExTX0VSUk9SU19QT0xJ
Q1lfSUdOT1JFKTsKIAorICAgIGF1dG8qIGJhY2tncm91bmRDb2xvciA9IHdlYmtpdF9jb2xvcl9u
ZXdfZnJvbV9zdHJpbmcoYmdDb2xvcik7CisgICAgd2Via2l0X3dlYl92aWV3X3NldF9iYWNrZ3Jv
dW5kX2NvbG9yKHdlYlZpZXcsIGJhY2tncm91bmRDb2xvcik7CisgICAgZ19ib3hlZF9mcmVlKFdF
QktJVF9UWVBFX0NPTE9SLCBiYWNrZ3JvdW5kQ29sb3IpOworCiAgICAgaWYgKHVyaUFyZ3VtZW50
cykKICAgICAgICAgd2Via2l0X3dlYl92aWV3X2xvYWRfdXJpKHdlYlZpZXcsIHVyaUFyZ3VtZW50
c1swXSk7CiAgICAgZWxzZSBpZiAoIWF1dG9tYXRpb25Nb2RlKQpAQCAtMjAyLDcgKzIwOCw3IEBA
IGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAgICAgZ19tYWluX2xvb3BfcnVuKGxv
b3ApOwogCiAgICAgZ19vYmplY3RfdW5yZWYod2ViVmlldyk7Ci0gICAgaWYgKHByaXZhdGVNb2Rl
KQorICAgIGlmIChwcml2YXRlTW9kZSB8fCBhdXRvbWF0aW9uTW9kZSkKICAgICAgICAgZ19vYmpl
Y3RfdW5yZWYod2ViQ29udGV4dCk7CiAgICAgZ19tYWluX2xvb3BfdW5yZWYobG9vcCk7CiAKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0
V2ViVmlldy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdl
YktpdFdlYlZpZXcuY3BwCmluZGV4IDU0ZjE5N2I4ODMzNjdhYmIyNTAyNjBlNDAyZWJmNWI5ZmRh
NmM0ZjMuLjg3YTU1Y2IzYTg0ODZhN2YwMzg3ZDUyZWYxMzc5OTdmNWEyZDJiZWEgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0V2ViVmll
dy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJL
aXRXZWJWaWV3LmNwcApAQCAtMTEzMyw5ICsxMTMzLDkgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZp
ZXdJc1BsYXlpbmdBdWRpbyhJc1BsYXlpbmdBdWRpb1dlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rw
b2kKICAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfd2ViX3ZpZXdfaXNfcGxheWluZ19hdWRpbyh0
ZXN0LT5tX3dlYlZpZXcpKTsKIH0KIAotI2lmIFBMQVRGT1JNKEdUSykKIHN0YXRpYyB2b2lkIHRl
c3RXZWJWaWV3QmFja2dyb3VuZENvbG9yKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVy
KQogeworI2lmIFBMQVRGT1JNKEdUSykKICAgICAvLyBXaGl0ZSBpcyB0aGUgZGVmYXVsdCBiYWNr
Z3JvdW5kLgogICAgIEdka1JHQkEgcmdiYTsKICAgICB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2JhY2tn
cm91bmRfY29sb3IodGVzdC0+bV93ZWJWaWV3LCAmcmdiYSk7CkBAIC0xMTU0LDExICsxMTU0LDQ2
IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3QmFja2dyb3VuZENvbG9yKFdlYlZpZXdUZXN0KiB0
ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIGdfYXNzZXJ0X2NtcGZsb2F0KHJnYmEuZ3JlZW4sID09
LCAwKTsKICAgICBnX2Fzc2VydF9jbXBmbG9hdChyZ2JhLmJsdWUsID09LCAwKTsKICAgICBnX2Fz
c2VydF9jbXBmbG9hdChyZ2JhLmFscGhhLCA9PSwgMC41KTsKKyNlbmRpZgorI2lmIFBMQVRGT1JN
KFdQRSkKKyAgICAvLyBXaGl0ZSBpcyB0aGUgZGVmYXVsdCBiYWNrZ3JvdW5kLgorICAgIFdlYktp
dENvbG9yKiBjb2xvciA9IHdlYmtpdF93ZWJfdmlld19nZXRfYmFja2dyb3VuZF9jb2xvcih0ZXN0
LT5tX3dlYlZpZXcpOworICAgIGdfYXNzZXJ0X2NtcGludCh3ZWJraXRfY29sb3JfZ2V0X3JlZF9j
aGFubmVsKGNvbG9yKSwgPT0sIDI1NSk7CisgICAgZ19hc3NlcnRfY21waW50KHdlYmtpdF9jb2xv
cl9nZXRfZ3JlZW5fY2hhbm5lbChjb2xvciksID09LCAyNTUpOworICAgIGdfYXNzZXJ0X2NtcGlu
dCh3ZWJraXRfY29sb3JfZ2V0X2JsdWVfY2hhbm5lbChjb2xvciksID09LCAyNTUpOworICAgIGdf
YXNzZXJ0X2NtcGludCh3ZWJraXRfY29sb3JfZ2V0X2FscGhhX2NoYW5uZWwoY29sb3IpLCA9PSwg
MjU1KTsKKyAgICBnX2JveGVkX2ZyZWUoV0VCS0lUX1RZUEVfQ09MT1IsIGNvbG9yKTsKKworICAg
IC8vIFNldCB0byBncmVlbi4KKyAgICBXZWJLaXRDb2xvciogY29sb3IyID0gd2Via2l0X2NvbG9y
X25ld19mcm9tX3N0cmluZygiZ3JlZW4iKTsKKyAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0X2JhY2tn
cm91bmRfY29sb3IodGVzdC0+bV93ZWJWaWV3LCBjb2xvcjIpOworICAgIGdfYm94ZWRfZnJlZShX
RUJLSVRfVFlQRV9DT0xPUiwgY29sb3IyKTsKKworICAgIGNvbG9yID0gd2Via2l0X3dlYl92aWV3
X2dldF9iYWNrZ3JvdW5kX2NvbG9yKHRlc3QtPm1fd2ViVmlldyk7CisgICAgZ19hc3NlcnRfY21w
aW50KHdlYmtpdF9jb2xvcl9nZXRfcmVkX2NoYW5uZWwoY29sb3IpLCA9PSwgMCk7CisgICAgZ19h
c3NlcnRfY21waW50KHdlYmtpdF9jb2xvcl9nZXRfZ3JlZW5fY2hhbm5lbChjb2xvciksID09LCAx
MjgpOworICAgIGdfYXNzZXJ0X2NtcGludCh3ZWJraXRfY29sb3JfZ2V0X2JsdWVfY2hhbm5lbChj
b2xvciksID09LCAwKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQod2Via2l0X2NvbG9yX2dldF9hbHBo
YV9jaGFubmVsKGNvbG9yKSwgPT0sIDI1NSk7CisgICAgZ19ib3hlZF9mcmVlKFdFQktJVF9UWVBF
X0NPTE9SLCBjb2xvcik7CisKKyAgICAvLyBGdWxseSB0cmFuc3BhcmVudAorICAgIGNvbG9yMiA9
IHdlYmtpdF9jb2xvcl9uZXdfZnJvbV9zdHJpbmcoInRyYW5zcGFyZW50Iik7CisgICAgd2Via2l0
X3dlYl92aWV3X3NldF9iYWNrZ3JvdW5kX2NvbG9yKHRlc3QtPm1fd2ViVmlldywgY29sb3IyKTsK
KyAgICBnX2JveGVkX2ZyZWUoV0VCS0lUX1RZUEVfQ09MT1IsIGNvbG9yMik7CisKKyAgICBjb2xv
ciA9IHdlYmtpdF93ZWJfdmlld19nZXRfYmFja2dyb3VuZF9jb2xvcih0ZXN0LT5tX3dlYlZpZXcp
OworICAgIGdfYXNzZXJ0X2NtcGludCh3ZWJraXRfY29sb3JfZ2V0X3JlZF9jaGFubmVsKGNvbG9y
KSwgPT0sIDApOworICAgIGdfYXNzZXJ0X2NtcGludCh3ZWJraXRfY29sb3JfZ2V0X2dyZWVuX2No
YW5uZWwoY29sb3IpLCA9PSwgMCk7CisgICAgZ19hc3NlcnRfY21waW50KHdlYmtpdF9jb2xvcl9n
ZXRfYmx1ZV9jaGFubmVsKGNvbG9yKSwgPT0sIDApOworICAgIGdfYXNzZXJ0X2NtcGludCh3ZWJr
aXRfY29sb3JfZ2V0X2FscGhhX2NoYW5uZWwoY29sb3IpLCA9PSwgMCk7CisgICAgZ19ib3hlZF9m
cmVlKFdFQktJVF9UWVBFX0NPTE9SLCBjb2xvcik7CiAKKyNlbmRpZgogICAgIC8vIFRoZSBhY3R1
YWwgcmVuZGVyaW5nIGNhbid0IGJlIHRlc3RlZCB1c2luZyB1bml0IHRlc3RzLCB1c2UKICAgICAv
LyBNaW5pQnJvd3NlciAtLWJnLWNvbG9yPSI8Y29sb3ItdmFsdWU+IiBmb3IgbWFudWFsbHkgdGVz
dGluZyB0aGlzIEFQSS4KIH0KIAorI2lmIFBMQVRGT1JNKEdUSykKIHN0YXRpYyB2b2lkIHRlc3RX
ZWJWaWV3UHJlZmVycmVkU2l6ZShXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsK
ICAgICB0ZXN0LT5sb2FkSHRtbCgiPGh0bWwgc3R5bGU9J3dpZHRoOiAzMjVweDsgaGVpZ2h0OiA2
MTVweCc+PC9odG1sPiIsIG51bGxwdHIpOwpAQCAtMTM2Myw4ICsxMzk4LDggQEAgdm9pZCBiZWZv
cmVBbGwoKQogICAgIE5vdGlmaWNhdGlvbldlYlZpZXdUZXN0OjphZGQoIldlYktpdFdlYlZpZXci
LCAibm90aWZpY2F0aW9uLWluaXRpYWwtcGVybWlzc2lvbi1kaXNhbGxvd2VkIiwgdGVzdFdlYlZp
ZXdOb3RpZmljYXRpb25Jbml0aWFsUGVybWlzc2lvbkRpc2FsbG93ZWQpOwogI2VuZGlmCiAgICAg
SXNQbGF5aW5nQXVkaW9XZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgImlzLXBsYXlp
bmctYXVkaW8iLCB0ZXN0V2ViVmlld0lzUGxheWluZ0F1ZGlvKTsKLSNpZiBQTEFURk9STShHVEsp
CiAgICAgV2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJiYWNrZ3JvdW5kLWNvbG9y
IiwgdGVzdFdlYlZpZXdCYWNrZ3JvdW5kQ29sb3IpOworI2lmIFBMQVRGT1JNKEdUSykKICAgICBX
ZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgInByZWZlcnJlZC1zaXplIiwgdGVzdFdl
YlZpZXdQcmVmZXJyZWRTaXplKTsKICNlbmRpZgogICAgIFdlYlZpZXdUaXRsZVRlc3Q6OmFkZCgi
V2ViS2l0V2ViVmlldyIsICJ0aXRsZS1jaGFuZ2UiLCB0ZXN0V2ViVmlld1RpdGxlQ2hhbmdlKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359005</attachid>
            <date>2019-01-13 08:01:45 -0800</date>
            <delta_ts>2019-01-18 03:36:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192305-20190113160143.patch</filename>
            <type>text/plain</type>
            <size>56972</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5OTA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGMyMzQ0MjQ2YzBjNTRk
Y2RiMDUxOTc2ZGU1M2Y4Yzc2YzZjMGNhYS4uMjM2YjM4Y2Q0ZTIyNjllZDVkMmNkNDNhZWMyYzc5
ODc0NDRhNzJhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE5LTAxLTEwICBQaGls
aXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbV1BFXSBBZGQg
QVBJIHRvIGFsbG93IGFwcGxpY2F0aW9uIHRvIGRpc2FibGUgYmFja2dyb3VuZCByZW5kZXJpbmcK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MjMwNQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkYXB0IHRo
ZSBGcmFtZVZpZXcgQVBJIHRvIGFsbG93IGEgZGVmYXVsdCBub24td2hpdGUgYmFja2dyb3VuZCBj
b2xvci4KKworICAgICAgICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWU6OmNyZWF0ZVZpZXcpOiBBIG5ldyBhcmd1bWVudCBpcyBub3cgZXhwZWN0ZWQsIHRvCisgICAg
ICAgIGNvbmZpZ3VyZSB0aGUgYmFja2dyb3VuZCBjb2xvciBvZiB0aGUgdmlldy4KKyAgICAgICAg
KiBwYWdlL0ZyYW1lLmg6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVWaWV3Ojp1cGRhdGVCYWNrZ3JvdW5kUmVjdXJzaXZlbHkpOiBBbGxvdyB0
aGUKKyAgICAgICAgZmFsbGJhY2sgYmFja2dyb3VuZCBjb2xvciB0byBiZSBub24td2hpdGUsIHRo
aXMgaXMgdXNlZCBvbmx5IGluCisgICAgICAgIG5vbi1kYXJrLW1vZGUtY3NzIGJ1aWxkIGNvbmZp
Z3VyYXRpb25zLgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3Lmg6CisKIDIwMTktMDEtMTIgIFRp
bW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgogCiAgICAgICAgIEhhdmUgcHJlZmVy
cy1jb2xvci1zY2hlbWU6IGxpZ2h0IGFsd2F5cyBtYXRjaCBvbiBtYWNPUyB2ZXJzaW9ucyBiZWZv
cmUgTW9qYXZlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCA5Y2Y1OTY3ZTc0MWZlYjVhMjM0OTZkMWRmYTY4MGNhYjkx
N2M2ZjE1Li4xNDMzNDAxNTJiODBlYjk1M2NhZTVhYmNkNzBjN2IyMzA2NTViMmNjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDg0IEBACisyMDE5LTAxLTEwICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1h
bmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbV1BFXSBBZGQgQVBJIHRvIGFsbG93IGFwcGxpY2F0
aW9uIHRvIGRpc2FibGUgYmFja2dyb3VuZCByZW5kZXJpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MjMwNQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUGxhdGZvcm1XUEUuY21ha2U6IEFkZCBuZXcg
V1BFIEFQSSBmb3IgV2ViS2l0Q29sb3IgYm94ZWQgdHlwZS4KKyAgICAgICAgKiBTaGFyZWQvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwOgorICAgICAgICAo
V2ViS2l0OjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnBhaW50VG9DdXJyZW50R0xDb250ZXh0
KToKKyAgICAgICAgU2ltcGxpZmllZCBtZXRob2Qgc2lnbmF0dXJlIGFuZCBpbXBsZW1lbnRhdGlv
bi4KKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBo
aWNzU2NlbmUuaDoKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRl
ZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6VGhy
ZWFkZWRDb21wb3NpdG9yOjpzZXRCYWNrZ3JvdW5kQ29sb3IpOiBUaGUgd2VidmlldworICAgICAg
ICBiYWNrZ3JvdW5kIGNvbG9yIGlzIG5vdyBjYXJyaWVkIG9uIHRocm91Z2ggdGhlIGNvbXBvc2l0
b3IKKyAgICAgICAgYXR0cmlidXRlcy4KKyAgICAgICAgKFdlYktpdDo6VGhyZWFkZWRDb21wb3Np
dG9yOjpyZW5kZXJMYXllclRyZWUpOiBEaXR0by4KKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0
ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmg6CisgICAg
ICAgICogU291cmNlc1dQRS50eHQ6IEFkZCBuZXcgV1BFIEFQSSBmb3IgV2ViS2l0Q29sb3IgYm94
ZWQgdHlwZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHA6
IE1vdmUgR1RLIGltcGxlbWVudGF0aW9uIG9mCisgICAgICAgIHdlYmtpdF93ZWJfdmlld19zZXRf
YmFja2dyb3VuZF9jb2xvciB0byB0aGUgR1RLIGltcGxlbWVudGF0aW9uCisgICAgICAgIGZpbGUu
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0d0ay5jcHA6IERpdHRv
LgorICAgICAgICAod2Via2l0X3dlYl92aWV3X3NldF9iYWNrZ3JvdW5kX2NvbG9yKToKKyAgICAg
ICAgKHdlYmtpdF93ZWJfdmlld19nZXRfYmFja2dyb3VuZF9jb2xvcik6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS93cGUvV2ViS2l0Q29sb3IuY3BwOiBBZGRlZC4gVmVyeSBzaW1wbGUgd3JhcHBl
ciBhcm91bmQgV2ViQ29yZTo6Q29sb3IsIGJhc2ljYWxseS4KKyAgICAgICAgKF9XZWJLaXRDb2xv
cjo6X1dlYktpdENvbG9yKToKKyAgICAgICAgKF9XZWJLaXRDb2xvcjo6fl9XZWJLaXRDb2xvcik6
CisgICAgICAgIChfV2ViS2l0Q29sb3I6OmNvbG9yIGNvbnN0KToKKyAgICAgICAgKHdlYmtpdENv
bG9yUmVmKToKKyAgICAgICAgKHdlYmtpdENvbG9yVW5yZWYpOgorICAgICAgICAod2Via2l0Q29s
b3JGcm9tQ29sb3IpOgorICAgICAgICAod2Via2l0Q29sb3JHZXRDb2xvcik6CisgICAgICAgICh3
ZWJraXRfY29sb3JfbmV3X2Zyb21fc3RyaW5nKToKKyAgICAgICAgKHdlYmtpdF9jb2xvcl9nZXRf
cmVkX2NoYW5uZWwpOgorICAgICAgICAod2Via2l0X2NvbG9yX2dldF9ncmVlbl9jaGFubmVsKToK
KyAgICAgICAgKHdlYmtpdF9jb2xvcl9nZXRfYmx1ZV9jaGFubmVsKToKKyAgICAgICAgKHdlYmtp
dF9jb2xvcl9nZXRfYWxwaGFfY2hhbm5lbCk6CisgICAgICAgIChXVEY6OnJlZkdQdHIpOgorICAg
ICAgICAoV1RGOjpkZXJlZkdQdHIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL1dlYktp
dENvbG9yLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdENvbG9y
UHJpdmF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJW
aWV3Lmg6IEltcGxlbWVudCB3ZWJraXRfd2ViX3ZpZXdfc2V0X2JhY2tncm91bmRfY29sb3IgQVBJ
LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXdXUEUuY3BwOiBEaXR0
by4KKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19zZXRfYmFja2dyb3VuZF9jb2xvcik6CisgICAg
ICAgICh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2JhY2tncm91bmRfY29sb3IpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTAuMS1zZWN0aW9ucy50eHQ6IEFkZCBuZXcgc3ltYm9s
cy4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpzZXRCYWNrZ3JvdW5kQ29sb3IpOiBTZW5kIGJhY2tncm91bmQgY29s
b3IKKyAgICAgICAgY2hhbmdlIG5vdGlmaWNhdGlvbiB0byB0aGUgV2ViUHJvY2Vzcy4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6IEVuYWJsZSBiYWNrZ3JvdW5kIGNvbG9yIGNv
bmZpZ3VyYXRpb24gQVBJIGZvciBXUEUuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1l
TG9hZGVyQ2xpZW50Ojp0cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKToKKyAgICAgICAg
VXNlIGJhY2tncm91bmQgY29sb3IgYXMgcHJvdmlkZWQgYnkgdGhlIFVJUHJvY2VzcyB3aGVuIGNy
ZWF0aW5nCisgICAgICAgIHRoZSBGcmFtZVZpZXcuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEuY3BwOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVy
YXRlZERyYXdpbmdBcmVhOjpwYWdlQmFja2dyb3VuZENvbG9yQ2hhbmdlZCk6CisgICAgICAgIFBy
b3BhZ2F0ZSBiYWNrZ3JvdW5kIGNvbG9yIG5vdGlmaWNhdGlvbiB0byB0aGUgTGF5ZXJUcmVlSG9z
dC4gSXQKKyAgICAgICAgd2lsbCBlbmQgdXAgaW4gdGhlIFRocmVhZGVkQ29tcG9zaXRvciBmb3Ig
V1BFLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZERyYXdpbmdBcmVh
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcDoKKyAgICAgICAgRW1wdHkgaW1wbGVtZW50YXRpb24g
b2YgYmFja2dyb3VuZCBjb2xvciBub3RpZmljYXRpb24gQVBJLgorICAgICAgICAoV2ViS2l0OjpD
b29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnBhZ2VCYWNrZ3JvdW5kQ29sb3JDaGFuZ2VkKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZExheWVyVHJlZUhvc3QuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0
ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpwYWdlQmFja2dyb3Vu
ZENvbG9yQ2hhbmdlZCk6CisgICAgICAgIFByb3BhZ2F0ZSBiYWNrZ3JvdW5kIGNvbG9yIG5vdGlm
aWNhdGlvbiB0byB0aGUgVGhyZWFkZWRDb21wb3NpdG9yLgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmg6CisgICAg
ICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhOjpwYWdlQmFja2dyb3VuZENvbG9yQ2hhbmdlZCk6IG5l
dyB2aXJ0dWFsCisgICAgICAgIG1ldGhvZCBmb3IgYmFja2dyb3VuZCBjb2xvciBub3RpZmljYXRp
b25zLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9MYXllclRyZWVIb3N0Lmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpzZXRCYWNrZ3JvdW5kQ29sb3IpOiBOZXcgQVBJIGZvciBiYWNrZ3JvdW5kCisgICAg
ICAgIGNvbG9yIGNvbmZpZ3VyYXRpb24uIFByb3hpZXMgdG8gRnJhbWVWaWV3IGFuZCBEcmF3aW5n
QXJlYS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpiYWNrZ3JvdW5kQ29sb3IgY29uc3QpOiBSZWFkLW9ubHkgYWNjZXNz
IHRvIHRoZSBjdXJyZW50IGJhY2tncm91bmQgY29sb3IuCisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46IE5ldyBtZXNzYWdlIGZvcgorICAgICAgICBiYWNr
Z3JvdW5kIGNvbG9yIGNvbmZpZ3VyYXRpb24gc3VwcG9ydCBmcm9tIHRoZSBVSVByb2Nlc3MgdG8g
dGhlCisgICAgICAgIFdlYlByb2Nlc3MuCisKIDIwMTktMDEtMTIgIFRpbW90aHkgSGF0Y2hlciAg
PHRpbW90aHlAYXBwbGUuY29tPgogCiAgICAgICAgIEhhdmUgcHJlZmVycy1jb2xvci1zY2hlbWU6
IGxpZ2h0IGFsd2F5cyBtYXRjaCBvbiBtYWNPUyB2ZXJzaW9ucyBiZWZvcmUgTW9qYXZlLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDI2NzA0OTc1NDE2MDVjNmEyNzg0MmY4NzA2MGYw
YzQ4MWNlOGVmNjYuLmQzNmNlODZjZGZhM2Q1ZmZjZGEyNzVlNjdmNGQzZGY2ZmIyYjJmYzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxOS0wMS0xMCAg
UGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CisKKyAgICAgICAgW1dQRV0g
QWRkIEFQSSB0byBhbGxvdyBhcHBsaWNhdGlvbiB0byBkaXNhYmxlIGJhY2tncm91bmQgcmVuZGVy
aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTIz
MDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkZyYW1l
TG9hZGVyQ2xpZW50Ojp0cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKTogQ3JlYXRlCisg
ICAgICAgIEZyYW1lVmlldyB3aXRoIGV4cGxpY2l0IGRlZmF1bHQgd2hpdGUgYmFja2dyb3VuZC4g
VGhpcyB1c2VkIHRvIGJlCisgICAgICAgIGltcGxpY2l0LiBIZW5jZSBubyBiZWhhdmlvciBjaGFu
Z2UgZXhwZWN0ZWQuCisKIDIwMTktMDEtMDggIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5z
ZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBTdG9wIHVzaW5nIE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biBpbiBXZWJQcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4IDczYmFmZGI0NjYwMjc4NWZm
NDE0MTVmZTI2OTlhMGFiNzEwYTE5Y2EuLmI0ZTBhMzUwODk3NmEwODE0ZGE0NzNhNjc1MjkzZjZk
ZjcwMDEzYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC05MDIsNyArOTAyLDcgQEAgUmVmUHRy
PFJhbmdlPiBGcmFtZTo6cmFuZ2VGb3JQb2ludChjb25zdCBJbnRQb2ludCYgZnJhbWVQb2ludCkK
ICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotdm9pZCBGcmFtZTo6Y3JlYXRlVmlldyhjb25zdCBJ
bnRTaXplJiB2aWV3cG9ydFNpemUsIGJvb2wgdHJhbnNwYXJlbnQsCit2b2lkIEZyYW1lOjpjcmVh
dGVWaWV3KGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSwgYm9vbCB0cmFuc3BhcmVudCwgY29u
c3QgQ29sb3ImIGJhY2tncm91bmRDb2xvciwKICAgICBjb25zdCBJbnRTaXplJiBmaXhlZExheW91
dFNpemUsIGNvbnN0IEludFJlY3QmIGZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0LAogICAgIGJvb2wg
dXNlRml4ZWRMYXlvdXQsIFNjcm9sbGJhck1vZGUgaG9yaXpvbnRhbFNjcm9sbGJhck1vZGUsIGJv
b2wgaG9yaXpvbnRhbExvY2ssCiAgICAgU2Nyb2xsYmFyTW9kZSB2ZXJ0aWNhbFNjcm9sbGJhck1v
ZGUsIGJvb2wgdmVydGljYWxMb2NrKQpAQCAtOTMzLDcgKzkzMyw3IEBAIHZvaWQgRnJhbWU6OmNy
ZWF0ZVZpZXcoY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplLCBib29sIHRyYW5zcGFyZW50LAog
CiAgICAgc2V0VmlldyhmcmFtZVZpZXcuY29weVJlZigpKTsKIAotICAgIGZyYW1lVmlldy0+dXBk
YXRlQmFja2dyb3VuZFJlY3Vyc2l2ZWx5KHRyYW5zcGFyZW50KTsKKyAgICBmcmFtZVZpZXctPnVw
ZGF0ZUJhY2tncm91bmRSZWN1cnNpdmVseSh0cmFuc3BhcmVudCwgYmFja2dyb3VuZENvbG9yKTsK
IAogICAgIGlmIChpc01haW5GcmFtZSkKICAgICAgICAgZnJhbWVWaWV3LT5zZXRQYXJlbnRWaXNp
YmxlKHRydWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCmluZGV4IDhhZDEzZDZlMWNjYzI3YTYzODE1N2Q4MTFh
YjFjZjQ4Y2UyZTIwNjkuLmQxMTcwODM0MTJiMjU3YzBkMDQ4Y2VkNjBmOWU0N2FlM2NkMzE1Nzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lLmgKQEAgLTEyOCw3ICsxMjgsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBpbml0V2l0aFNpbXBsZUhUTUxEb2N1bWVudChjb25zdCBTdHJpbmcmIHN0
eWxlLCBjb25zdCBVUkwmKTsKICNlbmRpZgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Vmll
dyhSZWZQdHI8RnJhbWVWaWV3PiYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNyZWF0ZVZp
ZXcoY29uc3QgSW50U2l6ZSYsIGJvb2wgdHJhbnNwYXJlbnQsCisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBjcmVhdGVWaWV3KGNvbnN0IEludFNpemUmLCBib29sIHRyYW5zcGFyZW50LCBjb25zdCBD
b2xvciYgYmFja2dyb3VuZENvbG9yLAogICAgICAgICBjb25zdCBJbnRTaXplJiBmaXhlZExheW91
dFNpemUsIGNvbnN0IEludFJlY3QmIGZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0LAogICAgICAgICBi
b29sIHVzZUZpeGVkTGF5b3V0ID0gZmFsc2UsIFNjcm9sbGJhck1vZGUgPSBTY3JvbGxiYXJBdXRv
LCBib29sIGhvcml6b250YWxMb2NrID0gZmFsc2UsCiAgICAgICAgIFNjcm9sbGJhck1vZGUgPSBT
Y3JvbGxiYXJBdXRvLCBib29sIHZlcnRpY2FsTG9jayA9IGZhbHNlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3LmNwcAppbmRleCBkMjVhN2U2MWE3YWUzNGNiMjU3ZTE0ZjBlNTI1YzczOTgyMjgyZGU5
Li5mYzc2MTA0OWM2MDA1N2IyOTQ0NThiNWU5ZWIxNjM0NGU2NjUwNmZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZVZpZXcuY3BwCkBAIC0zMDAwLDEyICszMDAwLDEzIEBAIHZvaWQgRnJhbWVWaWV3Ojpz
ZXRCYXNlQmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJiBiYWNrZ3JvdW5kQ29sb3IpCiAgICAg
cmVuZGVyVmlldygpLT5jb21wb3NpdG9yKCkucm9vdEJhY2tncm91bmRDb2xvck9yVHJhbnNwYXJl
bmN5Q2hhbmdlZCgpOwogfQogCi12b2lkIEZyYW1lVmlldzo6dXBkYXRlQmFja2dyb3VuZFJlY3Vy
c2l2ZWx5KGJvb2wgdHJhbnNwYXJlbnQpCit2b2lkIEZyYW1lVmlldzo6dXBkYXRlQmFja2dyb3Vu
ZFJlY3Vyc2l2ZWx5KGJvb2wgdHJhbnNwYXJlbnQsIGNvbnN0IENvbG9yJiBkZWZhdWx0QmFja2dy
b3VuZENvbG9yKQogewogI2lmIEVOQUJMRShEQVJLX01PREVfQ1NTKQorICAgIFVOVVNFRF9QQVJB
TShkZWZhdWx0QmFja2dyb3VuZENvbG9yKTsKICAgICBDb2xvciBiYWNrZ3JvdW5kQ29sb3IgPSB0
cmFuc3BhcmVudCA/IENvbG9yOjp0cmFuc3BhcmVudCA6IFJlbmRlclRoZW1lOjpzaW5nbGV0b24o
KS5zeXN0ZW1Db2xvcihDU1NWYWx1ZUFwcGxlU3lzdGVtQ29udHJvbEJhY2tncm91bmQsIHN0eWxl
Q29sb3JPcHRpb25zKCkpOwogI2Vsc2UKLSAgICBDb2xvciBiYWNrZ3JvdW5kQ29sb3IgPSB0cmFu
c3BhcmVudCA/IENvbG9yOjp0cmFuc3BhcmVudCA6IENvbG9yOjp3aGl0ZTsKKyAgICBDb2xvciBi
YWNrZ3JvdW5kQ29sb3IgPSB0cmFuc3BhcmVudCA/IENvbG9yOjp0cmFuc3BhcmVudCA6IGRlZmF1
bHRCYWNrZ3JvdW5kQ29sb3I7CiAjZW5kaWYKIAogICAgIGZvciAoYXV0byogZnJhbWUgPSBtX2Zy
YW1lLnB0cigpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dChtX2Zy
YW1lLnB0cigpKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKaW5kZXggMjk3NmI1NjdkYmYwYTE5
Nzg5Yjc2ZTYwOWExMTdlNjJiNTExODI1Yi4uODc2ZWYzY2EzZjQ1YmEzYTQ5Nzc4ZjRhMmUxZjI0
ODhiYWFlMmJkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCkBAIC0xOTAsNyArMTkwLDcgQEAg
cHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgQ29sb3IgYmFzZUJhY2tncm91bmRDb2xvcigp
IGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0QmFzZUJhY2tncm91bmRDb2xvcihj
b25zdCBDb2xvciYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlQmFja2dyb3VuZFJl
Y3Vyc2l2ZWx5KGJvb2wpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlQmFja2dyb3Vu
ZFJlY3Vyc2l2ZWx5KGJvb2wsIGNvbnN0IENvbG9yJiBiYWNrZ3JvdW5kQ29sb3IgPSBDb2xvcjo6
d2hpdGUpOwogCiAgICAgZW51bSBFeHRlbmRlZEJhY2tncm91bmRNb2RlRmxhZ3MgewogICAgICAg
ICBFeHRlbmRlZEJhY2tncm91bmRNb2RlTm9uZSAgICAgICAgICA9IDAsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtV1BFLmNtYWtlIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdQ
RS5jbWFrZQppbmRleCAxZjY3NWM0NGU0Yzc0NTljMDA1ZGQ2NzgxYWRiNzYyYTU2YTdhYzM3Li4z
Y2RlZmQyYmVkMjE3MDVlNDMyM2I2NTM3ZmRkNmRjZmVhOTcyNDhlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtV1BFLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1X
UEUuY21ha2UKQEAgLTk3LDYgKzk3LDcgQEAgc2V0KFdQRV9BUElfSU5TVEFMTEVEX0hFQURFUlMK
ICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdEJhY2tGb3J3YXJkTGlz
dC5oCiAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRCYWNrRm9yd2Fy
ZExpc3RJdGVtLmgKICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdENy
ZWRlbnRpYWwuaAorICAgICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0Q29s
b3IuaAogICAgICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0Q29udGV4dE1l
bnUuaAogICAgICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0Q29udGV4dE1l
bnVBY3Rpb25zLmgKICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdENv
bnRleHRNZW51SXRlbS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAK
aW5kZXggMWIyZWQxYjAyNzVlNjViYmUxOTE5NTU5OThjMjkzYTgzYmE2NDYwOC4uMGFlNjkyYTBl
YWExMGRlNzM4NzQ3MTRhYWM2ZDBkOTMyNzk1MTFmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRHcmFwaGljc1NjZW5lLmNwcApAQCAtNjUsNyArNjUsNyBAQCB2b2lkIENvb3JkaW5hdGVkR3Jh
cGhpY3NTY2VuZTo6YXBwbHlTdGF0ZUNoYW5nZXMoY29uc3QgVmVjdG9yPENvb3JkaW5hdGVkR3Jh
cGhpYwogICAgICAgICBjb21taXRTY2VuZVN0YXRlKHN0YXRlLm5pY29zaWEpOwogfQogCi12b2lk
IENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6cGFpbnRUb0N1cnJlbnRHTENvbnRleHQoY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCwgZmxvYXQgb3BhY2l0eSwgY29uc3QgRmxvYXRS
ZWN0JiBjbGlwUmVjdCwgY29uc3QgQ29sb3ImIGJhY2tncm91bmRDb2xvciwgYm9vbCBkcmF3c0Jh
Y2tncm91bmQsIFRleHR1cmVNYXBwZXI6OlBhaW50RmxhZ3MgUGFpbnRGbGFncykKK3ZvaWQgQ29v
cmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpwYWludFRvQ3VycmVudEdMQ29udGV4dChjb25zdCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4LCBjb25zdCBGbG9hdFJlY3QmIGNsaXBSZWN0LCBjb25z
dCBDb2xvciYgYmFja2dyb3VuZENvbG9yLCBib29sIGRyYXdzQmFja2dyb3VuZCwgVGV4dHVyZU1h
cHBlcjo6UGFpbnRGbGFncyBQYWludEZsYWdzKQogewogICAgIHVwZGF0ZVNjZW5lU3RhdGUoKTsK
IApAQCAtNzgsMTggKzc4LDE1IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpwYWlu
dFRvQ3VycmVudEdMQ29udGV4dChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpCiAgICAgbV90ZXh0
dXJlTWFwcGVyLT5iZWdpblBhaW50aW5nKFBhaW50RmxhZ3MpOwogICAgIG1fdGV4dHVyZU1hcHBl
ci0+YmVnaW5DbGlwKFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIGNsaXBSZWN0KTsKIAotICAgIGlm
IChkcmF3c0JhY2tncm91bmQpIHsKLSAgICAgICAgUkdCQTMyIHJnYmEgPSBtYWtlUkdCQTMyRnJv
bUZsb2F0cyhiYWNrZ3JvdW5kQ29sb3IucmVkKCksCi0gICAgICAgICAgICBiYWNrZ3JvdW5kQ29s
b3IuZ3JlZW4oKSwgYmFja2dyb3VuZENvbG9yLmJsdWUoKSwKLSAgICAgICAgICAgIGJhY2tncm91
bmRDb2xvci5hbHBoYSgpICogb3BhY2l0eSk7Ci0gICAgICAgIG1fdGV4dHVyZU1hcHBlci0+ZHJh
d1NvbGlkQ29sb3IoY2xpcFJlY3QsIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIENvbG9yKHJnYmEp
KTsKLSAgICB9IGVsc2UKLSAgICAgICAgbV90ZXh0dXJlTWFwcGVyLT5jbGVhckNvbG9yKG1fdmll
d0JhY2tncm91bmRDb2xvcik7CisgICAgYXV0byYgY29sb3IgPSBkcmF3c0JhY2tncm91bmQgPyBi
YWNrZ3JvdW5kQ29sb3IgOiBtX3ZpZXdCYWNrZ3JvdW5kQ29sb3I7CisgICAgbV90ZXh0dXJlTWFw
cGVyLT5jbGVhckNvbG9yKGNvbG9yKTsKIAotICAgIGlmIChjdXJyZW50Um9vdExheWVyLT5vcGFj
aXR5KCkgIT0gb3BhY2l0eSB8fCBjdXJyZW50Um9vdExheWVyLT50cmFuc2Zvcm0oKSAhPSBtYXRy
aXgpIHsKKyAgICBmbG9hdCBvcGFjaXR5ID0gZHJhd3NCYWNrZ3JvdW5kID8gY29sb3IuYWxwaGFB
c0Zsb2F0KCkgOiAxOworICAgIGlmICghZHJhd3NCYWNrZ3JvdW5kICYmIGN1cnJlbnRSb290TGF5
ZXItPm9wYWNpdHkoKSAhPSBvcGFjaXR5KQogICAgICAgICBjdXJyZW50Um9vdExheWVyLT5zZXRP
cGFjaXR5KG9wYWNpdHkpOworCisgICAgaWYgKGN1cnJlbnRSb290TGF5ZXItPnRyYW5zZm9ybSgp
ICE9IG1hdHJpeCkKICAgICAgICAgY3VycmVudFJvb3RMYXllci0+c2V0VHJhbnNmb3JtKG1hdHJp
eCk7Ci0gICAgfQogCiAgICAgY3VycmVudFJvb3RMYXllci0+cGFpbnQoKTsKICAgICBtX2Zwc0Nv
dW50ZXIudXBkYXRlRlBTQW5kRGlzcGxheSgqbV90ZXh0dXJlTWFwcGVyLCBjbGlwUmVjdC5sb2Nh
dGlvbigpLCBtYXRyaXgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRp
bmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmgKaW5k
ZXggZDRiYjU4MjY4ZmU3NTIyMTYxMzhkNTY0MTE3YjRiNzZlYzhhOWY5My4uZDY4ZjRmOTkwMmJj
ZmRiYTg4YWViOTQ1NGFhNTRhZTQ4MThiNzdiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NTY2VuZS5oCkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Db29y
ZGluYXRlZEdyYXBoaWNzU2NlbmUoKTsKIAogICAgIHZvaWQgYXBwbHlTdGF0ZUNoYW5nZXMoY29u
c3QgVmVjdG9yPFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZT4mKTsKLSAgICB2b2lk
IHBhaW50VG9DdXJyZW50R0xDb250ZXh0KGNvbnN0IFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0
cml4JiwgZmxvYXQsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkNv
bG9yJiBiYWNrZ3JvdW5kQ29sb3IsIGJvb2wgZHJhd3NCYWNrZ3JvdW5kLCBXZWJDb3JlOjpUZXh0
dXJlTWFwcGVyOjpQYWludEZsYWdzID0gMCk7CisgICAgdm9pZCBwYWludFRvQ3VycmVudEdMQ29u
dGV4dChjb25zdCBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IFdlYkNvcmU6
OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBiYWNrZ3JvdW5kQ29sb3IsIGJvb2wg
ZHJhd3NCYWNrZ3JvdW5kLCBXZWJDb3JlOjpUZXh0dXJlTWFwcGVyOjpQYWludEZsYWdzID0gMCk7
CiAgICAgdm9pZCBkZXRhY2goKTsKIAogICAgIC8vIFRoZSBwYWludGluZyB0aHJlYWQgbXVzdCBs
b2NrIHRoZSBtYWluIHRocmVhZCB0byB1c2UgYmVsb3cgdHdvIG1ldGhvZHMsIGJlY2F1c2UgdHdv
IG1ldGhvZHMgYWNjZXNzIG1lbWJlcnMgdGhhdCB0aGUgbWFpbiB0aHJlYWQgbWFuYWdlcy4gU2Vl
IG1fY2xpZW50LgpAQCAtMTEzLDcgKzExMyw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVf
cHRyPFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcj4gbV9yb290TGF5ZXI7CiAKICAgICBOaWNv
c2lhOjpQbGF0Zm9ybUxheWVyOjpMYXllcklEIG1fcm9vdExheWVySUQgeyAwIH07Ci0gICAgV2Vi
Q29yZTo6Q29sb3IgbV92aWV3QmFja2dyb3VuZENvbG9yIHsgV2ViQ29yZTo6Q29sb3I6OndoaXRl
IH07CisgICAgV2ViQ29yZTo6Q29sb3IgbV92aWV3QmFja2dyb3VuZENvbG9yIHsgV2ViQ29yZTo6
Q29sb3I6OnRyYW5zcGFyZW50IH07CiAKICAgICBXZWJDb3JlOjpUZXh0dXJlTWFwcGVyRlBTQ291
bnRlciBtX2Zwc0NvdW50ZXI7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
Q29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9y
LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRj
b21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHAKaW5kZXggNzUyMmY4NGVhOGY4YTY4MjNi
YjkyMWZmYzNmMDVjZmJkODdlYjU4MS4uZGRiZWY1NmY3NTY4NzVhNDZjNzg2YzJkNTA4YmUyMTdm
ZGE4NmI0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFw
aGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9U
aHJlYWRlZENvbXBvc2l0b3IuY3BwCkBAIC0xNjMsNiArMTYzLDEzIEBAIHZvaWQgVGhyZWFkZWRD
b21wb3NpdG9yOjpzZXREcmF3c0JhY2tncm91bmQoYm9vbCBkcmF3c0JhY2tncm91bmQpCiAgICAg
bV9jb21wb3NpdGluZ1J1bkxvb3AtPnNjaGVkdWxlVXBkYXRlKCk7CiB9CiAKK3ZvaWQgVGhyZWFk
ZWRDb21wb3NpdG9yOjpzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImIGJhY2tncm91bmRD
b2xvcikKK3sKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2F0dHJpYnV0ZXMubG9jayk7CisgICAg
bV9hdHRyaWJ1dGVzLmJhY2tncm91bmRDb2xvciA9IGJhY2tncm91bmRDb2xvcjsKKyAgICBtX2Nv
bXBvc2l0aW5nUnVuTG9vcC0+c2NoZWR1bGVVcGRhdGUoKTsKK30KKwogdm9pZCBUaHJlYWRlZENv
bXBvc2l0b3I6OnVwZGF0ZVZpZXdwb3J0KCkKIHsKICAgICBtX2NvbXBvc2l0aW5nUnVuTG9vcC0+
c2NoZWR1bGVVcGRhdGUoKTsKQEAgLTE5Niw2ICsyMDMsOCBAQCB2b2lkIFRocmVhZGVkQ29tcG9z
aXRvcjo6cmVuZGVyTGF5ZXJUcmVlKCkKICAgICBmbG9hdCBzY2FsZUZhY3RvcjsKICAgICBib29s
IGRyYXdzQmFja2dyb3VuZDsKICAgICBib29sIG5lZWRzUmVzaXplOworICAgIFdlYkNvcmU6OkNv
bG9yIGJhY2tncm91bmRDb2xvcjsKKwogICAgIFZlY3RvcjxXZWJDb3JlOjpDb29yZGluYXRlZEdy
YXBoaWNzU3RhdGU+IHN0YXRlczsKIAogICAgIHsKQEAgLTIwNSw2ICsyMTQsNyBAQCB2b2lkIFRo
cmVhZGVkQ29tcG9zaXRvcjo6cmVuZGVyTGF5ZXJUcmVlKCkKICAgICAgICAgc2NhbGVGYWN0b3Ig
PSBtX2F0dHJpYnV0ZXMuc2NhbGVGYWN0b3I7CiAgICAgICAgIGRyYXdzQmFja2dyb3VuZCA9IG1f
YXR0cmlidXRlcy5kcmF3c0JhY2tncm91bmQ7CiAgICAgICAgIG5lZWRzUmVzaXplID0gbV9hdHRy
aWJ1dGVzLm5lZWRzUmVzaXplOworICAgICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBtX2F0dHJpYnV0
ZXMuYmFja2dyb3VuZENvbG9yOwogCiAgICAgICAgIHN0YXRlcyA9IFdURk1vdmUobV9hdHRyaWJ1
dGVzLnN0YXRlcyk7CiAKQEAgLTI1Myw4ICsyNjMsOCBAQCB2b2lkIFRocmVhZGVkQ29tcG9zaXRv
cjo6cmVuZGVyTGF5ZXJUcmVlKCkKICAgICB9CiAKICAgICBtX3NjZW5lLT5hcHBseVN0YXRlQ2hh
bmdlcyhzdGF0ZXMpOwotICAgIG1fc2NlbmUtPnBhaW50VG9DdXJyZW50R0xDb250ZXh0KHZpZXdw
b3J0VHJhbnNmb3JtLCAxLCBGbG9hdFJlY3QgeyBGbG9hdFBvaW50IHsgfSwgdmlld3BvcnRTaXpl
IH0sCi0gICAgICAgIENvbG9yOjp0cmFuc3BhcmVudCwgIWRyYXdzQmFja2dyb3VuZCwgbV9wYWlu
dEZsYWdzKTsKKyAgICBtX3NjZW5lLT5wYWludFRvQ3VycmVudEdMQ29udGV4dCh2aWV3cG9ydFRy
YW5zZm9ybSwgRmxvYXRSZWN0IHsgRmxvYXRQb2ludCB7IH0sIHZpZXdwb3J0U2l6ZSB9LAorICAg
ICAgICBiYWNrZ3JvdW5kQ29sb3IsIGRyYXdzQmFja2dyb3VuZCwgbV9wYWludEZsYWdzKTsKIAog
ICAgIG1fY29udGV4dC0+c3dhcEJ1ZmZlcnMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRD
b21wb3NpdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3Ro
cmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuaAppbmRleCA2ZDcwNTM4NTBkYWQ1
N2ExNjRmMTllOTE4NmY0ZmEyYTZhODY2YWZmLi5iYzlhYzYxNmUzODEyNzgwNDA3YjdjOTZjMjFl
MmQ5ZjdkYTdjYzU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRl
ZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRv
ci9UaHJlYWRlZENvbXBvc2l0b3IuaApAQCAtNzEsNiArNzEsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRTY3JvbGxQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIGZsb2F0IHNjYWxl
KTsKICAgICB2b2lkIHNldFZpZXdwb3J0U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgZmxv
YXQgc2NhbGUpOwogICAgIHZvaWQgc2V0RHJhd3NCYWNrZ3JvdW5kKGJvb2wpOworICAgIHZvaWQg
c2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJik7CiAKICAgICB2b2lkIHVw
ZGF0ZVNjZW5lU3RhdGUoY29uc3QgV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlJik7
CiAKQEAgLTExNCw3ICsxMTUsNyBAQCBwcml2YXRlOgogICAgICAgICBmbG9hdCBzY2FsZUZhY3Rv
ciB7IDEgfTsKICAgICAgICAgYm9vbCBkcmF3c0JhY2tncm91bmQgeyB0cnVlIH07CiAgICAgICAg
IGJvb2wgbmVlZHNSZXNpemUgeyBmYWxzZSB9OwotCisgICAgICAgIFdlYkNvcmU6OkNvbG9yIGJh
Y2tncm91bmRDb2xvcjsKICAgICAgICAgVmVjdG9yPFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhp
Y3NTdGF0ZT4gc3RhdGVzOwogCiAgICAgICAgIGJvb2wgY2xpZW50UmVuZGVyc05leHRGcmFtZSB7
IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnMuY3BwCmluZGV4IGNhMmRmNDBlZTFkZDJjYTM2ZjNhNDhhMDQ3NTdmOTdiZGJiNjM2
NDcuLjVlYmIwYTlhZDNhMDdjMDUwYTY4ZDgyYTdiYTQzNTEwM2U5MjgxYTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC0x
MjAsNiArMTIwLDkgQEAgdm9pZCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoSVBD
OjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMp
CiAgICAgZW5jb2RlciA8PCBjb250ZW50UnVsZUxpc3RzOwogI2VuZGlmCisjaWYgUExBVEZPUk0o
R1RLKSB8fCBQTEFURk9STShXUEUpCisgICAgZW5jb2RlciA8PCBiYWNrZ3JvdW5kQ29sb3I7Cisj
ZW5kaWYKIH0KIAogT3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKQEAgLTM0Nyw2
ICszNTAsMTAgQEAgT3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2QKICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKICAgICBwYXJhbWV0ZXJzLmNvbnRlbnRSdWxlTGlzdHMgPSBXVEZNb3ZlKCpjb250
ZW50UnVsZUxpc3RzKTsKICNlbmRpZgorI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BF
KQorICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5iYWNrZ3JvdW5kQ29sb3IpKQor
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworI2VuZGlmCiAKICAgICByZXR1cm4gV1RGTW92
ZShwYXJhbWV0ZXJzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMuaAppbmRleCBhZTQzMjVjYmQ1ZjFlNTY3NjE2NTg2ZjVlOWZhNzNlZTVi
MzViOTM3Li5jNDM1YmQ1YTI0NGQ2NGExYTBjYTYyNDBlYzAxN2ZiMzA0ZDRhZDc2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC0x
ODYsNiArMTg2LDEwIEBAIHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICNpZiBF
TkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQogICAgIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBX
ZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERhdGE+PiBjb250ZW50UnVsZUxpc3RzOwogI2VuZGlm
CisKKyNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkKKyAgICBXZWJDb3JlOjpDb2xv
ciBiYWNrZ3JvdW5kQ29sb3I7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzV1BFLnR4dCBiL1NvdXJjZS9XZWJLaXQv
U291cmNlc1dQRS50eHQKaW5kZXggNTExOWNhZTU2YmMwNmYyMjk3M2Y2NzMzYzA4NDM3YWIyZTNl
M2UxMi4uMWE4MjBhODViNTFhNTUwN2Q4ZDZiMzA5ZjkwZjU4MzQxZTY4MDI1MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzV1BFLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXNXUEUudHh0CkBAIC0xNjgsNiArMTY4LDcgQEAgVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdp
bmRvd1Byb3BlcnRpZXMuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS93cGUvQ29tcG9zaXRp
bmdNYW5hZ2VyUHJveHkuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS93cGUvUGFnZUNsaWVu
dEltcGwuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS93cGUvU2Nyb2xsR2VzdHVyZUNvbnRy
b2xsZXIuY3BwIEBuby11bmlmeQorVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0Q29sb3IuY3BwIEBu
by11bmlmeQogVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0U2NyaXB0RGlhbG9nV1BFLmNwcCBAbm8t
dW5pZnkKIFVJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXdCYWNrZW5kLmNwcCBAbm8tdW5p
ZnkKIFVJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXdXUEUuY3BwIEBuby11bmlmeQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcApp
bmRleCA2NzIwMWQ4OWVhYTFmM2YyMGRmOGI5MWYxZGExNWQ5YzI1OGI2MzhmLi43YThhMTBmNWMx
YzgwMTU5YTI4YTc2MTM2NGEyNjIwNTllZWM3YzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcApAQCAtMzk2OSw3NCArMzk2OSw2
IEBAIHZvaWQgd2Via2l0V2ViVmlld1dlYlByb2Nlc3NUZXJtaW5hdGVkKFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcsIFdlYktpdFdlYlByb2Nlc3NUCiAgICAgZ19zaWduYWxfZW1pdCh3ZWJWaWV3LCBz
aWduYWxzW1dFQl9QUk9DRVNTX1RFUk1JTkFURURdLCAwLCByZWFzb24pOwogfQogCi0jaWYgUExB
VEZPUk0oR1RLKQotLyoqCi0gKiB3ZWJraXRfd2ViX3ZpZXdfc2V0X2JhY2tncm91bmRfY29sb3I6
Ci0gKiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZpZXcKLSAqIEByZ2JhOiBhICNHZGtSR0JBCi0g
KgotICogU2V0cyB0aGUgY29sb3IgdGhhdCB3aWxsIGJlIHVzZWQgdG8gZHJhdyB0aGUgQHdlYl92
aWV3IGJhY2tncm91bmQgYmVmb3JlCi0gKiB0aGUgYWN0dWFsIGNvbnRlbnRzIGFyZSByZW5kZXJl
ZC4gTm90ZSB0aGF0IGlmIHRoZSB3ZWIgcGFnZSBsb2FkZWQgaW4gQHdlYl92aWV3Ci0gKiBzcGVj
aWZpZXMgYSBiYWNrZ3JvdW5kIGNvbG9yLCBpdCB3aWxsIHRha2UgcHJlY2VkZW5jZSBvdmVyIHRo
ZSBAcmdiYSBjb2xvci4KLSAqIEJ5IGRlZmF1bHQgdGhlIEB3ZWJfdmlldyBiYWNrZ3JvdW5kIGNv
bG9yIGlzIG9wYXF1ZSB3aGl0ZS4KLSAqIE5vdGUgdGhhdCB0aGUgcGFyZW50IHdpbmRvdyBtdXN0
IGhhdmUgYSBSR0JBIHZpc3VhbCBhbmQKLSAqICNHdGtXaWRnZXQ6YXBwLXBhaW50YWJsZSBwcm9w
ZXJ0eSBzZXQgdG8gJVRSVUUgZm9yIGJhY2tncm91bmRzIGNvbG9ycyB0byB3b3JrLgotICoKLSAq
IDxpbmZvcm1hbGV4YW1wbGU+PHByb2dyYW1saXN0aW5nPgotICogc3RhdGljIHZvaWQgYnJvd3Nl
cl93aW5kb3dfc2V0X2JhY2tncm91bmRfY29sb3IgKEJyb3dzZXJXaW5kb3cgKndpbmRvdywKLSAq
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
ZGtSR0JBICpyZ2JhKQotICogewotICogICAgIFdlYktpdFdlYlZpZXcgKndlYl92aWV3OwotICog
ICAgIEdka1NjcmVlbiAqc2NyZWVuID0gZ3RrX3dpbmRvd19nZXRfc2NyZWVuIChHVEtfV0lORE9X
ICh3aW5kb3cpKTsKLSAqICAgICBHZGtWaXN1YWwgKnJnYmFfdmlzdWFsID0gZ2RrX3NjcmVlbl9n
ZXRfcmdiYV92aXN1YWwgKHNjcmVlbik7Ci0gKgotICogICAgIGlmICghcmdiYV92aXN1YWwpCi0g
KiAgICAgICAgICByZXR1cm47Ci0gKgotICogICAgIGd0a193aWRnZXRfc2V0X3Zpc3VhbCAoR1RL
X1dJREdFVCAod2luZG93KSwgcmdiYV92aXN1YWwpOwotICogICAgIGd0a193aWRnZXRfc2V0X2Fw
cF9wYWludGFibGUgKEdUS19XSURHRVQgKHdpbmRvdyksIFRSVUUpOwotICoKLSAqICAgICB3ZWJf
dmlldyA9IGJyb3dzZXJfd2luZG93X2dldF93ZWJfdmlldyAod2luZG93KTsKLSAqICAgICB3ZWJr
aXRfd2ViX3ZpZXdfc2V0X2JhY2tncm91bmRfY29sb3IgKHdlYl92aWV3LCByZ2JhKTsKLSAqIH0K
LSAqIDwvcHJvZ3JhbWxpc3Rpbmc+PC9pbmZvcm1hbGV4YW1wbGU+Ci0gKgotICogU2luY2U6IDIu
OAotICovCi12b2lkIHdlYmtpdF93ZWJfdmlld19zZXRfYmFja2dyb3VuZF9jb2xvcihXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBHZGtSR0JBKiByZ2JhKQotewotICAgIGdfcmV0dXJuX2lm
X2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpKTsKLSAgICBnX3JldHVybl9pZl9mYWls
KHJnYmEpOwotCi0gICAgQ29sb3IgY29sb3IoKnJnYmEpOwotICAgIGF1dG8mIHBhZ2UgPSBnZXRQ
YWdlKHdlYlZpZXcpOwotICAgIGlmIChwYWdlLmJhY2tncm91bmRDb2xvcigpID09IGNvbG9yKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBwYWdlLnNldEJhY2tncm91bmRDb2xvcihjb2xvcik7Ci0g
ICAgcGFnZS5zZXREcmF3c0JhY2tncm91bmQoY29sb3IgPT0gQ29sb3I6OndoaXRlKTsKLX0KLQot
LyoqCi0gKiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2JhY2tncm91bmRfY29sb3I6Ci0gKiBAd2ViX3Zp
ZXc6IGEgI1dlYktpdFdlYlZpZXcKLSAqIEByZ2JhOiAob3V0KTogYSAjR2RrUkdCQSB0byBmaWxs
IGluIHdpdGggdGhlIGJhY2tncm91bmQgY29sb3IKLSAqCi0gKiBHZXRzIHRoZSBjb2xvciB0aGF0
IGlzIHVzZWQgdG8gZHJhdyB0aGUgQHdlYl92aWV3IGJhY2tncm91bmQgYmVmb3JlCi0gKiB0aGUg
YWN0dWFsIGNvbnRlbnRzIGFyZSByZW5kZXJlZC4KLSAqIEZvciBtb3JlIGluZm9ybWF0aW9uIHNl
ZSBhbHNvIHdlYmtpdF93ZWJfdmlld19zZXRfYmFja2dyb3VuZF9jb2xvcigpCi0gKgotICogU2lu
Y2U6IDIuOAotICovCi12b2lkIHdlYmtpdF93ZWJfdmlld19nZXRfYmFja2dyb3VuZF9jb2xvcihX
ZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBHZGtSR0JBKiByZ2JhKQotewotICAgIGdfcmV0dXJuX2lm
X2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpKTsKLSAgICBnX3JldHVybl9pZl9mYWls
KHJnYmEpOwotCi0gICAgKnJnYmEgPSBnZXRQYWdlKHdlYlZpZXcpLmJhY2tncm91bmRDb2xvcigp
OwotfQotI2VuZGlmIC8vIFBMQVRGT1JNKEdUSykKLQogLyoKICAqIHdlYmtpdF93ZWJfdmlld19p
c19lZGl0YWJsZToKICAqIEB3ZWJfdmlldzogYSAjV2ViS2l0V2ViVmlldwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3R3RrLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0d0ay5jcHAKaW5kZXgg
YmM4MjE3OTkxMjgyNmFiNDdhZjdjOTY1NzVlMWJhOGJhNDI2ZTg4MS4uZWQ1NjllNjJkYzBiNTQ5
YjMxYTdjZGQ3NDA3M2IyNjRjYjg0YmY1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdHdGsuY3BwCkBAIC0yNCw2ICsyNCw3IEBACiAj
aW5jbHVkZSAiV2ViS2l0U2NyaXB0RGlhbG9nSW1wbC5oIgogI2luY2x1ZGUgIldlYktpdFdlYlZp
ZXdCYXNlUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYlZpZXdQcml2YXRlLmgiCisjaW5j
bHVkZSA8V2ViQ29yZS9Db2xvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3RrVXRpbGl0aWVzLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybURpc3BsYXkuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1BsYXRmb3JtU2NyZWVuLmg+CkBAIC0zNTksMyArMzYwLDcxIEBAIEd0a1dpZGdldCogd2Via2l0
X3dlYl92aWV3X25ld193aXRoX3VzZXJfY29udGVudF9tYW5hZ2VyKFdlYktpdFVzZXJDb250ZW50
TWFuYWdlCiAKICAgICByZXR1cm4gR1RLX1dJREdFVChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVf
V0VCX1ZJRVcsICJ1c2VyLWNvbnRlbnQtbWFuYWdlciIsIHVzZXJDb250ZW50TWFuYWdlciwgbnVs
bHB0cikpOwogfQorCisvKioKKyAqIHdlYmtpdF93ZWJfdmlld19zZXRfYmFja2dyb3VuZF9jb2xv
cjoKKyAqIEB3ZWJfdmlldzogYSAjV2ViS2l0V2ViVmlldworICogQHJnYmE6IGEgI0dka1JHQkEK
KyAqCisgKiBTZXRzIHRoZSBjb2xvciB0aGF0IHdpbGwgYmUgdXNlZCB0byBkcmF3IHRoZSBAd2Vi
X3ZpZXcgYmFja2dyb3VuZCBiZWZvcmUKKyAqIHRoZSBhY3R1YWwgY29udGVudHMgYXJlIHJlbmRl
cmVkLiBOb3RlIHRoYXQgaWYgdGhlIHdlYiBwYWdlIGxvYWRlZCBpbiBAd2ViX3ZpZXcKKyAqIHNw
ZWNpZmllcyBhIGJhY2tncm91bmQgY29sb3IsIGl0IHdpbGwgdGFrZSBwcmVjZWRlbmNlIG92ZXIg
dGhlIEByZ2JhIGNvbG9yLgorICogQnkgZGVmYXVsdCB0aGUgQHdlYl92aWV3IGJhY2tncm91bmQg
Y29sb3IgaXMgb3BhcXVlIHdoaXRlLgorICogTm90ZSB0aGF0IHRoZSBwYXJlbnQgd2luZG93IG11
c3QgaGF2ZSBhIFJHQkEgdmlzdWFsIGFuZAorICogI0d0a1dpZGdldDphcHAtcGFpbnRhYmxlIHBy
b3BlcnR5IHNldCB0byAlVFJVRSBmb3IgYmFja2dyb3VuZHMgY29sb3JzIHRvIHdvcmsuCisgKgor
ICogPGluZm9ybWFsZXhhbXBsZT48cHJvZ3JhbWxpc3Rpbmc+CisgKiBzdGF0aWMgdm9pZCBicm93
c2VyX3dpbmRvd19zZXRfYmFja2dyb3VuZF9jb2xvciAoQnJvd3NlcldpbmRvdyAqd2luZG93LAor
ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdka1JHQkEgKnJnYmEpCisgKiB7CisgKiAgICAgV2ViS2l0V2ViVmlldyAqd2ViX3ZpZXc7Cisg
KiAgICAgR2RrU2NyZWVuICpzY3JlZW4gPSBndGtfd2luZG93X2dldF9zY3JlZW4gKEdUS19XSU5E
T1cgKHdpbmRvdykpOworICogICAgIEdka1Zpc3VhbCAqcmdiYV92aXN1YWwgPSBnZGtfc2NyZWVu
X2dldF9yZ2JhX3Zpc3VhbCAoc2NyZWVuKTsKKyAqCisgKiAgICAgaWYgKCFyZ2JhX3Zpc3VhbCkK
KyAqICAgICAgICAgIHJldHVybjsKKyAqCisgKiAgICAgZ3RrX3dpZGdldF9zZXRfdmlzdWFsIChH
VEtfV0lER0VUICh3aW5kb3cpLCByZ2JhX3Zpc3VhbCk7CisgKiAgICAgZ3RrX3dpZGdldF9zZXRf
YXBwX3BhaW50YWJsZSAoR1RLX1dJREdFVCAod2luZG93KSwgVFJVRSk7CisgKgorICogICAgIHdl
Yl92aWV3ID0gYnJvd3Nlcl93aW5kb3dfZ2V0X3dlYl92aWV3ICh3aW5kb3cpOworICogICAgIHdl
YmtpdF93ZWJfdmlld19zZXRfYmFja2dyb3VuZF9jb2xvciAod2ViX3ZpZXcsIHJnYmEpOworICog
fQorICogPC9wcm9ncmFtbGlzdGluZz48L2luZm9ybWFsZXhhbXBsZT4KKyAqCisgKiBTaW5jZTog
Mi44CisgKi8KK3ZvaWQgd2Via2l0X3dlYl92aWV3X3NldF9iYWNrZ3JvdW5kX2NvbG9yKFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IEdka1JHQkEqIHJnYmEpCit7CisgICAgZ19yZXR1cm5f
aWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldykpOworICAgIGdfcmV0dXJuX2lmX2Zh
aWwocmdiYSk7CisKKyAgICBXZWJDb3JlOjpDb2xvciBjb2xvcigqcmdiYSk7CisgICAgYXV0byYg
cGFnZSA9ICp3ZWJraXRXZWJWaWV3QmFzZUdldFBhZ2UocmVpbnRlcnByZXRfY2FzdDxXZWJLaXRX
ZWJWaWV3QmFzZSo+KHdlYlZpZXcpKTsKKyAgICBpZiAocGFnZS5iYWNrZ3JvdW5kQ29sb3IoKSA9
PSBjb2xvcikKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFjb2xvci5pc09wYXF1ZSgpKQor
ICAgICAgICBwYWdlLnNldERyYXdzQmFja2dyb3VuZChmYWxzZSk7CisgICAgcGFnZS5zZXRCYWNr
Z3JvdW5kQ29sb3IoY29sb3IpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfdmlld19nZXRfYmFj
a2dyb3VuZF9jb2xvcjoKKyAqIEB3ZWJfdmlldzogYSAjV2ViS2l0V2ViVmlldworICogQHJnYmE6
IChvdXQpOiBhICNHZGtSR0JBIHRvIGZpbGwgaW4gd2l0aCB0aGUgYmFja2dyb3VuZCBjb2xvcgor
ICoKKyAqIEdldHMgdGhlIGNvbG9yIHRoYXQgaXMgdXNlZCB0byBkcmF3IHRoZSBAd2ViX3ZpZXcg
YmFja2dyb3VuZCBiZWZvcmUKKyAqIHRoZSBhY3R1YWwgY29udGVudHMgYXJlIHJlbmRlcmVkLgor
ICogRm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlIGFsc28gd2Via2l0X3dlYl92aWV3X3NldF9iYWNr
Z3JvdW5kX2NvbG9yKCkKKyAqCisgKiBTaW5jZTogMi44CisgKi8KK3ZvaWQgd2Via2l0X3dlYl92
aWV3X2dldF9iYWNrZ3JvdW5kX2NvbG9yKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIEdka1JHQkEq
IHJnYmEpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmll
dykpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwocmdiYSk7CisKKyAgICBhdXRvJiBwYWdlID0gKndl
YmtpdFdlYlZpZXdCYXNlR2V0UGFnZShyZWludGVycHJldF9jYXN0PFdlYktpdFdlYlZpZXdCYXNl
Kj4od2ViVmlldykpOworICAgICpyZ2JhID0gcGFnZS5iYWNrZ3JvdW5kQ29sb3IoKTsKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0Q29sb3IuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRDb2xvci5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNzQyZDMyY2I3NmYxZGEwM2Y4OTViNzhiNjlkOWU1M2I4MDJhZjBlZgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0Q29sb3IuY3Bw
CkBAIC0wLDAgKzEsMTE1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IElnYWxpYSBTLkwu
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJLaXRDb2xvci5oIgorCisjaW5jbHVk
ZSAiV2ViS2l0Q29sb3JQcml2YXRlLmgiCisKKy8qKgorICogU0VDVElPTjogV2ViS2l0Q29sb3IK
KyAqIEBTaG9ydF9kZXNjcmlwdGlvbjogQSBib3hlZCB0eXBlIHJlcHJlc2VudGluZyBhIFJHQkEg
Y29sb3IKKyAqIEBUaXRsZTogV2ViS2l0Q29sb3IKKyAqIEBTZWVfYWxzbzogI1dlYktpdFdlYlZp
ZXcuCisgKgorICogQSBXZWJLaXRDb2xvciBpcyBhIGJveGVkIHR5cGUgcmVwcmVzZW50aW5nIGEg
UkdCQSBjb2xvci4KKyAqCisgKiBTaW5jZTogMi4yNAorICovCisKKy8qKgorICogd2Via2l0X2Nv
bG9yX2NvcHk6CisgKiBAY29sb3I6IGEgI1dlYktpdENvbG9yCisgKgorICogTWFrZSBhIGNvcHkg
b2YgQGNvbG9yLgorICoKKyAqIFJldHVybnM6ICh0cmFuc2ZlciBmdWxsKTogQSBjb3B5IG9mIHBh
c3NlZCBpbiAjV2ViS2l0Q29sb3IuCisgKgorICogU2luY2U6IDIuMjQKKyAqLworV2ViS2l0Q29s
b3IqIHdlYmtpdF9jb2xvcl9jb3B5KFdlYktpdENvbG9yKiBjb2xvcikKK3sKKyAgICBnX3JldHVy
bl92YWxfaWZfZmFpbChjb2xvciwgbnVsbHB0cik7CisgICAgV2ViS2l0Q29sb3IqIGNvcHkgPSBz
dGF0aWNfY2FzdDxXZWJLaXRDb2xvcio+KGZhc3RaZXJvZWRNYWxsb2Moc2l6ZW9mKFdlYktpdENv
bG9yKSkpOworICAgIGNvcHktPnJlZCA9IGNvbG9yLT5yZWQ7CisgICAgY29weS0+Z3JlZW4gPSBj
b2xvci0+Z3JlZW47CisgICAgY29weS0+Ymx1ZSA9IGNvbG9yLT5ibHVlOworICAgIGNvcHktPmFs
cGhhID0gY29sb3ItPmFscGhhOworICAgIHJldHVybiBjb3B5OworfQorCisvKioKKyAqIHdlYmtp
dF9jb2xvcl9mcmVlOgorICogQGNvbG9yOiBhICNXZWJLaXRDb2xvcgorICoKKyAqIEZyZWUgdGhl
ICNXZWJLaXRDb2xvci4KKyAqCisgKiBTaW5jZTogMi4yNAorICovCit2b2lkIHdlYmtpdF9jb2xv
cl9mcmVlKFdlYktpdENvbG9yKiBjb2xvcikKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKGNvbG9y
KTsKKyAgICBmYXN0RnJlZShjb2xvcik7Cit9CisKK0dfREVGSU5FX0JPWEVEX1RZUEUoV2ViS2l0
Q29sb3IsIHdlYmtpdF9jb2xvciwgd2Via2l0X2NvbG9yX2NvcHksIHdlYmtpdF9jb2xvcl9mcmVl
KTsKKworY29uc3QgV2ViQ29yZTo6Q29sb3Igd2Via2l0Q29sb3JUb1dlYkNvcmVDb2xvcihXZWJL
aXRDb2xvciogY29sb3IpCit7CisgICAgcmV0dXJuIFdlYkNvcmU6OkNvbG9yKHN0YXRpY19jYXN0
PGZsb2F0Pihjb2xvci0+cmVkKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNvbG9yLT5ncmVlbiksCisg
ICAgICAgIHN0YXRpY19jYXN0PGZsb2F0Pihjb2xvci0+Ymx1ZSksIHN0YXRpY19jYXN0PGZsb2F0
Pihjb2xvci0+YWxwaGEpKTsKK30KKwordm9pZCB3ZWJraXRDb2xvckZpbGxGcm9tV2ViQ29yZUNv
bG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiB3ZWJDb3JlQ29sb3IsIFdlYktpdENvbG9yKiBjb2xv
cikKK3sKKyAgICBSRUxFQVNFX0FTU0VSVCh3ZWJDb3JlQ29sb3IuaXNWYWxpZCgpKTsKKyAgICBk
b3VibGUgciwgZywgYiwgYTsKKyAgICB3ZWJDb3JlQ29sb3IuZ2V0UkdCQShyLCBnLCBiLCBhKTsK
KyAgICBjb2xvci0+cmVkID0gcjsKKyAgICBjb2xvci0+Z3JlZW4gPSBnOworICAgIGNvbG9yLT5i
bHVlID0gYjsKKyAgICBjb2xvci0+YWxwaGEgPSBhOworfQorCisvKioKKyAqIHdlYmtpdF9jb2xv
cl9wYXJzZToKKyAqIEBjb2xvcjogYSAjV2ViS2l0Q29sb3IgdG8gZmlsbCBpbgorICogQGNvbG9y
X3N0cmluZzogY29sb3IgcmVwcmVzZW50YXRpb24gYXMgY29sb3Igbmlja25hbWUgb3IgSEVYIHN0
cmluZworICoKKyAqIENyZWF0ZSBhIG5ldyAjV2ViS2l0Q29sb3IgZm9yIHRoZSBnaXZlbiBAY29s
b3Jfc3RyaW5nCisgKiByZXByZXNlbnRhdGlvbi4gVGhlcmUgYXJlIHR3byB2YWxpZCByZXByZXNl
bnRhdGlvbiB0eXBlczogc3RhbmRhcmQgY29sb3IKKyAqIG5hbWVzIChzZWUgaHR0cHM6Ly9odG1s
Y29sb3Jjb2Rlcy5jb20vY29sb3ItbmFtZXMvIGZvciBpbnN0YW5jZSkgb3IgSEVYCisgKiB2YWx1
ZXMuCisgKgorICogUmV0dXJuczogYSAjZ2Jvb2xlYW4gaW5kaWNhdGluZyBpZiB0aGUgQGNvbG9y
IHdhcyBjb3JyZWN0bHkgZmlsbGVkIGluIG9yIG5vdC4KKyAqCisgKiBTaW5jZTogMi4yNAorICov
CitnYm9vbGVhbiB3ZWJraXRfY29sb3JfcGFyc2UoV2ViS2l0Q29sb3IqIGNvbG9yLCBjb25zdCBn
Y2hhciogY29sb3JTdHJpbmcpCit7CisgICAgYXV0byB3ZWJDb3JlQ29sb3IgPSBXZWJDb3JlOjpD
b2xvcihjb2xvclN0cmluZyk7CisgICAgaWYgKCF3ZWJDb3JlQ29sb3IuaXNWYWxpZCgpKQorICAg
ICAgICByZXR1cm4gRkFMU0U7CisKKyAgICBpZiAoY29sb3IpIHsKKyAgICAgICAgd2Via2l0Q29s
b3JGaWxsRnJvbVdlYkNvcmVDb2xvcih3ZWJDb3JlQ29sb3IsIGNvbG9yKTsKKyAgICAgICAgcmV0
dXJuIFRSVUU7CisgICAgfQorICAgIHJldHVybiBGQUxTRTsKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0Q29sb3IuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0Q29sb3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNGVkMTc4YzQxOGMw
MTk5NDE2N2VhYmUxMWJkY2MyNTZjOWIwYzI0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRDb2xvci5oCkBAIC0wLDAgKzEsNTggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwor
ICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
KyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoK
KyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICog
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmICFkZWZpbmVkKF9fV0VCS0lU
X0hfSU5TSURFX18pICYmICFkZWZpbmVkKFdFQktJVDJfQ09NUElMQVRJT04pCisjZXJyb3IgIk9u
bHkgPHdwZS93ZWJraXQuaD4gY2FuIGJlIGluY2x1ZGVkIGRpcmVjdGx5LiIKKyNlbmRpZgorCisj
aWZuZGVmIFdlYktpdENvbG9yX2gKKyNkZWZpbmUgV2ViS2l0Q29sb3JfaAorCisjaW5jbHVkZSA8
Z2xpYi1vYmplY3QuaD4KKyNpbmNsdWRlIDx3cGUvV2ViS2l0RGVmaW5lcy5oPgorCitHX0JFR0lO
X0RFQ0xTCisKKy8qKgorICogV2ViS2l0Q29sb3I6CisgKiBAcmVkOiBSZWQgY2hhbm5lbCwgYmV0
d2VlbiAwIGFuZCAxCisgKiBAZ3JlZW46IEdyZWVuIGNoYW5uZWwsIGJldHdlZW4gMCBhbmQgMQor
ICogQGJsdWU6IEJsdWUgY2hhbm5lbCwgYmV0d2VlbiAwIGFuZCAxCisgKiBAYWxwaGE6IEFscGhh
IGNoYW5uZWwsIGJldHdlZW4gMCBhbmQgMQorICovCitzdHJ1Y3QgX1dlYktpdENvbG9yIHsKKyAg
ICBnZG91YmxlIHJlZDsKKyAgICBnZG91YmxlIGdyZWVuOworICAgIGdkb3VibGUgYmx1ZTsKKyAg
ICBnZG91YmxlIGFscGhhOworfTsKKwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdENvbG9yIFdlYktp
dENvbG9yOworCisjZGVmaW5lIFdFQktJVF9UWVBFX0NPTE9SICh3ZWJraXRfY29sb3JfZ2V0X3R5
cGUoKSkKKworV0VCS0lUX0FQSSBHVHlwZQord2Via2l0X2NvbG9yX2dldF90eXBlICAgICAodm9p
ZCk7CisKK1dFQktJVF9BUEkgZ2Jvb2xlYW4KK3dlYmtpdF9jb2xvcl9wYXJzZSAgICAgICAgKFdl
YktpdENvbG9yICpjb2xvciwgY29uc3QgZ2NoYXIgKmNvbG9yX3N0cmluZyk7CisKK0dfRU5EX0RF
Q0xTCisKKyNlbmRpZiAvKiBXZWJLaXRDb2xvcl9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdENvbG9yUHJpdmF0ZS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRDb2xvclByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzlh
MTE2MDM0MTc3NzFhZjQzY2NmYjRlZTk3ZWU3Y2IxYzIyYzczCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRDb2xvclByaXZhdGUuaApAQCAt
MCwwICsxLDI2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IElnYWxpYSBTLkwuCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICog
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJXZWJLaXRDb2xvci5oIgor
Cit2b2lkIHdlYmtpdENvbG9yRmlsbEZyb21XZWJDb3JlQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29s
b3ImLCBXZWJLaXRDb2xvciopOworY29uc3QgV2ViQ29yZTo6Q29sb3Igd2Via2l0Q29sb3JUb1dl
YkNvcmVDb2xvcihXZWJLaXRDb2xvciopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvd3BlL1dlYktpdFdlYlZpZXcuaAppbmRleCA0MTAyYTc1MjZkNmJkZjAxM2NiYjkwNGE1MjQy
NWQ2MWQxMmUzY2Q5Li4yYTRhNjIwNDIzNTUzM2UwYzc3ODBiZjM5NjY5NmJlOTc5YTE0MTQ4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXcu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXcuaApA
QCAtNDksNiArNDksNyBAQAogI2luY2x1ZGUgPHdwZS9XZWJLaXRXZWJDb250ZXh0Lmg+CiAjaW5j
bHVkZSA8d3BlL1dlYktpdFdlYlJlc291cmNlLmg+CiAjaW5jbHVkZSA8d3BlL1dlYktpdFdlYlZp
ZXdCYWNrZW5kLmg+CisjaW5jbHVkZSA8d3BlL1dlYktpdENvbG9yLmg+CiAjaW5jbHVkZSA8d3Bl
L1dlYktpdFdlYlZpZXdTZXNzaW9uU3RhdGUuaD4KICNpbmNsdWRlIDx3cGUvV2ViS2l0V2luZG93
UHJvcGVydGllcy5oPgogCkBAIC01MTcsNiArNTE4LDEzIEBAIFdFQktJVF9BUEkgdm9pZAogd2Vi
a2l0X3dlYl92aWV3X3JlbW92ZV9mcmFtZV9kaXNwbGF5ZWRfY2FsbGJhY2sgICAgICAoV2ViS2l0
V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50ICAgICAgICAgICAgICAgICAgICAg
ICAgaWQpOwogCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF93ZWJfdmlld19zZXRfYmFja2dyb3Vu
ZF9jb2xvciAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2Vi
X3ZpZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBXZWJLaXRDb2xvciAgICAgICAgICAgICAgICAgKmNvbG9yKTsKK1dFQktJVF9BUEkgdm9p
ZAord2Via2l0X3dlYl92aWV3X2dldF9iYWNrZ3JvdW5kX2NvbG9yICAgICAgICAgICAgICAgICAo
V2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdENvbG9yICAgICAgICAg
ICAgICAgICAqY29sb3IpOworCiBHX0VORF9ERUNMUwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViVmlld1dQRS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXdXUEUuY3BwCmluZGV4IGEz
NDk1ZTg1MmUxOWY5MmQxYzRmMGU5MzdiNGI5ZjExODMyZWFkYTQuLjRlMjAxMmYyODIxZGRhODg5
MDVkZDgwZTEzNzBkYzBlZjRhZGE1NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS93cGUvV2ViS2l0V2ViVmlld1dQRS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3V1BFLmNwcApAQCAtMjAsNiArMjAsNyBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYktpdFdlYlZpZXcuaCIKIAorI2luY2x1ZGUg
IldlYktpdENvbG9yUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYlZpZXdQcml2YXRlLmgi
CiAKIGdib29sZWFuIHdlYmtpdFdlYlZpZXdBdXRoZW50aWNhdGUoV2ViS2l0V2ViVmlldyosIFdl
YktpdEF1dGhlbnRpY2F0aW9uUmVxdWVzdCopCkBAIC0xNzgsMyArMTc5LDQ1IEBAIFdlYktpdFdl
YlZpZXcqIHdlYmtpdF93ZWJfdmlld19uZXdfd2l0aF91c2VyX2NvbnRlbnRfbWFuYWdlcihXZWJL
aXRXZWJWaWV3QmFja2VuCiAgICAgICAgICJ1c2VyLWNvbnRlbnQtbWFuYWdlciIsIHVzZXJDb250
ZW50TWFuYWdlciwKICAgICAgICAgbnVsbHB0cikpOwogfQorCisvKioKKyAqIHdlYmtpdF93ZWJf
dmlld19zZXRfYmFja2dyb3VuZF9jb2xvcjoKKyAqIEB3ZWJfdmlldzogYSAjV2ViS2l0V2ViVmll
dworICogQGJhY2tncm91bmRDb2xvcjogYSAjV2ViS2l0Q29sb3IKKyAqCisgKiBTZXRzIHRoZSBj
b2xvciB0aGF0IHdpbGwgYmUgdXNlZCB0byBkcmF3IHRoZSBAd2ViX3ZpZXcgYmFja2dyb3VuZCBi
ZWZvcmUKKyAqIHRoZSBhY3R1YWwgY29udGVudHMgYXJlIHJlbmRlcmVkLiBOb3RlIHRoYXQgaWYg
dGhlIHdlYiBwYWdlIGxvYWRlZCBpbiBAd2ViX3ZpZXcKKyAqIHNwZWNpZmllcyBhIGJhY2tncm91
bmQgY29sb3IsIGl0IHdpbGwgdGFrZSBwcmVjZWRlbmNlIG92ZXIgdGhlIGJhY2tncm91bmQgY29s
b3IuCisgKiBCeSBkZWZhdWx0IHRoZSBAd2ViX3ZpZXcgYmFja2dyb3VuZCBjb2xvciBpcyBvcGFx
dWUgd2hpdGUuCisgKgorICogU2luY2U6IDIuMjQKKyAqLwordm9pZCB3ZWJraXRfd2ViX3ZpZXdf
c2V0X2JhY2tncm91bmRfY29sb3IoV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0Q29sb3Iq
IGJhY2tncm91bmRDb2xvcikKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJf
VklFVyh3ZWJWaWV3KSk7CisgICAgZ19yZXR1cm5faWZfZmFpbChiYWNrZ3JvdW5kQ29sb3IpOwor
CisgICAgYXV0byYgcGFnZSA9IHdlYmtpdFdlYlZpZXdHZXRQYWdlKHdlYlZpZXcpOworICAgIHBh
Z2Uuc2V0QmFja2dyb3VuZENvbG9yKHdlYmtpdENvbG9yVG9XZWJDb3JlQ29sb3IoYmFja2dyb3Vu
ZENvbG9yKSk7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl92aWV3X2dldF9iYWNrZ3JvdW5kX2Nv
bG9yOgorICogQHdlYl92aWV3OiBhICNXZWJLaXRXZWJWaWV3CisgKiBAcmdiYTogKG91dCk6IGEg
I1dlYktpdENvbG9yIHRvIGZpbGwgaW4gd2l0aCB0aGUgYmFja2dyb3VuZCBjb2xvcgorICoKKyAq
IEdldHMgdGhlIGNvbG9yIHRoYXQgaXMgdXNlZCB0byBkcmF3IHRoZSBAd2ViX3ZpZXcgYmFja2dy
b3VuZCBiZWZvcmUgdGhlCisgKiBhY3R1YWwgY29udGVudHMgYXJlIHJlbmRlcmVkLiBGb3IgbW9y
ZSBpbmZvcm1hdGlvbiBzZWUgYWxzbworICogd2Via2l0X3dlYl92aWV3X3NldF9iYWNrZ3JvdW5k
X2NvbG9yKCkuCisgKgorICogU2luY2U6IDIuMjQKKyAqLwordm9pZCB3ZWJraXRfd2ViX3ZpZXdf
Z2V0X2JhY2tncm91bmRfY29sb3IoV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0Q29sb3Iq
IGNvbG9yKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZp
ZXcpKTsKKyAgICBhdXRvJiBwYWdlID0gd2Via2l0V2ViVmlld0dldFBhZ2Uod2ViVmlldyk7CisK
KyAgICBhdXRvJiB3ZWJDb3JlQ29sb3IgPSBwYWdlLmJhY2tncm91bmRDb2xvcigpOworICAgIGdf
cmV0dXJuX2lmX2ZhaWwod2ViQ29yZUNvbG9yLmlzVmFsaWQoKSk7CisgICAgd2Via2l0Q29sb3JG
aWxsRnJvbVdlYkNvcmVDb2xvcih3ZWJDb3JlQ29sb3IsIGNvbG9yKTsKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvZG9jcy93cGUtMC4xLXNlY3Rpb25zLnR4
dCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvZG9jcy93cGUtMC4xLXNlY3Rpb25z
LnR4dAppbmRleCA2MjhkYjQyNTJhNGQyYmY0OGY0OTBkYTU0MDg3YWM0YzJjOTViYzkxLi41ZTIz
OGM4ZmZhZmVjMmYyOTY0NzdiMGU1MGMxYzIxMGE2NzRlODlmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTAuMS1zZWN0aW9ucy50eHQKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dwZS0wLjEtc2VjdGlvbnMudHh0
CkBAIC0yMDYsNiArMjA2LDggQEAgd2Via2l0X3dlYl92aWV3X3Jlc3RvcmVfc2Vzc2lvbl9zdGF0
ZQogd2Via2l0X3dlYl92aWV3X2dldF9tYWluX3Jlc291cmNlCiB3ZWJraXRfd2ViX3ZpZXdfYWRk
X2ZyYW1lX2Rpc3BsYXllZF9jYWxsYmFjawogd2Via2l0X3dlYl92aWV3X3JlbW92ZV9mcmFtZV9k
aXNwbGF5ZWRfY2FsbGJhY2sKK3dlYmtpdF93ZWJfdmlld19nZXRfYmFja2dyb3VuZF9jb2xvcgor
d2Via2l0X3dlYl92aWV3X3NldF9iYWNrZ3JvdW5kX2NvbG9yCiAKIDxTVUJTRUNUSU9OIFdlYktp
dEphdmFzY3JpcHRSZXN1bHQ+CiBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0CkBAIC0yNjYsNiArMjY4
LDE2IEBAIHdlYmtpdF93ZWJfdmlld19iYWNrZW5kX25ldwogd2Via2l0X3dlYl92aWV3X2JhY2tl
bmRfZ2V0X3R5cGUKIDwvU0VDVElPTj4KIAorPFNFQ1RJT04+Cis8RklMRT5XZWJLaXRDb2xvcjwv
RklMRT4KK1dFQktJVF9UWVBFX0NPTE9SCitXZWJLaXRDb2xvcgord2Via2l0X2NvbG9yX3BhcnNl
CisKKzxTVUJTRUNUSU9OIFByaXZhdGU+Cit3ZWJraXRfY29sb3JfZ2V0X3R5cGUKKzwvU0VDVElP
Tj4KKwogPFNFQ1RJT04+CiA8RklMRT5XZWJLaXRBdXRoZW50aWNhdGlvblJlcXVlc3Q8L0ZJTEU+
CiBXZWJLaXRBdXRoZW50aWNhdGlvblJlcXVlc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCmluZGV4IGM4YWI3MDMzM2I0MDM5YTg3NzljNGNhM2YzMWUxOTA3NTYzYTMz
NjkuLjRmOWQ3M2UyMTllZmM4MTFmZjc2YTdmZDRjOWVlMGEwMTQwNWRkMTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMTUzOCw2ICsxNTM4LDE4IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpzZXREcmF3c0JhY2tncm91bmQoYm9vbCBkcmF3c0JhY2tncm91bmQp
CiAgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0RHJhd3NCYWNr
Z3JvdW5kKGRyYXdzQmFja2dyb3VuZCksIG1fcGFnZUlEKTsKIH0KIAorI2lmIFBMQVRGT1JNKEdU
SykgfHwgUExBVEZPUk0oV1BFKQordm9pZCBXZWJQYWdlUHJveHk6OnNldEJhY2tncm91bmRDb2xv
cihjb25zdCBXZWJDb3JlOjpDb2xvciYgY29sb3IpCit7CisgICAgaWYgKG1fYmFja2dyb3VuZENv
bG9yID09IGNvbG9yKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2JhY2tncm91bmRDb2xvciA9
IGNvbG9yOworICAgIGlmIChpc1ZhbGlkKCkpCisgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6U2V0QmFja2dyb3VuZENvbG9yKGNvbG9yKSwgbV9wYWdlSUQpOworfQor
I2VuZGlmCisKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRUb3BDb250ZW50SW5zZXQoZmxvYXQgY29u
dGVudEluc2V0KQogewogICAgIGlmIChtX3RvcENvbnRlbnRJbnNldCA9PSBjb250ZW50SW5zZXQp
CkBAIC02NzgxLDYgKzY3OTMsMTAgQEAgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBXZWJQYWdl
UHJveHk6OmNyZWF0aW9uUGFyYW1ldGVycygpCiAKICAgICBwYXJhbWV0ZXJzLm5lZWRzRm9udEF0
dHJpYnV0ZXMgPSBtX25lZWRzRm9udEF0dHJpYnV0ZXM7CiAKKyNpZiBQTEFURk9STShHVEspIHx8
IFBMQVRGT1JNKFdQRSkKKyAgICBwYXJhbWV0ZXJzLmJhY2tncm91bmRDb2xvciA9IG1fYmFja2dy
b3VuZENvbG9yOworI2VuZGlmCisKICAgICBtX3Byb2Nlc3MtPmFkZFdlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5KG1fdXNlckNvbnRlbnRDb250cm9sbGVyLCBwYXJhbWV0ZXJzKTsKIAogICAg
IHJldHVybiBwYXJhbWV0ZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApp
bmRleCBkZTk4Njk0YWEzN2RiM2M3ZjJjZTI3Y2M4MjlhOTIwMDIxMWRlMTBkLi4xMjZkZTQ1YTM1
NmYxMjgxMDk4M2Q5MDA4YTgxYjUyYjRiNzUyYzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaApAQCAtNzUyLDggKzc1MiwxMCBAQCBwdWJsaWM6CiAKICNpZiBQTEFURk9S
TShHVEspCiAgICAgUGxhdGZvcm1XaWRnZXQgdmlld1dpZGdldCgpOworI2VuZGlmCisjaWYgUExB
VEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpCiAgICAgY29uc3QgV2ViQ29yZTo6Q29sb3ImIGJh
Y2tncm91bmRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZENvbG9yOyB9Ci0gICAg
dm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9yKSB7IG1f
YmFja2dyb3VuZENvbG9yID0gY29sb3I7IH0KKyAgICB2b2lkIHNldEJhY2tncm91bmRDb2xvcihj
b25zdCBXZWJDb3JlOjpDb2xvciYpOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShXSU4pCkBAIC0y
MTY1LDYgKzIxNjcsOCBAQCBwcml2YXRlOgogCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIFN0cmlu
ZyBtX2FjY2Vzc2liaWxpdHlQbHVnSUQ7CisjZW5kaWYKKyNpZiBQTEFURk9STShHVEspIHx8IFBM
QVRGT1JNKFdQRSkKICAgICBXZWJDb3JlOjpDb2xvciBtX2JhY2tncm91bmRDb2xvciB7IFdlYkNv
cmU6OkNvbG9yOjp3aGl0ZSB9OwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwCmluZGV4IGFhY2I1YjljZTYxYjgxNjU3MTQ2YTRiY2E2NTM4MzRiYTBkNDAwYjAuLjcwMDM1
YmEzYjhkYjMwYTQ2MmUxOTdkMTIzMjZmMTAwMDMyZjY0NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmNwcApAQCAtMTM5NCw2ICsxMzk0LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNs
aWVudDo6dHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFnZSgpCiAKICAgICBib29sIGlzTWFp
bkZyYW1lID0gbV9mcmFtZS0+aXNNYWluRnJhbWUoKTsKICAgICBib29sIGlzVHJhbnNwYXJlbnQg
PSAhd2ViUGFnZS0+ZHJhd3NCYWNrZ3JvdW5kKCk7CisgICAgQ29sb3IgYmFja2dyb3VuZENvbG9y
ID0gd2ViUGFnZS0+YmFja2dyb3VuZENvbG9yKCk7CiAgICAgYm9vbCBzaG91bGRVc2VGaXhlZExh
eW91dCA9IGlzTWFpbkZyYW1lICYmIHdlYlBhZ2UtPnVzZUZpeGVkTGF5b3V0KCk7CiAgICAgYm9v
bCBzaG91bGREaXNhYmxlU2Nyb2xsaW5nID0gaXNNYWluRnJhbWUgJiYgIXdlYlBhZ2UtPm1haW5G
cmFtZUlzU2Nyb2xsYWJsZSgpOwogICAgIGJvb2wgc2hvdWxkSGlkZVNjcm9sbGJhcnMgPSBzaG91
bGREaXNhYmxlU2Nyb2xsaW5nOwpAQCAtMTQxOCw3ICsxNDE5LDcgQEAgdm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6dHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFnZSgpCiAgICAgYm9vbCBo
b3Jpem9udGFsTG9jayA9IHNob3VsZEhpZGVTY3JvbGxiYXJzIHx8IHdlYlBhZ2UtPmFsd2F5c1No
b3dzSG9yaXpvbnRhbFNjcm9sbGVyKCk7CiAgICAgYm9vbCB2ZXJ0aWNhbExvY2sgPSBzaG91bGRI
aWRlU2Nyb2xsYmFycyB8fCB3ZWJQYWdlLT5hbHdheXNTaG93c1ZlcnRpY2FsU2Nyb2xsZXIoKTsK
IAotICAgIG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5jcmVhdGVWaWV3KHdlYlBhZ2UtPnNpemUoKSwg
aXNUcmFuc3BhcmVudCwKKyAgICBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+Y3JlYXRlVmlldyh3ZWJQ
YWdlLT5zaXplKCksIGlzVHJhbnNwYXJlbnQsIGJhY2tncm91bmRDb2xvciwKICAgICAgICAgd2Vi
UGFnZS0+Zml4ZWRMYXlvdXRTaXplKCksIGZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0LCBzaG91bGRV
c2VGaXhlZExheW91dCwKICAgICAgICAgaG9yaXpvbnRhbFNjcm9sbGJhck1vZGUsIGhvcml6b250
YWxMb2NrLCB2ZXJ0aWNhbFNjcm9sbGJhck1vZGUsIHZlcnRpY2FsTG9jayk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0Fy
ZWEuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3
aW5nQXJlYS5jcHAKaW5kZXggOTkyMDQ2NWIxNzM5MmE4MzE0Y2YyZDA1YzMxNTMzZjU2MDZkMjAx
MS4uZjgzZWMwNjRmNGUxYjZkODJlNGVmMjU2NTNmMjg4NzdhYzc2ZmMyZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3aW5nQXJlYS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3
aW5nQXJlYS5jcHAKQEAgLTEwMSw2ICsxMDEsMTQgQEAgdm9pZCBBY2NlbGVyYXRlZERyYXdpbmdB
cmVhOjpwYWdlQmFja2dyb3VuZFRyYW5zcGFyZW5jeUNoYW5nZWQoKQogICAgICAgICBtX3ByZXZp
b3VzTGF5ZXJUcmVlSG9zdC0+cGFnZUJhY2tncm91bmRUcmFuc3BhcmVuY3lDaGFuZ2VkKCk7CiB9
CiAKK3ZvaWQgQWNjZWxlcmF0ZWREcmF3aW5nQXJlYTo6cGFnZUJhY2tncm91bmRDb2xvckNoYW5n
ZWQoKQoreworICAgIGlmIChtX2xheWVyVHJlZUhvc3QpCisgICAgICAgIG1fbGF5ZXJUcmVlSG9z
dC0+cGFnZUJhY2tncm91bmRDb2xvckNoYW5nZWQoKTsKKyAgICBlbHNlIGlmIChtX3ByZXZpb3Vz
TGF5ZXJUcmVlSG9zdCkKKyAgICAgICAgbV9wcmV2aW91c0xheWVyVHJlZUhvc3QtPnBhZ2VCYWNr
Z3JvdW5kQ29sb3JDaGFuZ2VkKCk7Cit9CisKIHZvaWQgQWNjZWxlcmF0ZWREcmF3aW5nQXJlYTo6
c2V0TGF5ZXJUcmVlU3RhdGVJc0Zyb3plbihib29sIGlzRnJvemVuKQogewogICAgIGlmIChtX2xh
eWVyVHJlZVN0YXRlSXNGcm96ZW4gPT0gaXNGcm96ZW4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZERyYXdpbmdBcmVhLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZERyYXdpbmdBcmVhLmgKaW5kZXgg
NzBhYmU0MzU5MjVjYmYzN2RiYzNkMmQ4NzRkYmY0ODNmNGM4ZjE5ZS4uYzJiZDVmNzZhOTY1ZjVk
YmIyNTIxNTk2NzgzZDViOGI2OGFlNjJmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3aW5nQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEuaApAQCAtNDQsNiAr
NDQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBzZXROZWVkc0Rpc3BsYXlJblJlY3QoY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2Nyb2xsKGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmIHNjcm9sbFJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNjcm9sbERl
bHRhKSBvdmVycmlkZTsKICAgICB2b2lkIHBhZ2VCYWNrZ3JvdW5kVHJhbnNwYXJlbmN5Q2hhbmdl
ZCgpIG92ZXJyaWRlOworICAgIHZvaWQgcGFnZUJhY2tncm91bmRDb2xvckNoYW5nZWQoKSBvdmVy
cmlkZTsKICAgICB2b2lkIHNldExheWVyVHJlZVN0YXRlSXNGcm96ZW4oYm9vbCkgb3ZlcnJpZGU7
CiAgICAgYm9vbCBsYXllclRyZWVTdGF0ZUlzRnJvemVuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gbV9sYXllclRyZWVTdGF0ZUlzRnJvemVuOyB9CiAgICAgTGF5ZXJUcmVlSG9zdCogbGF5ZXJU
cmVlSG9zdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fbGF5ZXJUcmVlSG9zdC5nZXQoKTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJl
ZUhvc3QuY3BwCmluZGV4IDE1MjBmNTIwZGFjOThlNDNlNDViN2UwNjM3NTcxYjkzMDI1OGNjYWMu
LmFlZjRmMDE1ZDZjYWQxZGUyZTA1NzY2Y2UxYTViY2IyZmViZGEzNjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKQEAg
LTIyOCw2ICsyMjgsMTEgQEAgdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnBhZ2VCYWNr
Z3JvdW5kVHJhbnNwYXJlbmN5Q2hhbmdlZCgpCiB7CiB9CiAKK3ZvaWQgQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0OjpwYWdlQmFja2dyb3VuZENvbG9yQ2hhbmdlZCgpCit7CisKK30KKwogR3JhcGhp
Y3NMYXllckZhY3RvcnkqIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Z3JhcGhpY3NMYXllckZh
Y3RvcnkoKQogewogICAgIHJldHVybiAmbV9jb29yZGluYXRvcjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCmluZGV4IDBhOGJlYzhh
Mzk4NmNlYTJhODBkYTUwOTkyYWJhMmE4MzFjMzUzNmEuLjI3Y2FlMDA0ZTQyNDc1NjIzMjdkNWY5
NjZhM2QwN2RjN2JlODA4MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9D
b29yZGluYXRlZExheWVyVHJlZUhvc3QuaApAQCAtNTYsNiArNTYsNyBAQCBwcm90ZWN0ZWQ6CiAK
ICAgICB2b2lkIGRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCgpIG92ZXJyaWRlOwogICAg
IHZvaWQgcGFnZUJhY2tncm91bmRUcmFuc3BhcmVuY3lDaGFuZ2VkKCkgb3ZlcnJpZGU7CisgICAg
dm9pZCBwYWdlQmFja2dyb3VuZENvbG9yQ2hhbmdlZCgpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBz
ZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpOwogICAgIHZv
aWQgcmVuZGVyTmV4dEZyYW1lKGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcAppbmRleCA4
MjNiN2ZhMmFjNzU5N2EzYWVhYjI3NDQzMWJjMGNjOWI5MjkwOGM5Li5mOGUyYjVkMGVjZTI1NmRh
NzU0ODUzMWMwYmQ3YTU2YjAwYWQ4Y2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29y
ZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcApAQCAt
MTk1LDYgKzE5NSwxNyBAQCB2b2lkIFRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Ojpw
YWdlQmFja2dyb3VuZFRyYW5zcGFyZW5jeUNoYW5nZWQoKQogICAgIG1fY29tcG9zaXRvci0+c2V0
RHJhd3NCYWNrZ3JvdW5kKG1fd2ViUGFnZS5kcmF3c0JhY2tncm91bmQoKSk7CiB9CiAKK3ZvaWQg
VGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnBhZ2VCYWNrZ3JvdW5kQ29sb3JDaGFu
Z2VkKCkKK3sKKyAgICBpZiAobV9pc0Rpc2NhcmRhYmxlKSB7CisgICAgICAgIG1fZGlzY2FyZGFi
bGVTeW5jQWN0aW9ucy5hZGQoRGlzY2FyZGFibGVTeW5jQWN0aW9uczo6VXBkYXRlQmFja2dyb3Vu
ZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBDb29yZGluYXRlZExheWVyVHJlZUhv
c3Q6OnBhZ2VCYWNrZ3JvdW5kQ29sb3JDaGFuZ2VkKCk7CisgICAgbV9jb21wb3NpdG9yLT5zZXRC
YWNrZ3JvdW5kQ29sb3IobV93ZWJQYWdlLmJhY2tncm91bmRDb2xvcigpKTsKK30KKwogdm9pZCBU
aHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2l6ZURpZENoYW5nZShjb25zdCBJbnRT
aXplJiBzaXplKQogewogICAgIGlmIChtX2lzRGlzY2FyZGFibGUpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVGhyZWFk
ZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhv
c3QuaAppbmRleCBiNzg0NjgxNjc5YjIyN2JiODEyMjc3NDVlMWI3NjhlMWEzYjA2M2NkLi44NGIz
Zjg4MzI4MzhjMzdlNzEyOTA2N2FlYjkxOGMzZmMyOTk3OGVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29v
cmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dC5oCkBAIC01OCw2ICs1OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzaXplRGlkQ2hhbmdlKGNv
bnN0IFdlYkNvcmU6OkludFNpemUmKSBvdmVycmlkZTsKICAgICB2b2lkIGRldmljZU9yUGFnZVNj
YWxlRmFjdG9yQ2hhbmdlZCgpIG92ZXJyaWRlOwogICAgIHZvaWQgcGFnZUJhY2tncm91bmRUcmFu
c3BhcmVuY3lDaGFuZ2VkKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBwYWdlQmFja2dyb3VuZENvbG9y
Q2hhbmdlZCgpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBjb250ZW50c1NpemVDaGFuZ2VkKGNvbnN0
IFdlYkNvcmU6OkludFNpemUmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENoYW5nZVZpZXdwb3J0
QXR0cmlidXRlcyhXZWJDb3JlOjpWaWV3cG9ydEF0dHJpYnV0ZXMmJikgb3ZlcnJpZGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAppbmRleCBmOWM4
OTE3NGE0YTM3YmY0ZGIyMmMxZDJjNDI2MjRjZjlkZjJhNzQyLi4xYjJiY2JlYWI4MzU2OGY1ZDg4
Yzg0ZWIwOGQyNWJiZGYzZWMxMjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0RyYXdpbmdBcmVhLmgKQEAgLTgwLDYgKzgwLDcgQEAgcHVibGljOgogCiAgICAgLy8g
RklYTUU6IFRoZXNlIHNob3VsZCBiZSBwdXJlIHZpcnR1YWwuCiAgICAgdmlydHVhbCB2b2lkIHBh
Z2VCYWNrZ3JvdW5kVHJhbnNwYXJlbmN5Q2hhbmdlZCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBw
YWdlQmFja2dyb3VuZENvbG9yQ2hhbmdlZCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBmb3JjZVJl
cGFpbnQoKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgZm9yY2VSZXBhaW50QXN5bmMoQ2FsbGJhY2tJ
RCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0TGF5ZXJUcmVlU3RhdGVJ
c0Zyb3plbihib29sKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0xheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L0xheWVyVHJlZUhvc3QuaAppbmRleCA4NWRkNDU4ZTAxODAwMzExYzM4YjU2ZGEwMGZkMjAxOTA5
MGQyMDdhLi4xNjY4YmJiOWQ2MzczYWVmMjQ1ODM5ZDI5OTUyYTM0ZGNlODA5NDYyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9MYXllclRyZWVIb3N0LmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvTGF5ZXJUcmVlSG9zdC5oCkBAIC03
NSw2ICs3NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgZm9yY2VSZXBhaW50QXN5bmMo
Q2FsbGJhY2tJRCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2l6ZURpZENo
YW5nZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBuZXdTaXplKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHBhZ2VCYWNrZ3JvdW5kVHJhbnNwYXJlbmN5Q2hhbmdlZCgpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgcGFnZUJhY2tncm91bmRDb2xvckNoYW5nZWQoKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZv
aWQgcGF1c2VSZW5kZXJpbmcoKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lUmVuZGVyaW5nKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDgw
M2JhOGI5OTVlZDNlYzgzMWFiNDZiNTM5N2M3NjYyZTZhODFjNjUuLmY4NDE2NWM3YTRjNjNlNzBj
YzRjNjNlYTA2OTU2Zjk0YTBiNDgxNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC02MzcsNiArNjM3LDEwIEBAIFdlYlBhZ2U6OldlYlBhZ2Uo
dWludDY0X3QgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykK
ICNpZiBVU0UoQVVESU9fU0VTU0lPTikKICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6
OnNldFNob3VsZERlYWN0aXZhdGVBdWRpb1Nlc3Npb24odHJ1ZSk7CiAjZW5kaWYKKworI2lmIFBM
QVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQorICAgIHNldEJhY2tncm91bmRDb2xvcihwYXJh
bWV0ZXJzLmJhY2tncm91bmRDb2xvcik7CisjZW5kaWYKIH0KIAogI2lmIEVOQUJMRShXRUJfUlRD
KQpAQCAtMjg5MSw2ICsyODk1LDIyIEBAIHZvaWQgV2ViUGFnZTo6c2V0RHJhd3NCYWNrZ3JvdW5k
KGJvb2wgZHJhd3NCYWNrZ3JvdW5kKQogICAgIG1fZHJhd2luZ0FyZWEtPnNldE5lZWRzRGlzcGxh
eSgpOwogfQogCisjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpCit2b2lkIFdlYlBh
Z2U6OnNldEJhY2tncm91bmRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYgYmFja2dyb3VuZENv
bG9yKQoreworICAgIGlmIChtX2JhY2tncm91bmRDb2xvciA9PSBiYWNrZ3JvdW5kQ29sb3IpCisg
ICAgICAgIHJldHVybjsKKworICAgIG1fYmFja2dyb3VuZENvbG9yID0gYmFja2dyb3VuZENvbG9y
OworCisgICAgaWYgKEZyYW1lVmlldyogZnJhbWVWaWV3ID0gbWFpbkZyYW1lVmlldygpKQorICAg
ICAgICBmcmFtZVZpZXctPnNldEJhc2VCYWNrZ3JvdW5kQ29sb3IoYmFja2dyb3VuZENvbG9yKTsK
KworICAgIG1fZHJhd2luZ0FyZWEtPnBhZ2VCYWNrZ3JvdW5kQ29sb3JDaGFuZ2VkKCk7CisgICAg
bV9kcmF3aW5nQXJlYS0+c2V0TmVlZHNEaXNwbGF5KCk7Cit9CisjZW5kaWYKKwogI2lmIFBMQVRG
T1JNKENPQ09BKQogdm9pZCBXZWJQYWdlOjpzZXRUb3BDb250ZW50SW5zZXRGZW5jZWQoZmxvYXQg
Y29udGVudEluc2V0LCBJUEM6OkF0dGFjaG1lbnQgZmVuY2VQb3J0KQogewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDcxNWUxMjQ1MjBmZjA3NmI5NjBh
ZWQ3MGU5YjkyMDc1YTY1NTJhZWYuLmI5NjhlZDUyN2IyZGRiYjJkMjk3ZDhhYzhiZTI2NDY3OGEw
YTZiZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAg
LTExMzcsNiArMTEzNyw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGlkUmVjZWl2ZVdlYlBhZ2VN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwogCisgICAgY29uc3QgV2Vi
Q29yZTo6Q29sb3ImIGJhY2tncm91bmRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3Vu
ZENvbG9yOyB9CisKIHByaXZhdGU6CiAgICAgV2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIFdlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMmJik7CiAKQEAgLTEyNjUsNiArMTI2NywxMCBAQCBwcml2YXRl
OgogCiAgICAgdm9pZCBzZXREcmF3c0JhY2tncm91bmQoYm9vbCk7CiAKKyNpZiBQTEFURk9STShH
VEspIHx8IFBMQVRGT1JNKFdQRSkKKyAgICB2b2lkIHNldEJhY2tncm91bmRDb2xvcihjb25zdCBX
ZWJDb3JlOjpDb2xvciYpOworI2VuZGlmCisKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lk
IHNldFRvcENvbnRlbnRJbnNldEZlbmNlZChmbG9hdCwgSVBDOjpBdHRhY2htZW50KTsKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVz
c2FnZXMuaW4KaW5kZXggNTRhYmJhZjg5MzRjY2RjZjhlNGYyMGY3ODNmY2I2YjlmMDMwNDBlYi4u
Nzc2NjU0NjkwOTA2MjI3ZDZkZmZhYzAwMjVmNzk5NmQ1NDM3ZTI3ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0y
Nyw2ICsyNywxMCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKIAogICAg
IFNldERyYXdzQmFja2dyb3VuZChib29sIGRyYXdzQmFja2dyb3VuZCkKIAorI2lmIFBMQVRGT1JN
KEdUSykgfHwgUExBVEZPUk0oV1BFKQorICAgIFNldEJhY2tncm91bmRDb2xvcihXZWJDb3JlOjpD
b2xvciBjb2xvcikKKyNlbmRpZgorCiAgICAgQWRkQ29uc29sZU1lc3NhZ2UodWludDY0X3QgZnJh
bWVJRCwgZW51bTp1aW50OF90IEpTQzo6TWVzc2FnZVNvdXJjZSBtZXNzYWdlU291cmNlLCBlbnVt
OnVpbnQ4X3QgSlNDOjpNZXNzYWdlTGV2ZWwgbWVzc2FnZUxldmVsLCBTdHJpbmcgbWVzc2FnZSwg
dWludDY0X3QgcmVxdWVzdElEKQogICAgIFNlbmRDU1BWaW9sYXRpb25SZXBvcnQodWludDY0X3Qg
ZnJhbWVJRCwgVVJMIHJlcG9ydFVSTCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSByZXBvcnREYXRh
KQogICAgIEVucXVldWVTZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50KHVpbnQ2NF90IGZyYW1l
SUQsIFdlYkNvcmU6OlNlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnQ6OkluaXQgZXZlbnRJbml0
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IGVlODE5OGE4ODI3MTY4MWU1MWJj
MWNlYzIxNzU1ZTFmNTc0ZGRmYTkuLjA1ZTNkNzM0MWY3MWI3OTYwODJkZDcxMGM5Y2U5MjY5MzA4
NGM0YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTk4Nyw3ICs5ODcsNyBA
QCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp0cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQ
YWdlKCkKICAgICBib29sIHRyYW5zcGFyZW50ID0gdmlldy0+dHJhbnNwYXJlbnQoKTsKICAgICBG
bG9hdFJlY3QgbG9naWNhbEZyYW1lKHBpeGVsUmVjdCk7CiAgICAgbG9naWNhbEZyYW1lLnNjYWxl
KDEuMGYgLyB2aWV3LT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKLSAgICBjb3JlKG1fd2ViRnJhbWUp
LT5jcmVhdGVWaWV3KGVuY2xvc2luZ0ludFJlY3QobG9naWNhbEZyYW1lKS5zaXplKCksIHRyYW5z
cGFyZW50LCAvKiBmaXhlZExheW91dFNpemUgKi8geyB9LCAvKiBmaXhlZFZpc2libGVDb250ZW50
UmVjdCAqLyB7IH0pOworICAgIGNvcmUobV93ZWJGcmFtZSktPmNyZWF0ZVZpZXcoZW5jbG9zaW5n
SW50UmVjdChsb2dpY2FsRnJhbWUpLnNpemUoKSwgdHJhbnNwYXJlbnQsIENvbG9yOjp3aGl0ZSwg
LyogZml4ZWRMYXlvdXRTaXplICovIHsgfSwgLyogZml4ZWRWaXNpYmxlQ29udGVudFJlY3QgKi8g
eyB9KTsKIH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkU2F2ZVRvUGFnZUNhY2hl
KCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3
M2EyY2NhMDg5YTNkYzJjZWRmMTM2MmMyZjcwZTI5ZDJkOWJjYzczLi4xZTljNzc5NDRlNjk3Mjhl
NjY1ZGYyODMwNWQ4ZTVhN2I3YTZiYjhhIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysr
IGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTktMDEtMTAgIFBoaWxpcHBl
IE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtXUEVdIEFkZCBBUEkg
dG8gYWxsb3cgYXBwbGljYXRpb24gdG8gZGlzYWJsZSBiYWNrZ3JvdW5kIHJlbmRlcmluZworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyMzA1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nl
ci93cGUvbWFpbi5jcHA6CisgICAgICAgIChtYWluKTogQWRkIGEgbmV3IG9wdGlvbiB0byBjb25m
aWd1cmUgdGhlIHdlYnZpZXcgYmFja2dyb3VuZAorICAgICAgICBjb2xvci4gRXhhbXBsZTogLS1i
Zy1jb2xvcj10cmFuc3BhcmVudC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dEdMaWIvVGVzdFdlYktpdFdlYlZpZXcuY3BwOgorICAgICAgICAodGVzdFdlYlZpZXdCYWNrZ3Jv
dW5kQ29sb3IpOiBFbmFibGUgYmFja2dyb3VuZCBjb2xvciBBUEkgdGVzdHMgZm9yIFdQRS4KKyAg
ICAgICAgKGJlZm9yZUFsbCk6IERpdHRvLgorCiAyMDE5LTAxLTEyICBUaW1vdGh5IEhhdGNoZXIg
IDx0aW1vdGh5QGFwcGxlLmNvbT4KIAogICAgICAgICBIYXZlIHByZWZlcnMtY29sb3Itc2NoZW1l
OiBsaWdodCBhbHdheXMgbWF0Y2ggb24gbWFjT1MgdmVyc2lvbnMgYmVmb3JlIE1vamF2ZS4KZGlm
ZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3dwZS9tYWluLmNwcCBiL1Rvb2xzL01pbmlCcm93
c2VyL3dwZS9tYWluLmNwcAppbmRleCBlMGMyOWIyMTI5OTM0MzcxMjc0YTZmMjU0NTFlYWU5ODIx
YzQ2ODlmLi5lZTY1MDU4ODA1ZTNkMDI3MjJkZDA5OGQ1NTgxNTlhOTVmZTAxY2M3IDEwMDY0NAot
LS0gYS9Ub29scy9NaW5pQnJvd3Nlci93cGUvbWFpbi5jcHAKKysrIGIvVG9vbHMvTWluaUJyb3dz
ZXIvd3BlL21haW4uY3BwCkBAIC00Miw2ICs0Miw3IEBAIHN0YXRpYyBnYm9vbGVhbiBpZ25vcmVU
TFNFcnJvcnM7CiBzdGF0aWMgY29uc3QgY2hhciogY29va2llc0ZpbGU7CiBzdGF0aWMgY29uc3Qg
Y2hhciogY29va2llc1BvbGljeTsKIHN0YXRpYyBjb25zdCBjaGFyKiBwcm94eTsKK2NvbnN0IGNo
YXIqIGJnQ29sb3I7CiAKIHN0YXRpYyBjb25zdCBHT3B0aW9uRW50cnkgY29tbWFuZExpbmVPcHRp
b25zW10gPQogewpAQCAtNTMsNiArNTQsNyBAQCBzdGF0aWMgY29uc3QgR09wdGlvbkVudHJ5IGNv
bW1hbmRMaW5lT3B0aW9uc1tdID0KICAgICB7ICJwcm94eSIsIDAsIDAsIEdfT1BUSU9OX0FSR19T
VFJJTkcsICZwcm94eSwgIlNldCBwcm94eSIsICJQUk9YWSIgfSwKICAgICB7ICJpZ25vcmUtaG9z
dCIsIDAsIDAsIEdfT1BUSU9OX0FSR19TVFJJTkdfQVJSQVksICZpZ25vcmVIb3N0cywgIlNldCBw
cm94eSBpZ25vcmUgaG9zdHMiLCAiSE9TVFMiIH0sCiAgICAgeyAiaWdub3JlLXRscy1lcnJvcnMi
LCAwLCAwLCBHX09QVElPTl9BUkdfTk9ORSwgJmlnbm9yZVRMU0Vycm9ycywgIklnbm9yZSBUTFMg
ZXJyb3JzIiwgbnVsbHB0ciB9LAorICAgIHsgImJnLWNvbG9yIiwgMCwgMCwgR19PUFRJT05fQVJH
X1NUUklORywgJmJnQ29sb3IsICJXaW5kb3cgYmFja2dyb3VuZCBjb2xvci4gRGVmYXVsdDogd2hp
dGUiLCAiQ09MT1IiIH0sCiAgICAgeyBHX09QVElPTl9SRU1BSU5JTkcsIDAsIDAsIEdfT1BUSU9O
X0FSR19GSUxFTkFNRV9BUlJBWSwgJnVyaUFyZ3VtZW50cywgbnVsbHB0ciwgIltVUkxdIiB9LAog
ICAgIHsgbnVsbHB0ciwgMCwgMCwgR19PUFRJT05fQVJHX05PTkUsIG51bGxwdHIsIG51bGxwdHIs
IG51bGxwdHIgfQogfTsKQEAgLTE5NCw2ICsxOTYsMTAgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNo
YXIgKmFyZ3ZbXSkKICAgICBpZiAoaWdub3JlVExTRXJyb3JzKQogICAgICAgICB3ZWJraXRfd2Vi
X2NvbnRleHRfc2V0X3Rsc19lcnJvcnNfcG9saWN5KHdlYkNvbnRleHQsIFdFQktJVF9UTFNfRVJS
T1JTX1BPTElDWV9JR05PUkUpOwogCisgICAgV2ViS2l0Q29sb3IgY29sb3I7CisgICAgaWYgKGJn
Q29sb3IgJiYgd2Via2l0X2NvbG9yX3BhcnNlKCZjb2xvciwgYmdDb2xvcikpCisgICAgICAgIHdl
YmtpdF93ZWJfdmlld19zZXRfYmFja2dyb3VuZF9jb2xvcih3ZWJWaWV3LCAmY29sb3IpOworCiAg
ICAgaWYgKHVyaUFyZ3VtZW50cykKICAgICAgICAgd2Via2l0X3dlYl92aWV3X2xvYWRfdXJpKHdl
YlZpZXcsIHVyaUFyZ3VtZW50c1swXSk7CiAgICAgZWxzZSBpZiAoIWF1dG9tYXRpb25Nb2RlKQpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJL
aXRXZWJWaWV3LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0
V2ViS2l0V2ViVmlldy5jcHAKaW5kZXggNTRmMTk3Yjg4MzM2N2FiYjI1MDI2MGU0MDJlYmY1Yjlm
ZGE2YzRmMy4uZDA1MzFiNDlmMGZjMzYwMTJhZTNhYTI2ZDI5NzNiNTRlNTRjNDI1OSAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJW
aWV3LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdl
YktpdFdlYlZpZXcuY3BwCkBAIC0xMTMzLDExICsxMTMzLDE2IEBAIHN0YXRpYyB2b2lkIHRlc3RX
ZWJWaWV3SXNQbGF5aW5nQXVkaW8oSXNQbGF5aW5nQXVkaW9XZWJWaWV3VGVzdCogdGVzdCwgZ2Nv
bnN0cG9pCiAgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3dlYl92aWV3X2lzX3BsYXlpbmdfYXVk
aW8odGVzdC0+bV93ZWJWaWV3KSk7CiB9CiAKLSNpZiBQTEFURk9STShHVEspCiBzdGF0aWMgdm9p
ZCB0ZXN0V2ViVmlld0JhY2tncm91bmRDb2xvcihXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9p
bnRlcikKIHsKKyNpZiBQTEFURk9STShHVEspCisjZGVmaW5lIENvbG9yVHlwZSBHZGtSR0JBCisj
ZWxpZiBQTEFURk9STShXUEUpCisjZGVmaW5lIENvbG9yVHlwZSBXZWJLaXRDb2xvcgorI2VuZGlm
CisKICAgICAvLyBXaGl0ZSBpcyB0aGUgZGVmYXVsdCBiYWNrZ3JvdW5kLgotICAgIEdka1JHQkEg
cmdiYTsKKyAgICBDb2xvclR5cGUgcmdiYTsKICAgICB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2JhY2tn
cm91bmRfY29sb3IodGVzdC0+bV93ZWJWaWV3LCAmcmdiYSk7CiAgICAgZ19hc3NlcnRfY21wZmxv
YXQocmdiYS5yZWQsID09LCAxKTsKICAgICBnX2Fzc2VydF9jbXBmbG9hdChyZ2JhLmdyZWVuLCA9
PSwgMSk7CkBAIC0xMTU1LDEwICsxMTYwLDIzIEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3QmFj
a2dyb3VuZENvbG9yKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIGdfYXNz
ZXJ0X2NtcGZsb2F0KHJnYmEuYmx1ZSwgPT0sIDApOwogICAgIGdfYXNzZXJ0X2NtcGZsb2F0KHJn
YmEuYWxwaGEsID09LCAwLjUpOwogCisjaWYgUExBVEZPUk0oV1BFKQorICAgIENvbG9yVHlwZSBj
b2xvcjsKKyAgICBnX2Fzc2VydCh3ZWJraXRfY29sb3JfcGFyc2UoJmNvbG9yLCAicmVkIikpOwor
ICAgIGdfYXNzZXJ0X2NtcGZsb2F0KGNvbG9yLnJlZCwgPT0sIDEpOworICAgIHdlYmtpdF93ZWJf
dmlld19zZXRfYmFja2dyb3VuZF9jb2xvcih0ZXN0LT5tX3dlYlZpZXcsICZjb2xvcik7CisgICAg
d2Via2l0X3dlYl92aWV3X2dldF9iYWNrZ3JvdW5kX2NvbG9yKHRlc3QtPm1fd2ViVmlldywgJnJn
YmEpOworICAgIGdfYXNzZXJ0X2NtcGZsb2F0KHJnYmEucmVkLCA9PSwgMSk7CisgICAgZ19hc3Nl
cnRfY21wZmxvYXQocmdiYS5ncmVlbiwgPT0sIDApOworICAgIGdfYXNzZXJ0X2NtcGZsb2F0KHJn
YmEuYmx1ZSwgPT0sIDApOworICAgIGdfYXNzZXJ0X2NtcGZsb2F0KHJnYmEuYWxwaGEsID09LCAx
KTsKKyNlbmRpZgorCiAgICAgLy8gVGhlIGFjdHVhbCByZW5kZXJpbmcgY2FuJ3QgYmUgdGVzdGVk
IHVzaW5nIHVuaXQgdGVzdHMsIHVzZQogICAgIC8vIE1pbmlCcm93c2VyIC0tYmctY29sb3I9Ijxj
b2xvci12YWx1ZT4iIGZvciBtYW51YWxseSB0ZXN0aW5nIHRoaXMgQVBJLgogfQogCisjaWYgUExB
VEZPUk0oR1RLKQogc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdQcmVmZXJyZWRTaXplKFdlYlZpZXdU
ZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewogICAgIHRlc3QtPmxvYWRIdG1sKCI8aHRtbCBz
dHlsZT0nd2lkdGg6IDMyNXB4OyBoZWlnaHQ6IDYxNXB4Jz48L2h0bWw+IiwgbnVsbHB0cik7CkBA
IC0xMzYzLDggKzEzODEsOCBAQCB2b2lkIGJlZm9yZUFsbCgpCiAgICAgTm90aWZpY2F0aW9uV2Vi
Vmlld1Rlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJub3RpZmljYXRpb24taW5pdGlhbC1wZXJt
aXNzaW9uLWRpc2FsbG93ZWQiLCB0ZXN0V2ViVmlld05vdGlmaWNhdGlvbkluaXRpYWxQZXJtaXNz
aW9uRGlzYWxsb3dlZCk7CiAjZW5kaWYKICAgICBJc1BsYXlpbmdBdWRpb1dlYlZpZXdUZXN0Ojph
ZGQoIldlYktpdFdlYlZpZXciLCAiaXMtcGxheWluZy1hdWRpbyIsIHRlc3RXZWJWaWV3SXNQbGF5
aW5nQXVkaW8pOwotI2lmIFBMQVRGT1JNKEdUSykKICAgICBXZWJWaWV3VGVzdDo6YWRkKCJXZWJL
aXRXZWJWaWV3IiwgImJhY2tncm91bmQtY29sb3IiLCB0ZXN0V2ViVmlld0JhY2tncm91bmRDb2xv
cik7CisjaWYgUExBVEZPUk0oR1RLKQogICAgIFdlYlZpZXdUZXN0OjphZGQoIldlYktpdFdlYlZp
ZXciLCAicHJlZmVycmVkLXNpemUiLCB0ZXN0V2ViVmlld1ByZWZlcnJlZFNpemUpOwogI2VuZGlm
CiAgICAgV2ViVmlld1RpdGxlVGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgInRpdGxlLWNoYW5n
ZSIsIHRlc3RXZWJWaWV3VGl0bGVDaGFuZ2UpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359470</attachid>
            <date>2019-01-18 03:36:16 -0800</date>
            <delta_ts>2019-01-18 05:10:04 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>wk2-bg-color.diff</filename>
            <type>text/plain</type>
            <size>69356</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3MjIzZmM1ZmQ3OC4uNmY4OTIxYjg0M2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMyBAQAorMjAxOS0wMS0xOCAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxp
YS5jb20+IGFuZCBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKwor
ICAgICAgICBbV1BFXSBBZGQgQVBJIGZvciB3ZWJ2aWV3IGJhY2tncm91bmQgY29sb3IgY29uZmln
dXJhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTkyMzA1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRhcHQgdGhlIEZyYW1lVmlldyBBUEkgdG8gYWxsb3cgYSBkZWZhdWx0IG5vbi13aGl0ZSBiYWNr
Z3JvdW5kIGNvbG9yLgorCisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZTo6Y3JlYXRlVmlldyk6IFJlcGxhY2UgaXNUcmFuc3BhcmVudCBhcmd1bWVudCB3
aXRoIGEgYmFja2dyb3VuZCBjb2xvciBvbmUuCisgICAgICAgICogcGFnZS9GcmFtZS5oOgorICAg
ICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6
cmVjYWxjdWxhdGVCYXNlQmFja2dyb3VuZENvbG9yKTogVXNlIENvbG9yOjp0cmFuc3BhcmVudCBp
ZiBtX2lzVHJhbnNwYXJlbnQgaXMgdHJ1ZS4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6
dXBkYXRlQmFja2dyb3VuZFJlY3Vyc2l2ZWx5KTogQWxsb3cgdGhlIGZhbGxiYWNrIGJhY2tncm91
bmQgY29sb3IgdG8gYmUgbm9uLXdoaXRlLCB0aGlzIGlzCisgICAgICAgIHVzZWQgb25seSBpbiBu
b24tZGFyay1tb2RlLWNzcyBidWlsZCBjb25maWd1cmF0aW9ucy4KKyAgICAgICAgKiBwYWdlL0Zy
YW1lVmlldy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkludGVybmFsczo6c2V0Vmlld0lzVHJhbnNwYXJlbnQpOiBVc2UgQ29sb3I6OnRyYW5z
cGFyZW50IGlmIHRyYW5zcGFyZW50IGlzIHRydWUuCisKIDIwMTktMDEtMTggIFNpbW9uIEZyYXNl
ciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgU2Nyb2xsaW5nQ29vcmRpbmF0
b3I6OnNjcm9sbGFibGVBcmVhU2Nyb2xsTGF5ZXJEaWRDaGFuZ2UoKSBjYW4gYmUgcmVtb3ZlZApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lLmNwcAppbmRleCA3M2JhZmRiNDY2MC4uYWU2MDA0OWIwZTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWUuY3BwCkBAIC05MDIsNyArOTAyLDcgQEAgUmVmUHRyPFJhbmdlPiBGcmFtZTo6cmFu
Z2VGb3JQb2ludChjb25zdCBJbnRQb2ludCYgZnJhbWVQb2ludCkKICAgICByZXR1cm4gbnVsbHB0
cjsKIH0KIAotdm9pZCBGcmFtZTo6Y3JlYXRlVmlldyhjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNp
emUsIGJvb2wgdHJhbnNwYXJlbnQsCit2b2lkIEZyYW1lOjpjcmVhdGVWaWV3KGNvbnN0IEludFNp
emUmIHZpZXdwb3J0U2l6ZSwgY29uc3QgT3B0aW9uYWw8Q29sb3I+JiBiYWNrZ3JvdW5kQ29sb3Is
CiAgICAgY29uc3QgSW50U2l6ZSYgZml4ZWRMYXlvdXRTaXplLCBjb25zdCBJbnRSZWN0JiBmaXhl
ZFZpc2libGVDb250ZW50UmVjdCwKICAgICBib29sIHVzZUZpeGVkTGF5b3V0LCBTY3JvbGxiYXJN
b2RlIGhvcml6b250YWxTY3JvbGxiYXJNb2RlLCBib29sIGhvcml6b250YWxMb2NrLAogICAgIFNj
cm9sbGJhck1vZGUgdmVydGljYWxTY3JvbGxiYXJNb2RlLCBib29sIHZlcnRpY2FsTG9jaykKQEAg
LTkzMyw3ICs5MzMsNyBAQCB2b2lkIEZyYW1lOjpjcmVhdGVWaWV3KGNvbnN0IEludFNpemUmIHZp
ZXdwb3J0U2l6ZSwgYm9vbCB0cmFuc3BhcmVudCwKIAogICAgIHNldFZpZXcoZnJhbWVWaWV3LmNv
cHlSZWYoKSk7CiAKLSAgICBmcmFtZVZpZXctPnVwZGF0ZUJhY2tncm91bmRSZWN1cnNpdmVseSh0
cmFuc3BhcmVudCk7CisgICAgZnJhbWVWaWV3LT51cGRhdGVCYWNrZ3JvdW5kUmVjdXJzaXZlbHko
YmFja2dyb3VuZENvbG9yKTsKIAogICAgIGlmIChpc01haW5GcmFtZSkKICAgICAgICAgZnJhbWVW
aWV3LT5zZXRQYXJlbnRWaXNpYmxlKHRydWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCmluZGV4IDhhZDEzZDZl
MWNjLi43ODQxYWQ1NjJjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaApAQCAtMTI4LDcgKzEyOCw3IEBAIHB1
YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluaXRXaXRoU2ltcGxlSFRNTERvY3VtZW50
KGNvbnN0IFN0cmluZyYgc3R5bGUsIGNvbnN0IFVSTCYpOwogI2VuZGlmCiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzZXRWaWV3KFJlZlB0cjxGcmFtZVZpZXc+JiYpOwotICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgY3JlYXRlVmlldyhjb25zdCBJbnRTaXplJiwgYm9vbCB0cmFuc3BhcmVudCwKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNyZWF0ZVZpZXcoY29uc3QgSW50U2l6ZSYsIGNvbnN0IE9w
dGlvbmFsPENvbG9yPiYgYmFja2dyb3VuZENvbG9yLAogICAgICAgICBjb25zdCBJbnRTaXplJiBm
aXhlZExheW91dFNpemUsIGNvbnN0IEludFJlY3QmIGZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0LAog
ICAgICAgICBib29sIHVzZUZpeGVkTGF5b3V0ID0gZmFsc2UsIFNjcm9sbGJhck1vZGUgPSBTY3Jv
bGxiYXJBdXRvLCBib29sIGhvcml6b250YWxMb2NrID0gZmFsc2UsCiAgICAgICAgIFNjcm9sbGJh
ck1vZGUgPSBTY3JvbGxiYXJBdXRvLCBib29sIHZlcnRpY2FsTG9jayA9IGZhbHNlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCAwNjY5ODE1NmRiNC4uOThmYTdlOWE1ZWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTQyNCw3ICs0MjQsMTAgQEAgdm9pZCBGcmFtZVZp
ZXc6OnJlY2FsY3VsYXRlQmFzZUJhY2tncm91bmRDb2xvcigpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIG1fdXNlc0RhcmtBcHBlYXJhbmNlID0gdXNpbmdEYXJrQXBwZWFyYW5jZTsKLSAgICB1cGRh
dGVCYWNrZ3JvdW5kUmVjdXJzaXZlbHkobV9pc1RyYW5zcGFyZW50KTsKKyAgICBPcHRpb25hbDxD
b2xvcj4gYmFja2dyb3VuZENvbG9yOworICAgIGlmIChtX2lzVHJhbnNwYXJlbnQpCisgICAgICAg
IGJhY2tncm91bmRDb2xvciA9IENvbG9yKENvbG9yOjp0cmFuc3BhcmVudCk7CisgICAgdXBkYXRl
QmFja2dyb3VuZFJlY3Vyc2l2ZWx5KGJhY2tncm91bmRDb2xvcik7CiB9CiAjZW5kaWYKIApAQCAt
MzAxMSwxOCArMzAxNCwxOCBAQCB2b2lkIEZyYW1lVmlldzo6c2V0QmFzZUJhY2tncm91bmRDb2xv
cihjb25zdCBDb2xvciYgYmFja2dyb3VuZENvbG9yKQogICAgIHJlbmRlclZpZXcoKS0+Y29tcG9z
aXRvcigpLnJvb3RCYWNrZ3JvdW5kQ29sb3JPclRyYW5zcGFyZW5jeUNoYW5nZWQoKTsKIH0KIAot
dm9pZCBGcmFtZVZpZXc6OnVwZGF0ZUJhY2tncm91bmRSZWN1cnNpdmVseShib29sIHRyYW5zcGFy
ZW50KQordm9pZCBGcmFtZVZpZXc6OnVwZGF0ZUJhY2tncm91bmRSZWN1cnNpdmVseShjb25zdCBP
cHRpb25hbDxDb2xvcj4mIGJhY2tncm91bmRDb2xvcikKIHsKICNpZiBFTkFCTEUoREFSS19NT0RF
X0NTUykKLSAgICBDb2xvciBiYWNrZ3JvdW5kQ29sb3IgPSB0cmFuc3BhcmVudCA/IENvbG9yOjp0
cmFuc3BhcmVudCA6IFJlbmRlclRoZW1lOjpzaW5nbGV0b24oKS5zeXN0ZW1Db2xvcihDU1NWYWx1
ZUFwcGxlU3lzdGVtQ29udHJvbEJhY2tncm91bmQsIHN0eWxlQ29sb3JPcHRpb25zKCkpOworICAg
IENvbG9yIGJhc2VCYWNrZ3JvdW5kQ29sb3IgPSBiYWNrZ3JvdW5kQ29sb3IudmFsdWVPcihSZW5k
ZXJUaGVtZTo6c2luZ2xldG9uKCkuc3lzdGVtQ29sb3IoQ1NTVmFsdWVBcHBsZVN5c3RlbUNvbnRy
b2xCYWNrZ3JvdW5kLCBzdHlsZUNvbG9yT3B0aW9ucygpKSk7CiAjZWxzZQotICAgIENvbG9yIGJh
Y2tncm91bmRDb2xvciA9IHRyYW5zcGFyZW50ID8gQ29sb3I6OnRyYW5zcGFyZW50IDogQ29sb3I6
OndoaXRlOworICAgIENvbG9yIGJhc2VCYWNrZ3JvdW5kQ29sb3IgPSBiYWNrZ3JvdW5kQ29sb3Iu
dmFsdWVPcihDb2xvcjo6d2hpdGUpOwogI2VuZGlmCiAKICAgICBmb3IgKGF1dG8qIGZyYW1lID0g
bV9mcmFtZS5wdHIoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQo
bV9mcmFtZS5wdHIoKSkpIHsKICAgICAgICAgaWYgKEZyYW1lVmlldyogdmlldyA9IGZyYW1lLT52
aWV3KCkpIHsKLSAgICAgICAgICAgIHZpZXctPnNldFRyYW5zcGFyZW50KHRyYW5zcGFyZW50KTsK
LSAgICAgICAgICAgIHZpZXctPnNldEJhc2VCYWNrZ3JvdW5kQ29sb3IoYmFja2dyb3VuZENvbG9y
KTsKKyAgICAgICAgICAgIHZpZXctPnNldFRyYW5zcGFyZW50KCFiYXNlQmFja2dyb3VuZENvbG9y
LmlzVmlzaWJsZSgpKTsKKyAgICAgICAgICAgIHZpZXctPnNldEJhc2VCYWNrZ3JvdW5kQ29sb3Io
YmFzZUJhY2tncm91bmRDb2xvcik7CiAgICAgICAgICAgICBpZiAodmlldy0+bmVlZHNMYXlvdXQo
KSkKICAgICAgICAgICAgICAgICB2aWV3LT5sYXlvdXRDb250ZXh0KCkuc2NoZWR1bGVMYXlvdXQo
KTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKaW5kZXggMGM3ODFlZTYyYTMuLjFk
MjIwN2Q0YWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTE5MCw3ICsxOTAsNyBAQCBw
dWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBDb2xvciBiYXNlQmFja2dyb3VuZENvbG9yKCkg
Y29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRCYXNlQmFja2dyb3VuZENvbG9yKGNv
bnN0IENvbG9yJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVCYWNrZ3JvdW5kUmVj
dXJzaXZlbHkoYm9vbCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVCYWNrZ3JvdW5k
UmVjdXJzaXZlbHkoY29uc3QgT3B0aW9uYWw8Q29sb3I+JiBiYWNrZ3JvdW5kQ29sb3IpOwogCiAg
ICAgZW51bSBFeHRlbmRlZEJhY2tncm91bmRNb2RlRmxhZ3MgewogICAgICAgICBFeHRlbmRlZEJh
Y2tncm91bmRNb2RlTm9uZSAgICAgICAgICA9IDAsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5jcHAKaW5kZXggMzA5OTk3MWYzMzcuLjZmZDEyNTA0NTE2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwCkBAIC0xNzAzLDcgKzE3MDMsMTAgQEAgRXhjZXB0aW9uT3I8dm9pZD4g
SW50ZXJuYWxzOjpzZXRWaWV3SXNUcmFuc3BhcmVudChib29sIHRyYW5zcGFyZW50KQogICAgIERv
Y3VtZW50KiBkb2N1bWVudCA9IGNvbnRleHREb2N1bWVudCgpOwogICAgIGlmICghZG9jdW1lbnQg
fHwgIWRvY3VtZW50LT52aWV3KCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlk
QWNjZXNzRXJyb3IgfTsKLSAgICBkb2N1bWVudC0+dmlldygpLT51cGRhdGVCYWNrZ3JvdW5kUmVj
dXJzaXZlbHkodHJhbnNwYXJlbnQpOworICAgIE9wdGlvbmFsPENvbG9yPiBiYWNrZ3JvdW5kQ29s
b3I7CisgICAgaWYgKHRyYW5zcGFyZW50KQorICAgICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBDb2xv
cihDb2xvcjo6dHJhbnNwYXJlbnQpOworICAgIGRvY3VtZW50LT52aWV3KCktPnVwZGF0ZUJhY2tn
cm91bmRSZWN1cnNpdmVseShiYWNrZ3JvdW5kQ29sb3IpOwogICAgIHJldHVybiB7IH07CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggMjNjMjlmOTk3YjAuLjNlYzVlZThhMjlkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDgwIEBACisyMDE5LTAxLTE4ICBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PiBhbmQgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAg
ICAgW1dQRV0gQWRkIEFQSSBmb3Igd2VidmlldyBiYWNrZ3JvdW5kIGNvbG9yIGNvbmZpZ3VyYXRp
b24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MjMw
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIHRo
ZSBjYXNlIG9mIFdQRSB3ZSBuZWVkIHRvIHNlbmQgdGhlIGJhY2tncm91bmQgY29sb3IgdG8gdGhl
IHdlYiBwcm9jZXNzIHRvIGJlIHVzZWQgYXMgdGhlIGJhY2tncm91bmQgY29sb3Igb2YKKyAgICAg
ICAgdGhlIHBhZ2UuIFRoaXMgcGF0Y2ggYWRhcHRzIHRoZSBHVEsrIGltcGxlbWVudGF0aW9uIHRv
IGRvIHRoZSBzYW1lLCBzaW5jZSBpdCdzIGEgbG90IHNpbXBsZXIuIFRoZSBwYXRjaCBhbHNvCisg
ICAgICAgIHJlbW92ZXMgdGhlIFNldERyYXdzQmFja2dyb3VuZCBtZXNzYWdlIGluIGZhdm9yIG9m
IHRoZSBuZXcgU2V0QmFja2dyb3VuZENvbG9yIG1lc3NhZ2UgdGhhdCByZWNlaXZlcyBhbiBvcHRp
b25hbAorICAgICAgICBjb2xvci4KKworICAgICAgICAqIFBsYXRmb3JtV1BFLmNtYWtlOiBBZGQg
bmV3IFdQRSBBUEkgZm9yIFdlYktpdENvbG9yIGJveGVkIHR5cGUuCisgICAgICAgICogU2hhcmVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpwYWludFRvQ3VycmVudEdMQ29u
dGV4dCk6IFJlbW92ZSBiYWNrZ3JvdW5kIHJlbmRlcmluZyBhbmQgb3BhY2l0eSBoYW5kbGluZy4K
KyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNz
U2NlbmUuaDoKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNv
bXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6VGhyZWFk
ZWRDb21wb3NpdG9yOjpyZW5kZXJMYXllclRyZWUpOiBSZW1vdmUgZHJhd3NCYWtncm91bmQgYW5k
IGFsd2F5cyBjbGVhciB0aGUgY29udGV4dCB3aXRoCisgICAgICAgIHRyYW5zcGFyZW50IGNvbG9y
LgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRv
ci9UaHJlYWRlZENvbXBvc2l0b3IuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnM6OmVuY29kZSBjb25zdCk6IFJlcGxhY2UgZHJhd3NCYWNrZ3JvdW5kIHdpdGggYmFja2dyb3Vu
ZENvbG9yLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNv
ZGUpOiBEaXR0by4KKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5o
OgorICAgICAgICAqIFNvdXJjZXNXUEUudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJWaWV3R3RrLmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19zZXRfYmFja2dyb3VuZF9j
b2xvcik6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2JhY2tncm91bmRfY29sb3IpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdENvbG9yLmNwcDogQWRkZWQuCisgICAg
ICAgICh3ZWJraXRfY29sb3JfY29weSk6CisgICAgICAgICh3ZWJraXRfY29sb3JfZnJlZSk6Cisg
ICAgICAgICh3ZWJraXRDb2xvclRvV2ViQ29yZUNvbG9yKToKKyAgICAgICAgKHdlYmtpdENvbG9y
RmlsbEZyb21XZWJDb3JlQ29sb3IpOgorICAgICAgICAod2Via2l0X2NvbG9yX3BhcnNlKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRDb2xvci5oOiBBZGRlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRDb2xvclByaXZhdGUuaDogQWRkZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViVmlldy5oOiBJbXBsZW1lbnQgd2Via2l0X3dl
Yl92aWV3X3NldF9iYWNrZ3JvdW5kX2NvbG9yIEFQSS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L3dwZS9XZWJLaXRXZWJWaWV3V1BFLmNwcDogRGl0dG8uCisgICAgICAgICh3ZWJraXRfd2ViX3Zp
ZXdfc2V0X2JhY2tncm91bmRfY29sb3IpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2dldF9i
YWNrZ3JvdW5kX2NvbG9yKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dwZS0w
LjEtc2VjdGlvbnMudHh0OiBBZGQgbmV3IHN5bWJvbHMuCisgICAgICAgICogVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0RHJhd3NC
YWNrZ3JvdW5kKTogU2V0IGEgdHJhbnNwYXJlbnQgYmFja2dyb3VuZCBjb2xvciB3aGVuIGZhbHNl
IGlzIHBhc3NlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRCYWNrZ3JvdW5k
Q29sb3IpOiBTZW5kIGJhY2tncm91bmQgY29sb3IgdG8gdGhlIFdlYlByb2Nlc3MuCisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJhbWV0ZXJzKTogUmVwbGFjZSBkcmF3
c0JhY2tncm91bmQgd2l0aCBiYWNrZ3JvdW5kQ29sb3IuCisgICAgICAgICogVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRyYXdzQmFja2dy
b3VuZCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6YmFja2dyb3VuZENv
bG9yIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvY2Fpcm8vQmFja2luZ1N0b3JlQ2Fpcm8u
Y3BwOgorICAgICAgICAoV2ViS2l0OjpCYWNraW5nU3RvcmU6OmluY29ycG9yYXRlVXBkYXRlKTog
UmVtb3ZlIEdUSysgY29kZSB0byBoYW5kbGUgYmFja2dyb3VuZCBjb2xvci4KKyAgICAgICAgKiBV
SVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlLmg6IE1ha2UgcGFpbnQoKSBwdXJlIHZp
cnR1YWwgYW5kIHJlbW92ZSB0aGUgaW1wbGVtZW50YXRpb24uCisgICAgICAgICogVUlQcm9jZXNz
L2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQ6OnBhaW50KTogRG90IG5vdCBjYWxsIEFj
Y2VsZXJhdGVkQmFja2luZ1N0b3JlOjpwYWludCgpIG5vdyB0aGF0IGlzIHB1cmUgdmlydHVhbC4K
KyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDExLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTE6OnBhaW50KTogRGl0
dG8uCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50Ojp0cmFuc2l0
aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKTogVXNlIGJhY2tncm91bmQgY29sb3IgYXMgcHJvdmlk
ZWQgYnkgdGhlCisgICAgICAgIFVJUHJvY2VzcyB3aGVuIGNyZWF0aW5nIHRoZSBGcmFtZVZpZXcu
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEuY3Bw
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZERyYXdpbmdBcmVhLmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlRocmVhZGVkQ29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0OjpzZXRJc0Rpc2NhcmRhYmxlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpEcmF3aW5nQXJlYUltcGw6OmRpc3BsYXkpOiBSZW1vdmUgc3BlY2lhbCBjYXNlIGZvciB0
cmFuc3BhcmVudCBiYWNrZ3JvdW5kLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9MYXll
clRyZWVIb3N0Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRCYWNrZ3JvdW5kQ29sb3IpOiBOZXcgQVBJIGZv
ciBiYWNrZ3JvdW5kIGNvbG9yIGNvbmZpZ3VyYXRpb24uIFByb3hpZXMgdG8gRnJhbWVWaWV3IGFu
ZCBEcmF3aW5nQXJlYS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpiYWNrZ3JvdW5kQ29sb3IgY29uc3QpOiBSZWFkLW9u
bHkgYWNjZXNzIHRvIHRoZSBjdXJyZW50IGJhY2tncm91bmQgY29sb3IuCisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46IFJlcGxhY2UgU2V0RHJhd3NCYWNr
Z3JvdW5kIG1lc3NhZ2Ugd2l0aCBTZXRCYWNrZ3JvdW5kQ29sb3IuCisKIDIwMTktMDEtMTYgIENh
cmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtd
W1dQRV0gQWRkIHdlYiBleHRlbnNpb25zIEFQSSB0byB3aGl0ZWxpc3QgYWNjZXNzIHRvIGEgc2Vj
dXJpdHkgb3JpZ2luCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV1BFLmNtYWtl
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdQRS5jbWFrZQppbmRleCAxZjY3NWM0NGU0Yy4uM2Nk
ZWZkMmJlZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1XUEUuY21ha2UKKysr
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdQRS5jbWFrZQpAQCAtOTcsNiArOTcsNyBAQCBzZXQo
V1BFX0FQSV9JTlNUQUxMRURfSEVBREVSUwogICAgICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQ
SS93cGUvV2ViS2l0QmFja0ZvcndhcmRMaXN0LmgKICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vz
cy9BUEkvd3BlL1dlYktpdEJhY2tGb3J3YXJkTGlzdEl0ZW0uaAogICAgICR7V0VCS0lUX0RJUn0v
VUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0Q3JlZGVudGlhbC5oCisgICAgJHtXRUJLSVRfRElSfS9V
SVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRDb2xvci5oCiAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nl
c3MvQVBJL3dwZS9XZWJLaXRDb250ZXh0TWVudS5oCiAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nl
c3MvQVBJL3dwZS9XZWJLaXRDb250ZXh0TWVudUFjdGlvbnMuaAogICAgICR7V0VCS0lUX0RJUn0v
VUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0Q29udGV4dE1lbnVJdGVtLmgKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGlj
c1NjZW5lLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcAppbmRleCAxYjJlZDFiMDI3NS4uZGEyZjhhNTI3ZGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAKQEAgLTY1LDcgKzY1
LDcgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmFwcGx5U3RhdGVDaGFuZ2VzKGNv
bnN0IFZlY3RvcjxDb29yZGluYXRlZEdyYXBoaWMKICAgICAgICAgY29tbWl0U2NlbmVTdGF0ZShz
dGF0ZS5uaWNvc2lhKTsKIH0KIAotdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnBhaW50
VG9DdXJyZW50R0xDb250ZXh0KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgsIGZs
b2F0IG9wYWNpdHksIGNvbnN0IEZsb2F0UmVjdCYgY2xpcFJlY3QsIGNvbnN0IENvbG9yJiBiYWNr
Z3JvdW5kQ29sb3IsIGJvb2wgZHJhd3NCYWNrZ3JvdW5kLCBUZXh0dXJlTWFwcGVyOjpQYWludEZs
YWdzIFBhaW50RmxhZ3MpCit2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6cGFpbnRUb0N1
cnJlbnRHTENvbnRleHQoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCwgY29uc3Qg
RmxvYXRSZWN0JiBjbGlwUmVjdCwgVGV4dHVyZU1hcHBlcjo6UGFpbnRGbGFncyBQYWludEZsYWdz
KQogewogICAgIHVwZGF0ZVNjZW5lU3RhdGUoKTsKIApAQCAtNzgsMTggKzc4LDggQEAgdm9pZCBD
b29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnBhaW50VG9DdXJyZW50R0xDb250ZXh0KGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cmkKICAgICBtX3RleHR1cmVNYXBwZXItPmJlZ2luUGFpbnRpbmcoUGFp
bnRGbGFncyk7CiAgICAgbV90ZXh0dXJlTWFwcGVyLT5iZWdpbkNsaXAoVHJhbnNmb3JtYXRpb25N
YXRyaXgoKSwgY2xpcFJlY3QpOwogCi0gICAgaWYgKGRyYXdzQmFja2dyb3VuZCkgewotICAgICAg
ICBSR0JBMzIgcmdiYSA9IG1ha2VSR0JBMzJGcm9tRmxvYXRzKGJhY2tncm91bmRDb2xvci5yZWQo
KSwKLSAgICAgICAgICAgIGJhY2tncm91bmRDb2xvci5ncmVlbigpLCBiYWNrZ3JvdW5kQ29sb3Iu
Ymx1ZSgpLAotICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yLmFscGhhKCkgKiBvcGFjaXR5KTsK
LSAgICAgICAgbV90ZXh0dXJlTWFwcGVyLT5kcmF3U29saWRDb2xvcihjbGlwUmVjdCwgVHJhbnNm
b3JtYXRpb25NYXRyaXgoKSwgQ29sb3IocmdiYSkpOwotICAgIH0gZWxzZQotICAgICAgICBtX3Rl
eHR1cmVNYXBwZXItPmNsZWFyQ29sb3IobV92aWV3QmFja2dyb3VuZENvbG9yKTsKLQotICAgIGlm
IChjdXJyZW50Um9vdExheWVyLT5vcGFjaXR5KCkgIT0gb3BhY2l0eSB8fCBjdXJyZW50Um9vdExh
eWVyLT50cmFuc2Zvcm0oKSAhPSBtYXRyaXgpIHsKLSAgICAgICAgY3VycmVudFJvb3RMYXllci0+
c2V0T3BhY2l0eShvcGFjaXR5KTsKKyAgICBpZiAoY3VycmVudFJvb3RMYXllci0+dHJhbnNmb3Jt
KCkgIT0gbWF0cml4KQogICAgICAgICBjdXJyZW50Um9vdExheWVyLT5zZXRUcmFuc2Zvcm0obWF0
cml4KTsKLSAgICB9CiAKICAgICBjdXJyZW50Um9vdExheWVyLT5wYWludCgpOwogICAgIG1fZnBz
Q291bnRlci51cGRhdGVGUFNBbmREaXNwbGF5KCptX3RleHR1cmVNYXBwZXIsIGNsaXBSZWN0Lmxv
Y2F0aW9uKCksIG1hdHJpeCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5oIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaApp
bmRleCBkNGJiNTgyNjhmZS4uMmU2YjMzNWRiYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmgKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdy
YXBoaWNzU2NlbmUuaApAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q29v
cmRpbmF0ZWRHcmFwaGljc1NjZW5lKCk7CiAKICAgICB2b2lkIGFwcGx5U3RhdGVDaGFuZ2VzKGNv
bnN0IFZlY3RvcjxXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU3RhdGU+Jik7Ci0gICAgdm9p
ZCBwYWludFRvQ3VycmVudEdMQ29udGV4dChjb25zdCBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYsIGZsb2F0LCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpD
b2xvciYgYmFja2dyb3VuZENvbG9yLCBib29sIGRyYXdzQmFja2dyb3VuZCwgV2ViQ29yZTo6VGV4
dHVyZU1hcHBlcjo6UGFpbnRGbGFncyA9IDApOworICAgIHZvaWQgcGFpbnRUb0N1cnJlbnRHTENv
bnRleHQoY29uc3QgV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25zdCBXZWJDb3Jl
OjpGbG9hdFJlY3QmLCBXZWJDb3JlOjpUZXh0dXJlTWFwcGVyOjpQYWludEZsYWdzID0gMCk7CiAg
ICAgdm9pZCBkZXRhY2goKTsKIAogICAgIC8vIFRoZSBwYWludGluZyB0aHJlYWQgbXVzdCBsb2Nr
IHRoZSBtYWluIHRocmVhZCB0byB1c2UgYmVsb3cgdHdvIG1ldGhvZHMsIGJlY2F1c2UgdHdvIG1l
dGhvZHMgYWNjZXNzIG1lbWJlcnMgdGhhdCB0aGUgbWFpbiB0aHJlYWQgbWFuYWdlcy4gU2VlIG1f
Y2xpZW50LgpAQCAtODIsOSArODIsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0FjdGl2ZSgpIGNv
bnN0IHsgcmV0dXJuIG1faXNBY3RpdmU7IH0KICAgICB2b2lkIHNldEFjdGl2ZShib29sIGFjdGl2
ZSkgeyBtX2lzQWN0aXZlID0gYWN0aXZlOyB9CiAKLSAgICB2b2lkIHNldFZpZXdCYWNrZ3JvdW5k
Q29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9yKSB7IG1fdmlld0JhY2tncm91bmRDb2xv
ciA9IGNvbG9yOyB9Ci0gICAgV2ViQ29yZTo6Q29sb3Igdmlld0JhY2tncm91bmRDb2xvcigpIGNv
bnN0IHsgcmV0dXJuIG1fdmlld0JhY2tncm91bmRDb2xvcjsgfQotCiBwcml2YXRlOgogICAgIHZv
aWQgY29tbWl0U2NlbmVTdGF0ZShjb25zdCBXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU3Rh
dGU6Ok5pY29zaWFTdGF0ZSYpOwogICAgIHZvaWQgdXBkYXRlU2NlbmVTdGF0ZSgpOwpAQCAtMTEz
LDcgKzExMCw2IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlRleHR1
cmVNYXBwZXJMYXllcj4gbV9yb290TGF5ZXI7CiAKICAgICBOaWNvc2lhOjpQbGF0Zm9ybUxheWVy
OjpMYXllcklEIG1fcm9vdExheWVySUQgeyAwIH07Ci0gICAgV2ViQ29yZTo6Q29sb3IgbV92aWV3
QmFja2dyb3VuZENvbG9yIHsgV2ViQ29yZTo6Q29sb3I6OndoaXRlIH07CiAKICAgICBXZWJDb3Jl
OjpUZXh0dXJlTWFwcGVyRlBTQ291bnRlciBtX2Zwc0NvdW50ZXI7CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0
b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHAKaW5k
ZXggNzUyMmY4NGVhOGYuLjgwNWYyMzMwY2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBv
c2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
dGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHAKQEAgLTE1NiwxMyArMTU2
LDYgQEAgdm9pZCBUaHJlYWRlZENvbXBvc2l0b3I6OnNldFZpZXdwb3J0U2l6ZShjb25zdCBJbnRT
aXplJiB2aWV3cG9ydFNpemUsIGZsb2F0IHNjYWwKICAgICBtX2NvbXBvc2l0aW5nUnVuTG9vcC0+
c2NoZWR1bGVVcGRhdGUoKTsKIH0KIAotdm9pZCBUaHJlYWRlZENvbXBvc2l0b3I6OnNldERyYXdz
QmFja2dyb3VuZChib29sIGRyYXdzQmFja2dyb3VuZCkKLXsKLSAgICBMb2NrSG9sZGVyIGxvY2tl
cihtX2F0dHJpYnV0ZXMubG9jayk7Ci0gICAgbV9hdHRyaWJ1dGVzLmRyYXdzQmFja2dyb3VuZCA9
IGRyYXdzQmFja2dyb3VuZDsKLSAgICBtX2NvbXBvc2l0aW5nUnVuTG9vcC0+c2NoZWR1bGVVcGRh
dGUoKTsKLX0KLQogdm9pZCBUaHJlYWRlZENvbXBvc2l0b3I6OnVwZGF0ZVZpZXdwb3J0KCkKIHsK
ICAgICBtX2NvbXBvc2l0aW5nUnVuTG9vcC0+c2NoZWR1bGVVcGRhdGUoKTsKQEAgLTE5NCw4ICsx
ODcsOCBAQCB2b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6cmVuZGVyTGF5ZXJUcmVlKCkKICAgICBX
ZWJDb3JlOjpJbnRTaXplIHZpZXdwb3J0U2l6ZTsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBzY3Jv
bGxQb3NpdGlvbjsKICAgICBmbG9hdCBzY2FsZUZhY3RvcjsKLSAgICBib29sIGRyYXdzQmFja2dy
b3VuZDsKICAgICBib29sIG5lZWRzUmVzaXplOworCiAgICAgVmVjdG9yPFdlYkNvcmU6OkNvb3Jk
aW5hdGVkR3JhcGhpY3NTdGF0ZT4gc3RhdGVzOwogCiAgICAgewpAQCAtMjAzLDcgKzE5Niw2IEBA
IHZvaWQgVGhyZWFkZWRDb21wb3NpdG9yOjpyZW5kZXJMYXllclRyZWUoKQogICAgICAgICB2aWV3
cG9ydFNpemUgPSBtX2F0dHJpYnV0ZXMudmlld3BvcnRTaXplOwogICAgICAgICBzY3JvbGxQb3Np
dGlvbiA9IG1fYXR0cmlidXRlcy5zY3JvbGxQb3NpdGlvbjsKICAgICAgICAgc2NhbGVGYWN0b3Ig
PSBtX2F0dHJpYnV0ZXMuc2NhbGVGYWN0b3I7Ci0gICAgICAgIGRyYXdzQmFja2dyb3VuZCA9IG1f
YXR0cmlidXRlcy5kcmF3c0JhY2tncm91bmQ7CiAgICAgICAgIG5lZWRzUmVzaXplID0gbV9hdHRy
aWJ1dGVzLm5lZWRzUmVzaXplOwogCiAgICAgICAgIHN0YXRlcyA9IFdURk1vdmUobV9hdHRyaWJ1
dGVzLnN0YXRlcyk7CkBAIC0yNDcsMTQgKzIzOSwxMSBAQCB2b2lkIFRocmVhZGVkQ29tcG9zaXRv
cjo6cmVuZGVyTGF5ZXJUcmVlKCkKICAgICB2aWV3cG9ydFRyYW5zZm9ybS5zY2FsZShzY2FsZUZh
Y3Rvcik7CiAgICAgdmlld3BvcnRUcmFuc2Zvcm0udHJhbnNsYXRlKC1zY3JvbGxQb3NpdGlvbi54
KCksIC1zY3JvbGxQb3NpdGlvbi55KCkpOwogCi0gICAgaWYgKCFkcmF3c0JhY2tncm91bmQpIHsK
LSAgICAgICAgZ2xDbGVhckNvbG9yKDAsIDAsIDAsIDApOwotICAgICAgICBnbENsZWFyKEdMX0NP
TE9SX0JVRkZFUl9CSVQpOwotICAgIH0KKyAgICBnbENsZWFyQ29sb3IoMCwgMCwgMCwgMCk7Cisg
ICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKIAogICAgIG1fc2NlbmUtPmFwcGx5U3Rh
dGVDaGFuZ2VzKHN0YXRlcyk7Ci0gICAgbV9zY2VuZS0+cGFpbnRUb0N1cnJlbnRHTENvbnRleHQo
dmlld3BvcnRUcmFuc2Zvcm0sIDEsIEZsb2F0UmVjdCB7IEZsb2F0UG9pbnQgeyB9LCB2aWV3cG9y
dFNpemUgfSwKLSAgICAgICAgQ29sb3I6OnRyYW5zcGFyZW50LCAhZHJhd3NCYWNrZ3JvdW5kLCBt
X3BhaW50RmxhZ3MpOworICAgIG1fc2NlbmUtPnBhaW50VG9DdXJyZW50R0xDb250ZXh0KHZpZXdw
b3J0VHJhbnNmb3JtLCBGbG9hdFJlY3QgeyBGbG9hdFBvaW50IHsgfSwgdmlld3BvcnRTaXplIH0s
IG1fcGFpbnRGbGFncyk7CiAKICAgICBtX2NvbnRleHQtPnN3YXBCdWZmZXJzKCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRj
b21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29v
cmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmgK
aW5kZXggNmQ3MDUzODUwZGEuLmI2MzFmYzAzNWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENv
bXBvc2l0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNz
L3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuaApAQCAtNzAsNyArNzAsNiBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTY2FsZUZhY3RvcihmbG9hdCk7CiAgICAgdm9pZCBzZXRT
Y3JvbGxQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIGZsb2F0IHNjYWxlKTsKICAg
ICB2b2lkIHNldFZpZXdwb3J0U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgZmxvYXQgc2Nh
bGUpOwotICAgIHZvaWQgc2V0RHJhd3NCYWNrZ3JvdW5kKGJvb2wpOwogCiAgICAgdm9pZCB1cGRh
dGVTY2VuZVN0YXRlKGNvbnN0IFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZSYpOwog
CkBAIC0xMTIsOSArMTExLDcgQEAgcHJpdmF0ZToKICAgICAgICAgV2ViQ29yZTo6SW50U2l6ZSB2
aWV3cG9ydFNpemU7CiAgICAgICAgIFdlYkNvcmU6OkludFBvaW50IHNjcm9sbFBvc2l0aW9uOwog
ICAgICAgICBmbG9hdCBzY2FsZUZhY3RvciB7IDEgfTsKLSAgICAgICAgYm9vbCBkcmF3c0JhY2tn
cm91bmQgeyB0cnVlIH07CiAgICAgICAgIGJvb2wgbmVlZHNSZXNpemUgeyBmYWxzZSB9OwotCiAg
ICAgICAgIFZlY3RvcjxXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU3RhdGU+IHN0YXRlczsK
IAogICAgICAgICBib29sIGNsaWVudFJlbmRlcnNOZXh0RnJhbWUgeyBmYWxzZSB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAppbmRl
eCA2ZDA3YzAzYWQ4Yy4uNDNlYTNmNTM2NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC0zOCw3ICszOCw2IEBAIHZvaWQg
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKICAgICBlbmNvZGVyIDw8IHN0b3JlOwogICAgIGVuY29kZXIuZW5jb2RlRW51bShkcmF3
aW5nQXJlYVR5cGUpOwogICAgIGVuY29kZXIgPDwgcGFnZUdyb3VwRGF0YTsKLSAgICBlbmNvZGVy
IDw8IGRyYXdzQmFja2dyb3VuZDsKICAgICBlbmNvZGVyIDw8IGlzRWRpdGFibGU7CiAgICAgZW5j
b2RlciA8PCB1bmRlcmxheUNvbG9yOwogICAgIGVuY29kZXIgPDwgdXNlRml4ZWRMYXlvdXQ7CkBA
IC0xMjAsNiArMTE5LDcgQEAgdm9pZCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUo
SVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lP
TlMpCiAgICAgZW5jb2RlciA8PCBjb250ZW50UnVsZUxpc3RzOwogI2VuZGlmCisgICAgZW5jb2Rl
ciA8PCBiYWNrZ3JvdW5kQ29sb3I7CiB9CiAKIE9wdGlvbmFsPFdlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnM+IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRl
Y29kZXIpCkBAIC0xMzgsOCArMTM4LDYgQEAgT3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycz4gV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2QKICAgICBp
ZiAoIXBhZ2VHcm91cERhdGEpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgcGFy
YW1ldGVycy5wYWdlR3JvdXBEYXRhID0gV1RGTW92ZSgqcGFnZUdyb3VwRGF0YSk7Ci0gICAgaWYg
KCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmRyYXdzQmFja2dyb3VuZCkpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmlz
RWRpdGFibGUpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocGFyYW1ldGVycy51bmRlcmxheUNvbG9yKSkKQEAgLTM0Nyw2ICszNDUsMTEgQEAg
T3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVyczo6ZGVjb2RlKElQQzo6RGVjb2QKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAg
ICBwYXJhbWV0ZXJzLmNvbnRlbnRSdWxlTGlzdHMgPSBXVEZNb3ZlKCpjb250ZW50UnVsZUxpc3Rz
KTsKICNlbmRpZgorICAgIE9wdGlvbmFsPE9wdGlvbmFsPFdlYkNvcmU6OkNvbG9yPj4gYmFja2dy
b3VuZENvbG9yOworICAgIGRlY29kZXIgPj4gYmFja2dyb3VuZENvbG9yOworICAgIGlmICghYmFj
a2dyb3VuZENvbG9yKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHBhcmFtZXRl
cnMuYmFja2dyb3VuZENvbG9yID0gV1RGTW92ZSgqYmFja2dyb3VuZENvbG9yKTsKIAogICAgIHJl
dHVybiBXVEZNb3ZlKHBhcmFtZXRlcnMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4IGIzODJjZWVkZDQ0Li4yNDI3YjhjMjNm
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMuaApAQCAtNzMsNyArNzMsNiBAQCBzdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyB7
CiAgICAgRHJhd2luZ0FyZWFUeXBlIGRyYXdpbmdBcmVhVHlwZTsKICAgICBXZWJQYWdlR3JvdXBE
YXRhIHBhZ2VHcm91cERhdGE7CiAKLSAgICBib29sIGRyYXdzQmFja2dyb3VuZDsKICAgICBib29s
IGlzRWRpdGFibGU7CiAKICAgICBXZWJDb3JlOjpDb2xvciB1bmRlcmxheUNvbG9yOwpAQCAtMTg2
LDYgKzE4NSw4IEBAIHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICNpZiBFTkFC
TEUoQ09OVEVOVF9FWFRFTlNJT05TKQogICAgIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBXZWJD
b21waWxlZENvbnRlbnRSdWxlTGlzdERhdGE+PiBjb250ZW50UnVsZUxpc3RzOwogI2VuZGlmCisK
KyAgICBPcHRpb25hbDxXZWJDb3JlOjpDb2xvcj4gYmFja2dyb3VuZENvbG9yOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNXUEUu
dHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzV1BFLnR4dAppbmRleCBiNzRjZTYzNmNlZS4uZDRh
NGZkMWRmMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc1dQRS50eHQKKysrIGIv
U291cmNlL1dlYktpdC9Tb3VyY2VzV1BFLnR4dApAQCAtMTY4LDYgKzE2OCw3IEBAIFVJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRXaW5kb3dQcm9wZXJ0aWVzLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vz
cy9BUEkvd3BlL0NvbXBvc2l0aW5nTWFuYWdlclByb3h5LmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vz
cy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvd3Bl
L1Njcm9sbEdlc3R1cmVDb250cm9sbGVyLmNwcCBAbm8tdW5pZnkKK1VJUHJvY2Vzcy9BUEkvd3Bl
L1dlYktpdENvbG9yLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFNjcmlw
dERpYWxvZ1dQRS5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3
QmFja2VuZC5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3V1BF
LmNwcCBAbm8tdW5pZnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0V2ViVmlldy5jcHAKaW5kZXggNjcyMDFkODllYWEuLjdhOGExMGY1YzFjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcApA
QCAtMzk2OSw3NCArMzk2OSw2IEBAIHZvaWQgd2Via2l0V2ViVmlld1dlYlByb2Nlc3NUZXJtaW5h
dGVkKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdFdlYlByb2Nlc3NUCiAgICAgZ19zaWdu
YWxfZW1pdCh3ZWJWaWV3LCBzaWduYWxzW1dFQl9QUk9DRVNTX1RFUk1JTkFURURdLCAwLCByZWFz
b24pOwogfQogCi0jaWYgUExBVEZPUk0oR1RLKQotLyoqCi0gKiB3ZWJraXRfd2ViX3ZpZXdfc2V0
X2JhY2tncm91bmRfY29sb3I6Ci0gKiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZpZXcKLSAqIEBy
Z2JhOiBhICNHZGtSR0JBCi0gKgotICogU2V0cyB0aGUgY29sb3IgdGhhdCB3aWxsIGJlIHVzZWQg
dG8gZHJhdyB0aGUgQHdlYl92aWV3IGJhY2tncm91bmQgYmVmb3JlCi0gKiB0aGUgYWN0dWFsIGNv
bnRlbnRzIGFyZSByZW5kZXJlZC4gTm90ZSB0aGF0IGlmIHRoZSB3ZWIgcGFnZSBsb2FkZWQgaW4g
QHdlYl92aWV3Ci0gKiBzcGVjaWZpZXMgYSBiYWNrZ3JvdW5kIGNvbG9yLCBpdCB3aWxsIHRha2Ug
cHJlY2VkZW5jZSBvdmVyIHRoZSBAcmdiYSBjb2xvci4KLSAqIEJ5IGRlZmF1bHQgdGhlIEB3ZWJf
dmlldyBiYWNrZ3JvdW5kIGNvbG9yIGlzIG9wYXF1ZSB3aGl0ZS4KLSAqIE5vdGUgdGhhdCB0aGUg
cGFyZW50IHdpbmRvdyBtdXN0IGhhdmUgYSBSR0JBIHZpc3VhbCBhbmQKLSAqICNHdGtXaWRnZXQ6
YXBwLXBhaW50YWJsZSBwcm9wZXJ0eSBzZXQgdG8gJVRSVUUgZm9yIGJhY2tncm91bmRzIGNvbG9y
cyB0byB3b3JrLgotICoKLSAqIDxpbmZvcm1hbGV4YW1wbGU+PHByb2dyYW1saXN0aW5nPgotICog
c3RhdGljIHZvaWQgYnJvd3Nlcl93aW5kb3dfc2V0X2JhY2tncm91bmRfY29sb3IgKEJyb3dzZXJX
aW5kb3cgKndpbmRvdywKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHZGtSR0JBICpyZ2JhKQotICogewotICogICAgIFdlYktpdFdlYlZp
ZXcgKndlYl92aWV3OwotICogICAgIEdka1NjcmVlbiAqc2NyZWVuID0gZ3RrX3dpbmRvd19nZXRf
c2NyZWVuIChHVEtfV0lORE9XICh3aW5kb3cpKTsKLSAqICAgICBHZGtWaXN1YWwgKnJnYmFfdmlz
dWFsID0gZ2RrX3NjcmVlbl9nZXRfcmdiYV92aXN1YWwgKHNjcmVlbik7Ci0gKgotICogICAgIGlm
ICghcmdiYV92aXN1YWwpCi0gKiAgICAgICAgICByZXR1cm47Ci0gKgotICogICAgIGd0a193aWRn
ZXRfc2V0X3Zpc3VhbCAoR1RLX1dJREdFVCAod2luZG93KSwgcmdiYV92aXN1YWwpOwotICogICAg
IGd0a193aWRnZXRfc2V0X2FwcF9wYWludGFibGUgKEdUS19XSURHRVQgKHdpbmRvdyksIFRSVUUp
OwotICoKLSAqICAgICB3ZWJfdmlldyA9IGJyb3dzZXJfd2luZG93X2dldF93ZWJfdmlldyAod2lu
ZG93KTsKLSAqICAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0X2JhY2tncm91bmRfY29sb3IgKHdlYl92
aWV3LCByZ2JhKTsKLSAqIH0KLSAqIDwvcHJvZ3JhbWxpc3Rpbmc+PC9pbmZvcm1hbGV4YW1wbGU+
Ci0gKgotICogU2luY2U6IDIuOAotICovCi12b2lkIHdlYmtpdF93ZWJfdmlld19zZXRfYmFja2dy
b3VuZF9jb2xvcihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBHZGtSR0JBKiByZ2JhKQot
ewotICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpKTsKLSAg
ICBnX3JldHVybl9pZl9mYWlsKHJnYmEpOwotCi0gICAgQ29sb3IgY29sb3IoKnJnYmEpOwotICAg
IGF1dG8mIHBhZ2UgPSBnZXRQYWdlKHdlYlZpZXcpOwotICAgIGlmIChwYWdlLmJhY2tncm91bmRD
b2xvcigpID09IGNvbG9yKQotICAgICAgICByZXR1cm47Ci0KLSAgICBwYWdlLnNldEJhY2tncm91
bmRDb2xvcihjb2xvcik7Ci0gICAgcGFnZS5zZXREcmF3c0JhY2tncm91bmQoY29sb3IgPT0gQ29s
b3I6OndoaXRlKTsKLX0KLQotLyoqCi0gKiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2JhY2tncm91bmRf
Y29sb3I6Ci0gKiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZpZXcKLSAqIEByZ2JhOiAob3V0KTog
YSAjR2RrUkdCQSB0byBmaWxsIGluIHdpdGggdGhlIGJhY2tncm91bmQgY29sb3IKLSAqCi0gKiBH
ZXRzIHRoZSBjb2xvciB0aGF0IGlzIHVzZWQgdG8gZHJhdyB0aGUgQHdlYl92aWV3IGJhY2tncm91
bmQgYmVmb3JlCi0gKiB0aGUgYWN0dWFsIGNvbnRlbnRzIGFyZSByZW5kZXJlZC4KLSAqIEZvciBt
b3JlIGluZm9ybWF0aW9uIHNlZSBhbHNvIHdlYmtpdF93ZWJfdmlld19zZXRfYmFja2dyb3VuZF9j
b2xvcigpCi0gKgotICogU2luY2U6IDIuOAotICovCi12b2lkIHdlYmtpdF93ZWJfdmlld19nZXRf
YmFja2dyb3VuZF9jb2xvcihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBHZGtSR0JBKiByZ2JhKQot
ewotICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpKTsKLSAg
ICBnX3JldHVybl9pZl9mYWlsKHJnYmEpOwotCi0gICAgKnJnYmEgPSBnZXRQYWdlKHdlYlZpZXcp
LmJhY2tncm91bmRDb2xvcigpOwotfQotI2VuZGlmIC8vIFBMQVRGT1JNKEdUSykKLQogLyoKICAq
IHdlYmtpdF93ZWJfdmlld19pc19lZGl0YWJsZToKICAqIEB3ZWJfdmlldzogYSAjV2ViS2l0V2Vi
VmlldwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJWaWV3R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
Vmlld0d0ay5jcHAKaW5kZXggYmM4MjE3OTkxMjguLjc3OTlmYjgxYzczIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdHdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0d0ay5jcHAKQEAg
LTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJXZWJLaXRTY3JpcHREaWFsb2dJbXBsLmgiCiAjaW5j
bHVkZSAiV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViVmll
d1ByaXZhdGUuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9HdGtVdGlsaXRpZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtRGlzcGxheS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1TY3JlZW4uaD4KQEAgLTM1OSwzICszNjAsNjUgQEAg
R3RrV2lkZ2V0KiB3ZWJraXRfd2ViX3ZpZXdfbmV3X3dpdGhfdXNlcl9jb250ZW50X21hbmFnZXIo
V2ViS2l0VXNlckNvbnRlbnRNYW5hZ2UKIAogICAgIHJldHVybiBHVEtfV0lER0VUKGdfb2JqZWN0
X25ldyhXRUJLSVRfVFlQRV9XRUJfVklFVywgInVzZXItY29udGVudC1tYW5hZ2VyIiwgdXNlckNv
bnRlbnRNYW5hZ2VyLCBudWxscHRyKSk7CiB9CisKKy8qKgorICogd2Via2l0X3dlYl92aWV3X3Nl
dF9iYWNrZ3JvdW5kX2NvbG9yOgorICogQHdlYl92aWV3OiBhICNXZWJLaXRXZWJWaWV3CisgKiBA
cmdiYTogYSAjR2RrUkdCQQorICoKKyAqIFNldHMgdGhlIGNvbG9yIHRoYXQgd2lsbCBiZSB1c2Vk
IHRvIGRyYXcgdGhlIEB3ZWJfdmlldyBiYWNrZ3JvdW5kIGJlZm9yZQorICogdGhlIGFjdHVhbCBj
b250ZW50cyBhcmUgcmVuZGVyZWQuIE5vdGUgdGhhdCBpZiB0aGUgd2ViIHBhZ2UgbG9hZGVkIGlu
IEB3ZWJfdmlldworICogc3BlY2lmaWVzIGEgYmFja2dyb3VuZCBjb2xvciwgaXQgd2lsbCB0YWtl
IHByZWNlZGVuY2Ugb3ZlciB0aGUgQHJnYmEgY29sb3IuCisgKiBCeSBkZWZhdWx0IHRoZSBAd2Vi
X3ZpZXcgYmFja2dyb3VuZCBjb2xvciBpcyBvcGFxdWUgd2hpdGUuCisgKiBOb3RlIHRoYXQgdGhl
IHBhcmVudCB3aW5kb3cgbXVzdCBoYXZlIGEgUkdCQSB2aXN1YWwgYW5kCisgKiAjR3RrV2lkZ2V0
OmFwcC1wYWludGFibGUgcHJvcGVydHkgc2V0IHRvICVUUlVFIGZvciBiYWNrZ3JvdW5kcyBjb2xv
cnMgdG8gd29yay4KKyAqCisgKiA8aW5mb3JtYWxleGFtcGxlPjxwcm9ncmFtbGlzdGluZz4KKyAq
IHN0YXRpYyB2b2lkIGJyb3dzZXJfd2luZG93X3NldF9iYWNrZ3JvdW5kX2NvbG9yIChCcm93c2Vy
V2luZG93ICp3aW5kb3csCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR2RrUkdCQSAqcmdiYSkKKyAqIHsKKyAqICAgICBXZWJLaXRXZWJW
aWV3ICp3ZWJfdmlldzsKKyAqICAgICBHZGtTY3JlZW4gKnNjcmVlbiA9IGd0a193aW5kb3dfZ2V0
X3NjcmVlbiAoR1RLX1dJTkRPVyAod2luZG93KSk7CisgKiAgICAgR2RrVmlzdWFsICpyZ2JhX3Zp
c3VhbCA9IGdka19zY3JlZW5fZ2V0X3JnYmFfdmlzdWFsIChzY3JlZW4pOworICoKKyAqICAgICBp
ZiAoIXJnYmFfdmlzdWFsKQorICogICAgICAgICAgcmV0dXJuOworICoKKyAqICAgICBndGtfd2lk
Z2V0X3NldF92aXN1YWwgKEdUS19XSURHRVQgKHdpbmRvdyksIHJnYmFfdmlzdWFsKTsKKyAqICAg
ICBndGtfd2lkZ2V0X3NldF9hcHBfcGFpbnRhYmxlIChHVEtfV0lER0VUICh3aW5kb3cpLCBUUlVF
KTsKKyAqCisgKiAgICAgd2ViX3ZpZXcgPSBicm93c2VyX3dpbmRvd19nZXRfd2ViX3ZpZXcgKHdp
bmRvdyk7CisgKiAgICAgd2Via2l0X3dlYl92aWV3X3NldF9iYWNrZ3JvdW5kX2NvbG9yICh3ZWJf
dmlldywgcmdiYSk7CisgKiB9CisgKiA8L3Byb2dyYW1saXN0aW5nPjwvaW5mb3JtYWxleGFtcGxl
PgorICoKKyAqIFNpbmNlOiAyLjgKKyAqLwordm9pZCB3ZWJraXRfd2ViX3ZpZXdfc2V0X2JhY2tn
cm91bmRfY29sb3IoV2ViS2l0V2ViVmlldyogd2ViVmlldywgY29uc3QgR2RrUkdCQSogcmdiYSkK
K3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSk7Cisg
ICAgZ19yZXR1cm5faWZfZmFpbChyZ2JhKTsKKworICAgIGF1dG8mIHBhZ2UgPSAqd2Via2l0V2Vi
Vmlld0Jhc2VHZXRQYWdlKHJlaW50ZXJwcmV0X2Nhc3Q8V2ViS2l0V2ViVmlld0Jhc2UqPih3ZWJW
aWV3KSk7CisgICAgcGFnZS5zZXRCYWNrZ3JvdW5kQ29sb3IoV2ViQ29yZTo6Q29sb3IoKnJnYmEp
KTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2JhY2tncm91bmRfY29sb3I6Cisg
KiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZpZXcKKyAqIEByZ2JhOiAob3V0KTogYSAjR2RrUkdC
QSB0byBmaWxsIGluIHdpdGggdGhlIGJhY2tncm91bmQgY29sb3IKKyAqCisgKiBHZXRzIHRoZSBj
b2xvciB0aGF0IGlzIHVzZWQgdG8gZHJhdyB0aGUgQHdlYl92aWV3IGJhY2tncm91bmQgYmVmb3Jl
CisgKiB0aGUgYWN0dWFsIGNvbnRlbnRzIGFyZSByZW5kZXJlZC4KKyAqIEZvciBtb3JlIGluZm9y
bWF0aW9uIHNlZSBhbHNvIHdlYmtpdF93ZWJfdmlld19zZXRfYmFja2dyb3VuZF9jb2xvcigpCisg
KgorICogU2luY2U6IDIuOAorICovCit2b2lkIHdlYmtpdF93ZWJfdmlld19nZXRfYmFja2dyb3Vu
ZF9jb2xvcihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBHZGtSR0JBKiByZ2JhKQoreworICAgIGdf
cmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpKTsKKyAgICBnX3JldHVy
bl9pZl9mYWlsKHJnYmEpOworCisgICAgYXV0byYgcGFnZSA9ICp3ZWJraXRXZWJWaWV3QmFzZUdl
dFBhZ2UocmVpbnRlcnByZXRfY2FzdDxXZWJLaXRXZWJWaWV3QmFzZSo+KHdlYlZpZXcpKTsKKyAg
ICAqcmdiYSA9IHBhZ2UuYmFja2dyb3VuZENvbG9yKCkudmFsdWVPcihXZWJDb3JlOjpDb2xvcjo6
d2hpdGUpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9X
ZWJLaXRDb2xvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdENv
bG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYjgxOGY5NWEz
MDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dl
YktpdENvbG9yLmNwcApAQCAtMCwwICsxLDExOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
OSBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAq
CisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor
ICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViS2l0Q29sb3Iu
aCIKKworI2luY2x1ZGUgIldlYktpdENvbG9yUHJpdmF0ZS5oIgorCisvKioKKyAqIFNFQ1RJT046
IFdlYktpdENvbG9yCisgKiBAU2hvcnRfZGVzY3JpcHRpb246IEEgYm94ZWQgdHlwZSByZXByZXNl
bnRpbmcgYSBSR0JBIGNvbG9yCisgKiBAVGl0bGU6IFdlYktpdENvbG9yCisgKiBAU2VlX2Fsc286
ICNXZWJLaXRXZWJWaWV3LgorICoKKyAqIEEgV2ViS2l0Q29sb3IgaXMgYSBib3hlZCB0eXBlIHJl
cHJlc2VudGluZyBhIFJHQkEgY29sb3IuCisgKgorICogU2luY2U6IDIuMjQKKyAqLworCisvKioK
KyAqIHdlYmtpdF9jb2xvcl9jb3B5OgorICogQGNvbG9yOiBhICNXZWJLaXRDb2xvcgorICoKKyAq
IE1ha2UgYSBjb3B5IG9mIEBjb2xvci4KKyAqCisgKiBSZXR1cm5zOiAodHJhbnNmZXIgZnVsbCk6
IEEgY29weSBvZiBwYXNzZWQgaW4gI1dlYktpdENvbG9yLgorICoKKyAqIFNpbmNlOiAyLjI0Cisg
Ki8KK1dlYktpdENvbG9yKiB3ZWJraXRfY29sb3JfY29weShXZWJLaXRDb2xvciogY29sb3IpCit7
CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoY29sb3IsIG51bGxwdHIpOworCisgICAgV2ViS2l0
Q29sb3IqIGNvcHkgPSBzdGF0aWNfY2FzdDxXZWJLaXRDb2xvcio+KGZhc3RaZXJvZWRNYWxsb2Mo
c2l6ZW9mKFdlYktpdENvbG9yKSkpOworICAgIGNvcHktPnJlZCA9IGNvbG9yLT5yZWQ7CisgICAg
Y29weS0+Z3JlZW4gPSBjb2xvci0+Z3JlZW47CisgICAgY29weS0+Ymx1ZSA9IGNvbG9yLT5ibHVl
OworICAgIGNvcHktPmFscGhhID0gY29sb3ItPmFscGhhOworICAgIHJldHVybiBjb3B5OworfQor
CisvKioKKyAqIHdlYmtpdF9jb2xvcl9mcmVlOgorICogQGNvbG9yOiBhICNXZWJLaXRDb2xvcgor
ICoKKyAqIEZyZWUgdGhlICNXZWJLaXRDb2xvci4KKyAqCisgKiBTaW5jZTogMi4yNAorICovCit2
b2lkIHdlYmtpdF9jb2xvcl9mcmVlKFdlYktpdENvbG9yKiBjb2xvcikKK3sKKyAgICBnX3JldHVy
bl9pZl9mYWlsKGNvbG9yKTsKKworICAgIGZhc3RGcmVlKGNvbG9yKTsKK30KKworR19ERUZJTkVf
Qk9YRURfVFlQRShXZWJLaXRDb2xvciwgd2Via2l0X2NvbG9yLCB3ZWJraXRfY29sb3JfY29weSwg
d2Via2l0X2NvbG9yX2ZyZWUpOworCitjb25zdCBXZWJDb3JlOjpDb2xvciB3ZWJraXRDb2xvclRv
V2ViQ29yZUNvbG9yKFdlYktpdENvbG9yKiBjb2xvcikKK3sKKyAgICByZXR1cm4gV2ViQ29yZTo6
Q29sb3Ioc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNvbG9yLT5yZWQpLCBzdGF0aWNfY2FzdDxmbG9hdD4o
Y29sb3ItPmdyZWVuKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNvbG9yLT5ibHVlKSwg
c3RhdGljX2Nhc3Q8ZmxvYXQ+KGNvbG9yLT5hbHBoYSkpOworfQorCit2b2lkIHdlYmtpdENvbG9y
RmlsbEZyb21XZWJDb3JlQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImIHdlYkNvcmVDb2xvciwg
V2ViS2l0Q29sb3IqIGNvbG9yKQoreworICAgIFJFTEVBU0VfQVNTRVJUKHdlYkNvcmVDb2xvci5p
c1ZhbGlkKCkpOworCisgICAgZG91YmxlIHIsIGcsIGIsIGE7CisgICAgd2ViQ29yZUNvbG9yLmdl
dFJHQkEociwgZywgYiwgYSk7CisgICAgY29sb3ItPnJlZCA9IHI7CisgICAgY29sb3ItPmdyZWVu
ID0gZzsKKyAgICBjb2xvci0+Ymx1ZSA9IGI7CisgICAgY29sb3ItPmFscGhhID0gYTsKK30KKwor
LyoqCisgKiB3ZWJraXRfY29sb3JfcGFyc2U6CisgKiBAY29sb3I6IGEgI1dlYktpdENvbG9yIHRv
IGZpbGwgaW4KKyAqIEBjb2xvcl9zdHJpbmc6IGNvbG9yIHJlcHJlc2VudGF0aW9uIGFzIGNvbG9y
IG5pY2tuYW1lIG9yIEhFWCBzdHJpbmcKKyAqCisgKiBDcmVhdGUgYSBuZXcgI1dlYktpdENvbG9y
IGZvciB0aGUgZ2l2ZW4gQGNvbG9yX3N0cmluZworICogcmVwcmVzZW50YXRpb24uIFRoZXJlIGFy
ZSB0d28gdmFsaWQgcmVwcmVzZW50YXRpb24gdHlwZXM6IHN0YW5kYXJkIGNvbG9yCisgKiBuYW1l
cyAoc2VlIGh0dHBzOi8vaHRtbGNvbG9yY29kZXMuY29tL2NvbG9yLW5hbWVzLyBmb3IgaW5zdGFu
Y2UpIG9yIEhFWAorICogdmFsdWVzLgorICoKKyAqIFJldHVybnM6IGEgI2dib29sZWFuIGluZGlj
YXRpbmcgaWYgdGhlIEBjb2xvciB3YXMgY29ycmVjdGx5IGZpbGxlZCBpbiBvciBub3QuCisgKgor
ICogU2luY2U6IDIuMjQKKyAqLworZ2Jvb2xlYW4gd2Via2l0X2NvbG9yX3BhcnNlKFdlYktpdENv
bG9yKiBjb2xvciwgY29uc3QgZ2NoYXIqIGNvbG9yU3RyaW5nKQoreworICAgIGdfcmV0dXJuX3Zh
bF9pZl9mYWlsKGNvbG9yLCBGQUxTRSk7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoY29sb3JT
dHJpbmcsIEZBTFNFKTsKKworICAgIGF1dG8gd2ViQ29yZUNvbG9yID0gV2ViQ29yZTo6Q29sb3Io
Y29sb3JTdHJpbmcpOworICAgIGlmICghd2ViQ29yZUNvbG9yLmlzVmFsaWQoKSkKKyAgICAgICAg
cmV0dXJuIEZBTFNFOworCisgICAgd2Via2l0Q29sb3JGaWxsRnJvbVdlYkNvcmVDb2xvcih3ZWJD
b3JlQ29sb3IsIGNvbG9yKTsKKyAgICByZXR1cm4gVFJVRTsKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0Q29sb3IuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0Q29sb3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMC4uZjI2ZDA5MTYwNjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdENvbG9yLmgKQEAgLTAsMCArMSw2MiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxOSBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisg
KiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgor
ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWYgIWRlZmluZWQoX19XRUJLSVRf
SF9JTlNJREVfXykgJiYgIWRlZmluZWQoV0VCS0lUMl9DT01QSUxBVElPTikKKyNlcnJvciAiT25s
eSA8d3BlL3dlYmtpdC5oPiBjYW4gYmUgaW5jbHVkZWQgZGlyZWN0bHkuIgorI2VuZGlmCisKKyNp
Zm5kZWYgV2ViS2l0Q29sb3JfaAorI2RlZmluZSBXZWJLaXRDb2xvcl9oCisKKyNpbmNsdWRlIDxn
bGliLW9iamVjdC5oPgorI2luY2x1ZGUgPHdwZS9XZWJLaXREZWZpbmVzLmg+CisKK0dfQkVHSU5f
REVDTFMKKworLyoqCisgKiBXZWJLaXRDb2xvcjoKKyAqIEByZWQ6IFJlZCBjaGFubmVsLCBiZXR3
ZWVuIDAuMCBhbmQgMS4wIGluY2x1c2l2ZQorICogQGdyZWVuOiBHcmVlbiBjaGFubmVsLCBiZXR3
ZWVuIDAuMCBhbmQgMS4wIGluY2x1c2l2ZQorICogQGJsdWU6IEJsdWUgY2hhbm5lbCwgYmV0d2Vl
biAwLjAgYW5kIDEuMCBpbmNsdXNpdmUKKyAqIEBhbHBoYTogQWxwaGEgY2hhbm5lbCwgYmV0d2Vl
biAwLjAgYW5kIDEuMCBpbmNsdXNpdmUKKyAqCisgKiBBIFdlYktpdENvbG9yIGlzIGEgYm94ZWQg
dHlwZSByZXByZXNlbnRpbmcgYSBSR0JBIGNvbG9yLgorICoKKyAqIFNpbmNlOiAyLjI0CisgKi8K
K3N0cnVjdCBfV2ViS2l0Q29sb3IgeworICAgIGdkb3VibGUgcmVkOworICAgIGdkb3VibGUgZ3Jl
ZW47CisgICAgZ2RvdWJsZSBibHVlOworICAgIGdkb3VibGUgYWxwaGE7Cit9OworCit0eXBlZGVm
IHN0cnVjdCBfV2ViS2l0Q29sb3IgV2ViS2l0Q29sb3I7CisKKyNkZWZpbmUgV0VCS0lUX1RZUEVf
Q09MT1IgKHdlYmtpdF9jb2xvcl9nZXRfdHlwZSgpKQorCitXRUJLSVRfQVBJIEdUeXBlCit3ZWJr
aXRfY29sb3JfZ2V0X3R5cGUgICAgICh2b2lkKTsKKworV0VCS0lUX0FQSSBnYm9vbGVhbgord2Vi
a2l0X2NvbG9yX3BhcnNlICAgICAgICAoV2ViS2l0Q29sb3IgKmNvbG9yLCBjb25zdCBnY2hhciAq
Y29sb3Jfc3RyaW5nKTsKKworR19FTkRfREVDTFMKKworI2VuZGlmIC8qIFdlYktpdENvbG9yX2gg
Ki8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0Q29s
b3JQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdENvbG9y
UHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4yMzlhMTE2
MDM0MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUv
V2ViS2l0Q29sb3JQcml2YXRlLmgKQEAgLTAsMCArMSwyNiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxOSBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNvbG9yLmgiCisj
aW5jbHVkZSAiV2ViS2l0Q29sb3IuaCIKKwordm9pZCB3ZWJraXRDb2xvckZpbGxGcm9tV2ViQ29y
ZUNvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiwgV2ViS2l0Q29sb3IqKTsKK2NvbnN0IFdlYkNv
cmU6OkNvbG9yIHdlYmtpdENvbG9yVG9XZWJDb3JlQ29sb3IoV2ViS2l0Q29sb3IqKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViVmlldy5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3LmgKaW5kZXggNDEw
MmE3NTI2ZDYuLjJhNGE2MjA0MjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvd3BlL1dlYktpdFdlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvd3BlL1dlYktpdFdlYlZpZXcuaApAQCAtNDksNiArNDksNyBAQAogI2luY2x1ZGUgPHdwZS9X
ZWJLaXRXZWJDb250ZXh0Lmg+CiAjaW5jbHVkZSA8d3BlL1dlYktpdFdlYlJlc291cmNlLmg+CiAj
aW5jbHVkZSA8d3BlL1dlYktpdFdlYlZpZXdCYWNrZW5kLmg+CisjaW5jbHVkZSA8d3BlL1dlYktp
dENvbG9yLmg+CiAjaW5jbHVkZSA8d3BlL1dlYktpdFdlYlZpZXdTZXNzaW9uU3RhdGUuaD4KICNp
bmNsdWRlIDx3cGUvV2ViS2l0V2luZG93UHJvcGVydGllcy5oPgogCkBAIC01MTcsNiArNTE4LDEz
IEBAIFdFQktJVF9BUEkgdm9pZAogd2Via2l0X3dlYl92aWV3X3JlbW92ZV9mcmFtZV9kaXNwbGF5
ZWRfY2FsbGJhY2sgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1
aW50ICAgICAgICAgICAgICAgICAgICAgICAgaWQpOwogCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtp
dF93ZWJfdmlld19zZXRfYmFja2dyb3VuZF9jb2xvciAgICAgICAgICAgICAgICAgKFdlYktpdFdl
YlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRDb2xvciAgICAgICAgICAgICAgICAg
KmNvbG9yKTsKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl92aWV3X2dldF9iYWNrZ3JvdW5k
X2NvbG9yICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJf
dmlldywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFdlYktpdENvbG9yICAgICAgICAgICAgICAgICAqY29sb3IpOworCiBHX0VORF9ERUNMUwog
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2Vi
S2l0V2ViVmlld1dQRS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktp
dFdlYlZpZXdXUEUuY3BwCmluZGV4IGEzNDk1ZTg1MmUxLi45ZTVjZTVjMzg5NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3V1BFLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXdXUEUuY3Bw
CkBAIC0yMCw2ICsyMCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViS2l0
V2ViVmlldy5oIgogCisjaW5jbHVkZSAiV2ViS2l0Q29sb3JQcml2YXRlLmgiCiAjaW5jbHVkZSAi
V2ViS2l0V2ViVmlld1ByaXZhdGUuaCIKIAogZ2Jvb2xlYW4gd2Via2l0V2ViVmlld0F1dGhlbnRp
Y2F0ZShXZWJLaXRXZWJWaWV3KiwgV2ViS2l0QXV0aGVudGljYXRpb25SZXF1ZXN0KikKQEAgLTE3
OCwzICsxNzksNDQgQEAgV2ViS2l0V2ViVmlldyogd2Via2l0X3dlYl92aWV3X25ld193aXRoX3Vz
ZXJfY29udGVudF9tYW5hZ2VyKFdlYktpdFdlYlZpZXdCYWNrZW4KICAgICAgICAgInVzZXItY29u
dGVudC1tYW5hZ2VyIiwgdXNlckNvbnRlbnRNYW5hZ2VyLAogICAgICAgICBudWxscHRyKSk7CiB9
CisKKy8qKgorICogd2Via2l0X3dlYl92aWV3X3NldF9iYWNrZ3JvdW5kX2NvbG9yOgorICogQHdl
Yl92aWV3OiBhICNXZWJLaXRXZWJWaWV3CisgKiBAYmFja2dyb3VuZENvbG9yOiBhICNXZWJLaXRD
b2xvcgorICoKKyAqIFNldHMgdGhlIGNvbG9yIHRoYXQgd2lsbCBiZSB1c2VkIHRvIGRyYXcgdGhl
IEB3ZWJfdmlldyBiYWNrZ3JvdW5kIGJlZm9yZQorICogdGhlIGFjdHVhbCBjb250ZW50cyBhcmUg
cmVuZGVyZWQuIE5vdGUgdGhhdCBpZiB0aGUgd2ViIHBhZ2UgbG9hZGVkIGluIEB3ZWJfdmlldwor
ICogc3BlY2lmaWVzIGEgYmFja2dyb3VuZCBjb2xvciwgaXQgd2lsbCB0YWtlIHByZWNlZGVuY2Ug
b3ZlciB0aGUgYmFja2dyb3VuZCBjb2xvci4KKyAqIEJ5IGRlZmF1bHQgdGhlIEB3ZWJfdmlldyBi
YWNrZ3JvdW5kIGNvbG9yIGlzIG9wYXF1ZSB3aGl0ZS4KKyAqCisgKiBTaW5jZTogMi4yNAorICov
Cit2b2lkIHdlYmtpdF93ZWJfdmlld19zZXRfYmFja2dyb3VuZF9jb2xvcihXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3LCBXZWJLaXRDb2xvciogYmFja2dyb3VuZENvbG9yKQoreworICAgIGdfcmV0dXJu
X2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpKTsKKyAgICBnX3JldHVybl9pZl9m
YWlsKGJhY2tncm91bmRDb2xvcik7CisKKyAgICBhdXRvJiBwYWdlID0gd2Via2l0V2ViVmlld0dl
dFBhZ2Uod2ViVmlldyk7CisgICAgcGFnZS5zZXRCYWNrZ3JvdW5kQ29sb3Iod2Via2l0Q29sb3JU
b1dlYkNvcmVDb2xvcihiYWNrZ3JvdW5kQ29sb3IpKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2Vi
X3ZpZXdfZ2V0X2JhY2tncm91bmRfY29sb3I6CisgKiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZp
ZXcKKyAqIEByZ2JhOiAob3V0KTogYSAjV2ViS2l0Q29sb3IgdG8gZmlsbCBpbiB3aXRoIHRoZSBi
YWNrZ3JvdW5kIGNvbG9yCisgKgorICogR2V0cyB0aGUgY29sb3IgdGhhdCBpcyB1c2VkIHRvIGRy
YXcgdGhlIEB3ZWJfdmlldyBiYWNrZ3JvdW5kIGJlZm9yZSB0aGUKKyAqIGFjdHVhbCBjb250ZW50
cyBhcmUgcmVuZGVyZWQuIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZSBhbHNvCisgKiB3ZWJraXRf
d2ViX3ZpZXdfc2V0X2JhY2tncm91bmRfY29sb3IoKS4KKyAqCisgKiBTaW5jZTogMi4yNAorICov
Cit2b2lkIHdlYmtpdF93ZWJfdmlld19nZXRfYmFja2dyb3VuZF9jb2xvcihXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3LCBXZWJLaXRDb2xvciogY29sb3IpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChX
RUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldykpOworICAgIGF1dG8mIHBhZ2UgPSB3ZWJraXRXZWJW
aWV3R2V0UGFnZSh3ZWJWaWV3KTsKKworICAgIGF1dG8mIHdlYkNvcmVDb2xvciA9IHBhZ2UuYmFj
a2dyb3VuZENvbG9yKCk7CisgICAgd2Via2l0Q29sb3JGaWxsRnJvbVdlYkNvcmVDb2xvcih3ZWJD
b3JlQ29sb3IudmFsdWVPcihXZWJDb3JlOjpDb2xvcjo6d2hpdGUpLCBjb2xvcik7Cit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTAuMS1zZWN0
aW9ucy50eHQgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTAuMS1z
ZWN0aW9ucy50eHQKaW5kZXggNmZjZjYxYWQwZjQuLmU2MmNhZDBiMjAzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTAuMS1zZWN0aW9ucy50eHQK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dwZS0wLjEtc2VjdGlv
bnMudHh0CkBAIC0yMDYsNiArMjA2LDggQEAgd2Via2l0X3dlYl92aWV3X3Jlc3RvcmVfc2Vzc2lv
bl9zdGF0ZQogd2Via2l0X3dlYl92aWV3X2dldF9tYWluX3Jlc291cmNlCiB3ZWJraXRfd2ViX3Zp
ZXdfYWRkX2ZyYW1lX2Rpc3BsYXllZF9jYWxsYmFjawogd2Via2l0X3dlYl92aWV3X3JlbW92ZV9m
cmFtZV9kaXNwbGF5ZWRfY2FsbGJhY2sKK3dlYmtpdF93ZWJfdmlld19nZXRfYmFja2dyb3VuZF9j
b2xvcgord2Via2l0X3dlYl92aWV3X3NldF9iYWNrZ3JvdW5kX2NvbG9yCiAKIDxTVUJTRUNUSU9O
IFdlYktpdEphdmFzY3JpcHRSZXN1bHQ+CiBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0CkBAIC0yNjYs
NiArMjY4LDE2IEBAIHdlYmtpdF93ZWJfdmlld19iYWNrZW5kX25ldwogd2Via2l0X3dlYl92aWV3
X2JhY2tlbmRfZ2V0X3R5cGUKIDwvU0VDVElPTj4KIAorPFNFQ1RJT04+Cis8RklMRT5XZWJLaXRD
b2xvcjwvRklMRT4KK1dFQktJVF9UWVBFX0NPTE9SCitXZWJLaXRDb2xvcgord2Via2l0X2NvbG9y
X3BhcnNlCisKKzxTVUJTRUNUSU9OIFByaXZhdGU+Cit3ZWJraXRfY29sb3JfZ2V0X3R5cGUKKzwv
U0VDVElPTj4KKwogPFNFQ1RJT04+CiA8RklMRT5XZWJLaXRBdXRoZW50aWNhdGlvblJlcXVlc3Q8
L0ZJTEU+CiBXZWJLaXRBdXRoZW50aWNhdGlvblJlcXVlc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGI5MWZhYWY3NDQ5Li5mNmMyNTMwZDJmOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC00MjQsNyArNDI0LDYgQEAg
V2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJv
Y2Vzc1Byb3h5JiBwcm9jZXNzLCB1aW4KICAgICAsIG1fY3B1TGltaXQobV9jb25maWd1cmF0aW9u
LT5jcHVMaW1pdCgpKQogICAgICwgbV9iYWNrRm9yd2FyZExpc3QoV2ViQmFja0ZvcndhcmRMaXN0
OjpjcmVhdGUoKnRoaXMpKQogICAgICwgbV93YWl0c0ZvclBhaW50QWZ0ZXJWaWV3RGlkTW92ZVRv
V2luZG93KG1fY29uZmlndXJhdGlvbi0+d2FpdHNGb3JQYWludEFmdGVyVmlld0RpZE1vdmVUb1dp
bmRvdygpKQotICAgICwgbV9kcmF3c0JhY2tncm91bmQobV9jb25maWd1cmF0aW9uLT5kcmF3c0Jh
Y2tncm91bmQoKSkKICAgICAsIG1fcGFnZUlEKHBhZ2VJRCkKICAgICAsIG1fY29udHJvbGxlZEJ5
QXV0b21hdGlvbihtX2NvbmZpZ3VyYXRpb24tPmlzQ29udHJvbGxlZEJ5QXV0b21hdGlvbigpKQog
I2lmIFBMQVRGT1JNKENPQ09BKQpAQCAtNDQzLDYgKzQ0Miw5IEBAIFdlYlBhZ2VQcm94eTo6V2Vi
UGFnZVByb3h5KFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2Vz
cywgdWluCiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiY29uc3RydWN0
b3I6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lk
ZW50aWZpZXIoKSwgbV9wYWdlSUQpOwogCisgICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24tPmRyYXdz
QmFja2dyb3VuZCgpKQorICAgICAgICBtX2JhY2tncm91bmRDb2xvciA9IENvbG9yKENvbG9yOjp0
cmFuc3BhcmVudCk7CisKICAgICBtX3dlYlByb2Nlc3NMaWZldGltZVRyYWNrZXIuYWRkT2JzZXJ2
ZXIobV92aXNpdGVkTGlua1N0b3JlKTsKICAgICBtX3dlYlByb2Nlc3NMaWZldGltZVRyYWNrZXIu
YWRkT2JzZXJ2ZXIobV93ZWJzaXRlRGF0YVN0b3JlKTsKIApAQCAtMTUzMSwxMyArMTUzMywyMCBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6Y3JlYXRlSW5zcGVjdG9yVGFyZ2V0cygpCiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjpzZXREcmF3c0JhY2tncm91bmQoYm9vbCBkcmF3c0JhY2tncm91bmQpCiB7Ci0g
ICAgaWYgKG1fZHJhd3NCYWNrZ3JvdW5kID09IGRyYXdzQmFja2dyb3VuZCkKLSAgICAgICAgcmV0
dXJuOworICAgIE9wdGlvbmFsPFdlYkNvcmU6OkNvbG9yPiBiYWNrZ3JvdW5kQ29sb3I7CisgICAg
aWYgKCFkcmF3c0JhY2tncm91bmQpCisgICAgICAgIGJhY2tncm91bmRDb2xvciA9IENvbG9yKENv
bG9yOjp0cmFuc3BhcmVudCk7CisgICAgc2V0QmFja2dyb3VuZENvbG9yKGJhY2tncm91bmRDb2xv
cik7Cit9CiAKLSAgICBtX2RyYXdzQmFja2dyb3VuZCA9IGRyYXdzQmFja2dyb3VuZDsKK3ZvaWQg
V2ViUGFnZVByb3h5OjpzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6
Q29sb3I+JiBjb2xvcikKK3sKKyAgICBpZiAobV9iYWNrZ3JvdW5kQ29sb3IgPT0gY29sb3IpCisg
ICAgICAgIHJldHVybjsKIAorICAgIG1fYmFja2dyb3VuZENvbG9yID0gY29sb3I7CiAgICAgaWYg
KGlzVmFsaWQoKSkKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpT
ZXREcmF3c0JhY2tncm91bmQoZHJhd3NCYWNrZ3JvdW5kKSwgbV9wYWdlSUQpOworICAgICAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEJhY2tncm91bmRDb2xvcihjb2xv
ciksIG1fcGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldFRvcENvbnRlbnRJbnNl
dChmbG9hdCBjb250ZW50SW5zZXQpCkBAIC02NzE5LDcgKzY3MjgsNiBAQCBXZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzIFdlYlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJhbWV0ZXJzKFdlYlByb2Nlc3NQ
cm94eSYgcHJvYwogICAgIHBhcmFtZXRlcnMuZHJhd2luZ0FyZWFUeXBlID0gbV9kcmF3aW5nQXJl
YS0+dHlwZSgpOwogICAgIHBhcmFtZXRlcnMuc3RvcmUgPSBwcmVmZXJlbmNlc1N0b3JlKCk7CiAg
ICAgcGFyYW1ldGVycy5wYWdlR3JvdXBEYXRhID0gbV9wYWdlR3JvdXAtPmRhdGEoKTsKLSAgICBw
YXJhbWV0ZXJzLmRyYXdzQmFja2dyb3VuZCA9IG1fZHJhd3NCYWNrZ3JvdW5kOwogICAgIHBhcmFt
ZXRlcnMuaXNFZGl0YWJsZSA9IG1faXNFZGl0YWJsZTsKICAgICBwYXJhbWV0ZXJzLnVuZGVybGF5
Q29sb3IgPSBtX3VuZGVybGF5Q29sb3I7CiAgICAgcGFyYW1ldGVycy51c2VGaXhlZExheW91dCA9
IG1fdXNlRml4ZWRMYXlvdXQ7CkBAIC02ODE3LDYgKzY4MjUsNyBAQCBXZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzIFdlYlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJhbWV0ZXJzKFdlYlByb2Nlc3NQcm94
eSYgcHJvYwogI2VuZGlmCiAKICAgICBwYXJhbWV0ZXJzLm5lZWRzRm9udEF0dHJpYnV0ZXMgPSBt
X25lZWRzRm9udEF0dHJpYnV0ZXM7CisgICAgcGFyYW1ldGVycy5iYWNrZ3JvdW5kQ29sb3IgPSBt
X2JhY2tncm91bmRDb2xvcjsKIAogICAgIHByb2Nlc3MuYWRkV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHkobV91c2VyQ29udGVudENvbnRyb2xsZXIsIHBhcmFtZXRlcnMpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDIyODZiMzVjOWZiLi40MWM2NWYxZDU3
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTUxMiw3ICs1MTIs
NyBAQCBwdWJsaWM6CiAKICAgICBib29sIGNhblNob3dNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1p
bWVUeXBlKTsKIAotICAgIGJvb2wgZHJhd3NCYWNrZ3JvdW5kKCkgY29uc3QgeyByZXR1cm4gbV9k
cmF3c0JhY2tncm91bmQ7IH0KKyAgICBib29sIGRyYXdzQmFja2dyb3VuZCgpIGNvbnN0IHsgcmV0
dXJuICFtX2JhY2tncm91bmRDb2xvciB8fCBtX2JhY2tncm91bmRDb2xvci52YWx1ZSgpLmlzVmlz
aWJsZSgpOyB9CiAgICAgdm9pZCBzZXREcmF3c0JhY2tncm91bmQoYm9vbCk7CiAKICAgICBTdHJp
bmcgY3VycmVudFVSTCgpIGNvbnN0OwpAQCAtNzU1LDEwICs3NTUsMTEgQEAgcHVibGljOgogCiAj
aWYgUExBVEZPUk0oR1RLKQogICAgIFBsYXRmb3JtV2lkZ2V0IHZpZXdXaWRnZXQoKTsKLSAgICBj
b25zdCBXZWJDb3JlOjpDb2xvciYgYmFja2dyb3VuZENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9i
YWNrZ3JvdW5kQ29sb3I7IH0KLSAgICB2b2lkIHNldEJhY2tncm91bmRDb2xvcihjb25zdCBXZWJD
b3JlOjpDb2xvciYgY29sb3IpIHsgbV9iYWNrZ3JvdW5kQ29sb3IgPSBjb2xvcjsgfQogI2VuZGlm
CiAKKyAgICBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpDb2xvcj4mIGJhY2tncm91bmRDb2xvcigp
IGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZENvbG9yOyB9CisgICAgdm9pZCBzZXRCYWNrZ3Jv
dW5kQ29sb3IoY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6Q29sb3I+Jik7CisKICNpZiBQTEFURk9S
TShXSU4pCiAgICAgUGxhdGZvcm1XaWRnZXQgdmlld1dpZGdldCgpOwogI2VuZGlmCkBAIC0yMDgx
LDggKzIwODIsNiBAQCBwcml2YXRlOgogCiAgICAgTGF5ZXJIb3N0aW5nTW9kZSBtX2xheWVySG9z
dGluZ01vZGUgeyBMYXllckhvc3RpbmdNb2RlOjpJblByb2Nlc3MgfTsKIAotICAgIGJvb2wgbV9k
cmF3c0JhY2tncm91bmQgeyB0cnVlIH07Ci0KICAgICBXZWJDb3JlOjpDb2xvciBtX3VuZGVybGF5
Q29sb3I7CiAgICAgV2ViQ29yZTo6Q29sb3IgbV9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3I7
CiAKQEAgLTIxODEsOSArMjE4MCwxMCBAQCBwcml2YXRlOgogCiAjaWYgUExBVEZPUk0oR1RLKQog
ICAgIFN0cmluZyBtX2FjY2Vzc2liaWxpdHlQbHVnSUQ7Ci0gICAgV2ViQ29yZTo6Q29sb3IgbV9i
YWNrZ3JvdW5kQ29sb3IgeyBXZWJDb3JlOjpDb2xvcjo6d2hpdGUgfTsKICNlbmRpZgogCisgICAg
T3B0aW9uYWw8V2ViQ29yZTo6Q29sb3I+IG1fYmFja2dyb3VuZENvbG9yOworCiAgICAgdW5zaWdu
ZWQgbV9wZW5kaW5nTGVhcm5Pcklnbm9yZVdvcmRNZXNzYWdlQ291bnQgeyAwIH07CiAKICAgICBi
b29sIG1fbWFpbkZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyIHsgZmFsc2UgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2NhaXJvL0JhY2tpbmdTdG9yZUNhaXJvLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2NhaXJvL0JhY2tpbmdTdG9yZUNhaXJvLmNwcApp
bmRleCBlMTExYzJiMzk4Ni4uMTgyOTRkMzdmZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2NhaXJvL0JhY2tpbmdTdG9yZUNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9jYWlyby9CYWNraW5nU3RvcmVDYWlyby5jcHAKQEAgLTM3LDEwICszNyw2IEBA
CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWZQdHJDYWlyby5oPgogI2luY2x1ZGUgPGNhaXJvLmg+CiAK
LSNpZiBQTEFURk9STShHVEspCi0jaW5jbHVkZSA8Z3RrL2d0ay5oPgotI2VuZGlmCi0KICNpZiBQ
TEFURk9STShHVEspICYmIFBMQVRGT1JNKFgxMSkgJiYgZGVmaW5lZChHREtfV0lORE9XSU5HX1gx
MSkKICNpbmNsdWRlIDxXZWJDb3JlL0JhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb1gxMS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1EaXNwbGF5WDExLmg+CkBAIC05NywyNCArOTMsNiBAQCB2
b2lkIEJhY2tpbmdTdG9yZTo6aW5jb3Jwb3JhdGVVcGRhdGUoU2hhcmVhYmxlQml0bWFwKiBiaXRt
YXAsIGNvbnN0IFVwZGF0ZUluZm8mCiAgICAgZm9yIChjb25zdCBhdXRvJiB1cGRhdGVSZWN0IDog
dXBkYXRlSW5mby51cGRhdGVSZWN0cykgewogICAgICAgICBJbnRSZWN0IHNyY1JlY3QgPSB1cGRh
dGVSZWN0OwogICAgICAgICBzcmNSZWN0Lm1vdmUoLXVwZGF0ZVJlY3RMb2NhdGlvbi54KCksIC11
cGRhdGVSZWN0TG9jYXRpb24ueSgpKTsKLSNpZiBQTEFURk9STShHVEspCi0gICAgICAgIGlmICgh
bV93ZWJQYWdlUHJveHkuZHJhd3NCYWNrZ3JvdW5kKCkpIHsKLSAgICAgICAgICAgIGNvbnN0IFdl
YkNvcmU6OkNvbG9yIGNvbG9yID0gbV93ZWJQYWdlUHJveHkuYmFja2dyb3VuZENvbG9yKCk7Ci0g
ICAgICAgICAgICBpZiAoY29sb3IuaXNWaXNpYmxlKCkpIHsKLSAgICAgICAgICAgICAgICAvLyBX
aGVuIHRoZSBhcHBsaWNhdGlvbiBzZXRzIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIHRocm91Z2ggbV93
ZWJQYWdlUHJveHkuYmFja2dyb3VuZENvbG9yKCksIHdlIHVwZGF0ZSB0aGUgc3VyZmFjZSBpbiAy
IHN0ZXBzLgotICAgICAgICAgICAgICAgIC8vICAgMS4gRmlsbCB0aGUgc3VyZmFjZSBieSBtX3dl
YlBhZ2VQcm94eS5iYWNrZ3JvdW5kQ29sb3IoKS4KLSAgICAgICAgICAgICAgICAvLyAgIDIuIENv
bXBvc2l0ZSB3ZWJwYWdlJ3MgYml0bWFwIHdoaWNoIGhhcyBhIHRyYW5zcGFyZW50IGJhY2tncm91
bmQuCi0gICAgICAgICAgICAgICAgLy8gSW4gc3RlcCAxLCB3ZSB1c2UgQ29tcG9zaXRlQ29weSBh
cyBtX3dlYlBhZ2VQcm94eS5iYWNrZ3JvdW5kQ29sb3IoKSBtYXkgbm90IGJlIG9wYXF1ZS4KLSAg
ICAgICAgICAgICAgICAvLyBPbiB0aGUgb3RoZXIgaGFuZCwgaW4gc3RlcCAyLCBiaXRtYXAgc2hv
dWxkIGJlIGNvbXBvc2l0ZWQgYnkgQ29tcG9zaXRlU291cmNlT3ZlcgotICAgICAgICAgICAgICAg
IC8vIGJlY2F1c2UgaXQgc2hvdWxkIGJlIGJsZW5kZWQgd2l0aCBtX3dlYlBhZ2VQcm94eS5iYWNr
Z3JvdW5kQ29sb3IoKS4KLSAgICAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuZmlsbFJlY3Qo
c3JjUmVjdCwgY29sb3IpOwotICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRDb21w
b3NpdGVPcGVyYXRpb24oV2ViQ29yZTo6Q29tcG9zaXRlU291cmNlT3Zlcik7Ci0gICAgICAgICAg
ICAgICAgYml0bWFwLT5wYWludChncmFwaGljc0NvbnRleHQsIGRldmljZVNjYWxlRmFjdG9yKCks
IHVwZGF0ZVJlY3QubG9jYXRpb24oKSwgc3JjUmVjdCk7Ci0gICAgICAgICAgICAgICAgZ3JhcGhp
Y3NDb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihXZWJDb3JlOjpDb21wb3NpdGVDb3B5KTsK
LSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotI2Vu
ZGlmCiAgICAgICAgIGJpdG1hcC0+cGFpbnQoZ3JhcGhpY3NDb250ZXh0LCBkZXZpY2VTY2FsZUZh
Y3RvcigpLCB1cGRhdGVSZWN0LmxvY2F0aW9uKCksIHNyY1JlY3QpOwogICAgIH0KIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9y
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3Rv
cmUuY3BwCmluZGV4IGVjZjM0NWY4MGY4Li5lYjYyZDZkNjU0ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUuY3BwCkBA
IC01OSwyNiArNTksNCBAQCBBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZTo6QWNjZWxlcmF0ZWRCYWNr
aW5nU3RvcmUoV2ViUGFnZVByb3h5JiB3ZWJQYWdlKQogewogfQogCi1ib29sIEFjY2VsZXJhdGVk
QmFja2luZ1N0b3JlOjpwYWludChjYWlyb190KiBjciwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3Qp
Ci17Ci0gICAgaWYgKG1fd2ViUGFnZS5kcmF3c0JhY2tncm91bmQoKSkKLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0KLSAgICBjb25zdCBXZWJDb3JlOjpDb2xvciYgY29sb3IgPSBtX3dlYlBhZ2UuYmFj
a2dyb3VuZENvbG9yKCk7Ci0gICAgaWYgKCFjb2xvci5pc09wYXF1ZSgpKSB7Ci0gICAgICAgIGNh
aXJvX3JlY3RhbmdsZShjciwgY2xpcFJlY3QueCgpLCBjbGlwUmVjdC55KCksIGNsaXBSZWN0Lndp
ZHRoKCksIGNsaXBSZWN0LmhlaWdodCgpKTsKLSAgICAgICAgY2Fpcm9fc2V0X29wZXJhdG9yKGNy
LCBDQUlST19PUEVSQVRPUl9DTEVBUik7Ci0gICAgICAgIGNhaXJvX2ZpbGwoY3IpOwotICAgIH0K
LQotICAgIGlmIChjb2xvci5pc1Zpc2libGUoKSkgewotICAgICAgICBzZXRTb3VyY2VSR0JBRnJv
bUNvbG9yKGNyLCBjb2xvcik7Ci0gICAgICAgIGNhaXJvX3NldF9vcGVyYXRvcihjciwgQ0FJUk9f
T1BFUkFUT1JfU09VUkNFKTsKLSAgICAgICAgY2Fpcm9fcmVjdGFuZ2xlKGNyLCBjbGlwUmVjdC54
KCksIGNsaXBSZWN0LnkoKSwgY2xpcFJlY3Qud2lkdGgoKSwgY2xpcFJlY3QuaGVpZ2h0KCkpOwot
ICAgICAgICBjYWlyb19maWxsKGNyKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZS5oCmluZGV4IDNkZTNiNWRmYWY0Li5jOGJhM2Zm
Nzg4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVk
QmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJh
dGVkQmFja2luZ1N0b3JlLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
fkFjY2VsZXJhdGVkQmFja2luZ1N0b3JlKCkgPSBkZWZhdWx0OwogCiAgICAgdmlydHVhbCB2b2lk
IHVwZGF0ZShjb25zdCBMYXllclRyZWVDb250ZXh0JikgeyB9Ci0gICAgdmlydHVhbCBib29sIHBh
aW50KGNhaXJvX3QqLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CisgICAgdmlydHVhbCBib29s
IHBhaW50KGNhaXJvX3QqLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikgPSAwOwogCiBwcm90ZWN0
ZWQ6CiAgICAgQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUoV2ViUGFnZVByb3h5Jik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVX
YXlsYW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tp
bmdTdG9yZVdheWxhbmQuY3BwCmluZGV4IDIxNjM2MmNiMjNmLi5hNzdkYTNhZmU5NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3Jl
V2F5bGFuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVk
QmFja2luZ1N0b3JlV2F5bGFuZC5jcHAKQEAgLTkzLDcgKzkzLDYgQEAgYm9vbCBBY2NlbGVyYXRl
ZEJhY2tpbmdTdG9yZVdheWxhbmQ6OnBhaW50KGNhaXJvX3QqIGNyLCBjb25zdCBJbnRSZWN0JiBj
bGlwUmVjdCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgY2Fpcm9fc2F2ZShjcik7Ci0g
ICAgQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmU6OnBhaW50KGNyLCBjbGlwUmVjdCk7CiAKICNpZiBH
VEtfQ0hFQ0tfVkVSU0lPTigzLCAxNiwgMCkKICAgICBpZiAoY2FuR2RrVXNlR0woKSkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0
b3JlWDExLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tp
bmdTdG9yZVgxMS5jcHAKaW5kZXggMjdkNzJjMWM0N2UuLjgyY2U4YzZiNjVkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTEu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdT
dG9yZVgxMS5jcHAKQEAgLTE4Niw3ICsxODYsNiBAQCBib29sIEFjY2VsZXJhdGVkQmFja2luZ1N0
b3JlWDExOjpwYWludChjYWlyb190KiBjciwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIGNhaXJvX3NhdmUoY3IpOwotICAgIEFjY2VsZXJhdGVk
QmFja2luZ1N0b3JlOjpwYWludChjciwgY2xpcFJlY3QpOwogCiAgICAgLy8gVGhlIHN1cmZhY2Ug
Y2FuIGJlIG1vZGlmaWVkIGJ5IHRoZSB3ZWIgcHJvY2VzcyBhdCBhbnkgdGltZSwgc28gd2UgbWFy
ayBpdAogICAgIC8vIGFzIGRpcnR5IHRvIGVuc3VyZSB3ZSBhbHdheXMgcmVuZGVyIHRoZSB1cGRh
dGVkIGNvbnRlbnRzIGFzIHNvb24gYXMgcG9zc2libGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcAppbmRleCBhYWNiNWI5Y2U2MS4uZTEzZDU4NDI5NjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcApAQCAtMTM5Myw3ICsxMzkzLDYgQEAgdm9pZCBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6dHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFnZSgpCiAgICAgV2ViUGFnZSog
d2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKIAogICAgIGJvb2wgaXNNYWluRnJhbWUgPSBtX2Zy
YW1lLT5pc01haW5GcmFtZSgpOwotICAgIGJvb2wgaXNUcmFuc3BhcmVudCA9ICF3ZWJQYWdlLT5k
cmF3c0JhY2tncm91bmQoKTsKICAgICBib29sIHNob3VsZFVzZUZpeGVkTGF5b3V0ID0gaXNNYWlu
RnJhbWUgJiYgd2ViUGFnZS0+dXNlRml4ZWRMYXlvdXQoKTsKICAgICBib29sIHNob3VsZERpc2Fi
bGVTY3JvbGxpbmcgPSBpc01haW5GcmFtZSAmJiAhd2ViUGFnZS0+bWFpbkZyYW1lSXNTY3JvbGxh
YmxlKCk7CiAgICAgYm9vbCBzaG91bGRIaWRlU2Nyb2xsYmFycyA9IHNob3VsZERpc2FibGVTY3Jv
bGxpbmc7CkBAIC0xNDE4LDcgKzE0MTcsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp0
cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKCkKICAgICBib29sIGhvcml6b250YWxMb2Nr
ID0gc2hvdWxkSGlkZVNjcm9sbGJhcnMgfHwgd2ViUGFnZS0+YWx3YXlzU2hvd3NIb3Jpem9udGFs
U2Nyb2xsZXIoKTsKICAgICBib29sIHZlcnRpY2FsTG9jayA9IHNob3VsZEhpZGVTY3JvbGxiYXJz
IHx8IHdlYlBhZ2UtPmFsd2F5c1Nob3dzVmVydGljYWxTY3JvbGxlcigpOwogCi0gICAgbV9mcmFt
ZS0+Y29yZUZyYW1lKCktPmNyZWF0ZVZpZXcod2ViUGFnZS0+c2l6ZSgpLCBpc1RyYW5zcGFyZW50
LAorICAgIG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5jcmVhdGVWaWV3KHdlYlBhZ2UtPnNpemUoKSwg
d2ViUGFnZS0+YmFja2dyb3VuZENvbG9yKCksCiAgICAgICAgIHdlYlBhZ2UtPmZpeGVkTGF5b3V0
U2l6ZSgpLCBmaXhlZFZpc2libGVDb250ZW50UmVjdCwgc2hvdWxkVXNlRml4ZWRMYXlvdXQsCiAg
ICAgICAgIGhvcml6b250YWxTY3JvbGxiYXJNb2RlLCBob3Jpem9udGFsTG9jaywgdmVydGljYWxT
Y3JvbGxiYXJNb2RlLCB2ZXJ0aWNhbExvY2spOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZERyYXdpbmdBcmVhLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEuY3BwCmluZGV4
IDk5MjA0NjViMTczLi5mMjQ4Nzc2OWM5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3aW5nQXJlYS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3aW5nQXJlYS5jcHAKQEAgLTkz
LDE0ICs5Myw2IEBAIHZvaWQgQWNjZWxlcmF0ZWREcmF3aW5nQXJlYTo6c2Nyb2xsKGNvbnN0IElu
dFJlY3QmIHNjcm9sbFJlY3QsIGNvbnN0IEludFNpemUmIHNjCiAgICAgICAgIG1fbGF5ZXJUcmVl
SG9zdC0+c2Nyb2xsTm9uQ29tcG9zaXRlZENvbnRlbnRzKHNjcm9sbFJlY3QpOwogfQogCi12b2lk
IEFjY2VsZXJhdGVkRHJhd2luZ0FyZWE6OnBhZ2VCYWNrZ3JvdW5kVHJhbnNwYXJlbmN5Q2hhbmdl
ZCgpCi17Ci0gICAgaWYgKG1fbGF5ZXJUcmVlSG9zdCkKLSAgICAgICAgbV9sYXllclRyZWVIb3N0
LT5wYWdlQmFja2dyb3VuZFRyYW5zcGFyZW5jeUNoYW5nZWQoKTsKLSAgICBlbHNlIGlmIChtX3By
ZXZpb3VzTGF5ZXJUcmVlSG9zdCkKLSAgICAgICAgbV9wcmV2aW91c0xheWVyVHJlZUhvc3QtPnBh
Z2VCYWNrZ3JvdW5kVHJhbnNwYXJlbmN5Q2hhbmdlZCgpOwotfQotCiB2b2lkIEFjY2VsZXJhdGVk
RHJhd2luZ0FyZWE6OnNldExheWVyVHJlZVN0YXRlSXNGcm96ZW4oYm9vbCBpc0Zyb3plbikKIHsK
ICAgICBpZiAobV9sYXllclRyZWVTdGF0ZUlzRnJvemVuID09IGlzRnJvemVuKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3aW5nQXJl
YS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3aW5n
QXJlYS5oCmluZGV4IDcwYWJlNDM1OTI1Li5hMGRmNTY4ZjlhYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3aW5nQXJlYS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEu
aApAQCAtNDMsNyArNDMsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBzZXROZWVkc0Rpc3BsYXko
KSBvdmVycmlkZTsKICAgICB2b2lkIHNldE5lZWRzRGlzcGxheUluUmVjdChjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzY3JvbGwoY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYgc2Nyb2xsUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2Nyb2xsRGVsdGEpIG92
ZXJyaWRlOwotICAgIHZvaWQgcGFnZUJhY2tncm91bmRUcmFuc3BhcmVuY3lDaGFuZ2VkKCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBzZXRMYXllclRyZWVTdGF0ZUlzRnJvemVuKGJvb2wpIG92ZXJyaWRl
OwogICAgIGJvb2wgbGF5ZXJUcmVlU3RhdGVJc0Zyb3plbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1fbGF5ZXJUcmVlU3RhdGVJc0Zyb3plbjsgfQogICAgIExheWVyVHJlZUhvc3QqIGxheWVy
VHJlZUhvc3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2xheWVyVHJlZUhvc3QuZ2V0KCk7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0LmNwcAppbmRleCAxNTIwZjUyMGRhYy4uOTNiN2EyZGRlNzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKQEAg
LTIyNCwxMCArMjI0LDYgQEAgdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmRldmljZU9y
UGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCgpCiAgICAgbV93ZWJQYWdlLmNvcmVQYWdlKCktPnBhZ2VP
dmVybGF5Q29udHJvbGxlcigpLmRpZENoYW5nZURldmljZVNjYWxlRmFjdG9yKCk7CiB9CiAKLXZv
aWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpwYWdlQmFja2dyb3VuZFRyYW5zcGFyZW5jeUNo
YW5nZWQoKQotewotfQotCiBHcmFwaGljc0xheWVyRmFjdG9yeSogQ29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0OjpncmFwaGljc0xheWVyRmFjdG9yeSgpCiB7CiAgICAgcmV0dXJuICZtX2Nvb3JkaW5h
dG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRp
bmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0LmgKaW5kZXggMGE4YmVjOGEzOTguLmVhOTc0NTMxNTRjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKQEAgLTU1LDcg
KzU1LDYgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgc2l6ZURpZENoYW5nZShjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJiBuZXdTaXplKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZGV2aWNlT3JQYWdlU2Nh
bGVGYWN0b3JDaGFuZ2VkKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBwYWdlQmFja2dyb3VuZFRyYW5z
cGFyZW5jeUNoYW5nZWQoKSBvdmVycmlkZTsKIAogICAgIHZvaWQgc2V0VmlzaWJsZUNvbnRlbnRz
UmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKTsKICAgICB2b2lkIHJlbmRlck5leHRGcmFt
ZShib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9UaHJl
YWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggODIzYjdmYTJhYzcuLjEwMGZj
NjRhNjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29y
ZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1Ro
cmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcApAQCAtMTg0LDE3ICsxODQsNiBAQCB2
b2lkIFRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpkZXZpY2VPclBhZ2VTY2FsZUZh
Y3RvckNoYW5nZWQoKQogICAgIG1fY29tcG9zaXRvci0+c2V0U2NhbGVGYWN0b3IobV93ZWJQYWdl
LmRldmljZVNjYWxlRmFjdG9yKCkgKiBtX3ZpZXdwb3J0Q29udHJvbGxlci5wYWdlU2NhbGVGYWN0
b3IoKSk7CiB9CiAKLXZvaWQgVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnBhZ2VC
YWNrZ3JvdW5kVHJhbnNwYXJlbmN5Q2hhbmdlZCgpCi17Ci0gICAgaWYgKG1faXNEaXNjYXJkYWJs
ZSkgewotICAgICAgICBtX2Rpc2NhcmRhYmxlU3luY0FjdGlvbnMuYWRkKERpc2NhcmRhYmxlU3lu
Y0FjdGlvbnM6OlVwZGF0ZUJhY2tncm91bmQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpwYWdlQmFja2dyb3VuZFRyYW5zcGFyZW5jeUNo
YW5nZWQoKTsKLSAgICBtX2NvbXBvc2l0b3ItPnNldERyYXdzQmFja2dyb3VuZChtX3dlYlBhZ2Uu
ZHJhd3NCYWNrZ3JvdW5kKCkpOwotfQotCiB2b2lkIFRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0OjpzaXplRGlkQ2hhbmdlKGNvbnN0IEludFNpemUmIHNpemUpCiB7CiAgICAgaWYgKG1f
aXNEaXNjYXJkYWJsZSkgewpAQCAtMjg2LDkgKzI3NSw2IEBAIHZvaWQgVGhyZWFkZWRDb29yZGlu
YXRlZExheWVyVHJlZUhvc3Q6OnNldElzRGlzY2FyZGFibGUoYm9vbCBkaXNjYXJkYWJsZSkKICAg
ICBpZiAobV9kaXNjYXJkYWJsZVN5bmNBY3Rpb25zLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgaWYgKG1fZGlzY2FyZGFibGVTeW5jQWN0aW9ucy5jb250YWlucyhEaXNjYXJkYWJs
ZVN5bmNBY3Rpb25zOjpVcGRhdGVCYWNrZ3JvdW5kKSkKLSAgICAgICAgcGFnZUJhY2tncm91bmRU
cmFuc3BhcmVuY3lDaGFuZ2VkKCk7Ci0KICAgICBpZiAobV9kaXNjYXJkYWJsZVN5bmNBY3Rpb25z
LmNvbnRhaW5zKERpc2NhcmRhYmxlU3luY0FjdGlvbnM6OlVwZGF0ZVNpemUpKSB7CiAgICAgICAg
IC8vIFNpemUgY2hhbmdlcyBhbHJlYWR5IHNldHMgdGhlIHNjYWxlIGZhY3RvciBhbmQgdXBkYXRl
cyB0aGUgdmlld3BvcnQuCiAgICAgICAgIHNpemVEaWRDaGFuZ2UobV93ZWJQYWdlLnNpemUoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRl
ZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0LmgKaW5kZXggYjc4NDY4MTY3OWIuLjIyODc2MTYyZTY5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdC5oCkBAIC01Nyw3ICs1Nyw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBz
Y3JvbGxOb25Db21wb3NpdGVkQ29udGVudHMoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc2Nyb2xs
UmVjdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzaXplRGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6Oklu
dFNpemUmKSBvdmVycmlkZTsKICAgICB2b2lkIGRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdl
ZCgpIG92ZXJyaWRlOwotICAgIHZvaWQgcGFnZUJhY2tncm91bmRUcmFuc3BhcmVuY3lDaGFuZ2Vk
KCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGNvbnRlbnRzU2l6ZUNoYW5nZWQoY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkQ2hhbmdlVmlld3BvcnRBdHRyaWJ1
dGVzKFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyYmKSBvdmVycmlkZTsKQEAgLTE0Myw4ICsx
NDIsNyBAQCBwcml2YXRlOgogICAgIGVudW0gY2xhc3MgRGlzY2FyZGFibGVTeW5jQWN0aW9ucyB7
CiAgICAgICAgIFVwZGF0ZVNpemUgPSAxIDw8IDEsCiAgICAgICAgIFVwZGF0ZVZpZXdwb3J0ID0g
MSA8PCAyLAotICAgICAgICBVcGRhdGVTY2FsZSA9IDEgPDwgMywKLSAgICAgICAgVXBkYXRlQmFj
a2dyb3VuZCA9IDEgPDwgNAorICAgICAgICBVcGRhdGVTY2FsZSA9IDEgPDwgMwogICAgIH07CiAK
ICAgICBDb21wb3NpdG9yQ2xpZW50IG1fY29tcG9zaXRvckNsaWVudDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCmluZGV4IGY5Yzg5MTc0YTRhLi41
Nzg0YTRmMTc5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
RHJhd2luZ0FyZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3
aW5nQXJlYS5oCkBAIC03OSw3ICs3OSw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2Ny
b2xsKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNjcm9sbFJlY3QsIGNvbnN0IFdlYkNvcmU6Oklu
dFNpemUmIHNjcm9sbERlbHRhKSA9IDA7CiAKICAgICAvLyBGSVhNRTogVGhlc2Ugc2hvdWxkIGJl
IHB1cmUgdmlydHVhbC4KLSAgICB2aXJ0dWFsIHZvaWQgcGFnZUJhY2tncm91bmRUcmFuc3BhcmVu
Y3lDaGFuZ2VkKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGZvcmNlUmVwYWludCgpIHsgfQogICAg
IHZpcnR1YWwgYm9vbCBmb3JjZVJlcGFpbnRBc3luYyhDYWxsYmFja0lEKSB7IHJldHVybiBmYWxz
ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRMYXllclRyZWVTdGF0ZUlzRnJvemVuKGJvb2wpIHsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0Fy
ZWFJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVh
SW1wbC5jcHAKaW5kZXggNmE4NmIwMDJiODYuLjA4OWFjMjBiZjg3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5jcHAKQEAgLTQx
MCw4ICs0MTAsNyBAQCB2b2lkIERyYXdpbmdBcmVhSW1wbDo6ZGlzcGxheShVcGRhdGVJbmZvJiB1
cGRhdGVJbmZvKQogICAgIHVwZGF0ZUluZm8udmlld1NpemUgPSBtX3dlYlBhZ2Uuc2l6ZSgpOwog
ICAgIHVwZGF0ZUluZm8uZGV2aWNlU2NhbGVGYWN0b3IgPSBtX3dlYlBhZ2UuY29yZVBhZ2UoKS0+
ZGV2aWNlU2NhbGVGYWN0b3IoKTsKIAotICAgIC8vIEFsd2F5cyByZW5kZXIgdGhlIHdob2xlIHBh
Z2Ugd2hlbiB3ZSBkb24ndCByZW5kZXIgdGhlIGJhY2tncm91bmQuCi0gICAgSW50UmVjdCBib3Vu
ZHMgPSBtX3dlYlBhZ2UuZHJhd3NCYWNrZ3JvdW5kKCkgPyBtX2RpcnR5UmVnaW9uLmJvdW5kcygp
IDogbV93ZWJQYWdlLmJvdW5kcygpOworICAgIEludFJlY3QgYm91bmRzID0gbV9kaXJ0eVJlZ2lv
bi5ib3VuZHMoKTsKICAgICBBU1NFUlQobV93ZWJQYWdlLmJvdW5kcygpLmNvbnRhaW5zKGJvdW5k
cykpOwogCiAgICAgSW50U2l6ZSBiaXRtYXBTaXplID0gYm91bmRzLnNpemUoKTsKQEAgLTQyNCwx
NiArNDIzLDExIEBAIHZvaWQgRHJhd2luZ0FyZWFJbXBsOjpkaXNwbGF5KFVwZGF0ZUluZm8mIHVw
ZGF0ZUluZm8pCiAgICAgaWYgKCFiaXRtYXAtPmNyZWF0ZUhhbmRsZSh1cGRhdGVJbmZvLmJpdG1h
cEhhbmRsZSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFZlY3RvcjxJbnRSZWN0PiByZWN0czsK
LSAgICBpZiAobV93ZWJQYWdlLmRyYXdzQmFja2dyb3VuZCgpKSB7Ci0gICAgICAgIHJlY3RzID0g
bV9kaXJ0eVJlZ2lvbi5yZWN0cygpOwotCi0gICAgICAgIGlmIChzaG91bGRQYWludEJvdW5kc1Jl
Y3QoYm91bmRzLCByZWN0cykpIHsKLSAgICAgICAgICAgIHJlY3RzLmNsZWFyKCk7Ci0gICAgICAg
ICAgICByZWN0cy5hcHBlbmQoYm91bmRzKTsKLSAgICAgICAgfQotICAgIH0gZWxzZQorICAgIFZl
Y3RvcjxJbnRSZWN0PiByZWN0cyA9IG1fZGlydHlSZWdpb24ucmVjdHMoKTsKKyAgICBpZiAoc2hv
dWxkUGFpbnRCb3VuZHNSZWN0KGJvdW5kcywgcmVjdHMpKSB7CisgICAgICAgIHJlY3RzLmNsZWFy
KCk7CiAgICAgICAgIHJlY3RzLmFwcGVuZChib3VuZHMpOworICAgIH0KIAogICAgIHVwZGF0ZUlu
Zm8uc2Nyb2xsUmVjdCA9IG1fc2Nyb2xsUmVjdDsKICAgICB1cGRhdGVJbmZvLnNjcm9sbE9mZnNl
dCA9IG1fc2Nyb2xsT2Zmc2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvTGF5ZXJUcmVlSG9zdC5oCmluZGV4IDg1ZGQ0NThlMDE4Li41M2MzOTgyOTllNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvTGF5ZXJUcmVlSG9zdC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJlZUhvc3QuaApAQCAt
NzQsNyArNzQsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGZvcmNlUmVwYWludCgpID0g
MDsKICAgICB2aXJ0dWFsIGJvb2wgZm9yY2VSZXBhaW50QXN5bmMoQ2FsbGJhY2tJRCkgeyByZXR1
cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2l6ZURpZENoYW5nZShjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJiBuZXdTaXplKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHBhZ2VCYWNrZ3JvdW5k
VHJhbnNwYXJlbmN5Q2hhbmdlZCgpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBwYXVzZVJlbmRl
cmluZygpOwogICAgIHZpcnR1YWwgdm9pZCByZXN1bWVSZW5kZXJpbmcoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggZGQ5N2Q2ZWIwN2EuLjBk
ZjdiN2U3YjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcApAQCAtNTE0LDggKzUxNCw2IEBAIFdlYlBhZ2U6OldlYlBhZ2UodWludDY0X3QgcGFnZUlE
LCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKIAogICAgIHNldFVzZUZp
eGVkTGF5b3V0KHBhcmFtZXRlcnMudXNlRml4ZWRMYXlvdXQpOwogCi0gICAgc2V0RHJhd3NCYWNr
Z3JvdW5kKHBhcmFtZXRlcnMuZHJhd3NCYWNrZ3JvdW5kKTsKLQogICAgIHNldFVuZGVybGF5Q29s
b3IocGFyYW1ldGVycy51bmRlcmxheUNvbG9yKTsKIAogICAgIHNldFBhZ2luYXRpb25Nb2RlKHBh
cmFtZXRlcnMucGFnaW5hdGlvbk1vZGUpOwpAQCAtNjM5LDYgKzYzNyw4IEBAIFdlYlBhZ2U6Oldl
YlBhZ2UodWludDY0X3QgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1l
dGVycykKICNpZiBVU0UoQVVESU9fU0VTU0lPTikKICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1h
bmFnZXI6OnNldFNob3VsZERlYWN0aXZhdGVBdWRpb1Nlc3Npb24odHJ1ZSk7CiAjZW5kaWYKKwor
ICAgIHNldEJhY2tncm91bmRDb2xvcihwYXJhbWV0ZXJzLmJhY2tncm91bmRDb2xvcik7CiB9CiAK
ICNpZiBFTkFCTEUoV0VCX1JUQykKQEAgLTI4NzcsMTkgKzI4NzcsMTYgQEAgdm9pZCBXZWJQYWdl
OjpzZXRJbmRpY2F0aW5nKGJvb2wgaW5kaWNhdGluZykKIH0KICNlbmRpZgogCi12b2lkIFdlYlBh
Z2U6OnNldERyYXdzQmFja2dyb3VuZChib29sIGRyYXdzQmFja2dyb3VuZCkKK3ZvaWQgV2ViUGFn
ZTo6c2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkNvbG9yPiYgYmFj
a2dyb3VuZENvbG9yKQogewotICAgIGlmIChtX2RyYXdzQmFja2dyb3VuZCA9PSBkcmF3c0JhY2tn
cm91bmQpCisgICAgaWYgKG1fYmFja2dyb3VuZENvbG9yID09IGJhY2tncm91bmRDb2xvcikKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgbV9kcmF3c0JhY2tncm91bmQgPSBkcmF3c0JhY2tncm91bmQ7
CisgICAgbV9iYWNrZ3JvdW5kQ29sb3IgPSBiYWNrZ3JvdW5kQ29sb3I7CiAKLSAgICBpZiAoRnJh
bWVWaWV3KiBmcmFtZVZpZXcgPSBtYWluRnJhbWVWaWV3KCkpIHsKLSAgICAgICAgYm9vbCBpc1Ry
YW5zcGFyZW50ID0gIWRyYXdzQmFja2dyb3VuZDsKLSAgICAgICAgZnJhbWVWaWV3LT51cGRhdGVC
YWNrZ3JvdW5kUmVjdXJzaXZlbHkoaXNUcmFuc3BhcmVudCk7Ci0gICAgfQorICAgIGlmIChGcmFt
ZVZpZXcqIGZyYW1lVmlldyA9IG1haW5GcmFtZVZpZXcoKSkKKyAgICAgICAgZnJhbWVWaWV3LT51
cGRhdGVCYWNrZ3JvdW5kUmVjdXJzaXZlbHkoYmFja2dyb3VuZENvbG9yKTsKIAotICAgIG1fZHJh
d2luZ0FyZWEtPnBhZ2VCYWNrZ3JvdW5kVHJhbnNwYXJlbmN5Q2hhbmdlZCgpOwogICAgIG1fZHJh
d2luZ0FyZWEtPnNldE5lZWRzRGlzcGxheSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggZjNiOTM0ZTI3ZGEuLmFmZTAxZTI3YjI3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC01MDAsOCArNTAw
LDYgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgcG9zdEluamVjdGVkQnVuZGxlTWVzc2FnZShj
b25zdCBTdHJpbmcmIG1lc3NhZ2VOYW1lLCBjb25zdCBVc2VyRGF0YSYpOwogCi0gICAgYm9vbCBk
cmF3c0JhY2tncm91bmQoKSBjb25zdCB7IHJldHVybiBtX2RyYXdzQmFja2dyb3VuZDsgfQotCiAg
ICAgdm9pZCBzZXRVbmRlcmxheUNvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvcikgeyBt
X3VuZGVybGF5Q29sb3IgPSBjb2xvcjsgfQogICAgIFdlYkNvcmU6OkNvbG9yIHVuZGVybGF5Q29s
b3IoKSBjb25zdCB7IHJldHVybiBtX3VuZGVybGF5Q29sb3I7IH0KIApAQCAtMTEzNyw2ICsxMTM1
LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBkaWRSZWNlaXZlV2ViUGFnZU1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CiAKKyAgICBjb25zdCBPcHRpb25hbDxXZWJDb3Jl
OjpDb2xvcj4mIGJhY2tncm91bmRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZENv
bG9yOyB9CisKIHByaXZhdGU6CiAgICAgV2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIFdlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMmJik7CiAKQEAgLTEyNjMsNyArMTI2Myw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBzZXRJbmRpY2F0aW5nKGJvb2wpOwogI2VuZGlmCiAKLSAgICB2b2lkIHNldERyYXdz
QmFja2dyb3VuZChib29sKTsKKyAgICB2b2lkIHNldEJhY2tncm91bmRDb2xvcihjb25zdCBPcHRp
b25hbDxXZWJDb3JlOjpDb2xvcj4mKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQg
c2V0VG9wQ29udGVudEluc2V0RmVuY2VkKGZsb2F0LCBJUEM6OkF0dGFjaG1lbnQpOwpAQCAtMTc0
NSw3ICsxNzQ1LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNTdXNwZW5kZWRVbmRlckxvY2sg
eyBmYWxzZSB9OwogCiAgICAgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFz
aD4gbV9taW1lVHlwZXNXaXRoQ3VzdG9tQ29udGVudFByb3ZpZGVyczsKLSAgICBXZWJDb3JlOjpD
b2xvciBtX2JhY2tncm91bmRDb2xvciB7IFdlYkNvcmU6OkNvbG9yOjp3aGl0ZSB9OworICAgIE9w
dGlvbmFsPFdlYkNvcmU6OkNvbG9yPiBtX2JhY2tncm91bmRDb2xvciB7IFdlYkNvcmU6OkNvbG9y
Ojp3aGl0ZSB9OwogCiAgICAgSGFzaFNldDx1bnNpZ25lZD4gbV9hY3RpdmVSZW5kZXJpbmdTdXBw
cmVzc2lvblRva2VuczsKICAgICB1bnNpZ25lZCBtX21heGltdW1SZW5kZXJpbmdTdXBwcmVzc2lv
blRva2VuIHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggNTRhYmJhZjg5MzQuLjg3YzQ1YTM1NDM4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW4KQEAgLTI1LDcgKzI1LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZl
ciB7CiAgICAgU2V0QWN0aXZpdHlTdGF0ZShPcHRpb25TZXQ8V2ViQ29yZTo6QWN0aXZpdHlTdGF0
ZTo6RmxhZz4gYWN0aXZpdHlTdGF0ZSwgV2ViS2l0OjpBY3Rpdml0eVN0YXRlQ2hhbmdlSUQgYWN0
aXZpdHlTdGF0ZUNoYW5nZUlELCBWZWN0b3I8V2ViS2l0OjpDYWxsYmFja0lEPiBjYWxsYmFja0lE
cykKICAgICBTZXRMYXllckhvc3RpbmdNb2RlKGVudW06dWludDhfdCBXZWJLaXQ6OkxheWVySG9z
dGluZ01vZGUgbGF5ZXJIb3N0aW5nTW9kZSkKIAotICAgIFNldERyYXdzQmFja2dyb3VuZChib29s
IGRyYXdzQmFja2dyb3VuZCkKKyAgICBTZXRCYWNrZ3JvdW5kQ29sb3IoT3B0aW9uYWw8V2ViQ29y
ZTo6Q29sb3I+IGNvbG9yKQogCiAgICAgQWRkQ29uc29sZU1lc3NhZ2UodWludDY0X3QgZnJhbWVJ
RCwgZW51bTp1aW50OF90IEpTQzo6TWVzc2FnZVNvdXJjZSBtZXNzYWdlU291cmNlLCBlbnVtOnVp
bnQ4X3QgSlNDOjpNZXNzYWdlTGV2ZWwgbWVzc2FnZUxldmVsLCBTdHJpbmcgbWVzc2FnZSwgdWlu
dDY0X3QgcmVxdWVzdElEKQogICAgIFNlbmRDU1BWaW9sYXRpb25SZXBvcnQodWludDY0X3QgZnJh
bWVJRCwgVVJMIHJlcG9ydFVSTCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSByZXBvcnREYXRhKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDNhY2I2N2Y1YzM2Li5lZDM2ZWQyMWFjOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE5LTAxLTE4
ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbV1BF
XSBBZGQgQVBJIGZvciB3ZWJ2aWV3IGJhY2tncm91bmQgY29sb3IgY29uZmlndXJhdGlvbgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyMzA1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNs
aWVudDo6dHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFnZSk6IENyZWF0ZQorICAgICAgICBG
cmFtZVZpZXcgd2l0aCBiYWNrZ3JvdW5kIGNvbG9yLgorCiAyMDE5LTAxLTE3ICBQZXIgQXJuZSBW
b2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2luXVtIaWdoRFBJXSBSZXBh
aW50IGdsaXRjaGVzIHdoZW4gc2Nyb2xsaW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
CmluZGV4IGVlODE5OGE4ODI3Li5kYTZhNTc2YjZiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcApAQCAtOTg0LDEwICs5ODQsMTIgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6
dHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFnZSgpCiAKICAgICBSRUNUIHBpeGVsUmVjdDsK
ICAgICB2aWV3LT5mcmFtZVJlY3QoJnBpeGVsUmVjdCk7Ci0gICAgYm9vbCB0cmFuc3BhcmVudCA9
IHZpZXctPnRyYW5zcGFyZW50KCk7CisgICAgT3B0aW9uYWw8Q29sb3I+IGJhY2tncm91bmRDb2xv
cjsKKyAgICBpZiAodmlldy0+dHJhbnNwYXJlbnQoKSkKKyAgICAgICAgYmFja2dyb3VuZENvbG9y
ID0gQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50KTsKICAgICBGbG9hdFJlY3QgbG9naWNhbEZyYW1l
KHBpeGVsUmVjdCk7CiAgICAgbG9naWNhbEZyYW1lLnNjYWxlKDEuMGYgLyB2aWV3LT5kZXZpY2VT
Y2FsZUZhY3RvcigpKTsKLSAgICBjb3JlKG1fd2ViRnJhbWUpLT5jcmVhdGVWaWV3KGVuY2xvc2lu
Z0ludFJlY3QobG9naWNhbEZyYW1lKS5zaXplKCksIHRyYW5zcGFyZW50LCAvKiBmaXhlZExheW91
dFNpemUgKi8geyB9LCAvKiBmaXhlZFZpc2libGVDb250ZW50UmVjdCAqLyB7IH0pOworICAgIGNv
cmUobV93ZWJGcmFtZSktPmNyZWF0ZVZpZXcoZW5jbG9zaW5nSW50UmVjdChsb2dpY2FsRnJhbWUp
LnNpemUoKSwgYmFja2dyb3VuZENvbG9yLCAvKiBmaXhlZExheW91dFNpemUgKi8geyB9LCAvKiBm
aXhlZFZpc2libGVDb250ZW50UmVjdCAqLyB7IH0pOwogfQogCiB2b2lkIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpkaWRTYXZlVG9QYWdlQ2FjaGUoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDVhZTMwODY1MmJmLi5iNDIwYWM1NGRkYyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3
IEBACisyMDE5LTAxLTE4ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4K
KworICAgICAgICBbV1BFXSBBZGQgQVBJIGZvciB3ZWJ2aWV3IGJhY2tncm91bmQgY29sb3IgY29u
ZmlndXJhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTkyMzA1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBNaW5pQnJvd3Nlci93cGUvbWFpbi5jcHA6CisgICAgICAgIChtYWluKTogQWRkIGEgbmV3
IG9wdGlvbiB0byBjb25maWd1cmUgdGhlIHdlYnZpZXcgYmFja2dyb3VuZAorICAgICAgICBjb2xv
ci4gRXhhbXBsZTogLS1iZy1jb2xvcj10cmFuc3BhcmVudC4KKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYlZpZXcuY3BwOgorICAgICAgICAodGVz
dFdlYlZpZXdCYWNrZ3JvdW5kQ29sb3IpOiBFbmFibGUgYmFja2dyb3VuZCBjb2xvciBBUEkgdGVz
dHMgZm9yIFdQRS4KKyAgICAgICAgKGJlZm9yZUFsbCk6IERpdHRvLgorCiAyMDE5LTAxLTE2ICBD
YXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RL
XVtXUEVdIEFkZCB3ZWIgZXh0ZW5zaW9ucyBBUEkgdG8gd2hpdGVsaXN0IGFjY2VzcyB0byBhIHNl
Y3VyaXR5IG9yaWdpbgpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvd3BlL21haW4uY3Bw
IGIvVG9vbHMvTWluaUJyb3dzZXIvd3BlL21haW4uY3BwCmluZGV4IDYyY2Y1NWRiMzExLi4yZDUx
ZWNjMTZjMyAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvd3BlL21haW4uY3BwCisrKyBi
L1Rvb2xzL01pbmlCcm93c2VyL3dwZS9tYWluLmNwcApAQCAtNDIsNiArNDIsNyBAQCBzdGF0aWMg
Z2Jvb2xlYW4gaWdub3JlVExTRXJyb3JzOwogc3RhdGljIGNvbnN0IGNoYXIqIGNvb2tpZXNGaWxl
Owogc3RhdGljIGNvbnN0IGNoYXIqIGNvb2tpZXNQb2xpY3k7CiBzdGF0aWMgY29uc3QgY2hhciog
cHJveHk7Citjb25zdCBjaGFyKiBiZ0NvbG9yOwogCiBzdGF0aWMgY29uc3QgR09wdGlvbkVudHJ5
IGNvbW1hbmRMaW5lT3B0aW9uc1tdID0KIHsKQEAgLTUzLDYgKzU0LDcgQEAgc3RhdGljIGNvbnN0
IEdPcHRpb25FbnRyeSBjb21tYW5kTGluZU9wdGlvbnNbXSA9CiAgICAgeyAicHJveHkiLCAwLCAw
LCBHX09QVElPTl9BUkdfU1RSSU5HLCAmcHJveHksICJTZXQgcHJveHkiLCAiUFJPWFkiIH0sCiAg
ICAgeyAiaWdub3JlLWhvc3QiLCAwLCAwLCBHX09QVElPTl9BUkdfU1RSSU5HX0FSUkFZLCAmaWdu
b3JlSG9zdHMsICJTZXQgcHJveHkgaWdub3JlIGhvc3RzIiwgIkhPU1RTIiB9LAogICAgIHsgImln
bm9yZS10bHMtZXJyb3JzIiwgMCwgMCwgR19PUFRJT05fQVJHX05PTkUsICZpZ25vcmVUTFNFcnJv
cnMsICJJZ25vcmUgVExTIGVycm9ycyIsIG51bGxwdHIgfSwKKyAgICB7ICJiZy1jb2xvciIsIDAs
IDAsIEdfT1BUSU9OX0FSR19TVFJJTkcsICZiZ0NvbG9yLCAiV2luZG93IGJhY2tncm91bmQgY29s
b3IuIERlZmF1bHQ6IHdoaXRlIiwgIkNPTE9SIiB9LAogICAgIHsgR19PUFRJT05fUkVNQUlOSU5H
LCAwLCAwLCBHX09QVElPTl9BUkdfRklMRU5BTUVfQVJSQVksICZ1cmlBcmd1bWVudHMsIG51bGxw
dHIsICJbVVJMXSIgfSwKICAgICB7IG51bGxwdHIsIDAsIDAsIEdfT1BUSU9OX0FSR19OT05FLCBu
dWxscHRyLCBudWxscHRyLCBudWxscHRyIH0KIH07CkBAIC0xOTQsNiArMTk2LDEwIEBAIGludCBt
YWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAgICAgaWYgKGlnbm9yZVRMU0Vycm9ycykKICAg
ICAgICAgd2Via2l0X3dlYl9jb250ZXh0X3NldF90bHNfZXJyb3JzX3BvbGljeSh3ZWJDb250ZXh0
LCBXRUJLSVRfVExTX0VSUk9SU19QT0xJQ1lfSUdOT1JFKTsKIAorICAgIFdlYktpdENvbG9yIGNv
bG9yOworICAgIGlmIChiZ0NvbG9yICYmIHdlYmtpdF9jb2xvcl9wYXJzZSgmY29sb3IsIGJnQ29s
b3IpKQorICAgICAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0X2JhY2tncm91bmRfY29sb3Iod2ViVmll
dywgJmNvbG9yKTsKKwogICAgIGlmICh1cmlBcmd1bWVudHMpCiAgICAgICAgIHdlYmtpdF93ZWJf
dmlld19sb2FkX3VyaSh3ZWJWaWV3LCB1cmlBcmd1bWVudHNbMF0pOwogICAgIGVsc2UgaWYgKCFh
dXRvbWF0aW9uTW9kZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0R0xpYi9UZXN0V2ViS2l0V2ViVmlldy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYlZpZXcuY3BwCmluZGV4IDU0ZjE5N2I4ODMzLi5kMDUz
MWI0OWYwZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGli
L1Rlc3RXZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdEdMaWIvVGVzdFdlYktpdFdlYlZpZXcuY3BwCkBAIC0xMTMzLDExICsxMTMzLDE2IEBAIHN0
YXRpYyB2b2lkIHRlc3RXZWJWaWV3SXNQbGF5aW5nQXVkaW8oSXNQbGF5aW5nQXVkaW9XZWJWaWV3
VGVzdCogdGVzdCwgZ2NvbnN0cG9pCiAgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3dlYl92aWV3
X2lzX3BsYXlpbmdfYXVkaW8odGVzdC0+bV93ZWJWaWV3KSk7CiB9CiAKLSNpZiBQTEFURk9STShH
VEspCiBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0JhY2tncm91bmRDb2xvcihXZWJWaWV3VGVzdCog
dGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKKyNpZiBQTEFURk9STShHVEspCisjZGVmaW5lIENvbG9y
VHlwZSBHZGtSR0JBCisjZWxpZiBQTEFURk9STShXUEUpCisjZGVmaW5lIENvbG9yVHlwZSBXZWJL
aXRDb2xvcgorI2VuZGlmCisKICAgICAvLyBXaGl0ZSBpcyB0aGUgZGVmYXVsdCBiYWNrZ3JvdW5k
LgotICAgIEdka1JHQkEgcmdiYTsKKyAgICBDb2xvclR5cGUgcmdiYTsKICAgICB3ZWJraXRfd2Vi
X3ZpZXdfZ2V0X2JhY2tncm91bmRfY29sb3IodGVzdC0+bV93ZWJWaWV3LCAmcmdiYSk7CiAgICAg
Z19hc3NlcnRfY21wZmxvYXQocmdiYS5yZWQsID09LCAxKTsKICAgICBnX2Fzc2VydF9jbXBmbG9h
dChyZ2JhLmdyZWVuLCA9PSwgMSk7CkBAIC0xMTU1LDEwICsxMTYwLDIzIEBAIHN0YXRpYyB2b2lk
IHRlc3RXZWJWaWV3QmFja2dyb3VuZENvbG9yKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2lu
dGVyKQogICAgIGdfYXNzZXJ0X2NtcGZsb2F0KHJnYmEuYmx1ZSwgPT0sIDApOwogICAgIGdfYXNz
ZXJ0X2NtcGZsb2F0KHJnYmEuYWxwaGEsID09LCAwLjUpOwogCisjaWYgUExBVEZPUk0oV1BFKQor
ICAgIENvbG9yVHlwZSBjb2xvcjsKKyAgICBnX2Fzc2VydCh3ZWJraXRfY29sb3JfcGFyc2UoJmNv
bG9yLCAicmVkIikpOworICAgIGdfYXNzZXJ0X2NtcGZsb2F0KGNvbG9yLnJlZCwgPT0sIDEpOwor
ICAgIHdlYmtpdF93ZWJfdmlld19zZXRfYmFja2dyb3VuZF9jb2xvcih0ZXN0LT5tX3dlYlZpZXcs
ICZjb2xvcik7CisgICAgd2Via2l0X3dlYl92aWV3X2dldF9iYWNrZ3JvdW5kX2NvbG9yKHRlc3Qt
Pm1fd2ViVmlldywgJnJnYmEpOworICAgIGdfYXNzZXJ0X2NtcGZsb2F0KHJnYmEucmVkLCA9PSwg
MSk7CisgICAgZ19hc3NlcnRfY21wZmxvYXQocmdiYS5ncmVlbiwgPT0sIDApOworICAgIGdfYXNz
ZXJ0X2NtcGZsb2F0KHJnYmEuYmx1ZSwgPT0sIDApOworICAgIGdfYXNzZXJ0X2NtcGZsb2F0KHJn
YmEuYWxwaGEsID09LCAxKTsKKyNlbmRpZgorCiAgICAgLy8gVGhlIGFjdHVhbCByZW5kZXJpbmcg
Y2FuJ3QgYmUgdGVzdGVkIHVzaW5nIHVuaXQgdGVzdHMsIHVzZQogICAgIC8vIE1pbmlCcm93c2Vy
IC0tYmctY29sb3I9Ijxjb2xvci12YWx1ZT4iIGZvciBtYW51YWxseSB0ZXN0aW5nIHRoaXMgQVBJ
LgogfQogCisjaWYgUExBVEZPUk0oR1RLKQogc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdQcmVmZXJy
ZWRTaXplKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewogICAgIHRlc3QtPmxv
YWRIdG1sKCI8aHRtbCBzdHlsZT0nd2lkdGg6IDMyNXB4OyBoZWlnaHQ6IDYxNXB4Jz48L2h0bWw+
IiwgbnVsbHB0cik7CkBAIC0xMzYzLDggKzEzODEsOCBAQCB2b2lkIGJlZm9yZUFsbCgpCiAgICAg
Tm90aWZpY2F0aW9uV2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJub3RpZmljYXRp
b24taW5pdGlhbC1wZXJtaXNzaW9uLWRpc2FsbG93ZWQiLCB0ZXN0V2ViVmlld05vdGlmaWNhdGlv
bkluaXRpYWxQZXJtaXNzaW9uRGlzYWxsb3dlZCk7CiAjZW5kaWYKICAgICBJc1BsYXlpbmdBdWRp
b1dlYlZpZXdUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAiaXMtcGxheWluZy1hdWRpbyIsIHRl
c3RXZWJWaWV3SXNQbGF5aW5nQXVkaW8pOwotI2lmIFBMQVRGT1JNKEdUSykKICAgICBXZWJWaWV3
VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgImJhY2tncm91bmQtY29sb3IiLCB0ZXN0V2ViVmll
d0JhY2tncm91bmRDb2xvcik7CisjaWYgUExBVEZPUk0oR1RLKQogICAgIFdlYlZpZXdUZXN0Ojph
ZGQoIldlYktpdFdlYlZpZXciLCAicHJlZmVycmVkLXNpemUiLCB0ZXN0V2ViVmlld1ByZWZlcnJl
ZFNpemUpOwogI2VuZGlmCiAgICAgV2ViVmlld1RpdGxlVGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3
IiwgInRpdGxlLWNoYW5nZSIsIHRlc3RXZWJWaWV3VGl0bGVDaGFuZ2UpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359477</attachid>
            <date>2019-01-18 05:10:04 -0800</date>
            <delta_ts>2019-02-01 01:30:33 -0800</delta_ts>
            <desc>Try to fix win builds</desc>
            <filename>wk2-bg-color.diff</filename>
            <type>text/plain</type>
            <size>69984</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3MjIzZmM1ZmQ3OC4uNmY4OTIxYjg0M2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMyBAQAorMjAxOS0wMS0xOCAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxp
YS5jb20+IGFuZCBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKwor
ICAgICAgICBbV1BFXSBBZGQgQVBJIGZvciB3ZWJ2aWV3IGJhY2tncm91bmQgY29sb3IgY29uZmln
dXJhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTkyMzA1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRhcHQgdGhlIEZyYW1lVmlldyBBUEkgdG8gYWxsb3cgYSBkZWZhdWx0IG5vbi13aGl0ZSBiYWNr
Z3JvdW5kIGNvbG9yLgorCisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZTo6Y3JlYXRlVmlldyk6IFJlcGxhY2UgaXNUcmFuc3BhcmVudCBhcmd1bWVudCB3
aXRoIGEgYmFja2dyb3VuZCBjb2xvciBvbmUuCisgICAgICAgICogcGFnZS9GcmFtZS5oOgorICAg
ICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6
cmVjYWxjdWxhdGVCYXNlQmFja2dyb3VuZENvbG9yKTogVXNlIENvbG9yOjp0cmFuc3BhcmVudCBp
ZiBtX2lzVHJhbnNwYXJlbnQgaXMgdHJ1ZS4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6
dXBkYXRlQmFja2dyb3VuZFJlY3Vyc2l2ZWx5KTogQWxsb3cgdGhlIGZhbGxiYWNrIGJhY2tncm91
bmQgY29sb3IgdG8gYmUgbm9uLXdoaXRlLCB0aGlzIGlzCisgICAgICAgIHVzZWQgb25seSBpbiBu
b24tZGFyay1tb2RlLWNzcyBidWlsZCBjb25maWd1cmF0aW9ucy4KKyAgICAgICAgKiBwYWdlL0Zy
YW1lVmlldy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkludGVybmFsczo6c2V0Vmlld0lzVHJhbnNwYXJlbnQpOiBVc2UgQ29sb3I6OnRyYW5z
cGFyZW50IGlmIHRyYW5zcGFyZW50IGlzIHRydWUuCisKIDIwMTktMDEtMTggIFNpbW9uIEZyYXNl
ciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgU2Nyb2xsaW5nQ29vcmRpbmF0
b3I6OnNjcm9sbGFibGVBcmVhU2Nyb2xsTGF5ZXJEaWRDaGFuZ2UoKSBjYW4gYmUgcmVtb3ZlZApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lLmNwcAppbmRleCA3M2JhZmRiNDY2MC4uYWU2MDA0OWIwZTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWUuY3BwCkBAIC05MDIsNyArOTAyLDcgQEAgUmVmUHRyPFJhbmdlPiBGcmFtZTo6cmFu
Z2VGb3JQb2ludChjb25zdCBJbnRQb2ludCYgZnJhbWVQb2ludCkKICAgICByZXR1cm4gbnVsbHB0
cjsKIH0KIAotdm9pZCBGcmFtZTo6Y3JlYXRlVmlldyhjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNp
emUsIGJvb2wgdHJhbnNwYXJlbnQsCit2b2lkIEZyYW1lOjpjcmVhdGVWaWV3KGNvbnN0IEludFNp
emUmIHZpZXdwb3J0U2l6ZSwgY29uc3QgT3B0aW9uYWw8Q29sb3I+JiBiYWNrZ3JvdW5kQ29sb3Is
CiAgICAgY29uc3QgSW50U2l6ZSYgZml4ZWRMYXlvdXRTaXplLCBjb25zdCBJbnRSZWN0JiBmaXhl
ZFZpc2libGVDb250ZW50UmVjdCwKICAgICBib29sIHVzZUZpeGVkTGF5b3V0LCBTY3JvbGxiYXJN
b2RlIGhvcml6b250YWxTY3JvbGxiYXJNb2RlLCBib29sIGhvcml6b250YWxMb2NrLAogICAgIFNj
cm9sbGJhck1vZGUgdmVydGljYWxTY3JvbGxiYXJNb2RlLCBib29sIHZlcnRpY2FsTG9jaykKQEAg
LTkzMyw3ICs5MzMsNyBAQCB2b2lkIEZyYW1lOjpjcmVhdGVWaWV3KGNvbnN0IEludFNpemUmIHZp
ZXdwb3J0U2l6ZSwgYm9vbCB0cmFuc3BhcmVudCwKIAogICAgIHNldFZpZXcoZnJhbWVWaWV3LmNv
cHlSZWYoKSk7CiAKLSAgICBmcmFtZVZpZXctPnVwZGF0ZUJhY2tncm91bmRSZWN1cnNpdmVseSh0
cmFuc3BhcmVudCk7CisgICAgZnJhbWVWaWV3LT51cGRhdGVCYWNrZ3JvdW5kUmVjdXJzaXZlbHko
YmFja2dyb3VuZENvbG9yKTsKIAogICAgIGlmIChpc01haW5GcmFtZSkKICAgICAgICAgZnJhbWVW
aWV3LT5zZXRQYXJlbnRWaXNpYmxlKHRydWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCmluZGV4IDhhZDEzZDZl
MWNjLi43ODQxYWQ1NjJjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaApAQCAtMTI4LDcgKzEyOCw3IEBAIHB1
YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluaXRXaXRoU2ltcGxlSFRNTERvY3VtZW50
KGNvbnN0IFN0cmluZyYgc3R5bGUsIGNvbnN0IFVSTCYpOwogI2VuZGlmCiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzZXRWaWV3KFJlZlB0cjxGcmFtZVZpZXc+JiYpOwotICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgY3JlYXRlVmlldyhjb25zdCBJbnRTaXplJiwgYm9vbCB0cmFuc3BhcmVudCwKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNyZWF0ZVZpZXcoY29uc3QgSW50U2l6ZSYsIGNvbnN0IE9w
dGlvbmFsPENvbG9yPiYgYmFja2dyb3VuZENvbG9yLAogICAgICAgICBjb25zdCBJbnRTaXplJiBm
aXhlZExheW91dFNpemUsIGNvbnN0IEludFJlY3QmIGZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0LAog
ICAgICAgICBib29sIHVzZUZpeGVkTGF5b3V0ID0gZmFsc2UsIFNjcm9sbGJhck1vZGUgPSBTY3Jv
bGxiYXJBdXRvLCBib29sIGhvcml6b250YWxMb2NrID0gZmFsc2UsCiAgICAgICAgIFNjcm9sbGJh
ck1vZGUgPSBTY3JvbGxiYXJBdXRvLCBib29sIHZlcnRpY2FsTG9jayA9IGZhbHNlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCAwNjY5ODE1NmRiNC4uOThmYTdlOWE1ZWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTQyNCw3ICs0MjQsMTAgQEAgdm9pZCBGcmFtZVZp
ZXc6OnJlY2FsY3VsYXRlQmFzZUJhY2tncm91bmRDb2xvcigpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIG1fdXNlc0RhcmtBcHBlYXJhbmNlID0gdXNpbmdEYXJrQXBwZWFyYW5jZTsKLSAgICB1cGRh
dGVCYWNrZ3JvdW5kUmVjdXJzaXZlbHkobV9pc1RyYW5zcGFyZW50KTsKKyAgICBPcHRpb25hbDxD
b2xvcj4gYmFja2dyb3VuZENvbG9yOworICAgIGlmIChtX2lzVHJhbnNwYXJlbnQpCisgICAgICAg
IGJhY2tncm91bmRDb2xvciA9IENvbG9yKENvbG9yOjp0cmFuc3BhcmVudCk7CisgICAgdXBkYXRl
QmFja2dyb3VuZFJlY3Vyc2l2ZWx5KGJhY2tncm91bmRDb2xvcik7CiB9CiAjZW5kaWYKIApAQCAt
MzAxMSwxOCArMzAxNCwxOCBAQCB2b2lkIEZyYW1lVmlldzo6c2V0QmFzZUJhY2tncm91bmRDb2xv
cihjb25zdCBDb2xvciYgYmFja2dyb3VuZENvbG9yKQogICAgIHJlbmRlclZpZXcoKS0+Y29tcG9z
aXRvcigpLnJvb3RCYWNrZ3JvdW5kQ29sb3JPclRyYW5zcGFyZW5jeUNoYW5nZWQoKTsKIH0KIAot
dm9pZCBGcmFtZVZpZXc6OnVwZGF0ZUJhY2tncm91bmRSZWN1cnNpdmVseShib29sIHRyYW5zcGFy
ZW50KQordm9pZCBGcmFtZVZpZXc6OnVwZGF0ZUJhY2tncm91bmRSZWN1cnNpdmVseShjb25zdCBP
cHRpb25hbDxDb2xvcj4mIGJhY2tncm91bmRDb2xvcikKIHsKICNpZiBFTkFCTEUoREFSS19NT0RF
X0NTUykKLSAgICBDb2xvciBiYWNrZ3JvdW5kQ29sb3IgPSB0cmFuc3BhcmVudCA/IENvbG9yOjp0
cmFuc3BhcmVudCA6IFJlbmRlclRoZW1lOjpzaW5nbGV0b24oKS5zeXN0ZW1Db2xvcihDU1NWYWx1
ZUFwcGxlU3lzdGVtQ29udHJvbEJhY2tncm91bmQsIHN0eWxlQ29sb3JPcHRpb25zKCkpOworICAg
IENvbG9yIGJhc2VCYWNrZ3JvdW5kQ29sb3IgPSBiYWNrZ3JvdW5kQ29sb3IudmFsdWVPcihSZW5k
ZXJUaGVtZTo6c2luZ2xldG9uKCkuc3lzdGVtQ29sb3IoQ1NTVmFsdWVBcHBsZVN5c3RlbUNvbnRy
b2xCYWNrZ3JvdW5kLCBzdHlsZUNvbG9yT3B0aW9ucygpKSk7CiAjZWxzZQotICAgIENvbG9yIGJh
Y2tncm91bmRDb2xvciA9IHRyYW5zcGFyZW50ID8gQ29sb3I6OnRyYW5zcGFyZW50IDogQ29sb3I6
OndoaXRlOworICAgIENvbG9yIGJhc2VCYWNrZ3JvdW5kQ29sb3IgPSBiYWNrZ3JvdW5kQ29sb3Iu
dmFsdWVPcihDb2xvcjo6d2hpdGUpOwogI2VuZGlmCiAKICAgICBmb3IgKGF1dG8qIGZyYW1lID0g
bV9mcmFtZS5wdHIoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQo
bV9mcmFtZS5wdHIoKSkpIHsKICAgICAgICAgaWYgKEZyYW1lVmlldyogdmlldyA9IGZyYW1lLT52
aWV3KCkpIHsKLSAgICAgICAgICAgIHZpZXctPnNldFRyYW5zcGFyZW50KHRyYW5zcGFyZW50KTsK
LSAgICAgICAgICAgIHZpZXctPnNldEJhc2VCYWNrZ3JvdW5kQ29sb3IoYmFja2dyb3VuZENvbG9y
KTsKKyAgICAgICAgICAgIHZpZXctPnNldFRyYW5zcGFyZW50KCFiYXNlQmFja2dyb3VuZENvbG9y
LmlzVmlzaWJsZSgpKTsKKyAgICAgICAgICAgIHZpZXctPnNldEJhc2VCYWNrZ3JvdW5kQ29sb3Io
YmFzZUJhY2tncm91bmRDb2xvcik7CiAgICAgICAgICAgICBpZiAodmlldy0+bmVlZHNMYXlvdXQo
KSkKICAgICAgICAgICAgICAgICB2aWV3LT5sYXlvdXRDb250ZXh0KCkuc2NoZWR1bGVMYXlvdXQo
KTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKaW5kZXggMGM3ODFlZTYyYTMuLjFk
MjIwN2Q0YWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTE5MCw3ICsxOTAsNyBAQCBw
dWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBDb2xvciBiYXNlQmFja2dyb3VuZENvbG9yKCkg
Y29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRCYXNlQmFja2dyb3VuZENvbG9yKGNv
bnN0IENvbG9yJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVCYWNrZ3JvdW5kUmVj
dXJzaXZlbHkoYm9vbCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVCYWNrZ3JvdW5k
UmVjdXJzaXZlbHkoY29uc3QgT3B0aW9uYWw8Q29sb3I+JiBiYWNrZ3JvdW5kQ29sb3IpOwogCiAg
ICAgZW51bSBFeHRlbmRlZEJhY2tncm91bmRNb2RlRmxhZ3MgewogICAgICAgICBFeHRlbmRlZEJh
Y2tncm91bmRNb2RlTm9uZSAgICAgICAgICA9IDAsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5jcHAKaW5kZXggMzA5OTk3MWYzMzcuLjZmZDEyNTA0NTE2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwCkBAIC0xNzAzLDcgKzE3MDMsMTAgQEAgRXhjZXB0aW9uT3I8dm9pZD4g
SW50ZXJuYWxzOjpzZXRWaWV3SXNUcmFuc3BhcmVudChib29sIHRyYW5zcGFyZW50KQogICAgIERv
Y3VtZW50KiBkb2N1bWVudCA9IGNvbnRleHREb2N1bWVudCgpOwogICAgIGlmICghZG9jdW1lbnQg
fHwgIWRvY3VtZW50LT52aWV3KCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlk
QWNjZXNzRXJyb3IgfTsKLSAgICBkb2N1bWVudC0+dmlldygpLT51cGRhdGVCYWNrZ3JvdW5kUmVj
dXJzaXZlbHkodHJhbnNwYXJlbnQpOworICAgIE9wdGlvbmFsPENvbG9yPiBiYWNrZ3JvdW5kQ29s
b3I7CisgICAgaWYgKHRyYW5zcGFyZW50KQorICAgICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBDb2xv
cihDb2xvcjo6dHJhbnNwYXJlbnQpOworICAgIGRvY3VtZW50LT52aWV3KCktPnVwZGF0ZUJhY2tn
cm91bmRSZWN1cnNpdmVseShiYWNrZ3JvdW5kQ29sb3IpOwogICAgIHJldHVybiB7IH07CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggMjNjMjlmOTk3YjAuLjNlYzVlZThhMjlkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDgwIEBACisyMDE5LTAxLTE4ICBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PiBhbmQgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAg
ICAgW1dQRV0gQWRkIEFQSSBmb3Igd2VidmlldyBiYWNrZ3JvdW5kIGNvbG9yIGNvbmZpZ3VyYXRp
b24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MjMw
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIHRo
ZSBjYXNlIG9mIFdQRSB3ZSBuZWVkIHRvIHNlbmQgdGhlIGJhY2tncm91bmQgY29sb3IgdG8gdGhl
IHdlYiBwcm9jZXNzIHRvIGJlIHVzZWQgYXMgdGhlIGJhY2tncm91bmQgY29sb3Igb2YKKyAgICAg
ICAgdGhlIHBhZ2UuIFRoaXMgcGF0Y2ggYWRhcHRzIHRoZSBHVEsrIGltcGxlbWVudGF0aW9uIHRv
IGRvIHRoZSBzYW1lLCBzaW5jZSBpdCdzIGEgbG90IHNpbXBsZXIuIFRoZSBwYXRjaCBhbHNvCisg
ICAgICAgIHJlbW92ZXMgdGhlIFNldERyYXdzQmFja2dyb3VuZCBtZXNzYWdlIGluIGZhdm9yIG9m
IHRoZSBuZXcgU2V0QmFja2dyb3VuZENvbG9yIG1lc3NhZ2UgdGhhdCByZWNlaXZlcyBhbiBvcHRp
b25hbAorICAgICAgICBjb2xvci4KKworICAgICAgICAqIFBsYXRmb3JtV1BFLmNtYWtlOiBBZGQg
bmV3IFdQRSBBUEkgZm9yIFdlYktpdENvbG9yIGJveGVkIHR5cGUuCisgICAgICAgICogU2hhcmVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpwYWludFRvQ3VycmVudEdMQ29u
dGV4dCk6IFJlbW92ZSBiYWNrZ3JvdW5kIHJlbmRlcmluZyBhbmQgb3BhY2l0eSBoYW5kbGluZy4K
KyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNz
U2NlbmUuaDoKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNv
bXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6VGhyZWFk
ZWRDb21wb3NpdG9yOjpyZW5kZXJMYXllclRyZWUpOiBSZW1vdmUgZHJhd3NCYWtncm91bmQgYW5k
IGFsd2F5cyBjbGVhciB0aGUgY29udGV4dCB3aXRoCisgICAgICAgIHRyYW5zcGFyZW50IGNvbG9y
LgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRv
ci9UaHJlYWRlZENvbXBvc2l0b3IuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnM6OmVuY29kZSBjb25zdCk6IFJlcGxhY2UgZHJhd3NCYWNrZ3JvdW5kIHdpdGggYmFja2dyb3Vu
ZENvbG9yLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNv
ZGUpOiBEaXR0by4KKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5o
OgorICAgICAgICAqIFNvdXJjZXNXUEUudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJWaWV3R3RrLmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19zZXRfYmFja2dyb3VuZF9j
b2xvcik6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2JhY2tncm91bmRfY29sb3IpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdENvbG9yLmNwcDogQWRkZWQuCisgICAg
ICAgICh3ZWJraXRfY29sb3JfY29weSk6CisgICAgICAgICh3ZWJraXRfY29sb3JfZnJlZSk6Cisg
ICAgICAgICh3ZWJraXRDb2xvclRvV2ViQ29yZUNvbG9yKToKKyAgICAgICAgKHdlYmtpdENvbG9y
RmlsbEZyb21XZWJDb3JlQ29sb3IpOgorICAgICAgICAod2Via2l0X2NvbG9yX3BhcnNlKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRDb2xvci5oOiBBZGRlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRDb2xvclByaXZhdGUuaDogQWRkZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViVmlldy5oOiBJbXBsZW1lbnQgd2Via2l0X3dl
Yl92aWV3X3NldF9iYWNrZ3JvdW5kX2NvbG9yIEFQSS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L3dwZS9XZWJLaXRXZWJWaWV3V1BFLmNwcDogRGl0dG8uCisgICAgICAgICh3ZWJraXRfd2ViX3Zp
ZXdfc2V0X2JhY2tncm91bmRfY29sb3IpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2dldF9i
YWNrZ3JvdW5kX2NvbG9yKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dwZS0w
LjEtc2VjdGlvbnMudHh0OiBBZGQgbmV3IHN5bWJvbHMuCisgICAgICAgICogVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0RHJhd3NC
YWNrZ3JvdW5kKTogU2V0IGEgdHJhbnNwYXJlbnQgYmFja2dyb3VuZCBjb2xvciB3aGVuIGZhbHNl
IGlzIHBhc3NlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRCYWNrZ3JvdW5k
Q29sb3IpOiBTZW5kIGJhY2tncm91bmQgY29sb3IgdG8gdGhlIFdlYlByb2Nlc3MuCisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJhbWV0ZXJzKTogUmVwbGFjZSBkcmF3
c0JhY2tncm91bmQgd2l0aCBiYWNrZ3JvdW5kQ29sb3IuCisgICAgICAgICogVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRyYXdzQmFja2dy
b3VuZCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6YmFja2dyb3VuZENv
bG9yIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvY2Fpcm8vQmFja2luZ1N0b3JlQ2Fpcm8u
Y3BwOgorICAgICAgICAoV2ViS2l0OjpCYWNraW5nU3RvcmU6OmluY29ycG9yYXRlVXBkYXRlKTog
UmVtb3ZlIEdUSysgY29kZSB0byBoYW5kbGUgYmFja2dyb3VuZCBjb2xvci4KKyAgICAgICAgKiBV
SVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlLmg6IE1ha2UgcGFpbnQoKSBwdXJlIHZp
cnR1YWwgYW5kIHJlbW92ZSB0aGUgaW1wbGVtZW50YXRpb24uCisgICAgICAgICogVUlQcm9jZXNz
L2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQ6OnBhaW50KTogRG90IG5vdCBjYWxsIEFj
Y2VsZXJhdGVkQmFja2luZ1N0b3JlOjpwYWludCgpIG5vdyB0aGF0IGlzIHB1cmUgdmlydHVhbC4K
KyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDExLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTE6OnBhaW50KTogRGl0
dG8uCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50Ojp0cmFuc2l0
aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKTogVXNlIGJhY2tncm91bmQgY29sb3IgYXMgcHJvdmlk
ZWQgYnkgdGhlCisgICAgICAgIFVJUHJvY2VzcyB3aGVuIGNyZWF0aW5nIHRoZSBGcmFtZVZpZXcu
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEuY3Bw
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZERyYXdpbmdBcmVhLmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlRocmVhZGVkQ29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0OjpzZXRJc0Rpc2NhcmRhYmxlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpEcmF3aW5nQXJlYUltcGw6OmRpc3BsYXkpOiBSZW1vdmUgc3BlY2lhbCBjYXNlIGZvciB0
cmFuc3BhcmVudCBiYWNrZ3JvdW5kLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9MYXll
clRyZWVIb3N0Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRCYWNrZ3JvdW5kQ29sb3IpOiBOZXcgQVBJIGZv
ciBiYWNrZ3JvdW5kIGNvbG9yIGNvbmZpZ3VyYXRpb24uIFByb3hpZXMgdG8gRnJhbWVWaWV3IGFu
ZCBEcmF3aW5nQXJlYS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpiYWNrZ3JvdW5kQ29sb3IgY29uc3QpOiBSZWFkLW9u
bHkgYWNjZXNzIHRvIHRoZSBjdXJyZW50IGJhY2tncm91bmQgY29sb3IuCisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46IFJlcGxhY2UgU2V0RHJhd3NCYWNr
Z3JvdW5kIG1lc3NhZ2Ugd2l0aCBTZXRCYWNrZ3JvdW5kQ29sb3IuCisKIDIwMTktMDEtMTYgIENh
cmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtd
W1dQRV0gQWRkIHdlYiBleHRlbnNpb25zIEFQSSB0byB3aGl0ZWxpc3QgYWNjZXNzIHRvIGEgc2Vj
dXJpdHkgb3JpZ2luCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV1BFLmNtYWtl
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdQRS5jbWFrZQppbmRleCAxZjY3NWM0NGU0Yy4uM2Nk
ZWZkMmJlZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1XUEUuY21ha2UKKysr
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdQRS5jbWFrZQpAQCAtOTcsNiArOTcsNyBAQCBzZXQo
V1BFX0FQSV9JTlNUQUxMRURfSEVBREVSUwogICAgICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQ
SS93cGUvV2ViS2l0QmFja0ZvcndhcmRMaXN0LmgKICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vz
cy9BUEkvd3BlL1dlYktpdEJhY2tGb3J3YXJkTGlzdEl0ZW0uaAogICAgICR7V0VCS0lUX0RJUn0v
VUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0Q3JlZGVudGlhbC5oCisgICAgJHtXRUJLSVRfRElSfS9V
SVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRDb2xvci5oCiAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nl
c3MvQVBJL3dwZS9XZWJLaXRDb250ZXh0TWVudS5oCiAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nl
c3MvQVBJL3dwZS9XZWJLaXRDb250ZXh0TWVudUFjdGlvbnMuaAogICAgICR7V0VCS0lUX0RJUn0v
VUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0Q29udGV4dE1lbnVJdGVtLmgKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGlj
c1NjZW5lLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcAppbmRleCAxYjJlZDFiMDI3NS4uZGEyZjhhNTI3ZGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAKQEAgLTY1LDcgKzY1
LDcgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmFwcGx5U3RhdGVDaGFuZ2VzKGNv
bnN0IFZlY3RvcjxDb29yZGluYXRlZEdyYXBoaWMKICAgICAgICAgY29tbWl0U2NlbmVTdGF0ZShz
dGF0ZS5uaWNvc2lhKTsKIH0KIAotdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnBhaW50
VG9DdXJyZW50R0xDb250ZXh0KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgsIGZs
b2F0IG9wYWNpdHksIGNvbnN0IEZsb2F0UmVjdCYgY2xpcFJlY3QsIGNvbnN0IENvbG9yJiBiYWNr
Z3JvdW5kQ29sb3IsIGJvb2wgZHJhd3NCYWNrZ3JvdW5kLCBUZXh0dXJlTWFwcGVyOjpQYWludEZs
YWdzIFBhaW50RmxhZ3MpCit2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6cGFpbnRUb0N1
cnJlbnRHTENvbnRleHQoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCwgY29uc3Qg
RmxvYXRSZWN0JiBjbGlwUmVjdCwgVGV4dHVyZU1hcHBlcjo6UGFpbnRGbGFncyBQYWludEZsYWdz
KQogewogICAgIHVwZGF0ZVNjZW5lU3RhdGUoKTsKIApAQCAtNzgsMTggKzc4LDggQEAgdm9pZCBD
b29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnBhaW50VG9DdXJyZW50R0xDb250ZXh0KGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cmkKICAgICBtX3RleHR1cmVNYXBwZXItPmJlZ2luUGFpbnRpbmcoUGFp
bnRGbGFncyk7CiAgICAgbV90ZXh0dXJlTWFwcGVyLT5iZWdpbkNsaXAoVHJhbnNmb3JtYXRpb25N
YXRyaXgoKSwgY2xpcFJlY3QpOwogCi0gICAgaWYgKGRyYXdzQmFja2dyb3VuZCkgewotICAgICAg
ICBSR0JBMzIgcmdiYSA9IG1ha2VSR0JBMzJGcm9tRmxvYXRzKGJhY2tncm91bmRDb2xvci5yZWQo
KSwKLSAgICAgICAgICAgIGJhY2tncm91bmRDb2xvci5ncmVlbigpLCBiYWNrZ3JvdW5kQ29sb3Iu
Ymx1ZSgpLAotICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yLmFscGhhKCkgKiBvcGFjaXR5KTsK
LSAgICAgICAgbV90ZXh0dXJlTWFwcGVyLT5kcmF3U29saWRDb2xvcihjbGlwUmVjdCwgVHJhbnNm
b3JtYXRpb25NYXRyaXgoKSwgQ29sb3IocmdiYSkpOwotICAgIH0gZWxzZQotICAgICAgICBtX3Rl
eHR1cmVNYXBwZXItPmNsZWFyQ29sb3IobV92aWV3QmFja2dyb3VuZENvbG9yKTsKLQotICAgIGlm
IChjdXJyZW50Um9vdExheWVyLT5vcGFjaXR5KCkgIT0gb3BhY2l0eSB8fCBjdXJyZW50Um9vdExh
eWVyLT50cmFuc2Zvcm0oKSAhPSBtYXRyaXgpIHsKLSAgICAgICAgY3VycmVudFJvb3RMYXllci0+
c2V0T3BhY2l0eShvcGFjaXR5KTsKKyAgICBpZiAoY3VycmVudFJvb3RMYXllci0+dHJhbnNmb3Jt
KCkgIT0gbWF0cml4KQogICAgICAgICBjdXJyZW50Um9vdExheWVyLT5zZXRUcmFuc2Zvcm0obWF0
cml4KTsKLSAgICB9CiAKICAgICBjdXJyZW50Um9vdExheWVyLT5wYWludCgpOwogICAgIG1fZnBz
Q291bnRlci51cGRhdGVGUFNBbmREaXNwbGF5KCptX3RleHR1cmVNYXBwZXIsIGNsaXBSZWN0Lmxv
Y2F0aW9uKCksIG1hdHJpeCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5oIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaApp
bmRleCBkNGJiNTgyNjhmZS4uMmU2YjMzNWRiYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmgKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdy
YXBoaWNzU2NlbmUuaApAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q29v
cmRpbmF0ZWRHcmFwaGljc1NjZW5lKCk7CiAKICAgICB2b2lkIGFwcGx5U3RhdGVDaGFuZ2VzKGNv
bnN0IFZlY3RvcjxXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU3RhdGU+Jik7Ci0gICAgdm9p
ZCBwYWludFRvQ3VycmVudEdMQ29udGV4dChjb25zdCBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYsIGZsb2F0LCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpD
b2xvciYgYmFja2dyb3VuZENvbG9yLCBib29sIGRyYXdzQmFja2dyb3VuZCwgV2ViQ29yZTo6VGV4
dHVyZU1hcHBlcjo6UGFpbnRGbGFncyA9IDApOworICAgIHZvaWQgcGFpbnRUb0N1cnJlbnRHTENv
bnRleHQoY29uc3QgV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25zdCBXZWJDb3Jl
OjpGbG9hdFJlY3QmLCBXZWJDb3JlOjpUZXh0dXJlTWFwcGVyOjpQYWludEZsYWdzID0gMCk7CiAg
ICAgdm9pZCBkZXRhY2goKTsKIAogICAgIC8vIFRoZSBwYWludGluZyB0aHJlYWQgbXVzdCBsb2Nr
IHRoZSBtYWluIHRocmVhZCB0byB1c2UgYmVsb3cgdHdvIG1ldGhvZHMsIGJlY2F1c2UgdHdvIG1l
dGhvZHMgYWNjZXNzIG1lbWJlcnMgdGhhdCB0aGUgbWFpbiB0aHJlYWQgbWFuYWdlcy4gU2VlIG1f
Y2xpZW50LgpAQCAtODIsOSArODIsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0FjdGl2ZSgpIGNv
bnN0IHsgcmV0dXJuIG1faXNBY3RpdmU7IH0KICAgICB2b2lkIHNldEFjdGl2ZShib29sIGFjdGl2
ZSkgeyBtX2lzQWN0aXZlID0gYWN0aXZlOyB9CiAKLSAgICB2b2lkIHNldFZpZXdCYWNrZ3JvdW5k
Q29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9yKSB7IG1fdmlld0JhY2tncm91bmRDb2xv
ciA9IGNvbG9yOyB9Ci0gICAgV2ViQ29yZTo6Q29sb3Igdmlld0JhY2tncm91bmRDb2xvcigpIGNv
bnN0IHsgcmV0dXJuIG1fdmlld0JhY2tncm91bmRDb2xvcjsgfQotCiBwcml2YXRlOgogICAgIHZv
aWQgY29tbWl0U2NlbmVTdGF0ZShjb25zdCBXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU3Rh
dGU6Ok5pY29zaWFTdGF0ZSYpOwogICAgIHZvaWQgdXBkYXRlU2NlbmVTdGF0ZSgpOwpAQCAtMTEz
LDcgKzExMCw2IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlRleHR1
cmVNYXBwZXJMYXllcj4gbV9yb290TGF5ZXI7CiAKICAgICBOaWNvc2lhOjpQbGF0Zm9ybUxheWVy
OjpMYXllcklEIG1fcm9vdExheWVySUQgeyAwIH07Ci0gICAgV2ViQ29yZTo6Q29sb3IgbV92aWV3
QmFja2dyb3VuZENvbG9yIHsgV2ViQ29yZTo6Q29sb3I6OndoaXRlIH07CiAKICAgICBXZWJDb3Jl
OjpUZXh0dXJlTWFwcGVyRlBTQ291bnRlciBtX2Zwc0NvdW50ZXI7CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0
b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHAKaW5k
ZXggNzUyMmY4NGVhOGYuLjgwNWYyMzMwY2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBv
c2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
dGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHAKQEAgLTE1NiwxMyArMTU2
LDYgQEAgdm9pZCBUaHJlYWRlZENvbXBvc2l0b3I6OnNldFZpZXdwb3J0U2l6ZShjb25zdCBJbnRT
aXplJiB2aWV3cG9ydFNpemUsIGZsb2F0IHNjYWwKICAgICBtX2NvbXBvc2l0aW5nUnVuTG9vcC0+
c2NoZWR1bGVVcGRhdGUoKTsKIH0KIAotdm9pZCBUaHJlYWRlZENvbXBvc2l0b3I6OnNldERyYXdz
QmFja2dyb3VuZChib29sIGRyYXdzQmFja2dyb3VuZCkKLXsKLSAgICBMb2NrSG9sZGVyIGxvY2tl
cihtX2F0dHJpYnV0ZXMubG9jayk7Ci0gICAgbV9hdHRyaWJ1dGVzLmRyYXdzQmFja2dyb3VuZCA9
IGRyYXdzQmFja2dyb3VuZDsKLSAgICBtX2NvbXBvc2l0aW5nUnVuTG9vcC0+c2NoZWR1bGVVcGRh
dGUoKTsKLX0KLQogdm9pZCBUaHJlYWRlZENvbXBvc2l0b3I6OnVwZGF0ZVZpZXdwb3J0KCkKIHsK
ICAgICBtX2NvbXBvc2l0aW5nUnVuTG9vcC0+c2NoZWR1bGVVcGRhdGUoKTsKQEAgLTE5NCw4ICsx
ODcsOCBAQCB2b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6cmVuZGVyTGF5ZXJUcmVlKCkKICAgICBX
ZWJDb3JlOjpJbnRTaXplIHZpZXdwb3J0U2l6ZTsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBzY3Jv
bGxQb3NpdGlvbjsKICAgICBmbG9hdCBzY2FsZUZhY3RvcjsKLSAgICBib29sIGRyYXdzQmFja2dy
b3VuZDsKICAgICBib29sIG5lZWRzUmVzaXplOworCiAgICAgVmVjdG9yPFdlYkNvcmU6OkNvb3Jk
aW5hdGVkR3JhcGhpY3NTdGF0ZT4gc3RhdGVzOwogCiAgICAgewpAQCAtMjAzLDcgKzE5Niw2IEBA
IHZvaWQgVGhyZWFkZWRDb21wb3NpdG9yOjpyZW5kZXJMYXllclRyZWUoKQogICAgICAgICB2aWV3
cG9ydFNpemUgPSBtX2F0dHJpYnV0ZXMudmlld3BvcnRTaXplOwogICAgICAgICBzY3JvbGxQb3Np
dGlvbiA9IG1fYXR0cmlidXRlcy5zY3JvbGxQb3NpdGlvbjsKICAgICAgICAgc2NhbGVGYWN0b3Ig
PSBtX2F0dHJpYnV0ZXMuc2NhbGVGYWN0b3I7Ci0gICAgICAgIGRyYXdzQmFja2dyb3VuZCA9IG1f
YXR0cmlidXRlcy5kcmF3c0JhY2tncm91bmQ7CiAgICAgICAgIG5lZWRzUmVzaXplID0gbV9hdHRy
aWJ1dGVzLm5lZWRzUmVzaXplOwogCiAgICAgICAgIHN0YXRlcyA9IFdURk1vdmUobV9hdHRyaWJ1
dGVzLnN0YXRlcyk7CkBAIC0yNDcsMTQgKzIzOSwxMSBAQCB2b2lkIFRocmVhZGVkQ29tcG9zaXRv
cjo6cmVuZGVyTGF5ZXJUcmVlKCkKICAgICB2aWV3cG9ydFRyYW5zZm9ybS5zY2FsZShzY2FsZUZh
Y3Rvcik7CiAgICAgdmlld3BvcnRUcmFuc2Zvcm0udHJhbnNsYXRlKC1zY3JvbGxQb3NpdGlvbi54
KCksIC1zY3JvbGxQb3NpdGlvbi55KCkpOwogCi0gICAgaWYgKCFkcmF3c0JhY2tncm91bmQpIHsK
LSAgICAgICAgZ2xDbGVhckNvbG9yKDAsIDAsIDAsIDApOwotICAgICAgICBnbENsZWFyKEdMX0NP
TE9SX0JVRkZFUl9CSVQpOwotICAgIH0KKyAgICBnbENsZWFyQ29sb3IoMCwgMCwgMCwgMCk7Cisg
ICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKIAogICAgIG1fc2NlbmUtPmFwcGx5U3Rh
dGVDaGFuZ2VzKHN0YXRlcyk7Ci0gICAgbV9zY2VuZS0+cGFpbnRUb0N1cnJlbnRHTENvbnRleHQo
dmlld3BvcnRUcmFuc2Zvcm0sIDEsIEZsb2F0UmVjdCB7IEZsb2F0UG9pbnQgeyB9LCB2aWV3cG9y
dFNpemUgfSwKLSAgICAgICAgQ29sb3I6OnRyYW5zcGFyZW50LCAhZHJhd3NCYWNrZ3JvdW5kLCBt
X3BhaW50RmxhZ3MpOworICAgIG1fc2NlbmUtPnBhaW50VG9DdXJyZW50R0xDb250ZXh0KHZpZXdw
b3J0VHJhbnNmb3JtLCBGbG9hdFJlY3QgeyBGbG9hdFBvaW50IHsgfSwgdmlld3BvcnRTaXplIH0s
IG1fcGFpbnRGbGFncyk7CiAKICAgICBtX2NvbnRleHQtPnN3YXBCdWZmZXJzKCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRj
b21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29v
cmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmgK
aW5kZXggNmQ3MDUzODUwZGEuLmI2MzFmYzAzNWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENv
bXBvc2l0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNz
L3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuaApAQCAtNzAsNyArNzAsNiBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTY2FsZUZhY3RvcihmbG9hdCk7CiAgICAgdm9pZCBzZXRT
Y3JvbGxQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIGZsb2F0IHNjYWxlKTsKICAg
ICB2b2lkIHNldFZpZXdwb3J0U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgZmxvYXQgc2Nh
bGUpOwotICAgIHZvaWQgc2V0RHJhd3NCYWNrZ3JvdW5kKGJvb2wpOwogCiAgICAgdm9pZCB1cGRh
dGVTY2VuZVN0YXRlKGNvbnN0IFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZSYpOwog
CkBAIC0xMTIsOSArMTExLDcgQEAgcHJpdmF0ZToKICAgICAgICAgV2ViQ29yZTo6SW50U2l6ZSB2
aWV3cG9ydFNpemU7CiAgICAgICAgIFdlYkNvcmU6OkludFBvaW50IHNjcm9sbFBvc2l0aW9uOwog
ICAgICAgICBmbG9hdCBzY2FsZUZhY3RvciB7IDEgfTsKLSAgICAgICAgYm9vbCBkcmF3c0JhY2tn
cm91bmQgeyB0cnVlIH07CiAgICAgICAgIGJvb2wgbmVlZHNSZXNpemUgeyBmYWxzZSB9OwotCiAg
ICAgICAgIFZlY3RvcjxXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU3RhdGU+IHN0YXRlczsK
IAogICAgICAgICBib29sIGNsaWVudFJlbmRlcnNOZXh0RnJhbWUgeyBmYWxzZSB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAppbmRl
eCA2ZDA3YzAzYWQ4Yy4uNDNlYTNmNTM2NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC0zOCw3ICszOCw2IEBAIHZvaWQg
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKICAgICBlbmNvZGVyIDw8IHN0b3JlOwogICAgIGVuY29kZXIuZW5jb2RlRW51bShkcmF3
aW5nQXJlYVR5cGUpOwogICAgIGVuY29kZXIgPDwgcGFnZUdyb3VwRGF0YTsKLSAgICBlbmNvZGVy
IDw8IGRyYXdzQmFja2dyb3VuZDsKICAgICBlbmNvZGVyIDw8IGlzRWRpdGFibGU7CiAgICAgZW5j
b2RlciA8PCB1bmRlcmxheUNvbG9yOwogICAgIGVuY29kZXIgPDwgdXNlRml4ZWRMYXlvdXQ7CkBA
IC0xMjAsNiArMTE5LDcgQEAgdm9pZCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUo
SVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lP
TlMpCiAgICAgZW5jb2RlciA8PCBjb250ZW50UnVsZUxpc3RzOwogI2VuZGlmCisgICAgZW5jb2Rl
ciA8PCBiYWNrZ3JvdW5kQ29sb3I7CiB9CiAKIE9wdGlvbmFsPFdlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnM+IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRl
Y29kZXIpCkBAIC0xMzgsOCArMTM4LDYgQEAgT3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycz4gV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2QKICAgICBp
ZiAoIXBhZ2VHcm91cERhdGEpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgcGFy
YW1ldGVycy5wYWdlR3JvdXBEYXRhID0gV1RGTW92ZSgqcGFnZUdyb3VwRGF0YSk7Ci0gICAgaWYg
KCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmRyYXdzQmFja2dyb3VuZCkpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmlz
RWRpdGFibGUpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocGFyYW1ldGVycy51bmRlcmxheUNvbG9yKSkKQEAgLTM0Nyw2ICszNDUsMTEgQEAg
T3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVyczo6ZGVjb2RlKElQQzo6RGVjb2QKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAg
ICBwYXJhbWV0ZXJzLmNvbnRlbnRSdWxlTGlzdHMgPSBXVEZNb3ZlKCpjb250ZW50UnVsZUxpc3Rz
KTsKICNlbmRpZgorICAgIE9wdGlvbmFsPE9wdGlvbmFsPFdlYkNvcmU6OkNvbG9yPj4gYmFja2dy
b3VuZENvbG9yOworICAgIGRlY29kZXIgPj4gYmFja2dyb3VuZENvbG9yOworICAgIGlmICghYmFj
a2dyb3VuZENvbG9yKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHBhcmFtZXRl
cnMuYmFja2dyb3VuZENvbG9yID0gV1RGTW92ZSgqYmFja2dyb3VuZENvbG9yKTsKIAogICAgIHJl
dHVybiBXVEZNb3ZlKHBhcmFtZXRlcnMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4IGIzODJjZWVkZDQ0Li4yNDI3YjhjMjNm
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMuaApAQCAtNzMsNyArNzMsNiBAQCBzdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyB7
CiAgICAgRHJhd2luZ0FyZWFUeXBlIGRyYXdpbmdBcmVhVHlwZTsKICAgICBXZWJQYWdlR3JvdXBE
YXRhIHBhZ2VHcm91cERhdGE7CiAKLSAgICBib29sIGRyYXdzQmFja2dyb3VuZDsKICAgICBib29s
IGlzRWRpdGFibGU7CiAKICAgICBXZWJDb3JlOjpDb2xvciB1bmRlcmxheUNvbG9yOwpAQCAtMTg2
LDYgKzE4NSw4IEBAIHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICNpZiBFTkFC
TEUoQ09OVEVOVF9FWFRFTlNJT05TKQogICAgIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBXZWJD
b21waWxlZENvbnRlbnRSdWxlTGlzdERhdGE+PiBjb250ZW50UnVsZUxpc3RzOwogI2VuZGlmCisK
KyAgICBPcHRpb25hbDxXZWJDb3JlOjpDb2xvcj4gYmFja2dyb3VuZENvbG9yOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNXUEUu
dHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzV1BFLnR4dAppbmRleCBiNzRjZTYzNmNlZS4uZDRh
NGZkMWRmMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc1dQRS50eHQKKysrIGIv
U291cmNlL1dlYktpdC9Tb3VyY2VzV1BFLnR4dApAQCAtMTY4LDYgKzE2OCw3IEBAIFVJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRXaW5kb3dQcm9wZXJ0aWVzLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vz
cy9BUEkvd3BlL0NvbXBvc2l0aW5nTWFuYWdlclByb3h5LmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vz
cy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvd3Bl
L1Njcm9sbEdlc3R1cmVDb250cm9sbGVyLmNwcCBAbm8tdW5pZnkKK1VJUHJvY2Vzcy9BUEkvd3Bl
L1dlYktpdENvbG9yLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFNjcmlw
dERpYWxvZ1dQRS5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3
QmFja2VuZC5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3V1BF
LmNwcCBAbm8tdW5pZnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0V2ViVmlldy5jcHAKaW5kZXggNjcyMDFkODllYWEuLjdhOGExMGY1YzFjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcApA
QCAtMzk2OSw3NCArMzk2OSw2IEBAIHZvaWQgd2Via2l0V2ViVmlld1dlYlByb2Nlc3NUZXJtaW5h
dGVkKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdFdlYlByb2Nlc3NUCiAgICAgZ19zaWdu
YWxfZW1pdCh3ZWJWaWV3LCBzaWduYWxzW1dFQl9QUk9DRVNTX1RFUk1JTkFURURdLCAwLCByZWFz
b24pOwogfQogCi0jaWYgUExBVEZPUk0oR1RLKQotLyoqCi0gKiB3ZWJraXRfd2ViX3ZpZXdfc2V0
X2JhY2tncm91bmRfY29sb3I6Ci0gKiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZpZXcKLSAqIEBy
Z2JhOiBhICNHZGtSR0JBCi0gKgotICogU2V0cyB0aGUgY29sb3IgdGhhdCB3aWxsIGJlIHVzZWQg
dG8gZHJhdyB0aGUgQHdlYl92aWV3IGJhY2tncm91bmQgYmVmb3JlCi0gKiB0aGUgYWN0dWFsIGNv
bnRlbnRzIGFyZSByZW5kZXJlZC4gTm90ZSB0aGF0IGlmIHRoZSB3ZWIgcGFnZSBsb2FkZWQgaW4g
QHdlYl92aWV3Ci0gKiBzcGVjaWZpZXMgYSBiYWNrZ3JvdW5kIGNvbG9yLCBpdCB3aWxsIHRha2Ug
cHJlY2VkZW5jZSBvdmVyIHRoZSBAcmdiYSBjb2xvci4KLSAqIEJ5IGRlZmF1bHQgdGhlIEB3ZWJf
dmlldyBiYWNrZ3JvdW5kIGNvbG9yIGlzIG9wYXF1ZSB3aGl0ZS4KLSAqIE5vdGUgdGhhdCB0aGUg
cGFyZW50IHdpbmRvdyBtdXN0IGhhdmUgYSBSR0JBIHZpc3VhbCBhbmQKLSAqICNHdGtXaWRnZXQ6
YXBwLXBhaW50YWJsZSBwcm9wZXJ0eSBzZXQgdG8gJVRSVUUgZm9yIGJhY2tncm91bmRzIGNvbG9y
cyB0byB3b3JrLgotICoKLSAqIDxpbmZvcm1hbGV4YW1wbGU+PHByb2dyYW1saXN0aW5nPgotICog
c3RhdGljIHZvaWQgYnJvd3Nlcl93aW5kb3dfc2V0X2JhY2tncm91bmRfY29sb3IgKEJyb3dzZXJX
aW5kb3cgKndpbmRvdywKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHZGtSR0JBICpyZ2JhKQotICogewotICogICAgIFdlYktpdFdlYlZp
ZXcgKndlYl92aWV3OwotICogICAgIEdka1NjcmVlbiAqc2NyZWVuID0gZ3RrX3dpbmRvd19nZXRf
c2NyZWVuIChHVEtfV0lORE9XICh3aW5kb3cpKTsKLSAqICAgICBHZGtWaXN1YWwgKnJnYmFfdmlz
dWFsID0gZ2RrX3NjcmVlbl9nZXRfcmdiYV92aXN1YWwgKHNjcmVlbik7Ci0gKgotICogICAgIGlm
ICghcmdiYV92aXN1YWwpCi0gKiAgICAgICAgICByZXR1cm47Ci0gKgotICogICAgIGd0a193aWRn
ZXRfc2V0X3Zpc3VhbCAoR1RLX1dJREdFVCAod2luZG93KSwgcmdiYV92aXN1YWwpOwotICogICAg
IGd0a193aWRnZXRfc2V0X2FwcF9wYWludGFibGUgKEdUS19XSURHRVQgKHdpbmRvdyksIFRSVUUp
OwotICoKLSAqICAgICB3ZWJfdmlldyA9IGJyb3dzZXJfd2luZG93X2dldF93ZWJfdmlldyAod2lu
ZG93KTsKLSAqICAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0X2JhY2tncm91bmRfY29sb3IgKHdlYl92
aWV3LCByZ2JhKTsKLSAqIH0KLSAqIDwvcHJvZ3JhbWxpc3Rpbmc+PC9pbmZvcm1hbGV4YW1wbGU+
Ci0gKgotICogU2luY2U6IDIuOAotICovCi12b2lkIHdlYmtpdF93ZWJfdmlld19zZXRfYmFja2dy
b3VuZF9jb2xvcihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBHZGtSR0JBKiByZ2JhKQot
ewotICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpKTsKLSAg
ICBnX3JldHVybl9pZl9mYWlsKHJnYmEpOwotCi0gICAgQ29sb3IgY29sb3IoKnJnYmEpOwotICAg
IGF1dG8mIHBhZ2UgPSBnZXRQYWdlKHdlYlZpZXcpOwotICAgIGlmIChwYWdlLmJhY2tncm91bmRD
b2xvcigpID09IGNvbG9yKQotICAgICAgICByZXR1cm47Ci0KLSAgICBwYWdlLnNldEJhY2tncm91
bmRDb2xvcihjb2xvcik7Ci0gICAgcGFnZS5zZXREcmF3c0JhY2tncm91bmQoY29sb3IgPT0gQ29s
b3I6OndoaXRlKTsKLX0KLQotLyoqCi0gKiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2JhY2tncm91bmRf
Y29sb3I6Ci0gKiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZpZXcKLSAqIEByZ2JhOiAob3V0KTog
YSAjR2RrUkdCQSB0byBmaWxsIGluIHdpdGggdGhlIGJhY2tncm91bmQgY29sb3IKLSAqCi0gKiBH
ZXRzIHRoZSBjb2xvciB0aGF0IGlzIHVzZWQgdG8gZHJhdyB0aGUgQHdlYl92aWV3IGJhY2tncm91
bmQgYmVmb3JlCi0gKiB0aGUgYWN0dWFsIGNvbnRlbnRzIGFyZSByZW5kZXJlZC4KLSAqIEZvciBt
b3JlIGluZm9ybWF0aW9uIHNlZSBhbHNvIHdlYmtpdF93ZWJfdmlld19zZXRfYmFja2dyb3VuZF9j
b2xvcigpCi0gKgotICogU2luY2U6IDIuOAotICovCi12b2lkIHdlYmtpdF93ZWJfdmlld19nZXRf
YmFja2dyb3VuZF9jb2xvcihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBHZGtSR0JBKiByZ2JhKQot
ewotICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpKTsKLSAg
ICBnX3JldHVybl9pZl9mYWlsKHJnYmEpOwotCi0gICAgKnJnYmEgPSBnZXRQYWdlKHdlYlZpZXcp
LmJhY2tncm91bmRDb2xvcigpOwotfQotI2VuZGlmIC8vIFBMQVRGT1JNKEdUSykKLQogLyoKICAq
IHdlYmtpdF93ZWJfdmlld19pc19lZGl0YWJsZToKICAqIEB3ZWJfdmlldzogYSAjV2ViS2l0V2Vi
VmlldwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJWaWV3R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
Vmlld0d0ay5jcHAKaW5kZXggYmM4MjE3OTkxMjguLjc3OTlmYjgxYzczIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdHdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0d0ay5jcHAKQEAg
LTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJXZWJLaXRTY3JpcHREaWFsb2dJbXBsLmgiCiAjaW5j
bHVkZSAiV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViVmll
d1ByaXZhdGUuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9HdGtVdGlsaXRpZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtRGlzcGxheS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1TY3JlZW4uaD4KQEAgLTM1OSwzICszNjAsNjUgQEAg
R3RrV2lkZ2V0KiB3ZWJraXRfd2ViX3ZpZXdfbmV3X3dpdGhfdXNlcl9jb250ZW50X21hbmFnZXIo
V2ViS2l0VXNlckNvbnRlbnRNYW5hZ2UKIAogICAgIHJldHVybiBHVEtfV0lER0VUKGdfb2JqZWN0
X25ldyhXRUJLSVRfVFlQRV9XRUJfVklFVywgInVzZXItY29udGVudC1tYW5hZ2VyIiwgdXNlckNv
bnRlbnRNYW5hZ2VyLCBudWxscHRyKSk7CiB9CisKKy8qKgorICogd2Via2l0X3dlYl92aWV3X3Nl
dF9iYWNrZ3JvdW5kX2NvbG9yOgorICogQHdlYl92aWV3OiBhICNXZWJLaXRXZWJWaWV3CisgKiBA
cmdiYTogYSAjR2RrUkdCQQorICoKKyAqIFNldHMgdGhlIGNvbG9yIHRoYXQgd2lsbCBiZSB1c2Vk
IHRvIGRyYXcgdGhlIEB3ZWJfdmlldyBiYWNrZ3JvdW5kIGJlZm9yZQorICogdGhlIGFjdHVhbCBj
b250ZW50cyBhcmUgcmVuZGVyZWQuIE5vdGUgdGhhdCBpZiB0aGUgd2ViIHBhZ2UgbG9hZGVkIGlu
IEB3ZWJfdmlldworICogc3BlY2lmaWVzIGEgYmFja2dyb3VuZCBjb2xvciwgaXQgd2lsbCB0YWtl
IHByZWNlZGVuY2Ugb3ZlciB0aGUgQHJnYmEgY29sb3IuCisgKiBCeSBkZWZhdWx0IHRoZSBAd2Vi
X3ZpZXcgYmFja2dyb3VuZCBjb2xvciBpcyBvcGFxdWUgd2hpdGUuCisgKiBOb3RlIHRoYXQgdGhl
IHBhcmVudCB3aW5kb3cgbXVzdCBoYXZlIGEgUkdCQSB2aXN1YWwgYW5kCisgKiAjR3RrV2lkZ2V0
OmFwcC1wYWludGFibGUgcHJvcGVydHkgc2V0IHRvICVUUlVFIGZvciBiYWNrZ3JvdW5kcyBjb2xv
cnMgdG8gd29yay4KKyAqCisgKiA8aW5mb3JtYWxleGFtcGxlPjxwcm9ncmFtbGlzdGluZz4KKyAq
IHN0YXRpYyB2b2lkIGJyb3dzZXJfd2luZG93X3NldF9iYWNrZ3JvdW5kX2NvbG9yIChCcm93c2Vy
V2luZG93ICp3aW5kb3csCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR2RrUkdCQSAqcmdiYSkKKyAqIHsKKyAqICAgICBXZWJLaXRXZWJW
aWV3ICp3ZWJfdmlldzsKKyAqICAgICBHZGtTY3JlZW4gKnNjcmVlbiA9IGd0a193aW5kb3dfZ2V0
X3NjcmVlbiAoR1RLX1dJTkRPVyAod2luZG93KSk7CisgKiAgICAgR2RrVmlzdWFsICpyZ2JhX3Zp
c3VhbCA9IGdka19zY3JlZW5fZ2V0X3JnYmFfdmlzdWFsIChzY3JlZW4pOworICoKKyAqICAgICBp
ZiAoIXJnYmFfdmlzdWFsKQorICogICAgICAgICAgcmV0dXJuOworICoKKyAqICAgICBndGtfd2lk
Z2V0X3NldF92aXN1YWwgKEdUS19XSURHRVQgKHdpbmRvdyksIHJnYmFfdmlzdWFsKTsKKyAqICAg
ICBndGtfd2lkZ2V0X3NldF9hcHBfcGFpbnRhYmxlIChHVEtfV0lER0VUICh3aW5kb3cpLCBUUlVF
KTsKKyAqCisgKiAgICAgd2ViX3ZpZXcgPSBicm93c2VyX3dpbmRvd19nZXRfd2ViX3ZpZXcgKHdp
bmRvdyk7CisgKiAgICAgd2Via2l0X3dlYl92aWV3X3NldF9iYWNrZ3JvdW5kX2NvbG9yICh3ZWJf
dmlldywgcmdiYSk7CisgKiB9CisgKiA8L3Byb2dyYW1saXN0aW5nPjwvaW5mb3JtYWxleGFtcGxl
PgorICoKKyAqIFNpbmNlOiAyLjgKKyAqLwordm9pZCB3ZWJraXRfd2ViX3ZpZXdfc2V0X2JhY2tn
cm91bmRfY29sb3IoV2ViS2l0V2ViVmlldyogd2ViVmlldywgY29uc3QgR2RrUkdCQSogcmdiYSkK
K3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSk7Cisg
ICAgZ19yZXR1cm5faWZfZmFpbChyZ2JhKTsKKworICAgIGF1dG8mIHBhZ2UgPSAqd2Via2l0V2Vi
Vmlld0Jhc2VHZXRQYWdlKHJlaW50ZXJwcmV0X2Nhc3Q8V2ViS2l0V2ViVmlld0Jhc2UqPih3ZWJW
aWV3KSk7CisgICAgcGFnZS5zZXRCYWNrZ3JvdW5kQ29sb3IoV2ViQ29yZTo6Q29sb3IoKnJnYmEp
KTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2JhY2tncm91bmRfY29sb3I6Cisg
KiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZpZXcKKyAqIEByZ2JhOiAob3V0KTogYSAjR2RrUkdC
QSB0byBmaWxsIGluIHdpdGggdGhlIGJhY2tncm91bmQgY29sb3IKKyAqCisgKiBHZXRzIHRoZSBj
b2xvciB0aGF0IGlzIHVzZWQgdG8gZHJhdyB0aGUgQHdlYl92aWV3IGJhY2tncm91bmQgYmVmb3Jl
CisgKiB0aGUgYWN0dWFsIGNvbnRlbnRzIGFyZSByZW5kZXJlZC4KKyAqIEZvciBtb3JlIGluZm9y
bWF0aW9uIHNlZSBhbHNvIHdlYmtpdF93ZWJfdmlld19zZXRfYmFja2dyb3VuZF9jb2xvcigpCisg
KgorICogU2luY2U6IDIuOAorICovCit2b2lkIHdlYmtpdF93ZWJfdmlld19nZXRfYmFja2dyb3Vu
ZF9jb2xvcihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBHZGtSR0JBKiByZ2JhKQoreworICAgIGdf
cmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpKTsKKyAgICBnX3JldHVy
bl9pZl9mYWlsKHJnYmEpOworCisgICAgYXV0byYgcGFnZSA9ICp3ZWJraXRXZWJWaWV3QmFzZUdl
dFBhZ2UocmVpbnRlcnByZXRfY2FzdDxXZWJLaXRXZWJWaWV3QmFzZSo+KHdlYlZpZXcpKTsKKyAg
ICAqcmdiYSA9IHBhZ2UuYmFja2dyb3VuZENvbG9yKCkudmFsdWVPcihXZWJDb3JlOjpDb2xvcjo6
d2hpdGUpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9X
ZWJLaXRDb2xvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdENv
bG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYjgxOGY5NWEz
MDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dl
YktpdENvbG9yLmNwcApAQCAtMCwwICsxLDExOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
OSBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAq
CisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor
ICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViS2l0Q29sb3Iu
aCIKKworI2luY2x1ZGUgIldlYktpdENvbG9yUHJpdmF0ZS5oIgorCisvKioKKyAqIFNFQ1RJT046
IFdlYktpdENvbG9yCisgKiBAU2hvcnRfZGVzY3JpcHRpb246IEEgYm94ZWQgdHlwZSByZXByZXNl
bnRpbmcgYSBSR0JBIGNvbG9yCisgKiBAVGl0bGU6IFdlYktpdENvbG9yCisgKiBAU2VlX2Fsc286
ICNXZWJLaXRXZWJWaWV3LgorICoKKyAqIEEgV2ViS2l0Q29sb3IgaXMgYSBib3hlZCB0eXBlIHJl
cHJlc2VudGluZyBhIFJHQkEgY29sb3IuCisgKgorICogU2luY2U6IDIuMjQKKyAqLworCisvKioK
KyAqIHdlYmtpdF9jb2xvcl9jb3B5OgorICogQGNvbG9yOiBhICNXZWJLaXRDb2xvcgorICoKKyAq
IE1ha2UgYSBjb3B5IG9mIEBjb2xvci4KKyAqCisgKiBSZXR1cm5zOiAodHJhbnNmZXIgZnVsbCk6
IEEgY29weSBvZiBwYXNzZWQgaW4gI1dlYktpdENvbG9yLgorICoKKyAqIFNpbmNlOiAyLjI0Cisg
Ki8KK1dlYktpdENvbG9yKiB3ZWJraXRfY29sb3JfY29weShXZWJLaXRDb2xvciogY29sb3IpCit7
CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoY29sb3IsIG51bGxwdHIpOworCisgICAgV2ViS2l0
Q29sb3IqIGNvcHkgPSBzdGF0aWNfY2FzdDxXZWJLaXRDb2xvcio+KGZhc3RaZXJvZWRNYWxsb2Mo
c2l6ZW9mKFdlYktpdENvbG9yKSkpOworICAgIGNvcHktPnJlZCA9IGNvbG9yLT5yZWQ7CisgICAg
Y29weS0+Z3JlZW4gPSBjb2xvci0+Z3JlZW47CisgICAgY29weS0+Ymx1ZSA9IGNvbG9yLT5ibHVl
OworICAgIGNvcHktPmFscGhhID0gY29sb3ItPmFscGhhOworICAgIHJldHVybiBjb3B5OworfQor
CisvKioKKyAqIHdlYmtpdF9jb2xvcl9mcmVlOgorICogQGNvbG9yOiBhICNXZWJLaXRDb2xvcgor
ICoKKyAqIEZyZWUgdGhlICNXZWJLaXRDb2xvci4KKyAqCisgKiBTaW5jZTogMi4yNAorICovCit2
b2lkIHdlYmtpdF9jb2xvcl9mcmVlKFdlYktpdENvbG9yKiBjb2xvcikKK3sKKyAgICBnX3JldHVy
bl9pZl9mYWlsKGNvbG9yKTsKKworICAgIGZhc3RGcmVlKGNvbG9yKTsKK30KKworR19ERUZJTkVf
Qk9YRURfVFlQRShXZWJLaXRDb2xvciwgd2Via2l0X2NvbG9yLCB3ZWJraXRfY29sb3JfY29weSwg
d2Via2l0X2NvbG9yX2ZyZWUpOworCitjb25zdCBXZWJDb3JlOjpDb2xvciB3ZWJraXRDb2xvclRv
V2ViQ29yZUNvbG9yKFdlYktpdENvbG9yKiBjb2xvcikKK3sKKyAgICByZXR1cm4gV2ViQ29yZTo6
Q29sb3Ioc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNvbG9yLT5yZWQpLCBzdGF0aWNfY2FzdDxmbG9hdD4o
Y29sb3ItPmdyZWVuKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNvbG9yLT5ibHVlKSwg
c3RhdGljX2Nhc3Q8ZmxvYXQ+KGNvbG9yLT5hbHBoYSkpOworfQorCit2b2lkIHdlYmtpdENvbG9y
RmlsbEZyb21XZWJDb3JlQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImIHdlYkNvcmVDb2xvciwg
V2ViS2l0Q29sb3IqIGNvbG9yKQoreworICAgIFJFTEVBU0VfQVNTRVJUKHdlYkNvcmVDb2xvci5p
c1ZhbGlkKCkpOworCisgICAgZG91YmxlIHIsIGcsIGIsIGE7CisgICAgd2ViQ29yZUNvbG9yLmdl
dFJHQkEociwgZywgYiwgYSk7CisgICAgY29sb3ItPnJlZCA9IHI7CisgICAgY29sb3ItPmdyZWVu
ID0gZzsKKyAgICBjb2xvci0+Ymx1ZSA9IGI7CisgICAgY29sb3ItPmFscGhhID0gYTsKK30KKwor
LyoqCisgKiB3ZWJraXRfY29sb3JfcGFyc2U6CisgKiBAY29sb3I6IGEgI1dlYktpdENvbG9yIHRv
IGZpbGwgaW4KKyAqIEBjb2xvcl9zdHJpbmc6IGNvbG9yIHJlcHJlc2VudGF0aW9uIGFzIGNvbG9y
IG5pY2tuYW1lIG9yIEhFWCBzdHJpbmcKKyAqCisgKiBDcmVhdGUgYSBuZXcgI1dlYktpdENvbG9y
IGZvciB0aGUgZ2l2ZW4gQGNvbG9yX3N0cmluZworICogcmVwcmVzZW50YXRpb24uIFRoZXJlIGFy
ZSB0d28gdmFsaWQgcmVwcmVzZW50YXRpb24gdHlwZXM6IHN0YW5kYXJkIGNvbG9yCisgKiBuYW1l
cyAoc2VlIGh0dHBzOi8vaHRtbGNvbG9yY29kZXMuY29tL2NvbG9yLW5hbWVzLyBmb3IgaW5zdGFu
Y2UpIG9yIEhFWAorICogdmFsdWVzLgorICoKKyAqIFJldHVybnM6IGEgI2dib29sZWFuIGluZGlj
YXRpbmcgaWYgdGhlIEBjb2xvciB3YXMgY29ycmVjdGx5IGZpbGxlZCBpbiBvciBub3QuCisgKgor
ICogU2luY2U6IDIuMjQKKyAqLworZ2Jvb2xlYW4gd2Via2l0X2NvbG9yX3BhcnNlKFdlYktpdENv
bG9yKiBjb2xvciwgY29uc3QgZ2NoYXIqIGNvbG9yU3RyaW5nKQoreworICAgIGdfcmV0dXJuX3Zh
bF9pZl9mYWlsKGNvbG9yLCBGQUxTRSk7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoY29sb3JT
dHJpbmcsIEZBTFNFKTsKKworICAgIGF1dG8gd2ViQ29yZUNvbG9yID0gV2ViQ29yZTo6Q29sb3Io
Y29sb3JTdHJpbmcpOworICAgIGlmICghd2ViQ29yZUNvbG9yLmlzVmFsaWQoKSkKKyAgICAgICAg
cmV0dXJuIEZBTFNFOworCisgICAgd2Via2l0Q29sb3JGaWxsRnJvbVdlYkNvcmVDb2xvcih3ZWJD
b3JlQ29sb3IsIGNvbG9yKTsKKyAgICByZXR1cm4gVFJVRTsKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0Q29sb3IuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0Q29sb3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMC4uZjI2ZDA5MTYwNjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdENvbG9yLmgKQEAgLTAsMCArMSw2MiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxOSBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisg
KiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgor
ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWYgIWRlZmluZWQoX19XRUJLSVRf
SF9JTlNJREVfXykgJiYgIWRlZmluZWQoV0VCS0lUMl9DT01QSUxBVElPTikKKyNlcnJvciAiT25s
eSA8d3BlL3dlYmtpdC5oPiBjYW4gYmUgaW5jbHVkZWQgZGlyZWN0bHkuIgorI2VuZGlmCisKKyNp
Zm5kZWYgV2ViS2l0Q29sb3JfaAorI2RlZmluZSBXZWJLaXRDb2xvcl9oCisKKyNpbmNsdWRlIDxn
bGliLW9iamVjdC5oPgorI2luY2x1ZGUgPHdwZS9XZWJLaXREZWZpbmVzLmg+CisKK0dfQkVHSU5f
REVDTFMKKworLyoqCisgKiBXZWJLaXRDb2xvcjoKKyAqIEByZWQ6IFJlZCBjaGFubmVsLCBiZXR3
ZWVuIDAuMCBhbmQgMS4wIGluY2x1c2l2ZQorICogQGdyZWVuOiBHcmVlbiBjaGFubmVsLCBiZXR3
ZWVuIDAuMCBhbmQgMS4wIGluY2x1c2l2ZQorICogQGJsdWU6IEJsdWUgY2hhbm5lbCwgYmV0d2Vl
biAwLjAgYW5kIDEuMCBpbmNsdXNpdmUKKyAqIEBhbHBoYTogQWxwaGEgY2hhbm5lbCwgYmV0d2Vl
biAwLjAgYW5kIDEuMCBpbmNsdXNpdmUKKyAqCisgKiBBIFdlYktpdENvbG9yIGlzIGEgYm94ZWQg
dHlwZSByZXByZXNlbnRpbmcgYSBSR0JBIGNvbG9yLgorICoKKyAqIFNpbmNlOiAyLjI0CisgKi8K
K3N0cnVjdCBfV2ViS2l0Q29sb3IgeworICAgIGdkb3VibGUgcmVkOworICAgIGdkb3VibGUgZ3Jl
ZW47CisgICAgZ2RvdWJsZSBibHVlOworICAgIGdkb3VibGUgYWxwaGE7Cit9OworCit0eXBlZGVm
IHN0cnVjdCBfV2ViS2l0Q29sb3IgV2ViS2l0Q29sb3I7CisKKyNkZWZpbmUgV0VCS0lUX1RZUEVf
Q09MT1IgKHdlYmtpdF9jb2xvcl9nZXRfdHlwZSgpKQorCitXRUJLSVRfQVBJIEdUeXBlCit3ZWJr
aXRfY29sb3JfZ2V0X3R5cGUgICAgICh2b2lkKTsKKworV0VCS0lUX0FQSSBnYm9vbGVhbgord2Vi
a2l0X2NvbG9yX3BhcnNlICAgICAgICAoV2ViS2l0Q29sb3IgKmNvbG9yLCBjb25zdCBnY2hhciAq
Y29sb3Jfc3RyaW5nKTsKKworR19FTkRfREVDTFMKKworI2VuZGlmIC8qIFdlYktpdENvbG9yX2gg
Ki8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0Q29s
b3JQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdENvbG9y
UHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4yMzlhMTE2
MDM0MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUv
V2ViS2l0Q29sb3JQcml2YXRlLmgKQEAgLTAsMCArMSwyNiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxOSBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNvbG9yLmgiCisj
aW5jbHVkZSAiV2ViS2l0Q29sb3IuaCIKKwordm9pZCB3ZWJraXRDb2xvckZpbGxGcm9tV2ViQ29y
ZUNvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiwgV2ViS2l0Q29sb3IqKTsKK2NvbnN0IFdlYkNv
cmU6OkNvbG9yIHdlYmtpdENvbG9yVG9XZWJDb3JlQ29sb3IoV2ViS2l0Q29sb3IqKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViVmlldy5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3LmgKaW5kZXggNDEw
MmE3NTI2ZDYuLjJhNGE2MjA0MjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvd3BlL1dlYktpdFdlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvd3BlL1dlYktpdFdlYlZpZXcuaApAQCAtNDksNiArNDksNyBAQAogI2luY2x1ZGUgPHdwZS9X
ZWJLaXRXZWJDb250ZXh0Lmg+CiAjaW5jbHVkZSA8d3BlL1dlYktpdFdlYlJlc291cmNlLmg+CiAj
aW5jbHVkZSA8d3BlL1dlYktpdFdlYlZpZXdCYWNrZW5kLmg+CisjaW5jbHVkZSA8d3BlL1dlYktp
dENvbG9yLmg+CiAjaW5jbHVkZSA8d3BlL1dlYktpdFdlYlZpZXdTZXNzaW9uU3RhdGUuaD4KICNp
bmNsdWRlIDx3cGUvV2ViS2l0V2luZG93UHJvcGVydGllcy5oPgogCkBAIC01MTcsNiArNTE4LDEz
IEBAIFdFQktJVF9BUEkgdm9pZAogd2Via2l0X3dlYl92aWV3X3JlbW92ZV9mcmFtZV9kaXNwbGF5
ZWRfY2FsbGJhY2sgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1
aW50ICAgICAgICAgICAgICAgICAgICAgICAgaWQpOwogCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtp
dF93ZWJfdmlld19zZXRfYmFja2dyb3VuZF9jb2xvciAgICAgICAgICAgICAgICAgKFdlYktpdFdl
YlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRDb2xvciAgICAgICAgICAgICAgICAg
KmNvbG9yKTsKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl92aWV3X2dldF9iYWNrZ3JvdW5k
X2NvbG9yICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJf
dmlldywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFdlYktpdENvbG9yICAgICAgICAgICAgICAgICAqY29sb3IpOworCiBHX0VORF9ERUNMUwog
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2Vi
S2l0V2ViVmlld1dQRS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktp
dFdlYlZpZXdXUEUuY3BwCmluZGV4IGEzNDk1ZTg1MmUxLi45ZTVjZTVjMzg5NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3V1BFLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXdXUEUuY3Bw
CkBAIC0yMCw2ICsyMCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViS2l0
V2ViVmlldy5oIgogCisjaW5jbHVkZSAiV2ViS2l0Q29sb3JQcml2YXRlLmgiCiAjaW5jbHVkZSAi
V2ViS2l0V2ViVmlld1ByaXZhdGUuaCIKIAogZ2Jvb2xlYW4gd2Via2l0V2ViVmlld0F1dGhlbnRp
Y2F0ZShXZWJLaXRXZWJWaWV3KiwgV2ViS2l0QXV0aGVudGljYXRpb25SZXF1ZXN0KikKQEAgLTE3
OCwzICsxNzksNDQgQEAgV2ViS2l0V2ViVmlldyogd2Via2l0X3dlYl92aWV3X25ld193aXRoX3Vz
ZXJfY29udGVudF9tYW5hZ2VyKFdlYktpdFdlYlZpZXdCYWNrZW4KICAgICAgICAgInVzZXItY29u
dGVudC1tYW5hZ2VyIiwgdXNlckNvbnRlbnRNYW5hZ2VyLAogICAgICAgICBudWxscHRyKSk7CiB9
CisKKy8qKgorICogd2Via2l0X3dlYl92aWV3X3NldF9iYWNrZ3JvdW5kX2NvbG9yOgorICogQHdl
Yl92aWV3OiBhICNXZWJLaXRXZWJWaWV3CisgKiBAYmFja2dyb3VuZENvbG9yOiBhICNXZWJLaXRD
b2xvcgorICoKKyAqIFNldHMgdGhlIGNvbG9yIHRoYXQgd2lsbCBiZSB1c2VkIHRvIGRyYXcgdGhl
IEB3ZWJfdmlldyBiYWNrZ3JvdW5kIGJlZm9yZQorICogdGhlIGFjdHVhbCBjb250ZW50cyBhcmUg
cmVuZGVyZWQuIE5vdGUgdGhhdCBpZiB0aGUgd2ViIHBhZ2UgbG9hZGVkIGluIEB3ZWJfdmlldwor
ICogc3BlY2lmaWVzIGEgYmFja2dyb3VuZCBjb2xvciwgaXQgd2lsbCB0YWtlIHByZWNlZGVuY2Ug
b3ZlciB0aGUgYmFja2dyb3VuZCBjb2xvci4KKyAqIEJ5IGRlZmF1bHQgdGhlIEB3ZWJfdmlldyBi
YWNrZ3JvdW5kIGNvbG9yIGlzIG9wYXF1ZSB3aGl0ZS4KKyAqCisgKiBTaW5jZTogMi4yNAorICov
Cit2b2lkIHdlYmtpdF93ZWJfdmlld19zZXRfYmFja2dyb3VuZF9jb2xvcihXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3LCBXZWJLaXRDb2xvciogYmFja2dyb3VuZENvbG9yKQoreworICAgIGdfcmV0dXJu
X2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpKTsKKyAgICBnX3JldHVybl9pZl9m
YWlsKGJhY2tncm91bmRDb2xvcik7CisKKyAgICBhdXRvJiBwYWdlID0gd2Via2l0V2ViVmlld0dl
dFBhZ2Uod2ViVmlldyk7CisgICAgcGFnZS5zZXRCYWNrZ3JvdW5kQ29sb3Iod2Via2l0Q29sb3JU
b1dlYkNvcmVDb2xvcihiYWNrZ3JvdW5kQ29sb3IpKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2Vi
X3ZpZXdfZ2V0X2JhY2tncm91bmRfY29sb3I6CisgKiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZp
ZXcKKyAqIEByZ2JhOiAob3V0KTogYSAjV2ViS2l0Q29sb3IgdG8gZmlsbCBpbiB3aXRoIHRoZSBi
YWNrZ3JvdW5kIGNvbG9yCisgKgorICogR2V0cyB0aGUgY29sb3IgdGhhdCBpcyB1c2VkIHRvIGRy
YXcgdGhlIEB3ZWJfdmlldyBiYWNrZ3JvdW5kIGJlZm9yZSB0aGUKKyAqIGFjdHVhbCBjb250ZW50
cyBhcmUgcmVuZGVyZWQuIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZSBhbHNvCisgKiB3ZWJraXRf
d2ViX3ZpZXdfc2V0X2JhY2tncm91bmRfY29sb3IoKS4KKyAqCisgKiBTaW5jZTogMi4yNAorICov
Cit2b2lkIHdlYmtpdF93ZWJfdmlld19nZXRfYmFja2dyb3VuZF9jb2xvcihXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3LCBXZWJLaXRDb2xvciogY29sb3IpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChX
RUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldykpOworICAgIGF1dG8mIHBhZ2UgPSB3ZWJraXRXZWJW
aWV3R2V0UGFnZSh3ZWJWaWV3KTsKKworICAgIGF1dG8mIHdlYkNvcmVDb2xvciA9IHBhZ2UuYmFj
a2dyb3VuZENvbG9yKCk7CisgICAgd2Via2l0Q29sb3JGaWxsRnJvbVdlYkNvcmVDb2xvcih3ZWJD
b3JlQ29sb3IudmFsdWVPcihXZWJDb3JlOjpDb2xvcjo6d2hpdGUpLCBjb2xvcik7Cit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTAuMS1zZWN0
aW9ucy50eHQgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTAuMS1z
ZWN0aW9ucy50eHQKaW5kZXggNmZjZjYxYWQwZjQuLmU2MmNhZDBiMjAzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTAuMS1zZWN0aW9ucy50eHQK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dwZS0wLjEtc2VjdGlv
bnMudHh0CkBAIC0yMDYsNiArMjA2LDggQEAgd2Via2l0X3dlYl92aWV3X3Jlc3RvcmVfc2Vzc2lv
bl9zdGF0ZQogd2Via2l0X3dlYl92aWV3X2dldF9tYWluX3Jlc291cmNlCiB3ZWJraXRfd2ViX3Zp
ZXdfYWRkX2ZyYW1lX2Rpc3BsYXllZF9jYWxsYmFjawogd2Via2l0X3dlYl92aWV3X3JlbW92ZV9m
cmFtZV9kaXNwbGF5ZWRfY2FsbGJhY2sKK3dlYmtpdF93ZWJfdmlld19nZXRfYmFja2dyb3VuZF9j
b2xvcgord2Via2l0X3dlYl92aWV3X3NldF9iYWNrZ3JvdW5kX2NvbG9yCiAKIDxTVUJTRUNUSU9O
IFdlYktpdEphdmFzY3JpcHRSZXN1bHQ+CiBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0CkBAIC0yNjYs
NiArMjY4LDE2IEBAIHdlYmtpdF93ZWJfdmlld19iYWNrZW5kX25ldwogd2Via2l0X3dlYl92aWV3
X2JhY2tlbmRfZ2V0X3R5cGUKIDwvU0VDVElPTj4KIAorPFNFQ1RJT04+Cis8RklMRT5XZWJLaXRD
b2xvcjwvRklMRT4KK1dFQktJVF9UWVBFX0NPTE9SCitXZWJLaXRDb2xvcgord2Via2l0X2NvbG9y
X3BhcnNlCisKKzxTVUJTRUNUSU9OIFByaXZhdGU+Cit3ZWJraXRfY29sb3JfZ2V0X3R5cGUKKzwv
U0VDVElPTj4KKwogPFNFQ1RJT04+CiA8RklMRT5XZWJLaXRBdXRoZW50aWNhdGlvblJlcXVlc3Q8
L0ZJTEU+CiBXZWJLaXRBdXRoZW50aWNhdGlvblJlcXVlc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGI5MWZhYWY3NDQ5Li5mNmMyNTMwZDJmOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC00MjQsNyArNDI0LDYgQEAg
V2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJv
Y2Vzc1Byb3h5JiBwcm9jZXNzLCB1aW4KICAgICAsIG1fY3B1TGltaXQobV9jb25maWd1cmF0aW9u
LT5jcHVMaW1pdCgpKQogICAgICwgbV9iYWNrRm9yd2FyZExpc3QoV2ViQmFja0ZvcndhcmRMaXN0
OjpjcmVhdGUoKnRoaXMpKQogICAgICwgbV93YWl0c0ZvclBhaW50QWZ0ZXJWaWV3RGlkTW92ZVRv
V2luZG93KG1fY29uZmlndXJhdGlvbi0+d2FpdHNGb3JQYWludEFmdGVyVmlld0RpZE1vdmVUb1dp
bmRvdygpKQotICAgICwgbV9kcmF3c0JhY2tncm91bmQobV9jb25maWd1cmF0aW9uLT5kcmF3c0Jh
Y2tncm91bmQoKSkKICAgICAsIG1fcGFnZUlEKHBhZ2VJRCkKICAgICAsIG1fY29udHJvbGxlZEJ5
QXV0b21hdGlvbihtX2NvbmZpZ3VyYXRpb24tPmlzQ29udHJvbGxlZEJ5QXV0b21hdGlvbigpKQog
I2lmIFBMQVRGT1JNKENPQ09BKQpAQCAtNDQzLDYgKzQ0Miw5IEBAIFdlYlBhZ2VQcm94eTo6V2Vi
UGFnZVByb3h5KFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2Vz
cywgdWluCiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiY29uc3RydWN0
b3I6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lk
ZW50aWZpZXIoKSwgbV9wYWdlSUQpOwogCisgICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24tPmRyYXdz
QmFja2dyb3VuZCgpKQorICAgICAgICBtX2JhY2tncm91bmRDb2xvciA9IENvbG9yKENvbG9yOjp0
cmFuc3BhcmVudCk7CisKICAgICBtX3dlYlByb2Nlc3NMaWZldGltZVRyYWNrZXIuYWRkT2JzZXJ2
ZXIobV92aXNpdGVkTGlua1N0b3JlKTsKICAgICBtX3dlYlByb2Nlc3NMaWZldGltZVRyYWNrZXIu
YWRkT2JzZXJ2ZXIobV93ZWJzaXRlRGF0YVN0b3JlKTsKIApAQCAtMTUzMSwxMyArMTUzMywyMCBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6Y3JlYXRlSW5zcGVjdG9yVGFyZ2V0cygpCiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjpzZXREcmF3c0JhY2tncm91bmQoYm9vbCBkcmF3c0JhY2tncm91bmQpCiB7Ci0g
ICAgaWYgKG1fZHJhd3NCYWNrZ3JvdW5kID09IGRyYXdzQmFja2dyb3VuZCkKLSAgICAgICAgcmV0
dXJuOworICAgIE9wdGlvbmFsPFdlYkNvcmU6OkNvbG9yPiBiYWNrZ3JvdW5kQ29sb3I7CisgICAg
aWYgKCFkcmF3c0JhY2tncm91bmQpCisgICAgICAgIGJhY2tncm91bmRDb2xvciA9IENvbG9yKENv
bG9yOjp0cmFuc3BhcmVudCk7CisgICAgc2V0QmFja2dyb3VuZENvbG9yKGJhY2tncm91bmRDb2xv
cik7Cit9CiAKLSAgICBtX2RyYXdzQmFja2dyb3VuZCA9IGRyYXdzQmFja2dyb3VuZDsKK3ZvaWQg
V2ViUGFnZVByb3h5OjpzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6
Q29sb3I+JiBjb2xvcikKK3sKKyAgICBpZiAobV9iYWNrZ3JvdW5kQ29sb3IgPT0gY29sb3IpCisg
ICAgICAgIHJldHVybjsKIAorICAgIG1fYmFja2dyb3VuZENvbG9yID0gY29sb3I7CiAgICAgaWYg
KGlzVmFsaWQoKSkKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpT
ZXREcmF3c0JhY2tncm91bmQoZHJhd3NCYWNrZ3JvdW5kKSwgbV9wYWdlSUQpOworICAgICAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEJhY2tncm91bmRDb2xvcihjb2xv
ciksIG1fcGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldFRvcENvbnRlbnRJbnNl
dChmbG9hdCBjb250ZW50SW5zZXQpCkBAIC02NzE5LDcgKzY3MjgsNiBAQCBXZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzIFdlYlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJhbWV0ZXJzKFdlYlByb2Nlc3NQ
cm94eSYgcHJvYwogICAgIHBhcmFtZXRlcnMuZHJhd2luZ0FyZWFUeXBlID0gbV9kcmF3aW5nQXJl
YS0+dHlwZSgpOwogICAgIHBhcmFtZXRlcnMuc3RvcmUgPSBwcmVmZXJlbmNlc1N0b3JlKCk7CiAg
ICAgcGFyYW1ldGVycy5wYWdlR3JvdXBEYXRhID0gbV9wYWdlR3JvdXAtPmRhdGEoKTsKLSAgICBw
YXJhbWV0ZXJzLmRyYXdzQmFja2dyb3VuZCA9IG1fZHJhd3NCYWNrZ3JvdW5kOwogICAgIHBhcmFt
ZXRlcnMuaXNFZGl0YWJsZSA9IG1faXNFZGl0YWJsZTsKICAgICBwYXJhbWV0ZXJzLnVuZGVybGF5
Q29sb3IgPSBtX3VuZGVybGF5Q29sb3I7CiAgICAgcGFyYW1ldGVycy51c2VGaXhlZExheW91dCA9
IG1fdXNlRml4ZWRMYXlvdXQ7CkBAIC02ODE3LDYgKzY4MjUsNyBAQCBXZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzIFdlYlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJhbWV0ZXJzKFdlYlByb2Nlc3NQcm94
eSYgcHJvYwogI2VuZGlmCiAKICAgICBwYXJhbWV0ZXJzLm5lZWRzRm9udEF0dHJpYnV0ZXMgPSBt
X25lZWRzRm9udEF0dHJpYnV0ZXM7CisgICAgcGFyYW1ldGVycy5iYWNrZ3JvdW5kQ29sb3IgPSBt
X2JhY2tncm91bmRDb2xvcjsKIAogICAgIHByb2Nlc3MuYWRkV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHkobV91c2VyQ29udGVudENvbnRyb2xsZXIsIHBhcmFtZXRlcnMpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDIyODZiMzVjOWZiLi40MWM2NWYxZDU3
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTUxMiw3ICs1MTIs
NyBAQCBwdWJsaWM6CiAKICAgICBib29sIGNhblNob3dNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1p
bWVUeXBlKTsKIAotICAgIGJvb2wgZHJhd3NCYWNrZ3JvdW5kKCkgY29uc3QgeyByZXR1cm4gbV9k
cmF3c0JhY2tncm91bmQ7IH0KKyAgICBib29sIGRyYXdzQmFja2dyb3VuZCgpIGNvbnN0IHsgcmV0
dXJuICFtX2JhY2tncm91bmRDb2xvciB8fCBtX2JhY2tncm91bmRDb2xvci52YWx1ZSgpLmlzVmlz
aWJsZSgpOyB9CiAgICAgdm9pZCBzZXREcmF3c0JhY2tncm91bmQoYm9vbCk7CiAKICAgICBTdHJp
bmcgY3VycmVudFVSTCgpIGNvbnN0OwpAQCAtNzU1LDEwICs3NTUsMTEgQEAgcHVibGljOgogCiAj
aWYgUExBVEZPUk0oR1RLKQogICAgIFBsYXRmb3JtV2lkZ2V0IHZpZXdXaWRnZXQoKTsKLSAgICBj
b25zdCBXZWJDb3JlOjpDb2xvciYgYmFja2dyb3VuZENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9i
YWNrZ3JvdW5kQ29sb3I7IH0KLSAgICB2b2lkIHNldEJhY2tncm91bmRDb2xvcihjb25zdCBXZWJD
b3JlOjpDb2xvciYgY29sb3IpIHsgbV9iYWNrZ3JvdW5kQ29sb3IgPSBjb2xvcjsgfQogI2VuZGlm
CiAKKyAgICBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpDb2xvcj4mIGJhY2tncm91bmRDb2xvcigp
IGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZENvbG9yOyB9CisgICAgdm9pZCBzZXRCYWNrZ3Jv
dW5kQ29sb3IoY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6Q29sb3I+Jik7CisKICNpZiBQTEFURk9S
TShXSU4pCiAgICAgUGxhdGZvcm1XaWRnZXQgdmlld1dpZGdldCgpOwogI2VuZGlmCkBAIC0yMDgx
LDggKzIwODIsNiBAQCBwcml2YXRlOgogCiAgICAgTGF5ZXJIb3N0aW5nTW9kZSBtX2xheWVySG9z
dGluZ01vZGUgeyBMYXllckhvc3RpbmdNb2RlOjpJblByb2Nlc3MgfTsKIAotICAgIGJvb2wgbV9k
cmF3c0JhY2tncm91bmQgeyB0cnVlIH07Ci0KICAgICBXZWJDb3JlOjpDb2xvciBtX3VuZGVybGF5
Q29sb3I7CiAgICAgV2ViQ29yZTo6Q29sb3IgbV9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3I7
CiAKQEAgLTIxODEsOSArMjE4MCwxMCBAQCBwcml2YXRlOgogCiAjaWYgUExBVEZPUk0oR1RLKQog
ICAgIFN0cmluZyBtX2FjY2Vzc2liaWxpdHlQbHVnSUQ7Ci0gICAgV2ViQ29yZTo6Q29sb3IgbV9i
YWNrZ3JvdW5kQ29sb3IgeyBXZWJDb3JlOjpDb2xvcjo6d2hpdGUgfTsKICNlbmRpZgogCisgICAg
T3B0aW9uYWw8V2ViQ29yZTo6Q29sb3I+IG1fYmFja2dyb3VuZENvbG9yOworCiAgICAgdW5zaWdu
ZWQgbV9wZW5kaW5nTGVhcm5Pcklnbm9yZVdvcmRNZXNzYWdlQ291bnQgeyAwIH07CiAKICAgICBi
b29sIG1fbWFpbkZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyIHsgZmFsc2UgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2NhaXJvL0JhY2tpbmdTdG9yZUNhaXJvLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2NhaXJvL0JhY2tpbmdTdG9yZUNhaXJvLmNwcApp
bmRleCBlMTExYzJiMzk4Ni4uMTgyOTRkMzdmZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2NhaXJvL0JhY2tpbmdTdG9yZUNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9jYWlyby9CYWNraW5nU3RvcmVDYWlyby5jcHAKQEAgLTM3LDEwICszNyw2IEBA
CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWZQdHJDYWlyby5oPgogI2luY2x1ZGUgPGNhaXJvLmg+CiAK
LSNpZiBQTEFURk9STShHVEspCi0jaW5jbHVkZSA8Z3RrL2d0ay5oPgotI2VuZGlmCi0KICNpZiBQ
TEFURk9STShHVEspICYmIFBMQVRGT1JNKFgxMSkgJiYgZGVmaW5lZChHREtfV0lORE9XSU5HX1gx
MSkKICNpbmNsdWRlIDxXZWJDb3JlL0JhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb1gxMS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1EaXNwbGF5WDExLmg+CkBAIC05NywyNCArOTMsNiBAQCB2
b2lkIEJhY2tpbmdTdG9yZTo6aW5jb3Jwb3JhdGVVcGRhdGUoU2hhcmVhYmxlQml0bWFwKiBiaXRt
YXAsIGNvbnN0IFVwZGF0ZUluZm8mCiAgICAgZm9yIChjb25zdCBhdXRvJiB1cGRhdGVSZWN0IDog
dXBkYXRlSW5mby51cGRhdGVSZWN0cykgewogICAgICAgICBJbnRSZWN0IHNyY1JlY3QgPSB1cGRh
dGVSZWN0OwogICAgICAgICBzcmNSZWN0Lm1vdmUoLXVwZGF0ZVJlY3RMb2NhdGlvbi54KCksIC11
cGRhdGVSZWN0TG9jYXRpb24ueSgpKTsKLSNpZiBQTEFURk9STShHVEspCi0gICAgICAgIGlmICgh
bV93ZWJQYWdlUHJveHkuZHJhd3NCYWNrZ3JvdW5kKCkpIHsKLSAgICAgICAgICAgIGNvbnN0IFdl
YkNvcmU6OkNvbG9yIGNvbG9yID0gbV93ZWJQYWdlUHJveHkuYmFja2dyb3VuZENvbG9yKCk7Ci0g
ICAgICAgICAgICBpZiAoY29sb3IuaXNWaXNpYmxlKCkpIHsKLSAgICAgICAgICAgICAgICAvLyBX
aGVuIHRoZSBhcHBsaWNhdGlvbiBzZXRzIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIHRocm91Z2ggbV93
ZWJQYWdlUHJveHkuYmFja2dyb3VuZENvbG9yKCksIHdlIHVwZGF0ZSB0aGUgc3VyZmFjZSBpbiAy
IHN0ZXBzLgotICAgICAgICAgICAgICAgIC8vICAgMS4gRmlsbCB0aGUgc3VyZmFjZSBieSBtX3dl
YlBhZ2VQcm94eS5iYWNrZ3JvdW5kQ29sb3IoKS4KLSAgICAgICAgICAgICAgICAvLyAgIDIuIENv
bXBvc2l0ZSB3ZWJwYWdlJ3MgYml0bWFwIHdoaWNoIGhhcyBhIHRyYW5zcGFyZW50IGJhY2tncm91
bmQuCi0gICAgICAgICAgICAgICAgLy8gSW4gc3RlcCAxLCB3ZSB1c2UgQ29tcG9zaXRlQ29weSBh
cyBtX3dlYlBhZ2VQcm94eS5iYWNrZ3JvdW5kQ29sb3IoKSBtYXkgbm90IGJlIG9wYXF1ZS4KLSAg
ICAgICAgICAgICAgICAvLyBPbiB0aGUgb3RoZXIgaGFuZCwgaW4gc3RlcCAyLCBiaXRtYXAgc2hv
dWxkIGJlIGNvbXBvc2l0ZWQgYnkgQ29tcG9zaXRlU291cmNlT3ZlcgotICAgICAgICAgICAgICAg
IC8vIGJlY2F1c2UgaXQgc2hvdWxkIGJlIGJsZW5kZWQgd2l0aCBtX3dlYlBhZ2VQcm94eS5iYWNr
Z3JvdW5kQ29sb3IoKS4KLSAgICAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuZmlsbFJlY3Qo
c3JjUmVjdCwgY29sb3IpOwotICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRDb21w
b3NpdGVPcGVyYXRpb24oV2ViQ29yZTo6Q29tcG9zaXRlU291cmNlT3Zlcik7Ci0gICAgICAgICAg
ICAgICAgYml0bWFwLT5wYWludChncmFwaGljc0NvbnRleHQsIGRldmljZVNjYWxlRmFjdG9yKCks
IHVwZGF0ZVJlY3QubG9jYXRpb24oKSwgc3JjUmVjdCk7Ci0gICAgICAgICAgICAgICAgZ3JhcGhp
Y3NDb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihXZWJDb3JlOjpDb21wb3NpdGVDb3B5KTsK
LSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotI2Vu
ZGlmCiAgICAgICAgIGJpdG1hcC0+cGFpbnQoZ3JhcGhpY3NDb250ZXh0LCBkZXZpY2VTY2FsZUZh
Y3RvcigpLCB1cGRhdGVSZWN0LmxvY2F0aW9uKCksIHNyY1JlY3QpOwogICAgIH0KIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9y
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3Rv
cmUuY3BwCmluZGV4IGVjZjM0NWY4MGY4Li5lYjYyZDZkNjU0ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUuY3BwCkBA
IC01OSwyNiArNTksNCBAQCBBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZTo6QWNjZWxlcmF0ZWRCYWNr
aW5nU3RvcmUoV2ViUGFnZVByb3h5JiB3ZWJQYWdlKQogewogfQogCi1ib29sIEFjY2VsZXJhdGVk
QmFja2luZ1N0b3JlOjpwYWludChjYWlyb190KiBjciwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3Qp
Ci17Ci0gICAgaWYgKG1fd2ViUGFnZS5kcmF3c0JhY2tncm91bmQoKSkKLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0KLSAgICBjb25zdCBXZWJDb3JlOjpDb2xvciYgY29sb3IgPSBtX3dlYlBhZ2UuYmFj
a2dyb3VuZENvbG9yKCk7Ci0gICAgaWYgKCFjb2xvci5pc09wYXF1ZSgpKSB7Ci0gICAgICAgIGNh
aXJvX3JlY3RhbmdsZShjciwgY2xpcFJlY3QueCgpLCBjbGlwUmVjdC55KCksIGNsaXBSZWN0Lndp
ZHRoKCksIGNsaXBSZWN0LmhlaWdodCgpKTsKLSAgICAgICAgY2Fpcm9fc2V0X29wZXJhdG9yKGNy
LCBDQUlST19PUEVSQVRPUl9DTEVBUik7Ci0gICAgICAgIGNhaXJvX2ZpbGwoY3IpOwotICAgIH0K
LQotICAgIGlmIChjb2xvci5pc1Zpc2libGUoKSkgewotICAgICAgICBzZXRTb3VyY2VSR0JBRnJv
bUNvbG9yKGNyLCBjb2xvcik7Ci0gICAgICAgIGNhaXJvX3NldF9vcGVyYXRvcihjciwgQ0FJUk9f
T1BFUkFUT1JfU09VUkNFKTsKLSAgICAgICAgY2Fpcm9fcmVjdGFuZ2xlKGNyLCBjbGlwUmVjdC54
KCksIGNsaXBSZWN0LnkoKSwgY2xpcFJlY3Qud2lkdGgoKSwgY2xpcFJlY3QuaGVpZ2h0KCkpOwot
ICAgICAgICBjYWlyb19maWxsKGNyKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZS5oCmluZGV4IDNkZTNiNWRmYWY0Li5jOGJhM2Zm
Nzg4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVk
QmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJh
dGVkQmFja2luZ1N0b3JlLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
fkFjY2VsZXJhdGVkQmFja2luZ1N0b3JlKCkgPSBkZWZhdWx0OwogCiAgICAgdmlydHVhbCB2b2lk
IHVwZGF0ZShjb25zdCBMYXllclRyZWVDb250ZXh0JikgeyB9Ci0gICAgdmlydHVhbCBib29sIHBh
aW50KGNhaXJvX3QqLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CisgICAgdmlydHVhbCBib29s
IHBhaW50KGNhaXJvX3QqLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikgPSAwOwogCiBwcm90ZWN0
ZWQ6CiAgICAgQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUoV2ViUGFnZVByb3h5Jik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVX
YXlsYW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tp
bmdTdG9yZVdheWxhbmQuY3BwCmluZGV4IDIxNjM2MmNiMjNmLi5hNzdkYTNhZmU5NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3Jl
V2F5bGFuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVk
QmFja2luZ1N0b3JlV2F5bGFuZC5jcHAKQEAgLTkzLDcgKzkzLDYgQEAgYm9vbCBBY2NlbGVyYXRl
ZEJhY2tpbmdTdG9yZVdheWxhbmQ6OnBhaW50KGNhaXJvX3QqIGNyLCBjb25zdCBJbnRSZWN0JiBj
bGlwUmVjdCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgY2Fpcm9fc2F2ZShjcik7Ci0g
ICAgQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmU6OnBhaW50KGNyLCBjbGlwUmVjdCk7CiAKICNpZiBH
VEtfQ0hFQ0tfVkVSU0lPTigzLCAxNiwgMCkKICAgICBpZiAoY2FuR2RrVXNlR0woKSkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0
b3JlWDExLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tp
bmdTdG9yZVgxMS5jcHAKaW5kZXggMjdkNzJjMWM0N2UuLjgyY2U4YzZiNjVkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTEu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdT
dG9yZVgxMS5jcHAKQEAgLTE4Niw3ICsxODYsNiBAQCBib29sIEFjY2VsZXJhdGVkQmFja2luZ1N0
b3JlWDExOjpwYWludChjYWlyb190KiBjciwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIGNhaXJvX3NhdmUoY3IpOwotICAgIEFjY2VsZXJhdGVk
QmFja2luZ1N0b3JlOjpwYWludChjciwgY2xpcFJlY3QpOwogCiAgICAgLy8gVGhlIHN1cmZhY2Ug
Y2FuIGJlIG1vZGlmaWVkIGJ5IHRoZSB3ZWIgcHJvY2VzcyBhdCBhbnkgdGltZSwgc28gd2UgbWFy
ayBpdAogICAgIC8vIGFzIGRpcnR5IHRvIGVuc3VyZSB3ZSBhbHdheXMgcmVuZGVyIHRoZSB1cGRh
dGVkIGNvbnRlbnRzIGFzIHNvb24gYXMgcG9zc2libGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcAppbmRleCBhYWNiNWI5Y2U2MS4uZTEzZDU4NDI5NjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcApAQCAtMTM5Myw3ICsxMzkzLDYgQEAgdm9pZCBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6dHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFnZSgpCiAgICAgV2ViUGFnZSog
d2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKIAogICAgIGJvb2wgaXNNYWluRnJhbWUgPSBtX2Zy
YW1lLT5pc01haW5GcmFtZSgpOwotICAgIGJvb2wgaXNUcmFuc3BhcmVudCA9ICF3ZWJQYWdlLT5k
cmF3c0JhY2tncm91bmQoKTsKICAgICBib29sIHNob3VsZFVzZUZpeGVkTGF5b3V0ID0gaXNNYWlu
RnJhbWUgJiYgd2ViUGFnZS0+dXNlRml4ZWRMYXlvdXQoKTsKICAgICBib29sIHNob3VsZERpc2Fi
bGVTY3JvbGxpbmcgPSBpc01haW5GcmFtZSAmJiAhd2ViUGFnZS0+bWFpbkZyYW1lSXNTY3JvbGxh
YmxlKCk7CiAgICAgYm9vbCBzaG91bGRIaWRlU2Nyb2xsYmFycyA9IHNob3VsZERpc2FibGVTY3Jv
bGxpbmc7CkBAIC0xNDE4LDcgKzE0MTcsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp0
cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKCkKICAgICBib29sIGhvcml6b250YWxMb2Nr
ID0gc2hvdWxkSGlkZVNjcm9sbGJhcnMgfHwgd2ViUGFnZS0+YWx3YXlzU2hvd3NIb3Jpem9udGFs
U2Nyb2xsZXIoKTsKICAgICBib29sIHZlcnRpY2FsTG9jayA9IHNob3VsZEhpZGVTY3JvbGxiYXJz
IHx8IHdlYlBhZ2UtPmFsd2F5c1Nob3dzVmVydGljYWxTY3JvbGxlcigpOwogCi0gICAgbV9mcmFt
ZS0+Y29yZUZyYW1lKCktPmNyZWF0ZVZpZXcod2ViUGFnZS0+c2l6ZSgpLCBpc1RyYW5zcGFyZW50
LAorICAgIG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5jcmVhdGVWaWV3KHdlYlBhZ2UtPnNpemUoKSwg
d2ViUGFnZS0+YmFja2dyb3VuZENvbG9yKCksCiAgICAgICAgIHdlYlBhZ2UtPmZpeGVkTGF5b3V0
U2l6ZSgpLCBmaXhlZFZpc2libGVDb250ZW50UmVjdCwgc2hvdWxkVXNlRml4ZWRMYXlvdXQsCiAg
ICAgICAgIGhvcml6b250YWxTY3JvbGxiYXJNb2RlLCBob3Jpem9udGFsTG9jaywgdmVydGljYWxT
Y3JvbGxiYXJNb2RlLCB2ZXJ0aWNhbExvY2spOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZERyYXdpbmdBcmVhLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEuY3BwCmluZGV4
IDk5MjA0NjViMTczLi5mMjQ4Nzc2OWM5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3aW5nQXJlYS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3aW5nQXJlYS5jcHAKQEAgLTkz
LDE0ICs5Myw2IEBAIHZvaWQgQWNjZWxlcmF0ZWREcmF3aW5nQXJlYTo6c2Nyb2xsKGNvbnN0IElu
dFJlY3QmIHNjcm9sbFJlY3QsIGNvbnN0IEludFNpemUmIHNjCiAgICAgICAgIG1fbGF5ZXJUcmVl
SG9zdC0+c2Nyb2xsTm9uQ29tcG9zaXRlZENvbnRlbnRzKHNjcm9sbFJlY3QpOwogfQogCi12b2lk
IEFjY2VsZXJhdGVkRHJhd2luZ0FyZWE6OnBhZ2VCYWNrZ3JvdW5kVHJhbnNwYXJlbmN5Q2hhbmdl
ZCgpCi17Ci0gICAgaWYgKG1fbGF5ZXJUcmVlSG9zdCkKLSAgICAgICAgbV9sYXllclRyZWVIb3N0
LT5wYWdlQmFja2dyb3VuZFRyYW5zcGFyZW5jeUNoYW5nZWQoKTsKLSAgICBlbHNlIGlmIChtX3By
ZXZpb3VzTGF5ZXJUcmVlSG9zdCkKLSAgICAgICAgbV9wcmV2aW91c0xheWVyVHJlZUhvc3QtPnBh
Z2VCYWNrZ3JvdW5kVHJhbnNwYXJlbmN5Q2hhbmdlZCgpOwotfQotCiB2b2lkIEFjY2VsZXJhdGVk
RHJhd2luZ0FyZWE6OnNldExheWVyVHJlZVN0YXRlSXNGcm96ZW4oYm9vbCBpc0Zyb3plbikKIHsK
ICAgICBpZiAobV9sYXllclRyZWVTdGF0ZUlzRnJvemVuID09IGlzRnJvemVuKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3aW5nQXJl
YS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3aW5n
QXJlYS5oCmluZGV4IDcwYWJlNDM1OTI1Li5hMGRmNTY4ZjlhYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3aW5nQXJlYS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEu
aApAQCAtNDMsNyArNDMsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBzZXROZWVkc0Rpc3BsYXko
KSBvdmVycmlkZTsKICAgICB2b2lkIHNldE5lZWRzRGlzcGxheUluUmVjdChjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzY3JvbGwoY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYgc2Nyb2xsUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2Nyb2xsRGVsdGEpIG92
ZXJyaWRlOwotICAgIHZvaWQgcGFnZUJhY2tncm91bmRUcmFuc3BhcmVuY3lDaGFuZ2VkKCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBzZXRMYXllclRyZWVTdGF0ZUlzRnJvemVuKGJvb2wpIG92ZXJyaWRl
OwogICAgIGJvb2wgbGF5ZXJUcmVlU3RhdGVJc0Zyb3plbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1fbGF5ZXJUcmVlU3RhdGVJc0Zyb3plbjsgfQogICAgIExheWVyVHJlZUhvc3QqIGxheWVy
VHJlZUhvc3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2xheWVyVHJlZUhvc3QuZ2V0KCk7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0LmNwcAppbmRleCAxNTIwZjUyMGRhYy4uOTNiN2EyZGRlNzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKQEAg
LTIyNCwxMCArMjI0LDYgQEAgdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmRldmljZU9y
UGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCgpCiAgICAgbV93ZWJQYWdlLmNvcmVQYWdlKCktPnBhZ2VP
dmVybGF5Q29udHJvbGxlcigpLmRpZENoYW5nZURldmljZVNjYWxlRmFjdG9yKCk7CiB9CiAKLXZv
aWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpwYWdlQmFja2dyb3VuZFRyYW5zcGFyZW5jeUNo
YW5nZWQoKQotewotfQotCiBHcmFwaGljc0xheWVyRmFjdG9yeSogQ29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0OjpncmFwaGljc0xheWVyRmFjdG9yeSgpCiB7CiAgICAgcmV0dXJuICZtX2Nvb3JkaW5h
dG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRp
bmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0LmgKaW5kZXggMGE4YmVjOGEzOTguLmVhOTc0NTMxNTRjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKQEAgLTU1LDcg
KzU1LDYgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgc2l6ZURpZENoYW5nZShjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJiBuZXdTaXplKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZGV2aWNlT3JQYWdlU2Nh
bGVGYWN0b3JDaGFuZ2VkKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBwYWdlQmFja2dyb3VuZFRyYW5z
cGFyZW5jeUNoYW5nZWQoKSBvdmVycmlkZTsKIAogICAgIHZvaWQgc2V0VmlzaWJsZUNvbnRlbnRz
UmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKTsKICAgICB2b2lkIHJlbmRlck5leHRGcmFt
ZShib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9UaHJl
YWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggODIzYjdmYTJhYzcuLjEwMGZj
NjRhNjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29y
ZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1Ro
cmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcApAQCAtMTg0LDE3ICsxODQsNiBAQCB2
b2lkIFRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpkZXZpY2VPclBhZ2VTY2FsZUZh
Y3RvckNoYW5nZWQoKQogICAgIG1fY29tcG9zaXRvci0+c2V0U2NhbGVGYWN0b3IobV93ZWJQYWdl
LmRldmljZVNjYWxlRmFjdG9yKCkgKiBtX3ZpZXdwb3J0Q29udHJvbGxlci5wYWdlU2NhbGVGYWN0
b3IoKSk7CiB9CiAKLXZvaWQgVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnBhZ2VC
YWNrZ3JvdW5kVHJhbnNwYXJlbmN5Q2hhbmdlZCgpCi17Ci0gICAgaWYgKG1faXNEaXNjYXJkYWJs
ZSkgewotICAgICAgICBtX2Rpc2NhcmRhYmxlU3luY0FjdGlvbnMuYWRkKERpc2NhcmRhYmxlU3lu
Y0FjdGlvbnM6OlVwZGF0ZUJhY2tncm91bmQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpwYWdlQmFja2dyb3VuZFRyYW5zcGFyZW5jeUNo
YW5nZWQoKTsKLSAgICBtX2NvbXBvc2l0b3ItPnNldERyYXdzQmFja2dyb3VuZChtX3dlYlBhZ2Uu
ZHJhd3NCYWNrZ3JvdW5kKCkpOwotfQotCiB2b2lkIFRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0OjpzaXplRGlkQ2hhbmdlKGNvbnN0IEludFNpemUmIHNpemUpCiB7CiAgICAgaWYgKG1f
aXNEaXNjYXJkYWJsZSkgewpAQCAtMjg2LDkgKzI3NSw2IEBAIHZvaWQgVGhyZWFkZWRDb29yZGlu
YXRlZExheWVyVHJlZUhvc3Q6OnNldElzRGlzY2FyZGFibGUoYm9vbCBkaXNjYXJkYWJsZSkKICAg
ICBpZiAobV9kaXNjYXJkYWJsZVN5bmNBY3Rpb25zLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgaWYgKG1fZGlzY2FyZGFibGVTeW5jQWN0aW9ucy5jb250YWlucyhEaXNjYXJkYWJs
ZVN5bmNBY3Rpb25zOjpVcGRhdGVCYWNrZ3JvdW5kKSkKLSAgICAgICAgcGFnZUJhY2tncm91bmRU
cmFuc3BhcmVuY3lDaGFuZ2VkKCk7Ci0KICAgICBpZiAobV9kaXNjYXJkYWJsZVN5bmNBY3Rpb25z
LmNvbnRhaW5zKERpc2NhcmRhYmxlU3luY0FjdGlvbnM6OlVwZGF0ZVNpemUpKSB7CiAgICAgICAg
IC8vIFNpemUgY2hhbmdlcyBhbHJlYWR5IHNldHMgdGhlIHNjYWxlIGZhY3RvciBhbmQgdXBkYXRl
cyB0aGUgdmlld3BvcnQuCiAgICAgICAgIHNpemVEaWRDaGFuZ2UobV93ZWJQYWdlLnNpemUoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRl
ZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0LmgKaW5kZXggYjc4NDY4MTY3OWIuLjIyODc2MTYyZTY5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdC5oCkBAIC01Nyw3ICs1Nyw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBz
Y3JvbGxOb25Db21wb3NpdGVkQ29udGVudHMoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc2Nyb2xs
UmVjdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzaXplRGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6Oklu
dFNpemUmKSBvdmVycmlkZTsKICAgICB2b2lkIGRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdl
ZCgpIG92ZXJyaWRlOwotICAgIHZvaWQgcGFnZUJhY2tncm91bmRUcmFuc3BhcmVuY3lDaGFuZ2Vk
KCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGNvbnRlbnRzU2l6ZUNoYW5nZWQoY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkQ2hhbmdlVmlld3BvcnRBdHRyaWJ1
dGVzKFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyYmKSBvdmVycmlkZTsKQEAgLTE0Myw4ICsx
NDIsNyBAQCBwcml2YXRlOgogICAgIGVudW0gY2xhc3MgRGlzY2FyZGFibGVTeW5jQWN0aW9ucyB7
CiAgICAgICAgIFVwZGF0ZVNpemUgPSAxIDw8IDEsCiAgICAgICAgIFVwZGF0ZVZpZXdwb3J0ID0g
MSA8PCAyLAotICAgICAgICBVcGRhdGVTY2FsZSA9IDEgPDwgMywKLSAgICAgICAgVXBkYXRlQmFj
a2dyb3VuZCA9IDEgPDwgNAorICAgICAgICBVcGRhdGVTY2FsZSA9IDEgPDwgMwogICAgIH07CiAK
ICAgICBDb21wb3NpdG9yQ2xpZW50IG1fY29tcG9zaXRvckNsaWVudDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCmluZGV4IGY5Yzg5MTc0YTRhLi41
Nzg0YTRmMTc5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
RHJhd2luZ0FyZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3
aW5nQXJlYS5oCkBAIC03OSw3ICs3OSw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2Ny
b2xsKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNjcm9sbFJlY3QsIGNvbnN0IFdlYkNvcmU6Oklu
dFNpemUmIHNjcm9sbERlbHRhKSA9IDA7CiAKICAgICAvLyBGSVhNRTogVGhlc2Ugc2hvdWxkIGJl
IHB1cmUgdmlydHVhbC4KLSAgICB2aXJ0dWFsIHZvaWQgcGFnZUJhY2tncm91bmRUcmFuc3BhcmVu
Y3lDaGFuZ2VkKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGZvcmNlUmVwYWludCgpIHsgfQogICAg
IHZpcnR1YWwgYm9vbCBmb3JjZVJlcGFpbnRBc3luYyhDYWxsYmFja0lEKSB7IHJldHVybiBmYWxz
ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRMYXllclRyZWVTdGF0ZUlzRnJvemVuKGJvb2wpIHsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0Fy
ZWFJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVh
SW1wbC5jcHAKaW5kZXggNmE4NmIwMDJiODYuLjA4OWFjMjBiZjg3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5jcHAKQEAgLTQx
MCw4ICs0MTAsNyBAQCB2b2lkIERyYXdpbmdBcmVhSW1wbDo6ZGlzcGxheShVcGRhdGVJbmZvJiB1
cGRhdGVJbmZvKQogICAgIHVwZGF0ZUluZm8udmlld1NpemUgPSBtX3dlYlBhZ2Uuc2l6ZSgpOwog
ICAgIHVwZGF0ZUluZm8uZGV2aWNlU2NhbGVGYWN0b3IgPSBtX3dlYlBhZ2UuY29yZVBhZ2UoKS0+
ZGV2aWNlU2NhbGVGYWN0b3IoKTsKIAotICAgIC8vIEFsd2F5cyByZW5kZXIgdGhlIHdob2xlIHBh
Z2Ugd2hlbiB3ZSBkb24ndCByZW5kZXIgdGhlIGJhY2tncm91bmQuCi0gICAgSW50UmVjdCBib3Vu
ZHMgPSBtX3dlYlBhZ2UuZHJhd3NCYWNrZ3JvdW5kKCkgPyBtX2RpcnR5UmVnaW9uLmJvdW5kcygp
IDogbV93ZWJQYWdlLmJvdW5kcygpOworICAgIEludFJlY3QgYm91bmRzID0gbV9kaXJ0eVJlZ2lv
bi5ib3VuZHMoKTsKICAgICBBU1NFUlQobV93ZWJQYWdlLmJvdW5kcygpLmNvbnRhaW5zKGJvdW5k
cykpOwogCiAgICAgSW50U2l6ZSBiaXRtYXBTaXplID0gYm91bmRzLnNpemUoKTsKQEAgLTQyNCwx
NiArNDIzLDExIEBAIHZvaWQgRHJhd2luZ0FyZWFJbXBsOjpkaXNwbGF5KFVwZGF0ZUluZm8mIHVw
ZGF0ZUluZm8pCiAgICAgaWYgKCFiaXRtYXAtPmNyZWF0ZUhhbmRsZSh1cGRhdGVJbmZvLmJpdG1h
cEhhbmRsZSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFZlY3RvcjxJbnRSZWN0PiByZWN0czsK
LSAgICBpZiAobV93ZWJQYWdlLmRyYXdzQmFja2dyb3VuZCgpKSB7Ci0gICAgICAgIHJlY3RzID0g
bV9kaXJ0eVJlZ2lvbi5yZWN0cygpOwotCi0gICAgICAgIGlmIChzaG91bGRQYWludEJvdW5kc1Jl
Y3QoYm91bmRzLCByZWN0cykpIHsKLSAgICAgICAgICAgIHJlY3RzLmNsZWFyKCk7Ci0gICAgICAg
ICAgICByZWN0cy5hcHBlbmQoYm91bmRzKTsKLSAgICAgICAgfQotICAgIH0gZWxzZQorICAgIFZl
Y3RvcjxJbnRSZWN0PiByZWN0cyA9IG1fZGlydHlSZWdpb24ucmVjdHMoKTsKKyAgICBpZiAoc2hv
dWxkUGFpbnRCb3VuZHNSZWN0KGJvdW5kcywgcmVjdHMpKSB7CisgICAgICAgIHJlY3RzLmNsZWFy
KCk7CiAgICAgICAgIHJlY3RzLmFwcGVuZChib3VuZHMpOworICAgIH0KIAogICAgIHVwZGF0ZUlu
Zm8uc2Nyb2xsUmVjdCA9IG1fc2Nyb2xsUmVjdDsKICAgICB1cGRhdGVJbmZvLnNjcm9sbE9mZnNl
dCA9IG1fc2Nyb2xsT2Zmc2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvTGF5ZXJUcmVlSG9zdC5oCmluZGV4IDg1ZGQ0NThlMDE4Li41M2MzOTgyOTllNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvTGF5ZXJUcmVlSG9zdC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJlZUhvc3QuaApAQCAt
NzQsNyArNzQsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGZvcmNlUmVwYWludCgpID0g
MDsKICAgICB2aXJ0dWFsIGJvb2wgZm9yY2VSZXBhaW50QXN5bmMoQ2FsbGJhY2tJRCkgeyByZXR1
cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2l6ZURpZENoYW5nZShjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJiBuZXdTaXplKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHBhZ2VCYWNrZ3JvdW5k
VHJhbnNwYXJlbmN5Q2hhbmdlZCgpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBwYXVzZVJlbmRl
cmluZygpOwogICAgIHZpcnR1YWwgdm9pZCByZXN1bWVSZW5kZXJpbmcoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggZGQ5N2Q2ZWIwN2EuLjBk
ZjdiN2U3YjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcApAQCAtNTE0LDggKzUxNCw2IEBAIFdlYlBhZ2U6OldlYlBhZ2UodWludDY0X3QgcGFnZUlE
LCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKIAogICAgIHNldFVzZUZp
eGVkTGF5b3V0KHBhcmFtZXRlcnMudXNlRml4ZWRMYXlvdXQpOwogCi0gICAgc2V0RHJhd3NCYWNr
Z3JvdW5kKHBhcmFtZXRlcnMuZHJhd3NCYWNrZ3JvdW5kKTsKLQogICAgIHNldFVuZGVybGF5Q29s
b3IocGFyYW1ldGVycy51bmRlcmxheUNvbG9yKTsKIAogICAgIHNldFBhZ2luYXRpb25Nb2RlKHBh
cmFtZXRlcnMucGFnaW5hdGlvbk1vZGUpOwpAQCAtNjM5LDYgKzYzNyw4IEBAIFdlYlBhZ2U6Oldl
YlBhZ2UodWludDY0X3QgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1l
dGVycykKICNpZiBVU0UoQVVESU9fU0VTU0lPTikKICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1h
bmFnZXI6OnNldFNob3VsZERlYWN0aXZhdGVBdWRpb1Nlc3Npb24odHJ1ZSk7CiAjZW5kaWYKKwor
ICAgIHNldEJhY2tncm91bmRDb2xvcihwYXJhbWV0ZXJzLmJhY2tncm91bmRDb2xvcik7CiB9CiAK
ICNpZiBFTkFCTEUoV0VCX1JUQykKQEAgLTI4NzcsMTkgKzI4NzcsMTYgQEAgdm9pZCBXZWJQYWdl
OjpzZXRJbmRpY2F0aW5nKGJvb2wgaW5kaWNhdGluZykKIH0KICNlbmRpZgogCi12b2lkIFdlYlBh
Z2U6OnNldERyYXdzQmFja2dyb3VuZChib29sIGRyYXdzQmFja2dyb3VuZCkKK3ZvaWQgV2ViUGFn
ZTo6c2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkNvbG9yPiYgYmFj
a2dyb3VuZENvbG9yKQogewotICAgIGlmIChtX2RyYXdzQmFja2dyb3VuZCA9PSBkcmF3c0JhY2tn
cm91bmQpCisgICAgaWYgKG1fYmFja2dyb3VuZENvbG9yID09IGJhY2tncm91bmRDb2xvcikKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgbV9kcmF3c0JhY2tncm91bmQgPSBkcmF3c0JhY2tncm91bmQ7
CisgICAgbV9iYWNrZ3JvdW5kQ29sb3IgPSBiYWNrZ3JvdW5kQ29sb3I7CiAKLSAgICBpZiAoRnJh
bWVWaWV3KiBmcmFtZVZpZXcgPSBtYWluRnJhbWVWaWV3KCkpIHsKLSAgICAgICAgYm9vbCBpc1Ry
YW5zcGFyZW50ID0gIWRyYXdzQmFja2dyb3VuZDsKLSAgICAgICAgZnJhbWVWaWV3LT51cGRhdGVC
YWNrZ3JvdW5kUmVjdXJzaXZlbHkoaXNUcmFuc3BhcmVudCk7Ci0gICAgfQorICAgIGlmIChGcmFt
ZVZpZXcqIGZyYW1lVmlldyA9IG1haW5GcmFtZVZpZXcoKSkKKyAgICAgICAgZnJhbWVWaWV3LT51
cGRhdGVCYWNrZ3JvdW5kUmVjdXJzaXZlbHkoYmFja2dyb3VuZENvbG9yKTsKIAotICAgIG1fZHJh
d2luZ0FyZWEtPnBhZ2VCYWNrZ3JvdW5kVHJhbnNwYXJlbmN5Q2hhbmdlZCgpOwogICAgIG1fZHJh
d2luZ0FyZWEtPnNldE5lZWRzRGlzcGxheSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggZjNiOTM0ZTI3ZGEuLmFmZTAxZTI3YjI3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC01MDAsOCArNTAw
LDYgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgcG9zdEluamVjdGVkQnVuZGxlTWVzc2FnZShj
b25zdCBTdHJpbmcmIG1lc3NhZ2VOYW1lLCBjb25zdCBVc2VyRGF0YSYpOwogCi0gICAgYm9vbCBk
cmF3c0JhY2tncm91bmQoKSBjb25zdCB7IHJldHVybiBtX2RyYXdzQmFja2dyb3VuZDsgfQotCiAg
ICAgdm9pZCBzZXRVbmRlcmxheUNvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvcikgeyBt
X3VuZGVybGF5Q29sb3IgPSBjb2xvcjsgfQogICAgIFdlYkNvcmU6OkNvbG9yIHVuZGVybGF5Q29s
b3IoKSBjb25zdCB7IHJldHVybiBtX3VuZGVybGF5Q29sb3I7IH0KIApAQCAtMTEzNyw2ICsxMTM1
LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBkaWRSZWNlaXZlV2ViUGFnZU1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CiAKKyAgICBjb25zdCBPcHRpb25hbDxXZWJDb3Jl
OjpDb2xvcj4mIGJhY2tncm91bmRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZENv
bG9yOyB9CisKIHByaXZhdGU6CiAgICAgV2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIFdlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMmJik7CiAKQEAgLTEyNjMsNyArMTI2Myw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBzZXRJbmRpY2F0aW5nKGJvb2wpOwogI2VuZGlmCiAKLSAgICB2b2lkIHNldERyYXdz
QmFja2dyb3VuZChib29sKTsKKyAgICB2b2lkIHNldEJhY2tncm91bmRDb2xvcihjb25zdCBPcHRp
b25hbDxXZWJDb3JlOjpDb2xvcj4mKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQg
c2V0VG9wQ29udGVudEluc2V0RmVuY2VkKGZsb2F0LCBJUEM6OkF0dGFjaG1lbnQpOwpAQCAtMTc0
NSw3ICsxNzQ1LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNTdXNwZW5kZWRVbmRlckxvY2sg
eyBmYWxzZSB9OwogCiAgICAgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFz
aD4gbV9taW1lVHlwZXNXaXRoQ3VzdG9tQ29udGVudFByb3ZpZGVyczsKLSAgICBXZWJDb3JlOjpD
b2xvciBtX2JhY2tncm91bmRDb2xvciB7IFdlYkNvcmU6OkNvbG9yOjp3aGl0ZSB9OworICAgIE9w
dGlvbmFsPFdlYkNvcmU6OkNvbG9yPiBtX2JhY2tncm91bmRDb2xvciB7IFdlYkNvcmU6OkNvbG9y
Ojp3aGl0ZSB9OwogCiAgICAgSGFzaFNldDx1bnNpZ25lZD4gbV9hY3RpdmVSZW5kZXJpbmdTdXBw
cmVzc2lvblRva2VuczsKICAgICB1bnNpZ25lZCBtX21heGltdW1SZW5kZXJpbmdTdXBwcmVzc2lv
blRva2VuIHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggNTRhYmJhZjg5MzQuLjg3YzQ1YTM1NDM4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW4KQEAgLTI1LDcgKzI1LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZl
ciB7CiAgICAgU2V0QWN0aXZpdHlTdGF0ZShPcHRpb25TZXQ8V2ViQ29yZTo6QWN0aXZpdHlTdGF0
ZTo6RmxhZz4gYWN0aXZpdHlTdGF0ZSwgV2ViS2l0OjpBY3Rpdml0eVN0YXRlQ2hhbmdlSUQgYWN0
aXZpdHlTdGF0ZUNoYW5nZUlELCBWZWN0b3I8V2ViS2l0OjpDYWxsYmFja0lEPiBjYWxsYmFja0lE
cykKICAgICBTZXRMYXllckhvc3RpbmdNb2RlKGVudW06dWludDhfdCBXZWJLaXQ6OkxheWVySG9z
dGluZ01vZGUgbGF5ZXJIb3N0aW5nTW9kZSkKIAotICAgIFNldERyYXdzQmFja2dyb3VuZChib29s
IGRyYXdzQmFja2dyb3VuZCkKKyAgICBTZXRCYWNrZ3JvdW5kQ29sb3IoT3B0aW9uYWw8V2ViQ29y
ZTo6Q29sb3I+IGNvbG9yKQogCiAgICAgQWRkQ29uc29sZU1lc3NhZ2UodWludDY0X3QgZnJhbWVJ
RCwgZW51bTp1aW50OF90IEpTQzo6TWVzc2FnZVNvdXJjZSBtZXNzYWdlU291cmNlLCBlbnVtOnVp
bnQ4X3QgSlNDOjpNZXNzYWdlTGV2ZWwgbWVzc2FnZUxldmVsLCBTdHJpbmcgbWVzc2FnZSwgdWlu
dDY0X3QgcmVxdWVzdElEKQogICAgIFNlbmRDU1BWaW9sYXRpb25SZXBvcnQodWludDY0X3QgZnJh
bWVJRCwgVVJMIHJlcG9ydFVSTCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSByZXBvcnREYXRhKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDNhY2I2N2Y1YzM2Li5lZDM2ZWQyMWFjOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE5LTAxLTE4
ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbV1BF
XSBBZGQgQVBJIGZvciB3ZWJ2aWV3IGJhY2tncm91bmQgY29sb3IgY29uZmlndXJhdGlvbgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyMzA1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNs
aWVudDo6dHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFnZSk6IENyZWF0ZQorICAgICAgICBG
cmFtZVZpZXcgd2l0aCBiYWNrZ3JvdW5kIGNvbG9yLgorCiAyMDE5LTAxLTE3ICBQZXIgQXJuZSBW
b2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2luXVtIaWdoRFBJXSBSZXBh
aW50IGdsaXRjaGVzIHdoZW4gc2Nyb2xsaW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
CmluZGV4IGVlODE5OGE4ODI3Li5kYTZhNTc2YjZiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcApAQCAtOTg0LDEwICs5ODQsMTIgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6
dHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFnZSgpCiAKICAgICBSRUNUIHBpeGVsUmVjdDsK
ICAgICB2aWV3LT5mcmFtZVJlY3QoJnBpeGVsUmVjdCk7Ci0gICAgYm9vbCB0cmFuc3BhcmVudCA9
IHZpZXctPnRyYW5zcGFyZW50KCk7CisgICAgT3B0aW9uYWw8Q29sb3I+IGJhY2tncm91bmRDb2xv
cjsKKyAgICBpZiAodmlldy0+dHJhbnNwYXJlbnQoKSkKKyAgICAgICAgYmFja2dyb3VuZENvbG9y
ID0gQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50KTsKICAgICBGbG9hdFJlY3QgbG9naWNhbEZyYW1l
KHBpeGVsUmVjdCk7CiAgICAgbG9naWNhbEZyYW1lLnNjYWxlKDEuMGYgLyB2aWV3LT5kZXZpY2VT
Y2FsZUZhY3RvcigpKTsKLSAgICBjb3JlKG1fd2ViRnJhbWUpLT5jcmVhdGVWaWV3KGVuY2xvc2lu
Z0ludFJlY3QobG9naWNhbEZyYW1lKS5zaXplKCksIHRyYW5zcGFyZW50LCAvKiBmaXhlZExheW91
dFNpemUgKi8geyB9LCAvKiBmaXhlZFZpc2libGVDb250ZW50UmVjdCAqLyB7IH0pOworICAgIGNv
cmUobV93ZWJGcmFtZSktPmNyZWF0ZVZpZXcoZW5jbG9zaW5nSW50UmVjdChsb2dpY2FsRnJhbWUp
LnNpemUoKSwgYmFja2dyb3VuZENvbG9yLCAvKiBmaXhlZExheW91dFNpemUgKi8geyB9LCAvKiBm
aXhlZFZpc2libGVDb250ZW50UmVjdCAqLyB7IH0pOwogfQogCiB2b2lkIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpkaWRTYXZlVG9QYWdlQ2FjaGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUu
Y3BwCmluZGV4IDA0YjZmZWEzY2I0Li40YWQzMTY2MDE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkZyYW1lLmNwcApAQCAtMjA4OSw3ICsyMDg5LDEwIEBAIHZvaWQgV2ViRnJhbWU6OnVwZGF0
ZUJhY2tncm91bmQoKQogICAgIGlmICghY29yZUZyYW1lIHx8ICFjb3JlRnJhbWUtPnZpZXcoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgY29yZUZyYW1lLT52aWV3KCktPnVwZGF0ZUJhY2tncm91
bmRSZWN1cnNpdmVseSh3ZWJWaWV3KCktPnRyYW5zcGFyZW50KCkpOworICAgIE9wdGlvbmFsPENv
bG9yPiBiYWNrZ3JvdW5kQ29sb3I7CisgICAgaWYgKHdlYlZpZXcoKS0+dHJhbnNwYXJlbnQoKSkK
KyAgICAgICAgYmFja2dyb3VuZENvbG9yID0gQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50KTsKKyAg
ICBjb3JlRnJhbWUtPnZpZXcoKS0+dXBkYXRlQmFja2dyb3VuZFJlY3Vyc2l2ZWx5KGJhY2tncm91
bmRDb2xvcik7CiB9CiAKIC8vIElXZWJGcmFtZTIKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxv
ZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA1YWUzMDg2NTJiZi4uYjQyMGFjNTRkZGMgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NyBAQAorMjAxOS0wMS0xOCAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+
CisKKyAgICAgICAgW1dQRV0gQWRkIEFQSSBmb3Igd2VidmlldyBiYWNrZ3JvdW5kIGNvbG9yIGNv
bmZpZ3VyYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5MjMwNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogTWluaUJyb3dzZXIvd3BlL21haW4uY3BwOgorICAgICAgICAobWFpbik6IEFkZCBhIG5l
dyBvcHRpb24gdG8gY29uZmlndXJlIHRoZSB3ZWJ2aWV3IGJhY2tncm91bmQKKyAgICAgICAgY29s
b3IuIEV4YW1wbGU6IC0tYmctY29sb3I9dHJhbnNwYXJlbnQuCisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKHRl
c3RXZWJWaWV3QmFja2dyb3VuZENvbG9yKTogRW5hYmxlIGJhY2tncm91bmQgY29sb3IgQVBJIHRl
c3RzIGZvciBXUEUuCisgICAgICAgIChiZWZvcmVBbGwpOiBEaXR0by4KKwogMjAxOS0wMS0xNiAg
Q2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dU
S11bV1BFXSBBZGQgd2ViIGV4dGVuc2lvbnMgQVBJIHRvIHdoaXRlbGlzdCBhY2Nlc3MgdG8gYSBz
ZWN1cml0eSBvcmlnaW4KZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3dwZS9tYWluLmNw
cCBiL1Rvb2xzL01pbmlCcm93c2VyL3dwZS9tYWluLmNwcAppbmRleCA2MmNmNTVkYjMxMS4uMmQ1
MWVjYzE2YzMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL3dwZS9tYWluLmNwcAorKysg
Yi9Ub29scy9NaW5pQnJvd3Nlci93cGUvbWFpbi5jcHAKQEAgLTQyLDYgKzQyLDcgQEAgc3RhdGlj
IGdib29sZWFuIGlnbm9yZVRMU0Vycm9yczsKIHN0YXRpYyBjb25zdCBjaGFyKiBjb29raWVzRmls
ZTsKIHN0YXRpYyBjb25zdCBjaGFyKiBjb29raWVzUG9saWN5Owogc3RhdGljIGNvbnN0IGNoYXIq
IHByb3h5OworY29uc3QgY2hhciogYmdDb2xvcjsKIAogc3RhdGljIGNvbnN0IEdPcHRpb25FbnRy
eSBjb21tYW5kTGluZU9wdGlvbnNbXSA9CiB7CkBAIC01Myw2ICs1NCw3IEBAIHN0YXRpYyBjb25z
dCBHT3B0aW9uRW50cnkgY29tbWFuZExpbmVPcHRpb25zW10gPQogICAgIHsgInByb3h5IiwgMCwg
MCwgR19PUFRJT05fQVJHX1NUUklORywgJnByb3h5LCAiU2V0IHByb3h5IiwgIlBST1hZIiB9LAog
ICAgIHsgImlnbm9yZS1ob3N0IiwgMCwgMCwgR19PUFRJT05fQVJHX1NUUklOR19BUlJBWSwgJmln
bm9yZUhvc3RzLCAiU2V0IHByb3h5IGlnbm9yZSBob3N0cyIsICJIT1NUUyIgfSwKICAgICB7ICJp
Z25vcmUtdGxzLWVycm9ycyIsIDAsIDAsIEdfT1BUSU9OX0FSR19OT05FLCAmaWdub3JlVExTRXJy
b3JzLCAiSWdub3JlIFRMUyBlcnJvcnMiLCBudWxscHRyIH0sCisgICAgeyAiYmctY29sb3IiLCAw
LCAwLCBHX09QVElPTl9BUkdfU1RSSU5HLCAmYmdDb2xvciwgIldpbmRvdyBiYWNrZ3JvdW5kIGNv
bG9yLiBEZWZhdWx0OiB3aGl0ZSIsICJDT0xPUiIgfSwKICAgICB7IEdfT1BUSU9OX1JFTUFJTklO
RywgMCwgMCwgR19PUFRJT05fQVJHX0ZJTEVOQU1FX0FSUkFZLCAmdXJpQXJndW1lbnRzLCBudWxs
cHRyLCAiW1VSTF0iIH0sCiAgICAgeyBudWxscHRyLCAwLCAwLCBHX09QVElPTl9BUkdfTk9ORSwg
bnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciB9CiB9OwpAQCAtMTk0LDYgKzE5NiwxMCBAQCBpbnQg
bWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogICAgIGlmIChpZ25vcmVUTFNFcnJvcnMpCiAg
ICAgICAgIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfdGxzX2Vycm9yc19wb2xpY3kod2ViQ29udGV4
dCwgV0VCS0lUX1RMU19FUlJPUlNfUE9MSUNZX0lHTk9SRSk7CiAKKyAgICBXZWJLaXRDb2xvciBj
b2xvcjsKKyAgICBpZiAoYmdDb2xvciAmJiB3ZWJraXRfY29sb3JfcGFyc2UoJmNvbG9yLCBiZ0Nv
bG9yKSkKKyAgICAgICAgd2Via2l0X3dlYl92aWV3X3NldF9iYWNrZ3JvdW5kX2NvbG9yKHdlYlZp
ZXcsICZjb2xvcik7CisKICAgICBpZiAodXJpQXJndW1lbnRzKQogICAgICAgICB3ZWJraXRfd2Vi
X3ZpZXdfbG9hZF91cmkod2ViVmlldywgdXJpQXJndW1lbnRzWzBdKTsKICAgICBlbHNlIGlmICgh
YXV0b21hdGlvbk1vZGUpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdEdMaWIvVGVzdFdlYktpdFdlYlZpZXcuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcAppbmRleCA1NGYxOTdiODgzMy4uZDA1
MzFiNDlmMGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xp
Yi9UZXN0V2ViS2l0V2ViVmlldy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcApAQCAtMTEzMywxMSArMTEzMywxNiBAQCBz
dGF0aWMgdm9pZCB0ZXN0V2ViVmlld0lzUGxheWluZ0F1ZGlvKElzUGxheWluZ0F1ZGlvV2ViVmll
d1Rlc3QqIHRlc3QsIGdjb25zdHBvaQogICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF93ZWJfdmll
d19pc19wbGF5aW5nX2F1ZGlvKHRlc3QtPm1fd2ViVmlldykpOwogfQogCi0jaWYgUExBVEZPUk0o
R1RLKQogc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdCYWNrZ3JvdW5kQ29sb3IoV2ViVmlld1Rlc3Qq
IHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7CisjaWYgUExBVEZPUk0oR1RLKQorI2RlZmluZSBDb2xv
clR5cGUgR2RrUkdCQQorI2VsaWYgUExBVEZPUk0oV1BFKQorI2RlZmluZSBDb2xvclR5cGUgV2Vi
S2l0Q29sb3IKKyNlbmRpZgorCiAgICAgLy8gV2hpdGUgaXMgdGhlIGRlZmF1bHQgYmFja2dyb3Vu
ZC4KLSAgICBHZGtSR0JBIHJnYmE7CisgICAgQ29sb3JUeXBlIHJnYmE7CiAgICAgd2Via2l0X3dl
Yl92aWV3X2dldF9iYWNrZ3JvdW5kX2NvbG9yKHRlc3QtPm1fd2ViVmlldywgJnJnYmEpOwogICAg
IGdfYXNzZXJ0X2NtcGZsb2F0KHJnYmEucmVkLCA9PSwgMSk7CiAgICAgZ19hc3NlcnRfY21wZmxv
YXQocmdiYS5ncmVlbiwgPT0sIDEpOwpAQCAtMTE1NSwxMCArMTE2MCwyMyBAQCBzdGF0aWMgdm9p
ZCB0ZXN0V2ViVmlld0JhY2tncm91bmRDb2xvcihXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9p
bnRlcikKICAgICBnX2Fzc2VydF9jbXBmbG9hdChyZ2JhLmJsdWUsID09LCAwKTsKICAgICBnX2Fz
c2VydF9jbXBmbG9hdChyZ2JhLmFscGhhLCA9PSwgMC41KTsKIAorI2lmIFBMQVRGT1JNKFdQRSkK
KyAgICBDb2xvclR5cGUgY29sb3I7CisgICAgZ19hc3NlcnQod2Via2l0X2NvbG9yX3BhcnNlKCZj
b2xvciwgInJlZCIpKTsKKyAgICBnX2Fzc2VydF9jbXBmbG9hdChjb2xvci5yZWQsID09LCAxKTsK
KyAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0X2JhY2tncm91bmRfY29sb3IodGVzdC0+bV93ZWJWaWV3
LCAmY29sb3IpOworICAgIHdlYmtpdF93ZWJfdmlld19nZXRfYmFja2dyb3VuZF9jb2xvcih0ZXN0
LT5tX3dlYlZpZXcsICZyZ2JhKTsKKyAgICBnX2Fzc2VydF9jbXBmbG9hdChyZ2JhLnJlZCwgPT0s
IDEpOworICAgIGdfYXNzZXJ0X2NtcGZsb2F0KHJnYmEuZ3JlZW4sID09LCAwKTsKKyAgICBnX2Fz
c2VydF9jbXBmbG9hdChyZ2JhLmJsdWUsID09LCAwKTsKKyAgICBnX2Fzc2VydF9jbXBmbG9hdChy
Z2JhLmFscGhhLCA9PSwgMSk7CisjZW5kaWYKKwogICAgIC8vIFRoZSBhY3R1YWwgcmVuZGVyaW5n
IGNhbid0IGJlIHRlc3RlZCB1c2luZyB1bml0IHRlc3RzLCB1c2UKICAgICAvLyBNaW5pQnJvd3Nl
ciAtLWJnLWNvbG9yPSI8Y29sb3ItdmFsdWU+IiBmb3IgbWFudWFsbHkgdGVzdGluZyB0aGlzIEFQ
SS4KIH0KIAorI2lmIFBMQVRGT1JNKEdUSykKIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3UHJlZmVy
cmVkU2l6ZShXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKICAgICB0ZXN0LT5s
b2FkSHRtbCgiPGh0bWwgc3R5bGU9J3dpZHRoOiAzMjVweDsgaGVpZ2h0OiA2MTVweCc+PC9odG1s
PiIsIG51bGxwdHIpOwpAQCAtMTM2Myw4ICsxMzgxLDggQEAgdm9pZCBiZWZvcmVBbGwoKQogICAg
IE5vdGlmaWNhdGlvbldlYlZpZXdUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAibm90aWZpY2F0
aW9uLWluaXRpYWwtcGVybWlzc2lvbi1kaXNhbGxvd2VkIiwgdGVzdFdlYlZpZXdOb3RpZmljYXRp
b25Jbml0aWFsUGVybWlzc2lvbkRpc2FsbG93ZWQpOwogI2VuZGlmCiAgICAgSXNQbGF5aW5nQXVk
aW9XZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgImlzLXBsYXlpbmctYXVkaW8iLCB0
ZXN0V2ViVmlld0lzUGxheWluZ0F1ZGlvKTsKLSNpZiBQTEFURk9STShHVEspCiAgICAgV2ViVmll
d1Rlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJiYWNrZ3JvdW5kLWNvbG9yIiwgdGVzdFdlYlZp
ZXdCYWNrZ3JvdW5kQ29sb3IpOworI2lmIFBMQVRGT1JNKEdUSykKICAgICBXZWJWaWV3VGVzdDo6
YWRkKCJXZWJLaXRXZWJWaWV3IiwgInByZWZlcnJlZC1zaXplIiwgdGVzdFdlYlZpZXdQcmVmZXJy
ZWRTaXplKTsKICNlbmRpZgogICAgIFdlYlZpZXdUaXRsZVRlc3Q6OmFkZCgiV2ViS2l0V2ViVmll
dyIsICJ0aXRsZS1jaGFuZ2UiLCB0ZXN0V2ViVmlld1RpdGxlQ2hhbmdlKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>360849</attachid>
            <date>2019-02-01 01:30:33 -0800</date>
            <delta_ts>2019-02-04 02:42:05 -0800</delta_ts>
            <desc>Rebased patch</desc>
            <filename>wk2-wpe-bg-color.diff</filename>
            <type>text/plain</type>
            <size>70122</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBmYTAzNDFmZGQzMy4uN2JiZGY4MjhjNTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMyBAQAorMjAxOS0wMS0xOCAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxp
YS5jb20+IGFuZCBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKwor
ICAgICAgICBbV1BFXSBBZGQgQVBJIGZvciB3ZWJ2aWV3IGJhY2tncm91bmQgY29sb3IgY29uZmln
dXJhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTkyMzA1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRhcHQgdGhlIEZyYW1lVmlldyBBUEkgdG8gYWxsb3cgYSBkZWZhdWx0IG5vbi13aGl0ZSBiYWNr
Z3JvdW5kIGNvbG9yLgorCisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZTo6Y3JlYXRlVmlldyk6IFJlcGxhY2UgaXNUcmFuc3BhcmVudCBhcmd1bWVudCB3
aXRoIGEgYmFja2dyb3VuZCBjb2xvciBvbmUuCisgICAgICAgICogcGFnZS9GcmFtZS5oOgorICAg
ICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6
cmVjYWxjdWxhdGVCYXNlQmFja2dyb3VuZENvbG9yKTogVXNlIENvbG9yOjp0cmFuc3BhcmVudCBp
ZiBtX2lzVHJhbnNwYXJlbnQgaXMgdHJ1ZS4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6
dXBkYXRlQmFja2dyb3VuZFJlY3Vyc2l2ZWx5KTogQWxsb3cgdGhlIGZhbGxiYWNrIGJhY2tncm91
bmQgY29sb3IgdG8gYmUgbm9uLXdoaXRlLCB0aGlzIGlzCisgICAgICAgIHVzZWQgb25seSBpbiBu
b24tZGFyay1tb2RlLWNzcyBidWlsZCBjb25maWd1cmF0aW9ucy4KKyAgICAgICAgKiBwYWdlL0Zy
YW1lVmlldy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkludGVybmFsczo6c2V0Vmlld0lzVHJhbnNwYXJlbnQpOiBVc2UgQ29sb3I6OnRyYW5z
cGFyZW50IGlmIHRyYW5zcGFyZW50IGlzIHRydWUuCisKIDIwMTktMDItMDEgIFNpbW9uIEZyYXNl
ciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIFNjcm9sbGluZ05vZGVJ
RCBpbiBtb3JlIHBsYWNlcywgYW5kIGltcHJvdmUgdGhlIG5hbWUgb2YgYSBTY3JvbGxhYmxlQXJl
YSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYSBTY3JvbGxpbmdOb2RlSUQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5j
cHAKaW5kZXggYTRmODNiMjdmMGIuLjY3YzRiM2ExYTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcApA
QCAtOTAxLDcgKzkwMSw3IEBAIFJlZlB0cjxSYW5nZT4gRnJhbWU6OnJhbmdlRm9yUG9pbnQoY29u
c3QgSW50UG9pbnQmIGZyYW1lUG9pbnQpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXZvaWQg
RnJhbWU6OmNyZWF0ZVZpZXcoY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplLCBib29sIHRyYW5z
cGFyZW50LAordm9pZCBGcmFtZTo6Y3JlYXRlVmlldyhjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNp
emUsIGNvbnN0IE9wdGlvbmFsPENvbG9yPiYgYmFja2dyb3VuZENvbG9yLAogICAgIGNvbnN0IElu
dFNpemUmIGZpeGVkTGF5b3V0U2l6ZSwgY29uc3QgSW50UmVjdCYgZml4ZWRWaXNpYmxlQ29udGVu
dFJlY3QsCiAgICAgYm9vbCB1c2VGaXhlZExheW91dCwgU2Nyb2xsYmFyTW9kZSBob3Jpem9udGFs
U2Nyb2xsYmFyTW9kZSwgYm9vbCBob3Jpem9udGFsTG9jaywKICAgICBTY3JvbGxiYXJNb2RlIHZl
cnRpY2FsU2Nyb2xsYmFyTW9kZSwgYm9vbCB2ZXJ0aWNhbExvY2spCkBAIC05MzIsNyArOTMyLDcg
QEAgdm9pZCBGcmFtZTo6Y3JlYXRlVmlldyhjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUsIGJv
b2wgdHJhbnNwYXJlbnQsCiAKICAgICBzZXRWaWV3KGZyYW1lVmlldy5jb3B5UmVmKCkpOwogCi0g
ICAgZnJhbWVWaWV3LT51cGRhdGVCYWNrZ3JvdW5kUmVjdXJzaXZlbHkodHJhbnNwYXJlbnQpOwor
ICAgIGZyYW1lVmlldy0+dXBkYXRlQmFja2dyb3VuZFJlY3Vyc2l2ZWx5KGJhY2tncm91bmRDb2xv
cik7CiAKICAgICBpZiAoaXNNYWluRnJhbWUpCiAgICAgICAgIGZyYW1lVmlldy0+c2V0UGFyZW50
VmlzaWJsZSh0cnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAppbmRleCA4YWQxM2Q2ZTFjYy4uNzg0MWFkNTYy
YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lLmgKQEAgLTEyOCw3ICsxMjgsNyBAQCBwdWJsaWM6CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBpbml0V2l0aFNpbXBsZUhUTUxEb2N1bWVudChjb25zdCBTdHJpbmcm
IHN0eWxlLCBjb25zdCBVUkwmKTsKICNlbmRpZgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
VmlldyhSZWZQdHI8RnJhbWVWaWV3PiYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNyZWF0
ZVZpZXcoY29uc3QgSW50U2l6ZSYsIGJvb2wgdHJhbnNwYXJlbnQsCisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBjcmVhdGVWaWV3KGNvbnN0IEludFNpemUmLCBjb25zdCBPcHRpb25hbDxDb2xvcj4m
IGJhY2tncm91bmRDb2xvciwKICAgICAgICAgY29uc3QgSW50U2l6ZSYgZml4ZWRMYXlvdXRTaXpl
LCBjb25zdCBJbnRSZWN0JiBmaXhlZFZpc2libGVDb250ZW50UmVjdCwKICAgICAgICAgYm9vbCB1
c2VGaXhlZExheW91dCA9IGZhbHNlLCBTY3JvbGxiYXJNb2RlID0gU2Nyb2xsYmFyQXV0bywgYm9v
bCBob3Jpem9udGFsTG9jayA9IGZhbHNlLAogICAgICAgICBTY3JvbGxiYXJNb2RlID0gU2Nyb2xs
YmFyQXV0bywgYm9vbCB2ZXJ0aWNhbExvY2sgPSBmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
dy5jcHAKaW5kZXggYjU2YjRlYjk2ZjguLjJkMGFhODIzMGNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZVZpZXcuY3BwCkBAIC00MjIsNyArNDIyLDEwIEBAIHZvaWQgRnJhbWVWaWV3OjpyZWNhbGN1bGF0
ZUJhc2VCYWNrZ3JvdW5kQ29sb3IoKQogICAgICAgICByZXR1cm47CiAKICAgICBtX3VzZXNEYXJr
QXBwZWFyYW5jZSA9IHVzaW5nRGFya0FwcGVhcmFuY2U7Ci0gICAgdXBkYXRlQmFja2dyb3VuZFJl
Y3Vyc2l2ZWx5KG1faXNUcmFuc3BhcmVudCk7CisgICAgT3B0aW9uYWw8Q29sb3I+IGJhY2tncm91
bmRDb2xvcjsKKyAgICBpZiAobV9pc1RyYW5zcGFyZW50KQorICAgICAgICBiYWNrZ3JvdW5kQ29s
b3IgPSBDb2xvcihDb2xvcjo6dHJhbnNwYXJlbnQpOworICAgIHVwZGF0ZUJhY2tncm91bmRSZWN1
cnNpdmVseShiYWNrZ3JvdW5kQ29sb3IpOwogfQogI2VuZGlmCiAKQEAgLTMwMTEsMTggKzMwMTQs
MTggQEAgdm9pZCBGcmFtZVZpZXc6OnNldEJhc2VCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3Im
IGJhY2tncm91bmRDb2xvcikKICAgICByZW5kZXJWaWV3KCktPmNvbXBvc2l0b3IoKS5yb290QmFj
a2dyb3VuZENvbG9yT3JUcmFuc3BhcmVuY3lDaGFuZ2VkKCk7CiB9CiAKLXZvaWQgRnJhbWVWaWV3
Ojp1cGRhdGVCYWNrZ3JvdW5kUmVjdXJzaXZlbHkoYm9vbCB0cmFuc3BhcmVudCkKK3ZvaWQgRnJh
bWVWaWV3Ojp1cGRhdGVCYWNrZ3JvdW5kUmVjdXJzaXZlbHkoY29uc3QgT3B0aW9uYWw8Q29sb3I+
JiBiYWNrZ3JvdW5kQ29sb3IpCiB7CiAjaWYgRU5BQkxFKERBUktfTU9ERV9DU1MpICYmIFBMQVRG
T1JNKE1BQykKLSAgICBDb2xvciBiYWNrZ3JvdW5kQ29sb3IgPSB0cmFuc3BhcmVudCA/IENvbG9y
Ojp0cmFuc3BhcmVudCA6IFJlbmRlclRoZW1lOjpzaW5nbGV0b24oKS5zeXN0ZW1Db2xvcihDU1NW
YWx1ZUFwcGxlU3lzdGVtQ29udHJvbEJhY2tncm91bmQsIHN0eWxlQ29sb3JPcHRpb25zKCkpOwor
ICAgIENvbG9yIGJhc2VCYWNrZ3JvdW5kQ29sb3IgPSBiYWNrZ3JvdW5kQ29sb3IudmFsdWVPcihS
ZW5kZXJUaGVtZTo6c2luZ2xldG9uKCkuc3lzdGVtQ29sb3IoQ1NTVmFsdWVBcHBsZVN5c3RlbUNv
bnRyb2xCYWNrZ3JvdW5kLCBzdHlsZUNvbG9yT3B0aW9ucygpKSk7CiAjZWxzZQotICAgIENvbG9y
IGJhY2tncm91bmRDb2xvciA9IHRyYW5zcGFyZW50ID8gQ29sb3I6OnRyYW5zcGFyZW50IDogQ29s
b3I6OndoaXRlOworICAgIENvbG9yIGJhc2VCYWNrZ3JvdW5kQ29sb3IgPSBiYWNrZ3JvdW5kQ29s
b3IudmFsdWVPcihDb2xvcjo6d2hpdGUpOwogI2VuZGlmCiAKICAgICBmb3IgKGF1dG8qIGZyYW1l
ID0gbV9mcmFtZS5wdHIoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5l
eHQobV9mcmFtZS5wdHIoKSkpIHsKICAgICAgICAgaWYgKEZyYW1lVmlldyogdmlldyA9IGZyYW1l
LT52aWV3KCkpIHsKLSAgICAgICAgICAgIHZpZXctPnNldFRyYW5zcGFyZW50KHRyYW5zcGFyZW50
KTsKLSAgICAgICAgICAgIHZpZXctPnNldEJhc2VCYWNrZ3JvdW5kQ29sb3IoYmFja2dyb3VuZENv
bG9yKTsKKyAgICAgICAgICAgIHZpZXctPnNldFRyYW5zcGFyZW50KCFiYXNlQmFja2dyb3VuZENv
bG9yLmlzVmlzaWJsZSgpKTsKKyAgICAgICAgICAgIHZpZXctPnNldEJhc2VCYWNrZ3JvdW5kQ29s
b3IoYmFzZUJhY2tncm91bmRDb2xvcik7CiAgICAgICAgICAgICBpZiAodmlldy0+bmVlZHNMYXlv
dXQoKSkKICAgICAgICAgICAgICAgICB2aWV3LT5sYXlvdXRDb250ZXh0KCkuc2NoZWR1bGVMYXlv
dXQoKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKaW5kZXggMzQ5MzQ2Y2E1MjEu
LmUzYjU0NGI4ZTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTE4OSw3ICsxODksNyBA
QCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBDb2xvciBiYXNlQmFja2dyb3VuZENvbG9y
KCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRCYXNlQmFja2dyb3VuZENvbG9y
KGNvbnN0IENvbG9yJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVCYWNrZ3JvdW5k
UmVjdXJzaXZlbHkoYm9vbCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVCYWNrZ3Jv
dW5kUmVjdXJzaXZlbHkoY29uc3QgT3B0aW9uYWw8Q29sb3I+JiBiYWNrZ3JvdW5kQ29sb3IpOwog
CiAgICAgZW51bSBFeHRlbmRlZEJhY2tncm91bmRNb2RlRmxhZ3MgewogICAgICAgICBFeHRlbmRl
ZEJhY2tncm91bmRNb2RlTm9uZSAgICAgICAgICA9IDAsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5jcHAKaW5kZXggNjFjZmY0ZDA1NGUuLjU2N2EyZDdjMTBkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwCkBAIC0xNzEyLDcgKzE3MTIsMTAgQEAgRXhjZXB0aW9uT3I8dm9p
ZD4gSW50ZXJuYWxzOjpzZXRWaWV3SXNUcmFuc3BhcmVudChib29sIHRyYW5zcGFyZW50KQogICAg
IERvY3VtZW50KiBkb2N1bWVudCA9IGNvbnRleHREb2N1bWVudCgpOwogICAgIGlmICghZG9jdW1l
bnQgfHwgIWRvY3VtZW50LT52aWV3KCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZh
bGlkQWNjZXNzRXJyb3IgfTsKLSAgICBkb2N1bWVudC0+dmlldygpLT51cGRhdGVCYWNrZ3JvdW5k
UmVjdXJzaXZlbHkodHJhbnNwYXJlbnQpOworICAgIE9wdGlvbmFsPENvbG9yPiBiYWNrZ3JvdW5k
Q29sb3I7CisgICAgaWYgKHRyYW5zcGFyZW50KQorICAgICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBD
b2xvcihDb2xvcjo6dHJhbnNwYXJlbnQpOworICAgIGRvY3VtZW50LT52aWV3KCktPnVwZGF0ZUJh
Y2tncm91bmRSZWN1cnNpdmVseShiYWNrZ3JvdW5kQ29sb3IpOwogICAgIHJldHVybiB7IH07CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKaW5kZXggYTUyZDQwYjQ2NGMuLmFlZjkyMzRiM2RhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDgwIEBACisyMDE5LTAxLTE4ICBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEu
Y29tPiBhbmQgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAg
ICAgICAgW1dQRV0gQWRkIEFQSSBmb3Igd2VidmlldyBiYWNrZ3JvdW5kIGNvbG9yIGNvbmZpZ3Vy
YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
MjMwNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElu
IHRoZSBjYXNlIG9mIFdQRSB3ZSBuZWVkIHRvIHNlbmQgdGhlIGJhY2tncm91bmQgY29sb3IgdG8g
dGhlIHdlYiBwcm9jZXNzIHRvIGJlIHVzZWQgYXMgdGhlIGJhY2tncm91bmQgY29sb3Igb2YKKyAg
ICAgICAgdGhlIHBhZ2UuIFRoaXMgcGF0Y2ggYWRhcHRzIHRoZSBHVEsrIGltcGxlbWVudGF0aW9u
IHRvIGRvIHRoZSBzYW1lLCBzaW5jZSBpdCdzIGEgbG90IHNpbXBsZXIuIFRoZSBwYXRjaCBhbHNv
CisgICAgICAgIHJlbW92ZXMgdGhlIFNldERyYXdzQmFja2dyb3VuZCBtZXNzYWdlIGluIGZhdm9y
IG9mIHRoZSBuZXcgU2V0QmFja2dyb3VuZENvbG9yIG1lc3NhZ2UgdGhhdCByZWNlaXZlcyBhbiBv
cHRpb25hbAorICAgICAgICBjb2xvci4KKworICAgICAgICAqIFBsYXRmb3JtV1BFLmNtYWtlOiBB
ZGQgbmV3IFdQRSBBUEkgZm9yIFdlYktpdENvbG9yIGJveGVkIHR5cGUuCisgICAgICAgICogU2hh
cmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpwYWludFRvQ3VycmVudEdM
Q29udGV4dCk6IFJlbW92ZSBiYWNrZ3JvdW5kIHJlbmRlcmluZyBhbmQgb3BhY2l0eSBoYW5kbGlu
Zy4KKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBo
aWNzU2NlbmUuaDoKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRl
ZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6VGhy
ZWFkZWRDb21wb3NpdG9yOjpyZW5kZXJMYXllclRyZWUpOiBSZW1vdmUgZHJhd3NCYWtncm91bmQg
YW5kIGFsd2F5cyBjbGVhciB0aGUgY29udGV4dCB3aXRoCisgICAgICAgIHRyYW5zcGFyZW50IGNv
bG9yLgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9z
aXRvci9UaHJlYWRlZENvbXBvc2l0b3IuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnM6OmVuY29kZSBjb25zdCk6IFJlcGxhY2UgZHJhd3NCYWNrZ3JvdW5kIHdpdGggYmFja2dy
b3VuZENvbG9yLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpk
ZWNvZGUpOiBEaXR0by4KKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cy5oOgorICAgICAgICAqIFNvdXJjZXNXUEUudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3R3RrLmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19zZXRfYmFja2dyb3Vu
ZF9jb2xvcik6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2JhY2tncm91bmRfY29sb3Ip
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdENvbG9yLmNwcDogQWRkZWQuCisg
ICAgICAgICh3ZWJraXRfY29sb3JfY29weSk6CisgICAgICAgICh3ZWJraXRfY29sb3JfZnJlZSk6
CisgICAgICAgICh3ZWJraXRDb2xvclRvV2ViQ29yZUNvbG9yKToKKyAgICAgICAgKHdlYmtpdENv
bG9yRmlsbEZyb21XZWJDb3JlQ29sb3IpOgorICAgICAgICAod2Via2l0X2NvbG9yX3BhcnNlKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRDb2xvci5oOiBBZGRlZC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRDb2xvclByaXZhdGUuaDogQWRkZWQuCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViVmlldy5oOiBJbXBsZW1lbnQgd2Via2l0
X3dlYl92aWV3X3NldF9iYWNrZ3JvdW5kX2NvbG9yIEFQSS4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL3dwZS9XZWJLaXRXZWJWaWV3V1BFLmNwcDogRGl0dG8uCisgICAgICAgICh3ZWJraXRfd2Vi
X3ZpZXdfc2V0X2JhY2tncm91bmRfY29sb3IpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2dl
dF9iYWNrZ3JvdW5kX2NvbG9yKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dw
ZS0wLjEtc2VjdGlvbnMudHh0OiBBZGQgbmV3IHN5bWJvbHMuCisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0RHJh
d3NCYWNrZ3JvdW5kKTogU2V0IGEgdHJhbnNwYXJlbnQgYmFja2dyb3VuZCBjb2xvciB3aGVuIGZh
bHNlIGlzIHBhc3NlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRCYWNrZ3Jv
dW5kQ29sb3IpOiBTZW5kIGJhY2tncm91bmQgY29sb3IgdG8gdGhlIFdlYlByb2Nlc3MuCisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJhbWV0ZXJzKTogUmVwbGFjZSBk
cmF3c0JhY2tncm91bmQgd2l0aCBiYWNrZ3JvdW5kQ29sb3IuCisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRyYXdzQmFj
a2dyb3VuZCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6YmFja2dyb3Vu
ZENvbG9yIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvY2Fpcm8vQmFja2luZ1N0b3JlQ2Fp
cm8uY3BwOgorICAgICAgICAoV2ViS2l0OjpCYWNraW5nU3RvcmU6OmluY29ycG9yYXRlVXBkYXRl
KTogUmVtb3ZlIEdUSysgY29kZSB0byBoYW5kbGUgYmFja2dyb3VuZCBjb2xvci4KKyAgICAgICAg
KiBVSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlLmg6IE1ha2UgcGFpbnQoKSBwdXJl
IHZpcnR1YWwgYW5kIHJlbW92ZSB0aGUgaW1wbGVtZW50YXRpb24uCisgICAgICAgICogVUlQcm9j
ZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQ6OnBhaW50KTogRG90IG5vdCBjYWxs
IEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlOjpwYWludCgpIG5vdyB0aGF0IGlzIHB1cmUgdmlydHVh
bC4KKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDExLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTE6OnBhaW50KTog
RGl0dG8uCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50Ojp0cmFu
c2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKTogVXNlIGJhY2tncm91bmQgY29sb3IgYXMgcHJv
dmlkZWQgYnkgdGhlCisgICAgICAgIFVJUHJvY2VzcyB3aGVuIGNyZWF0aW5nIHRoZSBGcmFtZVZp
ZXcuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEu
Y3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZERyYXdpbmdBcmVh
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
Q29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlRocmVhZGVkQ29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0OjpzZXRJc0Rpc2NhcmRhYmxlKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuY3BwOgorICAgICAgICAo
V2ViS2l0OjpEcmF3aW5nQXJlYUltcGw6OmRpc3BsYXkpOiBSZW1vdmUgc3BlY2lhbCBjYXNlIGZv
ciB0cmFuc3BhcmVudCBiYWNrZ3JvdW5kLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9M
YXllclRyZWVIb3N0Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRCYWNrZ3JvdW5kQ29sb3IpOiBOZXcgQVBJ
IGZvciBiYWNrZ3JvdW5kIGNvbG9yIGNvbmZpZ3VyYXRpb24uIFByb3hpZXMgdG8gRnJhbWVWaWV3
IGFuZCBEcmF3aW5nQXJlYS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpiYWNrZ3JvdW5kQ29sb3IgY29uc3QpOiBSZWFk
LW9ubHkgYWNjZXNzIHRvIHRoZSBjdXJyZW50IGJhY2tncm91bmQgY29sb3IuCisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46IFJlcGxhY2UgU2V0RHJhd3NC
YWNrZ3JvdW5kIG1lc3NhZ2Ugd2l0aCBTZXRCYWNrZ3JvdW5kQ29sb3IuCisKIDIwMTktMDEtMTYg
IENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtH
VEtdW1dQRV0gQWRkIHdlYiBleHRlbnNpb25zIEFQSSB0byB3aGl0ZWxpc3QgYWNjZXNzIHRvIGEg
c2VjdXJpdHkgb3JpZ2luCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV1BFLmNt
YWtlIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdQRS5jbWFrZQppbmRleCAzYzUxMWVkMGJhMC4u
YWFjM2RlOTNjYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1XUEUuY21ha2UK
KysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdQRS5jbWFrZQpAQCAtOTgsNiArOTgsNyBAQCBz
ZXQoV1BFX0FQSV9JTlNUQUxMRURfSEVBREVSUwogICAgICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNz
L0FQSS93cGUvV2ViS2l0QmFja0ZvcndhcmRMaXN0LmgKICAgICAke1dFQktJVF9ESVJ9L1VJUHJv
Y2Vzcy9BUEkvd3BlL1dlYktpdEJhY2tGb3J3YXJkTGlzdEl0ZW0uaAogICAgICR7V0VCS0lUX0RJ
Un0vVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0Q3JlZGVudGlhbC5oCisgICAgJHtXRUJLSVRfRElS
fS9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRDb2xvci5oCiAgICAgJHtXRUJLSVRfRElSfS9VSVBy
b2Nlc3MvQVBJL3dwZS9XZWJLaXRDb250ZXh0TWVudS5oCiAgICAgJHtXRUJLSVRfRElSfS9VSVBy
b2Nlc3MvQVBJL3dwZS9XZWJLaXRDb250ZXh0TWVudUFjdGlvbnMuaAogICAgICR7V0VCS0lUX0RJ
Un0vVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0Q29udGV4dE1lbnVJdGVtLmgKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFw
aGljc1NjZW5lLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcAppbmRleCAxYjJlZDFiMDI3NS4uZGEyZjhhNTI3
ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAKQEAgLTY1LDcg
KzY1LDcgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmFwcGx5U3RhdGVDaGFuZ2Vz
KGNvbnN0IFZlY3RvcjxDb29yZGluYXRlZEdyYXBoaWMKICAgICAgICAgY29tbWl0U2NlbmVTdGF0
ZShzdGF0ZS5uaWNvc2lhKTsKIH0KIAotdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnBh
aW50VG9DdXJyZW50R0xDb250ZXh0KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgs
IGZsb2F0IG9wYWNpdHksIGNvbnN0IEZsb2F0UmVjdCYgY2xpcFJlY3QsIGNvbnN0IENvbG9yJiBi
YWNrZ3JvdW5kQ29sb3IsIGJvb2wgZHJhd3NCYWNrZ3JvdW5kLCBUZXh0dXJlTWFwcGVyOjpQYWlu
dEZsYWdzIFBhaW50RmxhZ3MpCit2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6cGFpbnRU
b0N1cnJlbnRHTENvbnRleHQoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCwgY29u
c3QgRmxvYXRSZWN0JiBjbGlwUmVjdCwgVGV4dHVyZU1hcHBlcjo6UGFpbnRGbGFncyBQYWludEZs
YWdzKQogewogICAgIHVwZGF0ZVNjZW5lU3RhdGUoKTsKIApAQCAtNzgsMTggKzc4LDggQEAgdm9p
ZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnBhaW50VG9DdXJyZW50R0xDb250ZXh0KGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cmkKICAgICBtX3RleHR1cmVNYXBwZXItPmJlZ2luUGFpbnRpbmco
UGFpbnRGbGFncyk7CiAgICAgbV90ZXh0dXJlTWFwcGVyLT5iZWdpbkNsaXAoVHJhbnNmb3JtYXRp
b25NYXRyaXgoKSwgY2xpcFJlY3QpOwogCi0gICAgaWYgKGRyYXdzQmFja2dyb3VuZCkgewotICAg
ICAgICBSR0JBMzIgcmdiYSA9IG1ha2VSR0JBMzJGcm9tRmxvYXRzKGJhY2tncm91bmRDb2xvci5y
ZWQoKSwKLSAgICAgICAgICAgIGJhY2tncm91bmRDb2xvci5ncmVlbigpLCBiYWNrZ3JvdW5kQ29s
b3IuYmx1ZSgpLAotICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yLmFscGhhKCkgKiBvcGFjaXR5
KTsKLSAgICAgICAgbV90ZXh0dXJlTWFwcGVyLT5kcmF3U29saWRDb2xvcihjbGlwUmVjdCwgVHJh
bnNmb3JtYXRpb25NYXRyaXgoKSwgQ29sb3IocmdiYSkpOwotICAgIH0gZWxzZQotICAgICAgICBt
X3RleHR1cmVNYXBwZXItPmNsZWFyQ29sb3IobV92aWV3QmFja2dyb3VuZENvbG9yKTsKLQotICAg
IGlmIChjdXJyZW50Um9vdExheWVyLT5vcGFjaXR5KCkgIT0gb3BhY2l0eSB8fCBjdXJyZW50Um9v
dExheWVyLT50cmFuc2Zvcm0oKSAhPSBtYXRyaXgpIHsKLSAgICAgICAgY3VycmVudFJvb3RMYXll
ci0+c2V0T3BhY2l0eShvcGFjaXR5KTsKKyAgICBpZiAoY3VycmVudFJvb3RMYXllci0+dHJhbnNm
b3JtKCkgIT0gbWF0cml4KQogICAgICAgICBjdXJyZW50Um9vdExheWVyLT5zZXRUcmFuc2Zvcm0o
bWF0cml4KTsKLSAgICB9CiAKICAgICBjdXJyZW50Um9vdExheWVyLT5wYWludCgpOwogICAgIG1f
ZnBzQ291bnRlci51cGRhdGVGUFNBbmREaXNwbGF5KCptX3RleHR1cmVNYXBwZXIsIGNsaXBSZWN0
LmxvY2F0aW9uKCksIG1hdHJpeCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5oIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUu
aAppbmRleCBkNGJiNTgyNjhmZS4uMmU2YjMzNWRiYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmgK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZEdyYXBoaWNzU2NlbmUuaApAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+
Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lKCk7CiAKICAgICB2b2lkIGFwcGx5U3RhdGVDaGFuZ2Vz
KGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU3RhdGU+Jik7Ci0gICAg
dm9pZCBwYWludFRvQ3VycmVudEdMQ29udGV4dChjb25zdCBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYsIGZsb2F0LCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3Jl
OjpDb2xvciYgYmFja2dyb3VuZENvbG9yLCBib29sIGRyYXdzQmFja2dyb3VuZCwgV2ViQ29yZTo6
VGV4dHVyZU1hcHBlcjo6UGFpbnRGbGFncyA9IDApOworICAgIHZvaWQgcGFpbnRUb0N1cnJlbnRH
TENvbnRleHQoY29uc3QgV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25zdCBXZWJD
b3JlOjpGbG9hdFJlY3QmLCBXZWJDb3JlOjpUZXh0dXJlTWFwcGVyOjpQYWludEZsYWdzID0gMCk7
CiAgICAgdm9pZCBkZXRhY2goKTsKIAogICAgIC8vIFRoZSBwYWludGluZyB0aHJlYWQgbXVzdCBs
b2NrIHRoZSBtYWluIHRocmVhZCB0byB1c2UgYmVsb3cgdHdvIG1ldGhvZHMsIGJlY2F1c2UgdHdv
IG1ldGhvZHMgYWNjZXNzIG1lbWJlcnMgdGhhdCB0aGUgbWFpbiB0aHJlYWQgbWFuYWdlcy4gU2Vl
IG1fY2xpZW50LgpAQCAtODIsOSArODIsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0FjdGl2ZSgp
IGNvbnN0IHsgcmV0dXJuIG1faXNBY3RpdmU7IH0KICAgICB2b2lkIHNldEFjdGl2ZShib29sIGFj
dGl2ZSkgeyBtX2lzQWN0aXZlID0gYWN0aXZlOyB9CiAKLSAgICB2b2lkIHNldFZpZXdCYWNrZ3Jv
dW5kQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9yKSB7IG1fdmlld0JhY2tncm91bmRD
b2xvciA9IGNvbG9yOyB9Ci0gICAgV2ViQ29yZTo6Q29sb3Igdmlld0JhY2tncm91bmRDb2xvcigp
IGNvbnN0IHsgcmV0dXJuIG1fdmlld0JhY2tncm91bmRDb2xvcjsgfQotCiBwcml2YXRlOgogICAg
IHZvaWQgY29tbWl0U2NlbmVTdGF0ZShjb25zdCBXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNz
U3RhdGU6Ok5pY29zaWFTdGF0ZSYpOwogICAgIHZvaWQgdXBkYXRlU2NlbmVTdGF0ZSgpOwpAQCAt
MTEzLDcgKzExMCw2IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlRl
eHR1cmVNYXBwZXJMYXllcj4gbV9yb290TGF5ZXI7CiAKICAgICBOaWNvc2lhOjpQbGF0Zm9ybUxh
eWVyOjpMYXllcklEIG1fcm9vdExheWVySUQgeyAwIH07Ci0gICAgV2ViQ29yZTo6Q29sb3IgbV92
aWV3QmFja2dyb3VuZENvbG9yIHsgV2ViQ29yZTo6Q29sb3I6OndoaXRlIH07CiAKICAgICBXZWJD
b3JlOjpUZXh0dXJlTWFwcGVyRlBTQ291bnRlciBtX2Zwc0NvdW50ZXI7CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBv
c2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHAK
aW5kZXggNzUyMmY4NGVhOGYuLjgwNWYyMzMwY2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENv
bXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHAKQEAgLTE1NiwxMyAr
MTU2LDYgQEAgdm9pZCBUaHJlYWRlZENvbXBvc2l0b3I6OnNldFZpZXdwb3J0U2l6ZShjb25zdCBJ
bnRTaXplJiB2aWV3cG9ydFNpemUsIGZsb2F0IHNjYWwKICAgICBtX2NvbXBvc2l0aW5nUnVuTG9v
cC0+c2NoZWR1bGVVcGRhdGUoKTsKIH0KIAotdm9pZCBUaHJlYWRlZENvbXBvc2l0b3I6OnNldERy
YXdzQmFja2dyb3VuZChib29sIGRyYXdzQmFja2dyb3VuZCkKLXsKLSAgICBMb2NrSG9sZGVyIGxv
Y2tlcihtX2F0dHJpYnV0ZXMubG9jayk7Ci0gICAgbV9hdHRyaWJ1dGVzLmRyYXdzQmFja2dyb3Vu
ZCA9IGRyYXdzQmFja2dyb3VuZDsKLSAgICBtX2NvbXBvc2l0aW5nUnVuTG9vcC0+c2NoZWR1bGVV
cGRhdGUoKTsKLX0KLQogdm9pZCBUaHJlYWRlZENvbXBvc2l0b3I6OnVwZGF0ZVZpZXdwb3J0KCkK
IHsKICAgICBtX2NvbXBvc2l0aW5nUnVuTG9vcC0+c2NoZWR1bGVVcGRhdGUoKTsKQEAgLTE5NCw4
ICsxODcsOCBAQCB2b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6cmVuZGVyTGF5ZXJUcmVlKCkKICAg
ICBXZWJDb3JlOjpJbnRTaXplIHZpZXdwb3J0U2l6ZTsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBz
Y3JvbGxQb3NpdGlvbjsKICAgICBmbG9hdCBzY2FsZUZhY3RvcjsKLSAgICBib29sIGRyYXdzQmFj
a2dyb3VuZDsKICAgICBib29sIG5lZWRzUmVzaXplOworCiAgICAgVmVjdG9yPFdlYkNvcmU6OkNv
b3JkaW5hdGVkR3JhcGhpY3NTdGF0ZT4gc3RhdGVzOwogCiAgICAgewpAQCAtMjAzLDcgKzE5Niw2
IEBAIHZvaWQgVGhyZWFkZWRDb21wb3NpdG9yOjpyZW5kZXJMYXllclRyZWUoKQogICAgICAgICB2
aWV3cG9ydFNpemUgPSBtX2F0dHJpYnV0ZXMudmlld3BvcnRTaXplOwogICAgICAgICBzY3JvbGxQ
b3NpdGlvbiA9IG1fYXR0cmlidXRlcy5zY3JvbGxQb3NpdGlvbjsKICAgICAgICAgc2NhbGVGYWN0
b3IgPSBtX2F0dHJpYnV0ZXMuc2NhbGVGYWN0b3I7Ci0gICAgICAgIGRyYXdzQmFja2dyb3VuZCA9
IG1fYXR0cmlidXRlcy5kcmF3c0JhY2tncm91bmQ7CiAgICAgICAgIG5lZWRzUmVzaXplID0gbV9h
dHRyaWJ1dGVzLm5lZWRzUmVzaXplOwogCiAgICAgICAgIHN0YXRlcyA9IFdURk1vdmUobV9hdHRy
aWJ1dGVzLnN0YXRlcyk7CkBAIC0yNDcsMTQgKzIzOSwxMSBAQCB2b2lkIFRocmVhZGVkQ29tcG9z
aXRvcjo6cmVuZGVyTGF5ZXJUcmVlKCkKICAgICB2aWV3cG9ydFRyYW5zZm9ybS5zY2FsZShzY2Fs
ZUZhY3Rvcik7CiAgICAgdmlld3BvcnRUcmFuc2Zvcm0udHJhbnNsYXRlKC1zY3JvbGxQb3NpdGlv
bi54KCksIC1zY3JvbGxQb3NpdGlvbi55KCkpOwogCi0gICAgaWYgKCFkcmF3c0JhY2tncm91bmQp
IHsKLSAgICAgICAgZ2xDbGVhckNvbG9yKDAsIDAsIDAsIDApOwotICAgICAgICBnbENsZWFyKEdM
X0NPTE9SX0JVRkZFUl9CSVQpOwotICAgIH0KKyAgICBnbENsZWFyQ29sb3IoMCwgMCwgMCwgMCk7
CisgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKIAogICAgIG1fc2NlbmUtPmFwcGx5
U3RhdGVDaGFuZ2VzKHN0YXRlcyk7Ci0gICAgbV9zY2VuZS0+cGFpbnRUb0N1cnJlbnRHTENvbnRl
eHQodmlld3BvcnRUcmFuc2Zvcm0sIDEsIEZsb2F0UmVjdCB7IEZsb2F0UG9pbnQgeyB9LCB2aWV3
cG9ydFNpemUgfSwKLSAgICAgICAgQ29sb3I6OnRyYW5zcGFyZW50LCAhZHJhd3NCYWNrZ3JvdW5k
LCBtX3BhaW50RmxhZ3MpOworICAgIG1fc2NlbmUtPnBhaW50VG9DdXJyZW50R0xDb250ZXh0KHZp
ZXdwb3J0VHJhbnNmb3JtLCBGbG9hdFJlY3QgeyBGbG9hdFBvaW50IHsgfSwgdmlld3BvcnRTaXpl
IH0sIG1fcGFpbnRGbGFncyk7CiAKICAgICBtX2NvbnRleHQtPnN3YXBCdWZmZXJzKCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFk
ZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
Q29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9y
LmgKaW5kZXggNmQ3MDUzODUwZGEuLmI2MzFmYzAzNWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRl
ZENvbXBvc2l0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBo
aWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuaApAQCAtNzAsNyArNzAs
NiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTY2FsZUZhY3RvcihmbG9hdCk7CiAgICAgdm9pZCBz
ZXRTY3JvbGxQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIGZsb2F0IHNjYWxlKTsK
ICAgICB2b2lkIHNldFZpZXdwb3J0U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgZmxvYXQg
c2NhbGUpOwotICAgIHZvaWQgc2V0RHJhd3NCYWNrZ3JvdW5kKGJvb2wpOwogCiAgICAgdm9pZCB1
cGRhdGVTY2VuZVN0YXRlKGNvbnN0IFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZSYp
OwogCkBAIC0xMTIsOSArMTExLDcgQEAgcHJpdmF0ZToKICAgICAgICAgV2ViQ29yZTo6SW50U2l6
ZSB2aWV3cG9ydFNpemU7CiAgICAgICAgIFdlYkNvcmU6OkludFBvaW50IHNjcm9sbFBvc2l0aW9u
OwogICAgICAgICBmbG9hdCBzY2FsZUZhY3RvciB7IDEgfTsKLSAgICAgICAgYm9vbCBkcmF3c0Jh
Y2tncm91bmQgeyB0cnVlIH07CiAgICAgICAgIGJvb2wgbmVlZHNSZXNpemUgeyBmYWxzZSB9Owot
CiAgICAgICAgIFZlY3RvcjxXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU3RhdGU+IHN0YXRl
czsKIAogICAgICAgICBib29sIGNsaWVudFJlbmRlcnNOZXh0RnJhbWUgeyBmYWxzZSB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApp
bmRleCBiMTY0Y2FkN2NlNi4uMWIyMmQ5NTRiZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC0zOCw3ICszOCw2IEBAIHZv
aWQgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2Rl
cikgY29uc3QKICAgICBlbmNvZGVyIDw8IHN0b3JlOwogICAgIGVuY29kZXIuZW5jb2RlRW51bShk
cmF3aW5nQXJlYVR5cGUpOwogICAgIGVuY29kZXIgPDwgcGFnZUdyb3VwRGF0YTsKLSAgICBlbmNv
ZGVyIDw8IGRyYXdzQmFja2dyb3VuZDsKICAgICBlbmNvZGVyIDw8IGlzRWRpdGFibGU7CiAgICAg
ZW5jb2RlciA8PCB1bmRlcmxheUNvbG9yOwogICAgIGVuY29kZXIgPDwgdXNlRml4ZWRMYXlvdXQ7
CkBAIC0xMjIsNiArMTIxLDcgQEAgdm9pZCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNv
ZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVO
U0lPTlMpCiAgICAgZW5jb2RlciA8PCBjb250ZW50UnVsZUxpc3RzOwogI2VuZGlmCisgICAgZW5j
b2RlciA8PCBiYWNrZ3JvdW5kQ29sb3I7CiB9CiAKIE9wdGlvbmFsPFdlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnM+IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXIm
IGRlY29kZXIpCkBAIC0xNDAsOCArMTQwLDYgQEAgT3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycz4gV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2QKICAg
ICBpZiAoIXBhZ2VHcm91cERhdGEpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAg
cGFyYW1ldGVycy5wYWdlR3JvdXBEYXRhID0gV1RGTW92ZSgqcGFnZUdyb3VwRGF0YSk7Ci0gICAg
aWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmRyYXdzQmFja2dyb3VuZCkpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJz
LmlzRWRpdGFibGUpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocGFyYW1ldGVycy51bmRlcmxheUNvbG9yKSkKQEAgLTM1Myw2ICszNTEsMTEg
QEAgT3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2QKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
ICAgICBwYXJhbWV0ZXJzLmNvbnRlbnRSdWxlTGlzdHMgPSBXVEZNb3ZlKCpjb250ZW50UnVsZUxp
c3RzKTsKICNlbmRpZgorICAgIE9wdGlvbmFsPE9wdGlvbmFsPFdlYkNvcmU6OkNvbG9yPj4gYmFj
a2dyb3VuZENvbG9yOworICAgIGRlY29kZXIgPj4gYmFja2dyb3VuZENvbG9yOworICAgIGlmICgh
YmFja2dyb3VuZENvbG9yKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHBhcmFt
ZXRlcnMuYmFja2dyb3VuZENvbG9yID0gV1RGTW92ZSgqYmFja2dyb3VuZENvbG9yKTsKIAogICAg
IHJldHVybiBXVEZNb3ZlKHBhcmFtZXRlcnMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4IGQxYjAzMDNkNzJmLi42ZmFlMzdl
ODQyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMuaApAQCAtNzMsNyArNzMsNiBAQCBzdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cyB7CiAgICAgRHJhd2luZ0FyZWFUeXBlIGRyYXdpbmdBcmVhVHlwZTsKICAgICBXZWJQYWdlR3Jv
dXBEYXRhIHBhZ2VHcm91cERhdGE7CiAKLSAgICBib29sIGRyYXdzQmFja2dyb3VuZDsKICAgICBi
b29sIGlzRWRpdGFibGU7CiAKICAgICBXZWJDb3JlOjpDb2xvciB1bmRlcmxheUNvbG9yOwpAQCAt
MTkwLDYgKzE4OSw4IEBAIHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICNpZiBF
TkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQogICAgIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBX
ZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERhdGE+PiBjb250ZW50UnVsZUxpc3RzOwogI2VuZGlm
CisKKyAgICBPcHRpb25hbDxXZWJDb3JlOjpDb2xvcj4gYmFja2dyb3VuZENvbG9yOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNX
UEUudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzV1BFLnR4dAppbmRleCAwMTFjMGQyNmJmMi4u
OGI1OGJhYWJmZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc1dQRS50eHQKKysr
IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzV1BFLnR4dApAQCAtMTY5LDYgKzE2OSw3IEBAIFVJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRXaW5kb3dQcm9wZXJ0aWVzLmNwcCBAbm8tdW5pZnkKIFVJUHJv
Y2Vzcy9BUEkvd3BlL0NvbXBvc2l0aW5nTWFuYWdlclByb3h5LmNwcCBAbm8tdW5pZnkKIFVJUHJv
Y2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkv
d3BlL1Njcm9sbEdlc3R1cmVDb250cm9sbGVyLmNwcCBAbm8tdW5pZnkKK1VJUHJvY2Vzcy9BUEkv
d3BlL1dlYktpdENvbG9yLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFNj
cmlwdERpYWxvZ1dQRS5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJW
aWV3QmFja2VuZC5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3
V1BFLmNwcCBAbm8tdW5pZnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0V2ViVmlldy5jcHAKaW5kZXggNjcyMDFkODllYWEuLjdhOGExMGY1YzFjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNw
cApAQCAtMzk2OSw3NCArMzk2OSw2IEBAIHZvaWQgd2Via2l0V2ViVmlld1dlYlByb2Nlc3NUZXJt
aW5hdGVkKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdFdlYlByb2Nlc3NUCiAgICAgZ19z
aWduYWxfZW1pdCh3ZWJWaWV3LCBzaWduYWxzW1dFQl9QUk9DRVNTX1RFUk1JTkFURURdLCAwLCBy
ZWFzb24pOwogfQogCi0jaWYgUExBVEZPUk0oR1RLKQotLyoqCi0gKiB3ZWJraXRfd2ViX3ZpZXdf
c2V0X2JhY2tncm91bmRfY29sb3I6Ci0gKiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZpZXcKLSAq
IEByZ2JhOiBhICNHZGtSR0JBCi0gKgotICogU2V0cyB0aGUgY29sb3IgdGhhdCB3aWxsIGJlIHVz
ZWQgdG8gZHJhdyB0aGUgQHdlYl92aWV3IGJhY2tncm91bmQgYmVmb3JlCi0gKiB0aGUgYWN0dWFs
IGNvbnRlbnRzIGFyZSByZW5kZXJlZC4gTm90ZSB0aGF0IGlmIHRoZSB3ZWIgcGFnZSBsb2FkZWQg
aW4gQHdlYl92aWV3Ci0gKiBzcGVjaWZpZXMgYSBiYWNrZ3JvdW5kIGNvbG9yLCBpdCB3aWxsIHRh
a2UgcHJlY2VkZW5jZSBvdmVyIHRoZSBAcmdiYSBjb2xvci4KLSAqIEJ5IGRlZmF1bHQgdGhlIEB3
ZWJfdmlldyBiYWNrZ3JvdW5kIGNvbG9yIGlzIG9wYXF1ZSB3aGl0ZS4KLSAqIE5vdGUgdGhhdCB0
aGUgcGFyZW50IHdpbmRvdyBtdXN0IGhhdmUgYSBSR0JBIHZpc3VhbCBhbmQKLSAqICNHdGtXaWRn
ZXQ6YXBwLXBhaW50YWJsZSBwcm9wZXJ0eSBzZXQgdG8gJVRSVUUgZm9yIGJhY2tncm91bmRzIGNv
bG9ycyB0byB3b3JrLgotICoKLSAqIDxpbmZvcm1hbGV4YW1wbGU+PHByb2dyYW1saXN0aW5nPgot
ICogc3RhdGljIHZvaWQgYnJvd3Nlcl93aW5kb3dfc2V0X2JhY2tncm91bmRfY29sb3IgKEJyb3dz
ZXJXaW5kb3cgKndpbmRvdywKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHZGtSR0JBICpyZ2JhKQotICogewotICogICAgIFdlYktpdFdl
YlZpZXcgKndlYl92aWV3OwotICogICAgIEdka1NjcmVlbiAqc2NyZWVuID0gZ3RrX3dpbmRvd19n
ZXRfc2NyZWVuIChHVEtfV0lORE9XICh3aW5kb3cpKTsKLSAqICAgICBHZGtWaXN1YWwgKnJnYmFf
dmlzdWFsID0gZ2RrX3NjcmVlbl9nZXRfcmdiYV92aXN1YWwgKHNjcmVlbik7Ci0gKgotICogICAg
IGlmICghcmdiYV92aXN1YWwpCi0gKiAgICAgICAgICByZXR1cm47Ci0gKgotICogICAgIGd0a193
aWRnZXRfc2V0X3Zpc3VhbCAoR1RLX1dJREdFVCAod2luZG93KSwgcmdiYV92aXN1YWwpOwotICog
ICAgIGd0a193aWRnZXRfc2V0X2FwcF9wYWludGFibGUgKEdUS19XSURHRVQgKHdpbmRvdyksIFRS
VUUpOwotICoKLSAqICAgICB3ZWJfdmlldyA9IGJyb3dzZXJfd2luZG93X2dldF93ZWJfdmlldyAo
d2luZG93KTsKLSAqICAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0X2JhY2tncm91bmRfY29sb3IgKHdl
Yl92aWV3LCByZ2JhKTsKLSAqIH0KLSAqIDwvcHJvZ3JhbWxpc3Rpbmc+PC9pbmZvcm1hbGV4YW1w
bGU+Ci0gKgotICogU2luY2U6IDIuOAotICovCi12b2lkIHdlYmtpdF93ZWJfdmlld19zZXRfYmFj
a2dyb3VuZF9jb2xvcihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBHZGtSR0JBKiByZ2Jh
KQotewotICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpKTsK
LSAgICBnX3JldHVybl9pZl9mYWlsKHJnYmEpOwotCi0gICAgQ29sb3IgY29sb3IoKnJnYmEpOwot
ICAgIGF1dG8mIHBhZ2UgPSBnZXRQYWdlKHdlYlZpZXcpOwotICAgIGlmIChwYWdlLmJhY2tncm91
bmRDb2xvcigpID09IGNvbG9yKQotICAgICAgICByZXR1cm47Ci0KLSAgICBwYWdlLnNldEJhY2tn
cm91bmRDb2xvcihjb2xvcik7Ci0gICAgcGFnZS5zZXREcmF3c0JhY2tncm91bmQoY29sb3IgPT0g
Q29sb3I6OndoaXRlKTsKLX0KLQotLyoqCi0gKiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2JhY2tncm91
bmRfY29sb3I6Ci0gKiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZpZXcKLSAqIEByZ2JhOiAob3V0
KTogYSAjR2RrUkdCQSB0byBmaWxsIGluIHdpdGggdGhlIGJhY2tncm91bmQgY29sb3IKLSAqCi0g
KiBHZXRzIHRoZSBjb2xvciB0aGF0IGlzIHVzZWQgdG8gZHJhdyB0aGUgQHdlYl92aWV3IGJhY2tn
cm91bmQgYmVmb3JlCi0gKiB0aGUgYWN0dWFsIGNvbnRlbnRzIGFyZSByZW5kZXJlZC4KLSAqIEZv
ciBtb3JlIGluZm9ybWF0aW9uIHNlZSBhbHNvIHdlYmtpdF93ZWJfdmlld19zZXRfYmFja2dyb3Vu
ZF9jb2xvcigpCi0gKgotICogU2luY2U6IDIuOAotICovCi12b2lkIHdlYmtpdF93ZWJfdmlld19n
ZXRfYmFja2dyb3VuZF9jb2xvcihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBHZGtSR0JBKiByZ2Jh
KQotewotICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpKTsK
LSAgICBnX3JldHVybl9pZl9mYWlsKHJnYmEpOwotCi0gICAgKnJnYmEgPSBnZXRQYWdlKHdlYlZp
ZXcpLmJhY2tncm91bmRDb2xvcigpOwotfQotI2VuZGlmIC8vIFBMQVRGT1JNKEdUSykKLQogLyoK
ICAqIHdlYmtpdF93ZWJfdmlld19pc19lZGl0YWJsZToKICAqIEB3ZWJfdmlldzogYSAjV2ViS2l0
V2ViVmlldwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2ViVmlld0d0ay5jcHAKaW5kZXggYmM4MjE3OTkxMjguLjc3OTlmYjgxYzczIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdHdGsuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0d0ay5jcHAK
QEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJXZWJLaXRTY3JpcHREaWFsb2dJbXBsLmgiCiAj
aW5jbHVkZSAiV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2Vi
Vmlld1ByaXZhdGUuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9HdGtVdGlsaXRpZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtRGlzcGxheS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1TY3JlZW4uaD4KQEAgLTM1OSwzICszNjAsNjUg
QEAgR3RrV2lkZ2V0KiB3ZWJraXRfd2ViX3ZpZXdfbmV3X3dpdGhfdXNlcl9jb250ZW50X21hbmFn
ZXIoV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2UKIAogICAgIHJldHVybiBHVEtfV0lER0VUKGdfb2Jq
ZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfVklFVywgInVzZXItY29udGVudC1tYW5hZ2VyIiwgdXNl
ckNvbnRlbnRNYW5hZ2VyLCBudWxscHRyKSk7CiB9CisKKy8qKgorICogd2Via2l0X3dlYl92aWV3
X3NldF9iYWNrZ3JvdW5kX2NvbG9yOgorICogQHdlYl92aWV3OiBhICNXZWJLaXRXZWJWaWV3Cisg
KiBAcmdiYTogYSAjR2RrUkdCQQorICoKKyAqIFNldHMgdGhlIGNvbG9yIHRoYXQgd2lsbCBiZSB1
c2VkIHRvIGRyYXcgdGhlIEB3ZWJfdmlldyBiYWNrZ3JvdW5kIGJlZm9yZQorICogdGhlIGFjdHVh
bCBjb250ZW50cyBhcmUgcmVuZGVyZWQuIE5vdGUgdGhhdCBpZiB0aGUgd2ViIHBhZ2UgbG9hZGVk
IGluIEB3ZWJfdmlldworICogc3BlY2lmaWVzIGEgYmFja2dyb3VuZCBjb2xvciwgaXQgd2lsbCB0
YWtlIHByZWNlZGVuY2Ugb3ZlciB0aGUgQHJnYmEgY29sb3IuCisgKiBCeSBkZWZhdWx0IHRoZSBA
d2ViX3ZpZXcgYmFja2dyb3VuZCBjb2xvciBpcyBvcGFxdWUgd2hpdGUuCisgKiBOb3RlIHRoYXQg
dGhlIHBhcmVudCB3aW5kb3cgbXVzdCBoYXZlIGEgUkdCQSB2aXN1YWwgYW5kCisgKiAjR3RrV2lk
Z2V0OmFwcC1wYWludGFibGUgcHJvcGVydHkgc2V0IHRvICVUUlVFIGZvciBiYWNrZ3JvdW5kcyBj
b2xvcnMgdG8gd29yay4KKyAqCisgKiA8aW5mb3JtYWxleGFtcGxlPjxwcm9ncmFtbGlzdGluZz4K
KyAqIHN0YXRpYyB2b2lkIGJyb3dzZXJfd2luZG93X3NldF9iYWNrZ3JvdW5kX2NvbG9yIChCcm93
c2VyV2luZG93ICp3aW5kb3csCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR2RrUkdCQSAqcmdiYSkKKyAqIHsKKyAqICAgICBXZWJLaXRX
ZWJWaWV3ICp3ZWJfdmlldzsKKyAqICAgICBHZGtTY3JlZW4gKnNjcmVlbiA9IGd0a193aW5kb3df
Z2V0X3NjcmVlbiAoR1RLX1dJTkRPVyAod2luZG93KSk7CisgKiAgICAgR2RrVmlzdWFsICpyZ2Jh
X3Zpc3VhbCA9IGdka19zY3JlZW5fZ2V0X3JnYmFfdmlzdWFsIChzY3JlZW4pOworICoKKyAqICAg
ICBpZiAoIXJnYmFfdmlzdWFsKQorICogICAgICAgICAgcmV0dXJuOworICoKKyAqICAgICBndGtf
d2lkZ2V0X3NldF92aXN1YWwgKEdUS19XSURHRVQgKHdpbmRvdyksIHJnYmFfdmlzdWFsKTsKKyAq
ICAgICBndGtfd2lkZ2V0X3NldF9hcHBfcGFpbnRhYmxlIChHVEtfV0lER0VUICh3aW5kb3cpLCBU
UlVFKTsKKyAqCisgKiAgICAgd2ViX3ZpZXcgPSBicm93c2VyX3dpbmRvd19nZXRfd2ViX3ZpZXcg
KHdpbmRvdyk7CisgKiAgICAgd2Via2l0X3dlYl92aWV3X3NldF9iYWNrZ3JvdW5kX2NvbG9yICh3
ZWJfdmlldywgcmdiYSk7CisgKiB9CisgKiA8L3Byb2dyYW1saXN0aW5nPjwvaW5mb3JtYWxleGFt
cGxlPgorICoKKyAqIFNpbmNlOiAyLjgKKyAqLwordm9pZCB3ZWJraXRfd2ViX3ZpZXdfc2V0X2Jh
Y2tncm91bmRfY29sb3IoV2ViS2l0V2ViVmlldyogd2ViVmlldywgY29uc3QgR2RrUkdCQSogcmdi
YSkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSk7
CisgICAgZ19yZXR1cm5faWZfZmFpbChyZ2JhKTsKKworICAgIGF1dG8mIHBhZ2UgPSAqd2Via2l0
V2ViVmlld0Jhc2VHZXRQYWdlKHJlaW50ZXJwcmV0X2Nhc3Q8V2ViS2l0V2ViVmlld0Jhc2UqPih3
ZWJWaWV3KSk7CisgICAgcGFnZS5zZXRCYWNrZ3JvdW5kQ29sb3IoV2ViQ29yZTo6Q29sb3IoKnJn
YmEpKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2JhY2tncm91bmRfY29sb3I6
CisgKiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZpZXcKKyAqIEByZ2JhOiAob3V0KTogYSAjR2Rr
UkdCQSB0byBmaWxsIGluIHdpdGggdGhlIGJhY2tncm91bmQgY29sb3IKKyAqCisgKiBHZXRzIHRo
ZSBjb2xvciB0aGF0IGlzIHVzZWQgdG8gZHJhdyB0aGUgQHdlYl92aWV3IGJhY2tncm91bmQgYmVm
b3JlCisgKiB0aGUgYWN0dWFsIGNvbnRlbnRzIGFyZSByZW5kZXJlZC4KKyAqIEZvciBtb3JlIGlu
Zm9ybWF0aW9uIHNlZSBhbHNvIHdlYmtpdF93ZWJfdmlld19zZXRfYmFja2dyb3VuZF9jb2xvcigp
CisgKgorICogU2luY2U6IDIuOAorICovCit2b2lkIHdlYmtpdF93ZWJfdmlld19nZXRfYmFja2dy
b3VuZF9jb2xvcihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBHZGtSR0JBKiByZ2JhKQoreworICAg
IGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpKTsKKyAgICBnX3Jl
dHVybl9pZl9mYWlsKHJnYmEpOworCisgICAgYXV0byYgcGFnZSA9ICp3ZWJraXRXZWJWaWV3QmFz
ZUdldFBhZ2UocmVpbnRlcnByZXRfY2FzdDxXZWJLaXRXZWJWaWV3QmFzZSo+KHdlYlZpZXcpKTsK
KyAgICAqcmdiYSA9IHBhZ2UuYmFja2dyb3VuZENvbG9yKCkudmFsdWVPcihXZWJDb3JlOjpDb2xv
cjo6d2hpdGUpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dw
ZS9XZWJLaXRDb2xvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktp
dENvbG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYjgxOGY5
NWEzMDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3Bl
L1dlYktpdENvbG9yLmNwcApAQCAtMCwwICsxLDExOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxOSBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4g
IElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViS2l0Q29s
b3IuaCIKKworI2luY2x1ZGUgIldlYktpdENvbG9yUHJpdmF0ZS5oIgorCisvKioKKyAqIFNFQ1RJ
T046IFdlYktpdENvbG9yCisgKiBAU2hvcnRfZGVzY3JpcHRpb246IEEgYm94ZWQgdHlwZSByZXBy
ZXNlbnRpbmcgYSBSR0JBIGNvbG9yCisgKiBAVGl0bGU6IFdlYktpdENvbG9yCisgKiBAU2VlX2Fs
c286ICNXZWJLaXRXZWJWaWV3LgorICoKKyAqIEEgV2ViS2l0Q29sb3IgaXMgYSBib3hlZCB0eXBl
IHJlcHJlc2VudGluZyBhIFJHQkEgY29sb3IuCisgKgorICogU2luY2U6IDIuMjQKKyAqLworCisv
KioKKyAqIHdlYmtpdF9jb2xvcl9jb3B5OgorICogQGNvbG9yOiBhICNXZWJLaXRDb2xvcgorICoK
KyAqIE1ha2UgYSBjb3B5IG9mIEBjb2xvci4KKyAqCisgKiBSZXR1cm5zOiAodHJhbnNmZXIgZnVs
bCk6IEEgY29weSBvZiBwYXNzZWQgaW4gI1dlYktpdENvbG9yLgorICoKKyAqIFNpbmNlOiAyLjI0
CisgKi8KK1dlYktpdENvbG9yKiB3ZWJraXRfY29sb3JfY29weShXZWJLaXRDb2xvciogY29sb3Ip
Cit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoY29sb3IsIG51bGxwdHIpOworCisgICAgV2Vi
S2l0Q29sb3IqIGNvcHkgPSBzdGF0aWNfY2FzdDxXZWJLaXRDb2xvcio+KGZhc3RaZXJvZWRNYWxs
b2Moc2l6ZW9mKFdlYktpdENvbG9yKSkpOworICAgIGNvcHktPnJlZCA9IGNvbG9yLT5yZWQ7Cisg
ICAgY29weS0+Z3JlZW4gPSBjb2xvci0+Z3JlZW47CisgICAgY29weS0+Ymx1ZSA9IGNvbG9yLT5i
bHVlOworICAgIGNvcHktPmFscGhhID0gY29sb3ItPmFscGhhOworICAgIHJldHVybiBjb3B5Owor
fQorCisvKioKKyAqIHdlYmtpdF9jb2xvcl9mcmVlOgorICogQGNvbG9yOiBhICNXZWJLaXRDb2xv
cgorICoKKyAqIEZyZWUgdGhlICNXZWJLaXRDb2xvci4KKyAqCisgKiBTaW5jZTogMi4yNAorICov
Cit2b2lkIHdlYmtpdF9jb2xvcl9mcmVlKFdlYktpdENvbG9yKiBjb2xvcikKK3sKKyAgICBnX3Jl
dHVybl9pZl9mYWlsKGNvbG9yKTsKKworICAgIGZhc3RGcmVlKGNvbG9yKTsKK30KKworR19ERUZJ
TkVfQk9YRURfVFlQRShXZWJLaXRDb2xvciwgd2Via2l0X2NvbG9yLCB3ZWJraXRfY29sb3JfY29w
eSwgd2Via2l0X2NvbG9yX2ZyZWUpOworCitjb25zdCBXZWJDb3JlOjpDb2xvciB3ZWJraXRDb2xv
clRvV2ViQ29yZUNvbG9yKFdlYktpdENvbG9yKiBjb2xvcikKK3sKKyAgICByZXR1cm4gV2ViQ29y
ZTo6Q29sb3Ioc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNvbG9yLT5yZWQpLCBzdGF0aWNfY2FzdDxmbG9h
dD4oY29sb3ItPmdyZWVuKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNvbG9yLT5ibHVl
KSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNvbG9yLT5hbHBoYSkpOworfQorCit2b2lkIHdlYmtpdENv
bG9yRmlsbEZyb21XZWJDb3JlQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImIHdlYkNvcmVDb2xv
ciwgV2ViS2l0Q29sb3IqIGNvbG9yKQoreworICAgIFJFTEVBU0VfQVNTRVJUKHdlYkNvcmVDb2xv
ci5pc1ZhbGlkKCkpOworCisgICAgZG91YmxlIHIsIGcsIGIsIGE7CisgICAgd2ViQ29yZUNvbG9y
LmdldFJHQkEociwgZywgYiwgYSk7CisgICAgY29sb3ItPnJlZCA9IHI7CisgICAgY29sb3ItPmdy
ZWVuID0gZzsKKyAgICBjb2xvci0+Ymx1ZSA9IGI7CisgICAgY29sb3ItPmFscGhhID0gYTsKK30K
KworLyoqCisgKiB3ZWJraXRfY29sb3JfcGFyc2U6CisgKiBAY29sb3I6IGEgI1dlYktpdENvbG9y
IHRvIGZpbGwgaW4KKyAqIEBjb2xvcl9zdHJpbmc6IGNvbG9yIHJlcHJlc2VudGF0aW9uIGFzIGNv
bG9yIG5pY2tuYW1lIG9yIEhFWCBzdHJpbmcKKyAqCisgKiBDcmVhdGUgYSBuZXcgI1dlYktpdENv
bG9yIGZvciB0aGUgZ2l2ZW4gQGNvbG9yX3N0cmluZworICogcmVwcmVzZW50YXRpb24uIFRoZXJl
IGFyZSB0d28gdmFsaWQgcmVwcmVzZW50YXRpb24gdHlwZXM6IHN0YW5kYXJkIGNvbG9yCisgKiBu
YW1lcyAoc2VlIGh0dHBzOi8vaHRtbGNvbG9yY29kZXMuY29tL2NvbG9yLW5hbWVzLyBmb3IgaW5z
dGFuY2UpIG9yIEhFWAorICogdmFsdWVzLgorICoKKyAqIFJldHVybnM6IGEgI2dib29sZWFuIGlu
ZGljYXRpbmcgaWYgdGhlIEBjb2xvciB3YXMgY29ycmVjdGx5IGZpbGxlZCBpbiBvciBub3QuCisg
KgorICogU2luY2U6IDIuMjQKKyAqLworZ2Jvb2xlYW4gd2Via2l0X2NvbG9yX3BhcnNlKFdlYktp
dENvbG9yKiBjb2xvciwgY29uc3QgZ2NoYXIqIGNvbG9yU3RyaW5nKQoreworICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsKGNvbG9yLCBGQUxTRSk7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoY29s
b3JTdHJpbmcsIEZBTFNFKTsKKworICAgIGF1dG8gd2ViQ29yZUNvbG9yID0gV2ViQ29yZTo6Q29s
b3IoY29sb3JTdHJpbmcpOworICAgIGlmICghd2ViQ29yZUNvbG9yLmlzVmFsaWQoKSkKKyAgICAg
ICAgcmV0dXJuIEZBTFNFOworCisgICAgd2Via2l0Q29sb3JGaWxsRnJvbVdlYkNvcmVDb2xvcih3
ZWJDb3JlQ29sb3IsIGNvbG9yKTsKKyAgICByZXR1cm4gVFJVRTsKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0Q29sb3IuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0Q29sb3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMC4uZjI2ZDA5MTYwNjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdENvbG9yLmgKQEAgLTAsMCArMSw2MiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg
KgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisg
KiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWYgIWRlZmluZWQoX19XRUJL
SVRfSF9JTlNJREVfXykgJiYgIWRlZmluZWQoV0VCS0lUMl9DT01QSUxBVElPTikKKyNlcnJvciAi
T25seSA8d3BlL3dlYmtpdC5oPiBjYW4gYmUgaW5jbHVkZWQgZGlyZWN0bHkuIgorI2VuZGlmCisK
KyNpZm5kZWYgV2ViS2l0Q29sb3JfaAorI2RlZmluZSBXZWJLaXRDb2xvcl9oCisKKyNpbmNsdWRl
IDxnbGliLW9iamVjdC5oPgorI2luY2x1ZGUgPHdwZS9XZWJLaXREZWZpbmVzLmg+CisKK0dfQkVH
SU5fREVDTFMKKworLyoqCisgKiBXZWJLaXRDb2xvcjoKKyAqIEByZWQ6IFJlZCBjaGFubmVsLCBi
ZXR3ZWVuIDAuMCBhbmQgMS4wIGluY2x1c2l2ZQorICogQGdyZWVuOiBHcmVlbiBjaGFubmVsLCBi
ZXR3ZWVuIDAuMCBhbmQgMS4wIGluY2x1c2l2ZQorICogQGJsdWU6IEJsdWUgY2hhbm5lbCwgYmV0
d2VlbiAwLjAgYW5kIDEuMCBpbmNsdXNpdmUKKyAqIEBhbHBoYTogQWxwaGEgY2hhbm5lbCwgYmV0
d2VlbiAwLjAgYW5kIDEuMCBpbmNsdXNpdmUKKyAqCisgKiBBIFdlYktpdENvbG9yIGlzIGEgYm94
ZWQgdHlwZSByZXByZXNlbnRpbmcgYSBSR0JBIGNvbG9yLgorICoKKyAqIFNpbmNlOiAyLjI0Cisg
Ki8KK3N0cnVjdCBfV2ViS2l0Q29sb3IgeworICAgIGdkb3VibGUgcmVkOworICAgIGdkb3VibGUg
Z3JlZW47CisgICAgZ2RvdWJsZSBibHVlOworICAgIGdkb3VibGUgYWxwaGE7Cit9OworCit0eXBl
ZGVmIHN0cnVjdCBfV2ViS2l0Q29sb3IgV2ViS2l0Q29sb3I7CisKKyNkZWZpbmUgV0VCS0lUX1RZ
UEVfQ09MT1IgKHdlYmtpdF9jb2xvcl9nZXRfdHlwZSgpKQorCitXRUJLSVRfQVBJIEdUeXBlCit3
ZWJraXRfY29sb3JfZ2V0X3R5cGUgICAgICh2b2lkKTsKKworV0VCS0lUX0FQSSBnYm9vbGVhbgor
d2Via2l0X2NvbG9yX3BhcnNlICAgICAgICAoV2ViS2l0Q29sb3IgKmNvbG9yLCBjb25zdCBnY2hh
ciAqY29sb3Jfc3RyaW5nKTsKKworR19FTkRfREVDTFMKKworI2VuZGlmIC8qIFdlYktpdENvbG9y
X2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0
Q29sb3JQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdENv
bG9yUHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4yMzlh
MTE2MDM0MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93
cGUvV2ViS2l0Q29sb3JQcml2YXRlLmgKQEAgLTAsMCArMSwyNiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOSBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNvbG9yLmgi
CisjaW5jbHVkZSAiV2ViS2l0Q29sb3IuaCIKKwordm9pZCB3ZWJraXRDb2xvckZpbGxGcm9tV2Vi
Q29yZUNvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiwgV2ViS2l0Q29sb3IqKTsKK2NvbnN0IFdl
YkNvcmU6OkNvbG9yIHdlYmtpdENvbG9yVG9XZWJDb3JlQ29sb3IoV2ViS2l0Q29sb3IqKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViVmlldy5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3LmgKaW5kZXgg
NDEwMmE3NTI2ZDYuLjJhNGE2MjA0MjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvd3BlL1dlYktpdFdlYlZpZXcuaApAQCAtNDksNiArNDksNyBAQAogI2luY2x1ZGUgPHdw
ZS9XZWJLaXRXZWJDb250ZXh0Lmg+CiAjaW5jbHVkZSA8d3BlL1dlYktpdFdlYlJlc291cmNlLmg+
CiAjaW5jbHVkZSA8d3BlL1dlYktpdFdlYlZpZXdCYWNrZW5kLmg+CisjaW5jbHVkZSA8d3BlL1dl
YktpdENvbG9yLmg+CiAjaW5jbHVkZSA8d3BlL1dlYktpdFdlYlZpZXdTZXNzaW9uU3RhdGUuaD4K
ICNpbmNsdWRlIDx3cGUvV2ViS2l0V2luZG93UHJvcGVydGllcy5oPgogCkBAIC01MTcsNiArNTE4
LDEzIEBAIFdFQktJVF9BUEkgdm9pZAogd2Via2l0X3dlYl92aWV3X3JlbW92ZV9mcmFtZV9kaXNw
bGF5ZWRfY2FsbGJhY2sgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmll
dywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGd1aW50ICAgICAgICAgICAgICAgICAgICAgICAgaWQpOwogCitXRUJLSVRfQVBJIHZvaWQKK3dl
YmtpdF93ZWJfdmlld19zZXRfYmFja2dyb3VuZF9jb2xvciAgICAgICAgICAgICAgICAgKFdlYktp
dFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRDb2xvciAgICAgICAgICAgICAg
ICAgKmNvbG9yKTsKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl92aWV3X2dldF9iYWNrZ3Jv
dW5kX2NvbG9yICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3
ZWJfdmlldywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFdlYktpdENvbG9yICAgICAgICAgICAgICAgICAqY29sb3IpOworCiBHX0VORF9ERUNM
UwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUv
V2ViS2l0V2ViVmlld1dQRS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dl
YktpdFdlYlZpZXdXUEUuY3BwCmluZGV4IGEzNDk1ZTg1MmUxLi45ZTVjZTVjMzg5NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3V1BFLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXdXUEUu
Y3BwCkBAIC0yMCw2ICsyMCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2Vi
S2l0V2ViVmlldy5oIgogCisjaW5jbHVkZSAiV2ViS2l0Q29sb3JQcml2YXRlLmgiCiAjaW5jbHVk
ZSAiV2ViS2l0V2ViVmlld1ByaXZhdGUuaCIKIAogZ2Jvb2xlYW4gd2Via2l0V2ViVmlld0F1dGhl
bnRpY2F0ZShXZWJLaXRXZWJWaWV3KiwgV2ViS2l0QXV0aGVudGljYXRpb25SZXF1ZXN0KikKQEAg
LTE3OCwzICsxNzksNDQgQEAgV2ViS2l0V2ViVmlldyogd2Via2l0X3dlYl92aWV3X25ld193aXRo
X3VzZXJfY29udGVudF9tYW5hZ2VyKFdlYktpdFdlYlZpZXdCYWNrZW4KICAgICAgICAgInVzZXIt
Y29udGVudC1tYW5hZ2VyIiwgdXNlckNvbnRlbnRNYW5hZ2VyLAogICAgICAgICBudWxscHRyKSk7
CiB9CisKKy8qKgorICogd2Via2l0X3dlYl92aWV3X3NldF9iYWNrZ3JvdW5kX2NvbG9yOgorICog
QHdlYl92aWV3OiBhICNXZWJLaXRXZWJWaWV3CisgKiBAYmFja2dyb3VuZENvbG9yOiBhICNXZWJL
aXRDb2xvcgorICoKKyAqIFNldHMgdGhlIGNvbG9yIHRoYXQgd2lsbCBiZSB1c2VkIHRvIGRyYXcg
dGhlIEB3ZWJfdmlldyBiYWNrZ3JvdW5kIGJlZm9yZQorICogdGhlIGFjdHVhbCBjb250ZW50cyBh
cmUgcmVuZGVyZWQuIE5vdGUgdGhhdCBpZiB0aGUgd2ViIHBhZ2UgbG9hZGVkIGluIEB3ZWJfdmll
dworICogc3BlY2lmaWVzIGEgYmFja2dyb3VuZCBjb2xvciwgaXQgd2lsbCB0YWtlIHByZWNlZGVu
Y2Ugb3ZlciB0aGUgYmFja2dyb3VuZCBjb2xvci4KKyAqIEJ5IGRlZmF1bHQgdGhlIEB3ZWJfdmll
dyBiYWNrZ3JvdW5kIGNvbG9yIGlzIG9wYXF1ZSB3aGl0ZS4KKyAqCisgKiBTaW5jZTogMi4yNAor
ICovCit2b2lkIHdlYmtpdF93ZWJfdmlld19zZXRfYmFja2dyb3VuZF9jb2xvcihXZWJLaXRXZWJW
aWV3KiB3ZWJWaWV3LCBXZWJLaXRDb2xvciogYmFja2dyb3VuZENvbG9yKQoreworICAgIGdfcmV0
dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpKTsKKyAgICBnX3JldHVybl9p
Zl9mYWlsKGJhY2tncm91bmRDb2xvcik7CisKKyAgICBhdXRvJiBwYWdlID0gd2Via2l0V2ViVmll
d0dldFBhZ2Uod2ViVmlldyk7CisgICAgcGFnZS5zZXRCYWNrZ3JvdW5kQ29sb3Iod2Via2l0Q29s
b3JUb1dlYkNvcmVDb2xvcihiYWNrZ3JvdW5kQ29sb3IpKTsKK30KKworLyoqCisgKiB3ZWJraXRf
d2ViX3ZpZXdfZ2V0X2JhY2tncm91bmRfY29sb3I6CisgKiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdl
YlZpZXcKKyAqIEByZ2JhOiAob3V0KTogYSAjV2ViS2l0Q29sb3IgdG8gZmlsbCBpbiB3aXRoIHRo
ZSBiYWNrZ3JvdW5kIGNvbG9yCisgKgorICogR2V0cyB0aGUgY29sb3IgdGhhdCBpcyB1c2VkIHRv
IGRyYXcgdGhlIEB3ZWJfdmlldyBiYWNrZ3JvdW5kIGJlZm9yZSB0aGUKKyAqIGFjdHVhbCBjb250
ZW50cyBhcmUgcmVuZGVyZWQuIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZSBhbHNvCisgKiB3ZWJr
aXRfd2ViX3ZpZXdfc2V0X2JhY2tncm91bmRfY29sb3IoKS4KKyAqCisgKiBTaW5jZTogMi4yNAor
ICovCit2b2lkIHdlYmtpdF93ZWJfdmlld19nZXRfYmFja2dyb3VuZF9jb2xvcihXZWJLaXRXZWJW
aWV3KiB3ZWJWaWV3LCBXZWJLaXRDb2xvciogY29sb3IpCit7CisgICAgZ19yZXR1cm5faWZfZmFp
bChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldykpOworICAgIGF1dG8mIHBhZ2UgPSB3ZWJraXRX
ZWJWaWV3R2V0UGFnZSh3ZWJWaWV3KTsKKworICAgIGF1dG8mIHdlYkNvcmVDb2xvciA9IHBhZ2Uu
YmFja2dyb3VuZENvbG9yKCk7CisgICAgd2Via2l0Q29sb3JGaWxsRnJvbVdlYkNvcmVDb2xvcih3
ZWJDb3JlQ29sb3IudmFsdWVPcihXZWJDb3JlOjpDb2xvcjo6d2hpdGUpLCBjb2xvcik7Cit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTAuMS1z
ZWN0aW9ucy50eHQgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTAu
MS1zZWN0aW9ucy50eHQKaW5kZXggNzY2YjgxY2Y3MGMuLjU5MjA3NDRlNzA0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTAuMS1zZWN0aW9ucy50
eHQKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dwZS0wLjEtc2Vj
dGlvbnMudHh0CkBAIC0yMDcsNiArMjA3LDggQEAgd2Via2l0X3dlYl92aWV3X3Jlc3RvcmVfc2Vz
c2lvbl9zdGF0ZQogd2Via2l0X3dlYl92aWV3X2dldF9tYWluX3Jlc291cmNlCiB3ZWJraXRfd2Vi
X3ZpZXdfYWRkX2ZyYW1lX2Rpc3BsYXllZF9jYWxsYmFjawogd2Via2l0X3dlYl92aWV3X3JlbW92
ZV9mcmFtZV9kaXNwbGF5ZWRfY2FsbGJhY2sKK3dlYmtpdF93ZWJfdmlld19nZXRfYmFja2dyb3Vu
ZF9jb2xvcgord2Via2l0X3dlYl92aWV3X3NldF9iYWNrZ3JvdW5kX2NvbG9yCiAKIDxTVUJTRUNU
SU9OIFdlYktpdEphdmFzY3JpcHRSZXN1bHQ+CiBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0CkBAIC0y
NjcsNiArMjY5LDE2IEBAIHdlYmtpdF93ZWJfdmlld19iYWNrZW5kX25ldwogd2Via2l0X3dlYl92
aWV3X2JhY2tlbmRfZ2V0X3R5cGUKIDwvU0VDVElPTj4KIAorPFNFQ1RJT04+Cis8RklMRT5XZWJL
aXRDb2xvcjwvRklMRT4KK1dFQktJVF9UWVBFX0NPTE9SCitXZWJLaXRDb2xvcgord2Via2l0X2Nv
bG9yX3BhcnNlCisKKzxTVUJTRUNUSU9OIFByaXZhdGU+Cit3ZWJraXRfY29sb3JfZ2V0X3R5cGUK
KzwvU0VDVElPTj4KKwogPFNFQ1RJT04+CiA8RklMRT5XZWJLaXRBdXRoZW50aWNhdGlvblJlcXVl
c3Q8L0ZJTEU+CiBXZWJLaXRBdXRoZW50aWNhdGlvblJlcXVlc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDcxOTk2ZmE0ZDk0Li4zNzc3NGJlYmE0NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC00MjQsNyArNDI0LDYg
QEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2Vi
UHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCB1aW4KICAgICAsIG1fY3B1TGltaXQobV9jb25maWd1cmF0
aW9uLT5jcHVMaW1pdCgpKQogICAgICwgbV9iYWNrRm9yd2FyZExpc3QoV2ViQmFja0ZvcndhcmRM
aXN0OjpjcmVhdGUoKnRoaXMpKQogICAgICwgbV93YWl0c0ZvclBhaW50QWZ0ZXJWaWV3RGlkTW92
ZVRvV2luZG93KG1fY29uZmlndXJhdGlvbi0+d2FpdHNGb3JQYWludEFmdGVyVmlld0RpZE1vdmVU
b1dpbmRvdygpKQotICAgICwgbV9kcmF3c0JhY2tncm91bmQobV9jb25maWd1cmF0aW9uLT5kcmF3
c0JhY2tncm91bmQoKSkKICAgICAsIG1fcGFnZUlEKHBhZ2VJRCkKICAgICAsIG1fY29udHJvbGxl
ZEJ5QXV0b21hdGlvbihtX2NvbmZpZ3VyYXRpb24tPmlzQ29udHJvbGxlZEJ5QXV0b21hdGlvbigp
KQogI2lmIFBMQVRGT1JNKENPQ09BKQpAQCAtNDQzLDYgKzQ0Miw5IEBAIFdlYlBhZ2VQcm94eTo6
V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJv
Y2VzcywgdWluCiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiY29uc3Ry
dWN0b3I6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vz
c0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOwogCisgICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24tPmRy
YXdzQmFja2dyb3VuZCgpKQorICAgICAgICBtX2JhY2tncm91bmRDb2xvciA9IENvbG9yKENvbG9y
Ojp0cmFuc3BhcmVudCk7CisKICAgICBtX3dlYlByb2Nlc3NMaWZldGltZVRyYWNrZXIuYWRkT2Jz
ZXJ2ZXIobV92aXNpdGVkTGlua1N0b3JlKTsKICAgICBtX3dlYlByb2Nlc3NMaWZldGltZVRyYWNr
ZXIuYWRkT2JzZXJ2ZXIobV93ZWJzaXRlRGF0YVN0b3JlKTsKIApAQCAtMTUzOCwxMyArMTU0MCwy
MCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y3JlYXRlSW5zcGVjdG9yVGFyZ2V0cygpCiAKIHZvaWQg
V2ViUGFnZVByb3h5OjpzZXREcmF3c0JhY2tncm91bmQoYm9vbCBkcmF3c0JhY2tncm91bmQpCiB7
Ci0gICAgaWYgKG1fZHJhd3NCYWNrZ3JvdW5kID09IGRyYXdzQmFja2dyb3VuZCkKLSAgICAgICAg
cmV0dXJuOworICAgIE9wdGlvbmFsPFdlYkNvcmU6OkNvbG9yPiBiYWNrZ3JvdW5kQ29sb3I7Cisg
ICAgaWYgKCFkcmF3c0JhY2tncm91bmQpCisgICAgICAgIGJhY2tncm91bmRDb2xvciA9IENvbG9y
KENvbG9yOjp0cmFuc3BhcmVudCk7CisgICAgc2V0QmFja2dyb3VuZENvbG9yKGJhY2tncm91bmRD
b2xvcik7Cit9CiAKLSAgICBtX2RyYXdzQmFja2dyb3VuZCA9IGRyYXdzQmFja2dyb3VuZDsKK3Zv
aWQgV2ViUGFnZVByb3h5OjpzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgT3B0aW9uYWw8V2ViQ29y
ZTo6Q29sb3I+JiBjb2xvcikKK3sKKyAgICBpZiAobV9iYWNrZ3JvdW5kQ29sb3IgPT0gY29sb3Ip
CisgICAgICAgIHJldHVybjsKIAorICAgIG1fYmFja2dyb3VuZENvbG9yID0gY29sb3I7CiAgICAg
aWYgKGlzVmFsaWQoKSkKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpTZXREcmF3c0JhY2tncm91bmQoZHJhd3NCYWNrZ3JvdW5kKSwgbV9wYWdlSUQpOworICAgICAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEJhY2tncm91bmRDb2xvcihj
b2xvciksIG1fcGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldFRvcENvbnRlbnRJ
bnNldChmbG9hdCBjb250ZW50SW5zZXQpCkBAIC02NzUwLDcgKzY3NTksNiBAQCBXZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzIFdlYlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJhbWV0ZXJzKFdlYlByb2Nl
c3NQcm94eSYgcHJvYwogICAgIHBhcmFtZXRlcnMuZHJhd2luZ0FyZWFUeXBlID0gbV9kcmF3aW5n
QXJlYS0+dHlwZSgpOwogICAgIHBhcmFtZXRlcnMuc3RvcmUgPSBwcmVmZXJlbmNlc1N0b3JlKCk7
CiAgICAgcGFyYW1ldGVycy5wYWdlR3JvdXBEYXRhID0gbV9wYWdlR3JvdXAtPmRhdGEoKTsKLSAg
ICBwYXJhbWV0ZXJzLmRyYXdzQmFja2dyb3VuZCA9IG1fZHJhd3NCYWNrZ3JvdW5kOwogICAgIHBh
cmFtZXRlcnMuaXNFZGl0YWJsZSA9IG1faXNFZGl0YWJsZTsKICAgICBwYXJhbWV0ZXJzLnVuZGVy
bGF5Q29sb3IgPSBtX3VuZGVybGF5Q29sb3I7CiAgICAgcGFyYW1ldGVycy51c2VGaXhlZExheW91
dCA9IG1fdXNlRml4ZWRMYXlvdXQ7CkBAIC02ODUwLDYgKzY4NTgsNyBAQCBXZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzIFdlYlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJhbWV0ZXJzKFdlYlByb2Nlc3NQ
cm94eSYgcHJvYwogI2VuZGlmCiAKICAgICBwYXJhbWV0ZXJzLm5lZWRzRm9udEF0dHJpYnV0ZXMg
PSBtX25lZWRzRm9udEF0dHJpYnV0ZXM7CisgICAgcGFyYW1ldGVycy5iYWNrZ3JvdW5kQ29sb3Ig
PSBtX2JhY2tncm91bmRDb2xvcjsKIAogICAgIHByb2Nlc3MuYWRkV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHkobV91c2VyQ29udGVudENvbnRyb2xsZXIsIHBhcmFtZXRlcnMpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDg5MmZmY2Q2OGI2Li5hOTNmZTZk
OWQ2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTUxMyw3ICs1
MTMsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGNhblNob3dNSU1FVHlwZShjb25zdCBTdHJpbmcm
IG1pbWVUeXBlKTsKIAotICAgIGJvb2wgZHJhd3NCYWNrZ3JvdW5kKCkgY29uc3QgeyByZXR1cm4g
bV9kcmF3c0JhY2tncm91bmQ7IH0KKyAgICBib29sIGRyYXdzQmFja2dyb3VuZCgpIGNvbnN0IHsg
cmV0dXJuICFtX2JhY2tncm91bmRDb2xvciB8fCBtX2JhY2tncm91bmRDb2xvci52YWx1ZSgpLmlz
VmlzaWJsZSgpOyB9CiAgICAgdm9pZCBzZXREcmF3c0JhY2tncm91bmQoYm9vbCk7CiAKICAgICBT
dHJpbmcgY3VycmVudFVSTCgpIGNvbnN0OwpAQCAtNzU3LDExICs3NTcsMTIgQEAgcHVibGljOgog
CiAjaWYgUExBVEZPUk0oR1RLKQogICAgIFBsYXRmb3JtV2lkZ2V0IHZpZXdXaWRnZXQoKTsKLSAg
ICBjb25zdCBXZWJDb3JlOjpDb2xvciYgYmFja2dyb3VuZENvbG9yKCkgY29uc3QgeyByZXR1cm4g
bV9iYWNrZ3JvdW5kQ29sb3I7IH0KLSAgICB2b2lkIHNldEJhY2tncm91bmRDb2xvcihjb25zdCBX
ZWJDb3JlOjpDb2xvciYgY29sb3IpIHsgbV9iYWNrZ3JvdW5kQ29sb3IgPSBjb2xvcjsgfQogICAg
IGJvb2wgbWFrZUdMQ29udGV4dEN1cnJlbnQoKTsKICNlbmRpZgogCisgICAgY29uc3QgT3B0aW9u
YWw8V2ViQ29yZTo6Q29sb3I+JiBiYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2Jh
Y2tncm91bmRDb2xvcjsgfQorICAgIHZvaWQgc2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IE9wdGlv
bmFsPFdlYkNvcmU6OkNvbG9yPiYpOworCiAjaWYgUExBVEZPUk0oV0lOKQogICAgIFBsYXRmb3Jt
V2lkZ2V0IHZpZXdXaWRnZXQoKTsKICNlbmRpZgpAQCAtMjA4NSw4ICsyMDg2LDYgQEAgcHJpdmF0
ZToKIAogICAgIExheWVySG9zdGluZ01vZGUgbV9sYXllckhvc3RpbmdNb2RlIHsgTGF5ZXJIb3N0
aW5nTW9kZTo6SW5Qcm9jZXNzIH07CiAKLSAgICBib29sIG1fZHJhd3NCYWNrZ3JvdW5kIHsgdHJ1
ZSB9OwotCiAgICAgV2ViQ29yZTo6Q29sb3IgbV91bmRlcmxheUNvbG9yOwogICAgIFdlYkNvcmU6
OkNvbG9yIG1fcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yOwogCkBAIC0yMTg1LDkgKzIxODQs
MTAgQEAgcHJpdmF0ZToKIAogI2lmIFBMQVRGT1JNKEdUSykKICAgICBTdHJpbmcgbV9hY2Nlc3Np
YmlsaXR5UGx1Z0lEOwotICAgIFdlYkNvcmU6OkNvbG9yIG1fYmFja2dyb3VuZENvbG9yIHsgV2Vi
Q29yZTo6Q29sb3I6OndoaXRlIH07CiAjZW5kaWYKIAorICAgIE9wdGlvbmFsPFdlYkNvcmU6OkNv
bG9yPiBtX2JhY2tncm91bmRDb2xvcjsKKwogICAgIHVuc2lnbmVkIG1fcGVuZGluZ0xlYXJuT3JJ
Z25vcmVXb3JkTWVzc2FnZUNvdW50IHsgMCB9OwogCiAgICAgYm9vbCBtX21haW5GcmFtZUhhc0N1
c3RvbUNvbnRlbnRQcm92aWRlciB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9jYWlyby9CYWNraW5nU3RvcmVDYWlyby5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9jYWlyby9CYWNraW5nU3RvcmVDYWlyby5jcHAKaW5kZXggZTExMWMyYjM5ODYuLjE4
Mjk0ZDM3ZmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9jYWlyby9CYWNr
aW5nU3RvcmVDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvY2Fpcm8vQmFj
a2luZ1N0b3JlQ2Fpcm8uY3BwCkBAIC0zNywxMCArMzcsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUv
UmVmUHRyQ2Fpcm8uaD4KICNpbmNsdWRlIDxjYWlyby5oPgogCi0jaWYgUExBVEZPUk0oR1RLKQot
I2luY2x1ZGUgPGd0ay9ndGsuaD4KLSNlbmRpZgotCiAjaWYgUExBVEZPUk0oR1RLKSAmJiBQTEFU
Rk9STShYMTEpICYmIGRlZmluZWQoR0RLX1dJTkRPV0lOR19YMTEpCiAjaW5jbHVkZSA8V2ViQ29y
ZS9CYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9YMTEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRm
b3JtRGlzcGxheVgxMS5oPgpAQCAtOTcsMjQgKzkzLDYgQEAgdm9pZCBCYWNraW5nU3RvcmU6Omlu
Y29ycG9yYXRlVXBkYXRlKFNoYXJlYWJsZUJpdG1hcCogYml0bWFwLCBjb25zdCBVcGRhdGVJbmZv
JgogICAgIGZvciAoY29uc3QgYXV0byYgdXBkYXRlUmVjdCA6IHVwZGF0ZUluZm8udXBkYXRlUmVj
dHMpIHsKICAgICAgICAgSW50UmVjdCBzcmNSZWN0ID0gdXBkYXRlUmVjdDsKICAgICAgICAgc3Jj
UmVjdC5tb3ZlKC11cGRhdGVSZWN0TG9jYXRpb24ueCgpLCAtdXBkYXRlUmVjdExvY2F0aW9uLnko
KSk7Ci0jaWYgUExBVEZPUk0oR1RLKQotICAgICAgICBpZiAoIW1fd2ViUGFnZVByb3h5LmRyYXdz
QmFja2dyb3VuZCgpKSB7Ci0gICAgICAgICAgICBjb25zdCBXZWJDb3JlOjpDb2xvciBjb2xvciA9
IG1fd2ViUGFnZVByb3h5LmJhY2tncm91bmRDb2xvcigpOwotICAgICAgICAgICAgaWYgKGNvbG9y
LmlzVmlzaWJsZSgpKSB7Ci0gICAgICAgICAgICAgICAgLy8gV2hlbiB0aGUgYXBwbGljYXRpb24g
c2V0cyB0aGUgYmFja2dyb3VuZCBjb2xvciB0aHJvdWdoIG1fd2ViUGFnZVByb3h5LmJhY2tncm91
bmRDb2xvcigpLCB3ZSB1cGRhdGUgdGhlIHN1cmZhY2UgaW4gMiBzdGVwcy4KLSAgICAgICAgICAg
ICAgICAvLyAgIDEuIEZpbGwgdGhlIHN1cmZhY2UgYnkgbV93ZWJQYWdlUHJveHkuYmFja2dyb3Vu
ZENvbG9yKCkuCi0gICAgICAgICAgICAgICAgLy8gICAyLiBDb21wb3NpdGUgd2VicGFnZSdzIGJp
dG1hcCB3aGljaCBoYXMgYSB0cmFuc3BhcmVudCBiYWNrZ3JvdW5kLgotICAgICAgICAgICAgICAg
IC8vIEluIHN0ZXAgMSwgd2UgdXNlIENvbXBvc2l0ZUNvcHkgYXMgbV93ZWJQYWdlUHJveHkuYmFj
a2dyb3VuZENvbG9yKCkgbWF5IG5vdCBiZSBvcGFxdWUuCi0gICAgICAgICAgICAgICAgLy8gT24g
dGhlIG90aGVyIGhhbmQsIGluIHN0ZXAgMiwgYml0bWFwIHNob3VsZCBiZSBjb21wb3NpdGVkIGJ5
IENvbXBvc2l0ZVNvdXJjZU92ZXIKLSAgICAgICAgICAgICAgICAvLyBiZWNhdXNlIGl0IHNob3Vs
ZCBiZSBibGVuZGVkIHdpdGggbV93ZWJQYWdlUHJveHkuYmFja2dyb3VuZENvbG9yKCkuCi0gICAg
ICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmZpbGxSZWN0KHNyY1JlY3QsIGNvbG9yKTsKLSAg
ICAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKFdlYkNv
cmU6OkNvbXBvc2l0ZVNvdXJjZU92ZXIpOwotICAgICAgICAgICAgICAgIGJpdG1hcC0+cGFpbnQo
Z3JhcGhpY3NDb250ZXh0LCBkZXZpY2VTY2FsZUZhY3RvcigpLCB1cGRhdGVSZWN0LmxvY2F0aW9u
KCksIHNyY1JlY3QpOwotICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRDb21wb3Np
dGVPcGVyYXRpb24oV2ViQ29yZTo6Q29tcG9zaXRlQ29weSk7Ci0gICAgICAgICAgICAgICAgY29u
dGludWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSNlbmRpZgogICAgICAgICBiaXRtYXAt
PnBhaW50KGdyYXBoaWNzQ29udGV4dCwgZGV2aWNlU2NhbGVGYWN0b3IoKSwgdXBkYXRlUmVjdC5s
b2NhdGlvbigpLCBzcmNSZWN0KTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlLmNwcAppbmRleCBlY2YzNDVm
ODBmOC4uZWI2MmQ2ZDY1NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0
ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlLmNwcApAQCAtNTksMjYgKzU5LDQgQEAgQWNj
ZWxlcmF0ZWRCYWNraW5nU3RvcmU6OkFjY2VsZXJhdGVkQmFja2luZ1N0b3JlKFdlYlBhZ2VQcm94
eSYgd2ViUGFnZSkKIHsKIH0KIAotYm9vbCBBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZTo6cGFpbnQo
Y2Fpcm9fdCogY3IsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KQotewotICAgIGlmIChtX3dlYlBh
Z2UuZHJhd3NCYWNrZ3JvdW5kKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgY29uc3Qg
V2ViQ29yZTo6Q29sb3ImIGNvbG9yID0gbV93ZWJQYWdlLmJhY2tncm91bmRDb2xvcigpOwotICAg
IGlmICghY29sb3IuaXNPcGFxdWUoKSkgewotICAgICAgICBjYWlyb19yZWN0YW5nbGUoY3IsIGNs
aXBSZWN0LngoKSwgY2xpcFJlY3QueSgpLCBjbGlwUmVjdC53aWR0aCgpLCBjbGlwUmVjdC5oZWln
aHQoKSk7Ci0gICAgICAgIGNhaXJvX3NldF9vcGVyYXRvcihjciwgQ0FJUk9fT1BFUkFUT1JfQ0xF
QVIpOwotICAgICAgICBjYWlyb19maWxsKGNyKTsKLSAgICB9Ci0KLSAgICBpZiAoY29sb3IuaXNW
aXNpYmxlKCkpIHsKLSAgICAgICAgc2V0U291cmNlUkdCQUZyb21Db2xvcihjciwgY29sb3IpOwot
ICAgICAgICBjYWlyb19zZXRfb3BlcmF0b3IoY3IsIENBSVJPX09QRVJBVE9SX1NPVVJDRSk7Ci0g
ICAgICAgIGNhaXJvX3JlY3RhbmdsZShjciwgY2xpcFJlY3QueCgpLCBjbGlwUmVjdC55KCksIGNs
aXBSZWN0LndpZHRoKCksIGNsaXBSZWN0LmhlaWdodCgpKTsKLSAgICAgICAgY2Fpcm9fZmlsbChj
cik7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFj
a2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNr
aW5nU3RvcmUuaAppbmRleCBlMzUwNTA3YWFjYy4uNDhkYjUzMzQ0ZmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZS5oCkBA
IC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5BY2NlbGVyYXRlZEJhY2tpbmdT
dG9yZSgpID0gZGVmYXVsdDsKIAogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGUoY29uc3QgTGF5ZXJU
cmVlQ29udGV4dCYpIHsgfQotICAgIHZpcnR1YWwgYm9vbCBwYWludChjYWlyb190KiwgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYpOworICAgIHZpcnR1YWwgYm9vbCBwYWludChjYWlyb190KiwgY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgbWFrZUNvbnRleHRD
dXJyZW50KCkgeyByZXR1cm4gZmFsc2U7IH0KIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVX
YXlsYW5kLmNwcAppbmRleCBmMDFiYWIzYjQwMS4uNjBmNWNhNzE1NjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdT
dG9yZVdheWxhbmQuY3BwCkBAIC0xMTAsNyArMTEwLDYgQEAgYm9vbCBBY2NlbGVyYXRlZEJhY2tp
bmdTdG9yZVdheWxhbmQ6OnBhaW50KGNhaXJvX3QqIGNyLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVj
dCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgY2Fpcm9fc2F2ZShjcik7Ci0gICAgQWNj
ZWxlcmF0ZWRCYWNraW5nU3RvcmU6OnBhaW50KGNyLCBjbGlwUmVjdCk7CiAKICNpZiBHVEtfQ0hF
Q0tfVkVSU0lPTigzLCAxNiwgMCkKICAgICBpZiAobV9nZGtHTENvbnRleHQpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVgx
MS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3Rv
cmVYMTEuY3BwCmluZGV4IDI3ZDcyYzFjNDdlLi44MmNlOGM2YjY1ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDExLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVY
MTEuY3BwCkBAIC0xODYsNyArMTg2LDYgQEAgYm9vbCBBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVgx
MTo6cGFpbnQoY2Fpcm9fdCogY3IsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICBjYWlyb19zYXZlKGNyKTsKLSAgICBBY2NlbGVyYXRlZEJhY2tp
bmdTdG9yZTo6cGFpbnQoY3IsIGNsaXBSZWN0KTsKIAogICAgIC8vIFRoZSBzdXJmYWNlIGNhbiBi
ZSBtb2RpZmllZCBieSB0aGUgd2ViIHByb2Nlc3MgYXQgYW55IHRpbWUsIHNvIHdlIG1hcmsgaXQK
ICAgICAvLyBhcyBkaXJ0eSB0byBlbnN1cmUgd2UgYWx3YXlzIHJlbmRlciB0aGUgdXBkYXRlZCBj
b250ZW50cyBhcyBzb29uIGFzIHBvc3NpYmxlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHAKaW5kZXggZjFlMjM2OTBiNTYuLmU2ZGE2NDZjM2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHAKQEAgLTEzOTYsNyArMTM5Niw2IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UoKQogICAgIFdlYlBhZ2UqIHdlYlBh
Z2UgPSBtX2ZyYW1lLT5wYWdlKCk7CiAKICAgICBib29sIGlzTWFpbkZyYW1lID0gbV9mcmFtZS0+
aXNNYWluRnJhbWUoKTsKLSAgICBib29sIGlzVHJhbnNwYXJlbnQgPSAhd2ViUGFnZS0+ZHJhd3NC
YWNrZ3JvdW5kKCk7CiAgICAgYm9vbCBzaG91bGRVc2VGaXhlZExheW91dCA9IGlzTWFpbkZyYW1l
ICYmIHdlYlBhZ2UtPnVzZUZpeGVkTGF5b3V0KCk7CiAgICAgYm9vbCBzaG91bGREaXNhYmxlU2Ny
b2xsaW5nID0gaXNNYWluRnJhbWUgJiYgIXdlYlBhZ2UtPm1haW5GcmFtZUlzU2Nyb2xsYWJsZSgp
OwogICAgIGJvb2wgc2hvdWxkSGlkZVNjcm9sbGJhcnMgPSBzaG91bGREaXNhYmxlU2Nyb2xsaW5n
OwpAQCAtMTQyMSw3ICsxNDIwLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6dHJhbnNp
dGlvblRvQ29tbWl0dGVkRm9yTmV3UGFnZSgpCiAgICAgYm9vbCBob3Jpem9udGFsTG9jayA9IHNo
b3VsZEhpZGVTY3JvbGxiYXJzIHx8IHdlYlBhZ2UtPmFsd2F5c1Nob3dzSG9yaXpvbnRhbFNjcm9s
bGVyKCk7CiAgICAgYm9vbCB2ZXJ0aWNhbExvY2sgPSBzaG91bGRIaWRlU2Nyb2xsYmFycyB8fCB3
ZWJQYWdlLT5hbHdheXNTaG93c1ZlcnRpY2FsU2Nyb2xsZXIoKTsKIAotICAgIG1fZnJhbWUtPmNv
cmVGcmFtZSgpLT5jcmVhdGVWaWV3KHdlYlBhZ2UtPnNpemUoKSwgaXNUcmFuc3BhcmVudCwKKyAg
ICBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+Y3JlYXRlVmlldyh3ZWJQYWdlLT5zaXplKCksIHdlYlBh
Z2UtPmJhY2tncm91bmRDb2xvcigpLAogICAgICAgICB3ZWJQYWdlLT5maXhlZExheW91dFNpemUo
KSwgZml4ZWRWaXNpYmxlQ29udGVudFJlY3QsIHNob3VsZFVzZUZpeGVkTGF5b3V0LAogICAgICAg
ICBob3Jpem9udGFsU2Nyb2xsYmFyTW9kZSwgaG9yaXpvbnRhbExvY2ssIHZlcnRpY2FsU2Nyb2xs
YmFyTW9kZSwgdmVydGljYWxMb2NrKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3aW5nQXJlYS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZERyYXdpbmdBcmVhLmNwcAppbmRleCA5OTIw
NDY1YjE3My4uZjI0ODc3NjljOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEuY3BwCkBAIC05MywxNCAr
OTMsNiBAQCB2b2lkIEFjY2VsZXJhdGVkRHJhd2luZ0FyZWE6OnNjcm9sbChjb25zdCBJbnRSZWN0
JiBzY3JvbGxSZWN0LCBjb25zdCBJbnRTaXplJiBzYwogICAgICAgICBtX2xheWVyVHJlZUhvc3Qt
PnNjcm9sbE5vbkNvbXBvc2l0ZWRDb250ZW50cyhzY3JvbGxSZWN0KTsKIH0KIAotdm9pZCBBY2Nl
bGVyYXRlZERyYXdpbmdBcmVhOjpwYWdlQmFja2dyb3VuZFRyYW5zcGFyZW5jeUNoYW5nZWQoKQot
ewotICAgIGlmIChtX2xheWVyVHJlZUhvc3QpCi0gICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+cGFn
ZUJhY2tncm91bmRUcmFuc3BhcmVuY3lDaGFuZ2VkKCk7Ci0gICAgZWxzZSBpZiAobV9wcmV2aW91
c0xheWVyVHJlZUhvc3QpCi0gICAgICAgIG1fcHJldmlvdXNMYXllclRyZWVIb3N0LT5wYWdlQmFj
a2dyb3VuZFRyYW5zcGFyZW5jeUNoYW5nZWQoKTsKLX0KLQogdm9pZCBBY2NlbGVyYXRlZERyYXdp
bmdBcmVhOjpzZXRMYXllclRyZWVTdGF0ZUlzRnJvemVuKGJvb2wgaXNGcm96ZW4pCiB7CiAgICAg
aWYgKG1fbGF5ZXJUcmVlU3RhdGVJc0Zyb3plbiA9PSBpc0Zyb3plbikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEu
aAppbmRleCA3MGFiZTQzNTkyNS4uYTBkZjU2OGY5YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZERyYXdpbmdBcmVhLmgKQEAg
LTQzLDcgKzQzLDYgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgc2V0TmVlZHNEaXNwbGF5KCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBzZXROZWVkc0Rpc3BsYXlJblJlY3QoY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2Nyb2xsKGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
IHNjcm9sbFJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNjcm9sbERlbHRhKSBvdmVycmlk
ZTsKLSAgICB2b2lkIHBhZ2VCYWNrZ3JvdW5kVHJhbnNwYXJlbmN5Q2hhbmdlZCgpIG92ZXJyaWRl
OwogICAgIHZvaWQgc2V0TGF5ZXJUcmVlU3RhdGVJc0Zyb3plbihib29sKSBvdmVycmlkZTsKICAg
ICBib29sIGxheWVyVHJlZVN0YXRlSXNGcm96ZW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBt
X2xheWVyVHJlZVN0YXRlSXNGcm96ZW47IH0KICAgICBMYXllclRyZWVIb3N0KiBsYXllclRyZWVI
b3N0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9sYXllclRyZWVIb3N0LmdldCgpOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdy
YXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dC5jcHAKaW5kZXggMTUyMGY1MjBkYWMuLjkzYjdhMmRkZTcyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Q29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwCkBAIC0yMjQs
MTAgKzIyNCw2IEBAIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpkZXZpY2VPclBhZ2VT
Y2FsZUZhY3RvckNoYW5nZWQoKQogICAgIG1fd2ViUGFnZS5jb3JlUGFnZSgpLT5wYWdlT3Zlcmxh
eUNvbnRyb2xsZXIoKS5kaWRDaGFuZ2VEZXZpY2VTY2FsZUZhY3RvcigpOwogfQogCi12b2lkIENv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6cGFnZUJhY2tncm91bmRUcmFuc3BhcmVuY3lDaGFuZ2Vk
KCkKLXsKLX0KLQogR3JhcGhpY3NMYXllckZhY3RvcnkqIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dDo6Z3JhcGhpY3NMYXllckZhY3RvcnkoKQogewogICAgIHJldHVybiAmbV9jb29yZGluYXRvcjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dC5oCmluZGV4IDBhOGJlYzhhMzk4Li5lYTk3NDUzMTU0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExh
eWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCkBAIC01NSw3ICs1NSw2
IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHNpemVEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYgbmV3U2l6ZSkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRldmljZU9yUGFnZVNjYWxlRmFj
dG9yQ2hhbmdlZCgpIG92ZXJyaWRlOwotICAgIHZvaWQgcGFnZUJhY2tncm91bmRUcmFuc3BhcmVu
Y3lDaGFuZ2VkKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHNldFZpc2libGVDb250ZW50c1JlY3Qo
Y29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jik7CiAgICAgdm9pZCByZW5kZXJOZXh0RnJhbWUoYm9v
bCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVGhyZWFkZWRD
b29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwCmluZGV4IDgyM2I3ZmEyYWM3Li4xMDBmYzY0YTYx
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0
ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRl
ZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTE4NCwxNyArMTg0LDYgQEAgdm9pZCBU
aHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6ZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JD
aGFuZ2VkKCkKICAgICBtX2NvbXBvc2l0b3ItPnNldFNjYWxlRmFjdG9yKG1fd2ViUGFnZS5kZXZp
Y2VTY2FsZUZhY3RvcigpICogbV92aWV3cG9ydENvbnRyb2xsZXIucGFnZVNjYWxlRmFjdG9yKCkp
OwogfQogCi12b2lkIFRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpwYWdlQmFja2dy
b3VuZFRyYW5zcGFyZW5jeUNoYW5nZWQoKQotewotICAgIGlmIChtX2lzRGlzY2FyZGFibGUpIHsK
LSAgICAgICAgbV9kaXNjYXJkYWJsZVN5bmNBY3Rpb25zLmFkZChEaXNjYXJkYWJsZVN5bmNBY3Rp
b25zOjpVcGRhdGVCYWNrZ3JvdW5kKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIENv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6cGFnZUJhY2tncm91bmRUcmFuc3BhcmVuY3lDaGFuZ2Vk
KCk7Ci0gICAgbV9jb21wb3NpdG9yLT5zZXREcmF3c0JhY2tncm91bmQobV93ZWJQYWdlLmRyYXdz
QmFja2dyb3VuZCgpKTsKLX0KLQogdm9pZCBUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dDo6c2l6ZURpZENoYW5nZShjb25zdCBJbnRTaXplJiBzaXplKQogewogICAgIGlmIChtX2lzRGlz
Y2FyZGFibGUpIHsKQEAgLTI4Niw5ICsyNzUsNiBAQCB2b2lkIFRocmVhZGVkQ29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0OjpzZXRJc0Rpc2NhcmRhYmxlKGJvb2wgZGlzY2FyZGFibGUpCiAgICAgaWYg
KG1fZGlzY2FyZGFibGVTeW5jQWN0aW9ucy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGlmIChtX2Rpc2NhcmRhYmxlU3luY0FjdGlvbnMuY29udGFpbnMoRGlzY2FyZGFibGVTeW5j
QWN0aW9uczo6VXBkYXRlQmFja2dyb3VuZCkpCi0gICAgICAgIHBhZ2VCYWNrZ3JvdW5kVHJhbnNw
YXJlbmN5Q2hhbmdlZCgpOwotCiAgICAgaWYgKG1fZGlzY2FyZGFibGVTeW5jQWN0aW9ucy5jb250
YWlucyhEaXNjYXJkYWJsZVN5bmNBY3Rpb25zOjpVcGRhdGVTaXplKSkgewogICAgICAgICAvLyBT
aXplIGNoYW5nZXMgYWxyZWFkeSBzZXRzIHRoZSBzY2FsZSBmYWN0b3IgYW5kIHVwZGF0ZXMgdGhl
IHZpZXdwb3J0LgogICAgICAgICBzaXplRGlkQ2hhbmdlKG1fd2ViUGFnZS5zaXplKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFw
aGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdC5oCmluZGV4IGI3ODQ2ODE2NzliLi4yMjg3NjE2MmU2OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9U
aHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVGhyZWFkZWRDb29yZGluYXRlZExh
eWVyVHJlZUhvc3QuaApAQCAtNTcsNyArNTcsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgc2Nyb2xs
Tm9uQ29tcG9zaXRlZENvbnRlbnRzKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNjcm9sbFJlY3Qp
IG92ZXJyaWRlOwogICAgIHZvaWQgc2l6ZURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRTaXpl
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNoYW5nZWQoKSBv
dmVycmlkZTsKLSAgICB2b2lkIHBhZ2VCYWNrZ3JvdW5kVHJhbnNwYXJlbmN5Q2hhbmdlZCgpIG92
ZXJyaWRlOwogCiAgICAgdm9pZCBjb250ZW50c1NpemVDaGFuZ2VkKGNvbnN0IFdlYkNvcmU6Oklu
dFNpemUmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENoYW5nZVZpZXdwb3J0QXR0cmlidXRlcyhX
ZWJDb3JlOjpWaWV3cG9ydEF0dHJpYnV0ZXMmJikgb3ZlcnJpZGU7CkBAIC0xNDMsOCArMTQyLDcg
QEAgcHJpdmF0ZToKICAgICBlbnVtIGNsYXNzIERpc2NhcmRhYmxlU3luY0FjdGlvbnMgewogICAg
ICAgICBVcGRhdGVTaXplID0gMSA8PCAxLAogICAgICAgICBVcGRhdGVWaWV3cG9ydCA9IDEgPDwg
MiwKLSAgICAgICAgVXBkYXRlU2NhbGUgPSAxIDw8IDMsCi0gICAgICAgIFVwZGF0ZUJhY2tncm91
bmQgPSAxIDw8IDQKKyAgICAgICAgVXBkYXRlU2NhbGUgPSAxIDw8IDMKICAgICB9OwogCiAgICAg
Q29tcG9zaXRvckNsaWVudCBtX2NvbXBvc2l0b3JDbGllbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAppbmRleCBjNjkwMzNlODkyZC4uYThkMWIw
N2Y0ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdp
bmdBcmVhLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0Fy
ZWEuaApAQCAtNzksNyArNzksNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNjcm9sbChj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzY3JvbGxSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRTaXpl
JiBzY3JvbGxEZWx0YSkgPSAwOwogCiAgICAgLy8gRklYTUU6IFRoZXNlIHNob3VsZCBiZSBwdXJl
IHZpcnR1YWwuCi0gICAgdmlydHVhbCB2b2lkIHBhZ2VCYWNrZ3JvdW5kVHJhbnNwYXJlbmN5Q2hh
bmdlZCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBmb3JjZVJlcGFpbnQoKSB7IH0KICAgICB2aXJ0
dWFsIGJvb2wgZm9yY2VSZXBhaW50QXN5bmMoQ2FsbGJhY2tJRCkgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgc2V0TGF5ZXJUcmVlU3RhdGVJc0Zyb3plbihib29sKSB7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1w
bC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwu
Y3BwCmluZGV4IDZhODZiMDAyYjg2Li4wODlhYzIwYmY4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuY3BwCkBAIC00MTAsOCAr
NDEwLDcgQEAgdm9pZCBEcmF3aW5nQXJlYUltcGw6OmRpc3BsYXkoVXBkYXRlSW5mbyYgdXBkYXRl
SW5mbykKICAgICB1cGRhdGVJbmZvLnZpZXdTaXplID0gbV93ZWJQYWdlLnNpemUoKTsKICAgICB1
cGRhdGVJbmZvLmRldmljZVNjYWxlRmFjdG9yID0gbV93ZWJQYWdlLmNvcmVQYWdlKCktPmRldmlj
ZVNjYWxlRmFjdG9yKCk7CiAKLSAgICAvLyBBbHdheXMgcmVuZGVyIHRoZSB3aG9sZSBwYWdlIHdo
ZW4gd2UgZG9uJ3QgcmVuZGVyIHRoZSBiYWNrZ3JvdW5kLgotICAgIEludFJlY3QgYm91bmRzID0g
bV93ZWJQYWdlLmRyYXdzQmFja2dyb3VuZCgpID8gbV9kaXJ0eVJlZ2lvbi5ib3VuZHMoKSA6IG1f
d2ViUGFnZS5ib3VuZHMoKTsKKyAgICBJbnRSZWN0IGJvdW5kcyA9IG1fZGlydHlSZWdpb24uYm91
bmRzKCk7CiAgICAgQVNTRVJUKG1fd2ViUGFnZS5ib3VuZHMoKS5jb250YWlucyhib3VuZHMpKTsK
IAogICAgIEludFNpemUgYml0bWFwU2l6ZSA9IGJvdW5kcy5zaXplKCk7CkBAIC00MjQsMTYgKzQy
MywxMSBAQCB2b2lkIERyYXdpbmdBcmVhSW1wbDo6ZGlzcGxheShVcGRhdGVJbmZvJiB1cGRhdGVJ
bmZvKQogICAgIGlmICghYml0bWFwLT5jcmVhdGVIYW5kbGUodXBkYXRlSW5mby5iaXRtYXBIYW5k
bGUpKQogICAgICAgICByZXR1cm47CiAKLSAgICBWZWN0b3I8SW50UmVjdD4gcmVjdHM7Ci0gICAg
aWYgKG1fd2ViUGFnZS5kcmF3c0JhY2tncm91bmQoKSkgewotICAgICAgICByZWN0cyA9IG1fZGly
dHlSZWdpb24ucmVjdHMoKTsKLQotICAgICAgICBpZiAoc2hvdWxkUGFpbnRCb3VuZHNSZWN0KGJv
dW5kcywgcmVjdHMpKSB7Ci0gICAgICAgICAgICByZWN0cy5jbGVhcigpOwotICAgICAgICAgICAg
cmVjdHMuYXBwZW5kKGJvdW5kcyk7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UKKyAgICBWZWN0b3I8
SW50UmVjdD4gcmVjdHMgPSBtX2RpcnR5UmVnaW9uLnJlY3RzKCk7CisgICAgaWYgKHNob3VsZFBh
aW50Qm91bmRzUmVjdChib3VuZHMsIHJlY3RzKSkgeworICAgICAgICByZWN0cy5jbGVhcigpOwog
ICAgICAgICByZWN0cy5hcHBlbmQoYm91bmRzKTsKKyAgICB9CiAKICAgICB1cGRhdGVJbmZvLnNj
cm9sbFJlY3QgPSBtX3Njcm9sbFJlY3Q7CiAgICAgdXBkYXRlSW5mby5zY3JvbGxPZmZzZXQgPSBt
X3Njcm9sbE9mZnNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0xheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0xh
eWVyVHJlZUhvc3QuaAppbmRleCA4NWRkNDU4ZTAxOC4uNTNjMzk4Mjk5ZTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJlZUhvc3QuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9MYXllclRyZWVIb3N0LmgKQEAgLTc0LDcg
Kzc0LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBmb3JjZVJlcGFpbnQoKSA9IDA7CiAg
ICAgdmlydHVhbCBib29sIGZvcmNlUmVwYWludEFzeW5jKENhbGxiYWNrSUQpIHsgcmV0dXJuIGZh
bHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIHNpemVEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYgbmV3U2l6ZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBwYWdlQmFja2dyb3VuZFRyYW5z
cGFyZW5jeUNoYW5nZWQoKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgcGF1c2VSZW5kZXJpbmco
KTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lUmVuZGVyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGQ5MTE0YWY3ODRiLi41NzgzZmI4
NTg4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
QEAgLTUxMiw4ICs1MTIsNiBAQCBXZWJQYWdlOjpXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAKICAgICBzZXRVc2VGaXhlZExh
eW91dChwYXJhbWV0ZXJzLnVzZUZpeGVkTGF5b3V0KTsKIAotICAgIHNldERyYXdzQmFja2dyb3Vu
ZChwYXJhbWV0ZXJzLmRyYXdzQmFja2dyb3VuZCk7Ci0KICAgICBzZXRVbmRlcmxheUNvbG9yKHBh
cmFtZXRlcnMudW5kZXJsYXlDb2xvcik7CiAKICAgICBzZXRQYWdpbmF0aW9uTW9kZShwYXJhbWV0
ZXJzLnBhZ2luYXRpb25Nb2RlKTsKQEAgLTY0MCw2ICs2MzgsOCBAQCBXZWJQYWdlOjpXZWJQYWdl
KHVpbnQ2NF90IHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMp
CiAjaWYgVVNFKEFVRElPX1NFU1NJT04pCiAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2Vy
OjpzZXRTaG91bGREZWFjdGl2YXRlQXVkaW9TZXNzaW9uKHRydWUpOwogI2VuZGlmCisKKyAgICBz
ZXRCYWNrZ3JvdW5kQ29sb3IocGFyYW1ldGVycy5iYWNrZ3JvdW5kQ29sb3IpOwogfQogCiAjaWYg
RU5BQkxFKFdFQl9SVEMpCkBAIC0yODc2LDE5ICsyODc2LDE2IEBAIHZvaWQgV2ViUGFnZTo6c2V0
SW5kaWNhdGluZyhib29sIGluZGljYXRpbmcpCiB9CiAjZW5kaWYKIAotdm9pZCBXZWJQYWdlOjpz
ZXREcmF3c0JhY2tncm91bmQoYm9vbCBkcmF3c0JhY2tncm91bmQpCit2b2lkIFdlYlBhZ2U6OnNl
dEJhY2tncm91bmRDb2xvcihjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpDb2xvcj4mIGJhY2tncm91
bmRDb2xvcikKIHsKLSAgICBpZiAobV9kcmF3c0JhY2tncm91bmQgPT0gZHJhd3NCYWNrZ3JvdW5k
KQorICAgIGlmIChtX2JhY2tncm91bmRDb2xvciA9PSBiYWNrZ3JvdW5kQ29sb3IpCiAgICAgICAg
IHJldHVybjsKIAotICAgIG1fZHJhd3NCYWNrZ3JvdW5kID0gZHJhd3NCYWNrZ3JvdW5kOworICAg
IG1fYmFja2dyb3VuZENvbG9yID0gYmFja2dyb3VuZENvbG9yOwogCi0gICAgaWYgKEZyYW1lVmll
dyogZnJhbWVWaWV3ID0gbWFpbkZyYW1lVmlldygpKSB7Ci0gICAgICAgIGJvb2wgaXNUcmFuc3Bh
cmVudCA9ICFkcmF3c0JhY2tncm91bmQ7Ci0gICAgICAgIGZyYW1lVmlldy0+dXBkYXRlQmFja2dy
b3VuZFJlY3Vyc2l2ZWx5KGlzVHJhbnNwYXJlbnQpOwotICAgIH0KKyAgICBpZiAoRnJhbWVWaWV3
KiBmcmFtZVZpZXcgPSBtYWluRnJhbWVWaWV3KCkpCisgICAgICAgIGZyYW1lVmlldy0+dXBkYXRl
QmFja2dyb3VuZFJlY3Vyc2l2ZWx5KGJhY2tncm91bmRDb2xvcik7CiAKLSAgICBtX2RyYXdpbmdB
cmVhLT5wYWdlQmFja2dyb3VuZFRyYW5zcGFyZW5jeUNoYW5nZWQoKTsKICAgICBtX2RyYXdpbmdB
cmVhLT5zZXROZWVkc0Rpc3BsYXkoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oCmluZGV4IDFiZTU5MDZjOTVkLi5mOGQ5MmViY2ZmNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtNDk5LDggKzQ5OSw2IEBA
IHB1YmxpYzoKICAgICAKICAgICB2b2lkIHBvc3RJbmplY3RlZEJ1bmRsZU1lc3NhZ2UoY29uc3Qg
U3RyaW5nJiBtZXNzYWdlTmFtZSwgY29uc3QgVXNlckRhdGEmKTsKIAotICAgIGJvb2wgZHJhd3NC
YWNrZ3JvdW5kKCkgY29uc3QgeyByZXR1cm4gbV9kcmF3c0JhY2tncm91bmQ7IH0KLQogICAgIHZv
aWQgc2V0VW5kZXJsYXlDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYgY29sb3IpIHsgbV91bmRl
cmxheUNvbG9yID0gY29sb3I7IH0KICAgICBXZWJDb3JlOjpDb2xvciB1bmRlcmxheUNvbG9yKCkg
Y29uc3QgeyByZXR1cm4gbV91bmRlcmxheUNvbG9yOyB9CiAKQEAgLTExMzcsNiArMTEzNSw4IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgZGlkUmVjZWl2ZVdlYlBhZ2VNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6RGVjb2RlciYpOwogCisgICAgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6Q29s
b3I+JiBiYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91bmRDb2xvcjsg
fQorCiBwcml2YXRlOgogICAgIFdlYlBhZ2UodWludDY0X3QgcGFnZUlELCBXZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzJiYpOwogCkBAIC0xMjYzLDcgKzEyNjMsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgc2V0SW5kaWNhdGluZyhib29sKTsKICNlbmRpZgogCi0gICAgdm9pZCBzZXREcmF3c0JhY2tn
cm91bmQoYm9vbCk7CisgICAgdm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgT3B0aW9uYWw8
V2ViQ29yZTo6Q29sb3I+Jik7CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIHNldFRv
cENvbnRlbnRJbnNldEZlbmNlZChmbG9hdCwgSVBDOjpBdHRhY2htZW50KTsKQEAgLTE3NDcsNyAr
MTc0Nyw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzU3VzcGVuZGVkVW5kZXJMb2NrIHsgZmFs
c2UgfTsKIAogICAgIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IG1f
bWltZVR5cGVzV2l0aEN1c3RvbUNvbnRlbnRQcm92aWRlcnM7Ci0gICAgV2ViQ29yZTo6Q29sb3Ig
bV9iYWNrZ3JvdW5kQ29sb3IgeyBXZWJDb3JlOjpDb2xvcjo6d2hpdGUgfTsKKyAgICBPcHRpb25h
bDxXZWJDb3JlOjpDb2xvcj4gbV9iYWNrZ3JvdW5kQ29sb3IgeyBXZWJDb3JlOjpDb2xvcjo6d2hp
dGUgfTsKIAogICAgIEhhc2hTZXQ8dW5zaWduZWQ+IG1fYWN0aXZlUmVuZGVyaW5nU3VwcHJlc3Np
b25Ub2tlbnM7CiAgICAgdW5zaWduZWQgbV9tYXhpbXVtUmVuZGVyaW5nU3VwcHJlc3Npb25Ub2tl
biB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluCmluZGV4IDQ3ZTljZTZiYTdjLi4wYjMyNmIyZWM0YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
CkBAIC0yNSw3ICsyNSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewog
ICAgIFNldEFjdGl2aXR5U3RhdGUoT3B0aW9uU2V0PFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZs
YWc+IGFjdGl2aXR5U3RhdGUsIFdlYktpdDo6QWN0aXZpdHlTdGF0ZUNoYW5nZUlEIGFjdGl2aXR5
U3RhdGVDaGFuZ2VJRCwgVmVjdG9yPFdlYktpdDo6Q2FsbGJhY2tJRD4gY2FsbGJhY2tJRHMpCiAg
ICAgU2V0TGF5ZXJIb3N0aW5nTW9kZShlbnVtOnVpbnQ4X3QgV2ViS2l0OjpMYXllckhvc3RpbmdN
b2RlIGxheWVySG9zdGluZ01vZGUpCiAKLSAgICBTZXREcmF3c0JhY2tncm91bmQoYm9vbCBkcmF3
c0JhY2tncm91bmQpCisgICAgU2V0QmFja2dyb3VuZENvbG9yKE9wdGlvbmFsPFdlYkNvcmU6OkNv
bG9yPiBjb2xvcikKIAogICAgIEFkZENvbnNvbGVNZXNzYWdlKHVpbnQ2NF90IGZyYW1lSUQsIGVu
dW06dWludDhfdCBKU0M6Ok1lc3NhZ2VTb3VyY2UgbWVzc2FnZVNvdXJjZSwgZW51bTp1aW50OF90
IEpTQzo6TWVzc2FnZUxldmVsIG1lc3NhZ2VMZXZlbCwgU3RyaW5nIG1lc3NhZ2UsIHVpbnQ2NF90
IHJlcXVlc3RJRCkKICAgICBTZW5kQ1NQVmlvbGF0aW9uUmVwb3J0KHVpbnQ2NF90IGZyYW1lSUQs
IFVSTCByZXBvcnRVUkwsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgcmVwb3J0RGF0YSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCA0NzMwNTI3MTU0My4uZWNjMjU4NTYwMjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxOS0wMS0xOCAgUGhp
bGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CisKKyAgICAgICAgW1dQRV0gQWRk
IEFQSSBmb3Igd2VidmlldyBiYWNrZ3JvdW5kIGNvbG9yIGNvbmZpZ3VyYXRpb24KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MjMwNQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UpOiBDcmVhdGUKKyAgICAgICAgRnJhbWVW
aWV3IHdpdGggYmFja2dyb3VuZCBjb2xvci4KKwogMjAxOS0wMS0zMSAgQWxleCBDaHJpc3RlbnNl
biAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmVydCByMjM4ODE5IHdo
aWNoIGlzIHVubmVlZGVkIGFuZCBjYXVzZWQgYSBwZXJmb3JtYW5jZSByZWdyZXNzaW9uLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDcwMzFmYzdkOTc1Li45ZDI0Mjk2YzlkNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtOTgzLDEwICs5ODMsMTIgQEAgdm9p
ZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6dHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFnZSgp
CiAKICAgICBSRUNUIHBpeGVsUmVjdDsKICAgICB2aWV3LT5mcmFtZVJlY3QoJnBpeGVsUmVjdCk7
Ci0gICAgYm9vbCB0cmFuc3BhcmVudCA9IHZpZXctPnRyYW5zcGFyZW50KCk7CisgICAgT3B0aW9u
YWw8Q29sb3I+IGJhY2tncm91bmRDb2xvcjsKKyAgICBpZiAodmlldy0+dHJhbnNwYXJlbnQoKSkK
KyAgICAgICAgYmFja2dyb3VuZENvbG9yID0gQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50KTsKICAg
ICBGbG9hdFJlY3QgbG9naWNhbEZyYW1lKHBpeGVsUmVjdCk7CiAgICAgbG9naWNhbEZyYW1lLnNj
YWxlKDEuMGYgLyB2aWV3LT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKLSAgICBjb3JlKG1fd2ViRnJh
bWUpLT5jcmVhdGVWaWV3KGVuY2xvc2luZ0ludFJlY3QobG9naWNhbEZyYW1lKS5zaXplKCksIHRy
YW5zcGFyZW50LCAvKiBmaXhlZExheW91dFNpemUgKi8geyB9LCAvKiBmaXhlZFZpc2libGVDb250
ZW50UmVjdCAqLyB7IH0pOworICAgIGNvcmUobV93ZWJGcmFtZSktPmNyZWF0ZVZpZXcoZW5jbG9z
aW5nSW50UmVjdChsb2dpY2FsRnJhbWUpLnNpemUoKSwgYmFja2dyb3VuZENvbG9yLCAvKiBmaXhl
ZExheW91dFNpemUgKi8geyB9LCAvKiBmaXhlZFZpc2libGVDb250ZW50UmVjdCAqLyB7IH0pOwog
fQogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWRTYXZlVG9QYWdlQ2FjaGUoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCmluZGV4IDA0YjZmZWEzY2I0Li40YWQzMTY2MDE3
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcApAQCAtMjA4OSw3ICsyMDg5LDEw
IEBAIHZvaWQgV2ViRnJhbWU6OnVwZGF0ZUJhY2tncm91bmQoKQogICAgIGlmICghY29yZUZyYW1l
IHx8ICFjb3JlRnJhbWUtPnZpZXcoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgY29yZUZyYW1l
LT52aWV3KCktPnVwZGF0ZUJhY2tncm91bmRSZWN1cnNpdmVseSh3ZWJWaWV3KCktPnRyYW5zcGFy
ZW50KCkpOworICAgIE9wdGlvbmFsPENvbG9yPiBiYWNrZ3JvdW5kQ29sb3I7CisgICAgaWYgKHdl
YlZpZXcoKS0+dHJhbnNwYXJlbnQoKSkKKyAgICAgICAgYmFja2dyb3VuZENvbG9yID0gQ29sb3Io
Q29sb3I6OnRyYW5zcGFyZW50KTsKKyAgICBjb3JlRnJhbWUtPnZpZXcoKS0+dXBkYXRlQmFja2dy
b3VuZFJlY3Vyc2l2ZWx5KGJhY2tncm91bmRDb2xvcik7CiB9CiAKIC8vIElXZWJGcmFtZTIKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBjMTU4MGZm
NjVjOC4uODY2NmI0Yzc1MzAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29s
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxOS0wMS0xOCAgUGhpbGlwcGUgTm9ybWFu
ZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CisKKyAgICAgICAgW1dQRV0gQWRkIEFQSSBmb3Igd2Vi
dmlldyBiYWNrZ3JvdW5kIGNvbG9yIGNvbmZpZ3VyYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MjMwNQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTWluaUJyb3dzZXIvd3BlL21haW4uY3BwOgor
ICAgICAgICAobWFpbik6IEFkZCBhIG5ldyBvcHRpb24gdG8gY29uZmlndXJlIHRoZSB3ZWJ2aWV3
IGJhY2tncm91bmQKKyAgICAgICAgY29sb3IuIEV4YW1wbGU6IC0tYmctY29sb3I9dHJhbnNwYXJl
bnQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRX
ZWJWaWV3LmNwcDoKKyAgICAgICAgKHRlc3RXZWJWaWV3QmFja2dyb3VuZENvbG9yKTogRW5hYmxl
IGJhY2tncm91bmQgY29sb3IgQVBJIHRlc3RzIGZvciBXUEUuCisgICAgICAgIChiZWZvcmVBbGwp
OiBEaXR0by4KKwogMjAxOS0wMS0xNiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGln
YWxpYS5jb20+CiAKICAgICAgICAgW0dUS11bV1BFXSBBZGQgd2ViIGV4dGVuc2lvbnMgQVBJIHRv
IHdoaXRlbGlzdCBhY2Nlc3MgdG8gYSBzZWN1cml0eSBvcmlnaW4KZGlmZiAtLWdpdCBhL1Rvb2xz
L01pbmlCcm93c2VyL3dwZS9tYWluLmNwcCBiL1Rvb2xzL01pbmlCcm93c2VyL3dwZS9tYWluLmNw
cAppbmRleCBlZDc3NTI4YjJjZS4uMzQwM2U2MDkzMTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlC
cm93c2VyL3dwZS9tYWluLmNwcAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci93cGUvbWFpbi5jcHAK
QEAgLTQyLDYgKzQyLDcgQEAgc3RhdGljIGdib29sZWFuIGlnbm9yZVRMU0Vycm9yczsKIHN0YXRp
YyBjb25zdCBjaGFyKiBjb29raWVzRmlsZTsKIHN0YXRpYyBjb25zdCBjaGFyKiBjb29raWVzUG9s
aWN5Owogc3RhdGljIGNvbnN0IGNoYXIqIHByb3h5OworY29uc3QgY2hhciogYmdDb2xvcjsKIAog
c3RhdGljIGNvbnN0IEdPcHRpb25FbnRyeSBjb21tYW5kTGluZU9wdGlvbnNbXSA9CiB7CkBAIC01
Myw2ICs1NCw3IEBAIHN0YXRpYyBjb25zdCBHT3B0aW9uRW50cnkgY29tbWFuZExpbmVPcHRpb25z
W10gPQogICAgIHsgInByb3h5IiwgMCwgMCwgR19PUFRJT05fQVJHX1NUUklORywgJnByb3h5LCAi
U2V0IHByb3h5IiwgIlBST1hZIiB9LAogICAgIHsgImlnbm9yZS1ob3N0IiwgMCwgMCwgR19PUFRJ
T05fQVJHX1NUUklOR19BUlJBWSwgJmlnbm9yZUhvc3RzLCAiU2V0IHByb3h5IGlnbm9yZSBob3N0
cyIsICJIT1NUUyIgfSwKICAgICB7ICJpZ25vcmUtdGxzLWVycm9ycyIsIDAsIDAsIEdfT1BUSU9O
X0FSR19OT05FLCAmaWdub3JlVExTRXJyb3JzLCAiSWdub3JlIFRMUyBlcnJvcnMiLCBudWxscHRy
IH0sCisgICAgeyAiYmctY29sb3IiLCAwLCAwLCBHX09QVElPTl9BUkdfU1RSSU5HLCAmYmdDb2xv
ciwgIldpbmRvdyBiYWNrZ3JvdW5kIGNvbG9yLiBEZWZhdWx0OiB3aGl0ZSIsICJDT0xPUiIgfSwK
ICAgICB7IEdfT1BUSU9OX1JFTUFJTklORywgMCwgMCwgR19PUFRJT05fQVJHX0ZJTEVOQU1FX0FS
UkFZLCAmdXJpQXJndW1lbnRzLCBudWxscHRyLCAiW1VSTF0iIH0sCiAgICAgeyBudWxscHRyLCAw
LCAwLCBHX09QVElPTl9BUkdfTk9ORSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciB9CiB9OwpA
QCAtMTk1LDYgKzE5NywxMCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogICAg
IGlmIChpZ25vcmVUTFNFcnJvcnMpCiAgICAgICAgIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfdGxz
X2Vycm9yc19wb2xpY3kod2ViQ29udGV4dCwgV0VCS0lUX1RMU19FUlJPUlNfUE9MSUNZX0lHTk9S
RSk7CiAKKyAgICBXZWJLaXRDb2xvciBjb2xvcjsKKyAgICBpZiAoYmdDb2xvciAmJiB3ZWJraXRf
Y29sb3JfcGFyc2UoJmNvbG9yLCBiZ0NvbG9yKSkKKyAgICAgICAgd2Via2l0X3dlYl92aWV3X3Nl
dF9iYWNrZ3JvdW5kX2NvbG9yKHdlYlZpZXcsICZjb2xvcik7CisKICAgICBpZiAodXJpQXJndW1l
bnRzKQogICAgICAgICB3ZWJraXRfd2ViX3ZpZXdfbG9hZF91cmkod2ViVmlldywgdXJpQXJndW1l
bnRzWzBdKTsKICAgICBlbHNlIGlmICghYXV0b21hdGlvbk1vZGUpCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYlZpZXcuY3BwIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJWaWV3LmNw
cAppbmRleCA1NGYxOTdiODgzMy4uZDA1MzFiNDlmMGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0V2ViVmlldy5jcHAKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcApA
QCAtMTEzMywxMSArMTEzMywxNiBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0lzUGxheWluZ0F1
ZGlvKElzUGxheWluZ0F1ZGlvV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaQogICAgIGdfYXNz
ZXJ0X2ZhbHNlKHdlYmtpdF93ZWJfdmlld19pc19wbGF5aW5nX2F1ZGlvKHRlc3QtPm1fd2ViVmll
dykpOwogfQogCi0jaWYgUExBVEZPUk0oR1RLKQogc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdCYWNr
Z3JvdW5kQ29sb3IoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7CisjaWYgUExB
VEZPUk0oR1RLKQorI2RlZmluZSBDb2xvclR5cGUgR2RrUkdCQQorI2VsaWYgUExBVEZPUk0oV1BF
KQorI2RlZmluZSBDb2xvclR5cGUgV2ViS2l0Q29sb3IKKyNlbmRpZgorCiAgICAgLy8gV2hpdGUg
aXMgdGhlIGRlZmF1bHQgYmFja2dyb3VuZC4KLSAgICBHZGtSR0JBIHJnYmE7CisgICAgQ29sb3JU
eXBlIHJnYmE7CiAgICAgd2Via2l0X3dlYl92aWV3X2dldF9iYWNrZ3JvdW5kX2NvbG9yKHRlc3Qt
Pm1fd2ViVmlldywgJnJnYmEpOwogICAgIGdfYXNzZXJ0X2NtcGZsb2F0KHJnYmEucmVkLCA9PSwg
MSk7CiAgICAgZ19hc3NlcnRfY21wZmxvYXQocmdiYS5ncmVlbiwgPT0sIDEpOwpAQCAtMTE1NSwx
MCArMTE2MCwyMyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0JhY2tncm91bmRDb2xvcihXZWJW
aWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBnX2Fzc2VydF9jbXBmbG9hdChyZ2Jh
LmJsdWUsID09LCAwKTsKICAgICBnX2Fzc2VydF9jbXBmbG9hdChyZ2JhLmFscGhhLCA9PSwgMC41
KTsKIAorI2lmIFBMQVRGT1JNKFdQRSkKKyAgICBDb2xvclR5cGUgY29sb3I7CisgICAgZ19hc3Nl
cnQod2Via2l0X2NvbG9yX3BhcnNlKCZjb2xvciwgInJlZCIpKTsKKyAgICBnX2Fzc2VydF9jbXBm
bG9hdChjb2xvci5yZWQsID09LCAxKTsKKyAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0X2JhY2tncm91
bmRfY29sb3IodGVzdC0+bV93ZWJWaWV3LCAmY29sb3IpOworICAgIHdlYmtpdF93ZWJfdmlld19n
ZXRfYmFja2dyb3VuZF9jb2xvcih0ZXN0LT5tX3dlYlZpZXcsICZyZ2JhKTsKKyAgICBnX2Fzc2Vy
dF9jbXBmbG9hdChyZ2JhLnJlZCwgPT0sIDEpOworICAgIGdfYXNzZXJ0X2NtcGZsb2F0KHJnYmEu
Z3JlZW4sID09LCAwKTsKKyAgICBnX2Fzc2VydF9jbXBmbG9hdChyZ2JhLmJsdWUsID09LCAwKTsK
KyAgICBnX2Fzc2VydF9jbXBmbG9hdChyZ2JhLmFscGhhLCA9PSwgMSk7CisjZW5kaWYKKwogICAg
IC8vIFRoZSBhY3R1YWwgcmVuZGVyaW5nIGNhbid0IGJlIHRlc3RlZCB1c2luZyB1bml0IHRlc3Rz
LCB1c2UKICAgICAvLyBNaW5pQnJvd3NlciAtLWJnLWNvbG9yPSI8Y29sb3ItdmFsdWU+IiBmb3Ig
bWFudWFsbHkgdGVzdGluZyB0aGlzIEFQSS4KIH0KIAorI2lmIFBMQVRGT1JNKEdUSykKIHN0YXRp
YyB2b2lkIHRlc3RXZWJWaWV3UHJlZmVycmVkU2l6ZShXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0
cG9pbnRlcikKIHsKICAgICB0ZXN0LT5sb2FkSHRtbCgiPGh0bWwgc3R5bGU9J3dpZHRoOiAzMjVw
eDsgaGVpZ2h0OiA2MTVweCc+PC9odG1sPiIsIG51bGxwdHIpOwpAQCAtMTM2Myw4ICsxMzgxLDgg
QEAgdm9pZCBiZWZvcmVBbGwoKQogICAgIE5vdGlmaWNhdGlvbldlYlZpZXdUZXN0OjphZGQoIldl
YktpdFdlYlZpZXciLCAibm90aWZpY2F0aW9uLWluaXRpYWwtcGVybWlzc2lvbi1kaXNhbGxvd2Vk
IiwgdGVzdFdlYlZpZXdOb3RpZmljYXRpb25Jbml0aWFsUGVybWlzc2lvbkRpc2FsbG93ZWQpOwog
I2VuZGlmCiAgICAgSXNQbGF5aW5nQXVkaW9XZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3
IiwgImlzLXBsYXlpbmctYXVkaW8iLCB0ZXN0V2ViVmlld0lzUGxheWluZ0F1ZGlvKTsKLSNpZiBQ
TEFURk9STShHVEspCiAgICAgV2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJiYWNr
Z3JvdW5kLWNvbG9yIiwgdGVzdFdlYlZpZXdCYWNrZ3JvdW5kQ29sb3IpOworI2lmIFBMQVRGT1JN
KEdUSykKICAgICBXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgInByZWZlcnJlZC1z
aXplIiwgdGVzdFdlYlZpZXdQcmVmZXJyZWRTaXplKTsKICNlbmRpZgogICAgIFdlYlZpZXdUaXRs
ZVRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJ0aXRsZS1jaGFuZ2UiLCB0ZXN0V2ViVmlld1Rp
dGxlQ2hhbmdlKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>361048</attachid>
            <date>2019-02-04 02:42:05 -0800</date>
            <delta_ts>2019-02-11 04:46:52 -0800</delta_ts>
            <desc>Rebased patch</desc>
            <filename>wk2-wpe-bg-color.diff</filename>
            <type>text/plain</type>
            <size>70140</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA4YjgwMmYwMDM4Yy4uYzZmZDI0MjQxODcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMyBAQAorMjAxOS0wMS0xOCAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxp
YS5jb20+IGFuZCBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKwor
ICAgICAgICBbV1BFXSBBZGQgQVBJIGZvciB3ZWJ2aWV3IGJhY2tncm91bmQgY29sb3IgY29uZmln
dXJhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTkyMzA1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRhcHQgdGhlIEZyYW1lVmlldyBBUEkgdG8gYWxsb3cgYSBkZWZhdWx0IG5vbi13aGl0ZSBiYWNr
Z3JvdW5kIGNvbG9yLgorCisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZTo6Y3JlYXRlVmlldyk6IFJlcGxhY2UgaXNUcmFuc3BhcmVudCBhcmd1bWVudCB3
aXRoIGEgYmFja2dyb3VuZCBjb2xvciBvbmUuCisgICAgICAgICogcGFnZS9GcmFtZS5oOgorICAg
ICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6
cmVjYWxjdWxhdGVCYXNlQmFja2dyb3VuZENvbG9yKTogVXNlIENvbG9yOjp0cmFuc3BhcmVudCBp
ZiBtX2lzVHJhbnNwYXJlbnQgaXMgdHJ1ZS4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6
dXBkYXRlQmFja2dyb3VuZFJlY3Vyc2l2ZWx5KTogQWxsb3cgdGhlIGZhbGxiYWNrIGJhY2tncm91
bmQgY29sb3IgdG8gYmUgbm9uLXdoaXRlLCB0aGlzIGlzCisgICAgICAgIHVzZWQgb25seSBpbiBu
b24tZGFyay1tb2RlLWNzcyBidWlsZCBjb25maWd1cmF0aW9ucy4KKyAgICAgICAgKiBwYWdlL0Zy
YW1lVmlldy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkludGVybmFsczo6c2V0Vmlld0lzVHJhbnNwYXJlbnQpOiBVc2UgQ29sb3I6OnRyYW5z
cGFyZW50IGlmIHRyYW5zcGFyZW50IGlzIHRydWUuCisKIDIwMTktMDItMDMgIEFudHRpIEtvaXZp
c3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIFRpbGVzIG5vdCBjcmVhdGVk
IGluIGxhcmdlIHNjcm9sbGFibGUgaWZyYW1lcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAppbmRleCBhNGY4
M2IyN2YwYi4uNjdjNGIzYTFhMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC05MDEsNyArOTAx
LDcgQEAgUmVmUHRyPFJhbmdlPiBGcmFtZTo6cmFuZ2VGb3JQb2ludChjb25zdCBJbnRQb2ludCYg
ZnJhbWVQb2ludCkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotdm9pZCBGcmFtZTo6Y3JlYXRl
Vmlldyhjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUsIGJvb2wgdHJhbnNwYXJlbnQsCit2b2lk
IEZyYW1lOjpjcmVhdGVWaWV3KGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSwgY29uc3QgT3B0
aW9uYWw8Q29sb3I+JiBiYWNrZ3JvdW5kQ29sb3IsCiAgICAgY29uc3QgSW50U2l6ZSYgZml4ZWRM
YXlvdXRTaXplLCBjb25zdCBJbnRSZWN0JiBmaXhlZFZpc2libGVDb250ZW50UmVjdCwKICAgICBi
b29sIHVzZUZpeGVkTGF5b3V0LCBTY3JvbGxiYXJNb2RlIGhvcml6b250YWxTY3JvbGxiYXJNb2Rl
LCBib29sIGhvcml6b250YWxMb2NrLAogICAgIFNjcm9sbGJhck1vZGUgdmVydGljYWxTY3JvbGxi
YXJNb2RlLCBib29sIHZlcnRpY2FsTG9jaykKQEAgLTkzMiw3ICs5MzIsNyBAQCB2b2lkIEZyYW1l
OjpjcmVhdGVWaWV3KGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSwgYm9vbCB0cmFuc3BhcmVu
dCwKIAogICAgIHNldFZpZXcoZnJhbWVWaWV3LmNvcHlSZWYoKSk7CiAKLSAgICBmcmFtZVZpZXct
PnVwZGF0ZUJhY2tncm91bmRSZWN1cnNpdmVseSh0cmFuc3BhcmVudCk7CisgICAgZnJhbWVWaWV3
LT51cGRhdGVCYWNrZ3JvdW5kUmVjdXJzaXZlbHkoYmFja2dyb3VuZENvbG9yKTsKIAogICAgIGlm
IChpc01haW5GcmFtZSkKICAgICAgICAgZnJhbWVWaWV3LT5zZXRQYXJlbnRWaXNpYmxlKHRydWUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZS5oCmluZGV4IDhhZDEzZDZlMWNjLi43ODQxYWQ1NjJjNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWUuaApAQCAtMTI4LDcgKzEyOCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGluaXRXaXRoU2ltcGxlSFRNTERvY3VtZW50KGNvbnN0IFN0cmluZyYgc3R5bGUsIGNvbnN0
IFVSTCYpOwogI2VuZGlmCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWaWV3KFJlZlB0cjxG
cmFtZVZpZXc+JiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY3JlYXRlVmlldyhjb25zdCBJ
bnRTaXplJiwgYm9vbCB0cmFuc3BhcmVudCwKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNyZWF0
ZVZpZXcoY29uc3QgSW50U2l6ZSYsIGNvbnN0IE9wdGlvbmFsPENvbG9yPiYgYmFja2dyb3VuZENv
bG9yLAogICAgICAgICBjb25zdCBJbnRTaXplJiBmaXhlZExheW91dFNpemUsIGNvbnN0IEludFJl
Y3QmIGZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0LAogICAgICAgICBib29sIHVzZUZpeGVkTGF5b3V0
ID0gZmFsc2UsIFNjcm9sbGJhck1vZGUgPSBTY3JvbGxiYXJBdXRvLCBib29sIGhvcml6b250YWxM
b2NrID0gZmFsc2UsCiAgICAgICAgIFNjcm9sbGJhck1vZGUgPSBTY3JvbGxiYXJBdXRvLCBib29s
IHZlcnRpY2FsTG9jayA9IGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCA2
MmYwMWEyMjNkNC4uZTljOGQ2YWE4MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAg
LTM5OCw3ICszOTgsMTAgQEAgdm9pZCBGcmFtZVZpZXc6OnJlY2FsY3VsYXRlQmFzZUJhY2tncm91
bmRDb2xvcigpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fdXNlc0RhcmtBcHBlYXJhbmNlID0g
dXNpbmdEYXJrQXBwZWFyYW5jZTsKLSAgICB1cGRhdGVCYWNrZ3JvdW5kUmVjdXJzaXZlbHkobV9p
c1RyYW5zcGFyZW50KTsKKyAgICBPcHRpb25hbDxDb2xvcj4gYmFja2dyb3VuZENvbG9yOworICAg
IGlmIChtX2lzVHJhbnNwYXJlbnQpCisgICAgICAgIGJhY2tncm91bmRDb2xvciA9IENvbG9yKENv
bG9yOjp0cmFuc3BhcmVudCk7CisgICAgdXBkYXRlQmFja2dyb3VuZFJlY3Vyc2l2ZWx5KGJhY2tn
cm91bmRDb2xvcik7CiB9CiAjZW5kaWYKIApAQCAtMjk5MSwxOCArMjk5NCwxOCBAQCB2b2lkIEZy
YW1lVmlldzo6c2V0QmFzZUJhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciYgYmFja2dyb3VuZENv
bG9yKQogICAgIHNldE5lZWRzQ29tcG9zaXRpbmdDb25maWd1cmF0aW9uVXBkYXRlKCk7CiB9CiAK
LXZvaWQgRnJhbWVWaWV3Ojp1cGRhdGVCYWNrZ3JvdW5kUmVjdXJzaXZlbHkoYm9vbCB0cmFuc3Bh
cmVudCkKK3ZvaWQgRnJhbWVWaWV3Ojp1cGRhdGVCYWNrZ3JvdW5kUmVjdXJzaXZlbHkoY29uc3Qg
T3B0aW9uYWw8Q29sb3I+JiBiYWNrZ3JvdW5kQ29sb3IpCiB7CiAjaWYgRU5BQkxFKERBUktfTU9E
RV9DU1MpICYmIFBMQVRGT1JNKE1BQykKLSAgICBDb2xvciBiYWNrZ3JvdW5kQ29sb3IgPSB0cmFu
c3BhcmVudCA/IENvbG9yOjp0cmFuc3BhcmVudCA6IFJlbmRlclRoZW1lOjpzaW5nbGV0b24oKS5z
eXN0ZW1Db2xvcihDU1NWYWx1ZUFwcGxlU3lzdGVtQ29udHJvbEJhY2tncm91bmQsIHN0eWxlQ29s
b3JPcHRpb25zKCkpOworICAgIENvbG9yIGJhc2VCYWNrZ3JvdW5kQ29sb3IgPSBiYWNrZ3JvdW5k
Q29sb3IudmFsdWVPcihSZW5kZXJUaGVtZTo6c2luZ2xldG9uKCkuc3lzdGVtQ29sb3IoQ1NTVmFs
dWVBcHBsZVN5c3RlbUNvbnRyb2xCYWNrZ3JvdW5kLCBzdHlsZUNvbG9yT3B0aW9ucygpKSk7CiAj
ZWxzZQotICAgIENvbG9yIGJhY2tncm91bmRDb2xvciA9IHRyYW5zcGFyZW50ID8gQ29sb3I6OnRy
YW5zcGFyZW50IDogQ29sb3I6OndoaXRlOworICAgIENvbG9yIGJhc2VCYWNrZ3JvdW5kQ29sb3Ig
PSBiYWNrZ3JvdW5kQ29sb3IudmFsdWVPcihDb2xvcjo6d2hpdGUpOwogI2VuZGlmCiAKICAgICBm
b3IgKGF1dG8qIGZyYW1lID0gbV9mcmFtZS5wdHIoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRy
ZWUoKS50cmF2ZXJzZU5leHQobV9mcmFtZS5wdHIoKSkpIHsKICAgICAgICAgaWYgKEZyYW1lVmll
dyogdmlldyA9IGZyYW1lLT52aWV3KCkpIHsKLSAgICAgICAgICAgIHZpZXctPnNldFRyYW5zcGFy
ZW50KHRyYW5zcGFyZW50KTsKLSAgICAgICAgICAgIHZpZXctPnNldEJhc2VCYWNrZ3JvdW5kQ29s
b3IoYmFja2dyb3VuZENvbG9yKTsKKyAgICAgICAgICAgIHZpZXctPnNldFRyYW5zcGFyZW50KCFi
YXNlQmFja2dyb3VuZENvbG9yLmlzVmlzaWJsZSgpKTsKKyAgICAgICAgICAgIHZpZXctPnNldEJh
c2VCYWNrZ3JvdW5kQ29sb3IoYmFzZUJhY2tncm91bmRDb2xvcik7CiAgICAgICAgICAgICBpZiAo
dmlldy0+bmVlZHNMYXlvdXQoKSkKICAgICAgICAgICAgICAgICB2aWV3LT5sYXlvdXRDb250ZXh0
KCkuc2NoZWR1bGVMYXlvdXQoKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKaW5k
ZXggMjE3M2RhYzNkMjguLmFjOTNmZDg0MzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKQEAg
LTE5Miw3ICsxOTIsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBDb2xvciBiYXNl
QmFja2dyb3VuZENvbG9yKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRCYXNl
QmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1
cGRhdGVCYWNrZ3JvdW5kUmVjdXJzaXZlbHkoYm9vbCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCB1cGRhdGVCYWNrZ3JvdW5kUmVjdXJzaXZlbHkoY29uc3QgT3B0aW9uYWw8Q29sb3I+JiBiYWNr
Z3JvdW5kQ29sb3IpOwogCiAgICAgZW51bSBFeHRlbmRlZEJhY2tncm91bmRNb2RlRmxhZ3Mgewog
ICAgICAgICBFeHRlbmRlZEJhY2tncm91bmRNb2RlTm9uZSAgICAgICAgICA9IDAsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggN2VmZGI1NGUzZGIuLmVhYjVhZGM3ZWQ1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0xNzEyLDcgKzE3MTIsMTAgQEAg
RXhjZXB0aW9uT3I8dm9pZD4gSW50ZXJuYWxzOjpzZXRWaWV3SXNUcmFuc3BhcmVudChib29sIHRy
YW5zcGFyZW50KQogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGNvbnRleHREb2N1bWVudCgpOwog
ICAgIGlmICghZG9jdW1lbnQgfHwgIWRvY3VtZW50LT52aWV3KCkpCiAgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBJbnZhbGlkQWNjZXNzRXJyb3IgfTsKLSAgICBkb2N1bWVudC0+dmlldygpLT51
cGRhdGVCYWNrZ3JvdW5kUmVjdXJzaXZlbHkodHJhbnNwYXJlbnQpOworICAgIE9wdGlvbmFsPENv
bG9yPiBiYWNrZ3JvdW5kQ29sb3I7CisgICAgaWYgKHRyYW5zcGFyZW50KQorICAgICAgICBiYWNr
Z3JvdW5kQ29sb3IgPSBDb2xvcihDb2xvcjo6dHJhbnNwYXJlbnQpOworICAgIGRvY3VtZW50LT52
aWV3KCktPnVwZGF0ZUJhY2tncm91bmRSZWN1cnNpdmVseShiYWNrZ3JvdW5kQ29sb3IpOwogICAg
IHJldHVybiB7IH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggOWNlMWI4NThmZDQuLjYyN2M5MTQxMDQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwpAQCAtMSwzICsxLDgwIEBACisyMDE5LTAxLTE4ICBQaGlsaXBwZSBOb3JtYW5kIDxw
bm9ybWFuZEBpZ2FsaWEuY29tPiBhbmQgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGln
YWxpYS5jb20+CisKKyAgICAgICAgW1dQRV0gQWRkIEFQSSBmb3Igd2VidmlldyBiYWNrZ3JvdW5k
IGNvbG9yIGNvbmZpZ3VyYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5MjMwNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEluIHRoZSBjYXNlIG9mIFdQRSB3ZSBuZWVkIHRvIHNlbmQgdGhlIGJhY2tn
cm91bmQgY29sb3IgdG8gdGhlIHdlYiBwcm9jZXNzIHRvIGJlIHVzZWQgYXMgdGhlIGJhY2tncm91
bmQgY29sb3Igb2YKKyAgICAgICAgdGhlIHBhZ2UuIFRoaXMgcGF0Y2ggYWRhcHRzIHRoZSBHVEsr
IGltcGxlbWVudGF0aW9uIHRvIGRvIHRoZSBzYW1lLCBzaW5jZSBpdCdzIGEgbG90IHNpbXBsZXIu
IFRoZSBwYXRjaCBhbHNvCisgICAgICAgIHJlbW92ZXMgdGhlIFNldERyYXdzQmFja2dyb3VuZCBt
ZXNzYWdlIGluIGZhdm9yIG9mIHRoZSBuZXcgU2V0QmFja2dyb3VuZENvbG9yIG1lc3NhZ2UgdGhh
dCByZWNlaXZlcyBhbiBvcHRpb25hbAorICAgICAgICBjb2xvci4KKworICAgICAgICAqIFBsYXRm
b3JtV1BFLmNtYWtlOiBBZGQgbmV3IFdQRSBBUEkgZm9yIFdlYktpdENvbG9yIGJveGVkIHR5cGUu
CisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGlj
c1NjZW5lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpw
YWludFRvQ3VycmVudEdMQ29udGV4dCk6IFJlbW92ZSBiYWNrZ3JvdW5kIHJlbmRlcmluZyBhbmQg
b3BhY2l0eSBoYW5kbGluZy4KKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9D
b29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaDoKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRH
cmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6VGhyZWFkZWRDb21wb3NpdG9yOjpyZW5kZXJMYXllclRyZWUpOiBSZW1vdmUg
ZHJhd3NCYWtncm91bmQgYW5kIGFsd2F5cyBjbGVhciB0aGUgY29udGV4dCB3aXRoCisgICAgICAg
IHRyYW5zcGFyZW50IGNvbG9yLgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNz
L3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuaDoKKyAgICAgICAgKiBTaGFy
ZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6IFJlcGxhY2UgZHJhd3NCYWNrZ3Jv
dW5kIHdpdGggYmFja2dyb3VuZENvbG9yLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzOjpkZWNvZGUpOiBEaXR0by4KKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycy5oOgorICAgICAgICAqIFNvdXJjZXNXUEUudHh0OgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3R3RrLmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmll
d19zZXRfYmFja2dyb3VuZF9jb2xvcik6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2Jh
Y2tncm91bmRfY29sb3IpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdENvbG9y
LmNwcDogQWRkZWQuCisgICAgICAgICh3ZWJraXRfY29sb3JfY29weSk6CisgICAgICAgICh3ZWJr
aXRfY29sb3JfZnJlZSk6CisgICAgICAgICh3ZWJraXRDb2xvclRvV2ViQ29yZUNvbG9yKToKKyAg
ICAgICAgKHdlYmtpdENvbG9yRmlsbEZyb21XZWJDb3JlQ29sb3IpOgorICAgICAgICAod2Via2l0
X2NvbG9yX3BhcnNlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRDb2xvci5o
OiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRDb2xvclByaXZhdGUu
aDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViVmlldy5oOiBJ
bXBsZW1lbnQgd2Via2l0X3dlYl92aWV3X3NldF9iYWNrZ3JvdW5kX2NvbG9yIEFQSS4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3V1BFLmNwcDogRGl0dG8uCisgICAg
ICAgICh3ZWJraXRfd2ViX3ZpZXdfc2V0X2JhY2tncm91bmRfY29sb3IpOgorICAgICAgICAod2Vi
a2l0X3dlYl92aWV3X2dldF9iYWNrZ3JvdW5kX2NvbG9yKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL3dwZS9kb2NzL3dwZS0wLjEtc2VjdGlvbnMudHh0OiBBZGQgbmV3IHN5bWJvbHMuCisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6c2V0RHJhd3NCYWNrZ3JvdW5kKTogU2V0IGEgdHJhbnNwYXJlbnQgYmFja2dyb3Vu
ZCBjb2xvciB3aGVuIGZhbHNlIGlzIHBhc3NlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpzZXRCYWNrZ3JvdW5kQ29sb3IpOiBTZW5kIGJhY2tncm91bmQgY29sb3IgdG8gdGhlIFdl
YlByb2Nlc3MuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJhbWV0
ZXJzKTogUmVwbGFjZSBkcmF3c0JhY2tncm91bmQgd2l0aCBiYWNrZ3JvdW5kQ29sb3IuCisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmRyYXdzQmFja2dyb3VuZCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6YmFja2dyb3VuZENvbG9yIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvY2Fpcm8v
QmFja2luZ1N0b3JlQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViS2l0OjpCYWNraW5nU3RvcmU6Omlu
Y29ycG9yYXRlVXBkYXRlKTogUmVtb3ZlIEdUSysgY29kZSB0byBoYW5kbGUgYmFja2dyb3VuZCBj
b2xvci4KKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlLmNw
cDoKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlLmg6IE1h
a2UgcGFpbnQoKSBwdXJlIHZpcnR1YWwgYW5kIHJlbW92ZSB0aGUgaW1wbGVtZW50YXRpb24uCisg
ICAgICAgICogVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQ6OnBhaW50
KTogRG90IG5vdCBjYWxsIEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlOjpwYWludCgpIG5vdyB0aGF0
IGlzIHB1cmUgdmlydHVhbC4KKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFj
a2luZ1N0b3JlWDExLmNwcDoKKyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRCYWNraW5nU3Rv
cmVYMTE6OnBhaW50KTogRGl0dG8uCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9h
ZGVyQ2xpZW50Ojp0cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKTogVXNlIGJhY2tncm91
bmQgY29sb3IgYXMgcHJvdmlkZWQgYnkgdGhlCisgICAgICAgIFVJUHJvY2VzcyB3aGVuIGNyZWF0
aW5nIHRoZSBGcmFtZVZpZXcuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJh
dGVkRHJhd2luZ0FyZWEuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVy
YXRlZERyYXdpbmdBcmVhLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhv
c3QuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9U
aHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlRo
cmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpzZXRJc0Rpc2NhcmRhYmxlKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3
aW5nQXJlYS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYUltcGw6OmRpc3BsYXkpOiBSZW1vdmUg
c3BlY2lhbCBjYXNlIGZvciB0cmFuc3BhcmVudCBiYWNrZ3JvdW5kLgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9MYXllclRyZWVIb3N0Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRCYWNrZ3JvdW5k
Q29sb3IpOiBOZXcgQVBJIGZvciBiYWNrZ3JvdW5kIGNvbG9yIGNvbmZpZ3VyYXRpb24uIFByb3hp
ZXMgdG8gRnJhbWVWaWV3IGFuZCBEcmF3aW5nQXJlYS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpiYWNrZ3JvdW5kQ29s
b3IgY29uc3QpOiBSZWFkLW9ubHkgYWNjZXNzIHRvIHRoZSBjdXJyZW50IGJhY2tncm91bmQgY29s
b3IuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46IFJl
cGxhY2UgU2V0RHJhd3NCYWNrZ3JvdW5kIG1lc3NhZ2Ugd2l0aCBTZXRCYWNrZ3JvdW5kQ29sb3Iu
CisKIDIwMTktMDEtMTYgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgogCiAgICAgICAgIFtHVEtdW1dQRV0gQWRkIHdlYiBleHRlbnNpb25zIEFQSSB0byB3aGl0ZWxp
c3QgYWNjZXNzIHRvIGEgc2VjdXJpdHkgb3JpZ2luCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtV1BFLmNtYWtlIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdQRS5jbWFrZQppbmRl
eCAzYzUxMWVkMGJhMC4uYWFjM2RlOTNjYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm1XUEUuY21ha2UKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdQRS5jbWFrZQpAQCAt
OTgsNiArOTgsNyBAQCBzZXQoV1BFX0FQSV9JTlNUQUxMRURfSEVBREVSUwogICAgICR7V0VCS0lU
X0RJUn0vVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0QmFja0ZvcndhcmRMaXN0LmgKICAgICAke1dF
QktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdEJhY2tGb3J3YXJkTGlzdEl0ZW0uaAog
ICAgICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0Q3JlZGVudGlhbC5oCisg
ICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRDb2xvci5oCiAgICAgJHtX
RUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRDb250ZXh0TWVudS5oCiAgICAgJHtX
RUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRDb250ZXh0TWVudUFjdGlvbnMuaAog
ICAgICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0Q29udGV4dE1lbnVJdGVt
LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcAppbmRleCAxYjJlZDFi
MDI3NS4uZGEyZjhhNTI3ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2Vu
ZS5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmFw
cGx5U3RhdGVDaGFuZ2VzKGNvbnN0IFZlY3RvcjxDb29yZGluYXRlZEdyYXBoaWMKICAgICAgICAg
Y29tbWl0U2NlbmVTdGF0ZShzdGF0ZS5uaWNvc2lhKTsKIH0KIAotdm9pZCBDb29yZGluYXRlZEdy
YXBoaWNzU2NlbmU6OnBhaW50VG9DdXJyZW50R0xDb250ZXh0KGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiBtYXRyaXgsIGZsb2F0IG9wYWNpdHksIGNvbnN0IEZsb2F0UmVjdCYgY2xpcFJlY3Qs
IGNvbnN0IENvbG9yJiBiYWNrZ3JvdW5kQ29sb3IsIGJvb2wgZHJhd3NCYWNrZ3JvdW5kLCBUZXh0
dXJlTWFwcGVyOjpQYWludEZsYWdzIFBhaW50RmxhZ3MpCit2b2lkIENvb3JkaW5hdGVkR3JhcGhp
Y3NTY2VuZTo6cGFpbnRUb0N1cnJlbnRHTENvbnRleHQoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmIG1hdHJpeCwgY29uc3QgRmxvYXRSZWN0JiBjbGlwUmVjdCwgVGV4dHVyZU1hcHBlcjo6UGFp
bnRGbGFncyBQYWludEZsYWdzKQogewogICAgIHVwZGF0ZVNjZW5lU3RhdGUoKTsKIApAQCAtNzgs
MTggKzc4LDggQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnBhaW50VG9DdXJyZW50
R0xDb250ZXh0KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cmkKICAgICBtX3RleHR1cmVNYXBwZXIt
PmJlZ2luUGFpbnRpbmcoUGFpbnRGbGFncyk7CiAgICAgbV90ZXh0dXJlTWFwcGVyLT5iZWdpbkNs
aXAoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgY2xpcFJlY3QpOwogCi0gICAgaWYgKGRyYXdzQmFj
a2dyb3VuZCkgewotICAgICAgICBSR0JBMzIgcmdiYSA9IG1ha2VSR0JBMzJGcm9tRmxvYXRzKGJh
Y2tncm91bmRDb2xvci5yZWQoKSwKLSAgICAgICAgICAgIGJhY2tncm91bmRDb2xvci5ncmVlbigp
LCBiYWNrZ3JvdW5kQ29sb3IuYmx1ZSgpLAotICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yLmFs
cGhhKCkgKiBvcGFjaXR5KTsKLSAgICAgICAgbV90ZXh0dXJlTWFwcGVyLT5kcmF3U29saWRDb2xv
cihjbGlwUmVjdCwgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgQ29sb3IocmdiYSkpOwotICAgIH0g
ZWxzZQotICAgICAgICBtX3RleHR1cmVNYXBwZXItPmNsZWFyQ29sb3IobV92aWV3QmFja2dyb3Vu
ZENvbG9yKTsKLQotICAgIGlmIChjdXJyZW50Um9vdExheWVyLT5vcGFjaXR5KCkgIT0gb3BhY2l0
eSB8fCBjdXJyZW50Um9vdExheWVyLT50cmFuc2Zvcm0oKSAhPSBtYXRyaXgpIHsKLSAgICAgICAg
Y3VycmVudFJvb3RMYXllci0+c2V0T3BhY2l0eShvcGFjaXR5KTsKKyAgICBpZiAoY3VycmVudFJv
b3RMYXllci0+dHJhbnNmb3JtKCkgIT0gbWF0cml4KQogICAgICAgICBjdXJyZW50Um9vdExheWVy
LT5zZXRUcmFuc2Zvcm0obWF0cml4KTsKLSAgICB9CiAKICAgICBjdXJyZW50Um9vdExheWVyLT5w
YWludCgpOwogICAgIG1fZnBzQ291bnRlci51cGRhdGVGUFNBbmREaXNwbGF5KCptX3RleHR1cmVN
YXBwZXIsIGNsaXBSZWN0LmxvY2F0aW9uKCksIG1hdHJpeCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2Vu
ZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZEdyYXBoaWNzU2NlbmUuaAppbmRleCBkNGJiNTgyNjhmZS4uMmU2YjMzNWRiYmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRH
cmFwaGljc1NjZW5lLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaApAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB+Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lKCk7CiAKICAgICB2b2lkIGFw
cGx5U3RhdGVDaGFuZ2VzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNz
U3RhdGU+Jik7Ci0gICAgdm9pZCBwYWludFRvQ3VycmVudEdMQ29udGV4dChjb25zdCBXZWJDb3Jl
OjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0LCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3Qm
LCBjb25zdCBXZWJDb3JlOjpDb2xvciYgYmFja2dyb3VuZENvbG9yLCBib29sIGRyYXdzQmFja2dy
b3VuZCwgV2ViQ29yZTo6VGV4dHVyZU1hcHBlcjo6UGFpbnRGbGFncyA9IDApOworICAgIHZvaWQg
cGFpbnRUb0N1cnJlbnRHTENvbnRleHQoY29uc3QgV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRy
aXgmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBXZWJDb3JlOjpUZXh0dXJlTWFwcGVyOjpQ
YWludEZsYWdzID0gMCk7CiAgICAgdm9pZCBkZXRhY2goKTsKIAogICAgIC8vIFRoZSBwYWludGlu
ZyB0aHJlYWQgbXVzdCBsb2NrIHRoZSBtYWluIHRocmVhZCB0byB1c2UgYmVsb3cgdHdvIG1ldGhv
ZHMsIGJlY2F1c2UgdHdvIG1ldGhvZHMgYWNjZXNzIG1lbWJlcnMgdGhhdCB0aGUgbWFpbiB0aHJl
YWQgbWFuYWdlcy4gU2VlIG1fY2xpZW50LgpAQCAtODIsOSArODIsNiBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBpc0FjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNBY3RpdmU7IH0KICAgICB2b2lkIHNl
dEFjdGl2ZShib29sIGFjdGl2ZSkgeyBtX2lzQWN0aXZlID0gYWN0aXZlOyB9CiAKLSAgICB2b2lk
IHNldFZpZXdCYWNrZ3JvdW5kQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9yKSB7IG1f
dmlld0JhY2tncm91bmRDb2xvciA9IGNvbG9yOyB9Ci0gICAgV2ViQ29yZTo6Q29sb3Igdmlld0Jh
Y2tncm91bmRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fdmlld0JhY2tncm91bmRDb2xvcjsgfQot
CiBwcml2YXRlOgogICAgIHZvaWQgY29tbWl0U2NlbmVTdGF0ZShjb25zdCBXZWJDb3JlOjpDb29y
ZGluYXRlZEdyYXBoaWNzU3RhdGU6Ok5pY29zaWFTdGF0ZSYpOwogICAgIHZvaWQgdXBkYXRlU2Nl
bmVTdGF0ZSgpOwpAQCAtMTEzLDcgKzExMCw2IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVf
cHRyPFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcj4gbV9yb290TGF5ZXI7CiAKICAgICBOaWNv
c2lhOjpQbGF0Zm9ybUxheWVyOjpMYXllcklEIG1fcm9vdExheWVySUQgeyAwIH07Ci0gICAgV2Vi
Q29yZTo6Q29sb3IgbV92aWV3QmFja2dyb3VuZENvbG9yIHsgV2ViQ29yZTo6Q29sb3I6OndoaXRl
IH07CiAKICAgICBXZWJDb3JlOjpUZXh0dXJlTWFwcGVyRlBTQ291bnRlciBtX2Zwc0NvdW50ZXI7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGlj
cy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVk
Q29tcG9zaXRvci5jcHAKaW5kZXggNzUyMmY4NGVhOGYuLjgwNWYyMzMwY2NmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9z
aXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5j
cHAKQEAgLTE1NiwxMyArMTU2LDYgQEAgdm9pZCBUaHJlYWRlZENvbXBvc2l0b3I6OnNldFZpZXdw
b3J0U2l6ZShjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUsIGZsb2F0IHNjYWwKICAgICBtX2Nv
bXBvc2l0aW5nUnVuTG9vcC0+c2NoZWR1bGVVcGRhdGUoKTsKIH0KIAotdm9pZCBUaHJlYWRlZENv
bXBvc2l0b3I6OnNldERyYXdzQmFja2dyb3VuZChib29sIGRyYXdzQmFja2dyb3VuZCkKLXsKLSAg
ICBMb2NrSG9sZGVyIGxvY2tlcihtX2F0dHJpYnV0ZXMubG9jayk7Ci0gICAgbV9hdHRyaWJ1dGVz
LmRyYXdzQmFja2dyb3VuZCA9IGRyYXdzQmFja2dyb3VuZDsKLSAgICBtX2NvbXBvc2l0aW5nUnVu
TG9vcC0+c2NoZWR1bGVVcGRhdGUoKTsKLX0KLQogdm9pZCBUaHJlYWRlZENvbXBvc2l0b3I6OnVw
ZGF0ZVZpZXdwb3J0KCkKIHsKICAgICBtX2NvbXBvc2l0aW5nUnVuTG9vcC0+c2NoZWR1bGVVcGRh
dGUoKTsKQEAgLTE5NCw4ICsxODcsOCBAQCB2b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6cmVuZGVy
TGF5ZXJUcmVlKCkKICAgICBXZWJDb3JlOjpJbnRTaXplIHZpZXdwb3J0U2l6ZTsKICAgICBXZWJD
b3JlOjpJbnRQb2ludCBzY3JvbGxQb3NpdGlvbjsKICAgICBmbG9hdCBzY2FsZUZhY3RvcjsKLSAg
ICBib29sIGRyYXdzQmFja2dyb3VuZDsKICAgICBib29sIG5lZWRzUmVzaXplOworCiAgICAgVmVj
dG9yPFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZT4gc3RhdGVzOwogCiAgICAgewpA
QCAtMjAzLDcgKzE5Niw2IEBAIHZvaWQgVGhyZWFkZWRDb21wb3NpdG9yOjpyZW5kZXJMYXllclRy
ZWUoKQogICAgICAgICB2aWV3cG9ydFNpemUgPSBtX2F0dHJpYnV0ZXMudmlld3BvcnRTaXplOwog
ICAgICAgICBzY3JvbGxQb3NpdGlvbiA9IG1fYXR0cmlidXRlcy5zY3JvbGxQb3NpdGlvbjsKICAg
ICAgICAgc2NhbGVGYWN0b3IgPSBtX2F0dHJpYnV0ZXMuc2NhbGVGYWN0b3I7Ci0gICAgICAgIGRy
YXdzQmFja2dyb3VuZCA9IG1fYXR0cmlidXRlcy5kcmF3c0JhY2tncm91bmQ7CiAgICAgICAgIG5l
ZWRzUmVzaXplID0gbV9hdHRyaWJ1dGVzLm5lZWRzUmVzaXplOwogCiAgICAgICAgIHN0YXRlcyA9
IFdURk1vdmUobV9hdHRyaWJ1dGVzLnN0YXRlcyk7CkBAIC0yNDcsMTQgKzIzOSwxMSBAQCB2b2lk
IFRocmVhZGVkQ29tcG9zaXRvcjo6cmVuZGVyTGF5ZXJUcmVlKCkKICAgICB2aWV3cG9ydFRyYW5z
Zm9ybS5zY2FsZShzY2FsZUZhY3Rvcik7CiAgICAgdmlld3BvcnRUcmFuc2Zvcm0udHJhbnNsYXRl
KC1zY3JvbGxQb3NpdGlvbi54KCksIC1zY3JvbGxQb3NpdGlvbi55KCkpOwogCi0gICAgaWYgKCFk
cmF3c0JhY2tncm91bmQpIHsKLSAgICAgICAgZ2xDbGVhckNvbG9yKDAsIDAsIDAsIDApOwotICAg
ICAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOwotICAgIH0KKyAgICBnbENsZWFyQ29s
b3IoMCwgMCwgMCwgMCk7CisgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKIAogICAg
IG1fc2NlbmUtPmFwcGx5U3RhdGVDaGFuZ2VzKHN0YXRlcyk7Ci0gICAgbV9zY2VuZS0+cGFpbnRU
b0N1cnJlbnRHTENvbnRleHQodmlld3BvcnRUcmFuc2Zvcm0sIDEsIEZsb2F0UmVjdCB7IEZsb2F0
UG9pbnQgeyB9LCB2aWV3cG9ydFNpemUgfSwKLSAgICAgICAgQ29sb3I6OnRyYW5zcGFyZW50LCAh
ZHJhd3NCYWNrZ3JvdW5kLCBtX3BhaW50RmxhZ3MpOworICAgIG1fc2NlbmUtPnBhaW50VG9DdXJy
ZW50R0xDb250ZXh0KHZpZXdwb3J0VHJhbnNmb3JtLCBGbG9hdFJlY3QgeyBGbG9hdFBvaW50IHsg
fSwgdmlld3BvcnRTaXplIH0sIG1fcGFpbnRGbGFncyk7CiAKICAgICBtX2NvbnRleHQtPnN3YXBC
dWZmZXJzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5oIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhy
ZWFkZWRDb21wb3NpdG9yLmgKaW5kZXggNmQ3MDUzODUwZGEuLmI2MzFmYzAzNWY2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29t
cG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9D
b29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3Iu
aApAQCAtNzAsNyArNzAsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTY2FsZUZhY3RvcihmbG9h
dCk7CiAgICAgdm9pZCBzZXRTY3JvbGxQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYs
IGZsb2F0IHNjYWxlKTsKICAgICB2b2lkIHNldFZpZXdwb3J0U2l6ZShjb25zdCBXZWJDb3JlOjpJ
bnRTaXplJiwgZmxvYXQgc2NhbGUpOwotICAgIHZvaWQgc2V0RHJhd3NCYWNrZ3JvdW5kKGJvb2wp
OwogCiAgICAgdm9pZCB1cGRhdGVTY2VuZVN0YXRlKGNvbnN0IFdlYkNvcmU6OkNvb3JkaW5hdGVk
R3JhcGhpY3NTdGF0ZSYpOwogCkBAIC0xMTIsOSArMTExLDcgQEAgcHJpdmF0ZToKICAgICAgICAg
V2ViQ29yZTo6SW50U2l6ZSB2aWV3cG9ydFNpemU7CiAgICAgICAgIFdlYkNvcmU6OkludFBvaW50
IHNjcm9sbFBvc2l0aW9uOwogICAgICAgICBmbG9hdCBzY2FsZUZhY3RvciB7IDEgfTsKLSAgICAg
ICAgYm9vbCBkcmF3c0JhY2tncm91bmQgeyB0cnVlIH07CiAgICAgICAgIGJvb2wgbmVlZHNSZXNp
emUgeyBmYWxzZSB9OwotCiAgICAgICAgIFZlY3RvcjxXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBo
aWNzU3RhdGU+IHN0YXRlczsKIAogICAgICAgICBib29sIGNsaWVudFJlbmRlcnNOZXh0RnJhbWUg
eyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzLmNwcAppbmRleCBiMTY0Y2FkN2NlNi4uMWIyMmQ5NTRiZjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC0z
OCw3ICszOCw2IEBAIHZvaWQgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6
RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IHN0b3JlOwogICAgIGVuY29k
ZXIuZW5jb2RlRW51bShkcmF3aW5nQXJlYVR5cGUpOwogICAgIGVuY29kZXIgPDwgcGFnZUdyb3Vw
RGF0YTsKLSAgICBlbmNvZGVyIDw8IGRyYXdzQmFja2dyb3VuZDsKICAgICBlbmNvZGVyIDw8IGlz
RWRpdGFibGU7CiAgICAgZW5jb2RlciA8PCB1bmRlcmxheUNvbG9yOwogICAgIGVuY29kZXIgPDwg
dXNlRml4ZWRMYXlvdXQ7CkBAIC0xMjIsNiArMTIxLDcgQEAgdm9pZCBXZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogI2lmIEVOQUJM
RShDT05URU5UX0VYVEVOU0lPTlMpCiAgICAgZW5jb2RlciA8PCBjb250ZW50UnVsZUxpc3RzOwog
I2VuZGlmCisgICAgZW5jb2RlciA8PCBiYWNrZ3JvdW5kQ29sb3I7CiB9CiAKIE9wdGlvbmFsPFdl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM+IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29k
ZShJUEM6OkRlY29kZXImIGRlY29kZXIpCkBAIC0xNDAsOCArMTQwLDYgQEAgT3B0aW9uYWw8V2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2Rl
KElQQzo6RGVjb2QKICAgICBpZiAoIXBhZ2VHcm91cERhdGEpCiAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CiAgICAgcGFyYW1ldGVycy5wYWdlR3JvdXBEYXRhID0gV1RGTW92ZSgqcGFnZUdy
b3VwRGF0YSk7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmRyYXdzQmFja2dy
b3VuZCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShwYXJhbWV0ZXJzLmlzRWRpdGFibGUpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy51bmRlcmxheUNvbG9yKSkKQEAg
LTM1Myw2ICszNTEsMTEgQEAgT3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2QKICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKICAgICBwYXJhbWV0ZXJzLmNvbnRlbnRSdWxlTGlzdHMgPSBXVEZNb3Zl
KCpjb250ZW50UnVsZUxpc3RzKTsKICNlbmRpZgorICAgIE9wdGlvbmFsPE9wdGlvbmFsPFdlYkNv
cmU6OkNvbG9yPj4gYmFja2dyb3VuZENvbG9yOworICAgIGRlY29kZXIgPj4gYmFja2dyb3VuZENv
bG9yOworICAgIGlmICghYmFja2dyb3VuZENvbG9yKQorICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgIHBhcmFtZXRlcnMuYmFja2dyb3VuZENvbG9yID0gV1RGTW92ZSgqYmFja2dyb3Vu
ZENvbG9yKTsKIAogICAgIHJldHVybiBXVEZNb3ZlKHBhcmFtZXRlcnMpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4IGQxYjAz
MDNkNzJmLi42ZmFlMzdlODQyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtNzMsNyArNzMsNiBAQCBzdHJ1Y3QgV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgRHJhd2luZ0FyZWFUeXBlIGRyYXdpbmdBcmVhVHlwZTsK
ICAgICBXZWJQYWdlR3JvdXBEYXRhIHBhZ2VHcm91cERhdGE7CiAKLSAgICBib29sIGRyYXdzQmFj
a2dyb3VuZDsKICAgICBib29sIGlzRWRpdGFibGU7CiAKICAgICBXZWJDb3JlOjpDb2xvciB1bmRl
cmxheUNvbG9yOwpAQCAtMTkwLDYgKzE4OSw4IEBAIHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzIHsKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQogICAgIFZlY3RvcjxzdGQ6
OnBhaXI8U3RyaW5nLCBXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERhdGE+PiBjb250ZW50UnVs
ZUxpc3RzOwogI2VuZGlmCisKKyAgICBPcHRpb25hbDxXZWJDb3JlOjpDb2xvcj4gYmFja2dyb3Vu
ZENvbG9yOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NvdXJjZXNXUEUudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzV1BFLnR4dAppbmRl
eCAwMTFjMGQyNmJmMi4uOGI1OGJhYWJmZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291
cmNlc1dQRS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzV1BFLnR4dApAQCAtMTY5LDYg
KzE2OSw3IEBAIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXaW5kb3dQcm9wZXJ0aWVzLmNwcCBA
bm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvd3BlL0NvbXBvc2l0aW5nTWFuYWdlclByb3h5LmNwcCBA
bm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmNwcCBAbm8tdW5pZnkK
IFVJUHJvY2Vzcy9BUEkvd3BlL1Njcm9sbEdlc3R1cmVDb250cm9sbGVyLmNwcCBAbm8tdW5pZnkK
K1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdENvbG9yLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9B
UEkvd3BlL1dlYktpdFNjcmlwdERpYWxvZ1dQRS5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJ
L3dwZS9XZWJLaXRXZWJWaWV3QmFja2VuZC5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL3dw
ZS9XZWJLaXRXZWJWaWV3V1BFLmNwcCBAbm8tdW5pZnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKaW5kZXggNjcyMDFkODllYWEuLjdh
OGExMGY1YzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRXZWJWaWV3LmNwcApAQCAtMzk2OSw3NCArMzk2OSw2IEBAIHZvaWQgd2Via2l0V2ViVmll
d1dlYlByb2Nlc3NUZXJtaW5hdGVkKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdFdlYlBy
b2Nlc3NUCiAgICAgZ19zaWduYWxfZW1pdCh3ZWJWaWV3LCBzaWduYWxzW1dFQl9QUk9DRVNTX1RF
Uk1JTkFURURdLCAwLCByZWFzb24pOwogfQogCi0jaWYgUExBVEZPUk0oR1RLKQotLyoqCi0gKiB3
ZWJraXRfd2ViX3ZpZXdfc2V0X2JhY2tncm91bmRfY29sb3I6Ci0gKiBAd2ViX3ZpZXc6IGEgI1dl
YktpdFdlYlZpZXcKLSAqIEByZ2JhOiBhICNHZGtSR0JBCi0gKgotICogU2V0cyB0aGUgY29sb3Ig
dGhhdCB3aWxsIGJlIHVzZWQgdG8gZHJhdyB0aGUgQHdlYl92aWV3IGJhY2tncm91bmQgYmVmb3Jl
Ci0gKiB0aGUgYWN0dWFsIGNvbnRlbnRzIGFyZSByZW5kZXJlZC4gTm90ZSB0aGF0IGlmIHRoZSB3
ZWIgcGFnZSBsb2FkZWQgaW4gQHdlYl92aWV3Ci0gKiBzcGVjaWZpZXMgYSBiYWNrZ3JvdW5kIGNv
bG9yLCBpdCB3aWxsIHRha2UgcHJlY2VkZW5jZSBvdmVyIHRoZSBAcmdiYSBjb2xvci4KLSAqIEJ5
IGRlZmF1bHQgdGhlIEB3ZWJfdmlldyBiYWNrZ3JvdW5kIGNvbG9yIGlzIG9wYXF1ZSB3aGl0ZS4K
LSAqIE5vdGUgdGhhdCB0aGUgcGFyZW50IHdpbmRvdyBtdXN0IGhhdmUgYSBSR0JBIHZpc3VhbCBh
bmQKLSAqICNHdGtXaWRnZXQ6YXBwLXBhaW50YWJsZSBwcm9wZXJ0eSBzZXQgdG8gJVRSVUUgZm9y
IGJhY2tncm91bmRzIGNvbG9ycyB0byB3b3JrLgotICoKLSAqIDxpbmZvcm1hbGV4YW1wbGU+PHBy
b2dyYW1saXN0aW5nPgotICogc3RhdGljIHZvaWQgYnJvd3Nlcl93aW5kb3dfc2V0X2JhY2tncm91
bmRfY29sb3IgKEJyb3dzZXJXaW5kb3cgKndpbmRvdywKLSAqICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHZGtSR0JBICpyZ2JhKQotICogewot
ICogICAgIFdlYktpdFdlYlZpZXcgKndlYl92aWV3OwotICogICAgIEdka1NjcmVlbiAqc2NyZWVu
ID0gZ3RrX3dpbmRvd19nZXRfc2NyZWVuIChHVEtfV0lORE9XICh3aW5kb3cpKTsKLSAqICAgICBH
ZGtWaXN1YWwgKnJnYmFfdmlzdWFsID0gZ2RrX3NjcmVlbl9nZXRfcmdiYV92aXN1YWwgKHNjcmVl
bik7Ci0gKgotICogICAgIGlmICghcmdiYV92aXN1YWwpCi0gKiAgICAgICAgICByZXR1cm47Ci0g
KgotICogICAgIGd0a193aWRnZXRfc2V0X3Zpc3VhbCAoR1RLX1dJREdFVCAod2luZG93KSwgcmdi
YV92aXN1YWwpOwotICogICAgIGd0a193aWRnZXRfc2V0X2FwcF9wYWludGFibGUgKEdUS19XSURH
RVQgKHdpbmRvdyksIFRSVUUpOwotICoKLSAqICAgICB3ZWJfdmlldyA9IGJyb3dzZXJfd2luZG93
X2dldF93ZWJfdmlldyAod2luZG93KTsKLSAqICAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0X2JhY2tn
cm91bmRfY29sb3IgKHdlYl92aWV3LCByZ2JhKTsKLSAqIH0KLSAqIDwvcHJvZ3JhbWxpc3Rpbmc+
PC9pbmZvcm1hbGV4YW1wbGU+Ci0gKgotICogU2luY2U6IDIuOAotICovCi12b2lkIHdlYmtpdF93
ZWJfdmlld19zZXRfYmFja2dyb3VuZF9jb2xvcihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25z
dCBHZGtSR0JBKiByZ2JhKQotewotICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9W
SUVXKHdlYlZpZXcpKTsKLSAgICBnX3JldHVybl9pZl9mYWlsKHJnYmEpOwotCi0gICAgQ29sb3Ig
Y29sb3IoKnJnYmEpOwotICAgIGF1dG8mIHBhZ2UgPSBnZXRQYWdlKHdlYlZpZXcpOwotICAgIGlm
IChwYWdlLmJhY2tncm91bmRDb2xvcigpID09IGNvbG9yKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBwYWdlLnNldEJhY2tncm91bmRDb2xvcihjb2xvcik7Ci0gICAgcGFnZS5zZXREcmF3c0JhY2tn
cm91bmQoY29sb3IgPT0gQ29sb3I6OndoaXRlKTsKLX0KLQotLyoqCi0gKiB3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X2JhY2tncm91bmRfY29sb3I6Ci0gKiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZpZXcK
LSAqIEByZ2JhOiAob3V0KTogYSAjR2RrUkdCQSB0byBmaWxsIGluIHdpdGggdGhlIGJhY2tncm91
bmQgY29sb3IKLSAqCi0gKiBHZXRzIHRoZSBjb2xvciB0aGF0IGlzIHVzZWQgdG8gZHJhdyB0aGUg
QHdlYl92aWV3IGJhY2tncm91bmQgYmVmb3JlCi0gKiB0aGUgYWN0dWFsIGNvbnRlbnRzIGFyZSBy
ZW5kZXJlZC4KLSAqIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZSBhbHNvIHdlYmtpdF93ZWJfdmll
d19zZXRfYmFja2dyb3VuZF9jb2xvcigpCi0gKgotICogU2luY2U6IDIuOAotICovCi12b2lkIHdl
YmtpdF93ZWJfdmlld19nZXRfYmFja2dyb3VuZF9jb2xvcihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3
LCBHZGtSR0JBKiByZ2JhKQotewotICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9W
SUVXKHdlYlZpZXcpKTsKLSAgICBnX3JldHVybl9pZl9mYWlsKHJnYmEpOwotCi0gICAgKnJnYmEg
PSBnZXRQYWdlKHdlYlZpZXcpLmJhY2tncm91bmRDb2xvcigpOwotfQotI2VuZGlmIC8vIFBMQVRG
T1JNKEdUSykKLQogLyoKICAqIHdlYmtpdF93ZWJfdmlld19pc19lZGl0YWJsZToKICAqIEB3ZWJf
dmlldzogYSAjV2ViS2l0V2ViVmlldwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViVmlld0d0ay5jcHAKaW5kZXggYmM4MjE3OTkxMjguLjc3OTlmYjgx
YzczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YlZpZXdHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2ViVmlld0d0ay5jcHAKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJXZWJLaXRTY3JpcHRE
aWFsb2dJbXBsLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlLmgiCiAjaW5j
bHVkZSAiV2ViS2l0V2ViVmlld1ByaXZhdGUuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9HdGtVdGlsaXRpZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Bs
YXRmb3JtRGlzcGxheS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1TY3JlZW4uaD4KQEAg
LTM1OSwzICszNjAsNjUgQEAgR3RrV2lkZ2V0KiB3ZWJraXRfd2ViX3ZpZXdfbmV3X3dpdGhfdXNl
cl9jb250ZW50X21hbmFnZXIoV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2UKIAogICAgIHJldHVybiBH
VEtfV0lER0VUKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfVklFVywgInVzZXItY29udGVu
dC1tYW5hZ2VyIiwgdXNlckNvbnRlbnRNYW5hZ2VyLCBudWxscHRyKSk7CiB9CisKKy8qKgorICog
d2Via2l0X3dlYl92aWV3X3NldF9iYWNrZ3JvdW5kX2NvbG9yOgorICogQHdlYl92aWV3OiBhICNX
ZWJLaXRXZWJWaWV3CisgKiBAcmdiYTogYSAjR2RrUkdCQQorICoKKyAqIFNldHMgdGhlIGNvbG9y
IHRoYXQgd2lsbCBiZSB1c2VkIHRvIGRyYXcgdGhlIEB3ZWJfdmlldyBiYWNrZ3JvdW5kIGJlZm9y
ZQorICogdGhlIGFjdHVhbCBjb250ZW50cyBhcmUgcmVuZGVyZWQuIE5vdGUgdGhhdCBpZiB0aGUg
d2ViIHBhZ2UgbG9hZGVkIGluIEB3ZWJfdmlldworICogc3BlY2lmaWVzIGEgYmFja2dyb3VuZCBj
b2xvciwgaXQgd2lsbCB0YWtlIHByZWNlZGVuY2Ugb3ZlciB0aGUgQHJnYmEgY29sb3IuCisgKiBC
eSBkZWZhdWx0IHRoZSBAd2ViX3ZpZXcgYmFja2dyb3VuZCBjb2xvciBpcyBvcGFxdWUgd2hpdGUu
CisgKiBOb3RlIHRoYXQgdGhlIHBhcmVudCB3aW5kb3cgbXVzdCBoYXZlIGEgUkdCQSB2aXN1YWwg
YW5kCisgKiAjR3RrV2lkZ2V0OmFwcC1wYWludGFibGUgcHJvcGVydHkgc2V0IHRvICVUUlVFIGZv
ciBiYWNrZ3JvdW5kcyBjb2xvcnMgdG8gd29yay4KKyAqCisgKiA8aW5mb3JtYWxleGFtcGxlPjxw
cm9ncmFtbGlzdGluZz4KKyAqIHN0YXRpYyB2b2lkIGJyb3dzZXJfd2luZG93X3NldF9iYWNrZ3Jv
dW5kX2NvbG9yIChCcm93c2VyV2luZG93ICp3aW5kb3csCisgKiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR2RrUkdCQSAqcmdiYSkKKyAqIHsK
KyAqICAgICBXZWJLaXRXZWJWaWV3ICp3ZWJfdmlldzsKKyAqICAgICBHZGtTY3JlZW4gKnNjcmVl
biA9IGd0a193aW5kb3dfZ2V0X3NjcmVlbiAoR1RLX1dJTkRPVyAod2luZG93KSk7CisgKiAgICAg
R2RrVmlzdWFsICpyZ2JhX3Zpc3VhbCA9IGdka19zY3JlZW5fZ2V0X3JnYmFfdmlzdWFsIChzY3Jl
ZW4pOworICoKKyAqICAgICBpZiAoIXJnYmFfdmlzdWFsKQorICogICAgICAgICAgcmV0dXJuOwor
ICoKKyAqICAgICBndGtfd2lkZ2V0X3NldF92aXN1YWwgKEdUS19XSURHRVQgKHdpbmRvdyksIHJn
YmFfdmlzdWFsKTsKKyAqICAgICBndGtfd2lkZ2V0X3NldF9hcHBfcGFpbnRhYmxlIChHVEtfV0lE
R0VUICh3aW5kb3cpLCBUUlVFKTsKKyAqCisgKiAgICAgd2ViX3ZpZXcgPSBicm93c2VyX3dpbmRv
d19nZXRfd2ViX3ZpZXcgKHdpbmRvdyk7CisgKiAgICAgd2Via2l0X3dlYl92aWV3X3NldF9iYWNr
Z3JvdW5kX2NvbG9yICh3ZWJfdmlldywgcmdiYSk7CisgKiB9CisgKiA8L3Byb2dyYW1saXN0aW5n
PjwvaW5mb3JtYWxleGFtcGxlPgorICoKKyAqIFNpbmNlOiAyLjgKKyAqLwordm9pZCB3ZWJraXRf
d2ViX3ZpZXdfc2V0X2JhY2tncm91bmRfY29sb3IoV2ViS2l0V2ViVmlldyogd2ViVmlldywgY29u
c3QgR2RrUkdCQSogcmdiYSkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJf
VklFVyh3ZWJWaWV3KSk7CisgICAgZ19yZXR1cm5faWZfZmFpbChyZ2JhKTsKKworICAgIGF1dG8m
IHBhZ2UgPSAqd2Via2l0V2ViVmlld0Jhc2VHZXRQYWdlKHJlaW50ZXJwcmV0X2Nhc3Q8V2ViS2l0
V2ViVmlld0Jhc2UqPih3ZWJWaWV3KSk7CisgICAgcGFnZS5zZXRCYWNrZ3JvdW5kQ29sb3IoV2Vi
Q29yZTo6Q29sb3IoKnJnYmEpKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2Jh
Y2tncm91bmRfY29sb3I6CisgKiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZpZXcKKyAqIEByZ2Jh
OiAob3V0KTogYSAjR2RrUkdCQSB0byBmaWxsIGluIHdpdGggdGhlIGJhY2tncm91bmQgY29sb3IK
KyAqCisgKiBHZXRzIHRoZSBjb2xvciB0aGF0IGlzIHVzZWQgdG8gZHJhdyB0aGUgQHdlYl92aWV3
IGJhY2tncm91bmQgYmVmb3JlCisgKiB0aGUgYWN0dWFsIGNvbnRlbnRzIGFyZSByZW5kZXJlZC4K
KyAqIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZSBhbHNvIHdlYmtpdF93ZWJfdmlld19zZXRfYmFj
a2dyb3VuZF9jb2xvcigpCisgKgorICogU2luY2U6IDIuOAorICovCit2b2lkIHdlYmtpdF93ZWJf
dmlld19nZXRfYmFja2dyb3VuZF9jb2xvcihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBHZGtSR0JB
KiByZ2JhKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZp
ZXcpKTsKKyAgICBnX3JldHVybl9pZl9mYWlsKHJnYmEpOworCisgICAgYXV0byYgcGFnZSA9ICp3
ZWJraXRXZWJWaWV3QmFzZUdldFBhZ2UocmVpbnRlcnByZXRfY2FzdDxXZWJLaXRXZWJWaWV3QmFz
ZSo+KHdlYlZpZXcpKTsKKyAgICAqcmdiYSA9IHBhZ2UuYmFja2dyb3VuZENvbG9yKCkudmFsdWVP
cihXZWJDb3JlOjpDb2xvcjo6d2hpdGUpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRDb2xvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvd3BlL1dlYktpdENvbG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMC4uYjgxOGY5NWEzMDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvd3BlL1dlYktpdENvbG9yLmNwcApAQCAtMCwwICsxLDExOCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxOSBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICog
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiV2ViS2l0Q29sb3IuaCIKKworI2luY2x1ZGUgIldlYktpdENvbG9yUHJpdmF0ZS5oIgor
CisvKioKKyAqIFNFQ1RJT046IFdlYktpdENvbG9yCisgKiBAU2hvcnRfZGVzY3JpcHRpb246IEEg
Ym94ZWQgdHlwZSByZXByZXNlbnRpbmcgYSBSR0JBIGNvbG9yCisgKiBAVGl0bGU6IFdlYktpdENv
bG9yCisgKiBAU2VlX2Fsc286ICNXZWJLaXRXZWJWaWV3LgorICoKKyAqIEEgV2ViS2l0Q29sb3Ig
aXMgYSBib3hlZCB0eXBlIHJlcHJlc2VudGluZyBhIFJHQkEgY29sb3IuCisgKgorICogU2luY2U6
IDIuMjQKKyAqLworCisvKioKKyAqIHdlYmtpdF9jb2xvcl9jb3B5OgorICogQGNvbG9yOiBhICNX
ZWJLaXRDb2xvcgorICoKKyAqIE1ha2UgYSBjb3B5IG9mIEBjb2xvci4KKyAqCisgKiBSZXR1cm5z
OiAodHJhbnNmZXIgZnVsbCk6IEEgY29weSBvZiBwYXNzZWQgaW4gI1dlYktpdENvbG9yLgorICoK
KyAqIFNpbmNlOiAyLjI0CisgKi8KK1dlYktpdENvbG9yKiB3ZWJraXRfY29sb3JfY29weShXZWJL
aXRDb2xvciogY29sb3IpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoY29sb3IsIG51bGxw
dHIpOworCisgICAgV2ViS2l0Q29sb3IqIGNvcHkgPSBzdGF0aWNfY2FzdDxXZWJLaXRDb2xvcio+
KGZhc3RaZXJvZWRNYWxsb2Moc2l6ZW9mKFdlYktpdENvbG9yKSkpOworICAgIGNvcHktPnJlZCA9
IGNvbG9yLT5yZWQ7CisgICAgY29weS0+Z3JlZW4gPSBjb2xvci0+Z3JlZW47CisgICAgY29weS0+
Ymx1ZSA9IGNvbG9yLT5ibHVlOworICAgIGNvcHktPmFscGhhID0gY29sb3ItPmFscGhhOworICAg
IHJldHVybiBjb3B5OworfQorCisvKioKKyAqIHdlYmtpdF9jb2xvcl9mcmVlOgorICogQGNvbG9y
OiBhICNXZWJLaXRDb2xvcgorICoKKyAqIEZyZWUgdGhlICNXZWJLaXRDb2xvci4KKyAqCisgKiBT
aW5jZTogMi4yNAorICovCit2b2lkIHdlYmtpdF9jb2xvcl9mcmVlKFdlYktpdENvbG9yKiBjb2xv
cikKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKGNvbG9yKTsKKworICAgIGZhc3RGcmVlKGNvbG9y
KTsKK30KKworR19ERUZJTkVfQk9YRURfVFlQRShXZWJLaXRDb2xvciwgd2Via2l0X2NvbG9yLCB3
ZWJraXRfY29sb3JfY29weSwgd2Via2l0X2NvbG9yX2ZyZWUpOworCitjb25zdCBXZWJDb3JlOjpD
b2xvciB3ZWJraXRDb2xvclRvV2ViQ29yZUNvbG9yKFdlYktpdENvbG9yKiBjb2xvcikKK3sKKyAg
ICByZXR1cm4gV2ViQ29yZTo6Q29sb3Ioc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNvbG9yLT5yZWQpLCBz
dGF0aWNfY2FzdDxmbG9hdD4oY29sb3ItPmdyZWVuKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8Zmxv
YXQ+KGNvbG9yLT5ibHVlKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNvbG9yLT5hbHBoYSkpOworfQor
Cit2b2lkIHdlYmtpdENvbG9yRmlsbEZyb21XZWJDb3JlQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29s
b3ImIHdlYkNvcmVDb2xvciwgV2ViS2l0Q29sb3IqIGNvbG9yKQoreworICAgIFJFTEVBU0VfQVNT
RVJUKHdlYkNvcmVDb2xvci5pc1ZhbGlkKCkpOworCisgICAgZG91YmxlIHIsIGcsIGIsIGE7Cisg
ICAgd2ViQ29yZUNvbG9yLmdldFJHQkEociwgZywgYiwgYSk7CisgICAgY29sb3ItPnJlZCA9IHI7
CisgICAgY29sb3ItPmdyZWVuID0gZzsKKyAgICBjb2xvci0+Ymx1ZSA9IGI7CisgICAgY29sb3It
PmFscGhhID0gYTsKK30KKworLyoqCisgKiB3ZWJraXRfY29sb3JfcGFyc2U6CisgKiBAY29sb3I6
IGEgI1dlYktpdENvbG9yIHRvIGZpbGwgaW4KKyAqIEBjb2xvcl9zdHJpbmc6IGNvbG9yIHJlcHJl
c2VudGF0aW9uIGFzIGNvbG9yIG5pY2tuYW1lIG9yIEhFWCBzdHJpbmcKKyAqCisgKiBDcmVhdGUg
YSBuZXcgI1dlYktpdENvbG9yIGZvciB0aGUgZ2l2ZW4gQGNvbG9yX3N0cmluZworICogcmVwcmVz
ZW50YXRpb24uIFRoZXJlIGFyZSB0d28gdmFsaWQgcmVwcmVzZW50YXRpb24gdHlwZXM6IHN0YW5k
YXJkIGNvbG9yCisgKiBuYW1lcyAoc2VlIGh0dHBzOi8vaHRtbGNvbG9yY29kZXMuY29tL2NvbG9y
LW5hbWVzLyBmb3IgaW5zdGFuY2UpIG9yIEhFWAorICogdmFsdWVzLgorICoKKyAqIFJldHVybnM6
IGEgI2dib29sZWFuIGluZGljYXRpbmcgaWYgdGhlIEBjb2xvciB3YXMgY29ycmVjdGx5IGZpbGxl
ZCBpbiBvciBub3QuCisgKgorICogU2luY2U6IDIuMjQKKyAqLworZ2Jvb2xlYW4gd2Via2l0X2Nv
bG9yX3BhcnNlKFdlYktpdENvbG9yKiBjb2xvciwgY29uc3QgZ2NoYXIqIGNvbG9yU3RyaW5nKQor
eworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGNvbG9yLCBGQUxTRSk7CisgICAgZ19yZXR1cm5f
dmFsX2lmX2ZhaWwoY29sb3JTdHJpbmcsIEZBTFNFKTsKKworICAgIGF1dG8gd2ViQ29yZUNvbG9y
ID0gV2ViQ29yZTo6Q29sb3IoY29sb3JTdHJpbmcpOworICAgIGlmICghd2ViQ29yZUNvbG9yLmlz
VmFsaWQoKSkKKyAgICAgICAgcmV0dXJuIEZBTFNFOworCisgICAgd2Via2l0Q29sb3JGaWxsRnJv
bVdlYkNvcmVDb2xvcih3ZWJDb3JlQ29sb3IsIGNvbG9yKTsKKyAgICByZXR1cm4gVFJVRTsKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0Q29sb3Iu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0Q29sb3IuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZjI2ZDA5MTYwNjgKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdENvbG9yLmgKQEAg
LTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBJZ2FsaWEgUy5MLgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAq
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWYg
IWRlZmluZWQoX19XRUJLSVRfSF9JTlNJREVfXykgJiYgIWRlZmluZWQoV0VCS0lUMl9DT01QSUxB
VElPTikKKyNlcnJvciAiT25seSA8d3BlL3dlYmtpdC5oPiBjYW4gYmUgaW5jbHVkZWQgZGlyZWN0
bHkuIgorI2VuZGlmCisKKyNpZm5kZWYgV2ViS2l0Q29sb3JfaAorI2RlZmluZSBXZWJLaXRDb2xv
cl9oCisKKyNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgorI2luY2x1ZGUgPHdwZS9XZWJLaXREZWZp
bmVzLmg+CisKK0dfQkVHSU5fREVDTFMKKworLyoqCisgKiBXZWJLaXRDb2xvcjoKKyAqIEByZWQ6
IFJlZCBjaGFubmVsLCBiZXR3ZWVuIDAuMCBhbmQgMS4wIGluY2x1c2l2ZQorICogQGdyZWVuOiBH
cmVlbiBjaGFubmVsLCBiZXR3ZWVuIDAuMCBhbmQgMS4wIGluY2x1c2l2ZQorICogQGJsdWU6IEJs
dWUgY2hhbm5lbCwgYmV0d2VlbiAwLjAgYW5kIDEuMCBpbmNsdXNpdmUKKyAqIEBhbHBoYTogQWxw
aGEgY2hhbm5lbCwgYmV0d2VlbiAwLjAgYW5kIDEuMCBpbmNsdXNpdmUKKyAqCisgKiBBIFdlYktp
dENvbG9yIGlzIGEgYm94ZWQgdHlwZSByZXByZXNlbnRpbmcgYSBSR0JBIGNvbG9yLgorICoKKyAq
IFNpbmNlOiAyLjI0CisgKi8KK3N0cnVjdCBfV2ViS2l0Q29sb3IgeworICAgIGdkb3VibGUgcmVk
OworICAgIGdkb3VibGUgZ3JlZW47CisgICAgZ2RvdWJsZSBibHVlOworICAgIGdkb3VibGUgYWxw
aGE7Cit9OworCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0Q29sb3IgV2ViS2l0Q29sb3I7CisKKyNk
ZWZpbmUgV0VCS0lUX1RZUEVfQ09MT1IgKHdlYmtpdF9jb2xvcl9nZXRfdHlwZSgpKQorCitXRUJL
SVRfQVBJIEdUeXBlCit3ZWJraXRfY29sb3JfZ2V0X3R5cGUgICAgICh2b2lkKTsKKworV0VCS0lU
X0FQSSBnYm9vbGVhbgord2Via2l0X2NvbG9yX3BhcnNlICAgICAgICAoV2ViS2l0Q29sb3IgKmNv
bG9yLCBjb25zdCBnY2hhciAqY29sb3Jfc3RyaW5nKTsKKworR19FTkRfREVDTFMKKworI2VuZGlm
IC8qIFdlYktpdENvbG9yX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS93cGUvV2ViS2l0Q29sb3JQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvd3BlL1dlYktpdENvbG9yUHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwLi4yMzlhMTE2MDM0MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0Q29sb3JQcml2YXRlLmgKQEAgLTAsMCArMSwyNiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg
KgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisg
KiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgIkNvbG9yLmgiCisjaW5jbHVkZSAiV2ViS2l0Q29sb3IuaCIKKwordm9pZCB3ZWJraXRD
b2xvckZpbGxGcm9tV2ViQ29yZUNvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiwgV2ViS2l0Q29s
b3IqKTsKK2NvbnN0IFdlYkNvcmU6OkNvbG9yIHdlYmtpdENvbG9yVG9XZWJDb3JlQ29sb3IoV2Vi
S2l0Q29sb3IqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUv
V2ViS2l0V2ViVmlldy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRX
ZWJWaWV3LmgKaW5kZXggNDEwMmE3NTI2ZDYuLjJhNGE2MjA0MjM1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXcuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXcuaApAQCAtNDksNiArNDksNyBA
QAogI2luY2x1ZGUgPHdwZS9XZWJLaXRXZWJDb250ZXh0Lmg+CiAjaW5jbHVkZSA8d3BlL1dlYktp
dFdlYlJlc291cmNlLmg+CiAjaW5jbHVkZSA8d3BlL1dlYktpdFdlYlZpZXdCYWNrZW5kLmg+Cisj
aW5jbHVkZSA8d3BlL1dlYktpdENvbG9yLmg+CiAjaW5jbHVkZSA8d3BlL1dlYktpdFdlYlZpZXdT
ZXNzaW9uU3RhdGUuaD4KICNpbmNsdWRlIDx3cGUvV2ViS2l0V2luZG93UHJvcGVydGllcy5oPgog
CkBAIC01MTcsNiArNTE4LDEzIEBAIFdFQktJVF9BUEkgdm9pZAogd2Via2l0X3dlYl92aWV3X3Jl
bW92ZV9mcmFtZV9kaXNwbGF5ZWRfY2FsbGJhY2sgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAg
ICAgICAgICp3ZWJfdmlldywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGd1aW50ICAgICAgICAgICAgICAgICAgICAgICAgaWQpOwogCitXRUJL
SVRfQVBJIHZvaWQKK3dlYmtpdF93ZWJfdmlld19zZXRfYmFja2dyb3VuZF9jb2xvciAgICAgICAg
ICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRDb2xv
ciAgICAgICAgICAgICAgICAgKmNvbG9yKTsKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl92
aWV3X2dldF9iYWNrZ3JvdW5kX2NvbG9yICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAg
ICAgICAgICAgICAgICp3ZWJfdmlldywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFdlYktpdENvbG9yICAgICAgICAgICAgICAgICAqY29sb3Ip
OworCiBHX0VORF9ERUNMUwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViVmlld1dQRS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXdXUEUuY3BwCmluZGV4IGEzNDk1ZTg1MmUxLi45ZTVj
ZTVjMzg5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJL
aXRXZWJWaWV3V1BFLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dl
YktpdFdlYlZpZXdXUEUuY3BwCkBAIC0yMCw2ICsyMCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiV2ViS2l0V2ViVmlldy5oIgogCisjaW5jbHVkZSAiV2ViS2l0Q29sb3JQcml2
YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViVmlld1ByaXZhdGUuaCIKIAogZ2Jvb2xlYW4gd2Vi
a2l0V2ViVmlld0F1dGhlbnRpY2F0ZShXZWJLaXRXZWJWaWV3KiwgV2ViS2l0QXV0aGVudGljYXRp
b25SZXF1ZXN0KikKQEAgLTE3OCwzICsxNzksNDQgQEAgV2ViS2l0V2ViVmlldyogd2Via2l0X3dl
Yl92aWV3X25ld193aXRoX3VzZXJfY29udGVudF9tYW5hZ2VyKFdlYktpdFdlYlZpZXdCYWNrZW4K
ICAgICAgICAgInVzZXItY29udGVudC1tYW5hZ2VyIiwgdXNlckNvbnRlbnRNYW5hZ2VyLAogICAg
ICAgICBudWxscHRyKSk7CiB9CisKKy8qKgorICogd2Via2l0X3dlYl92aWV3X3NldF9iYWNrZ3Jv
dW5kX2NvbG9yOgorICogQHdlYl92aWV3OiBhICNXZWJLaXRXZWJWaWV3CisgKiBAYmFja2dyb3Vu
ZENvbG9yOiBhICNXZWJLaXRDb2xvcgorICoKKyAqIFNldHMgdGhlIGNvbG9yIHRoYXQgd2lsbCBi
ZSB1c2VkIHRvIGRyYXcgdGhlIEB3ZWJfdmlldyBiYWNrZ3JvdW5kIGJlZm9yZQorICogdGhlIGFj
dHVhbCBjb250ZW50cyBhcmUgcmVuZGVyZWQuIE5vdGUgdGhhdCBpZiB0aGUgd2ViIHBhZ2UgbG9h
ZGVkIGluIEB3ZWJfdmlldworICogc3BlY2lmaWVzIGEgYmFja2dyb3VuZCBjb2xvciwgaXQgd2ls
bCB0YWtlIHByZWNlZGVuY2Ugb3ZlciB0aGUgYmFja2dyb3VuZCBjb2xvci4KKyAqIEJ5IGRlZmF1
bHQgdGhlIEB3ZWJfdmlldyBiYWNrZ3JvdW5kIGNvbG9yIGlzIG9wYXF1ZSB3aGl0ZS4KKyAqCisg
KiBTaW5jZTogMi4yNAorICovCit2b2lkIHdlYmtpdF93ZWJfdmlld19zZXRfYmFja2dyb3VuZF9j
b2xvcihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRDb2xvciogYmFja2dyb3VuZENvbG9y
KQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpKTsK
KyAgICBnX3JldHVybl9pZl9mYWlsKGJhY2tncm91bmRDb2xvcik7CisKKyAgICBhdXRvJiBwYWdl
ID0gd2Via2l0V2ViVmlld0dldFBhZ2Uod2ViVmlldyk7CisgICAgcGFnZS5zZXRCYWNrZ3JvdW5k
Q29sb3Iod2Via2l0Q29sb3JUb1dlYkNvcmVDb2xvcihiYWNrZ3JvdW5kQ29sb3IpKTsKK30KKwor
LyoqCisgKiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2JhY2tncm91bmRfY29sb3I6CisgKiBAd2ViX3Zp
ZXc6IGEgI1dlYktpdFdlYlZpZXcKKyAqIEByZ2JhOiAob3V0KTogYSAjV2ViS2l0Q29sb3IgdG8g
ZmlsbCBpbiB3aXRoIHRoZSBiYWNrZ3JvdW5kIGNvbG9yCisgKgorICogR2V0cyB0aGUgY29sb3Ig
dGhhdCBpcyB1c2VkIHRvIGRyYXcgdGhlIEB3ZWJfdmlldyBiYWNrZ3JvdW5kIGJlZm9yZSB0aGUK
KyAqIGFjdHVhbCBjb250ZW50cyBhcmUgcmVuZGVyZWQuIEZvciBtb3JlIGluZm9ybWF0aW9uIHNl
ZSBhbHNvCisgKiB3ZWJraXRfd2ViX3ZpZXdfc2V0X2JhY2tncm91bmRfY29sb3IoKS4KKyAqCisg
KiBTaW5jZTogMi4yNAorICovCit2b2lkIHdlYmtpdF93ZWJfdmlld19nZXRfYmFja2dyb3VuZF9j
b2xvcihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRDb2xvciogY29sb3IpCit7CisgICAg
Z19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldykpOworICAgIGF1dG8m
IHBhZ2UgPSB3ZWJraXRXZWJWaWV3R2V0UGFnZSh3ZWJWaWV3KTsKKworICAgIGF1dG8mIHdlYkNv
cmVDb2xvciA9IHBhZ2UuYmFja2dyb3VuZENvbG9yKCk7CisgICAgd2Via2l0Q29sb3JGaWxsRnJv
bVdlYkNvcmVDb2xvcih3ZWJDb3JlQ29sb3IudmFsdWVPcihXZWJDb3JlOjpDb2xvcjo6d2hpdGUp
LCBjb2xvcik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3Bl
L2RvY3Mvd3BlLTAuMS1zZWN0aW9ucy50eHQgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
d3BlL2RvY3Mvd3BlLTAuMS1zZWN0aW9ucy50eHQKaW5kZXggNzY2YjgxY2Y3MGMuLjU5MjA3NDRl
NzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3Bl
LTAuMS1zZWN0aW9ucy50eHQKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9k
b2NzL3dwZS0wLjEtc2VjdGlvbnMudHh0CkBAIC0yMDcsNiArMjA3LDggQEAgd2Via2l0X3dlYl92
aWV3X3Jlc3RvcmVfc2Vzc2lvbl9zdGF0ZQogd2Via2l0X3dlYl92aWV3X2dldF9tYWluX3Jlc291
cmNlCiB3ZWJraXRfd2ViX3ZpZXdfYWRkX2ZyYW1lX2Rpc3BsYXllZF9jYWxsYmFjawogd2Via2l0
X3dlYl92aWV3X3JlbW92ZV9mcmFtZV9kaXNwbGF5ZWRfY2FsbGJhY2sKK3dlYmtpdF93ZWJfdmll
d19nZXRfYmFja2dyb3VuZF9jb2xvcgord2Via2l0X3dlYl92aWV3X3NldF9iYWNrZ3JvdW5kX2Nv
bG9yCiAKIDxTVUJTRUNUSU9OIFdlYktpdEphdmFzY3JpcHRSZXN1bHQ+CiBXZWJLaXRKYXZhc2Ny
aXB0UmVzdWx0CkBAIC0yNjcsNiArMjY5LDE2IEBAIHdlYmtpdF93ZWJfdmlld19iYWNrZW5kX25l
dwogd2Via2l0X3dlYl92aWV3X2JhY2tlbmRfZ2V0X3R5cGUKIDwvU0VDVElPTj4KIAorPFNFQ1RJ
T04+Cis8RklMRT5XZWJLaXRDb2xvcjwvRklMRT4KK1dFQktJVF9UWVBFX0NPTE9SCitXZWJLaXRD
b2xvcgord2Via2l0X2NvbG9yX3BhcnNlCisKKzxTVUJTRUNUSU9OIFByaXZhdGU+Cit3ZWJraXRf
Y29sb3JfZ2V0X3R5cGUKKzwvU0VDVElPTj4KKwogPFNFQ1RJT04+CiA8RklMRT5XZWJLaXRBdXRo
ZW50aWNhdGlvblJlcXVlc3Q8L0ZJTEU+CiBXZWJLaXRBdXRoZW50aWNhdGlvblJlcXVlc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDZhMTVjODAxYmVhLi5h
NjZkOGI1NDExMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBA
IC00MjQsNyArNDI0LDYgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYg
cGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCB1aW4KICAgICAsIG1fY3B1TGlt
aXQobV9jb25maWd1cmF0aW9uLT5jcHVMaW1pdCgpKQogICAgICwgbV9iYWNrRm9yd2FyZExpc3Qo
V2ViQmFja0ZvcndhcmRMaXN0OjpjcmVhdGUoKnRoaXMpKQogICAgICwgbV93YWl0c0ZvclBhaW50
QWZ0ZXJWaWV3RGlkTW92ZVRvV2luZG93KG1fY29uZmlndXJhdGlvbi0+d2FpdHNGb3JQYWludEFm
dGVyVmlld0RpZE1vdmVUb1dpbmRvdygpKQotICAgICwgbV9kcmF3c0JhY2tncm91bmQobV9jb25m
aWd1cmF0aW9uLT5kcmF3c0JhY2tncm91bmQoKSkKICAgICAsIG1fcGFnZUlEKHBhZ2VJRCkKICAg
ICAsIG1fY29udHJvbGxlZEJ5QXV0b21hdGlvbihtX2NvbmZpZ3VyYXRpb24tPmlzQ29udHJvbGxl
ZEJ5QXV0b21hdGlvbigpKQogI2lmIFBMQVRGT1JNKENPQ09BKQpAQCAtNDQzLDYgKzQ0Miw5IEBA
IFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlBy
b2Nlc3NQcm94eSYgcHJvY2VzcywgdWluCiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChM
b2FkaW5nLCAiY29uc3RydWN0b3I6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1f
cHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOwogCisgICAgaWYgKCFtX2Nv
bmZpZ3VyYXRpb24tPmRyYXdzQmFja2dyb3VuZCgpKQorICAgICAgICBtX2JhY2tncm91bmRDb2xv
ciA9IENvbG9yKENvbG9yOjp0cmFuc3BhcmVudCk7CisKICAgICBtX3dlYlByb2Nlc3NMaWZldGlt
ZVRyYWNrZXIuYWRkT2JzZXJ2ZXIobV92aXNpdGVkTGlua1N0b3JlKTsKICAgICBtX3dlYlByb2Nl
c3NMaWZldGltZVRyYWNrZXIuYWRkT2JzZXJ2ZXIobV93ZWJzaXRlRGF0YVN0b3JlKTsKIApAQCAt
MTUzOCwxMyArMTU0MCwyMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y3JlYXRlSW5zcGVjdG9yVGFy
Z2V0cygpCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXREcmF3c0JhY2tncm91bmQoYm9vbCBkcmF3
c0JhY2tncm91bmQpCiB7Ci0gICAgaWYgKG1fZHJhd3NCYWNrZ3JvdW5kID09IGRyYXdzQmFja2dy
b3VuZCkKLSAgICAgICAgcmV0dXJuOworICAgIE9wdGlvbmFsPFdlYkNvcmU6OkNvbG9yPiBiYWNr
Z3JvdW5kQ29sb3I7CisgICAgaWYgKCFkcmF3c0JhY2tncm91bmQpCisgICAgICAgIGJhY2tncm91
bmRDb2xvciA9IENvbG9yKENvbG9yOjp0cmFuc3BhcmVudCk7CisgICAgc2V0QmFja2dyb3VuZENv
bG9yKGJhY2tncm91bmRDb2xvcik7Cit9CiAKLSAgICBtX2RyYXdzQmFja2dyb3VuZCA9IGRyYXdz
QmFja2dyb3VuZDsKK3ZvaWQgV2ViUGFnZVByb3h5OjpzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3Qg
T3B0aW9uYWw8V2ViQ29yZTo6Q29sb3I+JiBjb2xvcikKK3sKKyAgICBpZiAobV9iYWNrZ3JvdW5k
Q29sb3IgPT0gY29sb3IpCisgICAgICAgIHJldHVybjsKIAorICAgIG1fYmFja2dyb3VuZENvbG9y
ID0gY29sb3I7CiAgICAgaWYgKGlzVmFsaWQoKSkKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpTZXREcmF3c0JhY2tncm91bmQoZHJhd3NCYWNrZ3JvdW5kKSwgbV9w
YWdlSUQpOworICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEJh
Y2tncm91bmRDb2xvcihjb2xvciksIG1fcGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6
OnNldFRvcENvbnRlbnRJbnNldChmbG9hdCBjb250ZW50SW5zZXQpCkBAIC02Nzg3LDcgKzY3OTYs
NiBAQCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIFdlYlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJh
bWV0ZXJzKFdlYlByb2Nlc3NQcm94eSYgcHJvYwogICAgIHBhcmFtZXRlcnMuZHJhd2luZ0FyZWFU
eXBlID0gbV9kcmF3aW5nQXJlYS0+dHlwZSgpOwogICAgIHBhcmFtZXRlcnMuc3RvcmUgPSBwcmVm
ZXJlbmNlc1N0b3JlKCk7CiAgICAgcGFyYW1ldGVycy5wYWdlR3JvdXBEYXRhID0gbV9wYWdlR3Jv
dXAtPmRhdGEoKTsKLSAgICBwYXJhbWV0ZXJzLmRyYXdzQmFja2dyb3VuZCA9IG1fZHJhd3NCYWNr
Z3JvdW5kOwogICAgIHBhcmFtZXRlcnMuaXNFZGl0YWJsZSA9IG1faXNFZGl0YWJsZTsKICAgICBw
YXJhbWV0ZXJzLnVuZGVybGF5Q29sb3IgPSBtX3VuZGVybGF5Q29sb3I7CiAgICAgcGFyYW1ldGVy
cy51c2VGaXhlZExheW91dCA9IG1fdXNlRml4ZWRMYXlvdXQ7CkBAIC02ODg3LDYgKzY4OTUsNyBA
QCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIFdlYlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJhbWV0
ZXJzKFdlYlByb2Nlc3NQcm94eSYgcHJvYwogI2VuZGlmCiAKICAgICBwYXJhbWV0ZXJzLm5lZWRz
Rm9udEF0dHJpYnV0ZXMgPSBtX25lZWRzRm9udEF0dHJpYnV0ZXM7CisgICAgcGFyYW1ldGVycy5i
YWNrZ3JvdW5kQ29sb3IgPSBtX2JhY2tncm91bmRDb2xvcjsKIAogICAgIHByb2Nlc3MuYWRkV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkobV91c2VyQ29udGVudENvbnRyb2xsZXIsIHBhcmFt
ZXRlcnMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGE3Zjlj
NWQxOGNjLi44NmZlZDJmNzRiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKQEAgLTUxMyw3ICs1MTMsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGNhblNob3dNSU1FVHlw
ZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKIAotICAgIGJvb2wgZHJhd3NCYWNrZ3JvdW5kKCkg
Y29uc3QgeyByZXR1cm4gbV9kcmF3c0JhY2tncm91bmQ7IH0KKyAgICBib29sIGRyYXdzQmFja2dy
b3VuZCgpIGNvbnN0IHsgcmV0dXJuICFtX2JhY2tncm91bmRDb2xvciB8fCBtX2JhY2tncm91bmRD
b2xvci52YWx1ZSgpLmlzVmlzaWJsZSgpOyB9CiAgICAgdm9pZCBzZXREcmF3c0JhY2tncm91bmQo
Ym9vbCk7CiAKICAgICBTdHJpbmcgY3VycmVudFVSTCgpIGNvbnN0OwpAQCAtNzU3LDExICs3NTcs
MTIgQEAgcHVibGljOgogCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIFBsYXRmb3JtV2lkZ2V0IHZp
ZXdXaWRnZXQoKTsKLSAgICBjb25zdCBXZWJDb3JlOjpDb2xvciYgYmFja2dyb3VuZENvbG9yKCkg
Y29uc3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kQ29sb3I7IH0KLSAgICB2b2lkIHNldEJhY2tncm91
bmRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYgY29sb3IpIHsgbV9iYWNrZ3JvdW5kQ29sb3Ig
PSBjb2xvcjsgfQogICAgIGJvb2wgbWFrZUdMQ29udGV4dEN1cnJlbnQoKTsKICNlbmRpZgogCisg
ICAgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6Q29sb3I+JiBiYWNrZ3JvdW5kQ29sb3IoKSBjb25z
dCB7IHJldHVybiBtX2JhY2tncm91bmRDb2xvcjsgfQorICAgIHZvaWQgc2V0QmFja2dyb3VuZENv
bG9yKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkNvbG9yPiYpOworCiAjaWYgUExBVEZPUk0oV0lO
KQogICAgIFBsYXRmb3JtV2lkZ2V0IHZpZXdXaWRnZXQoKTsKICNlbmRpZgpAQCAtMjEwMCw4ICsy
MTAxLDYgQEAgcHJpdmF0ZToKIAogICAgIExheWVySG9zdGluZ01vZGUgbV9sYXllckhvc3RpbmdN
b2RlIHsgTGF5ZXJIb3N0aW5nTW9kZTo6SW5Qcm9jZXNzIH07CiAKLSAgICBib29sIG1fZHJhd3NC
YWNrZ3JvdW5kIHsgdHJ1ZSB9OwotCiAgICAgV2ViQ29yZTo6Q29sb3IgbV91bmRlcmxheUNvbG9y
OwogICAgIFdlYkNvcmU6OkNvbG9yIG1fcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yOwogCkBA
IC0yMjAwLDkgKzIxOTksMTAgQEAgcHJpdmF0ZToKIAogI2lmIFBMQVRGT1JNKEdUSykKICAgICBT
dHJpbmcgbV9hY2Nlc3NpYmlsaXR5UGx1Z0lEOwotICAgIFdlYkNvcmU6OkNvbG9yIG1fYmFja2dy
b3VuZENvbG9yIHsgV2ViQ29yZTo6Q29sb3I6OndoaXRlIH07CiAjZW5kaWYKIAorICAgIE9wdGlv
bmFsPFdlYkNvcmU6OkNvbG9yPiBtX2JhY2tncm91bmRDb2xvcjsKKwogICAgIHVuc2lnbmVkIG1f
cGVuZGluZ0xlYXJuT3JJZ25vcmVXb3JkTWVzc2FnZUNvdW50IHsgMCB9OwogCiAgICAgYm9vbCBt
X21haW5GcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciB7IGZhbHNlIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9jYWlyby9CYWNraW5nU3RvcmVDYWlyby5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9jYWlyby9CYWNraW5nU3RvcmVDYWlyby5jcHAKaW5kZXgg
ZTExMWMyYjM5ODYuLjE4Mjk0ZDM3ZmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9jYWlyby9CYWNraW5nU3RvcmVDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvY2Fpcm8vQmFja2luZ1N0b3JlQ2Fpcm8uY3BwCkBAIC0zNywxMCArMzcsNiBAQAogI2lu
Y2x1ZGUgPFdlYkNvcmUvUmVmUHRyQ2Fpcm8uaD4KICNpbmNsdWRlIDxjYWlyby5oPgogCi0jaWYg
UExBVEZPUk0oR1RLKQotI2luY2x1ZGUgPGd0ay9ndGsuaD4KLSNlbmRpZgotCiAjaWYgUExBVEZP
Uk0oR1RLKSAmJiBQTEFURk9STShYMTEpICYmIGRlZmluZWQoR0RLX1dJTkRPV0lOR19YMTEpCiAj
aW5jbHVkZSA8V2ViQ29yZS9CYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9YMTEuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1BsYXRmb3JtRGlzcGxheVgxMS5oPgpAQCAtOTcsMjQgKzkzLDYgQEAgdm9pZCBC
YWNraW5nU3RvcmU6OmluY29ycG9yYXRlVXBkYXRlKFNoYXJlYWJsZUJpdG1hcCogYml0bWFwLCBj
b25zdCBVcGRhdGVJbmZvJgogICAgIGZvciAoY29uc3QgYXV0byYgdXBkYXRlUmVjdCA6IHVwZGF0
ZUluZm8udXBkYXRlUmVjdHMpIHsKICAgICAgICAgSW50UmVjdCBzcmNSZWN0ID0gdXBkYXRlUmVj
dDsKICAgICAgICAgc3JjUmVjdC5tb3ZlKC11cGRhdGVSZWN0TG9jYXRpb24ueCgpLCAtdXBkYXRl
UmVjdExvY2F0aW9uLnkoKSk7Ci0jaWYgUExBVEZPUk0oR1RLKQotICAgICAgICBpZiAoIW1fd2Vi
UGFnZVByb3h5LmRyYXdzQmFja2dyb3VuZCgpKSB7Ci0gICAgICAgICAgICBjb25zdCBXZWJDb3Jl
OjpDb2xvciBjb2xvciA9IG1fd2ViUGFnZVByb3h5LmJhY2tncm91bmRDb2xvcigpOwotICAgICAg
ICAgICAgaWYgKGNvbG9yLmlzVmlzaWJsZSgpKSB7Ci0gICAgICAgICAgICAgICAgLy8gV2hlbiB0
aGUgYXBwbGljYXRpb24gc2V0cyB0aGUgYmFja2dyb3VuZCBjb2xvciB0aHJvdWdoIG1fd2ViUGFn
ZVByb3h5LmJhY2tncm91bmRDb2xvcigpLCB3ZSB1cGRhdGUgdGhlIHN1cmZhY2UgaW4gMiBzdGVw
cy4KLSAgICAgICAgICAgICAgICAvLyAgIDEuIEZpbGwgdGhlIHN1cmZhY2UgYnkgbV93ZWJQYWdl
UHJveHkuYmFja2dyb3VuZENvbG9yKCkuCi0gICAgICAgICAgICAgICAgLy8gICAyLiBDb21wb3Np
dGUgd2VicGFnZSdzIGJpdG1hcCB3aGljaCBoYXMgYSB0cmFuc3BhcmVudCBiYWNrZ3JvdW5kLgot
ICAgICAgICAgICAgICAgIC8vIEluIHN0ZXAgMSwgd2UgdXNlIENvbXBvc2l0ZUNvcHkgYXMgbV93
ZWJQYWdlUHJveHkuYmFja2dyb3VuZENvbG9yKCkgbWF5IG5vdCBiZSBvcGFxdWUuCi0gICAgICAg
ICAgICAgICAgLy8gT24gdGhlIG90aGVyIGhhbmQsIGluIHN0ZXAgMiwgYml0bWFwIHNob3VsZCBi
ZSBjb21wb3NpdGVkIGJ5IENvbXBvc2l0ZVNvdXJjZU92ZXIKLSAgICAgICAgICAgICAgICAvLyBi
ZWNhdXNlIGl0IHNob3VsZCBiZSBibGVuZGVkIHdpdGggbV93ZWJQYWdlUHJveHkuYmFja2dyb3Vu
ZENvbG9yKCkuCi0gICAgICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmZpbGxSZWN0KHNyY1Jl
Y3QsIGNvbG9yKTsKLSAgICAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0Q29tcG9zaXRl
T3BlcmF0aW9uKFdlYkNvcmU6OkNvbXBvc2l0ZVNvdXJjZU92ZXIpOwotICAgICAgICAgICAgICAg
IGJpdG1hcC0+cGFpbnQoZ3JhcGhpY3NDb250ZXh0LCBkZXZpY2VTY2FsZUZhY3RvcigpLCB1cGRh
dGVSZWN0LmxvY2F0aW9uKCksIHNyY1JlY3QpOwotICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29u
dGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oV2ViQ29yZTo6Q29tcG9zaXRlQ29weSk7Ci0gICAg
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSNlbmRpZgog
ICAgICAgICBiaXRtYXAtPnBhaW50KGdyYXBoaWNzQ29udGV4dCwgZGV2aWNlU2NhbGVGYWN0b3Io
KSwgdXBkYXRlUmVjdC5sb2NhdGlvbigpLCBzcmNSZWN0KTsKICAgICB9CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlLmNw
cAppbmRleCBlY2YzNDVmODBmOC4uZWI2MmQ2ZDY1NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlLmNwcApAQCAtNTks
MjYgKzU5LDQgQEAgQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmU6OkFjY2VsZXJhdGVkQmFja2luZ1N0
b3JlKFdlYlBhZ2VQcm94eSYgd2ViUGFnZSkKIHsKIH0KIAotYm9vbCBBY2NlbGVyYXRlZEJhY2tp
bmdTdG9yZTo6cGFpbnQoY2Fpcm9fdCogY3IsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KQotewot
ICAgIGlmIChtX3dlYlBhZ2UuZHJhd3NCYWNrZ3JvdW5kKCkpCi0gICAgICAgIHJldHVybiB0cnVl
OwotCi0gICAgY29uc3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9yID0gbV93ZWJQYWdlLmJhY2tncm91
bmRDb2xvcigpOwotICAgIGlmICghY29sb3IuaXNPcGFxdWUoKSkgewotICAgICAgICBjYWlyb19y
ZWN0YW5nbGUoY3IsIGNsaXBSZWN0LngoKSwgY2xpcFJlY3QueSgpLCBjbGlwUmVjdC53aWR0aCgp
LCBjbGlwUmVjdC5oZWlnaHQoKSk7Ci0gICAgICAgIGNhaXJvX3NldF9vcGVyYXRvcihjciwgQ0FJ
Uk9fT1BFUkFUT1JfQ0xFQVIpOwotICAgICAgICBjYWlyb19maWxsKGNyKTsKLSAgICB9Ci0KLSAg
ICBpZiAoY29sb3IuaXNWaXNpYmxlKCkpIHsKLSAgICAgICAgc2V0U291cmNlUkdCQUZyb21Db2xv
cihjciwgY29sb3IpOwotICAgICAgICBjYWlyb19zZXRfb3BlcmF0b3IoY3IsIENBSVJPX09QRVJB
VE9SX1NPVVJDRSk7Ci0gICAgICAgIGNhaXJvX3JlY3RhbmdsZShjciwgY2xpcFJlY3QueCgpLCBj
bGlwUmVjdC55KCksIGNsaXBSZWN0LndpZHRoKCksIGNsaXBSZWN0LmhlaWdodCgpKTsKLSAgICAg
ICAgY2Fpcm9fZmlsbChjcik7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3Rr
L0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsv
QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUuaAppbmRleCBlMzUwNTA3YWFjYy4uNDhkYjUzMzQ0ZmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tp
bmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJh
Y2tpbmdTdG9yZS5oCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5BY2Nl
bGVyYXRlZEJhY2tpbmdTdG9yZSgpID0gZGVmYXVsdDsKIAogICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpIHsgfQotICAgIHZpcnR1YWwgYm9vbCBwYWludChj
YWlyb190KiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOworICAgIHZpcnR1YWwgYm9vbCBwYWlu
dChjYWlyb190KiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpID0gMDsKICAgICB2aXJ0dWFsIGJv
b2wgbWFrZUNvbnRleHRDdXJyZW50KCkgeyByZXR1cm4gZmFsc2U7IH0KIAogcHJvdGVjdGVkOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2lu
Z1N0b3JlV2F5bGFuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0
ZWRCYWNraW5nU3RvcmVXYXlsYW5kLmNwcAppbmRleCBmMDFiYWIzYjQwMS4uNjBmNWNhNzE1Njkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tp
bmdTdG9yZVdheWxhbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9BY2Nl
bGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQuY3BwCkBAIC0xMTAsNyArMTEwLDYgQEAgYm9vbCBB
Y2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQ6OnBhaW50KGNhaXJvX3QqIGNyLCBjb25zdCBJ
bnRSZWN0JiBjbGlwUmVjdCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgY2Fpcm9fc2F2
ZShjcik7Ci0gICAgQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmU6OnBhaW50KGNyLCBjbGlwUmVjdCk7
CiAKICNpZiBHVEtfQ0hFQ0tfVkVSU0lPTigzLCAxNiwgMCkKICAgICBpZiAobV9nZGtHTENvbnRl
eHQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRl
ZEJhY2tpbmdTdG9yZVgxMS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQWNjZWxl
cmF0ZWRCYWNraW5nU3RvcmVYMTEuY3BwCmluZGV4IDI3ZDcyYzFjNDdlLi44MmNlOGM2YjY1ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2lu
Z1N0b3JlWDExLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0
ZWRCYWNraW5nU3RvcmVYMTEuY3BwCkBAIC0xODYsNyArMTg2LDYgQEAgYm9vbCBBY2NlbGVyYXRl
ZEJhY2tpbmdTdG9yZVgxMTo6cGFpbnQoY2Fpcm9fdCogY3IsIGNvbnN0IEludFJlY3QmIGNsaXBS
ZWN0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBjYWlyb19zYXZlKGNyKTsKLSAgICBB
Y2NlbGVyYXRlZEJhY2tpbmdTdG9yZTo6cGFpbnQoY3IsIGNsaXBSZWN0KTsKIAogICAgIC8vIFRo
ZSBzdXJmYWNlIGNhbiBiZSBtb2RpZmllZCBieSB0aGUgd2ViIHByb2Nlc3MgYXQgYW55IHRpbWUs
IHNvIHdlIG1hcmsgaXQKICAgICAvLyBhcyBkaXJ0eSB0byBlbnN1cmUgd2UgYWx3YXlzIHJlbmRl
ciB0aGUgdXBkYXRlZCBjb250ZW50cyBhcyBzb29uIGFzIHBvc3NpYmxlLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHAKaW5kZXggOTM4Y2FkZGJmNmMuLjUxMGIwM2I4NTM2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTE0MDYsNyArMTQwNiw2IEBAIHZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UoKQogICAg
IFdlYlBhZ2UqIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CiAKICAgICBib29sIGlzTWFpbkZy
YW1lID0gbV9mcmFtZS0+aXNNYWluRnJhbWUoKTsKLSAgICBib29sIGlzVHJhbnNwYXJlbnQgPSAh
d2ViUGFnZS0+ZHJhd3NCYWNrZ3JvdW5kKCk7CiAgICAgYm9vbCBzaG91bGRVc2VGaXhlZExheW91
dCA9IGlzTWFpbkZyYW1lICYmIHdlYlBhZ2UtPnVzZUZpeGVkTGF5b3V0KCk7CiAgICAgYm9vbCBz
aG91bGREaXNhYmxlU2Nyb2xsaW5nID0gaXNNYWluRnJhbWUgJiYgIXdlYlBhZ2UtPm1haW5GcmFt
ZUlzU2Nyb2xsYWJsZSgpOwogICAgIGJvb2wgc2hvdWxkSGlkZVNjcm9sbGJhcnMgPSBzaG91bGRE
aXNhYmxlU2Nyb2xsaW5nOwpAQCAtMTQzMSw3ICsxNDMwLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6dHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFnZSgpCiAgICAgYm9vbCBob3Jp
em9udGFsTG9jayA9IHNob3VsZEhpZGVTY3JvbGxiYXJzIHx8IHdlYlBhZ2UtPmFsd2F5c1Nob3dz
SG9yaXpvbnRhbFNjcm9sbGVyKCk7CiAgICAgYm9vbCB2ZXJ0aWNhbExvY2sgPSBzaG91bGRIaWRl
U2Nyb2xsYmFycyB8fCB3ZWJQYWdlLT5hbHdheXNTaG93c1ZlcnRpY2FsU2Nyb2xsZXIoKTsKIAot
ICAgIG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5jcmVhdGVWaWV3KHdlYlBhZ2UtPnNpemUoKSwgaXNU
cmFuc3BhcmVudCwKKyAgICBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+Y3JlYXRlVmlldyh3ZWJQYWdl
LT5zaXplKCksIHdlYlBhZ2UtPmJhY2tncm91bmRDb2xvcigpLAogICAgICAgICB3ZWJQYWdlLT5m
aXhlZExheW91dFNpemUoKSwgZml4ZWRWaXNpYmxlQ29udGVudFJlY3QsIHNob3VsZFVzZUZpeGVk
TGF5b3V0LAogICAgICAgICBob3Jpem9udGFsU2Nyb2xsYmFyTW9kZSwgaG9yaXpvbnRhbExvY2ss
IHZlcnRpY2FsU2Nyb2xsYmFyTW9kZSwgdmVydGljYWxMb2NrKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3aW5nQXJlYS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZERyYXdpbmdBcmVh
LmNwcAppbmRleCA5OTIwNDY1YjE3My4uZjI0ODc3NjljOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEu
Y3BwCkBAIC05MywxNCArOTMsNiBAQCB2b2lkIEFjY2VsZXJhdGVkRHJhd2luZ0FyZWE6OnNjcm9s
bChjb25zdCBJbnRSZWN0JiBzY3JvbGxSZWN0LCBjb25zdCBJbnRTaXplJiBzYwogICAgICAgICBt
X2xheWVyVHJlZUhvc3QtPnNjcm9sbE5vbkNvbXBvc2l0ZWRDb250ZW50cyhzY3JvbGxSZWN0KTsK
IH0KIAotdm9pZCBBY2NlbGVyYXRlZERyYXdpbmdBcmVhOjpwYWdlQmFja2dyb3VuZFRyYW5zcGFy
ZW5jeUNoYW5nZWQoKQotewotICAgIGlmIChtX2xheWVyVHJlZUhvc3QpCi0gICAgICAgIG1fbGF5
ZXJUcmVlSG9zdC0+cGFnZUJhY2tncm91bmRUcmFuc3BhcmVuY3lDaGFuZ2VkKCk7Ci0gICAgZWxz
ZSBpZiAobV9wcmV2aW91c0xheWVyVHJlZUhvc3QpCi0gICAgICAgIG1fcHJldmlvdXNMYXllclRy
ZWVIb3N0LT5wYWdlQmFja2dyb3VuZFRyYW5zcGFyZW5jeUNoYW5nZWQoKTsKLX0KLQogdm9pZCBB
Y2NlbGVyYXRlZERyYXdpbmdBcmVhOjpzZXRMYXllclRyZWVTdGF0ZUlzRnJvemVuKGJvb2wgaXNG
cm96ZW4pCiB7CiAgICAgaWYgKG1fbGF5ZXJUcmVlU3RhdGVJc0Zyb3plbiA9PSBpc0Zyb3plbikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVk
RHJhd2luZ0FyZWEuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJh
dGVkRHJhd2luZ0FyZWEuaAppbmRleCA3MGFiZTQzNTkyNS4uYTBkZjU2OGY5YWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0Fy
ZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZERy
YXdpbmdBcmVhLmgKQEAgLTQzLDcgKzQzLDYgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgc2V0TmVl
ZHNEaXNwbGF5KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXROZWVkc0Rpc3BsYXlJblJlY3QoY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2Nyb2xsKGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmIHNjcm9sbFJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNjcm9s
bERlbHRhKSBvdmVycmlkZTsKLSAgICB2b2lkIHBhZ2VCYWNrZ3JvdW5kVHJhbnNwYXJlbmN5Q2hh
bmdlZCgpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0TGF5ZXJUcmVlU3RhdGVJc0Zyb3plbihib29s
KSBvdmVycmlkZTsKICAgICBib29sIGxheWVyVHJlZVN0YXRlSXNGcm96ZW4oKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBtX2xheWVyVHJlZVN0YXRlSXNGcm96ZW47IH0KICAgICBMYXllclRyZWVI
b3N0KiBsYXllclRyZWVIb3N0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9sYXllclRyZWVI
b3N0LmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggMTUyMGY1MjBkYWMuLjkzYjdhMmRkZTcyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhv
c3QuY3BwCkBAIC0yMjQsMTAgKzIyNCw2IEBAIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
OjpkZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNoYW5nZWQoKQogICAgIG1fd2ViUGFnZS5jb3JlUGFn
ZSgpLT5wYWdlT3ZlcmxheUNvbnRyb2xsZXIoKS5kaWRDaGFuZ2VEZXZpY2VTY2FsZUZhY3Rvcigp
OwogfQogCi12b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6cGFnZUJhY2tncm91bmRUcmFu
c3BhcmVuY3lDaGFuZ2VkKCkKLXsKLX0KLQogR3JhcGhpY3NMYXllckZhY3RvcnkqIENvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdDo6Z3JhcGhpY3NMYXllckZhY3RvcnkoKQogewogICAgIHJldHVybiAm
bV9jb29yZGluYXRvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdC5oCmluZGV4IDBhOGJlYzhhMzk4Li5lYTk3NDUzMTU0YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5o
CkBAIC01NSw3ICs1NSw2IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHNpemVEaWRDaGFuZ2UoY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYgbmV3U2l6ZSkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRldmlj
ZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCgpIG92ZXJyaWRlOwotICAgIHZvaWQgcGFnZUJhY2tn
cm91bmRUcmFuc3BhcmVuY3lDaGFuZ2VkKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHNldFZpc2li
bGVDb250ZW50c1JlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jik7CiAgICAgdm9pZCByZW5k
ZXJOZXh0RnJhbWUoYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwCmluZGV4IDgyM2I3ZmEy
YWM3Li4xMDBmYzY0YTYxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRH
cmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTE4NCwxNyAr
MTg0LDYgQEAgdm9pZCBUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6ZGV2aWNlT3JQ
YWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCkKICAgICBtX2NvbXBvc2l0b3ItPnNldFNjYWxlRmFjdG9y
KG1fd2ViUGFnZS5kZXZpY2VTY2FsZUZhY3RvcigpICogbV92aWV3cG9ydENvbnRyb2xsZXIucGFn
ZVNjYWxlRmFjdG9yKCkpOwogfQogCi12b2lkIFRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0OjpwYWdlQmFja2dyb3VuZFRyYW5zcGFyZW5jeUNoYW5nZWQoKQotewotICAgIGlmIChtX2lz
RGlzY2FyZGFibGUpIHsKLSAgICAgICAgbV9kaXNjYXJkYWJsZVN5bmNBY3Rpb25zLmFkZChEaXNj
YXJkYWJsZVN5bmNBY3Rpb25zOjpVcGRhdGVCYWNrZ3JvdW5kKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6cGFnZUJhY2tncm91bmRUcmFu
c3BhcmVuY3lDaGFuZ2VkKCk7Ci0gICAgbV9jb21wb3NpdG9yLT5zZXREcmF3c0JhY2tncm91bmQo
bV93ZWJQYWdlLmRyYXdzQmFja2dyb3VuZCgpKTsKLX0KLQogdm9pZCBUaHJlYWRlZENvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdDo6c2l6ZURpZENoYW5nZShjb25zdCBJbnRTaXplJiBzaXplKQogewog
ICAgIGlmIChtX2lzRGlzY2FyZGFibGUpIHsKQEAgLTI4Niw5ICsyNzUsNiBAQCB2b2lkIFRocmVh
ZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpzZXRJc0Rpc2NhcmRhYmxlKGJvb2wgZGlzY2Fy
ZGFibGUpCiAgICAgaWYgKG1fZGlzY2FyZGFibGVTeW5jQWN0aW9ucy5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGlmIChtX2Rpc2NhcmRhYmxlU3luY0FjdGlvbnMuY29udGFpbnMo
RGlzY2FyZGFibGVTeW5jQWN0aW9uczo6VXBkYXRlQmFja2dyb3VuZCkpCi0gICAgICAgIHBhZ2VC
YWNrZ3JvdW5kVHJhbnNwYXJlbmN5Q2hhbmdlZCgpOwotCiAgICAgaWYgKG1fZGlzY2FyZGFibGVT
eW5jQWN0aW9ucy5jb250YWlucyhEaXNjYXJkYWJsZVN5bmNBY3Rpb25zOjpVcGRhdGVTaXplKSkg
ewogICAgICAgICAvLyBTaXplIGNoYW5nZXMgYWxyZWFkeSBzZXRzIHRoZSBzY2FsZSBmYWN0b3Ig
YW5kIHVwZGF0ZXMgdGhlIHZpZXdwb3J0LgogICAgICAgICBzaXplRGlkQ2hhbmdlKG1fd2ViUGFn
ZS5zaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Q29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9UaHJl
YWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCmluZGV4IGI3ODQ2ODE2NzliLi4yMjg3NjE2
MmU2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRp
bmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVGhyZWFk
ZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3QuaApAQCAtNTcsNyArNTcsNiBAQCBwcml2YXRlOgog
ICAgIHZvaWQgc2Nyb2xsTm9uQ29tcG9zaXRlZENvbnRlbnRzKGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmIHNjcm9sbFJlY3QpIG92ZXJyaWRlOwogICAgIHZvaWQgc2l6ZURpZENoYW5nZShjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkZXZpY2VPclBhZ2VTY2FsZUZh
Y3RvckNoYW5nZWQoKSBvdmVycmlkZTsKLSAgICB2b2lkIHBhZ2VCYWNrZ3JvdW5kVHJhbnNwYXJl
bmN5Q2hhbmdlZCgpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBjb250ZW50c1NpemVDaGFuZ2VkKGNv
bnN0IFdlYkNvcmU6OkludFNpemUmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENoYW5nZVZpZXdw
b3J0QXR0cmlidXRlcyhXZWJDb3JlOjpWaWV3cG9ydEF0dHJpYnV0ZXMmJikgb3ZlcnJpZGU7CkBA
IC0xNDMsOCArMTQyLDcgQEAgcHJpdmF0ZToKICAgICBlbnVtIGNsYXNzIERpc2NhcmRhYmxlU3lu
Y0FjdGlvbnMgewogICAgICAgICBVcGRhdGVTaXplID0gMSA8PCAxLAogICAgICAgICBVcGRhdGVW
aWV3cG9ydCA9IDEgPDwgMiwKLSAgICAgICAgVXBkYXRlU2NhbGUgPSAxIDw8IDMsCi0gICAgICAg
IFVwZGF0ZUJhY2tncm91bmQgPSAxIDw8IDQKKyAgICAgICAgVXBkYXRlU2NhbGUgPSAxIDw8IDMK
ICAgICB9OwogCiAgICAgQ29tcG9zaXRvckNsaWVudCBtX2NvbXBvc2l0b3JDbGllbnQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAppbmRleCBjNjkw
MzNlODkyZC4uYThkMWIwN2Y0ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvRHJhd2luZ0FyZWEuaApAQCAtNzksNyArNzksNiBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHNjcm9sbChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzY3JvbGxSZWN0LCBjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiBzY3JvbGxEZWx0YSkgPSAwOwogCiAgICAgLy8gRklYTUU6IFRoZXNl
IHNob3VsZCBiZSBwdXJlIHZpcnR1YWwuCi0gICAgdmlydHVhbCB2b2lkIHBhZ2VCYWNrZ3JvdW5k
VHJhbnNwYXJlbmN5Q2hhbmdlZCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBmb3JjZVJlcGFpbnQo
KSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgZm9yY2VSZXBhaW50QXN5bmMoQ2FsbGJhY2tJRCkgeyBy
ZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0TGF5ZXJUcmVlU3RhdGVJc0Zyb3pl
bihib29sKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L0RyYXdpbmdBcmVhSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9E
cmF3aW5nQXJlYUltcGwuY3BwCmluZGV4IDZhODZiMDAyYjg2Li4wODlhYzIwYmY4NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwu
Y3BwCkBAIC00MTAsOCArNDEwLDcgQEAgdm9pZCBEcmF3aW5nQXJlYUltcGw6OmRpc3BsYXkoVXBk
YXRlSW5mbyYgdXBkYXRlSW5mbykKICAgICB1cGRhdGVJbmZvLnZpZXdTaXplID0gbV93ZWJQYWdl
LnNpemUoKTsKICAgICB1cGRhdGVJbmZvLmRldmljZVNjYWxlRmFjdG9yID0gbV93ZWJQYWdlLmNv
cmVQYWdlKCktPmRldmljZVNjYWxlRmFjdG9yKCk7CiAKLSAgICAvLyBBbHdheXMgcmVuZGVyIHRo
ZSB3aG9sZSBwYWdlIHdoZW4gd2UgZG9uJ3QgcmVuZGVyIHRoZSBiYWNrZ3JvdW5kLgotICAgIElu
dFJlY3QgYm91bmRzID0gbV93ZWJQYWdlLmRyYXdzQmFja2dyb3VuZCgpID8gbV9kaXJ0eVJlZ2lv
bi5ib3VuZHMoKSA6IG1fd2ViUGFnZS5ib3VuZHMoKTsKKyAgICBJbnRSZWN0IGJvdW5kcyA9IG1f
ZGlydHlSZWdpb24uYm91bmRzKCk7CiAgICAgQVNTRVJUKG1fd2ViUGFnZS5ib3VuZHMoKS5jb250
YWlucyhib3VuZHMpKTsKIAogICAgIEludFNpemUgYml0bWFwU2l6ZSA9IGJvdW5kcy5zaXplKCk7
CkBAIC00MjQsMTYgKzQyMywxMSBAQCB2b2lkIERyYXdpbmdBcmVhSW1wbDo6ZGlzcGxheShVcGRh
dGVJbmZvJiB1cGRhdGVJbmZvKQogICAgIGlmICghYml0bWFwLT5jcmVhdGVIYW5kbGUodXBkYXRl
SW5mby5iaXRtYXBIYW5kbGUpKQogICAgICAgICByZXR1cm47CiAKLSAgICBWZWN0b3I8SW50UmVj
dD4gcmVjdHM7Ci0gICAgaWYgKG1fd2ViUGFnZS5kcmF3c0JhY2tncm91bmQoKSkgewotICAgICAg
ICByZWN0cyA9IG1fZGlydHlSZWdpb24ucmVjdHMoKTsKLQotICAgICAgICBpZiAoc2hvdWxkUGFp
bnRCb3VuZHNSZWN0KGJvdW5kcywgcmVjdHMpKSB7Ci0gICAgICAgICAgICByZWN0cy5jbGVhcigp
OwotICAgICAgICAgICAgcmVjdHMuYXBwZW5kKGJvdW5kcyk7Ci0gICAgICAgIH0KLSAgICB9IGVs
c2UKKyAgICBWZWN0b3I8SW50UmVjdD4gcmVjdHMgPSBtX2RpcnR5UmVnaW9uLnJlY3RzKCk7Cisg
ICAgaWYgKHNob3VsZFBhaW50Qm91bmRzUmVjdChib3VuZHMsIHJlY3RzKSkgeworICAgICAgICBy
ZWN0cy5jbGVhcigpOwogICAgICAgICByZWN0cy5hcHBlbmQoYm91bmRzKTsKKyAgICB9CiAKICAg
ICB1cGRhdGVJbmZvLnNjcm9sbFJlY3QgPSBtX3Njcm9sbFJlY3Q7CiAgICAgdXBkYXRlSW5mby5z
Y3JvbGxPZmZzZXQgPSBtX3Njcm9sbE9mZnNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0xheWVyVHJlZUhvc3QuaAppbmRleCA4NWRkNDU4ZTAxOC4uNTNjMzk4Mjk5
ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJl
ZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9MYXllclRyZWVI
b3N0LmgKQEAgLTc0LDcgKzc0LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBmb3JjZVJl
cGFpbnQoKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGZvcmNlUmVwYWludEFzeW5jKENhbGxiYWNr
SUQpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIHNpemVEaWRDaGFuZ2UoY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYgbmV3U2l6ZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBwYWdl
QmFja2dyb3VuZFRyYW5zcGFyZW5jeUNoYW5nZWQoKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQg
cGF1c2VSZW5kZXJpbmcoKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lUmVuZGVyaW5nKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDNkMWJh
ODc3OGUxLi5lYTljNjAxOWEyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKQEAgLTUxNSw4ICs1MTUsNiBAQCBXZWJQYWdlOjpXZWJQYWdlKHVpbnQ2
NF90IHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAKICAg
ICBzZXRVc2VGaXhlZExheW91dChwYXJhbWV0ZXJzLnVzZUZpeGVkTGF5b3V0KTsKIAotICAgIHNl
dERyYXdzQmFja2dyb3VuZChwYXJhbWV0ZXJzLmRyYXdzQmFja2dyb3VuZCk7Ci0KICAgICBzZXRV
bmRlcmxheUNvbG9yKHBhcmFtZXRlcnMudW5kZXJsYXlDb2xvcik7CiAKICAgICBzZXRQYWdpbmF0
aW9uTW9kZShwYXJhbWV0ZXJzLnBhZ2luYXRpb25Nb2RlKTsKQEAgLTY0Myw2ICs2NDEsOCBAQCBX
ZWJQYWdlOjpXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cyYmIHBhcmFtZXRlcnMpCiAjaWYgVVNFKEFVRElPX1NFU1NJT04pCiAgICAgUGxhdGZvcm1NZWRp
YVNlc3Npb25NYW5hZ2VyOjpzZXRTaG91bGREZWFjdGl2YXRlQXVkaW9TZXNzaW9uKHRydWUpOwog
I2VuZGlmCisKKyAgICBzZXRCYWNrZ3JvdW5kQ29sb3IocGFyYW1ldGVycy5iYWNrZ3JvdW5kQ29s
b3IpOwogfQogCiAjaWYgRU5BQkxFKFdFQl9SVEMpCkBAIC0yOTAxLDE5ICsyOTAxLDE2IEBAIHZv
aWQgV2ViUGFnZTo6c2V0SW5kaWNhdGluZyhib29sIGluZGljYXRpbmcpCiB9CiAjZW5kaWYKIAot
dm9pZCBXZWJQYWdlOjpzZXREcmF3c0JhY2tncm91bmQoYm9vbCBkcmF3c0JhY2tncm91bmQpCit2
b2lkIFdlYlBhZ2U6OnNldEJhY2tncm91bmRDb2xvcihjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpD
b2xvcj4mIGJhY2tncm91bmRDb2xvcikKIHsKLSAgICBpZiAobV9kcmF3c0JhY2tncm91bmQgPT0g
ZHJhd3NCYWNrZ3JvdW5kKQorICAgIGlmIChtX2JhY2tncm91bmRDb2xvciA9PSBiYWNrZ3JvdW5k
Q29sb3IpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fZHJhd3NCYWNrZ3JvdW5kID0gZHJhd3NC
YWNrZ3JvdW5kOworICAgIG1fYmFja2dyb3VuZENvbG9yID0gYmFja2dyb3VuZENvbG9yOwogCi0g
ICAgaWYgKEZyYW1lVmlldyogZnJhbWVWaWV3ID0gbWFpbkZyYW1lVmlldygpKSB7Ci0gICAgICAg
IGJvb2wgaXNUcmFuc3BhcmVudCA9ICFkcmF3c0JhY2tncm91bmQ7Ci0gICAgICAgIGZyYW1lVmll
dy0+dXBkYXRlQmFja2dyb3VuZFJlY3Vyc2l2ZWx5KGlzVHJhbnNwYXJlbnQpOwotICAgIH0KKyAg
ICBpZiAoRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBtYWluRnJhbWVWaWV3KCkpCisgICAgICAgIGZy
YW1lVmlldy0+dXBkYXRlQmFja2dyb3VuZFJlY3Vyc2l2ZWx5KGJhY2tncm91bmRDb2xvcik7CiAK
LSAgICBtX2RyYXdpbmdBcmVhLT5wYWdlQmFja2dyb3VuZFRyYW5zcGFyZW5jeUNoYW5nZWQoKTsK
ICAgICBtX2RyYXdpbmdBcmVhLT5zZXROZWVkc0Rpc3BsYXkoKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGM3MTE0NTY5MDVmLi44NzMxNjIx
YTNjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAt
NDk5LDggKzQ5OSw2IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIHBvc3RJbmplY3RlZEJ1bmRs
ZU1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlTmFtZSwgY29uc3QgVXNlckRhdGEmKTsKIAot
ICAgIGJvb2wgZHJhd3NCYWNrZ3JvdW5kKCkgY29uc3QgeyByZXR1cm4gbV9kcmF3c0JhY2tncm91
bmQ7IH0KLQogICAgIHZvaWQgc2V0VW5kZXJsYXlDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYg
Y29sb3IpIHsgbV91bmRlcmxheUNvbG9yID0gY29sb3I7IH0KICAgICBXZWJDb3JlOjpDb2xvciB1
bmRlcmxheUNvbG9yKCkgY29uc3QgeyByZXR1cm4gbV91bmRlcmxheUNvbG9yOyB9CiAKQEAgLTEx
NDQsNiArMTE0Miw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHNlbmRTeW5jKFdURk1vdmUo
bWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBtX3BhZ2VJRCwgU2Vjb25kczo6aW5maW5pdHkoKSwg
SVBDOjpTZW5kU3luY09wdGlvbjo6SW5mb3JtUGxhdGZvcm1Qcm9jZXNzV2lsbFN1c3BlbmQpOwog
ICAgIH0KIAorICAgIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkNvbG9yPiYgYmFja2dyb3VuZENv
bG9yKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kQ29sb3I7IH0KKwogcHJpdmF0ZToKICAg
ICBXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmKTsK
IApAQCAtMTI3Nyw3ICsxMjc3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEluZGljYXRpbmco
Ym9vbCk7CiAjZW5kaWYKIAotICAgIHZvaWQgc2V0RHJhd3NCYWNrZ3JvdW5kKGJvb2wpOworICAg
IHZvaWQgc2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkNvbG9yPiYp
OwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBzZXRUb3BDb250ZW50SW5zZXRGZW5j
ZWQoZmxvYXQsIElQQzo6QXR0YWNobWVudCk7CkBAIC0xNzY5LDcgKzE3NjksNyBAQCBwcml2YXRl
OgogICAgIGJvb2wgbV9pc1N1c3BlbmRlZFVuZGVyTG9jayB7IGZhbHNlIH07CiAKICAgICBIYXNo
U2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiBtX21pbWVUeXBlc1dpdGhDdXN0
b21Db250ZW50UHJvdmlkZXJzOwotICAgIFdlYkNvcmU6OkNvbG9yIG1fYmFja2dyb3VuZENvbG9y
IHsgV2ViQ29yZTo6Q29sb3I6OndoaXRlIH07CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6Q29sb3I+
IG1fYmFja2dyb3VuZENvbG9yIHsgV2ViQ29yZTo6Q29sb3I6OndoaXRlIH07CiAKICAgICBIYXNo
U2V0PHVuc2lnbmVkPiBtX2FjdGl2ZVJlbmRlcmluZ1N1cHByZXNzaW9uVG9rZW5zOwogICAgIHVu
c2lnbmVkIG1fbWF4aW11bVJlbmRlcmluZ1N1cHByZXNzaW9uVG9rZW4geyAwIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpp
bmRleCAyZmJlMTQ1M2NmMS4uZDY5OTZjN2Q1NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtMjUsNyArMjUsNyBA
QCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKICAgICBTZXRBY3Rpdml0eVN0
YXRlKE9wdGlvblNldDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFnPiBhY3Rpdml0eVN0YXRl
LCBXZWJLaXQ6OkFjdGl2aXR5U3RhdGVDaGFuZ2VJRCBhY3Rpdml0eVN0YXRlQ2hhbmdlSUQsIFZl
Y3RvcjxXZWJLaXQ6OkNhbGxiYWNrSUQ+IGNhbGxiYWNrSURzKQogICAgIFNldExheWVySG9zdGlu
Z01vZGUoZW51bTp1aW50OF90IFdlYktpdDo6TGF5ZXJIb3N0aW5nTW9kZSBsYXllckhvc3RpbmdN
b2RlKQogCi0gICAgU2V0RHJhd3NCYWNrZ3JvdW5kKGJvb2wgZHJhd3NCYWNrZ3JvdW5kKQorICAg
IFNldEJhY2tncm91bmRDb2xvcihPcHRpb25hbDxXZWJDb3JlOjpDb2xvcj4gY29sb3IpCiAKICAg
ICBBZGRDb25zb2xlTWVzc2FnZSh1aW50NjRfdCBmcmFtZUlELCBlbnVtOnVpbnQ4X3QgSlNDOjpN
ZXNzYWdlU291cmNlIG1lc3NhZ2VTb3VyY2UsIGVudW06dWludDhfdCBKU0M6Ok1lc3NhZ2VMZXZl
bCBtZXNzYWdlTGV2ZWwsIFN0cmluZyBtZXNzYWdlLCB1aW50NjRfdCByZXF1ZXN0SUQpCiAgICAg
U2VuZENTUFZpb2xhdGlvblJlcG9ydCh1aW50NjRfdCBmcmFtZUlELCBVUkwgcmVwb3J0VVJMLCBJ
UEM6OkZvcm1EYXRhUmVmZXJlbmNlIHJlcG9ydERhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VM
b2cKaW5kZXggYWI3N2E4N2NjYzEuLjBiMTA0NTE0MzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTktMDEtMTggIFBoaWxpcHBlIE5vcm1hbmQgIDxw
bm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtXUEVdIEFkZCBBUEkgZm9yIHdlYnZpZXcg
YmFja2dyb3VuZCBjb2xvciBjb25maWd1cmF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTIzMDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcDoKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp0cmFuc2l0aW9uVG9Db21t
aXR0ZWRGb3JOZXdQYWdlKTogQ3JlYXRlCisgICAgICAgIEZyYW1lVmlldyB3aXRoIGJhY2tncm91
bmQgY29sb3IuCisKIDIwMTktMDItMDMgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgVmFsaWRhdGUgbmF2aWdhdGlvbiBwb2xpY3kgZGVjaXNpb25zIHRvIGF2b2lk
IGNyYXNoZXMgaW4gY29udGludWVMb2FkQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHAKaW5kZXggYzE0NTJlODRmMzcuLjExNTk1YjJmNmM3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC05ODUsMTAgKzk4NSwxMiBAQCB2b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50Ojp0cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKCkKIAogICAg
IFJFQ1QgcGl4ZWxSZWN0OwogICAgIHZpZXctPmZyYW1lUmVjdCgmcGl4ZWxSZWN0KTsKLSAgICBi
b29sIHRyYW5zcGFyZW50ID0gdmlldy0+dHJhbnNwYXJlbnQoKTsKKyAgICBPcHRpb25hbDxDb2xv
cj4gYmFja2dyb3VuZENvbG9yOworICAgIGlmICh2aWV3LT50cmFuc3BhcmVudCgpKQorICAgICAg
ICBiYWNrZ3JvdW5kQ29sb3IgPSBDb2xvcihDb2xvcjo6dHJhbnNwYXJlbnQpOwogICAgIEZsb2F0
UmVjdCBsb2dpY2FsRnJhbWUocGl4ZWxSZWN0KTsKICAgICBsb2dpY2FsRnJhbWUuc2NhbGUoMS4w
ZiAvIHZpZXctPmRldmljZVNjYWxlRmFjdG9yKCkpOwotICAgIGNvcmUobV93ZWJGcmFtZSktPmNy
ZWF0ZVZpZXcoZW5jbG9zaW5nSW50UmVjdChsb2dpY2FsRnJhbWUpLnNpemUoKSwgdHJhbnNwYXJl
bnQsIC8qIGZpeGVkTGF5b3V0U2l6ZSAqLyB7IH0sIC8qIGZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0
ICovIHsgfSk7CisgICAgY29yZShtX3dlYkZyYW1lKS0+Y3JlYXRlVmlldyhlbmNsb3NpbmdJbnRS
ZWN0KGxvZ2ljYWxGcmFtZSkuc2l6ZSgpLCBiYWNrZ3JvdW5kQ29sb3IsIC8qIGZpeGVkTGF5b3V0
U2l6ZSAqLyB7IH0sIC8qIGZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0ICovIHsgfSk7CiB9CiAKIHZv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpZFNhdmVUb1BhZ2VDYWNoZSgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJGcmFtZS5jcHAKaW5kZXggMDRiNmZlYTNjYjQuLjRhZDMxNjYwMTdmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCkBAIC0yMDg5LDcgKzIwODksMTAgQEAgdm9p
ZCBXZWJGcmFtZTo6dXBkYXRlQmFja2dyb3VuZCgpCiAgICAgaWYgKCFjb3JlRnJhbWUgfHwgIWNv
cmVGcmFtZS0+dmlldygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBjb3JlRnJhbWUtPnZpZXco
KS0+dXBkYXRlQmFja2dyb3VuZFJlY3Vyc2l2ZWx5KHdlYlZpZXcoKS0+dHJhbnNwYXJlbnQoKSk7
CisgICAgT3B0aW9uYWw8Q29sb3I+IGJhY2tncm91bmRDb2xvcjsKKyAgICBpZiAod2ViVmlldygp
LT50cmFuc3BhcmVudCgpKQorICAgICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBDb2xvcihDb2xvcjo6
dHJhbnNwYXJlbnQpOworICAgIGNvcmVGcmFtZS0+dmlldygpLT51cGRhdGVCYWNrZ3JvdW5kUmVj
dXJzaXZlbHkoYmFja2dyb3VuZENvbG9yKTsKIH0KIAogLy8gSVdlYkZyYW1lMgpkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDY3N2U3MzA1MTkzLi5h
YTFlZjdjNDY0MyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE5LTAxLTE4ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5v
cm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbV1BFXSBBZGQgQVBJIGZvciB3ZWJ2aWV3IGJh
Y2tncm91bmQgY29sb3IgY29uZmlndXJhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyMzA1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci93cGUvbWFpbi5jcHA6CisgICAgICAg
IChtYWluKTogQWRkIGEgbmV3IG9wdGlvbiB0byBjb25maWd1cmUgdGhlIHdlYnZpZXcgYmFja2dy
b3VuZAorICAgICAgICBjb2xvci4gRXhhbXBsZTogLS1iZy1jb2xvcj10cmFuc3BhcmVudC4KKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYlZpZXcu
Y3BwOgorICAgICAgICAodGVzdFdlYlZpZXdCYWNrZ3JvdW5kQ29sb3IpOiBFbmFibGUgYmFja2dy
b3VuZCBjb2xvciBBUEkgdGVzdHMgZm9yIFdQRS4KKyAgICAgICAgKGJlZm9yZUFsbCk6IERpdHRv
LgorCiAyMDE5LTAxLTE2ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNv
bT4KIAogICAgICAgICBbR1RLXVtXUEVdIEFkZCB3ZWIgZXh0ZW5zaW9ucyBBUEkgdG8gd2hpdGVs
aXN0IGFjY2VzcyB0byBhIHNlY3VyaXR5IG9yaWdpbgpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJy
b3dzZXIvd3BlL21haW4uY3BwIGIvVG9vbHMvTWluaUJyb3dzZXIvd3BlL21haW4uY3BwCmluZGV4
IDEzMWEwZjM4NzA5Li4yNWNjODg0OTNmZiAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIv
d3BlL21haW4uY3BwCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3dwZS9tYWluLmNwcApAQCAtNDIs
NiArNDIsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gaWdub3JlVExTRXJyb3JzOwogc3RhdGljIGNvbnN0
IGNoYXIqIGNvb2tpZXNGaWxlOwogc3RhdGljIGNvbnN0IGNoYXIqIGNvb2tpZXNQb2xpY3k7CiBz
dGF0aWMgY29uc3QgY2hhciogcHJveHk7Citjb25zdCBjaGFyKiBiZ0NvbG9yOwogCiBzdGF0aWMg
Y29uc3QgR09wdGlvbkVudHJ5IGNvbW1hbmRMaW5lT3B0aW9uc1tdID0KIHsKQEAgLTUzLDYgKzU0
LDcgQEAgc3RhdGljIGNvbnN0IEdPcHRpb25FbnRyeSBjb21tYW5kTGluZU9wdGlvbnNbXSA9CiAg
ICAgeyAicHJveHkiLCAwLCAwLCBHX09QVElPTl9BUkdfU1RSSU5HLCAmcHJveHksICJTZXQgcHJv
eHkiLCAiUFJPWFkiIH0sCiAgICAgeyAiaWdub3JlLWhvc3QiLCAwLCAwLCBHX09QVElPTl9BUkdf
U1RSSU5HX0FSUkFZLCAmaWdub3JlSG9zdHMsICJTZXQgcHJveHkgaWdub3JlIGhvc3RzIiwgIkhP
U1RTIiB9LAogICAgIHsgImlnbm9yZS10bHMtZXJyb3JzIiwgMCwgMCwgR19PUFRJT05fQVJHX05P
TkUsICZpZ25vcmVUTFNFcnJvcnMsICJJZ25vcmUgVExTIGVycm9ycyIsIG51bGxwdHIgfSwKKyAg
ICB7ICJiZy1jb2xvciIsIDAsIDAsIEdfT1BUSU9OX0FSR19TVFJJTkcsICZiZ0NvbG9yLCAiV2lu
ZG93IGJhY2tncm91bmQgY29sb3IuIERlZmF1bHQ6IHdoaXRlIiwgIkNPTE9SIiB9LAogICAgIHsg
R19PUFRJT05fUkVNQUlOSU5HLCAwLCAwLCBHX09QVElPTl9BUkdfRklMRU5BTUVfQVJSQVksICZ1
cmlBcmd1bWVudHMsIG51bGxwdHIsICJbVVJMXSIgfSwKICAgICB7IG51bGxwdHIsIDAsIDAsIEdf
T1BUSU9OX0FSR19OT05FLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyIH0KIH07CkBAIC0yMTMs
NiArMjE1LDEwIEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAgICAgaWYgKGln
bm9yZVRMU0Vycm9ycykKICAgICAgICAgd2Via2l0X3dlYl9jb250ZXh0X3NldF90bHNfZXJyb3Jz
X3BvbGljeSh3ZWJDb250ZXh0LCBXRUJLSVRfVExTX0VSUk9SU19QT0xJQ1lfSUdOT1JFKTsKIAor
ICAgIFdlYktpdENvbG9yIGNvbG9yOworICAgIGlmIChiZ0NvbG9yICYmIHdlYmtpdF9jb2xvcl9w
YXJzZSgmY29sb3IsIGJnQ29sb3IpKQorICAgICAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0X2JhY2tn
cm91bmRfY29sb3Iod2ViVmlldywgJmNvbG9yKTsKKwogICAgIGlmICh1cmlBcmd1bWVudHMpIHsK
ICAgICAgICAgR0ZpbGUqIGZpbGUgPSBnX2ZpbGVfbmV3X2Zvcl9jb21tYW5kbGluZV9hcmcodXJp
QXJndW1lbnRzWzBdKTsKICAgICAgICAgY2hhciogdXJsID0gZ19maWxlX2dldF91cmkoZmlsZSk7
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdl
YktpdFdlYlZpZXcuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rl
c3RXZWJLaXRXZWJWaWV3LmNwcAppbmRleCA1NGYxOTdiODgzMy4uZDA1MzFiNDlmMGYgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0V2Vi
Vmlldy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RX
ZWJLaXRXZWJWaWV3LmNwcApAQCAtMTEzMywxMSArMTEzMywxNiBAQCBzdGF0aWMgdm9pZCB0ZXN0
V2ViVmlld0lzUGxheWluZ0F1ZGlvKElzUGxheWluZ0F1ZGlvV2ViVmlld1Rlc3QqIHRlc3QsIGdj
b25zdHBvaQogICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF93ZWJfdmlld19pc19wbGF5aW5nX2F1
ZGlvKHRlc3QtPm1fd2ViVmlldykpOwogfQogCi0jaWYgUExBVEZPUk0oR1RLKQogc3RhdGljIHZv
aWQgdGVzdFdlYlZpZXdCYWNrZ3JvdW5kQ29sb3IoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBv
aW50ZXIpCiB7CisjaWYgUExBVEZPUk0oR1RLKQorI2RlZmluZSBDb2xvclR5cGUgR2RrUkdCQQor
I2VsaWYgUExBVEZPUk0oV1BFKQorI2RlZmluZSBDb2xvclR5cGUgV2ViS2l0Q29sb3IKKyNlbmRp
ZgorCiAgICAgLy8gV2hpdGUgaXMgdGhlIGRlZmF1bHQgYmFja2dyb3VuZC4KLSAgICBHZGtSR0JB
IHJnYmE7CisgICAgQ29sb3JUeXBlIHJnYmE7CiAgICAgd2Via2l0X3dlYl92aWV3X2dldF9iYWNr
Z3JvdW5kX2NvbG9yKHRlc3QtPm1fd2ViVmlldywgJnJnYmEpOwogICAgIGdfYXNzZXJ0X2NtcGZs
b2F0KHJnYmEucmVkLCA9PSwgMSk7CiAgICAgZ19hc3NlcnRfY21wZmxvYXQocmdiYS5ncmVlbiwg
PT0sIDEpOwpAQCAtMTE1NSwxMCArMTE2MCwyMyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0Jh
Y2tncm91bmRDb2xvcihXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBnX2Fz
c2VydF9jbXBmbG9hdChyZ2JhLmJsdWUsID09LCAwKTsKICAgICBnX2Fzc2VydF9jbXBmbG9hdChy
Z2JhLmFscGhhLCA9PSwgMC41KTsKIAorI2lmIFBMQVRGT1JNKFdQRSkKKyAgICBDb2xvclR5cGUg
Y29sb3I7CisgICAgZ19hc3NlcnQod2Via2l0X2NvbG9yX3BhcnNlKCZjb2xvciwgInJlZCIpKTsK
KyAgICBnX2Fzc2VydF9jbXBmbG9hdChjb2xvci5yZWQsID09LCAxKTsKKyAgICB3ZWJraXRfd2Vi
X3ZpZXdfc2V0X2JhY2tncm91bmRfY29sb3IodGVzdC0+bV93ZWJWaWV3LCAmY29sb3IpOworICAg
IHdlYmtpdF93ZWJfdmlld19nZXRfYmFja2dyb3VuZF9jb2xvcih0ZXN0LT5tX3dlYlZpZXcsICZy
Z2JhKTsKKyAgICBnX2Fzc2VydF9jbXBmbG9hdChyZ2JhLnJlZCwgPT0sIDEpOworICAgIGdfYXNz
ZXJ0X2NtcGZsb2F0KHJnYmEuZ3JlZW4sID09LCAwKTsKKyAgICBnX2Fzc2VydF9jbXBmbG9hdChy
Z2JhLmJsdWUsID09LCAwKTsKKyAgICBnX2Fzc2VydF9jbXBmbG9hdChyZ2JhLmFscGhhLCA9PSwg
MSk7CisjZW5kaWYKKwogICAgIC8vIFRoZSBhY3R1YWwgcmVuZGVyaW5nIGNhbid0IGJlIHRlc3Rl
ZCB1c2luZyB1bml0IHRlc3RzLCB1c2UKICAgICAvLyBNaW5pQnJvd3NlciAtLWJnLWNvbG9yPSI8
Y29sb3ItdmFsdWU+IiBmb3IgbWFudWFsbHkgdGVzdGluZyB0aGlzIEFQSS4KIH0KIAorI2lmIFBM
QVRGT1JNKEdUSykKIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3UHJlZmVycmVkU2l6ZShXZWJWaWV3
VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKICAgICB0ZXN0LT5sb2FkSHRtbCgiPGh0bWwg
c3R5bGU9J3dpZHRoOiAzMjVweDsgaGVpZ2h0OiA2MTVweCc+PC9odG1sPiIsIG51bGxwdHIpOwpA
QCAtMTM2Myw4ICsxMzgxLDggQEAgdm9pZCBiZWZvcmVBbGwoKQogICAgIE5vdGlmaWNhdGlvbldl
YlZpZXdUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAibm90aWZpY2F0aW9uLWluaXRpYWwtcGVy
bWlzc2lvbi1kaXNhbGxvd2VkIiwgdGVzdFdlYlZpZXdOb3RpZmljYXRpb25Jbml0aWFsUGVybWlz
c2lvbkRpc2FsbG93ZWQpOwogI2VuZGlmCiAgICAgSXNQbGF5aW5nQXVkaW9XZWJWaWV3VGVzdDo6
YWRkKCJXZWJLaXRXZWJWaWV3IiwgImlzLXBsYXlpbmctYXVkaW8iLCB0ZXN0V2ViVmlld0lzUGxh
eWluZ0F1ZGlvKTsKLSNpZiBQTEFURk9STShHVEspCiAgICAgV2ViVmlld1Rlc3Q6OmFkZCgiV2Vi
S2l0V2ViVmlldyIsICJiYWNrZ3JvdW5kLWNvbG9yIiwgdGVzdFdlYlZpZXdCYWNrZ3JvdW5kQ29s
b3IpOworI2lmIFBMQVRGT1JNKEdUSykKICAgICBXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJW
aWV3IiwgInByZWZlcnJlZC1zaXplIiwgdGVzdFdlYlZpZXdQcmVmZXJyZWRTaXplKTsKICNlbmRp
ZgogICAgIFdlYlZpZXdUaXRsZVRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJ0aXRsZS1jaGFu
Z2UiLCB0ZXN0V2ViVmlld1RpdGxlQ2hhbmdlKTsK
</data>
<flag name="review"
          id="377731"
          type_id="1"
          status="+"
          setter="mcatanzaro"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>361672</attachid>
            <date>2019-02-11 04:46:35 -0800</date>
            <delta_ts>2019-02-11 05:52:07 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>wpe-bg-color.diff</filename>
            <type>text/plain</type>
            <size>72992</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlNWU2Njc2Y2Q4MS4uMGRjN2IyNjZiNjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMyBAQAorMjAxOS0wMS0xOCAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxp
YS5jb20+IGFuZCBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKwor
ICAgICAgICBbV1BFXSBBZGQgQVBJIGZvciB3ZWJ2aWV3IGJhY2tncm91bmQgY29sb3IgY29uZmln
dXJhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTkyMzA1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTWljaGFlbCBDYXRhbnphcm8uCisKKyAgICAg
ICAgQWRhcHQgdGhlIEZyYW1lVmlldyBBUEkgdG8gYWxsb3cgYSBkZWZhdWx0IG5vbi13aGl0ZSBi
YWNrZ3JvdW5kIGNvbG9yLgorCisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZTo6Y3JlYXRlVmlldyk6IFJlcGxhY2UgaXNUcmFuc3BhcmVudCBhcmd1bWVu
dCB3aXRoIGEgYmFja2dyb3VuZCBjb2xvciBvbmUuCisgICAgICAgICogcGFnZS9GcmFtZS5oOgor
ICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmll
dzo6cmVjYWxjdWxhdGVCYXNlQmFja2dyb3VuZENvbG9yKTogVXNlIENvbG9yOjp0cmFuc3BhcmVu
dCBpZiBtX2lzVHJhbnNwYXJlbnQgaXMgdHJ1ZS4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmll
dzo6dXBkYXRlQmFja2dyb3VuZFJlY3Vyc2l2ZWx5KTogQWxsb3cgdGhlIGZhbGxiYWNrIGJhY2tn
cm91bmQgY29sb3IgdG8gYmUgbm9uLXdoaXRlLCB0aGlzIGlzCisgICAgICAgIHVzZWQgb25seSBp
biBub24tZGFyay1tb2RlLWNzcyBidWlsZCBjb25maWd1cmF0aW9ucy4KKyAgICAgICAgKiBwYWdl
L0ZyYW1lVmlldy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkludGVybmFsczo6c2V0Vmlld0lzVHJhbnNwYXJlbnQpOiBVc2UgQ29sb3I6OnRy
YW5zcGFyZW50IGlmIHRyYW5zcGFyZW50IGlzIHRydWUuCisKIDIwMTktMDItMTAgIFphbGFuIEJ1
anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXSBGaXggc3BlbGxpbmcgZXJy
b3IuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4IGE0ZjgzYjI3ZjBiLi42N2M0YjNhMWExYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZS5jcHAKQEAgLTkwMSw3ICs5MDEsNyBAQCBSZWZQdHI8UmFuZ2U+IEZyYW1l
OjpyYW5nZUZvclBvaW50KGNvbnN0IEludFBvaW50JiBmcmFtZVBvaW50KQogICAgIHJldHVybiBu
dWxscHRyOwogfQogCi12b2lkIEZyYW1lOjpjcmVhdGVWaWV3KGNvbnN0IEludFNpemUmIHZpZXdw
b3J0U2l6ZSwgYm9vbCB0cmFuc3BhcmVudCwKK3ZvaWQgRnJhbWU6OmNyZWF0ZVZpZXcoY29uc3Qg
SW50U2l6ZSYgdmlld3BvcnRTaXplLCBjb25zdCBPcHRpb25hbDxDb2xvcj4mIGJhY2tncm91bmRD
b2xvciwKICAgICBjb25zdCBJbnRTaXplJiBmaXhlZExheW91dFNpemUsIGNvbnN0IEludFJlY3Qm
IGZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0LAogICAgIGJvb2wgdXNlRml4ZWRMYXlvdXQsIFNjcm9s
bGJhck1vZGUgaG9yaXpvbnRhbFNjcm9sbGJhck1vZGUsIGJvb2wgaG9yaXpvbnRhbExvY2ssCiAg
ICAgU2Nyb2xsYmFyTW9kZSB2ZXJ0aWNhbFNjcm9sbGJhck1vZGUsIGJvb2wgdmVydGljYWxMb2Nr
KQpAQCAtOTMyLDcgKzkzMiw3IEBAIHZvaWQgRnJhbWU6OmNyZWF0ZVZpZXcoY29uc3QgSW50U2l6
ZSYgdmlld3BvcnRTaXplLCBib29sIHRyYW5zcGFyZW50LAogCiAgICAgc2V0VmlldyhmcmFtZVZp
ZXcuY29weVJlZigpKTsKIAotICAgIGZyYW1lVmlldy0+dXBkYXRlQmFja2dyb3VuZFJlY3Vyc2l2
ZWx5KHRyYW5zcGFyZW50KTsKKyAgICBmcmFtZVZpZXctPnVwZGF0ZUJhY2tncm91bmRSZWN1cnNp
dmVseShiYWNrZ3JvdW5kQ29sb3IpOwogCiAgICAgaWYgKGlzTWFpbkZyYW1lKQogICAgICAgICBm
cmFtZVZpZXctPnNldFBhcmVudFZpc2libGUodHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKaW5kZXggOGFk
MTNkNmUxY2MuLjc4NDFhZDU2MmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCkBAIC0xMjgsNyArMTI4LDcg
QEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5pdFdpdGhTaW1wbGVIVE1MRG9j
dW1lbnQoY29uc3QgU3RyaW5nJiBzdHlsZSwgY29uc3QgVVJMJik7CiAjZW5kaWYKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldFZpZXcoUmVmUHRyPEZyYW1lVmlldz4mJik7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBjcmVhdGVWaWV3KGNvbnN0IEludFNpemUmLCBib29sIHRyYW5zcGFyZW50
LAorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY3JlYXRlVmlldyhjb25zdCBJbnRTaXplJiwgY29u
c3QgT3B0aW9uYWw8Q29sb3I+JiBiYWNrZ3JvdW5kQ29sb3IsCiAgICAgICAgIGNvbnN0IEludFNp
emUmIGZpeGVkTGF5b3V0U2l6ZSwgY29uc3QgSW50UmVjdCYgZml4ZWRWaXNpYmxlQ29udGVudFJl
Y3QsCiAgICAgICAgIGJvb2wgdXNlRml4ZWRMYXlvdXQgPSBmYWxzZSwgU2Nyb2xsYmFyTW9kZSA9
IFNjcm9sbGJhckF1dG8sIGJvb2wgaG9yaXpvbnRhbExvY2sgPSBmYWxzZSwKICAgICAgICAgU2Ny
b2xsYmFyTW9kZSA9IFNjcm9sbGJhckF1dG8sIGJvb2wgdmVydGljYWxMb2NrID0gZmFsc2UpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IDliMjQ3NzdkMGJmLi5lMTg4MjdmMjExMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtMzk4LDcgKzM5OCwxMCBAQCB2b2lkIEZy
YW1lVmlldzo6cmVjYWxjdWxhdGVCYXNlQmFja2dyb3VuZENvbG9yKCkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgbV91c2VzRGFya0FwcGVhcmFuY2UgPSB1c2luZ0RhcmtBcHBlYXJhbmNlOwotICAg
IHVwZGF0ZUJhY2tncm91bmRSZWN1cnNpdmVseShtX2lzVHJhbnNwYXJlbnQpOworICAgIE9wdGlv
bmFsPENvbG9yPiBiYWNrZ3JvdW5kQ29sb3I7CisgICAgaWYgKG1faXNUcmFuc3BhcmVudCkKKyAg
ICAgICAgYmFja2dyb3VuZENvbG9yID0gQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50KTsKKyAgICB1
cGRhdGVCYWNrZ3JvdW5kUmVjdXJzaXZlbHkoYmFja2dyb3VuZENvbG9yKTsKIH0KICNlbmRpZgog
CkBAIC0yOTkzLDE4ICsyOTk2LDE4IEBAIHZvaWQgRnJhbWVWaWV3OjpzZXRCYXNlQmFja2dyb3Vu
ZENvbG9yKGNvbnN0IENvbG9yJiBiYWNrZ3JvdW5kQ29sb3IpCiAgICAgc2V0TmVlZHNDb21wb3Np
dGluZ0NvbmZpZ3VyYXRpb25VcGRhdGUoKTsKIH0KIAotdm9pZCBGcmFtZVZpZXc6OnVwZGF0ZUJh
Y2tncm91bmRSZWN1cnNpdmVseShib29sIHRyYW5zcGFyZW50KQordm9pZCBGcmFtZVZpZXc6OnVw
ZGF0ZUJhY2tncm91bmRSZWN1cnNpdmVseShjb25zdCBPcHRpb25hbDxDb2xvcj4mIGJhY2tncm91
bmRDb2xvcikKIHsKICNpZiBFTkFCTEUoREFSS19NT0RFX0NTUykgJiYgUExBVEZPUk0oTUFDKQot
ICAgIENvbG9yIGJhY2tncm91bmRDb2xvciA9IHRyYW5zcGFyZW50ID8gQ29sb3I6OnRyYW5zcGFy
ZW50IDogUmVuZGVyVGhlbWU6OnNpbmdsZXRvbigpLnN5c3RlbUNvbG9yKENTU1ZhbHVlQXBwbGVT
eXN0ZW1Db250cm9sQmFja2dyb3VuZCwgc3R5bGVDb2xvck9wdGlvbnMoKSk7CisgICAgQ29sb3Ig
YmFzZUJhY2tncm91bmRDb2xvciA9IGJhY2tncm91bmRDb2xvci52YWx1ZU9yKFJlbmRlclRoZW1l
OjpzaW5nbGV0b24oKS5zeXN0ZW1Db2xvcihDU1NWYWx1ZUFwcGxlU3lzdGVtQ29udHJvbEJhY2tn
cm91bmQsIHN0eWxlQ29sb3JPcHRpb25zKCkpKTsKICNlbHNlCi0gICAgQ29sb3IgYmFja2dyb3Vu
ZENvbG9yID0gdHJhbnNwYXJlbnQgPyBDb2xvcjo6dHJhbnNwYXJlbnQgOiBDb2xvcjo6d2hpdGU7
CisgICAgQ29sb3IgYmFzZUJhY2tncm91bmRDb2xvciA9IGJhY2tncm91bmRDb2xvci52YWx1ZU9y
KENvbG9yOjp3aGl0ZSk7CiAjZW5kaWYKIAogICAgIGZvciAoYXV0byogZnJhbWUgPSBtX2ZyYW1l
LnB0cigpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dChtX2ZyYW1l
LnB0cigpKSkgewogICAgICAgICBpZiAoRnJhbWVWaWV3KiB2aWV3ID0gZnJhbWUtPnZpZXcoKSkg
ewotICAgICAgICAgICAgdmlldy0+c2V0VHJhbnNwYXJlbnQodHJhbnNwYXJlbnQpOwotICAgICAg
ICAgICAgdmlldy0+c2V0QmFzZUJhY2tncm91bmRDb2xvcihiYWNrZ3JvdW5kQ29sb3IpOworICAg
ICAgICAgICAgdmlldy0+c2V0VHJhbnNwYXJlbnQoIWJhc2VCYWNrZ3JvdW5kQ29sb3IuaXNWaXNp
YmxlKCkpOworICAgICAgICAgICAgdmlldy0+c2V0QmFzZUJhY2tncm91bmRDb2xvcihiYXNlQmFj
a2dyb3VuZENvbG9yKTsKICAgICAgICAgICAgIGlmICh2aWV3LT5uZWVkc0xheW91dCgpKQogICAg
ICAgICAgICAgICAgIHZpZXctPmxheW91dENvbnRleHQoKS5zY2hlZHVsZUxheW91dCgpOwogICAg
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAppbmRleCAyMTczZGFjM2QyOC4uYWM5M2ZkODQz
MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaApAQCAtMTkyLDcgKzE5Miw3IEBAIHB1YmxpYzoK
IAogICAgIFdFQkNPUkVfRVhQT1JUIENvbG9yIGJhc2VCYWNrZ3JvdW5kQ29sb3IoKSBjb25zdDsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEJhc2VCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29s
b3ImKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUJhY2tncm91bmRSZWN1cnNpdmVs
eShib29sKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUJhY2tncm91bmRSZWN1cnNp
dmVseShjb25zdCBPcHRpb25hbDxDb2xvcj4mIGJhY2tncm91bmRDb2xvcik7CiAKICAgICBlbnVt
IEV4dGVuZGVkQmFja2dyb3VuZE1vZGVGbGFncyB7CiAgICAgICAgIEV4dGVuZGVkQmFja2dyb3Vu
ZE1vZGVOb25lICAgICAgICAgID0gMCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApp
bmRleCA3MjllOWNmMjQ4OS4uNmI3OGUwM2RkNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5jcHAKQEAgLTE3MjEsNyArMTcyMSwxMCBAQCBFeGNlcHRpb25Pcjx2b2lkPiBJbnRlcm5h
bHM6OnNldFZpZXdJc1RyYW5zcGFyZW50KGJvb2wgdHJhbnNwYXJlbnQpCiAgICAgRG9jdW1lbnQq
IGRvY3VtZW50ID0gY29udGV4dERvY3VtZW50KCk7CiAgICAgaWYgKCFkb2N1bWVudCB8fCAhZG9j
dW1lbnQtPnZpZXcoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRBY2Nlc3NF
cnJvciB9OwotICAgIGRvY3VtZW50LT52aWV3KCktPnVwZGF0ZUJhY2tncm91bmRSZWN1cnNpdmVs
eSh0cmFuc3BhcmVudCk7CisgICAgT3B0aW9uYWw8Q29sb3I+IGJhY2tncm91bmRDb2xvcjsKKyAg
ICBpZiAodHJhbnNwYXJlbnQpCisgICAgICAgIGJhY2tncm91bmRDb2xvciA9IENvbG9yKENvbG9y
Ojp0cmFuc3BhcmVudCk7CisgICAgZG9jdW1lbnQtPnZpZXcoKS0+dXBkYXRlQmFja2dyb3VuZFJl
Y3Vyc2l2ZWx5KGJhY2tncm91bmRDb2xvcik7CiAgICAgcmV0dXJuIHsgfTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCAzYWJkOTU3NTEzMy4uYTJlYTQ2NjkzMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODAgQEAK
KzIwMTktMDEtMTggIFBoaWxpcHBlIE5vcm1hbmQgPHBub3JtYW5kQGlnYWxpYS5jb20+IGFuZCBD
YXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbV1BF
XSBBZGQgQVBJIGZvciB3ZWJ2aWV3IGJhY2tncm91bmQgY29sb3IgY29uZmlndXJhdGlvbgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyMzA1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTWljaGFlbCBDYXRhbnphcm8uCisKKyAgICAgICAgSW4gdGhlIGNh
c2Ugb2YgV1BFIHdlIG5lZWQgdG8gc2VuZCB0aGUgYmFja2dyb3VuZCBjb2xvciB0byB0aGUgd2Vi
IHByb2Nlc3MgdG8gYmUgdXNlZCBhcyB0aGUgYmFja2dyb3VuZCBjb2xvciBvZgorICAgICAgICB0
aGUgcGFnZS4gVGhpcyBwYXRjaCBhZGFwdHMgdGhlIEdUSysgaW1wbGVtZW50YXRpb24gdG8gZG8g
dGhlIHNhbWUsIHNpbmNlIGl0J3MgYSBsb3Qgc2ltcGxlci4gVGhlIHBhdGNoIGFsc28KKyAgICAg
ICAgcmVtb3ZlcyB0aGUgU2V0RHJhd3NCYWNrZ3JvdW5kIG1lc3NhZ2UgaW4gZmF2b3Igb2YgdGhl
IG5ldyBTZXRCYWNrZ3JvdW5kQ29sb3IgbWVzc2FnZSB0aGF0IHJlY2VpdmVzIGFuIG9wdGlvbmFs
CisgICAgICAgIGNvbG9yLgorCisgICAgICAgICogUGxhdGZvcm1XUEUuY21ha2U6IEFkZCBuZXcg
V1BFIEFQSSBmb3IgV2ViS2l0Q29sb3IgYm94ZWQgdHlwZS4KKyAgICAgICAgKiBTaGFyZWQvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwOgorICAgICAgICAo
V2ViS2l0OjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnBhaW50VG9DdXJyZW50R0xDb250ZXh0
KTogUmVtb3ZlIGJhY2tncm91bmQgcmVuZGVyaW5nIGFuZCBvcGFjaXR5IGhhbmRsaW5nLgorICAg
ICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2Vu
ZS5oOgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9z
aXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpUaHJlYWRlZENv
bXBvc2l0b3I6OnJlbmRlckxheWVyVHJlZSk6IFJlbW92ZSBkcmF3c0Jha2dyb3VuZCBhbmQgYWx3
YXlzIGNsZWFyIHRoZSBjb250ZXh0IHdpdGgKKyAgICAgICAgdHJhbnNwYXJlbnQgY29sb3IuCisg
ICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1Ro
cmVhZGVkQ29tcG9zaXRvci5oOgorICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6
ZW5jb2RlIGNvbnN0KTogUmVwbGFjZSBkcmF3c0JhY2tncm91bmQgd2l0aCBiYWNrZ3JvdW5kQ29s
b3IuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6
IERpdHRvLgorICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmg6Cisg
ICAgICAgICogU291cmNlc1dQRS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdFdlYlZpZXcuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZp
ZXdHdGsuY3BwOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X3NldF9iYWNrZ3JvdW5kX2NvbG9y
KToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19nZXRfYmFja2dyb3VuZF9jb2xvcik6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0Q29sb3IuY3BwOiBBZGRlZC4KKyAgICAgICAg
KHdlYmtpdF9jb2xvcl9jb3B5KToKKyAgICAgICAgKHdlYmtpdF9jb2xvcl9mcmVlKToKKyAgICAg
ICAgKHdlYmtpdENvbG9yVG9XZWJDb3JlQ29sb3IpOgorICAgICAgICAod2Via2l0Q29sb3JGaWxs
RnJvbVdlYkNvcmVDb2xvcik6CisgICAgICAgICh3ZWJraXRfY29sb3JfcGFyc2UpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdENvbG9yLmg6IEFkZGVkLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvd3BlL1dlYktpdENvbG9yUHJpdmF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3Lmg6IEltcGxlbWVudCB3ZWJraXRfd2ViX3Zp
ZXdfc2V0X2JhY2tncm91bmRfY29sb3IgQVBJLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3Bl
L1dlYktpdFdlYlZpZXdXUEUuY3BwOiBEaXR0by4KKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19z
ZXRfYmFja2dyb3VuZF9jb2xvcik6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2JhY2tn
cm91bmRfY29sb3IpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTAuMS1z
ZWN0aW9ucy50eHQ6IEFkZCBuZXcgc3ltYm9scy4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXREcmF3c0JhY2tn
cm91bmQpOiBTZXQgYSB0cmFuc3BhcmVudCBiYWNrZ3JvdW5kIGNvbG9yIHdoZW4gZmFsc2UgaXMg
cGFzc2VkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldEJhY2tncm91bmRDb2xv
cik6IFNlbmQgYmFja2dyb3VuZCBjb2xvciB0byB0aGUgV2ViUHJvY2Vzcy4KKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMpOiBSZXBsYWNlIGRyYXdzQmFj
a2dyb3VuZCB3aXRoIGJhY2tncm91bmRDb2xvci4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZHJhd3NCYWNrZ3JvdW5k
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpiYWNrZ3JvdW5kQ29sb3Ig
Y29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9jYWlyby9CYWNraW5nU3RvcmVDYWlyby5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkJhY2tpbmdTdG9yZTo6aW5jb3Jwb3JhdGVVcGRhdGUpOiBSZW1v
dmUgR1RLKyBjb2RlIHRvIGhhbmRsZSBiYWNrZ3JvdW5kIGNvbG9yLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAqIFVJUHJvY2Vz
cy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUuaDogTWFrZSBwYWludCgpIHB1cmUgdmlydHVh
bCBhbmQgcmVtb3ZlIHRoZSBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKiBVSVByb2Nlc3MvZ3Rr
L0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkFj
Y2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZDo6cGFpbnQpOiBEb3Qgbm90IGNhbGwgQWNjZWxl
cmF0ZWRCYWNraW5nU3RvcmU6OnBhaW50KCkgbm93IHRoYXQgaXMgcHVyZSB2aXJ0dWFsLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTEuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVgxMTo6cGFpbnQpOiBEaXR0by4K
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OnRyYW5zaXRpb25U
b0NvbW1pdHRlZEZvck5ld1BhZ2UpOiBVc2UgYmFja2dyb3VuZCBjb2xvciBhcyBwcm92aWRlZCBi
eSB0aGUKKyAgICAgICAgVUlQcm9jZXNzIHdoZW4gY3JlYXRpbmcgdGhlIEZyYW1lVmlldy4KKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3aW5nQXJlYS5jcHA6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZExheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6VGhyZWFkZWRDb29yZGluYXRlZExheWVy
VHJlZUhvc3Q6OnNldElzRGlzY2FyZGFibGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Lmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkRyYXdpbmdBcmVhSW1wbDo6ZGlzcGxheSk6IFJlbW92ZSBzcGVjaWFsIGNhc2UgZm9yIHRyYW5z
cGFyZW50IGJhY2tncm91bmQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJl
ZUhvc3QuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldEJhY2tncm91bmRDb2xvcik6IE5ldyBBUEkgZm9yIGJh
Y2tncm91bmQgY29sb3IgY29uZmlndXJhdGlvbi4gUHJveGllcyB0byBGcmFtZVZpZXcgYW5kIERy
YXdpbmdBcmVhLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OmJhY2tncm91bmRDb2xvciBjb25zdCk6IFJlYWQtb25seSBh
Y2Nlc3MgdG8gdGhlIGN1cnJlbnQgYmFja2dyb3VuZCBjb2xvci4KKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjogUmVwbGFjZSBTZXREcmF3c0JhY2tncm91
bmQgbWVzc2FnZSB3aXRoIFNldEJhY2tncm91bmRDb2xvci4KKwogMjAxOS0wMS0xNiAgQ2FybG9z
IEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS11bV1BF
XSBBZGQgd2ViIGV4dGVuc2lvbnMgQVBJIHRvIHdoaXRlbGlzdCBhY2Nlc3MgdG8gYSBzZWN1cml0
eSBvcmlnaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1XUEUuY21ha2UgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtV1BFLmNtYWtlCmluZGV4IGRmMTU5NGY3YzgyLi4yNTgzYTBi
ZGIzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdQRS5jbWFrZQorKysgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtV1BFLmNtYWtlCkBAIC05OCw2ICs5OCw3IEBAIHNldChXUEVf
QVBJX0lOU1RBTExFRF9IRUFERVJTCiAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL3dw
ZS9XZWJLaXRCYWNrRm9yd2FyZExpc3QuaAogICAgICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQ
SS93cGUvV2ViS2l0QmFja0ZvcndhcmRMaXN0SXRlbS5oCiAgICAgJHtXRUJLSVRfRElSfS9VSVBy
b2Nlc3MvQVBJL3dwZS9XZWJLaXRDcmVkZW50aWFsLmgKKyAgICAke1dFQktJVF9ESVJ9L1VJUHJv
Y2Vzcy9BUEkvd3BlL1dlYktpdENvbG9yLmgKICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9B
UEkvd3BlL1dlYktpdENvbnRleHRNZW51LmgKICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9B
UEkvd3BlL1dlYktpdENvbnRleHRNZW51QWN0aW9ucy5oCiAgICAgJHtXRUJLSVRfRElSfS9VSVBy
b2Nlc3MvQVBJL3dwZS9XZWJLaXRDb250ZXh0TWVudUl0ZW0uaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2Nl
bmUuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGlu
YXRlZEdyYXBoaWNzU2NlbmUuY3BwCmluZGV4IGE1ZjE1ZjAxYTUwLi5kYTJmOGE1MjdkZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGlu
YXRlZEdyYXBoaWNzU2NlbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcApAQCAtNjUsNyArNjUsNyBA
QCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6YXBwbHlTdGF0ZUNoYW5nZXMoY29uc3Qg
VmVjdG9yPENvb3JkaW5hdGVkR3JhcGhpYwogICAgICAgICBjb21taXRTY2VuZVN0YXRlKHN0YXRl
Lm5pY29zaWEpOwogfQogCi12b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6cGFpbnRUb0N1
cnJlbnRHTENvbnRleHQoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCwgZmxvYXQg
b3BhY2l0eSwgY29uc3QgRmxvYXRSZWN0JiBjbGlwUmVjdCwgY29uc3QgQ29sb3ImIGJhY2tncm91
bmRDb2xvciwgYm9vbCBkcmF3c0JhY2tncm91bmQsIFRleHR1cmVNYXBwZXI6OlBhaW50RmxhZ3Mg
UGFpbnRGbGFncykKK3ZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpwYWludFRvQ3VycmVu
dEdMQ29udGV4dChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4LCBjb25zdCBGbG9h
dFJlY3QmIGNsaXBSZWN0LCBUZXh0dXJlTWFwcGVyOjpQYWludEZsYWdzIFBhaW50RmxhZ3MpCiB7
CiAgICAgdXBkYXRlU2NlbmVTdGF0ZSgpOwogCkBAIC03OCwxOCArNzgsOCBAQCB2b2lkIENvb3Jk
aW5hdGVkR3JhcGhpY3NTY2VuZTo6cGFpbnRUb0N1cnJlbnRHTENvbnRleHQoY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaQogICAgIG1fdGV4dHVyZU1hcHBlci0+YmVnaW5QYWludGluZyhQYWludEZs
YWdzKTsKICAgICBtX3RleHR1cmVNYXBwZXItPmJlZ2luQ2xpcChUcmFuc2Zvcm1hdGlvbk1hdHJp
eCgpLCBjbGlwUmVjdCk7CiAKLSAgICBpZiAoZHJhd3NCYWNrZ3JvdW5kKSB7Ci0gICAgICAgIFJH
QkEzMiByZ2JhID0gbWFrZVJHQkEzMkZyb21GbG9hdHMoYmFja2dyb3VuZENvbG9yLnJlZCgpLAot
ICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yLmdyZWVuKCksIGJhY2tncm91bmRDb2xvci5ibHVl
KCksCi0gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3IuYWxwaGEoKSAqIG9wYWNpdHkpOwotICAg
ICAgICBtX3RleHR1cmVNYXBwZXItPmRyYXdTb2xpZENvbG9yKGNsaXBSZWN0LCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCgpLCBDb2xvcihyZ2JhKSwgdHJ1ZSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIG1f
dGV4dHVyZU1hcHBlci0+Y2xlYXJDb2xvcihtX3ZpZXdCYWNrZ3JvdW5kQ29sb3IpOwotCi0gICAg
aWYgKGN1cnJlbnRSb290TGF5ZXItPm9wYWNpdHkoKSAhPSBvcGFjaXR5IHx8IGN1cnJlbnRSb290
TGF5ZXItPnRyYW5zZm9ybSgpICE9IG1hdHJpeCkgewotICAgICAgICBjdXJyZW50Um9vdExheWVy
LT5zZXRPcGFjaXR5KG9wYWNpdHkpOworICAgIGlmIChjdXJyZW50Um9vdExheWVyLT50cmFuc2Zv
cm0oKSAhPSBtYXRyaXgpCiAgICAgICAgIGN1cnJlbnRSb290TGF5ZXItPnNldFRyYW5zZm9ybSht
YXRyaXgpOwotICAgIH0KIAogICAgIGN1cnJlbnRSb290TGF5ZXItPnBhaW50KCk7CiAgICAgbV9m
cHNDb3VudGVyLnVwZGF0ZUZQU0FuZERpc3BsYXkoKm1fdGV4dHVyZU1hcHBlciwgY2xpcFJlY3Qu
bG9jYXRpb24oKSwgbWF0cml4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmggYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5o
CmluZGV4IGQ0YmI1ODI2OGZlLi4yZTZiMzM1ZGJiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3NTY2VuZS5oCkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5D
b29yZGluYXRlZEdyYXBoaWNzU2NlbmUoKTsKIAogICAgIHZvaWQgYXBwbHlTdGF0ZUNoYW5nZXMo
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZT4mKTsKLSAgICB2
b2lkIHBhaW50VG9DdXJyZW50R0xDb250ZXh0KGNvbnN0IFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9u
TWF0cml4JiwgZmxvYXQsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6
OkNvbG9yJiBiYWNrZ3JvdW5kQ29sb3IsIGJvb2wgZHJhd3NCYWNrZ3JvdW5kLCBXZWJDb3JlOjpU
ZXh0dXJlTWFwcGVyOjpQYWludEZsYWdzID0gMCk7CisgICAgdm9pZCBwYWludFRvQ3VycmVudEdM
Q29udGV4dChjb25zdCBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IFdlYkNv
cmU6OkZsb2F0UmVjdCYsIFdlYkNvcmU6OlRleHR1cmVNYXBwZXI6OlBhaW50RmxhZ3MgPSAwKTsK
ICAgICB2b2lkIGRldGFjaCgpOwogCiAgICAgLy8gVGhlIHBhaW50aW5nIHRocmVhZCBtdXN0IGxv
Y2sgdGhlIG1haW4gdGhyZWFkIHRvIHVzZSBiZWxvdyB0d28gbWV0aG9kcywgYmVjYXVzZSB0d28g
bWV0aG9kcyBhY2Nlc3MgbWVtYmVycyB0aGF0IHRoZSBtYWluIHRocmVhZCBtYW5hZ2VzLiBTZWUg
bV9jbGllbnQuCkBAIC04Miw5ICs4Miw2IEBAIHB1YmxpYzoKICAgICBib29sIGlzQWN0aXZlKCkg
Y29uc3QgeyByZXR1cm4gbV9pc0FjdGl2ZTsgfQogICAgIHZvaWQgc2V0QWN0aXZlKGJvb2wgYWN0
aXZlKSB7IG1faXNBY3RpdmUgPSBhY3RpdmU7IH0KIAotICAgIHZvaWQgc2V0Vmlld0JhY2tncm91
bmRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYgY29sb3IpIHsgbV92aWV3QmFja2dyb3VuZENv
bG9yID0gY29sb3I7IH0KLSAgICBXZWJDb3JlOjpDb2xvciB2aWV3QmFja2dyb3VuZENvbG9yKCkg
Y29uc3QgeyByZXR1cm4gbV92aWV3QmFja2dyb3VuZENvbG9yOyB9Ci0KIHByaXZhdGU6CiAgICAg
dm9pZCBjb21taXRTY2VuZVN0YXRlKGNvbnN0IFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NT
dGF0ZTo6Tmljb3NpYVN0YXRlJik7CiAgICAgdm9pZCB1cGRhdGVTY2VuZVN0YXRlKCk7CkBAIC0x
MTMsNyArMTEwLDYgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6VGV4
dHVyZU1hcHBlckxheWVyPiBtX3Jvb3RMYXllcjsKIAogICAgIE5pY29zaWE6OlBsYXRmb3JtTGF5
ZXI6OkxheWVySUQgbV9yb290TGF5ZXJJRCB7IDAgfTsKLSAgICBXZWJDb3JlOjpDb2xvciBtX3Zp
ZXdCYWNrZ3JvdW5kQ29sb3IgeyBXZWJDb3JlOjpDb2xvcjo6d2hpdGUgfTsKIAogICAgIFdlYkNv
cmU6OlRleHR1cmVNYXBwZXJGUFNDb3VudGVyIG1fZnBzQ291bnRlcjsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9z
aXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRp
bmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcApp
bmRleCA3NTIyZjg0ZWE4Zi4uODA1ZjIzMzBjY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29t
cG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGlj
cy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcApAQCAtMTU2LDEzICsx
NTYsNiBAQCB2b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6c2V0Vmlld3BvcnRTaXplKGNvbnN0IElu
dFNpemUmIHZpZXdwb3J0U2l6ZSwgZmxvYXQgc2NhbAogICAgIG1fY29tcG9zaXRpbmdSdW5Mb29w
LT5zY2hlZHVsZVVwZGF0ZSgpOwogfQogCi12b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6c2V0RHJh
d3NCYWNrZ3JvdW5kKGJvb2wgZHJhd3NCYWNrZ3JvdW5kKQotewotICAgIExvY2tIb2xkZXIgbG9j
a2VyKG1fYXR0cmlidXRlcy5sb2NrKTsKLSAgICBtX2F0dHJpYnV0ZXMuZHJhd3NCYWNrZ3JvdW5k
ID0gZHJhd3NCYWNrZ3JvdW5kOwotICAgIG1fY29tcG9zaXRpbmdSdW5Mb29wLT5zY2hlZHVsZVVw
ZGF0ZSgpOwotfQotCiB2b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6dXBkYXRlVmlld3BvcnQoKQog
ewogICAgIG1fY29tcG9zaXRpbmdSdW5Mb29wLT5zY2hlZHVsZVVwZGF0ZSgpOwpAQCAtMTk0LDgg
KzE4Nyw4IEBAIHZvaWQgVGhyZWFkZWRDb21wb3NpdG9yOjpyZW5kZXJMYXllclRyZWUoKQogICAg
IFdlYkNvcmU6OkludFNpemUgdmlld3BvcnRTaXplOwogICAgIFdlYkNvcmU6OkludFBvaW50IHNj
cm9sbFBvc2l0aW9uOwogICAgIGZsb2F0IHNjYWxlRmFjdG9yOwotICAgIGJvb2wgZHJhd3NCYWNr
Z3JvdW5kOwogICAgIGJvb2wgbmVlZHNSZXNpemU7CisKICAgICBWZWN0b3I8V2ViQ29yZTo6Q29v
cmRpbmF0ZWRHcmFwaGljc1N0YXRlPiBzdGF0ZXM7CiAKICAgICB7CkBAIC0yMDMsNyArMTk2LDYg
QEAgdm9pZCBUaHJlYWRlZENvbXBvc2l0b3I6OnJlbmRlckxheWVyVHJlZSgpCiAgICAgICAgIHZp
ZXdwb3J0U2l6ZSA9IG1fYXR0cmlidXRlcy52aWV3cG9ydFNpemU7CiAgICAgICAgIHNjcm9sbFBv
c2l0aW9uID0gbV9hdHRyaWJ1dGVzLnNjcm9sbFBvc2l0aW9uOwogICAgICAgICBzY2FsZUZhY3Rv
ciA9IG1fYXR0cmlidXRlcy5zY2FsZUZhY3RvcjsKLSAgICAgICAgZHJhd3NCYWNrZ3JvdW5kID0g
bV9hdHRyaWJ1dGVzLmRyYXdzQmFja2dyb3VuZDsKICAgICAgICAgbmVlZHNSZXNpemUgPSBtX2F0
dHJpYnV0ZXMubmVlZHNSZXNpemU7CiAKICAgICAgICAgc3RhdGVzID0gV1RGTW92ZShtX2F0dHJp
YnV0ZXMuc3RhdGVzKTsKQEAgLTI0NywxNCArMjM5LDExIEBAIHZvaWQgVGhyZWFkZWRDb21wb3Np
dG9yOjpyZW5kZXJMYXllclRyZWUoKQogICAgIHZpZXdwb3J0VHJhbnNmb3JtLnNjYWxlKHNjYWxl
RmFjdG9yKTsKICAgICB2aWV3cG9ydFRyYW5zZm9ybS50cmFuc2xhdGUoLXNjcm9sbFBvc2l0aW9u
LngoKSwgLXNjcm9sbFBvc2l0aW9uLnkoKSk7CiAKLSAgICBpZiAoIWRyYXdzQmFja2dyb3VuZCkg
ewotICAgICAgICBnbENsZWFyQ29sb3IoMCwgMCwgMCwgMCk7Ci0gICAgICAgIGdsQ2xlYXIoR0xf
Q09MT1JfQlVGRkVSX0JJVCk7Ci0gICAgfQorICAgIGdsQ2xlYXJDb2xvcigwLCAwLCAwLCAwKTsK
KyAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOwogCiAgICAgbV9zY2VuZS0+YXBwbHlT
dGF0ZUNoYW5nZXMoc3RhdGVzKTsKLSAgICBtX3NjZW5lLT5wYWludFRvQ3VycmVudEdMQ29udGV4
dCh2aWV3cG9ydFRyYW5zZm9ybSwgMSwgRmxvYXRSZWN0IHsgRmxvYXRQb2ludCB7IH0sIHZpZXdw
b3J0U2l6ZSB9LAotICAgICAgICBDb2xvcjo6dHJhbnNwYXJlbnQsICFkcmF3c0JhY2tncm91bmQs
IG1fcGFpbnRGbGFncyk7CisgICAgbV9zY2VuZS0+cGFpbnRUb0N1cnJlbnRHTENvbnRleHQodmll
d3BvcnRUcmFuc2Zvcm0sIEZsb2F0UmVjdCB7IEZsb2F0UG9pbnQgeyB9LCB2aWV3cG9ydFNpemUg
fSwgbV9wYWludEZsYWdzKTsKIAogICAgIG1fY29udGV4dC0+c3dhcEJ1ZmZlcnMoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRl
ZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9D
b29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3Iu
aAppbmRleCA2ZDcwNTM4NTBkYS4uYjYzMWZjMDM1ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVk
Q29tcG9zaXRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5oCkBAIC03MCw3ICs3MCw2
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNjYWxlRmFjdG9yKGZsb2F0KTsKICAgICB2b2lkIHNl
dFNjcm9sbFBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgZmxvYXQgc2NhbGUpOwog
ICAgIHZvaWQgc2V0Vmlld3BvcnRTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBmbG9hdCBz
Y2FsZSk7Ci0gICAgdm9pZCBzZXREcmF3c0JhY2tncm91bmQoYm9vbCk7CiAKICAgICB2b2lkIHVw
ZGF0ZVNjZW5lU3RhdGUoY29uc3QgV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlJik7
CiAKQEAgLTExMiw5ICsxMTEsNyBAQCBwcml2YXRlOgogICAgICAgICBXZWJDb3JlOjpJbnRTaXpl
IHZpZXdwb3J0U2l6ZTsKICAgICAgICAgV2ViQ29yZTo6SW50UG9pbnQgc2Nyb2xsUG9zaXRpb247
CiAgICAgICAgIGZsb2F0IHNjYWxlRmFjdG9yIHsgMSB9OwotICAgICAgICBib29sIGRyYXdzQmFj
a2dyb3VuZCB7IHRydWUgfTsKICAgICAgICAgYm9vbCBuZWVkc1Jlc2l6ZSB7IGZhbHNlIH07Ci0K
ICAgICAgICAgVmVjdG9yPFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZT4gc3RhdGVz
OwogCiAgICAgICAgIGJvb2wgY2xpZW50UmVuZGVyc05leHRGcmFtZSB7IGZhbHNlIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCmlu
ZGV4IGIxNjRjYWQ3Y2U2Li4xMjUxOWI3MTFkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAgLTM4LDcgKzM4LDYgQEAgdm9p
ZCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAogICAgIGVuY29kZXIgPDwgc3RvcmU7CiAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKGRy
YXdpbmdBcmVhVHlwZSk7CiAgICAgZW5jb2RlciA8PCBwYWdlR3JvdXBEYXRhOwotICAgIGVuY29k
ZXIgPDwgZHJhd3NCYWNrZ3JvdW5kOwogICAgIGVuY29kZXIgPDwgaXNFZGl0YWJsZTsKICAgICBl
bmNvZGVyIDw8IHVuZGVybGF5Q29sb3I7CiAgICAgZW5jb2RlciA8PCB1c2VGaXhlZExheW91dDsK
QEAgLTEyMiw2ICsxMjEsNyBAQCB2b2lkIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29k
ZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5T
SU9OUykKICAgICBlbmNvZGVyIDw8IGNvbnRlbnRSdWxlTGlzdHM7CiAjZW5kaWYKKyAgICBlbmNv
ZGVyIDw8IGJhY2tncm91bmRDb2xvcjsKIH0KIAogT3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycz4gV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2RlciYg
ZGVjb2RlcikKQEAgLTE0MCw4ICsxNDAsNiBAQCBPcHRpb25hbDxXZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzPiBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZAogICAg
IGlmICghcGFnZUdyb3VwRGF0YSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICBw
YXJhbWV0ZXJzLnBhZ2VHcm91cERhdGEgPSBXVEZNb3ZlKCpwYWdlR3JvdXBEYXRhKTsKLSAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuZHJhd3NCYWNrZ3JvdW5kKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMu
aXNFZGl0YWJsZSkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShwYXJhbWV0ZXJzLnVuZGVybGF5Q29sb3IpKQpAQCAtMzU0LDYgKzM1MiwxMiBA
QCBPcHRpb25hbDxXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzPiBXZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZAogICAgIHBhcmFtZXRlcnMuY29udGVudFJ1bGVMaXN0
cyA9IFdURk1vdmUoKmNvbnRlbnRSdWxlTGlzdHMpOwogI2VuZGlmCiAKKyAgICBPcHRpb25hbDxP
cHRpb25hbDxXZWJDb3JlOjpDb2xvcj4+IGJhY2tncm91bmRDb2xvcjsKKyAgICBkZWNvZGVyID4+
IGJhY2tncm91bmRDb2xvcjsKKyAgICBpZiAoIWJhY2tncm91bmRDb2xvcikKKyAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICBwYXJhbWV0ZXJzLmJhY2tncm91bmRDb2xvciA9IFdURk1v
dmUoKmJhY2tncm91bmRDb2xvcik7CisKICAgICByZXR1cm4gV1RGTW92ZShwYXJhbWV0ZXJzKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cy5oCmluZGV4IGQxYjAzMDNkNzJmLi42ZmFlMzdlODQyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtNzMsNyArNzMsNiBAQCBz
dHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgRHJhd2luZ0FyZWFUeXBlIGRy
YXdpbmdBcmVhVHlwZTsKICAgICBXZWJQYWdlR3JvdXBEYXRhIHBhZ2VHcm91cERhdGE7CiAKLSAg
ICBib29sIGRyYXdzQmFja2dyb3VuZDsKICAgICBib29sIGlzRWRpdGFibGU7CiAKICAgICBXZWJD
b3JlOjpDb2xvciB1bmRlcmxheUNvbG9yOwpAQCAtMTkwLDYgKzE4OSw4IEBAIHN0cnVjdCBXZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQog
ICAgIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERh
dGE+PiBjb250ZW50UnVsZUxpc3RzOwogI2VuZGlmCisKKyAgICBPcHRpb25hbDxXZWJDb3JlOjpD
b2xvcj4gYmFja2dyb3VuZENvbG9yOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNXUEUudHh0IGIvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzV1BFLnR4dAppbmRleCA1YTA4ZTVkZmI4OC4uNDFiYzYxNDhmZWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU291cmNlc1dQRS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzV1BF
LnR4dApAQCAtMTcwLDYgKzE3MCw3IEBAIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXaW5kb3dQ
cm9wZXJ0aWVzLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvd3BlL0NvbXBvc2l0aW5nTWFu
YWdlclByb3h5LmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBs
LmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvd3BlL1Njcm9sbEdlc3R1cmVDb250cm9sbGVy
LmNwcCBAbm8tdW5pZnkKK1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdENvbG9yLmNwcCBAbm8tdW5p
ZnkKIFVJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFNjcmlwdERpYWxvZ1dQRS5jcHAgQG5vLXVuaWZ5
CiBVSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3QmFja2VuZC5jcHAgQG5vLXVuaWZ5CiBV
SVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3V1BFLmNwcCBAbm8tdW5pZnkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDI2ZDhjYTA1
MWJjLi5iNjkwY2UzNGI2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tCkBAIC02ODcsNyArNjg3LDggQEAgc3RhdGljIHZvaWQgdmFsaWRhdGUo
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbikKIAogICAgIF9wYWdlID0gW19j
b250ZW50VmlldyBwYWdlXTsKICAgICBbc2VsZiBfZGlzcGF0Y2hTZXREZXZpY2VPcmllbnRhdGlv
bjpkZXZpY2VPcmllbnRhdGlvbigpXTsKLSAgICBfcGFnZS0+c2V0RHJhd3NCYWNrZ3JvdW5kKHNl
bGYub3BhcXVlKTsKKyAgICBpZiAoIXNlbGYub3BhcXVlKQorICAgICAgICBfcGFnZS0+c2V0QmFj
a2dyb3VuZENvbG9yKFdlYkNvcmU6OkNvbG9yOjp0cmFuc3BhcmVudCk7CiAKICAgICBbX2NvbnRl
bnRWaWV3IGxheWVyXS5hbmNob3JQb2ludCA9IENHUG9pbnRaZXJvOwogICAgIFtfY29udGVudFZp
ZXcgc2V0RnJhbWU6Ym91bmRzXTsKQEAgLTI1MDIsNyArMjUwMywxMCBAQCBzdGF0aWMgV2ViQ29y
ZTo6RmxvYXRQb2ludCBjb25zdHJhaW5Db250ZW50T2Zmc2V0KFdlYkNvcmU6OkZsb2F0UG9pbnQg
Y29udGVudE9mZgogICAgIGlmICghX3BhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIF9wYWdl
LT5zZXREcmF3c0JhY2tncm91bmQob3BhcXVlKTsKKyAgICBPcHRpb25hbDxXZWJDb3JlOjpDb2xv
cj4gYmFja2dyb3VuZENvbG9yOworICAgIGlmICghb3BhcXVlKQorICAgICAgICBiYWNrZ3JvdW5k
Q29sb3IgPSBXZWJDb3JlOjpDb2xvcihXZWJDb3JlOjpDb2xvcjo6dHJhbnNwYXJlbnQpCisgICAg
X3BhZ2UtPnNldEJhY2tncm91bmRDb2xvcihiYWNrZ3JvdW5kQ29sb3IpOwogICAgIFtzZWxmIF91
cGRhdGVTY3JvbGxWaWV3QmFja2dyb3VuZF07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKaW5kZXggZTQxM2ZiYTNlNDcuLmJm
ZDliNjAzOTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRXZWJWaWV3LmNwcApAQCAtMzk4OCw3NCArMzk4OCw2IEBAIHZvaWQgd2Via2l0V2ViVmll
d1dlYlByb2Nlc3NUZXJtaW5hdGVkKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdFdlYlBy
b2Nlc3NUCiAgICAgZ19zaWduYWxfZW1pdCh3ZWJWaWV3LCBzaWduYWxzW1dFQl9QUk9DRVNTX1RF
Uk1JTkFURURdLCAwLCByZWFzb24pOwogfQogCi0jaWYgUExBVEZPUk0oR1RLKQotLyoqCi0gKiB3
ZWJraXRfd2ViX3ZpZXdfc2V0X2JhY2tncm91bmRfY29sb3I6Ci0gKiBAd2ViX3ZpZXc6IGEgI1dl
YktpdFdlYlZpZXcKLSAqIEByZ2JhOiBhICNHZGtSR0JBCi0gKgotICogU2V0cyB0aGUgY29sb3Ig
dGhhdCB3aWxsIGJlIHVzZWQgdG8gZHJhdyB0aGUgQHdlYl92aWV3IGJhY2tncm91bmQgYmVmb3Jl
Ci0gKiB0aGUgYWN0dWFsIGNvbnRlbnRzIGFyZSByZW5kZXJlZC4gTm90ZSB0aGF0IGlmIHRoZSB3
ZWIgcGFnZSBsb2FkZWQgaW4gQHdlYl92aWV3Ci0gKiBzcGVjaWZpZXMgYSBiYWNrZ3JvdW5kIGNv
bG9yLCBpdCB3aWxsIHRha2UgcHJlY2VkZW5jZSBvdmVyIHRoZSBAcmdiYSBjb2xvci4KLSAqIEJ5
IGRlZmF1bHQgdGhlIEB3ZWJfdmlldyBiYWNrZ3JvdW5kIGNvbG9yIGlzIG9wYXF1ZSB3aGl0ZS4K
LSAqIE5vdGUgdGhhdCB0aGUgcGFyZW50IHdpbmRvdyBtdXN0IGhhdmUgYSBSR0JBIHZpc3VhbCBh
bmQKLSAqICNHdGtXaWRnZXQ6YXBwLXBhaW50YWJsZSBwcm9wZXJ0eSBzZXQgdG8gJVRSVUUgZm9y
IGJhY2tncm91bmRzIGNvbG9ycyB0byB3b3JrLgotICoKLSAqIDxpbmZvcm1hbGV4YW1wbGU+PHBy
b2dyYW1saXN0aW5nPgotICogc3RhdGljIHZvaWQgYnJvd3Nlcl93aW5kb3dfc2V0X2JhY2tncm91
bmRfY29sb3IgKEJyb3dzZXJXaW5kb3cgKndpbmRvdywKLSAqICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHZGtSR0JBICpyZ2JhKQotICogewot
ICogICAgIFdlYktpdFdlYlZpZXcgKndlYl92aWV3OwotICogICAgIEdka1NjcmVlbiAqc2NyZWVu
ID0gZ3RrX3dpbmRvd19nZXRfc2NyZWVuIChHVEtfV0lORE9XICh3aW5kb3cpKTsKLSAqICAgICBH
ZGtWaXN1YWwgKnJnYmFfdmlzdWFsID0gZ2RrX3NjcmVlbl9nZXRfcmdiYV92aXN1YWwgKHNjcmVl
bik7Ci0gKgotICogICAgIGlmICghcmdiYV92aXN1YWwpCi0gKiAgICAgICAgICByZXR1cm47Ci0g
KgotICogICAgIGd0a193aWRnZXRfc2V0X3Zpc3VhbCAoR1RLX1dJREdFVCAod2luZG93KSwgcmdi
YV92aXN1YWwpOwotICogICAgIGd0a193aWRnZXRfc2V0X2FwcF9wYWludGFibGUgKEdUS19XSURH
RVQgKHdpbmRvdyksIFRSVUUpOwotICoKLSAqICAgICB3ZWJfdmlldyA9IGJyb3dzZXJfd2luZG93
X2dldF93ZWJfdmlldyAod2luZG93KTsKLSAqICAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0X2JhY2tn
cm91bmRfY29sb3IgKHdlYl92aWV3LCByZ2JhKTsKLSAqIH0KLSAqIDwvcHJvZ3JhbWxpc3Rpbmc+
PC9pbmZvcm1hbGV4YW1wbGU+Ci0gKgotICogU2luY2U6IDIuOAotICovCi12b2lkIHdlYmtpdF93
ZWJfdmlld19zZXRfYmFja2dyb3VuZF9jb2xvcihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25z
dCBHZGtSR0JBKiByZ2JhKQotewotICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9W
SUVXKHdlYlZpZXcpKTsKLSAgICBnX3JldHVybl9pZl9mYWlsKHJnYmEpOwotCi0gICAgQ29sb3Ig
Y29sb3IoKnJnYmEpOwotICAgIGF1dG8mIHBhZ2UgPSBnZXRQYWdlKHdlYlZpZXcpOwotICAgIGlm
IChwYWdlLmJhY2tncm91bmRDb2xvcigpID09IGNvbG9yKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBwYWdlLnNldEJhY2tncm91bmRDb2xvcihjb2xvcik7Ci0gICAgcGFnZS5zZXREcmF3c0JhY2tn
cm91bmQoY29sb3IgPT0gQ29sb3I6OndoaXRlKTsKLX0KLQotLyoqCi0gKiB3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X2JhY2tncm91bmRfY29sb3I6Ci0gKiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZpZXcK
LSAqIEByZ2JhOiAob3V0KTogYSAjR2RrUkdCQSB0byBmaWxsIGluIHdpdGggdGhlIGJhY2tncm91
bmQgY29sb3IKLSAqCi0gKiBHZXRzIHRoZSBjb2xvciB0aGF0IGlzIHVzZWQgdG8gZHJhdyB0aGUg
QHdlYl92aWV3IGJhY2tncm91bmQgYmVmb3JlCi0gKiB0aGUgYWN0dWFsIGNvbnRlbnRzIGFyZSBy
ZW5kZXJlZC4KLSAqIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZSBhbHNvIHdlYmtpdF93ZWJfdmll
d19zZXRfYmFja2dyb3VuZF9jb2xvcigpCi0gKgotICogU2luY2U6IDIuOAotICovCi12b2lkIHdl
YmtpdF93ZWJfdmlld19nZXRfYmFja2dyb3VuZF9jb2xvcihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3
LCBHZGtSR0JBKiByZ2JhKQotewotICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9W
SUVXKHdlYlZpZXcpKTsKLSAgICBnX3JldHVybl9pZl9mYWlsKHJnYmEpOwotCi0gICAgKnJnYmEg
PSBnZXRQYWdlKHdlYlZpZXcpLmJhY2tncm91bmRDb2xvcigpOwotfQotI2VuZGlmIC8vIFBMQVRG
T1JNKEdUSykKLQogLyoKICAqIHdlYmtpdF93ZWJfdmlld19pc19lZGl0YWJsZToKICAqIEB3ZWJf
dmlldzogYSAjV2ViS2l0V2ViVmlldwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViVmlld0d0ay5jcHAKaW5kZXggYmM4MjE3OTkxMjguLjc3OTlmYjgx
YzczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YlZpZXdHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2ViVmlld0d0ay5jcHAKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJXZWJLaXRTY3JpcHRE
aWFsb2dJbXBsLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlLmgiCiAjaW5j
bHVkZSAiV2ViS2l0V2ViVmlld1ByaXZhdGUuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9HdGtVdGlsaXRpZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Bs
YXRmb3JtRGlzcGxheS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1TY3JlZW4uaD4KQEAg
LTM1OSwzICszNjAsNjUgQEAgR3RrV2lkZ2V0KiB3ZWJraXRfd2ViX3ZpZXdfbmV3X3dpdGhfdXNl
cl9jb250ZW50X21hbmFnZXIoV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2UKIAogICAgIHJldHVybiBH
VEtfV0lER0VUKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfVklFVywgInVzZXItY29udGVu
dC1tYW5hZ2VyIiwgdXNlckNvbnRlbnRNYW5hZ2VyLCBudWxscHRyKSk7CiB9CisKKy8qKgorICog
d2Via2l0X3dlYl92aWV3X3NldF9iYWNrZ3JvdW5kX2NvbG9yOgorICogQHdlYl92aWV3OiBhICNX
ZWJLaXRXZWJWaWV3CisgKiBAcmdiYTogYSAjR2RrUkdCQQorICoKKyAqIFNldHMgdGhlIGNvbG9y
IHRoYXQgd2lsbCBiZSB1c2VkIHRvIGRyYXcgdGhlIEB3ZWJfdmlldyBiYWNrZ3JvdW5kIGJlZm9y
ZQorICogdGhlIGFjdHVhbCBjb250ZW50cyBhcmUgcmVuZGVyZWQuIE5vdGUgdGhhdCBpZiB0aGUg
d2ViIHBhZ2UgbG9hZGVkIGluIEB3ZWJfdmlldworICogc3BlY2lmaWVzIGEgYmFja2dyb3VuZCBj
b2xvciwgaXQgd2lsbCB0YWtlIHByZWNlZGVuY2Ugb3ZlciB0aGUgQHJnYmEgY29sb3IuCisgKiBC
eSBkZWZhdWx0IHRoZSBAd2ViX3ZpZXcgYmFja2dyb3VuZCBjb2xvciBpcyBvcGFxdWUgd2hpdGUu
CisgKiBOb3RlIHRoYXQgdGhlIHBhcmVudCB3aW5kb3cgbXVzdCBoYXZlIGEgUkdCQSB2aXN1YWwg
YW5kCisgKiAjR3RrV2lkZ2V0OmFwcC1wYWludGFibGUgcHJvcGVydHkgc2V0IHRvICVUUlVFIGZv
ciBiYWNrZ3JvdW5kcyBjb2xvcnMgdG8gd29yay4KKyAqCisgKiA8aW5mb3JtYWxleGFtcGxlPjxw
cm9ncmFtbGlzdGluZz4KKyAqIHN0YXRpYyB2b2lkIGJyb3dzZXJfd2luZG93X3NldF9iYWNrZ3Jv
dW5kX2NvbG9yIChCcm93c2VyV2luZG93ICp3aW5kb3csCisgKiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR2RrUkdCQSAqcmdiYSkKKyAqIHsK
KyAqICAgICBXZWJLaXRXZWJWaWV3ICp3ZWJfdmlldzsKKyAqICAgICBHZGtTY3JlZW4gKnNjcmVl
biA9IGd0a193aW5kb3dfZ2V0X3NjcmVlbiAoR1RLX1dJTkRPVyAod2luZG93KSk7CisgKiAgICAg
R2RrVmlzdWFsICpyZ2JhX3Zpc3VhbCA9IGdka19zY3JlZW5fZ2V0X3JnYmFfdmlzdWFsIChzY3Jl
ZW4pOworICoKKyAqICAgICBpZiAoIXJnYmFfdmlzdWFsKQorICogICAgICAgICAgcmV0dXJuOwor
ICoKKyAqICAgICBndGtfd2lkZ2V0X3NldF92aXN1YWwgKEdUS19XSURHRVQgKHdpbmRvdyksIHJn
YmFfdmlzdWFsKTsKKyAqICAgICBndGtfd2lkZ2V0X3NldF9hcHBfcGFpbnRhYmxlIChHVEtfV0lE
R0VUICh3aW5kb3cpLCBUUlVFKTsKKyAqCisgKiAgICAgd2ViX3ZpZXcgPSBicm93c2VyX3dpbmRv
d19nZXRfd2ViX3ZpZXcgKHdpbmRvdyk7CisgKiAgICAgd2Via2l0X3dlYl92aWV3X3NldF9iYWNr
Z3JvdW5kX2NvbG9yICh3ZWJfdmlldywgcmdiYSk7CisgKiB9CisgKiA8L3Byb2dyYW1saXN0aW5n
PjwvaW5mb3JtYWxleGFtcGxlPgorICoKKyAqIFNpbmNlOiAyLjgKKyAqLwordm9pZCB3ZWJraXRf
d2ViX3ZpZXdfc2V0X2JhY2tncm91bmRfY29sb3IoV2ViS2l0V2ViVmlldyogd2ViVmlldywgY29u
c3QgR2RrUkdCQSogcmdiYSkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJf
VklFVyh3ZWJWaWV3KSk7CisgICAgZ19yZXR1cm5faWZfZmFpbChyZ2JhKTsKKworICAgIGF1dG8m
IHBhZ2UgPSAqd2Via2l0V2ViVmlld0Jhc2VHZXRQYWdlKHJlaW50ZXJwcmV0X2Nhc3Q8V2ViS2l0
V2ViVmlld0Jhc2UqPih3ZWJWaWV3KSk7CisgICAgcGFnZS5zZXRCYWNrZ3JvdW5kQ29sb3IoV2Vi
Q29yZTo6Q29sb3IoKnJnYmEpKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2Jh
Y2tncm91bmRfY29sb3I6CisgKiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZpZXcKKyAqIEByZ2Jh
OiAob3V0KTogYSAjR2RrUkdCQSB0byBmaWxsIGluIHdpdGggdGhlIGJhY2tncm91bmQgY29sb3IK
KyAqCisgKiBHZXRzIHRoZSBjb2xvciB0aGF0IGlzIHVzZWQgdG8gZHJhdyB0aGUgQHdlYl92aWV3
IGJhY2tncm91bmQgYmVmb3JlCisgKiB0aGUgYWN0dWFsIGNvbnRlbnRzIGFyZSByZW5kZXJlZC4K
KyAqIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZSBhbHNvIHdlYmtpdF93ZWJfdmlld19zZXRfYmFj
a2dyb3VuZF9jb2xvcigpCisgKgorICogU2luY2U6IDIuOAorICovCit2b2lkIHdlYmtpdF93ZWJf
dmlld19nZXRfYmFja2dyb3VuZF9jb2xvcihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBHZGtSR0JB
KiByZ2JhKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZp
ZXcpKTsKKyAgICBnX3JldHVybl9pZl9mYWlsKHJnYmEpOworCisgICAgYXV0byYgcGFnZSA9ICp3
ZWJraXRXZWJWaWV3QmFzZUdldFBhZ2UocmVpbnRlcnByZXRfY2FzdDxXZWJLaXRXZWJWaWV3QmFz
ZSo+KHdlYlZpZXcpKTsKKyAgICAqcmdiYSA9IHBhZ2UuYmFja2dyb3VuZENvbG9yKCkudmFsdWVP
cihXZWJDb3JlOjpDb2xvcjo6d2hpdGUpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRDb2xvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvd3BlL1dlYktpdENvbG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMC4uYjgxOGY5NWEzMDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvd3BlL1dlYktpdENvbG9yLmNwcApAQCAtMCwwICsxLDExOCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxOSBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICog
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiV2ViS2l0Q29sb3IuaCIKKworI2luY2x1ZGUgIldlYktpdENvbG9yUHJpdmF0ZS5oIgor
CisvKioKKyAqIFNFQ1RJT046IFdlYktpdENvbG9yCisgKiBAU2hvcnRfZGVzY3JpcHRpb246IEEg
Ym94ZWQgdHlwZSByZXByZXNlbnRpbmcgYSBSR0JBIGNvbG9yCisgKiBAVGl0bGU6IFdlYktpdENv
bG9yCisgKiBAU2VlX2Fsc286ICNXZWJLaXRXZWJWaWV3LgorICoKKyAqIEEgV2ViS2l0Q29sb3Ig
aXMgYSBib3hlZCB0eXBlIHJlcHJlc2VudGluZyBhIFJHQkEgY29sb3IuCisgKgorICogU2luY2U6
IDIuMjQKKyAqLworCisvKioKKyAqIHdlYmtpdF9jb2xvcl9jb3B5OgorICogQGNvbG9yOiBhICNX
ZWJLaXRDb2xvcgorICoKKyAqIE1ha2UgYSBjb3B5IG9mIEBjb2xvci4KKyAqCisgKiBSZXR1cm5z
OiAodHJhbnNmZXIgZnVsbCk6IEEgY29weSBvZiBwYXNzZWQgaW4gI1dlYktpdENvbG9yLgorICoK
KyAqIFNpbmNlOiAyLjI0CisgKi8KK1dlYktpdENvbG9yKiB3ZWJraXRfY29sb3JfY29weShXZWJL
aXRDb2xvciogY29sb3IpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoY29sb3IsIG51bGxw
dHIpOworCisgICAgV2ViS2l0Q29sb3IqIGNvcHkgPSBzdGF0aWNfY2FzdDxXZWJLaXRDb2xvcio+
KGZhc3RaZXJvZWRNYWxsb2Moc2l6ZW9mKFdlYktpdENvbG9yKSkpOworICAgIGNvcHktPnJlZCA9
IGNvbG9yLT5yZWQ7CisgICAgY29weS0+Z3JlZW4gPSBjb2xvci0+Z3JlZW47CisgICAgY29weS0+
Ymx1ZSA9IGNvbG9yLT5ibHVlOworICAgIGNvcHktPmFscGhhID0gY29sb3ItPmFscGhhOworICAg
IHJldHVybiBjb3B5OworfQorCisvKioKKyAqIHdlYmtpdF9jb2xvcl9mcmVlOgorICogQGNvbG9y
OiBhICNXZWJLaXRDb2xvcgorICoKKyAqIEZyZWUgdGhlICNXZWJLaXRDb2xvci4KKyAqCisgKiBT
aW5jZTogMi4yNAorICovCit2b2lkIHdlYmtpdF9jb2xvcl9mcmVlKFdlYktpdENvbG9yKiBjb2xv
cikKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKGNvbG9yKTsKKworICAgIGZhc3RGcmVlKGNvbG9y
KTsKK30KKworR19ERUZJTkVfQk9YRURfVFlQRShXZWJLaXRDb2xvciwgd2Via2l0X2NvbG9yLCB3
ZWJraXRfY29sb3JfY29weSwgd2Via2l0X2NvbG9yX2ZyZWUpOworCitjb25zdCBXZWJDb3JlOjpD
b2xvciB3ZWJraXRDb2xvclRvV2ViQ29yZUNvbG9yKFdlYktpdENvbG9yKiBjb2xvcikKK3sKKyAg
ICByZXR1cm4gV2ViQ29yZTo6Q29sb3Ioc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNvbG9yLT5yZWQpLCBz
dGF0aWNfY2FzdDxmbG9hdD4oY29sb3ItPmdyZWVuKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8Zmxv
YXQ+KGNvbG9yLT5ibHVlKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNvbG9yLT5hbHBoYSkpOworfQor
Cit2b2lkIHdlYmtpdENvbG9yRmlsbEZyb21XZWJDb3JlQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29s
b3ImIHdlYkNvcmVDb2xvciwgV2ViS2l0Q29sb3IqIGNvbG9yKQoreworICAgIFJFTEVBU0VfQVNT
RVJUKHdlYkNvcmVDb2xvci5pc1ZhbGlkKCkpOworCisgICAgZG91YmxlIHIsIGcsIGIsIGE7Cisg
ICAgd2ViQ29yZUNvbG9yLmdldFJHQkEociwgZywgYiwgYSk7CisgICAgY29sb3ItPnJlZCA9IHI7
CisgICAgY29sb3ItPmdyZWVuID0gZzsKKyAgICBjb2xvci0+Ymx1ZSA9IGI7CisgICAgY29sb3It
PmFscGhhID0gYTsKK30KKworLyoqCisgKiB3ZWJraXRfY29sb3JfcGFyc2U6CisgKiBAY29sb3I6
IGEgI1dlYktpdENvbG9yIHRvIGZpbGwgaW4KKyAqIEBjb2xvcl9zdHJpbmc6IGNvbG9yIHJlcHJl
c2VudGF0aW9uIGFzIGNvbG9yIG5pY2tuYW1lIG9yIEhFWCBzdHJpbmcKKyAqCisgKiBDcmVhdGUg
YSBuZXcgI1dlYktpdENvbG9yIGZvciB0aGUgZ2l2ZW4gQGNvbG9yX3N0cmluZworICogcmVwcmVz
ZW50YXRpb24uIFRoZXJlIGFyZSB0d28gdmFsaWQgcmVwcmVzZW50YXRpb24gdHlwZXM6IHN0YW5k
YXJkIGNvbG9yCisgKiBuYW1lcyAoc2VlIGh0dHBzOi8vaHRtbGNvbG9yY29kZXMuY29tL2NvbG9y
LW5hbWVzLyBmb3IgaW5zdGFuY2UpIG9yIEhFWAorICogdmFsdWVzLgorICoKKyAqIFJldHVybnM6
IGEgI2dib29sZWFuIGluZGljYXRpbmcgaWYgdGhlIEBjb2xvciB3YXMgY29ycmVjdGx5IGZpbGxl
ZCBpbiBvciBub3QuCisgKgorICogU2luY2U6IDIuMjQKKyAqLworZ2Jvb2xlYW4gd2Via2l0X2Nv
bG9yX3BhcnNlKFdlYktpdENvbG9yKiBjb2xvciwgY29uc3QgZ2NoYXIqIGNvbG9yU3RyaW5nKQor
eworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGNvbG9yLCBGQUxTRSk7CisgICAgZ19yZXR1cm5f
dmFsX2lmX2ZhaWwoY29sb3JTdHJpbmcsIEZBTFNFKTsKKworICAgIGF1dG8gd2ViQ29yZUNvbG9y
ID0gV2ViQ29yZTo6Q29sb3IoY29sb3JTdHJpbmcpOworICAgIGlmICghd2ViQ29yZUNvbG9yLmlz
VmFsaWQoKSkKKyAgICAgICAgcmV0dXJuIEZBTFNFOworCisgICAgd2Via2l0Q29sb3JGaWxsRnJv
bVdlYkNvcmVDb2xvcih3ZWJDb3JlQ29sb3IsIGNvbG9yKTsKKyAgICByZXR1cm4gVFJVRTsKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0Q29sb3Iu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0Q29sb3IuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZjI2ZDA5MTYwNjgKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdENvbG9yLmgKQEAg
LTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBJZ2FsaWEgUy5MLgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAq
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWYg
IWRlZmluZWQoX19XRUJLSVRfSF9JTlNJREVfXykgJiYgIWRlZmluZWQoV0VCS0lUMl9DT01QSUxB
VElPTikKKyNlcnJvciAiT25seSA8d3BlL3dlYmtpdC5oPiBjYW4gYmUgaW5jbHVkZWQgZGlyZWN0
bHkuIgorI2VuZGlmCisKKyNpZm5kZWYgV2ViS2l0Q29sb3JfaAorI2RlZmluZSBXZWJLaXRDb2xv
cl9oCisKKyNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgorI2luY2x1ZGUgPHdwZS9XZWJLaXREZWZp
bmVzLmg+CisKK0dfQkVHSU5fREVDTFMKKworLyoqCisgKiBXZWJLaXRDb2xvcjoKKyAqIEByZWQ6
IFJlZCBjaGFubmVsLCBiZXR3ZWVuIDAuMCBhbmQgMS4wIGluY2x1c2l2ZQorICogQGdyZWVuOiBH
cmVlbiBjaGFubmVsLCBiZXR3ZWVuIDAuMCBhbmQgMS4wIGluY2x1c2l2ZQorICogQGJsdWU6IEJs
dWUgY2hhbm5lbCwgYmV0d2VlbiAwLjAgYW5kIDEuMCBpbmNsdXNpdmUKKyAqIEBhbHBoYTogQWxw
aGEgY2hhbm5lbCwgYmV0d2VlbiAwLjAgYW5kIDEuMCBpbmNsdXNpdmUKKyAqCisgKiBBIFdlYktp
dENvbG9yIGlzIGEgYm94ZWQgdHlwZSByZXByZXNlbnRpbmcgYSBSR0JBIGNvbG9yLgorICoKKyAq
IFNpbmNlOiAyLjI0CisgKi8KK3N0cnVjdCBfV2ViS2l0Q29sb3IgeworICAgIGdkb3VibGUgcmVk
OworICAgIGdkb3VibGUgZ3JlZW47CisgICAgZ2RvdWJsZSBibHVlOworICAgIGdkb3VibGUgYWxw
aGE7Cit9OworCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0Q29sb3IgV2ViS2l0Q29sb3I7CisKKyNk
ZWZpbmUgV0VCS0lUX1RZUEVfQ09MT1IgKHdlYmtpdF9jb2xvcl9nZXRfdHlwZSgpKQorCitXRUJL
SVRfQVBJIEdUeXBlCit3ZWJraXRfY29sb3JfZ2V0X3R5cGUgICAgICh2b2lkKTsKKworV0VCS0lU
X0FQSSBnYm9vbGVhbgord2Via2l0X2NvbG9yX3BhcnNlICAgICAgICAoV2ViS2l0Q29sb3IgKmNv
bG9yLCBjb25zdCBnY2hhciAqY29sb3Jfc3RyaW5nKTsKKworR19FTkRfREVDTFMKKworI2VuZGlm
IC8qIFdlYktpdENvbG9yX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS93cGUvV2ViS2l0Q29sb3JQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvd3BlL1dlYktpdENvbG9yUHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwLi4yMzlhMTE2MDM0MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0Q29sb3JQcml2YXRlLmgKQEAgLTAsMCArMSwyNiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg
KgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisg
KiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgIkNvbG9yLmgiCisjaW5jbHVkZSAiV2ViS2l0Q29sb3IuaCIKKwordm9pZCB3ZWJraXRD
b2xvckZpbGxGcm9tV2ViQ29yZUNvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiwgV2ViS2l0Q29s
b3IqKTsKK2NvbnN0IFdlYkNvcmU6OkNvbG9yIHdlYmtpdENvbG9yVG9XZWJDb3JlQ29sb3IoV2Vi
S2l0Q29sb3IqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUv
V2ViS2l0V2ViVmlldy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRX
ZWJWaWV3LmgKaW5kZXggNDEwMmE3NTI2ZDYuLjJhNGE2MjA0MjM1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXcuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXcuaApAQCAtNDksNiArNDksNyBA
QAogI2luY2x1ZGUgPHdwZS9XZWJLaXRXZWJDb250ZXh0Lmg+CiAjaW5jbHVkZSA8d3BlL1dlYktp
dFdlYlJlc291cmNlLmg+CiAjaW5jbHVkZSA8d3BlL1dlYktpdFdlYlZpZXdCYWNrZW5kLmg+Cisj
aW5jbHVkZSA8d3BlL1dlYktpdENvbG9yLmg+CiAjaW5jbHVkZSA8d3BlL1dlYktpdFdlYlZpZXdT
ZXNzaW9uU3RhdGUuaD4KICNpbmNsdWRlIDx3cGUvV2ViS2l0V2luZG93UHJvcGVydGllcy5oPgog
CkBAIC01MTcsNiArNTE4LDEzIEBAIFdFQktJVF9BUEkgdm9pZAogd2Via2l0X3dlYl92aWV3X3Jl
bW92ZV9mcmFtZV9kaXNwbGF5ZWRfY2FsbGJhY2sgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAg
ICAgICAgICp3ZWJfdmlldywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGd1aW50ICAgICAgICAgICAgICAgICAgICAgICAgaWQpOwogCitXRUJL
SVRfQVBJIHZvaWQKK3dlYmtpdF93ZWJfdmlld19zZXRfYmFja2dyb3VuZF9jb2xvciAgICAgICAg
ICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRDb2xv
ciAgICAgICAgICAgICAgICAgKmNvbG9yKTsKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl92
aWV3X2dldF9iYWNrZ3JvdW5kX2NvbG9yICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAg
ICAgICAgICAgICAgICp3ZWJfdmlldywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFdlYktpdENvbG9yICAgICAgICAgICAgICAgICAqY29sb3Ip
OworCiBHX0VORF9ERUNMUwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViVmlld1dQRS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXdXUEUuY3BwCmluZGV4IGEzNDk1ZTg1MmUxLi45ZTVj
ZTVjMzg5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJL
aXRXZWJWaWV3V1BFLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dl
YktpdFdlYlZpZXdXUEUuY3BwCkBAIC0yMCw2ICsyMCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiV2ViS2l0V2ViVmlldy5oIgogCisjaW5jbHVkZSAiV2ViS2l0Q29sb3JQcml2
YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViVmlld1ByaXZhdGUuaCIKIAogZ2Jvb2xlYW4gd2Vi
a2l0V2ViVmlld0F1dGhlbnRpY2F0ZShXZWJLaXRXZWJWaWV3KiwgV2ViS2l0QXV0aGVudGljYXRp
b25SZXF1ZXN0KikKQEAgLTE3OCwzICsxNzksNDQgQEAgV2ViS2l0V2ViVmlldyogd2Via2l0X3dl
Yl92aWV3X25ld193aXRoX3VzZXJfY29udGVudF9tYW5hZ2VyKFdlYktpdFdlYlZpZXdCYWNrZW4K
ICAgICAgICAgInVzZXItY29udGVudC1tYW5hZ2VyIiwgdXNlckNvbnRlbnRNYW5hZ2VyLAogICAg
ICAgICBudWxscHRyKSk7CiB9CisKKy8qKgorICogd2Via2l0X3dlYl92aWV3X3NldF9iYWNrZ3Jv
dW5kX2NvbG9yOgorICogQHdlYl92aWV3OiBhICNXZWJLaXRXZWJWaWV3CisgKiBAYmFja2dyb3Vu
ZENvbG9yOiBhICNXZWJLaXRDb2xvcgorICoKKyAqIFNldHMgdGhlIGNvbG9yIHRoYXQgd2lsbCBi
ZSB1c2VkIHRvIGRyYXcgdGhlIEB3ZWJfdmlldyBiYWNrZ3JvdW5kIGJlZm9yZQorICogdGhlIGFj
dHVhbCBjb250ZW50cyBhcmUgcmVuZGVyZWQuIE5vdGUgdGhhdCBpZiB0aGUgd2ViIHBhZ2UgbG9h
ZGVkIGluIEB3ZWJfdmlldworICogc3BlY2lmaWVzIGEgYmFja2dyb3VuZCBjb2xvciwgaXQgd2ls
bCB0YWtlIHByZWNlZGVuY2Ugb3ZlciB0aGUgYmFja2dyb3VuZCBjb2xvci4KKyAqIEJ5IGRlZmF1
bHQgdGhlIEB3ZWJfdmlldyBiYWNrZ3JvdW5kIGNvbG9yIGlzIG9wYXF1ZSB3aGl0ZS4KKyAqCisg
KiBTaW5jZTogMi4yNAorICovCit2b2lkIHdlYmtpdF93ZWJfdmlld19zZXRfYmFja2dyb3VuZF9j
b2xvcihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRDb2xvciogYmFja2dyb3VuZENvbG9y
KQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpKTsK
KyAgICBnX3JldHVybl9pZl9mYWlsKGJhY2tncm91bmRDb2xvcik7CisKKyAgICBhdXRvJiBwYWdl
ID0gd2Via2l0V2ViVmlld0dldFBhZ2Uod2ViVmlldyk7CisgICAgcGFnZS5zZXRCYWNrZ3JvdW5k
Q29sb3Iod2Via2l0Q29sb3JUb1dlYkNvcmVDb2xvcihiYWNrZ3JvdW5kQ29sb3IpKTsKK30KKwor
LyoqCisgKiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2JhY2tncm91bmRfY29sb3I6CisgKiBAd2ViX3Zp
ZXc6IGEgI1dlYktpdFdlYlZpZXcKKyAqIEByZ2JhOiAob3V0KTogYSAjV2ViS2l0Q29sb3IgdG8g
ZmlsbCBpbiB3aXRoIHRoZSBiYWNrZ3JvdW5kIGNvbG9yCisgKgorICogR2V0cyB0aGUgY29sb3Ig
dGhhdCBpcyB1c2VkIHRvIGRyYXcgdGhlIEB3ZWJfdmlldyBiYWNrZ3JvdW5kIGJlZm9yZSB0aGUK
KyAqIGFjdHVhbCBjb250ZW50cyBhcmUgcmVuZGVyZWQuIEZvciBtb3JlIGluZm9ybWF0aW9uIHNl
ZSBhbHNvCisgKiB3ZWJraXRfd2ViX3ZpZXdfc2V0X2JhY2tncm91bmRfY29sb3IoKS4KKyAqCisg
KiBTaW5jZTogMi4yNAorICovCit2b2lkIHdlYmtpdF93ZWJfdmlld19nZXRfYmFja2dyb3VuZF9j
b2xvcihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRDb2xvciogY29sb3IpCit7CisgICAg
Z19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldykpOworICAgIGF1dG8m
IHBhZ2UgPSB3ZWJraXRXZWJWaWV3R2V0UGFnZSh3ZWJWaWV3KTsKKworICAgIGF1dG8mIHdlYkNv
cmVDb2xvciA9IHBhZ2UuYmFja2dyb3VuZENvbG9yKCk7CisgICAgd2Via2l0Q29sb3JGaWxsRnJv
bVdlYkNvcmVDb2xvcih3ZWJDb3JlQ29sb3IudmFsdWVPcihXZWJDb3JlOjpDb2xvcjo6d2hpdGUp
LCBjb2xvcik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3Bl
L2RvY3Mvd3BlLTAuMS1zZWN0aW9ucy50eHQgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
d3BlL2RvY3Mvd3BlLTAuMS1zZWN0aW9ucy50eHQKaW5kZXggYTVlY2ZlNDYzN2YuLmU2NWE3ODE4
NmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3Bl
LTAuMS1zZWN0aW9ucy50eHQKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9k
b2NzL3dwZS0wLjEtc2VjdGlvbnMudHh0CkBAIC0yMDcsNiArMjA3LDggQEAgd2Via2l0X3dlYl92
aWV3X3Jlc3RvcmVfc2Vzc2lvbl9zdGF0ZQogd2Via2l0X3dlYl92aWV3X2dldF9tYWluX3Jlc291
cmNlCiB3ZWJraXRfd2ViX3ZpZXdfYWRkX2ZyYW1lX2Rpc3BsYXllZF9jYWxsYmFjawogd2Via2l0
X3dlYl92aWV3X3JlbW92ZV9mcmFtZV9kaXNwbGF5ZWRfY2FsbGJhY2sKK3dlYmtpdF93ZWJfdmll
d19nZXRfYmFja2dyb3VuZF9jb2xvcgord2Via2l0X3dlYl92aWV3X3NldF9iYWNrZ3JvdW5kX2Nv
bG9yCiAKIDxTVUJTRUNUSU9OIFdlYktpdEphdmFzY3JpcHRSZXN1bHQ+CiBXZWJLaXRKYXZhc2Ny
aXB0UmVzdWx0CkBAIC0yNjcsNiArMjY5LDE2IEBAIHdlYmtpdF93ZWJfdmlld19iYWNrZW5kX25l
dwogd2Via2l0X3dlYl92aWV3X2JhY2tlbmRfZ2V0X3R5cGUKIDwvU0VDVElPTj4KIAorPFNFQ1RJ
T04+Cis8RklMRT5XZWJLaXRDb2xvcjwvRklMRT4KK1dFQktJVF9UWVBFX0NPTE9SCitXZWJLaXRD
b2xvcgord2Via2l0X2NvbG9yX3BhcnNlCisKKzxTVUJTRUNUSU9OIFByaXZhdGU+Cit3ZWJraXRf
Y29sb3JfZ2V0X3R5cGUKKzwvU0VDVElPTj4KKwogPFNFQ1RJT04+CiA8RklMRT5XZWJLaXRBdXRo
ZW50aWNhdGlvblJlcXVlc3Q8L0ZJTEU+CiBXZWJLaXRBdXRoZW50aWNhdGlvblJlcXVlc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KaW5kZXggYTE5ZjM2
OWM2MDguLjdkYTczNThjZWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJWaWV3SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJWaWV3SW1wbC5tbQpAQCAtMTQ1NCw3ICsxNDU0LDEwIEBAIHZvaWQgV2ViVmlld0ltcGw6OmRp
ZFJlbGF1bmNoUHJvY2VzcygpCiAKIHZvaWQgV2ViVmlld0ltcGw6OnNldERyYXdzQmFja2dyb3Vu
ZChib29sIGRyYXdzQmFja2dyb3VuZCkKIHsKLSAgICBtX3BhZ2UtPnNldERyYXdzQmFja2dyb3Vu
ZChkcmF3c0JhY2tncm91bmQpOworICAgIE9wdGlvbmFsPFdlYkNvcmU6OkNvbG9yPiBiYWNrZ3Jv
dW5kQ29sb3I7CisgICAgaWYgKCFkcmF3c0JhY2tncm91bmQpCisgICAgICAgIGJhY2tncm91bmRD
b2xvciA9IFdlYkNvcmU6OkNvbG9yKFdlYkNvcmU6OkNvbG9yOjp0cmFuc3BhcmVudCk7CisgICAg
bV9wYWdlLT5zZXRCYWNrZ3JvdW5kQ29sb3IoYmFja2dyb3VuZENvbG9yKTsKIAogICAgIC8vIE1h
a2Ugc3VyZSB1cGRhdGVMYXllciBnZXRzIGNhbGxlZCBvbiB0aGUgd2ViIHZpZXcuCiAgICAgW21f
dmlldyBzZXROZWVkc0Rpc3BsYXk6WUVTXTsKQEAgLTE0NjIsNyArMTQ2NSw4IEBAIHZvaWQgV2Vi
Vmlld0ltcGw6OnNldERyYXdzQmFja2dyb3VuZChib29sIGRyYXdzQmFja2dyb3VuZCkKIAogYm9v
bCBXZWJWaWV3SW1wbDo6ZHJhd3NCYWNrZ3JvdW5kKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9w
YWdlLT5kcmF3c0JhY2tncm91bmQoKTsKKyAgICBhdXRvJiBiYWNrZ3JvdW5kQ29sb3IgPSBtX3Bh
Z2UtPmJhY2tncm91bmRDb2xvcigpOworICAgIHJldHVybiAhYmFja2dyb3VuZENvbG9yIHx8IGJh
Y2tncm91bmRDb2xvci52YWx1ZSgpLmlzVmlzaWJsZSgpOwogfQogCiB2b2lkIFdlYlZpZXdJbXBs
OjpzZXRCYWNrZ3JvdW5kQ29sb3IoTlNDb2xvciAqYmFja2dyb3VuZENvbG9yKQpAQCAtMTQ4Niw3
ICsxNDkwLDcgQEAgTlNDb2xvciAqV2ViVmlld0ltcGw6OmJhY2tncm91bmRDb2xvcigpIGNvbnN0
CiAKIGJvb2wgV2ViVmlld0ltcGw6OmlzT3BhcXVlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9w
YWdlLT5kcmF3c0JhY2tncm91bmQoKTsKKyAgICByZXR1cm4gZHJhd3NCYWNrZ3JvdW5kKCk7CiB9
CiAKIHZvaWQgV2ViVmlld0ltcGw6OnNldFNob3VsZFN1cHByZXNzRmlyc3RSZXNwb25kZXJDaGFu
Z2VzKGJvb2wgc2hvdWxkU3VwcHJlc3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAppbmRleCA3NzkyNjRkZTcyYS4uMTE2YjkwZGQzZWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNDI3LDcgKzQyNyw2IEBAIFdlYlBhZ2VQcm94
eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYg
cHJvY2VzcywgdWluCiAgICAgLCBtX2NwdUxpbWl0KG1fY29uZmlndXJhdGlvbi0+Y3B1TGltaXQo
KSkKICAgICAsIG1fYmFja0ZvcndhcmRMaXN0KFdlYkJhY2tGb3J3YXJkTGlzdDo6Y3JlYXRlKCp0
aGlzKSkKICAgICAsIG1fd2FpdHNGb3JQYWludEFmdGVyVmlld0RpZE1vdmVUb1dpbmRvdyhtX2Nv
bmZpZ3VyYXRpb24tPndhaXRzRm9yUGFpbnRBZnRlclZpZXdEaWRNb3ZlVG9XaW5kb3coKSkKLSAg
ICAsIG1fZHJhd3NCYWNrZ3JvdW5kKG1fY29uZmlndXJhdGlvbi0+ZHJhd3NCYWNrZ3JvdW5kKCkp
CiAgICAgLCBtX3BhZ2VJRChwYWdlSUQpCiAgICAgLCBtX2NvbnRyb2xsZWRCeUF1dG9tYXRpb24o
bV9jb25maWd1cmF0aW9uLT5pc0NvbnRyb2xsZWRCeUF1dG9tYXRpb24oKSkKICNpZiBQTEFURk9S
TShDT0NPQSkKQEAgLTQ0Niw2ICs0NDUsOSBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQ
YWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIHVpbgogewog
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImNvbnN0cnVjdG9yOiB3ZWJQSUQg
PSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCks
IG1fcGFnZUlEKTsKIAorICAgIGlmICghbV9jb25maWd1cmF0aW9uLT5kcmF3c0JhY2tncm91bmQo
KSkKKyAgICAgICAgbV9iYWNrZ3JvdW5kQ29sb3IgPSBDb2xvcihDb2xvcjo6dHJhbnNwYXJlbnQp
OworCiAgICAgbV93ZWJQcm9jZXNzTGlmZXRpbWVUcmFja2VyLmFkZE9ic2VydmVyKG1fdmlzaXRl
ZExpbmtTdG9yZSk7CiAgICAgbV93ZWJQcm9jZXNzTGlmZXRpbWVUcmFja2VyLmFkZE9ic2VydmVy
KG1fd2Vic2l0ZURhdGFTdG9yZSk7CiAKQEAgLTE1MzksMTUgKzE1NDEsMTQgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmNyZWF0ZUluc3BlY3RvclRhcmdldHMoKQogICAgIG1faW5zcGVjdG9yQ29udHJv
bGxlci0+Y3JlYXRlSW5zcGVjdG9yVGFyZ2V0KHBhZ2VUYXJnZXRJZCwgSW5zcGVjdG9yOjpJbnNw
ZWN0b3JUYXJnZXRUeXBlOjpQYWdlKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnNldERyYXdz
QmFja2dyb3VuZChib29sIGRyYXdzQmFja2dyb3VuZCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpzZXRC
YWNrZ3JvdW5kQ29sb3IoY29uc3QgT3B0aW9uYWw8Q29sb3I+JiBjb2xvcikKIHsKLSAgICBpZiAo
bV9kcmF3c0JhY2tncm91bmQgPT0gZHJhd3NCYWNrZ3JvdW5kKQorICAgIGlmIChtX2JhY2tncm91
bmRDb2xvciA9PSBjb2xvcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9kcmF3c0JhY2tncm91
bmQgPSBkcmF3c0JhY2tncm91bmQ7Ci0KKyAgICBtX2JhY2tncm91bmRDb2xvciA9IGNvbG9yOwog
ICAgIGlmIChpc1ZhbGlkKCkpCi0gICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6U2V0RHJhd3NCYWNrZ3JvdW5kKGRyYXdzQmFja2dyb3VuZCksIG1fcGFnZUlEKTsKKyAg
ICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRCYWNrZ3JvdW5kQ29s
b3IoY29sb3IpLCBtX3BhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRUb3BDb250
ZW50SW5zZXQoZmxvYXQgY29udGVudEluc2V0KQpAQCAtNjc4OCw3ICs2Nzg5LDYgQEAgV2ViUGFn
ZUNyZWF0aW9uUGFyYW1ldGVycyBXZWJQYWdlUHJveHk6OmNyZWF0aW9uUGFyYW1ldGVycyhXZWJQ
cm9jZXNzUHJveHkmIHByb2MKICAgICBwYXJhbWV0ZXJzLmRyYXdpbmdBcmVhVHlwZSA9IG1fZHJh
d2luZ0FyZWEtPnR5cGUoKTsKICAgICBwYXJhbWV0ZXJzLnN0b3JlID0gcHJlZmVyZW5jZXNTdG9y
ZSgpOwogICAgIHBhcmFtZXRlcnMucGFnZUdyb3VwRGF0YSA9IG1fcGFnZUdyb3VwLT5kYXRhKCk7
Ci0gICAgcGFyYW1ldGVycy5kcmF3c0JhY2tncm91bmQgPSBtX2RyYXdzQmFja2dyb3VuZDsKICAg
ICBwYXJhbWV0ZXJzLmlzRWRpdGFibGUgPSBtX2lzRWRpdGFibGU7CiAgICAgcGFyYW1ldGVycy51
bmRlcmxheUNvbG9yID0gbV91bmRlcmxheUNvbG9yOwogICAgIHBhcmFtZXRlcnMudXNlRml4ZWRM
YXlvdXQgPSBtX3VzZUZpeGVkTGF5b3V0OwpAQCAtNjg4OCw2ICs2ODg4LDcgQEAgV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycyBXZWJQYWdlUHJveHk6OmNyZWF0aW9uUGFyYW1ldGVycyhXZWJQcm9j
ZXNzUHJveHkmIHByb2MKICNlbmRpZgogCiAgICAgcGFyYW1ldGVycy5uZWVkc0ZvbnRBdHRyaWJ1
dGVzID0gbV9uZWVkc0ZvbnRBdHRyaWJ1dGVzOworICAgIHBhcmFtZXRlcnMuYmFja2dyb3VuZENv
bG9yID0gbV9iYWNrZ3JvdW5kQ29sb3I7CiAKICAgICBwcm9jZXNzLmFkZFdlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5KG1fdXNlckNvbnRlbnRDb250cm9sbGVyLCBwYXJhbWV0ZXJzKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBkMzg0Y2Q3YzAzNC4uYzJm
MGZkZmEzOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC01MjAs
OSArNTIwLDYgQEAgcHVibGljOgogCiAgICAgYm9vbCBjYW5TaG93TUlNRVR5cGUoY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSk7CiAKLSAgICBib29sIGRyYXdzQmFja2dyb3VuZCgpIGNvbnN0IHsgcmV0
dXJuIG1fZHJhd3NCYWNrZ3JvdW5kOyB9Ci0gICAgdm9pZCBzZXREcmF3c0JhY2tncm91bmQoYm9v
bCk7Ci0KICAgICBTdHJpbmcgY3VycmVudFVSTCgpIGNvbnN0OwogCiAgICAgZmxvYXQgdG9wQ29u
dGVudEluc2V0KCkgY29uc3QgeyByZXR1cm4gbV90b3BDb250ZW50SW5zZXQ7IH0KQEAgLTc2NCwx
MSArNzYxLDEyIEBAIHB1YmxpYzoKIAogI2lmIFBMQVRGT1JNKEdUSykKICAgICBQbGF0Zm9ybVdp
ZGdldCB2aWV3V2lkZ2V0KCk7Ci0gICAgY29uc3QgV2ViQ29yZTo6Q29sb3ImIGJhY2tncm91bmRD
b2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZENvbG9yOyB9Ci0gICAgdm9pZCBzZXRC
YWNrZ3JvdW5kQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9yKSB7IG1fYmFja2dyb3Vu
ZENvbG9yID0gY29sb3I7IH0KICAgICBib29sIG1ha2VHTENvbnRleHRDdXJyZW50KCk7CiAjZW5k
aWYKIAorICAgIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkNvbG9yPiYgYmFja2dyb3VuZENvbG9y
KCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kQ29sb3I7IH0KKyAgICB2b2lkIHNldEJhY2tn
cm91bmRDb2xvcihjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpDb2xvcj4mKTsKKwogI2lmIFBMQVRG
T1JNKFdJTikKICAgICBQbGF0Zm9ybVdpZGdldCB2aWV3V2lkZ2V0KCk7CiAjZW5kaWYKQEAgLTIx
MDgsOCArMjEwNiw2IEBAIHByaXZhdGU6CiAKICAgICBMYXllckhvc3RpbmdNb2RlIG1fbGF5ZXJI
b3N0aW5nTW9kZSB7IExheWVySG9zdGluZ01vZGU6OkluUHJvY2VzcyB9OwogCi0gICAgYm9vbCBt
X2RyYXdzQmFja2dyb3VuZCB7IHRydWUgfTsKLQogICAgIFdlYkNvcmU6OkNvbG9yIG1fdW5kZXJs
YXlDb2xvcjsKICAgICBXZWJDb3JlOjpDb2xvciBtX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xv
cjsKIApAQCAtMjIwOCw5ICsyMjA0LDEwIEBAIHByaXZhdGU6CiAKICNpZiBQTEFURk9STShHVEsp
CiAgICAgU3RyaW5nIG1fYWNjZXNzaWJpbGl0eVBsdWdJRDsKLSAgICBXZWJDb3JlOjpDb2xvciBt
X2JhY2tncm91bmRDb2xvciB7IFdlYkNvcmU6OkNvbG9yOjp3aGl0ZSB9OwogI2VuZGlmCiAKKyAg
ICBPcHRpb25hbDxXZWJDb3JlOjpDb2xvcj4gbV9iYWNrZ3JvdW5kQ29sb3I7CisKICAgICB1bnNp
Z25lZCBtX3BlbmRpbmdMZWFybk9ySWdub3JlV29yZE1lc3NhZ2VDb3VudCB7IDAgfTsKIAogICAg
IGJvb2wgbV9tYWluRnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIgeyBmYWxzZSB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvY2Fpcm8vQmFja2luZ1N0b3JlQ2Fpcm8u
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvY2Fpcm8vQmFja2luZ1N0b3JlQ2Fpcm8uY3Bw
CmluZGV4IGUxMTFjMmIzOTg2Li4xODI5NGQzN2ZlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvY2Fpcm8vQmFja2luZ1N0b3JlQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2NhaXJvL0JhY2tpbmdTdG9yZUNhaXJvLmNwcApAQCAtMzcsMTAgKzM3LDYg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL1JlZlB0ckNhaXJvLmg+CiAjaW5jbHVkZSA8Y2Fpcm8uaD4K
IAotI2lmIFBMQVRGT1JNKEdUSykKLSNpbmNsdWRlIDxndGsvZ3RrLmg+Ci0jZW5kaWYKLQogI2lm
IFBMQVRGT1JNKEdUSykgJiYgUExBVEZPUk0oWDExKSAmJiBkZWZpbmVkKEdES19XSU5ET1dJTkdf
WDExKQogI2luY2x1ZGUgPFdlYkNvcmUvQmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDExLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybURpc3BsYXlYMTEuaD4KQEAgLTk3LDI0ICs5Myw2IEBA
IHZvaWQgQmFja2luZ1N0b3JlOjppbmNvcnBvcmF0ZVVwZGF0ZShTaGFyZWFibGVCaXRtYXAqIGJp
dG1hcCwgY29uc3QgVXBkYXRlSW5mbyYKICAgICBmb3IgKGNvbnN0IGF1dG8mIHVwZGF0ZVJlY3Qg
OiB1cGRhdGVJbmZvLnVwZGF0ZVJlY3RzKSB7CiAgICAgICAgIEludFJlY3Qgc3JjUmVjdCA9IHVw
ZGF0ZVJlY3Q7CiAgICAgICAgIHNyY1JlY3QubW92ZSgtdXBkYXRlUmVjdExvY2F0aW9uLngoKSwg
LXVwZGF0ZVJlY3RMb2NhdGlvbi55KCkpOwotI2lmIFBMQVRGT1JNKEdUSykKLSAgICAgICAgaWYg
KCFtX3dlYlBhZ2VQcm94eS5kcmF3c0JhY2tncm91bmQoKSkgewotICAgICAgICAgICAgY29uc3Qg
V2ViQ29yZTo6Q29sb3IgY29sb3IgPSBtX3dlYlBhZ2VQcm94eS5iYWNrZ3JvdW5kQ29sb3IoKTsK
LSAgICAgICAgICAgIGlmIChjb2xvci5pc1Zpc2libGUoKSkgewotICAgICAgICAgICAgICAgIC8v
IFdoZW4gdGhlIGFwcGxpY2F0aW9uIHNldHMgdGhlIGJhY2tncm91bmQgY29sb3IgdGhyb3VnaCBt
X3dlYlBhZ2VQcm94eS5iYWNrZ3JvdW5kQ29sb3IoKSwgd2UgdXBkYXRlIHRoZSBzdXJmYWNlIGlu
IDIgc3RlcHMuCi0gICAgICAgICAgICAgICAgLy8gICAxLiBGaWxsIHRoZSBzdXJmYWNlIGJ5IG1f
d2ViUGFnZVByb3h5LmJhY2tncm91bmRDb2xvcigpLgotICAgICAgICAgICAgICAgIC8vICAgMi4g
Q29tcG9zaXRlIHdlYnBhZ2UncyBiaXRtYXAgd2hpY2ggaGFzIGEgdHJhbnNwYXJlbnQgYmFja2dy
b3VuZC4KLSAgICAgICAgICAgICAgICAvLyBJbiBzdGVwIDEsIHdlIHVzZSBDb21wb3NpdGVDb3B5
IGFzIG1fd2ViUGFnZVByb3h5LmJhY2tncm91bmRDb2xvcigpIG1heSBub3QgYmUgb3BhcXVlLgot
ICAgICAgICAgICAgICAgIC8vIE9uIHRoZSBvdGhlciBoYW5kLCBpbiBzdGVwIDIsIGJpdG1hcCBz
aG91bGQgYmUgY29tcG9zaXRlZCBieSBDb21wb3NpdGVTb3VyY2VPdmVyCi0gICAgICAgICAgICAg
ICAgLy8gYmVjYXVzZSBpdCBzaG91bGQgYmUgYmxlbmRlZCB3aXRoIG1fd2ViUGFnZVByb3h5LmJh
Y2tncm91bmRDb2xvcigpLgotICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5maWxsUmVj
dChzcmNSZWN0LCBjb2xvcik7Ci0gICAgICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldENv
bXBvc2l0ZU9wZXJhdGlvbihXZWJDb3JlOjpDb21wb3NpdGVTb3VyY2VPdmVyKTsKLSAgICAgICAg
ICAgICAgICBiaXRtYXAtPnBhaW50KGdyYXBoaWNzQ29udGV4dCwgZGV2aWNlU2NhbGVGYWN0b3Io
KSwgdXBkYXRlUmVjdC5sb2NhdGlvbigpLCBzcmNSZWN0KTsKLSAgICAgICAgICAgICAgICBncmFw
aGljc0NvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKFdlYkNvcmU6OkNvbXBvc2l0ZUNvcHkp
OwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0j
ZW5kaWYKICAgICAgICAgYml0bWFwLT5wYWludChncmFwaGljc0NvbnRleHQsIGRldmljZVNjYWxl
RmFjdG9yKCksIHVwZGF0ZVJlY3QubG9jYXRpb24oKSwgc3JjUmVjdCk7CiAgICAgfQogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0
b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdT
dG9yZS5jcHAKaW5kZXggZWNmMzQ1ZjgwZjguLmViNjJkNmQ2NTRmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZS5jcHAK
QEAgLTU5LDI2ICs1OSw0IEBAIEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlOjpBY2NlbGVyYXRlZEJh
Y2tpbmdTdG9yZShXZWJQYWdlUHJveHkmIHdlYlBhZ2UpCiB7CiB9CiAKLWJvb2wgQWNjZWxlcmF0
ZWRCYWNraW5nU3RvcmU6OnBhaW50KGNhaXJvX3QqIGNyLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVj
dCkKLXsKLSAgICBpZiAobV93ZWJQYWdlLmRyYXdzQmFja2dyb3VuZCgpKQotICAgICAgICByZXR1
cm4gdHJ1ZTsKLQotICAgIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvciA9IG1fd2ViUGFnZS5i
YWNrZ3JvdW5kQ29sb3IoKTsKLSAgICBpZiAoIWNvbG9yLmlzT3BhcXVlKCkpIHsKLSAgICAgICAg
Y2Fpcm9fcmVjdGFuZ2xlKGNyLCBjbGlwUmVjdC54KCksIGNsaXBSZWN0LnkoKSwgY2xpcFJlY3Qu
d2lkdGgoKSwgY2xpcFJlY3QuaGVpZ2h0KCkpOwotICAgICAgICBjYWlyb19zZXRfb3BlcmF0b3Io
Y3IsIENBSVJPX09QRVJBVE9SX0NMRUFSKTsKLSAgICAgICAgY2Fpcm9fZmlsbChjcik7Ci0gICAg
fQotCi0gICAgaWYgKGNvbG9yLmlzVmlzaWJsZSgpKSB7Ci0gICAgICAgIHNldFNvdXJjZVJHQkFG
cm9tQ29sb3IoY3IsIGNvbG9yKTsKLSAgICAgICAgY2Fpcm9fc2V0X29wZXJhdG9yKGNyLCBDQUlS
T19PUEVSQVRPUl9TT1VSQ0UpOwotICAgICAgICBjYWlyb19yZWN0YW5nbGUoY3IsIGNsaXBSZWN0
LngoKSwgY2xpcFJlY3QueSgpLCBjbGlwUmVjdC53aWR0aCgpLCBjbGlwUmVjdC5oZWlnaHQoKSk7
Ci0gICAgICAgIGNhaXJvX2ZpbGwoY3IpOwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQot
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlLmgKaW5kZXggZTM1MDUwN2FhY2MuLjQ4ZGI1
MzM0NGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0
ZWRCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQWNjZWxl
cmF0ZWRCYWNraW5nU3RvcmUuaApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB+QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUoKSA9IGRlZmF1bHQ7CiAKICAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlKGNvbnN0IExheWVyVHJlZUNvbnRleHQmKSB7IH0KLSAgICB2aXJ0dWFsIGJvb2wg
cGFpbnQoY2Fpcm9fdCosIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKKyAgICB2aXJ0dWFsIGJv
b2wgcGFpbnQoY2Fpcm9fdCosIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSA9IDA7CiAgICAgdmly
dHVhbCBib29sIG1ha2VDb250ZXh0Q3VycmVudCgpIHsgcmV0dXJuIGZhbHNlOyB9CiAKIHByb3Rl
Y3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRl
ZEJhY2tpbmdTdG9yZVdheWxhbmQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0Fj
Y2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZC5jcHAKaW5kZXggZjAxYmFiM2I0MDEuLjYwZjVj
YTcxNTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0
ZWRCYWNraW5nU3RvcmVXYXlsYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9n
dGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kLmNwcApAQCAtMTEwLDcgKzExMCw2IEBA
IGJvb2wgQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kOjpwYWludChjYWlyb190KiBjciwg
Y29uc3QgSW50UmVjdCYgY2xpcFJlY3QpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGNh
aXJvX3NhdmUoY3IpOwotICAgIEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlOjpwYWludChjciwgY2xp
cFJlY3QpOwogCiAjaWYgR1RLX0NIRUNLX1ZFUlNJT04oMywgMTYsIDApCiAgICAgaWYgKG1fZ2Rr
R0xDb250ZXh0KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQWNj
ZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTEuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3Rr
L0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDExLmNwcAppbmRleCAyN2Q3MmMxYzQ3ZS4uODJjZThj
NmI2NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRl
ZEJhY2tpbmdTdG9yZVgxMS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0Fj
Y2VsZXJhdGVkQmFja2luZ1N0b3JlWDExLmNwcApAQCAtMTg2LDcgKzE4Niw2IEBAIGJvb2wgQWNj
ZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTE6OnBhaW50KGNhaXJvX3QqIGNyLCBjb25zdCBJbnRSZWN0
JiBjbGlwUmVjdCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgY2Fpcm9fc2F2ZShjcik7
Ci0gICAgQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmU6OnBhaW50KGNyLCBjbGlwUmVjdCk7CiAKICAg
ICAvLyBUaGUgc3VyZmFjZSBjYW4gYmUgbW9kaWZpZWQgYnkgdGhlIHdlYiBwcm9jZXNzIGF0IGFu
eSB0aW1lLCBzbyB3ZSBtYXJrIGl0CiAgICAgLy8gYXMgZGlydHkgdG8gZW5zdXJlIHdlIGFsd2F5
cyByZW5kZXIgdGhlIHVwZGF0ZWQgY29udGVudHMgYXMgc29vbiBhcyBwb3NzaWJsZS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcAppbmRleCAwZjlmOWQ0ZWZkNS4uYTllNDE4
NTc4NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAKQEAgLTQ1MSw3
ICs0NTEsOCBAQCBMUkVTVUxUIFdlYlZpZXc6Om9uS2V5RXZlbnQoSFdORCBoV25kLCBVSU5UIG1l
c3NhZ2UsIFdQQVJBTSB3UGFyYW0sIExQQVJBTSBsUGFyYQogCiBzdGF0aWMgdm9pZCBkcmF3UGFn
ZUJhY2tncm91bmQoSERDIGRjLCBjb25zdCBXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFJFQ1Qm
IHJlY3QpCiB7Ci0gICAgaWYgKCFwYWdlLT5kcmF3c0JhY2tncm91bmQoKSkKKyAgICBhdXRvJiBi
YWNrZ3JvdW5kQ29sb3IgPSBwYWdlLT5iYWNrZ3JvdW5kQ29sb3IoKTsKKyAgICBpZiAoIWJhY2tn
cm91bmRDb2xvciB8fCBiYWNrZ3JvdW5kQ29sb3IudmFsdWUoKS5pc1Zpc2libGUoKSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgOjpGaWxsUmVjdChkYywgJnJlY3QsIHJlaW50ZXJwcmV0X2Nhc3Q8
SEJSVVNIPihDT0xPUl9XSU5ET1cgKyAxKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cAppbmRleCA5MzhjYWRkYmY2Yy4uNTEwYjAzYjg1MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcApAQCAtMTQwNiw3ICsxNDA2LDYgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6dHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFnZSgpCiAgICAgV2ViUGFnZSogd2ViUGFn
ZSA9IG1fZnJhbWUtPnBhZ2UoKTsKIAogICAgIGJvb2wgaXNNYWluRnJhbWUgPSBtX2ZyYW1lLT5p
c01haW5GcmFtZSgpOwotICAgIGJvb2wgaXNUcmFuc3BhcmVudCA9ICF3ZWJQYWdlLT5kcmF3c0Jh
Y2tncm91bmQoKTsKICAgICBib29sIHNob3VsZFVzZUZpeGVkTGF5b3V0ID0gaXNNYWluRnJhbWUg
JiYgd2ViUGFnZS0+dXNlRml4ZWRMYXlvdXQoKTsKICAgICBib29sIHNob3VsZERpc2FibGVTY3Jv
bGxpbmcgPSBpc01haW5GcmFtZSAmJiAhd2ViUGFnZS0+bWFpbkZyYW1lSXNTY3JvbGxhYmxlKCk7
CiAgICAgYm9vbCBzaG91bGRIaWRlU2Nyb2xsYmFycyA9IHNob3VsZERpc2FibGVTY3JvbGxpbmc7
CkBAIC0xNDMxLDcgKzE0MzAsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp0cmFuc2l0
aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKCkKICAgICBib29sIGhvcml6b250YWxMb2NrID0gc2hv
dWxkSGlkZVNjcm9sbGJhcnMgfHwgd2ViUGFnZS0+YWx3YXlzU2hvd3NIb3Jpem9udGFsU2Nyb2xs
ZXIoKTsKICAgICBib29sIHZlcnRpY2FsTG9jayA9IHNob3VsZEhpZGVTY3JvbGxiYXJzIHx8IHdl
YlBhZ2UtPmFsd2F5c1Nob3dzVmVydGljYWxTY3JvbGxlcigpOwogCi0gICAgbV9mcmFtZS0+Y29y
ZUZyYW1lKCktPmNyZWF0ZVZpZXcod2ViUGFnZS0+c2l6ZSgpLCBpc1RyYW5zcGFyZW50LAorICAg
IG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5jcmVhdGVWaWV3KHdlYlBhZ2UtPnNpemUoKSwgd2ViUGFn
ZS0+YmFja2dyb3VuZENvbG9yKCksCiAgICAgICAgIHdlYlBhZ2UtPmZpeGVkTGF5b3V0U2l6ZSgp
LCBmaXhlZFZpc2libGVDb250ZW50UmVjdCwgc2hvdWxkVXNlRml4ZWRMYXlvdXQsCiAgICAgICAg
IGhvcml6b250YWxTY3JvbGxiYXJNb2RlLCBob3Jpem9udGFsTG9jaywgdmVydGljYWxTY3JvbGxi
YXJNb2RlLCB2ZXJ0aWNhbExvY2spOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZERyYXdpbmdBcmVhLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEuY3BwCmluZGV4IGVkZmU0
NmIyMThlLi4yZTc0YWU4ZjdhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3aW5nQXJlYS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3aW5nQXJlYS5jcHAKQEAgLTkzLDE0ICs5
Myw2IEBAIHZvaWQgQWNjZWxlcmF0ZWREcmF3aW5nQXJlYTo6c2Nyb2xsKGNvbnN0IEludFJlY3Qm
IHNjcm9sbFJlY3QsIGNvbnN0IEludFNpemUmIHNjCiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+
c2Nyb2xsTm9uQ29tcG9zaXRlZENvbnRlbnRzKHNjcm9sbFJlY3QpOwogfQogCi12b2lkIEFjY2Vs
ZXJhdGVkRHJhd2luZ0FyZWE6OnBhZ2VCYWNrZ3JvdW5kVHJhbnNwYXJlbmN5Q2hhbmdlZCgpCi17
Ci0gICAgaWYgKG1fbGF5ZXJUcmVlSG9zdCkKLSAgICAgICAgbV9sYXllclRyZWVIb3N0LT5wYWdl
QmFja2dyb3VuZFRyYW5zcGFyZW5jeUNoYW5nZWQoKTsKLSAgICBlbHNlIGlmIChtX3ByZXZpb3Vz
TGF5ZXJUcmVlSG9zdCkKLSAgICAgICAgbV9wcmV2aW91c0xheWVyVHJlZUhvc3QtPnBhZ2VCYWNr
Z3JvdW5kVHJhbnNwYXJlbmN5Q2hhbmdlZCgpOwotfQotCiB2b2lkIEFjY2VsZXJhdGVkRHJhd2lu
Z0FyZWE6OnNldExheWVyVHJlZVN0YXRlSXNGcm96ZW4oYm9vbCBpc0Zyb3plbikKIHsKICAgICBp
ZiAobV9sYXllclRyZWVTdGF0ZUlzRnJvemVuID09IGlzRnJvemVuKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3aW5nQXJlYS5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3aW5nQXJlYS5o
CmluZGV4IDA5MjdkNDRkMDA0Li5mN2VmOWY2ZjUzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3aW5nQXJlYS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEuaApAQCAt
NDMsNyArNDMsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBzZXROZWVkc0Rpc3BsYXkoKSBvdmVy
cmlkZTsKICAgICB2b2lkIHNldE5lZWRzRGlzcGxheUluUmVjdChjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzY3JvbGwoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYg
c2Nyb2xsUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2Nyb2xsRGVsdGEpIG92ZXJyaWRl
OwotICAgIHZvaWQgcGFnZUJhY2tncm91bmRUcmFuc3BhcmVuY3lDaGFuZ2VkKCkgb3ZlcnJpZGU7
CiAgICAgdm9pZCBzZXRMYXllclRyZWVTdGF0ZUlzRnJvemVuKGJvb2wpIG92ZXJyaWRlOwogICAg
IGJvb2wgbGF5ZXJUcmVlU3RhdGVJc0Zyb3plbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1f
bGF5ZXJUcmVlU3RhdGVJc0Zyb3plbjsgfQogICAgIExheWVyVHJlZUhvc3QqIGxheWVyVHJlZUhv
c3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2xheWVyVHJlZUhvc3QuZ2V0KCk7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
LmNwcAppbmRleCAxNTIwZjUyMGRhYy4uOTNiN2EyZGRlNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTIyNCwx
MCArMjI0LDYgQEAgdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmRldmljZU9yUGFnZVNj
YWxlRmFjdG9yQ2hhbmdlZCgpCiAgICAgbV93ZWJQYWdlLmNvcmVQYWdlKCktPnBhZ2VPdmVybGF5
Q29udHJvbGxlcigpLmRpZENoYW5nZURldmljZVNjYWxlRmFjdG9yKCk7CiB9CiAKLXZvaWQgQ29v
cmRpbmF0ZWRMYXllclRyZWVIb3N0OjpwYWdlQmFja2dyb3VuZFRyYW5zcGFyZW5jeUNoYW5nZWQo
KQotewotfQotCiBHcmFwaGljc0xheWVyRmFjdG9yeSogQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
OjpncmFwaGljc0xheWVyRmFjdG9yeSgpCiB7CiAgICAgcmV0dXJuICZtX2Nvb3JkaW5hdG9yOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRH
cmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
LmgKaW5kZXggMGE4YmVjOGEzOTguLmVhOTc0NTMxNTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKQEAgLTU1LDcgKzU1LDYg
QEAgcHJvdGVjdGVkOgogICAgIHZvaWQgc2l6ZURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRT
aXplJiBuZXdTaXplKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZGV2aWNlT3JQYWdlU2NhbGVGYWN0
b3JDaGFuZ2VkKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBwYWdlQmFja2dyb3VuZFRyYW5zcGFyZW5j
eUNoYW5nZWQoKSBvdmVycmlkZTsKIAogICAgIHZvaWQgc2V0VmlzaWJsZUNvbnRlbnRzUmVjdChj
b25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKTsKICAgICB2b2lkIHJlbmRlck5leHRGcmFtZShib29s
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggODIzYjdmYTJhYzcuLjEwMGZjNjRhNjE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRl
ZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVk
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcApAQCAtMTg0LDE3ICsxODQsNiBAQCB2b2lkIFRo
cmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpkZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNo
YW5nZWQoKQogICAgIG1fY29tcG9zaXRvci0+c2V0U2NhbGVGYWN0b3IobV93ZWJQYWdlLmRldmlj
ZVNjYWxlRmFjdG9yKCkgKiBtX3ZpZXdwb3J0Q29udHJvbGxlci5wYWdlU2NhbGVGYWN0b3IoKSk7
CiB9CiAKLXZvaWQgVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnBhZ2VCYWNrZ3Jv
dW5kVHJhbnNwYXJlbmN5Q2hhbmdlZCgpCi17Ci0gICAgaWYgKG1faXNEaXNjYXJkYWJsZSkgewot
ICAgICAgICBtX2Rpc2NhcmRhYmxlU3luY0FjdGlvbnMuYWRkKERpc2NhcmRhYmxlU3luY0FjdGlv
bnM6OlVwZGF0ZUJhY2tncm91bmQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQ29v
cmRpbmF0ZWRMYXllclRyZWVIb3N0OjpwYWdlQmFja2dyb3VuZFRyYW5zcGFyZW5jeUNoYW5nZWQo
KTsKLSAgICBtX2NvbXBvc2l0b3ItPnNldERyYXdzQmFja2dyb3VuZChtX3dlYlBhZ2UuZHJhd3NC
YWNrZ3JvdW5kKCkpOwotfQotCiB2b2lkIFRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
OjpzaXplRGlkQ2hhbmdlKGNvbnN0IEludFNpemUmIHNpemUpCiB7CiAgICAgaWYgKG1faXNEaXNj
YXJkYWJsZSkgewpAQCAtMjg2LDkgKzI3NSw2IEBAIHZvaWQgVGhyZWFkZWRDb29yZGluYXRlZExh
eWVyVHJlZUhvc3Q6OnNldElzRGlzY2FyZGFibGUoYm9vbCBkaXNjYXJkYWJsZSkKICAgICBpZiAo
bV9kaXNjYXJkYWJsZVN5bmNBY3Rpb25zLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgaWYgKG1fZGlzY2FyZGFibGVTeW5jQWN0aW9ucy5jb250YWlucyhEaXNjYXJkYWJsZVN5bmNB
Y3Rpb25zOjpVcGRhdGVCYWNrZ3JvdW5kKSkKLSAgICAgICAgcGFnZUJhY2tncm91bmRUcmFuc3Bh
cmVuY3lDaGFuZ2VkKCk7Ci0KICAgICBpZiAobV9kaXNjYXJkYWJsZVN5bmNBY3Rpb25zLmNvbnRh
aW5zKERpc2NhcmRhYmxlU3luY0FjdGlvbnM6OlVwZGF0ZVNpemUpKSB7CiAgICAgICAgIC8vIFNp
emUgY2hhbmdlcyBhbHJlYWR5IHNldHMgdGhlIHNjYWxlIGZhY3RvciBhbmQgdXBkYXRlcyB0aGUg
dmlld3BvcnQuCiAgICAgICAgIHNpemVEaWRDaGFuZ2UobV93ZWJQYWdlLnNpemUoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0LmgKaW5kZXggYjc4NDY4MTY3OWIuLjIyODc2MTYyZTY5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1Ro
cmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdC5oCkBAIC01Nyw3ICs1Nyw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzY3JvbGxO
b25Db21wb3NpdGVkQ29udGVudHMoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc2Nyb2xsUmVjdCkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBzaXplRGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFNpemUm
KSBvdmVycmlkZTsKICAgICB2b2lkIGRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCgpIG92
ZXJyaWRlOwotICAgIHZvaWQgcGFnZUJhY2tncm91bmRUcmFuc3BhcmVuY3lDaGFuZ2VkKCkgb3Zl
cnJpZGU7CiAKICAgICB2b2lkIGNvbnRlbnRzU2l6ZUNoYW5nZWQoY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkQ2hhbmdlVmlld3BvcnRBdHRyaWJ1dGVzKFdl
YkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyYmKSBvdmVycmlkZTsKQEAgLTE0Myw4ICsxNDIsNyBA
QCBwcml2YXRlOgogICAgIGVudW0gY2xhc3MgRGlzY2FyZGFibGVTeW5jQWN0aW9ucyB7CiAgICAg
ICAgIFVwZGF0ZVNpemUgPSAxIDw8IDEsCiAgICAgICAgIFVwZGF0ZVZpZXdwb3J0ID0gMSA8PCAy
LAotICAgICAgICBVcGRhdGVTY2FsZSA9IDEgPDwgMywKLSAgICAgICAgVXBkYXRlQmFja2dyb3Vu
ZCA9IDEgPDwgNAorICAgICAgICBVcGRhdGVTY2FsZSA9IDEgPDwgMwogICAgIH07CiAKICAgICBD
b21wb3NpdG9yQ2xpZW50IG1fY29tcG9zaXRvckNsaWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCmluZGV4IDdlZTIyOGNlMThhLi5mZDc5Mjlm
MDRhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2lu
Z0FyZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJl
YS5oCkBAIC04MCw3ICs4MCw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsKGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmIHNjcm9sbFJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFNpemUm
IHNjcm9sbERlbHRhKSA9IDA7CiAKICAgICAvLyBGSVhNRTogVGhlc2Ugc2hvdWxkIGJlIHB1cmUg
dmlydHVhbC4KLSAgICB2aXJ0dWFsIHZvaWQgcGFnZUJhY2tncm91bmRUcmFuc3BhcmVuY3lDaGFu
Z2VkKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGZvcmNlUmVwYWludCgpIHsgfQogICAgIHZpcnR1
YWwgYm9vbCBmb3JjZVJlcGFpbnRBc3luYyhDYWxsYmFja0lEKSB7IHJldHVybiBmYWxzZTsgfQog
ICAgIHZpcnR1YWwgdm9pZCBzZXRMYXllclRyZWVTdGF0ZUlzRnJvemVuKGJvb2wpIHsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBs
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5j
cHAKaW5kZXggNmE4NmIwMDJiODYuLjA4OWFjMjBiZjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5jcHAKQEAgLTQxMCw4ICs0
MTAsNyBAQCB2b2lkIERyYXdpbmdBcmVhSW1wbDo6ZGlzcGxheShVcGRhdGVJbmZvJiB1cGRhdGVJ
bmZvKQogICAgIHVwZGF0ZUluZm8udmlld1NpemUgPSBtX3dlYlBhZ2Uuc2l6ZSgpOwogICAgIHVw
ZGF0ZUluZm8uZGV2aWNlU2NhbGVGYWN0b3IgPSBtX3dlYlBhZ2UuY29yZVBhZ2UoKS0+ZGV2aWNl
U2NhbGVGYWN0b3IoKTsKIAotICAgIC8vIEFsd2F5cyByZW5kZXIgdGhlIHdob2xlIHBhZ2Ugd2hl
biB3ZSBkb24ndCByZW5kZXIgdGhlIGJhY2tncm91bmQuCi0gICAgSW50UmVjdCBib3VuZHMgPSBt
X3dlYlBhZ2UuZHJhd3NCYWNrZ3JvdW5kKCkgPyBtX2RpcnR5UmVnaW9uLmJvdW5kcygpIDogbV93
ZWJQYWdlLmJvdW5kcygpOworICAgIEludFJlY3QgYm91bmRzID0gbV9kaXJ0eVJlZ2lvbi5ib3Vu
ZHMoKTsKICAgICBBU1NFUlQobV93ZWJQYWdlLmJvdW5kcygpLmNvbnRhaW5zKGJvdW5kcykpOwog
CiAgICAgSW50U2l6ZSBiaXRtYXBTaXplID0gYm91bmRzLnNpemUoKTsKQEAgLTQyNCwxNiArNDIz
LDExIEBAIHZvaWQgRHJhd2luZ0FyZWFJbXBsOjpkaXNwbGF5KFVwZGF0ZUluZm8mIHVwZGF0ZUlu
Zm8pCiAgICAgaWYgKCFiaXRtYXAtPmNyZWF0ZUhhbmRsZSh1cGRhdGVJbmZvLmJpdG1hcEhhbmRs
ZSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFZlY3RvcjxJbnRSZWN0PiByZWN0czsKLSAgICBp
ZiAobV93ZWJQYWdlLmRyYXdzQmFja2dyb3VuZCgpKSB7Ci0gICAgICAgIHJlY3RzID0gbV9kaXJ0
eVJlZ2lvbi5yZWN0cygpOwotCi0gICAgICAgIGlmIChzaG91bGRQYWludEJvdW5kc1JlY3QoYm91
bmRzLCByZWN0cykpIHsKLSAgICAgICAgICAgIHJlY3RzLmNsZWFyKCk7Ci0gICAgICAgICAgICBy
ZWN0cy5hcHBlbmQoYm91bmRzKTsKLSAgICAgICAgfQotICAgIH0gZWxzZQorICAgIFZlY3RvcjxJ
bnRSZWN0PiByZWN0cyA9IG1fZGlydHlSZWdpb24ucmVjdHMoKTsKKyAgICBpZiAoc2hvdWxkUGFp
bnRCb3VuZHNSZWN0KGJvdW5kcywgcmVjdHMpKSB7CisgICAgICAgIHJlY3RzLmNsZWFyKCk7CiAg
ICAgICAgIHJlY3RzLmFwcGVuZChib3VuZHMpOworICAgIH0KIAogICAgIHVwZGF0ZUluZm8uc2Ny
b2xsUmVjdCA9IG1fc2Nyb2xsUmVjdDsKICAgICB1cGRhdGVJbmZvLnNjcm9sbE9mZnNldCA9IG1f
c2Nyb2xsT2Zmc2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvTGF5
ZXJUcmVlSG9zdC5oCmluZGV4IDg1ZGQ0NThlMDE4Li41M2MzOTgyOTllNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJlZUhvc3QuaApAQCAtNzQsNyAr
NzQsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGZvcmNlUmVwYWludCgpID0gMDsKICAg
ICB2aXJ0dWFsIGJvb2wgZm9yY2VSZXBhaW50QXN5bmMoQ2FsbGJhY2tJRCkgeyByZXR1cm4gZmFs
c2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2l6ZURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRT
aXplJiBuZXdTaXplKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHBhZ2VCYWNrZ3JvdW5kVHJhbnNw
YXJlbmN5Q2hhbmdlZCgpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBwYXVzZVJlbmRlcmluZygp
OwogICAgIHZpcnR1YWwgdm9pZCByZXN1bWVSZW5kZXJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggMjAyM2ZlNDE4ZDAuLjNmNjBlNDFj
MGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApA
QCAtNTE1LDggKzUxNSw2IEBAIFdlYlBhZ2U6OldlYlBhZ2UodWludDY0X3QgcGFnZUlELCBXZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKIAogICAgIHNldFVzZUZpeGVkTGF5
b3V0KHBhcmFtZXRlcnMudXNlRml4ZWRMYXlvdXQpOwogCi0gICAgc2V0RHJhd3NCYWNrZ3JvdW5k
KHBhcmFtZXRlcnMuZHJhd3NCYWNrZ3JvdW5kKTsKLQogICAgIHNldFVuZGVybGF5Q29sb3IocGFy
YW1ldGVycy51bmRlcmxheUNvbG9yKTsKIAogICAgIHNldFBhZ2luYXRpb25Nb2RlKHBhcmFtZXRl
cnMucGFnaW5hdGlvbk1vZGUpOwpAQCAtNjQzLDYgKzY0MSw4IEBAIFdlYlBhZ2U6OldlYlBhZ2Uo
dWludDY0X3QgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykK
ICNpZiBVU0UoQVVESU9fU0VTU0lPTikKICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6
OnNldFNob3VsZERlYWN0aXZhdGVBdWRpb1Nlc3Npb24odHJ1ZSk7CiAjZW5kaWYKKworICAgIHNl
dEJhY2tncm91bmRDb2xvcihwYXJhbWV0ZXJzLmJhY2tncm91bmRDb2xvcik7CiB9CiAKICNpZiBF
TkFCTEUoV0VCX1JUQykKQEAgLTI5MDEsMTkgKzI5MDEsMTYgQEAgdm9pZCBXZWJQYWdlOjpzZXRJ
bmRpY2F0aW5nKGJvb2wgaW5kaWNhdGluZykKIH0KICNlbmRpZgogCi12b2lkIFdlYlBhZ2U6OnNl
dERyYXdzQmFja2dyb3VuZChib29sIGRyYXdzQmFja2dyb3VuZCkKK3ZvaWQgV2ViUGFnZTo6c2V0
QmFja2dyb3VuZENvbG9yKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkNvbG9yPiYgYmFja2dyb3Vu
ZENvbG9yKQogewotICAgIGlmIChtX2RyYXdzQmFja2dyb3VuZCA9PSBkcmF3c0JhY2tncm91bmQp
CisgICAgaWYgKG1fYmFja2dyb3VuZENvbG9yID09IGJhY2tncm91bmRDb2xvcikKICAgICAgICAg
cmV0dXJuOwogCi0gICAgbV9kcmF3c0JhY2tncm91bmQgPSBkcmF3c0JhY2tncm91bmQ7CisgICAg
bV9iYWNrZ3JvdW5kQ29sb3IgPSBiYWNrZ3JvdW5kQ29sb3I7CiAKLSAgICBpZiAoRnJhbWVWaWV3
KiBmcmFtZVZpZXcgPSBtYWluRnJhbWVWaWV3KCkpIHsKLSAgICAgICAgYm9vbCBpc1RyYW5zcGFy
ZW50ID0gIWRyYXdzQmFja2dyb3VuZDsKLSAgICAgICAgZnJhbWVWaWV3LT51cGRhdGVCYWNrZ3Jv
dW5kUmVjdXJzaXZlbHkoaXNUcmFuc3BhcmVudCk7Ci0gICAgfQorICAgIGlmIChGcmFtZVZpZXcq
IGZyYW1lVmlldyA9IG1haW5GcmFtZVZpZXcoKSkKKyAgICAgICAgZnJhbWVWaWV3LT51cGRhdGVC
YWNrZ3JvdW5kUmVjdXJzaXZlbHkoYmFja2dyb3VuZENvbG9yKTsKIAotICAgIG1fZHJhd2luZ0Fy
ZWEtPnBhZ2VCYWNrZ3JvdW5kVHJhbnNwYXJlbmN5Q2hhbmdlZCgpOwogICAgIG1fZHJhd2luZ0Fy
ZWEtPnNldE5lZWRzRGlzcGxheSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgKaW5kZXggZTI0NjBjYmQyN2QuLmIxN2QwYzIxYjc2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC01MDEsOCArNTAxLDYgQEAg
cHVibGljOgogICAgIAogICAgIHZvaWQgcG9zdEluamVjdGVkQnVuZGxlTWVzc2FnZShjb25zdCBT
dHJpbmcmIG1lc3NhZ2VOYW1lLCBjb25zdCBVc2VyRGF0YSYpOwogCi0gICAgYm9vbCBkcmF3c0Jh
Y2tncm91bmQoKSBjb25zdCB7IHJldHVybiBtX2RyYXdzQmFja2dyb3VuZDsgfQotCiAgICAgdm9p
ZCBzZXRVbmRlcmxheUNvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvcikgeyBtX3VuZGVy
bGF5Q29sb3IgPSBjb2xvcjsgfQogICAgIFdlYkNvcmU6OkNvbG9yIHVuZGVybGF5Q29sb3IoKSBj
b25zdCB7IHJldHVybiBtX3VuZGVybGF5Q29sb3I7IH0KIApAQCAtMTE0Niw2ICsxMTQ0LDggQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gc2VuZFN5bmMoV1RGTW92ZShtZXNzYWdlKSwgV1RGTW92
ZShyZXBseSksIG1fcGFnZUlELCBTZWNvbmRzOjppbmZpbml0eSgpLCBJUEM6OlNlbmRTeW5jT3B0
aW9uOjpJbmZvcm1QbGF0Zm9ybVByb2Nlc3NXaWxsU3VzcGVuZCk7CiAgICAgfQogCisgICAgY29u
c3QgT3B0aW9uYWw8V2ViQ29yZTo6Q29sb3I+JiBiYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCB7IHJl
dHVybiBtX2JhY2tncm91bmRDb2xvcjsgfQorCiBwcml2YXRlOgogICAgIFdlYlBhZ2UodWludDY0
X3QgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOwogCkBAIC0xMjgxLDcgKzEy
ODEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0SW5kaWNhdGluZyhib29sKTsKICNlbmRpZgog
Ci0gICAgdm9pZCBzZXREcmF3c0JhY2tncm91bmQoYm9vbCk7CisgICAgdm9pZCBzZXRCYWNrZ3Jv
dW5kQ29sb3IoY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6Q29sb3I+Jik7CiAKICNpZiBQTEFURk9S
TShDT0NPQSkKICAgICB2b2lkIHNldFRvcENvbnRlbnRJbnNldEZlbmNlZChmbG9hdCwgSVBDOjpB
dHRhY2htZW50KTsKQEAgLTE3NzcsNyArMTc3Nyw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lz
U3VzcGVuZGVkVW5kZXJMb2NrIHsgZmFsc2UgfTsKIAogICAgIEhhc2hTZXQ8U3RyaW5nLCBBU0NJ
SUNhc2VJbnNlbnNpdGl2ZUhhc2g+IG1fbWltZVR5cGVzV2l0aEN1c3RvbUNvbnRlbnRQcm92aWRl
cnM7Ci0gICAgV2ViQ29yZTo6Q29sb3IgbV9iYWNrZ3JvdW5kQ29sb3IgeyBXZWJDb3JlOjpDb2xv
cjo6d2hpdGUgfTsKKyAgICBPcHRpb25hbDxXZWJDb3JlOjpDb2xvcj4gbV9iYWNrZ3JvdW5kQ29s
b3IgeyBXZWJDb3JlOjpDb2xvcjo6d2hpdGUgfTsKIAogICAgIEhhc2hTZXQ8dW5zaWduZWQ+IG1f
YWN0aXZlUmVuZGVyaW5nU3VwcHJlc3Npb25Ub2tlbnM7CiAgICAgdW5zaWduZWQgbV9tYXhpbXVt
UmVuZGVyaW5nU3VwcHJlc3Npb25Ub2tlbiB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IGE4YzYxNzY5ZTVl
Li4xNjNhMTc2OWNmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0yNSw3ICsyNSw3IEBAIG1lc3NhZ2VzIC0+IFdl
YlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIFNldEFjdGl2aXR5U3RhdGUoT3B0aW9uU2V0PFdl
YkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWc+IGFjdGl2aXR5U3RhdGUsIFdlYktpdDo6QWN0aXZp
dHlTdGF0ZUNoYW5nZUlEIGFjdGl2aXR5U3RhdGVDaGFuZ2VJRCwgVmVjdG9yPFdlYktpdDo6Q2Fs
bGJhY2tJRD4gY2FsbGJhY2tJRHMpCiAgICAgU2V0TGF5ZXJIb3N0aW5nTW9kZShlbnVtOnVpbnQ4
X3QgV2ViS2l0OjpMYXllckhvc3RpbmdNb2RlIGxheWVySG9zdGluZ01vZGUpCiAKLSAgICBTZXRE
cmF3c0JhY2tncm91bmQoYm9vbCBkcmF3c0JhY2tncm91bmQpCisgICAgU2V0QmFja2dyb3VuZENv
bG9yKE9wdGlvbmFsPFdlYkNvcmU6OkNvbG9yPiBjb2xvcikKIAogICAgIEFkZENvbnNvbGVNZXNz
YWdlKHVpbnQ2NF90IGZyYW1lSUQsIGVudW06dWludDhfdCBKU0M6Ok1lc3NhZ2VTb3VyY2UgbWVz
c2FnZVNvdXJjZSwgZW51bTp1aW50OF90IEpTQzo6TWVzc2FnZUxldmVsIG1lc3NhZ2VMZXZlbCwg
U3RyaW5nIG1lc3NhZ2UsIHVpbnQ2NF90IHJlcXVlc3RJRCkKICAgICBTZW5kQ1NQVmlvbGF0aW9u
UmVwb3J0KHVpbnQ2NF90IGZyYW1lSUQsIFVSTCByZXBvcnRVUkwsIElQQzo6Rm9ybURhdGFSZWZl
cmVuY2UgcmVwb3J0RGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCBlOTBjZjFh
YzIwZi4uMTcwYWJhMjg0ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNCBAQAorMjAxOS0wMS0xOCAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5j
b20+CisKKyAgICAgICAgW1dQRV0gQWRkIEFQSSBmb3Igd2VidmlldyBiYWNrZ3JvdW5kIGNvbG9y
IGNvbmZpZ3VyYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5MjMwNQorCisgICAgICAgIFJldmlld2VkIGJ5IE1pY2hhZWwgQ2F0YW56YXJvLgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAg
ICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1Bh
Z2UpOiBDcmVhdGUKKyAgICAgICAgRnJhbWVWaWV3IHdpdGggYmFja2dyb3VuZCBjb2xvci4KKwog
MjAxOS0wMi0wNiAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAg
U3RhbmRhcmRpemUgb24gQ29udHJvbEtleSBpbnN0ZWFkIG9mIEN0cmxLZXkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcAppbmRleCBjMTQ1MmU4NGYzNy4uMTE1OTViMmY2YzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTk4NSwxMCArOTg1LDEyIEBAIHZvaWQgV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UoKQogCiAgICAg
UkVDVCBwaXhlbFJlY3Q7CiAgICAgdmlldy0+ZnJhbWVSZWN0KCZwaXhlbFJlY3QpOwotICAgIGJv
b2wgdHJhbnNwYXJlbnQgPSB2aWV3LT50cmFuc3BhcmVudCgpOworICAgIE9wdGlvbmFsPENvbG9y
PiBiYWNrZ3JvdW5kQ29sb3I7CisgICAgaWYgKHZpZXctPnRyYW5zcGFyZW50KCkpCisgICAgICAg
IGJhY2tncm91bmRDb2xvciA9IENvbG9yKENvbG9yOjp0cmFuc3BhcmVudCk7CiAgICAgRmxvYXRS
ZWN0IGxvZ2ljYWxGcmFtZShwaXhlbFJlY3QpOwogICAgIGxvZ2ljYWxGcmFtZS5zY2FsZSgxLjBm
IC8gdmlldy0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7Ci0gICAgY29yZShtX3dlYkZyYW1lKS0+Y3Jl
YXRlVmlldyhlbmNsb3NpbmdJbnRSZWN0KGxvZ2ljYWxGcmFtZSkuc2l6ZSgpLCB0cmFuc3BhcmVu
dCwgLyogZml4ZWRMYXlvdXRTaXplICovIHsgfSwgLyogZml4ZWRWaXNpYmxlQ29udGVudFJlY3Qg
Ki8geyB9KTsKKyAgICBjb3JlKG1fd2ViRnJhbWUpLT5jcmVhdGVWaWV3KGVuY2xvc2luZ0ludFJl
Y3QobG9naWNhbEZyYW1lKS5zaXplKCksIGJhY2tncm91bmRDb2xvciwgLyogZml4ZWRMYXlvdXRT
aXplICovIHsgfSwgLyogZml4ZWRWaXNpYmxlQ29udGVudFJlY3QgKi8geyB9KTsKIH0KIAogdm9p
ZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkU2F2ZVRvUGFnZUNhY2hlKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkZyYW1lLmNwcAppbmRleCAwNGI2ZmVhM2NiNC4uNGFkMzE2NjAxN2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKQEAgLTIwODksNyArMjA4OSwxMCBAQCB2b2lk
IFdlYkZyYW1lOjp1cGRhdGVCYWNrZ3JvdW5kKCkKICAgICBpZiAoIWNvcmVGcmFtZSB8fCAhY29y
ZUZyYW1lLT52aWV3KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNvcmVGcmFtZS0+dmlldygp
LT51cGRhdGVCYWNrZ3JvdW5kUmVjdXJzaXZlbHkod2ViVmlldygpLT50cmFuc3BhcmVudCgpKTsK
KyAgICBPcHRpb25hbDxDb2xvcj4gYmFja2dyb3VuZENvbG9yOworICAgIGlmICh3ZWJWaWV3KCkt
PnRyYW5zcGFyZW50KCkpCisgICAgICAgIGJhY2tncm91bmRDb2xvciA9IENvbG9yKENvbG9yOjp0
cmFuc3BhcmVudCk7CisgICAgY29yZUZyYW1lLT52aWV3KCktPnVwZGF0ZUJhY2tncm91bmRSZWN1
cnNpdmVseShiYWNrZ3JvdW5kQ29sb3IpOwogfQogCiAvLyBJV2ViRnJhbWUyCmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMGZkZGUxZWMyNzMuLmU0
OTNlNDdmMThlIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTktMDEtMTggIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9y
bWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtXUEVdIEFkZCBBUEkgZm9yIHdlYnZpZXcgYmFj
a2dyb3VuZCBjb2xvciBjb25maWd1cmF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xOTIzMDUKKworICAgICAgICBSZXZpZXdlZCBieSBNaWNoYWVs
IENhdGFuemFyby4KKworICAgICAgICAqIE1pbmlCcm93c2VyL3dwZS9tYWluLmNwcDoKKyAgICAg
ICAgKG1haW4pOiBBZGQgYSBuZXcgb3B0aW9uIHRvIGNvbmZpZ3VyZSB0aGUgd2VidmlldyBiYWNr
Z3JvdW5kCisgICAgICAgIGNvbG9yLiBFeGFtcGxlOiAtLWJnLWNvbG9yPXRyYW5zcGFyZW50Lgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0V2ViVmll
dy5jcHA6CisgICAgICAgICh0ZXN0V2ViVmlld0JhY2tncm91bmRDb2xvcik6IEVuYWJsZSBiYWNr
Z3JvdW5kIGNvbG9yIEFQSSB0ZXN0cyBmb3IgV1BFLgorICAgICAgICAoYmVmb3JlQWxsKTogRGl0
dG8uCisKIDIwMTktMDEtMTYgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFtHVEtdW1dQRV0gQWRkIHdlYiBleHRlbnNpb25zIEFQSSB0byB3aGl0
ZWxpc3QgYWNjZXNzIHRvIGEgc2VjdXJpdHkgb3JpZ2luCmRpZmYgLS1naXQgYS9Ub29scy9NaW5p
QnJvd3Nlci93cGUvbWFpbi5jcHAgYi9Ub29scy9NaW5pQnJvd3Nlci93cGUvbWFpbi5jcHAKaW5k
ZXggMTMxYTBmMzg3MDkuLjI1Y2M4ODQ5M2ZmIDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nl
ci93cGUvbWFpbi5jcHAKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvd3BlL21haW4uY3BwCkBAIC00
Miw2ICs0Miw3IEBAIHN0YXRpYyBnYm9vbGVhbiBpZ25vcmVUTFNFcnJvcnM7CiBzdGF0aWMgY29u
c3QgY2hhciogY29va2llc0ZpbGU7CiBzdGF0aWMgY29uc3QgY2hhciogY29va2llc1BvbGljeTsK
IHN0YXRpYyBjb25zdCBjaGFyKiBwcm94eTsKK2NvbnN0IGNoYXIqIGJnQ29sb3I7CiAKIHN0YXRp
YyBjb25zdCBHT3B0aW9uRW50cnkgY29tbWFuZExpbmVPcHRpb25zW10gPQogewpAQCAtNTMsNiAr
NTQsNyBAQCBzdGF0aWMgY29uc3QgR09wdGlvbkVudHJ5IGNvbW1hbmRMaW5lT3B0aW9uc1tdID0K
ICAgICB7ICJwcm94eSIsIDAsIDAsIEdfT1BUSU9OX0FSR19TVFJJTkcsICZwcm94eSwgIlNldCBw
cm94eSIsICJQUk9YWSIgfSwKICAgICB7ICJpZ25vcmUtaG9zdCIsIDAsIDAsIEdfT1BUSU9OX0FS
R19TVFJJTkdfQVJSQVksICZpZ25vcmVIb3N0cywgIlNldCBwcm94eSBpZ25vcmUgaG9zdHMiLCAi
SE9TVFMiIH0sCiAgICAgeyAiaWdub3JlLXRscy1lcnJvcnMiLCAwLCAwLCBHX09QVElPTl9BUkdf
Tk9ORSwgJmlnbm9yZVRMU0Vycm9ycywgIklnbm9yZSBUTFMgZXJyb3JzIiwgbnVsbHB0ciB9LAor
ICAgIHsgImJnLWNvbG9yIiwgMCwgMCwgR19PUFRJT05fQVJHX1NUUklORywgJmJnQ29sb3IsICJX
aW5kb3cgYmFja2dyb3VuZCBjb2xvci4gRGVmYXVsdDogd2hpdGUiLCAiQ09MT1IiIH0sCiAgICAg
eyBHX09QVElPTl9SRU1BSU5JTkcsIDAsIDAsIEdfT1BUSU9OX0FSR19GSUxFTkFNRV9BUlJBWSwg
JnVyaUFyZ3VtZW50cywgbnVsbHB0ciwgIltVUkxdIiB9LAogICAgIHsgbnVsbHB0ciwgMCwgMCwg
R19PUFRJT05fQVJHX05PTkUsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIgfQogfTsKQEAgLTIx
Myw2ICsyMTUsMTAgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICAgICBpZiAo
aWdub3JlVExTRXJyb3JzKQogICAgICAgICB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X3Rsc19lcnJv
cnNfcG9saWN5KHdlYkNvbnRleHQsIFdFQktJVF9UTFNfRVJST1JTX1BPTElDWV9JR05PUkUpOwog
CisgICAgV2ViS2l0Q29sb3IgY29sb3I7CisgICAgaWYgKGJnQ29sb3IgJiYgd2Via2l0X2NvbG9y
X3BhcnNlKCZjb2xvciwgYmdDb2xvcikpCisgICAgICAgIHdlYmtpdF93ZWJfdmlld19zZXRfYmFj
a2dyb3VuZF9jb2xvcih3ZWJWaWV3LCAmY29sb3IpOworCiAgICAgaWYgKHVyaUFyZ3VtZW50cykg
ewogICAgICAgICBHRmlsZSogZmlsZSA9IGdfZmlsZV9uZXdfZm9yX2NvbW1hbmRsaW5lX2FyZyh1
cmlBcmd1bWVudHNbMF0pOwogICAgICAgICBjaGFyKiB1cmwgPSBnX2ZpbGVfZ2V0X3VyaShmaWxl
KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0
V2ViS2l0V2ViVmlldy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIv
VGVzdFdlYktpdFdlYlZpZXcuY3BwCmluZGV4IDU0ZjE5N2I4ODMzLi5kMDUzMWI0OWYwZiAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRX
ZWJWaWV3LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVz
dFdlYktpdFdlYlZpZXcuY3BwCkBAIC0xMTMzLDExICsxMTMzLDE2IEBAIHN0YXRpYyB2b2lkIHRl
c3RXZWJWaWV3SXNQbGF5aW5nQXVkaW8oSXNQbGF5aW5nQXVkaW9XZWJWaWV3VGVzdCogdGVzdCwg
Z2NvbnN0cG9pCiAgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3dlYl92aWV3X2lzX3BsYXlpbmdf
YXVkaW8odGVzdC0+bV93ZWJWaWV3KSk7CiB9CiAKLSNpZiBQTEFURk9STShHVEspCiBzdGF0aWMg
dm9pZCB0ZXN0V2ViVmlld0JhY2tncm91bmRDb2xvcihXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0
cG9pbnRlcikKIHsKKyNpZiBQTEFURk9STShHVEspCisjZGVmaW5lIENvbG9yVHlwZSBHZGtSR0JB
CisjZWxpZiBQTEFURk9STShXUEUpCisjZGVmaW5lIENvbG9yVHlwZSBXZWJLaXRDb2xvcgorI2Vu
ZGlmCisKICAgICAvLyBXaGl0ZSBpcyB0aGUgZGVmYXVsdCBiYWNrZ3JvdW5kLgotICAgIEdka1JH
QkEgcmdiYTsKKyAgICBDb2xvclR5cGUgcmdiYTsKICAgICB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2Jh
Y2tncm91bmRfY29sb3IodGVzdC0+bV93ZWJWaWV3LCAmcmdiYSk7CiAgICAgZ19hc3NlcnRfY21w
ZmxvYXQocmdiYS5yZWQsID09LCAxKTsKICAgICBnX2Fzc2VydF9jbXBmbG9hdChyZ2JhLmdyZWVu
LCA9PSwgMSk7CkBAIC0xMTU1LDEwICsxMTYwLDIzIEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3
QmFja2dyb3VuZENvbG9yKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIGdf
YXNzZXJ0X2NtcGZsb2F0KHJnYmEuYmx1ZSwgPT0sIDApOwogICAgIGdfYXNzZXJ0X2NtcGZsb2F0
KHJnYmEuYWxwaGEsID09LCAwLjUpOwogCisjaWYgUExBVEZPUk0oV1BFKQorICAgIENvbG9yVHlw
ZSBjb2xvcjsKKyAgICBnX2Fzc2VydCh3ZWJraXRfY29sb3JfcGFyc2UoJmNvbG9yLCAicmVkIikp
OworICAgIGdfYXNzZXJ0X2NtcGZsb2F0KGNvbG9yLnJlZCwgPT0sIDEpOworICAgIHdlYmtpdF93
ZWJfdmlld19zZXRfYmFja2dyb3VuZF9jb2xvcih0ZXN0LT5tX3dlYlZpZXcsICZjb2xvcik7Cisg
ICAgd2Via2l0X3dlYl92aWV3X2dldF9iYWNrZ3JvdW5kX2NvbG9yKHRlc3QtPm1fd2ViVmlldywg
JnJnYmEpOworICAgIGdfYXNzZXJ0X2NtcGZsb2F0KHJnYmEucmVkLCA9PSwgMSk7CisgICAgZ19h
c3NlcnRfY21wZmxvYXQocmdiYS5ncmVlbiwgPT0sIDApOworICAgIGdfYXNzZXJ0X2NtcGZsb2F0
KHJnYmEuYmx1ZSwgPT0sIDApOworICAgIGdfYXNzZXJ0X2NtcGZsb2F0KHJnYmEuYWxwaGEsID09
LCAxKTsKKyNlbmRpZgorCiAgICAgLy8gVGhlIGFjdHVhbCByZW5kZXJpbmcgY2FuJ3QgYmUgdGVz
dGVkIHVzaW5nIHVuaXQgdGVzdHMsIHVzZQogICAgIC8vIE1pbmlCcm93c2VyIC0tYmctY29sb3I9
Ijxjb2xvci12YWx1ZT4iIGZvciBtYW51YWxseSB0ZXN0aW5nIHRoaXMgQVBJLgogfQogCisjaWYg
UExBVEZPUk0oR1RLKQogc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdQcmVmZXJyZWRTaXplKFdlYlZp
ZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewogICAgIHRlc3QtPmxvYWRIdG1sKCI8aHRt
bCBzdHlsZT0nd2lkdGg6IDMyNXB4OyBoZWlnaHQ6IDYxNXB4Jz48L2h0bWw+IiwgbnVsbHB0cik7
CkBAIC0xMzYzLDggKzEzODEsOCBAQCB2b2lkIGJlZm9yZUFsbCgpCiAgICAgTm90aWZpY2F0aW9u
V2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJub3RpZmljYXRpb24taW5pdGlhbC1w
ZXJtaXNzaW9uLWRpc2FsbG93ZWQiLCB0ZXN0V2ViVmlld05vdGlmaWNhdGlvbkluaXRpYWxQZXJt
aXNzaW9uRGlzYWxsb3dlZCk7CiAjZW5kaWYKICAgICBJc1BsYXlpbmdBdWRpb1dlYlZpZXdUZXN0
OjphZGQoIldlYktpdFdlYlZpZXciLCAiaXMtcGxheWluZy1hdWRpbyIsIHRlc3RXZWJWaWV3SXNQ
bGF5aW5nQXVkaW8pOwotI2lmIFBMQVRGT1JNKEdUSykKICAgICBXZWJWaWV3VGVzdDo6YWRkKCJX
ZWJLaXRXZWJWaWV3IiwgImJhY2tncm91bmQtY29sb3IiLCB0ZXN0V2ViVmlld0JhY2tncm91bmRD
b2xvcik7CisjaWYgUExBVEZPUk0oR1RLKQogICAgIFdlYlZpZXdUZXN0OjphZGQoIldlYktpdFdl
YlZpZXciLCAicHJlZmVycmVkLXNpemUiLCB0ZXN0V2ViVmlld1ByZWZlcnJlZFNpemUpOwogI2Vu
ZGlmCiAgICAgV2ViVmlld1RpdGxlVGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgInRpdGxlLWNo
YW5nZSIsIHRlc3RXZWJWaWV3VGl0bGVDaGFuZ2UpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>361676</attachid>
            <date>2019-02-11 05:52:07 -0800</date>
            <delta_ts>2019-02-11 06:47:45 -0800</delta_ts>
            <desc>Try to fix mac builds</desc>
            <filename>wpe-bg-color.diff</filename>
            <type>text/plain</type>
            <size>73008</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlNWU2Njc2Y2Q4MS4uMGRjN2IyNjZiNjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMyBAQAorMjAxOS0wMS0xOCAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxp
YS5jb20+IGFuZCBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKwor
ICAgICAgICBbV1BFXSBBZGQgQVBJIGZvciB3ZWJ2aWV3IGJhY2tncm91bmQgY29sb3IgY29uZmln
dXJhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTkyMzA1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTWljaGFlbCBDYXRhbnphcm8uCisKKyAgICAg
ICAgQWRhcHQgdGhlIEZyYW1lVmlldyBBUEkgdG8gYWxsb3cgYSBkZWZhdWx0IG5vbi13aGl0ZSBi
YWNrZ3JvdW5kIGNvbG9yLgorCisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZTo6Y3JlYXRlVmlldyk6IFJlcGxhY2UgaXNUcmFuc3BhcmVudCBhcmd1bWVu
dCB3aXRoIGEgYmFja2dyb3VuZCBjb2xvciBvbmUuCisgICAgICAgICogcGFnZS9GcmFtZS5oOgor
ICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmll
dzo6cmVjYWxjdWxhdGVCYXNlQmFja2dyb3VuZENvbG9yKTogVXNlIENvbG9yOjp0cmFuc3BhcmVu
dCBpZiBtX2lzVHJhbnNwYXJlbnQgaXMgdHJ1ZS4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmll
dzo6dXBkYXRlQmFja2dyb3VuZFJlY3Vyc2l2ZWx5KTogQWxsb3cgdGhlIGZhbGxiYWNrIGJhY2tn
cm91bmQgY29sb3IgdG8gYmUgbm9uLXdoaXRlLCB0aGlzIGlzCisgICAgICAgIHVzZWQgb25seSBp
biBub24tZGFyay1tb2RlLWNzcyBidWlsZCBjb25maWd1cmF0aW9ucy4KKyAgICAgICAgKiBwYWdl
L0ZyYW1lVmlldy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkludGVybmFsczo6c2V0Vmlld0lzVHJhbnNwYXJlbnQpOiBVc2UgQ29sb3I6OnRy
YW5zcGFyZW50IGlmIHRyYW5zcGFyZW50IGlzIHRydWUuCisKIDIwMTktMDItMTAgIFphbGFuIEJ1
anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXSBGaXggc3BlbGxpbmcgZXJy
b3IuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4IGE0ZjgzYjI3ZjBiLi42N2M0YjNhMWExYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZS5jcHAKQEAgLTkwMSw3ICs5MDEsNyBAQCBSZWZQdHI8UmFuZ2U+IEZyYW1l
OjpyYW5nZUZvclBvaW50KGNvbnN0IEludFBvaW50JiBmcmFtZVBvaW50KQogICAgIHJldHVybiBu
dWxscHRyOwogfQogCi12b2lkIEZyYW1lOjpjcmVhdGVWaWV3KGNvbnN0IEludFNpemUmIHZpZXdw
b3J0U2l6ZSwgYm9vbCB0cmFuc3BhcmVudCwKK3ZvaWQgRnJhbWU6OmNyZWF0ZVZpZXcoY29uc3Qg
SW50U2l6ZSYgdmlld3BvcnRTaXplLCBjb25zdCBPcHRpb25hbDxDb2xvcj4mIGJhY2tncm91bmRD
b2xvciwKICAgICBjb25zdCBJbnRTaXplJiBmaXhlZExheW91dFNpemUsIGNvbnN0IEludFJlY3Qm
IGZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0LAogICAgIGJvb2wgdXNlRml4ZWRMYXlvdXQsIFNjcm9s
bGJhck1vZGUgaG9yaXpvbnRhbFNjcm9sbGJhck1vZGUsIGJvb2wgaG9yaXpvbnRhbExvY2ssCiAg
ICAgU2Nyb2xsYmFyTW9kZSB2ZXJ0aWNhbFNjcm9sbGJhck1vZGUsIGJvb2wgdmVydGljYWxMb2Nr
KQpAQCAtOTMyLDcgKzkzMiw3IEBAIHZvaWQgRnJhbWU6OmNyZWF0ZVZpZXcoY29uc3QgSW50U2l6
ZSYgdmlld3BvcnRTaXplLCBib29sIHRyYW5zcGFyZW50LAogCiAgICAgc2V0VmlldyhmcmFtZVZp
ZXcuY29weVJlZigpKTsKIAotICAgIGZyYW1lVmlldy0+dXBkYXRlQmFja2dyb3VuZFJlY3Vyc2l2
ZWx5KHRyYW5zcGFyZW50KTsKKyAgICBmcmFtZVZpZXctPnVwZGF0ZUJhY2tncm91bmRSZWN1cnNp
dmVseShiYWNrZ3JvdW5kQ29sb3IpOwogCiAgICAgaWYgKGlzTWFpbkZyYW1lKQogICAgICAgICBm
cmFtZVZpZXctPnNldFBhcmVudFZpc2libGUodHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKaW5kZXggOGFk
MTNkNmUxY2MuLjc4NDFhZDU2MmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCkBAIC0xMjgsNyArMTI4LDcg
QEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5pdFdpdGhTaW1wbGVIVE1MRG9j
dW1lbnQoY29uc3QgU3RyaW5nJiBzdHlsZSwgY29uc3QgVVJMJik7CiAjZW5kaWYKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldFZpZXcoUmVmUHRyPEZyYW1lVmlldz4mJik7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBjcmVhdGVWaWV3KGNvbnN0IEludFNpemUmLCBib29sIHRyYW5zcGFyZW50
LAorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY3JlYXRlVmlldyhjb25zdCBJbnRTaXplJiwgY29u
c3QgT3B0aW9uYWw8Q29sb3I+JiBiYWNrZ3JvdW5kQ29sb3IsCiAgICAgICAgIGNvbnN0IEludFNp
emUmIGZpeGVkTGF5b3V0U2l6ZSwgY29uc3QgSW50UmVjdCYgZml4ZWRWaXNpYmxlQ29udGVudFJl
Y3QsCiAgICAgICAgIGJvb2wgdXNlRml4ZWRMYXlvdXQgPSBmYWxzZSwgU2Nyb2xsYmFyTW9kZSA9
IFNjcm9sbGJhckF1dG8sIGJvb2wgaG9yaXpvbnRhbExvY2sgPSBmYWxzZSwKICAgICAgICAgU2Ny
b2xsYmFyTW9kZSA9IFNjcm9sbGJhckF1dG8sIGJvb2wgdmVydGljYWxMb2NrID0gZmFsc2UpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IDliMjQ3NzdkMGJmLi5lMTg4MjdmMjExMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtMzk4LDcgKzM5OCwxMCBAQCB2b2lkIEZy
YW1lVmlldzo6cmVjYWxjdWxhdGVCYXNlQmFja2dyb3VuZENvbG9yKCkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgbV91c2VzRGFya0FwcGVhcmFuY2UgPSB1c2luZ0RhcmtBcHBlYXJhbmNlOwotICAg
IHVwZGF0ZUJhY2tncm91bmRSZWN1cnNpdmVseShtX2lzVHJhbnNwYXJlbnQpOworICAgIE9wdGlv
bmFsPENvbG9yPiBiYWNrZ3JvdW5kQ29sb3I7CisgICAgaWYgKG1faXNUcmFuc3BhcmVudCkKKyAg
ICAgICAgYmFja2dyb3VuZENvbG9yID0gQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50KTsKKyAgICB1
cGRhdGVCYWNrZ3JvdW5kUmVjdXJzaXZlbHkoYmFja2dyb3VuZENvbG9yKTsKIH0KICNlbmRpZgog
CkBAIC0yOTkzLDE4ICsyOTk2LDE4IEBAIHZvaWQgRnJhbWVWaWV3OjpzZXRCYXNlQmFja2dyb3Vu
ZENvbG9yKGNvbnN0IENvbG9yJiBiYWNrZ3JvdW5kQ29sb3IpCiAgICAgc2V0TmVlZHNDb21wb3Np
dGluZ0NvbmZpZ3VyYXRpb25VcGRhdGUoKTsKIH0KIAotdm9pZCBGcmFtZVZpZXc6OnVwZGF0ZUJh
Y2tncm91bmRSZWN1cnNpdmVseShib29sIHRyYW5zcGFyZW50KQordm9pZCBGcmFtZVZpZXc6OnVw
ZGF0ZUJhY2tncm91bmRSZWN1cnNpdmVseShjb25zdCBPcHRpb25hbDxDb2xvcj4mIGJhY2tncm91
bmRDb2xvcikKIHsKICNpZiBFTkFCTEUoREFSS19NT0RFX0NTUykgJiYgUExBVEZPUk0oTUFDKQot
ICAgIENvbG9yIGJhY2tncm91bmRDb2xvciA9IHRyYW5zcGFyZW50ID8gQ29sb3I6OnRyYW5zcGFy
ZW50IDogUmVuZGVyVGhlbWU6OnNpbmdsZXRvbigpLnN5c3RlbUNvbG9yKENTU1ZhbHVlQXBwbGVT
eXN0ZW1Db250cm9sQmFja2dyb3VuZCwgc3R5bGVDb2xvck9wdGlvbnMoKSk7CisgICAgQ29sb3Ig
YmFzZUJhY2tncm91bmRDb2xvciA9IGJhY2tncm91bmRDb2xvci52YWx1ZU9yKFJlbmRlclRoZW1l
OjpzaW5nbGV0b24oKS5zeXN0ZW1Db2xvcihDU1NWYWx1ZUFwcGxlU3lzdGVtQ29udHJvbEJhY2tn
cm91bmQsIHN0eWxlQ29sb3JPcHRpb25zKCkpKTsKICNlbHNlCi0gICAgQ29sb3IgYmFja2dyb3Vu
ZENvbG9yID0gdHJhbnNwYXJlbnQgPyBDb2xvcjo6dHJhbnNwYXJlbnQgOiBDb2xvcjo6d2hpdGU7
CisgICAgQ29sb3IgYmFzZUJhY2tncm91bmRDb2xvciA9IGJhY2tncm91bmRDb2xvci52YWx1ZU9y
KENvbG9yOjp3aGl0ZSk7CiAjZW5kaWYKIAogICAgIGZvciAoYXV0byogZnJhbWUgPSBtX2ZyYW1l
LnB0cigpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dChtX2ZyYW1l
LnB0cigpKSkgewogICAgICAgICBpZiAoRnJhbWVWaWV3KiB2aWV3ID0gZnJhbWUtPnZpZXcoKSkg
ewotICAgICAgICAgICAgdmlldy0+c2V0VHJhbnNwYXJlbnQodHJhbnNwYXJlbnQpOwotICAgICAg
ICAgICAgdmlldy0+c2V0QmFzZUJhY2tncm91bmRDb2xvcihiYWNrZ3JvdW5kQ29sb3IpOworICAg
ICAgICAgICAgdmlldy0+c2V0VHJhbnNwYXJlbnQoIWJhc2VCYWNrZ3JvdW5kQ29sb3IuaXNWaXNp
YmxlKCkpOworICAgICAgICAgICAgdmlldy0+c2V0QmFzZUJhY2tncm91bmRDb2xvcihiYXNlQmFj
a2dyb3VuZENvbG9yKTsKICAgICAgICAgICAgIGlmICh2aWV3LT5uZWVkc0xheW91dCgpKQogICAg
ICAgICAgICAgICAgIHZpZXctPmxheW91dENvbnRleHQoKS5zY2hlZHVsZUxheW91dCgpOwogICAg
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAppbmRleCAyMTczZGFjM2QyOC4uYWM5M2ZkODQz
MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaApAQCAtMTkyLDcgKzE5Miw3IEBAIHB1YmxpYzoK
IAogICAgIFdFQkNPUkVfRVhQT1JUIENvbG9yIGJhc2VCYWNrZ3JvdW5kQ29sb3IoKSBjb25zdDsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEJhc2VCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29s
b3ImKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUJhY2tncm91bmRSZWN1cnNpdmVs
eShib29sKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUJhY2tncm91bmRSZWN1cnNp
dmVseShjb25zdCBPcHRpb25hbDxDb2xvcj4mIGJhY2tncm91bmRDb2xvcik7CiAKICAgICBlbnVt
IEV4dGVuZGVkQmFja2dyb3VuZE1vZGVGbGFncyB7CiAgICAgICAgIEV4dGVuZGVkQmFja2dyb3Vu
ZE1vZGVOb25lICAgICAgICAgID0gMCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApp
bmRleCA3MjllOWNmMjQ4OS4uNmI3OGUwM2RkNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5jcHAKQEAgLTE3MjEsNyArMTcyMSwxMCBAQCBFeGNlcHRpb25Pcjx2b2lkPiBJbnRlcm5h
bHM6OnNldFZpZXdJc1RyYW5zcGFyZW50KGJvb2wgdHJhbnNwYXJlbnQpCiAgICAgRG9jdW1lbnQq
IGRvY3VtZW50ID0gY29udGV4dERvY3VtZW50KCk7CiAgICAgaWYgKCFkb2N1bWVudCB8fCAhZG9j
dW1lbnQtPnZpZXcoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRBY2Nlc3NF
cnJvciB9OwotICAgIGRvY3VtZW50LT52aWV3KCktPnVwZGF0ZUJhY2tncm91bmRSZWN1cnNpdmVs
eSh0cmFuc3BhcmVudCk7CisgICAgT3B0aW9uYWw8Q29sb3I+IGJhY2tncm91bmRDb2xvcjsKKyAg
ICBpZiAodHJhbnNwYXJlbnQpCisgICAgICAgIGJhY2tncm91bmRDb2xvciA9IENvbG9yKENvbG9y
Ojp0cmFuc3BhcmVudCk7CisgICAgZG9jdW1lbnQtPnZpZXcoKS0+dXBkYXRlQmFja2dyb3VuZFJl
Y3Vyc2l2ZWx5KGJhY2tncm91bmRDb2xvcik7CiAgICAgcmV0dXJuIHsgfTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCAzYWJkOTU3NTEzMy4uYTJlYTQ2NjkzMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODAgQEAK
KzIwMTktMDEtMTggIFBoaWxpcHBlIE5vcm1hbmQgPHBub3JtYW5kQGlnYWxpYS5jb20+IGFuZCBD
YXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbV1BF
XSBBZGQgQVBJIGZvciB3ZWJ2aWV3IGJhY2tncm91bmQgY29sb3IgY29uZmlndXJhdGlvbgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyMzA1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTWljaGFlbCBDYXRhbnphcm8uCisKKyAgICAgICAgSW4gdGhlIGNh
c2Ugb2YgV1BFIHdlIG5lZWQgdG8gc2VuZCB0aGUgYmFja2dyb3VuZCBjb2xvciB0byB0aGUgd2Vi
IHByb2Nlc3MgdG8gYmUgdXNlZCBhcyB0aGUgYmFja2dyb3VuZCBjb2xvciBvZgorICAgICAgICB0
aGUgcGFnZS4gVGhpcyBwYXRjaCBhZGFwdHMgdGhlIEdUSysgaW1wbGVtZW50YXRpb24gdG8gZG8g
dGhlIHNhbWUsIHNpbmNlIGl0J3MgYSBsb3Qgc2ltcGxlci4gVGhlIHBhdGNoIGFsc28KKyAgICAg
ICAgcmVtb3ZlcyB0aGUgU2V0RHJhd3NCYWNrZ3JvdW5kIG1lc3NhZ2UgaW4gZmF2b3Igb2YgdGhl
IG5ldyBTZXRCYWNrZ3JvdW5kQ29sb3IgbWVzc2FnZSB0aGF0IHJlY2VpdmVzIGFuIG9wdGlvbmFs
CisgICAgICAgIGNvbG9yLgorCisgICAgICAgICogUGxhdGZvcm1XUEUuY21ha2U6IEFkZCBuZXcg
V1BFIEFQSSBmb3IgV2ViS2l0Q29sb3IgYm94ZWQgdHlwZS4KKyAgICAgICAgKiBTaGFyZWQvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwOgorICAgICAgICAo
V2ViS2l0OjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnBhaW50VG9DdXJyZW50R0xDb250ZXh0
KTogUmVtb3ZlIGJhY2tncm91bmQgcmVuZGVyaW5nIGFuZCBvcGFjaXR5IGhhbmRsaW5nLgorICAg
ICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2Vu
ZS5oOgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9z
aXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpUaHJlYWRlZENv
bXBvc2l0b3I6OnJlbmRlckxheWVyVHJlZSk6IFJlbW92ZSBkcmF3c0Jha2dyb3VuZCBhbmQgYWx3
YXlzIGNsZWFyIHRoZSBjb250ZXh0IHdpdGgKKyAgICAgICAgdHJhbnNwYXJlbnQgY29sb3IuCisg
ICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1Ro
cmVhZGVkQ29tcG9zaXRvci5oOgorICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6
ZW5jb2RlIGNvbnN0KTogUmVwbGFjZSBkcmF3c0JhY2tncm91bmQgd2l0aCBiYWNrZ3JvdW5kQ29s
b3IuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6
IERpdHRvLgorICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmg6Cisg
ICAgICAgICogU291cmNlc1dQRS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdFdlYlZpZXcuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZp
ZXdHdGsuY3BwOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X3NldF9iYWNrZ3JvdW5kX2NvbG9y
KToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19nZXRfYmFja2dyb3VuZF9jb2xvcik6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0Q29sb3IuY3BwOiBBZGRlZC4KKyAgICAgICAg
KHdlYmtpdF9jb2xvcl9jb3B5KToKKyAgICAgICAgKHdlYmtpdF9jb2xvcl9mcmVlKToKKyAgICAg
ICAgKHdlYmtpdENvbG9yVG9XZWJDb3JlQ29sb3IpOgorICAgICAgICAod2Via2l0Q29sb3JGaWxs
RnJvbVdlYkNvcmVDb2xvcik6CisgICAgICAgICh3ZWJraXRfY29sb3JfcGFyc2UpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdENvbG9yLmg6IEFkZGVkLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvd3BlL1dlYktpdENvbG9yUHJpdmF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3Lmg6IEltcGxlbWVudCB3ZWJraXRfd2ViX3Zp
ZXdfc2V0X2JhY2tncm91bmRfY29sb3IgQVBJLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3Bl
L1dlYktpdFdlYlZpZXdXUEUuY3BwOiBEaXR0by4KKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19z
ZXRfYmFja2dyb3VuZF9jb2xvcik6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2JhY2tn
cm91bmRfY29sb3IpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTAuMS1z
ZWN0aW9ucy50eHQ6IEFkZCBuZXcgc3ltYm9scy4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXREcmF3c0JhY2tn
cm91bmQpOiBTZXQgYSB0cmFuc3BhcmVudCBiYWNrZ3JvdW5kIGNvbG9yIHdoZW4gZmFsc2UgaXMg
cGFzc2VkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldEJhY2tncm91bmRDb2xv
cik6IFNlbmQgYmFja2dyb3VuZCBjb2xvciB0byB0aGUgV2ViUHJvY2Vzcy4KKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMpOiBSZXBsYWNlIGRyYXdzQmFj
a2dyb3VuZCB3aXRoIGJhY2tncm91bmRDb2xvci4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZHJhd3NCYWNrZ3JvdW5k
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpiYWNrZ3JvdW5kQ29sb3Ig
Y29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9jYWlyby9CYWNraW5nU3RvcmVDYWlyby5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkJhY2tpbmdTdG9yZTo6aW5jb3Jwb3JhdGVVcGRhdGUpOiBSZW1v
dmUgR1RLKyBjb2RlIHRvIGhhbmRsZSBiYWNrZ3JvdW5kIGNvbG9yLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAqIFVJUHJvY2Vz
cy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUuaDogTWFrZSBwYWludCgpIHB1cmUgdmlydHVh
bCBhbmQgcmVtb3ZlIHRoZSBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKiBVSVByb2Nlc3MvZ3Rr
L0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkFj
Y2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZDo6cGFpbnQpOiBEb3Qgbm90IGNhbGwgQWNjZWxl
cmF0ZWRCYWNraW5nU3RvcmU6OnBhaW50KCkgbm93IHRoYXQgaXMgcHVyZSB2aXJ0dWFsLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTEuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVgxMTo6cGFpbnQpOiBEaXR0by4K
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OnRyYW5zaXRpb25U
b0NvbW1pdHRlZEZvck5ld1BhZ2UpOiBVc2UgYmFja2dyb3VuZCBjb2xvciBhcyBwcm92aWRlZCBi
eSB0aGUKKyAgICAgICAgVUlQcm9jZXNzIHdoZW4gY3JlYXRpbmcgdGhlIEZyYW1lVmlldy4KKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3aW5nQXJlYS5jcHA6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZExheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6VGhyZWFkZWRDb29yZGluYXRlZExheWVy
VHJlZUhvc3Q6OnNldElzRGlzY2FyZGFibGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Lmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkRyYXdpbmdBcmVhSW1wbDo6ZGlzcGxheSk6IFJlbW92ZSBzcGVjaWFsIGNhc2UgZm9yIHRyYW5z
cGFyZW50IGJhY2tncm91bmQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJl
ZUhvc3QuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldEJhY2tncm91bmRDb2xvcik6IE5ldyBBUEkgZm9yIGJh
Y2tncm91bmQgY29sb3IgY29uZmlndXJhdGlvbi4gUHJveGllcyB0byBGcmFtZVZpZXcgYW5kIERy
YXdpbmdBcmVhLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OmJhY2tncm91bmRDb2xvciBjb25zdCk6IFJlYWQtb25seSBh
Y2Nlc3MgdG8gdGhlIGN1cnJlbnQgYmFja2dyb3VuZCBjb2xvci4KKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjogUmVwbGFjZSBTZXREcmF3c0JhY2tncm91
bmQgbWVzc2FnZSB3aXRoIFNldEJhY2tncm91bmRDb2xvci4KKwogMjAxOS0wMS0xNiAgQ2FybG9z
IEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS11bV1BF
XSBBZGQgd2ViIGV4dGVuc2lvbnMgQVBJIHRvIHdoaXRlbGlzdCBhY2Nlc3MgdG8gYSBzZWN1cml0
eSBvcmlnaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1XUEUuY21ha2UgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtV1BFLmNtYWtlCmluZGV4IGRmMTU5NGY3YzgyLi4yNTgzYTBi
ZGIzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdQRS5jbWFrZQorKysgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtV1BFLmNtYWtlCkBAIC05OCw2ICs5OCw3IEBAIHNldChXUEVf
QVBJX0lOU1RBTExFRF9IRUFERVJTCiAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL3dw
ZS9XZWJLaXRCYWNrRm9yd2FyZExpc3QuaAogICAgICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQ
SS93cGUvV2ViS2l0QmFja0ZvcndhcmRMaXN0SXRlbS5oCiAgICAgJHtXRUJLSVRfRElSfS9VSVBy
b2Nlc3MvQVBJL3dwZS9XZWJLaXRDcmVkZW50aWFsLmgKKyAgICAke1dFQktJVF9ESVJ9L1VJUHJv
Y2Vzcy9BUEkvd3BlL1dlYktpdENvbG9yLmgKICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9B
UEkvd3BlL1dlYktpdENvbnRleHRNZW51LmgKICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9B
UEkvd3BlL1dlYktpdENvbnRleHRNZW51QWN0aW9ucy5oCiAgICAgJHtXRUJLSVRfRElSfS9VSVBy
b2Nlc3MvQVBJL3dwZS9XZWJLaXRDb250ZXh0TWVudUl0ZW0uaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2Nl
bmUuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGlu
YXRlZEdyYXBoaWNzU2NlbmUuY3BwCmluZGV4IGE1ZjE1ZjAxYTUwLi5kYTJmOGE1MjdkZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGlu
YXRlZEdyYXBoaWNzU2NlbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcApAQCAtNjUsNyArNjUsNyBA
QCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6YXBwbHlTdGF0ZUNoYW5nZXMoY29uc3Qg
VmVjdG9yPENvb3JkaW5hdGVkR3JhcGhpYwogICAgICAgICBjb21taXRTY2VuZVN0YXRlKHN0YXRl
Lm5pY29zaWEpOwogfQogCi12b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6cGFpbnRUb0N1
cnJlbnRHTENvbnRleHQoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCwgZmxvYXQg
b3BhY2l0eSwgY29uc3QgRmxvYXRSZWN0JiBjbGlwUmVjdCwgY29uc3QgQ29sb3ImIGJhY2tncm91
bmRDb2xvciwgYm9vbCBkcmF3c0JhY2tncm91bmQsIFRleHR1cmVNYXBwZXI6OlBhaW50RmxhZ3Mg
UGFpbnRGbGFncykKK3ZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpwYWludFRvQ3VycmVu
dEdMQ29udGV4dChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4LCBjb25zdCBGbG9h
dFJlY3QmIGNsaXBSZWN0LCBUZXh0dXJlTWFwcGVyOjpQYWludEZsYWdzIFBhaW50RmxhZ3MpCiB7
CiAgICAgdXBkYXRlU2NlbmVTdGF0ZSgpOwogCkBAIC03OCwxOCArNzgsOCBAQCB2b2lkIENvb3Jk
aW5hdGVkR3JhcGhpY3NTY2VuZTo6cGFpbnRUb0N1cnJlbnRHTENvbnRleHQoY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaQogICAgIG1fdGV4dHVyZU1hcHBlci0+YmVnaW5QYWludGluZyhQYWludEZs
YWdzKTsKICAgICBtX3RleHR1cmVNYXBwZXItPmJlZ2luQ2xpcChUcmFuc2Zvcm1hdGlvbk1hdHJp
eCgpLCBjbGlwUmVjdCk7CiAKLSAgICBpZiAoZHJhd3NCYWNrZ3JvdW5kKSB7Ci0gICAgICAgIFJH
QkEzMiByZ2JhID0gbWFrZVJHQkEzMkZyb21GbG9hdHMoYmFja2dyb3VuZENvbG9yLnJlZCgpLAot
ICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yLmdyZWVuKCksIGJhY2tncm91bmRDb2xvci5ibHVl
KCksCi0gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3IuYWxwaGEoKSAqIG9wYWNpdHkpOwotICAg
ICAgICBtX3RleHR1cmVNYXBwZXItPmRyYXdTb2xpZENvbG9yKGNsaXBSZWN0LCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCgpLCBDb2xvcihyZ2JhKSwgdHJ1ZSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIG1f
dGV4dHVyZU1hcHBlci0+Y2xlYXJDb2xvcihtX3ZpZXdCYWNrZ3JvdW5kQ29sb3IpOwotCi0gICAg
aWYgKGN1cnJlbnRSb290TGF5ZXItPm9wYWNpdHkoKSAhPSBvcGFjaXR5IHx8IGN1cnJlbnRSb290
TGF5ZXItPnRyYW5zZm9ybSgpICE9IG1hdHJpeCkgewotICAgICAgICBjdXJyZW50Um9vdExheWVy
LT5zZXRPcGFjaXR5KG9wYWNpdHkpOworICAgIGlmIChjdXJyZW50Um9vdExheWVyLT50cmFuc2Zv
cm0oKSAhPSBtYXRyaXgpCiAgICAgICAgIGN1cnJlbnRSb290TGF5ZXItPnNldFRyYW5zZm9ybSht
YXRyaXgpOwotICAgIH0KIAogICAgIGN1cnJlbnRSb290TGF5ZXItPnBhaW50KCk7CiAgICAgbV9m
cHNDb3VudGVyLnVwZGF0ZUZQU0FuZERpc3BsYXkoKm1fdGV4dHVyZU1hcHBlciwgY2xpcFJlY3Qu
bG9jYXRpb24oKSwgbWF0cml4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmggYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5o
CmluZGV4IGQ0YmI1ODI2OGZlLi4yZTZiMzM1ZGJiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3NTY2VuZS5oCkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5D
b29yZGluYXRlZEdyYXBoaWNzU2NlbmUoKTsKIAogICAgIHZvaWQgYXBwbHlTdGF0ZUNoYW5nZXMo
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZT4mKTsKLSAgICB2
b2lkIHBhaW50VG9DdXJyZW50R0xDb250ZXh0KGNvbnN0IFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9u
TWF0cml4JiwgZmxvYXQsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6
OkNvbG9yJiBiYWNrZ3JvdW5kQ29sb3IsIGJvb2wgZHJhd3NCYWNrZ3JvdW5kLCBXZWJDb3JlOjpU
ZXh0dXJlTWFwcGVyOjpQYWludEZsYWdzID0gMCk7CisgICAgdm9pZCBwYWludFRvQ3VycmVudEdM
Q29udGV4dChjb25zdCBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IFdlYkNv
cmU6OkZsb2F0UmVjdCYsIFdlYkNvcmU6OlRleHR1cmVNYXBwZXI6OlBhaW50RmxhZ3MgPSAwKTsK
ICAgICB2b2lkIGRldGFjaCgpOwogCiAgICAgLy8gVGhlIHBhaW50aW5nIHRocmVhZCBtdXN0IGxv
Y2sgdGhlIG1haW4gdGhyZWFkIHRvIHVzZSBiZWxvdyB0d28gbWV0aG9kcywgYmVjYXVzZSB0d28g
bWV0aG9kcyBhY2Nlc3MgbWVtYmVycyB0aGF0IHRoZSBtYWluIHRocmVhZCBtYW5hZ2VzLiBTZWUg
bV9jbGllbnQuCkBAIC04Miw5ICs4Miw2IEBAIHB1YmxpYzoKICAgICBib29sIGlzQWN0aXZlKCkg
Y29uc3QgeyByZXR1cm4gbV9pc0FjdGl2ZTsgfQogICAgIHZvaWQgc2V0QWN0aXZlKGJvb2wgYWN0
aXZlKSB7IG1faXNBY3RpdmUgPSBhY3RpdmU7IH0KIAotICAgIHZvaWQgc2V0Vmlld0JhY2tncm91
bmRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYgY29sb3IpIHsgbV92aWV3QmFja2dyb3VuZENv
bG9yID0gY29sb3I7IH0KLSAgICBXZWJDb3JlOjpDb2xvciB2aWV3QmFja2dyb3VuZENvbG9yKCkg
Y29uc3QgeyByZXR1cm4gbV92aWV3QmFja2dyb3VuZENvbG9yOyB9Ci0KIHByaXZhdGU6CiAgICAg
dm9pZCBjb21taXRTY2VuZVN0YXRlKGNvbnN0IFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NT
dGF0ZTo6Tmljb3NpYVN0YXRlJik7CiAgICAgdm9pZCB1cGRhdGVTY2VuZVN0YXRlKCk7CkBAIC0x
MTMsNyArMTEwLDYgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6VGV4
dHVyZU1hcHBlckxheWVyPiBtX3Jvb3RMYXllcjsKIAogICAgIE5pY29zaWE6OlBsYXRmb3JtTGF5
ZXI6OkxheWVySUQgbV9yb290TGF5ZXJJRCB7IDAgfTsKLSAgICBXZWJDb3JlOjpDb2xvciBtX3Zp
ZXdCYWNrZ3JvdW5kQ29sb3IgeyBXZWJDb3JlOjpDb2xvcjo6d2hpdGUgfTsKIAogICAgIFdlYkNv
cmU6OlRleHR1cmVNYXBwZXJGUFNDb3VudGVyIG1fZnBzQ291bnRlcjsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9z
aXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRp
bmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcApp
bmRleCA3NTIyZjg0ZWE4Zi4uODA1ZjIzMzBjY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29t
cG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGlj
cy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcApAQCAtMTU2LDEzICsx
NTYsNiBAQCB2b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6c2V0Vmlld3BvcnRTaXplKGNvbnN0IElu
dFNpemUmIHZpZXdwb3J0U2l6ZSwgZmxvYXQgc2NhbAogICAgIG1fY29tcG9zaXRpbmdSdW5Mb29w
LT5zY2hlZHVsZVVwZGF0ZSgpOwogfQogCi12b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6c2V0RHJh
d3NCYWNrZ3JvdW5kKGJvb2wgZHJhd3NCYWNrZ3JvdW5kKQotewotICAgIExvY2tIb2xkZXIgbG9j
a2VyKG1fYXR0cmlidXRlcy5sb2NrKTsKLSAgICBtX2F0dHJpYnV0ZXMuZHJhd3NCYWNrZ3JvdW5k
ID0gZHJhd3NCYWNrZ3JvdW5kOwotICAgIG1fY29tcG9zaXRpbmdSdW5Mb29wLT5zY2hlZHVsZVVw
ZGF0ZSgpOwotfQotCiB2b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6dXBkYXRlVmlld3BvcnQoKQog
ewogICAgIG1fY29tcG9zaXRpbmdSdW5Mb29wLT5zY2hlZHVsZVVwZGF0ZSgpOwpAQCAtMTk0LDgg
KzE4Nyw4IEBAIHZvaWQgVGhyZWFkZWRDb21wb3NpdG9yOjpyZW5kZXJMYXllclRyZWUoKQogICAg
IFdlYkNvcmU6OkludFNpemUgdmlld3BvcnRTaXplOwogICAgIFdlYkNvcmU6OkludFBvaW50IHNj
cm9sbFBvc2l0aW9uOwogICAgIGZsb2F0IHNjYWxlRmFjdG9yOwotICAgIGJvb2wgZHJhd3NCYWNr
Z3JvdW5kOwogICAgIGJvb2wgbmVlZHNSZXNpemU7CisKICAgICBWZWN0b3I8V2ViQ29yZTo6Q29v
cmRpbmF0ZWRHcmFwaGljc1N0YXRlPiBzdGF0ZXM7CiAKICAgICB7CkBAIC0yMDMsNyArMTk2LDYg
QEAgdm9pZCBUaHJlYWRlZENvbXBvc2l0b3I6OnJlbmRlckxheWVyVHJlZSgpCiAgICAgICAgIHZp
ZXdwb3J0U2l6ZSA9IG1fYXR0cmlidXRlcy52aWV3cG9ydFNpemU7CiAgICAgICAgIHNjcm9sbFBv
c2l0aW9uID0gbV9hdHRyaWJ1dGVzLnNjcm9sbFBvc2l0aW9uOwogICAgICAgICBzY2FsZUZhY3Rv
ciA9IG1fYXR0cmlidXRlcy5zY2FsZUZhY3RvcjsKLSAgICAgICAgZHJhd3NCYWNrZ3JvdW5kID0g
bV9hdHRyaWJ1dGVzLmRyYXdzQmFja2dyb3VuZDsKICAgICAgICAgbmVlZHNSZXNpemUgPSBtX2F0
dHJpYnV0ZXMubmVlZHNSZXNpemU7CiAKICAgICAgICAgc3RhdGVzID0gV1RGTW92ZShtX2F0dHJp
YnV0ZXMuc3RhdGVzKTsKQEAgLTI0NywxNCArMjM5LDExIEBAIHZvaWQgVGhyZWFkZWRDb21wb3Np
dG9yOjpyZW5kZXJMYXllclRyZWUoKQogICAgIHZpZXdwb3J0VHJhbnNmb3JtLnNjYWxlKHNjYWxl
RmFjdG9yKTsKICAgICB2aWV3cG9ydFRyYW5zZm9ybS50cmFuc2xhdGUoLXNjcm9sbFBvc2l0aW9u
LngoKSwgLXNjcm9sbFBvc2l0aW9uLnkoKSk7CiAKLSAgICBpZiAoIWRyYXdzQmFja2dyb3VuZCkg
ewotICAgICAgICBnbENsZWFyQ29sb3IoMCwgMCwgMCwgMCk7Ci0gICAgICAgIGdsQ2xlYXIoR0xf
Q09MT1JfQlVGRkVSX0JJVCk7Ci0gICAgfQorICAgIGdsQ2xlYXJDb2xvcigwLCAwLCAwLCAwKTsK
KyAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOwogCiAgICAgbV9zY2VuZS0+YXBwbHlT
dGF0ZUNoYW5nZXMoc3RhdGVzKTsKLSAgICBtX3NjZW5lLT5wYWludFRvQ3VycmVudEdMQ29udGV4
dCh2aWV3cG9ydFRyYW5zZm9ybSwgMSwgRmxvYXRSZWN0IHsgRmxvYXRQb2ludCB7IH0sIHZpZXdw
b3J0U2l6ZSB9LAotICAgICAgICBDb2xvcjo6dHJhbnNwYXJlbnQsICFkcmF3c0JhY2tncm91bmQs
IG1fcGFpbnRGbGFncyk7CisgICAgbV9zY2VuZS0+cGFpbnRUb0N1cnJlbnRHTENvbnRleHQodmll
d3BvcnRUcmFuc2Zvcm0sIEZsb2F0UmVjdCB7IEZsb2F0UG9pbnQgeyB9LCB2aWV3cG9ydFNpemUg
fSwgbV9wYWludEZsYWdzKTsKIAogICAgIG1fY29udGV4dC0+c3dhcEJ1ZmZlcnMoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRl
ZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9D
b29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3Iu
aAppbmRleCA2ZDcwNTM4NTBkYS4uYjYzMWZjMDM1ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVk
Q29tcG9zaXRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5oCkBAIC03MCw3ICs3MCw2
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNjYWxlRmFjdG9yKGZsb2F0KTsKICAgICB2b2lkIHNl
dFNjcm9sbFBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgZmxvYXQgc2NhbGUpOwog
ICAgIHZvaWQgc2V0Vmlld3BvcnRTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBmbG9hdCBz
Y2FsZSk7Ci0gICAgdm9pZCBzZXREcmF3c0JhY2tncm91bmQoYm9vbCk7CiAKICAgICB2b2lkIHVw
ZGF0ZVNjZW5lU3RhdGUoY29uc3QgV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlJik7
CiAKQEAgLTExMiw5ICsxMTEsNyBAQCBwcml2YXRlOgogICAgICAgICBXZWJDb3JlOjpJbnRTaXpl
IHZpZXdwb3J0U2l6ZTsKICAgICAgICAgV2ViQ29yZTo6SW50UG9pbnQgc2Nyb2xsUG9zaXRpb247
CiAgICAgICAgIGZsb2F0IHNjYWxlRmFjdG9yIHsgMSB9OwotICAgICAgICBib29sIGRyYXdzQmFj
a2dyb3VuZCB7IHRydWUgfTsKICAgICAgICAgYm9vbCBuZWVkc1Jlc2l6ZSB7IGZhbHNlIH07Ci0K
ICAgICAgICAgVmVjdG9yPFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZT4gc3RhdGVz
OwogCiAgICAgICAgIGJvb2wgY2xpZW50UmVuZGVyc05leHRGcmFtZSB7IGZhbHNlIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCmlu
ZGV4IGIxNjRjYWQ3Y2U2Li4xMjUxOWI3MTFkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAgLTM4LDcgKzM4LDYgQEAgdm9p
ZCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAogICAgIGVuY29kZXIgPDwgc3RvcmU7CiAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKGRy
YXdpbmdBcmVhVHlwZSk7CiAgICAgZW5jb2RlciA8PCBwYWdlR3JvdXBEYXRhOwotICAgIGVuY29k
ZXIgPDwgZHJhd3NCYWNrZ3JvdW5kOwogICAgIGVuY29kZXIgPDwgaXNFZGl0YWJsZTsKICAgICBl
bmNvZGVyIDw8IHVuZGVybGF5Q29sb3I7CiAgICAgZW5jb2RlciA8PCB1c2VGaXhlZExheW91dDsK
QEAgLTEyMiw2ICsxMjEsNyBAQCB2b2lkIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29k
ZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5T
SU9OUykKICAgICBlbmNvZGVyIDw8IGNvbnRlbnRSdWxlTGlzdHM7CiAjZW5kaWYKKyAgICBlbmNv
ZGVyIDw8IGJhY2tncm91bmRDb2xvcjsKIH0KIAogT3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycz4gV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2RlciYg
ZGVjb2RlcikKQEAgLTE0MCw4ICsxNDAsNiBAQCBPcHRpb25hbDxXZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzPiBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZAogICAg
IGlmICghcGFnZUdyb3VwRGF0YSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICBw
YXJhbWV0ZXJzLnBhZ2VHcm91cERhdGEgPSBXVEZNb3ZlKCpwYWdlR3JvdXBEYXRhKTsKLSAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuZHJhd3NCYWNrZ3JvdW5kKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMu
aXNFZGl0YWJsZSkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShwYXJhbWV0ZXJzLnVuZGVybGF5Q29sb3IpKQpAQCAtMzU0LDYgKzM1MiwxMiBA
QCBPcHRpb25hbDxXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzPiBXZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZAogICAgIHBhcmFtZXRlcnMuY29udGVudFJ1bGVMaXN0
cyA9IFdURk1vdmUoKmNvbnRlbnRSdWxlTGlzdHMpOwogI2VuZGlmCiAKKyAgICBPcHRpb25hbDxP
cHRpb25hbDxXZWJDb3JlOjpDb2xvcj4+IGJhY2tncm91bmRDb2xvcjsKKyAgICBkZWNvZGVyID4+
IGJhY2tncm91bmRDb2xvcjsKKyAgICBpZiAoIWJhY2tncm91bmRDb2xvcikKKyAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICBwYXJhbWV0ZXJzLmJhY2tncm91bmRDb2xvciA9IFdURk1v
dmUoKmJhY2tncm91bmRDb2xvcik7CisKICAgICByZXR1cm4gV1RGTW92ZShwYXJhbWV0ZXJzKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cy5oCmluZGV4IGQxYjAzMDNkNzJmLi42ZmFlMzdlODQyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtNzMsNyArNzMsNiBAQCBz
dHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgRHJhd2luZ0FyZWFUeXBlIGRy
YXdpbmdBcmVhVHlwZTsKICAgICBXZWJQYWdlR3JvdXBEYXRhIHBhZ2VHcm91cERhdGE7CiAKLSAg
ICBib29sIGRyYXdzQmFja2dyb3VuZDsKICAgICBib29sIGlzRWRpdGFibGU7CiAKICAgICBXZWJD
b3JlOjpDb2xvciB1bmRlcmxheUNvbG9yOwpAQCAtMTkwLDYgKzE4OSw4IEBAIHN0cnVjdCBXZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQog
ICAgIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERh
dGE+PiBjb250ZW50UnVsZUxpc3RzOwogI2VuZGlmCisKKyAgICBPcHRpb25hbDxXZWJDb3JlOjpD
b2xvcj4gYmFja2dyb3VuZENvbG9yOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNXUEUudHh0IGIvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzV1BFLnR4dAppbmRleCA1YTA4ZTVkZmI4OC4uNDFiYzYxNDhmZWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU291cmNlc1dQRS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzV1BF
LnR4dApAQCAtMTcwLDYgKzE3MCw3IEBAIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXaW5kb3dQ
cm9wZXJ0aWVzLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvd3BlL0NvbXBvc2l0aW5nTWFu
YWdlclByb3h5LmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBs
LmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvd3BlL1Njcm9sbEdlc3R1cmVDb250cm9sbGVy
LmNwcCBAbm8tdW5pZnkKK1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdENvbG9yLmNwcCBAbm8tdW5p
ZnkKIFVJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFNjcmlwdERpYWxvZ1dQRS5jcHAgQG5vLXVuaWZ5
CiBVSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3QmFja2VuZC5jcHAgQG5vLXVuaWZ5CiBV
SVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3V1BFLmNwcCBAbm8tdW5pZnkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDI2ZDhjYTA1
MWJjLi40YjQwMDgyYWQ4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tCkBAIC02ODcsNyArNjg3LDggQEAgc3RhdGljIHZvaWQgdmFsaWRhdGUo
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbikKIAogICAgIF9wYWdlID0gW19j
b250ZW50VmlldyBwYWdlXTsKICAgICBbc2VsZiBfZGlzcGF0Y2hTZXREZXZpY2VPcmllbnRhdGlv
bjpkZXZpY2VPcmllbnRhdGlvbigpXTsKLSAgICBfcGFnZS0+c2V0RHJhd3NCYWNrZ3JvdW5kKHNl
bGYub3BhcXVlKTsKKyAgICBpZiAoIXNlbGYub3BhcXVlKQorICAgICAgICBfcGFnZS0+c2V0QmFj
a2dyb3VuZENvbG9yKFdlYkNvcmU6OkNvbG9yKFdlYkNvcmU6OkNvbG9yOjp0cmFuc3BhcmVudCkp
OwogCiAgICAgW19jb250ZW50VmlldyBsYXllcl0uYW5jaG9yUG9pbnQgPSBDR1BvaW50WmVybzsK
ICAgICBbX2NvbnRlbnRWaWV3IHNldEZyYW1lOmJvdW5kc107CkBAIC0yNTAyLDcgKzI1MDMsMTAg
QEAgc3RhdGljIFdlYkNvcmU6OkZsb2F0UG9pbnQgY29uc3RyYWluQ29udGVudE9mZnNldChXZWJD
b3JlOjpGbG9hdFBvaW50IGNvbnRlbnRPZmYKICAgICBpZiAoIV9wYWdlKQogICAgICAgICByZXR1
cm47CiAKLSAgICBfcGFnZS0+c2V0RHJhd3NCYWNrZ3JvdW5kKG9wYXF1ZSk7CisgICAgT3B0aW9u
YWw8V2ViQ29yZTo6Q29sb3I+IGJhY2tncm91bmRDb2xvcjsKKyAgICBpZiAoIW9wYXF1ZSkKKyAg
ICAgICAgYmFja2dyb3VuZENvbG9yID0gV2ViQ29yZTo6Q29sb3IoV2ViQ29yZTo6Q29sb3I6OnRy
YW5zcGFyZW50KQorICAgIF9wYWdlLT5zZXRCYWNrZ3JvdW5kQ29sb3IoYmFja2dyb3VuZENvbG9y
KTsKICAgICBbc2VsZiBfdXBkYXRlU2Nyb2xsVmlld0JhY2tncm91bmRdOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCmluZGV4
IGU0MTNmYmEzZTQ3Li5iZmQ5YjYwMzkxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKQEAgLTM5ODgsNzQgKzM5ODgsNiBAQCB2
b2lkIHdlYmtpdFdlYlZpZXdXZWJQcm9jZXNzVGVybWluYXRlZChXZWJLaXRXZWJWaWV3KiB3ZWJW
aWV3LCBXZWJLaXRXZWJQcm9jZXNzVAogICAgIGdfc2lnbmFsX2VtaXQod2ViVmlldywgc2lnbmFs
c1tXRUJfUFJPQ0VTU19URVJNSU5BVEVEXSwgMCwgcmVhc29uKTsKIH0KIAotI2lmIFBMQVRGT1JN
KEdUSykKLS8qKgotICogd2Via2l0X3dlYl92aWV3X3NldF9iYWNrZ3JvdW5kX2NvbG9yOgotICog
QHdlYl92aWV3OiBhICNXZWJLaXRXZWJWaWV3Ci0gKiBAcmdiYTogYSAjR2RrUkdCQQotICoKLSAq
IFNldHMgdGhlIGNvbG9yIHRoYXQgd2lsbCBiZSB1c2VkIHRvIGRyYXcgdGhlIEB3ZWJfdmlldyBi
YWNrZ3JvdW5kIGJlZm9yZQotICogdGhlIGFjdHVhbCBjb250ZW50cyBhcmUgcmVuZGVyZWQuIE5v
dGUgdGhhdCBpZiB0aGUgd2ViIHBhZ2UgbG9hZGVkIGluIEB3ZWJfdmlldwotICogc3BlY2lmaWVz
IGEgYmFja2dyb3VuZCBjb2xvciwgaXQgd2lsbCB0YWtlIHByZWNlZGVuY2Ugb3ZlciB0aGUgQHJn
YmEgY29sb3IuCi0gKiBCeSBkZWZhdWx0IHRoZSBAd2ViX3ZpZXcgYmFja2dyb3VuZCBjb2xvciBp
cyBvcGFxdWUgd2hpdGUuCi0gKiBOb3RlIHRoYXQgdGhlIHBhcmVudCB3aW5kb3cgbXVzdCBoYXZl
IGEgUkdCQSB2aXN1YWwgYW5kCi0gKiAjR3RrV2lkZ2V0OmFwcC1wYWludGFibGUgcHJvcGVydHkg
c2V0IHRvICVUUlVFIGZvciBiYWNrZ3JvdW5kcyBjb2xvcnMgdG8gd29yay4KLSAqCi0gKiA8aW5m
b3JtYWxleGFtcGxlPjxwcm9ncmFtbGlzdGluZz4KLSAqIHN0YXRpYyB2b2lkIGJyb3dzZXJfd2lu
ZG93X3NldF9iYWNrZ3JvdW5kX2NvbG9yIChCcm93c2VyV2luZG93ICp3aW5kb3csCi0gKiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR2RrUkdC
QSAqcmdiYSkKLSAqIHsKLSAqICAgICBXZWJLaXRXZWJWaWV3ICp3ZWJfdmlldzsKLSAqICAgICBH
ZGtTY3JlZW4gKnNjcmVlbiA9IGd0a193aW5kb3dfZ2V0X3NjcmVlbiAoR1RLX1dJTkRPVyAod2lu
ZG93KSk7Ci0gKiAgICAgR2RrVmlzdWFsICpyZ2JhX3Zpc3VhbCA9IGdka19zY3JlZW5fZ2V0X3Jn
YmFfdmlzdWFsIChzY3JlZW4pOwotICoKLSAqICAgICBpZiAoIXJnYmFfdmlzdWFsKQotICogICAg
ICAgICAgcmV0dXJuOwotICoKLSAqICAgICBndGtfd2lkZ2V0X3NldF92aXN1YWwgKEdUS19XSURH
RVQgKHdpbmRvdyksIHJnYmFfdmlzdWFsKTsKLSAqICAgICBndGtfd2lkZ2V0X3NldF9hcHBfcGFp
bnRhYmxlIChHVEtfV0lER0VUICh3aW5kb3cpLCBUUlVFKTsKLSAqCi0gKiAgICAgd2ViX3ZpZXcg
PSBicm93c2VyX3dpbmRvd19nZXRfd2ViX3ZpZXcgKHdpbmRvdyk7Ci0gKiAgICAgd2Via2l0X3dl
Yl92aWV3X3NldF9iYWNrZ3JvdW5kX2NvbG9yICh3ZWJfdmlldywgcmdiYSk7Ci0gKiB9Ci0gKiA8
L3Byb2dyYW1saXN0aW5nPjwvaW5mb3JtYWxleGFtcGxlPgotICoKLSAqIFNpbmNlOiAyLjgKLSAq
Lwotdm9pZCB3ZWJraXRfd2ViX3ZpZXdfc2V0X2JhY2tncm91bmRfY29sb3IoV2ViS2l0V2ViVmll
dyogd2ViVmlldywgY29uc3QgR2RrUkdCQSogcmdiYSkKLXsKLSAgICBnX3JldHVybl9pZl9mYWls
KFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSk7Ci0gICAgZ19yZXR1cm5faWZfZmFpbChyZ2Jh
KTsKLQotICAgIENvbG9yIGNvbG9yKCpyZ2JhKTsKLSAgICBhdXRvJiBwYWdlID0gZ2V0UGFnZSh3
ZWJWaWV3KTsKLSAgICBpZiAocGFnZS5iYWNrZ3JvdW5kQ29sb3IoKSA9PSBjb2xvcikKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgcGFnZS5zZXRCYWNrZ3JvdW5kQ29sb3IoY29sb3IpOwotICAgIHBh
Z2Uuc2V0RHJhd3NCYWNrZ3JvdW5kKGNvbG9yID09IENvbG9yOjp3aGl0ZSk7Ci19Ci0KLS8qKgot
ICogd2Via2l0X3dlYl92aWV3X2dldF9iYWNrZ3JvdW5kX2NvbG9yOgotICogQHdlYl92aWV3OiBh
ICNXZWJLaXRXZWJWaWV3Ci0gKiBAcmdiYTogKG91dCk6IGEgI0dka1JHQkEgdG8gZmlsbCBpbiB3
aXRoIHRoZSBiYWNrZ3JvdW5kIGNvbG9yCi0gKgotICogR2V0cyB0aGUgY29sb3IgdGhhdCBpcyB1
c2VkIHRvIGRyYXcgdGhlIEB3ZWJfdmlldyBiYWNrZ3JvdW5kIGJlZm9yZQotICogdGhlIGFjdHVh
bCBjb250ZW50cyBhcmUgcmVuZGVyZWQuCi0gKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUgYWxz
byB3ZWJraXRfd2ViX3ZpZXdfc2V0X2JhY2tncm91bmRfY29sb3IoKQotICoKLSAqIFNpbmNlOiAy
LjgKLSAqLwotdm9pZCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2JhY2tncm91bmRfY29sb3IoV2ViS2l0
V2ViVmlldyogd2ViVmlldywgR2RrUkdCQSogcmdiYSkKLXsKLSAgICBnX3JldHVybl9pZl9mYWls
KFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSk7Ci0gICAgZ19yZXR1cm5faWZfZmFpbChyZ2Jh
KTsKLQotICAgICpyZ2JhID0gZ2V0UGFnZSh3ZWJWaWV3KS5iYWNrZ3JvdW5kQ29sb3IoKTsKLX0K
LSNlbmRpZiAvLyBQTEFURk9STShHVEspCi0KIC8qCiAgKiB3ZWJraXRfd2ViX3ZpZXdfaXNfZWRp
dGFibGU6CiAgKiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZpZXcKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0d0ay5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdHdGsuY3BwCmluZGV4IGJjODIx
Nzk5MTI4Li43Nzk5ZmI4MWM3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJWaWV3R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdHdGsuY3BwCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVk
ZSAiV2ViS2l0U2NyaXB0RGlhbG9nSW1wbC5oIgogI2luY2x1ZGUgIldlYktpdFdlYlZpZXdCYXNl
UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYlZpZXdQcml2YXRlLmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9Db2xvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3RrVXRpbGl0aWVzLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9QbGF0Zm9ybURpc3BsYXkuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRm
b3JtU2NyZWVuLmg+CkBAIC0zNTksMyArMzYwLDY1IEBAIEd0a1dpZGdldCogd2Via2l0X3dlYl92
aWV3X25ld193aXRoX3VzZXJfY29udGVudF9tYW5hZ2VyKFdlYktpdFVzZXJDb250ZW50TWFuYWdl
CiAKICAgICByZXR1cm4gR1RLX1dJREdFVChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX1ZJ
RVcsICJ1c2VyLWNvbnRlbnQtbWFuYWdlciIsIHVzZXJDb250ZW50TWFuYWdlciwgbnVsbHB0cikp
OwogfQorCisvKioKKyAqIHdlYmtpdF93ZWJfdmlld19zZXRfYmFja2dyb3VuZF9jb2xvcjoKKyAq
IEB3ZWJfdmlldzogYSAjV2ViS2l0V2ViVmlldworICogQHJnYmE6IGEgI0dka1JHQkEKKyAqCisg
KiBTZXRzIHRoZSBjb2xvciB0aGF0IHdpbGwgYmUgdXNlZCB0byBkcmF3IHRoZSBAd2ViX3ZpZXcg
YmFja2dyb3VuZCBiZWZvcmUKKyAqIHRoZSBhY3R1YWwgY29udGVudHMgYXJlIHJlbmRlcmVkLiBO
b3RlIHRoYXQgaWYgdGhlIHdlYiBwYWdlIGxvYWRlZCBpbiBAd2ViX3ZpZXcKKyAqIHNwZWNpZmll
cyBhIGJhY2tncm91bmQgY29sb3IsIGl0IHdpbGwgdGFrZSBwcmVjZWRlbmNlIG92ZXIgdGhlIEBy
Z2JhIGNvbG9yLgorICogQnkgZGVmYXVsdCB0aGUgQHdlYl92aWV3IGJhY2tncm91bmQgY29sb3Ig
aXMgb3BhcXVlIHdoaXRlLgorICogTm90ZSB0aGF0IHRoZSBwYXJlbnQgd2luZG93IG11c3QgaGF2
ZSBhIFJHQkEgdmlzdWFsIGFuZAorICogI0d0a1dpZGdldDphcHAtcGFpbnRhYmxlIHByb3BlcnR5
IHNldCB0byAlVFJVRSBmb3IgYmFja2dyb3VuZHMgY29sb3JzIHRvIHdvcmsuCisgKgorICogPGlu
Zm9ybWFsZXhhbXBsZT48cHJvZ3JhbWxpc3Rpbmc+CisgKiBzdGF0aWMgdm9pZCBicm93c2VyX3dp
bmRvd19zZXRfYmFja2dyb3VuZF9jb2xvciAoQnJvd3NlcldpbmRvdyAqd2luZG93LAorICogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdka1JH
QkEgKnJnYmEpCisgKiB7CisgKiAgICAgV2ViS2l0V2ViVmlldyAqd2ViX3ZpZXc7CisgKiAgICAg
R2RrU2NyZWVuICpzY3JlZW4gPSBndGtfd2luZG93X2dldF9zY3JlZW4gKEdUS19XSU5ET1cgKHdp
bmRvdykpOworICogICAgIEdka1Zpc3VhbCAqcmdiYV92aXN1YWwgPSBnZGtfc2NyZWVuX2dldF9y
Z2JhX3Zpc3VhbCAoc2NyZWVuKTsKKyAqCisgKiAgICAgaWYgKCFyZ2JhX3Zpc3VhbCkKKyAqICAg
ICAgICAgIHJldHVybjsKKyAqCisgKiAgICAgZ3RrX3dpZGdldF9zZXRfdmlzdWFsIChHVEtfV0lE
R0VUICh3aW5kb3cpLCByZ2JhX3Zpc3VhbCk7CisgKiAgICAgZ3RrX3dpZGdldF9zZXRfYXBwX3Bh
aW50YWJsZSAoR1RLX1dJREdFVCAod2luZG93KSwgVFJVRSk7CisgKgorICogICAgIHdlYl92aWV3
ID0gYnJvd3Nlcl93aW5kb3dfZ2V0X3dlYl92aWV3ICh3aW5kb3cpOworICogICAgIHdlYmtpdF93
ZWJfdmlld19zZXRfYmFja2dyb3VuZF9jb2xvciAod2ViX3ZpZXcsIHJnYmEpOworICogfQorICog
PC9wcm9ncmFtbGlzdGluZz48L2luZm9ybWFsZXhhbXBsZT4KKyAqCisgKiBTaW5jZTogMi44Cisg
Ki8KK3ZvaWQgd2Via2l0X3dlYl92aWV3X3NldF9iYWNrZ3JvdW5kX2NvbG9yKFdlYktpdFdlYlZp
ZXcqIHdlYlZpZXcsIGNvbnN0IEdka1JHQkEqIHJnYmEpCit7CisgICAgZ19yZXR1cm5faWZfZmFp
bChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldykpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwocmdi
YSk7CisKKyAgICBhdXRvJiBwYWdlID0gKndlYmtpdFdlYlZpZXdCYXNlR2V0UGFnZShyZWludGVy
cHJldF9jYXN0PFdlYktpdFdlYlZpZXdCYXNlKj4od2ViVmlldykpOworICAgIHBhZ2Uuc2V0QmFj
a2dyb3VuZENvbG9yKFdlYkNvcmU6OkNvbG9yKCpyZ2JhKSk7Cit9CisKKy8qKgorICogd2Via2l0
X3dlYl92aWV3X2dldF9iYWNrZ3JvdW5kX2NvbG9yOgorICogQHdlYl92aWV3OiBhICNXZWJLaXRX
ZWJWaWV3CisgKiBAcmdiYTogKG91dCk6IGEgI0dka1JHQkEgdG8gZmlsbCBpbiB3aXRoIHRoZSBi
YWNrZ3JvdW5kIGNvbG9yCisgKgorICogR2V0cyB0aGUgY29sb3IgdGhhdCBpcyB1c2VkIHRvIGRy
YXcgdGhlIEB3ZWJfdmlldyBiYWNrZ3JvdW5kIGJlZm9yZQorICogdGhlIGFjdHVhbCBjb250ZW50
cyBhcmUgcmVuZGVyZWQuCisgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUgYWxzbyB3ZWJraXRf
d2ViX3ZpZXdfc2V0X2JhY2tncm91bmRfY29sb3IoKQorICoKKyAqIFNpbmNlOiAyLjgKKyAqLwor
dm9pZCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2JhY2tncm91bmRfY29sb3IoV2ViS2l0V2ViVmlldyog
d2ViVmlldywgR2RrUkdCQSogcmdiYSkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9J
U19XRUJfVklFVyh3ZWJWaWV3KSk7CisgICAgZ19yZXR1cm5faWZfZmFpbChyZ2JhKTsKKworICAg
IGF1dG8mIHBhZ2UgPSAqd2Via2l0V2ViVmlld0Jhc2VHZXRQYWdlKHJlaW50ZXJwcmV0X2Nhc3Q8
V2ViS2l0V2ViVmlld0Jhc2UqPih3ZWJWaWV3KSk7CisgICAgKnJnYmEgPSBwYWdlLmJhY2tncm91
bmRDb2xvcigpLnZhbHVlT3IoV2ViQ29yZTo6Q29sb3I6OndoaXRlKTsKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0Q29sb3IuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRDb2xvci5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmI4MThmOTVhMzA5Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRDb2xvci5jcHAKQEAgLTAsMCAr
MSwxMTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgSWdhbGlhIFMuTC4KKyAqCisgKiBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYktpdENvbG9yLmgiCisKKyNpbmNsdWRlICJXZWJLaXRD
b2xvclByaXZhdGUuaCIKKworLyoqCisgKiBTRUNUSU9OOiBXZWJLaXRDb2xvcgorICogQFNob3J0
X2Rlc2NyaXB0aW9uOiBBIGJveGVkIHR5cGUgcmVwcmVzZW50aW5nIGEgUkdCQSBjb2xvcgorICog
QFRpdGxlOiBXZWJLaXRDb2xvcgorICogQFNlZV9hbHNvOiAjV2ViS2l0V2ViVmlldy4KKyAqCisg
KiBBIFdlYktpdENvbG9yIGlzIGEgYm94ZWQgdHlwZSByZXByZXNlbnRpbmcgYSBSR0JBIGNvbG9y
LgorICoKKyAqIFNpbmNlOiAyLjI0CisgKi8KKworLyoqCisgKiB3ZWJraXRfY29sb3JfY29weToK
KyAqIEBjb2xvcjogYSAjV2ViS2l0Q29sb3IKKyAqCisgKiBNYWtlIGEgY29weSBvZiBAY29sb3Iu
CisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIGZ1bGwpOiBBIGNvcHkgb2YgcGFzc2VkIGluICNX
ZWJLaXRDb2xvci4KKyAqCisgKiBTaW5jZTogMi4yNAorICovCitXZWJLaXRDb2xvciogd2Via2l0
X2NvbG9yX2NvcHkoV2ViS2l0Q29sb3IqIGNvbG9yKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsKGNvbG9yLCBudWxscHRyKTsKKworICAgIFdlYktpdENvbG9yKiBjb3B5ID0gc3RhdGljX2Nh
c3Q8V2ViS2l0Q29sb3IqPihmYXN0WmVyb2VkTWFsbG9jKHNpemVvZihXZWJLaXRDb2xvcikpKTsK
KyAgICBjb3B5LT5yZWQgPSBjb2xvci0+cmVkOworICAgIGNvcHktPmdyZWVuID0gY29sb3ItPmdy
ZWVuOworICAgIGNvcHktPmJsdWUgPSBjb2xvci0+Ymx1ZTsKKyAgICBjb3B5LT5hbHBoYSA9IGNv
bG9yLT5hbHBoYTsKKyAgICByZXR1cm4gY29weTsKK30KKworLyoqCisgKiB3ZWJraXRfY29sb3Jf
ZnJlZToKKyAqIEBjb2xvcjogYSAjV2ViS2l0Q29sb3IKKyAqCisgKiBGcmVlIHRoZSAjV2ViS2l0
Q29sb3IuCisgKgorICogU2luY2U6IDIuMjQKKyAqLwordm9pZCB3ZWJraXRfY29sb3JfZnJlZShX
ZWJLaXRDb2xvciogY29sb3IpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChjb2xvcik7CisKKyAg
ICBmYXN0RnJlZShjb2xvcik7Cit9CisKK0dfREVGSU5FX0JPWEVEX1RZUEUoV2ViS2l0Q29sb3Is
IHdlYmtpdF9jb2xvciwgd2Via2l0X2NvbG9yX2NvcHksIHdlYmtpdF9jb2xvcl9mcmVlKTsKKwor
Y29uc3QgV2ViQ29yZTo6Q29sb3Igd2Via2l0Q29sb3JUb1dlYkNvcmVDb2xvcihXZWJLaXRDb2xv
ciogY29sb3IpCit7CisgICAgcmV0dXJuIFdlYkNvcmU6OkNvbG9yKHN0YXRpY19jYXN0PGZsb2F0
Pihjb2xvci0+cmVkKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNvbG9yLT5ncmVlbiksCisgICAgICAg
IHN0YXRpY19jYXN0PGZsb2F0Pihjb2xvci0+Ymx1ZSksIHN0YXRpY19jYXN0PGZsb2F0Pihjb2xv
ci0+YWxwaGEpKTsKK30KKwordm9pZCB3ZWJraXRDb2xvckZpbGxGcm9tV2ViQ29yZUNvbG9yKGNv
bnN0IFdlYkNvcmU6OkNvbG9yJiB3ZWJDb3JlQ29sb3IsIFdlYktpdENvbG9yKiBjb2xvcikKK3sK
KyAgICBSRUxFQVNFX0FTU0VSVCh3ZWJDb3JlQ29sb3IuaXNWYWxpZCgpKTsKKworICAgIGRvdWJs
ZSByLCBnLCBiLCBhOworICAgIHdlYkNvcmVDb2xvci5nZXRSR0JBKHIsIGcsIGIsIGEpOworICAg
IGNvbG9yLT5yZWQgPSByOworICAgIGNvbG9yLT5ncmVlbiA9IGc7CisgICAgY29sb3ItPmJsdWUg
PSBiOworICAgIGNvbG9yLT5hbHBoYSA9IGE7Cit9CisKKy8qKgorICogd2Via2l0X2NvbG9yX3Bh
cnNlOgorICogQGNvbG9yOiBhICNXZWJLaXRDb2xvciB0byBmaWxsIGluCisgKiBAY29sb3Jfc3Ry
aW5nOiBjb2xvciByZXByZXNlbnRhdGlvbiBhcyBjb2xvciBuaWNrbmFtZSBvciBIRVggc3RyaW5n
CisgKgorICogQ3JlYXRlIGEgbmV3ICNXZWJLaXRDb2xvciBmb3IgdGhlIGdpdmVuIEBjb2xvcl9z
dHJpbmcKKyAqIHJlcHJlc2VudGF0aW9uLiBUaGVyZSBhcmUgdHdvIHZhbGlkIHJlcHJlc2VudGF0
aW9uIHR5cGVzOiBzdGFuZGFyZCBjb2xvcgorICogbmFtZXMgKHNlZSBodHRwczovL2h0bWxjb2xv
cmNvZGVzLmNvbS9jb2xvci1uYW1lcy8gZm9yIGluc3RhbmNlKSBvciBIRVgKKyAqIHZhbHVlcy4K
KyAqCisgKiBSZXR1cm5zOiBhICNnYm9vbGVhbiBpbmRpY2F0aW5nIGlmIHRoZSBAY29sb3Igd2Fz
IGNvcnJlY3RseSBmaWxsZWQgaW4gb3Igbm90LgorICoKKyAqIFNpbmNlOiAyLjI0CisgKi8KK2di
b29sZWFuIHdlYmtpdF9jb2xvcl9wYXJzZShXZWJLaXRDb2xvciogY29sb3IsIGNvbnN0IGdjaGFy
KiBjb2xvclN0cmluZykKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChjb2xvciwgRkFMU0Up
OworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGNvbG9yU3RyaW5nLCBGQUxTRSk7CisKKyAgICBh
dXRvIHdlYkNvcmVDb2xvciA9IFdlYkNvcmU6OkNvbG9yKGNvbG9yU3RyaW5nKTsKKyAgICBpZiAo
IXdlYkNvcmVDb2xvci5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiBGQUxTRTsKKworICAgIHdl
YmtpdENvbG9yRmlsbEZyb21XZWJDb3JlQ29sb3Iod2ViQ29yZUNvbG9yLCBjb2xvcik7CisgICAg
cmV0dXJuIFRSVUU7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
d3BlL1dlYktpdENvbG9yLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktp
dENvbG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmYyNmQwOTE2
MDY4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9X
ZWJLaXRDb2xvci5oCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkg
SWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAq
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCisgKi8KKworI2lmICFkZWZpbmVkKF9fV0VCS0lUX0hfSU5TSURFX18pICYmICFkZWZpbmVk
KFdFQktJVDJfQ09NUElMQVRJT04pCisjZXJyb3IgIk9ubHkgPHdwZS93ZWJraXQuaD4gY2FuIGJl
IGluY2x1ZGVkIGRpcmVjdGx5LiIKKyNlbmRpZgorCisjaWZuZGVmIFdlYktpdENvbG9yX2gKKyNk
ZWZpbmUgV2ViS2l0Q29sb3JfaAorCisjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KKyNpbmNsdWRl
IDx3cGUvV2ViS2l0RGVmaW5lcy5oPgorCitHX0JFR0lOX0RFQ0xTCisKKy8qKgorICogV2ViS2l0
Q29sb3I6CisgKiBAcmVkOiBSZWQgY2hhbm5lbCwgYmV0d2VlbiAwLjAgYW5kIDEuMCBpbmNsdXNp
dmUKKyAqIEBncmVlbjogR3JlZW4gY2hhbm5lbCwgYmV0d2VlbiAwLjAgYW5kIDEuMCBpbmNsdXNp
dmUKKyAqIEBibHVlOiBCbHVlIGNoYW5uZWwsIGJldHdlZW4gMC4wIGFuZCAxLjAgaW5jbHVzaXZl
CisgKiBAYWxwaGE6IEFscGhhIGNoYW5uZWwsIGJldHdlZW4gMC4wIGFuZCAxLjAgaW5jbHVzaXZl
CisgKgorICogQSBXZWJLaXRDb2xvciBpcyBhIGJveGVkIHR5cGUgcmVwcmVzZW50aW5nIGEgUkdC
QSBjb2xvci4KKyAqCisgKiBTaW5jZTogMi4yNAorICovCitzdHJ1Y3QgX1dlYktpdENvbG9yIHsK
KyAgICBnZG91YmxlIHJlZDsKKyAgICBnZG91YmxlIGdyZWVuOworICAgIGdkb3VibGUgYmx1ZTsK
KyAgICBnZG91YmxlIGFscGhhOworfTsKKwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdENvbG9yIFdl
YktpdENvbG9yOworCisjZGVmaW5lIFdFQktJVF9UWVBFX0NPTE9SICh3ZWJraXRfY29sb3JfZ2V0
X3R5cGUoKSkKKworV0VCS0lUX0FQSSBHVHlwZQord2Via2l0X2NvbG9yX2dldF90eXBlICAgICAo
dm9pZCk7CisKK1dFQktJVF9BUEkgZ2Jvb2xlYW4KK3dlYmtpdF9jb2xvcl9wYXJzZSAgICAgICAg
KFdlYktpdENvbG9yICpjb2xvciwgY29uc3QgZ2NoYXIgKmNvbG9yX3N0cmluZyk7CisKK0dfRU5E
X0RFQ0xTCisKKyNlbmRpZiAvKiBXZWJLaXRDb2xvcl9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdENvbG9yUHJpdmF0ZS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRDb2xvclByaXZhdGUuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMjM5YTExNjAzNDEKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdENvbG9yUHJpdmF0ZS5oCkBA
IC0wLDAgKzEsMjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgSWdhbGlhIFMuTC4KKyAq
CisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisg
KiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlICJDb2xvci5oIgorI2luY2x1ZGUgIldlYktpdENvbG9yLmgi
CisKK3ZvaWQgd2Via2l0Q29sb3JGaWxsRnJvbVdlYkNvcmVDb2xvcihjb25zdCBXZWJDb3JlOjpD
b2xvciYsIFdlYktpdENvbG9yKik7Citjb25zdCBXZWJDb3JlOjpDb2xvciB3ZWJraXRDb2xvclRv
V2ViQ29yZUNvbG9yKFdlYktpdENvbG9yKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS93cGUvV2ViS2l0V2ViVmlldy5oCmluZGV4IDQxMDJhNzUyNmQ2Li4yYTRhNjIwNDIzNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3LmgK
QEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlIDx3cGUvV2ViS2l0V2ViQ29udGV4dC5oPgogI2lu
Y2x1ZGUgPHdwZS9XZWJLaXRXZWJSZXNvdXJjZS5oPgogI2luY2x1ZGUgPHdwZS9XZWJLaXRXZWJW
aWV3QmFja2VuZC5oPgorI2luY2x1ZGUgPHdwZS9XZWJLaXRDb2xvci5oPgogI2luY2x1ZGUgPHdw
ZS9XZWJLaXRXZWJWaWV3U2Vzc2lvblN0YXRlLmg+CiAjaW5jbHVkZSA8d3BlL1dlYktpdFdpbmRv
d1Byb3BlcnRpZXMuaD4KIApAQCAtNTE3LDYgKzUxOCwxMyBAQCBXRUJLSVRfQVBJIHZvaWQKIHdl
YmtpdF93ZWJfdmlld19yZW1vdmVfZnJhbWVfZGlzcGxheWVkX2NhbGxiYWNrICAgICAgKFdlYktp
dFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCAgICAgICAgICAgICAgICAgICAg
ICAgIGlkKTsKIAorV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfd2ViX3ZpZXdfc2V0X2JhY2tncm91
bmRfY29sb3IgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndl
Yl92aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgV2ViS2l0Q29sb3IgICAgICAgICAgICAgICAgICpjb2xvcik7CitXRUJLSVRfQVBJIHZv
aWQKK3dlYmtpdF93ZWJfdmlld19nZXRfYmFja2dyb3VuZF9jb2xvciAgICAgICAgICAgICAgICAg
KFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRDb2xvciAgICAgICAg
ICAgICAgICAgKmNvbG9yKTsKKwogR19FTkRfREVDTFMKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXdXUEUuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3V1BFLmNwcAppbmRleCBh
MzQ5NWU4NTJlMS4uOWU1Y2U1YzM4OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS93cGUvV2ViS2l0V2ViVmlld1dQRS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3V1BFLmNwcApAQCAtMjAsNiArMjAsNyBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYktpdFdlYlZpZXcuaCIKIAorI2luY2x1ZGUg
IldlYktpdENvbG9yUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYlZpZXdQcml2YXRlLmgi
CiAKIGdib29sZWFuIHdlYmtpdFdlYlZpZXdBdXRoZW50aWNhdGUoV2ViS2l0V2ViVmlldyosIFdl
YktpdEF1dGhlbnRpY2F0aW9uUmVxdWVzdCopCkBAIC0xNzgsMyArMTc5LDQ0IEBAIFdlYktpdFdl
YlZpZXcqIHdlYmtpdF93ZWJfdmlld19uZXdfd2l0aF91c2VyX2NvbnRlbnRfbWFuYWdlcihXZWJL
aXRXZWJWaWV3QmFja2VuCiAgICAgICAgICJ1c2VyLWNvbnRlbnQtbWFuYWdlciIsIHVzZXJDb250
ZW50TWFuYWdlciwKICAgICAgICAgbnVsbHB0cikpOwogfQorCisvKioKKyAqIHdlYmtpdF93ZWJf
dmlld19zZXRfYmFja2dyb3VuZF9jb2xvcjoKKyAqIEB3ZWJfdmlldzogYSAjV2ViS2l0V2ViVmll
dworICogQGJhY2tncm91bmRDb2xvcjogYSAjV2ViS2l0Q29sb3IKKyAqCisgKiBTZXRzIHRoZSBj
b2xvciB0aGF0IHdpbGwgYmUgdXNlZCB0byBkcmF3IHRoZSBAd2ViX3ZpZXcgYmFja2dyb3VuZCBi
ZWZvcmUKKyAqIHRoZSBhY3R1YWwgY29udGVudHMgYXJlIHJlbmRlcmVkLiBOb3RlIHRoYXQgaWYg
dGhlIHdlYiBwYWdlIGxvYWRlZCBpbiBAd2ViX3ZpZXcKKyAqIHNwZWNpZmllcyBhIGJhY2tncm91
bmQgY29sb3IsIGl0IHdpbGwgdGFrZSBwcmVjZWRlbmNlIG92ZXIgdGhlIGJhY2tncm91bmQgY29s
b3IuCisgKiBCeSBkZWZhdWx0IHRoZSBAd2ViX3ZpZXcgYmFja2dyb3VuZCBjb2xvciBpcyBvcGFx
dWUgd2hpdGUuCisgKgorICogU2luY2U6IDIuMjQKKyAqLwordm9pZCB3ZWJraXRfd2ViX3ZpZXdf
c2V0X2JhY2tncm91bmRfY29sb3IoV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0Q29sb3Iq
IGJhY2tncm91bmRDb2xvcikKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJf
VklFVyh3ZWJWaWV3KSk7CisgICAgZ19yZXR1cm5faWZfZmFpbChiYWNrZ3JvdW5kQ29sb3IpOwor
CisgICAgYXV0byYgcGFnZSA9IHdlYmtpdFdlYlZpZXdHZXRQYWdlKHdlYlZpZXcpOworICAgIHBh
Z2Uuc2V0QmFja2dyb3VuZENvbG9yKHdlYmtpdENvbG9yVG9XZWJDb3JlQ29sb3IoYmFja2dyb3Vu
ZENvbG9yKSk7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl92aWV3X2dldF9iYWNrZ3JvdW5kX2Nv
bG9yOgorICogQHdlYl92aWV3OiBhICNXZWJLaXRXZWJWaWV3CisgKiBAcmdiYTogKG91dCk6IGEg
I1dlYktpdENvbG9yIHRvIGZpbGwgaW4gd2l0aCB0aGUgYmFja2dyb3VuZCBjb2xvcgorICoKKyAq
IEdldHMgdGhlIGNvbG9yIHRoYXQgaXMgdXNlZCB0byBkcmF3IHRoZSBAd2ViX3ZpZXcgYmFja2dy
b3VuZCBiZWZvcmUgdGhlCisgKiBhY3R1YWwgY29udGVudHMgYXJlIHJlbmRlcmVkLiBGb3IgbW9y
ZSBpbmZvcm1hdGlvbiBzZWUgYWxzbworICogd2Via2l0X3dlYl92aWV3X3NldF9iYWNrZ3JvdW5k
X2NvbG9yKCkuCisgKgorICogU2luY2U6IDIuMjQKKyAqLwordm9pZCB3ZWJraXRfd2ViX3ZpZXdf
Z2V0X2JhY2tncm91bmRfY29sb3IoV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0Q29sb3Iq
IGNvbG9yKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZp
ZXcpKTsKKyAgICBhdXRvJiBwYWdlID0gd2Via2l0V2ViVmlld0dldFBhZ2Uod2ViVmlldyk7CisK
KyAgICBhdXRvJiB3ZWJDb3JlQ29sb3IgPSBwYWdlLmJhY2tncm91bmRDb2xvcigpOworICAgIHdl
YmtpdENvbG9yRmlsbEZyb21XZWJDb3JlQ29sb3Iod2ViQ29yZUNvbG9yLnZhbHVlT3IoV2ViQ29y
ZTo6Q29sb3I6OndoaXRlKSwgY29sb3IpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dwZS0wLjEtc2VjdGlvbnMudHh0IGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dwZS0wLjEtc2VjdGlvbnMudHh0CmluZGV4IGE1ZWNm
ZTQ2MzdmLi5lNjVhNzgxODZkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL3dwZS9kb2NzL3dwZS0wLjEtc2VjdGlvbnMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS93cGUvZG9jcy93cGUtMC4xLXNlY3Rpb25zLnR4dApAQCAtMjA3LDYgKzIwNyw4
IEBAIHdlYmtpdF93ZWJfdmlld19yZXN0b3JlX3Nlc3Npb25fc3RhdGUKIHdlYmtpdF93ZWJfdmll
d19nZXRfbWFpbl9yZXNvdXJjZQogd2Via2l0X3dlYl92aWV3X2FkZF9mcmFtZV9kaXNwbGF5ZWRf
Y2FsbGJhY2sKIHdlYmtpdF93ZWJfdmlld19yZW1vdmVfZnJhbWVfZGlzcGxheWVkX2NhbGxiYWNr
Cit3ZWJraXRfd2ViX3ZpZXdfZ2V0X2JhY2tncm91bmRfY29sb3IKK3dlYmtpdF93ZWJfdmlld19z
ZXRfYmFja2dyb3VuZF9jb2xvcgogCiA8U1VCU0VDVElPTiBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0
PgogV2ViS2l0SmF2YXNjcmlwdFJlc3VsdApAQCAtMjY3LDYgKzI2OSwxNiBAQCB3ZWJraXRfd2Vi
X3ZpZXdfYmFja2VuZF9uZXcKIHdlYmtpdF93ZWJfdmlld19iYWNrZW5kX2dldF90eXBlCiA8L1NF
Q1RJT04+CiAKKzxTRUNUSU9OPgorPEZJTEU+V2ViS2l0Q29sb3I8L0ZJTEU+CitXRUJLSVRfVFlQ
RV9DT0xPUgorV2ViS2l0Q29sb3IKK3dlYmtpdF9jb2xvcl9wYXJzZQorCis8U1VCU0VDVElPTiBQ
cml2YXRlPgord2Via2l0X2NvbG9yX2dldF90eXBlCis8L1NFQ1RJT04+CisKIDxTRUNUSU9OPgog
PEZJTEU+V2ViS2l0QXV0aGVudGljYXRpb25SZXF1ZXN0PC9GSUxFPgogV2ViS2l0QXV0aGVudGlj
YXRpb25SZXF1ZXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJWaWV3SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBs
Lm1tCmluZGV4IGExOWYzNjljNjA4Li43ZGE3MzU4Y2VjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTE0NTQsNyArMTQ1NCwxMCBAQCB2b2lk
IFdlYlZpZXdJbXBsOjpkaWRSZWxhdW5jaFByb2Nlc3MoKQogCiB2b2lkIFdlYlZpZXdJbXBsOjpz
ZXREcmF3c0JhY2tncm91bmQoYm9vbCBkcmF3c0JhY2tncm91bmQpCiB7Ci0gICAgbV9wYWdlLT5z
ZXREcmF3c0JhY2tncm91bmQoZHJhd3NCYWNrZ3JvdW5kKTsKKyAgICBPcHRpb25hbDxXZWJDb3Jl
OjpDb2xvcj4gYmFja2dyb3VuZENvbG9yOworICAgIGlmICghZHJhd3NCYWNrZ3JvdW5kKQorICAg
ICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBXZWJDb3JlOjpDb2xvcihXZWJDb3JlOjpDb2xvcjo6dHJh
bnNwYXJlbnQpOworICAgIG1fcGFnZS0+c2V0QmFja2dyb3VuZENvbG9yKGJhY2tncm91bmRDb2xv
cik7CiAKICAgICAvLyBNYWtlIHN1cmUgdXBkYXRlTGF5ZXIgZ2V0cyBjYWxsZWQgb24gdGhlIHdl
YiB2aWV3LgogICAgIFttX3ZpZXcgc2V0TmVlZHNEaXNwbGF5OllFU107CkBAIC0xNDYyLDcgKzE0
NjUsOCBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXREcmF3c0JhY2tncm91bmQoYm9vbCBkcmF3c0Jh
Y2tncm91bmQpCiAKIGJvb2wgV2ViVmlld0ltcGw6OmRyYXdzQmFja2dyb3VuZCgpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIG1fcGFnZS0+ZHJhd3NCYWNrZ3JvdW5kKCk7CisgICAgYXV0byYgYmFja2dy
b3VuZENvbG9yID0gbV9wYWdlLT5iYWNrZ3JvdW5kQ29sb3IoKTsKKyAgICByZXR1cm4gIWJhY2tn
cm91bmRDb2xvciB8fCBiYWNrZ3JvdW5kQ29sb3IudmFsdWUoKS5pc1Zpc2libGUoKTsKIH0KIAog
dm9pZCBXZWJWaWV3SW1wbDo6c2V0QmFja2dyb3VuZENvbG9yKE5TQ29sb3IgKmJhY2tncm91bmRD
b2xvcikKQEAgLTE0ODYsNyArMTQ5MCw3IEBAIE5TQ29sb3IgKldlYlZpZXdJbXBsOjpiYWNrZ3Jv
dW5kQ29sb3IoKSBjb25zdAogCiBib29sIFdlYlZpZXdJbXBsOjppc09wYXF1ZSgpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIG1fcGFnZS0+ZHJhd3NCYWNrZ3JvdW5kKCk7CisgICAgcmV0dXJuIGRyYXdz
QmFja2dyb3VuZCgpOwogfQogCiB2b2lkIFdlYlZpZXdJbXBsOjpzZXRTaG91bGRTdXBwcmVzc0Zp
cnN0UmVzcG9uZGVyQ2hhbmdlcyhib29sIHNob3VsZFN1cHByZXNzKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggNzc5MjY0ZGU3MmEuLjExNmI5MGRkM2VmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTQyNyw3ICs0Mjcs
NiBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBX
ZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIHVpbgogICAgICwgbV9jcHVMaW1pdChtX2NvbmZpZ3Vy
YXRpb24tPmNwdUxpbWl0KCkpCiAgICAgLCBtX2JhY2tGb3J3YXJkTGlzdChXZWJCYWNrRm9yd2Fy
ZExpc3Q6OmNyZWF0ZSgqdGhpcykpCiAgICAgLCBtX3dhaXRzRm9yUGFpbnRBZnRlclZpZXdEaWRN
b3ZlVG9XaW5kb3cobV9jb25maWd1cmF0aW9uLT53YWl0c0ZvclBhaW50QWZ0ZXJWaWV3RGlkTW92
ZVRvV2luZG93KCkpCi0gICAgLCBtX2RyYXdzQmFja2dyb3VuZChtX2NvbmZpZ3VyYXRpb24tPmRy
YXdzQmFja2dyb3VuZCgpKQogICAgICwgbV9wYWdlSUQocGFnZUlEKQogICAgICwgbV9jb250cm9s
bGVkQnlBdXRvbWF0aW9uKG1fY29uZmlndXJhdGlvbi0+aXNDb250cm9sbGVkQnlBdXRvbWF0aW9u
KCkpCiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC00NDYsNiArNDQ1LDkgQEAgV2ViUGFnZVByb3h5
OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBw
cm9jZXNzLCB1aW4KIHsKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJjb25z
dHJ1Y3Rvcjogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9j
ZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CiAKKyAgICBpZiAoIW1fY29uZmlndXJhdGlvbi0+
ZHJhd3NCYWNrZ3JvdW5kKCkpCisgICAgICAgIG1fYmFja2dyb3VuZENvbG9yID0gQ29sb3IoQ29s
b3I6OnRyYW5zcGFyZW50KTsKKwogICAgIG1fd2ViUHJvY2Vzc0xpZmV0aW1lVHJhY2tlci5hZGRP
YnNlcnZlcihtX3Zpc2l0ZWRMaW5rU3RvcmUpOwogICAgIG1fd2ViUHJvY2Vzc0xpZmV0aW1lVHJh
Y2tlci5hZGRPYnNlcnZlcihtX3dlYnNpdGVEYXRhU3RvcmUpOwogCkBAIC0xNTM5LDE1ICsxNTQx
LDE0IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjcmVhdGVJbnNwZWN0b3JUYXJnZXRzKCkKICAgICBt
X2luc3BlY3RvckNvbnRyb2xsZXItPmNyZWF0ZUluc3BlY3RvclRhcmdldChwYWdlVGFyZ2V0SWQs
IEluc3BlY3Rvcjo6SW5zcGVjdG9yVGFyZ2V0VHlwZTo6UGFnZSk7CiB9CiAKLXZvaWQgV2ViUGFn
ZVByb3h5OjpzZXREcmF3c0JhY2tncm91bmQoYm9vbCBkcmF3c0JhY2tncm91bmQpCit2b2lkIFdl
YlBhZ2VQcm94eTo6c2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IE9wdGlvbmFsPENvbG9yPiYgY29s
b3IpCiB7Ci0gICAgaWYgKG1fZHJhd3NCYWNrZ3JvdW5kID09IGRyYXdzQmFja2dyb3VuZCkKKyAg
ICBpZiAobV9iYWNrZ3JvdW5kQ29sb3IgPT0gY29sb3IpCiAgICAgICAgIHJldHVybjsKIAotICAg
IG1fZHJhd3NCYWNrZ3JvdW5kID0gZHJhd3NCYWNrZ3JvdW5kOwotCisgICAgbV9iYWNrZ3JvdW5k
Q29sb3IgPSBjb2xvcjsKICAgICBpZiAoaXNWYWxpZCgpKQotICAgICAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldERyYXdzQmFja2dyb3VuZChkcmF3c0JhY2tncm91bmQp
LCBtX3BhZ2VJRCk7CisgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U2V0QmFja2dyb3VuZENvbG9yKGNvbG9yKSwgbV9wYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6c2V0VG9wQ29udGVudEluc2V0KGZsb2F0IGNvbnRlbnRJbnNldCkKQEAgLTY3ODgsNyAr
Njc4OSw2IEBAIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgV2ViUGFnZVByb3h5OjpjcmVhdGlv
blBhcmFtZXRlcnMoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jCiAgICAgcGFyYW1ldGVycy5kcmF3aW5n
QXJlYVR5cGUgPSBtX2RyYXdpbmdBcmVhLT50eXBlKCk7CiAgICAgcGFyYW1ldGVycy5zdG9yZSA9
IHByZWZlcmVuY2VzU3RvcmUoKTsKICAgICBwYXJhbWV0ZXJzLnBhZ2VHcm91cERhdGEgPSBtX3Bh
Z2VHcm91cC0+ZGF0YSgpOwotICAgIHBhcmFtZXRlcnMuZHJhd3NCYWNrZ3JvdW5kID0gbV9kcmF3
c0JhY2tncm91bmQ7CiAgICAgcGFyYW1ldGVycy5pc0VkaXRhYmxlID0gbV9pc0VkaXRhYmxlOwog
ICAgIHBhcmFtZXRlcnMudW5kZXJsYXlDb2xvciA9IG1fdW5kZXJsYXlDb2xvcjsKICAgICBwYXJh
bWV0ZXJzLnVzZUZpeGVkTGF5b3V0ID0gbV91c2VGaXhlZExheW91dDsKQEAgLTY4ODgsNiArNjg4
OCw3IEBAIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgV2ViUGFnZVByb3h5OjpjcmVhdGlvblBh
cmFtZXRlcnMoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jCiAjZW5kaWYKIAogICAgIHBhcmFtZXRlcnMu
bmVlZHNGb250QXR0cmlidXRlcyA9IG1fbmVlZHNGb250QXR0cmlidXRlczsKKyAgICBwYXJhbWV0
ZXJzLmJhY2tncm91bmRDb2xvciA9IG1fYmFja2dyb3VuZENvbG9yOwogCiAgICAgcHJvY2Vzcy5h
ZGRXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eShtX3VzZXJDb250ZW50Q29udHJvbGxlciwg
cGFyYW1ldGVycyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXgg
ZDM4NGNkN2MwMzQuLmMyZjBmZGZhMzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaApAQCAtNTIwLDkgKzUyMCw2IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgY2FuU2hvd01J
TUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwogCi0gICAgYm9vbCBkcmF3c0JhY2tncm91
bmQoKSBjb25zdCB7IHJldHVybiBtX2RyYXdzQmFja2dyb3VuZDsgfQotICAgIHZvaWQgc2V0RHJh
d3NCYWNrZ3JvdW5kKGJvb2wpOwotCiAgICAgU3RyaW5nIGN1cnJlbnRVUkwoKSBjb25zdDsKIAog
ICAgIGZsb2F0IHRvcENvbnRlbnRJbnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fdG9wQ29udGVudElu
c2V0OyB9CkBAIC03NjQsMTEgKzc2MSwxMiBAQCBwdWJsaWM6CiAKICNpZiBQTEFURk9STShHVEsp
CiAgICAgUGxhdGZvcm1XaWRnZXQgdmlld1dpZGdldCgpOwotICAgIGNvbnN0IFdlYkNvcmU6OkNv
bG9yJiBiYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91bmRDb2xvcjsg
fQotICAgIHZvaWQgc2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xv
cikgeyBtX2JhY2tncm91bmRDb2xvciA9IGNvbG9yOyB9CiAgICAgYm9vbCBtYWtlR0xDb250ZXh0
Q3VycmVudCgpOwogI2VuZGlmCiAKKyAgICBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpDb2xvcj4m
IGJhY2tncm91bmRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZENvbG9yOyB9Cisg
ICAgdm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6Q29sb3I+
Jik7CisKICNpZiBQTEFURk9STShXSU4pCiAgICAgUGxhdGZvcm1XaWRnZXQgdmlld1dpZGdldCgp
OwogI2VuZGlmCkBAIC0yMTA4LDggKzIxMDYsNiBAQCBwcml2YXRlOgogCiAgICAgTGF5ZXJIb3N0
aW5nTW9kZSBtX2xheWVySG9zdGluZ01vZGUgeyBMYXllckhvc3RpbmdNb2RlOjpJblByb2Nlc3Mg
fTsKIAotICAgIGJvb2wgbV9kcmF3c0JhY2tncm91bmQgeyB0cnVlIH07Ci0KICAgICBXZWJDb3Jl
OjpDb2xvciBtX3VuZGVybGF5Q29sb3I7CiAgICAgV2ViQ29yZTo6Q29sb3IgbV9wYWdlRXh0ZW5k
ZWRCYWNrZ3JvdW5kQ29sb3I7CiAKQEAgLTIyMDgsOSArMjIwNCwxMCBAQCBwcml2YXRlOgogCiAj
aWYgUExBVEZPUk0oR1RLKQogICAgIFN0cmluZyBtX2FjY2Vzc2liaWxpdHlQbHVnSUQ7Ci0gICAg
V2ViQ29yZTo6Q29sb3IgbV9iYWNrZ3JvdW5kQ29sb3IgeyBXZWJDb3JlOjpDb2xvcjo6d2hpdGUg
fTsKICNlbmRpZgogCisgICAgT3B0aW9uYWw8V2ViQ29yZTo6Q29sb3I+IG1fYmFja2dyb3VuZENv
bG9yOworCiAgICAgdW5zaWduZWQgbV9wZW5kaW5nTGVhcm5Pcklnbm9yZVdvcmRNZXNzYWdlQ291
bnQgeyAwIH07CiAKICAgICBib29sIG1fbWFpbkZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVy
IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2NhaXJvL0Jh
Y2tpbmdTdG9yZUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2NhaXJvL0JhY2tp
bmdTdG9yZUNhaXJvLmNwcAppbmRleCBlMTExYzJiMzk4Ni4uMTgyOTRkMzdmZTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2NhaXJvL0JhY2tpbmdTdG9yZUNhaXJvLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9jYWlyby9CYWNraW5nU3RvcmVDYWlyby5jcHAK
QEAgLTM3LDEwICszNyw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZWZQdHJDYWlyby5oPgogI2lu
Y2x1ZGUgPGNhaXJvLmg+CiAKLSNpZiBQTEFURk9STShHVEspCi0jaW5jbHVkZSA8Z3RrL2d0ay5o
PgotI2VuZGlmCi0KICNpZiBQTEFURk9STShHVEspICYmIFBMQVRGT1JNKFgxMSkgJiYgZGVmaW5l
ZChHREtfV0lORE9XSU5HX1gxMSkKICNpbmNsdWRlIDxXZWJDb3JlL0JhY2tpbmdTdG9yZUJhY2tl
bmRDYWlyb1gxMS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1EaXNwbGF5WDExLmg+CkBA
IC05NywyNCArOTMsNiBAQCB2b2lkIEJhY2tpbmdTdG9yZTo6aW5jb3Jwb3JhdGVVcGRhdGUoU2hh
cmVhYmxlQml0bWFwKiBiaXRtYXAsIGNvbnN0IFVwZGF0ZUluZm8mCiAgICAgZm9yIChjb25zdCBh
dXRvJiB1cGRhdGVSZWN0IDogdXBkYXRlSW5mby51cGRhdGVSZWN0cykgewogICAgICAgICBJbnRS
ZWN0IHNyY1JlY3QgPSB1cGRhdGVSZWN0OwogICAgICAgICBzcmNSZWN0Lm1vdmUoLXVwZGF0ZVJl
Y3RMb2NhdGlvbi54KCksIC11cGRhdGVSZWN0TG9jYXRpb24ueSgpKTsKLSNpZiBQTEFURk9STShH
VEspCi0gICAgICAgIGlmICghbV93ZWJQYWdlUHJveHkuZHJhd3NCYWNrZ3JvdW5kKCkpIHsKLSAg
ICAgICAgICAgIGNvbnN0IFdlYkNvcmU6OkNvbG9yIGNvbG9yID0gbV93ZWJQYWdlUHJveHkuYmFj
a2dyb3VuZENvbG9yKCk7Ci0gICAgICAgICAgICBpZiAoY29sb3IuaXNWaXNpYmxlKCkpIHsKLSAg
ICAgICAgICAgICAgICAvLyBXaGVuIHRoZSBhcHBsaWNhdGlvbiBzZXRzIHRoZSBiYWNrZ3JvdW5k
IGNvbG9yIHRocm91Z2ggbV93ZWJQYWdlUHJveHkuYmFja2dyb3VuZENvbG9yKCksIHdlIHVwZGF0
ZSB0aGUgc3VyZmFjZSBpbiAyIHN0ZXBzLgotICAgICAgICAgICAgICAgIC8vICAgMS4gRmlsbCB0
aGUgc3VyZmFjZSBieSBtX3dlYlBhZ2VQcm94eS5iYWNrZ3JvdW5kQ29sb3IoKS4KLSAgICAgICAg
ICAgICAgICAvLyAgIDIuIENvbXBvc2l0ZSB3ZWJwYWdlJ3MgYml0bWFwIHdoaWNoIGhhcyBhIHRy
YW5zcGFyZW50IGJhY2tncm91bmQuCi0gICAgICAgICAgICAgICAgLy8gSW4gc3RlcCAxLCB3ZSB1
c2UgQ29tcG9zaXRlQ29weSBhcyBtX3dlYlBhZ2VQcm94eS5iYWNrZ3JvdW5kQ29sb3IoKSBtYXkg
bm90IGJlIG9wYXF1ZS4KLSAgICAgICAgICAgICAgICAvLyBPbiB0aGUgb3RoZXIgaGFuZCwgaW4g
c3RlcCAyLCBiaXRtYXAgc2hvdWxkIGJlIGNvbXBvc2l0ZWQgYnkgQ29tcG9zaXRlU291cmNlT3Zl
cgotICAgICAgICAgICAgICAgIC8vIGJlY2F1c2UgaXQgc2hvdWxkIGJlIGJsZW5kZWQgd2l0aCBt
X3dlYlBhZ2VQcm94eS5iYWNrZ3JvdW5kQ29sb3IoKS4KLSAgICAgICAgICAgICAgICBncmFwaGlj
c0NvbnRleHQuZmlsbFJlY3Qoc3JjUmVjdCwgY29sb3IpOwotICAgICAgICAgICAgICAgIGdyYXBo
aWNzQ29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oV2ViQ29yZTo6Q29tcG9zaXRlU291cmNl
T3Zlcik7Ci0gICAgICAgICAgICAgICAgYml0bWFwLT5wYWludChncmFwaGljc0NvbnRleHQsIGRl
dmljZVNjYWxlRmFjdG9yKCksIHVwZGF0ZVJlY3QubG9jYXRpb24oKSwgc3JjUmVjdCk7Ci0gICAg
ICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihXZWJDb3Jl
OjpDb21wb3NpdGVDb3B5KTsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotI2VuZGlmCiAgICAgICAgIGJpdG1hcC0+cGFpbnQoZ3JhcGhpY3NDb250
ZXh0LCBkZXZpY2VTY2FsZUZhY3RvcigpLCB1cGRhdGVSZWN0LmxvY2F0aW9uKCksIHNyY1JlY3Qp
OwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9BY2Nl
bGVyYXRlZEJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQWNj
ZWxlcmF0ZWRCYWNraW5nU3RvcmUuY3BwCmluZGV4IGVjZjM0NWY4MGY4Li5lYjYyZDZkNjU0ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2lu
Z1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRC
YWNraW5nU3RvcmUuY3BwCkBAIC01OSwyNiArNTksNCBAQCBBY2NlbGVyYXRlZEJhY2tpbmdTdG9y
ZTo6QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUoV2ViUGFnZVByb3h5JiB3ZWJQYWdlKQogewogfQog
Ci1ib29sIEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlOjpwYWludChjYWlyb190KiBjciwgY29uc3Qg
SW50UmVjdCYgY2xpcFJlY3QpCi17Ci0gICAgaWYgKG1fd2ViUGFnZS5kcmF3c0JhY2tncm91bmQo
KSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBjb25zdCBXZWJDb3JlOjpDb2xvciYgY29s
b3IgPSBtX3dlYlBhZ2UuYmFja2dyb3VuZENvbG9yKCk7Ci0gICAgaWYgKCFjb2xvci5pc09wYXF1
ZSgpKSB7Ci0gICAgICAgIGNhaXJvX3JlY3RhbmdsZShjciwgY2xpcFJlY3QueCgpLCBjbGlwUmVj
dC55KCksIGNsaXBSZWN0LndpZHRoKCksIGNsaXBSZWN0LmhlaWdodCgpKTsKLSAgICAgICAgY2Fp
cm9fc2V0X29wZXJhdG9yKGNyLCBDQUlST19PUEVSQVRPUl9DTEVBUik7Ci0gICAgICAgIGNhaXJv
X2ZpbGwoY3IpOwotICAgIH0KLQotICAgIGlmIChjb2xvci5pc1Zpc2libGUoKSkgewotICAgICAg
ICBzZXRTb3VyY2VSR0JBRnJvbUNvbG9yKGNyLCBjb2xvcik7Ci0gICAgICAgIGNhaXJvX3NldF9v
cGVyYXRvcihjciwgQ0FJUk9fT1BFUkFUT1JfU09VUkNFKTsKLSAgICAgICAgY2Fpcm9fcmVjdGFu
Z2xlKGNyLCBjbGlwUmVjdC54KCksIGNsaXBSZWN0LnkoKSwgY2xpcFJlY3Qud2lkdGgoKSwgY2xp
cFJlY3QuaGVpZ2h0KCkpOwotICAgICAgICBjYWlyb19maWxsKGNyKTsKLSAgICB9Ci0KLSAgICBy
ZXR1cm4gdHJ1ZTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZS5oCmluZGV4IGUz
NTA1MDdhYWNjLi40OGRiNTMzNDRmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgfkFjY2VsZXJhdGVkQmFja2luZ1N0b3JlKCkgPSBkZWZhdWx0Owog
CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZShjb25zdCBMYXllclRyZWVDb250ZXh0JikgeyB9Ci0g
ICAgdmlydHVhbCBib29sIHBhaW50KGNhaXJvX3QqLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7
CisgICAgdmlydHVhbCBib29sIHBhaW50KGNhaXJvX3QqLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBtYWtlQ29udGV4dEN1cnJlbnQoKSB7IHJldHVybiBm
YWxzZTsgfQogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQuY3BwCmluZGV4IGYw
MWJhYjNiNDAxLi42MGY1Y2E3MTU2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZC5jcHAKQEAg
LTExMCw3ICsxMTAsNiBAQCBib29sIEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZDo6cGFp
bnQoY2Fpcm9fdCogY3IsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICBjYWlyb19zYXZlKGNyKTsKLSAgICBBY2NlbGVyYXRlZEJhY2tpbmdTdG9y
ZTo6cGFpbnQoY3IsIGNsaXBSZWN0KTsKIAogI2lmIEdUS19DSEVDS19WRVJTSU9OKDMsIDE2LCAw
KQogICAgIGlmIChtX2dka0dMQ29udGV4dCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDExLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVgxMS5jcHAKaW5kZXggMjdk
NzJjMWM0N2UuLjgyY2U4YzZiNjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVgxMS5jcHAKQEAgLTE4Niw3ICsx
ODYsNiBAQCBib29sIEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDExOjpwYWludChjYWlyb190KiBj
ciwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IGNhaXJvX3NhdmUoY3IpOwotICAgIEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlOjpwYWludChjciwg
Y2xpcFJlY3QpOwogCiAgICAgLy8gVGhlIHN1cmZhY2UgY2FuIGJlIG1vZGlmaWVkIGJ5IHRoZSB3
ZWIgcHJvY2VzcyBhdCBhbnkgdGltZSwgc28gd2UgbWFyayBpdAogICAgIC8vIGFzIGRpcnR5IHRv
IGVuc3VyZSB3ZSBhbHdheXMgcmVuZGVyIHRoZSB1cGRhdGVkIGNvbnRlbnRzIGFzIHNvb24gYXMg
cG9zc2libGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmll
dy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAKaW5kZXggMGY5
ZjlkNGVmZDUuLmE5ZTQxODU3ODU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlZp
ZXcuY3BwCkBAIC00NTEsNyArNDUxLDggQEAgTFJFU1VMVCBXZWJWaWV3OjpvbktleUV2ZW50KEhX
TkQgaFduZCwgVUlOVCBtZXNzYWdlLCBXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhcmEKIAogc3Rh
dGljIHZvaWQgZHJhd1BhZ2VCYWNrZ3JvdW5kKEhEQyBkYywgY29uc3QgV2ViUGFnZVByb3h5KiBw
YWdlLCBjb25zdCBSRUNUJiByZWN0KQogewotICAgIGlmICghcGFnZS0+ZHJhd3NCYWNrZ3JvdW5k
KCkpCisgICAgYXV0byYgYmFja2dyb3VuZENvbG9yID0gcGFnZS0+YmFja2dyb3VuZENvbG9yKCk7
CisgICAgaWYgKCFiYWNrZ3JvdW5kQ29sb3IgfHwgYmFja2dyb3VuZENvbG9yLnZhbHVlKCkuaXNW
aXNpYmxlKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIDo6RmlsbFJlY3QoZGMsICZyZWN0LCBy
ZWludGVycHJldF9jYXN0PEhCUlVTSD4oQ09MT1JfV0lORE9XICsgMSkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHAKaW5kZXggOTM4Y2FkZGJmNmMuLjUxMGIwM2I4NTM2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTE0MDYsNyArMTQwNiw2IEBAIHZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UoKQogICAg
IFdlYlBhZ2UqIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CiAKICAgICBib29sIGlzTWFpbkZy
YW1lID0gbV9mcmFtZS0+aXNNYWluRnJhbWUoKTsKLSAgICBib29sIGlzVHJhbnNwYXJlbnQgPSAh
d2ViUGFnZS0+ZHJhd3NCYWNrZ3JvdW5kKCk7CiAgICAgYm9vbCBzaG91bGRVc2VGaXhlZExheW91
dCA9IGlzTWFpbkZyYW1lICYmIHdlYlBhZ2UtPnVzZUZpeGVkTGF5b3V0KCk7CiAgICAgYm9vbCBz
aG91bGREaXNhYmxlU2Nyb2xsaW5nID0gaXNNYWluRnJhbWUgJiYgIXdlYlBhZ2UtPm1haW5GcmFt
ZUlzU2Nyb2xsYWJsZSgpOwogICAgIGJvb2wgc2hvdWxkSGlkZVNjcm9sbGJhcnMgPSBzaG91bGRE
aXNhYmxlU2Nyb2xsaW5nOwpAQCAtMTQzMSw3ICsxNDMwLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6dHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFnZSgpCiAgICAgYm9vbCBob3Jp
em9udGFsTG9jayA9IHNob3VsZEhpZGVTY3JvbGxiYXJzIHx8IHdlYlBhZ2UtPmFsd2F5c1Nob3dz
SG9yaXpvbnRhbFNjcm9sbGVyKCk7CiAgICAgYm9vbCB2ZXJ0aWNhbExvY2sgPSBzaG91bGRIaWRl
U2Nyb2xsYmFycyB8fCB3ZWJQYWdlLT5hbHdheXNTaG93c1ZlcnRpY2FsU2Nyb2xsZXIoKTsKIAot
ICAgIG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5jcmVhdGVWaWV3KHdlYlBhZ2UtPnNpemUoKSwgaXNU
cmFuc3BhcmVudCwKKyAgICBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+Y3JlYXRlVmlldyh3ZWJQYWdl
LT5zaXplKCksIHdlYlBhZ2UtPmJhY2tncm91bmRDb2xvcigpLAogICAgICAgICB3ZWJQYWdlLT5m
aXhlZExheW91dFNpemUoKSwgZml4ZWRWaXNpYmxlQ29udGVudFJlY3QsIHNob3VsZFVzZUZpeGVk
TGF5b3V0LAogICAgICAgICBob3Jpem9udGFsU2Nyb2xsYmFyTW9kZSwgaG9yaXpvbnRhbExvY2ss
IHZlcnRpY2FsU2Nyb2xsYmFyTW9kZSwgdmVydGljYWxMb2NrKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3aW5nQXJlYS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZERyYXdpbmdBcmVh
LmNwcAppbmRleCBlZGZlNDZiMjE4ZS4uMmU3NGFlOGY3YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEu
Y3BwCkBAIC05MywxNCArOTMsNiBAQCB2b2lkIEFjY2VsZXJhdGVkRHJhd2luZ0FyZWE6OnNjcm9s
bChjb25zdCBJbnRSZWN0JiBzY3JvbGxSZWN0LCBjb25zdCBJbnRTaXplJiBzYwogICAgICAgICBt
X2xheWVyVHJlZUhvc3QtPnNjcm9sbE5vbkNvbXBvc2l0ZWRDb250ZW50cyhzY3JvbGxSZWN0KTsK
IH0KIAotdm9pZCBBY2NlbGVyYXRlZERyYXdpbmdBcmVhOjpwYWdlQmFja2dyb3VuZFRyYW5zcGFy
ZW5jeUNoYW5nZWQoKQotewotICAgIGlmIChtX2xheWVyVHJlZUhvc3QpCi0gICAgICAgIG1fbGF5
ZXJUcmVlSG9zdC0+cGFnZUJhY2tncm91bmRUcmFuc3BhcmVuY3lDaGFuZ2VkKCk7Ci0gICAgZWxz
ZSBpZiAobV9wcmV2aW91c0xheWVyVHJlZUhvc3QpCi0gICAgICAgIG1fcHJldmlvdXNMYXllclRy
ZWVIb3N0LT5wYWdlQmFja2dyb3VuZFRyYW5zcGFyZW5jeUNoYW5nZWQoKTsKLX0KLQogdm9pZCBB
Y2NlbGVyYXRlZERyYXdpbmdBcmVhOjpzZXRMYXllclRyZWVTdGF0ZUlzRnJvemVuKGJvb2wgaXNG
cm96ZW4pCiB7CiAgICAgaWYgKG1fbGF5ZXJUcmVlU3RhdGVJc0Zyb3plbiA9PSBpc0Zyb3plbikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVk
RHJhd2luZ0FyZWEuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJh
dGVkRHJhd2luZ0FyZWEuaAppbmRleCAwOTI3ZDQ0ZDAwNC4uZjdlZjlmNmY1MzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0Fy
ZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZERy
YXdpbmdBcmVhLmgKQEAgLTQzLDcgKzQzLDYgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgc2V0TmVl
ZHNEaXNwbGF5KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXROZWVkc0Rpc3BsYXlJblJlY3QoY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2Nyb2xsKGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmIHNjcm9sbFJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNjcm9s
bERlbHRhKSBvdmVycmlkZTsKLSAgICB2b2lkIHBhZ2VCYWNrZ3JvdW5kVHJhbnNwYXJlbmN5Q2hh
bmdlZCgpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0TGF5ZXJUcmVlU3RhdGVJc0Zyb3plbihib29s
KSBvdmVycmlkZTsKICAgICBib29sIGxheWVyVHJlZVN0YXRlSXNGcm96ZW4oKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBtX2xheWVyVHJlZVN0YXRlSXNGcm96ZW47IH0KICAgICBMYXllclRyZWVI
b3N0KiBsYXllclRyZWVIb3N0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9sYXllclRyZWVI
b3N0LmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggMTUyMGY1MjBkYWMuLjkzYjdhMmRkZTcyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhv
c3QuY3BwCkBAIC0yMjQsMTAgKzIyNCw2IEBAIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
OjpkZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNoYW5nZWQoKQogICAgIG1fd2ViUGFnZS5jb3JlUGFn
ZSgpLT5wYWdlT3ZlcmxheUNvbnRyb2xsZXIoKS5kaWRDaGFuZ2VEZXZpY2VTY2FsZUZhY3Rvcigp
OwogfQogCi12b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6cGFnZUJhY2tncm91bmRUcmFu
c3BhcmVuY3lDaGFuZ2VkKCkKLXsKLX0KLQogR3JhcGhpY3NMYXllckZhY3RvcnkqIENvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdDo6Z3JhcGhpY3NMYXllckZhY3RvcnkoKQogewogICAgIHJldHVybiAm
bV9jb29yZGluYXRvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdC5oCmluZGV4IDBhOGJlYzhhMzk4Li5lYTk3NDUzMTU0YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5o
CkBAIC01NSw3ICs1NSw2IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHNpemVEaWRDaGFuZ2UoY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYgbmV3U2l6ZSkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRldmlj
ZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCgpIG92ZXJyaWRlOwotICAgIHZvaWQgcGFnZUJhY2tn
cm91bmRUcmFuc3BhcmVuY3lDaGFuZ2VkKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHNldFZpc2li
bGVDb250ZW50c1JlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jik7CiAgICAgdm9pZCByZW5k
ZXJOZXh0RnJhbWUoYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwCmluZGV4IDgyM2I3ZmEy
YWM3Li4xMDBmYzY0YTYxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRH
cmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTE4NCwxNyAr
MTg0LDYgQEAgdm9pZCBUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6ZGV2aWNlT3JQ
YWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCkKICAgICBtX2NvbXBvc2l0b3ItPnNldFNjYWxlRmFjdG9y
KG1fd2ViUGFnZS5kZXZpY2VTY2FsZUZhY3RvcigpICogbV92aWV3cG9ydENvbnRyb2xsZXIucGFn
ZVNjYWxlRmFjdG9yKCkpOwogfQogCi12b2lkIFRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0OjpwYWdlQmFja2dyb3VuZFRyYW5zcGFyZW5jeUNoYW5nZWQoKQotewotICAgIGlmIChtX2lz
RGlzY2FyZGFibGUpIHsKLSAgICAgICAgbV9kaXNjYXJkYWJsZVN5bmNBY3Rpb25zLmFkZChEaXNj
YXJkYWJsZVN5bmNBY3Rpb25zOjpVcGRhdGVCYWNrZ3JvdW5kKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6cGFnZUJhY2tncm91bmRUcmFu
c3BhcmVuY3lDaGFuZ2VkKCk7Ci0gICAgbV9jb21wb3NpdG9yLT5zZXREcmF3c0JhY2tncm91bmQo
bV93ZWJQYWdlLmRyYXdzQmFja2dyb3VuZCgpKTsKLX0KLQogdm9pZCBUaHJlYWRlZENvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdDo6c2l6ZURpZENoYW5nZShjb25zdCBJbnRTaXplJiBzaXplKQogewog
ICAgIGlmIChtX2lzRGlzY2FyZGFibGUpIHsKQEAgLTI4Niw5ICsyNzUsNiBAQCB2b2lkIFRocmVh
ZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpzZXRJc0Rpc2NhcmRhYmxlKGJvb2wgZGlzY2Fy
ZGFibGUpCiAgICAgaWYgKG1fZGlzY2FyZGFibGVTeW5jQWN0aW9ucy5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGlmIChtX2Rpc2NhcmRhYmxlU3luY0FjdGlvbnMuY29udGFpbnMo
RGlzY2FyZGFibGVTeW5jQWN0aW9uczo6VXBkYXRlQmFja2dyb3VuZCkpCi0gICAgICAgIHBhZ2VC
YWNrZ3JvdW5kVHJhbnNwYXJlbmN5Q2hhbmdlZCgpOwotCiAgICAgaWYgKG1fZGlzY2FyZGFibGVT
eW5jQWN0aW9ucy5jb250YWlucyhEaXNjYXJkYWJsZVN5bmNBY3Rpb25zOjpVcGRhdGVTaXplKSkg
ewogICAgICAgICAvLyBTaXplIGNoYW5nZXMgYWxyZWFkeSBzZXRzIHRoZSBzY2FsZSBmYWN0b3Ig
YW5kIHVwZGF0ZXMgdGhlIHZpZXdwb3J0LgogICAgICAgICBzaXplRGlkQ2hhbmdlKG1fd2ViUGFn
ZS5zaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Q29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9UaHJl
YWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCmluZGV4IGI3ODQ2ODE2NzliLi4yMjg3NjE2
MmU2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRp
bmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVGhyZWFk
ZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3QuaApAQCAtNTcsNyArNTcsNiBAQCBwcml2YXRlOgog
ICAgIHZvaWQgc2Nyb2xsTm9uQ29tcG9zaXRlZENvbnRlbnRzKGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmIHNjcm9sbFJlY3QpIG92ZXJyaWRlOwogICAgIHZvaWQgc2l6ZURpZENoYW5nZShjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkZXZpY2VPclBhZ2VTY2FsZUZh
Y3RvckNoYW5nZWQoKSBvdmVycmlkZTsKLSAgICB2b2lkIHBhZ2VCYWNrZ3JvdW5kVHJhbnNwYXJl
bmN5Q2hhbmdlZCgpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBjb250ZW50c1NpemVDaGFuZ2VkKGNv
bnN0IFdlYkNvcmU6OkludFNpemUmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENoYW5nZVZpZXdw
b3J0QXR0cmlidXRlcyhXZWJDb3JlOjpWaWV3cG9ydEF0dHJpYnV0ZXMmJikgb3ZlcnJpZGU7CkBA
IC0xNDMsOCArMTQyLDcgQEAgcHJpdmF0ZToKICAgICBlbnVtIGNsYXNzIERpc2NhcmRhYmxlU3lu
Y0FjdGlvbnMgewogICAgICAgICBVcGRhdGVTaXplID0gMSA8PCAxLAogICAgICAgICBVcGRhdGVW
aWV3cG9ydCA9IDEgPDwgMiwKLSAgICAgICAgVXBkYXRlU2NhbGUgPSAxIDw8IDMsCi0gICAgICAg
IFVwZGF0ZUJhY2tncm91bmQgPSAxIDw8IDQKKyAgICAgICAgVXBkYXRlU2NhbGUgPSAxIDw8IDMK
ICAgICB9OwogCiAgICAgQ29tcG9zaXRvckNsaWVudCBtX2NvbXBvc2l0b3JDbGllbnQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAppbmRleCA3ZWUy
MjhjZTE4YS4uZmQ3OTI5ZjA0YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvRHJhd2luZ0FyZWEuaApAQCAtODAsNyArODAsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHNjcm9sbChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzY3JvbGxSZWN0LCBjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiBzY3JvbGxEZWx0YSkgPSAwOwogCiAgICAgLy8gRklYTUU6IFRoZXNl
IHNob3VsZCBiZSBwdXJlIHZpcnR1YWwuCi0gICAgdmlydHVhbCB2b2lkIHBhZ2VCYWNrZ3JvdW5k
VHJhbnNwYXJlbmN5Q2hhbmdlZCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBmb3JjZVJlcGFpbnQo
KSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgZm9yY2VSZXBhaW50QXN5bmMoQ2FsbGJhY2tJRCkgeyBy
ZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0TGF5ZXJUcmVlU3RhdGVJc0Zyb3pl
bihib29sKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L0RyYXdpbmdBcmVhSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9E
cmF3aW5nQXJlYUltcGwuY3BwCmluZGV4IDZhODZiMDAyYjg2Li4wODlhYzIwYmY4NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwu
Y3BwCkBAIC00MTAsOCArNDEwLDcgQEAgdm9pZCBEcmF3aW5nQXJlYUltcGw6OmRpc3BsYXkoVXBk
YXRlSW5mbyYgdXBkYXRlSW5mbykKICAgICB1cGRhdGVJbmZvLnZpZXdTaXplID0gbV93ZWJQYWdl
LnNpemUoKTsKICAgICB1cGRhdGVJbmZvLmRldmljZVNjYWxlRmFjdG9yID0gbV93ZWJQYWdlLmNv
cmVQYWdlKCktPmRldmljZVNjYWxlRmFjdG9yKCk7CiAKLSAgICAvLyBBbHdheXMgcmVuZGVyIHRo
ZSB3aG9sZSBwYWdlIHdoZW4gd2UgZG9uJ3QgcmVuZGVyIHRoZSBiYWNrZ3JvdW5kLgotICAgIElu
dFJlY3QgYm91bmRzID0gbV93ZWJQYWdlLmRyYXdzQmFja2dyb3VuZCgpID8gbV9kaXJ0eVJlZ2lv
bi5ib3VuZHMoKSA6IG1fd2ViUGFnZS5ib3VuZHMoKTsKKyAgICBJbnRSZWN0IGJvdW5kcyA9IG1f
ZGlydHlSZWdpb24uYm91bmRzKCk7CiAgICAgQVNTRVJUKG1fd2ViUGFnZS5ib3VuZHMoKS5jb250
YWlucyhib3VuZHMpKTsKIAogICAgIEludFNpemUgYml0bWFwU2l6ZSA9IGJvdW5kcy5zaXplKCk7
CkBAIC00MjQsMTYgKzQyMywxMSBAQCB2b2lkIERyYXdpbmdBcmVhSW1wbDo6ZGlzcGxheShVcGRh
dGVJbmZvJiB1cGRhdGVJbmZvKQogICAgIGlmICghYml0bWFwLT5jcmVhdGVIYW5kbGUodXBkYXRl
SW5mby5iaXRtYXBIYW5kbGUpKQogICAgICAgICByZXR1cm47CiAKLSAgICBWZWN0b3I8SW50UmVj
dD4gcmVjdHM7Ci0gICAgaWYgKG1fd2ViUGFnZS5kcmF3c0JhY2tncm91bmQoKSkgewotICAgICAg
ICByZWN0cyA9IG1fZGlydHlSZWdpb24ucmVjdHMoKTsKLQotICAgICAgICBpZiAoc2hvdWxkUGFp
bnRCb3VuZHNSZWN0KGJvdW5kcywgcmVjdHMpKSB7Ci0gICAgICAgICAgICByZWN0cy5jbGVhcigp
OwotICAgICAgICAgICAgcmVjdHMuYXBwZW5kKGJvdW5kcyk7Ci0gICAgICAgIH0KLSAgICB9IGVs
c2UKKyAgICBWZWN0b3I8SW50UmVjdD4gcmVjdHMgPSBtX2RpcnR5UmVnaW9uLnJlY3RzKCk7Cisg
ICAgaWYgKHNob3VsZFBhaW50Qm91bmRzUmVjdChib3VuZHMsIHJlY3RzKSkgeworICAgICAgICBy
ZWN0cy5jbGVhcigpOwogICAgICAgICByZWN0cy5hcHBlbmQoYm91bmRzKTsKKyAgICB9CiAKICAg
ICB1cGRhdGVJbmZvLnNjcm9sbFJlY3QgPSBtX3Njcm9sbFJlY3Q7CiAgICAgdXBkYXRlSW5mby5z
Y3JvbGxPZmZzZXQgPSBtX3Njcm9sbE9mZnNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0xheWVyVHJlZUhvc3QuaAppbmRleCA4NWRkNDU4ZTAxOC4uNTNjMzk4Mjk5
ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJl
ZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9MYXllclRyZWVI
b3N0LmgKQEAgLTc0LDcgKzc0LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBmb3JjZVJl
cGFpbnQoKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGZvcmNlUmVwYWludEFzeW5jKENhbGxiYWNr
SUQpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIHNpemVEaWRDaGFuZ2UoY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYgbmV3U2l6ZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBwYWdl
QmFja2dyb3VuZFRyYW5zcGFyZW5jeUNoYW5nZWQoKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQg
cGF1c2VSZW5kZXJpbmcoKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lUmVuZGVyaW5nKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDIwMjNm
ZTQxOGQwLi4zZjYwZTQxYzBhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKQEAgLTUxNSw4ICs1MTUsNiBAQCBXZWJQYWdlOjpXZWJQYWdlKHVpbnQ2
NF90IHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAKICAg
ICBzZXRVc2VGaXhlZExheW91dChwYXJhbWV0ZXJzLnVzZUZpeGVkTGF5b3V0KTsKIAotICAgIHNl
dERyYXdzQmFja2dyb3VuZChwYXJhbWV0ZXJzLmRyYXdzQmFja2dyb3VuZCk7Ci0KICAgICBzZXRV
bmRlcmxheUNvbG9yKHBhcmFtZXRlcnMudW5kZXJsYXlDb2xvcik7CiAKICAgICBzZXRQYWdpbmF0
aW9uTW9kZShwYXJhbWV0ZXJzLnBhZ2luYXRpb25Nb2RlKTsKQEAgLTY0Myw2ICs2NDEsOCBAQCBX
ZWJQYWdlOjpXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cyYmIHBhcmFtZXRlcnMpCiAjaWYgVVNFKEFVRElPX1NFU1NJT04pCiAgICAgUGxhdGZvcm1NZWRp
YVNlc3Npb25NYW5hZ2VyOjpzZXRTaG91bGREZWFjdGl2YXRlQXVkaW9TZXNzaW9uKHRydWUpOwog
I2VuZGlmCisKKyAgICBzZXRCYWNrZ3JvdW5kQ29sb3IocGFyYW1ldGVycy5iYWNrZ3JvdW5kQ29s
b3IpOwogfQogCiAjaWYgRU5BQkxFKFdFQl9SVEMpCkBAIC0yOTAxLDE5ICsyOTAxLDE2IEBAIHZv
aWQgV2ViUGFnZTo6c2V0SW5kaWNhdGluZyhib29sIGluZGljYXRpbmcpCiB9CiAjZW5kaWYKIAot
dm9pZCBXZWJQYWdlOjpzZXREcmF3c0JhY2tncm91bmQoYm9vbCBkcmF3c0JhY2tncm91bmQpCit2
b2lkIFdlYlBhZ2U6OnNldEJhY2tncm91bmRDb2xvcihjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpD
b2xvcj4mIGJhY2tncm91bmRDb2xvcikKIHsKLSAgICBpZiAobV9kcmF3c0JhY2tncm91bmQgPT0g
ZHJhd3NCYWNrZ3JvdW5kKQorICAgIGlmIChtX2JhY2tncm91bmRDb2xvciA9PSBiYWNrZ3JvdW5k
Q29sb3IpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fZHJhd3NCYWNrZ3JvdW5kID0gZHJhd3NC
YWNrZ3JvdW5kOworICAgIG1fYmFja2dyb3VuZENvbG9yID0gYmFja2dyb3VuZENvbG9yOwogCi0g
ICAgaWYgKEZyYW1lVmlldyogZnJhbWVWaWV3ID0gbWFpbkZyYW1lVmlldygpKSB7Ci0gICAgICAg
IGJvb2wgaXNUcmFuc3BhcmVudCA9ICFkcmF3c0JhY2tncm91bmQ7Ci0gICAgICAgIGZyYW1lVmll
dy0+dXBkYXRlQmFja2dyb3VuZFJlY3Vyc2l2ZWx5KGlzVHJhbnNwYXJlbnQpOwotICAgIH0KKyAg
ICBpZiAoRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBtYWluRnJhbWVWaWV3KCkpCisgICAgICAgIGZy
YW1lVmlldy0+dXBkYXRlQmFja2dyb3VuZFJlY3Vyc2l2ZWx5KGJhY2tncm91bmRDb2xvcik7CiAK
LSAgICBtX2RyYXdpbmdBcmVhLT5wYWdlQmFja2dyb3VuZFRyYW5zcGFyZW5jeUNoYW5nZWQoKTsK
ICAgICBtX2RyYXdpbmdBcmVhLT5zZXROZWVkc0Rpc3BsYXkoKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGUyNDYwY2JkMjdkLi5iMTdkMGMy
MWI3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAt
NTAxLDggKzUwMSw2IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIHBvc3RJbmplY3RlZEJ1bmRs
ZU1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlTmFtZSwgY29uc3QgVXNlckRhdGEmKTsKIAot
ICAgIGJvb2wgZHJhd3NCYWNrZ3JvdW5kKCkgY29uc3QgeyByZXR1cm4gbV9kcmF3c0JhY2tncm91
bmQ7IH0KLQogICAgIHZvaWQgc2V0VW5kZXJsYXlDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYg
Y29sb3IpIHsgbV91bmRlcmxheUNvbG9yID0gY29sb3I7IH0KICAgICBXZWJDb3JlOjpDb2xvciB1
bmRlcmxheUNvbG9yKCkgY29uc3QgeyByZXR1cm4gbV91bmRlcmxheUNvbG9yOyB9CiAKQEAgLTEx
NDYsNiArMTE0NCw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHNlbmRTeW5jKFdURk1vdmUo
bWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBtX3BhZ2VJRCwgU2Vjb25kczo6aW5maW5pdHkoKSwg
SVBDOjpTZW5kU3luY09wdGlvbjo6SW5mb3JtUGxhdGZvcm1Qcm9jZXNzV2lsbFN1c3BlbmQpOwog
ICAgIH0KIAorICAgIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkNvbG9yPiYgYmFja2dyb3VuZENv
bG9yKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kQ29sb3I7IH0KKwogcHJpdmF0ZToKICAg
ICBXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmKTsK
IApAQCAtMTI4MSw3ICsxMjgxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEluZGljYXRpbmco
Ym9vbCk7CiAjZW5kaWYKIAotICAgIHZvaWQgc2V0RHJhd3NCYWNrZ3JvdW5kKGJvb2wpOworICAg
IHZvaWQgc2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkNvbG9yPiYp
OwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBzZXRUb3BDb250ZW50SW5zZXRGZW5j
ZWQoZmxvYXQsIElQQzo6QXR0YWNobWVudCk7CkBAIC0xNzc3LDcgKzE3NzcsNyBAQCBwcml2YXRl
OgogICAgIGJvb2wgbV9pc1N1c3BlbmRlZFVuZGVyTG9jayB7IGZhbHNlIH07CiAKICAgICBIYXNo
U2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiBtX21pbWVUeXBlc1dpdGhDdXN0
b21Db250ZW50UHJvdmlkZXJzOwotICAgIFdlYkNvcmU6OkNvbG9yIG1fYmFja2dyb3VuZENvbG9y
IHsgV2ViQ29yZTo6Q29sb3I6OndoaXRlIH07CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6Q29sb3I+
IG1fYmFja2dyb3VuZENvbG9yIHsgV2ViQ29yZTo6Q29sb3I6OndoaXRlIH07CiAKICAgICBIYXNo
U2V0PHVuc2lnbmVkPiBtX2FjdGl2ZVJlbmRlcmluZ1N1cHByZXNzaW9uVG9rZW5zOwogICAgIHVu
c2lnbmVkIG1fbWF4aW11bVJlbmRlcmluZ1N1cHByZXNzaW9uVG9rZW4geyAwIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpp
bmRleCBhOGM2MTc2OWU1ZS4uMTYzYTE3NjljZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtMjUsNyArMjUsNyBA
QCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKICAgICBTZXRBY3Rpdml0eVN0
YXRlKE9wdGlvblNldDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFnPiBhY3Rpdml0eVN0YXRl
LCBXZWJLaXQ6OkFjdGl2aXR5U3RhdGVDaGFuZ2VJRCBhY3Rpdml0eVN0YXRlQ2hhbmdlSUQsIFZl
Y3RvcjxXZWJLaXQ6OkNhbGxiYWNrSUQ+IGNhbGxiYWNrSURzKQogICAgIFNldExheWVySG9zdGlu
Z01vZGUoZW51bTp1aW50OF90IFdlYktpdDo6TGF5ZXJIb3N0aW5nTW9kZSBsYXllckhvc3RpbmdN
b2RlKQogCi0gICAgU2V0RHJhd3NCYWNrZ3JvdW5kKGJvb2wgZHJhd3NCYWNrZ3JvdW5kKQorICAg
IFNldEJhY2tncm91bmRDb2xvcihPcHRpb25hbDxXZWJDb3JlOjpDb2xvcj4gY29sb3IpCiAKICAg
ICBBZGRDb25zb2xlTWVzc2FnZSh1aW50NjRfdCBmcmFtZUlELCBlbnVtOnVpbnQ4X3QgSlNDOjpN
ZXNzYWdlU291cmNlIG1lc3NhZ2VTb3VyY2UsIGVudW06dWludDhfdCBKU0M6Ok1lc3NhZ2VMZXZl
bCBtZXNzYWdlTGV2ZWwsIFN0cmluZyBtZXNzYWdlLCB1aW50NjRfdCByZXF1ZXN0SUQpCiAgICAg
U2VuZENTUFZpb2xhdGlvblJlcG9ydCh1aW50NjRfdCBmcmFtZUlELCBVUkwgcmVwb3J0VVJMLCBJ
UEM6OkZvcm1EYXRhUmVmZXJlbmNlIHJlcG9ydERhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VM
b2cKaW5kZXggZTkwY2YxYWMyMGYuLjE3MGFiYTI4NGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTktMDEtMTggIFBoaWxpcHBlIE5vcm1hbmQgIDxw
bm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtXUEVdIEFkZCBBUEkgZm9yIHdlYnZpZXcg
YmFja2dyb3VuZCBjb2xvciBjb25maWd1cmF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTIzMDUKKworICAgICAgICBSZXZpZXdlZCBieSBNaWNo
YWVsIENhdGFuemFyby4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp0cmFuc2l0aW9uVG9D
b21taXR0ZWRGb3JOZXdQYWdlKTogQ3JlYXRlCisgICAgICAgIEZyYW1lVmlldyB3aXRoIGJhY2tn
cm91bmQgY29sb3IuCisKIDIwMTktMDItMDYgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUu
Y29tPgogCiAgICAgICAgIFN0YW5kYXJkaXplIG9uIENvbnRyb2xLZXkgaW5zdGVhZCBvZiBDdHJs
S2V5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggYzE0NTJlODRmMzcuLjExNTk1
YjJmNmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC05ODUsMTAgKzk4NSwx
MiBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp0cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JO
ZXdQYWdlKCkKIAogICAgIFJFQ1QgcGl4ZWxSZWN0OwogICAgIHZpZXctPmZyYW1lUmVjdCgmcGl4
ZWxSZWN0KTsKLSAgICBib29sIHRyYW5zcGFyZW50ID0gdmlldy0+dHJhbnNwYXJlbnQoKTsKKyAg
ICBPcHRpb25hbDxDb2xvcj4gYmFja2dyb3VuZENvbG9yOworICAgIGlmICh2aWV3LT50cmFuc3Bh
cmVudCgpKQorICAgICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBDb2xvcihDb2xvcjo6dHJhbnNwYXJl
bnQpOwogICAgIEZsb2F0UmVjdCBsb2dpY2FsRnJhbWUocGl4ZWxSZWN0KTsKICAgICBsb2dpY2Fs
RnJhbWUuc2NhbGUoMS4wZiAvIHZpZXctPmRldmljZVNjYWxlRmFjdG9yKCkpOwotICAgIGNvcmUo
bV93ZWJGcmFtZSktPmNyZWF0ZVZpZXcoZW5jbG9zaW5nSW50UmVjdChsb2dpY2FsRnJhbWUpLnNp
emUoKSwgdHJhbnNwYXJlbnQsIC8qIGZpeGVkTGF5b3V0U2l6ZSAqLyB7IH0sIC8qIGZpeGVkVmlz
aWJsZUNvbnRlbnRSZWN0ICovIHsgfSk7CisgICAgY29yZShtX3dlYkZyYW1lKS0+Y3JlYXRlVmll
dyhlbmNsb3NpbmdJbnRSZWN0KGxvZ2ljYWxGcmFtZSkuc2l6ZSgpLCBiYWNrZ3JvdW5kQ29sb3Is
IC8qIGZpeGVkTGF5b3V0U2l6ZSAqLyB7IH0sIC8qIGZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0ICov
IHsgfSk7CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpZFNhdmVUb1BhZ2VDYWNo
ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKaW5kZXggMDRiNmZlYTNjYjQuLjRh
ZDMxNjYwMTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCkBAIC0yMDg5LDcg
KzIwODksMTAgQEAgdm9pZCBXZWJGcmFtZTo6dXBkYXRlQmFja2dyb3VuZCgpCiAgICAgaWYgKCFj
b3JlRnJhbWUgfHwgIWNvcmVGcmFtZS0+dmlldygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBj
b3JlRnJhbWUtPnZpZXcoKS0+dXBkYXRlQmFja2dyb3VuZFJlY3Vyc2l2ZWx5KHdlYlZpZXcoKS0+
dHJhbnNwYXJlbnQoKSk7CisgICAgT3B0aW9uYWw8Q29sb3I+IGJhY2tncm91bmRDb2xvcjsKKyAg
ICBpZiAod2ViVmlldygpLT50cmFuc3BhcmVudCgpKQorICAgICAgICBiYWNrZ3JvdW5kQ29sb3Ig
PSBDb2xvcihDb2xvcjo6dHJhbnNwYXJlbnQpOworICAgIGNvcmVGcmFtZS0+dmlldygpLT51cGRh
dGVCYWNrZ3JvdW5kUmVjdXJzaXZlbHkoYmFja2dyb3VuZENvbG9yKTsKIH0KIAogLy8gSVdlYkZy
YW1lMgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IDBmZGRlMWVjMjczLi5lNDkzZTQ3ZjE4ZSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisr
KyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE5LTAxLTE4ICBQaGlsaXBw
ZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbV1BFXSBBZGQgQVBJ
IGZvciB3ZWJ2aWV3IGJhY2tncm91bmQgY29sb3IgY29uZmlndXJhdGlvbgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyMzA1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTWljaGFlbCBDYXRhbnphcm8uCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci93cGUv
bWFpbi5jcHA6CisgICAgICAgIChtYWluKTogQWRkIGEgbmV3IG9wdGlvbiB0byBjb25maWd1cmUg
dGhlIHdlYnZpZXcgYmFja2dyb3VuZAorICAgICAgICBjb2xvci4gRXhhbXBsZTogLS1iZy1jb2xv
cj10cmFuc3BhcmVudC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIv
VGVzdFdlYktpdFdlYlZpZXcuY3BwOgorICAgICAgICAodGVzdFdlYlZpZXdCYWNrZ3JvdW5kQ29s
b3IpOiBFbmFibGUgYmFja2dyb3VuZCBjb2xvciBBUEkgdGVzdHMgZm9yIFdQRS4KKyAgICAgICAg
KGJlZm9yZUFsbCk6IERpdHRvLgorCiAyMDE5LTAxLTE2ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAg
PGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXVtXUEVdIEFkZCB3ZWIgZXh0ZW5z
aW9ucyBBUEkgdG8gd2hpdGVsaXN0IGFjY2VzcyB0byBhIHNlY3VyaXR5IG9yaWdpbgpkaWZmIC0t
Z2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvd3BlL21haW4uY3BwIGIvVG9vbHMvTWluaUJyb3dzZXIv
d3BlL21haW4uY3BwCmluZGV4IDEzMWEwZjM4NzA5Li4yNWNjODg0OTNmZiAxMDA2NDQKLS0tIGEv
VG9vbHMvTWluaUJyb3dzZXIvd3BlL21haW4uY3BwCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3dw
ZS9tYWluLmNwcApAQCAtNDIsNiArNDIsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gaWdub3JlVExTRXJy
b3JzOwogc3RhdGljIGNvbnN0IGNoYXIqIGNvb2tpZXNGaWxlOwogc3RhdGljIGNvbnN0IGNoYXIq
IGNvb2tpZXNQb2xpY3k7CiBzdGF0aWMgY29uc3QgY2hhciogcHJveHk7Citjb25zdCBjaGFyKiBi
Z0NvbG9yOwogCiBzdGF0aWMgY29uc3QgR09wdGlvbkVudHJ5IGNvbW1hbmRMaW5lT3B0aW9uc1td
ID0KIHsKQEAgLTUzLDYgKzU0LDcgQEAgc3RhdGljIGNvbnN0IEdPcHRpb25FbnRyeSBjb21tYW5k
TGluZU9wdGlvbnNbXSA9CiAgICAgeyAicHJveHkiLCAwLCAwLCBHX09QVElPTl9BUkdfU1RSSU5H
LCAmcHJveHksICJTZXQgcHJveHkiLCAiUFJPWFkiIH0sCiAgICAgeyAiaWdub3JlLWhvc3QiLCAw
LCAwLCBHX09QVElPTl9BUkdfU1RSSU5HX0FSUkFZLCAmaWdub3JlSG9zdHMsICJTZXQgcHJveHkg
aWdub3JlIGhvc3RzIiwgIkhPU1RTIiB9LAogICAgIHsgImlnbm9yZS10bHMtZXJyb3JzIiwgMCwg
MCwgR19PUFRJT05fQVJHX05PTkUsICZpZ25vcmVUTFNFcnJvcnMsICJJZ25vcmUgVExTIGVycm9y
cyIsIG51bGxwdHIgfSwKKyAgICB7ICJiZy1jb2xvciIsIDAsIDAsIEdfT1BUSU9OX0FSR19TVFJJ
TkcsICZiZ0NvbG9yLCAiV2luZG93IGJhY2tncm91bmQgY29sb3IuIERlZmF1bHQ6IHdoaXRlIiwg
IkNPTE9SIiB9LAogICAgIHsgR19PUFRJT05fUkVNQUlOSU5HLCAwLCAwLCBHX09QVElPTl9BUkdf
RklMRU5BTUVfQVJSQVksICZ1cmlBcmd1bWVudHMsIG51bGxwdHIsICJbVVJMXSIgfSwKICAgICB7
IG51bGxwdHIsIDAsIDAsIEdfT1BUSU9OX0FSR19OT05FLCBudWxscHRyLCBudWxscHRyLCBudWxs
cHRyIH0KIH07CkBAIC0yMTMsNiArMjE1LDEwIEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICph
cmd2W10pCiAgICAgaWYgKGlnbm9yZVRMU0Vycm9ycykKICAgICAgICAgd2Via2l0X3dlYl9jb250
ZXh0X3NldF90bHNfZXJyb3JzX3BvbGljeSh3ZWJDb250ZXh0LCBXRUJLSVRfVExTX0VSUk9SU19Q
T0xJQ1lfSUdOT1JFKTsKIAorICAgIFdlYktpdENvbG9yIGNvbG9yOworICAgIGlmIChiZ0NvbG9y
ICYmIHdlYmtpdF9jb2xvcl9wYXJzZSgmY29sb3IsIGJnQ29sb3IpKQorICAgICAgICB3ZWJraXRf
d2ViX3ZpZXdfc2V0X2JhY2tncm91bmRfY29sb3Iod2ViVmlldywgJmNvbG9yKTsKKwogICAgIGlm
ICh1cmlBcmd1bWVudHMpIHsKICAgICAgICAgR0ZpbGUqIGZpbGUgPSBnX2ZpbGVfbmV3X2Zvcl9j
b21tYW5kbGluZV9hcmcodXJpQXJndW1lbnRzWzBdKTsKICAgICAgICAgY2hhciogdXJsID0gZ19m
aWxlX2dldF91cmkoZmlsZSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYlZpZXcuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcAppbmRleCA1NGYxOTdiODgzMy4u
ZDA1MzFiNDlmMGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
R0xpYi9UZXN0V2ViS2l0V2ViVmlldy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcApAQCAtMTEzMywxMSArMTEzMywxNiBA
QCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0lzUGxheWluZ0F1ZGlvKElzUGxheWluZ0F1ZGlvV2Vi
Vmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaQogICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF93ZWJf
dmlld19pc19wbGF5aW5nX2F1ZGlvKHRlc3QtPm1fd2ViVmlldykpOwogfQogCi0jaWYgUExBVEZP
Uk0oR1RLKQogc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdCYWNrZ3JvdW5kQ29sb3IoV2ViVmlld1Rl
c3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7CisjaWYgUExBVEZPUk0oR1RLKQorI2RlZmluZSBD
b2xvclR5cGUgR2RrUkdCQQorI2VsaWYgUExBVEZPUk0oV1BFKQorI2RlZmluZSBDb2xvclR5cGUg
V2ViS2l0Q29sb3IKKyNlbmRpZgorCiAgICAgLy8gV2hpdGUgaXMgdGhlIGRlZmF1bHQgYmFja2dy
b3VuZC4KLSAgICBHZGtSR0JBIHJnYmE7CisgICAgQ29sb3JUeXBlIHJnYmE7CiAgICAgd2Via2l0
X3dlYl92aWV3X2dldF9iYWNrZ3JvdW5kX2NvbG9yKHRlc3QtPm1fd2ViVmlldywgJnJnYmEpOwog
ICAgIGdfYXNzZXJ0X2NtcGZsb2F0KHJnYmEucmVkLCA9PSwgMSk7CiAgICAgZ19hc3NlcnRfY21w
ZmxvYXQocmdiYS5ncmVlbiwgPT0sIDEpOwpAQCAtMTE1NSwxMCArMTE2MCwyMyBAQCBzdGF0aWMg
dm9pZCB0ZXN0V2ViVmlld0JhY2tncm91bmRDb2xvcihXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0
cG9pbnRlcikKICAgICBnX2Fzc2VydF9jbXBmbG9hdChyZ2JhLmJsdWUsID09LCAwKTsKICAgICBn
X2Fzc2VydF9jbXBmbG9hdChyZ2JhLmFscGhhLCA9PSwgMC41KTsKIAorI2lmIFBMQVRGT1JNKFdQ
RSkKKyAgICBDb2xvclR5cGUgY29sb3I7CisgICAgZ19hc3NlcnQod2Via2l0X2NvbG9yX3BhcnNl
KCZjb2xvciwgInJlZCIpKTsKKyAgICBnX2Fzc2VydF9jbXBmbG9hdChjb2xvci5yZWQsID09LCAx
KTsKKyAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0X2JhY2tncm91bmRfY29sb3IodGVzdC0+bV93ZWJW
aWV3LCAmY29sb3IpOworICAgIHdlYmtpdF93ZWJfdmlld19nZXRfYmFja2dyb3VuZF9jb2xvcih0
ZXN0LT5tX3dlYlZpZXcsICZyZ2JhKTsKKyAgICBnX2Fzc2VydF9jbXBmbG9hdChyZ2JhLnJlZCwg
PT0sIDEpOworICAgIGdfYXNzZXJ0X2NtcGZsb2F0KHJnYmEuZ3JlZW4sID09LCAwKTsKKyAgICBn
X2Fzc2VydF9jbXBmbG9hdChyZ2JhLmJsdWUsID09LCAwKTsKKyAgICBnX2Fzc2VydF9jbXBmbG9h
dChyZ2JhLmFscGhhLCA9PSwgMSk7CisjZW5kaWYKKwogICAgIC8vIFRoZSBhY3R1YWwgcmVuZGVy
aW5nIGNhbid0IGJlIHRlc3RlZCB1c2luZyB1bml0IHRlc3RzLCB1c2UKICAgICAvLyBNaW5pQnJv
d3NlciAtLWJnLWNvbG9yPSI8Y29sb3ItdmFsdWU+IiBmb3IgbWFudWFsbHkgdGVzdGluZyB0aGlz
IEFQSS4KIH0KIAorI2lmIFBMQVRGT1JNKEdUSykKIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3UHJl
ZmVycmVkU2l6ZShXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKICAgICB0ZXN0
LT5sb2FkSHRtbCgiPGh0bWwgc3R5bGU9J3dpZHRoOiAzMjVweDsgaGVpZ2h0OiA2MTVweCc+PC9o
dG1sPiIsIG51bGxwdHIpOwpAQCAtMTM2Myw4ICsxMzgxLDggQEAgdm9pZCBiZWZvcmVBbGwoKQog
ICAgIE5vdGlmaWNhdGlvbldlYlZpZXdUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAibm90aWZp
Y2F0aW9uLWluaXRpYWwtcGVybWlzc2lvbi1kaXNhbGxvd2VkIiwgdGVzdFdlYlZpZXdOb3RpZmlj
YXRpb25Jbml0aWFsUGVybWlzc2lvbkRpc2FsbG93ZWQpOwogI2VuZGlmCiAgICAgSXNQbGF5aW5n
QXVkaW9XZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgImlzLXBsYXlpbmctYXVkaW8i
LCB0ZXN0V2ViVmlld0lzUGxheWluZ0F1ZGlvKTsKLSNpZiBQTEFURk9STShHVEspCiAgICAgV2Vi
Vmlld1Rlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJiYWNrZ3JvdW5kLWNvbG9yIiwgdGVzdFdl
YlZpZXdCYWNrZ3JvdW5kQ29sb3IpOworI2lmIFBMQVRGT1JNKEdUSykKICAgICBXZWJWaWV3VGVz
dDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgInByZWZlcnJlZC1zaXplIiwgdGVzdFdlYlZpZXdQcmVm
ZXJyZWRTaXplKTsKICNlbmRpZgogICAgIFdlYlZpZXdUaXRsZVRlc3Q6OmFkZCgiV2ViS2l0V2Vi
VmlldyIsICJ0aXRsZS1jaGFuZ2UiLCB0ZXN0V2ViVmlld1RpdGxlQ2hhbmdlKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>361678</attachid>
            <date>2019-02-11 06:47:45 -0800</date>
            <delta_ts>2019-02-11 06:47:45 -0800</delta_ts>
            <desc>Try to fix mac builds</desc>
            <filename>wpe-bg-color.diff</filename>
            <type>text/plain</type>
            <size>73009</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlNWU2Njc2Y2Q4MS4uMGRjN2IyNjZiNjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMyBAQAorMjAxOS0wMS0xOCAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxp
YS5jb20+IGFuZCBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKwor
ICAgICAgICBbV1BFXSBBZGQgQVBJIGZvciB3ZWJ2aWV3IGJhY2tncm91bmQgY29sb3IgY29uZmln
dXJhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTkyMzA1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTWljaGFlbCBDYXRhbnphcm8uCisKKyAgICAg
ICAgQWRhcHQgdGhlIEZyYW1lVmlldyBBUEkgdG8gYWxsb3cgYSBkZWZhdWx0IG5vbi13aGl0ZSBi
YWNrZ3JvdW5kIGNvbG9yLgorCisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZTo6Y3JlYXRlVmlldyk6IFJlcGxhY2UgaXNUcmFuc3BhcmVudCBhcmd1bWVu
dCB3aXRoIGEgYmFja2dyb3VuZCBjb2xvciBvbmUuCisgICAgICAgICogcGFnZS9GcmFtZS5oOgor
ICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmll
dzo6cmVjYWxjdWxhdGVCYXNlQmFja2dyb3VuZENvbG9yKTogVXNlIENvbG9yOjp0cmFuc3BhcmVu
dCBpZiBtX2lzVHJhbnNwYXJlbnQgaXMgdHJ1ZS4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmll
dzo6dXBkYXRlQmFja2dyb3VuZFJlY3Vyc2l2ZWx5KTogQWxsb3cgdGhlIGZhbGxiYWNrIGJhY2tn
cm91bmQgY29sb3IgdG8gYmUgbm9uLXdoaXRlLCB0aGlzIGlzCisgICAgICAgIHVzZWQgb25seSBp
biBub24tZGFyay1tb2RlLWNzcyBidWlsZCBjb25maWd1cmF0aW9ucy4KKyAgICAgICAgKiBwYWdl
L0ZyYW1lVmlldy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkludGVybmFsczo6c2V0Vmlld0lzVHJhbnNwYXJlbnQpOiBVc2UgQ29sb3I6OnRy
YW5zcGFyZW50IGlmIHRyYW5zcGFyZW50IGlzIHRydWUuCisKIDIwMTktMDItMTAgIFphbGFuIEJ1
anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXSBGaXggc3BlbGxpbmcgZXJy
b3IuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4IGE0ZjgzYjI3ZjBiLi42N2M0YjNhMWExYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZS5jcHAKQEAgLTkwMSw3ICs5MDEsNyBAQCBSZWZQdHI8UmFuZ2U+IEZyYW1l
OjpyYW5nZUZvclBvaW50KGNvbnN0IEludFBvaW50JiBmcmFtZVBvaW50KQogICAgIHJldHVybiBu
dWxscHRyOwogfQogCi12b2lkIEZyYW1lOjpjcmVhdGVWaWV3KGNvbnN0IEludFNpemUmIHZpZXdw
b3J0U2l6ZSwgYm9vbCB0cmFuc3BhcmVudCwKK3ZvaWQgRnJhbWU6OmNyZWF0ZVZpZXcoY29uc3Qg
SW50U2l6ZSYgdmlld3BvcnRTaXplLCBjb25zdCBPcHRpb25hbDxDb2xvcj4mIGJhY2tncm91bmRD
b2xvciwKICAgICBjb25zdCBJbnRTaXplJiBmaXhlZExheW91dFNpemUsIGNvbnN0IEludFJlY3Qm
IGZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0LAogICAgIGJvb2wgdXNlRml4ZWRMYXlvdXQsIFNjcm9s
bGJhck1vZGUgaG9yaXpvbnRhbFNjcm9sbGJhck1vZGUsIGJvb2wgaG9yaXpvbnRhbExvY2ssCiAg
ICAgU2Nyb2xsYmFyTW9kZSB2ZXJ0aWNhbFNjcm9sbGJhck1vZGUsIGJvb2wgdmVydGljYWxMb2Nr
KQpAQCAtOTMyLDcgKzkzMiw3IEBAIHZvaWQgRnJhbWU6OmNyZWF0ZVZpZXcoY29uc3QgSW50U2l6
ZSYgdmlld3BvcnRTaXplLCBib29sIHRyYW5zcGFyZW50LAogCiAgICAgc2V0VmlldyhmcmFtZVZp
ZXcuY29weVJlZigpKTsKIAotICAgIGZyYW1lVmlldy0+dXBkYXRlQmFja2dyb3VuZFJlY3Vyc2l2
ZWx5KHRyYW5zcGFyZW50KTsKKyAgICBmcmFtZVZpZXctPnVwZGF0ZUJhY2tncm91bmRSZWN1cnNp
dmVseShiYWNrZ3JvdW5kQ29sb3IpOwogCiAgICAgaWYgKGlzTWFpbkZyYW1lKQogICAgICAgICBm
cmFtZVZpZXctPnNldFBhcmVudFZpc2libGUodHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKaW5kZXggOGFk
MTNkNmUxY2MuLjc4NDFhZDU2MmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCkBAIC0xMjgsNyArMTI4LDcg
QEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5pdFdpdGhTaW1wbGVIVE1MRG9j
dW1lbnQoY29uc3QgU3RyaW5nJiBzdHlsZSwgY29uc3QgVVJMJik7CiAjZW5kaWYKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldFZpZXcoUmVmUHRyPEZyYW1lVmlldz4mJik7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBjcmVhdGVWaWV3KGNvbnN0IEludFNpemUmLCBib29sIHRyYW5zcGFyZW50
LAorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY3JlYXRlVmlldyhjb25zdCBJbnRTaXplJiwgY29u
c3QgT3B0aW9uYWw8Q29sb3I+JiBiYWNrZ3JvdW5kQ29sb3IsCiAgICAgICAgIGNvbnN0IEludFNp
emUmIGZpeGVkTGF5b3V0U2l6ZSwgY29uc3QgSW50UmVjdCYgZml4ZWRWaXNpYmxlQ29udGVudFJl
Y3QsCiAgICAgICAgIGJvb2wgdXNlRml4ZWRMYXlvdXQgPSBmYWxzZSwgU2Nyb2xsYmFyTW9kZSA9
IFNjcm9sbGJhckF1dG8sIGJvb2wgaG9yaXpvbnRhbExvY2sgPSBmYWxzZSwKICAgICAgICAgU2Ny
b2xsYmFyTW9kZSA9IFNjcm9sbGJhckF1dG8sIGJvb2wgdmVydGljYWxMb2NrID0gZmFsc2UpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IDliMjQ3NzdkMGJmLi5lMTg4MjdmMjExMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtMzk4LDcgKzM5OCwxMCBAQCB2b2lkIEZy
YW1lVmlldzo6cmVjYWxjdWxhdGVCYXNlQmFja2dyb3VuZENvbG9yKCkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgbV91c2VzRGFya0FwcGVhcmFuY2UgPSB1c2luZ0RhcmtBcHBlYXJhbmNlOwotICAg
IHVwZGF0ZUJhY2tncm91bmRSZWN1cnNpdmVseShtX2lzVHJhbnNwYXJlbnQpOworICAgIE9wdGlv
bmFsPENvbG9yPiBiYWNrZ3JvdW5kQ29sb3I7CisgICAgaWYgKG1faXNUcmFuc3BhcmVudCkKKyAg
ICAgICAgYmFja2dyb3VuZENvbG9yID0gQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50KTsKKyAgICB1
cGRhdGVCYWNrZ3JvdW5kUmVjdXJzaXZlbHkoYmFja2dyb3VuZENvbG9yKTsKIH0KICNlbmRpZgog
CkBAIC0yOTkzLDE4ICsyOTk2LDE4IEBAIHZvaWQgRnJhbWVWaWV3OjpzZXRCYXNlQmFja2dyb3Vu
ZENvbG9yKGNvbnN0IENvbG9yJiBiYWNrZ3JvdW5kQ29sb3IpCiAgICAgc2V0TmVlZHNDb21wb3Np
dGluZ0NvbmZpZ3VyYXRpb25VcGRhdGUoKTsKIH0KIAotdm9pZCBGcmFtZVZpZXc6OnVwZGF0ZUJh
Y2tncm91bmRSZWN1cnNpdmVseShib29sIHRyYW5zcGFyZW50KQordm9pZCBGcmFtZVZpZXc6OnVw
ZGF0ZUJhY2tncm91bmRSZWN1cnNpdmVseShjb25zdCBPcHRpb25hbDxDb2xvcj4mIGJhY2tncm91
bmRDb2xvcikKIHsKICNpZiBFTkFCTEUoREFSS19NT0RFX0NTUykgJiYgUExBVEZPUk0oTUFDKQot
ICAgIENvbG9yIGJhY2tncm91bmRDb2xvciA9IHRyYW5zcGFyZW50ID8gQ29sb3I6OnRyYW5zcGFy
ZW50IDogUmVuZGVyVGhlbWU6OnNpbmdsZXRvbigpLnN5c3RlbUNvbG9yKENTU1ZhbHVlQXBwbGVT
eXN0ZW1Db250cm9sQmFja2dyb3VuZCwgc3R5bGVDb2xvck9wdGlvbnMoKSk7CisgICAgQ29sb3Ig
YmFzZUJhY2tncm91bmRDb2xvciA9IGJhY2tncm91bmRDb2xvci52YWx1ZU9yKFJlbmRlclRoZW1l
OjpzaW5nbGV0b24oKS5zeXN0ZW1Db2xvcihDU1NWYWx1ZUFwcGxlU3lzdGVtQ29udHJvbEJhY2tn
cm91bmQsIHN0eWxlQ29sb3JPcHRpb25zKCkpKTsKICNlbHNlCi0gICAgQ29sb3IgYmFja2dyb3Vu
ZENvbG9yID0gdHJhbnNwYXJlbnQgPyBDb2xvcjo6dHJhbnNwYXJlbnQgOiBDb2xvcjo6d2hpdGU7
CisgICAgQ29sb3IgYmFzZUJhY2tncm91bmRDb2xvciA9IGJhY2tncm91bmRDb2xvci52YWx1ZU9y
KENvbG9yOjp3aGl0ZSk7CiAjZW5kaWYKIAogICAgIGZvciAoYXV0byogZnJhbWUgPSBtX2ZyYW1l
LnB0cigpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dChtX2ZyYW1l
LnB0cigpKSkgewogICAgICAgICBpZiAoRnJhbWVWaWV3KiB2aWV3ID0gZnJhbWUtPnZpZXcoKSkg
ewotICAgICAgICAgICAgdmlldy0+c2V0VHJhbnNwYXJlbnQodHJhbnNwYXJlbnQpOwotICAgICAg
ICAgICAgdmlldy0+c2V0QmFzZUJhY2tncm91bmRDb2xvcihiYWNrZ3JvdW5kQ29sb3IpOworICAg
ICAgICAgICAgdmlldy0+c2V0VHJhbnNwYXJlbnQoIWJhc2VCYWNrZ3JvdW5kQ29sb3IuaXNWaXNp
YmxlKCkpOworICAgICAgICAgICAgdmlldy0+c2V0QmFzZUJhY2tncm91bmRDb2xvcihiYXNlQmFj
a2dyb3VuZENvbG9yKTsKICAgICAgICAgICAgIGlmICh2aWV3LT5uZWVkc0xheW91dCgpKQogICAg
ICAgICAgICAgICAgIHZpZXctPmxheW91dENvbnRleHQoKS5zY2hlZHVsZUxheW91dCgpOwogICAg
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAppbmRleCAyMTczZGFjM2QyOC4uYWM5M2ZkODQz
MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaApAQCAtMTkyLDcgKzE5Miw3IEBAIHB1YmxpYzoK
IAogICAgIFdFQkNPUkVfRVhQT1JUIENvbG9yIGJhc2VCYWNrZ3JvdW5kQ29sb3IoKSBjb25zdDsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEJhc2VCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29s
b3ImKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUJhY2tncm91bmRSZWN1cnNpdmVs
eShib29sKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUJhY2tncm91bmRSZWN1cnNp
dmVseShjb25zdCBPcHRpb25hbDxDb2xvcj4mIGJhY2tncm91bmRDb2xvcik7CiAKICAgICBlbnVt
IEV4dGVuZGVkQmFja2dyb3VuZE1vZGVGbGFncyB7CiAgICAgICAgIEV4dGVuZGVkQmFja2dyb3Vu
ZE1vZGVOb25lICAgICAgICAgID0gMCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApp
bmRleCA3MjllOWNmMjQ4OS4uNmI3OGUwM2RkNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5jcHAKQEAgLTE3MjEsNyArMTcyMSwxMCBAQCBFeGNlcHRpb25Pcjx2b2lkPiBJbnRlcm5h
bHM6OnNldFZpZXdJc1RyYW5zcGFyZW50KGJvb2wgdHJhbnNwYXJlbnQpCiAgICAgRG9jdW1lbnQq
IGRvY3VtZW50ID0gY29udGV4dERvY3VtZW50KCk7CiAgICAgaWYgKCFkb2N1bWVudCB8fCAhZG9j
dW1lbnQtPnZpZXcoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRBY2Nlc3NF
cnJvciB9OwotICAgIGRvY3VtZW50LT52aWV3KCktPnVwZGF0ZUJhY2tncm91bmRSZWN1cnNpdmVs
eSh0cmFuc3BhcmVudCk7CisgICAgT3B0aW9uYWw8Q29sb3I+IGJhY2tncm91bmRDb2xvcjsKKyAg
ICBpZiAodHJhbnNwYXJlbnQpCisgICAgICAgIGJhY2tncm91bmRDb2xvciA9IENvbG9yKENvbG9y
Ojp0cmFuc3BhcmVudCk7CisgICAgZG9jdW1lbnQtPnZpZXcoKS0+dXBkYXRlQmFja2dyb3VuZFJl
Y3Vyc2l2ZWx5KGJhY2tncm91bmRDb2xvcik7CiAgICAgcmV0dXJuIHsgfTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCAzYWJkOTU3NTEzMy4uYTJlYTQ2NjkzMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODAgQEAK
KzIwMTktMDEtMTggIFBoaWxpcHBlIE5vcm1hbmQgPHBub3JtYW5kQGlnYWxpYS5jb20+IGFuZCBD
YXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbV1BF
XSBBZGQgQVBJIGZvciB3ZWJ2aWV3IGJhY2tncm91bmQgY29sb3IgY29uZmlndXJhdGlvbgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyMzA1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTWljaGFlbCBDYXRhbnphcm8uCisKKyAgICAgICAgSW4gdGhlIGNh
c2Ugb2YgV1BFIHdlIG5lZWQgdG8gc2VuZCB0aGUgYmFja2dyb3VuZCBjb2xvciB0byB0aGUgd2Vi
IHByb2Nlc3MgdG8gYmUgdXNlZCBhcyB0aGUgYmFja2dyb3VuZCBjb2xvciBvZgorICAgICAgICB0
aGUgcGFnZS4gVGhpcyBwYXRjaCBhZGFwdHMgdGhlIEdUSysgaW1wbGVtZW50YXRpb24gdG8gZG8g
dGhlIHNhbWUsIHNpbmNlIGl0J3MgYSBsb3Qgc2ltcGxlci4gVGhlIHBhdGNoIGFsc28KKyAgICAg
ICAgcmVtb3ZlcyB0aGUgU2V0RHJhd3NCYWNrZ3JvdW5kIG1lc3NhZ2UgaW4gZmF2b3Igb2YgdGhl
IG5ldyBTZXRCYWNrZ3JvdW5kQ29sb3IgbWVzc2FnZSB0aGF0IHJlY2VpdmVzIGFuIG9wdGlvbmFs
CisgICAgICAgIGNvbG9yLgorCisgICAgICAgICogUGxhdGZvcm1XUEUuY21ha2U6IEFkZCBuZXcg
V1BFIEFQSSBmb3IgV2ViS2l0Q29sb3IgYm94ZWQgdHlwZS4KKyAgICAgICAgKiBTaGFyZWQvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwOgorICAgICAgICAo
V2ViS2l0OjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnBhaW50VG9DdXJyZW50R0xDb250ZXh0
KTogUmVtb3ZlIGJhY2tncm91bmQgcmVuZGVyaW5nIGFuZCBvcGFjaXR5IGhhbmRsaW5nLgorICAg
ICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2Vu
ZS5oOgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9z
aXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpUaHJlYWRlZENv
bXBvc2l0b3I6OnJlbmRlckxheWVyVHJlZSk6IFJlbW92ZSBkcmF3c0Jha2dyb3VuZCBhbmQgYWx3
YXlzIGNsZWFyIHRoZSBjb250ZXh0IHdpdGgKKyAgICAgICAgdHJhbnNwYXJlbnQgY29sb3IuCisg
ICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1Ro
cmVhZGVkQ29tcG9zaXRvci5oOgorICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6
ZW5jb2RlIGNvbnN0KTogUmVwbGFjZSBkcmF3c0JhY2tncm91bmQgd2l0aCBiYWNrZ3JvdW5kQ29s
b3IuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6
IERpdHRvLgorICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmg6Cisg
ICAgICAgICogU291cmNlc1dQRS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdFdlYlZpZXcuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZp
ZXdHdGsuY3BwOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X3NldF9iYWNrZ3JvdW5kX2NvbG9y
KToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19nZXRfYmFja2dyb3VuZF9jb2xvcik6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0Q29sb3IuY3BwOiBBZGRlZC4KKyAgICAgICAg
KHdlYmtpdF9jb2xvcl9jb3B5KToKKyAgICAgICAgKHdlYmtpdF9jb2xvcl9mcmVlKToKKyAgICAg
ICAgKHdlYmtpdENvbG9yVG9XZWJDb3JlQ29sb3IpOgorICAgICAgICAod2Via2l0Q29sb3JGaWxs
RnJvbVdlYkNvcmVDb2xvcik6CisgICAgICAgICh3ZWJraXRfY29sb3JfcGFyc2UpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdENvbG9yLmg6IEFkZGVkLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvd3BlL1dlYktpdENvbG9yUHJpdmF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3Lmg6IEltcGxlbWVudCB3ZWJraXRfd2ViX3Zp
ZXdfc2V0X2JhY2tncm91bmRfY29sb3IgQVBJLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3Bl
L1dlYktpdFdlYlZpZXdXUEUuY3BwOiBEaXR0by4KKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19z
ZXRfYmFja2dyb3VuZF9jb2xvcik6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2JhY2tn
cm91bmRfY29sb3IpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTAuMS1z
ZWN0aW9ucy50eHQ6IEFkZCBuZXcgc3ltYm9scy4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXREcmF3c0JhY2tn
cm91bmQpOiBTZXQgYSB0cmFuc3BhcmVudCBiYWNrZ3JvdW5kIGNvbG9yIHdoZW4gZmFsc2UgaXMg
cGFzc2VkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldEJhY2tncm91bmRDb2xv
cik6IFNlbmQgYmFja2dyb3VuZCBjb2xvciB0byB0aGUgV2ViUHJvY2Vzcy4KKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMpOiBSZXBsYWNlIGRyYXdzQmFj
a2dyb3VuZCB3aXRoIGJhY2tncm91bmRDb2xvci4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZHJhd3NCYWNrZ3JvdW5k
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpiYWNrZ3JvdW5kQ29sb3Ig
Y29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9jYWlyby9CYWNraW5nU3RvcmVDYWlyby5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkJhY2tpbmdTdG9yZTo6aW5jb3Jwb3JhdGVVcGRhdGUpOiBSZW1v
dmUgR1RLKyBjb2RlIHRvIGhhbmRsZSBiYWNrZ3JvdW5kIGNvbG9yLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAqIFVJUHJvY2Vz
cy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUuaDogTWFrZSBwYWludCgpIHB1cmUgdmlydHVh
bCBhbmQgcmVtb3ZlIHRoZSBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKiBVSVByb2Nlc3MvZ3Rr
L0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkFj
Y2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZDo6cGFpbnQpOiBEb3Qgbm90IGNhbGwgQWNjZWxl
cmF0ZWRCYWNraW5nU3RvcmU6OnBhaW50KCkgbm93IHRoYXQgaXMgcHVyZSB2aXJ0dWFsLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTEuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVgxMTo6cGFpbnQpOiBEaXR0by4K
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OnRyYW5zaXRpb25U
b0NvbW1pdHRlZEZvck5ld1BhZ2UpOiBVc2UgYmFja2dyb3VuZCBjb2xvciBhcyBwcm92aWRlZCBi
eSB0aGUKKyAgICAgICAgVUlQcm9jZXNzIHdoZW4gY3JlYXRpbmcgdGhlIEZyYW1lVmlldy4KKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3aW5nQXJlYS5jcHA6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZExheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6VGhyZWFkZWRDb29yZGluYXRlZExheWVy
VHJlZUhvc3Q6OnNldElzRGlzY2FyZGFibGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Lmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkRyYXdpbmdBcmVhSW1wbDo6ZGlzcGxheSk6IFJlbW92ZSBzcGVjaWFsIGNhc2UgZm9yIHRyYW5z
cGFyZW50IGJhY2tncm91bmQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJl
ZUhvc3QuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldEJhY2tncm91bmRDb2xvcik6IE5ldyBBUEkgZm9yIGJh
Y2tncm91bmQgY29sb3IgY29uZmlndXJhdGlvbi4gUHJveGllcyB0byBGcmFtZVZpZXcgYW5kIERy
YXdpbmdBcmVhLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OmJhY2tncm91bmRDb2xvciBjb25zdCk6IFJlYWQtb25seSBh
Y2Nlc3MgdG8gdGhlIGN1cnJlbnQgYmFja2dyb3VuZCBjb2xvci4KKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjogUmVwbGFjZSBTZXREcmF3c0JhY2tncm91
bmQgbWVzc2FnZSB3aXRoIFNldEJhY2tncm91bmRDb2xvci4KKwogMjAxOS0wMS0xNiAgQ2FybG9z
IEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS11bV1BF
XSBBZGQgd2ViIGV4dGVuc2lvbnMgQVBJIHRvIHdoaXRlbGlzdCBhY2Nlc3MgdG8gYSBzZWN1cml0
eSBvcmlnaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1XUEUuY21ha2UgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtV1BFLmNtYWtlCmluZGV4IGRmMTU5NGY3YzgyLi4yNTgzYTBi
ZGIzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdQRS5jbWFrZQorKysgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtV1BFLmNtYWtlCkBAIC05OCw2ICs5OCw3IEBAIHNldChXUEVf
QVBJX0lOU1RBTExFRF9IRUFERVJTCiAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL3dw
ZS9XZWJLaXRCYWNrRm9yd2FyZExpc3QuaAogICAgICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQ
SS93cGUvV2ViS2l0QmFja0ZvcndhcmRMaXN0SXRlbS5oCiAgICAgJHtXRUJLSVRfRElSfS9VSVBy
b2Nlc3MvQVBJL3dwZS9XZWJLaXRDcmVkZW50aWFsLmgKKyAgICAke1dFQktJVF9ESVJ9L1VJUHJv
Y2Vzcy9BUEkvd3BlL1dlYktpdENvbG9yLmgKICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9B
UEkvd3BlL1dlYktpdENvbnRleHRNZW51LmgKICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9B
UEkvd3BlL1dlYktpdENvbnRleHRNZW51QWN0aW9ucy5oCiAgICAgJHtXRUJLSVRfRElSfS9VSVBy
b2Nlc3MvQVBJL3dwZS9XZWJLaXRDb250ZXh0TWVudUl0ZW0uaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2Nl
bmUuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGlu
YXRlZEdyYXBoaWNzU2NlbmUuY3BwCmluZGV4IGE1ZjE1ZjAxYTUwLi5kYTJmOGE1MjdkZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGlu
YXRlZEdyYXBoaWNzU2NlbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcApAQCAtNjUsNyArNjUsNyBA
QCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6YXBwbHlTdGF0ZUNoYW5nZXMoY29uc3Qg
VmVjdG9yPENvb3JkaW5hdGVkR3JhcGhpYwogICAgICAgICBjb21taXRTY2VuZVN0YXRlKHN0YXRl
Lm5pY29zaWEpOwogfQogCi12b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6cGFpbnRUb0N1
cnJlbnRHTENvbnRleHQoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCwgZmxvYXQg
b3BhY2l0eSwgY29uc3QgRmxvYXRSZWN0JiBjbGlwUmVjdCwgY29uc3QgQ29sb3ImIGJhY2tncm91
bmRDb2xvciwgYm9vbCBkcmF3c0JhY2tncm91bmQsIFRleHR1cmVNYXBwZXI6OlBhaW50RmxhZ3Mg
UGFpbnRGbGFncykKK3ZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpwYWludFRvQ3VycmVu
dEdMQ29udGV4dChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4LCBjb25zdCBGbG9h
dFJlY3QmIGNsaXBSZWN0LCBUZXh0dXJlTWFwcGVyOjpQYWludEZsYWdzIFBhaW50RmxhZ3MpCiB7
CiAgICAgdXBkYXRlU2NlbmVTdGF0ZSgpOwogCkBAIC03OCwxOCArNzgsOCBAQCB2b2lkIENvb3Jk
aW5hdGVkR3JhcGhpY3NTY2VuZTo6cGFpbnRUb0N1cnJlbnRHTENvbnRleHQoY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaQogICAgIG1fdGV4dHVyZU1hcHBlci0+YmVnaW5QYWludGluZyhQYWludEZs
YWdzKTsKICAgICBtX3RleHR1cmVNYXBwZXItPmJlZ2luQ2xpcChUcmFuc2Zvcm1hdGlvbk1hdHJp
eCgpLCBjbGlwUmVjdCk7CiAKLSAgICBpZiAoZHJhd3NCYWNrZ3JvdW5kKSB7Ci0gICAgICAgIFJH
QkEzMiByZ2JhID0gbWFrZVJHQkEzMkZyb21GbG9hdHMoYmFja2dyb3VuZENvbG9yLnJlZCgpLAot
ICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yLmdyZWVuKCksIGJhY2tncm91bmRDb2xvci5ibHVl
KCksCi0gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3IuYWxwaGEoKSAqIG9wYWNpdHkpOwotICAg
ICAgICBtX3RleHR1cmVNYXBwZXItPmRyYXdTb2xpZENvbG9yKGNsaXBSZWN0LCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCgpLCBDb2xvcihyZ2JhKSwgdHJ1ZSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIG1f
dGV4dHVyZU1hcHBlci0+Y2xlYXJDb2xvcihtX3ZpZXdCYWNrZ3JvdW5kQ29sb3IpOwotCi0gICAg
aWYgKGN1cnJlbnRSb290TGF5ZXItPm9wYWNpdHkoKSAhPSBvcGFjaXR5IHx8IGN1cnJlbnRSb290
TGF5ZXItPnRyYW5zZm9ybSgpICE9IG1hdHJpeCkgewotICAgICAgICBjdXJyZW50Um9vdExheWVy
LT5zZXRPcGFjaXR5KG9wYWNpdHkpOworICAgIGlmIChjdXJyZW50Um9vdExheWVyLT50cmFuc2Zv
cm0oKSAhPSBtYXRyaXgpCiAgICAgICAgIGN1cnJlbnRSb290TGF5ZXItPnNldFRyYW5zZm9ybSht
YXRyaXgpOwotICAgIH0KIAogICAgIGN1cnJlbnRSb290TGF5ZXItPnBhaW50KCk7CiAgICAgbV9m
cHNDb3VudGVyLnVwZGF0ZUZQU0FuZERpc3BsYXkoKm1fdGV4dHVyZU1hcHBlciwgY2xpcFJlY3Qu
bG9jYXRpb24oKSwgbWF0cml4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmggYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5o
CmluZGV4IGQ0YmI1ODI2OGZlLi4yZTZiMzM1ZGJiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3NTY2VuZS5oCkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5D
b29yZGluYXRlZEdyYXBoaWNzU2NlbmUoKTsKIAogICAgIHZvaWQgYXBwbHlTdGF0ZUNoYW5nZXMo
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZT4mKTsKLSAgICB2
b2lkIHBhaW50VG9DdXJyZW50R0xDb250ZXh0KGNvbnN0IFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9u
TWF0cml4JiwgZmxvYXQsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6
OkNvbG9yJiBiYWNrZ3JvdW5kQ29sb3IsIGJvb2wgZHJhd3NCYWNrZ3JvdW5kLCBXZWJDb3JlOjpU
ZXh0dXJlTWFwcGVyOjpQYWludEZsYWdzID0gMCk7CisgICAgdm9pZCBwYWludFRvQ3VycmVudEdM
Q29udGV4dChjb25zdCBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IFdlYkNv
cmU6OkZsb2F0UmVjdCYsIFdlYkNvcmU6OlRleHR1cmVNYXBwZXI6OlBhaW50RmxhZ3MgPSAwKTsK
ICAgICB2b2lkIGRldGFjaCgpOwogCiAgICAgLy8gVGhlIHBhaW50aW5nIHRocmVhZCBtdXN0IGxv
Y2sgdGhlIG1haW4gdGhyZWFkIHRvIHVzZSBiZWxvdyB0d28gbWV0aG9kcywgYmVjYXVzZSB0d28g
bWV0aG9kcyBhY2Nlc3MgbWVtYmVycyB0aGF0IHRoZSBtYWluIHRocmVhZCBtYW5hZ2VzLiBTZWUg
bV9jbGllbnQuCkBAIC04Miw5ICs4Miw2IEBAIHB1YmxpYzoKICAgICBib29sIGlzQWN0aXZlKCkg
Y29uc3QgeyByZXR1cm4gbV9pc0FjdGl2ZTsgfQogICAgIHZvaWQgc2V0QWN0aXZlKGJvb2wgYWN0
aXZlKSB7IG1faXNBY3RpdmUgPSBhY3RpdmU7IH0KIAotICAgIHZvaWQgc2V0Vmlld0JhY2tncm91
bmRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYgY29sb3IpIHsgbV92aWV3QmFja2dyb3VuZENv
bG9yID0gY29sb3I7IH0KLSAgICBXZWJDb3JlOjpDb2xvciB2aWV3QmFja2dyb3VuZENvbG9yKCkg
Y29uc3QgeyByZXR1cm4gbV92aWV3QmFja2dyb3VuZENvbG9yOyB9Ci0KIHByaXZhdGU6CiAgICAg
dm9pZCBjb21taXRTY2VuZVN0YXRlKGNvbnN0IFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NT
dGF0ZTo6Tmljb3NpYVN0YXRlJik7CiAgICAgdm9pZCB1cGRhdGVTY2VuZVN0YXRlKCk7CkBAIC0x
MTMsNyArMTEwLDYgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6VGV4
dHVyZU1hcHBlckxheWVyPiBtX3Jvb3RMYXllcjsKIAogICAgIE5pY29zaWE6OlBsYXRmb3JtTGF5
ZXI6OkxheWVySUQgbV9yb290TGF5ZXJJRCB7IDAgfTsKLSAgICBXZWJDb3JlOjpDb2xvciBtX3Zp
ZXdCYWNrZ3JvdW5kQ29sb3IgeyBXZWJDb3JlOjpDb2xvcjo6d2hpdGUgfTsKIAogICAgIFdlYkNv
cmU6OlRleHR1cmVNYXBwZXJGUFNDb3VudGVyIG1fZnBzQ291bnRlcjsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9z
aXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRp
bmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcApp
bmRleCA3NTIyZjg0ZWE4Zi4uODA1ZjIzMzBjY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29t
cG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGlj
cy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcApAQCAtMTU2LDEzICsx
NTYsNiBAQCB2b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6c2V0Vmlld3BvcnRTaXplKGNvbnN0IElu
dFNpemUmIHZpZXdwb3J0U2l6ZSwgZmxvYXQgc2NhbAogICAgIG1fY29tcG9zaXRpbmdSdW5Mb29w
LT5zY2hlZHVsZVVwZGF0ZSgpOwogfQogCi12b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6c2V0RHJh
d3NCYWNrZ3JvdW5kKGJvb2wgZHJhd3NCYWNrZ3JvdW5kKQotewotICAgIExvY2tIb2xkZXIgbG9j
a2VyKG1fYXR0cmlidXRlcy5sb2NrKTsKLSAgICBtX2F0dHJpYnV0ZXMuZHJhd3NCYWNrZ3JvdW5k
ID0gZHJhd3NCYWNrZ3JvdW5kOwotICAgIG1fY29tcG9zaXRpbmdSdW5Mb29wLT5zY2hlZHVsZVVw
ZGF0ZSgpOwotfQotCiB2b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6dXBkYXRlVmlld3BvcnQoKQog
ewogICAgIG1fY29tcG9zaXRpbmdSdW5Mb29wLT5zY2hlZHVsZVVwZGF0ZSgpOwpAQCAtMTk0LDgg
KzE4Nyw4IEBAIHZvaWQgVGhyZWFkZWRDb21wb3NpdG9yOjpyZW5kZXJMYXllclRyZWUoKQogICAg
IFdlYkNvcmU6OkludFNpemUgdmlld3BvcnRTaXplOwogICAgIFdlYkNvcmU6OkludFBvaW50IHNj
cm9sbFBvc2l0aW9uOwogICAgIGZsb2F0IHNjYWxlRmFjdG9yOwotICAgIGJvb2wgZHJhd3NCYWNr
Z3JvdW5kOwogICAgIGJvb2wgbmVlZHNSZXNpemU7CisKICAgICBWZWN0b3I8V2ViQ29yZTo6Q29v
cmRpbmF0ZWRHcmFwaGljc1N0YXRlPiBzdGF0ZXM7CiAKICAgICB7CkBAIC0yMDMsNyArMTk2LDYg
QEAgdm9pZCBUaHJlYWRlZENvbXBvc2l0b3I6OnJlbmRlckxheWVyVHJlZSgpCiAgICAgICAgIHZp
ZXdwb3J0U2l6ZSA9IG1fYXR0cmlidXRlcy52aWV3cG9ydFNpemU7CiAgICAgICAgIHNjcm9sbFBv
c2l0aW9uID0gbV9hdHRyaWJ1dGVzLnNjcm9sbFBvc2l0aW9uOwogICAgICAgICBzY2FsZUZhY3Rv
ciA9IG1fYXR0cmlidXRlcy5zY2FsZUZhY3RvcjsKLSAgICAgICAgZHJhd3NCYWNrZ3JvdW5kID0g
bV9hdHRyaWJ1dGVzLmRyYXdzQmFja2dyb3VuZDsKICAgICAgICAgbmVlZHNSZXNpemUgPSBtX2F0
dHJpYnV0ZXMubmVlZHNSZXNpemU7CiAKICAgICAgICAgc3RhdGVzID0gV1RGTW92ZShtX2F0dHJp
YnV0ZXMuc3RhdGVzKTsKQEAgLTI0NywxNCArMjM5LDExIEBAIHZvaWQgVGhyZWFkZWRDb21wb3Np
dG9yOjpyZW5kZXJMYXllclRyZWUoKQogICAgIHZpZXdwb3J0VHJhbnNmb3JtLnNjYWxlKHNjYWxl
RmFjdG9yKTsKICAgICB2aWV3cG9ydFRyYW5zZm9ybS50cmFuc2xhdGUoLXNjcm9sbFBvc2l0aW9u
LngoKSwgLXNjcm9sbFBvc2l0aW9uLnkoKSk7CiAKLSAgICBpZiAoIWRyYXdzQmFja2dyb3VuZCkg
ewotICAgICAgICBnbENsZWFyQ29sb3IoMCwgMCwgMCwgMCk7Ci0gICAgICAgIGdsQ2xlYXIoR0xf
Q09MT1JfQlVGRkVSX0JJVCk7Ci0gICAgfQorICAgIGdsQ2xlYXJDb2xvcigwLCAwLCAwLCAwKTsK
KyAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOwogCiAgICAgbV9zY2VuZS0+YXBwbHlT
dGF0ZUNoYW5nZXMoc3RhdGVzKTsKLSAgICBtX3NjZW5lLT5wYWludFRvQ3VycmVudEdMQ29udGV4
dCh2aWV3cG9ydFRyYW5zZm9ybSwgMSwgRmxvYXRSZWN0IHsgRmxvYXRQb2ludCB7IH0sIHZpZXdw
b3J0U2l6ZSB9LAotICAgICAgICBDb2xvcjo6dHJhbnNwYXJlbnQsICFkcmF3c0JhY2tncm91bmQs
IG1fcGFpbnRGbGFncyk7CisgICAgbV9zY2VuZS0+cGFpbnRUb0N1cnJlbnRHTENvbnRleHQodmll
d3BvcnRUcmFuc2Zvcm0sIEZsb2F0UmVjdCB7IEZsb2F0UG9pbnQgeyB9LCB2aWV3cG9ydFNpemUg
fSwgbV9wYWludEZsYWdzKTsKIAogICAgIG1fY29udGV4dC0+c3dhcEJ1ZmZlcnMoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRl
ZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9D
b29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3Iu
aAppbmRleCA2ZDcwNTM4NTBkYS4uYjYzMWZjMDM1ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVk
Q29tcG9zaXRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5oCkBAIC03MCw3ICs3MCw2
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNjYWxlRmFjdG9yKGZsb2F0KTsKICAgICB2b2lkIHNl
dFNjcm9sbFBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgZmxvYXQgc2NhbGUpOwog
ICAgIHZvaWQgc2V0Vmlld3BvcnRTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBmbG9hdCBz
Y2FsZSk7Ci0gICAgdm9pZCBzZXREcmF3c0JhY2tncm91bmQoYm9vbCk7CiAKICAgICB2b2lkIHVw
ZGF0ZVNjZW5lU3RhdGUoY29uc3QgV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlJik7
CiAKQEAgLTExMiw5ICsxMTEsNyBAQCBwcml2YXRlOgogICAgICAgICBXZWJDb3JlOjpJbnRTaXpl
IHZpZXdwb3J0U2l6ZTsKICAgICAgICAgV2ViQ29yZTo6SW50UG9pbnQgc2Nyb2xsUG9zaXRpb247
CiAgICAgICAgIGZsb2F0IHNjYWxlRmFjdG9yIHsgMSB9OwotICAgICAgICBib29sIGRyYXdzQmFj
a2dyb3VuZCB7IHRydWUgfTsKICAgICAgICAgYm9vbCBuZWVkc1Jlc2l6ZSB7IGZhbHNlIH07Ci0K
ICAgICAgICAgVmVjdG9yPFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZT4gc3RhdGVz
OwogCiAgICAgICAgIGJvb2wgY2xpZW50UmVuZGVyc05leHRGcmFtZSB7IGZhbHNlIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCmlu
ZGV4IGIxNjRjYWQ3Y2U2Li4xMjUxOWI3MTFkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAgLTM4LDcgKzM4LDYgQEAgdm9p
ZCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAogICAgIGVuY29kZXIgPDwgc3RvcmU7CiAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKGRy
YXdpbmdBcmVhVHlwZSk7CiAgICAgZW5jb2RlciA8PCBwYWdlR3JvdXBEYXRhOwotICAgIGVuY29k
ZXIgPDwgZHJhd3NCYWNrZ3JvdW5kOwogICAgIGVuY29kZXIgPDwgaXNFZGl0YWJsZTsKICAgICBl
bmNvZGVyIDw8IHVuZGVybGF5Q29sb3I7CiAgICAgZW5jb2RlciA8PCB1c2VGaXhlZExheW91dDsK
QEAgLTEyMiw2ICsxMjEsNyBAQCB2b2lkIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29k
ZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5T
SU9OUykKICAgICBlbmNvZGVyIDw8IGNvbnRlbnRSdWxlTGlzdHM7CiAjZW5kaWYKKyAgICBlbmNv
ZGVyIDw8IGJhY2tncm91bmRDb2xvcjsKIH0KIAogT3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycz4gV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2RlciYg
ZGVjb2RlcikKQEAgLTE0MCw4ICsxNDAsNiBAQCBPcHRpb25hbDxXZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzPiBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZAogICAg
IGlmICghcGFnZUdyb3VwRGF0YSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICBw
YXJhbWV0ZXJzLnBhZ2VHcm91cERhdGEgPSBXVEZNb3ZlKCpwYWdlR3JvdXBEYXRhKTsKLSAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuZHJhd3NCYWNrZ3JvdW5kKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMu
aXNFZGl0YWJsZSkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShwYXJhbWV0ZXJzLnVuZGVybGF5Q29sb3IpKQpAQCAtMzU0LDYgKzM1MiwxMiBA
QCBPcHRpb25hbDxXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzPiBXZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZAogICAgIHBhcmFtZXRlcnMuY29udGVudFJ1bGVMaXN0
cyA9IFdURk1vdmUoKmNvbnRlbnRSdWxlTGlzdHMpOwogI2VuZGlmCiAKKyAgICBPcHRpb25hbDxP
cHRpb25hbDxXZWJDb3JlOjpDb2xvcj4+IGJhY2tncm91bmRDb2xvcjsKKyAgICBkZWNvZGVyID4+
IGJhY2tncm91bmRDb2xvcjsKKyAgICBpZiAoIWJhY2tncm91bmRDb2xvcikKKyAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICBwYXJhbWV0ZXJzLmJhY2tncm91bmRDb2xvciA9IFdURk1v
dmUoKmJhY2tncm91bmRDb2xvcik7CisKICAgICByZXR1cm4gV1RGTW92ZShwYXJhbWV0ZXJzKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cy5oCmluZGV4IGQxYjAzMDNkNzJmLi42ZmFlMzdlODQyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtNzMsNyArNzMsNiBAQCBz
dHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgRHJhd2luZ0FyZWFUeXBlIGRy
YXdpbmdBcmVhVHlwZTsKICAgICBXZWJQYWdlR3JvdXBEYXRhIHBhZ2VHcm91cERhdGE7CiAKLSAg
ICBib29sIGRyYXdzQmFja2dyb3VuZDsKICAgICBib29sIGlzRWRpdGFibGU7CiAKICAgICBXZWJD
b3JlOjpDb2xvciB1bmRlcmxheUNvbG9yOwpAQCAtMTkwLDYgKzE4OSw4IEBAIHN0cnVjdCBXZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQog
ICAgIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERh
dGE+PiBjb250ZW50UnVsZUxpc3RzOwogI2VuZGlmCisKKyAgICBPcHRpb25hbDxXZWJDb3JlOjpD
b2xvcj4gYmFja2dyb3VuZENvbG9yOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNXUEUudHh0IGIvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzV1BFLnR4dAppbmRleCA1YTA4ZTVkZmI4OC4uNDFiYzYxNDhmZWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU291cmNlc1dQRS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzV1BF
LnR4dApAQCAtMTcwLDYgKzE3MCw3IEBAIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXaW5kb3dQ
cm9wZXJ0aWVzLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvd3BlL0NvbXBvc2l0aW5nTWFu
YWdlclByb3h5LmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBs
LmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvd3BlL1Njcm9sbEdlc3R1cmVDb250cm9sbGVy
LmNwcCBAbm8tdW5pZnkKK1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdENvbG9yLmNwcCBAbm8tdW5p
ZnkKIFVJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFNjcmlwdERpYWxvZ1dQRS5jcHAgQG5vLXVuaWZ5
CiBVSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3QmFja2VuZC5jcHAgQG5vLXVuaWZ5CiBV
SVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3V1BFLmNwcCBAbm8tdW5pZnkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDI2ZDhjYTA1
MWJjLi4zMDgzZTAyMWU0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tCkBAIC02ODcsNyArNjg3LDggQEAgc3RhdGljIHZvaWQgdmFsaWRhdGUo
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbikKIAogICAgIF9wYWdlID0gW19j
b250ZW50VmlldyBwYWdlXTsKICAgICBbc2VsZiBfZGlzcGF0Y2hTZXREZXZpY2VPcmllbnRhdGlv
bjpkZXZpY2VPcmllbnRhdGlvbigpXTsKLSAgICBfcGFnZS0+c2V0RHJhd3NCYWNrZ3JvdW5kKHNl
bGYub3BhcXVlKTsKKyAgICBpZiAoIXNlbGYub3BhcXVlKQorICAgICAgICBfcGFnZS0+c2V0QmFj
a2dyb3VuZENvbG9yKFdlYkNvcmU6OkNvbG9yKFdlYkNvcmU6OkNvbG9yOjp0cmFuc3BhcmVudCkp
OwogCiAgICAgW19jb250ZW50VmlldyBsYXllcl0uYW5jaG9yUG9pbnQgPSBDR1BvaW50WmVybzsK
ICAgICBbX2NvbnRlbnRWaWV3IHNldEZyYW1lOmJvdW5kc107CkBAIC0yNTAyLDcgKzI1MDMsMTAg
QEAgc3RhdGljIFdlYkNvcmU6OkZsb2F0UG9pbnQgY29uc3RyYWluQ29udGVudE9mZnNldChXZWJD
b3JlOjpGbG9hdFBvaW50IGNvbnRlbnRPZmYKICAgICBpZiAoIV9wYWdlKQogICAgICAgICByZXR1
cm47CiAKLSAgICBfcGFnZS0+c2V0RHJhd3NCYWNrZ3JvdW5kKG9wYXF1ZSk7CisgICAgT3B0aW9u
YWw8V2ViQ29yZTo6Q29sb3I+IGJhY2tncm91bmRDb2xvcjsKKyAgICBpZiAoIW9wYXF1ZSkKKyAg
ICAgICAgYmFja2dyb3VuZENvbG9yID0gV2ViQ29yZTo6Q29sb3IoV2ViQ29yZTo6Q29sb3I6OnRy
YW5zcGFyZW50KTsKKyAgICBfcGFnZS0+c2V0QmFja2dyb3VuZENvbG9yKGJhY2tncm91bmRDb2xv
cik7CiAgICAgW3NlbGYgX3VwZGF0ZVNjcm9sbFZpZXdCYWNrZ3JvdW5kXTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcAppbmRl
eCBlNDEzZmJhM2U0Ny4uYmZkOWI2MDM5MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCkBAIC0zOTg4LDc0ICszOTg4LDYgQEAg
dm9pZCB3ZWJraXRXZWJWaWV3V2ViUHJvY2Vzc1Rlcm1pbmF0ZWQoV2ViS2l0V2ViVmlldyogd2Vi
VmlldywgV2ViS2l0V2ViUHJvY2Vzc1QKICAgICBnX3NpZ25hbF9lbWl0KHdlYlZpZXcsIHNpZ25h
bHNbV0VCX1BST0NFU1NfVEVSTUlOQVRFRF0sIDAsIHJlYXNvbik7CiB9CiAKLSNpZiBQTEFURk9S
TShHVEspCi0vKioKLSAqIHdlYmtpdF93ZWJfdmlld19zZXRfYmFja2dyb3VuZF9jb2xvcjoKLSAq
IEB3ZWJfdmlldzogYSAjV2ViS2l0V2ViVmlldwotICogQHJnYmE6IGEgI0dka1JHQkEKLSAqCi0g
KiBTZXRzIHRoZSBjb2xvciB0aGF0IHdpbGwgYmUgdXNlZCB0byBkcmF3IHRoZSBAd2ViX3ZpZXcg
YmFja2dyb3VuZCBiZWZvcmUKLSAqIHRoZSBhY3R1YWwgY29udGVudHMgYXJlIHJlbmRlcmVkLiBO
b3RlIHRoYXQgaWYgdGhlIHdlYiBwYWdlIGxvYWRlZCBpbiBAd2ViX3ZpZXcKLSAqIHNwZWNpZmll
cyBhIGJhY2tncm91bmQgY29sb3IsIGl0IHdpbGwgdGFrZSBwcmVjZWRlbmNlIG92ZXIgdGhlIEBy
Z2JhIGNvbG9yLgotICogQnkgZGVmYXVsdCB0aGUgQHdlYl92aWV3IGJhY2tncm91bmQgY29sb3Ig
aXMgb3BhcXVlIHdoaXRlLgotICogTm90ZSB0aGF0IHRoZSBwYXJlbnQgd2luZG93IG11c3QgaGF2
ZSBhIFJHQkEgdmlzdWFsIGFuZAotICogI0d0a1dpZGdldDphcHAtcGFpbnRhYmxlIHByb3BlcnR5
IHNldCB0byAlVFJVRSBmb3IgYmFja2dyb3VuZHMgY29sb3JzIHRvIHdvcmsuCi0gKgotICogPGlu
Zm9ybWFsZXhhbXBsZT48cHJvZ3JhbWxpc3Rpbmc+Ci0gKiBzdGF0aWMgdm9pZCBicm93c2VyX3dp
bmRvd19zZXRfYmFja2dyb3VuZF9jb2xvciAoQnJvd3NlcldpbmRvdyAqd2luZG93LAotICogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdka1JH
QkEgKnJnYmEpCi0gKiB7Ci0gKiAgICAgV2ViS2l0V2ViVmlldyAqd2ViX3ZpZXc7Ci0gKiAgICAg
R2RrU2NyZWVuICpzY3JlZW4gPSBndGtfd2luZG93X2dldF9zY3JlZW4gKEdUS19XSU5ET1cgKHdp
bmRvdykpOwotICogICAgIEdka1Zpc3VhbCAqcmdiYV92aXN1YWwgPSBnZGtfc2NyZWVuX2dldF9y
Z2JhX3Zpc3VhbCAoc2NyZWVuKTsKLSAqCi0gKiAgICAgaWYgKCFyZ2JhX3Zpc3VhbCkKLSAqICAg
ICAgICAgIHJldHVybjsKLSAqCi0gKiAgICAgZ3RrX3dpZGdldF9zZXRfdmlzdWFsIChHVEtfV0lE
R0VUICh3aW5kb3cpLCByZ2JhX3Zpc3VhbCk7Ci0gKiAgICAgZ3RrX3dpZGdldF9zZXRfYXBwX3Bh
aW50YWJsZSAoR1RLX1dJREdFVCAod2luZG93KSwgVFJVRSk7Ci0gKgotICogICAgIHdlYl92aWV3
ID0gYnJvd3Nlcl93aW5kb3dfZ2V0X3dlYl92aWV3ICh3aW5kb3cpOwotICogICAgIHdlYmtpdF93
ZWJfdmlld19zZXRfYmFja2dyb3VuZF9jb2xvciAod2ViX3ZpZXcsIHJnYmEpOwotICogfQotICog
PC9wcm9ncmFtbGlzdGluZz48L2luZm9ybWFsZXhhbXBsZT4KLSAqCi0gKiBTaW5jZTogMi44Ci0g
Ki8KLXZvaWQgd2Via2l0X3dlYl92aWV3X3NldF9iYWNrZ3JvdW5kX2NvbG9yKFdlYktpdFdlYlZp
ZXcqIHdlYlZpZXcsIGNvbnN0IEdka1JHQkEqIHJnYmEpCi17Ci0gICAgZ19yZXR1cm5faWZfZmFp
bChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldykpOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwocmdi
YSk7Ci0KLSAgICBDb2xvciBjb2xvcigqcmdiYSk7Ci0gICAgYXV0byYgcGFnZSA9IGdldFBhZ2Uo
d2ViVmlldyk7Ci0gICAgaWYgKHBhZ2UuYmFja2dyb3VuZENvbG9yKCkgPT0gY29sb3IpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIHBhZ2Uuc2V0QmFja2dyb3VuZENvbG9yKGNvbG9yKTsKLSAgICBw
YWdlLnNldERyYXdzQmFja2dyb3VuZChjb2xvciA9PSBDb2xvcjo6d2hpdGUpOwotfQotCi0vKioK
LSAqIHdlYmtpdF93ZWJfdmlld19nZXRfYmFja2dyb3VuZF9jb2xvcjoKLSAqIEB3ZWJfdmlldzog
YSAjV2ViS2l0V2ViVmlldwotICogQHJnYmE6IChvdXQpOiBhICNHZGtSR0JBIHRvIGZpbGwgaW4g
d2l0aCB0aGUgYmFja2dyb3VuZCBjb2xvcgotICoKLSAqIEdldHMgdGhlIGNvbG9yIHRoYXQgaXMg
dXNlZCB0byBkcmF3IHRoZSBAd2ViX3ZpZXcgYmFja2dyb3VuZCBiZWZvcmUKLSAqIHRoZSBhY3R1
YWwgY29udGVudHMgYXJlIHJlbmRlcmVkLgotICogRm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlIGFs
c28gd2Via2l0X3dlYl92aWV3X3NldF9iYWNrZ3JvdW5kX2NvbG9yKCkKLSAqCi0gKiBTaW5jZTog
Mi44Ci0gKi8KLXZvaWQgd2Via2l0X3dlYl92aWV3X2dldF9iYWNrZ3JvdW5kX2NvbG9yKFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcsIEdka1JHQkEqIHJnYmEpCi17Ci0gICAgZ19yZXR1cm5faWZfZmFp
bChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldykpOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwocmdi
YSk7Ci0KLSAgICAqcmdiYSA9IGdldFBhZ2Uod2ViVmlldykuYmFja2dyb3VuZENvbG9yKCk7Ci19
Ci0jZW5kaWYgLy8gUExBVEZPUk0oR1RLKQotCiAvKgogICogd2Via2l0X3dlYl92aWV3X2lzX2Vk
aXRhYmxlOgogICogQHdlYl92aWV3OiBhICNXZWJLaXRXZWJWaWV3CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdHdGsuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3R3RrLmNwcAppbmRleCBiYzgy
MTc5OTEyOC4uNzc5OWZiODFjNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViVmlld0d0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3R3RrLmNwcApAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1
ZGUgIldlYktpdFNjcmlwdERpYWxvZ0ltcGwuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJWaWV3QmFz
ZVByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJWaWV3UHJpdmF0ZS5oIgorI2luY2x1ZGUg
PFdlYkNvcmUvQ29sb3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0d0a1V0aWxpdGllcy5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1EaXNwbGF5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0
Zm9ybVNjcmVlbi5oPgpAQCAtMzU5LDMgKzM2MCw2NSBAQCBHdGtXaWRnZXQqIHdlYmtpdF93ZWJf
dmlld19uZXdfd2l0aF91c2VyX2NvbnRlbnRfbWFuYWdlcihXZWJLaXRVc2VyQ29udGVudE1hbmFn
ZQogCiAgICAgcmV0dXJuIEdUS19XSURHRVQoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9W
SUVXLCAidXNlci1jb250ZW50LW1hbmFnZXIiLCB1c2VyQ29udGVudE1hbmFnZXIsIG51bGxwdHIp
KTsKIH0KKworLyoqCisgKiB3ZWJraXRfd2ViX3ZpZXdfc2V0X2JhY2tncm91bmRfY29sb3I6Cisg
KiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZpZXcKKyAqIEByZ2JhOiBhICNHZGtSR0JBCisgKgor
ICogU2V0cyB0aGUgY29sb3IgdGhhdCB3aWxsIGJlIHVzZWQgdG8gZHJhdyB0aGUgQHdlYl92aWV3
IGJhY2tncm91bmQgYmVmb3JlCisgKiB0aGUgYWN0dWFsIGNvbnRlbnRzIGFyZSByZW5kZXJlZC4g
Tm90ZSB0aGF0IGlmIHRoZSB3ZWIgcGFnZSBsb2FkZWQgaW4gQHdlYl92aWV3CisgKiBzcGVjaWZp
ZXMgYSBiYWNrZ3JvdW5kIGNvbG9yLCBpdCB3aWxsIHRha2UgcHJlY2VkZW5jZSBvdmVyIHRoZSBA
cmdiYSBjb2xvci4KKyAqIEJ5IGRlZmF1bHQgdGhlIEB3ZWJfdmlldyBiYWNrZ3JvdW5kIGNvbG9y
IGlzIG9wYXF1ZSB3aGl0ZS4KKyAqIE5vdGUgdGhhdCB0aGUgcGFyZW50IHdpbmRvdyBtdXN0IGhh
dmUgYSBSR0JBIHZpc3VhbCBhbmQKKyAqICNHdGtXaWRnZXQ6YXBwLXBhaW50YWJsZSBwcm9wZXJ0
eSBzZXQgdG8gJVRSVUUgZm9yIGJhY2tncm91bmRzIGNvbG9ycyB0byB3b3JrLgorICoKKyAqIDxp
bmZvcm1hbGV4YW1wbGU+PHByb2dyYW1saXN0aW5nPgorICogc3RhdGljIHZvaWQgYnJvd3Nlcl93
aW5kb3dfc2V0X2JhY2tncm91bmRfY29sb3IgKEJyb3dzZXJXaW5kb3cgKndpbmRvdywKKyAqICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHZGtS
R0JBICpyZ2JhKQorICogeworICogICAgIFdlYktpdFdlYlZpZXcgKndlYl92aWV3OworICogICAg
IEdka1NjcmVlbiAqc2NyZWVuID0gZ3RrX3dpbmRvd19nZXRfc2NyZWVuIChHVEtfV0lORE9XICh3
aW5kb3cpKTsKKyAqICAgICBHZGtWaXN1YWwgKnJnYmFfdmlzdWFsID0gZ2RrX3NjcmVlbl9nZXRf
cmdiYV92aXN1YWwgKHNjcmVlbik7CisgKgorICogICAgIGlmICghcmdiYV92aXN1YWwpCisgKiAg
ICAgICAgICByZXR1cm47CisgKgorICogICAgIGd0a193aWRnZXRfc2V0X3Zpc3VhbCAoR1RLX1dJ
REdFVCAod2luZG93KSwgcmdiYV92aXN1YWwpOworICogICAgIGd0a193aWRnZXRfc2V0X2FwcF9w
YWludGFibGUgKEdUS19XSURHRVQgKHdpbmRvdyksIFRSVUUpOworICoKKyAqICAgICB3ZWJfdmll
dyA9IGJyb3dzZXJfd2luZG93X2dldF93ZWJfdmlldyAod2luZG93KTsKKyAqICAgICB3ZWJraXRf
d2ViX3ZpZXdfc2V0X2JhY2tncm91bmRfY29sb3IgKHdlYl92aWV3LCByZ2JhKTsKKyAqIH0KKyAq
IDwvcHJvZ3JhbWxpc3Rpbmc+PC9pbmZvcm1hbGV4YW1wbGU+CisgKgorICogU2luY2U6IDIuOAor
ICovCit2b2lkIHdlYmtpdF93ZWJfdmlld19zZXRfYmFja2dyb3VuZF9jb2xvcihXZWJLaXRXZWJW
aWV3KiB3ZWJWaWV3LCBjb25zdCBHZGtSR0JBKiByZ2JhKQoreworICAgIGdfcmV0dXJuX2lmX2Zh
aWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpKTsKKyAgICBnX3JldHVybl9pZl9mYWlsKHJn
YmEpOworCisgICAgYXV0byYgcGFnZSA9ICp3ZWJraXRXZWJWaWV3QmFzZUdldFBhZ2UocmVpbnRl
cnByZXRfY2FzdDxXZWJLaXRXZWJWaWV3QmFzZSo+KHdlYlZpZXcpKTsKKyAgICBwYWdlLnNldEJh
Y2tncm91bmRDb2xvcihXZWJDb3JlOjpDb2xvcigqcmdiYSkpOworfQorCisvKioKKyAqIHdlYmtp
dF93ZWJfdmlld19nZXRfYmFja2dyb3VuZF9jb2xvcjoKKyAqIEB3ZWJfdmlldzogYSAjV2ViS2l0
V2ViVmlldworICogQHJnYmE6IChvdXQpOiBhICNHZGtSR0JBIHRvIGZpbGwgaW4gd2l0aCB0aGUg
YmFja2dyb3VuZCBjb2xvcgorICoKKyAqIEdldHMgdGhlIGNvbG9yIHRoYXQgaXMgdXNlZCB0byBk
cmF3IHRoZSBAd2ViX3ZpZXcgYmFja2dyb3VuZCBiZWZvcmUKKyAqIHRoZSBhY3R1YWwgY29udGVu
dHMgYXJlIHJlbmRlcmVkLgorICogRm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlIGFsc28gd2Via2l0
X3dlYl92aWV3X3NldF9iYWNrZ3JvdW5kX2NvbG9yKCkKKyAqCisgKiBTaW5jZTogMi44CisgKi8K
K3ZvaWQgd2Via2l0X3dlYl92aWV3X2dldF9iYWNrZ3JvdW5kX2NvbG9yKFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcsIEdka1JHQkEqIHJnYmEpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRf
SVNfV0VCX1ZJRVcod2ViVmlldykpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwocmdiYSk7CisKKyAg
ICBhdXRvJiBwYWdlID0gKndlYmtpdFdlYlZpZXdCYXNlR2V0UGFnZShyZWludGVycHJldF9jYXN0
PFdlYktpdFdlYlZpZXdCYXNlKj4od2ViVmlldykpOworICAgICpyZ2JhID0gcGFnZS5iYWNrZ3Jv
dW5kQ29sb3IoKS52YWx1ZU9yKFdlYkNvcmU6OkNvbG9yOjp3aGl0ZSk7Cit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdENvbG9yLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0Q29sb3IuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5iODE4Zjk1YTMwOQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0Q29sb3IuY3BwCkBAIC0wLDAg
KzEsMTE4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IElnYWxpYSBTLkwuCisgKgorICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJLaXRDb2xvci5oIgorCisjaW5jbHVkZSAiV2ViS2l0
Q29sb3JQcml2YXRlLmgiCisKKy8qKgorICogU0VDVElPTjogV2ViS2l0Q29sb3IKKyAqIEBTaG9y
dF9kZXNjcmlwdGlvbjogQSBib3hlZCB0eXBlIHJlcHJlc2VudGluZyBhIFJHQkEgY29sb3IKKyAq
IEBUaXRsZTogV2ViS2l0Q29sb3IKKyAqIEBTZWVfYWxzbzogI1dlYktpdFdlYlZpZXcuCisgKgor
ICogQSBXZWJLaXRDb2xvciBpcyBhIGJveGVkIHR5cGUgcmVwcmVzZW50aW5nIGEgUkdCQSBjb2xv
ci4KKyAqCisgKiBTaW5jZTogMi4yNAorICovCisKKy8qKgorICogd2Via2l0X2NvbG9yX2NvcHk6
CisgKiBAY29sb3I6IGEgI1dlYktpdENvbG9yCisgKgorICogTWFrZSBhIGNvcHkgb2YgQGNvbG9y
LgorICoKKyAqIFJldHVybnM6ICh0cmFuc2ZlciBmdWxsKTogQSBjb3B5IG9mIHBhc3NlZCBpbiAj
V2ViS2l0Q29sb3IuCisgKgorICogU2luY2U6IDIuMjQKKyAqLworV2ViS2l0Q29sb3IqIHdlYmtp
dF9jb2xvcl9jb3B5KFdlYktpdENvbG9yKiBjb2xvcikKK3sKKyAgICBnX3JldHVybl92YWxfaWZf
ZmFpbChjb2xvciwgbnVsbHB0cik7CisKKyAgICBXZWJLaXRDb2xvciogY29weSA9IHN0YXRpY19j
YXN0PFdlYktpdENvbG9yKj4oZmFzdFplcm9lZE1hbGxvYyhzaXplb2YoV2ViS2l0Q29sb3IpKSk7
CisgICAgY29weS0+cmVkID0gY29sb3ItPnJlZDsKKyAgICBjb3B5LT5ncmVlbiA9IGNvbG9yLT5n
cmVlbjsKKyAgICBjb3B5LT5ibHVlID0gY29sb3ItPmJsdWU7CisgICAgY29weS0+YWxwaGEgPSBj
b2xvci0+YWxwaGE7CisgICAgcmV0dXJuIGNvcHk7Cit9CisKKy8qKgorICogd2Via2l0X2NvbG9y
X2ZyZWU6CisgKiBAY29sb3I6IGEgI1dlYktpdENvbG9yCisgKgorICogRnJlZSB0aGUgI1dlYktp
dENvbG9yLgorICoKKyAqIFNpbmNlOiAyLjI0CisgKi8KK3ZvaWQgd2Via2l0X2NvbG9yX2ZyZWUo
V2ViS2l0Q29sb3IqIGNvbG9yKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoY29sb3IpOworCisg
ICAgZmFzdEZyZWUoY29sb3IpOworfQorCitHX0RFRklORV9CT1hFRF9UWVBFKFdlYktpdENvbG9y
LCB3ZWJraXRfY29sb3IsIHdlYmtpdF9jb2xvcl9jb3B5LCB3ZWJraXRfY29sb3JfZnJlZSk7CisK
K2NvbnN0IFdlYkNvcmU6OkNvbG9yIHdlYmtpdENvbG9yVG9XZWJDb3JlQ29sb3IoV2ViS2l0Q29s
b3IqIGNvbG9yKQoreworICAgIHJldHVybiBXZWJDb3JlOjpDb2xvcihzdGF0aWNfY2FzdDxmbG9h
dD4oY29sb3ItPnJlZCksIHN0YXRpY19jYXN0PGZsb2F0Pihjb2xvci0+Z3JlZW4pLAorICAgICAg
ICBzdGF0aWNfY2FzdDxmbG9hdD4oY29sb3ItPmJsdWUpLCBzdGF0aWNfY2FzdDxmbG9hdD4oY29s
b3ItPmFscGhhKSk7Cit9CisKK3ZvaWQgd2Via2l0Q29sb3JGaWxsRnJvbVdlYkNvcmVDb2xvcihj
b25zdCBXZWJDb3JlOjpDb2xvciYgd2ViQ29yZUNvbG9yLCBXZWJLaXRDb2xvciogY29sb3IpCit7
CisgICAgUkVMRUFTRV9BU1NFUlQod2ViQ29yZUNvbG9yLmlzVmFsaWQoKSk7CisKKyAgICBkb3Vi
bGUgciwgZywgYiwgYTsKKyAgICB3ZWJDb3JlQ29sb3IuZ2V0UkdCQShyLCBnLCBiLCBhKTsKKyAg
ICBjb2xvci0+cmVkID0gcjsKKyAgICBjb2xvci0+Z3JlZW4gPSBnOworICAgIGNvbG9yLT5ibHVl
ID0gYjsKKyAgICBjb2xvci0+YWxwaGEgPSBhOworfQorCisvKioKKyAqIHdlYmtpdF9jb2xvcl9w
YXJzZToKKyAqIEBjb2xvcjogYSAjV2ViS2l0Q29sb3IgdG8gZmlsbCBpbgorICogQGNvbG9yX3N0
cmluZzogY29sb3IgcmVwcmVzZW50YXRpb24gYXMgY29sb3Igbmlja25hbWUgb3IgSEVYIHN0cmlu
ZworICoKKyAqIENyZWF0ZSBhIG5ldyAjV2ViS2l0Q29sb3IgZm9yIHRoZSBnaXZlbiBAY29sb3Jf
c3RyaW5nCisgKiByZXByZXNlbnRhdGlvbi4gVGhlcmUgYXJlIHR3byB2YWxpZCByZXByZXNlbnRh
dGlvbiB0eXBlczogc3RhbmRhcmQgY29sb3IKKyAqIG5hbWVzIChzZWUgaHR0cHM6Ly9odG1sY29s
b3Jjb2Rlcy5jb20vY29sb3ItbmFtZXMvIGZvciBpbnN0YW5jZSkgb3IgSEVYCisgKiB2YWx1ZXMu
CisgKgorICogUmV0dXJuczogYSAjZ2Jvb2xlYW4gaW5kaWNhdGluZyBpZiB0aGUgQGNvbG9yIHdh
cyBjb3JyZWN0bHkgZmlsbGVkIGluIG9yIG5vdC4KKyAqCisgKiBTaW5jZTogMi4yNAorICovCitn
Ym9vbGVhbiB3ZWJraXRfY29sb3JfcGFyc2UoV2ViS2l0Q29sb3IqIGNvbG9yLCBjb25zdCBnY2hh
ciogY29sb3JTdHJpbmcpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoY29sb3IsIEZBTFNF
KTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChjb2xvclN0cmluZywgRkFMU0UpOworCisgICAg
YXV0byB3ZWJDb3JlQ29sb3IgPSBXZWJDb3JlOjpDb2xvcihjb2xvclN0cmluZyk7CisgICAgaWYg
KCF3ZWJDb3JlQ29sb3IuaXNWYWxpZCgpKQorICAgICAgICByZXR1cm4gRkFMU0U7CisKKyAgICB3
ZWJraXRDb2xvckZpbGxGcm9tV2ViQ29yZUNvbG9yKHdlYkNvcmVDb2xvciwgY29sb3IpOworICAg
IHJldHVybiBUUlVFOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L3dwZS9XZWJLaXRDb2xvci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJL
aXRDb2xvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5mMjZkMDkx
NjA2OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUv
V2ViS2l0Q29sb3IuaApAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5
IElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
KiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgorICovCisKKyNpZiAhZGVmaW5lZChfX1dFQktJVF9IX0lOU0lERV9fKSAmJiAhZGVmaW5l
ZChXRUJLSVQyX0NPTVBJTEFUSU9OKQorI2Vycm9yICJPbmx5IDx3cGUvd2Via2l0Lmg+IGNhbiBi
ZSBpbmNsdWRlZCBkaXJlY3RseS4iCisjZW5kaWYKKworI2lmbmRlZiBXZWJLaXRDb2xvcl9oCisj
ZGVmaW5lIFdlYktpdENvbG9yX2gKKworI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisjaW5jbHVk
ZSA8d3BlL1dlYktpdERlZmluZXMuaD4KKworR19CRUdJTl9ERUNMUworCisvKioKKyAqIFdlYktp
dENvbG9yOgorICogQHJlZDogUmVkIGNoYW5uZWwsIGJldHdlZW4gMC4wIGFuZCAxLjAgaW5jbHVz
aXZlCisgKiBAZ3JlZW46IEdyZWVuIGNoYW5uZWwsIGJldHdlZW4gMC4wIGFuZCAxLjAgaW5jbHVz
aXZlCisgKiBAYmx1ZTogQmx1ZSBjaGFubmVsLCBiZXR3ZWVuIDAuMCBhbmQgMS4wIGluY2x1c2l2
ZQorICogQGFscGhhOiBBbHBoYSBjaGFubmVsLCBiZXR3ZWVuIDAuMCBhbmQgMS4wIGluY2x1c2l2
ZQorICoKKyAqIEEgV2ViS2l0Q29sb3IgaXMgYSBib3hlZCB0eXBlIHJlcHJlc2VudGluZyBhIFJH
QkEgY29sb3IuCisgKgorICogU2luY2U6IDIuMjQKKyAqLworc3RydWN0IF9XZWJLaXRDb2xvciB7
CisgICAgZ2RvdWJsZSByZWQ7CisgICAgZ2RvdWJsZSBncmVlbjsKKyAgICBnZG91YmxlIGJsdWU7
CisgICAgZ2RvdWJsZSBhbHBoYTsKK307CisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRDb2xvciBX
ZWJLaXRDb2xvcjsKKworI2RlZmluZSBXRUJLSVRfVFlQRV9DT0xPUiAod2Via2l0X2NvbG9yX2dl
dF90eXBlKCkpCisKK1dFQktJVF9BUEkgR1R5cGUKK3dlYmtpdF9jb2xvcl9nZXRfdHlwZSAgICAg
KHZvaWQpOworCitXRUJLSVRfQVBJIGdib29sZWFuCit3ZWJraXRfY29sb3JfcGFyc2UgICAgICAg
IChXZWJLaXRDb2xvciAqY29sb3IsIGNvbnN0IGdjaGFyICpjb2xvcl9zdHJpbmcpOworCitHX0VO
RF9ERUNMUworCisjZW5kaWYgLyogV2ViS2l0Q29sb3JfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRDb2xvclByaXZhdGUuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0Q29sb3JQcml2YXRlLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjIzOWExMTYwMzQxCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRDb2xvclByaXZhdGUuaApA
QCAtMCwwICsxLDI2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IElnYWxpYSBTLkwuCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICog
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwor
ICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJXZWJLaXRDb2xvci5o
IgorCit2b2lkIHdlYmtpdENvbG9yRmlsbEZyb21XZWJDb3JlQ29sb3IoY29uc3QgV2ViQ29yZTo6
Q29sb3ImLCBXZWJLaXRDb2xvciopOworY29uc3QgV2ViQ29yZTo6Q29sb3Igd2Via2l0Q29sb3JU
b1dlYkNvcmVDb2xvcihXZWJLaXRDb2xvciopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvd3BlL1dlYktpdFdlYlZpZXcuaAppbmRleCA0MTAyYTc1MjZkNi4uMmE0YTYyMDQyMzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViVmll
dy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViVmlldy5o
CkBAIC00OSw2ICs0OSw3IEBACiAjaW5jbHVkZSA8d3BlL1dlYktpdFdlYkNvbnRleHQuaD4KICNp
bmNsdWRlIDx3cGUvV2ViS2l0V2ViUmVzb3VyY2UuaD4KICNpbmNsdWRlIDx3cGUvV2ViS2l0V2Vi
Vmlld0JhY2tlbmQuaD4KKyNpbmNsdWRlIDx3cGUvV2ViS2l0Q29sb3IuaD4KICNpbmNsdWRlIDx3
cGUvV2ViS2l0V2ViVmlld1Nlc3Npb25TdGF0ZS5oPgogI2luY2x1ZGUgPHdwZS9XZWJLaXRXaW5k
b3dQcm9wZXJ0aWVzLmg+CiAKQEAgLTUxNyw2ICs1MTgsMTMgQEAgV0VCS0lUX0FQSSB2b2lkCiB3
ZWJraXRfd2ViX3ZpZXdfcmVtb3ZlX2ZyYW1lX2Rpc3BsYXllZF9jYWxsYmFjayAgICAgIChXZWJL
aXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgICAgICAgICAgICAgICAgICAg
ICAgICBpZCk7CiAKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl92aWV3X3NldF9iYWNrZ3Jv
dW5kX2NvbG9yICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3
ZWJfdmlldywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFdlYktpdENvbG9yICAgICAgICAgICAgICAgICAqY29sb3IpOworV0VCS0lUX0FQSSB2
b2lkCit3ZWJraXRfd2ViX3ZpZXdfZ2V0X2JhY2tncm91bmRfY29sb3IgICAgICAgICAgICAgICAg
IChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0Q29sb3IgICAgICAg
ICAgICAgICAgICpjb2xvcik7CisKIEdfRU5EX0RFQ0xTCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3V1BFLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViVmlld1dQRS5jcHAKaW5kZXgg
YTM0OTVlODUyZTEuLjllNWNlNWMzODk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXdXUEUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViVmlld1dQRS5jcHAKQEAgLTIwLDYgKzIwLDcgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJWaWV3LmgiCiAKKyNpbmNsdWRl
ICJXZWJLaXRDb2xvclByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJWaWV3UHJpdmF0ZS5o
IgogCiBnYm9vbGVhbiB3ZWJraXRXZWJWaWV3QXV0aGVudGljYXRlKFdlYktpdFdlYlZpZXcqLCBX
ZWJLaXRBdXRoZW50aWNhdGlvblJlcXVlc3QqKQpAQCAtMTc4LDMgKzE3OSw0NCBAQCBXZWJLaXRX
ZWJWaWV3KiB3ZWJraXRfd2ViX3ZpZXdfbmV3X3dpdGhfdXNlcl9jb250ZW50X21hbmFnZXIoV2Vi
S2l0V2ViVmlld0JhY2tlbgogICAgICAgICAidXNlci1jb250ZW50LW1hbmFnZXIiLCB1c2VyQ29u
dGVudE1hbmFnZXIsCiAgICAgICAgIG51bGxwdHIpKTsKIH0KKworLyoqCisgKiB3ZWJraXRfd2Vi
X3ZpZXdfc2V0X2JhY2tncm91bmRfY29sb3I6CisgKiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZp
ZXcKKyAqIEBiYWNrZ3JvdW5kQ29sb3I6IGEgI1dlYktpdENvbG9yCisgKgorICogU2V0cyB0aGUg
Y29sb3IgdGhhdCB3aWxsIGJlIHVzZWQgdG8gZHJhdyB0aGUgQHdlYl92aWV3IGJhY2tncm91bmQg
YmVmb3JlCisgKiB0aGUgYWN0dWFsIGNvbnRlbnRzIGFyZSByZW5kZXJlZC4gTm90ZSB0aGF0IGlm
IHRoZSB3ZWIgcGFnZSBsb2FkZWQgaW4gQHdlYl92aWV3CisgKiBzcGVjaWZpZXMgYSBiYWNrZ3Jv
dW5kIGNvbG9yLCBpdCB3aWxsIHRha2UgcHJlY2VkZW5jZSBvdmVyIHRoZSBiYWNrZ3JvdW5kIGNv
bG9yLgorICogQnkgZGVmYXVsdCB0aGUgQHdlYl92aWV3IGJhY2tncm91bmQgY29sb3IgaXMgb3Bh
cXVlIHdoaXRlLgorICoKKyAqIFNpbmNlOiAyLjI0CisgKi8KK3ZvaWQgd2Via2l0X3dlYl92aWV3
X3NldF9iYWNrZ3JvdW5kX2NvbG9yKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdENvbG9y
KiBiYWNrZ3JvdW5kQ29sb3IpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VC
X1ZJRVcod2ViVmlldykpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoYmFja2dyb3VuZENvbG9yKTsK
KworICAgIGF1dG8mIHBhZ2UgPSB3ZWJraXRXZWJWaWV3R2V0UGFnZSh3ZWJWaWV3KTsKKyAgICBw
YWdlLnNldEJhY2tncm91bmRDb2xvcih3ZWJraXRDb2xvclRvV2ViQ29yZUNvbG9yKGJhY2tncm91
bmRDb2xvcikpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfdmlld19nZXRfYmFja2dyb3VuZF9j
b2xvcjoKKyAqIEB3ZWJfdmlldzogYSAjV2ViS2l0V2ViVmlldworICogQHJnYmE6IChvdXQpOiBh
ICNXZWJLaXRDb2xvciB0byBmaWxsIGluIHdpdGggdGhlIGJhY2tncm91bmQgY29sb3IKKyAqCisg
KiBHZXRzIHRoZSBjb2xvciB0aGF0IGlzIHVzZWQgdG8gZHJhdyB0aGUgQHdlYl92aWV3IGJhY2tn
cm91bmQgYmVmb3JlIHRoZQorICogYWN0dWFsIGNvbnRlbnRzIGFyZSByZW5kZXJlZC4gRm9yIG1v
cmUgaW5mb3JtYXRpb24gc2VlIGFsc28KKyAqIHdlYmtpdF93ZWJfdmlld19zZXRfYmFja2dyb3Vu
ZF9jb2xvcigpLgorICoKKyAqIFNpbmNlOiAyLjI0CisgKi8KK3ZvaWQgd2Via2l0X3dlYl92aWV3
X2dldF9iYWNrZ3JvdW5kX2NvbG9yKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdENvbG9y
KiBjb2xvcikKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJW
aWV3KSk7CisgICAgYXV0byYgcGFnZSA9IHdlYmtpdFdlYlZpZXdHZXRQYWdlKHdlYlZpZXcpOwor
CisgICAgYXV0byYgd2ViQ29yZUNvbG9yID0gcGFnZS5iYWNrZ3JvdW5kQ29sb3IoKTsKKyAgICB3
ZWJraXRDb2xvckZpbGxGcm9tV2ViQ29yZUNvbG9yKHdlYkNvcmVDb2xvci52YWx1ZU9yKFdlYkNv
cmU6OkNvbG9yOjp3aGl0ZSksIGNvbG9yKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS93cGUvZG9jcy93cGUtMC4xLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS93cGUvZG9jcy93cGUtMC4xLXNlY3Rpb25zLnR4dAppbmRleCBhNWVj
ZmU0NjM3Zi4uZTY1YTc4MTg2ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS93cGUvZG9jcy93cGUtMC4xLXNlY3Rpb25zLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTAuMS1zZWN0aW9ucy50eHQKQEAgLTIwNyw2ICsyMDcs
OCBAQCB3ZWJraXRfd2ViX3ZpZXdfcmVzdG9yZV9zZXNzaW9uX3N0YXRlCiB3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X21haW5fcmVzb3VyY2UKIHdlYmtpdF93ZWJfdmlld19hZGRfZnJhbWVfZGlzcGxheWVk
X2NhbGxiYWNrCiB3ZWJraXRfd2ViX3ZpZXdfcmVtb3ZlX2ZyYW1lX2Rpc3BsYXllZF9jYWxsYmFj
aword2Via2l0X3dlYl92aWV3X2dldF9iYWNrZ3JvdW5kX2NvbG9yCit3ZWJraXRfd2ViX3ZpZXdf
c2V0X2JhY2tncm91bmRfY29sb3IKIAogPFNVQlNFQ1RJT04gV2ViS2l0SmF2YXNjcmlwdFJlc3Vs
dD4KIFdlYktpdEphdmFzY3JpcHRSZXN1bHQKQEAgLTI2Nyw2ICsyNjksMTYgQEAgd2Via2l0X3dl
Yl92aWV3X2JhY2tlbmRfbmV3CiB3ZWJraXRfd2ViX3ZpZXdfYmFja2VuZF9nZXRfdHlwZQogPC9T
RUNUSU9OPgogCis8U0VDVElPTj4KKzxGSUxFPldlYktpdENvbG9yPC9GSUxFPgorV0VCS0lUX1RZ
UEVfQ09MT1IKK1dlYktpdENvbG9yCit3ZWJraXRfY29sb3JfcGFyc2UKKworPFNVQlNFQ1RJT04g
UHJpdmF0ZT4KK3dlYmtpdF9jb2xvcl9nZXRfdHlwZQorPC9TRUNUSU9OPgorCiA8U0VDVElPTj4K
IDxGSUxFPldlYktpdEF1dGhlbnRpY2F0aW9uUmVxdWVzdDwvRklMRT4KIFdlYktpdEF1dGhlbnRp
Y2F0aW9uUmVxdWVzdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViVmlld0ltcGwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1w
bC5tbQppbmRleCBhMTlmMzY5YzYwOC4uN2RhNzM1OGNlYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCkBAIC0xNDU0LDcgKzE0NTQsMTAgQEAgdm9p
ZCBXZWJWaWV3SW1wbDo6ZGlkUmVsYXVuY2hQcm9jZXNzKCkKIAogdm9pZCBXZWJWaWV3SW1wbDo6
c2V0RHJhd3NCYWNrZ3JvdW5kKGJvb2wgZHJhd3NCYWNrZ3JvdW5kKQogewotICAgIG1fcGFnZS0+
c2V0RHJhd3NCYWNrZ3JvdW5kKGRyYXdzQmFja2dyb3VuZCk7CisgICAgT3B0aW9uYWw8V2ViQ29y
ZTo6Q29sb3I+IGJhY2tncm91bmRDb2xvcjsKKyAgICBpZiAoIWRyYXdzQmFja2dyb3VuZCkKKyAg
ICAgICAgYmFja2dyb3VuZENvbG9yID0gV2ViQ29yZTo6Q29sb3IoV2ViQ29yZTo6Q29sb3I6OnRy
YW5zcGFyZW50KTsKKyAgICBtX3BhZ2UtPnNldEJhY2tncm91bmRDb2xvcihiYWNrZ3JvdW5kQ29s
b3IpOwogCiAgICAgLy8gTWFrZSBzdXJlIHVwZGF0ZUxheWVyIGdldHMgY2FsbGVkIG9uIHRoZSB3
ZWIgdmlldy4KICAgICBbbV92aWV3IHNldE5lZWRzRGlzcGxheTpZRVNdOwpAQCAtMTQ2Miw3ICsx
NDY1LDggQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0RHJhd3NCYWNrZ3JvdW5kKGJvb2wgZHJhd3NC
YWNrZ3JvdW5kKQogCiBib29sIFdlYlZpZXdJbXBsOjpkcmF3c0JhY2tncm91bmQoKSBjb25zdAog
ewotICAgIHJldHVybiBtX3BhZ2UtPmRyYXdzQmFja2dyb3VuZCgpOworICAgIGF1dG8mIGJhY2tn
cm91bmRDb2xvciA9IG1fcGFnZS0+YmFja2dyb3VuZENvbG9yKCk7CisgICAgcmV0dXJuICFiYWNr
Z3JvdW5kQ29sb3IgfHwgYmFja2dyb3VuZENvbG9yLnZhbHVlKCkuaXNWaXNpYmxlKCk7CiB9CiAK
IHZvaWQgV2ViVmlld0ltcGw6OnNldEJhY2tncm91bmRDb2xvcihOU0NvbG9yICpiYWNrZ3JvdW5k
Q29sb3IpCkBAIC0xNDg2LDcgKzE0OTAsNyBAQCBOU0NvbG9yICpXZWJWaWV3SW1wbDo6YmFja2dy
b3VuZENvbG9yKCkgY29uc3QKIAogYm9vbCBXZWJWaWV3SW1wbDo6aXNPcGFxdWUoKSBjb25zdAog
ewotICAgIHJldHVybiBtX3BhZ2UtPmRyYXdzQmFja2dyb3VuZCgpOworICAgIHJldHVybiBkcmF3
c0JhY2tncm91bmQoKTsKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6c2V0U2hvdWxkU3VwcHJlc3NG
aXJzdFJlc3BvbmRlckNoYW5nZXMoYm9vbCBzaG91bGRTdXBwcmVzcykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDc3OTI2NGRlNzJhLi4xMTZiOTBkZDNlZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC00MjcsNyArNDI3
LDYgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwg
V2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCB1aW4KICAgICAsIG1fY3B1TGltaXQobV9jb25maWd1
cmF0aW9uLT5jcHVMaW1pdCgpKQogICAgICwgbV9iYWNrRm9yd2FyZExpc3QoV2ViQmFja0Zvcndh
cmRMaXN0OjpjcmVhdGUoKnRoaXMpKQogICAgICwgbV93YWl0c0ZvclBhaW50QWZ0ZXJWaWV3RGlk
TW92ZVRvV2luZG93KG1fY29uZmlndXJhdGlvbi0+d2FpdHNGb3JQYWludEFmdGVyVmlld0RpZE1v
dmVUb1dpbmRvdygpKQotICAgICwgbV9kcmF3c0JhY2tncm91bmQobV9jb25maWd1cmF0aW9uLT5k
cmF3c0JhY2tncm91bmQoKSkKICAgICAsIG1fcGFnZUlEKHBhZ2VJRCkKICAgICAsIG1fY29udHJv
bGxlZEJ5QXV0b21hdGlvbihtX2NvbmZpZ3VyYXRpb24tPmlzQ29udHJvbGxlZEJ5QXV0b21hdGlv
bigpKQogI2lmIFBMQVRGT1JNKENPQ09BKQpAQCAtNDQ2LDYgKzQ0NSw5IEBAIFdlYlBhZ2VQcm94
eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYg
cHJvY2VzcywgdWluCiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiY29u
c3RydWN0b3I6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJv
Y2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOwogCisgICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24t
PmRyYXdzQmFja2dyb3VuZCgpKQorICAgICAgICBtX2JhY2tncm91bmRDb2xvciA9IENvbG9yKENv
bG9yOjp0cmFuc3BhcmVudCk7CisKICAgICBtX3dlYlByb2Nlc3NMaWZldGltZVRyYWNrZXIuYWRk
T2JzZXJ2ZXIobV92aXNpdGVkTGlua1N0b3JlKTsKICAgICBtX3dlYlByb2Nlc3NMaWZldGltZVRy
YWNrZXIuYWRkT2JzZXJ2ZXIobV93ZWJzaXRlRGF0YVN0b3JlKTsKIApAQCAtMTUzOSwxNSArMTU0
MSwxNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y3JlYXRlSW5zcGVjdG9yVGFyZ2V0cygpCiAgICAg
bV9pbnNwZWN0b3JDb250cm9sbGVyLT5jcmVhdGVJbnNwZWN0b3JUYXJnZXQocGFnZVRhcmdldElk
LCBJbnNwZWN0b3I6Okluc3BlY3RvclRhcmdldFR5cGU6OlBhZ2UpOwogfQogCi12b2lkIFdlYlBh
Z2VQcm94eTo6c2V0RHJhd3NCYWNrZ3JvdW5kKGJvb2wgZHJhd3NCYWNrZ3JvdW5kKQordm9pZCBX
ZWJQYWdlUHJveHk6OnNldEJhY2tncm91bmRDb2xvcihjb25zdCBPcHRpb25hbDxDb2xvcj4mIGNv
bG9yKQogewotICAgIGlmIChtX2RyYXdzQmFja2dyb3VuZCA9PSBkcmF3c0JhY2tncm91bmQpCisg
ICAgaWYgKG1fYmFja2dyb3VuZENvbG9yID09IGNvbG9yKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBtX2RyYXdzQmFja2dyb3VuZCA9IGRyYXdzQmFja2dyb3VuZDsKLQorICAgIG1fYmFja2dyb3Vu
ZENvbG9yID0gY29sb3I7CiAgICAgaWYgKGlzVmFsaWQoKSkKLSAgICAgICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXREcmF3c0JhY2tncm91bmQoZHJhd3NCYWNrZ3JvdW5k
KSwgbV9wYWdlSUQpOworICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlNldEJhY2tncm91bmRDb2xvcihjb2xvciksIG1fcGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdl
UHJveHk6OnNldFRvcENvbnRlbnRJbnNldChmbG9hdCBjb250ZW50SW5zZXQpCkBAIC02Nzg4LDcg
KzY3ODksNiBAQCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIFdlYlBhZ2VQcm94eTo6Y3JlYXRp
b25QYXJhbWV0ZXJzKFdlYlByb2Nlc3NQcm94eSYgcHJvYwogICAgIHBhcmFtZXRlcnMuZHJhd2lu
Z0FyZWFUeXBlID0gbV9kcmF3aW5nQXJlYS0+dHlwZSgpOwogICAgIHBhcmFtZXRlcnMuc3RvcmUg
PSBwcmVmZXJlbmNlc1N0b3JlKCk7CiAgICAgcGFyYW1ldGVycy5wYWdlR3JvdXBEYXRhID0gbV9w
YWdlR3JvdXAtPmRhdGEoKTsKLSAgICBwYXJhbWV0ZXJzLmRyYXdzQmFja2dyb3VuZCA9IG1fZHJh
d3NCYWNrZ3JvdW5kOwogICAgIHBhcmFtZXRlcnMuaXNFZGl0YWJsZSA9IG1faXNFZGl0YWJsZTsK
ICAgICBwYXJhbWV0ZXJzLnVuZGVybGF5Q29sb3IgPSBtX3VuZGVybGF5Q29sb3I7CiAgICAgcGFy
YW1ldGVycy51c2VGaXhlZExheW91dCA9IG1fdXNlRml4ZWRMYXlvdXQ7CkBAIC02ODg4LDYgKzY4
ODgsNyBAQCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIFdlYlBhZ2VQcm94eTo6Y3JlYXRpb25Q
YXJhbWV0ZXJzKFdlYlByb2Nlc3NQcm94eSYgcHJvYwogI2VuZGlmCiAKICAgICBwYXJhbWV0ZXJz
Lm5lZWRzRm9udEF0dHJpYnV0ZXMgPSBtX25lZWRzRm9udEF0dHJpYnV0ZXM7CisgICAgcGFyYW1l
dGVycy5iYWNrZ3JvdW5kQ29sb3IgPSBtX2JhY2tncm91bmRDb2xvcjsKIAogICAgIHByb2Nlc3Mu
YWRkV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkobV91c2VyQ29udGVudENvbnRyb2xsZXIs
IHBhcmFtZXRlcnMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4
IGQzODRjZDdjMDM0Li5jMmYwZmRmYTM4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKQEAgLTUyMCw5ICs1MjAsNiBAQCBwdWJsaWM6CiAKICAgICBib29sIGNhblNob3dN
SU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKIAotICAgIGJvb2wgZHJhd3NCYWNrZ3Jv
dW5kKCkgY29uc3QgeyByZXR1cm4gbV9kcmF3c0JhY2tncm91bmQ7IH0KLSAgICB2b2lkIHNldERy
YXdzQmFja2dyb3VuZChib29sKTsKLQogICAgIFN0cmluZyBjdXJyZW50VVJMKCkgY29uc3Q7CiAK
ICAgICBmbG9hdCB0b3BDb250ZW50SW5zZXQoKSBjb25zdCB7IHJldHVybiBtX3RvcENvbnRlbnRJ
bnNldDsgfQpAQCAtNzY0LDExICs3NjEsMTIgQEAgcHVibGljOgogCiAjaWYgUExBVEZPUk0oR1RL
KQogICAgIFBsYXRmb3JtV2lkZ2V0IHZpZXdXaWRnZXQoKTsKLSAgICBjb25zdCBXZWJDb3JlOjpD
b2xvciYgYmFja2dyb3VuZENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kQ29sb3I7
IH0KLSAgICB2b2lkIHNldEJhY2tncm91bmRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYgY29s
b3IpIHsgbV9iYWNrZ3JvdW5kQ29sb3IgPSBjb2xvcjsgfQogICAgIGJvb2wgbWFrZUdMQ29udGV4
dEN1cnJlbnQoKTsKICNlbmRpZgogCisgICAgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6Q29sb3I+
JiBiYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91bmRDb2xvcjsgfQor
ICAgIHZvaWQgc2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkNvbG9y
PiYpOworCiAjaWYgUExBVEZPUk0oV0lOKQogICAgIFBsYXRmb3JtV2lkZ2V0IHZpZXdXaWRnZXQo
KTsKICNlbmRpZgpAQCAtMjEwOCw4ICsyMTA2LDYgQEAgcHJpdmF0ZToKIAogICAgIExheWVySG9z
dGluZ01vZGUgbV9sYXllckhvc3RpbmdNb2RlIHsgTGF5ZXJIb3N0aW5nTW9kZTo6SW5Qcm9jZXNz
IH07CiAKLSAgICBib29sIG1fZHJhd3NCYWNrZ3JvdW5kIHsgdHJ1ZSB9OwotCiAgICAgV2ViQ29y
ZTo6Q29sb3IgbV91bmRlcmxheUNvbG9yOwogICAgIFdlYkNvcmU6OkNvbG9yIG1fcGFnZUV4dGVu
ZGVkQmFja2dyb3VuZENvbG9yOwogCkBAIC0yMjA4LDkgKzIyMDQsMTAgQEAgcHJpdmF0ZToKIAog
I2lmIFBMQVRGT1JNKEdUSykKICAgICBTdHJpbmcgbV9hY2Nlc3NpYmlsaXR5UGx1Z0lEOwotICAg
IFdlYkNvcmU6OkNvbG9yIG1fYmFja2dyb3VuZENvbG9yIHsgV2ViQ29yZTo6Q29sb3I6OndoaXRl
IH07CiAjZW5kaWYKIAorICAgIE9wdGlvbmFsPFdlYkNvcmU6OkNvbG9yPiBtX2JhY2tncm91bmRD
b2xvcjsKKwogICAgIHVuc2lnbmVkIG1fcGVuZGluZ0xlYXJuT3JJZ25vcmVXb3JkTWVzc2FnZUNv
dW50IHsgMCB9OwogCiAgICAgYm9vbCBtX21haW5GcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRl
ciB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9jYWlyby9C
YWNraW5nU3RvcmVDYWlyby5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9jYWlyby9CYWNr
aW5nU3RvcmVDYWlyby5jcHAKaW5kZXggZTExMWMyYjM5ODYuLjE4Mjk0ZDM3ZmU0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9jYWlyby9CYWNraW5nU3RvcmVDYWlyby5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvY2Fpcm8vQmFja2luZ1N0b3JlQ2Fpcm8uY3Bw
CkBAIC0zNywxMCArMzcsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUmVmUHRyQ2Fpcm8uaD4KICNp
bmNsdWRlIDxjYWlyby5oPgogCi0jaWYgUExBVEZPUk0oR1RLKQotI2luY2x1ZGUgPGd0ay9ndGsu
aD4KLSNlbmRpZgotCiAjaWYgUExBVEZPUk0oR1RLKSAmJiBQTEFURk9STShYMTEpICYmIGRlZmlu
ZWQoR0RLX1dJTkRPV0lOR19YMTEpCiAjaW5jbHVkZSA8V2ViQ29yZS9CYWNraW5nU3RvcmVCYWNr
ZW5kQ2Fpcm9YMTEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtRGlzcGxheVgxMS5oPgpA
QCAtOTcsMjQgKzkzLDYgQEAgdm9pZCBCYWNraW5nU3RvcmU6OmluY29ycG9yYXRlVXBkYXRlKFNo
YXJlYWJsZUJpdG1hcCogYml0bWFwLCBjb25zdCBVcGRhdGVJbmZvJgogICAgIGZvciAoY29uc3Qg
YXV0byYgdXBkYXRlUmVjdCA6IHVwZGF0ZUluZm8udXBkYXRlUmVjdHMpIHsKICAgICAgICAgSW50
UmVjdCBzcmNSZWN0ID0gdXBkYXRlUmVjdDsKICAgICAgICAgc3JjUmVjdC5tb3ZlKC11cGRhdGVS
ZWN0TG9jYXRpb24ueCgpLCAtdXBkYXRlUmVjdExvY2F0aW9uLnkoKSk7Ci0jaWYgUExBVEZPUk0o
R1RLKQotICAgICAgICBpZiAoIW1fd2ViUGFnZVByb3h5LmRyYXdzQmFja2dyb3VuZCgpKSB7Ci0g
ICAgICAgICAgICBjb25zdCBXZWJDb3JlOjpDb2xvciBjb2xvciA9IG1fd2ViUGFnZVByb3h5LmJh
Y2tncm91bmRDb2xvcigpOwotICAgICAgICAgICAgaWYgKGNvbG9yLmlzVmlzaWJsZSgpKSB7Ci0g
ICAgICAgICAgICAgICAgLy8gV2hlbiB0aGUgYXBwbGljYXRpb24gc2V0cyB0aGUgYmFja2dyb3Vu
ZCBjb2xvciB0aHJvdWdoIG1fd2ViUGFnZVByb3h5LmJhY2tncm91bmRDb2xvcigpLCB3ZSB1cGRh
dGUgdGhlIHN1cmZhY2UgaW4gMiBzdGVwcy4KLSAgICAgICAgICAgICAgICAvLyAgIDEuIEZpbGwg
dGhlIHN1cmZhY2UgYnkgbV93ZWJQYWdlUHJveHkuYmFja2dyb3VuZENvbG9yKCkuCi0gICAgICAg
ICAgICAgICAgLy8gICAyLiBDb21wb3NpdGUgd2VicGFnZSdzIGJpdG1hcCB3aGljaCBoYXMgYSB0
cmFuc3BhcmVudCBiYWNrZ3JvdW5kLgotICAgICAgICAgICAgICAgIC8vIEluIHN0ZXAgMSwgd2Ug
dXNlIENvbXBvc2l0ZUNvcHkgYXMgbV93ZWJQYWdlUHJveHkuYmFja2dyb3VuZENvbG9yKCkgbWF5
IG5vdCBiZSBvcGFxdWUuCi0gICAgICAgICAgICAgICAgLy8gT24gdGhlIG90aGVyIGhhbmQsIGlu
IHN0ZXAgMiwgYml0bWFwIHNob3VsZCBiZSBjb21wb3NpdGVkIGJ5IENvbXBvc2l0ZVNvdXJjZU92
ZXIKLSAgICAgICAgICAgICAgICAvLyBiZWNhdXNlIGl0IHNob3VsZCBiZSBibGVuZGVkIHdpdGgg
bV93ZWJQYWdlUHJveHkuYmFja2dyb3VuZENvbG9yKCkuCi0gICAgICAgICAgICAgICAgZ3JhcGhp
Y3NDb250ZXh0LmZpbGxSZWN0KHNyY1JlY3QsIGNvbG9yKTsKLSAgICAgICAgICAgICAgICBncmFw
aGljc0NvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKFdlYkNvcmU6OkNvbXBvc2l0ZVNvdXJj
ZU92ZXIpOwotICAgICAgICAgICAgICAgIGJpdG1hcC0+cGFpbnQoZ3JhcGhpY3NDb250ZXh0LCBk
ZXZpY2VTY2FsZUZhY3RvcigpLCB1cGRhdGVSZWN0LmxvY2F0aW9uKCksIHNyY1JlY3QpOwotICAg
ICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oV2ViQ29y
ZTo6Q29tcG9zaXRlQ29weSk7Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLSNlbmRpZgogICAgICAgICBiaXRtYXAtPnBhaW50KGdyYXBoaWNzQ29u
dGV4dCwgZGV2aWNlU2NhbGVGYWN0b3IoKSwgdXBkYXRlUmVjdC5sb2NhdGlvbigpLCBzcmNSZWN0
KTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQWNj
ZWxlcmF0ZWRCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0Fj
Y2VsZXJhdGVkQmFja2luZ1N0b3JlLmNwcAppbmRleCBlY2YzNDVmODBmOC4uZWI2MmQ2ZDY1NGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tp
bmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVk
QmFja2luZ1N0b3JlLmNwcApAQCAtNTksMjYgKzU5LDQgQEAgQWNjZWxlcmF0ZWRCYWNraW5nU3Rv
cmU6OkFjY2VsZXJhdGVkQmFja2luZ1N0b3JlKFdlYlBhZ2VQcm94eSYgd2ViUGFnZSkKIHsKIH0K
IAotYm9vbCBBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZTo6cGFpbnQoY2Fpcm9fdCogY3IsIGNvbnN0
IEludFJlY3QmIGNsaXBSZWN0KQotewotICAgIGlmIChtX3dlYlBhZ2UuZHJhd3NCYWNrZ3JvdW5k
KCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgY29uc3QgV2ViQ29yZTo6Q29sb3ImIGNv
bG9yID0gbV93ZWJQYWdlLmJhY2tncm91bmRDb2xvcigpOwotICAgIGlmICghY29sb3IuaXNPcGFx
dWUoKSkgewotICAgICAgICBjYWlyb19yZWN0YW5nbGUoY3IsIGNsaXBSZWN0LngoKSwgY2xpcFJl
Y3QueSgpLCBjbGlwUmVjdC53aWR0aCgpLCBjbGlwUmVjdC5oZWlnaHQoKSk7Ci0gICAgICAgIGNh
aXJvX3NldF9vcGVyYXRvcihjciwgQ0FJUk9fT1BFUkFUT1JfQ0xFQVIpOwotICAgICAgICBjYWly
b19maWxsKGNyKTsKLSAgICB9Ci0KLSAgICBpZiAoY29sb3IuaXNWaXNpYmxlKCkpIHsKLSAgICAg
ICAgc2V0U291cmNlUkdCQUZyb21Db2xvcihjciwgY29sb3IpOwotICAgICAgICBjYWlyb19zZXRf
b3BlcmF0b3IoY3IsIENBSVJPX09QRVJBVE9SX1NPVVJDRSk7Ci0gICAgICAgIGNhaXJvX3JlY3Rh
bmdsZShjciwgY2xpcFJlY3QueCgpLCBjbGlwUmVjdC55KCksIGNsaXBSZWN0LndpZHRoKCksIGNs
aXBSZWN0LmhlaWdodCgpKTsKLSAgICAgICAgY2Fpcm9fZmlsbChjcik7Ci0gICAgfQotCi0gICAg
cmV0dXJuIHRydWU7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUuaAppbmRleCBl
MzUwNTA3YWFjYy4uNDhkYjUzMzQ0ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZS5oCkBAIC00NSw3ICs0NSw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIH5BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZSgpID0gZGVmYXVsdDsK
IAogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpIHsgfQot
ICAgIHZpcnR1YWwgYm9vbCBwYWludChjYWlyb190KiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYp
OworICAgIHZpcnR1YWwgYm9vbCBwYWludChjYWlyb190KiwgY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgbWFrZUNvbnRleHRDdXJyZW50KCkgeyByZXR1cm4g
ZmFsc2U7IH0KIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kLmNwcAppbmRleCBm
MDFiYWIzYjQwMS4uNjBmNWNhNzE1NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQuY3BwCkBA
IC0xMTAsNyArMTEwLDYgQEAgYm9vbCBBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQ6OnBh
aW50KGNhaXJvX3QqIGNyLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgY2Fpcm9fc2F2ZShjcik7Ci0gICAgQWNjZWxlcmF0ZWRCYWNraW5nU3Rv
cmU6OnBhaW50KGNyLCBjbGlwUmVjdCk7CiAKICNpZiBHVEtfQ0hFQ0tfVkVSU0lPTigzLCAxNiwg
MCkKICAgICBpZiAobV9nZGtHTENvbnRleHQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVgxMS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTEuY3BwCmluZGV4IDI3
ZDcyYzFjNDdlLi44MmNlOGM2YjY1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDExLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTEuY3BwCkBAIC0xODYsNyAr
MTg2LDYgQEAgYm9vbCBBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVgxMTo6cGFpbnQoY2Fpcm9fdCog
Y3IsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICBjYWlyb19zYXZlKGNyKTsKLSAgICBBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZTo6cGFpbnQoY3Is
IGNsaXBSZWN0KTsKIAogICAgIC8vIFRoZSBzdXJmYWNlIGNhbiBiZSBtb2RpZmllZCBieSB0aGUg
d2ViIHByb2Nlc3MgYXQgYW55IHRpbWUsIHNvIHdlIG1hcmsgaXQKICAgICAvLyBhcyBkaXJ0eSB0
byBlbnN1cmUgd2UgYWx3YXlzIHJlbmRlciB0aGUgdXBkYXRlZCBjb250ZW50cyBhcyBzb29uIGFz
IHBvc3NpYmxlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlZp
ZXcuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwCmluZGV4IDBm
OWY5ZDRlZmQ1Li5hOWU0MTg1Nzg1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3Mvd2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJW
aWV3LmNwcApAQCAtNDUxLDcgKzQ1MSw4IEBAIExSRVNVTFQgV2ViVmlldzo6b25LZXlFdmVudChI
V05EIGhXbmQsIFVJTlQgbWVzc2FnZSwgV1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhCiAKIHN0
YXRpYyB2b2lkIGRyYXdQYWdlQmFja2dyb3VuZChIREMgZGMsIGNvbnN0IFdlYlBhZ2VQcm94eSog
cGFnZSwgY29uc3QgUkVDVCYgcmVjdCkKIHsKLSAgICBpZiAoIXBhZ2UtPmRyYXdzQmFja2dyb3Vu
ZCgpKQorICAgIGF1dG8mIGJhY2tncm91bmRDb2xvciA9IHBhZ2UtPmJhY2tncm91bmRDb2xvcigp
OworICAgIGlmICghYmFja2dyb3VuZENvbG9yIHx8IGJhY2tncm91bmRDb2xvci52YWx1ZSgpLmlz
VmlzaWJsZSgpKQogICAgICAgICByZXR1cm47CiAKICAgICA6OkZpbGxSZWN0KGRjLCAmcmVjdCwg
cmVpbnRlcnByZXRfY2FzdDxIQlJVU0g+KENPTE9SX1dJTkRPVyArIDEpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDkzOGNhZGRiZjZjLi41MTBiMDNiODUzNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xNDA2LDcgKzE0MDYsNiBAQCB2b2lkIFdl
YkZyYW1lTG9hZGVyQ2xpZW50Ojp0cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKCkKICAg
ICBXZWJQYWdlKiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpOwogCiAgICAgYm9vbCBpc01haW5G
cmFtZSA9IG1fZnJhbWUtPmlzTWFpbkZyYW1lKCk7Ci0gICAgYm9vbCBpc1RyYW5zcGFyZW50ID0g
IXdlYlBhZ2UtPmRyYXdzQmFja2dyb3VuZCgpOwogICAgIGJvb2wgc2hvdWxkVXNlRml4ZWRMYXlv
dXQgPSBpc01haW5GcmFtZSAmJiB3ZWJQYWdlLT51c2VGaXhlZExheW91dCgpOwogICAgIGJvb2wg
c2hvdWxkRGlzYWJsZVNjcm9sbGluZyA9IGlzTWFpbkZyYW1lICYmICF3ZWJQYWdlLT5tYWluRnJh
bWVJc1Njcm9sbGFibGUoKTsKICAgICBib29sIHNob3VsZEhpZGVTY3JvbGxiYXJzID0gc2hvdWxk
RGlzYWJsZVNjcm9sbGluZzsKQEAgLTE0MzEsNyArMTQzMCw3IEBAIHZvaWQgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UoKQogICAgIGJvb2wgaG9y
aXpvbnRhbExvY2sgPSBzaG91bGRIaWRlU2Nyb2xsYmFycyB8fCB3ZWJQYWdlLT5hbHdheXNTaG93
c0hvcml6b250YWxTY3JvbGxlcigpOwogICAgIGJvb2wgdmVydGljYWxMb2NrID0gc2hvdWxkSGlk
ZVNjcm9sbGJhcnMgfHwgd2ViUGFnZS0+YWx3YXlzU2hvd3NWZXJ0aWNhbFNjcm9sbGVyKCk7CiAK
LSAgICBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+Y3JlYXRlVmlldyh3ZWJQYWdlLT5zaXplKCksIGlz
VHJhbnNwYXJlbnQsCisgICAgbV9mcmFtZS0+Y29yZUZyYW1lKCktPmNyZWF0ZVZpZXcod2ViUGFn
ZS0+c2l6ZSgpLCB3ZWJQYWdlLT5iYWNrZ3JvdW5kQ29sb3IoKSwKICAgICAgICAgd2ViUGFnZS0+
Zml4ZWRMYXlvdXRTaXplKCksIGZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0LCBzaG91bGRVc2VGaXhl
ZExheW91dCwKICAgICAgICAgaG9yaXpvbnRhbFNjcm9sbGJhck1vZGUsIGhvcml6b250YWxMb2Nr
LCB2ZXJ0aWNhbFNjcm9sbGJhck1vZGUsIHZlcnRpY2FsTG9jayk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3aW5nQXJl
YS5jcHAKaW5kZXggZWRmZTQ2YjIxOGUuLjJlNzRhZThmN2ExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZERyYXdpbmdBcmVhLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZERyYXdpbmdBcmVh
LmNwcApAQCAtOTMsMTQgKzkzLDYgQEAgdm9pZCBBY2NlbGVyYXRlZERyYXdpbmdBcmVhOjpzY3Jv
bGwoY29uc3QgSW50UmVjdCYgc2Nyb2xsUmVjdCwgY29uc3QgSW50U2l6ZSYgc2MKICAgICAgICAg
bV9sYXllclRyZWVIb3N0LT5zY3JvbGxOb25Db21wb3NpdGVkQ29udGVudHMoc2Nyb2xsUmVjdCk7
CiB9CiAKLXZvaWQgQWNjZWxlcmF0ZWREcmF3aW5nQXJlYTo6cGFnZUJhY2tncm91bmRUcmFuc3Bh
cmVuY3lDaGFuZ2VkKCkKLXsKLSAgICBpZiAobV9sYXllclRyZWVIb3N0KQotICAgICAgICBtX2xh
eWVyVHJlZUhvc3QtPnBhZ2VCYWNrZ3JvdW5kVHJhbnNwYXJlbmN5Q2hhbmdlZCgpOwotICAgIGVs
c2UgaWYgKG1fcHJldmlvdXNMYXllclRyZWVIb3N0KQotICAgICAgICBtX3ByZXZpb3VzTGF5ZXJU
cmVlSG9zdC0+cGFnZUJhY2tncm91bmRUcmFuc3BhcmVuY3lDaGFuZ2VkKCk7Ci19Ci0KIHZvaWQg
QWNjZWxlcmF0ZWREcmF3aW5nQXJlYTo6c2V0TGF5ZXJUcmVlU3RhdGVJc0Zyb3plbihib29sIGlz
RnJvemVuKQogewogICAgIGlmIChtX2xheWVyVHJlZVN0YXRlSXNGcm96ZW4gPT0gaXNGcm96ZW4p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRl
ZERyYXdpbmdBcmVhLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVy
YXRlZERyYXdpbmdBcmVhLmgKaW5kZXggMDkyN2Q0NGQwMDQuLmY3ZWY5ZjZmNTM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZERyYXdpbmdB
cmVhLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWRE
cmF3aW5nQXJlYS5oCkBAIC00Myw3ICs0Myw2IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHNldE5l
ZWRzRGlzcGxheSgpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0TmVlZHNEaXNwbGF5SW5SZWN0KGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmKSBvdmVycmlkZTsKICAgICB2b2lkIHNjcm9sbChjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiBzY3JvbGxSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzY3Jv
bGxEZWx0YSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBwYWdlQmFja2dyb3VuZFRyYW5zcGFyZW5jeUNo
YW5nZWQoKSBvdmVycmlkZTsKICAgICB2b2lkIHNldExheWVyVHJlZVN0YXRlSXNGcm96ZW4oYm9v
bCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBsYXllclRyZWVTdGF0ZUlzRnJvemVuKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gbV9sYXllclRyZWVTdGF0ZUlzRnJvemVuOyB9CiAgICAgTGF5ZXJUcmVl
SG9zdCogbGF5ZXJUcmVlSG9zdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fbGF5ZXJUcmVl
SG9zdC5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGlu
YXRlZExheWVyVHJlZUhvc3QuY3BwCmluZGV4IDE1MjBmNTIwZGFjLi45M2I3YTJkZGU3MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0LmNwcApAQCAtMjI0LDEwICsyMjQsNiBAQCB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dDo6ZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCkKICAgICBtX3dlYlBhZ2UuY29yZVBh
Z2UoKS0+cGFnZU92ZXJsYXlDb250cm9sbGVyKCkuZGlkQ2hhbmdlRGV2aWNlU2NhbGVGYWN0b3Io
KTsKIH0KIAotdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnBhZ2VCYWNrZ3JvdW5kVHJh
bnNwYXJlbmN5Q2hhbmdlZCgpCi17Ci19Ci0KIEdyYXBoaWNzTGF5ZXJGYWN0b3J5KiBDb29yZGlu
YXRlZExheWVyVHJlZUhvc3Q6OmdyYXBoaWNzTGF5ZXJGYWN0b3J5KCkKIHsKICAgICByZXR1cm4g
Jm1fY29vcmRpbmF0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGlu
YXRlZExheWVyVHJlZUhvc3QuaAppbmRleCAwYThiZWM4YTM5OC4uZWE5NzQ1MzE1NGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3Qu
aApAQCAtNTUsNyArNTUsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBzaXplRGlkQ2hhbmdlKGNv
bnN0IFdlYkNvcmU6OkludFNpemUmIG5ld1NpemUpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkZXZp
Y2VPclBhZ2VTY2FsZUZhY3RvckNoYW5nZWQoKSBvdmVycmlkZTsKLSAgICB2b2lkIHBhZ2VCYWNr
Z3JvdW5kVHJhbnNwYXJlbmN5Q2hhbmdlZCgpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBzZXRWaXNp
YmxlQ29udGVudHNSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpOwogICAgIHZvaWQgcmVu
ZGVyTmV4dEZyYW1lKGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdy
YXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcAppbmRleCA4MjNiN2Zh
MmFjNy4uMTAwZmM2NGE2MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhv
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwCkBAIC0xODQsMTcg
KzE4NCw2IEBAIHZvaWQgVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmRldmljZU9y
UGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCgpCiAgICAgbV9jb21wb3NpdG9yLT5zZXRTY2FsZUZhY3Rv
cihtX3dlYlBhZ2UuZGV2aWNlU2NhbGVGYWN0b3IoKSAqIG1fdmlld3BvcnRDb250cm9sbGVyLnBh
Z2VTY2FsZUZhY3RvcigpKTsKIH0KIAotdm9pZCBUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdDo6cGFnZUJhY2tncm91bmRUcmFuc3BhcmVuY3lDaGFuZ2VkKCkKLXsKLSAgICBpZiAobV9p
c0Rpc2NhcmRhYmxlKSB7Ci0gICAgICAgIG1fZGlzY2FyZGFibGVTeW5jQWN0aW9ucy5hZGQoRGlz
Y2FyZGFibGVTeW5jQWN0aW9uczo6VXBkYXRlQmFja2dyb3VuZCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnBhZ2VCYWNrZ3JvdW5kVHJh
bnNwYXJlbmN5Q2hhbmdlZCgpOwotICAgIG1fY29tcG9zaXRvci0+c2V0RHJhd3NCYWNrZ3JvdW5k
KG1fd2ViUGFnZS5kcmF3c0JhY2tncm91bmQoKSk7Ci19Ci0KIHZvaWQgVGhyZWFkZWRDb29yZGlu
YXRlZExheWVyVHJlZUhvc3Q6OnNpemVEaWRDaGFuZ2UoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsK
ICAgICBpZiAobV9pc0Rpc2NhcmRhYmxlKSB7CkBAIC0yODYsOSArMjc1LDYgQEAgdm9pZCBUaHJl
YWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2V0SXNEaXNjYXJkYWJsZShib29sIGRpc2Nh
cmRhYmxlKQogICAgIGlmIChtX2Rpc2NhcmRhYmxlU3luY0FjdGlvbnMuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBpZiAobV9kaXNjYXJkYWJsZVN5bmNBY3Rpb25zLmNvbnRhaW5z
KERpc2NhcmRhYmxlU3luY0FjdGlvbnM6OlVwZGF0ZUJhY2tncm91bmQpKQotICAgICAgICBwYWdl
QmFja2dyb3VuZFRyYW5zcGFyZW5jeUNoYW5nZWQoKTsKLQogICAgIGlmIChtX2Rpc2NhcmRhYmxl
U3luY0FjdGlvbnMuY29udGFpbnMoRGlzY2FyZGFibGVTeW5jQWN0aW9uczo6VXBkYXRlU2l6ZSkp
IHsKICAgICAgICAgLy8gU2l6ZSBjaGFuZ2VzIGFscmVhZHkgc2V0cyB0aGUgc2NhbGUgZmFjdG9y
IGFuZCB1cGRhdGVzIHRoZSB2aWV3cG9ydC4KICAgICAgICAgc2l6ZURpZENoYW5nZShtX3dlYlBh
Z2Uuc2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3QuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVGhy
ZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3QuaAppbmRleCBiNzg0NjgxNjc5Yi4uMjI4NzYx
NjJlNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3QuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVh
ZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKQEAgLTU3LDcgKzU3LDYgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHNjcm9sbE5vbkNvbXBvc2l0ZWRDb250ZW50cyhjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0JiBzY3JvbGxSZWN0KSBvdmVycmlkZTsKICAgICB2b2lkIHNpemVEaWRDaGFuZ2UoY29uc3Qg
V2ViQ29yZTo6SW50U2l6ZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGV2aWNlT3JQYWdlU2NhbGVG
YWN0b3JDaGFuZ2VkKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBwYWdlQmFja2dyb3VuZFRyYW5zcGFy
ZW5jeUNoYW5nZWQoKSBvdmVycmlkZTsKIAogICAgIHZvaWQgY29udGVudHNTaXplQ2hhbmdlZChj
b25zdCBXZWJDb3JlOjpJbnRTaXplJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDaGFuZ2VWaWV3
cG9ydEF0dHJpYnV0ZXMoV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzJiYpIG92ZXJyaWRlOwpA
QCAtMTQzLDggKzE0Miw3IEBAIHByaXZhdGU6CiAgICAgZW51bSBjbGFzcyBEaXNjYXJkYWJsZVN5
bmNBY3Rpb25zIHsKICAgICAgICAgVXBkYXRlU2l6ZSA9IDEgPDwgMSwKICAgICAgICAgVXBkYXRl
Vmlld3BvcnQgPSAxIDw8IDIsCi0gICAgICAgIFVwZGF0ZVNjYWxlID0gMSA8PCAzLAotICAgICAg
ICBVcGRhdGVCYWNrZ3JvdW5kID0gMSA8PCA0CisgICAgICAgIFVwZGF0ZVNjYWxlID0gMSA8PCAz
CiAgICAgfTsKIAogICAgIENvbXBvc2l0b3JDbGllbnQgbV9jb21wb3NpdG9yQ2xpZW50OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgKaW5kZXggN2Vl
MjI4Y2UxOGEuLmZkNzkyOWYwNGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0RyYXdpbmdBcmVhLmgKQEAgLTgwLDcgKzgwLDYgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBzY3JvbGwoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc2Nyb2xsUmVjdCwgY29uc3Qg
V2ViQ29yZTo6SW50U2l6ZSYgc2Nyb2xsRGVsdGEpID0gMDsKIAogICAgIC8vIEZJWE1FOiBUaGVz
ZSBzaG91bGQgYmUgcHVyZSB2aXJ0dWFsLgotICAgIHZpcnR1YWwgdm9pZCBwYWdlQmFja2dyb3Vu
ZFRyYW5zcGFyZW5jeUNoYW5nZWQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZm9yY2VSZXBhaW50
KCkgeyB9CiAgICAgdmlydHVhbCBib29sIGZvcmNlUmVwYWludEFzeW5jKENhbGxiYWNrSUQpIHsg
cmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIHNldExheWVyVHJlZVN0YXRlSXNGcm96
ZW4oYm9vbCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9EcmF3aW5nQXJlYUltcGwuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
RHJhd2luZ0FyZWFJbXBsLmNwcAppbmRleCA2YTg2YjAwMmI4Ni4uMDg5YWMyMGJmODcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBs
LmNwcApAQCAtNDEwLDggKzQxMCw3IEBAIHZvaWQgRHJhd2luZ0FyZWFJbXBsOjpkaXNwbGF5KFVw
ZGF0ZUluZm8mIHVwZGF0ZUluZm8pCiAgICAgdXBkYXRlSW5mby52aWV3U2l6ZSA9IG1fd2ViUGFn
ZS5zaXplKCk7CiAgICAgdXBkYXRlSW5mby5kZXZpY2VTY2FsZUZhY3RvciA9IG1fd2ViUGFnZS5j
b3JlUGFnZSgpLT5kZXZpY2VTY2FsZUZhY3RvcigpOwogCi0gICAgLy8gQWx3YXlzIHJlbmRlciB0
aGUgd2hvbGUgcGFnZSB3aGVuIHdlIGRvbid0IHJlbmRlciB0aGUgYmFja2dyb3VuZC4KLSAgICBJ
bnRSZWN0IGJvdW5kcyA9IG1fd2ViUGFnZS5kcmF3c0JhY2tncm91bmQoKSA/IG1fZGlydHlSZWdp
b24uYm91bmRzKCkgOiBtX3dlYlBhZ2UuYm91bmRzKCk7CisgICAgSW50UmVjdCBib3VuZHMgPSBt
X2RpcnR5UmVnaW9uLmJvdW5kcygpOwogICAgIEFTU0VSVChtX3dlYlBhZ2UuYm91bmRzKCkuY29u
dGFpbnMoYm91bmRzKSk7CiAKICAgICBJbnRTaXplIGJpdG1hcFNpemUgPSBib3VuZHMuc2l6ZSgp
OwpAQCAtNDI0LDE2ICs0MjMsMTEgQEAgdm9pZCBEcmF3aW5nQXJlYUltcGw6OmRpc3BsYXkoVXBk
YXRlSW5mbyYgdXBkYXRlSW5mbykKICAgICBpZiAoIWJpdG1hcC0+Y3JlYXRlSGFuZGxlKHVwZGF0
ZUluZm8uYml0bWFwSGFuZGxlKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgVmVjdG9yPEludFJl
Y3Q+IHJlY3RzOwotICAgIGlmIChtX3dlYlBhZ2UuZHJhd3NCYWNrZ3JvdW5kKCkpIHsKLSAgICAg
ICAgcmVjdHMgPSBtX2RpcnR5UmVnaW9uLnJlY3RzKCk7Ci0KLSAgICAgICAgaWYgKHNob3VsZFBh
aW50Qm91bmRzUmVjdChib3VuZHMsIHJlY3RzKSkgewotICAgICAgICAgICAgcmVjdHMuY2xlYXIo
KTsKLSAgICAgICAgICAgIHJlY3RzLmFwcGVuZChib3VuZHMpOwotICAgICAgICB9Ci0gICAgfSBl
bHNlCisgICAgVmVjdG9yPEludFJlY3Q+IHJlY3RzID0gbV9kaXJ0eVJlZ2lvbi5yZWN0cygpOwor
ICAgIGlmIChzaG91bGRQYWludEJvdW5kc1JlY3QoYm91bmRzLCByZWN0cykpIHsKKyAgICAgICAg
cmVjdHMuY2xlYXIoKTsKICAgICAgICAgcmVjdHMuYXBwZW5kKGJvdW5kcyk7CisgICAgfQogCiAg
ICAgdXBkYXRlSW5mby5zY3JvbGxSZWN0ID0gbV9zY3JvbGxSZWN0OwogICAgIHVwZGF0ZUluZm8u
c2Nyb2xsT2Zmc2V0ID0gbV9zY3JvbGxPZmZzZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9MYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9MYXllclRyZWVIb3N0LmgKaW5kZXggODVkZDQ1OGUwMTguLjUzYzM5ODI5
OWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9MYXllclRy
ZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvTGF5ZXJUcmVl
SG9zdC5oCkBAIC03NCw3ICs3NCw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZm9yY2VS
ZXBhaW50KCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBmb3JjZVJlcGFpbnRBc3luYyhDYWxsYmFj
a0lEKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzaXplRGlkQ2hhbmdlKGNv
bnN0IFdlYkNvcmU6OkludFNpemUmIG5ld1NpemUpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcGFn
ZUJhY2tncm91bmRUcmFuc3BhcmVuY3lDaGFuZ2VkKCkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lk
IHBhdXNlUmVuZGVyaW5nKCk7CiAgICAgdmlydHVhbCB2b2lkIHJlc3VtZVJlbmRlcmluZygpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCAyMDIz
ZmU0MThkMC4uM2Y2MGU0MWMwYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCkBAIC01MTUsOCArNTE1LDYgQEAgV2ViUGFnZTo6V2ViUGFnZSh1aW50
NjRfdCBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogCiAg
ICAgc2V0VXNlRml4ZWRMYXlvdXQocGFyYW1ldGVycy51c2VGaXhlZExheW91dCk7CiAKLSAgICBz
ZXREcmF3c0JhY2tncm91bmQocGFyYW1ldGVycy5kcmF3c0JhY2tncm91bmQpOwotCiAgICAgc2V0
VW5kZXJsYXlDb2xvcihwYXJhbWV0ZXJzLnVuZGVybGF5Q29sb3IpOwogCiAgICAgc2V0UGFnaW5h
dGlvbk1vZGUocGFyYW1ldGVycy5wYWdpbmF0aW9uTW9kZSk7CkBAIC02NDMsNiArNjQxLDggQEAg
V2ViUGFnZTo6V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMmJiBwYXJhbWV0ZXJzKQogI2lmIFVTRShBVURJT19TRVNTSU9OKQogICAgIFBsYXRmb3JtTWVk
aWFTZXNzaW9uTWFuYWdlcjo6c2V0U2hvdWxkRGVhY3RpdmF0ZUF1ZGlvU2Vzc2lvbih0cnVlKTsK
ICNlbmRpZgorCisgICAgc2V0QmFja2dyb3VuZENvbG9yKHBhcmFtZXRlcnMuYmFja2dyb3VuZENv
bG9yKTsKIH0KIAogI2lmIEVOQUJMRShXRUJfUlRDKQpAQCAtMjkwMSwxOSArMjkwMSwxNiBAQCB2
b2lkIFdlYlBhZ2U6OnNldEluZGljYXRpbmcoYm9vbCBpbmRpY2F0aW5nKQogfQogI2VuZGlmCiAK
LXZvaWQgV2ViUGFnZTo6c2V0RHJhd3NCYWNrZ3JvdW5kKGJvb2wgZHJhd3NCYWNrZ3JvdW5kKQor
dm9pZCBXZWJQYWdlOjpzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6
Q29sb3I+JiBiYWNrZ3JvdW5kQ29sb3IpCiB7Ci0gICAgaWYgKG1fZHJhd3NCYWNrZ3JvdW5kID09
IGRyYXdzQmFja2dyb3VuZCkKKyAgICBpZiAobV9iYWNrZ3JvdW5kQ29sb3IgPT0gYmFja2dyb3Vu
ZENvbG9yKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2RyYXdzQmFja2dyb3VuZCA9IGRyYXdz
QmFja2dyb3VuZDsKKyAgICBtX2JhY2tncm91bmRDb2xvciA9IGJhY2tncm91bmRDb2xvcjsKIAot
ICAgIGlmIChGcmFtZVZpZXcqIGZyYW1lVmlldyA9IG1haW5GcmFtZVZpZXcoKSkgewotICAgICAg
ICBib29sIGlzVHJhbnNwYXJlbnQgPSAhZHJhd3NCYWNrZ3JvdW5kOwotICAgICAgICBmcmFtZVZp
ZXctPnVwZGF0ZUJhY2tncm91bmRSZWN1cnNpdmVseShpc1RyYW5zcGFyZW50KTsKLSAgICB9Cisg
ICAgaWYgKEZyYW1lVmlldyogZnJhbWVWaWV3ID0gbWFpbkZyYW1lVmlldygpKQorICAgICAgICBm
cmFtZVZpZXctPnVwZGF0ZUJhY2tncm91bmRSZWN1cnNpdmVseShiYWNrZ3JvdW5kQ29sb3IpOwog
Ci0gICAgbV9kcmF3aW5nQXJlYS0+cGFnZUJhY2tncm91bmRUcmFuc3BhcmVuY3lDaGFuZ2VkKCk7
CiAgICAgbV9kcmF3aW5nQXJlYS0+c2V0TmVlZHNEaXNwbGF5KCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBlMjQ2MGNiZDI3ZC4uYjE3ZDBj
MjFiNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAg
LTUwMSw4ICs1MDEsNiBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBwb3N0SW5qZWN0ZWRCdW5k
bGVNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hbWUsIGNvbnN0IFVzZXJEYXRhJik7CiAK
LSAgICBib29sIGRyYXdzQmFja2dyb3VuZCgpIGNvbnN0IHsgcmV0dXJuIG1fZHJhd3NCYWNrZ3Jv
dW5kOyB9Ci0KICAgICB2b2lkIHNldFVuZGVybGF5Q29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3Im
IGNvbG9yKSB7IG1fdW5kZXJsYXlDb2xvciA9IGNvbG9yOyB9CiAgICAgV2ViQ29yZTo6Q29sb3Ig
dW5kZXJsYXlDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fdW5kZXJsYXlDb2xvcjsgfQogCkBAIC0x
MTQ2LDYgKzExNDQsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBzZW5kU3luYyhXVEZNb3Zl
KG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwgbV9wYWdlSUQsIFNlY29uZHM6OmluZmluaXR5KCks
IElQQzo6U2VuZFN5bmNPcHRpb246OkluZm9ybVBsYXRmb3JtUHJvY2Vzc1dpbGxTdXNwZW5kKTsK
ICAgICB9CiAKKyAgICBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpDb2xvcj4mIGJhY2tncm91bmRD
b2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZENvbG9yOyB9CisKIHByaXZhdGU6CiAg
ICAgV2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJik7
CiAKQEAgLTEyODEsNyArMTI4MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRJbmRpY2F0aW5n
KGJvb2wpOwogI2VuZGlmCiAKLSAgICB2b2lkIHNldERyYXdzQmFja2dyb3VuZChib29sKTsKKyAg
ICB2b2lkIHNldEJhY2tncm91bmRDb2xvcihjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpDb2xvcj4m
KTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgc2V0VG9wQ29udGVudEluc2V0RmVu
Y2VkKGZsb2F0LCBJUEM6OkF0dGFjaG1lbnQpOwpAQCAtMTc3Nyw3ICsxNzc3LDcgQEAgcHJpdmF0
ZToKICAgICBib29sIG1faXNTdXNwZW5kZWRVbmRlckxvY2sgeyBmYWxzZSB9OwogCiAgICAgSGFz
aFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4gbV9taW1lVHlwZXNXaXRoQ3Vz
dG9tQ29udGVudFByb3ZpZGVyczsKLSAgICBXZWJDb3JlOjpDb2xvciBtX2JhY2tncm91bmRDb2xv
ciB7IFdlYkNvcmU6OkNvbG9yOjp3aGl0ZSB9OworICAgIE9wdGlvbmFsPFdlYkNvcmU6OkNvbG9y
PiBtX2JhY2tncm91bmRDb2xvciB7IFdlYkNvcmU6OkNvbG9yOjp3aGl0ZSB9OwogCiAgICAgSGFz
aFNldDx1bnNpZ25lZD4gbV9hY3RpdmVSZW5kZXJpbmdTdXBwcmVzc2lvblRva2VuczsKICAgICB1
bnNpZ25lZCBtX21heGltdW1SZW5kZXJpbmdTdXBwcmVzc2lvblRva2VuIHsgMCB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4K
aW5kZXggYThjNjE3NjllNWUuLjE2M2ExNzY5Y2YwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTI1LDcgKzI1LDcg
QEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgU2V0QWN0aXZpdHlT
dGF0ZShPcHRpb25TZXQ8V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZz4gYWN0aXZpdHlTdGF0
ZSwgV2ViS2l0OjpBY3Rpdml0eVN0YXRlQ2hhbmdlSUQgYWN0aXZpdHlTdGF0ZUNoYW5nZUlELCBW
ZWN0b3I8V2ViS2l0OjpDYWxsYmFja0lEPiBjYWxsYmFja0lEcykKICAgICBTZXRMYXllckhvc3Rp
bmdNb2RlKGVudW06dWludDhfdCBXZWJLaXQ6OkxheWVySG9zdGluZ01vZGUgbGF5ZXJIb3N0aW5n
TW9kZSkKIAotICAgIFNldERyYXdzQmFja2dyb3VuZChib29sIGRyYXdzQmFja2dyb3VuZCkKKyAg
ICBTZXRCYWNrZ3JvdW5kQ29sb3IoT3B0aW9uYWw8V2ViQ29yZTo6Q29sb3I+IGNvbG9yKQogCiAg
ICAgQWRkQ29uc29sZU1lc3NhZ2UodWludDY0X3QgZnJhbWVJRCwgZW51bTp1aW50OF90IEpTQzo6
TWVzc2FnZVNvdXJjZSBtZXNzYWdlU291cmNlLCBlbnVtOnVpbnQ4X3QgSlNDOjpNZXNzYWdlTGV2
ZWwgbWVzc2FnZUxldmVsLCBTdHJpbmcgbWVzc2FnZSwgdWludDY0X3QgcmVxdWVzdElEKQogICAg
IFNlbmRDU1BWaW9sYXRpb25SZXBvcnQodWludDY0X3QgZnJhbWVJRCwgVVJMIHJlcG9ydFVSTCwg
SVBDOjpGb3JtRGF0YVJlZmVyZW5jZSByZXBvcnREYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdl
TG9nCmluZGV4IGU5MGNmMWFjMjBmLi4xNzBhYmEyODRlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE5LTAxLTE4ICBQaGlsaXBwZSBOb3JtYW5kICA8
cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbV1BFXSBBZGQgQVBJIGZvciB3ZWJ2aWV3
IGJhY2tncm91bmQgY29sb3IgY29uZmlndXJhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyMzA1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTWlj
aGFlbCBDYXRhbnphcm8uCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHA6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6dHJhbnNpdGlvblRv
Q29tbWl0dGVkRm9yTmV3UGFnZSk6IENyZWF0ZQorICAgICAgICBGcmFtZVZpZXcgd2l0aCBiYWNr
Z3JvdW5kIGNvbG9yLgorCiAyMDE5LTAyLTA2ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxl
LmNvbT4KIAogICAgICAgICBTdGFuZGFyZGl6ZSBvbiBDb250cm9sS2V5IGluc3RlYWQgb2YgQ3Ry
bEtleQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IGMxNDUyZTg0ZjM3Li4xMTU5
NWIyZjZjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtOTg1LDEwICs5ODUs
MTIgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6dHJhbnNpdGlvblRvQ29tbWl0dGVkRm9y
TmV3UGFnZSgpCiAKICAgICBSRUNUIHBpeGVsUmVjdDsKICAgICB2aWV3LT5mcmFtZVJlY3QoJnBp
eGVsUmVjdCk7Ci0gICAgYm9vbCB0cmFuc3BhcmVudCA9IHZpZXctPnRyYW5zcGFyZW50KCk7Cisg
ICAgT3B0aW9uYWw8Q29sb3I+IGJhY2tncm91bmRDb2xvcjsKKyAgICBpZiAodmlldy0+dHJhbnNw
YXJlbnQoKSkKKyAgICAgICAgYmFja2dyb3VuZENvbG9yID0gQ29sb3IoQ29sb3I6OnRyYW5zcGFy
ZW50KTsKICAgICBGbG9hdFJlY3QgbG9naWNhbEZyYW1lKHBpeGVsUmVjdCk7CiAgICAgbG9naWNh
bEZyYW1lLnNjYWxlKDEuMGYgLyB2aWV3LT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKLSAgICBjb3Jl
KG1fd2ViRnJhbWUpLT5jcmVhdGVWaWV3KGVuY2xvc2luZ0ludFJlY3QobG9naWNhbEZyYW1lKS5z
aXplKCksIHRyYW5zcGFyZW50LCAvKiBmaXhlZExheW91dFNpemUgKi8geyB9LCAvKiBmaXhlZFZp
c2libGVDb250ZW50UmVjdCAqLyB7IH0pOworICAgIGNvcmUobV93ZWJGcmFtZSktPmNyZWF0ZVZp
ZXcoZW5jbG9zaW5nSW50UmVjdChsb2dpY2FsRnJhbWUpLnNpemUoKSwgYmFja2dyb3VuZENvbG9y
LCAvKiBmaXhlZExheW91dFNpemUgKi8geyB9LCAvKiBmaXhlZFZpc2libGVDb250ZW50UmVjdCAq
LyB7IH0pOwogfQogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWRTYXZlVG9QYWdlQ2Fj
aGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCmluZGV4IDA0YjZmZWEzY2I0Li40
YWQzMTY2MDE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcApAQCAtMjA4OSw3
ICsyMDg5LDEwIEBAIHZvaWQgV2ViRnJhbWU6OnVwZGF0ZUJhY2tncm91bmQoKQogICAgIGlmICgh
Y29yZUZyYW1lIHx8ICFjb3JlRnJhbWUtPnZpZXcoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
Y29yZUZyYW1lLT52aWV3KCktPnVwZGF0ZUJhY2tncm91bmRSZWN1cnNpdmVseSh3ZWJWaWV3KCkt
PnRyYW5zcGFyZW50KCkpOworICAgIE9wdGlvbmFsPENvbG9yPiBiYWNrZ3JvdW5kQ29sb3I7Cisg
ICAgaWYgKHdlYlZpZXcoKS0+dHJhbnNwYXJlbnQoKSkKKyAgICAgICAgYmFja2dyb3VuZENvbG9y
ID0gQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50KTsKKyAgICBjb3JlRnJhbWUtPnZpZXcoKS0+dXBk
YXRlQmFja2dyb3VuZFJlY3Vyc2l2ZWx5KGJhY2tncm91bmRDb2xvcik7CiB9CiAKIC8vIElXZWJG
cmFtZTIKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRl
eCAwZmRkZTFlYzI3My4uZTQ5M2U0N2YxOGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxOS0wMS0xOCAgUGhpbGlw
cGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CisKKyAgICAgICAgW1dQRV0gQWRkIEFQ
SSBmb3Igd2VidmlldyBiYWNrZ3JvdW5kIGNvbG9yIGNvbmZpZ3VyYXRpb24KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MjMwNQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE1pY2hhZWwgQ2F0YW56YXJvLgorCisgICAgICAgICogTWluaUJyb3dzZXIvd3Bl
L21haW4uY3BwOgorICAgICAgICAobWFpbik6IEFkZCBhIG5ldyBvcHRpb24gdG8gY29uZmlndXJl
IHRoZSB3ZWJ2aWV3IGJhY2tncm91bmQKKyAgICAgICAgY29sb3IuIEV4YW1wbGU6IC0tYmctY29s
b3I9dHJhbnNwYXJlbnQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGli
L1Rlc3RXZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKHRlc3RXZWJWaWV3QmFja2dyb3VuZENv
bG9yKTogRW5hYmxlIGJhY2tncm91bmQgY29sb3IgQVBJIHRlc3RzIGZvciBXUEUuCisgICAgICAg
IChiZWZvcmVBbGwpOiBEaXR0by4KKwogMjAxOS0wMS0xNiAgQ2FybG9zIEdhcmNpYSBDYW1wb3Mg
IDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS11bV1BFXSBBZGQgd2ViIGV4dGVu
c2lvbnMgQVBJIHRvIHdoaXRlbGlzdCBhY2Nlc3MgdG8gYSBzZWN1cml0eSBvcmlnaW4KZGlmZiAt
LWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3dwZS9tYWluLmNwcCBiL1Rvb2xzL01pbmlCcm93c2Vy
L3dwZS9tYWluLmNwcAppbmRleCAxMzFhMGYzODcwOS4uMjVjYzg4NDkzZmYgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL01pbmlCcm93c2VyL3dwZS9tYWluLmNwcAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci93
cGUvbWFpbi5jcHAKQEAgLTQyLDYgKzQyLDcgQEAgc3RhdGljIGdib29sZWFuIGlnbm9yZVRMU0Vy
cm9yczsKIHN0YXRpYyBjb25zdCBjaGFyKiBjb29raWVzRmlsZTsKIHN0YXRpYyBjb25zdCBjaGFy
KiBjb29raWVzUG9saWN5Owogc3RhdGljIGNvbnN0IGNoYXIqIHByb3h5OworY29uc3QgY2hhciog
YmdDb2xvcjsKIAogc3RhdGljIGNvbnN0IEdPcHRpb25FbnRyeSBjb21tYW5kTGluZU9wdGlvbnNb
XSA9CiB7CkBAIC01Myw2ICs1NCw3IEBAIHN0YXRpYyBjb25zdCBHT3B0aW9uRW50cnkgY29tbWFu
ZExpbmVPcHRpb25zW10gPQogICAgIHsgInByb3h5IiwgMCwgMCwgR19PUFRJT05fQVJHX1NUUklO
RywgJnByb3h5LCAiU2V0IHByb3h5IiwgIlBST1hZIiB9LAogICAgIHsgImlnbm9yZS1ob3N0Iiwg
MCwgMCwgR19PUFRJT05fQVJHX1NUUklOR19BUlJBWSwgJmlnbm9yZUhvc3RzLCAiU2V0IHByb3h5
IGlnbm9yZSBob3N0cyIsICJIT1NUUyIgfSwKICAgICB7ICJpZ25vcmUtdGxzLWVycm9ycyIsIDAs
IDAsIEdfT1BUSU9OX0FSR19OT05FLCAmaWdub3JlVExTRXJyb3JzLCAiSWdub3JlIFRMUyBlcnJv
cnMiLCBudWxscHRyIH0sCisgICAgeyAiYmctY29sb3IiLCAwLCAwLCBHX09QVElPTl9BUkdfU1RS
SU5HLCAmYmdDb2xvciwgIldpbmRvdyBiYWNrZ3JvdW5kIGNvbG9yLiBEZWZhdWx0OiB3aGl0ZSIs
ICJDT0xPUiIgfSwKICAgICB7IEdfT1BUSU9OX1JFTUFJTklORywgMCwgMCwgR19PUFRJT05fQVJH
X0ZJTEVOQU1FX0FSUkFZLCAmdXJpQXJndW1lbnRzLCBudWxscHRyLCAiW1VSTF0iIH0sCiAgICAg
eyBudWxscHRyLCAwLCAwLCBHX09QVElPTl9BUkdfTk9ORSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVs
bHB0ciB9CiB9OwpAQCAtMjEzLDYgKzIxNSwxMCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAq
YXJndltdKQogICAgIGlmIChpZ25vcmVUTFNFcnJvcnMpCiAgICAgICAgIHdlYmtpdF93ZWJfY29u
dGV4dF9zZXRfdGxzX2Vycm9yc19wb2xpY3kod2ViQ29udGV4dCwgV0VCS0lUX1RMU19FUlJPUlNf
UE9MSUNZX0lHTk9SRSk7CiAKKyAgICBXZWJLaXRDb2xvciBjb2xvcjsKKyAgICBpZiAoYmdDb2xv
ciAmJiB3ZWJraXRfY29sb3JfcGFyc2UoJmNvbG9yLCBiZ0NvbG9yKSkKKyAgICAgICAgd2Via2l0
X3dlYl92aWV3X3NldF9iYWNrZ3JvdW5kX2NvbG9yKHdlYlZpZXcsICZjb2xvcik7CisKICAgICBp
ZiAodXJpQXJndW1lbnRzKSB7CiAgICAgICAgIEdGaWxlKiBmaWxlID0gZ19maWxlX25ld19mb3Jf
Y29tbWFuZGxpbmVfYXJnKHVyaUFyZ3VtZW50c1swXSk7CiAgICAgICAgIGNoYXIqIHVybCA9IGdf
ZmlsZV9nZXRfdXJpKGZpbGUpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0V2ViVmlldy5jcHAKaW5kZXggNTRmMTk3Yjg4MzMu
LmQwNTMxYjQ5ZjBmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dEdMaWIvVGVzdFdlYktpdFdlYlZpZXcuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0V2ViVmlldy5jcHAKQEAgLTExMzMsMTEgKzExMzMsMTYg
QEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdJc1BsYXlpbmdBdWRpbyhJc1BsYXlpbmdBdWRpb1dl
YlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2kKICAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfd2Vi
X3ZpZXdfaXNfcGxheWluZ19hdWRpbyh0ZXN0LT5tX3dlYlZpZXcpKTsKIH0KIAotI2lmIFBMQVRG
T1JNKEdUSykKIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3QmFja2dyb3VuZENvbG9yKFdlYlZpZXdU
ZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogeworI2lmIFBMQVRGT1JNKEdUSykKKyNkZWZpbmUg
Q29sb3JUeXBlIEdka1JHQkEKKyNlbGlmIFBMQVRGT1JNKFdQRSkKKyNkZWZpbmUgQ29sb3JUeXBl
IFdlYktpdENvbG9yCisjZW5kaWYKKwogICAgIC8vIFdoaXRlIGlzIHRoZSBkZWZhdWx0IGJhY2tn
cm91bmQuCi0gICAgR2RrUkdCQSByZ2JhOworICAgIENvbG9yVHlwZSByZ2JhOwogICAgIHdlYmtp
dF93ZWJfdmlld19nZXRfYmFja2dyb3VuZF9jb2xvcih0ZXN0LT5tX3dlYlZpZXcsICZyZ2JhKTsK
ICAgICBnX2Fzc2VydF9jbXBmbG9hdChyZ2JhLnJlZCwgPT0sIDEpOwogICAgIGdfYXNzZXJ0X2Nt
cGZsb2F0KHJnYmEuZ3JlZW4sID09LCAxKTsKQEAgLTExNTUsMTAgKzExNjAsMjMgQEAgc3RhdGlj
IHZvaWQgdGVzdFdlYlZpZXdCYWNrZ3JvdW5kQ29sb3IoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25z
dHBvaW50ZXIpCiAgICAgZ19hc3NlcnRfY21wZmxvYXQocmdiYS5ibHVlLCA9PSwgMCk7CiAgICAg
Z19hc3NlcnRfY21wZmxvYXQocmdiYS5hbHBoYSwgPT0sIDAuNSk7CiAKKyNpZiBQTEFURk9STShX
UEUpCisgICAgQ29sb3JUeXBlIGNvbG9yOworICAgIGdfYXNzZXJ0KHdlYmtpdF9jb2xvcl9wYXJz
ZSgmY29sb3IsICJyZWQiKSk7CisgICAgZ19hc3NlcnRfY21wZmxvYXQoY29sb3IucmVkLCA9PSwg
MSk7CisgICAgd2Via2l0X3dlYl92aWV3X3NldF9iYWNrZ3JvdW5kX2NvbG9yKHRlc3QtPm1fd2Vi
VmlldywgJmNvbG9yKTsKKyAgICB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2JhY2tncm91bmRfY29sb3Io
dGVzdC0+bV93ZWJWaWV3LCAmcmdiYSk7CisgICAgZ19hc3NlcnRfY21wZmxvYXQocmdiYS5yZWQs
ID09LCAxKTsKKyAgICBnX2Fzc2VydF9jbXBmbG9hdChyZ2JhLmdyZWVuLCA9PSwgMCk7CisgICAg
Z19hc3NlcnRfY21wZmxvYXQocmdiYS5ibHVlLCA9PSwgMCk7CisgICAgZ19hc3NlcnRfY21wZmxv
YXQocmdiYS5hbHBoYSwgPT0sIDEpOworI2VuZGlmCisKICAgICAvLyBUaGUgYWN0dWFsIHJlbmRl
cmluZyBjYW4ndCBiZSB0ZXN0ZWQgdXNpbmcgdW5pdCB0ZXN0cywgdXNlCiAgICAgLy8gTWluaUJy
b3dzZXIgLS1iZy1jb2xvcj0iPGNvbG9yLXZhbHVlPiIgZm9yIG1hbnVhbGx5IHRlc3RpbmcgdGhp
cyBBUEkuCiB9CiAKKyNpZiBQTEFURk9STShHVEspCiBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld1By
ZWZlcnJlZFNpemUoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7CiAgICAgdGVz
dC0+bG9hZEh0bWwoIjxodG1sIHN0eWxlPSd3aWR0aDogMzI1cHg7IGhlaWdodDogNjE1cHgnPjwv
aHRtbD4iLCBudWxscHRyKTsKQEAgLTEzNjMsOCArMTM4MSw4IEBAIHZvaWQgYmVmb3JlQWxsKCkK
ICAgICBOb3RpZmljYXRpb25XZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgIm5vdGlm
aWNhdGlvbi1pbml0aWFsLXBlcm1pc3Npb24tZGlzYWxsb3dlZCIsIHRlc3RXZWJWaWV3Tm90aWZp
Y2F0aW9uSW5pdGlhbFBlcm1pc3Npb25EaXNhbGxvd2VkKTsKICNlbmRpZgogICAgIElzUGxheWlu
Z0F1ZGlvV2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJpcy1wbGF5aW5nLWF1ZGlv
IiwgdGVzdFdlYlZpZXdJc1BsYXlpbmdBdWRpbyk7Ci0jaWYgUExBVEZPUk0oR1RLKQogICAgIFdl
YlZpZXdUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAiYmFja2dyb3VuZC1jb2xvciIsIHRlc3RX
ZWJWaWV3QmFja2dyb3VuZENvbG9yKTsKKyNpZiBQTEFURk9STShHVEspCiAgICAgV2ViVmlld1Rl
c3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJwcmVmZXJyZWQtc2l6ZSIsIHRlc3RXZWJWaWV3UHJl
ZmVycmVkU2l6ZSk7CiAjZW5kaWYKICAgICBXZWJWaWV3VGl0bGVUZXN0OjphZGQoIldlYktpdFdl
YlZpZXciLCAidGl0bGUtY2hhbmdlIiwgdGVzdFdlYlZpZXdUaXRsZUNoYW5nZSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>