<?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>204273</bug_id>
          
          <creation_ts>2019-11-16 07:42:27 -0800</creation_ts>
          <short_desc>[GStreamer] Pipeline lifetime tracking</short_desc>
          <delta_ts>2019-11-26 06:56:45 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>204619</dup_id>
          
          <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>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>menard</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>vjaquez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1590864</commentid>
    <comment_count>0</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2019-11-16 07:42:27 -0800</bug_when>
    <thetext>This would be needed for the WebInspector GStreamer tab.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1590865</commentid>
    <comment_count>1</comment_count>
      <attachid>383697</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2019-11-16 07:48:36 -0800</bug_when>
    <thetext>Created attachment 383697
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1590866</commentid>
    <comment_count>2</comment_count>
      <attachid>383698</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2019-11-16 07:50:14 -0800</bug_when>
    <thetext>Created attachment 383698
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1590871</commentid>
    <comment_count>3</comment_count>
      <attachid>383700</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2019-11-16 09:18:45 -0800</bug_when>
    <thetext>Created attachment 383700
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1591025</commentid>
    <comment_count>4</comment_count>
      <attachid>383700</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2019-11-18 05:00:29 -0800</bug_when>
    <thetext>Comment on attachment 383700
Patch

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

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.cpp:389
&gt; +    String name = gst_object_get_name(GST_OBJECT_CAST(pipeline));

You&apos;re leaking the name here. gst_object_get_name returns a transfer full and the String constructor is going to copy it.

You can either use GUniquePtr or something like:
String name(StringImpl::createWithoutCopying(gst_object_get_name...));

Besides, I would recommend first return on !GST_IS_ELEMENT (maybe G_RETURN_IF_FAIL) just in case we get funny things. With nulls the best we can get is a critical on gst_object_get_name and the worst a crash if checks are disabled (rare but possible). By the code we&apos;re using it looks like we are not getting nulls but for the future, better safe than sorry.

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.cpp:401
&gt; +    String name = gst_object_get_name(GST_OBJECT_CAST(pipeline));

Ditto.

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.cpp:415
&gt; +    Vector&lt;String&gt; names;
&gt; +    for (auto name : s_webKitGStreamerPipelines.keys())
&gt; +        names.append(name);

We can try to save some allocations if we check the size first, allocate the vector and then appendUnchecked.

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.cpp:424
&gt; +        return &quot;&quot;;

emptyString()? Or even better nullString().

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.cpp:429
&gt; +    GRefPtr&lt;GstElement&gt; child = gst_bin_get_by_name(pipeline, subBinName.utf8().data());

gst_bin_get_by_name is transfer full, you need to adopt here.

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.cpp:433
&gt; +    return &quot;&quot;;

Ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1592322</commentid>
    <comment_count>5</comment_count>
      <attachid>384038</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2019-11-21 02:35:03 -0800</bug_when>
    <thetext>Created attachment 384038
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1592346</commentid>
    <comment_count>6</comment_count>
      <attachid>384038</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-11-21 05:06:17 -0800</bug_when>
    <thetext>Comment on attachment 384038
Patch

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

I think it&apos;s easier to understand this patch if it also includes the inspector part, so I would merge both patches into one.

&gt; Source/WebCore/html/HTMLMediaElement.cpp:7230
&gt; +void HTMLMediaElement::pipelineCreated(GstElement* pipeline)
&gt; +{
&gt; +    if (!document().page())
&gt; +        return;
&gt; +
&gt; +    registerGStreamerPipeline(pipeline, document().page());
&gt; +}
&gt; +
&gt; +void HTMLMediaElement::pipelineWillBeDestroyed(GstElement* pipeline)
&gt; +{
&gt; +    if (!document().page())
&gt; +        return;
&gt; +
&gt; +    unregisterGStreamerPipeline(pipeline, document().page());

We only need to access the page here to notify the inspector about changes in the pipelines. I think it would be simpler if the register/unregister happens in the platform code, without using the page, and then use the media player to otify the inspector. So, this would be reduced to a single method HTMLMediaElement::gstreamerPipelinesChanged() (for example) that could notify the inspector directly. That way we don&apos;t need any GST code here.

&gt; Source/WebCore/platform/audio/gstreamer/AudioDestinationGStreamer.cpp:28
&gt; +#include &quot;Document.h&quot;

This is a layering violation

&gt; Source/WebCore/platform/audio/gstreamer/AudioDestinationGStreamer.cpp:32
&gt; +#include &quot;PlatformMediaSessionManager.h&quot;

Ditto.

&gt; Source/WebCore/platform/audio/gstreamer/AudioDestinationGStreamer.cpp:98
&gt; +    m_pipeline = gst_pipeline_new(&quot;webaudio-playback&quot;);
&gt; +
&gt; +    auto&amp; manager = PlatformMediaSessionManager::sharedManager();
&gt; +    auto* session = manager.currentSession();
&gt; +    if (session) {
&gt; +        auto&amp; client = session-&gt;client();
&gt; +        auto* document = client.hostingDocument();
&gt; +        if (document)
&gt; +            registerGStreamerPipeline(m_pipeline, document-&gt;page());
&gt; +    }

Unfortunately we can&apos;t use PlatformMediaSessionManager from platform code, we need to find another way to notify the inspector when this pipeline is created.

&gt; Source/WebCore/platform/audio/gstreamer/AudioDestinationGStreamer.cpp:155
&gt; +    auto&amp; manager = PlatformMediaSessionManager::sharedManager();
&gt; +    auto* session = manager.currentSession();
&gt; +    if (session) {
&gt; +        auto&amp; client = session-&gt;client();
&gt; +        auto* document = client.hostingDocument();
&gt; +        if (document)
&gt; +            unregisterGStreamerPipeline(m_pipeline, document-&gt;page());
&gt; +    }

Ditto.

&gt; Source/WebCore/platform/graphics/MediaPlayer.h:61
&gt; +#if USE(GSTREAMER)
&gt; +typedef struct _GstElement GstElement;
&gt; +#endif

This shouldn&apos;t be needed if we split the register/unregister and the inspector notification.

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.cpp:28
&gt; +#include &quot;Page.h&quot;

This is a layering violation too.

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.cpp:385
&gt; +HashMap&lt;String, GstBin*&gt; s_webKitGStreamerPipelines;

We normally use NeverDestroy for this kind of global maps, with a functions to get a reference to it instead of suing a global variable. Use CString instead of String, since we are storing utf8 strings.

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.cpp:390
&gt; +    if (!GST_IS_ELEMENT(pipeline))
&gt; +        return;

I would assert instead, this is not expected to happen I guess.

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.cpp:396
&gt; +    if (s_webKitGStreamerPipelines.contains(name.get()))
&gt; +        return;
&gt; +
&gt; +    s_webKitGStreamerPipelines.add(name.get(), GST_BIN_CAST(pipeline));

You can do this with a single call to add:

auto addResult = pipelinesMap().add(name.get(), nullptr);
if (!addResult.isNewEntry)
    return;
addResult.iterator-&gt;value = GST_BIN_CAST(pipeline);

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.cpp:398
&gt; +    // TODO: Hook to InspectorInstrumentation here.

Use FIXME: instead of TODO

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.cpp:411
&gt; +    if (!s_webKitGStreamerPipelines.contains(name.get()))
&gt; +        return;
&gt; +
&gt; +    s_webKitGStreamerPipelines.remove(name.get());

Use take().

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.cpp:417
&gt; +Vector&lt;String&gt; gstPipelinesNames()

gstreamerPipelineNames() and Use CString

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.cpp:427
&gt; +String dumpGStreamerPipeline(String name, String subBinName)

const String&amp; name, const String&amp; subBinName. Return a CString

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.cpp:434
&gt; +        return gst_debug_bin_to_dot_data(pipeline, GST_DEBUG_GRAPH_SHOW_ALL);

You are leaking the result of  gst_debug_bin_to_dot_data().

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.cpp:437
&gt; +    if (child &amp;&amp; GST_IS_BIN(child.get()))

GST_IS_BIN() already does the null check

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.cpp:438
&gt; +        return gst_debug_bin_to_dot_data(GST_BIN_CAST(child.get()), GST_DEBUG_GRAPH_SHOW_ALL);

Ditto.

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.h:35
&gt; +class Page;

Layering violation.

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:2413
&gt; +        if (m_player)
&gt; +            m_player-&gt;client().pipelineWillBeDestroyed(m_pipeline.get());

So here you would call the unregister directly and then m_player-&gt;client().gstreamerPipelinesChanaged().

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:349
&gt; +    if (m_pipeline) {
&gt; +        if (m_player)
&gt; +            m_player-&gt;client().pipelineWillBeDestroyed(m_pipeline.get());
&gt;          gst_element_set_state(m_pipeline.get(), GST_STATE_NULL);
&gt; +    }

Ditto.

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:358
&gt; +    if (m_player)
&gt; +        m_player-&gt;client().pipelineCreated(m_pipeline.get());

Adn same for the register

&gt; Source/WebCore/platform/graphics/gstreamer/mse/AppendPipeline.cpp:121
&gt; +    m_playerPrivate-&gt;mediaPlayer()-&gt;client().pipelineCreated(m_pipeline.get());

Ditto.

&gt; Source/WebCore/platform/graphics/gstreamer/mse/AppendPipeline.cpp:247
&gt; +        if (m_playerPrivate)
&gt; +            m_playerPrivate-&gt;mediaPlayer()-&gt;client().pipelineWillBeDestroyed(m_pipeline.get());

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1593660</commentid>
    <comment_count>7</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2019-11-26 06:56:45 -0800</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 204619 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383697</attachid>
            <date>2019-11-16 07:48:36 -0800</date>
            <delta_ts>2019-11-16 07:50:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204273-20191116154834.patch</filename>
            <type>text/plain</type>
            <size>15036</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyNTI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDc2ZTdlZWZiMTIyZjk3
NzRmZjQxMjM4MTE5ODEwYThjOWVlMTg2Mi4uNmFmOTk4Njc4YWM2ZjYyYWU3NDhhMjU2ZTdiYjRh
YjVlYTI1MTAxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDE5LTExLTE2ICBQaGls
aXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVy
XSBQaXBlbGluZSBsaWZldGltZSB0cmFja2luZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0MjczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgS2VlcCB0cmFjayBvZiB0aGUgR1N0cmVhbWVyIHBpcGVsaW5l
cywgdGhpcyB3aWxsIGFsbG93IHRoZQorICAgICAgICBXZWJJbnNwZWN0b3IgdG8gbGlzdCBhbmQg
ZGlzcGxheSB0aGVtIGluIGEgZGVkaWNhdGVkIHRhYi4KKworICAgICAgICBUaGlzIHBhdGNoIGRv
ZXNuJ3QgY292ZXIgdGhlIHBpcGVsaW5lcyBjcmVhdGVkIGJ5IHRoZSBHU3RyZWFtZXIKKyAgICAg
ICAgTGliV2ViUlRDIGJhY2tlbmQuIFN1cHBvcnQgZm9yIHRoYXQgd291bGQgYmUgYWRkZWQgbGF0
ZXIsIGlmIHRoZQorICAgICAgICBjdXJyZW50IGFwcHJvYWNoIGlzIGRlZW1lZCBhY2NlcHRhYmxl
LgorCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnBpcGVsaW5lQ3JlYXRlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50OjpwaXBlbGluZVdpbGxCZURlc3Ryb3llZCk6CisgICAgICAgICog
aHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vUGxhdGZv
cm1NZWRpYVNlc3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVk
aW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3Rp
bmF0aW9uR1N0cmVhbWVyOjpBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6On5BdWRpb0Rlc3RpbmF0aW9uR1N0cmVh
bWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJDbGllbnQ6OnBpcGVsaW5lQ3JlYXRlZCk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllckNsaWVudDo6cGlwZWxpbmVXaWxsQmVEZXN0cm95ZWQpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6cmVnaXN0ZXJHU3RyZWFtZXJQaXBlbGluZSk6CisgICAgICAg
IChXZWJDb3JlOjp1bnJlZ2lzdGVyR1N0cmVhbWVyUGlwZWxpbmUpOgorICAgICAgICAoV2ViQ29y
ZTo6Z3N0UGlwZWxpbmVzTmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6ZHVtcEdTdHJlYW1lclBp
cGVsaW5lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVy
Q29tbW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXI6OmNyZWF0ZUdTVFBsYXlCaW4pOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6On5NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lckJhc2U6OnNldFBpcGVsaW5lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkFwcGVuZFBpcGVsaW5lOjpBcHBlbmRQaXBlbGluZSk6CisgICAgICAgIChXZWJDb3JlOjpB
cHBlbmRQaXBlbGluZTo6fkFwcGVuZFBpcGVsaW5lKToKKwogMjAxOS0xMS0xNiAgQ29tbWl0IFF1
ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9s
bGluZyBvdXQgcjI1MjQ1NS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
CmluZGV4IGVkZGQyODczYmU0NmMzNjFkZWNkYjNlMWRjMDEzYzFkNDJlMmZmNWIuLmY2YTNiN2Iy
ZDE1NjVhZmVlZTA3MzMxZmE3MGI1MGZmN2VlNzgwZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMTcyLDYgKzE3MiwxMCBAQAogI2luY2x1ZGUgIlZpZGVv
RnVsbHNjcmVlbk1vZGVsLmgiCiAjZW5kaWYKIAorI2lmIFVTRShHU1RSRUFNRVIpCisjaW5jbHVk
ZSAiR1N0cmVhbWVyQ29tbW9uLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdURiB7CiB0ZW1wbGF0
ZSA8Pgogc3RydWN0IExvZ0FyZ3VtZW50PFVSTD4gewpAQCAtNzIwOSw2ICs3MjEzLDIyIEBAIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6cmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2lucyhjb25zdCBT
dHJpbmcmIGRldGFpbHMsIGNvbnN0CiAKICAgICBkb2N1bWVudCgpLnBhZ2UoKS0+Y2hyb21lKCku
Y2xpZW50KCkucmVxdWVzdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zKGRldGFpbHMsIGRlc2Ny
aXB0aW9uLCBjYWxsYmFjayk7CiB9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cGlwZWxpbmVD
cmVhdGVkKEdzdEVsZW1lbnQqIHBpcGVsaW5lKQoreworICAgIGlmICghZG9jdW1lbnQoKS5wYWdl
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIHJlZ2lzdGVyR1N0cmVhbWVyUGlwZWxpbmUocGlw
ZWxpbmUsIGRvY3VtZW50KCkucGFnZSgpKTsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpw
aXBlbGluZVdpbGxCZURlc3Ryb3llZChHc3RFbGVtZW50KiBwaXBlbGluZSkKK3sKKyAgICBpZiAo
IWRvY3VtZW50KCkucGFnZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICB1bnJlZ2lzdGVyR1N0
cmVhbWVyUGlwZWxpbmUocGlwZWxpbmUsIGRvY3VtZW50KCkucGFnZSgpKTsKK30KICNlbmRpZgog
CiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rpb25zQWZ0ZXJG
aXJzdFVzZXJHZXN0dXJlKE1lZGlhRWxlbWVudFNlc3Npb246OkJlaGF2aW9yUmVzdHJpY3Rpb25z
IG1hc2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IGE2OWNlYmIy
ZmYzM2MxMzA3YzNlMGJkMDA2ODM1YzE3NmFjMjM0NjQuLjI1Y2FiNGQ4ZTcxODIyZWY2NzlkYTU4
Yzk0ZWUyM2IwNWMyYTdhNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5o
CkBAIC03NjQsNiArNzY0LDggQEAgcHJpdmF0ZToKIAogI2lmIFVTRShHU1RSRUFNRVIpCiAgICAg
dm9pZCByZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zKGNvbnN0IFN0cmluZyYgZGV0YWlscywg
Y29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgTWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3Np
bmdQbHVnaW5zQ2FsbGJhY2smKSBmaW5hbDsKKyAgICB2b2lkIHBpcGVsaW5lQ3JlYXRlZChHc3RF
bGVtZW50KikgZmluYWw7CisgICAgdm9pZCBwaXBlbGluZVdpbGxCZURlc3Ryb3llZChHc3RFbGVt
ZW50KikgZmluYWw7CiAjZW5kaWYKIAogICAgIHZvaWQgcGVuZGluZ0FjdGlvblRpbWVyRmlyZWQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVk
aWFTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlh
U2Vzc2lvbi5oCmluZGV4IDhlYjNhNTk5NWUyZTI4ZDU2OGI4NGQ1ODZhMTUyM2RhZDI1NmUwNjIu
LjAzY2I5MDEzMDFiNjRkMjRlMDdkYWFhNmI2M2E5OWFiMzBmOTRmNDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uaApAQCAt
MTk1LDcgKzE5NSw2IEBAIHB1YmxpYzoKICAgICBib29sIGNhblBsYXlDb25jdXJyZW50bHkoY29u
c3QgUGxhdGZvcm1NZWRpYVNlc3Npb24mKSBjb25zdDsKICAgICBib29sIHNob3VsZE92ZXJyaWRl
UGF1c2VEdXJpbmdSb3V0ZUNoYW5nZSgpIGNvbnN0OwogCi1wcm90ZWN0ZWQ6CiAgICAgUGxhdGZv
cm1NZWRpYVNlc3Npb25DbGllbnQmIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50OyB9
CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9n
c3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAKaW5k
ZXggMWE1NDk1ZmQ3NjRkOWMzY2M2ZWRiNTgxZmE0ODBlYWVhZDE0NTliZi4uOTIzMTkwNTQ2ZTli
MmFlYjAzZTAzYzhhNjBiYWM0MDRmNmMwNDkzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0
aW9uR1N0cmVhbWVyLmNwcApAQCAtMjUsOCArMjUsMTEgQEAKIAogI2luY2x1ZGUgIkF1ZGlvQ2hh
bm5lbC5oIgogI2luY2x1ZGUgIkF1ZGlvU291cmNlUHJvdmlkZXIuaCIKKyNpbmNsdWRlICJEb2N1
bWVudC5oIgogI2luY2x1ZGUgIkdSZWZQdHJHU3RyZWFtZXIuaCIKKyNpbmNsdWRlICJHU3RyZWFt
ZXJDb21tb24uaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1NZWRp
YVNlc3Npb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViQXVkaW9Tb3VyY2VHU3RyZWFt
ZXIuaCIKICNpbmNsdWRlIDxnc3QvYXVkaW8vZ3N0YXVkaW9iYXNlc2luay5oPgogI2luY2x1ZGUg
PGdzdC9nc3QuaD4KQEAgLTgzLDcgKzg2LDE3IEBAIEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6
OkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIoQXVkaW9JT0NhbGxiYWNrJiBjYWxsYmFjaywKICAg
ICAsIG1fc2FtcGxlUmF0ZShzYW1wbGVSYXRlKQogICAgICwgbV9pc1BsYXlpbmcoZmFsc2UpCiB7
Ci0gICAgbV9waXBlbGluZSA9IGdzdF9waXBlbGluZV9uZXcoInBsYXkiKTsKKyAgICBtX3BpcGVs
aW5lID0gZ3N0X3BpcGVsaW5lX25ldygid2ViYXVkaW8tcGxheWJhY2siKTsKKworICAgIGF1dG8m
IG1hbmFnZXIgPSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKTsK
KyAgICBhdXRvKiBzZXNzaW9uID0gbWFuYWdlci5jdXJyZW50U2Vzc2lvbigpOworICAgIGlmIChz
ZXNzaW9uKSB7CisgICAgICAgIGF1dG8mIGNsaWVudCA9IHNlc3Npb24tPmNsaWVudCgpOworICAg
ICAgICBhdXRvKiBkb2N1bWVudCA9IGNsaWVudC5ob3N0aW5nRG9jdW1lbnQoKTsKKyAgICAgICAg
aWYgKGRvY3VtZW50KQorICAgICAgICAgICAgcmVnaXN0ZXJHU3RyZWFtZXJQaXBlbGluZShtX3Bp
cGVsaW5lLCBkb2N1bWVudC0+cGFnZSgpKTsKKyAgICB9CisKICAgICBHUmVmUHRyPEdzdEJ1cz4g
YnVzID0gYWRvcHRHUmVmKGdzdF9waXBlbGluZV9nZXRfYnVzKEdTVF9QSVBFTElORShtX3BpcGVs
aW5lKSkpOwogICAgIEFTU0VSVChidXMpOwogICAgIGdzdF9idXNfYWRkX3NpZ25hbF93YXRjaF9m
dWxsKGJ1cy5nZXQoKSwgUnVuTG9vcFNvdXJjZVByaW9yaXR5OjpSdW5Mb29wRGlzcGF0Y2hlcik7
CkBAIC0xMzIsNiArMTQ1LDE1IEBAIEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6On5BdWRpb0Rl
c3RpbmF0aW9uR1N0cmVhbWVyKCkKICAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5
X2Z1bmMoYnVzLmdldCgpLCByZWludGVycHJldF9jYXN0PGdwb2ludGVyPihtZXNzYWdlQ2FsbGJh
Y2spLCB0aGlzKTsKICAgICBnc3RfYnVzX3JlbW92ZV9zaWduYWxfd2F0Y2goYnVzLmdldCgpKTsK
IAorICAgIGF1dG8mIG1hbmFnZXIgPSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJl
ZE1hbmFnZXIoKTsKKyAgICBhdXRvKiBzZXNzaW9uID0gbWFuYWdlci5jdXJyZW50U2Vzc2lvbigp
OworICAgIGlmIChzZXNzaW9uKSB7CisgICAgICAgIGF1dG8mIGNsaWVudCA9IHNlc3Npb24tPmNs
aWVudCgpOworICAgICAgICBhdXRvKiBkb2N1bWVudCA9IGNsaWVudC5ob3N0aW5nRG9jdW1lbnQo
KTsKKyAgICAgICAgaWYgKGRvY3VtZW50KQorICAgICAgICAgICAgdW5yZWdpc3RlckdTdHJlYW1l
clBpcGVsaW5lKG1fcGlwZWxpbmUsIGRvY3VtZW50LT5wYWdlKCkpOworICAgIH0KKwogICAgIGdz
dF9lbGVtZW50X3NldF9zdGF0ZShtX3BpcGVsaW5lLCBHU1RfU1RBVEVfTlVMTCk7CiAgICAgZ3N0
X29iamVjdF91bnJlZihtX3BpcGVsaW5lKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllci5oCmluZGV4IGRiYmM0NTYzNzRhNjk3MDk4NzM3MzUyNjlh
MjA5ZDk4NDRhNjZjMzcuLjE2YjhmNmNiZDQyMGQ1MjVkMjhjYjE4MzQ1NGM4M2JjNDk0OWQ0OWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaApA
QCAtNTYsNiArNTYsMTAgQEAKIE9CSkNfQ0xBU1MgQVZQbGF5ZXI7CiBPQkpDX0NMQVNTIE5TQXJy
YXk7CiAKKyNpZiBVU0UoR1NUUkVBTUVSKQordHlwZWRlZiBzdHJ1Y3QgX0dzdEVsZW1lbnQgR3N0
RWxlbWVudDsKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEF1ZGlvU291
cmNlUHJvdmlkZXI7CkBAIC0yMzIsNiArMjM2LDggQEAgcHVibGljOgogCiAjaWYgVVNFKEdTVFJF
QU1FUikKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2lucyhjb25z
dCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBNZWRpYVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2lu
Z1BsdWdpbnNDYWxsYmFjayYpIHsgfTsKKyAgICB2aXJ0dWFsIHZvaWQgcGlwZWxpbmVDcmVhdGVk
KEdzdEVsZW1lbnQqKSB7IH07CisgICAgdmlydHVhbCB2b2lkIHBpcGVsaW5lV2lsbEJlRGVzdHJv
eWVkKEdzdEVsZW1lbnQqKSB7IH07CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgYm9vbCBtZWRpYVBs
YXllclNob3VsZERpc2FibGVTbGVlcCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVy
Q29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9H
U3RyZWFtZXJDb21tb24uY3BwCmluZGV4IDIwOTE3NzYwM2E5ODc0NWI1ZWQ5ZWIyODJlOGMxMTRh
MjAxOTNiMTQuLjEwYTg2ODExY2FjOGQwZWI0YjRmNzI0MDdkZTVhZGQ1ODkzNmUwYzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFt
ZXJDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9HU3RyZWFtZXJDb21tb24uY3BwCkBAIC0yNSwxMyArMjUsMTYgQEAKIAogI2luY2x1ZGUg
IkdzdEFsbG9jYXRvckZhc3RNYWxsb2MuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCisjaW5jbHVk
ZSAiUGFnZS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPGdzdC9hdWRp
by9hdWRpby1pbmZvLmg+CiAjaW5jbHVkZSA8Z3N0L2dzdC5oPgogI2luY2x1ZGUgPG11dGV4Pgor
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR0xpYlV0aWxpdGll
cy5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3dGYvZ2xp
Yi9SdW5Mb29wU291cmNlUHJpb3JpdHkuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNo
Lmg+CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spICYmIFVTRShHU1RSRUFNRVJfTVBFR1RTKQog
I2RlZmluZSBHU1RfVVNFX1VOU1RBQkxFX0FQSQpAQCAtMzc5LDYgKzM4Miw1NSBAQCBSZWY8U2hh
cmVkQnVmZmVyPiBHc3RNYXBwZWRCdWZmZXI6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpCiAgICAgcmV0
dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCp0aGlzKTsKIH0KIAorSGFzaE1hcDxTdHJpbmcsIEdz
dEJpbio+IHNfd2ViS2l0R1N0cmVhbWVyUGlwZWxpbmVzOworCit2b2lkIHJlZ2lzdGVyR1N0cmVh
bWVyUGlwZWxpbmUoR3N0RWxlbWVudCogcGlwZWxpbmUsIFBhZ2UqIHBhZ2UpCit7CisgICAgU3Ry
aW5nIG5hbWUgPSBnc3Rfb2JqZWN0X2dldF9uYW1lKEdTVF9PQkpFQ1RfQ0FTVChwaXBlbGluZSkp
OworICAgIGlmIChzX3dlYktpdEdTdHJlYW1lclBpcGVsaW5lcy5jb250YWlucyhuYW1lKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgc193ZWJLaXRHU3RyZWFtZXJQaXBlbGluZXMuYWRkKG5hbWUs
IEdTVF9CSU5fQ0FTVChwaXBlbGluZSkpOworCisgICAgLy8gVE9ETzogSG9vayB0byBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24gaGVyZS4KKyAgICBVTlVTRURfUEFSQU0ocGFnZSk7Cit9CisKK3Zv
aWQgdW5yZWdpc3RlckdTdHJlYW1lclBpcGVsaW5lKEdzdEVsZW1lbnQqIHBpcGVsaW5lLCBQYWdl
KiBwYWdlKQoreworICAgIFN0cmluZyBuYW1lID0gZ3N0X29iamVjdF9nZXRfbmFtZShHU1RfT0JK
RUNUX0NBU1QocGlwZWxpbmUpKTsKKyAgICBpZiAoIXNfd2ViS2l0R1N0cmVhbWVyUGlwZWxpbmVz
LmNvbnRhaW5zKG5hbWUpKQorICAgICAgICByZXR1cm47CisKKyAgICBzX3dlYktpdEdTdHJlYW1l
clBpcGVsaW5lcy5yZW1vdmUobmFtZSk7CisKKyAgICAvLyBUT0RPOiBIb29rIHRvIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbiBoZXJlLgorICAgIFVOVVNFRF9QQVJBTShwYWdlKTsKK30KKworVmVj
dG9yPFN0cmluZz4gZ3N0UGlwZWxpbmVzTmFtZXMoKQoreworICAgIFZlY3RvcjxTdHJpbmc+IG5h
bWVzOworICAgIGZvciAoYXV0byBuYW1lIDogc193ZWJLaXRHU3RyZWFtZXJQaXBlbGluZXMua2V5
cygpKQorICAgICAgICBuYW1lcy5hcHBlbmQobmFtZSk7CisKKyAgICByZXR1cm4gbmFtZXM7Cit9
CisKK1N0cmluZyBkdW1wR1N0cmVhbWVyUGlwZWxpbmUoU3RyaW5nIG5hbWUsIFN0cmluZyBzdWJC
aW5OYW1lKQoreworICAgIEdzdEJpbiogcGlwZWxpbmUgPSBzX3dlYktpdEdTdHJlYW1lclBpcGVs
aW5lcy5nZXQobmFtZSk7CisgICAgaWYgKHBpcGVsaW5lKSB7CisgICAgICAgIGlmIChzdWJCaW5O
YW1lLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiBnc3RfZGVidWdfYmluX3RvX2RvdF9k
YXRhKHBpcGVsaW5lLCBHU1RfREVCVUdfR1JBUEhfU0hPV19BTEwpOworCisgICAgICAgIEdSZWZQ
dHI8R3N0RWxlbWVudD4gY2hpbGQgPSBnc3RfYmluX2dldF9ieV9uYW1lKHBpcGVsaW5lLCBzdWJC
aW5OYW1lLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBpZiAoY2hpbGQgJiYgR1NUX0lTX0JJTihj
aGlsZC5nZXQoKSkpCisgICAgICAgICAgICByZXR1cm4gZ3N0X2RlYnVnX2Jpbl90b19kb3RfZGF0
YShHU1RfQklOX0NBU1QoY2hpbGQuZ2V0KCkpLCBHU1RfREVCVUdfR1JBUEhfU0hPV19BTEwpOwor
ICAgIH0KKyAgICByZXR1cm4gIiI7Cit9CisKIH0KIAogI2VuZGlmIC8vIFVTRShHU1RSRUFNRVIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
R1N0cmVhbWVyQ29tbW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmgKaW5kZXggYzgxM2I3OGMzMjI5Zjk4NGVlOTQ1ZjA0YjRk
YmE5MGNhZTJjMDM1Yy4uMjIzZjY3NzI1ZDYzMDZjNWExZjgwYjlmYTc4NzllMDE3NDE4NTkyNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dT
dHJlYW1lckNvbW1vbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9HU3RyZWFtZXJDb21tb24uaApAQCAtMzIsNiArMzIsNyBAQAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBJbnRTaXplOworY2xhc3MgUGFnZTsKIGNsYXNzIFNoYXJlZEJ1ZmZl
cjsKIAogaW5saW5lIGJvb2wgd2Via2l0R3N0Q2hlY2tWZXJzaW9uKGd1aW50IG1ham9yLCBndWlu
dCBtaW5vciwgZ3VpbnQgbWljcm8pCkBAIC0yMjEsNiArMjIyLDExIEBAIHZvaWQgZGlzY29ubmVj
dFNpbXBsZUJ1c01lc3NhZ2VDYWxsYmFjayhHc3RFbGVtZW50KiBwaXBlbGluZSk7CiAKIGVudW0g
Y2xhc3MgR3N0VmlkZW9EZWNvZGVyUGxhdGZvcm0geyBJbXhWUFUsIFZpZGVvNExpbnV4IH07CiAK
K3ZvaWQgcmVnaXN0ZXJHU3RyZWFtZXJQaXBlbGluZShHc3RFbGVtZW50KiwgUGFnZSopOwordm9p
ZCB1bnJlZ2lzdGVyR1N0cmVhbWVyUGlwZWxpbmUoR3N0RWxlbWVudCosIFBhZ2UqKTsKK1ZlY3Rv
cjxTdHJpbmc+IGdzdFBpcGVsaW5lc05hbWVzKCk7CitTdHJpbmcgZHVtcEdTdHJlYW1lclBpcGVs
aW5lKFN0cmluZyBuYW1lLCBTdHJpbmcgc3ViQmluTmFtZSk7CisKIH0KIAogI2lmbmRlZiBHU1Rf
QlVGRkVSX0RUU19PUl9QVFMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lci5jcHAKaW5kZXggZDIyYTRmZTJiMTEyYjM5NDhlNWQ2NWU2ODI0MjE4M2QyNmFlOTZh
YS4uNmZlNmMwOTkwYzk2MjExYjRjZTg5ZDFiMjFkMGNlYThhZmU2NmFiMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTI0MDksNiArMjQw
OSw4IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGVHU1RQbGF5Qmlu
KGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmCiAgICAgICAgIH0KIAogICAgICAgICBHU1Rf
SU5GT19PQkpFQ1QocGlwZWxpbmUoKSwgIlRlYXJpbmcgZG93biBhcyB3ZSBuZWVkIHRvIHVzZSAl
cyBub3cuIiwgcGxheWJpbk5hbWUpOworICAgICAgICBpZiAobV9wbGF5ZXIpCisgICAgICAgICAg
ICBtX3BsYXllci0+Y2xpZW50KCkucGlwZWxpbmVXaWxsQmVEZXN0cm95ZWQobV9waXBlbGluZS5n
ZXQoKSk7CiAgICAgICAgIGNoYW5nZVBpcGVsaW5lU3RhdGUoR1NUX1NUQVRFX05VTEwpOwogICAg
ICAgICBtX3BpcGVsaW5lID0gbnVsbHB0cjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKaW5kZXggODkyZGNkNmY2MDFkNjU0
NTgwMDI1ZTczNjA1MzIwOWY1ODI2NjEwNy4uNmVmM2YxNjJiMzNjYjhhOWQzMDRhNTJkYjc2MzZj
N2QxZGJiNmRmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJCYXNlLmNwcApAQCAtMzQyLDggKzM0MiwxMSBAQCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJCYXNlOjp+TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZSgpCiAKICAgICAv
LyBUaGUgY2hhbmdlIHRvIEdTVF9TVEFURV9OVUxMIHN0YXRlIGlzIGFsd2F5cyBzeW5jaHJvbm91
cy4gU28gYWZ0ZXIgdGhpcyBnZXRzIGV4ZWN1dGVkIHdlIGRvbid0IG5lZWQgdG8gd29ycnkKICAg
ICAvLyBhYm91dCBoYW5kbGVycyBydW5uaW5nIGluIHRoZSBHU3RyZWFtZXIgdGhyZWFkLgotICAg
IGlmIChtX3BpcGVsaW5lKQorICAgIGlmIChtX3BpcGVsaW5lKSB7CisgICAgICAgIGlmIChtX3Bs
YXllcikKKyAgICAgICAgICAgIG1fcGxheWVyLT5jbGllbnQoKS5waXBlbGluZVdpbGxCZURlc3Ry
b3llZChtX3BpcGVsaW5lLmdldCgpKTsKICAgICAgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKG1f
cGlwZWxpbmUuZ2V0KCksIEdTVF9TVEFURV9OVUxMKTsKKyAgICB9CiAKICAgICBtX3BsYXllciA9
IG51bGxwdHI7CiB9CkBAIC0zNTEsNiArMzU0LDggQEAgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyQmFzZTo6fk1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UoKQogdm9pZCBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpzZXRQaXBlbGluZShHc3RFbGVtZW50KiBwaXBlbGlu
ZSkKIHsKICAgICBtX3BpcGVsaW5lID0gcGlwZWxpbmU7CisgICAgaWYgKG1fcGxheWVyKQorICAg
ICAgICBtX3BsYXllci0+Y2xpZW50KCkucGlwZWxpbmVDcmVhdGVkKG1fcGlwZWxpbmUuZ2V0KCkp
OwogCiAgICAgR1JlZlB0cjxHc3RCdXM+IGJ1cyA9IGFkb3B0R1JlZihnc3RfcGlwZWxpbmVfZ2V0
X2J1cyhHU1RfUElQRUxJTkUobV9waXBlbGluZS5nZXQoKSkpKTsKICAgICBnc3RfYnVzX3NldF9z
eW5jX2hhbmRsZXIoYnVzLmdldCgpLCBbXShHc3RCdXMqLCBHc3RNZXNzYWdlKiBtZXNzYWdlLCBn
cG9pbnRlciB1c2VyRGF0YSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNwcAppbmRl
eCA1YTJiZGVkYTFiODdhMWRlYThjNmJiZjVmNjk4NDFkN2U5ZjY2YzBiLi42YTdiNzJkYTg4YTcw
MThhYjEyMDk2M2M0MDg5ZGExZGZmNmI0ODA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVs
aW5lLmNwcApAQCAtMTE1LDkgKzExNSwxMCBAQCBBcHBlbmRQaXBlbGluZTo6QXBwZW5kUGlwZWxp
bmUoUmVmPE1lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyTVNFPiBtZWRpYVNvdXJjZUNsaQogICAg
IC8vIEZJWE1FOiBnaXZlIGEgbmFtZSB0byB0aGUgcGlwZWxpbmUsIG1heWJlIHJlbGF0ZWQgd2l0
aCB0aGUgdHJhY2sgaXQncyBtYW5hZ2luZy4KICAgICAvLyBUaGUgdHJhY2sgbmFtZSBpcyBzdGls
bCB1bmtub3duIGF0IHRoaXMgdGltZSwgdGhvdWdoLgogICAgIHN0YXRpYyBzaXplX3QgYXBwZW5k
UGlwZWxpbmVDb3VudCA9IDA7Ci0gICAgU3RyaW5nIHBpcGVsaW5lTmFtZSA9IG1ha2VTdHJpbmco
ImFwcGVuZC1waXBlbGluZS0iLAorICAgIFN0cmluZyBwaXBlbGluZU5hbWUgPSBtYWtlU3RyaW5n
KCJtc2UtYXBwZW5kLXBpcGVsaW5lLSIsCiAgICAgICAgIG1fc291cmNlQnVmZmVyUHJpdmF0ZS0+
dHlwZSgpLmNvbnRhaW5lclR5cGUoKS5yZXBsYWNlKCIvIiwgIi0iKSwgJy0nLCBhcHBlbmRQaXBl
bGluZUNvdW50KyspOwogICAgIG1fcGlwZWxpbmUgPSBnc3RfcGlwZWxpbmVfbmV3KHBpcGVsaW5l
TmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICBtX3BsYXllclByaXZhdGUtPm1lZGlhUGxheWVyKCkt
PmNsaWVudCgpLnBpcGVsaW5lQ3JlYXRlZChtX3BpcGVsaW5lLmdldCgpKTsKIAogICAgIG1fYnVz
ID0gYWRvcHRHUmVmKGdzdF9waXBlbGluZV9nZXRfYnVzKEdTVF9QSVBFTElORShtX3BpcGVsaW5l
LmdldCgpKSkpOwogICAgIGdzdF9idXNfYWRkX3NpZ25hbF93YXRjaF9mdWxsKG1fYnVzLmdldCgp
LCBSdW5Mb29wU291cmNlUHJpb3JpdHk6OlJ1bkxvb3BEaXNwYXRjaGVyKTsKQEAgLTI0Miw2ICsy
NDMsOCBAQCBBcHBlbmRQaXBlbGluZTo6fkFwcGVuZFBpcGVsaW5lKCkKICAgICAvLyB3aGVuIGNo
YW5naW5nIHRoZSBwaXBlbGluZSBzdGF0ZS4KIAogICAgIGlmIChtX3BpcGVsaW5lKSB7CisgICAg
ICAgIGlmIChtX3BsYXllclByaXZhdGUpCisgICAgICAgICAgICBtX3BsYXllclByaXZhdGUtPm1l
ZGlhUGxheWVyKCktPmNsaWVudCgpLnBpcGVsaW5lV2lsbEJlRGVzdHJveWVkKG1fcGlwZWxpbmUu
Z2V0KCkpOwogICAgICAgICBBU1NFUlQobV9idXMpOwogICAgICAgICBnX3NpZ25hbF9oYW5kbGVy
c19kaXNjb25uZWN0X2J5X2RhdGEobV9idXMuZ2V0KCksIHRoaXMpOwogICAgICAgICBnc3RfYnVz
X2Rpc2FibGVfc3luY19tZXNzYWdlX2VtaXNzaW9uKG1fYnVzLmdldCgpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383698</attachid>
            <date>2019-11-16 07:50:14 -0800</date>
            <delta_ts>2019-11-16 09:18:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204273-20191116155013.patch</filename>
            <type>text/plain</type>
            <size>15032</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyNTI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDc2ZTdlZWZiMTIyZjk3
NzRmZjQxMjM4MTE5ODEwYThjOWVlMTg2Mi4uNmFmOTk4Njc4YWM2ZjYyYWU3NDhhMjU2ZTdiYjRh
YjVlYTI1MTAxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDE5LTExLTE2ICBQaGls
aXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVy
XSBQaXBlbGluZSBsaWZldGltZSB0cmFja2luZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0MjczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgS2VlcCB0cmFjayBvZiB0aGUgR1N0cmVhbWVyIHBpcGVsaW5l
cywgdGhpcyB3aWxsIGFsbG93IHRoZQorICAgICAgICBXZWJJbnNwZWN0b3IgdG8gbGlzdCBhbmQg
ZGlzcGxheSB0aGVtIGluIGEgZGVkaWNhdGVkIHRhYi4KKworICAgICAgICBUaGlzIHBhdGNoIGRv
ZXNuJ3QgY292ZXIgdGhlIHBpcGVsaW5lcyBjcmVhdGVkIGJ5IHRoZSBHU3RyZWFtZXIKKyAgICAg
ICAgTGliV2ViUlRDIGJhY2tlbmQuIFN1cHBvcnQgZm9yIHRoYXQgd291bGQgYmUgYWRkZWQgbGF0
ZXIsIGlmIHRoZQorICAgICAgICBjdXJyZW50IGFwcHJvYWNoIGlzIGRlZW1lZCBhY2NlcHRhYmxl
LgorCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnBpcGVsaW5lQ3JlYXRlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50OjpwaXBlbGluZVdpbGxCZURlc3Ryb3llZCk6CisgICAgICAgICog
aHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vUGxhdGZv
cm1NZWRpYVNlc3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVk
aW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3Rp
bmF0aW9uR1N0cmVhbWVyOjpBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6On5BdWRpb0Rlc3RpbmF0aW9uR1N0cmVh
bWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJDbGllbnQ6OnBpcGVsaW5lQ3JlYXRlZCk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllckNsaWVudDo6cGlwZWxpbmVXaWxsQmVEZXN0cm95ZWQpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6cmVnaXN0ZXJHU3RyZWFtZXJQaXBlbGluZSk6CisgICAgICAg
IChXZWJDb3JlOjp1bnJlZ2lzdGVyR1N0cmVhbWVyUGlwZWxpbmUpOgorICAgICAgICAoV2ViQ29y
ZTo6Z3N0UGlwZWxpbmVzTmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6ZHVtcEdTdHJlYW1lclBp
cGVsaW5lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVy
Q29tbW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXI6OmNyZWF0ZUdTVFBsYXlCaW4pOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6On5NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lckJhc2U6OnNldFBpcGVsaW5lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkFwcGVuZFBpcGVsaW5lOjpBcHBlbmRQaXBlbGluZSk6CisgICAgICAgIChXZWJDb3JlOjpB
cHBlbmRQaXBlbGluZTo6fkFwcGVuZFBpcGVsaW5lKToKKwogMjAxOS0xMS0xNiAgQ29tbWl0IFF1
ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9s
bGluZyBvdXQgcjI1MjQ1NS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
CmluZGV4IGVkZGQyODczYmU0NmMzNjFkZWNkYjNlMWRjMDEzYzFkNDJlMmZmNWIuLmY2YTNiN2Iy
ZDE1NjVhZmVlZTA3MzMxZmE3MGI1MGZmN2VlNzgwZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMTcyLDYgKzE3MiwxMCBAQAogI2luY2x1ZGUgIlZpZGVv
RnVsbHNjcmVlbk1vZGVsLmgiCiAjZW5kaWYKIAorI2lmIFVTRShHU1RSRUFNRVIpCisjaW5jbHVk
ZSAiR1N0cmVhbWVyQ29tbW9uLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdURiB7CiB0ZW1wbGF0
ZSA8Pgogc3RydWN0IExvZ0FyZ3VtZW50PFVSTD4gewpAQCAtNzIwOSw2ICs3MjEzLDIyIEBAIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6cmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2lucyhjb25zdCBT
dHJpbmcmIGRldGFpbHMsIGNvbnN0CiAKICAgICBkb2N1bWVudCgpLnBhZ2UoKS0+Y2hyb21lKCku
Y2xpZW50KCkucmVxdWVzdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zKGRldGFpbHMsIGRlc2Ny
aXB0aW9uLCBjYWxsYmFjayk7CiB9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cGlwZWxpbmVD
cmVhdGVkKEdzdEVsZW1lbnQqIHBpcGVsaW5lKQoreworICAgIGlmICghZG9jdW1lbnQoKS5wYWdl
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIHJlZ2lzdGVyR1N0cmVhbWVyUGlwZWxpbmUocGlw
ZWxpbmUsIGRvY3VtZW50KCkucGFnZSgpKTsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpw
aXBlbGluZVdpbGxCZURlc3Ryb3llZChHc3RFbGVtZW50KiBwaXBlbGluZSkKK3sKKyAgICBpZiAo
IWRvY3VtZW50KCkucGFnZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICB1bnJlZ2lzdGVyR1N0
cmVhbWVyUGlwZWxpbmUocGlwZWxpbmUsIGRvY3VtZW50KCkucGFnZSgpKTsKK30KICNlbmRpZgog
CiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rpb25zQWZ0ZXJG
aXJzdFVzZXJHZXN0dXJlKE1lZGlhRWxlbWVudFNlc3Npb246OkJlaGF2aW9yUmVzdHJpY3Rpb25z
IG1hc2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IGE2OWNlYmIy
ZmYzM2MxMzA3YzNlMGJkMDA2ODM1YzE3NmFjMjM0NjQuLjI1Y2FiNGQ4ZTcxODIyZWY2NzlkYTU4
Yzk0ZWUyM2IwNWMyYTdhNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5o
CkBAIC03NjQsNiArNzY0LDggQEAgcHJpdmF0ZToKIAogI2lmIFVTRShHU1RSRUFNRVIpCiAgICAg
dm9pZCByZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zKGNvbnN0IFN0cmluZyYgZGV0YWlscywg
Y29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgTWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3Np
bmdQbHVnaW5zQ2FsbGJhY2smKSBmaW5hbDsKKyAgICB2b2lkIHBpcGVsaW5lQ3JlYXRlZChHc3RF
bGVtZW50KikgZmluYWw7CisgICAgdm9pZCBwaXBlbGluZVdpbGxCZURlc3Ryb3llZChHc3RFbGVt
ZW50KikgZmluYWw7CiAjZW5kaWYKIAogICAgIHZvaWQgcGVuZGluZ0FjdGlvblRpbWVyRmlyZWQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVk
aWFTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlh
U2Vzc2lvbi5oCmluZGV4IDhlYjNhNTk5NWUyZTI4ZDU2OGI4NGQ1ODZhMTUyM2RhZDI1NmUwNjIu
LjAzY2I5MDEzMDFiNjRkMjRlMDdkYWFhNmI2M2E5OWFiMzBmOTRmNDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uaApAQCAt
MTk1LDcgKzE5NSw2IEBAIHB1YmxpYzoKICAgICBib29sIGNhblBsYXlDb25jdXJyZW50bHkoY29u
c3QgUGxhdGZvcm1NZWRpYVNlc3Npb24mKSBjb25zdDsKICAgICBib29sIHNob3VsZE92ZXJyaWRl
UGF1c2VEdXJpbmdSb3V0ZUNoYW5nZSgpIGNvbnN0OwogCi1wcm90ZWN0ZWQ6CiAgICAgUGxhdGZv
cm1NZWRpYVNlc3Npb25DbGllbnQmIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50OyB9
CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9n
c3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAKaW5k
ZXggMWE1NDk1ZmQ3NjRkOWMzY2M2ZWRiNTgxZmE0ODBlYWVhZDE0NTliZi4uOTIzMTkwNTQ2ZTli
MmFlYjAzZTAzYzhhNjBiYWM0MDRmNmMwNDkzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0
aW9uR1N0cmVhbWVyLmNwcApAQCAtMjUsOCArMjUsMTEgQEAKIAogI2luY2x1ZGUgIkF1ZGlvQ2hh
bm5lbC5oIgogI2luY2x1ZGUgIkF1ZGlvU291cmNlUHJvdmlkZXIuaCIKKyNpbmNsdWRlICJEb2N1
bWVudC5oIgogI2luY2x1ZGUgIkdSZWZQdHJHU3RyZWFtZXIuaCIKKyNpbmNsdWRlICJHU3RyZWFt
ZXJDb21tb24uaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1NZWRp
YVNlc3Npb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViQXVkaW9Tb3VyY2VHU3RyZWFt
ZXIuaCIKICNpbmNsdWRlIDxnc3QvYXVkaW8vZ3N0YXVkaW9iYXNlc2luay5oPgogI2luY2x1ZGUg
PGdzdC9nc3QuaD4KQEAgLTgzLDcgKzg2LDE3IEBAIEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6
OkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIoQXVkaW9JT0NhbGxiYWNrJiBjYWxsYmFjaywKICAg
ICAsIG1fc2FtcGxlUmF0ZShzYW1wbGVSYXRlKQogICAgICwgbV9pc1BsYXlpbmcoZmFsc2UpCiB7
Ci0gICAgbV9waXBlbGluZSA9IGdzdF9waXBlbGluZV9uZXcoInBsYXkiKTsKKyAgICBtX3BpcGVs
aW5lID0gZ3N0X3BpcGVsaW5lX25ldygid2ViYXVkaW8tcGxheWJhY2siKTsKKworICAgIGF1dG8m
IG1hbmFnZXIgPSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKTsK
KyAgICBhdXRvKiBzZXNzaW9uID0gbWFuYWdlci5jdXJyZW50U2Vzc2lvbigpOworICAgIGlmIChz
ZXNzaW9uKSB7CisgICAgICAgIGF1dG8mIGNsaWVudCA9IHNlc3Npb24tPmNsaWVudCgpOworICAg
ICAgICBhdXRvKiBkb2N1bWVudCA9IGNsaWVudC5ob3N0aW5nRG9jdW1lbnQoKTsKKyAgICAgICAg
aWYgKGRvY3VtZW50KQorICAgICAgICAgICAgcmVnaXN0ZXJHU3RyZWFtZXJQaXBlbGluZShtX3Bp
cGVsaW5lLCBkb2N1bWVudC0+cGFnZSgpKTsKKyAgICB9CisKICAgICBHUmVmUHRyPEdzdEJ1cz4g
YnVzID0gYWRvcHRHUmVmKGdzdF9waXBlbGluZV9nZXRfYnVzKEdTVF9QSVBFTElORShtX3BpcGVs
aW5lKSkpOwogICAgIEFTU0VSVChidXMpOwogICAgIGdzdF9idXNfYWRkX3NpZ25hbF93YXRjaF9m
dWxsKGJ1cy5nZXQoKSwgUnVuTG9vcFNvdXJjZVByaW9yaXR5OjpSdW5Mb29wRGlzcGF0Y2hlcik7
CkBAIC0xMzIsNiArMTQ1LDE1IEBAIEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6On5BdWRpb0Rl
c3RpbmF0aW9uR1N0cmVhbWVyKCkKICAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5
X2Z1bmMoYnVzLmdldCgpLCByZWludGVycHJldF9jYXN0PGdwb2ludGVyPihtZXNzYWdlQ2FsbGJh
Y2spLCB0aGlzKTsKICAgICBnc3RfYnVzX3JlbW92ZV9zaWduYWxfd2F0Y2goYnVzLmdldCgpKTsK
IAorICAgIGF1dG8mIG1hbmFnZXIgPSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJl
ZE1hbmFnZXIoKTsKKyAgICBhdXRvKiBzZXNzaW9uID0gbWFuYWdlci5jdXJyZW50U2Vzc2lvbigp
OworICAgIGlmIChzZXNzaW9uKSB7CisgICAgICAgIGF1dG8mIGNsaWVudCA9IHNlc3Npb24tPmNs
aWVudCgpOworICAgICAgICBhdXRvKiBkb2N1bWVudCA9IGNsaWVudC5ob3N0aW5nRG9jdW1lbnQo
KTsKKyAgICAgICAgaWYgKGRvY3VtZW50KQorICAgICAgICAgICAgdW5yZWdpc3RlckdTdHJlYW1l
clBpcGVsaW5lKG1fcGlwZWxpbmUsIGRvY3VtZW50LT5wYWdlKCkpOworICAgIH0KKwogICAgIGdz
dF9lbGVtZW50X3NldF9zdGF0ZShtX3BpcGVsaW5lLCBHU1RfU1RBVEVfTlVMTCk7CiAgICAgZ3N0
X29iamVjdF91bnJlZihtX3BpcGVsaW5lKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllci5oCmluZGV4IGRiYmM0NTYzNzRhNjk3MDk4NzM3MzUyNjlh
MjA5ZDk4NDRhNjZjMzcuLjE2YjhmNmNiZDQyMGQ1MjVkMjhjYjE4MzQ1NGM4M2JjNDk0OWQ0OWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaApA
QCAtNTYsNiArNTYsMTAgQEAKIE9CSkNfQ0xBU1MgQVZQbGF5ZXI7CiBPQkpDX0NMQVNTIE5TQXJy
YXk7CiAKKyNpZiBVU0UoR1NUUkVBTUVSKQordHlwZWRlZiBzdHJ1Y3QgX0dzdEVsZW1lbnQgR3N0
RWxlbWVudDsKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEF1ZGlvU291
cmNlUHJvdmlkZXI7CkBAIC0yMzIsNiArMjM2LDggQEAgcHVibGljOgogCiAjaWYgVVNFKEdTVFJF
QU1FUikKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2lucyhjb25z
dCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBNZWRpYVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2lu
Z1BsdWdpbnNDYWxsYmFjayYpIHsgfTsKKyAgICB2aXJ0dWFsIHZvaWQgcGlwZWxpbmVDcmVhdGVk
KEdzdEVsZW1lbnQqKSB7IH07CisgICAgdmlydHVhbCB2b2lkIHBpcGVsaW5lV2lsbEJlRGVzdHJv
eWVkKEdzdEVsZW1lbnQqKSB7IH07CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgYm9vbCBtZWRpYVBs
YXllclNob3VsZERpc2FibGVTbGVlcCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVy
Q29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9H
U3RyZWFtZXJDb21tb24uY3BwCmluZGV4IDIwOTE3NzYwM2E5ODc0NWI1ZWQ5ZWIyODJlOGMxMTRh
MjAxOTNiMTQuLmRlNTg4ZmIzYjM2YjEzZjhkZDcxZjliYzFlMDgzOTBjYmEwZWRiZDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFt
ZXJDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9HU3RyZWFtZXJDb21tb24uY3BwCkBAIC0yNSwxMyArMjUsMTYgQEAKIAogI2luY2x1ZGUg
IkdzdEFsbG9jYXRvckZhc3RNYWxsb2MuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCisjaW5jbHVk
ZSAiUGFnZS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPGdzdC9hdWRp
by9hdWRpby1pbmZvLmg+CiAjaW5jbHVkZSA8Z3N0L2dzdC5oPgogI2luY2x1ZGUgPG11dGV4Pgor
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR0xpYlV0aWxpdGll
cy5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3dGYvZ2xp
Yi9SdW5Mb29wU291cmNlUHJpb3JpdHkuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNo
Lmg+CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spICYmIFVTRShHU1RSRUFNRVJfTVBFR1RTKQog
I2RlZmluZSBHU1RfVVNFX1VOU1RBQkxFX0FQSQpAQCAtMzc5LDYgKzM4Miw1NyBAQCBSZWY8U2hh
cmVkQnVmZmVyPiBHc3RNYXBwZWRCdWZmZXI6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpCiAgICAgcmV0
dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCp0aGlzKTsKIH0KIAorSGFzaE1hcDxTdHJpbmcsIEdz
dEJpbio+IHNfd2ViS2l0R1N0cmVhbWVyUGlwZWxpbmVzOworCit2b2lkIHJlZ2lzdGVyR1N0cmVh
bWVyUGlwZWxpbmUoR3N0RWxlbWVudCogcGlwZWxpbmUsIFBhZ2UqIHBhZ2UpCit7CisgICAgU3Ry
aW5nIG5hbWUgPSBnc3Rfb2JqZWN0X2dldF9uYW1lKEdTVF9PQkpFQ1RfQ0FTVChwaXBlbGluZSkp
OworICAgIGlmIChzX3dlYktpdEdTdHJlYW1lclBpcGVsaW5lcy5jb250YWlucyhuYW1lKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgc193ZWJLaXRHU3RyZWFtZXJQaXBlbGluZXMuYWRkKG5hbWUs
IEdTVF9CSU5fQ0FTVChwaXBlbGluZSkpOworCisgICAgLy8gVE9ETzogSG9vayB0byBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24gaGVyZS4KKyAgICBVTlVTRURfUEFSQU0ocGFnZSk7Cit9CisKK3Zv
aWQgdW5yZWdpc3RlckdTdHJlYW1lclBpcGVsaW5lKEdzdEVsZW1lbnQqIHBpcGVsaW5lLCBQYWdl
KiBwYWdlKQoreworICAgIFN0cmluZyBuYW1lID0gZ3N0X29iamVjdF9nZXRfbmFtZShHU1RfT0JK
RUNUX0NBU1QocGlwZWxpbmUpKTsKKyAgICBpZiAoIXNfd2ViS2l0R1N0cmVhbWVyUGlwZWxpbmVz
LmNvbnRhaW5zKG5hbWUpKQorICAgICAgICByZXR1cm47CisKKyAgICBzX3dlYktpdEdTdHJlYW1l
clBpcGVsaW5lcy5yZW1vdmUobmFtZSk7CisKKyAgICAvLyBUT0RPOiBIb29rIHRvIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbiBoZXJlLgorICAgIFVOVVNFRF9QQVJBTShwYWdlKTsKK30KKworVmVj
dG9yPFN0cmluZz4gZ3N0UGlwZWxpbmVzTmFtZXMoKQoreworICAgIFZlY3RvcjxTdHJpbmc+IG5h
bWVzOworICAgIGZvciAoYXV0byBuYW1lIDogc193ZWJLaXRHU3RyZWFtZXJQaXBlbGluZXMua2V5
cygpKQorICAgICAgICBuYW1lcy5hcHBlbmQobmFtZSk7CisKKyAgICByZXR1cm4gbmFtZXM7Cit9
CisKK1N0cmluZyBkdW1wR1N0cmVhbWVyUGlwZWxpbmUoU3RyaW5nIG5hbWUsIFN0cmluZyBzdWJC
aW5OYW1lKQoreworICAgIEdzdEJpbiogcGlwZWxpbmUgPSBzX3dlYktpdEdTdHJlYW1lclBpcGVs
aW5lcy5nZXQobmFtZSk7CisgICAgaWYgKCFwaXBlbGluZSkKKyAgICAgICAgcmV0dXJuICIiOwor
CisgICAgaWYgKHN1YkJpbk5hbWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZ3N0X2RlYnVn
X2Jpbl90b19kb3RfZGF0YShwaXBlbGluZSwgR1NUX0RFQlVHX0dSQVBIX1NIT1dfQUxMKTsKKwor
ICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gY2hpbGQgPSBnc3RfYmluX2dldF9ieV9uYW1lKHBpcGVs
aW5lLCBzdWJCaW5OYW1lLnV0ZjgoKS5kYXRhKCkpOworICAgIGlmIChjaGlsZCAmJiBHU1RfSVNf
QklOKGNoaWxkLmdldCgpKSkKKyAgICAgICAgcmV0dXJuIGdzdF9kZWJ1Z19iaW5fdG9fZG90X2Rh
dGEoR1NUX0JJTl9DQVNUKGNoaWxkLmdldCgpKSwgR1NUX0RFQlVHX0dSQVBIX1NIT1dfQUxMKTsK
KworICAgIHJldHVybiAiIjsKK30KKwogfQogCiAjZW5kaWYgLy8gVVNFKEdTVFJFQU1FUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3Ry
ZWFtZXJDb21tb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9HU3RyZWFtZXJDb21tb24uaAppbmRleCBjODEzYjc4YzMyMjlmOTg0ZWU5NDVmMDRiNGRiYTkw
Y2FlMmMwMzVjLi4yMjNmNjc3MjVkNjMwNmM1YTFmODBiOWZhNzg3OWUwMTc0MTg1OTI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVh
bWVyQ29tbW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0dTdHJlYW1lckNvbW1vbi5oCkBAIC0zMiw2ICszMiw3IEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIEludFNpemU7CitjbGFzcyBQYWdlOwogY2xhc3MgU2hhcmVkQnVmZmVyOwog
CiBpbmxpbmUgYm9vbCB3ZWJraXRHc3RDaGVja1ZlcnNpb24oZ3VpbnQgbWFqb3IsIGd1aW50IG1p
bm9yLCBndWludCBtaWNybykKQEAgLTIyMSw2ICsyMjIsMTEgQEAgdm9pZCBkaXNjb25uZWN0U2lt
cGxlQnVzTWVzc2FnZUNhbGxiYWNrKEdzdEVsZW1lbnQqIHBpcGVsaW5lKTsKIAogZW51bSBjbGFz
cyBHc3RWaWRlb0RlY29kZXJQbGF0Zm9ybSB7IElteFZQVSwgVmlkZW80TGludXggfTsKIAordm9p
ZCByZWdpc3RlckdTdHJlYW1lclBpcGVsaW5lKEdzdEVsZW1lbnQqLCBQYWdlKik7Cit2b2lkIHVu
cmVnaXN0ZXJHU3RyZWFtZXJQaXBlbGluZShHc3RFbGVtZW50KiwgUGFnZSopOworVmVjdG9yPFN0
cmluZz4gZ3N0UGlwZWxpbmVzTmFtZXMoKTsKK1N0cmluZyBkdW1wR1N0cmVhbWVyUGlwZWxpbmUo
U3RyaW5nIG5hbWUsIFN0cmluZyBzdWJCaW5OYW1lKTsKKwogfQogCiAjaWZuZGVmIEdTVF9CVUZG
RVJfRFRTX09SX1BUUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyLmNwcAppbmRleCBkMjJhNGZlMmIxMTJiMzk0OGU1ZDY1ZTY4MjQyMTgzZDI2YWU5NmFhLi42
ZmU2YzA5OTBjOTYyMTFiNGNlODlkMWIyMWQwY2VhOGFmZTY2YWIyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMjQwOSw2ICsyNDA5LDgg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZUdTVFBsYXlCaW4oY29u
c3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYKICAgICAgICAgfQogCiAgICAgICAgIEdTVF9JTkZP
X09CSkVDVChwaXBlbGluZSgpLCAiVGVhcmluZyBkb3duIGFzIHdlIG5lZWQgdG8gdXNlICVzIG5v
dy4iLCBwbGF5YmluTmFtZSk7CisgICAgICAgIGlmIChtX3BsYXllcikKKyAgICAgICAgICAgIG1f
cGxheWVyLT5jbGllbnQoKS5waXBlbGluZVdpbGxCZURlc3Ryb3llZChtX3BpcGVsaW5lLmdldCgp
KTsKICAgICAgICAgY2hhbmdlUGlwZWxpbmVTdGF0ZShHU1RfU1RBVEVfTlVMTCk7CiAgICAgICAg
IG1fcGlwZWxpbmUgPSBudWxscHRyOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJC
YXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcAppbmRleCA4OTJkY2Q2ZjYwMWQ2NTQ1ODAw
MjVlNzM2MDUzMjA5ZjU4MjY2MTA3Li42ZWYzZjE2MmIzM2NiOGE5ZDMwNGE1MmRiNzYzNmM3ZDFk
YmI2ZGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lckJhc2UuY3BwCkBAIC0zNDIsOCArMzQyLDExIEBAIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lckJhc2U6On5NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlKCkKIAogICAgIC8vIFRo
ZSBjaGFuZ2UgdG8gR1NUX1NUQVRFX05VTEwgc3RhdGUgaXMgYWx3YXlzIHN5bmNocm9ub3VzLiBT
byBhZnRlciB0aGlzIGdldHMgZXhlY3V0ZWQgd2UgZG9uJ3QgbmVlZCB0byB3b3JyeQogICAgIC8v
IGFib3V0IGhhbmRsZXJzIHJ1bm5pbmcgaW4gdGhlIEdTdHJlYW1lciB0aHJlYWQuCi0gICAgaWYg
KG1fcGlwZWxpbmUpCisgICAgaWYgKG1fcGlwZWxpbmUpIHsKKyAgICAgICAgaWYgKG1fcGxheWVy
KQorICAgICAgICAgICAgbV9wbGF5ZXItPmNsaWVudCgpLnBpcGVsaW5lV2lsbEJlRGVzdHJveWVk
KG1fcGlwZWxpbmUuZ2V0KCkpOwogICAgICAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUobV9waXBl
bGluZS5nZXQoKSwgR1NUX1NUQVRFX05VTEwpOworICAgIH0KIAogICAgIG1fcGxheWVyID0gbnVs
bHB0cjsKIH0KQEAgLTM1MSw2ICszNTQsOCBAQCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJC
YXNlOjp+TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZSgpCiB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lckJhc2U6OnNldFBpcGVsaW5lKEdzdEVsZW1lbnQqIHBpcGVsaW5lKQog
ewogICAgIG1fcGlwZWxpbmUgPSBwaXBlbGluZTsKKyAgICBpZiAobV9wbGF5ZXIpCisgICAgICAg
IG1fcGxheWVyLT5jbGllbnQoKS5waXBlbGluZUNyZWF0ZWQobV9waXBlbGluZS5nZXQoKSk7CiAK
ICAgICBHUmVmUHRyPEdzdEJ1cz4gYnVzID0gYWRvcHRHUmVmKGdzdF9waXBlbGluZV9nZXRfYnVz
KEdTVF9QSVBFTElORShtX3BpcGVsaW5lLmdldCgpKSkpOwogICAgIGdzdF9idXNfc2V0X3N5bmNf
aGFuZGxlcihidXMuZ2V0KCksIFtdKEdzdEJ1cyosIEdzdE1lc3NhZ2UqIG1lc3NhZ2UsIGdwb2lu
dGVyIHVzZXJEYXRhKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwCmluZGV4IDVh
MmJkZWRhMWI4N2ExZGVhOGM2YmJmNWY2OTg0MWQ3ZTlmNjZjMGIuLjZhN2I3MmRhODhhNzAxOGFi
MTIwOTYzYzQwODlkYTFkZmY2YjQ4MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUu
Y3BwCkBAIC0xMTUsOSArMTE1LDEwIEBAIEFwcGVuZFBpcGVsaW5lOjpBcHBlbmRQaXBlbGluZShS
ZWY8TWVkaWFTb3VyY2VDbGllbnRHU3RyZWFtZXJNU0U+IG1lZGlhU291cmNlQ2xpCiAgICAgLy8g
RklYTUU6IGdpdmUgYSBuYW1lIHRvIHRoZSBwaXBlbGluZSwgbWF5YmUgcmVsYXRlZCB3aXRoIHRo
ZSB0cmFjayBpdCdzIG1hbmFnaW5nLgogICAgIC8vIFRoZSB0cmFjayBuYW1lIGlzIHN0aWxsIHVu
a25vd24gYXQgdGhpcyB0aW1lLCB0aG91Z2guCiAgICAgc3RhdGljIHNpemVfdCBhcHBlbmRQaXBl
bGluZUNvdW50ID0gMDsKLSAgICBTdHJpbmcgcGlwZWxpbmVOYW1lID0gbWFrZVN0cmluZygiYXBw
ZW5kLXBpcGVsaW5lLSIsCisgICAgU3RyaW5nIHBpcGVsaW5lTmFtZSA9IG1ha2VTdHJpbmcoIm1z
ZS1hcHBlbmQtcGlwZWxpbmUtIiwKICAgICAgICAgbV9zb3VyY2VCdWZmZXJQcml2YXRlLT50eXBl
KCkuY29udGFpbmVyVHlwZSgpLnJlcGxhY2UoIi8iLCAiLSIpLCAnLScsIGFwcGVuZFBpcGVsaW5l
Q291bnQrKyk7CiAgICAgbV9waXBlbGluZSA9IGdzdF9waXBlbGluZV9uZXcocGlwZWxpbmVOYW1l
LnV0ZjgoKS5kYXRhKCkpOworICAgIG1fcGxheWVyUHJpdmF0ZS0+bWVkaWFQbGF5ZXIoKS0+Y2xp
ZW50KCkucGlwZWxpbmVDcmVhdGVkKG1fcGlwZWxpbmUuZ2V0KCkpOwogCiAgICAgbV9idXMgPSBh
ZG9wdEdSZWYoZ3N0X3BpcGVsaW5lX2dldF9idXMoR1NUX1BJUEVMSU5FKG1fcGlwZWxpbmUuZ2V0
KCkpKSk7CiAgICAgZ3N0X2J1c19hZGRfc2lnbmFsX3dhdGNoX2Z1bGwobV9idXMuZ2V0KCksIFJ1
bkxvb3BTb3VyY2VQcmlvcml0eTo6UnVuTG9vcERpc3BhdGNoZXIpOwpAQCAtMjQyLDYgKzI0Myw4
IEBAIEFwcGVuZFBpcGVsaW5lOjp+QXBwZW5kUGlwZWxpbmUoKQogICAgIC8vIHdoZW4gY2hhbmdp
bmcgdGhlIHBpcGVsaW5lIHN0YXRlLgogCiAgICAgaWYgKG1fcGlwZWxpbmUpIHsKKyAgICAgICAg
aWYgKG1fcGxheWVyUHJpdmF0ZSkKKyAgICAgICAgICAgIG1fcGxheWVyUHJpdmF0ZS0+bWVkaWFQ
bGF5ZXIoKS0+Y2xpZW50KCkucGlwZWxpbmVXaWxsQmVEZXN0cm95ZWQobV9waXBlbGluZS5nZXQo
KSk7CiAgICAgICAgIEFTU0VSVChtX2J1cyk7CiAgICAgICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rp
c2Nvbm5lY3RfYnlfZGF0YShtX2J1cy5nZXQoKSwgdGhpcyk7CiAgICAgICAgIGdzdF9idXNfZGlz
YWJsZV9zeW5jX21lc3NhZ2VfZW1pc3Npb24obV9idXMuZ2V0KCkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383700</attachid>
            <date>2019-11-16 09:18:45 -0800</date>
            <delta_ts>2019-11-21 02:34:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204273-20191116171843.patch</filename>
            <type>text/plain</type>
            <size>15032</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyNTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmIyNGQ2ODc0MGFmOGQ1
ZDJkYTIxYzRjMzM0MDdmNzM5ZTgxYjdlNC4uODAxNzhiNzQwZjhhOTE1ZGVmZjUzNTlhZTNiNjVh
Zjg4MjkzZmRjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDE5LTExLTE2ICBQaGls
aXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVy
XSBQaXBlbGluZSBsaWZldGltZSB0cmFja2luZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0MjczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgS2VlcCB0cmFjayBvZiB0aGUgR1N0cmVhbWVyIHBpcGVsaW5l
cywgdGhpcyB3aWxsIGFsbG93IHRoZQorICAgICAgICBXZWJJbnNwZWN0b3IgdG8gbGlzdCBhbmQg
ZGlzcGxheSB0aGVtIGluIGEgZGVkaWNhdGVkIHRhYi4KKworICAgICAgICBUaGlzIHBhdGNoIGRv
ZXNuJ3QgY292ZXIgdGhlIHBpcGVsaW5lcyBjcmVhdGVkIGJ5IHRoZSBHU3RyZWFtZXIKKyAgICAg
ICAgTGliV2ViUlRDIGJhY2tlbmQuIFN1cHBvcnQgZm9yIHRoYXQgd291bGQgYmUgYWRkZWQgbGF0
ZXIsIGlmIHRoZQorICAgICAgICBjdXJyZW50IGFwcHJvYWNoIGlzIGRlZW1lZCBhY2NlcHRhYmxl
LgorCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnBpcGVsaW5lQ3JlYXRlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50OjpwaXBlbGluZVdpbGxCZURlc3Ryb3llZCk6CisgICAgICAgICog
aHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vUGxhdGZv
cm1NZWRpYVNlc3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVk
aW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3Rp
bmF0aW9uR1N0cmVhbWVyOjpBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6On5BdWRpb0Rlc3RpbmF0aW9uR1N0cmVh
bWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJDbGllbnQ6OnBpcGVsaW5lQ3JlYXRlZCk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllckNsaWVudDo6cGlwZWxpbmVXaWxsQmVEZXN0cm95ZWQpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6cmVnaXN0ZXJHU3RyZWFtZXJQaXBlbGluZSk6CisgICAgICAg
IChXZWJDb3JlOjp1bnJlZ2lzdGVyR1N0cmVhbWVyUGlwZWxpbmUpOgorICAgICAgICAoV2ViQ29y
ZTo6Z3N0UGlwZWxpbmVzTmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6ZHVtcEdTdHJlYW1lclBp
cGVsaW5lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVy
Q29tbW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXI6OmNyZWF0ZUdTVFBsYXlCaW4pOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6On5NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lckJhc2U6OnNldFBpcGVsaW5lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkFwcGVuZFBpcGVsaW5lOjpBcHBlbmRQaXBlbGluZSk6CisgICAgICAgIChXZWJDb3JlOjpB
cHBlbmRQaXBlbGluZTo6fkFwcGVuZFBpcGVsaW5lKToKKwogMjAxOS0xMS0xNiAgUGhpbGlwcGUg
Tm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9s
bGluZyBvdXQgcjI1MjUyNi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
CmluZGV4IGVkZGQyODczYmU0NmMzNjFkZWNkYjNlMWRjMDEzYzFkNDJlMmZmNWIuLmY2YTNiN2Iy
ZDE1NjVhZmVlZTA3MzMxZmE3MGI1MGZmN2VlNzgwZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMTcyLDYgKzE3MiwxMCBAQAogI2luY2x1ZGUgIlZpZGVv
RnVsbHNjcmVlbk1vZGVsLmgiCiAjZW5kaWYKIAorI2lmIFVTRShHU1RSRUFNRVIpCisjaW5jbHVk
ZSAiR1N0cmVhbWVyQ29tbW9uLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdURiB7CiB0ZW1wbGF0
ZSA8Pgogc3RydWN0IExvZ0FyZ3VtZW50PFVSTD4gewpAQCAtNzIwOSw2ICs3MjEzLDIyIEBAIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6cmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2lucyhjb25zdCBT
dHJpbmcmIGRldGFpbHMsIGNvbnN0CiAKICAgICBkb2N1bWVudCgpLnBhZ2UoKS0+Y2hyb21lKCku
Y2xpZW50KCkucmVxdWVzdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zKGRldGFpbHMsIGRlc2Ny
aXB0aW9uLCBjYWxsYmFjayk7CiB9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cGlwZWxpbmVD
cmVhdGVkKEdzdEVsZW1lbnQqIHBpcGVsaW5lKQoreworICAgIGlmICghZG9jdW1lbnQoKS5wYWdl
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIHJlZ2lzdGVyR1N0cmVhbWVyUGlwZWxpbmUocGlw
ZWxpbmUsIGRvY3VtZW50KCkucGFnZSgpKTsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpw
aXBlbGluZVdpbGxCZURlc3Ryb3llZChHc3RFbGVtZW50KiBwaXBlbGluZSkKK3sKKyAgICBpZiAo
IWRvY3VtZW50KCkucGFnZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICB1bnJlZ2lzdGVyR1N0
cmVhbWVyUGlwZWxpbmUocGlwZWxpbmUsIGRvY3VtZW50KCkucGFnZSgpKTsKK30KICNlbmRpZgog
CiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rpb25zQWZ0ZXJG
aXJzdFVzZXJHZXN0dXJlKE1lZGlhRWxlbWVudFNlc3Npb246OkJlaGF2aW9yUmVzdHJpY3Rpb25z
IG1hc2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IGE2OWNlYmIy
ZmYzM2MxMzA3YzNlMGJkMDA2ODM1YzE3NmFjMjM0NjQuLjI1Y2FiNGQ4ZTcxODIyZWY2NzlkYTU4
Yzk0ZWUyM2IwNWMyYTdhNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5o
CkBAIC03NjQsNiArNzY0LDggQEAgcHJpdmF0ZToKIAogI2lmIFVTRShHU1RSRUFNRVIpCiAgICAg
dm9pZCByZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zKGNvbnN0IFN0cmluZyYgZGV0YWlscywg
Y29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgTWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3Np
bmdQbHVnaW5zQ2FsbGJhY2smKSBmaW5hbDsKKyAgICB2b2lkIHBpcGVsaW5lQ3JlYXRlZChHc3RF
bGVtZW50KikgZmluYWw7CisgICAgdm9pZCBwaXBlbGluZVdpbGxCZURlc3Ryb3llZChHc3RFbGVt
ZW50KikgZmluYWw7CiAjZW5kaWYKIAogICAgIHZvaWQgcGVuZGluZ0FjdGlvblRpbWVyRmlyZWQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVk
aWFTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlh
U2Vzc2lvbi5oCmluZGV4IDhlYjNhNTk5NWUyZTI4ZDU2OGI4NGQ1ODZhMTUyM2RhZDI1NmUwNjIu
LjAzY2I5MDEzMDFiNjRkMjRlMDdkYWFhNmI2M2E5OWFiMzBmOTRmNDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uaApAQCAt
MTk1LDcgKzE5NSw2IEBAIHB1YmxpYzoKICAgICBib29sIGNhblBsYXlDb25jdXJyZW50bHkoY29u
c3QgUGxhdGZvcm1NZWRpYVNlc3Npb24mKSBjb25zdDsKICAgICBib29sIHNob3VsZE92ZXJyaWRl
UGF1c2VEdXJpbmdSb3V0ZUNoYW5nZSgpIGNvbnN0OwogCi1wcm90ZWN0ZWQ6CiAgICAgUGxhdGZv
cm1NZWRpYVNlc3Npb25DbGllbnQmIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50OyB9
CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9n
c3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAKaW5k
ZXggMWE1NDk1ZmQ3NjRkOWMzY2M2ZWRiNTgxZmE0ODBlYWVhZDE0NTliZi4uOTIzMTkwNTQ2ZTli
MmFlYjAzZTAzYzhhNjBiYWM0MDRmNmMwNDkzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0
aW9uR1N0cmVhbWVyLmNwcApAQCAtMjUsOCArMjUsMTEgQEAKIAogI2luY2x1ZGUgIkF1ZGlvQ2hh
bm5lbC5oIgogI2luY2x1ZGUgIkF1ZGlvU291cmNlUHJvdmlkZXIuaCIKKyNpbmNsdWRlICJEb2N1
bWVudC5oIgogI2luY2x1ZGUgIkdSZWZQdHJHU3RyZWFtZXIuaCIKKyNpbmNsdWRlICJHU3RyZWFt
ZXJDb21tb24uaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1NZWRp
YVNlc3Npb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViQXVkaW9Tb3VyY2VHU3RyZWFt
ZXIuaCIKICNpbmNsdWRlIDxnc3QvYXVkaW8vZ3N0YXVkaW9iYXNlc2luay5oPgogI2luY2x1ZGUg
PGdzdC9nc3QuaD4KQEAgLTgzLDcgKzg2LDE3IEBAIEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6
OkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIoQXVkaW9JT0NhbGxiYWNrJiBjYWxsYmFjaywKICAg
ICAsIG1fc2FtcGxlUmF0ZShzYW1wbGVSYXRlKQogICAgICwgbV9pc1BsYXlpbmcoZmFsc2UpCiB7
Ci0gICAgbV9waXBlbGluZSA9IGdzdF9waXBlbGluZV9uZXcoInBsYXkiKTsKKyAgICBtX3BpcGVs
aW5lID0gZ3N0X3BpcGVsaW5lX25ldygid2ViYXVkaW8tcGxheWJhY2siKTsKKworICAgIGF1dG8m
IG1hbmFnZXIgPSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKTsK
KyAgICBhdXRvKiBzZXNzaW9uID0gbWFuYWdlci5jdXJyZW50U2Vzc2lvbigpOworICAgIGlmIChz
ZXNzaW9uKSB7CisgICAgICAgIGF1dG8mIGNsaWVudCA9IHNlc3Npb24tPmNsaWVudCgpOworICAg
ICAgICBhdXRvKiBkb2N1bWVudCA9IGNsaWVudC5ob3N0aW5nRG9jdW1lbnQoKTsKKyAgICAgICAg
aWYgKGRvY3VtZW50KQorICAgICAgICAgICAgcmVnaXN0ZXJHU3RyZWFtZXJQaXBlbGluZShtX3Bp
cGVsaW5lLCBkb2N1bWVudC0+cGFnZSgpKTsKKyAgICB9CisKICAgICBHUmVmUHRyPEdzdEJ1cz4g
YnVzID0gYWRvcHRHUmVmKGdzdF9waXBlbGluZV9nZXRfYnVzKEdTVF9QSVBFTElORShtX3BpcGVs
aW5lKSkpOwogICAgIEFTU0VSVChidXMpOwogICAgIGdzdF9idXNfYWRkX3NpZ25hbF93YXRjaF9m
dWxsKGJ1cy5nZXQoKSwgUnVuTG9vcFNvdXJjZVByaW9yaXR5OjpSdW5Mb29wRGlzcGF0Y2hlcik7
CkBAIC0xMzIsNiArMTQ1LDE1IEBAIEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6On5BdWRpb0Rl
c3RpbmF0aW9uR1N0cmVhbWVyKCkKICAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5
X2Z1bmMoYnVzLmdldCgpLCByZWludGVycHJldF9jYXN0PGdwb2ludGVyPihtZXNzYWdlQ2FsbGJh
Y2spLCB0aGlzKTsKICAgICBnc3RfYnVzX3JlbW92ZV9zaWduYWxfd2F0Y2goYnVzLmdldCgpKTsK
IAorICAgIGF1dG8mIG1hbmFnZXIgPSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJl
ZE1hbmFnZXIoKTsKKyAgICBhdXRvKiBzZXNzaW9uID0gbWFuYWdlci5jdXJyZW50U2Vzc2lvbigp
OworICAgIGlmIChzZXNzaW9uKSB7CisgICAgICAgIGF1dG8mIGNsaWVudCA9IHNlc3Npb24tPmNs
aWVudCgpOworICAgICAgICBhdXRvKiBkb2N1bWVudCA9IGNsaWVudC5ob3N0aW5nRG9jdW1lbnQo
KTsKKyAgICAgICAgaWYgKGRvY3VtZW50KQorICAgICAgICAgICAgdW5yZWdpc3RlckdTdHJlYW1l
clBpcGVsaW5lKG1fcGlwZWxpbmUsIGRvY3VtZW50LT5wYWdlKCkpOworICAgIH0KKwogICAgIGdz
dF9lbGVtZW50X3NldF9zdGF0ZShtX3BpcGVsaW5lLCBHU1RfU1RBVEVfTlVMTCk7CiAgICAgZ3N0
X29iamVjdF91bnJlZihtX3BpcGVsaW5lKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllci5oCmluZGV4IGRiYmM0NTYzNzRhNjk3MDk4NzM3MzUyNjlh
MjA5ZDk4NDRhNjZjMzcuLjE2YjhmNmNiZDQyMGQ1MjVkMjhjYjE4MzQ1NGM4M2JjNDk0OWQ0OWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaApA
QCAtNTYsNiArNTYsMTAgQEAKIE9CSkNfQ0xBU1MgQVZQbGF5ZXI7CiBPQkpDX0NMQVNTIE5TQXJy
YXk7CiAKKyNpZiBVU0UoR1NUUkVBTUVSKQordHlwZWRlZiBzdHJ1Y3QgX0dzdEVsZW1lbnQgR3N0
RWxlbWVudDsKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEF1ZGlvU291
cmNlUHJvdmlkZXI7CkBAIC0yMzIsNiArMjM2LDggQEAgcHVibGljOgogCiAjaWYgVVNFKEdTVFJF
QU1FUikKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2lucyhjb25z
dCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBNZWRpYVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2lu
Z1BsdWdpbnNDYWxsYmFjayYpIHsgfTsKKyAgICB2aXJ0dWFsIHZvaWQgcGlwZWxpbmVDcmVhdGVk
KEdzdEVsZW1lbnQqKSB7IH07CisgICAgdmlydHVhbCB2b2lkIHBpcGVsaW5lV2lsbEJlRGVzdHJv
eWVkKEdzdEVsZW1lbnQqKSB7IH07CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgYm9vbCBtZWRpYVBs
YXllclNob3VsZERpc2FibGVTbGVlcCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVy
Q29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9H
U3RyZWFtZXJDb21tb24uY3BwCmluZGV4IDIwOTE3NzYwM2E5ODc0NWI1ZWQ5ZWIyODJlOGMxMTRh
MjAxOTNiMTQuLmRlNTg4ZmIzYjM2YjEzZjhkZDcxZjliYzFlMDgzOTBjYmEwZWRiZDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFt
ZXJDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9HU3RyZWFtZXJDb21tb24uY3BwCkBAIC0yNSwxMyArMjUsMTYgQEAKIAogI2luY2x1ZGUg
IkdzdEFsbG9jYXRvckZhc3RNYWxsb2MuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCisjaW5jbHVk
ZSAiUGFnZS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPGdzdC9hdWRp
by9hdWRpby1pbmZvLmg+CiAjaW5jbHVkZSA8Z3N0L2dzdC5oPgogI2luY2x1ZGUgPG11dGV4Pgor
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR0xpYlV0aWxpdGll
cy5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3dGYvZ2xp
Yi9SdW5Mb29wU291cmNlUHJpb3JpdHkuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNo
Lmg+CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spICYmIFVTRShHU1RSRUFNRVJfTVBFR1RTKQog
I2RlZmluZSBHU1RfVVNFX1VOU1RBQkxFX0FQSQpAQCAtMzc5LDYgKzM4Miw1NyBAQCBSZWY8U2hh
cmVkQnVmZmVyPiBHc3RNYXBwZWRCdWZmZXI6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpCiAgICAgcmV0
dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCp0aGlzKTsKIH0KIAorSGFzaE1hcDxTdHJpbmcsIEdz
dEJpbio+IHNfd2ViS2l0R1N0cmVhbWVyUGlwZWxpbmVzOworCit2b2lkIHJlZ2lzdGVyR1N0cmVh
bWVyUGlwZWxpbmUoR3N0RWxlbWVudCogcGlwZWxpbmUsIFBhZ2UqIHBhZ2UpCit7CisgICAgU3Ry
aW5nIG5hbWUgPSBnc3Rfb2JqZWN0X2dldF9uYW1lKEdTVF9PQkpFQ1RfQ0FTVChwaXBlbGluZSkp
OworICAgIGlmIChzX3dlYktpdEdTdHJlYW1lclBpcGVsaW5lcy5jb250YWlucyhuYW1lKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgc193ZWJLaXRHU3RyZWFtZXJQaXBlbGluZXMuYWRkKG5hbWUs
IEdTVF9CSU5fQ0FTVChwaXBlbGluZSkpOworCisgICAgLy8gVE9ETzogSG9vayB0byBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24gaGVyZS4KKyAgICBVTlVTRURfUEFSQU0ocGFnZSk7Cit9CisKK3Zv
aWQgdW5yZWdpc3RlckdTdHJlYW1lclBpcGVsaW5lKEdzdEVsZW1lbnQqIHBpcGVsaW5lLCBQYWdl
KiBwYWdlKQoreworICAgIFN0cmluZyBuYW1lID0gZ3N0X29iamVjdF9nZXRfbmFtZShHU1RfT0JK
RUNUX0NBU1QocGlwZWxpbmUpKTsKKyAgICBpZiAoIXNfd2ViS2l0R1N0cmVhbWVyUGlwZWxpbmVz
LmNvbnRhaW5zKG5hbWUpKQorICAgICAgICByZXR1cm47CisKKyAgICBzX3dlYktpdEdTdHJlYW1l
clBpcGVsaW5lcy5yZW1vdmUobmFtZSk7CisKKyAgICAvLyBUT0RPOiBIb29rIHRvIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbiBoZXJlLgorICAgIFVOVVNFRF9QQVJBTShwYWdlKTsKK30KKworVmVj
dG9yPFN0cmluZz4gZ3N0UGlwZWxpbmVzTmFtZXMoKQoreworICAgIFZlY3RvcjxTdHJpbmc+IG5h
bWVzOworICAgIGZvciAoYXV0byBuYW1lIDogc193ZWJLaXRHU3RyZWFtZXJQaXBlbGluZXMua2V5
cygpKQorICAgICAgICBuYW1lcy5hcHBlbmQobmFtZSk7CisKKyAgICByZXR1cm4gbmFtZXM7Cit9
CisKK1N0cmluZyBkdW1wR1N0cmVhbWVyUGlwZWxpbmUoU3RyaW5nIG5hbWUsIFN0cmluZyBzdWJC
aW5OYW1lKQoreworICAgIEdzdEJpbiogcGlwZWxpbmUgPSBzX3dlYktpdEdTdHJlYW1lclBpcGVs
aW5lcy5nZXQobmFtZSk7CisgICAgaWYgKCFwaXBlbGluZSkKKyAgICAgICAgcmV0dXJuICIiOwor
CisgICAgaWYgKHN1YkJpbk5hbWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZ3N0X2RlYnVn
X2Jpbl90b19kb3RfZGF0YShwaXBlbGluZSwgR1NUX0RFQlVHX0dSQVBIX1NIT1dfQUxMKTsKKwor
ICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gY2hpbGQgPSBnc3RfYmluX2dldF9ieV9uYW1lKHBpcGVs
aW5lLCBzdWJCaW5OYW1lLnV0ZjgoKS5kYXRhKCkpOworICAgIGlmIChjaGlsZCAmJiBHU1RfSVNf
QklOKGNoaWxkLmdldCgpKSkKKyAgICAgICAgcmV0dXJuIGdzdF9kZWJ1Z19iaW5fdG9fZG90X2Rh
dGEoR1NUX0JJTl9DQVNUKGNoaWxkLmdldCgpKSwgR1NUX0RFQlVHX0dSQVBIX1NIT1dfQUxMKTsK
KworICAgIHJldHVybiAiIjsKK30KKwogfQogCiAjZW5kaWYgLy8gVVNFKEdTVFJFQU1FUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3Ry
ZWFtZXJDb21tb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9HU3RyZWFtZXJDb21tb24uaAppbmRleCBjODEzYjc4YzMyMjlmOTg0ZWU5NDVmMDRiNGRiYTkw
Y2FlMmMwMzVjLi4yMjNmNjc3MjVkNjMwNmM1YTFmODBiOWZhNzg3OWUwMTc0MTg1OTI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVh
bWVyQ29tbW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0dTdHJlYW1lckNvbW1vbi5oCkBAIC0zMiw2ICszMiw3IEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIEludFNpemU7CitjbGFzcyBQYWdlOwogY2xhc3MgU2hhcmVkQnVmZmVyOwog
CiBpbmxpbmUgYm9vbCB3ZWJraXRHc3RDaGVja1ZlcnNpb24oZ3VpbnQgbWFqb3IsIGd1aW50IG1p
bm9yLCBndWludCBtaWNybykKQEAgLTIyMSw2ICsyMjIsMTEgQEAgdm9pZCBkaXNjb25uZWN0U2lt
cGxlQnVzTWVzc2FnZUNhbGxiYWNrKEdzdEVsZW1lbnQqIHBpcGVsaW5lKTsKIAogZW51bSBjbGFz
cyBHc3RWaWRlb0RlY29kZXJQbGF0Zm9ybSB7IElteFZQVSwgVmlkZW80TGludXggfTsKIAordm9p
ZCByZWdpc3RlckdTdHJlYW1lclBpcGVsaW5lKEdzdEVsZW1lbnQqLCBQYWdlKik7Cit2b2lkIHVu
cmVnaXN0ZXJHU3RyZWFtZXJQaXBlbGluZShHc3RFbGVtZW50KiwgUGFnZSopOworVmVjdG9yPFN0
cmluZz4gZ3N0UGlwZWxpbmVzTmFtZXMoKTsKK1N0cmluZyBkdW1wR1N0cmVhbWVyUGlwZWxpbmUo
U3RyaW5nIG5hbWUsIFN0cmluZyBzdWJCaW5OYW1lKTsKKwogfQogCiAjaWZuZGVmIEdTVF9CVUZG
RVJfRFRTX09SX1BUUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyLmNwcAppbmRleCBkMjJhNGZlMmIxMTJiMzk0OGU1ZDY1ZTY4MjQyMTgzZDI2YWU5NmFhLi42
ZmU2YzA5OTBjOTYyMTFiNGNlODlkMWIyMWQwY2VhOGFmZTY2YWIyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMjQwOSw2ICsyNDA5LDgg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZUdTVFBsYXlCaW4oY29u
c3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYKICAgICAgICAgfQogCiAgICAgICAgIEdTVF9JTkZP
X09CSkVDVChwaXBlbGluZSgpLCAiVGVhcmluZyBkb3duIGFzIHdlIG5lZWQgdG8gdXNlICVzIG5v
dy4iLCBwbGF5YmluTmFtZSk7CisgICAgICAgIGlmIChtX3BsYXllcikKKyAgICAgICAgICAgIG1f
cGxheWVyLT5jbGllbnQoKS5waXBlbGluZVdpbGxCZURlc3Ryb3llZChtX3BpcGVsaW5lLmdldCgp
KTsKICAgICAgICAgY2hhbmdlUGlwZWxpbmVTdGF0ZShHU1RfU1RBVEVfTlVMTCk7CiAgICAgICAg
IG1fcGlwZWxpbmUgPSBudWxscHRyOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJC
YXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcAppbmRleCA4OTJkY2Q2ZjYwMWQ2NTQ1ODAw
MjVlNzM2MDUzMjA5ZjU4MjY2MTA3Li42ZWYzZjE2MmIzM2NiOGE5ZDMwNGE1MmRiNzYzNmM3ZDFk
YmI2ZGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lckJhc2UuY3BwCkBAIC0zNDIsOCArMzQyLDExIEBAIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lckJhc2U6On5NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlKCkKIAogICAgIC8vIFRo
ZSBjaGFuZ2UgdG8gR1NUX1NUQVRFX05VTEwgc3RhdGUgaXMgYWx3YXlzIHN5bmNocm9ub3VzLiBT
byBhZnRlciB0aGlzIGdldHMgZXhlY3V0ZWQgd2UgZG9uJ3QgbmVlZCB0byB3b3JyeQogICAgIC8v
IGFib3V0IGhhbmRsZXJzIHJ1bm5pbmcgaW4gdGhlIEdTdHJlYW1lciB0aHJlYWQuCi0gICAgaWYg
KG1fcGlwZWxpbmUpCisgICAgaWYgKG1fcGlwZWxpbmUpIHsKKyAgICAgICAgaWYgKG1fcGxheWVy
KQorICAgICAgICAgICAgbV9wbGF5ZXItPmNsaWVudCgpLnBpcGVsaW5lV2lsbEJlRGVzdHJveWVk
KG1fcGlwZWxpbmUuZ2V0KCkpOwogICAgICAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUobV9waXBl
bGluZS5nZXQoKSwgR1NUX1NUQVRFX05VTEwpOworICAgIH0KIAogICAgIG1fcGxheWVyID0gbnVs
bHB0cjsKIH0KQEAgLTM1MSw2ICszNTQsOCBAQCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJC
YXNlOjp+TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZSgpCiB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lckJhc2U6OnNldFBpcGVsaW5lKEdzdEVsZW1lbnQqIHBpcGVsaW5lKQog
ewogICAgIG1fcGlwZWxpbmUgPSBwaXBlbGluZTsKKyAgICBpZiAobV9wbGF5ZXIpCisgICAgICAg
IG1fcGxheWVyLT5jbGllbnQoKS5waXBlbGluZUNyZWF0ZWQobV9waXBlbGluZS5nZXQoKSk7CiAK
ICAgICBHUmVmUHRyPEdzdEJ1cz4gYnVzID0gYWRvcHRHUmVmKGdzdF9waXBlbGluZV9nZXRfYnVz
KEdTVF9QSVBFTElORShtX3BpcGVsaW5lLmdldCgpKSkpOwogICAgIGdzdF9idXNfc2V0X3N5bmNf
aGFuZGxlcihidXMuZ2V0KCksIFtdKEdzdEJ1cyosIEdzdE1lc3NhZ2UqIG1lc3NhZ2UsIGdwb2lu
dGVyIHVzZXJEYXRhKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwCmluZGV4IDVh
MmJkZWRhMWI4N2ExZGVhOGM2YmJmNWY2OTg0MWQ3ZTlmNjZjMGIuLjZhN2I3MmRhODhhNzAxOGFi
MTIwOTYzYzQwODlkYTFkZmY2YjQ4MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUu
Y3BwCkBAIC0xMTUsOSArMTE1LDEwIEBAIEFwcGVuZFBpcGVsaW5lOjpBcHBlbmRQaXBlbGluZShS
ZWY8TWVkaWFTb3VyY2VDbGllbnRHU3RyZWFtZXJNU0U+IG1lZGlhU291cmNlQ2xpCiAgICAgLy8g
RklYTUU6IGdpdmUgYSBuYW1lIHRvIHRoZSBwaXBlbGluZSwgbWF5YmUgcmVsYXRlZCB3aXRoIHRo
ZSB0cmFjayBpdCdzIG1hbmFnaW5nLgogICAgIC8vIFRoZSB0cmFjayBuYW1lIGlzIHN0aWxsIHVu
a25vd24gYXQgdGhpcyB0aW1lLCB0aG91Z2guCiAgICAgc3RhdGljIHNpemVfdCBhcHBlbmRQaXBl
bGluZUNvdW50ID0gMDsKLSAgICBTdHJpbmcgcGlwZWxpbmVOYW1lID0gbWFrZVN0cmluZygiYXBw
ZW5kLXBpcGVsaW5lLSIsCisgICAgU3RyaW5nIHBpcGVsaW5lTmFtZSA9IG1ha2VTdHJpbmcoIm1z
ZS1hcHBlbmQtcGlwZWxpbmUtIiwKICAgICAgICAgbV9zb3VyY2VCdWZmZXJQcml2YXRlLT50eXBl
KCkuY29udGFpbmVyVHlwZSgpLnJlcGxhY2UoIi8iLCAiLSIpLCAnLScsIGFwcGVuZFBpcGVsaW5l
Q291bnQrKyk7CiAgICAgbV9waXBlbGluZSA9IGdzdF9waXBlbGluZV9uZXcocGlwZWxpbmVOYW1l
LnV0ZjgoKS5kYXRhKCkpOworICAgIG1fcGxheWVyUHJpdmF0ZS0+bWVkaWFQbGF5ZXIoKS0+Y2xp
ZW50KCkucGlwZWxpbmVDcmVhdGVkKG1fcGlwZWxpbmUuZ2V0KCkpOwogCiAgICAgbV9idXMgPSBh
ZG9wdEdSZWYoZ3N0X3BpcGVsaW5lX2dldF9idXMoR1NUX1BJUEVMSU5FKG1fcGlwZWxpbmUuZ2V0
KCkpKSk7CiAgICAgZ3N0X2J1c19hZGRfc2lnbmFsX3dhdGNoX2Z1bGwobV9idXMuZ2V0KCksIFJ1
bkxvb3BTb3VyY2VQcmlvcml0eTo6UnVuTG9vcERpc3BhdGNoZXIpOwpAQCAtMjQyLDYgKzI0Myw4
IEBAIEFwcGVuZFBpcGVsaW5lOjp+QXBwZW5kUGlwZWxpbmUoKQogICAgIC8vIHdoZW4gY2hhbmdp
bmcgdGhlIHBpcGVsaW5lIHN0YXRlLgogCiAgICAgaWYgKG1fcGlwZWxpbmUpIHsKKyAgICAgICAg
aWYgKG1fcGxheWVyUHJpdmF0ZSkKKyAgICAgICAgICAgIG1fcGxheWVyUHJpdmF0ZS0+bWVkaWFQ
bGF5ZXIoKS0+Y2xpZW50KCkucGlwZWxpbmVXaWxsQmVEZXN0cm95ZWQobV9waXBlbGluZS5nZXQo
KSk7CiAgICAgICAgIEFTU0VSVChtX2J1cyk7CiAgICAgICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rp
c2Nvbm5lY3RfYnlfZGF0YShtX2J1cy5nZXQoKSwgdGhpcyk7CiAgICAgICAgIGdzdF9idXNfZGlz
YWJsZV9zeW5jX21lc3NhZ2VfZW1pc3Npb24obV9idXMuZ2V0KCkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384038</attachid>
            <date>2019-11-21 02:35:03 -0800</date>
            <delta_ts>2019-11-21 05:06:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204273-20191121103502.patch</filename>
            <type>text/plain</type>
            <size>15346</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyNzI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjkxM2Q1MDQ2NGU2NGJm
MDM1MzcxMzkyY2Y2OGUxNjM2NDdlMDM2OC4uODY5MzhjNjg1Y2IyZDk0OTM3YTczZWFhZDEzYjcy
Y2UwOGQwOTcwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDE5LTExLTE2ICBQaGls
aXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVy
XSBQaXBlbGluZSBsaWZldGltZSB0cmFja2luZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0MjczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgS2VlcCB0cmFjayBvZiB0aGUgR1N0cmVhbWVyIHBpcGVsaW5l
cywgdGhpcyB3aWxsIGFsbG93IHRoZQorICAgICAgICBXZWJJbnNwZWN0b3IgdG8gbGlzdCBhbmQg
ZGlzcGxheSB0aGVtIGluIGEgZGVkaWNhdGVkIHRhYi4KKworICAgICAgICBUaGlzIHBhdGNoIGRv
ZXNuJ3QgY292ZXIgdGhlIHBpcGVsaW5lcyBjcmVhdGVkIGJ5IHRoZSBHU3RyZWFtZXIKKyAgICAg
ICAgTGliV2ViUlRDIGJhY2tlbmQuIFN1cHBvcnQgZm9yIHRoYXQgd291bGQgYmUgYWRkZWQgbGF0
ZXIsIGlmIHRoZQorICAgICAgICBjdXJyZW50IGFwcHJvYWNoIGlzIGRlZW1lZCBhY2NlcHRhYmxl
LgorCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnBpcGVsaW5lQ3JlYXRlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50OjpwaXBlbGluZVdpbGxCZURlc3Ryb3llZCk6CisgICAgICAgICog
aHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vUGxhdGZv
cm1NZWRpYVNlc3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVk
aW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3Rp
bmF0aW9uR1N0cmVhbWVyOjpBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6On5BdWRpb0Rlc3RpbmF0aW9uR1N0cmVh
bWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJDbGllbnQ6OnBpcGVsaW5lQ3JlYXRlZCk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllckNsaWVudDo6cGlwZWxpbmVXaWxsQmVEZXN0cm95ZWQpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6cmVnaXN0ZXJHU3RyZWFtZXJQaXBlbGluZSk6CisgICAgICAg
IChXZWJDb3JlOjp1bnJlZ2lzdGVyR1N0cmVhbWVyUGlwZWxpbmUpOgorICAgICAgICAoV2ViQ29y
ZTo6Z3N0UGlwZWxpbmVzTmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6ZHVtcEdTdHJlYW1lclBp
cGVsaW5lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVy
Q29tbW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXI6OmNyZWF0ZUdTVFBsYXlCaW4pOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6On5NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lckJhc2U6OnNldFBpcGVsaW5lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkFwcGVuZFBpcGVsaW5lOjpBcHBlbmRQaXBlbGluZSk6CisgICAgICAgIChXZWJDb3JlOjpB
cHBlbmRQaXBlbGluZTo6fkFwcGVuZFBpcGVsaW5lKToKKwogMjAxOS0xMS0yMCAgQ29ucmFkIFNo
dWx0eiAgPGNvbnJhZF9zaHVsdHpAYXBwbGUuY29tPgogCiAgICAgICAgIENyYXNoIGF0IGNvbS5h
cHBsZS5XZWJDb3JlOiAtW1dlYlJldmVhbEhpZ2hsaWdodCByZXZlYWxDb250ZXh0OmRyYXdSZWN0
c0Zvckl0ZW06XQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXgg
ZjRlN2Q1MWNmMGUyY2JkMTRmZjZmZTg3YjMxYmVmOGY2MWUxNTIwMy4uNmE5OTNlYjhjY2FlNDVj
NzExYTcxNjc3YzMzYTFmMzM0ODllYTkyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwCkBAIC0xNzIsNiArMTcyLDEwIEBACiAjaW5jbHVkZSAiVmlkZW9GdWxsc2Ny
ZWVuTW9kZWwuaCIKICNlbmRpZgogCisjaWYgVVNFKEdTVFJFQU1FUikKKyNpbmNsdWRlICJHU3Ry
ZWFtZXJDb21tb24uaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV1RGIHsKIHRlbXBsYXRlIDw+CiBz
dHJ1Y3QgTG9nQXJndW1lbnQ8VVJMPiB7CkBAIC03MjA5LDYgKzcyMTMsMjIgQEAgdm9pZCBIVE1M
TWVkaWFFbGVtZW50OjpyZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zKGNvbnN0IFN0cmluZyYg
ZGV0YWlscywgY29uc3QKIAogICAgIGRvY3VtZW50KCkucGFnZSgpLT5jaHJvbWUoKS5jbGllbnQo
KS5yZXF1ZXN0SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnMoZGV0YWlscywgZGVzY3JpcHRpb24s
IGNhbGxiYWNrKTsKIH0KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwaXBlbGluZUNyZWF0ZWQo
R3N0RWxlbWVudCogcGlwZWxpbmUpCit7CisgICAgaWYgKCFkb2N1bWVudCgpLnBhZ2UoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgcmVnaXN0ZXJHU3RyZWFtZXJQaXBlbGluZShwaXBlbGluZSwg
ZG9jdW1lbnQoKS5wYWdlKCkpOworfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnBpcGVsaW5l
V2lsbEJlRGVzdHJveWVkKEdzdEVsZW1lbnQqIHBpcGVsaW5lKQoreworICAgIGlmICghZG9jdW1l
bnQoKS5wYWdlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIHVucmVnaXN0ZXJHU3RyZWFtZXJQ
aXBlbGluZShwaXBlbGluZSwgZG9jdW1lbnQoKS5wYWdlKCkpOworfQogI2VuZGlmCiAKIHZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6cmVtb3ZlQmVoYXZpb3JSZXN0cmljdGlvbnNBZnRlckZpcnN0VXNl
ckdlc3R1cmUoTWVkaWFFbGVtZW50U2Vzc2lvbjo6QmVoYXZpb3JSZXN0cmljdGlvbnMgbWFzaykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggYTY5Y2ViYjJmZjMzYzEz
MDdjM2UwYmQwMDY4MzVjMTc2YWMyMzQ2NC4uMjVjYWI0ZDhlNzE4MjJlZjY3OWRhNThjOTRlZTIz
YjA1YzJhN2E2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTc2
NCw2ICs3NjQsOCBAQCBwcml2YXRlOgogCiAjaWYgVVNFKEdTVFJFQU1FUikKICAgICB2b2lkIHJl
cXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnMoY29uc3QgU3RyaW5nJiBkZXRhaWxzLCBjb25zdCBT
dHJpbmcmIGRlc2NyaXB0aW9uLCBNZWRpYVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdp
bnNDYWxsYmFjayYpIGZpbmFsOworICAgIHZvaWQgcGlwZWxpbmVDcmVhdGVkKEdzdEVsZW1lbnQq
KSBmaW5hbDsKKyAgICB2b2lkIHBpcGVsaW5lV2lsbEJlRGVzdHJveWVkKEdzdEVsZW1lbnQqKSBm
aW5hbDsKICNlbmRpZgogCiAgICAgdm9pZCBwZW5kaW5nQWN0aW9uVGltZXJGaXJlZCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Np
b24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9u
LmgKaW5kZXggOGViM2E1OTk1ZTJlMjhkNTY4Yjg0ZDU4NmExNTIzZGFkMjU2ZTA2Mi4uMDNjYjkw
MTMwMWI2NGQyNGUwN2RhYWE2YjYzYTk5YWIzMGY5NGY0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oCkBAIC0xOTUsNyAr
MTk1LDYgQEAgcHVibGljOgogICAgIGJvb2wgY2FuUGxheUNvbmN1cnJlbnRseShjb25zdCBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbiYpIGNvbnN0OwogICAgIGJvb2wgc2hvdWxkT3ZlcnJpZGVQYXVzZUR1
cmluZ1JvdXRlQ2hhbmdlKCkgY29uc3Q7CiAKLXByb3RlY3RlZDoKICAgICBQbGF0Zm9ybU1lZGlh
U2Vzc2lvbkNsaWVudCYgY2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnQ7IH0KIAogcHJp
dmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1l
ci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcAppbmRleCAxYTU0
OTVmZDc2NGQ5YzNjYzZlZGI1ODFmYTQ4MGVhZWFkMTQ1OWJmLi45MjMxOTA1NDZlOWIyYWViMDNl
MDNjOGE2MGJhYzQwNGY2YzA0OTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3Ry
ZWFtZXIuY3BwCkBAIC0yNSw4ICsyNSwxMSBAQAogCiAjaW5jbHVkZSAiQXVkaW9DaGFubmVsLmgi
CiAjaW5jbHVkZSAiQXVkaW9Tb3VyY2VQcm92aWRlci5oIgorI2luY2x1ZGUgIkRvY3VtZW50Lmgi
CiAjaW5jbHVkZSAiR1JlZlB0ckdTdHJlYW1lci5oIgorI2luY2x1ZGUgIkdTdHJlYW1lckNvbW1v
bi5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybU1lZGlhU2Vzc2lv
bk1hbmFnZXIuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJBdWRpb1NvdXJjZUdTdHJlYW1lci5oIgog
I2luY2x1ZGUgPGdzdC9hdWRpby9nc3RhdWRpb2Jhc2VzaW5rLmg+CiAjaW5jbHVkZSA8Z3N0L2dz
dC5oPgpAQCAtODMsNyArODYsMTcgQEAgQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcjo6QXVkaW9E
ZXN0aW5hdGlvbkdTdHJlYW1lcihBdWRpb0lPQ2FsbGJhY2smIGNhbGxiYWNrLAogICAgICwgbV9z
YW1wbGVSYXRlKHNhbXBsZVJhdGUpCiAgICAgLCBtX2lzUGxheWluZyhmYWxzZSkKIHsKLSAgICBt
X3BpcGVsaW5lID0gZ3N0X3BpcGVsaW5lX25ldygicGxheSIpOworICAgIG1fcGlwZWxpbmUgPSBn
c3RfcGlwZWxpbmVfbmV3KCJ3ZWJhdWRpby1wbGF5YmFjayIpOworCisgICAgYXV0byYgbWFuYWdl
ciA9IFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpOworICAgIGF1
dG8qIHNlc3Npb24gPSBtYW5hZ2VyLmN1cnJlbnRTZXNzaW9uKCk7CisgICAgaWYgKHNlc3Npb24p
IHsKKyAgICAgICAgYXV0byYgY2xpZW50ID0gc2Vzc2lvbi0+Y2xpZW50KCk7CisgICAgICAgIGF1
dG8qIGRvY3VtZW50ID0gY2xpZW50Lmhvc3RpbmdEb2N1bWVudCgpOworICAgICAgICBpZiAoZG9j
dW1lbnQpCisgICAgICAgICAgICByZWdpc3RlckdTdHJlYW1lclBpcGVsaW5lKG1fcGlwZWxpbmUs
IGRvY3VtZW50LT5wYWdlKCkpOworICAgIH0KKwogICAgIEdSZWZQdHI8R3N0QnVzPiBidXMgPSBh
ZG9wdEdSZWYoZ3N0X3BpcGVsaW5lX2dldF9idXMoR1NUX1BJUEVMSU5FKG1fcGlwZWxpbmUpKSk7
CiAgICAgQVNTRVJUKGJ1cyk7CiAgICAgZ3N0X2J1c19hZGRfc2lnbmFsX3dhdGNoX2Z1bGwoYnVz
LmdldCgpLCBSdW5Mb29wU291cmNlUHJpb3JpdHk6OlJ1bkxvb3BEaXNwYXRjaGVyKTsKQEAgLTEz
Miw2ICsxNDUsMTUgQEAgQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcjo6fkF1ZGlvRGVzdGluYXRp
b25HU3RyZWFtZXIoKQogICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyhi
dXMuZ2V0KCksIHJlaW50ZXJwcmV0X2Nhc3Q8Z3BvaW50ZXI+KG1lc3NhZ2VDYWxsYmFjayksIHRo
aXMpOwogICAgIGdzdF9idXNfcmVtb3ZlX3NpZ25hbF93YXRjaChidXMuZ2V0KCkpOwogCisgICAg
YXV0byYgbWFuYWdlciA9IFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdl
cigpOworICAgIGF1dG8qIHNlc3Npb24gPSBtYW5hZ2VyLmN1cnJlbnRTZXNzaW9uKCk7CisgICAg
aWYgKHNlc3Npb24pIHsKKyAgICAgICAgYXV0byYgY2xpZW50ID0gc2Vzc2lvbi0+Y2xpZW50KCk7
CisgICAgICAgIGF1dG8qIGRvY3VtZW50ID0gY2xpZW50Lmhvc3RpbmdEb2N1bWVudCgpOworICAg
ICAgICBpZiAoZG9jdW1lbnQpCisgICAgICAgICAgICB1bnJlZ2lzdGVyR1N0cmVhbWVyUGlwZWxp
bmUobV9waXBlbGluZSwgZG9jdW1lbnQtPnBhZ2UoKSk7CisgICAgfQorCiAgICAgZ3N0X2VsZW1l
bnRfc2V0X3N0YXRlKG1fcGlwZWxpbmUsIEdTVF9TVEFURV9OVUxMKTsKICAgICBnc3Rfb2JqZWN0
X3VucmVmKG1fcGlwZWxpbmUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyLmgKaW5kZXggZGJiYzQ1NjM3NGE2OTcwOTg3MzczNTI2OWEyMDlkOTg0
NGE2NmMzNy4uMTZiOGY2Y2JkNDIwZDUyNWQyOGNiMTgzNDU0YzgzYmM0OTQ5ZDQ5YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCkBAIC01Niw2
ICs1NiwxMCBAQAogT0JKQ19DTEFTUyBBVlBsYXllcjsKIE9CSkNfQ0xBU1MgTlNBcnJheTsKIAor
I2lmIFVTRShHU1RSRUFNRVIpCit0eXBlZGVmIHN0cnVjdCBfR3N0RWxlbWVudCBHc3RFbGVtZW50
OworI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXVkaW9Tb3VyY2VQcm92
aWRlcjsKQEAgLTIzMiw2ICsyMzYsOCBAQCBwdWJsaWM6CiAKICNpZiBVU0UoR1NUUkVBTUVSKQog
ICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zKGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IFN0cmluZyYsIE1lZGlhUGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2lu
c0NhbGxiYWNrJikgeyB9OworICAgIHZpcnR1YWwgdm9pZCBwaXBlbGluZUNyZWF0ZWQoR3N0RWxl
bWVudCopIHsgfTsKKyAgICB2aXJ0dWFsIHZvaWQgcGlwZWxpbmVXaWxsQmVEZXN0cm95ZWQoR3N0
RWxlbWVudCopIHsgfTsKICNlbmRpZgogCiAgICAgdmlydHVhbCBib29sIG1lZGlhUGxheWVyU2hv
dWxkRGlzYWJsZVNsZWVwKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1l
ckNvbW1vbi5jcHAKaW5kZXggMjA5MTc3NjAzYTk4NzQ1YjVlZDllYjI4MmU4YzExNGEyMDE5M2Ix
NC4uN2ZiNzUzNzJjMWQwNDZiZGM5Y2FkZWMwYWY4MDE1YTZkNDdkNDVmYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1v
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dT
dHJlYW1lckNvbW1vbi5jcHAKQEAgLTI1LDEzICsyNSwxNiBAQAogCiAjaW5jbHVkZSAiR3N0QWxs
b2NhdG9yRmFzdE1hbGxvYy5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKKyNpbmNsdWRlICJQYWdl
LmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8Z3N0L2F1ZGlvL2F1ZGlv
LWluZm8uaD4KICNpbmNsdWRlIDxnc3QvZ3N0Lmg+CiAjaW5jbHVkZSA8bXV0ZXg+CisjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HTGliVXRpbGl0aWVzLmg+CiAj
aW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL1J1bkxv
b3BTb3VyY2VQcmlvcml0eS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAog
I2lmIEVOQUJMRShWSURFT19UUkFDSykgJiYgVVNFKEdTVFJFQU1FUl9NUEVHVFMpCiAjZGVmaW5l
IEdTVF9VU0VfVU5TVEFCTEVfQVBJCkBAIC0zNzksNiArMzgyLDY0IEBAIFJlZjxTaGFyZWRCdWZm
ZXI+IEdzdE1hcHBlZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkKICAgICByZXR1cm4gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKnRoaXMpOwogfQogCitIYXNoTWFwPFN0cmluZywgR3N0QmluKj4g
c193ZWJLaXRHU3RyZWFtZXJQaXBlbGluZXM7CisKK3ZvaWQgcmVnaXN0ZXJHU3RyZWFtZXJQaXBl
bGluZShHc3RFbGVtZW50KiBwaXBlbGluZSwgUGFnZSogcGFnZSkKK3sKKyAgICBpZiAoIUdTVF9J
U19FTEVNRU5UKHBpcGVsaW5lKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgR1VuaXF1ZVB0cjxn
Y2hhcj4gbmFtZShnc3Rfb2JqZWN0X2dldF9uYW1lKEdTVF9PQkpFQ1RfQ0FTVChwaXBlbGluZSkp
KTsKKyAgICBpZiAoc193ZWJLaXRHU3RyZWFtZXJQaXBlbGluZXMuY29udGFpbnMobmFtZS5nZXQo
KSkpCisgICAgICAgIHJldHVybjsKKworICAgIHNfd2ViS2l0R1N0cmVhbWVyUGlwZWxpbmVzLmFk
ZChuYW1lLmdldCgpLCBHU1RfQklOX0NBU1QocGlwZWxpbmUpKTsKKworICAgIC8vIFRPRE86IEhv
b2sgdG8gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uIGhlcmUuCisgICAgVU5VU0VEX1BBUkFNKHBh
Z2UpOworfQorCit2b2lkIHVucmVnaXN0ZXJHU3RyZWFtZXJQaXBlbGluZShHc3RFbGVtZW50KiBw
aXBlbGluZSwgUGFnZSogcGFnZSkKK3sKKyAgICBpZiAoIUdTVF9JU19FTEVNRU5UKHBpcGVsaW5l
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gbmFtZShnc3Rfb2Jq
ZWN0X2dldF9uYW1lKEdTVF9PQkpFQ1RfQ0FTVChwaXBlbGluZSkpKTsKKyAgICBpZiAoIXNfd2Vi
S2l0R1N0cmVhbWVyUGlwZWxpbmVzLmNvbnRhaW5zKG5hbWUuZ2V0KCkpKQorICAgICAgICByZXR1
cm47CisKKyAgICBzX3dlYktpdEdTdHJlYW1lclBpcGVsaW5lcy5yZW1vdmUobmFtZS5nZXQoKSk7
CisKKyAgICAvLyBUT0RPOiBIb29rIHRvIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbiBoZXJlLgor
ICAgIFVOVVNFRF9QQVJBTShwYWdlKTsKK30KKworVmVjdG9yPFN0cmluZz4gZ3N0UGlwZWxpbmVz
TmFtZXMoKQoreworICAgIFZlY3RvcjxTdHJpbmc+IG5hbWVzOworICAgIG5hbWVzLnJlc2VydmVJ
bml0aWFsQ2FwYWNpdHkoc193ZWJLaXRHU3RyZWFtZXJQaXBlbGluZXMuc2l6ZSgpKTsKKyAgICBm
b3IgKGF1dG8gbmFtZSA6IHNfd2ViS2l0R1N0cmVhbWVyUGlwZWxpbmVzLmtleXMoKSkKKyAgICAg
ICAgbmFtZXMudW5jaGVja2VkQXBwZW5kKG5hbWUpOworCisgICAgcmV0dXJuIG5hbWVzOworfQor
CitTdHJpbmcgZHVtcEdTdHJlYW1lclBpcGVsaW5lKFN0cmluZyBuYW1lLCBTdHJpbmcgc3ViQmlu
TmFtZSkKK3sKKyAgICBHc3RCaW4qIHBpcGVsaW5lID0gc193ZWJLaXRHU3RyZWFtZXJQaXBlbGlu
ZXMuZ2V0KG5hbWUpOworICAgIGlmICghcGlwZWxpbmUpCisgICAgICAgIHJldHVybiBudWxsU3Ry
aW5nKCk7CisKKyAgICBpZiAoc3ViQmluTmFtZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBn
c3RfZGVidWdfYmluX3RvX2RvdF9kYXRhKHBpcGVsaW5lLCBHU1RfREVCVUdfR1JBUEhfU0hPV19B
TEwpOworCisgICAgR1JlZlB0cjxHc3RFbGVtZW50PiBjaGlsZCA9IGFkb3B0R1JlZihnc3RfYmlu
X2dldF9ieV9uYW1lKHBpcGVsaW5lLCBzdWJCaW5OYW1lLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICBp
ZiAoY2hpbGQgJiYgR1NUX0lTX0JJTihjaGlsZC5nZXQoKSkpCisgICAgICAgIHJldHVybiBnc3Rf
ZGVidWdfYmluX3RvX2RvdF9kYXRhKEdTVF9CSU5fQ0FTVChjaGlsZC5nZXQoKSksIEdTVF9ERUJV
R19HUkFQSF9TSE9XX0FMTCk7CisKKyAgICByZXR1cm4gbnVsbFN0cmluZygpOworfQorCiB9CiAK
ICNlbmRpZiAvLyBVU0UoR1NUUkVBTUVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oCmluZGV4IGM4
MTNiNzhjMzIyOWY5ODRlZTk0NWYwNGI0ZGJhOTBjYWUyYzAzNWMuLjIyM2Y2NzcyNWQ2MzA2YzVh
MWY4MGI5ZmE3ODc5ZTAxNzQxODU5MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmgKQEAgLTMy
LDYgKzMyLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW50U2l6ZTsKK2NsYXNz
IFBhZ2U7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGlubGluZSBib29sIHdlYmtpdEdzdENoZWNr
VmVyc2lvbihndWludCBtYWpvciwgZ3VpbnQgbWlub3IsIGd1aW50IG1pY3JvKQpAQCAtMjIxLDYg
KzIyMiwxMSBAQCB2b2lkIGRpc2Nvbm5lY3RTaW1wbGVCdXNNZXNzYWdlQ2FsbGJhY2soR3N0RWxl
bWVudCogcGlwZWxpbmUpOwogCiBlbnVtIGNsYXNzIEdzdFZpZGVvRGVjb2RlclBsYXRmb3JtIHsg
SW14VlBVLCBWaWRlbzRMaW51eCB9OwogCit2b2lkIHJlZ2lzdGVyR1N0cmVhbWVyUGlwZWxpbmUo
R3N0RWxlbWVudCosIFBhZ2UqKTsKK3ZvaWQgdW5yZWdpc3RlckdTdHJlYW1lclBpcGVsaW5lKEdz
dEVsZW1lbnQqLCBQYWdlKik7CitWZWN0b3I8U3RyaW5nPiBnc3RQaXBlbGluZXNOYW1lcygpOwor
U3RyaW5nIGR1bXBHU3RyZWFtZXJQaXBlbGluZShTdHJpbmcgbmFtZSwgU3RyaW5nIHN1YkJpbk5h
bWUpOworCiB9CiAKICNpZm5kZWYgR1NUX0JVRkZFUl9EVFNfT1JfUFRTCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IGQyMmE0ZmUyYjExMmIz
OTQ4ZTVkNjVlNjgyNDIxODNkMjZhZTk2YWEuLjZmZTZjMDk5MGM5NjIxMWI0Y2U4OWQxYjIxZDBj
ZWE4YWZlNjZhYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXIuY3BwCkBAIC0yNDA5LDYgKzI0MDksOCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcjo6Y3JlYXRlR1NUUGxheUJpbihjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJgog
ICAgICAgICB9CiAKICAgICAgICAgR1NUX0lORk9fT0JKRUNUKHBpcGVsaW5lKCksICJUZWFyaW5n
IGRvd24gYXMgd2UgbmVlZCB0byB1c2UgJXMgbm93LiIsIHBsYXliaW5OYW1lKTsKKyAgICAgICAg
aWYgKG1fcGxheWVyKQorICAgICAgICAgICAgbV9wbGF5ZXItPmNsaWVudCgpLnBpcGVsaW5lV2ls
bEJlRGVzdHJveWVkKG1fcGlwZWxpbmUuZ2V0KCkpOwogICAgICAgICBjaGFuZ2VQaXBlbGluZVN0
YXRlKEdTVF9TVEFURV9OVUxMKTsKICAgICAgICAgbV9waXBlbGluZSA9IG51bGxwdHI7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2Uu
Y3BwCmluZGV4IGRmOWE0Njg1MWRkMWJkNzJmOTI1NjRmYWU5YWIwYTE2ZmM3NWYyZWUuLmY3YTBi
MzljNjg5OWMxMGViOGIxZDdiOTNmZTNkNDAwODE3MDM5ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKQEAgLTM0Miw4ICszNDIs
MTEgQEAgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6fk1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lckJhc2UoKQogCiAgICAgLy8gVGhlIGNoYW5nZSB0byBHU1RfU1RBVEVfTlVMTCBz
dGF0ZSBpcyBhbHdheXMgc3luY2hyb25vdXMuIFNvIGFmdGVyIHRoaXMgZ2V0cyBleGVjdXRlZCB3
ZSBkb24ndCBuZWVkIHRvIHdvcnJ5CiAgICAgLy8gYWJvdXQgaGFuZGxlcnMgcnVubmluZyBpbiB0
aGUgR1N0cmVhbWVyIHRocmVhZC4KLSAgICBpZiAobV9waXBlbGluZSkKKyAgICBpZiAobV9waXBl
bGluZSkgeworICAgICAgICBpZiAobV9wbGF5ZXIpCisgICAgICAgICAgICBtX3BsYXllci0+Y2xp
ZW50KCkucGlwZWxpbmVXaWxsQmVEZXN0cm95ZWQobV9waXBlbGluZS5nZXQoKSk7CiAgICAgICAg
IGdzdF9lbGVtZW50X3NldF9zdGF0ZShtX3BpcGVsaW5lLmdldCgpLCBHU1RfU1RBVEVfTlVMTCk7
CisgICAgfQogCiAgICAgbV9wbGF5ZXIgPSBudWxscHRyOwogfQpAQCAtMzUxLDYgKzM1NCw4IEBA
IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6On5NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJCYXNlKCkKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6c2V0UGlw
ZWxpbmUoR3N0RWxlbWVudCogcGlwZWxpbmUpCiB7CiAgICAgbV9waXBlbGluZSA9IHBpcGVsaW5l
OworICAgIGlmIChtX3BsYXllcikKKyAgICAgICAgbV9wbGF5ZXItPmNsaWVudCgpLnBpcGVsaW5l
Q3JlYXRlZChtX3BpcGVsaW5lLmdldCgpKTsKIAogICAgIEdSZWZQdHI8R3N0QnVzPiBidXMgPSBh
ZG9wdEdSZWYoZ3N0X3BpcGVsaW5lX2dldF9idXMoR1NUX1BJUEVMSU5FKG1fcGlwZWxpbmUuZ2V0
KCkpKSk7CiAgICAgZ3N0X2J1c19zZXRfc3luY19oYW5kbGVyKGJ1cy5nZXQoKSwgW10oR3N0QnVz
KiwgR3N0TWVzc2FnZSogbWVzc2FnZSwgZ3BvaW50ZXIgdXNlckRhdGEpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlw
ZWxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21z
ZS9BcHBlbmRQaXBlbGluZS5jcHAKaW5kZXggNWEyYmRlZGExYjg3YTFkZWE4YzZiYmY1ZjY5ODQx
ZDdlOWY2NmMwYi4uNmE3YjcyZGE4OGE3MDE4YWIxMjA5NjNjNDA4OWRhMWRmZjZiNDgwNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9B
cHBlbmRQaXBlbGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAKQEAgLTExNSw5ICsxMTUsMTAgQEAgQXBw
ZW5kUGlwZWxpbmU6OkFwcGVuZFBpcGVsaW5lKFJlZjxNZWRpYVNvdXJjZUNsaWVudEdTdHJlYW1l
ck1TRT4gbWVkaWFTb3VyY2VDbGkKICAgICAvLyBGSVhNRTogZ2l2ZSBhIG5hbWUgdG8gdGhlIHBp
cGVsaW5lLCBtYXliZSByZWxhdGVkIHdpdGggdGhlIHRyYWNrIGl0J3MgbWFuYWdpbmcuCiAgICAg
Ly8gVGhlIHRyYWNrIG5hbWUgaXMgc3RpbGwgdW5rbm93biBhdCB0aGlzIHRpbWUsIHRob3VnaC4K
ICAgICBzdGF0aWMgc2l6ZV90IGFwcGVuZFBpcGVsaW5lQ291bnQgPSAwOwotICAgIFN0cmluZyBw
aXBlbGluZU5hbWUgPSBtYWtlU3RyaW5nKCJhcHBlbmQtcGlwZWxpbmUtIiwKKyAgICBTdHJpbmcg
cGlwZWxpbmVOYW1lID0gbWFrZVN0cmluZygibXNlLWFwcGVuZC1waXBlbGluZS0iLAogICAgICAg
ICBtX3NvdXJjZUJ1ZmZlclByaXZhdGUtPnR5cGUoKS5jb250YWluZXJUeXBlKCkucmVwbGFjZSgi
LyIsICItIiksICctJywgYXBwZW5kUGlwZWxpbmVDb3VudCsrKTsKICAgICBtX3BpcGVsaW5lID0g
Z3N0X3BpcGVsaW5lX25ldyhwaXBlbGluZU5hbWUudXRmOCgpLmRhdGEoKSk7CisgICAgbV9wbGF5
ZXJQcml2YXRlLT5tZWRpYVBsYXllcigpLT5jbGllbnQoKS5waXBlbGluZUNyZWF0ZWQobV9waXBl
bGluZS5nZXQoKSk7CiAKICAgICBtX2J1cyA9IGFkb3B0R1JlZihnc3RfcGlwZWxpbmVfZ2V0X2J1
cyhHU1RfUElQRUxJTkUobV9waXBlbGluZS5nZXQoKSkpKTsKICAgICBnc3RfYnVzX2FkZF9zaWdu
YWxfd2F0Y2hfZnVsbChtX2J1cy5nZXQoKSwgUnVuTG9vcFNvdXJjZVByaW9yaXR5OjpSdW5Mb29w
RGlzcGF0Y2hlcik7CkBAIC0yNDIsNiArMjQzLDggQEAgQXBwZW5kUGlwZWxpbmU6On5BcHBlbmRQ
aXBlbGluZSgpCiAgICAgLy8gd2hlbiBjaGFuZ2luZyB0aGUgcGlwZWxpbmUgc3RhdGUuCiAKICAg
ICBpZiAobV9waXBlbGluZSkgeworICAgICAgICBpZiAobV9wbGF5ZXJQcml2YXRlKQorICAgICAg
ICAgICAgbV9wbGF5ZXJQcml2YXRlLT5tZWRpYVBsYXllcigpLT5jbGllbnQoKS5waXBlbGluZVdp
bGxCZURlc3Ryb3llZChtX3BpcGVsaW5lLmdldCgpKTsKICAgICAgICAgQVNTRVJUKG1fYnVzKTsK
ICAgICAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9kYXRhKG1fYnVzLmdldCgp
LCB0aGlzKTsKICAgICAgICAgZ3N0X2J1c19kaXNhYmxlX3N5bmNfbWVzc2FnZV9lbWlzc2lvbiht
X2J1cy5nZXQoKSk7Cg==
</data>
<flag name="review"
          id="399824"
          type_id="1"
          status="-"
          setter="cgarcia"
    />
          </attachment>
      

    </bug>

</bugzilla>