<?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>192075</bug_id>
          
          <creation_ts>2018-11-28 03:25:33 -0800</creation_ts>
          <short_desc>[GStreamer][EME] CDMInstance should be shipped as a GstContext to the decryptors</short_desc>
          <delta_ts>2018-11-30 08:22:40 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Xabier Rodríguez Calvar">calvaris</reporter>
          <assigned_to name="Xabier Rodríguez Calvar">calvaris</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>cturner</cc>
    
    <cc>pnormand</cc>
    
    <cc>tsaunier</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1482385</commentid>
    <comment_count>0</comment_count>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2018-11-28 03:25:33 -0800</bug_when>
    <thetext>[GStreamer][EME] CDMInstance should be shipped as a GstContext to the decryptors</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1482387</commentid>
    <comment_count>1</comment_count>
      <attachid>355860</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2018-11-28 03:39:02 -0800</bug_when>
    <thetext>Created attachment 355860
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1482389</commentid>
    <comment_count>2</comment_count>
      <attachid>355860</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2018-11-28 04:04:37 -0800</bug_when>
    <thetext>Comment on attachment 355860
Patch

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

&gt; Source/WebCore/platform/graphics/gstreamer/eme/WebKitCommonEncryptionDecryptorGStreamer.cpp:313
&gt; +        GRefPtr&lt;GstContext&gt; context = adoptGRef(gst_element_get_context(GST_ELEMENT(self), &quot;drm-cdm-instance&quot;));
&gt; +        if (context) {

If not context is found here, maybe you can try a context query and a need-context message, like described in the GstContext docs?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1482502</commentid>
    <comment_count>3</comment_count>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2018-11-28 10:16:23 -0800</bug_when>
    <thetext>(In reply to Philippe Normand from comment #2)
&gt; Comment on attachment 355860 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=355860&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/gstreamer/eme/WebKitCommonEncryptionDecryptorGStreamer.cpp:313
&gt; &gt; +        GRefPtr&lt;GstContext&gt; context = adoptGRef(gst_element_get_context(GST_ELEMENT(self), &quot;drm-cdm-instance&quot;));
&gt; &gt; +        if (context) {
&gt; 
&gt; If not context is found here, maybe you can try a context query and a
&gt; need-context message, like described in the GstContext docs?

Yes, I thought of that and it could make sense in other circumstances. In our case, as soon as we get the CDMInstance from WebCore, we set it so it should be available. If it isn&apos;t a query is not going to help cause nobody is going to answer it and a message would be useless as well cause the CDMInstance is something we don&apos;t ask but we get instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1482882</commentid>
    <comment_count>4</comment_count>
      <attachid>355860</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2018-11-29 02:03:30 -0800</bug_when>
    <thetext>Comment on attachment 355860
Patch

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

&gt;&gt;&gt; Source/WebCore/platform/graphics/gstreamer/eme/WebKitCommonEncryptionDecryptorGStreamer.cpp:313
&gt;&gt;&gt; +        if (context) {
&gt;&gt; 
&gt;&gt; If not context is found here, maybe you can try a context query and a need-context message, like described in the GstContext docs?
&gt; 
&gt; Yes, I thought of that and it could make sense in other circumstances. In our case, as soon as we get the CDMInstance from WebCore, we set it so it should be available. If it isn&apos;t a query is not going to help cause nobody is going to answer it and a message would be useless as well cause the CDMInstance is something we don&apos;t ask but we get instead.

A message sent by the decryptor could be handled in the player message handler.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1482913</commentid>
    <comment_count>5</comment_count>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2018-11-29 03:28:22 -0800</bug_when>
    <thetext>(In reply to Philippe Normand from comment #4)
&gt; Comment on attachment 355860 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=355860&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebCore/platform/graphics/gstreamer/eme/WebKitCommonEncryptionDecryptorGStreamer.cpp:313
&gt; &gt;&gt;&gt; +        if (context) {
&gt; &gt;&gt; 
&gt; &gt;&gt; If not context is found here, maybe you can try a context query and a need-context message, like described in the GstContext docs?
&gt; &gt; 
&gt; &gt; Yes, I thought of that and it could make sense in other circumstances. In our case, as soon as we get the CDMInstance from WebCore, we set it so it should be available. If it isn&apos;t a query is not going to help cause nobody is going to answer it and a message would be useless as well cause the CDMInstance is something we don&apos;t ask but we get instead.
&gt; 
&gt; A message sent by the decryptor could be handled in the player message
&gt; handler.

Obviously, but it is not going to be answered sooner, cause if we had it in the player, it would be set already in the pipeline.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1482914</commentid>
    <comment_count>6</comment_count>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2018-11-29 03:29:26 -0800</bug_when>
    <thetext>(In reply to Xabier Rodríguez Calvar from comment #5)
&gt; (In reply to Philippe Normand from comment #4)
&gt; &gt; Comment on attachment 355860 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=355860&amp;action=review
&gt; &gt; 
&gt; &gt; &gt;&gt;&gt; Source/WebCore/platform/graphics/gstreamer/eme/WebKitCommonEncryptionDecryptorGStreamer.cpp:313
&gt; &gt; &gt;&gt;&gt; +        if (context) {
&gt; &gt; &gt;&gt; 
&gt; &gt; &gt;&gt; If not context is found here, maybe you can try a context query and a need-context message, like described in the GstContext docs?
&gt; &gt; &gt; 
&gt; &gt; &gt; Yes, I thought of that and it could make sense in other circumstances. In our case, as soon as we get the CDMInstance from WebCore, we set it so it should be available. If it isn&apos;t a query is not going to help cause nobody is going to answer it and a message would be useless as well cause the CDMInstance is something we don&apos;t ask but we get instead.
&gt; &gt; 
&gt; &gt; A message sent by the decryptor could be handled in the player message
&gt; &gt; handler.
&gt; 
&gt; Obviously, but it is not going to be answered sooner, cause if we had it in
&gt; the player, it would be set already in the pipeline.

It would be dead code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1482923</commentid>
    <comment_count>7</comment_count>
      <attachid>355860</attachid>
    <who name="Charlie Turner">cturner</who>
    <bug_when>2018-11-29 05:51:03 -0800</bug_when>
    <thetext>Comment on attachment 355860
Patch

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

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:1332
&gt; +            // FIXME: The decryptors should be able force attempt decryption after creation and being added to a pipeline as a way of trying to get they keys if needed.

This sentence needs rewording

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:1218
&gt; +    GST_LOG(&quot;CDM instance %p dispatched as context&quot;, m_cdmInstance.get());

This isn&apos;t a high frequency message, it would be better placed at the DEBUG level.

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:1226
&gt; +#ifndef NDEBUG

Could remove the macro code and put an early return in for instance != m_cdmInstance, this would also make the logic more symmetrical with cdmInstanceAttached.

&gt; Source/WebCore/platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp:912
&gt; +void MediaPlayerPrivateGStreamerMSE::attemptToDecryptWithLocalInstance()

Since we&apos;re renaming things and don&apos;t have the distinction anymore of an argument instance vs. a class instance, this code would read nicer if the method was just called attemptToDecryptWithInstance, the local part doesn&apos;t communicate anything imo.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1482924</commentid>
    <comment_count>8</comment_count>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2018-11-29 06:05:10 -0800</bug_when>
    <thetext>(In reply to Charlie Turner from comment #7)
&gt; Comment on attachment 355860 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=355860&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:1332
&gt; &gt; +            // FIXME: The decryptors should be able force attempt decryption after creation and being added to a pipeline as a way of trying to get they keys if needed.
&gt; 
&gt; This sentence needs rewording

Yes.

&gt; &gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:1218
&gt; &gt; +    GST_LOG(&quot;CDM instance %p dispatched as context&quot;, m_cdmInstance.get());
&gt; 
&gt; This isn&apos;t a high frequency message, it would be better placed at the DEBUG
&gt; level.

Yes, I should know my logging levels better ;)

&gt; &gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:1226
&gt; &gt; +#ifndef NDEBUG
&gt; 
&gt; Could remove the macro code and put an early return in for instance !=
&gt; m_cdmInstance, this would also make the logic more symmetrical with
&gt; cdmInstanceAttached.

I&apos;ll try.

&gt; &gt; Source/WebCore/platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp:912
&gt; &gt; +void MediaPlayerPrivateGStreamerMSE::attemptToDecryptWithLocalInstance()
&gt; 
&gt; Since we&apos;re renaming things and don&apos;t have the distinction anymore of an
&gt; argument instance vs. a class instance, this code would read nicer if the
&gt; method was just called attemptToDecryptWithInstance, the local part doesn&apos;t
&gt; communicate anything imo.

There&apos;s already an attemptToDecryptWithInstance, wdym?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1483015</commentid>
    <comment_count>9</comment_count>
      <attachid>356019</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2018-11-29 10:32:40 -0800</bug_when>
    <thetext>Created attachment 356019
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1483018</commentid>
    <comment_count>10</comment_count>
      <attachid>356019</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2018-11-29 10:34:02 -0800</bug_when>
    <thetext>Comment on attachment 356019
Patch

Uploaded by mistake.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1483026</commentid>
    <comment_count>11</comment_count>
      <attachid>356023</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2018-11-29 10:38:47 -0800</bug_when>
    <thetext>Created attachment 356023
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1483058</commentid>
    <comment_count>12</comment_count>
    <who name="Thibault Saunier">tsaunier</who>
    <bug_when>2018-11-29 11:46:35 -0800</bug_when>
    <thetext>Why not simply a property on the decryptor element? As I see it, this is going through the GstContext API to simply set a property on a specific element. GstContext was designed to be able to share a common &quot;context&quot; on several elements in the pipeline.

To me, the &quot;normal&quot; way of doing that would be to have a &quot;cdm-instance&quot; property on the decryptor and in the MediaPlayerPrivate connect to `deep-element-added` and set the property from there.

What am I missing here? :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1483488</commentid>
    <comment_count>13</comment_count>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2018-11-30 03:59:21 -0800</bug_when>
    <thetext>(In reply to Thibault Saunier from comment #12)
&gt; Why not simply a property on the decryptor element? As I see it, this is
&gt; going through the GstContext API to simply set a property on a specific
&gt; element. GstContext was designed to be able to share a common &quot;context&quot; on
&gt; several elements in the pipeline.

For me this a common context shared by several elements in the pipeline, in this case the decryptors.

&gt; To me, the &quot;normal&quot; way of doing that would be to have a &quot;cdm-instance&quot;
&gt; property on the decryptor and in the MediaPlayerPrivate connect to
&gt; `deep-element-added` and set the property from there.

Connecting to that signal would also imply inspecting the pipeline for the detach and unsetting the property when the instance is detached.

I don&apos;t have a strong opinion on GstContext vs property but in this case it looks better to me to use a context. Do you have a stronger opinion?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1483494</commentid>
    <comment_count>14</comment_count>
    <who name="Thibault Saunier">tsaunier</who>
    <bug_when>2018-11-30 04:50:45 -0800</bug_when>
    <thetext>(In reply to Xabier Rodríguez Calvar from comment #13)
&gt; (In reply to Thibault Saunier from comment #12)
&gt; &gt; Why not simply a property on the decryptor element? As I see it, this is
&gt; &gt; going through the GstContext API to simply set a property on a specific
&gt; &gt; element. GstContext was designed to be able to share a common &quot;context&quot; on
&gt; &gt; several elements in the pipeline.
&gt; 
&gt; For me this a common context shared by several elements in the pipeline, in
&gt; this case the decryptors.
&gt; 
&gt; &gt; To me, the &quot;normal&quot; way of doing that would be to have a &quot;cdm-instance&quot;
&gt; &gt; property on the decryptor and in the MediaPlayerPrivate connect to
&gt; &gt; `deep-element-added` and set the property from there.
&gt; 
&gt; Connecting to that signal would also imply inspecting the pipeline for the
&gt; detach and unsetting the property when the instance is detached.
&gt; 
&gt; I don&apos;t have a strong opinion on GstContext vs property but in this case it
&gt; looks better to me to use a context. Do you have a stronger opinion?

No strong opinion no, just looked a bit odd at first sight, but I can understand your point stating that the CDMInstance is a shared context for all decryptor elements that is shared between instances.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1483512</commentid>
    <comment_count>15</comment_count>
      <attachid>356023</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2018-11-30 06:54:40 -0800</bug_when>
    <thetext>Comment on attachment 356023
Patch

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

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:1209
&gt; +    if (!m_pipeline) {
&gt; +        GST_ERROR(&quot;no pipeline yet&quot;);
&gt; +        ASSERT_NOT_REACHED();
&gt; +        return;
&gt;      }

Replace this with a RELEASE_ASSERT_WITH_MESSAGE() maybe?

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:1218
&gt; +    GST_DEBUG(&quot;CDM instance %p dispatched as context&quot;, m_cdmInstance.get());

GST_DEBUG_OBJECT()

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:1233
&gt; +    GST_DEBUG(&quot;detaching CDM instance %p, setting empty context&quot;, m_cdmInstance.get());

GST_DEBUG_OBJECT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1483525</commentid>
    <comment_count>16</comment_count>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2018-11-30 07:34:54 -0800</bug_when>
    <thetext>(In reply to Philippe Normand from comment #15)
&gt; Comment on attachment 356023 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=356023&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:1209
&gt; &gt; +    if (!m_pipeline) {
&gt; &gt; +        GST_ERROR(&quot;no pipeline yet&quot;);
&gt; &gt; +        ASSERT_NOT_REACHED();
&gt; &gt; +        return;
&gt; &gt;      }
&gt; 
&gt; Replace this with a RELEASE_ASSERT_WITH_MESSAGE() maybe?

I think in this case it is better to stick to the GST_ERROR and the ASSERT because should this happen in real life it would be better if playback just fails and we get that message than just a crash.
 
&gt; &gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:1218
&gt; &gt; +    GST_DEBUG(&quot;CDM instance %p dispatched as context&quot;, m_cdmInstance.get());
&gt; 
&gt; GST_DEBUG_OBJECT()

Roger.
 
&gt; &gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:1233
&gt; &gt; +    GST_DEBUG(&quot;detaching CDM instance %p, setting empty context&quot;, m_cdmInstance.get());
&gt; 
&gt; GST_DEBUG_OBJECT

Roger.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1483528</commentid>
    <comment_count>17</comment_count>
      <attachid>356177</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2018-11-30 07:44:17 -0800</bug_when>
    <thetext>Created attachment 356177
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1483532</commentid>
    <comment_count>18</comment_count>
      <attachid>356177</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-30 08:21:42 -0800</bug_when>
    <thetext>Comment on attachment 356177
Patch for landing

Clearing flags on attachment: 356177

Committed r238738: &lt;https://trac.webkit.org/changeset/238738&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1483533</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-30 08:21:44 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1483534</commentid>
    <comment_count>20</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-11-30 08:22:40 -0800</bug_when>
    <thetext>&lt;rdar://problem/46373511&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>355860</attachid>
            <date>2018-11-28 03:39:02 -0800</date>
            <delta_ts>2018-11-29 10:32:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192075-20181128123901.patch</filename>
            <type>text/plain</type>
            <size>18881</size>
            <attacher name="Xabier Rodríguez Calvar">calvaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4NjA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2Q1MmVhM2Q4YWVhNmFk
MTQzNzY0MTg3OTA3ZmI5ZThjN2YwNjNmNC4uNmI3ODY4ZWIxNjA4MmQyMTU1ODVjM2UyNGRhZGMy
ZjFhZTQ0MTYxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDE4LTExLTI4ICBYYWJp
ZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dT
dHJlYW1lcl1bRU1FXSBDRE1JbnN0YW5jZSBzaG91bGQgYmUgc2hpcHBlZCBhcyBhIEdzdENvbnRl
eHQgdG8gdGhlIGRlY3J5cHRvcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5MjA3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFNvIGZhciwgd2Ugd2VyZSBzaGlwcGluZyB0aGUgQ0RNSW5zdGFuY2UgaW4g
YW4gZXZlbnQgdG8gdGhlCisgICAgICAgIGRlY3J5cHRvcnMgYW5kIHRoZXkgd2VyZSByZXF1ZXN0
aW5nIGl0IHdpdGggYnVzIG1lc3NhZ2VzIHdoZW4gaXQKKyAgICAgICAgd2FzIG5vdCBmb3VuZC4g
Tm93IHdlIHNoaXAgaXQgd2l0aCBhIEdzdENvbnRleHQgdGhhdCBpcyBzZXQgdG8gdGhlCisgICAg
ICAgIHBpcGVsaW5lIGFuZCByZWFkIGZyb20gdGhlIGRlY3J5cHRvcnMsIHdoaWNoIGlzIG5vdyBh
bHdheXMKKyAgICAgICAgYXZhaWxhYmxlLgorCisgICAgICAgIEFzIGEgY29uc2VxdWVuY2Ugb2Yg
Y2hhbmdpbmcgdGhpcyBmbG93LCB0aGUgYXR0ZW1wdFRvRGVjcnlwdCBvbmUKKyAgICAgICAgd2Fz
IGFmZmVjdGVkIGFzIHdlbGwgYmVjYXVzZSBpdCB3YXMgdGllZCB0byBDRE1JbnN0YW5jZQorICAg
ICAgICBzaGlwbWVudC4gQSB3b3JrYXJvdW5kIHdhcyBhZGRlZDogd2hlbiB0aGUgZGVjcnlwdG9y
cyBzZW5kIHRoZQorICAgICAgICB3YWl0aW5nRm9yS2V5LCBhbiBhdHRlbXB0VG9EZWNyeXB0IHdp
bGwgYmUgcGVyZm9ybWVkLiBBIEZJWE1FIHdhcworICAgICAgICBhZGRlZCBmb3IgdGhpcy4gQSBz
dWJjb25zZXF1ZW5jZSBpcyB0aGF0CisgICAgICAgIGF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFu
Y2UgaXMgcmV3b3JrZWQgdG8gcmVseSBhbHdheXMgaW4KKyAgICAgICAgYXR0ZW1wdFRvRGVjcnlw
dFdpdGhMb2NhbCBpbnN0YW5jZSwgdGhlIGZvcm1lciBiZWNvbWVzIGZpbmFsIGFuZAorICAgICAg
ICB0aGUgbGF0dGVyIHZpcnR1YWwuCisKKyAgICAgICAgVGhpcyBpcyBhIHJld29yaywgbm8gbmV3
IHRlc3RzIG5lZWRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpoYW5kbGVNZXNzYWdlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpjZG1J
bnN0YW5jZUF0dGFjaGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lckJhc2U6OmNkbUluc3RhbmNlRGV0YWNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6YXR0ZW1wdFRvRGVjcnlwdFdpdGhMb2NhbElu
c3RhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJh
c2U6OmRpc3BhdGNoQ0RNSW5zdGFuY2UpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9XZWJLaXRDb21tb25FbmNyeXB0
aW9uRGVjcnlwdG9yR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKHdlYmtpdF9tZWRpYV9jb21tb25f
ZW5jcnlwdGlvbl9kZWNyeXB0X2NsYXNzX2luaXQpOgorICAgICAgICAod2Via2l0TWVkaWFDb21t
b25FbmNyeXB0aW9uRGVjcnlwdFRyYW5zZm9ybUluUGxhY2UpOgorICAgICAgICAod2Via2l0TWVk
aWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdElzQ0RNSW5zdGFuY2VBdmFpbGFibGUpOgorICAgICAg
ICAod2Via2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdFNpbmtFdmVudEhhbmRsZXIpOgor
ICAgICAgICAod2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdG9yU2V0Q29udGV4dCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJNU0UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyTVNFOjphdHRlbXB0VG9EZWNyeXB0V2l0aExvY2FsSW5zdGFuY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjphdHRlbXB0VG9E
ZWNyeXB0V2l0aEluc3RhbmNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5oOgorCiAyMDE4
LTExLTI3ICBSb2IgQnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CiAKICAgICAgICAgQmxvY2sgbW9y
ZSBwb3J0cyAoNDI3LCA1NDgsIDY2OTcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDE1MDNiNTQ4MTMyZmQ3ZDljZTBlMDkwNWIyYjhkZGQ0
YWY3MDRiZjcuLmY5MTc0NjMxYTQ0MjM1YWQ1NzZmNTQ1MWQzYTliYmVmZmI5YjVkNWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC0xMzI5
LDEyICsxMzI5LDExIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpoYW5kbGVN
ZXNzYWdlKEdzdE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgIGVsc2UgaWYgKGdzdF9zdHJ1Y3R1
cmVfaGFzX25hbWUoc3RydWN0dXJlLCAiZHJtLXdhaXRpbmctZm9yLWtleSIpKSB7CiAgICAgICAg
ICAgICBHU1RfREVCVUdfT0JKRUNUKHBpcGVsaW5lKCksICJkcm0td2FpdGluZy1mb3Ita2V5IG1l
c3NhZ2UgZnJvbSAlcyIsIEdTVF9NRVNTQUdFX1NSQ19OQU1FKG1lc3NhZ2UpKTsKICAgICAgICAg
ICAgIHNldFdhaXRpbmdGb3JLZXkodHJ1ZSk7CisgICAgICAgICAgICAvLyBGSVhNRTogVGhlIGRl
Y3J5cHRvcnMgc2hvdWxkIGJlIGFibGUgZm9yY2UgYXR0ZW1wdCBkZWNyeXB0aW9uIGFmdGVyIGNy
ZWF0aW9uIGFuZCBiZWluZyBhZGRlZCB0byBhIHBpcGVsaW5lIGFzIGEgd2F5IG9mIHRyeWluZyB0
byBnZXQgdGhleSBrZXlzIGlmIG5lZWRlZC4KKyAgICAgICAgICAgIGF0dGVtcHRUb0RlY3J5cHRX
aXRoTG9jYWxJbnN0YW5jZSgpOwogICAgICAgICB9IGVsc2UgaWYgKGdzdF9zdHJ1Y3R1cmVfaGFz
X25hbWUoc3RydWN0dXJlLCAiZHJtLWtleS1yZWNlaXZlZCIpKSB7CiAgICAgICAgICAgICBHU1Rf
REVCVUdfT0JKRUNUKHBpcGVsaW5lKCksICJkcm0ta2V5LXJlY2VpdmVkIG1lc3NhZ2UgZnJvbSAl
cyIsIEdTVF9NRVNTQUdFX1NSQ19OQU1FKG1lc3NhZ2UpKTsKICAgICAgICAgICAgIHNldFdhaXRp
bmdGb3JLZXkoZmFsc2UpOwotICAgICAgICB9IGVsc2UgaWYgKGdzdF9zdHJ1Y3R1cmVfaGFzX25h
bWUoc3RydWN0dXJlLCAiZHJtLWNkbS1pbnN0YW5jZS1uZWVkZWQiKSkgewotICAgICAgICAgICAg
R1NUX0RFQlVHX09CSkVDVChwaXBlbGluZSgpLCAiZHJtLWNkbS1pbnN0YW5jZS1uZWVkZWQgbWVz
c2FnZSBmcm9tICVzIiwgR1NUX01FU1NBR0VfU1JDX05BTUUobWVzc2FnZSkpOwotICAgICAgICAg
ICAgZGlzcGF0Y2hDRE1JbnN0YW5jZSgpOwogICAgICAgICB9CiAjZW5kaWYKICAgICAgICAgZWxz
ZSBpZiAoZ3N0X3N0cnVjdHVyZV9oYXNfbmFtZShzdHJ1Y3R1cmUsICJodHRwLWhlYWRlcnMiKSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2Uu
Y3BwCmluZGV4IDQ3MWI5MzM5NTM4NGIyMGMxNGRhYzlkNTk2YmQ4MjhhMDU0MTZkMmIuLjJlYjhk
MTQ5OGNmNTc1ODMzYjg1ODExODk1YTVkMmY4YzkxNWFkY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKQEAgLTExOTcsMjMgKzEx
OTcsNDQgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjppbml0aWFsaXph
dGlvbkRhdGFFbmNvdW50ZXJlZChJbml0RGF0YSYmIGkKIAogdm9pZCBNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJCYXNlOjpjZG1JbnN0YW5jZUF0dGFjaGVkKENETUluc3RhbmNlJiBpbnN0YW5j
ZSkKIHsKLSAgICBpZiAobV9jZG1JbnN0YW5jZSAhPSAmaW5zdGFuY2UpIHsKLSAgICAgICAgbV9j
ZG1JbnN0YW5jZSA9ICZpbnN0YW5jZTsKLSAgICAgICAgR1NUX0RFQlVHX09CSkVDVChwaXBlbGlu
ZSgpLCAiQ0RNIGluc3RhbmNlICVwIHNldCIsIG1fY2RtSW5zdGFuY2UuZ2V0KCkpOwotICAgICAg
ICBtX3Byb3RlY3Rpb25Db25kaXRpb24ubm90aWZ5QWxsKCk7CisgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKKworICAgIGlmIChtX2NkbUluc3RhbmNlID09ICZpbnN0YW5jZSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgaWYgKCFtX3BpcGVsaW5lKSB7CisgICAgICAgIEdTVF9FUlJPUigibm8g
cGlwZWxpbmUgeWV0Iik7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBy
ZXR1cm47CiAgICAgfQorCisgICAgbV9jZG1JbnN0YW5jZSA9ICZpbnN0YW5jZTsKKworICAgIEdS
ZWZQdHI8R3N0Q29udGV4dD4gY29udGV4dCA9IGFkb3B0R1JlZihnc3RfY29udGV4dF9uZXcoImRy
bS1jZG0taW5zdGFuY2UiLCBGQUxTRSkpOworICAgIEdzdFN0cnVjdHVyZSogY29udGV4dFN0cnVj
dHVyZSA9IGdzdF9jb250ZXh0X3dyaXRhYmxlX3N0cnVjdHVyZShjb250ZXh0LmdldCgpKTsKKyAg
ICBnc3Rfc3RydWN0dXJlX3NldChjb250ZXh0U3RydWN0dXJlLCAiY2RtLWluc3RhbmNlIiwgR19U
WVBFX1BPSU5URVIsIG1fY2RtSW5zdGFuY2UuZ2V0KCksIG51bGxwdHIpOworICAgIGdzdF9lbGVt
ZW50X3NldF9jb250ZXh0KEdTVF9FTEVNRU5UKG1fcGlwZWxpbmUuZ2V0KCkpLCBjb250ZXh0Lmdl
dCgpKTsKKworICAgIEdTVF9MT0coIkNETSBpbnN0YW5jZSAlcCBkaXNwYXRjaGVkIGFzIGNvbnRl
eHQiLCBtX2NkbUluc3RhbmNlLmdldCgpKTsKKworICAgIG1fcHJvdGVjdGlvbkNvbmRpdGlvbi5u
b3RpZnlBbGwoKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpj
ZG1JbnN0YW5jZURldGFjaGVkKENETUluc3RhbmNlJiBpbnN0YW5jZSkKIHsKLSNpZmRlZiBOREVC
VUcKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworI2lmbmRlZiBOREVCVUcKKyAgICBBU1NF
UlQobV9jZG1JbnN0YW5jZS5nZXQoKSA9PSAmaW5zdGFuY2UpOworI2Vsc2UKICAgICBVTlVTRURf
UEFSQU0oaW5zdGFuY2UpOwogI2VuZGlmCi0gICAgaWYgKG1fY2RtSW5zdGFuY2UgPT0gJmluc3Rh
bmNlKSB7Ci0gICAgICAgIEdTVF9ERUJVR19PQkpFQ1QocGlwZWxpbmUoKSwgImRldGFjaGluZyBD
RE0gaW5zdGFuY2UgJXAiLCBtX2NkbUluc3RhbmNlLmdldCgpKTsKLSAgICAgICAgbV9jZG1JbnN0
YW5jZSA9IG51bGxwdHI7Ci0gICAgICAgIG1fcHJvdGVjdGlvbkNvbmRpdGlvbi5ub3RpZnlBbGwo
KTsKLSAgICB9CisgICAgR1NUX0RFQlVHKCJkZXRhY2hpbmcgQ0RNIGluc3RhbmNlICVwLCBzZXR0
aW5nIGVtcHR5IGNvbnRleHQiLCBtX2NkbUluc3RhbmNlLmdldCgpKTsKKyAgICBtX2NkbUluc3Rh
bmNlID0gbnVsbHB0cjsKKworICAgIEdSZWZQdHI8R3N0Q29udGV4dD4gY29udGV4dCA9IGFkb3B0
R1JlZihnc3RfY29udGV4dF9uZXcoImRybS1jZG0taW5zdGFuY2UiLCBGQUxTRSkpOworICAgIGdz
dF9lbGVtZW50X3NldF9jb250ZXh0KEdTVF9FTEVNRU5UKG1fcGlwZWxpbmUuZ2V0KCkpLCBjb250
ZXh0LmdldCgpKTsKKworICAgIG1fcHJvdGVjdGlvbkNvbmRpdGlvbi5ub3RpZnlBbGwoKTsKIH0K
IAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjphdHRlbXB0VG9EZWNyeXB0
V2l0aEluc3RhbmNlKENETUluc3RhbmNlJiBpbnN0YW5jZSkKQEAgLTEyMjUsOCArMTI0Niw3IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6YXR0ZW1wdFRvRGVjcnlwdFdp
dGhJbnN0YW5jZShDRE1JbnN0YW5jZSYKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJCYXNlOjphdHRlbXB0VG9EZWNyeXB0V2l0aExvY2FsSW5zdGFuY2UoKQogewotICAgIGJvb2wg
ZXZlbnRIYW5kbGVkID0gZ3N0X2VsZW1lbnRfc2VuZF9ldmVudChwaXBlbGluZSgpLCBnc3RfZXZl
bnRfbmV3X2N1c3RvbShHU1RfRVZFTlRfQ1VTVE9NX0RPV05TVFJFQU1fT09CLAotICAgICAgICBn
c3Rfc3RydWN0dXJlX25ldygiYXR0ZW1wdC10by1kZWNyeXB0IiwgImNkbS1pbnN0YW5jZSIsIEdf
VFlQRV9QT0lOVEVSLCBtX2NkbUluc3RhbmNlLmdldCgpLCBudWxscHRyKSkpOworICAgIGJvb2wg
ZXZlbnRIYW5kbGVkID0gZ3N0X2VsZW1lbnRfc2VuZF9ldmVudChwaXBlbGluZSgpLCBnc3RfZXZl
bnRfbmV3X2N1c3RvbShHU1RfRVZFTlRfQ1VTVE9NX0RPV05TVFJFQU1fT09CLCBnc3Rfc3RydWN0
dXJlX25ld19lbXB0eSgiYXR0ZW1wdC10by1kZWNyeXB0IikpKTsKICAgICBHU1RfREVCVUcoImF0
dGVtcHRpbmcgdG8gZGVjcnlwdCwgZXZlbnQgaGFuZGxlZCAlcyIsIGJvb2xGb3JQcmludGluZyhl
dmVudEhhbmRsZWQpKTsKIH0KIApAQCAtMTIzNywxMyArMTI1Nyw2IEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6ZGlzcGF0Y2hEZWNyeXB0aW9uS2V5KEdzdEJ1ZmZlciog
YnVmZmVyKQogICAgIEdTVF9UUkFDRSgiZW1pdHRlZCBkZWNyeXB0aW9uIGNpcGhlciBrZXkgb24g
cGlwZWxpbmUsIGV2ZW50IGhhbmRsZWQgJXMiLCBib29sRm9yUHJpbnRpbmcoZXZlbnRIYW5kbGVk
KSk7CiB9CiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6ZGlzcGF0Y2hD
RE1JbnN0YW5jZSgpCi17Ci0gICAgLy8gVGhpcyBmdW5jdGlvbiBkaXNwYXRjaGVzIHRoZSBDRE1J
bnN0YW5jZSBpbiBHU3RyZWFtZXIgcGxheWJhY2sgcGlwZWxpbmUuCi0gICAgaWYgKG1fY2RtSW5z
dGFuY2UpCi0gICAgICAgIG1fcGxheWVyLT5hdHRlbXB0VG9EZWNyeXB0V2l0aEluc3RhbmNlKGNv
bnN0X2Nhc3Q8Q0RNSW5zdGFuY2UmPigqbV9jZG1JbnN0YW5jZS5nZXQoKSkpOwotfQotCiB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OmhhbmRsZVByb3RlY3Rpb25FdmVudChH
c3RFdmVudCogZXZlbnQpCiB7CiAgICAgaWYgKG1faGFuZGxlZFByb3RlY3Rpb25FdmVudHMuY29u
dGFpbnMoR1NUX0VWRU5UX1NFUU5VTShldmVudCkpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaAppbmRleCBlM2UzOTY5Yzk5MDZkNDdmNDFj
NjIxZDhkNzc5ZmRiOGQzZTM1YWZiLi40MjM4MWQyZjc3YjhjMTRjMTlkMDdhYTBmYzZkN2Y4NTlj
NjlmYWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJCYXNlLmgKQEAgLTE1MCw5ICsxNTAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjZG1JbnN0YW5j
ZURldGFjaGVkKENETUluc3RhbmNlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaXNwYXRjaERlY3J5
cHRpb25LZXkoR3N0QnVmZmVyKik7CiAgICAgdm9pZCBoYW5kbGVQcm90ZWN0aW9uRXZlbnQoR3N0
RXZlbnQqKTsKLSAgICB2b2lkIGF0dGVtcHRUb0RlY3J5cHRXaXRoTG9jYWxJbnN0YW5jZSgpOwot
ICAgIHZvaWQgYXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5jZShDRE1JbnN0YW5jZSYpIG92ZXJy
aWRlOwotICAgIHZvaWQgZGlzcGF0Y2hDRE1JbnN0YW5jZSgpOworICAgIHZpcnR1YWwgdm9pZCBh
dHRlbXB0VG9EZWNyeXB0V2l0aExvY2FsSW5zdGFuY2UoKTsKKyAgICB2b2lkIGF0dGVtcHRUb0Rl
Y3J5cHRXaXRoSW5zdGFuY2UoQ0RNSW5zdGFuY2UmKSBmaW5hbDsKICAgICB2b2lkIGluaXRpYWxp
emF0aW9uRGF0YUVuY291bnRlcmVkKEluaXREYXRhJiYpOwogICAgIHZvaWQgc2V0V2FpdGluZ0Zv
cktleShib29sKTsKICAgICBib29sIHdhaXRpbmdGb3JLZXkoKSBjb25zdCBvdmVycmlkZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUv
V2ViS2l0Q29tbW9uRW5jcnlwdGlvbkRlY3J5cHRvckdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL1dlYktpdENvbW1vbkVuY3J5cHRp
b25EZWNyeXB0b3JHU3RyZWFtZXIuY3BwCmluZGV4IDhiZmYzOGMwMzliYjlmMTEwYTg1NWNmMTgx
Y2U3Y2U3YzcxOGQ2NWEuLjA2M2NiNGI0YmZhZGJmNmY2NjBjZDJkZDM3ZDQ3N2E3NjVlZjZhNzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9l
bWUvV2ViS2l0Q29tbW9uRW5jcnlwdGlvbkRlY3J5cHRvckdTdHJlYW1lci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9XZWJLaXRDb21tb25F
bmNyeXB0aW9uRGVjcnlwdG9yR1N0cmVhbWVyLmNwcApAQCAtMzEsMTAgKzMxLDEyIEBACiAjaW5j
bHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KIAordXNp
bmcgV2ViQ29yZTo6Q0RNSW5zdGFuY2U7CisKICNkZWZpbmUgV0VCS0lUX01FRElBX0NFTkNfREVD
UllQVF9HRVRfUFJJVkFURShvYmopIChHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUoKG9iaiks
IFdFQktJVF9UWVBFX01FRElBX0NFTkNfREVDUllQVCwgV2ViS2l0TWVkaWFDb21tb25FbmNyeXB0
aW9uRGVjcnlwdFByaXZhdGUpKQogc3RydWN0IF9XZWJLaXRNZWRpYUNvbW1vbkVuY3J5cHRpb25E
ZWNyeXB0UHJpdmF0ZSB7CiAgICAgR1JlZlB0cjxHc3RFdmVudD4gcHJvdGVjdGlvbkV2ZW50Owot
ICAgIFJlZlB0cjxXZWJDb3JlOjpDRE1JbnN0YW5jZT4gY2RtSW5zdGFuY2U7CisgICAgUmVmUHRy
PENETUluc3RhbmNlPiBjZG1JbnN0YW5jZTsKICAgICBib29sIGtleVJlY2VpdmVkOwogICAgIGJv
b2wgd2FpdGluZ0ZvcktleSB7IGZhbHNlIH07CiAgICAgTG9jayBtdXRleDsKQEAgLTQyLDEyICs0
NCwxMyBAQCBzdHJ1Y3QgX1dlYktpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5cHRQcml2YXRl
IHsKIH07CiAKIHN0YXRpYyBHc3RTdGF0ZUNoYW5nZVJldHVybiB3ZWJLaXRNZWRpYUNvbW1vbkVu
Y3J5cHRpb25EZWNyeXB0b3JDaGFuZ2VTdGF0ZShHc3RFbGVtZW50KiwgR3N0U3RhdGVDaGFuZ2Ug
dHJhbnNpdGlvbik7CitzdGF0aWMgdm9pZCB3ZWJLaXRNZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNy
eXB0b3JTZXRDb250ZXh0KEdzdEVsZW1lbnQqLCBHc3RDb250ZXh0Kik7CiBzdGF0aWMgdm9pZCB3
ZWJLaXRNZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0b3JGaW5hbGl6ZShHT2JqZWN0Kik7CiBz
dGF0aWMgR3N0Q2Fwcyogd2Via2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdFRyYW5zZm9y
bUNhcHMoR3N0QmFzZVRyYW5zZm9ybSosIEdzdFBhZERpcmVjdGlvbiwgR3N0Q2FwcyosIEdzdENh
cHMqKTsKIHN0YXRpYyBHc3RGbG93UmV0dXJuIHdlYmtpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRl
Y3J5cHRUcmFuc2Zvcm1JblBsYWNlKEdzdEJhc2VUcmFuc2Zvcm0qLCBHc3RCdWZmZXIqKTsKIHN0
YXRpYyBnYm9vbGVhbiB3ZWJraXRNZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0U2lua0V2ZW50
SGFuZGxlcihHc3RCYXNlVHJhbnNmb3JtKiwgR3N0RXZlbnQqKTsKIHN0YXRpYyBnYm9vbGVhbiB3
ZWJraXRNZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0b3JRdWVyeUhhbmRsZXIoR3N0QmFzZVRy
YW5zZm9ybSosIEdzdFBhZERpcmVjdGlvbiwgR3N0UXVlcnkqKTsKLQorc3RhdGljIGJvb2wgd2Vi
a2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdElzQ0RNSW5zdGFuY2VBdmFpbGFibGUoV2Vi
S2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdCopOwogCiBHU1RfREVCVUdfQ0FURUdPUllf
U1RBVElDKHdlYmtpdF9tZWRpYV9jb21tb25fZW5jcnlwdGlvbl9kZWNyeXB0X2RlYnVnX2NhdGVn
b3J5KTsKICNkZWZpbmUgR1NUX0NBVF9ERUZBVUxUIHdlYmtpdF9tZWRpYV9jb21tb25fZW5jcnlw
dGlvbl9kZWNyeXB0X2RlYnVnX2NhdGVnb3J5CkBAIC02NSw2ICs2OCw3IEBAIHN0YXRpYyB2b2lk
IHdlYmtpdF9tZWRpYV9jb21tb25fZW5jcnlwdGlvbl9kZWNyeXB0X2NsYXNzX2luaXQoV2ViS2l0
TWVkaWFDb21tb25FCiAKICAgICBHc3RFbGVtZW50Q2xhc3MqIGVsZW1lbnRDbGFzcyA9IEdTVF9F
TEVNRU5UX0NMQVNTKGtsYXNzKTsKICAgICBlbGVtZW50Q2xhc3MtPmNoYW5nZV9zdGF0ZSA9IEdT
VF9ERUJVR19GVU5DUFRSKHdlYktpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5cHRvckNoYW5n
ZVN0YXRlKTsKKyAgICBlbGVtZW50Q2xhc3MtPnNldF9jb250ZXh0ID0gR1NUX0RFQlVHX0ZVTkNQ
VFIod2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdG9yU2V0Q29udGV4dCk7CiAKICAg
ICBHc3RCYXNlVHJhbnNmb3JtQ2xhc3MqIGJhc2VUcmFuc2Zvcm1DbGFzcyA9IEdTVF9CQVNFX1RS
QU5TRk9STV9DTEFTUyhrbGFzcyk7CiAgICAgYmFzZVRyYW5zZm9ybUNsYXNzLT50cmFuc2Zvcm1f
aXAgPSBHU1RfREVCVUdfRlVOQ1BUUih3ZWJraXRNZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0
VHJhbnNmb3JtSW5QbGFjZSk7CkBAIC0yMDksNyArMjEzLDYgQEAgc3RhdGljIEdzdEZsb3dSZXR1
cm4gd2Via2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdFRyYW5zZm9ybUluUGxhY2UoR3N0
QmFzZVQKICAgICAgICAgLy8gU2VuZCAiZHJtLWNkbS1pbnN0YW5jZS1uZWVkZWQiIG1lc3NhZ2Ug
dG8gdGhlIHBsYXllciB0byByZXNlbmQgdGhlIENETUluc3RhbmNlIGlmIGF2YWlsYWJsZSBhbmQg
aW5mb3JtIHdlIGFyZSB3YWl0aW5nIGZvciBrZXkuCiAgICAgICAgIHByaXYtPndhaXRpbmdGb3JL
ZXkgPSB0cnVlOwogICAgICAgICBnc3RfZWxlbWVudF9wb3N0X21lc3NhZ2UoR1NUX0VMRU1FTlQo
c2VsZiksIGdzdF9tZXNzYWdlX25ld19lbGVtZW50KEdTVF9PQkpFQ1Qoc2VsZiksIGdzdF9zdHJ1
Y3R1cmVfbmV3X2VtcHR5KCJkcm0td2FpdGluZy1mb3Ita2V5IikpKTsKLSAgICAgICAgZ3N0X2Vs
ZW1lbnRfcG9zdF9tZXNzYWdlKEdTVF9FTEVNRU5UKHNlbGYpLCBnc3RfbWVzc2FnZV9uZXdfZWxl
bWVudChHU1RfT0JKRUNUKHNlbGYpLCBnc3Rfc3RydWN0dXJlX25ld19lbXB0eSgiZHJtLWNkbS1p
bnN0YW5jZS1uZWVkZWQiKSkpOwogCiAgICAgICAgIHByaXYtPmNvbmRpdGlvbi53YWl0Rm9yKHBy
aXYtPm11dGV4LCBTZWNvbmRzKDUpLCBbcHJpdl0gewogICAgICAgICAgICAgcmV0dXJuIHByaXYt
PmtleVJlY2VpdmVkOwpAQCAtMjk5LDYgKzMwMiwyNyBAQCBzdGF0aWMgR3N0Rmxvd1JldHVybiB3
ZWJraXRNZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0VHJhbnNmb3JtSW5QbGFjZShHc3RCYXNl
VAogICAgIHJldHVybiBHU1RfRkxPV19PSzsKIH0KIAorc3RhdGljIGJvb2wgd2Via2l0TWVkaWFD
b21tb25FbmNyeXB0aW9uRGVjcnlwdElzQ0RNSW5zdGFuY2VBdmFpbGFibGUoV2ViS2l0TWVkaWFD
b21tb25FbmNyeXB0aW9uRGVjcnlwdCogc2VsZikKK3sKKyAgICBXZWJLaXRNZWRpYUNvbW1vbkVu
Y3J5cHRpb25EZWNyeXB0UHJpdmF0ZSogcHJpdiA9IFdFQktJVF9NRURJQV9DRU5DX0RFQ1JZUFRf
R0VUX1BSSVZBVEUoc2VsZik7CisKKyAgICBBU1NFUlQocHJpdi0+bXV0ZXguaXNMb2NrZWQoKSk7
CisKKyAgICBpZiAoIXByaXYtPmNkbUluc3RhbmNlKSB7CisgICAgICAgIEdSZWZQdHI8R3N0Q29u
dGV4dD4gY29udGV4dCA9IGFkb3B0R1JlZihnc3RfZWxlbWVudF9nZXRfY29udGV4dChHU1RfRUxF
TUVOVChzZWxmKSwgImRybS1jZG0taW5zdGFuY2UiKSk7CisgICAgICAgIGlmIChjb250ZXh0KSB7
CisgICAgICAgICAgICBjb25zdCBHVmFsdWUqIHZhbHVlID0gZ3N0X3N0cnVjdHVyZV9nZXRfdmFs
dWUoZ3N0X2NvbnRleHRfZ2V0X3N0cnVjdHVyZShjb250ZXh0LmdldCgpKSwgImNkbS1pbnN0YW5j
ZSIpOworICAgICAgICAgICAgcHJpdi0+Y2RtSW5zdGFuY2UgPSB2YWx1ZSA/IHJlaW50ZXJwcmV0
X2Nhc3Q8Q0RNSW5zdGFuY2UqPihnX3ZhbHVlX2dldF9wb2ludGVyKHZhbHVlKSkgOiBudWxscHRy
OworICAgICAgICAgICAgaWYgKHByaXYtPmNkbUluc3RhbmNlKQorICAgICAgICAgICAgICAgIEdT
VF9ERUJVR19PQkpFQ1Qoc2VsZiwgInJlY2VpdmVkIG5ldyBDRE1JbnN0YW5jZSAlcCIsIHByaXYt
PmNkbUluc3RhbmNlLmdldCgpKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBH
U1RfVFJBQ0VfT0JKRUNUKHNlbGYsICJmb3JtZXIgaW5zdGFuY2Ugd2FzIGRldGFjaGVkIik7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBHU1RfVFJBQ0VfT0JKRUNUKHNlbGYsICJDRE1JbnN0YW5j
ZSBhdmFpbGFibGUgJXMiLCBib29sRm9yUHJpbnRpbmcocHJpdi0+Y2RtSW5zdGFuY2UuZ2V0KCkp
KTsKKyAgICByZXR1cm4gcHJpdi0+Y2RtSW5zdGFuY2U7Cit9CiAKIHN0YXRpYyBnYm9vbGVhbiB3
ZWJraXRNZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0U2lua0V2ZW50SGFuZGxlcihHc3RCYXNl
VHJhbnNmb3JtKiB0cmFucywgR3N0RXZlbnQqIGV2ZW50KQogewpAQCAtMzA3LDcgKzMzMSw2IEBA
IHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRNZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0U2lua0V2
ZW50SGFuZGxlcihHc3RCYXNlVHJhbnNmCiAgICAgV2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9u
RGVjcnlwdENsYXNzKiBrbGFzcyA9IFdFQktJVF9NRURJQV9DRU5DX0RFQ1JZUFRfR0VUX0NMQVNT
KHNlbGYpOwogICAgIGdib29sZWFuIHJlc3VsdCA9IEZBTFNFOwogCi0KICAgICBzd2l0Y2ggKEdT
VF9FVkVOVF9UWVBFKGV2ZW50KSkgewogICAgIGNhc2UgR1NUX0VWRU5UX0NVU1RPTV9ET1dOU1RS
RUFNX09PQjogewogICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5MTM1NQpAQCAtMzE2LDE0ICszMzksMTEgQEAgc3RhdGljIGdib29sZWFu
IHdlYmtpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5cHRTaW5rRXZlbnRIYW5kbGVyKEdzdEJh
c2VUcmFuc2YKICAgICAgICAgLy8gcHJlZmVycmVkIHN5c3RlbSBJRCBjb250ZXh0IGlzIHNldCwg
YW55IGZ1dHVyZSBwcm90ZWN0aW9uCiAgICAgICAgIC8vIGV2ZW50cyB3aWxsIG5vdCBiZSBoYW5k
bGVkIGJ5IHRoZSBkZW11eGVyLCBzbyB0aGUgbXVzdCBiZQogICAgICAgICAvLyBoYW5kbGVkIGlu
IGhlcmUuCi0gICAgICAgIGNvbnN0IEdzdFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ3N0X2V2ZW50
X2dldF9zdHJ1Y3R1cmUoZXZlbnQpOwotICAgICAgICBnc3Rfc3RydWN0dXJlX2dldChzdHJ1Y3R1
cmUsICJjZG0taW5zdGFuY2UiLCBHX1RZUEVfUE9JTlRFUiwgJnByaXYtPmNkbUluc3RhbmNlLCBu
dWxscHRyKTsKLSAgICAgICAgaWYgKCFwcml2LT5jZG1JbnN0YW5jZSkgewotICAgICAgICAgICAg
R1NUX0VSUk9SX09CSkVDVChzZWxmLCAiTm8gQ0RNIGluc3RhbmNlIHJlY2VpdmVkIik7CisgICAg
ICAgIGlmICghd2Via2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdElzQ0RNSW5zdGFuY2VB
dmFpbGFibGUoc2VsZikpIHsKKyAgICAgICAgICAgIEdTVF9FUlJPUl9PQkpFQ1Qoc2VsZiwgIk5v
IENETSBpbnN0YW5jZSBhdmFpbGFibGUiKTsKICAgICAgICAgICAgIHJlc3VsdCA9IEZBTFNFOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgR1NUX0RFQlVHX09CSkVDVChz
ZWxmLCAicmVjZWl2ZWQgYSBjZG0gaW5zdGFuY2UgJXAiLCBwcml2LT5jZG1JbnN0YW5jZS5nZXQo
KSk7CiAKICAgICAgICAgaWYgKGtsYXNzLT5oYW5kbGVLZXlSZXNwb25zZShzZWxmLCBldmVudCkp
IHsKICAgICAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qoc2VsZiwgImtleSByZWNlaXZlZCIpOwpA
QCAtMzc0LDQgKzM5NCwyMCBAQCBzdGF0aWMgR3N0U3RhdGVDaGFuZ2VSZXR1cm4gd2ViS2l0TWVk
aWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdG9yQ2hhbmdlU3RhdGUoR3N0RQogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKK3N0YXRpYyB2b2lkIHdlYktpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5
cHRvclNldENvbnRleHQoR3N0RWxlbWVudCogZWxlbWVudCwgR3N0Q29udGV4dCogY29udGV4dCkK
K3sKKyAgICBXZWJLaXRNZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0KiBzZWxmID0gV0VCS0lU
X01FRElBX0NFTkNfREVDUllQVChlbGVtZW50KTsKKyAgICBXZWJLaXRNZWRpYUNvbW1vbkVuY3J5
cHRpb25EZWNyeXB0UHJpdmF0ZSogcHJpdiA9IFdFQktJVF9NRURJQV9DRU5DX0RFQ1JZUFRfR0VU
X1BSSVZBVEUoc2VsZik7CisKKyAgICBpZiAoZ3N0X2NvbnRleHRfaGFzX2NvbnRleHRfdHlwZShj
b250ZXh0LCAiZHJtLWNkbS1pbnN0YW5jZSIpKSB7CisgICAgICAgIGNvbnN0IEdWYWx1ZSogdmFs
dWUgPSBnc3Rfc3RydWN0dXJlX2dldF92YWx1ZShnc3RfY29udGV4dF9nZXRfc3RydWN0dXJlKGNv
bnRleHQpLCAiY2RtLWluc3RhbmNlIik7CisgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKHByaXYt
Pm11dGV4KTsKKyAgICAgICAgcHJpdi0+Y2RtSW5zdGFuY2UgPSB2YWx1ZSA/IHJlaW50ZXJwcmV0
X2Nhc3Q8Q0RNSW5zdGFuY2UqPihnX3ZhbHVlX2dldF9wb2ludGVyKHZhbHVlKSkgOiBudWxscHRy
OworICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHNlbGYsICJyZWNlaXZlZCBuZXcgQ0RNSW5zdGFu
Y2UgJXAiLCBwcml2LT5jZG1JbnN0YW5jZS5nZXQoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBHU1RfRUxFTUVOVF9DTEFTUyhwYXJlbnRfY2xhc3MpLT5zZXRfY29udGV4dChlbGVt
ZW50LCBjb250ZXh0KTsKK30KKwogI2VuZGlmIC8vIEVOQUJMRShFTkNSWVBURURfTUVESUEpICYm
IFVTRShHU1RSRUFNRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lck1TRS5jcHAKaW5kZXggYjg2YjQ2ODM2NzU5NTUyNTI1ZmM5YWFiOGRk
NjNhOTc1OGFkNDYwZi4uYmI5M2FkNzI4OGY0ZjkzZmJmNDU4OTQ4Nzc4OTc5MWY2MmNhNGMyZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21z
ZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyTVNFLmNwcApAQCAtOTA5LDExICs5MDksMTEgQEAgTWVkaWFUaW1lIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lck1TRTo6bWF4TWVkaWFUaW1lU2Vla2FibGUoKSBjb25zdAogfQogCiAjaWYg
RU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
TVNFOjphdHRlbXB0VG9EZWNyeXB0V2l0aEluc3RhbmNlKENETUluc3RhbmNlJiBpbnN0YW5jZSkK
K3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjphdHRlbXB0VG9EZWNyeXB0V2l0
aExvY2FsSW5zdGFuY2UoKQogewotICAgIGlmIChpczxDRE1JbnN0YW5jZUNsZWFyS2V5PihpbnN0
YW5jZSkpIHsKLSAgICAgICAgYXV0byYgY2tJbnN0YW5jZSA9IGRvd25jYXN0PENETUluc3RhbmNl
Q2xlYXJLZXk+KGluc3RhbmNlKTsKLSAgICAgICAgaWYgKGNrSW5zdGFuY2Uua2V5cygpLmlzRW1w
dHkoKSkKKyAgICBpZiAoaXM8Q0RNSW5zdGFuY2VDbGVhcktleT4oKm1fY2RtSW5zdGFuY2UpKSB7
CisgICAgICAgIGF1dG8mIGNsZWFya2V5Q0RNSW5zdGFuY2UgPSBkb3duY2FzdDxDRE1JbnN0YW5j
ZUNsZWFyS2V5PigqbV9jZG1JbnN0YW5jZSk7CisgICAgICAgIGlmIChjbGVhcmtleUNETUluc3Rh
bmNlLmtleXMoKS5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgR1Zh
bHVlIGtleUlETGlzdCA9IEdfVkFMVUVfSU5JVCwga2V5VmFsdWVMaXN0ID0gR19WQUxVRV9JTklU
OwpAQCAtOTMwLDcgKzkzMCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNF
OjphdHRlbXB0VG9EZWNyeXB0V2l0aEluc3RhbmNlKENETUluc3RhbmNlJiBpCiAgICAgICAgICAg
ICAgICAgZ3N0X3ZhbHVlX2xpc3RfYXBwZW5kX2FuZF90YWtlX3ZhbHVlKHZhbHVlTGlzdCwgYnVm
ZmVyVmFsdWUpOwogICAgICAgICAgICAgfTsKIAotICAgICAgICBmb3IgKGF1dG8mIGtleSA6IGNr
SW5zdGFuY2Uua2V5cygpKSB7CisgICAgICAgIGZvciAoYXV0byYga2V5IDogY2xlYXJrZXlDRE1J
bnN0YW5jZS5rZXlzKCkpIHsKICAgICAgICAgICAgIGFwcGVuZEJ1ZmZlcigma2V5SURMaXN0LCAq
a2V5LmtleUlERGF0YSk7CiAgICAgICAgICAgICBhcHBlbmRCdWZmZXIoJmtleVZhbHVlTGlzdCwg
KmtleS5rZXlWYWx1ZURhdGEpOwogICAgICAgICB9CkBAIC05MzgsNyArOTM4LDYgQEAgdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OmF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFu
Y2UoQ0RNSW5zdGFuY2UmIGkKICAgICAgICAgR1VuaXF1ZVB0cjxHc3RTdHJ1Y3R1cmU+IHN0cnVj
dHVyZShnc3Rfc3RydWN0dXJlX25ld19lbXB0eSgiZHJtLWNpcGhlci1jbGVhcmtleSIpKTsKICAg
ICAgICAgZ3N0X3N0cnVjdHVyZV9zZXRfdmFsdWUoc3RydWN0dXJlLmdldCgpLCAia2V5LWlkcyIs
ICZrZXlJRExpc3QpOwogICAgICAgICBnc3Rfc3RydWN0dXJlX3NldF92YWx1ZShzdHJ1Y3R1cmUu
Z2V0KCksICJrZXktdmFsdWVzIiwgJmtleVZhbHVlTGlzdCk7Ci0gICAgICAgIGdzdF9zdHJ1Y3R1
cmVfc2V0KHN0cnVjdHVyZS5nZXQoKSwgImNkbS1pbnN0YW5jZSIsIEdfVFlQRV9QT0lOVEVSLCAm
aW5zdGFuY2UsIG51bGxwdHIpOwogCiAgICAgICAgIGdzdF9lbGVtZW50X3NlbmRfZXZlbnQobV9w
bGF5YmFja1BpcGVsaW5lLT5waXBlbGluZSgpLCBnc3RfZXZlbnRfbmV3X2N1c3RvbShHU1RfRVZF
TlRfQ1VTVE9NX0RPV05TVFJFQU1fT09CLCBzdHJ1Y3R1cmUucmVsZWFzZSgpKSk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21z
ZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNF
LmgKaW5kZXggMjI1N2U5ZTY4MzBhY2IxOGM2ZjA4ZjcxODZiZjc3NThiNzI3MzVkNy4uNWI1Njgy
ZjY0YjVkMzU0OTRlODM5YjdhMzk0NGJhN2U0MDllZmMxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJNU0UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5oCkBAIC04Niw3ICs4Niw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0FsbENvZGVjcyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYgY29kZWNzKTsKIAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCi0gICAg
dm9pZCBhdHRlbXB0VG9EZWNyeXB0V2l0aEluc3RhbmNlKENETUluc3RhbmNlJikgZmluYWw7Cisg
ICAgdm9pZCBhdHRlbXB0VG9EZWNyeXB0V2l0aExvY2FsSW5zdGFuY2UoKSBmaW5hbDsKICNlbmRp
ZgogCiBwcml2YXRlOgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>356019</attachid>
            <date>2018-11-29 10:32:40 -0800</date>
            <delta_ts>2018-11-29 10:34:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192075-20181129193239.patch</filename>
            <type>text/plain</type>
            <size>19310</size>
            <attacher name="Xabier Rodríguez Calvar">calvaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4NjA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2Q1MmVhM2Q4YWVhNmFk
MTQzNzY0MTg3OTA3ZmI5ZThjN2YwNjNmNC4uYzA1NWQyYzg2MTRhNWQ2MTU3MWU5ZmRiNTdhNTgx
NjdjZmM2ZmQ2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDE4LTExLTI5ICBYYWJp
ZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dT
dHJlYW1lcl1bRU1FXSBDRE1JbnN0YW5jZSBzaG91bGQgYmUgc2hpcHBlZCBhcyBhIEdzdENvbnRl
eHQgdG8gdGhlIGRlY3J5cHRvcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5MjA3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFNvIGZhciwgd2Ugd2VyZSBzaGlwcGluZyB0aGUgQ0RNSW5zdGFuY2UgaW4g
YW4gZXZlbnQgdG8gdGhlCisgICAgICAgIGRlY3J5cHRvcnMgYW5kIHRoZXkgd2VyZSByZXF1ZXN0
aW5nIGl0IHdpdGggYnVzIG1lc3NhZ2VzIHdoZW4gaXQKKyAgICAgICAgd2FzIG5vdCBmb3VuZC4g
Tm93IHdlIHNoaXAgaXQgd2l0aCBhIEdzdENvbnRleHQgdGhhdCBpcyBzZXQgdG8gdGhlCisgICAg
ICAgIHBpcGVsaW5lIGFuZCByZWFkIGZyb20gdGhlIGRlY3J5cHRvcnMsIHdoaWNoIGlzIG5vdyBh
bHdheXMKKyAgICAgICAgYXZhaWxhYmxlLgorCisgICAgICAgIEFzIGEgY29uc2VxdWVuY2Ugb2Yg
Y2hhbmdpbmcgdGhpcyBmbG93LCB0aGUgYXR0ZW1wdFRvRGVjcnlwdCBvbmUKKyAgICAgICAgd2Fz
IGFmZmVjdGVkIGFzIHdlbGwgYmVjYXVzZSBpdCB3YXMgdGllZCB0byBDRE1JbnN0YW5jZQorICAg
ICAgICBzaGlwbWVudC4gQSB3b3JrYXJvdW5kIHdhcyBhZGRlZDogd2hlbiB0aGUgZGVjcnlwdG9y
cyBzZW5kIHRoZQorICAgICAgICB3YWl0aW5nRm9yS2V5LCBhbiBhdHRlbXB0VG9EZWNyeXB0IHdp
bGwgYmUgcGVyZm9ybWVkLiBBIEZJWE1FIHdhcworICAgICAgICBhZGRlZCBmb3IgdGhpcy4gQSBz
dWJjb25zZXF1ZW5jZSBpcyB0aGF0CisgICAgICAgIGF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFu
Y2UgaXMgcmV3b3JrZWQgdG8gcmVseSBhbHdheXMgaW4KKyAgICAgICAgYXR0ZW1wdFRvRGVjcnlw
dFdpdGhMb2NhbCBpbnN0YW5jZSwgdGhlIGZvcm1lciBiZWNvbWVzIGZpbmFsIGFuZAorICAgICAg
ICB0aGUgbGF0dGVyIHZpcnR1YWwuCisKKyAgICAgICAgVGhpcyBpcyBhIHJld29yaywgbm8gbmV3
IHRlc3RzIG5lZWRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpoYW5kbGVNZXNzYWdlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpjZG1J
bnN0YW5jZUF0dGFjaGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lckJhc2U6OmNkbUluc3RhbmNlRGV0YWNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6YXR0ZW1wdFRvRGVjcnlwdFdpdGhMb2NhbElu
c3RhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJh
c2U6OmRpc3BhdGNoQ0RNSW5zdGFuY2UpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9XZWJLaXRDb21tb25FbmNyeXB0
aW9uRGVjcnlwdG9yR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKHdlYmtpdF9tZWRpYV9jb21tb25f
ZW5jcnlwdGlvbl9kZWNyeXB0X2NsYXNzX2luaXQpOgorICAgICAgICAod2Via2l0TWVkaWFDb21t
b25FbmNyeXB0aW9uRGVjcnlwdFRyYW5zZm9ybUluUGxhY2UpOgorICAgICAgICAod2Via2l0TWVk
aWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdElzQ0RNSW5zdGFuY2VBdmFpbGFibGUpOgorICAgICAg
ICAod2Via2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdFNpbmtFdmVudEhhbmRsZXIpOgor
ICAgICAgICAod2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdG9yU2V0Q29udGV4dCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJNU0UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyTVNFOjphdHRlbXB0VG9EZWNyeXB0V2l0aExvY2FsSW5zdGFuY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjphdHRlbXB0VG9E
ZWNyeXB0V2l0aEluc3RhbmNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5oOgorCiAyMDE4
LTExLTI3ICBSb2IgQnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CiAKICAgICAgICAgQmxvY2sgbW9y
ZSBwb3J0cyAoNDI3LCA1NDgsIDY2OTcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDE1MDNiNTQ4MTMyZmQ3ZDljZTBlMDkwNWIyYjhkZGQ0
YWY3MDRiZjcuLmI0MWRhODdlYmE2ZmVhOTk2MjI5NTkyZGQyMDhlMzM3ZTI0YmQ1NmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC0xMzI5
LDEyICsxMzI5LDEzIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpoYW5kbGVN
ZXNzYWdlKEdzdE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgIGVsc2UgaWYgKGdzdF9zdHJ1Y3R1
cmVfaGFzX25hbWUoc3RydWN0dXJlLCAiZHJtLXdhaXRpbmctZm9yLWtleSIpKSB7CiAgICAgICAg
ICAgICBHU1RfREVCVUdfT0JKRUNUKHBpcGVsaW5lKCksICJkcm0td2FpdGluZy1mb3Ita2V5IG1l
c3NhZ2UgZnJvbSAlcyIsIEdTVF9NRVNTQUdFX1NSQ19OQU1FKG1lc3NhZ2UpKTsKICAgICAgICAg
ICAgIHNldFdhaXRpbmdGb3JLZXkodHJ1ZSk7CisgICAgICAgICAgICAvLyBGSVhNRTogVGhlIGRl
Y3J5cHRvcnMgc2hvdWxkIGJlIGFibGUgdG8gYXR0ZW1wdCB0byBkZWNyeXB0IGFmdGVyIGJlaW5n
IGNyZWF0ZWQgYW5kIGxpbmtlZCBpbiBhIHBpcGVsaW5lIGJ1dCBjdXJyZW50bHkgdGhleSBhcmUg
bm90IGFuZCBjdXJyZW50CisgICAgICAgICAgICAvLyBhcmNoaXRlY3R1cmUgZG9lcyBub3QgbWFr
ZSB0aGlzIHZlcnkgZWFzeS4gRm9ydHVuYXRlbHksIHRoZSBhcmNoIHdpbGwgY2hhbmdlIHNvb24g
YW5kIGl0IGRvZXMgbm90IHBheSBvZmYgdG8gZml4IHRoaXMgbm93IHdpdGggc29tZXRoaW5nIHRo
YXQgY291bGQgYmUKKyAgICAgICAgICAgIC8vIG1vcmUgY29udm9sdXRlZC4gSW4gdGhlIG1lYW50
aW1lLCBmb3JjZSBhdHRlbXB0IHRvIGRlY3J5cHQgd2hlbiB0aGV5IGdldCBibG9ja2VkLgorICAg
ICAgICAgICAgYXR0ZW1wdFRvRGVjcnlwdFdpdGhMb2NhbEluc3RhbmNlKCk7CiAgICAgICAgIH0g
ZWxzZSBpZiAoZ3N0X3N0cnVjdHVyZV9oYXNfbmFtZShzdHJ1Y3R1cmUsICJkcm0ta2V5LXJlY2Vp
dmVkIikpIHsKICAgICAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1QocGlwZWxpbmUoKSwgImRybS1r
ZXktcmVjZWl2ZWQgbWVzc2FnZSBmcm9tICVzIiwgR1NUX01FU1NBR0VfU1JDX05BTUUobWVzc2Fn
ZSkpOwogICAgICAgICAgICAgc2V0V2FpdGluZ0ZvcktleShmYWxzZSk7Ci0gICAgICAgIH0gZWxz
ZSBpZiAoZ3N0X3N0cnVjdHVyZV9oYXNfbmFtZShzdHJ1Y3R1cmUsICJkcm0tY2RtLWluc3RhbmNl
LW5lZWRlZCIpKSB7Ci0gICAgICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHBpcGVsaW5lKCksICJk
cm0tY2RtLWluc3RhbmNlLW5lZWRlZCBtZXNzYWdlIGZyb20gJXMiLCBHU1RfTUVTU0FHRV9TUkNf
TkFNRShtZXNzYWdlKSk7Ci0gICAgICAgICAgICBkaXNwYXRjaENETUluc3RhbmNlKCk7CiAgICAg
ICAgIH0KICNlbmRpZgogICAgICAgICBlbHNlIGlmIChnc3Rfc3RydWN0dXJlX2hhc19uYW1lKHN0
cnVjdHVyZSwgImh0dHAtaGVhZGVycyIpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKaW5kZXggNDcxYjkzMzk1Mzg0YjIwYzE0ZGFj
OWQ1OTZiZDgyOGEwNTQxNmQyYi4uMWJmZDVkODZjY2ZlOGU1NmYyOTRhMTgzNTlkMTc1ZTdjYTdj
MmFiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJCYXNlLmNwcApAQCAtMTE5NywyMyArMTE5Nyw0NiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lckJhc2U6OmluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKEluaXREYXRhJiYg
aQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OmNkbUluc3RhbmNlQXR0
YWNoZWQoQ0RNSW5zdGFuY2UmIGluc3RhbmNlKQogewotICAgIGlmIChtX2NkbUluc3RhbmNlICE9
ICZpbnN0YW5jZSkgewotICAgICAgICBtX2NkbUluc3RhbmNlID0gJmluc3RhbmNlOwotICAgICAg
ICBHU1RfREVCVUdfT0JKRUNUKHBpcGVsaW5lKCksICJDRE0gaW5zdGFuY2UgJXAgc2V0IiwgbV9j
ZG1JbnN0YW5jZS5nZXQoKSk7Ci0gICAgICAgIG1fcHJvdGVjdGlvbkNvbmRpdGlvbi5ub3RpZnlB
bGwoKTsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgaWYgKG1fY2RtSW5zdGFu
Y2UgPT0gJmluc3RhbmNlKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIW1fcGlwZWxpbmUp
IHsKKyAgICAgICAgR1NUX0VSUk9SKCJubyBwaXBlbGluZSB5ZXQiKTsKKyAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKICAgICB9CisKKyAgICBtX2NkbUluc3Rh
bmNlID0gJmluc3RhbmNlOworCisgICAgR1JlZlB0cjxHc3RDb250ZXh0PiBjb250ZXh0ID0gYWRv
cHRHUmVmKGdzdF9jb250ZXh0X25ldygiZHJtLWNkbS1pbnN0YW5jZSIsIEZBTFNFKSk7CisgICAg
R3N0U3RydWN0dXJlKiBjb250ZXh0U3RydWN0dXJlID0gZ3N0X2NvbnRleHRfd3JpdGFibGVfc3Ry
dWN0dXJlKGNvbnRleHQuZ2V0KCkpOworICAgIGdzdF9zdHJ1Y3R1cmVfc2V0KGNvbnRleHRTdHJ1
Y3R1cmUsICJjZG0taW5zdGFuY2UiLCBHX1RZUEVfUE9JTlRFUiwgbV9jZG1JbnN0YW5jZS5nZXQo
KSwgbnVsbHB0cik7CisgICAgZ3N0X2VsZW1lbnRfc2V0X2NvbnRleHQoR1NUX0VMRU1FTlQobV9w
aXBlbGluZS5nZXQoKSksIGNvbnRleHQuZ2V0KCkpOworCisgICAgR1NUX0RFQlVHKCJDRE0gaW5z
dGFuY2UgJXAgZGlzcGF0Y2hlZCBhcyBjb250ZXh0IiwgbV9jZG1JbnN0YW5jZS5nZXQoKSk7CisK
KyAgICBtX3Byb3RlY3Rpb25Db25kaXRpb24ubm90aWZ5QWxsKCk7CiB9CiAKIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6Y2RtSW5zdGFuY2VEZXRhY2hlZChDRE1JbnN0YW5j
ZSYgaW5zdGFuY2UpCiB7Ci0jaWZkZWYgTkRFQlVHCi0gICAgVU5VU0VEX1BBUkFNKGluc3RhbmNl
KTsKLSNlbmRpZgotICAgIGlmIChtX2NkbUluc3RhbmNlID09ICZpbnN0YW5jZSkgewotICAgICAg
ICBHU1RfREVCVUdfT0JKRUNUKHBpcGVsaW5lKCksICJkZXRhY2hpbmcgQ0RNIGluc3RhbmNlICVw
IiwgbV9jZG1JbnN0YW5jZS5nZXQoKSk7Ci0gICAgICAgIG1fY2RtSW5zdGFuY2UgPSBudWxscHRy
OwotICAgICAgICBtX3Byb3RlY3Rpb25Db25kaXRpb24ubm90aWZ5QWxsKCk7CisgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKKworICAgIGlmIChtX2NkbUluc3RhbmNlICE9ICZpbnN0YW5jZSkg
eworICAgICAgICBHU1RfV0FSTklORygicGFzc2VkIENETUluc3RhbmNlICVwIGlzIGRpZmZlcmVu
dCBmcm9tIHN0b3JlZCBvbmUgJXAiLCAmaW5zdGFuY2UsIG1fY2RtSW5zdGFuY2UuZ2V0KCkpOwor
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KKwor
ICAgIEdTVF9ERUJVRygiZGV0YWNoaW5nIENETSBpbnN0YW5jZSAlcCwgc2V0dGluZyBlbXB0eSBj
b250ZXh0IiwgbV9jZG1JbnN0YW5jZS5nZXQoKSk7CisgICAgbV9jZG1JbnN0YW5jZSA9IG51bGxw
dHI7CisKKyAgICBHUmVmUHRyPEdzdENvbnRleHQ+IGNvbnRleHQgPSBhZG9wdEdSZWYoZ3N0X2Nv
bnRleHRfbmV3KCJkcm0tY2RtLWluc3RhbmNlIiwgRkFMU0UpKTsKKyAgICBnc3RfZWxlbWVudF9z
ZXRfY29udGV4dChHU1RfRUxFTUVOVChtX3BpcGVsaW5lLmdldCgpKSwgY29udGV4dC5nZXQoKSk7
CisKKyAgICBtX3Byb3RlY3Rpb25Db25kaXRpb24ubm90aWZ5QWxsKCk7CiB9CiAKIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6YXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5j
ZShDRE1JbnN0YW5jZSYgaW5zdGFuY2UpCkBAIC0xMjI1LDggKzEyNDgsNyBAQCB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OmF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2Uo
Q0RNSW5zdGFuY2UmCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6YXR0
ZW1wdFRvRGVjcnlwdFdpdGhMb2NhbEluc3RhbmNlKCkKIHsKLSAgICBib29sIGV2ZW50SGFuZGxl
ZCA9IGdzdF9lbGVtZW50X3NlbmRfZXZlbnQocGlwZWxpbmUoKSwgZ3N0X2V2ZW50X25ld19jdXN0
b20oR1NUX0VWRU5UX0NVU1RPTV9ET1dOU1RSRUFNX09PQiwKLSAgICAgICAgZ3N0X3N0cnVjdHVy
ZV9uZXcoImF0dGVtcHQtdG8tZGVjcnlwdCIsICJjZG0taW5zdGFuY2UiLCBHX1RZUEVfUE9JTlRF
UiwgbV9jZG1JbnN0YW5jZS5nZXQoKSwgbnVsbHB0cikpKTsKKyAgICBib29sIGV2ZW50SGFuZGxl
ZCA9IGdzdF9lbGVtZW50X3NlbmRfZXZlbnQocGlwZWxpbmUoKSwgZ3N0X2V2ZW50X25ld19jdXN0
b20oR1NUX0VWRU5UX0NVU1RPTV9ET1dOU1RSRUFNX09PQiwgZ3N0X3N0cnVjdHVyZV9uZXdfZW1w
dHkoImF0dGVtcHQtdG8tZGVjcnlwdCIpKSk7CiAgICAgR1NUX0RFQlVHKCJhdHRlbXB0aW5nIHRv
IGRlY3J5cHQsIGV2ZW50IGhhbmRsZWQgJXMiLCBib29sRm9yUHJpbnRpbmcoZXZlbnRIYW5kbGVk
KSk7CiB9CiAKQEAgLTEyMzcsMTMgKzEyNTksNiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lckJhc2U6OmRpc3BhdGNoRGVjcnlwdGlvbktleShHc3RCdWZmZXIqIGJ1ZmZlcikKICAg
ICBHU1RfVFJBQ0UoImVtaXR0ZWQgZGVjcnlwdGlvbiBjaXBoZXIga2V5IG9uIHBpcGVsaW5lLCBl
dmVudCBoYW5kbGVkICVzIiwgYm9vbEZvclByaW50aW5nKGV2ZW50SGFuZGxlZCkpOwogfQogCi12
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OmRpc3BhdGNoQ0RNSW5zdGFuY2Uo
KQotewotICAgIC8vIFRoaXMgZnVuY3Rpb24gZGlzcGF0Y2hlcyB0aGUgQ0RNSW5zdGFuY2UgaW4g
R1N0cmVhbWVyIHBsYXliYWNrIHBpcGVsaW5lLgotICAgIGlmIChtX2NkbUluc3RhbmNlKQotICAg
ICAgICBtX3BsYXllci0+YXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5jZShjb25zdF9jYXN0PENE
TUluc3RhbmNlJj4oKm1fY2RtSW5zdGFuY2UuZ2V0KCkpKTsKLX0KLQogdm9pZCBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXJCYXNlOjpoYW5kbGVQcm90ZWN0aW9uRXZlbnQoR3N0RXZlbnQqIGV2
ZW50KQogewogICAgIGlmIChtX2hhbmRsZWRQcm90ZWN0aW9uRXZlbnRzLmNvbnRhaW5zKEdTVF9F
VkVOVF9TRVFOVU0oZXZlbnQpKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJCYXNlLmgKaW5kZXggZTNlMzk2OWM5OTA2ZDQ3ZjQxYzYyMWQ4ZDc3OWZk
YjhkM2UzNWFmYi4uNDIzODFkMmY3N2I4YzE0YzE5ZDA3YWEwZmM2ZDdmODU5YzY5ZmFhYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oCkBA
IC0xNTAsOSArMTUwLDggQEAgcHVibGljOgogICAgIHZvaWQgY2RtSW5zdGFuY2VEZXRhY2hlZChD
RE1JbnN0YW5jZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlzcGF0Y2hEZWNyeXB0aW9uS2V5KEdz
dEJ1ZmZlciopOwogICAgIHZvaWQgaGFuZGxlUHJvdGVjdGlvbkV2ZW50KEdzdEV2ZW50Kik7Ci0g
ICAgdm9pZCBhdHRlbXB0VG9EZWNyeXB0V2l0aExvY2FsSW5zdGFuY2UoKTsKLSAgICB2b2lkIGF0
dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UoQ0RNSW5zdGFuY2UmKSBvdmVycmlkZTsKLSAgICB2
b2lkIGRpc3BhdGNoQ0RNSW5zdGFuY2UoKTsKKyAgICB2aXJ0dWFsIHZvaWQgYXR0ZW1wdFRvRGVj
cnlwdFdpdGhMb2NhbEluc3RhbmNlKCk7CisgICAgdm9pZCBhdHRlbXB0VG9EZWNyeXB0V2l0aElu
c3RhbmNlKENETUluc3RhbmNlJikgZmluYWw7CiAgICAgdm9pZCBpbml0aWFsaXphdGlvbkRhdGFF
bmNvdW50ZXJlZChJbml0RGF0YSYmKTsKICAgICB2b2lkIHNldFdhaXRpbmdGb3JLZXkoYm9vbCk7
CiAgICAgYm9vbCB3YWl0aW5nRm9yS2V5KCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL1dlYktpdENvbW1v
bkVuY3J5cHRpb25EZWNyeXB0b3JHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9XZWJLaXRDb21tb25FbmNyeXB0aW9uRGVjcnlwdG9y
R1N0cmVhbWVyLmNwcAppbmRleCA4YmZmMzhjMDM5YmI5ZjExMGE4NTVjZjE4MWNlN2NlN2M3MThk
NjVhLi4xNzM0Mzk5NDQzOThkODc3MzMwZTQwYjU5MjU0MGZhMDVmZTY3NDZjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL1dlYktpdENv
bW1vbkVuY3J5cHRpb25EZWNyeXB0b3JHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvV2ViS2l0Q29tbW9uRW5jcnlwdGlvbkRl
Y3J5cHRvckdTdHJlYW1lci5jcHAKQEAgLTMxLDEwICszMSwxMiBAQAogI2luY2x1ZGUgPHd0Zi9Q
cmludFN0cmVhbS5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAKK3VzaW5nIFdlYkNvcmU6
OkNETUluc3RhbmNlOworCiAjZGVmaW5lIFdFQktJVF9NRURJQV9DRU5DX0RFQ1JZUFRfR0VUX1BS
SVZBVEUob2JqKSAoR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKChvYmopLCBXRUJLSVRfVFlQ
RV9NRURJQV9DRU5DX0RFQ1JZUFQsIFdlYktpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5cHRQ
cml2YXRlKSkKIHN0cnVjdCBfV2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdFByaXZh
dGUgewogICAgIEdSZWZQdHI8R3N0RXZlbnQ+IHByb3RlY3Rpb25FdmVudDsKLSAgICBSZWZQdHI8
V2ViQ29yZTo6Q0RNSW5zdGFuY2U+IGNkbUluc3RhbmNlOworICAgIFJlZlB0cjxDRE1JbnN0YW5j
ZT4gY2RtSW5zdGFuY2U7CiAgICAgYm9vbCBrZXlSZWNlaXZlZDsKICAgICBib29sIHdhaXRpbmdG
b3JLZXkgeyBmYWxzZSB9OwogICAgIExvY2sgbXV0ZXg7CkBAIC00MiwxMiArNDQsMTMgQEAgc3Ry
dWN0IF9XZWJLaXRNZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0UHJpdmF0ZSB7CiB9OwogCiBz
dGF0aWMgR3N0U3RhdGVDaGFuZ2VSZXR1cm4gd2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVj
cnlwdG9yQ2hhbmdlU3RhdGUoR3N0RWxlbWVudCosIEdzdFN0YXRlQ2hhbmdlIHRyYW5zaXRpb24p
Oworc3RhdGljIHZvaWQgd2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdG9yU2V0Q29u
dGV4dChHc3RFbGVtZW50KiwgR3N0Q29udGV4dCopOwogc3RhdGljIHZvaWQgd2ViS2l0TWVkaWFD
b21tb25FbmNyeXB0aW9uRGVjcnlwdG9yRmluYWxpemUoR09iamVjdCopOwogc3RhdGljIEdzdENh
cHMqIHdlYmtpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5cHRUcmFuc2Zvcm1DYXBzKEdzdEJh
c2VUcmFuc2Zvcm0qLCBHc3RQYWREaXJlY3Rpb24sIEdzdENhcHMqLCBHc3RDYXBzKik7CiBzdGF0
aWMgR3N0Rmxvd1JldHVybiB3ZWJraXRNZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0VHJhbnNm
b3JtSW5QbGFjZShHc3RCYXNlVHJhbnNmb3JtKiwgR3N0QnVmZmVyKik7CiBzdGF0aWMgZ2Jvb2xl
YW4gd2Via2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdFNpbmtFdmVudEhhbmRsZXIoR3N0
QmFzZVRyYW5zZm9ybSosIEdzdEV2ZW50Kik7CiBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0TWVkaWFD
b21tb25FbmNyeXB0aW9uRGVjcnlwdG9yUXVlcnlIYW5kbGVyKEdzdEJhc2VUcmFuc2Zvcm0qLCBH
c3RQYWREaXJlY3Rpb24sIEdzdFF1ZXJ5Kik7Ci0KK3N0YXRpYyBib29sIHdlYmtpdE1lZGlhQ29t
bW9uRW5jcnlwdGlvbkRlY3J5cHRJc0NETUluc3RhbmNlQXZhaWxhYmxlKFdlYktpdE1lZGlhQ29t
bW9uRW5jcnlwdGlvbkRlY3J5cHQqKTsKIAogR1NUX0RFQlVHX0NBVEVHT1JZX1NUQVRJQyh3ZWJr
aXRfbWVkaWFfY29tbW9uX2VuY3J5cHRpb25fZGVjcnlwdF9kZWJ1Z19jYXRlZ29yeSk7CiAjZGVm
aW5lIEdTVF9DQVRfREVGQVVMVCB3ZWJraXRfbWVkaWFfY29tbW9uX2VuY3J5cHRpb25fZGVjcnlw
dF9kZWJ1Z19jYXRlZ29yeQpAQCAtNjUsNiArNjgsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfbWVk
aWFfY29tbW9uX2VuY3J5cHRpb25fZGVjcnlwdF9jbGFzc19pbml0KFdlYktpdE1lZGlhQ29tbW9u
RQogCiAgICAgR3N0RWxlbWVudENsYXNzKiBlbGVtZW50Q2xhc3MgPSBHU1RfRUxFTUVOVF9DTEFT
UyhrbGFzcyk7CiAgICAgZWxlbWVudENsYXNzLT5jaGFuZ2Vfc3RhdGUgPSBHU1RfREVCVUdfRlVO
Q1BUUih3ZWJLaXRNZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0b3JDaGFuZ2VTdGF0ZSk7Cisg
ICAgZWxlbWVudENsYXNzLT5zZXRfY29udGV4dCA9IEdTVF9ERUJVR19GVU5DUFRSKHdlYktpdE1l
ZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5cHRvclNldENvbnRleHQpOwogCiAgICAgR3N0QmFzZVRy
YW5zZm9ybUNsYXNzKiBiYXNlVHJhbnNmb3JtQ2xhc3MgPSBHU1RfQkFTRV9UUkFOU0ZPUk1fQ0xB
U1Moa2xhc3MpOwogICAgIGJhc2VUcmFuc2Zvcm1DbGFzcy0+dHJhbnNmb3JtX2lwID0gR1NUX0RF
QlVHX0ZVTkNQVFIod2Via2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdFRyYW5zZm9ybUlu
UGxhY2UpOwpAQCAtMjA5LDcgKzIxMyw2IEBAIHN0YXRpYyBHc3RGbG93UmV0dXJuIHdlYmtpdE1l
ZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5cHRUcmFuc2Zvcm1JblBsYWNlKEdzdEJhc2VUCiAgICAg
ICAgIC8vIFNlbmQgImRybS1jZG0taW5zdGFuY2UtbmVlZGVkIiBtZXNzYWdlIHRvIHRoZSBwbGF5
ZXIgdG8gcmVzZW5kIHRoZSBDRE1JbnN0YW5jZSBpZiBhdmFpbGFibGUgYW5kIGluZm9ybSB3ZSBh
cmUgd2FpdGluZyBmb3Iga2V5LgogICAgICAgICBwcml2LT53YWl0aW5nRm9yS2V5ID0gdHJ1ZTsK
ICAgICAgICAgZ3N0X2VsZW1lbnRfcG9zdF9tZXNzYWdlKEdTVF9FTEVNRU5UKHNlbGYpLCBnc3Rf
bWVzc2FnZV9uZXdfZWxlbWVudChHU1RfT0JKRUNUKHNlbGYpLCBnc3Rfc3RydWN0dXJlX25ld19l
bXB0eSgiZHJtLXdhaXRpbmctZm9yLWtleSIpKSk7Ci0gICAgICAgIGdzdF9lbGVtZW50X3Bvc3Rf
bWVzc2FnZShHU1RfRUxFTUVOVChzZWxmKSwgZ3N0X21lc3NhZ2VfbmV3X2VsZW1lbnQoR1NUX09C
SkVDVChzZWxmKSwgZ3N0X3N0cnVjdHVyZV9uZXdfZW1wdHkoImRybS1jZG0taW5zdGFuY2UtbmVl
ZGVkIikpKTsKIAogICAgICAgICBwcml2LT5jb25kaXRpb24ud2FpdEZvcihwcml2LT5tdXRleCwg
U2Vjb25kcyg1KSwgW3ByaXZdIHsKICAgICAgICAgICAgIHJldHVybiBwcml2LT5rZXlSZWNlaXZl
ZDsKQEAgLTI5OSw2ICszMDIsMjcgQEAgc3RhdGljIEdzdEZsb3dSZXR1cm4gd2Via2l0TWVkaWFD
b21tb25FbmNyeXB0aW9uRGVjcnlwdFRyYW5zZm9ybUluUGxhY2UoR3N0QmFzZVQKICAgICByZXR1
cm4gR1NUX0ZMT1dfT0s7CiB9CiAKK3N0YXRpYyBib29sIHdlYmtpdE1lZGlhQ29tbW9uRW5jcnlw
dGlvbkRlY3J5cHRJc0NETUluc3RhbmNlQXZhaWxhYmxlKFdlYktpdE1lZGlhQ29tbW9uRW5jcnlw
dGlvbkRlY3J5cHQqIHNlbGYpCit7CisgICAgV2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVj
cnlwdFByaXZhdGUqIHByaXYgPSBXRUJLSVRfTUVESUFfQ0VOQ19ERUNSWVBUX0dFVF9QUklWQVRF
KHNlbGYpOworCisgICAgQVNTRVJUKHByaXYtPm11dGV4LmlzTG9ja2VkKCkpOworCisgICAgaWYg
KCFwcml2LT5jZG1JbnN0YW5jZSkgeworICAgICAgICBHUmVmUHRyPEdzdENvbnRleHQ+IGNvbnRl
eHQgPSBhZG9wdEdSZWYoZ3N0X2VsZW1lbnRfZ2V0X2NvbnRleHQoR1NUX0VMRU1FTlQoc2VsZiks
ICJkcm0tY2RtLWluc3RhbmNlIikpOworICAgICAgICBpZiAoY29udGV4dCkgeworICAgICAgICAg
ICAgY29uc3QgR1ZhbHVlKiB2YWx1ZSA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3ZhbHVlKGdzdF9jb250
ZXh0X2dldF9zdHJ1Y3R1cmUoY29udGV4dC5nZXQoKSksICJjZG0taW5zdGFuY2UiKTsKKyAgICAg
ICAgICAgIHByaXYtPmNkbUluc3RhbmNlID0gdmFsdWUgPyByZWludGVycHJldF9jYXN0PENETUlu
c3RhbmNlKj4oZ192YWx1ZV9nZXRfcG9pbnRlcih2YWx1ZSkpIDogbnVsbHB0cjsKKyAgICAgICAg
ICAgIGlmIChwcml2LT5jZG1JbnN0YW5jZSkKKyAgICAgICAgICAgICAgICBHU1RfREVCVUdfT0JK
RUNUKHNlbGYsICJyZWNlaXZlZCBuZXcgQ0RNSW5zdGFuY2UgJXAiLCBwcml2LT5jZG1JbnN0YW5j
ZS5nZXQoKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgR1NUX1RSQUNFX09C
SkVDVChzZWxmLCAiZm9ybWVyIGluc3RhbmNlIHdhcyBkZXRhY2hlZCIpOworICAgICAgICB9Cisg
ICAgfQorCisgICAgR1NUX1RSQUNFX09CSkVDVChzZWxmLCAiQ0RNSW5zdGFuY2UgYXZhaWxhYmxl
ICVzIiwgYm9vbEZvclByaW50aW5nKHByaXYtPmNkbUluc3RhbmNlLmdldCgpKSk7CisgICAgcmV0
dXJuIHByaXYtPmNkbUluc3RhbmNlOworfQogCiBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0TWVkaWFD
b21tb25FbmNyeXB0aW9uRGVjcnlwdFNpbmtFdmVudEhhbmRsZXIoR3N0QmFzZVRyYW5zZm9ybSog
dHJhbnMsIEdzdEV2ZW50KiBldmVudCkKIHsKQEAgLTMwNyw3ICszMzEsNiBAQCBzdGF0aWMgZ2Jv
b2xlYW4gd2Via2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdFNpbmtFdmVudEhhbmRsZXIo
R3N0QmFzZVRyYW5zZgogICAgIFdlYktpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5cHRDbGFz
cyoga2xhc3MgPSBXRUJLSVRfTUVESUFfQ0VOQ19ERUNSWVBUX0dFVF9DTEFTUyhzZWxmKTsKICAg
ICBnYm9vbGVhbiByZXN1bHQgPSBGQUxTRTsKIAotCiAgICAgc3dpdGNoIChHU1RfRVZFTlRfVFlQ
RShldmVudCkpIHsKICAgICBjYXNlIEdTVF9FVkVOVF9DVVNUT01fRE9XTlNUUkVBTV9PT0I6IHsK
ICAgICAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xOTEzNTUKQEAgLTMxNiwxNCArMzM5LDEyIEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRNZWRp
YUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0U2lua0V2ZW50SGFuZGxlcihHc3RCYXNlVHJhbnNmCiAg
ICAgICAgIC8vIHByZWZlcnJlZCBzeXN0ZW0gSUQgY29udGV4dCBpcyBzZXQsIGFueSBmdXR1cmUg
cHJvdGVjdGlvbgogICAgICAgICAvLyBldmVudHMgd2lsbCBub3QgYmUgaGFuZGxlZCBieSB0aGUg
ZGVtdXhlciwgc28gdGhlIG11c3QgYmUKICAgICAgICAgLy8gaGFuZGxlZCBpbiBoZXJlLgotICAg
ICAgICBjb25zdCBHc3RTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdzdF9ldmVudF9nZXRfc3RydWN0
dXJlKGV2ZW50KTsKLSAgICAgICAgZ3N0X3N0cnVjdHVyZV9nZXQoc3RydWN0dXJlLCAiY2RtLWlu
c3RhbmNlIiwgR19UWVBFX1BPSU5URVIsICZwcml2LT5jZG1JbnN0YW5jZSwgbnVsbHB0cik7Ci0g
ICAgICAgIGlmICghcHJpdi0+Y2RtSW5zdGFuY2UpIHsKLSAgICAgICAgICAgIEdTVF9FUlJPUl9P
QkpFQ1Qoc2VsZiwgIk5vIENETSBpbnN0YW5jZSByZWNlaXZlZCIpOworICAgICAgICBMb2NrSG9s
ZGVyIGxvY2tlcihwcml2LT5tdXRleCk7CisgICAgICAgIGlmICghd2Via2l0TWVkaWFDb21tb25F
bmNyeXB0aW9uRGVjcnlwdElzQ0RNSW5zdGFuY2VBdmFpbGFibGUoc2VsZikpIHsKKyAgICAgICAg
ICAgIEdTVF9FUlJPUl9PQkpFQ1Qoc2VsZiwgIk5vIENETSBpbnN0YW5jZSBhdmFpbGFibGUiKTsK
ICAgICAgICAgICAgIHJlc3VsdCA9IEZBTFNFOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KLSAgICAgICAgR1NUX0RFQlVHX09CSkVDVChzZWxmLCAicmVjZWl2ZWQgYSBjZG0gaW5zdGFu
Y2UgJXAiLCBwcml2LT5jZG1JbnN0YW5jZS5nZXQoKSk7CiAKICAgICAgICAgaWYgKGtsYXNzLT5o
YW5kbGVLZXlSZXNwb25zZShzZWxmLCBldmVudCkpIHsKICAgICAgICAgICAgIEdTVF9ERUJVR19P
QkpFQ1Qoc2VsZiwgImtleSByZWNlaXZlZCIpOwpAQCAtMzc0LDQgKzM5NSwyMCBAQCBzdGF0aWMg
R3N0U3RhdGVDaGFuZ2VSZXR1cm4gd2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdG9y
Q2hhbmdlU3RhdGUoR3N0RQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3N0YXRpYyB2b2lkIHdl
YktpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5cHRvclNldENvbnRleHQoR3N0RWxlbWVudCog
ZWxlbWVudCwgR3N0Q29udGV4dCogY29udGV4dCkKK3sKKyAgICBXZWJLaXRNZWRpYUNvbW1vbkVu
Y3J5cHRpb25EZWNyeXB0KiBzZWxmID0gV0VCS0lUX01FRElBX0NFTkNfREVDUllQVChlbGVtZW50
KTsKKyAgICBXZWJLaXRNZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0UHJpdmF0ZSogcHJpdiA9
IFdFQktJVF9NRURJQV9DRU5DX0RFQ1JZUFRfR0VUX1BSSVZBVEUoc2VsZik7CisKKyAgICBpZiAo
Z3N0X2NvbnRleHRfaGFzX2NvbnRleHRfdHlwZShjb250ZXh0LCAiZHJtLWNkbS1pbnN0YW5jZSIp
KSB7CisgICAgICAgIGNvbnN0IEdWYWx1ZSogdmFsdWUgPSBnc3Rfc3RydWN0dXJlX2dldF92YWx1
ZShnc3RfY29udGV4dF9nZXRfc3RydWN0dXJlKGNvbnRleHQpLCAiY2RtLWluc3RhbmNlIik7Cisg
ICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKHByaXYtPm11dGV4KTsKKyAgICAgICAgcHJpdi0+Y2Rt
SW5zdGFuY2UgPSB2YWx1ZSA/IHJlaW50ZXJwcmV0X2Nhc3Q8Q0RNSW5zdGFuY2UqPihnX3ZhbHVl
X2dldF9wb2ludGVyKHZhbHVlKSkgOiBudWxscHRyOworICAgICAgICBHU1RfREVCVUdfT0JKRUNU
KHNlbGYsICJyZWNlaXZlZCBuZXcgQ0RNSW5zdGFuY2UgJXAiLCBwcml2LT5jZG1JbnN0YW5jZS5n
ZXQoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBHU1RfRUxFTUVOVF9DTEFTUyhw
YXJlbnRfY2xhc3MpLT5zZXRfY29udGV4dChlbGVtZW50LCBjb250ZXh0KTsKK30KKwogI2VuZGlm
IC8vIEVOQUJMRShFTkNSWVBURURfTUVESUEpICYmIFVTRShHU1RSRUFNRVIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5jcHAKaW5k
ZXggYjg2YjQ2ODM2NzU5NTUyNTI1ZmM5YWFiOGRkNjNhOTc1OGFkNDYwZi4uYmI5M2FkNzI4OGY0
ZjkzZmJmNDU4OTQ4Nzc4OTc5MWY2MmNhNGMyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJNU0UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNwcApAQCAtOTA5LDExICs5MDks
MTEgQEAgTWVkaWFUaW1lIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRTo6bWF4TWVkaWFU
aW1lU2Vla2FibGUoKSBjb25zdAogfQogCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKLXZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjphdHRlbXB0VG9EZWNyeXB0V2l0aElu
c3RhbmNlKENETUluc3RhbmNlJiBpbnN0YW5jZSkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyTVNFOjphdHRlbXB0VG9EZWNyeXB0V2l0aExvY2FsSW5zdGFuY2UoKQogewotICAgIGlm
IChpczxDRE1JbnN0YW5jZUNsZWFyS2V5PihpbnN0YW5jZSkpIHsKLSAgICAgICAgYXV0byYgY2tJ
bnN0YW5jZSA9IGRvd25jYXN0PENETUluc3RhbmNlQ2xlYXJLZXk+KGluc3RhbmNlKTsKLSAgICAg
ICAgaWYgKGNrSW5zdGFuY2Uua2V5cygpLmlzRW1wdHkoKSkKKyAgICBpZiAoaXM8Q0RNSW5zdGFu
Y2VDbGVhcktleT4oKm1fY2RtSW5zdGFuY2UpKSB7CisgICAgICAgIGF1dG8mIGNsZWFya2V5Q0RN
SW5zdGFuY2UgPSBkb3duY2FzdDxDRE1JbnN0YW5jZUNsZWFyS2V5PigqbV9jZG1JbnN0YW5jZSk7
CisgICAgICAgIGlmIChjbGVhcmtleUNETUluc3RhbmNlLmtleXMoKS5pc0VtcHR5KCkpCiAgICAg
ICAgICAgICByZXR1cm47CiAKICAgICAgICAgR1ZhbHVlIGtleUlETGlzdCA9IEdfVkFMVUVfSU5J
VCwga2V5VmFsdWVMaXN0ID0gR19WQUxVRV9JTklUOwpAQCAtOTMwLDcgKzkzMCw3IEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjphdHRlbXB0VG9EZWNyeXB0V2l0aEluc3Rh
bmNlKENETUluc3RhbmNlJiBpCiAgICAgICAgICAgICAgICAgZ3N0X3ZhbHVlX2xpc3RfYXBwZW5k
X2FuZF90YWtlX3ZhbHVlKHZhbHVlTGlzdCwgYnVmZmVyVmFsdWUpOwogICAgICAgICAgICAgfTsK
IAotICAgICAgICBmb3IgKGF1dG8mIGtleSA6IGNrSW5zdGFuY2Uua2V5cygpKSB7CisgICAgICAg
IGZvciAoYXV0byYga2V5IDogY2xlYXJrZXlDRE1JbnN0YW5jZS5rZXlzKCkpIHsKICAgICAgICAg
ICAgIGFwcGVuZEJ1ZmZlcigma2V5SURMaXN0LCAqa2V5LmtleUlERGF0YSk7CiAgICAgICAgICAg
ICBhcHBlbmRCdWZmZXIoJmtleVZhbHVlTGlzdCwgKmtleS5rZXlWYWx1ZURhdGEpOwogICAgICAg
ICB9CkBAIC05MzgsNyArOTM4LDYgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJN
U0U6OmF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UoQ0RNSW5zdGFuY2UmIGkKICAgICAgICAg
R1VuaXF1ZVB0cjxHc3RTdHJ1Y3R1cmU+IHN0cnVjdHVyZShnc3Rfc3RydWN0dXJlX25ld19lbXB0
eSgiZHJtLWNpcGhlci1jbGVhcmtleSIpKTsKICAgICAgICAgZ3N0X3N0cnVjdHVyZV9zZXRfdmFs
dWUoc3RydWN0dXJlLmdldCgpLCAia2V5LWlkcyIsICZrZXlJRExpc3QpOwogICAgICAgICBnc3Rf
c3RydWN0dXJlX3NldF92YWx1ZShzdHJ1Y3R1cmUuZ2V0KCksICJrZXktdmFsdWVzIiwgJmtleVZh
bHVlTGlzdCk7Ci0gICAgICAgIGdzdF9zdHJ1Y3R1cmVfc2V0KHN0cnVjdHVyZS5nZXQoKSwgImNk
bS1pbnN0YW5jZSIsIEdfVFlQRV9QT0lOVEVSLCAmaW5zdGFuY2UsIG51bGxwdHIpOwogCiAgICAg
ICAgIGdzdF9lbGVtZW50X3NlbmRfZXZlbnQobV9wbGF5YmFja1BpcGVsaW5lLT5waXBlbGluZSgp
LCBnc3RfZXZlbnRfbmV3X2N1c3RvbShHU1RfRVZFTlRfQ1VTVE9NX0RPV05TVFJFQU1fT09CLCBz
dHJ1Y3R1cmUucmVsZWFzZSgpKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJNU0UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2Uv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmgKaW5kZXggMjI1N2U5ZTY4MzBhY2IxOGM2
ZjA4ZjcxODZiZjc3NThiNzI3MzVkNy4uNWI1NjgyZjY0YjVkMzU0OTRlODM5YjdhMzk0NGJhN2U0
MDllZmMxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lck1TRS5oCkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9v
bCBzdXBwb3J0c0FsbENvZGVjcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgY29kZWNzKTsKIAogI2lm
IEVOQUJMRShFTkNSWVBURURfTUVESUEpCi0gICAgdm9pZCBhdHRlbXB0VG9EZWNyeXB0V2l0aElu
c3RhbmNlKENETUluc3RhbmNlJikgZmluYWw7CisgICAgdm9pZCBhdHRlbXB0VG9EZWNyeXB0V2l0
aExvY2FsSW5zdGFuY2UoKSBmaW5hbDsKICNlbmRpZgogCiBwcml2YXRlOgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>356023</attachid>
            <date>2018-11-29 10:38:47 -0800</date>
            <delta_ts>2018-11-30 07:44:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192075-20181129193846.patch</filename>
            <type>text/plain</type>
            <size>20003</size>
            <attacher name="Xabier Rodríguez Calvar">calvaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4NjA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2Q1MmVhM2Q4YWVhNmFk
MTQzNzY0MTg3OTA3ZmI5ZThjN2YwNjNmNC4uYzA1NWQyYzg2MTRhNWQ2MTU3MWU5ZmRiNTdhNTgx
NjdjZmM2ZmQ2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDE4LTExLTI5ICBYYWJp
ZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dT
dHJlYW1lcl1bRU1FXSBDRE1JbnN0YW5jZSBzaG91bGQgYmUgc2hpcHBlZCBhcyBhIEdzdENvbnRl
eHQgdG8gdGhlIGRlY3J5cHRvcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5MjA3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFNvIGZhciwgd2Ugd2VyZSBzaGlwcGluZyB0aGUgQ0RNSW5zdGFuY2UgaW4g
YW4gZXZlbnQgdG8gdGhlCisgICAgICAgIGRlY3J5cHRvcnMgYW5kIHRoZXkgd2VyZSByZXF1ZXN0
aW5nIGl0IHdpdGggYnVzIG1lc3NhZ2VzIHdoZW4gaXQKKyAgICAgICAgd2FzIG5vdCBmb3VuZC4g
Tm93IHdlIHNoaXAgaXQgd2l0aCBhIEdzdENvbnRleHQgdGhhdCBpcyBzZXQgdG8gdGhlCisgICAg
ICAgIHBpcGVsaW5lIGFuZCByZWFkIGZyb20gdGhlIGRlY3J5cHRvcnMsIHdoaWNoIGlzIG5vdyBh
bHdheXMKKyAgICAgICAgYXZhaWxhYmxlLgorCisgICAgICAgIEFzIGEgY29uc2VxdWVuY2Ugb2Yg
Y2hhbmdpbmcgdGhpcyBmbG93LCB0aGUgYXR0ZW1wdFRvRGVjcnlwdCBvbmUKKyAgICAgICAgd2Fz
IGFmZmVjdGVkIGFzIHdlbGwgYmVjYXVzZSBpdCB3YXMgdGllZCB0byBDRE1JbnN0YW5jZQorICAg
ICAgICBzaGlwbWVudC4gQSB3b3JrYXJvdW5kIHdhcyBhZGRlZDogd2hlbiB0aGUgZGVjcnlwdG9y
cyBzZW5kIHRoZQorICAgICAgICB3YWl0aW5nRm9yS2V5LCBhbiBhdHRlbXB0VG9EZWNyeXB0IHdp
bGwgYmUgcGVyZm9ybWVkLiBBIEZJWE1FIHdhcworICAgICAgICBhZGRlZCBmb3IgdGhpcy4gQSBz
dWJjb25zZXF1ZW5jZSBpcyB0aGF0CisgICAgICAgIGF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFu
Y2UgaXMgcmV3b3JrZWQgdG8gcmVseSBhbHdheXMgaW4KKyAgICAgICAgYXR0ZW1wdFRvRGVjcnlw
dFdpdGhMb2NhbCBpbnN0YW5jZSwgdGhlIGZvcm1lciBiZWNvbWVzIGZpbmFsIGFuZAorICAgICAg
ICB0aGUgbGF0dGVyIHZpcnR1YWwuCisKKyAgICAgICAgVGhpcyBpcyBhIHJld29yaywgbm8gbmV3
IHRlc3RzIG5lZWRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpoYW5kbGVNZXNzYWdlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpjZG1J
bnN0YW5jZUF0dGFjaGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lckJhc2U6OmNkbUluc3RhbmNlRGV0YWNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6YXR0ZW1wdFRvRGVjcnlwdFdpdGhMb2NhbElu
c3RhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJh
c2U6OmRpc3BhdGNoQ0RNSW5zdGFuY2UpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9XZWJLaXRDb21tb25FbmNyeXB0
aW9uRGVjcnlwdG9yR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKHdlYmtpdF9tZWRpYV9jb21tb25f
ZW5jcnlwdGlvbl9kZWNyeXB0X2NsYXNzX2luaXQpOgorICAgICAgICAod2Via2l0TWVkaWFDb21t
b25FbmNyeXB0aW9uRGVjcnlwdFRyYW5zZm9ybUluUGxhY2UpOgorICAgICAgICAod2Via2l0TWVk
aWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdElzQ0RNSW5zdGFuY2VBdmFpbGFibGUpOgorICAgICAg
ICAod2Via2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdFNpbmtFdmVudEhhbmRsZXIpOgor
ICAgICAgICAod2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdG9yU2V0Q29udGV4dCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJNU0UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyTVNFOjphdHRlbXB0VG9EZWNyeXB0V2l0aExvY2FsSW5zdGFuY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjphdHRlbXB0VG9E
ZWNyeXB0V2l0aEluc3RhbmNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5oOgorCiAyMDE4
LTExLTI3ICBSb2IgQnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CiAKICAgICAgICAgQmxvY2sgbW9y
ZSBwb3J0cyAoNDI3LCA1NDgsIDY2OTcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDE1MDNiNTQ4MTMyZmQ3ZDljZTBlMDkwNWIyYjhkZGQ0
YWY3MDRiZjcuLmI0MWRhODdlYmE2ZmVhOTk2MjI5NTkyZGQyMDhlMzM3ZTI0YmQ1NmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC0xMzI5
LDEyICsxMzI5LDEzIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpoYW5kbGVN
ZXNzYWdlKEdzdE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgIGVsc2UgaWYgKGdzdF9zdHJ1Y3R1
cmVfaGFzX25hbWUoc3RydWN0dXJlLCAiZHJtLXdhaXRpbmctZm9yLWtleSIpKSB7CiAgICAgICAg
ICAgICBHU1RfREVCVUdfT0JKRUNUKHBpcGVsaW5lKCksICJkcm0td2FpdGluZy1mb3Ita2V5IG1l
c3NhZ2UgZnJvbSAlcyIsIEdTVF9NRVNTQUdFX1NSQ19OQU1FKG1lc3NhZ2UpKTsKICAgICAgICAg
ICAgIHNldFdhaXRpbmdGb3JLZXkodHJ1ZSk7CisgICAgICAgICAgICAvLyBGSVhNRTogVGhlIGRl
Y3J5cHRvcnMgc2hvdWxkIGJlIGFibGUgdG8gYXR0ZW1wdCB0byBkZWNyeXB0IGFmdGVyIGJlaW5n
IGNyZWF0ZWQgYW5kIGxpbmtlZCBpbiBhIHBpcGVsaW5lIGJ1dCBjdXJyZW50bHkgdGhleSBhcmUg
bm90IGFuZCBjdXJyZW50CisgICAgICAgICAgICAvLyBhcmNoaXRlY3R1cmUgZG9lcyBub3QgbWFr
ZSB0aGlzIHZlcnkgZWFzeS4gRm9ydHVuYXRlbHksIHRoZSBhcmNoIHdpbGwgY2hhbmdlIHNvb24g
YW5kIGl0IGRvZXMgbm90IHBheSBvZmYgdG8gZml4IHRoaXMgbm93IHdpdGggc29tZXRoaW5nIHRo
YXQgY291bGQgYmUKKyAgICAgICAgICAgIC8vIG1vcmUgY29udm9sdXRlZC4gSW4gdGhlIG1lYW50
aW1lLCBmb3JjZSBhdHRlbXB0IHRvIGRlY3J5cHQgd2hlbiB0aGV5IGdldCBibG9ja2VkLgorICAg
ICAgICAgICAgYXR0ZW1wdFRvRGVjcnlwdFdpdGhMb2NhbEluc3RhbmNlKCk7CiAgICAgICAgIH0g
ZWxzZSBpZiAoZ3N0X3N0cnVjdHVyZV9oYXNfbmFtZShzdHJ1Y3R1cmUsICJkcm0ta2V5LXJlY2Vp
dmVkIikpIHsKICAgICAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1QocGlwZWxpbmUoKSwgImRybS1r
ZXktcmVjZWl2ZWQgbWVzc2FnZSBmcm9tICVzIiwgR1NUX01FU1NBR0VfU1JDX05BTUUobWVzc2Fn
ZSkpOwogICAgICAgICAgICAgc2V0V2FpdGluZ0ZvcktleShmYWxzZSk7Ci0gICAgICAgIH0gZWxz
ZSBpZiAoZ3N0X3N0cnVjdHVyZV9oYXNfbmFtZShzdHJ1Y3R1cmUsICJkcm0tY2RtLWluc3RhbmNl
LW5lZWRlZCIpKSB7Ci0gICAgICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHBpcGVsaW5lKCksICJk
cm0tY2RtLWluc3RhbmNlLW5lZWRlZCBtZXNzYWdlIGZyb20gJXMiLCBHU1RfTUVTU0FHRV9TUkNf
TkFNRShtZXNzYWdlKSk7Ci0gICAgICAgICAgICBkaXNwYXRjaENETUluc3RhbmNlKCk7CiAgICAg
ICAgIH0KICNlbmRpZgogICAgICAgICBlbHNlIGlmIChnc3Rfc3RydWN0dXJlX2hhc19uYW1lKHN0
cnVjdHVyZSwgImh0dHAtaGVhZGVycyIpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKaW5kZXggNDcxYjkzMzk1Mzg0YjIwYzE0ZGFj
OWQ1OTZiZDgyOGEwNTQxNmQyYi4uMWJmZDVkODZjY2ZlOGU1NmYyOTRhMTgzNTlkMTc1ZTdjYTdj
MmFiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJCYXNlLmNwcApAQCAtMTE5NywyMyArMTE5Nyw0NiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lckJhc2U6OmluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKEluaXREYXRhJiYg
aQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OmNkbUluc3RhbmNlQXR0
YWNoZWQoQ0RNSW5zdGFuY2UmIGluc3RhbmNlKQogewotICAgIGlmIChtX2NkbUluc3RhbmNlICE9
ICZpbnN0YW5jZSkgewotICAgICAgICBtX2NkbUluc3RhbmNlID0gJmluc3RhbmNlOwotICAgICAg
ICBHU1RfREVCVUdfT0JKRUNUKHBpcGVsaW5lKCksICJDRE0gaW5zdGFuY2UgJXAgc2V0IiwgbV9j
ZG1JbnN0YW5jZS5nZXQoKSk7Ci0gICAgICAgIG1fcHJvdGVjdGlvbkNvbmRpdGlvbi5ub3RpZnlB
bGwoKTsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgaWYgKG1fY2RtSW5zdGFu
Y2UgPT0gJmluc3RhbmNlKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIW1fcGlwZWxpbmUp
IHsKKyAgICAgICAgR1NUX0VSUk9SKCJubyBwaXBlbGluZSB5ZXQiKTsKKyAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKICAgICB9CisKKyAgICBtX2NkbUluc3Rh
bmNlID0gJmluc3RhbmNlOworCisgICAgR1JlZlB0cjxHc3RDb250ZXh0PiBjb250ZXh0ID0gYWRv
cHRHUmVmKGdzdF9jb250ZXh0X25ldygiZHJtLWNkbS1pbnN0YW5jZSIsIEZBTFNFKSk7CisgICAg
R3N0U3RydWN0dXJlKiBjb250ZXh0U3RydWN0dXJlID0gZ3N0X2NvbnRleHRfd3JpdGFibGVfc3Ry
dWN0dXJlKGNvbnRleHQuZ2V0KCkpOworICAgIGdzdF9zdHJ1Y3R1cmVfc2V0KGNvbnRleHRTdHJ1
Y3R1cmUsICJjZG0taW5zdGFuY2UiLCBHX1RZUEVfUE9JTlRFUiwgbV9jZG1JbnN0YW5jZS5nZXQo
KSwgbnVsbHB0cik7CisgICAgZ3N0X2VsZW1lbnRfc2V0X2NvbnRleHQoR1NUX0VMRU1FTlQobV9w
aXBlbGluZS5nZXQoKSksIGNvbnRleHQuZ2V0KCkpOworCisgICAgR1NUX0RFQlVHKCJDRE0gaW5z
dGFuY2UgJXAgZGlzcGF0Y2hlZCBhcyBjb250ZXh0IiwgbV9jZG1JbnN0YW5jZS5nZXQoKSk7CisK
KyAgICBtX3Byb3RlY3Rpb25Db25kaXRpb24ubm90aWZ5QWxsKCk7CiB9CiAKIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6Y2RtSW5zdGFuY2VEZXRhY2hlZChDRE1JbnN0YW5j
ZSYgaW5zdGFuY2UpCiB7Ci0jaWZkZWYgTkRFQlVHCi0gICAgVU5VU0VEX1BBUkFNKGluc3RhbmNl
KTsKLSNlbmRpZgotICAgIGlmIChtX2NkbUluc3RhbmNlID09ICZpbnN0YW5jZSkgewotICAgICAg
ICBHU1RfREVCVUdfT0JKRUNUKHBpcGVsaW5lKCksICJkZXRhY2hpbmcgQ0RNIGluc3RhbmNlICVw
IiwgbV9jZG1JbnN0YW5jZS5nZXQoKSk7Ci0gICAgICAgIG1fY2RtSW5zdGFuY2UgPSBudWxscHRy
OwotICAgICAgICBtX3Byb3RlY3Rpb25Db25kaXRpb24ubm90aWZ5QWxsKCk7CisgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKKworICAgIGlmIChtX2NkbUluc3RhbmNlICE9ICZpbnN0YW5jZSkg
eworICAgICAgICBHU1RfV0FSTklORygicGFzc2VkIENETUluc3RhbmNlICVwIGlzIGRpZmZlcmVu
dCBmcm9tIHN0b3JlZCBvbmUgJXAiLCAmaW5zdGFuY2UsIG1fY2RtSW5zdGFuY2UuZ2V0KCkpOwor
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KKwor
ICAgIEdTVF9ERUJVRygiZGV0YWNoaW5nIENETSBpbnN0YW5jZSAlcCwgc2V0dGluZyBlbXB0eSBj
b250ZXh0IiwgbV9jZG1JbnN0YW5jZS5nZXQoKSk7CisgICAgbV9jZG1JbnN0YW5jZSA9IG51bGxw
dHI7CisKKyAgICBHUmVmUHRyPEdzdENvbnRleHQ+IGNvbnRleHQgPSBhZG9wdEdSZWYoZ3N0X2Nv
bnRleHRfbmV3KCJkcm0tY2RtLWluc3RhbmNlIiwgRkFMU0UpKTsKKyAgICBnc3RfZWxlbWVudF9z
ZXRfY29udGV4dChHU1RfRUxFTUVOVChtX3BpcGVsaW5lLmdldCgpKSwgY29udGV4dC5nZXQoKSk7
CisKKyAgICBtX3Byb3RlY3Rpb25Db25kaXRpb24ubm90aWZ5QWxsKCk7CiB9CiAKIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6YXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5j
ZShDRE1JbnN0YW5jZSYgaW5zdGFuY2UpCkBAIC0xMjI1LDggKzEyNDgsNyBAQCB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OmF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2Uo
Q0RNSW5zdGFuY2UmCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6YXR0
ZW1wdFRvRGVjcnlwdFdpdGhMb2NhbEluc3RhbmNlKCkKIHsKLSAgICBib29sIGV2ZW50SGFuZGxl
ZCA9IGdzdF9lbGVtZW50X3NlbmRfZXZlbnQocGlwZWxpbmUoKSwgZ3N0X2V2ZW50X25ld19jdXN0
b20oR1NUX0VWRU5UX0NVU1RPTV9ET1dOU1RSRUFNX09PQiwKLSAgICAgICAgZ3N0X3N0cnVjdHVy
ZV9uZXcoImF0dGVtcHQtdG8tZGVjcnlwdCIsICJjZG0taW5zdGFuY2UiLCBHX1RZUEVfUE9JTlRF
UiwgbV9jZG1JbnN0YW5jZS5nZXQoKSwgbnVsbHB0cikpKTsKKyAgICBib29sIGV2ZW50SGFuZGxl
ZCA9IGdzdF9lbGVtZW50X3NlbmRfZXZlbnQocGlwZWxpbmUoKSwgZ3N0X2V2ZW50X25ld19jdXN0
b20oR1NUX0VWRU5UX0NVU1RPTV9ET1dOU1RSRUFNX09PQiwgZ3N0X3N0cnVjdHVyZV9uZXdfZW1w
dHkoImF0dGVtcHQtdG8tZGVjcnlwdCIpKSk7CiAgICAgR1NUX0RFQlVHKCJhdHRlbXB0aW5nIHRv
IGRlY3J5cHQsIGV2ZW50IGhhbmRsZWQgJXMiLCBib29sRm9yUHJpbnRpbmcoZXZlbnRIYW5kbGVk
KSk7CiB9CiAKQEAgLTEyMzcsMTMgKzEyNTksNiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lckJhc2U6OmRpc3BhdGNoRGVjcnlwdGlvbktleShHc3RCdWZmZXIqIGJ1ZmZlcikKICAg
ICBHU1RfVFJBQ0UoImVtaXR0ZWQgZGVjcnlwdGlvbiBjaXBoZXIga2V5IG9uIHBpcGVsaW5lLCBl
dmVudCBoYW5kbGVkICVzIiwgYm9vbEZvclByaW50aW5nKGV2ZW50SGFuZGxlZCkpOwogfQogCi12
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OmRpc3BhdGNoQ0RNSW5zdGFuY2Uo
KQotewotICAgIC8vIFRoaXMgZnVuY3Rpb24gZGlzcGF0Y2hlcyB0aGUgQ0RNSW5zdGFuY2UgaW4g
R1N0cmVhbWVyIHBsYXliYWNrIHBpcGVsaW5lLgotICAgIGlmIChtX2NkbUluc3RhbmNlKQotICAg
ICAgICBtX3BsYXllci0+YXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5jZShjb25zdF9jYXN0PENE
TUluc3RhbmNlJj4oKm1fY2RtSW5zdGFuY2UuZ2V0KCkpKTsKLX0KLQogdm9pZCBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXJCYXNlOjpoYW5kbGVQcm90ZWN0aW9uRXZlbnQoR3N0RXZlbnQqIGV2
ZW50KQogewogICAgIGlmIChtX2hhbmRsZWRQcm90ZWN0aW9uRXZlbnRzLmNvbnRhaW5zKEdTVF9F
VkVOVF9TRVFOVU0oZXZlbnQpKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJCYXNlLmgKaW5kZXggZTNlMzk2OWM5OTA2ZDQ3ZjQxYzYyMWQ4ZDc3OWZk
YjhkM2UzNWFmYi4uNDIzODFkMmY3N2I4YzE0YzE5ZDA3YWEwZmM2ZDdmODU5YzY5ZmFhYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oCkBA
IC0xNTAsOSArMTUwLDggQEAgcHVibGljOgogICAgIHZvaWQgY2RtSW5zdGFuY2VEZXRhY2hlZChD
RE1JbnN0YW5jZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlzcGF0Y2hEZWNyeXB0aW9uS2V5KEdz
dEJ1ZmZlciopOwogICAgIHZvaWQgaGFuZGxlUHJvdGVjdGlvbkV2ZW50KEdzdEV2ZW50Kik7Ci0g
ICAgdm9pZCBhdHRlbXB0VG9EZWNyeXB0V2l0aExvY2FsSW5zdGFuY2UoKTsKLSAgICB2b2lkIGF0
dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UoQ0RNSW5zdGFuY2UmKSBvdmVycmlkZTsKLSAgICB2
b2lkIGRpc3BhdGNoQ0RNSW5zdGFuY2UoKTsKKyAgICB2aXJ0dWFsIHZvaWQgYXR0ZW1wdFRvRGVj
cnlwdFdpdGhMb2NhbEluc3RhbmNlKCk7CisgICAgdm9pZCBhdHRlbXB0VG9EZWNyeXB0V2l0aElu
c3RhbmNlKENETUluc3RhbmNlJikgZmluYWw7CiAgICAgdm9pZCBpbml0aWFsaXphdGlvbkRhdGFF
bmNvdW50ZXJlZChJbml0RGF0YSYmKTsKICAgICB2b2lkIHNldFdhaXRpbmdGb3JLZXkoYm9vbCk7
CiAgICAgYm9vbCB3YWl0aW5nRm9yS2V5KCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL1dlYktpdENvbW1v
bkVuY3J5cHRpb25EZWNyeXB0b3JHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9XZWJLaXRDb21tb25FbmNyeXB0aW9uRGVjcnlwdG9y
R1N0cmVhbWVyLmNwcAppbmRleCA4YmZmMzhjMDM5YmI5ZjExMGE4NTVjZjE4MWNlN2NlN2M3MThk
NjVhLi4xN2ZkNDhjYzk1OTFlODE0ZTZhMzliNDcyNWYwOGY5MDk4MGU1ZjYxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL1dlYktpdENv
bW1vbkVuY3J5cHRpb25EZWNyeXB0b3JHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvV2ViS2l0Q29tbW9uRW5jcnlwdGlvbkRl
Y3J5cHRvckdTdHJlYW1lci5jcHAKQEAgLTMxLDEwICszMSwxMiBAQAogI2luY2x1ZGUgPHd0Zi9Q
cmludFN0cmVhbS5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAKK3VzaW5nIFdlYkNvcmU6
OkNETUluc3RhbmNlOworCiAjZGVmaW5lIFdFQktJVF9NRURJQV9DRU5DX0RFQ1JZUFRfR0VUX1BS
SVZBVEUob2JqKSAoR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKChvYmopLCBXRUJLSVRfVFlQ
RV9NRURJQV9DRU5DX0RFQ1JZUFQsIFdlYktpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5cHRQ
cml2YXRlKSkKIHN0cnVjdCBfV2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdFByaXZh
dGUgewogICAgIEdSZWZQdHI8R3N0RXZlbnQ+IHByb3RlY3Rpb25FdmVudDsKLSAgICBSZWZQdHI8
V2ViQ29yZTo6Q0RNSW5zdGFuY2U+IGNkbUluc3RhbmNlOworICAgIFJlZlB0cjxDRE1JbnN0YW5j
ZT4gY2RtSW5zdGFuY2U7CiAgICAgYm9vbCBrZXlSZWNlaXZlZDsKICAgICBib29sIHdhaXRpbmdG
b3JLZXkgeyBmYWxzZSB9OwogICAgIExvY2sgbXV0ZXg7CkBAIC00MiwxMiArNDQsMTMgQEAgc3Ry
dWN0IF9XZWJLaXRNZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0UHJpdmF0ZSB7CiB9OwogCiBz
dGF0aWMgR3N0U3RhdGVDaGFuZ2VSZXR1cm4gd2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVj
cnlwdG9yQ2hhbmdlU3RhdGUoR3N0RWxlbWVudCosIEdzdFN0YXRlQ2hhbmdlIHRyYW5zaXRpb24p
Oworc3RhdGljIHZvaWQgd2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdG9yU2V0Q29u
dGV4dChHc3RFbGVtZW50KiwgR3N0Q29udGV4dCopOwogc3RhdGljIHZvaWQgd2ViS2l0TWVkaWFD
b21tb25FbmNyeXB0aW9uRGVjcnlwdG9yRmluYWxpemUoR09iamVjdCopOwogc3RhdGljIEdzdENh
cHMqIHdlYmtpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5cHRUcmFuc2Zvcm1DYXBzKEdzdEJh
c2VUcmFuc2Zvcm0qLCBHc3RQYWREaXJlY3Rpb24sIEdzdENhcHMqLCBHc3RDYXBzKik7CiBzdGF0
aWMgR3N0Rmxvd1JldHVybiB3ZWJraXRNZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0VHJhbnNm
b3JtSW5QbGFjZShHc3RCYXNlVHJhbnNmb3JtKiwgR3N0QnVmZmVyKik7CiBzdGF0aWMgZ2Jvb2xl
YW4gd2Via2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdFNpbmtFdmVudEhhbmRsZXIoR3N0
QmFzZVRyYW5zZm9ybSosIEdzdEV2ZW50Kik7CiBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0TWVkaWFD
b21tb25FbmNyeXB0aW9uRGVjcnlwdG9yUXVlcnlIYW5kbGVyKEdzdEJhc2VUcmFuc2Zvcm0qLCBH
c3RQYWREaXJlY3Rpb24sIEdzdFF1ZXJ5Kik7Ci0KK3N0YXRpYyBib29sIHdlYmtpdE1lZGlhQ29t
bW9uRW5jcnlwdGlvbkRlY3J5cHRJc0NETUluc3RhbmNlQXZhaWxhYmxlKFdlYktpdE1lZGlhQ29t
bW9uRW5jcnlwdGlvbkRlY3J5cHQqKTsKIAogR1NUX0RFQlVHX0NBVEVHT1JZX1NUQVRJQyh3ZWJr
aXRfbWVkaWFfY29tbW9uX2VuY3J5cHRpb25fZGVjcnlwdF9kZWJ1Z19jYXRlZ29yeSk7CiAjZGVm
aW5lIEdTVF9DQVRfREVGQVVMVCB3ZWJraXRfbWVkaWFfY29tbW9uX2VuY3J5cHRpb25fZGVjcnlw
dF9kZWJ1Z19jYXRlZ29yeQpAQCAtNjUsNiArNjgsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfbWVk
aWFfY29tbW9uX2VuY3J5cHRpb25fZGVjcnlwdF9jbGFzc19pbml0KFdlYktpdE1lZGlhQ29tbW9u
RQogCiAgICAgR3N0RWxlbWVudENsYXNzKiBlbGVtZW50Q2xhc3MgPSBHU1RfRUxFTUVOVF9DTEFT
UyhrbGFzcyk7CiAgICAgZWxlbWVudENsYXNzLT5jaGFuZ2Vfc3RhdGUgPSBHU1RfREVCVUdfRlVO
Q1BUUih3ZWJLaXRNZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0b3JDaGFuZ2VTdGF0ZSk7Cisg
ICAgZWxlbWVudENsYXNzLT5zZXRfY29udGV4dCA9IEdTVF9ERUJVR19GVU5DUFRSKHdlYktpdE1l
ZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5cHRvclNldENvbnRleHQpOwogCiAgICAgR3N0QmFzZVRy
YW5zZm9ybUNsYXNzKiBiYXNlVHJhbnNmb3JtQ2xhc3MgPSBHU1RfQkFTRV9UUkFOU0ZPUk1fQ0xB
U1Moa2xhc3MpOwogICAgIGJhc2VUcmFuc2Zvcm1DbGFzcy0+dHJhbnNmb3JtX2lwID0gR1NUX0RF
QlVHX0ZVTkNQVFIod2Via2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdFRyYW5zZm9ybUlu
UGxhY2UpOwpAQCAtMjA5LDcgKzIxMyw2IEBAIHN0YXRpYyBHc3RGbG93UmV0dXJuIHdlYmtpdE1l
ZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5cHRUcmFuc2Zvcm1JblBsYWNlKEdzdEJhc2VUCiAgICAg
ICAgIC8vIFNlbmQgImRybS1jZG0taW5zdGFuY2UtbmVlZGVkIiBtZXNzYWdlIHRvIHRoZSBwbGF5
ZXIgdG8gcmVzZW5kIHRoZSBDRE1JbnN0YW5jZSBpZiBhdmFpbGFibGUgYW5kIGluZm9ybSB3ZSBh
cmUgd2FpdGluZyBmb3Iga2V5LgogICAgICAgICBwcml2LT53YWl0aW5nRm9yS2V5ID0gdHJ1ZTsK
ICAgICAgICAgZ3N0X2VsZW1lbnRfcG9zdF9tZXNzYWdlKEdTVF9FTEVNRU5UKHNlbGYpLCBnc3Rf
bWVzc2FnZV9uZXdfZWxlbWVudChHU1RfT0JKRUNUKHNlbGYpLCBnc3Rfc3RydWN0dXJlX25ld19l
bXB0eSgiZHJtLXdhaXRpbmctZm9yLWtleSIpKSk7Ci0gICAgICAgIGdzdF9lbGVtZW50X3Bvc3Rf
bWVzc2FnZShHU1RfRUxFTUVOVChzZWxmKSwgZ3N0X21lc3NhZ2VfbmV3X2VsZW1lbnQoR1NUX09C
SkVDVChzZWxmKSwgZ3N0X3N0cnVjdHVyZV9uZXdfZW1wdHkoImRybS1jZG0taW5zdGFuY2UtbmVl
ZGVkIikpKTsKIAogICAgICAgICBwcml2LT5jb25kaXRpb24ud2FpdEZvcihwcml2LT5tdXRleCwg
U2Vjb25kcyg1KSwgW3ByaXZdIHsKICAgICAgICAgICAgIHJldHVybiBwcml2LT5rZXlSZWNlaXZl
ZDsKQEAgLTI5OSw2ICszMDIsMzIgQEAgc3RhdGljIEdzdEZsb3dSZXR1cm4gd2Via2l0TWVkaWFD
b21tb25FbmNyeXB0aW9uRGVjcnlwdFRyYW5zZm9ybUluUGxhY2UoR3N0QmFzZVQKICAgICByZXR1
cm4gR1NUX0ZMT1dfT0s7CiB9CiAKK3N0YXRpYyBib29sIHdlYmtpdE1lZGlhQ29tbW9uRW5jcnlw
dGlvbkRlY3J5cHRJc0NETUluc3RhbmNlQXZhaWxhYmxlKFdlYktpdE1lZGlhQ29tbW9uRW5jcnlw
dGlvbkRlY3J5cHQqIHNlbGYpCit7CisgICAgV2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVj
cnlwdFByaXZhdGUqIHByaXYgPSBXRUJLSVRfTUVESUFfQ0VOQ19ERUNSWVBUX0dFVF9QUklWQVRF
KHNlbGYpOworCisgICAgQVNTRVJUKHByaXYtPm11dGV4LmlzTG9ja2VkKCkpOworCisgICAgaWYg
KCFwcml2LT5jZG1JbnN0YW5jZSkgeworICAgICAgICBHUmVmUHRyPEdzdENvbnRleHQ+IGNvbnRl
eHQgPSBhZG9wdEdSZWYoZ3N0X2VsZW1lbnRfZ2V0X2NvbnRleHQoR1NUX0VMRU1FTlQoc2VsZiks
ICJkcm0tY2RtLWluc3RhbmNlIikpOworICAgICAgICAvLyBBY2NvcmRpbmcgdG8gdGhlIEdTdHJl
YW1lciBkb2N1bWVudGF0aW9uLCBpZiB3ZSBjYW4ndCBmaW5kIHRoZSBjb250ZXh0LCB3ZSBzaG91
bGQgcnVuIGEgZG93bnN0cmVhbSBxdWVyeSwgdGhlbiBhbiB1cHN0cmVhbSBvbmUgYW5kIHRoZW4g
c2VuZCBhIGJ1cworICAgICAgICAvLyBtZXNzYWdlLiBJbiB0aGlzIGNhc2UgdGhhdCBkb2VzIG5v
dCBtYWtlIGEgbG90IG9mIHNlbnNlIHNpbmNlIG9ubHkgdGhlIGFwcCAocGxheWVyKSBhbnN3ZXJz
IGl0LCBtZWFuaW5nIHRoYXQgbm8gcXVlcnkgaXMgZ29pbmcgdG8gc29sdmUgaXQuIEEgbWVzc2Fn
ZQorICAgICAgICAvLyBjb3VsZCBiZSBoZWxwZnVsIGJ1dCB0aGUgcGxheWVyIHNldHMgdGhlIGNv
bnRleHQgYXMgc29vbiBhcyBpdCBnZXRzIHRoZSBDRE1JbnN0YW5jZSBhbmQgaWYgaXQgZG9lcyBu
b3QgaGF2ZSBpdCwgd2UgaGF2ZSBubyB3YXkgb2YgYXNraW5nIGZvciBvbmUgYXMgaXQgaXMKKyAg
ICAgICAgLy8gc29tZXRoaW5nIHByb3ZpZGVkIGJ5IGNyb3NzcGxhdGZvcm0gY29kZS4gVGhpcyBt
ZWFucyB0aGF0IHdlIHdvbid0IGJlIGFibGUgdG8gYW5zd2VyIHRoZSBidXMgcmVxdWVzdCBpbiBh
bnkgd2F5IGVpdGhlci4gU3VtbWluZyB1cCwgbmVpdGhlciBxdWVyaWVzIG5vciBidXMKKyAgICAg
ICAgLy8gcmVxdWVzdHMgYXJlIHVzZWZ1bCBoZXJlLgorICAgICAgICBpZiAoY29udGV4dCkgewor
ICAgICAgICAgICAgY29uc3QgR1ZhbHVlKiB2YWx1ZSA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3ZhbHVl
KGdzdF9jb250ZXh0X2dldF9zdHJ1Y3R1cmUoY29udGV4dC5nZXQoKSksICJjZG0taW5zdGFuY2Ui
KTsKKyAgICAgICAgICAgIHByaXYtPmNkbUluc3RhbmNlID0gdmFsdWUgPyByZWludGVycHJldF9j
YXN0PENETUluc3RhbmNlKj4oZ192YWx1ZV9nZXRfcG9pbnRlcih2YWx1ZSkpIDogbnVsbHB0cjsK
KyAgICAgICAgICAgIGlmIChwcml2LT5jZG1JbnN0YW5jZSkKKyAgICAgICAgICAgICAgICBHU1Rf
REVCVUdfT0JKRUNUKHNlbGYsICJyZWNlaXZlZCBuZXcgQ0RNSW5zdGFuY2UgJXAiLCBwcml2LT5j
ZG1JbnN0YW5jZS5nZXQoKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgR1NU
X1RSQUNFX09CSkVDVChzZWxmLCAiZm9ybWVyIGluc3RhbmNlIHdhcyBkZXRhY2hlZCIpOworICAg
ICAgICB9CisgICAgfQorCisgICAgR1NUX1RSQUNFX09CSkVDVChzZWxmLCAiQ0RNSW5zdGFuY2Ug
YXZhaWxhYmxlICVzIiwgYm9vbEZvclByaW50aW5nKHByaXYtPmNkbUluc3RhbmNlLmdldCgpKSk7
CisgICAgcmV0dXJuIHByaXYtPmNkbUluc3RhbmNlOworfQogCiBzdGF0aWMgZ2Jvb2xlYW4gd2Vi
a2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdFNpbmtFdmVudEhhbmRsZXIoR3N0QmFzZVRy
YW5zZm9ybSogdHJhbnMsIEdzdEV2ZW50KiBldmVudCkKIHsKQEAgLTMwNyw3ICszMzYsNiBAQCBz
dGF0aWMgZ2Jvb2xlYW4gd2Via2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdFNpbmtFdmVu
dEhhbmRsZXIoR3N0QmFzZVRyYW5zZgogICAgIFdlYktpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRl
Y3J5cHRDbGFzcyoga2xhc3MgPSBXRUJLSVRfTUVESUFfQ0VOQ19ERUNSWVBUX0dFVF9DTEFTUyhz
ZWxmKTsKICAgICBnYm9vbGVhbiByZXN1bHQgPSBGQUxTRTsKIAotCiAgICAgc3dpdGNoIChHU1Rf
RVZFTlRfVFlQRShldmVudCkpIHsKICAgICBjYXNlIEdTVF9FVkVOVF9DVVNUT01fRE9XTlNUUkVB
TV9PT0I6IHsKICAgICAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xOTEzNTUKQEAgLTMxNiwxNCArMzQ0LDEyIEBAIHN0YXRpYyBnYm9vbGVhbiB3
ZWJraXRNZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0U2lua0V2ZW50SGFuZGxlcihHc3RCYXNl
VHJhbnNmCiAgICAgICAgIC8vIHByZWZlcnJlZCBzeXN0ZW0gSUQgY29udGV4dCBpcyBzZXQsIGFu
eSBmdXR1cmUgcHJvdGVjdGlvbgogICAgICAgICAvLyBldmVudHMgd2lsbCBub3QgYmUgaGFuZGxl
ZCBieSB0aGUgZGVtdXhlciwgc28gdGhlIG11c3QgYmUKICAgICAgICAgLy8gaGFuZGxlZCBpbiBo
ZXJlLgotICAgICAgICBjb25zdCBHc3RTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdzdF9ldmVudF9n
ZXRfc3RydWN0dXJlKGV2ZW50KTsKLSAgICAgICAgZ3N0X3N0cnVjdHVyZV9nZXQoc3RydWN0dXJl
LCAiY2RtLWluc3RhbmNlIiwgR19UWVBFX1BPSU5URVIsICZwcml2LT5jZG1JbnN0YW5jZSwgbnVs
bHB0cik7Ci0gICAgICAgIGlmICghcHJpdi0+Y2RtSW5zdGFuY2UpIHsKLSAgICAgICAgICAgIEdT
VF9FUlJPUl9PQkpFQ1Qoc2VsZiwgIk5vIENETSBpbnN0YW5jZSByZWNlaXZlZCIpOworICAgICAg
ICBMb2NrSG9sZGVyIGxvY2tlcihwcml2LT5tdXRleCk7CisgICAgICAgIGlmICghd2Via2l0TWVk
aWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdElzQ0RNSW5zdGFuY2VBdmFpbGFibGUoc2VsZikpIHsK
KyAgICAgICAgICAgIEdTVF9FUlJPUl9PQkpFQ1Qoc2VsZiwgIk5vIENETSBpbnN0YW5jZSBhdmFp
bGFibGUiKTsKICAgICAgICAgICAgIHJlc3VsdCA9IEZBTFNFOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KLSAgICAgICAgR1NUX0RFQlVHX09CSkVDVChzZWxmLCAicmVjZWl2ZWQgYSBj
ZG0gaW5zdGFuY2UgJXAiLCBwcml2LT5jZG1JbnN0YW5jZS5nZXQoKSk7CiAKICAgICAgICAgaWYg
KGtsYXNzLT5oYW5kbGVLZXlSZXNwb25zZShzZWxmLCBldmVudCkpIHsKICAgICAgICAgICAgIEdT
VF9ERUJVR19PQkpFQ1Qoc2VsZiwgImtleSByZWNlaXZlZCIpOwpAQCAtMzc0LDQgKzQwMCwyMCBA
QCBzdGF0aWMgR3N0U3RhdGVDaGFuZ2VSZXR1cm4gd2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9u
RGVjcnlwdG9yQ2hhbmdlU3RhdGUoR3N0RQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3N0YXRp
YyB2b2lkIHdlYktpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5cHRvclNldENvbnRleHQoR3N0
RWxlbWVudCogZWxlbWVudCwgR3N0Q29udGV4dCogY29udGV4dCkKK3sKKyAgICBXZWJLaXRNZWRp
YUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0KiBzZWxmID0gV0VCS0lUX01FRElBX0NFTkNfREVDUllQ
VChlbGVtZW50KTsKKyAgICBXZWJLaXRNZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0UHJpdmF0
ZSogcHJpdiA9IFdFQktJVF9NRURJQV9DRU5DX0RFQ1JZUFRfR0VUX1BSSVZBVEUoc2VsZik7CisK
KyAgICBpZiAoZ3N0X2NvbnRleHRfaGFzX2NvbnRleHRfdHlwZShjb250ZXh0LCAiZHJtLWNkbS1p
bnN0YW5jZSIpKSB7CisgICAgICAgIGNvbnN0IEdWYWx1ZSogdmFsdWUgPSBnc3Rfc3RydWN0dXJl
X2dldF92YWx1ZShnc3RfY29udGV4dF9nZXRfc3RydWN0dXJlKGNvbnRleHQpLCAiY2RtLWluc3Rh
bmNlIik7CisgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKHByaXYtPm11dGV4KTsKKyAgICAgICAg
cHJpdi0+Y2RtSW5zdGFuY2UgPSB2YWx1ZSA/IHJlaW50ZXJwcmV0X2Nhc3Q8Q0RNSW5zdGFuY2Uq
PihnX3ZhbHVlX2dldF9wb2ludGVyKHZhbHVlKSkgOiBudWxscHRyOworICAgICAgICBHU1RfREVC
VUdfT0JKRUNUKHNlbGYsICJyZWNlaXZlZCBuZXcgQ0RNSW5zdGFuY2UgJXAiLCBwcml2LT5jZG1J
bnN0YW5jZS5nZXQoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBHU1RfRUxFTUVO
VF9DTEFTUyhwYXJlbnRfY2xhc3MpLT5zZXRfY29udGV4dChlbGVtZW50LCBjb250ZXh0KTsKK30K
KwogI2VuZGlmIC8vIEVOQUJMRShFTkNSWVBURURfTUVESUEpICYmIFVTRShHU1RSRUFNRVIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNl
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1T
RS5jcHAKaW5kZXggYjg2YjQ2ODM2NzU5NTUyNTI1ZmM5YWFiOGRkNjNhOTc1OGFkNDYwZi4uYmI5
M2FkNzI4OGY0ZjkzZmJmNDU4OTQ4Nzc4OTc5MWY2MmNhNGMyZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJNU0UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNwcApAQCAtOTA5
LDExICs5MDksMTEgQEAgTWVkaWFUaW1lIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRTo6
bWF4TWVkaWFUaW1lU2Vla2FibGUoKSBjb25zdAogfQogCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9N
RURJQSkKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjphdHRlbXB0VG9EZWNy
eXB0V2l0aEluc3RhbmNlKENETUluc3RhbmNlJiBpbnN0YW5jZSkKK3ZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyTVNFOjphdHRlbXB0VG9EZWNyeXB0V2l0aExvY2FsSW5zdGFuY2UoKQog
ewotICAgIGlmIChpczxDRE1JbnN0YW5jZUNsZWFyS2V5PihpbnN0YW5jZSkpIHsKLSAgICAgICAg
YXV0byYgY2tJbnN0YW5jZSA9IGRvd25jYXN0PENETUluc3RhbmNlQ2xlYXJLZXk+KGluc3RhbmNl
KTsKLSAgICAgICAgaWYgKGNrSW5zdGFuY2Uua2V5cygpLmlzRW1wdHkoKSkKKyAgICBpZiAoaXM8
Q0RNSW5zdGFuY2VDbGVhcktleT4oKm1fY2RtSW5zdGFuY2UpKSB7CisgICAgICAgIGF1dG8mIGNs
ZWFya2V5Q0RNSW5zdGFuY2UgPSBkb3duY2FzdDxDRE1JbnN0YW5jZUNsZWFyS2V5PigqbV9jZG1J
bnN0YW5jZSk7CisgICAgICAgIGlmIChjbGVhcmtleUNETUluc3RhbmNlLmtleXMoKS5pc0VtcHR5
KCkpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgR1ZhbHVlIGtleUlETGlzdCA9IEdf
VkFMVUVfSU5JVCwga2V5VmFsdWVMaXN0ID0gR19WQUxVRV9JTklUOwpAQCAtOTMwLDcgKzkzMCw3
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjphdHRlbXB0VG9EZWNyeXB0
V2l0aEluc3RhbmNlKENETUluc3RhbmNlJiBpCiAgICAgICAgICAgICAgICAgZ3N0X3ZhbHVlX2xp
c3RfYXBwZW5kX2FuZF90YWtlX3ZhbHVlKHZhbHVlTGlzdCwgYnVmZmVyVmFsdWUpOwogICAgICAg
ICAgICAgfTsKIAotICAgICAgICBmb3IgKGF1dG8mIGtleSA6IGNrSW5zdGFuY2Uua2V5cygpKSB7
CisgICAgICAgIGZvciAoYXV0byYga2V5IDogY2xlYXJrZXlDRE1JbnN0YW5jZS5rZXlzKCkpIHsK
ICAgICAgICAgICAgIGFwcGVuZEJ1ZmZlcigma2V5SURMaXN0LCAqa2V5LmtleUlERGF0YSk7CiAg
ICAgICAgICAgICBhcHBlbmRCdWZmZXIoJmtleVZhbHVlTGlzdCwgKmtleS5rZXlWYWx1ZURhdGEp
OwogICAgICAgICB9CkBAIC05MzgsNyArOTM4LDYgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJNU0U6OmF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UoQ0RNSW5zdGFuY2UmIGkK
ICAgICAgICAgR1VuaXF1ZVB0cjxHc3RTdHJ1Y3R1cmU+IHN0cnVjdHVyZShnc3Rfc3RydWN0dXJl
X25ld19lbXB0eSgiZHJtLWNpcGhlci1jbGVhcmtleSIpKTsKICAgICAgICAgZ3N0X3N0cnVjdHVy
ZV9zZXRfdmFsdWUoc3RydWN0dXJlLmdldCgpLCAia2V5LWlkcyIsICZrZXlJRExpc3QpOwogICAg
ICAgICBnc3Rfc3RydWN0dXJlX3NldF92YWx1ZShzdHJ1Y3R1cmUuZ2V0KCksICJrZXktdmFsdWVz
IiwgJmtleVZhbHVlTGlzdCk7Ci0gICAgICAgIGdzdF9zdHJ1Y3R1cmVfc2V0KHN0cnVjdHVyZS5n
ZXQoKSwgImNkbS1pbnN0YW5jZSIsIEdfVFlQRV9QT0lOVEVSLCAmaW5zdGFuY2UsIG51bGxwdHIp
OwogCiAgICAgICAgIGdzdF9lbGVtZW50X3NlbmRfZXZlbnQobV9wbGF5YmFja1BpcGVsaW5lLT5w
aXBlbGluZSgpLCBnc3RfZXZlbnRfbmV3X2N1c3RvbShHU1RfRVZFTlRfQ1VTVE9NX0RPV05TVFJF
QU1fT09CLCBzdHJ1Y3R1cmUucmVsZWFzZSgpKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJNU0UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmgKaW5kZXggMjI1N2U5ZTY4
MzBhY2IxOGM2ZjA4ZjcxODZiZjc3NThiNzI3MzVkNy4uNWI1NjgyZjY0YjVkMzU0OTRlODM5Yjdh
Mzk0NGJhN2U0MDllZmMxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5oCkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgYm9vbCBzdXBwb3J0c0FsbENvZGVjcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgY29kZWNz
KTsKIAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCi0gICAgdm9pZCBhdHRlbXB0VG9EZWNy
eXB0V2l0aEluc3RhbmNlKENETUluc3RhbmNlJikgZmluYWw7CisgICAgdm9pZCBhdHRlbXB0VG9E
ZWNyeXB0V2l0aExvY2FsSW5zdGFuY2UoKSBmaW5hbDsKICNlbmRpZgogCiBwcml2YXRlOgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>356177</attachid>
            <date>2018-11-30 07:44:17 -0800</date>
            <delta_ts>2018-11-30 08:21:42 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-192075-20181130164415.patch</filename>
            <type>text/plain</type>
            <size>20082</size>
            <attacher name="Xabier Rodríguez Calvar">calvaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4NjA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2Q1MmVhM2Q4YWVhNmFk
MTQzNzY0MTg3OTA3ZmI5ZThjN2YwNjNmNC4uZDFhMTQ4Mzk3MzliYjUwZGIzZWFhMDgwMjI5Mjk2
MDY5ZDI4Zjc4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDE4LTExLTMwICBYYWJp
ZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dT
dHJlYW1lcl1bRU1FXSBDRE1JbnN0YW5jZSBzaG91bGQgYmUgc2hpcHBlZCBhcyBhIEdzdENvbnRl
eHQgdG8gdGhlIGRlY3J5cHRvcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5MjA3NQorCisgICAgICAgIFJldmlld2VkIGJ5IFBoaWxpcHBlIE5vcm1h
bmQuCisKKyAgICAgICAgU28gZmFyLCB3ZSB3ZXJlIHNoaXBwaW5nIHRoZSBDRE1JbnN0YW5jZSBp
biBhbiBldmVudCB0byB0aGUKKyAgICAgICAgZGVjcnlwdG9ycyBhbmQgdGhleSB3ZXJlIHJlcXVl
c3RpbmcgaXQgd2l0aCBidXMgbWVzc2FnZXMgd2hlbiBpdAorICAgICAgICB3YXMgbm90IGZvdW5k
LiBOb3cgd2Ugc2hpcCBpdCB3aXRoIGEgR3N0Q29udGV4dCB0aGF0IGlzIHNldCB0byB0aGUKKyAg
ICAgICAgcGlwZWxpbmUgYW5kIHJlYWQgZnJvbSB0aGUgZGVjcnlwdG9ycywgd2hpY2ggaXMgbm93
IGFsd2F5cworICAgICAgICBhdmFpbGFibGUuCisKKyAgICAgICAgQXMgYSBjb25zZXF1ZW5jZSBv
ZiBjaGFuZ2luZyB0aGlzIGZsb3csIHRoZSBhdHRlbXB0VG9EZWNyeXB0IG9uZQorICAgICAgICB3
YXMgYWZmZWN0ZWQgYXMgd2VsbCBiZWNhdXNlIGl0IHdhcyB0aWVkIHRvIENETUluc3RhbmNlCisg
ICAgICAgIHNoaXBtZW50LiBBIHdvcmthcm91bmQgd2FzIGFkZGVkOiB3aGVuIHRoZSBkZWNyeXB0
b3JzIHNlbmQgdGhlCisgICAgICAgIHdhaXRpbmdGb3JLZXksIGFuIGF0dGVtcHRUb0RlY3J5cHQg
d2lsbCBiZSBwZXJmb3JtZWQuIEEgRklYTUUgd2FzCisgICAgICAgIGFkZGVkIGZvciB0aGlzLiBB
IHN1YmNvbnNlcXVlbmNlIGlzIHRoYXQKKyAgICAgICAgYXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0
YW5jZSBpcyByZXdvcmtlZCB0byByZWx5IGFsd2F5cyBpbgorICAgICAgICBhdHRlbXB0VG9EZWNy
eXB0V2l0aExvY2FsIGluc3RhbmNlLCB0aGUgZm9ybWVyIGJlY29tZXMgZmluYWwgYW5kCisgICAg
ICAgIHRoZSBsYXR0ZXIgdmlydHVhbC4KKworICAgICAgICBUaGlzIGlzIGEgcmV3b3JrLCBubyBu
ZXcgdGVzdHMgbmVlZGVkLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OmNk
bUluc3RhbmNlQXR0YWNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyQmFzZTo6Y2RtSW5zdGFuY2VEZXRhY2hlZCk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjphdHRlbXB0VG9EZWNyeXB0V2l0aExvY2Fs
SW5zdGFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
QmFzZTo6ZGlzcGF0Y2hDRE1JbnN0YW5jZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL1dlYktpdENvbW1vbkVuY3J5
cHRpb25EZWNyeXB0b3JHU3RyZWFtZXIuY3BwOgorICAgICAgICAod2Via2l0X21lZGlhX2NvbW1v
bl9lbmNyeXB0aW9uX2RlY3J5cHRfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRNZWRpYUNv
bW1vbkVuY3J5cHRpb25EZWNyeXB0VHJhbnNmb3JtSW5QbGFjZSk6CisgICAgICAgICh3ZWJraXRN
ZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0SXNDRE1JbnN0YW5jZUF2YWlsYWJsZSk6CisgICAg
ICAgICh3ZWJraXRNZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0U2lua0V2ZW50SGFuZGxlcik6
CisgICAgICAgICh3ZWJLaXRNZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0b3JTZXRDb250ZXh0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lck1TRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJNU0U6OmF0dGVtcHRUb0RlY3J5cHRXaXRoTG9jYWxJbnN0YW5jZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OmF0dGVtcHRU
b0RlY3J5cHRXaXRoSW5zdGFuY2UpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmg6CisKIDIw
MTgtMTEtMjcgIFJvYiBCdWlzICA8cmJ1aXNAaWdhbGlhLmNvbT4KIAogICAgICAgICBCbG9jayBt
b3JlIHBvcnRzICg0MjcsIDU0OCwgNjY5NykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggMTUwM2I1NDgxMzJmZDdkOWNlMGUwOTA1YjJiOGRk
ZDRhZjcwNGJmNy4uYjQxZGE4N2ViYTZmZWE5OTYyMjk1OTJkZDIwOGUzMzdlMjRiZDU2YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTEz
MjksMTIgKzEzMjksMTMgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmhhbmRs
ZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkKICAgICAgICAgZWxzZSBpZiAoZ3N0X3N0cnVj
dHVyZV9oYXNfbmFtZShzdHJ1Y3R1cmUsICJkcm0td2FpdGluZy1mb3Ita2V5IikpIHsKICAgICAg
ICAgICAgIEdTVF9ERUJVR19PQkpFQ1QocGlwZWxpbmUoKSwgImRybS13YWl0aW5nLWZvci1rZXkg
bWVzc2FnZSBmcm9tICVzIiwgR1NUX01FU1NBR0VfU1JDX05BTUUobWVzc2FnZSkpOwogICAgICAg
ICAgICAgc2V0V2FpdGluZ0ZvcktleSh0cnVlKTsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBUaGUg
ZGVjcnlwdG9ycyBzaG91bGQgYmUgYWJsZSB0byBhdHRlbXB0IHRvIGRlY3J5cHQgYWZ0ZXIgYmVp
bmcgY3JlYXRlZCBhbmQgbGlua2VkIGluIGEgcGlwZWxpbmUgYnV0IGN1cnJlbnRseSB0aGV5IGFy
ZSBub3QgYW5kIGN1cnJlbnQKKyAgICAgICAgICAgIC8vIGFyY2hpdGVjdHVyZSBkb2VzIG5vdCBt
YWtlIHRoaXMgdmVyeSBlYXN5LiBGb3J0dW5hdGVseSwgdGhlIGFyY2ggd2lsbCBjaGFuZ2Ugc29v
biBhbmQgaXQgZG9lcyBub3QgcGF5IG9mZiB0byBmaXggdGhpcyBub3cgd2l0aCBzb21ldGhpbmcg
dGhhdCBjb3VsZCBiZQorICAgICAgICAgICAgLy8gbW9yZSBjb252b2x1dGVkLiBJbiB0aGUgbWVh
bnRpbWUsIGZvcmNlIGF0dGVtcHQgdG8gZGVjcnlwdCB3aGVuIHRoZXkgZ2V0IGJsb2NrZWQuCisg
ICAgICAgICAgICBhdHRlbXB0VG9EZWNyeXB0V2l0aExvY2FsSW5zdGFuY2UoKTsKICAgICAgICAg
fSBlbHNlIGlmIChnc3Rfc3RydWN0dXJlX2hhc19uYW1lKHN0cnVjdHVyZSwgImRybS1rZXktcmVj
ZWl2ZWQiKSkgewogICAgICAgICAgICAgR1NUX0RFQlVHX09CSkVDVChwaXBlbGluZSgpLCAiZHJt
LWtleS1yZWNlaXZlZCBtZXNzYWdlIGZyb20gJXMiLCBHU1RfTUVTU0FHRV9TUkNfTkFNRShtZXNz
YWdlKSk7CiAgICAgICAgICAgICBzZXRXYWl0aW5nRm9yS2V5KGZhbHNlKTsKLSAgICAgICAgfSBl
bHNlIGlmIChnc3Rfc3RydWN0dXJlX2hhc19uYW1lKHN0cnVjdHVyZSwgImRybS1jZG0taW5zdGFu
Y2UtbmVlZGVkIikpIHsKLSAgICAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1QocGlwZWxpbmUoKSwg
ImRybS1jZG0taW5zdGFuY2UtbmVlZGVkIG1lc3NhZ2UgZnJvbSAlcyIsIEdTVF9NRVNTQUdFX1NS
Q19OQU1FKG1lc3NhZ2UpKTsKLSAgICAgICAgICAgIGRpc3BhdGNoQ0RNSW5zdGFuY2UoKTsKICAg
ICAgICAgfQogI2VuZGlmCiAgICAgICAgIGVsc2UgaWYgKGdzdF9zdHJ1Y3R1cmVfaGFzX25hbWUo
c3RydWN0dXJlLCAiaHR0cC1oZWFkZXJzIikpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJC
YXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcAppbmRleCA0NzFiOTMzOTUzODRiMjBjMTRk
YWM5ZDU5NmJkODI4YTA1NDE2ZDJiLi44OTdmMjkyMDI1ZGQ0YWFjMjY1ZGQ5YmRkZjJiNzc4Mzg2
Y2I5YjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lckJhc2UuY3BwCkBAIC0xMTk3LDIzICsxMTk3LDQ4IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyQmFzZTo6aW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoSW5pdERhdGEm
JiBpCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6Y2RtSW5zdGFuY2VB
dHRhY2hlZChDRE1JbnN0YW5jZSYgaW5zdGFuY2UpCiB7Ci0gICAgaWYgKG1fY2RtSW5zdGFuY2Ug
IT0gJmluc3RhbmNlKSB7Ci0gICAgICAgIG1fY2RtSW5zdGFuY2UgPSAmaW5zdGFuY2U7Ci0gICAg
ICAgIEdTVF9ERUJVR19PQkpFQ1QocGlwZWxpbmUoKSwgIkNETSBpbnN0YW5jZSAlcCBzZXQiLCBt
X2NkbUluc3RhbmNlLmdldCgpKTsKLSAgICAgICAgbV9wcm90ZWN0aW9uQ29uZGl0aW9uLm5vdGlm
eUFsbCgpOworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBpZiAobV9jZG1JbnN0
YW5jZSA9PSAmaW5zdGFuY2UpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghbV9waXBlbGlu
ZSkgeworICAgICAgICBHU1RfRVJST1IoIm5vIHBpcGVsaW5lIHlldCIpOworICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KKworICAgIG1fY2RtSW5z
dGFuY2UgPSAmaW5zdGFuY2U7CisKKyAgICBHUmVmUHRyPEdzdENvbnRleHQ+IGNvbnRleHQgPSBh
ZG9wdEdSZWYoZ3N0X2NvbnRleHRfbmV3KCJkcm0tY2RtLWluc3RhbmNlIiwgRkFMU0UpKTsKKyAg
ICBHc3RTdHJ1Y3R1cmUqIGNvbnRleHRTdHJ1Y3R1cmUgPSBnc3RfY29udGV4dF93cml0YWJsZV9z
dHJ1Y3R1cmUoY29udGV4dC5nZXQoKSk7CisgICAgZ3N0X3N0cnVjdHVyZV9zZXQoY29udGV4dFN0
cnVjdHVyZSwgImNkbS1pbnN0YW5jZSIsIEdfVFlQRV9QT0lOVEVSLCBtX2NkbUluc3RhbmNlLmdl
dCgpLCBudWxscHRyKTsKKyAgICBnc3RfZWxlbWVudF9zZXRfY29udGV4dChHU1RfRUxFTUVOVCht
X3BpcGVsaW5lLmdldCgpKSwgY29udGV4dC5nZXQoKSk7CisKKyAgICBHU1RfREVCVUdfT0JKRUNU
KG1fcGlwZWxpbmUuZ2V0KCksICJDRE0gaW5zdGFuY2UgJXAgZGlzcGF0Y2hlZCBhcyBjb250ZXh0
IiwgbV9jZG1JbnN0YW5jZS5nZXQoKSk7CisKKyAgICBtX3Byb3RlY3Rpb25Db25kaXRpb24ubm90
aWZ5QWxsKCk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6Y2Rt
SW5zdGFuY2VEZXRhY2hlZChDRE1JbnN0YW5jZSYgaW5zdGFuY2UpCiB7Ci0jaWZkZWYgTkRFQlVH
Ci0gICAgVU5VU0VEX1BBUkFNKGluc3RhbmNlKTsKLSNlbmRpZgotICAgIGlmIChtX2NkbUluc3Rh
bmNlID09ICZpbnN0YW5jZSkgewotICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHBpcGVsaW5lKCks
ICJkZXRhY2hpbmcgQ0RNIGluc3RhbmNlICVwIiwgbV9jZG1JbnN0YW5jZS5nZXQoKSk7Ci0gICAg
ICAgIG1fY2RtSW5zdGFuY2UgPSBudWxscHRyOwotICAgICAgICBtX3Byb3RlY3Rpb25Db25kaXRp
b24ubm90aWZ5QWxsKCk7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIGlmICht
X2NkbUluc3RhbmNlICE9ICZpbnN0YW5jZSkgeworICAgICAgICBHU1RfV0FSTklORygicGFzc2Vk
IENETUluc3RhbmNlICVwIGlzIGRpZmZlcmVudCBmcm9tIHN0b3JlZCBvbmUgJXAiLCAmaW5zdGFu
Y2UsIG1fY2RtSW5zdGFuY2UuZ2V0KCkpOworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgcmV0dXJuOwogICAgIH0KKworICAgIEFTU0VSVChtX3BpcGVsaW5lKTsKKworICAg
IEdTVF9ERUJVR19PQkpFQ1QobV9waXBlbGluZS5nZXQoKSwgImRldGFjaGluZyBDRE0gaW5zdGFu
Y2UgJXAsIHNldHRpbmcgZW1wdHkgY29udGV4dCIsIG1fY2RtSW5zdGFuY2UuZ2V0KCkpOworICAg
IG1fY2RtSW5zdGFuY2UgPSBudWxscHRyOworCisgICAgR1JlZlB0cjxHc3RDb250ZXh0PiBjb250
ZXh0ID0gYWRvcHRHUmVmKGdzdF9jb250ZXh0X25ldygiZHJtLWNkbS1pbnN0YW5jZSIsIEZBTFNF
KSk7CisgICAgZ3N0X2VsZW1lbnRfc2V0X2NvbnRleHQoR1NUX0VMRU1FTlQobV9waXBlbGluZS5n
ZXQoKSksIGNvbnRleHQuZ2V0KCkpOworCisgICAgbV9wcm90ZWN0aW9uQ29uZGl0aW9uLm5vdGlm
eUFsbCgpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OmF0dGVt
cHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UoQ0RNSW5zdGFuY2UmIGluc3RhbmNlKQpAQCAtMTIyNSw4
ICsxMjUwLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjphdHRlbXB0
VG9EZWNyeXB0V2l0aEluc3RhbmNlKENETUluc3RhbmNlJgogCiB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lckJhc2U6OmF0dGVtcHRUb0RlY3J5cHRXaXRoTG9jYWxJbnN0YW5jZSgpCiB7
Ci0gICAgYm9vbCBldmVudEhhbmRsZWQgPSBnc3RfZWxlbWVudF9zZW5kX2V2ZW50KHBpcGVsaW5l
KCksIGdzdF9ldmVudF9uZXdfY3VzdG9tKEdTVF9FVkVOVF9DVVNUT01fRE9XTlNUUkVBTV9PT0Is
Ci0gICAgICAgIGdzdF9zdHJ1Y3R1cmVfbmV3KCJhdHRlbXB0LXRvLWRlY3J5cHQiLCAiY2RtLWlu
c3RhbmNlIiwgR19UWVBFX1BPSU5URVIsIG1fY2RtSW5zdGFuY2UuZ2V0KCksIG51bGxwdHIpKSk7
CisgICAgYm9vbCBldmVudEhhbmRsZWQgPSBnc3RfZWxlbWVudF9zZW5kX2V2ZW50KHBpcGVsaW5l
KCksIGdzdF9ldmVudF9uZXdfY3VzdG9tKEdTVF9FVkVOVF9DVVNUT01fRE9XTlNUUkVBTV9PT0Is
IGdzdF9zdHJ1Y3R1cmVfbmV3X2VtcHR5KCJhdHRlbXB0LXRvLWRlY3J5cHQiKSkpOwogICAgIEdT
VF9ERUJVRygiYXR0ZW1wdGluZyB0byBkZWNyeXB0LCBldmVudCBoYW5kbGVkICVzIiwgYm9vbEZv
clByaW50aW5nKGV2ZW50SGFuZGxlZCkpOwogfQogCkBAIC0xMjM3LDEzICsxMjYxLDYgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpkaXNwYXRjaERlY3J5cHRpb25LZXko
R3N0QnVmZmVyKiBidWZmZXIpCiAgICAgR1NUX1RSQUNFKCJlbWl0dGVkIGRlY3J5cHRpb24gY2lw
aGVyIGtleSBvbiBwaXBlbGluZSwgZXZlbnQgaGFuZGxlZCAlcyIsIGJvb2xGb3JQcmludGluZyhl
dmVudEhhbmRsZWQpKTsKIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNl
OjpkaXNwYXRjaENETUluc3RhbmNlKCkKLXsKLSAgICAvLyBUaGlzIGZ1bmN0aW9uIGRpc3BhdGNo
ZXMgdGhlIENETUluc3RhbmNlIGluIEdTdHJlYW1lciBwbGF5YmFjayBwaXBlbGluZS4KLSAgICBp
ZiAobV9jZG1JbnN0YW5jZSkKLSAgICAgICAgbV9wbGF5ZXItPmF0dGVtcHRUb0RlY3J5cHRXaXRo
SW5zdGFuY2UoY29uc3RfY2FzdDxDRE1JbnN0YW5jZSY+KCptX2NkbUluc3RhbmNlLmdldCgpKSk7
Ci19Ci0KIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6aGFuZGxlUHJvdGVj
dGlvbkV2ZW50KEdzdEV2ZW50KiBldmVudCkKIHsKICAgICBpZiAobV9oYW5kbGVkUHJvdGVjdGlv
bkV2ZW50cy5jb250YWlucyhHU1RfRVZFTlRfU0VRTlVNKGV2ZW50KSkpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oCmluZGV4IGUzZTM5Njlj
OTkwNmQ0N2Y0MWM2MjFkOGQ3NzlmZGI4ZDNlMzVhZmIuLjQyMzgxZDJmNzdiOGMxNGMxOWQwN2Fh
MGZjNmQ3Zjg1OWM2OWZhYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lckJhc2UuaApAQCAtMTUwLDkgKzE1MCw4IEBAIHB1YmxpYzoKICAgICB2b2lk
IGNkbUluc3RhbmNlRGV0YWNoZWQoQ0RNSW5zdGFuY2UmKSBvdmVycmlkZTsKICAgICB2b2lkIGRp
c3BhdGNoRGVjcnlwdGlvbktleShHc3RCdWZmZXIqKTsKICAgICB2b2lkIGhhbmRsZVByb3RlY3Rp
b25FdmVudChHc3RFdmVudCopOwotICAgIHZvaWQgYXR0ZW1wdFRvRGVjcnlwdFdpdGhMb2NhbElu
c3RhbmNlKCk7Ci0gICAgdm9pZCBhdHRlbXB0VG9EZWNyeXB0V2l0aEluc3RhbmNlKENETUluc3Rh
bmNlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaXNwYXRjaENETUluc3RhbmNlKCk7CisgICAgdmly
dHVhbCB2b2lkIGF0dGVtcHRUb0RlY3J5cHRXaXRoTG9jYWxJbnN0YW5jZSgpOworICAgIHZvaWQg
YXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5jZShDRE1JbnN0YW5jZSYpIGZpbmFsOwogICAgIHZv
aWQgaW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoSW5pdERhdGEmJik7CiAgICAgdm9pZCBz
ZXRXYWl0aW5nRm9yS2V5KGJvb2wpOwogICAgIGJvb2wgd2FpdGluZ0ZvcktleSgpIGNvbnN0IG92
ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL2VtZS9XZWJLaXRDb21tb25FbmNyeXB0aW9uRGVjcnlwdG9yR1N0cmVhbWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvV2ViS2l0Q29t
bW9uRW5jcnlwdGlvbkRlY3J5cHRvckdTdHJlYW1lci5jcHAKaW5kZXggOGJmZjM4YzAzOWJiOWYx
MTBhODU1Y2YxODFjZTdjZTdjNzE4ZDY1YS4uMTdmZDQ4Y2M5NTkxZTgxNGU2YTM5YjQ3MjVmMDhm
OTA5ODBlNWY2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL2VtZS9XZWJLaXRDb21tb25FbmNyeXB0aW9uRGVjcnlwdG9yR1N0cmVhbWVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL1dl
YktpdENvbW1vbkVuY3J5cHRpb25EZWNyeXB0b3JHU3RyZWFtZXIuY3BwCkBAIC0zMSwxMCArMzEs
MTIgQEAKICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9v
cC5oPgogCit1c2luZyBXZWJDb3JlOjpDRE1JbnN0YW5jZTsKKwogI2RlZmluZSBXRUJLSVRfTUVE
SUFfQ0VOQ19ERUNSWVBUX0dFVF9QUklWQVRFKG9iaikgKEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJ
VkFURSgob2JqKSwgV0VCS0lUX1RZUEVfTUVESUFfQ0VOQ19ERUNSWVBULCBXZWJLaXRNZWRpYUNv
bW1vbkVuY3J5cHRpb25EZWNyeXB0UHJpdmF0ZSkpCiBzdHJ1Y3QgX1dlYktpdE1lZGlhQ29tbW9u
RW5jcnlwdGlvbkRlY3J5cHRQcml2YXRlIHsKICAgICBHUmVmUHRyPEdzdEV2ZW50PiBwcm90ZWN0
aW9uRXZlbnQ7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OkNETUluc3RhbmNlPiBjZG1JbnN0YW5jZTsK
KyAgICBSZWZQdHI8Q0RNSW5zdGFuY2U+IGNkbUluc3RhbmNlOwogICAgIGJvb2wga2V5UmVjZWl2
ZWQ7CiAgICAgYm9vbCB3YWl0aW5nRm9yS2V5IHsgZmFsc2UgfTsKICAgICBMb2NrIG11dGV4OwpA
QCAtNDIsMTIgKzQ0LDEzIEBAIHN0cnVjdCBfV2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVj
cnlwdFByaXZhdGUgewogfTsKIAogc3RhdGljIEdzdFN0YXRlQ2hhbmdlUmV0dXJuIHdlYktpdE1l
ZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5cHRvckNoYW5nZVN0YXRlKEdzdEVsZW1lbnQqLCBHc3RT
dGF0ZUNoYW5nZSB0cmFuc2l0aW9uKTsKK3N0YXRpYyB2b2lkIHdlYktpdE1lZGlhQ29tbW9uRW5j
cnlwdGlvbkRlY3J5cHRvclNldENvbnRleHQoR3N0RWxlbWVudCosIEdzdENvbnRleHQqKTsKIHN0
YXRpYyB2b2lkIHdlYktpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5cHRvckZpbmFsaXplKEdP
YmplY3QqKTsKIHN0YXRpYyBHc3RDYXBzKiB3ZWJraXRNZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNy
eXB0VHJhbnNmb3JtQ2FwcyhHc3RCYXNlVHJhbnNmb3JtKiwgR3N0UGFkRGlyZWN0aW9uLCBHc3RD
YXBzKiwgR3N0Q2FwcyopOwogc3RhdGljIEdzdEZsb3dSZXR1cm4gd2Via2l0TWVkaWFDb21tb25F
bmNyeXB0aW9uRGVjcnlwdFRyYW5zZm9ybUluUGxhY2UoR3N0QmFzZVRyYW5zZm9ybSosIEdzdEJ1
ZmZlciopOwogc3RhdGljIGdib29sZWFuIHdlYmtpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5
cHRTaW5rRXZlbnRIYW5kbGVyKEdzdEJhc2VUcmFuc2Zvcm0qLCBHc3RFdmVudCopOwogc3RhdGlj
IGdib29sZWFuIHdlYmtpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5cHRvclF1ZXJ5SGFuZGxl
cihHc3RCYXNlVHJhbnNmb3JtKiwgR3N0UGFkRGlyZWN0aW9uLCBHc3RRdWVyeSopOwotCitzdGF0
aWMgYm9vbCB3ZWJraXRNZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0SXNDRE1JbnN0YW5jZUF2
YWlsYWJsZShXZWJLaXRNZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0Kik7CiAKIEdTVF9ERUJV
R19DQVRFR09SWV9TVEFUSUMod2Via2l0X21lZGlhX2NvbW1vbl9lbmNyeXB0aW9uX2RlY3J5cHRf
ZGVidWdfY2F0ZWdvcnkpOwogI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgd2Via2l0X21lZGlhX2Nv
bW1vbl9lbmNyeXB0aW9uX2RlY3J5cHRfZGVidWdfY2F0ZWdvcnkKQEAgLTY1LDYgKzY4LDcgQEAg
c3RhdGljIHZvaWQgd2Via2l0X21lZGlhX2NvbW1vbl9lbmNyeXB0aW9uX2RlY3J5cHRfY2xhc3Nf
aW5pdChXZWJLaXRNZWRpYUNvbW1vbkUKIAogICAgIEdzdEVsZW1lbnRDbGFzcyogZWxlbWVudENs
YXNzID0gR1NUX0VMRU1FTlRfQ0xBU1Moa2xhc3MpOwogICAgIGVsZW1lbnRDbGFzcy0+Y2hhbmdl
X3N0YXRlID0gR1NUX0RFQlVHX0ZVTkNQVFIod2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVj
cnlwdG9yQ2hhbmdlU3RhdGUpOworICAgIGVsZW1lbnRDbGFzcy0+c2V0X2NvbnRleHQgPSBHU1Rf
REVCVUdfRlVOQ1BUUih3ZWJLaXRNZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0b3JTZXRDb250
ZXh0KTsKIAogICAgIEdzdEJhc2VUcmFuc2Zvcm1DbGFzcyogYmFzZVRyYW5zZm9ybUNsYXNzID0g
R1NUX0JBU0VfVFJBTlNGT1JNX0NMQVNTKGtsYXNzKTsKICAgICBiYXNlVHJhbnNmb3JtQ2xhc3Mt
PnRyYW5zZm9ybV9pcCA9IEdTVF9ERUJVR19GVU5DUFRSKHdlYmtpdE1lZGlhQ29tbW9uRW5jcnlw
dGlvbkRlY3J5cHRUcmFuc2Zvcm1JblBsYWNlKTsKQEAgLTIwOSw3ICsyMTMsNiBAQCBzdGF0aWMg
R3N0Rmxvd1JldHVybiB3ZWJraXRNZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0VHJhbnNmb3Jt
SW5QbGFjZShHc3RCYXNlVAogICAgICAgICAvLyBTZW5kICJkcm0tY2RtLWluc3RhbmNlLW5lZWRl
ZCIgbWVzc2FnZSB0byB0aGUgcGxheWVyIHRvIHJlc2VuZCB0aGUgQ0RNSW5zdGFuY2UgaWYgYXZh
aWxhYmxlIGFuZCBpbmZvcm0gd2UgYXJlIHdhaXRpbmcgZm9yIGtleS4KICAgICAgICAgcHJpdi0+
d2FpdGluZ0ZvcktleSA9IHRydWU7CiAgICAgICAgIGdzdF9lbGVtZW50X3Bvc3RfbWVzc2FnZShH
U1RfRUxFTUVOVChzZWxmKSwgZ3N0X21lc3NhZ2VfbmV3X2VsZW1lbnQoR1NUX09CSkVDVChzZWxm
KSwgZ3N0X3N0cnVjdHVyZV9uZXdfZW1wdHkoImRybS13YWl0aW5nLWZvci1rZXkiKSkpOwotICAg
ICAgICBnc3RfZWxlbWVudF9wb3N0X21lc3NhZ2UoR1NUX0VMRU1FTlQoc2VsZiksIGdzdF9tZXNz
YWdlX25ld19lbGVtZW50KEdTVF9PQkpFQ1Qoc2VsZiksIGdzdF9zdHJ1Y3R1cmVfbmV3X2VtcHR5
KCJkcm0tY2RtLWluc3RhbmNlLW5lZWRlZCIpKSk7CiAKICAgICAgICAgcHJpdi0+Y29uZGl0aW9u
LndhaXRGb3IocHJpdi0+bXV0ZXgsIFNlY29uZHMoNSksIFtwcml2XSB7CiAgICAgICAgICAgICBy
ZXR1cm4gcHJpdi0+a2V5UmVjZWl2ZWQ7CkBAIC0yOTksNiArMzAyLDMyIEBAIHN0YXRpYyBHc3RG
bG93UmV0dXJuIHdlYmtpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5cHRUcmFuc2Zvcm1JblBs
YWNlKEdzdEJhc2VUCiAgICAgcmV0dXJuIEdTVF9GTE9XX09LOwogfQogCitzdGF0aWMgYm9vbCB3
ZWJraXRNZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0SXNDRE1JbnN0YW5jZUF2YWlsYWJsZShX
ZWJLaXRNZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0KiBzZWxmKQoreworICAgIFdlYktpdE1l
ZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5cHRQcml2YXRlKiBwcml2ID0gV0VCS0lUX01FRElBX0NF
TkNfREVDUllQVF9HRVRfUFJJVkFURShzZWxmKTsKKworICAgIEFTU0VSVChwcml2LT5tdXRleC5p
c0xvY2tlZCgpKTsKKworICAgIGlmICghcHJpdi0+Y2RtSW5zdGFuY2UpIHsKKyAgICAgICAgR1Jl
ZlB0cjxHc3RDb250ZXh0PiBjb250ZXh0ID0gYWRvcHRHUmVmKGdzdF9lbGVtZW50X2dldF9jb250
ZXh0KEdTVF9FTEVNRU5UKHNlbGYpLCAiZHJtLWNkbS1pbnN0YW5jZSIpKTsKKyAgICAgICAgLy8g
QWNjb3JkaW5nIHRvIHRoZSBHU3RyZWFtZXIgZG9jdW1lbnRhdGlvbiwgaWYgd2UgY2FuJ3QgZmlu
ZCB0aGUgY29udGV4dCwgd2Ugc2hvdWxkIHJ1biBhIGRvd25zdHJlYW0gcXVlcnksIHRoZW4gYW4g
dXBzdHJlYW0gb25lIGFuZCB0aGVuIHNlbmQgYSBidXMKKyAgICAgICAgLy8gbWVzc2FnZS4gSW4g
dGhpcyBjYXNlIHRoYXQgZG9lcyBub3QgbWFrZSBhIGxvdCBvZiBzZW5zZSBzaW5jZSBvbmx5IHRo
ZSBhcHAgKHBsYXllcikgYW5zd2VycyBpdCwgbWVhbmluZyB0aGF0IG5vIHF1ZXJ5IGlzIGdvaW5n
IHRvIHNvbHZlIGl0LiBBIG1lc3NhZ2UKKyAgICAgICAgLy8gY291bGQgYmUgaGVscGZ1bCBidXQg
dGhlIHBsYXllciBzZXRzIHRoZSBjb250ZXh0IGFzIHNvb24gYXMgaXQgZ2V0cyB0aGUgQ0RNSW5z
dGFuY2UgYW5kIGlmIGl0IGRvZXMgbm90IGhhdmUgaXQsIHdlIGhhdmUgbm8gd2F5IG9mIGFza2lu
ZyBmb3Igb25lIGFzIGl0IGlzCisgICAgICAgIC8vIHNvbWV0aGluZyBwcm92aWRlZCBieSBjcm9z
c3BsYXRmb3JtIGNvZGUuIFRoaXMgbWVhbnMgdGhhdCB3ZSB3b24ndCBiZSBhYmxlIHRvIGFuc3dl
ciB0aGUgYnVzIHJlcXVlc3QgaW4gYW55IHdheSBlaXRoZXIuIFN1bW1pbmcgdXAsIG5laXRoZXIg
cXVlcmllcyBub3IgYnVzCisgICAgICAgIC8vIHJlcXVlc3RzIGFyZSB1c2VmdWwgaGVyZS4KKyAg
ICAgICAgaWYgKGNvbnRleHQpIHsKKyAgICAgICAgICAgIGNvbnN0IEdWYWx1ZSogdmFsdWUgPSBn
c3Rfc3RydWN0dXJlX2dldF92YWx1ZShnc3RfY29udGV4dF9nZXRfc3RydWN0dXJlKGNvbnRleHQu
Z2V0KCkpLCAiY2RtLWluc3RhbmNlIik7CisgICAgICAgICAgICBwcml2LT5jZG1JbnN0YW5jZSA9
IHZhbHVlID8gcmVpbnRlcnByZXRfY2FzdDxDRE1JbnN0YW5jZSo+KGdfdmFsdWVfZ2V0X3BvaW50
ZXIodmFsdWUpKSA6IG51bGxwdHI7CisgICAgICAgICAgICBpZiAocHJpdi0+Y2RtSW5zdGFuY2Up
CisgICAgICAgICAgICAgICAgR1NUX0RFQlVHX09CSkVDVChzZWxmLCAicmVjZWl2ZWQgbmV3IENE
TUluc3RhbmNlICVwIiwgcHJpdi0+Y2RtSW5zdGFuY2UuZ2V0KCkpOworICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIEdTVF9UUkFDRV9PQkpFQ1Qoc2VsZiwgImZvcm1lciBpbnN0YW5j
ZSB3YXMgZGV0YWNoZWQiKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEdTVF9UUkFDRV9PQkpF
Q1Qoc2VsZiwgIkNETUluc3RhbmNlIGF2YWlsYWJsZSAlcyIsIGJvb2xGb3JQcmludGluZyhwcml2
LT5jZG1JbnN0YW5jZS5nZXQoKSkpOworICAgIHJldHVybiBwcml2LT5jZG1JbnN0YW5jZTsKK30K
IAogc3RhdGljIGdib29sZWFuIHdlYmtpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5cHRTaW5r
RXZlbnRIYW5kbGVyKEdzdEJhc2VUcmFuc2Zvcm0qIHRyYW5zLCBHc3RFdmVudCogZXZlbnQpCiB7
CkBAIC0zMDcsNyArMzM2LDYgQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdE1lZGlhQ29tbW9uRW5j
cnlwdGlvbkRlY3J5cHRTaW5rRXZlbnRIYW5kbGVyKEdzdEJhc2VUcmFuc2YKICAgICBXZWJLaXRN
ZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0Q2xhc3MqIGtsYXNzID0gV0VCS0lUX01FRElBX0NF
TkNfREVDUllQVF9HRVRfQ0xBU1Moc2VsZik7CiAgICAgZ2Jvb2xlYW4gcmVzdWx0ID0gRkFMU0U7
CiAKLQogICAgIHN3aXRjaCAoR1NUX0VWRU5UX1RZUEUoZXZlbnQpKSB7CiAgICAgY2FzZSBHU1Rf
RVZFTlRfQ1VTVE9NX0RPV05TVFJFQU1fT09COiB7CiAgICAgICAgIC8vIEZJWE1FOiBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxMzU1CkBAIC0zMTYsMTQgKzM0NCwx
MiBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdFNp
bmtFdmVudEhhbmRsZXIoR3N0QmFzZVRyYW5zZgogICAgICAgICAvLyBwcmVmZXJyZWQgc3lzdGVt
IElEIGNvbnRleHQgaXMgc2V0LCBhbnkgZnV0dXJlIHByb3RlY3Rpb24KICAgICAgICAgLy8gZXZl
bnRzIHdpbGwgbm90IGJlIGhhbmRsZWQgYnkgdGhlIGRlbXV4ZXIsIHNvIHRoZSBtdXN0IGJlCiAg
ICAgICAgIC8vIGhhbmRsZWQgaW4gaGVyZS4KLSAgICAgICAgY29uc3QgR3N0U3RydWN0dXJlKiBz
dHJ1Y3R1cmUgPSBnc3RfZXZlbnRfZ2V0X3N0cnVjdHVyZShldmVudCk7Ci0gICAgICAgIGdzdF9z
dHJ1Y3R1cmVfZ2V0KHN0cnVjdHVyZSwgImNkbS1pbnN0YW5jZSIsIEdfVFlQRV9QT0lOVEVSLCAm
cHJpdi0+Y2RtSW5zdGFuY2UsIG51bGxwdHIpOwotICAgICAgICBpZiAoIXByaXYtPmNkbUluc3Rh
bmNlKSB7Ci0gICAgICAgICAgICBHU1RfRVJST1JfT0JKRUNUKHNlbGYsICJObyBDRE0gaW5zdGFu
Y2UgcmVjZWl2ZWQiKTsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIocHJpdi0+bXV0ZXgpOwor
ICAgICAgICBpZiAoIXdlYmtpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5cHRJc0NETUluc3Rh
bmNlQXZhaWxhYmxlKHNlbGYpKSB7CisgICAgICAgICAgICBHU1RfRVJST1JfT0JKRUNUKHNlbGYs
ICJObyBDRE0gaW5zdGFuY2UgYXZhaWxhYmxlIik7CiAgICAgICAgICAgICByZXN1bHQgPSBGQUxT
RTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIEdTVF9ERUJVR19PQkpF
Q1Qoc2VsZiwgInJlY2VpdmVkIGEgY2RtIGluc3RhbmNlICVwIiwgcHJpdi0+Y2RtSW5zdGFuY2Uu
Z2V0KCkpOwogCiAgICAgICAgIGlmIChrbGFzcy0+aGFuZGxlS2V5UmVzcG9uc2Uoc2VsZiwgZXZl
bnQpKSB7CiAgICAgICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHNlbGYsICJrZXkgcmVjZWl2ZWQi
KTsKQEAgLTM3NCw0ICs0MDAsMjAgQEAgc3RhdGljIEdzdFN0YXRlQ2hhbmdlUmV0dXJuIHdlYktp
dE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5cHRvckNoYW5nZVN0YXRlKEdzdEUKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCitzdGF0aWMgdm9pZCB3ZWJLaXRNZWRpYUNvbW1vbkVuY3J5cHRpb25E
ZWNyeXB0b3JTZXRDb250ZXh0KEdzdEVsZW1lbnQqIGVsZW1lbnQsIEdzdENvbnRleHQqIGNvbnRl
eHQpCit7CisgICAgV2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdCogc2VsZiA9IFdF
QktJVF9NRURJQV9DRU5DX0RFQ1JZUFQoZWxlbWVudCk7CisgICAgV2ViS2l0TWVkaWFDb21tb25F
bmNyeXB0aW9uRGVjcnlwdFByaXZhdGUqIHByaXYgPSBXRUJLSVRfTUVESUFfQ0VOQ19ERUNSWVBU
X0dFVF9QUklWQVRFKHNlbGYpOworCisgICAgaWYgKGdzdF9jb250ZXh0X2hhc19jb250ZXh0X3R5
cGUoY29udGV4dCwgImRybS1jZG0taW5zdGFuY2UiKSkgeworICAgICAgICBjb25zdCBHVmFsdWUq
IHZhbHVlID0gZ3N0X3N0cnVjdHVyZV9nZXRfdmFsdWUoZ3N0X2NvbnRleHRfZ2V0X3N0cnVjdHVy
ZShjb250ZXh0KSwgImNkbS1pbnN0YW5jZSIpOworICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihw
cml2LT5tdXRleCk7CisgICAgICAgIHByaXYtPmNkbUluc3RhbmNlID0gdmFsdWUgPyByZWludGVy
cHJldF9jYXN0PENETUluc3RhbmNlKj4oZ192YWx1ZV9nZXRfcG9pbnRlcih2YWx1ZSkpIDogbnVs
bHB0cjsKKyAgICAgICAgR1NUX0RFQlVHX09CSkVDVChzZWxmLCAicmVjZWl2ZWQgbmV3IENETUlu
c3RhbmNlICVwIiwgcHJpdi0+Y2RtSW5zdGFuY2UuZ2V0KCkpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgR1NUX0VMRU1FTlRfQ0xBU1MocGFyZW50X2NsYXNzKS0+c2V0X2NvbnRleHQo
ZWxlbWVudCwgY29udGV4dCk7Cit9CisKICNlbmRpZiAvLyBFTkFCTEUoRU5DUllQVEVEX01FRElB
KSAmJiBVU0UoR1NUUkVBTUVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCmluZGV4IGI4NmI0NjgzNjc1OTU1MjUyNWZjOWFh
YjhkZDYzYTk3NThhZDQ2MGYuLmJiOTNhZDcyODhmNGY5M2ZiZjQ1ODk0ODc3ODk3OTFmNjJjYTRj
MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lck1TRS5jcHAKQEAgLTkwOSwxMSArOTA5LDExIEBAIE1lZGlhVGltZSBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXJNU0U6Om1heE1lZGlhVGltZVNlZWthYmxlKCkgY29uc3QKIH0KIAog
I2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lck1TRTo6YXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5jZShDRE1JbnN0YW5jZSYgaW5zdGFu
Y2UpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRTo6YXR0ZW1wdFRvRGVjcnlw
dFdpdGhMb2NhbEluc3RhbmNlKCkKIHsKLSAgICBpZiAoaXM8Q0RNSW5zdGFuY2VDbGVhcktleT4o
aW5zdGFuY2UpKSB7Ci0gICAgICAgIGF1dG8mIGNrSW5zdGFuY2UgPSBkb3duY2FzdDxDRE1JbnN0
YW5jZUNsZWFyS2V5PihpbnN0YW5jZSk7Ci0gICAgICAgIGlmIChja0luc3RhbmNlLmtleXMoKS5p
c0VtcHR5KCkpCisgICAgaWYgKGlzPENETUluc3RhbmNlQ2xlYXJLZXk+KCptX2NkbUluc3RhbmNl
KSkgeworICAgICAgICBhdXRvJiBjbGVhcmtleUNETUluc3RhbmNlID0gZG93bmNhc3Q8Q0RNSW5z
dGFuY2VDbGVhcktleT4oKm1fY2RtSW5zdGFuY2UpOworICAgICAgICBpZiAoY2xlYXJrZXlDRE1J
bnN0YW5jZS5rZXlzKCkuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAg
IEdWYWx1ZSBrZXlJRExpc3QgPSBHX1ZBTFVFX0lOSVQsIGtleVZhbHVlTGlzdCA9IEdfVkFMVUVf
SU5JVDsKQEAgLTkzMCw3ICs5MzAsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ck1TRTo6YXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5jZShDRE1JbnN0YW5jZSYgaQogICAgICAg
ICAgICAgICAgIGdzdF92YWx1ZV9saXN0X2FwcGVuZF9hbmRfdGFrZV92YWx1ZSh2YWx1ZUxpc3Qs
IGJ1ZmZlclZhbHVlKTsKICAgICAgICAgICAgIH07CiAKLSAgICAgICAgZm9yIChhdXRvJiBrZXkg
OiBja0luc3RhbmNlLmtleXMoKSkgeworICAgICAgICBmb3IgKGF1dG8mIGtleSA6IGNsZWFya2V5
Q0RNSW5zdGFuY2Uua2V5cygpKSB7CiAgICAgICAgICAgICBhcHBlbmRCdWZmZXIoJmtleUlETGlz
dCwgKmtleS5rZXlJRERhdGEpOwogICAgICAgICAgICAgYXBwZW5kQnVmZmVyKCZrZXlWYWx1ZUxp
c3QsICprZXkua2V5VmFsdWVEYXRhKTsKICAgICAgICAgfQpAQCAtOTM4LDcgKzkzOCw2IEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjphdHRlbXB0VG9EZWNyeXB0V2l0aElu
c3RhbmNlKENETUluc3RhbmNlJiBpCiAgICAgICAgIEdVbmlxdWVQdHI8R3N0U3RydWN0dXJlPiBz
dHJ1Y3R1cmUoZ3N0X3N0cnVjdHVyZV9uZXdfZW1wdHkoImRybS1jaXBoZXItY2xlYXJrZXkiKSk7
CiAgICAgICAgIGdzdF9zdHJ1Y3R1cmVfc2V0X3ZhbHVlKHN0cnVjdHVyZS5nZXQoKSwgImtleS1p
ZHMiLCAma2V5SURMaXN0KTsKICAgICAgICAgZ3N0X3N0cnVjdHVyZV9zZXRfdmFsdWUoc3RydWN0
dXJlLmdldCgpLCAia2V5LXZhbHVlcyIsICZrZXlWYWx1ZUxpc3QpOwotICAgICAgICBnc3Rfc3Ry
dWN0dXJlX3NldChzdHJ1Y3R1cmUuZ2V0KCksICJjZG0taW5zdGFuY2UiLCBHX1RZUEVfUE9JTlRF
UiwgJmluc3RhbmNlLCBudWxscHRyKTsKIAogICAgICAgICBnc3RfZWxlbWVudF9zZW5kX2V2ZW50
KG1fcGxheWJhY2tQaXBlbGluZS0+cGlwZWxpbmUoKSwgZ3N0X2V2ZW50X25ld19jdXN0b20oR1NU
X0VWRU5UX0NVU1RPTV9ET1dOU1RSRUFNX09PQiwgc3RydWN0dXJlLnJlbGVhc2UoKSkpOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ck1TRS5oCmluZGV4IDIyNTdlOWU2ODMwYWNiMThjNmYwOGY3MTg2YmY3NzU4YjcyNzM1ZDcuLjVi
NTY4MmY2NGI1ZDM1NDk0ZTgzOWI3YTM5NDRiYTdlNDA5ZWZjMTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyTVNFLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuaApAQCAtODYsNyAr
ODYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNBbGxDb2RlY3MoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGNvZGVjcyk7CiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQot
ICAgIHZvaWQgYXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5jZShDRE1JbnN0YW5jZSYpIGZpbmFs
OworICAgIHZvaWQgYXR0ZW1wdFRvRGVjcnlwdFdpdGhMb2NhbEluc3RhbmNlKCkgZmluYWw7CiAj
ZW5kaWYKIAogcHJpdmF0ZToK
</data>

          </attachment>
      

    </bug>

</bugzilla>