<?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>163125</bug_id>
          
          <creation_ts>2016-10-07 10:24:25 -0700</creation_ts>
          <short_desc>[GTK] Use libgcrypt instead of GnuTLS for CryptoDigest and SubtleCrypto HMAC implementation</short_desc>
          <delta_ts>2016-11-06 04:05:16 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>Other</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>
          
          <blocked>162913</blocked>
    
    <blocked>164461</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Olivier Blin">olivier.blin</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>annulen</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>clopez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>fujii</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>tpopela</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1237651</commentid>
    <comment_count>0</comment_count>
    <who name="Olivier Blin">olivier.blin</who>
    <bug_when>2016-10-07 10:24:25 -0700</bug_when>
    <thetext>As discussed in bug 162913, libgcrypt should be used instead of GnuTLS for CryptoDigest and SubtleCrypto HMAC implementation.
This removes concerns with licensing of gnutls dependencies (nettle and gmp).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237658</commentid>
    <comment_count>1</comment_count>
      <attachid>290940</attachid>
    <who name="Olivier Blin">olivier.blin</who>
    <bug_when>2016-10-07 10:41:08 -0700</bug_when>
    <thetext>Created attachment 290940
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237663</commentid>
    <comment_count>2</comment_count>
    <who name="Olivier Blin">olivier.blin</who>
    <bug_when>2016-10-07 10:42:46 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; Created attachment 290940 [details]
&gt; Patch

This does not remove gnutls files for now, since I have only migrated the GTK port to use libgcrypt.
If the EFL port wants to make the move as well, we can move the stubs from the gnutls folder to the gcrypt folder.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237670</commentid>
    <comment_count>3</comment_count>
      <attachid>290940</attachid>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2016-10-07 10:48:20 -0700</bug_when>
    <thetext>Comment on attachment 290940
Patch

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

&gt; Source/WebCore/platform/crypto/gcrypt/CryptoDigestGCrypt.cpp:92
&gt; +    Vector&lt;uint8_t&gt; result;

You can create Vector of proper size right away, as you do for HMAC</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237678</commentid>
    <comment_count>4</comment_count>
      <attachid>290946</attachid>
    <who name="Olivier Blin">olivier.blin</who>
    <bug_when>2016-10-07 10:56:34 -0700</bug_when>
    <thetext>Created attachment 290946
Patch

Address comment 3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237682</commentid>
    <comment_count>5</comment_count>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2016-10-07 10:58:21 -0700</bug_when>
    <thetext>I think you should also add gcrypt to install-dependencies (or jhbuild)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237766</commentid>
    <comment_count>6</comment_count>
      <attachid>290961</attachid>
    <who name="Olivier Blin">olivier.blin</who>
    <bug_when>2016-10-07 13:13:27 -0700</bug_when>
    <thetext>Created attachment 290961
Patch

Update gtk/install-dependencies to reflect that libgcrypt is needed for WebKitGTK+ build, and gnutls for jhbuild only</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237808</commentid>
    <comment_count>7</comment_count>
      <attachid>290961</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-10-07 14:57:52 -0700</bug_when>
    <thetext>Comment on attachment 290961
Patch

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

Thanks for working on this! I&apos;m giving r+ but with several things that need fixed before committing:

&gt; Source/WebCore/crypto/gcrypt/CryptoAlgorithmHMACGCrypt.cpp:3
&gt; + * Copyright (C) 2014 Igalia S.L. All rights reserved.
&gt; + * Copyright (C) 2016 SoftAtHome. All rights reserved.

Please remove the &quot;All rights reserved&quot; since that contradicts the license right below.

&gt; Source/WebCore/crypto/gcrypt/CryptoAlgorithmHMACGCrypt.cpp:81
&gt; +    UNUSED_PARAM(failureCallback);
&gt; +    int algorithm = getGCryptDigestAlgorithm(parameters.hash);
&gt; +    if (algorithm == GCRY_MAC_NONE) {
&gt; +        ec = NOT_SUPPORTED_ERR;
&gt; +        return;

You don&apos;t need to call failureCallback when the function fails...?

&gt; Source/WebCore/crypto/gcrypt/CryptoAlgorithmHMACGCrypt.cpp:91
&gt; +    UNUSED_PARAM(failureCallback);

Ditto?

&gt; Source/WebCore/platform/crypto/gcrypt/CryptoDigestGCrypt.cpp:3
&gt; + * Copyright (C) 2014 Igalia S.L. All rights reserved.
&gt; + * Copyright (C) 2016 SoftAtHome. All rights reserved.

Ditto.

&gt; Source/WebCore/platform/crypto/gcrypt/CryptoDigestGCrypt.cpp:73
&gt; +    switch (algorithm) {
&gt; +    case CryptoDigest::Algorithm::SHA_1: {
&gt; +        gcryptAlgorithm = GCRY_MD_SHA1;
&gt; +        break;
&gt; +    }
&gt; +    case CryptoDigest::Algorithm::SHA_224: {
&gt; +        gcryptAlgorithm = GCRY_MD_SHA224;
&gt; +        break;
&gt; +    }
&gt; +    case CryptoDigest::Algorithm::SHA_256: {
&gt; +        gcryptAlgorithm = GCRY_MD_SHA256;
&gt; +        break;
&gt; +    }
&gt; +    case CryptoDigest::Algorithm::SHA_384: {
&gt; +        gcryptAlgorithm = GCRY_MD_SHA384;
&gt; +        break;
&gt; +    }
&gt; +    case CryptoDigest::Algorithm::SHA_512: {
&gt; +        gcryptAlgorithm = GCRY_MD_SHA512;
&gt; +        break;
&gt; +    }
&gt; +    }

You don&apos;t need the extra braces around the cases here, since you&apos;re not declaring any variables in the cases.

&gt; Source/cmake/FindGCrypt.cmake:23
&gt; +    # set(GCRYPT_FOUND TRUE)

Well that&apos;s not right, did you comment it out for testing? Or was it broken already when you copied it from wherever its upstream is?

&gt; Source/cmake/FindGCrypt.cmake:70
&gt; +endif (GCRYPT_LIBRARIES AND GCRYPT_INCLUDE_DIRS)

WebKit CMake style is endif ()

&gt; Source/cmake/OptionsGTK.cmake:35
&gt; +find_package(GCrypt REQUIRED)

All the functions you used were available in the first release of GCrypt?

&gt; Tools/ChangeLog:8
&gt; +        * gtk/install-dependencies: List libgcrypt for WebKitGTK+ build, and gnutls for jhbuild only.

Er, why keep GnuTLS? You&apos;ve completely removed the dependency, so you can get rid of it, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237853</commentid>
    <comment_count>8</comment_count>
    <who name="Olivier Blin">olivier.blin</who>
    <bug_when>2016-10-07 16:17:44 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Comment on attachment 290961 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=290961&amp;action=review
&gt; 
&gt; Thanks for working on this! I&apos;m giving r+ but with several things that need
&gt; fixed before committing:
&gt; 
&gt; &gt; Source/WebCore/crypto/gcrypt/CryptoAlgorithmHMACGCrypt.cpp:3
&gt; &gt; + * Copyright (C) 2014 Igalia S.L. All rights reserved.
&gt; &gt; + * Copyright (C) 2016 SoftAtHome. All rights reserved.
&gt; 
&gt; Please remove the &quot;All rights reserved&quot; since that contradicts the license
&gt; right below.

This is actually copied from CryptoAlgorithmHMACGnuTLS.cpp, from Igalia.

Is the following fine?

+ * Copyright (C) 2014 Igalia S.L.
+ * Copyright (C) 2016 SoftAtHome

&gt; &gt; Source/WebCore/crypto/gcrypt/CryptoAlgorithmHMACGCrypt.cpp:81
&gt; &gt; +    UNUSED_PARAM(failureCallback);
&gt; &gt; +    int algorithm = getGCryptDigestAlgorithm(parameters.hash);
&gt; &gt; +    if (algorithm == GCRY_MAC_NONE) {
&gt; &gt; +        ec = NOT_SUPPORTED_ERR;
&gt; &gt; +        return;
&gt; 
&gt; You don&apos;t need to call failureCallback when the function fails...?

I wondered about this too, but this is also copied from the gnutls flavor.
The Mac flavor is also ignoring the failure callback.

I can use failureCallback, not sure about unwanted side-effects.

&gt; &gt; Source/WebCore/platform/crypto/gcrypt/CryptoDigestGCrypt.cpp:73
&gt; &gt; +    switch (algorithm) {
&gt; &gt; +    case CryptoDigest::Algorithm::SHA_1: {
&gt; &gt; +        gcryptAlgorithm = GCRY_MD_SHA1;
&gt; &gt; +        break;
&gt; &gt; +    }
&gt; &gt; +    case CryptoDigest::Algorithm::SHA_224: {
&gt; &gt; +        gcryptAlgorithm = GCRY_MD_SHA224;
&gt; &gt; +        break;
&gt; &gt; +    }
&gt; &gt; +    case CryptoDigest::Algorithm::SHA_256: {
&gt; &gt; +        gcryptAlgorithm = GCRY_MD_SHA256;
&gt; &gt; +        break;
&gt; &gt; +    }
&gt; &gt; +    case CryptoDigest::Algorithm::SHA_384: {
&gt; &gt; +        gcryptAlgorithm = GCRY_MD_SHA384;
&gt; &gt; +        break;
&gt; &gt; +    }
&gt; &gt; +    case CryptoDigest::Algorithm::SHA_512: {
&gt; &gt; +        gcryptAlgorithm = GCRY_MD_SHA512;
&gt; &gt; +        break;
&gt; &gt; +    }
&gt; &gt; +    }
&gt; 
&gt; You don&apos;t need the extra braces around the cases here, since you&apos;re not
&gt; declaring any variables in the cases.

Sure, I kept the existing style from the gnutls file, but I will fix.

&gt; &gt; Source/cmake/FindGCrypt.cmake:23
&gt; &gt; +    # set(GCRYPT_FOUND TRUE)
&gt; 
&gt; Well that&apos;s not right, did you comment it out for testing? Or was it broken
&gt; already when you copied it from wherever its upstream is?

I copied it from https://github.com/substack/libssh/blob/master/cmake/Modules/FindGCrypt.cmake , but it seems to be an old copy.
The real upstream of libssh is this one, with an additional &quot;cmake: Update GCrypt module&quot; commit:
https://git.libssh.org/projects/libssh.git/tree/cmake/Modules/FindGCrypt.cmake

Does it look better?

It still has a &quot;GCRYPT_FOUND&quot; comment on top, while the file never defines it.

Another alternative is this one:
https://quickgit.kde.org/?p=kwallet.git&amp;a=blob&amp;h=20053f1a790c99d5d75c495ed7c3255867d4efb7&amp;hb=23344979ed047053256e21638338ef67a1a937ff&amp;f=cmake%2FFindLibGcrypt.cmake

&gt; &gt; Source/cmake/FindGCrypt.cmake:70
&gt; &gt; +endif (GCRYPT_LIBRARIES AND GCRYPT_INCLUDE_DIRS)
&gt; 
&gt; WebKit CMake style is endif ()

Ok

&gt; &gt; Source/cmake/OptionsGTK.cmake:35
&gt; &gt; +find_package(GCrypt REQUIRED)
&gt; 
&gt; All the functions you used were available in the first release of GCrypt?
&gt; 
&gt; &gt; Tools/ChangeLog:8
&gt; &gt; +        * gtk/install-dep endencies: List libgcrypt for WebKitGTK+ build, and gnutls for jhbuild only.
&gt; 
&gt; Er, why keep GnuTLS? You&apos;ve completely removed the dependency, so you can
&gt; get rid of it, right?

For glib-networking in jhbuild</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237856</commentid>
    <comment_count>9</comment_count>
    <who name="Olivier Blin">olivier.blin</who>
    <bug_when>2016-10-07 16:25:13 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Comment on attachment 290961 [details]
&gt;
&gt; &gt; Source/cmake/OptionsGTK.cmake:35
&gt; &gt; +find_package(GCrypt REQUIRED)
&gt; 
&gt; All the functions you used were available in the first release of GCrypt?

Good point.
The HMAC APIs have been added in 1.6.0:
http://git.gnupg.org/cgi-bin/gitweb.cgi?p=libgcrypt.git;a=commit;h=fcd6da37d55f248d3558ee0ff385b41b866e7ded

Digest APIs are way older, from 1999:
http://git.gnupg.org/cgi-bin/gitweb.cgi?p=libgcrypt.git;a=commit;h=98f4d26ffe97e99d9f9bd5dc58d9f511d9e64514

I&apos;ll require 1.6.0 then, released in December 2013</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237868</commentid>
    <comment_count>10</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-10-07 17:10:06 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; This is actually copied from CryptoAlgorithmHMACGnuTLS.cpp, from Igalia.
&gt; 
&gt; Is the following fine?
&gt; 
&gt; + * Copyright (C) 2014 Igalia S.L.
&gt; + * Copyright (C) 2016 SoftAtHome

Yeah, that&apos;s fine.

A lot of files have those bogus notices unfortunately. :( I guess Apple&apos;s lawyers would complain if they thought it was a problem, but let&apos;s avoid adding it in new places.

&gt; I wondered about this too, but this is also copied from the gnutls flavor.
&gt; The Mac flavor is also ignoring the failure callback.
&gt; 
&gt; I can use failureCallback, not sure about unwanted side-effects.

Hm, if all ports are ignoring the failure callback, that&apos;s a little concerning as that indicates the failure cases must never be tested... anyway, that&apos;s a preexisting issue; seems safest to ignore it for now.
  
&gt; It still has a &quot;GCRYPT_FOUND&quot; comment on top, while the file never defines
&gt; it.

Ew, good catch; I didn&apos;t notice.

&gt; Another alternative is this one:
&gt; https://quickgit.kde.org/?p=kwallet.
&gt; git&amp;a=blob&amp;h=20053f1a790c99d5d75c495ed7c3255867d4efb7&amp;hb=23344979ed047053256e
&gt; 21638338ef67a1a937ff&amp;f=cmake%2FFindLibGcrypt.cmake

I would use the KDE one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238348</commentid>
    <comment_count>11</comment_count>
      <attachid>290961</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-10-10 09:56:44 -0700</bug_when>
    <thetext>Comment on attachment 290961
Patch

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

&gt; Source/WebCore/crypto/gcrypt/CryptoAlgorithmHMACGCrypt.cpp:40
&gt; +static int getGCryptDigestAlgorithm(CryptoAlgorithmIdentifier hashFunction)

Don&apos;t use &quot;get&quot; here. You could use cryptoAlgorithmIdentifierToGCryptDigestAlgorithm or something similar, or gcryptDigestAlgorithmForCryptoAlgorithmIdentifier

&gt; Source/WebCore/crypto/gcrypt/CryptoAlgorithmHMACGCrypt.cpp:66
&gt; +    gcry_mac_open(&amp;hd, algorithm, 0, 0);

0, nullptr

&gt; Source/WebCore/crypto/gcrypt/CryptoAlgorithmHMACGCrypt.cpp:69
&gt; +    gcry_mac_read(hd, result.data(), &amp;digestLength);

Don&apos;t you need to handle the return value of digestLength? Can it really be different to result.size()? I guess it can&apos;t be bigger than value returned by gcry_mac_get_algo_maclen, but can it be smaller? If it should be the same size I would add an assert, otherwise you would need to resize the vector here.

&gt; Source/WebCore/crypto/gcrypt/CryptoAlgorithmHMACGCrypt.cpp:72
&gt; +    return result;

Most of the gcry functions used above return a gcry_error_t that is not handled at all. We should call the failureCallback in platformSign if any of those fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238363</commentid>
    <comment_count>12</comment_count>
      <attachid>290961</attachid>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2016-10-10 10:13:13 -0700</bug_when>
    <thetext>Comment on attachment 290961
Patch

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

&gt; Tools/gtk/install-dependencies:109
&gt;          libfaad-dev \
&gt; +        libgcrypt11-dev \
&gt;          $(aptIfElse libgeoclue-2-dev libgeoclue-dev) \

On Debian/Ubuntu libgcrypt11-dev is a transitional dummy package to ease the migration from the old libgcrypt11-dev to libgcrypt20-dev. So I would use here:
$(aptIfElse libgcrypt20-dev libgcrypt11-dev) \</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247418</commentid>
    <comment_count>13</comment_count>
    <who name="Olivier Blin">olivier.blin</who>
    <bug_when>2016-11-02 12:07:05 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; Comment on attachment 290961 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=290961&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/crypto/gcrypt/CryptoAlgorithmHMACGCrypt.cpp:40
&gt; &gt; +static int getGCryptDigestAlgorithm(CryptoAlgorithmIdentifier hashFunction)
&gt; 
&gt; Don&apos;t use &quot;get&quot; here. You could use
&gt; cryptoAlgorithmIdentifierToGCryptDigestAlgorithm or something similar, or
&gt; gcryptDigestAlgorithmForCryptoAlgorithmIdentifier

The same naming is using for the Mac and gnutls backends.

&gt; &gt; Source/WebCore/crypto/gcrypt/CryptoAlgorithmHMACGCrypt.cpp:66
&gt; &gt; +    gcry_mac_open(&amp;hd, algorithm, 0, 0);
&gt; 
&gt; 0, nullptr

Ok

&gt; &gt; Source/WebCore/crypto/gcrypt/CryptoAlgorithmHMACGCrypt.cpp:69
&gt; &gt; +    gcry_mac_read(hd, result.data(), &amp;digestLength);
&gt; 
&gt; Don&apos;t you need to handle the return value of digestLength? Can it really be
&gt; different to result.size()? I guess it can&apos;t be bigger than value returned
&gt; by gcry_mac_get_algo_maclen, but can it be smaller? If it should be the same
&gt; size I would add an assert, otherwise you would need to resize the vector
&gt; here.

It can be smaller according to the API:
https://gnupg.org/documentation/manuals/gcrypt/Working-with-MAC-algorithms.html#Working-with-MAC-algorithms

I will resize it.

&gt; &gt; Source/WebCore/crypto/gcrypt/CryptoAlgorithmHMACGCrypt.cpp:72
&gt; &gt; +    return result;
&gt; 
&gt; Most of the gcry functions used above return a gcry_error_t that is not
&gt; handled at all. We should call the failureCallback in platformSign if any of
&gt; those fail.

I did not find code that made use of the failureCallback, besides CryptoAlgorithmHMAC::generateKey
I&apos;ll upload a version which handles gcry failures, but it makes the layout tests hang on failure.

(In reply to comment #12)
&gt; Comment on attachment 290961 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=290961&amp;action=review
&gt; 
&gt; &gt; Tools/gtk/install-dependencies:109
&gt; &gt;          libfaad-dev \
&gt; &gt; +        libgcrypt11-dev \
&gt; &gt;          $(aptIfElse libgeoclue-2-dev libgeoclue-dev) \
&gt; 
&gt; On Debian/Ubuntu libgcrypt11-dev is a transitional dummy package to ease the
&gt; migration from the old libgcrypt11-dev to libgcrypt20-dev. So I would use
&gt; here:
&gt; $(aptIfElse libgcrypt20-dev libgcrypt11-dev) \

Ok</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247419</commentid>
    <comment_count>14</comment_count>
    <who name="Olivier Blin">olivier.blin</who>
    <bug_when>2016-11-02 12:08:20 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; &gt; Another alternative is this one:
&gt; &gt; https://quickgit.kde.org/?p=kwallet.
&gt; &gt; git&amp;a=blob&amp;h=20053f1a790c99d5d75c495ed7c3255867d4efb7&amp;hb=23344979ed047053256e
&gt; &gt; 21638338ef67a1a937ff&amp;f=cmake%2FFindLibGcrypt.cmake
&gt; 
&gt; I would use the KDE one.

Source/cmake/FindLibGcrypt.cmake has been added for bug 162928 since then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247424</commentid>
    <comment_count>15</comment_count>
      <attachid>293685</attachid>
    <who name="Olivier Blin">olivier.blin</who>
    <bug_when>2016-11-02 12:15:17 -0700</bug_when>
    <thetext>Created attachment 293685
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247437</commentid>
    <comment_count>16</comment_count>
      <attachid>293685</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-02 13:08:39 -0700</bug_when>
    <thetext>Comment on attachment 293685
Patch

Clearing flags on attachment: 293685

Committed r208297: &lt;http://trac.webkit.org/changeset/208297&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247438</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-02 13:08:44 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290940</attachid>
            <date>2016-10-07 10:41:08 -0700</date>
            <delta_ts>2016-10-07 10:56:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163125-20161007193752.patch</filename>
            <type>text/plain</type>
            <size>14802</size>
            <attacher name="Olivier Blin">olivier.blin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA2NzcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjFjZTVkOTY1NTc4ZTVl
MTI3MTRiYjlkZDI5ZGY3YThmMDU0YmQzMi4uY2ZjNTk1YTUwOWM0ZjUwY2FjNGI4NjhkNTcyYjJk
Y2RjNjYzMDAwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE2LTEwLTA3ICBPbGl2
aWVyIEJsaW4gIDxvbGl2aWVyLmJsaW5Ac29mdGF0aG9tZS5jb20+CisKKyAgICAgICAgW0dUS10g
VXNlIGxpYmdjcnlwdCBpbnN0ZWFkIG9mIEdudVRMUyBmb3IgQ3J5cHRvRGlnZXN0IGFuZCBTdWJ0
bGVDcnlwdG8gSE1BQyBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMTI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBhbHJlYWR5IGNvdmVyZWQgYnkgZXhp
c3RpbmcgU3VidGxlQ3J5cHRvIHRlc3RzLgorCisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6
CisgICAgICAgICogY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1ITUFDR0NyeXB0LmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpnZXRHQ3J5cHREaWdlc3RBbGdvcml0aG0pOgorICAg
ICAgICAoV2ViQ29yZTo6Y2FsY3VsYXRlU2lnbmF0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkNy
eXB0b0FsZ29yaXRobUhNQUM6OnBsYXRmb3JtU2lnbik6CisgICAgICAgIChXZWJDb3JlOjpDcnlw
dG9BbGdvcml0aG1ITUFDOjpwbGF0Zm9ybVZlcmlmeSk6CisgICAgICAgICogcGxhdGZvcm0vY3J5
cHRvL2djcnlwdC9DcnlwdG9EaWdlc3RHQ3J5cHQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkNyeXB0b0RpZ2VzdDo6Q3J5cHRvRGlnZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0
b0RpZ2VzdDo6fkNyeXB0b0RpZ2VzdCk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9EaWdlc3Q6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9EaWdlc3Q6OmFkZEJ5dGVzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNyeXB0b0RpZ2VzdDo6Y29tcHV0ZUhhc2gpOgorCiAyMDE2LTEwLTA0
ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBb
U09VUF0gUmVtb3ZlIFNTTFBvbGljeUZsYWdzIGZyb20gU291cE5ldHdvcmtTZXNzaW9uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJDb3Jl
L1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IDQxYmUyODMxMjk5N2E0ODgzYzk4ZjllYTFiZjYxNWNh
OWQ4MjViOWYuLjlmM2FmNzYwMTg3NjUxNmJkNzExN2JhM2RmMDY3MzM2OGYwOTViNTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC04Niw3ICs4Niw3IEBAIGxpc3QoQVBQRU5EIFdlYkNv
cmVfU09VUkNFUwogCiAgICAgcGxhdGZvcm0vYXVkaW8vZ2xpYi9BdWRpb0J1c0dMaWIuY3BwCiAK
LSAgICBwbGF0Zm9ybS9jcnlwdG8vZ251dGxzL0NyeXB0b0RpZ2VzdEdudVRMUy5jcHAKKyAgICBw
bGF0Zm9ybS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0RpZ2VzdEdDcnlwdC5jcHAKIAogICAgIHBsYXRm
b3JtL2dhbWVwYWQvZ2xpYi9HYW1lcGFkc0dsaWIuY3BwCiAKQEAgLTI2OCw3ICsyNjgsNyBAQCBs
aXN0KEFQUEVORCBXZWJDb3JlX0xJQlJBUklFUwogICAgICR7R0xJQl9HTU9EVUxFX0xJQlJBUklF
U30KICAgICAke0dMSUJfR09CSkVDVF9MSUJSQVJJRVN9CiAgICAgJHtHTElCX0xJQlJBUklFU30K
LSAgICAke0dOVVRMU19MSUJSQVJJRVN9CisgICAgJHtHQ1JZUFRfTElCUkFSSUVTfQogICAgICR7
R1VERVZfTElCUkFSSUVTfQogICAgICR7SEFSRkJVWlpfTElCUkFSSUVTfQogICAgICR7TElCU0VD
UkVUX0xJQlJBUklFU30KQEAgLTI5Niw3ICsyOTYsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NZ
U1RFTV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgJHtHRU9DTFVFX0lOQ0xVREVfRElSU30KICAg
ICAke0dJT19VTklYX0lOQ0xVREVfRElSU30KICAgICAke0dMSUJfSU5DTFVERV9ESVJTfQotICAg
ICR7R05VVExTX0lOQ0xVREVfRElSU30KKyAgICAke0dDUllQVF9JTkNMVURFX0RJUlN9CiAgICAg
JHtHVURFVl9JTkNMVURFX0RJUlN9CiAgICAgJHtIQVJGQlVaWl9JTkNMVURFX0RJUlN9CiAgICAg
JHtMSUJTRUNSRVRfSU5DTFVERV9ESVJTfQpAQCAtNDEzLDkgKzQxMywxMCBAQCBpZiAoRU5BQkxF
X1NVQlRMRV9DUllQVE8pCiAgICAgICAgIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRo
bVNIQTM4NC5jcHAKICAgICAgICAgY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hB
NTEyLmNwcAogCisgICAgICAgIGNyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtSE1BQ0dDcnlw
dC5jcHAKKwogICAgICAgICBjcnlwdG8vZ251dGxzL0NyeXB0b0FsZ29yaXRobUFFU19DQkNHbnVU
TFMuY3BwCiAgICAgICAgIGNyeXB0by9nbnV0bHMvQ3J5cHRvQWxnb3JpdGhtQUVTX0tXR251VExT
LmNwcAotICAgICAgICBjcnlwdG8vZ251dGxzL0NyeXB0b0FsZ29yaXRobUhNQUNHbnVUTFMuY3Bw
CiAgICAgICAgIGNyeXB0by9nbnV0bHMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNUdu
dVRMUy5jcHAKICAgICAgICAgY3J5cHRvL2dudXRscy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtD
UzFfdjFfNUdudVRMUy5jcHAKICAgICAgICAgY3J5cHRvL2dudXRscy9DcnlwdG9BbGdvcml0aG1S
U0FfT0FFUEdudVRMUy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5
cHQvQ3J5cHRvQWxnb3JpdGhtSE1BQ0dDcnlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
Z2NyeXB0L0NyeXB0b0FsZ29yaXRobUhNQUNHQ3J5cHQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM2OTU4Njgy
MTkzOTAyNGFhMjc0MWIxYjUzNTI3NjlkMGZhNzhjNjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUhNQUNHQ3J5cHQuY3BwCkBA
IC0wLDAgKzEsMTA3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJDcnlwdG9BbGdvcml0aG1ITUFDLmgiCisKKyNpZiBFTkFCTEUoU1VCVExFX0NSWVBUTykK
KworI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobUhtYWNQYXJhbXMuaCIKKyNpbmNsdWRlICJDcnlw
dG9LZXlITUFDLmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgPGdjcnlw
dC5oPgorI2luY2x1ZGUgPHd0Zi9DcnlwdG9ncmFwaGljVXRpbGl0aWVzLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworc3RhdGljIGludCBnZXRHQ3J5cHREaWdlc3RBbGdvcml0aG0oQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllciBoYXNoRnVuY3Rpb24pCit7CisgICAgc3dpdGNoIChoYXNoRnVu
Y3Rpb24pIHsKKyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8xOgorICAg
ICAgICByZXR1cm4gR0NSWV9NQUNfSE1BQ19TSEExOworICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGht
SWRlbnRpZmllcjo6U0hBXzIyNDoKKyAgICAgICAgcmV0dXJuIEdDUllfTUFDX0hNQUNfU0hBMjI0
OworICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzI1NjoKKyAgICAgICAg
cmV0dXJuIEdDUllfTUFDX0hNQUNfU0hBMjU2OworICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllcjo6U0hBXzM4NDoKKyAgICAgICAgcmV0dXJuIEdDUllfTUFDX0hNQUNfU0hBMzg0Owor
ICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzUxMjoKKyAgICAgICAgcmV0
dXJuIEdDUllfTUFDX0hNQUNfU0hBNTEyOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBH
Q1JZX01BQ19OT05FOworICAgIH0KK30KKworc3RhdGljIFZlY3Rvcjx1aW50OF90PiBjYWxjdWxh
dGVTaWduYXR1cmUoaW50IGFsZ29yaXRobSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNv
bnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEpCit7CisgICAgc2l6ZV90IGRpZ2VzdExlbmd0
aCA9IGdjcnlfbWFjX2dldF9hbGdvX21hY2xlbihhbGdvcml0aG0pOworCisgICAgVmVjdG9yPHVp
bnQ4X3Q+IHJlc3VsdChkaWdlc3RMZW5ndGgpOworICAgIGNvbnN0IHZvaWQqIGtleURhdGEgPSBr
ZXkuZGF0YSgpID8ga2V5LmRhdGEoKSA6IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+
KCIiKTsKKworICAgIGdjcnlfbWFjX2hkX3QgaGQ7CisgICAgZ2NyeV9tYWNfb3BlbigmaGQsIGFs
Z29yaXRobSwgMCwgMCk7CisgICAgZ2NyeV9tYWNfc2V0a2V5KGhkLCBrZXlEYXRhLCBrZXkuc2l6
ZSgpKTsKKyAgICBnY3J5X21hY193cml0ZShoZCwgZGF0YS5maXJzdCwgZGF0YS5zZWNvbmQpOwor
ICAgIGdjcnlfbWFjX3JlYWQoaGQsIHJlc3VsdC5kYXRhKCksICZkaWdlc3RMZW5ndGgpOworICAg
IGdjcnlfbWFjX2Nsb3NlKGhkKTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgQ3J5
cHRvQWxnb3JpdGhtSE1BQzo6cGxhdGZvcm1TaWduKGNvbnN0IENyeXB0b0FsZ29yaXRobUhtYWNQ
YXJhbXMmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleUhNQUMmIGtleSwgY29uc3QgQ3J5cHRv
T3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxi
YWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBVTlVTRURf
UEFSQU0oZmFpbHVyZUNhbGxiYWNrKTsKKyAgICBpbnQgYWxnb3JpdGhtID0gZ2V0R0NyeXB0RGln
ZXN0QWxnb3JpdGhtKHBhcmFtZXRlcnMuaGFzaCk7CisgICAgaWYgKGFsZ29yaXRobSA9PSBHQ1JZ
X01BQ19OT05FKSB7CisgICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBWZWN0b3I8dWludDhfdD4gc2lnbmF0dXJlID0gY2FsY3VsYXRl
U2lnbmF0dXJlKGFsZ29yaXRobSwga2V5LmtleSgpLCBkYXRhKTsKKworICAgIGNhbGxiYWNrKHNp
Z25hdHVyZSk7Cit9CisKK3ZvaWQgQ3J5cHRvQWxnb3JpdGhtSE1BQzo6cGxhdGZvcm1WZXJpZnko
Y29uc3QgQ3J5cHRvQWxnb3JpdGhtSG1hY1BhcmFtcyYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRv
S2V5SE1BQyYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBleHBlY3RlZFNpZ25hdHVy
ZSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgQm9vbENhbGxiYWNrJiYgY2FsbGJh
Y2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCit7
CisgICAgVU5VU0VEX1BBUkFNKGZhaWx1cmVDYWxsYmFjayk7CisgICAgaW50IGFsZ29yaXRobSA9
IGdldEdDcnlwdERpZ2VzdEFsZ29yaXRobShwYXJhbWV0ZXJzLmhhc2gpOworICAgIGlmIChhbGdv
cml0aG0gPT0gR0NSWV9NQUNfTk9ORSkgeworICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJS
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgVmVjdG9yPHVpbnQ4X3Q+IHNpZ25hdHVy
ZSA9IGNhbGN1bGF0ZVNpZ25hdHVyZShhbGdvcml0aG0sIGtleS5rZXkoKSwgZGF0YSk7CisKKyAg
ICAvLyBVc2luZyBhIGNvbnN0YW50IHRpbWUgY29tcGFyaXNvbiB0byBwcmV2ZW50IHRpbWluZyBh
dHRhY2tzLgorICAgIGJvb2wgcmVzdWx0ID0gc2lnbmF0dXJlLnNpemUoKSA9PSBleHBlY3RlZFNp
Z25hdHVyZS5zZWNvbmQgJiYgIWNvbnN0YW50VGltZU1lbWNtcChzaWduYXR1cmUuZGF0YSgpLCBl
eHBlY3RlZFNpZ25hdHVyZS5maXJzdCwgc2lnbmF0dXJlLnNpemUoKSk7CisKKyAgICBjYWxsYmFj
ayhyZXN1bHQpOworfQorCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoU1VCVExFX0NSWVBUTykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NyeXB0by9nY3J5cHQvQ3J5cHRvRGln
ZXN0R0NyeXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NyeXB0by9nY3J5cHQvQ3J5
cHRvRGlnZXN0R0NyeXB0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zM2QwZDIwNmNlNDlhMGQzMDIxNDJhNmEz
NWEyODg4NWJhYTYzODNjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY3J5cHRvL2djcnlwdC9DcnlwdG9EaWdlc3RHQ3J5cHQuY3BwCkBAIC0wLDAgKzEsMTAzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgU29mdEF0SG9tZS4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNyeXB0b0RpZ2Vz
dC5oIgorCisjaW5jbHVkZSA8Z2NyeXB0Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3Ry
dWN0IENyeXB0b0RpZ2VzdENvbnRleHQgeworICAgIGludCBhbGdvcml0aG07CisgICAgZ2NyeV9t
ZF9oZF90IG1kOworfTsKKworQ3J5cHRvRGlnZXN0OjpDcnlwdG9EaWdlc3QoKQorICAgIDogbV9j
b250ZXh0KG5ldyBDcnlwdG9EaWdlc3RDb250ZXh0KQoreworfQorCitDcnlwdG9EaWdlc3Q6On5D
cnlwdG9EaWdlc3QoKQoreworfQorCitzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBDcnlw
dG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobSBhbGdvcml0aG0pCit7Cisg
ICAgaW50IGdjcnlwdEFsZ29yaXRobTsKKworICAgIHN3aXRjaCAoYWxnb3JpdGhtKSB7CisgICAg
Y2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzE6IHsKKyAgICAgICAgZ2NyeXB0QWxn
b3JpdGhtID0gR0NSWV9NRF9TSEExOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBD
cnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzIyNDogeworICAgICAgICBnY3J5cHRBbGdvcml0
aG0gPSBHQ1JZX01EX1NIQTIyNDsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgQ3J5
cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTY6IHsKKyAgICAgICAgZ2NyeXB0QWxnb3JpdGht
ID0gR0NSWV9NRF9TSEEyNTY7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIENyeXB0
b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0OiB7CisgICAgICAgIGdjcnlwdEFsZ29yaXRobSA9
IEdDUllfTURfU0hBMzg0OworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBDcnlwdG9E
aWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMjogeworICAgICAgICBnY3J5cHRBbGdvcml0aG0gPSBH
Q1JZX01EX1NIQTUxMjsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIH0KKworICAgIHN0ZDo6
dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3Q+IGRpZ2VzdChuZXcgQ3J5cHRvRGlnZXN0KTsKKyAgICBk
aWdlc3QtPm1fY29udGV4dC0+YWxnb3JpdGhtID0gZ2NyeXB0QWxnb3JpdGhtOworCisgICAgZ2Ny
eV9tZF9vcGVuKCZkaWdlc3QtPm1fY29udGV4dC0+bWQsIGdjcnlwdEFsZ29yaXRobSwgMCk7Cisg
ICAgaWYgKCFkaWdlc3QtPm1fY29udGV4dC0+bWQpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
CisgICAgcmV0dXJuIGRpZ2VzdDsKK30KKwordm9pZCBDcnlwdG9EaWdlc3Q6OmFkZEJ5dGVzKGNv
bnN0IHZvaWQqIGlucHV0LCBzaXplX3QgbGVuZ3RoKQoreworICAgIGdjcnlfbWRfd3JpdGUobV9j
b250ZXh0LT5tZCwgaW5wdXQsIGxlbmd0aCk7Cit9CisKK1ZlY3Rvcjx1aW50OF90PiBDcnlwdG9E
aWdlc3Q6OmNvbXB1dGVIYXNoKCkKK3sKKyAgICBWZWN0b3I8dWludDhfdD4gcmVzdWx0OworICAg
IGludCBkaWdlc3RMZW4gPSBnY3J5X21kX2dldF9hbGdvX2RsZW4obV9jb250ZXh0LT5hbGdvcml0
aG0pOworICAgIHJlc3VsdC5yZXNpemUoZGlnZXN0TGVuKTsKKworICAgIGdjcnlfbWRfZmluYWwo
bV9jb250ZXh0LT5tZCk7CisgICAgbWVtY3B5KHJlc3VsdC5kYXRhKCksIGdjcnlfbWRfcmVhZCht
X2NvbnRleHQtPm1kLCAwKSwgZGlnZXN0TGVuKTsKKyAgICBnY3J5X21kX2Nsb3NlKG1fY29udGV4
dC0+bWQpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL0ZpbmRHQ3J5cHQuY21ha2UgYi9Tb3VyY2UvY21h
a2UvRmluZEdDcnlwdC5jbWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZjM1ODZiZWQ5NTU5ZmM3YjI3ODBkZWJi
MmFmMGEyZmMxOGEwYmQwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL2NtYWtlL0ZpbmRHQ3J5
cHQuY21ha2UKQEAgLTAsMCArMSw3MCBAQAorIyAtIFRyeSB0byBmaW5kIEdDcnlwdAorIyBPbmNl
IGRvbmUgdGhpcyB3aWxsIGRlZmluZQorIworIyAgR0NSWVBUX0ZPVU5EIC0gc3lzdGVtIGhhcyBH
Q3J5cHQKKyMgIEdDUllQVF9JTkNMVURFX0RJUlMgLSB0aGUgR0NyeXB0IGluY2x1ZGUgZGlyZWN0
b3J5CisjICBHQ1JZUFRfTElCUkFSSUVTIC0gTGluayB0aGVzZSB0byB1c2UgR0NyeXB0CisjICBH
Q1JZUFRfREVGSU5JVElPTlMgLSBDb21waWxlciBzd2l0Y2hlcyByZXF1aXJlZCBmb3IgdXNpbmcg
R0NyeXB0CisjCisjPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgIENvcHlyaWdodCAoYykgMjAwOS0y
MDExIEFuZHJlYXMgU2NobmVpZGVyIDxhc25AY3J5cHRvbWlsay5vcmc+CisjCisjICBEaXN0cmli
dXRlZCB1bmRlciB0aGUgT1NJLWFwcHJvdmVkIEJTRCBMaWNlbnNlICh0aGUgIkxpY2Vuc2UiKTsK
KyMgIHNlZSBhY2NvbXBhbnlpbmcgZmlsZSBDb3B5cmlnaHQudHh0IGZvciBkZXRhaWxzLgorIwor
IyAgVGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZQorIyAgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCisjICBTZWUgdGhlIExpY2Vuc2UgZm9y
IG1vcmUgaW5mb3JtYXRpb24uCisjPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMKKworaWYgKEdDUllQ
VF9MSUJSQVJJRVMgQU5EIEdDUllQVF9JTkNMVURFX0RJUlMpCisgICAgIyBpbiBjYWNoZSBhbHJl
YWR5CisgICAgIyBzZXQoR0NSWVBUX0ZPVU5EIFRSVUUpCitlbHNlIChHQ1JZUFRfTElCUkFSSUVT
IEFORCBHQ1JZUFRfSU5DTFVERV9ESVJTKQorCisgICAgc2V0KF9HQ1JZUFRfUk9PVF9QQVRIUwor
ICAgICAgICAiJEVOVntQUk9HUkFNRklMRVN9L2xpYmdjcnlwdCIKKyAgICApCisKKyAgICBmaW5k
X3BhdGgoR0NSWVBUX1JPT1RfRElSCisgICAgICAgIE5BTUVTCisgICAgICAgICAgICBpbmNsdWRl
L2djcnlwdC5oCisgICAgICAgIFBBVEhTCisgICAgICAgICAgICAke19HQ1JZUFRfUk9PVF9QQVRI
U30KKyAgICApCisgICAgbWFya19hc19hZHZhbmNlZChaTElCX1JPT1RfRElSKQorCisgICAgZmlu
ZF9wYXRoKEdDUllQVF9JTkNMVURFX0RJUgorICAgICAgICBOQU1FUworICAgICAgICAgICAgZ2Ny
eXB0LmgKKyAgICAgICAgUEFUSFMKKyAgICAgICAgICAgIC91c3IvbG9jYWwvaW5jbHVkZQorICAg
ICAgICAgICAgL29wdC9sb2NhbC9pbmNsdWRlCisgICAgICAgICAgICAvc3cvaW5jbHVkZQorICAg
ICAgICAgICAgL3Vzci9saWIvc2Z3L2luY2x1ZGUKKyAgICAgICAgICAgICR7R0NSWVBUX1JPT1Rf
RElSfS9pbmNsdWRlCisgICAgKQorICAgIHNldChHQ1JZUFRfSU5DTFVERV9ESVJTICR7R0NSWVBU
X0lOQ0xVREVfRElSfSkKKworICAgIGZpbmRfbGlicmFyeShHQ1JZUFRfTElCUkFSWQorICAgICAg
ICBOQU1FUworICAgICAgICAgICAgZ2NyeXB0CisgICAgICAgICAgICBnY3J5cHQxMQorICAgICAg
ICAgICAgbGliZ2NyeXB0LTExCisgICAgICAgIFBBVEhTCisgICAgICAgICAgICAvb3B0L2xvY2Fs
L2xpYgorICAgICAgICAgICAgL3N3L2xpYgorICAgICAgICAgICAgL3Vzci9zZncvbGliLzY0Cisg
ICAgICAgICAgICAvdXNyL3Nmdy9saWIKKyAgICAgICAgICAgICR7R0NSWVBUX1JPT1RfRElSfS9s
aWIKKyAgICApCisgICAgc2V0KEdDUllQVF9MSUJSQVJJRVMgJHtHQ1JZUFRfTElCUkFSWX0pCisK
KyAgICBpbmNsdWRlKEZpbmRQYWNrYWdlSGFuZGxlU3RhbmRhcmRBcmdzKQorICAgIGZpbmRfcGFj
a2FnZV9oYW5kbGVfc3RhbmRhcmRfYXJncyhHQ3J5cHQgREVGQVVMVF9NU0cgR0NSWVBUX0xJQlJB
UklFUyBHQ1JZUFRfSU5DTFVERV9ESVJTKQorCisgICAgIyBzaG93IHRoZSBHQ1JZUFRfSU5DTFVE
RV9ESVJTIGFuZCBHQ1JZUFRfTElCUkFSSUVTIHZhcmlhYmxlcyBvbmx5IGluIHRoZSBhZHZhbmNl
ZCB2aWV3CisgICAgbWFya19hc19hZHZhbmNlZChHQ1JZUFRfSU5DTFVERV9ESVJTIEdDUllQVF9M
SUJSQVJJRVMpCisKK2VuZGlmIChHQ1JZUFRfTElCUkFSSUVTIEFORCBHQ1JZUFRfSU5DTFVERV9E
SVJTKQpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UgYi9Tb3VyY2Uv
Y21ha2UvT3B0aW9uc0dUSy5jbWFrZQppbmRleCAxN2MyYzgyZWIzNDMzZmNjZTYwZGQ3YmU1YWM2
NzEyNWI4M2YzOGI0Li40NDBkN2VkNmVjZmUzMTQxZDhlYjlmODM5NjVhY2I3N2E2Y2M2NzE2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQorKysgYi9Tb3VyY2UvY21h
a2UvT3B0aW9uc0dUSy5jbWFrZQpAQCAtMzIsNyArMzIsNyBAQCBzZXQoSU5UUk9TUEVDVElPTl9J
TlNUQUxMX1RZUEVMSUJESVIgIiR7TElCX0lOU1RBTExfRElSfS9naXJlcG9zaXRvcnktMS4wIikK
IGZpbmRfcGFja2FnZShDYWlybyAxLjEwLjIgUkVRVUlSRUQpCiBmaW5kX3BhY2thZ2UoRm9udGNv
bmZpZyAyLjguMCBSRVFVSVJFRCkKIGZpbmRfcGFja2FnZShGcmVldHlwZTIgMi40LjIgUkVRVUlS
RUQpCi1maW5kX3BhY2thZ2UoR251VExTIDMuMC4wIFJFUVVJUkVEKQorZmluZF9wYWNrYWdlKEdD
cnlwdCBSRVFVSVJFRCkKIGZpbmRfcGFja2FnZShHVEszIDMuNi4wIFJFUVVJUkVEKQogZmluZF9w
YWNrYWdlKEdESzMgMy42LjAgUkVRVUlSRUQpCiBmaW5kX3BhY2thZ2UoSGFyZkJ1enogMC45LjIg
UkVRVUlSRUQpCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggZDdhNTkw
NTM3MWY5NmNkODJlZjhhNjliNGYyNzQ2ODFmYjBjYzMxNS4uMjk3YTQwNWEzNjZlZjZhZjkyMjc3
ZTFkN2VhNTRhMmZkNWY5MzNhNSAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEzIEBACisyMDE2LTEwLTA3ICBPbGl2aWVyIEJsaW4gIDxvbGl2aWVyLmJs
aW5Ac29mdGF0aG9tZS5jb20+CisKKyAgICAgICAgW0dUS10gVXNlIGxpYmdjcnlwdCBpbnN0ZWFk
IG9mIEdudVRMUyBmb3IgQ3J5cHRvRGlnZXN0IGFuZCBTdWJ0bGVDcnlwdG8gSE1BQyBpbXBsZW1l
bnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTYzMTI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBTb3VyY2UvY21ha2UvRmluZEdDcnlwdC5jbWFrZTogQWRkZWQuIEZyb20gbGlic3NoIHByb2pl
Y3Q6IGNtYWtlL01vZHVsZXMvRmluZEdDcnlwdC5jbWFrZSAoQlNEIGxpY2Vuc2UpCisgICAgICAg
ICogU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2U6CisKIDIwMTYtMTAtMDMgIENhcmxvcyBH
YXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtTT1VQXSBDbGVh
bnVwIHBlcnNpc3RlbnQgY3JlZGVudGlhbCBzdG9yYWdlIGNvZGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290946</attachid>
            <date>2016-10-07 10:56:34 -0700</date>
            <delta_ts>2016-10-07 13:13:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163125-20161007195318.patch</filename>
            <type>text/plain</type>
            <size>14848</size>
            <attacher name="Olivier Blin">olivier.blin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA2NzcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjFjZTVkOTY1NTc4ZTVl
MTI3MTRiYjlkZDI5ZGY3YThmMDU0YmQzMi4uOWIzODdkNmE2YzNmNjE3YThjZjI4ZjNlMWYyNmUx
NDhkZjMwZWVlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE2LTEwLTA3ICBPbGl2
aWVyIEJsaW4gIDxvbGl2aWVyLmJsaW5Ac29mdGF0aG9tZS5jb20+CisKKyAgICAgICAgW0dUS10g
VXNlIGxpYmdjcnlwdCBpbnN0ZWFkIG9mIEdudVRMUyBmb3IgQ3J5cHRvRGlnZXN0IGFuZCBTdWJ0
bGVDcnlwdG8gSE1BQyBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMTI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBhbHJlYWR5IGNvdmVyZWQgYnkgZXhp
c3RpbmcgU3VidGxlQ3J5cHRvIHRlc3RzLgorCisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6
CisgICAgICAgICogY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1ITUFDR0NyeXB0LmNwcDog
QWRkZWQuIEFkYXB0ZWQgZnJvbSB0aGUgR251VExTIGJhY2tlbmQuCisgICAgICAgIChXZWJDb3Jl
OjpnZXRHQ3J5cHREaWdlc3RBbGdvcml0aG0pOgorICAgICAgICAoV2ViQ29yZTo6Y2FsY3VsYXRl
U2lnbmF0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUhNQUM6OnBsYXRm
b3JtU2lnbik6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1ITUFDOjpwbGF0Zm9y
bVZlcmlmeSk6CisgICAgICAgICogcGxhdGZvcm0vY3J5cHRvL2djcnlwdC9DcnlwdG9EaWdlc3RH
Q3J5cHQuY3BwOiBBZGRlZC4gQWRhcHRlZCBmcm9tIHRoZSBHbnVUTFMgYmFja2VuZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkNyeXB0b0RpZ2VzdDo6Q3J5cHRvRGlnZXN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNyeXB0b0RpZ2VzdDo6fkNyeXB0b0RpZ2VzdCk6CisgICAgICAgIChXZWJDb3JlOjpDcnlw
dG9EaWdlc3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9EaWdlc3Q6OmFkZEJ5
dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0RpZ2VzdDo6Y29tcHV0ZUhhc2gpOgorCiAy
MDE2LTEwLTA0ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAog
ICAgICAgICBbU09VUF0gUmVtb3ZlIFNTTFBvbGljeUZsYWdzIGZyb20gU291cE5ldHdvcmtTZXNz
aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJj
ZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IDQxYmUyODMxMjk5N2E0ODgzYzk4Zjll
YTFiZjYxNWNhOWQ4MjViOWYuLjlmM2FmNzYwMTg3NjUxNmJkNzExN2JhM2RmMDY3MzM2OGYwOTVi
NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC04Niw3ICs4Niw3IEBAIGxpc3QoQVBQ
RU5EIFdlYkNvcmVfU09VUkNFUwogCiAgICAgcGxhdGZvcm0vYXVkaW8vZ2xpYi9BdWRpb0J1c0dM
aWIuY3BwCiAKLSAgICBwbGF0Zm9ybS9jcnlwdG8vZ251dGxzL0NyeXB0b0RpZ2VzdEdudVRMUy5j
cHAKKyAgICBwbGF0Zm9ybS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0RpZ2VzdEdDcnlwdC5jcHAKIAog
ICAgIHBsYXRmb3JtL2dhbWVwYWQvZ2xpYi9HYW1lcGFkc0dsaWIuY3BwCiAKQEAgLTI2OCw3ICsy
NjgsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX0xJQlJBUklFUwogICAgICR7R0xJQl9HTU9EVUxF
X0xJQlJBUklFU30KICAgICAke0dMSUJfR09CSkVDVF9MSUJSQVJJRVN9CiAgICAgJHtHTElCX0xJ
QlJBUklFU30KLSAgICAke0dOVVRMU19MSUJSQVJJRVN9CisgICAgJHtHQ1JZUFRfTElCUkFSSUVT
fQogICAgICR7R1VERVZfTElCUkFSSUVTfQogICAgICR7SEFSRkJVWlpfTElCUkFSSUVTfQogICAg
ICR7TElCU0VDUkVUX0xJQlJBUklFU30KQEAgLTI5Niw3ICsyOTYsNyBAQCBsaXN0KEFQUEVORCBX
ZWJDb3JlX1NZU1RFTV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgJHtHRU9DTFVFX0lOQ0xVREVf
RElSU30KICAgICAke0dJT19VTklYX0lOQ0xVREVfRElSU30KICAgICAke0dMSUJfSU5DTFVERV9E
SVJTfQotICAgICR7R05VVExTX0lOQ0xVREVfRElSU30KKyAgICAke0dDUllQVF9JTkNMVURFX0RJ
UlN9CiAgICAgJHtHVURFVl9JTkNMVURFX0RJUlN9CiAgICAgJHtIQVJGQlVaWl9JTkNMVURFX0RJ
UlN9CiAgICAgJHtMSUJTRUNSRVRfSU5DTFVERV9ESVJTfQpAQCAtNDEzLDkgKzQxMywxMCBAQCBp
ZiAoRU5BQkxFX1NVQlRMRV9DUllQVE8pCiAgICAgICAgIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0
b0FsZ29yaXRobVNIQTM4NC5jcHAKICAgICAgICAgY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxn
b3JpdGhtU0hBNTEyLmNwcAogCisgICAgICAgIGNyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGht
SE1BQ0dDcnlwdC5jcHAKKwogICAgICAgICBjcnlwdG8vZ251dGxzL0NyeXB0b0FsZ29yaXRobUFF
U19DQkNHbnVUTFMuY3BwCiAgICAgICAgIGNyeXB0by9nbnV0bHMvQ3J5cHRvQWxnb3JpdGhtQUVT
X0tXR251VExTLmNwcAotICAgICAgICBjcnlwdG8vZ251dGxzL0NyeXB0b0FsZ29yaXRobUhNQUNH
bnVUTFMuY3BwCiAgICAgICAgIGNyeXB0by9nbnV0bHMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtD
UzFfdjFfNUdudVRMUy5jcHAKICAgICAgICAgY3J5cHRvL2dudXRscy9DcnlwdG9BbGdvcml0aG1S
U0FTU0FfUEtDUzFfdjFfNUdudVRMUy5jcHAKICAgICAgICAgY3J5cHRvL2dudXRscy9DcnlwdG9B
bGdvcml0aG1SU0FfT0FFUEdudVRMUy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtSE1BQ0dDcnlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUhNQUNHQ3J5cHQuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjM2OTU4NjgyMTkzOTAyNGFhMjc0MWIxYjUzNTI3NjlkMGZhNzhjNjYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUhNQUNHQ3J5
cHQuY3BwCkBAIC0wLDAgKzEsMTA3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxp
YSBTLkwuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1ITUFDLmgiCisKKyNpZiBFTkFCTEUoU1VCVExF
X0NSWVBUTykKKworI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobUhtYWNQYXJhbXMuaCIKKyNpbmNs
dWRlICJDcnlwdG9LZXlITUFDLmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1
ZGUgPGdjcnlwdC5oPgorI2luY2x1ZGUgPHd0Zi9DcnlwdG9ncmFwaGljVXRpbGl0aWVzLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIGludCBnZXRHQ3J5cHREaWdlc3RBbGdvcml0
aG0oQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYXNoRnVuY3Rpb24pCit7CisgICAgc3dpdGNo
IChoYXNoRnVuY3Rpb24pIHsKKyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNI
QV8xOgorICAgICAgICByZXR1cm4gR0NSWV9NQUNfSE1BQ19TSEExOworICAgIGNhc2UgQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzIyNDoKKyAgICAgICAgcmV0dXJuIEdDUllfTUFDX0hN
QUNfU0hBMjI0OworICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzI1NjoK
KyAgICAgICAgcmV0dXJuIEdDUllfTUFDX0hNQUNfU0hBMjU2OworICAgIGNhc2UgQ3J5cHRvQWxn
b3JpdGhtSWRlbnRpZmllcjo6U0hBXzM4NDoKKyAgICAgICAgcmV0dXJuIEdDUllfTUFDX0hNQUNf
U0hBMzg0OworICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzUxMjoKKyAg
ICAgICAgcmV0dXJuIEdDUllfTUFDX0hNQUNfU0hBNTEyOworICAgIGRlZmF1bHQ6CisgICAgICAg
IHJldHVybiBHQ1JZX01BQ19OT05FOworICAgIH0KK30KKworc3RhdGljIFZlY3Rvcjx1aW50OF90
PiBjYWxjdWxhdGVTaWduYXR1cmUoaW50IGFsZ29yaXRobSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEpCit7CisgICAgc2l6ZV90IGRp
Z2VzdExlbmd0aCA9IGdjcnlfbWFjX2dldF9hbGdvX21hY2xlbihhbGdvcml0aG0pOworCisgICAg
VmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdChkaWdlc3RMZW5ndGgpOworICAgIGNvbnN0IHZvaWQqIGtl
eURhdGEgPSBrZXkuZGF0YSgpID8ga2V5LmRhdGEoKSA6IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KCIiKTsKKworICAgIGdjcnlfbWFjX2hkX3QgaGQ7CisgICAgZ2NyeV9tYWNfb3Bl
bigmaGQsIGFsZ29yaXRobSwgMCwgMCk7CisgICAgZ2NyeV9tYWNfc2V0a2V5KGhkLCBrZXlEYXRh
LCBrZXkuc2l6ZSgpKTsKKyAgICBnY3J5X21hY193cml0ZShoZCwgZGF0YS5maXJzdCwgZGF0YS5z
ZWNvbmQpOworICAgIGdjcnlfbWFjX3JlYWQoaGQsIHJlc3VsdC5kYXRhKCksICZkaWdlc3RMZW5n
dGgpOworICAgIGdjcnlfbWFjX2Nsb3NlKGhkKTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisK
K3ZvaWQgQ3J5cHRvQWxnb3JpdGhtSE1BQzo6cGxhdGZvcm1TaWduKGNvbnN0IENyeXB0b0FsZ29y
aXRobUhtYWNQYXJhbXMmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleUhNQUMmIGtleSwgY29u
c3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywg
Vm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAg
ICBVTlVTRURfUEFSQU0oZmFpbHVyZUNhbGxiYWNrKTsKKyAgICBpbnQgYWxnb3JpdGhtID0gZ2V0
R0NyeXB0RGlnZXN0QWxnb3JpdGhtKHBhcmFtZXRlcnMuaGFzaCk7CisgICAgaWYgKGFsZ29yaXRo
bSA9PSBHQ1JZX01BQ19OT05FKSB7CisgICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBWZWN0b3I8dWludDhfdD4gc2lnbmF0dXJlID0g
Y2FsY3VsYXRlU2lnbmF0dXJlKGFsZ29yaXRobSwga2V5LmtleSgpLCBkYXRhKTsKKworICAgIGNh
bGxiYWNrKHNpZ25hdHVyZSk7Cit9CisKK3ZvaWQgQ3J5cHRvQWxnb3JpdGhtSE1BQzo6cGxhdGZv
cm1WZXJpZnkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtSG1hY1BhcmFtcyYgcGFyYW1ldGVycywgY29u
c3QgQ3J5cHRvS2V5SE1BQyYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBleHBlY3Rl
ZFNpZ25hdHVyZSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgQm9vbENhbGxiYWNr
JiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29k
ZSYgZWMpCit7CisgICAgVU5VU0VEX1BBUkFNKGZhaWx1cmVDYWxsYmFjayk7CisgICAgaW50IGFs
Z29yaXRobSA9IGdldEdDcnlwdERpZ2VzdEFsZ29yaXRobShwYXJhbWV0ZXJzLmhhc2gpOworICAg
IGlmIChhbGdvcml0aG0gPT0gR0NSWV9NQUNfTk9ORSkgeworICAgICAgICBlYyA9IE5PVF9TVVBQ
T1JURURfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgVmVjdG9yPHVpbnQ4X3Q+
IHNpZ25hdHVyZSA9IGNhbGN1bGF0ZVNpZ25hdHVyZShhbGdvcml0aG0sIGtleS5rZXkoKSwgZGF0
YSk7CisKKyAgICAvLyBVc2luZyBhIGNvbnN0YW50IHRpbWUgY29tcGFyaXNvbiB0byBwcmV2ZW50
IHRpbWluZyBhdHRhY2tzLgorICAgIGJvb2wgcmVzdWx0ID0gc2lnbmF0dXJlLnNpemUoKSA9PSBl
eHBlY3RlZFNpZ25hdHVyZS5zZWNvbmQgJiYgIWNvbnN0YW50VGltZU1lbWNtcChzaWduYXR1cmUu
ZGF0YSgpLCBleHBlY3RlZFNpZ25hdHVyZS5maXJzdCwgc2lnbmF0dXJlLnNpemUoKSk7CisKKyAg
ICBjYWxsYmFjayhyZXN1bHQpOworfQorCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoU1VCVExFX0NS
WVBUTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NyeXB0by9nY3J5cHQv
Q3J5cHRvRGlnZXN0R0NyeXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NyeXB0by9n
Y3J5cHQvQ3J5cHRvRGlnZXN0R0NyeXB0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMzQ1NDNkOTczY2JjYmFj
MjNmNGNhMTFiMDdmYzhiMDdiM2E3ZDVmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY3J5cHRvL2djcnlwdC9DcnlwdG9EaWdlc3RHQ3J5cHQuY3BwCkBAIC0wLDAg
KzEsMTAyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgU29mdEF0SG9tZS4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNy
eXB0b0RpZ2VzdC5oIgorCisjaW5jbHVkZSA8Z2NyeXB0Lmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworc3RydWN0IENyeXB0b0RpZ2VzdENvbnRleHQgeworICAgIGludCBhbGdvcml0aG07Cisg
ICAgZ2NyeV9tZF9oZF90IG1kOworfTsKKworQ3J5cHRvRGlnZXN0OjpDcnlwdG9EaWdlc3QoKQor
ICAgIDogbV9jb250ZXh0KG5ldyBDcnlwdG9EaWdlc3RDb250ZXh0KQoreworfQorCitDcnlwdG9E
aWdlc3Q6On5DcnlwdG9EaWdlc3QoKQoreworfQorCitzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGln
ZXN0PiBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobSBhbGdvcml0
aG0pCit7CisgICAgaW50IGdjcnlwdEFsZ29yaXRobTsKKworICAgIHN3aXRjaCAoYWxnb3JpdGht
KSB7CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzE6IHsKKyAgICAgICAg
Z2NyeXB0QWxnb3JpdGhtID0gR0NSWV9NRF9TSEExOworICAgICAgICBicmVhazsKKyAgICB9Cisg
ICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzIyNDogeworICAgICAgICBnY3J5
cHRBbGdvcml0aG0gPSBHQ1JZX01EX1NIQTIyNDsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAg
IGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTY6IHsKKyAgICAgICAgZ2NyeXB0
QWxnb3JpdGhtID0gR0NSWV9NRF9TSEEyNTY7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBj
YXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0OiB7CisgICAgICAgIGdjcnlwdEFs
Z29yaXRobSA9IEdDUllfTURfU0hBMzg0OworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2Fz
ZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMjogeworICAgICAgICBnY3J5cHRBbGdv
cml0aG0gPSBHQ1JZX01EX1NIQTUxMjsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIH0KKwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3Q+IGRpZ2VzdChuZXcgQ3J5cHRvRGlnZXN0
KTsKKyAgICBkaWdlc3QtPm1fY29udGV4dC0+YWxnb3JpdGhtID0gZ2NyeXB0QWxnb3JpdGhtOwor
CisgICAgZ2NyeV9tZF9vcGVuKCZkaWdlc3QtPm1fY29udGV4dC0+bWQsIGdjcnlwdEFsZ29yaXRo
bSwgMCk7CisgICAgaWYgKCFkaWdlc3QtPm1fY29udGV4dC0+bWQpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgcmV0dXJuIGRpZ2VzdDsKK30KKwordm9pZCBDcnlwdG9EaWdlc3Q6OmFk
ZEJ5dGVzKGNvbnN0IHZvaWQqIGlucHV0LCBzaXplX3QgbGVuZ3RoKQoreworICAgIGdjcnlfbWRf
d3JpdGUobV9jb250ZXh0LT5tZCwgaW5wdXQsIGxlbmd0aCk7Cit9CisKK1ZlY3Rvcjx1aW50OF90
PiBDcnlwdG9EaWdlc3Q6OmNvbXB1dGVIYXNoKCkKK3sKKyAgICBpbnQgZGlnZXN0TGVuID0gZ2Ny
eV9tZF9nZXRfYWxnb19kbGVuKG1fY29udGV4dC0+YWxnb3JpdGhtKTsKKyAgICBWZWN0b3I8dWlu
dDhfdD4gcmVzdWx0KGRpZ2VzdExlbik7CisKKyAgICBnY3J5X21kX2ZpbmFsKG1fY29udGV4dC0+
bWQpOworICAgIG1lbWNweShyZXN1bHQuZGF0YSgpLCBnY3J5X21kX3JlYWQobV9jb250ZXh0LT5t
ZCwgMCksIGRpZ2VzdExlbik7CisgICAgZ2NyeV9tZF9jbG9zZShtX2NvbnRleHQtPm1kKTsKKwor
ICAgIHJldHVybiByZXN1bHQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9jbWFrZS9GaW5kR0NyeXB0LmNtYWtlIGIvU291cmNlL2NtYWtlL0ZpbmRHQ3J5
cHQuY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZGYzNTg2YmVkOTU1OWZjN2IyNzgwZGViYjJhZjBhMmZjMThh
MGJkMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9jbWFrZS9GaW5kR0NyeXB0LmNtYWtlCkBA
IC0wLDAgKzEsNzAgQEAKKyMgLSBUcnkgdG8gZmluZCBHQ3J5cHQKKyMgT25jZSBkb25lIHRoaXMg
d2lsbCBkZWZpbmUKKyMKKyMgIEdDUllQVF9GT1VORCAtIHN5c3RlbSBoYXMgR0NyeXB0CisjICBH
Q1JZUFRfSU5DTFVERV9ESVJTIC0gdGhlIEdDcnlwdCBpbmNsdWRlIGRpcmVjdG9yeQorIyAgR0NS
WVBUX0xJQlJBUklFUyAtIExpbmsgdGhlc2UgdG8gdXNlIEdDcnlwdAorIyAgR0NSWVBUX0RFRklO
SVRJT05TIC0gQ29tcGlsZXIgc3dpdGNoZXMgcmVxdWlyZWQgZm9yIHVzaW5nIEdDcnlwdAorIwor
Iz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09CisjICBDb3B5cmlnaHQgKGMpIDIwMDktMjAxMSBBbmRyZWFz
IFNjaG5laWRlciA8YXNuQGNyeXB0b21pbGsub3JnPgorIworIyAgRGlzdHJpYnV0ZWQgdW5kZXIg
dGhlIE9TSS1hcHByb3ZlZCBCU0QgTGljZW5zZSAodGhlICJMaWNlbnNlIik7CisjICBzZWUgYWNj
b21wYW55aW5nIGZpbGUgQ29weXJpZ2h0LnR4dCBmb3IgZGV0YWlscy4KKyMKKyMgIFRoaXMgc29m
dHdhcmUgaXMgZGlzdHJpYnV0ZWQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUKKyMgIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLgorIyAgU2VlIHRoZSBMaWNlbnNlIGZvciBtb3JlIGluZm9y
bWF0aW9uLgorIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjCisKK2lmIChHQ1JZUFRfTElCUkFSSUVT
IEFORCBHQ1JZUFRfSU5DTFVERV9ESVJTKQorICAgICMgaW4gY2FjaGUgYWxyZWFkeQorICAgICMg
c2V0KEdDUllQVF9GT1VORCBUUlVFKQorZWxzZSAoR0NSWVBUX0xJQlJBUklFUyBBTkQgR0NSWVBU
X0lOQ0xVREVfRElSUykKKworICAgIHNldChfR0NSWVBUX1JPT1RfUEFUSFMKKyAgICAgICAgIiRF
TlZ7UFJPR1JBTUZJTEVTfS9saWJnY3J5cHQiCisgICAgKQorCisgICAgZmluZF9wYXRoKEdDUllQ
VF9ST09UX0RJUgorICAgICAgICBOQU1FUworICAgICAgICAgICAgaW5jbHVkZS9nY3J5cHQuaAor
ICAgICAgICBQQVRIUworICAgICAgICAgICAgJHtfR0NSWVBUX1JPT1RfUEFUSFN9CisgICAgKQor
ICAgIG1hcmtfYXNfYWR2YW5jZWQoWkxJQl9ST09UX0RJUikKKworICAgIGZpbmRfcGF0aChHQ1JZ
UFRfSU5DTFVERV9ESVIKKyAgICAgICAgTkFNRVMKKyAgICAgICAgICAgIGdjcnlwdC5oCisgICAg
ICAgIFBBVEhTCisgICAgICAgICAgICAvdXNyL2xvY2FsL2luY2x1ZGUKKyAgICAgICAgICAgIC9v
cHQvbG9jYWwvaW5jbHVkZQorICAgICAgICAgICAgL3N3L2luY2x1ZGUKKyAgICAgICAgICAgIC91
c3IvbGliL3Nmdy9pbmNsdWRlCisgICAgICAgICAgICAke0dDUllQVF9ST09UX0RJUn0vaW5jbHVk
ZQorICAgICkKKyAgICBzZXQoR0NSWVBUX0lOQ0xVREVfRElSUyAke0dDUllQVF9JTkNMVURFX0RJ
Un0pCisKKyAgICBmaW5kX2xpYnJhcnkoR0NSWVBUX0xJQlJBUlkKKyAgICAgICAgTkFNRVMKKyAg
ICAgICAgICAgIGdjcnlwdAorICAgICAgICAgICAgZ2NyeXB0MTEKKyAgICAgICAgICAgIGxpYmdj
cnlwdC0xMQorICAgICAgICBQQVRIUworICAgICAgICAgICAgL29wdC9sb2NhbC9saWIKKyAgICAg
ICAgICAgIC9zdy9saWIKKyAgICAgICAgICAgIC91c3Ivc2Z3L2xpYi82NAorICAgICAgICAgICAg
L3Vzci9zZncvbGliCisgICAgICAgICAgICAke0dDUllQVF9ST09UX0RJUn0vbGliCisgICAgKQor
ICAgIHNldChHQ1JZUFRfTElCUkFSSUVTICR7R0NSWVBUX0xJQlJBUll9KQorCisgICAgaW5jbHVk
ZShGaW5kUGFja2FnZUhhbmRsZVN0YW5kYXJkQXJncykKKyAgICBmaW5kX3BhY2thZ2VfaGFuZGxl
X3N0YW5kYXJkX2FyZ3MoR0NyeXB0IERFRkFVTFRfTVNHIEdDUllQVF9MSUJSQVJJRVMgR0NSWVBU
X0lOQ0xVREVfRElSUykKKworICAgICMgc2hvdyB0aGUgR0NSWVBUX0lOQ0xVREVfRElSUyBhbmQg
R0NSWVBUX0xJQlJBUklFUyB2YXJpYWJsZXMgb25seSBpbiB0aGUgYWR2YW5jZWQgdmlldworICAg
IG1hcmtfYXNfYWR2YW5jZWQoR0NSWVBUX0lOQ0xVREVfRElSUyBHQ1JZUFRfTElCUkFSSUVTKQor
CitlbmRpZiAoR0NSWVBUX0xJQlJBUklFUyBBTkQgR0NSWVBUX0lOQ0xVREVfRElSUykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlv
bnNHVEsuY21ha2UKaW5kZXggMTdjMmM4MmViMzQzM2ZjY2U2MGRkN2JlNWFjNjcxMjViODNmMzhi
NC4uNDQwZDdlZDZlY2ZlMzE0MWQ4ZWI5ZjgzOTY1YWNiNzdhNmNjNjcxNiAxMDA2NDQKLS0tIGEv
U291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNH
VEsuY21ha2UKQEAgLTMyLDcgKzMyLDcgQEAgc2V0KElOVFJPU1BFQ1RJT05fSU5TVEFMTF9UWVBF
TElCRElSICIke0xJQl9JTlNUQUxMX0RJUn0vZ2lyZXBvc2l0b3J5LTEuMCIpCiBmaW5kX3BhY2th
Z2UoQ2Fpcm8gMS4xMC4yIFJFUVVJUkVEKQogZmluZF9wYWNrYWdlKEZvbnRjb25maWcgMi44LjAg
UkVRVUlSRUQpCiBmaW5kX3BhY2thZ2UoRnJlZXR5cGUyIDIuNC4yIFJFUVVJUkVEKQotZmluZF9w
YWNrYWdlKEdudVRMUyAzLjAuMCBSRVFVSVJFRCkKK2ZpbmRfcGFja2FnZShHQ3J5cHQgUkVRVUlS
RUQpCiBmaW5kX3BhY2thZ2UoR1RLMyAzLjYuMCBSRVFVSVJFRCkKIGZpbmRfcGFja2FnZShHREsz
IDMuNi4wIFJFUVVJUkVEKQogZmluZF9wYWNrYWdlKEhhcmZCdXp6IDAuOS4yIFJFUVVJUkVEKQpk
aWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IGQ3YTU5MDUzNzFmOTZjZDgy
ZWY4YTY5YjRmMjc0NjgxZmIwY2MzMTUuLjI5N2E0MDVhMzY2ZWY2YWY5MjI3N2UxZDdlYTU0YTJm
ZDVmOTMzYTUgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMyBAQAorMjAxNi0xMC0wNyAgT2xpdmllciBCbGluICA8b2xpdmllci5ibGluQHNvZnRhdGhv
bWUuY29tPgorCisgICAgICAgIFtHVEtdIFVzZSBsaWJnY3J5cHQgaW5zdGVhZCBvZiBHbnVUTFMg
Zm9yIENyeXB0b0RpZ2VzdCBhbmQgU3VidGxlQ3J5cHRvIEhNQUMgaW1wbGVtZW50YXRpb24KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzEyNQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU291cmNlL2Nt
YWtlL0ZpbmRHQ3J5cHQuY21ha2U6IEFkZGVkLiBGcm9tIGxpYnNzaCBwcm9qZWN0OiBjbWFrZS9N
b2R1bGVzL0ZpbmRHQ3J5cHQuY21ha2UgKEJTRCBsaWNlbnNlKQorICAgICAgICAqIFNvdXJjZS9j
bWFrZS9PcHRpb25zR1RLLmNtYWtlOgorCiAyMDE2LTEwLTAzICBDYXJsb3MgR2FyY2lhIENhbXBv
cyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbU09VUF0gQ2xlYW51cCBwZXJzaXN0
ZW50IGNyZWRlbnRpYWwgc3RvcmFnZSBjb2RlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290961</attachid>
            <date>2016-10-07 13:13:27 -0700</date>
            <delta_ts>2016-11-02 12:15:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163125-20161007221010.patch</filename>
            <type>text/plain</type>
            <size>18443</size>
            <attacher name="Olivier Blin">olivier.blin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA2NzcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjFjZTVkOTY1NTc4ZTVl
MTI3MTRiYjlkZDI5ZGY3YThmMDU0YmQzMi4uOWIzODdkNmE2YzNmNjE3YThjZjI4ZjNlMWYyNmUx
NDhkZjMwZWVlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE2LTEwLTA3ICBPbGl2
aWVyIEJsaW4gIDxvbGl2aWVyLmJsaW5Ac29mdGF0aG9tZS5jb20+CisKKyAgICAgICAgW0dUS10g
VXNlIGxpYmdjcnlwdCBpbnN0ZWFkIG9mIEdudVRMUyBmb3IgQ3J5cHRvRGlnZXN0IGFuZCBTdWJ0
bGVDcnlwdG8gSE1BQyBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMTI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBhbHJlYWR5IGNvdmVyZWQgYnkgZXhp
c3RpbmcgU3VidGxlQ3J5cHRvIHRlc3RzLgorCisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6
CisgICAgICAgICogY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1ITUFDR0NyeXB0LmNwcDog
QWRkZWQuIEFkYXB0ZWQgZnJvbSB0aGUgR251VExTIGJhY2tlbmQuCisgICAgICAgIChXZWJDb3Jl
OjpnZXRHQ3J5cHREaWdlc3RBbGdvcml0aG0pOgorICAgICAgICAoV2ViQ29yZTo6Y2FsY3VsYXRl
U2lnbmF0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUhNQUM6OnBsYXRm
b3JtU2lnbik6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1ITUFDOjpwbGF0Zm9y
bVZlcmlmeSk6CisgICAgICAgICogcGxhdGZvcm0vY3J5cHRvL2djcnlwdC9DcnlwdG9EaWdlc3RH
Q3J5cHQuY3BwOiBBZGRlZC4gQWRhcHRlZCBmcm9tIHRoZSBHbnVUTFMgYmFja2VuZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkNyeXB0b0RpZ2VzdDo6Q3J5cHRvRGlnZXN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNyeXB0b0RpZ2VzdDo6fkNyeXB0b0RpZ2VzdCk6CisgICAgICAgIChXZWJDb3JlOjpDcnlw
dG9EaWdlc3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9EaWdlc3Q6OmFkZEJ5
dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0RpZ2VzdDo6Y29tcHV0ZUhhc2gpOgorCiAy
MDE2LTEwLTA0ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAog
ICAgICAgICBbU09VUF0gUmVtb3ZlIFNTTFBvbGljeUZsYWdzIGZyb20gU291cE5ldHdvcmtTZXNz
aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJj
ZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IDQxYmUyODMxMjk5N2E0ODgzYzk4Zjll
YTFiZjYxNWNhOWQ4MjViOWYuLjlmM2FmNzYwMTg3NjUxNmJkNzExN2JhM2RmMDY3MzM2OGYwOTVi
NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC04Niw3ICs4Niw3IEBAIGxpc3QoQVBQ
RU5EIFdlYkNvcmVfU09VUkNFUwogCiAgICAgcGxhdGZvcm0vYXVkaW8vZ2xpYi9BdWRpb0J1c0dM
aWIuY3BwCiAKLSAgICBwbGF0Zm9ybS9jcnlwdG8vZ251dGxzL0NyeXB0b0RpZ2VzdEdudVRMUy5j
cHAKKyAgICBwbGF0Zm9ybS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0RpZ2VzdEdDcnlwdC5jcHAKIAog
ICAgIHBsYXRmb3JtL2dhbWVwYWQvZ2xpYi9HYW1lcGFkc0dsaWIuY3BwCiAKQEAgLTI2OCw3ICsy
NjgsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX0xJQlJBUklFUwogICAgICR7R0xJQl9HTU9EVUxF
X0xJQlJBUklFU30KICAgICAke0dMSUJfR09CSkVDVF9MSUJSQVJJRVN9CiAgICAgJHtHTElCX0xJ
QlJBUklFU30KLSAgICAke0dOVVRMU19MSUJSQVJJRVN9CisgICAgJHtHQ1JZUFRfTElCUkFSSUVT
fQogICAgICR7R1VERVZfTElCUkFSSUVTfQogICAgICR7SEFSRkJVWlpfTElCUkFSSUVTfQogICAg
ICR7TElCU0VDUkVUX0xJQlJBUklFU30KQEAgLTI5Niw3ICsyOTYsNyBAQCBsaXN0KEFQUEVORCBX
ZWJDb3JlX1NZU1RFTV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgJHtHRU9DTFVFX0lOQ0xVREVf
RElSU30KICAgICAke0dJT19VTklYX0lOQ0xVREVfRElSU30KICAgICAke0dMSUJfSU5DTFVERV9E
SVJTfQotICAgICR7R05VVExTX0lOQ0xVREVfRElSU30KKyAgICAke0dDUllQVF9JTkNMVURFX0RJ
UlN9CiAgICAgJHtHVURFVl9JTkNMVURFX0RJUlN9CiAgICAgJHtIQVJGQlVaWl9JTkNMVURFX0RJ
UlN9CiAgICAgJHtMSUJTRUNSRVRfSU5DTFVERV9ESVJTfQpAQCAtNDEzLDkgKzQxMywxMCBAQCBp
ZiAoRU5BQkxFX1NVQlRMRV9DUllQVE8pCiAgICAgICAgIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0
b0FsZ29yaXRobVNIQTM4NC5jcHAKICAgICAgICAgY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxn
b3JpdGhtU0hBNTEyLmNwcAogCisgICAgICAgIGNyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGht
SE1BQ0dDcnlwdC5jcHAKKwogICAgICAgICBjcnlwdG8vZ251dGxzL0NyeXB0b0FsZ29yaXRobUFF
U19DQkNHbnVUTFMuY3BwCiAgICAgICAgIGNyeXB0by9nbnV0bHMvQ3J5cHRvQWxnb3JpdGhtQUVT
X0tXR251VExTLmNwcAotICAgICAgICBjcnlwdG8vZ251dGxzL0NyeXB0b0FsZ29yaXRobUhNQUNH
bnVUTFMuY3BwCiAgICAgICAgIGNyeXB0by9nbnV0bHMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtD
UzFfdjFfNUdudVRMUy5jcHAKICAgICAgICAgY3J5cHRvL2dudXRscy9DcnlwdG9BbGdvcml0aG1S
U0FTU0FfUEtDUzFfdjFfNUdudVRMUy5jcHAKICAgICAgICAgY3J5cHRvL2dudXRscy9DcnlwdG9B
bGdvcml0aG1SU0FfT0FFUEdudVRMUy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtSE1BQ0dDcnlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUhNQUNHQ3J5cHQuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjFmMzNlOGIxMTQwZTgwMTRjMTZhOWVmYjQ0Y2I2YzdmMjczNmY5MDgKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUhNQUNHQ3J5
cHQuY3BwCkBAIC0wLDAgKzEsMTA4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxp
YSBTLkwuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgU29mdEF0
SG9tZS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobUhNQUMuaCIKKworI2lmIEVOQUJMRShTVUJUTEVf
Q1JZUFRPKQorCisjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtSG1hY1BhcmFtcy5oIgorI2luY2x1
ZGUgIkNyeXB0b0tleUhNQUMuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVk
ZSA8Z2NyeXB0Lmg+CisjaW5jbHVkZSA8d3RmL0NyeXB0b2dyYXBoaWNVdGlsaXRpZXMuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgaW50IGdldEdDcnlwdERpZ2VzdEFsZ29yaXRo
bShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2hGdW5jdGlvbikKK3sKKyAgICBzd2l0Y2gg
KGhhc2hGdW5jdGlvbikgeworICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hB
XzE6CisgICAgICAgIHJldHVybiBHQ1JZX01BQ19ITUFDX1NIQTE7CisgICAgY2FzZSBDcnlwdG9B
bGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMjI0OgorICAgICAgICByZXR1cm4gR0NSWV9NQUNfSE1B
Q19TSEEyMjQ7CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMjU2Ogor
ICAgICAgICByZXR1cm4gR0NSWV9NQUNfSE1BQ19TSEEyNTY7CisgICAgY2FzZSBDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyOjpTSEFfMzg0OgorICAgICAgICByZXR1cm4gR0NSWV9NQUNfSE1BQ19T
SEEzODQ7CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfNTEyOgorICAg
ICAgICByZXR1cm4gR0NSWV9NQUNfSE1BQ19TSEE1MTI7CisgICAgZGVmYXVsdDoKKyAgICAgICAg
cmV0dXJuIEdDUllfTUFDX05PTkU7CisgICAgfQorfQorCitzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+
IGNhbGN1bGF0ZVNpZ25hdHVyZShpbnQgYWxnb3JpdGhtLCBjb25zdCBWZWN0b3I8dWludDhfdD4m
IGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSkKK3sKKyAgICBzaXplX3QgZGln
ZXN0TGVuZ3RoID0gZ2NyeV9tYWNfZ2V0X2FsZ29fbWFjbGVuKGFsZ29yaXRobSk7CisKKyAgICBW
ZWN0b3I8dWludDhfdD4gcmVzdWx0KGRpZ2VzdExlbmd0aCk7CisgICAgY29uc3Qgdm9pZCoga2V5
RGF0YSA9IGtleS5kYXRhKCkgPyBrZXkuZGF0YSgpIDogcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
aW50OF90Kj4oIiIpOworCisgICAgZ2NyeV9tYWNfaGRfdCBoZDsKKyAgICBnY3J5X21hY19vcGVu
KCZoZCwgYWxnb3JpdGhtLCAwLCAwKTsKKyAgICBnY3J5X21hY19zZXRrZXkoaGQsIGtleURhdGEs
IGtleS5zaXplKCkpOworICAgIGdjcnlfbWFjX3dyaXRlKGhkLCBkYXRhLmZpcnN0LCBkYXRhLnNl
Y29uZCk7CisgICAgZ2NyeV9tYWNfcmVhZChoZCwgcmVzdWx0LmRhdGEoKSwgJmRpZ2VzdExlbmd0
aCk7CisgICAgZ2NyeV9tYWNfY2xvc2UoaGQpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwor
dm9pZCBDcnlwdG9BbGdvcml0aG1ITUFDOjpwbGF0Zm9ybVNpZ24oY29uc3QgQ3J5cHRvQWxnb3Jp
dGhtSG1hY1BhcmFtcyYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5SE1BQyYga2V5LCBjb25z
dCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBW
b2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAg
IFVOVVNFRF9QQVJBTShmYWlsdXJlQ2FsbGJhY2spOworICAgIGludCBhbGdvcml0aG0gPSBnZXRH
Q3J5cHREaWdlc3RBbGdvcml0aG0ocGFyYW1ldGVycy5oYXNoKTsKKyAgICBpZiAoYWxnb3JpdGht
ID09IEdDUllfTUFDX05PTkUpIHsKKyAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFZlY3Rvcjx1aW50OF90PiBzaWduYXR1cmUgPSBj
YWxjdWxhdGVTaWduYXR1cmUoYWxnb3JpdGhtLCBrZXkua2V5KCksIGRhdGEpOworCisgICAgY2Fs
bGJhY2soc2lnbmF0dXJlKTsKK30KKwordm9pZCBDcnlwdG9BbGdvcml0aG1ITUFDOjpwbGF0Zm9y
bVZlcmlmeShjb25zdCBDcnlwdG9BbGdvcml0aG1IbWFjUGFyYW1zJiBwYXJhbWV0ZXJzLCBjb25z
dCBDcnlwdG9LZXlITUFDJiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGV4cGVjdGVk
U2lnbmF0dXJlLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBCb29sQ2FsbGJhY2sm
JiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2Rl
JiBlYykKK3sKKyAgICBVTlVTRURfUEFSQU0oZmFpbHVyZUNhbGxiYWNrKTsKKyAgICBpbnQgYWxn
b3JpdGhtID0gZ2V0R0NyeXB0RGlnZXN0QWxnb3JpdGhtKHBhcmFtZXRlcnMuaGFzaCk7CisgICAg
aWYgKGFsZ29yaXRobSA9PSBHQ1JZX01BQ19OT05FKSB7CisgICAgICAgIGVjID0gTk9UX1NVUFBP
UlRFRF9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBWZWN0b3I8dWludDhfdD4g
c2lnbmF0dXJlID0gY2FsY3VsYXRlU2lnbmF0dXJlKGFsZ29yaXRobSwga2V5LmtleSgpLCBkYXRh
KTsKKworICAgIC8vIFVzaW5nIGEgY29uc3RhbnQgdGltZSBjb21wYXJpc29uIHRvIHByZXZlbnQg
dGltaW5nIGF0dGFja3MuCisgICAgYm9vbCByZXN1bHQgPSBzaWduYXR1cmUuc2l6ZSgpID09IGV4
cGVjdGVkU2lnbmF0dXJlLnNlY29uZCAmJiAhY29uc3RhbnRUaW1lTWVtY21wKHNpZ25hdHVyZS5k
YXRhKCksIGV4cGVjdGVkU2lnbmF0dXJlLmZpcnN0LCBzaWduYXR1cmUuc2l6ZSgpKTsKKworICAg
IGNhbGxiYWNrKHJlc3VsdCk7Cit9CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShTVUJUTEVfQ1JZ
UFRPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL2djcnlwdC9D
cnlwdG9EaWdlc3RHQ3J5cHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL2dj
cnlwdC9DcnlwdG9EaWdlc3RHQ3J5cHQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUzNDU0M2Q5NzNjYmNiYWMy
M2Y0Y2ExMWIwN2ZjOGIwN2IzYTdkNWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0RpZ2VzdEdDcnlwdC5jcHAKQEAgLTAsMCAr
MSwxMDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlhIFMuTC4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBTb2Z0QXRIb21lLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ3J5
cHRvRGlnZXN0LmgiCisKKyNpbmNsdWRlIDxnY3J5cHQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitzdHJ1Y3QgQ3J5cHRvRGlnZXN0Q29udGV4dCB7CisgICAgaW50IGFsZ29yaXRobTsKKyAg
ICBnY3J5X21kX2hkX3QgbWQ7Cit9OworCitDcnlwdG9EaWdlc3Q6OkNyeXB0b0RpZ2VzdCgpCisg
ICAgOiBtX2NvbnRleHQobmV3IENyeXB0b0RpZ2VzdENvbnRleHQpCit7Cit9CisKK0NyeXB0b0Rp
Z2VzdDo6fkNyeXB0b0RpZ2VzdCgpCit7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdl
c3Q+IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtIGFsZ29yaXRo
bSkKK3sKKyAgICBpbnQgZ2NyeXB0QWxnb3JpdGhtOworCisgICAgc3dpdGNoIChhbGdvcml0aG0p
IHsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMTogeworICAgICAgICBn
Y3J5cHRBbGdvcml0aG0gPSBHQ1JZX01EX1NIQTE7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAg
ICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0OiB7CisgICAgICAgIGdjcnlw
dEFsZ29yaXRobSA9IEdDUllfTURfU0hBMjI0OworICAgICAgICBicmVhazsKKyAgICB9CisgICAg
Y2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1NjogeworICAgICAgICBnY3J5cHRB
bGdvcml0aG0gPSBHQ1JZX01EX1NIQTI1NjsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNh
c2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ6IHsKKyAgICAgICAgZ2NyeXB0QWxn
b3JpdGhtID0gR0NSWV9NRF9TSEEzODQ7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNl
IENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOiB7CisgICAgICAgIGdjcnlwdEFsZ29y
aXRobSA9IEdDUllfTURfU0hBNTEyOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgfQorCisg
ICAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gZGlnZXN0KG5ldyBDcnlwdG9EaWdlc3Qp
OworICAgIGRpZ2VzdC0+bV9jb250ZXh0LT5hbGdvcml0aG0gPSBnY3J5cHRBbGdvcml0aG07CisK
KyAgICBnY3J5X21kX29wZW4oJmRpZ2VzdC0+bV9jb250ZXh0LT5tZCwgZ2NyeXB0QWxnb3JpdGht
LCAwKTsKKyAgICBpZiAoIWRpZ2VzdC0+bV9jb250ZXh0LT5tZCkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisKKyAgICByZXR1cm4gZGlnZXN0OworfQorCit2b2lkIENyeXB0b0RpZ2VzdDo6YWRk
Qnl0ZXMoY29uc3Qgdm9pZCogaW5wdXQsIHNpemVfdCBsZW5ndGgpCit7CisgICAgZ2NyeV9tZF93
cml0ZShtX2NvbnRleHQtPm1kLCBpbnB1dCwgbGVuZ3RoKTsKK30KKworVmVjdG9yPHVpbnQ4X3Q+
IENyeXB0b0RpZ2VzdDo6Y29tcHV0ZUhhc2goKQoreworICAgIGludCBkaWdlc3RMZW4gPSBnY3J5
X21kX2dldF9hbGdvX2RsZW4obV9jb250ZXh0LT5hbGdvcml0aG0pOworICAgIFZlY3Rvcjx1aW50
OF90PiByZXN1bHQoZGlnZXN0TGVuKTsKKworICAgIGdjcnlfbWRfZmluYWwobV9jb250ZXh0LT5t
ZCk7CisgICAgbWVtY3B5KHJlc3VsdC5kYXRhKCksIGdjcnlfbWRfcmVhZChtX2NvbnRleHQtPm1k
LCAwKSwgZGlnZXN0TGVuKTsKKyAgICBnY3J5X21kX2Nsb3NlKG1fY29udGV4dC0+bWQpOworCisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL2NtYWtlL0ZpbmRHQ3J5cHQuY21ha2UgYi9Tb3VyY2UvY21ha2UvRmluZEdDcnlw
dC5jbWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5kZjM1ODZiZWQ5NTU5ZmM3YjI3ODBkZWJiMmFmMGEyZmMxOGEw
YmQwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL2NtYWtlL0ZpbmRHQ3J5cHQuY21ha2UKQEAg
LTAsMCArMSw3MCBAQAorIyAtIFRyeSB0byBmaW5kIEdDcnlwdAorIyBPbmNlIGRvbmUgdGhpcyB3
aWxsIGRlZmluZQorIworIyAgR0NSWVBUX0ZPVU5EIC0gc3lzdGVtIGhhcyBHQ3J5cHQKKyMgIEdD
UllQVF9JTkNMVURFX0RJUlMgLSB0aGUgR0NyeXB0IGluY2x1ZGUgZGlyZWN0b3J5CisjICBHQ1JZ
UFRfTElCUkFSSUVTIC0gTGluayB0aGVzZSB0byB1c2UgR0NyeXB0CisjICBHQ1JZUFRfREVGSU5J
VElPTlMgLSBDb21waWxlciBzd2l0Y2hlcyByZXF1aXJlZCBmb3IgdXNpbmcgR0NyeXB0CisjCisj
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KKyMgIENvcHlyaWdodCAoYykgMjAwOS0yMDExIEFuZHJlYXMg
U2NobmVpZGVyIDxhc25AY3J5cHRvbWlsay5vcmc+CisjCisjICBEaXN0cmlidXRlZCB1bmRlciB0
aGUgT1NJLWFwcHJvdmVkIEJTRCBMaWNlbnNlICh0aGUgIkxpY2Vuc2UiKTsKKyMgIHNlZSBhY2Nv
bXBhbnlpbmcgZmlsZSBDb3B5cmlnaHQudHh0IGZvciBkZXRhaWxzLgorIworIyAgVGhpcyBzb2Z0
d2FyZSBpcyBkaXN0cmlidXRlZCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZQorIyAgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuCisjICBTZWUgdGhlIExpY2Vuc2UgZm9yIG1vcmUgaW5mb3Jt
YXRpb24uCisjPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMKKworaWYgKEdDUllQVF9MSUJSQVJJRVMg
QU5EIEdDUllQVF9JTkNMVURFX0RJUlMpCisgICAgIyBpbiBjYWNoZSBhbHJlYWR5CisgICAgIyBz
ZXQoR0NSWVBUX0ZPVU5EIFRSVUUpCitlbHNlIChHQ1JZUFRfTElCUkFSSUVTIEFORCBHQ1JZUFRf
SU5DTFVERV9ESVJTKQorCisgICAgc2V0KF9HQ1JZUFRfUk9PVF9QQVRIUworICAgICAgICAiJEVO
VntQUk9HUkFNRklMRVN9L2xpYmdjcnlwdCIKKyAgICApCisKKyAgICBmaW5kX3BhdGgoR0NSWVBU
X1JPT1RfRElSCisgICAgICAgIE5BTUVTCisgICAgICAgICAgICBpbmNsdWRlL2djcnlwdC5oCisg
ICAgICAgIFBBVEhTCisgICAgICAgICAgICAke19HQ1JZUFRfUk9PVF9QQVRIU30KKyAgICApCisg
ICAgbWFya19hc19hZHZhbmNlZChaTElCX1JPT1RfRElSKQorCisgICAgZmluZF9wYXRoKEdDUllQ
VF9JTkNMVURFX0RJUgorICAgICAgICBOQU1FUworICAgICAgICAgICAgZ2NyeXB0LmgKKyAgICAg
ICAgUEFUSFMKKyAgICAgICAgICAgIC91c3IvbG9jYWwvaW5jbHVkZQorICAgICAgICAgICAgL29w
dC9sb2NhbC9pbmNsdWRlCisgICAgICAgICAgICAvc3cvaW5jbHVkZQorICAgICAgICAgICAgL3Vz
ci9saWIvc2Z3L2luY2x1ZGUKKyAgICAgICAgICAgICR7R0NSWVBUX1JPT1RfRElSfS9pbmNsdWRl
CisgICAgKQorICAgIHNldChHQ1JZUFRfSU5DTFVERV9ESVJTICR7R0NSWVBUX0lOQ0xVREVfRElS
fSkKKworICAgIGZpbmRfbGlicmFyeShHQ1JZUFRfTElCUkFSWQorICAgICAgICBOQU1FUworICAg
ICAgICAgICAgZ2NyeXB0CisgICAgICAgICAgICBnY3J5cHQxMQorICAgICAgICAgICAgbGliZ2Ny
eXB0LTExCisgICAgICAgIFBBVEhTCisgICAgICAgICAgICAvb3B0L2xvY2FsL2xpYgorICAgICAg
ICAgICAgL3N3L2xpYgorICAgICAgICAgICAgL3Vzci9zZncvbGliLzY0CisgICAgICAgICAgICAv
dXNyL3Nmdy9saWIKKyAgICAgICAgICAgICR7R0NSWVBUX1JPT1RfRElSfS9saWIKKyAgICApCisg
ICAgc2V0KEdDUllQVF9MSUJSQVJJRVMgJHtHQ1JZUFRfTElCUkFSWX0pCisKKyAgICBpbmNsdWRl
KEZpbmRQYWNrYWdlSGFuZGxlU3RhbmRhcmRBcmdzKQorICAgIGZpbmRfcGFja2FnZV9oYW5kbGVf
c3RhbmRhcmRfYXJncyhHQ3J5cHQgREVGQVVMVF9NU0cgR0NSWVBUX0xJQlJBUklFUyBHQ1JZUFRf
SU5DTFVERV9ESVJTKQorCisgICAgIyBzaG93IHRoZSBHQ1JZUFRfSU5DTFVERV9ESVJTIGFuZCBH
Q1JZUFRfTElCUkFSSUVTIHZhcmlhYmxlcyBvbmx5IGluIHRoZSBhZHZhbmNlZCB2aWV3CisgICAg
bWFya19hc19hZHZhbmNlZChHQ1JZUFRfSU5DTFVERV9ESVJTIEdDUllQVF9MSUJSQVJJRVMpCisK
K2VuZGlmIChHQ1JZUFRfTElCUkFSSUVTIEFORCBHQ1JZUFRfSU5DTFVERV9ESVJTKQpkaWZmIC0t
Z2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9u
c0dUSy5jbWFrZQppbmRleCAxN2MyYzgyZWIzNDMzZmNjZTYwZGQ3YmU1YWM2NzEyNWI4M2YzOGI0
Li40NDBkN2VkNmVjZmUzMTQxZDhlYjlmODM5NjVhY2I3N2E2Y2M2NzE2IDEwMDY0NAotLS0gYS9T
b3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0dU
Sy5jbWFrZQpAQCAtMzIsNyArMzIsNyBAQCBzZXQoSU5UUk9TUEVDVElPTl9JTlNUQUxMX1RZUEVM
SUJESVIgIiR7TElCX0lOU1RBTExfRElSfS9naXJlcG9zaXRvcnktMS4wIikKIGZpbmRfcGFja2Fn
ZShDYWlybyAxLjEwLjIgUkVRVUlSRUQpCiBmaW5kX3BhY2thZ2UoRm9udGNvbmZpZyAyLjguMCBS
RVFVSVJFRCkKIGZpbmRfcGFja2FnZShGcmVldHlwZTIgMi40LjIgUkVRVUlSRUQpCi1maW5kX3Bh
Y2thZ2UoR251VExTIDMuMC4wIFJFUVVJUkVEKQorZmluZF9wYWNrYWdlKEdDcnlwdCBSRVFVSVJF
RCkKIGZpbmRfcGFja2FnZShHVEszIDMuNi4wIFJFUVVJUkVEKQogZmluZF9wYWNrYWdlKEdESzMg
My42LjAgUkVRVUlSRUQpCiBmaW5kX3BhY2thZ2UoSGFyZkJ1enogMC45LjIgUkVRVUlSRUQpCmRp
ZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNmE0NzI3
MDI1Yjc3OWUwMTAwNzQ2MmI5ZTk4MmNlMjc5ODQzZDhhMC4uMzMwMTI5MmFiZmQxOGNjMzdhNjU0
NjI1ZjFiMGQ3NDY0YjVkODFkZiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE2LTEwLTA3ICBPbGl2aWVyIEJsaW4g
IDxvbGl2aWVyLmJsaW5Ac29mdGF0aG9tZS5jb20+CisKKyAgICAgICAgW0dUS10gVXNlIGxpYmdj
cnlwdCBpbnN0ZWFkIG9mIEdudVRMUyBmb3IgQ3J5cHRvRGlnZXN0IGFuZCBTdWJ0bGVDcnlwdG8g
SE1BQyBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTYzMTI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBndGsvaW5zdGFsbC1kZXBlbmRlbmNpZXM6IExpc3QgbGliZ2NyeXB0IGZv
ciBXZWJLaXRHVEsrIGJ1aWxkLCBhbmQgZ251dGxzIGZvciBqaGJ1aWxkIG9ubHkuCisKIDIwMTYt
MTAtMDQgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAg
TWVkaWEgY29udHJvbHMgYXJlIGRpc3BsYXllZCBpbiB0aGUgaW5jb3JyZWN0IHN0YXRlIG1vbWVu
dGFyaWx5IGFmdGVyIHN3aXRjaGluZyBiZXR3ZWVuIHRhYnMgcGxheWluZyBtZWRpYQpkaWZmIC0t
Z2l0IGEvVG9vbHMvZ3RrL2luc3RhbGwtZGVwZW5kZW5jaWVzIGIvVG9vbHMvZ3RrL2luc3RhbGwt
ZGVwZW5kZW5jaWVzCmluZGV4IDQ2NGIwODUzZWEyZjY1NTM1NzNlMTMwMGJhODBhZTg4M2Q5YzFm
OTguLmI2MjY5NGNlMDhlMzdkOWZiYWUxZTA1NDBkOGNjODVmZTY5ODI1ZTkgMTAwNzU1Ci0tLSBh
L1Rvb2xzL2d0ay9pbnN0YWxsLWRlcGVuZGVuY2llcworKysgYi9Ub29scy9ndGsvaW5zdGFsbC1k
ZXBlbmRlbmNpZXMKQEAgLTEwNSwxMSArMTA1LDExIEBAIGZ1bmN0aW9uIGluc3RhbGxEZXBlbmRl
bmNpZXNXaXRoQXB0IHsKICAgICAgICAgbGliZWRpdC1kZXYgXAogICAgICAgICBsaWJlbmNoYW50
LWRldiBcCiAgICAgICAgIGxpYmZhYWQtZGV2IFwKKyAgICAgICAgbGliZ2NyeXB0MTEtZGV2IFwK
ICAgICAgICAgJChhcHRJZkVsc2UgbGliZ2VvY2x1ZS0yLWRldiBsaWJnZW9jbHVlLWRldikgXAog
ICAgICAgICBsaWJnaXJlcG9zaXRvcnkxLjAtZGV2IFwKICAgICAgICAgbGliZ2wxLW1lc2EtZGV2
IFwKICAgICAgICAgbGliZ2wxLW1lc2EtZ2x4IFwKLSAgICAgICAgbGliZ251dGxzMjgtZGV2IFwK
ICAgICAgICAgbGliZ3RrMi4wLWRldiBcCiAgICAgICAgIGxpYmd0ay0zLWRldiBcCiAgICAgICAg
IGxpYmdzdHJlYW1lcjEuMC1kZXYgXApAQCAtMTcyLDggKzE3Miw4IEBAIGZ1bmN0aW9uIGluc3Rh
bGxEZXBlbmRlbmNpZXNXaXRoQXB0IHsKICAgICAgICAgbGliZXZkZXYtZGV2IFwKICAgICAgICAg
bGliZXhwYXQxLWRldiBcCiAgICAgICAgIGxpYmdibS1kZXYgXAotICAgICAgICBsaWJnY3J5cHQx
MS1kZXYgXAogICAgICAgICBsaWJnbGVzMi1tZXNhLWRldiBcCisgICAgICAgIGxpYmdudXRsczI4
LWRldiBcCiAgICAgICAgIGxpYmdwZy1lcnJvci1kZXYgXAogICAgICAgICBsaWJqc29uLWdsaWIt
ZGV2IFwKICAgICAgICAgbGliaW5wdXQtZGV2IFwKQEAgLTI1NSw3ICsyNTUsNiBAQCBmdW5jdGlv
biBpbnN0YWxsRGVwZW5kZW5jaWVzV2l0aFBhY21hbiB7CiAgICAgICAgIGdvYmplY3QtaW50cm9z
cGVjdGlvbiBcCiAgICAgICAgIG1lc2EgXAogICAgICAgICBtZXNhLWxpYmdsIFwKLSAgICAgICAg
Z251dGxzIFwKICAgICAgICAgZ3RrMiBcCiAgICAgICAgIGd0azMgXAogICAgICAgICBsaWJzeXN0
ZW1kIFwKQEAgLTI2Myw2ICsyNjIsNyBAQCBmdW5jdGlvbiBpbnN0YWxsRGVwZW5kZW5jaWVzV2l0
aFBhY21hbiB7CiAgICAgICAgIG1wZzEyMyBcCiAgICAgICAgIG9wdXMgXAogICAgICAgICBwYW5n
byBcCisgICAgICAgIGxpYmdjcnlwdCBcCiAgICAgICAgIGxpYm5vdGlmeSBcCiAgICAgICAgIGxp
YnBuZyBcCiAgICAgICAgIGxpYnB1bHNlIFwKQEAgLTMwNyw2ICszMDcsNyBAQCBmdW5jdGlvbiBp
bnN0YWxsRGVwZW5kZW5jaWVzV2l0aFBhY21hbiB7CiAgICAgcGFja2FnZXM9IiRwYWNrYWdlcyBc
CiAgICAgICAgIGV4cGF0IFwKICAgICAgICAgZ2l0IFwKKyAgICAgICAgZ251dGxzIFwKICAgICAg
ICAgZ29iamVjdC1pbnRyb3NwZWN0aW9uIFwKICAgICAgICAgZ3NldHRpbmdzLWRlc2t0b3Atc2No
ZW1hcyBcCiAgICAgICAgIGljb24tbmFtaW5nLXV0aWxzIFwKQEAgLTMxNCw3ICszMTUsNiBAQCBm
dW5jdGlvbiBpbnN0YWxsRGVwZW5kZW5jaWVzV2l0aFBhY21hbiB7CiAgICAgICAgIGxpYmRybSBc
CiAgICAgICAgIGxpYmVwb3h5IFwKICAgICAgICAgbGliZXZkZXYgXAotICAgICAgICBsaWJnY3J5
cHQgXAogICAgICAgICBsaWJncGctZXJyb3IgXAogICAgICAgICBsaWJpbnB1dCBcCiAgICAgICAg
IHAxMS1raXQgXApAQCAtMzY4LDcgKzM2OCw2IEBAIGZ1bmN0aW9uIGluc3RhbGxEZXBlbmRlbmNp
ZXNXaXRoRG5mIHsKICAgICAgICAgZ2NjLWMrKyBcCiAgICAgICAgIGdlb2NsdWUyLWRldmVsIFwK
ICAgICAgICAgZ2V0dGV4dC1kZXZlbCBcCi0gICAgICAgIGdudXRscy1kZXZlbCBcCiAgICAgICAg
IGdvYmplY3QtaW50cm9zcGVjdGlvbi1kZXZlbCBcCiAgICAgICAgIGdwZXJmIFwKICAgICAgICAg
Z3N0cmVhbWVyMS1kZXZlbCBcCkBAIC0zODMsNiArMzgyLDcgQEAgZnVuY3Rpb24gaW5zdGFsbERl
cGVuZGVuY2llc1dpdGhEbmYgewogICAgICAgICBsaWJYdHN0LWRldmVsIFwKICAgICAgICAgbGli
eHNsdC1kZXZlbCBcCiAgICAgICAgIGxpYmVkaXQtZGV2ZWwgXAorICAgICAgICBsaWJnY3J5cHQt
ZGV2ZWwgXAogICAgICAgICBsaWJndWRldjEtZGV2ZWwgXAogICAgICAgICBsaWJqcGVnLXR1cmJv
LWRldmVsIFwKICAgICAgICAgbGlibm90aWZ5LWRldmVsIFwKQEAgLTQzNCw2ICs0MzQsNyBAQCBm
dW5jdGlvbiBpbnN0YWxsRGVwZW5kZW5jaWVzV2l0aERuZiB7CiAgICAgICAgIGRvY2Jvb2stdXRp
bHMtcGRmIFwKICAgICAgICAgZ2l0IFwKICAgICAgICAgZ29iamVjdC1pbnRyb3NwZWN0aW9uIFwK
KyAgICAgICAgZ251dGxzLWRldmVsIFwKICAgICAgICAgZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1h
cy1kZXZlbCBcCiAgICAgICAgIGljb24tbmFtaW5nLXV0aWxzIFwKICAgICAgICAgaXRzdG9vbCBc
CkBAIC00NDIsNyArNDQzLDYgQEAgZnVuY3Rpb24gaW5zdGFsbERlcGVuZGVuY2llc1dpdGhEbmYg
ewogICAgICAgICBsaWJkcm0tZGV2ZWwgXAogICAgICAgICBsaWJlcG94eS1kZXZlbCBcCiAgICAg
ICAgIGxpYmV2ZGV2LWRldmVsCi0gICAgICAgIGxpYmdjcnlwdC1kZXZlbCBcCiAgICAgICAgIGxp
YmdwZy1lcnJvci1kZXZlbCBcCiAgICAgICAgIGxpYmlucHV0LWRldmVsIFwKICAgICAgICAgbGli
cDExLWRldmVsIFwKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBkN2E1
OTA1MzcxZjk2Y2Q4MmVmOGE2OWI0ZjI3NDY4MWZiMGNjMzE1Li5lZDIwYTQ4OWE3NzFkYTNhNmNh
ZjAzYjNlNmE3NzVjOGJiMDk2ODg0IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTYtMTAtMDcgIE9saXZpZXIgQmxpbiAgPG9saXZpZXIu
YmxpbkBzb2Z0YXRob21lLmNvbT4KKworICAgICAgICBbR1RLXSBVc2UgbGliZ2NyeXB0IGluc3Rl
YWQgb2YgR251VExTIGZvciBDcnlwdG9EaWdlc3QgYW5kIFN1YnRsZUNyeXB0byBITUFDIGltcGxl
bWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjMxMjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFNvdXJjZS9jbWFrZS9GaW5kR0NyeXB0LmNtYWtlOiBBZGRlZC4gRnJvbSBsaWJzc2ggcHJv
amVjdDogY21ha2UvTW9kdWxlcy9GaW5kR0NyeXB0LmNtYWtlIChCU0QgbGljZW5zZSkuCisgICAg
ICAgICogU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2U6IFVwZGF0ZWQgdG8gdXNlIGxpYmdj
cnlwdCBmaWxlcyBpbnN0ZWFkIGdudXRscy4KKwogMjAxNi0xMC0wMyAgQ2FybG9zIEdhcmNpYSBD
YW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1NPVVBdIENsZWFudXAgcGVy
c2lzdGVudCBjcmVkZW50aWFsIHN0b3JhZ2UgY29kZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293685</attachid>
            <date>2016-11-02 12:15:17 -0700</date>
            <delta_ts>2016-11-02 13:08:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163125-20161102201118.patch</filename>
            <type>text/plain</type>
            <size>16898</size>
            <attacher name="Olivier Blin">olivier.blin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4MjgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjM1ZTQwOGU4MTRmMGQ1
YWQ1N2QxYWU3MTk1ODQ5Y2RjNGRiY2E3OS4uMjBlYjYxZjhkM2YxYjlmMjBjOTNmMmNiNGUyMGQ5
NDY1Y2E3MmExMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE2LTEwLTA3ICBPbGl2
aWVyIEJsaW4gIDxvbGl2aWVyLmJsaW5Ac29mdGF0aG9tZS5jb20+CisKKyAgICAgICAgW0dUS10g
VXNlIGxpYmdjcnlwdCBpbnN0ZWFkIG9mIEdudVRMUyBmb3IgQ3J5cHRvRGlnZXN0IGFuZCBTdWJ0
bGVDcnlwdG8gSE1BQyBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMTI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBhbHJlYWR5IGNvdmVyZWQgYnkgZXhp
c3RpbmcgU3VidGxlQ3J5cHRvIHRlc3RzLgorCisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6
IFVzZSBsaWJnY3J5cHQgaW5zdGVhZCBvZiBnbnV0bHMuCisgICAgICAgICogY3J5cHRvL2djcnlw
dC9DcnlwdG9BbGdvcml0aG1ITUFDR0NyeXB0LmNwcDogQWRkZWQuIEFkYXB0ZWQgZnJvbSB0aGUg
R251VExTIGJhY2tlbmQuCisgICAgICAgIChXZWJDb3JlOjpnZXRHQ3J5cHREaWdlc3RBbGdvcml0
aG0pOgorICAgICAgICAoV2ViQ29yZTo6Y2FsY3VsYXRlU2lnbmF0dXJlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNyeXB0b0FsZ29yaXRobUhNQUM6OnBsYXRmb3JtU2lnbik6CisgICAgICAgIChXZWJD
b3JlOjpDcnlwdG9BbGdvcml0aG1ITUFDOjpwbGF0Zm9ybVZlcmlmeSk6CisgICAgICAgICogcGxh
dGZvcm0vY3J5cHRvL2djcnlwdC9DcnlwdG9EaWdlc3RHQ3J5cHQuY3BwOiBBZGRlZC4gQWRhcHRl
ZCBmcm9tIHRoZSBHbnVUTFMgYmFja2VuZC4KKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0RpZ2Vz
dDo6Q3J5cHRvRGlnZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0RpZ2VzdDo6fkNyeXB0
b0RpZ2VzdCk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDcnlwdG9EaWdlc3Q6OmFkZEJ5dGVzKToKKyAgICAgICAgKFdlYkNvcmU6
OkNyeXB0b0RpZ2VzdDo6Y29tcHV0ZUhhc2gpOgorCiAyMDE2LTExLTAyICBaYWxhbiBCdWp0YXMg
IDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW1RhYmxlc10gU2ltcGxpZmllZCBsYXlvdXQg
c2tpcHMgY2FwdGlvbnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5j
bWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IGNkNTRhZjNiYmE1
MjEwODQ1NDI4MjFkYWI4ODMyYmQzMDE5NTE1MzQuLmU0NmU2OGQxNzUzYzJlODJmODI1MDM5ZDE0
MTIxOWM4OTRkZmUwNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNt
YWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC04OSw3ICs4OSw3
IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogCiAgICAgcGxhdGZvcm0vYXVkaW8vZ2xp
Yi9BdWRpb0J1c0dMaWIuY3BwCiAKLSAgICBwbGF0Zm9ybS9jcnlwdG8vZ251dGxzL0NyeXB0b0Rp
Z2VzdEdudVRMUy5jcHAKKyAgICBwbGF0Zm9ybS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0RpZ2VzdEdD
cnlwdC5jcHAKIAogICAgIHBsYXRmb3JtL2dhbWVwYWQvZ2xpYi9HYW1lcGFkc0dsaWIuY3BwCiAK
QEAgLTI3NCw5ICsyNzQsOSBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX0xJQlJBUklFUwogICAgICR7
R0xJQl9HTU9EVUxFX0xJQlJBUklFU30KICAgICAke0dMSUJfR09CSkVDVF9MSUJSQVJJRVN9CiAg
ICAgJHtHTElCX0xJQlJBUklFU30KLSAgICAke0dOVVRMU19MSUJSQVJJRVN9CiAgICAgJHtHVURF
Vl9MSUJSQVJJRVN9CiAgICAgJHtIQVJGQlVaWl9MSUJSQVJJRVN9CisgICAgJHtMSUJHQ1JZUFRf
TElCUkFSSUVTfQogICAgICR7TElCU0VDUkVUX0xJQlJBUklFU30KICAgICAke0xJQlNPVVBfTElC
UkFSSUVTfQogICAgICR7TElCWE1MMl9MSUJSQVJJRVN9CkBAIC0zMDIsOSArMzAyLDkgQEAgbGlz
dChBUFBFTkQgV2ViQ29yZV9TWVNURU1fSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICR7R0VPQ0xV
RV9JTkNMVURFX0RJUlN9CiAgICAgJHtHSU9fVU5JWF9JTkNMVURFX0RJUlN9CiAgICAgJHtHTElC
X0lOQ0xVREVfRElSU30KLSAgICAke0dOVVRMU19JTkNMVURFX0RJUlN9CiAgICAgJHtHVURFVl9J
TkNMVURFX0RJUlN9CiAgICAgJHtIQVJGQlVaWl9JTkNMVURFX0RJUlN9CisgICAgJHtMSUJHQ1JZ
UFRfSU5DTFVERV9ESVJTfQogICAgICR7TElCU0VDUkVUX0lOQ0xVREVfRElSU30KICAgICAke0xJ
QlNPVVBfSU5DTFVERV9ESVJTfQogICAgICR7TElCWE1MMl9JTkNMVURFX0RJUn0KQEAgLTQyMCw5
ICs0MjAsMTAgQEAgaWYgKEVOQUJMRV9TVUJUTEVfQ1JZUFRPKQogICAgICAgICBjcnlwdG8vYWxn
b3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEzODQuY3BwCiAgICAgICAgIGNyeXB0by9hbGdvcml0
aG1zL0NyeXB0b0FsZ29yaXRobVNIQTUxMi5jcHAKIAorICAgICAgICBjcnlwdG8vZ2NyeXB0L0Ny
eXB0b0FsZ29yaXRobUhNQUNHQ3J5cHQuY3BwCisKICAgICAgICAgY3J5cHRvL2dudXRscy9Dcnlw
dG9BbGdvcml0aG1BRVNfQ0JDR251VExTLmNwcAogICAgICAgICBjcnlwdG8vZ251dGxzL0NyeXB0
b0FsZ29yaXRobUFFU19LV0dudVRMUy5jcHAKLSAgICAgICAgY3J5cHRvL2dudXRscy9DcnlwdG9B
bGdvcml0aG1ITUFDR251VExTLmNwcAogICAgICAgICBjcnlwdG8vZ251dGxzL0NyeXB0b0FsZ29y
aXRobVJTQUVTX1BLQ1MxX3YxXzVHbnVUTFMuY3BwCiAgICAgICAgIGNyeXB0by9nbnV0bHMvQ3J5
cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVHbnVUTFMuY3BwCiAgICAgICAgIGNyeXB0by9n
bnV0bHMvQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVBHbnVUTFMuY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUhNQUNHQ3J5cHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1ITUFDR0NyeXB0LmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5iNDdjZGVkNmI3YTQxY2NhZTUzNGYwMTk3MTg2OGJkZTE4MzBmMzQ1Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdv
cml0aG1ITUFDR0NyeXB0LmNwcApAQCAtMCwwICsxLDEzMyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNCBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChDKSAyMDE2IFNvZnRBdEhvbWUKKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobUhN
QUMuaCIKKworI2lmIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQorCisjaW5jbHVkZSAiQ3J5cHRvQWxn
b3JpdGhtSG1hY1BhcmFtc0RlcHJlY2F0ZWQuaCIKKyNpbmNsdWRlICJDcnlwdG9LZXlITUFDLmgi
CisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgPGdjcnlwdC5oPgorI2luY2x1
ZGUgPHd0Zi9DcnlwdG9ncmFwaGljVXRpbGl0aWVzLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
Kworc3RhdGljIGludCBnZXRHQ3J5cHREaWdlc3RBbGdvcml0aG0oQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllciBoYXNoRnVuY3Rpb24pCit7CisgICAgc3dpdGNoIChoYXNoRnVuY3Rpb24pIHsKKyAg
ICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8xOgorICAgICAgICByZXR1cm4g
R0NSWV9NQUNfSE1BQ19TSEExOworICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6
U0hBXzIyNDoKKyAgICAgICAgcmV0dXJuIEdDUllfTUFDX0hNQUNfU0hBMjI0OworICAgIGNhc2Ug
Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzI1NjoKKyAgICAgICAgcmV0dXJuIEdDUllf
TUFDX0hNQUNfU0hBMjU2OworICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hB
XzM4NDoKKyAgICAgICAgcmV0dXJuIEdDUllfTUFDX0hNQUNfU0hBMzg0OworICAgIGNhc2UgQ3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzUxMjoKKyAgICAgICAgcmV0dXJuIEdDUllfTUFD
X0hNQUNfU0hBNTEyOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBHQ1JZX01BQ19OT05F
OworICAgIH0KK30KKworc3RhdGljIGJvb2wgY2FsY3VsYXRlU2lnbmF0dXJlKGludCBhbGdvcml0
aG0sIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRh
JiBkYXRhLCBWZWN0b3I8dWludDhfdD4mIHNpZ25hdHVyZSkKK3sKKyAgICBzaXplX3QgZGlnZXN0
TGVuZ3RoID0gZ2NyeV9tYWNfZ2V0X2FsZ29fbWFjbGVuKGFsZ29yaXRobSk7CisgICAgY29uc3Qg
dm9pZCoga2V5RGF0YSA9IGtleS5kYXRhKCkgPyBrZXkuZGF0YSgpIDogcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1aW50OF90Kj4oIiIpOworCisgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKKyAgICBn
Y3J5X21hY19oZF90IGhkOworICAgIGdjcnlfZXJyb3JfdCBlcnI7CisKKyAgICBlcnIgPSBnY3J5
X21hY19vcGVuKCZoZCwgYWxnb3JpdGhtLCAwLCBudWxscHRyKTsKKyAgICBpZiAoZXJyKQorICAg
ICAgICBnb3RvIGNsZWFudXA7CisKKyAgICBlcnIgPSBnY3J5X21hY19zZXRrZXkoaGQsIGtleURh
dGEsIGtleS5zaXplKCkpOworICAgIGlmIChlcnIpCisgICAgICAgIGdvdG8gY2xlYW51cDsKKwor
ICAgIGVyciA9IGdjcnlfbWFjX3dyaXRlKGhkLCBkYXRhLmZpcnN0LCBkYXRhLnNlY29uZCk7Cisg
ICAgaWYgKGVycikKKyAgICAgICAgZ290byBjbGVhbnVwOworCisgICAgc2lnbmF0dXJlLnJlc2l6
ZShkaWdlc3RMZW5ndGgpOworICAgIGVyciA9IGdjcnlfbWFjX3JlYWQoaGQsIHNpZ25hdHVyZS5k
YXRhKCksICZkaWdlc3RMZW5ndGgpOworICAgIGlmIChlcnIpCisgICAgICAgIGdvdG8gY2xlYW51
cDsKKworICAgIHNpZ25hdHVyZS5yZXNpemUoZGlnZXN0TGVuZ3RoKTsKKyAgICByZXN1bHQgPSB0
cnVlOworCitjbGVhbnVwOgorICAgIGlmIChoZCkKKyAgICAgICAgZ2NyeV9tYWNfY2xvc2UoaGQp
OworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCBDcnlwdG9BbGdvcml0aG1ITUFDOjpw
bGF0Zm9ybVNpZ24oY29uc3QgQ3J5cHRvQWxnb3JpdGhtSG1hY1BhcmFtc0RlcHJlY2F0ZWQmIHBh
cmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleUhNQUMmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9u
RGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFp
bHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBVTlVTRURfUEFSQU0oZmFp
bHVyZUNhbGxiYWNrKTsKKyAgICBpbnQgYWxnb3JpdGhtID0gZ2V0R0NyeXB0RGlnZXN0QWxnb3Jp
dGhtKHBhcmFtZXRlcnMuaGFzaCk7CisgICAgaWYgKGFsZ29yaXRobSA9PSBHQ1JZX01BQ19OT05F
KSB7CisgICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBWZWN0b3I8dWludDhfdD4gc2lnbmF0dXJlOworICAgIGlmIChjYWxjdWxhdGVT
aWduYXR1cmUoYWxnb3JpdGhtLCBrZXkua2V5KCksIGRhdGEsIHNpZ25hdHVyZSkpCisgICAgICAg
IGNhbGxiYWNrKHNpZ25hdHVyZSk7CisgICAgZWxzZQorICAgICAgICBmYWlsdXJlQ2FsbGJhY2so
KTsKK30KKwordm9pZCBDcnlwdG9BbGdvcml0aG1ITUFDOjpwbGF0Zm9ybVZlcmlmeShjb25zdCBD
cnlwdG9BbGdvcml0aG1IbWFjUGFyYW1zRGVwcmVjYXRlZCYgcGFyYW1ldGVycywgY29uc3QgQ3J5
cHRvS2V5SE1BQyYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBleHBlY3RlZFNpZ25h
dHVyZSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgQm9vbENhbGxiYWNrJiYgY2Fs
bGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMp
Cit7CisgICAgVU5VU0VEX1BBUkFNKGZhaWx1cmVDYWxsYmFjayk7CisgICAgaW50IGFsZ29yaXRo
bSA9IGdldEdDcnlwdERpZ2VzdEFsZ29yaXRobShwYXJhbWV0ZXJzLmhhc2gpOworICAgIGlmIChh
bGdvcml0aG0gPT0gR0NSWV9NQUNfTk9ORSkgeworICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURf
RVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgVmVjdG9yPHVpbnQ4X3Q+IHNpZ25h
dHVyZTsKKyAgICBpZiAoIWNhbGN1bGF0ZVNpZ25hdHVyZShhbGdvcml0aG0sIGtleS5rZXkoKSwg
ZGF0YSwgc2lnbmF0dXJlKSkgeworICAgICAgICBmYWlsdXJlQ2FsbGJhY2soKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIC8vIFVzaW5nIGEgY29uc3RhbnQgdGltZSBjb21wYXJpc29u
IHRvIHByZXZlbnQgdGltaW5nIGF0dGFja3MuCisgICAgYm9vbCByZXN1bHQgPSBzaWduYXR1cmUu
c2l6ZSgpID09IGV4cGVjdGVkU2lnbmF0dXJlLnNlY29uZCAmJiAhY29uc3RhbnRUaW1lTWVtY21w
KHNpZ25hdHVyZS5kYXRhKCksIGV4cGVjdGVkU2lnbmF0dXJlLmZpcnN0LCBzaWduYXR1cmUuc2l6
ZSgpKTsKKworICAgIGNhbGxiYWNrKHJlc3VsdCk7Cit9CisKK30KKworI2VuZGlmIC8vIEVOQUJM
RShTVUJUTEVfQ1JZUFRPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5
cHRvL2djcnlwdC9DcnlwdG9EaWdlc3RHQ3J5cHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY3J5cHRvL2djcnlwdC9DcnlwdG9EaWdlc3RHQ3J5cHQuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBhM2M4
YmYyNDNkYzA3MmFiYmE4NDYxODk3MzNhMGY1M2ZkNmMwNGUKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0RpZ2VzdEdDcnlwdC5j
cHAKQEAgLTAsMCArMSw5NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5M
LgorICogQ29weXJpZ2h0IChDKSAyMDE2IFNvZnRBdEhvbWUKKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5oIgorCisjaW5jbHVkZSA8Z2NyeXB0
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IENyeXB0b0RpZ2VzdENvbnRleHQg
eworICAgIGludCBhbGdvcml0aG07CisgICAgZ2NyeV9tZF9oZF90IG1kOworfTsKKworQ3J5cHRv
RGlnZXN0OjpDcnlwdG9EaWdlc3QoKQorICAgIDogbV9jb250ZXh0KG5ldyBDcnlwdG9EaWdlc3RD
b250ZXh0KQoreworfQorCitDcnlwdG9EaWdlc3Q6On5DcnlwdG9EaWdlc3QoKQoreworfQorCitz
dGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9E
aWdlc3Q6OkFsZ29yaXRobSBhbGdvcml0aG0pCit7CisgICAgaW50IGdjcnlwdEFsZ29yaXRobTsK
KworICAgIHN3aXRjaCAoYWxnb3JpdGhtKSB7CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29y
aXRobTo6U0hBXzE6CisgICAgICAgIGdjcnlwdEFsZ29yaXRobSA9IEdDUllfTURfU0hBMTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzIyNDoK
KyAgICAgICAgZ2NyeXB0QWxnb3JpdGhtID0gR0NSWV9NRF9TSEEyMjQ7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTY6CisgICAgICAgIGdj
cnlwdEFsZ29yaXRobSA9IEdDUllfTURfU0hBMjU2OworICAgICAgICBicmVhazsKKyAgICBjYXNl
IENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0OgorICAgICAgICBnY3J5cHRBbGdvcml0
aG0gPSBHQ1JZX01EX1NIQTM4NDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDcnlwdG9EaWdl
c3Q6OkFsZ29yaXRobTo6U0hBXzUxMjoKKyAgICAgICAgZ2NyeXB0QWxnb3JpdGhtID0gR0NSWV9N
RF9TSEE1MTI7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHN0ZDo6dW5pcXVlX3B0cjxD
cnlwdG9EaWdlc3Q+IGRpZ2VzdChuZXcgQ3J5cHRvRGlnZXN0KTsKKyAgICBkaWdlc3QtPm1fY29u
dGV4dC0+YWxnb3JpdGhtID0gZ2NyeXB0QWxnb3JpdGhtOworCisgICAgZ2NyeV9tZF9vcGVuKCZk
aWdlc3QtPm1fY29udGV4dC0+bWQsIGdjcnlwdEFsZ29yaXRobSwgMCk7CisgICAgaWYgKCFkaWdl
c3QtPm1fY29udGV4dC0+bWQpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJu
IGRpZ2VzdDsKK30KKwordm9pZCBDcnlwdG9EaWdlc3Q6OmFkZEJ5dGVzKGNvbnN0IHZvaWQqIGlu
cHV0LCBzaXplX3QgbGVuZ3RoKQoreworICAgIGdjcnlfbWRfd3JpdGUobV9jb250ZXh0LT5tZCwg
aW5wdXQsIGxlbmd0aCk7Cit9CisKK1ZlY3Rvcjx1aW50OF90PiBDcnlwdG9EaWdlc3Q6OmNvbXB1
dGVIYXNoKCkKK3sKKyAgICBpbnQgZGlnZXN0TGVuID0gZ2NyeV9tZF9nZXRfYWxnb19kbGVuKG1f
Y29udGV4dC0+YWxnb3JpdGhtKTsKKyAgICBWZWN0b3I8dWludDhfdD4gcmVzdWx0KGRpZ2VzdExl
bik7CisKKyAgICBnY3J5X21kX2ZpbmFsKG1fY29udGV4dC0+bWQpOworICAgIG1lbWNweShyZXN1
bHQuZGF0YSgpLCBnY3J5X21kX3JlYWQobV9jb250ZXh0LT5tZCwgMCksIGRpZ2VzdExlbik7Cisg
ICAgZ2NyeV9tZF9jbG9zZShtX2NvbnRleHQtPm1kKTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRp
b25zR1RLLmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UKaW5kZXggY2I1MDk1
Y2JhYjA5NDk0ODY4NmUwZjUxNjQwMjk4Y2IyNmIzM2JkYy4uNTY4ZGI3OWQ0MmNlZDM2OGNhMjQy
MGExZmUxNWMxMDc0MDM0ZTg2MCAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL09wdGlvbnNHVEsu
Y21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UKQEAgLTMyLDcgKzMyLDcg
QEAgc2V0KElOVFJPU1BFQ1RJT05fSU5TVEFMTF9UWVBFTElCRElSICIke0xJQl9JTlNUQUxMX0RJ
Un0vZ2lyZXBvc2l0b3J5LTEuMCIpCiBmaW5kX3BhY2thZ2UoQ2Fpcm8gMS4xMC4yIFJFUVVJUkVE
KQogZmluZF9wYWNrYWdlKEZvbnRjb25maWcgMi44LjAgUkVRVUlSRUQpCiBmaW5kX3BhY2thZ2Uo
RnJlZXR5cGUyIDIuNC4yIFJFUVVJUkVEKQotZmluZF9wYWNrYWdlKEdudVRMUyAzLjAuMCBSRVFV
SVJFRCkKK2ZpbmRfcGFja2FnZShMaWJHY3J5cHQgMS42LjAgUkVRVUlSRUQpCiBmaW5kX3BhY2th
Z2UoR1RLMyAzLjYuMCBSRVFVSVJFRCkKIGZpbmRfcGFja2FnZShHREszIDMuNi4wIFJFUVVJUkVE
KQogZmluZF9wYWNrYWdlKEhhcmZCdXp6IDAuOS4yIFJFUVVJUkVEKQpAQCAtMjc2LDEwICsyNzYs
NiBAQCBpZiAoRU5BQkxFX01FRElBX1NUUkVBTSBPUiBFTkFCTEVfV0VCX1JUQykKICAgICBTRVRf
QU5EX0VYUE9TRV9UT19CVUlMRChVU0VfT1BFTldFQlJUQyBUUlVFKQogZW5kaWYgKCkKIAotaWYg
KEVOQUJMRV9MRUdBQ1lfRU5DUllQVEVEX01FRElBKQotICAgIGZpbmRfcGFja2FnZShMaWJHY3J5
cHQgUkVRVUlSRUQpCi1lbmRpZiAoKQotCiBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0VfVEVY
VFVSRV9NQVBQRVIgVFJVRSkKIAogaWYgKEVOQUJMRV9PUEVOR0wpCmRpZmYgLS1naXQgYS9Ub29s
cy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggY2Q0NjBmNGM1ZTM1Zjc3ZGU4MGZh
NjY0NjgxZWMxOWU2ODVlYmQ3Mi4uNDI4NzgyZjIyMTlkYTFjYzQzMzg5NGZlN2E4Y2MxMjBhNGI2
NmVmMyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDEzIEBACisyMDE2LTEwLTA3ICBPbGl2aWVyIEJsaW4gIDxvbGl2aWVyLmJsaW5A
c29mdGF0aG9tZS5jb20+CisKKyAgICAgICAgW0dUS10gVXNlIGxpYmdjcnlwdCBpbnN0ZWFkIG9m
IEdudVRMUyBmb3IgQ3J5cHRvRGlnZXN0IGFuZCBTdWJ0bGVDcnlwdG8gSE1BQyBpbXBsZW1lbnRh
dGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYz
MTI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBn
dGsvaW5zdGFsbC1kZXBlbmRlbmNpZXM6IExpc3QgbGliZ2NyeXB0IGZvciBXZWJLaXRHVEsrIGJ1
aWxkLCBhbmQgZ251dGxzIGZvciBqaGJ1aWxkIG9ubHkuCisgICAgICAgIGdudXRscyBpcyB1c2Vm
dWwgZm9yIGdsaWItbmV0d29ya2luZyBpbiBqaGJ1aWxkLgorCiAyMDE2LTExLTAyICBDYXJsb3Mg
R2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2Vk
LiBGaXggL3dlYmtpdDIvV2ViS2l0V2ViQ29udGV4dC9nZXQtcGx1Z2lucyBpbiB0aGUgYm90cyBh
ZnRlciByMjA4MjczLgpkaWZmIC0tZ2l0IGEvVG9vbHMvZ3RrL2luc3RhbGwtZGVwZW5kZW5jaWVz
IGIvVG9vbHMvZ3RrL2luc3RhbGwtZGVwZW5kZW5jaWVzCmluZGV4IDY0YTliMWIxYzg5Njg5NmNi
M2RhMjIwMWE4YjBlODI4MjgzZjJjYzIuLmQzYTA3MmIzMzliZjA4YzkyMTExNDI3MzlmNzljNGIw
ZmVlZDVhYTEgMTAwNzU1Ci0tLSBhL1Rvb2xzL2d0ay9pbnN0YWxsLWRlcGVuZGVuY2llcworKysg
Yi9Ub29scy9ndGsvaW5zdGFsbC1kZXBlbmRlbmNpZXMKQEAgLTEwNiwxMSArMTA2LDExIEBAIGZ1
bmN0aW9uIGluc3RhbGxEZXBlbmRlbmNpZXNXaXRoQXB0IHsKICAgICAgICAgbGliZWRpdC1kZXYg
XAogICAgICAgICBsaWJlbmNoYW50LWRldiBcCiAgICAgICAgIGxpYmZhYWQtZGV2IFwKKyAgICAg
ICAgJChhcHRJZkVsc2UgbGliZ2NyeXB0MjAtZGV2IGxpYmdjcnlwdDExLWRldikgXAogICAgICAg
ICAkKGFwdElmRWxzZSBsaWJnZW9jbHVlLTItZGV2IGxpYmdlb2NsdWUtZGV2KSBcCiAgICAgICAg
IGxpYmdpcmVwb3NpdG9yeTEuMC1kZXYgXAogICAgICAgICBsaWJnbDEtbWVzYS1kZXYgXAogICAg
ICAgICBsaWJnbDEtbWVzYS1nbHggXAotICAgICAgICBsaWJnbnV0bHMyOC1kZXYgXAogICAgICAg
ICBsaWJndGsyLjAtZGV2IFwKICAgICAgICAgbGliZ3RrLTMtZGV2IFwKICAgICAgICAgbGliZ3N0
cmVhbWVyMS4wLWRldiBcCkBAIC0xNzMsOCArMTczLDggQEAgZnVuY3Rpb24gaW5zdGFsbERlcGVu
ZGVuY2llc1dpdGhBcHQgewogICAgICAgICBsaWJldmRldi1kZXYgXAogICAgICAgICBsaWJleHBh
dDEtZGV2IFwKICAgICAgICAgbGliZ2JtLWRldiBcCi0gICAgICAgIGxpYmdjcnlwdDExLWRldiBc
CiAgICAgICAgIGxpYmdsZXMyLW1lc2EtZGV2IFwKKyAgICAgICAgbGliZ251dGxzMjgtZGV2IFwK
ICAgICAgICAgbGliZ3BnLWVycm9yLWRldiBcCiAgICAgICAgIGxpYmpzb24tZ2xpYi1kZXYgXAog
ICAgICAgICBsaWJpbnB1dC1kZXYgXApAQCAtMjU2LDcgKzI1Niw2IEBAIGZ1bmN0aW9uIGluc3Rh
bGxEZXBlbmRlbmNpZXNXaXRoUGFjbWFuIHsKICAgICAgICAgZ29iamVjdC1pbnRyb3NwZWN0aW9u
IFwKICAgICAgICAgbWVzYSBcCiAgICAgICAgIG1lc2EtbGliZ2wgXAotICAgICAgICBnbnV0bHMg
XAogICAgICAgICBndGsyIFwKICAgICAgICAgZ3RrMyBcCiAgICAgICAgIGxpYnN5c3RlbWQgXApA
QCAtMjY0LDYgKzI2Myw3IEBAIGZ1bmN0aW9uIGluc3RhbGxEZXBlbmRlbmNpZXNXaXRoUGFjbWFu
IHsKICAgICAgICAgbXBnMTIzIFwKICAgICAgICAgb3B1cyBcCiAgICAgICAgIHBhbmdvIFwKKyAg
ICAgICAgbGliZ2NyeXB0IFwKICAgICAgICAgbGlibm90aWZ5IFwKICAgICAgICAgbGlicG5nIFwK
ICAgICAgICAgbGlicHVsc2UgXApAQCAtMzA4LDYgKzMwOCw3IEBAIGZ1bmN0aW9uIGluc3RhbGxE
ZXBlbmRlbmNpZXNXaXRoUGFjbWFuIHsKICAgICBwYWNrYWdlcz0iJHBhY2thZ2VzIFwKICAgICAg
ICAgZXhwYXQgXAogICAgICAgICBnaXQgXAorICAgICAgICBnbnV0bHMgXAogICAgICAgICBnb2Jq
ZWN0LWludHJvc3BlY3Rpb24gXAogICAgICAgICBnc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzIFwK
ICAgICAgICAgaWNvbi1uYW1pbmctdXRpbHMgXApAQCAtMzE1LDcgKzMxNiw2IEBAIGZ1bmN0aW9u
IGluc3RhbGxEZXBlbmRlbmNpZXNXaXRoUGFjbWFuIHsKICAgICAgICAgbGliZHJtIFwKICAgICAg
ICAgbGliZXBveHkgXAogICAgICAgICBsaWJldmRldiBcCi0gICAgICAgIGxpYmdjcnlwdCBcCiAg
ICAgICAgIGxpYmdwZy1lcnJvciBcCiAgICAgICAgIGxpYmlucHV0IFwKICAgICAgICAgcDExLWtp
dCBcCkBAIC0zNjksNyArMzY5LDYgQEAgZnVuY3Rpb24gaW5zdGFsbERlcGVuZGVuY2llc1dpdGhE
bmYgewogICAgICAgICBnY2MtYysrIFwKICAgICAgICAgZ2VvY2x1ZTItZGV2ZWwgXAogICAgICAg
ICBnZXR0ZXh0LWRldmVsIFwKLSAgICAgICAgZ251dGxzLWRldmVsIFwKICAgICAgICAgZ29iamVj
dC1pbnRyb3NwZWN0aW9uLWRldmVsIFwKICAgICAgICAgZ3BlcmYgXAogICAgICAgICBnc3RyZWFt
ZXIxLWRldmVsIFwKQEAgLTM4NCw2ICszODMsNyBAQCBmdW5jdGlvbiBpbnN0YWxsRGVwZW5kZW5j
aWVzV2l0aERuZiB7CiAgICAgICAgIGxpYlh0c3QtZGV2ZWwgXAogICAgICAgICBsaWJ4c2x0LWRl
dmVsIFwKICAgICAgICAgbGliZWRpdC1kZXZlbCBcCisgICAgICAgIGxpYmdjcnlwdC1kZXZlbCBc
CiAgICAgICAgIGxpYmd1ZGV2MS1kZXZlbCBcCiAgICAgICAgIGxpYmpwZWctdHVyYm8tZGV2ZWwg
XAogICAgICAgICBsaWJub3RpZnktZGV2ZWwgXApAQCAtNDM1LDYgKzQzNSw3IEBAIGZ1bmN0aW9u
IGluc3RhbGxEZXBlbmRlbmNpZXNXaXRoRG5mIHsKICAgICAgICAgZG9jYm9vay11dGlscy1wZGYg
XAogICAgICAgICBnaXQgXAogICAgICAgICBnb2JqZWN0LWludHJvc3BlY3Rpb24gXAorICAgICAg
ICBnbnV0bHMtZGV2ZWwgXAogICAgICAgICBnc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzLWRldmVs
IFwKICAgICAgICAgaWNvbi1uYW1pbmctdXRpbHMgXAogICAgICAgICBpdHN0b29sIFwKQEAgLTQ0
Myw3ICs0NDQsNiBAQCBmdW5jdGlvbiBpbnN0YWxsRGVwZW5kZW5jaWVzV2l0aERuZiB7CiAgICAg
ICAgIGxpYmRybS1kZXZlbCBcCiAgICAgICAgIGxpYmVwb3h5LWRldmVsIFwKICAgICAgICAgbGli
ZXZkZXYtZGV2ZWwKLSAgICAgICAgbGliZ2NyeXB0LWRldmVsIFwKICAgICAgICAgbGliZ3BnLWVy
cm9yLWRldmVsIFwKICAgICAgICAgbGliaW5wdXQtZGV2ZWwgXAogICAgICAgICBsaWJwMTEtZGV2
ZWwgXApkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDdjZmI2ZjMxZjg5
NGQ0NmNiZmRiZGE1NGExM2QxYmEwZjRmY2RiZTIuLjMwODZiYmUzNjJhODJhYWM0ZjY0NTJkZGY5
OTRmY2Y2YTJlNjRiM2MgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNCBAQAorMjAxNi0xMC0wNyAgT2xpdmllciBCbGluICA8b2xpdmllci5ibGluQHNv
ZnRhdGhvbWUuY29tPgorCisgICAgICAgIFtHVEtdIFVzZSBsaWJnY3J5cHQgaW5zdGVhZCBvZiBH
bnVUTFMgZm9yIENyeXB0b0RpZ2VzdCBhbmQgU3VidGxlQ3J5cHRvIEhNQUMgaW1wbGVtZW50YXRp
b24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzEy
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU291
cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2U6IFVwZGF0ZWQgdG8gdXNlIGxpYmdjcnlwdCBmaWxl
cyBpbnN0ZWFkIG9mIGdudXRscy4KKyAgICAgICAgQXQgbGVhc3QgdmVyc2lvbiAxLjYuMCBpcyBu
ZWVkZWQgZm9yIHRoZSBITUFDIEFQSXMuCisgICAgICAgIGxpYmdjcnlwdCBpcyBub3cgbmVlZGVk
IHVuY29uZGl0aW9uYWxseSBmb3IgQ3J5cHRvRGlnZXN0LCB1c2VkIGJ5IENTUC4KKwogMjAxNi0x
MS0wMiAgUm9tYWluIEJlbGxlc3NvcnQgIDxyb21haW4uYmVsbGVzc29ydEBjcmYuY2Fub24uZnI+
CiAKICAgICAgICAgW1JlYWRhYmxlIFN0cmVhbXMgQVBJXSBFbmFibGUgY3JlYXRpb24gb2YgUmVh
ZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlcgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>