<?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>190956</bug_id>
          
          <creation_ts>2018-10-26 05:51:11 -0700</creation_ts>
          <short_desc>[WPE][GTK] Certificates loaded from the cache don&apos;t include the certificate chain</short_desc>
          <delta_ts>2022-02-28 03:47:21 -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>WPE WebKit</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Claudio Saavedra">csaavedra</reporter>
          <assigned_to name="Claudio Saavedra">csaavedra</assigned_to>
          <cc>bugs-noreply</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>koivisto</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>wilander</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1472400</commentid>
    <comment_count>0</comment_count>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2018-10-26 05:51:11 -0700</bug_when>
    <thetext>[WPE][GTK] Certificates loaded from the cache don&apos;t include the certificate chain</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1472402</commentid>
    <comment_count>1</comment_count>
      <attachid>353177</attachid>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2018-10-26 05:53:52 -0700</bug_when>
    <thetext>Created attachment 353177
Patch

I didn&apos;t increase the cache version because I am not sure if this change needs it. AFAICT, the loader would load a boolean as integer, which would be interpreted as 1 and then the iteration would try to load only one certificate from the cache.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1472403</commentid>
    <comment_count>2</comment_count>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2018-10-26 05:55:39 -0700</bug_when>
    <thetext>I also think that at some point it would be interesting to check if we can factor the code to a common place so that both IPC and Cache coders use the same encoding/decoding code/format. Not sure it&apos;s needed to have this redundant code in different places. For now, let&apos;s fix this though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1472419</commentid>
    <comment_count>3</comment_count>
      <attachid>353177</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-10-26 07:14:01 -0700</bug_when>
    <thetext>Comment on attachment 353177
Patch

r=me on the code changes, since this is just syncing the cache coders with the IPC coders that we&apos;ve now reviewed thoroughly.

I&apos;m not sure about the rules for changing the cache coders either, though. I think it does probably need a new cache version, otherwise downgrades could break: old WebKitGTK+ could interpret 3 certificates as a bool true, then read only one certificate, and cache corruption would ensue. And the cache version is shared for all ports, so I fear this needs owner approval to bump the cache version. Let&apos;s see what Youenn thinks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1472425</commentid>
    <comment_count>4</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-10-26 07:25:55 -0700</bug_when>
    <thetext>(In reply to Claudio Saavedra from comment #2)
&gt; I also think that at some point it would be interesting to check if we can
&gt; factor the code to a common place so that both IPC and Cache coders use the
&gt; same encoding/decoding code/format. Not sure it&apos;s needed to have this
&gt; redundant code in different places. For now, let&apos;s fix this though.

We discussed this is probably to make it easier to make changes to the IPC coders.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1472436</commentid>
    <comment_count>5</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-10-26 07:38:38 -0700</bug_when>
    <thetext>Another question: what actually happens to these certificates stored in the cache?

Obviously they are not used for anything important, because without the full chain, they have been broken up till now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1472454</commentid>
    <comment_count>6</comment_count>
      <attachid>353177</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-10-26 08:18:02 -0700</bug_when>
    <thetext>Comment on attachment 353177
Patch

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

&gt; Source/WebKit/ChangeLog:9
&gt; +        the entire certificate chain in the cache coder.

Yes, we need to increment NetworkCache::Storage::version.
Incrementing the counter is invalidating the whole cache for all users.
I wonder whether this is okayish or whether we should introduce two counters, one for cross-platform changes and one for platform-specific changes.
John for some other stuff might bump the version for all platforms as well so maybe we do not care.
Antti, any suggestion?

&gt; Source/WebKit/NetworkProcess/cache/NetworkCacheCodersSoup.cpp:36
&gt; +        encoder &lt;&lt; 0;

Is there a guarantee that this line is always equivalent to below encoding of the vector?
I would tend to write it this way:
Vector&lt;GRefPtr&lt;GByteArray&gt;&gt; certificatesDataListFromCertificateInfo(const WebCore::CertificateInfo&amp; certificateInfo)
{
    if (!certificate)
        return { };
    ...
}

void Coder&lt;WebCore::CertificateInfo&gt;::encode(Encoder&amp; encoder, const WebCore::CertificateInfo&amp; certificateInfo)
{
    encoder &lt;&lt; certificatesDataListFromCertificateInfo(certificateInfo);
}

This requires introducing a coder for GRefPtr&lt;GByteArray&gt;.

&gt; Source/WebKit/NetworkProcess/cache/NetworkCacheCodersSoup.cpp:69
&gt;  {

Ditto here, we should be able to do: 
decoder &gt;&gt; certificateDataList;

That way, we are sure that encoding/decoding of the vector is consistent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1472466</commentid>
    <comment_count>7</comment_count>
      <attachid>353177</attachid>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2018-10-26 08:36:29 -0700</bug_when>
    <thetext>Comment on attachment 353177
Patch

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

&gt;&gt; Source/WebKit/NetworkProcess/cache/NetworkCacheCodersSoup.cpp:36
&gt;&gt; +        encoder &lt;&lt; 0;
&gt; 
&gt; Is there a guarantee that this line is always equivalent to below encoding of the vector?
&gt; I would tend to write it this way:
&gt; Vector&lt;GRefPtr&lt;GByteArray&gt;&gt; certificatesDataListFromCertificateInfo(const WebCore::CertificateInfo&amp; certificateInfo)
&gt; {
&gt;     if (!certificate)
&gt;         return { };
&gt;     ...
&gt; }
&gt; 
&gt; void Coder&lt;WebCore::CertificateInfo&gt;::encode(Encoder&amp; encoder, const WebCore::CertificateInfo&amp; certificateInfo)
&gt; {
&gt;     encoder &lt;&lt; certificatesDataListFromCertificateInfo(certificateInfo);
&gt; }
&gt; 
&gt; This requires introducing a coder for GRefPtr&lt;GByteArray&gt;.

GRefPtr&lt;GByteArray&gt; or just GByteArray?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1472470</commentid>
    <comment_count>8</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-10-26 08:49:13 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #6)
&gt; Yes, we need to increment NetworkCache::Storage::version.
&gt; Incrementing the counter is invalidating the whole cache for all users.
&gt; I wonder whether this is okayish or whether we should introduce two
&gt; counters, one for cross-platform changes and one for platform-specific
&gt; changes.
&gt; John for some other stuff might bump the version for all platforms as well
&gt; so maybe we do not care.
&gt; Antti, any suggestion?

It&apos;s the first time I remember having to do this, and I don&apos;t expect it to happen again anytime soon. So perhaps we should just remember to land this whenever you next need to bump the cache version.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1472473</commentid>
    <comment_count>9</comment_count>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2018-10-26 09:00:57 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #8)
&gt;  So perhaps we should just remember to land this
&gt; whenever you next need to bump the cache version.

Eh, no. Actually as it is the certificate chain for a resource loaded from the cache or from the network are different. From WK&apos;s pov it might not matter, but the WKGTK/WPE API will have inconsistent certificate info depending on whether a webview was loaded from the cache or the network. So I think we need to fix this before 2.24.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1472481</commentid>
    <comment_count>10</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-10-26 09:44:36 -0700</bug_when>
    <thetext>OK, good point. Then let&apos;s try to coordinate this bump with Antti and John.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1472537</commentid>
    <comment_count>11</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-10-26 12:23:20 -0700</bug_when>
    <thetext>&gt; GRefPtr&lt;GByteArray&gt; or just GByteArray?

Not sure, GRefPtr&lt;GByteArray&gt; will work.
You might be able to do like optional, see PersistentCoders.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473235</commentid>
    <comment_count>12</comment_count>
      <attachid>353363</attachid>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2018-10-30 06:02:17 -0700</bug_when>
    <thetext>Created attachment 353363
Patch

Let&apos;s try again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473250</commentid>
    <comment_count>13</comment_count>
      <attachid>353363</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-10-30 07:56:07 -0700</bug_when>
    <thetext>Comment on attachment 353363
Patch

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

&gt; Source/WebKit/NetworkProcess/cache/NetworkCacheCodersSoup.cpp:62
&gt; +    for (uint32_t i = 0; i &lt; certificatesDataList.size(); i++) {

for (auto&amp; certificateData : certificatesDataList) or remove the reverse above and decrement the counter here.

&gt; Source/WebKit/NetworkProcess/cache/NetworkCacheCodersSoup.cpp:85
&gt; +    decoder.decode(certificatesDataList);

We should probably check the returned value here.

&gt; Source/WebKit/NetworkProcess/cache/NetworkCacheCodersSoup.cpp:116
&gt; +    byteArray = adoptGRef(g_byte_array_append(bytes, vector.data(), vector.size()));

We do two memory allocations. Is GByteArray allowing to make only one?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473255</commentid>
    <comment_count>14</comment_count>
      <attachid>353363</attachid>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2018-10-30 08:07:21 -0700</bug_when>
    <thetext>Comment on attachment 353363
Patch

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

&gt;&gt; Source/WebKit/NetworkProcess/cache/NetworkCacheCodersSoup.cpp:116
&gt;&gt; +    byteArray = adoptGRef(g_byte_array_append(bytes, vector.data(), vector.size()));
&gt; 
&gt; We do two memory allocations. Is GByteArray allowing to make only one?

Not sure I understand. There&apos;s only one allocation, afaik (the new() call). g_byte_array_append() doesn&apos;t add a reference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473256</commentid>
    <comment_count>15</comment_count>
      <attachid>353368</attachid>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2018-10-30 08:09:55 -0700</bug_when>
    <thetext>Created attachment 353368
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473257</commentid>
    <comment_count>16</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-10-30 08:10:20 -0700</bug_when>
    <thetext>(In reply to Claudio Saavedra from comment #14)
&gt; Comment on attachment 353363 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=353363&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit/NetworkProcess/cache/NetworkCacheCodersSoup.cpp:116
&gt; &gt;&gt; +    byteArray = adoptGRef(g_byte_array_append(bytes, vector.data(), vector.size()));
&gt; &gt; 
&gt; &gt; We do two memory allocations. Is GByteArray allowing to make only one?
&gt; 
&gt; Not sure I understand. There&apos;s only one allocation, afaik (the new() call).
&gt; g_byte_array_append() doesn&apos;t add a reference.

There is the Vector&lt;allocation&gt; and then the GByteArray allocation.
I am not sure whether it is feasible to just have one allocation here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473263</commentid>
    <comment_count>17</comment_count>
      <attachid>353363</attachid>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2018-10-30 08:24:57 -0700</bug_when>
    <thetext>Comment on attachment 353363
Patch

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

&gt;&gt;&gt;&gt; Source/WebKit/NetworkProcess/cache/NetworkCacheCodersSoup.cpp:116
&gt;&gt;&gt;&gt; +    byteArray = adoptGRef(g_byte_array_append(bytes, vector.data(), vector.size()));
&gt;&gt;&gt; 
&gt;&gt;&gt; We do two memory allocations. Is GByteArray allowing to make only one?
&gt;&gt; 
&gt;&gt; Not sure I understand. There&apos;s only one allocation, afaik (the new() call). g_byte_array_append() doesn&apos;t add a reference.
&gt; 
&gt; There is the Vector&lt;allocation&gt; and then the GByteArray allocation.
&gt; I am not sure whether it is feasible to just have one allocation here.

I see. One can pass the data without reallocating it but then it will eventually be freed with g_free(). I&apos;m not sure if that will match whatever Vector is using to allocate memory.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473272</commentid>
    <comment_count>18</comment_count>
      <attachid>353373</attachid>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2018-10-30 09:00:29 -0700</bug_when>
    <thetext>Created attachment 353373
Patch

Okay, this should do it. Let&apos;s get rid of the need for a Vector and decode directly into the GByteArray.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473304</commentid>
    <comment_count>19</comment_count>
      <attachid>353373</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-10-30 10:41:02 -0700</bug_when>
    <thetext>Comment on attachment 353373
Patch

Should these be synced with the IPC coders now?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473336</commentid>
    <comment_count>20</comment_count>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2018-10-30 11:32:30 -0700</bug_when>
    <thetext>I don&apos;t think that&apos;s necessary. These are entirely independent implementations. We could improve the other one though but that&apos;s a story for another day..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473350</commentid>
    <comment_count>21</comment_count>
      <attachid>353373</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-10-30 12:06:46 -0700</bug_when>
    <thetext>Comment on attachment 353373
Patch

LGTM, it would be good to have another LGTM from soup side.

As of the refactoring for sharing with IPC, maybe a templated encode/decode routine could be added to CertificateInfo directly.
Some unit test might be feasible, especially if that was a source of issues in the past.

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

&gt; Source/WebKit/NetworkProcess/cache/NetworkCacheCodersSoup.cpp:90
&gt; +    certificateInfo.setCertificate(certificateFromCertificatesDataList(certificatesDataList).get());

Should setCertificate take a GRefPtr&lt;&gt;&amp;&amp;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473570</commentid>
    <comment_count>22</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-10-30 19:21:04 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #21) 
&gt; LGTM, it would be good to have another LGTM from soup side.

LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473626</commentid>
    <comment_count>23</comment_count>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2018-10-31 00:29:30 -0700</bug_when>
    <thetext>Committed r237628: &lt;https://trac.webkit.org/changeset/237628&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353177</attachid>
            <date>2018-10-26 05:53:52 -0700</date>
            <delta_ts>2018-10-30 06:02:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190956-20181026155350.patch</filename>
            <type>text/plain</type>
            <size>5064</size>
            <attacher name="Claudio Saavedra">csaavedra</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3MzgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDM2NjhiZjcxOWFmMjQ4OWU4
ZGUyN2JlMWJmNmQzNzU4YmU4MGE5YWMuLjBmOTExZDc1M2EwMzk5NzgxY2YyNWVjYTA0MTBkMTE5
ZjNiYjQ3YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTgtMTAtMjYgIENsYXVkaW8g
U2FhdmVkcmEgIDxjc2FhdmVkcmFAaWdhbGlhLmNvbT4KKworICAgICAgICBbV1BFXVtHVEtdIENl
cnRpZmljYXRlcyBsb2FkZWQgZnJvbSB0aGUgY2FjaGUgZG9uJ3QgaW5jbHVkZSB0aGUgY2VydGlm
aWNhdGUgY2hhaW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5MDk1NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFNpbWlsYXJseSB0byB3aGF0IHdhcyBkb25lIGZvciB0aGUgSVBDIGNvZGVycywgc2VyaWFs
aXplCisgICAgICAgIHRoZSBlbnRpcmUgY2VydGlmaWNhdGUgY2hhaW4gaW4gdGhlIGNhY2hlIGNv
ZGVyLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlQ29kZXJz
U291cC5jcHA6CisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjpDb2RlcjxXZWJDb3JlOjpDZXJ0
aWZpY2F0ZUluZm8+OjplbmNvZGUpOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6Q29kZXI8
V2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvPjo6ZGVjb2RlKToKKwogMjAxOC0xMC0yNCAgQ2xhdWRp
byBTYWF2ZWRyYSAgPGNzYWF2ZWRyYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtXUEVdW0dUS10g
Q2xlYW51cHMgdG8gdGhlIGNlcnRpZmljYXRlIGRlY29kZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlQ29kZXJzU291cC5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUNvZGVyc1NvdXAu
Y3BwCmluZGV4IDc3ODFmYzA3OTFhMWEzNjI2Y2Q1MzYxZjI1ZGU3YmQyYWMyYTFmYTkuLmEzNzk3
NWQ2OWUwZDg0NmZjZWU5YTIwOGRmOThlYWQzMWI3OTc0NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlQ29kZXJzU291cC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVDb2RlcnNT
b3VwLmNwcApAQCAtMzEsNTEgKzMxLDY1IEBAIG5hbWVzcGFjZSBQZXJzaXN0ZW5jZSB7CiAKIHZv
aWQgQ29kZXI8V2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvPjo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvKQogewot
ICAgIGlmICghY2VydGlmaWNhdGVJbmZvLmNlcnRpZmljYXRlKCkpIHsKLSAgICAgICAgZW5jb2Rl
ciA8PCBmYWxzZTsKKyAgICBhdXRvKiBjZXJ0aWZpY2F0ZSA9IGNlcnRpZmljYXRlSW5mby5jZXJ0
aWZpY2F0ZSgpOworICAgIGlmICghY2VydGlmaWNhdGUpIHsKKyAgICAgICAgZW5jb2RlciA8PCAw
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgR0J5dGVBcnJheSogY2VydGlmaWNhdGVE
YXRhID0gMDsKLSAgICBnX29iamVjdF9nZXQoR19PQkpFQ1QoY2VydGlmaWNhdGVJbmZvLmNlcnRp
ZmljYXRlKCkpLCAiY2VydGlmaWNhdGUiLCAmY2VydGlmaWNhdGVEYXRhLCBOVUxMKTsKLSAgICBp
ZiAoIWNlcnRpZmljYXRlRGF0YSkgewotICAgICAgICBlbmNvZGVyIDw8IGZhbHNlOwotICAgICAg
ICByZXR1cm47CisgICAgVmVjdG9yPEdSZWZQdHI8R0J5dGVBcnJheT4+IGNlcnRpZmljYXRlc0Rh
dGFMaXN0OworICAgIGZvciAoOyBjZXJ0aWZpY2F0ZTsgY2VydGlmaWNhdGUgPSBnX3Rsc19jZXJ0
aWZpY2F0ZV9nZXRfaXNzdWVyKGNlcnRpZmljYXRlKSkgeworICAgICAgICBHQnl0ZUFycmF5KiBj
ZXJ0aWZpY2F0ZURhdGEgPSBudWxscHRyOworICAgICAgICBnX29iamVjdF9nZXQoR19PQkpFQ1Qo
Y2VydGlmaWNhdGUpLCAiY2VydGlmaWNhdGUiLCAmY2VydGlmaWNhdGVEYXRhLCBudWxscHRyKTsK
KworICAgICAgICBpZiAoIWNlcnRpZmljYXRlRGF0YSkgeworICAgICAgICAgICAgY2VydGlmaWNh
dGVzRGF0YUxpc3QuY2xlYXIoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAg
ICAgICAgY2VydGlmaWNhdGVzRGF0YUxpc3QuYXBwZW5kKGFkb3B0R1JlZihjZXJ0aWZpY2F0ZURh
dGEpKTsKICAgICB9CiAKLSAgICBlbmNvZGVyIDw8IHRydWU7CisgICAgZW5jb2RlciA8PCBzdGF0
aWNfY2FzdDx1aW50MzJfdD4oY2VydGlmaWNhdGVzRGF0YUxpc3Quc2l6ZSgpKTsKIAotICAgIEdS
ZWZQdHI8R0J5dGVBcnJheT4gY2VydGlmaWNhdGUgPSBhZG9wdEdSZWYoY2VydGlmaWNhdGVEYXRh
KTsKLSAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihjZXJ0aWZpY2F0ZS0+bGVu
KTsKLSAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShjZXJ0aWZpY2F0ZS0+ZGF0YSwg
Y2VydGlmaWNhdGUtPmxlbik7CisgICAgaWYgKGNlcnRpZmljYXRlc0RhdGFMaXN0LmlzRW1wdHko
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gRW5jb2RlIHN0YXJ0aW5nIGZyb20gdGhlIHJv
b3QgY2VydGlmaWNhdGUuCisgICAgZm9yIChzaXplX3QgaSA9IGNlcnRpZmljYXRlc0RhdGFMaXN0
LnNpemUoKTsgaSA+IDA7IC0taSkgeworICAgICAgICBHQnl0ZUFycmF5KiBjZXJ0aWZpY2F0ZSA9
IGNlcnRpZmljYXRlc0RhdGFMaXN0W2kgLSAxXS5nZXQoKTsKKyAgICAgICAgZW5jb2RlciA8PCBz
dGF0aWNfY2FzdDx1aW50MzJfdD4oY2VydGlmaWNhdGUtPmxlbik7CisgICAgICAgIGVuY29kZXIu
ZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGNlcnRpZmljYXRlLT5kYXRhLCBjZXJ0aWZpY2F0ZS0+bGVu
KTsKKyAgICB9CiAKICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQzMl90PihjZXJ0aWZp
Y2F0ZUluZm8udGxzRXJyb3JzKCkpOwogfQogCiBib29sIENvZGVyPFdlYkNvcmU6OkNlcnRpZmlj
YXRlSW5mbz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUlu
Zm8mIGNlcnRpZmljYXRlSW5mbykKIHsKLSAgICBib29sIGhhc0NlcnRpZmljYXRlOwotICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoaGFzQ2VydGlmaWNhdGUpKQorICAgIHVpbnQzMl90IGNoYWluTGVu
Z3RoOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY2hhaW5MZW5ndGgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICBpZiAoIWhhc0NlcnRpZmljYXRlKQorICAgIGlmICghY2hhaW5MZW5n
dGgpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgdWludDY0X3Qgc2l6ZSA9IDA7Ci0gICAg
aWYgKCFkZWNvZGVyLmRlY29kZShzaXplKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
VmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcihzaXplKTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4
ZWRMZW5ndGhEYXRhKHZlY3Rvci5kYXRhKCksIHZlY3Rvci5zaXplKCkpKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICBHQnl0ZUFycmF5KiBjZXJ0aWZpY2F0ZURhdGEgPSBnX2J5dGVfYXJy
YXlfc2l6ZWRfbmV3KHZlY3Rvci5zaXplKCkpOwotICAgIGNlcnRpZmljYXRlRGF0YSA9IGdfYnl0
ZV9hcnJheV9hcHBlbmQoY2VydGlmaWNhdGVEYXRhLCB2ZWN0b3IuZGF0YSgpLCB2ZWN0b3Iuc2l6
ZSgpKTsKLSAgICBHUmVmUHRyPEdCeXRlQXJyYXk+IGNlcnRpZmljYXRlQnl0ZXMgPSBhZG9wdEdS
ZWYoY2VydGlmaWNhdGVEYXRhKTsKLQotICAgIEdUbHNCYWNrZW5kKiBiYWNrZW5kID0gZ190bHNf
YmFja2VuZF9nZXRfZGVmYXVsdCgpOwotICAgIEdSZWZQdHI8R1Rsc0NlcnRpZmljYXRlPiBjZXJ0
aWZpY2F0ZSA9IGFkb3B0R1JlZihHX1RMU19DRVJUSUZJQ0FURShnX2luaXRhYmxlX25ldygKLSAg
ICAgICAgZ190bHNfYmFja2VuZF9nZXRfY2VydGlmaWNhdGVfdHlwZShiYWNrZW5kKSwgMCwgMCwg
ImNlcnRpZmljYXRlIiwgY2VydGlmaWNhdGVCeXRlcy5nZXQoKSwgbnVsbHB0cikpKTsKKyAgICBH
VHlwZSBjZXJ0aWZpY2F0ZVR5cGUgPSBnX3Rsc19iYWNrZW5kX2dldF9jZXJ0aWZpY2F0ZV90eXBl
KGdfdGxzX2JhY2tlbmRfZ2V0X2RlZmF1bHQoKSk7CisgICAgR1JlZlB0cjxHVGxzQ2VydGlmaWNh
dGU+IGNlcnRpZmljYXRlOworICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBjaGFpbkxlbmd0
aDsgaSsrKSB7CisgICAgICAgIHVpbnQzMl90IHNpemU7CisgICAgICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoc2l6ZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIFZlY3Rvcjx1
aW50OF90PiB2ZWN0b3Ioc2l6ZSk7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGVGaXhlZExl
bmd0aERhdGEodmVjdG9yLmRhdGEoKSwgdmVjdG9yLnNpemUoKSkpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICAgICAgR0J5dGVBcnJheSogY2VydGlmaWNhdGVEYXRhID0gZ19ieXRl
X2FycmF5X3NpemVkX25ldyh2ZWN0b3Iuc2l6ZSgpKTsKKyAgICAgICAgR1JlZlB0cjxHQnl0ZUFy
cmF5PiBjZXJ0aWZpY2F0ZUJ5dGVzID0gYWRvcHRHUmVmKGdfYnl0ZV9hcnJheV9hcHBlbmQoY2Vy
dGlmaWNhdGVEYXRhLCB2ZWN0b3IuZGF0YSgpLCB2ZWN0b3Iuc2l6ZSgpKSk7CisKKyAgICAgICAg
Y2VydGlmaWNhdGUgPSBhZG9wdEdSZWYoR19UTFNfQ0VSVElGSUNBVEUoZ19pbml0YWJsZV9uZXco
CisgICAgICAgICAgICBjZXJ0aWZpY2F0ZVR5cGUsIG51bGxwdHIsIG51bGxwdHIsICJjZXJ0aWZp
Y2F0ZSIsIGNlcnRpZmljYXRlQnl0ZXMuZ2V0KCksICJpc3N1ZXIiLCBjZXJ0aWZpY2F0ZS5nZXQo
KSwgbnVsbHB0cikpKTsKKyAgICB9CiAgICAgY2VydGlmaWNhdGVJbmZvLnNldENlcnRpZmljYXRl
KGNlcnRpZmljYXRlLmdldCgpKTsKIAogICAgIHVpbnQzMl90IHRsc0Vycm9yczsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353363</attachid>
            <date>2018-10-30 06:02:17 -0700</date>
            <delta_ts>2018-10-30 08:09:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190956-20181030150216.patch</filename>
            <type>text/plain</type>
            <size>8466</size>
            <attacher name="Claudio Saavedra">csaavedra</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3NTg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDc4Njk1YTUyMjYyMjBjMDVh
YTkwNjgxNjJlYTEyNmEyYWRjODc2NmMuLjdiOGZiN2VlOWIwNzIyMzZjM2NiNmFjMzk4ZjA3YWYz
ZTg5MDVjNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTgtMTAtMzAgIENsYXVkaW8g
U2FhdmVkcmEgIDxjc2FhdmVkcmFAaWdhbGlhLmNvbT4KKworICAgICAgICBbV1BFXVtHVEtdIENl
cnRpZmljYXRlcyBsb2FkZWQgZnJvbSB0aGUgY2FjaGUgZG9uJ3QgaW5jbHVkZSB0aGUgY2VydGlm
aWNhdGUgY2hhaW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5MDk1NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFNpbWlsYXJseSB0byB3aGF0IHdhcyBkb25lIGZvciB0aGUgSVBDIGNvZGVycywgc2VyaWFs
aXplCisgICAgICAgIHRoZSBlbnRpcmUgY2VydGlmaWNhdGUgY2hhaW4gaW4gdGhlIGNhY2hlIGNv
ZGVyLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlQ29kZXJz
Lmg6IEFkZCBHUmVmUHRyPEdCeXRlQXJyYXk+IGNvZGVycy4KKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVDb2RlcnNTb3VwLmNwcDoKKyAgICAgICAgKFdURjo6UGVy
c2lzdGVuY2U6OmNlcnRpZmljYXRlc0RhdGFMaXN0RnJvbUNlcnRpZmljYXRlSW5mbyk6CisgICAg
ICAgIChXVEY6OlBlcnNpc3RlbmNlOjpjZXJ0aWZpY2F0ZUZyb21DZXJ0aWZpY2F0ZXNEYXRhTGlz
dCk6IEhlbHBlcnMuCisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjpDb2RlcjxXZWJDb3JlOjpD
ZXJ0aWZpY2F0ZUluZm8+OjplbmNvZGUpOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6Q29k
ZXI8V2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvPjo6ZGVjb2RlKToKKyAgICAgICAgKFdURjo6UGVy
c2lzdGVuY2U6OkNvZGVyPEdSZWZQdHI8R0J5dGVBcnJheT4+OjplbmNvZGUpOgorICAgICAgICAo
V1RGOjpQZXJzaXN0ZW5jZTo6Q29kZXI8R1JlZlB0cjxHQnl0ZUFycmF5Pj46OmRlY29kZSk6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5oOiBCdW1w
IHRoZSBjYWNoZSB2ZXJzaW9uLgorCiAyMDE4LTEwLTI5ICBEZXdlaSBaaHUgIDxkZXdlaV96aHVA
YXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUgJ1Byb2Nlc3NTd2FwT25Dcm9zc1NpdGVOYXZpZ2F0
aW9uRW5hYmxlZCcgdG8gJ2V4cGVyaW1lbnRhbCcgY2F0ZWdvcnkuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUNvZGVycy5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVDb2RlcnMuaAppbmRl
eCA4MzEwNjI2NTE1Y2RmZjRkMDRkN2EwYmIxNGY2Yzc1NzQwYzc4YzI5Li40YjYwOTQzMzc4YTE2
ZmFlZTQwMjc1ZDE1Mzk2M2U5YWY0MjBiMmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUNvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlQ29kZXJzLmgKQEAgLTEsNSArMSw2
IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDE0LTIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSBTLkwuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTUwLDUgKzUxLDEyIEBAIHRlbXBsYXRlPD4g
c3RydWN0IENvZGVyPFdlYkNvcmU6OkhUVFBIZWFkZXJNYXA+IHsKICAgICBzdGF0aWMgYm9vbCBk
ZWNvZGUoRGVjb2RlciYsIFdlYkNvcmU6OkhUVFBIZWFkZXJNYXAmKTsKIH07CiAKKyNpZiBVU0Uo
R0xJQikKK3RlbXBsYXRlPD4gc3RydWN0IENvZGVyPEdSZWZQdHI8R0J5dGVBcnJheT4+IHsKKyAg
ICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IEdSZWZQdHI8R0J5dGVBcnJheT4m
KTsKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYsIEdSZWZQdHI8R0J5dGVBcnJheT4m
KTsKK307CisjZW5kaWYKKwogfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVDb2RlcnNTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlQ29kZXJzU291cC5jcHAKaW5kZXggNzc4
MWZjMDc5MWExYTM2MjZjZDUzNjFmMjVkZTdiZDJhYzJhMWZhOS4uMGJjZTg3MDA0YjU5ZTZjZDE2
YTc3NWY0ZGYyNWRlMjUxMTE1MzdiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVDb2RlcnNTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUNvZGVyc1NvdXAuY3BwCkBAIC0x
LDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxNC0yMDE1IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOCBJZ2FsaWEgUy5M
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSwzOSArMzAsODEgQEAKIG5h
bWVzcGFjZSBXVEYgewogbmFtZXNwYWNlIFBlcnNpc3RlbmNlIHsKIAotdm9pZCBDb2RlcjxXZWJD
b3JlOjpDZXJ0aWZpY2F0ZUluZm8+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2Vi
Q29yZTo6Q2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8pCisKK3N0YXRpYyBWZWN0b3I8
R1JlZlB0cjxHQnl0ZUFycmF5Pj4gY2VydGlmaWNhdGVzRGF0YUxpc3RGcm9tQ2VydGlmaWNhdGVJ
bmZvKGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyAmY2VydGlmaWNhdGVJbmZvKQogewot
ICAgIGlmICghY2VydGlmaWNhdGVJbmZvLmNlcnRpZmljYXRlKCkpIHsKLSAgICAgICAgZW5jb2Rl
ciA8PCBmYWxzZTsKLSAgICAgICAgcmV0dXJuOworICAgIGF1dG8qIGNlcnRpZmljYXRlID0gY2Vy
dGlmaWNhdGVJbmZvLmNlcnRpZmljYXRlKCk7CisgICAgaWYgKCFjZXJ0aWZpY2F0ZSkKKyAgICAg
ICAgcmV0dXJuIHsgfTsKKworICAgIFZlY3RvcjxHUmVmUHRyPEdCeXRlQXJyYXk+PiBjZXJ0aWZp
Y2F0ZXNEYXRhTGlzdDsKKyAgICBmb3IgKDsgY2VydGlmaWNhdGU7IGNlcnRpZmljYXRlID0gZ190
bHNfY2VydGlmaWNhdGVfZ2V0X2lzc3VlcihjZXJ0aWZpY2F0ZSkpIHsKKyAgICAgICAgR0J5dGVB
cnJheSogY2VydGlmaWNhdGVEYXRhID0gbnVsbHB0cjsKKyAgICAgICAgZ19vYmplY3RfZ2V0KEdf
T0JKRUNUKGNlcnRpZmljYXRlKSwgImNlcnRpZmljYXRlIiwgJmNlcnRpZmljYXRlRGF0YSwgbnVs
bHB0cik7CisKKyAgICAgICAgaWYgKCFjZXJ0aWZpY2F0ZURhdGEpIHsKKyAgICAgICAgICAgIGNl
cnRpZmljYXRlc0RhdGFMaXN0LmNsZWFyKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorICAgICAgICBjZXJ0aWZpY2F0ZXNEYXRhTGlzdC5hcHBlbmQoYWRvcHRHUmVmKGNlcnRpZmlj
YXRlRGF0YSkpOwogICAgIH0KIAotICAgIEdCeXRlQXJyYXkqIGNlcnRpZmljYXRlRGF0YSA9IDA7
Ci0gICAgZ19vYmplY3RfZ2V0KEdfT0JKRUNUKGNlcnRpZmljYXRlSW5mby5jZXJ0aWZpY2F0ZSgp
KSwgImNlcnRpZmljYXRlIiwgJmNlcnRpZmljYXRlRGF0YSwgTlVMTCk7Ci0gICAgaWYgKCFjZXJ0
aWZpY2F0ZURhdGEpIHsKLSAgICAgICAgZW5jb2RlciA8PCBmYWxzZTsKLSAgICAgICAgcmV0dXJu
OworICAgIC8vIFJldmVyc2Ugc28gdGhhdCB0aGUgbGlzdCBzdGFydHMgZnJvbSB0aGUgcm9vdG1v
c3QgY2VydGlmaWNhdGUuCisgICAgY2VydGlmaWNhdGVzRGF0YUxpc3QucmV2ZXJzZSgpOworCisg
ICAgcmV0dXJuIGNlcnRpZmljYXRlc0RhdGFMaXN0OworfQorCitzdGF0aWMgR1JlZlB0cjxHVGxz
Q2VydGlmaWNhdGU+IGNlcnRpZmljYXRlRnJvbUNlcnRpZmljYXRlc0RhdGFMaXN0KGNvbnN0IFZl
Y3RvcjxHUmVmUHRyPEdCeXRlQXJyYXk+PiAmY2VydGlmaWNhdGVzRGF0YUxpc3QpCit7CisgICAg
R1R5cGUgY2VydGlmaWNhdGVUeXBlID0gZ190bHNfYmFja2VuZF9nZXRfY2VydGlmaWNhdGVfdHlw
ZShnX3Rsc19iYWNrZW5kX2dldF9kZWZhdWx0KCkpOworICAgIEdSZWZQdHI8R1Rsc0NlcnRpZmlj
YXRlPiBjZXJ0aWZpY2F0ZTsKKyAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgY2VydGlmaWNh
dGVzRGF0YUxpc3Quc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgY2VydGlmaWNhdGUgPSBhZG9wdEdS
ZWYoR19UTFNfQ0VSVElGSUNBVEUoZ19pbml0YWJsZV9uZXcoCisgICAgICAgICAgICBjZXJ0aWZp
Y2F0ZVR5cGUsIG51bGxwdHIsIG51bGxwdHIsICJjZXJ0aWZpY2F0ZSIsIGNlcnRpZmljYXRlc0Rh
dGFMaXN0W2ldLmdldCgpLCAiaXNzdWVyIiwgY2VydGlmaWNhdGUuZ2V0KCksIG51bGxwdHIpKSk7
CiAgICAgfQogCi0gICAgZW5jb2RlciA8PCB0cnVlOworICAgIHJldHVybiBjZXJ0aWZpY2F0ZTsK
K30KIAotICAgIEdSZWZQdHI8R0J5dGVBcnJheT4gY2VydGlmaWNhdGUgPSBhZG9wdEdSZWYoY2Vy
dGlmaWNhdGVEYXRhKTsKLSAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihjZXJ0
aWZpY2F0ZS0+bGVuKTsKLSAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShjZXJ0aWZp
Y2F0ZS0+ZGF0YSwgY2VydGlmaWNhdGUtPmxlbik7Cit2b2lkIENvZGVyPFdlYkNvcmU6OkNlcnRp
ZmljYXRlSW5mbz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpDZXJ0
aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbykKK3sKKyAgICBhdXRvIGNlcnRpZmljYXRlc0Rh
dGFMaXN0ID0gY2VydGlmaWNhdGVzRGF0YUxpc3RGcm9tQ2VydGlmaWNhdGVJbmZvKGNlcnRpZmlj
YXRlSW5mbyk7CisKKyAgICBlbmNvZGVyIDw8IGNlcnRpZmljYXRlc0RhdGFMaXN0OworCisgICAg
aWYgKGNlcnRpZmljYXRlc0RhdGFMaXN0LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOwogCiAg
ICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oY2VydGlmaWNhdGVJbmZvLnRsc0Vy
cm9ycygpKTsKIH0KIAogYm9vbCBDb2RlcjxXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8+OjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlciwgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0
ZUluZm8pCiB7Ci0gICAgYm9vbCBoYXNDZXJ0aWZpY2F0ZTsKLSAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGhhc0NlcnRpZmljYXRlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIFZlY3RvcjxH
UmVmUHRyPEdCeXRlQXJyYXk+PiBjZXJ0aWZpY2F0ZXNEYXRhTGlzdDsKKyAgICBkZWNvZGVyLmRl
Y29kZShjZXJ0aWZpY2F0ZXNEYXRhTGlzdCk7CiAKLSAgICBpZiAoIWhhc0NlcnRpZmljYXRlKQor
ICAgIGlmIChjZXJ0aWZpY2F0ZXNEYXRhTGlzdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB0
cnVlOworICAgIGNlcnRpZmljYXRlSW5mby5zZXRDZXJ0aWZpY2F0ZShjZXJ0aWZpY2F0ZUZyb21D
ZXJ0aWZpY2F0ZXNEYXRhTGlzdChjZXJ0aWZpY2F0ZXNEYXRhTGlzdCkuZ2V0KCkpOwogCi0gICAg
dWludDY0X3Qgc2l6ZSA9IDA7CisgICAgdWludDMyX3QgdGxzRXJyb3JzOworICAgIGlmICghZGVj
b2Rlci5kZWNvZGUodGxzRXJyb3JzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGNlcnRp
ZmljYXRlSW5mby5zZXRUTFNFcnJvcnMoc3RhdGljX2Nhc3Q8R1Rsc0NlcnRpZmljYXRlRmxhZ3M+
KHRsc0Vycm9ycykpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgQ29kZXI8R1JlZlB0
cjxHQnl0ZUFycmF5Pj46OmVuY29kZShFbmNvZGVyICZlbmNvZGVyLCBjb25zdCBHUmVmUHRyPEdC
eXRlQXJyYXk+JiBieXRlQXJyYXkpCit7CisgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50
MzJfdD4oYnl0ZUFycmF5LT5sZW4pOworICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRh
KGJ5dGVBcnJheS0+ZGF0YSwgYnl0ZUFycmF5LT5sZW4pOworfQorCitib29sIENvZGVyPEdSZWZQ
dHI8R0J5dGVBcnJheT4+OjpkZWNvZGUoRGVjb2RlciAmZGVjb2RlciwgR1JlZlB0cjxHQnl0ZUFy
cmF5PiYgYnl0ZUFycmF5KQoreworICAgIHVpbnQzMl90IHNpemU7CiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShzaXplKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC02OSwxOSArMTEyLDgg
QEAgYm9vbCBDb2RlcjxXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8+OjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlciwgV2ViQ29yZTo6Q2VydGlmaWMKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4ZWRM
ZW5ndGhEYXRhKHZlY3Rvci5kYXRhKCksIHZlY3Rvci5zaXplKCkpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICBHQnl0ZUFycmF5KiBjZXJ0aWZpY2F0ZURhdGEgPSBnX2J5dGVfYXJyYXlf
c2l6ZWRfbmV3KHZlY3Rvci5zaXplKCkpOwotICAgIGNlcnRpZmljYXRlRGF0YSA9IGdfYnl0ZV9h
cnJheV9hcHBlbmQoY2VydGlmaWNhdGVEYXRhLCB2ZWN0b3IuZGF0YSgpLCB2ZWN0b3Iuc2l6ZSgp
KTsKLSAgICBHUmVmUHRyPEdCeXRlQXJyYXk+IGNlcnRpZmljYXRlQnl0ZXMgPSBhZG9wdEdSZWYo
Y2VydGlmaWNhdGVEYXRhKTsKLQotICAgIEdUbHNCYWNrZW5kKiBiYWNrZW5kID0gZ190bHNfYmFj
a2VuZF9nZXRfZGVmYXVsdCgpOwotICAgIEdSZWZQdHI8R1Rsc0NlcnRpZmljYXRlPiBjZXJ0aWZp
Y2F0ZSA9IGFkb3B0R1JlZihHX1RMU19DRVJUSUZJQ0FURShnX2luaXRhYmxlX25ldygKLSAgICAg
ICAgZ190bHNfYmFja2VuZF9nZXRfY2VydGlmaWNhdGVfdHlwZShiYWNrZW5kKSwgMCwgMCwgImNl
cnRpZmljYXRlIiwgY2VydGlmaWNhdGVCeXRlcy5nZXQoKSwgbnVsbHB0cikpKTsKLSAgICBjZXJ0
aWZpY2F0ZUluZm8uc2V0Q2VydGlmaWNhdGUoY2VydGlmaWNhdGUuZ2V0KCkpOwotCi0gICAgdWlu
dDMyX3QgdGxzRXJyb3JzOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUodGxzRXJyb3JzKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGNlcnRpZmljYXRlSW5mby5zZXRUTFNFcnJvcnMoc3Rh
dGljX2Nhc3Q8R1Rsc0NlcnRpZmljYXRlRmxhZ3M+KHRsc0Vycm9ycykpOworICAgIEdCeXRlQXJy
YXkqIGJ5dGVzID0gZ19ieXRlX2FycmF5X3NpemVkX25ldyh2ZWN0b3Iuc2l6ZSgpKTsKKyAgICBi
eXRlQXJyYXkgPSBhZG9wdEdSZWYoZ19ieXRlX2FycmF5X2FwcGVuZChieXRlcywgdmVjdG9yLmRh
dGEoKSwgdmVjdG9yLnNpemUoKSkpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2Uu
aCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFn
ZS5oCmluZGV4IDA5Yzg3M2JjOGI5MTlmYjNlNGIxOTBjMzc5NTBhYjM5MTFlZGU1YmUuLmFjZDJm
ZTRlMWZhN2ZkMWQzZjlkYzdiMGVkMTNmMGM4Mjc2ODA0MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5oCkBA
IC0xMDcsNyArMTA3LDcgQEAgcHVibGljOgogICAgIHNpemVfdCBhcHByb3hpbWF0ZVNpemUoKSBj
b25zdDsKIAogICAgIC8vIEluY3JlbWVudGluZyB0aGlzIG51bWJlciB3aWxsIGRlbGV0ZSBhbGwg
ZXhpc3RpbmcgY2FjaGUgY29udGVudCBmb3IgZXZlcnlvbmUuIERvIHlvdSByZWFsbHkgbmVlZCB0
byBkbyBpdD8KLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgdmVyc2lvbiA9IDEzOworICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCB2ZXJzaW9uID0gMTQ7CiAjaWYgUExBVEZPUk0oTUFDKQogICAg
IC8vLyBBbGxvdyB0aGUgbGFzdCBzdGFibGUgdmVyc2lvbiBvZiB0aGUgY2FjaGUgdG8gY28tZXhp
c3Qgd2l0aCB0aGUgbGF0ZXN0IGRldmVsb3BtZW50IG9uZS4KICAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgbGFzdFN0YWJsZVZlcnNpb24gPSAxMzsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353368</attachid>
            <date>2018-10-30 08:09:55 -0700</date>
            <delta_ts>2018-10-30 09:00:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190956-20181030170953.patch</filename>
            <type>text/plain</type>
            <size>8455</size>
            <attacher name="Claudio Saavedra">csaavedra</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3NTg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDc4Njk1YTUyMjYyMjBjMDVh
YTkwNjgxNjJlYTEyNmEyYWRjODc2NmMuLjdiOGZiN2VlOWIwNzIyMzZjM2NiNmFjMzk4ZjA3YWYz
ZTg5MDVjNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTgtMTAtMzAgIENsYXVkaW8g
U2FhdmVkcmEgIDxjc2FhdmVkcmFAaWdhbGlhLmNvbT4KKworICAgICAgICBbV1BFXVtHVEtdIENl
cnRpZmljYXRlcyBsb2FkZWQgZnJvbSB0aGUgY2FjaGUgZG9uJ3QgaW5jbHVkZSB0aGUgY2VydGlm
aWNhdGUgY2hhaW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5MDk1NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFNpbWlsYXJseSB0byB3aGF0IHdhcyBkb25lIGZvciB0aGUgSVBDIGNvZGVycywgc2VyaWFs
aXplCisgICAgICAgIHRoZSBlbnRpcmUgY2VydGlmaWNhdGUgY2hhaW4gaW4gdGhlIGNhY2hlIGNv
ZGVyLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlQ29kZXJz
Lmg6IEFkZCBHUmVmUHRyPEdCeXRlQXJyYXk+IGNvZGVycy4KKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVDb2RlcnNTb3VwLmNwcDoKKyAgICAgICAgKFdURjo6UGVy
c2lzdGVuY2U6OmNlcnRpZmljYXRlc0RhdGFMaXN0RnJvbUNlcnRpZmljYXRlSW5mbyk6CisgICAg
ICAgIChXVEY6OlBlcnNpc3RlbmNlOjpjZXJ0aWZpY2F0ZUZyb21DZXJ0aWZpY2F0ZXNEYXRhTGlz
dCk6IEhlbHBlcnMuCisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjpDb2RlcjxXZWJDb3JlOjpD
ZXJ0aWZpY2F0ZUluZm8+OjplbmNvZGUpOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6Q29k
ZXI8V2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvPjo6ZGVjb2RlKToKKyAgICAgICAgKFdURjo6UGVy
c2lzdGVuY2U6OkNvZGVyPEdSZWZQdHI8R0J5dGVBcnJheT4+OjplbmNvZGUpOgorICAgICAgICAo
V1RGOjpQZXJzaXN0ZW5jZTo6Q29kZXI8R1JlZlB0cjxHQnl0ZUFycmF5Pj46OmRlY29kZSk6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5oOiBCdW1w
IHRoZSBjYWNoZSB2ZXJzaW9uLgorCiAyMDE4LTEwLTI5ICBEZXdlaSBaaHUgIDxkZXdlaV96aHVA
YXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUgJ1Byb2Nlc3NTd2FwT25Dcm9zc1NpdGVOYXZpZ2F0
aW9uRW5hYmxlZCcgdG8gJ2V4cGVyaW1lbnRhbCcgY2F0ZWdvcnkuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUNvZGVycy5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVDb2RlcnMuaAppbmRl
eCA4MzEwNjI2NTE1Y2RmZjRkMDRkN2EwYmIxNGY2Yzc1NzQwYzc4YzI5Li40YjYwOTQzMzc4YTE2
ZmFlZTQwMjc1ZDE1Mzk2M2U5YWY0MjBiMmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUNvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlQ29kZXJzLmgKQEAgLTEsNSArMSw2
IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDE0LTIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSBTLkwuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTUwLDUgKzUxLDEyIEBAIHRlbXBsYXRlPD4g
c3RydWN0IENvZGVyPFdlYkNvcmU6OkhUVFBIZWFkZXJNYXA+IHsKICAgICBzdGF0aWMgYm9vbCBk
ZWNvZGUoRGVjb2RlciYsIFdlYkNvcmU6OkhUVFBIZWFkZXJNYXAmKTsKIH07CiAKKyNpZiBVU0Uo
R0xJQikKK3RlbXBsYXRlPD4gc3RydWN0IENvZGVyPEdSZWZQdHI8R0J5dGVBcnJheT4+IHsKKyAg
ICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IEdSZWZQdHI8R0J5dGVBcnJheT4m
KTsKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYsIEdSZWZQdHI8R0J5dGVBcnJheT4m
KTsKK307CisjZW5kaWYKKwogfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVDb2RlcnNTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlQ29kZXJzU291cC5jcHAKaW5kZXggNzc4
MWZjMDc5MWExYTM2MjZjZDUzNjFmMjVkZTdiZDJhYzJhMWZhOS4uY2U3NDNkN2Q5YjY3OTMxZjI2
OWY4MGZhY2MzNTk3M2NhNjIwNmYwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVDb2RlcnNTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUNvZGVyc1NvdXAuY3BwCkBAIC0x
LDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxNC0yMDE1IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOCBJZ2FsaWEgUy5M
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSwzOSArMzAsODIgQEAKIG5h
bWVzcGFjZSBXVEYgewogbmFtZXNwYWNlIFBlcnNpc3RlbmNlIHsKIAotdm9pZCBDb2RlcjxXZWJD
b3JlOjpDZXJ0aWZpY2F0ZUluZm8+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2Vi
Q29yZTo6Q2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8pCisKK3N0YXRpYyBWZWN0b3I8
R1JlZlB0cjxHQnl0ZUFycmF5Pj4gY2VydGlmaWNhdGVzRGF0YUxpc3RGcm9tQ2VydGlmaWNhdGVJ
bmZvKGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyAmY2VydGlmaWNhdGVJbmZvKQogewot
ICAgIGlmICghY2VydGlmaWNhdGVJbmZvLmNlcnRpZmljYXRlKCkpIHsKLSAgICAgICAgZW5jb2Rl
ciA8PCBmYWxzZTsKLSAgICAgICAgcmV0dXJuOworICAgIGF1dG8qIGNlcnRpZmljYXRlID0gY2Vy
dGlmaWNhdGVJbmZvLmNlcnRpZmljYXRlKCk7CisgICAgaWYgKCFjZXJ0aWZpY2F0ZSkKKyAgICAg
ICAgcmV0dXJuIHsgfTsKKworICAgIFZlY3RvcjxHUmVmUHRyPEdCeXRlQXJyYXk+PiBjZXJ0aWZp
Y2F0ZXNEYXRhTGlzdDsKKyAgICBmb3IgKDsgY2VydGlmaWNhdGU7IGNlcnRpZmljYXRlID0gZ190
bHNfY2VydGlmaWNhdGVfZ2V0X2lzc3VlcihjZXJ0aWZpY2F0ZSkpIHsKKyAgICAgICAgR0J5dGVB
cnJheSogY2VydGlmaWNhdGVEYXRhID0gbnVsbHB0cjsKKyAgICAgICAgZ19vYmplY3RfZ2V0KEdf
T0JKRUNUKGNlcnRpZmljYXRlKSwgImNlcnRpZmljYXRlIiwgJmNlcnRpZmljYXRlRGF0YSwgbnVs
bHB0cik7CisKKyAgICAgICAgaWYgKCFjZXJ0aWZpY2F0ZURhdGEpIHsKKyAgICAgICAgICAgIGNl
cnRpZmljYXRlc0RhdGFMaXN0LmNsZWFyKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorICAgICAgICBjZXJ0aWZpY2F0ZXNEYXRhTGlzdC5hcHBlbmQoYWRvcHRHUmVmKGNlcnRpZmlj
YXRlRGF0YSkpOwogICAgIH0KIAotICAgIEdCeXRlQXJyYXkqIGNlcnRpZmljYXRlRGF0YSA9IDA7
Ci0gICAgZ19vYmplY3RfZ2V0KEdfT0JKRUNUKGNlcnRpZmljYXRlSW5mby5jZXJ0aWZpY2F0ZSgp
KSwgImNlcnRpZmljYXRlIiwgJmNlcnRpZmljYXRlRGF0YSwgTlVMTCk7Ci0gICAgaWYgKCFjZXJ0
aWZpY2F0ZURhdGEpIHsKLSAgICAgICAgZW5jb2RlciA8PCBmYWxzZTsKLSAgICAgICAgcmV0dXJu
OworICAgIC8vIFJldmVyc2Ugc28gdGhhdCB0aGUgbGlzdCBzdGFydHMgZnJvbSB0aGUgcm9vdG1v
c3QgY2VydGlmaWNhdGUuCisgICAgY2VydGlmaWNhdGVzRGF0YUxpc3QucmV2ZXJzZSgpOworCisg
ICAgcmV0dXJuIGNlcnRpZmljYXRlc0RhdGFMaXN0OworfQorCitzdGF0aWMgR1JlZlB0cjxHVGxz
Q2VydGlmaWNhdGU+IGNlcnRpZmljYXRlRnJvbUNlcnRpZmljYXRlc0RhdGFMaXN0KGNvbnN0IFZl
Y3RvcjxHUmVmUHRyPEdCeXRlQXJyYXk+PiAmY2VydGlmaWNhdGVzRGF0YUxpc3QpCit7CisgICAg
R1R5cGUgY2VydGlmaWNhdGVUeXBlID0gZ190bHNfYmFja2VuZF9nZXRfY2VydGlmaWNhdGVfdHlw
ZShnX3Rsc19iYWNrZW5kX2dldF9kZWZhdWx0KCkpOworICAgIEdSZWZQdHI8R1Rsc0NlcnRpZmlj
YXRlPiBjZXJ0aWZpY2F0ZTsKKyAgICBmb3IgKGF1dG8mIGNlcnRpZmljYXRlRGF0YSA6IGNlcnRp
ZmljYXRlc0RhdGFMaXN0KSB7CisgICAgICAgIGNlcnRpZmljYXRlID0gYWRvcHRHUmVmKEdfVExT
X0NFUlRJRklDQVRFKGdfaW5pdGFibGVfbmV3KAorICAgICAgICAgICAgY2VydGlmaWNhdGVUeXBl
LCBudWxscHRyLCBudWxscHRyLCAiY2VydGlmaWNhdGUiLCBjZXJ0aWZpY2F0ZURhdGEuZ2V0KCks
ICJpc3N1ZXIiLCBjZXJ0aWZpY2F0ZS5nZXQoKSwgbnVsbHB0cikpKTsKICAgICB9CiAKLSAgICBl
bmNvZGVyIDw8IHRydWU7CisgICAgcmV0dXJuIGNlcnRpZmljYXRlOworfQorCit2b2lkIENvZGVy
PFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25z
dCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbykKK3sKKyAgICBhdXRv
IGNlcnRpZmljYXRlc0RhdGFMaXN0ID0gY2VydGlmaWNhdGVzRGF0YUxpc3RGcm9tQ2VydGlmaWNh
dGVJbmZvKGNlcnRpZmljYXRlSW5mbyk7CiAKLSAgICBHUmVmUHRyPEdCeXRlQXJyYXk+IGNlcnRp
ZmljYXRlID0gYWRvcHRHUmVmKGNlcnRpZmljYXRlRGF0YSk7Ci0gICAgZW5jb2RlciA8PCBzdGF0
aWNfY2FzdDx1aW50NjRfdD4oY2VydGlmaWNhdGUtPmxlbik7Ci0gICAgZW5jb2Rlci5lbmNvZGVG
aXhlZExlbmd0aERhdGEoY2VydGlmaWNhdGUtPmRhdGEsIGNlcnRpZmljYXRlLT5sZW4pOworICAg
IGVuY29kZXIgPDwgY2VydGlmaWNhdGVzRGF0YUxpc3Q7CisKKyAgICBpZiAoY2VydGlmaWNhdGVz
RGF0YUxpc3QuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CiAKICAgICBlbmNvZGVyIDw8IHN0
YXRpY19jYXN0PHVpbnQzMl90PihjZXJ0aWZpY2F0ZUluZm8udGxzRXJyb3JzKCkpOwogfQogCiBi
b29sIENvZGVyPFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbz46OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyLCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbykKIHsKLSAgICBi
b29sIGhhc0NlcnRpZmljYXRlOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzQ2VydGlmaWNh
dGUpKQorICAgIFZlY3RvcjxHUmVmUHRyPEdCeXRlQXJyYXk+PiBjZXJ0aWZpY2F0ZXNEYXRhTGlz
dDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNlcnRpZmljYXRlc0RhdGFMaXN0KSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKCFoYXNDZXJ0aWZpY2F0ZSkKKyAgICBpZiAoY2Vy
dGlmaWNhdGVzRGF0YUxpc3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBj
ZXJ0aWZpY2F0ZUluZm8uc2V0Q2VydGlmaWNhdGUoY2VydGlmaWNhdGVGcm9tQ2VydGlmaWNhdGVz
RGF0YUxpc3QoY2VydGlmaWNhdGVzRGF0YUxpc3QpLmdldCgpKTsKKworICAgIHVpbnQzMl90IHRs
c0Vycm9yczsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHRsc0Vycm9ycykpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBjZXJ0aWZpY2F0ZUluZm8uc2V0VExTRXJyb3JzKHN0YXRpY19jYXN0
PEdUbHNDZXJ0aWZpY2F0ZUZsYWdzPih0bHNFcnJvcnMpKTsKKworICAgIHJldHVybiB0cnVlOwor
fQorCit2b2lkIENvZGVyPEdSZWZQdHI8R0J5dGVBcnJheT4+OjplbmNvZGUoRW5jb2RlciAmZW5j
b2RlciwgY29uc3QgR1JlZlB0cjxHQnl0ZUFycmF5PiYgYnl0ZUFycmF5KQoreworICAgIGVuY29k
ZXIgPDwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGJ5dGVBcnJheS0+bGVuKTsKKyAgICBlbmNvZGVy
LmVuY29kZUZpeGVkTGVuZ3RoRGF0YShieXRlQXJyYXktPmRhdGEsIGJ5dGVBcnJheS0+bGVuKTsK
K30KIAotICAgIHVpbnQ2NF90IHNpemUgPSAwOworYm9vbCBDb2RlcjxHUmVmUHRyPEdCeXRlQXJy
YXk+Pjo6ZGVjb2RlKERlY29kZXIgJmRlY29kZXIsIEdSZWZQdHI8R0J5dGVBcnJheT4mIGJ5dGVB
cnJheSkKK3sKKyAgICB1aW50MzJfdCBzaXplOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2l6
ZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNjksMTkgKzExMyw4IEBAIGJvb2wgQ29k
ZXI8V2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFdl
YkNvcmU6OkNlcnRpZmljCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YSh2
ZWN0b3IuZGF0YSgpLCB2ZWN0b3Iuc2l6ZSgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgR0J5dGVBcnJheSogY2VydGlmaWNhdGVEYXRhID0gZ19ieXRlX2FycmF5X3NpemVkX25ldyh2
ZWN0b3Iuc2l6ZSgpKTsKLSAgICBjZXJ0aWZpY2F0ZURhdGEgPSBnX2J5dGVfYXJyYXlfYXBwZW5k
KGNlcnRpZmljYXRlRGF0YSwgdmVjdG9yLmRhdGEoKSwgdmVjdG9yLnNpemUoKSk7Ci0gICAgR1Jl
ZlB0cjxHQnl0ZUFycmF5PiBjZXJ0aWZpY2F0ZUJ5dGVzID0gYWRvcHRHUmVmKGNlcnRpZmljYXRl
RGF0YSk7Ci0KLSAgICBHVGxzQmFja2VuZCogYmFja2VuZCA9IGdfdGxzX2JhY2tlbmRfZ2V0X2Rl
ZmF1bHQoKTsKLSAgICBHUmVmUHRyPEdUbHNDZXJ0aWZpY2F0ZT4gY2VydGlmaWNhdGUgPSBhZG9w
dEdSZWYoR19UTFNfQ0VSVElGSUNBVEUoZ19pbml0YWJsZV9uZXcoCi0gICAgICAgIGdfdGxzX2Jh
Y2tlbmRfZ2V0X2NlcnRpZmljYXRlX3R5cGUoYmFja2VuZCksIDAsIDAsICJjZXJ0aWZpY2F0ZSIs
IGNlcnRpZmljYXRlQnl0ZXMuZ2V0KCksIG51bGxwdHIpKSk7Ci0gICAgY2VydGlmaWNhdGVJbmZv
LnNldENlcnRpZmljYXRlKGNlcnRpZmljYXRlLmdldCgpKTsKLQotICAgIHVpbnQzMl90IHRsc0Vy
cm9yczsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHRsc0Vycm9ycykpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICBjZXJ0aWZpY2F0ZUluZm8uc2V0VExTRXJyb3JzKHN0YXRpY19jYXN0PEdU
bHNDZXJ0aWZpY2F0ZUZsYWdzPih0bHNFcnJvcnMpKTsKKyAgICBHQnl0ZUFycmF5KiBieXRlcyA9
IGdfYnl0ZV9hcnJheV9zaXplZF9uZXcodmVjdG9yLnNpemUoKSk7CisgICAgYnl0ZUFycmF5ID0g
YWRvcHRHUmVmKGdfYnl0ZV9hcnJheV9hcHBlbmQoYnl0ZXMsIHZlY3Rvci5kYXRhKCksIHZlY3Rv
ci5zaXplKCkpKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuaAppbmRleCAw
OWM4NzNiYzhiOTE5ZmIzZTRiMTkwYzM3OTUwYWIzOTExZWRlNWJlLi5hY2QyZmU0ZTFmYTdmZDFk
M2Y5ZGM3YjBlZDEzZjBjODI3NjgwNDI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuaApAQCAtMTA3LDcgKzEw
Nyw3IEBAIHB1YmxpYzoKICAgICBzaXplX3QgYXBwcm94aW1hdGVTaXplKCkgY29uc3Q7CiAKICAg
ICAvLyBJbmNyZW1lbnRpbmcgdGhpcyBudW1iZXIgd2lsbCBkZWxldGUgYWxsIGV4aXN0aW5nIGNh
Y2hlIGNvbnRlbnQgZm9yIGV2ZXJ5b25lLiBEbyB5b3UgcmVhbGx5IG5lZWQgdG8gZG8gaXQ/Ci0g
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHZlcnNpb24gPSAxMzsKKyAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgdmVyc2lvbiA9IDE0OwogI2lmIFBMQVRGT1JNKE1BQykKICAgICAvLy8gQWxsb3cg
dGhlIGxhc3Qgc3RhYmxlIHZlcnNpb24gb2YgdGhlIGNhY2hlIHRvIGNvLWV4aXN0IHdpdGggdGhl
IGxhdGVzdCBkZXZlbG9wbWVudCBvbmUuCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGxhc3RT
dGFibGVWZXJzaW9uID0gMTM7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353373</attachid>
            <date>2018-10-30 09:00:29 -0700</date>
            <delta_ts>2022-02-28 03:47:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190956-20181030180027.patch</filename>
            <type>text/plain</type>
            <size>8246</size>
            <attacher name="Claudio Saavedra">csaavedra</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3NTg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDc4Njk1YTUyMjYyMjBjMDVh
YTkwNjgxNjJlYTEyNmEyYWRjODc2NmMuLjdiOGZiN2VlOWIwNzIyMzZjM2NiNmFjMzk4ZjA3YWYz
ZTg5MDVjNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTgtMTAtMzAgIENsYXVkaW8g
U2FhdmVkcmEgIDxjc2FhdmVkcmFAaWdhbGlhLmNvbT4KKworICAgICAgICBbV1BFXVtHVEtdIENl
cnRpZmljYXRlcyBsb2FkZWQgZnJvbSB0aGUgY2FjaGUgZG9uJ3QgaW5jbHVkZSB0aGUgY2VydGlm
aWNhdGUgY2hhaW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5MDk1NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFNpbWlsYXJseSB0byB3aGF0IHdhcyBkb25lIGZvciB0aGUgSVBDIGNvZGVycywgc2VyaWFs
aXplCisgICAgICAgIHRoZSBlbnRpcmUgY2VydGlmaWNhdGUgY2hhaW4gaW4gdGhlIGNhY2hlIGNv
ZGVyLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlQ29kZXJz
Lmg6IEFkZCBHUmVmUHRyPEdCeXRlQXJyYXk+IGNvZGVycy4KKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVDb2RlcnNTb3VwLmNwcDoKKyAgICAgICAgKFdURjo6UGVy
c2lzdGVuY2U6OmNlcnRpZmljYXRlc0RhdGFMaXN0RnJvbUNlcnRpZmljYXRlSW5mbyk6CisgICAg
ICAgIChXVEY6OlBlcnNpc3RlbmNlOjpjZXJ0aWZpY2F0ZUZyb21DZXJ0aWZpY2F0ZXNEYXRhTGlz
dCk6IEhlbHBlcnMuCisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjpDb2RlcjxXZWJDb3JlOjpD
ZXJ0aWZpY2F0ZUluZm8+OjplbmNvZGUpOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6Q29k
ZXI8V2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvPjo6ZGVjb2RlKToKKyAgICAgICAgKFdURjo6UGVy
c2lzdGVuY2U6OkNvZGVyPEdSZWZQdHI8R0J5dGVBcnJheT4+OjplbmNvZGUpOgorICAgICAgICAo
V1RGOjpQZXJzaXN0ZW5jZTo6Q29kZXI8R1JlZlB0cjxHQnl0ZUFycmF5Pj46OmRlY29kZSk6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5oOiBCdW1w
IHRoZSBjYWNoZSB2ZXJzaW9uLgorCiAyMDE4LTEwLTI5ICBEZXdlaSBaaHUgIDxkZXdlaV96aHVA
YXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUgJ1Byb2Nlc3NTd2FwT25Dcm9zc1NpdGVOYXZpZ2F0
aW9uRW5hYmxlZCcgdG8gJ2V4cGVyaW1lbnRhbCcgY2F0ZWdvcnkuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUNvZGVycy5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVDb2RlcnMuaAppbmRl
eCA4MzEwNjI2NTE1Y2RmZjRkMDRkN2EwYmIxNGY2Yzc1NzQwYzc4YzI5Li40YjYwOTQzMzc4YTE2
ZmFlZTQwMjc1ZDE1Mzk2M2U5YWY0MjBiMmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUNvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlQ29kZXJzLmgKQEAgLTEsNSArMSw2
IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDE0LTIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSBTLkwuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTUwLDUgKzUxLDEyIEBAIHRlbXBsYXRlPD4g
c3RydWN0IENvZGVyPFdlYkNvcmU6OkhUVFBIZWFkZXJNYXA+IHsKICAgICBzdGF0aWMgYm9vbCBk
ZWNvZGUoRGVjb2RlciYsIFdlYkNvcmU6OkhUVFBIZWFkZXJNYXAmKTsKIH07CiAKKyNpZiBVU0Uo
R0xJQikKK3RlbXBsYXRlPD4gc3RydWN0IENvZGVyPEdSZWZQdHI8R0J5dGVBcnJheT4+IHsKKyAg
ICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IEdSZWZQdHI8R0J5dGVBcnJheT4m
KTsKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYsIEdSZWZQdHI8R0J5dGVBcnJheT4m
KTsKK307CisjZW5kaWYKKwogfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVDb2RlcnNTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlQ29kZXJzU291cC5jcHAKaW5kZXggNzc4
MWZjMDc5MWExYTM2MjZjZDUzNjFmMjVkZTdiZDJhYzJhMWZhOS4uMjMzOGM5YTY1ZmQzMjVmNzAy
MWU3ZjRkYWFjNzRmZjExOGU2M2Y2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVDb2RlcnNTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUNvZGVyc1NvdXAuY3BwCkBAIC0x
LDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxNC0yMDE1IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOCBJZ2FsaWEgUy5M
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSw1NCArMzAsNjQgQEAKIG5h
bWVzcGFjZSBXVEYgewogbmFtZXNwYWNlIFBlcnNpc3RlbmNlIHsKIAotdm9pZCBDb2RlcjxXZWJD
b3JlOjpDZXJ0aWZpY2F0ZUluZm8+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2Vi
Q29yZTo6Q2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8pCisKK3N0YXRpYyBWZWN0b3I8
R1JlZlB0cjxHQnl0ZUFycmF5Pj4gY2VydGlmaWNhdGVzRGF0YUxpc3RGcm9tQ2VydGlmaWNhdGVJ
bmZvKGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyAmY2VydGlmaWNhdGVJbmZvKQogewot
ICAgIGlmICghY2VydGlmaWNhdGVJbmZvLmNlcnRpZmljYXRlKCkpIHsKLSAgICAgICAgZW5jb2Rl
ciA8PCBmYWxzZTsKLSAgICAgICAgcmV0dXJuOworICAgIGF1dG8qIGNlcnRpZmljYXRlID0gY2Vy
dGlmaWNhdGVJbmZvLmNlcnRpZmljYXRlKCk7CisgICAgaWYgKCFjZXJ0aWZpY2F0ZSkKKyAgICAg
ICAgcmV0dXJuIHsgfTsKKworICAgIFZlY3RvcjxHUmVmUHRyPEdCeXRlQXJyYXk+PiBjZXJ0aWZp
Y2F0ZXNEYXRhTGlzdDsKKyAgICBmb3IgKDsgY2VydGlmaWNhdGU7IGNlcnRpZmljYXRlID0gZ190
bHNfY2VydGlmaWNhdGVfZ2V0X2lzc3VlcihjZXJ0aWZpY2F0ZSkpIHsKKyAgICAgICAgR0J5dGVB
cnJheSogY2VydGlmaWNhdGVEYXRhID0gbnVsbHB0cjsKKyAgICAgICAgZ19vYmplY3RfZ2V0KEdf
T0JKRUNUKGNlcnRpZmljYXRlKSwgImNlcnRpZmljYXRlIiwgJmNlcnRpZmljYXRlRGF0YSwgbnVs
bHB0cik7CisKKyAgICAgICAgaWYgKCFjZXJ0aWZpY2F0ZURhdGEpIHsKKyAgICAgICAgICAgIGNl
cnRpZmljYXRlc0RhdGFMaXN0LmNsZWFyKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorICAgICAgICBjZXJ0aWZpY2F0ZXNEYXRhTGlzdC5hcHBlbmQoYWRvcHRHUmVmKGNlcnRpZmlj
YXRlRGF0YSkpOwogICAgIH0KIAotICAgIEdCeXRlQXJyYXkqIGNlcnRpZmljYXRlRGF0YSA9IDA7
Ci0gICAgZ19vYmplY3RfZ2V0KEdfT0JKRUNUKGNlcnRpZmljYXRlSW5mby5jZXJ0aWZpY2F0ZSgp
KSwgImNlcnRpZmljYXRlIiwgJmNlcnRpZmljYXRlRGF0YSwgTlVMTCk7Ci0gICAgaWYgKCFjZXJ0
aWZpY2F0ZURhdGEpIHsKLSAgICAgICAgZW5jb2RlciA8PCBmYWxzZTsKLSAgICAgICAgcmV0dXJu
OworICAgIC8vIFJldmVyc2Ugc28gdGhhdCB0aGUgbGlzdCBzdGFydHMgZnJvbSB0aGUgcm9vdG1v
c3QgY2VydGlmaWNhdGUuCisgICAgY2VydGlmaWNhdGVzRGF0YUxpc3QucmV2ZXJzZSgpOworCisg
ICAgcmV0dXJuIGNlcnRpZmljYXRlc0RhdGFMaXN0OworfQorCitzdGF0aWMgR1JlZlB0cjxHVGxz
Q2VydGlmaWNhdGU+IGNlcnRpZmljYXRlRnJvbUNlcnRpZmljYXRlc0RhdGFMaXN0KGNvbnN0IFZl
Y3RvcjxHUmVmUHRyPEdCeXRlQXJyYXk+PiAmY2VydGlmaWNhdGVzRGF0YUxpc3QpCit7CisgICAg
R1R5cGUgY2VydGlmaWNhdGVUeXBlID0gZ190bHNfYmFja2VuZF9nZXRfY2VydGlmaWNhdGVfdHlw
ZShnX3Rsc19iYWNrZW5kX2dldF9kZWZhdWx0KCkpOworICAgIEdSZWZQdHI8R1Rsc0NlcnRpZmlj
YXRlPiBjZXJ0aWZpY2F0ZTsKKyAgICBmb3IgKGF1dG8mIGNlcnRpZmljYXRlRGF0YSA6IGNlcnRp
ZmljYXRlc0RhdGFMaXN0KSB7CisgICAgICAgIGNlcnRpZmljYXRlID0gYWRvcHRHUmVmKEdfVExT
X0NFUlRJRklDQVRFKGdfaW5pdGFibGVfbmV3KAorICAgICAgICAgICAgY2VydGlmaWNhdGVUeXBl
LCBudWxscHRyLCBudWxscHRyLCAiY2VydGlmaWNhdGUiLCBjZXJ0aWZpY2F0ZURhdGEuZ2V0KCks
ICJpc3N1ZXIiLCBjZXJ0aWZpY2F0ZS5nZXQoKSwgbnVsbHB0cikpKTsKICAgICB9CiAKLSAgICBl
bmNvZGVyIDw8IHRydWU7CisgICAgcmV0dXJuIGNlcnRpZmljYXRlOworfQorCit2b2lkIENvZGVy
PFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25z
dCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbykKK3sKKyAgICBhdXRv
IGNlcnRpZmljYXRlc0RhdGFMaXN0ID0gY2VydGlmaWNhdGVzRGF0YUxpc3RGcm9tQ2VydGlmaWNh
dGVJbmZvKGNlcnRpZmljYXRlSW5mbyk7CiAKLSAgICBHUmVmUHRyPEdCeXRlQXJyYXk+IGNlcnRp
ZmljYXRlID0gYWRvcHRHUmVmKGNlcnRpZmljYXRlRGF0YSk7Ci0gICAgZW5jb2RlciA8PCBzdGF0
aWNfY2FzdDx1aW50NjRfdD4oY2VydGlmaWNhdGUtPmxlbik7Ci0gICAgZW5jb2Rlci5lbmNvZGVG
aXhlZExlbmd0aERhdGEoY2VydGlmaWNhdGUtPmRhdGEsIGNlcnRpZmljYXRlLT5sZW4pOworICAg
IGVuY29kZXIgPDwgY2VydGlmaWNhdGVzRGF0YUxpc3Q7CisKKyAgICBpZiAoY2VydGlmaWNhdGVz
RGF0YUxpc3QuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CiAKICAgICBlbmNvZGVyIDw8IHN0
YXRpY19jYXN0PHVpbnQzMl90PihjZXJ0aWZpY2F0ZUluZm8udGxzRXJyb3JzKCkpOwogfQogCiBi
b29sIENvZGVyPFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbz46OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyLCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbykKIHsKLSAgICBi
b29sIGhhc0NlcnRpZmljYXRlOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzQ2VydGlmaWNh
dGUpKQorICAgIFZlY3RvcjxHUmVmUHRyPEdCeXRlQXJyYXk+PiBjZXJ0aWZpY2F0ZXNEYXRhTGlz
dDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNlcnRpZmljYXRlc0RhdGFMaXN0KSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKCFoYXNDZXJ0aWZpY2F0ZSkKKyAgICBpZiAoY2Vy
dGlmaWNhdGVzRGF0YUxpc3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAg
IHVpbnQ2NF90IHNpemUgPSAwOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2l6ZSkpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3Ioc2l6ZSk7Ci0g
ICAgaWYgKCFkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YSh2ZWN0b3IuZGF0YSgpLCB2ZWN0
b3Iuc2l6ZSgpKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgR0J5dGVBcnJheSogY2Vy
dGlmaWNhdGVEYXRhID0gZ19ieXRlX2FycmF5X3NpemVkX25ldyh2ZWN0b3Iuc2l6ZSgpKTsKLSAg
ICBjZXJ0aWZpY2F0ZURhdGEgPSBnX2J5dGVfYXJyYXlfYXBwZW5kKGNlcnRpZmljYXRlRGF0YSwg
dmVjdG9yLmRhdGEoKSwgdmVjdG9yLnNpemUoKSk7Ci0gICAgR1JlZlB0cjxHQnl0ZUFycmF5PiBj
ZXJ0aWZpY2F0ZUJ5dGVzID0gYWRvcHRHUmVmKGNlcnRpZmljYXRlRGF0YSk7Ci0KLSAgICBHVGxz
QmFja2VuZCogYmFja2VuZCA9IGdfdGxzX2JhY2tlbmRfZ2V0X2RlZmF1bHQoKTsKLSAgICBHUmVm
UHRyPEdUbHNDZXJ0aWZpY2F0ZT4gY2VydGlmaWNhdGUgPSBhZG9wdEdSZWYoR19UTFNfQ0VSVElG
SUNBVEUoZ19pbml0YWJsZV9uZXcoCi0gICAgICAgIGdfdGxzX2JhY2tlbmRfZ2V0X2NlcnRpZmlj
YXRlX3R5cGUoYmFja2VuZCksIDAsIDAsICJjZXJ0aWZpY2F0ZSIsIGNlcnRpZmljYXRlQnl0ZXMu
Z2V0KCksIG51bGxwdHIpKSk7Ci0gICAgY2VydGlmaWNhdGVJbmZvLnNldENlcnRpZmljYXRlKGNl
cnRpZmljYXRlLmdldCgpKTsKKyAgICBjZXJ0aWZpY2F0ZUluZm8uc2V0Q2VydGlmaWNhdGUoY2Vy
dGlmaWNhdGVGcm9tQ2VydGlmaWNhdGVzRGF0YUxpc3QoY2VydGlmaWNhdGVzRGF0YUxpc3QpLmdl
dCgpKTsKIAogICAgIHVpbnQzMl90IHRsc0Vycm9yczsKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHRsc0Vycm9ycykpCkBAIC04Niw1ICs5NywyMSBAQCBib29sIENvZGVyPFdlYkNvcmU6OkNlcnRp
ZmljYXRlSW5mbz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBXZWJDb3JlOjpDZXJ0aWZpYwog
ICAgIHJldHVybiB0cnVlOwogfQogCit2b2lkIENvZGVyPEdSZWZQdHI8R0J5dGVBcnJheT4+Ojpl
bmNvZGUoRW5jb2RlciAmZW5jb2RlciwgY29uc3QgR1JlZlB0cjxHQnl0ZUFycmF5PiYgYnl0ZUFy
cmF5KQoreworICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGJ5dGVBcnJheS0+
bGVuKTsKKyAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShieXRlQXJyYXktPmRhdGEs
IGJ5dGVBcnJheS0+bGVuKTsKK30KKworYm9vbCBDb2RlcjxHUmVmUHRyPEdCeXRlQXJyYXk+Pjo6
ZGVjb2RlKERlY29kZXIgJmRlY29kZXIsIEdSZWZQdHI8R0J5dGVBcnJheT4mIGJ5dGVBcnJheSkK
K3sKKyAgICB1aW50MzJfdCBzaXplOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2l6ZSkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGJ5dGVBcnJheSA9IGFkb3B0R1JlZihnX2J5dGVf
YXJyYXlfc2l6ZWRfbmV3KHNpemUpKTsKKyAgICByZXR1cm4gZGVjb2Rlci5kZWNvZGVGaXhlZExl
bmd0aERhdGEoYnl0ZUFycmF5LT5kYXRhLCBieXRlQXJyYXktPmxlbik7Cit9CisKIH0KIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
U3RvcmFnZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVTdG9yYWdlLmgKaW5kZXggMDljODczYmM4YjkxOWZiM2U0YjE5MGMzNzk1MGFiMzkxMWVkZTVi
ZS4uYWNkMmZlNGUxZmE3ZmQxZDNmOWRjN2IwZWQxM2YwYzgyNzY4MDQyOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9y
YWdlLmgKQEAgLTEwNyw3ICsxMDcsNyBAQCBwdWJsaWM6CiAgICAgc2l6ZV90IGFwcHJveGltYXRl
U2l6ZSgpIGNvbnN0OwogCiAgICAgLy8gSW5jcmVtZW50aW5nIHRoaXMgbnVtYmVyIHdpbGwgZGVs
ZXRlIGFsbCBleGlzdGluZyBjYWNoZSBjb250ZW50IGZvciBldmVyeW9uZS4gRG8geW91IHJlYWxs
eSBuZWVkIHRvIGRvIGl0PwotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCB2ZXJzaW9uID0gMTM7
CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHZlcnNpb24gPSAxNDsKICNpZiBQTEFURk9STShN
QUMpCiAgICAgLy8vIEFsbG93IHRoZSBsYXN0IHN0YWJsZSB2ZXJzaW9uIG9mIHRoZSBjYWNoZSB0
byBjby1leGlzdCB3aXRoIHRoZSBsYXRlc3QgZGV2ZWxvcG1lbnQgb25lLgogICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBsYXN0U3RhYmxlVmVyc2lvbiA9IDEzOwo=
</data>
<flag name="review"
          id="370593"
          type_id="1"
          status="+"
          setter="youennf"
    />
          </attachment>
      

    </bug>

</bugzilla>